diff --git a/.gitattributes b/.gitattributes index 038e69d298699083ddf82f7b4cd48e957493d3e8..bae7af4ac45780ef4fe6ea7b8fbf8b147676339c 100644 --- a/.gitattributes +++ b/.gitattributes @@ -143,3 +143,30 @@ venv/lib/python3.11/site-packages/bitsandbytes/libbitsandbytes_rocm714.so filter venv/lib/python3.11/site-packages/bitsandbytes/libbitsandbytes_rocm72.so filter=lfs diff=lfs merge=lfs -text venv/lib/python3.11/site-packages/bitsandbytes/libbitsandbytes_xpu2025.so filter=lfs diff=lfs merge=lfs -text venv/lib/python3.11/site-packages/bitsandbytes/libbitsandbytes_xpu2026.so filter=lfs diff=lfs merge=lfs -text +venv/lib/python3.11/site-packages/cuda/bindings/_bindings/cydriver.cpython-311-x86_64-linux-gnu.so filter=lfs diff=lfs merge=lfs -text +venv/lib/python3.11/site-packages/cuda/bindings/_bindings/cyruntime.cpython-311-x86_64-linux-gnu.so filter=lfs diff=lfs merge=lfs -text +venv/lib/python3.11/site-packages/cuda/bindings/_bindings/cyruntime_ptds.cpython-311-x86_64-linux-gnu.so filter=lfs diff=lfs merge=lfs -text +venv/lib/python3.11/site-packages/cuda/bindings/_internal/cufile.cpython-311-x86_64-linux-gnu.so filter=lfs diff=lfs merge=lfs -text +venv/lib/python3.11/site-packages/cuda/bindings/_internal/nvml.cpython-311-x86_64-linux-gnu.so filter=lfs diff=lfs merge=lfs -text +venv/lib/python3.11/site-packages/cuda/bindings/_internal/utils.cpython-311-x86_64-linux-gnu.so filter=lfs diff=lfs merge=lfs -text +venv/lib/python3.11/site-packages/cuda/bindings/cudla.cpython-311-x86_64-linux-gnu.so filter=lfs diff=lfs merge=lfs -text +venv/lib/python3.11/site-packages/cuda/bindings/cufile.cpython-311-x86_64-linux-gnu.so filter=lfs diff=lfs merge=lfs -text +venv/lib/python3.11/site-packages/cuda/bindings/cydriver.cpython-311-x86_64-linux-gnu.so filter=lfs diff=lfs merge=lfs -text +venv/lib/python3.11/site-packages/cuda/bindings/cynvml.cpython-311-x86_64-linux-gnu.so filter=lfs diff=lfs merge=lfs -text +venv/lib/python3.11/site-packages/cuda/bindings/cyruntime.cpython-311-x86_64-linux-gnu.so filter=lfs diff=lfs merge=lfs -text +venv/lib/python3.11/site-packages/cuda/bindings/driver.cpython-311-x86_64-linux-gnu.so filter=lfs diff=lfs merge=lfs -text +venv/lib/python3.11/site-packages/cuda/bindings/nvfatbin.cpython-311-x86_64-linux-gnu.so filter=lfs diff=lfs merge=lfs -text +venv/lib/python3.11/site-packages/cuda/bindings/nvjitlink.cpython-311-x86_64-linux-gnu.so filter=lfs diff=lfs merge=lfs -text +venv/lib/python3.11/site-packages/cuda/bindings/nvml.cpython-311-x86_64-linux-gnu.so filter=lfs diff=lfs merge=lfs -text +venv/lib/python3.11/site-packages/cuda/bindings/nvrtc.cpython-311-x86_64-linux-gnu.so filter=lfs diff=lfs merge=lfs -text +venv/lib/python3.11/site-packages/cuda/bindings/runtime.cpython-311-x86_64-linux-gnu.so filter=lfs diff=lfs merge=lfs -text +venv/lib/python3.11/site-packages/cv2/cv2.abi3.so filter=lfs diff=lfs merge=lfs -text +venv/lib/python3.11/site-packages/cv2/qt/fonts/DejaVuSans-Bold.ttf filter=lfs diff=lfs merge=lfs -text +venv/lib/python3.11/site-packages/cv2/qt/fonts/DejaVuSans-BoldOblique.ttf filter=lfs diff=lfs merge=lfs -text +venv/lib/python3.11/site-packages/cv2/qt/fonts/DejaVuSans-ExtraLight.ttf filter=lfs diff=lfs merge=lfs -text +venv/lib/python3.11/site-packages/cv2/qt/fonts/DejaVuSans-Oblique.ttf filter=lfs diff=lfs merge=lfs -text +venv/lib/python3.11/site-packages/cv2/qt/fonts/DejaVuSans.ttf filter=lfs diff=lfs merge=lfs -text +venv/lib/python3.11/site-packages/cv2/qt/fonts/DejaVuSansCondensed-Bold.ttf filter=lfs diff=lfs merge=lfs -text +venv/lib/python3.11/site-packages/cv2/qt/fonts/DejaVuSansCondensed-BoldOblique.ttf filter=lfs diff=lfs merge=lfs -text +venv/lib/python3.11/site-packages/cv2/qt/fonts/DejaVuSansCondensed-Oblique.ttf filter=lfs diff=lfs merge=lfs -text +venv/lib/python3.11/site-packages/cv2/qt/fonts/DejaVuSansCondensed.ttf filter=lfs diff=lfs merge=lfs -text diff --git a/venv/lib/python3.11/site-packages/bitsandbytes-0.50.0.dist-info/INSTALLER b/venv/lib/python3.11/site-packages/bitsandbytes-0.50.0.dist-info/INSTALLER new file mode 100644 index 0000000000000000000000000000000000000000..5c69047b2eb8235994febeeae1da4a82365a240a --- /dev/null +++ b/venv/lib/python3.11/site-packages/bitsandbytes-0.50.0.dist-info/INSTALLER @@ -0,0 +1 @@ +uv \ No newline at end of file diff --git a/venv/lib/python3.11/site-packages/bitsandbytes-0.50.0.dist-info/METADATA b/venv/lib/python3.11/site-packages/bitsandbytes-0.50.0.dist-info/METADATA new file mode 100644 index 0000000000000000000000000000000000000000..bf8fa4a6720b4ab00820eb0b9f124e15271e2022 --- /dev/null +++ b/venv/lib/python3.11/site-packages/bitsandbytes-0.50.0.dist-info/METADATA @@ -0,0 +1,288 @@ +Metadata-Version: 2.4 +Name: bitsandbytes +Version: 0.50.0 +Summary: k-bit optimizers and matrix multiplication routines. +Author-email: Tim Dettmers +Maintainer-email: Titus von Köller , Matthew Douglas +License-Expression: MIT +Project-URL: homepage, https://github.com/bitsandbytes-foundation/bitsandbytes +Project-URL: changelog, https://github.com/bitsandbytes-foundation/bitsandbytes/blob/main/CHANGELOG.md +Project-URL: docs, https://huggingface.co/docs/bitsandbytes/main +Project-URL: issues, https://github.com/bitsandbytes-foundation/bitsandbytes/issues +Keywords: gpu,optimizers,optimization,8-bit,quantization,compression +Classifier: Development Status :: 4 - Beta +Classifier: Environment :: GPU :: NVIDIA CUDA :: 11.8 +Classifier: Environment :: GPU :: NVIDIA CUDA :: 12 +Classifier: Environment :: GPU :: NVIDIA CUDA :: 13 +Classifier: Intended Audience :: Developers +Classifier: Intended Audience :: Science/Research +Classifier: Operating System :: POSIX :: Linux +Classifier: Operating System :: MacOS +Classifier: Operating System :: Microsoft :: Windows +Classifier: Programming Language :: C++ +Classifier: Programming Language :: Python :: Implementation :: CPython +Classifier: Programming Language :: Python :: 3.10 +Classifier: Programming Language :: Python :: 3.11 +Classifier: Programming Language :: Python :: 3.12 +Classifier: Programming Language :: Python :: 3.13 +Classifier: Programming Language :: Python :: 3.14 +Classifier: Topic :: Scientific/Engineering :: Artificial Intelligence +Requires-Python: >=3.10 +Description-Content-Type: text/markdown +License-File: LICENSE +Requires-Dist: torch<3,>=2.4 +Requires-Dist: numpy>=1.17 +Requires-Dist: packaging>=20.9 +Provides-Extra: benchmark +Requires-Dist: pandas; extra == "benchmark" +Requires-Dist: matplotlib; extra == "benchmark" +Provides-Extra: docs +Requires-Dist: hf-doc-builder==0.5.0; extra == "docs" +Provides-Extra: dev +Requires-Dist: bitsandbytes[test]; extra == "dev" +Requires-Dist: build<2,>=1.0.0; extra == "dev" +Requires-Dist: ruff~=0.14.3; extra == "dev" +Requires-Dist: pre-commit<4,>=3.5.0; extra == "dev" +Requires-Dist: wheel<1,>=0.42; extra == "dev" +Provides-Extra: test +Requires-Dist: einops~=0.8.0; extra == "test" +Requires-Dist: lion-pytorch==0.2.3; extra == "test" +Requires-Dist: pytest~=8.3; extra == "test" +Requires-Dist: scipy<2,>=1.11.4; extra == "test" +Requires-Dist: transformers<5,>=4.30.1; extra == "test" +Dynamic: license-file + +

+

bitsandbytes

+

+ License + Downloads + Nightly Unit Tests + GitHub Release + PyPI - Python Version +

+ +`bitsandbytes` enables accessible large language models via k-bit quantization for PyTorch. We provide three main features for dramatically reducing memory consumption for inference and training: + +* 8-bit optimizers uses block-wise quantization to maintain 32-bit performance at a small fraction of the memory cost. +* LLM.int8() or 8-bit quantization enables large language model inference with only half the required memory and without any performance degradation. This method is based on vector-wise quantization to quantize most features to 8-bits and separately treating outliers with 16-bit matrix multiplication. +* QLoRA or 4-bit quantization enables large language model training with several memory-saving techniques that don't compromise performance. This method quantizes a model to 4-bits and inserts a small set of trainable low-rank adaptation (LoRA) weights to allow training. + +The library includes quantization primitives for 8-bit & 4-bit operations, through `bitsandbytes.nn.Linear8bitLt` and `bitsandbytes.nn.Linear4bit` and 8-bit optimizers through `bitsandbytes.optim` module. + +## System Requirements +bitsandbytes has the following minimum requirements for all platforms: + +* Python 3.10+ +* [PyTorch](https://pytorch.org/get-started/locally/) 2.4+ + * _Note: While we aim to provide wide backwards compatibility, we recommend using the latest version of PyTorch for the best experience._ + +#### Accelerator support: + +Note: this table reflects the status of the current development branch. For the latest stable release, see the +[document in the 0.49.2 tag](https://github.com/bitsandbytes-foundation/bitsandbytes/blob/0.49.2/README.md#accelerator-support). + + +##### Legend: +🚧 = Planned | +〰️ = Partially Supported | +✅ = Supported | +❌ = Not Supported + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
PlatformAcceleratorHardware RequirementsLLM.int8()QLoRA 4-bit8-bit Optimizers
🐧 Linux, glibc >= 2.24
x86-64◻️ CPUMinimum: AVX2
Optimized: AVX512F, AVX512BF16
🟩 NVIDIA GPU
cuda
SM60+ minimum
SM75+ recommended
🟥 AMD GPU
cuda
+ CDNA: gfx908, gfx90a, gfx942, gfx950
+ RDNA: gfx103X, gfx110X, gfx115X, gfx120X +
🟦 Intel GPU
xpu
+ Data Center GPU Max Series
+ Arc A-Series (Alchemist)
+ Arc B-Series (Battlemage) +
🟪 Intel Gaudi
hpu
Gaudi2, Gaudi3〰️
aarch64◻️ CPU✅ *
🟩 NVIDIA GPU
cuda
SM75+
🪟 Windows 11 / Windows Server 2022+
x86-64◻️ CPUAVX2
🟩 NVIDIA GPU
cuda
SM60+ minimum
SM75+ recommended
🟥 AMD GPU
cuda
+ RDNA: gfx103X, gfx110X, gfx115X, gfx120X +
🟦 Intel GPU
xpu
+ Arc A-Series (Alchemist)
+ Arc B-Series (Battlemage) +
arm64◻️ CPU
🍎 macOS 14+
arm64◻️ CPUApple M1+✅ *
⬜ Metal
mps
Apple M1+✅ *🚧
+* While supported, these marked features may lack in performance optimizations. + +## :book: Documentation +* [Official Documentation](https://huggingface.co/docs/bitsandbytes/main) +* 🤗 [Transformers](https://huggingface.co/docs/transformers/quantization/bitsandbytes) +* 🤗 [Diffusers](https://huggingface.co/docs/diffusers/quantization/bitsandbytes) +* 🤗 [PEFT](https://huggingface.co/docs/peft/developer_guides/quantization#quantize-a-model) + +## :heart: Sponsors +The continued maintenance and development of `bitsandbytes` is made possible thanks to the generous support of our sponsors. Their contributions help ensure that we can keep improving the project and delivering valuable updates to the community. + +Hugging Face + +## License +`bitsandbytes` is MIT licensed. + +## How to cite us +If you found this library useful, please consider citing our work: + +### QLoRA + +```bibtex +@article{dettmers2023qlora, + title={Qlora: Efficient finetuning of quantized llms}, + author={Dettmers, Tim and Pagnoni, Artidoro and Holtzman, Ari and Zettlemoyer, Luke}, + journal={arXiv preprint arXiv:2305.14314}, + year={2023} +} +``` + +### LLM.int8() + +```bibtex +@article{dettmers2022llmint8, + title={LLM.int8(): 8-bit Matrix Multiplication for Transformers at Scale}, + author={Dettmers, Tim and Lewis, Mike and Belkada, Younes and Zettlemoyer, Luke}, + journal={arXiv preprint arXiv:2208.07339}, + year={2022} +} +``` + +### 8-bit Optimizers + +```bibtex +@article{dettmers2022optimizers, + title={8-bit Optimizers via Block-wise Quantization}, + author={Dettmers, Tim and Lewis, Mike and Shleifer, Sam and Zettlemoyer, Luke}, + journal={9th International Conference on Learning Representations, ICLR}, + year={2022} +} +``` diff --git a/venv/lib/python3.11/site-packages/bitsandbytes-0.50.0.dist-info/RECORD b/venv/lib/python3.11/site-packages/bitsandbytes-0.50.0.dist-info/RECORD new file mode 100644 index 0000000000000000000000000000000000000000..a720d74817bbe877762b7d8d43be95f32346ea0e --- /dev/null +++ b/venv/lib/python3.11/site-packages/bitsandbytes-0.50.0.dist-info/RECORD @@ -0,0 +1,70 @@ +bitsandbytes-0.50.0.dist-info/INSTALLER,sha256=5hhM4Q4mYTT9z6QB6PGpUAW81PGNFrYrdXMj4oM_6ak,2 +bitsandbytes-0.50.0.dist-info/METADATA,sha256=otWVmUGy3scc_PFYdPBhHAhjQloToVV2HHKTcoS2cvM,10535 +bitsandbytes-0.50.0.dist-info/RECORD,, +bitsandbytes-0.50.0.dist-info/REQUESTED,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0 +bitsandbytes-0.50.0.dist-info/WHEEL,sha256=vzvwQmedic5-XvNrhk7dqzH_Ci-T7aNTCjvRUpPnYBk,110 +bitsandbytes-0.50.0.dist-info/licenses/LICENSE,sha256=UkEte8fOQVfqYou6rLiCngqcs8WPV_mRdhJryM8r_IU,1086 +bitsandbytes-0.50.0.dist-info/top_level.txt,sha256=bK-Zzu-JyIIh4njm8jTYcbuqX-Z80XTcDal4lXCG0-M,13 +bitsandbytes/__init__.py,sha256=Ti1jq8tz_-G89r96rPzkH_N93OhjYLL3-2SycnpOmOw,2222 +bitsandbytes/__main__.py,sha256=A3iA9QH8yfn-60uN6w_7WUiuRIM777rZ_pf_HsZtse4,90 +bitsandbytes/_ops.py,sha256=5tntTCaOUgRKj_X4lflMqIvwLRVrJcRhYUHPqdqvkkw,19919 +bitsandbytes/autograd/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0 +bitsandbytes/autograd/_functions.py,sha256=d8pUyHtprUcKxz5dfd6UlI8g3p3ouHZJV3KLwpgx838,17700 +bitsandbytes/backends/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0 +bitsandbytes/backends/cpu/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0 +bitsandbytes/backends/cpu/ops.py,sha256=1L_Ki0zmpqNorszdFRb5j1Bb83T25m1k-yLmIp6x_2c,20911 +bitsandbytes/backends/cuda/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0 +bitsandbytes/backends/cuda/ops.py,sha256=mChNXwxzlLwXkv9f7eLYYia139s2GkACMjuBSsLhWBM,41773 +bitsandbytes/backends/default/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0 +bitsandbytes/backends/default/ops.py,sha256=45r9Ftym5vNKFDBa3gukrLtJ3Cx6m6-Tc0HX4ztoKBk,19802 +bitsandbytes/backends/hpu/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0 +bitsandbytes/backends/hpu/ops.py,sha256=GgFzY-1rOgqmH7ccXiK_aeo9yKTitvj7-WbOqGgG9uM,1457 +bitsandbytes/backends/mps/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0 +bitsandbytes/backends/mps/ops.py,sha256=2Tps6y0DNZ0GH2Gr1w0VL_7Urya_JpPXxtR_hHC9B3A,9105 +bitsandbytes/backends/triton/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0 +bitsandbytes/backends/triton/kernels_4bit.py,sha256=oolPfXxCwpPxZ3ekwiC68Nv-b1So6PtvI48RsSFPIAM,22150 +bitsandbytes/backends/triton/kernels_8bit_quant.py,sha256=kndNWcj0_-FDtSmXUpyaxfxPfHODGq_Wz51CXemjrfw,6542 +bitsandbytes/backends/triton/kernels_optim.py,sha256=TgRYrQxMG9kx3Mt3LZLB3VPb_5otpe2ZkVUBl_IHcbE,38685 +bitsandbytes/backends/triton/ops.py,sha256=cjz-MTTMjVmEd-I4qEu2l95D45VvZI4fqo6RoameKrg,10276 +bitsandbytes/backends/utils.py,sha256=3FZPL78T26gTiKI9TIcWfdVNoEr48XsNtSaF_kKxHIQ,2322 +bitsandbytes/backends/xpu/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0 +bitsandbytes/backends/xpu/ops.py,sha256=D_zelk4b8jxLSunzm3O6ilC5Ci2aApCURvFGcHRDJZY,9845 +bitsandbytes/cextension.py,sha256=p85Ne8tQS_fSaM6WZY2-gygEtvbtmZ9h6vK-65OFyb0,17174 +bitsandbytes/consts.py,sha256=xfDadQAax-maxqkHrVNbZ6UITJoS0XgcUfopmjLgilM,380 +bitsandbytes/cuda_specs.py,sha256=akFTR2ZxQ5CFpFLeg5QKFbVOZ4xz3USax43RxazP22k,3236 +bitsandbytes/diagnostics/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0 +bitsandbytes/diagnostics/cuda.py,sha256=O3907PxFrWr5gN34nDHgY7dWCaYcP2P5D35DYIlapGM,7256 +bitsandbytes/diagnostics/main.py,sha256=08pFuKjQrltzVyj7F3ch31SPJcI6PGiSyVQts0GtTJo,4202 +bitsandbytes/diagnostics/utils.py,sha256=ECiI279jh78977RWZFIOkmTJG4g1O_YiQLwP4iSa7Tw,284 +bitsandbytes/functional.py,sha256=UgqenTr7oREkc032Dkiifji2OJMF34iINEBbQ14oWBc,65287 +bitsandbytes/libbitsandbytes_cpu.so,sha256=r5-vKRTVSSoweJLDl2nnNAuLZJwhSQXvwNGYnIvJIAw,63464 +bitsandbytes/libbitsandbytes_cuda118.so,sha256=yrv4eh-7j55wrKzWZR9OGfMm-eO6VVtJGoQV6mMLb1E,21879184 +bitsandbytes/libbitsandbytes_cuda121.so,sha256=mxt0V9l2tHCeq39DY7nJcZv2a1Nf0yg_mL7MvrwGue0,21580176 +bitsandbytes/libbitsandbytes_cuda124.so,sha256=Ts7llW-_81ckbEQayIoVoDxakYvpfiHsUa_biXJbOGE,21294432 +bitsandbytes/libbitsandbytes_cuda126.so,sha256=ZIP8lwEsECWkt4MQgclbCwC-usm68rJupbY89KCk6Cc,21382936 +bitsandbytes/libbitsandbytes_cuda128.so,sha256=0aA588rukPlafkbpWo9MlxS6VwhLF9NA1bZxC-cPIko,26535848 +bitsandbytes/libbitsandbytes_cuda130.so,sha256=ZoWczGZSOxUGk5amVAd3NmpDd0jasIAdrDIM_WvV5io,3901168 +bitsandbytes/libbitsandbytes_cuda132.so,sha256=0sWf_5Kb7VaVJlw5fhXqvZ6L5PLrFYseS_I7ePJAi74,3984920 +bitsandbytes/libbitsandbytes_rocm64.so,sha256=R6cl1d5pf3zQj8peD6k6fcp2rJebonUUj4d6TP6S7gM,894216 +bitsandbytes/libbitsandbytes_rocm70.so,sha256=iIn4KqIdATqIbIae6_HG55E14hj5_KiW4bjsr1jCM5g,922896 +bitsandbytes/libbitsandbytes_rocm71.so,sha256=dP2hhc1o7jYQq_CbFLi2u7ZqRaXenXIWwKsG3L4gtx8,922888 +bitsandbytes/libbitsandbytes_rocm714.so,sha256=l3on6_3-VBON4quE3o3Dw1tGkq_VZZDQ3hx89KfOty8,1164704 +bitsandbytes/libbitsandbytes_rocm72.so,sha256=sA5PU10TbvJBLvAGCItiJmtnMI5N7lzEUFodyQ0Lg2I,972048 +bitsandbytes/libbitsandbytes_xpu2025.so,sha256=jZIyTVv0zWgq4dxI1GKlTPHwRoZr_xYvme90k9j0Sks,320024 +bitsandbytes/libbitsandbytes_xpu2026.so,sha256=mfnUrfBG2VMLNIOgu_0H6t0qGYdg-DnLnG95EwmeWDg,303496 +bitsandbytes/nn/__init__.py,sha256=aTONEw0rCr5xTt9xw2X-sbpXJxcFg-MXNksFxXtgL_4,432 +bitsandbytes/nn/modules.py,sha256=96shYGgeLwicqugNb9KDrGqbnxuCJp5vOVw7BG-vYG4,44262 +bitsandbytes/nn/parametrize.py,sha256=tSc2Iij4q1J2evGdD7nVF8NY9dVdaR678kKW1Ve7bAM,8365 +bitsandbytes/optim/__init__.py,sha256=0RqM1U6jwU8FCeePDch4QEu2AZEYVrtDI89lF2d1IUA,881 +bitsandbytes/optim/adagrad.py,sha256=vPtp0M9opv2I42RdSweQQiJa9qu4ddYgbzKagGIl-W4,6774 +bitsandbytes/optim/adam.py,sha256=UIbjVFTmQZU5EzpV4-0jzAn4blbOYnRQr3aPShlRdVc,12832 +bitsandbytes/optim/adamw.py,sha256=2mtW2oR1zy61WR5oEUUB0Vm05A-TZ8RjozJNwgKqJjs,12449 +bitsandbytes/optim/ademamix.py,sha256=BSAckQJywUa3UDWiztJjqN5joGLzU06r8kASrNT2PMo,12750 +bitsandbytes/optim/lamb.py,sha256=amOaYeNIwU7R6Bennj-OS7QNCakHHEre8VXM5JvnMLM,7315 +bitsandbytes/optim/lars.py,sha256=o32s1FUiE49GRpc-WdTmRu_FeB7922ZBMh3UNBxcaWg,8326 +bitsandbytes/optim/lion.py,sha256=OUu1aysIM85NNHNFu-LDTCLI6HoqPNMp-bLVgZAGtHk,8309 +bitsandbytes/optim/optimizer.py,sha256=LgegbqBzbk5s57uCEgcmSqXC5wRHGMiAIbe646Fd3y4,28127 +bitsandbytes/optim/rmsprop.py,sha256=2sHSY1hfTr83aZvBmIEfzoTiKER8LZc_BDkmyJG3lPs,6134 +bitsandbytes/optim/sgd.py,sha256=gVjbjjYrm197RiOt6vLoXaMxaWVK6De91Ap_KL6WFtg,4916 +bitsandbytes/py.typed,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0 +bitsandbytes/utils.py,sha256=G1oZbgIAt07m9-7SpLBRtIjsipI8kCptdfTWKz96g9I,6928 diff --git a/venv/lib/python3.11/site-packages/bitsandbytes-0.50.0.dist-info/REQUESTED b/venv/lib/python3.11/site-packages/bitsandbytes-0.50.0.dist-info/REQUESTED new file mode 100644 index 0000000000000000000000000000000000000000..e69de29bb2d1d6434b8b29ae775ad8c2e48c5391 diff --git a/venv/lib/python3.11/site-packages/bitsandbytes-0.50.0.dist-info/WHEEL b/venv/lib/python3.11/site-packages/bitsandbytes-0.50.0.dist-info/WHEEL new file mode 100644 index 0000000000000000000000000000000000000000..649069ea2f512c8c2b6a973bbfaf4049504de704 --- /dev/null +++ b/venv/lib/python3.11/site-packages/bitsandbytes-0.50.0.dist-info/WHEEL @@ -0,0 +1,5 @@ +Wheel-Version: 1.0 +Generator: setuptools (83.0.0) +Root-Is-Purelib: false +Tag: py3-none-manylinux_2_24_x86_64 + diff --git a/venv/lib/python3.11/site-packages/bitsandbytes-0.50.0.dist-info/licenses/LICENSE b/venv/lib/python3.11/site-packages/bitsandbytes-0.50.0.dist-info/licenses/LICENSE new file mode 100644 index 0000000000000000000000000000000000000000..b96dcb0480a0b0be0727976e5202a1e7b23edc3f --- /dev/null +++ b/venv/lib/python3.11/site-packages/bitsandbytes-0.50.0.dist-info/licenses/LICENSE @@ -0,0 +1,21 @@ +MIT License + +Copyright (c) Facebook, Inc. and its affiliates. + +Permission is hereby granted, free of charge, to any person obtaining a copy +of this software and associated documentation files (the "Software"), to deal +in the Software without restriction, including without limitation the rights +to use, copy, modify, merge, publish, distribute, sublicense, and/or sell +copies of the Software, and to permit persons to whom the Software is +furnished to do so, subject to the following conditions: + +The above copyright notice and this permission notice shall be included in all +copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE +SOFTWARE. diff --git a/venv/lib/python3.11/site-packages/bitsandbytes-0.50.0.dist-info/top_level.txt b/venv/lib/python3.11/site-packages/bitsandbytes-0.50.0.dist-info/top_level.txt new file mode 100644 index 0000000000000000000000000000000000000000..38cb1102777e6c9f61ee8e9ef4bfd8e37b59a368 --- /dev/null +++ b/venv/lib/python3.11/site-packages/bitsandbytes-0.50.0.dist-info/top_level.txt @@ -0,0 +1 @@ +bitsandbytes diff --git a/venv/lib/python3.11/site-packages/bitsandbytes/optim/__init__.py b/venv/lib/python3.11/site-packages/bitsandbytes/optim/__init__.py new file mode 100644 index 0000000000000000000000000000000000000000..07174c38dfec8cbb6a3e93f8177af965026e168e --- /dev/null +++ b/venv/lib/python3.11/site-packages/bitsandbytes/optim/__init__.py @@ -0,0 +1,22 @@ +# Copyright (c) Facebook, Inc. and its affiliates. +# +# This source code is licensed under the MIT license found in the +# LICENSE file in the root directory of this source tree. + +from .adagrad import Adagrad, Adagrad8bit, Adagrad32bit +from .adam import Adam, Adam8bit, Adam32bit, PagedAdam, PagedAdam8bit, PagedAdam32bit +from .adamw import ( + AdamW, + AdamW8bit, + AdamW32bit, + PagedAdamW, + PagedAdamW8bit, + PagedAdamW32bit, +) +from .ademamix import AdEMAMix, AdEMAMix8bit, AdEMAMix32bit, PagedAdEMAMix, PagedAdEMAMix8bit, PagedAdEMAMix32bit +from .lamb import LAMB, LAMB8bit, LAMB32bit +from .lars import LARS, LARS8bit, LARS32bit, PytorchLARS +from .lion import Lion, Lion8bit, Lion32bit, PagedLion, PagedLion8bit, PagedLion32bit +from .optimizer import GlobalOptimManager +from .rmsprop import RMSprop, RMSprop8bit, RMSprop32bit +from .sgd import SGD, SGD8bit, SGD32bit diff --git a/venv/lib/python3.11/site-packages/bitsandbytes/optim/adagrad.py b/venv/lib/python3.11/site-packages/bitsandbytes/optim/adagrad.py new file mode 100644 index 0000000000000000000000000000000000000000..2566d1e47ef37a55966bb66b5931cca1c41d85f0 --- /dev/null +++ b/venv/lib/python3.11/site-packages/bitsandbytes/optim/adagrad.py @@ -0,0 +1,187 @@ +# Copyright (c) Facebook, Inc. and its affiliates. +# +# This source code is licensed under the MIT license found in the +# LICENSE file in the root directory of this source tree. +from bitsandbytes.optim.optimizer import Optimizer1State + + +class Adagrad(Optimizer1State): + def __init__( + self, + params, + lr=1e-2, + lr_decay=0, + weight_decay=0, + initial_accumulator_value=0, + eps=1e-10, + optim_bits=32, + args=None, + min_8bit_size=4096, + ): + """ + Base Adagrad optimizer. + + Arguments: + params (`torch.tensor`): + The input parameters to optimize. + lr (`float`, defaults to 1e-2): + The learning rate. + lr_decay (`int`, defaults to 0): + The learning rate decay. + weight_decay (`float`, defaults to 0.0): + The weight decay value for the optimizer. + initial_accumulator_value (`int`, defaults to 0): + The initial momemtum values. + eps (`float`, defaults to 1e-10): + The epsilon value prevents division by zero in the optimizer. + optim_bits (`int`, defaults to 32): + The number of bits of the optimizer state. + args (`object`, defaults to `None`): + An object with additional arguments. + min_8bit_size (`int`, defaults to 4096): + The minimum number of elements of the parameter tensors for 8-bit optimization. + """ + if not 0.0 <= lr: + raise ValueError(f"Invalid learning rate: {lr}") + if not 0.0 <= weight_decay: + raise ValueError(f"Invalid weight_decay value: {weight_decay}") + if not 0.0 <= eps: + raise ValueError(f"Invalid epsilon value: {eps}") + if initial_accumulator_value != 0.0: + raise ValueError("Initial accumulator value != 0.0 not supported!") + if lr_decay != 0.0: + raise ValueError("Lr Decay != 0.0 not supported!") + super().__init__( + "adagrad", + params, + lr, + (0.0, 0.0), + eps, + weight_decay, + optim_bits, + args, + min_8bit_size, + ) + + +class Adagrad8bit(Optimizer1State): + def __init__( + self, + params, + lr=1e-2, + lr_decay=0, + weight_decay=0, + initial_accumulator_value=0, + eps=1e-10, + optim_bits=8, + args=None, + min_8bit_size=4096, + ): + """ + 8-bit Adagrad optimizer. + + Arguments: + params (`torch.tensor`): + The input parameters to optimize. + lr (`float`, defaults to 1e-2): + The learning rate. + lr_decay (`int`, defaults to 0): + The learning rate decay. + weight_decay (`float`, defaults to 0.0): + The weight decay value for the optimizer. + initial_accumulator_value (`int`, defaults to 0): + The initial momemtum values. + eps (`float`, defaults to 1e-10): + The epsilon value prevents division by zero in the optimizer. + optim_bits (`int`, defaults to 8): + The number of bits of the optimizer state. + Note: This parameter is not used in Adagrad8bit as it always uses 8-bit optimization. + args (`object`, defaults to `None`): + An object with additional arguments. + min_8bit_size (`int`, defaults to 4096): + The minimum number of elements of the parameter tensors for 8-bit optimization. + """ + if not 0.0 <= lr: + raise ValueError(f"Invalid learning rate: {lr}") + if not 0.0 <= weight_decay: + raise ValueError(f"Invalid weight_decay value: {weight_decay}") + if not 0.0 <= eps: + raise ValueError(f"Invalid epsilon value: {eps}") + if initial_accumulator_value != 0.0: + raise ValueError("Initial accumulator value != 0.0 not supported!") + if lr_decay != 0.0: + raise ValueError("Lr Decay != 0.0 not supported!") + if optim_bits != 8: + # We allow the default value of 8 to maintain compatibility with the function signature, + # but any other value is invalid since Adagrad8bit always uses 8-bit optimization + raise ValueError("Adagrad8bit only supports optim_bits=8 (default value for compatibility)") + super().__init__( + "adagrad", + params, + lr, + (0.0, 0.0), + eps, + weight_decay, + 8, + args, + min_8bit_size, + ) + + +class Adagrad32bit(Optimizer1State): + def __init__( + self, + params, + lr=1e-2, + lr_decay=0, + weight_decay=0, + initial_accumulator_value=0, + eps=1e-10, + optim_bits=32, + args=None, + min_8bit_size=4096, + ): + """ + 32-bit Adagrad optimizer. + + Arguments: + params (`torch.tensor`): + The input parameters to optimize. + lr (`float`, defaults to 1e-2): + The learning rate. + lr_decay (`int`, defaults to 0): + The learning rate decay. + weight_decay (`float`, defaults to 0.0): + The weight decay value for the optimizer. + initial_accumulator_value (`int`, defaults to 0): + The initial momemtum values. + eps (`float`, defaults to 1e-10): + The epsilon value prevents division by zero in the optimizer. + optim_bits (`int`, defaults to 32): + The number of bits of the optimizer state. + args (`object`, defaults to `None`): + An object with additional arguments. + min_8bit_size (`int`, defaults to 4096): + The minimum number of elements of the parameter tensors for 8-bit optimization. + """ + if not 0.0 <= lr: + raise ValueError(f"Invalid learning rate: {lr}") + if not 0.0 <= weight_decay: + raise ValueError(f"Invalid weight_decay value: {weight_decay}") + if not 0.0 <= eps: + raise ValueError(f"Invalid epsilon value: {eps}") + if initial_accumulator_value != 0.0: + raise ValueError("Initial accumulator value != 0.0 not supported!") + if lr_decay != 0.0: + raise ValueError("Lr Decay != 0.0 not supported!") + super().__init__( + "adagrad", + params, + lr, + (0.0, 0.0), + eps, + weight_decay, + 32, + args, + min_8bit_size, + ) diff --git a/venv/lib/python3.11/site-packages/bitsandbytes/optim/adam.py b/venv/lib/python3.11/site-packages/bitsandbytes/optim/adam.py new file mode 100644 index 0000000000000000000000000000000000000000..63210bdc30e7db78642a8208d35395507b5f773a --- /dev/null +++ b/venv/lib/python3.11/site-packages/bitsandbytes/optim/adam.py @@ -0,0 +1,346 @@ +# Copyright (c) Facebook, Inc. and its affiliates. +# +# This source code is licensed under the MIT license found in the +# LICENSE file in the root directory of this source tree. + +from bitsandbytes.optim.optimizer import Optimizer2State + + +class Adam(Optimizer2State): + def __init__( + self, + params, + lr=1e-3, + betas=(0.9, 0.999), + eps=1e-8, + weight_decay=0, + amsgrad=False, + optim_bits=32, + args=None, + min_8bit_size=4096, + is_paged=False, + ): + """ + Base Adam optimizer. + + Arguments: + params (`torch.tensor`): + The input parameters to optimize. + lr (`float`, defaults to 1e-3): + The learning rate. + betas (`tuple(float, float)`, defaults to (0.9, 0.999)): + The beta values are the decay rates of the first and second-order moment of the optimizer. + eps (`float`, defaults to 1e-8): + The epsilon value prevents division by zero in the optimizer. + weight_decay (`float`, defaults to 0.0): + The weight decay value for the optimizer. + amsgrad (`bool`, defaults to `False`): + Whether to use the [AMSGrad](https://hf.co/papers/1904.09237) variant of Adam that uses the maximum of past squared gradients instead. + optim_bits (`int`, defaults to 32): + The number of bits of the optimizer state. + args (`object`, defaults to `None`): + An object with additional arguments. + min_8bit_size (`int`, defaults to 4096): + The minimum number of elements of the parameter tensors for 8-bit optimization. + is_paged (`bool`, defaults to `False`): + Whether the optimizer is a paged optimizer or not. + """ + super().__init__( + "adam", + params, + lr, + betas, + eps, + weight_decay, + optim_bits, + args, + min_8bit_size, + is_paged=is_paged, + ) + + +class Adam8bit(Optimizer2State): + def __init__( + self, + params, + lr=1e-3, + betas=(0.9, 0.999), + eps=1e-8, + weight_decay=0, + amsgrad=False, + optim_bits=32, + args=None, + min_8bit_size=4096, + is_paged=False, + ): + """ + 8-bit Adam optimizer. + + Arguments: + params (`torch.tensor`): + The input parameters to optimize. + lr (`float`, defaults to 1e-3): + The learning rate. + betas (`tuple(float, float)`, defaults to (0.9, 0.999)): + The beta values are the decay rates of the first and second-order moment of the optimizer. + eps (`float`, defaults to 1e-8): + The epsilon value prevents division by zero in the optimizer. + weight_decay (`float`, defaults to 0.0): + The weight decay value for the optimizer. + amsgrad (`bool`, defaults to `False`): + Whether to use the [AMSGrad](https://hf.co/papers/1904.09237) variant of Adam that uses the maximum of past squared gradients instead. + Note: This parameter is not supported in Adam8bit and must be False. + optim_bits (`int`, defaults to 32): + The number of bits of the optimizer state. + Note: This parameter is not used in Adam8bit as it always uses 8-bit optimization. + args (`object`, defaults to `None`): + An object with additional arguments. + min_8bit_size (`int`, defaults to 4096): + The minimum number of elements of the parameter tensors for 8-bit optimization. + is_paged (`bool`, defaults to `False`): + Whether the optimizer is a paged optimizer or not. + """ + # Validate unsupported parameters + if amsgrad: + raise ValueError("Adam8bit does not support amsgrad=True") + + if optim_bits != 32: + # We allow the default value of 32 to maintain compatibility with the function signature, + # but any other value is invalid since Adam8bit always uses 8-bit optimization + raise ValueError("Adam8bit only supports optim_bits=32 (default value for compatibility)") + + super().__init__( + "adam", + params, + lr, + betas, + eps, + weight_decay, + 8, # Hardcoded to 8 bits + args, + min_8bit_size, + is_paged=is_paged, + ) + + +class Adam32bit(Optimizer2State): + def __init__( + self, + params, + lr=1e-3, + betas=(0.9, 0.999), + eps=1e-8, + weight_decay=0, + amsgrad=False, + optim_bits=32, + args=None, + min_8bit_size=4096, + is_paged=False, + ): + """ + 32-bit Adam optimizer. + + Arguments: + params (`torch.tensor`): + The input parameters to optimize. + lr (`float`, defaults to 1e-3): + The learning rate. + betas (`tuple(float, float)`, defaults to (0.9, 0.999)): + The beta values are the decay rates of the first and second-order moment of the optimizer. + eps (`float`, defaults to 1e-8): + The epsilon value prevents division by zero in the optimizer. + weight_decay (`float`, defaults to 0.0): + The weight decay value for the optimizer. + amsgrad (`bool`, defaults to `False`): + Whether to use the [AMSGrad](https://hf.co/papers/1904.09237) variant of Adam that uses the maximum of past squared gradients instead. + optim_bits (`int`, defaults to 32): + The number of bits of the optimizer state. + args (`object`, defaults to `None`): + An object with additional arguments. + min_8bit_size (`int`, defaults to 4096): + The minimum number of elements of the parameter tensors for 8-bit optimization. + is_paged (`bool`, defaults to `False`): + Whether the optimizer is a paged optimizer or not. + """ + super().__init__( + "adam", + params, + lr, + betas, + eps, + weight_decay, + 32, + args, + min_8bit_size, + is_paged=is_paged, + ) + + +class PagedAdam(Optimizer2State): + def __init__( + self, + params, + lr=1e-3, + betas=(0.9, 0.999), + eps=1e-8, + weight_decay=0, + amsgrad=False, + optim_bits=32, + args=None, + min_8bit_size=4096, + is_paged=False, + ): + """ + Paged Adam optimizer. + + Arguments: + params (`torch.tensor`): + The input parameters to optimize. + lr (`float`, defaults to 1e-3): + The learning rate. + betas (`tuple(float, float)`, defaults to (0.9, 0.999)): + The beta values are the decay rates of the first and second-order moment of the optimizer. + eps (`float`, defaults to 1e-8): + The epsilon value prevents division by zero in the optimizer. + weight_decay (`float`, defaults to 0.0): + The weight decay value for the optimizer. + amsgrad (`bool`, defaults to `False`): + Whether to use the [AMSGrad](https://hf.co/papers/1904.09237) variant of Adam that uses the maximum of past squared gradients instead. + optim_bits (`int`, defaults to 32): + The number of bits of the optimizer state. + args (`object`, defaults to `None`): + An object with additional arguments. + min_8bit_size (`int`, defaults to 4096): + The minimum number of elements of the parameter tensors for 8-bit optimization. + is_paged (`bool`, defaults to `False`): + Whether the optimizer is a paged optimizer or not. + """ + super().__init__( + "adam", + params, + lr, + betas, + eps, + weight_decay, + optim_bits, + args, + min_8bit_size, + is_paged=True, + ) + + +class PagedAdam8bit(Optimizer2State): + def __init__( + self, + params, + lr=1e-3, + betas=(0.9, 0.999), + eps=1e-8, + weight_decay=0, + amsgrad=False, + optim_bits=32, + args=None, + min_8bit_size=4096, + is_paged=False, + ): + """ + 8-bit paged Adam optimizer. + + Arguments: + params (`torch.tensor`): + The input parameters to optimize. + lr (`float`, defaults to 1e-3): + The learning rate. + betas (`tuple(float, float)`, defaults to (0.9, 0.999)): + The beta values are the decay rates of the first and second-order moment of the optimizer. + eps (`float`, defaults to 1e-8): + The epsilon value prevents division by zero in the optimizer. + weight_decay (`float`, defaults to 0.0): + The weight decay value for the optimizer. + amsgrad (`bool`, defaults to `False`): + Whether to use the [AMSGrad](https://hf.co/papers/1904.09237) variant of Adam that uses the maximum of past squared gradients instead. + Note: This parameter is not supported in PagedAdam8bit and must be False. + optim_bits (`int`, defaults to 32): + The number of bits of the optimizer state. + Note: This parameter is not used in PagedAdam8bit as it always uses 8-bit optimization. + args (`object`, defaults to `None`): + An object with additional arguments. + min_8bit_size (`int`, defaults to 4096): + The minimum number of elements of the parameter tensors for 8-bit optimization. + is_paged (`bool`, defaults to `False`): + Whether the optimizer is a paged optimizer or not. + """ + # Validate unsupported parameters + if amsgrad: + raise ValueError("PagedAdam8bit does not support amsgrad=True") + + if optim_bits != 32: + # We allow the default value of 32 to maintain compatibility with the function signature, + # but any other value is invalid since PagedAdam8bit always uses 8-bit optimization + raise ValueError("PagedAdam8bit only supports optim_bits=32 (default value for compatibility)") + + super().__init__( + "adam", + params, + lr, + betas, + eps, + weight_decay, + 8, # Hardcoded to 8 bits + args, + min_8bit_size, + is_paged=True, + ) + + +class PagedAdam32bit(Optimizer2State): + def __init__( + self, + params, + lr=1e-3, + betas=(0.9, 0.999), + eps=1e-8, + weight_decay=0, + amsgrad=False, + optim_bits=32, + args=None, + min_8bit_size=4096, + is_paged=False, + ): + """ + Paged 32-bit Adam optimizer. + + Arguments: + params (`torch.tensor`): + The input parameters to optimize. + lr (`float`, defaults to 1e-3): + The learning rate. + betas (`tuple(float, float)`, defaults to (0.9, 0.999)): + The beta values are the decay rates of the first and second-order moment of the optimizer. + eps (`float`, defaults to 1e-8): + The epsilon value prevents division by zero in the optimizer. + weight_decay (`float`, defaults to 0.0): + The weight decay value for the optimizer. + amsgrad (`bool`, defaults to `False`): + Whether to use the [AMSGrad](https://hf.co/papers/1904.09237) variant of Adam that uses the maximum of past squared gradients instead. + optim_bits (`int`, defaults to 32): + The number of bits of the optimizer state. + args (`object`, defaults to `None`): + An object with additional arguments. + min_8bit_size (`int`, defaults to 4096): + The minimum number of elements of the parameter tensors for 8-bit optimization. + is_paged (`bool`, defaults to `False`): + Whether the optimizer is a paged optimizer or not. + """ + super().__init__( + "adam", + params, + lr, + betas, + eps, + weight_decay, + 32, + args, + min_8bit_size, + is_paged=True, + ) diff --git a/venv/lib/python3.11/site-packages/bitsandbytes/optim/adamw.py b/venv/lib/python3.11/site-packages/bitsandbytes/optim/adamw.py new file mode 100644 index 0000000000000000000000000000000000000000..36e151dfc66caea5c178c87c7fc2a246be40d126 --- /dev/null +++ b/venv/lib/python3.11/site-packages/bitsandbytes/optim/adamw.py @@ -0,0 +1,337 @@ +# Copyright (c) Facebook, Inc. and its affiliates. +# +# This source code is licensed under the MIT license found in the +# LICENSE file in the root directory of this source tree. + +from bitsandbytes.optim.optimizer import Optimizer2State + + +class AdamW(Optimizer2State): + def __init__( + self, + params, + lr=1e-3, + betas=(0.9, 0.999), + eps=1e-8, + weight_decay=1e-2, + amsgrad=False, + optim_bits=32, + args=None, + min_8bit_size=4096, + is_paged=False, + ): + """ + Base AdamW optimizer. + + Arguments: + params (`torch.Tensor`): + The input parameters to optimize. + lr (`float`, defaults to 1e-3): + The learning rate. + betas (`tuple(float, float)`, defaults to (0.9, 0.999)): + The beta values are the decay rates of the first and second-order moment of the optimizer. + eps (`float`, defaults to 1e-8): + The epsilon value prevents division by zero in the optimizer. + weight_decay (`float`, defaults to 1e-2): + The weight decay value for the optimizer. + amsgrad (`bool`, defaults to `False`): + Whether to use the [AMSGrad](https://hf.co/papers/1904.09237) variant of Adam that uses the maximum of past squared gradients instead. + optim_bits (`int`, defaults to 32): + The number of bits of the optimizer state. + args (`object`, defaults to `None`): + An object with additional arguments. + min_8bit_size (`int`, defaults to 4096): + The minimum number of elements of the parameter tensors for 8-bit optimization. + is_paged (`bool`, defaults to `False`): + Whether the optimizer is a paged optimizer or not. + """ + super().__init__( + "adam", + params, + lr, + betas, + eps, + weight_decay, + optim_bits, + args, + min_8bit_size, + is_paged=is_paged, + ) + + +class AdamW8bit(Optimizer2State): + def __init__( + self, + params, + lr=1e-3, + betas=(0.9, 0.999), + eps=1e-8, + weight_decay=1e-2, + amsgrad=False, + optim_bits=32, + args=None, + min_8bit_size=4096, + is_paged=False, + ): + """ + 8-bit AdamW optimizer. + + Arguments: + params (`torch.Tensor`): + The input parameters to optimize. + lr (`float`, defaults to 1e-3): + The learning rate. + betas (`tuple(float, float)`, defaults to (0.9, 0.999)): + The beta values are the decay rates of the first and second-order moment of the optimizer. + eps (`float`, defaults to 1e-8): + The epsilon value prevents division by zero in the optimizer. + weight_decay (`float`, defaults to 1e-2): + The weight decay value for the optimizer. + amsgrad (`bool`, defaults to `False`): + Whether to use the [AMSGrad](https://hf.co/papers/1904.09237) variant of Adam that uses the maximum of past squared gradients instead. + Note: This parameter is not supported in AdamW8bit and must be False. + optim_bits (`int`, defaults to 32): + The number of bits of the optimizer state. + Note: This parameter is not used in AdamW8bit as it always uses 8-bit optimization. + args (`object`, defaults to `None`): + An object with additional arguments. + min_8bit_size (`int`, defaults to 4096): + The minimum number of elements of the parameter tensors for 8-bit optimization. + is_paged (`bool`, defaults to `False`): + Whether the optimizer is a paged optimizer or not. + """ + # Validate unsupported parameters + if amsgrad: + raise ValueError("AdamW8bit does not support amsgrad=True") + + if optim_bits != 32: + # We allow the default value of 32 to maintain compatibility with the function signature, + # but any other value is invalid since AdamW8bit always uses 8-bit optimization + raise ValueError("AdamW8bit only supports optim_bits=32 (default value for compatibility)") + + super().__init__( + "adam", + params, + lr, + betas, + eps, + weight_decay, + 8, # Hardcoded to 8 bits + args, + min_8bit_size, + is_paged=is_paged, + ) + + +class AdamW32bit(Optimizer2State): + def __init__( + self, + params, + lr=1e-3, + betas=(0.9, 0.999), + eps=1e-8, + weight_decay=1e-2, + amsgrad=False, + optim_bits=32, + args=None, + min_8bit_size=4096, + is_paged=False, + ): + """ + 32-bit AdamW optimizer. + + Arguments: + params (`torch.Tensor`): + The input parameters to optimize. + lr (`float`, defaults to 1e-3): + The learning rate. + betas (`tuple(float, float)`, defaults to (0.9, 0.999)): + The beta values are the decay rates of the first and second-order moment of the optimizer. + eps (`float`, defaults to 1e-8): + The epsilon value prevents division by zero in the optimizer. + weight_decay (`float`, defaults to 1e-2): + The weight decay value for the optimizer. + amsgrad (`bool`, defaults to `False`): + Whether to use the [AMSGrad](https://hf.co/papers/1904.09237) variant of Adam that uses the maximum of past squared gradients instead. + optim_bits (`int`, defaults to 32): + The number of bits of the optimizer state. + args (`object`, defaults to `None`): + An object with additional arguments. + min_8bit_size (`int`, defaults to 4096): + The minimum number of elements of the parameter tensors for 8-bit optimization. + is_paged (`bool`, defaults to `False`): + Whether the optimizer is a paged optimizer or not. + """ + super().__init__( + "adam", + params, + lr, + betas, + eps, + weight_decay, + 32, + args, + min_8bit_size, + is_paged=is_paged, + ) + + +class PagedAdamW(Optimizer2State): + def __init__( + self, + params, + lr=1e-3, + betas=(0.9, 0.999), + eps=1e-8, + weight_decay=1e-2, + amsgrad=False, + optim_bits=32, + args=None, + min_8bit_size=4096, + ): + """ + Paged AdamW optimizer. + + Arguments: + params (`torch.Tensor`): + The input parameters to optimize. + lr (`float`, defaults to 1e-3): + The learning rate. + betas (`tuple(float, float)`, defaults to (0.9, 0.999)): + The beta values are the decay rates of the first and second-order moment of the optimizer. + eps (`float`, defaults to 1e-8): + The epsilon value prevents division by zero in the optimizer. + weight_decay (`float`, defaults to 1e-2): + The weight decay value for the optimizer. + amsgrad (`bool`, defaults to `False`): + Whether to use the [AMSGrad](https://hf.co/papers/1904.09237) variant of Adam that uses the maximum of past squared gradients instead. + optim_bits (`int`, defaults to 32): + The number of bits of the optimizer state. + args (`object`, defaults to `None`): + An object with additional arguments. + min_8bit_size (`int`, defaults to 4096): + The minimum number of elements of the parameter tensors for 8-bit optimization. + """ + super().__init__( + "adam", + params, + lr, + betas, + eps, + weight_decay, + optim_bits, + args, + min_8bit_size, + is_paged=True, + ) + + +class PagedAdamW8bit(Optimizer2State): + def __init__( + self, + params, + lr=1e-3, + betas=(0.9, 0.999), + eps=1e-8, + weight_decay=1e-2, + amsgrad=False, + optim_bits=32, + args=None, + min_8bit_size=4096, + ): + """ + Paged 8-bit AdamW optimizer. + + Arguments: + params (`torch.Tensor`): + The input parameters to optimize. + lr (`float`, defaults to 1e-3): + The learning rate. + betas (`tuple(float, float)`, defaults to (0.9, 0.999)): + The beta values are the decay rates of the first and second-order moment of the optimizer. + eps (`float`, defaults to 1e-8): + The epsilon value prevents division by zero in the optimizer. + weight_decay (`float`, defaults to 1e-2): + The weight decay value for the optimizer. + amsgrad (`bool`, defaults to `False`): + Whether to use the [AMSGrad](https://hf.co/papers/1904.09237) variant of Adam that uses the maximum of past squared gradients instead. + Note: This parameter is not supported in PagedAdamW8bit and must be False. + optim_bits (`int`, defaults to 32): + The number of bits of the optimizer state. + Note: This parameter is not used in PagedAdamW8bit as it always uses 8-bit optimization. + args (`object`, defaults to `None`): + An object with additional arguments. + min_8bit_size (`int`, defaults to 4096): + The minimum number of elements of the parameter tensors for 8-bit optimization. + """ + # Validate unsupported parameters + if amsgrad: + raise ValueError("PagedAdamW8bit does not support amsgrad=True") + + if optim_bits != 32: + # We allow the default value of 32 to maintain compatibility with the function signature, + # but any other value is invalid since PagedAdamW8bit always uses 8-bit optimization + raise ValueError("PagedAdamW8bit only supports optim_bits=32 (default value for compatibility)") + + super().__init__( + "adam", + params, + lr, + betas, + eps, + weight_decay, + 8, # Hardcoded to 8 bits + args, + min_8bit_size, + is_paged=True, + ) + + +class PagedAdamW32bit(Optimizer2State): + def __init__( + self, + params, + lr=1e-3, + betas=(0.9, 0.999), + eps=1e-8, + weight_decay=1e-2, + amsgrad=False, + optim_bits=32, + args=None, + min_8bit_size=4096, + ): + """ + Paged 32-bit AdamW optimizer. + + Arguments: + params (`torch.Tensor`): + The input parameters to optimize. + lr (`float`, defaults to 1e-3): + The learning rate. + betas (`tuple(float, float)`, defaults to (0.9, 0.999)): + The beta values are the decay rates of the first and second-order moment of the optimizer. + eps (`float`, defaults to 1e-8): + The epsilon value prevents division by zero in the optimizer. + weight_decay (`float`, defaults to 1e-2): + The weight decay value for the optimizer. + amsgrad (`bool`, defaults to `False`): + Whether to use the [AMSGrad](https://hf.co/papers/1904.09237) variant of Adam that uses the maximum of past squared gradients instead. + optim_bits (`int`, defaults to 32): + The number of bits of the optimizer state. + args (`object`, defaults to `None`): + An object with additional arguments. + min_8bit_size (`int`, defaults to 4096): + The minimum number of elements of the parameter tensors for 8-bit optimization. + """ + super().__init__( + "adam", + params, + lr, + betas, + eps, + weight_decay, + 32, + args, + min_8bit_size, + is_paged=True, + ) diff --git a/venv/lib/python3.11/site-packages/bitsandbytes/optim/ademamix.py b/venv/lib/python3.11/site-packages/bitsandbytes/optim/ademamix.py new file mode 100644 index 0000000000000000000000000000000000000000..7b79c8e88ad9aef5991e065bcf9fe3920923c6f2 --- /dev/null +++ b/venv/lib/python3.11/site-packages/bitsandbytes/optim/ademamix.py @@ -0,0 +1,410 @@ +from collections.abc import Iterable +import math +from typing import Literal, Optional + +import torch + +import bitsandbytes.functional as F +from bitsandbytes.optim.optimizer import Optimizer2State + + +class _ReferenceAdEMAMix(torch.optim.Optimizer): + """ + Reference: https://hf.co/papers/2409.03137 + """ + + def __init__( + self, + params: Iterable[torch.nn.Parameter], + lr: float = 1e-3, + betas: tuple[float, float, float] = (0.9, 0.999, 0.9999), + alpha: float = 5.0, + eps: float = 1e-8, + weight_decay: float = 1e-2, # default 0.0 or 1e-2? + t_beta3: Optional[int] = None, + t_alpha: Optional[int] = None, + ): + defaults = dict( + lr=lr, betas=betas, alpha=alpha, eps=eps, weight_decay=weight_decay, t_beta3=t_beta3, t_alpha=t_alpha + ) + + super().__init__(params, defaults) + + @torch.no_grad() + def step(self, closure=None): + loss = None + + if closure is not None: + with torch.enable_grad(): + loss = closure() + + for group in self.param_groups: + if "step" in group: + group["step"] += 1 + else: + group["step"] = 1 + + lr = group["lr"] + eps = group["eps"] + beta1, beta2, beta3 = group["betas"] + alpha = group["alpha"] + t_alpha = group["t_alpha"] + t_beta3 = group["t_beta3"] + weight_decay = group["weight_decay"] + + for p in group["params"]: + if p.grad is None: + continue + + grad = p.grad + state = self.state[p] + + # State initialization + if len(state) == 0: + # For parity with bnb implementation we combine both fast + # and slow EMA stats into one stacked tensor. + state["m1_m2"] = p.new_zeros((2, *p.size())) + state["nu"] = torch.zeros_like(p) # second moment estimate + + m1, m2, nu = state["m1_m2"][0], state["m1_m2"][1], state["nu"] + + bias_correction1 = 1 - beta1 ** group["step"] + + bias_correction2 = 1 - beta2 ** group["step"] + + # Apply scheduler for alpha + if t_alpha is not None: + alpha = min(group["step"] * alpha / t_alpha, alpha) + + # Apply scheduler for beta3 + if t_beta3 is not None: + ln_beta1 = math.log(beta1) + ln_beta3 = math.log(beta3) + step_scale = group["step"] / t_beta3 + beta3 = min( + math.exp((ln_beta1 * ln_beta3) / (((1 - step_scale) * ln_beta3) + (step_scale * ln_beta1))), + beta3, + ) + + # Update the EMAs + m1.mul_(beta1).add_(grad, alpha=1 - beta1) + m2.mul_(beta3).add_(grad, alpha=1 - beta3) + nu.mul_(beta2).addcmul_(grad, grad, value=1 - beta2) + + # Compute step + denom = (nu.sqrt() / (bias_correction2**0.5)).add(eps) + update = (m1.div(bias_correction1) + alpha * m2) / denom + + # Add weight decay + update.add_(p, alpha=weight_decay) + + # Apply update scaled by learning rate + p.add_(-lr * update) + + return loss + + +class AdEMAMix(Optimizer2State): + def __init__( + self, + params: Iterable[torch.nn.Parameter], + lr: float = 1e-3, + betas: tuple[float, float, float] = (0.9, 0.999, 0.9999), + alpha: float = 5.0, + t_alpha: Optional[int] = None, + t_beta3: Optional[int] = None, + eps: float = 1e-8, + weight_decay: float = 1e-2, + optim_bits: Literal[8, 32] = 32, + min_8bit_size: int = 4096, + is_paged: bool = False, + ): + super().__init__( + "ademamix", + params=params, + lr=lr, + betas=betas, + eps=eps, + weight_decay=weight_decay, + optim_bits=optim_bits, + args=None, + min_8bit_size=min_8bit_size, + is_paged=is_paged, + alpha=alpha, + t_alpha=t_alpha, + t_beta3=t_beta3, + ) + + @torch.no_grad() + def init_state(self, group, p, gindex, pindex): + # In our AdEMAMix implementation, we use `state` to hold + # both the fast and slow EMAs. Here we override the base + # `Optimizer2State` to allocate a buffer twice as large. + + config = self.get_config(gindex, pindex, group) + + if config["optim_bits"] == 32: + dtype = torch.float32 + elif config["optim_bits"] == 8: + dtype = torch.uint8 + else: + raise NotImplementedError(f"Amount of optimizer bits not supported: {config['optim_bits']}") + + if p.numel() < config["min_8bit_size"]: + dtype = torch.float32 + + state = self.state[p] + state["step"] = 0 + + if dtype == torch.uint8: + if "dynamic" not in self.name2qmap: + self.fill_qmap() + self.name2qmap["dynamic"] = state["qmap1"] = self.name2qmap["dynamic"].to(p.device) + self.name2qmap["udynamic"] = state["qmap2"] = self.name2qmap["udynamic"].to(p.device) + + blocksize = 256 + n = p.numel() + blocks = (n // blocksize) + bool(n % blocksize) + + state["absmax1"] = torch.zeros((2, blocks), dtype=torch.float32, device=p.device) + state["absmax2"] = torch.zeros((blocks,), dtype=torch.float32, device=p.device) + + state["state1"] = self._get_state_double_buffer(p, dtype=dtype) + state["state2"] = self.get_state_buffer(p, dtype=dtype) + + @torch.no_grad() + def update_step(self, group, p, gindex, pindex): + config = self.get_config(gindex, pindex, group) + + if not config["t_alpha"] and not config["t_beta3"]: + # Not using alpha/beta3 scheduler; we can fall through. + super().update_step(group, p, gindex, pindex) + return + + # Ensure contiguous memory layout + p.data = p.data.contiguous() + p.grad = p.grad.contiguous() + + state = self.state[p] + grad = p.grad + + state["step"] += 1 + step = state["step"] + + beta1, beta2, beta3 = config["betas"] + alpha = config["alpha"] + t_alpha = config["t_alpha"] + t_beta3 = config["t_beta3"] + + # Apply scheduler for alpha + if t_alpha: + alpha_t = min(step * alpha / t_alpha, alpha) + else: + alpha_t = alpha + + # Apply scheduler for beta3 + if t_beta3: + ln_beta1 = math.log(beta1) + ln_beta3 = math.log(beta3) + step_scale = step / t_beta3 + beta3_t = min( + math.exp((ln_beta1 * ln_beta3) / (((1 - step_scale) * ln_beta3) + (step_scale * ln_beta1))), beta3 + ) + else: + beta3_t = beta3 + + # Apply updates + if state["state1"].dtype == torch.float32: + F.optimizer_update_32bit( + self.optimizer_name, + grad, + p, + state["state1"], + beta1, + config["eps"], + step, + config["lr"], + state["state2"], + beta2, + beta3_t, + alpha_t, + config["weight_decay"], + gnorm_scale=1.0, + unorm_vec=state["unorm_vec"] if config["max_unorm"] > 0.0 else None, + max_unorm=config["max_unorm"], + skip_zeros=config["skip_zeros"], + ) + elif state["state1"].dtype == torch.uint8: + F.optimizer_update_8bit_blockwise( + self.optimizer_name, + grad, + p, + state["state1"], + state["state2"], + config["betas"][0], + config["betas"][1], + beta3_t, + alpha_t, + config["eps"], + step, + config["lr"], + state["qmap1"], + state["qmap2"], + state["absmax1"], + state["absmax2"], + config["weight_decay"], + gnorm_scale=1.0, + skip_zeros=config["skip_zeros"], + ) + + def _get_state_double_buffer(self, p, dtype=torch.float32): + if not self.is_paged or p.numel() < 1e5: + return torch.zeros((2, *p.size()), dtype=dtype, device=p.device) + else: + buff = F.get_paged(*(2, *p.size()), dtype=dtype, device=p.device) + F.fill(buff, 0) + self.page_mng.paged_tensors.append(buff) + return buff + + +class AdEMAMix8bit(AdEMAMix): + def __init__( + self, + params: Iterable[torch.nn.Parameter], + lr: float = 1e-3, + betas: tuple[float, float, float] = (0.9, 0.999, 0.9999), + alpha: float = 5.0, + t_alpha: Optional[int] = None, + t_beta3: Optional[int] = None, + eps: float = 1e-8, + weight_decay: float = 1e-2, + min_8bit_size: int = 4096, + is_paged: bool = False, + ): + super().__init__( + params, + lr=lr, + betas=betas, + alpha=alpha, + t_alpha=t_alpha, + t_beta3=t_beta3, + eps=eps, + weight_decay=weight_decay, + optim_bits=8, + min_8bit_size=min_8bit_size, + is_paged=is_paged, + ) + + +class PagedAdEMAMix8bit(AdEMAMix8bit): + def __init__( + self, + params: Iterable[torch.nn.Parameter], + lr: float = 1e-3, + betas: tuple[float, float, float] = (0.9, 0.999, 0.9999), + alpha: float = 5.0, + t_alpha: Optional[int] = None, + t_beta3: Optional[int] = None, + eps: float = 1e-8, + weight_decay: float = 1e-2, + min_8bit_size: int = 4096, + ): + super().__init__( + params, + lr=lr, + betas=betas, + alpha=alpha, + t_alpha=t_alpha, + t_beta3=t_beta3, + eps=eps, + weight_decay=weight_decay, + min_8bit_size=min_8bit_size, + is_paged=True, + ) + + +class PagedAdEMAMix(AdEMAMix): + def __init__( + self, + params: Iterable[torch.nn.Parameter], + lr: float = 1e-3, + betas: tuple[float, float, float] = (0.9, 0.999, 0.9999), + alpha: float = 5.0, + t_alpha: Optional[int] = None, + t_beta3: Optional[int] = None, + eps: float = 1e-8, + weight_decay: float = 1e-2, + optim_bits: Literal[8, 32] = 32, + min_8bit_size: int = 4096, + ): + super().__init__( + params, + lr=lr, + betas=betas, + alpha=alpha, + t_alpha=t_alpha, + t_beta3=t_beta3, + eps=eps, + weight_decay=weight_decay, + optim_bits=optim_bits, + min_8bit_size=min_8bit_size, + is_paged=True, + ) + + +class AdEMAMix32bit(Optimizer2State): + def __init__( + self, + params: Iterable[torch.nn.Parameter], + lr: float = 1e-3, + betas: tuple[float, float, float] = (0.9, 0.999, 0.9999), + alpha: float = 5.0, + t_alpha: Optional[int] = None, + t_beta3: Optional[int] = None, + eps: float = 1e-8, + weight_decay: float = 1e-2, + min_8bit_size: int = 4096, + is_paged: bool = False, + ): + super().__init__( + "ademamix", + params=params, + lr=lr, + betas=betas, + eps=eps, + weight_decay=weight_decay, + optim_bits=32, + args=None, + min_8bit_size=min_8bit_size, + is_paged=is_paged, + alpha=alpha, + t_alpha=t_alpha, + t_beta3=t_beta3, + ) + + +class PagedAdEMAMix32bit(AdEMAMix32bit): + def __init__( + self, + params: Iterable[torch.nn.Parameter], + lr: float = 1e-3, + betas: tuple[float, float, float] = (0.9, 0.999, 0.9999), + alpha: float = 5.0, + t_alpha: Optional[int] = None, + t_beta3: Optional[int] = None, + eps: float = 1e-8, + weight_decay: float = 1e-2, + min_8bit_size: int = 4096, + ): + super().__init__( + params, + lr=lr, + betas=betas, + alpha=alpha, + t_alpha=t_alpha, + t_beta3=t_beta3, + eps=eps, + weight_decay=weight_decay, + min_8bit_size=min_8bit_size, + is_paged=True, + ) diff --git a/venv/lib/python3.11/site-packages/bitsandbytes/optim/lamb.py b/venv/lib/python3.11/site-packages/bitsandbytes/optim/lamb.py new file mode 100644 index 0000000000000000000000000000000000000000..15af97d6d0825dbdb8b9d84a0675725deb5549c1 --- /dev/null +++ b/venv/lib/python3.11/site-packages/bitsandbytes/optim/lamb.py @@ -0,0 +1,190 @@ +# Copyright (c) Facebook, Inc. and its affiliates. +# +# This source code is licensed under the MIT license found in the +# LICENSE file in the root directory of this source tree. +from bitsandbytes.optim.optimizer import Optimizer2State + + +class LAMB(Optimizer2State): + def __init__( + self, + params, + lr=1e-3, + bias_correction=True, + betas=(0.9, 0.999), + eps=1e-8, + weight_decay=0, + amsgrad=False, + adam_w_mode=True, + optim_bits=32, + args=None, + min_8bit_size=4096, + max_unorm=1.0, + ): + """ + Base LAMB optimizer. + + Arguments: + params (`torch.tensor`): + The input parameters to optimize. + lr (`float`, defaults to 1e-3): + The learning rate. + bias_correction (`bool`, defaults to `True`): + Whether to apply bias correction to the first and second-order moments. + betas (`tuple(float, float)`, defaults to (0.9, 0.999)): + The beta values are the decay rates of the first and second-order moment of the optimizer. + eps (`float`, defaults to 1e-8): + The epsilon value prevents division by zero in the optimizer. + weight_decay (`float`, defaults to 1e-2): + The weight decay value for the optimizer. + amsgrad (`bool`, defaults to `False`): + Whether to use the [AMSGrad](https://hf.co/papers/1904.09237) variant of Adam that uses the maximum of past squared gradients instead. + adam_w_mode (`bool`, defaults to `True`): + Whether to use the AdamW variant. + optim_bits (`int`, defaults to 32): + The number of bits of the optimizer state. + args (`object`, defaults to `None`): + An object with additional arguments. + min_8bit_size (`int`, defaults to 4096): + The minimum number of elements of the parameter tensors for 8-bit optimization. + max_unorm (`float`, defaults to 1.0): + The maximum gradient norm. + """ + super().__init__( + "lamb", + params, + lr, + betas, + eps, + weight_decay, + optim_bits, + args, + min_8bit_size, + max_unorm=max_unorm, + ) + + +class LAMB8bit(Optimizer2State): + def __init__( + self, + params, + lr=1e-3, + bias_correction=True, + betas=(0.9, 0.999), + eps=1e-8, + weight_decay=0, + amsgrad=False, + adam_w_mode=True, + args=None, + min_8bit_size=4096, + max_unorm=1.0, + ): + """ + 8-bit LAMB optimizer. + + Arguments: + params (`torch.tensor`): + The input parameters to optimize. + lr (`float`, defaults to 1e-3): + The learning rate. + bias_correction (`bool`, defaults to `True`): + Whether to apply bias correction to the first and second-order moments. + betas (`tuple(float, float)`, defaults to (0.9, 0.999)): + The beta values are the decay rates of the first and second-order moment of the optimizer. + eps (`float`, defaults to 1e-8): + The epsilon value prevents division by zero in the optimizer. + weight_decay (`float`, defaults to 1e-2): + The weight decay value for the optimizer. + amsgrad (`bool`, defaults to `False`): + Whether to use the [AMSGrad](https://hf.co/papers/1904.09237) variant of Adam that uses the maximum of past squared gradients instead. + Note: This parameter is not supported in LAMB8bit and must be False. + adam_w_mode (`bool`, defaults to `True`): + Whether to use the AdamW variant. + args (`object`, defaults to `None`): + An object with additional arguments. + min_8bit_size (`int`, defaults to 4096): + The minimum number of elements of the parameter tensors for 8-bit optimization. + max_unorm (`float`, defaults to 1.0): + The maximum update norm for trust-ratio clipping. + Note: This parameter is not supported in LAMB8bit and must be left at the + default 1.0. The 8-bit blockwise update does not implement update-norm + clipping; it is honored by the 32-bit LAMB / LAMB32bit optimizers. + """ + # Validate unsupported parameters + if amsgrad: + raise ValueError("LAMB8bit does not support amsgrad=True") + + if max_unorm != 1.0: + # We allow the default value of 1.0 to maintain compatibility with the function + # signature, but the 8-bit blockwise update does not implement update-norm + # clipping, so any other value would be silently ignored. + raise ValueError("LAMB8bit only supports max_unorm=1.0 (default value for compatibility)") + + super().__init__( + "lamb", + params, + lr, + betas, + eps, + weight_decay, + 8, + args, + min_8bit_size, + max_unorm=max_unorm, + ) + + +class LAMB32bit(Optimizer2State): + def __init__( + self, + params, + lr=1e-3, + bias_correction=True, + betas=(0.9, 0.999), + eps=1e-8, + weight_decay=0, + amsgrad=False, + adam_w_mode=True, + args=None, + min_8bit_size=4096, + max_unorm=1.0, + ): + """ + 32-bit LAMB optimizer. + + Arguments: + params (`torch.tensor`): + The input parameters to optimize. + lr (`float`, defaults to 1e-3): + The learning rate. + bias_correction (`bool`, defaults to `True`): + Whether to apply bias correction to the first and second-order moments. + betas (`tuple(float, float)`, defaults to (0.9, 0.999)): + The beta values are the decay rates of the first and second-order moment of the optimizer. + eps (`float`, defaults to 1e-8): + The epsilon value prevents division by zero in the optimizer. + weight_decay (`float`, defaults to 1e-2): + The weight decay value for the optimizer. + amsgrad (`bool`, defaults to `False`): + Whether to use the [AMSGrad](https://hf.co/papers/1904.09237) variant of Adam that uses the maximum of past squared gradients instead. + adam_w_mode (`bool`, defaults to `True`): + Whether to use the AdamW variant. + args (`object`, defaults to `None`): + An object with additional arguments. + min_8bit_size (`int`, defaults to 4096): + The minimum number of elements of the parameter tensors for 8-bit optimization. + max_unorm (`float`, defaults to 1.0): + The maximum gradient norm. + """ + super().__init__( + "lamb", + params, + lr, + betas, + eps, + weight_decay, + 32, + args, + min_8bit_size, + max_unorm=max_unorm, + ) diff --git a/venv/lib/python3.11/site-packages/bitsandbytes/optim/lars.py b/venv/lib/python3.11/site-packages/bitsandbytes/optim/lars.py new file mode 100644 index 0000000000000000000000000000000000000000..c2f5aa7847ae77a394a96056cf5f68a52f92040f --- /dev/null +++ b/venv/lib/python3.11/site-packages/bitsandbytes/optim/lars.py @@ -0,0 +1,259 @@ +# Copyright (c) Facebook, Inc. and its affiliates. +# +# This source code is licensed under the MIT license found in the +# LICENSE file in the root directory of this source tree. +import torch +from torch.optim import Optimizer + +from bitsandbytes.optim.optimizer import Optimizer1State + + +class LARS(Optimizer1State): + def __init__( + self, + params, + lr, + momentum=0, + dampening=0, + weight_decay=0, + nesterov=False, + optim_bits=32, + args=None, + min_8bit_size=4096, + max_unorm=0.02, + ): + """ + Base LARS optimizer. + + Arguments: + params (`torch.tensor`): + The input parameters to optimize. + lr (`float`): + The learning rate. + momentum (`float`, defaults to 0): + The momentum value speeds up the optimizer by taking bigger steps. + dampening (`float`, defaults to 0): + The dampening value reduces the momentum of the optimizer. + weight_decay (`float`, defaults to 1e-2): + The weight decay value for the optimizer. + nesterov (`bool`, defaults to `False`): + Whether to use Nesterov momentum. + optim_bits (`int`, defaults to 32): + The number of bits of the optimizer state. + args (`object`, defaults to `None`): + An object with additional arguments. + min_8bit_size (`int`, defaults to 4096): + The minimum number of elements of the parameter tensors for 8-bit optimization. + max_unorm (`float`, defaults to 0.02): + The maximum gradient norm. + """ + if momentum == 0: + raise NotImplementedError("LARS without momentum is not supported!") + super().__init__( + "lars", + params, + lr, + (momentum, dampening), + 0.0, + weight_decay, + optim_bits, + args, + min_8bit_size, + max_unorm=max_unorm, + ) + + +class LARS8bit(Optimizer1State): + def __init__( + self, + params, + lr, + momentum=0, + dampening=0, + weight_decay=0, + nesterov=False, + args=None, + min_8bit_size=4096, + max_unorm=0.02, + ): + """ + 8-bit LARS optimizer. + + Arguments: + params (`torch.tensor`): + The input parameters to optimize. + lr (`float`): + The learning rate. + momentum (`float`, defaults to 0): + The momentum value speeds up the optimizer by taking bigger steps. + dampening (`float`, defaults to 0): + The dampening value reduces the momentum of the optimizer. + weight_decay (`float`, defaults to 1e-2): + The weight decay value for the optimizer. + nesterov (`bool`, defaults to `False`): + Whether to use Nesterov momentum. + args (`object`, defaults to `None`): + An object with additional arguments. + min_8bit_size (`int`, defaults to 4096): + The minimum number of elements of the parameter tensors for 8-bit optimization. + max_unorm (`float`, defaults to 0.02): + The maximum gradient norm. + """ + if momentum == 0: + raise NotImplementedError("LARS without momentum is not supported!") + super().__init__( + "lars", + params, + lr, + (momentum, dampening), + 0.0, + weight_decay, + 8, + args, + min_8bit_size, + max_unorm=max_unorm, + ) + + +class LARS32bit(Optimizer1State): + def __init__( + self, + params, + lr, + momentum=0, + dampening=0, + weight_decay=0, + nesterov=False, + args=None, + min_8bit_size=4096, + max_unorm=0.02, + ): + """ + 32-bit LARS optimizer. + + Arguments: + params (`torch.tensor`): + The input parameters to optimize. + lr (`float`): + The learning rate. + momentum (`float`, defaults to 0): + The momentum value speeds up the optimizer by taking bigger steps. + dampening (`float`, defaults to 0): + The dampening value reduces the momentum of the optimizer. + weight_decay (`float`, defaults to 1e-2): + The weight decay value for the optimizer. + nesterov (`bool`, defaults to `False`): + Whether to use Nesterov momentum. + args (`object`, defaults to `None`): + An object with additional arguments. + min_8bit_size (`int`, defaults to 4096): + The minimum number of elements of the parameter tensors for 8-bit optimization. + max_unorm (`float`, defaults to 0.02): + The maximum gradient norm. + """ + if momentum == 0: + raise NotImplementedError("LARS without momentum is not supported!") + super().__init__( + "lars", + params, + lr, + (momentum, dampening), + 0.0, + weight_decay, + 32, + args, + min_8bit_size, + max_unorm=max_unorm, + ) + + +class PytorchLARS(Optimizer): + def __init__( + self, + params, + lr=0.01, + momentum=0, + dampening=0, + weight_decay=0, + nesterov=False, + max_unorm=0.02, + ): + if lr < 0.0: + raise ValueError(f"Invalid learning rate: {lr}") + if momentum < 0.0: + raise ValueError(f"Invalid momentum value: {momentum}") + if weight_decay < 0.0: + raise ValueError(f"Invalid weight_decay value: {weight_decay}") + + defaults = dict( + lr=lr, + momentum=momentum, + dampening=dampening, + weight_decay=weight_decay, + nesterov=nesterov, + max_unorm=max_unorm, + ) + if nesterov and (momentum <= 0 or dampening != 0): + raise ValueError("Nesterov momentum requires a momentum and zero dampening") + super().__init__(params, defaults) + + def __setstate__(self, state): + super().__setstate__(state) + for group in self.param_groups: + group.setdefault("nesterov", False) + + @torch.no_grad() + def step(self, closure=None): + """Performs a single optimization step. + + Args: + closure (callable, optional): A closure that reevaluates the model + and returns the loss. + """ + loss = None + if closure is not None: + with torch.enable_grad(): + loss = closure() + + for group in self.param_groups: + weight_decay = group["weight_decay"] + momentum = group["momentum"] + dampening = group["dampening"] + nesterov = group["nesterov"] + max_unorm = group["max_unorm"] + lr = group["lr"] + + for p in group["params"]: + if p.grad is None: + continue + + state = self.state[p] + d_p = p.grad + if weight_decay != 0: + d_p = d_p.add(p, alpha=weight_decay) + + if momentum != 0: + buf = state.get("momentum_buffer", None) + + if buf is None: + buf = torch.clone(d_p).detach() + state["momentum_buffer"] = buf + else: + buf.mul_(momentum).add_(d_p, alpha=1 - dampening) + + if nesterov: + update = d_p + buf * momentum + else: + update = buf + + update_scale = 1.0 + if max_unorm > 0.0: + assert p.dtype == torch.float32 + pnorm = torch.norm(p.detach()) + unorm = torch.norm(update) + if unorm > max_unorm * pnorm: + update_scale = max_unorm * pnorm / unorm + + p.add_(update, alpha=-lr * update_scale) + + return loss diff --git a/venv/lib/python3.11/site-packages/bitsandbytes/optim/lion.py b/venv/lib/python3.11/site-packages/bitsandbytes/optim/lion.py new file mode 100644 index 0000000000000000000000000000000000000000..6100491f660d1a2fcf8be9a3f5a2468a511d77ed --- /dev/null +++ b/venv/lib/python3.11/site-packages/bitsandbytes/optim/lion.py @@ -0,0 +1,266 @@ +# Copyright (c) Facebook, Inc. and its affiliates. +# +# This source code is licensed under the MIT license found in the +# LICENSE file in the root directory of this source tree. +from bitsandbytes.optim.optimizer import Optimizer1State + + +class Lion(Optimizer1State): + def __init__( + self, + params, + lr=1e-4, + betas=(0.9, 0.99), + weight_decay=0, + optim_bits=32, + args=None, + min_8bit_size=4096, + is_paged=False, + ): + """ + Base Lion optimizer. + + Arguments: + params (`torch.tensor`): + The input parameters to optimize. + lr (`float`, defaults to 1e-4): + The learning rate. + betas (`tuple(float, float)`, defaults to (0.9, 0.999)): + The beta values are the decay rates of the first and second-order moment of the optimizer. + weight_decay (`float`, defaults to 0): + The weight decay value for the optimizer. + optim_bits (`int`, defaults to 32): + The number of bits of the optimizer state. + args (`object`, defaults to `None`): + An object with additional arguments. + min_8bit_size (`int`, defaults to 4096): + The minimum number of elements of the parameter tensors for 8-bit optimization. + is_paged (`bool`, defaults to `False`): + Whether the optimizer is a paged optimizer or not. + """ + super().__init__( + "lion", + params, + lr, + betas, + 0.0, + weight_decay, + optim_bits, + args, + min_8bit_size, + is_paged=is_paged, + ) + + +class Lion8bit(Optimizer1State): + def __init__( + self, + params, + lr=1e-4, + betas=(0.9, 0.99), + weight_decay=0, + args=None, + min_8bit_size=4096, + is_paged=False, + ): + """ + 8-bit Lion optimizer. + + Arguments: + params (`torch.tensor`): + The input parameters to optimize. + lr (`float`, defaults to 1e-4): + The learning rate. + betas (`tuple(float, float)`, defaults to (0.9, 0.999)): + The beta values are the decay rates of the first and second-order moment of the optimizer. + weight_decay (`float`, defaults to 0): + The weight decay value for the optimizer. + args (`object`, defaults to `None`): + An object with additional arguments. + min_8bit_size (`int`, defaults to 4096): + The minimum number of elements of the parameter tensors for 8-bit optimization. + is_paged (`bool`, defaults to `False`): + Whether the optimizer is a paged optimizer or not. + """ + super().__init__( + "lion", + params, + lr, + betas, + 0.0, + weight_decay, + 8, + args, + min_8bit_size, + is_paged=is_paged, + ) + + +class Lion32bit(Optimizer1State): + def __init__( + self, + params, + lr=1e-4, + betas=(0.9, 0.99), + weight_decay=0, + args=None, + min_8bit_size=4096, + is_paged=False, + ): + """ + 32-bit Lion optimizer. + + Arguments: + params (`torch.tensor`): + The input parameters to optimize. + lr (`float`, defaults to 1e-4): + The learning rate. + betas (`tuple(float, float)`, defaults to (0.9, 0.999)): + The beta values are the decay rates of the first and second-order moment of the optimizer. + weight_decay (`float`, defaults to 0): + The weight decay value for the optimizer. + args (`object`, defaults to `None`): + An object with additional arguments. + min_8bit_size (`int`, defaults to 4096): + The minimum number of elements of the parameter tensors for 8-bit optimization. + is_paged (`bool`, defaults to `False`): + Whether the optimizer is a paged optimizer or not. + """ + super().__init__( + "lion", + params, + lr, + betas, + 0.0, + weight_decay, + 32, + args, + min_8bit_size, + is_paged=is_paged, + ) + + +class PagedLion(Optimizer1State): + def __init__( + self, + params, + lr=1e-4, + betas=(0.9, 0.99), + weight_decay=0, + optim_bits=32, + args=None, + min_8bit_size=4096, + ): + """ + Paged Lion optimizer. + + Arguments: + params (`torch.tensor`): + The input parameters to optimize. + lr (`float`, defaults to 1e-4): + The learning rate. + betas (`tuple(float, float)`, defaults to (0.9, 0.999)): + The beta values are the decay rates of the first and second-order moment of the optimizer. + weight_decay (`float`, defaults to 0): + The weight decay value for the optimizer. + optim_bits (`int`, defaults to 32): + The number of bits of the optimizer state. + args (`object`, defaults to `None`): + An object with additional arguments. + min_8bit_size (`int`, defaults to 4096): + The minimum number of elements of the parameter tensors for 8-bit optimization. + """ + super().__init__( + "lion", + params, + lr, + betas, + 0.0, + weight_decay, + optim_bits, + args, + min_8bit_size, + is_paged=True, + ) + + +class PagedLion8bit(Optimizer1State): + def __init__( + self, + params, + lr=1e-4, + betas=(0.9, 0.99), + weight_decay=0, + args=None, + min_8bit_size=4096, + ): + """ + Paged 8-bit Lion optimizer. + + Arguments: + params (`torch.tensor`): + The input parameters to optimize. + lr (`float`, defaults to 1e-4): + The learning rate. + betas (`tuple(float, float)`, defaults to (0.9, 0.999)): + The beta values are the decay rates of the first and second-order moment of the optimizer. + weight_decay (`float`, defaults to 0): + The weight decay value for the optimizer. + args (`object`, defaults to `None`): + An object with additional arguments. + min_8bit_size (`int`, defaults to 4096): + The minimum number of elements of the parameter tensors for 8-bit optimization. + """ + super().__init__( + "lion", + params, + lr, + betas, + 0.0, + weight_decay, + 8, + args, + min_8bit_size, + is_paged=True, + ) + + +class PagedLion32bit(Optimizer1State): + def __init__( + self, + params, + lr=1e-4, + betas=(0.9, 0.99), + weight_decay=0, + args=None, + min_8bit_size=4096, + ): + """ + Paged 32-bit Lion optimizer. + + Arguments: + params (`torch.tensor`): + The input parameters to optimize. + lr (`float`, defaults to 1e-4): + The learning rate. + betas (`tuple(float, float)`, defaults to (0.9, 0.999)): + The beta values are the decay rates of the first and second-order moment of the optimizer. + weight_decay (`float`, defaults to 0): + The weight decay value for the optimizer. + args (`object`, defaults to `None`): + An object with additional arguments. + min_8bit_size (`int`, defaults to 4096): + The minimum number of elements of the parameter tensors for 8-bit optimization. + """ + super().__init__( + "lion", + params, + lr, + betas, + 0.0, + weight_decay, + 32, + args, + min_8bit_size, + is_paged=True, + ) diff --git a/venv/lib/python3.11/site-packages/bitsandbytes/optim/optimizer.py b/venv/lib/python3.11/site-packages/bitsandbytes/optim/optimizer.py new file mode 100644 index 0000000000000000000000000000000000000000..dfc6e5d65ef791b26b4b92d89aba1265019d5556 --- /dev/null +++ b/venv/lib/python3.11/site-packages/bitsandbytes/optim/optimizer.py @@ -0,0 +1,756 @@ +# Copyright (c) Facebook, Inc. and its affiliates. +# +# This source code is licensed under the MIT license found in the +# LICENSE file in the root directory of this source tree. +from collections import abc as container_abcs, defaultdict +from copy import deepcopy +from itertools import chain +import logging +from typing import Optional +import warnings + +import torch + +import bitsandbytes.functional as F +from bitsandbytes.utils import sync_gpu + +logger = logging.getLogger(__name__) + + +class MockArgs: + def __init__(self, initial_data): + for key in initial_data: + setattr(self, key, initial_data[key]) + + +class GlobalOptimManager: + """ + A global optimizer manager for enabling custom optimizer configs. + """ + + _instance = None + + def __init__(self): + raise RuntimeError("Call get_instance() instead") + + def initialize(self): + self.pid2config = {} + self.index2config = {} + self.optimizer = None + self.uses_config_override = False + self.module_weight_config_triple = [] + + @classmethod + def get_instance(cls): + if cls._instance is None: + cls._instance = cls.__new__(cls) + cls._instance.initialize() + return cls._instance + + def register_parameters(self, params): + param_groups = list(params) + if not isinstance(param_groups[0], dict): + param_groups = [{"params": param_groups}] + + for group_index, group in enumerate(param_groups): + for p_index, p in enumerate(group["params"]): + if id(p) in self.pid2config: + self.index2config[(group_index, p_index)] = self.pid2config[id(p)] + + def override_config(self, parameters, key=None, value=None, key_value_dict=None): + """ + Override initial optimizer config with specific hyperparameters. + + The key-values of the optimizer config for the input parameters are overridden + This can be both, optimizer parameters like `betas` or `lr`, or it can be + 8-bit specific parameters like `optim_bits`. + + Arguments: + parameters (`torch.Tensor` or `list(torch.Tensors)`): + The input parameters. + key (`str`): + The hyperparameter to override. + value: + The hyperparameter value. + key_value_dict (`dict`): + A dictionary with multiple key-values to override. + + Example: + + ```py + import torch + import bitsandbytes as bnb + + mng = bnb.optim.GlobalOptimManager.get_instance() + + model = MyModel() + mng.register_parameters(model.parameters()) # 1. register parameters while still on CPU + + model = model.cuda() + # use 8-bit optimizer states for all parameters + adam = bnb.optim.Adam(model.parameters(), lr=0.001, optim_bits=8) + + # 2. override: the parameter model.fc1.weight now uses 32-bit Adam + mng.override_config(model.fc1.weight, 'optim_bits', 32) + ``` + """ + self.uses_config_override = True + if isinstance(parameters, torch.nn.Parameter): + parameters = [parameters] + if isinstance(parameters, torch.Tensor): + parameters = [parameters] + if key is not None and value is not None: + assert key_value_dict is None + key_value_dict = {key: value} + + if key_value_dict is not None: + for p in parameters: + if id(p) in self.pid2config: + self.pid2config[id(p)].update(key_value_dict) + else: + self.pid2config[id(p)] = key_value_dict + + def register_module_override(self, module, param_name, config): + self.module_weight_config_triple.append((module, param_name, config)) + + +class Optimizer8bit(torch.optim.Optimizer): + _FSDP_WRAPPED_QUANT_STATE_KEY = "__bnb_optimizer_quant_state__" + + def __init__(self, params, defaults, optim_bits=32, is_paged=False): + """ + Base 8-bit optimizer class. + + Arguments: + params (`torch.Tensor`): + The input parameters to optimize. + optim_bits (`int`, defaults to 32): + The number of bits of the optimizer state. + is_paged (`bool`, defaults to `False`): + Whether the optimizer is a paged optimizer or not. + """ + super().__init__(params, defaults) + self.initialized = False + self.name2qmap = {} + self.is_paged = is_paged + self.page_mng = F.GlobalPageManager.get_instance() + + self.mng = GlobalOptimManager.get_instance() + self.non_castable_tensor_keys = { + "qmap1", + "qmap2", + "max1", + "max2", + "new_max1", + "new_max2", + "state1", + "state2", + "gnorm_vec", + "absmax1", + "absmax2", + "unorm_vec", + } + + if optim_bits == 8: + self.fill_qmap() + + def fill_qmap(self): + self.name2qmap["dynamic"] = F.create_dynamic_map(signed=True) + self.name2qmap["udynamic"] = F.create_dynamic_map(signed=False) + + def state_dict(self): + """Return optimizer state, wrapping quantization tensors for FSDP compatibility. + + FSDP's full_optim_state_dict gathers all tensor states across ranks. + Quantization states (state1, state2, absmax, etc.) have different shapes + than model parameters, causing gather operations to fail. By wrapping + these tensors in a nested dict, FSDP skips them during gathering. + """ + state_dict = super().state_dict() + + # Deep copy the state to avoid modifying the original optimizer state + # PyTorch's state_dict() only does a shallow copy + state_dict["state"] = { + k: {kk: vv for kk, vv in v.items()} if isinstance(v, dict) else v for k, v in state_dict["state"].items() + } + + # Wrap quantization-specific tensors in a nested dict to hide from FSDP + for param_state in state_dict["state"].values(): + if isinstance(param_state, dict): + quant_state = {} + keys_to_wrap = [k for k in param_state if k in self.non_castable_tensor_keys] + for key in keys_to_wrap: + quant_state[key] = param_state.pop(key) + if quant_state: + param_state[self._FSDP_WRAPPED_QUANT_STATE_KEY] = quant_state + + return state_dict + + def __setstate__(self, state): + super().__setstate__(state) + + def load_state_dict(self, state_dict, move_to_device=True): + """Load an optimizer state. + + Arguments: + state_dict (`dict`): + An optimizer state (should be returned from a call to `state_dict`) to load. + move_to_device (`bool`, defaults to `True`): + Whether to move the optimizer's state to the device. + """ + # deepcopy, to be consistent with module API + state_dict = deepcopy(state_dict) + + # Unwrap quantization states that were wrapped for FSDP compatibility + for param_state in state_dict["state"].values(): + if isinstance(param_state, dict) and self._FSDP_WRAPPED_QUANT_STATE_KEY in param_state: + quant_state = param_state.pop(self._FSDP_WRAPPED_QUANT_STATE_KEY) + param_state.update(quant_state) + + # Validate the state_dict + groups = self.param_groups + saved_groups = state_dict["param_groups"] + + if len(groups) != len(saved_groups): + raise ValueError("loaded state dict has a different number of parameter groups") + param_lens = (len(g["params"]) for g in groups) + saved_lens = (len(g["params"]) for g in saved_groups) + if any(p_len != s_len for p_len, s_len in zip(param_lens, saved_lens)): + raise ValueError( + "loaded state dict contains a parameter group that doesn't match the size of optimizer's group", + ) + + # Update the state + id_map = { + old_id: p + for old_id, p in zip( + chain.from_iterable(g["params"] for g in saved_groups), + chain.from_iterable(g["params"] for g in groups), + ) + } + + def cast(param, value): + r"""Make a deep copy of value, casting all tensors to device of param.""" + if isinstance(value, torch.Tensor): + # Floating-point types are a bit special here. They are the only ones + # that are assumed to always match the type of params. + if param.is_floating_point() and value.dtype != torch.uint8: + value = value.to(param.dtype) + return value + elif isinstance(value, dict): + for k, v in value.items(): + if k in self.non_castable_tensor_keys: + if move_to_device: + value[k] = v.to(param.device) + else: + value[k] = cast(param, v) + + return value + elif isinstance(value, container_abcs.Iterable): + return type(value)(cast(param, v) for v in value) + else: + return value + + # Copy state assigned to params (and cast tensors to appropriate types). + # State that is not assigned to params is copied as is (needed for + # backward compatibility). + state = defaultdict(dict) + for k, v in state_dict["state"].items(): + if k in id_map: + param = id_map[k] + state[param] = cast(param, v) + else: + state[k] = v + + # Update parameter groups, setting their 'params' value + def update_group(group, new_group): + new_group["params"] = group["params"] + return new_group + + param_groups = [update_group(g, ng) for g, ng in zip(groups, saved_groups)] + self.__setstate__({"state": state, "param_groups": param_groups}) + + def to_gpu(self): + for gindex, group in enumerate(self.param_groups): + for pindex, p in enumerate(group["params"]): + if p.device.type == "cpu": + continue + if p in self.state: + values = self.state[p] + for k, v in values.items(): + if isinstance(v, torch.Tensor): + is_paged = getattr(v, "is_paged", False) + if not is_paged: + self.state[p][k] = v.to(p.device) + + def check_overrides(self): + for module, attr, config in self.mng.module_weight_config_triple: + pmodule = getattr(module, attr) + assert pmodule is not None + assert isinstance(pmodule, torch.Tensor) or isinstance(pmodule, torch.Parameter) + found = False + for gindex, group in enumerate(self.param_groups): + if found: + break + for pindex, p in enumerate(group["params"]): + if found: + break + if id(p) == id(pmodule): + # found the matching parameter + # init override + self.mng.pid2config[id(p)] = config + self.mng.index2config[(gindex, pindex)] = self.mng.pid2config[id(p)] + found = True + + @torch.no_grad() + def step(self, closure=None): + """Perform a single optimization step. + + Arguments: + closure (`Callable`, *optional*, defaults to `None`): + A closure that reevaluates the model and returns the loss. + """ + loss = None + if closure is not None: + with torch.enable_grad(): + loss = closure() + + if not self.initialized: + self.check_overrides() + self.to_gpu() # needed for fairseq pure fp16 training + self.initialized = True + + # if self.is_paged: self.page_mng.prefetch_all() + p = None + for gindex, group in enumerate(self.param_groups): + for pindex, p in enumerate(group["params"]): + if p.grad is None: + continue + state = self.state[p] + if len(state) == 0: + self.init_state(group, p, gindex, pindex) + + self.prefetch_state(p) + self.update_step(group, p, gindex, pindex) + sync_gpu(p) + if self.is_paged and p is not None: + # all paged operations are asynchronous, we need + # to sync to make sure all tensors are in the right state + sync_gpu(p) + + return loss + + def get_config(self, gindex, pindex, group): + config = {} + config["betas"] = group["betas"] + config["eps"] = group["eps"] + config["weight_decay"] = group["weight_decay"] + config["lr"] = group["lr"] + config["alpha"] = group.get("alpha", 0.0) + config["t_alpha"] = group.get("t_alpha", None) + config["t_beta3"] = group.get("t_beta3", None) + config["optim_bits"] = self.args.optim_bits + config["min_8bit_size"] = self.args.min_8bit_size + config["max_unorm"] = self.args.max_unorm + config["skip_zeros"] = self.args.skip_zeros + + if (gindex, pindex) in self.mng.index2config: + config.update(self.mng.index2config[(gindex, pindex)]) + + # Also check pid2config as a fallback so that override_config works + # regardless of whether it was called before or after register_parameters. + p = self.param_groups[gindex]["params"][pindex] + if id(p) in self.mng.pid2config: + config.update(self.mng.pid2config[id(p)]) + + return config + + def init_state(self, group, p, gindex, pindex): + raise NotImplementedError("init_state method needs to be overridden") + + def update_step(self, group, p, gindex, pindex): + raise NotImplementedError("The update_step method needs to be overridden") + + def get_state_buffer(self, p, dtype=torch.float32): + if p.device.type == "cpu": + if self.is_paged and not getattr(self, "_cpu_paged_warned", False): + warnings.warn( + "Paged optimizers are not supported on CPU. Falling back to non-paged optimizer behavior.", + stacklevel=2, + ) + self._cpu_paged_warned = True + return torch.zeros_like(p, dtype=dtype, device=p.device) + if not self.is_paged or p.numel() < 1e5: + return torch.zeros_like(p, dtype=dtype, device=p.device) + else: + # > 1 MB + buff = F.get_paged(*p.shape, dtype=dtype, device=p.device) + F.fill(buff, 0) + self.page_mng.paged_tensors.append(buff) + return buff + + def prefetch_state(self, p): + if self.is_paged: + state = self.state[p] + s1 = state["state1"] + is_paged = getattr(s1, "is_paged", False) + if is_paged: + F.prefetch_tensor(state["state1"]) + if "state2" in state: + F.prefetch_tensor(state["state2"]) + + +class Optimizer2State(Optimizer8bit): + def __init__( + self, + optimizer_name, + params, + lr=1e-3, + betas=(0.9, 0.999), + eps=1e-8, + weight_decay=0.0, + optim_bits=32, + args=None, + min_8bit_size=4096, + max_unorm=0.0, + skip_zeros=False, + is_paged=False, + alpha=0.0, + t_alpha: Optional[int] = None, + t_beta3: Optional[int] = None, + ): + """ + Base 2-state update optimizer class. + + Arguments: + optimizer_name (`str`): + The name of the optimizer. + params (`torch.Tensor`): + The input parameters to optimize. + lr (`float`, defaults to 1e-3): + The learning rate. + betas (`tuple`, defaults to (0.9, 0.999)): + The beta values for the optimizer. + eps (`float`, defaults to 1e-8): + The epsilon value for the optimizer. + weight_decay (`float`, defaults to 0.0): + The weight decay value for the optimizer. + optim_bits (`int`, defaults to 32): + The number of bits of the optimizer state. + args (`object`, defaults to `None`): + An object with additional arguments. + min_8bit_size (`int`, defaults to 4096): + The minimum number of elements of the parameter tensors for 8-bit optimization. + max_unorm (`float`, defaults to 0.0): + The maximum value to normalize each block with. + skip_zeros (`bool`, defaults to `False`): + Whether to skip zero values for sparse gradients and models to ensure correct updates. + is_paged (`bool`, defaults to `False`): + Whether the optimizer is a paged optimizer or not. + alpha (`float`, defaults to 0.0): + The alpha value for the AdEMAMix optimizer. + t_alpha (`Optional[int]`, defaults to `None`): + Number of iterations for alpha scheduling with AdEMAMix. + t_beta3 (`Optional[int]`, defaults to `None`): + Number of iterations for beta scheduling with AdEMAMix. + + """ + if not 0.0 <= lr: + raise ValueError(f"Invalid learning rate: {lr}") + if not 0.0 <= eps: + raise ValueError(f"Invalid epsilon value: {eps}") + if isinstance(betas, str): + # format: '(beta1, beta2)' + betas = betas.replace("(", "").replace(")", "").strip().split(",") + betas = [float(b) for b in betas] + for i in range(len(betas)): + if not 0.0 <= betas[i] < 1.0: + raise ValueError(f"Invalid beta parameter at index {i}: {betas[i]}") + if not 0.0 <= weight_decay: + raise ValueError(f"Invalid weight_decay value: {weight_decay}") + + defaults = dict( + lr=lr, betas=betas, eps=eps, weight_decay=weight_decay, alpha=alpha, t_alpha=t_alpha, t_beta3=t_beta3 + ) + + super().__init__(params, defaults, optim_bits, is_paged) + + if args is None: + args = {} + args["optim_bits"] = optim_bits + args["min_8bit_size"] = min_8bit_size + args["max_unorm"] = max_unorm + args["skip_zeros"] = skip_zeros + + self.args = MockArgs(args) + else: + self.args = args + + self.optimizer_name = optimizer_name + + @torch.no_grad() + def init_state(self, group, p, gindex, pindex): + config = self.get_config(gindex, pindex, group) + + if config["optim_bits"] == 32: + dtype = torch.float32 + elif config["optim_bits"] == 8: + dtype = torch.uint8 + else: + raise NotImplementedError(f"Amount of optimizer bits not supported: {config['optim_bits']}") + + if p.numel() < config["min_8bit_size"]: + dtype = torch.float32 + + state = self.state[p] + state["step"] = 0 + + if dtype == torch.float32: + state["state1"] = self.get_state_buffer(p, dtype=torch.float32) + state["state2"] = self.get_state_buffer(p, dtype=torch.float32) + elif dtype == torch.uint8: + if state["step"] == 0: + if "dynamic" not in self.name2qmap: + self.fill_qmap() + self.name2qmap["dynamic"] = self.name2qmap["dynamic"].to(p.device) + self.name2qmap["udynamic"] = self.name2qmap["udynamic"].to(p.device) + + state["state1"] = self.get_state_buffer(p, dtype=torch.uint8) + state["qmap1"] = self.name2qmap["dynamic"] + + state["state2"] = self.get_state_buffer(p, dtype=torch.uint8) + state["qmap2"] = self.name2qmap["udynamic"] + + blocksize = 256 + n = p.numel() + blocks = (n // blocksize) + bool(n % blocksize) + + state["absmax1"] = torch.zeros((blocks,), dtype=torch.float32, device=p.device) + state["absmax2"] = torch.zeros((blocks,), dtype=torch.float32, device=p.device) + + if config["max_unorm"] > 0.0: + state["unorm_vec"] = torch.zeros((1,), device=p.device) + + @torch.no_grad() + def update_step(self, group, p, gindex, pindex): + # avoid update error from non-contiguous memory layout + p.data = p.data.contiguous() + p.grad = p.grad.contiguous() + + state = self.state[p] + grad = p.grad + + config = self.get_config(gindex, pindex, group) + + state["step"] += 1 + step = state["step"] + + if state["state1"].dtype == torch.float: + F.optimizer_update_32bit( + self.optimizer_name, + grad, + p, + state["state1"], + config["betas"][0], + config["eps"], + step, + config["lr"], + state["state2"], + config["betas"][1], + config["betas"][2] if len(config["betas"]) >= 3 else 0.0, + config.get("alpha", 0.0), + config["weight_decay"], + 1.0, + state["unorm_vec"] if config["max_unorm"] > 0.0 else None, + max_unorm=config["max_unorm"], + skip_zeros=config["skip_zeros"], + ) + + elif state["state1"].dtype == torch.uint8: + F.optimizer_update_8bit_blockwise( + self.optimizer_name, + grad, + p, + state["state1"], + state["state2"], + config["betas"][0], + config["betas"][1], + config["betas"][2] if len(config["betas"]) >= 3 else 0.0, + config.get("alpha", 0.0), + config["eps"], + step, + config["lr"], + state["qmap1"], + state["qmap2"], + state["absmax1"], + state["absmax2"], + config["weight_decay"], + gnorm_scale=1.0, + skip_zeros=config["skip_zeros"], + ) + + +class Optimizer1State(Optimizer8bit): + def __init__( + self, + optimizer_name, + params, + lr=1e-3, + betas=(0.9, 0.0), + eps=1e-8, + weight_decay=0.0, + optim_bits=32, + args=None, + min_8bit_size=4096, + max_unorm=0.0, + skip_zeros=False, + is_paged=False, + ): + """ + Base 1-state update optimizer class. + + Arguments: + optimizer_name (`str`): + The name of the optimizer. + params (`torch.Tensor`): + The input parameters to optimize. + lr (`float`, defaults to 1e-3): + The learning rate. + betas (`tuple`, defaults to (0.9, 0.0)): + The beta values for the optimizer. + eps (`float`, defaults to 1e-8): + The epsilon value for the optimizer. + weight_decay (`float`, defaults to 0.0): + The weight decay value for the optimizer. + optim_bits (`int`, defaults to 32): + The number of bits of the optimizer state. + args (`object`, defaults to `None`): + An object with additional arguments. + min_8bit_size (`int`, defaults to 4096): + The minimum number of elements of the parameter tensors for 8-bit optimization. + max_unorm (`float`, defaults to 0.0): + The maximum value to normalize each block with. + skip_zeros (`bool`, defaults to `False`): + Whether to skip zero values for sparse gradients and models to ensure correct updates. + is_paged (`bool`, defaults to `False`): + Whether the optimizer is a paged optimizer or not. + """ + if not 0.0 <= lr: + raise ValueError(f"Invalid learning rate: {lr}") + if not 0.0 <= eps: + raise ValueError(f"Invalid epsilon value: {eps}") + for i in range(len(betas)): + if not 0.0 <= betas[i] < 1.0: + raise ValueError(f"Invalid beta parameter at index {i}: {betas[i]}") + if not 0.0 <= weight_decay: + raise ValueError(f"Invalid weight_decay value: {weight_decay}") + defaults = dict(lr=lr, betas=betas, eps=eps, weight_decay=weight_decay) + super().__init__(params, defaults, optim_bits, is_paged) + + if args is None: + args = {} + args["optim_bits"] = optim_bits + args["min_8bit_size"] = min_8bit_size + args["max_unorm"] = max_unorm + args["skip_zeros"] = skip_zeros + + self.args = MockArgs(args) + else: + self.args = args + + self.optimizer_name = optimizer_name + + @torch.no_grad() + def init_state(self, group, p, gindex, pindex): + config = self.get_config(gindex, pindex, group) + + if config["optim_bits"] == 32: + dtype = torch.float32 + elif config["optim_bits"] == 8: + dtype = torch.uint8 + else: + raise NotImplementedError(f"Amount of optimizer bits not supported: {config['optim_bits']}") + + if p.numel() < config["min_8bit_size"]: + dtype = torch.float32 + + state = self.state[p] + state["step"] = 0 + + if dtype == torch.float32: + state["state1"] = self.get_state_buffer(p, dtype=torch.float32) + elif dtype == torch.uint8: + if state["step"] == 0: + if "dynamic" not in self.name2qmap: + self.fill_qmap() + self.name2qmap["dynamic"] = self.name2qmap["dynamic"].to(p.device) + + state["state1"] = self.get_state_buffer(p, dtype=torch.uint8) + state["qmap1"] = self.name2qmap["dynamic"] + + blocksize = 256 + n = p.numel() + blocks = (n // blocksize) + bool(n % blocksize) + + state["absmax1"] = torch.zeros((blocks,), dtype=torch.float32, device=p.device) + + if config["max_unorm"] > 0.0: + state["unorm_vec"] = torch.zeros((1,), device=p.device) + + @torch.no_grad() + def update_step(self, group, p, gindex, pindex): + # avoid update error from non-contiguous memory layout + p.data = p.data.contiguous() + p.grad = p.grad.contiguous() + + state = self.state[p] + grad = p.grad + + config = self.get_config(gindex, pindex, group) + + state["step"] += 1 + step = state["step"] + + if state["state1"].dtype == torch.float: + F.optimizer_update_32bit( + self.optimizer_name, + grad, + p, + state["state1"], + config["betas"][0], + config["eps"], + step, + config["lr"], + None, + config["betas"][1], + 0.0, + 0.0, + config["weight_decay"], + 1.0, + state["unorm_vec"] if config["max_unorm"] > 0.0 else None, + max_unorm=config["max_unorm"], + skip_zeros=config["skip_zeros"], + ) + + elif state["state1"].dtype == torch.uint8: + F.optimizer_update_8bit_blockwise( + self.optimizer_name, + grad, + p, + state["state1"], + None, + config["betas"][0], + config["betas"][1], + 0.0, + 0.0, + config["eps"], + step, + config["lr"], + state["qmap1"], + None, + state["absmax1"], + None, + config["weight_decay"], + gnorm_scale=1.0, + skip_zeros=config["skip_zeros"], + ) diff --git a/venv/lib/python3.11/site-packages/bitsandbytes/optim/rmsprop.py b/venv/lib/python3.11/site-packages/bitsandbytes/optim/rmsprop.py new file mode 100644 index 0000000000000000000000000000000000000000..54c1fbda0935f42be13fe743e080977938278417 --- /dev/null +++ b/venv/lib/python3.11/site-packages/bitsandbytes/optim/rmsprop.py @@ -0,0 +1,170 @@ +# Copyright (c) Facebook, Inc. and its affiliates. +# +# This source code is licensed under the MIT license found in the +# LICENSE file in the root directory of this source tree. +from bitsandbytes.optim.optimizer import Optimizer1State + + +class RMSprop(Optimizer1State): + def __init__( + self, + params, + lr=1e-2, + alpha=0.99, + eps=1e-8, + weight_decay=0, + momentum=0, + centered=False, + optim_bits=32, + args=None, + min_8bit_size=4096, + ): + """ + Base RMSprop optimizer. + + Arguments: + params (`torch.tensor`): + The input parameters to optimize. + lr (`float`, defaults to 1e-2): + The learning rate. + alpha (`float`, defaults to 0.99): + The alpha value is the decay rate of the squared gradients of the optimizer. + eps (`float`, defaults to 1e-8): + The epsilon value prevents division by zero in the optimizer. + weight_decay (`float`, defaults to 0.0): + The weight decay value for the optimizer. + momentum (`float`, defaults to 0): + The momentum value speeds up the optimizer by taking bigger steps. + centered (`bool`, defaults to `False`): + Whether the gradients are normalized by the variance. If `True`, it can help training at the expense of additional compute. + optim_bits (`int`, defaults to 32): + The number of bits of the optimizer state. + args (`object`, defaults to `None`): + An object with additional arguments. + min_8bit_size (`int`, defaults to 4096): + The minimum number of elements of the parameter tensors for 8-bit optimization. + """ + if alpha == 0: + raise NotImplementedError("RMSprop with alpha==0.0 is not supported!") + if centered: + raise NotImplementedError("Centered RMSprop is not supported!") + super().__init__( + "rmsprop", + params, + lr, + (alpha, momentum), + eps, + weight_decay, + optim_bits, + args, + min_8bit_size, + ) + + +class RMSprop8bit(Optimizer1State): + def __init__( + self, + params, + lr=1e-2, + alpha=0.99, + eps=1e-8, + weight_decay=0, + momentum=0, + centered=False, + args=None, + min_8bit_size=4096, + ): + """ + 8-bit RMSprop optimizer. + + Arguments: + params (`torch.tensor`): + The input parameters to optimize. + lr (`float`, defaults to 1e-2): + The learning rate. + alpha (`float`, defaults to 0.99): + The alpha value is the decay rate of the squared gradients of the optimizer. + eps (`float`, defaults to 1e-8): + The epsilon value prevents division by zero in the optimizer. + weight_decay (`float`, defaults to 0.0): + The weight decay value for the optimizer. + momentum (`float`, defaults to 0): + The momentum value speeds up the optimizer by taking bigger steps. + centered (`bool`, defaults to `False`): + Whether the gradients are normalized by the variance. If `True`, it can help training at the expense of additional compute. + args (`object`, defaults to `None`): + An object with additional arguments. + min_8bit_size (`int`, defaults to 4096): + The minimum number of elements of the parameter tensors for 8-bit optimization. + """ + if alpha == 0: + raise NotImplementedError("RMSprop with alpha==0.0 is not supported!") + if centered: + raise NotImplementedError("Centered RMSprop is not supported!") + super().__init__( + "rmsprop", + params, + lr, + (alpha, momentum), + eps, + weight_decay, + 8, + args, + min_8bit_size, + ) + + +class RMSprop32bit(Optimizer1State): + def __init__( + self, + params, + lr=1e-2, + alpha=0.99, + eps=1e-8, + weight_decay=0, + momentum=0, + centered=False, + args=None, + min_8bit_size=4096, + ): + """ + 32-bit RMSprop optimizer. + + Arguments: + params (`torch.tensor`): + The input parameters to optimize. + lr (`float`, defaults to 1e-2): + The learning rate. + alpha (`float`, defaults to 0.99): + The alpha value is the decay rate of the squared gradients of the optimizer. + eps (`float`, defaults to 1e-8): + The epsilon value prevents division by zero in the optimizer. + weight_decay (`float`, defaults to 0.0): + The weight decay value for the optimizer. + momentum (`float`, defaults to 0): + The momentum value speeds up the optimizer by taking bigger steps. + centered (`bool`, defaults to `False`): + Whether the gradients are normalized by the variance. If `True`, it can help training at the expense of additional compute. + optim_bits (`int`, defaults to 32): + The number of bits of the optimizer state. + args (`object`, defaults to `None`): + An object with additional arguments. + min_8bit_size (`int`, defaults to 4096): + The minimum number of elements of the parameter tensors for 8-bit optimization. + """ + + if alpha == 0: + raise NotImplementedError("RMSprop with alpha==0.0 is not supported!") + if centered: + raise NotImplementedError("Centered RMSprop is not supported!") + super().__init__( + "rmsprop", + params, + lr, + (alpha, momentum), + eps, + weight_decay, + 32, + args, + min_8bit_size, + ) diff --git a/venv/lib/python3.11/site-packages/bitsandbytes/optim/sgd.py b/venv/lib/python3.11/site-packages/bitsandbytes/optim/sgd.py new file mode 100644 index 0000000000000000000000000000000000000000..75fc714744403f7776c5c11c096ebffe8acdbbf4 --- /dev/null +++ b/venv/lib/python3.11/site-packages/bitsandbytes/optim/sgd.py @@ -0,0 +1,152 @@ +# Copyright (c) Facebook, Inc. and its affiliates. +# +# This source code is licensed under the MIT license found in the +# LICENSE file in the root directory of this source tree. +from bitsandbytes.optim.optimizer import Optimizer1State + + +class SGD(Optimizer1State): + def __init__( + self, + params, + lr, + momentum=0, + dampening=0, + weight_decay=0, + nesterov=False, + optim_bits=32, + args=None, + min_8bit_size=4096, + ): + """ + Base SGD optimizer. + + Arguments: + params (`torch.tensor`): + The input parameters to optimize. + lr (`float`): + The learning rate. + momentum (`float`, defaults to 0): + The momentum value speeds up the optimizer by taking bigger steps. + dampening (`float`, defaults to 0): + The dampening value reduces the momentum of the optimizer. + weight_decay (`float`, defaults to 0.0): + The weight decay value for the optimizer. + nesterov (`bool`, defaults to `False`): + Whether to use Nesterov momentum. + optim_bits (`int`, defaults to 32): + The number of bits of the optimizer state. + args (`object`, defaults to `None`): + An object with additional arguments. + min_8bit_size (`int`, defaults to 4096): + The minimum number of elements of the parameter tensors for 8-bit optimization. + """ + if momentum == 0: + raise NotImplementedError("SGD without momentum is not supported!") + super().__init__( + "momentum", + params, + lr, + (momentum, dampening), + 0.0, + weight_decay, + optim_bits, + args, + min_8bit_size, + ) + + +class SGD8bit(Optimizer1State): + def __init__( + self, + params, + lr, + momentum=0, + dampening=0, + weight_decay=0, + nesterov=False, + args=None, + min_8bit_size=4096, + ): + """ + 8-bit SGD optimizer. + + Arguments: + params (`torch.tensor`): + The input parameters to optimize. + lr (`float`): + The learning rate. + momentum (`float`, defaults to 0): + The momentum value speeds up the optimizer by taking bigger steps. + dampening (`float`, defaults to 0): + The dampening value reduces the momentum of the optimizer. + weight_decay (`float`, defaults to 0.0): + The weight decay value for the optimizer. + nesterov (`bool`, defaults to `False`): + Whether to use Nesterov momentum. + args (`object`, defaults to `None`): + An object with additional arguments. + min_8bit_size (`int`, defaults to 4096): + The minimum number of elements of the parameter tensors for 8-bit optimization. + """ + if momentum == 0: + raise NotImplementedError("SGD without momentum is not supported!") + super().__init__( + "momentum", + params, + lr, + (momentum, dampening), + 0.0, + weight_decay, + 8, + args, + min_8bit_size, + ) + + +class SGD32bit(Optimizer1State): + def __init__( + self, + params, + lr, + momentum=0, + dampening=0, + weight_decay=0, + nesterov=False, + args=None, + min_8bit_size=4096, + ): + """ + 32-bit SGD optimizer. + + Arguments: + params (`torch.tensor`): + The input parameters to optimize. + lr (`float`): + The learning rate. + momentum (`float`, defaults to 0): + The momentum value speeds up the optimizer by taking bigger steps. + dampening (`float`, defaults to 0): + The dampening value reduces the momentum of the optimizer. + weight_decay (`float`, defaults to 0.0): + The weight decay value for the optimizer. + nesterov (`bool`, defaults to `False`): + Whether to use Nesterov momentum. + args (`object`, defaults to `None`): + An object with additional arguments. + min_8bit_size (`int`, defaults to 4096): + The minimum number of elements of the parameter tensors for 8-bit optimization. + """ + if momentum == 0: + raise NotImplementedError("SGD without momentum is not supported!") + super().__init__( + "momentum", + params, + lr, + (momentum, dampening), + 0.0, + weight_decay, + 32, + args, + min_8bit_size, + ) diff --git a/venv/lib/python3.11/site-packages/bitsandbytes/py.typed b/venv/lib/python3.11/site-packages/bitsandbytes/py.typed new file mode 100644 index 0000000000000000000000000000000000000000..e69de29bb2d1d6434b8b29ae775ad8c2e48c5391 diff --git a/venv/lib/python3.11/site-packages/bitsandbytes/utils.py b/venv/lib/python3.11/site-packages/bitsandbytes/utils.py new file mode 100644 index 0000000000000000000000000000000000000000..513baceab4ad3233909818864dd4fdf2df527f01 --- /dev/null +++ b/venv/lib/python3.11/site-packages/bitsandbytes/utils.py @@ -0,0 +1,208 @@ +import json +import logging +import shlex +import subprocess + +import torch + +logger = logging.getLogger(__name__) + + +def outlier_hook(module, input): + assert isinstance(module, torch.nn.Linear) + tracer = OutlierTracer.get_instance() + hvalue = tracer.get_hvalue(module.weight) + if hvalue not in tracer.hvalue2outlier_idx: + outlier_idx = find_outlier_dims(module.weight) + tracer.outliers.append(outlier_idx) + tracer.hvalues.append(hvalue) + if len(tracer.outliers) > 1: + # assign the current layer the outlier idx found from the weight + # of the previous linear layer + if tracer.outliers[-1].numel() > 0: + assert tracer.outliers[-1].max() < module.weight.shape[1] + tracer.hvalue2outlier_idx[hvalue] = tracer.outliers[-1] + + else: + # first layer, we cannot use the weight for outlier detection + # we follow a mixed approach: + # (1) zscore test of std of hidden dimension + # (2) magnitude > 6 test + merged = input[0].view(-1, input[0].shape[-1]) + # (1) zscore test of std of hidden dimension + outlier_idx = find_outlier_dims(merged, reduction_dim=1, zscore=3) + # (2) magnitude > 6 test + dims = (torch.abs(input[0]) > 6).sum(dim=list(range(len(input[0].shape) - 1))) + outlier_idx2 = torch.where(dims > 0)[0] + outlier_idx = torch.cat([outlier_idx, outlier_idx2]).unique() + tracer.hvalue2outlier_idx[hvalue] = outlier_idx + else: + for hook in tracer.hooks: + hook.remove() + + +class OutlierTracer: + _instance = None + + def __init__(self): + raise RuntimeError("Call get_instance() instead") + + def initialize(self, model): + self.last_w = None + self.current_outlier_dims = None + self.hvalues = [] + self.outliers = [] + self.hvalue2outlier_idx = {} + self.initialized = True + self.hooks = [] + + for n, m in model.named_modules(): + if isinstance(m, torch.nn.Linear): + self.hooks.append(m.register_forward_pre_hook(outlier_hook)) + + def is_initialized(self): + return getattr(self, "initialized", False) + + def get_hvalue(self, weight): + return weight.data.storage().data_ptr() + + def get_outliers(self, weight): + if not self.is_initialized(): + logger.warning("Outlier tracer is not initialized...") + return None + hvalue = self.get_hvalue(weight) + if hvalue in self.hvalue2outlier_idx: + return self.hvalue2outlier_idx[hvalue] + else: + return None + + @classmethod + def get_instance(cls): + if cls._instance is None: + cls._instance = cls.__new__(cls) + return cls._instance + + +def find_outlier_dims(weight, reduction_dim=0, zscore=4.0, topk=None, rdm=False): + if rdm: + return torch.randint(0, weight.shape[1], size=(topk,), device=weight.device).long() + + std = weight.std(reduction_dim) + stdm = std.mean() + stdstd = std.std() + + zstd = (std - stdm) / stdstd + + if topk is not None: + _, idx = torch.topk(std.abs(), k=topk, dim=0) + else: + idx = torch.where(zstd > zscore)[0] + + return idx + + +def execute_and_return(command_string: str) -> tuple[str, str]: + def _decode(subprocess_err_out_tuple): + return tuple(to_decode.decode("UTF-8").strip() for to_decode in subprocess_err_out_tuple) + + def execute_and_return_decoded_std_streams(command_string): + return _decode( + subprocess.Popen( + shlex.split(command_string), + stdout=subprocess.PIPE, + stderr=subprocess.PIPE, + ).communicate(), + ) + + std_out, std_err = execute_and_return_decoded_std_streams(command_string) + return std_out, std_err + + +def replace_linear( + model, + linear_replacement, + skip_modules=("lm_head",), + copy_weights=False, + post_processing_function=None, +): + """ + Replace linear modules with a new Linear module. + Parameters: + model (`torch.nn.Module`): + Input model or `torch.nn.Module` as the function is run recursively. + linear_replacement (`torch.nn.Module`): + The linear module that replaces the old one. Only expects standard arguments. + If other arguments need to be passed, use a lambda. + skip_modules (`List[str]`, *optional*, defaults to `lm_head`): + List of modules names not to convert. Defaults to `lm_head`. + copy_weights (`bool`): + Copy the weights from the old linear module to the new one + post_processing_function (`str`): + A function name of the replacement linear class that is called + after processing. + """ + for name, module in model.named_children(): + if len(list(module.children())) > 0: + replace_linear(module, linear_replacement, skip_modules, copy_weights, post_processing_function) + + if isinstance(module, torch.nn.Linear) and name not in skip_modules: + old_module = model._modules[name] + model._modules[name] = linear_replacement( + module.in_features, + module.out_features, + module.bias is not None, + ) + if copy_weights: + model._modules[name].weight = old_module.weight + model._modules[name].bias = old_module.bias + + if post_processing_function is not None: + func = getattr(module, post_processing_function, None) + if func is not None: + func(module) + return model + + +def pack_dict_to_tensor(source_dict): + """ + Pack a dictionary into a torch tensor for storing quant_state items in state_dict. + + Parameters: + - source_dict: The dictionary to be packed. + + Returns: + A torch tensor containing the packed data. + """ + json_str = json.dumps(source_dict) + json_bytes = json_str.encode("utf-8") + tensor_data = torch.tensor(list(json_bytes), dtype=torch.uint8) + + return tensor_data + + +def unpack_tensor_to_dict(tensor_data): + """ + Unpack a torch tensor into a Python dictionary. + + Parameters: + - tensor_data: The torch tensor containing the packed data. + + Returns: + A Python dictionary containing the unpacked data. + """ + json_bytes = bytes(tensor_data.cpu().numpy()) + json_str = json_bytes.decode("utf-8") + unpacked_dict = json.loads(json_str) + + return unpacked_dict + + +LINEAR_8BIT_WEIGHTS_FORMAT_MAPPING = {"row": 0, "col32": 1, "col_turing": 2, "col_ampere": 3} +INVERSE_LINEAR_8BIT_WEIGHTS_FORMAT_MAPPING = {val: name for (name, val) in LINEAR_8BIT_WEIGHTS_FORMAT_MAPPING.items()} + + +def sync_gpu(t: torch.Tensor): + if t.device.type == "cuda": + torch.cuda.synchronize() + elif t.device.type == "xpu": + torch.xpu.synchronize() diff --git a/venv/lib/python3.11/site-packages/brotli-1.2.0.dist-info/INSTALLER b/venv/lib/python3.11/site-packages/brotli-1.2.0.dist-info/INSTALLER new file mode 100644 index 0000000000000000000000000000000000000000..a1b589e38a32041e49332e5e81c2d363dc418d68 --- /dev/null +++ b/venv/lib/python3.11/site-packages/brotli-1.2.0.dist-info/INSTALLER @@ -0,0 +1 @@ +pip diff --git a/venv/lib/python3.11/site-packages/brotli-1.2.0.dist-info/METADATA b/venv/lib/python3.11/site-packages/brotli-1.2.0.dist-info/METADATA new file mode 100644 index 0000000000000000000000000000000000000000..adb3f97dc86b6a6f78c5aa6c8d68456859a98c60 --- /dev/null +++ b/venv/lib/python3.11/site-packages/brotli-1.2.0.dist-info/METADATA @@ -0,0 +1,158 @@ +Metadata-Version: 2.4 +Name: brotli +Version: 1.2.0 +Summary: Python bindings for the Brotli compression library +Home-page: https://github.com/google/brotli +Author: The Brotli Authors +License: MIT +Platform: Posix +Platform: MacOS X +Platform: Windows +Classifier: Development Status :: 4 - Beta +Classifier: Environment :: Console +Classifier: Intended Audience :: Developers +Classifier: Operating System :: MacOS :: MacOS X +Classifier: Operating System :: Microsoft :: Windows +Classifier: Operating System :: POSIX :: Linux +Classifier: Programming Language :: C +Classifier: Programming Language :: C++ +Classifier: Programming Language :: Python +Classifier: Programming Language :: Python :: 2 +Classifier: Programming Language :: Python :: 2.7 +Classifier: Programming Language :: Python :: 3 +Classifier: Programming Language :: Python :: 3.3 +Classifier: Programming Language :: Python :: 3.4 +Classifier: Programming Language :: Python :: 3.5 +Classifier: Programming Language :: Unix Shell +Classifier: Topic :: Software Development :: Libraries +Classifier: Topic :: Software Development :: Libraries :: Python Modules +Classifier: Topic :: System :: Archiving +Classifier: Topic :: System :: Archiving :: Compression +Classifier: Topic :: Text Processing :: Fonts +Classifier: Topic :: Utilities +Description-Content-Type: text/markdown +License-File: LICENSE +Dynamic: author +Dynamic: classifier +Dynamic: description +Dynamic: description-content-type +Dynamic: home-page +Dynamic: license +Dynamic: license-file +Dynamic: platform +Dynamic: summary + +

+ GitHub Actions Build Status + Fuzzing Status +

+

Brotli

+ +### Introduction + +Brotli is a generic-purpose lossless compression algorithm that compresses data +using a combination of a modern variant of the LZ77 algorithm, Huffman coding +and 2nd order context modeling, with a compression ratio comparable to the best +currently available general-purpose compression methods. It is similar in speed +with deflate but offers more dense compression. + +The specification of the Brotli Compressed Data Format is defined in +[RFC 7932](https://datatracker.ietf.org/doc/html/rfc7932). + +Brotli is open-sourced under the MIT License, see the LICENSE file. + +> **Please note:** brotli is a "stream" format; it does not contain +> meta-information, like checksums or uncompressed data length. It is possible +> to modify "raw" ranges of the compressed stream and the decoder will not +> notice that. + +### Installation + +In most Linux distributions, installing `brotli` is just a matter of using +the package management system. For example in Debian-based distributions: +`apt install brotli` will install `brotli`. On MacOS, you can use +[Homebrew](https://brew.sh/): `brew install brotli`. + +[![brotli packaging status](https://repology.org/badge/vertical-allrepos/brotli.svg?exclude_unsupported=1&columns=3&exclude_sources=modules,site&header=brotli%20packaging%20status)](https://repology.org/project/brotli/versions) + +Of course you can also build brotli from sources. + +### Build instructions + +#### Vcpkg + +You can download and install brotli using the +[vcpkg](https://github.com/Microsoft/vcpkg/) dependency manager: + + git clone https://github.com/Microsoft/vcpkg.git + cd vcpkg + ./bootstrap-vcpkg.sh + ./vcpkg integrate install + ./vcpkg install brotli + +The brotli port in vcpkg is kept up to date by Microsoft team members and +community contributors. If the version is out of date, please [create an issue +or pull request](https://github.com/Microsoft/vcpkg) on the vcpkg repository. + +#### Bazel + +See [Bazel](https://www.bazel.build/) + +#### CMake + +The basic commands to build and install brotli are: + + $ mkdir out && cd out + $ cmake -DCMAKE_BUILD_TYPE=Release -DCMAKE_INSTALL_PREFIX=./installed .. + $ cmake --build . --config Release --target install + +You can use other [CMake](https://cmake.org/) configuration. + +#### Python + +To install the latest release of the Python module, run the following: + + $ pip install brotli + +To install the tip-of-the-tree version, run: + + $ pip install --upgrade git+https://github.com/google/brotli + +See the [Python readme](python/README.md) for more details on installing +from source, development, and testing. + +### Contributing + +We glad to answer/library related questions in +[brotli mailing list](https://groups.google.com/g/brotli). + +Regular issues / feature requests should be reported in +[issue tracker](https://github.com/google/brotli/issues). + +For reporting vulnerability please read [SECURITY](SECURITY.md). + +For contributing changes please read [CONTRIBUTING](CONTRIBUTING.md). + +### Benchmarks +* [Squash Compression Benchmark](https://quixdb.github.io/squash-benchmark/) / [Unstable Squash Compression Benchmark](https://quixdb.github.io/squash-benchmark/unstable/) +* [Large Text Compression Benchmark](https://mattmahoney.net/dc/text.html) +* [Lzturbo Benchmark](https://sites.google.com/site/powturbo/home/benchmark) + +### Related projects +> **Disclaimer:** Brotli authors take no responsibility for the third party projects mentioned in this section. + +Independent [decoder](https://github.com/madler/brotli) implementation +by Mark Adler, based entirely on format specification. + +JavaScript port of brotli [decoder](https://github.com/devongovett/brotli.js). +Could be used directly via `npm install brotli` + +Hand ported [decoder / encoder](https://github.com/dominikhlbg/BrotliHaxe) +in haxe by Dominik Homberger. +Output source code: JavaScript, PHP, Python, Java and C# + +7Zip [plugin](https://github.com/mcmilk/7-Zip-Zstd) + +Dart compression framework with +[fast FFI-based Brotli implementation](https://pub.dev/documentation/es_compression/latest/brotli/) +with ready-to-use prebuilt binaries for Win/Linux/Mac diff --git a/venv/lib/python3.11/site-packages/brotli-1.2.0.dist-info/RECORD b/venv/lib/python3.11/site-packages/brotli-1.2.0.dist-info/RECORD new file mode 100644 index 0000000000000000000000000000000000000000..99fd7f30715461e20da972ea7618a73b7aa3c8e7 --- /dev/null +++ b/venv/lib/python3.11/site-packages/brotli-1.2.0.dist-info/RECORD @@ -0,0 +1,9 @@ +__pycache__/brotli.cpython-311.pyc,, +_brotli.cpython-311-x86_64-linux-gnu.so,sha256=oNkoKKdbC8N6n3NI5g1V4MFmzEX8vlGAiWeInBs6jxs,5173360 +brotli-1.2.0.dist-info/INSTALLER,sha256=zuuue4knoyJ-UwPPXg8fezS7VCrXJQrAP7zeNuwvFQg,4 +brotli-1.2.0.dist-info/METADATA,sha256=-dEtUYS1CQsUay5fDWKTFSGysUNepGZDOiObt8QfyWI,6116 +brotli-1.2.0.dist-info/RECORD,, +brotli-1.2.0.dist-info/WHEEL,sha256=_CFvICYDmZlAYHt8L7Zn3n-BGLj8dkZLQPp22Piy5JE,151 +brotli-1.2.0.dist-info/licenses/LICENSE,sha256=PRgACONpIqTo2uwRw0x68mT-1ZYtB5JK6pKMOOhmPJQ,1084 +brotli-1.2.0.dist-info/top_level.txt,sha256=gsS54HrhO3ZveFxeMrKo_7qH4Sm4TbQ7jGLVBEqJ4NI,15 +brotli.py,sha256=gTYQvw10ppmNe0fZEuiJLDiW5urBnLeyJXXgT8KUtj8,1970 diff --git a/venv/lib/python3.11/site-packages/brotli-1.2.0.dist-info/WHEEL b/venv/lib/python3.11/site-packages/brotli-1.2.0.dist-info/WHEEL new file mode 100644 index 0000000000000000000000000000000000000000..7cc1bea2cb3d38c1dba6db468730cd8fd970d117 --- /dev/null +++ b/venv/lib/python3.11/site-packages/brotli-1.2.0.dist-info/WHEEL @@ -0,0 +1,6 @@ +Wheel-Version: 1.0 +Generator: setuptools (80.9.0) +Root-Is-Purelib: false +Tag: cp311-cp311-manylinux_2_17_x86_64 +Tag: cp311-cp311-manylinux2014_x86_64 + diff --git a/venv/lib/python3.11/site-packages/brotli-1.2.0.dist-info/licenses/LICENSE b/venv/lib/python3.11/site-packages/brotli-1.2.0.dist-info/licenses/LICENSE new file mode 100644 index 0000000000000000000000000000000000000000..33b7cdd2dbaeddce1e35aa1a13f63d71154dc42f --- /dev/null +++ b/venv/lib/python3.11/site-packages/brotli-1.2.0.dist-info/licenses/LICENSE @@ -0,0 +1,19 @@ +Copyright (c) 2009, 2010, 2013-2016 by the Brotli Authors. + +Permission is hereby granted, free of charge, to any person obtaining a copy +of this software and associated documentation files (the "Software"), to deal +in the Software without restriction, including without limitation the rights +to use, copy, modify, merge, publish, distribute, sublicense, and/or sell +copies of the Software, and to permit persons to whom the Software is +furnished to do so, subject to the following conditions: + +The above copyright notice and this permission notice shall be included in +all copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN +THE SOFTWARE. diff --git a/venv/lib/python3.11/site-packages/brotli-1.2.0.dist-info/top_level.txt b/venv/lib/python3.11/site-packages/brotli-1.2.0.dist-info/top_level.txt new file mode 100644 index 0000000000000000000000000000000000000000..a111e9cca6fb4d3696239f5bb98bee20cb2914e7 --- /dev/null +++ b/venv/lib/python3.11/site-packages/brotli-1.2.0.dist-info/top_level.txt @@ -0,0 +1,2 @@ +_brotli +brotli diff --git a/venv/lib/python3.11/site-packages/brotli.py b/venv/lib/python3.11/site-packages/brotli.py new file mode 100644 index 0000000000000000000000000000000000000000..4787d63b29c72d55ba6b1adacd3129df8886bb34 --- /dev/null +++ b/venv/lib/python3.11/site-packages/brotli.py @@ -0,0 +1,57 @@ +# Copyright 2016 The Brotli Authors. All rights reserved. +# +# Distributed under MIT license. +# See file LICENSE for detail or copy at https://opensource.org/licenses/MIT + +"""Functions to compress and decompress data using the Brotli library.""" + +import _brotli + +# The library version. +version = __version__ = _brotli.__version__ + +# The compression mode. +MODE_GENERIC = _brotli.MODE_GENERIC +MODE_TEXT = _brotli.MODE_TEXT +MODE_FONT = _brotli.MODE_FONT + +# The Compressor object. +Compressor = _brotli.Compressor + +# The Decompressor object. +Decompressor = _brotli.Decompressor + +# Compress a byte string. +def compress(string, mode=MODE_GENERIC, quality=11, lgwin=22, lgblock=0): + """Compress a byte string. + + Args: + string (bytes): The input data. + mode (int, optional): The compression mode; value 0 should be used for + generic input (MODE_GENERIC); value 1 might be beneficial for UTF-8 text + input (MODE_TEXT); value 2 tunes encoder for WOFF 2.0 data (MODE_FONT). + Defaults to 0. + quality (int, optional): Controls the compression-speed vs compression- + density tradeoff. The higher the quality, the slower the compression. + Range is 0 to 11. Defaults to 11. + lgwin (int, optional): Base 2 logarithm of the sliding window size. Range + is 10 to 24. Defaults to 22. + lgblock (int, optional): Base 2 logarithm of the maximum input block size. + Range is 16 to 24. If set to 0, the value will be set based on the + quality. Defaults to 0. + + Returns: + The compressed byte string. + + Raises: + brotli.error: If arguments are invalid, or compressor fails. + """ + compressor = Compressor(mode=mode, quality=quality, lgwin=lgwin, + lgblock=lgblock) + return compressor.process(string) + compressor.finish() + +# Decompress a compressed byte string. +decompress = _brotli.decompress + +# Raised if compression or decompression fails. +error = _brotli.error diff --git a/venv/lib/python3.11/site-packages/certifi-2026.7.22.dist-info/INSTALLER b/venv/lib/python3.11/site-packages/certifi-2026.7.22.dist-info/INSTALLER new file mode 100644 index 0000000000000000000000000000000000000000..a1b589e38a32041e49332e5e81c2d363dc418d68 --- /dev/null +++ b/venv/lib/python3.11/site-packages/certifi-2026.7.22.dist-info/INSTALLER @@ -0,0 +1 @@ +pip diff --git a/venv/lib/python3.11/site-packages/certifi-2026.7.22.dist-info/METADATA b/venv/lib/python3.11/site-packages/certifi-2026.7.22.dist-info/METADATA new file mode 100644 index 0000000000000000000000000000000000000000..eb460c2ca89630f6285f4690476e4e04daca9b0e --- /dev/null +++ b/venv/lib/python3.11/site-packages/certifi-2026.7.22.dist-info/METADATA @@ -0,0 +1,78 @@ +Metadata-Version: 2.4 +Name: certifi +Version: 2026.7.22 +Summary: Python package for providing Mozilla's CA Bundle. +Home-page: https://github.com/certifi/python-certifi +Author: Kenneth Reitz +Author-email: me@kennethreitz.com +License: MPL-2.0 +Project-URL: Source, https://github.com/certifi/python-certifi +Classifier: Development Status :: 5 - Production/Stable +Classifier: Intended Audience :: Developers +Classifier: License :: OSI Approved :: Mozilla Public License 2.0 (MPL 2.0) +Classifier: Natural Language :: English +Classifier: Programming Language :: Python +Classifier: Programming Language :: Python :: 3 +Classifier: Programming Language :: Python :: 3 :: Only +Classifier: Programming Language :: Python :: 3.7 +Classifier: Programming Language :: Python :: 3.8 +Classifier: Programming Language :: Python :: 3.9 +Classifier: Programming Language :: Python :: 3.10 +Classifier: Programming Language :: Python :: 3.11 +Classifier: Programming Language :: Python :: 3.12 +Classifier: Programming Language :: Python :: 3.13 +Classifier: Programming Language :: Python :: 3.14 +Requires-Python: >=3.7 +License-File: LICENSE +Dynamic: author +Dynamic: author-email +Dynamic: classifier +Dynamic: description +Dynamic: home-page +Dynamic: license +Dynamic: license-file +Dynamic: project-url +Dynamic: requires-python +Dynamic: summary + +Certifi: Python SSL Certificates +================================ + +Certifi provides Mozilla's carefully curated collection of Root Certificates for +validating the trustworthiness of SSL certificates while verifying the identity +of TLS hosts. It has been extracted from the `Requests`_ project. + +Installation +------------ + +``certifi`` is available on PyPI. Simply install it with ``pip``:: + + $ pip install certifi + +Usage +----- + +To reference the installed certificate authority (CA) bundle, you can use the +built-in function:: + + >>> import certifi + + >>> certifi.where() + '/usr/local/lib/python3.7/site-packages/certifi/cacert.pem' + +Or from the command line:: + + $ python -m certifi + /usr/local/lib/python3.7/site-packages/certifi/cacert.pem + +Enjoy! + +.. _`Requests`: https://requests.readthedocs.io/en/latest/ + +Addition/Removal of Certificates +-------------------------------- + +Certifi does not support any addition/removal or other modification of the +CA trust store content. This project is intended to provide a reliable and +highly portable root of trust to python deployments. Look to upstream projects +for methods to use alternate trust. diff --git a/venv/lib/python3.11/site-packages/certifi-2026.7.22.dist-info/RECORD b/venv/lib/python3.11/site-packages/certifi-2026.7.22.dist-info/RECORD new file mode 100644 index 0000000000000000000000000000000000000000..c06242e7ef82fcb26f698aaeef29de59d5a63a6d --- /dev/null +++ b/venv/lib/python3.11/site-packages/certifi-2026.7.22.dist-info/RECORD @@ -0,0 +1,18 @@ +certifi-2026.7.22.dist-info/INSTALLER,sha256=zuuue4knoyJ-UwPPXg8fezS7VCrXJQrAP7zeNuwvFQg,4 +certifi-2026.7.22.dist-info/METADATA,sha256=71rxY4-7I2dqw8V3ffz8LNnDSP5Bcu1bo9J3ZVskgJA,2474 +certifi-2026.7.22.dist-info/RECORD,, +certifi-2026.7.22.dist-info/WHEEL,sha256=K260EYznzXsJYBQGqmI8VTxEdiZYNvDZwW9cBh9-_MA,91 +certifi-2026.7.22.dist-info/licenses/LICENSE,sha256=6TcW2mucDVpKHfYP5pWzcPBpVgPSH2-D8FPkLPwQyvc,989 +certifi-2026.7.22.dist-info/top_level.txt,sha256=KMu4vUCfsjLrkPbSNdgdekS-pVJzBAJFO__nI8NF6-U,8 +certifi/__init__.py,sha256=elLl9CBfmz0SoxiYzqp-P2g30ZzCMHALyuGp2R0UhsE,94 +certifi/__main__.py,sha256=xBBoj905TUWBLRGANOcf7oi6e-3dMP4cEoG9OyMs11g,243 +certifi/__pycache__/__init__.cpython-311.pyc,, +certifi/__pycache__/__main__.cpython-311.pyc,, +certifi/__pycache__/core.cpython-311.pyc,, +certifi/cacert.pem,sha256=nMKndLUZjc_xTZvh5mCR9TiXXYZ84Cmpa84VpV39cw8,240216 +certifi/core.py,sha256=XFXycndG5pf37ayeF8N32HUuDafsyhkVMbO4BAPWHa0,3394 +certifi/py.typed,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0 +certifi/tests/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0 +certifi/tests/__pycache__/__init__.cpython-311.pyc,, +certifi/tests/__pycache__/test_certify.cpython-311.pyc,, +certifi/tests/test_certify.py,sha256=fBedHt839-kSsTNmNzX7RsYzjV0OX4kV0Rw7wofSJ7g,467 diff --git a/venv/lib/python3.11/site-packages/certifi-2026.7.22.dist-info/WHEEL b/venv/lib/python3.11/site-packages/certifi-2026.7.22.dist-info/WHEEL new file mode 100644 index 0000000000000000000000000000000000000000..1d472b6c22838de58d1c3c0dd2c795a5cde9e415 --- /dev/null +++ b/venv/lib/python3.11/site-packages/certifi-2026.7.22.dist-info/WHEEL @@ -0,0 +1,5 @@ +Wheel-Version: 1.0 +Generator: setuptools (83.0.0) +Root-Is-Purelib: true +Tag: py3-none-any + diff --git a/venv/lib/python3.11/site-packages/certifi-2026.7.22.dist-info/licenses/LICENSE b/venv/lib/python3.11/site-packages/certifi-2026.7.22.dist-info/licenses/LICENSE new file mode 100644 index 0000000000000000000000000000000000000000..62b076cdee58ec8f34034141ba0befd9015b0c7e --- /dev/null +++ b/venv/lib/python3.11/site-packages/certifi-2026.7.22.dist-info/licenses/LICENSE @@ -0,0 +1,20 @@ +This package contains a modified version of ca-bundle.crt: + +ca-bundle.crt -- Bundle of CA Root Certificates + +This is a bundle of X.509 certificates of public Certificate Authorities +(CA). These were automatically extracted from Mozilla's root certificates +file (certdata.txt). This file can be found in the mozilla source tree: +https://hg.mozilla.org/mozilla-central/file/tip/security/nss/lib/ckfw/builtins/certdata.txt +It contains the certificates in PEM format and therefore +can be directly used with curl / libcurl / php_curl, or with +an Apache+mod_ssl webserver for SSL client authentication. +Just configure this file as the SSLCACertificateFile.# + +***** BEGIN LICENSE BLOCK ***** +This Source Code Form is subject to the terms of the Mozilla Public License, +v. 2.0. If a copy of the MPL was not distributed with this file, You can obtain +one at http://mozilla.org/MPL/2.0/. + +***** END LICENSE BLOCK ***** +@(#) $RCSfile: certdata.txt,v $ $Revision: 1.80 $ $Date: 2011/11/03 15:11:58 $ diff --git a/venv/lib/python3.11/site-packages/certifi-2026.7.22.dist-info/top_level.txt b/venv/lib/python3.11/site-packages/certifi-2026.7.22.dist-info/top_level.txt new file mode 100644 index 0000000000000000000000000000000000000000..963eac530b9bc28d704d1bc410299c68e3216d4d --- /dev/null +++ b/venv/lib/python3.11/site-packages/certifi-2026.7.22.dist-info/top_level.txt @@ -0,0 +1 @@ +certifi diff --git a/venv/lib/python3.11/site-packages/certifi/__init__.py b/venv/lib/python3.11/site-packages/certifi/__init__.py new file mode 100644 index 0000000000000000000000000000000000000000..66dae9e5fc75868817e667eadeca1166c6ff5eed --- /dev/null +++ b/venv/lib/python3.11/site-packages/certifi/__init__.py @@ -0,0 +1,4 @@ +from .core import contents, where + +__all__ = ["contents", "where"] +__version__ = "2026.07.22" diff --git a/venv/lib/python3.11/site-packages/certifi/__main__.py b/venv/lib/python3.11/site-packages/certifi/__main__.py new file mode 100644 index 0000000000000000000000000000000000000000..8945b5da857f4a7dec2b84f1225f012f6098418c --- /dev/null +++ b/venv/lib/python3.11/site-packages/certifi/__main__.py @@ -0,0 +1,12 @@ +import argparse + +from certifi import contents, where + +parser = argparse.ArgumentParser() +parser.add_argument("-c", "--contents", action="store_true") +args = parser.parse_args() + +if args.contents: + print(contents()) +else: + print(where()) diff --git a/venv/lib/python3.11/site-packages/certifi/cacert.pem b/venv/lib/python3.11/site-packages/certifi/cacert.pem new file mode 100644 index 0000000000000000000000000000000000000000..9a40f439e0d77f3733b76489ae3bb42eaaf021d6 --- /dev/null +++ b/venv/lib/python3.11/site-packages/certifi/cacert.pem @@ -0,0 +1,3959 @@ + +# Issuer: CN=COMODO ECC Certification Authority O=COMODO CA Limited +# Subject: CN=COMODO ECC Certification Authority O=COMODO CA Limited +# Label: "COMODO ECC Certification Authority" +# Serial: 41578283867086692638256921589707938090 +# MD5 Fingerprint: 7c:62:ff:74:9d:31:53:5e:68:4a:d5:78:aa:1e:bf:23 +# SHA1 Fingerprint: 9f:74:4e:9f:2b:4d:ba:ec:0f:31:2c:50:b6:56:3b:8e:2d:93:c3:11 +# SHA256 Fingerprint: 17:93:92:7a:06:14:54:97:89:ad:ce:2f:8f:34:f7:f0:b6:6d:0f:3a:e3:a3:b8:4d:21:ec:15:db:ba:4f:ad:c7 +-----BEGIN CERTIFICATE----- +MIICiTCCAg+gAwIBAgIQH0evqmIAcFBUTAGem2OZKjAKBggqhkjOPQQDAzCBhTEL +MAkGA1UEBhMCR0IxGzAZBgNVBAgTEkdyZWF0ZXIgTWFuY2hlc3RlcjEQMA4GA1UE +BxMHU2FsZm9yZDEaMBgGA1UEChMRQ09NT0RPIENBIExpbWl0ZWQxKzApBgNVBAMT +IkNPTU9ETyBFQ0MgQ2VydGlmaWNhdGlvbiBBdXRob3JpdHkwHhcNMDgwMzA2MDAw +MDAwWhcNMzgwMTE4MjM1OTU5WjCBhTELMAkGA1UEBhMCR0IxGzAZBgNVBAgTEkdy +ZWF0ZXIgTWFuY2hlc3RlcjEQMA4GA1UEBxMHU2FsZm9yZDEaMBgGA1UEChMRQ09N +T0RPIENBIExpbWl0ZWQxKzApBgNVBAMTIkNPTU9ETyBFQ0MgQ2VydGlmaWNhdGlv +biBBdXRob3JpdHkwdjAQBgcqhkjOPQIBBgUrgQQAIgNiAAQDR3svdcmCFYX7deSR +FtSrYpn1PlILBs5BAH+X4QokPB0BBO490o0JlwzgdeT6+3eKKvUDYEs2ixYjFq0J +cfRK9ChQtP6IHG4/bC8vCVlbpVsLM5niwz2J+Wos77LTBumjQjBAMB0GA1UdDgQW +BBR1cacZSBm8nZ3qQUfflMRId5nTeTAOBgNVHQ8BAf8EBAMCAQYwDwYDVR0TAQH/ +BAUwAwEB/zAKBggqhkjOPQQDAwNoADBlAjEA7wNbeqy3eApyt4jf/7VGFAkK+qDm +fQjGGoe9GKhzvSbKYAydzpmfz1wPMOG+FDHqAjAU9JM8SaczepBGR7NjfRObTrdv +GDeAU/7dIOA1mjbRxwG55tzd8/8dLDoWV9mSOdY= +-----END CERTIFICATE----- + +# Issuer: CN=NetLock Arany (Class Gold) F\u0151tan\xfas\xedtv\xe1ny O=NetLock Kft. OU=Tan\xfas\xedtv\xe1nykiad\xf3k (Certification Services) +# Subject: CN=NetLock Arany (Class Gold) F\u0151tan\xfas\xedtv\xe1ny O=NetLock Kft. OU=Tan\xfas\xedtv\xe1nykiad\xf3k (Certification Services) +# Label: "NetLock Arany (Class Gold) F\u0151tan\xfas\xedtv\xe1ny" +# Serial: 80544274841616 +# MD5 Fingerprint: c5:a1:b7:ff:73:dd:d6:d7:34:32:18:df:fc:3c:ad:88 +# SHA1 Fingerprint: 06:08:3f:59:3f:15:a1:04:a0:69:a4:6b:a9:03:d0:06:b7:97:09:91 +# SHA256 Fingerprint: 6c:61:da:c3:a2:de:f0:31:50:6b:e0:36:d2:a6:fe:40:19:94:fb:d1:3d:f9:c8:d4:66:59:92:74:c4:46:ec:98 +-----BEGIN CERTIFICATE----- +MIIEFTCCAv2gAwIBAgIGSUEs5AAQMA0GCSqGSIb3DQEBCwUAMIGnMQswCQYDVQQG +EwJIVTERMA8GA1UEBwwIQnVkYXBlc3QxFTATBgNVBAoMDE5ldExvY2sgS2Z0LjE3 +MDUGA1UECwwuVGFuw7pzw610dsOhbnlraWFkw7NrIChDZXJ0aWZpY2F0aW9uIFNl +cnZpY2VzKTE1MDMGA1UEAwwsTmV0TG9jayBBcmFueSAoQ2xhc3MgR29sZCkgRsWR +dGFuw7pzw610dsOhbnkwHhcNMDgxMjExMTUwODIxWhcNMjgxMjA2MTUwODIxWjCB +pzELMAkGA1UEBhMCSFUxETAPBgNVBAcMCEJ1ZGFwZXN0MRUwEwYDVQQKDAxOZXRM +b2NrIEtmdC4xNzA1BgNVBAsMLlRhbsO6c8OtdHbDoW55a2lhZMOzayAoQ2VydGlm +aWNhdGlvbiBTZXJ2aWNlcykxNTAzBgNVBAMMLE5ldExvY2sgQXJhbnkgKENsYXNz +IEdvbGQpIEbFkXRhbsO6c8OtdHbDoW55MIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8A +MIIBCgKCAQEAxCRec75LbRTDofTjl5Bu0jBFHjzuZ9lk4BqKf8owyoPjIMHj9DrT +lF8afFttvzBPhCf2nx9JvMaZCpDyD/V/Q4Q3Y1GLeqVw/HpYzY6b7cNGbIRwXdrz +AZAj/E4wqX7hJ2Pn7WQ8oLjJM2P+FpD/sLj916jAwJRDC7bVWaaeVtAkH3B5r9s5 +VA1lddkVQZQBr17s9o3x/61k/iCa11zr/qYfCGSji3ZVrR47KGAuhyXoqq8fxmRG +ILdwfzzeSNuWU7c5d+Qa4scWhHaXWy+7GRWF+GmF9ZmnqfI0p6m2pgP8b4Y9VHx2 +BJtr+UBdADTHLpl1neWIA6pN+APSQnbAGwIDAKiLo0UwQzASBgNVHRMBAf8ECDAG +AQH/AgEEMA4GA1UdDwEB/wQEAwIBBjAdBgNVHQ4EFgQUzPpnk/C2uNClwB7zU/2M +U9+D15YwDQYJKoZIhvcNAQELBQADggEBAKt/7hwWqZw8UQCgwBEIBaeZ5m8BiFRh +bvG5GK1Krf6BQCOUL/t1fC8oS2IkgYIL9WHxHG64YTjrgfpioTtaYtOUZcTh5m2C ++C8lcLIhJsFyUR+MLMOEkMNaj7rP9KdlpeuY0fsFskZ1FSNqb4VjMIDw1Z4fKRzC +bLBQWV2QWzuoDTDPv31/zvGdg73JRm4gpvlhUbohL3u+pRVjodSVh/GeufOJ8z2F +uLjbvrW5KfnaNwUASZQDhETnv0Mxz3WLJdH0pmT1kvarBes96aULNmLazAZfNou2 +XjG4Kvte9nHfRCaexOYNkbQudZWAUWpLMKawYqGT8ZvYzsRjdT9ZR7E= +-----END CERTIFICATE----- + +# Issuer: CN=Microsec e-Szigno Root CA 2009 O=Microsec Ltd. +# Subject: CN=Microsec e-Szigno Root CA 2009 O=Microsec Ltd. +# Label: "Microsec e-Szigno Root CA 2009" +# Serial: 14014712776195784473 +# MD5 Fingerprint: f8:49:f4:03:bc:44:2d:83:be:48:69:7d:29:64:fc:b1 +# SHA1 Fingerprint: 89:df:74:fe:5c:f4:0f:4a:80:f9:e3:37:7d:54:da:91:e1:01:31:8e +# SHA256 Fingerprint: 3c:5f:81:fe:a5:fa:b8:2c:64:bf:a2:ea:ec:af:cd:e8:e0:77:fc:86:20:a7:ca:e5:37:16:3d:f3:6e:db:f3:78 +-----BEGIN CERTIFICATE----- +MIIECjCCAvKgAwIBAgIJAMJ+QwRORz8ZMA0GCSqGSIb3DQEBCwUAMIGCMQswCQYD +VQQGEwJIVTERMA8GA1UEBwwIQnVkYXBlc3QxFjAUBgNVBAoMDU1pY3Jvc2VjIEx0 +ZC4xJzAlBgNVBAMMHk1pY3Jvc2VjIGUtU3ppZ25vIFJvb3QgQ0EgMjAwOTEfMB0G +CSqGSIb3DQEJARYQaW5mb0BlLXN6aWduby5odTAeFw0wOTA2MTYxMTMwMThaFw0y +OTEyMzAxMTMwMThaMIGCMQswCQYDVQQGEwJIVTERMA8GA1UEBwwIQnVkYXBlc3Qx +FjAUBgNVBAoMDU1pY3Jvc2VjIEx0ZC4xJzAlBgNVBAMMHk1pY3Jvc2VjIGUtU3pp +Z25vIFJvb3QgQ0EgMjAwOTEfMB0GCSqGSIb3DQEJARYQaW5mb0BlLXN6aWduby5o +dTCCASIwDQYJKoZIhvcNAQEBBQADggEPADCCAQoCggEBAOn4j/NjrdqG2KfgQvvP +kd6mJviZpWNwrZuuyjNAfW2WbqEORO7hE52UQlKavXWFdCyoDh2Tthi3jCyoz/tc +cbna7P7ofo/kLx2yqHWH2Leh5TvPmUpG0IMZfcChEhyVbUr02MelTTMuhTlAdX4U +fIASmFDHQWe4oIBhVKZsTh/gnQ4H6cm6M+f+wFUoLAKApxn1ntxVUwOXewdI/5n7 +N4okxFnMUBBjjqqpGrCEGob5X7uxUG6k0QrM1XF+H6cbfPVTbiJfyyvm1HxdrtbC +xkzlBQHZ7Vf8wSN5/PrIJIOV87VqUQHQd9bpEqH5GoP7ghu5sJf0dgYzQ0mg/wu1 ++rUCAwEAAaOBgDB+MA8GA1UdEwEB/wQFMAMBAf8wDgYDVR0PAQH/BAQDAgEGMB0G +A1UdDgQWBBTLD8bfQkPMPcu1SCOhGnqmKrs0aDAfBgNVHSMEGDAWgBTLD8bfQkPM +Pcu1SCOhGnqmKrs0aDAbBgNVHREEFDASgRBpbmZvQGUtc3ppZ25vLmh1MA0GCSqG +SIb3DQEBCwUAA4IBAQDJ0Q5eLtXMs3w+y/w9/w0olZMEyL/azXm4Q5DwpL7v8u8h +mLzU1F0G9u5C7DBsoKqpyvGvivo/C3NqPuouQH4frlRheesuCDfXI/OMn74dseGk +ddug4lQUsbocKaQY9hK6ohQU4zE1yED/t+AFdlfBHFny+L/k7SViXITwfn4fs775 +tyERzAMBVnCnEJIeGzSBHq2cGsMEPO0CYdYeBvNfOofyK/FFh+U9rNHHV4S9a67c +2Pm2G2JwCz02yULyMtd6YebS2z3PyKnJm9zbWETXbzivf3jTo60adbocwTZ8jx5t +HMN1Rq41Bab2XD0h7lbwyYIiLXpUq3DDfSJlgnCW +-----END CERTIFICATE----- + +# Issuer: CN=GlobalSign O=GlobalSign OU=GlobalSign Root CA - R3 +# Subject: CN=GlobalSign O=GlobalSign OU=GlobalSign Root CA - R3 +# Label: "GlobalSign Root CA - R3" +# Serial: 4835703278459759426209954 +# MD5 Fingerprint: c5:df:b8:49:ca:05:13:55:ee:2d:ba:1a:c3:3e:b0:28 +# SHA1 Fingerprint: d6:9b:56:11:48:f0:1c:77:c5:45:78:c1:09:26:df:5b:85:69:76:ad +# SHA256 Fingerprint: cb:b5:22:d7:b7:f1:27:ad:6a:01:13:86:5b:df:1c:d4:10:2e:7d:07:59:af:63:5a:7c:f4:72:0d:c9:63:c5:3b +-----BEGIN CERTIFICATE----- +MIIDXzCCAkegAwIBAgILBAAAAAABIVhTCKIwDQYJKoZIhvcNAQELBQAwTDEgMB4G +A1UECxMXR2xvYmFsU2lnbiBSb290IENBIC0gUjMxEzARBgNVBAoTCkdsb2JhbFNp +Z24xEzARBgNVBAMTCkdsb2JhbFNpZ24wHhcNMDkwMzE4MTAwMDAwWhcNMjkwMzE4 +MTAwMDAwWjBMMSAwHgYDVQQLExdHbG9iYWxTaWduIFJvb3QgQ0EgLSBSMzETMBEG +A1UEChMKR2xvYmFsU2lnbjETMBEGA1UEAxMKR2xvYmFsU2lnbjCCASIwDQYJKoZI +hvcNAQEBBQADggEPADCCAQoCggEBAMwldpB5BngiFvXAg7aEyiie/QV2EcWtiHL8 +RgJDx7KKnQRfJMsuS+FggkbhUqsMgUdwbN1k0ev1LKMPgj0MK66X17YUhhB5uzsT +gHeMCOFJ0mpiLx9e+pZo34knlTifBtc+ycsmWQ1z3rDI6SYOgxXG71uL0gRgykmm +KPZpO/bLyCiR5Z2KYVc3rHQU3HTgOu5yLy6c+9C7v/U9AOEGM+iCK65TpjoWc4zd +QQ4gOsC0p6Hpsk+QLjJg6VfLuQSSaGjlOCZgdbKfd/+RFO+uIEn8rUAVSNECMWEZ +XriX7613t2Saer9fwRPvm2L7DWzgVGkWqQPabumDk3F2xmmFghcCAwEAAaNCMEAw +DgYDVR0PAQH/BAQDAgEGMA8GA1UdEwEB/wQFMAMBAf8wHQYDVR0OBBYEFI/wS3+o +LkUkrk1Q+mOai97i3Ru8MA0GCSqGSIb3DQEBCwUAA4IBAQBLQNvAUKr+yAzv95ZU +RUm7lgAJQayzE4aGKAczymvmdLm6AC2upArT9fHxD4q/c2dKg8dEe3jgr25sbwMp +jjM5RcOO5LlXbKr8EpbsU8Yt5CRsuZRj+9xTaGdWPoO4zzUhw8lo/s7awlOqzJCK +6fBdRoyV3XpYKBovHd7NADdBj+1EbddTKJd+82cEHhXXipa0095MJ6RMG3NzdvQX +mcIfeg7jLQitChws/zyrVQ4PkX4268NXSb7hLi18YIvDQVETI53O9zJrlAGomecs +Mx86OyXShkDOOyyGeMlhLxS67ttVb9+E7gUJTb0o2HLO02JQZR7rkpeDMdmztcpH +WD9f +-----END CERTIFICATE----- + +# Issuer: CN=Izenpe.com O=IZENPE S.A. +# Subject: CN=Izenpe.com O=IZENPE S.A. +# Label: "Izenpe.com" +# Serial: 917563065490389241595536686991402621 +# MD5 Fingerprint: a6:b0:cd:85:80:da:5c:50:34:a3:39:90:2f:55:67:73 +# SHA1 Fingerprint: 2f:78:3d:25:52:18:a7:4a:65:39:71:b5:2c:a2:9c:45:15:6f:e9:19 +# SHA256 Fingerprint: 25:30:cc:8e:98:32:15:02:ba:d9:6f:9b:1f:ba:1b:09:9e:2d:29:9e:0f:45:48:bb:91:4f:36:3b:c0:d4:53:1f +-----BEGIN CERTIFICATE----- +MIIF8TCCA9mgAwIBAgIQALC3WhZIX7/hy/WL1xnmfTANBgkqhkiG9w0BAQsFADA4 +MQswCQYDVQQGEwJFUzEUMBIGA1UECgwLSVpFTlBFIFMuQS4xEzARBgNVBAMMCkl6 +ZW5wZS5jb20wHhcNMDcxMjEzMTMwODI4WhcNMzcxMjEzMDgyNzI1WjA4MQswCQYD +VQQGEwJFUzEUMBIGA1UECgwLSVpFTlBFIFMuQS4xEzARBgNVBAMMCkl6ZW5wZS5j +b20wggIiMA0GCSqGSIb3DQEBAQUAA4ICDwAwggIKAoICAQDJ03rKDx6sp4boFmVq +scIbRTJxldn+EFvMr+eleQGPicPK8lVx93e+d5TzcqQsRNiekpsUOqHnJJAKClaO +xdgmlOHZSOEtPtoKct2jmRXagaKH9HtuJneJWK3W6wyyQXpzbm3benhB6QiIEn6H +LmYRY2xU+zydcsC8Lv/Ct90NduM61/e0aL6i9eOBbsFGb12N4E3GVFWJGjMxCrFX +uaOKmMPsOzTFlUFpfnXCPCDFYbpRR6AgkJOhkEvzTnyFRVSa0QUmQbC1TR0zvsQD +yCV8wXDbO/QJLVQnSKwv4cSsPsjLkkxTOTcj7NMB+eAJRE1NZMDhDVqHIrytG6P+ +JrUV86f8hBnp7KGItERphIPzidF0BqnMC9bC3ieFUCbKF7jJeodWLBoBHmy+E60Q +rLUk9TiRodZL2vG70t5HtfG8gfZZa88ZU+mNFctKy6lvROUbQc/hhqfK0GqfvEyN +BjNaooXlkDWgYlwWTvDjovoDGrQscbNYLN57C9saD+veIR8GdwYDsMnvmfzAuU8L +hij+0rnq49qlw0dpEuDb8PYZi+17cNcC1u2HGCgsBCRMd+RIihrGO5rUD8r6ddIB +QFqNeb+Lz0vPqhbBleStTIo+F5HUsWLlguWABKQDfo2/2n+iD5dPDNMN+9fR5XJ+ +HMh3/1uaD7euBUbl8agW7EekFwIDAQABo4H2MIHzMIGwBgNVHREEgagwgaWBD2lu +Zm9AaXplbnBlLmNvbaSBkTCBjjFHMEUGA1UECgw+SVpFTlBFIFMuQS4gLSBDSUYg +QTAxMzM3MjYwLVJNZXJjLlZpdG9yaWEtR2FzdGVpeiBUMTA1NSBGNjIgUzgxQzBB +BgNVBAkMOkF2ZGEgZGVsIE1lZGl0ZXJyYW5lbyBFdG9yYmlkZWEgMTQgLSAwMTAx +MCBWaXRvcmlhLUdhc3RlaXowDwYDVR0TAQH/BAUwAwEB/zAOBgNVHQ8BAf8EBAMC +AQYwHQYDVR0OBBYEFB0cZQ6o8iV7tJHP5LGx5r1VdGwFMA0GCSqGSIb3DQEBCwUA +A4ICAQB4pgwWSp9MiDrAyw6lFn2fuUhfGI8NYjb2zRlrrKvV9pF9rnHzP7MOeIWb +laQnIUdCSnxIOvVFfLMMjlF4rJUT3sb9fbgakEyrkgPH7UIBzg/YsfqikuFgba56 +awmqxinuaElnMIAkejEWOVt+8Rwu3WwJrfIxwYJOubv5vr8qhT/AQKM6WfxZSzwo +JNu0FXWuDYi6LnPAvViH5ULy617uHjAimcs30cQhbIHsvm0m5hzkQiCeR7Csg1lw +LDXWrzY0tM07+DKo7+N4ifuNRSzanLh+QBxh5z6ikixL8s36mLYp//Pye6kfLqCT +VyvehQP5aTfLnnhqBbTFMXiJ7HqnheG5ezzevh55hM6fcA5ZwjUukCox2eRFekGk +LhObNA5me0mrZJfQRsN5nXJQY6aYWwa9SG3YOYNw6DXwBdGqvOPbyALqfP2C2sJb +UjWumDqtujWTI6cfSN01RpiyEGjkpTHCClguGYEQyVB1/OpaFs4R1+7vUIgtYf8/ +QnMFlEPVjjxOAToZpR9GTnfQXeWBIiGH/pR9hNiTrdZoQ0iy2+tzJOeRf1SktoA+ +naM8THLCV8Sg1Mw4J87VBp6iSNnpn86CcDaTmjvfliHjWbcM2pE38P1ZWrOZyGls +QyYBNWNgVYkDOnXYukrZVP/u3oDYLdE41V4tC5h9Pmzb/CaIxw== +-----END CERTIFICATE----- + +# Issuer: CN=Go Daddy Root Certificate Authority - G2 O=GoDaddy.com, Inc. +# Subject: CN=Go Daddy Root Certificate Authority - G2 O=GoDaddy.com, Inc. +# Label: "Go Daddy Root Certificate Authority - G2" +# Serial: 0 +# MD5 Fingerprint: 80:3a:bc:22:c1:e6:fb:8d:9b:3b:27:4a:32:1b:9a:01 +# SHA1 Fingerprint: 47:be:ab:c9:22:ea:e8:0e:78:78:34:62:a7:9f:45:c2:54:fd:e6:8b +# SHA256 Fingerprint: 45:14:0b:32:47:eb:9c:c8:c5:b4:f0:d7:b5:30:91:f7:32:92:08:9e:6e:5a:63:e2:74:9d:d3:ac:a9:19:8e:da +-----BEGIN CERTIFICATE----- +MIIDxTCCAq2gAwIBAgIBADANBgkqhkiG9w0BAQsFADCBgzELMAkGA1UEBhMCVVMx +EDAOBgNVBAgTB0FyaXpvbmExEzARBgNVBAcTClNjb3R0c2RhbGUxGjAYBgNVBAoT +EUdvRGFkZHkuY29tLCBJbmMuMTEwLwYDVQQDEyhHbyBEYWRkeSBSb290IENlcnRp +ZmljYXRlIEF1dGhvcml0eSAtIEcyMB4XDTA5MDkwMTAwMDAwMFoXDTM3MTIzMTIz +NTk1OVowgYMxCzAJBgNVBAYTAlVTMRAwDgYDVQQIEwdBcml6b25hMRMwEQYDVQQH +EwpTY290dHNkYWxlMRowGAYDVQQKExFHb0RhZGR5LmNvbSwgSW5jLjExMC8GA1UE +AxMoR28gRGFkZHkgUm9vdCBDZXJ0aWZpY2F0ZSBBdXRob3JpdHkgLSBHMjCCASIw +DQYJKoZIhvcNAQEBBQADggEPADCCAQoCggEBAL9xYgjx+lk09xvJGKP3gElY6SKD +E6bFIEMBO4Tx5oVJnyfq9oQbTqC023CYxzIBsQU+B07u9PpPL1kwIuerGVZr4oAH +/PMWdYA5UXvl+TW2dE6pjYIT5LY/qQOD+qK+ihVqf94Lw7YZFAXK6sOoBJQ7Rnwy +DfMAZiLIjWltNowRGLfTshxgtDj6AozO091GB94KPutdfMh8+7ArU6SSYmlRJQVh +GkSBjCypQ5Yj36w6gZoOKcUcqeldHraenjAKOc7xiID7S13MMuyFYkMlNAJWJwGR +tDtwKj9useiciAF9n9T521NtYJ2/LOdYq7hfRvzOxBsDPAnrSTFcaUaz4EcCAwEA +AaNCMEAwDwYDVR0TAQH/BAUwAwEB/zAOBgNVHQ8BAf8EBAMCAQYwHQYDVR0OBBYE +FDqahQcQZyi27/a9BUFuIMGU2g/eMA0GCSqGSIb3DQEBCwUAA4IBAQCZ21151fmX +WWcDYfF+OwYxdS2hII5PZYe096acvNjpL9DbWu7PdIxztDhC2gV7+AJ1uP2lsdeu +9tfeE8tTEH6KRtGX+rcuKxGrkLAngPnon1rpN5+r5N9ss4UXnT3ZJE95kTXWXwTr +gIOrmgIttRD02JDHBHNA7XIloKmf7J6raBKZV8aPEjoJpL1E/QYVN8Gb5DKj7Tjo +2GTzLH4U/ALqn83/B2gX2yKQOC16jdFU8WnjXzPKej17CuPKf1855eJ1usV2GDPO +LPAvTK33sefOT6jEm0pUBsV/fdUID+Ic/n4XuKxe9tQWskMJDE32p2u0mYRlynqI +4uJEvlz36hz1 +-----END CERTIFICATE----- + +# Issuer: CN=Starfield Root Certificate Authority - G2 O=Starfield Technologies, Inc. +# Subject: CN=Starfield Root Certificate Authority - G2 O=Starfield Technologies, Inc. +# Label: "Starfield Root Certificate Authority - G2" +# Serial: 0 +# MD5 Fingerprint: d6:39:81:c6:52:7e:96:69:fc:fc:ca:66:ed:05:f2:96 +# SHA1 Fingerprint: b5:1c:06:7c:ee:2b:0c:3d:f8:55:ab:2d:92:f4:fe:39:d4:e7:0f:0e +# SHA256 Fingerprint: 2c:e1:cb:0b:f9:d2:f9:e1:02:99:3f:be:21:51:52:c3:b2:dd:0c:ab:de:1c:68:e5:31:9b:83:91:54:db:b7:f5 +-----BEGIN CERTIFICATE----- +MIID3TCCAsWgAwIBAgIBADANBgkqhkiG9w0BAQsFADCBjzELMAkGA1UEBhMCVVMx +EDAOBgNVBAgTB0FyaXpvbmExEzARBgNVBAcTClNjb3R0c2RhbGUxJTAjBgNVBAoT +HFN0YXJmaWVsZCBUZWNobm9sb2dpZXMsIEluYy4xMjAwBgNVBAMTKVN0YXJmaWVs +ZCBSb290IENlcnRpZmljYXRlIEF1dGhvcml0eSAtIEcyMB4XDTA5MDkwMTAwMDAw +MFoXDTM3MTIzMTIzNTk1OVowgY8xCzAJBgNVBAYTAlVTMRAwDgYDVQQIEwdBcml6 +b25hMRMwEQYDVQQHEwpTY290dHNkYWxlMSUwIwYDVQQKExxTdGFyZmllbGQgVGVj +aG5vbG9naWVzLCBJbmMuMTIwMAYDVQQDEylTdGFyZmllbGQgUm9vdCBDZXJ0aWZp +Y2F0ZSBBdXRob3JpdHkgLSBHMjCCASIwDQYJKoZIhvcNAQEBBQADggEPADCCAQoC +ggEBAL3twQP89o/8ArFvW59I2Z154qK3A2FWGMNHttfKPTUuiUP3oWmb3ooa/RMg +nLRJdzIpVv257IzdIvpy3Cdhl+72WoTsbhm5iSzchFvVdPtrX8WJpRBSiUZV9Lh1 +HOZ/5FSuS/hVclcCGfgXcVnrHigHdMWdSL5stPSksPNkN3mSwOxGXn/hbVNMYq/N +Hwtjuzqd+/x5AJhhdM8mgkBj87JyahkNmcrUDnXMN/uLicFZ8WJ/X7NfZTD4p7dN +dloedl40wOiWVpmKs/B/pM293DIxfJHP4F8R+GuqSVzRmZTRouNjWwl2tVZi4Ut0 +HZbUJtQIBFnQmA4O5t78w+wfkPECAwEAAaNCMEAwDwYDVR0TAQH/BAUwAwEB/zAO +BgNVHQ8BAf8EBAMCAQYwHQYDVR0OBBYEFHwMMh+n2TB/xH1oo2Kooc6rB1snMA0G +CSqGSIb3DQEBCwUAA4IBAQARWfolTwNvlJk7mh+ChTnUdgWUXuEok21iXQnCoKjU +sHU48TRqneSfioYmUeYs0cYtbpUgSpIB7LiKZ3sx4mcujJUDJi5DnUox9g61DLu3 +4jd/IroAow57UvtruzvE03lRTs2Q9GcHGcg8RnoNAX3FWOdt5oUwF5okxBDgBPfg +8n/Uqgr/Qh037ZTlZFkSIHc40zI+OIF1lnP6aI+xy84fxez6nH7PfrHxBy22/L/K +pL/QlwVKvOoYKAKQvVR4CSFx09F9HdkWsKlhPdAKACL8x3vLCWRFCztAgfd9fDL1 +mMpYjn0q7pBZc2T5NnReJaH1ZgUufzkVqSr7UIuOhWn0 +-----END CERTIFICATE----- + +# Issuer: CN=Starfield Services Root Certificate Authority - G2 O=Starfield Technologies, Inc. +# Subject: CN=Starfield Services Root Certificate Authority - G2 O=Starfield Technologies, Inc. +# Label: "Starfield Services Root Certificate Authority - G2" +# Serial: 0 +# MD5 Fingerprint: 17:35:74:af:7b:61:1c:eb:f4:f9:3c:e2:ee:40:f9:a2 +# SHA1 Fingerprint: 92:5a:8f:8d:2c:6d:04:e0:66:5f:59:6a:ff:22:d8:63:e8:25:6f:3f +# SHA256 Fingerprint: 56:8d:69:05:a2:c8:87:08:a4:b3:02:51:90:ed:cf:ed:b1:97:4a:60:6a:13:c6:e5:29:0f:cb:2a:e6:3e:da:b5 +-----BEGIN CERTIFICATE----- +MIID7zCCAtegAwIBAgIBADANBgkqhkiG9w0BAQsFADCBmDELMAkGA1UEBhMCVVMx +EDAOBgNVBAgTB0FyaXpvbmExEzARBgNVBAcTClNjb3R0c2RhbGUxJTAjBgNVBAoT +HFN0YXJmaWVsZCBUZWNobm9sb2dpZXMsIEluYy4xOzA5BgNVBAMTMlN0YXJmaWVs +ZCBTZXJ2aWNlcyBSb290IENlcnRpZmljYXRlIEF1dGhvcml0eSAtIEcyMB4XDTA5 +MDkwMTAwMDAwMFoXDTM3MTIzMTIzNTk1OVowgZgxCzAJBgNVBAYTAlVTMRAwDgYD +VQQIEwdBcml6b25hMRMwEQYDVQQHEwpTY290dHNkYWxlMSUwIwYDVQQKExxTdGFy +ZmllbGQgVGVjaG5vbG9naWVzLCBJbmMuMTswOQYDVQQDEzJTdGFyZmllbGQgU2Vy +dmljZXMgUm9vdCBDZXJ0aWZpY2F0ZSBBdXRob3JpdHkgLSBHMjCCASIwDQYJKoZI +hvcNAQEBBQADggEPADCCAQoCggEBANUMOsQq+U7i9b4Zl1+OiFOxHz/Lz58gE20p +OsgPfTz3a3Y4Y9k2YKibXlwAgLIvWX/2h/klQ4bnaRtSmpDhcePYLQ1Ob/bISdm2 +8xpWriu2dBTrz/sm4xq6HZYuajtYlIlHVv8loJNwU4PahHQUw2eeBGg6345AWh1K +Ts9DkTvnVtYAcMtS7nt9rjrnvDH5RfbCYM8TWQIrgMw0R9+53pBlbQLPLJGmpufe +hRhJfGZOozptqbXuNC66DQO4M99H67FrjSXZm86B0UVGMpZwh94CDklDhbZsc7tk +6mFBrMnUVN+HL8cisibMn1lUaJ/8viovxFUcdUBgF4UCVTmLfwUCAwEAAaNCMEAw +DwYDVR0TAQH/BAUwAwEB/zAOBgNVHQ8BAf8EBAMCAQYwHQYDVR0OBBYEFJxfAN+q +AdcwKziIorhtSpzyEZGDMA0GCSqGSIb3DQEBCwUAA4IBAQBLNqaEd2ndOxmfZyMI +bw5hyf2E3F/YNoHN2BtBLZ9g3ccaaNnRbobhiCPPE95Dz+I0swSdHynVv/heyNXB +ve6SbzJ08pGCL72CQnqtKrcgfU28elUSwhXqvfdqlS5sdJ/PHLTyxQGjhdByPq1z +qwubdQxtRbeOlKyWN7Wg0I8VRw7j6IPdj/3vQQF3zCepYoUz8jcI73HPdwbeyBkd +iEDPfUYd/x7H4c7/I9vG+o1VTqkC50cRRj70/b17KSa7qWFiNyi2LSr2EIZkyXCn +0q23KXB56jzaYyWf/Wi3MOxw+3WKt21gZ7IeyLnp2KhvAotnDU0mV3HaIPzBSlCN +sSi6 +-----END CERTIFICATE----- + +# Issuer: CN=Certum Trusted Network CA O=Unizeto Technologies S.A. OU=Certum Certification Authority +# Subject: CN=Certum Trusted Network CA O=Unizeto Technologies S.A. OU=Certum Certification Authority +# Label: "Certum Trusted Network CA" +# Serial: 279744 +# MD5 Fingerprint: d5:e9:81:40:c5:18:69:fc:46:2c:89:75:62:0f:aa:78 +# SHA1 Fingerprint: 07:e0:32:e0:20:b7:2c:3f:19:2f:06:28:a2:59:3a:19:a7:0f:06:9e +# SHA256 Fingerprint: 5c:58:46:8d:55:f5:8e:49:7e:74:39:82:d2:b5:00:10:b6:d1:65:37:4a:cf:83:a7:d4:a3:2d:b7:68:c4:40:8e +-----BEGIN CERTIFICATE----- +MIIDuzCCAqOgAwIBAgIDBETAMA0GCSqGSIb3DQEBBQUAMH4xCzAJBgNVBAYTAlBM +MSIwIAYDVQQKExlVbml6ZXRvIFRlY2hub2xvZ2llcyBTLkEuMScwJQYDVQQLEx5D +ZXJ0dW0gQ2VydGlmaWNhdGlvbiBBdXRob3JpdHkxIjAgBgNVBAMTGUNlcnR1bSBU +cnVzdGVkIE5ldHdvcmsgQ0EwHhcNMDgxMDIyMTIwNzM3WhcNMjkxMjMxMTIwNzM3 +WjB+MQswCQYDVQQGEwJQTDEiMCAGA1UEChMZVW5pemV0byBUZWNobm9sb2dpZXMg +Uy5BLjEnMCUGA1UECxMeQ2VydHVtIENlcnRpZmljYXRpb24gQXV0aG9yaXR5MSIw +IAYDVQQDExlDZXJ0dW0gVHJ1c3RlZCBOZXR3b3JrIENBMIIBIjANBgkqhkiG9w0B +AQEFAAOCAQ8AMIIBCgKCAQEA4/t9o3K6wvDJFIf1awFO4W5AB7ptJ11/91sts1rH +UV+rpDKmYYe2bg+G0jACl/jXaVehGDldamR5xgFZrDwxSjh80gTSSyjoIF87B6LM +TXPb865Px1bVWqeWifrzq2jUI4ZZJ88JJ7ysbnKDHDBy3+Ci6dLhdHUZvSqeexVU +BBvXQzmtVSjF4hq79MDkrjhJM8x2hZ85RdKknvISjFH4fOQtf/WsX+sWn7Et0brM +kUJ3TCXJkDhv2/DM+44el1k+1WBO5gUo7Ul5E0u6SNsv+XLTOcr+H9g0cvW0QM8x +AcPs3hEtF10fuFDRXhmnad4HMyjKUJX5p1TLVIZQRan5SQIDAQABo0IwQDAPBgNV +HRMBAf8EBTADAQH/MB0GA1UdDgQWBBQIds3LB/8k9sXN7buQvOKEN0Z19zAOBgNV +HQ8BAf8EBAMCAQYwDQYJKoZIhvcNAQEFBQADggEBAKaorSLOAT2mo/9i0Eidi15y +sHhE49wcrwn9I0j6vSrEuVUEtRCjjSfeC4Jj0O7eDDd5QVsisrCaQVymcODU0HfL +I9MA4GxWL+FpDQ3Zqr8hgVDZBqWo/5U30Kr+4rP1mS1FhIrlQgnXdAIv94nYmem8 +J9RHjboNRhx3zxSkHLmkMcScKHQDNP8zGSal6Q10tz6XxnboJ5ajZt3hrvJBW8qY +VoNzcOSGGtIxQbovvi0TWnZvTuhOgQ4/WwMioBK+ZlgRSssDxLQqKi2WF+A5VLxI +03YnnZotBqbJ7DnSq9ufmgsnAjUpsUCV5/nonFWIGUbWtzT1fs45mtk48VH3Tyw= +-----END CERTIFICATE----- + +# Issuer: CN=TWCA Root Certification Authority O=TAIWAN-CA OU=Root CA +# Subject: CN=TWCA Root Certification Authority O=TAIWAN-CA OU=Root CA +# Label: "TWCA Root Certification Authority" +# Serial: 1 +# MD5 Fingerprint: aa:08:8f:f6:f9:7b:b7:f2:b1:a7:1e:9b:ea:ea:bd:79 +# SHA1 Fingerprint: cf:9e:87:6d:d3:eb:fc:42:26:97:a3:b5:a3:7a:a0:76:a9:06:23:48 +# SHA256 Fingerprint: bf:d8:8f:e1:10:1c:41:ae:3e:80:1b:f8:be:56:35:0e:e9:ba:d1:a6:b9:bd:51:5e:dc:5c:6d:5b:87:11:ac:44 +-----BEGIN CERTIFICATE----- +MIIDezCCAmOgAwIBAgIBATANBgkqhkiG9w0BAQUFADBfMQswCQYDVQQGEwJUVzES +MBAGA1UECgwJVEFJV0FOLUNBMRAwDgYDVQQLDAdSb290IENBMSowKAYDVQQDDCFU +V0NBIFJvb3QgQ2VydGlmaWNhdGlvbiBBdXRob3JpdHkwHhcNMDgwODI4MDcyNDMz +WhcNMzAxMjMxMTU1OTU5WjBfMQswCQYDVQQGEwJUVzESMBAGA1UECgwJVEFJV0FO +LUNBMRAwDgYDVQQLDAdSb290IENBMSowKAYDVQQDDCFUV0NBIFJvb3QgQ2VydGlm +aWNhdGlvbiBBdXRob3JpdHkwggEiMA0GCSqGSIb3DQEBAQUAA4IBDwAwggEKAoIB +AQCwfnK4pAOU5qfeCTiRShFAh6d8WWQUe7UREN3+v9XAu1bihSX0NXIP+FPQQeFE +AcK0HMMxQhZHhTMidrIKbw/lJVBPhYa+v5guEGcevhEFhgWQxFnQfHgQsIBct+HH +K3XLfJ+utdGdIzdjp9xCoi2SBBtQwXu4PhvJVgSLL1KbralW6cH/ralYhzC2gfeX +RfwZVzsrb+RH9JlF/h3x+JejiB03HFyP4HYlmlD4oFT/RJB2I9IyxsOrBr/8+7/z +rX2SYgJbKdM1o5OaQ2RgXbL6Mv87BK9NQGr5x+PvI/1ry+UPizgN7gr8/g+YnzAx +3WxSZfmLgb4i4RxYA7qRG4kHAgMBAAGjQjBAMA4GA1UdDwEB/wQEAwIBBjAPBgNV +HRMBAf8EBTADAQH/MB0GA1UdDgQWBBRqOFsmjd6LWvJPelSDGRjjCDWmujANBgkq +hkiG9w0BAQUFAAOCAQEAPNV3PdrfibqHDAhUaiBQkr6wQT25JmSDCi/oQMCXKCeC +MErJk/9q56YAf4lCmtYR5VPOL8zy2gXE/uJQxDqGfczafhAJO5I1KlOy/usrBdls +XebQ79NqZp4VKIV66IIArB6nCWlWQtNoURi+VJq/REG6Sb4gumlc7rh3zc5sH62D +lhh9DrUUOYTxKOkto557HnpyWoOzeW/vtPzQCqVYT0bf+215WfKEIlKuD8z7fDvn +aspHYcN6+NOSBB+4IIThNlQWx0DeO4pz3N/GCUzf7Nr/1FNCocnyYh0igzyXxfkZ +YiesZSLX0zzG5Y6yU8xJzrww/nsOM5D77dIUkR8Hrw== +-----END CERTIFICATE----- + +# Issuer: O=SECOM Trust Systems CO.,LTD. OU=Security Communication RootCA2 +# Subject: O=SECOM Trust Systems CO.,LTD. OU=Security Communication RootCA2 +# Label: "Security Communication RootCA2" +# Serial: 0 +# MD5 Fingerprint: 6c:39:7d:a4:0e:55:59:b2:3f:d6:41:b1:12:50:de:43 +# SHA1 Fingerprint: 5f:3b:8c:f2:f8:10:b3:7d:78:b4:ce:ec:19:19:c3:73:34:b9:c7:74 +# SHA256 Fingerprint: 51:3b:2c:ec:b8:10:d4:cd:e5:dd:85:39:1a:df:c6:c2:dd:60:d8:7b:b7:36:d2:b5:21:48:4a:a4:7a:0e:be:f6 +-----BEGIN CERTIFICATE----- +MIIDdzCCAl+gAwIBAgIBADANBgkqhkiG9w0BAQsFADBdMQswCQYDVQQGEwJKUDEl +MCMGA1UEChMcU0VDT00gVHJ1c3QgU3lzdGVtcyBDTy4sTFRELjEnMCUGA1UECxMe +U2VjdXJpdHkgQ29tbXVuaWNhdGlvbiBSb290Q0EyMB4XDTA5MDUyOTA1MDAzOVoX +DTI5MDUyOTA1MDAzOVowXTELMAkGA1UEBhMCSlAxJTAjBgNVBAoTHFNFQ09NIFRy +dXN0IFN5c3RlbXMgQ08uLExURC4xJzAlBgNVBAsTHlNlY3VyaXR5IENvbW11bmlj +YXRpb24gUm9vdENBMjCCASIwDQYJKoZIhvcNAQEBBQADggEPADCCAQoCggEBANAV +OVKxUrO6xVmCxF1SrjpDZYBLx/KWvNs2l9amZIyoXvDjChz335c9S672XewhtUGr +zbl+dp+++T42NKA7wfYxEUV0kz1XgMX5iZnK5atq1LXaQZAQwdbWQonCv/Q4EpVM +VAX3NuRFg3sUZdbcDE3R3n4MqzvEFb46VqZab3ZpUql6ucjrappdUtAtCms1FgkQ +hNBqyjoGADdH5H5XTz+L62e4iKrFvlNVspHEfbmwhRkGeC7bYRr6hfVKkaHnFtWO +ojnflLhwHyg/i/xAXmODPIMqGplrz95Zajv8bxbXH/1KEOtOghY6rCcMU/Gt1SSw +awNQwS08Ft1ENCcadfsCAwEAAaNCMEAwHQYDVR0OBBYEFAqFqXdlBZh8QIH4D5cs +OPEK7DzPMA4GA1UdDwEB/wQEAwIBBjAPBgNVHRMBAf8EBTADAQH/MA0GCSqGSIb3 +DQEBCwUAA4IBAQBMOqNErLlFsceTfsgLCkLfZOoc7llsCLqJX2rKSpWeeo8HxdpF +coJxDjrSzG+ntKEju/Ykn8sX/oymzsLS28yN/HH8AynBbF0zX2S2ZTuJbxh2ePXc +okgfGT+Ok+vx+hfuzU7jBBJV1uXk3fs+BXziHV7Gp7yXT2g69ekuCkO2r1dcYmh8 +t/2jioSgrGK+KwmHNPBqAbubKVY8/gA3zyNs8U6qtnRGEmyR7jTV7JqR50S+kDFy +1UkC9gLl9B/rfNmWVan/7Ir5mUf/NVoCqgTLiluHcSmRvaS0eg29mvVXIwAHIRc/ +SjnRBUkLp7Y3gaVdjKozXoEofKd9J+sAro03 +-----END CERTIFICATE----- + +# Issuer: CN=Actalis Authentication Root CA O=Actalis S.p.A./03358520967 +# Subject: CN=Actalis Authentication Root CA O=Actalis S.p.A./03358520967 +# Label: "Actalis Authentication Root CA" +# Serial: 6271844772424770508 +# MD5 Fingerprint: 69:c1:0d:4f:07:a3:1b:c3:fe:56:3d:04:bc:11:f6:a6 +# SHA1 Fingerprint: f3:73:b3:87:06:5a:28:84:8a:f2:f3:4a:ce:19:2b:dd:c7:8e:9c:ac +# SHA256 Fingerprint: 55:92:60:84:ec:96:3a:64:b9:6e:2a:be:01:ce:0b:a8:6a:64:fb:fe:bc:c7:aa:b5:af:c1:55:b3:7f:d7:60:66 +-----BEGIN CERTIFICATE----- +MIIFuzCCA6OgAwIBAgIIVwoRl0LE48wwDQYJKoZIhvcNAQELBQAwazELMAkGA1UE +BhMCSVQxDjAMBgNVBAcMBU1pbGFuMSMwIQYDVQQKDBpBY3RhbGlzIFMucC5BLi8w +MzM1ODUyMDk2NzEnMCUGA1UEAwweQWN0YWxpcyBBdXRoZW50aWNhdGlvbiBSb290 +IENBMB4XDTExMDkyMjExMjIwMloXDTMwMDkyMjExMjIwMlowazELMAkGA1UEBhMC +SVQxDjAMBgNVBAcMBU1pbGFuMSMwIQYDVQQKDBpBY3RhbGlzIFMucC5BLi8wMzM1 +ODUyMDk2NzEnMCUGA1UEAwweQWN0YWxpcyBBdXRoZW50aWNhdGlvbiBSb290IENB +MIICIjANBgkqhkiG9w0BAQEFAAOCAg8AMIICCgKCAgEAp8bEpSmkLO/lGMWwUKNv +UTufClrJwkg4CsIcoBh/kbWHuUA/3R1oHwiD1S0eiKD4j1aPbZkCkpAW1V8IbInX +4ay8IMKx4INRimlNAJZaby/ARH6jDuSRzVju3PvHHkVH3Se5CAGfpiEd9UEtL0z9 +KK3giq0itFZljoZUj5NDKd45RnijMCO6zfB9E1fAXdKDa0hMxKufgFpbOr3JpyI/ +gCczWw63igxdBzcIy2zSekciRDXFzMwujt0q7bd9Zg1fYVEiVRvjRuPjPdA1Yprb +rxTIW6HMiRvhMCb8oJsfgadHHwTrozmSBp+Z07/T6k9QnBn+locePGX2oxgkg4YQ +51Q+qDp2JE+BIcXjDwL4k5RHILv+1A7TaLndxHqEguNTVHnd25zS8gebLra8Pu2F +be8lEfKXGkJh90qX6IuxEAf6ZYGyojnP9zz/GPvG8VqLWeICrHuS0E4UT1lF9gxe +KF+w6D9Fz8+vm2/7hNN3WpVvrJSEnu68wEqPSpP4RCHiMUVhUE4Q2OM1fEwZtN4F +v6MGn8i1zeQf1xcGDXqVdFUNaBr8EBtiZJ1t4JWgw5QHVw0U5r0F+7if5t+L4sbn +fpb2U8WANFAoWPASUHEXMLrmeGO89LKtmyuy/uE5jF66CyCU3nuDuP/jVo23Eek7 +jPKxwV2dpAtMK9myGPW1n0sCAwEAAaNjMGEwHQYDVR0OBBYEFFLYiDrIn3hm7Ynz +ezhwlMkCAjbQMA8GA1UdEwEB/wQFMAMBAf8wHwYDVR0jBBgwFoAUUtiIOsifeGbt +ifN7OHCUyQICNtAwDgYDVR0PAQH/BAQDAgEGMA0GCSqGSIb3DQEBCwUAA4ICAQAL +e3KHwGCmSUyIWOYdiPcUZEim2FgKDk8TNd81HdTtBjHIgT5q1d07GjLukD0R0i70 +jsNjLiNmsGe+b7bAEzlgqqI0JZN1Ut6nna0Oh4lScWoWPBkdg/iaKWW+9D+a2fDz +WochcYBNy+A4mz+7+uAwTc+G02UQGRjRlwKxK3JCaKygvU5a2hi/a5iB0P2avl4V +SM0RFbnAKVy06Ij3Pjaut2L9HmLecHgQHEhb2rykOLpn7VU+Xlff1ANATIGk0k9j +pwlCCRT8AKnCgHNPLsBA2RF7SOp6AsDT6ygBJlh0wcBzIm2Tlf05fbsq4/aC4yyX +X04fkZT6/iyj2HYauE2yOE+b+h1IYHkm4vP9qdCa6HCPSXrW5b0KDtst842/6+Ok +fcvHlXHo2qN8xcL4dJIEG4aspCJTQLas/kx2z/uUMsA1n3Y/buWQbqCmJqK4LL7R +K4X9p2jIugErsWx0Hbhzlefut8cl8ABMALJ+tguLHPPAUJ4lueAI3jZm/zel0btU +ZCzJJ7VLkn5l/9Mt4blOvH+kQSGQQXemOR/qnuOf0GZvBeyqdn6/axag67XH/JJU +LysRJyU3eExRarDzzFhdFPFqSBX/wge2sY0PjlxQRrM9vwGYT7JZVEc+NHt4bVaT +LnPqZih4zR0Uv6CPLy64Lo7yFIrM6bV8+2ydDKXhlg== +-----END CERTIFICATE----- + +# Issuer: CN=Buypass Class 2 Root CA O=Buypass AS-983163327 +# Subject: CN=Buypass Class 2 Root CA O=Buypass AS-983163327 +# Label: "Buypass Class 2 Root CA" +# Serial: 2 +# MD5 Fingerprint: 46:a7:d2:fe:45:fb:64:5a:a8:59:90:9b:78:44:9b:29 +# SHA1 Fingerprint: 49:0a:75:74:de:87:0a:47:fe:58:ee:f6:c7:6b:eb:c6:0b:12:40:99 +# SHA256 Fingerprint: 9a:11:40:25:19:7c:5b:b9:5d:94:e6:3d:55:cd:43:79:08:47:b6:46:b2:3c:df:11:ad:a4:a0:0e:ff:15:fb:48 +-----BEGIN CERTIFICATE----- +MIIFWTCCA0GgAwIBAgIBAjANBgkqhkiG9w0BAQsFADBOMQswCQYDVQQGEwJOTzEd +MBsGA1UECgwUQnV5cGFzcyBBUy05ODMxNjMzMjcxIDAeBgNVBAMMF0J1eXBhc3Mg +Q2xhc3MgMiBSb290IENBMB4XDTEwMTAyNjA4MzgwM1oXDTQwMTAyNjA4MzgwM1ow +TjELMAkGA1UEBhMCTk8xHTAbBgNVBAoMFEJ1eXBhc3MgQVMtOTgzMTYzMzI3MSAw +HgYDVQQDDBdCdXlwYXNzIENsYXNzIDIgUm9vdCBDQTCCAiIwDQYJKoZIhvcNAQEB +BQADggIPADCCAgoCggIBANfHXvfBB9R3+0Mh9PT1aeTuMgHbo4Yf5FkNuud1g1Lr +6hxhFUi7HQfKjK6w3Jad6sNgkoaCKHOcVgb/S2TwDCo3SbXlzwx87vFKu3MwZfPV +L4O2fuPn9Z6rYPnT8Z2SdIrkHJasW4DptfQxh6NR/Md+oW+OU3fUl8FVM5I+GC91 +1K2GScuVr1QGbNgGE41b/+EmGVnAJLqBcXmQRFBoJJRfuLMR8SlBYaNByyM21cHx +MlAQTn/0hpPshNOOvEu/XAFOBz3cFIqUCqTqc/sLUegTBxj6DvEr0VQVfTzh97QZ +QmdiXnfgolXsttlpF9U6r0TtSsWe5HonfOV116rLJeffawrbD02TTqigzXsu8lkB +arcNuAeBfos4GzjmCleZPe4h6KP1DBbdi+w0jpwqHAAVF41og9JwnxgIzRFo1clr +Us3ERo/ctfPYV3Me6ZQ5BL/T3jjetFPsaRyifsSP5BtwrfKi+fv3FmRmaZ9JUaLi +FRhnBkp/1Wy1TbMz4GHrXb7pmA8y1x1LPC5aAVKRCfLf6o3YBkBjqhHk/sM3nhRS +P/TizPJhk9H9Z2vXUq6/aKtAQ6BXNVN48FP4YUIHZMbXb5tMOA1jrGKvNouicwoN +9SG9dKpN6nIDSdvHXx1iY8f93ZHsM+71bbRuMGjeyNYmsHVee7QHIJihdjK4TWxP +AgMBAAGjQjBAMA8GA1UdEwEB/wQFMAMBAf8wHQYDVR0OBBYEFMmAd+BikoL1Rpzz +uvdMw964o605MA4GA1UdDwEB/wQEAwIBBjANBgkqhkiG9w0BAQsFAAOCAgEAU18h +9bqwOlI5LJKwbADJ784g7wbylp7ppHR/ehb8t/W2+xUbP6umwHJdELFx7rxP462s +A20ucS6vxOOto70MEae0/0qyexAQH6dXQbLArvQsWdZHEIjzIVEpMMpghq9Gqx3t +OluwlN5E40EIosHsHdb9T7bWR9AUC8rmyrV7d35BH16Dx7aMOZawP5aBQW9gkOLo ++fsicdl9sz1Gv7SEr5AcD48Saq/v7h56rgJKihcrdv6sVIkkLE8/trKnToyokZf7 +KcZ7XC25y2a2t6hbElGFtQl+Ynhw/qlqYLYdDnkM/crqJIByw5c/8nerQyIKx+u2 +DISCLIBrQYoIwOula9+ZEsuK1V6ADJHgJgg2SMX6OBE1/yWDLfJ6v9r9jv6ly0Us +H8SIU653DtmadsWOLB2jutXsMq7Aqqz30XpN69QH4kj3Io6wpJ9qzo6ysmD0oyLQ +I+uUWnpp3Q+/QFesa1lQ2aOZ4W7+jQF5JyMV3pKdewlNWudLSDBaGOYKbeaP4NK7 +5t98biGCwWg5TbSYWGZizEqQXsP6JwSxeRV0mcy+rSDeJmAc61ZRpqPq5KM/p/9h +3PFaTWwyI0PurKju7koSCTxdccK+efrCh2gdC/1cacwG0Jp9VJkqyTkaGa9LKkPz +Y11aWOIv4x3kqdbQCtCev9eBCfHJxyYNrJgWVqA= +-----END CERTIFICATE----- + +# Issuer: CN=Buypass Class 3 Root CA O=Buypass AS-983163327 +# Subject: CN=Buypass Class 3 Root CA O=Buypass AS-983163327 +# Label: "Buypass Class 3 Root CA" +# Serial: 2 +# MD5 Fingerprint: 3d:3b:18:9e:2c:64:5a:e8:d5:88:ce:0e:f9:37:c2:ec +# SHA1 Fingerprint: da:fa:f7:fa:66:84:ec:06:8f:14:50:bd:c7:c2:81:a5:bc:a9:64:57 +# SHA256 Fingerprint: ed:f7:eb:bc:a2:7a:2a:38:4d:38:7b:7d:40:10:c6:66:e2:ed:b4:84:3e:4c:29:b4:ae:1d:5b:93:32:e6:b2:4d +-----BEGIN CERTIFICATE----- +MIIFWTCCA0GgAwIBAgIBAjANBgkqhkiG9w0BAQsFADBOMQswCQYDVQQGEwJOTzEd +MBsGA1UECgwUQnV5cGFzcyBBUy05ODMxNjMzMjcxIDAeBgNVBAMMF0J1eXBhc3Mg +Q2xhc3MgMyBSb290IENBMB4XDTEwMTAyNjA4Mjg1OFoXDTQwMTAyNjA4Mjg1OFow +TjELMAkGA1UEBhMCTk8xHTAbBgNVBAoMFEJ1eXBhc3MgQVMtOTgzMTYzMzI3MSAw +HgYDVQQDDBdCdXlwYXNzIENsYXNzIDMgUm9vdCBDQTCCAiIwDQYJKoZIhvcNAQEB +BQADggIPADCCAgoCggIBAKXaCpUWUOOV8l6ddjEGMnqb8RB2uACatVI2zSRHsJ8Y +ZLya9vrVediQYkwiL944PdbgqOkcLNt4EemOaFEVcsfzM4fkoF0LXOBXByow9c3E +N3coTRiR5r/VUv1xLXA+58bEiuPwKAv0dpihi4dVsjoT/Lc+JzeOIuOoTyrvYLs9 +tznDDgFHmV0ST9tD+leh7fmdvhFHJlsTmKtdFoqwNxxXnUX/iJY2v7vKB3tvh2PX +0DJq1l1sDPGzbjniazEuOQAnFN44wOwZZoYS6J1yFhNkUsepNxz9gjDthBgd9K5c +/3ATAOux9TN6S9ZV+AWNS2mw9bMoNlwUxFFzTWsL8TQH2xc519woe2v1n/MuwU8X +KhDzzMro6/1rqy6any2CbgTUUgGTLT2G/H783+9CHaZr77kgxve9oKeV/afmiSTY +zIw0bOIjL9kSGiG5VZFvC5F5GQytQIgLcOJ60g7YaEi7ghM5EFjp2CoHxhLbWNvS +O1UQRwUVZ2J+GGOmRj8JDlQyXr8NYnon74Do29lLBlo3WiXQCBJ31G8JUJc9yB3D +34xFMFbG02SrZvPAXpacw8Tvw3xrizp5f7NJzz3iiZ+gMEuFuZyUJHmPfWupRWgP +K9Dx2hzLabjKSWJtyNBjYt1gD1iqj6G8BaVmos8bdrKEZLFMOVLAMLrwjEsCsLa3 +AgMBAAGjQjBAMA8GA1UdEwEB/wQFMAMBAf8wHQYDVR0OBBYEFEe4zf/lb+74suwv +Tg75JbCOPGvDMA4GA1UdDwEB/wQEAwIBBjANBgkqhkiG9w0BAQsFAAOCAgEAACAj +QTUEkMJAYmDv4jVM1z+s4jSQuKFvdvoWFqRINyzpkMLyPPgKn9iB5btb2iUspKdV +cSQy9sgL8rxq+JOssgfCX5/bzMiKqr5qb+FJEMwx14C7u8jYog5kV+qi9cKpMRXS +IGrs/CIBKM+GuIAeqcwRpTzyFrNHnfzSgCHEy9BHcEGhyoMZCCxt8l13nIoUE9Q2 +HJLw5QY33KbmkJs4j1xrG0aGQ0JfPgEHU1RdZX33inOhmlRaHylDFCfChQ+1iHsa +O5S3HWCntZznKWlXWpuTekMwGwPXYshApqr8ZORK15FTAaggiG6cX0S5y2CBNOxv +033aSF/rtJC8LakcC6wc1aJoIIAE1vyxjy+7SjENSoYc6+I2KSb12tjE8nVhz36u +dmNKekBlk4f4HoCMhuWG1o8O/FMsYOgWYRqiPkN7zTlgVGr18okmAWiDSKIz6MkE +kbIRNBE+6tBDGR8Dk5AM/1E9V/RBbuHLoL7ryWPNbczk+DaqaJ3tvV2XcEQNtg41 +3OEMXbugUZTLfhbrES+jkkXITHHZvMmZUldGL1DPvTVp9D0VzgalLA8+9oG6lLvD +u79leNKGef9JOxqDDPDeeOzI8k1MGt6CKfjBWtrt7uYnXuhF0J0cUahoq0Tj0Itq +4/g7u9xN12TyUb7mqqta6THuBrxzvxNiCp/HuZc= +-----END CERTIFICATE----- + +# Issuer: CN=T-TeleSec GlobalRoot Class 3 O=T-Systems Enterprise Services GmbH OU=T-Systems Trust Center +# Subject: CN=T-TeleSec GlobalRoot Class 3 O=T-Systems Enterprise Services GmbH OU=T-Systems Trust Center +# Label: "T-TeleSec GlobalRoot Class 3" +# Serial: 1 +# MD5 Fingerprint: ca:fb:40:a8:4e:39:92:8a:1d:fe:8e:2f:c4:27:ea:ef +# SHA1 Fingerprint: 55:a6:72:3e:cb:f2:ec:cd:c3:23:74:70:19:9d:2a:be:11:e3:81:d1 +# SHA256 Fingerprint: fd:73:da:d3:1c:64:4f:f1:b4:3b:ef:0c:cd:da:96:71:0b:9c:d9:87:5e:ca:7e:31:70:7a:f3:e9:6d:52:2b:bd +-----BEGIN CERTIFICATE----- +MIIDwzCCAqugAwIBAgIBATANBgkqhkiG9w0BAQsFADCBgjELMAkGA1UEBhMCREUx +KzApBgNVBAoMIlQtU3lzdGVtcyBFbnRlcnByaXNlIFNlcnZpY2VzIEdtYkgxHzAd +BgNVBAsMFlQtU3lzdGVtcyBUcnVzdCBDZW50ZXIxJTAjBgNVBAMMHFQtVGVsZVNl +YyBHbG9iYWxSb290IENsYXNzIDMwHhcNMDgxMDAxMTAyOTU2WhcNMzMxMDAxMjM1 +OTU5WjCBgjELMAkGA1UEBhMCREUxKzApBgNVBAoMIlQtU3lzdGVtcyBFbnRlcnBy +aXNlIFNlcnZpY2VzIEdtYkgxHzAdBgNVBAsMFlQtU3lzdGVtcyBUcnVzdCBDZW50 +ZXIxJTAjBgNVBAMMHFQtVGVsZVNlYyBHbG9iYWxSb290IENsYXNzIDMwggEiMA0G +CSqGSIb3DQEBAQUAA4IBDwAwggEKAoIBAQC9dZPwYiJvJK7genasfb3ZJNW4t/zN +8ELg63iIVl6bmlQdTQyK9tPPcPRStdiTBONGhnFBSivwKixVA9ZIw+A5OO3yXDw/ +RLyTPWGrTs0NvvAgJ1gORH8EGoel15YUNpDQSXuhdfsaa3Ox+M6pCSzyU9XDFES4 +hqX2iys52qMzVNn6chr3IhUciJFrf2blw2qAsCTz34ZFiP0Zf3WHHx+xGwpzJFu5 +ZeAsVMhg02YXP+HMVDNzkQI6pn97djmiH5a2OK61yJN0HZ65tOVgnS9W0eDrXltM +EnAMbEQgqxHY9Bn20pxSN+f6tsIxO0rUFJmtxxr1XV/6B7h8DR/Wgx6zAgMBAAGj +QjBAMA8GA1UdEwEB/wQFMAMBAf8wDgYDVR0PAQH/BAQDAgEGMB0GA1UdDgQWBBS1 +A/d2O2GCahKqGFPrAyGUv/7OyjANBgkqhkiG9w0BAQsFAAOCAQEAVj3vlNW92nOy +WL6ukK2YJ5f+AbGwUgC4TeQbIXQbfsDuXmkqJa9c1h3a0nnJ85cp4IaH3gRZD/FZ +1GSFS5mvJQQeyUapl96Cshtwn5z2r3Ex3XsFpSzTucpH9sry9uetuUg/vBa3wW30 +6gmv7PO15wWeph6KU1HWk4HMdJP2udqmJQV0eVp+QD6CSyYRMG7hP0HHRwA11fXT +91Q+gT3aSWqas+8QPebrb9HIIkfLzM8BMZLZGOMivgkeGj5asuRrDFR6fUNOuIml +e9eiPZaGzPImNC1qkp2aGtAw4l1OBLBfiyB+d8E9lYLRRpo7PHi4b6HQDWSieB4p +TpPDpFQUWw== +-----END CERTIFICATE----- + +# Issuer: CN=D-TRUST Root Class 3 CA 2 2009 O=D-Trust GmbH +# Subject: CN=D-TRUST Root Class 3 CA 2 2009 O=D-Trust GmbH +# Label: "D-TRUST Root Class 3 CA 2 2009" +# Serial: 623603 +# MD5 Fingerprint: cd:e0:25:69:8d:47:ac:9c:89:35:90:f7:fd:51:3d:2f +# SHA1 Fingerprint: 58:e8:ab:b0:36:15:33:fb:80:f7:9b:1b:6d:29:d3:ff:8d:5f:00:f0 +# SHA256 Fingerprint: 49:e7:a4:42:ac:f0:ea:62:87:05:00:54:b5:25:64:b6:50:e4:f4:9e:42:e3:48:d6:aa:38:e0:39:e9:57:b1:c1 +-----BEGIN CERTIFICATE----- +MIIEMzCCAxugAwIBAgIDCYPzMA0GCSqGSIb3DQEBCwUAME0xCzAJBgNVBAYTAkRF +MRUwEwYDVQQKDAxELVRydXN0IEdtYkgxJzAlBgNVBAMMHkQtVFJVU1QgUm9vdCBD +bGFzcyAzIENBIDIgMjAwOTAeFw0wOTExMDUwODM1NThaFw0yOTExMDUwODM1NTha +ME0xCzAJBgNVBAYTAkRFMRUwEwYDVQQKDAxELVRydXN0IEdtYkgxJzAlBgNVBAMM +HkQtVFJVU1QgUm9vdCBDbGFzcyAzIENBIDIgMjAwOTCCASIwDQYJKoZIhvcNAQEB +BQADggEPADCCAQoCggEBANOySs96R+91myP6Oi/WUEWJNTrGa9v+2wBoqOADER03 +UAifTUpolDWzU9GUY6cgVq/eUXjsKj3zSEhQPgrfRlWLJ23DEE0NkVJD2IfgXU42 +tSHKXzlABF9bfsyjxiupQB7ZNoTWSPOSHjRGICTBpFGOShrvUD9pXRl/RcPHAY9R +ySPocq60vFYJfxLLHLGvKZAKyVXMD9O0Gu1HNVpK7ZxzBCHQqr0ME7UAyiZsxGsM +lFqVlNpQmvH/pStmMaTJOKDfHR+4CS7zp+hnUquVH+BGPtikw8paxTGA6Eian5Rp +/hnd2HN8gcqW3o7tszIFZYQ05ub9VxC1X3a/L7AQDcUCAwEAAaOCARowggEWMA8G +A1UdEwEB/wQFMAMBAf8wHQYDVR0OBBYEFP3aFMSfMN4hvR5COfyrYyNJ4PGEMA4G +A1UdDwEB/wQEAwIBBjCB0wYDVR0fBIHLMIHIMIGAoH6gfIZ6bGRhcDovL2RpcmVj +dG9yeS5kLXRydXN0Lm5ldC9DTj1ELVRSVVNUJTIwUm9vdCUyMENsYXNzJTIwMyUy +MENBJTIwMiUyMDIwMDksTz1ELVRydXN0JTIwR21iSCxDPURFP2NlcnRpZmljYXRl +cmV2b2NhdGlvbmxpc3QwQ6BBoD+GPWh0dHA6Ly93d3cuZC10cnVzdC5uZXQvY3Js +L2QtdHJ1c3Rfcm9vdF9jbGFzc18zX2NhXzJfMjAwOS5jcmwwDQYJKoZIhvcNAQEL +BQADggEBAH+X2zDI36ScfSF6gHDOFBJpiBSVYEQBrLLpME+bUMJm2H6NMLVwMeni +acfzcNsgFYbQDfC+rAF1hM5+n02/t2A7nPPKHeJeaNijnZflQGDSNiH+0LS4F9p0 +o3/U37CYAqxva2ssJSRyoWXuJVrl5jLn8t+rSfrzkGkj2wTZ51xY/GXUl77M/C4K +zCUqNQT4YJEVdT1B/yMfGchs64JTBKbkTCJNjYy6zltz7GRUUG3RnFX7acM2w4y8 +PIWmawomDeCTmGCufsYkl4phX5GOZpIJhzbNi5stPvZR1FDUWSi9g/LMKHtThm3Y +Johw1+qRzT65ysCQblrGXnRl11z+o+I= +-----END CERTIFICATE----- + +# Issuer: CN=D-TRUST Root Class 3 CA 2 EV 2009 O=D-Trust GmbH +# Subject: CN=D-TRUST Root Class 3 CA 2 EV 2009 O=D-Trust GmbH +# Label: "D-TRUST Root Class 3 CA 2 EV 2009" +# Serial: 623604 +# MD5 Fingerprint: aa:c6:43:2c:5e:2d:cd:c4:34:c0:50:4f:11:02:4f:b6 +# SHA1 Fingerprint: 96:c9:1b:0b:95:b4:10:98:42:fa:d0:d8:22:79:fe:60:fa:b9:16:83 +# SHA256 Fingerprint: ee:c5:49:6b:98:8c:e9:86:25:b9:34:09:2e:ec:29:08:be:d0:b0:f3:16:c2:d4:73:0c:84:ea:f1:f3:d3:48:81 +-----BEGIN CERTIFICATE----- +MIIEQzCCAyugAwIBAgIDCYP0MA0GCSqGSIb3DQEBCwUAMFAxCzAJBgNVBAYTAkRF +MRUwEwYDVQQKDAxELVRydXN0IEdtYkgxKjAoBgNVBAMMIUQtVFJVU1QgUm9vdCBD +bGFzcyAzIENBIDIgRVYgMjAwOTAeFw0wOTExMDUwODUwNDZaFw0yOTExMDUwODUw +NDZaMFAxCzAJBgNVBAYTAkRFMRUwEwYDVQQKDAxELVRydXN0IEdtYkgxKjAoBgNV +BAMMIUQtVFJVU1QgUm9vdCBDbGFzcyAzIENBIDIgRVYgMjAwOTCCASIwDQYJKoZI +hvcNAQEBBQADggEPADCCAQoCggEBAJnxhDRwui+3MKCOvXwEz75ivJn9gpfSegpn +ljgJ9hBOlSJzmY3aFS3nBfwZcyK3jpgAvDw9rKFs+9Z5JUut8Mxk2og+KbgPCdM0 +3TP1YtHhzRnp7hhPTFiu4h7WDFsVWtg6uMQYZB7jM7K1iXdODL/ZlGsTl28So/6Z +qQTMFexgaDbtCHu39b+T7WYxg4zGcTSHThfqr4uRjRxWQa4iN1438h3Z0S0NL2lR +p75mpoo6Kr3HGrHhFPC+Oh25z1uxav60sUYgovseO3Dvk5h9jHOW8sXvhXCtKSb8 +HgQ+HKDYD8tSg2J87otTlZCpV6LqYQXY+U3EJ/pure3511H3a6UCAwEAAaOCASQw +ggEgMA8GA1UdEwEB/wQFMAMBAf8wHQYDVR0OBBYEFNOUikxiEyoZLsyvcop9Ntea +HNxnMA4GA1UdDwEB/wQEAwIBBjCB3QYDVR0fBIHVMIHSMIGHoIGEoIGBhn9sZGFw +Oi8vZGlyZWN0b3J5LmQtdHJ1c3QubmV0L0NOPUQtVFJVU1QlMjBSb290JTIwQ2xh +c3MlMjAzJTIwQ0ElMjAyJTIwRVYlMjAyMDA5LE89RC1UcnVzdCUyMEdtYkgsQz1E +RT9jZXJ0aWZpY2F0ZXJldm9jYXRpb25saXN0MEagRKBChkBodHRwOi8vd3d3LmQt +dHJ1c3QubmV0L2NybC9kLXRydXN0X3Jvb3RfY2xhc3NfM19jYV8yX2V2XzIwMDku +Y3JsMA0GCSqGSIb3DQEBCwUAA4IBAQA07XtaPKSUiO8aEXUHL7P+PPoeUSbrh/Yp +3uDx1MYkCenBz1UbtDDZzhr+BlGmFaQt77JLvyAoJUnRpjZ3NOhk31KxEcdzes05 +nsKtjHEh8lprr988TlWvsoRlFIm5d8sqMb7Po23Pb0iUMkZv53GMoKaEGTcH8gNF +CSuGdXzfX2lXANtu2KZyIktQ1HWYVt+3GP9DQ1CuekR78HlR10M9p9OB0/DJT7na +xpeG0ILD5EJt/rDiZE4OJudANCa1CInXCGNjOCd1HjPqbqjdn5lPdE2BiYBL3ZqX +KVwvvoFBuYz/6n1gBp7N1z3TLqMVvKjmJuVvw9y4AyHqnxbxLFS1 +-----END CERTIFICATE----- + +# Issuer: CN=CA Disig Root R2 O=Disig a.s. +# Subject: CN=CA Disig Root R2 O=Disig a.s. +# Label: "CA Disig Root R2" +# Serial: 10572350602393338211 +# MD5 Fingerprint: 26:01:fb:d8:27:a7:17:9a:45:54:38:1a:43:01:3b:03 +# SHA1 Fingerprint: b5:61:eb:ea:a4:de:e4:25:4b:69:1a:98:a5:57:47:c2:34:c7:d9:71 +# SHA256 Fingerprint: e2:3d:4a:03:6d:7b:70:e9:f5:95:b1:42:20:79:d2:b9:1e:df:bb:1f:b6:51:a0:63:3e:aa:8a:9d:c5:f8:07:03 +-----BEGIN CERTIFICATE----- +MIIFaTCCA1GgAwIBAgIJAJK4iNuwisFjMA0GCSqGSIb3DQEBCwUAMFIxCzAJBgNV +BAYTAlNLMRMwEQYDVQQHEwpCcmF0aXNsYXZhMRMwEQYDVQQKEwpEaXNpZyBhLnMu +MRkwFwYDVQQDExBDQSBEaXNpZyBSb290IFIyMB4XDTEyMDcxOTA5MTUzMFoXDTQy +MDcxOTA5MTUzMFowUjELMAkGA1UEBhMCU0sxEzARBgNVBAcTCkJyYXRpc2xhdmEx +EzARBgNVBAoTCkRpc2lnIGEucy4xGTAXBgNVBAMTEENBIERpc2lnIFJvb3QgUjIw +ggIiMA0GCSqGSIb3DQEBAQUAA4ICDwAwggIKAoICAQCio8QACdaFXS1tFPbCw3Oe +NcJxVX6B+6tGUODBfEl45qt5WDza/3wcn9iXAng+a0EE6UG9vgMsRfYvZNSrXaNH +PWSb6WiaxswbP7q+sos0Ai6YVRn8jG+qX9pMzk0DIaPY0jSTVpbLTAwAFjxfGs3I +x2ymrdMxp7zo5eFm1tL7A7RBZckQrg4FY8aAamkw/dLukO8NJ9+flXP04SXabBbe +QTg06ov80egEFGEtQX6sx3dOy1FU+16SGBsEWmjGycT6txOgmLcRK7fWV8x8nhfR +yyX+hk4kLlYMeE2eARKmK6cBZW58Yh2EhN/qwGu1pSqVg8NTEQxzHQuyRpDRQjrO +QG6Vrf/GlK1ul4SOfW+eioANSW1z4nuSHsPzwfPrLgVv2RvPN3YEyLRa5Beny912 +H9AZdugsBbPWnDTYltxhh5EF5EQIM8HauQhl1K6yNg3ruji6DOWbnuuNZt2Zz9aJ +QfYEkoopKW1rOhzndX0CcQ7zwOe9yxndnWCywmZgtrEE7snmhrmaZkCo5xHtgUUD +i/ZnWejBBhG93c+AAk9lQHhcR1DIm+YfgXvkRKhbhZri3lrVx/k6RGZL5DJUfORs +nLMOPReisjQS1n6yqEm70XooQL6iFh/f5DcfEXP7kAplQ6INfPgGAVUzfbANuPT1 +rqVCV3w2EYx7XsQDnYx5nQIDAQABo0IwQDAPBgNVHRMBAf8EBTADAQH/MA4GA1Ud +DwEB/wQEAwIBBjAdBgNVHQ4EFgQUtZn4r7CU9eMg1gqtzk5WpC5uQu0wDQYJKoZI +hvcNAQELBQADggIBACYGXnDnZTPIgm7ZnBc6G3pmsgH2eDtpXi/q/075KMOYKmFM +tCQSin1tERT3nLXK5ryeJ45MGcipvXrA1zYObYVybqjGom32+nNjf7xueQgcnYqf +GopTpti72TVVsRHFqQOzVju5hJMiXn7B9hJSi+osZ7z+Nkz1uM/Rs0mSO9MpDpkb +lvdhuDvEK7Z4bLQjb/D907JedR+Zlais9trhxTF7+9FGs9K8Z7RiVLoJ92Owk6Ka ++elSLotgEqv89WBW7xBci8QaQtyDW2QOy7W81k/BfDxujRNt+3vrMNDcTa/F1bal +TFtxyegxvug4BkihGuLq0t4SOVga/4AOgnXmt8kHbA7v/zjxmHHEt38OFdAlab0i +nSvtBfZGR6ztwPDUO+Ls7pZbkBNOHlY667DvlruWIxG68kOGdGSVyCh13x01utI3 +gzhTODY7z2zp+WsO0PsE6E9312UBeIYMej4hYvF/Y3EMyZ9E26gnonW+boE+18Dr +G5gPcFw0sorMwIUY6256s/daoQe/qUKS82Ail+QUoQebTnbAjn39pCXHR+3/H3Os +zMOl6W8KjptlwlCFtaOgUxLMVYdh84GuEEZhvUQhuMI9dM9+JDX6HAcOmz0iyu8x +L4ysEr3vQCj8KWefshNPZiTEUxnpHikV7+ZtsH8tZ/3zbBt1RqPlShfppNcL +-----END CERTIFICATE----- + +# Issuer: CN=ACCVRAIZ1 O=ACCV OU=PKIACCV +# Subject: CN=ACCVRAIZ1 O=ACCV OU=PKIACCV +# Label: "ACCVRAIZ1" +# Serial: 6828503384748696800 +# MD5 Fingerprint: d0:a0:5a:ee:05:b6:09:94:21:a1:7d:f1:b2:29:82:02 +# SHA1 Fingerprint: 93:05:7a:88:15:c6:4f:ce:88:2f:fa:91:16:52:28:78:bc:53:64:17 +# SHA256 Fingerprint: 9a:6e:c0:12:e1:a7:da:9d:be:34:19:4d:47:8a:d7:c0:db:18:22:fb:07:1d:f1:29:81:49:6e:d1:04:38:41:13 +-----BEGIN CERTIFICATE----- +MIIH0zCCBbugAwIBAgIIXsO3pkN/pOAwDQYJKoZIhvcNAQEFBQAwQjESMBAGA1UE +AwwJQUNDVlJBSVoxMRAwDgYDVQQLDAdQS0lBQ0NWMQ0wCwYDVQQKDARBQ0NWMQsw +CQYDVQQGEwJFUzAeFw0xMTA1MDUwOTM3MzdaFw0zMDEyMzEwOTM3MzdaMEIxEjAQ +BgNVBAMMCUFDQ1ZSQUlaMTEQMA4GA1UECwwHUEtJQUNDVjENMAsGA1UECgwEQUND +VjELMAkGA1UEBhMCRVMwggIiMA0GCSqGSIb3DQEBAQUAA4ICDwAwggIKAoICAQCb +qau/YUqXry+XZpp0X9DZlv3P4uRm7x8fRzPCRKPfmt4ftVTdFXxpNRFvu8gMjmoY +HtiP2Ra8EEg2XPBjs5BaXCQ316PWywlxufEBcoSwfdtNgM3802/J+Nq2DoLSRYWo +G2ioPej0RGy9ocLLA76MPhMAhN9KSMDjIgro6TenGEyxCQ0jVn8ETdkXhBilyNpA +lHPrzg5XPAOBOp0KoVdDaaxXbXmQeOW1tDvYvEyNKKGno6e6Ak4l0Squ7a4DIrhr +IA8wKFSVf+DuzgpmndFALW4ir50awQUZ0m/A8p/4e7MCQvtQqR0tkw8jq8bBD5L/ +0KIV9VMJcRz/RROE5iZe+OCIHAr8Fraocwa48GOEAqDGWuzndN9wrqODJerWx5eH +k6fGioozl2A3ED6XPm4pFdahD9GILBKfb6qkxkLrQaLjlUPTAYVtjrs78yM2x/47 +4KElB0iryYl0/wiPgL/AlmXz7uxLaL2diMMxs0Dx6M/2OLuc5NF/1OVYm3z61PMO +m3WR5LpSLhl+0fXNWhn8ugb2+1KoS5kE3fj5tItQo05iifCHJPqDQsGH+tUtKSpa +cXpkatcnYGMN285J9Y0fkIkyF/hzQ7jSWpOGYdbhdQrqeWZ2iE9x6wQl1gpaepPl +uUsXQA+xtrn13k/c4LOsOxFwYIRKQ26ZIMApcQrAZQIDAQABo4ICyzCCAscwfQYI +KwYBBQUHAQEEcTBvMEwGCCsGAQUFBzAChkBodHRwOi8vd3d3LmFjY3YuZXMvZmls +ZWFkbWluL0FyY2hpdm9zL2NlcnRpZmljYWRvcy9yYWl6YWNjdjEuY3J0MB8GCCsG +AQUFBzABhhNodHRwOi8vb2NzcC5hY2N2LmVzMB0GA1UdDgQWBBTSh7Tj3zcnk1X2 +VuqB5TbMjB4/vTAPBgNVHRMBAf8EBTADAQH/MB8GA1UdIwQYMBaAFNKHtOPfNyeT +VfZW6oHlNsyMHj+9MIIBcwYDVR0gBIIBajCCAWYwggFiBgRVHSAAMIIBWDCCASIG +CCsGAQUFBwICMIIBFB6CARAAQQB1AHQAbwByAGkAZABhAGQAIABkAGUAIABDAGUA +cgB0AGkAZgBpAGMAYQBjAGkA8wBuACAAUgBhAO0AegAgAGQAZQAgAGwAYQAgAEEA +QwBDAFYAIAAoAEEAZwBlAG4AYwBpAGEAIABkAGUAIABUAGUAYwBuAG8AbABvAGcA +7QBhACAAeQAgAEMAZQByAHQAaQBmAGkAYwBhAGMAaQDzAG4AIABFAGwAZQBjAHQA +cgDzAG4AaQBjAGEALAAgAEMASQBGACAAUQA0ADYAMAAxADEANQA2AEUAKQAuACAA +QwBQAFMAIABlAG4AIABoAHQAdABwADoALwAvAHcAdwB3AC4AYQBjAGMAdgAuAGUA +czAwBggrBgEFBQcCARYkaHR0cDovL3d3dy5hY2N2LmVzL2xlZ2lzbGFjaW9uX2Mu +aHRtMFUGA1UdHwROMEwwSqBIoEaGRGh0dHA6Ly93d3cuYWNjdi5lcy9maWxlYWRt +aW4vQXJjaGl2b3MvY2VydGlmaWNhZG9zL3JhaXphY2N2MV9kZXIuY3JsMA4GA1Ud +DwEB/wQEAwIBBjAXBgNVHREEEDAOgQxhY2N2QGFjY3YuZXMwDQYJKoZIhvcNAQEF +BQADggIBAJcxAp/n/UNnSEQU5CmH7UwoZtCPNdpNYbdKl02125DgBS4OxnnQ8pdp +D70ER9m+27Up2pvZrqmZ1dM8MJP1jaGo/AaNRPTKFpV8M9xii6g3+CfYCS0b78gU +JyCpZET/LtZ1qmxNYEAZSUNUY9rizLpm5U9EelvZaoErQNV/+QEnWCzI7UiRfD+m +AM/EKXMRNt6GGT6d7hmKG9Ww7Y49nCrADdg9ZuM8Db3VlFzi4qc1GwQA9j9ajepD +vV+JHanBsMyZ4k0ACtrJJ1vnE5Bc5PUzolVt3OAJTS+xJlsndQAJxGJ3KQhfnlms +tn6tn1QwIgPBHnFk/vk4CpYY3QIUrCPLBhwepH2NDd4nQeit2hW3sCPdK6jT2iWH +7ehVRE2I9DZ+hJp4rPcOVkkO1jMl1oRQQmwgEh0q1b688nCBpHBgvgW1m54ERL5h +I6zppSSMEYCUWqKiuUnSwdzRp+0xESyeGabu4VXhwOrPDYTkF7eifKXeVSUG7szA +h1xA2syVP1XgNce4hL60Xc16gwFy7ofmXx2utYXGJt/mwZrpHgJHnyqobalbz+xF +d3+YJ5oyXSrjhO7FmGYvliAd3djDJ9ew+f7Zfc3Qn48LFFhRny+Lwzgt3uiP1o2H +pPVWQxaZLPSkVrQ0uGE3ycJYgBugl6H8WY3pEfbRD0tVNEYqi4Y7 +-----END CERTIFICATE----- + +# Issuer: CN=TWCA Global Root CA O=TAIWAN-CA OU=Root CA +# Subject: CN=TWCA Global Root CA O=TAIWAN-CA OU=Root CA +# Label: "TWCA Global Root CA" +# Serial: 3262 +# MD5 Fingerprint: f9:03:7e:cf:e6:9e:3c:73:7a:2a:90:07:69:ff:2b:96 +# SHA1 Fingerprint: 9c:bb:48:53:f6:a4:f6:d3:52:a4:e8:32:52:55:60:13:f5:ad:af:65 +# SHA256 Fingerprint: 59:76:90:07:f7:68:5d:0f:cd:50:87:2f:9f:95:d5:75:5a:5b:2b:45:7d:81:f3:69:2b:61:0a:98:67:2f:0e:1b +-----BEGIN CERTIFICATE----- +MIIFQTCCAymgAwIBAgICDL4wDQYJKoZIhvcNAQELBQAwUTELMAkGA1UEBhMCVFcx +EjAQBgNVBAoTCVRBSVdBTi1DQTEQMA4GA1UECxMHUm9vdCBDQTEcMBoGA1UEAxMT +VFdDQSBHbG9iYWwgUm9vdCBDQTAeFw0xMjA2MjcwNjI4MzNaFw0zMDEyMzExNTU5 +NTlaMFExCzAJBgNVBAYTAlRXMRIwEAYDVQQKEwlUQUlXQU4tQ0ExEDAOBgNVBAsT +B1Jvb3QgQ0ExHDAaBgNVBAMTE1RXQ0EgR2xvYmFsIFJvb3QgQ0EwggIiMA0GCSqG +SIb3DQEBAQUAA4ICDwAwggIKAoICAQCwBdvI64zEbooh745NnHEKH1Jw7W2CnJfF +10xORUnLQEK1EjRsGcJ0pDFfhQKX7EMzClPSnIyOt7h52yvVavKOZsTuKwEHktSz +0ALfUPZVr2YOy+BHYC8rMjk1Ujoog/h7FsYYuGLWRyWRzvAZEk2tY/XTP3VfKfCh +MBwqoJimFb3u/Rk28OKRQ4/6ytYQJ0lM793B8YVwm8rqqFpD/G2Gb3PpN0Wp8DbH +zIh1HrtsBv+baz4X7GGqcXzGHaL3SekVtTzWoWH1EfcFbx39Eb7QMAfCKbAJTibc +46KokWofwpFFiFzlmLhxpRUZyXx1EcxwdE8tmx2RRP1WKKD+u4ZqyPpcC1jcxkt2 +yKsi2XMPpfRaAok/T54igu6idFMqPVMnaR1sjjIsZAAmY2E2TqNGtz99sy2sbZCi +laLOz9qC5wc0GZbpuCGqKX6mOL6OKUohZnkfs8O1CWfe1tQHRvMq2uYiN2DLgbYP +oA/pyJV/v1WRBXrPPRXAb94JlAGD1zQbzECl8LibZ9WYkTunhHiVJqRaCPgrdLQA +BDzfuBSO6N+pjWxnkjMdwLfS7JLIvgm/LCkFbwJrnu+8vyq8W8BQj0FwcYeyTbcE +qYSjMq+u7msXi7Kx/mzhkIyIqJdIzshNy/MGz19qCkKxHh53L46g5pIOBvwFItIm +4TFRfTLcDwIDAQABoyMwITAOBgNVHQ8BAf8EBAMCAQYwDwYDVR0TAQH/BAUwAwEB +/zANBgkqhkiG9w0BAQsFAAOCAgEAXzSBdu+WHdXltdkCY4QWwa6gcFGn90xHNcgL +1yg9iXHZqjNB6hQbbCEAwGxCGX6faVsgQt+i0trEfJdLjbDorMjupWkEmQqSpqsn +LhpNgb+E1HAerUf+/UqdM+DyucRFCCEK2mlpc3INvjT+lIutwx4116KD7+U4x6WF +H6vPNOw/KP4M8VeGTslV9xzU2KV9Bnpv1d8Q34FOIWWxtuEXeZVFBs5fzNxGiWNo +RI2T9GRwoD2dKAXDOXC4Ynsg/eTb6QihuJ49CcdP+yz4k3ZB3lLg4VfSnQO8d57+ +nile98FRYB/e2guyLXW3Q0iT5/Z5xoRdgFlglPx4mI88k1HtQJAH32RjJMtOcQWh +15QaiDLxInQirqWm2BJpTGCjAu4r7NRjkgtevi92a6O2JryPA9gK8kxkRr05YuWW +6zRjESjMlfGt7+/cgFhI6Uu46mWs6fyAtbXIRfmswZ/ZuepiiI7E8UuDEq3mi4TW +nsLrgxifarsbJGAzcMzs9zLzXNl5fe+epP7JI8Mk7hWSsT2RTyaGvWZzJBPqpK5j +wa19hAM8EHiGG3njxPPyBJUgriOCxLM6AGK/5jYk4Ve6xx6QddVfP5VhK8E7zeWz +aGHQRiapIVJpLesux+t3zqY6tQMzT3bR51xUAV3LePTJDL/PEo4XLSNolOer/qmy +KwbQBM0= +-----END CERTIFICATE----- + +# Issuer: CN=T-TeleSec GlobalRoot Class 2 O=T-Systems Enterprise Services GmbH OU=T-Systems Trust Center +# Subject: CN=T-TeleSec GlobalRoot Class 2 O=T-Systems Enterprise Services GmbH OU=T-Systems Trust Center +# Label: "T-TeleSec GlobalRoot Class 2" +# Serial: 1 +# MD5 Fingerprint: 2b:9b:9e:e4:7b:6c:1f:00:72:1a:cc:c1:77:79:df:6a +# SHA1 Fingerprint: 59:0d:2d:7d:88:4f:40:2e:61:7e:a5:62:32:17:65:cf:17:d8:94:e9 +# SHA256 Fingerprint: 91:e2:f5:78:8d:58:10:eb:a7:ba:58:73:7d:e1:54:8a:8e:ca:cd:01:45:98:bc:0b:14:3e:04:1b:17:05:25:52 +-----BEGIN CERTIFICATE----- +MIIDwzCCAqugAwIBAgIBATANBgkqhkiG9w0BAQsFADCBgjELMAkGA1UEBhMCREUx +KzApBgNVBAoMIlQtU3lzdGVtcyBFbnRlcnByaXNlIFNlcnZpY2VzIEdtYkgxHzAd +BgNVBAsMFlQtU3lzdGVtcyBUcnVzdCBDZW50ZXIxJTAjBgNVBAMMHFQtVGVsZVNl +YyBHbG9iYWxSb290IENsYXNzIDIwHhcNMDgxMDAxMTA0MDE0WhcNMzMxMDAxMjM1 +OTU5WjCBgjELMAkGA1UEBhMCREUxKzApBgNVBAoMIlQtU3lzdGVtcyBFbnRlcnBy +aXNlIFNlcnZpY2VzIEdtYkgxHzAdBgNVBAsMFlQtU3lzdGVtcyBUcnVzdCBDZW50 +ZXIxJTAjBgNVBAMMHFQtVGVsZVNlYyBHbG9iYWxSb290IENsYXNzIDIwggEiMA0G +CSqGSIb3DQEBAQUAA4IBDwAwggEKAoIBAQCqX9obX+hzkeXaXPSi5kfl82hVYAUd +AqSzm1nzHoqvNK38DcLZSBnuaY/JIPwhqgcZ7bBcrGXHX+0CfHt8LRvWurmAwhiC +FoT6ZrAIxlQjgeTNuUk/9k9uN0goOA/FvudocP05l03Sx5iRUKrERLMjfTlH6VJi +1hKTXrcxlkIF+3anHqP1wvzpesVsqXFP6st4vGCvx9702cu+fjOlbpSD8DT6Iavq +jnKgP6TeMFvvhk1qlVtDRKgQFRzlAVfFmPHmBiiRqiDFt1MmUUOyCxGVWOHAD3bZ +wI18gfNycJ5v/hqO2V81xrJvNHy+SE/iWjnX2J14np+GPgNeGYtEotXHAgMBAAGj +QjBAMA8GA1UdEwEB/wQFMAMBAf8wDgYDVR0PAQH/BAQDAgEGMB0GA1UdDgQWBBS/ +WSA2AHmgoCJrjNXyYdK4LMuCSjANBgkqhkiG9w0BAQsFAAOCAQEAMQOiYQsfdOhy +NsZt+U2e+iKo4YFWz827n+qrkRk4r6p8FU3ztqONpfSO9kSpp+ghla0+AGIWiPAC +uvxhI+YzmzB6azZie60EI4RYZeLbK4rnJVM3YlNfvNoBYimipidx5joifsFvHZVw +IEoHNN/q/xWA5brXethbdXwFeilHfkCoMRN3zUA7tFFHei4R40cR3p1m0IvVVGb6 +g1XqfMIpiRvpb7PO4gWEyS8+eIVibslfwXhjdFjASBgMmTnrpMwatXlajRWc2BQN +9noHV8cigwUtPJslJj0Ys6lDfMjIq2SPDqO/nBudMNva0Bkuqjzx+zOAduTNrRlP +BSeOE6Fuwg== +-----END CERTIFICATE----- + +# Issuer: CN=QuoVadis Root CA 1 G3 O=QuoVadis Limited +# Subject: CN=QuoVadis Root CA 1 G3 O=QuoVadis Limited +# Label: "QuoVadis Root CA 1 G3" +# Serial: 687049649626669250736271037606554624078720034195 +# MD5 Fingerprint: a4:bc:5b:3f:fe:37:9a:fa:64:f0:e2:fa:05:3d:0b:ab +# SHA1 Fingerprint: 1b:8e:ea:57:96:29:1a:c9:39:ea:b8:0a:81:1a:73:73:c0:93:79:67 +# SHA256 Fingerprint: 8a:86:6f:d1:b2:76:b5:7e:57:8e:92:1c:65:82:8a:2b:ed:58:e9:f2:f2:88:05:41:34:b7:f1:f4:bf:c9:cc:74 +-----BEGIN CERTIFICATE----- +MIIFYDCCA0igAwIBAgIUeFhfLq0sGUvjNwc1NBMotZbUZZMwDQYJKoZIhvcNAQEL +BQAwSDELMAkGA1UEBhMCQk0xGTAXBgNVBAoTEFF1b1ZhZGlzIExpbWl0ZWQxHjAc +BgNVBAMTFVF1b1ZhZGlzIFJvb3QgQ0EgMSBHMzAeFw0xMjAxMTIxNzI3NDRaFw00 +MjAxMTIxNzI3NDRaMEgxCzAJBgNVBAYTAkJNMRkwFwYDVQQKExBRdW9WYWRpcyBM +aW1pdGVkMR4wHAYDVQQDExVRdW9WYWRpcyBSb290IENBIDEgRzMwggIiMA0GCSqG +SIb3DQEBAQUAA4ICDwAwggIKAoICAQCgvlAQjunybEC0BJyFuTHK3C3kEakEPBtV +wedYMB0ktMPvhd6MLOHBPd+C5k+tR4ds7FtJwUrVu4/sh6x/gpqG7D0DmVIB0jWe +rNrwU8lmPNSsAgHaJNM7qAJGr6Qc4/hzWHa39g6QDbXwz8z6+cZM5cOGMAqNF341 +68Xfuw6cwI2H44g4hWf6Pser4BOcBRiYz5P1sZK0/CPTz9XEJ0ngnjybCKOLXSoh +4Pw5qlPafX7PGglTvF0FBM+hSo+LdoINofjSxxR3W5A2B4GbPgb6Ul5jxaYA/qXp +UhtStZI5cgMJYr2wYBZupt0lwgNm3fME0UDiTouG9G/lg6AnhF4EwfWQvTA9xO+o +abw4m6SkltFi2mnAAZauy8RRNOoMqv8hjlmPSlzkYZqn0ukqeI1RPToV7qJZjqlc +3sX5kCLliEVx3ZGZbHqfPT2YfF72vhZooF6uCyP8Wg+qInYtyaEQHeTTRCOQiJ/G +KubX9ZqzWB4vMIkIG1SitZgj7Ah3HJVdYdHLiZxfokqRmu8hqkkWCKi9YSgxyXSt +hfbZxbGL0eUQMk1fiyA6PEkfM4VZDdvLCXVDaXP7a3F98N/ETH3Goy7IlXnLc6KO +Tk0k+17kBL5yG6YnLUlamXrXXAkgt3+UuU/xDRxeiEIbEbfnkduebPRq34wGmAOt +zCjvpUfzUwIDAQABo0IwQDAPBgNVHRMBAf8EBTADAQH/MA4GA1UdDwEB/wQEAwIB +BjAdBgNVHQ4EFgQUo5fW816iEOGrRZ88F2Q87gFwnMwwDQYJKoZIhvcNAQELBQAD +ggIBABj6W3X8PnrHX3fHyt/PX8MSxEBd1DKquGrX1RUVRpgjpeaQWxiZTOOtQqOC +MTaIzen7xASWSIsBx40Bz1szBpZGZnQdT+3Btrm0DWHMY37XLneMlhwqI2hrhVd2 +cDMT/uFPpiN3GPoajOi9ZcnPP/TJF9zrx7zABC4tRi9pZsMbj/7sPtPKlL92CiUN +qXsCHKnQO18LwIE6PWThv6ctTr1NxNgpxiIY0MWscgKCP6o6ojoilzHdCGPDdRS5 +YCgtW2jgFqlmgiNR9etT2DGbe+m3nUvriBbP+V04ikkwj+3x6xn0dxoxGE1nVGwv +b2X52z3sIexe9PSLymBlVNFxZPT5pqOBMzYzcfCkeF9OrYMh3jRJjehZrJ3ydlo2 +8hP0r+AJx2EqbPfgna67hkooby7utHnNkDPDs3b69fBsnQGQ+p6Q9pxyz0fawx/k +NSBT8lTR32GDpgLiJTjehTItXnOQUl1CxM49S+H5GYQd1aJQzEH7QRTDvdbJWqNj +ZgKAvQU6O0ec7AAmTPWIUb+oI38YB7AL7YsmoWTTYUrrXJ/es69nA7Mf3W1daWhp +q1467HxpvMc7hU6eFbm0FU/DlXpY18ls6Wy58yljXrQs8C097Vpl4KlbQMJImYFt +nh8GKjwStIsPm6Ik8KaN1nrgS7ZklmOVhMJKzRwuJIczYOXD +-----END CERTIFICATE----- + +# Issuer: CN=QuoVadis Root CA 2 G3 O=QuoVadis Limited +# Subject: CN=QuoVadis Root CA 2 G3 O=QuoVadis Limited +# Label: "QuoVadis Root CA 2 G3" +# Serial: 390156079458959257446133169266079962026824725800 +# MD5 Fingerprint: af:0c:86:6e:bf:40:2d:7f:0b:3e:12:50:ba:12:3d:06 +# SHA1 Fingerprint: 09:3c:61:f3:8b:8b:dc:7d:55:df:75:38:02:05:00:e1:25:f5:c8:36 +# SHA256 Fingerprint: 8f:e4:fb:0a:f9:3a:4d:0d:67:db:0b:eb:b2:3e:37:c7:1b:f3:25:dc:bc:dd:24:0e:a0:4d:af:58:b4:7e:18:40 +-----BEGIN CERTIFICATE----- +MIIFYDCCA0igAwIBAgIURFc0JFuBiZs18s64KztbpybwdSgwDQYJKoZIhvcNAQEL +BQAwSDELMAkGA1UEBhMCQk0xGTAXBgNVBAoTEFF1b1ZhZGlzIExpbWl0ZWQxHjAc +BgNVBAMTFVF1b1ZhZGlzIFJvb3QgQ0EgMiBHMzAeFw0xMjAxMTIxODU5MzJaFw00 +MjAxMTIxODU5MzJaMEgxCzAJBgNVBAYTAkJNMRkwFwYDVQQKExBRdW9WYWRpcyBM +aW1pdGVkMR4wHAYDVQQDExVRdW9WYWRpcyBSb290IENBIDIgRzMwggIiMA0GCSqG +SIb3DQEBAQUAA4ICDwAwggIKAoICAQChriWyARjcV4g/Ruv5r+LrI3HimtFhZiFf +qq8nUeVuGxbULX1QsFN3vXg6YOJkApt8hpvWGo6t/x8Vf9WVHhLL5hSEBMHfNrMW +n4rjyduYNM7YMxcoRvynyfDStNVNCXJJ+fKH46nafaF9a7I6JaltUkSs+L5u+9ym +c5GQYaYDFCDy54ejiK2toIz/pgslUiXnFgHVy7g1gQyjO/Dh4fxaXc6AcW34Sas+ +O7q414AB+6XrW7PFXmAqMaCvN+ggOp+oMiwMzAkd056OXbxMmO7FGmh77FOm6RQ1 +o9/NgJ8MSPsc9PG/Srj61YxxSscfrf5BmrODXfKEVu+lV0POKa2Mq1W/xPtbAd0j +IaFYAI7D0GoT7RPjEiuA3GfmlbLNHiJuKvhB1PLKFAeNilUSxmn1uIZoL1NesNKq +IcGY5jDjZ1XHm26sGahVpkUG0CM62+tlXSoREfA7T8pt9DTEceT/AFr2XK4jYIVz +8eQQsSWu1ZK7E8EM4DnatDlXtas1qnIhO4M15zHfeiFuuDIIfR0ykRVKYnLP43eh +vNURG3YBZwjgQQvD6xVu+KQZ2aKrr+InUlYrAoosFCT5v0ICvybIxo/gbjh9Uy3l +7ZizlWNof/k19N+IxWA1ksB8aRxhlRbQ694Lrz4EEEVlWFA4r0jyWbYW8jwNkALG +cC4BrTwV1wIDAQABo0IwQDAPBgNVHRMBAf8EBTADAQH/MA4GA1UdDwEB/wQEAwIB +BjAdBgNVHQ4EFgQU7edvdlq/YOxJW8ald7tyFnGbxD0wDQYJKoZIhvcNAQELBQAD +ggIBAJHfgD9DCX5xwvfrs4iP4VGyvD11+ShdyLyZm3tdquXK4Qr36LLTn91nMX66 +AarHakE7kNQIXLJgapDwyM4DYvmL7ftuKtwGTTwpD4kWilhMSA/ohGHqPHKmd+RC +roijQ1h5fq7KpVMNqT1wvSAZYaRsOPxDMuHBR//47PERIjKWnML2W2mWeyAMQ0Ga +W/ZZGYjeVYg3UQt4XAoeo0L9x52ID8DyeAIkVJOviYeIyUqAHerQbj5hLja7NQ4n +lv1mNDthcnPxFlxHBlRJAHpYErAK74X9sbgzdWqTHBLmYF5vHX/JHyPLhGGfHoJE ++V+tYlUkmlKY7VHnoX6XOuYvHxHaU4AshZ6rNRDbIl9qxV6XU/IyAgkwo1jwDQHV +csaxfGl7w/U2Rcxhbl5MlMVerugOXou/983g7aEOGzPuVBj+D77vfoRrQ+NwmNtd +dbINWQeFFSM51vHfqSYP1kjHs6Yi9TM3WpVHn3u6GBVv/9YUZINJ0gpnIdsPNWNg +KCLjsZWDzYWm3S8P52dSbrsvhXz1SnPnxT7AvSESBT/8twNJAlvIJebiVDj1eYeM +HVOyToV7BjjHLPj4sHKNJeV3UvQDHEimUF+IIDBu8oJDqz2XhOdT+yHBTw8imoa4 +WSr2Rz0ZiC3oheGe7IUIarFsNMkd7EgrO3jtZsSOeWmD3n+M +-----END CERTIFICATE----- + +# Issuer: CN=QuoVadis Root CA 3 G3 O=QuoVadis Limited +# Subject: CN=QuoVadis Root CA 3 G3 O=QuoVadis Limited +# Label: "QuoVadis Root CA 3 G3" +# Serial: 268090761170461462463995952157327242137089239581 +# MD5 Fingerprint: df:7d:b9:ad:54:6f:68:a1:df:89:57:03:97:43:b0:d7 +# SHA1 Fingerprint: 48:12:bd:92:3c:a8:c4:39:06:e7:30:6d:27:96:e6:a4:cf:22:2e:7d +# SHA256 Fingerprint: 88:ef:81:de:20:2e:b0:18:45:2e:43:f8:64:72:5c:ea:5f:bd:1f:c2:d9:d2:05:73:07:09:c5:d8:b8:69:0f:46 +-----BEGIN CERTIFICATE----- +MIIFYDCCA0igAwIBAgIULvWbAiin23r/1aOp7r0DoM8Sah0wDQYJKoZIhvcNAQEL +BQAwSDELMAkGA1UEBhMCQk0xGTAXBgNVBAoTEFF1b1ZhZGlzIExpbWl0ZWQxHjAc +BgNVBAMTFVF1b1ZhZGlzIFJvb3QgQ0EgMyBHMzAeFw0xMjAxMTIyMDI2MzJaFw00 +MjAxMTIyMDI2MzJaMEgxCzAJBgNVBAYTAkJNMRkwFwYDVQQKExBRdW9WYWRpcyBM +aW1pdGVkMR4wHAYDVQQDExVRdW9WYWRpcyBSb290IENBIDMgRzMwggIiMA0GCSqG +SIb3DQEBAQUAA4ICDwAwggIKAoICAQCzyw4QZ47qFJenMioKVjZ/aEzHs286IxSR +/xl/pcqs7rN2nXrpixurazHb+gtTTK/FpRp5PIpM/6zfJd5O2YIyC0TeytuMrKNu +FoM7pmRLMon7FhY4futD4tN0SsJiCnMK3UmzV9KwCoWdcTzeo8vAMvMBOSBDGzXR +U7Ox7sWTaYI+FrUoRqHe6okJ7UO4BUaKhvVZR74bbwEhELn9qdIoyhA5CcoTNs+c +ra1AdHkrAj80//ogaX3T7mH1urPnMNA3I4ZyYUUpSFlob3emLoG+B01vr87ERROR +FHAGjx+f+IdpsQ7vw4kZ6+ocYfx6bIrc1gMLnia6Et3UVDmrJqMz6nWB2i3ND0/k +A9HvFZcba5DFApCTZgIhsUfei5pKgLlVj7WiL8DWM2fafsSntARE60f75li59wzw +eyuxwHApw0BiLTtIadwjPEjrewl5qW3aqDCYz4ByA4imW0aucnl8CAMhZa634Ryl +sSqiMd5mBPfAdOhx3v89WcyWJhKLhZVXGqtrdQtEPREoPHtht+KPZ0/l7DxMYIBp +VzgeAVuNVejH38DMdyM0SXV89pgR6y3e7UEuFAUCf+D+IOs15xGsIs5XPd7JMG0Q +A4XN8f+MFrXBsj6IbGB/kE+V9/YtrQE5BwT6dYB9v0lQ7e/JxHwc64B+27bQ3RP+ +ydOc17KXqQIDAQABo0IwQDAPBgNVHRMBAf8EBTADAQH/MA4GA1UdDwEB/wQEAwIB +BjAdBgNVHQ4EFgQUxhfQvKjqAkPyGwaZXSuQILnXnOQwDQYJKoZIhvcNAQELBQAD +ggIBADRh2Va1EodVTd2jNTFGu6QHcrxfYWLopfsLN7E8trP6KZ1/AvWkyaiTt3px +KGmPc+FSkNrVvjrlt3ZqVoAh313m6Tqe5T72omnHKgqwGEfcIHB9UqM+WXzBusnI +FUBhynLWcKzSt/Ac5IYp8M7vaGPQtSCKFWGafoaYtMnCdvvMujAWzKNhxnQT5Wvv +oxXqA/4Ti2Tk08HS6IT7SdEQTXlm66r99I0xHnAUrdzeZxNMgRVhvLfZkXdxGYFg +u/BYpbWcC/ePIlUnwEsBbTuZDdQdm2NnL9DuDcpmvJRPpq3t/O5jrFc/ZSXPsoaP +0Aj/uHYUbt7lJ+yreLVTubY/6CD50qi+YUbKh4yE8/nxoGibIh6BJpsQBJFxwAYf +3KDTuVan45gtf4Od34wrnDKOMpTwATwiKp9Dwi7DmDkHOHv8XgBCH/MyJnmDhPbl +8MFREsALHgQjDFSlTC9JxUrRtm5gDWv8a4uFJGS3iQ6rJUdbPM9+Sb3H6QrG2vd+ +DhcI00iX0HGS8A85PjRqHH3Y8iKuu2n0M7SmSFXRDw4m6Oy2Cy2nhTXN/VnIn9HN +PlopNLk9hM6xZdRZkZFWdSHBd575euFgndOtBBj0fOtek49TSiIp+EgrPk2GrFt/ +ywaZWWDYWGWVjUTR939+J399roD1B0y2PpxxVJkES/1Y+Zj0 +-----END CERTIFICATE----- + +# Issuer: CN=DigiCert Assured ID Root G2 O=DigiCert Inc OU=www.digicert.com +# Subject: CN=DigiCert Assured ID Root G2 O=DigiCert Inc OU=www.digicert.com +# Label: "DigiCert Assured ID Root G2" +# Serial: 15385348160840213938643033620894905419 +# MD5 Fingerprint: 92:38:b9:f8:63:24:82:65:2c:57:33:e6:fe:81:8f:9d +# SHA1 Fingerprint: a1:4b:48:d9:43:ee:0a:0e:40:90:4f:3c:e0:a4:c0:91:93:51:5d:3f +# SHA256 Fingerprint: 7d:05:eb:b6:82:33:9f:8c:94:51:ee:09:4e:eb:fe:fa:79:53:a1:14:ed:b2:f4:49:49:45:2f:ab:7d:2f:c1:85 +-----BEGIN CERTIFICATE----- +MIIDljCCAn6gAwIBAgIQC5McOtY5Z+pnI7/Dr5r0SzANBgkqhkiG9w0BAQsFADBl +MQswCQYDVQQGEwJVUzEVMBMGA1UEChMMRGlnaUNlcnQgSW5jMRkwFwYDVQQLExB3 +d3cuZGlnaWNlcnQuY29tMSQwIgYDVQQDExtEaWdpQ2VydCBBc3N1cmVkIElEIFJv +b3QgRzIwHhcNMTMwODAxMTIwMDAwWhcNMzgwMTE1MTIwMDAwWjBlMQswCQYDVQQG +EwJVUzEVMBMGA1UEChMMRGlnaUNlcnQgSW5jMRkwFwYDVQQLExB3d3cuZGlnaWNl +cnQuY29tMSQwIgYDVQQDExtEaWdpQ2VydCBBc3N1cmVkIElEIFJvb3QgRzIwggEi +MA0GCSqGSIb3DQEBAQUAA4IBDwAwggEKAoIBAQDZ5ygvUj82ckmIkzTz+GoeMVSA +n61UQbVH35ao1K+ALbkKz3X9iaV9JPrjIgwrvJUXCzO/GU1BBpAAvQxNEP4Htecc +biJVMWWXvdMX0h5i89vqbFCMP4QMls+3ywPgym2hFEwbid3tALBSfK+RbLE4E9Hp +EgjAALAcKxHad3A2m67OeYfcgnDmCXRwVWmvo2ifv922ebPynXApVfSr/5Vh88lA +bx3RvpO704gqu52/clpWcTs/1PPRCv4o76Pu2ZmvA9OPYLfykqGxvYmJHzDNw6Yu +YjOuFgJ3RFrngQo8p0Quebg/BLxcoIfhG69Rjs3sLPr4/m3wOnyqi+RnlTGNAgMB +AAGjQjBAMA8GA1UdEwEB/wQFMAMBAf8wDgYDVR0PAQH/BAQDAgGGMB0GA1UdDgQW +BBTOw0q5mVXyuNtgv6l+vVa1lzan1jANBgkqhkiG9w0BAQsFAAOCAQEAyqVVjOPI +QW5pJ6d1Ee88hjZv0p3GeDgdaZaikmkuOGybfQTUiaWxMTeKySHMq2zNixya1r9I +0jJmwYrA8y8678Dj1JGG0VDjA9tzd29KOVPt3ibHtX2vK0LRdWLjSisCx1BL4Gni +lmwORGYQRI+tBev4eaymG+g3NJ1TyWGqolKvSnAWhsI6yLETcDbYz+70CjTVW0z9 +B5yiutkBclzzTcHdDrEcDcRjvq30FPuJ7KJBDkzMyFdA0G4Dqs0MjomZmWzwPDCv +ON9vvKO+KSAnq3T/EyJ43pdSVR6DtVQgA+6uwE9W3jfMw3+qBCe703e4YtsXfJwo +IhNzbM8m9Yop5w== +-----END CERTIFICATE----- + +# Issuer: CN=DigiCert Assured ID Root G3 O=DigiCert Inc OU=www.digicert.com +# Subject: CN=DigiCert Assured ID Root G3 O=DigiCert Inc OU=www.digicert.com +# Label: "DigiCert Assured ID Root G3" +# Serial: 15459312981008553731928384953135426796 +# MD5 Fingerprint: 7c:7f:65:31:0c:81:df:8d:ba:3e:99:e2:5c:ad:6e:fb +# SHA1 Fingerprint: f5:17:a2:4f:9a:48:c6:c9:f8:a2:00:26:9f:dc:0f:48:2c:ab:30:89 +# SHA256 Fingerprint: 7e:37:cb:8b:4c:47:09:0c:ab:36:55:1b:a6:f4:5d:b8:40:68:0f:ba:16:6a:95:2d:b1:00:71:7f:43:05:3f:c2 +-----BEGIN CERTIFICATE----- +MIICRjCCAc2gAwIBAgIQC6Fa+h3foLVJRK/NJKBs7DAKBggqhkjOPQQDAzBlMQsw +CQYDVQQGEwJVUzEVMBMGA1UEChMMRGlnaUNlcnQgSW5jMRkwFwYDVQQLExB3d3cu +ZGlnaWNlcnQuY29tMSQwIgYDVQQDExtEaWdpQ2VydCBBc3N1cmVkIElEIFJvb3Qg +RzMwHhcNMTMwODAxMTIwMDAwWhcNMzgwMTE1MTIwMDAwWjBlMQswCQYDVQQGEwJV +UzEVMBMGA1UEChMMRGlnaUNlcnQgSW5jMRkwFwYDVQQLExB3d3cuZGlnaWNlcnQu +Y29tMSQwIgYDVQQDExtEaWdpQ2VydCBBc3N1cmVkIElEIFJvb3QgRzMwdjAQBgcq +hkjOPQIBBgUrgQQAIgNiAAQZ57ysRGXtzbg/WPuNsVepRC0FFfLvC/8QdJ+1YlJf +Zn4f5dwbRXkLzMZTCp2NXQLZqVneAlr2lSoOjThKiknGvMYDOAdfVdp+CW7if17Q +RSAPWXYQ1qAk8C3eNvJsKTmjQjBAMA8GA1UdEwEB/wQFMAMBAf8wDgYDVR0PAQH/ +BAQDAgGGMB0GA1UdDgQWBBTL0L2p4ZgFUaFNN6KDec6NHSrkhDAKBggqhkjOPQQD +AwNnADBkAjAlpIFFAmsSS3V0T8gj43DydXLefInwz5FyYZ5eEJJZVrmDxxDnOOlY +JjZ91eQ0hjkCMHw2U/Aw5WJjOpnitqM7mzT6HtoQknFekROn3aRukswy1vUhZscv +6pZjamVFkpUBtA== +-----END CERTIFICATE----- + +# Issuer: CN=DigiCert Global Root G2 O=DigiCert Inc OU=www.digicert.com +# Subject: CN=DigiCert Global Root G2 O=DigiCert Inc OU=www.digicert.com +# Label: "DigiCert Global Root G2" +# Serial: 4293743540046975378534879503202253541 +# MD5 Fingerprint: e4:a6:8a:c8:54:ac:52:42:46:0a:fd:72:48:1b:2a:44 +# SHA1 Fingerprint: df:3c:24:f9:bf:d6:66:76:1b:26:80:73:fe:06:d1:cc:8d:4f:82:a4 +# SHA256 Fingerprint: cb:3c:cb:b7:60:31:e5:e0:13:8f:8d:d3:9a:23:f9:de:47:ff:c3:5e:43:c1:14:4c:ea:27:d4:6a:5a:b1:cb:5f +-----BEGIN CERTIFICATE----- +MIIDjjCCAnagAwIBAgIQAzrx5qcRqaC7KGSxHQn65TANBgkqhkiG9w0BAQsFADBh +MQswCQYDVQQGEwJVUzEVMBMGA1UEChMMRGlnaUNlcnQgSW5jMRkwFwYDVQQLExB3 +d3cuZGlnaWNlcnQuY29tMSAwHgYDVQQDExdEaWdpQ2VydCBHbG9iYWwgUm9vdCBH +MjAeFw0xMzA4MDExMjAwMDBaFw0zODAxMTUxMjAwMDBaMGExCzAJBgNVBAYTAlVT +MRUwEwYDVQQKEwxEaWdpQ2VydCBJbmMxGTAXBgNVBAsTEHd3dy5kaWdpY2VydC5j +b20xIDAeBgNVBAMTF0RpZ2lDZXJ0IEdsb2JhbCBSb290IEcyMIIBIjANBgkqhkiG +9w0BAQEFAAOCAQ8AMIIBCgKCAQEAuzfNNNx7a8myaJCtSnX/RrohCgiN9RlUyfuI +2/Ou8jqJkTx65qsGGmvPrC3oXgkkRLpimn7Wo6h+4FR1IAWsULecYxpsMNzaHxmx +1x7e/dfgy5SDN67sH0NO3Xss0r0upS/kqbitOtSZpLYl6ZtrAGCSYP9PIUkY92eQ +q2EGnI/yuum06ZIya7XzV+hdG82MHauVBJVJ8zUtluNJbd134/tJS7SsVQepj5Wz +tCO7TG1F8PapspUwtP1MVYwnSlcUfIKdzXOS0xZKBgyMUNGPHgm+F6HmIcr9g+UQ +vIOlCsRnKPZzFBQ9RnbDhxSJITRNrw9FDKZJobq7nMWxM4MphQIDAQABo0IwQDAP +BgNVHRMBAf8EBTADAQH/MA4GA1UdDwEB/wQEAwIBhjAdBgNVHQ4EFgQUTiJUIBiV +5uNu5g/6+rkS7QYXjzkwDQYJKoZIhvcNAQELBQADggEBAGBnKJRvDkhj6zHd6mcY +1Yl9PMWLSn/pvtsrF9+wX3N3KjITOYFnQoQj8kVnNeyIv/iPsGEMNKSuIEyExtv4 +NeF22d+mQrvHRAiGfzZ0JFrabA0UWTW98kndth/Jsw1HKj2ZL7tcu7XUIOGZX1NG +Fdtom/DzMNU+MeKNhJ7jitralj41E6Vf8PlwUHBHQRFXGU7Aj64GxJUTFy8bJZ91 +8rGOmaFvE7FBcf6IKshPECBV1/MUReXgRPTqh5Uykw7+U0b6LJ3/iyK5S9kJRaTe +pLiaWN0bfVKfjllDiIGknibVb63dDcY3fe0Dkhvld1927jyNxF1WW6LZZm6zNTfl +MrY= +-----END CERTIFICATE----- + +# Issuer: CN=DigiCert Global Root G3 O=DigiCert Inc OU=www.digicert.com +# Subject: CN=DigiCert Global Root G3 O=DigiCert Inc OU=www.digicert.com +# Label: "DigiCert Global Root G3" +# Serial: 7089244469030293291760083333884364146 +# MD5 Fingerprint: f5:5d:a4:50:a5:fb:28:7e:1e:0f:0d:cc:96:57:56:ca +# SHA1 Fingerprint: 7e:04:de:89:6a:3e:66:6d:00:e6:87:d3:3f:fa:d9:3b:e8:3d:34:9e +# SHA256 Fingerprint: 31:ad:66:48:f8:10:41:38:c7:38:f3:9e:a4:32:01:33:39:3e:3a:18:cc:02:29:6e:f9:7c:2a:c9:ef:67:31:d0 +-----BEGIN CERTIFICATE----- +MIICPzCCAcWgAwIBAgIQBVVWvPJepDU1w6QP1atFcjAKBggqhkjOPQQDAzBhMQsw +CQYDVQQGEwJVUzEVMBMGA1UEChMMRGlnaUNlcnQgSW5jMRkwFwYDVQQLExB3d3cu +ZGlnaWNlcnQuY29tMSAwHgYDVQQDExdEaWdpQ2VydCBHbG9iYWwgUm9vdCBHMzAe +Fw0xMzA4MDExMjAwMDBaFw0zODAxMTUxMjAwMDBaMGExCzAJBgNVBAYTAlVTMRUw +EwYDVQQKEwxEaWdpQ2VydCBJbmMxGTAXBgNVBAsTEHd3dy5kaWdpY2VydC5jb20x +IDAeBgNVBAMTF0RpZ2lDZXJ0IEdsb2JhbCBSb290IEczMHYwEAYHKoZIzj0CAQYF +K4EEACIDYgAE3afZu4q4C/sLfyHS8L6+c/MzXRq8NOrexpu80JX28MzQC7phW1FG +fp4tn+6OYwwX7Adw9c+ELkCDnOg/QW07rdOkFFk2eJ0DQ+4QE2xy3q6Ip6FrtUPO +Z9wj/wMco+I+o0IwQDAPBgNVHRMBAf8EBTADAQH/MA4GA1UdDwEB/wQEAwIBhjAd +BgNVHQ4EFgQUs9tIpPmhxdiuNkHMEWNpYim8S8YwCgYIKoZIzj0EAwMDaAAwZQIx +AK288mw/EkrRLTnDCgmXc/SINoyIJ7vmiI1Qhadj+Z4y3maTD/HMsQmP3Wyr+mt/ +oAIwOWZbwmSNuJ5Q3KjVSaLtx9zRSX8XAbjIho9OjIgrqJqpisXRAL34VOKa5Vt8 +sycX +-----END CERTIFICATE----- + +# Issuer: CN=DigiCert Trusted Root G4 O=DigiCert Inc OU=www.digicert.com +# Subject: CN=DigiCert Trusted Root G4 O=DigiCert Inc OU=www.digicert.com +# Label: "DigiCert Trusted Root G4" +# Serial: 7451500558977370777930084869016614236 +# MD5 Fingerprint: 78:f2:fc:aa:60:1f:2f:b4:eb:c9:37:ba:53:2e:75:49 +# SHA1 Fingerprint: dd:fb:16:cd:49:31:c9:73:a2:03:7d:3f:c8:3a:4d:7d:77:5d:05:e4 +# SHA256 Fingerprint: 55:2f:7b:dc:f1:a7:af:9e:6c:e6:72:01:7f:4f:12:ab:f7:72:40:c7:8e:76:1a:c2:03:d1:d9:d2:0a:c8:99:88 +-----BEGIN CERTIFICATE----- +MIIFkDCCA3igAwIBAgIQBZsbV56OITLiOQe9p3d1XDANBgkqhkiG9w0BAQwFADBi +MQswCQYDVQQGEwJVUzEVMBMGA1UEChMMRGlnaUNlcnQgSW5jMRkwFwYDVQQLExB3 +d3cuZGlnaWNlcnQuY29tMSEwHwYDVQQDExhEaWdpQ2VydCBUcnVzdGVkIFJvb3Qg +RzQwHhcNMTMwODAxMTIwMDAwWhcNMzgwMTE1MTIwMDAwWjBiMQswCQYDVQQGEwJV +UzEVMBMGA1UEChMMRGlnaUNlcnQgSW5jMRkwFwYDVQQLExB3d3cuZGlnaWNlcnQu +Y29tMSEwHwYDVQQDExhEaWdpQ2VydCBUcnVzdGVkIFJvb3QgRzQwggIiMA0GCSqG +SIb3DQEBAQUAA4ICDwAwggIKAoICAQC/5pBzaN675F1KPDAiMGkz7MKnJS7JIT3y +ithZwuEppz1Yq3aaza57G4QNxDAf8xukOBbrVsaXbR2rsnnyyhHS5F/WBTxSD1If +xp4VpX6+n6lXFllVcq9ok3DCsrp1mWpzMpTREEQQLt+C8weE5nQ7bXHiLQwb7iDV +ySAdYyktzuxeTsiT+CFhmzTrBcZe7FsavOvJz82sNEBfsXpm7nfISKhmV1efVFiO +DCu3T6cw2Vbuyntd463JT17lNecxy9qTXtyOj4DatpGYQJB5w3jHtrHEtWoYOAMQ +jdjUN6QuBX2I9YI+EJFwq1WCQTLX2wRzKm6RAXwhTNS8rhsDdV14Ztk6MUSaM0C/ +CNdaSaTC5qmgZ92kJ7yhTzm1EVgX9yRcRo9k98FpiHaYdj1ZXUJ2h4mXaXpI8OCi +EhtmmnTK3kse5w5jrubU75KSOp493ADkRSWJtppEGSt+wJS00mFt6zPZxd9LBADM +fRyVw4/3IbKyEbe7f/LVjHAsQWCqsWMYRJUadmJ+9oCw++hkpjPRiQfhvbfmQ6QY +uKZ3AeEPlAwhHbJUKSWJbOUOUlFHdL4mrLZBdd56rF+NP8m800ERElvlEFDrMcXK +chYiCd98THU/Y+whX8QgUWtvsauGi0/C1kVfnSD8oR7FwI+isX4KJpn15GkvmB0t +9dmpsh3lGwIDAQABo0IwQDAPBgNVHRMBAf8EBTADAQH/MA4GA1UdDwEB/wQEAwIB +hjAdBgNVHQ4EFgQU7NfjgtJxXWRM3y5nP+e6mK4cD08wDQYJKoZIhvcNAQEMBQAD +ggIBALth2X2pbL4XxJEbw6GiAI3jZGgPVs93rnD5/ZpKmbnJeFwMDF/k5hQpVgs2 +SV1EY+CtnJYYZhsjDT156W1r1lT40jzBQ0CuHVD1UvyQO7uYmWlrx8GnqGikJ9yd ++SeuMIW59mdNOj6PWTkiU0TryF0Dyu1Qen1iIQqAyHNm0aAFYF/opbSnr6j3bTWc +fFqK1qI4mfN4i/RN0iAL3gTujJtHgXINwBQy7zBZLq7gcfJW5GqXb5JQbZaNaHqa +sjYUegbyJLkJEVDXCLG4iXqEI2FCKeWjzaIgQdfRnGTZ6iahixTXTBmyUEFxPT9N +cCOGDErcgdLMMpSEDQgJlxxPwO5rIHQw0uA5NBCFIRUBCOhVMt5xSdkoF1BN5r5N +0XWs0Mr7QbhDparTwwVETyw2m+L64kW4I1NsBm9nVX9GtUw/bihaeSbSpKhil9Ie +4u1Ki7wb/UdKDd9nZn6yW0HQO+T0O/QEY+nvwlQAUaCKKsnOeMzV6ocEGLPOr0mI +r/OSmbaz5mEP0oUA51Aa5BuVnRmhuZyxm7EAHu/QD09CbMkKvO5D+jpxpchNJqU1 +/YldvIViHTLSoCtU7ZpXwdv6EM8Zt4tKG48BtieVU+i2iW1bvGjUI+iLUaJW+fCm +gKDWHrO8Dw9TdSmq6hN35N6MgSGtBxBHEa2HPQfRdbzP82Z+ +-----END CERTIFICATE----- + +# Issuer: CN=COMODO RSA Certification Authority O=COMODO CA Limited +# Subject: CN=COMODO RSA Certification Authority O=COMODO CA Limited +# Label: "COMODO RSA Certification Authority" +# Serial: 101909084537582093308941363524873193117 +# MD5 Fingerprint: 1b:31:b0:71:40:36:cc:14:36:91:ad:c4:3e:fd:ec:18 +# SHA1 Fingerprint: af:e5:d2:44:a8:d1:19:42:30:ff:47:9f:e2:f8:97:bb:cd:7a:8c:b4 +# SHA256 Fingerprint: 52:f0:e1:c4:e5:8e:c6:29:29:1b:60:31:7f:07:46:71:b8:5d:7e:a8:0d:5b:07:27:34:63:53:4b:32:b4:02:34 +-----BEGIN CERTIFICATE----- +MIIF2DCCA8CgAwIBAgIQTKr5yttjb+Af907YWwOGnTANBgkqhkiG9w0BAQwFADCB +hTELMAkGA1UEBhMCR0IxGzAZBgNVBAgTEkdyZWF0ZXIgTWFuY2hlc3RlcjEQMA4G +A1UEBxMHU2FsZm9yZDEaMBgGA1UEChMRQ09NT0RPIENBIExpbWl0ZWQxKzApBgNV +BAMTIkNPTU9ETyBSU0EgQ2VydGlmaWNhdGlvbiBBdXRob3JpdHkwHhcNMTAwMTE5 +MDAwMDAwWhcNMzgwMTE4MjM1OTU5WjCBhTELMAkGA1UEBhMCR0IxGzAZBgNVBAgT +EkdyZWF0ZXIgTWFuY2hlc3RlcjEQMA4GA1UEBxMHU2FsZm9yZDEaMBgGA1UEChMR +Q09NT0RPIENBIExpbWl0ZWQxKzApBgNVBAMTIkNPTU9ETyBSU0EgQ2VydGlmaWNh +dGlvbiBBdXRob3JpdHkwggIiMA0GCSqGSIb3DQEBAQUAA4ICDwAwggIKAoICAQCR +6FSS0gpWsawNJN3Fz0RndJkrN6N9I3AAcbxT38T6KhKPS38QVr2fcHK3YX/JSw8X +pz3jsARh7v8Rl8f0hj4K+j5c+ZPmNHrZFGvnnLOFoIJ6dq9xkNfs/Q36nGz637CC +9BR++b7Epi9Pf5l/tfxnQ3K9DADWietrLNPtj5gcFKt+5eNu/Nio5JIk2kNrYrhV +/erBvGy2i/MOjZrkm2xpmfh4SDBF1a3hDTxFYPwyllEnvGfDyi62a+pGx8cgoLEf +Zd5ICLqkTqnyg0Y3hOvozIFIQ2dOciqbXL1MGyiKXCJ7tKuY2e7gUYPDCUZObT6Z ++pUX2nwzV0E8jVHtC7ZcryxjGt9XyD+86V3Em69FmeKjWiS0uqlWPc9vqv9JWL7w +qP/0uK3pN/u6uPQLOvnoQ0IeidiEyxPx2bvhiWC4jChWrBQdnArncevPDt09qZah +SL0896+1DSJMwBGB7FY79tOi4lu3sgQiUpWAk2nojkxl8ZEDLXB0AuqLZxUpaVIC +u9ffUGpVRr+goyhhf3DQw6KqLCGqR84onAZFdr+CGCe01a60y1Dma/RMhnEw6abf +Fobg2P9A3fvQQoh/ozM6LlweQRGBY84YcWsr7KaKtzFcOmpH4MN5WdYgGq/yapiq +crxXStJLnbsQ/LBMQeXtHT1eKJ2czL+zUdqnR+WEUwIDAQABo0IwQDAdBgNVHQ4E +FgQUu69+Aj36pvE8hI6t7jiY7NkyMtQwDgYDVR0PAQH/BAQDAgEGMA8GA1UdEwEB +/wQFMAMBAf8wDQYJKoZIhvcNAQEMBQADggIBAArx1UaEt65Ru2yyTUEUAJNMnMvl +wFTPoCWOAvn9sKIN9SCYPBMtrFaisNZ+EZLpLrqeLppysb0ZRGxhNaKatBYSaVqM +4dc+pBroLwP0rmEdEBsqpIt6xf4FpuHA1sj+nq6PK7o9mfjYcwlYRm6mnPTXJ9OV +2jeDchzTc+CiR5kDOF3VSXkAKRzH7JsgHAckaVd4sjn8OoSgtZx8jb8uk2Intzna +FxiuvTwJaP+EmzzV1gsD41eeFPfR60/IvYcjt7ZJQ3mFXLrrkguhxuhoqEwWsRqZ +CuhTLJK7oQkYdQxlqHvLI7cawiiFwxv/0Cti76R7CZGYZ4wUAc1oBmpjIXUDgIiK +boHGhfKppC3n9KUkEEeDys30jXlYsQab5xoq2Z0B15R97QNKyvDb6KkBPvVWmcke +jkk9u+UJueBPSZI9FoJAzMxZxuY67RIuaTxslbH9qh17f4a+Hg4yRvv7E491f0yL +S0Zj/gA0QHDBw7mh3aZw4gSzQbzpgJHqZJx64SIDqZxubw5lT2yHh17zbqD5daWb +QOhTsiedSrnAdyGN/4fy3ryM7xfft0kL0fJuMAsaDk527RH89elWsn2/x20Kk4yl +0MC2Hb46TpSi125sC8KKfPog88Tk5c0NqMuRkrF8hey1FGlmDoLnzc7ILaZRfyHB +NVOFBkpdn627G190 +-----END CERTIFICATE----- + +# Issuer: CN=USERTrust RSA Certification Authority O=The USERTRUST Network +# Subject: CN=USERTrust RSA Certification Authority O=The USERTRUST Network +# Label: "USERTrust RSA Certification Authority" +# Serial: 2645093764781058787591871645665788717 +# MD5 Fingerprint: 1b:fe:69:d1:91:b7:19:33:a3:72:a8:0f:e1:55:e5:b5 +# SHA1 Fingerprint: 2b:8f:1b:57:33:0d:bb:a2:d0:7a:6c:51:f7:0e:e9:0d:da:b9:ad:8e +# SHA256 Fingerprint: e7:93:c9:b0:2f:d8:aa:13:e2:1c:31:22:8a:cc:b0:81:19:64:3b:74:9c:89:89:64:b1:74:6d:46:c3:d4:cb:d2 +-----BEGIN CERTIFICATE----- +MIIF3jCCA8agAwIBAgIQAf1tMPyjylGoG7xkDjUDLTANBgkqhkiG9w0BAQwFADCB +iDELMAkGA1UEBhMCVVMxEzARBgNVBAgTCk5ldyBKZXJzZXkxFDASBgNVBAcTC0pl +cnNleSBDaXR5MR4wHAYDVQQKExVUaGUgVVNFUlRSVVNUIE5ldHdvcmsxLjAsBgNV +BAMTJVVTRVJUcnVzdCBSU0EgQ2VydGlmaWNhdGlvbiBBdXRob3JpdHkwHhcNMTAw +MjAxMDAwMDAwWhcNMzgwMTE4MjM1OTU5WjCBiDELMAkGA1UEBhMCVVMxEzARBgNV +BAgTCk5ldyBKZXJzZXkxFDASBgNVBAcTC0plcnNleSBDaXR5MR4wHAYDVQQKExVU +aGUgVVNFUlRSVVNUIE5ldHdvcmsxLjAsBgNVBAMTJVVTRVJUcnVzdCBSU0EgQ2Vy +dGlmaWNhdGlvbiBBdXRob3JpdHkwggIiMA0GCSqGSIb3DQEBAQUAA4ICDwAwggIK +AoICAQCAEmUXNg7D2wiz0KxXDXbtzSfTTK1Qg2HiqiBNCS1kCdzOiZ/MPans9s/B +3PHTsdZ7NygRK0faOca8Ohm0X6a9fZ2jY0K2dvKpOyuR+OJv0OwWIJAJPuLodMkY +tJHUYmTbf6MG8YgYapAiPLz+E/CHFHv25B+O1ORRxhFnRghRy4YUVD+8M/5+bJz/ +Fp0YvVGONaanZshyZ9shZrHUm3gDwFA66Mzw3LyeTP6vBZY1H1dat//O+T23LLb2 +VN3I5xI6Ta5MirdcmrS3ID3KfyI0rn47aGYBROcBTkZTmzNg95S+UzeQc0PzMsNT +79uq/nROacdrjGCT3sTHDN/hMq7MkztReJVni+49Vv4M0GkPGw/zJSZrM233bkf6 +c0Plfg6lZrEpfDKEY1WJxA3Bk1QwGROs0303p+tdOmw1XNtB1xLaqUkL39iAigmT +Yo61Zs8liM2EuLE/pDkP2QKe6xJMlXzzawWpXhaDzLhn4ugTncxbgtNMs+1b/97l +c6wjOy0AvzVVdAlJ2ElYGn+SNuZRkg7zJn0cTRe8yexDJtC/QV9AqURE9JnnV4ee +UB9XVKg+/XRjL7FQZQnmWEIuQxpMtPAlR1n6BB6T1CZGSlCBst6+eLf8ZxXhyVeE +Hg9j1uliutZfVS7qXMYoCAQlObgOK6nyTJccBz8NUvXt7y+CDwIDAQABo0IwQDAd +BgNVHQ4EFgQUU3m/WqorSs9UgOHYm8Cd8rIDZsswDgYDVR0PAQH/BAQDAgEGMA8G +A1UdEwEB/wQFMAMBAf8wDQYJKoZIhvcNAQEMBQADggIBAFzUfA3P9wF9QZllDHPF +Up/L+M+ZBn8b2kMVn54CVVeWFPFSPCeHlCjtHzoBN6J2/FNQwISbxmtOuowhT6KO +VWKR82kV2LyI48SqC/3vqOlLVSoGIG1VeCkZ7l8wXEskEVX/JJpuXior7gtNn3/3 +ATiUFJVDBwn7YKnuHKsSjKCaXqeYalltiz8I+8jRRa8YFWSQEg9zKC7F4iRO/Fjs +8PRF/iKz6y+O0tlFYQXBl2+odnKPi4w2r78NBc5xjeambx9spnFixdjQg3IM8WcR +iQycE0xyNN+81XHfqnHd4blsjDwSXWXavVcStkNr/+XeTWYRUc+ZruwXtuhxkYze +Sf7dNXGiFSeUHM9h4ya7b6NnJSFd5t0dCy5oGzuCr+yDZ4XUmFF0sbmZgIn/f3gZ +XHlKYC6SQK5MNyosycdiyA5d9zZbyuAlJQG03RoHnHcAP9Dc1ew91Pq7P8yF1m9/ +qS3fuQL39ZeatTXaw2ewh0qpKJ4jjv9cJ2vhsE/zB+4ALtRZh8tSQZXq9EfX7mRB +VXyNWQKV3WKdwrnuWih0hKWbt5DHDAff9Yk2dDLWKMGwsAvgnEzDHNb842m1R0aB +L6KCq9NjRHDEjf8tM7qtj3u1cIiuPhnPQCjY/MiQu12ZIvVS5ljFH4gxQ+6IHdfG +jjxDah2nGN59PRbxYvnKkKj9 +-----END CERTIFICATE----- + +# Issuer: CN=USERTrust ECC Certification Authority O=The USERTRUST Network +# Subject: CN=USERTrust ECC Certification Authority O=The USERTRUST Network +# Label: "USERTrust ECC Certification Authority" +# Serial: 123013823720199481456569720443997572134 +# MD5 Fingerprint: fa:68:bc:d9:b5:7f:ad:fd:c9:1d:06:83:28:cc:24:c1 +# SHA1 Fingerprint: d1:cb:ca:5d:b2:d5:2a:7f:69:3b:67:4d:e5:f0:5a:1d:0c:95:7d:f0 +# SHA256 Fingerprint: 4f:f4:60:d5:4b:9c:86:da:bf:bc:fc:57:12:e0:40:0d:2b:ed:3f:bc:4d:4f:bd:aa:86:e0:6a:dc:d2:a9:ad:7a +-----BEGIN CERTIFICATE----- +MIICjzCCAhWgAwIBAgIQXIuZxVqUxdJxVt7NiYDMJjAKBggqhkjOPQQDAzCBiDEL +MAkGA1UEBhMCVVMxEzARBgNVBAgTCk5ldyBKZXJzZXkxFDASBgNVBAcTC0plcnNl +eSBDaXR5MR4wHAYDVQQKExVUaGUgVVNFUlRSVVNUIE5ldHdvcmsxLjAsBgNVBAMT +JVVTRVJUcnVzdCBFQ0MgQ2VydGlmaWNhdGlvbiBBdXRob3JpdHkwHhcNMTAwMjAx +MDAwMDAwWhcNMzgwMTE4MjM1OTU5WjCBiDELMAkGA1UEBhMCVVMxEzARBgNVBAgT +Ck5ldyBKZXJzZXkxFDASBgNVBAcTC0plcnNleSBDaXR5MR4wHAYDVQQKExVUaGUg +VVNFUlRSVVNUIE5ldHdvcmsxLjAsBgNVBAMTJVVTRVJUcnVzdCBFQ0MgQ2VydGlm +aWNhdGlvbiBBdXRob3JpdHkwdjAQBgcqhkjOPQIBBgUrgQQAIgNiAAQarFRaqflo +I+d61SRvU8Za2EurxtW20eZzca7dnNYMYf3boIkDuAUU7FfO7l0/4iGzzvfUinng +o4N+LZfQYcTxmdwlkWOrfzCjtHDix6EznPO/LlxTsV+zfTJ/ijTjeXmjQjBAMB0G +A1UdDgQWBBQ64QmG1M8ZwpZ2dEl23OA1xmNjmjAOBgNVHQ8BAf8EBAMCAQYwDwYD +VR0TAQH/BAUwAwEB/zAKBggqhkjOPQQDAwNoADBlAjA2Z6EWCNzklwBBHU6+4WMB +zzuqQhFkoJ2UOQIReVx7Hfpkue4WQrO/isIJxOzksU0CMQDpKmFHjFJKS04YcPbW +RNZu9YO6bVi9JNlWSOrvxKJGgYhqOkbRqZtNyWHa0V1Xahg= +-----END CERTIFICATE----- + +# Issuer: CN=GlobalSign O=GlobalSign OU=GlobalSign ECC Root CA - R5 +# Subject: CN=GlobalSign O=GlobalSign OU=GlobalSign ECC Root CA - R5 +# Label: "GlobalSign ECC Root CA - R5" +# Serial: 32785792099990507226680698011560947931244 +# MD5 Fingerprint: 9f:ad:3b:1c:02:1e:8a:ba:17:74:38:81:0c:a2:bc:08 +# SHA1 Fingerprint: 1f:24:c6:30:cd:a4:18:ef:20:69:ff:ad:4f:dd:5f:46:3a:1b:69:aa +# SHA256 Fingerprint: 17:9f:bc:14:8a:3d:d0:0f:d2:4e:a1:34:58:cc:43:bf:a7:f5:9c:81:82:d7:83:a5:13:f6:eb:ec:10:0c:89:24 +-----BEGIN CERTIFICATE----- +MIICHjCCAaSgAwIBAgIRYFlJ4CYuu1X5CneKcflK2GwwCgYIKoZIzj0EAwMwUDEk +MCIGA1UECxMbR2xvYmFsU2lnbiBFQ0MgUm9vdCBDQSAtIFI1MRMwEQYDVQQKEwpH +bG9iYWxTaWduMRMwEQYDVQQDEwpHbG9iYWxTaWduMB4XDTEyMTExMzAwMDAwMFoX +DTM4MDExOTAzMTQwN1owUDEkMCIGA1UECxMbR2xvYmFsU2lnbiBFQ0MgUm9vdCBD +QSAtIFI1MRMwEQYDVQQKEwpHbG9iYWxTaWduMRMwEQYDVQQDEwpHbG9iYWxTaWdu +MHYwEAYHKoZIzj0CAQYFK4EEACIDYgAER0UOlvt9Xb/pOdEh+J8LttV7HpI6SFkc +8GIxLcB6KP4ap1yztsyX50XUWPrRd21DosCHZTQKH3rd6zwzocWdTaRvQZU4f8ke +hOvRnkmSh5SHDDqFSmafnVmTTZdhBoZKo0IwQDAOBgNVHQ8BAf8EBAMCAQYwDwYD +VR0TAQH/BAUwAwEB/zAdBgNVHQ4EFgQUPeYpSJvqB8ohREom3m7e0oPQn1kwCgYI +KoZIzj0EAwMDaAAwZQIxAOVpEslu28YxuglB4Zf4+/2a4n0Sye18ZNPLBSWLVtmg +515dTguDnFt2KaAJJiFqYgIwcdK1j1zqO+F4CYWodZI7yFz9SO8NdCKoCOJuxUnO +xwy8p2Fp8fc74SrL+SvzZpA3 +-----END CERTIFICATE----- + +# Issuer: CN=IdenTrust Commercial Root CA 1 O=IdenTrust +# Subject: CN=IdenTrust Commercial Root CA 1 O=IdenTrust +# Label: "IdenTrust Commercial Root CA 1" +# Serial: 13298821034946342390520003877796839426 +# MD5 Fingerprint: b3:3e:77:73:75:ee:a0:d3:e3:7e:49:63:49:59:bb:c7 +# SHA1 Fingerprint: df:71:7e:aa:4a:d9:4e:c9:55:84:99:60:2d:48:de:5f:bc:f0:3a:25 +# SHA256 Fingerprint: 5d:56:49:9b:e4:d2:e0:8b:cf:ca:d0:8a:3e:38:72:3d:50:50:3b:de:70:69:48:e4:2f:55:60:30:19:e5:28:ae +-----BEGIN CERTIFICATE----- +MIIFYDCCA0igAwIBAgIQCgFCgAAAAUUjyES1AAAAAjANBgkqhkiG9w0BAQsFADBK +MQswCQYDVQQGEwJVUzESMBAGA1UEChMJSWRlblRydXN0MScwJQYDVQQDEx5JZGVu +VHJ1c3QgQ29tbWVyY2lhbCBSb290IENBIDEwHhcNMTQwMTE2MTgxMjIzWhcNMzQw +MTE2MTgxMjIzWjBKMQswCQYDVQQGEwJVUzESMBAGA1UEChMJSWRlblRydXN0MScw +JQYDVQQDEx5JZGVuVHJ1c3QgQ29tbWVyY2lhbCBSb290IENBIDEwggIiMA0GCSqG +SIb3DQEBAQUAA4ICDwAwggIKAoICAQCnUBneP5k91DNG8W9RYYKyqU+PZ4ldhNlT +3Qwo2dfw/66VQ3KZ+bVdfIrBQuExUHTRgQ18zZshq0PirK1ehm7zCYofWjK9ouuU ++ehcCuz/mNKvcbO0U59Oh++SvL3sTzIwiEsXXlfEU8L2ApeN2WIrvyQfYo3fw7gp +S0l4PJNgiCL8mdo2yMKi1CxUAGc1bnO/AljwpN3lsKImesrgNqUZFvX9t++uP0D1 +bVoE/c40yiTcdCMbXTMTEl3EASX2MN0CXZ/g1Ue9tOsbobtJSdifWwLziuQkkORi +T0/Br4sOdBeo0XKIanoBScy0RnnGF7HamB4HWfp1IYVl3ZBWzvurpWCdxJ35UrCL +vYf5jysjCiN2O/cz4ckA82n5S6LgTrx+kzmEB/dEcH7+B1rlsazRGMzyNeVJSQjK +Vsk9+w8YfYs7wRPCTY/JTw436R+hDmrfYi7LNQZReSzIJTj0+kuniVyc0uMNOYZK +dHzVWYfCP04MXFL0PfdSgvHqo6z9STQaKPNBiDoT7uje/5kdX7rL6B7yuVBgwDHT +c+XvvqDtMwt0viAgxGds8AgDelWAf0ZOlqf0Hj7h9tgJ4TNkK2PXMl6f+cB7D3hv +l7yTmvmcEpB4eoCHFddydJxVdHixuuFucAS6T6C6aMN7/zHwcz09lCqxC0EOoP5N +iGVreTO01wIDAQABo0IwQDAOBgNVHQ8BAf8EBAMCAQYwDwYDVR0TAQH/BAUwAwEB +/zAdBgNVHQ4EFgQU7UQZwNPwBovupHu+QucmVMiONnYwDQYJKoZIhvcNAQELBQAD +ggIBAA2ukDL2pkt8RHYZYR4nKM1eVO8lvOMIkPkp165oCOGUAFjvLi5+U1KMtlwH +6oi6mYtQlNeCgN9hCQCTrQ0U5s7B8jeUeLBfnLOic7iPBZM4zY0+sLj7wM+x8uwt +LRvM7Kqas6pgghstO8OEPVeKlh6cdbjTMM1gCIOQ045U8U1mwF10A0Cj7oV+wh93 +nAbowacYXVKV7cndJZ5t+qntozo00Fl72u1Q8zW/7esUTTHHYPTa8Yec4kjixsU3 ++wYQ+nVZZjFHKdp2mhzpgq7vmrlR94gjmmmVYjzlVYA211QC//G5Xc7UI2/YRYRK +W2XviQzdFKcgyxilJbQN+QHwotL0AMh0jqEqSI5l2xPE4iUXfeu+h1sXIFRRk0pT +AwvsXcoz7WL9RccvW9xYoIA55vrX/hMUpu09lEpCdNTDd1lzzY9GvlU47/rokTLq +l1gEIt44w8y8bckzOmoKaT+gyOpyj4xjhiO9bTyWnpXgSUyqorkqG5w2gXjtw+hG +4iZZRHUe2XWJUc0QhJ1hYMtd+ZciTY6Y5uN/9lu7rs3KSoFrXgvzUeF0K+l+J6fZ +mUlO+KWA2yUPHGNiiskzZ2s8EIPGrd6ozRaOjfAHN3Gf8qv8QfXBi+wAN10J5U6A +7/qxXDgGpRtK4dw4LTzcqx+QGtVKnO7RcGzM7vRX+Bi6hG6H +-----END CERTIFICATE----- + +# Issuer: CN=IdenTrust Public Sector Root CA 1 O=IdenTrust +# Subject: CN=IdenTrust Public Sector Root CA 1 O=IdenTrust +# Label: "IdenTrust Public Sector Root CA 1" +# Serial: 13298821034946342390521976156843933698 +# MD5 Fingerprint: 37:06:a5:b0:fc:89:9d:ba:f4:6b:8c:1a:64:cd:d5:ba +# SHA1 Fingerprint: ba:29:41:60:77:98:3f:f4:f3:ef:f2:31:05:3b:2e:ea:6d:4d:45:fd +# SHA256 Fingerprint: 30:d0:89:5a:9a:44:8a:26:20:91:63:55:22:d1:f5:20:10:b5:86:7a:ca:e1:2c:78:ef:95:8f:d4:f4:38:9f:2f +-----BEGIN CERTIFICATE----- +MIIFZjCCA06gAwIBAgIQCgFCgAAAAUUjz0Z8AAAAAjANBgkqhkiG9w0BAQsFADBN +MQswCQYDVQQGEwJVUzESMBAGA1UEChMJSWRlblRydXN0MSowKAYDVQQDEyFJZGVu +VHJ1c3QgUHVibGljIFNlY3RvciBSb290IENBIDEwHhcNMTQwMTE2MTc1MzMyWhcN +MzQwMTE2MTc1MzMyWjBNMQswCQYDVQQGEwJVUzESMBAGA1UEChMJSWRlblRydXN0 +MSowKAYDVQQDEyFJZGVuVHJ1c3QgUHVibGljIFNlY3RvciBSb290IENBIDEwggIi +MA0GCSqGSIb3DQEBAQUAA4ICDwAwggIKAoICAQC2IpT8pEiv6EdrCvsnduTyP4o7 +ekosMSqMjbCpwzFrqHd2hCa2rIFCDQjrVVi7evi8ZX3yoG2LqEfpYnYeEe4IFNGy +RBb06tD6Hi9e28tzQa68ALBKK0CyrOE7S8ItneShm+waOh7wCLPQ5CQ1B5+ctMlS +bdsHyo+1W/CD80/HLaXIrcuVIKQxKFdYWuSNG5qrng0M8gozOSI5Cpcu81N3uURF +/YTLNiCBWS2ab21ISGHKTN9T0a9SvESfqy9rg3LvdYDaBjMbXcjaY8ZNzaxmMc3R +3j6HEDbhuaR672BQssvKplbgN6+rNBM5Jeg5ZuSYeqoSmJxZZoY+rfGwyj4GD3vw +EUs3oERte8uojHH01bWRNszwFcYr3lEXsZdMUD2xlVl8BX0tIdUAvwFnol57plzy +9yLxkA2T26pEUWbMfXYD62qoKjgZl3YNa4ph+bz27nb9cCvdKTz4Ch5bQhyLVi9V +GxyhLrXHFub4qjySjmm2AcG1hp2JDws4lFTo6tyePSW8Uybt1as5qsVATFSrsrTZ +2fjXctscvG29ZV/viDUqZi/u9rNl8DONfJhBaUYPQxxp+pu10GFqzcpL2UyQRqsV +WaFHVCkugyhfHMKiq3IXAAaOReyL4jM9f9oZRORicsPfIsbyVtTdX5Vy7W1f90gD +W/3FKqD2cyOEEBsB5wIDAQABo0IwQDAOBgNVHQ8BAf8EBAMCAQYwDwYDVR0TAQH/ +BAUwAwEB/zAdBgNVHQ4EFgQU43HgntinQtnbcZFrlJPrw6PRFKMwDQYJKoZIhvcN +AQELBQADggIBAEf63QqwEZE4rU1d9+UOl1QZgkiHVIyqZJnYWv6IAcVYpZmxI1Qj +t2odIFflAWJBF9MJ23XLblSQdf4an4EKwt3X9wnQW3IV5B4Jaj0z8yGa5hV+rVHV +DRDtfULAj+7AmgjVQdZcDiFpboBhDhXAuM/FSRJSzL46zNQuOAXeNf0fb7iAaJg9 +TaDKQGXSc3z1i9kKlT/YPyNtGtEqJBnZhbMX73huqVjRI9PHE+1yJX9dsXNw0H8G +lwmEKYBhHfpe/3OsoOOJuBxxFcbeMX8S3OFtm6/n6J91eEyrRjuazr8FGF1NFTwW +mhlQBJqymm9li1JfPFgEKCXAZmExfrngdbkaqIHWchezxQMxNRF4eKLg6TCMf4Df +WN88uieW4oA0beOY02QnrEh+KHdcxiVhJfiFDGX6xDIvpZgF5PgLZxYWxoK4Mhn5 ++bl53B/N66+rDt0b20XkeucC4pVd/GnwU2lhlXV5C15V5jgclKlZM57IcXR5f1GJ +tshquDDIajjDbp7hNxbqBWJMWxJH7ae0s1hWx0nzfxJoCTFx8G34Tkf71oXuxVhA +GaQdp/lLQzfcaFpPz+vCZHTetBXZ9FRUGi8c15dxVJCO2SCdUyt/q4/i6jC8UDfv +8Ue1fXwsBOxonbRJRBD0ckscZOf85muQ3Wl9af0AVqW3rLatt8o+Ae+c +-----END CERTIFICATE----- + +# Issuer: CN=CFCA EV ROOT O=China Financial Certification Authority +# Subject: CN=CFCA EV ROOT O=China Financial Certification Authority +# Label: "CFCA EV ROOT" +# Serial: 407555286 +# MD5 Fingerprint: 74:e1:b6:ed:26:7a:7a:44:30:33:94:ab:7b:27:81:30 +# SHA1 Fingerprint: e2:b8:29:4b:55:84:ab:6b:58:c2:90:46:6c:ac:3f:b8:39:8f:84:83 +# SHA256 Fingerprint: 5c:c3:d7:8e:4e:1d:5e:45:54:7a:04:e6:87:3e:64:f9:0c:f9:53:6d:1c:cc:2e:f8:00:f3:55:c4:c5:fd:70:fd +-----BEGIN CERTIFICATE----- +MIIFjTCCA3WgAwIBAgIEGErM1jANBgkqhkiG9w0BAQsFADBWMQswCQYDVQQGEwJD +TjEwMC4GA1UECgwnQ2hpbmEgRmluYW5jaWFsIENlcnRpZmljYXRpb24gQXV0aG9y +aXR5MRUwEwYDVQQDDAxDRkNBIEVWIFJPT1QwHhcNMTIwODA4MDMwNzAxWhcNMjkx +MjMxMDMwNzAxWjBWMQswCQYDVQQGEwJDTjEwMC4GA1UECgwnQ2hpbmEgRmluYW5j +aWFsIENlcnRpZmljYXRpb24gQXV0aG9yaXR5MRUwEwYDVQQDDAxDRkNBIEVWIFJP +T1QwggIiMA0GCSqGSIb3DQEBAQUAA4ICDwAwggIKAoICAQDXXWvNED8fBVnVBU03 +sQ7smCuOFR36k0sXgiFxEFLXUWRwFsJVaU2OFW2fvwwbwuCjZ9YMrM8irq93VCpL +TIpTUnrD7i7es3ElweldPe6hL6P3KjzJIx1qqx2hp/Hz7KDVRM8Vz3IvHWOX6Jn5 +/ZOkVIBMUtRSqy5J35DNuF++P96hyk0g1CXohClTt7GIH//62pCfCqktQT+x8Rgp +7hZZLDRJGqgG16iI0gNyejLi6mhNbiyWZXvKWfry4t3uMCz7zEasxGPrb382KzRz +EpR/38wmnvFyXVBlWY9ps4deMm/DGIq1lY+wejfeWkU7xzbh72fROdOXW3NiGUgt +hxwG+3SYIElz8AXSG7Ggo7cbcNOIabla1jj0Ytwli3i/+Oh+uFzJlU9fpy25IGvP +a931DfSCt/SyZi4QKPaXWnuWFo8BGS1sbn85WAZkgwGDg8NNkt0yxoekN+kWzqot +aK8KgWU6cMGbrU1tVMoqLUuFG7OA5nBFDWteNfB/O7ic5ARwiRIlk9oKmSJgamNg +TnYGmE69g60dWIolhdLHZR4tjsbftsbhf4oEIRUpdPA+nJCdDC7xij5aqgwJHsfV +PKPtl8MeNPo4+QgO48BdK4PRVmrJtqhUUy54Mmc9gn900PvhtgVguXDbjgv5E1hv +cWAQUhC5wUEJ73IfZzF4/5YFjQIDAQABo2MwYTAfBgNVHSMEGDAWgBTj/i39KNAL +tbq2osS/BqoFjJP7LzAPBgNVHRMBAf8EBTADAQH/MA4GA1UdDwEB/wQEAwIBBjAd +BgNVHQ4EFgQU4/4t/SjQC7W6tqLEvwaqBYyT+y8wDQYJKoZIhvcNAQELBQADggIB +ACXGumvrh8vegjmWPfBEp2uEcwPenStPuiB/vHiyz5ewG5zz13ku9Ui20vsXiObT +ej/tUxPQ4i9qecsAIyjmHjdXNYmEwnZPNDatZ8POQQaIxffu2Bq41gt/UP+TqhdL +jOztUmCypAbqTuv0axn96/Ua4CUqmtzHQTb3yHQFhDmVOdYLO6Qn+gjYXB74BGBS +ESgoA//vU2YApUo0FmZ8/Qmkrp5nGm9BC2sGE5uPhnEFtC+NiWYzKXZUmhH4J/qy +P5Hgzg0b8zAarb8iXRvTvyUFTeGSGn+ZnzxEk8rUQElsgIfXBDrDMlI1Dlb4pd19 +xIsNER9Tyx6yF7Zod1rg1MvIB671Oi6ON7fQAUtDKXeMOZePglr4UeWJoBjnaH9d +Ci77o0cOPaYjesYBx4/IXr9tgFa+iiS6M+qf4TIRnvHST4D2G0CvOJ4RUHlzEhLN +5mydLIhyPDCBBpEi6lmt2hkuIsKNuYyH4Ga8cyNfIWRjgEj1oDwYPZTISEEdQLpe +/v5WOaHIz16eGWRGENoXkbcFgKyLmZJ956LYBws2J+dIeWCKw9cTXPhyQN9Ky8+Z +AAoACxGV2lZFA4gKn2fQ1XmxqI1AbQ3CekD6819kR5LLU7m7Wc5P/dAVUwHY3+vZ +5nbv0CO7O6l5s9UCKc2Jo5YPSjXnTkLAdc0Hz+Ys63su +-----END CERTIFICATE----- + +# Issuer: CN=OISTE WISeKey Global Root GB CA O=WISeKey OU=OISTE Foundation Endorsed +# Subject: CN=OISTE WISeKey Global Root GB CA O=WISeKey OU=OISTE Foundation Endorsed +# Label: "OISTE WISeKey Global Root GB CA" +# Serial: 157768595616588414422159278966750757568 +# MD5 Fingerprint: a4:eb:b9:61:28:2e:b7:2f:98:b0:35:26:90:99:51:1d +# SHA1 Fingerprint: 0f:f9:40:76:18:d3:d7:6a:4b:98:f0:a8:35:9e:0c:fd:27:ac:cc:ed +# SHA256 Fingerprint: 6b:9c:08:e8:6e:b0:f7:67:cf:ad:65:cd:98:b6:21:49:e5:49:4a:67:f5:84:5e:7b:d1:ed:01:9f:27:b8:6b:d6 +-----BEGIN CERTIFICATE----- +MIIDtTCCAp2gAwIBAgIQdrEgUnTwhYdGs/gjGvbCwDANBgkqhkiG9w0BAQsFADBt +MQswCQYDVQQGEwJDSDEQMA4GA1UEChMHV0lTZUtleTEiMCAGA1UECxMZT0lTVEUg +Rm91bmRhdGlvbiBFbmRvcnNlZDEoMCYGA1UEAxMfT0lTVEUgV0lTZUtleSBHbG9i +YWwgUm9vdCBHQiBDQTAeFw0xNDEyMDExNTAwMzJaFw0zOTEyMDExNTEwMzFaMG0x +CzAJBgNVBAYTAkNIMRAwDgYDVQQKEwdXSVNlS2V5MSIwIAYDVQQLExlPSVNURSBG +b3VuZGF0aW9uIEVuZG9yc2VkMSgwJgYDVQQDEx9PSVNURSBXSVNlS2V5IEdsb2Jh +bCBSb290IEdCIENBMIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEA2Be3 +HEokKtaXscriHvt9OO+Y9bI5mE4nuBFde9IllIiCFSZqGzG7qFshISvYD06fWvGx +WuR51jIjK+FTzJlFXHtPrby/h0oLS5daqPZI7H17Dc0hBt+eFf1Biki3IPShehtX +1F1Q/7pn2COZH8g/497/b1t3sWtuuMlk9+HKQUYOKXHQuSP8yYFfTvdv37+ErXNk +u7dCjmn21HYdfp2nuFeKUWdy19SouJVUQHMD9ur06/4oQnc/nSMbsrY9gBQHTC5P +99UKFg29ZkM3fiNDecNAhvVMKdqOmq0NpQSHiB6F4+lT1ZvIiwNjeOvgGUpuuy9r +M2RYk61pv48b74JIxwIDAQABo1EwTzALBgNVHQ8EBAMCAYYwDwYDVR0TAQH/BAUw +AwEB/zAdBgNVHQ4EFgQUNQ/INmNe4qPs+TtmFc5RUuORmj0wEAYJKwYBBAGCNxUB +BAMCAQAwDQYJKoZIhvcNAQELBQADggEBAEBM+4eymYGQfp3FsLAmzYh7KzKNbrgh +cViXfa43FK8+5/ea4n32cZiZBKpDdHij40lhPnOMTZTg+XHEthYOU3gf1qKHLwI5 +gSk8rxWYITD+KJAAjNHhy/peyP34EEY7onhCkRd0VQreUGdNZtGn//3ZwLWoo4rO +ZvUPQ82nK1d7Y0Zqqi5S2PTt4W2tKZB4SLrhI6qjiey1q5bAtEuiHZeeevJuQHHf +aPFlTc58Bd9TZaml8LGXBHAVRgOY1NK/VLSgWH1Sb9pWJmLU2NuJMW8c8CLC02Ic +Nc1MaRVUGpCY3useX8p3x8uOPUNpnJpY0CQ73xtAln41rYHHTnG6iBM= +-----END CERTIFICATE----- + +# Issuer: CN=SZAFIR ROOT CA2 O=Krajowa Izba Rozliczeniowa S.A. +# Subject: CN=SZAFIR ROOT CA2 O=Krajowa Izba Rozliczeniowa S.A. +# Label: "SZAFIR ROOT CA2" +# Serial: 357043034767186914217277344587386743377558296292 +# MD5 Fingerprint: 11:64:c1:89:b0:24:b1:8c:b1:07:7e:89:9e:51:9e:99 +# SHA1 Fingerprint: e2:52:fa:95:3f:ed:db:24:60:bd:6e:28:f3:9c:cc:cf:5e:b3:3f:de +# SHA256 Fingerprint: a1:33:9d:33:28:1a:0b:56:e5:57:d3:d3:2b:1c:e7:f9:36:7e:b0:94:bd:5f:a7:2a:7e:50:04:c8:de:d7:ca:fe +-----BEGIN CERTIFICATE----- +MIIDcjCCAlqgAwIBAgIUPopdB+xV0jLVt+O2XwHrLdzk1uQwDQYJKoZIhvcNAQEL +BQAwUTELMAkGA1UEBhMCUEwxKDAmBgNVBAoMH0tyYWpvd2EgSXpiYSBSb3psaWN6 +ZW5pb3dhIFMuQS4xGDAWBgNVBAMMD1NaQUZJUiBST09UIENBMjAeFw0xNTEwMTkw +NzQzMzBaFw0zNTEwMTkwNzQzMzBaMFExCzAJBgNVBAYTAlBMMSgwJgYDVQQKDB9L +cmFqb3dhIEl6YmEgUm96bGljemVuaW93YSBTLkEuMRgwFgYDVQQDDA9TWkFGSVIg +Uk9PVCBDQTIwggEiMA0GCSqGSIb3DQEBAQUAA4IBDwAwggEKAoIBAQC3vD5QqEvN +QLXOYeeWyrSh2gwisPq1e3YAd4wLz32ohswmUeQgPYUM1ljj5/QqGJ3a0a4m7utT +3PSQ1hNKDJA8w/Ta0o4NkjrcsbH/ON7Dui1fgLkCvUqdGw+0w8LBZwPd3BucPbOw +3gAeqDRHu5rr/gsUvTaE2g0gv/pby6kWIK05YO4vdbbnl5z5Pv1+TW9NL++IDWr6 +3fE9biCloBK0TXC5ztdyO4mTp4CEHCdJckm1/zuVnsHMyAHs6A6KCpbns6aH5db5 +BSsNl0BwPLqsdVqc1U2dAgrSS5tmS0YHF2Wtn2yIANwiieDhZNRnvDF5YTy7ykHN +XGoAyDw4jlivAgMBAAGjQjBAMA8GA1UdEwEB/wQFMAMBAf8wDgYDVR0PAQH/BAQD +AgEGMB0GA1UdDgQWBBQuFqlKGLXLzPVvUPMjX/hd56zwyDANBgkqhkiG9w0BAQsF +AAOCAQEAtXP4A9xZWx126aMqe5Aosk3AM0+qmrHUuOQn/6mWmc5G4G18TKI4pAZw +8PRBEew/R40/cof5O/2kbytTAOD/OblqBw7rHRz2onKQy4I9EYKL0rufKq8h5mOG +nXkZ7/e7DDWQw4rtTw/1zBLZpD67oPwglV9PJi8RI4NOdQcPv5vRtB3pEAT+ymCP +oky4rc/hkA/NrgrHXXu3UNLUYfrVFdvXn4dRVOul4+vJhaAlIDf7js4MNIThPIGy +d05DpYhfhmehPea0XGG2Ptv+tyjFogeutcrKjSoS75ftwjCkySp6+/NNIxuZMzSg +LvWpCz/UXeHPhJ/iGcJfitYgHuNztw== +-----END CERTIFICATE----- + +# Issuer: CN=Certum Trusted Network CA 2 O=Unizeto Technologies S.A. OU=Certum Certification Authority +# Subject: CN=Certum Trusted Network CA 2 O=Unizeto Technologies S.A. OU=Certum Certification Authority +# Label: "Certum Trusted Network CA 2" +# Serial: 44979900017204383099463764357512596969 +# MD5 Fingerprint: 6d:46:9e:d9:25:6d:08:23:5b:5e:74:7d:1e:27:db:f2 +# SHA1 Fingerprint: d3:dd:48:3e:2b:bf:4c:05:e8:af:10:f5:fa:76:26:cf:d3:dc:30:92 +# SHA256 Fingerprint: b6:76:f2:ed:da:e8:77:5c:d3:6c:b0:f6:3c:d1:d4:60:39:61:f4:9e:62:65:ba:01:3a:2f:03:07:b6:d0:b8:04 +-----BEGIN CERTIFICATE----- +MIIF0jCCA7qgAwIBAgIQIdbQSk8lD8kyN/yqXhKN6TANBgkqhkiG9w0BAQ0FADCB +gDELMAkGA1UEBhMCUEwxIjAgBgNVBAoTGVVuaXpldG8gVGVjaG5vbG9naWVzIFMu +QS4xJzAlBgNVBAsTHkNlcnR1bSBDZXJ0aWZpY2F0aW9uIEF1dGhvcml0eTEkMCIG +A1UEAxMbQ2VydHVtIFRydXN0ZWQgTmV0d29yayBDQSAyMCIYDzIwMTExMDA2MDgz +OTU2WhgPMjA0NjEwMDYwODM5NTZaMIGAMQswCQYDVQQGEwJQTDEiMCAGA1UEChMZ +VW5pemV0byBUZWNobm9sb2dpZXMgUy5BLjEnMCUGA1UECxMeQ2VydHVtIENlcnRp +ZmljYXRpb24gQXV0aG9yaXR5MSQwIgYDVQQDExtDZXJ0dW0gVHJ1c3RlZCBOZXR3 +b3JrIENBIDIwggIiMA0GCSqGSIb3DQEBAQUAA4ICDwAwggIKAoICAQC9+Xj45tWA +DGSdhhuWZGc/IjoedQF97/tcZ4zJzFxrqZHmuULlIEub2pt7uZld2ZuAS9eEQCsn +0+i6MLs+CRqnSZXvK0AkwpfHp+6bJe+oCgCXhVqqndwpyeI1B+twTUrWwbNWuKFB +OJvR+zF/j+Bf4bE/D44WSWDXBo0Y+aomEKsq09DRZ40bRr5HMNUuctHFY9rnY3lE +fktjJImGLjQ/KUxSiyqnwOKRKIm5wFv5HdnnJ63/mgKXwcZQkpsCLL2puTRZCr+E +Sv/f/rOf69me4Jgj7KZrdxYq28ytOxykh9xGc14ZYmhFV+SQgkK7QtbwYeDBoz1m +o130GO6IyY0XRSmZMnUCMe4pJshrAua1YkV/NxVaI2iJ1D7eTiew8EAMvE0Xy02i +sx7QBlrd9pPPV3WZ9fqGGmd4s7+W/jTcvedSVuWz5XV710GRBdxdaeOVDUO5/IOW +OZV7bIBaTxNyxtd9KXpEulKkKtVBRgkg/iKgtlswjbyJDNXXcPiHUv3a76xRLgez +Tv7QCdpw75j6VuZt27VXS9zlLCUVyJ4ueE742pyehizKV/Ma5ciSixqClnrDvFAS +adgOWkaLOusm+iPJtrCBvkIApPjW/jAux9JG9uWOdf3yzLnQh1vMBhBgu4M1t15n +3kfsmUjxpKEV/q2MYo45VU85FrmxY53/twIDAQABo0IwQDAPBgNVHRMBAf8EBTAD +AQH/MB0GA1UdDgQWBBS2oVQ5AsOgP46KvPrU+Bym0ToO/TAOBgNVHQ8BAf8EBAMC +AQYwDQYJKoZIhvcNAQENBQADggIBAHGlDs7k6b8/ONWJWsQCYftMxRQXLYtPU2sQ +F/xlhMcQSZDe28cmk4gmb3DWAl45oPePq5a1pRNcgRRtDoGCERuKTsZPpd1iHkTf +CVn0W3cLN+mLIMb4Ck4uWBzrM9DPhmDJ2vuAL55MYIR4PSFk1vtBHxgP58l1cb29 +XN40hz5BsA72udY/CROWFC/emh1auVbONTqwX3BNXuMp8SMoclm2q8KMZiYcdywm +djWLKKdpoPk79SPdhRB0yZADVpHnr7pH1BKXESLjokmUbOe3lEu6LaTaM4tMpkT/ +WjzGHWTYtTHkpjx6qFcL2+1hGsvxznN3Y6SHb0xRONbkX8eftoEq5IVIeVheO/jb +AoJnwTnbw3RLPTYe+SmTiGhbqEQZIfCn6IENLOiTNrQ3ssqwGyZ6miUfmpqAnksq +P/ujmv5zMnHCnsZy4YpoJ/HkD7TETKVhk/iXEAcqMCWpuchxuO9ozC1+9eB+D4Ko +b7a6bINDd82Kkhehnlt4Fj1F4jNy3eFmypnTycUm/Q1oBEauttmbjL4ZvrHG8hnj +XALKLNhvSgfZyTXaQHXyxKcZb55CEJh15pWLYLztxRLXis7VmFxWlgPF7ncGNf/P +5O4/E2Hu29othfDNrp2yGAlFw5Khchf8R7agCyzxxN5DaAhqXzvwdmP7zAYspsbi +DrW5viSP +-----END CERTIFICATE----- + +# Issuer: CN=Hellenic Academic and Research Institutions RootCA 2015 O=Hellenic Academic and Research Institutions Cert. Authority +# Subject: CN=Hellenic Academic and Research Institutions RootCA 2015 O=Hellenic Academic and Research Institutions Cert. Authority +# Label: "Hellenic Academic and Research Institutions RootCA 2015" +# Serial: 0 +# MD5 Fingerprint: ca:ff:e2:db:03:d9:cb:4b:e9:0f:ad:84:fd:7b:18:ce +# SHA1 Fingerprint: 01:0c:06:95:a6:98:19:14:ff:bf:5f:c6:b0:b6:95:ea:29:e9:12:a6 +# SHA256 Fingerprint: a0:40:92:9a:02:ce:53:b4:ac:f4:f2:ff:c6:98:1c:e4:49:6f:75:5e:6d:45:fe:0b:2a:69:2b:cd:52:52:3f:36 +-----BEGIN CERTIFICATE----- +MIIGCzCCA/OgAwIBAgIBADANBgkqhkiG9w0BAQsFADCBpjELMAkGA1UEBhMCR1Ix +DzANBgNVBAcTBkF0aGVuczFEMEIGA1UEChM7SGVsbGVuaWMgQWNhZGVtaWMgYW5k +IFJlc2VhcmNoIEluc3RpdHV0aW9ucyBDZXJ0LiBBdXRob3JpdHkxQDA+BgNVBAMT +N0hlbGxlbmljIEFjYWRlbWljIGFuZCBSZXNlYXJjaCBJbnN0aXR1dGlvbnMgUm9v +dENBIDIwMTUwHhcNMTUwNzA3MTAxMTIxWhcNNDAwNjMwMTAxMTIxWjCBpjELMAkG +A1UEBhMCR1IxDzANBgNVBAcTBkF0aGVuczFEMEIGA1UEChM7SGVsbGVuaWMgQWNh +ZGVtaWMgYW5kIFJlc2VhcmNoIEluc3RpdHV0aW9ucyBDZXJ0LiBBdXRob3JpdHkx +QDA+BgNVBAMTN0hlbGxlbmljIEFjYWRlbWljIGFuZCBSZXNlYXJjaCBJbnN0aXR1 +dGlvbnMgUm9vdENBIDIwMTUwggIiMA0GCSqGSIb3DQEBAQUAA4ICDwAwggIKAoIC +AQDC+Kk/G4n8PDwEXT2QNrCROnk8ZlrvbTkBSRq0t89/TSNTt5AA4xMqKKYx8ZEA +4yjsriFBzh/a/X0SWwGDD7mwX5nh8hKDgE0GPt+sr+ehiGsxr/CL0BgzuNtFajT0 +AoAkKAoCFZVedioNmToUW/bLy1O8E00BiDeUJRtCvCLYjqOWXjrZMts+6PAQZe10 +4S+nfK8nNLspfZu2zwnI5dMK/IhlZXQK3HMcXM1AsRzUtoSMTFDPaI6oWa7CJ06C +ojXdFPQf/7J31Ycvqm59JCfnxssm5uX+Zwdj2EUN3TpZZTlYepKZcj2chF6IIbjV +9Cz82XBST3i4vTwri5WY9bPRaM8gFH5MXF/ni+X1NYEZN9cRCLdmvtNKzoNXADrD +gfgXy5I2XdGj2HUb4Ysn6npIQf1FGQatJ5lOwXBH3bWfgVMS5bGMSF0xQxfjjMZ6 +Y5ZLKTBOhE5iGV48zpeQpX8B653g+IuJ3SWYPZK2fu/Z8VFRfS0myGlZYeCsargq +NhEEelC9MoS+L9xy1dcdFkfkR2YgP/SWxa+OAXqlD3pk9Q0Yh9muiNX6hME6wGko +LfINaFGq46V3xqSQDqE3izEjR8EJCOtu93ib14L8hCCZSRm2Ekax+0VVFqmjZayc +Bw/qa9wfLgZy7IaIEuQt218FL+TwA9MmM+eAws1CoRc0CwIDAQABo0IwQDAPBgNV +HRMBAf8EBTADAQH/MA4GA1UdDwEB/wQEAwIBBjAdBgNVHQ4EFgQUcRVnyMjJvXVd +ctA4GGqd83EkVAswDQYJKoZIhvcNAQELBQADggIBAHW7bVRLqhBYRjTyYtcWNl0I +XtVsyIe9tC5G8jH4fOpCtZMWVdyhDBKg2mF+D1hYc2Ryx+hFjtyp8iY/xnmMsVMI +M4GwVhO+5lFc2JsKT0ucVlMC6U/2DWDqTUJV6HwbISHTGzrMd/K4kPFox/la/vot +9L/J9UUbzjgQKjeKeaO04wlshYaT/4mWJ3iBj2fjRnRUjtkNaeJK9E10A/+yd+2V +Z5fkscWrv2oj6NSU4kQoYsRL4vDY4ilrGnB+JGGTe08DMiUNRSQrlrRGar9KC/ea +j8GsGsVn82800vpzY4zvFrCopEYq+OsS7HK07/grfoxSwIuEVPkvPuNVqNxmsdnh +X9izjFk0WaSrT2y7HxjbdavYy5LNlDhhDgcGH0tGEPEVvo2FXDtKK4F5D7Rpn0lQ +l033DlZdwJVqwjbDG2jJ9SrcR5q+ss7FJej6A7na+RZukYT1HCjI/CbM1xyQVqdf +bzoEvM14iQuODy+jqk+iGxI9FghAD/FGTNeqewjBCvVtJ94Cj8rDtSvK6evIIVM4 +pcw72Hc3MKJP2W/R8kCtQXoXxdZKNYm3QdV8hn9VTYNKpXMgwDqvkPGaJI7ZjnHK +e7iG2rKPmT4dEw0SEe7Uq/DpFXYC5ODfqiAeW2GFZECpkJcNrVPSWh2HagCXZWK0 +vm9qp/UsQu0yrbYhnr68 +-----END CERTIFICATE----- + +# Issuer: CN=Hellenic Academic and Research Institutions ECC RootCA 2015 O=Hellenic Academic and Research Institutions Cert. Authority +# Subject: CN=Hellenic Academic and Research Institutions ECC RootCA 2015 O=Hellenic Academic and Research Institutions Cert. Authority +# Label: "Hellenic Academic and Research Institutions ECC RootCA 2015" +# Serial: 0 +# MD5 Fingerprint: 81:e5:b4:17:eb:c2:f5:e1:4b:0d:41:7b:49:92:fe:ef +# SHA1 Fingerprint: 9f:f1:71:8d:92:d5:9a:f3:7d:74:97:b4:bc:6f:84:68:0b:ba:b6:66 +# SHA256 Fingerprint: 44:b5:45:aa:8a:25:e6:5a:73:ca:15:dc:27:fc:36:d2:4c:1c:b9:95:3a:06:65:39:b1:15:82:dc:48:7b:48:33 +-----BEGIN CERTIFICATE----- +MIICwzCCAkqgAwIBAgIBADAKBggqhkjOPQQDAjCBqjELMAkGA1UEBhMCR1IxDzAN +BgNVBAcTBkF0aGVuczFEMEIGA1UEChM7SGVsbGVuaWMgQWNhZGVtaWMgYW5kIFJl +c2VhcmNoIEluc3RpdHV0aW9ucyBDZXJ0LiBBdXRob3JpdHkxRDBCBgNVBAMTO0hl +bGxlbmljIEFjYWRlbWljIGFuZCBSZXNlYXJjaCBJbnN0aXR1dGlvbnMgRUNDIFJv +b3RDQSAyMDE1MB4XDTE1MDcwNzEwMzcxMloXDTQwMDYzMDEwMzcxMlowgaoxCzAJ +BgNVBAYTAkdSMQ8wDQYDVQQHEwZBdGhlbnMxRDBCBgNVBAoTO0hlbGxlbmljIEFj +YWRlbWljIGFuZCBSZXNlYXJjaCBJbnN0aXR1dGlvbnMgQ2VydC4gQXV0aG9yaXR5 +MUQwQgYDVQQDEztIZWxsZW5pYyBBY2FkZW1pYyBhbmQgUmVzZWFyY2ggSW5zdGl0 +dXRpb25zIEVDQyBSb290Q0EgMjAxNTB2MBAGByqGSM49AgEGBSuBBAAiA2IABJKg +QehLgoRc4vgxEZmGZE4JJS+dQS8KrjVPdJWyUWRrjWvmP3CV8AVER6ZyOFB2lQJa +jq4onvktTpnvLEhvTCUp6NFxW98dwXU3tNf6e3pCnGoKVlp8aQuqgAkkbH7BRqNC +MEAwDwYDVR0TAQH/BAUwAwEB/zAOBgNVHQ8BAf8EBAMCAQYwHQYDVR0OBBYEFLQi +C4KZJAEOnLvkDv2/+5cgk5kqMAoGCCqGSM49BAMCA2cAMGQCMGfOFmI4oqxiRaep +lSTAGiecMjvAwNW6qef4BENThe5SId6d9SWDPp5YSy/XZxMOIQIwBeF1Ad5o7Sof +TUwJCA3sS61kFyjndc5FZXIhF8siQQ6ME5g4mlRtm8rifOoCWCKR +-----END CERTIFICATE----- + +# Issuer: CN=ISRG Root X1 O=Internet Security Research Group +# Subject: CN=ISRG Root X1 O=Internet Security Research Group +# Label: "ISRG Root X1" +# Serial: 172886928669790476064670243504169061120 +# MD5 Fingerprint: 0c:d2:f9:e0:da:17:73:e9:ed:86:4d:a5:e3:70:e7:4e +# SHA1 Fingerprint: ca:bd:2a:79:a1:07:6a:31:f2:1d:25:36:35:cb:03:9d:43:29:a5:e8 +# SHA256 Fingerprint: 96:bc:ec:06:26:49:76:f3:74:60:77:9a:cf:28:c5:a7:cf:e8:a3:c0:aa:e1:1a:8f:fc:ee:05:c0:bd:df:08:c6 +-----BEGIN CERTIFICATE----- +MIIFazCCA1OgAwIBAgIRAIIQz7DSQONZRGPgu2OCiwAwDQYJKoZIhvcNAQELBQAw +TzELMAkGA1UEBhMCVVMxKTAnBgNVBAoTIEludGVybmV0IFNlY3VyaXR5IFJlc2Vh +cmNoIEdyb3VwMRUwEwYDVQQDEwxJU1JHIFJvb3QgWDEwHhcNMTUwNjA0MTEwNDM4 +WhcNMzUwNjA0MTEwNDM4WjBPMQswCQYDVQQGEwJVUzEpMCcGA1UEChMgSW50ZXJu +ZXQgU2VjdXJpdHkgUmVzZWFyY2ggR3JvdXAxFTATBgNVBAMTDElTUkcgUm9vdCBY +MTCCAiIwDQYJKoZIhvcNAQEBBQADggIPADCCAgoCggIBAK3oJHP0FDfzm54rVygc +h77ct984kIxuPOZXoHj3dcKi/vVqbvYATyjb3miGbESTtrFj/RQSa78f0uoxmyF+ +0TM8ukj13Xnfs7j/EvEhmkvBioZxaUpmZmyPfjxwv60pIgbz5MDmgK7iS4+3mX6U +A5/TR5d8mUgjU+g4rk8Kb4Mu0UlXjIB0ttov0DiNewNwIRt18jA8+o+u3dpjq+sW +T8KOEUt+zwvo/7V3LvSye0rgTBIlDHCNAymg4VMk7BPZ7hm/ELNKjD+Jo2FR3qyH +B5T0Y3HsLuJvW5iB4YlcNHlsdu87kGJ55tukmi8mxdAQ4Q7e2RCOFvu396j3x+UC +B5iPNgiV5+I3lg02dZ77DnKxHZu8A/lJBdiB3QW0KtZB6awBdpUKD9jf1b0SHzUv +KBds0pjBqAlkd25HN7rOrFleaJ1/ctaJxQZBKT5ZPt0m9STJEadao0xAH0ahmbWn +OlFuhjuefXKnEgV4We0+UXgVCwOPjdAvBbI+e0ocS3MFEvzG6uBQE3xDk3SzynTn +jh8BCNAw1FtxNrQHusEwMFxIt4I7mKZ9YIqioymCzLq9gwQbooMDQaHWBfEbwrbw +qHyGO0aoSCqI3Haadr8faqU9GY/rOPNk3sgrDQoo//fb4hVC1CLQJ13hef4Y53CI +rU7m2Ys6xt0nUW7/vGT1M0NPAgMBAAGjQjBAMA4GA1UdDwEB/wQEAwIBBjAPBgNV +HRMBAf8EBTADAQH/MB0GA1UdDgQWBBR5tFnme7bl5AFzgAiIyBpY9umbbjANBgkq +hkiG9w0BAQsFAAOCAgEAVR9YqbyyqFDQDLHYGmkgJykIrGF1XIpu+ILlaS/V9lZL +ubhzEFnTIZd+50xx+7LSYK05qAvqFyFWhfFQDlnrzuBZ6brJFe+GnY+EgPbk6ZGQ +3BebYhtF8GaV0nxvwuo77x/Py9auJ/GpsMiu/X1+mvoiBOv/2X/qkSsisRcOj/KK +NFtY2PwByVS5uCbMiogziUwthDyC3+6WVwW6LLv3xLfHTjuCvjHIInNzktHCgKQ5 +ORAzI4JMPJ+GslWYHb4phowim57iaztXOoJwTdwJx4nLCgdNbOhdjsnvzqvHu7Ur +TkXWStAmzOVyyghqpZXjFaH3pO3JLF+l+/+sKAIuvtd7u+Nxe5AW0wdeRlN8NwdC +jNPElpzVmbUq4JUagEiuTDkHzsxHpFKVK7q4+63SM1N95R1NbdWhscdCb+ZAJzVc +oyi3B43njTOQ5yOf+1CceWxG1bQVs5ZufpsMljq4Ui0/1lvh+wjChP4kqKOJ2qxq +4RgqsahDYVvTH9w7jXbyLeiNdd8XM2w9U/t7y0Ff/9yi0GE44Za4rF2LN9d11TPA +mRGunUHBcnWEvgJBQl9nJEiU0Zsnvgc/ubhPgXRR4Xq37Z0j4r7g1SgEEzwxA57d +emyPxgcYxn/eR44/KJ4EBs+lVDR3veyJm+kXQ99b21/+jh5Xos1AnX5iItreGCc= +-----END CERTIFICATE----- + +# Issuer: O=FNMT-RCM OU=AC RAIZ FNMT-RCM +# Subject: O=FNMT-RCM OU=AC RAIZ FNMT-RCM +# Label: "AC RAIZ FNMT-RCM" +# Serial: 485876308206448804701554682760554759 +# MD5 Fingerprint: e2:09:04:b4:d3:bd:d1:a0:14:fd:1a:d2:47:c4:57:1d +# SHA1 Fingerprint: ec:50:35:07:b2:15:c4:95:62:19:e2:a8:9a:5b:42:99:2c:4c:2c:20 +# SHA256 Fingerprint: eb:c5:57:0c:29:01:8c:4d:67:b1:aa:12:7b:af:12:f7:03:b4:61:1e:bc:17:b7:da:b5:57:38:94:17:9b:93:fa +-----BEGIN CERTIFICATE----- +MIIFgzCCA2ugAwIBAgIPXZONMGc2yAYdGsdUhGkHMA0GCSqGSIb3DQEBCwUAMDsx +CzAJBgNVBAYTAkVTMREwDwYDVQQKDAhGTk1ULVJDTTEZMBcGA1UECwwQQUMgUkFJ +WiBGTk1ULVJDTTAeFw0wODEwMjkxNTU5NTZaFw0zMDAxMDEwMDAwMDBaMDsxCzAJ +BgNVBAYTAkVTMREwDwYDVQQKDAhGTk1ULVJDTTEZMBcGA1UECwwQQUMgUkFJWiBG +Tk1ULVJDTTCCAiIwDQYJKoZIhvcNAQEBBQADggIPADCCAgoCggIBALpxgHpMhm5/ +yBNtwMZ9HACXjywMI7sQmkCpGreHiPibVmr75nuOi5KOpyVdWRHbNi63URcfqQgf +BBckWKo3Shjf5TnUV/3XwSyRAZHiItQDwFj8d0fsjz50Q7qsNI1NOHZnjrDIbzAz +WHFctPVrbtQBULgTfmxKo0nRIBnuvMApGGWn3v7v3QqQIecaZ5JCEJhfTzC8PhxF +tBDXaEAUwED653cXeuYLj2VbPNmaUtu1vZ5Gzz3rkQUCwJaydkxNEJY7kvqcfw+Z +374jNUUeAlz+taibmSXaXvMiwzn15Cou08YfxGyqxRxqAQVKL9LFwag0Jl1mpdIC +IfkYtwb1TplvqKtMUejPUBjFd8g5CSxJkjKZqLsXF3mwWsXmo8RZZUc1g16p6DUL +mbvkzSDGm0oGObVo/CK67lWMK07q87Hj/LaZmtVC+nFNCM+HHmpxffnTtOmlcYF7 +wk5HlqX2doWjKI/pgG6BU6VtX7hI+cL5NqYuSf+4lsKMB7ObiFj86xsc3i1w4peS +MKGJ47xVqCfWS+2QrYv6YyVZLag13cqXM7zlzced0ezvXg5KkAYmY6252TUtB7p2 +ZSysV4999AeU14ECll2jB0nVetBX+RvnU0Z1qrB5QstocQjpYL05ac70r8NWQMet +UqIJ5G+GR4of6ygnXYMgrwTJbFaai0b1AgMBAAGjgYMwgYAwDwYDVR0TAQH/BAUw +AwEB/zAOBgNVHQ8BAf8EBAMCAQYwHQYDVR0OBBYEFPd9xf3E6Jobd2Sn9R2gzL+H +YJptMD4GA1UdIAQ3MDUwMwYEVR0gADArMCkGCCsGAQUFBwIBFh1odHRwOi8vd3d3 +LmNlcnQuZm5tdC5lcy9kcGNzLzANBgkqhkiG9w0BAQsFAAOCAgEAB5BK3/MjTvDD +nFFlm5wioooMhfNzKWtN/gHiqQxjAb8EZ6WdmF/9ARP67Jpi6Yb+tmLSbkyU+8B1 +RXxlDPiyN8+sD8+Nb/kZ94/sHvJwnvDKuO+3/3Y3dlv2bojzr2IyIpMNOmqOFGYM +LVN0V2Ue1bLdI4E7pWYjJ2cJj+F3qkPNZVEI7VFY/uY5+ctHhKQV8Xa7pO6kO8Rf +77IzlhEYt8llvhjho6Tc+hj507wTmzl6NLrTQfv6MooqtyuGC2mDOL7Nii4LcK2N +JpLuHvUBKwrZ1pebbuCoGRw6IYsMHkCtA+fdZn71uSANA+iW+YJF1DngoABd15jm +fZ5nc8OaKveri6E6FO80vFIOiZiaBECEHX5FaZNXzuvO+FB8TxxuBEOb+dY7Ixjp +6o7RTUaN8Tvkasq6+yO3m/qZASlaWFot4/nUbQ4mrcFuNLwy+AwF+mWj2zs3gyLp +1txyM/1d8iC9djwj2ij3+RvrWWTV3F9yfiD8zYm1kGdNYno/Tq0dwzn+evQoFt9B +9kiABdcPUXmsEKvU7ANm5mqwujGSQkBqvjrTcuFqN1W8rB2Vt2lh8kORdOag0wok +RqEIr9baRRmW1FMdW4R58MD3R++Lj8UGrp1MYp3/RgT408m2ECVAdf4WqslKYIYv +uu8wd+RU4riEmViAqhOLUTpPSPaLtrM= +-----END CERTIFICATE----- + +# Issuer: CN=Amazon Root CA 1 O=Amazon +# Subject: CN=Amazon Root CA 1 O=Amazon +# Label: "Amazon Root CA 1" +# Serial: 143266978916655856878034712317230054538369994 +# MD5 Fingerprint: 43:c6:bf:ae:ec:fe:ad:2f:18:c6:88:68:30:fc:c8:e6 +# SHA1 Fingerprint: 8d:a7:f9:65:ec:5e:fc:37:91:0f:1c:6e:59:fd:c1:cc:6a:6e:de:16 +# SHA256 Fingerprint: 8e:cd:e6:88:4f:3d:87:b1:12:5b:a3:1a:c3:fc:b1:3d:70:16:de:7f:57:cc:90:4f:e1:cb:97:c6:ae:98:19:6e +-----BEGIN CERTIFICATE----- +MIIDQTCCAimgAwIBAgITBmyfz5m/jAo54vB4ikPmljZbyjANBgkqhkiG9w0BAQsF +ADA5MQswCQYDVQQGEwJVUzEPMA0GA1UEChMGQW1hem9uMRkwFwYDVQQDExBBbWF6 +b24gUm9vdCBDQSAxMB4XDTE1MDUyNjAwMDAwMFoXDTM4MDExNzAwMDAwMFowOTEL +MAkGA1UEBhMCVVMxDzANBgNVBAoTBkFtYXpvbjEZMBcGA1UEAxMQQW1hem9uIFJv +b3QgQ0EgMTCCASIwDQYJKoZIhvcNAQEBBQADggEPADCCAQoCggEBALJ4gHHKeNXj +ca9HgFB0fW7Y14h29Jlo91ghYPl0hAEvrAIthtOgQ3pOsqTQNroBvo3bSMgHFzZM +9O6II8c+6zf1tRn4SWiw3te5djgdYZ6k/oI2peVKVuRF4fn9tBb6dNqcmzU5L/qw +IFAGbHrQgLKm+a/sRxmPUDgH3KKHOVj4utWp+UhnMJbulHheb4mjUcAwhmahRWa6 +VOujw5H5SNz/0egwLX0tdHA114gk957EWW67c4cX8jJGKLhD+rcdqsq08p8kDi1L +93FcXmn/6pUCyziKrlA4b9v7LWIbxcceVOF34GfID5yHI9Y/QCB/IIDEgEw+OyQm +jgSubJrIqg0CAwEAAaNCMEAwDwYDVR0TAQH/BAUwAwEB/zAOBgNVHQ8BAf8EBAMC +AYYwHQYDVR0OBBYEFIQYzIU07LwMlJQuCFmcx7IQTgoIMA0GCSqGSIb3DQEBCwUA +A4IBAQCY8jdaQZChGsV2USggNiMOruYou6r4lK5IpDB/G/wkjUu0yKGX9rbxenDI +U5PMCCjjmCXPI6T53iHTfIUJrU6adTrCC2qJeHZERxhlbI1Bjjt/msv0tadQ1wUs +N+gDS63pYaACbvXy8MWy7Vu33PqUXHeeE6V/Uq2V8viTO96LXFvKWlJbYK8U90vv +o/ufQJVtMVT8QtPHRh8jrdkPSHCa2XV4cdFyQzR1bldZwgJcJmApzyMZFo6IQ6XU +5MsI+yMRQ+hDKXJioaldXgjUkK642M4UwtBV8ob2xJNDd2ZhwLnoQdeXeGADbkpy +rqXRfboQnoZsG4q5WTP468SQvvG5 +-----END CERTIFICATE----- + +# Issuer: CN=Amazon Root CA 2 O=Amazon +# Subject: CN=Amazon Root CA 2 O=Amazon +# Label: "Amazon Root CA 2" +# Serial: 143266982885963551818349160658925006970653239 +# MD5 Fingerprint: c8:e5:8d:ce:a8:42:e2:7a:c0:2a:5c:7c:9e:26:bf:66 +# SHA1 Fingerprint: 5a:8c:ef:45:d7:a6:98:59:76:7a:8c:8b:44:96:b5:78:cf:47:4b:1a +# SHA256 Fingerprint: 1b:a5:b2:aa:8c:65:40:1a:82:96:01:18:f8:0b:ec:4f:62:30:4d:83:ce:c4:71:3a:19:c3:9c:01:1e:a4:6d:b4 +-----BEGIN CERTIFICATE----- +MIIFQTCCAymgAwIBAgITBmyf0pY1hp8KD+WGePhbJruKNzANBgkqhkiG9w0BAQwF +ADA5MQswCQYDVQQGEwJVUzEPMA0GA1UEChMGQW1hem9uMRkwFwYDVQQDExBBbWF6 +b24gUm9vdCBDQSAyMB4XDTE1MDUyNjAwMDAwMFoXDTQwMDUyNjAwMDAwMFowOTEL +MAkGA1UEBhMCVVMxDzANBgNVBAoTBkFtYXpvbjEZMBcGA1UEAxMQQW1hem9uIFJv +b3QgQ0EgMjCCAiIwDQYJKoZIhvcNAQEBBQADggIPADCCAgoCggIBAK2Wny2cSkxK +gXlRmeyKy2tgURO8TW0G/LAIjd0ZEGrHJgw12MBvIITplLGbhQPDW9tK6Mj4kHbZ +W0/jTOgGNk3Mmqw9DJArktQGGWCsN0R5hYGCrVo34A3MnaZMUnbqQ523BNFQ9lXg +1dKmSYXpN+nKfq5clU1Imj+uIFptiJXZNLhSGkOQsL9sBbm2eLfq0OQ6PBJTYv9K +8nu+NQWpEjTj82R0Yiw9AElaKP4yRLuH3WUnAnE72kr3H9rN9yFVkE8P7K6C4Z9r +2UXTu/Bfh+08LDmG2j/e7HJV63mjrdvdfLC6HM783k81ds8P+HgfajZRRidhW+me +z/CiVX18JYpvL7TFz4QuK/0NURBs+18bvBt+xa47mAExkv8LV/SasrlX6avvDXbR +8O70zoan4G7ptGmh32n2M8ZpLpcTnqWHsFcQgTfJU7O7f/aS0ZzQGPSSbtqDT6Zj +mUyl+17vIWR6IF9sZIUVyzfpYgwLKhbcAS4y2j5L9Z469hdAlO+ekQiG+r5jqFoz +7Mt0Q5X5bGlSNscpb/xVA1wf+5+9R+vnSUeVC06JIglJ4PVhHvG/LopyboBZ/1c6 ++XUyo05f7O0oYtlNc/LMgRdg7c3r3NunysV+Ar3yVAhU/bQtCSwXVEqY0VThUWcI +0u1ufm8/0i2BWSlmy5A5lREedCf+3euvAgMBAAGjQjBAMA8GA1UdEwEB/wQFMAMB +Af8wDgYDVR0PAQH/BAQDAgGGMB0GA1UdDgQWBBSwDPBMMPQFWAJI/TPlUq9LhONm +UjANBgkqhkiG9w0BAQwFAAOCAgEAqqiAjw54o+Ci1M3m9Zh6O+oAA7CXDpO8Wqj2 +LIxyh6mx/H9z/WNxeKWHWc8w4Q0QshNabYL1auaAn6AFC2jkR2vHat+2/XcycuUY ++gn0oJMsXdKMdYV2ZZAMA3m3MSNjrXiDCYZohMr/+c8mmpJ5581LxedhpxfL86kS +k5Nrp+gvU5LEYFiwzAJRGFuFjWJZY7attN6a+yb3ACfAXVU3dJnJUH/jWS5E4ywl +7uxMMne0nxrpS10gxdr9HIcWxkPo1LsmmkVwXqkLN1PiRnsn/eBG8om3zEK2yygm +btmlyTrIQRNg91CMFa6ybRoVGld45pIq2WWQgj9sAq+uEjonljYE1x2igGOpm/Hl +urR8FLBOybEfdF849lHqm/osohHUqS0nGkWxr7JOcQ3AWEbWaQbLU8uz/mtBzUF+ +fUwPfHJ5elnNXkoOrJupmHN5fLT0zLm4BwyydFy4x2+IoZCn9Kr5v2c69BoVYh63 +n749sSmvZ6ES8lgQGVMDMBu4Gon2nL2XA46jCfMdiyHxtN/kHNGfZQIG6lzWE7OE +76KlXIx3KadowGuuQNKotOrN8I1LOJwZmhsoVLiJkO/KdYE+HvJkJMcYr07/R54H +9jVlpNMKVv/1F2Rs76giJUmTtt8AF9pYfl3uxRuw0dFfIRDH+fO6AgonB8Xx1sfT +4PsJYGw= +-----END CERTIFICATE----- + +# Issuer: CN=Amazon Root CA 3 O=Amazon +# Subject: CN=Amazon Root CA 3 O=Amazon +# Label: "Amazon Root CA 3" +# Serial: 143266986699090766294700635381230934788665930 +# MD5 Fingerprint: a0:d4:ef:0b:f7:b5:d8:49:95:2a:ec:f5:c4:fc:81:87 +# SHA1 Fingerprint: 0d:44:dd:8c:3c:8c:1a:1a:58:75:64:81:e9:0f:2e:2a:ff:b3:d2:6e +# SHA256 Fingerprint: 18:ce:6c:fe:7b:f1:4e:60:b2:e3:47:b8:df:e8:68:cb:31:d0:2e:bb:3a:da:27:15:69:f5:03:43:b4:6d:b3:a4 +-----BEGIN CERTIFICATE----- +MIIBtjCCAVugAwIBAgITBmyf1XSXNmY/Owua2eiedgPySjAKBggqhkjOPQQDAjA5 +MQswCQYDVQQGEwJVUzEPMA0GA1UEChMGQW1hem9uMRkwFwYDVQQDExBBbWF6b24g +Um9vdCBDQSAzMB4XDTE1MDUyNjAwMDAwMFoXDTQwMDUyNjAwMDAwMFowOTELMAkG +A1UEBhMCVVMxDzANBgNVBAoTBkFtYXpvbjEZMBcGA1UEAxMQQW1hem9uIFJvb3Qg +Q0EgMzBZMBMGByqGSM49AgEGCCqGSM49AwEHA0IABCmXp8ZBf8ANm+gBG1bG8lKl +ui2yEujSLtf6ycXYqm0fc4E7O5hrOXwzpcVOho6AF2hiRVd9RFgdszflZwjrZt6j +QjBAMA8GA1UdEwEB/wQFMAMBAf8wDgYDVR0PAQH/BAQDAgGGMB0GA1UdDgQWBBSr +ttvXBp43rDCGB5Fwx5zEGbF4wDAKBggqhkjOPQQDAgNJADBGAiEA4IWSoxe3jfkr +BqWTrBqYaGFy+uGh0PsceGCmQ5nFuMQCIQCcAu/xlJyzlvnrxir4tiz+OpAUFteM +YyRIHN8wfdVoOw== +-----END CERTIFICATE----- + +# Issuer: CN=Amazon Root CA 4 O=Amazon +# Subject: CN=Amazon Root CA 4 O=Amazon +# Label: "Amazon Root CA 4" +# Serial: 143266989758080763974105200630763877849284878 +# MD5 Fingerprint: 89:bc:27:d5:eb:17:8d:06:6a:69:d5:fd:89:47:b4:cd +# SHA1 Fingerprint: f6:10:84:07:d6:f8:bb:67:98:0c:c2:e2:44:c2:eb:ae:1c:ef:63:be +# SHA256 Fingerprint: e3:5d:28:41:9e:d0:20:25:cf:a6:90:38:cd:62:39:62:45:8d:a5:c6:95:fb:de:a3:c2:2b:0b:fb:25:89:70:92 +-----BEGIN CERTIFICATE----- +MIIB8jCCAXigAwIBAgITBmyf18G7EEwpQ+Vxe3ssyBrBDjAKBggqhkjOPQQDAzA5 +MQswCQYDVQQGEwJVUzEPMA0GA1UEChMGQW1hem9uMRkwFwYDVQQDExBBbWF6b24g +Um9vdCBDQSA0MB4XDTE1MDUyNjAwMDAwMFoXDTQwMDUyNjAwMDAwMFowOTELMAkG +A1UEBhMCVVMxDzANBgNVBAoTBkFtYXpvbjEZMBcGA1UEAxMQQW1hem9uIFJvb3Qg +Q0EgNDB2MBAGByqGSM49AgEGBSuBBAAiA2IABNKrijdPo1MN/sGKe0uoe0ZLY7Bi +9i0b2whxIdIA6GO9mif78DluXeo9pcmBqqNbIJhFXRbb/egQbeOc4OO9X4Ri83Bk +M6DLJC9wuoihKqB1+IGuYgbEgds5bimwHvouXKNCMEAwDwYDVR0TAQH/BAUwAwEB +/zAOBgNVHQ8BAf8EBAMCAYYwHQYDVR0OBBYEFNPsxzplbszh2naaVvuc84ZtV+WB +MAoGCCqGSM49BAMDA2gAMGUCMDqLIfG9fhGt0O9Yli/W651+kI0rz2ZVwyzjKKlw +CkcO8DdZEv8tmZQoTipPNU0zWgIxAOp1AE47xDqUEpHJWEadIRNyp4iciuRMStuW +1KyLa2tJElMzrdfkviT8tQp21KW8EA== +-----END CERTIFICATE----- + +# Issuer: CN=TUBITAK Kamu SM SSL Kok Sertifikasi - Surum 1 O=Turkiye Bilimsel ve Teknolojik Arastirma Kurumu - TUBITAK OU=Kamu Sertifikasyon Merkezi - Kamu SM +# Subject: CN=TUBITAK Kamu SM SSL Kok Sertifikasi - Surum 1 O=Turkiye Bilimsel ve Teknolojik Arastirma Kurumu - TUBITAK OU=Kamu Sertifikasyon Merkezi - Kamu SM +# Label: "TUBITAK Kamu SM SSL Kok Sertifikasi - Surum 1" +# Serial: 1 +# MD5 Fingerprint: dc:00:81:dc:69:2f:3e:2f:b0:3b:f6:3d:5a:91:8e:49 +# SHA1 Fingerprint: 31:43:64:9b:ec:ce:27:ec:ed:3a:3f:0b:8f:0d:e4:e8:91:dd:ee:ca +# SHA256 Fingerprint: 46:ed:c3:68:90:46:d5:3a:45:3f:b3:10:4a:b8:0d:ca:ec:65:8b:26:60:ea:16:29:dd:7e:86:79:90:64:87:16 +-----BEGIN CERTIFICATE----- +MIIEYzCCA0ugAwIBAgIBATANBgkqhkiG9w0BAQsFADCB0jELMAkGA1UEBhMCVFIx +GDAWBgNVBAcTD0dlYnplIC0gS29jYWVsaTFCMEAGA1UEChM5VHVya2l5ZSBCaWxp +bXNlbCB2ZSBUZWtub2xvamlrIEFyYXN0aXJtYSBLdXJ1bXUgLSBUVUJJVEFLMS0w +KwYDVQQLEyRLYW11IFNlcnRpZmlrYXN5b24gTWVya2V6aSAtIEthbXUgU00xNjA0 +BgNVBAMTLVRVQklUQUsgS2FtdSBTTSBTU0wgS29rIFNlcnRpZmlrYXNpIC0gU3Vy +dW0gMTAeFw0xMzExMjUwODI1NTVaFw00MzEwMjUwODI1NTVaMIHSMQswCQYDVQQG +EwJUUjEYMBYGA1UEBxMPR2ViemUgLSBLb2NhZWxpMUIwQAYDVQQKEzlUdXJraXll +IEJpbGltc2VsIHZlIFRla25vbG9qaWsgQXJhc3Rpcm1hIEt1cnVtdSAtIFRVQklU +QUsxLTArBgNVBAsTJEthbXUgU2VydGlmaWthc3lvbiBNZXJrZXppIC0gS2FtdSBT +TTE2MDQGA1UEAxMtVFVCSVRBSyBLYW11IFNNIFNTTCBLb2sgU2VydGlmaWthc2kg +LSBTdXJ1bSAxMIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEAr3UwM6q7 +a9OZLBI3hNmNe5eA027n/5tQlT6QlVZC1xl8JoSNkvoBHToP4mQ4t4y86Ij5iySr +LqP1N+RAjhgleYN1Hzv/bKjFxlb4tO2KRKOrbEz8HdDc72i9z+SqzvBV96I01INr +N3wcwv61A+xXzry0tcXtAA9TNypN9E8Mg/uGz8v+jE69h/mniyFXnHrfA2eJLJ2X +YacQuFWQfw4tJzh03+f92k4S400VIgLI4OD8D62K18lUUMw7D8oWgITQUVbDjlZ/ +iSIzL+aFCr2lqBs23tPcLG07xxO9WSMs5uWk99gL7eqQQESolbuT1dCANLZGeA4f +AJNG4e7p+exPFwIDAQABo0IwQDAdBgNVHQ4EFgQUZT/HiobGPN08VFw1+DrtUgxH +V8gwDgYDVR0PAQH/BAQDAgEGMA8GA1UdEwEB/wQFMAMBAf8wDQYJKoZIhvcNAQEL +BQADggEBACo/4fEyjq7hmFxLXs9rHmoJ0iKpEsdeV31zVmSAhHqT5Am5EM2fKifh +AHe+SMg1qIGf5LgsyX8OsNJLN13qudULXjS99HMpw+0mFZx+CFOKWI3QSyjfwbPf +IPP54+M638yclNhOT8NrF7f3cuitZjO1JVOr4PhMqZ398g26rrnZqsZr+ZO7rqu4 +lzwDGrpDxpa5RXI4s6ehlj2Re37AIVNMh+3yC1SVUZPVIqUNivGTDj5UDrDYyU7c +8jEyVupk+eq1nRZmQnLzf9OxMUP8pI4X8W0jq5Rm+K37DwhuJi1/FwcJsoz7UMCf +lo3Ptv0AnVoUmr8CRPXBwp8iXqIPoeM= +-----END CERTIFICATE----- + +# Issuer: CN=GDCA TrustAUTH R5 ROOT O=GUANG DONG CERTIFICATE AUTHORITY CO.,LTD. +# Subject: CN=GDCA TrustAUTH R5 ROOT O=GUANG DONG CERTIFICATE AUTHORITY CO.,LTD. +# Label: "GDCA TrustAUTH R5 ROOT" +# Serial: 9009899650740120186 +# MD5 Fingerprint: 63:cc:d9:3d:34:35:5c:6f:53:a3:e2:08:70:48:1f:b4 +# SHA1 Fingerprint: 0f:36:38:5b:81:1a:25:c3:9b:31:4e:83:ca:e9:34:66:70:cc:74:b4 +# SHA256 Fingerprint: bf:ff:8f:d0:44:33:48:7d:6a:8a:a6:0c:1a:29:76:7a:9f:c2:bb:b0:5e:42:0f:71:3a:13:b9:92:89:1d:38:93 +-----BEGIN CERTIFICATE----- +MIIFiDCCA3CgAwIBAgIIfQmX/vBH6nowDQYJKoZIhvcNAQELBQAwYjELMAkGA1UE +BhMCQ04xMjAwBgNVBAoMKUdVQU5HIERPTkcgQ0VSVElGSUNBVEUgQVVUSE9SSVRZ +IENPLixMVEQuMR8wHQYDVQQDDBZHRENBIFRydXN0QVVUSCBSNSBST09UMB4XDTE0 +MTEyNjA1MTMxNVoXDTQwMTIzMTE1NTk1OVowYjELMAkGA1UEBhMCQ04xMjAwBgNV +BAoMKUdVQU5HIERPTkcgQ0VSVElGSUNBVEUgQVVUSE9SSVRZIENPLixMVEQuMR8w +HQYDVQQDDBZHRENBIFRydXN0QVVUSCBSNSBST09UMIICIjANBgkqhkiG9w0BAQEF +AAOCAg8AMIICCgKCAgEA2aMW8Mh0dHeb7zMNOwZ+Vfy1YI92hhJCfVZmPoiC7XJj +Dp6L3TQsAlFRwxn9WVSEyfFrs0yw6ehGXTjGoqcuEVe6ghWinI9tsJlKCvLriXBj +TnnEt1u9ol2x8kECK62pOqPseQrsXzrj/e+APK00mxqriCZ7VqKChh/rNYmDf1+u +KU49tm7srsHwJ5uu4/Ts765/94Y9cnrrpftZTqfrlYwiOXnhLQiPzLyRuEH3FMEj +qcOtmkVEs7LXLM3GKeJQEK5cy4KOFxg2fZfmiJqwTTQJ9Cy5WmYqsBebnh52nUpm +MUHfP/vFBu8btn4aRjb3ZGM74zkYI+dndRTVdVeSN72+ahsmUPI2JgaQxXABZG12 +ZuGR224HwGGALrIuL4xwp9E7PLOR5G62xDtw8mySlwnNR30YwPO7ng/Wi64HtloP +zgsMR6flPri9fcebNaBhlzpBdRfMK5Z3KpIhHtmVdiBnaM8Nvd/WHwlqmuLMc3Gk +L30SgLdTMEZeS1SZD2fJpcjyIMGC7J0R38IC+xo70e0gmu9lZJIQDSri3nDxGGeC +jGHeuLzRL5z7D9Ar7Rt2ueQ5Vfj4oR24qoAATILnsn8JuLwwoC8N9VKejveSswoA +HQBUlwbgsQfZxw9cZX08bVlX5O2ljelAU58VS6Bx9hoh49pwBiFYFIeFd3mqgnkC +AwEAAaNCMEAwHQYDVR0OBBYEFOLJQJ9NzuiaoXzPDj9lxSmIahlRMA8GA1UdEwEB +/wQFMAMBAf8wDgYDVR0PAQH/BAQDAgGGMA0GCSqGSIb3DQEBCwUAA4ICAQDRSVfg +p8xoWLoBDysZzY2wYUWsEe1jUGn4H3++Fo/9nesLqjJHdtJnJO29fDMylyrHBYZm +DRd9FBUb1Ov9H5r2XpdptxolpAqzkT9fNqyL7FeoPueBihhXOYV0GkLH6VsTX4/5 +COmSdI31R9KrO9b7eGZONn356ZLpBN79SWP8bfsUcZNnL0dKt7n/HipzcEYwv1ry +L3ml4Y0M2fmyYzeMN2WFcGpcWwlyua1jPLHd+PwyvzeG5LuOmCd+uh8W4XAR8gPf +JWIyJyYYMoSf/wA6E7qaTfRPuBRwIrHKK5DOKcFw9C+df/KQHtZa37dG/OaG+svg +IHZ6uqbL9XzeYqWxi+7egmaKTjowHz+Ay60nugxe19CxVsp3cbK1daFQqUBDF8Io +2c9Si1vIY9RCPqAzekYu9wogRlR+ak8x8YF+QnQ4ZXMn7sZ8uI7XpTrXmKGcjBBV +09tL7ECQ8s1uV9JiDnxXk7Gnbc2dg7sq5+W2O3FYrf3RRbxake5TFW/TRQl1brqQ +XR4EzzffHqhmsYzmIGrv/EhOdJhCrylvLmrH+33RZjEizIYAfmaDDEL0vTSSwxrq +T8p+ck0LcIymSLumoRT2+1hEmRSuqguTaaApJUqlyyvdimYHFngVV3Eb7PVHhPOe +MTd61X8kreS8/f3MboPoDKi3QWwH3b08hpcv0g== +-----END CERTIFICATE----- + +# Issuer: CN=SSL.com Root Certification Authority RSA O=SSL Corporation +# Subject: CN=SSL.com Root Certification Authority RSA O=SSL Corporation +# Label: "SSL.com Root Certification Authority RSA" +# Serial: 8875640296558310041 +# MD5 Fingerprint: 86:69:12:c0:70:f1:ec:ac:ac:c2:d5:bc:a5:5b:a1:29 +# SHA1 Fingerprint: b7:ab:33:08:d1:ea:44:77:ba:14:80:12:5a:6f:bd:a9:36:49:0c:bb +# SHA256 Fingerprint: 85:66:6a:56:2e:e0:be:5c:e9:25:c1:d8:89:0a:6f:76:a8:7e:c1:6d:4d:7d:5f:29:ea:74:19:cf:20:12:3b:69 +-----BEGIN CERTIFICATE----- +MIIF3TCCA8WgAwIBAgIIeyyb0xaAMpkwDQYJKoZIhvcNAQELBQAwfDELMAkGA1UE +BhMCVVMxDjAMBgNVBAgMBVRleGFzMRAwDgYDVQQHDAdIb3VzdG9uMRgwFgYDVQQK +DA9TU0wgQ29ycG9yYXRpb24xMTAvBgNVBAMMKFNTTC5jb20gUm9vdCBDZXJ0aWZp +Y2F0aW9uIEF1dGhvcml0eSBSU0EwHhcNMTYwMjEyMTczOTM5WhcNNDEwMjEyMTcz +OTM5WjB8MQswCQYDVQQGEwJVUzEOMAwGA1UECAwFVGV4YXMxEDAOBgNVBAcMB0hv +dXN0b24xGDAWBgNVBAoMD1NTTCBDb3Jwb3JhdGlvbjExMC8GA1UEAwwoU1NMLmNv +bSBSb290IENlcnRpZmljYXRpb24gQXV0aG9yaXR5IFJTQTCCAiIwDQYJKoZIhvcN +AQEBBQADggIPADCCAgoCggIBAPkP3aMrfcvQKv7sZ4Wm5y4bunfh4/WvpOz6Sl2R +xFdHaxh3a3by/ZPkPQ/CFp4LZsNWlJ4Xg4XOVu/yFv0AYvUiCVToZRdOQbngT0aX +qhvIuG5iXmmxX9sqAn78bMrzQdjt0Oj8P2FI7bADFB0QDksZ4LtO7IZl/zbzXmcC +C52GVWH9ejjt/uIZALdvoVBidXQ8oPrIJZK0bnoix/geoeOy3ZExqysdBP+lSgQ3 +6YWkMyv94tZVNHwZpEpox7Ko07fKoZOI68GXvIz5HdkihCR0xwQ9aqkpk8zruFvh +/l8lqjRYyMEjVJ0bmBHDOJx+PYZspQ9AhnwC9FwCTyjLrnGfDzrIM/4RJTXq/LrF +YD3ZfBjVsqnTdXgDciLKOsMf7yzlLqn6niy2UUb9rwPW6mBo6oUWNmuF6R7As93E +JNyAKoFBbZQ+yODJgUEAnl6/f8UImKIYLEJAs/lvOCdLToD0PYFH4Ih86hzOtXVc +US4cK38acijnALXRdMbX5J+tB5O2UzU1/Dfkw/ZdFr4hc96SCvigY2q8lpJqPvi8 +ZVWb3vUNiSYE/CUapiVpy8JtynziWV+XrOvvLsi81xtZPCvM8hnIk2snYxnP/Okm ++Mpxm3+T/jRnhE6Z6/yzeAkzcLpmpnbtG3PrGqUNxCITIJRWCk4sbE6x/c+cCbqi +M+2HAgMBAAGjYzBhMB0GA1UdDgQWBBTdBAkHovV6fVJTEpKV7jiAJQ2mWTAPBgNV +HRMBAf8EBTADAQH/MB8GA1UdIwQYMBaAFN0ECQei9Xp9UlMSkpXuOIAlDaZZMA4G +A1UdDwEB/wQEAwIBhjANBgkqhkiG9w0BAQsFAAOCAgEAIBgRlCn7Jp0cHh5wYfGV +cpNxJK1ok1iOMq8bs3AD/CUrdIWQPXhq9LmLpZc7tRiRux6n+UBbkflVma8eEdBc +Hadm47GUBwwyOabqG7B52B2ccETjit3E+ZUfijhDPwGFpUenPUayvOUiaPd7nNgs +PgohyC0zrL/FgZkxdMF1ccW+sfAjRfSda/wZY52jvATGGAslu1OJD7OAUN5F7kR/ +q5R4ZJjT9ijdh9hwZXT7DrkT66cPYakylszeu+1jTBi7qUD3oFRuIIhxdRjqerQ0 +cuAjJ3dctpDqhiVAq+8zD8ufgr6iIPv2tS0a5sKFsXQP+8hlAqRSAUfdSSLBv9jr +a6x+3uxjMxW3IwiPxg+NQVrdjsW5j+VFP3jbutIbQLH+cU0/4IGiul607BXgk90I +H37hVZkLId6Tngr75qNJvTYw/ud3sqB1l7UtgYgXZSD32pAAn8lSzDLKNXz1PQ/Y +K9f1JmzJBjSWFupwWRoyeXkLtoh/D1JIPb9s2KJELtFOt3JY04kTlf5Eq/jXixtu +nLwsoFvVagCvXzfh1foQC5ichucmj87w7G6KVwuA406ywKBjYZC6VWg3dGq2ktuf +oYYitmUnDuy2n0Jg5GfCtdpBC8TTi2EbvPofkSvXRAdeuims2cXp71NIWuuA8ShY +Ic2wBlX7Jz9TkHCpBB5XJ7k= +-----END CERTIFICATE----- + +# Issuer: CN=SSL.com Root Certification Authority ECC O=SSL Corporation +# Subject: CN=SSL.com Root Certification Authority ECC O=SSL Corporation +# Label: "SSL.com Root Certification Authority ECC" +# Serial: 8495723813297216424 +# MD5 Fingerprint: 2e:da:e4:39:7f:9c:8f:37:d1:70:9f:26:17:51:3a:8e +# SHA1 Fingerprint: c3:19:7c:39:24:e6:54:af:1b:c4:ab:20:95:7a:e2:c3:0e:13:02:6a +# SHA256 Fingerprint: 34:17:bb:06:cc:60:07:da:1b:96:1c:92:0b:8a:b4:ce:3f:ad:82:0e:4a:a3:0b:9a:cb:c4:a7:4e:bd:ce:bc:65 +-----BEGIN CERTIFICATE----- +MIICjTCCAhSgAwIBAgIIdebfy8FoW6gwCgYIKoZIzj0EAwIwfDELMAkGA1UEBhMC +VVMxDjAMBgNVBAgMBVRleGFzMRAwDgYDVQQHDAdIb3VzdG9uMRgwFgYDVQQKDA9T +U0wgQ29ycG9yYXRpb24xMTAvBgNVBAMMKFNTTC5jb20gUm9vdCBDZXJ0aWZpY2F0 +aW9uIEF1dGhvcml0eSBFQ0MwHhcNMTYwMjEyMTgxNDAzWhcNNDEwMjEyMTgxNDAz +WjB8MQswCQYDVQQGEwJVUzEOMAwGA1UECAwFVGV4YXMxEDAOBgNVBAcMB0hvdXN0 +b24xGDAWBgNVBAoMD1NTTCBDb3Jwb3JhdGlvbjExMC8GA1UEAwwoU1NMLmNvbSBS +b290IENlcnRpZmljYXRpb24gQXV0aG9yaXR5IEVDQzB2MBAGByqGSM49AgEGBSuB +BAAiA2IABEVuqVDEpiM2nl8ojRfLliJkP9x6jh3MCLOicSS6jkm5BBtHllirLZXI +7Z4INcgn64mMU1jrYor+8FsPazFSY0E7ic3s7LaNGdM0B9y7xgZ/wkWV7Mt/qCPg +CemB+vNH06NjMGEwHQYDVR0OBBYEFILRhXMw5zUE044CkvvlpNHEIejNMA8GA1Ud +EwEB/wQFMAMBAf8wHwYDVR0jBBgwFoAUgtGFczDnNQTTjgKS++Wk0cQh6M0wDgYD +VR0PAQH/BAQDAgGGMAoGCCqGSM49BAMCA2cAMGQCMG/n61kRpGDPYbCWe+0F+S8T +kdzt5fxQaxFGRrMcIQBiu77D5+jNB5n5DQtdcj7EqgIwH7y6C+IwJPt8bYBVCpk+ +gA0z5Wajs6O7pdWLjwkspl1+4vAHCGht0nxpbl/f5Wpl +-----END CERTIFICATE----- + +# Issuer: CN=SSL.com EV Root Certification Authority RSA R2 O=SSL Corporation +# Subject: CN=SSL.com EV Root Certification Authority RSA R2 O=SSL Corporation +# Label: "SSL.com EV Root Certification Authority RSA R2" +# Serial: 6248227494352943350 +# MD5 Fingerprint: e1:1e:31:58:1a:ae:54:53:02:f6:17:6a:11:7b:4d:95 +# SHA1 Fingerprint: 74:3a:f0:52:9b:d0:32:a0:f4:4a:83:cd:d4:ba:a9:7b:7c:2e:c4:9a +# SHA256 Fingerprint: 2e:7b:f1:6c:c2:24:85:a7:bb:e2:aa:86:96:75:07:61:b0:ae:39:be:3b:2f:e9:d0:cc:6d:4e:f7:34:91:42:5c +-----BEGIN CERTIFICATE----- +MIIF6zCCA9OgAwIBAgIIVrYpzTS8ePYwDQYJKoZIhvcNAQELBQAwgYIxCzAJBgNV +BAYTAlVTMQ4wDAYDVQQIDAVUZXhhczEQMA4GA1UEBwwHSG91c3RvbjEYMBYGA1UE +CgwPU1NMIENvcnBvcmF0aW9uMTcwNQYDVQQDDC5TU0wuY29tIEVWIFJvb3QgQ2Vy +dGlmaWNhdGlvbiBBdXRob3JpdHkgUlNBIFIyMB4XDTE3MDUzMTE4MTQzN1oXDTQy +MDUzMDE4MTQzN1owgYIxCzAJBgNVBAYTAlVTMQ4wDAYDVQQIDAVUZXhhczEQMA4G +A1UEBwwHSG91c3RvbjEYMBYGA1UECgwPU1NMIENvcnBvcmF0aW9uMTcwNQYDVQQD +DC5TU0wuY29tIEVWIFJvb3QgQ2VydGlmaWNhdGlvbiBBdXRob3JpdHkgUlNBIFIy +MIICIjANBgkqhkiG9w0BAQEFAAOCAg8AMIICCgKCAgEAjzZlQOHWTcDXtOlG2mvq +M0fNTPl9fb69LT3w23jhhqXZuglXaO1XPqDQCEGD5yhBJB/jchXQARr7XnAjssuf +OePPxU7Gkm0mxnu7s9onnQqG6YE3Bf7wcXHswxzpY6IXFJ3vG2fThVUCAtZJycxa +4bH3bzKfydQ7iEGonL3Lq9ttewkfokxykNorCPzPPFTOZw+oz12WGQvE43LrrdF9 +HSfvkusQv1vrO6/PgN3B0pYEW3p+pKk8OHakYo6gOV7qd89dAFmPZiw+B6KjBSYR +aZfqhbcPlgtLyEDhULouisv3D5oi53+aNxPN8k0TayHRwMwi8qFG9kRpnMphNQcA +b9ZhCBHqurj26bNg5U257J8UZslXWNvNh2n4ioYSA0e/ZhN2rHd9NCSFg83XqpyQ +Gp8hLH94t2S42Oim9HizVcuE0jLEeK6jj2HdzghTreyI/BXkmg3mnxp3zkyPuBQV +PWKchjgGAGYS5Fl2WlPAApiiECtoRHuOec4zSnaqW4EWG7WK2NAAe15itAnWhmMO +pgWVSbooi4iTsjQc2KRVbrcc0N6ZVTsj9CLg+SlmJuwgUHfbSguPvuUCYHBBXtSu +UDkiFCbLsjtzdFVHB3mBOagwE0TlBIqulhMlQg+5U8Sb/M3kHN48+qvWBkofZ6aY +MBzdLNvcGJVXZsb/XItW9XcCAwEAAaNjMGEwDwYDVR0TAQH/BAUwAwEB/zAfBgNV +HSMEGDAWgBT5YLvU49U09rj1BoAlp3PbRmmonjAdBgNVHQ4EFgQU+WC71OPVNPa4 +9QaAJadz20ZpqJ4wDgYDVR0PAQH/BAQDAgGGMA0GCSqGSIb3DQEBCwUAA4ICAQBW +s47LCp1Jjr+kxJG7ZhcFUZh1++VQLHqe8RT6q9OKPv+RKY9ji9i0qVQBDb6Thi/5 +Sm3HXvVX+cpVHBK+Rw82xd9qt9t1wkclf7nxY/hoLVUE0fKNsKTPvDxeH3jnpaAg +cLAExbf3cqfeIg29MyVGjGSSJuM+LmOW2puMPfgYCdcDzH2GguDKBAdRUNf/ktUM +79qGn5nX67evaOI5JpS6aLe/g9Pqemc9YmeuJeVy6OLk7K4S9ksrPJ/psEDzOFSz +/bdoyNrGj1E8svuR3Bznm53htw1yj+KkxKl4+esUrMZDBcJlOSgYAsOCsp0FvmXt +ll9ldDz7CTUue5wT/RsPXcdtgTpWD8w74a8CLyKsRspGPKAcTNZEtF4uXBVmCeEm +Kf7GUmG6sXP/wwyc5WxqlD8UykAWlYTzWamsX0xhk23RO8yilQwipmdnRC652dKK +QbNmC1r7fSOl8hqw/96bg5Qu0T/fkreRrwU7ZcegbLHNYhLDkBvjJc40vG93drEQ +w/cFGsDWr3RiSBd3kmmQYRzelYB0VI8YHMPzA9C/pEN1hlMYegouCRw2n5H9gooi +S9EOUCXdywMMF8mDAAhONU2Ki+3wApRmLER/y5UnlhetCTCstnEXbosX9hwJ1C07 +mKVx01QT2WDz9UtmT/rx7iASjbSsV7FFY6GsdqnC+w== +-----END CERTIFICATE----- + +# Issuer: CN=SSL.com EV Root Certification Authority ECC O=SSL Corporation +# Subject: CN=SSL.com EV Root Certification Authority ECC O=SSL Corporation +# Label: "SSL.com EV Root Certification Authority ECC" +# Serial: 3182246526754555285 +# MD5 Fingerprint: 59:53:22:65:83:42:01:54:c0:ce:42:b9:5a:7c:f2:90 +# SHA1 Fingerprint: 4c:dd:51:a3:d1:f5:20:32:14:b0:c6:c5:32:23:03:91:c7:46:42:6d +# SHA256 Fingerprint: 22:a2:c1:f7:bd:ed:70:4c:c1:e7:01:b5:f4:08:c3:10:88:0f:e9:56:b5:de:2a:4a:44:f9:9c:87:3a:25:a7:c8 +-----BEGIN CERTIFICATE----- +MIIClDCCAhqgAwIBAgIILCmcWxbtBZUwCgYIKoZIzj0EAwIwfzELMAkGA1UEBhMC +VVMxDjAMBgNVBAgMBVRleGFzMRAwDgYDVQQHDAdIb3VzdG9uMRgwFgYDVQQKDA9T +U0wgQ29ycG9yYXRpb24xNDAyBgNVBAMMK1NTTC5jb20gRVYgUm9vdCBDZXJ0aWZp +Y2F0aW9uIEF1dGhvcml0eSBFQ0MwHhcNMTYwMjEyMTgxNTIzWhcNNDEwMjEyMTgx +NTIzWjB/MQswCQYDVQQGEwJVUzEOMAwGA1UECAwFVGV4YXMxEDAOBgNVBAcMB0hv +dXN0b24xGDAWBgNVBAoMD1NTTCBDb3Jwb3JhdGlvbjE0MDIGA1UEAwwrU1NMLmNv +bSBFViBSb290IENlcnRpZmljYXRpb24gQXV0aG9yaXR5IEVDQzB2MBAGByqGSM49 +AgEGBSuBBAAiA2IABKoSR5CYG/vvw0AHgyBO8TCCogbR8pKGYfL2IWjKAMTH6kMA +VIbc/R/fALhBYlzccBYy3h+Z1MzFB8gIH2EWB1E9fVwHU+M1OIzfzZ/ZLg1Kthku +WnBaBu2+8KGwytAJKaNjMGEwHQYDVR0OBBYEFFvKXuXe0oGqzagtZFG22XKbl+ZP +MA8GA1UdEwEB/wQFMAMBAf8wHwYDVR0jBBgwFoAUW8pe5d7SgarNqC1kUbbZcpuX +5k8wDgYDVR0PAQH/BAQDAgGGMAoGCCqGSM49BAMCA2gAMGUCMQCK5kCJN+vp1RPZ +ytRrJPOwPYdGWBrssd9v+1a6cGvHOMzosYxPD/fxZ3YOg9AeUY8CMD32IygmTMZg +h5Mmm7I1HrrW9zzRHM76JTymGoEVW/MSD2zuZYrJh6j5B+BimoxcSg== +-----END CERTIFICATE----- + +# Issuer: CN=GlobalSign O=GlobalSign OU=GlobalSign Root CA - R6 +# Subject: CN=GlobalSign O=GlobalSign OU=GlobalSign Root CA - R6 +# Label: "GlobalSign Root CA - R6" +# Serial: 1417766617973444989252670301619537 +# MD5 Fingerprint: 4f:dd:07:e4:d4:22:64:39:1e:0c:37:42:ea:d1:c6:ae +# SHA1 Fingerprint: 80:94:64:0e:b5:a7:a1:ca:11:9c:1f:dd:d5:9f:81:02:63:a7:fb:d1 +# SHA256 Fingerprint: 2c:ab:ea:fe:37:d0:6c:a2:2a:ba:73:91:c0:03:3d:25:98:29:52:c4:53:64:73:49:76:3a:3a:b5:ad:6c:cf:69 +-----BEGIN CERTIFICATE----- +MIIFgzCCA2ugAwIBAgIORea7A4Mzw4VlSOb/RVEwDQYJKoZIhvcNAQEMBQAwTDEg +MB4GA1UECxMXR2xvYmFsU2lnbiBSb290IENBIC0gUjYxEzARBgNVBAoTCkdsb2Jh +bFNpZ24xEzARBgNVBAMTCkdsb2JhbFNpZ24wHhcNMTQxMjEwMDAwMDAwWhcNMzQx +MjEwMDAwMDAwWjBMMSAwHgYDVQQLExdHbG9iYWxTaWduIFJvb3QgQ0EgLSBSNjET +MBEGA1UEChMKR2xvYmFsU2lnbjETMBEGA1UEAxMKR2xvYmFsU2lnbjCCAiIwDQYJ +KoZIhvcNAQEBBQADggIPADCCAgoCggIBAJUH6HPKZvnsFMp7PPcNCPG0RQssgrRI +xutbPK6DuEGSMxSkb3/pKszGsIhrxbaJ0cay/xTOURQh7ErdG1rG1ofuTToVBu1k +ZguSgMpE3nOUTvOniX9PeGMIyBJQbUJmL025eShNUhqKGoC3GYEOfsSKvGRMIRxD +aNc9PIrFsmbVkJq3MQbFvuJtMgamHvm566qjuL++gmNQ0PAYid/kD3n16qIfKtJw +LnvnvJO7bVPiSHyMEAc4/2ayd2F+4OqMPKq0pPbzlUoSB239jLKJz9CgYXfIWHSw +1CM69106yqLbnQneXUQtkPGBzVeS+n68UARjNN9rkxi+azayOeSsJDa38O+2HBNX +k7besvjihbdzorg1qkXy4J02oW9UivFyVm4uiMVRQkQVlO6jxTiWm05OWgtH8wY2 +SXcwvHE35absIQh1/OZhFj931dmRl4QKbNQCTXTAFO39OfuD8l4UoQSwC+n+7o/h +bguyCLNhZglqsQY6ZZZZwPA1/cnaKI0aEYdwgQqomnUdnjqGBQCe24DWJfncBZ4n +WUx2OVvq+aWh2IMP0f/fMBH5hc8zSPXKbWQULHpYT9NLCEnFlWQaYw55PfWzjMpY +rZxCRXluDocZXFSxZba/jJvcE+kNb7gu3GduyYsRtYQUigAZcIN5kZeR1Bonvzce +MgfYFGM8KEyvAgMBAAGjYzBhMA4GA1UdDwEB/wQEAwIBBjAPBgNVHRMBAf8EBTAD +AQH/MB0GA1UdDgQWBBSubAWjkxPioufi1xzWx/B/yGdToDAfBgNVHSMEGDAWgBSu +bAWjkxPioufi1xzWx/B/yGdToDANBgkqhkiG9w0BAQwFAAOCAgEAgyXt6NH9lVLN +nsAEoJFp5lzQhN7craJP6Ed41mWYqVuoPId8AorRbrcWc+ZfwFSY1XS+wc3iEZGt +Ixg93eFyRJa0lV7Ae46ZeBZDE1ZXs6KzO7V33EByrKPrmzU+sQghoefEQzd5Mr61 +55wsTLxDKZmOMNOsIeDjHfrYBzN2VAAiKrlNIC5waNrlU/yDXNOd8v9EDERm8tLj +vUYAGm0CuiVdjaExUd1URhxN25mW7xocBFymFe944Hn+Xds+qkxV/ZoVqW/hpvvf +cDDpw+5CRu3CkwWJ+n1jez/QcYF8AOiYrg54NMMl+68KnyBr3TsTjxKM4kEaSHpz +oHdpx7Zcf4LIHv5YGygrqGytXm3ABdJ7t+uA/iU3/gKbaKxCXcPu9czc8FB10jZp +nOZ7BN9uBmm23goJSFmH63sUYHpkqmlD75HHTOwY3WzvUy2MmeFe8nI+z1TIvWfs +pA9MRf/TuTAjB0yPEL+GltmZWrSZVxykzLsViVO6LAUP5MSeGbEYNNVMnbrt9x+v +JJUEeKgDu+6B5dpffItKoZB0JaezPkvILFa9x8jvOOJckvB595yEunQtYQEgfn7R +8k8HWV+LLUNS60YMlOH1Zkd5d9VUWx+tJDfLRVpOoERIyNiwmcUVhAn21klJwGW4 +5hpxbqCo8YLoRT5s1gLXCmeDBVrJpBA= +-----END CERTIFICATE----- + +# Issuer: CN=OISTE WISeKey Global Root GC CA O=WISeKey OU=OISTE Foundation Endorsed +# Subject: CN=OISTE WISeKey Global Root GC CA O=WISeKey OU=OISTE Foundation Endorsed +# Label: "OISTE WISeKey Global Root GC CA" +# Serial: 44084345621038548146064804565436152554 +# MD5 Fingerprint: a9:d6:b9:2d:2f:93:64:f8:a5:69:ca:91:e9:68:07:23 +# SHA1 Fingerprint: e0:11:84:5e:34:de:be:88:81:b9:9c:f6:16:26:d1:96:1f:c3:b9:31 +# SHA256 Fingerprint: 85:60:f9:1c:36:24:da:ba:95:70:b5:fe:a0:db:e3:6f:f1:1a:83:23:be:94:86:85:4f:b3:f3:4a:55:71:19:8d +-----BEGIN CERTIFICATE----- +MIICaTCCAe+gAwIBAgIQISpWDK7aDKtARb8roi066jAKBggqhkjOPQQDAzBtMQsw +CQYDVQQGEwJDSDEQMA4GA1UEChMHV0lTZUtleTEiMCAGA1UECxMZT0lTVEUgRm91 +bmRhdGlvbiBFbmRvcnNlZDEoMCYGA1UEAxMfT0lTVEUgV0lTZUtleSBHbG9iYWwg +Um9vdCBHQyBDQTAeFw0xNzA1MDkwOTQ4MzRaFw00MjA1MDkwOTU4MzNaMG0xCzAJ +BgNVBAYTAkNIMRAwDgYDVQQKEwdXSVNlS2V5MSIwIAYDVQQLExlPSVNURSBGb3Vu +ZGF0aW9uIEVuZG9yc2VkMSgwJgYDVQQDEx9PSVNURSBXSVNlS2V5IEdsb2JhbCBS +b290IEdDIENBMHYwEAYHKoZIzj0CAQYFK4EEACIDYgAETOlQwMYPchi82PG6s4ni +eUqjFqdrVCTbUf/q9Akkwwsin8tqJ4KBDdLArzHkdIJuyiXZjHWd8dvQmqJLIX4W +p2OQ0jnUsYd4XxiWD1AbNTcPasbc2RNNpI6QN+a9WzGRo1QwUjAOBgNVHQ8BAf8E +BAMCAQYwDwYDVR0TAQH/BAUwAwEB/zAdBgNVHQ4EFgQUSIcUrOPDnpBgOtfKie7T +rYy0UGYwEAYJKwYBBAGCNxUBBAMCAQAwCgYIKoZIzj0EAwMDaAAwZQIwJsdpW9zV +57LnyAyMjMPdeYwbY9XJUpROTYJKcx6ygISpJcBMWm1JKWB4E+J+SOtkAjEA2zQg +Mgj/mkkCtojeFK9dbJlxjRo/i9fgojaGHAeCOnZT/cKi7e97sIBPWA9LUzm9 +-----END CERTIFICATE----- + +# Issuer: CN=UCA Global G2 Root O=UniTrust +# Subject: CN=UCA Global G2 Root O=UniTrust +# Label: "UCA Global G2 Root" +# Serial: 124779693093741543919145257850076631279 +# MD5 Fingerprint: 80:fe:f0:c4:4a:f0:5c:62:32:9f:1c:ba:78:a9:50:f8 +# SHA1 Fingerprint: 28:f9:78:16:19:7a:ff:18:25:18:aa:44:fe:c1:a0:ce:5c:b6:4c:8a +# SHA256 Fingerprint: 9b:ea:11:c9:76:fe:01:47:64:c1:be:56:a6:f9:14:b5:a5:60:31:7a:bd:99:88:39:33:82:e5:16:1a:a0:49:3c +-----BEGIN CERTIFICATE----- +MIIFRjCCAy6gAwIBAgIQXd+x2lqj7V2+WmUgZQOQ7zANBgkqhkiG9w0BAQsFADA9 +MQswCQYDVQQGEwJDTjERMA8GA1UECgwIVW5pVHJ1c3QxGzAZBgNVBAMMElVDQSBH +bG9iYWwgRzIgUm9vdDAeFw0xNjAzMTEwMDAwMDBaFw00MDEyMzEwMDAwMDBaMD0x +CzAJBgNVBAYTAkNOMREwDwYDVQQKDAhVbmlUcnVzdDEbMBkGA1UEAwwSVUNBIEds +b2JhbCBHMiBSb290MIICIjANBgkqhkiG9w0BAQEFAAOCAg8AMIICCgKCAgEAxeYr +b3zvJgUno4Ek2m/LAfmZmqkywiKHYUGRO8vDaBsGxUypK8FnFyIdK+35KYmToni9 +kmugow2ifsqTs6bRjDXVdfkX9s9FxeV67HeToI8jrg4aA3++1NDtLnurRiNb/yzm +VHqUwCoV8MmNsHo7JOHXaOIxPAYzRrZUEaalLyJUKlgNAQLx+hVRZ2zA+te2G3/R +VogvGjqNO7uCEeBHANBSh6v7hn4PJGtAnTRnvI3HLYZveT6OqTwXS3+wmeOwcWDc +C/Vkw85DvG1xudLeJ1uK6NjGruFZfc8oLTW4lVYa8bJYS7cSN8h8s+1LgOGN+jIj +tm+3SJUIsUROhYw6AlQgL9+/V087OpAh18EmNVQg7Mc/R+zvWr9LesGtOxdQXGLY +D0tK3Cv6brxzks3sx1DoQZbXqX5t2Okdj4q1uViSukqSKwxW/YDrCPBeKW4bHAyv +j5OJrdu9o54hyokZ7N+1wxrrFv54NkzWbtA+FxyQF2smuvt6L78RHBgOLXMDj6Dl +NaBa4kx1HXHhOThTeEDMg5PXCp6dW4+K5OXgSORIskfNTip1KnvyIvbJvgmRlld6 +iIis7nCs+dwp4wwcOxJORNanTrAmyPPZGpeRaOrvjUYG0lZFWJo8DA+DuAUlwznP +O6Q0ibd5Ei9Hxeepl2n8pndntd978XplFeRhVmUCAwEAAaNCMEAwDgYDVR0PAQH/ +BAQDAgEGMA8GA1UdEwEB/wQFMAMBAf8wHQYDVR0OBBYEFIHEjMz15DD/pQwIX4wV +ZyF0Ad/fMA0GCSqGSIb3DQEBCwUAA4ICAQATZSL1jiutROTL/7lo5sOASD0Ee/oj +L3rtNtqyzm325p7lX1iPyzcyochltq44PTUbPrw7tgTQvPlJ9Zv3hcU2tsu8+Mg5 +1eRfB70VVJd0ysrtT7q6ZHafgbiERUlMjW+i67HM0cOU2kTC5uLqGOiiHycFutfl +1qnN3e92mI0ADs0b+gO3joBYDic/UvuUospeZcnWhNq5NXHzJsBPd+aBJ9J3O5oU +b3n09tDh05S60FdRvScFDcH9yBIw7m+NESsIndTUv4BFFJqIRNow6rSn4+7vW4LV +PtateJLbXDzz2K36uGt/xDYotgIVilQsnLAXc47QN6MUPJiVAAwpBVueSUmxX8fj +y88nZY41F7dXyDDZQVu5FLbowg+UMaeUmMxq67XhJ/UQqAHojhJi6IjMtX9Gl8Cb +EGY4GjZGXyJoPd/JxhMnq1MGrKI8hgZlb7F+sSlEmqO6SWkoaY/X5V+tBIZkbxqg +DMUIYs6Ao9Dz7GjevjPHF1t/gMRMTLGmhIrDO7gJzRSBuhjjVFc2/tsvfEehOjPI ++Vg7RE+xygKJBJYoaMVLuCaJu9YzL1DV/pqJuhgyklTGW+Cd+V7lDSKb9triyCGy +YiGqhkCyLmTTX8jjfhFnRR8F/uOi77Oos/N9j/gMHyIfLXC0uAE0djAA5SN4p1bX +UB+K+wb1whnw0A== +-----END CERTIFICATE----- + +# Issuer: CN=UCA Extended Validation Root O=UniTrust +# Subject: CN=UCA Extended Validation Root O=UniTrust +# Label: "UCA Extended Validation Root" +# Serial: 106100277556486529736699587978573607008 +# MD5 Fingerprint: a1:f3:5f:43:c6:34:9b:da:bf:8c:7e:05:53:ad:96:e2 +# SHA1 Fingerprint: a3:a1:b0:6f:24:61:23:4a:e3:36:a5:c2:37:fc:a6:ff:dd:f0:d7:3a +# SHA256 Fingerprint: d4:3a:f9:b3:54:73:75:5c:96:84:fc:06:d7:d8:cb:70:ee:5c:28:e7:73:fb:29:4e:b4:1e:e7:17:22:92:4d:24 +-----BEGIN CERTIFICATE----- +MIIFWjCCA0KgAwIBAgIQT9Irj/VkyDOeTzRYZiNwYDANBgkqhkiG9w0BAQsFADBH +MQswCQYDVQQGEwJDTjERMA8GA1UECgwIVW5pVHJ1c3QxJTAjBgNVBAMMHFVDQSBF +eHRlbmRlZCBWYWxpZGF0aW9uIFJvb3QwHhcNMTUwMzEzMDAwMDAwWhcNMzgxMjMx +MDAwMDAwWjBHMQswCQYDVQQGEwJDTjERMA8GA1UECgwIVW5pVHJ1c3QxJTAjBgNV +BAMMHFVDQSBFeHRlbmRlZCBWYWxpZGF0aW9uIFJvb3QwggIiMA0GCSqGSIb3DQEB +AQUAA4ICDwAwggIKAoICAQCpCQcoEwKwmeBkqh5DFnpzsZGgdT6o+uM4AHrsiWog +D4vFsJszA1qGxliG1cGFu0/GnEBNyr7uaZa4rYEwmnySBesFK5pI0Lh2PpbIILvS +sPGP2KxFRv+qZ2C0d35qHzwaUnoEPQc8hQ2E0B92CvdqFN9y4zR8V05WAT558aop +O2z6+I9tTcg1367r3CTueUWnhbYFiN6IXSV8l2RnCdm/WhUFhvMJHuxYMjMR83dk +sHYf5BA1FxvyDrFspCqjc/wJHx4yGVMR59mzLC52LqGj3n5qiAno8geK+LLNEOfi +c0CTuwjRP+H8C5SzJe98ptfRr5//lpr1kXuYC3fUfugH0mK1lTnj8/FtDw5lhIpj +VMWAtuCeS31HJqcBCF3RiJ7XwzJE+oJKCmhUfzhTA8ykADNkUVkLo4KRel7sFsLz +KuZi2irbWWIQJUoqgQtHB0MGcIfS+pMRKXpITeuUx3BNr2fVUbGAIAEBtHoIppB/ +TuDvB0GHr2qlXov7z1CymlSvw4m6WC31MJixNnI5fkkE/SmnTHnkBVfblLkWU41G +sx2VYVdWf6/wFlthWG82UBEL2KwrlRYaDh8IzTY0ZRBiZtWAXxQgXy0MoHgKaNYs +1+lvK9JKBZP8nm9rZ/+I8U6laUpSNwXqxhaN0sSZ0YIrO7o1dfdRUVjzyAfd5LQD +fwIDAQABo0IwQDAdBgNVHQ4EFgQU2XQ65DA9DfcS3H5aBZ8eNJr34RQwDwYDVR0T +AQH/BAUwAwEB/zAOBgNVHQ8BAf8EBAMCAYYwDQYJKoZIhvcNAQELBQADggIBADaN +l8xCFWQpN5smLNb7rhVpLGsaGvdftvkHTFnq88nIua7Mui563MD1sC3AO6+fcAUR +ap8lTwEpcOPlDOHqWnzcSbvBHiqB9RZLcpHIojG5qtr8nR/zXUACE/xOHAbKsxSQ +VBcZEhrxH9cMaVr2cXj0lH2RC47skFSOvG+hTKv8dGT9cZr4QQehzZHkPJrgmzI5 +c6sq1WnIeJEmMX3ixzDx/BR4dxIOE/TdFpS/S2d7cFOFyrC78zhNLJA5wA3CXWvp +4uXViI3WLL+rG761KIcSF3Ru/H38j9CHJrAb+7lsq+KePRXBOy5nAliRn+/4Qh8s +t2j1da3Ptfb/EX3C8CSlrdP6oDyp+l3cpaDvRKS+1ujl5BOWF3sGPjLtx7dCvHaj +2GU4Kzg1USEODm8uNBNA4StnDG1KQTAYI1oyVZnJF+A83vbsea0rWBmirSwiGpWO +vpaQXUJXxPkUAzUrHC1RVwinOt4/5Mi0A3PCwSaAuwtCH60NryZy2sy+s6ODWA2C +xR9GUeOcGMyNm43sSet1UNWMKFnKdDTajAshqx7qG+XH/RU+wBeq+yNuJkbL+vmx +cmtpzyKEC2IPrNkZAJSidjzULZrtBJ4tBmIQN1IchXIbJ+XMxjHsN+xjWZsLHXbM +fjKaiJUINlK73nZfdklJrX+9ZSCyycErdhh2n1ax +-----END CERTIFICATE----- + +# Issuer: CN=Certigna Root CA O=Dhimyotis OU=0002 48146308100036 +# Subject: CN=Certigna Root CA O=Dhimyotis OU=0002 48146308100036 +# Label: "Certigna Root CA" +# Serial: 269714418870597844693661054334862075617 +# MD5 Fingerprint: 0e:5c:30:62:27:eb:5b:bc:d7:ae:62:ba:e9:d5:df:77 +# SHA1 Fingerprint: 2d:0d:52:14:ff:9e:ad:99:24:01:74:20:47:6e:6c:85:27:27:f5:43 +# SHA256 Fingerprint: d4:8d:3d:23:ee:db:50:a4:59:e5:51:97:60:1c:27:77:4b:9d:7b:18:c9:4d:5a:05:95:11:a1:02:50:b9:31:68 +-----BEGIN CERTIFICATE----- +MIIGWzCCBEOgAwIBAgIRAMrpG4nxVQMNo+ZBbcTjpuEwDQYJKoZIhvcNAQELBQAw +WjELMAkGA1UEBhMCRlIxEjAQBgNVBAoMCURoaW15b3RpczEcMBoGA1UECwwTMDAw +MiA0ODE0NjMwODEwMDAzNjEZMBcGA1UEAwwQQ2VydGlnbmEgUm9vdCBDQTAeFw0x +MzEwMDEwODMyMjdaFw0zMzEwMDEwODMyMjdaMFoxCzAJBgNVBAYTAkZSMRIwEAYD +VQQKDAlEaGlteW90aXMxHDAaBgNVBAsMEzAwMDIgNDgxNDYzMDgxMDAwMzYxGTAX +BgNVBAMMEENlcnRpZ25hIFJvb3QgQ0EwggIiMA0GCSqGSIb3DQEBAQUAA4ICDwAw +ggIKAoICAQDNGDllGlmx6mQWDoyUJJV8g9PFOSbcDO8WV43X2KyjQn+Cyu3NW9sO +ty3tRQgXstmzy9YXUnIo245Onoq2C/mehJpNdt4iKVzSs9IGPjA5qXSjklYcoW9M +CiBtnyN6tMbaLOQdLNyzKNAT8kxOAkmhVECe5uUFoC2EyP+YbNDrihqECB63aCPu +I9Vwzm1RaRDuoXrC0SIxwoKF0vJVdlB8JXrJhFwLrN1CTivngqIkicuQstDuI7pm +TLtipPlTWmR7fJj6o0ieD5Wupxj0auwuA0Wv8HT4Ks16XdG+RCYyKfHx9WzMfgIh +C59vpD++nVPiz32pLHxYGpfhPTc3GGYo0kDFUYqMwy3OU4gkWGQwFsWq4NYKpkDf +ePb1BHxpE4S80dGnBs8B92jAqFe7OmGtBIyT46388NtEbVncSVmurJqZNjBBe3Yz +IoejwpKGbvlw7q6Hh5UbxHq9MfPU0uWZ/75I7HX1eBYdpnDBfzwboZL7z8g81sWT +Co/1VTp2lc5ZmIoJlXcymoO6LAQ6l73UL77XbJuiyn1tJslV1c/DeVIICZkHJC1k +JWumIWmbat10TWuXekG9qxf5kBdIjzb5LdXF2+6qhUVB+s06RbFo5jZMm5BX7CO5 +hwjCxAnxl4YqKE3idMDaxIzb3+KhF1nOJFl0Mdp//TBt2dzhauH8XwIDAQABo4IB +GjCCARYwDwYDVR0TAQH/BAUwAwEB/zAOBgNVHQ8BAf8EBAMCAQYwHQYDVR0OBBYE +FBiHVuBud+4kNTxOc5of1uHieX4rMB8GA1UdIwQYMBaAFBiHVuBud+4kNTxOc5of +1uHieX4rMEQGA1UdIAQ9MDswOQYEVR0gADAxMC8GCCsGAQUFBwIBFiNodHRwczov +L3d3d3cuY2VydGlnbmEuZnIvYXV0b3JpdGVzLzBtBgNVHR8EZjBkMC+gLaArhilo +dHRwOi8vY3JsLmNlcnRpZ25hLmZyL2NlcnRpZ25hcm9vdGNhLmNybDAxoC+gLYYr +aHR0cDovL2NybC5kaGlteW90aXMuY29tL2NlcnRpZ25hcm9vdGNhLmNybDANBgkq +hkiG9w0BAQsFAAOCAgEAlLieT/DjlQgi581oQfccVdV8AOItOoldaDgvUSILSo3L +6btdPrtcPbEo/uRTVRPPoZAbAh1fZkYJMyjhDSSXcNMQH+pkV5a7XdrnxIxPTGRG +HVyH41neQtGbqH6mid2PHMkwgu07nM3A6RngatgCdTer9zQoKJHyBApPNeNgJgH6 +0BGM+RFq7q89w1DTj18zeTyGqHNFkIwgtnJzFyO+B2XleJINugHA64wcZr+shncB +lA2c5uk5jR+mUYyZDDl34bSb+hxnV29qao6pK0xXeXpXIs/NX2NGjVxZOob4Mkdi +o2cNGJHc+6Zr9UhhcyNZjgKnvETq9Emd8VRY+WCv2hikLyhF3HqgiIZd8zvn/yk1 +gPxkQ5Tm4xxvvq0OKmOZK8l+hfZx6AYDlf7ej0gcWtSS6Cvu5zHbugRqh5jnxV/v +faci9wHYTfmJ0A6aBVmknpjZbyvKcL5kwlWj9Omvw5Ip3IgWJJk8jSaYtlu3zM63 +Nwf9JtmYhST/WSMDmu2dnajkXjjO11INb9I/bbEFa0nOipFGc/T2L/Coc3cOZayh +jWZSaX5LaAzHHjcng6WMxwLkFM1JAbBzs/3GkDpv0mztO+7skb6iQ12LAEpmJURw +3kAP+HwV96LOPNdeE4yBFxgX0b3xdxA61GU5wSesVywlVP+i2k+KYTlerj1KjL0= +-----END CERTIFICATE----- + +# Issuer: CN=emSign Root CA - G1 O=eMudhra Technologies Limited OU=emSign PKI +# Subject: CN=emSign Root CA - G1 O=eMudhra Technologies Limited OU=emSign PKI +# Label: "emSign Root CA - G1" +# Serial: 235931866688319308814040 +# MD5 Fingerprint: 9c:42:84:57:dd:cb:0b:a7:2e:95:ad:b6:f3:da:bc:ac +# SHA1 Fingerprint: 8a:c7:ad:8f:73:ac:4e:c1:b5:75:4d:a5:40:f4:fc:cf:7c:b5:8e:8c +# SHA256 Fingerprint: 40:f6:af:03:46:a9:9a:a1:cd:1d:55:5a:4e:9c:ce:62:c7:f9:63:46:03:ee:40:66:15:83:3d:c8:c8:d0:03:67 +-----BEGIN CERTIFICATE----- +MIIDlDCCAnygAwIBAgIKMfXkYgxsWO3W2DANBgkqhkiG9w0BAQsFADBnMQswCQYD +VQQGEwJJTjETMBEGA1UECxMKZW1TaWduIFBLSTElMCMGA1UEChMcZU11ZGhyYSBU +ZWNobm9sb2dpZXMgTGltaXRlZDEcMBoGA1UEAxMTZW1TaWduIFJvb3QgQ0EgLSBH +MTAeFw0xODAyMTgxODMwMDBaFw00MzAyMTgxODMwMDBaMGcxCzAJBgNVBAYTAklO +MRMwEQYDVQQLEwplbVNpZ24gUEtJMSUwIwYDVQQKExxlTXVkaHJhIFRlY2hub2xv +Z2llcyBMaW1pdGVkMRwwGgYDVQQDExNlbVNpZ24gUm9vdCBDQSAtIEcxMIIBIjAN +BgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEAk0u76WaK7p1b1TST0Bsew+eeuGQz +f2N4aLTNLnF115sgxk0pvLZoYIr3IZpWNVrzdr3YzZr/k1ZLpVkGoZM0Kd0WNHVO +8oG0x5ZOrRkVUkr+PHB1cM2vK6sVmjM8qrOLqs1D/fXqcP/tzxE7lM5OMhbTI0Aq +d7OvPAEsbO2ZLIvZTmmYsvePQbAyeGHWDV/D+qJAkh1cF+ZwPjXnorfCYuKrpDhM +tTk1b+oDafo6VGiFbdbyL0NVHpENDtjVaqSW0RM8LHhQ6DqS0hdW5TUaQBw+jSzt +Od9C4INBdN+jzcKGYEho42kLVACL5HZpIQ15TjQIXhTCzLG3rdd8cIrHhQIDAQAB +o0IwQDAdBgNVHQ4EFgQU++8Nhp6w492pufEhF38+/PB3KxowDgYDVR0PAQH/BAQD +AgEGMA8GA1UdEwEB/wQFMAMBAf8wDQYJKoZIhvcNAQELBQADggEBAFn/8oz1h31x +PaOfG1vR2vjTnGs2vZupYeveFix0PZ7mddrXuqe8QhfnPZHr5X3dPpzxz5KsbEjM +wiI/aTvFthUvozXGaCocV685743QNcMYDHsAVhzNixl03r4PEuDQqqE/AjSxcM6d +GNYIAwlG7mDgfrbESQRRfXBgvKqy/3lyeqYdPV8q+Mri/Tm3R7nrft8EI6/6nAYH +6ftjk4BAtcZsCjEozgyfz7MjNYBBjWzEN3uBL4ChQEKF6dk4jeihU80Bv2noWgby +RQuQ+q7hv53yrlc8pa6yVvSLZUDp/TGBLPQ5Cdjua6e0ph0VpZj3AYHYhX3zUVxx +iN66zB+Afko= +-----END CERTIFICATE----- + +# Issuer: CN=emSign ECC Root CA - G3 O=eMudhra Technologies Limited OU=emSign PKI +# Subject: CN=emSign ECC Root CA - G3 O=eMudhra Technologies Limited OU=emSign PKI +# Label: "emSign ECC Root CA - G3" +# Serial: 287880440101571086945156 +# MD5 Fingerprint: ce:0b:72:d1:9f:88:8e:d0:50:03:e8:e3:b8:8b:67:40 +# SHA1 Fingerprint: 30:43:fa:4f:f2:57:dc:a0:c3:80:ee:2e:58:ea:78:b2:3f:e6:bb:c1 +# SHA256 Fingerprint: 86:a1:ec:ba:08:9c:4a:8d:3b:be:27:34:c6:12:ba:34:1d:81:3e:04:3c:f9:e8:a8:62:cd:5c:57:a3:6b:be:6b +-----BEGIN CERTIFICATE----- +MIICTjCCAdOgAwIBAgIKPPYHqWhwDtqLhDAKBggqhkjOPQQDAzBrMQswCQYDVQQG +EwJJTjETMBEGA1UECxMKZW1TaWduIFBLSTElMCMGA1UEChMcZU11ZGhyYSBUZWNo +bm9sb2dpZXMgTGltaXRlZDEgMB4GA1UEAxMXZW1TaWduIEVDQyBSb290IENBIC0g +RzMwHhcNMTgwMjE4MTgzMDAwWhcNNDMwMjE4MTgzMDAwWjBrMQswCQYDVQQGEwJJ +TjETMBEGA1UECxMKZW1TaWduIFBLSTElMCMGA1UEChMcZU11ZGhyYSBUZWNobm9s +b2dpZXMgTGltaXRlZDEgMB4GA1UEAxMXZW1TaWduIEVDQyBSb290IENBIC0gRzMw +djAQBgcqhkjOPQIBBgUrgQQAIgNiAAQjpQy4LRL1KPOxst3iAhKAnjlfSU2fySU0 +WXTsuwYc58Byr+iuL+FBVIcUqEqy6HyC5ltqtdyzdc6LBtCGI79G1Y4PPwT01xyS +fvalY8L1X44uT6EYGQIrMgqCZH0Wk9GjQjBAMB0GA1UdDgQWBBR8XQKEE9TMipuB +zhccLikenEhjQjAOBgNVHQ8BAf8EBAMCAQYwDwYDVR0TAQH/BAUwAwEB/zAKBggq +hkjOPQQDAwNpADBmAjEAvvNhzwIQHWSVB7gYboiFBS+DCBeQyh+KTOgNG3qxrdWB +CUfvO6wIBHxcmbHtRwfSAjEAnbpV/KlK6O3t5nYBQnvI+GDZjVGLVTv7jHvrZQnD ++JbNR6iC8hZVdyR+EhCVBCyj +-----END CERTIFICATE----- + +# Issuer: CN=emSign Root CA - C1 O=eMudhra Inc OU=emSign PKI +# Subject: CN=emSign Root CA - C1 O=eMudhra Inc OU=emSign PKI +# Label: "emSign Root CA - C1" +# Serial: 825510296613316004955058 +# MD5 Fingerprint: d8:e3:5d:01:21:fa:78:5a:b0:df:ba:d2:ee:2a:5f:68 +# SHA1 Fingerprint: e7:2e:f1:df:fc:b2:09:28:cf:5d:d4:d5:67:37:b1:51:cb:86:4f:01 +# SHA256 Fingerprint: 12:56:09:aa:30:1d:a0:a2:49:b9:7a:82:39:cb:6a:34:21:6f:44:dc:ac:9f:39:54:b1:42:92:f2:e8:c8:60:8f +-----BEGIN CERTIFICATE----- +MIIDczCCAlugAwIBAgILAK7PALrEzzL4Q7IwDQYJKoZIhvcNAQELBQAwVjELMAkG +A1UEBhMCVVMxEzARBgNVBAsTCmVtU2lnbiBQS0kxFDASBgNVBAoTC2VNdWRocmEg +SW5jMRwwGgYDVQQDExNlbVNpZ24gUm9vdCBDQSAtIEMxMB4XDTE4MDIxODE4MzAw +MFoXDTQzMDIxODE4MzAwMFowVjELMAkGA1UEBhMCVVMxEzARBgNVBAsTCmVtU2ln +biBQS0kxFDASBgNVBAoTC2VNdWRocmEgSW5jMRwwGgYDVQQDExNlbVNpZ24gUm9v +dCBDQSAtIEMxMIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEAz+upufGZ +BczYKCFK83M0UYRWEPWgTywS4/oTmifQz/l5GnRfHXk5/Fv4cI7gklL35CX5VIPZ +HdPIWoU/Xse2B+4+wM6ar6xWQio5JXDWv7V7Nq2s9nPczdcdioOl+yuQFTdrHCZH +3DspVpNqs8FqOp099cGXOFgFixwR4+S0uF2FHYP+eF8LRWgYSKVGczQ7/g/IdrvH +GPMF0Ybzhe3nudkyrVWIzqa2kbBPrH4VI5b2P/AgNBbeCsbEBEV5f6f9vtKppa+c +xSMq9zwhbL2vj07FOrLzNBL834AaSaTUqZX3noleoomslMuoaJuvimUnzYnu3Yy1 +aylwQ6BpC+S5DwIDAQABo0IwQDAdBgNVHQ4EFgQU/qHgcB4qAzlSWkK+XJGFehiq +TbUwDgYDVR0PAQH/BAQDAgEGMA8GA1UdEwEB/wQFMAMBAf8wDQYJKoZIhvcNAQEL +BQADggEBAMJKVvoVIXsoounlHfv4LcQ5lkFMOycsxGwYFYDGrK9HWS8mC+M2sO87 +/kOXSTKZEhVb3xEp/6tT+LvBeA+snFOvV71ojD1pM/CjoCNjO2RnIkSt1XHLVip4 +kqNPEjE2NuLe/gDEo2APJ62gsIq1NnpSob0n9CAnYuhNlCQT5AoE6TyrLshDCUrG +YQTlSTR+08TI9Q/Aqum6VF7zYytPT1DU/rl7mYw9wC68AivTxEDkigcxHpvOJpkT ++xHqmiIMERnHXhuBUDDIlhJu58tBf5E7oke3VIAb3ADMmpDqw8NQBmIMMMAVSKeo +WXzhriKi4gp6D/piq1JM4fHfyr6DDUI= +-----END CERTIFICATE----- + +# Issuer: CN=emSign ECC Root CA - C3 O=eMudhra Inc OU=emSign PKI +# Subject: CN=emSign ECC Root CA - C3 O=eMudhra Inc OU=emSign PKI +# Label: "emSign ECC Root CA - C3" +# Serial: 582948710642506000014504 +# MD5 Fingerprint: 3e:53:b3:a3:81:ee:d7:10:f8:d3:b0:1d:17:92:f5:d5 +# SHA1 Fingerprint: b6:af:43:c2:9b:81:53:7d:f6:ef:6b:c3:1f:1f:60:15:0c:ee:48:66 +# SHA256 Fingerprint: bc:4d:80:9b:15:18:9d:78:db:3e:1d:8c:f4:f9:72:6a:79:5d:a1:64:3c:a5:f1:35:8e:1d:db:0e:dc:0d:7e:b3 +-----BEGIN CERTIFICATE----- +MIICKzCCAbGgAwIBAgIKe3G2gla4EnycqDAKBggqhkjOPQQDAzBaMQswCQYDVQQG +EwJVUzETMBEGA1UECxMKZW1TaWduIFBLSTEUMBIGA1UEChMLZU11ZGhyYSBJbmMx +IDAeBgNVBAMTF2VtU2lnbiBFQ0MgUm9vdCBDQSAtIEMzMB4XDTE4MDIxODE4MzAw +MFoXDTQzMDIxODE4MzAwMFowWjELMAkGA1UEBhMCVVMxEzARBgNVBAsTCmVtU2ln +biBQS0kxFDASBgNVBAoTC2VNdWRocmEgSW5jMSAwHgYDVQQDExdlbVNpZ24gRUND +IFJvb3QgQ0EgLSBDMzB2MBAGByqGSM49AgEGBSuBBAAiA2IABP2lYa57JhAd6bci +MK4G9IGzsUJxlTm801Ljr6/58pc1kjZGDoeVjbk5Wum739D+yAdBPLtVb4Ojavti +sIGJAnB9SMVK4+kiVCJNk7tCDK93nCOmfddhEc5lx/h//vXyqaNCMEAwHQYDVR0O +BBYEFPtaSNCAIEDyqOkAB2kZd6fmw/TPMA4GA1UdDwEB/wQEAwIBBjAPBgNVHRMB +Af8EBTADAQH/MAoGCCqGSM49BAMDA2gAMGUCMQC02C8Cif22TGK6Q04ThHK1rt0c +3ta13FaPWEBaLd4gTCKDypOofu4SQMfWh0/434UCMBwUZOR8loMRnLDRWmFLpg9J +0wD8ofzkpf9/rdcw0Md3f76BB1UwUCAU9Vc4CqgxUQ== +-----END CERTIFICATE----- + +# Issuer: CN=Hongkong Post Root CA 3 O=Hongkong Post +# Subject: CN=Hongkong Post Root CA 3 O=Hongkong Post +# Label: "Hongkong Post Root CA 3" +# Serial: 46170865288971385588281144162979347873371282084 +# MD5 Fingerprint: 11:fc:9f:bd:73:30:02:8a:fd:3f:f3:58:b9:cb:20:f0 +# SHA1 Fingerprint: 58:a2:d0:ec:20:52:81:5b:c1:f3:f8:64:02:24:4e:c2:8e:02:4b:02 +# SHA256 Fingerprint: 5a:2f:c0:3f:0c:83:b0:90:bb:fa:40:60:4b:09:88:44:6c:76:36:18:3d:f9:84:6e:17:10:1a:44:7f:b8:ef:d6 +-----BEGIN CERTIFICATE----- +MIIFzzCCA7egAwIBAgIUCBZfikyl7ADJk0DfxMauI7gcWqQwDQYJKoZIhvcNAQEL +BQAwbzELMAkGA1UEBhMCSEsxEjAQBgNVBAgTCUhvbmcgS29uZzESMBAGA1UEBxMJ +SG9uZyBLb25nMRYwFAYDVQQKEw1Ib25na29uZyBQb3N0MSAwHgYDVQQDExdIb25n +a29uZyBQb3N0IFJvb3QgQ0EgMzAeFw0xNzA2MDMwMjI5NDZaFw00MjA2MDMwMjI5 +NDZaMG8xCzAJBgNVBAYTAkhLMRIwEAYDVQQIEwlIb25nIEtvbmcxEjAQBgNVBAcT +CUhvbmcgS29uZzEWMBQGA1UEChMNSG9uZ2tvbmcgUG9zdDEgMB4GA1UEAxMXSG9u +Z2tvbmcgUG9zdCBSb290IENBIDMwggIiMA0GCSqGSIb3DQEBAQUAA4ICDwAwggIK +AoICAQCziNfqzg8gTr7m1gNt7ln8wlffKWihgw4+aMdoWJwcYEuJQwy51BWy7sFO +dem1p+/l6TWZ5Mwc50tfjTMwIDNT2aa71T4Tjukfh0mtUC1Qyhi+AViiE3CWu4mI +VoBc+L0sPOFMV4i707mV78vH9toxdCim5lSJ9UExyuUmGs2C4HDaOym71QP1mbpV +9WTRYA6ziUm4ii8F0oRFKHyPaFASePwLtVPLwpgchKOesL4jpNrcyCse2m5FHomY +2vkALgbpDDtw1VAliJnLzXNg99X/NWfFobxeq81KuEXryGgeDQ0URhLj0mRiikKY +vLTGCAj4/ahMZJx2Ab0vqWwzD9g/KLg8aQFChn5pwckGyuV6RmXpwtZQQS4/t+Tt +bNe/JgERohYpSms0BpDsE9K2+2p20jzt8NYt3eEV7KObLyzJPivkaTv/ciWxNoZb +x39ri1UbSsUgYT2uy1DhCDq+sI9jQVMwCFk8mB13umOResoQUGC/8Ne8lYePl8X+ +l2oBlKN8W4UdKjk60FSh0Tlxnf0h+bV78OLgAo9uliQlLKAeLKjEiafv7ZkGL7YK +TE/bosw3Gq9HhS2KX8Q0NEwA/RiTZxPRN+ZItIsGxVd7GYYKecsAyVKvQv83j+Gj +Hno9UKtjBucVtT+2RTeUN7F+8kjDf8V1/peNRY8apxpyKBpADwIDAQABo2MwYTAP +BgNVHRMBAf8EBTADAQH/MA4GA1UdDwEB/wQEAwIBBjAfBgNVHSMEGDAWgBQXnc0e +i9Y5K3DTXNSguB+wAPzFYTAdBgNVHQ4EFgQUF53NHovWOStw01zUoLgfsAD8xWEw +DQYJKoZIhvcNAQELBQADggIBAFbVe27mIgHSQpsY1Q7XZiNc4/6gx5LS6ZStS6LG +7BJ8dNVI0lkUmcDrudHr9EgwW62nV3OZqdPlt9EuWSRY3GguLmLYauRwCy0gUCCk +MpXRAJi70/33MvJJrsZ64Ee+bs7Lo3I6LWldy8joRTnU+kLBEUx3XZL7av9YROXr +gZ6voJmtvqkBZss4HTzfQx/0TW60uhdG/H39h4F5ag0zD/ov+BS5gLNdTaqX4fnk +GMX41TiMJjz98iji7lpJiCzfeT2OnpA8vUFKOt1b9pq0zj8lMH8yfaIDlNDceqFS +3m6TjRgm/VWsvY+b0s+v54Ysyx8Jb6NvqYTUc79NoXQbTiNg8swOqn+knEwlqLJm +Ozj/2ZQw9nKEvmhVEA/GcywWaZMH/rFF7buiVWqw2rVKAiUnhde3t4ZEFolsgCs+ +l6mc1X5VTMbeRRAc6uk7nwNT7u56AQIWeNTowr5GdogTPyK7SBIdUgC0An4hGh6c +JfTzPV4e0hz5sy229zdcxsshTrD3mUcYhcErulWuBurQB7Lcq9CClnXO0lD+mefP +L5/ndtFhKvshuzHQqp9HpLIiyhY6UFfEW0NnxWViA0kB60PZ2Pierc+xYw5F9KBa +LJstxabArahH9CdMOA0uG0k7UvToiIMrVCjU8jVStDKDYmlkDJGcn5fqdBb9HxEG +mpv0 +-----END CERTIFICATE----- + +# Issuer: CN=Microsoft ECC Root Certificate Authority 2017 O=Microsoft Corporation +# Subject: CN=Microsoft ECC Root Certificate Authority 2017 O=Microsoft Corporation +# Label: "Microsoft ECC Root Certificate Authority 2017" +# Serial: 136839042543790627607696632466672567020 +# MD5 Fingerprint: dd:a1:03:e6:4a:93:10:d1:bf:f0:19:42:cb:fe:ed:67 +# SHA1 Fingerprint: 99:9a:64:c3:7f:f4:7d:9f:ab:95:f1:47:69:89:14:60:ee:c4:c3:c5 +# SHA256 Fingerprint: 35:8d:f3:9d:76:4a:f9:e1:b7:66:e9:c9:72:df:35:2e:e1:5c:fa:c2:27:af:6a:d1:d7:0e:8e:4a:6e:dc:ba:02 +-----BEGIN CERTIFICATE----- +MIICWTCCAd+gAwIBAgIQZvI9r4fei7FK6gxXMQHC7DAKBggqhkjOPQQDAzBlMQsw +CQYDVQQGEwJVUzEeMBwGA1UEChMVTWljcm9zb2Z0IENvcnBvcmF0aW9uMTYwNAYD +VQQDEy1NaWNyb3NvZnQgRUNDIFJvb3QgQ2VydGlmaWNhdGUgQXV0aG9yaXR5IDIw +MTcwHhcNMTkxMjE4MjMwNjQ1WhcNNDIwNzE4MjMxNjA0WjBlMQswCQYDVQQGEwJV +UzEeMBwGA1UEChMVTWljcm9zb2Z0IENvcnBvcmF0aW9uMTYwNAYDVQQDEy1NaWNy +b3NvZnQgRUNDIFJvb3QgQ2VydGlmaWNhdGUgQXV0aG9yaXR5IDIwMTcwdjAQBgcq +hkjOPQIBBgUrgQQAIgNiAATUvD0CQnVBEyPNgASGAlEvaqiBYgtlzPbKnR5vSmZR +ogPZnZH6thaxjG7efM3beaYvzrvOcS/lpaso7GMEZpn4+vKTEAXhgShC48Zo9OYb +hGBKia/teQ87zvH2RPUBeMCjVDBSMA4GA1UdDwEB/wQEAwIBhjAPBgNVHRMBAf8E +BTADAQH/MB0GA1UdDgQWBBTIy5lycFIM+Oa+sgRXKSrPQhDtNTAQBgkrBgEEAYI3 +FQEEAwIBADAKBggqhkjOPQQDAwNoADBlAjBY8k3qDPlfXu5gKcs68tvWMoQZP3zV +L8KxzJOuULsJMsbG7X7JNpQS5GiFBqIb0C8CMQCZ6Ra0DvpWSNSkMBaReNtUjGUB +iudQZsIxtzm6uBoiB078a1QWIP8rtedMDE2mT3M= +-----END CERTIFICATE----- + +# Issuer: CN=Microsoft RSA Root Certificate Authority 2017 O=Microsoft Corporation +# Subject: CN=Microsoft RSA Root Certificate Authority 2017 O=Microsoft Corporation +# Label: "Microsoft RSA Root Certificate Authority 2017" +# Serial: 40975477897264996090493496164228220339 +# MD5 Fingerprint: 10:ff:00:ff:cf:c9:f8:c7:7a:c0:ee:35:8e:c9:0f:47 +# SHA1 Fingerprint: 73:a5:e6:4a:3b:ff:83:16:ff:0e:dc:cc:61:8a:90:6e:4e:ae:4d:74 +# SHA256 Fingerprint: c7:41:f7:0f:4b:2a:8d:88:bf:2e:71:c1:41:22:ef:53:ef:10:eb:a0:cf:a5:e6:4c:fa:20:f4:18:85:30:73:e0 +-----BEGIN CERTIFICATE----- +MIIFqDCCA5CgAwIBAgIQHtOXCV/YtLNHcB6qvn9FszANBgkqhkiG9w0BAQwFADBl +MQswCQYDVQQGEwJVUzEeMBwGA1UEChMVTWljcm9zb2Z0IENvcnBvcmF0aW9uMTYw +NAYDVQQDEy1NaWNyb3NvZnQgUlNBIFJvb3QgQ2VydGlmaWNhdGUgQXV0aG9yaXR5 +IDIwMTcwHhcNMTkxMjE4MjI1MTIyWhcNNDIwNzE4MjMwMDIzWjBlMQswCQYDVQQG +EwJVUzEeMBwGA1UEChMVTWljcm9zb2Z0IENvcnBvcmF0aW9uMTYwNAYDVQQDEy1N +aWNyb3NvZnQgUlNBIFJvb3QgQ2VydGlmaWNhdGUgQXV0aG9yaXR5IDIwMTcwggIi +MA0GCSqGSIb3DQEBAQUAA4ICDwAwggIKAoICAQDKW76UM4wplZEWCpW9R2LBifOZ +Nt9GkMml7Xhqb0eRaPgnZ1AzHaGm++DlQ6OEAlcBXZxIQIJTELy/xztokLaCLeX0 +ZdDMbRnMlfl7rEqUrQ7eS0MdhweSE5CAg2Q1OQT85elss7YfUJQ4ZVBcF0a5toW1 +HLUX6NZFndiyJrDKxHBKrmCk3bPZ7Pw71VdyvD/IybLeS2v4I2wDwAW9lcfNcztm +gGTjGqwu+UcF8ga2m3P1eDNbx6H7JyqhtJqRjJHTOoI+dkC0zVJhUXAoP8XFWvLJ +jEm7FFtNyP9nTUwSlq31/niol4fX/V4ggNyhSyL71Imtus5Hl0dVe49FyGcohJUc +aDDv70ngNXtk55iwlNpNhTs+VcQor1fznhPbRiefHqJeRIOkpcrVE7NLP8TjwuaG +YaRSMLl6IE9vDzhTyzMMEyuP1pq9KsgtsRx9S1HKR9FIJ3Jdh+vVReZIZZ2vUpC6 +W6IYZVcSn2i51BVrlMRpIpj0M+Dt+VGOQVDJNE92kKz8OMHY4Xu54+OU4UZpyw4K +UGsTuqwPN1q3ErWQgR5WrlcihtnJ0tHXUeOrO8ZV/R4O03QK0dqq6mm4lyiPSMQH ++FJDOvTKVTUssKZqwJz58oHhEmrARdlns87/I6KJClTUFLkqqNfs+avNJVgyeY+Q +W5g5xAgGwax/Dj0ApQIDAQABo1QwUjAOBgNVHQ8BAf8EBAMCAYYwDwYDVR0TAQH/ +BAUwAwEB/zAdBgNVHQ4EFgQUCctZf4aycI8awznjwNnpv7tNsiMwEAYJKwYBBAGC +NxUBBAMCAQAwDQYJKoZIhvcNAQEMBQADggIBAKyvPl3CEZaJjqPnktaXFbgToqZC +LgLNFgVZJ8og6Lq46BrsTaiXVq5lQ7GPAJtSzVXNUzltYkyLDVt8LkS/gxCP81OC +gMNPOsduET/m4xaRhPtthH80dK2Jp86519efhGSSvpWhrQlTM93uCupKUY5vVau6 +tZRGrox/2KJQJWVggEbbMwSubLWYdFQl3JPk+ONVFT24bcMKpBLBaYVu32TxU5nh +SnUgnZUP5NbcA/FZGOhHibJXWpS2qdgXKxdJ5XbLwVaZOjex/2kskZGT4d9Mozd2 +TaGf+G0eHdP67Pv0RR0Tbc/3WeUiJ3IrhvNXuzDtJE3cfVa7o7P4NHmJweDyAmH3 +pvwPuxwXC65B2Xy9J6P9LjrRk5Sxcx0ki69bIImtt2dmefU6xqaWM/5TkshGsRGR +xpl/j8nWZjEgQRCHLQzWwa80mMpkg/sTV9HB8Dx6jKXB/ZUhoHHBk2dxEuqPiApp +GWSZI1b7rCoucL5mxAyE7+WL85MB+GqQk2dLsmijtWKP6T+MejteD+eMuMZ87zf9 +dOLITzNy4ZQ5bb0Sr74MTnB8G2+NszKTc0QWbej09+CVgI+WXTik9KveCjCHk9hN +AHFiRSdLOkKEW39lt2c0Ui2cFmuqqNh7o0JMcccMyj6D5KbvtwEwXlGjefVwaaZB +RA+GsCyRxj3qrg+E +-----END CERTIFICATE----- + +# Issuer: CN=e-Szigno Root CA 2017 O=Microsec Ltd. +# Subject: CN=e-Szigno Root CA 2017 O=Microsec Ltd. +# Label: "e-Szigno Root CA 2017" +# Serial: 411379200276854331539784714 +# MD5 Fingerprint: de:1f:f6:9e:84:ae:a7:b4:21:ce:1e:58:7d:d1:84:98 +# SHA1 Fingerprint: 89:d4:83:03:4f:9e:9a:48:80:5f:72:37:d4:a9:a6:ef:cb:7c:1f:d1 +# SHA256 Fingerprint: be:b0:0b:30:83:9b:9b:c3:2c:32:e4:44:79:05:95:06:41:f2:64:21:b1:5e:d0:89:19:8b:51:8a:e2:ea:1b:99 +-----BEGIN CERTIFICATE----- +MIICQDCCAeWgAwIBAgIMAVRI7yH9l1kN9QQKMAoGCCqGSM49BAMCMHExCzAJBgNV +BAYTAkhVMREwDwYDVQQHDAhCdWRhcGVzdDEWMBQGA1UECgwNTWljcm9zZWMgTHRk +LjEXMBUGA1UEYQwOVkFUSFUtMjM1ODQ0OTcxHjAcBgNVBAMMFWUtU3ppZ25vIFJv +b3QgQ0EgMjAxNzAeFw0xNzA4MjIxMjA3MDZaFw00MjA4MjIxMjA3MDZaMHExCzAJ +BgNVBAYTAkhVMREwDwYDVQQHDAhCdWRhcGVzdDEWMBQGA1UECgwNTWljcm9zZWMg +THRkLjEXMBUGA1UEYQwOVkFUSFUtMjM1ODQ0OTcxHjAcBgNVBAMMFWUtU3ppZ25v +IFJvb3QgQ0EgMjAxNzBZMBMGByqGSM49AgEGCCqGSM49AwEHA0IABJbcPYrYsHtv +xie+RJCxs1YVe45DJH0ahFnuY2iyxl6H0BVIHqiQrb1TotreOpCmYF9oMrWGQd+H +Wyx7xf58etqjYzBhMA8GA1UdEwEB/wQFMAMBAf8wDgYDVR0PAQH/BAQDAgEGMB0G +A1UdDgQWBBSHERUI0arBeAyxr87GyZDvvzAEwDAfBgNVHSMEGDAWgBSHERUI0arB +eAyxr87GyZDvvzAEwDAKBggqhkjOPQQDAgNJADBGAiEAtVfd14pVCzbhhkT61Nlo +jbjcI4qKDdQvfepz7L9NbKgCIQDLpbQS+ue16M9+k/zzNY9vTlp8tLxOsvxyqltZ ++efcMQ== +-----END CERTIFICATE----- + +# Issuer: O=CERTSIGN SA OU=certSIGN ROOT CA G2 +# Subject: O=CERTSIGN SA OU=certSIGN ROOT CA G2 +# Label: "certSIGN Root CA G2" +# Serial: 313609486401300475190 +# MD5 Fingerprint: 8c:f1:75:8a:c6:19:cf:94:b7:f7:65:20:87:c3:97:c7 +# SHA1 Fingerprint: 26:f9:93:b4:ed:3d:28:27:b0:b9:4b:a7:e9:15:1d:a3:8d:92:e5:32 +# SHA256 Fingerprint: 65:7c:fe:2f:a7:3f:aa:38:46:25:71:f3:32:a2:36:3a:46:fc:e7:02:09:51:71:07:02:cd:fb:b6:ee:da:33:05 +-----BEGIN CERTIFICATE----- +MIIFRzCCAy+gAwIBAgIJEQA0tk7GNi02MA0GCSqGSIb3DQEBCwUAMEExCzAJBgNV +BAYTAlJPMRQwEgYDVQQKEwtDRVJUU0lHTiBTQTEcMBoGA1UECxMTY2VydFNJR04g +Uk9PVCBDQSBHMjAeFw0xNzAyMDYwOTI3MzVaFw00MjAyMDYwOTI3MzVaMEExCzAJ +BgNVBAYTAlJPMRQwEgYDVQQKEwtDRVJUU0lHTiBTQTEcMBoGA1UECxMTY2VydFNJ +R04gUk9PVCBDQSBHMjCCAiIwDQYJKoZIhvcNAQEBBQADggIPADCCAgoCggIBAMDF +dRmRfUR0dIf+DjuW3NgBFszuY5HnC2/OOwppGnzC46+CjobXXo9X69MhWf05N0Iw +vlDqtg+piNguLWkh59E3GE59kdUWX2tbAMI5Qw02hVK5U2UPHULlj88F0+7cDBrZ +uIt4ImfkabBoxTzkbFpG583H+u/E7Eu9aqSs/cwoUe+StCmrqzWaTOTECMYmzPhp +n+Sc8CnTXPnGFiWeI8MgwT0PPzhAsP6CRDiqWhqKa2NYOLQV07YRaXseVO6MGiKs +cpc/I1mbySKEwQdPzH/iV8oScLumZfNpdWO9lfsbl83kqK/20U6o2YpxJM02PbyW +xPFsqa7lzw1uKA2wDrXKUXt4FMMgL3/7FFXhEZn91QqhngLjYl/rNUssuHLoPj1P +rCy7Lobio3aP5ZMqz6WryFyNSwb/EkaseMsUBzXgqd+L6a8VTxaJW732jcZZroiF +DsGJ6x9nxUWO/203Nit4ZoORUSs9/1F3dmKh7Gc+PoGD4FapUB8fepmrY7+EF3fx +DTvf95xhszWYijqy7DwaNz9+j5LP2RIUZNoQAhVB/0/E6xyjyfqZ90bp4RjZsbgy +LcsUDFDYg2WD7rlcz8sFWkz6GZdr1l0T08JcVLwyc6B49fFtHsufpaafItzRUZ6C +eWRgKRM+o/1Pcmqr4tTluCRVLERLiohEnMqE0yo7AgMBAAGjQjBAMA8GA1UdEwEB +/wQFMAMBAf8wDgYDVR0PAQH/BAQDAgEGMB0GA1UdDgQWBBSCIS1mxteg4BXrzkwJ +d8RgnlRuAzANBgkqhkiG9w0BAQsFAAOCAgEAYN4auOfyYILVAzOBywaK8SJJ6ejq +kX/GM15oGQOGO0MBzwdw5AgeZYWR5hEit/UCI46uuR59H35s5r0l1ZUa8gWmr4UC +b6741jH/JclKyMeKqdmfS0mbEVeZkkMR3rYzpMzXjWR91M08KCy0mpbqTfXERMQl +qiCA2ClV9+BB/AYm/7k29UMUA2Z44RGx2iBfRgB4ACGlHgAoYXhvqAEBj500mv/0 +OJD7uNGzcgbJceaBxXntC6Z58hMLnPddDnskk7RI24Zf3lCGeOdA5jGokHZwYa+c +NywRtYK3qq4kNFtyDGkNzVmf9nGvnAvRCjj5BiKDUyUM/FHE5r7iOZULJK2v0ZXk +ltd0ZGtxTgI8qoXzIKNDOXZbbFD+mpwUHmUUihW9o4JFWklWatKcsWMy5WHgUyIO +pwpJ6st+H6jiYoD2EEVSmAYY3qXNL3+q1Ok+CHLsIwMCPKaq2LxndD0UF/tUSxfj +03k9bWtJySgOLnRQvwzZRjoQhsmnP+mg7H/rpXdYaXHmgwo38oZJar55CJD2AhZk +PuXaTH4MNMn5X7azKFGnpyuqSfqNZSlO42sTp5SjLVFteAxEy9/eCG/Oo2Sr05WE +1LlSVHJ7liXMvGnjSG4N0MedJ5qq+BOS3R7fY581qRY27Iy4g/Q9iY/NtBde17MX +QRBdJ3NghVdJIgc= +-----END CERTIFICATE----- + +# Issuer: CN=NAVER Global Root Certification Authority O=NAVER BUSINESS PLATFORM Corp. +# Subject: CN=NAVER Global Root Certification Authority O=NAVER BUSINESS PLATFORM Corp. +# Label: "NAVER Global Root Certification Authority" +# Serial: 9013692873798656336226253319739695165984492813 +# MD5 Fingerprint: c8:7e:41:f6:25:3b:f5:09:b3:17:e8:46:3d:bf:d0:9b +# SHA1 Fingerprint: 8f:6b:f2:a9:27:4a:da:14:a0:c4:f4:8e:61:27:f9:c0:1e:78:5d:d1 +# SHA256 Fingerprint: 88:f4:38:dc:f8:ff:d1:fa:8f:42:91:15:ff:e5:f8:2a:e1:e0:6e:0c:70:c3:75:fa:ad:71:7b:34:a4:9e:72:65 +-----BEGIN CERTIFICATE----- +MIIFojCCA4qgAwIBAgIUAZQwHqIL3fXFMyqxQ0Rx+NZQTQ0wDQYJKoZIhvcNAQEM +BQAwaTELMAkGA1UEBhMCS1IxJjAkBgNVBAoMHU5BVkVSIEJVU0lORVNTIFBMQVRG +T1JNIENvcnAuMTIwMAYDVQQDDClOQVZFUiBHbG9iYWwgUm9vdCBDZXJ0aWZpY2F0 +aW9uIEF1dGhvcml0eTAeFw0xNzA4MTgwODU4NDJaFw0zNzA4MTgyMzU5NTlaMGkx +CzAJBgNVBAYTAktSMSYwJAYDVQQKDB1OQVZFUiBCVVNJTkVTUyBQTEFURk9STSBD +b3JwLjEyMDAGA1UEAwwpTkFWRVIgR2xvYmFsIFJvb3QgQ2VydGlmaWNhdGlvbiBB +dXRob3JpdHkwggIiMA0GCSqGSIb3DQEBAQUAA4ICDwAwggIKAoICAQC21PGTXLVA +iQqrDZBbUGOukJR0F0Vy1ntlWilLp1agS7gvQnXp2XskWjFlqxcX0TM62RHcQDaH +38dq6SZeWYp34+hInDEW+j6RscrJo+KfziFTowI2MMtSAuXaMl3Dxeb57hHHi8lE +HoSTGEq0n+USZGnQJoViAbbJAh2+g1G7XNr4rRVqmfeSVPc0W+m/6imBEtRTkZaz +kVrd/pBzKPswRrXKCAfHcXLJZtM0l/aM9BhK4dA9WkW2aacp+yPOiNgSnABIqKYP +szuSjXEOdMWLyEz59JuOuDxp7W87UC9Y7cSw0BwbagzivESq2M0UXZR4Yb8Obtoq +vC8MC3GmsxY/nOb5zJ9TNeIDoKAYv7vxvvTWjIcNQvcGufFt7QSUqP620wbGQGHf +nZ3zVHbOUzoBppJB7ASjjw2i1QnK1sua8e9DXcCrpUHPXFNwcMmIpi3Ua2FzUCaG +YQ5fG8Ir4ozVu53BA0K6lNpfqbDKzE0K70dpAy8i+/Eozr9dUGWokG2zdLAIx6yo +0es+nPxdGoMuK8u180SdOqcXYZaicdNwlhVNt0xz7hlcxVs+Qf6sdWA7G2POAN3a +CJBitOUt7kinaxeZVL6HSuOpXgRM6xBtVNbv8ejyYhbLgGvtPe31HzClrkvJE+2K +AQHJuFFYwGY6sWZLxNUxAmLpdIQM201GLQIDAQABo0IwQDAdBgNVHQ4EFgQU0p+I +36HNLL3s9TsBAZMzJ7LrYEswDgYDVR0PAQH/BAQDAgEGMA8GA1UdEwEB/wQFMAMB +Af8wDQYJKoZIhvcNAQEMBQADggIBADLKgLOdPVQG3dLSLvCkASELZ0jKbY7gyKoN +qo0hV4/GPnrK21HUUrPUloSlWGB/5QuOH/XcChWB5Tu2tyIvCZwTFrFsDDUIbatj +cu3cvuzHV+YwIHHW1xDBE1UBjCpD5EHxzzp6U5LOogMFDTjfArsQLtk70pt6wKGm ++LUx5vR1yblTmXVHIloUFcd4G7ad6Qz4G3bxhYTeodoS76TiEJd6eN4MUZeoIUCL +hr0N8F5OSza7OyAfikJW4Qsav3vQIkMsRIz75Sq0bBwcupTgE34h5prCy8VCZLQe +lHsIJchxzIdFV4XTnyliIoNRlwAYl3dqmJLJfGBs32x9SuRwTMKeuB330DTHD8z7 +p/8Dvq1wkNoL3chtl1+afwkyQf3NosxabUzyqkn+Zvjp2DXrDige7kgvOtB5CTh8 +piKCk5XQA76+AqAF3SAi428diDRgxuYKuQl1C/AH6GmWNcf7I4GOODm4RStDeKLR +LBT/DShycpWbXgnbiUSYqqFJu3FS8r/2/yehNq+4tneI3TqkbZs0kNwUXTC/t+sX +5Ie3cdCh13cV1ELX8vMxmV2b3RZtP+oGI/hGoiLtk/bdmuYqh7GYVPEi92tF4+KO +dh2ajcQGjTa3FPOdVGm3jjzVpG2Tgbet9r1ke8LJaDmgkpzNNIaRkPpkUZ3+/uul +9XXeifdy +-----END CERTIFICATE----- + +# Issuer: CN=AC RAIZ FNMT-RCM SERVIDORES SEGUROS O=FNMT-RCM OU=Ceres +# Subject: CN=AC RAIZ FNMT-RCM SERVIDORES SEGUROS O=FNMT-RCM OU=Ceres +# Label: "AC RAIZ FNMT-RCM SERVIDORES SEGUROS" +# Serial: 131542671362353147877283741781055151509 +# MD5 Fingerprint: 19:36:9c:52:03:2f:d2:d1:bb:23:cc:dd:1e:12:55:bb +# SHA1 Fingerprint: 62:ff:d9:9e:c0:65:0d:03:ce:75:93:d2:ed:3f:2d:32:c9:e3:e5:4a +# SHA256 Fingerprint: 55:41:53:b1:3d:2c:f9:dd:b7:53:bf:be:1a:4e:0a:e0:8d:0a:a4:18:70:58:fe:60:a2:b8:62:b2:e4:b8:7b:cb +-----BEGIN CERTIFICATE----- +MIICbjCCAfOgAwIBAgIQYvYybOXE42hcG2LdnC6dlTAKBggqhkjOPQQDAzB4MQsw +CQYDVQQGEwJFUzERMA8GA1UECgwIRk5NVC1SQ00xDjAMBgNVBAsMBUNlcmVzMRgw +FgYDVQRhDA9WQVRFUy1RMjgyNjAwNEoxLDAqBgNVBAMMI0FDIFJBSVogRk5NVC1S +Q00gU0VSVklET1JFUyBTRUdVUk9TMB4XDTE4MTIyMDA5MzczM1oXDTQzMTIyMDA5 +MzczM1oweDELMAkGA1UEBhMCRVMxETAPBgNVBAoMCEZOTVQtUkNNMQ4wDAYDVQQL +DAVDZXJlczEYMBYGA1UEYQwPVkFURVMtUTI4MjYwMDRKMSwwKgYDVQQDDCNBQyBS +QUlaIEZOTVQtUkNNIFNFUlZJRE9SRVMgU0VHVVJPUzB2MBAGByqGSM49AgEGBSuB +BAAiA2IABPa6V1PIyqvfNkpSIeSX0oNnnvBlUdBeh8dHsVnyV0ebAAKTRBdp20LH +sbI6GA60XYyzZl2hNPk2LEnb80b8s0RpRBNm/dfF/a82Tc4DTQdxz69qBdKiQ1oK +Um8BA06Oi6NCMEAwDwYDVR0TAQH/BAUwAwEB/zAOBgNVHQ8BAf8EBAMCAQYwHQYD +VR0OBBYEFAG5L++/EYZg8k/QQW6rcx/n0m5JMAoGCCqGSM49BAMDA2kAMGYCMQCu +SuMrQMN0EfKVrRYj3k4MGuZdpSRea0R7/DjiT8ucRRcRTBQnJlU5dUoDzBOQn5IC +MQD6SmxgiHPz7riYYqnOK8LZiqZwMR2vsJRM60/G49HzYqc8/5MuB1xJAWdpEgJy +v+c= +-----END CERTIFICATE----- + +# Issuer: CN=GlobalSign Root R46 O=GlobalSign nv-sa +# Subject: CN=GlobalSign Root R46 O=GlobalSign nv-sa +# Label: "GlobalSign Root R46" +# Serial: 1552617688466950547958867513931858518042577 +# MD5 Fingerprint: c4:14:30:e4:fa:66:43:94:2a:6a:1b:24:5f:19:d0:ef +# SHA1 Fingerprint: 53:a2:b0:4b:ca:6b:d6:45:e6:39:8a:8e:c4:0d:d2:bf:77:c3:a2:90 +# SHA256 Fingerprint: 4f:a3:12:6d:8d:3a:11:d1:c4:85:5a:4f:80:7c:ba:d6:cf:91:9d:3a:5a:88:b0:3b:ea:2c:63:72:d9:3c:40:c9 +-----BEGIN CERTIFICATE----- +MIIFWjCCA0KgAwIBAgISEdK7udcjGJ5AXwqdLdDfJWfRMA0GCSqGSIb3DQEBDAUA +MEYxCzAJBgNVBAYTAkJFMRkwFwYDVQQKExBHbG9iYWxTaWduIG52LXNhMRwwGgYD +VQQDExNHbG9iYWxTaWduIFJvb3QgUjQ2MB4XDTE5MDMyMDAwMDAwMFoXDTQ2MDMy +MDAwMDAwMFowRjELMAkGA1UEBhMCQkUxGTAXBgNVBAoTEEdsb2JhbFNpZ24gbnYt +c2ExHDAaBgNVBAMTE0dsb2JhbFNpZ24gUm9vdCBSNDYwggIiMA0GCSqGSIb3DQEB +AQUAA4ICDwAwggIKAoICAQCsrHQy6LNl5brtQyYdpokNRbopiLKkHWPd08EsCVeJ +OaFV6Wc0dwxu5FUdUiXSE2te4R2pt32JMl8Nnp8semNgQB+msLZ4j5lUlghYruQG +vGIFAha/r6gjA7aUD7xubMLL1aa7DOn2wQL7Id5m3RerdELv8HQvJfTqa1VbkNud +316HCkD7rRlr+/fKYIje2sGP1q7Vf9Q8g+7XFkyDRTNrJ9CG0Bwta/OrffGFqfUo +0q3v84RLHIf8E6M6cqJaESvWJ3En7YEtbWaBkoe0G1h6zD8K+kZPTXhc+CtI4wSE +y132tGqzZfxCnlEmIyDLPRT5ge1lFgBPGmSXZgjPjHvjK8Cd+RTyG/FWaha/LIWF +zXg4mutCagI0GIMXTpRW+LaCtfOW3T3zvn8gdz57GSNrLNRyc0NXfeD412lPFzYE ++cCQYDdF3uYM2HSNrpyibXRdQr4G9dlkbgIQrImwTDsHTUB+JMWKmIJ5jqSngiCN +I/onccnfxkF0oE32kRbcRoxfKWMxWXEM2G/CtjJ9++ZdU6Z+Ffy7dXxd7Pj2Fxzs +x2sZy/N78CsHpdlseVR2bJ0cpm4O6XkMqCNqo98bMDGfsVR7/mrLZqrcZdCinkqa +ByFrgY/bxFn63iLABJzjqls2k+g9vXqhnQt2sQvHnf3PmKgGwvgqo6GDoLclcqUC +4wIDAQABo0IwQDAOBgNVHQ8BAf8EBAMCAYYwDwYDVR0TAQH/BAUwAwEB/zAdBgNV +HQ4EFgQUA1yrc4GHqMywptWU4jaWSf8FmSwwDQYJKoZIhvcNAQEMBQADggIBAHx4 +7PYCLLtbfpIrXTncvtgdokIzTfnvpCo7RGkerNlFo048p9gkUbJUHJNOxO97k4Vg +JuoJSOD1u8fpaNK7ajFxzHmuEajwmf3lH7wvqMxX63bEIaZHU1VNaL8FpO7XJqti +2kM3S+LGteWygxk6x9PbTZ4IevPuzz5i+6zoYMzRx6Fcg0XERczzF2sUyQQCPtIk +pnnpHs6i58FZFZ8d4kuaPp92CC1r2LpXFNqD6v6MVenQTqnMdzGxRBF6XLE+0xRF +FRhiJBPSy03OXIPBNvIQtQ6IbbjhVp+J3pZmOUdkLG5NrmJ7v2B0GbhWrJKsFjLt +rWhV/pi60zTe9Mlhww6G9kuEYO4Ne7UyWHmRVSyBQ7N0H3qqJZ4d16GLuc1CLgSk +ZoNNiTW2bKg2SnkheCLQQrzRQDGQob4Ez8pn7fXwgNNgyYMqIgXQBztSvwyeqiv5 +u+YfjyW6hY0XHgL+XVAEV8/+LbzvXMAaq7afJMbfc2hIkCwU9D9SGuTSyxTDYWnP +4vkYxboznxSjBF25cfe1lNj2M8FawTSLfJvdkzrnE6JwYZ+vj+vYxXX4M2bUdGc6 +N3ec592kD3ZDZopD8p/7DEJ4Y9HiD2971KE9dJeFt0g5QdYg/NA6s/rob8SKunE3 +vouXsXgxT7PntgMTzlSdriVZzH81Xwj3QEUxeCp6 +-----END CERTIFICATE----- + +# Issuer: CN=GlobalSign Root E46 O=GlobalSign nv-sa +# Subject: CN=GlobalSign Root E46 O=GlobalSign nv-sa +# Label: "GlobalSign Root E46" +# Serial: 1552617690338932563915843282459653771421763 +# MD5 Fingerprint: b5:b8:66:ed:de:08:83:e3:c9:e2:01:34:06:ac:51:6f +# SHA1 Fingerprint: 39:b4:6c:d5:fe:80:06:eb:e2:2f:4a:bb:08:33:a0:af:db:b9:dd:84 +# SHA256 Fingerprint: cb:b9:c4:4d:84:b8:04:3e:10:50:ea:31:a6:9f:51:49:55:d7:bf:d2:e2:c6:b4:93:01:01:9a:d6:1d:9f:50:58 +-----BEGIN CERTIFICATE----- +MIICCzCCAZGgAwIBAgISEdK7ujNu1LzmJGjFDYQdmOhDMAoGCCqGSM49BAMDMEYx +CzAJBgNVBAYTAkJFMRkwFwYDVQQKExBHbG9iYWxTaWduIG52LXNhMRwwGgYDVQQD +ExNHbG9iYWxTaWduIFJvb3QgRTQ2MB4XDTE5MDMyMDAwMDAwMFoXDTQ2MDMyMDAw +MDAwMFowRjELMAkGA1UEBhMCQkUxGTAXBgNVBAoTEEdsb2JhbFNpZ24gbnYtc2Ex +HDAaBgNVBAMTE0dsb2JhbFNpZ24gUm9vdCBFNDYwdjAQBgcqhkjOPQIBBgUrgQQA +IgNiAAScDrHPt+ieUnd1NPqlRqetMhkytAepJ8qUuwzSChDH2omwlwxwEwkBjtjq +R+q+soArzfwoDdusvKSGN+1wCAB16pMLey5SnCNoIwZD7JIvU4Tb+0cUB+hflGdd +yXqBPCCjQjBAMA4GA1UdDwEB/wQEAwIBhjAPBgNVHRMBAf8EBTADAQH/MB0GA1Ud +DgQWBBQxCpCPtsad0kRLgLWi5h+xEk8blTAKBggqhkjOPQQDAwNoADBlAjEA31SQ +7Zvvi5QCkxeCmb6zniz2C5GMn0oUsfZkvLtoURMMA/cVi4RguYv/Uo7njLwcAjA8 ++RHUjE7AwWHCFUyqqx0LMV87HOIAl0Qx5v5zli/altP+CAezNIm8BZ/3Hobui3A= +-----END CERTIFICATE----- + +# Issuer: CN=ANF Secure Server Root CA O=ANF Autoridad de Certificacion OU=ANF CA Raiz +# Subject: CN=ANF Secure Server Root CA O=ANF Autoridad de Certificacion OU=ANF CA Raiz +# Label: "ANF Secure Server Root CA" +# Serial: 996390341000653745 +# MD5 Fingerprint: 26:a6:44:5a:d9:af:4e:2f:b2:1d:b6:65:b0:4e:e8:96 +# SHA1 Fingerprint: 5b:6e:68:d0:cc:15:b6:a0:5f:1e:c1:5f:ae:02:fc:6b:2f:5d:6f:74 +# SHA256 Fingerprint: fb:8f:ec:75:91:69:b9:10:6b:1e:51:16:44:c6:18:c5:13:04:37:3f:6c:06:43:08:8d:8b:ef:fd:1b:99:75:99 +-----BEGIN CERTIFICATE----- +MIIF7zCCA9egAwIBAgIIDdPjvGz5a7EwDQYJKoZIhvcNAQELBQAwgYQxEjAQBgNV +BAUTCUc2MzI4NzUxMDELMAkGA1UEBhMCRVMxJzAlBgNVBAoTHkFORiBBdXRvcmlk +YWQgZGUgQ2VydGlmaWNhY2lvbjEUMBIGA1UECxMLQU5GIENBIFJhaXoxIjAgBgNV +BAMTGUFORiBTZWN1cmUgU2VydmVyIFJvb3QgQ0EwHhcNMTkwOTA0MTAwMDM4WhcN +MzkwODMwMTAwMDM4WjCBhDESMBAGA1UEBRMJRzYzMjg3NTEwMQswCQYDVQQGEwJF +UzEnMCUGA1UEChMeQU5GIEF1dG9yaWRhZCBkZSBDZXJ0aWZpY2FjaW9uMRQwEgYD +VQQLEwtBTkYgQ0EgUmFpejEiMCAGA1UEAxMZQU5GIFNlY3VyZSBTZXJ2ZXIgUm9v +dCBDQTCCAiIwDQYJKoZIhvcNAQEBBQADggIPADCCAgoCggIBANvrayvmZFSVgpCj +cqQZAZ2cC4Ffc0m6p6zzBE57lgvsEeBbphzOG9INgxwruJ4dfkUyYA8H6XdYfp9q +yGFOtibBTI3/TO80sh9l2Ll49a2pcbnvT1gdpd50IJeh7WhM3pIXS7yr/2WanvtH +2Vdy8wmhrnZEE26cLUQ5vPnHO6RYPUG9tMJJo8gN0pcvB2VSAKduyK9o7PQUlrZX +H1bDOZ8rbeTzPvY1ZNoMHKGESy9LS+IsJJ1tk0DrtSOOMspvRdOoiXsezx76W0OL +zc2oD2rKDF65nkeP8Nm2CgtYZRczuSPkdxl9y0oukntPLxB3sY0vaJxizOBQ+OyR +p1RMVwnVdmPF6GUe7m1qzwmd+nxPrWAI/VaZDxUse6mAq4xhj0oHdkLePfTdsiQz +W7i1o0TJrH93PB0j7IKppuLIBkwC/qxcmZkLLxCKpvR/1Yd0DVlJRfbwcVw5Kda/ +SiOL9V8BY9KHcyi1Swr1+KuCLH5zJTIdC2MKF4EA/7Z2Xue0sUDKIbvVgFHlSFJn +LNJhiQcND85Cd8BEc5xEUKDbEAotlRyBr+Qc5RQe8TZBAQIvfXOn3kLMTOmJDVb3 +n5HUA8ZsyY/b2BzgQJhdZpmYgG4t/wHFzstGH6wCxkPmrqKEPMVOHj1tyRRM4y5B +u8o5vzY8KhmqQYdOpc5LMnndkEl/AgMBAAGjYzBhMB8GA1UdIwQYMBaAFJxf0Gxj +o1+TypOYCK2Mh6UsXME3MB0GA1UdDgQWBBScX9BsY6Nfk8qTmAitjIelLFzBNzAO +BgNVHQ8BAf8EBAMCAYYwDwYDVR0TAQH/BAUwAwEB/zANBgkqhkiG9w0BAQsFAAOC +AgEATh65isagmD9uw2nAalxJUqzLK114OMHVVISfk/CHGT0sZonrDUL8zPB1hT+L +9IBdeeUXZ701guLyPI59WzbLWoAAKfLOKyzxj6ptBZNscsdW699QIyjlRRA96Gej +rw5VD5AJYu9LWaL2U/HANeQvwSS9eS9OICI7/RogsKQOLHDtdD+4E5UGUcjohybK +pFtqFiGS3XNgnhAY3jyB6ugYw3yJ8otQPr0R4hUDqDZ9MwFsSBXXiJCZBMXM5gf0 +vPSQ7RPi6ovDj6MzD8EpTBNO2hVWcXNyglD2mjN8orGoGjR0ZVzO0eurU+AagNjq +OknkJjCb5RyKqKkVMoaZkgoQI1YS4PbOTOK7vtuNknMBZi9iPrJyJ0U27U1W45eZ +/zo1PqVUSlJZS2Db7v54EX9K3BR5YLZrZAPbFYPhor72I5dQ8AkzNqdxliXzuUJ9 +2zg/LFis6ELhDtjTO0wugumDLmsx2d1Hhk9tl5EuT+IocTUW0fJz/iUrB0ckYyfI ++PbZa/wSMVYIwFNCr5zQM378BvAxRAMU8Vjq8moNqRGyg77FGr8H6lnco4g175x2 +MjxNBiLOFeXdntiP2t7SxDnlF4HPOEfrf4htWRvfn0IUrn7PqLBmZdo3r5+qPeoo +tt7VMVgWglvquxl1AnMaykgaIZOQCo6ThKd9OyMYkomgjaw= +-----END CERTIFICATE----- + +# Issuer: CN=Certum EC-384 CA O=Asseco Data Systems S.A. OU=Certum Certification Authority +# Subject: CN=Certum EC-384 CA O=Asseco Data Systems S.A. OU=Certum Certification Authority +# Label: "Certum EC-384 CA" +# Serial: 160250656287871593594747141429395092468 +# MD5 Fingerprint: b6:65:b3:96:60:97:12:a1:ec:4e:e1:3d:a3:c6:c9:f1 +# SHA1 Fingerprint: f3:3e:78:3c:ac:df:f4:a2:cc:ac:67:55:69:56:d7:e5:16:3c:e1:ed +# SHA256 Fingerprint: 6b:32:80:85:62:53:18:aa:50:d1:73:c9:8d:8b:da:09:d5:7e:27:41:3d:11:4c:f7:87:a0:f5:d0:6c:03:0c:f6 +-----BEGIN CERTIFICATE----- +MIICZTCCAeugAwIBAgIQeI8nXIESUiClBNAt3bpz9DAKBggqhkjOPQQDAzB0MQsw +CQYDVQQGEwJQTDEhMB8GA1UEChMYQXNzZWNvIERhdGEgU3lzdGVtcyBTLkEuMScw +JQYDVQQLEx5DZXJ0dW0gQ2VydGlmaWNhdGlvbiBBdXRob3JpdHkxGTAXBgNVBAMT +EENlcnR1bSBFQy0zODQgQ0EwHhcNMTgwMzI2MDcyNDU0WhcNNDMwMzI2MDcyNDU0 +WjB0MQswCQYDVQQGEwJQTDEhMB8GA1UEChMYQXNzZWNvIERhdGEgU3lzdGVtcyBT +LkEuMScwJQYDVQQLEx5DZXJ0dW0gQ2VydGlmaWNhdGlvbiBBdXRob3JpdHkxGTAX +BgNVBAMTEENlcnR1bSBFQy0zODQgQ0EwdjAQBgcqhkjOPQIBBgUrgQQAIgNiAATE +KI6rGFtqvm5kN2PkzeyrOvfMobgOgknXhimfoZTy42B4mIF4Bk3y7JoOV2CDn7Tm +Fy8as10CW4kjPMIRBSqniBMY81CE1700LCeJVf/OTOffph8oxPBUw7l8t1Ot68Kj +QjBAMA8GA1UdEwEB/wQFMAMBAf8wHQYDVR0OBBYEFI0GZnQkdjrzife81r1HfS+8 +EF9LMA4GA1UdDwEB/wQEAwIBBjAKBggqhkjOPQQDAwNoADBlAjADVS2m5hjEfO/J +UG7BJw+ch69u1RsIGL2SKcHvlJF40jocVYli5RsJHrpka/F2tNQCMQC0QoSZ/6vn +nvuRlydd3LBbMHHOXjgaatkl5+r3YZJW+OraNsKHZZYuciUvf9/DE8k= +-----END CERTIFICATE----- + +# Issuer: CN=Certum Trusted Root CA O=Asseco Data Systems S.A. OU=Certum Certification Authority +# Subject: CN=Certum Trusted Root CA O=Asseco Data Systems S.A. OU=Certum Certification Authority +# Label: "Certum Trusted Root CA" +# Serial: 40870380103424195783807378461123655149 +# MD5 Fingerprint: 51:e1:c2:e7:fe:4c:84:af:59:0e:2f:f4:54:6f:ea:29 +# SHA1 Fingerprint: c8:83:44:c0:18:ae:9f:cc:f1:87:b7:8f:22:d1:c5:d7:45:84:ba:e5 +# SHA256 Fingerprint: fe:76:96:57:38:55:77:3e:37:a9:5e:7a:d4:d9:cc:96:c3:01:57:c1:5d:31:76:5b:a9:b1:57:04:e1:ae:78:fd +-----BEGIN CERTIFICATE----- +MIIFwDCCA6igAwIBAgIQHr9ZULjJgDdMBvfrVU+17TANBgkqhkiG9w0BAQ0FADB6 +MQswCQYDVQQGEwJQTDEhMB8GA1UEChMYQXNzZWNvIERhdGEgU3lzdGVtcyBTLkEu +MScwJQYDVQQLEx5DZXJ0dW0gQ2VydGlmaWNhdGlvbiBBdXRob3JpdHkxHzAdBgNV +BAMTFkNlcnR1bSBUcnVzdGVkIFJvb3QgQ0EwHhcNMTgwMzE2MTIxMDEzWhcNNDMw +MzE2MTIxMDEzWjB6MQswCQYDVQQGEwJQTDEhMB8GA1UEChMYQXNzZWNvIERhdGEg +U3lzdGVtcyBTLkEuMScwJQYDVQQLEx5DZXJ0dW0gQ2VydGlmaWNhdGlvbiBBdXRo +b3JpdHkxHzAdBgNVBAMTFkNlcnR1bSBUcnVzdGVkIFJvb3QgQ0EwggIiMA0GCSqG +SIb3DQEBAQUAA4ICDwAwggIKAoICAQDRLY67tzbqbTeRn06TpwXkKQMlzhyC93yZ +n0EGze2jusDbCSzBfN8pfktlL5On1AFrAygYo9idBcEq2EXxkd7fO9CAAozPOA/q +p1x4EaTByIVcJdPTsuclzxFUl6s1wB52HO8AU5853BSlLCIls3Jy/I2z5T4IHhQq +NwuIPMqw9MjCoa68wb4pZ1Xi/K1ZXP69VyywkI3C7Te2fJmItdUDmj0VDT06qKhF +8JVOJVkdzZhpu9PMMsmN74H+rX2Ju7pgE8pllWeg8xn2A1bUatMn4qGtg/BKEiJ3 +HAVz4hlxQsDsdUaakFjgao4rpUYwBI4Zshfjvqm6f1bxJAPXsiEodg42MEx51UGa +mqi4NboMOvJEGyCI98Ul1z3G4z5D3Yf+xOr1Uz5MZf87Sst4WmsXXw3Hw09Omiqi +7VdNIuJGmj8PkTQkfVXjjJU30xrwCSss0smNtA0Aq2cpKNgB9RkEth2+dv5yXMSF +ytKAQd8FqKPVhJBPC/PgP5sZ0jeJP/J7UhyM9uH3PAeXjA6iWYEMspA90+NZRu0P +qafegGtaqge2Gcu8V/OXIXoMsSt0Puvap2ctTMSYnjYJdmZm/Bo/6khUHL4wvYBQ +v3y1zgD2DGHZ5yQD4OMBgQ692IU0iL2yNqh7XAjlRICMb/gv1SHKHRzQ+8S1h9E6 +Tsd2tTVItQIDAQABo0IwQDAPBgNVHRMBAf8EBTADAQH/MB0GA1UdDgQWBBSM+xx1 +vALTn04uSNn5YFSqxLNP+jAOBgNVHQ8BAf8EBAMCAQYwDQYJKoZIhvcNAQENBQAD +ggIBAEii1QALLtA/vBzVtVRJHlpr9OTy4EA34MwUe7nJ+jW1dReTagVphZzNTxl4 +WxmB82M+w85bj/UvXgF2Ez8sALnNllI5SW0ETsXpD4YN4fqzX4IS8TrOZgYkNCvo +zMrnadyHncI013nR03e4qllY/p0m+jiGPp2Kh2RX5Rc64vmNueMzeMGQ2Ljdt4NR +5MTMI9UGfOZR0800McD2RrsLrfw9EAUqO0qRJe6M1ISHgCq8CYyqOhNf6DR5UMEQ +GfnTKB7U0VEwKbOukGfWHwpjscWpxkIxYxeU72nLL/qMFH3EQxiJ2fAyQOaA4kZf +5ePBAFmo+eggvIksDkc0C+pXwlM2/KfUrzHN/gLldfq5Jwn58/U7yn2fqSLLiMmq +0Uc9NneoWWRrJ8/vJ8HjJLWG965+Mk2weWjROeiQWMODvA8s1pfrzgzhIMfatz7D +P78v3DSk+yshzWePS/Tj6tQ/50+6uaWTRRxmHyH6ZF5v4HaUMst19W7l9o/HuKTM +qJZ9ZPskWkoDbGs4xugDQ5r3V7mzKWmTOPQD8rv7gmsHINFSH5pkAnuYZttcTVoP +0ISVoDwUQwbKytu4QTbaakRnh6+v40URFWkIsr4WOZckbxJF0WddCajJFdr60qZf +E2Efv4WstK2tBZQIgx51F9NxO5NQI1mg7TyRVJ12AMXDuDjb +-----END CERTIFICATE----- + +# Issuer: CN=TunTrust Root CA O=Agence Nationale de Certification Electronique +# Subject: CN=TunTrust Root CA O=Agence Nationale de Certification Electronique +# Label: "TunTrust Root CA" +# Serial: 108534058042236574382096126452369648152337120275 +# MD5 Fingerprint: 85:13:b9:90:5b:36:5c:b6:5e:b8:5a:f8:e0:31:57:b4 +# SHA1 Fingerprint: cf:e9:70:84:0f:e0:73:0f:9d:f6:0c:7f:2c:4b:ee:20:46:34:9c:bb +# SHA256 Fingerprint: 2e:44:10:2a:b5:8c:b8:54:19:45:1c:8e:19:d9:ac:f3:66:2c:af:bc:61:4b:6a:53:96:0a:30:f7:d0:e2:eb:41 +-----BEGIN CERTIFICATE----- +MIIFszCCA5ugAwIBAgIUEwLV4kBMkkaGFmddtLu7sms+/BMwDQYJKoZIhvcNAQEL +BQAwYTELMAkGA1UEBhMCVE4xNzA1BgNVBAoMLkFnZW5jZSBOYXRpb25hbGUgZGUg +Q2VydGlmaWNhdGlvbiBFbGVjdHJvbmlxdWUxGTAXBgNVBAMMEFR1blRydXN0IFJv +b3QgQ0EwHhcNMTkwNDI2MDg1NzU2WhcNNDQwNDI2MDg1NzU2WjBhMQswCQYDVQQG +EwJUTjE3MDUGA1UECgwuQWdlbmNlIE5hdGlvbmFsZSBkZSBDZXJ0aWZpY2F0aW9u +IEVsZWN0cm9uaXF1ZTEZMBcGA1UEAwwQVHVuVHJ1c3QgUm9vdCBDQTCCAiIwDQYJ +KoZIhvcNAQEBBQADggIPADCCAgoCggIBAMPN0/y9BFPdDCA61YguBUtB9YOCfvdZ +n56eY+hz2vYGqU8ftPkLHzmMmiDQfgbU7DTZhrx1W4eI8NLZ1KMKsmwb60ksPqxd +2JQDoOw05TDENX37Jk0bbjBU2PWARZw5rZzJJQRNmpA+TkBuimvNKWfGzC3gdOgF +VwpIUPp6Q9p+7FuaDmJ2/uqdHYVy7BG7NegfJ7/Boce7SBbdVtfMTqDhuazb1YMZ +GoXRlJfXyqNlC/M4+QKu3fZnz8k/9YosRxqZbwUN/dAdgjH8KcwAWJeRTIAAHDOF +li/LQcKLEITDCSSJH7UP2dl3RxiSlGBcx5kDPP73lad9UKGAwqmDrViWVSHbhlnU +r8a83YFuB9tgYv7sEG7aaAH0gxupPqJbI9dkxt/con3YS7qC0lH4Zr8GRuR5KiY2 +eY8fTpkdso8MDhz/yV3A/ZAQprE38806JG60hZC/gLkMjNWb1sjxVj8agIl6qeIb +MlEsPvLfe/ZdeikZjuXIvTZxi11Mwh0/rViizz1wTaZQmCXcI/m4WEEIcb9PuISg +jwBUFfyRbVinljvrS5YnzWuioYasDXxU5mZMZl+QviGaAkYt5IPCgLnPSz7ofzwB +7I9ezX/SKEIBlYrilz0QIX32nRzFNKHsLA4KUiwSVXAkPcvCFDVDXSdOvsC9qnyW +5/yeYa1E0wCXAgMBAAGjYzBhMB0GA1UdDgQWBBQGmpsfU33x9aTI04Y+oXNZtPdE +ITAPBgNVHRMBAf8EBTADAQH/MB8GA1UdIwQYMBaAFAaamx9TffH1pMjThj6hc1m0 +90QhMA4GA1UdDwEB/wQEAwIBBjANBgkqhkiG9w0BAQsFAAOCAgEAqgVutt0Vyb+z +xiD2BkewhpMl0425yAA/l/VSJ4hxyXT968pk21vvHl26v9Hr7lxpuhbI87mP0zYu +QEkHDVneixCwSQXi/5E/S7fdAo74gShczNxtr18UnH1YeA32gAm56Q6XKRm4t+v4 +FstVEuTGfbvE7Pi1HE4+Z7/FXxttbUcoqgRYYdZ2vyJ/0Adqp2RT8JeNnYA/u8EH +22Wv5psymsNUk8QcCMNE+3tjEUPRahphanltkE8pjkcFwRJpadbGNjHh/PqAulxP +xOu3Mqz4dWEX1xAZufHSCe96Qp1bWgvUxpVOKs7/B9dPfhgGiPEZtdmYu65xxBzn +dFlY7wyJz4sfdZMaBBSSSFCp61cpABbjNhzI+L/wM9VBD8TMPN3pM0MBkRArHtG5 +Xc0yGYuPjCB31yLEQtyEFpslbei0VXF/sHyz03FJuc9SpAQ/3D2gu68zngowYI7b +nV2UqL1g52KAdoGDDIzMMEZJ4gzSqK/rYXHv5yJiqfdcZGyfFoxnNidF9Ql7v/YQ +CvGwjVRDjAS6oz/v4jXH+XTgbzRB0L9zZVcg+ZtnemZoJE6AZb0QmQZZ8mWvuMZH +u/2QeItBcy6vVR/cO5JyboTT0GFMDcx2V+IthSIVNg3rAZ3r2OvEhJn7wAzMMujj +d9qDRIueVSjAi1jTkD5OGwDxFa2DK5o= +-----END CERTIFICATE----- + +# Issuer: CN=HARICA TLS RSA Root CA 2021 O=Hellenic Academic and Research Institutions CA +# Subject: CN=HARICA TLS RSA Root CA 2021 O=Hellenic Academic and Research Institutions CA +# Label: "HARICA TLS RSA Root CA 2021" +# Serial: 76817823531813593706434026085292783742 +# MD5 Fingerprint: 65:47:9b:58:86:dd:2c:f0:fc:a2:84:1f:1e:96:c4:91 +# SHA1 Fingerprint: 02:2d:05:82:fa:88:ce:14:0c:06:79:de:7f:14:10:e9:45:d7:a5:6d +# SHA256 Fingerprint: d9:5d:0e:8e:da:79:52:5b:f9:be:b1:1b:14:d2:10:0d:32:94:98:5f:0c:62:d9:fa:bd:9c:d9:99:ec:cb:7b:1d +-----BEGIN CERTIFICATE----- +MIIFpDCCA4ygAwIBAgIQOcqTHO9D88aOk8f0ZIk4fjANBgkqhkiG9w0BAQsFADBs +MQswCQYDVQQGEwJHUjE3MDUGA1UECgwuSGVsbGVuaWMgQWNhZGVtaWMgYW5kIFJl +c2VhcmNoIEluc3RpdHV0aW9ucyBDQTEkMCIGA1UEAwwbSEFSSUNBIFRMUyBSU0Eg +Um9vdCBDQSAyMDIxMB4XDTIxMDIxOTEwNTUzOFoXDTQ1MDIxMzEwNTUzN1owbDEL +MAkGA1UEBhMCR1IxNzA1BgNVBAoMLkhlbGxlbmljIEFjYWRlbWljIGFuZCBSZXNl +YXJjaCBJbnN0aXR1dGlvbnMgQ0ExJDAiBgNVBAMMG0hBUklDQSBUTFMgUlNBIFJv +b3QgQ0EgMjAyMTCCAiIwDQYJKoZIhvcNAQEBBQADggIPADCCAgoCggIBAIvC569l +mwVnlskNJLnQDmT8zuIkGCyEf3dRywQRNrhe7Wlxp57kJQmXZ8FHws+RFjZiPTgE +4VGC/6zStGndLuwRo0Xua2s7TL+MjaQenRG56Tj5eg4MmOIjHdFOY9TnuEFE+2uv +a9of08WRiFukiZLRgeaMOVig1mlDqa2YUlhu2wr7a89o+uOkXjpFc5gH6l8Cct4M +pbOfrqkdtx2z/IpZ525yZa31MJQjB/OCFks1mJxTuy/K5FrZx40d/JiZ+yykgmvw +Kh+OC19xXFyuQnspiYHLA6OZyoieC0AJQTPb5lh6/a6ZcMBaD9YThnEvdmn8kN3b +LW7R8pv1GmuebxWMevBLKKAiOIAkbDakO/IwkfN4E8/BPzWr8R0RI7VDIp4BkrcY +AuUR0YLbFQDMYTfBKnya4dC6s1BG7oKsnTH4+yPiAwBIcKMJJnkVU2DzOFytOOqB +AGMUuTNe3QvboEUHGjMJ+E20pwKmafTCWQWIZYVWrkvL4N48fS0ayOn7H6NhStYq +E613TBoYm5EPWNgGVMWX+Ko/IIqmhaZ39qb8HOLubpQzKoNQhArlT4b4UEV4AIHr +W2jjJo3Me1xR9BQsQL4aYB16cmEdH2MtiKrOokWQCPxrvrNQKlr9qEgYRtaQQJKQ +CoReaDH46+0N0x3GfZkYVVYnZS6NRcUk7M7jAgMBAAGjQjBAMA8GA1UdEwEB/wQF +MAMBAf8wHQYDVR0OBBYEFApII6ZgpJIKM+qTW8VX6iVNvRLuMA4GA1UdDwEB/wQE +AwIBhjANBgkqhkiG9w0BAQsFAAOCAgEAPpBIqm5iFSVmewzVjIuJndftTgfvnNAU +X15QvWiWkKQUEapobQk1OUAJ2vQJLDSle1mESSmXdMgHHkdt8s4cUCbjnj1AUz/3 +f5Z2EMVGpdAgS1D0NTsY9FVqQRtHBmg8uwkIYtlfVUKqrFOFrJVWNlar5AWMxaja +H6NpvVMPxP/cyuN+8kyIhkdGGvMA9YCRotxDQpSbIPDRzbLrLFPCU3hKTwSUQZqP +JzLB5UkZv/HywouoCjkxKLR9YjYsTewfM7Z+d21+UPCfDtcRj88YxeMn/ibvBZ3P +zzfF0HvaO7AWhAw6k9a+F9sPPg4ZeAnHqQJyIkv3N3a6dcSFA1pj1bF1BcK5vZSt +jBWZp5N99sXzqnTPBIWUmAD04vnKJGW/4GKvyMX6ssmeVkjaef2WdhW+o45WxLM0 +/L5H9MG0qPzVMIho7suuyWPEdr6sOBjhXlzPrjoiUevRi7PzKzMHVIf6tLITe7pT +BGIBnfHAT+7hOtSLIBD6Alfm78ELt5BGnBkpjNxvoEppaZS3JGWg/6w/zgH7IS79 +aPib8qXPMThcFarmlwDB31qlpzmq6YR/PFGoOtmUW4y/Twhx5duoXNTSpv4Ao8YW +xw/ogM4cKGR0GQjTQuPOAF1/sdwTsOEFy9EgqoZ0njnnkf3/W9b3raYvAwtt41dU +63ZTGI0RmLo= +-----END CERTIFICATE----- + +# Issuer: CN=HARICA TLS ECC Root CA 2021 O=Hellenic Academic and Research Institutions CA +# Subject: CN=HARICA TLS ECC Root CA 2021 O=Hellenic Academic and Research Institutions CA +# Label: "HARICA TLS ECC Root CA 2021" +# Serial: 137515985548005187474074462014555733966 +# MD5 Fingerprint: ae:f7:4c:e5:66:35:d1:b7:9b:8c:22:93:74:d3:4b:b0 +# SHA1 Fingerprint: bc:b0:c1:9d:e9:98:92:70:19:38:57:e9:8d:a7:b4:5d:6e:ee:01:48 +# SHA256 Fingerprint: 3f:99:cc:47:4a:cf:ce:4d:fe:d5:87:94:66:5e:47:8d:15:47:73:9f:2e:78:0f:1b:b4:ca:9b:13:30:97:d4:01 +-----BEGIN CERTIFICATE----- +MIICVDCCAdugAwIBAgIQZ3SdjXfYO2rbIvT/WeK/zjAKBggqhkjOPQQDAzBsMQsw +CQYDVQQGEwJHUjE3MDUGA1UECgwuSGVsbGVuaWMgQWNhZGVtaWMgYW5kIFJlc2Vh +cmNoIEluc3RpdHV0aW9ucyBDQTEkMCIGA1UEAwwbSEFSSUNBIFRMUyBFQ0MgUm9v +dCBDQSAyMDIxMB4XDTIxMDIxOTExMDExMFoXDTQ1MDIxMzExMDEwOVowbDELMAkG +A1UEBhMCR1IxNzA1BgNVBAoMLkhlbGxlbmljIEFjYWRlbWljIGFuZCBSZXNlYXJj +aCBJbnN0aXR1dGlvbnMgQ0ExJDAiBgNVBAMMG0hBUklDQSBUTFMgRUNDIFJvb3Qg +Q0EgMjAyMTB2MBAGByqGSM49AgEGBSuBBAAiA2IABDgI/rGgltJ6rK9JOtDA4MM7 +KKrxcm1lAEeIhPyaJmuqS7psBAqIXhfyVYf8MLA04jRYVxqEU+kw2anylnTDUR9Y +STHMmE5gEYd103KUkE+bECUqqHgtvpBBWJAVcqeht6NCMEAwDwYDVR0TAQH/BAUw +AwEB/zAdBgNVHQ4EFgQUyRtTgRL+BNUW0aq8mm+3oJUZbsowDgYDVR0PAQH/BAQD +AgGGMAoGCCqGSM49BAMDA2cAMGQCMBHervjcToiwqfAircJRQO9gcS3ujwLEXQNw +SaSS6sUUiHCm0w2wqsosQJz76YJumgIwK0eaB8bRwoF8yguWGEEbo/QwCZ61IygN +nxS2PFOiTAZpffpskcYqSUXm7LcT4Tps +-----END CERTIFICATE----- + +# Issuer: CN=Autoridad de Certificacion Firmaprofesional CIF A62634068 +# Subject: CN=Autoridad de Certificacion Firmaprofesional CIF A62634068 +# Label: "Autoridad de Certificacion Firmaprofesional CIF A62634068" +# Serial: 1977337328857672817 +# MD5 Fingerprint: 4e:6e:9b:54:4c:ca:b7:fa:48:e4:90:b1:15:4b:1c:a3 +# SHA1 Fingerprint: 0b:be:c2:27:22:49:cb:39:aa:db:35:5c:53:e3:8c:ae:78:ff:b6:fe +# SHA256 Fingerprint: 57:de:05:83:ef:d2:b2:6e:03:61:da:99:da:9d:f4:64:8d:ef:7e:e8:44:1c:3b:72:8a:fa:9b:cd:e0:f9:b2:6a +-----BEGIN CERTIFICATE----- +MIIGFDCCA/ygAwIBAgIIG3Dp0v+ubHEwDQYJKoZIhvcNAQELBQAwUTELMAkGA1UE +BhMCRVMxQjBABgNVBAMMOUF1dG9yaWRhZCBkZSBDZXJ0aWZpY2FjaW9uIEZpcm1h +cHJvZmVzaW9uYWwgQ0lGIEE2MjYzNDA2ODAeFw0xNDA5MjMxNTIyMDdaFw0zNjA1 +MDUxNTIyMDdaMFExCzAJBgNVBAYTAkVTMUIwQAYDVQQDDDlBdXRvcmlkYWQgZGUg +Q2VydGlmaWNhY2lvbiBGaXJtYXByb2Zlc2lvbmFsIENJRiBBNjI2MzQwNjgwggIi +MA0GCSqGSIb3DQEBAQUAA4ICDwAwggIKAoICAQDKlmuO6vj78aI14H9M2uDDUtd9 +thDIAl6zQyrET2qyyhxdKJp4ERppWVevtSBC5IsP5t9bpgOSL/UR5GLXMnE42QQM +cas9UX4PB99jBVzpv5RvwSmCwLTaUbDBPLutN0pcyvFLNg4kq7/DhHf9qFD0sefG +L9ItWY16Ck6WaVICqjaY7Pz6FIMMNx/Jkjd/14Et5cS54D40/mf0PmbR0/RAz15i +NA9wBj4gGFrO93IbJWyTdBSTo3OxDqqHECNZXyAFGUftaI6SEspd/NYrspI8IM/h +X68gvqB2f3bl7BqGYTM+53u0P6APjqK5am+5hyZvQWyIplD9amML9ZMWGxmPsu2b +m8mQ9QEM3xk9Dz44I8kvjwzRAv4bVdZO0I08r0+k8/6vKtMFnXkIoctXMbScyJCy +Z/QYFpM6/EfY0XiWMR+6KwxfXZmtY4laJCB22N/9q06mIqqdXuYnin1oKaPnirja +EbsXLZmdEyRG98Xi2J+Of8ePdG1asuhy9azuJBCtLxTa/y2aRnFHvkLfuwHb9H/T +KI8xWVvTyQKmtFLKbpf7Q8UIJm+K9Lv9nyiqDdVF8xM6HdjAeI9BZzwelGSuewvF +6NkBiDkal4ZkQdU7hwxu+g/GvUgUvzlN1J5Bto+WHWOWk9mVBngxaJ43BjuAiUVh +OSPHG0SjFeUc+JIwuwIDAQABo4HvMIHsMB0GA1UdDgQWBBRlzeurNR4APn7VdMAc +tHNHDhpkLzASBgNVHRMBAf8ECDAGAQH/AgEBMIGmBgNVHSAEgZ4wgZswgZgGBFUd +IAAwgY8wLwYIKwYBBQUHAgEWI2h0dHA6Ly93d3cuZmlybWFwcm9mZXNpb25hbC5j +b20vY3BzMFwGCCsGAQUFBwICMFAeTgBQAGEAcwBlAG8AIABkAGUAIABsAGEAIABC +AG8AbgBhAG4AbwB2AGEAIAA0ADcAIABCAGEAcgBjAGUAbABvAG4AYQAgADAAOAAw +ADEANzAOBgNVHQ8BAf8EBAMCAQYwDQYJKoZIhvcNAQELBQADggIBAHSHKAIrdx9m +iWTtj3QuRhy7qPj4Cx2Dtjqn6EWKB7fgPiDL4QjbEwj4KKE1soCzC1HA01aajTNF +Sa9J8OA9B3pFE1r/yJfY0xgsfZb43aJlQ3CTkBW6kN/oGbDbLIpgD7dvlAceHabJ +hfa9NPhAeGIQcDq+fUs5gakQ1JZBu/hfHAsdCPKxsIl68veg4MSPi3i1O1ilI45P +Vf42O+AMt8oqMEEgtIDNrvx2ZnOorm7hfNoD6JQg5iKj0B+QXSBTFCZX2lSX3xZE +EAEeiGaPcjiT3SC3NL7X8e5jjkd5KAb881lFJWAiMxujX6i6KtoaPc1A6ozuBRWV +1aUsIC+nmCjuRfzxuIgALI9C2lHVnOUTaHFFQ4ueCyE8S1wF3BqfmI7avSKecs2t +CsvMo2ebKHTEm9caPARYpoKdrcd7b/+Alun4jWq9GJAd/0kakFI3ky88Al2CdgtR +5xbHV/g4+afNmyJU72OwFW1TZQNKXkqgsqeOSQBZONXH9IBk9W6VULgRfhVwOEqw +f9DEMnDAGf/JOC0ULGb0QkTmVXYbgBVX/8Cnp6o5qtjTcNAuuuuUavpfNIbnYrX9 +ivAwhZTJryQCL2/W3Wf+47BVTwSYT6RBVuKT0Gro1vP7ZeDOdcQxWQzugsgMYDNK +GbqEZycPvEJdvSRUDewdcAZfpLz6IHxV +-----END CERTIFICATE----- + +# Issuer: CN=vTrus ECC Root CA O=iTrusChina Co.,Ltd. +# Subject: CN=vTrus ECC Root CA O=iTrusChina Co.,Ltd. +# Label: "vTrus ECC Root CA" +# Serial: 630369271402956006249506845124680065938238527194 +# MD5 Fingerprint: de:4b:c1:f5:52:8c:9b:43:e1:3e:8f:55:54:17:8d:85 +# SHA1 Fingerprint: f6:9c:db:b0:fc:f6:02:13:b6:52:32:a6:a3:91:3f:16:70:da:c3:e1 +# SHA256 Fingerprint: 30:fb:ba:2c:32:23:8e:2a:98:54:7a:f9:79:31:e5:50:42:8b:9b:3f:1c:8e:eb:66:33:dc:fa:86:c5:b2:7d:d3 +-----BEGIN CERTIFICATE----- +MIICDzCCAZWgAwIBAgIUbmq8WapTvpg5Z6LSa6Q75m0c1towCgYIKoZIzj0EAwMw +RzELMAkGA1UEBhMCQ04xHDAaBgNVBAoTE2lUcnVzQ2hpbmEgQ28uLEx0ZC4xGjAY +BgNVBAMTEXZUcnVzIEVDQyBSb290IENBMB4XDTE4MDczMTA3MjY0NFoXDTQzMDcz +MTA3MjY0NFowRzELMAkGA1UEBhMCQ04xHDAaBgNVBAoTE2lUcnVzQ2hpbmEgQ28u +LEx0ZC4xGjAYBgNVBAMTEXZUcnVzIEVDQyBSb290IENBMHYwEAYHKoZIzj0CAQYF +K4EEACIDYgAEZVBKrox5lkqqHAjDo6LN/llWQXf9JpRCux3NCNtzslt188+cToL0 +v/hhJoVs1oVbcnDS/dtitN9Ti72xRFhiQgnH+n9bEOf+QP3A2MMrMudwpremIFUd +e4BdS49nTPEQo0IwQDAdBgNVHQ4EFgQUmDnNvtiyjPeyq+GtJK97fKHbH88wDwYD +VR0TAQH/BAUwAwEB/zAOBgNVHQ8BAf8EBAMCAQYwCgYIKoZIzj0EAwMDaAAwZQIw +V53dVvHH4+m4SVBrm2nDb+zDfSXkV5UTQJtS0zvzQBm8JsctBp61ezaf9SXUY2sA +AjEA6dPGnlaaKsyh2j/IZivTWJwghfqrkYpwcBE4YGQLYgmRWAD5Tfs0aNoJrSEG +GJTO +-----END CERTIFICATE----- + +# Issuer: CN=vTrus Root CA O=iTrusChina Co.,Ltd. +# Subject: CN=vTrus Root CA O=iTrusChina Co.,Ltd. +# Label: "vTrus Root CA" +# Serial: 387574501246983434957692974888460947164905180485 +# MD5 Fingerprint: b8:c9:37:df:fa:6b:31:84:64:c5:ea:11:6a:1b:75:fc +# SHA1 Fingerprint: 84:1a:69:fb:f5:cd:1a:25:34:13:3d:e3:f8:fc:b8:99:d0:c9:14:b7 +# SHA256 Fingerprint: 8a:71:de:65:59:33:6f:42:6c:26:e5:38:80:d0:0d:88:a1:8d:a4:c6:a9:1f:0d:cb:61:94:e2:06:c5:c9:63:87 +-----BEGIN CERTIFICATE----- +MIIFVjCCAz6gAwIBAgIUQ+NxE9izWRRdt86M/TX9b7wFjUUwDQYJKoZIhvcNAQEL +BQAwQzELMAkGA1UEBhMCQ04xHDAaBgNVBAoTE2lUcnVzQ2hpbmEgQ28uLEx0ZC4x +FjAUBgNVBAMTDXZUcnVzIFJvb3QgQ0EwHhcNMTgwNzMxMDcyNDA1WhcNNDMwNzMx +MDcyNDA1WjBDMQswCQYDVQQGEwJDTjEcMBoGA1UEChMTaVRydXNDaGluYSBDby4s +THRkLjEWMBQGA1UEAxMNdlRydXMgUm9vdCBDQTCCAiIwDQYJKoZIhvcNAQEBBQAD +ggIPADCCAgoCggIBAL1VfGHTuB0EYgWgrmy3cLRB6ksDXhA/kFocizuwZotsSKYc +IrrVQJLuM7IjWcmOvFjai57QGfIvWcaMY1q6n6MLsLOaXLoRuBLpDLvPbmyAhykU +AyyNJJrIZIO1aqwTLDPxn9wsYTwaP3BVm60AUn/PBLn+NvqcwBauYv6WTEN+VRS+ +GrPSbcKvdmaVayqwlHeFXgQPYh1jdfdr58tbmnDsPmcF8P4HCIDPKNsFxhQnL4Z9 +8Cfe/+Z+M0jnCx5Y0ScrUw5XSmXX+6KAYPxMvDVTAWqXcoKv8R1w6Jz1717CbMdH +flqUhSZNO7rrTOiwCcJlwp2dCZtOtZcFrPUGoPc2BX70kLJrxLT5ZOrpGgrIDajt +J8nU57O5q4IikCc9Kuh8kO+8T/3iCiSn3mUkpF3qwHYw03dQ+A0Em5Q2AXPKBlim +0zvc+gRGE1WKyURHuFE5Gi7oNOJ5y1lKCn+8pu8fA2dqWSslYpPZUxlmPCdiKYZN +pGvu/9ROutW04o5IWgAZCfEF2c6Rsffr6TlP9m8EQ5pV9T4FFL2/s1m02I4zhKOQ +UqqzApVg+QxMaPnu1RcN+HFXtSXkKe5lXa/R7jwXC1pDxaWG6iSe4gUH3DRCEpHW +OXSuTEGC2/KmSNGzm/MzqvOmwMVO9fSddmPmAsYiS8GVP1BkLFTltvA8Kc9XAgMB +AAGjQjBAMB0GA1UdDgQWBBRUYnBj8XWEQ1iO0RYgscasGrz2iTAPBgNVHRMBAf8E +BTADAQH/MA4GA1UdDwEB/wQEAwIBBjANBgkqhkiG9w0BAQsFAAOCAgEAKbqSSaet +8PFww+SX8J+pJdVrnjT+5hpk9jprUrIQeBqfTNqK2uwcN1LgQkv7bHbKJAs5EhWd +nxEt/Hlk3ODg9d3gV8mlsnZwUKT+twpw1aA08XXXTUm6EdGz2OyC/+sOxL9kLX1j +bhd47F18iMjrjld22VkE+rxSH0Ws8HqA7Oxvdq6R2xCOBNyS36D25q5J08FsEhvM +Kar5CKXiNxTKsbhm7xqC5PD48acWabfbqWE8n/Uxy+QARsIvdLGx14HuqCaVvIiv +TDUHKgLKeBRtRytAVunLKmChZwOgzoy8sHJnxDHO2zTlJQNgJXtxmOTAGytfdELS +S8VZCAeHvsXDf+eW2eHcKJfWjwXj9ZtOyh1QRwVTsMo554WgicEFOwE30z9J4nfr +I8iIZjs9OXYhRvHsXyO466JmdXTBQPfYaJqT4i2pLr0cox7IdMakLXogqzu4sEb9 +b91fUlV1YvCXoHzXOP0l382gmxDPi7g4Xl7FtKYCNqEeXxzP4padKar9mK5S4fNB +UvupLnKWnyfjqnN9+BojZns7q2WwMgFLFT49ok8MKzWixtlnEjUwzXYuFrOZnk1P +Ti07NEPhmg4NpGaXutIcSkwsKouLgU9xGqndXHt7CMUADTdA43x7VF8vhV929ven +sBxXVsFy6K2ir40zSbofitzmdHxghm+Hl3s= +-----END CERTIFICATE----- + +# Issuer: CN=ISRG Root X2 O=Internet Security Research Group +# Subject: CN=ISRG Root X2 O=Internet Security Research Group +# Label: "ISRG Root X2" +# Serial: 87493402998870891108772069816698636114 +# MD5 Fingerprint: d3:9e:c4:1e:23:3c:a6:df:cf:a3:7e:6d:e0:14:e6:e5 +# SHA1 Fingerprint: bd:b1:b9:3c:d5:97:8d:45:c6:26:14:55:f8:db:95:c7:5a:d1:53:af +# SHA256 Fingerprint: 69:72:9b:8e:15:a8:6e:fc:17:7a:57:af:b7:17:1d:fc:64:ad:d2:8c:2f:ca:8c:f1:50:7e:34:45:3c:cb:14:70 +-----BEGIN CERTIFICATE----- +MIICGzCCAaGgAwIBAgIQQdKd0XLq7qeAwSxs6S+HUjAKBggqhkjOPQQDAzBPMQsw +CQYDVQQGEwJVUzEpMCcGA1UEChMgSW50ZXJuZXQgU2VjdXJpdHkgUmVzZWFyY2gg +R3JvdXAxFTATBgNVBAMTDElTUkcgUm9vdCBYMjAeFw0yMDA5MDQwMDAwMDBaFw00 +MDA5MTcxNjAwMDBaME8xCzAJBgNVBAYTAlVTMSkwJwYDVQQKEyBJbnRlcm5ldCBT +ZWN1cml0eSBSZXNlYXJjaCBHcm91cDEVMBMGA1UEAxMMSVNSRyBSb290IFgyMHYw +EAYHKoZIzj0CAQYFK4EEACIDYgAEzZvVn4CDCuwJSvMWSj5cz3es3mcFDR0HttwW ++1qLFNvicWDEukWVEYmO6gbf9yoWHKS5xcUy4APgHoIYOIvXRdgKam7mAHf7AlF9 +ItgKbppbd9/w+kHsOdx1ymgHDB/qo0IwQDAOBgNVHQ8BAf8EBAMCAQYwDwYDVR0T +AQH/BAUwAwEB/zAdBgNVHQ4EFgQUfEKWrt5LSDv6kviejM9ti6lyN5UwCgYIKoZI +zj0EAwMDaAAwZQIwe3lORlCEwkSHRhtFcP9Ymd70/aTSVaYgLXTWNLxBo1BfASdW +tL4ndQavEi51mI38AjEAi/V3bNTIZargCyzuFJ0nN6T5U6VR5CmD1/iQMVtCnwr1 +/q4AaOeMSQ+2b1tbFfLn +-----END CERTIFICATE----- + +# Issuer: CN=HiPKI Root CA - G1 O=Chunghwa Telecom Co., Ltd. +# Subject: CN=HiPKI Root CA - G1 O=Chunghwa Telecom Co., Ltd. +# Label: "HiPKI Root CA - G1" +# Serial: 60966262342023497858655262305426234976 +# MD5 Fingerprint: 69:45:df:16:65:4b:e8:68:9a:8f:76:5f:ff:80:9e:d3 +# SHA1 Fingerprint: 6a:92:e4:a8:ee:1b:ec:96:45:37:e3:29:57:49:cd:96:e3:e5:d2:60 +# SHA256 Fingerprint: f0:15:ce:3c:c2:39:bf:ef:06:4b:e9:f1:d2:c4:17:e1:a0:26:4a:0a:94:be:1f:0c:8d:12:18:64:eb:69:49:cc +-----BEGIN CERTIFICATE----- +MIIFajCCA1KgAwIBAgIQLd2szmKXlKFD6LDNdmpeYDANBgkqhkiG9w0BAQsFADBP +MQswCQYDVQQGEwJUVzEjMCEGA1UECgwaQ2h1bmdod2EgVGVsZWNvbSBDby4sIEx0 +ZC4xGzAZBgNVBAMMEkhpUEtJIFJvb3QgQ0EgLSBHMTAeFw0xOTAyMjIwOTQ2MDRa +Fw0zNzEyMzExNTU5NTlaME8xCzAJBgNVBAYTAlRXMSMwIQYDVQQKDBpDaHVuZ2h3 +YSBUZWxlY29tIENvLiwgTHRkLjEbMBkGA1UEAwwSSGlQS0kgUm9vdCBDQSAtIEcx +MIICIjANBgkqhkiG9w0BAQEFAAOCAg8AMIICCgKCAgEA9B5/UnMyDHPkvRN0o9Qw +qNCuS9i233VHZvR85zkEHmpwINJaR3JnVfSl6J3VHiGh8Ge6zCFovkRTv4354twv +Vcg3Px+kwJyz5HdcoEb+d/oaoDjq7Zpy3iu9lFc6uux55199QmQ5eiY29yTw1S+6 +lZgRZq2XNdZ1AYDgr/SEYYwNHl98h5ZeQa/rh+r4XfEuiAU+TCK72h8q3VJGZDnz +Qs7ZngyzsHeXZJzA9KMuH5UHsBffMNsAGJZMoYFL3QRtU6M9/Aes1MU3guvklQgZ +KILSQjqj2FPseYlgSGDIcpJQ3AOPgz+yQlda22rpEZfdhSi8MEyr48KxRURHH+CK +FgeW0iEPU8DtqX7UTuybCeyvQqww1r/REEXgphaypcXTT3OUM3ECoWqj1jOXTyFj +HluP2cFeRXF3D4FdXyGarYPM+l7WjSNfGz1BryB1ZlpK9p/7qxj3ccC2HTHsOyDr +y+K49a6SsvfhhEvyovKTmiKe0xRvNlS9H15ZFblzqMF8b3ti6RZsR1pl8w4Rm0bZ +/W3c1pzAtH2lsN0/Vm+h+fbkEkj9Bn8SV7apI09bA8PgcSojt/ewsTu8mL3WmKgM +a/aOEmem8rJY5AIJEzypuxC00jBF8ez3ABHfZfjcK0NVvxaXxA/VLGGEqnKG/uY6 +fsI/fe78LxQ+5oXdUG+3Se0CAwEAAaNCMEAwDwYDVR0TAQH/BAUwAwEB/zAdBgNV +HQ4EFgQU8ncX+l6o/vY9cdVouslGDDjYr7AwDgYDVR0PAQH/BAQDAgGGMA0GCSqG +SIb3DQEBCwUAA4ICAQBQUfB13HAE4/+qddRxosuej6ip0691x1TPOhwEmSKsxBHi +7zNKpiMdDg1H2DfHb680f0+BazVP6XKlMeJ45/dOlBhbQH3PayFUhuaVevvGyuqc +SE5XCV0vrPSltJczWNWseanMX/mF+lLFjfiRFOs6DRfQUsJ748JzjkZ4Bjgs6Fza +ZsT0pPBWGTMpWmWSBUdGSquEwx4noR8RkpkndZMPvDY7l1ePJlsMu5wP1G4wB9Tc +XzZoZjmDlicmisjEOf6aIW/Vcobpf2Lll07QJNBAsNB1CI69aO4I1258EHBGG3zg +iLKecoaZAeO/n0kZtCW+VmWuF2PlHt/o/0elv+EmBYTksMCv5wiZqAxeJoBF1Pho +L5aPruJKHJwWDBNvOIf2u8g0X5IDUXlwpt/L9ZlNec1OvFefQ05rLisY+GpzjLrF +Ne85akEez3GoorKGB1s6yeHvP2UEgEcyRHCVTjFnanRbEEV16rCf0OY1/k6fi8wr +kkVbbiVghUbN0aqwdmaTd5a+g744tiROJgvM7XpWGuDpWsZkrUx6AEhEL7lAuxM+ +vhV4nYWBSipX3tUZQ9rbyltHhoMLP7YNdnhzeSJesYAfz77RP1YQmCuVh6EfnWQU +YDksswBVLuT1sw5XxJFBAJw/6KXf6vb/yPCtbVKoF6ubYfwSUTXkJf2vqmqGOQ== +-----END CERTIFICATE----- + +# Issuer: CN=GlobalSign O=GlobalSign OU=GlobalSign ECC Root CA - R4 +# Subject: CN=GlobalSign O=GlobalSign OU=GlobalSign ECC Root CA - R4 +# Label: "GlobalSign ECC Root CA - R4" +# Serial: 159662223612894884239637590694 +# MD5 Fingerprint: 26:29:f8:6d:e1:88:bf:a2:65:7f:aa:c4:cd:0f:7f:fc +# SHA1 Fingerprint: 6b:a0:b0:98:e1:71:ef:5a:ad:fe:48:15:80:77:10:f4:bd:6f:0b:28 +# SHA256 Fingerprint: b0:85:d7:0b:96:4f:19:1a:73:e4:af:0d:54:ae:7a:0e:07:aa:fd:af:9b:71:dd:08:62:13:8a:b7:32:5a:24:a2 +-----BEGIN CERTIFICATE----- +MIIB3DCCAYOgAwIBAgINAgPlfvU/k/2lCSGypjAKBggqhkjOPQQDAjBQMSQwIgYD +VQQLExtHbG9iYWxTaWduIEVDQyBSb290IENBIC0gUjQxEzARBgNVBAoTCkdsb2Jh +bFNpZ24xEzARBgNVBAMTCkdsb2JhbFNpZ24wHhcNMTIxMTEzMDAwMDAwWhcNMzgw +MTE5MDMxNDA3WjBQMSQwIgYDVQQLExtHbG9iYWxTaWduIEVDQyBSb290IENBIC0g +UjQxEzARBgNVBAoTCkdsb2JhbFNpZ24xEzARBgNVBAMTCkdsb2JhbFNpZ24wWTAT +BgcqhkjOPQIBBggqhkjOPQMBBwNCAAS4xnnTj2wlDp8uORkcA6SumuU5BwkWymOx +uYb4ilfBV85C+nOh92VC/x7BALJucw7/xyHlGKSq2XE/qNS5zowdo0IwQDAOBgNV +HQ8BAf8EBAMCAYYwDwYDVR0TAQH/BAUwAwEB/zAdBgNVHQ4EFgQUVLB7rUW44kB/ ++wpu+74zyTyjhNUwCgYIKoZIzj0EAwIDRwAwRAIgIk90crlgr/HmnKAWBVBfw147 +bmF0774BxL4YSFlhgjICICadVGNA3jdgUM/I2O2dgq43mLyjj0xMqTQrbO/7lZsm +-----END CERTIFICATE----- + +# Issuer: CN=GTS Root R1 O=Google Trust Services LLC +# Subject: CN=GTS Root R1 O=Google Trust Services LLC +# Label: "GTS Root R1" +# Serial: 159662320309726417404178440727 +# MD5 Fingerprint: 05:fe:d0:bf:71:a8:a3:76:63:da:01:e0:d8:52:dc:40 +# SHA1 Fingerprint: e5:8c:1c:c4:91:3b:38:63:4b:e9:10:6e:e3:ad:8e:6b:9d:d9:81:4a +# SHA256 Fingerprint: d9:47:43:2a:bd:e7:b7:fa:90:fc:2e:6b:59:10:1b:12:80:e0:e1:c7:e4:e4:0f:a3:c6:88:7f:ff:57:a7:f4:cf +-----BEGIN CERTIFICATE----- +MIIFVzCCAz+gAwIBAgINAgPlk28xsBNJiGuiFzANBgkqhkiG9w0BAQwFADBHMQsw +CQYDVQQGEwJVUzEiMCAGA1UEChMZR29vZ2xlIFRydXN0IFNlcnZpY2VzIExMQzEU +MBIGA1UEAxMLR1RTIFJvb3QgUjEwHhcNMTYwNjIyMDAwMDAwWhcNMzYwNjIyMDAw +MDAwWjBHMQswCQYDVQQGEwJVUzEiMCAGA1UEChMZR29vZ2xlIFRydXN0IFNlcnZp +Y2VzIExMQzEUMBIGA1UEAxMLR1RTIFJvb3QgUjEwggIiMA0GCSqGSIb3DQEBAQUA +A4ICDwAwggIKAoICAQC2EQKLHuOhd5s73L+UPreVp0A8of2C+X0yBoJx9vaMf/vo +27xqLpeXo4xL+Sv2sfnOhB2x+cWX3u+58qPpvBKJXqeqUqv4IyfLpLGcY9vXmX7w +Cl7raKb0xlpHDU0QM+NOsROjyBhsS+z8CZDfnWQpJSMHobTSPS5g4M/SCYe7zUjw +TcLCeoiKu7rPWRnWr4+wB7CeMfGCwcDfLqZtbBkOtdh+JhpFAz2weaSUKK0Pfybl +qAj+lug8aJRT7oM6iCsVlgmy4HqMLnXWnOunVmSPlk9orj2XwoSPwLxAwAtcvfaH +szVsrBhQf4TgTM2S0yDpM7xSma8ytSmzJSq0SPly4cpk9+aCEI3oncKKiPo4Zor8 +Y/kB+Xj9e1x3+naH+uzfsQ55lVe0vSbv1gHR6xYKu44LtcXFilWr06zqkUspzBmk +MiVOKvFlRNACzqrOSbTqn3yDsEB750Orp2yjj32JgfpMpf/VjsPOS+C12LOORc92 +wO1AK/1TD7Cn1TsNsYqiA94xrcx36m97PtbfkSIS5r762DL8EGMUUXLeXdYWk70p +aDPvOmbsB4om3xPXV2V4J95eSRQAogB/mqghtqmxlbCluQ0WEdrHbEg8QOB+DVrN +VjzRlwW5y0vtOUucxD/SVRNuJLDWcfr0wbrM7Rv1/oFB2ACYPTrIrnqYNxgFlQID +AQABo0IwQDAOBgNVHQ8BAf8EBAMCAYYwDwYDVR0TAQH/BAUwAwEB/zAdBgNVHQ4E +FgQU5K8rJnEaK0gnhS9SZizv8IkTcT4wDQYJKoZIhvcNAQEMBQADggIBAJ+qQibb +C5u+/x6Wki4+omVKapi6Ist9wTrYggoGxval3sBOh2Z5ofmmWJyq+bXmYOfg6LEe +QkEzCzc9zolwFcq1JKjPa7XSQCGYzyI0zzvFIoTgxQ6KfF2I5DUkzps+GlQebtuy +h6f88/qBVRRiClmpIgUxPoLW7ttXNLwzldMXG+gnoot7TiYaelpkttGsN/H9oPM4 +7HLwEXWdyzRSjeZ2axfG34arJ45JK3VmgRAhpuo+9K4l/3wV3s6MJT/KYnAK9y8J +ZgfIPxz88NtFMN9iiMG1D53Dn0reWVlHxYciNuaCp+0KueIHoI17eko8cdLiA6Ef +MgfdG+RCzgwARWGAtQsgWSl4vflVy2PFPEz0tv/bal8xa5meLMFrUKTX5hgUvYU/ +Z6tGn6D/Qqc6f1zLXbBwHSs09dR2CQzreExZBfMzQsNhFRAbd03OIozUhfJFfbdT +6u9AWpQKXCBfTkBdYiJ23//OYb2MI3jSNwLgjt7RETeJ9r/tSQdirpLsQBqvFAnZ +0E6yove+7u7Y/9waLd64NnHi/Hm3lCXRSHNboTXns5lndcEZOitHTtNCjv0xyBZm +2tIMPNuzjsmhDYAPexZ3FL//2wmUspO8IFgV6dtxQ/PeEMMA3KgqlbbC1j+Qa3bb +bP6MvPJwNQzcmRk13NfIRmPVNnGuV/u3gm3c +-----END CERTIFICATE----- + +# Issuer: CN=GTS Root R3 O=Google Trust Services LLC +# Subject: CN=GTS Root R3 O=Google Trust Services LLC +# Label: "GTS Root R3" +# Serial: 159662495401136852707857743206 +# MD5 Fingerprint: 3e:e7:9d:58:02:94:46:51:94:e5:e0:22:4a:8b:e7:73 +# SHA1 Fingerprint: ed:e5:71:80:2b:c8:92:b9:5b:83:3c:d2:32:68:3f:09:cd:a0:1e:46 +# SHA256 Fingerprint: 34:d8:a7:3e:e2:08:d9:bc:db:0d:95:65:20:93:4b:4e:40:e6:94:82:59:6e:8b:6f:73:c8:42:6b:01:0a:6f:48 +-----BEGIN CERTIFICATE----- +MIICCTCCAY6gAwIBAgINAgPluILrIPglJ209ZjAKBggqhkjOPQQDAzBHMQswCQYD +VQQGEwJVUzEiMCAGA1UEChMZR29vZ2xlIFRydXN0IFNlcnZpY2VzIExMQzEUMBIG +A1UEAxMLR1RTIFJvb3QgUjMwHhcNMTYwNjIyMDAwMDAwWhcNMzYwNjIyMDAwMDAw +WjBHMQswCQYDVQQGEwJVUzEiMCAGA1UEChMZR29vZ2xlIFRydXN0IFNlcnZpY2Vz +IExMQzEUMBIGA1UEAxMLR1RTIFJvb3QgUjMwdjAQBgcqhkjOPQIBBgUrgQQAIgNi +AAQfTzOHMymKoYTey8chWEGJ6ladK0uFxh1MJ7x/JlFyb+Kf1qPKzEUURout736G +jOyxfi//qXGdGIRFBEFVbivqJn+7kAHjSxm65FSWRQmx1WyRRK2EE46ajA2ADDL2 +4CejQjBAMA4GA1UdDwEB/wQEAwIBhjAPBgNVHRMBAf8EBTADAQH/MB0GA1UdDgQW +BBTB8Sa6oC2uhYHP0/EqEr24Cmf9vDAKBggqhkjOPQQDAwNpADBmAjEA9uEglRR7 +VKOQFhG/hMjqb2sXnh5GmCCbn9MN2azTL818+FsuVbu/3ZL3pAzcMeGiAjEA/Jdm +ZuVDFhOD3cffL74UOO0BzrEXGhF16b0DjyZ+hOXJYKaV11RZt+cRLInUue4X +-----END CERTIFICATE----- + +# Issuer: CN=GTS Root R4 O=Google Trust Services LLC +# Subject: CN=GTS Root R4 O=Google Trust Services LLC +# Label: "GTS Root R4" +# Serial: 159662532700760215368942768210 +# MD5 Fingerprint: 43:96:83:77:19:4d:76:b3:9d:65:52:e4:1d:22:a5:e8 +# SHA1 Fingerprint: 77:d3:03:67:b5:e0:0c:15:f6:0c:38:61:df:7c:e1:3b:92:46:4d:47 +# SHA256 Fingerprint: 34:9d:fa:40:58:c5:e2:63:12:3b:39:8a:e7:95:57:3c:4e:13:13:c8:3f:e6:8f:93:55:6c:d5:e8:03:1b:3c:7d +-----BEGIN CERTIFICATE----- +MIICCTCCAY6gAwIBAgINAgPlwGjvYxqccpBQUjAKBggqhkjOPQQDAzBHMQswCQYD +VQQGEwJVUzEiMCAGA1UEChMZR29vZ2xlIFRydXN0IFNlcnZpY2VzIExMQzEUMBIG +A1UEAxMLR1RTIFJvb3QgUjQwHhcNMTYwNjIyMDAwMDAwWhcNMzYwNjIyMDAwMDAw +WjBHMQswCQYDVQQGEwJVUzEiMCAGA1UEChMZR29vZ2xlIFRydXN0IFNlcnZpY2Vz +IExMQzEUMBIGA1UEAxMLR1RTIFJvb3QgUjQwdjAQBgcqhkjOPQIBBgUrgQQAIgNi +AATzdHOnaItgrkO4NcWBMHtLSZ37wWHO5t5GvWvVYRg1rkDdc/eJkTBa6zzuhXyi +QHY7qca4R9gq55KRanPpsXI5nymfopjTX15YhmUPoYRlBtHci8nHc8iMai/lxKvR +HYqjQjBAMA4GA1UdDwEB/wQEAwIBhjAPBgNVHRMBAf8EBTADAQH/MB0GA1UdDgQW +BBSATNbrdP9JNqPV2Py1PsVq8JQdjDAKBggqhkjOPQQDAwNpADBmAjEA6ED/g94D +9J+uHXqnLrmvT/aDHQ4thQEd0dlq7A/Cr8deVl5c1RxYIigL9zC2L7F8AjEA8GE8 +p/SgguMh1YQdc4acLa/KNJvxn7kjNuK8YAOdgLOaVsjh4rsUecrNIdSUtUlD +-----END CERTIFICATE----- + +# Issuer: CN=Telia Root CA v2 O=Telia Finland Oyj +# Subject: CN=Telia Root CA v2 O=Telia Finland Oyj +# Label: "Telia Root CA v2" +# Serial: 7288924052977061235122729490515358 +# MD5 Fingerprint: 0e:8f:ac:aa:82:df:85:b1:f4:dc:10:1c:fc:99:d9:48 +# SHA1 Fingerprint: b9:99:cd:d1:73:50:8a:c4:47:05:08:9c:8c:88:fb:be:a0:2b:40:cd +# SHA256 Fingerprint: 24:2b:69:74:2f:cb:1e:5b:2a:bf:98:89:8b:94:57:21:87:54:4e:5b:4d:99:11:78:65:73:62:1f:6a:74:b8:2c +-----BEGIN CERTIFICATE----- +MIIFdDCCA1ygAwIBAgIPAWdfJ9b+euPkrL4JWwWeMA0GCSqGSIb3DQEBCwUAMEQx +CzAJBgNVBAYTAkZJMRowGAYDVQQKDBFUZWxpYSBGaW5sYW5kIE95ajEZMBcGA1UE +AwwQVGVsaWEgUm9vdCBDQSB2MjAeFw0xODExMjkxMTU1NTRaFw00MzExMjkxMTU1 +NTRaMEQxCzAJBgNVBAYTAkZJMRowGAYDVQQKDBFUZWxpYSBGaW5sYW5kIE95ajEZ +MBcGA1UEAwwQVGVsaWEgUm9vdCBDQSB2MjCCAiIwDQYJKoZIhvcNAQEBBQADggIP +ADCCAgoCggIBALLQPwe84nvQa5n44ndp586dpAO8gm2h/oFlH0wnrI4AuhZ76zBq +AMCzdGh+sq/H1WKzej9Qyow2RCRj0jbpDIX2Q3bVTKFgcmfiKDOlyzG4OiIjNLh9 +vVYiQJ3q9HsDrWj8soFPmNB06o3lfc1jw6P23pLCWBnglrvFxKk9pXSW/q/5iaq9 +lRdU2HhE8Qx3FZLgmEKnpNaqIJLNwaCzlrI6hEKNfdWV5Nbb6WLEWLN5xYzTNTOD +n3WhUidhOPFZPY5Q4L15POdslv5e2QJltI5c0BE0312/UqeBAMN/mUWZFdUXyApT +7GPzmX3MaRKGwhfwAZ6/hLzRUssbkmbOpFPlob/E2wnW5olWK8jjfN7j/4nlNW4o +6GwLI1GpJQXrSPjdscr6bAhR77cYbETKJuFzxokGgeWKrLDiKca5JLNrRBH0pUPC +TEPlcDaMtjNXepUugqD0XBCzYYP2AgWGLnwtbNwDRm41k9V6lS/eINhbfpSQBGq6 +WT0EBXWdN6IOLj3rwaRSg/7Qa9RmjtzG6RJOHSpXqhC8fF6CfaamyfItufUXJ63R +DolUK5X6wK0dmBR4M0KGCqlztft0DbcbMBnEWg4cJ7faGND/isgFuvGqHKI3t+ZI +pEYslOqodmJHixBTB0hXbOKSTbauBcvcwUpej6w9GU7C7WB1K9vBykLVAgMBAAGj +YzBhMB8GA1UdIwQYMBaAFHKs5DN5qkWH9v2sHZ7Wxy+G2CQ5MB0GA1UdDgQWBBRy +rOQzeapFh/b9rB2e1scvhtgkOTAOBgNVHQ8BAf8EBAMCAQYwDwYDVR0TAQH/BAUw +AwEB/zANBgkqhkiG9w0BAQsFAAOCAgEAoDtZpwmUPjaE0n4vOaWWl/oRrfxn83EJ +8rKJhGdEr7nv7ZbsnGTbMjBvZ5qsfl+yqwE2foH65IRe0qw24GtixX1LDoJt0nZi +0f6X+J8wfBj5tFJ3gh1229MdqfDBmgC9bXXYfef6xzijnHDoRnkDry5023X4blMM +A8iZGok1GTzTyVR8qPAs5m4HeW9q4ebqkYJpCh3DflminmtGFZhb069GHWLIzoBS +SRE/yQQSwxN8PzuKlts8oB4KtItUsiRnDe+Cy748fdHif64W1lZYudogsYMVoe+K +TTJvQS8TUoKU1xrBeKJR3Stwbbca+few4GeXVtt8YVMJAygCQMez2P2ccGrGKMOF +6eLtGpOg3kuYooQ+BXcBlj37tCAPnHICehIv1aO6UXivKitEZU61/Qrowc15h2Er +3oBXRb9n8ZuRXqWk7FlIEA04x7D6w0RtBPV4UBySllva9bguulvP5fBqnUsvWHMt +Ty3EHD70sz+rFQ47GUGKpMFXEmZxTPpT41frYpUJnlTd0cI8Vzy9OK2YZLe4A5pT +VmBds9hCG1xLEooc6+t9xnppxyd/pPiL8uSUZodL6ZQHCRJ5irLrdATczvREWeAW +ysUsWNc8e89ihmpQfTU2Zqf7N+cox9jQraVplI/owd8k+BsHMYeB2F326CjYSlKA +rBPuUBQemMc= +-----END CERTIFICATE----- + +# Issuer: CN=D-TRUST BR Root CA 1 2020 O=D-Trust GmbH +# Subject: CN=D-TRUST BR Root CA 1 2020 O=D-Trust GmbH +# Label: "D-TRUST BR Root CA 1 2020" +# Serial: 165870826978392376648679885835942448534 +# MD5 Fingerprint: b5:aa:4b:d5:ed:f7:e3:55:2e:8f:72:0a:f3:75:b8:ed +# SHA1 Fingerprint: 1f:5b:98:f0:e3:b5:f7:74:3c:ed:e6:b0:36:7d:32:cd:f4:09:41:67 +# SHA256 Fingerprint: e5:9a:aa:81:60:09:c2:2b:ff:5b:25:ba:d3:7d:f3:06:f0:49:79:7c:1f:81:d8:5a:b0:89:e6:57:bd:8f:00:44 +-----BEGIN CERTIFICATE----- +MIIC2zCCAmCgAwIBAgIQfMmPK4TX3+oPyWWa00tNljAKBggqhkjOPQQDAzBIMQsw +CQYDVQQGEwJERTEVMBMGA1UEChMMRC1UcnVzdCBHbWJIMSIwIAYDVQQDExlELVRS +VVNUIEJSIFJvb3QgQ0EgMSAyMDIwMB4XDTIwMDIxMTA5NDUwMFoXDTM1MDIxMTA5 +NDQ1OVowSDELMAkGA1UEBhMCREUxFTATBgNVBAoTDEQtVHJ1c3QgR21iSDEiMCAG +A1UEAxMZRC1UUlVTVCBCUiBSb290IENBIDEgMjAyMDB2MBAGByqGSM49AgEGBSuB +BAAiA2IABMbLxyjR+4T1mu9CFCDhQ2tuda38KwOE1HaTJddZO0Flax7mNCq7dPYS +zuht56vkPE4/RAiLzRZxy7+SmfSk1zxQVFKQhYN4lGdnoxwJGT11NIXe7WB9xwy0 +QVK5buXuQqOCAQ0wggEJMA8GA1UdEwEB/wQFMAMBAf8wHQYDVR0OBBYEFHOREKv/ +VbNafAkl1bK6CKBrqx9tMA4GA1UdDwEB/wQEAwIBBjCBxgYDVR0fBIG+MIG7MD6g +PKA6hjhodHRwOi8vY3JsLmQtdHJ1c3QubmV0L2NybC9kLXRydXN0X2JyX3Jvb3Rf +Y2FfMV8yMDIwLmNybDB5oHegdYZzbGRhcDovL2RpcmVjdG9yeS5kLXRydXN0Lm5l +dC9DTj1ELVRSVVNUJTIwQlIlMjBSb290JTIwQ0ElMjAxJTIwMjAyMCxPPUQtVHJ1 +c3QlMjBHbWJILEM9REU/Y2VydGlmaWNhdGVyZXZvY2F0aW9ubGlzdDAKBggqhkjO +PQQDAwNpADBmAjEAlJAtE/rhY/hhY+ithXhUkZy4kzg+GkHaQBZTQgjKL47xPoFW +wKrY7RjEsK70PvomAjEA8yjixtsrmfu3Ubgko6SUeho/5jbiA1czijDLgsfWFBHV +dWNbFJWcHwHP2NVypw87 +-----END CERTIFICATE----- + +# Issuer: CN=D-TRUST EV Root CA 1 2020 O=D-Trust GmbH +# Subject: CN=D-TRUST EV Root CA 1 2020 O=D-Trust GmbH +# Label: "D-TRUST EV Root CA 1 2020" +# Serial: 126288379621884218666039612629459926992 +# MD5 Fingerprint: 8c:2d:9d:70:9f:48:99:11:06:11:fb:e9:cb:30:c0:6e +# SHA1 Fingerprint: 61:db:8c:21:59:69:03:90:d8:7c:9c:12:86:54:cf:9d:3d:f4:dd:07 +# SHA256 Fingerprint: 08:17:0d:1a:a3:64:53:90:1a:2f:95:92:45:e3:47:db:0c:8d:37:ab:aa:bc:56:b8:1a:a1:00:dc:95:89:70:db +-----BEGIN CERTIFICATE----- +MIIC2zCCAmCgAwIBAgIQXwJB13qHfEwDo6yWjfv/0DAKBggqhkjOPQQDAzBIMQsw +CQYDVQQGEwJERTEVMBMGA1UEChMMRC1UcnVzdCBHbWJIMSIwIAYDVQQDExlELVRS +VVNUIEVWIFJvb3QgQ0EgMSAyMDIwMB4XDTIwMDIxMTEwMDAwMFoXDTM1MDIxMTA5 +NTk1OVowSDELMAkGA1UEBhMCREUxFTATBgNVBAoTDEQtVHJ1c3QgR21iSDEiMCAG +A1UEAxMZRC1UUlVTVCBFViBSb290IENBIDEgMjAyMDB2MBAGByqGSM49AgEGBSuB +BAAiA2IABPEL3YZDIBnfl4XoIkqbz52Yv7QFJsnL46bSj8WeeHsxiamJrSc8ZRCC +/N/DnU7wMyPE0jL1HLDfMxddxfCxivnvubcUyilKwg+pf3VlSSowZ/Rk99Yad9rD +wpdhQntJraOCAQ0wggEJMA8GA1UdEwEB/wQFMAMBAf8wHQYDVR0OBBYEFH8QARY3 +OqQo5FD4pPfsazK2/umLMA4GA1UdDwEB/wQEAwIBBjCBxgYDVR0fBIG+MIG7MD6g +PKA6hjhodHRwOi8vY3JsLmQtdHJ1c3QubmV0L2NybC9kLXRydXN0X2V2X3Jvb3Rf +Y2FfMV8yMDIwLmNybDB5oHegdYZzbGRhcDovL2RpcmVjdG9yeS5kLXRydXN0Lm5l +dC9DTj1ELVRSVVNUJTIwRVYlMjBSb290JTIwQ0ElMjAxJTIwMjAyMCxPPUQtVHJ1 +c3QlMjBHbWJILEM9REU/Y2VydGlmaWNhdGVyZXZvY2F0aW9ubGlzdDAKBggqhkjO +PQQDAwNpADBmAjEAyjzGKnXCXnViOTYAYFqLwZOZzNnbQTs7h5kXO9XMT8oi96CA +y/m0sRtW9XLS/BnRAjEAkfcwkz8QRitxpNA7RJvAKQIFskF3UfN5Wp6OFKBOQtJb +gfM0agPnIjhQW+0ZT0MW +-----END CERTIFICATE----- + +# Issuer: CN=DigiCert TLS ECC P384 Root G5 O=DigiCert, Inc. +# Subject: CN=DigiCert TLS ECC P384 Root G5 O=DigiCert, Inc. +# Label: "DigiCert TLS ECC P384 Root G5" +# Serial: 13129116028163249804115411775095713523 +# MD5 Fingerprint: d3:71:04:6a:43:1c:db:a6:59:e1:a8:a3:aa:c5:71:ed +# SHA1 Fingerprint: 17:f3:de:5e:9f:0f:19:e9:8e:f6:1f:32:26:6e:20:c4:07:ae:30:ee +# SHA256 Fingerprint: 01:8e:13:f0:77:25:32:cf:80:9b:d1:b1:72:81:86:72:83:fc:48:c6:e1:3b:e9:c6:98:12:85:4a:49:0c:1b:05 +-----BEGIN CERTIFICATE----- +MIICGTCCAZ+gAwIBAgIQCeCTZaz32ci5PhwLBCou8zAKBggqhkjOPQQDAzBOMQsw +CQYDVQQGEwJVUzEXMBUGA1UEChMORGlnaUNlcnQsIEluYy4xJjAkBgNVBAMTHURp +Z2lDZXJ0IFRMUyBFQ0MgUDM4NCBSb290IEc1MB4XDTIxMDExNTAwMDAwMFoXDTQ2 +MDExNDIzNTk1OVowTjELMAkGA1UEBhMCVVMxFzAVBgNVBAoTDkRpZ2lDZXJ0LCBJ +bmMuMSYwJAYDVQQDEx1EaWdpQ2VydCBUTFMgRUNDIFAzODQgUm9vdCBHNTB2MBAG +ByqGSM49AgEGBSuBBAAiA2IABMFEoc8Rl1Ca3iOCNQfN0MsYndLxf3c1TzvdlHJS +7cI7+Oz6e2tYIOyZrsn8aLN1udsJ7MgT9U7GCh1mMEy7H0cKPGEQQil8pQgO4CLp +0zVozptjn4S1mU1YoI71VOeVyaNCMEAwHQYDVR0OBBYEFMFRRVBZqz7nLFr6ICIS +B4CIfBFqMA4GA1UdDwEB/wQEAwIBhjAPBgNVHRMBAf8EBTADAQH/MAoGCCqGSM49 +BAMDA2gAMGUCMQCJao1H5+z8blUD2WdsJk6Dxv3J+ysTvLd6jLRl0mlpYxNjOyZQ +LgGheQaRnUi/wr4CMEfDFXuxoJGZSZOoPHzoRgaLLPIxAJSdYsiJvRmEFOml+wG4 +DXZDjC5Ty3zfDBeWUA== +-----END CERTIFICATE----- + +# Issuer: CN=DigiCert TLS RSA4096 Root G5 O=DigiCert, Inc. +# Subject: CN=DigiCert TLS RSA4096 Root G5 O=DigiCert, Inc. +# Label: "DigiCert TLS RSA4096 Root G5" +# Serial: 11930366277458970227240571539258396554 +# MD5 Fingerprint: ac:fe:f7:34:96:a9:f2:b3:b4:12:4b:e4:27:41:6f:e1 +# SHA1 Fingerprint: a7:88:49:dc:5d:7c:75:8c:8c:de:39:98:56:b3:aa:d0:b2:a5:71:35 +# SHA256 Fingerprint: 37:1a:00:dc:05:33:b3:72:1a:7e:eb:40:e8:41:9e:70:79:9d:2b:0a:0f:2c:1d:80:69:31:65:f7:ce:c4:ad:75 +-----BEGIN CERTIFICATE----- +MIIFZjCCA06gAwIBAgIQCPm0eKj6ftpqMzeJ3nzPijANBgkqhkiG9w0BAQwFADBN +MQswCQYDVQQGEwJVUzEXMBUGA1UEChMORGlnaUNlcnQsIEluYy4xJTAjBgNVBAMT +HERpZ2lDZXJ0IFRMUyBSU0E0MDk2IFJvb3QgRzUwHhcNMjEwMTE1MDAwMDAwWhcN +NDYwMTE0MjM1OTU5WjBNMQswCQYDVQQGEwJVUzEXMBUGA1UEChMORGlnaUNlcnQs +IEluYy4xJTAjBgNVBAMTHERpZ2lDZXJ0IFRMUyBSU0E0MDk2IFJvb3QgRzUwggIi +MA0GCSqGSIb3DQEBAQUAA4ICDwAwggIKAoICAQCz0PTJeRGd/fxmgefM1eS87IE+ +ajWOLrfn3q/5B03PMJ3qCQuZvWxX2hhKuHisOjmopkisLnLlvevxGs3npAOpPxG0 +2C+JFvuUAT27L/gTBaF4HI4o4EXgg/RZG5Wzrn4DReW+wkL+7vI8toUTmDKdFqgp +wgscONyfMXdcvyej/Cestyu9dJsXLfKB2l2w4SMXPohKEiPQ6s+d3gMXsUJKoBZM +pG2T6T867jp8nVid9E6P/DsjyG244gXazOvswzH016cpVIDPRFtMbzCe88zdH5RD +nU1/cHAN1DrRN/BsnZvAFJNY781BOHW8EwOVfH/jXOnVDdXifBBiqmvwPXbzP6Po +sMH976pXTayGpxi0KcEsDr9kvimM2AItzVwv8n/vFfQMFawKsPHTDU9qTXeXAaDx +Zre3zu/O7Oyldcqs4+Fj97ihBMi8ez9dLRYiVu1ISf6nL3kwJZu6ay0/nTvEF+cd +Lvvyz6b84xQslpghjLSR6Rlgg/IwKwZzUNWYOwbpx4oMYIwo+FKbbuH2TbsGJJvX +KyY//SovcfXWJL5/MZ4PbeiPT02jP/816t9JXkGPhvnxd3lLG7SjXi/7RgLQZhNe +XoVPzthwiHvOAbWWl9fNff2C+MIkwcoBOU+NosEUQB+cZtUMCUbW8tDRSHZWOkPL +tgoRObqME2wGtZ7P6wIDAQABo0IwQDAdBgNVHQ4EFgQUUTMc7TZArxfTJc1paPKv +TiM+s0EwDgYDVR0PAQH/BAQDAgGGMA8GA1UdEwEB/wQFMAMBAf8wDQYJKoZIhvcN +AQEMBQADggIBAGCmr1tfV9qJ20tQqcQjNSH/0GEwhJG3PxDPJY7Jv0Y02cEhJhxw +GXIeo8mH/qlDZJY6yFMECrZBu8RHANmfGBg7sg7zNOok992vIGCukihfNudd5N7H +PNtQOa27PShNlnx2xlv0wdsUpasZYgcYQF+Xkdycx6u1UQ3maVNVzDl92sURVXLF +O4uJ+DQtpBflF+aZfTCIITfNMBc9uPK8qHWgQ9w+iUuQrm0D4ByjoJYJu32jtyoQ +REtGBzRj7TG5BO6jm5qu5jF49OokYTurWGT/u4cnYiWB39yhL/btp/96j1EuMPik +AdKFOV8BmZZvWltwGUb+hmA+rYAQCd05JS9Yf7vSdPD3Rh9GOUrYU9DzLjtxpdRv +/PNn5AeP3SYZ4Y1b+qOTEZvpyDrDVWiakuFSdjjo4bq9+0/V77PnSIMx8IIh47a+ +p6tv75/fTM8BuGJqIz3nCU2AG3swpMPdB380vqQmsvZB6Akd4yCYqjdP//fx4ilw +MUc/dNAUFvohigLVigmUdy7yWSiLfFCSCmZ4OIN1xLVaqBHG5cGdZlXPU8Sv13WF +qUITVuwhd4GTWgzqltlJyqEI8pc7bZsEGCREjnwB8twl2F6GmrE52/WRMmrRpnCK +ovfepEWFJqgejF0pW8hL2JpqA15w8oVPbEtoL8pU9ozaMv7Da4M/OMZ+ +-----END CERTIFICATE----- + +# Issuer: CN=Certainly Root R1 O=Certainly +# Subject: CN=Certainly Root R1 O=Certainly +# Label: "Certainly Root R1" +# Serial: 188833316161142517227353805653483829216 +# MD5 Fingerprint: 07:70:d4:3e:82:87:a0:fa:33:36:13:f4:fa:33:e7:12 +# SHA1 Fingerprint: a0:50:ee:0f:28:71:f4:27:b2:12:6d:6f:50:96:25:ba:cc:86:42:af +# SHA256 Fingerprint: 77:b8:2c:d8:64:4c:43:05:f7:ac:c5:cb:15:6b:45:67:50:04:03:3d:51:c6:0c:62:02:a8:e0:c3:34:67:d3:a0 +-----BEGIN CERTIFICATE----- +MIIFRzCCAy+gAwIBAgIRAI4P+UuQcWhlM1T01EQ5t+AwDQYJKoZIhvcNAQELBQAw +PTELMAkGA1UEBhMCVVMxEjAQBgNVBAoTCUNlcnRhaW5seTEaMBgGA1UEAxMRQ2Vy +dGFpbmx5IFJvb3QgUjEwHhcNMjEwNDAxMDAwMDAwWhcNNDYwNDAxMDAwMDAwWjA9 +MQswCQYDVQQGEwJVUzESMBAGA1UEChMJQ2VydGFpbmx5MRowGAYDVQQDExFDZXJ0 +YWlubHkgUm9vdCBSMTCCAiIwDQYJKoZIhvcNAQEBBQADggIPADCCAgoCggIBANA2 +1B/q3avk0bbm+yLA3RMNansiExyXPGhjZjKcA7WNpIGD2ngwEc/csiu+kr+O5MQT +vqRoTNoCaBZ0vrLdBORrKt03H2As2/X3oXyVtwxwhi7xOu9S98zTm/mLvg7fMbed +aFySpvXl8wo0tf97ouSHocavFwDvA5HtqRxOcT3Si2yJ9HiG5mpJoM610rCrm/b0 +1C7jcvk2xusVtyWMOvwlDbMicyF0yEqWYZL1LwsYpfSt4u5BvQF5+paMjRcCMLT5 +r3gajLQ2EBAHBXDQ9DGQilHFhiZ5shGIXsXwClTNSaa/ApzSRKft43jvRl5tcdF5 +cBxGX1HpyTfcX35pe0HfNEXgO4T0oYoKNp43zGJS4YkNKPl6I7ENPT2a/Z2B7yyQ +wHtETrtJ4A5KVpK8y7XdeReJkd5hiXSSqOMyhb5OhaRLWcsrxXiOcVTQAjeZjOVJ +6uBUcqQRBi8LjMFbvrWhsFNunLhgkR9Za/kt9JQKl7XsxXYDVBtlUrpMklZRNaBA +2CnbrlJ2Oy0wQJuK0EJWtLeIAaSHO1OWzaMWj/Nmqhexx2DgwUMFDO6bW2BvBlyH +Wyf5QBGenDPBt+U1VwV/J84XIIwc/PH72jEpSe31C4SnT8H2TsIonPru4K8H+zMR +eiFPCyEQtkA6qyI6BJyLm4SGcprSp6XEtHWRqSsjAgMBAAGjQjBAMA4GA1UdDwEB +/wQEAwIBBjAPBgNVHRMBAf8EBTADAQH/MB0GA1UdDgQWBBTgqj8ljZ9EXME66C6u +d0yEPmcM9DANBgkqhkiG9w0BAQsFAAOCAgEAuVevuBLaV4OPaAszHQNTVfSVcOQr +PbA56/qJYv331hgELyE03fFo8NWWWt7CgKPBjcZq91l3rhVkz1t5BXdm6ozTaw3d +8VkswTOlMIAVRQdFGjEitpIAq5lNOo93r6kiyi9jyhXWx8bwPWz8HA2YEGGeEaIi +1wrykXprOQ4vMMM2SZ/g6Q8CRFA3lFV96p/2O7qUpUzpvD5RtOjKkjZUbVwlKNrd +rRT90+7iIgXr0PK3aBLXWopBGsaSpVo7Y0VPv+E6dyIvXL9G+VoDhRNCX8reU9di +taY1BMJH/5n9hN9czulegChB8n3nHpDYT3Y+gjwN/KUD+nsa2UUeYNrEjvn8K8l7 +lcUq/6qJ34IxD3L/DCfXCh5WAFAeDJDBlrXYFIW7pw0WwfgHJBu6haEaBQmAupVj +yTrsJZ9/nbqkRxWbRHDxakvWOF5D8xh+UG7pWijmZeZ3Gzr9Hb4DJqPb1OG7fpYn +Kx3upPvaJVQTA945xsMfTZDsjxtK0hzthZU4UHlG1sGQUDGpXJpuHfUzVounmdLy +yCwzk5Iwx06MZTMQZBf9JBeW0Y3COmor6xOLRPIh80oat3df1+2IpHLlOR+Vnb5n +wXARPbv0+Em34yaXOp/SX3z7wJl8OSngex2/DaeP0ik0biQVy96QXr8axGbqwua6 +OV+KmalBWQewLK8= +-----END CERTIFICATE----- + +# Issuer: CN=Certainly Root E1 O=Certainly +# Subject: CN=Certainly Root E1 O=Certainly +# Label: "Certainly Root E1" +# Serial: 8168531406727139161245376702891150584 +# MD5 Fingerprint: 0a:9e:ca:cd:3e:52:50:c6:36:f3:4b:a3:ed:a7:53:e9 +# SHA1 Fingerprint: f9:e1:6d:dc:01:89:cf:d5:82:45:63:3e:c5:37:7d:c2:eb:93:6f:2b +# SHA256 Fingerprint: b4:58:5f:22:e4:ac:75:6a:4e:86:12:a1:36:1c:5d:9d:03:1a:93:fd:84:fe:bb:77:8f:a3:06:8b:0f:c4:2d:c2 +-----BEGIN CERTIFICATE----- +MIIB9zCCAX2gAwIBAgIQBiUzsUcDMydc+Y2aub/M+DAKBggqhkjOPQQDAzA9MQsw +CQYDVQQGEwJVUzESMBAGA1UEChMJQ2VydGFpbmx5MRowGAYDVQQDExFDZXJ0YWlu +bHkgUm9vdCBFMTAeFw0yMTA0MDEwMDAwMDBaFw00NjA0MDEwMDAwMDBaMD0xCzAJ +BgNVBAYTAlVTMRIwEAYDVQQKEwlDZXJ0YWlubHkxGjAYBgNVBAMTEUNlcnRhaW5s +eSBSb290IEUxMHYwEAYHKoZIzj0CAQYFK4EEACIDYgAE3m/4fxzf7flHh4axpMCK ++IKXgOqPyEpeKn2IaKcBYhSRJHpcnqMXfYqGITQYUBsQ3tA3SybHGWCA6TS9YBk2 +QNYphwk8kXr2vBMj3VlOBF7PyAIcGFPBMdjaIOlEjeR2o0IwQDAOBgNVHQ8BAf8E +BAMCAQYwDwYDVR0TAQH/BAUwAwEB/zAdBgNVHQ4EFgQU8ygYy2R17ikq6+2uI1g4 +hevIIgcwCgYIKoZIzj0EAwMDaAAwZQIxALGOWiDDshliTd6wT99u0nCK8Z9+aozm +ut6Dacpps6kFtZaSF4fC0urQe87YQVt8rgIwRt7qy12a7DLCZRawTDBcMPPaTnOG +BtjOiQRINzf43TNRnXCve1XYAS59BWQOhriR +-----END CERTIFICATE----- + +# Issuer: CN=Security Communication ECC RootCA1 O=SECOM Trust Systems CO.,LTD. +# Subject: CN=Security Communication ECC RootCA1 O=SECOM Trust Systems CO.,LTD. +# Label: "Security Communication ECC RootCA1" +# Serial: 15446673492073852651 +# MD5 Fingerprint: 7e:43:b0:92:68:ec:05:43:4c:98:ab:5d:35:2e:7e:86 +# SHA1 Fingerprint: b8:0e:26:a9:bf:d2:b2:3b:c0:ef:46:c9:ba:c7:bb:f6:1d:0d:41:41 +# SHA256 Fingerprint: e7:4f:bd:a5:5b:d5:64:c4:73:a3:6b:44:1a:a7:99:c8:a6:8e:07:74:40:e8:28:8b:9f:a1:e5:0e:4b:ba:ca:11 +-----BEGIN CERTIFICATE----- +MIICODCCAb6gAwIBAgIJANZdm7N4gS7rMAoGCCqGSM49BAMDMGExCzAJBgNVBAYT +AkpQMSUwIwYDVQQKExxTRUNPTSBUcnVzdCBTeXN0ZW1zIENPLixMVEQuMSswKQYD +VQQDEyJTZWN1cml0eSBDb21tdW5pY2F0aW9uIEVDQyBSb290Q0ExMB4XDTE2MDYx +NjA1MTUyOFoXDTM4MDExODA1MTUyOFowYTELMAkGA1UEBhMCSlAxJTAjBgNVBAoT +HFNFQ09NIFRydXN0IFN5c3RlbXMgQ08uLExURC4xKzApBgNVBAMTIlNlY3VyaXR5 +IENvbW11bmljYXRpb24gRUNDIFJvb3RDQTEwdjAQBgcqhkjOPQIBBgUrgQQAIgNi +AASkpW9gAwPDvTH00xecK4R1rOX9PVdu12O/5gSJko6BnOPpR27KkBLIE+Cnnfdl +dB9sELLo5OnvbYUymUSxXv3MdhDYW72ixvnWQuRXdtyQwjWpS4g8EkdtXP9JTxpK +ULGjQjBAMB0GA1UdDgQWBBSGHOf+LaVKiwj+KBH6vqNm+GBZLzAOBgNVHQ8BAf8E +BAMCAQYwDwYDVR0TAQH/BAUwAwEB/zAKBggqhkjOPQQDAwNoADBlAjAVXUI9/Lbu +9zuxNuie9sRGKEkz0FhDKmMpzE2xtHqiuQ04pV1IKv3LsnNdo4gIxwwCMQDAqy0O +be0YottT6SXbVQjgUMzfRGEWgqtJsLKB7HOHeLRMsmIbEvoWTSVLY70eN9k= +-----END CERTIFICATE----- + +# Issuer: CN=BJCA Global Root CA1 O=BEIJING CERTIFICATE AUTHORITY +# Subject: CN=BJCA Global Root CA1 O=BEIJING CERTIFICATE AUTHORITY +# Label: "BJCA Global Root CA1" +# Serial: 113562791157148395269083148143378328608 +# MD5 Fingerprint: 42:32:99:76:43:33:36:24:35:07:82:9b:28:f9:d0:90 +# SHA1 Fingerprint: d5:ec:8d:7b:4c:ba:79:f4:e7:e8:cb:9d:6b:ae:77:83:10:03:21:6a +# SHA256 Fingerprint: f3:89:6f:88:fe:7c:0a:88:27:66:a7:fa:6a:d2:74:9f:b5:7a:7f:3e:98:fb:76:9c:1f:a7:b0:9c:2c:44:d5:ae +-----BEGIN CERTIFICATE----- +MIIFdDCCA1ygAwIBAgIQVW9l47TZkGobCdFsPsBsIDANBgkqhkiG9w0BAQsFADBU +MQswCQYDVQQGEwJDTjEmMCQGA1UECgwdQkVJSklORyBDRVJUSUZJQ0FURSBBVVRI +T1JJVFkxHTAbBgNVBAMMFEJKQ0EgR2xvYmFsIFJvb3QgQ0ExMB4XDTE5MTIxOTAz +MTYxN1oXDTQ0MTIxMjAzMTYxN1owVDELMAkGA1UEBhMCQ04xJjAkBgNVBAoMHUJF +SUpJTkcgQ0VSVElGSUNBVEUgQVVUSE9SSVRZMR0wGwYDVQQDDBRCSkNBIEdsb2Jh +bCBSb290IENBMTCCAiIwDQYJKoZIhvcNAQEBBQADggIPADCCAgoCggIBAPFmCL3Z +xRVhy4QEQaVpN3cdwbB7+sN3SJATcmTRuHyQNZ0YeYjjlwE8R4HyDqKYDZ4/N+AZ +spDyRhySsTphzvq3Rp4Dhtczbu33RYx2N95ulpH3134rhxfVizXuhJFyV9xgw8O5 +58dnJCNPYwpj9mZ9S1WnP3hkSWkSl+BMDdMJoDIwOvqfwPKcxRIqLhy1BDPapDgR +at7GGPZHOiJBhyL8xIkoVNiMpTAK+BcWyqw3/XmnkRd4OJmtWO2y3syJfQOcs4ll +5+M7sSKGjwZteAf9kRJ/sGsciQ35uMt0WwfCyPQ10WRjeulumijWML3mG90Vr4Tq +nMfK9Q7q8l0ph49pczm+LiRvRSGsxdRpJQaDrXpIhRMsDQa4bHlW/KNnMoH1V6XK +V0Jp6VwkYe/iMBhORJhVb3rCk9gZtt58R4oRTklH2yiUAguUSiz5EtBP6DF+bHq/ +pj+bOT0CFqMYs2esWz8sgytnOYFcuX6U1WTdno9uruh8W7TXakdI136z1C2OVnZO +z2nxbkRs1CTqjSShGL+9V/6pmTW12xB3uD1IutbB5/EjPtffhZ0nPNRAvQoMvfXn +jSXWgXSHRtQpdaJCbPdzied9v3pKH9MiyRVVz99vfFXQpIsHETdfg6YmV6YBW37+ +WGgHqel62bno/1Afq8K0wM7o6v0PvY1NuLxxAgMBAAGjQjBAMB0GA1UdDgQWBBTF +7+3M2I0hxkjk49cULqcWk+WYATAPBgNVHRMBAf8EBTADAQH/MA4GA1UdDwEB/wQE +AwIBBjANBgkqhkiG9w0BAQsFAAOCAgEAUoKsITQfI/Ki2Pm4rzc2IInRNwPWaZ+4 +YRC6ojGYWUfo0Q0lHhVBDOAqVdVXUsv45Mdpox1NcQJeXyFFYEhcCY5JEMEE3Kli +awLwQ8hOnThJdMkycFRtwUf8jrQ2ntScvd0g1lPJGKm1Vrl2i5VnZu69mP6u775u ++2D2/VnGKhs/I0qUJDAnyIm860Qkmss9vk/Ves6OF8tiwdneHg56/0OGNFK8YT88 +X7vZdrRTvJez/opMEi4r89fO4aL/3Xtw+zuhTaRjAv04l5U/BXCga99igUOLtFkN +SoxUnMW7gZ/NfaXvCyUeOiDbHPwfmGcCCtRzRBPbUYQaVQNW4AB+dAb/OMRyHdOo +P2gxXdMJxy6MW2Pg6Nwe0uxhHvLe5e/2mXZgLR6UcnHGCyoyx5JO1UbXHfmpGQrI ++pXObSOYqgs4rZpWDW+N8TEAiMEXnM0ZNjX+VVOg4DwzX5Ze4jLp3zO7Bkqp2IRz +znfSxqxx4VyjHQy7Ct9f4qNx2No3WqB4K/TUfet27fJhcKVlmtOJNBir+3I+17Q9 +eVzYH6Eze9mCUAyTF6ps3MKCuwJXNq+YJyo5UOGwifUll35HaBC07HPKs5fRJNz2 +YqAo07WjuGS3iGJCz51TzZm+ZGiPTx4SSPfSKcOYKMryMguTjClPPGAyzQWWYezy +r/6zcCwupvI= +-----END CERTIFICATE----- + +# Issuer: CN=BJCA Global Root CA2 O=BEIJING CERTIFICATE AUTHORITY +# Subject: CN=BJCA Global Root CA2 O=BEIJING CERTIFICATE AUTHORITY +# Label: "BJCA Global Root CA2" +# Serial: 58605626836079930195615843123109055211 +# MD5 Fingerprint: 5e:0a:f6:47:5f:a6:14:e8:11:01:95:3f:4d:01:eb:3c +# SHA1 Fingerprint: f4:27:86:eb:6e:b8:6d:88:31:67:02:fb:ba:66:a4:53:00:aa:7a:a6 +# SHA256 Fingerprint: 57:4d:f6:93:1e:27:80:39:66:7b:72:0a:fd:c1:60:0f:c2:7e:b6:6d:d3:09:29:79:fb:73:85:64:87:21:28:82 +-----BEGIN CERTIFICATE----- +MIICJTCCAaugAwIBAgIQLBcIfWQqwP6FGFkGz7RK6zAKBggqhkjOPQQDAzBUMQsw +CQYDVQQGEwJDTjEmMCQGA1UECgwdQkVJSklORyBDRVJUSUZJQ0FURSBBVVRIT1JJ +VFkxHTAbBgNVBAMMFEJKQ0EgR2xvYmFsIFJvb3QgQ0EyMB4XDTE5MTIxOTAzMTgy +MVoXDTQ0MTIxMjAzMTgyMVowVDELMAkGA1UEBhMCQ04xJjAkBgNVBAoMHUJFSUpJ +TkcgQ0VSVElGSUNBVEUgQVVUSE9SSVRZMR0wGwYDVQQDDBRCSkNBIEdsb2JhbCBS +b290IENBMjB2MBAGByqGSM49AgEGBSuBBAAiA2IABJ3LgJGNU2e1uVCxA/jlSR9B +IgmwUVJY1is0j8USRhTFiy8shP8sbqjV8QnjAyEUxEM9fMEsxEtqSs3ph+B99iK+ ++kpRuDCK/eHeGBIK9ke35xe/J4rUQUyWPGCWwf0VHKNCMEAwHQYDVR0OBBYEFNJK +sVF/BvDRgh9Obl+rg/xI1LCRMA8GA1UdEwEB/wQFMAMBAf8wDgYDVR0PAQH/BAQD +AgEGMAoGCCqGSM49BAMDA2gAMGUCMBq8W9f+qdJUDkpd0m2xQNz0Q9XSSpkZElaA +94M04TVOSG0ED1cxMDAtsaqdAzjbBgIxAMvMh1PLet8gUXOQwKhbYdDFUDn9hf7B +43j4ptZLvZuHjw/l1lOWqzzIQNph91Oj9w== +-----END CERTIFICATE----- + +# Issuer: CN=Sectigo Public Server Authentication Root E46 O=Sectigo Limited +# Subject: CN=Sectigo Public Server Authentication Root E46 O=Sectigo Limited +# Label: "Sectigo Public Server Authentication Root E46" +# Serial: 88989738453351742415770396670917916916 +# MD5 Fingerprint: 28:23:f8:b2:98:5c:37:16:3b:3e:46:13:4e:b0:b3:01 +# SHA1 Fingerprint: ec:8a:39:6c:40:f0:2e:bc:42:75:d4:9f:ab:1c:1a:5b:67:be:d2:9a +# SHA256 Fingerprint: c9:0f:26:f0:fb:1b:40:18:b2:22:27:51:9b:5c:a2:b5:3e:2c:a5:b3:be:5c:f1:8e:fe:1b:ef:47:38:0c:53:83 +-----BEGIN CERTIFICATE----- +MIICOjCCAcGgAwIBAgIQQvLM2htpN0RfFf51KBC49DAKBggqhkjOPQQDAzBfMQsw +CQYDVQQGEwJHQjEYMBYGA1UEChMPU2VjdGlnbyBMaW1pdGVkMTYwNAYDVQQDEy1T +ZWN0aWdvIFB1YmxpYyBTZXJ2ZXIgQXV0aGVudGljYXRpb24gUm9vdCBFNDYwHhcN +MjEwMzIyMDAwMDAwWhcNNDYwMzIxMjM1OTU5WjBfMQswCQYDVQQGEwJHQjEYMBYG +A1UEChMPU2VjdGlnbyBMaW1pdGVkMTYwNAYDVQQDEy1TZWN0aWdvIFB1YmxpYyBT +ZXJ2ZXIgQXV0aGVudGljYXRpb24gUm9vdCBFNDYwdjAQBgcqhkjOPQIBBgUrgQQA +IgNiAAR2+pmpbiDt+dd34wc7qNs9Xzjoq1WmVk/WSOrsfy2qw7LFeeyZYX8QeccC +WvkEN/U0NSt3zn8gj1KjAIns1aeibVvjS5KToID1AZTc8GgHHs3u/iVStSBDHBv+ +6xnOQ6OjQjBAMB0GA1UdDgQWBBTRItpMWfFLXyY4qp3W7usNw/upYTAOBgNVHQ8B +Af8EBAMCAYYwDwYDVR0TAQH/BAUwAwEB/zAKBggqhkjOPQQDAwNnADBkAjAn7qRa +qCG76UeXlImldCBteU/IvZNeWBj7LRoAasm4PdCkT0RHlAFWovgzJQxC36oCMB3q +4S6ILuH5px0CMk7yn2xVdOOurvulGu7t0vzCAxHrRVxgED1cf5kDW21USAGKcw== +-----END CERTIFICATE----- + +# Issuer: CN=Sectigo Public Server Authentication Root R46 O=Sectigo Limited +# Subject: CN=Sectigo Public Server Authentication Root R46 O=Sectigo Limited +# Label: "Sectigo Public Server Authentication Root R46" +# Serial: 156256931880233212765902055439220583700 +# MD5 Fingerprint: 32:10:09:52:00:d5:7e:6c:43:df:15:c0:b1:16:93:e5 +# SHA1 Fingerprint: ad:98:f9:f3:e4:7d:75:3b:65:d4:82:b3:a4:52:17:bb:6e:f5:e4:38 +# SHA256 Fingerprint: 7b:b6:47:a6:2a:ee:ac:88:bf:25:7a:a5:22:d0:1f:fe:a3:95:e0:ab:45:c7:3f:93:f6:56:54:ec:38:f2:5a:06 +-----BEGIN CERTIFICATE----- +MIIFijCCA3KgAwIBAgIQdY39i658BwD6qSWn4cetFDANBgkqhkiG9w0BAQwFADBf +MQswCQYDVQQGEwJHQjEYMBYGA1UEChMPU2VjdGlnbyBMaW1pdGVkMTYwNAYDVQQD +Ey1TZWN0aWdvIFB1YmxpYyBTZXJ2ZXIgQXV0aGVudGljYXRpb24gUm9vdCBSNDYw +HhcNMjEwMzIyMDAwMDAwWhcNNDYwMzIxMjM1OTU5WjBfMQswCQYDVQQGEwJHQjEY +MBYGA1UEChMPU2VjdGlnbyBMaW1pdGVkMTYwNAYDVQQDEy1TZWN0aWdvIFB1Ymxp +YyBTZXJ2ZXIgQXV0aGVudGljYXRpb24gUm9vdCBSNDYwggIiMA0GCSqGSIb3DQEB +AQUAA4ICDwAwggIKAoICAQCTvtU2UnXYASOgHEdCSe5jtrch/cSV1UgrJnwUUxDa +ef0rty2k1Cz66jLdScK5vQ9IPXtamFSvnl0xdE8H/FAh3aTPaE8bEmNtJZlMKpnz +SDBh+oF8HqcIStw+KxwfGExxqjWMrfhu6DtK2eWUAtaJhBOqbchPM8xQljeSM9xf +iOefVNlI8JhD1mb9nxc4Q8UBUQvX4yMPFF1bFOdLvt30yNoDN9HWOaEhUTCDsG3X +ME6WW5HwcCSrv0WBZEMNvSE6Lzzpng3LILVCJ8zab5vuZDCQOc2TZYEhMbUjUDM3 +IuM47fgxMMxF/mL50V0yeUKH32rMVhlATc6qu/m1dkmU8Sf4kaWD5QazYw6A3OAS +VYCmO2a0OYctyPDQ0RTp5A1NDvZdV3LFOxxHVp3i1fuBYYzMTYCQNFu31xR13NgE +SJ/AwSiItOkcyqex8Va3e0lMWeUgFaiEAin6OJRpmkkGj80feRQXEgyDet4fsZfu ++Zd4KKTIRJLpfSYFplhym3kT2BFfrsU4YjRosoYwjviQYZ4ybPUHNs2iTG7sijbt +8uaZFURww3y8nDnAtOFr94MlI1fZEoDlSfB1D++N6xybVCi0ITz8fAr/73trdf+L +HaAZBav6+CuBQug4urv7qv094PPK306Xlynt8xhW6aWWrL3DkJiy4Pmi1KZHQ3xt +zwIDAQABo0IwQDAdBgNVHQ4EFgQUVnNYZJX5khqwEioEYnmhQBWIIUkwDgYDVR0P +AQH/BAQDAgGGMA8GA1UdEwEB/wQFMAMBAf8wDQYJKoZIhvcNAQEMBQADggIBAC9c +mTz8Bl6MlC5w6tIyMY208FHVvArzZJ8HXtXBc2hkeqK5Duj5XYUtqDdFqij0lgVQ +YKlJfp/imTYpE0RHap1VIDzYm/EDMrraQKFz6oOht0SmDpkBm+S8f74TlH7Kph52 +gDY9hAaLMyZlbcp+nv4fjFg4exqDsQ+8FxG75gbMY/qB8oFM2gsQa6H61SilzwZA +Fv97fRheORKkU55+MkIQpiGRqRxOF3yEvJ+M0ejf5lG5Nkc/kLnHvALcWxxPDkjB +JYOcCj+esQMzEhonrPcibCTRAUH4WAP+JWgiH5paPHxsnnVI84HxZmduTILA7rpX +DhjvLpr3Etiga+kFpaHpaPi8TD8SHkXoUsCjvxInebnMMTzD9joiFgOgyY9mpFui +TdaBJQbpdqQACj7LzTWb4OE4y2BThihCQRxEV+ioratF4yUQvNs+ZUH7G6aXD+u5 +dHn5HrwdVw1Hr8Mvn4dGp+smWg9WY7ViYG4A++MnESLn/pmPNPW56MORcr3Ywx65 +LvKRRFHQV80MNNVIIb/bE/FmJUNS0nAiNs2fxBx1IK1jcmMGDw4nztJqDby1ORrp +0XZ60Vzk50lJLVU3aPAaOpg+VBeHVOmmJ1CJeyAvP/+/oYtKR5j/K3tJPsMpRmAY +QqszKbrAKbkTidOIijlBO8n9pu0f9GBj39ItVQGL +-----END CERTIFICATE----- + +# Issuer: CN=SSL.com TLS RSA Root CA 2022 O=SSL Corporation +# Subject: CN=SSL.com TLS RSA Root CA 2022 O=SSL Corporation +# Label: "SSL.com TLS RSA Root CA 2022" +# Serial: 148535279242832292258835760425842727825 +# MD5 Fingerprint: d8:4e:c6:59:30:d8:fe:a0:d6:7a:5a:2c:2c:69:78:da +# SHA1 Fingerprint: ec:2c:83:40:72:af:26:95:10:ff:0e:f2:03:ee:31:70:f6:78:9d:ca +# SHA256 Fingerprint: 8f:af:7d:2e:2c:b4:70:9b:b8:e0:b3:36:66:bf:75:a5:dd:45:b5:de:48:0f:8e:a8:d4:bf:e6:be:bc:17:f2:ed +-----BEGIN CERTIFICATE----- +MIIFiTCCA3GgAwIBAgIQb77arXO9CEDii02+1PdbkTANBgkqhkiG9w0BAQsFADBO +MQswCQYDVQQGEwJVUzEYMBYGA1UECgwPU1NMIENvcnBvcmF0aW9uMSUwIwYDVQQD +DBxTU0wuY29tIFRMUyBSU0EgUm9vdCBDQSAyMDIyMB4XDTIyMDgyNTE2MzQyMloX +DTQ2MDgxOTE2MzQyMVowTjELMAkGA1UEBhMCVVMxGDAWBgNVBAoMD1NTTCBDb3Jw +b3JhdGlvbjElMCMGA1UEAwwcU1NMLmNvbSBUTFMgUlNBIFJvb3QgQ0EgMjAyMjCC +AiIwDQYJKoZIhvcNAQEBBQADggIPADCCAgoCggIBANCkCXJPQIgSYT41I57u9nTP +L3tYPc48DRAokC+X94xI2KDYJbFMsBFMF3NQ0CJKY7uB0ylu1bUJPiYYf7ISf5OY +t6/wNr/y7hienDtSxUcZXXTzZGbVXcdotL8bHAajvI9AI7YexoS9UcQbOcGV0ins +S657Lb85/bRi3pZ7QcacoOAGcvvwB5cJOYF0r/c0WRFXCsJbwST0MXMwgsadugL3 +PnxEX4MN8/HdIGkWCVDi1FW24IBydm5MR7d1VVm0U3TZlMZBrViKMWYPHqIbKUBO +L9975hYsLfy/7PO0+r4Y9ptJ1O4Fbtk085zx7AGL0SDGD6C1vBdOSHtRwvzpXGk3 +R2azaPgVKPC506QVzFpPulJwoxJF3ca6TvvC0PeoUidtbnm1jPx7jMEWTO6Af77w +dr5BUxIzrlo4QqvXDz5BjXYHMtWrifZOZ9mxQnUjbvPNQrL8VfVThxc7wDNY8VLS ++YCk8OjwO4s4zKTGkH8PnP2L0aPP2oOnaclQNtVcBdIKQXTbYxE3waWglksejBYS +d66UNHsef8JmAOSqg+qKkK3ONkRN0VHpvB/zagX9wHQfJRlAUW7qglFA35u5CCoG +AtUjHBPW6dvbxrB6y3snm/vg1UYk7RBLY0ulBY+6uB0rpvqR4pJSvezrZ5dtmi2f +gTIFZzL7SAg/2SW4BCUvAgMBAAGjYzBhMA8GA1UdEwEB/wQFMAMBAf8wHwYDVR0j +BBgwFoAU+y437uOEeicuzRk1sTN8/9REQrkwHQYDVR0OBBYEFPsuN+7jhHonLs0Z +NbEzfP/UREK5MA4GA1UdDwEB/wQEAwIBhjANBgkqhkiG9w0BAQsFAAOCAgEAjYlt +hEUY8U+zoO9opMAdrDC8Z2awms22qyIZZtM7QbUQnRC6cm4pJCAcAZli05bg4vsM +QtfhWsSWTVTNj8pDU/0quOr4ZcoBwq1gaAafORpR2eCNJvkLTqVTJXojpBzOCBvf +R4iyrT7gJ4eLSYwfqUdYe5byiB0YrrPRpgqU+tvT5TgKa3kSM/tKWTcWQA673vWJ +DPFs0/dRa1419dvAJuoSc06pkZCmF8NsLzjUo3KUQyxi4U5cMj29TH0ZR6LDSeeW +P4+a0zvkEdiLA9z2tmBVGKaBUfPhqBVq6+AL8BQx1rmMRTqoENjwuSfr98t67wVy +lrXEj5ZzxOhWc5y8aVFjvO9nHEMaX3cZHxj4HCUp+UmZKbaSPaKDN7EgkaibMOlq +bLQjk2UEqxHzDh1TJElTHaE/nUiSEeJ9DU/1172iWD54nR4fK/4huxoTtrEoZP2w +AgDHbICivRZQIA9ygV/MlP+7mea6kMvq+cYMwq7FGc4zoWtcu358NFcXrfA/rs3q +r5nsLFR+jM4uElZI7xc7P0peYNLcdDa8pUNjyw9bowJWCZ4kLOGGgYz+qxcs+sji +Mho6/4UIyYOf8kpIEFR3N+2ivEC+5BB09+Rbu7nzifmPQdjH5FCQNYA+HLhNkNPU +98OwoX6EyneSMSy4kLGCenROmxMmtNVQZlR4rmA= +-----END CERTIFICATE----- + +# Issuer: CN=SSL.com TLS ECC Root CA 2022 O=SSL Corporation +# Subject: CN=SSL.com TLS ECC Root CA 2022 O=SSL Corporation +# Label: "SSL.com TLS ECC Root CA 2022" +# Serial: 26605119622390491762507526719404364228 +# MD5 Fingerprint: 99:d7:5c:f1:51:36:cc:e9:ce:d9:19:2e:77:71:56:c5 +# SHA1 Fingerprint: 9f:5f:d9:1a:54:6d:f5:0c:71:f0:ee:7a:bd:17:49:98:84:73:e2:39 +# SHA256 Fingerprint: c3:2f:fd:9f:46:f9:36:d1:6c:36:73:99:09:59:43:4b:9a:d6:0a:af:bb:9e:7c:f3:36:54:f1:44:cc:1b:a1:43 +-----BEGIN CERTIFICATE----- +MIICOjCCAcCgAwIBAgIQFAP1q/s3ixdAW+JDsqXRxDAKBggqhkjOPQQDAzBOMQsw +CQYDVQQGEwJVUzEYMBYGA1UECgwPU1NMIENvcnBvcmF0aW9uMSUwIwYDVQQDDBxT +U0wuY29tIFRMUyBFQ0MgUm9vdCBDQSAyMDIyMB4XDTIyMDgyNTE2MzM0OFoXDTQ2 +MDgxOTE2MzM0N1owTjELMAkGA1UEBhMCVVMxGDAWBgNVBAoMD1NTTCBDb3Jwb3Jh +dGlvbjElMCMGA1UEAwwcU1NMLmNvbSBUTFMgRUNDIFJvb3QgQ0EgMjAyMjB2MBAG +ByqGSM49AgEGBSuBBAAiA2IABEUpNXP6wrgjzhR9qLFNoFs27iosU8NgCTWyJGYm +acCzldZdkkAZDsalE3D07xJRKF3nzL35PIXBz5SQySvOkkJYWWf9lCcQZIxPBLFN +SeR7T5v15wj4A4j3p8OSSxlUgaNjMGEwDwYDVR0TAQH/BAUwAwEB/zAfBgNVHSME +GDAWgBSJjy+j6CugFFR781a4Jl9nOAuc0DAdBgNVHQ4EFgQUiY8vo+groBRUe/NW +uCZfZzgLnNAwDgYDVR0PAQH/BAQDAgGGMAoGCCqGSM49BAMDA2gAMGUCMFXjIlbp +15IkWE8elDIPDAI2wv2sdDJO4fscgIijzPvX6yv/N33w7deedWo1dlJF4AIxAMeN +b0Igj762TVntd00pxCAgRWSGOlDGxK0tk/UYfXLtqc/ErFc2KAhl3zx5Zn6g6g== +-----END CERTIFICATE----- + +# Issuer: CN=Atos TrustedRoot Root CA ECC TLS 2021 O=Atos +# Subject: CN=Atos TrustedRoot Root CA ECC TLS 2021 O=Atos +# Label: "Atos TrustedRoot Root CA ECC TLS 2021" +# Serial: 81873346711060652204712539181482831616 +# MD5 Fingerprint: 16:9f:ad:f1:70:ad:79:d6:ed:29:b4:d1:c5:79:70:a8 +# SHA1 Fingerprint: 9e:bc:75:10:42:b3:02:f3:81:f4:f7:30:62:d4:8f:c3:a7:51:b2:dd +# SHA256 Fingerprint: b2:fa:e5:3e:14:cc:d7:ab:92:12:06:47:01:ae:27:9c:1d:89:88:fa:cb:77:5f:a8:a0:08:91:4e:66:39:88:a8 +-----BEGIN CERTIFICATE----- +MIICFTCCAZugAwIBAgIQPZg7pmY9kGP3fiZXOATvADAKBggqhkjOPQQDAzBMMS4w +LAYDVQQDDCVBdG9zIFRydXN0ZWRSb290IFJvb3QgQ0EgRUNDIFRMUyAyMDIxMQ0w +CwYDVQQKDARBdG9zMQswCQYDVQQGEwJERTAeFw0yMTA0MjIwOTI2MjNaFw00MTA0 +MTcwOTI2MjJaMEwxLjAsBgNVBAMMJUF0b3MgVHJ1c3RlZFJvb3QgUm9vdCBDQSBF +Q0MgVExTIDIwMjExDTALBgNVBAoMBEF0b3MxCzAJBgNVBAYTAkRFMHYwEAYHKoZI +zj0CAQYFK4EEACIDYgAEloZYKDcKZ9Cg3iQZGeHkBQcfl+3oZIK59sRxUM6KDP/X +tXa7oWyTbIOiaG6l2b4siJVBzV3dscqDY4PMwL502eCdpO5KTlbgmClBk1IQ1SQ4 +AjJn8ZQSb+/Xxd4u/RmAo0IwQDAPBgNVHRMBAf8EBTADAQH/MB0GA1UdDgQWBBR2 +KCXWfeBmmnoJsmo7jjPXNtNPojAOBgNVHQ8BAf8EBAMCAYYwCgYIKoZIzj0EAwMD +aAAwZQIwW5kp85wxtolrbNa9d+F851F+uDrNozZffPc8dz7kUK2o59JZDCaOMDtu +CCrCp1rIAjEAmeMM56PDr9NJLkaCI2ZdyQAUEv049OGYa3cpetskz2VAv9LcjBHo +9H1/IISpQuQo +-----END CERTIFICATE----- + +# Issuer: CN=Atos TrustedRoot Root CA RSA TLS 2021 O=Atos +# Subject: CN=Atos TrustedRoot Root CA RSA TLS 2021 O=Atos +# Label: "Atos TrustedRoot Root CA RSA TLS 2021" +# Serial: 111436099570196163832749341232207667876 +# MD5 Fingerprint: d4:d3:46:b8:9a:c0:9c:76:5d:9e:3a:c3:b9:99:31:d2 +# SHA1 Fingerprint: 18:52:3b:0d:06:37:e4:d6:3a:df:23:e4:98:fb:5b:16:fb:86:74:48 +# SHA256 Fingerprint: 81:a9:08:8e:a5:9f:b3:64:c5:48:a6:f8:55:59:09:9b:6f:04:05:ef:bf:18:e5:32:4e:c9:f4:57:ba:00:11:2f +-----BEGIN CERTIFICATE----- +MIIFZDCCA0ygAwIBAgIQU9XP5hmTC/srBRLYwiqipDANBgkqhkiG9w0BAQwFADBM +MS4wLAYDVQQDDCVBdG9zIFRydXN0ZWRSb290IFJvb3QgQ0EgUlNBIFRMUyAyMDIx +MQ0wCwYDVQQKDARBdG9zMQswCQYDVQQGEwJERTAeFw0yMTA0MjIwOTIxMTBaFw00 +MTA0MTcwOTIxMDlaMEwxLjAsBgNVBAMMJUF0b3MgVHJ1c3RlZFJvb3QgUm9vdCBD +QSBSU0EgVExTIDIwMjExDTALBgNVBAoMBEF0b3MxCzAJBgNVBAYTAkRFMIICIjAN +BgkqhkiG9w0BAQEFAAOCAg8AMIICCgKCAgEAtoAOxHm9BYx9sKOdTSJNy/BBl01Z +4NH+VoyX8te9j2y3I49f1cTYQcvyAh5x5en2XssIKl4w8i1mx4QbZFc4nXUtVsYv +Ye+W/CBGvevUez8/fEc4BKkbqlLfEzfTFRVOvV98r61jx3ncCHvVoOX3W3WsgFWZ +kmGbzSoXfduP9LVq6hdKZChmFSlsAvFr1bqjM9xaZ6cF4r9lthawEO3NUDPJcFDs +GY6wx/J0W2tExn2WuZgIWWbeKQGb9Cpt0xU6kGpn8bRrZtkh68rZYnxGEFzedUln +nkL5/nWpo63/dgpnQOPF943HhZpZnmKaau1Fh5hnstVKPNe0OwANwI8f4UDErmwh +3El+fsqyjW22v5MvoVw+j8rtgI5Y4dtXz4U2OLJxpAmMkokIiEjxQGMYsluMWuPD +0xeqqxmjLBvk1cbiZnrXghmmOxYsL3GHX0WelXOTwkKBIROW1527k2gV+p2kHYzy +geBYBr3JtuP2iV2J+axEoctr+hbxx1A9JNr3w+SH1VbxT5Aw+kUJWdo0zuATHAR8 +ANSbhqRAvNncTFd+rrcztl524WWLZt+NyteYr842mIycg5kDcPOvdO3GDjbnvezB +c6eUWsuSZIKmAMFwoW4sKeFYV+xafJlrJaSQOoD0IJ2azsct+bJLKZWD6TWNp0lI +pw9MGZHQ9b8Q4HECAwEAAaNCMEAwDwYDVR0TAQH/BAUwAwEB/zAdBgNVHQ4EFgQU +dEmZ0f+0emhFdcN+tNzMzjkz2ggwDgYDVR0PAQH/BAQDAgGGMA0GCSqGSIb3DQEB +DAUAA4ICAQAjQ1MkYlxt/T7Cz1UAbMVWiLkO3TriJQ2VSpfKgInuKs1l+NsW4AmS +4BjHeJi78+xCUvuppILXTdiK/ORO/auQxDh1MoSf/7OwKwIzNsAQkG8dnK/haZPs +o0UvFJ/1TCplQ3IM98P4lYsU84UgYt1UU90s3BiVaU+DR3BAM1h3Egyi61IxHkzJ +qM7F78PRreBrAwA0JrRUITWXAdxfG/F851X6LWh3e9NpzNMOa7pNdkTWwhWaJuyw +xfW70Xp0wmzNxbVe9kzmWy2B27O3Opee7c9GslA9hGCZcbUztVdF5kJHdWoOsAgM +rr3e97sPWD2PAzHoPYJQyi9eDF20l74gNAf0xBLh7tew2VktafcxBPTy+av5EzH4 +AXcOPUIjJsyacmdRIXrMPIWo6iFqO9taPKU0nprALN+AnCng33eU0aKAQv9qTFsR +0PXNor6uzFFcw9VUewyu1rkGd4Di7wcaaMxZUa1+XGdrudviB0JbuAEFWDlN5LuY +o7Ey7Nmj1m+UI/87tyll5gfp77YZ6ufCOB0yiJA8EytuzO+rdwY0d4RPcuSBhPm5 +dDTedk+SKlOxJTnbPP/lPqYO5Wue/9vsL3SD3460s6neFE3/MaNFcyT6lSnMEpcE +oji2jbDwN/zIIX8/syQbPYtuzE2wFg2WHYMfRsCbvUOZ58SWLs5fyQ== +-----END CERTIFICATE----- + +# Issuer: CN=TrustAsia Global Root CA G3 O=TrustAsia Technologies, Inc. +# Subject: CN=TrustAsia Global Root CA G3 O=TrustAsia Technologies, Inc. +# Label: "TrustAsia Global Root CA G3" +# Serial: 576386314500428537169965010905813481816650257167 +# MD5 Fingerprint: 30:42:1b:b7:bb:81:75:35:e4:16:4f:53:d2:94:de:04 +# SHA1 Fingerprint: 63:cf:b6:c1:27:2b:56:e4:88:8e:1c:23:9a:b6:2e:81:47:24:c3:c7 +# SHA256 Fingerprint: e0:d3:22:6a:eb:11:63:c2:e4:8f:f9:be:3b:50:b4:c6:43:1b:e7:bb:1e:ac:c5:c3:6b:5d:5e:c5:09:03:9a:08 +-----BEGIN CERTIFICATE----- +MIIFpTCCA42gAwIBAgIUZPYOZXdhaqs7tOqFhLuxibhxkw8wDQYJKoZIhvcNAQEM +BQAwWjELMAkGA1UEBhMCQ04xJTAjBgNVBAoMHFRydXN0QXNpYSBUZWNobm9sb2dp +ZXMsIEluYy4xJDAiBgNVBAMMG1RydXN0QXNpYSBHbG9iYWwgUm9vdCBDQSBHMzAe +Fw0yMTA1MjAwMjEwMTlaFw00NjA1MTkwMjEwMTlaMFoxCzAJBgNVBAYTAkNOMSUw +IwYDVQQKDBxUcnVzdEFzaWEgVGVjaG5vbG9naWVzLCBJbmMuMSQwIgYDVQQDDBtU +cnVzdEFzaWEgR2xvYmFsIFJvb3QgQ0EgRzMwggIiMA0GCSqGSIb3DQEBAQUAA4IC +DwAwggIKAoICAQDAMYJhkuSUGwoqZdC+BqmHO1ES6nBBruL7dOoKjbmzTNyPtxNS +T1QY4SxzlZHFZjtqz6xjbYdT8PfxObegQ2OwxANdV6nnRM7EoYNl9lA+sX4WuDqK +AtCWHwDNBSHvBm3dIZwZQ0WhxeiAysKtQGIXBsaqvPPW5vxQfmZCHzyLpnl5hkA1 +nyDvP+uLRx+PjsXUjrYsyUQE49RDdT/VP68czH5GX6zfZBCK70bwkPAPLfSIC7Ep +qq+FqklYqL9joDiR5rPmd2jE+SoZhLsO4fWvieylL1AgdB4SQXMeJNnKziyhWTXA +yB1GJ2Faj/lN03J5Zh6fFZAhLf3ti1ZwA0pJPn9pMRJpxx5cynoTi+jm9WAPzJMs +hH/x/Gr8m0ed262IPfN2dTPXS6TIi/n1Q1hPy8gDVI+lhXgEGvNz8teHHUGf59gX +zhqcD0r83ERoVGjiQTz+LISGNzzNPy+i2+f3VANfWdP3kXjHi3dqFuVJhZBFcnAv +kV34PmVACxmZySYgWmjBNb9Pp1Hx2BErW+Canig7CjoKH8GB5S7wprlppYiU5msT +f9FkPz2ccEblooV7WIQn3MSAPmeamseaMQ4w7OYXQJXZRe0Blqq/DPNL0WP3E1jA +uPP6Z92bfW1K/zJMtSU7/xxnD4UiWQWRkUF3gdCFTIcQcf+eQxuulXUtgQIDAQAB +o2MwYTAPBgNVHRMBAf8EBTADAQH/MB8GA1UdIwQYMBaAFEDk5PIj7zjKsK5Xf/Ih +MBY027ySMB0GA1UdDgQWBBRA5OTyI+84yrCuV3/yITAWNNu8kjAOBgNVHQ8BAf8E +BAMCAQYwDQYJKoZIhvcNAQEMBQADggIBACY7UeFNOPMyGLS0XuFlXsSUT9SnYaP4 +wM8zAQLpw6o1D/GUE3d3NZ4tVlFEbuHGLige/9rsR82XRBf34EzC4Xx8MnpmyFq2 +XFNFV1pF1AWZLy4jVe5jaN/TG3inEpQGAHUNcoTpLrxaatXeL1nHo+zSh2bbt1S1 +JKv0Q3jbSwTEb93mPmY+KfJLaHEih6D4sTNjduMNhXJEIlU/HHzp/LgV6FL6qj6j +ITk1dImmasI5+njPtqzn59ZW/yOSLlALqbUHM/Q4X6RJpstlcHboCoWASzY9M/eV +VHUl2qzEc4Jl6VL1XP04lQJqaTDFHApXB64ipCz5xUG3uOyfT0gA+QEEVcys+TIx +xHWVBqB/0Y0n3bOppHKH/lmLmnp0Ft0WpWIp6zqW3IunaFnT63eROfjXy9mPX1on +AX1daBli2MjN9LdyR75bl87yraKZk62Uy5P2EgmVtqvXO9A/EcswFi55gORngS1d +7XB4tmBZrOFdRWOPyN9yaFvqHbgB8X7754qz41SgOAngPN5C8sLtLpvzHzW2Ntjj +gKGLzZlkD8Kqq7HK9W+eQ42EVJmzbsASZthwEPEGNTNDqJwuuhQxzhB/HIbjj9LV ++Hfsm6vxL2PZQl/gZ4FkkfGXL/xuJvYz+NO1+MRiqzFRJQJ6+N1rZdVtTTDIZbpo +FGWsJwt0ivKH +-----END CERTIFICATE----- + +# Issuer: CN=TrustAsia Global Root CA G4 O=TrustAsia Technologies, Inc. +# Subject: CN=TrustAsia Global Root CA G4 O=TrustAsia Technologies, Inc. +# Label: "TrustAsia Global Root CA G4" +# Serial: 451799571007117016466790293371524403291602933463 +# MD5 Fingerprint: 54:dd:b2:d7:5f:d8:3e:ed:7c:e0:0b:2e:cc:ed:eb:eb +# SHA1 Fingerprint: 57:73:a5:61:5d:80:b2:e6:ac:38:82:fc:68:07:31:ac:9f:b5:92:5a +# SHA256 Fingerprint: be:4b:56:cb:50:56:c0:13:6a:52:6d:f4:44:50:8d:aa:36:a0:b5:4f:42:e4:ac:38:f7:2a:f4:70:e4:79:65:4c +-----BEGIN CERTIFICATE----- +MIICVTCCAdygAwIBAgIUTyNkuI6XY57GU4HBdk7LKnQV1tcwCgYIKoZIzj0EAwMw +WjELMAkGA1UEBhMCQ04xJTAjBgNVBAoMHFRydXN0QXNpYSBUZWNobm9sb2dpZXMs +IEluYy4xJDAiBgNVBAMMG1RydXN0QXNpYSBHbG9iYWwgUm9vdCBDQSBHNDAeFw0y +MTA1MjAwMjEwMjJaFw00NjA1MTkwMjEwMjJaMFoxCzAJBgNVBAYTAkNOMSUwIwYD +VQQKDBxUcnVzdEFzaWEgVGVjaG5vbG9naWVzLCBJbmMuMSQwIgYDVQQDDBtUcnVz +dEFzaWEgR2xvYmFsIFJvb3QgQ0EgRzQwdjAQBgcqhkjOPQIBBgUrgQQAIgNiAATx +s8045CVD5d4ZCbuBeaIVXxVjAd7Cq92zphtnS4CDr5nLrBfbK5bKfFJV4hrhPVbw +LxYI+hW8m7tH5j/uqOFMjPXTNvk4XatwmkcN4oFBButJ+bAp3TPsUKV/eSm4IJij +YzBhMA8GA1UdEwEB/wQFMAMBAf8wHwYDVR0jBBgwFoAUpbtKl86zK3+kMd6Xg1mD +pm9xy94wHQYDVR0OBBYEFKW7SpfOsyt/pDHel4NZg6ZvccveMA4GA1UdDwEB/wQE +AwIBBjAKBggqhkjOPQQDAwNnADBkAjBe8usGzEkxn0AAbbd+NvBNEU/zy4k6LHiR +UKNbwMp1JvK/kF0LgoxgKJ/GcJpo5PECMFxYDlZ2z1jD1xCMuo6u47xkdUfFVZDj +/bpV6wfEU6s3qe4hsiFbYI89MvHVI5TWWA== +-----END CERTIFICATE----- + +# Issuer: CN=Telekom Security TLS ECC Root 2020 O=Deutsche Telekom Security GmbH +# Subject: CN=Telekom Security TLS ECC Root 2020 O=Deutsche Telekom Security GmbH +# Label: "Telekom Security TLS ECC Root 2020" +# Serial: 72082518505882327255703894282316633856 +# MD5 Fingerprint: c1:ab:fe:6a:10:2c:03:8d:bc:1c:22:32:c0:85:a7:fd +# SHA1 Fingerprint: c0:f8:96:c5:a9:3b:01:06:21:07:da:18:42:48:bc:e9:9d:88:d5:ec +# SHA256 Fingerprint: 57:8a:f4:de:d0:85:3f:4e:59:98:db:4a:ea:f9:cb:ea:8d:94:5f:60:b6:20:a3:8d:1a:3c:13:b2:bc:7b:a8:e1 +-----BEGIN CERTIFICATE----- +MIICQjCCAcmgAwIBAgIQNjqWjMlcsljN0AFdxeVXADAKBggqhkjOPQQDAzBjMQsw +CQYDVQQGEwJERTEnMCUGA1UECgweRGV1dHNjaGUgVGVsZWtvbSBTZWN1cml0eSBH +bWJIMSswKQYDVQQDDCJUZWxla29tIFNlY3VyaXR5IFRMUyBFQ0MgUm9vdCAyMDIw +MB4XDTIwMDgyNTA3NDgyMFoXDTQ1MDgyNTIzNTk1OVowYzELMAkGA1UEBhMCREUx +JzAlBgNVBAoMHkRldXRzY2hlIFRlbGVrb20gU2VjdXJpdHkgR21iSDErMCkGA1UE +AwwiVGVsZWtvbSBTZWN1cml0eSBUTFMgRUNDIFJvb3QgMjAyMDB2MBAGByqGSM49 +AgEGBSuBBAAiA2IABM6//leov9Wq9xCazbzREaK9Z0LMkOsVGJDZos0MKiXrPk/O +tdKPD/M12kOLAoC+b1EkHQ9rK8qfwm9QMuU3ILYg/4gND21Ju9sGpIeQkpT0CdDP +f8iAC8GXs7s1J8nCG6NCMEAwHQYDVR0OBBYEFONyzG6VmUex5rNhTNHLq+O6zd6f +MA8GA1UdEwEB/wQFMAMBAf8wDgYDVR0PAQH/BAQDAgEGMAoGCCqGSM49BAMDA2cA +MGQCMHVSi7ekEE+uShCLsoRbQuHmKjYC2qBuGT8lv9pZMo7k+5Dck2TOrbRBR2Di +z6fLHgIwN0GMZt9Ba9aDAEH9L1r3ULRn0SyocddDypwnJJGDSA3PzfdUga/sf+Rn +27iQ7t0l +-----END CERTIFICATE----- + +# Issuer: CN=Telekom Security TLS RSA Root 2023 O=Deutsche Telekom Security GmbH +# Subject: CN=Telekom Security TLS RSA Root 2023 O=Deutsche Telekom Security GmbH +# Label: "Telekom Security TLS RSA Root 2023" +# Serial: 44676229530606711399881795178081572759 +# MD5 Fingerprint: bf:5b:eb:54:40:cd:48:71:c4:20:8d:7d:de:0a:42:f2 +# SHA1 Fingerprint: 54:d3:ac:b3:bd:57:56:f6:85:9d:ce:e5:c3:21:e2:d4:ad:83:d0:93 +# SHA256 Fingerprint: ef:c6:5c:ad:bb:59:ad:b6:ef:e8:4d:a2:23:11:b3:56:24:b7:1b:3b:1e:a0:da:8b:66:55:17:4e:c8:97:86:46 +-----BEGIN CERTIFICATE----- +MIIFszCCA5ugAwIBAgIQIZxULej27HF3+k7ow3BXlzANBgkqhkiG9w0BAQwFADBj +MQswCQYDVQQGEwJERTEnMCUGA1UECgweRGV1dHNjaGUgVGVsZWtvbSBTZWN1cml0 +eSBHbWJIMSswKQYDVQQDDCJUZWxla29tIFNlY3VyaXR5IFRMUyBSU0EgUm9vdCAy +MDIzMB4XDTIzMDMyODEyMTY0NVoXDTQ4MDMyNzIzNTk1OVowYzELMAkGA1UEBhMC +REUxJzAlBgNVBAoMHkRldXRzY2hlIFRlbGVrb20gU2VjdXJpdHkgR21iSDErMCkG +A1UEAwwiVGVsZWtvbSBTZWN1cml0eSBUTFMgUlNBIFJvb3QgMjAyMzCCAiIwDQYJ +KoZIhvcNAQEBBQADggIPADCCAgoCggIBAO01oYGA88tKaVvC+1GDrib94W7zgRJ9 +cUD/h3VCKSHtgVIs3xLBGYSJwb3FKNXVS2xE1kzbB5ZKVXrKNoIENqil/Cf2SfHV +cp6R+SPWcHu79ZvB7JPPGeplfohwoHP89v+1VmLhc2o0mD6CuKyVU/QBoCcHcqMA +U6DksquDOFczJZSfvkgdmOGjup5czQRxUX11eKvzWarE4GC+j4NSuHUaQTXtvPM6 +Y+mpFEXX5lLRbtLevOP1Czvm4MS9Q2QTps70mDdsipWol8hHD/BeEIvnHRz+sTug +BTNoBUGCwQMrAcjnj02r6LX2zWtEtefdi+zqJbQAIldNsLGyMcEWzv/9FIS3R/qy +8XDe24tsNlikfLMR0cN3f1+2JeANxdKz+bi4d9s3cXFH42AYTyS2dTd4uaNir73J +co4vzLuu2+QVUhkHM/tqty1LkCiCc/4YizWN26cEar7qwU02OxY2kTLvtkCJkUPg +8qKrBC7m8kwOFjQgrIfBLX7JZkcXFBGk8/ehJImr2BrIoVyxo/eMbcgByU/J7MT8 +rFEz0ciD0cmfHdRHNCk+y7AO+oMLKFjlKdw/fKifybYKu6boRhYPluV75Gp6SG12 +mAWl3G0eQh5C2hrgUve1g8Aae3g1LDj1H/1Joy7SWWO/gLCMk3PLNaaZlSJhZQNg ++y+TS/qanIA7AgMBAAGjYzBhMA4GA1UdDwEB/wQEAwIBBjAdBgNVHQ4EFgQUtqeX +gj10hZv3PJ+TmpV5dVKMbUcwDwYDVR0TAQH/BAUwAwEB/zAfBgNVHSMEGDAWgBS2 +p5eCPXSFm/c8n5OalXl1UoxtRzANBgkqhkiG9w0BAQwFAAOCAgEAqMxhpr51nhVQ +pGv7qHBFfLp+sVr8WyP6Cnf4mHGCDG3gXkaqk/QeoMPhk9tLrbKmXauw1GLLXrtm +9S3ul0A8Yute1hTWjOKWi0FpkzXmuZlrYrShF2Y0pmtjxrlO8iLpWA1WQdH6DErw +M807u20hOq6OcrXDSvvpfeWxm4bu4uB9tPcy/SKE8YXJN3nptT+/XOR0so8RYgDd +GGah2XsjX/GO1WfoVNpbOms2b/mBsTNHM3dA+VKq3dSDz4V4mZqTuXNnQkYRIer+ +CqkbGmVps4+uFrb2S1ayLfmlyOw7YqPta9BO1UAJpB+Y1zqlklkg5LB9zVtzaL1t +xKITDmcZuI1CfmwMmm6gJC3VRRvcxAIU/oVbZZfKTpBQCHpCNfnqwmbU+AGuHrS+ +w6jv/naaoqYfRvaE7fzbzsQCzndILIyy7MMAo+wsVRjBfhnu4S/yrYObnqsZ38aK +L4x35bcF7DvB7L6Gs4a8wPfc5+pbrrLMtTWGS9DiP7bY+A4A7l3j941Y/8+LN+lj +X273CXE2whJdV/LItM3z7gLfEdxquVeEHVlNjM7IDiPCtyaaEBRx/pOyiriA8A4Q +ntOoUAw3gi/q4Iqd4Sw5/7W0cwDk90imc6y/st53BIe0o82bNSQ3+pCTE4FCxpgm +dTdmQRCsu/WU48IxK63nI1bMNSWSs1A= +-----END CERTIFICATE----- + +# Issuer: CN=TWCA CYBER Root CA O=TAIWAN-CA OU=Root CA +# Subject: CN=TWCA CYBER Root CA O=TAIWAN-CA OU=Root CA +# Label: "TWCA CYBER Root CA" +# Serial: 85076849864375384482682434040119489222 +# MD5 Fingerprint: 0b:33:a0:97:52:95:d4:a9:fd:bb:db:6e:a3:55:5b:51 +# SHA1 Fingerprint: f6:b1:1c:1a:83:38:e9:7b:db:b3:a8:c8:33:24:e0:2d:9c:7f:26:66 +# SHA256 Fingerprint: 3f:63:bb:28:14:be:17:4e:c8:b6:43:9c:f0:8d:6d:56:f0:b7:c4:05:88:3a:56:48:a3:34:42:4d:6b:3e:c5:58 +-----BEGIN CERTIFICATE----- +MIIFjTCCA3WgAwIBAgIQQAE0jMIAAAAAAAAAATzyxjANBgkqhkiG9w0BAQwFADBQ +MQswCQYDVQQGEwJUVzESMBAGA1UEChMJVEFJV0FOLUNBMRAwDgYDVQQLEwdSb290 +IENBMRswGQYDVQQDExJUV0NBIENZQkVSIFJvb3QgQ0EwHhcNMjIxMTIyMDY1NDI5 +WhcNNDcxMTIyMTU1OTU5WjBQMQswCQYDVQQGEwJUVzESMBAGA1UEChMJVEFJV0FO +LUNBMRAwDgYDVQQLEwdSb290IENBMRswGQYDVQQDExJUV0NBIENZQkVSIFJvb3Qg +Q0EwggIiMA0GCSqGSIb3DQEBAQUAA4ICDwAwggIKAoICAQDG+Moe2Qkgfh1sTs6P +40czRJzHyWmqOlt47nDSkvgEs1JSHWdyKKHfi12VCv7qze33Kc7wb3+szT3vsxxF +avcokPFhV8UMxKNQXd7UtcsZyoC5dc4pztKFIuwCY8xEMCDa6pFbVuYdHNWdZsc/ +34bKS1PE2Y2yHer43CdTo0fhYcx9tbD47nORxc5zb87uEB8aBs/pJ2DFTxnk684i +JkXXYJndzk834H/nY62wuFm40AZoNWDTNq5xQwTxaWV4fPMf88oon1oglWa0zbfu +j3ikRRjpJi+NmykosaS3Om251Bw4ckVYsV7r8Cibt4LK/c/WMw+f+5eesRycnupf +Xtuq3VTpMCEobY5583WSjCb+3MX2w7DfRFlDo7YDKPYIMKoNM+HvnKkHIuNZW0CP +2oi3aQiotyMuRAlZN1vH4xfyIutuOVLF3lSnmMlLIJXcRolftBL5hSmO68gnFSDA +S9TMfAxsNAwmmyYxpjyn9tnQS6Jk/zuZQXLB4HCX8SS7K8R0IrGsayIyJNN4KsDA +oS/xUgXJP+92ZuJF2A09rZXIx4kmyA+upwMu+8Ff+iDhcK2wZSA3M2Cw1a/XDBzC +kHDXShi8fgGwsOsVHkQGzaRP6AzRwyAQ4VRlnrZR0Bp2a0JaWHY06rc3Ga4udfmW +5cFZ95RXKSWNOkyrTZpB0F8mAwIDAQABo2MwYTAOBgNVHQ8BAf8EBAMCAQYwDwYD +VR0TAQH/BAUwAwEB/zAfBgNVHSMEGDAWgBSdhWEUfMFib5do5E83QOGt4A1WNzAd +BgNVHQ4EFgQUnYVhFHzBYm+XaORPN0DhreANVjcwDQYJKoZIhvcNAQEMBQADggIB +AGSPesRiDrWIzLjHhg6hShbNcAu3p4ULs3a2D6f/CIsLJc+o1IN1KriWiLb73y0t +tGlTITVX1olNc79pj3CjYcya2x6a4CD4bLubIp1dhDGaLIrdaqHXKGnK/nZVekZn +68xDiBaiA9a5F/gZbG0jAn/xX9AKKSM70aoK7akXJlQKTcKlTfjF/biBzysseKNn +TKkHmvPfXvt89YnNdJdhEGoHK4Fa0o635yDRIG4kqIQnoVesqlVYL9zZyvpoBJ7t +RCT5dEA7IzOrg1oYJkK2bVS1FmAwbLGg+LhBoF1JSdJlBTrq/p1hvIbZv97Tujqx +f36SNI7JAG7cmL3c7IAFrQI932XtCwP39xaEBDG6k5TY8hL4iuO/Qq+n1M0RFxbI +Qh0UqEL20kCGoE8jypZFVmAGzbdVAaYBlGX+bgUJurSkquLvWL69J1bY73NxW0Qz +8ppy6rBePm6pUlvscG21h483XjyMnM7k8M4MZ0HMzvaAq07MTFb1wWFZk7Q+ptq4 +NxKfKjLji7gh7MMrZQzvIt6IKTtM1/r+t+FHvpw+PoP7UV31aPcuIYXcv/Fa4nzX +xeSDwWrruoBa3lwtcHb4yOWHh8qgnaHlIhInD0Q9HWzq1MKLL295q39QpsQZp6F6 +t5b5wR9iWqJDB0BeJsas7a5wFsWqynKKTbDPAYsDP27X +-----END CERTIFICATE----- + +# Issuer: CN=SecureSign Root CA14 O=Cybertrust Japan Co., Ltd. +# Subject: CN=SecureSign Root CA14 O=Cybertrust Japan Co., Ltd. +# Label: "SecureSign Root CA14" +# Serial: 575790784512929437950770173562378038616896959179 +# MD5 Fingerprint: 71:0d:72:fa:92:19:65:5e:89:04:ac:16:33:f0:bc:d5 +# SHA1 Fingerprint: dd:50:c0:f7:79:b3:64:2e:74:a2:b8:9d:9f:d3:40:dd:bb:f0:f2:4f +# SHA256 Fingerprint: 4b:00:9c:10:34:49:4f:9a:b5:6b:ba:3b:a1:d6:27:31:fc:4d:20:d8:95:5a:dc:ec:10:a9:25:60:72:61:e3:38 +-----BEGIN CERTIFICATE----- +MIIFcjCCA1qgAwIBAgIUZNtaDCBO6Ncpd8hQJ6JaJ90t8sswDQYJKoZIhvcNAQEM +BQAwUTELMAkGA1UEBhMCSlAxIzAhBgNVBAoTGkN5YmVydHJ1c3QgSmFwYW4gQ28u +LCBMdGQuMR0wGwYDVQQDExRTZWN1cmVTaWduIFJvb3QgQ0ExNDAeFw0yMDA0MDgw +NzA2MTlaFw00NTA0MDgwNzA2MTlaMFExCzAJBgNVBAYTAkpQMSMwIQYDVQQKExpD +eWJlcnRydXN0IEphcGFuIENvLiwgTHRkLjEdMBsGA1UEAxMUU2VjdXJlU2lnbiBS +b290IENBMTQwggIiMA0GCSqGSIb3DQEBAQUAA4ICDwAwggIKAoICAQDF0nqh1oq/ +FjHQmNE6lPxauG4iwWL3pwon71D2LrGeaBLwbCRjOfHw3xDG3rdSINVSW0KZnvOg +vlIfX8xnbacuUKLBl422+JX1sLrcneC+y9/3OPJH9aaakpUqYllQC6KxNedlsmGy +6pJxaeQp8E+BgQQ8sqVb1MWoWWd7VRxJq3qdwudzTe/NCcLEVxLbAQ4jeQkHO6Lo +/IrPj8BGJJw4J+CDnRugv3gVEOuGTgpa/d/aLIJ+7sr2KeH6caH3iGicnPCNvg9J +kdjqOvn90Ghx2+m1K06Ckm9mH+Dw3EzsytHqunQG+bOEkJTRX45zGRBdAuVwpcAQ +0BB8b8VYSbSwbprafZX1zNoCr7gsfXmPvkPx+SgojQlD+Ajda8iLLCSxjVIHvXib +y8posqTdDEx5YMaZ0ZPxMBoH064iwurO8YQJzOAUbn8/ftKChazcqRZOhaBgy/ac +18izju3Gm5h1DVXoX+WViwKkrkMpKBGk5hIwAUt1ax5mnXkvpXYvHUC0bcl9eQjs +0Wq2XSqypWa9a4X0dFbD9ed1Uigspf9mR6XU/v6eVL9lfgHWMI+lNpyiUBzuOIAB +SMbHdPTGrMNASRZhdCyvjG817XsYAFs2PJxQDcqSMxDxJklt33UkN4Ii1+iW/RVL +ApY+B3KVfqs9TC7XyvDf4Fg/LS8EmjijAQIDAQABo0IwQDAPBgNVHRMBAf8EBTAD +AQH/MA4GA1UdDwEB/wQEAwIBBjAdBgNVHQ4EFgQUBpOjCl4oaTeqYR3r6/wtbyPk +86AwDQYJKoZIhvcNAQEMBQADggIBAJaAcgkGfpzMkwQWu6A6jZJOtxEaCnFxEM0E +rX+lRVAQZk5KQaID2RFPeje5S+LGjzJmdSX7684/AykmjbgWHfYfM25I5uj4V7Ib +ed87hwriZLoAymzvftAj63iP/2SbNDefNWWipAA9EiOWWF3KY4fGoweITedpdopT +zfFP7ELyk+OZpDc8h7hi2/DsHzc/N19DzFGdtfCXwreFamgLRB7lUe6TzktuhsHS +DCRZNhqfLJGP4xjblJUK7ZGqDpncllPjYYPGFrojutzdfhrGe0K22VoF3Jpf1d+4 +2kd92jjbrDnVHmtsKheMYc2xbXIBw8MgAGJoFjHVdqqGuw6qnsb58Nn4DSEC5MUo +FlkRudlpcyqSeLiSV5sI8jrlL5WwWLdrIBRtFO8KvH7YVdiI2i/6GaX7i+B/OfVy +K4XELKzvGUWSTLNhB9xNH27SgRNcmvMSZ4PPmz+Ln52kuaiWA3rF7iDeM9ovnhp6 +dB7h7sxaOgTdsxoEqBRjrLdHEoOabPXm6RUVkRqEGQ6UROcSjiVbgGcZ3GOTEAtl +Lor6CZpO2oYofaphNdgOpygau1LgePhsumywbrmHXumZNTfxPWQrqaA0k89jL9WB +365jJ6UeTo3cKXhZ+PmhIIynJkBugnLNeLLIjzwec+fBH7/PzqUqm9tEZDKgu39c +JRNItX+S +-----END CERTIFICATE----- + +# Issuer: CN=SecureSign Root CA15 O=Cybertrust Japan Co., Ltd. +# Subject: CN=SecureSign Root CA15 O=Cybertrust Japan Co., Ltd. +# Label: "SecureSign Root CA15" +# Serial: 126083514594751269499665114766174399806381178503 +# MD5 Fingerprint: 13:30:fc:c4:62:a6:a9:de:b5:c1:68:af:b5:d2:31:47 +# SHA1 Fingerprint: cb:ba:83:c8:c1:5a:5d:f1:f9:73:6f:ca:d7:ef:28:13:06:4a:07:7d +# SHA256 Fingerprint: e7:78:f0:f0:95:fe:84:37:29:cd:1a:00:82:17:9e:53:14:a9:c2:91:44:28:05:e1:fb:1d:8f:b6:b8:88:6c:3a +-----BEGIN CERTIFICATE----- +MIICIzCCAamgAwIBAgIUFhXHw9hJp75pDIqI7fBw+d23PocwCgYIKoZIzj0EAwMw +UTELMAkGA1UEBhMCSlAxIzAhBgNVBAoTGkN5YmVydHJ1c3QgSmFwYW4gQ28uLCBM +dGQuMR0wGwYDVQQDExRTZWN1cmVTaWduIFJvb3QgQ0ExNTAeFw0yMDA0MDgwODMy +NTZaFw00NTA0MDgwODMyNTZaMFExCzAJBgNVBAYTAkpQMSMwIQYDVQQKExpDeWJl +cnRydXN0IEphcGFuIENvLiwgTHRkLjEdMBsGA1UEAxMUU2VjdXJlU2lnbiBSb290 +IENBMTUwdjAQBgcqhkjOPQIBBgUrgQQAIgNiAAQLUHSNZDKZmbPSYAi4Io5GdCx4 +wCtELW1fHcmuS1Iggz24FG1Th2CeX2yF2wYUleDHKP+dX+Sq8bOLbe1PL0vJSpSR +ZHX+AezB2Ot6lHhWGENfa4HL9rzatAy2KZMIaY+jQjBAMA8GA1UdEwEB/wQFMAMB +Af8wDgYDVR0PAQH/BAQDAgEGMB0GA1UdDgQWBBTrQciu/NWeUUj1vYv0hyCTQSvT +9DAKBggqhkjOPQQDAwNoADBlAjEA2S6Jfl5OpBEHvVnCB96rMjhTKkZEBhd6zlHp +4P9mLQlO4E/0BdGF9jVg3PVys0Z9AjBEmEYagoUeYWmJSwdLZrWeqrqgHkHZAXQ6 +bkU6iYAZezKYVWOr62Nuk22rGwlgMU4= +-----END CERTIFICATE----- + +# Issuer: CN=D-TRUST BR Root CA 2 2023 O=D-Trust GmbH +# Subject: CN=D-TRUST BR Root CA 2 2023 O=D-Trust GmbH +# Label: "D-TRUST BR Root CA 2 2023" +# Serial: 153168538924886464690566649552453098598 +# MD5 Fingerprint: e1:09:ed:d3:60:d4:56:1b:47:1f:b7:0c:5f:1b:5f:85 +# SHA1 Fingerprint: 2d:b0:70:ee:71:94:af:69:68:17:db:79:ce:58:9f:a0:6b:96:f7:87 +# SHA256 Fingerprint: 05:52:e6:f8:3f:df:65:e8:fa:96:70:e6:66:df:28:a4:e2:13:40:b5:10:cb:e5:25:66:f9:7c:4f:b9:4b:2b:d1 +-----BEGIN CERTIFICATE----- +MIIFqTCCA5GgAwIBAgIQczswBEhb2U14LnNLyaHcZjANBgkqhkiG9w0BAQ0FADBI +MQswCQYDVQQGEwJERTEVMBMGA1UEChMMRC1UcnVzdCBHbWJIMSIwIAYDVQQDExlE +LVRSVVNUIEJSIFJvb3QgQ0EgMiAyMDIzMB4XDTIzMDUwOTA4NTYzMVoXDTM4MDUw +OTA4NTYzMFowSDELMAkGA1UEBhMCREUxFTATBgNVBAoTDEQtVHJ1c3QgR21iSDEi +MCAGA1UEAxMZRC1UUlVTVCBCUiBSb290IENBIDIgMjAyMzCCAiIwDQYJKoZIhvcN +AQEBBQADggIPADCCAgoCggIBAK7/CVmRgApKaOYkP7in5Mg6CjoWzckjYaCTcfKr +i3OPoGdlYNJUa2NRb0kz4HIHE304zQaSBylSa053bATTlfrdTIzZXcFhfUvnKLNE +gXtRr90zsWh81k5M/itoucpmacTsXld/9w3HnDY25QdgrMBM6ghs7wZ8T1soegj8 +k12b9py0i4a6Ibn08OhZWiihNIQaJZG2tY/vsvmA+vk9PBFy2OMvhnbFeSzBqZCT +Rphny4NqoFAjpzv2gTng7fC5v2Xx2Mt6++9zA84A9H3X4F07ZrjcjrqDy4d2A/wl +2ecjbwb9Z/Pg/4S8R7+1FhhGaRTMBffb00msa8yr5LULQyReS2tNZ9/WtT5PeB+U +cSTq3nD88ZP+npNa5JRal1QMNXtfbO4AHyTsA7oC9Xb0n9Sa7YUsOCIvx9gvdhFP +/Wxc6PWOJ4d/GUohR5AdeY0cW/jPSoXk7bNbjb7EZChdQcRurDhaTyN0dKkSw/bS +uREVMweR2Ds3OmMwBtHFIjYoYiMQ4EbMl6zWK11kJNXuHA7e+whadSr2Y23OC0K+ +0bpwHJwh5Q8xaRfX/Aq03u2AnMuStIv13lmiWAmlY0cL4UEyNEHZmrHZqLAbWt4N +DfTisl01gLmB1IRpkQLLddCNxbU9CZEJjxShFHR5PtbJFR2kWVki3PaKRT08EtY+ +XTIvAgMBAAGjgY4wgYswDwYDVR0TAQH/BAUwAwEB/zAdBgNVHQ4EFgQUZ5Dw1t61 +GNVGKX5cq/ieCLxklRAwDgYDVR0PAQH/BAQDAgEGMEkGA1UdHwRCMEAwPqA8oDqG +OGh0dHA6Ly9jcmwuZC10cnVzdC5uZXQvY3JsL2QtdHJ1c3RfYnJfcm9vdF9jYV8y +XzIwMjMuY3JsMA0GCSqGSIb3DQEBDQUAA4ICAQA097N3U9swFrktpSHxQCF16+tI +FoE9c+CeJyrrd6kTpGoKWloUMz1oH4Guaf2Mn2VsNELZLdB/eBaxOqwjMa1ef67n +riv6uvw8l5VAk1/DLQOj7aRvU9f6QA4w9QAgLABMjDu0ox+2v5Eyq6+SmNMW5tTR +VFxDWy6u71cqqLRvpO8NVhTaIasgdp4D/Ca4nj8+AybmTNudX0KEPUUDAxxZiMrc +LmEkWqTqJwtzEr5SswrPMhfiHocaFpVIbVrg0M8JkiZmkdijYQ6qgYF/6FKC0ULn +4B0Y+qSFNueG4A3rvNTJ1jxD8V1Jbn6Bm2m1iWKPiFLY1/4nwSPFyysCu7Ff/vtD +hQNGvl3GyiEm/9cCnnRK3PgTFbGBVzbLZVzRHTF36SXDw7IyN9XxmAnkbWOACKsG +koHU6XCPpz+y7YaMgmo1yEJagtFSGkUPFaUA8JR7ZSdXOUPPfH/mvTWze/EZTN46 +ls/pdu4D58JDUjxqgejBWoC9EV2Ta/vH5mQ/u2kc6d0li690yVRAysuTEwrt+2aS +Ecr1wPrYg1UDfNPFIkZ1cGt5SAYqgpq/5usWDiJFAbzdNpQ0qTUmiteXue4Icr80 +knCDgKs4qllo3UCkGJCy89UDyibK79XH4I9TjvAA46jtn/mtd+ArY0+ew+43u3gJ +hJ65bvspmZDogNOfJA== +-----END CERTIFICATE----- + +# Issuer: CN=TrustAsia TLS ECC Root CA O=TrustAsia Technologies, Inc. +# Subject: CN=TrustAsia TLS ECC Root CA O=TrustAsia Technologies, Inc. +# Label: "TrustAsia TLS ECC Root CA" +# Serial: 310892014698942880364840003424242768478804666567 +# MD5 Fingerprint: 09:48:04:77:d2:fc:65:93:71:66:b1:11:95:4f:06:8c +# SHA1 Fingerprint: b5:ec:39:f3:a1:66:37:ae:c3:05:94:57:e2:be:11:be:b7:a1:7f:36 +# SHA256 Fingerprint: c0:07:6b:9e:f0:53:1f:b1:a6:56:d6:7c:4e:be:97:cd:5d:ba:a4:1e:f4:45:98:ac:c2:48:98:78:c9:2d:87:11 +-----BEGIN CERTIFICATE----- +MIICMTCCAbegAwIBAgIUNnThTXxlE8msg1UloD5Sfi9QaMcwCgYIKoZIzj0EAwMw +WDELMAkGA1UEBhMCQ04xJTAjBgNVBAoTHFRydXN0QXNpYSBUZWNobm9sb2dpZXMs +IEluYy4xIjAgBgNVBAMTGVRydXN0QXNpYSBUTFMgRUNDIFJvb3QgQ0EwHhcNMjQw +NTE1MDU0MTU2WhcNNDQwNTE1MDU0MTU1WjBYMQswCQYDVQQGEwJDTjElMCMGA1UE +ChMcVHJ1c3RBc2lhIFRlY2hub2xvZ2llcywgSW5jLjEiMCAGA1UEAxMZVHJ1c3RB +c2lhIFRMUyBFQ0MgUm9vdCBDQTB2MBAGByqGSM49AgEGBSuBBAAiA2IABLh/pVs/ +AT598IhtrimY4ZtcU5nb9wj/1WrgjstEpvDBjL1P1M7UiFPoXlfXTr4sP/MSpwDp +guMqWzJ8S5sUKZ74LYO1644xST0mYekdcouJtgq7nDM1D9rs3qlKH8kzsaNCMEAw +DwYDVR0TAQH/BAUwAwEB/zAdBgNVHQ4EFgQULIVTu7FDzTLqnqOH/qKYqKaT6RAw +DgYDVR0PAQH/BAQDAgEGMAoGCCqGSM49BAMDA2gAMGUCMFRH18MtYYZI9HlaVQ01 +L18N9mdsd0AaRuf4aFtOJx24mH1/k78ITcTaRTChD15KeAIxAKORh/IRM4PDwYqR +OkwrULG9IpRdNYlzg8WbGf60oenUoWa2AaU2+dhoYSi3dOGiMQ== +-----END CERTIFICATE----- + +# Issuer: CN=TrustAsia TLS RSA Root CA O=TrustAsia Technologies, Inc. +# Subject: CN=TrustAsia TLS RSA Root CA O=TrustAsia Technologies, Inc. +# Label: "TrustAsia TLS RSA Root CA" +# Serial: 160405846464868906657516898462547310235378010780 +# MD5 Fingerprint: 3b:9e:c3:86:0f:34:3c:6b:c5:46:c4:8e:1d:e7:19:12 +# SHA1 Fingerprint: a5:46:50:c5:62:ea:95:9a:1a:a7:04:6f:17:58:c7:29:53:3d:03:fa +# SHA256 Fingerprint: 06:c0:8d:7d:af:d8:76:97:1e:b1:12:4f:e6:7f:84:7e:c0:c7:a1:58:d3:ea:53:cb:e9:40:e2:ea:97:91:f4:c3 +-----BEGIN CERTIFICATE----- +MIIFgDCCA2igAwIBAgIUHBjYz+VTPyI1RlNUJDxsR9FcSpwwDQYJKoZIhvcNAQEM +BQAwWDELMAkGA1UEBhMCQ04xJTAjBgNVBAoTHFRydXN0QXNpYSBUZWNobm9sb2dp +ZXMsIEluYy4xIjAgBgNVBAMTGVRydXN0QXNpYSBUTFMgUlNBIFJvb3QgQ0EwHhcN +MjQwNTE1MDU0MTU3WhcNNDQwNTE1MDU0MTU2WjBYMQswCQYDVQQGEwJDTjElMCMG +A1UEChMcVHJ1c3RBc2lhIFRlY2hub2xvZ2llcywgSW5jLjEiMCAGA1UEAxMZVHJ1 +c3RBc2lhIFRMUyBSU0EgUm9vdCBDQTCCAiIwDQYJKoZIhvcNAQEBBQADggIPADCC +AgoCggIBAMMWuBtqpERz5dZO9LnPWwvB0ZqB9WOwj0PBuwhaGnrhB3YmH49pVr7+ +NmDQDIPNlOrnxS1cLwUWAp4KqC/lYCZUlviYQB2srp10Zy9U+5RjmOMmSoPGlbYJ +Q1DNDX3eRA5gEk9bNb2/mThtfWza4mhzH/kxpRkQcwUqwzIZheo0qt1CHjCNP561 +HmHVb70AcnKtEj+qpklz8oYVlQwQX1Fkzv93uMltrOXVmPGZLmzjyUT5tUMnCE32 +ft5EebuyjBza00tsLtbDeLdM1aTk2tyKjg7/D8OmYCYozza/+lcK7Fs/6TAWe8Tb +xNRkoDD75f0dcZLdKY9BWN4ArTr9PXwaqLEX8E40eFgl1oUh63kd0Nyrz2I8sMeX +i9bQn9P+PN7F4/w6g3CEIR0JwqH8uyghZVNgepBtljhb//HXeltt08lwSUq6HTrQ +UNoyIBnkiz/r1RYmNzz7dZ6wB3C4FGB33PYPXFIKvF1tjVEK2sUYyJtt3LCDs3+j +TnhMmCWr8n4uIF6CFabW2I+s5c0yhsj55NqJ4js+k8UTav/H9xj8Z7XvGCxUq0DT +bE3txci3OE9kxJRMT6DNrqXGJyV1J23G2pyOsAWZ1SgRxSHUuPzHlqtKZFlhaxP8 +S8ySpg+kUb8OWJDZgoM5pl+z+m6Ss80zDoWo8SnTq1mt1tve1CuBAgMBAAGjQjBA +MA8GA1UdEwEB/wQFMAMBAf8wHQYDVR0OBBYEFLgHkXlcBvRG/XtZylomkadFK/hT +MA4GA1UdDwEB/wQEAwIBBjANBgkqhkiG9w0BAQwFAAOCAgEAIZtqBSBdGBanEqT3 +Rz/NyjuujsCCztxIJXgXbODgcMTWltnZ9r96nBO7U5WS/8+S4PPFJzVXqDuiGev4 +iqME3mmL5Dw8veWv0BIb5Ylrc5tvJQJLkIKvQMKtuppgJFqBTQUYo+IzeXoLH5Pt +7DlK9RME7I10nYEKqG/odv6LTytpEoYKNDbdgptvT+Bz3Ul/KD7JO6NXBNiT2Twp +2xIQaOHEibgGIOcberyxk2GaGUARtWqFVwHxtlotJnMnlvm5P1vQiJ3koP26TpUJ +g3933FEFlJ0gcXax7PqJtZwuhfG5WyRasQmr2soaB82G39tp27RIGAAtvKLEiUUj +pQ7hRGU+isFqMB3iYPg6qocJQrmBktwliJiJ8Xw18WLK7nn4GS/+X/jbh87qqA8M +pugLoDzga5SYnH+tBuYc6kIQX+ImFTw3OffXvO645e8D7r0i+yiGNFjEWn9hongP +XvPKnbwbPKfILfanIhHKA9jnZwqKDss1jjQ52MjqjZ9k4DewbNfFj8GQYSbbJIwe +SsCI3zWQzj8C9GRh3sfIB5XeMhg6j6JCQCTl1jNdfK7vsU1P1FeQNWrcrgSXSYk0 +ly4wBOeY99sLAZDBHwo/+ML+TvrbmnNzFrwFuHnYWa8G5z9nODmxfKuU4CkUpijy +323imttUQ/hHWKNddBWcwauwxzQ= +-----END CERTIFICATE----- + +# Issuer: CN=D-TRUST EV Root CA 2 2023 O=D-Trust GmbH +# Subject: CN=D-TRUST EV Root CA 2 2023 O=D-Trust GmbH +# Label: "D-TRUST EV Root CA 2 2023" +# Serial: 139766439402180512324132425437959641711 +# MD5 Fingerprint: 96:b4:78:09:f0:09:cb:77:eb:bb:1b:4d:6f:36:bc:b6 +# SHA1 Fingerprint: a5:5b:d8:47:6c:8f:19:f7:4c:f4:6d:6b:b6:c2:79:82:22:df:54:8b +# SHA256 Fingerprint: 8e:82:21:b2:e7:d4:00:78:36:a1:67:2f:0d:cc:29:9c:33:bc:07:d3:16:f1:32:fa:1a:20:6d:58:71:50:f1:ce +-----BEGIN CERTIFICATE----- +MIIFqTCCA5GgAwIBAgIQaSYJfoBLTKCnjHhiU19abzANBgkqhkiG9w0BAQ0FADBI +MQswCQYDVQQGEwJERTEVMBMGA1UEChMMRC1UcnVzdCBHbWJIMSIwIAYDVQQDExlE +LVRSVVNUIEVWIFJvb3QgQ0EgMiAyMDIzMB4XDTIzMDUwOTA5MTAzM1oXDTM4MDUw +OTA5MTAzMlowSDELMAkGA1UEBhMCREUxFTATBgNVBAoTDEQtVHJ1c3QgR21iSDEi +MCAGA1UEAxMZRC1UUlVTVCBFViBSb290IENBIDIgMjAyMzCCAiIwDQYJKoZIhvcN +AQEBBQADggIPADCCAgoCggIBANiOo4mAC7JXUtypU0w3uX9jFxPvp1sjW2l1sJkK +F8GLxNuo4MwxusLyzV3pt/gdr2rElYfXR8mV2IIEUD2BCP/kPbOx1sWy/YgJ25yE +7CUXFId/MHibaljJtnMoPDT3mfd/06b4HEV8rSyMlD/YZxBTfiLNTiVR8CUkNRFe +EMbsh2aJgWi6zCudR3Mfvc2RpHJqnKIbGKBv7FD0fUDCqDDPvXPIEysQEx6Lmqg6 +lHPTGGkKSv/BAQP/eX+1SH977ugpbzZMlWGG2Pmic4ruri+W7mjNPU0oQvlFKzIb +RlUWaqZLKfm7lVa/Rh3sHZMdwGWyH6FDrlaeoLGPaxK3YG14C8qKXO0elg6DpkiV +jTujIcSuWMYAsoS0I6SWhjW42J7YrDRJmGOVxcttSEfi8i4YHtAxq9107PncjLgc +jmgjutDzUNzPZY9zOjLHfP7KgiJPvo5iR2blzYfi6NUPGJ/lBHJLRjwQ8kTCZFZx +TnXonMkmdMV9WdEKWw9t/p51HBjGGjp82A0EzM23RWV6sY+4roRIPrN6TagD4uJ+ +ARZZaBhDM7DS3LAaQzXupdqpRlyuhoFBAUp0JuyfBr/CBTdkdXgpaP3F9ev+R/nk +hbDhezGdpn9yo7nELC7MmVcOIQxFAZRl62UJxmMiCzNJkkg8/M3OsD6Onov4/knF +NXJHAgMBAAGjgY4wgYswDwYDVR0TAQH/BAUwAwEB/zAdBgNVHQ4EFgQUqvyREBuH +kV8Wub9PS5FeAByxMoAwDgYDVR0PAQH/BAQDAgEGMEkGA1UdHwRCMEAwPqA8oDqG +OGh0dHA6Ly9jcmwuZC10cnVzdC5uZXQvY3JsL2QtdHJ1c3RfZXZfcm9vdF9jYV8y +XzIwMjMuY3JsMA0GCSqGSIb3DQEBDQUAA4ICAQCTy6UfmRHsmg1fLBWTxj++EI14 +QvBukEdHjqOSMo1wj/Zbjb6JzkcBahsgIIlbyIIQbODnmaprxiqgYzWRaoUlrRc4 +pZt+UPJ26oUFKidBK7GB0aL2QHWpDsvxVUjY7NHss+jOFKE17MJeNRqrphYBBo7q +3C+jisosketSjl8MmxfPy3MHGcRqwnNU73xDUmPBEcrCRbH0O1P1aa4846XerOhU +t7KR/aypH/KH5BfGSah82ApB9PI+53c0BFLd6IHyTS9URZ0V4U/M5d40VxDJI3IX +cI1QcB9WbMy5/zpaT2N6w25lBx2Eof+pDGOJbbJAiDnXH3dotfyc1dZnaVuodNv8 +ifYbMvekJKZ2t0dT741Jj6m2g1qllpBFYfXeA08mD6iL8AOWsKwV0HFaanuU5nCT +2vFp4LJiTZ6P/4mdm13NRemUAiKN4DV/6PEEeXFsVIP4M7kFMhtYVRFP0OUnR3Hs +7dpn1mKmS00PaaLJvOwiS5THaJQXfuKOKD62xur1NGyfN4gHONuGcfrNlUhDbqNP +gofXNJhuS5N5YHVpD/Aa1VP6IQzCP+k/HxiMkl14p3ZnGbuy6n/pcAlWVqOwDAst +Nl7F6cTVg8uGF5csbBNvh1qvSaYd2804BC5f4ko1Di1L+KIkBI3Y4WNeApI02phh +XBxvWHZks/wCuPWdCg== +-----END CERTIFICATE----- + +# Issuer: CN=SwissSign RSA TLS Root CA 2022 - 1 O=SwissSign AG +# Subject: CN=SwissSign RSA TLS Root CA 2022 - 1 O=SwissSign AG +# Label: "SwissSign RSA TLS Root CA 2022 - 1" +# Serial: 388078645722908516278762308316089881486363258315 +# MD5 Fingerprint: 16:2e:e4:19:76:81:85:ba:8e:91:58:f1:15:ef:72:39 +# SHA1 Fingerprint: 81:34:0a:be:4c:cd:ce:cc:e7:7d:cc:8a:d4:57:e2:45:a0:77:5d:ce +# SHA256 Fingerprint: 19:31:44:f4:31:e0:fd:db:74:07:17:d4:de:92:6a:57:11:33:88:4b:43:60:d3:0e:27:29:13:cb:e6:60:ce:41 +-----BEGIN CERTIFICATE----- +MIIFkzCCA3ugAwIBAgIUQ/oMX04bgBhE79G0TzUfRPSA7cswDQYJKoZIhvcNAQEL +BQAwUTELMAkGA1UEBhMCQ0gxFTATBgNVBAoTDFN3aXNzU2lnbiBBRzErMCkGA1UE +AxMiU3dpc3NTaWduIFJTQSBUTFMgUm9vdCBDQSAyMDIyIC0gMTAeFw0yMjA2MDgx +MTA4MjJaFw00NzA2MDgxMTA4MjJaMFExCzAJBgNVBAYTAkNIMRUwEwYDVQQKEwxT +d2lzc1NpZ24gQUcxKzApBgNVBAMTIlN3aXNzU2lnbiBSU0EgVExTIFJvb3QgQ0Eg +MjAyMiAtIDEwggIiMA0GCSqGSIb3DQEBAQUAA4ICDwAwggIKAoICAQDLKmjiC8NX +vDVjvHClO/OMPE5Xlm7DTjak9gLKHqquuN6orx122ro10JFwB9+zBvKK8i5VUXu7 +LCTLf5ImgKO0lPaCoaTo+nUdWfMHamFk4saMla+ju45vVs9xzF6BYQ1t8qsCLqSX +5XH8irCRIFucdFJtrhUnWXjyCcplDn/L9Ovn3KlMd/YrFgSVrpxxpT8q2kFC5zyE +EPThPYxr4iuRR1VPuFa+Rd4iUU1OKNlfGUEGjw5NBuBwQCMBauTLE5tzrE0USJIt +/m2n+IdreXXhvhCxqohAWVTXz8TQm0SzOGlkjIHRI36qOTw7D59Ke4LKa2/KIj4x +0LDQKhySio/YGZxH5D4MucLNvkEM+KRHBdvBFzA4OmnczcNpI/2aDwLOEGrOyvi5 +KaM2iYauC8BPY7kGWUleDsFpswrzd34unYyzJ5jSmY0lpx+Gs6ZUcDj8fV3oT4MM +0ZPlEuRU2j7yrTrePjxF8CgPBrnh25d7mUWe3f6VWQQvdT/TromZhqwUtKiE+shd +OxtYk8EXlFXIC+OCeYSf8wCENO7cMdWP8vpPlkwGqnj73mSiI80fPsWMvDdUDrta +clXvyFu1cvh43zcgTFeRc5JzrBh3Q4IgaezprClG5QtO+DdziZaKHG29777YtvTK +wP1H8K4LWCDFyB02rpeNUIMmJCn3nTsPBQIDAQABo2MwYTAPBgNVHRMBAf8EBTAD +AQH/MA4GA1UdDwEB/wQEAwIBBjAfBgNVHSMEGDAWgBRvjmKLk0Ow4UD2p8P98Q+4 +DxU4pTAdBgNVHQ4EFgQUb45ii5NDsOFA9qfD/fEPuA8VOKUwDQYJKoZIhvcNAQEL +BQADggIBAKwsKUF9+lz1GpUYvyypiqkkVHX1uECry6gkUSsYP2OprphWKwVDIqO3 +10aewCoSPY6WlkDfDDOLazeROpW7OSltwAJsipQLBwJNGD77+3v1dj2b9l4wBlgz +Hqp41eZUBDqyggmNzhYzWUUo8aWjlw5DI/0LIICQ/+Mmz7hkkeUFjxOgdg3XNwwQ +iJb0Pr6VvfHDffCjw3lHC1ySFWPtUnWK50Zpy1FVCypM9fJkT6lc/2cyjlUtMoIc +gC9qkfjLvH4YoiaoLqNTKIftV+Vlek4ASltOU8liNr3CjlvrzG4ngRhZi0Rjn9UM +ZfQpZX+RLOV/fuiJz48gy20HQhFRJjKKLjpHE7iNvUcNCfAWpO2Whi4Z2L6MOuhF +LhG6rlrnub+xzI/goP+4s9GFe3lmozm1O2bYQL7Pt2eLSMkZJVX8vY3PXtpOpvJp +zv1/THfQwUY1mFwjmwJFQ5Ra3bxHrSL+ul4vkSkphnsh3m5kt8sNjzdbowhq6/Td +Ao9QAwKxuDdollDruF/UKIqlIgyKhPBZLtU30WHlQnNYKoH3dtvi4k0NX/a3vgW0 +rk4N3hY9A4GzJl5LuEsAz/+MF7psYC0nhzck5npgL7XTgwSqT0N1osGDsieYK7EO +gLrAhV5Cud+xYJHT6xh+cHiudoO+cVrQkOPKwRYlZ0rwtnu64ZzZ +-----END CERTIFICATE----- + +# Issuer: CN=OISTE Server Root ECC G1 O=OISTE Foundation +# Subject: CN=OISTE Server Root ECC G1 O=OISTE Foundation +# Label: "OISTE Server Root ECC G1" +# Serial: 47819833811561661340092227008453318557 +# MD5 Fingerprint: 42:a7:d2:35:ae:02:92:db:19:76:08:de:2f:05:b4:d4 +# SHA1 Fingerprint: 3b:f6:8b:09:ae:2a:92:7b:ba:e3:8d:3f:11:95:d9:e6:44:0c:45:e2 +# SHA256 Fingerprint: ee:c9:97:c0:c3:0f:21:6f:7e:3b:8b:30:7d:2b:ae:42:41:2d:75:3f:c8:21:9d:af:d1:52:0b:25:72:85:0f:49 +-----BEGIN CERTIFICATE----- +MIICNTCCAbqgAwIBAgIQI/nD1jWvjyhLH/BU6n6XnTAKBggqhkjOPQQDAzBLMQsw +CQYDVQQGEwJDSDEZMBcGA1UECgwQT0lTVEUgRm91bmRhdGlvbjEhMB8GA1UEAwwY +T0lTVEUgU2VydmVyIFJvb3QgRUNDIEcxMB4XDTIzMDUzMTE0NDIyOFoXDTQ4MDUy +NDE0NDIyN1owSzELMAkGA1UEBhMCQ0gxGTAXBgNVBAoMEE9JU1RFIEZvdW5kYXRp +b24xITAfBgNVBAMMGE9JU1RFIFNlcnZlciBSb290IEVDQyBHMTB2MBAGByqGSM49 +AgEGBSuBBAAiA2IABBcv+hK8rBjzCvRE1nZCnrPoH7d5qVi2+GXROiFPqOujvqQy +cvO2Ackr/XeFblPdreqqLiWStukhEaivtUwL85Zgmjvn6hp4LrQ95SjeHIC6XG4N +2xml4z+cKrhAS93mT6NjMGEwDwYDVR0TAQH/BAUwAwEB/zAfBgNVHSMEGDAWgBQ3 +TYhlz/w9itWj8UnATgwQb0K0nDAdBgNVHQ4EFgQUN02IZc/8PYrVo/FJwE4MEG9C +tJwwDgYDVR0PAQH/BAQDAgGGMAoGCCqGSM49BAMDA2kAMGYCMQCpKjAd0MKfkFFR +QD6VVCHNFmb3U2wIFjnQEnx/Yxvf4zgAOdktUyBFCxxgZzFDJe0CMQCSia7pXGKD +YmH5LVerVrkR3SW+ak5KGoJr3M/TvEqzPNcum9v4KGm8ay3sMaE641c= +-----END CERTIFICATE----- + +# Issuer: CN=OISTE Server Root RSA G1 O=OISTE Foundation +# Subject: CN=OISTE Server Root RSA G1 O=OISTE Foundation +# Label: "OISTE Server Root RSA G1" +# Serial: 113845518112613905024960613408179309848 +# MD5 Fingerprint: 23:a7:9e:d4:70:b8:b9:14:57:41:8a:7e:44:59:e2:68 +# SHA1 Fingerprint: f7:00:34:25:94:88:68:31:e4:34:87:3f:70:fe:86:b3:86:9f:f0:6e +# SHA256 Fingerprint: 9a:e3:62:32:a5:18:9f:fd:db:35:3d:fd:26:52:0c:01:53:95:d2:27:77:da:c5:9d:b5:7b:98:c0:89:a6:51:e6 +-----BEGIN CERTIFICATE----- +MIIFgzCCA2ugAwIBAgIQVaXZZ5Qoxu0M+ifdWwFNGDANBgkqhkiG9w0BAQwFADBL +MQswCQYDVQQGEwJDSDEZMBcGA1UECgwQT0lTVEUgRm91bmRhdGlvbjEhMB8GA1UE +AwwYT0lTVEUgU2VydmVyIFJvb3QgUlNBIEcxMB4XDTIzMDUzMTE0MzcxNloXDTQ4 +MDUyNDE0MzcxNVowSzELMAkGA1UEBhMCQ0gxGTAXBgNVBAoMEE9JU1RFIEZvdW5k +YXRpb24xITAfBgNVBAMMGE9JU1RFIFNlcnZlciBSb290IFJTQSBHMTCCAiIwDQYJ +KoZIhvcNAQEBBQADggIPADCCAgoCggIBAKqu9KuCz/vlNwvn1ZatkOhLKdxVYOPM +vLO8LZK55KN68YG0nnJyQ98/qwsmtO57Gmn7KNByXEptaZnwYx4M0rH/1ow00O7b +rEi56rAUjtgHqSSY3ekJvqgiG1k50SeH3BzN+Puz6+mTeO0Pzjd8JnduodgsIUzk +ik/HEzxux9UTl7Ko2yRpg1bTacuCErudG/L4NPKYKyqOBGf244ehHa1uzjZ0Dl4z +O8vbUZeUapU8zhhabkvG/AePLhq5SvdkNCncpo1Q4Y2LS+VIG24ugBA/5J8bZT8R +tOpXaZ+0AOuFJJkk9SGdl6r7NH8CaxWQrbueWhl/pIzY+m0o/DjH40ytas7ZTpOS +jswMZ78LS5bOZmdTaMsXEY5Z96ycG7mOaES3GK/m5Q9l3JUJsJMStR8+lKXHiHUh +sd4JJCpM4rzsTGdHwimIuQq6+cF0zowYJmXa92/GjHtoXAvuY8BeS/FOzJ8vD+Ho +mnqT8eDI278n5mUpezbgMxVz8p1rhAhoKzYHKyfMeNhqhw5HdPSqoBNdZH702xSu ++zrkL8Fl47l6QGzwBrd7KJvX4V84c5Ss2XCTLdyEr0YconosP4EmQufU2MVshGYR +i3drVByjtdgQ8K4p92cIiBdcuJd5z+orKu5YM+Vt6SmqZQENghPsJQtdLEByFSnT +kCz3GkPVavBpAgMBAAGjYzBhMA8GA1UdEwEB/wQFMAMBAf8wHwYDVR0jBBgwFoAU +8snBDw1jALvsRQ5KH7WxszbNDo0wHQYDVR0OBBYEFPLJwQ8NYwC77EUOSh+1sbM2 +zQ6NMA4GA1UdDwEB/wQEAwIBhjANBgkqhkiG9w0BAQwFAAOCAgEANGd5sjrG5T33 +I3K5Ce+SrScfoE4KsvXaFwyihdJ+klH9FWXXXGtkFu6KRcoMQzZENdl//nk6HOjG +5D1rd9QhEOP28yBOqb6J8xycqd+8MDoX0TJD0KqKchxRKEzdNsjkLWd9kYccnbz8 +qyiWXmFcuCIzGEgWUOrKL+mlSdx/PKQZvDatkuK59EvV6wit53j+F8Bdh3foZ3dP +AGav9LEDOr4SfEE15fSmG0eLy3n31r8Xbk5l8PjaV8GUgeV6Vg27Rn9vkf195hfk +gSe7BYhW3SCl95gtkRlpMV+bMPKZrXJAlszYd2abtNUOshD+FKrDgHGdPY3ofRRs +YWSGRqbXVMW215AWRqWFyp464+YTFrYVI8ypKVL9AMb2kI5Wj4kI3Zaq5tNqqYY1 +9tVFeEJKRvwDyF7YZvZFZSS0vod7VSCd9521Kvy5YhnLbDuv0204bKt7ph6N/Ome +/msVuduCmsuY33OhkKCgxeDoAaijFJzIwZqsFVAzje18KotzlUBDJvyBpCpfOZC3 +J8tRd/iWkx7P8nd9H0aTolkelUTFLXVksNb54Dxp6gS1HAviRkRNQzuXSXERvSS2 +wq1yVAb+axj5d9spLFKebXd7Yv0PTY6YMjAwcRLWJTXjn/hvnLXrahut6hDTlhZy +BiElxky8j3C7DOReIoMt0r7+hVu05L0= +-----END CERTIFICATE----- + +# Issuer: CN=e-Szigno TLS Root CA 2023 O=Microsec Ltd. +# Subject: CN=e-Szigno TLS Root CA 2023 O=Microsec Ltd. +# Label: "e-Szigno TLS Root CA 2023" +# Serial: 71934828665710877219916191754 +# MD5 Fingerprint: 6a:e9:99:74:a5:da:5e:f1:d9:2e:f2:c8:d1:86:8b:71 +# SHA1 Fingerprint: 6f:9a:d5:d5:df:e8:2c:eb:be:37:07:ee:4f:4f:52:58:29:41:d1:fe +# SHA256 Fingerprint: b4:91:41:50:2d:00:66:3d:74:0f:2e:7e:c3:40:c5:28:00:96:26:66:12:1a:36:d0:9c:f7:dd:2b:90:38:4f:b4 +-----BEGIN CERTIFICATE----- +MIICzzCCAjGgAwIBAgINAOhvGHvWOWuYSkmYCjAKBggqhkjOPQQDBDB1MQswCQYD +VQQGEwJIVTERMA8GA1UEBwwIQnVkYXBlc3QxFjAUBgNVBAoMDU1pY3Jvc2VjIEx0 +ZC4xFzAVBgNVBGEMDlZBVEhVLTIzNTg0NDk3MSIwIAYDVQQDDBllLVN6aWdubyBU +TFMgUm9vdCBDQSAyMDIzMB4XDTIzMDcxNzE0MDAwMFoXDTM4MDcxNzE0MDAwMFow +dTELMAkGA1UEBhMCSFUxETAPBgNVBAcMCEJ1ZGFwZXN0MRYwFAYDVQQKDA1NaWNy +b3NlYyBMdGQuMRcwFQYDVQRhDA5WQVRIVS0yMzU4NDQ5NzEiMCAGA1UEAwwZZS1T +emlnbm8gVExTIFJvb3QgQ0EgMjAyMzCBmzAQBgcqhkjOPQIBBgUrgQQAIwOBhgAE +AGgP36J8PKp0iGEKjcJMpQEiFNT3YHdCnAo4YKGMZz6zY+n6kbCLS+Y53wLCMAFS +AL/fjO1ZrTJlqwlZULUZwmgcAOAFX9pQJhzDrAQixTpN7+lXWDajwRlTEArRzT/v +SzUaQ49CE0y5LBqcvjC2xN7cS53kpDzLLtmt3999Cd8ukv+ho2MwYTAPBgNVHRMB +Af8EBTADAQH/MA4GA1UdDwEB/wQEAwIBBjAdBgNVHQ4EFgQUWYQCYlpGePVd3I8K +ECgj3NXW+0UwHwYDVR0jBBgwFoAUWYQCYlpGePVd3I8KECgj3NXW+0UwCgYIKoZI +zj0EAwQDgYsAMIGHAkIBLdqu9S54tma4n7Zwf2Z0z+yOfP7AAXmazlIC58PRDHpt +y7Ve7hekm9sEdu4pKeiv+62sUvTXK9Z3hBC9xdIoaDQCQTV2WnXzkoYI9bIeCvZl +C9p2x1L/Cx6AcCIwwzPbGO2E14vs7dOoY4G1VnxHx1YwlGhza9IuqbnZLBwpvQy6 +uWWL +-----END CERTIFICATE----- + +# Issuer: CN=SECOM TLS RSA Root CA 2024 O=SECOM Trust Systems Co., Ltd. +# Subject: CN=SECOM TLS RSA Root CA 2024 O=SECOM Trust Systems Co., Ltd. +# Label: "SECOM TLS RSA Root CA 2024" +# Serial: 17188327524208271538 +# MD5 Fingerprint: d0:a4:db:32:eb:44:98:d2:62:0b:3e:bc:4d:7c:5c:e9 +# SHA1 Fingerprint: fb:97:96:7c:ef:8d:98:63:06:c0:3b:b6:11:f8:e0:13:97:a2:98:d3 +# SHA256 Fingerprint: 14:35:f2:25:c5:d2:52:d7:a2:19:48:cc:3c:e6:2a:ec:fa:88:00:1e:3d:d7:2d:1c:c3:55:51:00:eb:37:2f:93 +-----BEGIN CERTIFICATE----- +MIIFmjCCA4KgAwIBAgIJAO6JNNDLgOCyMA0GCSqGSIb3DQEBDAUAMFoxCzAJBgNV +BAYTAkpQMSYwJAYDVQQKEx1TRUNPTSBUcnVzdCBTeXN0ZW1zIENvLiwgTHRkLjEj +MCEGA1UEAxMaU0VDT00gVExTIFJTQSBSb290IENBIDIwMjQwHhcNMjQwMTMxMDUx +MTU1WhcNNDkwMTE0MDUxMTU1WjBaMQswCQYDVQQGEwJKUDEmMCQGA1UEChMdU0VD +T00gVHJ1c3QgU3lzdGVtcyBDby4sIEx0ZC4xIzAhBgNVBAMTGlNFQ09NIFRMUyBS +U0EgUm9vdCBDQSAyMDI0MIICIjANBgkqhkiG9w0BAQEFAAOCAg8AMIICCgKCAgEA +4TjizUwzxbInq8Tx11gaFYNk5fO+34y7TyM4neh0UgL5JIZbJNLTz2x//L/B71+5 +m6X6nGIr7d4lFJBGtjO677hXOz93zkcWaUTm3VbOAjBlt4YWxlcccBHXuZ7o3Q+4 +R+ormrBdHeJ1CTUEG8ttQbKIl3G7OZYbnH8/pP8cjPub/0kDVNuMzp7xsVRROOis +Qt53fMoJLlYgoebbuMphOqMCtjkJ7R6efEMfLp8UAVi9ZaLRn76ET/CJkk925ndu +uufC4BatS4mnXFmxN0vUXb0ij9B8O/D8gixQEsVSD4GK8FWRPh3bVd/6bzdkHGJj +y21XI0yejVomZUbRrOfNuz0boPGV1pt18fFC39IHQEth3OFqb5NDO3L+A9bNqTgA +yUgRmIn4ucgDc/Ri/Km3V51ueZjy1/yk0qwJVadAVVrCt56iNeXOyEvzJADGgDQ8 +E1Pdaqct8Cynz/47ReQM62vFYO08wcQkrjmX/tesiko1V1yyaf6EfPzUFzmaGy9x +vkCwdbm15EdTolOjE0H2Vb5/APDOyCFEokiYGmXTLdAUl0wKZ4IyjkHGzy0jhpaX +EXE/GJcEvI6VzEchjaBL03EJ0h9pG4OqeIOycKvAo3A+TbetyfsrgYyHzU0a7/qU +jGat1AAq1nVljMpKqpinPTsf/d9H39FTUeJL7TpzzjUCAwEAAaNjMGEwHQYDVR0O +BBYEFCzrchKOWHdkNRVWNQFXB6l9DTbmMB8GA1UdIwQYMBaAFCzrchKOWHdkNRVW +NQFXB6l9DTbmMA4GA1UdDwEB/wQEAwIBBjAPBgNVHRMBAf8EBTADAQH/MA0GCSqG +SIb3DQEBDAUAA4ICAQAVwsvluSafaez5tFPR/hRTBzRxEyMMQF3XJXCVi3yegZyK +oec7hmE6jx2ZM8KgM1kn2yJRwFXHX8zUW9nBLEDWc4wuE8LrlZqhGZM9pJQXGmGz +ResDJV6JgRBna+j4sA1M7yIdlvL0sAfFXFCTRaWTD4E1V99RLrFzWfTcC+e180hD +uNMpqOEo46+lMeW/Wvh7ifOQs+kiK0O2gHxQDNxslSavnCs4V7l8HRDJ2La10o70 +Bo7VLzf1W8MBvv0VTnxB+NjT5qTAbhGFh9Gvp4BaJpmdUf0C5CEP6dbQlfgxWfzY +r69yVT6dPQB+GFEaY03IMY+AcBCs+om1fNxrQXt9zoofMBNFbLhvpNH/JsXWdGUz +fNbO12uswTa5wah8LB18FTQN2/zPHYmvBEoLuyUgZ09VNLJo5YA0kXItVYkLjMe2 +SixzK4scUHv81IK99I91DWx7FwMVKw2xgFp+ZLYB2dnpQQrqwlW64glHUcK2N9BD +snjLSxeZ+UPECh9RxH4WAcKiZW+cqaKMmhP2WBfR4IcR7NOL32ml11ds87hhV1CZ +WWFCJAcCidYZz6CZa8exzHojP9SB5RH0/v1KdHAisqhSjtJl/UIAHIQ48elOn8wr +TdFap4Yb5aHglmMeNx+fAIhDluWVfxTO7H4dTPU+SFVRMLAh+wwKZfqb94nMeQ== +-----END CERTIFICATE----- + +# Issuer: CN=SECOM TLS ECC Root CA 2024 O=SECOM Trust Systems Co., Ltd. +# Subject: CN=SECOM TLS ECC Root CA 2024 O=SECOM Trust Systems Co., Ltd. +# Label: "SECOM TLS ECC Root CA 2024" +# Serial: 9329818985461676612 +# MD5 Fingerprint: 99:d3:9d:e4:d2:b1:2d:f0:2a:04:67:85:f3:df:46:d6 +# SHA1 Fingerprint: 7a:1f:22:2d:72:b2:c3:19:87:44:db:61:69:e8:a6:4b:d7:0d:44:0e +# SHA256 Fingerprint: 6a:b2:ab:75:f5:1c:b4:f4:f0:15:62:03:fb:f6:f6:46:23:2f:51:4b:e0:59:f6:28:33:30:8b:82:b4:d7:2d:b1 +-----BEGIN CERTIFICATE----- +MIICTDCCAdGgAwIBAgIJAIF6LO+PI3pEMAoGCCqGSM49BAMDMFoxCzAJBgNVBAYT +AkpQMSYwJAYDVQQKEx1TRUNPTSBUcnVzdCBTeXN0ZW1zIENvLiwgTHRkLjEjMCEG +A1UEAxMaU0VDT00gVExTIEVDQyBSb290IENBIDIwMjQwHhcNMjQwMTMxMDU1MjM0 +WhcNNDkwMTE0MDU1MjM0WjBaMQswCQYDVQQGEwJKUDEmMCQGA1UEChMdU0VDT00g +VHJ1c3QgU3lzdGVtcyBDby4sIEx0ZC4xIzAhBgNVBAMTGlNFQ09NIFRMUyBFQ0Mg +Um9vdCBDQSAyMDI0MHYwEAYHKoZIzj0CAQYFK4EEACIDYgAE7NzFMtu9dzQXSNC1 +2fabk0+GlC5finB3R7XaZonRUd20aFiWObtuNBCLUZSfk6QXAE55BjEXsXQ/NG8y +UqicXjsu9ksDK3JZBgCwLOVh6+nwJXTvso/dEj/GUYH5mBdoo2MwYTAdBgNVHQ4E +FgQUO3YReyl04k4GTFaCQNAhL3qzydUwHwYDVR0jBBgwFoAUO3YReyl04k4GTFaC +QNAhL3qzydUwDgYDVR0PAQH/BAQDAgEGMA8GA1UdEwEB/wQFMAMBAf8wCgYIKoZI +zj0EAwMDaQAwZgIxAN3ib8fi1pMYtAPjMilB5e5/H+t5CL0xPL+cZ5oTTZuSCjpA +n1v7F/VAr8bFxQXAowIxAKsBVO1ACFp7skwzPvdv1EUY5a897WGLT4lb+bjxFAWy +l8wDcZJdwGZ/pAHxt1AJ1g== +-----END CERTIFICATE----- + +# Issuer: CN=Telia EC TLS Root CA v3 O=Telia Company AB +# Subject: CN=Telia EC TLS Root CA v3 O=Telia Company AB +# Label: "Telia EC TLS Root CA v3" +# Serial: 8028200332079443110287896228123317 +# MD5 Fingerprint: b6:fa:6a:5c:42:fb:c5:67:72:c0:e0:2f:72:fb:5a:44 +# SHA1 Fingerprint: b4:d6:07:c2:a5:95:bc:5b:f4:67:4d:c9:dc:6f:6f:0a:00:7a:a5:35 +# SHA256 Fingerprint: 09:8e:08:a9:1d:bb:f7:74:78:b9:6c:ce:b8:9b:14:13:a5:da:37:b7:c8:62:60:6a:95:5d:eb:07:17:9f:43:26 +-----BEGIN CERTIFICATE----- +MIICMjCCAbegAwIBAgIPAYvSIlRjTQSLbOVHH9K1MAoGCCqGSM49BAMDMEoxCzAJ +BgNVBAYTAlNFMRkwFwYDVQQKDBBUZWxpYSBDb21wYW55IEFCMSAwHgYDVQQDDBdU +ZWxpYSBFQyBUTFMgUm9vdCBDQSB2MzAeFw0yMzExMTUwODU1MjZaFw00ODA1MjMx +MTAwMDBaMEoxCzAJBgNVBAYTAlNFMRkwFwYDVQQKDBBUZWxpYSBDb21wYW55IEFC +MSAwHgYDVQQDDBdUZWxpYSBFQyBUTFMgUm9vdCBDQSB2MzB2MBAGByqGSM49AgEG +BSuBBAAiA2IABMHIlhVDLbmFKUpW0iK4dpryT6emYOeS31JPwWnWPmkWRrAkTbPX +40sQfHI9mpR7Rbktu3ngg6W+BBSXSechtMCnBmWXj/EaVlmV5cY1jD2HoTfhBQ3A +acpCNMLJK4NpZaNjMGEwHwYDVR0jBBgwFoAU1GToQ4g6cy/QGnGCNgtehd7H3kMw +HQYDVR0OBBYEFNRk6EOIOnMv0BpxgjYLXoXex95DMA4GA1UdDwEB/wQEAwIBBjAP +BgNVHRMBAf8EBTADAQH/MAoGCCqGSM49BAMDA2kAMGYCMQCXAUdS/9bbJ8A1JYaG +f/bWt/s7Ta0ot5Ulno8OjSNYRWQIlS4tVWldvTAVA7heOFgCMQCvKr8+Z2Rn+OBr +5UHzlgBObpad1LuwNTRcdNgUJxIWadcki+UBLEi1/AURKV5md2M= +-----END CERTIFICATE----- + +# Issuer: CN=Telia RSA TLS Root CA v3 O=Telia Company AB +# Subject: CN=Telia RSA TLS Root CA v3 O=Telia Company AB +# Label: "Telia RSA TLS Root CA v3" +# Serial: 8028214673410753541795188766939845 +# MD5 Fingerprint: f4:8b:9c:f3:f8:63:cf:dc:25:8f:b4:bb:a2:e9:9d:e2 +# SHA1 Fingerprint: b5:2e:88:4e:40:c1:11:fb:50:c7:e2:4f:ac:18:2b:bd:68:15:d2:34 +# SHA256 Fingerprint: d1:3d:b1:29:4c:45:eb:c6:fc:86:c6:bb:f6:9f:a2:9b:df:e6:92:df:f7:c7:13:c2:43:c7:a9:56:c6:a2:28:4c +-----BEGIN CERTIFICATE----- +MIIFgjCCA2qgAwIBAgIPAYvSUKtCVSxHWr2h3BrFMA0GCSqGSIb3DQEBDAUAMEsx +CzAJBgNVBAYTAlNFMRkwFwYDVQQKDBBUZWxpYSBDb21wYW55IEFCMSEwHwYDVQQD +DBhUZWxpYSBSU0EgVExTIFJvb3QgQ0EgdjMwHhcNMjMxMTE1MDk0NzQyWhcNNDgw +NTIzMTEwMDAwWjBLMQswCQYDVQQGEwJTRTEZMBcGA1UECgwQVGVsaWEgQ29tcGFu +eSBBQjEhMB8GA1UEAwwYVGVsaWEgUlNBIFRMUyBSb290IENBIHYzMIICIjANBgkq +hkiG9w0BAQEFAAOCAg8AMIICCgKCAgEAsV89KG19hCf4S1Fvk8D3TyDERhmcvx8F +7Kmb4WATx3ije1id3KHxRE0TKmcNCbAQ57bvHFEYa4hR2l20VjVadExqOW+2ld99 +MbEiO+jRVOz+BbxLxJnmGwCqI+BfuTjjVReDxsxjQvjgBsClaO/sm5i70nlZcWGR +tIkvWDK3NNkT5RtwXc/O8NTFVpbUqT6cRjIj3olAblR+lRf4Ffy5o+Q9fabjYn9Z +9S4itruElcEFf9Ljk7fwdTycT/rvJW9w/B3G2a3r0f/zXNOVruIBcqE6pkSospAC +U2bG42fYKrbM/GWnp7u+p9Frz4jaNwpb4YHuEeS8BratNcP8X62jXIvvKHxlsMDJ +Cnb4U8JzFOLsU6mohVY58BdZrvi0Gk9UOuqmgoG6dskHoksjZTlK61D/InzmEoA1 +yAYJFDVysjRxDUOu9cAwANbqmq77WIFL6BpnZgVqPtMfG6wN8BrTKdapvilVsYR5 +9BFgIsAVBMxrGh+W+QcvmJafUpASvlArKvVG2FI4i6PiLjSBT0+6F6EQLrYqefOQ +F/fBNEXb+njUQ0SUVrAqtH4Y+OjCI/a4/JJQppxeemZcQ0SUShgiI5AM5xHO5iya +UrTjYH4zxUz9j+1FEbDH/xpstr1gXBykspup+hRTaJcbA+UbpJqtWZndAPddJmt6 +YJQ+dU3pDu8CAwEAAaNjMGEwHwYDVR0jBBgwFoAUsMep0t2yKFZzBJSMFFxIbzdS +kqgwHQYDVR0OBBYEFLDHqdLdsihWcwSUjBRcSG83UpKoMA4GA1UdDwEB/wQEAwIB +BjAPBgNVHRMBAf8EBTADAQH/MA0GCSqGSIb3DQEBDAUAA4ICAQBdYzFsNGDRk7bR +/AgRKq+5637YuOW+w6uhpoS0VnKMUpyHCwku86hEvqivakPtfmlm4bFwt++sb/8O +XsWBqtfbXMaBNDTZl8XRMJuLWOW2JrbKkRzgG0eBUcvsadG1rrhbmZqYvFXaAZO7 +o4TdOZzxhBB5GOAWWXB3IeraNP4J63zyo9n8Gqw3sJBG44em5hoYjBffP+npibys +lnslRi4L6xHsCYj/Pab+OlqbMCB6v+sTCLeEIukRVzoR9aQ45pEK7Z1QBnSsbAKQ +tss0JKD9d/mX143H1xePjPhTXlv5JCkhrcj+SShz0P9+EHoWe6m9lyUEOIVn0rp+ +yVJWNbmyDv3VkwFxHC1ApSQsgSimjGQ4wtr6cSmordYxkV+Ro8lOIIhRksXPyDk2 +7gW6IjUXCkZKpxFjkL3jiBSc8SkxnwCWtXg8xwNwdFVNBGLCCuJnsneYXjJNqzRq +UcoGwzsvF3Qi/ZnHUNvISdevlgIAXL4Wvrxaqvoa01wB+GCfs57RTGE4TvAGhKNK +us8K3hRT1BSpigzMIRzSxtAOrqPN6j//QSmW9f8Jcncri4j2ihSpVrFU0NdNkMhZ +eAKidTFPsxCVFuW4Aniz7jqiw5sWtjbQrlW035izIEU4sYwQoC1Nx0Svy+mMTRai +50LqFQ+A1/Hq6xHHDNx7CI83d23Erw== +-----END CERTIFICATE----- diff --git a/venv/lib/python3.11/site-packages/certifi/core.py b/venv/lib/python3.11/site-packages/certifi/core.py new file mode 100644 index 0000000000000000000000000000000000000000..1c9661cc7c2f6917c2506a30b2710002f81ab23a --- /dev/null +++ b/venv/lib/python3.11/site-packages/certifi/core.py @@ -0,0 +1,83 @@ +""" +certifi.py +~~~~~~~~~~ + +This module returns the installation location of cacert.pem or its contents. +""" +import sys +import atexit + +def exit_cacert_ctx() -> None: + _CACERT_CTX.__exit__(None, None, None) # type: ignore[union-attr] + + +if sys.version_info >= (3, 11): + + from importlib.resources import as_file, files + + _CACERT_CTX = None + _CACERT_PATH = None + + def where() -> str: + # This is slightly terrible, but we want to delay extracting the file + # in cases where we're inside of a zipimport situation until someone + # actually calls where(), but we don't want to re-extract the file + # on every call of where(), so we'll do it once then store it in a + # global variable. + global _CACERT_CTX + global _CACERT_PATH + if _CACERT_PATH is None: + # This is slightly janky, the importlib.resources API wants you to + # manage the cleanup of this file, so it doesn't actually return a + # path, it returns a context manager that will give you the path + # when you enter it and will do any cleanup when you leave it. In + # the common case of not needing a temporary file, it will just + # return the file system location and the __exit__() is a no-op. + # + # We also have to hold onto the actual context manager, because + # it will do the cleanup whenever it gets garbage collected, so + # we will also store that at the global level as well. + _CACERT_CTX = as_file(files("certifi").joinpath("cacert.pem")) + _CACERT_PATH = str(_CACERT_CTX.__enter__()) + atexit.register(exit_cacert_ctx) + + return _CACERT_PATH + + def contents() -> str: + return files("certifi").joinpath("cacert.pem").read_text(encoding="ascii") + +else: + + from importlib.resources import path as get_path, read_text + + _CACERT_CTX = None + _CACERT_PATH = None + + def where() -> str: + # This is slightly terrible, but we want to delay extracting the + # file in cases where we're inside of a zipimport situation until + # someone actually calls where(), but we don't want to re-extract + # the file on every call of where(), so we'll do it once then store + # it in a global variable. + global _CACERT_CTX + global _CACERT_PATH + if _CACERT_PATH is None: + # This is slightly janky, the importlib.resources API wants you + # to manage the cleanup of this file, so it doesn't actually + # return a path, it returns a context manager that will give + # you the path when you enter it and will do any cleanup when + # you leave it. In the common case of not needing a temporary + # file, it will just return the file system location and the + # __exit__() is a no-op. + # + # We also have to hold onto the actual context manager, because + # it will do the cleanup whenever it gets garbage collected, so + # we will also store that at the global level as well. + _CACERT_CTX = get_path("certifi", "cacert.pem") + _CACERT_PATH = str(_CACERT_CTX.__enter__()) + atexit.register(exit_cacert_ctx) + + return _CACERT_PATH + + def contents() -> str: + return read_text("certifi", "cacert.pem", encoding="ascii") diff --git a/venv/lib/python3.11/site-packages/certifi/py.typed b/venv/lib/python3.11/site-packages/certifi/py.typed new file mode 100644 index 0000000000000000000000000000000000000000..e69de29bb2d1d6434b8b29ae775ad8c2e48c5391 diff --git a/venv/lib/python3.11/site-packages/certifi/tests/__init__.py b/venv/lib/python3.11/site-packages/certifi/tests/__init__.py new file mode 100644 index 0000000000000000000000000000000000000000..e69de29bb2d1d6434b8b29ae775ad8c2e48c5391 diff --git a/venv/lib/python3.11/site-packages/certifi/tests/test_certify.py b/venv/lib/python3.11/site-packages/certifi/tests/test_certify.py new file mode 100644 index 0000000000000000000000000000000000000000..54670eaebe656f6cf307f61eb514a6a7bac77e96 --- /dev/null +++ b/venv/lib/python3.11/site-packages/certifi/tests/test_certify.py @@ -0,0 +1,18 @@ +import os +import unittest + +import certifi + + +class TestCertifi(unittest.TestCase): + def test_cabundle_exists(self) -> None: + assert os.path.exists(certifi.where()) + + def test_read_contents(self) -> None: + content = certifi.contents() + assert "-----BEGIN CERTIFICATE-----" in content + + def test_py_typed_exists(self) -> None: + assert os.path.exists( + os.path.join(os.path.dirname(certifi.__file__), 'py.typed') + ) diff --git a/venv/lib/python3.11/site-packages/charset_normalizer-3.4.9.dist-info/INSTALLER b/venv/lib/python3.11/site-packages/charset_normalizer-3.4.9.dist-info/INSTALLER new file mode 100644 index 0000000000000000000000000000000000000000..a1b589e38a32041e49332e5e81c2d363dc418d68 --- /dev/null +++ b/venv/lib/python3.11/site-packages/charset_normalizer-3.4.9.dist-info/INSTALLER @@ -0,0 +1 @@ +pip diff --git a/venv/lib/python3.11/site-packages/charset_normalizer-3.4.9.dist-info/METADATA b/venv/lib/python3.11/site-packages/charset_normalizer-3.4.9.dist-info/METADATA new file mode 100644 index 0000000000000000000000000000000000000000..2df256cff10e70f838b6ee4c48f84daa89d6e81f --- /dev/null +++ b/venv/lib/python3.11/site-packages/charset_normalizer-3.4.9.dist-info/METADATA @@ -0,0 +1,827 @@ +Metadata-Version: 2.4 +Name: charset-normalizer +Version: 3.4.9 +Summary: The Real First Universal Charset Detector. Open, modern and actively maintained alternative to Chardet. +Author-email: "Ahmed R. TAHRI" +Maintainer-email: "Ahmed R. TAHRI" +License: MIT +Project-URL: Changelog, https://github.com/jawah/charset_normalizer/blob/master/CHANGELOG.md +Project-URL: Documentation, https://charset-normalizer.readthedocs.io/ +Project-URL: Code, https://github.com/jawah/charset_normalizer +Project-URL: Issue tracker, https://github.com/jawah/charset_normalizer/issues +Keywords: encoding,charset,charset-detector,detector,normalization,unicode,chardet,detect +Classifier: Development Status :: 5 - Production/Stable +Classifier: Intended Audience :: Developers +Classifier: Operating System :: OS Independent +Classifier: Programming Language :: Python +Classifier: Programming Language :: Python :: 3 +Classifier: Programming Language :: Python :: 3.7 +Classifier: Programming Language :: Python :: 3.8 +Classifier: Programming Language :: Python :: 3.9 +Classifier: Programming Language :: Python :: 3.10 +Classifier: Programming Language :: Python :: 3.11 +Classifier: Programming Language :: Python :: 3.12 +Classifier: Programming Language :: Python :: 3.13 +Classifier: Programming Language :: Python :: 3.14 +Classifier: Programming Language :: Python :: 3 :: Only +Classifier: Programming Language :: Python :: Implementation :: CPython +Classifier: Programming Language :: Python :: Implementation :: PyPy +Classifier: Programming Language :: Python :: Free Threading :: 4 - Resilient +Classifier: Topic :: Text Processing :: Linguistic +Classifier: Topic :: Utilities +Classifier: Typing :: Typed +Requires-Python: >=3.7 +Description-Content-Type: text/markdown +License-File: LICENSE +Provides-Extra: unicode-backport +Dynamic: license-file + +

Charset Detection, for Everyone 👋

+ +

+ The Real First Universal Charset Detector
+ + + + + Download Count Total + + + + +

+

+ Featured Packages
+ + Static Badge + + + Static Badge + +

+

+ In other language (unofficial port - by the community)
+ + Static Badge + +

+ +> A library that helps you read text from an unknown charset encoding.
Motivated by `chardet`, +> I'm trying to resolve the issue by taking a new approach. +> All IANA character set names for which the Python core library provides codecs are supported. +> You can also register your own set of codecs, and yes, it would work as-is. + +This project offers you an alternative to **Universal Charset Encoding Detector**, also known as **Chardet**. + +| Feature | [Chardet](https://github.com/chardet/chardet) | Charset Normalizer | [cChardet](https://github.com/PyYoshi/cChardet) | +|--------------------------------------------------|:---------------------------------------------:|:-----------------------------------------------------------------------------------------------:|:-----------------------------------------------:| +| `Fast` | ✅ | ✅ | ✅ | +| `Universal`[^1] | ❌ | ✅ | ❌ | +| `Reliable` **without** distinguishable standards | ✅ | ✅ | ✅ | +| `Reliable` **with** distinguishable standards | ✅ | ✅ | ✅ | +| `License` | _Disputed_[^2]
_restrictive_ | MIT | MPL-1.1
_restrictive_ | +| `Native Python` | ✅ | ✅ | ❌ | +| `Detect spoken language` | ✅ | ✅ | N/A | +| `UnicodeDecodeError Safety` | ✅ | ✅ | ❌ | +| `Whl Size (min)` | 500 kB | 150 kB | ~200 kB | +| `Supported Encoding` | 99 | [99](https://charset-normalizer.readthedocs.io/en/latest/user/support.html#supported-encodings) | 40 | +| `Can register custom encoding` | ❌ | ✅ | ❌ | + +

+Reading Normalized TextCat Reading Text +

+ +[^1]: They are clearly using specific code for a specific encoding even if covering most of used one. +[^2]: Chardet 7.0+ was relicensed from LGPL-2.1 to MIT following an AI-assisted rewrite. This relicensing is disputed on two independent grounds: **(a)** the original author [contests](https://github.com/chardet/chardet/issues/327) that the maintainer had the right to relicense, arguing the rewrite is a derivative work of the LGPL-licensed codebase since it was not a clean room implementation; **(b)** the copyright claim itself is [questionable](https://github.com/chardet/chardet/issues/334) given the code was primarily generated by an LLM, and AI-generated output may not be copyrightable under most jurisdictions. Either issue alone could undermine the MIT license. Beyond licensing, the rewrite raises questions about responsible use of AI in open source: key architectural ideas pioneered by charset-normalizer - notably decode-first validity filtering (our foundational approach since v1) and encoding pairwise similarity with the same algorithm and threshold — surfaced in chardet 7 without acknowledgment. The project also imported test files from charset-normalizer to train and benchmark against it, then claimed superior accuracy on those very files. Charset-normalizer has always been MIT-licensed, encoding-agnostic by design, and built on a verifiable human-authored history. + +## ⚡ Performance + +This package offer better performances against Chardet. Here are some numbers. + +| Package | Accuracy | Mean per file (ms) | File per sec (est) | +|---------------------------------------------------|:--------:|:------------------:|:------------------:| +| [chardet 7.4](https://github.com/chardet/chardet) | 89 % | 3 ms | 333 file/sec | +| charset-normalizer | **97 %** | 1 ms | 1000 file/sec | + +| Package | 99th percentile | 95th percentile | 50th percentile | +|---------------------------------------------------|:---------------:|:---------------:|:---------------:| +| [chardet 7.4](https://github.com/chardet/chardet) | 28 ms | 16 ms | < 1 ms | +| charset-normalizer | 8 ms | 5 ms | 1 ms | + +_updated as of July 2026 using CPython 3.12, Charset-Normalizer 3.4.8, and Chardet 7.4.3_ + +~Chardet's performance on larger file (1MB+) are very poor. Expect huge difference on large payload.~ No longer the case since Chardet 7.0+ + +> Stats are generated using 400+ files using default parameters. More details on used files, see GHA workflows. +> And yes, these results might change at any time. The dataset can be updated to include more files. +> The actual delays heavily depends on your CPU capabilities. The factors should remain the same. +> Chardet claims on his documentation to have a greater accuracy than us based on the dataset they trained Chardet on(...) +> Well, it's normal, the opposite would have been worrying. Whereas charset-normalizer don't train on anything, our solution +> is based on a completely different algorithm, still heuristic through, it does not need weights across every encoding tables. + +## ✨ Installation + +Using pip: + +```sh +pip install charset-normalizer -U +``` + +## 🚀 Basic Usage + +### CLI +This package comes with a CLI. + +``` +usage: normalizer [-h] [-v] [-a] [-n] [-m] [-r] [-f] [-t THRESHOLD] + file [file ...] + +The Real First Universal Charset Detector. Discover originating encoding used +on text file. Normalize text to unicode. + +positional arguments: + files File(s) to be analysed + +optional arguments: + -h, --help show this help message and exit + -v, --verbose Display complementary information about file if any. + Stdout will contain logs about the detection process. + -a, --with-alternative + Output complementary possibilities if any. Top-level + JSON WILL be a list. + -n, --normalize Permit to normalize input file. If not set, program + does not write anything. + -m, --minimal Only output the charset detected to STDOUT. Disabling + JSON output. + -r, --replace Replace file when trying to normalize it instead of + creating a new one. + -f, --force Replace file without asking if you are sure, use this + flag with caution. + -t THRESHOLD, --threshold THRESHOLD + Define a custom maximum amount of chaos allowed in + decoded content. 0. <= chaos <= 1. + --version Show version information and exit. +``` + +```bash +normalizer ./data/sample.1.fr.srt +``` + +or + +```bash +python -m charset_normalizer ./data/sample.1.fr.srt +``` + +🎉 Since version 1.4.0 the CLI produce easily usable stdout result in JSON format. + +```json +{ + "path": "/home/default/projects/charset_normalizer/data/sample.1.fr.srt", + "encoding": "cp1252", + "encoding_aliases": [ + "1252", + "windows_1252" + ], + "alternative_encodings": [ + "cp1254", + "cp1256", + "cp1258", + "iso8859_14", + "iso8859_15", + "iso8859_16", + "iso8859_3", + "iso8859_9", + "latin_1", + "mbcs" + ], + "language": "French", + "alphabets": [ + "Basic Latin", + "Latin-1 Supplement" + ], + "has_sig_or_bom": false, + "chaos": 0.149, + "coherence": 97.152, + "unicode_path": null, + "is_preferred": true +} +``` + +### Python +*Just print out normalized text* +```python +from charset_normalizer import from_path + +results = from_path('./my_subtitle.srt') + +print(str(results.best())) +``` + +*Upgrade your code without effort* +```python +from charset_normalizer import detect +``` + +The above code will behave the same as **chardet**. We ensure that we offer the best (reasonable) BC result possible. + +See the docs for advanced usage : [readthedocs.io](https://charset-normalizer.readthedocs.io/en/latest/) + +## 😇 Why + +When I started using Chardet, I noticed that it was not suited to my expectations, and I wanted to propose a +reliable alternative using a completely different method. Also! I never back down on a good challenge! + +I **don't care** about the **originating charset** encoding, because **two different tables** can +produce **two identical rendered string.** +What I want is to get readable text, the best I can. + +In a way, **I'm brute forcing text decoding.** How cool is that ? 😎 + +Don't confuse package **ftfy** with charset-normalizer or chardet. ftfy goal is to repair Unicode string whereas charset-normalizer to convert raw file in unknown encoding to unicode. + +## 🍰 How + + - Discard all charset encoding table that could not fit the binary content. + - Measure noise, or the mess once opened (by chunks) with a corresponding charset encoding. + - Extract matches with the lowest mess detected. + - Additionally, we measure coherence / probe for a language. + +**Wait a minute**, what is noise/mess and coherence according to **YOU ?** + +*Noise :* I opened hundred of text files, **written by humans**, with the wrong encoding table. **I observed**, then +**I established** some ground rules about **what is obvious** when **it seems like** a mess (aka. defining noise in rendered text). + I know that my interpretation of what is noise is probably incomplete, feel free to contribute in order to + improve or rewrite it. + +*Coherence :* For each language there is on earth, we have computed ranked letter appearance occurrences (the best we can). So I thought +that intel is worth something here. So I use those records against decoded text to check if I can detect intelligent design. + +## ⚡ Known limitations + + - Language detection is unreliable when text contains two or more languages sharing identical letters. (eg. HTML (english tags) + Turkish content (Sharing Latin characters)) + - Every charset detector heavily depends on sufficient content. In common cases, do not bother run detection on very tiny content. + +## ⚠️ About Python EOLs + +**If you are running:** + +- Python >=2.7,<3.5: Unsupported +- Python 3.5: charset-normalizer < 2.1 +- Python 3.6: charset-normalizer < 3.1 + +Upgrade your Python interpreter as soon as possible. + +## 👤 Contributing + +Contributions, issues and feature requests are very much welcome.
+Feel free to check [issues page](https://github.com/ousret/charset_normalizer/issues) if you want to contribute. + +## 📝 License + +Copyright © [Ahmed TAHRI @Ousret](https://github.com/Ousret).
+This project is [MIT](https://github.com/Ousret/charset_normalizer/blob/master/LICENSE) licensed. + +Characters frequencies used in this project © 2012 [Denny Vrandečić](http://simia.net/letters/) + +## 💼 For Enterprise + +Professional support for charset-normalizer is available as part of the [Tidelift +Subscription][1]. Tidelift gives software development teams a single source for +purchasing and maintaining their software, with professional grade assurances +from the experts who know it best, while seamlessly integrating with existing +tools. + +[1]: https://tidelift.com/subscription/pkg/pypi-charset-normalizer?utm_source=pypi-charset-normalizer&utm_medium=readme + +[![OpenSSF Best Practices](https://www.bestpractices.dev/projects/7297/badge)](https://www.bestpractices.dev/projects/7297) + +# Changelog +All notable changes to charset-normalizer will be documented in this file. This project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0.html). +The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.0.0/). + +## [3.4.9](https://github.com/Ousret/charset_normalizer/compare/3.4.8...3.4.9) (2026-07-07) + +### Fixed +- Regression in our fallback path leading to a decode error. (#771) + We've yanked 3.4.8 as a result of that bug. + +## [3.4.8](https://github.com/Ousret/charset_normalizer/compare/3.4.7...3.4.8) (2026-07-06) + +### Fixed +- Wall import time due to cascade codec imports for our multibyte first sort of iana supported codecs (#742) +- Unnecessary json import at runtime (#753) +- Inverse capitalization not seen by noise detector (#731) + +### Changed +- No longer holding a global cache for our noise / coherence measurements. Relax RSS memory usage. +- Micro-optimizations in our noise / coherence measurements. +- No longer using regex search by default for our preemptive charset mark algorithm. +- Raised upperbound of setuptools to v83. +- Raised upperbound of mypy(c) to v2.1. + +### Removed +- Redundant UTF7 BOM marker (#730) + +## [3.4.7](https://github.com/Ousret/charset_normalizer/compare/3.4.6...3.4.7) (2026-04-02) + +### Changed +- Pre-built optimized version using mypy[c] v1.20. +- Relax `setuptools` constraint to `setuptools>=68,<82.1`. + +### Fixed +- Correctly remove SIG remnant in utf-7 decoded string. (#718) (#716) + +## [3.4.6](https://github.com/Ousret/charset_normalizer/compare/3.4.5...3.4.6) (2026-03-15) + +### Changed +- Flattened the logic in `charset_normalizer.md` for higher performance. Removed `eligible(..)` and `feed(...)` + in favor of `feed_info(...)`. +- Raised upper bound for mypy[c] to 1.20, for our optimized version. +- Updated `UNICODE_RANGES_COMBINED` using Unicode blocks v17. + +### Fixed +- Edge case where noise difference between two candidates can be almost insignificant. (#672) +- CLI `--normalize` writing to wrong path when passing multiple files in. (#702) + +### Misc +- Freethreaded pre-built wheels now shipped in PyPI starting with 3.14t. (#616) + +## [3.4.5](https://github.com/Ousret/charset_normalizer/compare/3.4.4...3.4.5) (2026-03-06) + +### Changed +- Update `setuptools` constraint to `setuptools>=68,<=82`. +- Raised upper bound of mypyc for the optional pre-built extension to v1.19.1 + +### Fixed +- Add explicit link to lib math in our optimized build. (#692) +- Logger level not restored correctly for empty byte sequences. (#701) +- TypeError when passing bytearray to from_bytes. (#703) + +### Misc +- Applied safe micro-optimizations in both our noise detector and language detector. +- Rewrote the `query_yes_no` function (inside CLI) to avoid using ambiguous licensed code. +- Added `cd.py` submodule into mypyc optional compilation to reduce further the performance impact. + +## [3.4.4](https://github.com/Ousret/charset_normalizer/compare/3.4.2...3.4.4) (2025-10-13) + +### Changed +- Bound `setuptools` to a specific constraint `setuptools>=68,<=81`. +- Raised upper bound of mypyc for the optional pre-built extension to v1.18.2 + +### Removed +- `setuptools-scm` as a build dependency. + +### Misc +- Enforced hashes in `dev-requirements.txt` and created `ci-requirements.txt` for security purposes. +- Additional pre-built wheels for riscv64, s390x, and armv7l architectures. +- Restore ` multiple.intoto.jsonl` in GitHub releases in addition to individual attestation file per wheel. + +## [3.4.3](https://github.com/Ousret/charset_normalizer/compare/3.4.2...3.4.3) (2025-08-09) + +### Changed +- mypy(c) is no longer a required dependency at build time if `CHARSET_NORMALIZER_USE_MYPYC` isn't set to `1`. (#595) (#583) +- automatically lower confidence on small bytes samples that are not Unicode in `detect` output legacy function. (#391) + +### Added +- Custom build backend to overcome inability to mark mypy as an optional dependency in the build phase. +- Support for Python 3.14 + +### Fixed +- sdist archive contained useless directories. +- automatically fallback on valid UTF-16 or UTF-32 even if the md says it's noisy. (#633) + +### Misc +- SBOM are automatically published to the relevant GitHub release to comply with regulatory changes. + Each published wheel comes with its SBOM. We choose CycloneDX as the format. +- Prebuilt optimized wheel are no longer distributed by default for CPython 3.7 due to a change in cibuildwheel. + +## [3.4.2](https://github.com/Ousret/charset_normalizer/compare/3.4.1...3.4.2) (2025-05-02) + +### Fixed +- Addressed the DeprecationWarning in our CLI regarding `argparse.FileType` by backporting the target class into the package. (#591) +- Improved the overall reliability of the detector with CJK Ideographs. (#605) (#587) + +### Changed +- Optional mypyc compilation upgraded to version 1.15 for Python >= 3.8 + +## [3.4.1](https://github.com/Ousret/charset_normalizer/compare/3.4.0...3.4.1) (2024-12-24) + +### Changed +- Project metadata are now stored using `pyproject.toml` instead of `setup.cfg` using setuptools as the build backend. +- Enforce annotation delayed loading for a simpler and consistent types in the project. +- Optional mypyc compilation upgraded to version 1.14 for Python >= 3.8 + +### Added +- pre-commit configuration. +- noxfile. + +### Removed +- `build-requirements.txt` as per using `pyproject.toml` native build configuration. +- `bin/integration.py` and `bin/serve.py` in favor of downstream integration test (see noxfile). +- `setup.cfg` in favor of `pyproject.toml` metadata configuration. +- Unused `utils.range_scan` function. + +### Fixed +- Converting content to Unicode bytes may insert `utf_8` instead of preferred `utf-8`. (#572) +- Deprecation warning "'count' is passed as positional argument" when converting to Unicode bytes on Python 3.13+ + +## [3.4.0](https://github.com/Ousret/charset_normalizer/compare/3.3.2...3.4.0) (2024-10-08) + +### Added +- Argument `--no-preemptive` in the CLI to prevent the detector to search for hints. +- Support for Python 3.13 (#512) + +### Fixed +- Relax the TypeError exception thrown when trying to compare a CharsetMatch with anything else than a CharsetMatch. +- Improved the general reliability of the detector based on user feedbacks. (#520) (#509) (#498) (#407) (#537) +- Declared charset in content (preemptive detection) not changed when converting to utf-8 bytes. (#381) + +## [3.3.2](https://github.com/Ousret/charset_normalizer/compare/3.3.1...3.3.2) (2023-10-31) + +### Fixed +- Unintentional memory usage regression when using large payload that match several encoding (#376) +- Regression on some detection case showcased in the documentation (#371) + +### Added +- Noise (md) probe that identify malformed arabic representation due to the presence of letters in isolated form (credit to my wife) + +## [3.3.1](https://github.com/Ousret/charset_normalizer/compare/3.3.0...3.3.1) (2023-10-22) + +### Changed +- Optional mypyc compilation upgraded to version 1.6.1 for Python >= 3.8 +- Improved the general detection reliability based on reports from the community + +## [3.3.0](https://github.com/Ousret/charset_normalizer/compare/3.2.0...3.3.0) (2023-09-30) + +### Added +- Allow to execute the CLI (e.g. normalizer) through `python -m charset_normalizer.cli` or `python -m charset_normalizer` +- Support for 9 forgotten encoding that are supported by Python but unlisted in `encoding.aliases` as they have no alias (#323) + +### Removed +- (internal) Redundant utils.is_ascii function and unused function is_private_use_only +- (internal) charset_normalizer.assets is moved inside charset_normalizer.constant + +### Changed +- (internal) Unicode code blocks in constants are updated using the latest v15.0.0 definition to improve detection +- Optional mypyc compilation upgraded to version 1.5.1 for Python >= 3.8 + +### Fixed +- Unable to properly sort CharsetMatch when both chaos/noise and coherence were close due to an unreachable condition in \_\_lt\_\_ (#350) + +## [3.2.0](https://github.com/Ousret/charset_normalizer/compare/3.1.0...3.2.0) (2023-06-07) + +### Changed +- Typehint for function `from_path` no longer enforce `PathLike` as its first argument +- Minor improvement over the global detection reliability + +### Added +- Introduce function `is_binary` that relies on main capabilities, and optimized to detect binaries +- Propagate `enable_fallback` argument throughout `from_bytes`, `from_path`, and `from_fp` that allow a deeper control over the detection (default True) +- Explicit support for Python 3.12 + +### Fixed +- Edge case detection failure where a file would contain 'very-long' camel cased word (Issue #289) + +## [3.1.0](https://github.com/Ousret/charset_normalizer/compare/3.0.1...3.1.0) (2023-03-06) + +### Added +- Argument `should_rename_legacy` for legacy function `detect` and disregard any new arguments without errors (PR #262) + +### Removed +- Support for Python 3.6 (PR #260) + +### Changed +- Optional speedup provided by mypy/c 1.0.1 + +## [3.0.1](https://github.com/Ousret/charset_normalizer/compare/3.0.0...3.0.1) (2022-11-18) + +### Fixed +- Multi-bytes cutter/chunk generator did not always cut correctly (PR #233) + +### Changed +- Speedup provided by mypy/c 0.990 on Python >= 3.7 + +## [3.0.0](https://github.com/Ousret/charset_normalizer/compare/2.1.1...3.0.0) (2022-10-20) + +### Added +- Extend the capability of explain=True when cp_isolation contains at most two entries (min one), will log in details of the Mess-detector results +- Support for alternative language frequency set in charset_normalizer.assets.FREQUENCIES +- Add parameter `language_threshold` in `from_bytes`, `from_path` and `from_fp` to adjust the minimum expected coherence ratio +- `normalizer --version` now specify if current version provide extra speedup (meaning mypyc compilation whl) + +### Changed +- Build with static metadata using 'build' frontend +- Make the language detection stricter +- Optional: Module `md.py` can be compiled using Mypyc to provide an extra speedup up to 4x faster than v2.1 + +### Fixed +- CLI with opt --normalize fail when using full path for files +- TooManyAccentuatedPlugin induce false positive on the mess detection when too few alpha character have been fed to it +- Sphinx warnings when generating the documentation + +### Removed +- Coherence detector no longer return 'Simple English' instead return 'English' +- Coherence detector no longer return 'Classical Chinese' instead return 'Chinese' +- Breaking: Method `first()` and `best()` from CharsetMatch +- UTF-7 will no longer appear as "detected" without a recognized SIG/mark (is unreliable/conflict with ASCII) +- Breaking: Class aliases CharsetDetector, CharsetDoctor, CharsetNormalizerMatch and CharsetNormalizerMatches +- Breaking: Top-level function `normalize` +- Breaking: Properties `chaos_secondary_pass`, `coherence_non_latin` and `w_counter` from CharsetMatch +- Support for the backport `unicodedata2` + +## [3.0.0rc1](https://github.com/Ousret/charset_normalizer/compare/3.0.0b2...3.0.0rc1) (2022-10-18) + +### Added +- Extend the capability of explain=True when cp_isolation contains at most two entries (min one), will log in details of the Mess-detector results +- Support for alternative language frequency set in charset_normalizer.assets.FREQUENCIES +- Add parameter `language_threshold` in `from_bytes`, `from_path` and `from_fp` to adjust the minimum expected coherence ratio + +### Changed +- Build with static metadata using 'build' frontend +- Make the language detection stricter + +### Fixed +- CLI with opt --normalize fail when using full path for files +- TooManyAccentuatedPlugin induce false positive on the mess detection when too few alpha character have been fed to it + +### Removed +- Coherence detector no longer return 'Simple English' instead return 'English' +- Coherence detector no longer return 'Classical Chinese' instead return 'Chinese' + +## [3.0.0b2](https://github.com/Ousret/charset_normalizer/compare/3.0.0b1...3.0.0b2) (2022-08-21) + +### Added +- `normalizer --version` now specify if current version provide extra speedup (meaning mypyc compilation whl) + +### Removed +- Breaking: Method `first()` and `best()` from CharsetMatch +- UTF-7 will no longer appear as "detected" without a recognized SIG/mark (is unreliable/conflict with ASCII) + +### Fixed +- Sphinx warnings when generating the documentation + +## [3.0.0b1](https://github.com/Ousret/charset_normalizer/compare/2.1.0...3.0.0b1) (2022-08-15) + +### Changed +- Optional: Module `md.py` can be compiled using Mypyc to provide an extra speedup up to 4x faster than v2.1 + +### Removed +- Breaking: Class aliases CharsetDetector, CharsetDoctor, CharsetNormalizerMatch and CharsetNormalizerMatches +- Breaking: Top-level function `normalize` +- Breaking: Properties `chaos_secondary_pass`, `coherence_non_latin` and `w_counter` from CharsetMatch +- Support for the backport `unicodedata2` + +## [2.1.1](https://github.com/Ousret/charset_normalizer/compare/2.1.0...2.1.1) (2022-08-19) + +### Deprecated +- Function `normalize` scheduled for removal in 3.0 + +### Changed +- Removed useless call to decode in fn is_unprintable (#206) + +### Fixed +- Third-party library (i18n xgettext) crashing not recognizing utf_8 (PEP 263) with underscore from [@aleksandernovikov](https://github.com/aleksandernovikov) (#204) + +## [2.1.0](https://github.com/Ousret/charset_normalizer/compare/2.0.12...2.1.0) (2022-06-19) + +### Added +- Output the Unicode table version when running the CLI with `--version` (PR #194) + +### Changed +- Reuse decoded buffer for single byte character sets from [@nijel](https://github.com/nijel) (PR #175) +- Fixing some performance bottlenecks from [@deedy5](https://github.com/deedy5) (PR #183) + +### Fixed +- Workaround potential bug in cpython with Zero Width No-Break Space located in Arabic Presentation Forms-B, Unicode 1.1 not acknowledged as space (PR #175) +- CLI default threshold aligned with the API threshold from [@oleksandr-kuzmenko](https://github.com/oleksandr-kuzmenko) (PR #181) + +### Removed +- Support for Python 3.5 (PR #192) + +### Deprecated +- Use of backport unicodedata from `unicodedata2` as Python is quickly catching up, scheduled for removal in 3.0 (PR #194) + +## [2.0.12](https://github.com/Ousret/charset_normalizer/compare/2.0.11...2.0.12) (2022-02-12) + +### Fixed +- ASCII miss-detection on rare cases (PR #170) + +## [2.0.11](https://github.com/Ousret/charset_normalizer/compare/2.0.10...2.0.11) (2022-01-30) + +### Added +- Explicit support for Python 3.11 (PR #164) + +### Changed +- The logging behavior have been completely reviewed, now using only TRACE and DEBUG levels (PR #163 #165) + +## [2.0.10](https://github.com/Ousret/charset_normalizer/compare/2.0.9...2.0.10) (2022-01-04) + +### Fixed +- Fallback match entries might lead to UnicodeDecodeError for large bytes sequence (PR #154) + +### Changed +- Skipping the language-detection (CD) on ASCII (PR #155) + +## [2.0.9](https://github.com/Ousret/charset_normalizer/compare/2.0.8...2.0.9) (2021-12-03) + +### Changed +- Moderating the logging impact (since 2.0.8) for specific environments (PR #147) + +### Fixed +- Wrong logging level applied when setting kwarg `explain` to True (PR #146) + +## [2.0.8](https://github.com/Ousret/charset_normalizer/compare/2.0.7...2.0.8) (2021-11-24) +### Changed +- Improvement over Vietnamese detection (PR #126) +- MD improvement on trailing data and long foreign (non-pure latin) data (PR #124) +- Efficiency improvements in cd/alphabet_languages from [@adbar](https://github.com/adbar) (PR #122) +- call sum() without an intermediary list following PEP 289 recommendations from [@adbar](https://github.com/adbar) (PR #129) +- Code style as refactored by Sourcery-AI (PR #131) +- Minor adjustment on the MD around european words (PR #133) +- Remove and replace SRTs from assets / tests (PR #139) +- Initialize the library logger with a `NullHandler` by default from [@nmaynes](https://github.com/nmaynes) (PR #135) +- Setting kwarg `explain` to True will add provisionally (bounded to function lifespan) a specific stream handler (PR #135) + +### Fixed +- Fix large (misleading) sequence giving UnicodeDecodeError (PR #137) +- Avoid using too insignificant chunk (PR #137) + +### Added +- Add and expose function `set_logging_handler` to configure a specific StreamHandler from [@nmaynes](https://github.com/nmaynes) (PR #135) +- Add `CHANGELOG.md` entries, format is based on [Keep a Changelog](https://keepachangelog.com/en/1.0.0/) (PR #141) + +## [2.0.7](https://github.com/Ousret/charset_normalizer/compare/2.0.6...2.0.7) (2021-10-11) +### Added +- Add support for Kazakh (Cyrillic) language detection (PR #109) + +### Changed +- Further, improve inferring the language from a given single-byte code page (PR #112) +- Vainly trying to leverage PEP263 when PEP3120 is not supported (PR #116) +- Refactoring for potential performance improvements in loops from [@adbar](https://github.com/adbar) (PR #113) +- Various detection improvement (MD+CD) (PR #117) + +### Removed +- Remove redundant logging entry about detected language(s) (PR #115) + +### Fixed +- Fix a minor inconsistency between Python 3.5 and other versions regarding language detection (PR #117 #102) + +## [2.0.6](https://github.com/Ousret/charset_normalizer/compare/2.0.5...2.0.6) (2021-09-18) +### Fixed +- Unforeseen regression with the loss of the backward-compatibility with some older minor of Python 3.5.x (PR #100) +- Fix CLI crash when using --minimal output in certain cases (PR #103) + +### Changed +- Minor improvement to the detection efficiency (less than 1%) (PR #106 #101) + +## [2.0.5](https://github.com/Ousret/charset_normalizer/compare/2.0.4...2.0.5) (2021-09-14) +### Changed +- The project now comply with: flake8, mypy, isort and black to ensure a better overall quality (PR #81) +- The BC-support with v1.x was improved, the old staticmethods are restored (PR #82) +- The Unicode detection is slightly improved (PR #93) +- Add syntax sugar \_\_bool\_\_ for results CharsetMatches list-container (PR #91) + +### Removed +- The project no longer raise warning on tiny content given for detection, will be simply logged as warning instead (PR #92) + +### Fixed +- In some rare case, the chunks extractor could cut in the middle of a multi-byte character and could mislead the mess detection (PR #95) +- Some rare 'space' characters could trip up the UnprintablePlugin/Mess detection (PR #96) +- The MANIFEST.in was not exhaustive (PR #78) + +## [2.0.4](https://github.com/Ousret/charset_normalizer/compare/2.0.3...2.0.4) (2021-07-30) +### Fixed +- The CLI no longer raise an unexpected exception when no encoding has been found (PR #70) +- Fix accessing the 'alphabets' property when the payload contains surrogate characters (PR #68) +- The logger could mislead (explain=True) on detected languages and the impact of one MBCS match (PR #72) +- Submatch factoring could be wrong in rare edge cases (PR #72) +- Multiple files given to the CLI were ignored when publishing results to STDOUT. (After the first path) (PR #72) +- Fix line endings from CRLF to LF for certain project files (PR #67) + +### Changed +- Adjust the MD to lower the sensitivity, thus improving the global detection reliability (PR #69 #76) +- Allow fallback on specified encoding if any (PR #71) + +## [2.0.3](https://github.com/Ousret/charset_normalizer/compare/2.0.2...2.0.3) (2021-07-16) +### Changed +- Part of the detection mechanism has been improved to be less sensitive, resulting in more accurate detection results. Especially ASCII. (PR #63) +- According to the community wishes, the detection will fall back on ASCII or UTF-8 in a last-resort case. (PR #64) + +## [2.0.2](https://github.com/Ousret/charset_normalizer/compare/2.0.1...2.0.2) (2021-07-15) +### Fixed +- Empty/Too small JSON payload miss-detection fixed. Report from [@tseaver](https://github.com/tseaver) (PR #59) + +### Changed +- Don't inject unicodedata2 into sys.modules from [@akx](https://github.com/akx) (PR #57) + +## [2.0.1](https://github.com/Ousret/charset_normalizer/compare/2.0.0...2.0.1) (2021-07-13) +### Fixed +- Make it work where there isn't a filesystem available, dropping assets frequencies.json. Report from [@sethmlarson](https://github.com/sethmlarson). (PR #55) +- Using explain=False permanently disable the verbose output in the current runtime (PR #47) +- One log entry (language target preemptive) was not show in logs when using explain=True (PR #47) +- Fix undesired exception (ValueError) on getitem of instance CharsetMatches (PR #52) + +### Changed +- Public function normalize default args values were not aligned with from_bytes (PR #53) + +### Added +- You may now use charset aliases in cp_isolation and cp_exclusion arguments (PR #47) + +## [2.0.0](https://github.com/Ousret/charset_normalizer/compare/1.4.1...2.0.0) (2021-07-02) +### Changed +- 4x to 5 times faster than the previous 1.4.0 release. At least 2x faster than Chardet. +- Accent has been made on UTF-8 detection, should perform rather instantaneous. +- The backward compatibility with Chardet has been greatly improved. The legacy detect function returns an identical charset name whenever possible. +- The detection mechanism has been slightly improved, now Turkish content is detected correctly (most of the time) +- The program has been rewritten to ease the readability and maintainability. (+Using static typing)+ +- utf_7 detection has been reinstated. + +### Removed +- This package no longer require anything when used with Python 3.5 (Dropped cached_property) +- Removed support for these languages: Catalan, Esperanto, Kazakh, Baque, Volapük, Azeri, Galician, Nynorsk, Macedonian, and Serbocroatian. +- The exception hook on UnicodeDecodeError has been removed. + +### Deprecated +- Methods coherence_non_latin, w_counter, chaos_secondary_pass of the class CharsetMatch are now deprecated and scheduled for removal in v3.0 + +### Fixed +- The CLI output used the relative path of the file(s). Should be absolute. + +## [1.4.1](https://github.com/Ousret/charset_normalizer/compare/1.4.0...1.4.1) (2021-05-28) +### Fixed +- Logger configuration/usage no longer conflict with others (PR #44) + +## [1.4.0](https://github.com/Ousret/charset_normalizer/compare/1.3.9...1.4.0) (2021-05-21) +### Removed +- Using standard logging instead of using the package loguru. +- Dropping nose test framework in favor of the maintained pytest. +- Choose to not use dragonmapper package to help with gibberish Chinese/CJK text. +- Require cached_property only for Python 3.5 due to constraint. Dropping for every other interpreter version. +- Stop support for UTF-7 that does not contain a SIG. +- Dropping PrettyTable, replaced with pure JSON output in CLI. + +### Fixed +- BOM marker in a CharsetNormalizerMatch instance could be False in rare cases even if obviously present. Due to the sub-match factoring process. +- Not searching properly for the BOM when trying utf32/16 parent codec. + +### Changed +- Improving the package final size by compressing frequencies.json. +- Huge improvement over the larges payload. + +### Added +- CLI now produces JSON consumable output. +- Return ASCII if given sequences fit. Given reasonable confidence. + +## [1.3.9](https://github.com/Ousret/charset_normalizer/compare/1.3.8...1.3.9) (2021-05-13) + +### Fixed +- In some very rare cases, you may end up getting encode/decode errors due to a bad bytes payload (PR #40) + +## [1.3.8](https://github.com/Ousret/charset_normalizer/compare/1.3.7...1.3.8) (2021-05-12) + +### Fixed +- Empty given payload for detection may cause an exception if trying to access the `alphabets` property. (PR #39) + +## [1.3.7](https://github.com/Ousret/charset_normalizer/compare/1.3.6...1.3.7) (2021-05-12) + +### Fixed +- The legacy detect function should return UTF-8-SIG if sig is present in the payload. (PR #38) + +## [1.3.6](https://github.com/Ousret/charset_normalizer/compare/1.3.5...1.3.6) (2021-02-09) + +### Changed +- Amend the previous release to allow prettytable 2.0 (PR #35) + +## [1.3.5](https://github.com/Ousret/charset_normalizer/compare/1.3.4...1.3.5) (2021-02-08) + +### Fixed +- Fix error while using the package with a python pre-release interpreter (PR #33) + +### Changed +- Dependencies refactoring, constraints revised. + +### Added +- Add python 3.9 and 3.10 to the supported interpreters + +MIT License + +Copyright (c) 2025 TAHRI Ahmed R. + +Permission is hereby granted, free of charge, to any person obtaining a copy +of this software and associated documentation files (the "Software"), to deal +in the Software without restriction, including without limitation the rights +to use, copy, modify, merge, publish, distribute, sublicense, and/or sell +copies of the Software, and to permit persons to whom the Software is +furnished to do so, subject to the following conditions: + +The above copyright notice and this permission notice shall be included in all +copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE +SOFTWARE. diff --git a/venv/lib/python3.11/site-packages/charset_normalizer-3.4.9.dist-info/RECORD b/venv/lib/python3.11/site-packages/charset_normalizer-3.4.9.dist-info/RECORD new file mode 100644 index 0000000000000000000000000000000000000000..b846266f8c7a8e864d6086264b96fd01d85418d3 --- /dev/null +++ b/venv/lib/python3.11/site-packages/charset_normalizer-3.4.9.dist-info/RECORD @@ -0,0 +1,36 @@ +../../../bin/normalizer,sha256=ieF4ua2t96sQD3N96BFg-0KwnxJ9fWHPzPUsLBvIO9w,244 +ada92cb5d92a588d1b93__mypyc.cpython-311-x86_64-linux-gnu.so,sha256=v_iWTzRsZXn2W3DwYZnauFr4Yf0A8w8xs_8j7mfTbFw,445952 +charset_normalizer-3.4.9.dist-info/INSTALLER,sha256=zuuue4knoyJ-UwPPXg8fezS7VCrXJQrAP7zeNuwvFQg,4 +charset_normalizer-3.4.9.dist-info/METADATA,sha256=DdPeF2CbDbZL0dRkPFvQ3TW16zxb53-LF7wZDy9KKsA,41678 +charset_normalizer-3.4.9.dist-info/RECORD,, +charset_normalizer-3.4.9.dist-info/WHEEL,sha256=nn5AcWa_wYrb7xwtxEqCCax8LY-Ol14wJNGDK76X20E,190 +charset_normalizer-3.4.9.dist-info/entry_points.txt,sha256=ADSTKrkXZ3hhdOVFi6DcUEHQRS0xfxDIE_pEz4wLIXA,65 +charset_normalizer-3.4.9.dist-info/licenses/LICENSE,sha256=bQ1Bv-FwrGx9wkjJpj4lTQ-0WmDVCoJX0K-SxuJJuIc,1071 +charset_normalizer-3.4.9.dist-info/top_level.txt,sha256=y65Zf_GLs5FHscGHzcUTGAldXcp5mEVXbh8Mo0ZlmWs,47 +charset_normalizer/__init__.py,sha256=OKRxRv2Zhnqk00tqkN0c1BtJjm165fWXLydE52IKuHc,1590 +charset_normalizer/__main__.py,sha256=yzYxMR-IhKRHYwcSlavEv8oGdwxsR89mr2X09qXGdps,109 +charset_normalizer/__pycache__/__init__.cpython-311.pyc,, +charset_normalizer/__pycache__/__main__.cpython-311.pyc,, +charset_normalizer/__pycache__/api.cpython-311.pyc,, +charset_normalizer/__pycache__/cd.cpython-311.pyc,, +charset_normalizer/__pycache__/constant.cpython-311.pyc,, +charset_normalizer/__pycache__/legacy.cpython-311.pyc,, +charset_normalizer/__pycache__/md.cpython-311.pyc,, +charset_normalizer/__pycache__/models.cpython-311.pyc,, +charset_normalizer/__pycache__/utils.cpython-311.pyc,, +charset_normalizer/__pycache__/version.cpython-311.pyc,, +charset_normalizer/api.py,sha256=kXhFlZNMi6_p0YhbTeGTswoK_DZ6oeAdprPxE8F4yfM,42325 +charset_normalizer/cd.cpython-311-x86_64-linux-gnu.so,sha256=AgR449IbdARrS3y2V8xOUmX_bYkKmVsoJRAGPmMJuwg,16040 +charset_normalizer/cd.py,sha256=6dJOZvd0rrEEWvkx54kAEy9qAP_uIuiWMAi5wX8OZsY,15980 +charset_normalizer/cli/__init__.py,sha256=D8I86lFk2-py45JvqxniTirSj_sFyE6sjaY_0-G1shc,136 +charset_normalizer/cli/__main__.py,sha256=NPK3yYAkXXE7Uvs6IqijkgZzS6G6fguRFuKXzgpf8Uc,11949 +charset_normalizer/cli/__pycache__/__init__.cpython-311.pyc,, +charset_normalizer/cli/__pycache__/__main__.cpython-311.pyc,, +charset_normalizer/constant.py,sha256=vp9HvaompccS71BXPZk8lVahonkPbBpeVE3NzKZe2sk,44624 +charset_normalizer/legacy.py,sha256=bgkdEvubTCOPlMKOzuENXHMiarh36VaGbRvWSlIr1KA,2651 +charset_normalizer/md.cpython-311-x86_64-linux-gnu.so,sha256=vXEPVSHEXBrFgbT6a_6DmmBAYZhSFnewl_sVGLNGyaA,16040 +charset_normalizer/md.py,sha256=bwD18o2xLkGxBkuM1HPnYULsLBzNVe09j727Tng2tJw,32641 +charset_normalizer/models.py,sha256=BAYguAENiSKBb7mf3DKzY3qgqjrjBeP0dySCmQSieXE,12830 +charset_normalizer/py.typed,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0 +charset_normalizer/utils.py,sha256=fMCjgJXzMFegyO-gX-NElZi1rmdF1y1xax2Y-V2eudo,13537 +charset_normalizer/version.py,sha256=FUQoaRCvGW_xwCoesgsGTwzekLTlCkAJr7diNpv-gPI,115 diff --git a/venv/lib/python3.11/site-packages/charset_normalizer-3.4.9.dist-info/WHEEL b/venv/lib/python3.11/site-packages/charset_normalizer-3.4.9.dist-info/WHEEL new file mode 100644 index 0000000000000000000000000000000000000000..41f8b94adac6cb04c6ed778c5dc6a98819731095 --- /dev/null +++ b/venv/lib/python3.11/site-packages/charset_normalizer-3.4.9.dist-info/WHEEL @@ -0,0 +1,7 @@ +Wheel-Version: 1.0 +Generator: setuptools (83.0.0) +Root-Is-Purelib: false +Tag: cp311-cp311-manylinux_2_17_x86_64 +Tag: cp311-cp311-manylinux2014_x86_64 +Tag: cp311-cp311-manylinux_2_28_x86_64 + diff --git a/venv/lib/python3.11/site-packages/charset_normalizer-3.4.9.dist-info/entry_points.txt b/venv/lib/python3.11/site-packages/charset_normalizer-3.4.9.dist-info/entry_points.txt new file mode 100644 index 0000000000000000000000000000000000000000..65619e73ec06c20c2a70c9507b872ad624d1a85c --- /dev/null +++ b/venv/lib/python3.11/site-packages/charset_normalizer-3.4.9.dist-info/entry_points.txt @@ -0,0 +1,2 @@ +[console_scripts] +normalizer = charset_normalizer.cli:cli_detect diff --git a/venv/lib/python3.11/site-packages/charset_normalizer-3.4.9.dist-info/licenses/LICENSE b/venv/lib/python3.11/site-packages/charset_normalizer-3.4.9.dist-info/licenses/LICENSE new file mode 100644 index 0000000000000000000000000000000000000000..9725772c7967075d97dc78d60f3735435eccba63 --- /dev/null +++ b/venv/lib/python3.11/site-packages/charset_normalizer-3.4.9.dist-info/licenses/LICENSE @@ -0,0 +1,21 @@ +MIT License + +Copyright (c) 2025 TAHRI Ahmed R. + +Permission is hereby granted, free of charge, to any person obtaining a copy +of this software and associated documentation files (the "Software"), to deal +in the Software without restriction, including without limitation the rights +to use, copy, modify, merge, publish, distribute, sublicense, and/or sell +copies of the Software, and to permit persons to whom the Software is +furnished to do so, subject to the following conditions: + +The above copyright notice and this permission notice shall be included in all +copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE +SOFTWARE. diff --git a/venv/lib/python3.11/site-packages/charset_normalizer-3.4.9.dist-info/top_level.txt b/venv/lib/python3.11/site-packages/charset_normalizer-3.4.9.dist-info/top_level.txt new file mode 100644 index 0000000000000000000000000000000000000000..b7995f2d7d1b63b6bbde1fd0793288516055c68f --- /dev/null +++ b/venv/lib/python3.11/site-packages/charset_normalizer-3.4.9.dist-info/top_level.txt @@ -0,0 +1,2 @@ +ada92cb5d92a588d1b93__mypyc +charset_normalizer diff --git a/venv/lib/python3.11/site-packages/charset_normalizer/__init__.py b/venv/lib/python3.11/site-packages/charset_normalizer/__init__.py new file mode 100644 index 0000000000000000000000000000000000000000..0d3a37990145e94ad85406166dbaf52f4c311e5e --- /dev/null +++ b/venv/lib/python3.11/site-packages/charset_normalizer/__init__.py @@ -0,0 +1,48 @@ +""" +Charset-Normalizer +~~~~~~~~~~~~~~ +The Real First Universal Charset Detector. +A library that helps you read text from an unknown charset encoding. +Motivated by chardet, This package is trying to resolve the issue by taking a new approach. +All IANA character set names for which the Python core library provides codecs are supported. + +Basic usage: + >>> from charset_normalizer import from_bytes + >>> results = from_bytes('Bсеки човек има право на образование. Oбразованието!'.encode('utf_8')) + >>> best_guess = results.best() + >>> str(best_guess) + 'Bсеки човек има право на образование. Oбразованието!' + +Others methods and usages are available - see the full documentation +at . +:copyright: (c) 2021 by Ahmed TAHRI +:license: MIT, see LICENSE for more details. +""" + +from __future__ import annotations + +import logging + +from .api import from_bytes, from_fp, from_path, is_binary +from .legacy import detect +from .models import CharsetMatch, CharsetMatches +from .utils import set_logging_handler +from .version import VERSION, __version__ + +__all__ = ( + "from_fp", + "from_path", + "from_bytes", + "is_binary", + "detect", + "CharsetMatch", + "CharsetMatches", + "__version__", + "VERSION", + "set_logging_handler", +) + +# Attach a NullHandler to the top level logger by default +# https://docs.python.org/3.3/howto/logging.html#configuring-logging-for-a-library + +logging.getLogger("charset_normalizer").addHandler(logging.NullHandler()) diff --git a/venv/lib/python3.11/site-packages/charset_normalizer/__main__.py b/venv/lib/python3.11/site-packages/charset_normalizer/__main__.py new file mode 100644 index 0000000000000000000000000000000000000000..e0e76f7bfbb411d4424d3a1834b0ea803d80ea7e --- /dev/null +++ b/venv/lib/python3.11/site-packages/charset_normalizer/__main__.py @@ -0,0 +1,6 @@ +from __future__ import annotations + +from .cli import cli_detect + +if __name__ == "__main__": + cli_detect() diff --git a/venv/lib/python3.11/site-packages/charset_normalizer/api.py b/venv/lib/python3.11/site-packages/charset_normalizer/api.py new file mode 100644 index 0000000000000000000000000000000000000000..3046f978f086441d32964eec5c6fa59443698697 --- /dev/null +++ b/venv/lib/python3.11/site-packages/charset_normalizer/api.py @@ -0,0 +1,1065 @@ +from __future__ import annotations + +import logging +from functools import lru_cache +from os import PathLike +from typing import BinaryIO + +from .cd import ( + coherence_ratio, + encoding_languages, + mb_encoding_languages, + merge_coherence_ratios, +) +from .constant import ( + IANA_SUPPORTED, + IANA_SUPPORTED_SIMILAR, + TOO_BIG_SEQUENCE, + TOO_SMALL_SEQUENCE, + TRACE, +) +from .md import mess_ratio +from .models import CharsetMatch, CharsetMatches +from .utils import ( + any_specified_encoding, + cut_sequence_chunks, + iana_name, + identify_sig_or_bom, + is_multi_byte_encoding, + should_strip_sig_or_bom, +) + +logger = logging.getLogger("charset_normalizer") +explain_handler = logging.StreamHandler() +explain_handler.setFormatter( + logging.Formatter("%(asctime)s | %(levelname)s | %(message)s") +) + +# Pre-compute a reordered encoding list: multibyte first, then single-byte. +# This allows the mb_definitive_match optimization to fire earlier, skipping +# all single-byte encodings for genuine CJK content. Multibyte codecs +# hard-fail (UnicodeDecodeError) on single-byte data almost instantly, so +# testing them first costs negligible time for non-CJK files. +# Stable sort on a boolean key: multibyte (False) first, IANA order kept +# within each group. +IANA_SUPPORTED_MB_FIRST: list[str] = sorted( + IANA_SUPPORTED, key=lambda encoding: not is_multi_byte_encoding(encoding) +) + + +def from_bytes( + sequences: bytes | bytearray, + steps: int = 5, + chunk_size: int = 512, + threshold: float = 0.2, + cp_isolation: list[str] | None = None, + cp_exclusion: list[str] | None = None, + preemptive_behaviour: bool = True, + explain: bool = False, + language_threshold: float = 0.1, + enable_fallback: bool = True, +) -> CharsetMatches: + """ + Given a raw bytes sequence, return the best possibles charset usable to render str objects. + If there is no results, it is a strong indicator that the source is binary/not text. + By default, the process will extract 5 blocks of 512o each to assess the mess and coherence of a given sequence. + And will give up a particular code page after 20% of measured mess. Those criteria are customizable at will. + + The preemptive behavior DOES NOT replace the traditional detection workflow, it prioritize a particular code page + but never take it for granted. Can improve the performance. + + You may want to focus your attention to some code page or/and not others, use cp_isolation and cp_exclusion for that + purpose. + + This function will strip the SIG in the payload/sequence every time except on UTF-16, UTF-32. + By default the library does not setup any handler other than the NullHandler, if you choose to set the 'explain' + toggle to True it will alter the logger configuration to add a StreamHandler that is suitable for debugging. + Custom logging format and handler can be set manually. + """ + + if not isinstance(sequences, (bytearray, bytes)): + raise TypeError( + "Expected object of type bytes or bytearray, got: {}".format( + type(sequences) + ) + ) + + if explain: + previous_logger_level: int = logger.level + logger.addHandler(explain_handler) + logger.setLevel(TRACE) + + length: int = len(sequences) + + if length == 0: + logger.debug("Encoding detection on empty bytes, assuming utf_8 intention.") + if explain: # Defensive: ensure exit path clean handler + logger.removeHandler(explain_handler) + logger.setLevel(previous_logger_level) + return CharsetMatches([CharsetMatch(sequences, "utf_8", 0.0, False, [], "")]) + + if cp_isolation is not None: + logger.log( + TRACE, + "cp_isolation is set. use this flag for debugging purpose. " + "limited list of encoding allowed : %s.", + ", ".join(cp_isolation), + ) + cp_isolation = [iana_name(cp, False) for cp in cp_isolation] + else: + cp_isolation = [] + + if cp_exclusion is not None: + logger.log( + TRACE, + "cp_exclusion is set. use this flag for debugging purpose. " + "limited list of encoding excluded : %s.", + ", ".join(cp_exclusion), + ) + cp_exclusion = [iana_name(cp, False) for cp in cp_exclusion] + else: + cp_exclusion = [] + + if length <= (chunk_size * steps): + logger.log( + TRACE, + "override steps (%i) and chunk_size (%i) as content does not fit (%i byte(s) given) parameters.", + steps, + chunk_size, + length, + ) + steps = 1 + chunk_size = length + + if steps > 1 and length / steps < chunk_size: + chunk_size = int(length / steps) + + is_too_small_sequence: bool = len(sequences) < TOO_SMALL_SEQUENCE + is_too_large_sequence: bool = len(sequences) >= TOO_BIG_SEQUENCE + + if is_too_small_sequence: + logger.log( + TRACE, + "Trying to detect encoding from a tiny portion of ({}) byte(s).".format( + length + ), + ) + elif is_too_large_sequence: + logger.log( + TRACE, + "Using lazy str decoding because the payload is quite large, ({}) byte(s).".format( + length + ), + ) + + prioritized_encodings: list[str] = [] + + specified_encoding: str | None = ( + any_specified_encoding(sequences) if preemptive_behaviour else None + ) + + if specified_encoding is not None: + prioritized_encodings.append(specified_encoding) + logger.log( + TRACE, + "Detected declarative mark in sequence. Priority +1 given for %s.", + specified_encoding, + ) + + tested: set[str] = set() + tested_but_hard_failure: list[str] = [] + tested_but_soft_failure: list[str] = [] + soft_failure_skip: set[str] = set() + success_fast_tracked: set[str] = set() + + # Cache for decoded payload deduplication: hash(decoded_payload) -> (mean_mess_ratio, cd_ratios_merged, passed) + # When multiple encodings decode to the exact same string, we can skip the expensive + # mess_ratio and coherence_ratio analysis and reuse the results from the first encoding. + payload_result_cache: dict[int, tuple[float, list[tuple[str, float]], bool]] = {} + + # Avoid unoptimized RSS usage. + # this cache is mostly interesting for + # local usage. Garbage collected at the + # end. Like it should. + cached_mess_ratio = lru_cache(maxsize=None)(mess_ratio) + cached_coherence_ratio = lru_cache(maxsize=None)(coherence_ratio) + + # When a definitive result (chaos=0.0 and good coherence) is found after testing + # the prioritized encodings (ascii, utf_8), we can significantly reduce the remaining + # work. Encodings that target completely different language families (e.g., Cyrillic + # when the definitive match is Latin) are skipped entirely. + # Additionally, for same-family encodings that pass chaos probing, we reuse the + # definitive match's coherence ratios instead of recomputing them — a major savings + # since coherence_ratio accounts for ~30% of total time on slow Latin files. + definitive_match_found: bool = False + definitive_target_languages: set[str] = set() + # After the definitive match fires, we cap the number of additional same-family + # single-byte encodings that pass chaos probing. Once we've accumulated enough + # good candidates (N), further same-family SB encodings are unlikely to produce + # a better best() result and just waste mess_ratio + coherence_ratio time. + # The first encoding to trigger the definitive match is NOT counted (it's already in). + post_definitive_sb_success_count: int = 0 + POST_DEFINITIVE_SB_CAP: int = 7 + + # When a non-UTF multibyte encoding passes chaos probing with significant multibyte + # content (decoded length < 98% of raw length), skip all remaining single-byte encodings. + # Rationale: multi-byte decoders (CJK) have strict byte-sequence validation — if they + # decode without error AND pass chaos probing with substantial multibyte content, the + # data is genuinely multibyte encoded. Single-byte encodings will always decode (every + # byte maps to something) but waste time on mess_ratio before failing. + # The 98% threshold prevents false triggers on files that happen to have a few valid + # multibyte pairs (e.g., cp424/_ude_1.txt where big5 decodes with 99% ratio). + mb_definitive_match_found: bool = False + + fallback_ascii: CharsetMatch | None = None + fallback_u8: CharsetMatch | None = None + fallback_specified: CharsetMatch | None = None + + results: CharsetMatches = CharsetMatches() + + early_stop_results: CharsetMatches = CharsetMatches() + + sig_encoding, sig_payload = identify_sig_or_bom(sequences) + + if sig_encoding is not None: + prioritized_encodings.append(sig_encoding) + logger.log( + TRACE, + "Detected a SIG or BOM mark on first %i byte(s). Priority +1 given for %s.", + len(sig_payload), + sig_encoding, + ) + + prioritized_encodings.append("ascii") + + if "utf_8" not in prioritized_encodings: + prioritized_encodings.append("utf_8") + + for encoding_iana in prioritized_encodings + IANA_SUPPORTED_MB_FIRST: + if cp_isolation and encoding_iana not in cp_isolation: + continue + + if cp_exclusion and encoding_iana in cp_exclusion: + continue + + if encoding_iana in tested: + continue + + tested.add(encoding_iana) + + decoded_payload: str | None = None + bom_or_sig_available: bool = sig_encoding == encoding_iana + strip_sig_or_bom: bool = bom_or_sig_available and should_strip_sig_or_bom( + encoding_iana + ) + + if encoding_iana in {"utf_16", "utf_32"} and not bom_or_sig_available: + logger.log( + TRACE, + "Encoding %s won't be tested as-is because it require a BOM. Will try some sub-encoder LE/BE.", + encoding_iana, + ) + continue + if encoding_iana in {"utf_7"} and not bom_or_sig_available: + logger.log( + TRACE, + "Encoding %s won't be tested as-is because detection is unreliable without BOM/SIG.", + encoding_iana, + ) + continue + + # Skip encodings similar to ones that already soft-failed (high mess ratio). + # Checked BEFORE the expensive decode attempt. + if encoding_iana in soft_failure_skip: + logger.log( + TRACE, + "%s is deemed too similar to a code page that was already considered unsuited. Continuing!", + encoding_iana, + ) + continue + + # Skip encodings that were already fast-tracked from a similar successful encoding. + if encoding_iana in success_fast_tracked: + logger.log( + TRACE, + "Skipping %s: already fast-tracked from a similar successful encoding.", + encoding_iana, + ) + continue + + try: + is_multi_byte_decoder: bool = is_multi_byte_encoding(encoding_iana) + except (ModuleNotFoundError, ImportError): # Defensive: + logger.log( + TRACE, + "Encoding %s does not provide an IncrementalDecoder", + encoding_iana, + ) + continue + + # When we've already found a definitive match (chaos=0.0 with good coherence) + # after testing the prioritized encodings, skip encodings that target + # completely different language families. This avoids running expensive + # mess_ratio + coherence_ratio on clearly unrelated candidates (e.g., Cyrillic + # when the definitive match is Latin-based). + if definitive_match_found: + if not is_multi_byte_decoder: + enc_languages = set(encoding_languages(encoding_iana)) + else: + enc_languages = set(mb_encoding_languages(encoding_iana)) + if not enc_languages.intersection(definitive_target_languages): + logger.log( + TRACE, + "Skipping %s: definitive match already found, this encoding targets different languages (%s vs %s).", + encoding_iana, + enc_languages, + definitive_target_languages, + ) + continue + + # After the definitive match, cap the number of additional same-family + # single-byte encodings that pass chaos probing. This avoids testing the + # tail of rare, low-value same-family encodings (mac_iceland, cp860, etc.) + # that almost never change best() but each cost ~1-2ms of mess_ratio + coherence. + if ( + definitive_match_found + and not is_multi_byte_decoder + and post_definitive_sb_success_count >= POST_DEFINITIVE_SB_CAP + ): + logger.log( + TRACE, + "Skipping %s: already accumulated %d same-family results after definitive match (cap=%d).", + encoding_iana, + post_definitive_sb_success_count, + POST_DEFINITIVE_SB_CAP, + ) + continue + + # When a multibyte encoding with significant multibyte content has already + # passed chaos probing, skip all single-byte encodings. They will either fail + # chaos probing (wasting mess_ratio time) or produce inferior results. + if mb_definitive_match_found and not is_multi_byte_decoder: + logger.log( + TRACE, + "Skipping single-byte %s: multi-byte definitive match already found.", + encoding_iana, + ) + continue + + # Single-byte candidates of regular size defer the expensive whole + # payload decode until after chunk probing: single-byte codecs are + # stateless (1 byte == 1 char) so decoding chunk slices is provably + # identical to slicing the decoded payload, and candidates rejected + # by chaos probing (the common case) never pay the full decode nor + # the payload hash. + deferred_decoding: bool = ( + not is_multi_byte_decoder and not is_too_large_sequence + ) + + try: + if is_too_large_sequence and not is_multi_byte_decoder: + str( + ( + sequences[: int(50e4)] + if not strip_sig_or_bom + else sequences[len(sig_payload) : int(50e4)] + ), + encoding=encoding_iana, + ) + elif not deferred_decoding: + # UTF-7 BOM is encoded in modified Base64 whose byte boundary + # can overlap with the next character. Stripping raw SIG bytes + # before decoding may leave stray bytes that decode as garbage. + # Decode the full sequence and remove the leading BOM char instead. + # see https://github.com/jawah/charset_normalizer/issues/718 + # and https://github.com/jawah/charset_normalizer/issues/716 + if encoding_iana == "utf_7" and bom_or_sig_available: + decoded_payload = str( + sequences, + encoding=encoding_iana, + ) + if decoded_payload and decoded_payload[0] == "\ufeff": + decoded_payload = decoded_payload[1:] + else: + decoded_payload = str( + ( + sequences + if not strip_sig_or_bom + else sequences[len(sig_payload) :] + ), + encoding=encoding_iana, + ) + except (UnicodeDecodeError, LookupError) as e: + if not isinstance(e, LookupError): + logger.log( + TRACE, + "Code page %s does not fit given bytes sequence at ALL. %s", + encoding_iana, + str(e), + ) + tested_but_hard_failure.append(encoding_iana) + continue + + r_ = range( + 0 if not bom_or_sig_available else len(sig_payload), + length, + int(length / steps), + ) + + multi_byte_bonus: bool = ( + is_multi_byte_decoder + and decoded_payload is not None + and len(decoded_payload) < length + ) + + if multi_byte_bonus: + logger.log( + TRACE, + "Code page %s is a multi byte encoding table and it appear that at least one character " + "was encoded using n-bytes.", + encoding_iana, + ) + + max_chunk_gave_up: int = int(len(r_) / 4) + + max_chunk_gave_up = max(max_chunk_gave_up, 2) + early_stop_count: int = 0 + lazy_str_hard_failure = False + + md_chunks: list[str] = [] + md_ratios = [] + + try: + for chunk in cut_sequence_chunks( + sequences, + encoding_iana, + r_, + chunk_size, + bom_or_sig_available, + strip_sig_or_bom, + sig_payload, + is_multi_byte_decoder, + decoded_payload, + deferred_decoding, + ): + md_chunks.append(chunk) + + md_ratios.append( + cached_mess_ratio( + chunk, + threshold, + explain and 1 <= len(cp_isolation) <= 2, + ) + ) + + if md_ratios[-1] >= threshold: + early_stop_count += 1 + + if (early_stop_count >= max_chunk_gave_up) or ( + bom_or_sig_available and not strip_sig_or_bom + ): + break + except ( + UnicodeDecodeError, + LookupError, + ) as e: # Lazy str loading may have missed something there + if deferred_decoding: + # Deferred single-byte validation failed on a chunk (or the + # codec is unavailable on this interpreter build): identical + # outcome and bookkeeping to the eager full-decode failure. + logger.log( + TRACE, + "Code page %s does not fit given bytes sequence at ALL. %s", + encoding_iana, + str(e), + ) + tested_but_hard_failure.append(encoding_iana) + continue + logger.log( + TRACE, + "LazyStr Loading: After MD chunk decode, code page %s does not fit given bytes sequence at ALL. %s", + encoding_iana, + str(e), + ) + early_stop_count = max_chunk_gave_up + lazy_str_hard_failure = True + + # We might want to check the sequence again with the whole content + # Only if initial MD tests passes + if ( + not lazy_str_hard_failure + and is_too_large_sequence + and not is_multi_byte_decoder + ): + try: + sequences[int(50e3) :].decode(encoding_iana, errors="strict") + except UnicodeDecodeError as e: + logger.log( + TRACE, + "LazyStr Loading: After final lookup, code page %s does not fit given bytes sequence at ALL. %s", + encoding_iana, + str(e), + ) + tested_but_hard_failure.append(encoding_iana) + continue + + mean_mess_ratio: float = sum(md_ratios) / len(md_ratios) if md_ratios else 0.0 + if mean_mess_ratio >= threshold or early_stop_count >= max_chunk_gave_up: + tested_but_soft_failure.append(encoding_iana) + if encoding_iana in IANA_SUPPORTED_SIMILAR: + soft_failure_skip.update(IANA_SUPPORTED_SIMILAR[encoding_iana]) + # Cache this soft-failure so identical decoding from other encodings + # can be skipped immediately. + if decoded_payload is not None and not is_multi_byte_decoder: + payload_result_cache.setdefault( + hash(decoded_payload), (mean_mess_ratio, [], False) + ) + logger.log( + TRACE, + "%s was excluded because of initial chaos probing. Gave up %i time(s). " + "Computed mean chaos is %f %%.", + encoding_iana, + early_stop_count, + round(mean_mess_ratio * 100, ndigits=3), + ) + # Preparing those fallbacks in case we got nothing. + if ( + enable_fallback + and encoding_iana + in ["ascii", "utf_8", specified_encoding, "utf_16", "utf_32"] + and not lazy_str_hard_failure + ): + # Always fully decode payload before. + # We've missed a UnicodeDecodeError proof + # while issuing release 3.4.8 + # see https://github.com/jawah/charset_normalizer/issues/771 + if decoded_payload is None: + try: + decoded_payload = str( + ( + sequences + if not strip_sig_or_bom + else sequences[len(sig_payload) :] + ), + encoding=encoding_iana, + ) + except (UnicodeDecodeError, LookupError): + logger.log( + TRACE, + "%s does not decode the whole payload: fallback entry withheld.", + encoding_iana, + ) + continue + if is_too_large_sequence: + # Don't retain huge payload in RAM. + decoded_payload = None + + fallback_entry = CharsetMatch( + sequences, + encoding_iana, + threshold, + bom_or_sig_available, + [], + decoded_payload, + preemptive_declaration=specified_encoding, + ) + if encoding_iana == specified_encoding: + fallback_specified = fallback_entry + elif encoding_iana == "ascii": + fallback_ascii = fallback_entry + else: + fallback_u8 = fallback_entry + continue + + if deferred_decoding: + # The candidate passed chaos probing: perform the whole payload + # decode (validation + payload reuse) that was deferred earlier. + try: + decoded_payload = str( + ( + sequences + if not strip_sig_or_bom + else sequences[len(sig_payload) :] + ), + encoding=encoding_iana, + ) + except (UnicodeDecodeError, LookupError) as e: + logger.log( + TRACE, + "Code page %s does not fit given bytes sequence at ALL. %s", + encoding_iana, + str(e), + ) + tested_but_hard_failure.append(encoding_iana) + continue + + # Payload-hash deduplication: if another encoding already decoded to the + # exact same string, reuse its mess_ratio and coherence results entirely. + # This is strictly more general than the old IANA_SUPPORTED_SIMILAR approach + # because it catches ALL identical decoding, not just pre-mapped ones. + if decoded_payload is not None and not is_multi_byte_decoder: + payload_hash: int = hash(decoded_payload) + cached = payload_result_cache.get(payload_hash) + if cached is not None: + cached_mess, cached_cd, cached_passed = cached + if cached_passed: + # The previous encoding with identical output passed chaos probing. + fast_match = CharsetMatch( + sequences, + encoding_iana, + cached_mess, + bom_or_sig_available, + cached_cd, + ( + decoded_payload + if ( + not is_too_large_sequence + or encoding_iana + in [specified_encoding, "ascii", "utf_8"] + ) + else None + ), + preemptive_declaration=specified_encoding, + ) + results.append(fast_match) + success_fast_tracked.add(encoding_iana) + logger.log( + TRACE, + "%s fast-tracked (identical decoded payload to a prior encoding, chaos=%f %%).", + encoding_iana, + round(cached_mess * 100, ndigits=3), + ) + + if ( + encoding_iana in [specified_encoding, "ascii", "utf_8"] + and cached_mess < 0.1 + ): + if cached_mess == 0.0: + logger.debug( + "Encoding detection: %s is most likely the one.", + fast_match.encoding, + ) + if explain: + logger.removeHandler(explain_handler) + logger.setLevel(previous_logger_level) + return CharsetMatches([fast_match]) + early_stop_results.append(fast_match) + + if ( + len(early_stop_results) + and (specified_encoding is None or specified_encoding in tested) + and "ascii" in tested + and "utf_8" in tested + ): + probable_result: CharsetMatch = early_stop_results.best() # type: ignore[assignment] + logger.debug( + "Encoding detection: %s is most likely the one.", + probable_result.encoding, + ) + if explain: + logger.removeHandler(explain_handler) + logger.setLevel(previous_logger_level) + return CharsetMatches([probable_result]) + + continue + else: + # The previous encoding with identical output failed chaos + # probing. Unreachable when the current candidate passed + # probing on the identical payload (deterministic ratios), + # kept for structural parity with the historic flow. + tested_but_soft_failure.append(encoding_iana) + logger.log( + TRACE, + "%s fast-skipped (identical decoded payload to a prior encoding that failed chaos probing).", + encoding_iana, + ) + # Prepare fallbacks for special encodings even when skipped. + if enable_fallback and encoding_iana in [ + "ascii", + "utf_8", + specified_encoding, + "utf_16", + "utf_32", + ]: + fallback_entry = CharsetMatch( + sequences, + encoding_iana, + threshold, + bom_or_sig_available, + [], + decoded_payload, + preemptive_declaration=specified_encoding, + ) + if encoding_iana == specified_encoding: + fallback_specified = fallback_entry + elif encoding_iana == "ascii": + fallback_ascii = fallback_entry + else: + fallback_u8 = fallback_entry + continue + + logger.log( + TRACE, + "%s passed initial chaos probing. Mean measured chaos is %f %%", + encoding_iana, + round(mean_mess_ratio * 100, ndigits=3), + ) + + if not is_multi_byte_decoder: + target_languages: list[str] = encoding_languages(encoding_iana) + else: + target_languages = mb_encoding_languages(encoding_iana) + + if target_languages: + logger.log( + TRACE, + "{} should target any language(s) of {}".format( + encoding_iana, str(target_languages) + ), + ) + + cd_ratios = [] + + # Run coherence detection on all chunks. We previously tried limiting to + # 1-2 chunks for post-definitive encodings to save time, but this caused + # coverage regressions by producing unrepresentative coherence scores. + # The SB cap and language-family skip optimizations provide sufficient + # speedup without sacrificing coherence accuracy. + if encoding_iana != "ascii": + # We shall skip the CD when its about ASCII + # Most of the time its not relevant to run "language-detection" on it. + lg_inclusion: str | None = ( + ",".join(target_languages) if target_languages else None + ) + + for chunk in md_chunks: + chunk_languages = cached_coherence_ratio( + chunk, + language_threshold, + lg_inclusion, + ) + + cd_ratios.append(chunk_languages) + + cd_ratios_merged = merge_coherence_ratios(cd_ratios) + + if cd_ratios_merged: + logger.log( + TRACE, + "We detected language {} using {}".format( + cd_ratios_merged, encoding_iana + ), + ) + + current_match = CharsetMatch( + sequences, + encoding_iana, + mean_mess_ratio, + bom_or_sig_available, + cd_ratios_merged, + ( + decoded_payload + if ( + not is_too_large_sequence + or encoding_iana in [specified_encoding, "ascii", "utf_8"] + ) + else None + ), + preemptive_declaration=specified_encoding, + ) + + results.append(current_match) + + # Cache the successful result for payload-hash deduplication. + if decoded_payload is not None and not is_multi_byte_decoder: + payload_result_cache.setdefault( + hash(decoded_payload), + (mean_mess_ratio, cd_ratios_merged, True), + ) + + # Count post-definitive same-family SB successes for the early termination cap. + # Only count low-mess encodings (< 2%) toward the cap. High-mess encodings are + # marginal results that shouldn't prevent better-quality candidates from being + # tested. For example, iso8859_4 (mess=0%) should not be skipped just because + # 7 high-mess Latin encodings (cp1252 at 8%, etc.) were tried first. + if ( + definitive_match_found + and not is_multi_byte_decoder + and mean_mess_ratio < 0.02 + ): + post_definitive_sb_success_count += 1 + + if ( + encoding_iana in [specified_encoding, "ascii", "utf_8"] + and mean_mess_ratio < 0.1 + ): + # If md says nothing to worry about, then... stop immediately! + if mean_mess_ratio == 0.0: + logger.debug( + "Encoding detection: %s is most likely the one.", + current_match.encoding, + ) + if explain: # Defensive: ensure exit path clean handler + logger.removeHandler(explain_handler) + logger.setLevel(previous_logger_level) + return CharsetMatches([current_match]) + + early_stop_results.append(current_match) + + if ( + len(early_stop_results) + and (specified_encoding is None or specified_encoding in tested) + and "ascii" in tested + and "utf_8" in tested + ): + probable_result = early_stop_results.best() # type: ignore[assignment] + logger.debug( + "Encoding detection: %s is most likely the one.", + probable_result.encoding, # type: ignore[union-attr] + ) + if explain: # Defensive: ensure exit path clean handler + logger.removeHandler(explain_handler) + logger.setLevel(previous_logger_level) + + return CharsetMatches([probable_result]) + + # Once we find a result with good coherence (>= 0.5) after testing the + # prioritized encodings (ascii, utf_8), activate "definitive mode": skip + # encodings that target completely different language families. This avoids + # running expensive mess_ratio + coherence_ratio on clearly unrelated + # candidates (e.g., Cyrillic encodings when the match is Latin-based). + # We require coherence >= 0.5 to avoid false positives (e.g., cp1251 decoding + # Hebrew text with 0.0 chaos but wrong language detection at coherence 0.33). + if not definitive_match_found and not is_multi_byte_decoder: + best_coherence = ( + max((v for _, v in cd_ratios_merged), default=0.0) + if cd_ratios_merged + else 0.0 + ) + if best_coherence >= 0.5 and "ascii" in tested and "utf_8" in tested: + definitive_match_found = True + definitive_target_languages.update(target_languages) + logger.log( + TRACE, + "Definitive match found: %s (chaos=%.3f, coherence=%.2f). Encodings targeting different language families will be skipped.", + encoding_iana, + mean_mess_ratio, + best_coherence, + ) + + # When a non-UTF multibyte encoding passes chaos probing with significant + # multibyte content (decoded < 98% of raw), activate mb_definitive_match. + # This skips all remaining single-byte encodings which would either soft-fail + # (running expensive mess_ratio for nothing) or produce inferior results. + if ( + not mb_definitive_match_found + and is_multi_byte_decoder + and multi_byte_bonus + and decoded_payload is not None + and len(decoded_payload) < length * 0.98 + and encoding_iana + not in { + "utf_8", + "utf_8_sig", + "utf_16", + "utf_16_be", + "utf_16_le", + "utf_32", + "utf_32_be", + "utf_32_le", + "utf_7", + } + and "ascii" in tested + and "utf_8" in tested + ): + mb_definitive_match_found = True + logger.log( + TRACE, + "Multi-byte definitive match: %s (chaos=%.3f, decoded=%d/%d=%.1f%%). Single-byte encodings will be skipped.", + encoding_iana, + mean_mess_ratio, + len(decoded_payload), + length, + len(decoded_payload) / length * 100, + ) + + if encoding_iana == sig_encoding: + logger.debug( + "Encoding detection: %s is most likely the one as we detected a BOM or SIG within " + "the beginning of the sequence.", + encoding_iana, + ) + if explain: # Defensive: ensure exit path clean handler + logger.removeHandler(explain_handler) + logger.setLevel(previous_logger_level) + return CharsetMatches([results[encoding_iana]]) + + if len(results) == 0: + if fallback_u8 or fallback_ascii or fallback_specified: + logger.log( + TRACE, + "Nothing got out of the detection process. Using ASCII/UTF-8/Specified fallback.", + ) + + if fallback_specified: + logger.debug( + "Encoding detection: %s will be used as a fallback match", + fallback_specified.encoding, + ) + results.append(fallback_specified) + elif ( + (fallback_u8 and fallback_ascii is None) + or ( + fallback_u8 + and fallback_ascii + and fallback_u8.fingerprint != fallback_ascii.fingerprint + ) + or (fallback_u8 is not None) + ): + logger.debug("Encoding detection: utf_8 will be used as a fallback match") + results.append(fallback_u8) + elif fallback_ascii: + logger.debug("Encoding detection: ascii will be used as a fallback match") + results.append(fallback_ascii) + + if results: + logger.debug( + "Encoding detection: Found %s as plausible (best-candidate) for content. With %i alternatives.", + results.best().encoding, # type: ignore + len(results) - 1, + ) + else: + logger.debug("Encoding detection: Unable to determine any suitable charset.") + + if explain: + logger.removeHandler(explain_handler) + logger.setLevel(previous_logger_level) + + return results + + +def from_fp( + fp: BinaryIO, + steps: int = 5, + chunk_size: int = 512, + threshold: float = 0.20, + cp_isolation: list[str] | None = None, + cp_exclusion: list[str] | None = None, + preemptive_behaviour: bool = True, + explain: bool = False, + language_threshold: float = 0.1, + enable_fallback: bool = True, +) -> CharsetMatches: + """ + Same thing than the function from_bytes but using a file pointer that is already ready. + Will not close the file pointer. + """ + return from_bytes( + fp.read(), + steps, + chunk_size, + threshold, + cp_isolation, + cp_exclusion, + preemptive_behaviour, + explain, + language_threshold, + enable_fallback, + ) + + +def from_path( + path: str | bytes | PathLike, # type: ignore[type-arg] + steps: int = 5, + chunk_size: int = 512, + threshold: float = 0.20, + cp_isolation: list[str] | None = None, + cp_exclusion: list[str] | None = None, + preemptive_behaviour: bool = True, + explain: bool = False, + language_threshold: float = 0.1, + enable_fallback: bool = True, +) -> CharsetMatches: + """ + Same thing than the function from_bytes but with one extra step. Opening and reading given file path in binary mode. + Can raise IOError. + """ + with open(path, "rb") as fp: + return from_fp( + fp, + steps, + chunk_size, + threshold, + cp_isolation, + cp_exclusion, + preemptive_behaviour, + explain, + language_threshold, + enable_fallback, + ) + + +def is_binary( + fp_or_path_or_payload: PathLike | str | BinaryIO | bytes, # type: ignore[type-arg] + steps: int = 5, + chunk_size: int = 512, + threshold: float = 0.20, + cp_isolation: list[str] | None = None, + cp_exclusion: list[str] | None = None, + preemptive_behaviour: bool = True, + explain: bool = False, + language_threshold: float = 0.1, + enable_fallback: bool = False, +) -> bool: + """ + Detect if the given input (file, bytes, or path) points to a binary file. aka. not a string. + Based on the same main heuristic algorithms and default kwargs at the sole exception that fallbacks match + are disabled to be stricter around ASCII-compatible but unlikely to be a string. + """ + if isinstance(fp_or_path_or_payload, (str, PathLike)): + guesses = from_path( + fp_or_path_or_payload, + steps=steps, + chunk_size=chunk_size, + threshold=threshold, + cp_isolation=cp_isolation, + cp_exclusion=cp_exclusion, + preemptive_behaviour=preemptive_behaviour, + explain=explain, + language_threshold=language_threshold, + enable_fallback=enable_fallback, + ) + elif isinstance( + fp_or_path_or_payload, + ( + bytes, + bytearray, + ), + ): + guesses = from_bytes( + fp_or_path_or_payload, + steps=steps, + chunk_size=chunk_size, + threshold=threshold, + cp_isolation=cp_isolation, + cp_exclusion=cp_exclusion, + preemptive_behaviour=preemptive_behaviour, + explain=explain, + language_threshold=language_threshold, + enable_fallback=enable_fallback, + ) + else: + guesses = from_fp( + fp_or_path_or_payload, + steps=steps, + chunk_size=chunk_size, + threshold=threshold, + cp_isolation=cp_isolation, + cp_exclusion=cp_exclusion, + preemptive_behaviour=preemptive_behaviour, + explain=explain, + language_threshold=language_threshold, + enable_fallback=enable_fallback, + ) + + return not guesses diff --git a/venv/lib/python3.11/site-packages/charset_normalizer/cd.cpython-311-x86_64-linux-gnu.so b/venv/lib/python3.11/site-packages/charset_normalizer/cd.cpython-311-x86_64-linux-gnu.so new file mode 100644 index 0000000000000000000000000000000000000000..00c9a981d59e7bd9addcd5fe38baf064d8259f97 Binary files /dev/null and b/venv/lib/python3.11/site-packages/charset_normalizer/cd.cpython-311-x86_64-linux-gnu.so differ diff --git a/venv/lib/python3.11/site-packages/charset_normalizer/cd.py b/venv/lib/python3.11/site-packages/charset_normalizer/cd.py new file mode 100644 index 0000000000000000000000000000000000000000..7a9344f1e5aa25a75adb1df7edb304d8114d05c3 --- /dev/null +++ b/venv/lib/python3.11/site-packages/charset_normalizer/cd.py @@ -0,0 +1,467 @@ +from __future__ import annotations + +import importlib +from codecs import IncrementalDecoder +from functools import lru_cache + +from .constant import ( + FREQUENCIES, + KO_NAMES, + LANGUAGE_SUPPORTED_COUNT, + TOO_SMALL_SEQUENCE, + ZH_NAMES, + _FREQUENCIES_SET, + _FREQUENCIES_RANK, +) +from .md import _ASCII_CHAR_INFO, _char_info, is_suspiciously_successive_range +from .models import CoherenceMatches +from .utils import ( + is_multi_byte_encoding, + is_unicode_range_secondary, +) + + +def encoding_unicode_range(iana_name: str) -> list[str]: + """ + Return associated unicode ranges in a single byte code page. + """ + if is_multi_byte_encoding(iana_name): + raise OSError( # Defensive: + "Function not supported on multi-byte code page" + ) + + decoder = importlib.import_module(f"encodings.{iana_name}").IncrementalDecoder + + p: IncrementalDecoder = decoder(errors="ignore") + seen_ranges: dict[str, int] = {} + character_count: int = 0 + + for i in range(0x40, 0xFF): + chunk: str = p.decode(bytes([i])) + + if chunk: + chunk_codepoint = ord(chunk) + character_range: str | None = ( + _ASCII_CHAR_INFO[chunk_codepoint].range + if chunk_codepoint < 128 + else _char_info(chunk).range + ) + + if character_range is None: + continue + + if not is_unicode_range_secondary(character_range): + if character_range not in seen_ranges: + seen_ranges[character_range] = 0 + seen_ranges[character_range] += 1 + character_count += 1 + + return sorted( + [ + character_range + for character_range in seen_ranges + if seen_ranges[character_range] / character_count >= 0.15 + ] + ) + + +def unicode_range_languages(primary_range: str) -> list[str]: + """ + Return inferred languages used with a unicode range. + """ + languages: list[str] = [] + + for language, characters in FREQUENCIES.items(): + for character in characters: + codepoint = ord(character) + info = ( + _ASCII_CHAR_INFO[codepoint] + if codepoint < 128 + else _char_info(character) + ) + if info.range == primary_range: + languages.append(language) + break + + return languages + + +@lru_cache() +def encoding_languages(iana_name: str) -> list[str]: + """ + Single-byte encoding language association. Some code page are heavily linked to particular language(s). + This function does the correspondence. + """ + try: + unicode_ranges: list[str] = encoding_unicode_range(iana_name) + except ImportError: # Defensive: encoding unavailable on this build. + return [] + + primary_range: str | None = None + + for specified_range in unicode_ranges: + if "Latin" not in specified_range: + primary_range = specified_range + break + + if primary_range is None: + return ["Latin Based"] + + return unicode_range_languages(primary_range) + + +@lru_cache() +def mb_encoding_languages(iana_name: str) -> list[str]: + """ + Multi-byte encoding language association. Some code page are heavily linked to particular language(s). + This function does the correspondence. + """ + if ( + iana_name.startswith("shift_") + or iana_name.startswith("iso2022_jp") + or iana_name.startswith("euc_j") + or iana_name == "cp932" + ): + return ["Japanese"] + if iana_name.startswith("gb") or iana_name in ZH_NAMES: + return ["Chinese"] + if iana_name.startswith("iso2022_kr") or iana_name in KO_NAMES: + return ["Korean"] + + return [] + + +@lru_cache(maxsize=LANGUAGE_SUPPORTED_COUNT) +def get_target_features(language: str) -> tuple[bool, bool]: + """ + Determine main aspects from a supported language if it contains accents and if is pure Latin. + """ + target_have_accents: bool = False + target_pure_latin: bool = True + + for character in FREQUENCIES[language]: + codepoint = ord(character) + info = _ASCII_CHAR_INFO[codepoint] if codepoint < 128 else _char_info(character) + if not target_have_accents and info.accentuated: + target_have_accents = True + if target_pure_latin and not info.latin: + target_pure_latin = False + + return target_have_accents, target_pure_latin + + +def alphabet_languages( + characters: list[str], ignore_non_latin: bool = False +) -> list[str]: + """ + Return associated languages associated to given characters. + """ + languages: list[tuple[str, float]] = [] + + characters_set: frozenset[str] = frozenset(characters) + source_have_accents = False + for character in characters: + codepoint = ord(character) + info = _ASCII_CHAR_INFO[codepoint] if codepoint < 128 else _char_info(character) + if info.accentuated: + source_have_accents = True + break + + for language, language_characters in FREQUENCIES.items(): + target_have_accents, target_pure_latin = get_target_features(language) + + if ignore_non_latin and not target_pure_latin: + continue + + if not target_have_accents and source_have_accents: + continue + + character_count: int = len(language_characters) + + character_match_count: int = len(_FREQUENCIES_SET[language] & characters_set) + + ratio: float = character_match_count / character_count + + if ratio >= 0.2: + languages.append((language, ratio)) + + languages = sorted(languages, key=lambda x: x[1], reverse=True) + + return [compatible_language[0] for compatible_language in languages] + + +def characters_popularity_compare( + language: str, ordered_characters: list[str] +) -> float: + """ + Determine if a ordered characters list (by occurrence from most appearance to rarest) match a particular language. + The result is a ratio between 0. (absolutely no correspondence) and 1. (near perfect fit). + Beware that is function is not strict on the match in order to ease the detection. (Meaning close match is 1.) + """ + if language not in FREQUENCIES: + raise ValueError(f"{language} not available") # Defensive: + + character_approved_count: int = 0 + lang_rank: dict[str, int] = _FREQUENCIES_RANK[language] + + ordered_characters_count: int = len(ordered_characters) + target_language_characters_count: int = len(FREQUENCIES[language]) + + large_alphabet: bool = target_language_characters_count > 26 + large_alphabet_threshold: float = target_language_characters_count / 3 + + expected_projection_ratio: float = ( + target_language_characters_count / ordered_characters_count + ) + + # Single pass: characters present in the language vocabulary, as + # (language rank, popularity rank) pairs. The scoring below only ever + # needs ranks, never the characters themselves. + common_lr: list[int] = [] + common_orr: list[int] = [] + for popularity_rank, character in enumerate(ordered_characters): + language_rank = lang_rank.get(character) + if language_rank is not None: + common_lr.append(language_rank) + common_orr.append(popularity_rank) + + for character_rank_in_language, character_rank in zip(common_lr, common_orr): + character_rank_projection: int = int(character_rank * expected_projection_ratio) + + if ( + not large_alphabet + and abs(character_rank_projection - character_rank_in_language) > 4 + ): + continue + + if ( + large_alphabet + and abs(character_rank_projection - character_rank_in_language) + < large_alphabet_threshold + ): + character_approved_count += 1 + continue + + if character_rank_in_language == 0: + # before_match_count is structurally 0 here (no pair can have a + # smaller language rank): the historic "before <= 4" acceptance + # always holds. (The symmetric "after_len == 0" case is + # impossible: language ranks are strictly below the language + # character count, hence after_len >= 1.) + character_approved_count += 1 + continue + + after_len: int = target_language_characters_count - character_rank_in_language + + # Count how many characters appear "before" in both orderings, and + # how many appear "at or after" in both orderings. Both counts grow + # monotonically and the approval thresholds + # (before / rank >= 0.4 or after / after_len >= 0.4) are known + # upfront, expressed below as exact integer comparisons: exit as + # soon as one is crossed. + before_match_count: int = 0 + after_match_count: int = 0 + + for lr_i, orr_i in zip(common_lr, common_orr): + if lr_i < character_rank_in_language: + if orr_i < character_rank: + before_match_count += 1 + if 5 * before_match_count >= 2 * character_rank_in_language: + character_approved_count += 1 + break + else: + if orr_i >= character_rank: + after_match_count += 1 + if 5 * after_match_count >= 2 * after_len: + character_approved_count += 1 + break + + return character_approved_count / len(ordered_characters) + + +def alpha_unicode_split(decoded_sequence: str) -> list[str]: + """ + Given a decoded text sequence, return a list of str. Unicode range / alphabet separation. + Ex. a text containing English/Latin with a bit a Hebrew will return two items in the resulting list; + One containing the latin letters and the other hebrew. + """ + layers: dict[str, list[str]] = {} + + # Fast path: track single-layer key to skip dict iteration for single-script text. + single_layer_key: str | None = None + multi_layer: bool = False + + # Cache the last character_range and its resolved layer to avoid repeated + # is_suspiciously_successive_range calls for consecutive same-range chars. + prev_character_range: str | None = None + prev_layer_target: str | None = None + + for character in decoded_sequence: + # Reuse the per-codepoint CharInfo cache: info.alpha and info.range + # are computed with the very same str.isalpha() / unicode_range() + # calls this loop historically made per character occurrence. + codepoint: int = ord(character) + if codepoint < 128: + info = _ASCII_CHAR_INFO[codepoint] + else: + info = _char_info(character) + + if not info.alpha: + continue + + character_range: str | None = info.range + + if character_range is None: + continue + + # Fast path: same range as previous character → reuse cached layer target. + if character_range == prev_character_range: + if prev_layer_target is not None: + layers[prev_layer_target].append(character) + continue + + layer_target_range: str | None = None + + if multi_layer: + for discovered_range in layers: + if not is_suspiciously_successive_range( + discovered_range, character_range + ): + layer_target_range = discovered_range + break + elif single_layer_key is not None: + if not is_suspiciously_successive_range(single_layer_key, character_range): + layer_target_range = single_layer_key + + if layer_target_range is None: + layer_target_range = character_range + + if layer_target_range not in layers: + layers[layer_target_range] = [] + if single_layer_key is None: + single_layer_key = layer_target_range + else: + multi_layer = True + + layers[layer_target_range].append(character) + + # Cache for next iteration + prev_character_range = character_range + prev_layer_target = layer_target_range + + return ["".join(chars).lower() for chars in layers.values()] + + +def merge_coherence_ratios(results: list[CoherenceMatches]) -> CoherenceMatches: + """ + This function merge results previously given by the function coherence_ratio. + The return type is the same as coherence_ratio. + """ + per_language_ratios: dict[str, list[float]] = {} + for result in results: + for sub_result in result: + language, ratio = sub_result + if language not in per_language_ratios: + per_language_ratios[language] = [ratio] + continue + per_language_ratios[language].append(ratio) + + merge = [ + ( + language, + round( + sum(per_language_ratios[language]) / len(per_language_ratios[language]), + 4, + ), + ) + for language in per_language_ratios + ] + + return sorted(merge, key=lambda x: x[1], reverse=True) + + +def filter_alt_coherence_matches(results: CoherenceMatches) -> CoherenceMatches: + """ + We shall NOT return "English—" in CoherenceMatches because it is an alternative + of "English". This function only keeps the best match and remove the em-dash in it. + """ + index_results: dict[str, list[float]] = dict() + + for result in results: + language, ratio = result + no_em_name: str = language.replace("—", "") + + if no_em_name not in index_results: + index_results[no_em_name] = [] + + index_results[no_em_name].append(ratio) + + if any(len(index_results[e]) > 1 for e in index_results): + filtered_results: CoherenceMatches = [] + + for language in index_results: + filtered_results.append((language, max(index_results[language]))) + + return filtered_results + + return results + + +def coherence_ratio( + decoded_sequence: str, threshold: float = 0.1, lg_inclusion: str | None = None +) -> CoherenceMatches: + """ + Detect ANY language that can be identified in given sequence. The sequence will be analysed by layers. + A layer = Character extraction by alphabets/ranges. + """ + + results: list[tuple[str, float]] = [] + ignore_non_latin: bool = False + + sufficient_match_count: int = 0 + + lg_inclusion_list = lg_inclusion.split(",") if lg_inclusion is not None else [] + if "Latin Based" in lg_inclusion_list: + ignore_non_latin = True + lg_inclusion_list.remove("Latin Based") + + for layer in alpha_unicode_split(decoded_sequence): + # Native counting + stable sort reproduce Counter.most_common() + # ordering exactly (ties keep first-appearance order) without the + # interpreted Counter machinery in the compiled hot path. + char_counts: dict[str, int] = {} + for layer_character in layer: + char_counts[layer_character] = char_counts.get(layer_character, 0) + 1 + + character_count: int = len(layer) + + if character_count <= TOO_SMALL_SEQUENCE: + continue + + popular_character_ordered: list[str] = [ + item[0] + for item in sorted( + char_counts.items(), key=lambda item: item[1], reverse=True + ) + ] + + for language in lg_inclusion_list or alphabet_languages( + popular_character_ordered, ignore_non_latin + ): + ratio: float = characters_popularity_compare( + language, popular_character_ordered + ) + + if ratio < threshold: + continue + elif ratio >= 0.8: + sufficient_match_count += 1 + + results.append((language, round(ratio, 4))) + + if sufficient_match_count >= 3: + break + + return sorted( + filter_alt_coherence_matches(results), key=lambda x: x[1], reverse=True + ) diff --git a/venv/lib/python3.11/site-packages/charset_normalizer/cli/__init__.py b/venv/lib/python3.11/site-packages/charset_normalizer/cli/__init__.py new file mode 100644 index 0000000000000000000000000000000000000000..543a5a4de49d07690e73df778aa580589d0789c6 --- /dev/null +++ b/venv/lib/python3.11/site-packages/charset_normalizer/cli/__init__.py @@ -0,0 +1,8 @@ +from __future__ import annotations + +from .__main__ import cli_detect, query_yes_no + +__all__ = ( + "cli_detect", + "query_yes_no", +) diff --git a/venv/lib/python3.11/site-packages/charset_normalizer/cli/__main__.py b/venv/lib/python3.11/site-packages/charset_normalizer/cli/__main__.py new file mode 100644 index 0000000000000000000000000000000000000000..a46739849dabaf76e7f1fecac1bd197f2f88816d --- /dev/null +++ b/venv/lib/python3.11/site-packages/charset_normalizer/cli/__main__.py @@ -0,0 +1,363 @@ +from __future__ import annotations + +import argparse +import sys +import typing +from os.path import abspath, basename, dirname, join, realpath +from platform import python_version +from unicodedata import unidata_version + +import charset_normalizer.md as md_module +from charset_normalizer import from_fp +from charset_normalizer.models import CliDetectionResult +from charset_normalizer.version import __version__ + + +def query_yes_no(question: str, default: str = "yes") -> bool: # Defensive: + """Ask a yes/no question via input() and return the answer as a bool.""" + prompt = " [Y/n] " if default == "yes" else " [y/N] " + + while True: + choice = input(question + prompt).strip().lower() + if not choice: + return default == "yes" + if choice in ("y", "yes"): + return True + if choice in ("n", "no"): + return False + print("Please respond with 'y' or 'n'.") + + +class FileType: + """Factory for creating file object types + + Instances of FileType are typically passed as type= arguments to the + ArgumentParser add_argument() method. + + Keyword Arguments: + - mode -- A string indicating how the file is to be opened. Accepts the + same values as the builtin open() function. + - bufsize -- The file's desired buffer size. Accepts the same values as + the builtin open() function. + - encoding -- The file's encoding. Accepts the same values as the + builtin open() function. + - errors -- A string indicating how encoding and decoding errors are to + be handled. Accepts the same value as the builtin open() function. + + Backported from CPython 3.12 + """ + + def __init__( + self, + mode: str = "r", + bufsize: int = -1, + encoding: str | None = None, + errors: str | None = None, + ): + self._mode = mode + self._bufsize = bufsize + self._encoding = encoding + self._errors = errors + + def __call__(self, string: str) -> typing.IO: # type: ignore[type-arg] + # the special argument "-" means sys.std{in,out} + if string == "-": + if "r" in self._mode: + return sys.stdin.buffer if "b" in self._mode else sys.stdin + elif any(c in self._mode for c in "wax"): + return sys.stdout.buffer if "b" in self._mode else sys.stdout + else: + msg = f'argument "-" with mode {self._mode}' + raise ValueError(msg) + + # all other arguments are used as file names + try: + return open(string, self._mode, self._bufsize, self._encoding, self._errors) + except OSError as e: + message = f"can't open '{string}': {e}" + raise argparse.ArgumentTypeError(message) + + def __repr__(self) -> str: + args = self._mode, self._bufsize + kwargs = [("encoding", self._encoding), ("errors", self._errors)] + args_str = ", ".join( + [repr(arg) for arg in args if arg != -1] + + [f"{kw}={arg!r}" for kw, arg in kwargs if arg is not None] + ) + return f"{type(self).__name__}({args_str})" + + +def cli_detect(argv: list[str] | None = None) -> int: + """ + CLI assistant using ARGV and ArgumentParser + :param argv: + :return: 0 if everything is fine, anything else equal trouble + """ + parser = argparse.ArgumentParser( + description="The Real First Universal Charset Detector. " + "Discover originating encoding used on text file. " + "Normalize text to unicode." + ) + + parser.add_argument( + "files", type=FileType("rb"), nargs="+", help="File(s) to be analysed" + ) + parser.add_argument( + "-v", + "--verbose", + action="store_true", + default=False, + dest="verbose", + help="Display complementary information about file if any. " + "Stdout will contain logs about the detection process.", + ) + parser.add_argument( + "-a", + "--with-alternative", + action="store_true", + default=False, + dest="alternatives", + help="Output complementary possibilities if any. Top-level JSON WILL be a list.", + ) + parser.add_argument( + "-n", + "--normalize", + action="store_true", + default=False, + dest="normalize", + help="Permit to normalize input file. If not set, program does not write anything.", + ) + parser.add_argument( + "-m", + "--minimal", + action="store_true", + default=False, + dest="minimal", + help="Only output the charset detected to STDOUT. Disabling JSON output.", + ) + parser.add_argument( + "-r", + "--replace", + action="store_true", + default=False, + dest="replace", + help="Replace file when trying to normalize it instead of creating a new one.", + ) + parser.add_argument( + "-f", + "--force", + action="store_true", + default=False, + dest="force", + help="Replace file without asking if you are sure, use this flag with caution.", + ) + parser.add_argument( + "-i", + "--no-preemptive", + action="store_true", + default=False, + dest="no_preemptive", + help="Disable looking at a charset declaration to hint the detector.", + ) + parser.add_argument( + "-t", + "--threshold", + action="store", + default=0.2, + type=float, + dest="threshold", + help="Define a custom maximum amount of noise allowed in decoded content. 0. <= noise <= 1.", + ) + parser.add_argument( + "--version", + action="version", + version="Charset-Normalizer {} - Python {} - Unicode {} - SpeedUp {}".format( + __version__, + python_version(), + unidata_version, + "OFF" if md_module.__file__.lower().endswith(".py") else "ON", + ), + help="Show version information and exit.", + ) + + args = parser.parse_args(argv) + + if args.replace is True and args.normalize is False: + if args.files: + for my_file in args.files: + my_file.close() + print("Use --replace in addition of --normalize only.", file=sys.stderr) + return 1 + + if args.force is True and args.replace is False: + if args.files: + for my_file in args.files: + my_file.close() + print("Use --force in addition of --replace only.", file=sys.stderr) + return 1 + + if args.threshold < 0.0 or args.threshold > 1.0: + if args.files: + for my_file in args.files: + my_file.close() + print("--threshold VALUE should be between 0. AND 1.", file=sys.stderr) + return 1 + + x_ = [] + + for my_file in args.files: + matches = from_fp( + my_file, + threshold=args.threshold, + explain=args.verbose, + preemptive_behaviour=args.no_preemptive is False, + ) + + best_guess = matches.best() + + if best_guess is None: + print( + 'Unable to identify originating encoding for "{}". {}'.format( + my_file.name, + ( + "Maybe try increasing maximum amount of chaos." + if args.threshold < 1.0 + else "" + ), + ), + file=sys.stderr, + ) + x_.append( + CliDetectionResult( + abspath(my_file.name), + None, + [], + [], + "Unknown", + [], + False, + 1.0, + 0.0, + None, + True, + ) + ) + else: + cli_result = CliDetectionResult( + abspath(my_file.name), + best_guess.encoding, + best_guess.encoding_aliases, + [ + cp + for cp in best_guess.could_be_from_charset + if cp != best_guess.encoding + ], + best_guess.language, + best_guess.alphabets, + best_guess.bom, + best_guess.percent_chaos, + best_guess.percent_coherence, + None, + True, + ) + x_.append(cli_result) + + if len(matches) > 1 and args.alternatives: + for el in matches: + if el != best_guess: + x_.append( + CliDetectionResult( + abspath(my_file.name), + el.encoding, + el.encoding_aliases, + [ + cp + for cp in el.could_be_from_charset + if cp != el.encoding + ], + el.language, + el.alphabets, + el.bom, + el.percent_chaos, + el.percent_coherence, + None, + False, + ) + ) + + if args.normalize is True: + if best_guess.encoding.startswith("utf") is True: + print( + '"{}" file does not need to be normalized, as it already came from unicode.'.format( + my_file.name + ), + file=sys.stderr, + ) + if my_file.closed is False: + my_file.close() + continue + + dir_path = dirname(realpath(my_file.name)) + file_name = basename(realpath(my_file.name)) + + o_: list[str] = file_name.split(".") + + if args.replace is False: + o_.insert(-1, best_guess.encoding) + if my_file.closed is False: + my_file.close() + elif ( + args.force is False + and query_yes_no( + 'Are you sure to normalize "{}" by replacing it ?'.format( + my_file.name + ), + "no", + ) + is False + ): + if my_file.closed is False: + my_file.close() + continue + + try: + cli_result.unicode_path = join(dir_path, ".".join(o_)) + + with open(cli_result.unicode_path, "wb") as fp: + fp.write(best_guess.output()) + except OSError as e: # Defensive: + print(str(e), file=sys.stderr) + if my_file.closed is False: + my_file.close() + return 2 + + if my_file.closed is False: + my_file.close() + + if args.minimal is False: + from json import dumps + + print( + dumps( + [el.__dict__ for el in x_] if len(x_) > 1 else x_[0].__dict__, + ensure_ascii=True, + indent=4, + ) + ) + else: + for my_file in args.files: + print( + ", ".join( + [ + el.encoding or "undefined" + for el in x_ + if el.path == abspath(my_file.name) + ] + ) + ) + + return 0 + + +if __name__ == "__main__": # Defensive: + cli_detect() diff --git a/venv/lib/python3.11/site-packages/charset_normalizer/constant.py b/venv/lib/python3.11/site-packages/charset_normalizer/constant.py new file mode 100644 index 0000000000000000000000000000000000000000..4b3c7dd6124d5952e617f943276c1fa0e0084ecf --- /dev/null +++ b/venv/lib/python3.11/site-packages/charset_normalizer/constant.py @@ -0,0 +1,2055 @@ +from __future__ import annotations + +from codecs import BOM_UTF8, BOM_UTF16_BE, BOM_UTF16_LE, BOM_UTF32_BE, BOM_UTF32_LE +from encodings.aliases import aliases +from re import IGNORECASE +from re import compile as re_compile + +# Contain for each eligible encoding a list of/item bytes SIG/BOM +ENCODING_MARKS: dict[str, bytes | list[bytes]] = { + "utf_8": BOM_UTF8, + "utf_7": [ + b"\x2b\x2f\x76\x38", + b"\x2b\x2f\x76\x39", + b"\x2b\x2f\x76\x2b", + b"\x2b\x2f\x76\x2f", + ], + "gb18030": b"\x84\x31\x95\x33", + "utf_32": [BOM_UTF32_BE, BOM_UTF32_LE], + "utf_16": [BOM_UTF16_BE, BOM_UTF16_LE], +} + +TOO_SMALL_SEQUENCE: int = 32 +TOO_BIG_SEQUENCE: int = int(10e6) + +UTF8_MAXIMAL_ALLOCATION: int = 1_112_064 + +# Up-to-date Unicode ucd/17.0.0 +UNICODE_RANGES_COMBINED: dict[str, range] = { + "Control character": range(32), + "Basic Latin": range(32, 128), + "Latin-1 Supplement": range(128, 256), + "Latin Extended-A": range(256, 384), + "Latin Extended-B": range(384, 592), + "IPA Extensions": range(592, 688), + "Spacing Modifier Letters": range(688, 768), + "Combining Diacritical Marks": range(768, 880), + "Greek and Coptic": range(880, 1024), + "Cyrillic": range(1024, 1280), + "Cyrillic Supplement": range(1280, 1328), + "Armenian": range(1328, 1424), + "Hebrew": range(1424, 1536), + "Arabic": range(1536, 1792), + "Syriac": range(1792, 1872), + "Arabic Supplement": range(1872, 1920), + "Thaana": range(1920, 1984), + "NKo": range(1984, 2048), + "Samaritan": range(2048, 2112), + "Mandaic": range(2112, 2144), + "Syriac Supplement": range(2144, 2160), + "Arabic Extended-B": range(2160, 2208), + "Arabic Extended-A": range(2208, 2304), + "Devanagari": range(2304, 2432), + "Bengali": range(2432, 2560), + "Gurmukhi": range(2560, 2688), + "Gujarati": range(2688, 2816), + "Oriya": range(2816, 2944), + "Tamil": range(2944, 3072), + "Telugu": range(3072, 3200), + "Kannada": range(3200, 3328), + "Malayalam": range(3328, 3456), + "Sinhala": range(3456, 3584), + "Thai": range(3584, 3712), + "Lao": range(3712, 3840), + "Tibetan": range(3840, 4096), + "Myanmar": range(4096, 4256), + "Georgian": range(4256, 4352), + "Hangul Jamo": range(4352, 4608), + "Ethiopic": range(4608, 4992), + "Ethiopic Supplement": range(4992, 5024), + "Cherokee": range(5024, 5120), + "Unified Canadian Aboriginal Syllabics": range(5120, 5760), + "Ogham": range(5760, 5792), + "Runic": range(5792, 5888), + "Tagalog": range(5888, 5920), + "Hanunoo": range(5920, 5952), + "Buhid": range(5952, 5984), + "Tagbanwa": range(5984, 6016), + "Khmer": range(6016, 6144), + "Mongolian": range(6144, 6320), + "Unified Canadian Aboriginal Syllabics Extended": range(6320, 6400), + "Limbu": range(6400, 6480), + "Tai Le": range(6480, 6528), + "New Tai Lue": range(6528, 6624), + "Khmer Symbols": range(6624, 6656), + "Buginese": range(6656, 6688), + "Tai Tham": range(6688, 6832), + "Combining Diacritical Marks Extended": range(6832, 6912), + "Balinese": range(6912, 7040), + "Sundanese": range(7040, 7104), + "Batak": range(7104, 7168), + "Lepcha": range(7168, 7248), + "Ol Chiki": range(7248, 7296), + "Cyrillic Extended-C": range(7296, 7312), + "Georgian Extended": range(7312, 7360), + "Sundanese Supplement": range(7360, 7376), + "Vedic Extensions": range(7376, 7424), + "Phonetic Extensions": range(7424, 7552), + "Phonetic Extensions Supplement": range(7552, 7616), + "Combining Diacritical Marks Supplement": range(7616, 7680), + "Latin Extended Additional": range(7680, 7936), + "Greek Extended": range(7936, 8192), + "General Punctuation": range(8192, 8304), + "Superscripts and Subscripts": range(8304, 8352), + "Currency Symbols": range(8352, 8400), + "Combining Diacritical Marks for Symbols": range(8400, 8448), + "Letterlike Symbols": range(8448, 8528), + "Number Forms": range(8528, 8592), + "Arrows": range(8592, 8704), + "Mathematical Operators": range(8704, 8960), + "Miscellaneous Technical": range(8960, 9216), + "Control Pictures": range(9216, 9280), + "Optical Character Recognition": range(9280, 9312), + "Enclosed Alphanumerics": range(9312, 9472), + "Box Drawing": range(9472, 9600), + "Block Elements": range(9600, 9632), + "Geometric Shapes": range(9632, 9728), + "Miscellaneous Symbols": range(9728, 9984), + "Dingbats": range(9984, 10176), + "Miscellaneous Mathematical Symbols-A": range(10176, 10224), + "Supplemental Arrows-A": range(10224, 10240), + "Braille Patterns": range(10240, 10496), + "Supplemental Arrows-B": range(10496, 10624), + "Miscellaneous Mathematical Symbols-B": range(10624, 10752), + "Supplemental Mathematical Operators": range(10752, 11008), + "Miscellaneous Symbols and Arrows": range(11008, 11264), + "Glagolitic": range(11264, 11360), + "Latin Extended-C": range(11360, 11392), + "Coptic": range(11392, 11520), + "Georgian Supplement": range(11520, 11568), + "Tifinagh": range(11568, 11648), + "Ethiopic Extended": range(11648, 11744), + "Cyrillic Extended-A": range(11744, 11776), + "Supplemental Punctuation": range(11776, 11904), + "CJK Radicals Supplement": range(11904, 12032), + "Kangxi Radicals": range(12032, 12256), + "Ideographic Description Characters": range(12272, 12288), + "CJK Symbols and Punctuation": range(12288, 12352), + "Hiragana": range(12352, 12448), + "Katakana": range(12448, 12544), + "Bopomofo": range(12544, 12592), + "Hangul Compatibility Jamo": range(12592, 12688), + "Kanbun": range(12688, 12704), + "Bopomofo Extended": range(12704, 12736), + "CJK Strokes": range(12736, 12784), + "Katakana Phonetic Extensions": range(12784, 12800), + "Enclosed CJK Letters and Months": range(12800, 13056), + "CJK Compatibility": range(13056, 13312), + "CJK Unified Ideographs Extension A": range(13312, 19904), + "Yijing Hexagram Symbols": range(19904, 19968), + "CJK Unified Ideographs": range(19968, 40960), + "Yi Syllables": range(40960, 42128), + "Yi Radicals": range(42128, 42192), + "Lisu": range(42192, 42240), + "Vai": range(42240, 42560), + "Cyrillic Extended-B": range(42560, 42656), + "Bamum": range(42656, 42752), + "Modifier Tone Letters": range(42752, 42784), + "Latin Extended-D": range(42784, 43008), + "Syloti Nagri": range(43008, 43056), + "Common Indic Number Forms": range(43056, 43072), + "Phags-pa": range(43072, 43136), + "Saurashtra": range(43136, 43232), + "Devanagari Extended": range(43232, 43264), + "Kayah Li": range(43264, 43312), + "Rejang": range(43312, 43360), + "Hangul Jamo Extended-A": range(43360, 43392), + "Javanese": range(43392, 43488), + "Myanmar Extended-B": range(43488, 43520), + "Cham": range(43520, 43616), + "Myanmar Extended-A": range(43616, 43648), + "Tai Viet": range(43648, 43744), + "Meetei Mayek Extensions": range(43744, 43776), + "Ethiopic Extended-A": range(43776, 43824), + "Latin Extended-E": range(43824, 43888), + "Cherokee Supplement": range(43888, 43968), + "Meetei Mayek": range(43968, 44032), + "Hangul Syllables": range(44032, 55216), + "Hangul Jamo Extended-B": range(55216, 55296), + "High Surrogates": range(55296, 56192), + "High Private Use Surrogates": range(56192, 56320), + "Low Surrogates": range(56320, 57344), + "Private Use Area": range(57344, 63744), + "CJK Compatibility Ideographs": range(63744, 64256), + "Alphabetic Presentation Forms": range(64256, 64336), + "Arabic Presentation Forms-A": range(64336, 65024), + "Variation Selectors": range(65024, 65040), + "Vertical Forms": range(65040, 65056), + "Combining Half Marks": range(65056, 65072), + "CJK Compatibility Forms": range(65072, 65104), + "Small Form Variants": range(65104, 65136), + "Arabic Presentation Forms-B": range(65136, 65280), + "Halfwidth and Fullwidth Forms": range(65280, 65520), + "Specials": range(65520, 65536), + "Linear B Syllabary": range(65536, 65664), + "Linear B Ideograms": range(65664, 65792), + "Aegean Numbers": range(65792, 65856), + "Ancient Greek Numbers": range(65856, 65936), + "Ancient Symbols": range(65936, 66000), + "Phaistos Disc": range(66000, 66048), + "Lycian": range(66176, 66208), + "Carian": range(66208, 66272), + "Coptic Epact Numbers": range(66272, 66304), + "Old Italic": range(66304, 66352), + "Gothic": range(66352, 66384), + "Old Permic": range(66384, 66432), + "Ugaritic": range(66432, 66464), + "Old Persian": range(66464, 66528), + "Deseret": range(66560, 66640), + "Shavian": range(66640, 66688), + "Osmanya": range(66688, 66736), + "Osage": range(66736, 66816), + "Elbasan": range(66816, 66864), + "Caucasian Albanian": range(66864, 66928), + "Vithkuqi": range(66928, 67008), + "Todhri": range(67008, 67072), + "Linear A": range(67072, 67456), + "Latin Extended-F": range(67456, 67520), + "Cypriot Syllabary": range(67584, 67648), + "Imperial Aramaic": range(67648, 67680), + "Palmyrene": range(67680, 67712), + "Nabataean": range(67712, 67760), + "Hatran": range(67808, 67840), + "Phoenician": range(67840, 67872), + "Lydian": range(67872, 67904), + "Sidetic": range(67904, 67936), + "Meroitic Hieroglyphs": range(67968, 68000), + "Meroitic Cursive": range(68000, 68096), + "Kharoshthi": range(68096, 68192), + "Old South Arabian": range(68192, 68224), + "Old North Arabian": range(68224, 68256), + "Manichaean": range(68288, 68352), + "Avestan": range(68352, 68416), + "Inscriptional Parthian": range(68416, 68448), + "Inscriptional Pahlavi": range(68448, 68480), + "Psalter Pahlavi": range(68480, 68528), + "Old Turkic": range(68608, 68688), + "Old Hungarian": range(68736, 68864), + "Hanifi Rohingya": range(68864, 68928), + "Garay": range(68928, 69008), + "Rumi Numeral Symbols": range(69216, 69248), + "Yezidi": range(69248, 69312), + "Arabic Extended-C": range(69312, 69376), + "Old Sogdian": range(69376, 69424), + "Sogdian": range(69424, 69488), + "Old Uyghur": range(69488, 69552), + "Chorasmian": range(69552, 69600), + "Elymaic": range(69600, 69632), + "Brahmi": range(69632, 69760), + "Kaithi": range(69760, 69840), + "Sora Sompeng": range(69840, 69888), + "Chakma": range(69888, 69968), + "Mahajani": range(69968, 70016), + "Sharada": range(70016, 70112), + "Sinhala Archaic Numbers": range(70112, 70144), + "Khojki": range(70144, 70224), + "Multani": range(70272, 70320), + "Khudawadi": range(70320, 70400), + "Grantha": range(70400, 70528), + "Tulu-Tigalari": range(70528, 70656), + "Newa": range(70656, 70784), + "Tirhuta": range(70784, 70880), + "Siddham": range(71040, 71168), + "Modi": range(71168, 71264), + "Mongolian Supplement": range(71264, 71296), + "Takri": range(71296, 71376), + "Myanmar Extended-C": range(71376, 71424), + "Ahom": range(71424, 71504), + "Dogra": range(71680, 71760), + "Warang Citi": range(71840, 71936), + "Dives Akuru": range(71936, 72032), + "Nandinagari": range(72096, 72192), + "Zanabazar Square": range(72192, 72272), + "Soyombo": range(72272, 72368), + "Unified Canadian Aboriginal Syllabics Extended-A": range(72368, 72384), + "Pau Cin Hau": range(72384, 72448), + "Devanagari Extended-A": range(72448, 72544), + "Sharada Supplement": range(72544, 72576), + "Sunuwar": range(72640, 72704), + "Bhaiksuki": range(72704, 72816), + "Marchen": range(72816, 72896), + "Masaram Gondi": range(72960, 73056), + "Gunjala Gondi": range(73056, 73136), + "Tolong Siki": range(73136, 73200), + "Makasar": range(73440, 73472), + "Kawi": range(73472, 73568), + "Lisu Supplement": range(73648, 73664), + "Tamil Supplement": range(73664, 73728), + "Cuneiform": range(73728, 74752), + "Cuneiform Numbers and Punctuation": range(74752, 74880), + "Early Dynastic Cuneiform": range(74880, 75088), + "Cypro-Minoan": range(77712, 77824), + "Egyptian Hieroglyphs": range(77824, 78896), + "Egyptian Hieroglyph Format Controls": range(78896, 78944), + "Egyptian Hieroglyphs Extended-A": range(78944, 82944), + "Anatolian Hieroglyphs": range(82944, 83584), + "Gurung Khema": range(90368, 90432), + "Bamum Supplement": range(92160, 92736), + "Mro": range(92736, 92784), + "Tangsa": range(92784, 92880), + "Bassa Vah": range(92880, 92928), + "Pahawh Hmong": range(92928, 93072), + "Kirat Rai": range(93504, 93568), + "Medefaidrin": range(93760, 93856), + "Beria Erfe": range(93856, 93920), + "Miao": range(93952, 94112), + "Ideographic Symbols and Punctuation": range(94176, 94208), + "Tangut": range(94208, 100352), + "Tangut Components": range(100352, 101120), + "Khitan Small Script": range(101120, 101632), + "Tangut Supplement": range(101632, 101760), + "Tangut Components Supplement": range(101760, 101888), + "Kana Extended-B": range(110576, 110592), + "Kana Supplement": range(110592, 110848), + "Kana Extended-A": range(110848, 110896), + "Small Kana Extension": range(110896, 110960), + "Nushu": range(110960, 111360), + "Duployan": range(113664, 113824), + "Shorthand Format Controls": range(113824, 113840), + "Symbols for Legacy Computing Supplement": range(117760, 118464), + "Miscellaneous Symbols Supplement": range(118464, 118528), + "Znamenny Musical Notation": range(118528, 118736), + "Byzantine Musical Symbols": range(118784, 119040), + "Musical Symbols": range(119040, 119296), + "Ancient Greek Musical Notation": range(119296, 119376), + "Kaktovik Numerals": range(119488, 119520), + "Mayan Numerals": range(119520, 119552), + "Tai Xuan Jing Symbols": range(119552, 119648), + "Counting Rod Numerals": range(119648, 119680), + "Mathematical Alphanumeric Symbols": range(119808, 120832), + "Sutton SignWriting": range(120832, 121520), + "Latin Extended-G": range(122624, 122880), + "Glagolitic Supplement": range(122880, 122928), + "Cyrillic Extended-D": range(122928, 123024), + "Nyiakeng Puachue Hmong": range(123136, 123216), + "Toto": range(123536, 123584), + "Wancho": range(123584, 123648), + "Nag Mundari": range(124112, 124160), + "Ol Onal": range(124368, 124416), + "Tai Yo": range(124608, 124672), + "Ethiopic Extended-B": range(124896, 124928), + "Mende Kikakui": range(124928, 125152), + "Adlam": range(125184, 125280), + "Indic Siyaq Numbers": range(126064, 126144), + "Ottoman Siyaq Numbers": range(126208, 126288), + "Arabic Mathematical Alphabetic Symbols": range(126464, 126720), + "Mahjong Tiles": range(126976, 127024), + "Domino Tiles": range(127024, 127136), + "Playing Cards": range(127136, 127232), + "Enclosed Alphanumeric Supplement": range(127232, 127488), + "Enclosed Ideographic Supplement": range(127488, 127744), + "Miscellaneous Symbols and Pictographs": range(127744, 128512), + "Emoticons": range(128512, 128592), + "Ornamental Dingbats": range(128592, 128640), + "Transport and Map Symbols": range(128640, 128768), + "Alchemical Symbols": range(128768, 128896), + "Geometric Shapes Extended": range(128896, 129024), + "Supplemental Arrows-C": range(129024, 129280), + "Supplemental Symbols and Pictographs": range(129280, 129536), + "Chess Symbols": range(129536, 129648), + "Symbols and Pictographs Extended-A": range(129648, 129792), + "Symbols for Legacy Computing": range(129792, 130048), + "CJK Unified Ideographs Extension B": range(131072, 173792), + "CJK Unified Ideographs Extension C": range(173824, 177984), + "CJK Unified Ideographs Extension D": range(177984, 178208), + "CJK Unified Ideographs Extension E": range(178208, 183984), + "CJK Unified Ideographs Extension F": range(183984, 191472), + "CJK Unified Ideographs Extension I": range(191472, 192096), + "CJK Compatibility Ideographs Supplement": range(194560, 195104), + "CJK Unified Ideographs Extension G": range(196608, 201552), + "CJK Unified Ideographs Extension H": range(201552, 205744), + "CJK Unified Ideographs Extension J": range(205744, 210048), + "Tags": range(917504, 917632), + "Variation Selectors Supplement": range(917760, 918000), + "Supplementary Private Use Area-A": range(983040, 1048576), + "Supplementary Private Use Area-B": range(1048576, 1114112), +} + + +UNICODE_SECONDARY_RANGE_KEYWORD: list[str] = [ + "Supplement", + "Extended", + "Extensions", + "Modifier", + "Marks", + "Punctuation", + "Symbols", + "Forms", + "Operators", + "Miscellaneous", + "Drawing", + "Block", + "Shapes", + "Supplemental", + "Tags", +] + +RE_POSSIBLE_ENCODING_INDICATION = re_compile( + r"(?:(?:encoding)|(?:charset)|(?:coding))(?:[\:= ]{1,10})(?:[\"\']?)([a-zA-Z0-9\-_]+)(?:[\"\']?)", + IGNORECASE, +) + +IANA_NO_ALIASES = [ + "cp720", + "cp737", + "cp856", + "cp874", + "cp875", + "cp1006", + "koi8_r", + "koi8_t", + "koi8_u", +] + +IANA_SUPPORTED: list[str] = sorted( + filter( + lambda x: not x.endswith("_codec") and x not in {"rot_13", "tactis", "mbcs"}, + list(set(aliases.values())) + IANA_NO_ALIASES, + ) +) + +IANA_SUPPORTED_COUNT: int = len(IANA_SUPPORTED) + +# pre-computed code page that are similar using the function cp_similarity. +IANA_SUPPORTED_SIMILAR: dict[str, list[str]] = { + "cp037": ["cp1026", "cp1140", "cp273", "cp500"], + "cp1026": ["cp037", "cp1140", "cp273", "cp500"], + "cp1125": ["cp866"], + "cp1140": ["cp037", "cp1026", "cp273", "cp500"], + "cp1250": ["iso8859_2"], + "cp1251": ["kz1048", "ptcp154"], + "cp1252": ["iso8859_15", "iso8859_9", "latin_1"], + "cp1253": ["iso8859_7"], + "cp1254": ["iso8859_15", "iso8859_9", "latin_1"], + "cp1257": ["iso8859_13"], + "cp273": ["cp037", "cp1026", "cp1140", "cp500"], + "cp437": ["cp850", "cp858", "cp860", "cp861", "cp862", "cp863", "cp865"], + "cp500": ["cp037", "cp1026", "cp1140", "cp273"], + "cp850": ["cp437", "cp857", "cp858", "cp865"], + "cp857": ["cp850", "cp858", "cp865"], + "cp858": ["cp437", "cp850", "cp857", "cp865"], + "cp860": ["cp437", "cp861", "cp862", "cp863", "cp865"], + "cp861": ["cp437", "cp860", "cp862", "cp863", "cp865"], + "cp862": ["cp437", "cp860", "cp861", "cp863", "cp865"], + "cp863": ["cp437", "cp860", "cp861", "cp862", "cp865"], + "cp865": ["cp437", "cp850", "cp857", "cp858", "cp860", "cp861", "cp862", "cp863"], + "cp866": ["cp1125"], + "iso8859_10": ["iso8859_14", "iso8859_15", "iso8859_4", "iso8859_9", "latin_1"], + "iso8859_11": ["tis_620"], + "iso8859_13": ["cp1257"], + "iso8859_14": [ + "iso8859_10", + "iso8859_15", + "iso8859_16", + "iso8859_3", + "iso8859_9", + "latin_1", + ], + "iso8859_15": [ + "cp1252", + "cp1254", + "iso8859_10", + "iso8859_14", + "iso8859_16", + "iso8859_3", + "iso8859_9", + "latin_1", + ], + "iso8859_16": [ + "iso8859_14", + "iso8859_15", + "iso8859_2", + "iso8859_3", + "iso8859_9", + "latin_1", + ], + "iso8859_2": ["cp1250", "iso8859_16", "iso8859_4"], + "iso8859_3": ["iso8859_14", "iso8859_15", "iso8859_16", "iso8859_9", "latin_1"], + "iso8859_4": ["iso8859_10", "iso8859_2", "iso8859_9", "latin_1"], + "iso8859_7": ["cp1253"], + "iso8859_9": [ + "cp1252", + "cp1254", + "cp1258", + "iso8859_10", + "iso8859_14", + "iso8859_15", + "iso8859_16", + "iso8859_3", + "iso8859_4", + "latin_1", + ], + "kz1048": ["cp1251", "ptcp154"], + "latin_1": [ + "cp1252", + "cp1254", + "cp1258", + "iso8859_10", + "iso8859_14", + "iso8859_15", + "iso8859_16", + "iso8859_3", + "iso8859_4", + "iso8859_9", + ], + "mac_iceland": ["mac_roman", "mac_turkish"], + "mac_roman": ["mac_iceland", "mac_turkish"], + "mac_turkish": ["mac_iceland", "mac_roman"], + "ptcp154": ["cp1251", "kz1048"], + "tis_620": ["iso8859_11"], +} + + +CHARDET_CORRESPONDENCE: dict[str, str] = { + "iso2022_kr": "ISO-2022-KR", + "iso2022_jp": "ISO-2022-JP", + "euc_kr": "EUC-KR", + "tis_620": "TIS-620", + "utf_32": "UTF-32", + "euc_jp": "EUC-JP", + "koi8_r": "KOI8-R", + "iso8859_1": "ISO-8859-1", + "iso8859_2": "ISO-8859-2", + "iso8859_5": "ISO-8859-5", + "iso8859_6": "ISO-8859-6", + "iso8859_7": "ISO-8859-7", + "iso8859_8": "ISO-8859-8", + "utf_16": "UTF-16", + "cp855": "IBM855", + "mac_cyrillic": "MacCyrillic", + "gb2312": "GB2312", + "gb18030": "GB18030", + "cp932": "CP932", + "cp866": "IBM866", + "utf_8": "utf-8", + "utf_8_sig": "UTF-8-SIG", + "shift_jis": "SHIFT_JIS", + "big5": "Big5", + "cp1250": "windows-1250", + "cp1251": "windows-1251", + "cp1252": "Windows-1252", + "cp1253": "windows-1253", + "cp1255": "windows-1255", + "cp1256": "windows-1256", + "cp1254": "Windows-1254", + "cp949": "CP949", +} + + +COMMON_SAFE_ASCII_CHARACTERS: frozenset[str] = frozenset( + { + "<", + ">", + "=", + ":", + "/", + "&", + ";", + "{", + "}", + "[", + "]", + ",", + "|", + '"', + "-", + "(", + ")", + } +) + +# Sample character sets — replace with full lists if needed +COMMON_CHINESE_CHARACTERS = "的一是在不了有和人这中大为上个国我以要他时来用们生到作地于出就分对成会可主发年动同工也能下过子说产种面而方后多定行学法所民得经十三之进着等部度家电力里如水化高自二理起小物现实加量都两体制机当使点从业本去把性好应开它合还因由其些然前外天政四日那社义事平形相全表间样与关各重新线内数正心反你明看原又么利比或但质气第向道命此变条只没结解问意建月公无系军很情者最立代想已通并提直题党程展五果料象员革位入常文总次品式活设及管特件长求老头基资边流路级少图山统接知较将组见计别她手角期根论运农指几九区强放决西被干做必战先回则任取据处队南给色光门即保治北造百规热领七海口东导器压志世金增争济阶油思术极交受联什认六共权收证改清己美再采转更单风切打白教速花带安场身车例真务具万每目至达走积示议声报斗完类八离华名确才科张信马节话米整空元况今集温传土许步群广石记需段研界拉林律叫且究观越织装影算低持音众书布复容儿须际商非验连断深难近矿千周委素技备半办青省列习响约支般史感劳便团往酸历市克何除消构府太准精值号率族维划选标写存候毛亲快效斯院查江型眼王按格养易置派层片始却专状育厂京识适属圆包火住调满县局照参红细引听该铁价严龙飞" + +COMMON_JAPANESE_CHARACTERS = "日一国年大十二本中長出三時行見月分後前生五間上東四今金九入学高円子外八六下来気小七山話女北午百書先名川千水半男西電校語土木聞食車何南万毎白天母火右読友左休父雨" + +COMMON_KOREAN_CHARACTERS = "一二三四五六七八九十百千萬上下左右中人女子大小山川日月火水木金土父母天地國名年時文校學生" + +# Combine all into a frozenset +COMMON_CJK_CHARACTERS = frozenset( + "".join( + [ + COMMON_CHINESE_CHARACTERS, + COMMON_JAPANESE_CHARACTERS, + COMMON_KOREAN_CHARACTERS, + ] + ) +) + +KO_NAMES: frozenset[str] = frozenset({"johab", "cp949", "euc_kr"}) +ZH_NAMES: frozenset[str] = frozenset({"big5", "cp950", "big5hkscs", "hz"}) + +# Logging LEVEL below DEBUG +TRACE: int = 5 + + +# Language label that contain the em dash "—" +# character are to be considered alternative seq to origin +FREQUENCIES: dict[str, list[str]] = { + "English": [ + "e", + "a", + "t", + "i", + "o", + "n", + "s", + "r", + "h", + "l", + "d", + "c", + "u", + "m", + "f", + "p", + "g", + "w", + "y", + "b", + "v", + "k", + "x", + "j", + "z", + "q", + ], + "English—": [ + "e", + "a", + "t", + "i", + "o", + "n", + "s", + "r", + "h", + "l", + "d", + "c", + "m", + "u", + "f", + "p", + "g", + "w", + "b", + "y", + "v", + "k", + "j", + "x", + "z", + "q", + ], + "German": [ + "e", + "n", + "i", + "r", + "s", + "t", + "a", + "d", + "h", + "u", + "l", + "g", + "o", + "c", + "m", + "b", + "f", + "k", + "w", + "z", + "p", + "v", + "ü", + "ä", + "ö", + "j", + ], + "French": [ + "e", + "a", + "s", + "n", + "i", + "t", + "r", + "l", + "u", + "o", + "d", + "c", + "p", + "m", + "é", + "v", + "g", + "f", + "b", + "h", + "q", + "à", + "x", + "è", + "y", + "j", + ], + "Dutch": [ + "e", + "n", + "a", + "i", + "r", + "t", + "o", + "d", + "s", + "l", + "g", + "h", + "v", + "m", + "u", + "k", + "c", + "p", + "b", + "w", + "j", + "z", + "f", + "y", + "x", + "ë", + ], + "Italian": [ + "e", + "i", + "a", + "o", + "n", + "l", + "t", + "r", + "s", + "c", + "d", + "u", + "p", + "m", + "g", + "v", + "f", + "b", + "z", + "h", + "q", + "è", + "à", + "k", + "y", + "ò", + ], + "Polish": [ + "a", + "i", + "o", + "e", + "n", + "r", + "z", + "w", + "s", + "c", + "t", + "k", + "y", + "d", + "p", + "m", + "u", + "l", + "j", + "ł", + "g", + "b", + "h", + "ą", + "ę", + "ó", + ], + "Spanish": [ + "e", + "a", + "o", + "n", + "s", + "r", + "i", + "l", + "d", + "t", + "c", + "u", + "m", + "p", + "b", + "g", + "v", + "f", + "y", + "ó", + "h", + "q", + "í", + "j", + "z", + "á", + ], + "Russian": [ + "о", + "е", + "а", + "и", + "н", + "т", + "с", + "р", + "в", + "л", + "к", + "м", + "д", + "п", + "у", + "г", + "я", + "ы", + "з", + "б", + "й", + "ь", + "ч", + "х", + "ж", + "ц", + ], + # Jap-Kanji + "Japanese": [ + "日", + "一", + "人", + "年", + "大", + "十", + "二", + "本", + "中", + "長", + "出", + "三", + "時", + "行", + "見", + "月", + "分", + "後", + "前", + "生", + "五", + "間", + "上", + "東", + "四", + "今", + "金", + "九", + "入", + "学", + "高", + "円", + "子", + "外", + "八", + "六", + "下", + "来", + "気", + "小", + "七", + "山", + "話", + "女", + "北", + "午", + "百", + "書", + "先", + "名", + "川", + "千", + "水", + "半", + "男", + "西", + "電", + "校", + "語", + "土", + "木", + "聞", + "食", + "車", + "何", + "南", + "万", + "毎", + "白", + "天", + "母", + "火", + "右", + "読", + "友", + "左", + "休", + "父", + "雨", + ], + # Jap-Katakana + "Japanese—": [ + "ー", + "ン", + "ス", + "・", + "ル", + "ト", + "リ", + "イ", + "ア", + "ラ", + "ッ", + "ク", + "ド", + "シ", + "レ", + "ジ", + "タ", + "フ", + "ロ", + "カ", + "テ", + "マ", + "ィ", + "グ", + "バ", + "ム", + "プ", + "オ", + "コ", + "デ", + "ニ", + "ウ", + "メ", + "サ", + "ビ", + "ナ", + "ブ", + "ャ", + "エ", + "ュ", + "チ", + "キ", + "ズ", + "ダ", + "パ", + "ミ", + "ェ", + "ョ", + "ハ", + "セ", + "ベ", + "ガ", + "モ", + "ツ", + "ネ", + "ボ", + "ソ", + "ノ", + "ァ", + "ヴ", + "ワ", + "ポ", + "ペ", + "ピ", + "ケ", + "ゴ", + "ギ", + "ザ", + "ホ", + "ゲ", + "ォ", + "ヤ", + "ヒ", + "ユ", + "ヨ", + "ヘ", + "ゼ", + "ヌ", + "ゥ", + "ゾ", + "ヶ", + "ヂ", + "ヲ", + "ヅ", + "ヵ", + "ヱ", + "ヰ", + "ヮ", + "ヽ", + "゠", + "ヾ", + "ヷ", + "ヿ", + "ヸ", + "ヹ", + "ヺ", + ], + # Jap-Hiragana + "Japanese——": [ + "の", + "に", + "る", + "た", + "と", + "は", + "し", + "い", + "を", + "で", + "て", + "が", + "な", + "れ", + "か", + "ら", + "さ", + "っ", + "り", + "す", + "あ", + "も", + "こ", + "ま", + "う", + "く", + "よ", + "き", + "ん", + "め", + "お", + "け", + "そ", + "つ", + "だ", + "や", + "え", + "ど", + "わ", + "ち", + "み", + "せ", + "じ", + "ば", + "へ", + "び", + "ず", + "ろ", + "ほ", + "げ", + "む", + "べ", + "ひ", + "ょ", + "ゆ", + "ぶ", + "ご", + "ゃ", + "ね", + "ふ", + "ぐ", + "ぎ", + "ぼ", + "ゅ", + "づ", + "ざ", + "ぞ", + "ぬ", + "ぜ", + "ぱ", + "ぽ", + "ぷ", + "ぴ", + "ぃ", + "ぁ", + "ぇ", + "ぺ", + "ゞ", + "ぢ", + "ぉ", + "ぅ", + "ゐ", + "ゝ", + "ゑ", + "゛", + "゜", + "ゎ", + "ゔ", + "゚", + "ゟ", + "゙", + "ゕ", + "ゖ", + ], + "Portuguese": [ + "a", + "e", + "o", + "s", + "i", + "r", + "d", + "n", + "t", + "m", + "u", + "c", + "l", + "p", + "g", + "v", + "b", + "f", + "h", + "ã", + "q", + "é", + "ç", + "á", + "z", + "í", + ], + "Swedish": [ + "e", + "a", + "n", + "r", + "t", + "s", + "i", + "l", + "d", + "o", + "m", + "k", + "g", + "v", + "h", + "f", + "u", + "p", + "ä", + "c", + "b", + "ö", + "å", + "y", + "j", + "x", + ], + "Chinese": [ + "的", + "一", + "是", + "不", + "了", + "在", + "人", + "有", + "我", + "他", + "这", + "个", + "们", + "中", + "来", + "上", + "大", + "为", + "和", + "国", + "地", + "到", + "以", + "说", + "时", + "要", + "就", + "出", + "会", + "可", + "也", + "你", + "对", + "生", + "能", + "而", + "子", + "那", + "得", + "于", + "着", + "下", + "自", + "之", + "年", + "过", + "发", + "后", + "作", + "里", + "用", + "道", + "行", + "所", + "然", + "家", + "种", + "事", + "成", + "方", + "多", + "经", + "么", + "去", + "法", + "学", + "如", + "都", + "同", + "现", + "当", + "没", + "动", + "面", + "起", + "看", + "定", + "天", + "分", + "还", + "进", + "好", + "小", + "部", + "其", + "些", + "主", + "样", + "理", + "心", + "她", + "本", + "前", + "开", + "但", + "因", + "只", + "从", + "想", + "实", + ], + "Ukrainian": [ + "о", + "а", + "н", + "і", + "и", + "р", + "в", + "т", + "е", + "с", + "к", + "л", + "у", + "д", + "м", + "п", + "з", + "я", + "ь", + "б", + "г", + "й", + "ч", + "х", + "ц", + "ї", + ], + "Norwegian": [ + "e", + "r", + "n", + "t", + "a", + "s", + "i", + "o", + "l", + "d", + "g", + "k", + "m", + "v", + "f", + "p", + "u", + "b", + "h", + "å", + "y", + "j", + "ø", + "c", + "æ", + "w", + ], + "Finnish": [ + "a", + "i", + "n", + "t", + "e", + "s", + "l", + "o", + "u", + "k", + "ä", + "m", + "r", + "v", + "j", + "h", + "p", + "y", + "d", + "ö", + "g", + "c", + "b", + "f", + "w", + "z", + ], + "Vietnamese": [ + "n", + "h", + "t", + "i", + "c", + "g", + "a", + "o", + "u", + "m", + "l", + "r", + "à", + "đ", + "s", + "e", + "v", + "p", + "b", + "y", + "ư", + "d", + "á", + "k", + "ộ", + "ế", + ], + "Czech": [ + "o", + "e", + "a", + "n", + "t", + "s", + "i", + "l", + "v", + "r", + "k", + "d", + "u", + "m", + "p", + "í", + "c", + "h", + "z", + "á", + "y", + "j", + "b", + "ě", + "é", + "ř", + ], + "Hungarian": [ + "e", + "a", + "t", + "l", + "s", + "n", + "k", + "r", + "i", + "o", + "z", + "á", + "é", + "g", + "m", + "b", + "y", + "v", + "d", + "h", + "u", + "p", + "j", + "ö", + "f", + "c", + ], + "Korean": [ + "이", + "다", + "에", + "의", + "는", + "로", + "하", + "을", + "가", + "고", + "지", + "서", + "한", + "은", + "기", + "으", + "년", + "대", + "사", + "시", + "를", + "리", + "도", + "인", + "스", + "일", + ], + "Indonesian": [ + "a", + "n", + "e", + "i", + "r", + "t", + "u", + "s", + "d", + "k", + "m", + "l", + "g", + "p", + "b", + "o", + "h", + "y", + "j", + "c", + "w", + "f", + "v", + "z", + "x", + "q", + ], + "Turkish": [ + "a", + "e", + "i", + "n", + "r", + "l", + "ı", + "k", + "d", + "t", + "s", + "m", + "y", + "u", + "o", + "b", + "ü", + "ş", + "v", + "g", + "z", + "h", + "c", + "p", + "ç", + "ğ", + ], + "Romanian": [ + "e", + "i", + "a", + "r", + "n", + "t", + "u", + "l", + "o", + "c", + "s", + "d", + "p", + "m", + "ă", + "f", + "v", + "î", + "g", + "b", + "ș", + "ț", + "z", + "h", + "â", + "j", + ], + "Farsi": [ + "ا", + "ی", + "ر", + "د", + "ن", + "ه", + "و", + "م", + "ت", + "ب", + "س", + "ل", + "ک", + "ش", + "ز", + "ف", + "گ", + "ع", + "خ", + "ق", + "ج", + "آ", + "پ", + "ح", + "ط", + "ص", + ], + "Arabic": [ + "ا", + "ل", + "ي", + "م", + "و", + "ن", + "ر", + "ت", + "ب", + "ة", + "ع", + "د", + "س", + "ف", + "ه", + "ك", + "ق", + "أ", + "ح", + "ج", + "ش", + "ط", + "ص", + "ى", + "خ", + "إ", + ], + "Danish": [ + "e", + "r", + "n", + "t", + "a", + "i", + "s", + "d", + "l", + "o", + "g", + "m", + "k", + "f", + "v", + "u", + "b", + "h", + "p", + "å", + "y", + "ø", + "æ", + "c", + "j", + "w", + ], + "Serbian": [ + "а", + "и", + "о", + "е", + "н", + "р", + "с", + "у", + "т", + "к", + "ј", + "в", + "д", + "м", + "п", + "л", + "г", + "з", + "б", + "a", + "i", + "e", + "o", + "n", + "ц", + "ш", + ], + "Lithuanian": [ + "i", + "a", + "s", + "o", + "r", + "e", + "t", + "n", + "u", + "k", + "m", + "l", + "p", + "v", + "d", + "j", + "g", + "ė", + "b", + "y", + "ų", + "š", + "ž", + "c", + "ą", + "į", + ], + "Slovene": [ + "e", + "a", + "i", + "o", + "n", + "r", + "s", + "l", + "t", + "j", + "v", + "k", + "d", + "p", + "m", + "u", + "z", + "b", + "g", + "h", + "č", + "c", + "š", + "ž", + "f", + "y", + ], + "Slovak": [ + "o", + "a", + "e", + "n", + "i", + "r", + "v", + "t", + "s", + "l", + "k", + "d", + "m", + "p", + "u", + "c", + "h", + "j", + "b", + "z", + "á", + "y", + "ý", + "í", + "č", + "é", + ], + "Hebrew": [ + "י", + "ו", + "ה", + "ל", + "ר", + "ב", + "ת", + "מ", + "א", + "ש", + "נ", + "ע", + "ם", + "ד", + "ק", + "ח", + "פ", + "ס", + "כ", + "ג", + "ט", + "צ", + "ן", + "ז", + "ך", + ], + "Bulgarian": [ + "а", + "и", + "о", + "е", + "н", + "т", + "р", + "с", + "в", + "л", + "к", + "д", + "п", + "м", + "з", + "г", + "я", + "ъ", + "у", + "б", + "ч", + "ц", + "й", + "ж", + "щ", + "х", + ], + "Croatian": [ + "a", + "i", + "o", + "e", + "n", + "r", + "j", + "s", + "t", + "u", + "k", + "l", + "v", + "d", + "m", + "p", + "g", + "z", + "b", + "c", + "č", + "h", + "š", + "ž", + "ć", + "f", + ], + "Hindi": [ + "क", + "र", + "स", + "न", + "त", + "म", + "ह", + "प", + "य", + "ल", + "व", + "ज", + "द", + "ग", + "ब", + "श", + "ट", + "अ", + "ए", + "थ", + "भ", + "ड", + "च", + "ध", + "ष", + "इ", + ], + "Estonian": [ + "a", + "i", + "e", + "s", + "t", + "l", + "u", + "n", + "o", + "k", + "r", + "d", + "m", + "v", + "g", + "p", + "j", + "h", + "ä", + "b", + "õ", + "ü", + "f", + "c", + "ö", + "y", + ], + "Thai": [ + "า", + "น", + "ร", + "อ", + "ก", + "เ", + "ง", + "ม", + "ย", + "ล", + "ว", + "ด", + "ท", + "ส", + "ต", + "ะ", + "ป", + "บ", + "ค", + "ห", + "แ", + "จ", + "พ", + "ช", + "ข", + "ใ", + ], + "Greek": [ + "α", + "τ", + "ο", + "ι", + "ε", + "ν", + "ρ", + "σ", + "κ", + "η", + "π", + "ς", + "υ", + "μ", + "λ", + "ί", + "ό", + "ά", + "γ", + "έ", + "δ", + "ή", + "ω", + "χ", + "θ", + "ύ", + ], + "Tamil": [ + "க", + "த", + "ப", + "ட", + "ர", + "ம", + "ல", + "ன", + "வ", + "ற", + "ய", + "ள", + "ச", + "ந", + "இ", + "ண", + "அ", + "ஆ", + "ழ", + "ங", + "எ", + "உ", + "ஒ", + "ஸ", + ], + "Kazakh": [ + "а", + "ы", + "е", + "н", + "т", + "р", + "л", + "і", + "д", + "с", + "м", + "қ", + "к", + "о", + "б", + "и", + "у", + "ғ", + "ж", + "ң", + "з", + "ш", + "й", + "п", + "г", + "ө", + ], +} + +LANGUAGE_SUPPORTED_COUNT: int = len(FREQUENCIES) + +# Bit flags for unified character classification. +# A single unicodedata.name() call sets all relevant flags at once. +_LATIN: int = 1 +_ACCENTUATED: int = 1 << 1 +_CJK: int = 1 << 2 +_HANGUL: int = 1 << 3 +_KATAKANA: int = 1 << 4 +_HIRAGANA: int = 1 << 5 +_THAI: int = 1 << 6 +_ARABIC: int = 1 << 7 +_ARABIC_ISOLATED_FORM: int = 1 << 8 + +_ACCENT_KEYWORDS: tuple[str, ...] = ( + "WITH GRAVE", + "WITH ACUTE", + "WITH CEDILLA", + "WITH DIAERESIS", + "WITH CIRCUMFLEX", + "WITH TILDE", + "WITH MACRON", + "WITH RING ABOVE", +) + +# Pre-built lookup structures for FREQUENCIES (computed once at import time). +# character -> rank mapping per language (replaces list .index() calls). +_FREQUENCIES_RANK: dict[str, dict[str, int]] = { + lang: {char: rank for rank, char in enumerate(chars)} + for lang, chars in FREQUENCIES.items() +} + +# frozenset per language (avoids rebuilding set() per call). +_FREQUENCIES_SET: dict[str, frozenset[str]] = { + lang: frozenset(chars) for lang, chars in FREQUENCIES.items() +} + +# prebuilt list of secondary range names. +_SECONDARY_RANGE_NAMES: frozenset[str] = frozenset( + range_name + for range_name in UNICODE_RANGES_COMBINED + if any(keyword in range_name for keyword in UNICODE_SECONDARY_RANGE_KEYWORD) +) diff --git a/venv/lib/python3.11/site-packages/charset_normalizer/legacy.py b/venv/lib/python3.11/site-packages/charset_normalizer/legacy.py new file mode 100644 index 0000000000000000000000000000000000000000..4f17e8577f34c0c72a65e8b9588eb498f9349c9f --- /dev/null +++ b/venv/lib/python3.11/site-packages/charset_normalizer/legacy.py @@ -0,0 +1,79 @@ +from __future__ import annotations + +from typing import TYPE_CHECKING, Any +from warnings import warn + +from .api import from_bytes +from .constant import CHARDET_CORRESPONDENCE, TOO_SMALL_SEQUENCE + +if TYPE_CHECKING: + from typing import TypedDict + + class ResultDict(TypedDict): + encoding: str | None + language: str + confidence: float | None + + +def detect( + byte_str: bytes, should_rename_legacy: bool = False, **kwargs: Any +) -> ResultDict: + """ + chardet legacy method + Detect the encoding of the given byte string. It should be mostly backward-compatible. + Encoding name will match Chardet own writing whenever possible. (Not on encoding name unsupported by it) + This function is deprecated and should be used to migrate your project easily, consult the documentation for + further information. Not planned for removal. + + :param byte_str: The byte sequence to examine. + :param should_rename_legacy: Should we rename legacy encodings + to their more modern equivalents? + """ + if len(kwargs): + warn( + f"charset-normalizer disregard arguments '{','.join(list(kwargs.keys()))}' in legacy function detect()" + ) + + if not isinstance(byte_str, (bytearray, bytes)): + raise TypeError( # pragma: nocover + f"Expected object of type bytes or bytearray, got: {type(byte_str)}" + ) + + if isinstance(byte_str, bytearray): + byte_str = bytes(byte_str) + + r = from_bytes(byte_str).best() + + encoding = r.encoding if r is not None else None + language = r.language if r is not None and r.language != "Unknown" else "" + confidence = 1.0 - r.chaos if r is not None else None + + # automatically lower confidence + # on small bytes samples. + # https://github.com/jawah/charset_normalizer/issues/391 + if ( + confidence is not None + and confidence >= 0.9 + and encoding + not in { + "utf_8", + "ascii", + } + and not r.bom # type: ignore[union-attr] + and len(byte_str) < TOO_SMALL_SEQUENCE + ): + confidence -= 0.2 + + # Note: CharsetNormalizer does not return 'UTF-8-SIG' as the sig get stripped in the detection/normalization process + # but chardet does return 'utf-8-sig' and it is a valid codec name. + if r is not None and encoding == "utf_8" and r.bom: + encoding += "_sig" + + if not should_rename_legacy and encoding in CHARDET_CORRESPONDENCE: + encoding = CHARDET_CORRESPONDENCE[encoding] + + return { + "encoding": encoding, + "language": language, + "confidence": confidence, + } diff --git a/venv/lib/python3.11/site-packages/charset_normalizer/md.cpython-311-x86_64-linux-gnu.so b/venv/lib/python3.11/site-packages/charset_normalizer/md.cpython-311-x86_64-linux-gnu.so new file mode 100644 index 0000000000000000000000000000000000000000..c6a5fc475f7bb43dbca72179b9b8fb50cdf8a676 Binary files /dev/null and b/venv/lib/python3.11/site-packages/charset_normalizer/md.cpython-311-x86_64-linux-gnu.so differ diff --git a/venv/lib/python3.11/site-packages/charset_normalizer/md.py b/venv/lib/python3.11/site-packages/charset_normalizer/md.py new file mode 100644 index 0000000000000000000000000000000000000000..3c668e5092310ae56d7ca1ff4481f1c236f19061 --- /dev/null +++ b/venv/lib/python3.11/site-packages/charset_normalizer/md.py @@ -0,0 +1,1002 @@ +from __future__ import annotations + +import sys +from functools import lru_cache +from logging import getLogger + +if sys.version_info >= (3, 8): + from typing import final +else: + try: + from typing_extensions import final + except ImportError: + + def final(cls): # type: ignore[misc,no-untyped-def] + return cls + + +from .constant import ( + COMMON_CJK_CHARACTERS, + COMMON_SAFE_ASCII_CHARACTERS, + TRACE, + UNICODE_SECONDARY_RANGE_KEYWORD, + _ACCENTUATED, + _ARABIC, + _ARABIC_ISOLATED_FORM, + _CJK, + _HANGUL, + _HIRAGANA, + _KATAKANA, + _LATIN, + _THAI, +) +from .utils import ( + _character_flags, + is_emoticon, + is_punctuation, + is_separator, + is_symbol, + remove_accent, + unicode_range, +) + +# Combined bitmask for CJK/Hangul/Katakana/Hiragana/Thai glyph detection. +_GLYPH_MASK: int = _CJK | _HANGUL | _KATAKANA | _HIRAGANA | _THAI + + +@final +class CharInfo: + """Pre-computed character properties shared across all detectors.""" + + __slots__ = ( + "character", + "printable", + "alpha", + "upper", + "lower", + "space", + "digit", + "is_ascii", + "case_variable", + "flags", + "accentuated", + "latin", + "is_cjk", + "is_arabic", + "is_glyph", + "punct", + "sym", + "range", + "sep", + "emoticon", + "safe", + "common_cjk", + ) + + character: str + printable: bool + alpha: bool + upper: bool + lower: bool + space: bool + digit: bool + is_ascii: bool + case_variable: bool + flags: int + accentuated: bool + latin: bool + is_cjk: bool + is_arabic: bool + is_glyph: bool + punct: bool + sym: bool + range: str | None + sep: bool + emoticon: bool + safe: bool + common_cjk: bool + + def __init__(self, character: str) -> None: + """Compute all properties for *character* (built once per codepoint, + every branch assigns every slot).""" + self.character = character + + # ASCII fast-path: for characters with ord < 128, we can skip + # _character_flags() entirely and derive most properties from ord. + o: int = ord(character) + if o < 128: + self.is_ascii = True + self.accentuated = False + self.is_cjk = False + self.is_arabic = False + self.is_glyph = False + # ASCII alpha: a-z (97-122) or A-Z (65-90) + if 65 <= o <= 90: + # Uppercase ASCII letter + self.alpha = True + self.upper = True + self.lower = False + self.space = False + self.digit = False + self.printable = True + self.case_variable = True + self.flags = _LATIN + self.latin = True + self.punct = False + self.sym = False + elif 97 <= o <= 122: + # Lowercase ASCII letter + self.alpha = True + self.upper = False + self.lower = True + self.space = False + self.digit = False + self.printable = True + self.case_variable = True + self.flags = _LATIN + self.latin = True + self.punct = False + self.sym = False + elif 48 <= o <= 57: + # ASCII digit 0-9 + self.alpha = False + self.upper = False + self.lower = False + self.space = False + self.digit = True + self.printable = True + self.case_variable = False + self.flags = 0 + self.latin = False + self.punct = False + self.sym = False + elif o == 32 or (9 <= o <= 13): + # Space, tab, newline, etc. + self.alpha = False + self.upper = False + self.lower = False + self.space = True + self.digit = False + self.printable = o == 32 + self.case_variable = False + self.flags = 0 + self.latin = False + self.punct = False + self.sym = False + else: + # Other ASCII (punctuation, symbols, control chars) + self.printable = character.isprintable() + self.alpha = False + self.upper = False + self.lower = False + self.space = False + self.digit = False + self.case_variable = False + self.flags = 0 + self.latin = False + self.punct = is_punctuation(character) if self.printable else False + self.sym = is_symbol(character) if self.printable else False + else: + # Non-ASCII path + self.is_ascii = False + self.printable = character.isprintable() + self.alpha = character.isalpha() + self.upper = character.isupper() + self.lower = character.islower() + self.space = character.isspace() + self.digit = character.isdigit() + self.case_variable = self.lower != self.upper + + # Flag-based classification (single unicodedata.name() call, lru-cached) + flags: int + if self.alpha: + flags = _character_flags(character) + else: + flags = 0 + self.flags = flags + self.accentuated = bool(flags & _ACCENTUATED) + self.latin = bool(flags & _LATIN) + self.is_cjk = bool(flags & _CJK) + self.is_arabic = bool(flags & _ARABIC) + self.is_glyph = bool(flags & _GLYPH_MASK) + + # Eagerly compute punct and sym (avoids property dispatch overhead + # on 300K+ accesses in the hot loop). + self.punct = is_punctuation(character) if self.printable else False + self.sym = is_symbol(character) if self.printable else False + + self.range = unicode_range(character) + self.sep = is_separator(character) + self.emoticon = is_emoticon(character) + self.safe = character in COMMON_SAFE_ASCII_CHARACTERS + self.common_cjk = character in COMMON_CJK_CHARACTERS + + +# Per-codepoint cache of CharInfo instances +# At most UTF-8 size allocated. +@lru_cache(maxsize=None) +def _char_info(character: str) -> CharInfo: + """Build (once per codepoint) and cache the CharInfo for *character*.""" + return CharInfo(character) + + +# ASCII table indexed by codepoint. +_ASCII_CHAR_INFO: list[CharInfo] = [ + CharInfo(chr(_codepoint)) for _codepoint in range(128) +] + + +class MessDetectorPlugin: + """ + Base abstract class used for mess detection plugins. + All detectors MUST extend and implement given methods. + """ + + __slots__ = () + + def feed_info(self, character: str, info: CharInfo) -> None: + """ + The main routine to be executed upon character. + Insert the logic in witch the text would be considered chaotic. + """ + raise NotImplementedError # Defensive: + + def reset(self) -> None: # Defensive: + """ + Permit to reset the plugin to the initial state. + """ + raise NotImplementedError + + @property + def ratio(self) -> float: + """ + Compute the chaos ratio based on what your feed() has seen. + Must NOT be lower than 0.; No restriction gt 0. + """ + raise NotImplementedError # Defensive: + + +@final +class TooManySymbolOrPunctuationPlugin(MessDetectorPlugin): + __slots__ = ( + "_punctuation_count", + "_symbol_count", + "_character_count", + "_last_printable_char", + "_frenzy_symbol_in_word", + ) + + def __init__(self) -> None: + self._punctuation_count: int = 0 + self._symbol_count: int = 0 + self._character_count: int = 0 + + self._last_printable_char: str | None = None + self._frenzy_symbol_in_word: bool = False + + def feed_info(self, character: str, info: CharInfo) -> None: + """Optimized feed using pre-computed character info.""" + self._character_count += 1 + + if character != self._last_printable_char and not info.safe: + if info.punct: + self._punctuation_count += 1 + elif not info.digit and info.sym and not info.emoticon: + self._symbol_count += 2 + + self._last_printable_char = character + + def reset(self) -> None: # Abstract + self._punctuation_count = 0 + self._character_count = 0 + self._symbol_count = 0 + + @property + def ratio(self) -> float: + if self._character_count == 0: + return 0.0 + + ratio_of_punctuation: float = ( + self._punctuation_count + self._symbol_count + ) / self._character_count + + return ratio_of_punctuation if ratio_of_punctuation >= 0.3 else 0.0 + + +@final +class TooManyAccentuatedPlugin(MessDetectorPlugin): + __slots__ = ("_character_count", "_accentuated_count") + + def __init__(self) -> None: + self._character_count: int = 0 + self._accentuated_count: int = 0 + + def feed_info(self, character: str, info: CharInfo) -> None: + """Optimized feed using pre-computed character info.""" + self._character_count += 1 + + if info.accentuated: + self._accentuated_count += 1 + + def reset(self) -> None: # Abstract + self._character_count = 0 + self._accentuated_count = 0 + + @property + def ratio(self) -> float: + if self._character_count < 8: + return 0.0 + + ratio_of_accentuation: float = self._accentuated_count / self._character_count + return ratio_of_accentuation if ratio_of_accentuation >= 0.35 else 0.0 + + +@final +class UnprintablePlugin(MessDetectorPlugin): + __slots__ = ("_unprintable_count", "_character_count") + + def __init__(self) -> None: + self._unprintable_count: int = 0 + self._character_count: int = 0 + + def feed_info(self, character: str, info: CharInfo) -> None: + """Optimized feed using pre-computed character info.""" + if ( + not info.space + and not info.printable + and character != "\x1a" + and character != "\ufeff" + ): + self._unprintable_count += 1 + self._character_count += 1 + + def reset(self) -> None: # Abstract + self._unprintable_count = 0 + + @property + def ratio(self) -> float: + if self._character_count == 0: # Defensive: + return 0.0 + + return (self._unprintable_count * 8) / self._character_count + + +@final +class SuspiciousDuplicateAccentPlugin(MessDetectorPlugin): + __slots__ = ( + "_successive_count", + "_character_count", + "_last_latin_character", + "_last_was_accentuated", + ) + + def __init__(self) -> None: + self._successive_count: int = 0 + self._character_count: int = 0 + + self._last_latin_character: str | None = None + self._last_was_accentuated: bool = False + + def feed_info(self, character: str, info: CharInfo) -> None: + """Optimized feed using pre-computed character info.""" + self._character_count += 1 + if ( + self._last_latin_character is not None + and info.accentuated + and self._last_was_accentuated + ): + if info.upper and self._last_latin_character.isupper(): + self._successive_count += 1 + if remove_accent(character) == remove_accent(self._last_latin_character): + self._successive_count += 1 + self._last_latin_character = character + self._last_was_accentuated = info.accentuated + + def reset(self) -> None: # Abstract + self._successive_count = 0 + self._character_count = 0 + self._last_latin_character = None + self._last_was_accentuated = False + + @property + def ratio(self) -> float: + if self._character_count == 0: + return 0.0 + + return (self._successive_count * 2) / self._character_count + + +@final +class SuspiciousRange(MessDetectorPlugin): + __slots__ = ( + "_suspicious_successive_range_count", + "_character_count", + "_last_printable_seen", + "_last_printable_range", + ) + + def __init__(self) -> None: + self._suspicious_successive_range_count: int = 0 + self._character_count: int = 0 + self._last_printable_seen: str | None = None + self._last_printable_range: str | None = None + + def feed_info(self, character: str, info: CharInfo) -> None: + """Optimized feed using pre-computed character info.""" + self._character_count += 1 + + if info.space or info.punct or info.safe: + self._last_printable_seen = None + self._last_printable_range = None + return + + if self._last_printable_seen is None: + self._last_printable_seen = character + self._last_printable_range = info.range + return + + unicode_range_a: str | None = self._last_printable_range + unicode_range_b: str | None = info.range + + # Identical non-None ranges can never be suspicious. + if unicode_range_a != unicode_range_b or unicode_range_a is None: + if is_suspiciously_successive_range(unicode_range_a, unicode_range_b): + self._suspicious_successive_range_count += 1 + + self._last_printable_seen = character + self._last_printable_range = unicode_range_b + + def reset(self) -> None: # Abstract + self._character_count = 0 + self._suspicious_successive_range_count = 0 + self._last_printable_seen = None + self._last_printable_range = None + + @property + def ratio(self) -> float: + if self._character_count <= 13: + return 0.0 + + ratio_of_suspicious_range_usage: float = ( + self._suspicious_successive_range_count * 2 + ) / self._character_count + + return ratio_of_suspicious_range_usage + + +@final +class SuperWeirdWordPlugin(MessDetectorPlugin): + __slots__ = ( + "_word_count", + "_bad_word_count", + "_foreign_long_count", + "_is_current_word_bad", + "_foreign_long_watch", + "_character_count", + "_bad_character_count", + "_buffer_length", + "_buffer_last_char", + "_buffer_last_char_accentuated", + "_buffer_accent_count", + "_buffer_glyph_count", + "_buffer_upper_count", + "_buffer_first_lower", + "_buffer_has_non_ascii", + ) + + def __init__(self) -> None: + self._word_count: int = 0 + self._bad_word_count: int = 0 + self._foreign_long_count: int = 0 + + self._is_current_word_bad: bool = False + self._foreign_long_watch: bool = False + + self._character_count: int = 0 + self._bad_character_count: int = 0 + + self._buffer_length: int = 0 + self._buffer_last_char: str | None = None + self._buffer_last_char_accentuated: bool = False + self._buffer_accent_count: int = 0 + self._buffer_glyph_count: int = 0 + self._buffer_upper_count: int = 0 + self._buffer_first_lower: bool = False + self._buffer_has_non_ascii: bool = False + + def feed_info(self, character: str, info: CharInfo) -> None: + """Optimized feed using pre-computed character info.""" + if info.alpha: + if self._buffer_length == 0: + self._buffer_first_lower = info.lower + self._buffer_length += 1 + self._buffer_last_char = character + + if info.upper: + self._buffer_upper_count += 1 + if not info.is_ascii: + self._buffer_has_non_ascii = True + + self._buffer_last_char_accentuated = info.accentuated + + if info.accentuated: + self._buffer_accent_count += 1 + if ( + not self._foreign_long_watch + and (not info.latin or info.accentuated) + and not info.is_glyph + ): + self._foreign_long_watch = True + if info.is_glyph: + self._buffer_glyph_count += 1 + return + if not self._buffer_length: + return + if info.space or info.punct or info.sep: + self._word_count += 1 + buffer_length: int = self._buffer_length + + self._character_count += buffer_length + + if buffer_length >= 4: + if self._buffer_accent_count / buffer_length >= 0.5: + self._is_current_word_bad = True + elif ( + self._buffer_last_char_accentuated + and self._buffer_last_char.isupper() # type: ignore[union-attr] + and self._buffer_upper_count != buffer_length + ): + self._foreign_long_count += 1 + self._is_current_word_bad = True + elif self._buffer_glyph_count == 1: + self._is_current_word_bad = True + self._foreign_long_count += 1 + elif ( + self._buffer_has_non_ascii + and self._buffer_first_lower + and self._buffer_upper_count == buffer_length - 1 + ): + # Inverse capitalization detector. + # No natural writing produces such words. + # see https://github.com/jawah/charset_normalizer/issues/731 + self._foreign_long_count += 1 + self._is_current_word_bad = True + if buffer_length >= 24 and self._foreign_long_watch: + probable_camel_cased: bool = ( + self._buffer_upper_count > 0 + and self._buffer_upper_count / buffer_length <= 0.3 + ) + + if not probable_camel_cased: + self._foreign_long_count += 1 + self._is_current_word_bad = True + + if self._is_current_word_bad: + self._bad_word_count += 1 + self._bad_character_count += buffer_length + self._is_current_word_bad = False + + self._foreign_long_watch = False + self._buffer_length = 0 + self._buffer_last_char = None + self._buffer_last_char_accentuated = False + self._buffer_accent_count = 0 + self._buffer_glyph_count = 0 + self._buffer_upper_count = 0 + self._buffer_first_lower = False + self._buffer_has_non_ascii = False + elif ( + character not in {"<", ">", "-", "=", "~", "|", "_"} + and not info.digit + and info.sym + ): + self._is_current_word_bad = True + self._buffer_length += 1 + self._buffer_last_char = character + self._buffer_last_char_accentuated = False + + def reset(self) -> None: # Abstract + self._buffer_length = 0 + self._buffer_last_char = None + self._buffer_last_char_accentuated = False + self._is_current_word_bad = False + self._foreign_long_watch = False + self._bad_word_count = 0 + self._word_count = 0 + self._character_count = 0 + self._bad_character_count = 0 + self._foreign_long_count = 0 + self._buffer_accent_count = 0 + self._buffer_glyph_count = 0 + self._buffer_upper_count = 0 + self._buffer_first_lower = False + self._buffer_has_non_ascii = False + + @property + def ratio(self) -> float: + if self._word_count <= 10 and self._foreign_long_count == 0: + return 0.0 + + return self._bad_character_count / self._character_count + + +@final +class CjkUncommonPlugin(MessDetectorPlugin): + """ + Detect messy CJK text that probably means nothing. + """ + + __slots__ = ("_character_count", "_uncommon_count") + + def __init__(self) -> None: + self._character_count: int = 0 + self._uncommon_count: int = 0 + + def feed_info(self, character: str, info: CharInfo) -> None: + """Optimized feed using pre-computed character info.""" + self._character_count += 1 + + if not info.common_cjk: + self._uncommon_count += 1 + + def reset(self) -> None: # Abstract + self._character_count = 0 + self._uncommon_count = 0 + + @property + def ratio(self) -> float: + if self._character_count < 8: + return 0.0 + + uncommon_form_usage: float = self._uncommon_count / self._character_count + + # we can be pretty sure it's garbage when uncommon characters are widely + # used. otherwise it could just be traditional chinese for example. + return uncommon_form_usage / 10 if uncommon_form_usage > 0.5 else 0.0 + + +@final +class ArchaicUpperLowerPlugin(MessDetectorPlugin): + __slots__ = ( + "_buf", + "_character_count_since_last_sep", + "_successive_upper_lower_count", + "_successive_upper_lower_count_final", + "_character_count", + "_last_alpha_seen", + "_last_alpha_seen_upper", + "_last_alpha_seen_lower", + "_current_ascii_only", + ) + + def __init__(self) -> None: + self._buf: bool = False + + self._character_count_since_last_sep: int = 0 + + self._successive_upper_lower_count: int = 0 + self._successive_upper_lower_count_final: int = 0 + + self._character_count: int = 0 + + self._last_alpha_seen: str | None = None + self._last_alpha_seen_upper: bool = False + self._last_alpha_seen_lower: bool = False + self._current_ascii_only: bool = True + + def feed_info(self, character: str, info: CharInfo) -> None: + """Optimized feed using pre-computed character info.""" + is_concerned: bool = info.alpha and info.case_variable + chunk_sep: bool = not is_concerned + + if chunk_sep and self._character_count_since_last_sep > 0: + if ( + self._character_count_since_last_sep <= 64 + and not info.digit + and not self._current_ascii_only + ): + self._successive_upper_lower_count_final += ( + self._successive_upper_lower_count + ) + + self._successive_upper_lower_count = 0 + self._character_count_since_last_sep = 0 + self._last_alpha_seen = None + self._buf = False + self._character_count += 1 + self._current_ascii_only = True + + return + + if self._current_ascii_only and not info.is_ascii: + self._current_ascii_only = False + + if self._last_alpha_seen is not None: + if (info.upper and self._last_alpha_seen_lower) or ( + info.lower and self._last_alpha_seen_upper + ): + if self._buf: + self._successive_upper_lower_count += 2 + self._buf = False + else: + self._buf = True + else: + self._buf = False + + self._character_count += 1 + self._character_count_since_last_sep += 1 + self._last_alpha_seen = character + self._last_alpha_seen_upper = info.upper + self._last_alpha_seen_lower = info.lower + + def reset(self) -> None: # Abstract + self._character_count = 0 + self._character_count_since_last_sep = 0 + self._successive_upper_lower_count = 0 + self._successive_upper_lower_count_final = 0 + self._last_alpha_seen = None + self._last_alpha_seen_upper = False + self._last_alpha_seen_lower = False + self._buf = False + self._current_ascii_only = True + + @property + def ratio(self) -> float: + if self._character_count == 0: # Defensive: + return 0.0 + + return self._successive_upper_lower_count_final / self._character_count + + +@final +class ArabicIsolatedFormPlugin(MessDetectorPlugin): + __slots__ = ("_character_count", "_isolated_form_count") + + def __init__(self) -> None: + self._character_count: int = 0 + self._isolated_form_count: int = 0 + + def reset(self) -> None: # Abstract + self._character_count = 0 + self._isolated_form_count = 0 + + def feed_info(self, character: str, info: CharInfo) -> None: + """Optimized feed using pre-computed character info.""" + self._character_count += 1 + + if info.flags & _ARABIC_ISOLATED_FORM: + self._isolated_form_count += 1 + + @property + def ratio(self) -> float: + if self._character_count < 8: + return 0.0 + + isolated_form_usage: float = self._isolated_form_count / self._character_count + + return isolated_form_usage + + +@lru_cache(maxsize=1024) +def is_suspiciously_successive_range( + unicode_range_a: str | None, unicode_range_b: str | None +) -> bool: + """ + Determine if two Unicode range seen next to each other can be considered as suspicious. + """ + if unicode_range_a is None or unicode_range_b is None: + return True + + if unicode_range_a == unicode_range_b: + return False + + if "Latin" in unicode_range_a and "Latin" in unicode_range_b: + return False + + if "Emoticons" in unicode_range_a or "Emoticons" in unicode_range_b: + return False + + # Latin characters can be accompanied with a combining diacritical mark + # eg. Vietnamese. + if ("Latin" in unicode_range_a or "Latin" in unicode_range_b) and ( + "Combining" in unicode_range_a or "Combining" in unicode_range_b + ): + return False + + keywords_range_a, keywords_range_b = ( + unicode_range_a.split(" "), + unicode_range_b.split(" "), + ) + + for el in keywords_range_a: + if el in UNICODE_SECONDARY_RANGE_KEYWORD: + continue + if el in keywords_range_b: + return False + + # Japanese Exception + range_a_jp_chars, range_b_jp_chars = ( + unicode_range_a + in ( + "Hiragana", + "Katakana", + ), + unicode_range_b in ("Hiragana", "Katakana"), + ) + if (range_a_jp_chars or range_b_jp_chars) and ( + "CJK" in unicode_range_a or "CJK" in unicode_range_b + ): + return False + if range_a_jp_chars and range_b_jp_chars: + return False + + if "Hangul" in unicode_range_a or "Hangul" in unicode_range_b: + if "CJK" in unicode_range_a or "CJK" in unicode_range_b: + return False + if unicode_range_a == "Basic Latin" or unicode_range_b == "Basic Latin": + return False + + # Chinese/Japanese use dedicated range for punctuation and/or separators. + if ("CJK" in unicode_range_a or "CJK" in unicode_range_b) or ( + unicode_range_a in ["Katakana", "Hiragana"] + and unicode_range_b in ["Katakana", "Hiragana"] + ): + if "Punctuation" in unicode_range_a or "Punctuation" in unicode_range_b: + return False + if "Forms" in unicode_range_a or "Forms" in unicode_range_b: + return False + if unicode_range_a == "Basic Latin" or unicode_range_b == "Basic Latin": + return False + + return True + + +def mess_ratio( + decoded_sequence: str, maximum_threshold: float = 0.2, debug: bool = False +) -> float: + """ + Compute a mess ratio given a decoded bytes sequence. The maximum threshold does stop the computation earlier. + """ + + seq_len: int = len(decoded_sequence) + + if seq_len < 511: + step: int = 32 + elif seq_len < 1024: + step = 64 + else: + step = 128 + + # str.isascii() is O(1) (the flag lives in the str header). Six of the + # nine detectors provably keep a 0.0 ratio on ASCII-only input and are + # therefore not fed at all. + is_pure_ascii: bool = decoded_sequence.isascii() + + # Cached per-codepoint character properties (see CharInfo). ASCII + # characters resolve through the immutable import-time table; anything + # else goes through the lru_cache-backed slow path. + ascii_info = _ASCII_CHAR_INFO + char_info = _char_info + + mean_mess_ratio: float + info: CharInfo + + # Create each detector as a named local variable (unrolled from the generic loop). + # This eliminates per-character iteration over the detector list and + # per-character eligible() virtual dispatch, while keeping every plugin class + # intact and fully readable. + d_sp: TooManySymbolOrPunctuationPlugin = TooManySymbolOrPunctuationPlugin() + d_ta: TooManyAccentuatedPlugin = TooManyAccentuatedPlugin() + d_up: UnprintablePlugin = UnprintablePlugin() + d_sda: SuspiciousDuplicateAccentPlugin = SuspiciousDuplicateAccentPlugin() + d_sr: SuspiciousRange = SuspiciousRange() + d_sw: SuperWeirdWordPlugin = SuperWeirdWordPlugin() + d_cu: CjkUncommonPlugin = CjkUncommonPlugin() + d_au: ArchaicUpperLowerPlugin = ArchaicUpperLowerPlugin() + d_ai: ArabicIsolatedFormPlugin = ArabicIsolatedFormPlugin() + + # Local references for feed_info methods called in the hot loop. + d_sp_feed = d_sp.feed_info + d_ta_feed = d_ta.feed_info + d_up_feed = d_up.feed_info + d_sda_feed = d_sda.feed_info + d_sr_feed = d_sr.feed_info + d_sw_feed = d_sw.feed_info + d_cu_feed = d_cu.feed_info + d_au_feed = d_au.feed_info + d_ai_feed = d_ai.feed_info + + for block_start in range(0, seq_len, step): + for character in decoded_sequence[block_start : block_start + step]: + # Character properties computed once per distinct codepoint + # (shared across all plugins and all mess_ratio calls). + # ord() doubles as the ASCII table index and, unlike + # str.isascii(), lowers to a mypyc primitive. + codepoint: int = ord(character) + if codepoint < 128: + info = ascii_info[codepoint] + else: + info = char_info(character) + + # Detectors with eligible() == always True + d_up_feed(character, info) + d_sw_feed(character, info) + + if is_pure_ascii: + # The six remaining detectors provably stay at 0.0 (see above). + if info.printable: + d_sp_feed(character, info) + continue + + d_au_feed(character, info) + + # Detectors with eligible() == isprintable + if info.printable: + d_sp_feed(character, info) + d_sr_feed(character, info) + + # Detectors with eligible() == isalpha + if info.alpha: + d_ta_feed(character, info) + # SuspiciousDuplicateAccent: isalpha() and is_latin() + if info.latin: + d_sda_feed(character, info) + # CjkUncommon: is_cjk() + if info.is_cjk: + d_cu_feed(character, info) + # ArabicIsolatedForm: is_arabic() + if info.is_arabic: + d_ai_feed(character, info) + + mean_mess_ratio = ( + d_sp.ratio + + d_ta.ratio + + d_up.ratio + + d_sda.ratio + + d_sr.ratio + + d_sw.ratio + + d_cu.ratio + + d_au.ratio + + d_ai.ratio + ) + + if mean_mess_ratio >= maximum_threshold: + break + else: + # Flush last word buffer in SuperWeirdWordPlugin via trailing newline. + nl_info = ascii_info[10] # "\n" + d_sw_feed("\n", nl_info) + if not is_pure_ascii: + d_au_feed("\n", nl_info) + d_up_feed("\n", nl_info) + + mean_mess_ratio = ( + d_sp.ratio + + d_ta.ratio + + d_up.ratio + + d_sda.ratio + + d_sr.ratio + + d_sw.ratio + + d_cu.ratio + + d_au.ratio + + d_ai.ratio + ) + + if debug: # Defensive: + logger = getLogger("charset_normalizer") + + logger.log( + TRACE, + "Mess-detector extended-analysis start. " + f"intermediary_mean_mess_ratio_calc={step} mean_mess_ratio={mean_mess_ratio} " + f"maximum_threshold={maximum_threshold}", + ) + + if seq_len > 16: + logger.log(TRACE, f"Starting with: {decoded_sequence[:16]}") + logger.log(TRACE, f"Ending with: {decoded_sequence[-16::]}") + + for dt in [d_sp, d_ta, d_up, d_sda, d_sr, d_sw, d_cu, d_au, d_ai]: + logger.log(TRACE, f"{dt.__class__}: {dt.ratio}") + + return round(mean_mess_ratio, 3) diff --git a/venv/lib/python3.11/site-packages/charset_normalizer/models.py b/venv/lib/python3.11/site-packages/charset_normalizer/models.py new file mode 100644 index 0000000000000000000000000000000000000000..446ac97452c7c730a44ebeaf1894b41f0d8bc29c --- /dev/null +++ b/venv/lib/python3.11/site-packages/charset_normalizer/models.py @@ -0,0 +1,370 @@ +from __future__ import annotations + +from encodings.aliases import aliases +from re import sub +from typing import Any, Iterator, List, Tuple + +from .constant import RE_POSSIBLE_ENCODING_INDICATION, TOO_BIG_SEQUENCE +from .utils import iana_name, is_multi_byte_encoding, unicode_range + + +class CharsetMatch: + def __init__( + self, + payload: bytes | bytearray, + guessed_encoding: str, + mean_mess_ratio: float, + has_sig_or_bom: bool, + languages: CoherenceMatches, + decoded_payload: str | None = None, + preemptive_declaration: str | None = None, + ): + self._payload: bytes | bytearray = payload + + self._encoding: str = guessed_encoding + self._mean_mess_ratio: float = mean_mess_ratio + self._languages: CoherenceMatches = languages + self._has_sig_or_bom: bool = has_sig_or_bom + self._unicode_ranges: list[str] | None = None + + self._leaves: list[CharsetMatch] = [] + self._mean_coherence_ratio: float = 0.0 + + self._output_payload: bytes | None = None + self._output_encoding: str | None = None + + self._string: str | None = decoded_payload + + self._preemptive_declaration: str | None = preemptive_declaration + + def __eq__(self, other: object) -> bool: + if not isinstance(other, CharsetMatch): + if isinstance(other, str): + return iana_name(other) == self.encoding + return False + return self.encoding == other.encoding and self.fingerprint == other.fingerprint + + def __lt__(self, other: object) -> bool: + """ + Implemented to make sorted available upon CharsetMatches items. + """ + if not isinstance(other, CharsetMatch): + raise ValueError + + chaos_difference: float = abs(self.chaos - other.chaos) + coherence_difference: float = abs(self.coherence - other.coherence) + + # Below 0.5% difference --> Use Coherence + if chaos_difference < 0.005 and coherence_difference > 0.02: + return self.coherence > other.coherence + elif chaos_difference < 0.005 and coherence_difference <= 0.02: + # When having a difficult decision, use the result that decoded as many multi-byte as possible. + # preserve RAM usage! + if len(self._payload) >= TOO_BIG_SEQUENCE: + return self.chaos < other.chaos + return self.multi_byte_usage > other.multi_byte_usage + + return self.chaos < other.chaos + + @property + def multi_byte_usage(self) -> float: + return 1.0 - (len(str(self)) / len(self.raw)) + + def __str__(self) -> str: + # Lazy Str Loading + if self._string is None: + self._string = str(self._payload, self._encoding, "strict") + # UTF-7 BOM is encoded in modified Base64 whose byte boundary + # can overlap with the next character, so raw-byte stripping + # is unreliable. Strip the decoded BOM character instead. + if ( + self._has_sig_or_bom + and self._encoding == "utf_7" + and self._string + and self._string[0] == "\ufeff" + ): + self._string = self._string[1:] + return self._string + + def __repr__(self) -> str: + return f"" + + def add_submatch(self, other: CharsetMatch) -> None: + if not isinstance(other, CharsetMatch) or other == self: + raise ValueError( + "Unable to add instance <{}> as a submatch of a CharsetMatch".format( + other.__class__ + ) + ) + + other._string = None # Unload RAM usage; dirty trick. + self._leaves.append(other) + + @property + def encoding(self) -> str: + return self._encoding + + @property + def encoding_aliases(self) -> list[str]: + """ + Encoding name are known by many name, using this could help when searching for IBM855 when it's listed as CP855. + """ + also_known_as: list[str] = [] + for u, p in aliases.items(): + if self.encoding == u: + also_known_as.append(p) + elif self.encoding == p: + also_known_as.append(u) + return also_known_as + + @property + def bom(self) -> bool: + return self._has_sig_or_bom + + @property + def byte_order_mark(self) -> bool: + return self._has_sig_or_bom + + @property + def languages(self) -> list[str]: + """ + Return the complete list of possible languages found in decoded sequence. + Usually not really useful. Returned list may be empty even if 'language' property return something != 'Unknown'. + """ + return [e[0] for e in self._languages] + + @property + def language(self) -> str: + """ + Most probable language found in decoded sequence. If none were detected or inferred, the property will return + "Unknown". + """ + if not self._languages: + # Trying to infer the language based on the given encoding + # Its either English or we should not pronounce ourselves in certain cases. + if "ascii" in self.could_be_from_charset: + return "English" + + # doing it there to avoid circular import + from charset_normalizer.cd import encoding_languages, mb_encoding_languages + + languages = ( + mb_encoding_languages(self.encoding) + if is_multi_byte_encoding(self.encoding) + else encoding_languages(self.encoding) + ) + + if len(languages) == 0 or "Latin Based" in languages: + return "Unknown" + + return languages[0] + + return self._languages[0][0] + + @property + def chaos(self) -> float: + return self._mean_mess_ratio + + @property + def coherence(self) -> float: + if not self._languages: + return 0.0 + return self._languages[0][1] + + @property + def percent_chaos(self) -> float: + return round(self.chaos * 100, ndigits=3) + + @property + def percent_coherence(self) -> float: + return round(self.coherence * 100, ndigits=3) + + @property + def raw(self) -> bytes | bytearray: + """ + Original untouched bytes. + """ + return self._payload + + @property + def submatch(self) -> list[CharsetMatch]: + return self._leaves + + @property + def has_submatch(self) -> bool: + return len(self._leaves) > 0 + + @property + def alphabets(self) -> list[str]: + if self._unicode_ranges is not None: + return self._unicode_ranges + # list detected ranges + detected_ranges: list[str | None] = [unicode_range(char) for char in str(self)] + # filter and sort + self._unicode_ranges = sorted(list({r for r in detected_ranges if r})) + return self._unicode_ranges + + @property + def could_be_from_charset(self) -> list[str]: + """ + The complete list of encoding that output the exact SAME str result and therefore could be the originating + encoding. + This list does include the encoding available in property 'encoding'. + """ + return [self._encoding] + [m.encoding for m in self._leaves] + + def output(self, encoding: str = "utf_8") -> bytes: + """ + Method to get re-encoded bytes payload using given target encoding. Default to UTF-8. + Any errors will be simply ignored by the encoder NOT replaced. + """ + if self._output_encoding is None or self._output_encoding != encoding: + self._output_encoding = encoding + decoded_string = str(self) + if ( + self._preemptive_declaration is not None + and self._preemptive_declaration.lower() + not in ["utf-8", "utf8", "utf_8"] + ): + patched_header = sub( + RE_POSSIBLE_ENCODING_INDICATION, + lambda m: m.string[m.span()[0] : m.span()[1]].replace( + m.groups()[0], + iana_name(self._output_encoding).replace("_", "-"), # type: ignore[arg-type] + ), + decoded_string[:8192], + count=1, + ) + + decoded_string = patched_header + decoded_string[8192:] + + self._output_payload = decoded_string.encode(encoding, "replace") + + return self._output_payload # type: ignore + + @property + def fingerprint(self) -> int: + """ + Retrieve a hash fingerprint of the decoded payload, used for deduplication. + """ + return hash(str(self)) + + +class CharsetMatches: + """ + Container with every CharsetMatch items ordered by default from most probable to the less one. + Act like a list(iterable) but does not implements all related methods. + """ + + def __init__(self, results: list[CharsetMatch] | None = None): + self._results: list[CharsetMatch] = sorted(results) if results else [] + + def __iter__(self) -> Iterator[CharsetMatch]: + yield from self._results + + def __getitem__(self, item: int | str) -> CharsetMatch: + """ + Retrieve a single item either by its position or encoding name (alias may be used here). + Raise KeyError upon invalid index or encoding not present in results. + """ + if isinstance(item, int): + return self._results[item] + if isinstance(item, str): + item = iana_name(item, False) + for result in self._results: + if item in result.could_be_from_charset: + return result + raise KeyError + + def __len__(self) -> int: + return len(self._results) + + def __bool__(self) -> bool: + return len(self._results) > 0 + + def append(self, item: CharsetMatch) -> None: + """ + Insert a single match. Will be inserted accordingly to preserve sort. + Can be inserted as a submatch. + """ + if not isinstance(item, CharsetMatch): + raise ValueError( + "Cannot append instance '{}' to CharsetMatches".format( + str(item.__class__) + ) + ) + # We should disable the submatch factoring when the input file is too heavy (conserve RAM usage) + if len(item.raw) < TOO_BIG_SEQUENCE: + for match in self._results: + if match.fingerprint == item.fingerprint and match.chaos == item.chaos: + match.add_submatch(item) + return + self._results.append(item) + self._results = sorted(self._results) + + def best(self) -> CharsetMatch | None: + """ + Simply return the first match. Strict equivalent to matches[0]. + """ + if not self._results: + return None + return self._results[0] + + def first(self) -> CharsetMatch | None: + """ + Redundant method, call the method best(). Kept for BC reasons. + """ + return self.best() + + +CoherenceMatch = Tuple[str, float] +CoherenceMatches = List[CoherenceMatch] + + +class CliDetectionResult: + def __init__( + self, + path: str, + encoding: str | None, + encoding_aliases: list[str], + alternative_encodings: list[str], + language: str, + alphabets: list[str], + has_sig_or_bom: bool, + chaos: float, + coherence: float, + unicode_path: str | None, + is_preferred: bool, + ): + self.path: str = path + self.unicode_path: str | None = unicode_path + self.encoding: str | None = encoding + self.encoding_aliases: list[str] = encoding_aliases + self.alternative_encodings: list[str] = alternative_encodings + self.language: str = language + self.alphabets: list[str] = alphabets + self.has_sig_or_bom: bool = has_sig_or_bom + self.chaos: float = chaos + self.coherence: float = coherence + self.is_preferred: bool = is_preferred + + @property + def __dict__(self) -> dict[str, Any]: # type: ignore + return { + "path": self.path, + "encoding": self.encoding, + "encoding_aliases": self.encoding_aliases, + "alternative_encodings": self.alternative_encodings, + "language": self.language, + "alphabets": self.alphabets, + "has_sig_or_bom": self.has_sig_or_bom, + "chaos": self.chaos, + "coherence": self.coherence, + "unicode_path": self.unicode_path, + "is_preferred": self.is_preferred, + } + + def to_json(self) -> str: + from json import dumps + + return dumps(self.__dict__, ensure_ascii=True, indent=4) diff --git a/venv/lib/python3.11/site-packages/charset_normalizer/py.typed b/venv/lib/python3.11/site-packages/charset_normalizer/py.typed new file mode 100644 index 0000000000000000000000000000000000000000..e69de29bb2d1d6434b8b29ae775ad8c2e48c5391 diff --git a/venv/lib/python3.11/site-packages/charset_normalizer/utils.py b/venv/lib/python3.11/site-packages/charset_normalizer/utils.py new file mode 100644 index 0000000000000000000000000000000000000000..074b0e9355e49c6ef5002e223b3ee87c63c6b7b2 --- /dev/null +++ b/venv/lib/python3.11/site-packages/charset_normalizer/utils.py @@ -0,0 +1,455 @@ +from __future__ import annotations + +import importlib +import logging +import unicodedata +from bisect import bisect_right +from codecs import IncrementalDecoder +from encodings.aliases import aliases +from functools import lru_cache +from re import findall +from typing import Generator + +from .constant import ( + ENCODING_MARKS, + IANA_SUPPORTED_SIMILAR, + RE_POSSIBLE_ENCODING_INDICATION, + UNICODE_RANGES_COMBINED, + _SECONDARY_RANGE_NAMES, + UTF8_MAXIMAL_ALLOCATION, + COMMON_CJK_CHARACTERS, + _LATIN, + _CJK, + _HANGUL, + _KATAKANA, + _HIRAGANA, + _THAI, + _ARABIC, + _ARABIC_ISOLATED_FORM, + _ACCENT_KEYWORDS, + _ACCENTUATED, +) + + +def _character_flags(character: str) -> int: + """Compute all name-based classification flags with a single unicodedata.name() call.""" + try: + desc: str = unicodedata.name(character) + except ValueError: + return 0 + + flags: int = 0 + + if "LATIN" in desc: + flags |= _LATIN + if "CJK" in desc: + flags |= _CJK + if "HANGUL" in desc: + flags |= _HANGUL + if "KATAKANA" in desc: + flags |= _KATAKANA + if "HIRAGANA" in desc: + flags |= _HIRAGANA + if "THAI" in desc: + flags |= _THAI + if "ARABIC" in desc: + flags |= _ARABIC + if "ISOLATED FORM" in desc: + flags |= _ARABIC_ISOLATED_FORM + + for kw in _ACCENT_KEYWORDS: + if kw in desc: + flags |= _ACCENTUATED + break + + return flags + + +def is_accentuated(character: str) -> bool: + return bool(_character_flags(character) & _ACCENTUATED) + + +@lru_cache(maxsize=UTF8_MAXIMAL_ALLOCATION) +def remove_accent(character: str) -> str: + decomposed: str = unicodedata.decomposition(character) + if not decomposed: + return character + + codes: list[str] = decomposed.split(" ") + + return chr(int(codes[0], 16)) + + +# Pre-built sorted lookup table for O(log n) binary search in unicode_range(). +# Each entry is (range_start, range_end_exclusive, range_name). +_UNICODE_RANGES_SORTED: list[tuple[int, int, str]] = sorted( + (ord_range.start, ord_range.stop, name) + for name, ord_range in UNICODE_RANGES_COMBINED.items() +) +_UNICODE_RANGE_STARTS: list[int] = [e[0] for e in _UNICODE_RANGES_SORTED] + + +def unicode_range(character: str) -> str | None: + """ + Retrieve the Unicode range official name from a single character. + """ + character_ord: int = ord(character) + + # Binary search: find the rightmost range whose start <= character_ord + idx = bisect_right(_UNICODE_RANGE_STARTS, character_ord) - 1 + if idx >= 0: + start, stop, name = _UNICODE_RANGES_SORTED[idx] + if character_ord < stop: + return name + + return None + + +def is_latin(character: str) -> bool: + return bool(_character_flags(character) & _LATIN) + + +def is_punctuation(character: str) -> bool: + character_category: str = unicodedata.category(character) + + if "P" in character_category: + return True + + character_range: str | None = unicode_range(character) + + if character_range is None: + return False + + return "Punctuation" in character_range + + +def is_symbol(character: str) -> bool: + character_category: str = unicodedata.category(character) + + if "S" in character_category or "N" in character_category: + return True + + character_range: str | None = unicode_range(character) + + if character_range is None: + return False + + return "Forms" in character_range and character_category != "Lo" + + +def is_emoticon(character: str) -> bool: + character_range: str | None = unicode_range(character) + + if character_range is None: + return False + + return "Emoticons" in character_range or "Pictographs" in character_range + + +def is_separator(character: str) -> bool: + if character.isspace() or character in {"|", "+", "<", ">"}: + return True + + character_category: str = unicodedata.category(character) + + return "Z" in character_category or character_category in {"Po", "Pd", "Pc"} + + +@lru_cache(maxsize=UTF8_MAXIMAL_ALLOCATION) +def is_case_variable(character: str) -> bool: + return character.islower() != character.isupper() + + +@lru_cache(maxsize=UTF8_MAXIMAL_ALLOCATION) +def is_cjk(character: str) -> bool: + return bool(_character_flags(character) & _CJK) + + +@lru_cache(maxsize=UTF8_MAXIMAL_ALLOCATION) +def is_hiragana(character: str) -> bool: + return bool(_character_flags(character) & _HIRAGANA) + + +@lru_cache(maxsize=UTF8_MAXIMAL_ALLOCATION) +def is_katakana(character: str) -> bool: + return bool(_character_flags(character) & _KATAKANA) + + +@lru_cache(maxsize=UTF8_MAXIMAL_ALLOCATION) +def is_hangul(character: str) -> bool: + return bool(_character_flags(character) & _HANGUL) + + +@lru_cache(maxsize=UTF8_MAXIMAL_ALLOCATION) +def is_thai(character: str) -> bool: + return bool(_character_flags(character) & _THAI) + + +@lru_cache(maxsize=UTF8_MAXIMAL_ALLOCATION) +def is_arabic(character: str) -> bool: + return bool(_character_flags(character) & _ARABIC) + + +@lru_cache(maxsize=UTF8_MAXIMAL_ALLOCATION) +def is_arabic_isolated_form(character: str) -> bool: + return bool(_character_flags(character) & _ARABIC_ISOLATED_FORM) + + +@lru_cache(maxsize=UTF8_MAXIMAL_ALLOCATION) +def is_cjk_uncommon(character: str) -> bool: + return character not in COMMON_CJK_CHARACTERS + + +def is_unicode_range_secondary(range_name: str) -> bool: + return range_name in _SECONDARY_RANGE_NAMES + + +@lru_cache(maxsize=UTF8_MAXIMAL_ALLOCATION) +def is_unprintable(character: str) -> bool: + return ( + not character.isspace() # includes \n \t \r \v + and not character.isprintable() + and character != "\x1a" # Why? Its the ASCII substitute character. + and character != "\ufeff" # bug discovered in Python, + # Zero Width No-Break Space located in Arabic Presentation Forms-B, Unicode 1.1 not acknowledged as space. + ) + + +def any_specified_encoding( + sequence: bytes | bytearray, search_zone: int = 8192 +) -> str | None: + """ + Extract using ASCII-only decoder any specified encoding in the first n-bytes. + """ + if not isinstance(sequence, (bytes, bytearray)): + raise TypeError + + seq_len: int = len(sequence) + + decoded_zone: str = sequence[: min(seq_len, search_zone)].decode( + "ascii", errors="ignore" + ) + + # Cheap literal pre-filter. + lowered_zone: str = decoded_zone.lower() + if "coding" not in lowered_zone and "charset" not in lowered_zone: + return None + + results: list[str] = findall( + RE_POSSIBLE_ENCODING_INDICATION, + decoded_zone, + ) + + if len(results) == 0: + return None + + for specified_encoding in results: + specified_encoding = specified_encoding.lower().replace("-", "_") + + encoding_alias: str + encoding_iana: str + + for encoding_alias, encoding_iana in aliases.items(): + if encoding_alias == specified_encoding: + return encoding_iana + if encoding_iana == specified_encoding: + return encoding_iana + + return None + + +@lru_cache(maxsize=128) +def is_multi_byte_encoding(name: str) -> bool: + """ + Verify is a specific encoding is a multi byte one based on it IANA name + """ + if name in { + "utf_8", + "utf_8_sig", + "utf_16", + "utf_16_be", + "utf_16_le", + "utf_32", + "utf_32_le", + "utf_32_be", + "utf_7", + }: + return True + + # Besides the Unicode family above, every multibyte codec shipped with + # Python is implemented by _multibytecodec through exactly one of the six + # cjkcodecs providers below. Probing those providers directly (getcodec) + # classifies a name without importing its "encodings." module: + # classifying the whole IANA_SUPPORTED list would otherwise import many + # modules and dominate "import charset_normalizer" wall time. + # see https://github.com/jawah/charset_normalizer/issues/742 + for provider in ( + "_codecs_cn", + "_codecs_hk", + "_codecs_iso2022", + "_codecs_jp", + "_codecs_kr", + "_codecs_tw", + ): + try: + importlib.import_module(provider).getcodec(name) # type: ignore[attr-defined] + except (ImportError, AttributeError, LookupError): # Defensive: edge cases + continue + return True + + return False + + +def identify_sig_or_bom(sequence: bytes | bytearray) -> tuple[str | None, bytes]: + """ + Identify and extract SIG/BOM in given sequence. + """ + + for iana_encoding in ENCODING_MARKS: + marks: bytes | list[bytes] = ENCODING_MARKS[iana_encoding] + + if isinstance(marks, bytes): + marks = [marks] + + for mark in marks: + if sequence.startswith(mark): + return iana_encoding, mark + + return None, b"" + + +def should_strip_sig_or_bom(iana_encoding: str) -> bool: + return iana_encoding not in {"utf_16", "utf_32"} + + +def iana_name(cp_name: str, strict: bool = True) -> str: + """Returns the Python normalized encoding name (Not the IANA official name).""" + cp_name = cp_name.lower().replace("-", "_") + + encoding_alias: str + encoding_iana: str + + for encoding_alias, encoding_iana in aliases.items(): + if cp_name in [encoding_alias, encoding_iana]: + return encoding_iana + + if strict: + raise ValueError(f"Unable to retrieve IANA for '{cp_name}'") + + return cp_name + + +def cp_similarity(iana_name_a: str, iana_name_b: str) -> float: + if is_multi_byte_encoding(iana_name_a) or is_multi_byte_encoding(iana_name_b): + return 0.0 + + decoder_a = importlib.import_module(f"encodings.{iana_name_a}").IncrementalDecoder + decoder_b = importlib.import_module(f"encodings.{iana_name_b}").IncrementalDecoder + + id_a: IncrementalDecoder = decoder_a(errors="ignore") + id_b: IncrementalDecoder = decoder_b(errors="ignore") + + character_match_count: int = 0 + + for i in range(256): + to_be_decoded: bytes = bytes([i]) + if id_a.decode(to_be_decoded) == id_b.decode(to_be_decoded): + character_match_count += 1 + + return character_match_count / 256 + + +def is_cp_similar(iana_name_a: str, iana_name_b: str) -> bool: + """ + Determine if two code page are at least 80% similar. IANA_SUPPORTED_SIMILAR dict was generated using + the function cp_similarity. + """ + return ( + iana_name_a in IANA_SUPPORTED_SIMILAR + and iana_name_b in IANA_SUPPORTED_SIMILAR[iana_name_a] + ) + + +def set_logging_handler( + name: str = "charset_normalizer", + level: int = logging.INFO, + format_string: str = "%(asctime)s | %(levelname)s | %(message)s", +) -> None: + logger = logging.getLogger(name) + logger.setLevel(level) + + handler = logging.StreamHandler() + handler.setFormatter(logging.Formatter(format_string)) + logger.addHandler(handler) + + +def cut_sequence_chunks( + sequences: bytes | bytearray, + encoding_iana: str, + offsets: range, + chunk_size: int, + bom_or_sig_available: bool, + strip_sig_or_bom: bool, + sig_payload: bytes, + is_multi_byte_decoder: bool, + decoded_payload: str | None = None, + deferred_decoding: bool = False, +) -> Generator[str, None, None]: + if decoded_payload and not is_multi_byte_decoder: + for i in offsets: + chunk = decoded_payload[i : i + chunk_size] + if not chunk: + break + yield chunk + elif deferred_decoding: + # Deferred single-byte probing: the whole payload is not decoded + # yet. Single-byte codecs are stateless (1 byte == 1 char), hence + # decode(base)[i:j] == decode(base[i:j]): slicing the raw bytes + # yields exactly the chunks the branch above would have produced, + # short trailing chunks included, and raises UnicodeDecodeError on + # invalid bytes just like the whole-payload decode would. + base_bytes = ( + sequences if not strip_sig_or_bom else sequences[len(sig_payload) :] + ) + for i in offsets: + cut_sequence = base_bytes[i : i + chunk_size] + if not cut_sequence: + break + yield str(cut_sequence, encoding_iana) + else: + for i in offsets: + chunk_end = i + chunk_size + if chunk_end > len(sequences) + 8: + continue + + cut_sequence = sequences[i : i + chunk_size] + + if bom_or_sig_available and not strip_sig_or_bom: + cut_sequence = sig_payload + cut_sequence + + chunk = cut_sequence.decode( + encoding_iana, + errors="ignore" if is_multi_byte_decoder else "strict", + ) + + # multi-byte bad cutting detector and adjustment + # not the cleanest way to perform that fix but clever enough for now. + if is_multi_byte_decoder and i > 0: + chunk_partial_size_chk: int = min(chunk_size, 16) + + if ( + decoded_payload + and chunk[:chunk_partial_size_chk] not in decoded_payload + ): + for j in range(i, i - 4, -1): + cut_sequence = sequences[j:chunk_end] + + if bom_or_sig_available and not strip_sig_or_bom: + cut_sequence = sig_payload + cut_sequence + + chunk = cut_sequence.decode(encoding_iana, errors="ignore") + + if chunk[:chunk_partial_size_chk] in decoded_payload: + break + + yield chunk diff --git a/venv/lib/python3.11/site-packages/charset_normalizer/version.py b/venv/lib/python3.11/site-packages/charset_normalizer/version.py new file mode 100644 index 0000000000000000000000000000000000000000..76c73a0b570ab59937bcd68e730dff4dee455b26 --- /dev/null +++ b/venv/lib/python3.11/site-packages/charset_normalizer/version.py @@ -0,0 +1,8 @@ +""" +Expose version +""" + +from __future__ import annotations + +__version__ = "3.4.9" +VERSION = __version__.split(".") diff --git a/venv/lib/python3.11/site-packages/click-8.4.2.dist-info/INSTALLER b/venv/lib/python3.11/site-packages/click-8.4.2.dist-info/INSTALLER new file mode 100644 index 0000000000000000000000000000000000000000..a1b589e38a32041e49332e5e81c2d363dc418d68 --- /dev/null +++ b/venv/lib/python3.11/site-packages/click-8.4.2.dist-info/INSTALLER @@ -0,0 +1 @@ +pip diff --git a/venv/lib/python3.11/site-packages/click-8.4.2.dist-info/METADATA b/venv/lib/python3.11/site-packages/click-8.4.2.dist-info/METADATA new file mode 100644 index 0000000000000000000000000000000000000000..1fb06f0478b071761108832c2c0099cc5967ee6f --- /dev/null +++ b/venv/lib/python3.11/site-packages/click-8.4.2.dist-info/METADATA @@ -0,0 +1,84 @@ +Metadata-Version: 2.4 +Name: click +Version: 8.4.2 +Summary: Composable command line interface toolkit +Maintainer-email: Pallets +Requires-Python: >=3.10 +Description-Content-Type: text/markdown +License-Expression: BSD-3-Clause +Classifier: Development Status :: 5 - Production/Stable +Classifier: Intended Audience :: Developers +Classifier: Operating System :: OS Independent +Classifier: Programming Language :: Python +Classifier: Typing :: Typed +License-File: LICENSE.txt +Requires-Dist: colorama; platform_system == 'Windows' +Project-URL: Changes, https://click.palletsprojects.com/page/changes/ +Project-URL: Chat, https://discord.gg/pallets +Project-URL: Documentation, https://click.palletsprojects.com/ +Project-URL: Donate, https://palletsprojects.com/donate +Project-URL: Source, https://github.com/pallets/click/ + +
+ +# Click + +Click is a Python package for creating beautiful command line interfaces +in a composable way with as little code as necessary. It's the "Command +Line Interface Creation Kit". It's highly configurable but comes with +sensible defaults out of the box. + +It aims to make the process of writing command line tools quick and fun +while also preventing any frustration caused by the inability to +implement an intended CLI API. + +Click in three points: + +- Arbitrary nesting of commands +- Automatic help page generation +- Supports lazy loading of subcommands at runtime + + +## A Simple Example + +```python +import click + +@click.command() +@click.option("--count", default=1, help="Number of greetings.") +@click.option("--name", prompt="Your name", help="The person to greet.") +def hello(count, name): + """Simple program that greets NAME for a total of COUNT times.""" + for _ in range(count): + click.echo(f"Hello, {name}!") + +if __name__ == '__main__': + hello() +``` + +``` +$ python hello.py --count=3 +Your name: Click +Hello, Click! +Hello, Click! +Hello, Click! +``` + + +## Donate + +The Pallets organization develops and supports Click and other popular +packages. In order to grow the community of contributors and users, and +allow the maintainers to devote more time to the projects, [please +donate today][]. + +[please donate today]: https://palletsprojects.com/donate + +## Contributing + +See our [detailed contributing documentation][contrib] for many ways to +contribute, including reporting issues, requesting features, asking or answering +questions, and making PRs. + +[contrib]: https://palletsprojects.com/contributing/ + diff --git a/venv/lib/python3.11/site-packages/click-8.4.2.dist-info/RECORD b/venv/lib/python3.11/site-packages/click-8.4.2.dist-info/RECORD new file mode 100644 index 0000000000000000000000000000000000000000..63fd9fd8782d925398c006423e2068dafc8cbed1 --- /dev/null +++ b/venv/lib/python3.11/site-packages/click-8.4.2.dist-info/RECORD @@ -0,0 +1,40 @@ +click-8.4.2.dist-info/INSTALLER,sha256=zuuue4knoyJ-UwPPXg8fezS7VCrXJQrAP7zeNuwvFQg,4 +click-8.4.2.dist-info/METADATA,sha256=GUyd2B1Wf5CB8CbH5AEGD7r6e8FHyOClizZotApkwDE,2621 +click-8.4.2.dist-info/RECORD,, +click-8.4.2.dist-info/WHEEL,sha256=G2gURzTEtmeR8nrdXUJfNiB3VYVxigPQ-bEQujpNiNs,82 +click-8.4.2.dist-info/licenses/LICENSE.txt,sha256=morRBqOU6FO_4h9C9OctWSgZoigF2ZG18ydQKSkrZY0,1475 +click/__init__.py,sha256=FId2fXCSJB3yeWD-e2uON-mBhFa2Yc9MvXGmHu8OXG0,4634 +click/__pycache__/__init__.cpython-311.pyc,, +click/__pycache__/_compat.cpython-311.pyc,, +click/__pycache__/_termui_impl.cpython-311.pyc,, +click/__pycache__/_textwrap.cpython-311.pyc,, +click/__pycache__/_utils.cpython-311.pyc,, +click/__pycache__/_winconsole.cpython-311.pyc,, +click/__pycache__/core.cpython-311.pyc,, +click/__pycache__/decorators.cpython-311.pyc,, +click/__pycache__/exceptions.cpython-311.pyc,, +click/__pycache__/formatting.cpython-311.pyc,, +click/__pycache__/globals.cpython-311.pyc,, +click/__pycache__/parser.cpython-311.pyc,, +click/__pycache__/shell_completion.cpython-311.pyc,, +click/__pycache__/termui.cpython-311.pyc,, +click/__pycache__/testing.cpython-311.pyc,, +click/__pycache__/types.cpython-311.pyc,, +click/__pycache__/utils.cpython-311.pyc,, +click/_compat.py,sha256=gPNtXQ9q-G6Qil2b-MC5CsHsGGcQ4u6YSWy9_tlmuhc,18879 +click/_termui_impl.py,sha256=CGdg24AeXijeGSzbu0Z7x3c4aaahVFjVBpEbbjhQ5K4,31730 +click/_textwrap.py,sha256=7Z0N7Vmn-66TNSTUwp6OXJbcUXRmYET9h9c2ucD8oQQ,6270 +click/_utils.py,sha256=eCZCtwJtsYD5QYkkNWJ8MY_8ABIjy8MczgMMyVY32rQ,996 +click/_winconsole.py,sha256=KSxfNbMlYRa6GOJuCLgsg2Pb3dVkgJNPqLJPae-Pa10,8543 +click/core.py,sha256=rZz76ihNTFV4Y2sxp3H-m93GxL2acD5Pqs0IobEvmuk,140616 +click/decorators.py,sha256=9e1Ndu4jhGAcP6RGdNPAwAWtuP9hEs4ETp1u3lKmH1o,19709 +click/exceptions.py,sha256=HvSY34G4auj_bYRR8-T8CU8Jwq_1-OcsRU4ezfozeEk,11862 +click/formatting.py,sha256=8SW2KGkvjfz9Q1NbeojMHuZBN0cfnQJDs4mqDP6oXms,10444 +click/globals.py,sha256=gM-Nh6A4M0HB_SgkaF5M4ncGGMDHc_flHXu9_oh4GEU,1923 +click/parser.py,sha256=oJ-fU_3mvxugIuNtHaCATZ56lgEmHRggjJiSqEgYrjA,19052 +click/py.typed,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0 +click/shell_completion.py,sha256=5tGGY5pV3mAZ17xT23OnuKrWqzEyyLVtrJ30npUxjkU,22618 +click/termui.py,sha256=Vn9ehmrQl92z2_6R4bVZOsHUI6j8LrT8u0RzNZUpCvY,33213 +click/testing.py,sha256=S9I-pspAlJH3RvZJWDQoJXb-M0nrAEJzXcUzrVXsT34,26458 +click/types.py,sha256=9G4DB-nBj-omA_XWsYwbQ3H9BkpH82wJj-kxIPScKmA,44788 +click/utils.py,sha256=XwrDxOzU__rnHn-rvJmJcD7ecbypUKMeDJQRjN2F-OA,20942 diff --git a/venv/lib/python3.11/site-packages/click-8.4.2.dist-info/WHEEL b/venv/lib/python3.11/site-packages/click-8.4.2.dist-info/WHEEL new file mode 100644 index 0000000000000000000000000000000000000000..d8b9936dad9ab2513fa6979f411560d3b6b57e37 --- /dev/null +++ b/venv/lib/python3.11/site-packages/click-8.4.2.dist-info/WHEEL @@ -0,0 +1,4 @@ +Wheel-Version: 1.0 +Generator: flit 3.12.0 +Root-Is-Purelib: true +Tag: py3-none-any diff --git a/venv/lib/python3.11/site-packages/click-8.4.2.dist-info/licenses/LICENSE.txt b/venv/lib/python3.11/site-packages/click-8.4.2.dist-info/licenses/LICENSE.txt new file mode 100644 index 0000000000000000000000000000000000000000..d12a849186982399c537c5b9a8fd77bf2edd5eab --- /dev/null +++ b/venv/lib/python3.11/site-packages/click-8.4.2.dist-info/licenses/LICENSE.txt @@ -0,0 +1,28 @@ +Copyright 2014 Pallets + +Redistribution and use in source and binary forms, with or without +modification, are permitted provided that the following conditions are +met: + +1. Redistributions of source code must retain the above copyright + notice, this list of conditions and the following disclaimer. + +2. Redistributions in binary form must reproduce the above copyright + notice, this list of conditions and the following disclaimer in the + documentation and/or other materials provided with the distribution. + +3. Neither the name of the copyright holder nor the names of its + contributors may be used to endorse or promote products derived from + this software without specific prior written permission. + +THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS +"AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT +LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A +PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT +HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, +SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED +TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR +PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF +LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING +NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS +SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. diff --git a/venv/lib/python3.11/site-packages/click/__init__.py b/venv/lib/python3.11/site-packages/click/__init__.py new file mode 100644 index 0000000000000000000000000000000000000000..64be7e0c3c942191ed1e2259b96c6225679ae317 --- /dev/null +++ b/venv/lib/python3.11/site-packages/click/__init__.py @@ -0,0 +1,126 @@ +""" +Click is a simple Python module inspired by the stdlib optparse to make +writing command line scripts fun. Unlike other modules, it's based +around a simple API that does not come with too much magic and is +composable. +""" + +from __future__ import annotations + +from .core import Argument as Argument +from .core import Command as Command +from .core import CommandCollection as CommandCollection +from .core import Context as Context +from .core import Group as Group +from .core import Option as Option +from .core import Parameter as Parameter +from .core import ParameterSource as ParameterSource +from .decorators import argument as argument +from .decorators import command as command +from .decorators import confirmation_option as confirmation_option +from .decorators import group as group +from .decorators import help_option as help_option +from .decorators import make_pass_decorator as make_pass_decorator +from .decorators import option as option +from .decorators import pass_context as pass_context +from .decorators import pass_obj as pass_obj +from .decorators import password_option as password_option +from .decorators import version_option as version_option +from .exceptions import Abort as Abort +from .exceptions import BadArgumentUsage as BadArgumentUsage +from .exceptions import BadOptionUsage as BadOptionUsage +from .exceptions import BadParameter as BadParameter +from .exceptions import ClickException as ClickException +from .exceptions import FileError as FileError +from .exceptions import MissingParameter as MissingParameter +from .exceptions import NoSuchCommand as NoSuchCommand +from .exceptions import NoSuchOption as NoSuchOption +from .exceptions import UsageError as UsageError +from .formatting import HelpFormatter as HelpFormatter +from .formatting import wrap_text as wrap_text +from .globals import get_current_context as get_current_context +from .termui import clear as clear +from .termui import confirm as confirm +from .termui import echo_via_pager as echo_via_pager +from .termui import edit as edit +from .termui import get_pager_file as get_pager_file +from .termui import getchar as getchar +from .termui import launch as launch +from .termui import pause as pause +from .termui import progressbar as progressbar +from .termui import prompt as prompt +from .termui import secho as secho +from .termui import style as style +from .termui import unstyle as unstyle +from .types import BOOL as BOOL +from .types import Choice as Choice +from .types import DateTime as DateTime +from .types import File as File +from .types import FLOAT as FLOAT +from .types import FloatRange as FloatRange +from .types import INT as INT +from .types import IntRange as IntRange +from .types import ParamType as ParamType +from .types import Path as Path +from .types import STRING as STRING +from .types import Tuple as Tuple +from .types import UNPROCESSED as UNPROCESSED +from .types import UUID as UUID +from .utils import echo as echo +from .utils import format_filename as format_filename +from .utils import get_app_dir as get_app_dir +from .utils import get_binary_stream as get_binary_stream +from .utils import get_text_stream as get_text_stream +from .utils import open_file as open_file + + +def __getattr__(name: str) -> object: + import warnings + + if name == "BaseCommand": + from .core import _BaseCommand + + warnings.warn( + "'BaseCommand' is deprecated and will be removed in Click 9.0. Use" + " 'Command' instead.", + DeprecationWarning, + stacklevel=2, + ) + return _BaseCommand + + if name == "MultiCommand": + from .core import _MultiCommand + + warnings.warn( + "'MultiCommand' is deprecated and will be removed in Click 9.0. Use" + " 'Group' instead.", + DeprecationWarning, + stacklevel=2, + ) + return _MultiCommand + + if name == "OptionParser": + from .parser import _OptionParser + + warnings.warn( + "'OptionParser' is deprecated and will be removed in Click 9.0. The" + " old parser is available in 'optparse'.", + DeprecationWarning, + stacklevel=2, + ) + return _OptionParser + + if name == "__version__": + import importlib.metadata + import warnings + + warnings.warn( + "The '__version__' attribute is deprecated and will be removed in" + " Click 9.1. Use feature detection or" + " 'importlib.metadata.version(\"click\")' instead.", + DeprecationWarning, + stacklevel=2, + ) + return importlib.metadata.version("click") + + raise AttributeError(name) diff --git a/venv/lib/python3.11/site-packages/click/_compat.py b/venv/lib/python3.11/site-packages/click/_compat.py new file mode 100644 index 0000000000000000000000000000000000000000..134c4f38934be0a0be78a6d2a3ab100fe60389b2 --- /dev/null +++ b/venv/lib/python3.11/site-packages/click/_compat.py @@ -0,0 +1,626 @@ +from __future__ import annotations + +import codecs +import collections.abc as cabc +import io +import os +import re +import sys +import typing as t +from types import TracebackType +from weakref import WeakKeyDictionary + +CYGWIN = sys.platform.startswith("cygwin") +WIN = sys.platform.startswith("win") +auto_wrap_for_ansi: t.Callable[[t.TextIO], t.TextIO] | None = None +_ansi_re = re.compile(r"\033\[[;?0-9]*[a-zA-Z]") + + +def _make_text_stream( + stream: t.BinaryIO, + encoding: str | None, + errors: str | None, + force_readable: bool = False, + force_writable: bool = False, +) -> t.TextIO: + if encoding is None: + encoding = get_best_encoding(stream) + if errors is None: + errors = "replace" + return _NonClosingTextIOWrapper( + stream, + encoding, + errors, + line_buffering=True, + force_readable=force_readable, + force_writable=force_writable, + ) + + +def is_ascii_encoding(encoding: str) -> bool: + """Checks if a given encoding is ascii.""" + try: + return codecs.lookup(encoding).name == "ascii" + except LookupError: + return False + + +def get_best_encoding(stream: t.IO[t.Any]) -> str: + """Returns the default stream encoding if not found.""" + rv = getattr(stream, "encoding", None) or sys.getdefaultencoding() + if is_ascii_encoding(rv): + return "utf-8" + return rv + + +class _NonClosingTextIOWrapper(io.TextIOWrapper): + def __init__( + self, + stream: t.BinaryIO, + encoding: str | None, + errors: str | None, + force_readable: bool = False, + force_writable: bool = False, + **extra: t.Any, + ) -> None: + self._stream = stream = t.cast( + t.BinaryIO, _FixupStream(stream, force_readable, force_writable) + ) + super().__init__(stream, encoding, errors, **extra) + + def __del__(self) -> None: + try: + self.detach() + except Exception: + pass + + def isatty(self) -> bool: + # https://bitbucket.org/pypy/pypy/issue/1803 + return self._stream.isatty() + + +class _FixupStream: + """The new io interface needs more from streams than streams + traditionally implement. As such, this fix-up code is necessary in + some circumstances. + + The forcing of readable and writable flags are there because some tools + put badly patched objects on sys (one such offender are certain version + of jupyter notebook). + """ + + def __init__( + self, + stream: t.BinaryIO, + force_readable: bool = False, + force_writable: bool = False, + ): + self._stream = stream + self._force_readable = force_readable + self._force_writable = force_writable + + def __getattr__(self, name: str) -> t.Any: + return getattr(self._stream, name) + + def read1(self, size: int) -> bytes: + f = getattr(self._stream, "read1", None) + + if f is not None: + return t.cast(bytes, f(size)) + + return self._stream.read(size) + + def readable(self) -> bool: + if self._force_readable: + return True + x = getattr(self._stream, "readable", None) + if x is not None: + return t.cast(bool, x()) + try: + self._stream.read(0) + except Exception: + return False + return True + + def writable(self) -> bool: + if self._force_writable: + return True + x = getattr(self._stream, "writable", None) + if x is not None: + return t.cast(bool, x()) + try: + self._stream.write(b"") + except Exception: + try: + self._stream.write(b"") + except Exception: + return False + return True + + def seekable(self) -> bool: + x = getattr(self._stream, "seekable", None) + if x is not None: + return t.cast(bool, x()) + try: + self._stream.seek(self._stream.tell()) + except Exception: + return False + return True + + +def _is_binary_reader(stream: t.IO[t.Any], default: bool = False) -> bool: + try: + return isinstance(stream.read(0), bytes) + except Exception: + return default + # This happens in some cases where the stream was already + # closed. In this case, we assume the default. + + +def _is_binary_writer(stream: t.IO[t.Any], default: bool = False) -> bool: + try: + stream.write(b"") + except Exception: + try: + stream.write("") + return False + except Exception: + pass + return default + return True + + +def _find_binary_reader(stream: t.IO[t.Any]) -> t.BinaryIO | None: + # We need to figure out if the given stream is already binary. + # This can happen because the official docs recommend detaching + # the streams to get binary streams. Some code might do this, so + # we need to deal with this case explicitly. + if _is_binary_reader(stream, False): + return t.cast(t.BinaryIO, stream) + + buf = getattr(stream, "buffer", None) + + # Same situation here; this time we assume that the buffer is + # actually binary in case it's closed. + if buf is not None and _is_binary_reader(buf, True): + return t.cast(t.BinaryIO, buf) + + return None + + +def _find_binary_writer(stream: t.IO[t.Any]) -> t.BinaryIO | None: + # We need to figure out if the given stream is already binary. + # This can happen because the official docs recommend detaching + # the streams to get binary streams. Some code might do this, so + # we need to deal with this case explicitly. + if _is_binary_writer(stream, False): + return t.cast(t.BinaryIO, stream) + + buf = getattr(stream, "buffer", None) + + # Same situation here; this time we assume that the buffer is + # actually binary in case it's closed. + if buf is not None and _is_binary_writer(buf, True): + return t.cast(t.BinaryIO, buf) + + return None + + +def _stream_is_misconfigured(stream: t.TextIO) -> bool: + """A stream is misconfigured if its encoding is ASCII.""" + # If the stream does not have an encoding set, we assume it's set + # to ASCII. This appears to happen in certain unittest + # environments. It's not quite clear what the correct behavior is + # but this at least will force Click to recover somehow. + return is_ascii_encoding(getattr(stream, "encoding", None) or "ascii") + + +def _is_compat_stream_attr(stream: t.TextIO, attr: str, value: str | None) -> bool: + """A stream attribute is compatible if it is equal to the + desired value or the desired value is unset and the attribute + has a value. + """ + stream_value = getattr(stream, attr, None) + return stream_value == value or (value is None and stream_value is not None) + + +def _is_compatible_text_stream( + stream: t.TextIO, encoding: str | None, errors: str | None +) -> bool: + """Check if a stream's encoding and errors attributes are + compatible with the desired values. + """ + return _is_compat_stream_attr( + stream, "encoding", encoding + ) and _is_compat_stream_attr(stream, "errors", errors) + + +def _force_correct_text_stream( + text_stream: t.IO[t.Any], + encoding: str | None, + errors: str | None, + is_binary: t.Callable[[t.IO[t.Any], bool], bool], + find_binary: t.Callable[[t.IO[t.Any]], t.BinaryIO | None], + force_readable: bool = False, + force_writable: bool = False, +) -> t.TextIO: + if is_binary(text_stream, False): + binary_reader = t.cast(t.BinaryIO, text_stream) + else: + text_stream = t.cast(t.TextIO, text_stream) + # If the stream looks compatible, and won't default to a + # misconfigured ascii encoding, return it as-is. + if _is_compatible_text_stream(text_stream, encoding, errors) and not ( + encoding is None and _stream_is_misconfigured(text_stream) + ): + return text_stream + + # Otherwise, get the underlying binary reader. + possible_binary_reader = find_binary(text_stream) + + # If that's not possible, silently use the original reader + # and get mojibake instead of exceptions. + if possible_binary_reader is None: + return text_stream + + binary_reader = possible_binary_reader + + # Default errors to replace instead of strict in order to get + # something that works. + if errors is None: + errors = "replace" + + # Wrap the binary stream in a text stream with the correct + # encoding parameters. + return _make_text_stream( + binary_reader, + encoding, + errors, + force_readable=force_readable, + force_writable=force_writable, + ) + + +def _force_correct_text_reader( + text_reader: t.IO[t.Any], + encoding: str | None, + errors: str | None, + force_readable: bool = False, +) -> t.TextIO: + return _force_correct_text_stream( + text_reader, + encoding, + errors, + _is_binary_reader, + _find_binary_reader, + force_readable=force_readable, + ) + + +def _force_correct_text_writer( + text_writer: t.IO[t.Any], + encoding: str | None, + errors: str | None, + force_writable: bool = False, +) -> t.TextIO: + return _force_correct_text_stream( + text_writer, + encoding, + errors, + _is_binary_writer, + _find_binary_writer, + force_writable=force_writable, + ) + + +def get_binary_stdin() -> t.BinaryIO: + reader = _find_binary_reader(sys.stdin) + if reader is None: + raise RuntimeError("Was not able to determine binary stream for sys.stdin.") + return reader + + +def get_binary_stdout() -> t.BinaryIO: + writer = _find_binary_writer(sys.stdout) + if writer is None: + raise RuntimeError("Was not able to determine binary stream for sys.stdout.") + return writer + + +def get_binary_stderr() -> t.BinaryIO: + writer = _find_binary_writer(sys.stderr) + if writer is None: + raise RuntimeError("Was not able to determine binary stream for sys.stderr.") + return writer + + +def get_text_stdin(encoding: str | None = None, errors: str | None = None) -> t.TextIO: + rv = _get_windows_console_stream(sys.stdin, encoding, errors) + if rv is not None: + return rv + return _force_correct_text_reader(sys.stdin, encoding, errors, force_readable=True) + + +def get_text_stdout(encoding: str | None = None, errors: str | None = None) -> t.TextIO: + rv = _get_windows_console_stream(sys.stdout, encoding, errors) + if rv is not None: + return rv + return _force_correct_text_writer(sys.stdout, encoding, errors, force_writable=True) + + +def get_text_stderr(encoding: str | None = None, errors: str | None = None) -> t.TextIO: + rv = _get_windows_console_stream(sys.stderr, encoding, errors) + if rv is not None: + return rv + return _force_correct_text_writer(sys.stderr, encoding, errors, force_writable=True) + + +def _wrap_io_open( + file: str | os.PathLike[str] | int, + mode: str, + encoding: str | None, + errors: str | None, +) -> t.IO[t.Any]: + """Handles not passing ``encoding`` and ``errors`` in binary mode.""" + if "b" in mode: + return open(file, mode) + + return open(file, mode, encoding=encoding, errors=errors) + + +def open_stream( + filename: str | os.PathLike[str], + mode: str = "r", + encoding: str | None = None, + errors: str | None = "strict", + atomic: bool = False, +) -> tuple[t.IO[t.Any], bool]: + binary = "b" in mode + filename = os.fspath(filename) + + # Standard streams first. These are simple because they ignore the + # atomic flag. Use fsdecode to handle Path("-"). + if os.fsdecode(filename) == "-": + if any(m in mode for m in ["w", "a", "x"]): + if binary: + return get_binary_stdout(), False + return get_text_stdout(encoding=encoding, errors=errors), False + if binary: + return get_binary_stdin(), False + return get_text_stdin(encoding=encoding, errors=errors), False + + # Non-atomic writes directly go out through the regular open functions. + if not atomic: + return _wrap_io_open(filename, mode, encoding, errors), True + + # Some usability stuff for atomic writes + if "a" in mode: + raise ValueError( + "Appending to an existing file is not supported, because that" + " would involve an expensive `copy`-operation to a temporary" + " file. Open the file in normal `w`-mode and copy explicitly" + " if that's what you're after." + ) + if "x" in mode: + raise ValueError("Use the `overwrite`-parameter instead.") + if "w" not in mode: + raise ValueError("Atomic writes only make sense with `w`-mode.") + + # Atomic writes are more complicated. They work by opening a file + # as a proxy in the same folder and then using the fdopen + # functionality to wrap it in a Python file. Then we wrap it in an + # atomic file that moves the file over on close. + import errno + import random + + try: + perm: int | None = os.stat(filename).st_mode + except OSError: + perm = None + + flags = os.O_RDWR | os.O_CREAT | os.O_EXCL + + if binary: + flags |= getattr(os, "O_BINARY", 0) + + while True: + tmp_filename = os.path.join( + os.path.dirname(filename), + f".__atomic-write{random.randrange(1 << 32):08x}", + ) + try: + fd = os.open(tmp_filename, flags, 0o666 if perm is None else perm) + break + except OSError as e: + if e.errno == errno.EEXIST or ( + os.name == "nt" + and e.errno == errno.EACCES + and os.path.isdir(e.filename) + and os.access(e.filename, os.W_OK) + ): + continue + raise + + if perm is not None: + os.chmod(tmp_filename, perm) # in case perm includes bits in umask + + f = _wrap_io_open(fd, mode, encoding, errors) + af = _AtomicFile(f, tmp_filename, os.path.realpath(filename)) + return t.cast(t.IO[t.Any], af), True + + +class _AtomicFile: + def __init__(self, f: t.IO[t.Any], tmp_filename: str, real_filename: str) -> None: + self._f = f + self._tmp_filename = tmp_filename + self._real_filename = real_filename + self.closed = False + + @property + def name(self) -> str: + return self._real_filename + + def close(self, delete: bool = False) -> None: + if self.closed: + return + self._f.close() + os.replace(self._tmp_filename, self._real_filename) + self.closed = True + + def __getattr__(self, name: str) -> t.Any: + return getattr(self._f, name) + + def __enter__(self) -> _AtomicFile: + return self + + def __exit__( + self, + exc_type: type[BaseException] | None, + exc_value: BaseException | None, + tb: TracebackType | None, + ) -> None: + self.close(delete=exc_type is not None) + + def __repr__(self) -> str: + return repr(self._f) + + +def strip_ansi(value: str) -> str: + return _ansi_re.sub("", value) + + +def _is_jupyter_kernel_output(stream: t.IO[t.Any]) -> bool: + while isinstance(stream, (_FixupStream, _NonClosingTextIOWrapper)): + stream = stream._stream + + return stream.__class__.__module__.startswith("ipykernel.") + + +def should_strip_ansi( + stream: t.IO[t.Any] | None = None, color: bool | None = None +) -> bool: + if color is None: + if stream is None: + stream = sys.stdin + elif hasattr(stream, "color"): + # ._termui_impl.MaybeStripAnsi handles stripping ansi itself, + # so we don't need to strip it here + return False + return not isatty(stream) and not _is_jupyter_kernel_output(stream) + return not color + + +# On Windows, wrap the output streams with colorama to support ANSI +# color codes. +# NOTE: double check is needed so mypy does not analyze this on Linux +if sys.platform.startswith("win") and WIN: + from ._winconsole import _get_windows_console_stream + + def _get_argv_encoding() -> str: + import locale + + return locale.getpreferredencoding() + + _ansi_stream_wrappers: cabc.MutableMapping[t.TextIO, t.TextIO] = WeakKeyDictionary() + + def auto_wrap_for_ansi(stream: t.TextIO, color: bool | None = None) -> t.TextIO: + """Support ANSI color and style codes on Windows by wrapping a + stream with colorama. + """ + try: + cached = _ansi_stream_wrappers.get(stream) + except Exception: + cached = None + + if cached is not None: + return cached + + import colorama + + strip = should_strip_ansi(stream, color) + ansi_wrapper = colorama.AnsiToWin32(stream, strip=strip) + rv = t.cast(t.TextIO, ansi_wrapper.stream) + _write = rv.write + + def _safe_write(s: str) -> int: + try: + return _write(s) + except BaseException: + ansi_wrapper.reset_all() + raise + + rv.write = _safe_write # type: ignore[method-assign] + + try: + _ansi_stream_wrappers[stream] = rv + except Exception: + pass + + return rv + +else: + + def _get_argv_encoding() -> str: + return getattr(sys.stdin, "encoding", None) or sys.getfilesystemencoding() + + def _get_windows_console_stream( + f: t.TextIO, encoding: str | None, errors: str | None + ) -> t.TextIO | None: + return None + + +def term_len(x: str) -> int: + return len(strip_ansi(x)) + + +def isatty(stream: t.IO[t.Any]) -> bool: + try: + return stream.isatty() + except Exception: + return False + + +def _make_cached_stream_func( + src_func: t.Callable[[], t.TextIO | None], + wrapper_func: t.Callable[[], t.TextIO], +) -> t.Callable[[], t.TextIO | None]: + cache: cabc.MutableMapping[t.TextIO, t.TextIO] = WeakKeyDictionary() + + def func() -> t.TextIO | None: + stream = src_func() + + if stream is None: + return None + + try: + rv = cache.get(stream) + except Exception: + rv = None + if rv is not None: + return rv + rv = wrapper_func() + try: + cache[stream] = rv + except Exception: + pass + return rv + + return func + + +_default_text_stdin = _make_cached_stream_func(lambda: sys.stdin, get_text_stdin) +_default_text_stdout = _make_cached_stream_func(lambda: sys.stdout, get_text_stdout) +_default_text_stderr = _make_cached_stream_func(lambda: sys.stderr, get_text_stderr) + + +binary_streams: cabc.Mapping[str, t.Callable[[], t.BinaryIO]] = { + "stdin": get_binary_stdin, + "stdout": get_binary_stdout, + "stderr": get_binary_stderr, +} + +text_streams: cabc.Mapping[str, t.Callable[[str | None, str | None], t.TextIO]] = { + "stdin": get_text_stdin, + "stdout": get_text_stdout, + "stderr": get_text_stderr, +} diff --git a/venv/lib/python3.11/site-packages/click/_termui_impl.py b/venv/lib/python3.11/site-packages/click/_termui_impl.py new file mode 100644 index 0000000000000000000000000000000000000000..fadae940625f8275fed17833d527c19e2422ef4e --- /dev/null +++ b/venv/lib/python3.11/site-packages/click/_termui_impl.py @@ -0,0 +1,945 @@ +""" +This module contains implementations for the termui module. To keep the +import time of Click down, some infrequently used functionality is +placed in this module and only imported as needed. +""" + +from __future__ import annotations + +import collections.abc as cabc +import contextlib +import io +import math +import os +import shlex +import sys +import time +import typing as t +from gettext import gettext as _ +from io import StringIO +from pathlib import Path +from types import TracebackType + +from ._compat import _default_text_stdout +from ._compat import CYGWIN +from ._compat import get_best_encoding +from ._compat import isatty +from ._compat import strip_ansi +from ._compat import term_len +from ._compat import WIN +from .exceptions import ClickException +from .utils import echo +from .utils import KeepOpenFile + +V = t.TypeVar("V") + + +class _BufferedTextPagerStream(t.Protocol): + buffer: t.BinaryIO + + +def _has_binary_buffer( + stream: t.BinaryIO | t.TextIO, +) -> t.TypeGuard[_BufferedTextPagerStream]: + # TextIO is wider than TextIOWrapper; text-only streams such as StringIO + # are valid TextIO values but do not expose a binary buffer to wrap. + return getattr(stream, "buffer", None) is not None + + +if os.name == "nt": + BEFORE_BAR = "\r" + AFTER_BAR = "\n" +else: + BEFORE_BAR = "\r\033[?25l" + AFTER_BAR = "\033[?25h\n" + + +class ProgressBar(t.Generic[V]): + def __init__( + self, + iterable: cabc.Iterable[V] | None, + length: int | None = None, + fill_char: str = "#", + empty_char: str = " ", + bar_template: str = "%(bar)s", + info_sep: str = " ", + hidden: bool = False, + show_eta: bool = True, + show_percent: bool | None = None, + show_pos: bool = False, + item_show_func: t.Callable[[V | None], str | None] | None = None, + label: str | None = None, + file: t.TextIO | None = None, + color: bool | None = None, + update_min_steps: int = 1, + width: int = 30, + ) -> None: + self.fill_char = fill_char + self.empty_char = empty_char + self.bar_template = bar_template + self.info_sep = info_sep + self.hidden = hidden + self.show_eta = show_eta + self.show_percent = show_percent + self.show_pos = show_pos + self.item_show_func = item_show_func + self.label: str = label or "" + + if file is None: + file = _default_text_stdout() + + # There are no standard streams attached to write to. For example, + # pythonw on Windows. + if file is None: + file = StringIO() + + self.file = file + self.color = color + self.update_min_steps = update_min_steps + self._completed_intervals = 0 + self.width: int = width + self.autowidth: bool = width == 0 + + if length is None: + from operator import length_hint + + length = length_hint(iterable, -1) + + if length == -1: + length = None + if iterable is None: + if length is None: + raise TypeError("iterable or length is required") + iterable = t.cast("cabc.Iterable[V]", range(length)) + self.iter: cabc.Iterable[V] = iter(iterable) + self.length = length + self.pos: int = 0 + self.avg: list[float] = [] + self.last_eta: float + self.start: float + self.start = self.last_eta = time.time() + self.eta_known: bool = False + self.finished: bool = False + self.max_width: int | None = None + self.entered: bool = False + self.current_item: V | None = None + self._is_atty = isatty(self.file) + self._last_line: str | None = None + + def __enter__(self) -> ProgressBar[V]: + self.entered = True + self.render_progress() + return self + + def __exit__( + self, + exc_type: type[BaseException] | None, + exc_value: BaseException | None, + tb: TracebackType | None, + ) -> None: + self.render_finish() + + def __iter__(self) -> cabc.Iterator[V]: + if not self.entered: + raise RuntimeError("You need to use progress bars in a with block.") + self.render_progress() + return self.generator() + + def __next__(self) -> V: + # Iteration is defined in terms of a generator function, + # returned by iter(self); use that to define next(). This works + # because `self.iter` is an iterable consumed by that generator, + # so it is re-entry safe. Calling `next(self.generator())` + # twice works and does "what you want". + return next(iter(self)) + + def render_finish(self) -> None: + if self.hidden or not self._is_atty: + return + self.file.write(AFTER_BAR) + self.file.flush() + + @property + def pct(self) -> float: + if self.finished: + return 1.0 + return min(self.pos / (float(self.length or 1) or 1), 1.0) + + @property + def time_per_iteration(self) -> float: + if not self.avg: + return 0.0 + return sum(self.avg) / float(len(self.avg)) + + @property + def eta(self) -> float: + if self.length is not None and not self.finished: + return self.time_per_iteration * (self.length - self.pos) + return 0.0 + + def format_eta(self) -> str: + if self.eta_known: + t = int(self.eta) + seconds = t % 60 + t //= 60 + minutes = t % 60 + t //= 60 + hours = t % 24 + t //= 24 + if t > 0: + return "{d}{day_label} {h:02}:{m:02}:{s:02}".format( + d=t, + day_label=_("d"), + h=hours, + m=minutes, + s=seconds, + ) + else: + return f"{hours:02}:{minutes:02}:{seconds:02}" + return "" + + def format_pos(self) -> str: + pos = str(self.pos) + if self.length is not None: + pos += f"/{self.length}" + return pos + + def format_pct(self) -> str: + return f"{int(self.pct * 100): 4}%"[1:] + + def format_bar(self) -> str: + if self.length is not None: + bar_length = int(self.pct * self.width) + bar = self.fill_char * bar_length + bar += self.empty_char * (self.width - bar_length) + elif self.finished: + bar = self.fill_char * self.width + else: + chars = list(self.empty_char * (self.width or 1)) + if self.time_per_iteration != 0: + chars[ + int( + (math.cos(self.pos * self.time_per_iteration) / 2.0 + 0.5) + * self.width + ) + ] = self.fill_char + bar = "".join(chars) + return bar + + def format_progress_line(self) -> str: + show_percent = self.show_percent + + info_bits = [] + if self.length is not None and show_percent is None: + show_percent = not self.show_pos + + if self.show_pos: + info_bits.append(self.format_pos()) + if show_percent: + info_bits.append(self.format_pct()) + if self.show_eta and self.eta_known and not self.finished: + info_bits.append(self.format_eta()) + if self.item_show_func is not None: + item_info = self.item_show_func(self.current_item) + if item_info is not None: + info_bits.append(item_info) + + return ( + self.bar_template + % { + "label": self.label, + "bar": self.format_bar(), + "info": self.info_sep.join(info_bits), + } + ).rstrip() + + def render_progress(self) -> None: + if self.hidden: + return + + if not self._is_atty: + # Only output the label once if the output is not a TTY. + if self._last_line != self.label: + self._last_line = self.label + echo(self.label, file=self.file, color=self.color) + return + + buf = [] + # Update width in case the terminal has been resized + if self.autowidth: + import shutil + + old_width = self.width + self.width = 0 + clutter_length = term_len(self.format_progress_line()) + new_width = max(0, shutil.get_terminal_size().columns - clutter_length) + if new_width < old_width and self.max_width is not None: + buf.append(BEFORE_BAR) + buf.append(" " * self.max_width) + self.max_width = new_width + self.width = new_width + + clear_width = self.width + if self.max_width is not None: + clear_width = self.max_width + + buf.append(BEFORE_BAR) + line = self.format_progress_line() + line_len = term_len(line) + if self.max_width is None or self.max_width < line_len: + self.max_width = line_len + + buf.append(line) + buf.append(" " * (clear_width - line_len)) + line = "".join(buf) + # Render the line only if it changed. + + if line != self._last_line: + self._last_line = line + echo(line, file=self.file, color=self.color, nl=False) + self.file.flush() + + def make_step(self, n_steps: int) -> None: + self.pos += n_steps + if self.length is not None and self.pos >= self.length: + self.finished = True + + if (time.time() - self.last_eta) < 1.0: + return + + self.last_eta = time.time() + + # self.avg is a rolling list of length <= 7 of steps where steps are + # defined as time elapsed divided by the total progress through + # self.length. + if self.pos: + step = (time.time() - self.start) / self.pos + else: + step = time.time() - self.start + + self.avg = self.avg[-6:] + [step] + + self.eta_known = self.length is not None + + def update(self, n_steps: int, current_item: V | None = None) -> None: + """Update the progress bar by advancing a specified number of + steps, and optionally set the ``current_item`` for this new + position. + + :param n_steps: Number of steps to advance. + :param current_item: Optional item to set as ``current_item`` + for the updated position. + + .. versionchanged:: 8.0 + Added the ``current_item`` optional parameter. + + .. versionchanged:: 8.0 + Only render when the number of steps meets the + ``update_min_steps`` threshold. + """ + if current_item is not None: + self.current_item = current_item + + self._completed_intervals += n_steps + + if self._completed_intervals >= self.update_min_steps: + self.make_step(self._completed_intervals) + self.render_progress() + self._completed_intervals = 0 + + def finish(self) -> None: + self.eta_known = False + self.current_item = None + self.finished = True + + def generator(self) -> cabc.Iterator[V]: + """Return a generator which yields the items added to the bar + during construction, and updates the progress bar *after* the + yielded block returns. + """ + # WARNING: the iterator interface for `ProgressBar` relies on + # this and only works because this is a simple generator which + # doesn't create or manage additional state. If this function + # changes, the impact should be evaluated both against + # `iter(bar)` and `next(bar)`. `next()` in particular may call + # `self.generator()` repeatedly, and this must remain safe in + # order for that interface to work. + if not self.entered: + raise RuntimeError("You need to use progress bars in a with block.") + + if not self._is_atty: + yield from self.iter + else: + for rv in self.iter: + self.current_item = rv + + # This allows show_item_func to be updated before the + # item is processed. Only trigger at the beginning of + # the update interval. + if self._completed_intervals == 0: + self.render_progress() + + yield rv + self.update(1) + + self.finish() + self.render_progress() + + +class MaybeStripAnsi(io.TextIOWrapper): + def __init__(self, stream: t.IO[bytes], *, color: bool, **kwargs: t.Any): + super().__init__(stream, **kwargs) + self.color = color + + def write(self, text: str) -> int: + if not self.color: + text = strip_ansi(text) + return super().write(text) + + +def _pager_contextmanager( + color: bool | None = None, +) -> t.ContextManager[tuple[t.BinaryIO | t.TextIO, str, bool]]: + """Decide what method to use for paging through text.""" + stdout = _default_text_stdout() + + # There are no standard streams attached to write to. For example, + # pythonw on Windows. + if stdout is None: + stdout = StringIO() + + if not isatty(sys.stdin) or not isatty(stdout): + return _nullpager(stdout, color) + + # Split using POSIX mode (the default) so that quote characters are + # stripped from tokens and quoted Windows paths are preserved. + # Non-POSIX mode retains quotes in tokens, and wrapping tokens + # with shlex.quote re-introduces quoting issues on Windows. + pager_cmd_parts = shlex.split(os.environ.get("PAGER", "")) + if pager_cmd_parts: + if WIN: + return _tempfilepager(pager_cmd_parts, color) + return _pipepager(pager_cmd_parts, color) + + if os.environ.get("TERM") in ("dumb", "emacs"): + return _nullpager(stdout, color) + if WIN or sys.platform.startswith("os2"): + return _tempfilepager(["more"], color) + return _pipepager(["less"], color) + + +@contextlib.contextmanager +def get_pager_file(color: bool | None = None) -> t.Generator[t.TextIO, None, None]: + """Context manager. + + Yields a writable file-like object which can be used as an output pager. + + .. versionadded:: 8.4.0 + + :param color: controls if the pager supports ANSI colors or not. The + default is autodetection. + """ + with _pager_contextmanager(color=color) as (stream, encoding, color): + # Split streams by capabilities rather than the abstract TextIO / + # BinaryIO annotations: buffered text streams can be unwrapped to bytes, + # while other streams are yielded as-is. + wrapper: MaybeStripAnsi | None = None + if _has_binary_buffer(stream): + # Text stream backed by a binary buffer. + wrapper = MaybeStripAnsi(stream.buffer, color=color, encoding=encoding) + stream = wrapper + try: + # Narrow the BinaryIO | TextIO union that _pager_contextmanager + # yields; the caller writes text to the pager. + yield t.cast(t.TextIO, stream) + finally: + try: + stream.flush() + finally: + # Hand the binary buffer back to the pager that produced it + # rather than letting this TextIOWrapper close it on garbage + # collection. The pager owns the buffer's lifecycle: subprocess + # pipes and temp files are closed by their own helpers, while a + # borrowed stdout must stay open for the caller. detach() runs + # even if flush() raised, so the buffer is never closed here. + if wrapper is not None: + wrapper.detach() + + +@contextlib.contextmanager +def _pipepager( + cmd_parts: list[str], color: bool | None = None +) -> t.Iterator[tuple[t.BinaryIO | t.TextIO, str, bool]]: + """Page through text by feeding it to another program. + + Invokes the pager via :class:`subprocess.Popen` with an ``argv`` list + produced by :func:`shlex.split`. The command is resolved to an absolute + path with :func:`shutil.which` as recommended by the + :mod:`subprocess` docs for Windows compatibility. + + Invoking a pager through this might support colors: if piping to + ``less`` and the user hasn't decided on colors, ``LESS=-R`` is set + automatically. + """ + # Split the command into the invoked CLI and its parameters. + if not cmd_parts: + # No usable pager: fall back to stdout through _nullpager so it gets the + # same borrowed-stream handling and the caller's stream is not closed. + stdout = _default_text_stdout() or StringIO() + with _nullpager(stdout, color) as rv: + yield rv + return + + import shutil + + cmd = cmd_parts[0] + cmd_params = cmd_parts[1:] + + cmd_filepath = shutil.which(cmd) + if not cmd_filepath: + # No usable pager: fall back to stdout through _nullpager so it gets the + # same borrowed-stream handling and the caller's stream is not closed. + stdout = _default_text_stdout() or StringIO() + with _nullpager(stdout, color) as rv: + yield rv + return + + # Produces a normalized absolute path string. + # multi-call binaries such as busybox derive their identity from the symlink + # less -> busybox. resolve() causes them to misbehave. (eg. less becomes busybox) + cmd_path = Path(cmd_filepath).absolute() + cmd_name = cmd_path.name + + import subprocess + + # Make a local copy of the environment to not affect the global one. + env = dict(os.environ) + + # If we're piping to less and the user hasn't decided on colors, we enable + # them by default we find the -R flag in the command line arguments. + if color is None and cmd_name == "less": + less_flags = f"{os.environ.get('LESS', '')}{' '.join(cmd_params)}" + if not less_flags: + env["LESS"] = "-R" + color = True + elif "r" in less_flags or "R" in less_flags: + color = True + + if color is None: + color = False + + c = subprocess.Popen( + [str(cmd_path)] + cmd_params, + shell=False, + stdin=subprocess.PIPE, + env=env, + errors="replace", + text=True, + ) + stdin = t.cast(t.BinaryIO, c.stdin) + encoding = get_best_encoding(stdin) + try: + yield stdin, encoding, color + except BrokenPipeError: + # In case the pager exited unexpectedly, ignore the broken pipe error. + pass + except Exception as e: + # In case there is an exception we want to close the pager immediately + # and let the caller handle it. + # Otherwise the pager will keep running, and the user may not notice + # the error message, or worse yet it may leave the terminal in a broken state. + c.terminate() + raise e + finally: + # We must close stdin and wait for the pager to exit before we continue + try: + stdin.close() + # Close implies flush, so it might throw a BrokenPipeError if the pager + # process exited already. + except BrokenPipeError: + pass + + # Less doesn't respect ^C, but catches it for its own UI purposes (aborting + # search or other commands inside less). + # + # That means when the user hits ^C, the parent process (click) terminates, + # but less is still alive, paging the output and messing up the terminal. + # + # If the user wants to make the pager exit on ^C, they should set + # `LESS='-K'`. It's not our decision to make. + while True: + try: + c.wait() + except KeyboardInterrupt: + pass + else: + break + + +@contextlib.contextmanager +def _tempfilepager( + cmd_parts: list[str], color: bool | None = None +) -> t.Iterator[tuple[t.BinaryIO | t.TextIO, str, bool]]: + """Page through text by invoking a program on a temporary file. + + Used as the primary pager strategy on Windows (where piping to + ``more`` adds spurious ``\\r\\n``), and as a fallback on other + platforms. The command is resolved to an absolute path with + :func:`shutil.which`. + """ + # Split the command into the invoked CLI and its parameters. + if not cmd_parts: + # No usable pager: fall back to stdout through _nullpager so it gets the + # same borrowed-stream handling and the caller's stream is not closed. + stdout = _default_text_stdout() or StringIO() + with _nullpager(stdout, color) as rv: + yield rv + return + + import shutil + import subprocess + + cmd = cmd_parts[0] + + cmd_filepath = shutil.which(cmd) + if not cmd_filepath: + # No usable pager: fall back to stdout through _nullpager so it gets the + # same borrowed-stream handling and the caller's stream is not closed. + stdout = _default_text_stdout() or StringIO() + with _nullpager(stdout, color) as rv: + yield rv + return + + # Produces a normalized absolute path string. + # multi-call binaries such as busybox derive their identity from the symlink + # less -> busybox. resolve() causes them to misbehave. (eg. less becomes busybox) + cmd_path = Path(cmd_filepath).absolute() + + import tempfile + + encoding = get_best_encoding(sys.stdout) + if color is None: + color = False + # On Windows, NamedTemporaryFile cannot be opened by another process + # while Python still has it open, so we use delete=False and clean up manually + # rather than using a contextmanager here. + f = tempfile.NamedTemporaryFile(mode="wb", delete=False) + try: + yield t.cast(t.BinaryIO, f), encoding, color + f.flush() + f.close() + subprocess.call([str(cmd_path), f.name]) + finally: + os.unlink(f.name) + + +@contextlib.contextmanager +def _nullpager( + stream: t.TextIO, color: bool | None = None +) -> t.Iterator[tuple[t.TextIO, str, bool]]: + """Simply print unformatted text. This is the ultimate fallback. Don't close the + output stream in this case, since it's coming from elsewhere rather than our + internal helpers. + + The stream is wrapped in :class:`~click.utils.KeepOpenFile` so that, as a + borrowed stream, it is not closed by a ``with`` block. The wrapper that + :func:`get_pager_file` builds around it is detached rather than closed. + """ + encoding = get_best_encoding(stream) + + if color is None: + color = False + + yield KeepOpenFile(stream), encoding, color # type: ignore[misc] + + +class Editor: + def __init__( + self, + editor: str | None = None, + env: cabc.Mapping[str, str] | None = None, + require_save: bool = True, + extension: str = ".txt", + ) -> None: + self.editor = editor + self.env = env + self.require_save = require_save + self.extension = extension + + def get_editor(self) -> str: + if self.editor is not None: + return self.editor + for key in "VISUAL", "EDITOR": + rv = os.environ.get(key) + if rv: + return rv + if WIN: + return "notepad" + + from shutil import which + + for editor in "sensible-editor", "vim", "nano": + if which(editor) is not None: + return editor + return "vi" + + def edit_files(self, filenames: cabc.Iterable[str]) -> None: + """Open files in the user's editor.""" + import shlex + import subprocess + + editor = self.get_editor() + environ: dict[str, str] | None = None + + if self.env: + environ = os.environ.copy() + environ.update(self.env) + + try: + # Split in POSIX mode (the default) for the same reasons as + # in pager(): strips quotes from tokens and preserves quoted + # Windows paths. + c = subprocess.Popen( + args=shlex.split(editor) + list(filenames), + env=environ, + ) + exit_code = c.wait() + if exit_code != 0: + raise ClickException( + _("{editor}: Editing failed").format(editor=editor) + ) + except OSError as e: + raise ClickException( + _("{editor}: Editing failed: {e}").format(editor=editor, e=e) + ) from e + + @t.overload + def edit(self, text: bytes | bytearray) -> bytes | None: ... + + # We cannot know whether or not the type expected is str or bytes when None + # is passed, so str is returned as that was what was done before. + @t.overload + def edit(self, text: str | None) -> str | None: ... + + def edit(self, text: str | bytes | bytearray | None) -> str | bytes | None: + import tempfile + + if text is None: + data: bytes | bytearray = b"" + elif isinstance(text, (bytes, bytearray)): + data = text + else: + if text and not text.endswith("\n"): + text += "\n" + + if WIN: + data = text.replace("\n", "\r\n").encode("utf-8-sig") + else: + data = text.encode("utf-8") + + fd, name = tempfile.mkstemp(prefix="editor-", suffix=self.extension) + f: t.BinaryIO + + try: + with os.fdopen(fd, "wb") as f: + f.write(data) + + # If the filesystem resolution is 1 second, like Mac OS + # 10.12 Extended, or 2 seconds, like FAT32, and the editor + # closes very fast, require_save can fail. Set the modified + # time to be 2 seconds in the past to work around this. + os.utime(name, (os.path.getatime(name), os.path.getmtime(name) - 2)) + # Depending on the resolution, the exact value might not be + # recorded, so get the new recorded value. + timestamp = os.path.getmtime(name) + + self.edit_files((name,)) + + if self.require_save and os.path.getmtime(name) == timestamp: + return None + + with open(name, "rb") as f: + rv = f.read() + + if isinstance(text, (bytes, bytearray)): + return rv + + return rv.decode("utf-8-sig").replace("\r\n", "\n") + finally: + os.unlink(name) + + +def open_url(url: str, wait: bool = False, locate: bool = False) -> int: + import subprocess + + def _unquote_file(url: str) -> str: + from urllib.parse import unquote + + if url.startswith("file://"): + url = unquote(url[7:]) + + return url + + if sys.platform == "darwin": + args = ["open"] + if wait: + args.append("-W") + if locate: + args.append("-R") + args.append(_unquote_file(url)) + null = open("/dev/null", "w") + try: + return subprocess.Popen(args, stderr=null).wait() + finally: + null.close() + elif WIN: + if locate: + url = _unquote_file(url) + args = ["explorer", "/select,", url] + try: + return subprocess.call(args) + except OSError: + return 127 + else: + try: + os.startfile(url) # type: ignore[attr-defined] + except OSError: + return 127 + return 0 + elif CYGWIN: + if locate: + url = _unquote_file(url) + args = ["cygstart", os.path.dirname(url)] + else: + args = ["cygstart"] + if wait: + args.append("-w") + args.append(url) + try: + return subprocess.call(args) + except OSError: + # Command not found + return 127 + + try: + if locate: + url = os.path.dirname(_unquote_file(url)) or "." + else: + url = _unquote_file(url) + c = subprocess.Popen(["xdg-open", url]) + if wait: + return c.wait() + return 0 + except OSError: + if url.startswith(("http://", "https://")) and not locate and not wait: + import webbrowser + + webbrowser.open(url) + return 0 + return 1 + + +def _translate_ch_to_exc(ch: str) -> None: + if ch == "\x03": + raise KeyboardInterrupt() + + if ch == "\x04" and not WIN: # Unix-like, Ctrl+D + raise EOFError() + + if ch == "\x1a" and WIN: # Windows, Ctrl+Z + raise EOFError() + + +if sys.platform == "win32": + import msvcrt + + @contextlib.contextmanager + def raw_terminal() -> cabc.Iterator[int]: + yield -1 + + def getchar(echo: bool) -> str: + # The function `getch` will return a bytes object corresponding to + # the pressed character. Since Windows 10 build 1803, it will also + # return \x00 when called a second time after pressing a regular key. + # + # `getwch` does not share this probably-bugged behavior. Moreover, it + # returns a Unicode object by default, which is what we want. + # + # Either of these functions will return \x00 or \xe0 to indicate + # a special key, and you need to call the same function again to get + # the "rest" of the code. The fun part is that \u00e0 is + # "latin small letter a with grave", so if you type that on a French + # keyboard, you _also_ get a \xe0. + # E.g., consider the Up arrow. This returns \xe0 and then \x48. The + # resulting Unicode string reads as "a with grave" + "capital H". + # This is indistinguishable from when the user actually types + # "a with grave" and then "capital H". + # + # When \xe0 is returned, we assume it's part of a special-key sequence + # and call `getwch` again, but that means that when the user types + # the \u00e0 character, `getchar` doesn't return until a second + # character is typed. + # The alternative is returning immediately, but that would mess up + # cross-platform handling of arrow keys and others that start with + # \xe0. Another option is using `getch`, but then we can't reliably + # read non-ASCII characters, because return values of `getch` are + # limited to the current 8-bit codepage. + # + # Anyway, Click doesn't claim to do this Right(tm), and using `getwch` + # is doing the right thing in more situations than with `getch`. + + if echo: + func = t.cast(t.Callable[[], str], msvcrt.getwche) + else: + func = t.cast(t.Callable[[], str], msvcrt.getwch) + + rv = func() + + if rv in ("\x00", "\xe0"): + # \x00 and \xe0 are control characters that indicate special key, + # see above. + rv += func() + + _translate_ch_to_exc(rv) + return rv + +else: + import termios + import tty + + @contextlib.contextmanager + def raw_terminal() -> cabc.Iterator[int]: + f: t.TextIO | None + fd: int + + if not isatty(sys.stdin): + f = open("/dev/tty") + fd = f.fileno() + else: + fd = sys.stdin.fileno() + f = None + + try: + old_settings = termios.tcgetattr(fd) + + try: + tty.setraw(fd) + yield fd + finally: + termios.tcsetattr(fd, termios.TCSADRAIN, old_settings) + sys.stdout.flush() + + if f is not None: + f.close() + except termios.error: + pass + + def getchar(echo: bool) -> str: + with raw_terminal() as fd: + ch = os.read(fd, 32).decode(get_best_encoding(sys.stdin), "replace") + + if echo and isatty(sys.stdout): + sys.stdout.write(ch) + + _translate_ch_to_exc(ch) + return ch diff --git a/venv/lib/python3.11/site-packages/click/_textwrap.py b/venv/lib/python3.11/site-packages/click/_textwrap.py new file mode 100644 index 0000000000000000000000000000000000000000..82840f2dff3ce627712c0ece2752382a0f7dab8b --- /dev/null +++ b/venv/lib/python3.11/site-packages/click/_textwrap.py @@ -0,0 +1,188 @@ +from __future__ import annotations + +import collections.abc as cabc +import textwrap +from contextlib import contextmanager + +from ._compat import _ansi_re +from ._compat import term_len + + +def _truncate_visible(text: str, n: int) -> str: + """Return the longest prefix of ``text`` containing at most ``n`` visible + characters. + + ANSI escape sequences inside the prefix are kept intact and do not count + toward the visible width. A cut is never placed inside an escape sequence. + """ + if n <= 0: + return "" + + visible = 0 + i = 0 + cut = 0 + end = len(text) + while i < end: + m = _ansi_re.match(text, i) + if m is not None: + i = m.end() + continue + visible += 1 + i += 1 + cut = i + if visible >= n: + break + return text[:cut] + + +class TextWrapper(textwrap.TextWrapper): + """``textwrap.TextWrapper`` variant that measures widths by visible + character count. + + ANSI escape sequences embedded in chunks, indents, or the placeholder are + excluded from the width budget. Without this, styled help text (a styled + ``Usage:`` prefix, a colorized option name, ...) would be wrapped earlier + than its visible length warrants and tokens would split mid-word. + """ + + def _handle_long_word( + self, + reversed_chunks: list[str], + cur_line: list[str], + cur_len: int, + width: int, + ) -> None: + space_left = max(width - cur_len, 1) + + if self.break_long_words: + last = reversed_chunks[-1] + cut = _truncate_visible(last, space_left) + res = last[len(cut) :] + cur_line.append(cut) + reversed_chunks[-1] = res + elif not cur_line: + cur_line.append(reversed_chunks.pop()) + + def _wrap_chunks(self, chunks: list[str]) -> list[str]: + """Wrap chunks counting widths in visible characters. + + Mirrors the algorithm of :meth:`textwrap.TextWrapper._wrap_chunks` + with every width measurement routed through + :func:`click._compat.term_len` instead of :func:`len`, so ANSI escape + bytes in chunks, indents, or the placeholder do not inflate the count. + + .. seealso:: + :class:`textwrap.TextWrapper` in the Python standard library documentation: + https://docs.python.org/3/library/textwrap.html#textwrap.TextWrapper + + Reference implementation in CPython: + https://github.com/python/cpython/blob/main/Lib/textwrap.py + """ + lines: list[str] = [] + if self.width <= 0: + raise ValueError(f"invalid width {self.width!r} (must be > 0)") + if self.max_lines is not None: + if self.max_lines > 1: + indent = self.subsequent_indent + else: + indent = self.initial_indent + if term_len(indent) + term_len(self.placeholder.lstrip()) > self.width: + raise ValueError("placeholder too large for max width") + + chunks.reverse() + + while chunks: + cur_line: list[str] = [] + cur_len = 0 + + if lines: + indent = self.subsequent_indent + else: + indent = self.initial_indent + + width = self.width - term_len(indent) + + if self.drop_whitespace and chunks[-1].strip() == "" and lines: + del chunks[-1] + + while chunks: + n = term_len(chunks[-1]) + + if cur_len + n <= width: + cur_line.append(chunks.pop()) + cur_len += n + + else: + break + + if chunks and term_len(chunks[-1]) > width: + self._handle_long_word(chunks, cur_line, cur_len, width) + cur_len = sum(map(term_len, cur_line)) + + if self.drop_whitespace and cur_line and cur_line[-1].strip() == "": + cur_len -= term_len(cur_line[-1]) + del cur_line[-1] + + if cur_line: + if ( + self.max_lines is None + or len(lines) + 1 < self.max_lines + or ( + not chunks + or self.drop_whitespace + and len(chunks) == 1 + and not chunks[0].strip() + ) + and cur_len <= width + ): + lines.append(indent + "".join(cur_line)) + else: + while cur_line: + if ( + cur_line[-1].strip() + and cur_len + term_len(self.placeholder) <= width + ): + cur_line.append(self.placeholder) + lines.append(indent + "".join(cur_line)) + break + cur_len -= term_len(cur_line[-1]) + del cur_line[-1] + else: + if lines: + prev_line = lines[-1].rstrip() + if ( + term_len(prev_line) + term_len(self.placeholder) + <= self.width + ): + lines[-1] = prev_line + self.placeholder + break + lines.append(indent + self.placeholder.lstrip()) + break + + return lines + + @contextmanager + def extra_indent(self, indent: str) -> cabc.Iterator[None]: + old_initial_indent = self.initial_indent + old_subsequent_indent = self.subsequent_indent + self.initial_indent += indent + self.subsequent_indent += indent + + try: + yield + finally: + self.initial_indent = old_initial_indent + self.subsequent_indent = old_subsequent_indent + + def indent_only(self, text: str) -> str: + rv = [] + + for idx, line in enumerate(text.splitlines()): + indent = self.initial_indent + + if idx > 0: + indent = self.subsequent_indent + + rv.append(f"{indent}{line}") + + return "\n".join(rv) diff --git a/venv/lib/python3.11/site-packages/click/_utils.py b/venv/lib/python3.11/site-packages/click/_utils.py new file mode 100644 index 0000000000000000000000000000000000000000..05ee2e99757adb19882664e1fc0377ac29c92f80 --- /dev/null +++ b/venv/lib/python3.11/site-packages/click/_utils.py @@ -0,0 +1,36 @@ +from __future__ import annotations + +import enum +import typing as t + + +class Sentinel(enum.Enum): + """Enum used to define sentinel values. + + .. seealso:: + + `PEP 661 - Sentinel Values `_. + """ + + UNSET = object() + FLAG_NEEDS_VALUE = object() + + def __repr__(self) -> str: + return f"{self.__class__.__name__}.{self.name}" + + +UNSET: t.Literal[Sentinel.UNSET] = Sentinel.UNSET +"""Sentinel used to indicate that a value is not set.""" + +FLAG_NEEDS_VALUE: t.Literal[Sentinel.FLAG_NEEDS_VALUE] = Sentinel.FLAG_NEEDS_VALUE +"""Sentinel used to indicate an option was passed as a flag without a +value but is not a flag option. + +``Option.consume_value`` uses this to prompt or use the ``flag_value``. +""" + +T_UNSET: t.TypeAlias = t.Literal[Sentinel.UNSET] +"""Type hint for the :data:`UNSET` sentinel value.""" + +T_FLAG_NEEDS_VALUE: t.TypeAlias = t.Literal[Sentinel.FLAG_NEEDS_VALUE] +"""Type hint for the :data:`FLAG_NEEDS_VALUE` sentinel value.""" diff --git a/venv/lib/python3.11/site-packages/click/_winconsole.py b/venv/lib/python3.11/site-packages/click/_winconsole.py new file mode 100644 index 0000000000000000000000000000000000000000..d25178d66ff7a9c8a1da52e61379da240be625b6 --- /dev/null +++ b/venv/lib/python3.11/site-packages/click/_winconsole.py @@ -0,0 +1,297 @@ +# This module is based on the excellent work by Adam Bartoš who +# provided a lot of what went into the implementation here in +# the discussion to issue1602 in the Python bug tracker. +# +# There are some general differences in regards to how this works +# compared to the original patches as we do not need to patch +# the entire interpreter but just work in our little world of +# echo and prompt. +from __future__ import annotations + +import collections.abc as cabc +import io +import sys +import time +import typing as t +from ctypes import Array +from ctypes import byref +from ctypes import c_char +from ctypes import c_char_p +from ctypes import c_int +from ctypes import c_ssize_t +from ctypes import c_ulong +from ctypes import c_void_p +from ctypes import POINTER +from ctypes import py_object +from ctypes import Structure +from ctypes.wintypes import DWORD +from ctypes.wintypes import HANDLE +from ctypes.wintypes import LPCWSTR +from ctypes.wintypes import LPWSTR +from gettext import gettext as _ + +from ._compat import _NonClosingTextIOWrapper + +assert sys.platform == "win32" +import msvcrt # noqa: E402 +from ctypes import windll # noqa: E402 +from ctypes import WINFUNCTYPE # noqa: E402 + +c_ssize_p = POINTER(c_ssize_t) + +kernel32 = windll.kernel32 +GetStdHandle = kernel32.GetStdHandle +ReadConsoleW = kernel32.ReadConsoleW +WriteConsoleW = kernel32.WriteConsoleW +GetConsoleMode = kernel32.GetConsoleMode +GetLastError = kernel32.GetLastError +GetCommandLineW = WINFUNCTYPE(LPWSTR)(("GetCommandLineW", windll.kernel32)) +CommandLineToArgvW = WINFUNCTYPE(POINTER(LPWSTR), LPCWSTR, POINTER(c_int))( + ("CommandLineToArgvW", windll.shell32) +) +LocalFree = WINFUNCTYPE(c_void_p, c_void_p)(("LocalFree", windll.kernel32)) + +STDIN_HANDLE = GetStdHandle(-10) +STDOUT_HANDLE = GetStdHandle(-11) +STDERR_HANDLE = GetStdHandle(-12) + +PyBUF_SIMPLE = 0 +PyBUF_WRITABLE = 1 + +ERROR_SUCCESS = 0 +ERROR_NOT_ENOUGH_MEMORY = 8 +ERROR_OPERATION_ABORTED = 995 + +STDIN_FILENO = 0 +STDOUT_FILENO = 1 +STDERR_FILENO = 2 + +EOF = b"\x1a" +MAX_BYTES_WRITTEN = 32767 + +if t.TYPE_CHECKING: + try: + # Using `typing_extensions.Buffer` instead of `collections.abc` + # on Windows for some reason does not have `Sized` implemented. + from collections.abc import Buffer # type: ignore + except ImportError: + from typing_extensions import Buffer + +try: + from ctypes import pythonapi +except ImportError: + # On PyPy we cannot get buffers so our ability to operate here is + # severely limited. + get_buffer = None +else: + + class Py_buffer(Structure): + _fields_ = [ # noqa: RUF012 + ("buf", c_void_p), + ("obj", py_object), + ("len", c_ssize_t), + ("itemsize", c_ssize_t), + ("readonly", c_int), + ("ndim", c_int), + ("format", c_char_p), + ("shape", c_ssize_p), + ("strides", c_ssize_p), + ("suboffsets", c_ssize_p), + ("internal", c_void_p), + ] + + PyObject_GetBuffer = pythonapi.PyObject_GetBuffer + PyBuffer_Release = pythonapi.PyBuffer_Release + + def get_buffer(obj: Buffer, writable: bool = False) -> Array[c_char]: + buf = Py_buffer() + flags: int = PyBUF_WRITABLE if writable else PyBUF_SIMPLE + PyObject_GetBuffer(py_object(obj), byref(buf), flags) + + try: + buffer_type = c_char * buf.len + out: Array[c_char] = buffer_type.from_address(buf.buf) + return out + finally: + PyBuffer_Release(byref(buf)) + + +class _WindowsConsoleRawIOBase(io.RawIOBase): + def __init__(self, handle: int | None) -> None: + self.handle = handle + + def isatty(self) -> t.Literal[True]: + super().isatty() + return True + + +class _WindowsConsoleReader(_WindowsConsoleRawIOBase): + def readable(self) -> t.Literal[True]: + return True + + def readinto(self, b: Buffer) -> int: + bytes_to_be_read = len(b) + if not bytes_to_be_read: + return 0 + elif bytes_to_be_read % 2: + raise ValueError( + "cannot read odd number of bytes from UTF-16-LE encoded console" + ) + + buffer = get_buffer(b, writable=True) + code_units_to_be_read = bytes_to_be_read // 2 + code_units_read = c_ulong() + + rv = ReadConsoleW( + HANDLE(self.handle), + buffer, + code_units_to_be_read, + byref(code_units_read), + None, + ) + if GetLastError() == ERROR_OPERATION_ABORTED: + # wait for KeyboardInterrupt + time.sleep(0.1) + if not rv: + raise OSError(_("Windows error: {error}").format(error=GetLastError())) + + if buffer[0] == EOF: + return 0 + return 2 * code_units_read.value + + +class _WindowsConsoleWriter(_WindowsConsoleRawIOBase): + def writable(self) -> t.Literal[True]: + return True + + @staticmethod + def _get_error_message(errno: int) -> str: + if errno == ERROR_SUCCESS: + return "ERROR_SUCCESS" + elif errno == ERROR_NOT_ENOUGH_MEMORY: + return "ERROR_NOT_ENOUGH_MEMORY" + return _("Windows error: {error}").format(error=errno) + + def write(self, b: Buffer) -> int: + bytes_to_be_written = len(b) + buf = get_buffer(b) + code_units_to_be_written = min(bytes_to_be_written, MAX_BYTES_WRITTEN) // 2 + code_units_written = c_ulong() + + WriteConsoleW( + HANDLE(self.handle), + buf, + code_units_to_be_written, + byref(code_units_written), + None, + ) + bytes_written = 2 * code_units_written.value + + if bytes_written == 0 and bytes_to_be_written > 0: + raise OSError(self._get_error_message(GetLastError())) + return bytes_written + + +class ConsoleStream: + def __init__(self, text_stream: t.TextIO, byte_stream: t.BinaryIO) -> None: + self._text_stream = text_stream + self.buffer = byte_stream + + @property + def name(self) -> str: + return self.buffer.name + + def write(self, x: t.AnyStr) -> int: + if isinstance(x, str): + return self._text_stream.write(x) + try: + self.flush() + except Exception: + pass + return self.buffer.write(x) + + def writelines(self, lines: cabc.Iterable[t.AnyStr]) -> None: + for line in lines: + self.write(line) + + def __getattr__(self, name: str) -> t.Any: + return getattr(self._text_stream, name) + + def isatty(self) -> bool: + return self.buffer.isatty() + + def __repr__(self) -> str: + return f"" + + +def _get_text_stdin(buffer_stream: t.BinaryIO) -> t.TextIO: + text_stream = _NonClosingTextIOWrapper( + io.BufferedReader(_WindowsConsoleReader(STDIN_HANDLE)), + "utf-16-le", + "strict", + line_buffering=True, + ) + return t.cast(t.TextIO, ConsoleStream(text_stream, buffer_stream)) + + +def _get_text_stdout(buffer_stream: t.BinaryIO) -> t.TextIO: + text_stream = _NonClosingTextIOWrapper( + io.BufferedWriter(_WindowsConsoleWriter(STDOUT_HANDLE)), + "utf-16-le", + "strict", + line_buffering=True, + ) + return t.cast(t.TextIO, ConsoleStream(text_stream, buffer_stream)) + + +def _get_text_stderr(buffer_stream: t.BinaryIO) -> t.TextIO: + text_stream = _NonClosingTextIOWrapper( + io.BufferedWriter(_WindowsConsoleWriter(STDERR_HANDLE)), + "utf-16-le", + "strict", + line_buffering=True, + ) + return t.cast(t.TextIO, ConsoleStream(text_stream, buffer_stream)) + + +_stream_factories: cabc.Mapping[int, t.Callable[[t.BinaryIO], t.TextIO]] = { + 0: _get_text_stdin, + 1: _get_text_stdout, + 2: _get_text_stderr, +} + + +def _is_console(f: t.TextIO) -> bool: + if not hasattr(f, "fileno"): + return False + + try: + fileno = f.fileno() + except (OSError, io.UnsupportedOperation): + return False + + handle = msvcrt.get_osfhandle(fileno) + return bool(GetConsoleMode(handle, byref(DWORD()))) + + +def _get_windows_console_stream( + f: t.TextIO, encoding: str | None, errors: str | None +) -> t.TextIO | None: + if ( + get_buffer is None + or encoding not in {"utf-16-le", None} + or errors not in {"strict", None} + or not _is_console(f) + ): + return None + + func = _stream_factories.get(f.fileno()) + if func is None: + return None + + b = getattr(f, "buffer", None) + + if b is None: + return None + + return func(b) diff --git a/venv/lib/python3.11/site-packages/click/core.py b/venv/lib/python3.11/site-packages/click/core.py new file mode 100644 index 0000000000000000000000000000000000000000..d7ecbefbc491a9582e1a47385f2922c10302b58c --- /dev/null +++ b/venv/lib/python3.11/site-packages/click/core.py @@ -0,0 +1,3639 @@ +from __future__ import annotations + +import collections.abc as cabc +import enum +import errno +import inspect +import os +import sys +import typing as t +from abc import ABC +from abc import abstractmethod +from collections import abc +from collections import Counter +from contextlib import AbstractContextManager +from contextlib import contextmanager +from contextlib import ExitStack +from functools import update_wrapper +from gettext import gettext as _ +from gettext import ngettext +from itertools import repeat +from types import TracebackType + +from . import types +from ._utils import FLAG_NEEDS_VALUE +from ._utils import UNSET +from .exceptions import Abort +from .exceptions import BadParameter +from .exceptions import ClickException +from .exceptions import Exit +from .exceptions import MissingParameter +from .exceptions import NoArgsIsHelpError +from .exceptions import NoSuchCommand +from .exceptions import UsageError +from .formatting import HelpFormatter +from .formatting import join_options +from .globals import pop_context +from .globals import push_context +from .parser import _OptionParser +from .parser import _split_opt +from .termui import confirm +from .termui import prompt +from .termui import style +from .utils import _detect_program_name +from .utils import _expand_args +from .utils import echo +from .utils import make_default_short_help +from .utils import make_str +from .utils import PacifyFlushWrapper + +if t.TYPE_CHECKING: + from typing_extensions import Self + + from .shell_completion import CompletionItem + +F = t.TypeVar("F", bound="t.Callable[..., t.Any]") +V = t.TypeVar("V") + + +def _complete_visible_commands( + ctx: Context, incomplete: str +) -> cabc.Iterator[tuple[str, Command]]: + """List all the subcommands of a group that start with the + incomplete value and aren't hidden. + + :param ctx: Invocation context for the group. + :param incomplete: Value being completed. May be empty. + """ + multi = t.cast(Group, ctx.command) + + for name in multi.list_commands(ctx): + if name.startswith(incomplete): + command = multi.get_command(ctx, name) + + if command is not None and not command.hidden: + yield name, command + + +def _check_nested_chain( + base_command: Group, cmd_name: str, cmd: Command, register: bool = False +) -> None: + if not base_command.chain or not isinstance(cmd, Group): + return + + if register: + message = ( + f"It is not possible to add the group {cmd_name!r} to another" + f" group {base_command.name!r} that is in chain mode." + ) + else: + message = ( + f"Found the group {cmd_name!r} as subcommand to another group " + f" {base_command.name!r} that is in chain mode. This is not supported." + ) + + raise RuntimeError(message) + + +def _format_deprecated_label(deprecated: bool | str) -> str: + """Return the parenthesized deprecation label shown in help text.""" + label = _("deprecated").upper() + if isinstance(deprecated, str): + return f"({label}: {deprecated})" + return f"({label})" + + +def _format_deprecated_suffix(deprecated: bool | str) -> str: + """Return the trailing reason for a ``DeprecationWarning`` message, + prefixed with a space, or an empty string when no reason was given. + """ + if isinstance(deprecated, str): + return f" {deprecated}" + return "" + + +def batch(iterable: cabc.Iterable[V], batch_size: int) -> list[tuple[V, ...]]: + return list(zip(*repeat(iter(iterable), batch_size), strict=False)) + + +@contextmanager +def augment_usage_errors( + ctx: Context, param: Parameter | None = None +) -> cabc.Generator[None]: + """Context manager that attaches extra information to exceptions.""" + try: + yield + except BadParameter as e: + if e.ctx is None: + e.ctx = ctx + if param is not None and e.param is None: + e.param = param + raise + except UsageError as e: + if e.ctx is None: + e.ctx = ctx + raise + + +def iter_params_for_processing( + invocation_order: cabc.Sequence[Parameter], + declaration_order: cabc.Sequence[Parameter], +) -> list[Parameter]: + """Returns all declared parameters in the order they should be processed. + + The declared parameters are re-shuffled depending on the order in which + they were invoked, as well as the eagerness of each parameters. + + The invocation order takes precedence over the declaration order. I.e. the + order in which the user provided them to the CLI is respected. + + This behavior and its effect on callback evaluation is detailed at: + https://click.palletsprojects.com/en/stable/advanced/#callback-evaluation-order + """ + + def sort_key(item: Parameter) -> tuple[bool, float]: + try: + idx: float = invocation_order.index(item) + except ValueError: + idx = float("inf") + + return not item.is_eager, idx + + return sorted(declaration_order, key=sort_key) + + +class ParameterSource(enum.IntEnum): + """This is an :class:`~enum.IntEnum` that indicates the source of a + parameter's value. + + Use :meth:`click.Context.get_parameter_source` to get the + source for a parameter by name. + + Members are ordered from most explicit to least explicit source. + This allows comparison to check if a value was explicitly provided: + + .. code-block:: python + + source = ctx.get_parameter_source("port") + if source < click.ParameterSource.DEFAULT_MAP: + ... # value was explicitly set + + .. versionchanged:: 8.3.3 + Use :class:`~enum.IntEnum` and reorder members from most to + least explicit. Supports comparison operators. + + .. versionchanged:: 8.0 + Use :class:`~enum.Enum` and drop the ``validate`` method. + + .. versionchanged:: 8.0 + Added the ``PROMPT`` value. + """ + + PROMPT = enum.auto() + """Used a prompt to confirm a default or provide a value.""" + COMMANDLINE = enum.auto() + """The value was provided by the command line args.""" + ENVIRONMENT = enum.auto() + """The value was provided with an environment variable.""" + DEFAULT_MAP = enum.auto() + """Used a default provided by :attr:`Context.default_map`.""" + DEFAULT = enum.auto() + """Used the default specified by the parameter.""" + + +class Context: + """The context is a special internal object that holds state relevant + for the script execution at every single level. It's normally invisible + to commands unless they opt-in to getting access to it. + + The context is useful as it can pass internal objects around and can + control special execution features such as reading data from + environment variables. + + A context can be used as context manager in which case it will call + :meth:`close` on teardown. + + :param command: the command class for this context. + :param parent: the parent context. + :param info_name: the info name for this invocation. Generally this + is the most descriptive name for the script or + command. For the toplevel script it is usually + the name of the script, for commands below that it's + the name of the script. + :param obj: an arbitrary object of user data. + :param auto_envvar_prefix: the prefix to use for automatic environment + variables. If this is `None` then reading + from environment variables is disabled. This + does not affect manually set environment + variables which are always read. + :param default_map: a dictionary (like object) with default values + for parameters. + :param terminal_width: the width of the terminal. The default is + inherit from parent context. If no context + defines the terminal width then auto + detection will be applied. + :param max_content_width: the maximum width for content rendered by + Click (this currently only affects help + pages). This defaults to 80 characters if + not overridden. In other words: even if the + terminal is larger than that, Click will not + format things wider than 80 characters by + default. In addition to that, formatters might + add some safety mapping on the right. + :param resilient_parsing: if this flag is enabled then Click will + parse without any interactivity or callback + invocation. Default values will also be + ignored. This is useful for implementing + things such as completion support. + :param allow_extra_args: if this is set to `True` then extra arguments + at the end will not raise an error and will be + kept on the context. The default is to inherit + from the command. + :param allow_interspersed_args: if this is set to `False` then options + and arguments cannot be mixed. The + default is to inherit from the command. + :param ignore_unknown_options: instructs click to ignore options it does + not know and keeps them for later + processing. + :param help_option_names: optionally a list of strings that define how + the default help parameter is named. The + default is ``['--help']``. + :param token_normalize_func: an optional function that is used to + normalize tokens (options, choices, + etc.). This for instance can be used to + implement case insensitive behavior. + :param color: controls if the terminal supports ANSI colors or not. The + default is autodetection. This is only needed if ANSI + codes are used in texts that Click prints which is by + default not the case. This for instance would affect + help output. + :param show_default: Show the default value for commands. If this + value is not set, it defaults to the value from the parent + context. ``Command.show_default`` overrides this default for the + specific command. + + .. versionchanged:: 8.2 + The ``protected_args`` attribute is deprecated and will be removed in + Click 9.0. ``args`` will contain remaining unparsed tokens. + + .. versionchanged:: 8.1 + The ``show_default`` parameter is overridden by + ``Command.show_default``, instead of the other way around. + + .. versionchanged:: 8.0 + The ``show_default`` parameter defaults to the value from the + parent context. + + .. versionchanged:: 7.1 + Added the ``show_default`` parameter. + + .. versionchanged:: 4.0 + Added the ``color``, ``ignore_unknown_options``, and + ``max_content_width`` parameters. + + .. versionchanged:: 3.0 + Added the ``allow_extra_args`` and ``allow_interspersed_args`` + parameters. + + .. versionchanged:: 2.0 + Added the ``resilient_parsing``, ``help_option_names``, and + ``token_normalize_func`` parameters. + """ + + #: The formatter class to create with :meth:`make_formatter`. + #: + #: .. versionadded:: 8.0 + formatter_class: type[HelpFormatter] = HelpFormatter + + parent: Context | None + command: Command + info_name: str | None + params: dict[str, t.Any] + args: list[str] + _protected_args: list[str] + _opt_prefixes: set[str] + obj: t.Any + _meta: dict[str, t.Any] + default_map: cabc.MutableMapping[str, t.Any] | None + invoked_subcommand: str | None + terminal_width: int | None + max_content_width: int | None + allow_extra_args: bool + allow_interspersed_args: bool + ignore_unknown_options: bool + help_option_names: list[str] + token_normalize_func: t.Callable[[str], str] | None + resilient_parsing: bool + auto_envvar_prefix: str | None + color: bool | None + show_default: bool | None + _close_callbacks: list[t.Callable[[], t.Any]] + _depth: int + _parameter_source: dict[str, ParameterSource] + _param_default_explicit: dict[str, bool] + _exit_stack: ExitStack + + def __init__( + self, + command: Command, + parent: Context | None = None, + info_name: str | None = None, + obj: t.Any | None = None, + auto_envvar_prefix: str | None = None, + default_map: cabc.MutableMapping[str, t.Any] | None = None, + terminal_width: int | None = None, + max_content_width: int | None = None, + resilient_parsing: bool = False, + allow_extra_args: bool | None = None, + allow_interspersed_args: bool | None = None, + ignore_unknown_options: bool | None = None, + help_option_names: list[str] | None = None, + token_normalize_func: t.Callable[[str], str] | None = None, + color: bool | None = None, + show_default: bool | None = None, + ) -> None: + #: the parent context or `None` if none exists. + self.parent = parent + #: the :class:`Command` for this context. + self.command = command + #: the descriptive information name + self.info_name = info_name + #: Map of parameter names to their parsed values. Parameters + #: with ``expose_value=False`` are not stored. + self.params = {} + #: the leftover arguments. + self.args = [] + #: protected arguments. These are arguments that are prepended + #: to `args` when certain parsing scenarios are encountered but + #: must be never propagated to another arguments. This is used + #: to implement nested parsing. + self._protected_args = [] + #: the collected prefixes of the command's options. + self._opt_prefixes = set(parent._opt_prefixes) if parent else set() + + if obj is None and parent is not None: + obj = parent.obj + + #: the user object stored. + self.obj = obj + self._meta = getattr(parent, "meta", {}) + + #: A dictionary (-like object) with defaults for parameters. + if ( + default_map is None + and info_name is not None + and parent is not None + and parent.default_map is not None + ): + default_map = parent.default_map.get(info_name) + + self.default_map = default_map + + #: This flag indicates if a subcommand is going to be executed. A + #: group callback can use this information to figure out if it's + #: being executed directly or because the execution flow passes + #: onwards to a subcommand. By default it's None, but it can be + #: the name of the subcommand to execute. + #: + #: If chaining is enabled this will be set to ``'*'`` in case + #: any commands are executed. It is however not possible to + #: figure out which ones. If you require this knowledge you + #: should use a :func:`result_callback`. + self.invoked_subcommand = None + + if terminal_width is None and parent is not None: + terminal_width = parent.terminal_width + + #: The width of the terminal (None is autodetection). + self.terminal_width = terminal_width + + if max_content_width is None and parent is not None: + max_content_width = parent.max_content_width + + #: The maximum width of formatted content (None implies a sensible + #: default which is 80 for most things). + self.max_content_width = max_content_width + + if allow_extra_args is None: + allow_extra_args = command.allow_extra_args + + #: Indicates if the context allows extra args or if it should + #: fail on parsing. + #: + #: .. versionadded:: 3.0 + self.allow_extra_args = allow_extra_args + + if allow_interspersed_args is None: + allow_interspersed_args = command.allow_interspersed_args + + #: Indicates if the context allows mixing of arguments and + #: options or not. + #: + #: .. versionadded:: 3.0 + self.allow_interspersed_args = allow_interspersed_args + + if ignore_unknown_options is None: + ignore_unknown_options = command.ignore_unknown_options + + #: Instructs click to ignore options that a command does not + #: understand and will store it on the context for later + #: processing. This is primarily useful for situations where you + #: want to call into external programs. Generally this pattern is + #: strongly discouraged because it's not possibly to losslessly + #: forward all arguments. + #: + #: .. versionadded:: 4.0 + self.ignore_unknown_options = ignore_unknown_options + + if help_option_names is None: + if parent is not None: + help_option_names = parent.help_option_names + else: + help_option_names = ["--help"] + + #: The names for the help options. + self.help_option_names = help_option_names + + if token_normalize_func is None and parent is not None: + token_normalize_func = parent.token_normalize_func + + #: An optional normalization function for tokens. This is + #: options, choices, commands etc. + self.token_normalize_func = token_normalize_func + + #: Indicates if resilient parsing is enabled. In that case Click + #: will do its best to not cause any failures and default values + #: will be ignored. Useful for completion. + self.resilient_parsing = resilient_parsing + + # If there is no envvar prefix yet, but the parent has one and + # the command on this level has a name, we can expand the envvar + # prefix automatically. + if auto_envvar_prefix is None: + if ( + parent is not None + and parent.auto_envvar_prefix is not None + and self.info_name is not None + ): + auto_envvar_prefix = ( + f"{parent.auto_envvar_prefix}_{self.info_name.upper()}" + ) + else: + auto_envvar_prefix = auto_envvar_prefix.upper() + + if auto_envvar_prefix is not None: + auto_envvar_prefix = auto_envvar_prefix.replace("-", "_") + + self.auto_envvar_prefix = auto_envvar_prefix + + if color is None and parent is not None: + color = parent.color + + #: Controls if styling output is wanted or not. + self.color = color + + if show_default is None and parent is not None: + show_default = parent.show_default + + #: Show option default values when formatting help text. + self.show_default = show_default + + self._close_callbacks = [] + self._depth = 0 + self._parameter_source = {} + # Tracks whether the option that currently owns each parameter slot in + # :attr:`params` had its ``default`` set explicitly by the user. Used + # to tie-break feature-switch groups where multiple options share a + # parameter name and both fall back to their default value. + # Refs: https://github.com/pallets/click/issues/3403 + self._param_default_explicit = {} + self._exit_stack = ExitStack() + + @property + def protected_args(self) -> list[str]: + import warnings + + warnings.warn( + "'protected_args' is deprecated and will be removed in Click 9.0." + " 'args' will contain remaining unparsed tokens.", + DeprecationWarning, + stacklevel=2, + ) + return self._protected_args + + def to_info_dict(self) -> dict[str, t.Any]: + """Gather information that could be useful for a tool generating + user-facing documentation. This traverses the entire CLI + structure. + + .. code-block:: python + + with Context(cli) as ctx: + info = ctx.to_info_dict() + + .. versionadded:: 8.0 + """ + return { + "command": self.command.to_info_dict(self), + "info_name": self.info_name, + "allow_extra_args": self.allow_extra_args, + "allow_interspersed_args": self.allow_interspersed_args, + "ignore_unknown_options": self.ignore_unknown_options, + "auto_envvar_prefix": self.auto_envvar_prefix, + } + + def __enter__(self) -> Self: + self._depth += 1 + push_context(self) + return self + + def __exit__( + self, + exc_type: type[BaseException] | None, + exc_value: BaseException | None, + tb: TracebackType | None, + ) -> bool | None: + self._depth -= 1 + exit_result: bool | None = None + if self._depth == 0: + exit_result = self._close_with_exception_info(exc_type, exc_value, tb) + pop_context() + + return exit_result + + @contextmanager + def scope(self, cleanup: bool = True) -> cabc.Generator[Context]: + """This helper method can be used with the context object to promote + it to the current thread local (see :func:`get_current_context`). + The default behavior of this is to invoke the cleanup functions which + can be disabled by setting `cleanup` to `False`. The cleanup + functions are typically used for things such as closing file handles. + + If the cleanup is intended the context object can also be directly + used as a context manager. + + Example usage:: + + with ctx.scope(): + assert get_current_context() is ctx + + This is equivalent:: + + with ctx: + assert get_current_context() is ctx + + .. versionadded:: 5.0 + + :param cleanup: controls if the cleanup functions should be run or + not. The default is to run these functions. In + some situations the context only wants to be + temporarily pushed in which case this can be disabled. + Nested pushes automatically defer the cleanup. + """ + if not cleanup: + self._depth += 1 + try: + with self as rv: + yield rv + finally: + if not cleanup: + self._depth -= 1 + + @property + def meta(self) -> dict[str, t.Any]: + """This is a dictionary which is shared with all the contexts + that are nested. It exists so that click utilities can store some + state here if they need to. It is however the responsibility of + that code to manage this dictionary well. + + The keys are supposed to be unique dotted strings. For instance + module paths are a good choice for it. What is stored in there is + irrelevant for the operation of click. However what is important is + that code that places data here adheres to the general semantics of + the system. + + Example usage:: + + LANG_KEY = f'{__name__}.lang' + + def set_language(value): + ctx = get_current_context() + ctx.meta[LANG_KEY] = value + + def get_language(): + return get_current_context().meta.get(LANG_KEY, 'en_US') + + .. versionadded:: 5.0 + """ + return self._meta + + def make_formatter(self) -> HelpFormatter: + """Creates the :class:`~click.HelpFormatter` for the help and + usage output. + + To quickly customize the formatter class used without overriding + this method, set the :attr:`formatter_class` attribute. + + .. versionchanged:: 8.0 + Added the :attr:`formatter_class` attribute. + """ + return self.formatter_class( + width=self.terminal_width, max_width=self.max_content_width + ) + + def with_resource(self, context_manager: AbstractContextManager[V]) -> V: + """Register a resource as if it were used in a ``with`` + statement. The resource will be cleaned up when the context is + popped. + + Uses :meth:`contextlib.ExitStack.enter_context`. It calls the + resource's ``__enter__()`` method and returns the result. When + the context is popped, it closes the stack, which calls the + resource's ``__exit__()`` method. + + To register a cleanup function for something that isn't a + context manager, use :meth:`call_on_close`. Or use something + from :mod:`contextlib` to turn it into a context manager first. + + .. code-block:: python + + @click.group() + @click.option("--name") + @click.pass_context + def cli(ctx): + ctx.obj = ctx.with_resource(connect_db(name)) + + :param context_manager: The context manager to enter. + :return: Whatever ``context_manager.__enter__()`` returns. + + .. versionadded:: 8.0 + """ + return self._exit_stack.enter_context(context_manager) + + def call_on_close(self, f: t.Callable[..., t.Any]) -> t.Callable[..., t.Any]: + """Register a function to be called when the context tears down. + + This can be used to close resources opened during the script + execution. Resources that support Python's context manager + protocol which would be used in a ``with`` statement should be + registered with :meth:`with_resource` instead. + + :param f: The function to execute on teardown. + """ + return self._exit_stack.callback(f) + + def close(self) -> None: + """Invoke all close callbacks registered with + :meth:`call_on_close`, and exit all context managers entered + with :meth:`with_resource`. + """ + self._close_with_exception_info(None, None, None) + + def _close_with_exception_info( + self, + exc_type: type[BaseException] | None, + exc_value: BaseException | None, + tb: TracebackType | None, + ) -> bool | None: + """Unwind the exit stack by calling its :meth:`__exit__` providing the exception + information to allow for exception handling by the various resources registered + using :meth;`with_resource` + + :return: Whatever ``exit_stack.__exit__()`` returns. + """ + exit_result = self._exit_stack.__exit__(exc_type, exc_value, tb) + # In case the context is reused, create a new exit stack. + self._exit_stack = ExitStack() + + return exit_result + + @property + def command_path(self) -> str: + """The computed command path. This is used for the ``usage`` + information on the help page. It's automatically created by + combining the info names of the chain of contexts to the root. + """ + rv = "" + if self.info_name is not None: + rv = self.info_name + if self.parent is not None: + parent_command_path = [self.parent.command_path] + + if isinstance(self.parent.command, Command): + for param in self.parent.command.get_params(self): + parent_command_path.extend(param.get_usage_pieces(self)) + + rv = f"{' '.join(parent_command_path)} {rv}" + return rv.lstrip() + + def find_root(self) -> Context: + """Finds the outermost context.""" + node = self + while node.parent is not None: + node = node.parent + return node + + def find_object(self, object_type: type[V]) -> V | None: + """Finds the closest object of a given type.""" + node: Context | None = self + + while node is not None: + if isinstance(node.obj, object_type): + return node.obj + + node = node.parent + + return None + + def ensure_object(self, object_type: type[V]) -> V: + """Like :meth:`find_object` but sets the innermost object to a + new instance of `object_type` if it does not exist. + """ + rv = self.find_object(object_type) + if rv is None: + self.obj = rv = object_type() + return rv + + def _default_map_has(self, name: str | None) -> bool: + """Check if :attr:`default_map` contains a real value for ``name``. + + Returns ``False`` when the key is absent, the map is ``None``, + ``name`` is ``None``, or the stored value is the internal + :data:`UNSET` sentinel. + """ + return ( + name is not None + and self.default_map is not None + and name in self.default_map + and self.default_map[name] is not UNSET + ) + + @t.overload + def lookup_default( + self, name: str, call: t.Literal[True] = True + ) -> t.Any | None: ... + + @t.overload + def lookup_default( + self, name: str, call: t.Literal[False] = ... + ) -> t.Any | t.Callable[[], t.Any] | None: ... + + def lookup_default(self, name: str, call: bool = True) -> t.Any | None: + """Get the default for a parameter from :attr:`default_map`. + + :param name: Name of the parameter. + :param call: If the default is a callable, call it. Disable to + return the callable instead. + + .. versionchanged:: 8.0 + Added the ``call`` parameter. + """ + if not self._default_map_has(name): + return None + + # Assert to make the type checker happy. + assert self.default_map is not None + value = self.default_map[name] + + if call and callable(value): + return value() + + return value + + def fail(self, message: str) -> t.NoReturn: + """Aborts the execution of the program with a specific error + message. + + :param message: the error message to fail with. + """ + raise UsageError(message, self) + + def abort(self) -> t.NoReturn: + """Aborts the script.""" + raise Abort() + + def exit(self, code: int = 0) -> t.NoReturn: + """Exits the application with a given exit code. + + .. versionchanged:: 8.2 + Callbacks and context managers registered with :meth:`call_on_close` + and :meth:`with_resource` are closed before exiting. + """ + self.close() + raise Exit(code) + + def get_usage(self) -> str: + """Helper method to get formatted usage string for the current + context and command. + """ + return self.command.get_usage(self) + + def get_help(self) -> str: + """Helper method to get formatted help page for the current + context and command. + """ + return self.command.get_help(self) + + def _make_sub_context(self, command: Command) -> Context: + """Create a new context of the same type as this context, but + for a new command. + + :meta private: + """ + return type(self)(command, info_name=command.name, parent=self) + + @t.overload + def invoke( + self, callback: t.Callable[..., V], /, *args: t.Any, **kwargs: t.Any + ) -> V: ... + + @t.overload + def invoke(self, callback: Command, /, *args: t.Any, **kwargs: t.Any) -> t.Any: ... + + def invoke( + self, callback: Command | t.Callable[..., V], /, *args: t.Any, **kwargs: t.Any + ) -> t.Any | V: + """Invokes a command callback in exactly the way it expects. There + are two ways to invoke this method: + + 1. the first argument can be a callback and all other arguments and + keyword arguments are forwarded directly to the function. + 2. the first argument is a click command object. In that case all + arguments are forwarded as well but proper click parameters + (options and click arguments) must be keyword arguments and Click + will fill in defaults. + + .. versionchanged:: 8.0 + All ``kwargs`` are tracked in :attr:`params` so they will be + passed if :meth:`forward` is called at multiple levels. + + .. versionchanged:: 3.2 + A new context is created, and missing arguments use default values. + """ + if isinstance(callback, Command): + other_cmd = callback + + if other_cmd.callback is None: + raise TypeError( + "The given command does not have a callback that can be invoked." + ) + else: + callback = t.cast("t.Callable[..., V]", other_cmd.callback) + + ctx = self._make_sub_context(other_cmd) + + for param in other_cmd.params: + if param.name not in kwargs and param.expose_value: + default_value = param.get_default(ctx) + # We explicitly hide the :attr:`UNSET` value to the user, as we + # choose to make it an implementation detail. And because ``invoke`` + # has been designed as part of Click public API, we return ``None`` + # instead. Refs: + # https://github.com/pallets/click/issues/3066 + # https://github.com/pallets/click/issues/3065 + # https://github.com/pallets/click/pull/3068 + if default_value is UNSET: + default_value = None + kwargs[param.name] = param.type_cast_value(ctx, default_value) + + # Track all kwargs as params, so that forward() will pass + # them on in subsequent calls. + ctx.params.update(kwargs) + else: + ctx = self + + with augment_usage_errors(self): + with ctx: + return callback(*args, **kwargs) + + def forward(self, cmd: Command, /, *args: t.Any, **kwargs: t.Any) -> t.Any: + """Similar to :meth:`invoke` but fills in default keyword + arguments from the current context if the other command expects + it. This cannot invoke callbacks directly, only other commands. + + .. versionchanged:: 8.0 + All ``kwargs`` are tracked in :attr:`params` so they will be + passed if ``forward`` is called at multiple levels. + """ + # Can only forward to other commands, not direct callbacks. + if not isinstance(cmd, Command): + raise TypeError("Callback is not a command.") + + for param in self.params: + if param not in kwargs: + kwargs[param] = self.params[param] + + return self.invoke(cmd, *args, **kwargs) + + def set_parameter_source(self, name: str, source: ParameterSource) -> None: + """Set the source of a parameter. This indicates the location + from which the value of the parameter was obtained. + + :param name: The name of the parameter. + :param source: A member of :class:`~click.core.ParameterSource`. + """ + self._parameter_source[name] = source + + def get_parameter_source(self, name: str) -> ParameterSource | None: + """Get the source of a parameter. This indicates the location + from which the value of the parameter was obtained. + + This can be useful for determining when a user specified a value + on the command line that is the same as the default value. It + will be :attr:`~click.core.ParameterSource.DEFAULT` only if the + value was actually taken from the default. + + :param name: The name of the parameter. + :rtype: ParameterSource + + .. versionchanged:: 8.0 + Returns ``None`` if the parameter was not provided from any + source. + """ + return self._parameter_source.get(name) + + +class Command: + """Commands are the basic building block of command line interfaces in + Click. A basic command handles command line parsing and might dispatch + more parsing to commands nested below it. + + :param name: the name of the command to use unless a group overrides it. + :param context_settings: an optional dictionary with defaults that are + passed to the context object. + :param callback: the callback to invoke. This is optional. + :param params: the parameters to register with this command. This can + be either :class:`Option` or :class:`Argument` objects. + :param help: the help string to use for this command. + :param epilog: like the help string but it's printed at the end of the + help page after everything else. + :param short_help: the short help to use for this command. This is + shown on the command listing of the parent command. + :param add_help_option: by default each command registers a ``--help`` + option. This can be disabled by this parameter. + :param no_args_is_help: this controls what happens if no arguments are + provided. This option is disabled by default. + If enabled this will add ``--help`` as argument + if no arguments are passed + :param hidden: hide this command from help outputs. + :param deprecated: If ``True`` or non-empty string, issues a message + indicating that the command is deprecated and highlights + its deprecation in --help. The message can be customized + by using a string as the value. + + .. versionchanged:: 8.2 + This is the base class for all commands, not ``BaseCommand``. + ``deprecated`` can be set to a string as well to customize the + deprecation message. + + .. versionchanged:: 8.1 + ``help``, ``epilog``, and ``short_help`` are stored unprocessed, + all formatting is done when outputting help text, not at init, + and is done even if not using the ``@command`` decorator. + + .. versionchanged:: 8.0 + Added a ``repr`` showing the command name. + + .. versionchanged:: 7.1 + Added the ``no_args_is_help`` parameter. + + .. versionchanged:: 2.0 + Added the ``context_settings`` parameter. + """ + + #: The context class to create with :meth:`make_context`. + #: + #: .. versionadded:: 8.0 + context_class: type[Context] = Context + + #: the default for the :attr:`Context.allow_extra_args` flag. + allow_extra_args = False + + #: the default for the :attr:`Context.allow_interspersed_args` flag. + allow_interspersed_args = True + + #: the default for the :attr:`Context.ignore_unknown_options` flag. + ignore_unknown_options = False + + name: str | None + context_settings: cabc.MutableMapping[str, t.Any] + callback: t.Callable[..., t.Any] | None + params: list[Parameter] + help: str | None + epilog: str | None + options_metavar: str | None + short_help: str | None + add_help_option: bool + _help_option: Option | None + no_args_is_help: bool + hidden: bool + deprecated: bool | str + + def __init__( + self, + name: str | None, + context_settings: cabc.MutableMapping[str, t.Any] | None = None, + callback: t.Callable[..., t.Any] | None = None, + params: list[Parameter] | None = None, + help: str | None = None, + epilog: str | None = None, + short_help: str | None = None, + options_metavar: str | None = "[OPTIONS]", + add_help_option: bool = True, + no_args_is_help: bool = False, + hidden: bool = False, + deprecated: bool | str = False, + ) -> None: + #: the name the command thinks it has. Upon registering a command + #: on a :class:`Group` the group will default the command name + #: with this information. You should instead use the + #: :class:`Context`\'s :attr:`~Context.info_name` attribute. + self.name = name + + if context_settings is None: + context_settings = {} + + #: an optional dictionary with defaults passed to the context. + self.context_settings = context_settings + + #: the callback to execute when the command fires. This might be + #: `None` in which case nothing happens. + self.callback = callback + #: the list of parameters for this command in the order they + #: should show up in the help page and execute. Eager parameters + #: will automatically be handled before non eager ones. + self.params = params or [] + self.help = help + self.epilog = epilog + self.options_metavar = options_metavar + self.short_help = short_help + self.add_help_option = add_help_option + self._help_option = None + self.no_args_is_help = no_args_is_help + self.hidden = hidden + self.deprecated = deprecated + + def to_info_dict(self, ctx: Context) -> dict[str, t.Any]: + return { + "name": self.name, + "params": [param.to_info_dict() for param in self.get_params(ctx)], + "help": self.help, + "epilog": self.epilog, + "short_help": self.short_help, + "hidden": self.hidden, + "deprecated": self.deprecated, + } + + def __repr__(self) -> str: + return f"<{self.__class__.__name__} {self.name}>" + + def get_usage(self, ctx: Context) -> str: + """Formats the usage line into a string and returns it. + + Calls :meth:`format_usage` internally. + """ + formatter = ctx.make_formatter() + self.format_usage(ctx, formatter) + return formatter.getvalue().rstrip("\n") + + def get_params(self, ctx: Context) -> list[Parameter]: + params = self.params + help_option = self.get_help_option(ctx) + + if help_option is not None: + params = [*params, help_option] + + if __debug__: + import warnings + + opts = [opt for param in params for opt in param.opts] + opts_counter = Counter(opts) + duplicate_opts = (opt for opt, count in opts_counter.items() if count > 1) + + for duplicate_opt in duplicate_opts: + warnings.warn( + ( + f"The parameter {duplicate_opt} is used more than once. " + "Remove its duplicate as parameters should be unique." + ), + stacklevel=3, + ) + + return params + + def format_usage(self, ctx: Context, formatter: HelpFormatter) -> None: + """Writes the usage line into the formatter. + + This is a low-level method called by :meth:`get_usage`. + """ + pieces = self.collect_usage_pieces(ctx) + formatter.write_usage(ctx.command_path, " ".join(pieces)) + + def collect_usage_pieces(self, ctx: Context) -> list[str]: + """Returns all the pieces that go into the usage line and returns + it as a list of strings. + """ + rv = [self.options_metavar] if self.options_metavar else [] + + for param in self.get_params(ctx): + rv.extend(param.get_usage_pieces(ctx)) + + return rv + + def get_help_option_names(self, ctx: Context) -> list[str]: + """Returns the names for the help option.""" + all_names = set(ctx.help_option_names) + for param in self.params: + all_names.difference_update(param.opts) + all_names.difference_update(param.secondary_opts) + return list(all_names) + + def get_help_option(self, ctx: Context) -> Option | None: + """Returns the help option object. + + Skipped if :attr:`add_help_option` is ``False``. + + .. versionchanged:: 8.1.8 + The help option is now cached to avoid creating it multiple times. + """ + help_option_names = self.get_help_option_names(ctx) + + if not help_option_names or not self.add_help_option: + return None + + # Cache the help option object in private _help_option attribute to + # avoid creating it multiple times. Not doing this will break the + # callback ordering by iter_params_for_processing(), which relies on + # object comparison. + if self._help_option is None: + # Avoid circular import. + from .decorators import help_option + + # Apply help_option decorator and pop resulting option + help_option(*help_option_names)(self) + self._help_option = self.params.pop() # type: ignore[assignment] + + return self._help_option + + def make_parser(self, ctx: Context) -> _OptionParser: + """Creates the underlying option parser for this command.""" + parser = _OptionParser(ctx) + for param in self.get_params(ctx): + param.add_to_parser(parser, ctx) + return parser + + def get_help(self, ctx: Context) -> str: + """Formats the help into a string and returns it. + + Calls :meth:`format_help` internally. + """ + formatter = ctx.make_formatter() + self.format_help(ctx, formatter) + return formatter.getvalue().rstrip("\n") + + def get_short_help_str(self, limit: int = 45) -> str: + """Gets short help for the command or makes it by shortening the + long help string. + """ + if self.short_help: + text = inspect.cleandoc(self.short_help) + elif self.help: + text = make_default_short_help(self.help, limit) + else: + text = "" + + if self.deprecated: + text = f"{_(text)} {_format_deprecated_label(self.deprecated)}" + + return text.strip() + + def format_help(self, ctx: Context, formatter: HelpFormatter) -> None: + """Writes the help into the formatter if it exists. + + This is a low-level method called by :meth:`get_help`. + + This calls the following methods: + + - :meth:`format_usage` + - :meth:`format_help_text` + - :meth:`format_options` + - :meth:`format_epilog` + """ + self.format_usage(ctx, formatter) + self.format_help_text(ctx, formatter) + self.format_options(ctx, formatter) + self.format_epilog(ctx, formatter) + + def format_help_text(self, ctx: Context, formatter: HelpFormatter) -> None: + """Writes the help text to the formatter if it exists.""" + if self.help is not None: + # truncate the help text to the first form feed + text = inspect.cleandoc(self.help).partition("\f")[0] + else: + text = "" + + if self.deprecated: + label = _format_deprecated_label(self.deprecated) + text = f"{_(text)} {label}" if text else label + + if text: + formatter.write_paragraph() + + with formatter.indentation(): + formatter.write_text(text) + + def format_options(self, ctx: Context, formatter: HelpFormatter) -> None: + """Writes all the options into the formatter if they exist.""" + opts = [] + for param in self.get_params(ctx): + rv = param.get_help_record(ctx) + if rv is not None: + opts.append(rv) + + if opts: + with formatter.section(_("Options")): + formatter.write_dl(opts) + + def format_epilog(self, ctx: Context, formatter: HelpFormatter) -> None: + """Writes the epilog into the formatter if it exists.""" + if self.epilog: + epilog = inspect.cleandoc(self.epilog) + formatter.write_paragraph() + + with formatter.indentation(): + formatter.write_text(epilog) + + def make_context( + self, + info_name: str | None, + args: list[str], + parent: Context | None = None, + **extra: t.Any, + ) -> Context: + """This function when given an info name and arguments will kick + off the parsing and create a new :class:`Context`. It does not + invoke the actual command callback though. + + To quickly customize the context class used without overriding + this method, set the :attr:`context_class` attribute. + + :param info_name: the info name for this invocation. Generally this + is the most descriptive name for the script or + command. For the toplevel script it's usually + the name of the script, for commands below it's + the name of the command. + :param args: the arguments to parse as list of strings. + :param parent: the parent context if available. + :param extra: extra keyword arguments forwarded to the context + constructor. + + .. versionchanged:: 8.0 + Added the :attr:`context_class` attribute. + """ + for key, value in self.context_settings.items(): + if key not in extra: + extra[key] = value + + ctx = self.context_class(self, info_name=info_name, parent=parent, **extra) + + with ctx.scope(cleanup=False): + self.parse_args(ctx, args) + return ctx + + def parse_args(self, ctx: Context, args: list[str]) -> list[str]: + if not args and self.no_args_is_help and not ctx.resilient_parsing: + raise NoArgsIsHelpError(ctx) + + parser = self.make_parser(ctx) + opts, args, param_order = parser.parse_args(args=args) + + for param in iter_params_for_processing(param_order, self.get_params(ctx)): + _, args = param.handle_parse_result(ctx, opts, args) + + # We now have all parameters' values into `ctx.params`, but the data may contain + # the `UNSET` sentinel. + # Convert `UNSET` to `None` to ensure that the user doesn't see `UNSET`. + # + # Waiting until after the initial parse to convert allows us to treat `UNSET` + # more like a missing value when multiple params use the same name. + # Refs: + # https://github.com/pallets/click/issues/3071 + # https://github.com/pallets/click/pull/3079 + for name, value in ctx.params.items(): + if value is UNSET: + ctx.params[name] = None + + if args and not ctx.allow_extra_args and not ctx.resilient_parsing: + ctx.fail( + ngettext( + "Got unexpected extra argument ({args})", + "Got unexpected extra arguments ({args})", + len(args), + ).format(args=" ".join(map(str, args))) + ) + + ctx.args = args + ctx._opt_prefixes.update(parser._opt_prefixes) + return args + + def invoke(self, ctx: Context) -> t.Any: + """Given a context, this invokes the attached callback (if it exists) + in the right way. + """ + if self.deprecated: + message = _( + "DeprecationWarning: The command {name!r} is deprecated.{extra_message}" + ).format( + name=self.name, + extra_message=_format_deprecated_suffix(self.deprecated), + ) + echo(style(message, fg="red"), err=True) + + if self.callback is not None: + return ctx.invoke(self.callback, **ctx.params) + + def shell_complete(self, ctx: Context, incomplete: str) -> list[CompletionItem]: + """Return a list of completions for the incomplete value. Looks + at the names of options and chained multi-commands. + + Any command could be part of a chained multi-command, so sibling + commands are valid at any point during command completion. + + :param ctx: Invocation context for this command. + :param incomplete: Value being completed. May be empty. + + .. versionadded:: 8.0 + """ + from click.shell_completion import CompletionItem + + results: list[CompletionItem] = [] + + if incomplete and not incomplete[0].isalnum(): + for param in self.get_params(ctx): + if ( + not isinstance(param, Option) + or param.hidden + or ( + not param.multiple + and ctx.get_parameter_source(param.name) + is ParameterSource.COMMANDLINE + ) + ): + continue + + results.extend( + CompletionItem(name, help=param.help) + for name in [*param.opts, *param.secondary_opts] + if name.startswith(incomplete) + ) + + while ctx.parent is not None: + ctx = ctx.parent + + if isinstance(ctx.command, Group) and ctx.command.chain: + results.extend( + CompletionItem(name, help=command.get_short_help_str()) + for name, command in _complete_visible_commands(ctx, incomplete) + if name not in ctx._protected_args + ) + + return results + + @t.overload + def main( + self, + args: cabc.Sequence[str] | None = None, + prog_name: str | None = None, + complete_var: str | None = None, + standalone_mode: t.Literal[True] = True, + **extra: t.Any, + ) -> t.NoReturn: ... + + @t.overload + def main( + self, + args: cabc.Sequence[str] | None = None, + prog_name: str | None = None, + complete_var: str | None = None, + standalone_mode: bool = ..., + **extra: t.Any, + ) -> t.Any: ... + + def main( + self, + args: cabc.Sequence[str] | None = None, + prog_name: str | None = None, + complete_var: str | None = None, + standalone_mode: bool = True, + windows_expand_args: bool = True, + **extra: t.Any, + ) -> t.Any: + """This is the way to invoke a script with all the bells and + whistles as a command line application. This will always terminate + the application after a call. If this is not wanted, ``SystemExit`` + needs to be caught. + + This method is also available by directly calling the instance of + a :class:`Command`. + + :param args: the arguments that should be used for parsing. If not + provided, ``sys.argv[1:]`` is used. + :param prog_name: the program name that should be used. By default + the program name is constructed by taking the file + name from ``sys.argv[0]``. + :param complete_var: the environment variable that controls the + bash completion support. The default is + ``"__COMPLETE"`` with prog_name in + uppercase. + :param standalone_mode: the default behavior is to invoke the script + in standalone mode. Click will then + handle exceptions and convert them into + error messages and the function will never + return but shut down the interpreter. If + this is set to `False` they will be + propagated to the caller and the return + value of this function is the return value + of :meth:`invoke`. + :param windows_expand_args: Expand glob patterns, user dir, and + env vars in command line args on Windows. + :param extra: extra keyword arguments are forwarded to the context + constructor. See :class:`Context` for more information. + + .. versionchanged:: 8.0.1 + Added the ``windows_expand_args`` parameter to allow + disabling command line arg expansion on Windows. + + .. versionchanged:: 8.0 + When taking arguments from ``sys.argv`` on Windows, glob + patterns, user dir, and env vars are expanded. + + .. versionchanged:: 3.0 + Added the ``standalone_mode`` parameter. + """ + if args is None: + args = sys.argv[1:] + + if os.name == "nt" and windows_expand_args: + args = _expand_args(args) + else: + args = list(args) + + if prog_name is None: + prog_name = _detect_program_name() + + # Process shell completion requests and exit early. + self._main_shell_completion(extra, prog_name, complete_var) + + try: + try: + with self.make_context(prog_name, args, **extra) as ctx: + rv = self.invoke(ctx) + if not standalone_mode: + return rv + # it's not safe to `ctx.exit(rv)` here! + # note that `rv` may actually contain data like "1" which + # has obvious effects + # more subtle case: `rv=[None, None]` can come out of + # chained commands which all returned `None` -- so it's not + # even always obvious that `rv` indicates success/failure + # by its truthiness/falsiness + ctx.exit() + except (EOFError, KeyboardInterrupt) as e: + echo(file=sys.stderr) + raise Abort() from e + except ClickException as e: + if not standalone_mode: + raise + e.show() + sys.exit(e.exit_code) + except OSError as e: + if e.errno == errno.EPIPE: + sys.stdout = t.cast(t.TextIO, PacifyFlushWrapper(sys.stdout)) + sys.stderr = t.cast(t.TextIO, PacifyFlushWrapper(sys.stderr)) + sys.exit(1) + else: + raise + except Exit as e: + if standalone_mode: + sys.exit(e.exit_code) + else: + # in non-standalone mode, return the exit code + # note that this is only reached if `self.invoke` above raises + # an Exit explicitly -- thus bypassing the check there which + # would return its result + # the results of non-standalone execution may therefore be + # somewhat ambiguous: if there are codepaths which lead to + # `ctx.exit(1)` and to `return 1`, the caller won't be able to + # tell the difference between the two + return e.exit_code + except Abort: + if not standalone_mode: + raise + echo(_("Aborted!"), file=sys.stderr) + sys.exit(1) + + def _main_shell_completion( + self, + ctx_args: cabc.MutableMapping[str, t.Any], + prog_name: str, + complete_var: str | None = None, + ) -> None: + """Check if the shell is asking for tab completion, process + that, then exit early. Called from :meth:`main` before the + program is invoked. + + :param prog_name: Name of the executable in the shell. + :param complete_var: Name of the environment variable that holds + the completion instruction. Defaults to + ``_{PROG_NAME}_COMPLETE``. + + .. versionchanged:: 8.2.0 + Dots (``.``) in ``prog_name`` are replaced with underscores (``_``). + """ + if complete_var is None: + complete_name = prog_name.replace("-", "_").replace(".", "_") + complete_var = f"_{complete_name}_COMPLETE".upper() + + instruction = os.environ.get(complete_var) + + if not instruction: + return + + from .shell_completion import shell_complete + + rv = shell_complete(self, ctx_args, prog_name, complete_var, instruction) + sys.exit(rv) + + def __call__(self, *args: t.Any, **kwargs: t.Any) -> t.Any: + """Alias for :meth:`main`.""" + return self.main(*args, **kwargs) + + +class _FakeSubclassCheck(type): + def __subclasscheck__(cls, subclass: type) -> bool: + return issubclass(subclass, cls.__bases__[0]) + + def __instancecheck__(cls, instance: t.Any) -> bool: + return isinstance(instance, cls.__bases__[0]) + + +class _BaseCommand(Command, metaclass=_FakeSubclassCheck): + """ + .. deprecated:: 8.2 + Will be removed in Click 9.0. Use ``Command`` instead. + """ + + +class Group(Command): + """A group is a command that nests other commands (or more groups). + + :param name: The name of the group command. + :param commands: Map names to :class:`Command` objects. Can be a list, which + will use :attr:`Command.name` as the keys. + :param invoke_without_command: Invoke the group's callback even if a + subcommand is not given. + :param no_args_is_help: If no arguments are given, show the group's help and + exit. Defaults to the opposite of ``invoke_without_command``. + :param subcommand_metavar: How to represent the subcommand argument in help. + The default will represent whether ``chain`` is set or not. + :param chain: Allow passing more than one subcommand argument. After parsing + a command's arguments, if any arguments remain another command will be + matched, and so on. + :param result_callback: A function to call after the group's and + subcommand's callbacks. The value returned by the subcommand is passed. + If ``chain`` is enabled, the value will be a list of values returned by + all the commands. If ``invoke_without_command`` is enabled, the value + will be the value returned by the group's callback, or an empty list if + ``chain`` is enabled. + :param kwargs: Other arguments passed to :class:`Command`. + + .. versionchanged:: 8.0 + The ``commands`` argument can be a list of command objects. + + .. versionchanged:: 8.2 + Merged with and replaces the ``MultiCommand`` base class. + """ + + allow_extra_args = True + allow_interspersed_args = False + + #: If set, this is used by the group's :meth:`command` decorator + #: as the default :class:`Command` class. This is useful to make all + #: subcommands use a custom command class. + #: + #: .. versionadded:: 8.0 + command_class: type[Command] | None = None + + #: If set, this is used by the group's :meth:`group` decorator + #: as the default :class:`Group` class. This is useful to make all + #: subgroups use a custom group class. + #: + #: If set to the special value :class:`type` (literally + #: ``group_class = type``), this group's class will be used as the + #: default class. This makes a custom group class continue to make + #: custom groups. + #: + #: .. versionadded:: 8.0 + group_class: type[Group] | type[type] | None = None + # Literal[type] isn't valid, so use Type[type] + + commands: cabc.MutableMapping[str, Command] + invoke_without_command: bool + subcommand_metavar: str + chain: bool + _result_callback: t.Callable[..., t.Any] | None + + def __init__( + self, + name: str | None = None, + commands: cabc.MutableMapping[str, Command] + | cabc.Sequence[Command] + | None = None, + invoke_without_command: bool = False, + no_args_is_help: bool | None = None, + subcommand_metavar: str | None = None, + chain: bool = False, + result_callback: t.Callable[..., t.Any] | None = None, + **kwargs: t.Any, + ) -> None: + super().__init__(name, **kwargs) + + if commands is None: + commands = {} + elif isinstance(commands, abc.Sequence): + commands = {c.name: c for c in commands if c.name is not None} + + #: The registered subcommands by their exported names. + self.commands = commands + + if no_args_is_help is None: + no_args_is_help = not invoke_without_command + + self.no_args_is_help = no_args_is_help + self.invoke_without_command = invoke_without_command + + if subcommand_metavar is None: + # When the group can run without a subcommand, the leading command + # token is optional, so wrap it in brackets to reflect that. + if chain: + if invoke_without_command: + subcommand_metavar = "[COMMAND1] [ARGS]... [COMMAND2 [ARGS]...]..." + else: + subcommand_metavar = "COMMAND1 [ARGS]... [COMMAND2 [ARGS]...]..." + elif invoke_without_command: + subcommand_metavar = "[COMMAND] [ARGS]..." + else: + subcommand_metavar = "COMMAND [ARGS]..." + + self.subcommand_metavar = subcommand_metavar + self.chain = chain + # The result callback that is stored. This can be set or + # overridden with the :func:`result_callback` decorator. + self._result_callback = result_callback + + if self.chain: + for param in self.params: + if isinstance(param, Argument) and not param.required: + raise RuntimeError( + "A group in chain mode cannot have optional arguments." + ) + + def to_info_dict(self, ctx: Context) -> dict[str, t.Any]: + info_dict = super().to_info_dict(ctx) + commands = {} + + for name in self.list_commands(ctx): + command = self.get_command(ctx, name) + + if command is None: + continue + + sub_ctx = ctx._make_sub_context(command) + + with sub_ctx.scope(cleanup=False): + commands[name] = command.to_info_dict(sub_ctx) + + info_dict.update(commands=commands, chain=self.chain) + return info_dict + + def add_command(self, cmd: Command, name: str | None = None) -> None: + """Registers another :class:`Command` with this group. If the name + is not provided, the name of the command is used. + """ + name = name or cmd.name + if name is None: + raise TypeError("Command has no name.") + _check_nested_chain(self, name, cmd, register=True) + self.commands[name] = cmd + + @t.overload + def command(self, __func: t.Callable[..., t.Any]) -> Command: ... + + @t.overload + def command( + self, *args: t.Any, **kwargs: t.Any + ) -> t.Callable[[t.Callable[..., t.Any]], Command]: ... + + def command( + self, *args: t.Any, **kwargs: t.Any + ) -> t.Callable[[t.Callable[..., t.Any]], Command] | Command: + """A shortcut decorator for declaring and attaching a command to + the group. This takes the same arguments as :func:`command` and + immediately registers the created command with this group by + calling :meth:`add_command`. + + To customize the command class used, set the + :attr:`command_class` attribute. + + .. versionchanged:: 8.1 + This decorator can be applied without parentheses. + + .. versionchanged:: 8.0 + Added the :attr:`command_class` attribute. + """ + from .decorators import command + + func: t.Callable[..., t.Any] | None = None + + if args and callable(args[0]): + assert len(args) == 1 and not kwargs, ( + "Use 'command(**kwargs)(callable)' to provide arguments." + ) + (func,) = args + args = () + + if self.command_class and kwargs.get("cls") is None: + kwargs["cls"] = self.command_class + + def decorator(f: t.Callable[..., t.Any]) -> Command: + cmd: Command = command(*args, **kwargs)(f) + self.add_command(cmd) + return cmd + + if func is not None: + return decorator(func) + + return decorator + + @t.overload + def group(self, __func: t.Callable[..., t.Any]) -> Group: ... + + @t.overload + def group( + self, *args: t.Any, **kwargs: t.Any + ) -> t.Callable[[t.Callable[..., t.Any]], Group]: ... + + def group( + self, *args: t.Any, **kwargs: t.Any + ) -> t.Callable[[t.Callable[..., t.Any]], Group] | Group: + """A shortcut decorator for declaring and attaching a group to + the group. This takes the same arguments as :func:`group` and + immediately registers the created group with this group by + calling :meth:`add_command`. + + To customize the group class used, set the :attr:`group_class` + attribute. + + .. versionchanged:: 8.1 + This decorator can be applied without parentheses. + + .. versionchanged:: 8.0 + Added the :attr:`group_class` attribute. + """ + from .decorators import group + + func: t.Callable[..., t.Any] | None = None + + if args and callable(args[0]): + assert len(args) == 1 and not kwargs, ( + "Use 'group(**kwargs)(callable)' to provide arguments." + ) + (func,) = args + args = () + + if self.group_class is not None and kwargs.get("cls") is None: + if self.group_class is type: + kwargs["cls"] = type(self) + else: + kwargs["cls"] = self.group_class + + def decorator(f: t.Callable[..., t.Any]) -> Group: + cmd: Group = group(*args, **kwargs)(f) + self.add_command(cmd) + return cmd + + if func is not None: + return decorator(func) + + return decorator + + def result_callback(self, replace: bool = False) -> t.Callable[[F], F]: + """Adds a result callback to the command. By default if a + result callback is already registered this will chain them but + this can be disabled with the `replace` parameter. The result + callback is invoked with the return value of the subcommand + (or the list of return values from all subcommands if chaining + is enabled) as well as the parameters as they would be passed + to the main callback. + + Example:: + + @click.group() + @click.option('-i', '--input', default=23) + def cli(input): + return 42 + + @cli.result_callback() + def process_result(result, input): + return result + input + + :param replace: if set to `True` an already existing result + callback will be removed. + + .. versionchanged:: 8.0 + Renamed from ``resultcallback``. + + .. versionadded:: 3.0 + """ + + def decorator(f: F) -> F: + old_callback = self._result_callback + + if old_callback is None or replace: + self._result_callback = f + return f + + def function(value: t.Any, /, *args: t.Any, **kwargs: t.Any) -> t.Any: + inner = old_callback(value, *args, **kwargs) + return f(inner, *args, **kwargs) + + self._result_callback = rv = update_wrapper(t.cast(F, function), f) + return rv # type: ignore[return-value] + + return decorator + + def get_command(self, ctx: Context, cmd_name: str) -> Command | None: + """Given a context and a command name, this returns a :class:`Command` + object if it exists or returns ``None``. + """ + return self.commands.get(cmd_name) + + def list_commands(self, ctx: Context) -> list[str]: + """Returns a list of subcommand names in the order they should appear.""" + return sorted(self.commands) + + def collect_usage_pieces(self, ctx: Context) -> list[str]: + rv = super().collect_usage_pieces(ctx) + rv.append(self.subcommand_metavar) + return rv + + def format_options(self, ctx: Context, formatter: HelpFormatter) -> None: + super().format_options(ctx, formatter) + self.format_commands(ctx, formatter) + + def format_commands(self, ctx: Context, formatter: HelpFormatter) -> None: + """Extra format methods for multi methods that adds all the commands + after the options. + """ + commands = [] + for subcommand in self.list_commands(ctx): + cmd = self.get_command(ctx, subcommand) + # What is this, the tool lied about a command. Ignore it + if cmd is None: + continue + if cmd.hidden: + continue + + commands.append((subcommand, cmd)) + + # allow for 3 times the default spacing + if len(commands): + limit = formatter.width - 6 - max(len(cmd[0]) for cmd in commands) + + rows = [] + for subcommand, cmd in commands: + help = cmd.get_short_help_str(limit) + rows.append((subcommand, help)) + + if rows: + with formatter.section(_("Commands")): + formatter.write_dl(rows) + + def parse_args(self, ctx: Context, args: list[str]) -> list[str]: + if not args and self.no_args_is_help and not ctx.resilient_parsing: + raise NoArgsIsHelpError(ctx) + + rest = super().parse_args(ctx, args) + + if self.chain: + ctx._protected_args = rest + ctx.args = [] + elif rest: + ctx._protected_args, ctx.args = rest[:1], rest[1:] + + return ctx.args + + def invoke(self, ctx: Context) -> t.Any: + def _process_result(value: t.Any) -> t.Any: + if self._result_callback is not None: + value = ctx.invoke(self._result_callback, value, **ctx.params) + return value + + if not ctx._protected_args: + if self.invoke_without_command: + # No subcommand was invoked, so the result callback is + # invoked with the group return value for regular + # groups, or an empty list for chained groups. + with ctx: + rv = super().invoke(ctx) + return _process_result([] if self.chain else rv) + ctx.fail(_("Missing command.")) + + # Fetch args back out + args = [*ctx._protected_args, *ctx.args] + ctx.args = [] + ctx._protected_args = [] + + # If we're not in chain mode, we only allow the invocation of a + # single command but we also inform the current context about the + # name of the command to invoke. + if not self.chain: + # Make sure the context is entered so we do not clean up + # resources until the result processor has worked. + with ctx: + cmd_name, cmd, args = self.resolve_command(ctx, args) + assert cmd is not None + ctx.invoked_subcommand = cmd_name + super().invoke(ctx) + sub_ctx = cmd.make_context(cmd_name, args, parent=ctx) + with sub_ctx: + return _process_result(sub_ctx.command.invoke(sub_ctx)) + + # In chain mode we create the contexts step by step, but after the + # base command has been invoked. Because at that point we do not + # know the subcommands yet, the invoked subcommand attribute is + # set to ``*`` to inform the command that subcommands are executed + # but nothing else. + with ctx: + ctx.invoked_subcommand = "*" if args else None + super().invoke(ctx) + + # Otherwise we make every single context and invoke them in a + # chain. In that case the return value to the result processor + # is the list of all invoked subcommand's results. + contexts = [] + while args: + cmd_name, cmd, args = self.resolve_command(ctx, args) + assert cmd is not None + sub_ctx = cmd.make_context( + cmd_name, + args, + parent=ctx, + allow_extra_args=True, + allow_interspersed_args=False, + ) + contexts.append(sub_ctx) + args, sub_ctx.args = sub_ctx.args, [] + + rv = [] + for sub_ctx in contexts: + with sub_ctx: + rv.append(sub_ctx.command.invoke(sub_ctx)) + return _process_result(rv) + + def resolve_command( + self, ctx: Context, args: list[str] + ) -> tuple[str | None, Command | None, list[str]]: + cmd_name = make_str(args[0]) + + # Get the command + cmd = self.get_command(ctx, cmd_name) + + # If we can't find the command but there is a normalization + # function available, we try with that one. + if cmd is None and ctx.token_normalize_func is not None: + cmd_name = ctx.token_normalize_func(cmd_name) + cmd = self.get_command(ctx, cmd_name) + + # If we don't find the command we want to show an error message + # to the user that it was not provided. However, there is + # something else we should do: if the first argument looks like + # an option we want to kick off parsing again for arguments to + # resolve things like --help which now should go to the main + # place. + if cmd is None and not ctx.resilient_parsing: + if _split_opt(cmd_name)[0]: + self.parse_args(ctx, args) + raise NoSuchCommand(cmd_name, possibilities=self.commands, ctx=ctx) + return cmd_name if cmd else None, cmd, args[1:] + + def shell_complete(self, ctx: Context, incomplete: str) -> list[CompletionItem]: + """Return a list of completions for the incomplete value. Looks + at the names of options, subcommands, and chained + multi-commands. + + :param ctx: Invocation context for this command. + :param incomplete: Value being completed. May be empty. + + .. versionadded:: 8.0 + """ + from click.shell_completion import CompletionItem + + results = [ + CompletionItem(name, help=command.get_short_help_str()) + for name, command in _complete_visible_commands(ctx, incomplete) + ] + results.extend(super().shell_complete(ctx, incomplete)) + return results + + +class _MultiCommand(Group, metaclass=_FakeSubclassCheck): + """ + .. deprecated:: 8.2 + Will be removed in Click 9.0. Use ``Group`` instead. + """ + + +class CommandCollection(Group): + """A :class:`Group` that looks up subcommands on other groups. If a command + is not found on this group, each registered source is checked in order. + Parameters on a source are not added to this group, and a source's callback + is not invoked when invoking its commands. In other words, this "flattens" + commands in many groups into this one group. + + :param name: The name of the group command. + :param sources: A list of :class:`Group` objects to look up commands from. + :param kwargs: Other arguments passed to :class:`Group`. + + .. versionchanged:: 8.2 + This is a subclass of ``Group``. Commands are looked up first on this + group, then each of its sources. + """ + + sources: list[Group] + + def __init__( + self, + name: str | None = None, + sources: list[Group] | None = None, + **kwargs: t.Any, + ) -> None: + super().__init__(name, **kwargs) + #: The list of registered groups. + self.sources = sources or [] + + def add_source(self, group: Group) -> None: + """Add a group as a source of commands.""" + self.sources.append(group) + + def get_command(self, ctx: Context, cmd_name: str) -> Command | None: + rv = super().get_command(ctx, cmd_name) + + if rv is not None: + return rv + + for source in self.sources: + rv = source.get_command(ctx, cmd_name) + + if rv is not None: + if self.chain: + _check_nested_chain(self, cmd_name, rv) + + return rv + + return None + + def list_commands(self, ctx: Context) -> list[str]: + rv: set[str] = set(super().list_commands(ctx)) + + for source in self.sources: + rv.update(source.list_commands(ctx)) + + return sorted(rv) + + +def _check_iter(value: cabc.Iterable[V]) -> cabc.Iterator[V]: + """Check if the value is iterable but not a string. Raises a type + error, or return an iterator over the value. + """ + if isinstance(value, str): + raise TypeError + + return iter(value) + + +class Parameter(ABC): + r"""A parameter to a command comes in two versions: they are either + :class:`Option`\s or :class:`Argument`\s. Other subclasses are currently + not supported by design as some of the internals for parsing are + intentionally not finalized. + + Some settings are supported by both options and arguments. + + :param param_decls: the parameter declarations for this option or + argument. This is a list of flags or argument + names. + :param type: the type that should be used. Either a :class:`ParamType` + or a Python type. The latter is converted into the former + automatically if supported. + :param required: controls if this is optional or not. + :param default: the default value if omitted. This can also be a callable, + in which case it's invoked when the default is needed + without any arguments. + :param callback: A function to further process or validate the value + after type conversion. It is called as ``f(ctx, param, value)`` + and must return the value. It is called for all sources, + including prompts. + :param nargs: the number of arguments to match. If not ``1`` the return + value is a tuple instead of single value. The default for + nargs is ``1`` (except if the type is a tuple, then it's + the arity of the tuple). If ``nargs=-1``, all remaining + parameters are collected. + :param metavar: how the value is represented in the help page. + :param expose_value: if this is `True` then the value is passed onwards + to the command callback and stored on the context, + otherwise it's skipped. + :param is_eager: eager values are processed before non eager ones. This + should not be set for arguments or it will inverse the + order of processing. + :param envvar: environment variable(s) that are used to provide a default value for + this parameter. This can be a string or a sequence of strings. If a sequence is + given, only the first non-empty environment variable is used for the parameter. + :param shell_complete: A function that returns custom shell + completions. Used instead of the param's type completion if + given. Takes ``ctx, param, incomplete`` and must return a list + of :class:`~click.shell_completion.CompletionItem` or a list of + strings. + :param deprecated: If ``True`` or non-empty string, issues a message + indicating that the argument is deprecated and highlights + its deprecation in --help. The message can be customized + by using a string as the value. A deprecated parameter + cannot be required, a ValueError will be raised otherwise. + + .. versionchanged:: 8.2.0 + Introduction of ``deprecated``. + + .. versionchanged:: 8.2 + Adding duplicate parameter names to a :class:`~click.core.Command` will + result in a ``UserWarning`` being shown. + + .. versionchanged:: 8.2 + Adding duplicate parameter names to a :class:`~click.core.Command` will + result in a ``UserWarning`` being shown. + + .. versionchanged:: 8.0 + ``process_value`` validates required parameters and bounded + ``nargs``, and invokes the parameter callback before returning + the value. This allows the callback to validate prompts. + ``full_process_value`` is removed. + + .. versionchanged:: 8.0 + ``autocompletion`` is renamed to ``shell_complete`` and has new + semantics described above. The old name is deprecated and will + be removed in 8.1, until then it will be wrapped to match the + new requirements. + + .. versionchanged:: 8.0 + For ``multiple=True, nargs>1``, the default must be a list of + tuples. + + .. versionchanged:: 8.0 + Setting a default is no longer required for ``nargs>1``, it will + default to ``None``. ``multiple=True`` or ``nargs=-1`` will + default to ``()``. + + .. versionchanged:: 7.1 + Empty environment variables are ignored rather than taking the + empty string value. This makes it possible for scripts to clear + variables if they can't unset them. + + .. versionchanged:: 2.0 + Changed signature for parameter callback to also be passed the + parameter. The old callback format will still work, but it will + raise a warning to give you a chance to migrate the code easier. + """ + + param_type_name = "parameter" + + name: str + opts: list[str] + secondary_opts: list[str] + # `Parameter.type` is annotated in `__init__` to avoid confusing mypy + required: bool + callback: t.Callable[[Context, Parameter, t.Any], t.Any] | None + nargs: int + multiple: bool + expose_value: bool + default: t.Any | t.Callable[[], t.Any] | None + _default_explicit: bool + is_eager: bool + metavar: str | None + envvar: str | cabc.Sequence[str] | None + _custom_shell_complete: ( + t.Callable[[Context, Parameter, str], list[CompletionItem] | list[str]] | None + ) + deprecated: bool | str + + def __init__( + self, + param_decls: cabc.Sequence[str] | None = None, + type: types.ParamType[t.Any] | t.Any | None = None, + required: bool = False, + # XXX The default historically embed two concepts: + # - the declaration of a Parameter object carrying the default (handy to + # arbitrage the default value of coupled Parameters sharing the same + # self.name, like flag options), + # - and the actual value of the default. + # It is confusing and is the source of many issues discussed in: + # https://github.com/pallets/click/pull/3030 + # In the future, we might think of splitting it in two, not unlike + # Option.is_flag and Option.flag_value: we could have something like + # Parameter.is_default and Parameter.default_value. + default: t.Any | t.Callable[[], t.Any] | None = UNSET, + callback: t.Callable[[Context, Parameter, t.Any], t.Any] | None = None, + nargs: int | None = None, + multiple: bool = False, + metavar: str | None = None, + expose_value: bool = True, + is_eager: bool = False, + envvar: str | cabc.Sequence[str] | None = None, + shell_complete: t.Callable[ + [Context, Parameter, str], list[CompletionItem] | list[str] + ] + | None = None, + deprecated: bool | str = False, + ) -> None: + self.name, self.opts, self.secondary_opts = self._parse_decls( + param_decls or (), expose_value + ) + self.type: types.ParamType[t.Any] = types.convert_type(type, default) + + # Default nargs to what the type tells us if we have that + # information available. + if nargs is None: + if self.type.is_composite: + nargs = self.type.arity + else: + nargs = 1 + + self.required = required + self.callback = callback + self.nargs = nargs + self.multiple = multiple + self.expose_value = expose_value + self.default = default + # Whether the user passed ``default`` explicitly to the constructor. + # Captured before any auto-derived default (like ``False`` for boolean + # flags in :class:`Option`) replaces the :data:`UNSET` sentinel, so it + # remains ``False`` when the default was inferred rather than chosen. + # Refs: https://github.com/pallets/click/issues/3403 + self._default_explicit = default is not UNSET + self.is_eager = is_eager + self.metavar = metavar + self.envvar = envvar + self._custom_shell_complete = shell_complete + self.deprecated = deprecated + + if __debug__: + if self.type.is_composite and nargs != self.type.arity: + raise ValueError( + f"'nargs' must be {self.type.arity} (or None) for" + f" type {self.type!r}, but it was {nargs}." + ) + + if required and deprecated: + raise ValueError( + f"The {self.param_type_name} '{self.human_readable_name}' " + "is deprecated and still required. A deprecated " + f"{self.param_type_name} cannot be required." + ) + + def to_info_dict(self) -> dict[str, t.Any]: + """Gather information that could be useful for a tool generating + user-facing documentation. + + Use :meth:`click.Context.to_info_dict` to traverse the entire + CLI structure. + + .. versionchanged:: 8.3.0 + Returns ``None`` for the :attr:`default` if it was not set. + + .. versionadded:: 8.0 + """ + return { + "name": self.name, + "param_type_name": self.param_type_name, + "opts": self.opts, + "secondary_opts": self.secondary_opts, + "type": self.type.to_info_dict(), + "required": self.required, + "nargs": self.nargs, + "multiple": self.multiple, + # We explicitly hide the :attr:`UNSET` value to the user, as we choose to + # make it an implementation detail. And because ``to_info_dict`` has been + # designed for documentation purposes, we return ``None`` instead. + "default": self.default if self.default is not UNSET else None, + "envvar": self.envvar, + } + + def __repr__(self) -> str: + return f"<{self.__class__.__name__} {self.name}>" + + @abstractmethod + def _parse_decls( + self, decls: cabc.Sequence[str], expose_value: bool + ) -> tuple[str, list[str], list[str]]: ... + + @property + def human_readable_name(self) -> str: + """Returns the human readable name of this parameter. This is the + same as the name for options, but the metavar for arguments. + """ + return self.name + + def make_metavar(self, ctx: Context) -> str: + if self.metavar is not None: + return self.metavar + + metavar = self.type.get_metavar(param=self, ctx=ctx) + + if metavar is None: + metavar = self.type.name.upper() + + if self.nargs != 1: + metavar += "..." + + return metavar + + @t.overload + def get_default( + self, ctx: Context, call: t.Literal[True] = True + ) -> t.Any | None: ... + + @t.overload + def get_default( + self, ctx: Context, call: bool = ... + ) -> t.Any | t.Callable[[], t.Any] | None: ... + + def get_default( + self, ctx: Context, call: bool = True + ) -> t.Any | t.Callable[[], t.Any] | None: + """Get the default for the parameter. Tries + :meth:`Context.lookup_default` first, then the local default. + + :param ctx: Current context. + :param call: If the default is a callable, call it. Disable to + return the callable instead. + + .. versionchanged:: 8.0.2 + Type casting is no longer performed when getting a default. + + .. versionchanged:: 8.0.1 + Type casting can fail in resilient parsing mode. Invalid + defaults will not prevent showing help text. + + .. versionchanged:: 8.0 + Looks at ``ctx.default_map`` first. + + .. versionchanged:: 8.0 + Added the ``call`` parameter. + """ + value = ctx.lookup_default(self.name, call=False) + + if value is None and not ctx._default_map_has(self.name): + value = self.default + + if call and callable(value): + value = value() + + return value + + @abstractmethod + def add_to_parser(self, parser: _OptionParser, ctx: Context) -> None: ... + + def consume_value( + self, ctx: Context, opts: cabc.Mapping[str, t.Any] + ) -> tuple[t.Any, ParameterSource]: + """Returns the parameter value produced by the parser. + + If the parser did not produce a value from user input, the value is either + sourced from the environment variable, the default map, or the parameter's + default value. In that order of precedence. + + If no value is found, an internal sentinel value is returned. + + :meta private: + """ + # Collect from the parse the value passed by the user to the CLI. + value = opts.get(self.name, UNSET) + # If the value is set, it means it was sourced from the command line by the + # parser, otherwise it left unset by default. + source = ( + ParameterSource.COMMANDLINE + if value is not UNSET + else ParameterSource.DEFAULT + ) + + if value is UNSET: + envvar_value = self.value_from_envvar(ctx) + if envvar_value is not None: + value = envvar_value + source = ParameterSource.ENVIRONMENT + + if value is UNSET: + default_map_value = ctx.lookup_default(self.name) + if default_map_value is not None or ctx._default_map_has(self.name): + value = default_map_value + source = ParameterSource.DEFAULT_MAP + + # A string from default_map must be split for multi-value + # parameters, matching value_from_envvar behavior. + if isinstance(value, str) and self.nargs != 1: + value = self.type.split_envvar_value(value) + + if value is UNSET: + default_value = self.get_default(ctx) + if default_value is not UNSET: + value = default_value + source = ParameterSource.DEFAULT + + return value, source + + def type_cast_value(self, ctx: Context, value: t.Any) -> t.Any: + """Convert and validate a value against the parameter's + :attr:`type`, :attr:`multiple`, and :attr:`nargs`. + """ + if value is None: + if self.multiple or self.nargs == -1: + return () + else: + return value + + def check_iter(value: t.Any) -> cabc.Iterator[t.Any]: + try: + return _check_iter(value) + except TypeError: + # This should only happen when passing in args manually, + # the parser should construct an iterable when parsing + # the command line. + raise BadParameter( + _("Value must be an iterable."), ctx=ctx, param=self + ) from None + + # Define the conversion function based on nargs and type. + + if self.nargs == 1 or self.type.is_composite: + + def convert(value: t.Any) -> t.Any: + return self.type(value, param=self, ctx=ctx) + + elif self.nargs == -1: + + def convert(value: t.Any) -> t.Any: # tuple[t.Any, ...] + return tuple(self.type(x, self, ctx) for x in check_iter(value)) + + else: # nargs > 1 + + def convert(value: t.Any) -> t.Any: # tuple[t.Any, ...] + value = tuple(check_iter(value)) + + if len(value) != self.nargs: + raise BadParameter( + ngettext( + "Takes {nargs} values but 1 was given.", + "Takes {nargs} values but {len} were given.", + len(value), + ).format(nargs=self.nargs, len=len(value)), + ctx=ctx, + param=self, + ) + + return tuple(self.type(x, self, ctx) for x in value) + + if self.multiple: + return tuple(convert(x) for x in check_iter(value)) + + return convert(value) + + def value_is_missing(self, value: t.Any) -> bool: + """A value is considered missing if: + + - it is :attr:`UNSET`, + - or if it is an empty sequence while the parameter is suppose to have + non-single value (i.e. :attr:`nargs` is not ``1`` or :attr:`multiple` is + set). + + :meta private: + """ + if value is UNSET: + return True + + if (self.nargs != 1 or self.multiple) and value == (): + return True + + return False + + def process_value(self, ctx: Context, value: t.Any) -> t.Any: + """Process the value of this parameter: + + 1. Type cast the value using :meth:`type_cast_value`. + 2. Check if the value is missing (see: :meth:`value_is_missing`), and raise + :exc:`MissingParameter` if it is required. + 3. If a :attr:`callback` is set, call it to have the value replaced by the + result of the callback. If the value was not set, the callback receive + ``None``. This keep the legacy behavior as it was before the introduction of + the :attr:`UNSET` sentinel. + + :meta private: + """ + # shelter `type_cast_value` from ever seeing an `UNSET` value by handling the + # cases in which `UNSET` gets special treatment explicitly at this layer + # + # Refs: + # https://github.com/pallets/click/issues/3069 + if value is UNSET: + if self.multiple or self.nargs == -1: + value = () + else: + value = self.type_cast_value(ctx, value) + + if self.required and self.value_is_missing(value): + raise MissingParameter(ctx=ctx, param=self) + + if self.callback is not None: + # Legacy case: UNSET is not exposed directly to the callback, but converted + # to None. + if value is UNSET: + value = None + + # Search for parameters with UNSET values in the context. + unset_keys = {k: None for k, v in ctx.params.items() if v is UNSET} + # No UNSET values, call the callback as usual. + if not unset_keys: + value = self.callback(ctx, self, value) + + # Legacy case: provide a temporarily manipulated context to the callback + # to hide UNSET values as None. + # + # Refs: + # https://github.com/pallets/click/issues/3136 + # https://github.com/pallets/click/pull/3137 + else: + # Add another layer to the context stack to clearly hint that the + # context is temporarily modified. + with ctx: + # Update the context parameters to replace UNSET with None. + ctx.params.update(unset_keys) + # Feed these fake context parameters to the callback. + value = self.callback(ctx, self, value) + # Restore the UNSET values in the context parameters. + ctx.params.update( + { + k: UNSET + for k in unset_keys + # Only restore keys that are present and still None, in case + # the callback modified other parameters. + if k in ctx.params and ctx.params[k] is None + } + ) + + return value + + def resolve_envvar_value(self, ctx: Context) -> str | None: + """Returns the value found in the environment variable(s) attached to this + parameter. + + Environment variables values are `always returned as strings + `_. + + This method returns ``None`` if: + + - the :attr:`envvar` property is not set on the :class:`Parameter`, + - the environment variable is not found in the environment, + - the variable is found in the environment but its value is empty (i.e. the + environment variable is present but has an empty string). + + If :attr:`envvar` is setup with multiple environment variables, + then only the first non-empty value is returned. + + .. caution:: + + The raw value extracted from the environment is not normalized and is + returned as-is. Any normalization or reconciliation is performed later by + the :class:`Parameter`'s :attr:`type`. + + :meta private: + """ + if not self.envvar: + return None + + if isinstance(self.envvar, str): + rv = os.environ.get(self.envvar) + + if rv: + return rv + else: + for envvar in self.envvar: + rv = os.environ.get(envvar) + + # Return the first non-empty value of the list of environment variables. + if rv: + return rv + # Else, absence of value is interpreted as an environment variable that + # is not set, so proceed to the next one. + + return None + + def value_from_envvar(self, ctx: Context) -> str | cabc.Sequence[str] | None: + """Process the raw environment variable string for this parameter. + + Returns the string as-is or splits it into a sequence of strings if the + parameter is expecting multiple values (i.e. its :attr:`nargs` property is set + to a value other than ``1``). + + :meta private: + """ + rv = self.resolve_envvar_value(ctx) + + if rv is not None and self.nargs != 1: + return self.type.split_envvar_value(rv) + + return rv + + def handle_parse_result( + self, ctx: Context, opts: cabc.Mapping[str, t.Any], args: list[str] + ) -> tuple[t.Any, list[str]]: + """Process the value produced by the parser from user input. + + Always process the value through the Parameter's :attr:`type`, wherever it + comes from. + + If the parameter is deprecated, this method warn the user about it. But only if + the value has been explicitly set by the user (and as such, is not coming from + a default). + + :meta private: + """ + # Capture the slot's existing state before we mutate + # ``_parameter_source`` so the write decision below can compare our + # incoming source against the source of the option that already wrote + # the slot (if any). + existing_value = ctx.params.get(self.name, UNSET) + existing_source = ctx.get_parameter_source(self.name) + existing_default_explicit = ctx._param_default_explicit.get(self.name, False) + + with augment_usage_errors(ctx, param=self): + value, source = self.consume_value(ctx, opts) + + # Record the source before processing so eager callbacks and type + # conversion can inspect it. Restored after arbitration if this + # option loses a feature-switch group. + ctx.set_parameter_source(self.name, source) + + # Display a deprecation warning if necessary. + if ( + self.deprecated + and value is not UNSET + and source < ParameterSource.DEFAULT_MAP + ): + message = _( + "DeprecationWarning: The {param_type} {name!r} is deprecated." + "{extra_message}" + ).format( + param_type=self.param_type_name, + name=self.human_readable_name, + extra_message=_format_deprecated_suffix(self.deprecated), + ) + echo(style(message, fg="red"), err=True) + + # Process the value through the parameter's type. + try: + value = self.process_value(ctx, value) + except Exception: + if not ctx.resilient_parsing: + raise + # In resilient parsing mode, we do not want to fail the command if the + # value is incompatible with the parameter type, so we reset the value + # to UNSET, which will be interpreted as a missing value. + value = UNSET + + # Arbitrate the slot when several parameters target the same variable + # name (feature-switch groups). See: https://github.com/pallets/click/issues/3403 + slot_empty = existing_value is UNSET + more_explicit = existing_source is not None and source < existing_source + same_source = existing_source is not None and source == existing_source + auto_would_downgrade_explicit = ( + same_source + and source == ParameterSource.DEFAULT + and existing_default_explicit + and not self._default_explicit + ) + is_winner = ( + slot_empty + or more_explicit + or (same_source and not auto_would_downgrade_explicit) + ) + + if is_winner: + if self.expose_value: + ctx.params[self.name] = value + ctx._param_default_explicit[self.name] = self._default_explicit + elif existing_source is not None: + # Lost arbitration; restore the winning option's source. + ctx.set_parameter_source(self.name, existing_source) + # else: ctx.params[self.name] was populated by code that bypassed + # handle_parse_result (from another option's callback for example). Keep + # the provisional source recorded before process_value so downstream + # lookups don't return ``None``. + + return value, args + + def get_help_record(self, ctx: Context) -> tuple[str, str] | None: + return None + + def get_usage_pieces(self, ctx: Context) -> list[str]: + return [] + + def get_error_hint(self, ctx: Context | None) -> str: + """Get a stringified version of the param for use in error messages to + indicate which param caused the error. + + .. versionchanged:: 8.4.0 + ``ctx`` can be ``None``. + """ + hint_list = self.opts or [self.human_readable_name] + return " / ".join(f"'{x}'" for x in hint_list) + + def shell_complete(self, ctx: Context, incomplete: str) -> list[CompletionItem]: + """Return a list of completions for the incomplete value. If a + ``shell_complete`` function was given during init, it is used. + Otherwise, the :attr:`type` + :meth:`~click.types.ParamType[t.Any].shell_complete` function is used. + + :param ctx: Invocation context for this command. + :param incomplete: Value being completed. May be empty. + + .. versionadded:: 8.0 + """ + if self._custom_shell_complete is not None: + results = self._custom_shell_complete(ctx, self, incomplete) + + if results and isinstance(results[0], str): + from click.shell_completion import CompletionItem + + results = [CompletionItem(c) for c in results] + + return t.cast("list[CompletionItem]", results) + + return self.type.shell_complete(ctx, self, incomplete) + + +class Option(Parameter): + """Options are usually optional values on the command line and + have some extra features that arguments don't have. + + All other parameters are passed onwards to the parameter constructor. + + :param show_default: Show the default value for this option in its + help text. Values are not shown by default, unless + :attr:`Context.show_default` is ``True``. If this value is a + string, it shows that string in parentheses instead of the + actual value. This is particularly useful for dynamic options. + For single option boolean flags, the default remains hidden if + its value is ``False``. + :param show_envvar: Controls if an environment variable should be + shown on the help page and error messages. + Normally, environment variables are not shown. + :param prompt: If set to ``True`` or a non empty string then the + user will be prompted for input. If set to ``True`` the prompt + will be the option name capitalized. A deprecated option cannot be + prompted. + :param confirmation_prompt: Prompt a second time to confirm the + value if it was prompted for. Can be set to a string instead of + ``True`` to customize the message. + :param prompt_required: If set to ``False``, the user will be + prompted for input only when the option was specified as a flag + without a value. + :param hide_input: If this is ``True`` then the input on the prompt + will be hidden from the user. This is useful for password input. + :param is_flag: forces this option to act as a flag. The default is + auto detection. + :param flag_value: which value should be used for this flag if it's + enabled. This is set to a boolean automatically if + the option string contains a slash to mark two options. + :param multiple: if this is set to `True` then the argument is accepted + multiple times and recorded. This is similar to ``nargs`` + in how it works but supports arbitrary number of + arguments. + :param count: this flag makes an option increment an integer. + :param allow_from_autoenv: if this is enabled then the value of this + parameter will be pulled from an environment + variable in case a prefix is defined on the + context. + :param help: the help string. + :param hidden: hide this option from help outputs. + :param attrs: Other command arguments described in :class:`Parameter`. + + .. versionchanged:: 8.4.0 + Non-basic ``flag_value`` types (not ``str``, ``int``, ``float``, or + ``bool``) are passed through unchanged instead of being stringified. + Previously, ``type=click.UNPROCESSED`` was required to preserve them. + + .. versionchanged:: 8.2 + ``envvar`` used with ``flag_value`` will always use the ``flag_value``, + previously it would use the value of the environment variable. + + .. versionchanged:: 8.1 + Help text indentation is cleaned here instead of only in the + ``@option`` decorator. + + .. versionchanged:: 8.1 + The ``show_default`` parameter overrides + ``Context.show_default``. + + .. versionchanged:: 8.1 + The default of a single option boolean flag is not shown if the + default value is ``False``. + + .. versionchanged:: 8.0.1 + ``type`` is detected from ``flag_value`` if given, for basic Python + types (``str``, ``int``, ``float``, ``bool``). + """ + + param_type_name = "option" + + prompt: str | None + confirmation_prompt: bool | str + prompt_required: bool + hide_input: bool + hidden: bool + + _flag_needs_value: bool + is_flag: bool + is_bool_flag: bool + flag_value: t.Any + + count: bool + allow_from_autoenv: bool + help: str | None + show_default: bool | str | None + show_choices: bool + show_envvar: bool + + def __init__( + self, + param_decls: cabc.Sequence[str] | None = None, + show_default: bool | str | None = None, + prompt: bool | str = False, + confirmation_prompt: bool | str = False, + prompt_required: bool = True, + hide_input: bool = False, + is_flag: bool | None = None, + flag_value: t.Any = UNSET, + multiple: bool = False, + count: bool = False, + allow_from_autoenv: bool = True, + type: types.ParamType[t.Any] | t.Any | None = None, + help: str | None = None, + hidden: bool = False, + show_choices: bool = True, + show_envvar: bool = False, + deprecated: bool | str = False, + **attrs: t.Any, + ) -> None: + if help: + help = inspect.cleandoc(help) + + super().__init__( + param_decls, type=type, multiple=multiple, deprecated=deprecated, **attrs + ) + + if prompt is True: + if not self.name: + raise TypeError("'name' is required with 'prompt=True'.") + + prompt_text = self.name.replace("_", " ").capitalize() + elif prompt is False: + prompt_text = None + else: + prompt_text = prompt + + if deprecated: + label = _format_deprecated_label(deprecated) + help = f"{help} {label}" if help else label + + self.prompt = prompt_text + self.confirmation_prompt = confirmation_prompt + self.prompt_required = prompt_required + self.hide_input = hide_input + self.hidden = hidden + + # The _flag_needs_value property tells the parser that this option is a flag + # that cannot be used standalone and needs a value. With this information, the + # parser can determine whether to consider the next user-provided argument in + # the CLI as a value for this flag or as a new option. + # If prompt is enabled but not required, then it opens the possibility for the + # option to gets its value from the user. + self._flag_needs_value = self.prompt is not None and not self.prompt_required + + # Auto-detect if this is a flag or not. + if is_flag is None: + # Implicitly a flag because flag_value was set. + if flag_value is not UNSET: + is_flag = True + # Not a flag, but when used as a flag it shows a prompt. + elif self._flag_needs_value: + is_flag = False + # Implicitly a flag because secondary options names were given. + elif self.secondary_opts: + is_flag = True + + # The option is explicitly not a flag, but to determine whether or not it needs + # value, we need to check if `flag_value` or `default` was set. Either one is + # sufficient. + # Ref: https://github.com/pallets/click/issues/3084 + elif is_flag is False and not self._flag_needs_value: + self._flag_needs_value = flag_value is not UNSET or self.default is UNSET + + if is_flag: + # Set missing default for flags if not explicitly required or prompted. + if self.default is UNSET and not self.required and not self.prompt: + if multiple: + self.default = () + + # Auto-detect the type of the flag based on the flag_value. + if type is None: + # A flag without a flag_value is a boolean flag. + if flag_value is UNSET: + self.type: types.ParamType[t.Any] = types.BoolParamType() + # If the flag value is a boolean, use BoolParamType. + elif isinstance(flag_value, bool): + self.type = types.BoolParamType() + # Otherwise, guess the type from the flag value. + else: + guessed = types.convert_type(None, flag_value) + if ( + isinstance(guessed, types.StringParamType) + and not isinstance(flag_value, str) + and flag_value is not None + ): + # The flag_value type couldn't be auto-detected + # (not str, int, float, or bool). Since flag_value + # is a programmer-provided Python object, not CLI + # input, pass it through unchanged instead of + # stringifying it. + self.type = types.UNPROCESSED + else: + self.type = guessed + + self.is_flag = bool(is_flag) + self.is_bool_flag = self.is_flag and isinstance(self.type, types.BoolParamType) + self.flag_value = flag_value + + # Set boolean flag default to False if unset and not required. + if self.is_bool_flag: + if self.default is UNSET and not self.required: + self.default = False + + # The alignment of default to the flag_value is resolved lazily in + # get_default() to prevent callable flag_values (like classes) from + # being instantiated. Refs: + # https://github.com/pallets/click/issues/3121 + # https://github.com/pallets/click/issues/3024#issuecomment-3146199461 + # https://github.com/pallets/click/pull/3030/commits/06847da + + # Set the default flag_value if it is not set. + if self.flag_value is UNSET: + if self.is_flag: + self.flag_value = True + else: + self.flag_value = None + + # Counting. + self.count = count + if count: + if type is None: + self.type = types.IntRange(min=0) + if self.default is UNSET: + self.default = 0 + + self.allow_from_autoenv = allow_from_autoenv + self.help = help + self.show_default = show_default + self.show_choices = show_choices + self.show_envvar = show_envvar + + if __debug__: + if deprecated and prompt: + raise ValueError("`deprecated` options cannot use `prompt`.") + + if self.nargs == -1: + raise TypeError("nargs=-1 is not supported for options.") + + if not self.is_bool_flag and self.secondary_opts: + raise TypeError("Secondary flag is not valid for non-boolean flag.") + + if self.is_bool_flag and self.hide_input and self.prompt is not None: + raise TypeError( + "'prompt' with 'hide_input' is not valid for boolean flag." + ) + + if self.count: + if self.multiple: + raise TypeError("'count' is not valid with 'multiple'.") + + if self.is_flag: + raise TypeError("'count' is not valid with 'is_flag'.") + + def to_info_dict(self) -> dict[str, t.Any]: + """ + .. versionchanged:: 8.3.0 + Returns ``None`` for the :attr:`flag_value` if it was not set. + """ + info_dict = super().to_info_dict() + info_dict.update( + help=self.help, + prompt=self.prompt, + is_flag=self.is_flag, + # We explicitly hide the :attr:`UNSET` value to the user, as we choose to + # make it an implementation detail. And because ``to_info_dict`` has been + # designed for documentation purposes, we return ``None`` instead. + flag_value=self.flag_value if self.flag_value is not UNSET else None, + count=self.count, + hidden=self.hidden, + ) + return info_dict + + def get_default( + self, ctx: Context, call: bool = True + ) -> t.Any | t.Callable[[], t.Any] | None: + """Return the default value for this option. + + For non-boolean flag options, ``default=True`` is treated as a sentinel + meaning "activate this flag by default" and is resolved to + :attr:`flag_value`. For example, with ``--upper/--lower`` feature + switches where ``flag_value="upper"`` and ``default=True``, the default + resolves to ``"upper"``. + + .. caution:: + This substitution only applies to non-boolean flags + (:attr:`is_bool_flag` is ``False``). For boolean flags, ``True`` is + a legitimate Python value and ``default=True`` is returned as-is. + + .. versionchanged:: 8.3.3 + ``default=True`` is no longer substituted with ``flag_value`` for + boolean flags, fixing negative boolean flags like + ``flag_value=False, default=True``. + """ + value = super().get_default(ctx, call=False) + + # Resolve default=True to flag_value lazily (here instead of + # __init__) to prevent callable flag_values (like classes) from + # being instantiated by the callable check below. + if value is True and self.is_flag and not self.is_bool_flag: + value = self.flag_value + elif call and callable(value): + value = value() + + return value + + def get_error_hint(self, ctx: Context | None) -> str: + result = super().get_error_hint(ctx) + if self.show_envvar and self.envvar is not None: + result += f" (env var: '{self.envvar}')" + return result + + def _parse_decls( + self, decls: cabc.Sequence[str], expose_value: bool + ) -> tuple[str, list[str], list[str]]: + opts = [] + secondary_opts = [] + name = None + possible_names = [] + + for decl in decls: + if decl.isidentifier(): + if name is not None: + raise TypeError(_("Name '{name}' defined twice").format(name=name)) + name = decl + else: + split_char = ";" if decl[:1] == "/" else "/" + if split_char in decl: + first, second = decl.split(split_char, 1) + first = first.rstrip() + if first: + possible_names.append(_split_opt(first)) + opts.append(first) + second = second.lstrip() + if second: + secondary_opts.append(second.lstrip()) + if first == second: + raise ValueError( + _( + "Boolean option {decl!r} cannot use the" + " same flag for true/false." + ).format(decl=decl) + ) + else: + possible_names.append(_split_opt(decl)) + opts.append(decl) + + if name is None and possible_names: + possible_names.sort(key=lambda x: -len(x[0])) # group long options first + name = possible_names[0][1].replace("-", "_").lower() + if not name.isidentifier(): + name = None + + if name is None: + if not expose_value: + return "", opts, secondary_opts + raise TypeError( + _( + "Could not determine name for option with declarations {decls!r}" + ).format(decls=decls) + ) + + if not opts and not secondary_opts: + raise TypeError( + _( + "No options defined but a name was passed ({name})." + " Did you mean to declare an argument instead? Did" + " you mean to pass '--{name}'?" + ).format(name=name) + ) + + return name, opts, secondary_opts + + def add_to_parser(self, parser: _OptionParser, ctx: Context) -> None: + if self.multiple: + action = "append" + elif self.count: + action = "count" + else: + action = "store" + + if self.is_flag: + action = f"{action}_const" + + if self.is_bool_flag and self.secondary_opts: + parser.add_option( + obj=self, opts=self.opts, dest=self.name, action=action, const=True + ) + parser.add_option( + obj=self, + opts=self.secondary_opts, + dest=self.name, + action=action, + const=False, + ) + else: + parser.add_option( + obj=self, + opts=self.opts, + dest=self.name, + action=action, + const=self.flag_value, + ) + else: + parser.add_option( + obj=self, + opts=self.opts, + dest=self.name, + action=action, + nargs=self.nargs, + ) + + def get_help_record(self, ctx: Context) -> tuple[str, str] | None: + if self.hidden: + return None + + any_prefix_is_slash = False + + def _write_opts(opts: cabc.Sequence[str]) -> str: + nonlocal any_prefix_is_slash + + rv, any_slashes = join_options(opts) + + if any_slashes: + any_prefix_is_slash = True + + if not self.is_flag and not self.count: + rv += f" {self.make_metavar(ctx=ctx)}" + + return rv + + rv = [_write_opts(self.opts)] + + if self.secondary_opts: + rv.append(_write_opts(self.secondary_opts)) + + help = self.help or "" + + extra = self.get_help_extra(ctx) + extra_items = [] + if "envvars" in extra: + extra_items.append( + _("env var: {var}").format(var=", ".join(extra["envvars"])) + ) + if "default" in extra: + extra_items.append(_("default: {default}").format(default=extra["default"])) + if "range" in extra: + extra_items.append(extra["range"]) + if "required" in extra: + extra_items.append(_(extra["required"])) + + if extra_items: + extra_str = "; ".join(extra_items) + help = f"{help} [{extra_str}]" if help else f"[{extra_str}]" + + return ("; " if any_prefix_is_slash else " / ").join(rv), help + + def get_help_extra(self, ctx: Context) -> types.OptionHelpExtra: + extra: types.OptionHelpExtra = {} + + if self.show_envvar: + envvar = self.envvar + + if envvar is None: + if ( + self.allow_from_autoenv + and ctx.auto_envvar_prefix is not None + and self.name + ): + envvar = f"{ctx.auto_envvar_prefix}_{self.name.upper()}" + + if envvar is not None: + if isinstance(envvar, str): + extra["envvars"] = (envvar,) + else: + extra["envvars"] = tuple(str(d) for d in envvar) + + # Temporarily enable resilient parsing to avoid type casting + # failing for the default. Might be possible to extend this to + # help formatting in general. + resilient = ctx.resilient_parsing + ctx.resilient_parsing = True + + try: + default_value = self.get_default(ctx, call=False) + finally: + ctx.resilient_parsing = resilient + + show_default = False + show_default_is_str = False + + if self.show_default is not None: + if isinstance(self.show_default, str): + show_default_is_str = show_default = True + else: + show_default = self.show_default + elif ctx.show_default is not None: + show_default = ctx.show_default + + if show_default_is_str or ( + show_default and (default_value not in (None, UNSET)) + ): + if show_default_is_str: + default_string = f"({self.show_default})" + elif isinstance(default_value, (list, tuple)): + default_string = ", ".join(str(d) for d in default_value) + elif isinstance(default_value, enum.Enum): + default_string = default_value.name + elif inspect.isfunction(default_value): + default_string = _("(dynamic)") + elif self.is_bool_flag and self.secondary_opts: + # For boolean flags that have distinct True/False opts, + # use the opt without prefix instead of the value. + default_string = _split_opt( + (self.opts if default_value else self.secondary_opts)[0] + )[1] + elif self.is_bool_flag and not self.secondary_opts and not default_value: + default_string = "" + elif isinstance(default_value, str) and default_value == "": + default_string = '""' + else: + default_string = str(default_value) + + if default_string: + extra["default"] = default_string + + if ( + isinstance(self.type, types._NumberRangeBase) + # skip count with default range type + and not (self.count and self.type.min == 0 and self.type.max is None) + ): + range_str = self.type._describe_range() + + if range_str: + extra["range"] = range_str + + if self.required: + extra["required"] = "required" + + return extra + + def prompt_for_value(self, ctx: Context) -> t.Any: + """This is an alternative flow that can be activated in the full + value processing if a value does not exist. It will prompt the + user until a valid value exists and then returns the processed + value as result. + """ + assert self.prompt is not None + + # Calculate the default before prompting anything to lock in the value before + # attempting any user interaction. + default = self.get_default(ctx) + + # A boolean flag can use a simplified [y/n] confirmation prompt. + if self.is_bool_flag: + # If we have no boolean default, we force the user to explicitly provide + # one. + if default in (UNSET, None): + default = None + # Nothing prevent you to declare an option that is simultaneously: + # 1) auto-detected as a boolean flag, + # 2) allowed to prompt, and + # 3) still declare a non-boolean default. + # This forced casting into a boolean is necessary to align any non-boolean + # default to the prompt, which is going to be a [y/n]-style confirmation + # because the option is still a boolean flag. That way, instead of [y/n], + # we get [Y/n] or [y/N] depending on the truthy value of the default. + # Refs: https://github.com/pallets/click/pull/3030#discussion_r2289180249 + else: + default = bool(default) + return confirm(self.prompt, default) + + # If show_default is given, provide this to `prompt` as well, + # otherwise we use `prompt`'s default behavior + prompt_kwargs: t.Any = {} + if self.show_default is not None: + prompt_kwargs["show_default"] = self.show_default + + return prompt( + self.prompt, + # Use ``None`` to inform the prompt() function to reiterate until a valid + # value is provided by the user if we have no default. + default=None if default is UNSET else default, + type=self.type, + hide_input=self.hide_input, + show_choices=self.show_choices, + confirmation_prompt=self.confirmation_prompt, + value_proc=lambda x: self.process_value(ctx, x), + **prompt_kwargs, + ) + + def resolve_envvar_value(self, ctx: Context) -> str | None: + """:class:`Option` resolves its environment variable the same way as + :func:`Parameter.resolve_envvar_value`, but it also supports + :attr:`Context.auto_envvar_prefix`. If we could not find an environment from + the :attr:`envvar` property, we fallback on :attr:`Context.auto_envvar_prefix` + to build dynamiccaly the environment variable name using the + :python:`{ctx.auto_envvar_prefix}_{self.name.upper()}` template. + + :meta private: + """ + rv = super().resolve_envvar_value(ctx) + + if rv is not None: + return rv + + if self.allow_from_autoenv and ctx.auto_envvar_prefix is not None and self.name: + envvar = f"{ctx.auto_envvar_prefix}_{self.name.upper()}" + rv = os.environ.get(envvar) + + if rv: + return rv + + return None + + def value_from_envvar(self, ctx: Context) -> t.Any: + """For :class:`Option`, this method processes the raw environment variable + string the same way as :func:`Parameter.value_from_envvar` does. + + But in the case of non-boolean flags, the value is analyzed to determine if the + flag is activated or not, and returns a boolean of its activation, or the + :attr:`flag_value` if the latter is set. + + This method also takes care of repeated options (i.e. options with + :attr:`multiple` set to ``True``). + + :meta private: + """ + rv = self.resolve_envvar_value(ctx) + + # Absent environment variable or an empty string is interpreted as unset. + if rv is None: + return None + + # Non-boolean flags are more liberal in what they accept. But a flag being a + # flag, its envvar value still needs to be analyzed to determine if the flag is + # activated or not. + if self.is_flag and not self.is_bool_flag: + # If the flag_value is set and match the envvar value, return it + # directly. + if self.flag_value is not UNSET and rv == self.flag_value: + return self.flag_value + # Analyze the envvar value as a boolean to know if the flag is + # activated or not. + return types.BoolParamType.str_to_bool(rv) + + # Split the envvar value if it is allowed to be repeated. + value_depth = (self.nargs != 1) + bool(self.multiple) + if value_depth > 0: + multi_rv = self.type.split_envvar_value(rv) + if self.multiple and self.nargs != 1: + multi_rv = batch(multi_rv, self.nargs) # type: ignore[assignment] + + return multi_rv + + return rv + + def consume_value( + self, ctx: Context, opts: cabc.Mapping[str, Parameter] + ) -> tuple[t.Any, ParameterSource]: + """For :class:`Option`, the value can be collected from an interactive prompt + if the option is a flag that needs a value (and the :attr:`prompt` property is + set). + + Additionally, this method handles flag option that are activated without a + value, in which case the :attr:`flag_value` is returned. + + :meta private: + """ + value, source = super().consume_value(ctx, opts) + + # The parser will emit a sentinel value if the option is allowed to as a flag + # without a value. + if value is FLAG_NEEDS_VALUE: + # If the option allows for a prompt, we start an interaction with the user. + if self.prompt is not None and not ctx.resilient_parsing: + value = self.prompt_for_value(ctx) + source = ParameterSource.PROMPT + # Else the flag takes its flag_value as value. + else: + value = self.flag_value + source = ParameterSource.COMMANDLINE + + # A flag which is activated always returns the flag value, unless the value + # comes from the explicitly sets default. + elif ( + self.is_flag + and value is True + and not self.is_bool_flag + and source < ParameterSource.DEFAULT_MAP + ): + value = self.flag_value + + # Re-interpret a multiple option which has been sent as-is by the parser. + # Here we replace each occurrence of value-less flags (marked by the + # FLAG_NEEDS_VALUE sentinel) with the flag_value. + elif ( + self.multiple + and value is not UNSET + and isinstance(value, cabc.Iterable) + and source < ParameterSource.DEFAULT_MAP + and any(v is FLAG_NEEDS_VALUE for v in value) + ): + value = [self.flag_value if v is FLAG_NEEDS_VALUE else v for v in value] + source = ParameterSource.COMMANDLINE + + # The value wasn't set, or used the param's default, prompt for one to the user + # if prompting is enabled. + elif ( + (value is UNSET or source >= ParameterSource.DEFAULT_MAP) + and self.prompt is not None + and (self.required or self.prompt_required) + and not ctx.resilient_parsing + ): + value = self.prompt_for_value(ctx) + source = ParameterSource.PROMPT + + return value, source + + def process_value(self, ctx: Context, value: t.Any) -> t.Any: + # process_value has to be overridden on Options in order to capture + # `value == UNSET` cases before `type_cast_value()` gets called. + # + # Refs: + # https://github.com/pallets/click/issues/3069 + if self.is_flag and not self.required and self.is_bool_flag and value is UNSET: + value = False + + if self.callback is not None: + value = self.callback(ctx, self, value) + + return value + + # in the normal case, rely on Parameter.process_value + return super().process_value(ctx, value) + + +class Argument(Parameter): + """Arguments are positional parameters to a command. They generally + provide fewer features than options but can have infinite ``nargs`` + and are required by default. + + All parameters are passed onwards to the constructor of :class:`Parameter`. + """ + + param_type_name = "argument" + + def __init__( + self, + param_decls: cabc.Sequence[str], + required: bool | None = None, + **attrs: t.Any, + ) -> None: + # Auto-detect the requirement status of the argument if not explicitly set. + if required is None: + # The argument gets automatically required if it has no explicit default + # value set and is setup to match at least one value. + if attrs.get("default", UNSET) is UNSET: + required = attrs.get("nargs", 1) > 0 + # If the argument has a default value, it is not required. + else: + required = False + + if "multiple" in attrs: + raise TypeError("__init__() got an unexpected keyword argument 'multiple'.") + + super().__init__(param_decls, required=required, **attrs) + + @property + def human_readable_name(self) -> str: + if self.metavar is not None: + return self.metavar + return self.name.upper() + + def make_metavar(self, ctx: Context) -> str: + if self.metavar is not None: + return self.metavar + var = self.type.get_metavar(param=self, ctx=ctx) + if not var: + var = self.name.upper() + # Types like ``Choice`` and ``DateTime`` already surround their metavar + # with square brackets to enumerate the allowed values. Reuse those + # outer brackets as the optional-argument indicator instead of wrapping + # the metavar in a second pair, which would produce ``[[a|b|c]]``. + already_bracketed = var.startswith("[") and var.endswith("]") + if self.deprecated: + var += "!" + if not self.required and not already_bracketed: + var = f"[{var}]" + if self.nargs != 1: + var += "..." + return var + + def _parse_decls( + self, decls: cabc.Sequence[str], expose_value: bool + ) -> tuple[str, list[str], list[str]]: + if not decls: + if not expose_value: + return "", [], [] + raise TypeError("Argument is marked as exposed, but does not have a name.") + if len(decls) == 1: + name = arg = decls[0] + name = name.replace("-", "_").lower() + else: + raise TypeError( + _( + "Arguments take exactly one parameter declaration, got" + " {length}: {decls}." + ).format(length=len(decls), decls=decls) + ) + return name, [arg], [] + + def get_usage_pieces(self, ctx: Context) -> list[str]: + return [self.make_metavar(ctx)] + + def get_error_hint(self, ctx: Context | None) -> str: + if ctx is not None: + return f"'{self.make_metavar(ctx)}'" + return f"'{self.human_readable_name}'" + + def add_to_parser(self, parser: _OptionParser, ctx: Context) -> None: + parser.add_argument(dest=self.name, nargs=self.nargs, obj=self) + + +def __getattr__(name: str) -> object: + import warnings + + if name == "BaseCommand": + warnings.warn( + "'BaseCommand' is deprecated and will be removed in Click 9.0. Use" + " 'Command' instead.", + DeprecationWarning, + stacklevel=2, + ) + return _BaseCommand + + if name == "MultiCommand": + warnings.warn( + "'MultiCommand' is deprecated and will be removed in Click 9.0. Use" + " 'Group' instead.", + DeprecationWarning, + stacklevel=2, + ) + return _MultiCommand + + raise AttributeError(name) diff --git a/venv/lib/python3.11/site-packages/click/decorators.py b/venv/lib/python3.11/site-packages/click/decorators.py new file mode 100644 index 0000000000000000000000000000000000000000..db6a45ebbaedfdcde339397bbfe936c9440de180 --- /dev/null +++ b/venv/lib/python3.11/site-packages/click/decorators.py @@ -0,0 +1,575 @@ +from __future__ import annotations + +import inspect +import typing as t +from functools import update_wrapper +from gettext import gettext as _ + +from .core import Argument +from .core import Command +from .core import Context +from .core import Group +from .core import Option +from .core import Parameter +from .globals import get_current_context +from .utils import echo + +if t.TYPE_CHECKING: + import typing_extensions as te + + P = te.ParamSpec("P") + +R = t.TypeVar("R") +T = t.TypeVar("T") +_AnyCallable = t.Callable[..., t.Any] +FC = t.TypeVar("FC", bound="_AnyCallable | Command") + + +def pass_context(f: t.Callable[te.Concatenate[Context, P], R]) -> t.Callable[P, R]: + """Marks a callback as wanting to receive the current context + object as first argument. + """ + + def new_func(*args: P.args, **kwargs: P.kwargs) -> R: + return f(get_current_context(), *args, **kwargs) + + return update_wrapper(new_func, f) + + +def pass_obj(f: t.Callable[te.Concatenate[T, P], R]) -> t.Callable[P, R]: + """Similar to :func:`pass_context`, but only pass the object on the + context onwards (:attr:`Context.obj`). This is useful if that object + represents the state of a nested system. + """ + + def new_func(*args: P.args, **kwargs: P.kwargs) -> R: + return f(get_current_context().obj, *args, **kwargs) + + return update_wrapper(new_func, f) + + +def make_pass_decorator( + object_type: type[T], ensure: bool = False +) -> t.Callable[[t.Callable[te.Concatenate[T, P], R]], t.Callable[P, R]]: + """Given an object type this creates a decorator that will work + similar to :func:`pass_obj` but instead of passing the object of the + current context, it will find the innermost context of type + :func:`object_type`. + + This generates a decorator that works roughly like this:: + + from functools import update_wrapper + + def decorator(f): + @pass_context + def new_func(ctx, *args, **kwargs): + obj = ctx.find_object(object_type) + return ctx.invoke(f, obj, *args, **kwargs) + return update_wrapper(new_func, f) + return decorator + + :param object_type: the type of the object to pass. + :param ensure: if set to `True`, a new object will be created and + remembered on the context if it's not there yet. + """ + + def decorator(f: t.Callable[te.Concatenate[T, P], R]) -> t.Callable[P, R]: + def new_func(*args: P.args, **kwargs: P.kwargs) -> R: + ctx = get_current_context() + + obj: T | None + if ensure: + obj = ctx.ensure_object(object_type) + else: + obj = ctx.find_object(object_type) + + if obj is None: + raise RuntimeError( + "Managed to invoke callback without a context" + f" object of type {object_type.__name__!r}" + " existing." + ) + + return ctx.invoke(f, obj, *args, **kwargs) + + return update_wrapper(new_func, f) + + return decorator + + +def pass_meta_key( + key: str, *, doc_description: str | None = None +) -> t.Callable[[t.Callable[te.Concatenate[T, P], R]], t.Callable[P, R]]: + """Create a decorator that passes a key from + :attr:`click.Context.meta` as the first argument to the decorated + function. + + :param key: Key in ``Context.meta`` to pass. + :param doc_description: Description of the object being passed, + inserted into the decorator's docstring. Defaults to "the 'key' + key from Context.meta". + + .. versionadded:: 8.0 + """ + + def decorator(f: t.Callable[te.Concatenate[T, P], R]) -> t.Callable[P, R]: + def new_func(*args: P.args, **kwargs: P.kwargs) -> R: + ctx = get_current_context() + obj = ctx.meta[key] + return ctx.invoke(f, obj, *args, **kwargs) + + return update_wrapper(new_func, f) + + if doc_description is None: + doc_description = f"the {key!r} key from :attr:`click.Context.meta`" + + decorator.__doc__ = ( + f"Decorator that passes {doc_description} as the first argument" + " to the decorated function." + ) + return decorator + + +CmdType = t.TypeVar("CmdType", bound=Command) + + +# variant: no call, directly as decorator for a function. +@t.overload +def command(name: _AnyCallable) -> Command: ... + + +# variant: with positional name and with positional or keyword cls argument: +# @command(namearg, CommandCls, ...) or @command(namearg, cls=CommandCls, ...) +@t.overload +def command( + name: str | None, + cls: type[CmdType], + **attrs: t.Any, +) -> t.Callable[[_AnyCallable], CmdType]: ... + + +# variant: name omitted, cls _must_ be a keyword argument, @command(cls=CommandCls, ...) +@t.overload +def command( + name: None = None, + *, + cls: type[CmdType], + **attrs: t.Any, +) -> t.Callable[[_AnyCallable], CmdType]: ... + + +# variant: with optional string name, no cls argument provided. +@t.overload +def command( + name: str | None = ..., cls: None = None, **attrs: t.Any +) -> t.Callable[[_AnyCallable], Command]: ... + + +def command( + name: str | _AnyCallable | None = None, + cls: type[CmdType] | None = None, + **attrs: t.Any, +) -> Command | t.Callable[[_AnyCallable], Command | CmdType]: + r"""Creates a new :class:`Command` and uses the decorated function as + callback. This will also automatically attach all decorated + :func:`option`\s and :func:`argument`\s as parameters to the command. + + The name of the command defaults to the name of the function, converted to + lowercase, with underscores ``_`` replaced by dashes ``-``, and the suffixes + ``_command``, ``_cmd``, ``_group``, and ``_grp`` are removed. For example, + ``init_data_command`` becomes ``init-data``. + + All keyword arguments are forwarded to the underlying command class. + For the ``params`` argument, any decorated params are appended to + the end of the list. + + Once decorated the function turns into a :class:`Command` instance + that can be invoked as a command line utility or be attached to a + command :class:`Group`. + + :param name: The name of the command. Defaults to modifying the function's + name as described above. + :param cls: The command class to create. Defaults to :class:`Command`. + + .. versionchanged:: 8.2 + The suffixes ``_command``, ``_cmd``, ``_group``, and ``_grp`` are + removed when generating the name. + + .. versionchanged:: 8.1 + This decorator can be applied without parentheses. + + .. versionchanged:: 8.1 + The ``params`` argument can be used. Decorated params are + appended to the end of the list. + """ + + func: t.Callable[[_AnyCallable], t.Any] | None = None + + if callable(name): + func = name + name = None + assert cls is None, "Use 'command(cls=cls)(callable)' to specify a class." + assert not attrs, "Use 'command(**kwargs)(callable)' to provide arguments." + + if cls is None: + cls = t.cast("type[CmdType]", Command) + + def decorator(f: _AnyCallable) -> CmdType: + if isinstance(f, Command): + raise TypeError("Attempted to convert a callback into a command twice.") + + attr_params = attrs.pop("params", None) + params = attr_params if attr_params is not None else [] + + try: + decorator_params = f.__click_params__ # type: ignore + except AttributeError: + pass + else: + del f.__click_params__ # type: ignore + params.extend(reversed(decorator_params)) + + if attrs.get("help") is None: + attrs["help"] = f.__doc__ + + if t.TYPE_CHECKING: + assert cls is not None + assert not callable(name) + + if name is not None: + cmd_name = name + else: + cmd_name = f.__name__.lower().replace("_", "-") + cmd_left, sep, suffix = cmd_name.rpartition("-") + + if sep and suffix in {"command", "cmd", "group", "grp"}: + cmd_name = cmd_left + + cmd = cls(name=cmd_name, callback=f, params=params, **attrs) + cmd.__doc__ = f.__doc__ + return cmd + + if func is not None: + return decorator(func) + + return decorator + + +GrpType = t.TypeVar("GrpType", bound=Group) + + +# variant: no call, directly as decorator for a function. +@t.overload +def group(name: _AnyCallable) -> Group: ... + + +# variant: with positional name and with positional or keyword cls argument: +# @group(namearg, GroupCls, ...) or @group(namearg, cls=GroupCls, ...) +@t.overload +def group( + name: str | None, + cls: type[GrpType], + **attrs: t.Any, +) -> t.Callable[[_AnyCallable], GrpType]: ... + + +# variant: name omitted, cls _must_ be a keyword argument, @group(cmd=GroupCls, ...) +@t.overload +def group( + name: None = None, + *, + cls: type[GrpType], + **attrs: t.Any, +) -> t.Callable[[_AnyCallable], GrpType]: ... + + +# variant: with optional string name, no cls argument provided. +@t.overload +def group( + name: str | None = ..., cls: None = None, **attrs: t.Any +) -> t.Callable[[_AnyCallable], Group]: ... + + +def group( + name: str | _AnyCallable | None = None, + cls: type[GrpType] | None = None, + **attrs: t.Any, +) -> Group | t.Callable[[_AnyCallable], Group | GrpType]: + """Creates a new :class:`Group` with a function as callback. This + works otherwise the same as :func:`command` just that the `cls` + parameter is set to :class:`Group`. + + .. versionchanged:: 8.1 + This decorator can be applied without parentheses. + """ + if cls is None: + cls = t.cast("type[GrpType]", Group) + + if callable(name): + return command(cls=cls, **attrs)(name) + + return command(name, cls, **attrs) + + +def _param_memo(f: t.Callable[..., t.Any], param: Parameter) -> None: + if isinstance(f, Command): + f.params.append(param) + else: + if not hasattr(f, "__click_params__"): + f.__click_params__ = [] # type: ignore + + f.__click_params__.append(param) # type: ignore + + +def argument( + *param_decls: str, cls: type[Argument] | None = None, **attrs: t.Any +) -> t.Callable[[FC], FC]: + """Attaches an argument to the command. All positional arguments are + passed as parameter declarations to :class:`Argument`; all keyword + arguments are forwarded unchanged (except ``cls``). + This is equivalent to creating an :class:`Argument` instance manually + and attaching it to the :attr:`Command.params` list. + + For the default argument class, refer to :class:`Argument` and + :class:`Parameter` for descriptions of parameters. + + :param cls: the argument class to instantiate. This defaults to + :class:`Argument`. + :param param_decls: Passed as positional arguments to the constructor of + ``cls``. + :param attrs: Passed as keyword arguments to the constructor of ``cls``. + """ + if cls is None: + cls = Argument + + def decorator(f: FC) -> FC: + _param_memo(f, cls(param_decls, **attrs)) + return f + + return decorator + + +def option( + *param_decls: str, cls: type[Option] | None = None, **attrs: t.Any +) -> t.Callable[[FC], FC]: + """Attaches an option to the command. All positional arguments are + passed as parameter declarations to :class:`Option`; all keyword + arguments are forwarded unchanged (except ``cls``). + This is equivalent to creating an :class:`Option` instance manually + and attaching it to the :attr:`Command.params` list. + + For the default option class, refer to :class:`Option` and + :class:`Parameter` for descriptions of parameters. + + :param cls: the option class to instantiate. This defaults to + :class:`Option`. + :param param_decls: Passed as positional arguments to the constructor of + ``cls``. + :param attrs: Passed as keyword arguments to the constructor of ``cls``. + """ + if cls is None: + cls = Option + + def decorator(f: FC) -> FC: + _param_memo(f, cls(param_decls, **attrs)) + return f + + return decorator + + +def confirmation_option(*param_decls: str, **kwargs: t.Any) -> t.Callable[[FC], FC]: + """Add a ``--yes`` option which shows a prompt before continuing if + not passed. If the prompt is declined, the program will exit. + + :param param_decls: One or more option names. Defaults to the single + value ``"--yes"``. + :param kwargs: Extra arguments are passed to :func:`option`. + """ + + def callback(ctx: Context, param: Parameter, value: bool) -> None: + if not value: + ctx.abort() + + if not param_decls: + param_decls = ("--yes",) + + kwargs.setdefault("is_flag", True) + kwargs.setdefault("callback", callback) + kwargs.setdefault("expose_value", False) + kwargs.setdefault("prompt", _("Do you want to continue?")) + kwargs.setdefault("help", _("Confirm the action without prompting.")) + return option(*param_decls, **kwargs) + + +def password_option(*param_decls: str, **kwargs: t.Any) -> t.Callable[[FC], FC]: + """Add a ``--password`` option which prompts for a password, hiding + input and asking to enter the value again for confirmation. + + :param param_decls: One or more option names. Defaults to the single + value ``"--password"``. + :param kwargs: Extra arguments are passed to :func:`option`. + """ + if not param_decls: + param_decls = ("--password",) + + kwargs.setdefault("prompt", True) + kwargs.setdefault("confirmation_prompt", True) + kwargs.setdefault("hide_input", True) + return option(*param_decls, **kwargs) + + +def version_option( + version: str | None = None, + *param_decls: str, + package_name: str | None = None, + prog_name: str | None = None, + message: str | None = None, + **kwargs: t.Any, +) -> t.Callable[[FC], FC]: + """Add a ``--version`` option which immediately prints the version + number and exits the program. + + If ``version`` is not provided, Click will try to detect it using + :func:`importlib.metadata.version` to get the version for the + ``package_name``. + + If ``package_name`` is not provided, Click will try to detect it by + inspecting the stack frames. If the detected (or given) name does + not match an installed distribution, Click resolves it as an import + (top-level module) name via + :func:`importlib.metadata.packages_distributions`, so e.g. ``PIL`` + resolves to the ``Pillow`` distribution. + + :param version: The version number to show. If not provided, Click + will try to detect it. + :param param_decls: One or more option names. Defaults to the single + value ``"--version"``. + :param package_name: The package name to detect the version from. If + not provided, Click will try to detect it. + :param prog_name: The name of the CLI to show in the message. If not + provided, it will be detected from the command. + :param message: The message to show. The values ``%(prog)s``, + ``%(package)s``, and ``%(version)s`` are available. Defaults to + ``"%(prog)s, version %(version)s"``. + :param kwargs: Extra arguments are passed to :func:`option`. + :raise RuntimeError: ``version`` could not be detected. + + .. versionchanged:: 8.0 + Add the ``package_name`` parameter, and the ``%(package)s`` + value for messages. + + .. versionchanged:: 8.0 + Use :mod:`importlib.metadata` instead of ``pkg_resources``. The + version is detected based on the package name, not the entry + point name. The Python package name must match the installed + package name, or be passed with ``package_name=``. + + .. versionchanged:: 8.4.2 + When ``package_name`` does not match an installed distribution, + Click now resolves it as an import (top-level module). + """ + if message is None: + message = _("%(prog)s, version %(version)s") + + if version is None and package_name is None: + frame = inspect.currentframe() + f_back = frame.f_back if frame is not None else None + f_globals = f_back.f_globals if f_back is not None else None + # break reference cycle + # https://docs.python.org/3/library/inspect.html#the-interpreter-stack + del frame + + if f_globals is not None: + package_name = f_globals.get("__name__") + + if package_name == "__main__": + package_name = f_globals.get("__package__") + + if package_name: + package_name = package_name.partition(".")[0] + + def callback(ctx: Context, param: Parameter, value: bool) -> None: + if not value or ctx.resilient_parsing: + return + + nonlocal prog_name + nonlocal version + nonlocal package_name + + if prog_name is None: + prog_name = ctx.find_root().info_name + + if version is None and package_name is not None: + import importlib.metadata + + try: + version = importlib.metadata.version(package_name) + except importlib.metadata.PackageNotFoundError: + # The given name didn't match an installed distribution. + # Try resolving it as an import (top-level module) name, + # e.g. ``PIL`` is provided by the ``Pillow`` distribution. + distributions = importlib.metadata.packages_distributions().get( + package_name, [] + ) + if len(distributions) == 1: + package_name = distributions[0] + version = importlib.metadata.version(package_name) + elif len(distributions) > 1: + raise RuntimeError( + f"{package_name!r} maps to multiple installed" + f" distributions ({', '.join(distributions)})." + " Pass 'package_name' to disambiguate." + ) from None + else: + raise RuntimeError( + f"{package_name!r} is not installed. Try passing" + " 'package_name' instead." + ) from None + + if version is None: + raise RuntimeError( + f"Could not determine the version for {package_name!r} automatically." + ) + + echo( + message % {"prog": prog_name, "package": package_name, "version": version}, + color=ctx.color, + ) + ctx.exit() + + if not param_decls: + param_decls = ("--version",) + + kwargs.setdefault("is_flag", True) + kwargs.setdefault("expose_value", False) + kwargs.setdefault("is_eager", True) + kwargs.setdefault("help", _("Show the version and exit.")) + kwargs["callback"] = callback + return option(*param_decls, **kwargs) + + +def help_option(*param_decls: str, **kwargs: t.Any) -> t.Callable[[FC], FC]: + """Pre-configured ``--help`` option which immediately prints the help page + and exits the program. + + :param param_decls: One or more option names. Defaults to the single + value ``"--help"``. + :param kwargs: Extra arguments are passed to :func:`option`. + """ + + def show_help(ctx: Context, param: Parameter, value: bool) -> None: + """Callback that print the help page on ```` and exits.""" + if value and not ctx.resilient_parsing: + echo(ctx.get_help(), color=ctx.color) + ctx.exit() + + if not param_decls: + param_decls = ("--help",) + + kwargs.setdefault("is_flag", True) + kwargs.setdefault("expose_value", False) + kwargs.setdefault("is_eager", True) + kwargs.setdefault("help", _("Show this message and exit.")) + kwargs.setdefault("callback", show_help) + + return option(*param_decls, **kwargs) diff --git a/venv/lib/python3.11/site-packages/click/exceptions.py b/venv/lib/python3.11/site-packages/click/exceptions.py new file mode 100644 index 0000000000000000000000000000000000000000..6272c38a448d57241d9a6bff4191897f4a9bb7d6 --- /dev/null +++ b/venv/lib/python3.11/site-packages/click/exceptions.py @@ -0,0 +1,378 @@ +from __future__ import annotations + +import collections.abc as cabc +import typing as t +from gettext import gettext as _ +from gettext import ngettext + +from ._compat import get_text_stderr +from .globals import resolve_color_default +from .utils import echo +from .utils import format_filename + +if t.TYPE_CHECKING: + from .core import Command + from .core import Context + from .core import Parameter + + +def _join_param_hints(param_hint: cabc.Sequence[str] | str | None) -> str | None: + if param_hint is not None and not isinstance(param_hint, str): + return " / ".join(repr(x) for x in param_hint) + + return param_hint + + +def _format_possibilities(possibilities: list[str]) -> str: + possibility_str = ", ".join(repr(p) for p in sorted(possibilities)) + return ngettext( + "Did you mean {possibility}?", + "(Did you mean one of: {possibilities}?)", + len(possibilities), + ).format(possibility=possibility_str, possibilities=possibility_str) + + +class ClickException(Exception): + """An exception that Click can handle and show to the user.""" + + #: The exit code for this exception. + exit_code: t.ClassVar[int] = 1 + + show_color: t.Final[bool | None] + message: t.Final[str] + + def __init__(self, message: str) -> None: + super().__init__(message) + # The context will be removed by the time we print the message, so cache + # the color settings here to be used later on (in `show`) + self.show_color = resolve_color_default() + self.message = message + + def format_message(self) -> str: + return self.message + + def __str__(self) -> str: + return self.message + + def show(self, file: t.IO[t.Any] | None = None) -> None: + if file is None: + file = get_text_stderr() + + echo( + _("Error: {message}").format(message=self.format_message()), + file=file, + color=self.show_color, + ) + + +class UsageError(ClickException): + """An internal exception that signals a usage error. This typically + aborts any further handling. + + :param message: the error message to display. + :param ctx: optionally the context that caused this error. Click will + fill in the context automatically in some situations. + """ + + exit_code: t.ClassVar[int] = 2 + + ctx: Context | None + cmd: t.Final[Command | None] + + def __init__(self, message: str, ctx: Context | None = None) -> None: + super().__init__(message) + self.ctx = ctx + self.cmd = self.ctx.command if self.ctx else None + + def show(self, file: t.IO[t.Any] | None = None) -> None: + if file is None: + file = get_text_stderr() + color = None + hint = "" + if ( + self.ctx is not None + and self.ctx.command.get_help_option(self.ctx) is not None + ): + help_names = self.ctx.command.get_help_option_names(self.ctx) + # Pick the longest name (like ``--help`` over ``-h``) for + # readability in error messages. + hint = _("Try '{command} {option}' for help.").format( + command=self.ctx.command_path, + option=max(help_names, key=len), + ) + hint = f"{hint}\n" + if self.ctx is not None: + color = self.ctx.color + echo(f"{self.ctx.get_usage()}\n{hint}", file=file, color=color) + echo( + _("Error: {message}").format(message=self.format_message()), + file=file, + color=color, + ) + + +class BadParameter(UsageError): + """An exception that formats out a standardized error message for a + bad parameter. This is useful when thrown from a callback or type as + Click will attach contextual information to it (for instance, which + parameter it is). + + .. versionadded:: 2.0 + + :param param: the parameter object that caused this error. This can + be left out, and Click will attach this info itself + if possible. + :param param_hint: a string that shows up as parameter name. This + can be used as alternative to `param` in cases + where custom validation should happen. If it is + a string it's used as such, if it's a list then + each item is quoted and separated. + """ + + param: Parameter | None + param_hint: cabc.Sequence[str] | str | None + + def __init__( + self, + message: str, + ctx: Context | None = None, + param: Parameter | None = None, + param_hint: cabc.Sequence[str] | str | None = None, + ) -> None: + super().__init__(message, ctx) + self.param = param + self.param_hint = param_hint + + def format_message(self) -> str: + if self.param_hint is not None: + param_hint = self.param_hint + elif self.param is not None: + param_hint = self.param.get_error_hint(self.ctx) + else: + return _("Invalid value: {message}").format(message=self.message) + + return _("Invalid value for {param_hint}: {message}").format( + param_hint=_join_param_hints(param_hint), message=self.message + ) + + +class MissingParameter(BadParameter): + """Raised if click required an option or argument but it was not + provided when invoking the script. + + .. versionadded:: 4.0 + + :param param_type: a string that indicates the type of the parameter. + The default is to inherit the parameter type from + the given `param`. Valid values are ``'parameter'``, + ``'option'`` or ``'argument'``. + """ + + param_type: t.Final[str | None] + + def __init__( + self, + message: str | None = None, + ctx: Context | None = None, + param: Parameter | None = None, + param_hint: cabc.Sequence[str] | str | None = None, + param_type: str | None = None, + ) -> None: + super().__init__(message or "", ctx, param, param_hint) + self.param_type = param_type + + def format_message(self) -> str: + if self.param_hint is not None: + param_hint: cabc.Sequence[str] | str | None = self.param_hint + elif self.param is not None: + param_hint = self.param.get_error_hint(self.ctx) + else: + param_hint = None + + param_hint = _join_param_hints(param_hint) + param_hint = f" {param_hint}" if param_hint else "" + + param_type = self.param_type + if param_type is None and self.param is not None: + param_type = self.param.param_type_name + + msg = self.message + if self.param is not None: + msg_extra = self.param.type.get_missing_message( + param=self.param, ctx=self.ctx + ) + if msg_extra: + if msg: + msg += f". {msg_extra}" + else: + msg = msg_extra + + msg = f" {msg}" if msg else "" + + # Translate param_type for known types. + if param_type == "argument": + missing = _("Missing argument") + elif param_type == "option": + missing = _("Missing option") + elif param_type == "parameter": + missing = _("Missing parameter") + else: + missing = _("Missing {param_type}").format(param_type=param_type) + + return f"{missing}{param_hint}.{msg}" + + def __str__(self) -> str: + if not self.message: + param_name = self.param.name if self.param else None + return _("Missing parameter: {param_name}").format(param_name=param_name) + else: + return self.message + + +class NoSuchOption(UsageError): + """Raised if Click attempted to handle an option that does not exist. + + .. versionadded:: 4.0 + """ + + option_name: t.Final[str] + possibilities: t.Final[list[str] | None] + + def __init__( + self, + option_name: str, + message: str | None = None, + possibilities: cabc.Iterable[str] | None = None, + ctx: Context | None = None, + ) -> None: + if message is None: + message = _("No such option {name!r}.").format(name=option_name) + + super().__init__(message, ctx) + self.option_name = option_name + + if possibilities: + from difflib import get_close_matches + + possibilities_ = get_close_matches(option_name, possibilities) + else: + possibilities_ = None + self.possibilities = possibilities_ + + def format_message(self) -> str: + if not self.possibilities: + return self.message + return f"{self.message} {_format_possibilities(self.possibilities)}" + + +class NoSuchCommand(UsageError): + """Raised if Click attempted to handle a command that does not exist. + + .. versionadded:: 8.4.0 + """ + + command_name: t.Final[str] + possibilities: t.Final[list[str] | None] + + def __init__( + self, + command_name: str, + message: str | None = None, + possibilities: cabc.Iterable[str] | None = None, + ctx: Context | None = None, + ) -> None: + if message is None: + message = _("No such command {name!r}.").format(name=command_name) + + super().__init__(message, ctx) + self.command_name = command_name + + if possibilities: + from difflib import get_close_matches + + possibilities_ = get_close_matches(command_name, possibilities) + else: + possibilities_ = None + self.possibilities = possibilities_ + + def format_message(self) -> str: + if not self.possibilities: + return self.message + return f"{self.message} {_format_possibilities(self.possibilities)}" + + +class BadOptionUsage(UsageError): + """Raised if an option is generally supplied but the use of the option + was incorrect. This is for instance raised if the number of arguments + for an option is not correct. + + .. versionadded:: 4.0 + + :param option_name: the name of the option being used incorrectly. + """ + + option_name: t.Final[str] + + def __init__( + self, option_name: str, message: str, ctx: Context | None = None + ) -> None: + super().__init__(message, ctx) + self.option_name = option_name + + +class BadArgumentUsage(UsageError): + """Raised if an argument is generally supplied but the use of the argument + was incorrect. This is for instance raised if the number of values + for an argument is not correct. + + .. versionadded:: 6.0 + """ + + +class NoArgsIsHelpError(UsageError): + ctx: Context + + def __init__(self, ctx: Context) -> None: + super().__init__(ctx.get_help(), ctx=ctx) + + def show(self, file: t.IO[t.Any] | None = None) -> None: + echo(self.format_message(), file=file, err=True, color=self.ctx.color) + + +class FileError(ClickException): + """Raised if a file cannot be opened.""" + + ui_filename: t.Final[str] + filename: t.Final[str] + + def __init__(self, filename: str, hint: str | None = None) -> None: + if hint is None: + hint = _("unknown error") + + super().__init__(hint) + self.ui_filename = format_filename(filename) + self.filename = filename + + def format_message(self) -> str: + return _("Could not open file {filename!r}: {message}").format( + filename=self.ui_filename, message=self.message + ) + + +class Abort(RuntimeError): + """An internal signalling exception that signals Click to abort.""" + + +class Exit(RuntimeError): + """An exception that indicates that the application should exit with some + status code. + + :param code: the status code to exit with. + """ + + __slots__ = ("exit_code",) + + exit_code: t.Final[int] + + def __init__(self, code: int = 0) -> None: + self.exit_code = code diff --git a/venv/lib/python3.11/site-packages/click/formatting.py b/venv/lib/python3.11/site-packages/click/formatting.py new file mode 100644 index 0000000000000000000000000000000000000000..c4aa2de571a1eb17bfeb1853e315d28bc968e74c --- /dev/null +++ b/venv/lib/python3.11/site-packages/click/formatting.py @@ -0,0 +1,320 @@ +from __future__ import annotations + +import collections.abc as cabc +from contextlib import contextmanager +from gettext import gettext as _ + +from ._compat import term_len +from .parser import _split_opt + +# Can force a width. This is used by the test system +FORCED_WIDTH: int | None = None + + +def measure_table(rows: cabc.Iterable[tuple[str, str]]) -> tuple[int, ...]: + widths: dict[int, int] = {} + + for row in rows: + for idx, col in enumerate(row): + widths[idx] = max(widths.get(idx, 0), term_len(col)) + + return tuple(y for x, y in sorted(widths.items())) + + +def iter_rows( + rows: cabc.Iterable[tuple[str, str]], col_count: int +) -> cabc.Iterator[tuple[str, ...]]: + for row in rows: + yield row + ("",) * (col_count - len(row)) + + +def wrap_text( + text: str, + width: int = 78, + initial_indent: str = "", + subsequent_indent: str = "", + preserve_paragraphs: bool = False, +) -> str: + """A helper function that intelligently wraps text. By default, it + assumes that it operates on a single paragraph of text but if the + `preserve_paragraphs` parameter is provided it will intelligently + handle paragraphs (defined by two empty lines). + + If paragraphs are handled, a paragraph can be prefixed with an empty + line containing the ``\\b`` character (``\\x08``) to indicate that + no rewrapping should happen in that block. + + :param text: the text that should be rewrapped. + :param width: the maximum width for the text. + :param initial_indent: the initial indent that should be placed on the + first line as a string. + :param subsequent_indent: the indent string that should be placed on + each consecutive line. + :param preserve_paragraphs: if this flag is set then the wrapping will + intelligently handle paragraphs. + + .. versionchanged:: 8.4.0 + Width is measured in visible characters. ANSI escape sequences in + ``text``, ``initial_indent``, or ``subsequent_indent`` no longer + count toward the width budget, so styled input wraps based on what + the user sees instead of raw byte length. + """ + from ._textwrap import TextWrapper + + text = text.expandtabs() + wrapper = TextWrapper( + width, + initial_indent=initial_indent, + subsequent_indent=subsequent_indent, + replace_whitespace=False, + ) + if not preserve_paragraphs: + return wrapper.fill(text) + + p: list[tuple[int, bool, str]] = [] + buf: list[str] = [] + indent = None + + def _flush_par() -> None: + if not buf: + return + if buf[0].strip() == "\b": + p.append((indent or 0, True, "\n".join(buf[1:]))) + else: + p.append((indent or 0, False, " ".join(buf))) + del buf[:] + + for line in text.splitlines(): + if not line: + _flush_par() + indent = None + else: + if indent is None: + orig_len = term_len(line) + line = line.lstrip() + indent = orig_len - term_len(line) + buf.append(line) + _flush_par() + + rv = [] + for indent, raw, text in p: + with wrapper.extra_indent(" " * indent): + if raw: + rv.append(wrapper.indent_only(text)) + else: + rv.append(wrapper.fill(text)) + + return "\n\n".join(rv) + + +class HelpFormatter: + """This class helps with formatting text-based help pages. It's + usually just needed for very special internal cases, but it's also + exposed so that developers can write their own fancy outputs. + + At present, it always writes into memory. + + :param indent_increment: the additional increment for each level. + :param width: the width for the text. This defaults to the terminal + width clamped to a maximum of 78. + """ + + indent_increment: int + width: int + current_indent: int + buffer: list[str] + + def __init__( + self, + indent_increment: int = 2, + width: int | None = None, + max_width: int | None = None, + ) -> None: + self.indent_increment = indent_increment + if max_width is None: + max_width = 80 + if width is None: + import shutil + + width = FORCED_WIDTH + if width is None: + width = max(min(shutil.get_terminal_size().columns, max_width) - 2, 50) + self.width = width + self.current_indent = 0 + self.buffer = [] + + def write(self, string: str) -> None: + """Writes a unicode string into the internal buffer.""" + self.buffer.append(string) + + def indent(self) -> None: + """Increases the indentation.""" + self.current_indent += self.indent_increment + + def dedent(self) -> None: + """Decreases the indentation.""" + self.current_indent -= self.indent_increment + + def write_usage(self, prog: str, args: str = "", prefix: str | None = None) -> None: + """Writes a usage line into the buffer. + + :param prog: the program name. + :param args: whitespace separated list of arguments. + :param prefix: The prefix for the first line. Defaults to + ``"Usage: "``. + """ + if prefix is None: + prefix = "{usage} ".format(usage=_("Usage:")) + + usage_prefix = f"{prefix:>{self.current_indent}}{prog} " + text_width = self.width - self.current_indent + + if not args: + # Without args, the prefix's trailing space and the wrap_text + # call that would normally place args on the line are both + # unnecessary. Emit just the prefix line. + self.write(usage_prefix.rstrip(" ")) + self.write("\n") + return + + if text_width >= (term_len(usage_prefix) + 20): + # The arguments will fit to the right of the prefix. + indent = " " * term_len(usage_prefix) + self.write( + wrap_text( + args, + text_width, + initial_indent=usage_prefix, + subsequent_indent=indent, + ) + ) + else: + # The prefix is too long, put the arguments on the next line. + self.write(usage_prefix) + self.write("\n") + indent = " " * (max(self.current_indent, term_len(prefix)) + 4) + self.write( + wrap_text( + args, text_width, initial_indent=indent, subsequent_indent=indent + ) + ) + + self.write("\n") + + def write_heading(self, heading: str) -> None: + """Writes a heading into the buffer.""" + self.write(f"{'':>{self.current_indent}}{heading}:\n") + + def write_paragraph(self) -> None: + """Writes a paragraph into the buffer.""" + if self.buffer: + self.write("\n") + + def write_text(self, text: str) -> None: + """Writes re-indented text into the buffer. This rewraps and + preserves paragraphs. + """ + indent = " " * self.current_indent + self.write( + wrap_text( + text, + self.width, + initial_indent=indent, + subsequent_indent=indent, + preserve_paragraphs=True, + ) + ) + self.write("\n") + + def write_dl( + self, + rows: cabc.Iterable[tuple[str, str]], + col_max: int = 30, + col_spacing: int = 2, + ) -> None: + """Writes a definition list into the buffer. This is how options + and commands are usually formatted. + + :param rows: a list of two item tuples for the terms and values. + :param col_max: the maximum width of the first column. + :param col_spacing: the number of spaces between the first and + second column. + """ + rows = list(rows) + widths = measure_table(rows) + if len(widths) != 2: + raise TypeError("Expected two columns for definition list") + + first_col = min(widths[0], col_max) + col_spacing + + for first, second in iter_rows(rows, len(widths)): + self.write(f"{'':>{self.current_indent}}{first}") + if not second: + self.write("\n") + continue + if term_len(first) <= first_col - col_spacing: + self.write(" " * (first_col - term_len(first))) + else: + self.write("\n") + self.write(" " * (first_col + self.current_indent)) + + text_width = max(self.width - first_col - 2, 10) + wrapped_text = wrap_text(second, text_width, preserve_paragraphs=True) + lines = wrapped_text.splitlines() + + if lines: + self.write(f"{lines[0]}\n") + + for line in lines[1:]: + self.write(f"{'':>{first_col + self.current_indent}}{line}\n") + else: + self.write("\n") + + @contextmanager + def section(self, name: str) -> cabc.Generator[None]: + """Helpful context manager that writes a paragraph, a heading, + and the indents. + + :param name: the section name that is written as heading. + """ + self.write_paragraph() + self.write_heading(name) + self.indent() + try: + yield + finally: + self.dedent() + + @contextmanager + def indentation(self) -> cabc.Generator[None]: + """A context manager that increases the indentation.""" + self.indent() + try: + yield + finally: + self.dedent() + + def getvalue(self) -> str: + """Returns the buffer contents.""" + return "".join(self.buffer) + + +def join_options(options: cabc.Iterable[str]) -> tuple[str, bool]: + """Given a list of option strings this joins them in the most appropriate + way and returns them in the form ``(formatted_string, + any_prefix_is_slash)`` where the second item in the tuple is a flag that + indicates if any of the option prefixes was a slash. + """ + rv = [] + any_prefix_is_slash = False + + for opt in options: + prefix = _split_opt(opt)[0] + + if prefix == "/": + any_prefix_is_slash = True + + rv.append((len(prefix), opt)) + + rv.sort(key=lambda x: x[0]) + return ", ".join(x[1] for x in rv), any_prefix_is_slash diff --git a/venv/lib/python3.11/site-packages/click/globals.py b/venv/lib/python3.11/site-packages/click/globals.py new file mode 100644 index 0000000000000000000000000000000000000000..a2f91723d21cefdf658be327174e1f8ccdc20fcd --- /dev/null +++ b/venv/lib/python3.11/site-packages/click/globals.py @@ -0,0 +1,67 @@ +from __future__ import annotations + +import typing as t +from threading import local + +if t.TYPE_CHECKING: + from .core import Context + +_local = local() + + +@t.overload +def get_current_context(silent: t.Literal[False] = False) -> Context: ... + + +@t.overload +def get_current_context(silent: bool = ...) -> Context | None: ... + + +def get_current_context(silent: bool = False) -> Context | None: + """Returns the current click context. This can be used as a way to + access the current context object from anywhere. This is a more implicit + alternative to the :func:`pass_context` decorator. This function is + primarily useful for helpers such as :func:`echo` which might be + interested in changing its behavior based on the current context. + + To push the current context, :meth:`Context.scope` can be used. + + .. versionadded:: 5.0 + + :param silent: if set to `True` the return value is `None` if no context + is available. The default behavior is to raise a + :exc:`RuntimeError`. + """ + try: + return t.cast("Context", _local.stack[-1]) + except (AttributeError, IndexError) as e: + if not silent: + raise RuntimeError("There is no active click context.") from e + + return None + + +def push_context(ctx: Context) -> None: + """Pushes a new context to the current stack.""" + _local.__dict__.setdefault("stack", []).append(ctx) + + +def pop_context() -> None: + """Removes the top level from the stack.""" + _local.stack.pop() + + +def resolve_color_default(color: bool | None = None) -> bool | None: + """Internal helper to get the default value of the color flag. If a + value is passed it's returned unchanged, otherwise it's looked up from + the current context. + """ + if color is not None: + return color + + ctx = get_current_context(silent=True) + + if ctx is not None: + return ctx.color + + return None diff --git a/venv/lib/python3.11/site-packages/click/parser.py b/venv/lib/python3.11/site-packages/click/parser.py new file mode 100644 index 0000000000000000000000000000000000000000..4fcbf7caa83a474cee2d3ea25da56b0399dd893a --- /dev/null +++ b/venv/lib/python3.11/site-packages/click/parser.py @@ -0,0 +1,533 @@ +""" +This module started out as largely a copy paste from the stdlib's +optparse module with the features removed that we do not need from +optparse because we implement them in Click on a higher level (for +instance type handling, help formatting and a lot more). + +The plan is to remove more and more from here over time. + +The reason this is a different module and not optparse from the stdlib +is that there are differences in 2.x and 3.x about the error messages +generated and optparse in the stdlib uses gettext for no good reason +and might cause us issues. + +Click uses parts of optparse written by Gregory P. Ward and maintained +by the Python Software Foundation. This is limited to code in parser.py. + +Copyright 2001-2006 Gregory P. Ward. All rights reserved. +Copyright 2002-2006 Python Software Foundation. All rights reserved. +""" + +# This code uses parts of optparse written by Gregory P. Ward and +# maintained by the Python Software Foundation. +# Copyright 2001-2006 Gregory P. Ward +# Copyright 2002-2006 Python Software Foundation +from __future__ import annotations + +import collections.abc as cabc +import typing as t +from collections import deque +from gettext import gettext as _ +from gettext import ngettext + +from ._utils import FLAG_NEEDS_VALUE +from ._utils import UNSET +from .exceptions import BadArgumentUsage +from .exceptions import BadOptionUsage +from .exceptions import NoSuchOption +from .exceptions import UsageError + +if t.TYPE_CHECKING: + from ._utils import T_FLAG_NEEDS_VALUE + from ._utils import T_UNSET + from .core import Argument as CoreArgument + from .core import Context + from .core import Option as CoreOption + from .core import Parameter as CoreParameter + +V = t.TypeVar("V") + + +def _unpack_args( + args: cabc.Sequence[str], nargs_spec: cabc.Sequence[int] +) -> tuple[cabc.Sequence[str | cabc.Sequence[str | T_UNSET] | T_UNSET], list[str]]: + """Given an iterable of arguments and an iterable of nargs specifications, + it returns a tuple with all the unpacked arguments at the first index + and all remaining arguments as the second. + + The nargs specification is the number of arguments that should be consumed + or `-1` to indicate that this position should eat up all the remainders. + + Missing items are filled with ``UNSET``. + """ + args = deque(args) + nargs_spec = deque(nargs_spec) + rv: list[str | tuple[str | T_UNSET, ...] | T_UNSET] = [] + spos: int | None = None + + def _fetch(c: deque[str]) -> str | T_UNSET: + try: + if spos is None: + return c.popleft() + else: + return c.pop() + except IndexError: + return UNSET + + while nargs_spec: + if spos is None: + nargs = nargs_spec.popleft() + else: + nargs = nargs_spec.pop() + + if nargs == 1: + rv.append(_fetch(args)) + elif nargs > 1: + x: list[str | T_UNSET] = [_fetch(args) for _ in range(nargs)] + + # If we're reversed, we're pulling in the arguments in reverse, + # so we need to turn them around. + if spos is not None: + x.reverse() + + rv.append(tuple(x)) + elif nargs < 0: + if spos is not None: + raise TypeError("Cannot have two nargs < 0") + + spos = len(rv) + rv.append(UNSET) + + # spos is the position of the wildcard (star). If it's not `None`, + # we fill it with the remainder. + if spos is not None: + rv[spos] = tuple(args) + args = [] + rv[spos + 1 :] = reversed(rv[spos + 1 :]) + + return tuple(rv), list(args) + + +def _split_opt(opt: str) -> tuple[str, str]: + first = opt[:1] + if first.isalnum(): + return "", opt + if opt[1:2] == first: + return opt[:2], opt[2:] + return first, opt[1:] + + +def _normalize_opt(opt: str, ctx: Context | None) -> str: + if ctx is None or ctx.token_normalize_func is None: + return opt + prefix, opt = _split_opt(opt) + return f"{prefix}{ctx.token_normalize_func(opt)}" + + +class _Option: + def __init__( + self, + obj: CoreOption, + opts: cabc.Sequence[str], + dest: str | None, + action: str | None = None, + nargs: int = 1, + const: t.Any | None = None, + ): + self._short_opts = [] + self._long_opts = [] + self.prefixes: set[str] = set() + + for opt in opts: + prefix, value = _split_opt(opt) + if not prefix: + raise ValueError( + _("Invalid start character for option ({option})").format( + option=opt + ) + ) + self.prefixes.add(prefix[0]) + if len(prefix) == 1 and len(value) == 1: + self._short_opts.append(opt) + else: + self._long_opts.append(opt) + self.prefixes.add(prefix) + + if action is None: + action = "store" + + self.dest = dest + self.action = action + self.nargs = nargs + self.const = const + self.obj = obj + + @property + def takes_value(self) -> bool: + return self.action in ("store", "append") + + def process(self, value: t.Any, state: _ParsingState) -> None: + if self.action == "store": + state.opts[self.dest] = value # type: ignore + elif self.action == "store_const": + state.opts[self.dest] = self.const # type: ignore + elif self.action == "append": + state.opts.setdefault(self.dest, []).append(value) # type: ignore + elif self.action == "append_const": + state.opts.setdefault(self.dest, []).append(self.const) # type: ignore + elif self.action == "count": + state.opts[self.dest] = state.opts.get(self.dest, 0) + 1 # type: ignore + else: + raise ValueError(f"unknown action '{self.action}'") + state.order.append(self.obj) + + +class _Argument: + def __init__(self, obj: CoreArgument, dest: str | None, nargs: int = 1): + self.dest = dest + self.nargs = nargs + self.obj = obj + + def process( + self, + value: str | cabc.Sequence[str | T_UNSET] | T_UNSET, + state: _ParsingState, + ) -> None: + if self.nargs > 1: + assert isinstance(value, cabc.Sequence) + holes = sum(x is UNSET for x in value) + if holes == len(value): + value = UNSET + elif holes != 0: + raise BadArgumentUsage( + _("Argument {name!r} takes {nargs} values.").format( + name=self.dest, nargs=self.nargs + ) + ) + + # We failed to collect any argument value so we consider the argument as unset. + if value == (): + value = UNSET + + state.opts[self.dest] = value # type: ignore + state.order.append(self.obj) + + +class _ParsingState: + def __init__(self, rargs: list[str]) -> None: + self.opts: dict[str, t.Any] = {} + self.largs: list[str] = [] + self.rargs = rargs + self.order: list[CoreParameter] = [] + + +class _OptionParser: + """The option parser is an internal class that is ultimately used to + parse options and arguments. It's modelled after optparse and brings + a similar but vastly simplified API. It should generally not be used + directly as the high level Click classes wrap it for you. + + It's not nearly as extensible as optparse or argparse as it does not + implement features that are implemented on a higher level (such as + types or defaults). + + :param ctx: optionally the :class:`~click.Context` where this parser + should go with. + + .. deprecated:: 8.2 + Will be removed in Click 9.0. + """ + + def __init__(self, ctx: Context | None = None) -> None: + #: The :class:`~click.Context` for this parser. This might be + #: `None` for some advanced use cases. + self.ctx = ctx + #: This controls how the parser deals with interspersed arguments. + #: If this is set to `False`, the parser will stop on the first + #: non-option. Click uses this to implement nested subcommands + #: safely. + self.allow_interspersed_args: bool = True + #: This tells the parser how to deal with unknown options. By + #: default it will error out (which is sensible), but there is a + #: second mode where it will ignore it and continue processing + #: after shifting all the unknown options into the resulting args. + self.ignore_unknown_options: bool = False + + if ctx is not None: + self.allow_interspersed_args = ctx.allow_interspersed_args + self.ignore_unknown_options = ctx.ignore_unknown_options + + self._short_opt: dict[str, _Option] = {} + self._long_opt: dict[str, _Option] = {} + self._opt_prefixes = {"-", "--"} + self._args: list[_Argument] = [] + + def add_option( + self, + obj: CoreOption, + opts: cabc.Sequence[str], + dest: str | None, + action: str | None = None, + nargs: int = 1, + const: t.Any | None = None, + ) -> None: + """Adds a new option named `dest` to the parser. The destination + is not inferred (unlike with optparse) and needs to be explicitly + provided. Action can be any of ``store``, ``store_const``, + ``append``, ``append_const`` or ``count``. + + The `obj` can be used to identify the option in the order list + that is returned from the parser. + """ + opts = [_normalize_opt(opt, self.ctx) for opt in opts] + option = _Option(obj, opts, dest, action=action, nargs=nargs, const=const) + self._opt_prefixes.update(option.prefixes) + for opt in option._short_opts: + self._short_opt[opt] = option + for opt in option._long_opts: + self._long_opt[opt] = option + + def add_argument(self, obj: CoreArgument, dest: str | None, nargs: int = 1) -> None: + """Adds a positional argument named `dest` to the parser. + + The `obj` can be used to identify the option in the order list + that is returned from the parser. + """ + self._args.append(_Argument(obj, dest=dest, nargs=nargs)) + + def parse_args( + self, args: list[str] + ) -> tuple[dict[str, t.Any], list[str], list[CoreParameter]]: + """Parses positional arguments and returns ``(values, args, order)`` + for the parsed options and arguments as well as the leftover + arguments if there are any. The order is a list of objects as they + appear on the command line. If arguments appear multiple times they + will be memorized multiple times as well. + """ + state = _ParsingState(args) + try: + self._process_args_for_options(state) + self._process_args_for_args(state) + except UsageError: + if self.ctx is None or not self.ctx.resilient_parsing: + raise + return state.opts, state.largs, state.order + + def _process_args_for_args(self, state: _ParsingState) -> None: + pargs, args = _unpack_args( + state.largs + state.rargs, [x.nargs for x in self._args] + ) + + for idx, arg in enumerate(self._args): + arg.process(pargs[idx], state) + + state.largs = args + state.rargs = [] + + def _process_args_for_options(self, state: _ParsingState) -> None: + while state.rargs: + arg = state.rargs.pop(0) + arglen = len(arg) + # Double dashes always handled explicitly regardless of what + # prefixes are valid. + if arg == "--": + return + elif arg[:1] in self._opt_prefixes and arglen > 1: + self._process_opts(arg, state) + elif self.allow_interspersed_args: + state.largs.append(arg) + else: + state.rargs.insert(0, arg) + return + + # Say this is the original argument list: + # [arg0, arg1, ..., arg(i-1), arg(i), arg(i+1), ..., arg(N-1)] + # ^ + # (we are about to process arg(i)). + # + # Then rargs is [arg(i), ..., arg(N-1)] and largs is a *subset* of + # [arg0, ..., arg(i-1)] (any options and their arguments will have + # been removed from largs). + # + # The while loop will usually consume 1 or more arguments per pass. + # If it consumes 1 (eg. arg is an option that takes no arguments), + # then after _process_arg() is done the situation is: + # + # largs = subset of [arg0, ..., arg(i)] + # rargs = [arg(i+1), ..., arg(N-1)] + # + # If allow_interspersed_args is false, largs will always be + # *empty* -- still a subset of [arg0, ..., arg(i-1)], but + # not a very interesting subset! + + def _match_long_opt( + self, opt: str, explicit_value: str | None, state: _ParsingState + ) -> None: + if opt not in self._long_opt: + raise NoSuchOption(opt, possibilities=self._long_opt, ctx=self.ctx) + + option = self._long_opt[opt] + if option.takes_value: + # At this point it's safe to modify rargs by injecting the + # explicit value, because no exception is raised in this + # branch. This means that the inserted value will be fully + # consumed. + if explicit_value is not None: + state.rargs.insert(0, explicit_value) + + value = self._get_value_from_state(opt, option, state) + + elif explicit_value is not None: + raise BadOptionUsage( + opt, _("Option {name!r} does not take a value.").format(name=opt) + ) + + else: + value = UNSET + + option.process(value, state) + + def _match_short_opt(self, arg: str, state: _ParsingState) -> None: + stop = False + i = 1 + prefix = arg[0] + unknown_options = [] + + for ch in arg[1:]: + opt = _normalize_opt(f"{prefix}{ch}", self.ctx) + option = self._short_opt.get(opt) + i += 1 + + if not option: + if self.ignore_unknown_options: + unknown_options.append(ch) + continue + raise NoSuchOption(opt, ctx=self.ctx) + if option.takes_value: + # Any characters left in arg? Pretend they're the + # next arg, and stop consuming characters of arg. + if i < len(arg): + state.rargs.insert(0, arg[i:]) + stop = True + + value = self._get_value_from_state(opt, option, state) + + else: + value = UNSET + + option.process(value, state) + + if stop: + break + + # If we got any unknown options we recombine the string of the + # remaining options and re-attach the prefix, then report that + # to the state as new large. This way there is basic combinatorics + # that can be achieved while still ignoring unknown arguments. + if self.ignore_unknown_options and unknown_options: + state.largs.append(f"{prefix}{''.join(unknown_options)}") + + def _get_value_from_state( + self, option_name: str, option: _Option, state: _ParsingState + ) -> str | cabc.Sequence[str] | T_UNSET | T_FLAG_NEEDS_VALUE: + nargs = option.nargs + + value: str | cabc.Sequence[str] | T_UNSET | T_FLAG_NEEDS_VALUE + + if len(state.rargs) < nargs: + if option.obj._flag_needs_value: + # Option allows omitting the value. + value = FLAG_NEEDS_VALUE + else: + raise BadOptionUsage( + option_name, + ngettext( + "Option {name!r} requires an argument.", + "Option {name!r} requires {nargs} arguments.", + nargs, + ).format(name=option_name, nargs=nargs), + ) + elif nargs == 1: + next_rarg = state.rargs[0] + + if ( + option.obj._flag_needs_value + and isinstance(next_rarg, str) + and next_rarg[:1] in self._opt_prefixes + and len(next_rarg) > 1 + ): + # The next arg looks like the start of an option, don't + # use it as the value if omitting the value is allowed. + value = FLAG_NEEDS_VALUE + else: + value = state.rargs.pop(0) + else: + value = tuple(state.rargs[:nargs]) + del state.rargs[:nargs] + + return value + + def _process_opts(self, arg: str, state: _ParsingState) -> None: + explicit_value = None + # Long option handling happens in two parts. The first part is + # supporting explicitly attached values. In any case, we will try + # to long match the option first. + if "=" in arg: + long_opt, explicit_value = arg.split("=", 1) + else: + long_opt = arg + norm_long_opt = _normalize_opt(long_opt, self.ctx) + + # At this point we will match the (assumed) long option through + # the long option matching code. Note that this allows options + # like "-foo" to be matched as long options. + try: + self._match_long_opt(norm_long_opt, explicit_value, state) + except NoSuchOption: + # At this point the long option matching failed, and we need + # to try with short options. However there is a special rule + # which says, that if we have a two character options prefix + # (applies to "--foo" for instance), we do not dispatch to the + # short option code and will instead raise the no option + # error. + if arg[:2] not in self._opt_prefixes: + self._match_short_opt(arg, state) + return + + if not self.ignore_unknown_options: + raise + + state.largs.append(arg) + + +def __getattr__(name: str) -> object: + import warnings + + if name in { + "OptionParser", + "Argument", + "Option", + "split_opt", + "normalize_opt", + "ParsingState", + }: + warnings.warn( + f"'parser.{name}' is deprecated and will be removed in Click 9.0." + " The old parser is available in 'optparse'.", + DeprecationWarning, + stacklevel=2, + ) + return globals()[f"_{name}"] + + if name == "split_arg_string": + from .shell_completion import split_arg_string + + warnings.warn( + "Importing 'parser.split_arg_string' is deprecated, it will only be" + " available in 'shell_completion' in Click 9.0.", + DeprecationWarning, + stacklevel=2, + ) + return split_arg_string + + raise AttributeError(name) diff --git a/venv/lib/python3.11/site-packages/click/py.typed b/venv/lib/python3.11/site-packages/click/py.typed new file mode 100644 index 0000000000000000000000000000000000000000..e69de29bb2d1d6434b8b29ae775ad8c2e48c5391 diff --git a/venv/lib/python3.11/site-packages/click/shell_completion.py b/venv/lib/python3.11/site-packages/click/shell_completion.py new file mode 100644 index 0000000000000000000000000000000000000000..468ee7720d934396d0a309067d800ea819af7da2 --- /dev/null +++ b/venv/lib/python3.11/site-packages/click/shell_completion.py @@ -0,0 +1,705 @@ +from __future__ import annotations + +import collections.abc as cabc +import os +import re +import typing as t +from gettext import gettext as _ + +from .core import Argument +from .core import Command +from .core import Context +from .core import Group +from .core import Option +from .core import Parameter +from .core import ParameterSource +from .utils import echo + + +def shell_complete( + cli: Command, + ctx_args: cabc.MutableMapping[str, t.Any], + prog_name: str, + complete_var: str, + instruction: str, +) -> t.Literal[0, 1]: + """Perform shell completion for the given CLI program. + + :param cli: Command being called. + :param ctx_args: Extra arguments to pass to + ``cli.make_context``. + :param prog_name: Name of the executable in the shell. + :param complete_var: Name of the environment variable that holds + the completion instruction. + :param instruction: Value of ``complete_var`` with the completion + instruction and shell, in the form ``instruction_shell``. + :return: Status code to exit with. + """ + shell, _, instruction = instruction.partition("_") + comp_cls = get_completion_class(shell) + + if comp_cls is None: + return 1 + + comp = comp_cls(cli, ctx_args, prog_name, complete_var) + + # Write bytes, otherwise Windows text stdout translates LF to CRLF and breaks. + if instruction == "source": + echo(comp.source().encode(), nl=False) + return 0 + + if instruction == "complete": + echo(comp.complete().encode()) + return 0 + + return 1 + + +if t.TYPE_CHECKING: + from typing_extensions import TypeVar + + # `Any` is used as default for backwards compatibility (instead of e.g. `str`) + _ValueT_co = TypeVar("_ValueT_co", covariant=True, default=t.Any) +else: + _ValueT_co = t.TypeVar("_ValueT_co", covariant=True) + + +class CompletionItem(t.Generic[_ValueT_co]): + """Represents a completion value and metadata about the value. The + default metadata is ``type`` to indicate special shell handling, + and ``help`` if a shell supports showing a help string next to the + value. + + Arbitrary parameters can be passed when creating the object, and + accessed using ``item.attr``. If an attribute wasn't passed, + accessing it returns ``None``. + + :param value: The completion suggestion. + :param type: Tells the shell script to provide special completion + support for the type. Click uses ``"dir"`` and ``"file"``. + :param help: String shown next to the value if supported. + :param kwargs: Arbitrary metadata. The built-in implementations + don't use this, but custom type completions paired with custom + shell support could use it. + """ + + __slots__ = ("value", "type", "help", "_info") + + def __init__( + self, + value: _ValueT_co, + type: str = "plain", + help: str | None = None, + **kwargs: t.Any, + ) -> None: + self.value: _ValueT_co = value + self.type: str = type + self.help: str | None = help + self._info = kwargs + + def __getattr__(self, name: str) -> t.Any: + return self._info.get(name) + + +# Only Bash >= 4.4 has the nosort option. +_SOURCE_BASH = """\ +%(complete_func)s() { + local IFS=$'\\n' + local response + + response=$(env COMP_WORDS="${COMP_WORDS[*]}" COMP_CWORD=$COMP_CWORD \ +%(complete_var)s=bash_complete $1) + + for completion in $response; do + IFS=',' read type value <<< "$completion" + + if [[ $type == 'dir' ]]; then + COMPREPLY=() + compopt -o dirnames + elif [[ $type == 'file' ]]; then + COMPREPLY=() + compopt -o default + elif [[ $type == 'plain' ]]; then + COMPREPLY+=($value) + fi + done + + return 0 +} + +%(complete_func)s_setup() { + complete -o nosort -F %(complete_func)s %(prog_name)s +} + +%(complete_func)s_setup; +""" + +# See ZshComplete.format_completion below, and issue #2703, before +# changing this script. +# +# (TL;DR: _describe is picky about the format, but this Zsh script snippet +# is already widely deployed. So freeze this script, and use clever-ish +# handling of colons in ZshComplet.format_completion.) +_SOURCE_ZSH = """\ +#compdef %(prog_name)s + +%(complete_func)s() { + local -a completions + local -a completions_with_descriptions + local -a response + (( ! $+commands[%(prog_name)s] )) && return 1 + + response=("${(@f)$(env COMP_WORDS="${words[*]}" COMP_CWORD=$((CURRENT-1)) \ +%(complete_var)s=zsh_complete %(prog_name)s)}") + + for type key descr in ${response}; do + if [[ "$type" == "plain" ]]; then + if [[ "$descr" == "_" ]]; then + completions+=("$key") + else + completions_with_descriptions+=("$key":"$descr") + fi + elif [[ "$type" == "dir" ]]; then + _path_files -/ + elif [[ "$type" == "file" ]]; then + _path_files -f + fi + done + + if [ -n "$completions_with_descriptions" ]; then + _describe -V unsorted completions_with_descriptions -U + fi + + if [ -n "$completions" ]; then + compadd -U -V unsorted -a completions + fi +} + +if [[ $zsh_eval_context[-1] == loadautofunc ]]; then + # autoload from fpath, call function directly + %(complete_func)s "$@" +else + # eval/source/. command, register function for later + compdef %(complete_func)s %(prog_name)s +fi +""" + +_SOURCE_FISH = """\ +function %(complete_func)s; + set -l response (env %(complete_var)s=fish_complete COMP_WORDS=(commandline -cp) \ +COMP_CWORD=(commandline -t) %(prog_name)s); + + for completion in $response; + set -l metadata (string split "," $completion); + + if test $metadata[1] = "dir"; + __fish_complete_directories $metadata[2]; + else if test $metadata[1] = "file"; + __fish_complete_path $metadata[2]; + else if test $metadata[1] = "plain"; + echo $metadata[2]; + end; + end; +end; + +complete --no-files --command %(prog_name)s --arguments \ +"(%(complete_func)s)"; +""" + + +class _SourceVarsDict(t.TypedDict): + complete_func: str + complete_var: str + prog_name: str + + +class ShellComplete: + """Base class for providing shell completion support. A subclass for + a given shell will override attributes and methods to implement the + completion instructions (``source`` and ``complete``). + + :param cli: Command being called. + :param prog_name: Name of the executable in the shell. + :param complete_var: Name of the environment variable that holds + the completion instruction. + + .. versionadded:: 8.0 + """ + + name: t.ClassVar[str] + """Name to register the shell as with :func:`add_completion_class`. + This is used in completion instructions (``{name}_source`` and + ``{name}_complete``). + """ + + source_template: t.ClassVar[str] + """Completion script template formatted by :meth:`source`. This must + be provided by subclasses. + """ + + cli: Command + ctx_args: cabc.MutableMapping[str, t.Any] + prog_name: str + complete_var: str + + def __init__( + self, + cli: Command, + ctx_args: cabc.MutableMapping[str, t.Any], + prog_name: str, + complete_var: str, + ) -> None: + self.cli = cli + self.ctx_args = ctx_args + self.prog_name = prog_name + self.complete_var = complete_var + + @property + def func_name(self) -> str: + """The name of the shell function defined by the completion + script. + """ + safe_name = re.sub(r"\W*", "", self.prog_name.replace("-", "_"), flags=re.ASCII) + return f"_{safe_name}_completion" + + def source_vars(self) -> _SourceVarsDict: + """Vars for formatting :attr:`source_template`. + + By default this provides ``complete_func``, ``complete_var``, + and ``prog_name``. + """ + return { + "complete_func": self.func_name, + "complete_var": self.complete_var, + "prog_name": self.prog_name, + } + + def source(self) -> str: + """Produce the shell script that defines the completion + function. By default this ``%``-style formats + :attr:`source_template` with the dict returned by + :meth:`source_vars`. + """ + return self.source_template % self.source_vars() + + def get_completion_args(self) -> tuple[list[str], str]: + """Use the env vars defined by the shell script to return a + tuple of ``args, incomplete``. This must be implemented by + subclasses. + """ + raise NotImplementedError + + def get_completions( + self, args: list[str], incomplete: str + ) -> list[CompletionItem[str]]: + """Determine the context and last complete command or parameter + from the complete args. Call that object's ``shell_complete`` + method to get the completions for the incomplete value. + + :param args: List of complete args before the incomplete value. + :param incomplete: Value being completed. May be empty. + """ + ctx = _resolve_context(self.cli, self.ctx_args, self.prog_name, args) + obj, incomplete = _resolve_incomplete(ctx, args, incomplete) + return obj.shell_complete(ctx, incomplete) + + def format_completion(self, item: CompletionItem[str]) -> str: + """Format a completion item into the form recognized by the + shell script. This must be implemented by subclasses. + + :param item: Completion item to format. + """ + raise NotImplementedError + + def complete(self) -> str: + """Produce the completion data to send back to the shell. + + By default this calls :meth:`get_completion_args`, gets the + completions, then calls :meth:`format_completion` for each + completion. + """ + args, incomplete = self.get_completion_args() + completions = self.get_completions(args, incomplete) + out = [self.format_completion(item) for item in completions] + return "\n".join(out) + + +class BashComplete(ShellComplete): + """Shell completion for Bash.""" + + name: t.ClassVar[str] = "bash" + source_template: t.ClassVar[str] = _SOURCE_BASH + + @staticmethod + def _check_version() -> None: + import shutil + import subprocess + + bash_exe = shutil.which("bash") + + if bash_exe is None: + match = None + else: + output = subprocess.run( + [bash_exe, "--norc", "-c", 'echo "${BASH_VERSION}"'], + stdout=subprocess.PIPE, + ) + match = re.search(r"^(\d+)\.(\d+)\.\d+", output.stdout.decode()) + + if match is not None: + major, minor = match.groups() + + if major < "4" or major == "4" and minor < "4": + echo( + _( + "Shell completion is not supported for Bash" + " versions older than 4.4." + ), + err=True, + ) + else: + echo( + _("Couldn't detect Bash version, shell completion is not supported."), + err=True, + ) + + def source(self) -> str: + self._check_version() + return super().source() + + def get_completion_args(self) -> tuple[list[str], str]: + cwords = split_arg_string(os.environ["COMP_WORDS"]) + cword = int(os.environ["COMP_CWORD"]) + args = cwords[1:cword] + + try: + incomplete = cwords[cword] + except IndexError: + incomplete = "" + + return args, incomplete + + def format_completion(self, item: CompletionItem[t.Any]) -> str: + return f"{item.type},{item.value}" + + +class ZshComplete(ShellComplete): + """Shell completion for Zsh.""" + + name: t.ClassVar[str] = "zsh" + source_template: t.ClassVar[str] = _SOURCE_ZSH + + def get_completion_args(self) -> tuple[list[str], str]: + cwords = split_arg_string(os.environ["COMP_WORDS"]) + cword = int(os.environ["COMP_CWORD"]) + args = cwords[1:cword] + + try: + incomplete = cwords[cword] + except IndexError: + incomplete = "" + + return args, incomplete + + def format_completion(self, item: CompletionItem[str]) -> str: + help_ = item.help or "_" + # The zsh completion script uses `_describe` on items with help + # texts (which splits the item help from the item value at the + # first unescaped colon) and `compadd` on items without help + # text (which uses the item value as-is and does not support + # colon escaping). So escape colons in the item value if and + # only if the item help is not the sentinel "_" value, as used + # by the completion script. + # + # (The zsh completion script is potentially widely deployed, and + # thus harder to fix than this method.) + # + # See issue #1812 and issue #2703 for further context. + value = item.value.replace(":", r"\:") if help_ != "_" else item.value + return f"{item.type}\n{value}\n{help_}" + + +class FishComplete(ShellComplete): + """Shell completion for Fish.""" + + name: t.ClassVar[str] = "fish" + source_template: t.ClassVar[str] = _SOURCE_FISH + + def get_completion_args(self) -> tuple[list[str], str]: + cwords = split_arg_string(os.environ["COMP_WORDS"]) + incomplete = os.environ["COMP_CWORD"] + if incomplete: + incomplete = split_arg_string(incomplete)[0] + args = cwords[1:] + + # Fish stores the partial word in both COMP_WORDS and + # COMP_CWORD, remove it from complete args. + if incomplete and args and args[-1] == incomplete: + args.pop() + + return args, incomplete + + def format_completion(self, item: CompletionItem[str]) -> str: + """ + .. versionchanged:: 8.4.2 + Escape newlines and replace tabs with spaces in the help text to + fix completion errors with multi-line help strings. + """ + # According to https://fishshell.com/docs/current/cmds/complete.html + # Command substitutions found in ARGUMENTS should return a newline- + # separated list of arguments, and each argument may optionally have a tab + # character followed by the argument description. + if item.help: + help_ = item.help.replace("\n", "\\n").replace("\t", " ") + return f"{item.type},{item.value}\t{help_}" + + return f"{item.type},{item.value}" + + +_available_shells: t.Final[dict[str, type[ShellComplete]]] = { + "bash": BashComplete, + "fish": FishComplete, + "zsh": ZshComplete, +} + +_ShellCompleteT = t.TypeVar("_ShellCompleteT", bound="ShellComplete") + + +def add_completion_class( + cls: type[_ShellCompleteT], name: str | None = None +) -> type[_ShellCompleteT]: + """Register a :class:`ShellComplete` subclass under the given name. + The name will be provided by the completion instruction environment + variable during completion. + + :param cls: The completion class that will handle completion for the + shell. + :param name: Name to register the class under. Defaults to the + class's ``name`` attribute. + """ + if name is None: + name = cls.name + + _available_shells[name] = cls + + return cls + + +@t.overload +def get_completion_class(shell: t.Literal["bash"]) -> type[BashComplete]: ... +@t.overload +def get_completion_class(shell: t.Literal["fish"]) -> type[FishComplete]: ... +@t.overload +def get_completion_class(shell: t.Literal["zsh"]) -> type[ZshComplete]: ... +@t.overload +def get_completion_class(shell: str) -> type[ShellComplete] | None: ... +def get_completion_class(shell: str) -> type[ShellComplete] | None: + """Look up a registered :class:`ShellComplete` subclass by the name + provided by the completion instruction environment variable. If the + name isn't registered, returns ``None``. + + :param shell: Name the class is registered under. + """ + return _available_shells.get(shell) + + +def split_arg_string(string: str) -> list[str]: + """Split an argument string as with :func:`shlex.split`, but don't + fail if the string is incomplete. Ignores a missing closing quote or + incomplete escape sequence and uses the partial token as-is. + + .. code-block:: python + + split_arg_string("example 'my file") + ["example", "my file"] + + split_arg_string("example my\\") + ["example", "my"] + + :param string: String to split. + + .. versionchanged:: 8.2 + Moved to ``shell_completion`` from ``parser``. + """ + import shlex + + lex = shlex.shlex(string, posix=True) + lex.whitespace_split = True + lex.commenters = "" + out = [] + + try: + for token in lex: + out.append(token) + except ValueError: + # Raised when end-of-string is reached in an invalid state. Use + # the partial token as-is. The quote or escape character is in + # lex.state, not lex.token. + out.append(lex.token) + + return out + + +def _is_incomplete_argument(ctx: Context, param: Parameter) -> bool: + """Determine if the given parameter is an argument that can still + accept values. + + :param ctx: Invocation context for the command represented by the + parsed complete args. + :param param: Argument object being checked. + """ + if not isinstance(param, Argument): + return False + + value = ctx.params.get(param.name) + return ( + param.nargs == -1 + or ctx.get_parameter_source(param.name) is not ParameterSource.COMMANDLINE + or ( + param.nargs > 1 + and isinstance(value, (tuple, list)) + and len(value) < param.nargs + ) + ) + + +def _start_of_option(ctx: Context, value: str) -> bool: + """Check if the value looks like the start of an option.""" + if not value: + return False + + c = value[0] + return c in ctx._opt_prefixes + + +def _is_incomplete_option(ctx: Context, args: list[str], param: Parameter) -> bool: + """Determine if the given parameter is an option that needs a value. + + :param args: List of complete args before the incomplete value. + :param param: Option object being checked. + """ + if not isinstance(param, Option): + return False + + if param.is_flag or param.count: + return False + + last_option = None + + for index, arg in enumerate(reversed(args)): + if index + 1 > param.nargs: + break + + if _start_of_option(ctx, arg): + last_option = arg + break + + return last_option is not None and last_option in param.opts + + +def _resolve_context( + cli: Command, + ctx_args: cabc.MutableMapping[str, t.Any], + prog_name: str, + args: list[str], +) -> Context: + """Produce the context hierarchy starting with the command and + traversing the complete arguments. This only follows the commands, + it doesn't trigger input prompts or callbacks. + + :param cli: Command being called. + :param prog_name: Name of the executable in the shell. + :param args: List of complete args before the incomplete value. + """ + ctx_args["resilient_parsing"] = True + with cli.make_context(prog_name, args.copy(), **ctx_args) as ctx: + args = ctx._protected_args + ctx.args + + while args: + command = ctx.command + + if isinstance(command, Group): + if not command.chain: + name, cmd, args = command.resolve_command(ctx, args) + + if cmd is None: + return ctx + + with cmd.make_context( + name, args, parent=ctx, resilient_parsing=True + ) as sub_ctx: + ctx = sub_ctx + args = ctx._protected_args + ctx.args + else: + sub_ctx = ctx + + while args: + name, cmd, args = command.resolve_command(ctx, args) + + if cmd is None: + return ctx + + with cmd.make_context( + name, + args, + parent=ctx, + allow_extra_args=True, + allow_interspersed_args=False, + resilient_parsing=True, + ) as sub_sub_ctx: + sub_ctx = sub_sub_ctx + args = sub_ctx.args + + ctx = sub_ctx + args = [*sub_ctx._protected_args, *sub_ctx.args] + else: + break + + return ctx + + +def _resolve_incomplete( + ctx: Context, args: list[str], incomplete: str +) -> tuple[Command | Parameter, str]: + """Find the Click object that will handle the completion of the + incomplete value. Return the object and the incomplete value. + + :param ctx: Invocation context for the command represented by + the parsed complete args. + :param args: List of complete args before the incomplete value. + :param incomplete: Value being completed. May be empty. + """ + # Different shells treat an "=" between a long option name and + # value differently. Might keep the value joined, return the "=" + # as a separate item, or return the split name and value. Always + # split and discard the "=" to make completion easier. + if incomplete == "=": + incomplete = "" + elif "=" in incomplete and _start_of_option(ctx, incomplete): + name, _, incomplete = incomplete.partition("=") + args.append(name) + + # The "--" marker tells Click to stop treating values as options + # even if they start with the option character. If it hasn't been + # given and the incomplete arg looks like an option, the current + # command will provide option name completions. + if "--" not in args and _start_of_option(ctx, incomplete): + return ctx.command, incomplete + + params = ctx.command.get_params(ctx) + + # If the last complete arg is an option name with an incomplete + # value, the option will provide value completions. + for param in params: + if _is_incomplete_option(ctx, args, param): + return param, incomplete + + # It's not an option name or value. The first argument without a + # parsed value will provide value completions. + for param in params: + if _is_incomplete_argument(ctx, param): + return param, incomplete + + # There were no unparsed arguments, the command may be a group that + # will provide command name completions. + return ctx.command, incomplete diff --git a/venv/lib/python3.11/site-packages/click/termui.py b/venv/lib/python3.11/site-packages/click/termui.py new file mode 100644 index 0000000000000000000000000000000000000000..9bc88db14dd66c59ccc99e386b385573d474dfd3 --- /dev/null +++ b/venv/lib/python3.11/site-packages/click/termui.py @@ -0,0 +1,945 @@ +from __future__ import annotations + +import collections.abc as cabc +import inspect +import io +import itertools +import re +import sys +import typing as t +from contextlib import AbstractContextManager +from contextlib import redirect_stdout +from gettext import gettext as _ + +from ._compat import isatty +from ._compat import strip_ansi +from ._compat import WIN +from .exceptions import Abort +from .exceptions import UsageError +from .globals import resolve_color_default +from .types import Choice +from .types import convert_type +from .types import ParamType +from .utils import echo +from .utils import LazyFile + +if t.TYPE_CHECKING: + from ._termui_impl import ProgressBar + +V = t.TypeVar("V") + +# The prompt functions to use. The doc tools currently override these +# functions to customize how they work. +visible_prompt_func: t.Callable[[str], str] = input + +_ansi_colors = { + "black": 30, + "red": 31, + "green": 32, + "yellow": 33, + "blue": 34, + "magenta": 35, + "cyan": 36, + "white": 37, + "reset": 39, + "bright_black": 90, + "bright_red": 91, + "bright_green": 92, + "bright_yellow": 93, + "bright_blue": 94, + "bright_magenta": 95, + "bright_cyan": 96, + "bright_white": 97, +} +_ansi_reset_all = "\033[0m" + + +_HIDDEN_INPUT_MASK = "'***'" + + +def _mask_hidden_input(message: str, value: str) -> str: + """Replace occurrences of ``value`` in ``message`` with a fixed mask. + + Both ``repr(value)`` (the form built-in :class:`ParamType` errors use + via ``{value!r}``) and the raw value are masked. The raw-value pass + uses word-boundary lookarounds so a substring like ``"1"`` does not + match inside ``"10"``, and ``"ent"`` does not match inside + ``"Authentication"``. The empty string is skipped to avoid matching + at every boundary. + """ + message = message.replace(repr(value), _HIDDEN_INPUT_MASK) + if value: + message = re.sub( + rf"(? str: + import getpass + + return getpass.getpass(prompt) + + +def _readline_prompt(func: t.Callable[[str], str], text: str, err: bool) -> str: + """Call a prompt function, passing the full prompt on non-Windows so + readline can handle line editing and cursor positioning correctly. + + On Windows the prompt is written separately via :func:`echo` for + colorama support, with only the last character passed to *func*. + """ + if WIN: + # Write the prompt separately so that we get nice coloring + # through colorama on Windows. + echo(text[:-1], nl=False, err=err) + # Echo the last character to stdout to work around an issue + # where readline causes backspace to clear the whole line. + return func(text[-1:]) + if err: + with redirect_stdout(sys.stderr): + return func(text) + return func(text) + + +def _build_prompt( + text: str, + suffix: str, + show_default: bool | str = False, + default: t.Any | None = None, + show_choices: bool = True, + type: ParamType[t.Any] | None = None, +) -> str: + prompt = text + if type is not None and show_choices and isinstance(type, Choice): + prompt += f" ({', '.join(map(str, type.choices))})" + if isinstance(show_default, str): + default = f"({show_default})" + if default is not None and show_default: + prompt = f"{prompt} [{_format_default(default)}]" + return f"{prompt}{suffix}" + + +def _format_default(default: t.Any) -> t.Any: + if isinstance(default, (io.IOBase, LazyFile)) and hasattr(default, "name"): + return default.name + + return default + + +def prompt( + text: str, + default: t.Any | None = None, + hide_input: bool = False, + confirmation_prompt: bool | str = False, + type: ParamType[t.Any] | t.Any | None = None, + value_proc: t.Callable[[str], t.Any] | None = None, + prompt_suffix: str = ": ", + show_default: bool | str = True, + err: bool = False, + show_choices: bool = True, +) -> t.Any: + """Prompts a user for input. This is a convenience function that can + be used to prompt a user for input later. + + If the user aborts the input by sending an interrupt signal, this + function will catch it and raise a :exc:`Abort` exception. + + :param text: the text to show for the prompt. + :param default: the default value to use if no input happens. If this + is not given it will prompt until it's aborted. + :param hide_input: if this is set to true then the input value will + be hidden. + :param confirmation_prompt: Prompt a second time to confirm the + value. Can be set to a string instead of ``True`` to customize + the message. + :param type: the type to use to check the value against. + :param value_proc: if this parameter is provided it's a function that + is invoked instead of the type conversion to + convert a value. + :param prompt_suffix: a suffix that should be added to the prompt. + :param show_default: shows or hides the default value in the prompt. + If this value is a string, it shows that string + in parentheses instead of the actual value. + :param err: if set to true the file defaults to ``stderr`` instead of + ``stdout``, the same as with echo. + :param show_choices: Show or hide choices if the passed type is a Choice. + For example if type is a Choice of either day or week, + show_choices is true and text is "Group by" then the + prompt will be "Group by (day, week): ". + + .. versionchanged:: 8.3.3 + ``show_default`` can be a string to show a custom value instead + of the actual default, matching the help text behavior. + + .. versionchanged:: 8.3.1 + A space is no longer appended to the prompt. + + .. versionadded:: 8.0 + ``confirmation_prompt`` can be a custom string. + + .. versionadded:: 7.0 + Added the ``show_choices`` parameter. + + .. versionadded:: 6.0 + Added unicode support for cmd.exe on Windows. + + .. versionadded:: 4.0 + Added the `err` parameter. + + """ + + def prompt_func(text: str) -> str: + f = hidden_prompt_func if hide_input else visible_prompt_func + try: + return _readline_prompt(f, text, err) + except (KeyboardInterrupt, EOFError): + # getpass doesn't print a newline if the user aborts input with ^C. + # Allegedly this behavior is inherited from getpass(3). + # A doc bug has been filed at https://bugs.python.org/issue24711 + if hide_input: + echo(None, err=err) + raise Abort() from None + + if value_proc is None: + value_proc = convert_type(type, default) + + prompt = _build_prompt( + text, prompt_suffix, show_default, default, show_choices, type + ) + + if confirmation_prompt: + if confirmation_prompt is True: + confirmation_prompt = _("Repeat for confirmation") + + confirmation_prompt = _build_prompt(confirmation_prompt, prompt_suffix) + + while True: + while True: + value = prompt_func(prompt) + if value: + break + elif default is not None: + value = default + break + try: + result = value_proc(value) + except UsageError as e: + message = _mask_hidden_input(e.message, value) if hide_input else e.message + echo(_("Error: {message}").format(message=message), err=err) + continue + if not confirmation_prompt: + return result + while True: + value2 = prompt_func(confirmation_prompt) + is_empty = not value and not value2 + if value2 or is_empty: + break + if value == value2: + return result + echo(_("Error: The two entered values do not match."), err=err) + + +def confirm( + text: str, + default: bool | None = False, + abort: bool = False, + prompt_suffix: str = ": ", + show_default: bool = True, + err: bool = False, +) -> bool: + """Prompts for confirmation (yes/no question). + + If the user aborts the input by sending a interrupt signal this + function will catch it and raise a :exc:`Abort` exception. + + :param text: the question to ask. + :param default: The default value to use when no input is given. If + ``None``, repeat until input is given. + :param abort: if this is set to `True` a negative answer aborts the + exception by raising :exc:`Abort`. + :param prompt_suffix: a suffix that should be added to the prompt. + :param show_default: shows or hides the default value in the prompt. + :param err: if set to true the file defaults to ``stderr`` instead of + ``stdout``, the same as with echo. + + .. versionchanged:: 8.3.1 + A space is no longer appended to the prompt. + + .. versionchanged:: 8.0 + Repeat until input is given if ``default`` is ``None``. + + .. versionadded:: 4.0 + Added the ``err`` parameter. + """ + prompt = _build_prompt( + text, + prompt_suffix, + show_default, + "y/n" if default is None else ("Y/n" if default else "y/N"), + ) + + while True: + try: + value = _readline_prompt(visible_prompt_func, prompt, err).lower().strip() + except (KeyboardInterrupt, EOFError): + raise Abort() from None + if value in ("y", "yes"): + rv = True + elif value in ("n", "no"): + rv = False + elif default is not None and value == "": + rv = default + else: + echo(_("Error: invalid input"), err=err) + continue + break + if abort and not rv: + raise Abort() + return rv + + +def get_pager_file( + color: bool | None = None, +) -> t.ContextManager[t.TextIO]: + """Context manager. + + Yields a writable file-like object which can be used as an output pager. + + .. versionadded:: 8.4.0 + + :param color: controls if the pager supports ANSI colors or not. The + default is autodetection. + """ + from ._termui_impl import get_pager_file + + color = resolve_color_default(color) + + return get_pager_file(color=color) + + +def echo_via_pager( + text_or_generator: cabc.Iterable[str] | t.Callable[[], cabc.Iterable[str]] | str, + color: bool | None = None, +) -> None: + """This function takes a text and shows it via an environment specific + pager on stdout. + + .. versionchanged:: 3.0 + Added the `color` flag. + + :param text_or_generator: the text to page, or alternatively, a + generator emitting the text to page. + :param color: controls if the pager supports ANSI colors or not. The + default is autodetection. + """ + + if inspect.isgeneratorfunction(text_or_generator): + i = t.cast("t.Callable[[], cabc.Iterable[str]]", text_or_generator)() + elif isinstance(text_or_generator, str): + i = [text_or_generator] + else: + i = iter(t.cast("cabc.Iterable[str]", text_or_generator)) + + # convert every element of i to a text type if necessary + text_generator = (el if isinstance(el, str) else str(el) for el in i) + + with get_pager_file(color=color) as pager: + for text in itertools.chain(text_generator, "\n"): + pager.write(text) + # Flush after each write so a slow generator streams to the pager + # incrementally rather than staying invisible until the pipe buffer + # fills (~8 KB). + pager.flush() + + +@t.overload +def progressbar( + *, + length: int, + label: str | None = None, + hidden: bool = False, + show_eta: bool = True, + show_percent: bool | None = None, + show_pos: bool = False, + fill_char: str = "#", + empty_char: str = "-", + bar_template: str = "%(label)s [%(bar)s] %(info)s", + info_sep: str = " ", + width: int = 36, + file: t.TextIO | None = None, + color: bool | None = None, + update_min_steps: int = 1, +) -> ProgressBar[int]: ... + + +@t.overload +def progressbar( + iterable: cabc.Iterable[V] | None = None, + length: int | None = None, + label: str | None = None, + hidden: bool = False, + show_eta: bool = True, + show_percent: bool | None = None, + show_pos: bool = False, + item_show_func: t.Callable[[V | None], str | None] | None = None, + fill_char: str = "#", + empty_char: str = "-", + bar_template: str = "%(label)s [%(bar)s] %(info)s", + info_sep: str = " ", + width: int = 36, + file: t.TextIO | None = None, + color: bool | None = None, + update_min_steps: int = 1, +) -> ProgressBar[V]: ... + + +def progressbar( + iterable: cabc.Iterable[V] | None = None, + length: int | None = None, + label: str | None = None, + hidden: bool = False, + show_eta: bool = True, + show_percent: bool | None = None, + show_pos: bool = False, + item_show_func: t.Callable[[V | None], str | None] | None = None, + fill_char: str = "#", + empty_char: str = "-", + bar_template: str = "%(label)s [%(bar)s] %(info)s", + info_sep: str = " ", + width: int = 36, + file: t.TextIO | None = None, + color: bool | None = None, + update_min_steps: int = 1, +) -> ProgressBar[V]: + """This function creates an iterable context manager that can be used + to iterate over something while showing a progress bar. It will + either iterate over the `iterable` or `length` items (that are counted + up). While iteration happens, this function will print a rendered + progress bar to the given `file` (defaults to stdout) and will attempt + to calculate remaining time and more. By default, this progress bar + will not be rendered if the file is not a terminal. + + The context manager creates the progress bar. When the context + manager is entered the progress bar is already created. With every + iteration over the progress bar, the iterable passed to the bar is + advanced and the bar is updated. When the context manager exits, + a newline is printed and the progress bar is finalized on screen. + + Note: The progress bar is currently designed for use cases where the + total progress can be expected to take at least several seconds. + Because of this, the ProgressBar class object won't display + progress that is considered too fast, and progress where the time + between steps is less than a second. + + No printing must happen or the progress bar will be unintentionally + destroyed. + + Example usage:: + + with progressbar(items) as bar: + for item in bar: + do_something_with(item) + + Alternatively, if no iterable is specified, one can manually update the + progress bar through the `update()` method instead of directly + iterating over the progress bar. The update method accepts the number + of steps to increment the bar with:: + + with progressbar(length=chunks.total_bytes) as bar: + for chunk in chunks: + process_chunk(chunk) + bar.update(chunks.bytes) + + The ``update()`` method also takes an optional value specifying the + ``current_item`` at the new position. This is useful when used + together with ``item_show_func`` to customize the output for each + manual step:: + + with click.progressbar( + length=total_size, + label='Unzipping archive', + item_show_func=lambda a: a.filename + ) as bar: + for archive in zip_file: + archive.extract() + bar.update(archive.size, archive) + + :param iterable: an iterable to iterate over. If not provided the length + is required. + :param length: the number of items to iterate over. By default the + progressbar will attempt to ask the iterator about its + length, which might or might not work. If an iterable is + also provided this parameter can be used to override the + length. If an iterable is not provided the progress bar + will iterate over a range of that length. + :param label: the label to show next to the progress bar. + :param hidden: hide the progressbar. Defaults to ``False``. When no tty is + detected, it will only print the progressbar label. Setting this to + ``False`` also disables that. + :param show_eta: enables or disables the estimated time display. This is + automatically disabled if the length cannot be + determined. + :param show_percent: enables or disables the percentage display. The + default is `True` if the iterable has a length or + `False` if not. + :param show_pos: enables or disables the absolute position display. The + default is `False`. + :param item_show_func: A function called with the current item which + can return a string to show next to the progress bar. If the + function returns ``None`` nothing is shown. The current item can + be ``None``, such as when entering and exiting the bar. + :param fill_char: the character to use to show the filled part of the + progress bar. + :param empty_char: the character to use to show the non-filled part of + the progress bar. + :param bar_template: the format string to use as template for the bar. + The parameters in it are ``label`` for the label, + ``bar`` for the progress bar and ``info`` for the + info section. + :param info_sep: the separator between multiple info items (eta etc.) + :param width: the width of the progress bar in characters, 0 means full + terminal width + :param file: The file to write to. If this is not a terminal then + only the label is printed. + :param color: controls if the terminal supports ANSI colors or not. The + default is autodetection. This is only needed if ANSI + codes are included anywhere in the progress bar output + which is not the case by default. + :param update_min_steps: Render only when this many updates have + completed. This allows tuning for very fast iterators. + + .. versionadded:: 8.2 + The ``hidden`` argument. + + .. versionchanged:: 8.0 + Output is shown even if execution time is less than 0.5 seconds. + + .. versionchanged:: 8.0 + ``item_show_func`` shows the current item, not the previous one. + + .. versionchanged:: 8.0 + Labels are echoed if the output is not a TTY. Reverts a change + in 7.0 that removed all output. + + .. versionadded:: 8.0 + The ``update_min_steps`` parameter. + + .. versionadded:: 4.0 + The ``color`` parameter and ``update`` method. + + .. versionadded:: 2.0 + """ + from ._termui_impl import ProgressBar + + color = resolve_color_default(color) + return ProgressBar( + iterable=iterable, + length=length, + hidden=hidden, + show_eta=show_eta, + show_percent=show_percent, + show_pos=show_pos, + item_show_func=item_show_func, + fill_char=fill_char, + empty_char=empty_char, + bar_template=bar_template, + info_sep=info_sep, + file=file, + label=label, + width=width, + color=color, + update_min_steps=update_min_steps, + ) + + +def clear() -> None: + """Clears the terminal screen. This will have the effect of clearing + the whole visible space of the terminal and moving the cursor to the + top left. This does not do anything if not connected to a terminal. + + .. versionadded:: 2.0 + """ + if not isatty(sys.stdout): + return + + # ANSI escape \033[2J clears the screen, \033[1;1H moves the cursor + echo("\033[2J\033[1;1H", nl=False) + + +def _interpret_color(color: int | tuple[int, int, int] | str, offset: int = 0) -> str: + if isinstance(color, int): + return f"{38 + offset};5;{color:d}" + + if isinstance(color, (tuple, list)): + r, g, b = color + return f"{38 + offset};2;{r:d};{g:d};{b:d}" + + return str(_ansi_colors[color] + offset) + + +def style( + text: t.Any, + fg: int | tuple[int, int, int] | str | None = None, + bg: int | tuple[int, int, int] | str | None = None, + bold: bool | None = None, + dim: bool | None = None, + underline: bool | None = None, + overline: bool | None = None, + italic: bool | None = None, + blink: bool | None = None, + reverse: bool | None = None, + strikethrough: bool | None = None, + reset: bool = True, +) -> str: + """Styles a text with ANSI styles and returns the new string. By + default the styling is self contained which means that at the end + of the string a reset code is issued. This can be prevented by + passing ``reset=False``. + + Examples:: + + click.echo(click.style('Hello World!', fg='green')) + click.echo(click.style('ATTENTION!', blink=True)) + click.echo(click.style('Some things', reverse=True, fg='cyan')) + click.echo(click.style('More colors', fg=(255, 12, 128), bg=117)) + + Supported color names: + + * ``black`` (might be a gray) + * ``red`` + * ``green`` + * ``yellow`` (might be an orange) + * ``blue`` + * ``magenta`` + * ``cyan`` + * ``white`` (might be light gray) + * ``bright_black`` + * ``bright_red`` + * ``bright_green`` + * ``bright_yellow`` + * ``bright_blue`` + * ``bright_magenta`` + * ``bright_cyan`` + * ``bright_white`` + * ``reset`` (reset the color code only) + + If the terminal supports it, color may also be specified as: + + - An integer in the interval [0, 255]. The terminal must support + 8-bit/256-color mode. + - An RGB tuple of three integers in [0, 255]. The terminal must + support 24-bit/true-color mode. + + See https://en.wikipedia.org/wiki/ANSI_color and + https://gist.github.com/XVilka/8346728 for more information. + + :param text: the string to style with ansi codes. + :param fg: if provided this will become the foreground color. + :param bg: if provided this will become the background color. + :param bold: if provided this will enable or disable bold mode. + :param dim: if provided this will enable or disable dim mode. This is + badly supported. + :param underline: if provided this will enable or disable underline. + :param overline: if provided this will enable or disable overline. + :param italic: if provided this will enable or disable italic. + :param blink: if provided this will enable or disable blinking. + :param reverse: if provided this will enable or disable inverse + rendering (foreground becomes background and the + other way round). + :param strikethrough: if provided this will enable or disable + striking through text. + :param reset: by default a reset-all code is added at the end of the + string which means that styles do not carry over. This + can be disabled to compose styles. + + .. versionchanged:: 8.0 + A non-string ``message`` is converted to a string. + + .. versionchanged:: 8.0 + Added support for 256 and RGB color codes. + + .. versionchanged:: 8.0 + Added the ``strikethrough``, ``italic``, and ``overline`` + parameters. + + .. versionchanged:: 7.0 + Added support for bright colors. + + .. versionadded:: 2.0 + """ + if not isinstance(text, str): + text = str(text) + + bits = [] + + if fg: + try: + bits.append(f"\033[{_interpret_color(fg)}m") + except KeyError: + raise TypeError(_("Unknown color {colour!r}").format(colour=fg)) from None + + if bg: + try: + bits.append(f"\033[{_interpret_color(bg, 10)}m") + except KeyError: + raise TypeError(_("Unknown color {colour!r}").format(colour=bg)) from None + + if bold is not None: + bits.append(f"\033[{1 if bold else 22}m") + if dim is not None: + bits.append(f"\033[{2 if dim else 22}m") + if underline is not None: + bits.append(f"\033[{4 if underline else 24}m") + if overline is not None: + bits.append(f"\033[{53 if overline else 55}m") + if italic is not None: + bits.append(f"\033[{3 if italic else 23}m") + if blink is not None: + bits.append(f"\033[{5 if blink else 25}m") + if reverse is not None: + bits.append(f"\033[{7 if reverse else 27}m") + if strikethrough is not None: + bits.append(f"\033[{9 if strikethrough else 29}m") + bits.append(text) + if reset: + bits.append(_ansi_reset_all) + return "".join(bits) + + +def unstyle(text: str) -> str: + """Removes ANSI styling information from a string. Usually it's not + necessary to use this function as Click's echo function will + automatically remove styling if necessary. + + .. versionadded:: 2.0 + + :param text: the text to remove style information from. + """ + return strip_ansi(text) + + +def secho( + message: t.Any | None = None, + file: t.IO[t.AnyStr] | None = None, + nl: bool = True, + err: bool = False, + color: bool | None = None, + **styles: t.Any, +) -> None: + """This function combines :func:`echo` and :func:`style` into one + call. As such the following two calls are the same:: + + click.secho('Hello World!', fg='green') + click.echo(click.style('Hello World!', fg='green')) + + All keyword arguments are forwarded to the underlying functions + depending on which one they go with. + + Non-string types will be converted to :class:`str`. However, + :class:`bytes` are passed directly to :meth:`echo` without applying + style. If you want to style bytes that represent text, call + :meth:`bytes.decode` first. + + .. versionchanged:: 8.0 + A non-string ``message`` is converted to a string. Bytes are + passed through without style applied. + + .. versionadded:: 2.0 + """ + if message is not None and not isinstance(message, (bytes, bytearray)): + message = style(message, **styles) + + return echo(message, file=file, nl=nl, err=err, color=color) + + +@t.overload +def edit( + text: bytes | bytearray, + editor: str | None = None, + env: cabc.Mapping[str, str] | None = None, + require_save: bool = False, + extension: str = ".txt", +) -> bytes | None: ... + + +@t.overload +def edit( + text: str, + editor: str | None = None, + env: cabc.Mapping[str, str] | None = None, + require_save: bool = True, + extension: str = ".txt", +) -> str | None: ... + + +@t.overload +def edit( + text: None = None, + editor: str | None = None, + env: cabc.Mapping[str, str] | None = None, + require_save: bool = True, + extension: str = ".txt", + filename: str | cabc.Iterable[str] | None = None, +) -> None: ... + + +def edit( + text: str | bytes | bytearray | None = None, + editor: str | None = None, + env: cabc.Mapping[str, str] | None = None, + require_save: bool = True, + extension: str = ".txt", + filename: str | cabc.Iterable[str] | None = None, +) -> str | bytes | bytearray | None: + r"""Edits the given text in the defined editor. If an editor is given + (should be the full path to the executable but the regular operating + system search path is used for finding the executable) it overrides + the detected editor. Optionally, some environment variables can be + used. If the editor is closed without changes, `None` is returned. In + case a file is edited directly the return value is always `None` and + `require_save` and `extension` are ignored. + + If the editor cannot be opened a :exc:`UsageError` is raised. + + Note for Windows: to simplify cross-platform usage, the newlines are + automatically converted from POSIX to Windows and vice versa. As such, + the message here will have ``\n`` as newline markers. + + :param text: the text to edit. + :param editor: optionally the editor to use. Defaults to automatic + detection. + :param env: environment variables to forward to the editor. + :param require_save: if this is true, then not saving in the editor + will make the return value become `None`. + :param extension: the extension to tell the editor about. This defaults + to `.txt` but changing this might change syntax + highlighting. + :param filename: if provided it will edit this file instead of the + provided text contents. It will not use a temporary + file as an indirection in that case. If the editor supports + editing multiple files at once, a sequence of files may be + passed as well. Invoke `click.file` once per file instead + if multiple files cannot be managed at once or editing the + files serially is desired. + + .. versionchanged:: 8.2.0 + ``filename`` now accepts any ``Iterable[str]`` in addition to a ``str`` + if the ``editor`` supports editing multiple files at once. + + """ + from ._termui_impl import Editor + + ed = Editor(editor=editor, env=env, require_save=require_save, extension=extension) + + if filename is None: + return ed.edit(text) + + if isinstance(filename, str): + filename = (filename,) + + ed.edit_files(filenames=filename) + return None + + +def launch(url: str, wait: bool = False, locate: bool = False) -> int: + """This function launches the given URL (or filename) in the default + viewer application for this file type. If this is an executable, it + might launch the executable in a new session. The return value is + the exit code of the launched application. Usually, ``0`` indicates + success. + + Examples:: + + click.launch('https://click.palletsprojects.com/') + click.launch('/my/downloaded/file', locate=True) + + .. versionadded:: 2.0 + + :param url: URL or filename of the thing to launch. + :param wait: Wait for the program to exit before returning. This + only works if the launched program blocks. In particular, + ``xdg-open`` on Linux does not block. + :param locate: if this is set to `True` then instead of launching the + application associated with the URL it will attempt to + launch a file manager with the file located. This + might have weird effects if the URL does not point to + the filesystem. + """ + from ._termui_impl import open_url + + return open_url(url, wait=wait, locate=locate) + + +# If this is provided, getchar() calls into this instead. This is used +# for unittesting purposes. +_getchar: t.Callable[[bool], str] | None = None + + +def getchar(echo: bool = False) -> str: + """Fetches a single character from the terminal and returns it. This + will always return a unicode character and under certain rare + circumstances this might return more than one character. The + situations which more than one character is returned is when for + whatever reason multiple characters end up in the terminal buffer or + standard input was not actually a terminal. + + Note that this will always read from the terminal, even if something + is piped into the standard input. + + Note for Windows: in rare cases when typing non-ASCII characters, this + function might wait for a second character and then return both at once. + This is because certain Unicode characters look like special-key markers. + + .. versionadded:: 2.0 + + :param echo: if set to `True`, the character read will also show up on + the terminal. The default is to not show it. + """ + global _getchar + + if _getchar is None: + from ._termui_impl import getchar as f + + _getchar = f + + return _getchar(echo) + + +def raw_terminal() -> AbstractContextManager[int]: + from ._termui_impl import raw_terminal as f + + return f() + + +def pause(info: str | None = None, err: bool = False) -> None: + """This command stops execution and waits for the user to press any + key to continue. This is similar to the Windows batch "pause" + command. If the program is not run through a terminal, this command + will instead do nothing. + + .. versionadded:: 2.0 + + .. versionadded:: 4.0 + Added the `err` parameter. + + :param info: The message to print before pausing. Defaults to + ``"Press any key to continue..."``. + :param err: if set to message goes to ``stderr`` instead of + ``stdout``, the same as with echo. + """ + if not isatty(sys.stdin) or not isatty(sys.stdout): + return + + if info is None: + info = _("Press any key to continue...") + + try: + if info: + echo(info, nl=False, err=err) + try: + getchar() + except (KeyboardInterrupt, EOFError): + pass + finally: + if info: + echo(err=err) diff --git a/venv/lib/python3.11/site-packages/click/testing.py b/venv/lib/python3.11/site-packages/click/testing.py new file mode 100644 index 0000000000000000000000000000000000000000..19fae4a620ea8ae28410cb8b29d965c1ac8cc524 --- /dev/null +++ b/venv/lib/python3.11/site-packages/click/testing.py @@ -0,0 +1,772 @@ +from __future__ import annotations + +import collections.abc as cabc +import contextlib +import io +import os +import pdb +import shlex +import sys +import tempfile +import typing as t +from types import TracebackType + +from . import _compat +from . import formatting +from . import termui +from . import utils +from ._compat import _find_binary_reader + +if t.TYPE_CHECKING: + from _typeshed import ReadableBuffer + + from .core import Command + +if sys.platform == "win32": + CaptureMode: t.TypeAlias = t.Literal["sys"] # pyright: ignore[reportRedeclaration] +else: + CaptureMode: t.TypeAlias = t.Literal["sys", "fd"] # pyright: ignore[reportRedeclaration] +ExceptionInfo: t.TypeAlias = tuple[type[BaseException], BaseException, TracebackType] + + +class EchoingStdin: + _input: t.BinaryIO + _output: t.BinaryIO + _paused: bool + + def __init__(self, input: t.BinaryIO, output: t.BinaryIO) -> None: + self._input = input + self._output = output + self._paused = False + + def __getattr__(self, x: str) -> t.Any: + return getattr(self._input, x) + + def _echo(self, rv: bytes) -> bytes: + if not self._paused: + self._output.write(rv) + + return rv + + def read(self, n: int = -1) -> bytes: + return self._echo(self._input.read(n)) + + def read1(self, n: int = -1) -> bytes: + return self._echo(self._input.read1(n)) # type: ignore + + def readline(self, n: int = -1) -> bytes: + return self._echo(self._input.readline(n)) + + def readlines(self) -> list[bytes]: + return [self._echo(x) for x in self._input.readlines()] + + def __iter__(self) -> cabc.Iterator[bytes]: + return iter(self._echo(x) for x in self._input) + + def __repr__(self) -> str: + return repr(self._input) + + +@contextlib.contextmanager +def _pause_echo(stream: EchoingStdin | None) -> cabc.Generator[None]: + if stream is None: + yield + else: + stream._paused = True + yield + stream._paused = False + + +class _FDCapture: + """Redirect a file descriptor to a temporary file for capture. + + Saves the current target of *targetfd* via :func:`os.dup`, then + redirects it to a temporary file via :func:`os.dup2`. On + :meth:`stop`, restores the original ``fd`` and returns the captured + bytes. Inspired by Pytest's ``FDCapture``. + + .. versionadded:: 8.4.0 + """ + + _targetfd: int + saved_fd: int + _tmpfile: t.BinaryIO | None + + def __init__(self, targetfd: int) -> None: + self._targetfd = targetfd + self.saved_fd = -1 + self._tmpfile = None + + def start(self) -> None: + self.saved_fd = os.dup(self._targetfd) + self._tmpfile = tempfile.TemporaryFile(buffering=0) + os.dup2(self._tmpfile.fileno(), self._targetfd) + + def stop(self) -> bytes: + assert self._tmpfile is not None, "_FDCapture.start() was not called" + os.dup2(self.saved_fd, self._targetfd) + os.close(self.saved_fd) + self.saved_fd = -1 + self._tmpfile.seek(0) + data = self._tmpfile.read() + self._tmpfile.close() + self._tmpfile = None + return data + + +class BytesIOCopy(io.BytesIO): + """Patch ``io.BytesIO`` to let the written stream be copied to another. + + .. versionadded:: 8.2 + """ + + copy_to: io.BytesIO + + def __init__(self, copy_to: io.BytesIO) -> None: + super().__init__() + self.copy_to = copy_to + + def flush(self) -> None: + super().flush() + self.copy_to.flush() + + def write(self, b: ReadableBuffer) -> int: + self.copy_to.write(b) + return super().write(b) + + +class StreamMixer: + """Mixes `` and `` streams. + + The result is available in the ``output`` attribute. + + .. versionadded:: 8.2 + """ + + output: io.BytesIO + stdout: BytesIOCopy + stderr: BytesIOCopy + + def __init__(self) -> None: + self.output = io.BytesIO() + self.stdout = BytesIOCopy(copy_to=self.output) + self.stderr = BytesIOCopy(copy_to=self.output) + + +class _NamedTextIOWrapper(io.TextIOWrapper): + """A :class:`~io.TextIOWrapper` with custom ``name`` and ``mode`` + that does not close its underlying buffer. + + When ``CliRunner`` runs in ``fd`` mode, ``_original_fd`` is patched to + point at the saved (pre-redirection) ``fd``, so C-level consumers that call + :meth:`fileno` (like ``faulthandler`` or ``subprocess``) keep working. In + the default ``sys`` mode ``_original_fd`` stays at ``-1`` and + :meth:`fileno` raises :exc:`io.UnsupportedOperation`, matching the + pre-``8.3.3`` behavior. + """ + + _name: str + _mode: str + _original_fd: int + + def __init__( + self, + buffer: t.BinaryIO, + name: str, + mode: str, + **kwargs: t.Any, + ) -> None: + super().__init__(buffer, **kwargs) + self._name = name + self._mode = mode + self._original_fd = -1 + + def close(self) -> None: + """The buffer this object contains belongs to some other object, + so prevent the default ``__del__`` implementation from closing + that buffer. + + .. versionadded:: 8.3.2 + """ + + def fileno(self) -> int: + """Return the file descriptor of the saved original stream when + ``CliRunner`` runs in ``fd`` mode. Otherwise delegate to + :class:`~io.TextIOWrapper`, which raises + :exc:`io.UnsupportedOperation` for a ``BytesIO``-backed buffer. + """ + if self._original_fd >= 0: + return self._original_fd + return super().fileno() + + @property + def name(self) -> str: + return self._name + + @property + def mode(self) -> str: + return self._mode + + +def make_input_stream( + input: str | bytes | t.IO[t.Any] | None, charset: str +) -> t.BinaryIO: + # Is already an input stream. + if hasattr(input, "read"): + rv = _find_binary_reader(t.cast("t.IO[t.Any]", input)) + + if rv is not None: + return rv + + raise TypeError("Could not find binary reader for input stream.") + + if input is None: + input = b"" + elif isinstance(input, str): + input = input.encode(charset) + + return io.BytesIO(input) + + +class Result: + """Holds the captured result of an invoked CLI script. + + :param runner: The runner that created the result + :param stdout_bytes: The standard output as bytes. + :param stderr_bytes: The standard error as bytes. + :param output_bytes: A mix of ``stdout_bytes`` and ``stderr_bytes``, as the + user would see it in its terminal. + :param return_value: The value returned from the invoked command. + :param exit_code: The exit code as integer. + :param exception: The exception that happened if one did. + :param exc_info: Exception information (exception type, exception instance, + traceback type). + + .. versionchanged:: 8.2 + ``stderr_bytes`` no longer optional, ``output_bytes`` introduced and + ``mix_stderr`` has been removed. + + .. versionadded:: 8.0 + Added ``return_value``. + """ + + runner: CliRunner + stdout_bytes: bytes + stderr_bytes: bytes + output_bytes: bytes + return_value: t.Any + exit_code: int + exception: BaseException | None + exc_info: ExceptionInfo | None + + def __init__( + self, + runner: CliRunner, + stdout_bytes: bytes, + stderr_bytes: bytes, + output_bytes: bytes, + return_value: t.Any, + exit_code: int, + exception: BaseException | None, + exc_info: ExceptionInfo | None = None, + ) -> None: + self.runner = runner + self.stdout_bytes = stdout_bytes + self.stderr_bytes = stderr_bytes + self.output_bytes = output_bytes + self.return_value = return_value + self.exit_code = exit_code + self.exception = exception + self.exc_info = exc_info + + @property + def output(self) -> str: + """The terminal output as unicode string, as the user would see it. + + .. versionchanged:: 8.2 + No longer a proxy for ``self.stdout``. Now has its own independent stream + that is mixing `` and ``, in the order they were written. + """ + return self.output_bytes.decode(self.runner.charset, "replace").replace( + "\r\n", "\n" + ) + + @property + def stdout(self) -> str: + """The standard output as unicode string.""" + return self.stdout_bytes.decode(self.runner.charset, "replace").replace( + "\r\n", "\n" + ) + + @property + def stderr(self) -> str: + """The standard error as unicode string. + + .. versionchanged:: 8.2 + No longer raise an exception, always returns the `` string. + """ + return self.stderr_bytes.decode(self.runner.charset, "replace").replace( + "\r\n", "\n" + ) + + def __repr__(self) -> str: + exc_str = repr(self.exception) if self.exception else "okay" + return f"<{type(self).__name__} {exc_str}>" + + +class CliRunner: + """The CLI runner provides functionality to invoke a Click command line + script for unittesting purposes in a isolated environment. This only + works in single-threaded systems without any concurrency as it changes the + global interpreter state. + + :param charset: the character set for the input and output data. + :param env: a dictionary with environment variables for overriding. + :param echo_stdin: if this is set to `True`, then reading from `` writes + to ``. This is useful for showing examples in + some circumstances. Note that regular prompts + will automatically echo the input. + :param catch_exceptions: Whether to catch any exceptions other than + ``SystemExit`` when running :meth:`~CliRunner.invoke`. + :param capture: Selects the output capture strategy. ``sys`` (default) + captures Python-level writes only and leaves + :meth:`sys.stdout.fileno` raising :exc:`io.UnsupportedOperation`, so + user code that calls :func:`os.dup2` on ``sys.stdout.fileno()`` cannot + clobber the host runner's stdout. ``fd`` redirects file descriptors + ``1`` and ``2`` via :func:`os.dup2` to a temporary file, also catching + output from stale stream references, C extensions, and subprocesses. + ``fd`` is not supported on Windows. + + .. versionchanged:: 8.4.0 + Added the ``capture`` parameter. The default ``sys`` mode no longer + exposes the original fd through :meth:`fileno`, reverting the change + introduced in ``8.3.3`` that broke Pytest's ``fd``-level capture + teardown. Use ``capture="fd"`` to restore that behavior with proper + isolation. :issue:`3384` + + .. versionchanged:: 8.2 + Added the ``catch_exceptions`` parameter. + + .. versionchanged:: 8.2 + ``mix_stderr`` parameter has been removed. + """ + + charset: str + env: cabc.Mapping[str, str | None] + echo_stdin: bool + catch_exceptions: bool + capture: CaptureMode + + def __init__( + self, + charset: str = "utf-8", + env: cabc.Mapping[str, str | None] | None = None, + echo_stdin: bool = False, + catch_exceptions: bool = True, + capture: CaptureMode = "sys", + ) -> None: + if capture not in {"sys", "fd"}: + raise ValueError( + f"capture={capture!r} is not valid. Choose from 'sys' or 'fd'." + ) + if capture == "fd" and sys.platform == "win32": + raise ValueError( + f"capture={capture!r} is not supported on Windows. Use 'sys'." + ) + self.charset = charset + self.env = env or {} + self.echo_stdin = echo_stdin + self.catch_exceptions = catch_exceptions + self.capture = capture + + def get_default_prog_name(self, cli: Command) -> str: + """Given a command object it will return the default program name + for it. The default is the `name` attribute or ``"root"`` if not + set. + """ + return cli.name or "root" + + def make_env( + self, overrides: cabc.Mapping[str, str | None] | None = None + ) -> cabc.Mapping[str, str | None]: + """Returns the environment overrides for invoking a script.""" + rv = dict(self.env) + if overrides: + rv.update(overrides) + return rv + + @contextlib.contextmanager + def isolation( + self, + input: str | bytes | t.IO[t.Any] | None = None, + env: cabc.Mapping[str, str | None] | None = None, + color: bool = False, + ) -> cabc.Generator[tuple[io.BytesIO, io.BytesIO, io.BytesIO]]: + """A context manager that sets up the isolation for invoking of a + command line tool. This sets up `` with the given input data + and `os.environ` with the overrides from the given dictionary. + This also rebinds some internals in Click to be mocked (like the + prompt functionality). + + This is automatically done in the :meth:`invoke` method. + + :param input: the input stream to put into `sys.stdin`. + :param env: the environment overrides as dictionary. + :param color: whether the output should contain color codes. The + application can still override this explicitly. + + .. versionadded:: 8.2 + An additional output stream is returned, which is a mix of + `` and `` streams. + + .. versionchanged:: 8.2 + Always returns the `` stream. + + .. versionchanged:: 8.0 + `` is opened with ``errors="backslashreplace"`` + instead of the default ``"strict"``. + + .. versionchanged:: 4.0 + Added the ``color`` parameter. + """ + bytes_input = make_input_stream(input, self.charset) + echo_input = None + + old_stdin = sys.stdin + old_stdout = sys.stdout + old_stderr = sys.stderr + old_forced_width = formatting.FORCED_WIDTH + formatting.FORCED_WIDTH = 80 + + env = self.make_env(env) + + stream_mixer = StreamMixer() + + if self.echo_stdin: + bytes_input = echo_input = t.cast( + t.BinaryIO, EchoingStdin(bytes_input, stream_mixer.stdout) + ) + + sys.stdin = text_input = _NamedTextIOWrapper( + bytes_input, encoding=self.charset, name="", mode="r" + ) + + if self.echo_stdin: + # Force unbuffered reads, otherwise TextIOWrapper reads a + # large chunk which is echoed early. + text_input._CHUNK_SIZE = 1 # type: ignore + + sys.stdout = _NamedTextIOWrapper( + stream_mixer.stdout, + encoding=self.charset, + name="", + mode="w", + ) + + sys.stderr = _NamedTextIOWrapper( + stream_mixer.stderr, + encoding=self.charset, + name="", + mode="w", + errors="backslashreplace", + ) + + @_pause_echo(echo_input) # type: ignore + def visible_input(prompt: str | None = None) -> str: + sys.stdout.write(prompt or "") + try: + val = next(text_input).rstrip("\r\n") + except StopIteration as e: + raise EOFError() from e + sys.stdout.write(f"{val}\n") + sys.stdout.flush() + return val + + @_pause_echo(echo_input) # type: ignore + def hidden_input(prompt: str | None = None) -> str: + sys.stdout.write(f"{prompt or ''}\n") + sys.stdout.flush() + try: + return next(text_input).rstrip("\r\n") + except StopIteration as e: + raise EOFError() from e + + @_pause_echo(echo_input) # type: ignore + def _getchar(echo: bool) -> str: + char = sys.stdin.read(1) + + if echo: + sys.stdout.write(char) + + sys.stdout.flush() + return char + + default_color = color + + def should_strip_ansi( + stream: t.IO[t.Any] | None = None, color: bool | None = None + ) -> bool: + if color is None: + return not default_color + return not color + + old_visible_prompt_func = termui.visible_prompt_func + old_hidden_prompt_func = termui.hidden_prompt_func + old__getchar_func = termui._getchar + old_should_strip_ansi = utils.should_strip_ansi # type: ignore + old__compat_should_strip_ansi = _compat.should_strip_ansi + old_pdb_init = pdb.Pdb.__init__ + termui.visible_prompt_func = visible_input + termui.hidden_prompt_func = hidden_input + termui._getchar = _getchar + utils.should_strip_ansi = should_strip_ansi # type: ignore + _compat.should_strip_ansi = should_strip_ansi + + def _patched_pdb_init( + self: pdb.Pdb, + completekey: str = "tab", + stdin: t.IO[str] | None = None, + stdout: t.IO[str] | None = None, + **kwargs: t.Any, + ) -> None: + """Default ``pdb.Pdb`` to real terminal streams during + ``CliRunner`` isolation. + + Without this patch, ``pdb.Pdb.__init__`` inherits from + ``cmd.Cmd`` which falls back to ``sys.stdin``/``sys.stdout`` + when no explicit streams are provided. During isolation + those are ``BytesIO``-backed wrappers, so the debugger + reads from an empty buffer and writes to captured output, + making interactive debugging impossible. + + By defaulting to ``sys.__stdin__``/``sys.__stdout__`` (the + original terminal streams Python preserves regardless of + redirection), debuggers can interact with the user while + ``click.echo`` output is still captured normally. + + This covers ``pdb.set_trace()``, ``breakpoint()``, + ``pdb.post_mortem()``, and debuggers that subclass + ``pdb.Pdb`` (ipdb, pdbpp). Explicit ``stdin``/``stdout`` + arguments are honored and not overridden. Debuggers that + do not subclass ``pdb.Pdb`` (pudb, debugpy) are not + covered. + """ + if stdin is None: + stdin = sys.__stdin__ + if stdout is None: + stdout = sys.__stdout__ + old_pdb_init( + self, completekey=completekey, stdin=stdin, stdout=stdout, **kwargs + ) + + pdb.Pdb.__init__ = _patched_pdb_init # type: ignore[assignment] + + old_env = {} + try: + for key, value in env.items(): + old_env[key] = os.environ.get(key) + if value is None: + try: + del os.environ[key] + except Exception: + pass + else: + os.environ[key] = value + yield (stream_mixer.stdout, stream_mixer.stderr, stream_mixer.output) + finally: + for key, value in old_env.items(): + if value is None: + try: + del os.environ[key] + except Exception: + pass + else: + os.environ[key] = value + sys.stdout = old_stdout + sys.stderr = old_stderr + sys.stdin = old_stdin + termui.visible_prompt_func = old_visible_prompt_func + termui.hidden_prompt_func = old_hidden_prompt_func + termui._getchar = old__getchar_func + utils.should_strip_ansi = old_should_strip_ansi # type: ignore + _compat.should_strip_ansi = old__compat_should_strip_ansi + formatting.FORCED_WIDTH = old_forced_width + pdb.Pdb.__init__ = old_pdb_init # type: ignore[method-assign] + + def invoke( + self, + cli: Command, + args: str | cabc.Sequence[str] | None = None, + input: str | bytes | t.IO[t.Any] | None = None, + env: cabc.Mapping[str, str | None] | None = None, + catch_exceptions: bool | None = None, + color: bool = False, + **extra: t.Any, + ) -> Result: + """Invokes a command in an isolated environment. The arguments are + forwarded directly to the command line script, the `extra` keyword + arguments are passed to the :meth:`~clickpkg.Command.main` function of + the command. + + This returns a :class:`Result` object. + + :param cli: the command to invoke + :param args: the arguments to invoke. It may be given as an iterable + or a string. When given as string it will be interpreted + as a Unix shell command. More details at + :func:`shlex.split`. + :param input: the input data for `sys.stdin`. + :param env: the environment overrides. + :param catch_exceptions: Whether to catch any other exceptions than + ``SystemExit``. If :data:`None`, the value + from :class:`CliRunner` is used. + :param extra: the keyword arguments to pass to :meth:`main`. + :param color: whether the output should contain color codes. The + application can still override this explicitly. + + .. versionadded:: 8.2 + The result object has the ``output_bytes`` attribute with + the mix of ``stdout_bytes`` and ``stderr_bytes``, as the user would + see it in its terminal. + + .. versionchanged:: 8.2 + The result object always returns the ``stderr_bytes`` stream. + + .. versionchanged:: 8.0 + The result object has the ``return_value`` attribute with + the value returned from the invoked command. + + .. versionchanged:: 4.0 + Added the ``color`` parameter. + + .. versionchanged:: 3.0 + Added the ``catch_exceptions`` parameter. + + .. versionchanged:: 3.0 + The result object has the ``exc_info`` attribute with the + traceback if available. + """ + exc_info = None + if catch_exceptions is None: + catch_exceptions = self.catch_exceptions + + # Set up fd capture before isolation replaces sys.stdout and sys.stderr. + cap_out: _FDCapture | None = None + cap_err: _FDCapture | None = None + + if self.capture == "fd": + cap_out = _FDCapture(1) + cap_err = _FDCapture(2) + try: + cap_out.start() + cap_err.start() + except OSError: + cap_out = cap_err = None + + with self.isolation(input=input, env=env, color=color) as outstreams: + # Point the captured streams' fileno() at the saved (original) + # fd so that C-level consumers like faulthandler keep working + # while fd 1/2 are redirected to the capture tmpfile. + if cap_out is not None and cap_err is not None: + sys.stdout._original_fd = cap_out.saved_fd # type: ignore[union-attr] + sys.stderr._original_fd = cap_err.saved_fd # type: ignore[union-attr] + + return_value = None + exception: BaseException | None = None + exit_code = 0 + + if isinstance(args, str): + args = shlex.split(args) + + try: + prog_name = extra.pop("prog_name") + except KeyError: + prog_name = self.get_default_prog_name(cli) + + try: + return_value = cli.main(args=args or (), prog_name=prog_name, **extra) + except SystemExit as e: + exc_info = sys.exc_info() + e_code = t.cast("int | t.Any | None", e.code) + + if e_code is None: + e_code = 0 + + if e_code != 0: + exception = e + + if not isinstance(e_code, int): + sys.stdout.write(str(e_code)) + sys.stdout.write("\n") + e_code = 1 + + exit_code = e_code + + except Exception as e: + if not catch_exceptions: + raise + exception = e + exit_code = 1 + exc_info = sys.exc_info() + finally: + sys.stdout.flush() + sys.stderr.flush() + + # Stop fd capture and merge the captured bytes into + # the stdout/stderr BytesIO streams. BytesIOCopy mirrors + # those writes into outstreams[2] automatically. + if cap_out is not None and cap_err is not None: + fd_out = cap_out.stop() + fd_err = cap_err.stop() + if fd_out: + outstreams[0].write(fd_out) + if fd_err: + outstreams[1].write(fd_err) + + stdout = outstreams[0].getvalue() + stderr = outstreams[1].getvalue() + output = outstreams[2].getvalue() + + return Result( + runner=self, + stdout_bytes=stdout, + stderr_bytes=stderr, + output_bytes=output, + return_value=return_value, + exit_code=exit_code, + exception=exception, + exc_info=exc_info, # type: ignore + ) + + @contextlib.contextmanager + def isolated_filesystem( + self, temp_dir: str | os.PathLike[str] | None = None + ) -> cabc.Generator[str]: + """A context manager that creates a temporary directory and + changes the current working directory to it. This isolates tests + that affect the contents of the CWD to prevent them from + interfering with each other. + + :param temp_dir: Create the temporary directory under this + directory. If given, the created directory is not removed + when exiting. + + .. versionchanged:: 8.0 + Added the ``temp_dir`` parameter. + """ + cwd = os.getcwd() + dt = tempfile.mkdtemp(dir=temp_dir) + os.chdir(dt) + + try: + yield dt + finally: + os.chdir(cwd) + + if temp_dir is None: + import shutil + + try: + shutil.rmtree(dt) + except OSError: + pass diff --git a/venv/lib/python3.11/site-packages/click/types.py b/venv/lib/python3.11/site-packages/click/types.py new file mode 100644 index 0000000000000000000000000000000000000000..1e9872e410a3371f091e03ddadb90de3120211dc --- /dev/null +++ b/venv/lib/python3.11/site-packages/click/types.py @@ -0,0 +1,1374 @@ +from __future__ import annotations + +import abc +import collections.abc as cabc +import enum +import os +import stat +import sys +import typing as t +import uuid +from datetime import datetime +from gettext import gettext as _ +from gettext import ngettext + +from ._compat import _get_argv_encoding +from ._compat import open_stream +from .exceptions import BadParameter +from .utils import format_filename +from .utils import LazyFile +from .utils import safecall + +if t.TYPE_CHECKING: + import typing_extensions as te + + from .core import Context + from .core import Parameter + from .shell_completion import CompletionItem + +_ValueT = t.TypeVar("_ValueT") +_ValueT_contra = t.TypeVar("_ValueT_contra", contravariant=True) +_ValueT_co = t.TypeVar("_ValueT_co", covariant=True) + +_FloatValueT = t.TypeVar("_FloatValueT", bound=float) +_FloatValueT_co = t.TypeVar("_FloatValueT_co", bound=float, covariant=True) + + +class ParamTypeInfoDict(t.TypedDict): + param_type: str + name: str + + +class ParamType(t.Generic[_ValueT_co], abc.ABC): + """Represents the type of a parameter. Validates and converts values + from the command line or Python into the correct type. + + To implement a custom type, subclass and implement at least the + following: + + - The :attr:`name` class attribute must be set. + - Calling an instance of the type with ``None`` must return + ``None``. This is already implemented by default. + - :meth:`convert` must convert string values to the correct type. + - :meth:`convert` must accept values that are already the correct + type. + - It must be able to convert a value if the ``ctx`` and ``param`` + arguments are ``None``. This can occur when converting prompt + input. + + .. versionchanged:: 8.4.0 + Now a generic abstract base class. Parameterize with the + converted value type (``ParamType[int]`` for an integer-returning + type) so that :meth:`convert` and downstream consumers carry the + narrowed return type. + """ + + is_composite: t.ClassVar[bool] = False + arity: int = 1 # read-only + + #: the descriptive name of this type + name: str + + #: if a list of this type is expected and the value is pulled from a + #: string environment variable, this is what splits it up. `None` + #: means any whitespace. For all parameters the general rule is that + #: whitespace splits them up. The exception are paths and files which + #: are split by ``os.path.pathsep`` by default (":" on Unix and ";" on + #: Windows). + envvar_list_splitter: t.ClassVar[str | None] = None + + def to_info_dict(self) -> ParamTypeInfoDict: + """Gather information that could be useful for a tool generating + user-facing documentation. + + Use :meth:`click.Context.to_info_dict` to traverse the entire + CLI structure. + + .. versionadded:: 8.0 + """ + # The class name without the "ParamType" suffix. + param_type = type(self).__name__.partition("ParamType")[0] + param_type = param_type.partition("ParameterType")[0] + + # Custom subclasses might not remember to set a name. + if hasattr(self, "name"): + name = self.name + else: + name = param_type + + return {"param_type": param_type, "name": name} + + def __call__( + self, + value: t.Any, + param: Parameter | None = None, + ctx: Context | None = None, + ) -> _ValueT_co | None: + if value is not None: + return self.convert(value, param, ctx) + return None + + def get_metavar(self, param: Parameter, ctx: Context) -> str | None: + """Returns the metavar default for this param if it provides one.""" + + def get_missing_message(self, param: Parameter, ctx: Context | None) -> str | None: + """Optionally might return extra information about a missing + parameter. + + .. versionadded:: 2.0 + """ + + def convert( + self, value: t.Any, param: Parameter | None, ctx: Context | None + ) -> _ValueT_co: + """Convert the value to the correct type. This is not called if + the value is ``None`` (the missing value). + + This must accept string values from the command line, as well as + values that are already the correct type. It may also convert + other compatible types. + + The ``param`` and ``ctx`` arguments may be ``None`` in certain + situations, such as when converting prompt input. + + If the value cannot be converted, call :meth:`fail` with a + descriptive message. + + :param value: The value to convert. + :param param: The parameter that is using this type to convert + its value. May be ``None``. + :param ctx: The current context that arrived at this value. May + be ``None``. + """ + # The default returns the value as-is so subclasses that only customize + # metadata are not forced to redeclare ``convert``. + return t.cast("_ValueT_co", value) + + def split_envvar_value(self, rv: str) -> cabc.Sequence[str]: + """Given a value from an environment variable this splits it up + into small chunks depending on the defined envvar list splitter. + + If the splitter is set to `None`, which means that whitespace splits, + then leading and trailing whitespace is ignored. Otherwise, leading + and trailing splitters usually lead to empty items being included. + """ + return (rv or "").split(self.envvar_list_splitter) + + def fail( + self, + message: str, + param: Parameter | None = None, + ctx: Context | None = None, + ) -> t.NoReturn: + """Helper method to fail with an invalid value message.""" + raise BadParameter(message, ctx=ctx, param=param) + + def shell_complete( + self, ctx: Context, param: Parameter, incomplete: str + ) -> list[CompletionItem]: + """Return a list of + :class:`~click.shell_completion.CompletionItem` objects for the + incomplete value. Most types do not provide completions, but + some do, and this allows custom types to provide custom + completions as well. + + :param ctx: Invocation context for this command. + :param param: The parameter that is requesting completion. + :param incomplete: Value being completed. May be empty. + + .. versionadded:: 8.0 + """ + return [] + + +class CompositeParamType(ParamType[_ValueT_co]): + is_composite: t.ClassVar[bool] = True + + @property + @abc.abstractmethod + def arity(self) -> int: ... # type: ignore[override] + + +if t.TYPE_CHECKING: + # on Python 3.10 this will raise a TypeError + + class FuncParamTypeInfoDict( + ParamTypeInfoDict, + t.Generic[_ValueT_contra, _ValueT_co], + ): + func: t.Callable[[_ValueT_contra], _ValueT_co] +else: + + class FuncParamTypeInfoDict(ParamTypeInfoDict): + func: t.Callable[[t.Any], t.Any] + + +class FuncParamType(ParamType[_ValueT_co], t.Generic[_ValueT_contra, _ValueT_co]): + name: str + func: t.Callable[[_ValueT_contra], _ValueT_co] + + def __init__(self, func: t.Callable[[_ValueT_contra], _ValueT_co]) -> None: + self.name = func.__name__ + self.func = func + + def to_info_dict(self) -> FuncParamTypeInfoDict[_ValueT_contra, _ValueT_co]: + return {"func": self.func, **super().to_info_dict()} + + def convert( + self, value: _ValueT_contra, param: Parameter | None, ctx: Context | None + ) -> _ValueT_co: + try: + return self.func(value) + except ValueError as exc: + message = str(exc) + + if not message: + try: + message = str(value) + except UnicodeError: + message = t.cast("bytes", value).decode("utf-8", "replace") + + self.fail(message, param, ctx) + + +class UnprocessedParamType(ParamType[t.Any]): + name = "text" + + def convert( + self, value: _ValueT, param: Parameter | None, ctx: Context | None + ) -> _ValueT: + return value + + def __repr__(self) -> str: + return "UNPROCESSED" + + +class StringParamType(ParamType[str]): + name = "text" + + def convert( + self, value: t.Any, param: Parameter | None, ctx: Context | None + ) -> str: + if isinstance(value, bytes): + enc = _get_argv_encoding() + try: + return value.decode(enc) + except UnicodeError: + fs_enc = sys.getfilesystemencoding() + if fs_enc != enc: + try: + return value.decode(fs_enc) + except UnicodeError: + return value.decode("utf-8", "replace") + else: + return value.decode("utf-8", "replace") + return str(value) + + def __repr__(self) -> str: + return "STRING" + + +if t.TYPE_CHECKING: + # on Python 3.10 this will raise a TypeError + + class ChoiceInfoDict(ParamTypeInfoDict, t.Generic[_ValueT_co]): + choices: tuple[_ValueT_co, ...] + case_sensitive: bool +else: + + class ChoiceInfoDict(ParamTypeInfoDict): + choices: tuple[t.Any, ...] + case_sensitive: bool + + +class Choice(ParamType[_ValueT_co], t.Generic[_ValueT_co]): + """The choice type allows a value to be checked against a fixed set + of supported values. + + You may pass any iterable value which will be converted to a tuple + and thus will only be iterated once. + + The resulting value will always be one of the originally passed choices. + See :meth:`normalize_choice` for more info on the mapping of strings + to choices. See :ref:`choice-opts` for an example. + + :param case_sensitive: Set to false to make choices case + insensitive. Defaults to true. + + .. versionchanged:: 8.4.0 + Now generic in the choice value type. Parameterize with the type of + the choice values (``Choice[HashType]`` for an enum, ``Choice[str]`` + for plain strings) to enable type-checked consumers. + + .. versionchanged:: 8.2.0 + Non-``str`` ``choices`` are now supported. It can additionally be any + iterable. Before you were not recommended to pass anything but a list or + tuple. + + .. versionadded:: 8.2.0 + Choice normalization can be overridden via :meth:`normalize_choice`. + """ + + name: str = "choice" + + choices: tuple[_ValueT_co, ...] + case_sensitive: bool + + def __init__( + self, choices: cabc.Iterable[_ValueT_co], case_sensitive: bool = True + ) -> None: + self.choices = tuple(choices) + self.case_sensitive = case_sensitive + + def to_info_dict(self) -> ChoiceInfoDict[_ValueT_co]: + return { + "choices": self.choices, + "case_sensitive": self.case_sensitive, + **super().to_info_dict(), + } + + def _normalized_mapping( + self, ctx: Context | None = None + ) -> cabc.Mapping[_ValueT_co, str]: + """ + Returns mapping where keys are the original choices and the values are + the normalized values that are accepted via the command line. + + This is a simple wrapper around :meth:`normalize_choice`, use that + instead which is supported. + """ + return { + choice: self.normalize_choice( + choice=choice, + ctx=ctx, + ) + for choice in self.choices + } + + def normalize_choice(self, choice: object, ctx: Context | None) -> str: + """ + Normalize a choice value, used to map a passed string to a choice. + Each choice must have a unique normalized value. + + By default uses :meth:`Context.token_normalize_func` and if not case + sensitive, convert it to a casefolded value. + + .. versionadded:: 8.2.0 + """ + normed_value = choice.name if isinstance(choice, enum.Enum) else str(choice) + + if ctx is not None and ctx.token_normalize_func is not None: + normed_value = ctx.token_normalize_func(normed_value) + + if not self.case_sensitive: + normed_value = normed_value.casefold() + + return normed_value + + def get_metavar(self, param: Parameter, ctx: Context) -> str | None: + if param.param_type_name == "option" and not param.show_choices: # type: ignore[attr-defined] + choice_metavars = [ + convert_type(type(choice)).name.upper() for choice in self.choices + ] + choices_str = "|".join([*dict.fromkeys(choice_metavars)]) + else: + choices_str = "|".join( + [str(i) for i in self._normalized_mapping(ctx=ctx).values()] + ) + + # Use curly braces to indicate a required argument. + if param.required and param.param_type_name == "argument": + return f"{{{choices_str}}}" + + # Use square braces to indicate an option or optional argument. + return f"[{choices_str}]" + + def get_missing_message(self, param: Parameter, ctx: Context | None) -> str: + """ + Message shown when no choice is passed. + + .. versionchanged:: 8.2.0 Added ``ctx`` argument. + """ + return _("Choose from:\n\t{choices}").format( + choices=",\n\t".join(self._normalized_mapping(ctx=ctx).values()) + ) + + def convert( + self, value: t.Any, param: Parameter | None, ctx: Context | None + ) -> _ValueT_co: + """ + For a given value from the parser, normalize it and find its + matching normalized value in the list of choices. Then return the + matched "original" choice. + """ + normed_value = self.normalize_choice(choice=value, ctx=ctx) + normalized_mapping = self._normalized_mapping(ctx=ctx) + + try: + return next( + original + for original, normalized in normalized_mapping.items() + if normalized == normed_value + ) + except StopIteration: + self.fail( + self.get_invalid_choice_message(value=value, ctx=ctx), + param=param, + ctx=ctx, + ) + + def get_invalid_choice_message(self, value: t.Any, ctx: Context | None) -> str: + """Get the error message when the given choice is invalid. + + :param value: The invalid value. + + .. versionadded:: 8.2 + """ + choices_str = ", ".join(map(repr, self._normalized_mapping(ctx=ctx).values())) + return ngettext( + "{value!r} is not {choice}.", + "{value!r} is not one of {choices}.", + len(self.choices), + ).format(value=value, choice=choices_str, choices=choices_str) + + def __repr__(self) -> str: + return _("Choice({choices})").format(choices=list(self.choices)) + + def shell_complete( + self, ctx: Context, param: Parameter, incomplete: str + ) -> list[CompletionItem]: + """Complete choices that start with the incomplete value. + + :param ctx: Invocation context for this command. + :param param: The parameter that is requesting completion. + :param incomplete: Value being completed. May be empty. + + .. versionadded:: 8.0 + """ + from click.shell_completion import CompletionItem + + str_choices = [self.normalize_choice(choice, ctx) for choice in self.choices] + if self.case_sensitive: + matched = (c for c in str_choices if c.startswith(incomplete)) + else: + incomplete = incomplete.lower() + matched = (c for c in str_choices if c.lower().startswith(incomplete)) + + return [CompletionItem(c) for c in matched] + + +class DateTimeInfoDict(ParamTypeInfoDict): + formats: cabc.Sequence[str] + + +class DateTime(ParamType[datetime]): + """The DateTime type converts date strings into `datetime` objects. + + The format strings which are checked are configurable, but default to some + common (non-timezone aware) ISO 8601 formats. + + When specifying *DateTime* formats, you should only pass a list or a tuple. + Other iterables, like generators, may lead to surprising results. + + The format strings are processed using ``datetime.strptime``, and this + consequently defines the format strings which are allowed. + + Parsing is tried using each format, in order, and the first format which + parses successfully is used. + + :param formats: A list or tuple of date format strings, in the order in + which they should be tried. Defaults to + ``'%Y-%m-%d'``, ``'%Y-%m-%dT%H:%M:%S'``, + ``'%Y-%m-%d %H:%M:%S'``. + """ + + name = "datetime" + + formats: cabc.Sequence[str] + + def __init__(self, formats: cabc.Sequence[str] | None = None): + self.formats = formats or [ + "%Y-%m-%d", + "%Y-%m-%dT%H:%M:%S", + "%Y-%m-%d %H:%M:%S", + ] + + def to_info_dict(self) -> DateTimeInfoDict: + return {"formats": self.formats, **super().to_info_dict()} + + def get_metavar(self, param: Parameter, ctx: Context) -> str: + return f"[{'|'.join(self.formats)}]" + + def _try_to_convert_date(self, value: t.Any, format: str) -> datetime | None: + try: + return datetime.strptime(value, format) + except ValueError: + return None + + def convert( + self, value: t.Any, param: Parameter | None, ctx: Context | None + ) -> datetime: + if isinstance(value, datetime): + return value + + for format in self.formats: + converted = self._try_to_convert_date(value, format) + + if converted is not None: + return converted + + formats_str = ", ".join(map(repr, self.formats)) + self.fail( + ngettext( + "{value!r} does not match the format {format}.", + "{value!r} does not match the formats {formats}.", + len(self.formats), + ).format(value=value, format=formats_str, formats=formats_str), + param, + ctx, + ) + + def __repr__(self) -> str: + return "DateTime" + + +class _NumberParamTypeBase( + ParamType[_ValueT_co], t.Generic[_ValueT_contra, _ValueT_co] +): + _number_class: t.Callable[[_ValueT_contra], _ValueT_co] + + def convert( + self, value: _ValueT_contra, param: Parameter | None, ctx: Context | None + ) -> _ValueT_co: + try: + return self._number_class(value) + except ValueError: + self.fail( + _("{value!r} is not a valid {number_type}.").format( + value=value, number_type=self.name + ), + param, + ctx, + ) + + +if t.TYPE_CHECKING: + # on Python 3.10 this will raise a TypeError + + class NumberRangeInfoDict(ParamTypeInfoDict, t.Generic[_FloatValueT_co]): + min: _FloatValueT_co | None + max: _FloatValueT_co | None + min_open: bool + max_open: bool + clamp: bool +else: + + class NumberRangeInfoDict(ParamTypeInfoDict): + min: t.Any | None + max: t.Any | None + min_open: bool + max_open: bool + clamp: bool + + +class _NumberRangeBase( + _NumberParamTypeBase[_ValueT_contra, _FloatValueT_co], + t.Generic[_ValueT_contra, _FloatValueT_co], +): + min: _FloatValueT_co | None + max: _FloatValueT_co | None + min_open: bool + max_open: bool + clamp: bool + + def __init__( + self, + min: _FloatValueT_co | None = None, + max: _FloatValueT_co | None = None, + min_open: bool = False, + max_open: bool = False, + clamp: bool = False, + ) -> None: + self.min = min + self.max = max + self.min_open = min_open + self.max_open = max_open + self.clamp = clamp + + def to_info_dict(self) -> NumberRangeInfoDict[_FloatValueT_co]: + return { + "min": self.min, + "max": self.max, + "min_open": self.min_open, + "max_open": self.max_open, + "clamp": self.clamp, + **super().to_info_dict(), + } + + def convert( + self, value: _ValueT_contra, param: Parameter | None, ctx: Context | None + ) -> _FloatValueT_co: + import operator + + rv = super().convert(value, param, ctx) + min = self.min + max = self.max + lt_min: bool = min is not None and ( + operator.le if self.min_open else operator.lt + )(rv, min) + gt_max: bool = max is not None and ( + operator.ge if self.max_open else operator.gt + )(rv, max) + + if self.clamp: + if min is not None and lt_min: + return self._clamp(min, 1, self.min_open) + + if max is not None and gt_max: + return self._clamp(max, -1, self.max_open) + + if lt_min or gt_max: + self.fail( + _("{value} is not in the range {range}.").format( + value=rv, range=self._describe_range() + ), + param, + ctx, + ) + + return rv + + @abc.abstractmethod + def _clamp( + # Covariant type variables cannot be used in input positions, so we use a + # separate method-scoped type variable instead. + self: _NumberRangeBase[t.Any, _FloatValueT], + bound: _FloatValueT, + dir: t.Literal[1, -1], + open: bool, + ) -> _FloatValueT: + """Find the valid value to clamp to bound in the given + direction. + + :param bound: The boundary value. + :param dir: 1 or -1 indicating the direction to move. + :param open: If true, the range does not include the bound. + """ + ... + + def _describe_range(self) -> str: + """Describe the range for use in help text.""" + if self.min is None: + op = "<" if self.max_open else "<=" + return f"x{op}{self.max}" + + if self.max is None: + op = ">" if self.min_open else ">=" + return f"x{op}{self.min}" + + lop = "<" if self.min_open else "<=" + rop = "<" if self.max_open else "<=" + return f"{self.min}{lop}x{rop}{self.max}" + + def __repr__(self) -> str: + clamp = " clamped" if self.clamp else "" + return f"<{type(self).__name__} {self._describe_range()}{clamp}>" + + +class IntParamType(_NumberParamTypeBase[t.SupportsInt | t.SupportsIndex, int]): + name = "integer" + _number_class = int + + def __repr__(self) -> str: + return "INT" + + +class IntRange(_NumberRangeBase[int, int], IntParamType): + """Restrict an :data:`click.INT` value to a range of accepted + values. See :ref:`ranges`. + + If ``min`` or ``max`` are not passed, any value is accepted in that + direction. If ``min_open`` or ``max_open`` are enabled, the + corresponding boundary is not included in the range. + + If ``clamp`` is enabled, a value outside the range is clamped to the + boundary instead of failing. + + .. versionchanged:: 8.0 + Added the ``min_open`` and ``max_open`` parameters. + """ + + name = "integer range" + + def _clamp(self, bound: int, dir: t.Literal[1, -1], open: bool) -> int: + if not open: + return bound + + return bound + dir + + +class FloatParamType(_NumberParamTypeBase[t.SupportsFloat | t.SupportsIndex, float]): + name = "float" + _number_class = float + + def __repr__(self) -> str: + return "FLOAT" + + +class FloatRange(_NumberRangeBase[float, float], FloatParamType): + """Restrict a :data:`click.FLOAT` value to a range of accepted + values. See :ref:`ranges`. + + If ``min`` or ``max`` are not passed, any value is accepted in that + direction. If ``min_open`` or ``max_open`` are enabled, the + corresponding boundary is not included in the range. + + If ``clamp`` is enabled, a value outside the range is clamped to the + boundary instead of failing. This is not supported if either + boundary is marked ``open``. + + .. versionchanged:: 8.0 + Added the ``min_open`` and ``max_open`` parameters. + """ + + name = "float range" + + def __init__( + self, + min: float | None = None, + max: float | None = None, + min_open: bool = False, + max_open: bool = False, + clamp: bool = False, + ) -> None: + super().__init__( + min=min, max=max, min_open=min_open, max_open=max_open, clamp=clamp + ) + + if (min_open or max_open) and clamp: + raise TypeError("Clamping is not supported for open bounds.") + + def _clamp(self, bound: float, dir: t.Literal[1, -1], open: bool) -> float: + if not open: + return bound + + # Could use math.nextafter here, but clamping an + # open float range doesn't seem to be particularly useful. It's + # left up to the user to write a callback to do it if needed. + raise RuntimeError("Clamping is not supported for open bounds.") + + +class BoolParamType(ParamType[bool]): + name = "boolean" + + bool_states: dict[str, bool] = { + "1": True, + "0": False, + "yes": True, + "no": False, + "true": True, + "false": False, + "on": True, + "off": False, + "t": True, + "f": False, + "y": True, + "n": False, + # Absence of value is considered False. + "": False, + } + """A mapping of string values to boolean states. + + Mapping is inspired by :py:attr:`configparser.ConfigParser.BOOLEAN_STATES` + and extends it. + + .. caution:: + String values are lower-cased, as the ``str_to_bool`` comparison function + below is case-insensitive. + + .. warning:: + The mapping is not exhaustive, and does not cover all possible boolean strings + representations. It will remains as it is to avoid endless bikeshedding. + + Future work my be considered to make this mapping user-configurable from public + API. + """ + + @staticmethod + def str_to_bool(value: str | bool) -> bool | None: + """Convert a string to a boolean value. + + If the value is already a boolean, it is returned as-is. If the value is a + string, it is stripped of whitespaces and lower-cased, then checked against + the known boolean states pre-defined in the `BoolParamType.bool_states` mapping + above. + + Returns `None` if the value does not match any known boolean state. + """ + if isinstance(value, bool): + return value + return BoolParamType.bool_states.get(value.strip().lower()) + + def convert( + self, value: t.Any, param: Parameter | None, ctx: Context | None + ) -> bool: + normalized = self.str_to_bool(value) + if normalized is None: + self.fail( + _( + "{value!r} is not a valid boolean. Recognized values: {states}" + ).format(value=value, states=", ".join(sorted(self.bool_states))), + param, + ctx, + ) + return normalized + + def __repr__(self) -> str: + return "BOOL" + + +class UUIDParameterType(ParamType[uuid.UUID]): + name = "uuid" + + def convert( + self, value: uuid.UUID | str, param: Parameter | None, ctx: Context | None + ) -> uuid.UUID: + if isinstance(value, uuid.UUID): + return value + + value = value.strip() + + try: + return uuid.UUID(value) + except ValueError: + self.fail( + _("{value!r} is not a valid UUID.").format(value=value), param, ctx + ) + + def __repr__(self) -> str: + return "UUID" + + +class FileInfoDict(ParamTypeInfoDict): + mode: str + encoding: str | None + + +class File(ParamType[t.IO[t.Any]]): + """Declares a parameter to be a file for reading or writing. The file + is automatically closed once the context tears down (after the command + finished working). + + Files can be opened for reading or writing. The special value ``-`` + indicates stdin or stdout depending on the mode. + + By default, the file is opened for reading text data, but it can also be + opened in binary mode or for writing. The encoding parameter can be used + to force a specific encoding. + + The `lazy` flag controls if the file should be opened immediately or upon + first IO. The default is to be non-lazy for standard input and output + streams as well as files opened for reading, `lazy` otherwise. When opening a + file lazily for reading, it is still opened temporarily for validation, but + will not be held open until first IO. lazy is mainly useful when opening + for writing to avoid creating the file until it is needed. + + Files can also be opened atomically in which case all writes go into a + separate file in the same folder and upon completion the file will + be moved over to the original location. This is useful if a file + regularly read by other users is modified. + + See :ref:`file-args` for more information. + + .. versionchanged:: 2.0 + Added the ``atomic`` parameter. + """ + + name = "filename" + envvar_list_splitter: t.ClassVar[str] = os.path.pathsep + + mode: str + encoding: str | None + errors: str | None + lazy: bool | None + atomic: bool + + def __init__( + self, + mode: str = "r", + encoding: str | None = None, + errors: str | None = "strict", + lazy: bool | None = None, + atomic: bool = False, + ) -> None: + self.mode = mode + self.encoding = encoding + self.errors = errors + self.lazy = lazy + self.atomic = atomic + + def to_info_dict(self) -> FileInfoDict: + return { + "mode": self.mode, + "encoding": self.encoding, + **super().to_info_dict(), + } + + def resolve_lazy_flag(self, value: str | os.PathLike[str]) -> bool: + if self.lazy is not None: + return self.lazy + if os.fspath(value) == "-": + return False + elif "w" in self.mode: + return True + return False + + def convert( + self, + value: str | os.PathLike[str] | t.IO[t.Any], + param: Parameter | None, + ctx: Context | None, + ) -> t.IO[t.Any]: + if _is_file_like(value): + return value + + try: + lazy = self.resolve_lazy_flag(value) + + if lazy: + lf = LazyFile( + value, self.mode, self.encoding, self.errors, atomic=self.atomic + ) + + if ctx is not None: + ctx.call_on_close(lf.close_intelligently) + + return t.cast("t.IO[t.Any]", lf) + + f, should_close = open_stream( + value, self.mode, self.encoding, self.errors, atomic=self.atomic + ) + + # If a context is provided, we automatically close the file + # at the end of the context execution (or flush out). If a + # context does not exist, it's the caller's responsibility to + # properly close the file. This for instance happens when the + # type is used with prompts. + if ctx is not None: + if should_close: + ctx.call_on_close(safecall(f.close)) + else: + ctx.call_on_close(safecall(f.flush)) + + return f + except OSError as e: + self.fail( + f"'{format_filename(value)}': {e.strerror}", + param, + ctx, + ) + + def shell_complete( + self, ctx: Context, param: Parameter, incomplete: str + ) -> list[CompletionItem]: + """Return a special completion marker that tells the completion + system to use the shell to provide file path completions. + + :param ctx: Invocation context for this command. + :param param: The parameter that is requesting completion. + :param incomplete: Value being completed. May be empty. + + .. versionadded:: 8.0 + """ + from click.shell_completion import CompletionItem + + return [CompletionItem(incomplete, type="file")] + + +def _is_file_like(value: t.Any) -> te.TypeIs[t.IO[t.Any]]: + return hasattr(value, "read") or hasattr(value, "write") + + +class PathInfoDict(ParamTypeInfoDict): + exists: bool + file_okay: bool + dir_okay: bool + writable: bool + readable: bool + allow_dash: bool + + +class Path(ParamType[str | bytes | os.PathLike[str]]): + """The ``Path`` type is similar to the :class:`File` type, but + returns the filename instead of an open file. Various checks can be + enabled to validate the type of file and permissions. + + :param exists: The file or directory needs to exist for the value to + be valid. If this is not set to ``True``, and the file does not + exist, then all further checks are silently skipped. + :param file_okay: Allow a file as a value. + :param dir_okay: Allow a directory as a value. + :param readable: if true, a readable check is performed. + :param writable: if true, a writable check is performed. + :param executable: if true, an executable check is performed. + :param resolve_path: Make the value absolute and resolve any + symlinks. A ``~`` is not expanded, as this is supposed to be + done by the shell only. + :param allow_dash: Allow a single dash as a value, which indicates + a standard stream (but does not open it). Use + :func:`~click.open_file` to handle opening this value. + :param path_type: Convert the incoming path value to this type. If + ``None``, keep Python's default, which is ``str``. Useful to + convert to :class:`pathlib.Path`. + + .. versionchanged:: 8.1 + Added the ``executable`` parameter. + + .. versionchanged:: 8.0 + Allow passing ``path_type=pathlib.Path``. + + .. versionchanged:: 6.0 + Added the ``allow_dash`` parameter. + """ + + envvar_list_splitter: t.ClassVar[str] = os.path.pathsep + + exists: bool + file_okay: bool + dir_okay: bool + readable: bool + writable: bool + executable: bool + resolve_path: bool + allow_dash: bool + name: str + + def __init__( + self, + exists: bool = False, + file_okay: bool = True, + dir_okay: bool = True, + writable: bool = False, + readable: bool = True, + resolve_path: bool = False, + allow_dash: bool = False, + path_type: type | None = None, + executable: bool = False, + ) -> None: + self.exists = exists + self.file_okay = file_okay + self.dir_okay = dir_okay + self.readable = readable + self.writable = writable + self.executable = executable + self.resolve_path = resolve_path + self.allow_dash = allow_dash + self.type: type | None = path_type + + if self.file_okay and not self.dir_okay: + self.name = _("file") + elif self.dir_okay and not self.file_okay: + self.name = _("directory") + else: + self.name = _("path") + + def to_info_dict(self) -> PathInfoDict: + return { + "exists": self.exists, + "file_okay": self.file_okay, + "dir_okay": self.dir_okay, + "writable": self.writable, + "readable": self.readable, + "allow_dash": self.allow_dash, + **super().to_info_dict(), + } + + def coerce_path_result( + self, value: str | os.PathLike[str] + ) -> str | bytes | os.PathLike[str]: + if self.type is not None and not isinstance(value, self.type): + if self.type is str: + return os.fsdecode(value) + elif self.type is bytes: + return os.fsencode(value) + else: + return t.cast("os.PathLike[str]", self.type(value)) + + return value + + def convert( + self, + value: str | os.PathLike[str], + param: Parameter | None, + ctx: Context | None, + ) -> str | bytes | os.PathLike[str]: + rv = value + + is_dash = self.file_okay and self.allow_dash and rv in (b"-", "-") + + if not is_dash: + if self.resolve_path: + rv = os.path.realpath(rv) + + try: + st = os.stat(rv) + except OSError: + if not self.exists: + return self.coerce_path_result(rv) + self.fail( + _("{name} {filename!r} does not exist.").format( + name=self.name.title(), filename=format_filename(value) + ), + param, + ctx, + ) + + if not self.file_okay and stat.S_ISREG(st.st_mode): + self.fail( + _("{name} {filename!r} is a file.").format( + name=self.name.title(), filename=format_filename(value) + ), + param, + ctx, + ) + if not self.dir_okay and stat.S_ISDIR(st.st_mode): + self.fail( + _("{name} {filename!r} is a directory.").format( + name=self.name.title(), filename=format_filename(value) + ), + param, + ctx, + ) + + if self.readable and not os.access(rv, os.R_OK): + self.fail( + _("{name} {filename!r} is not readable.").format( + name=self.name.title(), filename=format_filename(value) + ), + param, + ctx, + ) + + if self.writable and not os.access(rv, os.W_OK): + self.fail( + _("{name} {filename!r} is not writable.").format( + name=self.name.title(), filename=format_filename(value) + ), + param, + ctx, + ) + + if self.executable and not os.access(value, os.X_OK): + self.fail( + _("{name} {filename!r} is not executable.").format( + name=self.name.title(), filename=format_filename(value) + ), + param, + ctx, + ) + + return self.coerce_path_result(rv) + + def shell_complete( + self, ctx: Context, param: Parameter, incomplete: str + ) -> list[CompletionItem]: + """Return a special completion marker that tells the completion + system to use the shell to provide path completions for only + directories or any paths. + + :param ctx: Invocation context for this command. + :param param: The parameter that is requesting completion. + :param incomplete: Value being completed. May be empty. + + .. versionadded:: 8.0 + """ + from click.shell_completion import CompletionItem + + type = "dir" if self.dir_okay and not self.file_okay else "file" + return [CompletionItem(incomplete, type=type)] + + +class TupleInfoDict(ParamTypeInfoDict): + types: cabc.Sequence[ParamTypeInfoDict] + + +class Tuple(CompositeParamType[tuple[t.Any, ...]]): + """The default behavior of Click is to apply a type on a value directly. + This works well in most cases, except for when `nargs` is set to a fixed + count and different types should be used for different items. In this + case the :class:`Tuple` type can be used. This type can only be used + if `nargs` is set to a fixed number. + + For more information see :ref:`tuple-type`. + + This can be selected by using a Python tuple literal as a type. + + :param types: a list of types that should be used for the tuple items. + """ + + def __init__(self, types: cabc.Sequence[type[t.Any] | ParamType[t.Any]]) -> None: + self.types: cabc.Sequence[ParamType[t.Any]] = [convert_type(ty) for ty in types] + + def to_info_dict(self) -> TupleInfoDict: + return { + "types": [ty.to_info_dict() for ty in self.types], + **super().to_info_dict(), + } + + @property + def name(self) -> str: # type: ignore[override] + return f"<{' '.join(ty.name for ty in self.types)}>" + + @property + def arity(self) -> int: # type: ignore[override] + return len(self.types) + + def convert( + self, value: t.Any, param: Parameter | None, ctx: Context | None + ) -> tuple[t.Any, ...]: + len_type = len(self.types) + len_value = len(value) + + if len_value != len_type: + self.fail( + ngettext( + "{len_type} values are required, but {len_value} was given.", + "{len_type} values are required, but {len_value} were given.", + len_value, + ).format(len_type=len_type, len_value=len_value), + param=param, + ctx=ctx, + ) + + return tuple( + ty(x, param, ctx) for ty, x in zip(self.types, value, strict=False) + ) + + +def _guess_type( + ty: type[t.Any] | ParamType[t.Any] | None, + default: t.Any | None, +) -> type[t.Any] | tuple[type[t.Any], ...] | ParamType[t.Any] | None: + """Infer a type from *ty* or *default*. + + Returns *ty* unchanged when it is not ``None``. Otherwise inspects + *default* to produce a ``type``, a ``tuple`` of types (for tuple + defaults), or ``None``. + """ + if ty is not None: + return ty + + if default is None: + return None + + if not isinstance(default, (tuple, list)): + return type(default) + + # If the default is empty, return None so convert_type falls + # through to STRING. + if not default: + return None + + item = default[0] + + # A sequence of iterables needs to detect the inner types. + # Can't call convert_type recursively because that would + # incorrectly unwind the tuple to a single type. + if isinstance(item, (tuple, list)): + return tuple(map(type, item)) + + return type(item) + + +@t.overload +def convert_type(ty: None, default: None = None) -> StringParamType: ... +@t.overload +def convert_type( + ty: type | ParamType[t.Any], default: t.Any | None = None +) -> ParamType[t.Any]: ... +@t.overload +def convert_type( + ty: t.Any | None, default: t.Any | None = None +) -> ParamType[t.Any]: ... +def convert_type( + ty: t.Any | None = None, default: t.Any | None = None +) -> ParamType[t.Any]: + """Find the most appropriate :class:`ParamType` for the given Python + type. If the type isn't provided, it can be inferred from a default + value. + """ + guessed = _guess_type(ty, default) + is_guessed = guessed is not ty + + if isinstance(guessed, tuple): + return Tuple(guessed) + + if isinstance(guessed, ParamType): + return guessed + + if guessed is str or guessed is None: + return STRING + + if guessed is int: + return INT + + if guessed is float: + return FLOAT + + if guessed is bool: + return BOOL + + if is_guessed: + return STRING + + if __debug__: + try: + if issubclass(guessed, ParamType): + raise AssertionError( + f"Attempted to use an uninstantiated parameter type ({guessed})." + ) + except TypeError: + # guessed is an instance (correct), so issubclass fails. + pass + + return FuncParamType(guessed) + + +#: A dummy parameter type that just does nothing. From a user's +#: perspective this appears to just be the same as `STRING` but +#: internally no string conversion takes place if the input was bytes. +#: This is usually useful when working with file paths as they can +#: appear in bytes and unicode. +#: +#: For path related uses the :class:`Path` type is a better choice but +#: there are situations where an unprocessed type is useful which is why +#: it is provided. +#: +#: .. versionadded:: 4.0 +UNPROCESSED: t.Final[UnprocessedParamType] = UnprocessedParamType() + +#: A unicode string parameter type which is the implicit default. This +#: can also be selected by using ``str`` as type. +STRING: t.Final[StringParamType] = StringParamType() + +#: An integer parameter. This can also be selected by using ``int`` as +#: type. +INT: t.Final[IntParamType] = IntParamType() + +#: A floating point value parameter. This can also be selected by using +#: ``float`` as type. +FLOAT: t.Final[FloatParamType] = FloatParamType() + +#: A boolean parameter. This is the default for boolean flags. This can +#: also be selected by using ``bool`` as a type. +BOOL: t.Final[BoolParamType] = BoolParamType() + +#: A UUID parameter. +UUID: t.Final[UUIDParameterType] = UUIDParameterType() + + +class OptionHelpExtra(t.TypedDict, total=False): + envvars: tuple[str, ...] + default: str + range: str + required: str diff --git a/venv/lib/python3.11/site-packages/click/utils.py b/venv/lib/python3.11/site-packages/click/utils.py new file mode 100644 index 0000000000000000000000000000000000000000..c0cb22d683b4ea2ff3b035efdf1e6ef392b08367 --- /dev/null +++ b/venv/lib/python3.11/site-packages/click/utils.py @@ -0,0 +1,653 @@ +from __future__ import annotations + +import collections.abc as cabc +import os +import re +import sys +import typing as t +from functools import update_wrapper +from gettext import gettext as _ +from types import ModuleType +from types import TracebackType + +from ._compat import _default_text_stderr +from ._compat import _default_text_stdout +from ._compat import _find_binary_writer +from ._compat import auto_wrap_for_ansi +from ._compat import binary_streams +from ._compat import open_stream +from ._compat import should_strip_ansi +from ._compat import strip_ansi +from ._compat import text_streams +from ._compat import WIN +from .globals import resolve_color_default + +if t.TYPE_CHECKING: + import typing_extensions as te + + P = te.ParamSpec("P") + +R = t.TypeVar("R") + + +def _posixify(name: str) -> str: + return "-".join(name.split()).lower() + + +def safecall(func: t.Callable[P, R]) -> t.Callable[P, R | None]: + """Wraps a function so that it swallows exceptions.""" + + def wrapper(*args: P.args, **kwargs: P.kwargs) -> R | None: + try: + return func(*args, **kwargs) + except Exception: + pass + return None + + return update_wrapper(wrapper, func) + + +def make_str(value: t.Any) -> str: + """Converts a value into a valid string.""" + if isinstance(value, bytes): + try: + return value.decode(sys.getfilesystemencoding()) + except UnicodeError: + return value.decode("utf-8", "replace") + return str(value) + + +def make_default_short_help(help: str, max_length: int = 45) -> str: + """Returns a condensed version of help string. + + :meta private: + """ + # Consider only the first paragraph. + paragraph_end = help.find("\n\n") + + if paragraph_end != -1: + help = help[:paragraph_end] + + # Collapse newlines, tabs, and spaces. + words = help.split() + + if not words: + return "" + + # The first paragraph started with a "no rewrap" marker, ignore it. + if words[0] == "\b": + words = words[1:] + + total_length = 0 + last_index = len(words) - 1 + + for i, word in enumerate(words): + total_length += len(word) + (i > 0) + + if total_length > max_length: # too long, truncate + break + + if word[-1] == ".": # sentence end, truncate without "..." + return " ".join(words[: i + 1]) + + if total_length == max_length and i != last_index: + break # not at sentence end, truncate with "..." + else: + return " ".join(words) # no truncation needed + + # Account for the length of the suffix. + total_length += len("...") + + # remove words until the length is short enough + while i > 0: + total_length -= len(words[i]) + (i > 0) + + if total_length <= max_length: + break + + i -= 1 + + return " ".join(words[:i]) + "..." + + +class LazyFile: + """A lazy file works like a regular file but it does not fully open + the file but it does perform some basic checks early to see if the + filename parameter does make sense. This is useful for safely opening + files for writing. + """ + + name: str + mode: str + encoding: str | None + errors: str | None + atomic: bool + _f: t.IO[t.Any] | None + should_close: bool + + def __init__( + self, + filename: str | os.PathLike[str], + mode: str = "r", + encoding: str | None = None, + errors: str | None = "strict", + atomic: bool = False, + ) -> None: + self.name = os.fspath(filename) + self.mode = mode + self.encoding = encoding + self.errors = errors + self.atomic = atomic + + if self.name == "-": + self._f, self.should_close = open_stream(filename, mode, encoding, errors) + else: + if "r" in mode: + # Open and close the file in case we're opening it for + # reading so that we can catch at least some errors in + # some cases early. + open(filename, mode).close() + self._f = None + self.should_close = True + + def __getattr__(self, name: str) -> t.Any: + return getattr(self.open(), name) + + def __repr__(self) -> str: + if self._f is not None: + return repr(self._f) + return f"" + + def open(self) -> t.IO[t.Any]: + """Opens the file if it's not yet open. This call might fail with + a :exc:`FileError`. Not handling this error will produce an error + that Click shows. + """ + if self._f is not None: + return self._f + try: + rv, self.should_close = open_stream( + self.name, self.mode, self.encoding, self.errors, atomic=self.atomic + ) + except OSError as e: + from .exceptions import FileError + + raise FileError(self.name, hint=e.strerror) from e + self._f = rv + return rv + + def close(self) -> None: + """Closes the underlying file, no matter what.""" + if self._f is not None: + self._f.close() + + def close_intelligently(self) -> None: + """This function only closes the file if it was opened by the lazy + file wrapper. For instance this will never close stdin. + """ + if self.should_close: + self.close() + + def __enter__(self) -> LazyFile: + return self + + def __exit__( + self, + exc_type: type[BaseException] | None, + exc_value: BaseException | None, + tb: TracebackType | None, + ) -> None: + self.close_intelligently() + + def __iter__(self) -> cabc.Iterator[t.AnyStr]: + self.open() + return iter(self._f) # type: ignore + + +class KeepOpenFile: + """Proxy a file object but keep it open across a ``with`` block. + + Wraps a borrowed file (such as ``sys.stdin`` or ``sys.stdout``) so that + leaving a ``with`` block does not close it, as used by :func:`open_file` + for the ``-`` filename. The caller stays responsible for the file: an + explicit :meth:`close` still passes through to the wrapped object. + + Dunder methods are proxied explicitly: implicit special-method lookups + bypass :meth:`__getattr__`, because Python resolves them on the type rather + than the instance. + """ + + _file: t.IO[t.Any] + + def __init__(self, file: t.IO[t.Any]) -> None: + self._file = file + + def __getattr__(self, name: str) -> t.Any: + return getattr(self._file, name) + + def __enter__(self) -> KeepOpenFile: + return self + + def __exit__( + self, + exc_type: type[BaseException] | None, + exc_value: BaseException | None, + tb: TracebackType | None, + ) -> None: + pass + + def __repr__(self) -> str: + return repr(self._file) + + def __iter__(self) -> cabc.Iterator[t.AnyStr]: + return iter(self._file) + + +def echo( + message: object = None, + file: t.IO[t.Any] | None = None, + nl: bool = True, + err: bool = False, + color: bool | None = None, +) -> None: + """Print a message and newline to stdout or a file. This should be + used instead of :func:`print` because it provides better support + for different data, files, and environments. + + Compared to :func:`print`, this does the following: + + - Ensures that the output encoding is not misconfigured on Linux. + - Supports Unicode in the Windows console. + - Supports writing to binary outputs, and supports writing bytes + to text outputs. + - Supports colors and styles on Windows. + - Removes ANSI color and style codes if the output does not look + like an interactive terminal. + - Always flushes the output. + + :param message: The string or bytes to output. Other objects are + converted to strings. + :param file: The file to write to. Defaults to ``stdout``. + :param err: Write to ``stderr`` instead of ``stdout``. + :param nl: Print a newline after the message. Enabled by default. + :param color: Force showing or hiding colors and other styles. By + default Click will remove color if the output does not look like + an interactive terminal. + + .. versionchanged:: 6.0 + Support Unicode output on the Windows console. Click does not + modify ``sys.stdout``, so ``sys.stdout.write()`` and ``print()`` + will still not support Unicode. + + .. versionchanged:: 4.0 + Added the ``color`` parameter. + + .. versionadded:: 3.0 + Added the ``err`` parameter. + + .. versionchanged:: 2.0 + Support colors on Windows if colorama is installed. + """ + if file is None: + if err: + file = _default_text_stderr() + else: + file = _default_text_stdout() + + # There are no standard streams attached to write to. For example, + # pythonw on Windows. + if file is None: + return + + match message: + case str() | bytes() | bytearray(): + out = message + case None: + out = "" + case _: + out = str(message) + + if nl: + if isinstance(out, str): + out += "\n" + else: + out += b"\n" + + if not out: + file.flush() + return + + # If there is a message and the value looks like bytes, we manually + # need to find the binary stream and write the message in there. + # This is done separately so that most stream types will work as you + # would expect. Eg: you can write to StringIO for other cases. + if isinstance(out, (bytes, bytearray)): + binary_file = _find_binary_writer(file) + if binary_file is not None: + file.flush() + binary_file.write(out) + binary_file.flush() + return + + # ANSI style code support. For no message or bytes, nothing happens. + # When outputting to a file instead of a terminal, strip codes. + else: + color = resolve_color_default(color) + + if should_strip_ansi(file, color): + out = strip_ansi(out) + elif WIN: + if auto_wrap_for_ansi is not None: + file = auto_wrap_for_ansi(file, color) # type: ignore + elif not color: + out = strip_ansi(out) + + file.write(out) # type: ignore + file.flush() + + +def get_binary_stream(name: t.Literal["stdin", "stdout", "stderr"]) -> t.BinaryIO: + """Returns a system stream for byte processing. + + :param name: the name of the stream to open. Valid names are ``'stdin'``, + ``'stdout'`` and ``'stderr'`` + """ + opener = binary_streams.get(name) + if opener is None: + raise TypeError(_("Unknown standard stream '{name}'").format(name=name)) + return opener() + + +def get_text_stream( + name: t.Literal["stdin", "stdout", "stderr"], + encoding: str | None = None, + errors: str | None = "strict", +) -> t.TextIO: + """Returns a system stream for text processing. This usually returns + a wrapped stream around a binary stream returned from + :func:`get_binary_stream` but it also can take shortcuts for already + correctly configured streams. + + :param name: the name of the stream to open. Valid names are ``'stdin'``, + ``'stdout'`` and ``'stderr'`` + :param encoding: overrides the detected default encoding. + :param errors: overrides the default error mode. + """ + opener = text_streams.get(name) + if opener is None: + raise TypeError(_("Unknown standard stream '{name}'").format(name=name)) + return opener(encoding, errors) + + +def open_file( + filename: str | os.PathLike[str], + mode: str = "r", + encoding: str | None = None, + errors: str | None = "strict", + lazy: bool = False, + atomic: bool = False, +) -> t.IO[t.Any]: + """Open a file, with extra behavior to handle ``'-'`` to indicate + a standard stream, lazy open on write, and atomic write. Similar to + the behavior of the :class:`~click.File` param type. + + If ``'-'`` is given to open ``stdout`` or ``stdin``, the stream is + wrapped so that using it in a context manager will not close it. + This makes it possible to use the function without accidentally + closing a standard stream: + + .. code-block:: python + + with open_file(filename) as f: + ... + + :param filename: The name or Path of the file to open, or ``'-'`` for + ``stdin``/``stdout``. + :param mode: The mode in which to open the file. + :param encoding: The encoding to decode or encode a file opened in + text mode. + :param errors: The error handling mode. + :param lazy: Wait to open the file until it is accessed. For read + mode, the file is temporarily opened to raise access errors + early, then closed until it is read again. + :param atomic: Write to a temporary file and replace the given file + on close. + + .. versionadded:: 3.0 + """ + if lazy: + return t.cast( + "t.IO[t.Any]", LazyFile(filename, mode, encoding, errors, atomic=atomic) + ) + + f, should_close = open_stream(filename, mode, encoding, errors, atomic=atomic) + + if not should_close: + f = t.cast("t.IO[t.Any]", KeepOpenFile(f)) + + return f + + +def format_filename( + filename: str | bytes | os.PathLike[str] | os.PathLike[bytes], + shorten: bool = False, +) -> str: + """Format a filename as a string for display. Ensures the filename can be + displayed by replacing any invalid bytes or surrogate escapes in the name + with the replacement character ``�``. + + Invalid bytes or surrogate escapes will raise an error when written to a + stream with ``errors="strict"``. This will typically happen with ``stdout`` + when the locale is something like ``en_GB.UTF-8``. + + Many scenarios *are* safe to write surrogates though, due to PEP 538 and + PEP 540, including: + + - Writing to ``stderr``, which uses ``errors="backslashreplace"``. + - The system has ``LANG=C.UTF-8``, ``C``, or ``POSIX``. Python opens + stdout and stderr with ``errors="surrogateescape"``. + - None of ``LANG/LC_*`` are set. Python assumes ``LANG=C.UTF-8``. + - Python is started in UTF-8 mode with ``PYTHONUTF8=1`` or ``-X utf8``. + Python opens stdout and stderr with ``errors="surrogateescape"``. + + :param filename: formats a filename for UI display. This will also convert + the filename into unicode without failing. + :param shorten: this optionally shortens the filename to strip of the + path that leads up to it. + """ + if shorten: + filename = os.path.basename(filename) + else: + filename = os.fspath(filename) + + if isinstance(filename, bytes): + filename = filename.decode(sys.getfilesystemencoding(), "replace") + else: + filename = filename.encode("utf-8", "surrogateescape").decode( + "utf-8", "replace" + ) + + return filename + + +def get_app_dir(app_name: str, roaming: bool = True, force_posix: bool = False) -> str: + r"""Returns the config folder for the application. The default behavior + is to return whatever is most appropriate for the operating system. + + To give you an idea, for an app called ``"Foo Bar"``, something like + the following folders could be returned: + + Mac OS X: + ``~/Library/Application Support/Foo Bar`` + Mac OS X (POSIX): + ``~/.foo-bar`` + Unix: + ``~/.config/foo-bar`` + Unix (POSIX): + ``~/.foo-bar`` + Windows (roaming): + ``C:\Users\\AppData\Roaming\Foo Bar`` + Windows (not roaming): + ``C:\Users\\AppData\Local\Foo Bar`` + + .. versionadded:: 2.0 + + :param app_name: the application name. This should be properly capitalized + and can contain whitespace. + :param roaming: controls if the folder should be roaming or not on Windows. + Has no effect otherwise. + :param force_posix: if this is set to `True` then on any POSIX system the + folder will be stored in the home folder with a leading + dot instead of the XDG config home or darwin's + application support folder. + """ + if WIN: + key = "APPDATA" if roaming else "LOCALAPPDATA" + folder = os.environ.get(key) + if folder is None: + folder = os.path.expanduser("~") + return os.path.join(folder, app_name) + if force_posix: + return os.path.join(os.path.expanduser(f"~/.{_posixify(app_name)}")) + if sys.platform == "darwin": + return os.path.join( + os.path.expanduser("~/Library/Application Support"), app_name + ) + return os.path.join( + os.environ.get("XDG_CONFIG_HOME", os.path.expanduser("~/.config")), + _posixify(app_name), + ) + + +class PacifyFlushWrapper: + """This wrapper is used to catch and suppress BrokenPipeErrors resulting + from ``.flush()`` being called on broken pipe during the shutdown/final-GC + of the Python interpreter. Notably ``.flush()`` is always called on + ``sys.stdout`` and ``sys.stderr``. So as to have minimal impact on any + other cleanup code, and the case where the underlying file is not a broken + pipe, all calls and attributes are proxied. + """ + + wrapped: t.IO[t.Any] + + def __init__(self, wrapped: t.IO[t.Any]) -> None: + self.wrapped = wrapped + + def flush(self) -> None: + try: + self.wrapped.flush() + except OSError as e: + import errno + + if e.errno != errno.EPIPE: + raise + + def __getattr__(self, attr: str) -> t.Any: + return getattr(self.wrapped, attr) + + +def _detect_program_name( + path: str | None = None, _main: ModuleType | None = None +) -> str: + """Determine the command used to run the program, for use in help + text. If a file or entry point was executed, the file name is + returned. If ``python -m`` was used to execute a module or package, + ``python -m name`` is returned. + + This doesn't try to be too precise, the goal is to give a concise + name for help text. Files are only shown as their name without the + path. ``python`` is only shown for modules, and the full path to + ``sys.executable`` is not shown. + + :param path: The Python file being executed. Python puts this in + ``sys.argv[0]``, which is used by default. + :param _main: The ``__main__`` module. This should only be passed + during internal testing. + + .. versionadded:: 8.0 + Based on command args detection in the Werkzeug reloader. + + :meta private: + """ + if _main is None: + _main = sys.modules["__main__"] + + if not path: + path = sys.argv[0] + + # The value of __package__ indicates how Python was called. It may + # not exist if a setuptools script is installed as an egg. It may be + # set incorrectly for entry points created with pip on Windows. + # It is set to "" inside a Shiv or PEX zipapp. + if getattr(_main, "__package__", None) in {None, ""} or ( + os.name == "nt" + and _main.__package__ == "" + and not os.path.exists(path) + and os.path.exists(f"{path}.exe") + ): + # Executed a file, like "python app.py". + return os.path.basename(path) + + # Executed a module, like "python -m example". + # Rewritten by Python from "-m script" to "/path/to/script.py". + # Need to look at main module to determine how it was executed. + py_module = t.cast(str, _main.__package__) + name = os.path.splitext(os.path.basename(path))[0] + + # A submodule like "example.cli". + if name != "__main__": + py_module = f"{py_module}.{name}" + + return f"python -m {py_module.lstrip('.')}" + + +def _expand_args( + args: cabc.Iterable[str], + *, + user: bool = True, + env: bool = True, + glob_recursive: bool = True, +) -> list[str]: + """Simulate Unix shell expansion with Python functions. + + See :func:`glob.glob`, :func:`os.path.expanduser`, and + :func:`os.path.expandvars`. + + This is intended for use on Windows, where the shell does not do any + expansion. It may not exactly match what a Unix shell would do. + + :param args: List of command line arguments to expand. + :param user: Expand user home directory. + :param env: Expand environment variables. + :param glob_recursive: ``**`` matches directories recursively. + + .. versionchanged:: 8.1 + Invalid glob patterns are treated as empty expansions rather + than raising an error. + + .. versionadded:: 8.0 + + :meta private: + """ + from glob import glob + + out = [] + + for arg in args: + if user: + arg = os.path.expanduser(arg) + + if env: + arg = os.path.expandvars(arg) + + try: + matches = glob(arg, recursive=glob_recursive) + except re.error: + matches = [] + + if not matches: + out.append(arg) + else: + out.extend(matches) + + return out diff --git a/venv/lib/python3.11/site-packages/convert_to_quant-1.3.1.dist-info/INSTALLER b/venv/lib/python3.11/site-packages/convert_to_quant-1.3.1.dist-info/INSTALLER new file mode 100644 index 0000000000000000000000000000000000000000..5c69047b2eb8235994febeeae1da4a82365a240a --- /dev/null +++ b/venv/lib/python3.11/site-packages/convert_to_quant-1.3.1.dist-info/INSTALLER @@ -0,0 +1 @@ +uv \ No newline at end of file diff --git a/venv/lib/python3.11/site-packages/convert_to_quant-1.3.1.dist-info/METADATA b/venv/lib/python3.11/site-packages/convert_to_quant-1.3.1.dist-info/METADATA new file mode 100644 index 0000000000000000000000000000000000000000..1a6226231db64b3090aeaae889bd819bd0caf8c5 --- /dev/null +++ b/venv/lib/python3.11/site-packages/convert_to_quant-1.3.1.dist-info/METADATA @@ -0,0 +1,227 @@ +Metadata-Version: 2.4 +Name: convert_to_quant +Version: 1.3.1 +Summary: Convert safetensors weights to quantized formats (FP8, INT8) with learned rounding optimization +License: MIT +Project-URL: Repository, https://github.com/silveroxides/convert_to_quant +Keywords: quantization,fp8,int8,machine-learning,pytorch,comfyui +Classifier: Development Status :: 4 - Beta +Classifier: Intended Audience :: Developers +Classifier: Intended Audience :: Science/Research +Classifier: License :: OSI Approved :: MIT License +Classifier: Programming Language :: Python :: 3 +Classifier: Programming Language :: Python :: 3.10 +Classifier: Programming Language :: Python :: 3.11 +Classifier: Programming Language :: Python :: 3.12 +Classifier: Topic :: Scientific/Engineering :: Artificial Intelligence +Requires-Python: >=3.10 +Description-Content-Type: text/markdown +Requires-Dist: prodigy-plus-schedule-free +Requires-Dist: scipy +Provides-Extra: triton +Requires-Dist: triton<3.8,>=2.1.0; extra == "triton" +Provides-Extra: triton-windows +Requires-Dist: triton-windows<3.8,>=3.3; extra == "triton-windows" +Provides-Extra: blackwell +Requires-Dist: comfy-kitchen<0.3,>=0.2.18; extra == "blackwell" +Provides-Extra: prodigy +Requires-Dist: prodigy-plus-schedule-free; extra == "prodigy" +Provides-Extra: dev +Requires-Dist: pytest; extra == "dev" + +# convert_to_quant + +**Convert safetensors weights to quantized formats (FP8, INT8, NVFP4, MXFP8) with learned rounding optimization for ComfyUI inference.** + +[![PyPI version](https://badge.fury.io/py/convert-to-quant.svg)](https://badge.fury.io/py/convert-to-quant) +[![GitHub release](https://img.shields.io/github/v/release/silveroxides/convert_to_quant)](https://github.com/silveroxides/convert_to_quant/releases) +[![Python 3.10+](https://img.shields.io/badge/python-3.10+-blue.svg)](https://www.python.org/downloads/) +[![License: MIT](https://img.shields.io/badge/License-MIT-yellow.svg)](https://opensource.org/licenses/MIT) + +--- + +## Installation + +```bash +pip install convert-to-quant +``` + +**Or install from source:** + +```bash +git clone https://github.com/silveroxides/convert_to_quant.git +cd convert_to_quant +pip install -e . +``` + +--- + +## Requirements Summary + +| Feature | Requirement | +|---------|-------------| +| **Minimum (FP8/INT8)** | Python 3.10+, PyTorch 2.8+, CUDA 12.8+ | +| **Full (NVFP4/MXFP8)** | Python 3.12+, PyTorch 2.10+, CUDA 13.0+, **[comfy-kitchen](https://github.com/silveroxides/comfy-kitchen)** | +| **Bundled legacy INT8 runtime kernels** | Optional Triton (Linux native, Windows via `triton-windows`) | +| **ConvRot** | SciPy (installed automatically) | + +> [!IMPORTANT] +> **PyTorch must be installed manually** with the correct CUDA version for your GPU. +> This package does not install PyTorch automatically to prevent environment conflicts. + +--- + +## Detailed Installation (GPU-Specific) + +### 1. Install PyTorch +Visit [pytorch.org](https://pytorch.org/get-started/locally/) to get the correct install command. + +**Examples:** + +```bash +# CUDA 13.0 (Required for Blackwell NVFP4/MXFP8) +pip install torch --index-url https://download.pytorch.org/whl/cu130 + +# CUDA 12.8 (Stable) +pip install torch --index-url https://download.pytorch.org/whl/cu128 + +# CPU only +pip install torch --index-url https://download.pytorch.org/whl/cpu +``` + +### 2. Optional: Triton (bundled legacy/custom runtime kernels) + +Weight conversion and current ComfyUI tensor/row INT8 layouts do not require Triton. Install it only when using the bundled Triton runtime kernels. + +```bash +# Linux for torch 2.12+ +pip install -U "triton<3.8" + +# Windows for torch 2.10 and 2.11 +pip install -U "triton-windows<3.7" +# Windows for torch 2.12+ +pip install -U "triton-windows<3.8" +``` + +### 3. Optional: Blackwell formats (NVFP4/MXFP8) + +```bash +pip install -U "comfy-kitchen>=0.2.18,<0.3" +``` + +--- + +## Quick Start +### Use the command 'ctq -hf' to view arguments for layer exclusion presets for various models + +```bash +# All examples include metadata and comfy_quant layers for ComfyUI compatible quantization. +# Examples utilize low memory overhead argument to reduce peak RAM/VRAM usage. + +# Basic FP8 Tensorcore quantization without learned rounding +ctq -i model.safetensors -o model-fp8mixed.safetensors --comfy_quant --save-quant-metadata --simple --low-memory + +# INT8 Row-Wise quantization without learned rounding +ctq -i model.safetensors -o model-int8mixedrow.safetensors --int8 --scaling_mode row --comfy_quant --save-quant-metadata --simple --low-memory + +# Blackwell MXFP8 quantization without learned rounding +ctq -i model.safetensors -o model-mxfp8mixed.safetensors --mxfp8 --comfy_quant --save-quant-metadata --simple --low-memory +``` + +## Use In Code As Module + +```bash +# Example modular usage of INT8 Row-Wise quantization of Flux2 Klein 9B +from convert_to_quant import quantize + +quantize( + input="./flux-2-klein-9b.safetensors", + output="./flux-2-klein-9b-int8mixedrow.safetensors", + comfy_quant=True, + save_quant_metadata=True, + verbose="VERBOSE", + low_memory=True, + int8=True, + scaling_mode="row", + flux2=True, + simple=True, + calib_samples=8192 +) +``` + +Load the output `.safetensors` file in ComfyUI like any other model. + +--- + +## Supported Quantization Formats + +| Format | CLI Flag | Hardware | Optimization | +|--------|----------|----------|--------------| +| **FP8 (E4M3)** | *(default)* | Ada/Hopper+ | Learned Rounding (SVD) | +| **INT8 Block-wise**| `--int8` | QuantOps runtime | Learned Rounding (SVD) | +| **INT8 Tensor-wise**| `--int8 --scaling_mode tensor` | Turing+ runtime | Native `_scaled_mm` path | +| **INT8 ConvRot**| `--int8 --scaling_mode row --convrot --convrot-group-size 256` | Turing+ runtime | Native row-wise layout with Hadamard rotation | +| **NVFP4 (4-bit)** | `--nvfp4` | Blackwell | Dual-scale optimization | +| **MXFP8** | `--mxfp8` | Blackwell | Microscaling (E8M0) | + +For a deep dive into how these formats work, see **[FORMATS.md](docs/FORMATS.md)**. + +--- + +## Model-Specific Presets + +| Model | Flag | Notes | +|-------|------|-------| +| Flux.1 | `--flux1` | Keep modulation/guidance/time/final/input layers high-precision | +| Flux.2 | `--flux2` | Keep modulation/guidance/time/final high-precision | +| FLUX.2 Klein | `--flux_klein` | Flux-sensitive layers without guidance input | +| ERNIE Image | `--ernie_image` | Protect author-recommended time/AdaLN/boundary/projection layers | +| Gemma 4 | `--gemma4` | Protect embeddings, K/V, audio, vision, and multimodal projectors | +| Qwen3.5 | `--qwen35` | Protect size-specific boundaries, embeddings, and complete visual stack | +| Boogu | `--boogu` | Protect embeddings and norm projections | +| LTX 2 / 2.3 | `--ltxv2`, `--ltx2`, `--ltx2_3` | Protect boundary blocks, connectors, VAE, and vocoder | +| T5-XXL | `--t5xxl` | Decoder removed | +| Hunyuan Video| `--hunyuan`| Attention norms excluded | +| WAN Video | `--wan` | Time embeddings excluded | + +*(See `--help-filters` for a full list of presets)* + +--- + +## Key Features + +- **Learned Rounding**: SVD-based optimization minimizes quantization error. +- **Bias Correction**: Automatic bias adjustment using synthetic calibration data. +- **Lower INT8 Peak Memory**: In-place learned-rounding finalization avoids a second full-size float working tensor. +- **Model-Specific Support**: Exclusion lists for sensitive layers (norms, embeddings). +- **Three-Tier Quantization**: Mix different formats per layer using `--custom-layers`. + +--- + +## Advanced Usage + +### Exclude Layer Option +Define specific excluded layers with regex patterns for models with no exclusion preset(This is just example): +```bash +ctq -i model.safetensors --exclude-layers "(double_blocks.[01]|final_layer|txt_attn.proj)" --comfy_quant +``` + +### Scaling Modes +```bash +# Block-wise scaling for better accuracy +ctq -i model.safetensors --scaling-mode block --block_size 64 --comfy_quant +``` + +--- + +## Acknowledgements + +Special thanks to: +- [Clybius](https://github.com/Clybius) – For [Learned-Rounding](https://github.com/Clybius/Learned-Rounding) inspiration. +- [lyogavin](https://github.com/lyogavin) – For ComfyUI `int8_blockwise` support. + +--- + +## License + +MIT License diff --git a/venv/lib/python3.11/site-packages/convert_to_quant-1.3.1.dist-info/RECORD b/venv/lib/python3.11/site-packages/convert_to_quant-1.3.1.dist-info/RECORD new file mode 100644 index 0000000000000000000000000000000000000000..b9400107feec3164da119a609fa0010ec54924fb --- /dev/null +++ b/venv/lib/python3.11/site-packages/convert_to_quant-1.3.1.dist-info/RECORD @@ -0,0 +1,15 @@ +../../../bin/convert-to-quant,sha256=ZpGxwO0dxNv3YCUl9r_DgWY68jf3162ysws1dSr6BLo,326 +../../../bin/convert_to_quant,sha256=ZpGxwO0dxNv3YCUl9r_DgWY68jf3162ysws1dSr6BLo,326 +../../../bin/ctq,sha256=ZpGxwO0dxNv3YCUl9r_DgWY68jf3162ysws1dSr6BLo,326 +__editable__.convert_to_quant-1.3.1.pth,sha256=VsdmewaD-EJlvyWwppmBLp0Jr2KplYt0bFbVC1duYRg,103 +__editable___convert_to_quant_1_3_1_finder.py,sha256=6ebV--yZiA9H0jo2mvgufgYt19U1v-R2PTOEjpJAJvA,3438 +convert_to_quant-1.3.1.dist-info/INSTALLER,sha256=5hhM4Q4mYTT9z6QB6PGpUAW81PGNFrYrdXMj4oM_6ak,2 +convert_to_quant-1.3.1.dist-info/METADATA,sha256=ewlGflqjfpu_k6yRp-gqrcxgyS6r1c_3ehZrh_jzezY,8099 +convert_to_quant-1.3.1.dist-info/RECORD,, +convert_to_quant-1.3.1.dist-info/REQUESTED,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0 +convert_to_quant-1.3.1.dist-info/WHEEL,sha256=K260EYznzXsJYBQGqmI8VTxEdiZYNvDZwW9cBh9-_MA,91 +convert_to_quant-1.3.1.dist-info/direct_url.json,sha256=SlDrGDPILzWGpjZTuYhAEWzH1hl1fIRpZ_aZowMksZg,98 +convert_to_quant-1.3.1.dist-info/entry_points.txt,sha256=rv4FFMw9S0YkA_GjpP1EDTAT8Cr5VZN7rty9C6GAsTY,179 +convert_to_quant-1.3.1.dist-info/top_level.txt,sha256=huRLmJuMBR8CdALyppHb6R_6mAKQ1JDp4IO9OQdWXEE,17 +convert_to_quant-1.3.1.dist-info/uv_build.json,sha256=RBNvo1WzZ4oRRq0W9-hknpT7T8If536DEMBg9hyq_4o,2 +convert_to_quant-1.3.1.dist-info/uv_cache.json,sha256=PRij2LBWgktDyfzcDurNDkr01bRSgbiAaxmbxRlL_o0,129 diff --git a/venv/lib/python3.11/site-packages/convert_to_quant-1.3.1.dist-info/REQUESTED b/venv/lib/python3.11/site-packages/convert_to_quant-1.3.1.dist-info/REQUESTED new file mode 100644 index 0000000000000000000000000000000000000000..e69de29bb2d1d6434b8b29ae775ad8c2e48c5391 diff --git a/venv/lib/python3.11/site-packages/convert_to_quant-1.3.1.dist-info/WHEEL b/venv/lib/python3.11/site-packages/convert_to_quant-1.3.1.dist-info/WHEEL new file mode 100644 index 0000000000000000000000000000000000000000..1d472b6c22838de58d1c3c0dd2c795a5cde9e415 --- /dev/null +++ b/venv/lib/python3.11/site-packages/convert_to_quant-1.3.1.dist-info/WHEEL @@ -0,0 +1,5 @@ +Wheel-Version: 1.0 +Generator: setuptools (83.0.0) +Root-Is-Purelib: true +Tag: py3-none-any + diff --git a/venv/lib/python3.11/site-packages/convert_to_quant-1.3.1.dist-info/direct_url.json b/venv/lib/python3.11/site-packages/convert_to_quant-1.3.1.dist-info/direct_url.json new file mode 100644 index 0000000000000000000000000000000000000000..d90e06eaa89a9821ab1764e62d4dd46f2a2e72b1 --- /dev/null +++ b/venv/lib/python3.11/site-packages/convert_to_quant-1.3.1.dist-info/direct_url.json @@ -0,0 +1 @@ +{"url":"file:///workspace/SECourses_Musubi_Trainer/convert_to_quant","dir_info":{"editable":true}} \ No newline at end of file diff --git a/venv/lib/python3.11/site-packages/convert_to_quant-1.3.1.dist-info/entry_points.txt b/venv/lib/python3.11/site-packages/convert_to_quant-1.3.1.dist-info/entry_points.txt new file mode 100644 index 0000000000000000000000000000000000000000..9b8437e6df72509ef8378c41442710e227446d4a --- /dev/null +++ b/venv/lib/python3.11/site-packages/convert_to_quant-1.3.1.dist-info/entry_points.txt @@ -0,0 +1,4 @@ +[console_scripts] +convert-to-quant = convert_to_quant.convert_to_quant:main +convert_to_quant = convert_to_quant.convert_to_quant:main +ctq = convert_to_quant.convert_to_quant:main diff --git a/venv/lib/python3.11/site-packages/convert_to_quant-1.3.1.dist-info/top_level.txt b/venv/lib/python3.11/site-packages/convert_to_quant-1.3.1.dist-info/top_level.txt new file mode 100644 index 0000000000000000000000000000000000000000..220c72998375ebe79096173ea3c43addb7b1cfdb --- /dev/null +++ b/venv/lib/python3.11/site-packages/convert_to_quant-1.3.1.dist-info/top_level.txt @@ -0,0 +1 @@ +convert_to_quant diff --git a/venv/lib/python3.11/site-packages/convert_to_quant-1.3.1.dist-info/uv_build.json b/venv/lib/python3.11/site-packages/convert_to_quant-1.3.1.dist-info/uv_build.json new file mode 100644 index 0000000000000000000000000000000000000000..9e26dfeeb6e641a33dae4961196235bdb965b21b --- /dev/null +++ b/venv/lib/python3.11/site-packages/convert_to_quant-1.3.1.dist-info/uv_build.json @@ -0,0 +1 @@ +{} \ No newline at end of file diff --git a/venv/lib/python3.11/site-packages/convert_to_quant-1.3.1.dist-info/uv_cache.json b/venv/lib/python3.11/site-packages/convert_to_quant-1.3.1.dist-info/uv_cache.json new file mode 100644 index 0000000000000000000000000000000000000000..0fd4bd0996d59be19922d248be379a12a724a77e --- /dev/null +++ b/venv/lib/python3.11/site-packages/convert_to_quant-1.3.1.dist-info/uv_cache.json @@ -0,0 +1 @@ +{"timestamp":{"secs_since_epoch":1784965003,"nanos_since_epoch":0},"commit":null,"tags":null,"env":{},"directories":{"src":null}} \ No newline at end of file diff --git a/venv/lib/python3.11/site-packages/cuda/bindings/__init__.pxd b/venv/lib/python3.11/site-packages/cuda/bindings/__init__.pxd new file mode 100644 index 0000000000000000000000000000000000000000..e69de29bb2d1d6434b8b29ae775ad8c2e48c5391 diff --git a/venv/lib/python3.11/site-packages/cuda/bindings/__init__.py b/venv/lib/python3.11/site-packages/cuda/bindings/__init__.py new file mode 100644 index 0000000000000000000000000000000000000000..38d71fcfde45b03afb9df9a9e3afa940d14557ae --- /dev/null +++ b/venv/lib/python3.11/site-packages/cuda/bindings/__init__.py @@ -0,0 +1,5 @@ +# SPDX-FileCopyrightText: Copyright (c) 2021-2025 NVIDIA CORPORATION & AFFILIATES. All rights reserved. +# SPDX-License-Identifier: LicenseRef-NVIDIA-SOFTWARE-LICENSE + +from cuda.bindings import utils +from cuda.bindings._version import __version__ diff --git a/venv/lib/python3.11/site-packages/cuda/bindings/_bindings/__init__.py b/venv/lib/python3.11/site-packages/cuda/bindings/_bindings/__init__.py new file mode 100644 index 0000000000000000000000000000000000000000..e69de29bb2d1d6434b8b29ae775ad8c2e48c5391 diff --git a/venv/lib/python3.11/site-packages/cuda/bindings/_bindings/cydriver.cpython-311-x86_64-linux-gnu.so b/venv/lib/python3.11/site-packages/cuda/bindings/_bindings/cydriver.cpython-311-x86_64-linux-gnu.so new file mode 100644 index 0000000000000000000000000000000000000000..1ef2c4e240a13d396e6f0e714e45a2ed9c564c52 --- /dev/null +++ b/venv/lib/python3.11/site-packages/cuda/bindings/_bindings/cydriver.cpython-311-x86_64-linux-gnu.so @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:d26348c5ffb3452f479c73dde58e7a33bb4f075d6984b266414d106d09752f41 +size 479880 diff --git a/venv/lib/python3.11/site-packages/cuda/bindings/_bindings/cydriver.pxd b/venv/lib/python3.11/site-packages/cuda/bindings/_bindings/cydriver.pxd new file mode 100644 index 0000000000000000000000000000000000000000..243874dda24940ecee0982bda0203b05abcfd433 --- /dev/null +++ b/venv/lib/python3.11/site-packages/cuda/bindings/_bindings/cydriver.pxd @@ -0,0 +1,1013 @@ +# SPDX-FileCopyrightText: Copyright (c) 2021-2026 NVIDIA CORPORATION & AFFILIATES. All rights reserved. +# SPDX-License-Identifier: LicenseRef-NVIDIA-SOFTWARE-LICENSE + +# This code was automatically generated with version 13.3.0, generator version 0.3.1.dev1711+g875fec45. Do not modify it directly. +from cuda.bindings.cydriver cimport * + +cdef CUresult _cuGetErrorString(CUresult error, const char** pStr) except ?CUDA_ERROR_NOT_FOUND nogil + +cdef CUresult _cuGetErrorName(CUresult error, const char** pStr) except ?CUDA_ERROR_NOT_FOUND nogil + +cdef CUresult _cuInit(unsigned int Flags) except ?CUDA_ERROR_NOT_FOUND nogil + +cdef CUresult _cuDriverGetVersion(int* driverVersion) except ?CUDA_ERROR_NOT_FOUND nogil + +cdef CUresult _cuDeviceGet(CUdevice* device, int ordinal) except ?CUDA_ERROR_NOT_FOUND nogil + +cdef CUresult _cuDeviceGetCount(int* count) except ?CUDA_ERROR_NOT_FOUND nogil + +cdef CUresult _cuDeviceGetName(char* name, int length, CUdevice dev) except ?CUDA_ERROR_NOT_FOUND nogil + +cdef CUresult _cuDeviceGetUuid_v2(CUuuid* uuid, CUdevice dev) except ?CUDA_ERROR_NOT_FOUND nogil + +cdef CUresult _cuDeviceGetLuid(char* luid, unsigned int* deviceNodeMask, CUdevice dev) except ?CUDA_ERROR_NOT_FOUND nogil + +cdef CUresult _cuDeviceTotalMem_v2(size_t* numbytes, CUdevice dev) except ?CUDA_ERROR_NOT_FOUND nogil + +cdef CUresult _cuDeviceGetTexture1DLinearMaxWidth(size_t* maxWidthInElements, CUarray_format pformat, unsigned numChannels, CUdevice dev) except ?CUDA_ERROR_NOT_FOUND nogil + +cdef CUresult _cuDeviceGetAttribute(int* pi, CUdevice_attribute attrib, CUdevice dev) except ?CUDA_ERROR_NOT_FOUND nogil + +cdef CUresult _cuDeviceGetHostAtomicCapabilities(unsigned int* capabilities, const CUatomicOperation* operations, unsigned int count, CUdevice dev) except ?CUDA_ERROR_NOT_FOUND nogil + +cdef CUresult _cuDeviceGetNvSciSyncAttributes(void* nvSciSyncAttrList, CUdevice dev, int flags) except ?CUDA_ERROR_NOT_FOUND nogil + +cdef CUresult _cuDeviceSetMemPool(CUdevice dev, CUmemoryPool pool) except ?CUDA_ERROR_NOT_FOUND nogil + +cdef CUresult _cuDeviceGetMemPool(CUmemoryPool* pool, CUdevice dev) except ?CUDA_ERROR_NOT_FOUND nogil + +cdef CUresult _cuDeviceGetDefaultMemPool(CUmemoryPool* pool_out, CUdevice dev) except ?CUDA_ERROR_NOT_FOUND nogil + +cdef CUresult _cuDeviceGetExecAffinitySupport(int* pi, CUexecAffinityType typename, CUdevice dev) except ?CUDA_ERROR_NOT_FOUND nogil + +cdef CUresult _cuFlushGPUDirectRDMAWrites(CUflushGPUDirectRDMAWritesTarget target, CUflushGPUDirectRDMAWritesScope scope) except ?CUDA_ERROR_NOT_FOUND nogil + +cdef CUresult _cuDeviceGetProperties(CUdevprop* prop, CUdevice dev) except ?CUDA_ERROR_NOT_FOUND nogil + +cdef CUresult _cuDeviceComputeCapability(int* major, int* minor, CUdevice dev) except ?CUDA_ERROR_NOT_FOUND nogil + +cdef CUresult _cuDevicePrimaryCtxRetain(CUcontext* pctx, CUdevice dev) except ?CUDA_ERROR_NOT_FOUND nogil + +cdef CUresult _cuDevicePrimaryCtxRelease_v2(CUdevice dev) except ?CUDA_ERROR_NOT_FOUND nogil + +cdef CUresult _cuDevicePrimaryCtxSetFlags_v2(CUdevice dev, unsigned int flags) except ?CUDA_ERROR_NOT_FOUND nogil + +cdef CUresult _cuDevicePrimaryCtxGetState(CUdevice dev, unsigned int* flags, int* active) except ?CUDA_ERROR_NOT_FOUND nogil + +cdef CUresult _cuDevicePrimaryCtxReset_v2(CUdevice dev) except ?CUDA_ERROR_NOT_FOUND nogil + +cdef CUresult _cuCtxCreate_v4(CUcontext* pctx, CUctxCreateParams* ctxCreateParams, unsigned int flags, CUdevice dev) except ?CUDA_ERROR_NOT_FOUND nogil + +cdef CUresult _cuCtxDestroy_v2(CUcontext ctx) except ?CUDA_ERROR_NOT_FOUND nogil + +cdef CUresult _cuCtxPushCurrent_v2(CUcontext ctx) except ?CUDA_ERROR_NOT_FOUND nogil + +cdef CUresult _cuCtxPopCurrent_v2(CUcontext* pctx) except ?CUDA_ERROR_NOT_FOUND nogil + +cdef CUresult _cuCtxSetCurrent(CUcontext ctx) except ?CUDA_ERROR_NOT_FOUND nogil + +cdef CUresult _cuCtxGetCurrent(CUcontext* pctx) except ?CUDA_ERROR_NOT_FOUND nogil + +cdef CUresult _cuCtxGetDevice(CUdevice* device) except ?CUDA_ERROR_NOT_FOUND nogil + +cdef CUresult _cuCtxGetDevice_v2(CUdevice* device, CUcontext ctx) except ?CUDA_ERROR_NOT_FOUND nogil + +cdef CUresult _cuCtxGetFlags(unsigned int* flags) except ?CUDA_ERROR_NOT_FOUND nogil + +cdef CUresult _cuCtxSetFlags(unsigned int flags) except ?CUDA_ERROR_NOT_FOUND nogil + +cdef CUresult _cuCtxGetId(CUcontext ctx, unsigned long long* ctxId) except ?CUDA_ERROR_NOT_FOUND nogil + +cdef CUresult _cuCtxSynchronize() except ?CUDA_ERROR_NOT_FOUND nogil + +cdef CUresult _cuCtxSynchronize_v2(CUcontext ctx) except ?CUDA_ERROR_NOT_FOUND nogil + +cdef CUresult _cuCtxSetLimit(CUlimit limit, size_t value) except ?CUDA_ERROR_NOT_FOUND nogil + +cdef CUresult _cuCtxGetLimit(size_t* pvalue, CUlimit limit) except ?CUDA_ERROR_NOT_FOUND nogil + +cdef CUresult _cuCtxGetCacheConfig(CUfunc_cache* pconfig) except ?CUDA_ERROR_NOT_FOUND nogil + +cdef CUresult _cuCtxSetCacheConfig(CUfunc_cache config) except ?CUDA_ERROR_NOT_FOUND nogil + +cdef CUresult _cuCtxGetApiVersion(CUcontext ctx, unsigned int* version) except ?CUDA_ERROR_NOT_FOUND nogil + +cdef CUresult _cuCtxGetStreamPriorityRange(int* leastPriority, int* greatestPriority) except ?CUDA_ERROR_NOT_FOUND nogil + +cdef CUresult _cuCtxResetPersistingL2Cache() except ?CUDA_ERROR_NOT_FOUND nogil + +cdef CUresult _cuCtxGetExecAffinity(CUexecAffinityParam* pExecAffinity, CUexecAffinityType typename) except ?CUDA_ERROR_NOT_FOUND nogil + +cdef CUresult _cuCtxRecordEvent(CUcontext hCtx, CUevent hEvent) except ?CUDA_ERROR_NOT_FOUND nogil + +cdef CUresult _cuCtxWaitEvent(CUcontext hCtx, CUevent hEvent) except ?CUDA_ERROR_NOT_FOUND nogil + +cdef CUresult _cuCtxAttach(CUcontext* pctx, unsigned int flags) except ?CUDA_ERROR_NOT_FOUND nogil + +cdef CUresult _cuCtxDetach(CUcontext ctx) except ?CUDA_ERROR_NOT_FOUND nogil + +cdef CUresult _cuCtxGetSharedMemConfig(CUsharedconfig* pConfig) except ?CUDA_ERROR_NOT_FOUND nogil + +cdef CUresult _cuCtxSetSharedMemConfig(CUsharedconfig config) except ?CUDA_ERROR_NOT_FOUND nogil + +cdef CUresult _cuModuleLoad(CUmodule* module, const char* fname) except ?CUDA_ERROR_NOT_FOUND nogil + +cdef CUresult _cuModuleLoadData(CUmodule* module, const void* image) except ?CUDA_ERROR_NOT_FOUND nogil + +cdef CUresult _cuModuleLoadDataEx(CUmodule* module, const void* image, unsigned int numOptions, CUjit_option* options, void** optionValues) except ?CUDA_ERROR_NOT_FOUND nogil + +cdef CUresult _cuModuleLoadFatBinary(CUmodule* module, const void* fatCubin) except ?CUDA_ERROR_NOT_FOUND nogil + +cdef CUresult _cuModuleUnload(CUmodule hmod) except ?CUDA_ERROR_NOT_FOUND nogil + +cdef CUresult _cuModuleGetLoadingMode(CUmoduleLoadingMode* mode) except ?CUDA_ERROR_NOT_FOUND nogil + +cdef CUresult _cuModuleGetFunction(CUfunction* hfunc, CUmodule hmod, const char* name) except ?CUDA_ERROR_NOT_FOUND nogil + +cdef CUresult _cuModuleGetFunctionCount(unsigned int* count, CUmodule mod) except ?CUDA_ERROR_NOT_FOUND nogil + +cdef CUresult _cuModuleEnumerateFunctions(CUfunction* functions, unsigned int numFunctions, CUmodule mod) except ?CUDA_ERROR_NOT_FOUND nogil + +cdef CUresult _cuModuleGetGlobal_v2(CUdeviceptr* dptr, size_t* numbytes, CUmodule hmod, const char* name) except ?CUDA_ERROR_NOT_FOUND nogil + +cdef CUresult _cuLinkCreate_v2(unsigned int numOptions, CUjit_option* options, void** optionValues, CUlinkState* stateOut) except ?CUDA_ERROR_NOT_FOUND nogil + +cdef CUresult _cuLinkAddData_v2(CUlinkState state, CUjitInputType typename, void* data, size_t size, const char* name, unsigned int numOptions, CUjit_option* options, void** optionValues) except ?CUDA_ERROR_NOT_FOUND nogil + +cdef CUresult _cuLinkAddFile_v2(CUlinkState state, CUjitInputType typename, const char* path, unsigned int numOptions, CUjit_option* options, void** optionValues) except ?CUDA_ERROR_NOT_FOUND nogil + +cdef CUresult _cuLinkComplete(CUlinkState state, void** cubinOut, size_t* sizeOut) except ?CUDA_ERROR_NOT_FOUND nogil + +cdef CUresult _cuLinkDestroy(CUlinkState state) except ?CUDA_ERROR_NOT_FOUND nogil + +cdef CUresult _cuModuleGetTexRef(CUtexref* pTexRef, CUmodule hmod, const char* name) except ?CUDA_ERROR_NOT_FOUND nogil + +cdef CUresult _cuModuleGetSurfRef(CUsurfref* pSurfRef, CUmodule hmod, const char* name) except ?CUDA_ERROR_NOT_FOUND nogil + +cdef CUresult _cuLibraryLoadData(CUlibrary* library, const void* code, CUjit_option* jitOptions, void** jitOptionsValues, unsigned int numJitOptions, CUlibraryOption* libraryOptions, void** libraryOptionValues, unsigned int numLibraryOptions) except ?CUDA_ERROR_NOT_FOUND nogil + +cdef CUresult _cuLibraryLoadFromFile(CUlibrary* library, const char* fileName, CUjit_option* jitOptions, void** jitOptionsValues, unsigned int numJitOptions, CUlibraryOption* libraryOptions, void** libraryOptionValues, unsigned int numLibraryOptions) except ?CUDA_ERROR_NOT_FOUND nogil + +cdef CUresult _cuLibraryUnload(CUlibrary library) except ?CUDA_ERROR_NOT_FOUND nogil + +cdef CUresult _cuLibraryGetKernel(CUkernel* pKernel, CUlibrary library, const char* name) except ?CUDA_ERROR_NOT_FOUND nogil + +cdef CUresult _cuLibraryGetKernelCount(unsigned int* count, CUlibrary lib) except ?CUDA_ERROR_NOT_FOUND nogil + +cdef CUresult _cuLibraryEnumerateKernels(CUkernel* kernels, unsigned int numKernels, CUlibrary lib) except ?CUDA_ERROR_NOT_FOUND nogil + +cdef CUresult _cuLibraryGetModule(CUmodule* pMod, CUlibrary library) except ?CUDA_ERROR_NOT_FOUND nogil + +cdef CUresult _cuKernelGetFunction(CUfunction* pFunc, CUkernel kernel) except ?CUDA_ERROR_NOT_FOUND nogil + +cdef CUresult _cuKernelGetLibrary(CUlibrary* pLib, CUkernel kernel) except ?CUDA_ERROR_NOT_FOUND nogil + +cdef CUresult _cuLibraryGetGlobal(CUdeviceptr* dptr, size_t* numbytes, CUlibrary library, const char* name) except ?CUDA_ERROR_NOT_FOUND nogil + +cdef CUresult _cuLibraryGetManaged(CUdeviceptr* dptr, size_t* numbytes, CUlibrary library, const char* name) except ?CUDA_ERROR_NOT_FOUND nogil + +cdef CUresult _cuLibraryGetUnifiedFunction(void** fptr, CUlibrary library, const char* symbol) except ?CUDA_ERROR_NOT_FOUND nogil + +cdef CUresult _cuKernelGetAttribute(int* pi, CUfunction_attribute attrib, CUkernel kernel, CUdevice dev) except ?CUDA_ERROR_NOT_FOUND nogil + +cdef CUresult _cuKernelSetAttribute(CUfunction_attribute attrib, int val, CUkernel kernel, CUdevice dev) except ?CUDA_ERROR_NOT_FOUND nogil + +cdef CUresult _cuKernelSetCacheConfig(CUkernel kernel, CUfunc_cache config, CUdevice dev) except ?CUDA_ERROR_NOT_FOUND nogil + +cdef CUresult _cuKernelGetName(const char** name, CUkernel hfunc) except ?CUDA_ERROR_NOT_FOUND nogil + +cdef CUresult _cuKernelGetParamInfo(CUkernel kernel, size_t paramIndex, size_t* paramOffset, size_t* paramSize) except ?CUDA_ERROR_NOT_FOUND nogil + +cdef CUresult _cuKernelGetParamCount(CUkernel kernel, size_t* paramCount) except ?CUDA_ERROR_NOT_FOUND nogil + +cdef CUresult _cuMemGetInfo_v2(size_t* free, size_t* total) except ?CUDA_ERROR_NOT_FOUND nogil + +cdef CUresult _cuMemAlloc_v2(CUdeviceptr* dptr, size_t bytesize) except ?CUDA_ERROR_NOT_FOUND nogil + +cdef CUresult _cuMemAllocPitch_v2(CUdeviceptr* dptr, size_t* pPitch, size_t WidthInBytes, size_t Height, unsigned int ElementSizeBytes) except ?CUDA_ERROR_NOT_FOUND nogil + +cdef CUresult _cuMemFree_v2(CUdeviceptr dptr) except ?CUDA_ERROR_NOT_FOUND nogil + +cdef CUresult _cuMemGetAddressRange_v2(CUdeviceptr* pbase, size_t* psize, CUdeviceptr dptr) except ?CUDA_ERROR_NOT_FOUND nogil + +cdef CUresult _cuMemAllocHost_v2(void** pp, size_t bytesize) except ?CUDA_ERROR_NOT_FOUND nogil + +cdef CUresult _cuMemFreeHost(void* p) except ?CUDA_ERROR_NOT_FOUND nogil + +cdef CUresult _cuMemHostAlloc(void** pp, size_t bytesize, unsigned int Flags) except ?CUDA_ERROR_NOT_FOUND nogil + +cdef CUresult _cuMemHostGetDevicePointer_v2(CUdeviceptr* pdptr, void* p, unsigned int Flags) except ?CUDA_ERROR_NOT_FOUND nogil + +cdef CUresult _cuMemHostGetFlags(unsigned int* pFlags, void* p) except ?CUDA_ERROR_NOT_FOUND nogil + +cdef CUresult _cuMemAllocManaged(CUdeviceptr* dptr, size_t bytesize, unsigned int flags) except ?CUDA_ERROR_NOT_FOUND nogil + +cdef CUresult _cuDeviceRegisterAsyncNotification(CUdevice device, CUasyncCallback callbackFunc, void* userData, CUasyncCallbackHandle* callback) except ?CUDA_ERROR_NOT_FOUND nogil + +cdef CUresult _cuDeviceUnregisterAsyncNotification(CUdevice device, CUasyncCallbackHandle callback) except ?CUDA_ERROR_NOT_FOUND nogil + +cdef CUresult _cuDeviceGetByPCIBusId(CUdevice* dev, const char* pciBusId) except ?CUDA_ERROR_NOT_FOUND nogil + +cdef CUresult _cuDeviceGetPCIBusId(char* pciBusId, int length, CUdevice dev) except ?CUDA_ERROR_NOT_FOUND nogil + +cdef CUresult _cuIpcGetEventHandle(CUipcEventHandle* pHandle, CUevent event) except ?CUDA_ERROR_NOT_FOUND nogil + +cdef CUresult _cuIpcOpenEventHandle(CUevent* phEvent, CUipcEventHandle handle) except ?CUDA_ERROR_NOT_FOUND nogil + +cdef CUresult _cuIpcGetMemHandle(CUipcMemHandle* pHandle, CUdeviceptr dptr) except ?CUDA_ERROR_NOT_FOUND nogil + +cdef CUresult _cuIpcOpenMemHandle_v2(CUdeviceptr* pdptr, CUipcMemHandle handle, unsigned int Flags) except ?CUDA_ERROR_NOT_FOUND nogil + +cdef CUresult _cuIpcCloseMemHandle(CUdeviceptr dptr) except ?CUDA_ERROR_NOT_FOUND nogil + +cdef CUresult _cuMemHostRegister_v2(void* p, size_t bytesize, unsigned int Flags) except ?CUDA_ERROR_NOT_FOUND nogil + +cdef CUresult _cuMemHostUnregister(void* p) except ?CUDA_ERROR_NOT_FOUND nogil + +cdef CUresult _cuMemcpy(CUdeviceptr dst, CUdeviceptr src, size_t ByteCount) except ?CUDA_ERROR_NOT_FOUND nogil + +cdef CUresult _cuMemcpyPeer(CUdeviceptr dstDevice, CUcontext dstContext, CUdeviceptr srcDevice, CUcontext srcContext, size_t ByteCount) except ?CUDA_ERROR_NOT_FOUND nogil + +cdef CUresult _cuMemcpyHtoD_v2(CUdeviceptr dstDevice, const void* srcHost, size_t ByteCount) except ?CUDA_ERROR_NOT_FOUND nogil + +cdef CUresult _cuMemcpyDtoH_v2(void* dstHost, CUdeviceptr srcDevice, size_t ByteCount) except ?CUDA_ERROR_NOT_FOUND nogil + +cdef CUresult _cuMemcpyDtoD_v2(CUdeviceptr dstDevice, CUdeviceptr srcDevice, size_t ByteCount) except ?CUDA_ERROR_NOT_FOUND nogil + +cdef CUresult _cuMemcpyDtoA_v2(CUarray dstArray, size_t dstOffset, CUdeviceptr srcDevice, size_t ByteCount) except ?CUDA_ERROR_NOT_FOUND nogil + +cdef CUresult _cuMemcpyAtoD_v2(CUdeviceptr dstDevice, CUarray srcArray, size_t srcOffset, size_t ByteCount) except ?CUDA_ERROR_NOT_FOUND nogil + +cdef CUresult _cuMemcpyHtoA_v2(CUarray dstArray, size_t dstOffset, const void* srcHost, size_t ByteCount) except ?CUDA_ERROR_NOT_FOUND nogil + +cdef CUresult _cuMemcpyAtoH_v2(void* dstHost, CUarray srcArray, size_t srcOffset, size_t ByteCount) except ?CUDA_ERROR_NOT_FOUND nogil + +cdef CUresult _cuMemcpyAtoA_v2(CUarray dstArray, size_t dstOffset, CUarray srcArray, size_t srcOffset, size_t ByteCount) except ?CUDA_ERROR_NOT_FOUND nogil + +cdef CUresult _cuMemcpy2D_v2(const CUDA_MEMCPY2D* pCopy) except ?CUDA_ERROR_NOT_FOUND nogil + +cdef CUresult _cuMemcpy2DUnaligned_v2(const CUDA_MEMCPY2D* pCopy) except ?CUDA_ERROR_NOT_FOUND nogil + +cdef CUresult _cuMemcpy3D_v2(const CUDA_MEMCPY3D* pCopy) except ?CUDA_ERROR_NOT_FOUND nogil + +cdef CUresult _cuMemcpy3DPeer(const CUDA_MEMCPY3D_PEER* pCopy) except ?CUDA_ERROR_NOT_FOUND nogil + +cdef CUresult _cuMemcpyAsync(CUdeviceptr dst, CUdeviceptr src, size_t ByteCount, CUstream hStream) except ?CUDA_ERROR_NOT_FOUND nogil + +cdef CUresult _cuMemcpyPeerAsync(CUdeviceptr dstDevice, CUcontext dstContext, CUdeviceptr srcDevice, CUcontext srcContext, size_t ByteCount, CUstream hStream) except ?CUDA_ERROR_NOT_FOUND nogil + +cdef CUresult _cuMemcpyHtoDAsync_v2(CUdeviceptr dstDevice, const void* srcHost, size_t ByteCount, CUstream hStream) except ?CUDA_ERROR_NOT_FOUND nogil + +cdef CUresult _cuMemcpyDtoHAsync_v2(void* dstHost, CUdeviceptr srcDevice, size_t ByteCount, CUstream hStream) except ?CUDA_ERROR_NOT_FOUND nogil + +cdef CUresult _cuMemcpyDtoDAsync_v2(CUdeviceptr dstDevice, CUdeviceptr srcDevice, size_t ByteCount, CUstream hStream) except ?CUDA_ERROR_NOT_FOUND nogil + +cdef CUresult _cuMemcpyHtoAAsync_v2(CUarray dstArray, size_t dstOffset, const void* srcHost, size_t ByteCount, CUstream hStream) except ?CUDA_ERROR_NOT_FOUND nogil + +cdef CUresult _cuMemcpyAtoHAsync_v2(void* dstHost, CUarray srcArray, size_t srcOffset, size_t ByteCount, CUstream hStream) except ?CUDA_ERROR_NOT_FOUND nogil + +cdef CUresult _cuMemcpy2DAsync_v2(const CUDA_MEMCPY2D* pCopy, CUstream hStream) except ?CUDA_ERROR_NOT_FOUND nogil + +cdef CUresult _cuMemcpy3DAsync_v2(const CUDA_MEMCPY3D* pCopy, CUstream hStream) except ?CUDA_ERROR_NOT_FOUND nogil + +cdef CUresult _cuMemcpy3DPeerAsync(const CUDA_MEMCPY3D_PEER* pCopy, CUstream hStream) except ?CUDA_ERROR_NOT_FOUND nogil + +cdef CUresult _cuMemcpyBatchAsync_v2(CUdeviceptr* dsts, CUdeviceptr* srcs, size_t* sizes, size_t count, CUmemcpyAttributes* attrs, size_t* attrsIdxs, size_t numAttrs, CUstream hStream) except ?CUDA_ERROR_NOT_FOUND nogil + +cdef CUresult _cuMemcpy3DBatchAsync_v2(size_t numOps, CUDA_MEMCPY3D_BATCH_OP* opList, unsigned long long flags, CUstream hStream) except ?CUDA_ERROR_NOT_FOUND nogil + +cdef CUresult _cuMemcpyWithAttributesAsync(CUdeviceptr dst, CUdeviceptr src, size_t size, CUmemcpyAttributes* attr, CUstream hStream) except ?CUDA_ERROR_NOT_FOUND nogil + +cdef CUresult _cuMemcpy3DWithAttributesAsync(CUDA_MEMCPY3D_BATCH_OP* op, unsigned long long flags, CUstream hStream) except ?CUDA_ERROR_NOT_FOUND nogil + +cdef CUresult _cuMemsetD8_v2(CUdeviceptr dstDevice, unsigned char uc, size_t N) except ?CUDA_ERROR_NOT_FOUND nogil + +cdef CUresult _cuMemsetD16_v2(CUdeviceptr dstDevice, unsigned short us, size_t N) except ?CUDA_ERROR_NOT_FOUND nogil + +cdef CUresult _cuMemsetD32_v2(CUdeviceptr dstDevice, unsigned int ui, size_t N) except ?CUDA_ERROR_NOT_FOUND nogil + +cdef CUresult _cuMemsetD2D8_v2(CUdeviceptr dstDevice, size_t dstPitch, unsigned char uc, size_t Width, size_t Height) except ?CUDA_ERROR_NOT_FOUND nogil + +cdef CUresult _cuMemsetD2D16_v2(CUdeviceptr dstDevice, size_t dstPitch, unsigned short us, size_t Width, size_t Height) except ?CUDA_ERROR_NOT_FOUND nogil + +cdef CUresult _cuMemsetD2D32_v2(CUdeviceptr dstDevice, size_t dstPitch, unsigned int ui, size_t Width, size_t Height) except ?CUDA_ERROR_NOT_FOUND nogil + +cdef CUresult _cuMemsetD8Async(CUdeviceptr dstDevice, unsigned char uc, size_t N, CUstream hStream) except ?CUDA_ERROR_NOT_FOUND nogil + +cdef CUresult _cuMemsetD16Async(CUdeviceptr dstDevice, unsigned short us, size_t N, CUstream hStream) except ?CUDA_ERROR_NOT_FOUND nogil + +cdef CUresult _cuMemsetD32Async(CUdeviceptr dstDevice, unsigned int ui, size_t N, CUstream hStream) except ?CUDA_ERROR_NOT_FOUND nogil + +cdef CUresult _cuMemsetD2D8Async(CUdeviceptr dstDevice, size_t dstPitch, unsigned char uc, size_t Width, size_t Height, CUstream hStream) except ?CUDA_ERROR_NOT_FOUND nogil + +cdef CUresult _cuMemsetD2D16Async(CUdeviceptr dstDevice, size_t dstPitch, unsigned short us, size_t Width, size_t Height, CUstream hStream) except ?CUDA_ERROR_NOT_FOUND nogil + +cdef CUresult _cuMemsetD2D32Async(CUdeviceptr dstDevice, size_t dstPitch, unsigned int ui, size_t Width, size_t Height, CUstream hStream) except ?CUDA_ERROR_NOT_FOUND nogil + +cdef CUresult _cuArrayCreate_v2(CUarray* pHandle, const CUDA_ARRAY_DESCRIPTOR* pAllocateArray) except ?CUDA_ERROR_NOT_FOUND nogil + +cdef CUresult _cuArrayGetDescriptor_v2(CUDA_ARRAY_DESCRIPTOR* pArrayDescriptor, CUarray hArray) except ?CUDA_ERROR_NOT_FOUND nogil + +cdef CUresult _cuArrayGetSparseProperties(CUDA_ARRAY_SPARSE_PROPERTIES* sparseProperties, CUarray array) except ?CUDA_ERROR_NOT_FOUND nogil + +cdef CUresult _cuMipmappedArrayGetSparseProperties(CUDA_ARRAY_SPARSE_PROPERTIES* sparseProperties, CUmipmappedArray mipmap) except ?CUDA_ERROR_NOT_FOUND nogil + +cdef CUresult _cuArrayGetMemoryRequirements(CUDA_ARRAY_MEMORY_REQUIREMENTS* memoryRequirements, CUarray array, CUdevice device) except ?CUDA_ERROR_NOT_FOUND nogil + +cdef CUresult _cuMipmappedArrayGetMemoryRequirements(CUDA_ARRAY_MEMORY_REQUIREMENTS* memoryRequirements, CUmipmappedArray mipmap, CUdevice device) except ?CUDA_ERROR_NOT_FOUND nogil + +cdef CUresult _cuArrayGetPlane(CUarray* pPlaneArray, CUarray hArray, unsigned int planeIdx) except ?CUDA_ERROR_NOT_FOUND nogil + +cdef CUresult _cuArrayDestroy(CUarray hArray) except ?CUDA_ERROR_NOT_FOUND nogil + +cdef CUresult _cuArray3DCreate_v2(CUarray* pHandle, const CUDA_ARRAY3D_DESCRIPTOR* pAllocateArray) except ?CUDA_ERROR_NOT_FOUND nogil + +cdef CUresult _cuArray3DGetDescriptor_v2(CUDA_ARRAY3D_DESCRIPTOR* pArrayDescriptor, CUarray hArray) except ?CUDA_ERROR_NOT_FOUND nogil + +cdef CUresult _cuMipmappedArrayCreate(CUmipmappedArray* pHandle, const CUDA_ARRAY3D_DESCRIPTOR* pMipmappedArrayDesc, unsigned int numMipmapLevels) except ?CUDA_ERROR_NOT_FOUND nogil + +cdef CUresult _cuMipmappedArrayGetLevel(CUarray* pLevelArray, CUmipmappedArray hMipmappedArray, unsigned int level) except ?CUDA_ERROR_NOT_FOUND nogil + +cdef CUresult _cuMipmappedArrayDestroy(CUmipmappedArray hMipmappedArray) except ?CUDA_ERROR_NOT_FOUND nogil + +cdef CUresult _cuMemGetHandleForAddressRange(void* handle, CUdeviceptr dptr, size_t size, CUmemRangeHandleType handleType, unsigned long long flags) except ?CUDA_ERROR_NOT_FOUND nogil + +cdef CUresult _cuMemBatchDecompressAsync(CUmemDecompressParams* paramsArray, size_t count, unsigned int flags, size_t* errorIndex, CUstream stream) except ?CUDA_ERROR_NOT_FOUND nogil + +cdef CUresult _cuMemAddressReserve(CUdeviceptr* ptr, size_t size, size_t alignment, CUdeviceptr addr, unsigned long long flags) except ?CUDA_ERROR_NOT_FOUND nogil + +cdef CUresult _cuMemAddressFree(CUdeviceptr ptr, size_t size) except ?CUDA_ERROR_NOT_FOUND nogil + +cdef CUresult _cuMemCreate(CUmemGenericAllocationHandle* handle, size_t size, const CUmemAllocationProp* prop, unsigned long long flags) except ?CUDA_ERROR_NOT_FOUND nogil + +cdef CUresult _cuMemRelease(CUmemGenericAllocationHandle handle) except ?CUDA_ERROR_NOT_FOUND nogil + +cdef CUresult _cuMemMap(CUdeviceptr ptr, size_t size, size_t offset, CUmemGenericAllocationHandle handle, unsigned long long flags) except ?CUDA_ERROR_NOT_FOUND nogil + +cdef CUresult _cuMemMapArrayAsync(CUarrayMapInfo* mapInfoList, unsigned int count, CUstream hStream) except ?CUDA_ERROR_NOT_FOUND nogil + +cdef CUresult _cuMemUnmap(CUdeviceptr ptr, size_t size) except ?CUDA_ERROR_NOT_FOUND nogil + +cdef CUresult _cuMemSetAccess(CUdeviceptr ptr, size_t size, const CUmemAccessDesc* desc, size_t count) except ?CUDA_ERROR_NOT_FOUND nogil + +cdef CUresult _cuMemGetAccess(unsigned long long* flags, const CUmemLocation* location, CUdeviceptr ptr) except ?CUDA_ERROR_NOT_FOUND nogil + +cdef CUresult _cuMemExportToShareableHandle(void* shareableHandle, CUmemGenericAllocationHandle handle, CUmemAllocationHandleType handleType, unsigned long long flags) except ?CUDA_ERROR_NOT_FOUND nogil + +cdef CUresult _cuMemImportFromShareableHandle(CUmemGenericAllocationHandle* handle, void* osHandle, CUmemAllocationHandleType shHandleType) except ?CUDA_ERROR_NOT_FOUND nogil + +cdef CUresult _cuMemGetAllocationGranularity(size_t* granularity, const CUmemAllocationProp* prop, CUmemAllocationGranularity_flags option) except ?CUDA_ERROR_NOT_FOUND nogil + +cdef CUresult _cuMemGetAllocationPropertiesFromHandle(CUmemAllocationProp* prop, CUmemGenericAllocationHandle handle) except ?CUDA_ERROR_NOT_FOUND nogil + +cdef CUresult _cuMemRetainAllocationHandle(CUmemGenericAllocationHandle* handle, void* addr) except ?CUDA_ERROR_NOT_FOUND nogil + +cdef CUresult _cuMemFreeAsync(CUdeviceptr dptr, CUstream hStream) except ?CUDA_ERROR_NOT_FOUND nogil + +cdef CUresult _cuMemAllocAsync(CUdeviceptr* dptr, size_t bytesize, CUstream hStream) except ?CUDA_ERROR_NOT_FOUND nogil + +cdef CUresult _cuMemPoolTrimTo(CUmemoryPool pool, size_t minBytesToKeep) except ?CUDA_ERROR_NOT_FOUND nogil + +cdef CUresult _cuMemPoolSetAttribute(CUmemoryPool pool, CUmemPool_attribute attr, void* value) except ?CUDA_ERROR_NOT_FOUND nogil + +cdef CUresult _cuMemPoolGetAttribute(CUmemoryPool pool, CUmemPool_attribute attr, void* value) except ?CUDA_ERROR_NOT_FOUND nogil + +cdef CUresult _cuMemPoolSetAccess(CUmemoryPool pool, const CUmemAccessDesc* map, size_t count) except ?CUDA_ERROR_NOT_FOUND nogil + +cdef CUresult _cuMemPoolGetAccess(CUmemAccess_flags* flags, CUmemoryPool memPool, CUmemLocation* location) except ?CUDA_ERROR_NOT_FOUND nogil + +cdef CUresult _cuMemPoolCreate(CUmemoryPool* pool, const CUmemPoolProps* poolProps) except ?CUDA_ERROR_NOT_FOUND nogil + +cdef CUresult _cuMemPoolDestroy(CUmemoryPool pool) except ?CUDA_ERROR_NOT_FOUND nogil + +cdef CUresult _cuMemGetDefaultMemPool(CUmemoryPool* pool_out, CUmemLocation* location, CUmemAllocationType typename) except ?CUDA_ERROR_NOT_FOUND nogil + +cdef CUresult _cuMemGetMemPool(CUmemoryPool* pool, CUmemLocation* location, CUmemAllocationType typename) except ?CUDA_ERROR_NOT_FOUND nogil + +cdef CUresult _cuMemSetMemPool(CUmemLocation* location, CUmemAllocationType typename, CUmemoryPool pool) except ?CUDA_ERROR_NOT_FOUND nogil + +cdef CUresult _cuMemAllocFromPoolAsync(CUdeviceptr* dptr, size_t bytesize, CUmemoryPool pool, CUstream hStream) except ?CUDA_ERROR_NOT_FOUND nogil + +cdef CUresult _cuMemPoolExportToShareableHandle(void* handle_out, CUmemoryPool pool, CUmemAllocationHandleType handleType, unsigned long long flags) except ?CUDA_ERROR_NOT_FOUND nogil + +cdef CUresult _cuMemPoolImportFromShareableHandle(CUmemoryPool* pool_out, void* handle, CUmemAllocationHandleType handleType, unsigned long long flags) except ?CUDA_ERROR_NOT_FOUND nogil + +cdef CUresult _cuMemPoolExportPointer(CUmemPoolPtrExportData* shareData_out, CUdeviceptr ptr) except ?CUDA_ERROR_NOT_FOUND nogil + +cdef CUresult _cuMemPoolImportPointer(CUdeviceptr* ptr_out, CUmemoryPool pool, CUmemPoolPtrExportData* shareData) except ?CUDA_ERROR_NOT_FOUND nogil + +cdef CUresult _cuMulticastCreate(CUmemGenericAllocationHandle* mcHandle, const CUmulticastObjectProp* prop) except ?CUDA_ERROR_NOT_FOUND nogil + +cdef CUresult _cuMulticastAddDevice(CUmemGenericAllocationHandle mcHandle, CUdevice dev) except ?CUDA_ERROR_NOT_FOUND nogil + +cdef CUresult _cuMulticastBindMem(CUmemGenericAllocationHandle mcHandle, size_t mcOffset, CUmemGenericAllocationHandle memHandle, size_t memOffset, size_t size, unsigned long long flags) except ?CUDA_ERROR_NOT_FOUND nogil + +cdef CUresult _cuMulticastBindMem_v2(CUmemGenericAllocationHandle mcHandle, CUdevice dev, size_t mcOffset, CUmemGenericAllocationHandle memHandle, size_t memOffset, size_t size, unsigned long long flags) except ?CUDA_ERROR_NOT_FOUND nogil + +cdef CUresult _cuMulticastBindAddr(CUmemGenericAllocationHandle mcHandle, size_t mcOffset, CUdeviceptr memptr, size_t size, unsigned long long flags) except ?CUDA_ERROR_NOT_FOUND nogil + +cdef CUresult _cuMulticastBindAddr_v2(CUmemGenericAllocationHandle mcHandle, CUdevice dev, size_t mcOffset, CUdeviceptr memptr, size_t size, unsigned long long flags) except ?CUDA_ERROR_NOT_FOUND nogil + +cdef CUresult _cuMulticastUnbind(CUmemGenericAllocationHandle mcHandle, CUdevice dev, size_t mcOffset, size_t size) except ?CUDA_ERROR_NOT_FOUND nogil + +cdef CUresult _cuMulticastGetGranularity(size_t* granularity, const CUmulticastObjectProp* prop, CUmulticastGranularity_flags option) except ?CUDA_ERROR_NOT_FOUND nogil + +cdef CUresult _cuLogicalEndpointIdReserve(CUlogicalEndpointId* baseLeId, cuuint32_t count) except ?CUDA_ERROR_NOT_FOUND nogil + +cdef CUresult _cuLogicalEndpointIdRelease(CUlogicalEndpointId baseLeId, cuuint32_t count) except ?CUDA_ERROR_NOT_FOUND nogil + +cdef CUresult _cuLogicalEndpointCreate(CUlogicalEndpointId leId, const CUlogicalEndpointProp* prop) except ?CUDA_ERROR_NOT_FOUND nogil + +cdef CUresult _cuLogicalEndpointAddDevice(CUlogicalEndpointId leId, CUdevice dev) except ?CUDA_ERROR_NOT_FOUND nogil + +cdef CUresult _cuLogicalEndpointDestroy(CUlogicalEndpointId leId) except ?CUDA_ERROR_NOT_FOUND nogil + +cdef CUresult _cuLogicalEndpointBindAddr(CUlogicalEndpointId leId, CUdevice dev, cuuint64_t offset, void* ptr, cuuint64_t size, unsigned long long flags) except ?CUDA_ERROR_NOT_FOUND nogil + +cdef CUresult _cuLogicalEndpointBindMem(CUlogicalEndpointId leId, CUdevice dev, cuuint64_t offset, CUmemGenericAllocationHandle memHandle, cuuint64_t memOffset, cuuint64_t size, unsigned long long flags) except ?CUDA_ERROR_NOT_FOUND nogil + +cdef CUresult _cuLogicalEndpointUnbind(CUlogicalEndpointId leId, CUdevice dev, cuuint64_t offset, cuuint64_t size) except ?CUDA_ERROR_NOT_FOUND nogil + +cdef CUresult _cuLogicalEndpointExport(void* handle, CUlogicalEndpointId leId, CUlogicalEndpointIpcHandleType handleType) except ?CUDA_ERROR_NOT_FOUND nogil + +cdef CUresult _cuLogicalEndpointImport(CUlogicalEndpointId leId, const void* handle, CUlogicalEndpointIpcHandleType handleType) except ?CUDA_ERROR_NOT_FOUND nogil + +cdef CUresult _cuLogicalEndpointGetLimits(cuuint64_t* bindAlignment, cuuint64_t* maxSize, const CUlogicalEndpointProp* prop) except ?CUDA_ERROR_NOT_FOUND nogil + +cdef CUresult _cuLogicalEndpointQuery(CUlogicalEndpointId leId, cuuint32_t count, int* queryStatus) except ?CUDA_ERROR_NOT_FOUND nogil + +cdef CUresult _cuPointerGetAttribute(void* data, CUpointer_attribute attribute, CUdeviceptr ptr) except ?CUDA_ERROR_NOT_FOUND nogil + +cdef CUresult _cuMemPrefetchAsync_v2(CUdeviceptr devPtr, size_t count, CUmemLocation location, unsigned int flags, CUstream hStream) except ?CUDA_ERROR_NOT_FOUND nogil + +cdef CUresult _cuMemAdvise_v2(CUdeviceptr devPtr, size_t count, CUmem_advise advice, CUmemLocation location) except ?CUDA_ERROR_NOT_FOUND nogil + +cdef CUresult _cuMemPrefetchBatchAsync(CUdeviceptr* dptrs, size_t* sizes, size_t count, CUmemLocation* prefetchLocs, size_t* prefetchLocIdxs, size_t numPrefetchLocs, unsigned long long flags, CUstream hStream) except ?CUDA_ERROR_NOT_FOUND nogil + +cdef CUresult _cuMemDiscardBatchAsync(CUdeviceptr* dptrs, size_t* sizes, size_t count, unsigned long long flags, CUstream hStream) except ?CUDA_ERROR_NOT_FOUND nogil + +cdef CUresult _cuMemDiscardAndPrefetchBatchAsync(CUdeviceptr* dptrs, size_t* sizes, size_t count, CUmemLocation* prefetchLocs, size_t* prefetchLocIdxs, size_t numPrefetchLocs, unsigned long long flags, CUstream hStream) except ?CUDA_ERROR_NOT_FOUND nogil + +cdef CUresult _cuMemRangeGetAttribute(void* data, size_t dataSize, CUmem_range_attribute attribute, CUdeviceptr devPtr, size_t count) except ?CUDA_ERROR_NOT_FOUND nogil + +cdef CUresult _cuMemRangeGetAttributes(void** data, size_t* dataSizes, CUmem_range_attribute* attributes, size_t numAttributes, CUdeviceptr devPtr, size_t count) except ?CUDA_ERROR_NOT_FOUND nogil + +cdef CUresult _cuPointerSetAttribute(const void* value, CUpointer_attribute attribute, CUdeviceptr ptr) except ?CUDA_ERROR_NOT_FOUND nogil + +cdef CUresult _cuPointerGetAttributes(unsigned int numAttributes, CUpointer_attribute* attributes, void** data, CUdeviceptr ptr) except ?CUDA_ERROR_NOT_FOUND nogil + +cdef CUresult _cuStreamCreate(CUstream* phStream, unsigned int Flags) except ?CUDA_ERROR_NOT_FOUND nogil + +cdef CUresult _cuStreamCreateWithPriority(CUstream* phStream, unsigned int flags, int priority) except ?CUDA_ERROR_NOT_FOUND nogil + +cdef CUresult _cuStreamBeginCaptureToCig(CUstream hStream, CUstreamCigCaptureParams* streamCigCaptureParams) except ?CUDA_ERROR_NOT_FOUND nogil + +cdef CUresult _cuStreamEndCaptureToCig(CUstream hStream) except ?CUDA_ERROR_NOT_FOUND nogil + +cdef CUresult _cuStreamGetPriority(CUstream hStream, int* priority) except ?CUDA_ERROR_NOT_FOUND nogil + +cdef CUresult _cuStreamGetDevice(CUstream hStream, CUdevice* device) except ?CUDA_ERROR_NOT_FOUND nogil + +cdef CUresult _cuStreamGetFlags(CUstream hStream, unsigned int* flags) except ?CUDA_ERROR_NOT_FOUND nogil + +cdef CUresult _cuStreamGetId(CUstream hStream, unsigned long long* streamId) except ?CUDA_ERROR_NOT_FOUND nogil + +cdef CUresult _cuStreamGetCtx(CUstream hStream, CUcontext* pctx) except ?CUDA_ERROR_NOT_FOUND nogil + +cdef CUresult _cuStreamGetCtx_v2(CUstream hStream, CUcontext* pCtx, CUgreenCtx* pGreenCtx) except ?CUDA_ERROR_NOT_FOUND nogil + +cdef CUresult _cuStreamWaitEvent(CUstream hStream, CUevent hEvent, unsigned int Flags) except ?CUDA_ERROR_NOT_FOUND nogil + +cdef CUresult _cuStreamAddCallback(CUstream hStream, CUstreamCallback callback, void* userData, unsigned int flags) except ?CUDA_ERROR_NOT_FOUND nogil + +cdef CUresult _cuStreamBeginCapture_v2(CUstream hStream, CUstreamCaptureMode mode) except ?CUDA_ERROR_NOT_FOUND nogil + +cdef CUresult _cuStreamBeginRecaptureToGraph(CUstream hStream, CUstreamCaptureMode mode, CUgraph hGraph, CUgraphRecaptureCallback callbackFunc, void* userData) except ?CUDA_ERROR_NOT_FOUND nogil + +cdef CUresult _cuStreamBeginCaptureToGraph(CUstream hStream, CUgraph hGraph, const CUgraphNode* dependencies, const CUgraphEdgeData* dependencyData, size_t numDependencies, CUstreamCaptureMode mode) except ?CUDA_ERROR_NOT_FOUND nogil + +cdef CUresult _cuThreadExchangeStreamCaptureMode(CUstreamCaptureMode* mode) except ?CUDA_ERROR_NOT_FOUND nogil + +cdef CUresult _cuStreamEndCapture(CUstream hStream, CUgraph* phGraph) except ?CUDA_ERROR_NOT_FOUND nogil + +cdef CUresult _cuStreamIsCapturing(CUstream hStream, CUstreamCaptureStatus* captureStatus) except ?CUDA_ERROR_NOT_FOUND nogil + +cdef CUresult _cuStreamGetCaptureInfo_v3(CUstream hStream, CUstreamCaptureStatus* captureStatus_out, cuuint64_t* id_out, CUgraph* graph_out, const CUgraphNode** dependencies_out, const CUgraphEdgeData** edgeData_out, size_t* numDependencies_out) except ?CUDA_ERROR_NOT_FOUND nogil + +cdef CUresult _cuStreamUpdateCaptureDependencies_v2(CUstream hStream, CUgraphNode* dependencies, const CUgraphEdgeData* dependencyData, size_t numDependencies, unsigned int flags) except ?CUDA_ERROR_NOT_FOUND nogil + +cdef CUresult _cuStreamAttachMemAsync(CUstream hStream, CUdeviceptr dptr, size_t length, unsigned int flags) except ?CUDA_ERROR_NOT_FOUND nogil + +cdef CUresult _cuStreamQuery(CUstream hStream) except ?CUDA_ERROR_NOT_FOUND nogil + +cdef CUresult _cuStreamSynchronize(CUstream hStream) except ?CUDA_ERROR_NOT_FOUND nogil + +cdef CUresult _cuStreamDestroy_v2(CUstream hStream) except ?CUDA_ERROR_NOT_FOUND nogil + +cdef CUresult _cuStreamCopyAttributes(CUstream dst, CUstream src) except ?CUDA_ERROR_NOT_FOUND nogil + +cdef CUresult _cuStreamGetAttribute(CUstream hStream, CUstreamAttrID attr, CUstreamAttrValue* value_out) except ?CUDA_ERROR_NOT_FOUND nogil + +cdef CUresult _cuStreamSetAttribute(CUstream hStream, CUstreamAttrID attr, const CUstreamAttrValue* value) except ?CUDA_ERROR_NOT_FOUND nogil + +cdef CUresult _cuEventCreate(CUevent* phEvent, unsigned int Flags) except ?CUDA_ERROR_NOT_FOUND nogil + +cdef CUresult _cuEventRecord(CUevent hEvent, CUstream hStream) except ?CUDA_ERROR_NOT_FOUND nogil + +cdef CUresult _cuEventRecordWithFlags(CUevent hEvent, CUstream hStream, unsigned int flags) except ?CUDA_ERROR_NOT_FOUND nogil + +cdef CUresult _cuEventQuery(CUevent hEvent) except ?CUDA_ERROR_NOT_FOUND nogil + +cdef CUresult _cuEventSynchronize(CUevent hEvent) except ?CUDA_ERROR_NOT_FOUND nogil + +cdef CUresult _cuEventDestroy_v2(CUevent hEvent) except ?CUDA_ERROR_NOT_FOUND nogil + +cdef CUresult _cuEventElapsedTime_v2(float* pMilliseconds, CUevent hStart, CUevent hEnd) except ?CUDA_ERROR_NOT_FOUND nogil + +cdef CUresult _cuImportExternalMemory(CUexternalMemory* extMem_out, const CUDA_EXTERNAL_MEMORY_HANDLE_DESC* memHandleDesc) except ?CUDA_ERROR_NOT_FOUND nogil + +cdef CUresult _cuExternalMemoryGetMappedBuffer(CUdeviceptr* devPtr, CUexternalMemory extMem, const CUDA_EXTERNAL_MEMORY_BUFFER_DESC* bufferDesc) except ?CUDA_ERROR_NOT_FOUND nogil + +cdef CUresult _cuExternalMemoryGetMappedMipmappedArray(CUmipmappedArray* mipmap, CUexternalMemory extMem, const CUDA_EXTERNAL_MEMORY_MIPMAPPED_ARRAY_DESC* mipmapDesc) except ?CUDA_ERROR_NOT_FOUND nogil + +cdef CUresult _cuDestroyExternalMemory(CUexternalMemory extMem) except ?CUDA_ERROR_NOT_FOUND nogil + +cdef CUresult _cuImportExternalSemaphore(CUexternalSemaphore* extSem_out, const CUDA_EXTERNAL_SEMAPHORE_HANDLE_DESC* semHandleDesc) except ?CUDA_ERROR_NOT_FOUND nogil + +cdef CUresult _cuSignalExternalSemaphoresAsync(const CUexternalSemaphore* extSemArray, const CUDA_EXTERNAL_SEMAPHORE_SIGNAL_PARAMS* paramsArray, unsigned int numExtSems, CUstream stream) except ?CUDA_ERROR_NOT_FOUND nogil + +cdef CUresult _cuWaitExternalSemaphoresAsync(const CUexternalSemaphore* extSemArray, const CUDA_EXTERNAL_SEMAPHORE_WAIT_PARAMS* paramsArray, unsigned int numExtSems, CUstream stream) except ?CUDA_ERROR_NOT_FOUND nogil + +cdef CUresult _cuDestroyExternalSemaphore(CUexternalSemaphore extSem) except ?CUDA_ERROR_NOT_FOUND nogil + +cdef CUresult _cuStreamWaitValue32_v2(CUstream stream, CUdeviceptr addr, cuuint32_t value, unsigned int flags) except ?CUDA_ERROR_NOT_FOUND nogil + +cdef CUresult _cuStreamWaitValue64_v2(CUstream stream, CUdeviceptr addr, cuuint64_t value, unsigned int flags) except ?CUDA_ERROR_NOT_FOUND nogil + +cdef CUresult _cuStreamWriteValue32_v2(CUstream stream, CUdeviceptr addr, cuuint32_t value, unsigned int flags) except ?CUDA_ERROR_NOT_FOUND nogil + +cdef CUresult _cuStreamWriteValue64_v2(CUstream stream, CUdeviceptr addr, cuuint64_t value, unsigned int flags) except ?CUDA_ERROR_NOT_FOUND nogil + +cdef CUresult _cuStreamBatchMemOp_v2(CUstream stream, unsigned int count, CUstreamBatchMemOpParams* paramArray, unsigned int flags) except ?CUDA_ERROR_NOT_FOUND nogil + +cdef CUresult _cuFuncGetAttribute(int* pi, CUfunction_attribute attrib, CUfunction hfunc) except ?CUDA_ERROR_NOT_FOUND nogil + +cdef CUresult _cuFuncSetAttribute(CUfunction hfunc, CUfunction_attribute attrib, int value) except ?CUDA_ERROR_NOT_FOUND nogil + +cdef CUresult _cuFuncSetCacheConfig(CUfunction hfunc, CUfunc_cache config) except ?CUDA_ERROR_NOT_FOUND nogil + +cdef CUresult _cuFuncGetModule(CUmodule* hmod, CUfunction hfunc) except ?CUDA_ERROR_NOT_FOUND nogil + +cdef CUresult _cuFuncGetName(const char** name, CUfunction hfunc) except ?CUDA_ERROR_NOT_FOUND nogil + +cdef CUresult _cuFuncGetParamInfo(CUfunction func, size_t paramIndex, size_t* paramOffset, size_t* paramSize) except ?CUDA_ERROR_NOT_FOUND nogil + +cdef CUresult _cuFuncGetParamCount(CUfunction func, size_t* paramCount) except ?CUDA_ERROR_NOT_FOUND nogil + +cdef CUresult _cuFuncIsLoaded(CUfunctionLoadingState* state, CUfunction function) except ?CUDA_ERROR_NOT_FOUND nogil + +cdef CUresult _cuFuncLoad(CUfunction function) except ?CUDA_ERROR_NOT_FOUND nogil + +cdef CUresult _cuLaunchKernel(CUfunction f, unsigned int gridDimX, unsigned int gridDimY, unsigned int gridDimZ, unsigned int blockDimX, unsigned int blockDimY, unsigned int blockDimZ, unsigned int sharedMemBytes, CUstream hStream, void** kernelParams, void** extra) except ?CUDA_ERROR_NOT_FOUND nogil + +cdef CUresult _cuLaunchKernelEx(const CUlaunchConfig* config, CUfunction f, void** kernelParams, void** extra) except ?CUDA_ERROR_NOT_FOUND nogil + +cdef CUresult _cuLaunchCooperativeKernel(CUfunction f, unsigned int gridDimX, unsigned int gridDimY, unsigned int gridDimZ, unsigned int blockDimX, unsigned int blockDimY, unsigned int blockDimZ, unsigned int sharedMemBytes, CUstream hStream, void** kernelParams) except ?CUDA_ERROR_NOT_FOUND nogil + +cdef CUresult _cuLaunchHostFunc(CUstream hStream, CUhostFn fn, void* userData) except ?CUDA_ERROR_NOT_FOUND nogil + +cdef CUresult _cuLaunchHostFunc_v2(CUstream hStream, CUhostFn fn, void* userData, unsigned int syncMode) except ?CUDA_ERROR_NOT_FOUND nogil + +cdef CUresult _cuFuncSetBlockShape(CUfunction hfunc, int x, int y, int z) except ?CUDA_ERROR_NOT_FOUND nogil + +cdef CUresult _cuFuncSetSharedSize(CUfunction hfunc, unsigned int numbytes) except ?CUDA_ERROR_NOT_FOUND nogil + +cdef CUresult _cuParamSetSize(CUfunction hfunc, unsigned int numbytes) except ?CUDA_ERROR_NOT_FOUND nogil + +cdef CUresult _cuParamSeti(CUfunction hfunc, int offset, unsigned int value) except ?CUDA_ERROR_NOT_FOUND nogil + +cdef CUresult _cuParamSetf(CUfunction hfunc, int offset, float value) except ?CUDA_ERROR_NOT_FOUND nogil + +cdef CUresult _cuParamSetv(CUfunction hfunc, int offset, void* ptr, unsigned int numbytes) except ?CUDA_ERROR_NOT_FOUND nogil + +cdef CUresult _cuLaunch(CUfunction f) except ?CUDA_ERROR_NOT_FOUND nogil + +cdef CUresult _cuLaunchGrid(CUfunction f, int grid_width, int grid_height) except ?CUDA_ERROR_NOT_FOUND nogil + +cdef CUresult _cuLaunchGridAsync(CUfunction f, int grid_width, int grid_height, CUstream hStream) except ?CUDA_ERROR_NOT_FOUND nogil + +cdef CUresult _cuLaunchCooperativeKernelMultiDevice(CUDA_LAUNCH_PARAMS* launchParamsList, unsigned int numDevices, unsigned int flags) except ?CUDA_ERROR_NOT_FOUND nogil + +cdef CUresult _cuParamSetTexRef(CUfunction hfunc, int texunit, CUtexref hTexRef) except ?CUDA_ERROR_NOT_FOUND nogil + +cdef CUresult _cuFuncSetSharedMemConfig(CUfunction hfunc, CUsharedconfig config) except ?CUDA_ERROR_NOT_FOUND nogil + +cdef CUresult _cuGraphCreate(CUgraph* phGraph, unsigned int flags) except ?CUDA_ERROR_NOT_FOUND nogil + +cdef CUresult _cuGraphAddKernelNode_v2(CUgraphNode* phGraphNode, CUgraph hGraph, const CUgraphNode* dependencies, size_t numDependencies, const CUDA_KERNEL_NODE_PARAMS* nodeParams) except ?CUDA_ERROR_NOT_FOUND nogil + +cdef CUresult _cuGraphKernelNodeGetParams_v2(CUgraphNode hNode, CUDA_KERNEL_NODE_PARAMS* nodeParams) except ?CUDA_ERROR_NOT_FOUND nogil + +cdef CUresult _cuGraphKernelNodeSetParams_v2(CUgraphNode hNode, const CUDA_KERNEL_NODE_PARAMS* nodeParams) except ?CUDA_ERROR_NOT_FOUND nogil + +cdef CUresult _cuGraphAddMemcpyNode(CUgraphNode* phGraphNode, CUgraph hGraph, const CUgraphNode* dependencies, size_t numDependencies, const CUDA_MEMCPY3D* copyParams, CUcontext ctx) except ?CUDA_ERROR_NOT_FOUND nogil + +cdef CUresult _cuGraphMemcpyNodeGetParams(CUgraphNode hNode, CUDA_MEMCPY3D* nodeParams) except ?CUDA_ERROR_NOT_FOUND nogil + +cdef CUresult _cuGraphMemcpyNodeSetParams(CUgraphNode hNode, const CUDA_MEMCPY3D* nodeParams) except ?CUDA_ERROR_NOT_FOUND nogil + +cdef CUresult _cuGraphAddMemsetNode(CUgraphNode* phGraphNode, CUgraph hGraph, const CUgraphNode* dependencies, size_t numDependencies, const CUDA_MEMSET_NODE_PARAMS* memsetParams, CUcontext ctx) except ?CUDA_ERROR_NOT_FOUND nogil + +cdef CUresult _cuGraphMemsetNodeGetParams(CUgraphNode hNode, CUDA_MEMSET_NODE_PARAMS* nodeParams) except ?CUDA_ERROR_NOT_FOUND nogil + +cdef CUresult _cuGraphMemsetNodeSetParams(CUgraphNode hNode, const CUDA_MEMSET_NODE_PARAMS* nodeParams) except ?CUDA_ERROR_NOT_FOUND nogil + +cdef CUresult _cuGraphAddHostNode(CUgraphNode* phGraphNode, CUgraph hGraph, const CUgraphNode* dependencies, size_t numDependencies, const CUDA_HOST_NODE_PARAMS* nodeParams) except ?CUDA_ERROR_NOT_FOUND nogil + +cdef CUresult _cuGraphHostNodeGetParams(CUgraphNode hNode, CUDA_HOST_NODE_PARAMS* nodeParams) except ?CUDA_ERROR_NOT_FOUND nogil + +cdef CUresult _cuGraphHostNodeSetParams(CUgraphNode hNode, const CUDA_HOST_NODE_PARAMS* nodeParams) except ?CUDA_ERROR_NOT_FOUND nogil + +cdef CUresult _cuGraphAddChildGraphNode(CUgraphNode* phGraphNode, CUgraph hGraph, const CUgraphNode* dependencies, size_t numDependencies, CUgraph childGraph) except ?CUDA_ERROR_NOT_FOUND nogil + +cdef CUresult _cuGraphChildGraphNodeGetGraph(CUgraphNode hNode, CUgraph* phGraph) except ?CUDA_ERROR_NOT_FOUND nogil + +cdef CUresult _cuGraphAddEmptyNode(CUgraphNode* phGraphNode, CUgraph hGraph, const CUgraphNode* dependencies, size_t numDependencies) except ?CUDA_ERROR_NOT_FOUND nogil + +cdef CUresult _cuGraphAddEventRecordNode(CUgraphNode* phGraphNode, CUgraph hGraph, const CUgraphNode* dependencies, size_t numDependencies, CUevent event) except ?CUDA_ERROR_NOT_FOUND nogil + +cdef CUresult _cuGraphEventRecordNodeGetEvent(CUgraphNode hNode, CUevent* event_out) except ?CUDA_ERROR_NOT_FOUND nogil + +cdef CUresult _cuGraphEventRecordNodeSetEvent(CUgraphNode hNode, CUevent event) except ?CUDA_ERROR_NOT_FOUND nogil + +cdef CUresult _cuGraphAddEventWaitNode(CUgraphNode* phGraphNode, CUgraph hGraph, const CUgraphNode* dependencies, size_t numDependencies, CUevent event) except ?CUDA_ERROR_NOT_FOUND nogil + +cdef CUresult _cuGraphEventWaitNodeGetEvent(CUgraphNode hNode, CUevent* event_out) except ?CUDA_ERROR_NOT_FOUND nogil + +cdef CUresult _cuGraphEventWaitNodeSetEvent(CUgraphNode hNode, CUevent event) except ?CUDA_ERROR_NOT_FOUND nogil + +cdef CUresult _cuGraphAddExternalSemaphoresSignalNode(CUgraphNode* phGraphNode, CUgraph hGraph, const CUgraphNode* dependencies, size_t numDependencies, const CUDA_EXT_SEM_SIGNAL_NODE_PARAMS* nodeParams) except ?CUDA_ERROR_NOT_FOUND nogil + +cdef CUresult _cuGraphExternalSemaphoresSignalNodeGetParams(CUgraphNode hNode, CUDA_EXT_SEM_SIGNAL_NODE_PARAMS* params_out) except ?CUDA_ERROR_NOT_FOUND nogil + +cdef CUresult _cuGraphExternalSemaphoresSignalNodeSetParams(CUgraphNode hNode, const CUDA_EXT_SEM_SIGNAL_NODE_PARAMS* nodeParams) except ?CUDA_ERROR_NOT_FOUND nogil + +cdef CUresult _cuGraphAddExternalSemaphoresWaitNode(CUgraphNode* phGraphNode, CUgraph hGraph, const CUgraphNode* dependencies, size_t numDependencies, const CUDA_EXT_SEM_WAIT_NODE_PARAMS* nodeParams) except ?CUDA_ERROR_NOT_FOUND nogil + +cdef CUresult _cuGraphExternalSemaphoresWaitNodeGetParams(CUgraphNode hNode, CUDA_EXT_SEM_WAIT_NODE_PARAMS* params_out) except ?CUDA_ERROR_NOT_FOUND nogil + +cdef CUresult _cuGraphExternalSemaphoresWaitNodeSetParams(CUgraphNode hNode, const CUDA_EXT_SEM_WAIT_NODE_PARAMS* nodeParams) except ?CUDA_ERROR_NOT_FOUND nogil + +cdef CUresult _cuGraphAddBatchMemOpNode(CUgraphNode* phGraphNode, CUgraph hGraph, const CUgraphNode* dependencies, size_t numDependencies, const CUDA_BATCH_MEM_OP_NODE_PARAMS* nodeParams) except ?CUDA_ERROR_NOT_FOUND nogil + +cdef CUresult _cuGraphBatchMemOpNodeGetParams(CUgraphNode hNode, CUDA_BATCH_MEM_OP_NODE_PARAMS* nodeParams_out) except ?CUDA_ERROR_NOT_FOUND nogil + +cdef CUresult _cuGraphBatchMemOpNodeSetParams(CUgraphNode hNode, const CUDA_BATCH_MEM_OP_NODE_PARAMS* nodeParams) except ?CUDA_ERROR_NOT_FOUND nogil + +cdef CUresult _cuGraphExecBatchMemOpNodeSetParams(CUgraphExec hGraphExec, CUgraphNode hNode, const CUDA_BATCH_MEM_OP_NODE_PARAMS* nodeParams) except ?CUDA_ERROR_NOT_FOUND nogil + +cdef CUresult _cuGraphAddMemAllocNode(CUgraphNode* phGraphNode, CUgraph hGraph, const CUgraphNode* dependencies, size_t numDependencies, CUDA_MEM_ALLOC_NODE_PARAMS* nodeParams) except ?CUDA_ERROR_NOT_FOUND nogil + +cdef CUresult _cuGraphMemAllocNodeGetParams(CUgraphNode hNode, CUDA_MEM_ALLOC_NODE_PARAMS* params_out) except ?CUDA_ERROR_NOT_FOUND nogil + +cdef CUresult _cuGraphAddMemFreeNode(CUgraphNode* phGraphNode, CUgraph hGraph, const CUgraphNode* dependencies, size_t numDependencies, CUdeviceptr dptr) except ?CUDA_ERROR_NOT_FOUND nogil + +cdef CUresult _cuGraphMemFreeNodeGetParams(CUgraphNode hNode, CUdeviceptr* dptr_out) except ?CUDA_ERROR_NOT_FOUND nogil + +cdef CUresult _cuDeviceGraphMemTrim(CUdevice device) except ?CUDA_ERROR_NOT_FOUND nogil + +cdef CUresult _cuDeviceGetGraphMemAttribute(CUdevice device, CUgraphMem_attribute attr, void* value) except ?CUDA_ERROR_NOT_FOUND nogil + +cdef CUresult _cuDeviceSetGraphMemAttribute(CUdevice device, CUgraphMem_attribute attr, void* value) except ?CUDA_ERROR_NOT_FOUND nogil + +cdef CUresult _cuGraphClone(CUgraph* phGraphClone, CUgraph originalGraph) except ?CUDA_ERROR_NOT_FOUND nogil + +cdef CUresult _cuGraphNodeFindInClone(CUgraphNode* phNode, CUgraphNode hOriginalNode, CUgraph hClonedGraph) except ?CUDA_ERROR_NOT_FOUND nogil + +cdef CUresult _cuGraphNodeGetType(CUgraphNode hNode, CUgraphNodeType* typename) except ?CUDA_ERROR_NOT_FOUND nogil + +cdef CUresult _cuGraphNodeGetContainingGraph(CUgraphNode hNode, CUgraph* phGraph) except ?CUDA_ERROR_NOT_FOUND nogil + +cdef CUresult _cuGraphNodeGetLocalId(CUgraphNode hNode, unsigned int* nodeId) except ?CUDA_ERROR_NOT_FOUND nogil + +cdef CUresult _cuGraphNodeGetToolsId(CUgraphNode hNode, unsigned long long* toolsNodeId) except ?CUDA_ERROR_NOT_FOUND nogil + +cdef CUresult _cuGraphGetId(CUgraph hGraph, unsigned int* graphId) except ?CUDA_ERROR_NOT_FOUND nogil + +cdef CUresult _cuGraphExecGetId(CUgraphExec hGraphExec, unsigned int* graphId) except ?CUDA_ERROR_NOT_FOUND nogil + +cdef CUresult _cuGraphGetNodes(CUgraph hGraph, CUgraphNode* nodes, size_t* numNodes) except ?CUDA_ERROR_NOT_FOUND nogil + +cdef CUresult _cuGraphGetRootNodes(CUgraph hGraph, CUgraphNode* rootNodes, size_t* numRootNodes) except ?CUDA_ERROR_NOT_FOUND nogil + +cdef CUresult _cuGraphGetEdges_v2(CUgraph hGraph, CUgraphNode* from_, CUgraphNode* to, CUgraphEdgeData* edgeData, size_t* numEdges) except ?CUDA_ERROR_NOT_FOUND nogil + +cdef CUresult _cuGraphNodeGetDependencies_v2(CUgraphNode hNode, CUgraphNode* dependencies, CUgraphEdgeData* edgeData, size_t* numDependencies) except ?CUDA_ERROR_NOT_FOUND nogil + +cdef CUresult _cuGraphNodeGetDependentNodes_v2(CUgraphNode hNode, CUgraphNode* dependentNodes, CUgraphEdgeData* edgeData, size_t* numDependentNodes) except ?CUDA_ERROR_NOT_FOUND nogil + +cdef CUresult _cuGraphAddDependencies_v2(CUgraph hGraph, const CUgraphNode* from_, const CUgraphNode* to, const CUgraphEdgeData* edgeData, size_t numDependencies) except ?CUDA_ERROR_NOT_FOUND nogil + +cdef CUresult _cuGraphRemoveDependencies_v2(CUgraph hGraph, const CUgraphNode* from_, const CUgraphNode* to, const CUgraphEdgeData* edgeData, size_t numDependencies) except ?CUDA_ERROR_NOT_FOUND nogil + +cdef CUresult _cuGraphDestroyNode(CUgraphNode hNode) except ?CUDA_ERROR_NOT_FOUND nogil + +cdef CUresult _cuGraphInstantiateWithFlags(CUgraphExec* phGraphExec, CUgraph hGraph, unsigned long long flags) except ?CUDA_ERROR_NOT_FOUND nogil + +cdef CUresult _cuGraphInstantiateWithParams(CUgraphExec* phGraphExec, CUgraph hGraph, CUDA_GRAPH_INSTANTIATE_PARAMS* instantiateParams) except ?CUDA_ERROR_NOT_FOUND nogil + +cdef CUresult _cuGraphExecGetFlags(CUgraphExec hGraphExec, cuuint64_t* flags) except ?CUDA_ERROR_NOT_FOUND nogil + +cdef CUresult _cuGraphExecKernelNodeSetParams_v2(CUgraphExec hGraphExec, CUgraphNode hNode, const CUDA_KERNEL_NODE_PARAMS* nodeParams) except ?CUDA_ERROR_NOT_FOUND nogil + +cdef CUresult _cuGraphExecMemcpyNodeSetParams(CUgraphExec hGraphExec, CUgraphNode hNode, const CUDA_MEMCPY3D* copyParams, CUcontext ctx) except ?CUDA_ERROR_NOT_FOUND nogil + +cdef CUresult _cuGraphExecMemsetNodeSetParams(CUgraphExec hGraphExec, CUgraphNode hNode, const CUDA_MEMSET_NODE_PARAMS* memsetParams, CUcontext ctx) except ?CUDA_ERROR_NOT_FOUND nogil + +cdef CUresult _cuGraphExecHostNodeSetParams(CUgraphExec hGraphExec, CUgraphNode hNode, const CUDA_HOST_NODE_PARAMS* nodeParams) except ?CUDA_ERROR_NOT_FOUND nogil + +cdef CUresult _cuGraphExecChildGraphNodeSetParams(CUgraphExec hGraphExec, CUgraphNode hNode, CUgraph childGraph) except ?CUDA_ERROR_NOT_FOUND nogil + +cdef CUresult _cuGraphExecEventRecordNodeSetEvent(CUgraphExec hGraphExec, CUgraphNode hNode, CUevent event) except ?CUDA_ERROR_NOT_FOUND nogil + +cdef CUresult _cuGraphExecEventWaitNodeSetEvent(CUgraphExec hGraphExec, CUgraphNode hNode, CUevent event) except ?CUDA_ERROR_NOT_FOUND nogil + +cdef CUresult _cuGraphExecExternalSemaphoresSignalNodeSetParams(CUgraphExec hGraphExec, CUgraphNode hNode, const CUDA_EXT_SEM_SIGNAL_NODE_PARAMS* nodeParams) except ?CUDA_ERROR_NOT_FOUND nogil + +cdef CUresult _cuGraphExecExternalSemaphoresWaitNodeSetParams(CUgraphExec hGraphExec, CUgraphNode hNode, const CUDA_EXT_SEM_WAIT_NODE_PARAMS* nodeParams) except ?CUDA_ERROR_NOT_FOUND nogil + +cdef CUresult _cuGraphNodeSetEnabled(CUgraphExec hGraphExec, CUgraphNode hNode, unsigned int isEnabled) except ?CUDA_ERROR_NOT_FOUND nogil + +cdef CUresult _cuGraphNodeGetEnabled(CUgraphExec hGraphExec, CUgraphNode hNode, unsigned int* isEnabled) except ?CUDA_ERROR_NOT_FOUND nogil + +cdef CUresult _cuGraphUpload(CUgraphExec hGraphExec, CUstream hStream) except ?CUDA_ERROR_NOT_FOUND nogil + +cdef CUresult _cuGraphLaunch(CUgraphExec hGraphExec, CUstream hStream) except ?CUDA_ERROR_NOT_FOUND nogil + +cdef CUresult _cuGraphExecDestroy(CUgraphExec hGraphExec) except ?CUDA_ERROR_NOT_FOUND nogil + +cdef CUresult _cuGraphDestroy(CUgraph hGraph) except ?CUDA_ERROR_NOT_FOUND nogil + +cdef CUresult _cuGraphExecUpdate_v2(CUgraphExec hGraphExec, CUgraph hGraph, CUgraphExecUpdateResultInfo* resultInfo) except ?CUDA_ERROR_NOT_FOUND nogil + +cdef CUresult _cuGraphKernelNodeCopyAttributes(CUgraphNode dst, CUgraphNode src) except ?CUDA_ERROR_NOT_FOUND nogil + +cdef CUresult _cuGraphKernelNodeGetAttribute(CUgraphNode hNode, CUkernelNodeAttrID attr, CUkernelNodeAttrValue* value_out) except ?CUDA_ERROR_NOT_FOUND nogil + +cdef CUresult _cuGraphKernelNodeSetAttribute(CUgraphNode hNode, CUkernelNodeAttrID attr, const CUkernelNodeAttrValue* value) except ?CUDA_ERROR_NOT_FOUND nogil + +cdef CUresult _cuGraphDebugDotPrint(CUgraph hGraph, const char* path, unsigned int flags) except ?CUDA_ERROR_NOT_FOUND nogil + +cdef CUresult _cuUserObjectCreate(CUuserObject* object_out, void* ptr, CUhostFn destroy, unsigned int initialRefcount, unsigned int flags) except ?CUDA_ERROR_NOT_FOUND nogil + +cdef CUresult _cuUserObjectRetain(CUuserObject object, unsigned int count) except ?CUDA_ERROR_NOT_FOUND nogil + +cdef CUresult _cuUserObjectRelease(CUuserObject object, unsigned int count) except ?CUDA_ERROR_NOT_FOUND nogil + +cdef CUresult _cuGraphRetainUserObject(CUgraph graph, CUuserObject object, unsigned int count, unsigned int flags) except ?CUDA_ERROR_NOT_FOUND nogil + +cdef CUresult _cuGraphReleaseUserObject(CUgraph graph, CUuserObject object, unsigned int count) except ?CUDA_ERROR_NOT_FOUND nogil + +cdef CUresult _cuGraphAddNode_v2(CUgraphNode* phGraphNode, CUgraph hGraph, const CUgraphNode* dependencies, const CUgraphEdgeData* dependencyData, size_t numDependencies, CUgraphNodeParams* nodeParams) except ?CUDA_ERROR_NOT_FOUND nogil + +cdef CUresult _cuGraphNodeSetParams(CUgraphNode hNode, CUgraphNodeParams* nodeParams) except ?CUDA_ERROR_NOT_FOUND nogil + +cdef CUresult _cuGraphNodeGetParams(CUgraphNode hNode, CUgraphNodeParams* nodeParams) except ?CUDA_ERROR_NOT_FOUND nogil + +cdef CUresult _cuGraphExecNodeSetParams(CUgraphExec hGraphExec, CUgraphNode hNode, CUgraphNodeParams* nodeParams) except ?CUDA_ERROR_NOT_FOUND nogil + +cdef CUresult _cuGraphConditionalHandleCreate(CUgraphConditionalHandle* pHandle_out, CUgraph hGraph, CUcontext ctx, unsigned int defaultLaunchValue, unsigned int flags) except ?CUDA_ERROR_NOT_FOUND nogil + +cdef CUresult _cuOccupancyMaxActiveBlocksPerMultiprocessor(int* numBlocks, CUfunction func, int blockSize, size_t dynamicSMemSize) except ?CUDA_ERROR_NOT_FOUND nogil + +cdef CUresult _cuOccupancyMaxActiveBlocksPerMultiprocessorWithFlags(int* numBlocks, CUfunction func, int blockSize, size_t dynamicSMemSize, unsigned int flags) except ?CUDA_ERROR_NOT_FOUND nogil + +cdef CUresult _cuOccupancyMaxPotentialBlockSize(int* minGridSize, int* blockSize, CUfunction func, CUoccupancyB2DSize blockSizeToDynamicSMemSize, size_t dynamicSMemSize, int blockSizeLimit) except ?CUDA_ERROR_NOT_FOUND nogil + +cdef CUresult _cuOccupancyMaxPotentialBlockSizeWithFlags(int* minGridSize, int* blockSize, CUfunction func, CUoccupancyB2DSize blockSizeToDynamicSMemSize, size_t dynamicSMemSize, int blockSizeLimit, unsigned int flags) except ?CUDA_ERROR_NOT_FOUND nogil + +cdef CUresult _cuOccupancyAvailableDynamicSMemPerBlock(size_t* dynamicSmemSize, CUfunction func, int numBlocks, int blockSize) except ?CUDA_ERROR_NOT_FOUND nogil + +cdef CUresult _cuOccupancyMaxPotentialClusterSize(int* clusterSize, CUfunction func, const CUlaunchConfig* config) except ?CUDA_ERROR_NOT_FOUND nogil + +cdef CUresult _cuOccupancyMaxActiveClusters(int* numClusters, CUfunction func, const CUlaunchConfig* config) except ?CUDA_ERROR_NOT_FOUND nogil + +cdef CUresult _cuTexRefSetArray(CUtexref hTexRef, CUarray hArray, unsigned int Flags) except ?CUDA_ERROR_NOT_FOUND nogil + +cdef CUresult _cuTexRefSetMipmappedArray(CUtexref hTexRef, CUmipmappedArray hMipmappedArray, unsigned int Flags) except ?CUDA_ERROR_NOT_FOUND nogil + +cdef CUresult _cuTexRefSetAddress_v2(size_t* ByteOffset, CUtexref hTexRef, CUdeviceptr dptr, size_t numbytes) except ?CUDA_ERROR_NOT_FOUND nogil + +cdef CUresult _cuTexRefSetAddress2D_v3(CUtexref hTexRef, const CUDA_ARRAY_DESCRIPTOR* desc, CUdeviceptr dptr, size_t Pitch) except ?CUDA_ERROR_NOT_FOUND nogil + +cdef CUresult _cuTexRefSetFormat(CUtexref hTexRef, CUarray_format fmt, int NumPackedComponents) except ?CUDA_ERROR_NOT_FOUND nogil + +cdef CUresult _cuTexRefSetAddressMode(CUtexref hTexRef, int dim, CUaddress_mode am) except ?CUDA_ERROR_NOT_FOUND nogil + +cdef CUresult _cuTexRefSetFilterMode(CUtexref hTexRef, CUfilter_mode fm) except ?CUDA_ERROR_NOT_FOUND nogil + +cdef CUresult _cuTexRefSetMipmapFilterMode(CUtexref hTexRef, CUfilter_mode fm) except ?CUDA_ERROR_NOT_FOUND nogil + +cdef CUresult _cuTexRefSetMipmapLevelBias(CUtexref hTexRef, float bias) except ?CUDA_ERROR_NOT_FOUND nogil + +cdef CUresult _cuTexRefSetMipmapLevelClamp(CUtexref hTexRef, float minMipmapLevelClamp, float maxMipmapLevelClamp) except ?CUDA_ERROR_NOT_FOUND nogil + +cdef CUresult _cuTexRefSetMaxAnisotropy(CUtexref hTexRef, unsigned int maxAniso) except ?CUDA_ERROR_NOT_FOUND nogil + +cdef CUresult _cuTexRefSetBorderColor(CUtexref hTexRef, float* pBorderColor) except ?CUDA_ERROR_NOT_FOUND nogil + +cdef CUresult _cuTexRefSetFlags(CUtexref hTexRef, unsigned int Flags) except ?CUDA_ERROR_NOT_FOUND nogil + +cdef CUresult _cuTexRefGetAddress_v2(CUdeviceptr* pdptr, CUtexref hTexRef) except ?CUDA_ERROR_NOT_FOUND nogil + +cdef CUresult _cuTexRefGetArray(CUarray* phArray, CUtexref hTexRef) except ?CUDA_ERROR_NOT_FOUND nogil + +cdef CUresult _cuTexRefGetMipmappedArray(CUmipmappedArray* phMipmappedArray, CUtexref hTexRef) except ?CUDA_ERROR_NOT_FOUND nogil + +cdef CUresult _cuTexRefGetAddressMode(CUaddress_mode* pam, CUtexref hTexRef, int dim) except ?CUDA_ERROR_NOT_FOUND nogil + +cdef CUresult _cuTexRefGetFilterMode(CUfilter_mode* pfm, CUtexref hTexRef) except ?CUDA_ERROR_NOT_FOUND nogil + +cdef CUresult _cuTexRefGetFormat(CUarray_format* pFormat, int* pNumChannels, CUtexref hTexRef) except ?CUDA_ERROR_NOT_FOUND nogil + +cdef CUresult _cuTexRefGetMipmapFilterMode(CUfilter_mode* pfm, CUtexref hTexRef) except ?CUDA_ERROR_NOT_FOUND nogil + +cdef CUresult _cuTexRefGetMipmapLevelBias(float* pbias, CUtexref hTexRef) except ?CUDA_ERROR_NOT_FOUND nogil + +cdef CUresult _cuTexRefGetMipmapLevelClamp(float* pminMipmapLevelClamp, float* pmaxMipmapLevelClamp, CUtexref hTexRef) except ?CUDA_ERROR_NOT_FOUND nogil + +cdef CUresult _cuTexRefGetMaxAnisotropy(int* pmaxAniso, CUtexref hTexRef) except ?CUDA_ERROR_NOT_FOUND nogil + +cdef CUresult _cuTexRefGetBorderColor(float* pBorderColor, CUtexref hTexRef) except ?CUDA_ERROR_NOT_FOUND nogil + +cdef CUresult _cuTexRefGetFlags(unsigned int* pFlags, CUtexref hTexRef) except ?CUDA_ERROR_NOT_FOUND nogil + +cdef CUresult _cuTexRefCreate(CUtexref* pTexRef) except ?CUDA_ERROR_NOT_FOUND nogil + +cdef CUresult _cuTexRefDestroy(CUtexref hTexRef) except ?CUDA_ERROR_NOT_FOUND nogil + +cdef CUresult _cuSurfRefSetArray(CUsurfref hSurfRef, CUarray hArray, unsigned int Flags) except ?CUDA_ERROR_NOT_FOUND nogil + +cdef CUresult _cuSurfRefGetArray(CUarray* phArray, CUsurfref hSurfRef) except ?CUDA_ERROR_NOT_FOUND nogil + +cdef CUresult _cuTexObjectCreate(CUtexObject* pTexObject, const CUDA_RESOURCE_DESC* pResDesc, const CUDA_TEXTURE_DESC* pTexDesc, const CUDA_RESOURCE_VIEW_DESC* pResViewDesc) except ?CUDA_ERROR_NOT_FOUND nogil + +cdef CUresult _cuTexObjectDestroy(CUtexObject texObject) except ?CUDA_ERROR_NOT_FOUND nogil + +cdef CUresult _cuTexObjectGetResourceDesc(CUDA_RESOURCE_DESC* pResDesc, CUtexObject texObject) except ?CUDA_ERROR_NOT_FOUND nogil + +cdef CUresult _cuTexObjectGetTextureDesc(CUDA_TEXTURE_DESC* pTexDesc, CUtexObject texObject) except ?CUDA_ERROR_NOT_FOUND nogil + +cdef CUresult _cuTexObjectGetResourceViewDesc(CUDA_RESOURCE_VIEW_DESC* pResViewDesc, CUtexObject texObject) except ?CUDA_ERROR_NOT_FOUND nogil + +cdef CUresult _cuSurfObjectCreate(CUsurfObject* pSurfObject, const CUDA_RESOURCE_DESC* pResDesc) except ?CUDA_ERROR_NOT_FOUND nogil + +cdef CUresult _cuSurfObjectDestroy(CUsurfObject surfObject) except ?CUDA_ERROR_NOT_FOUND nogil + +cdef CUresult _cuSurfObjectGetResourceDesc(CUDA_RESOURCE_DESC* pResDesc, CUsurfObject surfObject) except ?CUDA_ERROR_NOT_FOUND nogil + +cdef CUresult _cuTensorMapEncodeTiled(CUtensorMap* tensorMap, CUtensorMapDataType tensorDataType, cuuint32_t tensorRank, void* globalAddress, const cuuint64_t* globalDim, const cuuint64_t* globalStrides, const cuuint32_t* boxDim, const cuuint32_t* elementStrides, CUtensorMapInterleave interleave, CUtensorMapSwizzle swizzle, CUtensorMapL2promotion l2Promotion, CUtensorMapFloatOOBfill oobFill) except ?CUDA_ERROR_NOT_FOUND nogil + +cdef CUresult _cuTensorMapEncodeIm2col(CUtensorMap* tensorMap, CUtensorMapDataType tensorDataType, cuuint32_t tensorRank, void* globalAddress, const cuuint64_t* globalDim, const cuuint64_t* globalStrides, const int* pixelBoxLowerCorner, const int* pixelBoxUpperCorner, cuuint32_t channelsPerPixel, cuuint32_t pixelsPerColumn, const cuuint32_t* elementStrides, CUtensorMapInterleave interleave, CUtensorMapSwizzle swizzle, CUtensorMapL2promotion l2Promotion, CUtensorMapFloatOOBfill oobFill) except ?CUDA_ERROR_NOT_FOUND nogil + +cdef CUresult _cuTensorMapEncodeIm2colWide(CUtensorMap* tensorMap, CUtensorMapDataType tensorDataType, cuuint32_t tensorRank, void* globalAddress, const cuuint64_t* globalDim, const cuuint64_t* globalStrides, int pixelBoxLowerCornerWidth, int pixelBoxUpperCornerWidth, cuuint32_t channelsPerPixel, cuuint32_t pixelsPerColumn, const cuuint32_t* elementStrides, CUtensorMapInterleave interleave, CUtensorMapIm2ColWideMode mode, CUtensorMapSwizzle swizzle, CUtensorMapL2promotion l2Promotion, CUtensorMapFloatOOBfill oobFill) except ?CUDA_ERROR_NOT_FOUND nogil + +cdef CUresult _cuTensorMapReplaceAddress(CUtensorMap* tensorMap, void* globalAddress) except ?CUDA_ERROR_NOT_FOUND nogil + +cdef CUresult _cuDeviceCanAccessPeer(int* canAccessPeer, CUdevice dev, CUdevice peerDev) except ?CUDA_ERROR_NOT_FOUND nogil + +cdef CUresult _cuCtxEnablePeerAccess(CUcontext peerContext, unsigned int Flags) except ?CUDA_ERROR_NOT_FOUND nogil + +cdef CUresult _cuCtxDisablePeerAccess(CUcontext peerContext) except ?CUDA_ERROR_NOT_FOUND nogil + +cdef CUresult _cuDeviceGetP2PAttribute(int* value, CUdevice_P2PAttribute attrib, CUdevice srcDevice, CUdevice dstDevice) except ?CUDA_ERROR_NOT_FOUND nogil + +cdef CUresult _cuDeviceGetP2PAtomicCapabilities(unsigned int* capabilities, const CUatomicOperation* operations, unsigned int count, CUdevice srcDevice, CUdevice dstDevice) except ?CUDA_ERROR_NOT_FOUND nogil + +cdef CUresult _cuGraphicsUnregisterResource(CUgraphicsResource resource) except ?CUDA_ERROR_NOT_FOUND nogil + +cdef CUresult _cuGraphicsSubResourceGetMappedArray(CUarray* pArray, CUgraphicsResource resource, unsigned int arrayIndex, unsigned int mipLevel) except ?CUDA_ERROR_NOT_FOUND nogil + +cdef CUresult _cuGraphicsResourceGetMappedMipmappedArray(CUmipmappedArray* pMipmappedArray, CUgraphicsResource resource) except ?CUDA_ERROR_NOT_FOUND nogil + +cdef CUresult _cuGraphicsResourceGetMappedPointer_v2(CUdeviceptr* pDevPtr, size_t* pSize, CUgraphicsResource resource) except ?CUDA_ERROR_NOT_FOUND nogil + +cdef CUresult _cuGraphicsResourceSetMapFlags_v2(CUgraphicsResource resource, unsigned int flags) except ?CUDA_ERROR_NOT_FOUND nogil + +cdef CUresult _cuGraphicsMapResources(unsigned int count, CUgraphicsResource* resources, CUstream hStream) except ?CUDA_ERROR_NOT_FOUND nogil + +cdef CUresult _cuGraphicsUnmapResources(unsigned int count, CUgraphicsResource* resources, CUstream hStream) except ?CUDA_ERROR_NOT_FOUND nogil + +cdef CUresult _cuGetProcAddress_v2(const char* symbol, void** pfn, int cudaVersion, cuuint64_t flags, CUdriverProcAddressQueryResult* symbolStatus) except ?CUDA_ERROR_NOT_FOUND nogil + +cdef CUresult _cuCoredumpGetAttribute(CUcoredumpSettings attrib, void* value, size_t* size) except ?CUDA_ERROR_NOT_FOUND nogil + +cdef CUresult _cuCoredumpGetAttributeGlobal(CUcoredumpSettings attrib, void* value, size_t* size) except ?CUDA_ERROR_NOT_FOUND nogil + +cdef CUresult _cuCoredumpSetAttribute(CUcoredumpSettings attrib, void* value, size_t* size) except ?CUDA_ERROR_NOT_FOUND nogil + +cdef CUresult _cuCoredumpSetAttributeGlobal(CUcoredumpSettings attrib, void* value, size_t* size) except ?CUDA_ERROR_NOT_FOUND nogil + +cdef CUresult _cuCoredumpRegisterStartCallback(CUcoredumpStatusCallback callback, void* userData, CUcoredumpCallbackHandle* callbackOut) except ?CUDA_ERROR_NOT_FOUND nogil + +cdef CUresult _cuCoredumpRegisterCompleteCallback(CUcoredumpStatusCallback callback, void* userData, CUcoredumpCallbackHandle* callbackOut) except ?CUDA_ERROR_NOT_FOUND nogil + +cdef CUresult _cuCoredumpDeregisterStartCallback(CUcoredumpCallbackHandle callback) except ?CUDA_ERROR_NOT_FOUND nogil + +cdef CUresult _cuCoredumpDeregisterCompleteCallback(CUcoredumpCallbackHandle callback) except ?CUDA_ERROR_NOT_FOUND nogil + +cdef CUresult _cuGetExportTable(const void** ppExportTable, const CUuuid* pExportTableId) except ?CUDA_ERROR_NOT_FOUND nogil + +cdef CUresult _cuGreenCtxCreate(CUgreenCtx* phCtx, CUdevResourceDesc desc, CUdevice dev, unsigned int flags) except ?CUDA_ERROR_NOT_FOUND nogil + +cdef CUresult _cuGreenCtxDestroy(CUgreenCtx hCtx) except ?CUDA_ERROR_NOT_FOUND nogil + +cdef CUresult _cuCtxFromGreenCtx(CUcontext* pContext, CUgreenCtx hCtx) except ?CUDA_ERROR_NOT_FOUND nogil + +cdef CUresult _cuDeviceGetDevResource(CUdevice device, CUdevResource* resource, CUdevResourceType typename) except ?CUDA_ERROR_NOT_FOUND nogil + +cdef CUresult _cuCtxGetDevResource(CUcontext hCtx, CUdevResource* resource, CUdevResourceType typename) except ?CUDA_ERROR_NOT_FOUND nogil + +cdef CUresult _cuGreenCtxGetDevResource(CUgreenCtx hCtx, CUdevResource* resource, CUdevResourceType typename) except ?CUDA_ERROR_NOT_FOUND nogil + +cdef CUresult _cuDevSmResourceSplitByCount(CUdevResource* result, unsigned int* nbGroups, const CUdevResource* input, CUdevResource* remainder, unsigned int flags, unsigned int minCount) except ?CUDA_ERROR_NOT_FOUND nogil + +cdef CUresult _cuDevSmResourceSplit(CUdevResource* result, unsigned int nbGroups, const CUdevResource* input, CUdevResource* remainder, unsigned int flags, CU_DEV_SM_RESOURCE_GROUP_PARAMS* groupParams) except ?CUDA_ERROR_NOT_FOUND nogil + +cdef CUresult _cuDevResourceGenerateDesc(CUdevResourceDesc* phDesc, CUdevResource* resources, unsigned int nbResources) except ?CUDA_ERROR_NOT_FOUND nogil + +cdef CUresult _cuGreenCtxRecordEvent(CUgreenCtx hCtx, CUevent hEvent) except ?CUDA_ERROR_NOT_FOUND nogil + +cdef CUresult _cuGreenCtxWaitEvent(CUgreenCtx hCtx, CUevent hEvent) except ?CUDA_ERROR_NOT_FOUND nogil + +cdef CUresult _cuStreamGetGreenCtx(CUstream hStream, CUgreenCtx* phCtx) except ?CUDA_ERROR_NOT_FOUND nogil + +cdef CUresult _cuGreenCtxStreamCreate(CUstream* phStream, CUgreenCtx greenCtx, unsigned int flags, int priority) except ?CUDA_ERROR_NOT_FOUND nogil + +cdef CUresult _cuGreenCtxGetId(CUgreenCtx greenCtx, unsigned long long* greenCtxId) except ?CUDA_ERROR_NOT_FOUND nogil + +cdef CUresult _cuStreamGetDevResource(CUstream hStream, CUdevResource* resource, CUdevResourceType typename) except ?CUDA_ERROR_NOT_FOUND nogil + +cdef CUresult _cuLogsRegisterCallback(CUlogsCallback callbackFunc, void* userData, CUlogsCallbackHandle* callback_out) except ?CUDA_ERROR_NOT_FOUND nogil + +cdef CUresult _cuLogsUnregisterCallback(CUlogsCallbackHandle callback) except ?CUDA_ERROR_NOT_FOUND nogil + +cdef CUresult _cuLogsCurrent(CUlogIterator* iterator_out, unsigned int flags) except ?CUDA_ERROR_NOT_FOUND nogil + +cdef CUresult _cuLogsDumpToFile(CUlogIterator* iterator, const char* pathToFile, unsigned int flags) except ?CUDA_ERROR_NOT_FOUND nogil + +cdef CUresult _cuLogsDumpToMemory(CUlogIterator* iterator, char* buffer, size_t* size, unsigned int flags) except ?CUDA_ERROR_NOT_FOUND nogil + +cdef CUresult _cuCheckpointProcessGetRestoreThreadId(int pid, int* tid) except ?CUDA_ERROR_NOT_FOUND nogil + +cdef CUresult _cuCheckpointProcessGetState(int pid, CUprocessState* state) except ?CUDA_ERROR_NOT_FOUND nogil + +cdef CUresult _cuCheckpointProcessLock(int pid, CUcheckpointLockArgs* args) except ?CUDA_ERROR_NOT_FOUND nogil + +cdef CUresult _cuCheckpointProcessCheckpoint(int pid, CUcheckpointCheckpointArgs* args) except ?CUDA_ERROR_NOT_FOUND nogil + +cdef CUresult _cuCheckpointProcessRestore(int pid, CUcheckpointRestoreArgs* args) except ?CUDA_ERROR_NOT_FOUND nogil + +cdef CUresult _cuCheckpointProcessUnlock(int pid, CUcheckpointUnlockArgs* args) except ?CUDA_ERROR_NOT_FOUND nogil + +cdef CUresult _cuProfilerStart() except ?CUDA_ERROR_NOT_FOUND nogil + +cdef CUresult _cuProfilerStop() except ?CUDA_ERROR_NOT_FOUND nogil + +cdef CUresult _cuGraphicsEGLRegisterImage(CUgraphicsResource* pCudaResource, EGLImageKHR image, unsigned int flags) except ?CUDA_ERROR_NOT_FOUND nogil + +cdef CUresult _cuEGLStreamConsumerConnect(CUeglStreamConnection* conn, EGLStreamKHR stream) except ?CUDA_ERROR_NOT_FOUND nogil + +cdef CUresult _cuEGLStreamConsumerConnectWithFlags(CUeglStreamConnection* conn, EGLStreamKHR stream, unsigned int flags) except ?CUDA_ERROR_NOT_FOUND nogil + +cdef CUresult _cuEGLStreamConsumerDisconnect(CUeglStreamConnection* conn) except ?CUDA_ERROR_NOT_FOUND nogil + +cdef CUresult _cuEGLStreamConsumerAcquireFrame(CUeglStreamConnection* conn, CUgraphicsResource* pCudaResource, CUstream* pStream, unsigned int timeout) except ?CUDA_ERROR_NOT_FOUND nogil + +cdef CUresult _cuEGLStreamConsumerReleaseFrame(CUeglStreamConnection* conn, CUgraphicsResource pCudaResource, CUstream* pStream) except ?CUDA_ERROR_NOT_FOUND nogil + +cdef CUresult _cuEGLStreamProducerConnect(CUeglStreamConnection* conn, EGLStreamKHR stream, EGLint width, EGLint height) except ?CUDA_ERROR_NOT_FOUND nogil + +cdef CUresult _cuEGLStreamProducerDisconnect(CUeglStreamConnection* conn) except ?CUDA_ERROR_NOT_FOUND nogil + +cdef CUresult _cuEGLStreamProducerPresentFrame(CUeglStreamConnection* conn, CUeglFrame eglframe, CUstream* pStream) except ?CUDA_ERROR_NOT_FOUND nogil + +cdef CUresult _cuEGLStreamProducerReturnFrame(CUeglStreamConnection* conn, CUeglFrame* eglframe, CUstream* pStream) except ?CUDA_ERROR_NOT_FOUND nogil + +cdef CUresult _cuGraphicsResourceGetMappedEglFrame(CUeglFrame* eglFrame, CUgraphicsResource resource, unsigned int index, unsigned int mipLevel) except ?CUDA_ERROR_NOT_FOUND nogil + +cdef CUresult _cuEventCreateFromEGLSync(CUevent* phEvent, EGLSyncKHR eglSync, unsigned int flags) except ?CUDA_ERROR_NOT_FOUND nogil + +cdef CUresult _cuGraphicsGLRegisterBuffer(CUgraphicsResource* pCudaResource, GLuint buffer, unsigned int Flags) except ?CUDA_ERROR_NOT_FOUND nogil + +cdef CUresult _cuGraphicsGLRegisterImage(CUgraphicsResource* pCudaResource, GLuint image, GLenum target, unsigned int Flags) except ?CUDA_ERROR_NOT_FOUND nogil + +cdef CUresult _cuGLGetDevices_v2(unsigned int* pCudaDeviceCount, CUdevice* pCudaDevices, unsigned int cudaDeviceCount, CUGLDeviceList deviceList) except ?CUDA_ERROR_NOT_FOUND nogil + +cdef CUresult _cuVDPAUGetDevice(CUdevice* pDevice, VdpDevice vdpDevice, VdpGetProcAddress* vdpGetProcAddress) except ?CUDA_ERROR_NOT_FOUND nogil + +cdef CUresult _cuVDPAUCtxCreate_v2(CUcontext* pCtx, unsigned int flags, CUdevice device, VdpDevice vdpDevice, VdpGetProcAddress* vdpGetProcAddress) except ?CUDA_ERROR_NOT_FOUND nogil + +cdef CUresult _cuGraphicsVDPAURegisterVideoSurface(CUgraphicsResource* pCudaResource, VdpVideoSurface vdpSurface, unsigned int flags) except ?CUDA_ERROR_NOT_FOUND nogil + +cdef CUresult _cuGraphicsVDPAURegisterOutputSurface(CUgraphicsResource* pCudaResource, VdpOutputSurface vdpSurface, unsigned int flags) except ?CUDA_ERROR_NOT_FOUND nogil diff --git a/venv/lib/python3.11/site-packages/cuda/bindings/_bindings/cyruntime.cpython-311-x86_64-linux-gnu.so b/venv/lib/python3.11/site-packages/cuda/bindings/_bindings/cyruntime.cpython-311-x86_64-linux-gnu.so new file mode 100644 index 0000000000000000000000000000000000000000..13d2d9e5b21d0658ad03d1b2060b515977ad828d --- /dev/null +++ b/venv/lib/python3.11/site-packages/cuda/bindings/_bindings/cyruntime.cpython-311-x86_64-linux-gnu.so @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:445e66052fc9303f506f11fa7b9f3669a37cb8fc6fde46541fa9dc8eca93aabb +size 941968 diff --git a/venv/lib/python3.11/site-packages/cuda/bindings/_bindings/cyruntime.pxd b/venv/lib/python3.11/site-packages/cuda/bindings/_bindings/cyruntime.pxd new file mode 100644 index 0000000000000000000000000000000000000000..8afbc7b351a766a2791a1dbe8c2b56c81297ca89 --- /dev/null +++ b/venv/lib/python3.11/site-packages/cuda/bindings/_bindings/cyruntime.pxd @@ -0,0 +1,649 @@ +# SPDX-FileCopyrightText: Copyright (c) 2021-2026 NVIDIA CORPORATION & AFFILIATES. All rights reserved. +# SPDX-License-Identifier: LicenseRef-NVIDIA-SOFTWARE-LICENSE + +# This code was automatically generated with version 13.3.0, generator version 0.3.1.dev1719+g565f73f4e. Do not modify it directly. +include "../cyruntime_types.pxi" + +include "../_lib/cyruntime/cyruntime.pxd" + +cdef cudaError_t _cudaDeviceReset() except ?cudaErrorCallRequiresNewerDriver nogil + +cdef cudaError_t _cudaDeviceSynchronize() except ?cudaErrorCallRequiresNewerDriver nogil + +cdef cudaError_t _cudaDeviceSetLimit(cudaLimit limit, size_t value) except ?cudaErrorCallRequiresNewerDriver nogil + +cdef cudaError_t _cudaDeviceGetLimit(size_t* pValue, cudaLimit limit) except ?cudaErrorCallRequiresNewerDriver nogil + +cdef cudaError_t _cudaDeviceGetTexture1DLinearMaxWidth(size_t* maxWidthInElements, const cudaChannelFormatDesc* fmtDesc, int device) except ?cudaErrorCallRequiresNewerDriver nogil + +cdef cudaError_t _cudaDeviceGetCacheConfig(cudaFuncCache* pCacheConfig) except ?cudaErrorCallRequiresNewerDriver nogil + +cdef cudaError_t _cudaDeviceGetStreamPriorityRange(int* leastPriority, int* greatestPriority) except ?cudaErrorCallRequiresNewerDriver nogil + +cdef cudaError_t _cudaDeviceSetCacheConfig(cudaFuncCache cacheConfig) except ?cudaErrorCallRequiresNewerDriver nogil + +cdef cudaError_t _cudaDeviceGetByPCIBusId(int* device, const char* pciBusId) except ?cudaErrorCallRequiresNewerDriver nogil + +cdef cudaError_t _cudaDeviceGetPCIBusId(char* pciBusId, int length, int device) except ?cudaErrorCallRequiresNewerDriver nogil + +cdef cudaError_t _cudaIpcGetEventHandle(cudaIpcEventHandle_t* handle, cudaEvent_t event) except ?cudaErrorCallRequiresNewerDriver nogil + +cdef cudaError_t _cudaIpcOpenEventHandle(cudaEvent_t* event, cudaIpcEventHandle_t handle) except ?cudaErrorCallRequiresNewerDriver nogil + +cdef cudaError_t _cudaIpcGetMemHandle(cudaIpcMemHandle_t* handle, void* devPtr) except ?cudaErrorCallRequiresNewerDriver nogil + +cdef cudaError_t _cudaIpcOpenMemHandle(void** devPtr, cudaIpcMemHandle_t handle, unsigned int flags) except ?cudaErrorCallRequiresNewerDriver nogil + +cdef cudaError_t _cudaIpcCloseMemHandle(void* devPtr) except ?cudaErrorCallRequiresNewerDriver nogil + +cdef cudaError_t _cudaDeviceFlushGPUDirectRDMAWrites(cudaFlushGPUDirectRDMAWritesTarget target, cudaFlushGPUDirectRDMAWritesScope scope) except ?cudaErrorCallRequiresNewerDriver nogil + +cdef cudaError_t _cudaDeviceRegisterAsyncNotification(int device, cudaAsyncCallback callbackFunc, void* userData, cudaAsyncCallbackHandle_t* callback) except ?cudaErrorCallRequiresNewerDriver nogil + +cdef cudaError_t _cudaDeviceUnregisterAsyncNotification(int device, cudaAsyncCallbackHandle_t callback) except ?cudaErrorCallRequiresNewerDriver nogil + +cdef cudaError_t _cudaDeviceGetSharedMemConfig(cudaSharedMemConfig* pConfig) except ?cudaErrorCallRequiresNewerDriver nogil + +cdef cudaError_t _cudaDeviceSetSharedMemConfig(cudaSharedMemConfig config) except ?cudaErrorCallRequiresNewerDriver nogil + +cdef cudaError_t _cudaGetLastError() except ?cudaErrorCallRequiresNewerDriver nogil + +cdef cudaError_t _cudaPeekAtLastError() except ?cudaErrorCallRequiresNewerDriver nogil + +cdef const char* _cudaGetErrorName(cudaError_t error) except ?NULL nogil + +cdef const char* _cudaGetErrorString(cudaError_t error) except ?NULL nogil + +cdef cudaError_t _cudaGetDeviceCount(int* count) except ?cudaErrorCallRequiresNewerDriver nogil + +cdef cudaError_t _cudaGetDeviceProperties(cudaDeviceProp* prop, int device) except ?cudaErrorCallRequiresNewerDriver nogil + +cdef cudaError_t _cudaDeviceGetAttribute(int* value, cudaDeviceAttr attr, int device) except ?cudaErrorCallRequiresNewerDriver nogil + +cdef cudaError_t _cudaDeviceGetHostAtomicCapabilities(unsigned int* capabilities, const cudaAtomicOperation* operations, unsigned int count, int device) except ?cudaErrorCallRequiresNewerDriver nogil + +cdef cudaError_t _cudaDeviceGetDefaultMemPool(cudaMemPool_t* memPool, int device) except ?cudaErrorCallRequiresNewerDriver nogil + +cdef cudaError_t _cudaDeviceSetMemPool(int device, cudaMemPool_t memPool) except ?cudaErrorCallRequiresNewerDriver nogil + +cdef cudaError_t _cudaDeviceGetMemPool(cudaMemPool_t* memPool, int device) except ?cudaErrorCallRequiresNewerDriver nogil + +cdef cudaError_t _cudaDeviceGetNvSciSyncAttributes(void* nvSciSyncAttrList, int device, int flags) except ?cudaErrorCallRequiresNewerDriver nogil + +cdef cudaError_t _cudaDeviceGetP2PAttribute(int* value, cudaDeviceP2PAttr attr, int srcDevice, int dstDevice) except ?cudaErrorCallRequiresNewerDriver nogil + +cdef cudaError_t _cudaDeviceGetP2PAtomicCapabilities(unsigned int* capabilities, const cudaAtomicOperation* operations, unsigned int count, int srcDevice, int dstDevice) except ?cudaErrorCallRequiresNewerDriver nogil + +cdef cudaError_t _cudaChooseDevice(int* device, const cudaDeviceProp* prop) except ?cudaErrorCallRequiresNewerDriver nogil + +cdef cudaError_t _cudaInitDevice(int device, unsigned int deviceFlags, unsigned int flags) except ?cudaErrorCallRequiresNewerDriver nogil + +cdef cudaError_t _cudaSetDevice(int device) except ?cudaErrorCallRequiresNewerDriver nogil + +cdef cudaError_t _cudaGetDevice(int* device) except ?cudaErrorCallRequiresNewerDriver nogil + +cdef cudaError_t _cudaSetDeviceFlags(unsigned int flags) except ?cudaErrorCallRequiresNewerDriver nogil + +cdef cudaError_t _cudaGetDeviceFlags(unsigned int* flags) except ?cudaErrorCallRequiresNewerDriver nogil + +cdef cudaError_t _cudaStreamCreate(cudaStream_t* pStream) except ?cudaErrorCallRequiresNewerDriver nogil + +cdef cudaError_t _cudaStreamCreateWithFlags(cudaStream_t* pStream, unsigned int flags) except ?cudaErrorCallRequiresNewerDriver nogil + +cdef cudaError_t _cudaStreamCreateWithPriority(cudaStream_t* pStream, unsigned int flags, int priority) except ?cudaErrorCallRequiresNewerDriver nogil + +cdef cudaError_t _cudaStreamGetPriority(cudaStream_t hStream, int* priority) except ?cudaErrorCallRequiresNewerDriver nogil + +cdef cudaError_t _cudaStreamGetFlags(cudaStream_t hStream, unsigned int* flags) except ?cudaErrorCallRequiresNewerDriver nogil + +cdef cudaError_t _cudaStreamGetId(cudaStream_t hStream, unsigned long long* streamId) except ?cudaErrorCallRequiresNewerDriver nogil + +cdef cudaError_t _cudaStreamGetDevice(cudaStream_t hStream, int* device) except ?cudaErrorCallRequiresNewerDriver nogil + +cdef cudaError_t _cudaCtxResetPersistingL2Cache() except ?cudaErrorCallRequiresNewerDriver nogil + +cdef cudaError_t _cudaStreamCopyAttributes(cudaStream_t dst, cudaStream_t src) except ?cudaErrorCallRequiresNewerDriver nogil + +cdef cudaError_t _cudaStreamGetAttribute(cudaStream_t hStream, cudaStreamAttrID attr, cudaStreamAttrValue* value_out) except ?cudaErrorCallRequiresNewerDriver nogil + +cdef cudaError_t _cudaStreamSetAttribute(cudaStream_t hStream, cudaStreamAttrID attr, const cudaStreamAttrValue* value) except ?cudaErrorCallRequiresNewerDriver nogil + +cdef cudaError_t _cudaStreamDestroy(cudaStream_t stream) except ?cudaErrorCallRequiresNewerDriver nogil + +cdef cudaError_t _cudaStreamWaitEvent(cudaStream_t stream, cudaEvent_t event, unsigned int flags) except ?cudaErrorCallRequiresNewerDriver nogil + +cdef cudaError_t _cudaStreamAddCallback(cudaStream_t stream, cudaStreamCallback_t callback, void* userData, unsigned int flags) except ?cudaErrorCallRequiresNewerDriver nogil + +cdef cudaError_t _cudaStreamSynchronize(cudaStream_t stream) except ?cudaErrorCallRequiresNewerDriver nogil + +cdef cudaError_t _cudaStreamQuery(cudaStream_t stream) except ?cudaErrorCallRequiresNewerDriver nogil + +cdef cudaError_t _cudaStreamAttachMemAsync(cudaStream_t stream, void* devPtr, size_t length, unsigned int flags) except ?cudaErrorCallRequiresNewerDriver nogil + +cdef cudaError_t _cudaStreamBeginCapture(cudaStream_t stream, cudaStreamCaptureMode mode) except ?cudaErrorCallRequiresNewerDriver nogil + +cdef cudaError_t _cudaStreamBeginRecaptureToGraph(cudaStream_t stream, cudaStreamCaptureMode mode, cudaGraph_t graph, cudaGraphRecaptureCallbackData* callbackData) except ?cudaErrorCallRequiresNewerDriver nogil + +cdef cudaError_t _cudaStreamBeginCaptureToGraph(cudaStream_t stream, cudaGraph_t graph, const cudaGraphNode_t* dependencies, const cudaGraphEdgeData* dependencyData, size_t numDependencies, cudaStreamCaptureMode mode) except ?cudaErrorCallRequiresNewerDriver nogil + +cdef cudaError_t _cudaThreadExchangeStreamCaptureMode(cudaStreamCaptureMode* mode) except ?cudaErrorCallRequiresNewerDriver nogil + +cdef cudaError_t _cudaStreamEndCapture(cudaStream_t stream, cudaGraph_t* pGraph) except ?cudaErrorCallRequiresNewerDriver nogil + +cdef cudaError_t _cudaStreamIsCapturing(cudaStream_t stream, cudaStreamCaptureStatus* pCaptureStatus) except ?cudaErrorCallRequiresNewerDriver nogil + +cdef cudaError_t _cudaStreamGetCaptureInfo(cudaStream_t stream, cudaStreamCaptureStatus* captureStatus_out, unsigned long long* id_out, cudaGraph_t* graph_out, const cudaGraphNode_t** dependencies_out, const cudaGraphEdgeData** edgeData_out, size_t* numDependencies_out) except ?cudaErrorCallRequiresNewerDriver nogil + +cdef cudaError_t _cudaStreamUpdateCaptureDependencies(cudaStream_t stream, cudaGraphNode_t* dependencies, const cudaGraphEdgeData* dependencyData, size_t numDependencies, unsigned int flags) except ?cudaErrorCallRequiresNewerDriver nogil + +cdef cudaError_t _cudaEventCreate(cudaEvent_t* event) except ?cudaErrorCallRequiresNewerDriver nogil + +cdef cudaError_t _cudaEventCreateWithFlags(cudaEvent_t* event, unsigned int flags) except ?cudaErrorCallRequiresNewerDriver nogil + +cdef cudaError_t _cudaEventRecord(cudaEvent_t event, cudaStream_t stream) except ?cudaErrorCallRequiresNewerDriver nogil + +cdef cudaError_t _cudaEventRecordWithFlags(cudaEvent_t event, cudaStream_t stream, unsigned int flags) except ?cudaErrorCallRequiresNewerDriver nogil + +cdef cudaError_t _cudaEventQuery(cudaEvent_t event) except ?cudaErrorCallRequiresNewerDriver nogil + +cdef cudaError_t _cudaEventSynchronize(cudaEvent_t event) except ?cudaErrorCallRequiresNewerDriver nogil + +cdef cudaError_t _cudaEventDestroy(cudaEvent_t event) except ?cudaErrorCallRequiresNewerDriver nogil + +cdef cudaError_t _cudaEventElapsedTime(float* ms, cudaEvent_t start, cudaEvent_t end) except ?cudaErrorCallRequiresNewerDriver nogil + +cdef cudaError_t _cudaImportExternalMemory(cudaExternalMemory_t* extMem_out, const cudaExternalMemoryHandleDesc* memHandleDesc) except ?cudaErrorCallRequiresNewerDriver nogil + +cdef cudaError_t _cudaExternalMemoryGetMappedBuffer(void** devPtr, cudaExternalMemory_t extMem, const cudaExternalMemoryBufferDesc* bufferDesc) except ?cudaErrorCallRequiresNewerDriver nogil + +cdef cudaError_t _cudaExternalMemoryGetMappedMipmappedArray(cudaMipmappedArray_t* mipmap, cudaExternalMemory_t extMem, const cudaExternalMemoryMipmappedArrayDesc* mipmapDesc) except ?cudaErrorCallRequiresNewerDriver nogil + +cdef cudaError_t _cudaDestroyExternalMemory(cudaExternalMemory_t extMem) except ?cudaErrorCallRequiresNewerDriver nogil + +cdef cudaError_t _cudaImportExternalSemaphore(cudaExternalSemaphore_t* extSem_out, const cudaExternalSemaphoreHandleDesc* semHandleDesc) except ?cudaErrorCallRequiresNewerDriver nogil + +cdef cudaError_t _cudaSignalExternalSemaphoresAsync(const cudaExternalSemaphore_t* extSemArray, const cudaExternalSemaphoreSignalParams* paramsArray, unsigned int numExtSems, cudaStream_t stream) except ?cudaErrorCallRequiresNewerDriver nogil + +cdef cudaError_t _cudaWaitExternalSemaphoresAsync(const cudaExternalSemaphore_t* extSemArray, const cudaExternalSemaphoreWaitParams* paramsArray, unsigned int numExtSems, cudaStream_t stream) except ?cudaErrorCallRequiresNewerDriver nogil + +cdef cudaError_t _cudaDestroyExternalSemaphore(cudaExternalSemaphore_t extSem) except ?cudaErrorCallRequiresNewerDriver nogil + +cdef cudaError_t _cudaFuncSetCacheConfig(const void* func, cudaFuncCache cacheConfig) except ?cudaErrorCallRequiresNewerDriver nogil + +cdef cudaError_t _cudaFuncGetAttributes(cudaFuncAttributes* attr, const void* func) except ?cudaErrorCallRequiresNewerDriver nogil + +cdef cudaError_t _cudaFuncSetAttribute(const void* func, cudaFuncAttribute attr, int value) except ?cudaErrorCallRequiresNewerDriver nogil + +cdef cudaError_t _cudaFuncGetParamCount(const void* func, size_t* paramCount) except ?cudaErrorCallRequiresNewerDriver nogil + +cdef cudaError_t _cudaLaunchHostFunc(cudaStream_t stream, cudaHostFn_t fn, void* userData) except ?cudaErrorCallRequiresNewerDriver nogil + +cdef cudaError_t _cudaLaunchHostFunc_v2(cudaStream_t stream, cudaHostFn_t fn, void* userData, unsigned int syncMode) except ?cudaErrorCallRequiresNewerDriver nogil + +cdef cudaError_t _cudaFuncSetSharedMemConfig(const void* func, cudaSharedMemConfig config) except ?cudaErrorCallRequiresNewerDriver nogil + +cdef cudaError_t _cudaOccupancyMaxActiveBlocksPerMultiprocessor(int* numBlocks, const void* func, int blockSize, size_t dynamicSMemSize) except ?cudaErrorCallRequiresNewerDriver nogil + +cdef cudaError_t _cudaOccupancyAvailableDynamicSMemPerBlock(size_t* dynamicSmemSize, const void* func, int numBlocks, int blockSize) except ?cudaErrorCallRequiresNewerDriver nogil + +cdef cudaError_t _cudaOccupancyMaxActiveBlocksPerMultiprocessorWithFlags(int* numBlocks, const void* func, int blockSize, size_t dynamicSMemSize, unsigned int flags) except ?cudaErrorCallRequiresNewerDriver nogil + +cdef cudaError_t _cudaMallocManaged(void** devPtr, size_t size, unsigned int flags) except ?cudaErrorCallRequiresNewerDriver nogil + +cdef cudaError_t _cudaMalloc(void** devPtr, size_t size) except ?cudaErrorCallRequiresNewerDriver nogil + +cdef cudaError_t _cudaMallocHost(void** ptr, size_t size) except ?cudaErrorCallRequiresNewerDriver nogil + +cdef cudaError_t _cudaMallocPitch(void** devPtr, size_t* pitch, size_t width, size_t height) except ?cudaErrorCallRequiresNewerDriver nogil + +cdef cudaError_t _cudaMallocArray(cudaArray_t* array, const cudaChannelFormatDesc* desc, size_t width, size_t height, unsigned int flags) except ?cudaErrorCallRequiresNewerDriver nogil + +cdef cudaError_t _cudaFree(void* devPtr) except ?cudaErrorCallRequiresNewerDriver nogil + +cdef cudaError_t _cudaFreeHost(void* ptr) except ?cudaErrorCallRequiresNewerDriver nogil + +cdef cudaError_t _cudaFreeArray(cudaArray_t array) except ?cudaErrorCallRequiresNewerDriver nogil + +cdef cudaError_t _cudaFreeMipmappedArray(cudaMipmappedArray_t mipmappedArray) except ?cudaErrorCallRequiresNewerDriver nogil + +cdef cudaError_t _cudaHostAlloc(void** pHost, size_t size, unsigned int flags) except ?cudaErrorCallRequiresNewerDriver nogil + +cdef cudaError_t _cudaHostRegister(void* ptr, size_t size, unsigned int flags) except ?cudaErrorCallRequiresNewerDriver nogil + +cdef cudaError_t _cudaHostUnregister(void* ptr) except ?cudaErrorCallRequiresNewerDriver nogil + +cdef cudaError_t _cudaHostGetDevicePointer(void** pDevice, void* pHost, unsigned int flags) except ?cudaErrorCallRequiresNewerDriver nogil + +cdef cudaError_t _cudaHostGetFlags(unsigned int* pFlags, void* pHost) except ?cudaErrorCallRequiresNewerDriver nogil + +cdef cudaError_t _cudaMalloc3D(cudaPitchedPtr* pitchedDevPtr, cudaExtent extent) except ?cudaErrorCallRequiresNewerDriver nogil + +cdef cudaError_t _cudaMalloc3DArray(cudaArray_t* array, const cudaChannelFormatDesc* desc, cudaExtent extent, unsigned int flags) except ?cudaErrorCallRequiresNewerDriver nogil + +cdef cudaError_t _cudaMallocMipmappedArray(cudaMipmappedArray_t* mipmappedArray, const cudaChannelFormatDesc* desc, cudaExtent extent, unsigned int numLevels, unsigned int flags) except ?cudaErrorCallRequiresNewerDriver nogil + +cdef cudaError_t _cudaGetMipmappedArrayLevel(cudaArray_t* levelArray, cudaMipmappedArray_const_t mipmappedArray, unsigned int level) except ?cudaErrorCallRequiresNewerDriver nogil + +cdef cudaError_t _cudaMemcpy3D(const cudaMemcpy3DParms* p) except ?cudaErrorCallRequiresNewerDriver nogil + +cdef cudaError_t _cudaMemcpy3DPeer(const cudaMemcpy3DPeerParms* p) except ?cudaErrorCallRequiresNewerDriver nogil + +cdef cudaError_t _cudaMemcpy3DAsync(const cudaMemcpy3DParms* p, cudaStream_t stream) except ?cudaErrorCallRequiresNewerDriver nogil + +cdef cudaError_t _cudaMemcpy3DPeerAsync(const cudaMemcpy3DPeerParms* p, cudaStream_t stream) except ?cudaErrorCallRequiresNewerDriver nogil + +cdef cudaError_t _cudaMemGetInfo(size_t* free, size_t* total) except ?cudaErrorCallRequiresNewerDriver nogil + +cdef cudaError_t _cudaArrayGetInfo(cudaChannelFormatDesc* desc, cudaExtent* extent, unsigned int* flags, cudaArray_t array) except ?cudaErrorCallRequiresNewerDriver nogil + +cdef cudaError_t _cudaArrayGetPlane(cudaArray_t* pPlaneArray, cudaArray_t hArray, unsigned int planeIdx) except ?cudaErrorCallRequiresNewerDriver nogil + +cdef cudaError_t _cudaArrayGetMemoryRequirements(cudaArrayMemoryRequirements* memoryRequirements, cudaArray_t array, int device) except ?cudaErrorCallRequiresNewerDriver nogil + +cdef cudaError_t _cudaMipmappedArrayGetMemoryRequirements(cudaArrayMemoryRequirements* memoryRequirements, cudaMipmappedArray_t mipmap, int device) except ?cudaErrorCallRequiresNewerDriver nogil + +cdef cudaError_t _cudaArrayGetSparseProperties(cudaArraySparseProperties* sparseProperties, cudaArray_t array) except ?cudaErrorCallRequiresNewerDriver nogil + +cdef cudaError_t _cudaMipmappedArrayGetSparseProperties(cudaArraySparseProperties* sparseProperties, cudaMipmappedArray_t mipmap) except ?cudaErrorCallRequiresNewerDriver nogil + +cdef cudaError_t _cudaMemcpy(void* dst, const void* src, size_t count, cudaMemcpyKind kind) except ?cudaErrorCallRequiresNewerDriver nogil + +cdef cudaError_t _cudaMemcpyPeer(void* dst, int dstDevice, const void* src, int srcDevice, size_t count) except ?cudaErrorCallRequiresNewerDriver nogil + +cdef cudaError_t _cudaMemcpy2D(void* dst, size_t dpitch, const void* src, size_t spitch, size_t width, size_t height, cudaMemcpyKind kind) except ?cudaErrorCallRequiresNewerDriver nogil + +cdef cudaError_t _cudaMemcpy2DToArray(cudaArray_t dst, size_t wOffset, size_t hOffset, const void* src, size_t spitch, size_t width, size_t height, cudaMemcpyKind kind) except ?cudaErrorCallRequiresNewerDriver nogil + +cdef cudaError_t _cudaMemcpy2DFromArray(void* dst, size_t dpitch, cudaArray_const_t src, size_t wOffset, size_t hOffset, size_t width, size_t height, cudaMemcpyKind kind) except ?cudaErrorCallRequiresNewerDriver nogil + +cdef cudaError_t _cudaMemcpy2DArrayToArray(cudaArray_t dst, size_t wOffsetDst, size_t hOffsetDst, cudaArray_const_t src, size_t wOffsetSrc, size_t hOffsetSrc, size_t width, size_t height, cudaMemcpyKind kind) except ?cudaErrorCallRequiresNewerDriver nogil + +cdef cudaError_t _cudaMemcpyAsync(void* dst, const void* src, size_t count, cudaMemcpyKind kind, cudaStream_t stream) except ?cudaErrorCallRequiresNewerDriver nogil + +cdef cudaError_t _cudaMemcpyPeerAsync(void* dst, int dstDevice, const void* src, int srcDevice, size_t count, cudaStream_t stream) except ?cudaErrorCallRequiresNewerDriver nogil + +cdef cudaError_t _cudaMemcpyBatchAsync(const void** dsts, const void** srcs, const size_t* sizes, size_t count, cudaMemcpyAttributes* attrs, size_t* attrsIdxs, size_t numAttrs, cudaStream_t stream) except ?cudaErrorCallRequiresNewerDriver nogil + +cdef cudaError_t _cudaMemcpy3DBatchAsync(size_t numOps, cudaMemcpy3DBatchOp* opList, unsigned long long flags, cudaStream_t stream) except ?cudaErrorCallRequiresNewerDriver nogil + +cdef cudaError_t _cudaMemcpyWithAttributesAsync(void* dst, const void* src, size_t size, cudaMemcpyAttributes* attr, cudaStream_t stream) except ?cudaErrorCallRequiresNewerDriver nogil + +cdef cudaError_t _cudaMemcpy3DWithAttributesAsync(cudaMemcpy3DBatchOp* op, unsigned long long flags, cudaStream_t stream) except ?cudaErrorCallRequiresNewerDriver nogil + +cdef cudaError_t _cudaMemcpy2DAsync(void* dst, size_t dpitch, const void* src, size_t spitch, size_t width, size_t height, cudaMemcpyKind kind, cudaStream_t stream) except ?cudaErrorCallRequiresNewerDriver nogil + +cdef cudaError_t _cudaMemcpy2DToArrayAsync(cudaArray_t dst, size_t wOffset, size_t hOffset, const void* src, size_t spitch, size_t width, size_t height, cudaMemcpyKind kind, cudaStream_t stream) except ?cudaErrorCallRequiresNewerDriver nogil + +cdef cudaError_t _cudaMemcpy2DFromArrayAsync(void* dst, size_t dpitch, cudaArray_const_t src, size_t wOffset, size_t hOffset, size_t width, size_t height, cudaMemcpyKind kind, cudaStream_t stream) except ?cudaErrorCallRequiresNewerDriver nogil + +cdef cudaError_t _cudaMemset(void* devPtr, int value, size_t count) except ?cudaErrorCallRequiresNewerDriver nogil + +cdef cudaError_t _cudaMemset2D(void* devPtr, size_t pitch, int value, size_t width, size_t height) except ?cudaErrorCallRequiresNewerDriver nogil + +cdef cudaError_t _cudaMemset3D(cudaPitchedPtr pitchedDevPtr, int value, cudaExtent extent) except ?cudaErrorCallRequiresNewerDriver nogil + +cdef cudaError_t _cudaMemsetAsync(void* devPtr, int value, size_t count, cudaStream_t stream) except ?cudaErrorCallRequiresNewerDriver nogil + +cdef cudaError_t _cudaMemset2DAsync(void* devPtr, size_t pitch, int value, size_t width, size_t height, cudaStream_t stream) except ?cudaErrorCallRequiresNewerDriver nogil + +cdef cudaError_t _cudaMemset3DAsync(cudaPitchedPtr pitchedDevPtr, int value, cudaExtent extent, cudaStream_t stream) except ?cudaErrorCallRequiresNewerDriver nogil + +cdef cudaError_t _cudaMemPrefetchAsync(const void* devPtr, size_t count, cudaMemLocation location, unsigned int flags, cudaStream_t stream) except ?cudaErrorCallRequiresNewerDriver nogil + +cdef cudaError_t _cudaMemPrefetchBatchAsync(void** dptrs, size_t* sizes, size_t count, cudaMemLocation* prefetchLocs, size_t* prefetchLocIdxs, size_t numPrefetchLocs, unsigned long long flags, cudaStream_t stream) except ?cudaErrorCallRequiresNewerDriver nogil + +cdef cudaError_t _cudaMemDiscardBatchAsync(void** dptrs, size_t* sizes, size_t count, unsigned long long flags, cudaStream_t stream) except ?cudaErrorCallRequiresNewerDriver nogil + +cdef cudaError_t _cudaMemDiscardAndPrefetchBatchAsync(void** dptrs, size_t* sizes, size_t count, cudaMemLocation* prefetchLocs, size_t* prefetchLocIdxs, size_t numPrefetchLocs, unsigned long long flags, cudaStream_t stream) except ?cudaErrorCallRequiresNewerDriver nogil + +cdef cudaError_t _cudaMemAdvise(const void* devPtr, size_t count, cudaMemoryAdvise advice, cudaMemLocation location) except ?cudaErrorCallRequiresNewerDriver nogil + +cdef cudaError_t _cudaMemRangeGetAttribute(void* data, size_t dataSize, cudaMemRangeAttribute attribute, const void* devPtr, size_t count) except ?cudaErrorCallRequiresNewerDriver nogil + +cdef cudaError_t _cudaMemRangeGetAttributes(void** data, size_t* dataSizes, cudaMemRangeAttribute* attributes, size_t numAttributes, const void* devPtr, size_t count) except ?cudaErrorCallRequiresNewerDriver nogil + +cdef cudaError_t _cudaMemcpyToArray(cudaArray_t dst, size_t wOffset, size_t hOffset, const void* src, size_t count, cudaMemcpyKind kind) except ?cudaErrorCallRequiresNewerDriver nogil + +cdef cudaError_t _cudaMemcpyFromArray(void* dst, cudaArray_const_t src, size_t wOffset, size_t hOffset, size_t count, cudaMemcpyKind kind) except ?cudaErrorCallRequiresNewerDriver nogil + +cdef cudaError_t _cudaMemcpyArrayToArray(cudaArray_t dst, size_t wOffsetDst, size_t hOffsetDst, cudaArray_const_t src, size_t wOffsetSrc, size_t hOffsetSrc, size_t count, cudaMemcpyKind kind) except ?cudaErrorCallRequiresNewerDriver nogil + +cdef cudaError_t _cudaMemcpyToArrayAsync(cudaArray_t dst, size_t wOffset, size_t hOffset, const void* src, size_t count, cudaMemcpyKind kind, cudaStream_t stream) except ?cudaErrorCallRequiresNewerDriver nogil + +cdef cudaError_t _cudaMemcpyFromArrayAsync(void* dst, cudaArray_const_t src, size_t wOffset, size_t hOffset, size_t count, cudaMemcpyKind kind, cudaStream_t stream) except ?cudaErrorCallRequiresNewerDriver nogil + +cdef cudaError_t _cudaMallocAsync(void** devPtr, size_t size, cudaStream_t hStream) except ?cudaErrorCallRequiresNewerDriver nogil + +cdef cudaError_t _cudaFreeAsync(void* devPtr, cudaStream_t hStream) except ?cudaErrorCallRequiresNewerDriver nogil + +cdef cudaError_t _cudaMemPoolTrimTo(cudaMemPool_t memPool, size_t minBytesToKeep) except ?cudaErrorCallRequiresNewerDriver nogil + +cdef cudaError_t _cudaMemPoolSetAttribute(cudaMemPool_t memPool, cudaMemPoolAttr attr, void* value) except ?cudaErrorCallRequiresNewerDriver nogil + +cdef cudaError_t _cudaMemPoolGetAttribute(cudaMemPool_t memPool, cudaMemPoolAttr attr, void* value) except ?cudaErrorCallRequiresNewerDriver nogil + +cdef cudaError_t _cudaMemPoolSetAccess(cudaMemPool_t memPool, const cudaMemAccessDesc* descList, size_t count) except ?cudaErrorCallRequiresNewerDriver nogil + +cdef cudaError_t _cudaMemPoolGetAccess(cudaMemAccessFlags* flags, cudaMemPool_t memPool, cudaMemLocation* location) except ?cudaErrorCallRequiresNewerDriver nogil + +cdef cudaError_t _cudaMemPoolCreate(cudaMemPool_t* memPool, const cudaMemPoolProps* poolProps) except ?cudaErrorCallRequiresNewerDriver nogil + +cdef cudaError_t _cudaMemPoolDestroy(cudaMemPool_t memPool) except ?cudaErrorCallRequiresNewerDriver nogil + +cdef cudaError_t _cudaMemGetDefaultMemPool(cudaMemPool_t* memPool, cudaMemLocation* location, cudaMemAllocationType typename) except ?cudaErrorCallRequiresNewerDriver nogil + +cdef cudaError_t _cudaMemGetMemPool(cudaMemPool_t* memPool, cudaMemLocation* location, cudaMemAllocationType typename) except ?cudaErrorCallRequiresNewerDriver nogil + +cdef cudaError_t _cudaMemSetMemPool(cudaMemLocation* location, cudaMemAllocationType typename, cudaMemPool_t memPool) except ?cudaErrorCallRequiresNewerDriver nogil + +cdef cudaError_t _cudaMallocFromPoolAsync(void** ptr, size_t size, cudaMemPool_t memPool, cudaStream_t stream) except ?cudaErrorCallRequiresNewerDriver nogil + +cdef cudaError_t _cudaMemPoolExportToShareableHandle(void* shareableHandle, cudaMemPool_t memPool, cudaMemAllocationHandleType handleType, unsigned int flags) except ?cudaErrorCallRequiresNewerDriver nogil + +cdef cudaError_t _cudaMemPoolImportFromShareableHandle(cudaMemPool_t* memPool, void* shareableHandle, cudaMemAllocationHandleType handleType, unsigned int flags) except ?cudaErrorCallRequiresNewerDriver nogil + +cdef cudaError_t _cudaMemPoolExportPointer(cudaMemPoolPtrExportData* exportData, void* ptr) except ?cudaErrorCallRequiresNewerDriver nogil + +cdef cudaError_t _cudaMemPoolImportPointer(void** ptr, cudaMemPool_t memPool, cudaMemPoolPtrExportData* exportData) except ?cudaErrorCallRequiresNewerDriver nogil + +cdef cudaError_t _cudaPointerGetAttributes(cudaPointerAttributes* attributes, const void* ptr) except ?cudaErrorCallRequiresNewerDriver nogil + +cdef cudaError_t _cudaDeviceCanAccessPeer(int* canAccessPeer, int device, int peerDevice) except ?cudaErrorCallRequiresNewerDriver nogil + +cdef cudaError_t _cudaDeviceEnablePeerAccess(int peerDevice, unsigned int flags) except ?cudaErrorCallRequiresNewerDriver nogil + +cdef cudaError_t _cudaDeviceDisablePeerAccess(int peerDevice) except ?cudaErrorCallRequiresNewerDriver nogil + +cdef cudaError_t _cudaGraphicsUnregisterResource(cudaGraphicsResource_t resource) except ?cudaErrorCallRequiresNewerDriver nogil + +cdef cudaError_t _cudaGraphicsResourceSetMapFlags(cudaGraphicsResource_t resource, unsigned int flags) except ?cudaErrorCallRequiresNewerDriver nogil + +cdef cudaError_t _cudaGraphicsMapResources(int count, cudaGraphicsResource_t* resources, cudaStream_t stream) except ?cudaErrorCallRequiresNewerDriver nogil + +cdef cudaError_t _cudaGraphicsUnmapResources(int count, cudaGraphicsResource_t* resources, cudaStream_t stream) except ?cudaErrorCallRequiresNewerDriver nogil + +cdef cudaError_t _cudaGraphicsResourceGetMappedPointer(void** devPtr, size_t* size, cudaGraphicsResource_t resource) except ?cudaErrorCallRequiresNewerDriver nogil + +cdef cudaError_t _cudaGraphicsSubResourceGetMappedArray(cudaArray_t* array, cudaGraphicsResource_t resource, unsigned int arrayIndex, unsigned int mipLevel) except ?cudaErrorCallRequiresNewerDriver nogil + +cdef cudaError_t _cudaGraphicsResourceGetMappedMipmappedArray(cudaMipmappedArray_t* mipmappedArray, cudaGraphicsResource_t resource) except ?cudaErrorCallRequiresNewerDriver nogil + +cdef cudaError_t _cudaGetChannelDesc(cudaChannelFormatDesc* desc, cudaArray_const_t array) except ?cudaErrorCallRequiresNewerDriver nogil + +cdef cudaChannelFormatDesc _cudaCreateChannelDesc(int x, int y, int z, int w, cudaChannelFormatKind f) except* nogil + +cdef cudaError_t _cudaCreateTextureObject(cudaTextureObject_t* pTexObject, const cudaResourceDesc* pResDesc, const cudaTextureDesc* pTexDesc, const cudaResourceViewDesc* pResViewDesc) except ?cudaErrorCallRequiresNewerDriver nogil + +cdef cudaError_t _cudaDestroyTextureObject(cudaTextureObject_t texObject) except ?cudaErrorCallRequiresNewerDriver nogil + +cdef cudaError_t _cudaGetTextureObjectResourceDesc(cudaResourceDesc* pResDesc, cudaTextureObject_t texObject) except ?cudaErrorCallRequiresNewerDriver nogil + +cdef cudaError_t _cudaGetTextureObjectTextureDesc(cudaTextureDesc* pTexDesc, cudaTextureObject_t texObject) except ?cudaErrorCallRequiresNewerDriver nogil + +cdef cudaError_t _cudaGetTextureObjectResourceViewDesc(cudaResourceViewDesc* pResViewDesc, cudaTextureObject_t texObject) except ?cudaErrorCallRequiresNewerDriver nogil + +cdef cudaError_t _cudaCreateSurfaceObject(cudaSurfaceObject_t* pSurfObject, const cudaResourceDesc* pResDesc) except ?cudaErrorCallRequiresNewerDriver nogil + +cdef cudaError_t _cudaDestroySurfaceObject(cudaSurfaceObject_t surfObject) except ?cudaErrorCallRequiresNewerDriver nogil + +cdef cudaError_t _cudaGetSurfaceObjectResourceDesc(cudaResourceDesc* pResDesc, cudaSurfaceObject_t surfObject) except ?cudaErrorCallRequiresNewerDriver nogil + +cdef cudaError_t _cudaDriverGetVersion(int* driverVersion) except ?cudaErrorCallRequiresNewerDriver nogil + +cdef cudaError_t _cudaRuntimeGetVersion(int* runtimeVersion) except ?cudaErrorCallRequiresNewerDriver nogil + +cdef cudaError_t _cudaLogsRegisterCallback(cudaLogsCallback_t callbackFunc, void* userData, cudaLogsCallbackHandle* callback_out) except ?cudaErrorCallRequiresNewerDriver nogil + +cdef cudaError_t _cudaLogsUnregisterCallback(cudaLogsCallbackHandle callback) except ?cudaErrorCallRequiresNewerDriver nogil + +cdef cudaError_t _cudaLogsCurrent(cudaLogIterator* iterator_out, unsigned int flags) except ?cudaErrorCallRequiresNewerDriver nogil + +cdef cudaError_t _cudaLogsDumpToFile(cudaLogIterator* iterator, const char* pathToFile, unsigned int flags) except ?cudaErrorCallRequiresNewerDriver nogil + +cdef cudaError_t _cudaLogsDumpToMemory(cudaLogIterator* iterator, char* buffer, size_t* size, unsigned int flags) except ?cudaErrorCallRequiresNewerDriver nogil + +cdef cudaError_t _cudaGraphCreate(cudaGraph_t* pGraph, unsigned int flags) except ?cudaErrorCallRequiresNewerDriver nogil + +cdef cudaError_t _cudaGraphAddKernelNode(cudaGraphNode_t* pGraphNode, cudaGraph_t graph, const cudaGraphNode_t* pDependencies, size_t numDependencies, const cudaKernelNodeParams* pNodeParams) except ?cudaErrorCallRequiresNewerDriver nogil + +cdef cudaError_t _cudaGraphKernelNodeGetParams(cudaGraphNode_t node, cudaKernelNodeParams* pNodeParams) except ?cudaErrorCallRequiresNewerDriver nogil + +cdef cudaError_t _cudaGraphKernelNodeSetParams(cudaGraphNode_t node, const cudaKernelNodeParams* pNodeParams) except ?cudaErrorCallRequiresNewerDriver nogil + +cdef cudaError_t _cudaGraphKernelNodeCopyAttributes(cudaGraphNode_t hDst, cudaGraphNode_t hSrc) except ?cudaErrorCallRequiresNewerDriver nogil + +cdef cudaError_t _cudaGraphKernelNodeGetAttribute(cudaGraphNode_t hNode, cudaKernelNodeAttrID attr, cudaKernelNodeAttrValue* value_out) except ?cudaErrorCallRequiresNewerDriver nogil + +cdef cudaError_t _cudaGraphKernelNodeSetAttribute(cudaGraphNode_t hNode, cudaKernelNodeAttrID attr, const cudaKernelNodeAttrValue* value) except ?cudaErrorCallRequiresNewerDriver nogil + +cdef cudaError_t _cudaGraphAddMemcpyNode(cudaGraphNode_t* pGraphNode, cudaGraph_t graph, const cudaGraphNode_t* pDependencies, size_t numDependencies, const cudaMemcpy3DParms* pCopyParams) except ?cudaErrorCallRequiresNewerDriver nogil + +cdef cudaError_t _cudaGraphAddMemcpyNode1D(cudaGraphNode_t* pGraphNode, cudaGraph_t graph, const cudaGraphNode_t* pDependencies, size_t numDependencies, void* dst, const void* src, size_t count, cudaMemcpyKind kind) except ?cudaErrorCallRequiresNewerDriver nogil + +cdef cudaError_t _cudaGraphMemcpyNodeGetParams(cudaGraphNode_t node, cudaMemcpy3DParms* pNodeParams) except ?cudaErrorCallRequiresNewerDriver nogil + +cdef cudaError_t _cudaGraphMemcpyNodeSetParams(cudaGraphNode_t node, const cudaMemcpy3DParms* pNodeParams) except ?cudaErrorCallRequiresNewerDriver nogil + +cdef cudaError_t _cudaGraphMemcpyNodeSetParams1D(cudaGraphNode_t node, void* dst, const void* src, size_t count, cudaMemcpyKind kind) except ?cudaErrorCallRequiresNewerDriver nogil + +cdef cudaError_t _cudaGraphAddMemsetNode(cudaGraphNode_t* pGraphNode, cudaGraph_t graph, const cudaGraphNode_t* pDependencies, size_t numDependencies, const cudaMemsetParams* pMemsetParams) except ?cudaErrorCallRequiresNewerDriver nogil + +cdef cudaError_t _cudaGraphMemsetNodeGetParams(cudaGraphNode_t node, cudaMemsetParams* pNodeParams) except ?cudaErrorCallRequiresNewerDriver nogil + +cdef cudaError_t _cudaGraphMemsetNodeSetParams(cudaGraphNode_t node, const cudaMemsetParams* pNodeParams) except ?cudaErrorCallRequiresNewerDriver nogil + +cdef cudaError_t _cudaGraphAddHostNode(cudaGraphNode_t* pGraphNode, cudaGraph_t graph, const cudaGraphNode_t* pDependencies, size_t numDependencies, const cudaHostNodeParams* pNodeParams) except ?cudaErrorCallRequiresNewerDriver nogil + +cdef cudaError_t _cudaGraphHostNodeGetParams(cudaGraphNode_t node, cudaHostNodeParams* pNodeParams) except ?cudaErrorCallRequiresNewerDriver nogil + +cdef cudaError_t _cudaGraphHostNodeSetParams(cudaGraphNode_t node, const cudaHostNodeParams* pNodeParams) except ?cudaErrorCallRequiresNewerDriver nogil + +cdef cudaError_t _cudaGraphAddChildGraphNode(cudaGraphNode_t* pGraphNode, cudaGraph_t graph, const cudaGraphNode_t* pDependencies, size_t numDependencies, cudaGraph_t childGraph) except ?cudaErrorCallRequiresNewerDriver nogil + +cdef cudaError_t _cudaGraphChildGraphNodeGetGraph(cudaGraphNode_t node, cudaGraph_t* pGraph) except ?cudaErrorCallRequiresNewerDriver nogil + +cdef cudaError_t _cudaGraphAddEmptyNode(cudaGraphNode_t* pGraphNode, cudaGraph_t graph, const cudaGraphNode_t* pDependencies, size_t numDependencies) except ?cudaErrorCallRequiresNewerDriver nogil + +cdef cudaError_t _cudaGraphAddEventRecordNode(cudaGraphNode_t* pGraphNode, cudaGraph_t graph, const cudaGraphNode_t* pDependencies, size_t numDependencies, cudaEvent_t event) except ?cudaErrorCallRequiresNewerDriver nogil + +cdef cudaError_t _cudaGraphEventRecordNodeGetEvent(cudaGraphNode_t node, cudaEvent_t* event_out) except ?cudaErrorCallRequiresNewerDriver nogil + +cdef cudaError_t _cudaGraphEventRecordNodeSetEvent(cudaGraphNode_t node, cudaEvent_t event) except ?cudaErrorCallRequiresNewerDriver nogil + +cdef cudaError_t _cudaGraphAddEventWaitNode(cudaGraphNode_t* pGraphNode, cudaGraph_t graph, const cudaGraphNode_t* pDependencies, size_t numDependencies, cudaEvent_t event) except ?cudaErrorCallRequiresNewerDriver nogil + +cdef cudaError_t _cudaGraphEventWaitNodeGetEvent(cudaGraphNode_t node, cudaEvent_t* event_out) except ?cudaErrorCallRequiresNewerDriver nogil + +cdef cudaError_t _cudaGraphEventWaitNodeSetEvent(cudaGraphNode_t node, cudaEvent_t event) except ?cudaErrorCallRequiresNewerDriver nogil + +cdef cudaError_t _cudaGraphAddExternalSemaphoresSignalNode(cudaGraphNode_t* pGraphNode, cudaGraph_t graph, const cudaGraphNode_t* pDependencies, size_t numDependencies, const cudaExternalSemaphoreSignalNodeParams* nodeParams) except ?cudaErrorCallRequiresNewerDriver nogil + +cdef cudaError_t _cudaGraphExternalSemaphoresSignalNodeGetParams(cudaGraphNode_t hNode, cudaExternalSemaphoreSignalNodeParams* params_out) except ?cudaErrorCallRequiresNewerDriver nogil + +cdef cudaError_t _cudaGraphExternalSemaphoresSignalNodeSetParams(cudaGraphNode_t hNode, const cudaExternalSemaphoreSignalNodeParams* nodeParams) except ?cudaErrorCallRequiresNewerDriver nogil + +cdef cudaError_t _cudaGraphAddExternalSemaphoresWaitNode(cudaGraphNode_t* pGraphNode, cudaGraph_t graph, const cudaGraphNode_t* pDependencies, size_t numDependencies, const cudaExternalSemaphoreWaitNodeParams* nodeParams) except ?cudaErrorCallRequiresNewerDriver nogil + +cdef cudaError_t _cudaGraphExternalSemaphoresWaitNodeGetParams(cudaGraphNode_t hNode, cudaExternalSemaphoreWaitNodeParams* params_out) except ?cudaErrorCallRequiresNewerDriver nogil + +cdef cudaError_t _cudaGraphExternalSemaphoresWaitNodeSetParams(cudaGraphNode_t hNode, const cudaExternalSemaphoreWaitNodeParams* nodeParams) except ?cudaErrorCallRequiresNewerDriver nogil + +cdef cudaError_t _cudaGraphAddMemAllocNode(cudaGraphNode_t* pGraphNode, cudaGraph_t graph, const cudaGraphNode_t* pDependencies, size_t numDependencies, cudaMemAllocNodeParams* nodeParams) except ?cudaErrorCallRequiresNewerDriver nogil + +cdef cudaError_t _cudaGraphMemAllocNodeGetParams(cudaGraphNode_t node, cudaMemAllocNodeParams* params_out) except ?cudaErrorCallRequiresNewerDriver nogil + +cdef cudaError_t _cudaGraphAddMemFreeNode(cudaGraphNode_t* pGraphNode, cudaGraph_t graph, const cudaGraphNode_t* pDependencies, size_t numDependencies, void* dptr) except ?cudaErrorCallRequiresNewerDriver nogil + +cdef cudaError_t _cudaGraphMemFreeNodeGetParams(cudaGraphNode_t node, void* dptr_out) except ?cudaErrorCallRequiresNewerDriver nogil + +cdef cudaError_t _cudaDeviceGraphMemTrim(int device) except ?cudaErrorCallRequiresNewerDriver nogil + +cdef cudaError_t _cudaDeviceGetGraphMemAttribute(int device, cudaGraphMemAttributeType attr, void* value) except ?cudaErrorCallRequiresNewerDriver nogil + +cdef cudaError_t _cudaDeviceSetGraphMemAttribute(int device, cudaGraphMemAttributeType attr, void* value) except ?cudaErrorCallRequiresNewerDriver nogil + +cdef cudaError_t _cudaGraphClone(cudaGraph_t* pGraphClone, cudaGraph_t originalGraph) except ?cudaErrorCallRequiresNewerDriver nogil + +cdef cudaError_t _cudaGraphNodeFindInClone(cudaGraphNode_t* pNode, cudaGraphNode_t originalNode, cudaGraph_t clonedGraph) except ?cudaErrorCallRequiresNewerDriver nogil + +cdef cudaError_t _cudaGraphNodeGetType(cudaGraphNode_t node, cudaGraphNodeType* pType) except ?cudaErrorCallRequiresNewerDriver nogil + +cdef cudaError_t _cudaGraphNodeGetContainingGraph(cudaGraphNode_t hNode, cudaGraph_t* phGraph) except ?cudaErrorCallRequiresNewerDriver nogil + +cdef cudaError_t _cudaGraphNodeGetLocalId(cudaGraphNode_t hNode, unsigned int* nodeId) except ?cudaErrorCallRequiresNewerDriver nogil + +cdef cudaError_t _cudaGraphNodeGetToolsId(cudaGraphNode_t hNode, unsigned long long* toolsNodeId) except ?cudaErrorCallRequiresNewerDriver nogil + +cdef cudaError_t _cudaGraphGetId(cudaGraph_t hGraph, unsigned int* graphID) except ?cudaErrorCallRequiresNewerDriver nogil + +cdef cudaError_t _cudaGraphExecGetId(cudaGraphExec_t hGraphExec, unsigned int* graphID) except ?cudaErrorCallRequiresNewerDriver nogil + +cdef cudaError_t _cudaGraphGetNodes(cudaGraph_t graph, cudaGraphNode_t* nodes, size_t* numNodes) except ?cudaErrorCallRequiresNewerDriver nogil + +cdef cudaError_t _cudaGraphGetRootNodes(cudaGraph_t graph, cudaGraphNode_t* pRootNodes, size_t* pNumRootNodes) except ?cudaErrorCallRequiresNewerDriver nogil + +cdef cudaError_t _cudaGraphGetEdges(cudaGraph_t graph, cudaGraphNode_t* from_, cudaGraphNode_t* to, cudaGraphEdgeData* edgeData, size_t* numEdges) except ?cudaErrorCallRequiresNewerDriver nogil + +cdef cudaError_t _cudaGraphNodeGetDependencies(cudaGraphNode_t node, cudaGraphNode_t* pDependencies, cudaGraphEdgeData* edgeData, size_t* pNumDependencies) except ?cudaErrorCallRequiresNewerDriver nogil + +cdef cudaError_t _cudaGraphNodeGetDependentNodes(cudaGraphNode_t node, cudaGraphNode_t* pDependentNodes, cudaGraphEdgeData* edgeData, size_t* pNumDependentNodes) except ?cudaErrorCallRequiresNewerDriver nogil + +cdef cudaError_t _cudaGraphAddDependencies(cudaGraph_t graph, const cudaGraphNode_t* from_, const cudaGraphNode_t* to, const cudaGraphEdgeData* edgeData, size_t numDependencies) except ?cudaErrorCallRequiresNewerDriver nogil + +cdef cudaError_t _cudaGraphRemoveDependencies(cudaGraph_t graph, const cudaGraphNode_t* from_, const cudaGraphNode_t* to, const cudaGraphEdgeData* edgeData, size_t numDependencies) except ?cudaErrorCallRequiresNewerDriver nogil + +cdef cudaError_t _cudaGraphDestroyNode(cudaGraphNode_t node) except ?cudaErrorCallRequiresNewerDriver nogil + +cdef cudaError_t _cudaGraphInstantiate(cudaGraphExec_t* pGraphExec, cudaGraph_t graph, unsigned long long flags) except ?cudaErrorCallRequiresNewerDriver nogil + +cdef cudaError_t _cudaGraphInstantiateWithFlags(cudaGraphExec_t* pGraphExec, cudaGraph_t graph, unsigned long long flags) except ?cudaErrorCallRequiresNewerDriver nogil + +cdef cudaError_t _cudaGraphInstantiateWithParams(cudaGraphExec_t* pGraphExec, cudaGraph_t graph, cudaGraphInstantiateParams* instantiateParams) except ?cudaErrorCallRequiresNewerDriver nogil + +cdef cudaError_t _cudaGraphExecGetFlags(cudaGraphExec_t graphExec, unsigned long long* flags) except ?cudaErrorCallRequiresNewerDriver nogil + +cdef cudaError_t _cudaGraphExecKernelNodeSetParams(cudaGraphExec_t hGraphExec, cudaGraphNode_t node, const cudaKernelNodeParams* pNodeParams) except ?cudaErrorCallRequiresNewerDriver nogil + +cdef cudaError_t _cudaGraphExecMemcpyNodeSetParams(cudaGraphExec_t hGraphExec, cudaGraphNode_t node, const cudaMemcpy3DParms* pNodeParams) except ?cudaErrorCallRequiresNewerDriver nogil + +cdef cudaError_t _cudaGraphExecMemcpyNodeSetParams1D(cudaGraphExec_t hGraphExec, cudaGraphNode_t node, void* dst, const void* src, size_t count, cudaMemcpyKind kind) except ?cudaErrorCallRequiresNewerDriver nogil + +cdef cudaError_t _cudaGraphExecMemsetNodeSetParams(cudaGraphExec_t hGraphExec, cudaGraphNode_t node, const cudaMemsetParams* pNodeParams) except ?cudaErrorCallRequiresNewerDriver nogil + +cdef cudaError_t _cudaGraphExecHostNodeSetParams(cudaGraphExec_t hGraphExec, cudaGraphNode_t node, const cudaHostNodeParams* pNodeParams) except ?cudaErrorCallRequiresNewerDriver nogil + +cdef cudaError_t _cudaGraphExecChildGraphNodeSetParams(cudaGraphExec_t hGraphExec, cudaGraphNode_t node, cudaGraph_t childGraph) except ?cudaErrorCallRequiresNewerDriver nogil + +cdef cudaError_t _cudaGraphExecEventRecordNodeSetEvent(cudaGraphExec_t hGraphExec, cudaGraphNode_t hNode, cudaEvent_t event) except ?cudaErrorCallRequiresNewerDriver nogil + +cdef cudaError_t _cudaGraphExecEventWaitNodeSetEvent(cudaGraphExec_t hGraphExec, cudaGraphNode_t hNode, cudaEvent_t event) except ?cudaErrorCallRequiresNewerDriver nogil + +cdef cudaError_t _cudaGraphExecExternalSemaphoresSignalNodeSetParams(cudaGraphExec_t hGraphExec, cudaGraphNode_t hNode, const cudaExternalSemaphoreSignalNodeParams* nodeParams) except ?cudaErrorCallRequiresNewerDriver nogil + +cdef cudaError_t _cudaGraphExecExternalSemaphoresWaitNodeSetParams(cudaGraphExec_t hGraphExec, cudaGraphNode_t hNode, const cudaExternalSemaphoreWaitNodeParams* nodeParams) except ?cudaErrorCallRequiresNewerDriver nogil + +cdef cudaError_t _cudaGraphNodeSetEnabled(cudaGraphExec_t hGraphExec, cudaGraphNode_t hNode, unsigned int isEnabled) except ?cudaErrorCallRequiresNewerDriver nogil + +cdef cudaError_t _cudaGraphNodeGetEnabled(cudaGraphExec_t hGraphExec, cudaGraphNode_t hNode, unsigned int* isEnabled) except ?cudaErrorCallRequiresNewerDriver nogil + +cdef cudaError_t _cudaGraphExecUpdate(cudaGraphExec_t hGraphExec, cudaGraph_t hGraph, cudaGraphExecUpdateResultInfo* resultInfo) except ?cudaErrorCallRequiresNewerDriver nogil + +cdef cudaError_t _cudaGraphUpload(cudaGraphExec_t graphExec, cudaStream_t stream) except ?cudaErrorCallRequiresNewerDriver nogil + +cdef cudaError_t _cudaGraphLaunch(cudaGraphExec_t graphExec, cudaStream_t stream) except ?cudaErrorCallRequiresNewerDriver nogil + +cdef cudaError_t _cudaGraphExecDestroy(cudaGraphExec_t graphExec) except ?cudaErrorCallRequiresNewerDriver nogil + +cdef cudaError_t _cudaGraphDestroy(cudaGraph_t graph) except ?cudaErrorCallRequiresNewerDriver nogil + +cdef cudaError_t _cudaGraphDebugDotPrint(cudaGraph_t graph, const char* path, unsigned int flags) except ?cudaErrorCallRequiresNewerDriver nogil + +cdef cudaError_t _cudaUserObjectCreate(cudaUserObject_t* object_out, void* ptr, cudaHostFn_t destroy, unsigned int initialRefcount, unsigned int flags) except ?cudaErrorCallRequiresNewerDriver nogil + +cdef cudaError_t _cudaUserObjectRetain(cudaUserObject_t object, unsigned int count) except ?cudaErrorCallRequiresNewerDriver nogil + +cdef cudaError_t _cudaUserObjectRelease(cudaUserObject_t object, unsigned int count) except ?cudaErrorCallRequiresNewerDriver nogil + +cdef cudaError_t _cudaGraphRetainUserObject(cudaGraph_t graph, cudaUserObject_t object, unsigned int count, unsigned int flags) except ?cudaErrorCallRequiresNewerDriver nogil + +cdef cudaError_t _cudaGraphReleaseUserObject(cudaGraph_t graph, cudaUserObject_t object, unsigned int count) except ?cudaErrorCallRequiresNewerDriver nogil + +cdef cudaError_t _cudaGraphAddNode(cudaGraphNode_t* pGraphNode, cudaGraph_t graph, const cudaGraphNode_t* pDependencies, const cudaGraphEdgeData* dependencyData, size_t numDependencies, cudaGraphNodeParams* nodeParams) except ?cudaErrorCallRequiresNewerDriver nogil + +cdef cudaError_t _cudaGraphNodeSetParams(cudaGraphNode_t node, cudaGraphNodeParams* nodeParams) except ?cudaErrorCallRequiresNewerDriver nogil + +cdef cudaError_t _cudaGraphNodeGetParams(cudaGraphNode_t node, cudaGraphNodeParams* nodeParams) except ?cudaErrorCallRequiresNewerDriver nogil + +cdef cudaError_t _cudaGraphExecNodeSetParams(cudaGraphExec_t graphExec, cudaGraphNode_t node, cudaGraphNodeParams* nodeParams) except ?cudaErrorCallRequiresNewerDriver nogil + +cdef cudaError_t _cudaGraphConditionalHandleCreate(cudaGraphConditionalHandle* pHandle_out, cudaGraph_t graph, unsigned int defaultLaunchValue, unsigned int flags) except ?cudaErrorCallRequiresNewerDriver nogil + +cdef cudaError_t _cudaGraphConditionalHandleCreate_v2(cudaGraphConditionalHandle* pHandle_out, cudaGraph_t graph, cudaExecutionContext_t ctx, unsigned int defaultLaunchValue, unsigned int flags) except ?cudaErrorCallRequiresNewerDriver nogil + +cdef cudaError_t _cudaGetDriverEntryPoint(const char* symbol, void** funcPtr, unsigned long long flags, cudaDriverEntryPointQueryResult* driverStatus) except ?cudaErrorCallRequiresNewerDriver nogil + +cdef cudaError_t _cudaGetDriverEntryPointByVersion(const char* symbol, void** funcPtr, unsigned int cudaVersion, unsigned long long flags, cudaDriverEntryPointQueryResult* driverStatus) except ?cudaErrorCallRequiresNewerDriver nogil + +cdef cudaError_t _cudaLibraryLoadData(cudaLibrary_t* library, const void* code, cudaJitOption* jitOptions, void** jitOptionsValues, unsigned int numJitOptions, cudaLibraryOption* libraryOptions, void** libraryOptionValues, unsigned int numLibraryOptions) except ?cudaErrorCallRequiresNewerDriver nogil + +cdef cudaError_t _cudaLibraryLoadFromFile(cudaLibrary_t* library, const char* fileName, cudaJitOption* jitOptions, void** jitOptionsValues, unsigned int numJitOptions, cudaLibraryOption* libraryOptions, void** libraryOptionValues, unsigned int numLibraryOptions) except ?cudaErrorCallRequiresNewerDriver nogil + +cdef cudaError_t _cudaLibraryUnload(cudaLibrary_t library) except ?cudaErrorCallRequiresNewerDriver nogil + +cdef cudaError_t _cudaLibraryGetKernel(cudaKernel_t* pKernel, cudaLibrary_t library, const char* name) except ?cudaErrorCallRequiresNewerDriver nogil + +cdef cudaError_t _cudaLibraryGetGlobal(void** dptr, size_t* numbytes, cudaLibrary_t library, const char* name) except ?cudaErrorCallRequiresNewerDriver nogil + +cdef cudaError_t _cudaLibraryGetManaged(void** dptr, size_t* numbytes, cudaLibrary_t library, const char* name) except ?cudaErrorCallRequiresNewerDriver nogil + +cdef cudaError_t _cudaLibraryGetUnifiedFunction(void** fptr, cudaLibrary_t library, const char* symbol) except ?cudaErrorCallRequiresNewerDriver nogil + +cdef cudaError_t _cudaLibraryGetKernelCount(unsigned int* count, cudaLibrary_t lib) except ?cudaErrorCallRequiresNewerDriver nogil + +cdef cudaError_t _cudaLibraryEnumerateKernels(cudaKernel_t* kernels, unsigned int numKernels, cudaLibrary_t lib) except ?cudaErrorCallRequiresNewerDriver nogil + +cdef cudaError_t _cudaKernelSetAttributeForDevice(cudaKernel_t kernel, cudaFuncAttribute attr, int value, int device) except ?cudaErrorCallRequiresNewerDriver nogil + +cdef cudaError_t _cudaDeviceGetDevResource(int device, cudaDevResource* resource, cudaDevResourceType typename) except ?cudaErrorCallRequiresNewerDriver nogil + +cdef cudaError_t _cudaDevSmResourceSplitByCount(cudaDevResource* result, unsigned int* nbGroups, const cudaDevResource* input, cudaDevResource* remaining, unsigned int flags, unsigned int minCount) except ?cudaErrorCallRequiresNewerDriver nogil + +cdef cudaError_t _cudaDevSmResourceSplit(cudaDevResource* result, unsigned int nbGroups, const cudaDevResource* input, cudaDevResource* remainder, unsigned int flags, cudaDevSmResourceGroupParams* groupParams) except ?cudaErrorCallRequiresNewerDriver nogil + +cdef cudaError_t _cudaDevResourceGenerateDesc(cudaDevResourceDesc_t* phDesc, cudaDevResource* resources, unsigned int nbResources) except ?cudaErrorCallRequiresNewerDriver nogil + +cdef cudaError_t _cudaGreenCtxCreate(cudaExecutionContext_t* phCtx, cudaDevResourceDesc_t desc, int device, unsigned int flags) except ?cudaErrorCallRequiresNewerDriver nogil + +cdef cudaError_t _cudaExecutionCtxDestroy(cudaExecutionContext_t ctx) except ?cudaErrorCallRequiresNewerDriver nogil + +cdef cudaError_t _cudaExecutionCtxGetDevResource(cudaExecutionContext_t ctx, cudaDevResource* resource, cudaDevResourceType typename) except ?cudaErrorCallRequiresNewerDriver nogil + +cdef cudaError_t _cudaExecutionCtxGetDevice(int* device, cudaExecutionContext_t ctx) except ?cudaErrorCallRequiresNewerDriver nogil + +cdef cudaError_t _cudaExecutionCtxGetId(cudaExecutionContext_t ctx, unsigned long long* ctxId) except ?cudaErrorCallRequiresNewerDriver nogil + +cdef cudaError_t _cudaExecutionCtxStreamCreate(cudaStream_t* phStream, cudaExecutionContext_t ctx, unsigned int flags, int priority) except ?cudaErrorCallRequiresNewerDriver nogil + +cdef cudaError_t _cudaExecutionCtxSynchronize(cudaExecutionContext_t ctx) except ?cudaErrorCallRequiresNewerDriver nogil + +cdef cudaError_t _cudaStreamGetDevResource(cudaStream_t hStream, cudaDevResource* resource, cudaDevResourceType typename) except ?cudaErrorCallRequiresNewerDriver nogil + +cdef cudaError_t _cudaExecutionCtxRecordEvent(cudaExecutionContext_t ctx, cudaEvent_t event) except ?cudaErrorCallRequiresNewerDriver nogil + +cdef cudaError_t _cudaExecutionCtxWaitEvent(cudaExecutionContext_t ctx, cudaEvent_t event) except ?cudaErrorCallRequiresNewerDriver nogil + +cdef cudaError_t _cudaDeviceGetExecutionCtx(cudaExecutionContext_t* ctx, int device) except ?cudaErrorCallRequiresNewerDriver nogil + +cdef cudaError_t _cudaGetExportTable(const void** ppExportTable, const cudaUUID_t* pExportTableId) except ?cudaErrorCallRequiresNewerDriver nogil + +cdef cudaError_t _cudaGetKernel(cudaKernel_t* kernelPtr, const void* entryFuncAddr) except ?cudaErrorCallRequiresNewerDriver nogil + +cdef cudaPitchedPtr _make_cudaPitchedPtr(void* d, size_t p, size_t xsz, size_t ysz) except* nogil + +cdef cudaPos _make_cudaPos(size_t x, size_t y, size_t z) except* nogil + +cdef cudaExtent _make_cudaExtent(size_t w, size_t h, size_t d) except* nogil + +cdef cudaError_t _cudaProfilerStart() except ?cudaErrorCallRequiresNewerDriver nogil + +cdef cudaError_t _cudaProfilerStop() except ?cudaErrorCallRequiresNewerDriver nogil diff --git a/venv/lib/python3.11/site-packages/cuda/bindings/_bindings/cyruntime_ptds.cpython-311-x86_64-linux-gnu.so b/venv/lib/python3.11/site-packages/cuda/bindings/_bindings/cyruntime_ptds.cpython-311-x86_64-linux-gnu.so new file mode 100644 index 0000000000000000000000000000000000000000..39cda73c27963040ff53aa7057bb6dc02fc5b966 --- /dev/null +++ b/venv/lib/python3.11/site-packages/cuda/bindings/_bindings/cyruntime_ptds.cpython-311-x86_64-linux-gnu.so @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:9c475104a97dc3ad0187b3f73962abb4be7f502071b2a3bf969e89536a7142d7 +size 799824 diff --git a/venv/lib/python3.11/site-packages/cuda/bindings/_bindings/cyruntime_ptds.pxd b/venv/lib/python3.11/site-packages/cuda/bindings/_bindings/cyruntime_ptds.pxd new file mode 100644 index 0000000000000000000000000000000000000000..a9cbe15e77a970ad64d43573123b11d2f43aca8c --- /dev/null +++ b/venv/lib/python3.11/site-packages/cuda/bindings/_bindings/cyruntime_ptds.pxd @@ -0,0 +1,652 @@ +# SPDX-FileCopyrightText: Copyright (c) 2021-2026 NVIDIA CORPORATION & AFFILIATES. All rights reserved. +# SPDX-License-Identifier: LicenseRef-NVIDIA-SOFTWARE-LICENSE + +# This code was automatically generated with version 13.3.0, generator version 0.3.1.dev1719+g565f73f4e. Do not modify it directly. +cdef extern from "": + """ + #define CUDA_API_PER_THREAD_DEFAULT_STREAM + """ + +include "../cyruntime_types.pxi" + +cdef cudaError_t _cudaDeviceReset() except ?cudaErrorCallRequiresNewerDriver nogil + +cdef cudaError_t _cudaDeviceSynchronize() except ?cudaErrorCallRequiresNewerDriver nogil + +cdef cudaError_t _cudaDeviceSetLimit(cudaLimit limit, size_t value) except ?cudaErrorCallRequiresNewerDriver nogil + +cdef cudaError_t _cudaDeviceGetLimit(size_t* pValue, cudaLimit limit) except ?cudaErrorCallRequiresNewerDriver nogil + +cdef cudaError_t _cudaDeviceGetTexture1DLinearMaxWidth(size_t* maxWidthInElements, const cudaChannelFormatDesc* fmtDesc, int device) except ?cudaErrorCallRequiresNewerDriver nogil + +cdef cudaError_t _cudaDeviceGetCacheConfig(cudaFuncCache* pCacheConfig) except ?cudaErrorCallRequiresNewerDriver nogil + +cdef cudaError_t _cudaDeviceGetStreamPriorityRange(int* leastPriority, int* greatestPriority) except ?cudaErrorCallRequiresNewerDriver nogil + +cdef cudaError_t _cudaDeviceSetCacheConfig(cudaFuncCache cacheConfig) except ?cudaErrorCallRequiresNewerDriver nogil + +cdef cudaError_t _cudaDeviceGetByPCIBusId(int* device, const char* pciBusId) except ?cudaErrorCallRequiresNewerDriver nogil + +cdef cudaError_t _cudaDeviceGetPCIBusId(char* pciBusId, int length, int device) except ?cudaErrorCallRequiresNewerDriver nogil + +cdef cudaError_t _cudaIpcGetEventHandle(cudaIpcEventHandle_t* handle, cudaEvent_t event) except ?cudaErrorCallRequiresNewerDriver nogil + +cdef cudaError_t _cudaIpcOpenEventHandle(cudaEvent_t* event, cudaIpcEventHandle_t handle) except ?cudaErrorCallRequiresNewerDriver nogil + +cdef cudaError_t _cudaIpcGetMemHandle(cudaIpcMemHandle_t* handle, void* devPtr) except ?cudaErrorCallRequiresNewerDriver nogil + +cdef cudaError_t _cudaIpcOpenMemHandle(void** devPtr, cudaIpcMemHandle_t handle, unsigned int flags) except ?cudaErrorCallRequiresNewerDriver nogil + +cdef cudaError_t _cudaIpcCloseMemHandle(void* devPtr) except ?cudaErrorCallRequiresNewerDriver nogil + +cdef cudaError_t _cudaDeviceFlushGPUDirectRDMAWrites(cudaFlushGPUDirectRDMAWritesTarget target, cudaFlushGPUDirectRDMAWritesScope scope) except ?cudaErrorCallRequiresNewerDriver nogil + +cdef cudaError_t _cudaDeviceRegisterAsyncNotification(int device, cudaAsyncCallback callbackFunc, void* userData, cudaAsyncCallbackHandle_t* callback) except ?cudaErrorCallRequiresNewerDriver nogil + +cdef cudaError_t _cudaDeviceUnregisterAsyncNotification(int device, cudaAsyncCallbackHandle_t callback) except ?cudaErrorCallRequiresNewerDriver nogil + +cdef cudaError_t _cudaDeviceGetSharedMemConfig(cudaSharedMemConfig* pConfig) except ?cudaErrorCallRequiresNewerDriver nogil + +cdef cudaError_t _cudaDeviceSetSharedMemConfig(cudaSharedMemConfig config) except ?cudaErrorCallRequiresNewerDriver nogil + +cdef cudaError_t _cudaGetLastError() except ?cudaErrorCallRequiresNewerDriver nogil + +cdef cudaError_t _cudaPeekAtLastError() except ?cudaErrorCallRequiresNewerDriver nogil + +cdef const char* _cudaGetErrorName(cudaError_t error) except ?NULL nogil + +cdef const char* _cudaGetErrorString(cudaError_t error) except ?NULL nogil + +cdef cudaError_t _cudaGetDeviceCount(int* count) except ?cudaErrorCallRequiresNewerDriver nogil + +cdef cudaError_t _cudaGetDeviceProperties(cudaDeviceProp* prop, int device) except ?cudaErrorCallRequiresNewerDriver nogil + +cdef cudaError_t _cudaDeviceGetAttribute(int* value, cudaDeviceAttr attr, int device) except ?cudaErrorCallRequiresNewerDriver nogil + +cdef cudaError_t _cudaDeviceGetHostAtomicCapabilities(unsigned int* capabilities, const cudaAtomicOperation* operations, unsigned int count, int device) except ?cudaErrorCallRequiresNewerDriver nogil + +cdef cudaError_t _cudaDeviceGetDefaultMemPool(cudaMemPool_t* memPool, int device) except ?cudaErrorCallRequiresNewerDriver nogil + +cdef cudaError_t _cudaDeviceSetMemPool(int device, cudaMemPool_t memPool) except ?cudaErrorCallRequiresNewerDriver nogil + +cdef cudaError_t _cudaDeviceGetMemPool(cudaMemPool_t* memPool, int device) except ?cudaErrorCallRequiresNewerDriver nogil + +cdef cudaError_t _cudaDeviceGetNvSciSyncAttributes(void* nvSciSyncAttrList, int device, int flags) except ?cudaErrorCallRequiresNewerDriver nogil + +cdef cudaError_t _cudaDeviceGetP2PAttribute(int* value, cudaDeviceP2PAttr attr, int srcDevice, int dstDevice) except ?cudaErrorCallRequiresNewerDriver nogil + +cdef cudaError_t _cudaDeviceGetP2PAtomicCapabilities(unsigned int* capabilities, const cudaAtomicOperation* operations, unsigned int count, int srcDevice, int dstDevice) except ?cudaErrorCallRequiresNewerDriver nogil + +cdef cudaError_t _cudaChooseDevice(int* device, const cudaDeviceProp* prop) except ?cudaErrorCallRequiresNewerDriver nogil + +cdef cudaError_t _cudaInitDevice(int device, unsigned int deviceFlags, unsigned int flags) except ?cudaErrorCallRequiresNewerDriver nogil + +cdef cudaError_t _cudaSetDevice(int device) except ?cudaErrorCallRequiresNewerDriver nogil + +cdef cudaError_t _cudaGetDevice(int* device) except ?cudaErrorCallRequiresNewerDriver nogil + +cdef cudaError_t _cudaSetDeviceFlags(unsigned int flags) except ?cudaErrorCallRequiresNewerDriver nogil + +cdef cudaError_t _cudaGetDeviceFlags(unsigned int* flags) except ?cudaErrorCallRequiresNewerDriver nogil + +cdef cudaError_t _cudaStreamCreate(cudaStream_t* pStream) except ?cudaErrorCallRequiresNewerDriver nogil + +cdef cudaError_t _cudaStreamCreateWithFlags(cudaStream_t* pStream, unsigned int flags) except ?cudaErrorCallRequiresNewerDriver nogil + +cdef cudaError_t _cudaStreamCreateWithPriority(cudaStream_t* pStream, unsigned int flags, int priority) except ?cudaErrorCallRequiresNewerDriver nogil + +cdef cudaError_t _cudaStreamGetPriority(cudaStream_t hStream, int* priority) except ?cudaErrorCallRequiresNewerDriver nogil + +cdef cudaError_t _cudaStreamGetFlags(cudaStream_t hStream, unsigned int* flags) except ?cudaErrorCallRequiresNewerDriver nogil + +cdef cudaError_t _cudaStreamGetId(cudaStream_t hStream, unsigned long long* streamId) except ?cudaErrorCallRequiresNewerDriver nogil + +cdef cudaError_t _cudaStreamGetDevice(cudaStream_t hStream, int* device) except ?cudaErrorCallRequiresNewerDriver nogil + +cdef cudaError_t _cudaCtxResetPersistingL2Cache() except ?cudaErrorCallRequiresNewerDriver nogil + +cdef cudaError_t _cudaStreamCopyAttributes(cudaStream_t dst, cudaStream_t src) except ?cudaErrorCallRequiresNewerDriver nogil + +cdef cudaError_t _cudaStreamGetAttribute(cudaStream_t hStream, cudaStreamAttrID attr, cudaStreamAttrValue* value_out) except ?cudaErrorCallRequiresNewerDriver nogil + +cdef cudaError_t _cudaStreamSetAttribute(cudaStream_t hStream, cudaStreamAttrID attr, const cudaStreamAttrValue* value) except ?cudaErrorCallRequiresNewerDriver nogil + +cdef cudaError_t _cudaStreamDestroy(cudaStream_t stream) except ?cudaErrorCallRequiresNewerDriver nogil + +cdef cudaError_t _cudaStreamWaitEvent(cudaStream_t stream, cudaEvent_t event, unsigned int flags) except ?cudaErrorCallRequiresNewerDriver nogil + +cdef cudaError_t _cudaStreamAddCallback(cudaStream_t stream, cudaStreamCallback_t callback, void* userData, unsigned int flags) except ?cudaErrorCallRequiresNewerDriver nogil + +cdef cudaError_t _cudaStreamSynchronize(cudaStream_t stream) except ?cudaErrorCallRequiresNewerDriver nogil + +cdef cudaError_t _cudaStreamQuery(cudaStream_t stream) except ?cudaErrorCallRequiresNewerDriver nogil + +cdef cudaError_t _cudaStreamAttachMemAsync(cudaStream_t stream, void* devPtr, size_t length, unsigned int flags) except ?cudaErrorCallRequiresNewerDriver nogil + +cdef cudaError_t _cudaStreamBeginCapture(cudaStream_t stream, cudaStreamCaptureMode mode) except ?cudaErrorCallRequiresNewerDriver nogil + +cdef cudaError_t _cudaStreamBeginRecaptureToGraph(cudaStream_t stream, cudaStreamCaptureMode mode, cudaGraph_t graph, cudaGraphRecaptureCallbackData* callbackData) except ?cudaErrorCallRequiresNewerDriver nogil + +cdef cudaError_t _cudaStreamBeginCaptureToGraph(cudaStream_t stream, cudaGraph_t graph, const cudaGraphNode_t* dependencies, const cudaGraphEdgeData* dependencyData, size_t numDependencies, cudaStreamCaptureMode mode) except ?cudaErrorCallRequiresNewerDriver nogil + +cdef cudaError_t _cudaThreadExchangeStreamCaptureMode(cudaStreamCaptureMode* mode) except ?cudaErrorCallRequiresNewerDriver nogil + +cdef cudaError_t _cudaStreamEndCapture(cudaStream_t stream, cudaGraph_t* pGraph) except ?cudaErrorCallRequiresNewerDriver nogil + +cdef cudaError_t _cudaStreamIsCapturing(cudaStream_t stream, cudaStreamCaptureStatus* pCaptureStatus) except ?cudaErrorCallRequiresNewerDriver nogil + +cdef cudaError_t _cudaStreamGetCaptureInfo(cudaStream_t stream, cudaStreamCaptureStatus* captureStatus_out, unsigned long long* id_out, cudaGraph_t* graph_out, const cudaGraphNode_t** dependencies_out, const cudaGraphEdgeData** edgeData_out, size_t* numDependencies_out) except ?cudaErrorCallRequiresNewerDriver nogil + +cdef cudaError_t _cudaStreamUpdateCaptureDependencies(cudaStream_t stream, cudaGraphNode_t* dependencies, const cudaGraphEdgeData* dependencyData, size_t numDependencies, unsigned int flags) except ?cudaErrorCallRequiresNewerDriver nogil + +cdef cudaError_t _cudaEventCreate(cudaEvent_t* event) except ?cudaErrorCallRequiresNewerDriver nogil + +cdef cudaError_t _cudaEventCreateWithFlags(cudaEvent_t* event, unsigned int flags) except ?cudaErrorCallRequiresNewerDriver nogil + +cdef cudaError_t _cudaEventRecord(cudaEvent_t event, cudaStream_t stream) except ?cudaErrorCallRequiresNewerDriver nogil + +cdef cudaError_t _cudaEventRecordWithFlags(cudaEvent_t event, cudaStream_t stream, unsigned int flags) except ?cudaErrorCallRequiresNewerDriver nogil + +cdef cudaError_t _cudaEventQuery(cudaEvent_t event) except ?cudaErrorCallRequiresNewerDriver nogil + +cdef cudaError_t _cudaEventSynchronize(cudaEvent_t event) except ?cudaErrorCallRequiresNewerDriver nogil + +cdef cudaError_t _cudaEventDestroy(cudaEvent_t event) except ?cudaErrorCallRequiresNewerDriver nogil + +cdef cudaError_t _cudaEventElapsedTime(float* ms, cudaEvent_t start, cudaEvent_t end) except ?cudaErrorCallRequiresNewerDriver nogil + +cdef cudaError_t _cudaImportExternalMemory(cudaExternalMemory_t* extMem_out, const cudaExternalMemoryHandleDesc* memHandleDesc) except ?cudaErrorCallRequiresNewerDriver nogil + +cdef cudaError_t _cudaExternalMemoryGetMappedBuffer(void** devPtr, cudaExternalMemory_t extMem, const cudaExternalMemoryBufferDesc* bufferDesc) except ?cudaErrorCallRequiresNewerDriver nogil + +cdef cudaError_t _cudaExternalMemoryGetMappedMipmappedArray(cudaMipmappedArray_t* mipmap, cudaExternalMemory_t extMem, const cudaExternalMemoryMipmappedArrayDesc* mipmapDesc) except ?cudaErrorCallRequiresNewerDriver nogil + +cdef cudaError_t _cudaDestroyExternalMemory(cudaExternalMemory_t extMem) except ?cudaErrorCallRequiresNewerDriver nogil + +cdef cudaError_t _cudaImportExternalSemaphore(cudaExternalSemaphore_t* extSem_out, const cudaExternalSemaphoreHandleDesc* semHandleDesc) except ?cudaErrorCallRequiresNewerDriver nogil + +cdef cudaError_t _cudaSignalExternalSemaphoresAsync(const cudaExternalSemaphore_t* extSemArray, const cudaExternalSemaphoreSignalParams* paramsArray, unsigned int numExtSems, cudaStream_t stream) except ?cudaErrorCallRequiresNewerDriver nogil + +cdef cudaError_t _cudaWaitExternalSemaphoresAsync(const cudaExternalSemaphore_t* extSemArray, const cudaExternalSemaphoreWaitParams* paramsArray, unsigned int numExtSems, cudaStream_t stream) except ?cudaErrorCallRequiresNewerDriver nogil + +cdef cudaError_t _cudaDestroyExternalSemaphore(cudaExternalSemaphore_t extSem) except ?cudaErrorCallRequiresNewerDriver nogil + +cdef cudaError_t _cudaFuncSetCacheConfig(const void* func, cudaFuncCache cacheConfig) except ?cudaErrorCallRequiresNewerDriver nogil + +cdef cudaError_t _cudaFuncGetAttributes(cudaFuncAttributes* attr, const void* func) except ?cudaErrorCallRequiresNewerDriver nogil + +cdef cudaError_t _cudaFuncSetAttribute(const void* func, cudaFuncAttribute attr, int value) except ?cudaErrorCallRequiresNewerDriver nogil + +cdef cudaError_t _cudaFuncGetParamCount(const void* func, size_t* paramCount) except ?cudaErrorCallRequiresNewerDriver nogil + +cdef cudaError_t _cudaLaunchHostFunc(cudaStream_t stream, cudaHostFn_t fn, void* userData) except ?cudaErrorCallRequiresNewerDriver nogil + +cdef cudaError_t _cudaLaunchHostFunc_v2(cudaStream_t stream, cudaHostFn_t fn, void* userData, unsigned int syncMode) except ?cudaErrorCallRequiresNewerDriver nogil + +cdef cudaError_t _cudaFuncSetSharedMemConfig(const void* func, cudaSharedMemConfig config) except ?cudaErrorCallRequiresNewerDriver nogil + +cdef cudaError_t _cudaOccupancyMaxActiveBlocksPerMultiprocessor(int* numBlocks, const void* func, int blockSize, size_t dynamicSMemSize) except ?cudaErrorCallRequiresNewerDriver nogil + +cdef cudaError_t _cudaOccupancyAvailableDynamicSMemPerBlock(size_t* dynamicSmemSize, const void* func, int numBlocks, int blockSize) except ?cudaErrorCallRequiresNewerDriver nogil + +cdef cudaError_t _cudaOccupancyMaxActiveBlocksPerMultiprocessorWithFlags(int* numBlocks, const void* func, int blockSize, size_t dynamicSMemSize, unsigned int flags) except ?cudaErrorCallRequiresNewerDriver nogil + +cdef cudaError_t _cudaMallocManaged(void** devPtr, size_t size, unsigned int flags) except ?cudaErrorCallRequiresNewerDriver nogil + +cdef cudaError_t _cudaMalloc(void** devPtr, size_t size) except ?cudaErrorCallRequiresNewerDriver nogil + +cdef cudaError_t _cudaMallocHost(void** ptr, size_t size) except ?cudaErrorCallRequiresNewerDriver nogil + +cdef cudaError_t _cudaMallocPitch(void** devPtr, size_t* pitch, size_t width, size_t height) except ?cudaErrorCallRequiresNewerDriver nogil + +cdef cudaError_t _cudaMallocArray(cudaArray_t* array, const cudaChannelFormatDesc* desc, size_t width, size_t height, unsigned int flags) except ?cudaErrorCallRequiresNewerDriver nogil + +cdef cudaError_t _cudaFree(void* devPtr) except ?cudaErrorCallRequiresNewerDriver nogil + +cdef cudaError_t _cudaFreeHost(void* ptr) except ?cudaErrorCallRequiresNewerDriver nogil + +cdef cudaError_t _cudaFreeArray(cudaArray_t array) except ?cudaErrorCallRequiresNewerDriver nogil + +cdef cudaError_t _cudaFreeMipmappedArray(cudaMipmappedArray_t mipmappedArray) except ?cudaErrorCallRequiresNewerDriver nogil + +cdef cudaError_t _cudaHostAlloc(void** pHost, size_t size, unsigned int flags) except ?cudaErrorCallRequiresNewerDriver nogil + +cdef cudaError_t _cudaHostRegister(void* ptr, size_t size, unsigned int flags) except ?cudaErrorCallRequiresNewerDriver nogil + +cdef cudaError_t _cudaHostUnregister(void* ptr) except ?cudaErrorCallRequiresNewerDriver nogil + +cdef cudaError_t _cudaHostGetDevicePointer(void** pDevice, void* pHost, unsigned int flags) except ?cudaErrorCallRequiresNewerDriver nogil + +cdef cudaError_t _cudaHostGetFlags(unsigned int* pFlags, void* pHost) except ?cudaErrorCallRequiresNewerDriver nogil + +cdef cudaError_t _cudaMalloc3D(cudaPitchedPtr* pitchedDevPtr, cudaExtent extent) except ?cudaErrorCallRequiresNewerDriver nogil + +cdef cudaError_t _cudaMalloc3DArray(cudaArray_t* array, const cudaChannelFormatDesc* desc, cudaExtent extent, unsigned int flags) except ?cudaErrorCallRequiresNewerDriver nogil + +cdef cudaError_t _cudaMallocMipmappedArray(cudaMipmappedArray_t* mipmappedArray, const cudaChannelFormatDesc* desc, cudaExtent extent, unsigned int numLevels, unsigned int flags) except ?cudaErrorCallRequiresNewerDriver nogil + +cdef cudaError_t _cudaGetMipmappedArrayLevel(cudaArray_t* levelArray, cudaMipmappedArray_const_t mipmappedArray, unsigned int level) except ?cudaErrorCallRequiresNewerDriver nogil + +cdef cudaError_t _cudaMemcpy3D(const cudaMemcpy3DParms* p) except ?cudaErrorCallRequiresNewerDriver nogil + +cdef cudaError_t _cudaMemcpy3DPeer(const cudaMemcpy3DPeerParms* p) except ?cudaErrorCallRequiresNewerDriver nogil + +cdef cudaError_t _cudaMemcpy3DAsync(const cudaMemcpy3DParms* p, cudaStream_t stream) except ?cudaErrorCallRequiresNewerDriver nogil + +cdef cudaError_t _cudaMemcpy3DPeerAsync(const cudaMemcpy3DPeerParms* p, cudaStream_t stream) except ?cudaErrorCallRequiresNewerDriver nogil + +cdef cudaError_t _cudaMemGetInfo(size_t* free, size_t* total) except ?cudaErrorCallRequiresNewerDriver nogil + +cdef cudaError_t _cudaArrayGetInfo(cudaChannelFormatDesc* desc, cudaExtent* extent, unsigned int* flags, cudaArray_t array) except ?cudaErrorCallRequiresNewerDriver nogil + +cdef cudaError_t _cudaArrayGetPlane(cudaArray_t* pPlaneArray, cudaArray_t hArray, unsigned int planeIdx) except ?cudaErrorCallRequiresNewerDriver nogil + +cdef cudaError_t _cudaArrayGetMemoryRequirements(cudaArrayMemoryRequirements* memoryRequirements, cudaArray_t array, int device) except ?cudaErrorCallRequiresNewerDriver nogil + +cdef cudaError_t _cudaMipmappedArrayGetMemoryRequirements(cudaArrayMemoryRequirements* memoryRequirements, cudaMipmappedArray_t mipmap, int device) except ?cudaErrorCallRequiresNewerDriver nogil + +cdef cudaError_t _cudaArrayGetSparseProperties(cudaArraySparseProperties* sparseProperties, cudaArray_t array) except ?cudaErrorCallRequiresNewerDriver nogil + +cdef cudaError_t _cudaMipmappedArrayGetSparseProperties(cudaArraySparseProperties* sparseProperties, cudaMipmappedArray_t mipmap) except ?cudaErrorCallRequiresNewerDriver nogil + +cdef cudaError_t _cudaMemcpy(void* dst, const void* src, size_t count, cudaMemcpyKind kind) except ?cudaErrorCallRequiresNewerDriver nogil + +cdef cudaError_t _cudaMemcpyPeer(void* dst, int dstDevice, const void* src, int srcDevice, size_t count) except ?cudaErrorCallRequiresNewerDriver nogil + +cdef cudaError_t _cudaMemcpy2D(void* dst, size_t dpitch, const void* src, size_t spitch, size_t width, size_t height, cudaMemcpyKind kind) except ?cudaErrorCallRequiresNewerDriver nogil + +cdef cudaError_t _cudaMemcpy2DToArray(cudaArray_t dst, size_t wOffset, size_t hOffset, const void* src, size_t spitch, size_t width, size_t height, cudaMemcpyKind kind) except ?cudaErrorCallRequiresNewerDriver nogil + +cdef cudaError_t _cudaMemcpy2DFromArray(void* dst, size_t dpitch, cudaArray_const_t src, size_t wOffset, size_t hOffset, size_t width, size_t height, cudaMemcpyKind kind) except ?cudaErrorCallRequiresNewerDriver nogil + +cdef cudaError_t _cudaMemcpy2DArrayToArray(cudaArray_t dst, size_t wOffsetDst, size_t hOffsetDst, cudaArray_const_t src, size_t wOffsetSrc, size_t hOffsetSrc, size_t width, size_t height, cudaMemcpyKind kind) except ?cudaErrorCallRequiresNewerDriver nogil + +cdef cudaError_t _cudaMemcpyAsync(void* dst, const void* src, size_t count, cudaMemcpyKind kind, cudaStream_t stream) except ?cudaErrorCallRequiresNewerDriver nogil + +cdef cudaError_t _cudaMemcpyPeerAsync(void* dst, int dstDevice, const void* src, int srcDevice, size_t count, cudaStream_t stream) except ?cudaErrorCallRequiresNewerDriver nogil + +cdef cudaError_t _cudaMemcpyBatchAsync(const void** dsts, const void** srcs, const size_t* sizes, size_t count, cudaMemcpyAttributes* attrs, size_t* attrsIdxs, size_t numAttrs, cudaStream_t stream) except ?cudaErrorCallRequiresNewerDriver nogil + +cdef cudaError_t _cudaMemcpy3DBatchAsync(size_t numOps, cudaMemcpy3DBatchOp* opList, unsigned long long flags, cudaStream_t stream) except ?cudaErrorCallRequiresNewerDriver nogil + +cdef cudaError_t _cudaMemcpyWithAttributesAsync(void* dst, const void* src, size_t size, cudaMemcpyAttributes* attr, cudaStream_t stream) except ?cudaErrorCallRequiresNewerDriver nogil + +cdef cudaError_t _cudaMemcpy3DWithAttributesAsync(cudaMemcpy3DBatchOp* op, unsigned long long flags, cudaStream_t stream) except ?cudaErrorCallRequiresNewerDriver nogil + +cdef cudaError_t _cudaMemcpy2DAsync(void* dst, size_t dpitch, const void* src, size_t spitch, size_t width, size_t height, cudaMemcpyKind kind, cudaStream_t stream) except ?cudaErrorCallRequiresNewerDriver nogil + +cdef cudaError_t _cudaMemcpy2DToArrayAsync(cudaArray_t dst, size_t wOffset, size_t hOffset, const void* src, size_t spitch, size_t width, size_t height, cudaMemcpyKind kind, cudaStream_t stream) except ?cudaErrorCallRequiresNewerDriver nogil + +cdef cudaError_t _cudaMemcpy2DFromArrayAsync(void* dst, size_t dpitch, cudaArray_const_t src, size_t wOffset, size_t hOffset, size_t width, size_t height, cudaMemcpyKind kind, cudaStream_t stream) except ?cudaErrorCallRequiresNewerDriver nogil + +cdef cudaError_t _cudaMemset(void* devPtr, int value, size_t count) except ?cudaErrorCallRequiresNewerDriver nogil + +cdef cudaError_t _cudaMemset2D(void* devPtr, size_t pitch, int value, size_t width, size_t height) except ?cudaErrorCallRequiresNewerDriver nogil + +cdef cudaError_t _cudaMemset3D(cudaPitchedPtr pitchedDevPtr, int value, cudaExtent extent) except ?cudaErrorCallRequiresNewerDriver nogil + +cdef cudaError_t _cudaMemsetAsync(void* devPtr, int value, size_t count, cudaStream_t stream) except ?cudaErrorCallRequiresNewerDriver nogil + +cdef cudaError_t _cudaMemset2DAsync(void* devPtr, size_t pitch, int value, size_t width, size_t height, cudaStream_t stream) except ?cudaErrorCallRequiresNewerDriver nogil + +cdef cudaError_t _cudaMemset3DAsync(cudaPitchedPtr pitchedDevPtr, int value, cudaExtent extent, cudaStream_t stream) except ?cudaErrorCallRequiresNewerDriver nogil + +cdef cudaError_t _cudaMemPrefetchAsync(const void* devPtr, size_t count, cudaMemLocation location, unsigned int flags, cudaStream_t stream) except ?cudaErrorCallRequiresNewerDriver nogil + +cdef cudaError_t _cudaMemPrefetchBatchAsync(void** dptrs, size_t* sizes, size_t count, cudaMemLocation* prefetchLocs, size_t* prefetchLocIdxs, size_t numPrefetchLocs, unsigned long long flags, cudaStream_t stream) except ?cudaErrorCallRequiresNewerDriver nogil + +cdef cudaError_t _cudaMemDiscardBatchAsync(void** dptrs, size_t* sizes, size_t count, unsigned long long flags, cudaStream_t stream) except ?cudaErrorCallRequiresNewerDriver nogil + +cdef cudaError_t _cudaMemDiscardAndPrefetchBatchAsync(void** dptrs, size_t* sizes, size_t count, cudaMemLocation* prefetchLocs, size_t* prefetchLocIdxs, size_t numPrefetchLocs, unsigned long long flags, cudaStream_t stream) except ?cudaErrorCallRequiresNewerDriver nogil + +cdef cudaError_t _cudaMemAdvise(const void* devPtr, size_t count, cudaMemoryAdvise advice, cudaMemLocation location) except ?cudaErrorCallRequiresNewerDriver nogil + +cdef cudaError_t _cudaMemRangeGetAttribute(void* data, size_t dataSize, cudaMemRangeAttribute attribute, const void* devPtr, size_t count) except ?cudaErrorCallRequiresNewerDriver nogil + +cdef cudaError_t _cudaMemRangeGetAttributes(void** data, size_t* dataSizes, cudaMemRangeAttribute* attributes, size_t numAttributes, const void* devPtr, size_t count) except ?cudaErrorCallRequiresNewerDriver nogil + +cdef cudaError_t _cudaMemcpyToArray(cudaArray_t dst, size_t wOffset, size_t hOffset, const void* src, size_t count, cudaMemcpyKind kind) except ?cudaErrorCallRequiresNewerDriver nogil + +cdef cudaError_t _cudaMemcpyFromArray(void* dst, cudaArray_const_t src, size_t wOffset, size_t hOffset, size_t count, cudaMemcpyKind kind) except ?cudaErrorCallRequiresNewerDriver nogil + +cdef cudaError_t _cudaMemcpyArrayToArray(cudaArray_t dst, size_t wOffsetDst, size_t hOffsetDst, cudaArray_const_t src, size_t wOffsetSrc, size_t hOffsetSrc, size_t count, cudaMemcpyKind kind) except ?cudaErrorCallRequiresNewerDriver nogil + +cdef cudaError_t _cudaMemcpyToArrayAsync(cudaArray_t dst, size_t wOffset, size_t hOffset, const void* src, size_t count, cudaMemcpyKind kind, cudaStream_t stream) except ?cudaErrorCallRequiresNewerDriver nogil + +cdef cudaError_t _cudaMemcpyFromArrayAsync(void* dst, cudaArray_const_t src, size_t wOffset, size_t hOffset, size_t count, cudaMemcpyKind kind, cudaStream_t stream) except ?cudaErrorCallRequiresNewerDriver nogil + +cdef cudaError_t _cudaMallocAsync(void** devPtr, size_t size, cudaStream_t hStream) except ?cudaErrorCallRequiresNewerDriver nogil + +cdef cudaError_t _cudaFreeAsync(void* devPtr, cudaStream_t hStream) except ?cudaErrorCallRequiresNewerDriver nogil + +cdef cudaError_t _cudaMemPoolTrimTo(cudaMemPool_t memPool, size_t minBytesToKeep) except ?cudaErrorCallRequiresNewerDriver nogil + +cdef cudaError_t _cudaMemPoolSetAttribute(cudaMemPool_t memPool, cudaMemPoolAttr attr, void* value) except ?cudaErrorCallRequiresNewerDriver nogil + +cdef cudaError_t _cudaMemPoolGetAttribute(cudaMemPool_t memPool, cudaMemPoolAttr attr, void* value) except ?cudaErrorCallRequiresNewerDriver nogil + +cdef cudaError_t _cudaMemPoolSetAccess(cudaMemPool_t memPool, const cudaMemAccessDesc* descList, size_t count) except ?cudaErrorCallRequiresNewerDriver nogil + +cdef cudaError_t _cudaMemPoolGetAccess(cudaMemAccessFlags* flags, cudaMemPool_t memPool, cudaMemLocation* location) except ?cudaErrorCallRequiresNewerDriver nogil + +cdef cudaError_t _cudaMemPoolCreate(cudaMemPool_t* memPool, const cudaMemPoolProps* poolProps) except ?cudaErrorCallRequiresNewerDriver nogil + +cdef cudaError_t _cudaMemPoolDestroy(cudaMemPool_t memPool) except ?cudaErrorCallRequiresNewerDriver nogil + +cdef cudaError_t _cudaMemGetDefaultMemPool(cudaMemPool_t* memPool, cudaMemLocation* location, cudaMemAllocationType typename) except ?cudaErrorCallRequiresNewerDriver nogil + +cdef cudaError_t _cudaMemGetMemPool(cudaMemPool_t* memPool, cudaMemLocation* location, cudaMemAllocationType typename) except ?cudaErrorCallRequiresNewerDriver nogil + +cdef cudaError_t _cudaMemSetMemPool(cudaMemLocation* location, cudaMemAllocationType typename, cudaMemPool_t memPool) except ?cudaErrorCallRequiresNewerDriver nogil + +cdef cudaError_t _cudaMallocFromPoolAsync(void** ptr, size_t size, cudaMemPool_t memPool, cudaStream_t stream) except ?cudaErrorCallRequiresNewerDriver nogil + +cdef cudaError_t _cudaMemPoolExportToShareableHandle(void* shareableHandle, cudaMemPool_t memPool, cudaMemAllocationHandleType handleType, unsigned int flags) except ?cudaErrorCallRequiresNewerDriver nogil + +cdef cudaError_t _cudaMemPoolImportFromShareableHandle(cudaMemPool_t* memPool, void* shareableHandle, cudaMemAllocationHandleType handleType, unsigned int flags) except ?cudaErrorCallRequiresNewerDriver nogil + +cdef cudaError_t _cudaMemPoolExportPointer(cudaMemPoolPtrExportData* exportData, void* ptr) except ?cudaErrorCallRequiresNewerDriver nogil + +cdef cudaError_t _cudaMemPoolImportPointer(void** ptr, cudaMemPool_t memPool, cudaMemPoolPtrExportData* exportData) except ?cudaErrorCallRequiresNewerDriver nogil + +cdef cudaError_t _cudaPointerGetAttributes(cudaPointerAttributes* attributes, const void* ptr) except ?cudaErrorCallRequiresNewerDriver nogil + +cdef cudaError_t _cudaDeviceCanAccessPeer(int* canAccessPeer, int device, int peerDevice) except ?cudaErrorCallRequiresNewerDriver nogil + +cdef cudaError_t _cudaDeviceEnablePeerAccess(int peerDevice, unsigned int flags) except ?cudaErrorCallRequiresNewerDriver nogil + +cdef cudaError_t _cudaDeviceDisablePeerAccess(int peerDevice) except ?cudaErrorCallRequiresNewerDriver nogil + +cdef cudaError_t _cudaGraphicsUnregisterResource(cudaGraphicsResource_t resource) except ?cudaErrorCallRequiresNewerDriver nogil + +cdef cudaError_t _cudaGraphicsResourceSetMapFlags(cudaGraphicsResource_t resource, unsigned int flags) except ?cudaErrorCallRequiresNewerDriver nogil + +cdef cudaError_t _cudaGraphicsMapResources(int count, cudaGraphicsResource_t* resources, cudaStream_t stream) except ?cudaErrorCallRequiresNewerDriver nogil + +cdef cudaError_t _cudaGraphicsUnmapResources(int count, cudaGraphicsResource_t* resources, cudaStream_t stream) except ?cudaErrorCallRequiresNewerDriver nogil + +cdef cudaError_t _cudaGraphicsResourceGetMappedPointer(void** devPtr, size_t* size, cudaGraphicsResource_t resource) except ?cudaErrorCallRequiresNewerDriver nogil + +cdef cudaError_t _cudaGraphicsSubResourceGetMappedArray(cudaArray_t* array, cudaGraphicsResource_t resource, unsigned int arrayIndex, unsigned int mipLevel) except ?cudaErrorCallRequiresNewerDriver nogil + +cdef cudaError_t _cudaGraphicsResourceGetMappedMipmappedArray(cudaMipmappedArray_t* mipmappedArray, cudaGraphicsResource_t resource) except ?cudaErrorCallRequiresNewerDriver nogil + +cdef cudaError_t _cudaGetChannelDesc(cudaChannelFormatDesc* desc, cudaArray_const_t array) except ?cudaErrorCallRequiresNewerDriver nogil + +cdef cudaChannelFormatDesc _cudaCreateChannelDesc(int x, int y, int z, int w, cudaChannelFormatKind f) except* nogil + +cdef cudaError_t _cudaCreateTextureObject(cudaTextureObject_t* pTexObject, const cudaResourceDesc* pResDesc, const cudaTextureDesc* pTexDesc, const cudaResourceViewDesc* pResViewDesc) except ?cudaErrorCallRequiresNewerDriver nogil + +cdef cudaError_t _cudaDestroyTextureObject(cudaTextureObject_t texObject) except ?cudaErrorCallRequiresNewerDriver nogil + +cdef cudaError_t _cudaGetTextureObjectResourceDesc(cudaResourceDesc* pResDesc, cudaTextureObject_t texObject) except ?cudaErrorCallRequiresNewerDriver nogil + +cdef cudaError_t _cudaGetTextureObjectTextureDesc(cudaTextureDesc* pTexDesc, cudaTextureObject_t texObject) except ?cudaErrorCallRequiresNewerDriver nogil + +cdef cudaError_t _cudaGetTextureObjectResourceViewDesc(cudaResourceViewDesc* pResViewDesc, cudaTextureObject_t texObject) except ?cudaErrorCallRequiresNewerDriver nogil + +cdef cudaError_t _cudaCreateSurfaceObject(cudaSurfaceObject_t* pSurfObject, const cudaResourceDesc* pResDesc) except ?cudaErrorCallRequiresNewerDriver nogil + +cdef cudaError_t _cudaDestroySurfaceObject(cudaSurfaceObject_t surfObject) except ?cudaErrorCallRequiresNewerDriver nogil + +cdef cudaError_t _cudaGetSurfaceObjectResourceDesc(cudaResourceDesc* pResDesc, cudaSurfaceObject_t surfObject) except ?cudaErrorCallRequiresNewerDriver nogil + +cdef cudaError_t _cudaDriverGetVersion(int* driverVersion) except ?cudaErrorCallRequiresNewerDriver nogil + +cdef cudaError_t _cudaRuntimeGetVersion(int* runtimeVersion) except ?cudaErrorCallRequiresNewerDriver nogil + +cdef cudaError_t _cudaLogsRegisterCallback(cudaLogsCallback_t callbackFunc, void* userData, cudaLogsCallbackHandle* callback_out) except ?cudaErrorCallRequiresNewerDriver nogil + +cdef cudaError_t _cudaLogsUnregisterCallback(cudaLogsCallbackHandle callback) except ?cudaErrorCallRequiresNewerDriver nogil + +cdef cudaError_t _cudaLogsCurrent(cudaLogIterator* iterator_out, unsigned int flags) except ?cudaErrorCallRequiresNewerDriver nogil + +cdef cudaError_t _cudaLogsDumpToFile(cudaLogIterator* iterator, const char* pathToFile, unsigned int flags) except ?cudaErrorCallRequiresNewerDriver nogil + +cdef cudaError_t _cudaLogsDumpToMemory(cudaLogIterator* iterator, char* buffer, size_t* size, unsigned int flags) except ?cudaErrorCallRequiresNewerDriver nogil + +cdef cudaError_t _cudaGraphCreate(cudaGraph_t* pGraph, unsigned int flags) except ?cudaErrorCallRequiresNewerDriver nogil + +cdef cudaError_t _cudaGraphAddKernelNode(cudaGraphNode_t* pGraphNode, cudaGraph_t graph, const cudaGraphNode_t* pDependencies, size_t numDependencies, const cudaKernelNodeParams* pNodeParams) except ?cudaErrorCallRequiresNewerDriver nogil + +cdef cudaError_t _cudaGraphKernelNodeGetParams(cudaGraphNode_t node, cudaKernelNodeParams* pNodeParams) except ?cudaErrorCallRequiresNewerDriver nogil + +cdef cudaError_t _cudaGraphKernelNodeSetParams(cudaGraphNode_t node, const cudaKernelNodeParams* pNodeParams) except ?cudaErrorCallRequiresNewerDriver nogil + +cdef cudaError_t _cudaGraphKernelNodeCopyAttributes(cudaGraphNode_t hDst, cudaGraphNode_t hSrc) except ?cudaErrorCallRequiresNewerDriver nogil + +cdef cudaError_t _cudaGraphKernelNodeGetAttribute(cudaGraphNode_t hNode, cudaKernelNodeAttrID attr, cudaKernelNodeAttrValue* value_out) except ?cudaErrorCallRequiresNewerDriver nogil + +cdef cudaError_t _cudaGraphKernelNodeSetAttribute(cudaGraphNode_t hNode, cudaKernelNodeAttrID attr, const cudaKernelNodeAttrValue* value) except ?cudaErrorCallRequiresNewerDriver nogil + +cdef cudaError_t _cudaGraphAddMemcpyNode(cudaGraphNode_t* pGraphNode, cudaGraph_t graph, const cudaGraphNode_t* pDependencies, size_t numDependencies, const cudaMemcpy3DParms* pCopyParams) except ?cudaErrorCallRequiresNewerDriver nogil + +cdef cudaError_t _cudaGraphAddMemcpyNode1D(cudaGraphNode_t* pGraphNode, cudaGraph_t graph, const cudaGraphNode_t* pDependencies, size_t numDependencies, void* dst, const void* src, size_t count, cudaMemcpyKind kind) except ?cudaErrorCallRequiresNewerDriver nogil + +cdef cudaError_t _cudaGraphMemcpyNodeGetParams(cudaGraphNode_t node, cudaMemcpy3DParms* pNodeParams) except ?cudaErrorCallRequiresNewerDriver nogil + +cdef cudaError_t _cudaGraphMemcpyNodeSetParams(cudaGraphNode_t node, const cudaMemcpy3DParms* pNodeParams) except ?cudaErrorCallRequiresNewerDriver nogil + +cdef cudaError_t _cudaGraphMemcpyNodeSetParams1D(cudaGraphNode_t node, void* dst, const void* src, size_t count, cudaMemcpyKind kind) except ?cudaErrorCallRequiresNewerDriver nogil + +cdef cudaError_t _cudaGraphAddMemsetNode(cudaGraphNode_t* pGraphNode, cudaGraph_t graph, const cudaGraphNode_t* pDependencies, size_t numDependencies, const cudaMemsetParams* pMemsetParams) except ?cudaErrorCallRequiresNewerDriver nogil + +cdef cudaError_t _cudaGraphMemsetNodeGetParams(cudaGraphNode_t node, cudaMemsetParams* pNodeParams) except ?cudaErrorCallRequiresNewerDriver nogil + +cdef cudaError_t _cudaGraphMemsetNodeSetParams(cudaGraphNode_t node, const cudaMemsetParams* pNodeParams) except ?cudaErrorCallRequiresNewerDriver nogil + +cdef cudaError_t _cudaGraphAddHostNode(cudaGraphNode_t* pGraphNode, cudaGraph_t graph, const cudaGraphNode_t* pDependencies, size_t numDependencies, const cudaHostNodeParams* pNodeParams) except ?cudaErrorCallRequiresNewerDriver nogil + +cdef cudaError_t _cudaGraphHostNodeGetParams(cudaGraphNode_t node, cudaHostNodeParams* pNodeParams) except ?cudaErrorCallRequiresNewerDriver nogil + +cdef cudaError_t _cudaGraphHostNodeSetParams(cudaGraphNode_t node, const cudaHostNodeParams* pNodeParams) except ?cudaErrorCallRequiresNewerDriver nogil + +cdef cudaError_t _cudaGraphAddChildGraphNode(cudaGraphNode_t* pGraphNode, cudaGraph_t graph, const cudaGraphNode_t* pDependencies, size_t numDependencies, cudaGraph_t childGraph) except ?cudaErrorCallRequiresNewerDriver nogil + +cdef cudaError_t _cudaGraphChildGraphNodeGetGraph(cudaGraphNode_t node, cudaGraph_t* pGraph) except ?cudaErrorCallRequiresNewerDriver nogil + +cdef cudaError_t _cudaGraphAddEmptyNode(cudaGraphNode_t* pGraphNode, cudaGraph_t graph, const cudaGraphNode_t* pDependencies, size_t numDependencies) except ?cudaErrorCallRequiresNewerDriver nogil + +cdef cudaError_t _cudaGraphAddEventRecordNode(cudaGraphNode_t* pGraphNode, cudaGraph_t graph, const cudaGraphNode_t* pDependencies, size_t numDependencies, cudaEvent_t event) except ?cudaErrorCallRequiresNewerDriver nogil + +cdef cudaError_t _cudaGraphEventRecordNodeGetEvent(cudaGraphNode_t node, cudaEvent_t* event_out) except ?cudaErrorCallRequiresNewerDriver nogil + +cdef cudaError_t _cudaGraphEventRecordNodeSetEvent(cudaGraphNode_t node, cudaEvent_t event) except ?cudaErrorCallRequiresNewerDriver nogil + +cdef cudaError_t _cudaGraphAddEventWaitNode(cudaGraphNode_t* pGraphNode, cudaGraph_t graph, const cudaGraphNode_t* pDependencies, size_t numDependencies, cudaEvent_t event) except ?cudaErrorCallRequiresNewerDriver nogil + +cdef cudaError_t _cudaGraphEventWaitNodeGetEvent(cudaGraphNode_t node, cudaEvent_t* event_out) except ?cudaErrorCallRequiresNewerDriver nogil + +cdef cudaError_t _cudaGraphEventWaitNodeSetEvent(cudaGraphNode_t node, cudaEvent_t event) except ?cudaErrorCallRequiresNewerDriver nogil + +cdef cudaError_t _cudaGraphAddExternalSemaphoresSignalNode(cudaGraphNode_t* pGraphNode, cudaGraph_t graph, const cudaGraphNode_t* pDependencies, size_t numDependencies, const cudaExternalSemaphoreSignalNodeParams* nodeParams) except ?cudaErrorCallRequiresNewerDriver nogil + +cdef cudaError_t _cudaGraphExternalSemaphoresSignalNodeGetParams(cudaGraphNode_t hNode, cudaExternalSemaphoreSignalNodeParams* params_out) except ?cudaErrorCallRequiresNewerDriver nogil + +cdef cudaError_t _cudaGraphExternalSemaphoresSignalNodeSetParams(cudaGraphNode_t hNode, const cudaExternalSemaphoreSignalNodeParams* nodeParams) except ?cudaErrorCallRequiresNewerDriver nogil + +cdef cudaError_t _cudaGraphAddExternalSemaphoresWaitNode(cudaGraphNode_t* pGraphNode, cudaGraph_t graph, const cudaGraphNode_t* pDependencies, size_t numDependencies, const cudaExternalSemaphoreWaitNodeParams* nodeParams) except ?cudaErrorCallRequiresNewerDriver nogil + +cdef cudaError_t _cudaGraphExternalSemaphoresWaitNodeGetParams(cudaGraphNode_t hNode, cudaExternalSemaphoreWaitNodeParams* params_out) except ?cudaErrorCallRequiresNewerDriver nogil + +cdef cudaError_t _cudaGraphExternalSemaphoresWaitNodeSetParams(cudaGraphNode_t hNode, const cudaExternalSemaphoreWaitNodeParams* nodeParams) except ?cudaErrorCallRequiresNewerDriver nogil + +cdef cudaError_t _cudaGraphAddMemAllocNode(cudaGraphNode_t* pGraphNode, cudaGraph_t graph, const cudaGraphNode_t* pDependencies, size_t numDependencies, cudaMemAllocNodeParams* nodeParams) except ?cudaErrorCallRequiresNewerDriver nogil + +cdef cudaError_t _cudaGraphMemAllocNodeGetParams(cudaGraphNode_t node, cudaMemAllocNodeParams* params_out) except ?cudaErrorCallRequiresNewerDriver nogil + +cdef cudaError_t _cudaGraphAddMemFreeNode(cudaGraphNode_t* pGraphNode, cudaGraph_t graph, const cudaGraphNode_t* pDependencies, size_t numDependencies, void* dptr) except ?cudaErrorCallRequiresNewerDriver nogil + +cdef cudaError_t _cudaGraphMemFreeNodeGetParams(cudaGraphNode_t node, void* dptr_out) except ?cudaErrorCallRequiresNewerDriver nogil + +cdef cudaError_t _cudaDeviceGraphMemTrim(int device) except ?cudaErrorCallRequiresNewerDriver nogil + +cdef cudaError_t _cudaDeviceGetGraphMemAttribute(int device, cudaGraphMemAttributeType attr, void* value) except ?cudaErrorCallRequiresNewerDriver nogil + +cdef cudaError_t _cudaDeviceSetGraphMemAttribute(int device, cudaGraphMemAttributeType attr, void* value) except ?cudaErrorCallRequiresNewerDriver nogil + +cdef cudaError_t _cudaGraphClone(cudaGraph_t* pGraphClone, cudaGraph_t originalGraph) except ?cudaErrorCallRequiresNewerDriver nogil + +cdef cudaError_t _cudaGraphNodeFindInClone(cudaGraphNode_t* pNode, cudaGraphNode_t originalNode, cudaGraph_t clonedGraph) except ?cudaErrorCallRequiresNewerDriver nogil + +cdef cudaError_t _cudaGraphNodeGetType(cudaGraphNode_t node, cudaGraphNodeType* pType) except ?cudaErrorCallRequiresNewerDriver nogil + +cdef cudaError_t _cudaGraphNodeGetContainingGraph(cudaGraphNode_t hNode, cudaGraph_t* phGraph) except ?cudaErrorCallRequiresNewerDriver nogil + +cdef cudaError_t _cudaGraphNodeGetLocalId(cudaGraphNode_t hNode, unsigned int* nodeId) except ?cudaErrorCallRequiresNewerDriver nogil + +cdef cudaError_t _cudaGraphNodeGetToolsId(cudaGraphNode_t hNode, unsigned long long* toolsNodeId) except ?cudaErrorCallRequiresNewerDriver nogil + +cdef cudaError_t _cudaGraphGetId(cudaGraph_t hGraph, unsigned int* graphID) except ?cudaErrorCallRequiresNewerDriver nogil + +cdef cudaError_t _cudaGraphExecGetId(cudaGraphExec_t hGraphExec, unsigned int* graphID) except ?cudaErrorCallRequiresNewerDriver nogil + +cdef cudaError_t _cudaGraphGetNodes(cudaGraph_t graph, cudaGraphNode_t* nodes, size_t* numNodes) except ?cudaErrorCallRequiresNewerDriver nogil + +cdef cudaError_t _cudaGraphGetRootNodes(cudaGraph_t graph, cudaGraphNode_t* pRootNodes, size_t* pNumRootNodes) except ?cudaErrorCallRequiresNewerDriver nogil + +cdef cudaError_t _cudaGraphGetEdges(cudaGraph_t graph, cudaGraphNode_t* from_, cudaGraphNode_t* to, cudaGraphEdgeData* edgeData, size_t* numEdges) except ?cudaErrorCallRequiresNewerDriver nogil + +cdef cudaError_t _cudaGraphNodeGetDependencies(cudaGraphNode_t node, cudaGraphNode_t* pDependencies, cudaGraphEdgeData* edgeData, size_t* pNumDependencies) except ?cudaErrorCallRequiresNewerDriver nogil + +cdef cudaError_t _cudaGraphNodeGetDependentNodes(cudaGraphNode_t node, cudaGraphNode_t* pDependentNodes, cudaGraphEdgeData* edgeData, size_t* pNumDependentNodes) except ?cudaErrorCallRequiresNewerDriver nogil + +cdef cudaError_t _cudaGraphAddDependencies(cudaGraph_t graph, const cudaGraphNode_t* from_, const cudaGraphNode_t* to, const cudaGraphEdgeData* edgeData, size_t numDependencies) except ?cudaErrorCallRequiresNewerDriver nogil + +cdef cudaError_t _cudaGraphRemoveDependencies(cudaGraph_t graph, const cudaGraphNode_t* from_, const cudaGraphNode_t* to, const cudaGraphEdgeData* edgeData, size_t numDependencies) except ?cudaErrorCallRequiresNewerDriver nogil + +cdef cudaError_t _cudaGraphDestroyNode(cudaGraphNode_t node) except ?cudaErrorCallRequiresNewerDriver nogil + +cdef cudaError_t _cudaGraphInstantiate(cudaGraphExec_t* pGraphExec, cudaGraph_t graph, unsigned long long flags) except ?cudaErrorCallRequiresNewerDriver nogil + +cdef cudaError_t _cudaGraphInstantiateWithFlags(cudaGraphExec_t* pGraphExec, cudaGraph_t graph, unsigned long long flags) except ?cudaErrorCallRequiresNewerDriver nogil + +cdef cudaError_t _cudaGraphInstantiateWithParams(cudaGraphExec_t* pGraphExec, cudaGraph_t graph, cudaGraphInstantiateParams* instantiateParams) except ?cudaErrorCallRequiresNewerDriver nogil + +cdef cudaError_t _cudaGraphExecGetFlags(cudaGraphExec_t graphExec, unsigned long long* flags) except ?cudaErrorCallRequiresNewerDriver nogil + +cdef cudaError_t _cudaGraphExecKernelNodeSetParams(cudaGraphExec_t hGraphExec, cudaGraphNode_t node, const cudaKernelNodeParams* pNodeParams) except ?cudaErrorCallRequiresNewerDriver nogil + +cdef cudaError_t _cudaGraphExecMemcpyNodeSetParams(cudaGraphExec_t hGraphExec, cudaGraphNode_t node, const cudaMemcpy3DParms* pNodeParams) except ?cudaErrorCallRequiresNewerDriver nogil + +cdef cudaError_t _cudaGraphExecMemcpyNodeSetParams1D(cudaGraphExec_t hGraphExec, cudaGraphNode_t node, void* dst, const void* src, size_t count, cudaMemcpyKind kind) except ?cudaErrorCallRequiresNewerDriver nogil + +cdef cudaError_t _cudaGraphExecMemsetNodeSetParams(cudaGraphExec_t hGraphExec, cudaGraphNode_t node, const cudaMemsetParams* pNodeParams) except ?cudaErrorCallRequiresNewerDriver nogil + +cdef cudaError_t _cudaGraphExecHostNodeSetParams(cudaGraphExec_t hGraphExec, cudaGraphNode_t node, const cudaHostNodeParams* pNodeParams) except ?cudaErrorCallRequiresNewerDriver nogil + +cdef cudaError_t _cudaGraphExecChildGraphNodeSetParams(cudaGraphExec_t hGraphExec, cudaGraphNode_t node, cudaGraph_t childGraph) except ?cudaErrorCallRequiresNewerDriver nogil + +cdef cudaError_t _cudaGraphExecEventRecordNodeSetEvent(cudaGraphExec_t hGraphExec, cudaGraphNode_t hNode, cudaEvent_t event) except ?cudaErrorCallRequiresNewerDriver nogil + +cdef cudaError_t _cudaGraphExecEventWaitNodeSetEvent(cudaGraphExec_t hGraphExec, cudaGraphNode_t hNode, cudaEvent_t event) except ?cudaErrorCallRequiresNewerDriver nogil + +cdef cudaError_t _cudaGraphExecExternalSemaphoresSignalNodeSetParams(cudaGraphExec_t hGraphExec, cudaGraphNode_t hNode, const cudaExternalSemaphoreSignalNodeParams* nodeParams) except ?cudaErrorCallRequiresNewerDriver nogil + +cdef cudaError_t _cudaGraphExecExternalSemaphoresWaitNodeSetParams(cudaGraphExec_t hGraphExec, cudaGraphNode_t hNode, const cudaExternalSemaphoreWaitNodeParams* nodeParams) except ?cudaErrorCallRequiresNewerDriver nogil + +cdef cudaError_t _cudaGraphNodeSetEnabled(cudaGraphExec_t hGraphExec, cudaGraphNode_t hNode, unsigned int isEnabled) except ?cudaErrorCallRequiresNewerDriver nogil + +cdef cudaError_t _cudaGraphNodeGetEnabled(cudaGraphExec_t hGraphExec, cudaGraphNode_t hNode, unsigned int* isEnabled) except ?cudaErrorCallRequiresNewerDriver nogil + +cdef cudaError_t _cudaGraphExecUpdate(cudaGraphExec_t hGraphExec, cudaGraph_t hGraph, cudaGraphExecUpdateResultInfo* resultInfo) except ?cudaErrorCallRequiresNewerDriver nogil + +cdef cudaError_t _cudaGraphUpload(cudaGraphExec_t graphExec, cudaStream_t stream) except ?cudaErrorCallRequiresNewerDriver nogil + +cdef cudaError_t _cudaGraphLaunch(cudaGraphExec_t graphExec, cudaStream_t stream) except ?cudaErrorCallRequiresNewerDriver nogil + +cdef cudaError_t _cudaGraphExecDestroy(cudaGraphExec_t graphExec) except ?cudaErrorCallRequiresNewerDriver nogil + +cdef cudaError_t _cudaGraphDestroy(cudaGraph_t graph) except ?cudaErrorCallRequiresNewerDriver nogil + +cdef cudaError_t _cudaGraphDebugDotPrint(cudaGraph_t graph, const char* path, unsigned int flags) except ?cudaErrorCallRequiresNewerDriver nogil + +cdef cudaError_t _cudaUserObjectCreate(cudaUserObject_t* object_out, void* ptr, cudaHostFn_t destroy, unsigned int initialRefcount, unsigned int flags) except ?cudaErrorCallRequiresNewerDriver nogil + +cdef cudaError_t _cudaUserObjectRetain(cudaUserObject_t object, unsigned int count) except ?cudaErrorCallRequiresNewerDriver nogil + +cdef cudaError_t _cudaUserObjectRelease(cudaUserObject_t object, unsigned int count) except ?cudaErrorCallRequiresNewerDriver nogil + +cdef cudaError_t _cudaGraphRetainUserObject(cudaGraph_t graph, cudaUserObject_t object, unsigned int count, unsigned int flags) except ?cudaErrorCallRequiresNewerDriver nogil + +cdef cudaError_t _cudaGraphReleaseUserObject(cudaGraph_t graph, cudaUserObject_t object, unsigned int count) except ?cudaErrorCallRequiresNewerDriver nogil + +cdef cudaError_t _cudaGraphAddNode(cudaGraphNode_t* pGraphNode, cudaGraph_t graph, const cudaGraphNode_t* pDependencies, const cudaGraphEdgeData* dependencyData, size_t numDependencies, cudaGraphNodeParams* nodeParams) except ?cudaErrorCallRequiresNewerDriver nogil + +cdef cudaError_t _cudaGraphNodeSetParams(cudaGraphNode_t node, cudaGraphNodeParams* nodeParams) except ?cudaErrorCallRequiresNewerDriver nogil + +cdef cudaError_t _cudaGraphNodeGetParams(cudaGraphNode_t node, cudaGraphNodeParams* nodeParams) except ?cudaErrorCallRequiresNewerDriver nogil + +cdef cudaError_t _cudaGraphExecNodeSetParams(cudaGraphExec_t graphExec, cudaGraphNode_t node, cudaGraphNodeParams* nodeParams) except ?cudaErrorCallRequiresNewerDriver nogil + +cdef cudaError_t _cudaGraphConditionalHandleCreate(cudaGraphConditionalHandle* pHandle_out, cudaGraph_t graph, unsigned int defaultLaunchValue, unsigned int flags) except ?cudaErrorCallRequiresNewerDriver nogil + +cdef cudaError_t _cudaGraphConditionalHandleCreate_v2(cudaGraphConditionalHandle* pHandle_out, cudaGraph_t graph, cudaExecutionContext_t ctx, unsigned int defaultLaunchValue, unsigned int flags) except ?cudaErrorCallRequiresNewerDriver nogil + +cdef cudaError_t _cudaGetDriverEntryPoint(const char* symbol, void** funcPtr, unsigned long long flags, cudaDriverEntryPointQueryResult* driverStatus) except ?cudaErrorCallRequiresNewerDriver nogil + +cdef cudaError_t _cudaGetDriverEntryPointByVersion(const char* symbol, void** funcPtr, unsigned int cudaVersion, unsigned long long flags, cudaDriverEntryPointQueryResult* driverStatus) except ?cudaErrorCallRequiresNewerDriver nogil + +cdef cudaError_t _cudaLibraryLoadData(cudaLibrary_t* library, const void* code, cudaJitOption* jitOptions, void** jitOptionsValues, unsigned int numJitOptions, cudaLibraryOption* libraryOptions, void** libraryOptionValues, unsigned int numLibraryOptions) except ?cudaErrorCallRequiresNewerDriver nogil + +cdef cudaError_t _cudaLibraryLoadFromFile(cudaLibrary_t* library, const char* fileName, cudaJitOption* jitOptions, void** jitOptionsValues, unsigned int numJitOptions, cudaLibraryOption* libraryOptions, void** libraryOptionValues, unsigned int numLibraryOptions) except ?cudaErrorCallRequiresNewerDriver nogil + +cdef cudaError_t _cudaLibraryUnload(cudaLibrary_t library) except ?cudaErrorCallRequiresNewerDriver nogil + +cdef cudaError_t _cudaLibraryGetKernel(cudaKernel_t* pKernel, cudaLibrary_t library, const char* name) except ?cudaErrorCallRequiresNewerDriver nogil + +cdef cudaError_t _cudaLibraryGetGlobal(void** dptr, size_t* numbytes, cudaLibrary_t library, const char* name) except ?cudaErrorCallRequiresNewerDriver nogil + +cdef cudaError_t _cudaLibraryGetManaged(void** dptr, size_t* numbytes, cudaLibrary_t library, const char* name) except ?cudaErrorCallRequiresNewerDriver nogil + +cdef cudaError_t _cudaLibraryGetUnifiedFunction(void** fptr, cudaLibrary_t library, const char* symbol) except ?cudaErrorCallRequiresNewerDriver nogil + +cdef cudaError_t _cudaLibraryGetKernelCount(unsigned int* count, cudaLibrary_t lib) except ?cudaErrorCallRequiresNewerDriver nogil + +cdef cudaError_t _cudaLibraryEnumerateKernels(cudaKernel_t* kernels, unsigned int numKernels, cudaLibrary_t lib) except ?cudaErrorCallRequiresNewerDriver nogil + +cdef cudaError_t _cudaKernelSetAttributeForDevice(cudaKernel_t kernel, cudaFuncAttribute attr, int value, int device) except ?cudaErrorCallRequiresNewerDriver nogil + +cdef cudaError_t _cudaDeviceGetDevResource(int device, cudaDevResource* resource, cudaDevResourceType typename) except ?cudaErrorCallRequiresNewerDriver nogil + +cdef cudaError_t _cudaDevSmResourceSplitByCount(cudaDevResource* result, unsigned int* nbGroups, const cudaDevResource* input, cudaDevResource* remaining, unsigned int flags, unsigned int minCount) except ?cudaErrorCallRequiresNewerDriver nogil + +cdef cudaError_t _cudaDevSmResourceSplit(cudaDevResource* result, unsigned int nbGroups, const cudaDevResource* input, cudaDevResource* remainder, unsigned int flags, cudaDevSmResourceGroupParams* groupParams) except ?cudaErrorCallRequiresNewerDriver nogil + +cdef cudaError_t _cudaDevResourceGenerateDesc(cudaDevResourceDesc_t* phDesc, cudaDevResource* resources, unsigned int nbResources) except ?cudaErrorCallRequiresNewerDriver nogil + +cdef cudaError_t _cudaGreenCtxCreate(cudaExecutionContext_t* phCtx, cudaDevResourceDesc_t desc, int device, unsigned int flags) except ?cudaErrorCallRequiresNewerDriver nogil + +cdef cudaError_t _cudaExecutionCtxDestroy(cudaExecutionContext_t ctx) except ?cudaErrorCallRequiresNewerDriver nogil + +cdef cudaError_t _cudaExecutionCtxGetDevResource(cudaExecutionContext_t ctx, cudaDevResource* resource, cudaDevResourceType typename) except ?cudaErrorCallRequiresNewerDriver nogil + +cdef cudaError_t _cudaExecutionCtxGetDevice(int* device, cudaExecutionContext_t ctx) except ?cudaErrorCallRequiresNewerDriver nogil + +cdef cudaError_t _cudaExecutionCtxGetId(cudaExecutionContext_t ctx, unsigned long long* ctxId) except ?cudaErrorCallRequiresNewerDriver nogil + +cdef cudaError_t _cudaExecutionCtxStreamCreate(cudaStream_t* phStream, cudaExecutionContext_t ctx, unsigned int flags, int priority) except ?cudaErrorCallRequiresNewerDriver nogil + +cdef cudaError_t _cudaExecutionCtxSynchronize(cudaExecutionContext_t ctx) except ?cudaErrorCallRequiresNewerDriver nogil + +cdef cudaError_t _cudaStreamGetDevResource(cudaStream_t hStream, cudaDevResource* resource, cudaDevResourceType typename) except ?cudaErrorCallRequiresNewerDriver nogil + +cdef cudaError_t _cudaExecutionCtxRecordEvent(cudaExecutionContext_t ctx, cudaEvent_t event) except ?cudaErrorCallRequiresNewerDriver nogil + +cdef cudaError_t _cudaExecutionCtxWaitEvent(cudaExecutionContext_t ctx, cudaEvent_t event) except ?cudaErrorCallRequiresNewerDriver nogil + +cdef cudaError_t _cudaDeviceGetExecutionCtx(cudaExecutionContext_t* ctx, int device) except ?cudaErrorCallRequiresNewerDriver nogil + +cdef cudaError_t _cudaGetExportTable(const void** ppExportTable, const cudaUUID_t* pExportTableId) except ?cudaErrorCallRequiresNewerDriver nogil + +cdef cudaError_t _cudaGetKernel(cudaKernel_t* kernelPtr, const void* entryFuncAddr) except ?cudaErrorCallRequiresNewerDriver nogil + +cdef cudaPitchedPtr _make_cudaPitchedPtr(void* d, size_t p, size_t xsz, size_t ysz) except* nogil + +cdef cudaPos _make_cudaPos(size_t x, size_t y, size_t z) except* nogil + +cdef cudaExtent _make_cudaExtent(size_t w, size_t h, size_t d) except* nogil + +cdef cudaError_t _cudaProfilerStart() except ?cudaErrorCallRequiresNewerDriver nogil + +cdef cudaError_t _cudaProfilerStop() except ?cudaErrorCallRequiresNewerDriver nogil diff --git a/venv/lib/python3.11/site-packages/cuda/bindings/_bindings/loader.h b/venv/lib/python3.11/site-packages/cuda/bindings/_bindings/loader.h new file mode 100644 index 0000000000000000000000000000000000000000..2411037b03256b70ca6e260fc140d94b64b16e00 --- /dev/null +++ b/venv/lib/python3.11/site-packages/cuda/bindings/_bindings/loader.h @@ -0,0 +1,9 @@ +// SPDX-FileCopyrightText: Copyright (c) 2021-2024 NVIDIA CORPORATION & AFFILIATES. All rights reserved. +// SPDX-License-Identifier: LicenseRef-NVIDIA-SOFTWARE-LICENSE +// +// Please refer to the NVIDIA end user license agreement (EULA) associated +// with this source code for terms and conditions that govern your use of +// this software. Any use, reproduction, disclosure, or distribution of +// this software and related documentation outside the terms of the EULA +// is strictly prohibited. +int getCUDALibraryPath(char *libPath, bool isBit64); diff --git a/venv/lib/python3.11/site-packages/cuda/bindings/_bindings/loader.pxd b/venv/lib/python3.11/site-packages/cuda/bindings/_bindings/loader.pxd new file mode 100644 index 0000000000000000000000000000000000000000..805b849cc660295d97cba986c55444db5f21fc47 --- /dev/null +++ b/venv/lib/python3.11/site-packages/cuda/bindings/_bindings/loader.pxd @@ -0,0 +1,5 @@ +# SPDX-FileCopyrightText: Copyright (c) 2021-2024 NVIDIA CORPORATION & AFFILIATES. All rights reserved. +# SPDX-License-Identifier: LicenseRef-NVIDIA-SOFTWARE-LICENSE + +cdef extern from "loader.h": + int getCUDALibraryPath(char *libPath, bint isBit64) diff --git a/venv/lib/python3.11/site-packages/cuda/bindings/_example_helpers/__init__.py b/venv/lib/python3.11/site-packages/cuda/bindings/_example_helpers/__init__.py new file mode 100644 index 0000000000000000000000000000000000000000..fa061cc3461fe6cbc37b3eb2c264ab286398d9b8 --- /dev/null +++ b/venv/lib/python3.11/site-packages/cuda/bindings/_example_helpers/__init__.py @@ -0,0 +1,17 @@ +# SPDX-FileCopyrightText: Copyright (c) 2026 NVIDIA CORPORATION & AFFILIATES. All rights reserved. +# SPDX-License-Identifier: LicenseRef-NVIDIA-SOFTWARE-LICENSE + +from .common import KernelHelper, check_compute_capability_too_low, requirement_not_met +from .helper_cuda import check_cuda_errors, find_cuda_device, find_cuda_device_drv +from .helper_string import check_cmd_line_flag, get_cmd_line_argument_int + +__all__ = [ + "KernelHelper", + "check_cmd_line_flag", + "check_compute_capability_too_low", + "check_cuda_errors", + "find_cuda_device", + "find_cuda_device_drv", + "get_cmd_line_argument_int", + "requirement_not_met", +] diff --git a/venv/lib/python3.11/site-packages/cuda/bindings/_example_helpers/common.py b/venv/lib/python3.11/site-packages/cuda/bindings/_example_helpers/common.py new file mode 100644 index 0000000000000000000000000000000000000000..15317ace29cf4620e6633039dff91c19e15f1bd3 --- /dev/null +++ b/venv/lib/python3.11/site-packages/cuda/bindings/_example_helpers/common.py @@ -0,0 +1,96 @@ +# SPDX-FileCopyrightText: Copyright (c) 2021-2026 NVIDIA CORPORATION & AFFILIATES. All rights reserved. +# SPDX-License-Identifier: LicenseRef-NVIDIA-SOFTWARE-LICENSE + + +import os +import sys + +import numpy as np + +from cuda import pathfinder +from cuda.bindings import driver as cuda +from cuda.bindings import nvrtc +from cuda.bindings import runtime as cudart + +from .helper_cuda import check_cuda_errors + + +def requirement_not_met(message): + print(message, file=sys.stderr) # noqa: T201 + exitcode = os.environ.get("CUDA_BINDINGS_SKIP_EXAMPLE", "1") + return sys.exit(int(exitcode)) + + +def check_compute_capability_too_low(dev_id, required_cc_major_minor): + cc_major = check_cuda_errors( + cudart.cudaDeviceGetAttribute(cudart.cudaDeviceAttr.cudaDevAttrComputeCapabilityMajor, dev_id) + ) + cc_minor = check_cuda_errors( + cudart.cudaDeviceGetAttribute(cudart.cudaDeviceAttr.cudaDevAttrComputeCapabilityMinor, dev_id) + ) + have_cc_major_minor = (cc_major, cc_minor) + if have_cc_major_minor < required_cc_major_minor: + requirement_not_met( + f"CUDA device compute capability too low: {have_cc_major_minor=!r}, {required_cc_major_minor=!r}" + ) + + +class KernelHelper: + def __init__(self, code, dev_id): + include_dirs = [] + for libname in ("cudart", "cccl"): + hdr_dir = pathfinder.find_nvidia_header_directory(libname) + if hdr_dir is None: + requirement_not_met(f'pathfinder.find_nvidia_header_directory("{libname}") returned None') + include_dirs.append(hdr_dir) + + prog = check_cuda_errors(nvrtc.nvrtcCreateProgram(str.encode(code), b"sourceCode.cu", 0, None, None)) + + # Initialize CUDA + check_cuda_errors(cudart.cudaFree(0)) + + major = check_cuda_errors( + cudart.cudaDeviceGetAttribute(cudart.cudaDeviceAttr.cudaDevAttrComputeCapabilityMajor, dev_id) + ) + minor = check_cuda_errors( + cudart.cudaDeviceGetAttribute(cudart.cudaDeviceAttr.cudaDevAttrComputeCapabilityMinor, dev_id) + ) + _, nvrtc_minor = check_cuda_errors(nvrtc.nvrtcVersion()) + use_cubin = nvrtc_minor >= 1 + prefix = "sm" if use_cubin else "compute" + arch_arg = bytes(f"--gpu-architecture={prefix}_{major}{minor}", "ascii") + + opts = [ + b"--fmad=true", + arch_arg, + b"--std=c++17", + b"-default-device", + ] + for inc_dir in include_dirs: + opts.append(f"--include-path={inc_dir}".encode()) + + try: + check_cuda_errors(nvrtc.nvrtcCompileProgram(prog, len(opts), opts)) + except RuntimeError as err: + log_size = check_cuda_errors(nvrtc.nvrtcGetProgramLogSize(prog)) + log = b" " * log_size + check_cuda_errors(nvrtc.nvrtcGetProgramLog(prog, log)) + import sys + + print(log.decode(), file=sys.stderr) # noqa: T201 + print(err, file=sys.stderr) # noqa: T201 + sys.exit(1) + + if use_cubin: + data_size = check_cuda_errors(nvrtc.nvrtcGetCUBINSize(prog)) + data = b" " * data_size + check_cuda_errors(nvrtc.nvrtcGetCUBIN(prog, data)) + else: + data_size = check_cuda_errors(nvrtc.nvrtcGetPTXSize(prog)) + data = b" " * data_size + check_cuda_errors(nvrtc.nvrtcGetPTX(prog, data)) + + self.module = check_cuda_errors(cuda.cuModuleLoadData(np.char.array(data))) + + def get_function(self, name): + return check_cuda_errors(cuda.cuModuleGetFunction(self.module, name)) diff --git a/venv/lib/python3.11/site-packages/cuda/bindings/_example_helpers/helper_cuda.py b/venv/lib/python3.11/site-packages/cuda/bindings/_example_helpers/helper_cuda.py new file mode 100644 index 0000000000000000000000000000000000000000..0e56fa8fd101711be6706bd73109c185e6e4bf93 --- /dev/null +++ b/venv/lib/python3.11/site-packages/cuda/bindings/_example_helpers/helper_cuda.py @@ -0,0 +1,48 @@ +# SPDX-FileCopyrightText: Copyright (c) 2021-2026 NVIDIA CORPORATION & AFFILIATES. All rights reserved. +# SPDX-License-Identifier: LicenseRef-NVIDIA-SOFTWARE-LICENSE + +from cuda.bindings import driver as cuda +from cuda.bindings import nvrtc +from cuda.bindings import runtime as cudart + +from .helper_string import check_cmd_line_flag, get_cmd_line_argument_int + + +def _cuda_get_error_enum(error): + if isinstance(error, cuda.CUresult): + err, name = cuda.cuGetErrorName(error) + return name if err == cuda.CUresult.CUDA_SUCCESS else "" + elif isinstance(error, cudart.cudaError_t): + return cudart.cudaGetErrorName(error)[1] + elif isinstance(error, nvrtc.nvrtcResult): + return nvrtc.nvrtcGetErrorString(error)[1] + else: + raise RuntimeError(f"Unknown error type: {error}") + + +def check_cuda_errors(result): + if result[0].value: + raise RuntimeError(f"CUDA error code={result[0].value}({_cuda_get_error_enum(result[0])})") + if len(result) == 1: + return None + elif len(result) == 2: + return result[1] + else: + return result[1:] + + +def find_cuda_device(): + dev_id = 0 + if check_cmd_line_flag("device="): + dev_id = get_cmd_line_argument_int("device=") + check_cuda_errors(cudart.cudaSetDevice(dev_id)) + return dev_id + + +def find_cuda_device_drv(): + dev_id = 0 + if check_cmd_line_flag("device="): + dev_id = get_cmd_line_argument_int("device=") + check_cuda_errors(cuda.cuInit(0)) + cu_device = check_cuda_errors(cuda.cuDeviceGet(dev_id)) + return cu_device diff --git a/venv/lib/python3.11/site-packages/cuda/bindings/_example_helpers/helper_string.py b/venv/lib/python3.11/site-packages/cuda/bindings/_example_helpers/helper_string.py new file mode 100644 index 0000000000000000000000000000000000000000..1540db447a9fd9cf623e75446fc27afef21f84cb --- /dev/null +++ b/venv/lib/python3.11/site-packages/cuda/bindings/_example_helpers/helper_string.py @@ -0,0 +1,15 @@ +# SPDX-FileCopyrightText: Copyright (c) 2021-2026 NVIDIA CORPORATION & AFFILIATES. All rights reserved. +# SPDX-License-Identifier: LicenseRef-NVIDIA-SOFTWARE-LICENSE + +import sys + + +def check_cmd_line_flag(string_ref): + return any(string_ref == i and k < len(sys.argv) - 1 for i, k in enumerate(sys.argv)) + + +def get_cmd_line_argument_int(string_ref): + for i, k in enumerate(sys.argv): + if string_ref == i and k < len(sys.argv) - 1: + return sys.argv[k + 1] + return 0 diff --git a/venv/lib/python3.11/site-packages/cuda/bindings/_internal/__init__.py b/venv/lib/python3.11/site-packages/cuda/bindings/_internal/__init__.py new file mode 100644 index 0000000000000000000000000000000000000000..e69de29bb2d1d6434b8b29ae775ad8c2e48c5391 diff --git a/venv/lib/python3.11/site-packages/cuda/bindings/_internal/_fast_enum.py b/venv/lib/python3.11/site-packages/cuda/bindings/_internal/_fast_enum.py new file mode 100644 index 0000000000000000000000000000000000000000..cd0a8e5610efb55f98f850ee46bf8e65c4cb2a50 --- /dev/null +++ b/venv/lib/python3.11/site-packages/cuda/bindings/_internal/_fast_enum.py @@ -0,0 +1,75 @@ +# SPDX-FileCopyrightText: Copyright (c) 2026 NVIDIA CORPORATION & AFFILIATES. All rights reserved. +# SPDX-License-Identifier: LicenseRef-NVIDIA-SOFTWARE-LICENSE +# +# This code was automatically generated across versions from 12.9.1 to 13.3.0, generator version 0.3.1.dev1719+g565f73f4e. Do not modify it directly. + + +""" +This is a replacement for the stdlib enum.IntEnum. + +Notably, it has much better import time performance, since it doesn't generate +and evaluate Python code at startup time. + +It supports the most important subset of the IntEnum API. See `test_enum` in +`cuda_bindings/tests/test_basics.py` for details. +""" + +from typing import Any, Iterator + + +class FastEnumMetaclass(type): + def __init__(cls, name, bases, namespace): + super().__init__(name, bases, namespace) + + cls.__singletons__ = {} + cls.__members__ = {} + for name, value in cls.__dict__.items(): + if name.startswith("__") and name.endswith("__"): + continue + + if isinstance(value, tuple): + value, doc = value + elif isinstance(value, int): + doc = None + else: + continue + + singleton = int.__new__(cls, value) + singleton.__doc__ = doc + singleton._name = name + cls.__singletons__[value] = singleton + cls.__members__[name] = singleton + + for name, member in cls.__members__.items(): + setattr(cls, name, member) + + def __repr__(cls) -> str: + return f"" + + def __len__(cls) -> int: + return len(cls.__members__) + + def __iter__(cls) -> Iterator["FastEnum"]: + return iter(cls.__members__.values()) + + def __contains__(cls, item: Any) -> bool: + return item in cls.__singletons__ + + +class FastEnum(int, metaclass=FastEnumMetaclass): + def __new__(cls, value: int) -> "FastEnum": + singleton: FastEnum = cls.__singletons__.get(value) + if singleton is None: + raise ValueError(f"{value} is not a valid {cls.__name__}") + return singleton + + def __repr__(self) -> str: + return f"<{self.__class__.__name__}.{self._name}: {int(self)}>" + + @property + def name(self) -> str: + return self._name + + @property + def value(self) -> int: + return int(self) diff --git a/venv/lib/python3.11/site-packages/cuda/bindings/_internal/cudla.cpython-311-x86_64-linux-gnu.so b/venv/lib/python3.11/site-packages/cuda/bindings/_internal/cudla.cpython-311-x86_64-linux-gnu.so new file mode 100644 index 0000000000000000000000000000000000000000..832924cae7d1915d6114e864331aa070dacbd59f Binary files /dev/null and b/venv/lib/python3.11/site-packages/cuda/bindings/_internal/cudla.cpython-311-x86_64-linux-gnu.so differ diff --git a/venv/lib/python3.11/site-packages/cuda/bindings/_internal/cudla.pxd b/venv/lib/python3.11/site-packages/cuda/bindings/_internal/cudla.pxd new file mode 100644 index 0000000000000000000000000000000000000000..e4c479673de8f53b0edf44f689ef5f4dd90c15b5 --- /dev/null +++ b/venv/lib/python3.11/site-packages/cuda/bindings/_internal/cudla.pxd @@ -0,0 +1,25 @@ +# SPDX-FileCopyrightText: Copyright (c) 2024-2026 NVIDIA CORPORATION & AFFILIATES. All rights reserved. +# SPDX-License-Identifier: LicenseRef-NVIDIA-SOFTWARE-LICENSE + +# This code was automatically generated across versions from 1.5.0 to 13.3.0, generator version 0.3.1.dev1719+g565f73f4e. Do not modify it directly. + +from ..cycudla cimport * + + +############################################################################### +# Wrapper functions +############################################################################### + +cdef cudlaStatus _cudlaGetVersion(uint64_t* const version) except?_CUDLASTATUS_INTERNAL_LOADING_ERROR nogil +cdef cudlaStatus _cudlaDeviceGetCount(uint64_t* const pNumDevices) except?_CUDLASTATUS_INTERNAL_LOADING_ERROR nogil +cdef cudlaStatus _cudlaCreateDevice(const uint64_t device, cudlaDevHandle* const devHandle, const uint32_t flags) except?_CUDLASTATUS_INTERNAL_LOADING_ERROR nogil +cdef cudlaStatus _cudlaMemRegister(const cudlaDevHandle devHandle, const uint64_t* const ptr, const size_t size, uint64_t** const devPtr, const uint32_t flags) except?_CUDLASTATUS_INTERNAL_LOADING_ERROR nogil +cdef cudlaStatus _cudlaModuleLoadFromMemory(const cudlaDevHandle devHandle, const uint8_t* const pModule, const size_t moduleSize, cudlaModule* const hModule, const uint32_t flags) except?_CUDLASTATUS_INTERNAL_LOADING_ERROR nogil +cdef cudlaStatus _cudlaModuleGetAttributes(const cudlaModule hModule, const cudlaModuleAttributeType attrType, cudlaModuleAttribute* const attribute) except?_CUDLASTATUS_INTERNAL_LOADING_ERROR nogil +cdef cudlaStatus _cudlaModuleUnload(const cudlaModule hModule, const uint32_t flags) except?_CUDLASTATUS_INTERNAL_LOADING_ERROR nogil +cdef cudlaStatus _cudlaSubmitTask(const cudlaDevHandle devHandle, const cudlaTask* const ptrToTasks, const uint32_t numTasks, void* const stream, const uint32_t flags) except?_CUDLASTATUS_INTERNAL_LOADING_ERROR nogil +cdef cudlaStatus _cudlaDeviceGetAttribute(const cudlaDevHandle devHandle, const cudlaDevAttributeType attrib, cudlaDevAttribute* const pAttribute) except?_CUDLASTATUS_INTERNAL_LOADING_ERROR nogil +cdef cudlaStatus _cudlaMemUnregister(const cudlaDevHandle devHandle, const uint64_t* const devPtr) except?_CUDLASTATUS_INTERNAL_LOADING_ERROR nogil +cdef cudlaStatus _cudlaGetLastError(const cudlaDevHandle devHandle) except?_CUDLASTATUS_INTERNAL_LOADING_ERROR nogil +cdef cudlaStatus _cudlaDestroyDevice(const cudlaDevHandle devHandle) except?_CUDLASTATUS_INTERNAL_LOADING_ERROR nogil +cdef cudlaStatus _cudlaSetTaskTimeoutInMs(const cudlaDevHandle devHandle, const uint32_t timeout) except?_CUDLASTATUS_INTERNAL_LOADING_ERROR nogil diff --git a/venv/lib/python3.11/site-packages/cuda/bindings/_internal/cufile.cpython-311-x86_64-linux-gnu.so b/venv/lib/python3.11/site-packages/cuda/bindings/_internal/cufile.cpython-311-x86_64-linux-gnu.so new file mode 100644 index 0000000000000000000000000000000000000000..84b3d7d659394564dcc3ed9e071f08bb9eda3836 --- /dev/null +++ b/venv/lib/python3.11/site-packages/cuda/bindings/_internal/cufile.cpython-311-x86_64-linux-gnu.so @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:b3147fef87cec504a303e1f281e61be8642a099c9cbbe5386dbc3ff67c5003e2 +size 103432 diff --git a/venv/lib/python3.11/site-packages/cuda/bindings/_internal/cufile.pxd b/venv/lib/python3.11/site-packages/cuda/bindings/_internal/cufile.pxd new file mode 100644 index 0000000000000000000000000000000000000000..e642486af16ab140d968e2dae6070d2823990b8d --- /dev/null +++ b/venv/lib/python3.11/site-packages/cuda/bindings/_internal/cufile.pxd @@ -0,0 +1,56 @@ +# SPDX-FileCopyrightText: Copyright (c) 2025-2026 NVIDIA CORPORATION & AFFILIATES. All rights reserved. +# +# SPDX-License-Identifier: LicenseRef-NVIDIA-SOFTWARE-LICENSE +# +# This code was automatically generated across versions from 12.9.1 to 13.2.0, generator version 0.3.1.dev1422+gf4812259e.d20260318. Do not modify it directly. + +from ..cycufile cimport * + + +############################################################################### +# Wrapper functions +############################################################################### + +cdef CUfileError_t _cuFileHandleRegister(CUfileHandle_t* fh, CUfileDescr_t* descr) except?CUFILE_LOADING_ERROR nogil +cdef void _cuFileHandleDeregister(CUfileHandle_t fh) except* nogil +cdef CUfileError_t _cuFileBufRegister(const void* bufPtr_base, size_t length, int flags) except?CUFILE_LOADING_ERROR nogil +cdef CUfileError_t _cuFileBufDeregister(const void* bufPtr_base) except?CUFILE_LOADING_ERROR nogil +cdef ssize_t _cuFileRead(CUfileHandle_t fh, void* bufPtr_base, size_t size, off_t file_offset, off_t bufPtr_offset) except* nogil +cdef ssize_t _cuFileWrite(CUfileHandle_t fh, const void* bufPtr_base, size_t size, off_t file_offset, off_t bufPtr_offset) except* nogil +cdef CUfileError_t _cuFileDriverOpen() except?CUFILE_LOADING_ERROR nogil +cdef CUfileError_t _cuFileDriverClose() except?CUFILE_LOADING_ERROR nogil +cdef CUfileError_t _cuFileDriverClose_v2() except?CUFILE_LOADING_ERROR nogil +cdef long _cuFileUseCount() except* nogil +cdef CUfileError_t _cuFileDriverGetProperties(CUfileDrvProps_t* props) except?CUFILE_LOADING_ERROR nogil +cdef CUfileError_t _cuFileDriverSetPollMode(cpp_bool poll, size_t poll_threshold_size) except?CUFILE_LOADING_ERROR nogil +cdef CUfileError_t _cuFileDriverSetMaxDirectIOSize(size_t max_direct_io_size) except?CUFILE_LOADING_ERROR nogil +cdef CUfileError_t _cuFileDriverSetMaxCacheSize(size_t max_cache_size) except?CUFILE_LOADING_ERROR nogil +cdef CUfileError_t _cuFileDriverSetMaxPinnedMemSize(size_t max_pinned_size) except?CUFILE_LOADING_ERROR nogil +cdef CUfileError_t _cuFileBatchIOSetUp(CUfileBatchHandle_t* batch_idp, unsigned nr) except?CUFILE_LOADING_ERROR nogil +cdef CUfileError_t _cuFileBatchIOSubmit(CUfileBatchHandle_t batch_idp, unsigned nr, CUfileIOParams_t* iocbp, unsigned int flags) except?CUFILE_LOADING_ERROR nogil +cdef CUfileError_t _cuFileBatchIOGetStatus(CUfileBatchHandle_t batch_idp, unsigned min_nr, unsigned* nr, CUfileIOEvents_t* iocbp, timespec* timeout) except?CUFILE_LOADING_ERROR nogil +cdef CUfileError_t _cuFileBatchIOCancel(CUfileBatchHandle_t batch_idp) except?CUFILE_LOADING_ERROR nogil +cdef void _cuFileBatchIODestroy(CUfileBatchHandle_t batch_idp) except* nogil +cdef CUfileError_t _cuFileReadAsync(CUfileHandle_t fh, void* bufPtr_base, size_t* size_p, off_t* file_offset_p, off_t* bufPtr_offset_p, ssize_t* bytes_read_p, CUstream stream) except?CUFILE_LOADING_ERROR nogil +cdef CUfileError_t _cuFileWriteAsync(CUfileHandle_t fh, void* bufPtr_base, size_t* size_p, off_t* file_offset_p, off_t* bufPtr_offset_p, ssize_t* bytes_written_p, CUstream stream) except?CUFILE_LOADING_ERROR nogil +cdef CUfileError_t _cuFileStreamRegister(CUstream stream, unsigned flags) except?CUFILE_LOADING_ERROR nogil +cdef CUfileError_t _cuFileStreamDeregister(CUstream stream) except?CUFILE_LOADING_ERROR nogil +cdef CUfileError_t _cuFileGetVersion(int* version) except?CUFILE_LOADING_ERROR nogil +cdef CUfileError_t _cuFileGetParameterSizeT(CUFileSizeTConfigParameter_t param, size_t* value) except?CUFILE_LOADING_ERROR nogil +cdef CUfileError_t _cuFileGetParameterBool(CUFileBoolConfigParameter_t param, cpp_bool* value) except?CUFILE_LOADING_ERROR nogil +cdef CUfileError_t _cuFileGetParameterString(CUFileStringConfigParameter_t param, char* desc_str, int len) except?CUFILE_LOADING_ERROR nogil +cdef CUfileError_t _cuFileSetParameterSizeT(CUFileSizeTConfigParameter_t param, size_t value) except?CUFILE_LOADING_ERROR nogil +cdef CUfileError_t _cuFileSetParameterBool(CUFileBoolConfigParameter_t param, cpp_bool value) except?CUFILE_LOADING_ERROR nogil +cdef CUfileError_t _cuFileSetParameterString(CUFileStringConfigParameter_t param, const char* desc_str) except?CUFILE_LOADING_ERROR nogil +cdef CUfileError_t _cuFileGetParameterMinMaxValue(CUFileSizeTConfigParameter_t param, size_t* min_value, size_t* max_value) except?CUFILE_LOADING_ERROR nogil +cdef CUfileError_t _cuFileSetStatsLevel(int level) except?CUFILE_LOADING_ERROR nogil +cdef CUfileError_t _cuFileGetStatsLevel(int* level) except?CUFILE_LOADING_ERROR nogil +cdef CUfileError_t _cuFileStatsStart() except?CUFILE_LOADING_ERROR nogil +cdef CUfileError_t _cuFileStatsStop() except?CUFILE_LOADING_ERROR nogil +cdef CUfileError_t _cuFileStatsReset() except?CUFILE_LOADING_ERROR nogil +cdef CUfileError_t _cuFileGetStatsL1(CUfileStatsLevel1_t* stats) except?CUFILE_LOADING_ERROR nogil +cdef CUfileError_t _cuFileGetStatsL2(CUfileStatsLevel2_t* stats) except?CUFILE_LOADING_ERROR nogil +cdef CUfileError_t _cuFileGetStatsL3(CUfileStatsLevel3_t* stats) except?CUFILE_LOADING_ERROR nogil +cdef CUfileError_t _cuFileGetBARSizeInKB(int gpuIndex, size_t* barSize) except?CUFILE_LOADING_ERROR nogil +cdef CUfileError_t _cuFileSetParameterPosixPoolSlabArray(const size_t* size_values, const size_t* count_values, int len) except?CUFILE_LOADING_ERROR nogil +cdef CUfileError_t _cuFileGetParameterPosixPoolSlabArray(size_t* size_values, size_t* count_values, int len) except?CUFILE_LOADING_ERROR nogil diff --git a/venv/lib/python3.11/site-packages/cuda/bindings/_internal/nvfatbin.cpython-311-x86_64-linux-gnu.so b/venv/lib/python3.11/site-packages/cuda/bindings/_internal/nvfatbin.cpython-311-x86_64-linux-gnu.so new file mode 100644 index 0000000000000000000000000000000000000000..52a7c97a8d248f8660bba7fde5b3765b15b2080e Binary files /dev/null and b/venv/lib/python3.11/site-packages/cuda/bindings/_internal/nvfatbin.cpython-311-x86_64-linux-gnu.so differ diff --git a/venv/lib/python3.11/site-packages/cuda/bindings/_internal/nvfatbin.pxd b/venv/lib/python3.11/site-packages/cuda/bindings/_internal/nvfatbin.pxd new file mode 100644 index 0000000000000000000000000000000000000000..2358e1220c960fb04d668f8305339368a872252c --- /dev/null +++ b/venv/lib/python3.11/site-packages/cuda/bindings/_internal/nvfatbin.pxd @@ -0,0 +1,25 @@ +# SPDX-FileCopyrightText: Copyright (c) 2026 NVIDIA CORPORATION & AFFILIATES. All rights reserved. +# +# SPDX-License-Identifier: LicenseRef-NVIDIA-SOFTWARE-LICENSE +# +# This code was automatically generated across versions from 12.4.1 to 13.3.0, generator version 0.3.1.dev1719+g565f73f4e. Do not modify it directly. + +from ..cynvfatbin cimport * + + +############################################################################### +# Wrapper functions +############################################################################### + +cdef const char* _nvFatbinGetErrorString(nvFatbinResult result) except?NULL nogil +cdef nvFatbinResult _nvFatbinCreate(nvFatbinHandle* handle_indirect, const char** options, size_t optionsCount) except?_NVFATBINRESULT_INTERNAL_LOADING_ERROR nogil +cdef nvFatbinResult _nvFatbinDestroy(nvFatbinHandle* handle_indirect) except?_NVFATBINRESULT_INTERNAL_LOADING_ERROR nogil +cdef nvFatbinResult _nvFatbinAddPTX(nvFatbinHandle handle, const char* code, size_t size, const char* arch, const char* identifier, const char* optionsCmdLine) except?_NVFATBINRESULT_INTERNAL_LOADING_ERROR nogil +cdef nvFatbinResult _nvFatbinAddCubin(nvFatbinHandle handle, const void* code, size_t size, const char* arch, const char* identifier) except?_NVFATBINRESULT_INTERNAL_LOADING_ERROR nogil +cdef nvFatbinResult _nvFatbinAddLTOIR(nvFatbinHandle handle, const void* code, size_t size, const char* arch, const char* identifier, const char* optionsCmdLine) except?_NVFATBINRESULT_INTERNAL_LOADING_ERROR nogil +cdef nvFatbinResult _nvFatbinSize(nvFatbinHandle handle, size_t* size) except?_NVFATBINRESULT_INTERNAL_LOADING_ERROR nogil +cdef nvFatbinResult _nvFatbinGet(nvFatbinHandle handle, void* buffer) except?_NVFATBINRESULT_INTERNAL_LOADING_ERROR nogil +cdef nvFatbinResult _nvFatbinVersion(unsigned int* major, unsigned int* minor) except?_NVFATBINRESULT_INTERNAL_LOADING_ERROR nogil +cdef nvFatbinResult _nvFatbinAddIndex(nvFatbinHandle handle, const void* code, size_t size, const char* identifier) except?_NVFATBINRESULT_INTERNAL_LOADING_ERROR nogil +cdef nvFatbinResult _nvFatbinAddReloc(nvFatbinHandle handle, const void* code, size_t size) except?_NVFATBINRESULT_INTERNAL_LOADING_ERROR nogil +cdef nvFatbinResult _nvFatbinAddTileIR(nvFatbinHandle handle, const void* code, size_t size, const char* identifier, const char* optionsCmdLine) except?_NVFATBINRESULT_INTERNAL_LOADING_ERROR nogil diff --git a/venv/lib/python3.11/site-packages/cuda/bindings/_internal/nvjitlink.cpython-311-x86_64-linux-gnu.so b/venv/lib/python3.11/site-packages/cuda/bindings/_internal/nvjitlink.cpython-311-x86_64-linux-gnu.so new file mode 100644 index 0000000000000000000000000000000000000000..0422d93864143dcf53a04eabfb61fc23b20f5185 Binary files /dev/null and b/venv/lib/python3.11/site-packages/cuda/bindings/_internal/nvjitlink.cpython-311-x86_64-linux-gnu.so differ diff --git a/venv/lib/python3.11/site-packages/cuda/bindings/_internal/nvjitlink.pxd b/venv/lib/python3.11/site-packages/cuda/bindings/_internal/nvjitlink.pxd new file mode 100644 index 0000000000000000000000000000000000000000..2d3f432eeb2793b84be0e6304d49f1a5c2ee7a40 --- /dev/null +++ b/venv/lib/python3.11/site-packages/cuda/bindings/_internal/nvjitlink.pxd @@ -0,0 +1,27 @@ +# SPDX-FileCopyrightText: Copyright (c) 2024-2026 NVIDIA CORPORATION & AFFILIATES. All rights reserved. +# +# SPDX-License-Identifier: LicenseRef-NVIDIA-SOFTWARE-LICENSE +# +# This code was automatically generated across versions from 12.0.1 to 13.2.0, generator version 0.3.1.dev1422+gf4812259e.d20260318. Do not modify it directly. + +from ..cynvjitlink cimport * + + +############################################################################### +# Wrapper functions +############################################################################### + +cdef nvJitLinkResult _nvJitLinkCreate(nvJitLinkHandle* handle, uint32_t numOptions, const char** options) except?_NVJITLINKRESULT_INTERNAL_LOADING_ERROR nogil +cdef nvJitLinkResult _nvJitLinkDestroy(nvJitLinkHandle* handle) except?_NVJITLINKRESULT_INTERNAL_LOADING_ERROR nogil +cdef nvJitLinkResult _nvJitLinkAddData(nvJitLinkHandle handle, nvJitLinkInputType inputType, const void* data, size_t size, const char* name) except?_NVJITLINKRESULT_INTERNAL_LOADING_ERROR nogil +cdef nvJitLinkResult _nvJitLinkAddFile(nvJitLinkHandle handle, nvJitLinkInputType inputType, const char* fileName) except?_NVJITLINKRESULT_INTERNAL_LOADING_ERROR nogil +cdef nvJitLinkResult _nvJitLinkComplete(nvJitLinkHandle handle) except?_NVJITLINKRESULT_INTERNAL_LOADING_ERROR nogil +cdef nvJitLinkResult _nvJitLinkGetLinkedCubinSize(nvJitLinkHandle handle, size_t* size) except?_NVJITLINKRESULT_INTERNAL_LOADING_ERROR nogil +cdef nvJitLinkResult _nvJitLinkGetLinkedCubin(nvJitLinkHandle handle, void* cubin) except?_NVJITLINKRESULT_INTERNAL_LOADING_ERROR nogil +cdef nvJitLinkResult _nvJitLinkGetLinkedPtxSize(nvJitLinkHandle handle, size_t* size) except?_NVJITLINKRESULT_INTERNAL_LOADING_ERROR nogil +cdef nvJitLinkResult _nvJitLinkGetLinkedPtx(nvJitLinkHandle handle, char* ptx) except?_NVJITLINKRESULT_INTERNAL_LOADING_ERROR nogil +cdef nvJitLinkResult _nvJitLinkGetErrorLogSize(nvJitLinkHandle handle, size_t* size) except?_NVJITLINKRESULT_INTERNAL_LOADING_ERROR nogil +cdef nvJitLinkResult _nvJitLinkGetErrorLog(nvJitLinkHandle handle, char* log) except?_NVJITLINKRESULT_INTERNAL_LOADING_ERROR nogil +cdef nvJitLinkResult _nvJitLinkGetInfoLogSize(nvJitLinkHandle handle, size_t* size) except?_NVJITLINKRESULT_INTERNAL_LOADING_ERROR nogil +cdef nvJitLinkResult _nvJitLinkGetInfoLog(nvJitLinkHandle handle, char* log) except?_NVJITLINKRESULT_INTERNAL_LOADING_ERROR nogil +cdef nvJitLinkResult _nvJitLinkVersion(unsigned int* major, unsigned int* minor) except?_NVJITLINKRESULT_INTERNAL_LOADING_ERROR nogil diff --git a/venv/lib/python3.11/site-packages/cuda/bindings/_internal/nvml.cpython-311-x86_64-linux-gnu.so b/venv/lib/python3.11/site-packages/cuda/bindings/_internal/nvml.cpython-311-x86_64-linux-gnu.so new file mode 100644 index 0000000000000000000000000000000000000000..a1bf24bca40da8e4d3d1fa0283bf9cd7d5a74e5a --- /dev/null +++ b/venv/lib/python3.11/site-packages/cuda/bindings/_internal/nvml.cpython-311-x86_64-linux-gnu.so @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:0b5f47059e908d15c7b0f181ba886e3c4988f2a76757e24a9e014b84bb139a4f +size 458152 diff --git a/venv/lib/python3.11/site-packages/cuda/bindings/_internal/nvml.pxd b/venv/lib/python3.11/site-packages/cuda/bindings/_internal/nvml.pxd new file mode 100644 index 0000000000000000000000000000000000000000..1664d4cc01e19408bfd90185429d51bd39657972 --- /dev/null +++ b/venv/lib/python3.11/site-packages/cuda/bindings/_internal/nvml.pxd @@ -0,0 +1,364 @@ +# SPDX-FileCopyrightText: Copyright (c) 2025-2026 NVIDIA CORPORATION & AFFILIATES. All rights reserved. +# +# SPDX-License-Identifier: LicenseRef-NVIDIA-SOFTWARE-LICENSE +# +# This code was automatically generated across versions from 12.9.1 to 13.2.0, generator version 0.3.1.dev1422+gf4812259e.d20260318. Do not modify it directly. + +from ..cynvml cimport * + + +############################################################################### +# Wrapper functions +############################################################################### + +cdef nvmlReturn_t _nvmlInit_v2() except?_NVMLRETURN_T_INTERNAL_LOADING_ERROR nogil +cdef nvmlReturn_t _nvmlInitWithFlags(unsigned int flags) except?_NVMLRETURN_T_INTERNAL_LOADING_ERROR nogil +cdef nvmlReturn_t _nvmlShutdown() except?_NVMLRETURN_T_INTERNAL_LOADING_ERROR nogil +cdef const char* _nvmlErrorString(nvmlReturn_t result) except?NULL nogil +cdef nvmlReturn_t _nvmlSystemGetDriverVersion(char* version, unsigned int length) except?_NVMLRETURN_T_INTERNAL_LOADING_ERROR nogil +cdef nvmlReturn_t _nvmlSystemGetNVMLVersion(char* version, unsigned int length) except?_NVMLRETURN_T_INTERNAL_LOADING_ERROR nogil +cdef nvmlReturn_t _nvmlSystemGetCudaDriverVersion(int* cudaDriverVersion) except?_NVMLRETURN_T_INTERNAL_LOADING_ERROR nogil +cdef nvmlReturn_t _nvmlSystemGetCudaDriverVersion_v2(int* cudaDriverVersion) except?_NVMLRETURN_T_INTERNAL_LOADING_ERROR nogil +cdef nvmlReturn_t _nvmlSystemGetProcessName(unsigned int pid, char* name, unsigned int length) except?_NVMLRETURN_T_INTERNAL_LOADING_ERROR nogil +cdef nvmlReturn_t _nvmlSystemGetHicVersion(unsigned int* hwbcCount, nvmlHwbcEntry_t* hwbcEntries) except?_NVMLRETURN_T_INTERNAL_LOADING_ERROR nogil +cdef nvmlReturn_t _nvmlSystemGetTopologyGpuSet(unsigned int cpuNumber, unsigned int* count, nvmlDevice_t* deviceArray) except?_NVMLRETURN_T_INTERNAL_LOADING_ERROR nogil +cdef nvmlReturn_t _nvmlSystemGetDriverBranch(nvmlSystemDriverBranchInfo_t* branchInfo, unsigned int length) except?_NVMLRETURN_T_INTERNAL_LOADING_ERROR nogil +cdef nvmlReturn_t _nvmlUnitGetCount(unsigned int* unitCount) except?_NVMLRETURN_T_INTERNAL_LOADING_ERROR nogil +cdef nvmlReturn_t _nvmlUnitGetHandleByIndex(unsigned int index, nvmlUnit_t* unit) except?_NVMLRETURN_T_INTERNAL_LOADING_ERROR nogil +cdef nvmlReturn_t _nvmlUnitGetUnitInfo(nvmlUnit_t unit, nvmlUnitInfo_t* info) except?_NVMLRETURN_T_INTERNAL_LOADING_ERROR nogil +cdef nvmlReturn_t _nvmlUnitGetLedState(nvmlUnit_t unit, nvmlLedState_t* state) except?_NVMLRETURN_T_INTERNAL_LOADING_ERROR nogil +cdef nvmlReturn_t _nvmlUnitGetPsuInfo(nvmlUnit_t unit, nvmlPSUInfo_t* psu) except?_NVMLRETURN_T_INTERNAL_LOADING_ERROR nogil +cdef nvmlReturn_t _nvmlUnitGetTemperature(nvmlUnit_t unit, unsigned int type, unsigned int* temp) except?_NVMLRETURN_T_INTERNAL_LOADING_ERROR nogil +cdef nvmlReturn_t _nvmlUnitGetFanSpeedInfo(nvmlUnit_t unit, nvmlUnitFanSpeeds_t* fanSpeeds) except?_NVMLRETURN_T_INTERNAL_LOADING_ERROR nogil +cdef nvmlReturn_t _nvmlUnitGetDevices(nvmlUnit_t unit, unsigned int* deviceCount, nvmlDevice_t* devices) except?_NVMLRETURN_T_INTERNAL_LOADING_ERROR nogil +cdef nvmlReturn_t _nvmlDeviceGetCount_v2(unsigned int* deviceCount) except?_NVMLRETURN_T_INTERNAL_LOADING_ERROR nogil +cdef nvmlReturn_t _nvmlDeviceGetAttributes_v2(nvmlDevice_t device, nvmlDeviceAttributes_t* attributes) except?_NVMLRETURN_T_INTERNAL_LOADING_ERROR nogil +cdef nvmlReturn_t _nvmlDeviceGetHandleByIndex_v2(unsigned int index, nvmlDevice_t* device) except?_NVMLRETURN_T_INTERNAL_LOADING_ERROR nogil +cdef nvmlReturn_t _nvmlDeviceGetHandleBySerial(const char* serial, nvmlDevice_t* device) except?_NVMLRETURN_T_INTERNAL_LOADING_ERROR nogil +cdef nvmlReturn_t _nvmlDeviceGetHandleByUUID(const char* uuid, nvmlDevice_t* device) except?_NVMLRETURN_T_INTERNAL_LOADING_ERROR nogil +cdef nvmlReturn_t _nvmlDeviceGetHandleByUUIDV(const nvmlUUID_t* uuid, nvmlDevice_t* device) except?_NVMLRETURN_T_INTERNAL_LOADING_ERROR nogil +cdef nvmlReturn_t _nvmlDeviceGetHandleByPciBusId_v2(const char* pciBusId, nvmlDevice_t* device) except?_NVMLRETURN_T_INTERNAL_LOADING_ERROR nogil +cdef nvmlReturn_t _nvmlDeviceGetName(nvmlDevice_t device, char* name, unsigned int length) except?_NVMLRETURN_T_INTERNAL_LOADING_ERROR nogil +cdef nvmlReturn_t _nvmlDeviceGetBrand(nvmlDevice_t device, nvmlBrandType_t* type) except?_NVMLRETURN_T_INTERNAL_LOADING_ERROR nogil +cdef nvmlReturn_t _nvmlDeviceGetIndex(nvmlDevice_t device, unsigned int* index) except?_NVMLRETURN_T_INTERNAL_LOADING_ERROR nogil +cdef nvmlReturn_t _nvmlDeviceGetSerial(nvmlDevice_t device, char* serial, unsigned int length) except?_NVMLRETURN_T_INTERNAL_LOADING_ERROR nogil +cdef nvmlReturn_t _nvmlDeviceGetModuleId(nvmlDevice_t device, unsigned int* moduleId) except?_NVMLRETURN_T_INTERNAL_LOADING_ERROR nogil +cdef nvmlReturn_t _nvmlDeviceGetC2cModeInfoV(nvmlDevice_t device, nvmlC2cModeInfo_v1_t* c2cModeInfo) except?_NVMLRETURN_T_INTERNAL_LOADING_ERROR nogil +cdef nvmlReturn_t _nvmlDeviceGetMemoryAffinity(nvmlDevice_t device, unsigned int nodeSetSize, unsigned long* nodeSet, nvmlAffinityScope_t scope) except?_NVMLRETURN_T_INTERNAL_LOADING_ERROR nogil +cdef nvmlReturn_t _nvmlDeviceGetCpuAffinityWithinScope(nvmlDevice_t device, unsigned int cpuSetSize, unsigned long* cpuSet, nvmlAffinityScope_t scope) except?_NVMLRETURN_T_INTERNAL_LOADING_ERROR nogil +cdef nvmlReturn_t _nvmlDeviceGetCpuAffinity(nvmlDevice_t device, unsigned int cpuSetSize, unsigned long* cpuSet) except?_NVMLRETURN_T_INTERNAL_LOADING_ERROR nogil +cdef nvmlReturn_t _nvmlDeviceSetCpuAffinity(nvmlDevice_t device) except?_NVMLRETURN_T_INTERNAL_LOADING_ERROR nogil +cdef nvmlReturn_t _nvmlDeviceClearCpuAffinity(nvmlDevice_t device) except?_NVMLRETURN_T_INTERNAL_LOADING_ERROR nogil +cdef nvmlReturn_t _nvmlDeviceGetNumaNodeId(nvmlDevice_t device, unsigned int* node) except?_NVMLRETURN_T_INTERNAL_LOADING_ERROR nogil +cdef nvmlReturn_t _nvmlDeviceGetTopologyCommonAncestor(nvmlDevice_t device1, nvmlDevice_t device2, nvmlGpuTopologyLevel_t* pathInfo) except?_NVMLRETURN_T_INTERNAL_LOADING_ERROR nogil +cdef nvmlReturn_t _nvmlDeviceGetTopologyNearestGpus(nvmlDevice_t device, nvmlGpuTopologyLevel_t level, unsigned int* count, nvmlDevice_t* deviceArray) except?_NVMLRETURN_T_INTERNAL_LOADING_ERROR nogil +cdef nvmlReturn_t _nvmlDeviceGetP2PStatus(nvmlDevice_t device1, nvmlDevice_t device2, nvmlGpuP2PCapsIndex_t p2pIndex, nvmlGpuP2PStatus_t* p2pStatus) except?_NVMLRETURN_T_INTERNAL_LOADING_ERROR nogil +cdef nvmlReturn_t _nvmlDeviceGetUUID(nvmlDevice_t device, char* uuid, unsigned int length) except?_NVMLRETURN_T_INTERNAL_LOADING_ERROR nogil +cdef nvmlReturn_t _nvmlDeviceGetMinorNumber(nvmlDevice_t device, unsigned int* minorNumber) except?_NVMLRETURN_T_INTERNAL_LOADING_ERROR nogil +cdef nvmlReturn_t _nvmlDeviceGetBoardPartNumber(nvmlDevice_t device, char* partNumber, unsigned int length) except?_NVMLRETURN_T_INTERNAL_LOADING_ERROR nogil +cdef nvmlReturn_t _nvmlDeviceGetInforomVersion(nvmlDevice_t device, nvmlInforomObject_t object, char* version, unsigned int length) except?_NVMLRETURN_T_INTERNAL_LOADING_ERROR nogil +cdef nvmlReturn_t _nvmlDeviceGetInforomImageVersion(nvmlDevice_t device, char* version, unsigned int length) except?_NVMLRETURN_T_INTERNAL_LOADING_ERROR nogil +cdef nvmlReturn_t _nvmlDeviceGetInforomConfigurationChecksum(nvmlDevice_t device, unsigned int* checksum) except?_NVMLRETURN_T_INTERNAL_LOADING_ERROR nogil +cdef nvmlReturn_t _nvmlDeviceValidateInforom(nvmlDevice_t device) except?_NVMLRETURN_T_INTERNAL_LOADING_ERROR nogil +cdef nvmlReturn_t _nvmlDeviceGetLastBBXFlushTime(nvmlDevice_t device, unsigned long long* timestamp, unsigned long* durationUs) except?_NVMLRETURN_T_INTERNAL_LOADING_ERROR nogil +cdef nvmlReturn_t _nvmlDeviceGetDisplayMode(nvmlDevice_t device, nvmlEnableState_t* display) except?_NVMLRETURN_T_INTERNAL_LOADING_ERROR nogil +cdef nvmlReturn_t _nvmlDeviceGetDisplayActive(nvmlDevice_t device, nvmlEnableState_t* isActive) except?_NVMLRETURN_T_INTERNAL_LOADING_ERROR nogil +cdef nvmlReturn_t _nvmlDeviceGetPersistenceMode(nvmlDevice_t device, nvmlEnableState_t* mode) except?_NVMLRETURN_T_INTERNAL_LOADING_ERROR nogil +cdef nvmlReturn_t _nvmlDeviceGetPciInfoExt(nvmlDevice_t device, nvmlPciInfoExt_t* pci) except?_NVMLRETURN_T_INTERNAL_LOADING_ERROR nogil +cdef nvmlReturn_t _nvmlDeviceGetPciInfo_v3(nvmlDevice_t device, nvmlPciInfo_t* pci) except?_NVMLRETURN_T_INTERNAL_LOADING_ERROR nogil +cdef nvmlReturn_t _nvmlDeviceGetMaxPcieLinkGeneration(nvmlDevice_t device, unsigned int* maxLinkGen) except?_NVMLRETURN_T_INTERNAL_LOADING_ERROR nogil +cdef nvmlReturn_t _nvmlDeviceGetGpuMaxPcieLinkGeneration(nvmlDevice_t device, unsigned int* maxLinkGenDevice) except?_NVMLRETURN_T_INTERNAL_LOADING_ERROR nogil +cdef nvmlReturn_t _nvmlDeviceGetMaxPcieLinkWidth(nvmlDevice_t device, unsigned int* maxLinkWidth) except?_NVMLRETURN_T_INTERNAL_LOADING_ERROR nogil +cdef nvmlReturn_t _nvmlDeviceGetCurrPcieLinkGeneration(nvmlDevice_t device, unsigned int* currLinkGen) except?_NVMLRETURN_T_INTERNAL_LOADING_ERROR nogil +cdef nvmlReturn_t _nvmlDeviceGetCurrPcieLinkWidth(nvmlDevice_t device, unsigned int* currLinkWidth) except?_NVMLRETURN_T_INTERNAL_LOADING_ERROR nogil +cdef nvmlReturn_t _nvmlDeviceGetPcieThroughput(nvmlDevice_t device, nvmlPcieUtilCounter_t counter, unsigned int* value) except?_NVMLRETURN_T_INTERNAL_LOADING_ERROR nogil +cdef nvmlReturn_t _nvmlDeviceGetPcieReplayCounter(nvmlDevice_t device, unsigned int* value) except?_NVMLRETURN_T_INTERNAL_LOADING_ERROR nogil +cdef nvmlReturn_t _nvmlDeviceGetClockInfo(nvmlDevice_t device, nvmlClockType_t type, unsigned int* clock) except?_NVMLRETURN_T_INTERNAL_LOADING_ERROR nogil +cdef nvmlReturn_t _nvmlDeviceGetMaxClockInfo(nvmlDevice_t device, nvmlClockType_t type, unsigned int* clock) except?_NVMLRETURN_T_INTERNAL_LOADING_ERROR nogil +cdef nvmlReturn_t _nvmlDeviceGetGpcClkVfOffset(nvmlDevice_t device, int* offset) except?_NVMLRETURN_T_INTERNAL_LOADING_ERROR nogil +cdef nvmlReturn_t _nvmlDeviceGetClock(nvmlDevice_t device, nvmlClockType_t clockType, nvmlClockId_t clockId, unsigned int* clockMHz) except?_NVMLRETURN_T_INTERNAL_LOADING_ERROR nogil +cdef nvmlReturn_t _nvmlDeviceGetMaxCustomerBoostClock(nvmlDevice_t device, nvmlClockType_t clockType, unsigned int* clockMHz) except?_NVMLRETURN_T_INTERNAL_LOADING_ERROR nogil +cdef nvmlReturn_t _nvmlDeviceGetSupportedMemoryClocks(nvmlDevice_t device, unsigned int* count, unsigned int* clocksMHz) except?_NVMLRETURN_T_INTERNAL_LOADING_ERROR nogil +cdef nvmlReturn_t _nvmlDeviceGetSupportedGraphicsClocks(nvmlDevice_t device, unsigned int memoryClockMHz, unsigned int* count, unsigned int* clocksMHz) except?_NVMLRETURN_T_INTERNAL_LOADING_ERROR nogil +cdef nvmlReturn_t _nvmlDeviceGetAutoBoostedClocksEnabled(nvmlDevice_t device, nvmlEnableState_t* isEnabled, nvmlEnableState_t* defaultIsEnabled) except?_NVMLRETURN_T_INTERNAL_LOADING_ERROR nogil +cdef nvmlReturn_t _nvmlDeviceGetFanSpeed(nvmlDevice_t device, unsigned int* speed) except?_NVMLRETURN_T_INTERNAL_LOADING_ERROR nogil +cdef nvmlReturn_t _nvmlDeviceGetFanSpeed_v2(nvmlDevice_t device, unsigned int fan, unsigned int* speed) except?_NVMLRETURN_T_INTERNAL_LOADING_ERROR nogil +cdef nvmlReturn_t _nvmlDeviceGetFanSpeedRPM(nvmlDevice_t device, nvmlFanSpeedInfo_t* fanSpeed) except?_NVMLRETURN_T_INTERNAL_LOADING_ERROR nogil +cdef nvmlReturn_t _nvmlDeviceGetTargetFanSpeed(nvmlDevice_t device, unsigned int fan, unsigned int* targetSpeed) except?_NVMLRETURN_T_INTERNAL_LOADING_ERROR nogil +cdef nvmlReturn_t _nvmlDeviceGetMinMaxFanSpeed(nvmlDevice_t device, unsigned int* minSpeed, unsigned int* maxSpeed) except?_NVMLRETURN_T_INTERNAL_LOADING_ERROR nogil +cdef nvmlReturn_t _nvmlDeviceGetFanControlPolicy_v2(nvmlDevice_t device, unsigned int fan, nvmlFanControlPolicy_t* policy) except?_NVMLRETURN_T_INTERNAL_LOADING_ERROR nogil +cdef nvmlReturn_t _nvmlDeviceGetNumFans(nvmlDevice_t device, unsigned int* numFans) except?_NVMLRETURN_T_INTERNAL_LOADING_ERROR nogil +cdef nvmlReturn_t _nvmlDeviceGetCoolerInfo(nvmlDevice_t device, nvmlCoolerInfo_t* coolerInfo) except?_NVMLRETURN_T_INTERNAL_LOADING_ERROR nogil +cdef nvmlReturn_t _nvmlDeviceGetTemperatureV(nvmlDevice_t device, nvmlTemperature_t* temperature) except?_NVMLRETURN_T_INTERNAL_LOADING_ERROR nogil +cdef nvmlReturn_t _nvmlDeviceGetTemperatureThreshold(nvmlDevice_t device, nvmlTemperatureThresholds_t thresholdType, unsigned int* temp) except?_NVMLRETURN_T_INTERNAL_LOADING_ERROR nogil +cdef nvmlReturn_t _nvmlDeviceGetMarginTemperature(nvmlDevice_t device, nvmlMarginTemperature_t* marginTempInfo) except?_NVMLRETURN_T_INTERNAL_LOADING_ERROR nogil +cdef nvmlReturn_t _nvmlDeviceGetThermalSettings(nvmlDevice_t device, unsigned int sensorIndex, nvmlGpuThermalSettings_t* pThermalSettings) except?_NVMLRETURN_T_INTERNAL_LOADING_ERROR nogil +cdef nvmlReturn_t _nvmlDeviceGetPerformanceState(nvmlDevice_t device, nvmlPstates_t* pState) except?_NVMLRETURN_T_INTERNAL_LOADING_ERROR nogil +cdef nvmlReturn_t _nvmlDeviceGetCurrentClocksEventReasons(nvmlDevice_t device, unsigned long long* clocksEventReasons) except?_NVMLRETURN_T_INTERNAL_LOADING_ERROR nogil +cdef nvmlReturn_t _nvmlDeviceGetSupportedClocksEventReasons(nvmlDevice_t device, unsigned long long* supportedClocksEventReasons) except?_NVMLRETURN_T_INTERNAL_LOADING_ERROR nogil +cdef nvmlReturn_t _nvmlDeviceGetPowerState(nvmlDevice_t device, nvmlPstates_t* pState) except?_NVMLRETURN_T_INTERNAL_LOADING_ERROR nogil +cdef nvmlReturn_t _nvmlDeviceGetDynamicPstatesInfo(nvmlDevice_t device, nvmlGpuDynamicPstatesInfo_t* pDynamicPstatesInfo) except?_NVMLRETURN_T_INTERNAL_LOADING_ERROR nogil +cdef nvmlReturn_t _nvmlDeviceGetMemClkVfOffset(nvmlDevice_t device, int* offset) except?_NVMLRETURN_T_INTERNAL_LOADING_ERROR nogil +cdef nvmlReturn_t _nvmlDeviceGetMinMaxClockOfPState(nvmlDevice_t device, nvmlClockType_t type, nvmlPstates_t pstate, unsigned int* minClockMHz, unsigned int* maxClockMHz) except?_NVMLRETURN_T_INTERNAL_LOADING_ERROR nogil +cdef nvmlReturn_t _nvmlDeviceGetSupportedPerformanceStates(nvmlDevice_t device, nvmlPstates_t* pstates, unsigned int size) except?_NVMLRETURN_T_INTERNAL_LOADING_ERROR nogil +cdef nvmlReturn_t _nvmlDeviceGetGpcClkMinMaxVfOffset(nvmlDevice_t device, int* minOffset, int* maxOffset) except?_NVMLRETURN_T_INTERNAL_LOADING_ERROR nogil +cdef nvmlReturn_t _nvmlDeviceGetMemClkMinMaxVfOffset(nvmlDevice_t device, int* minOffset, int* maxOffset) except?_NVMLRETURN_T_INTERNAL_LOADING_ERROR nogil +cdef nvmlReturn_t _nvmlDeviceGetClockOffsets(nvmlDevice_t device, nvmlClockOffset_t* info) except?_NVMLRETURN_T_INTERNAL_LOADING_ERROR nogil +cdef nvmlReturn_t _nvmlDeviceSetClockOffsets(nvmlDevice_t device, nvmlClockOffset_t* info) except?_NVMLRETURN_T_INTERNAL_LOADING_ERROR nogil +cdef nvmlReturn_t _nvmlDeviceGetPerformanceModes(nvmlDevice_t device, nvmlDevicePerfModes_t* perfModes) except?_NVMLRETURN_T_INTERNAL_LOADING_ERROR nogil +cdef nvmlReturn_t _nvmlDeviceGetCurrentClockFreqs(nvmlDevice_t device, nvmlDeviceCurrentClockFreqs_t* currentClockFreqs) except?_NVMLRETURN_T_INTERNAL_LOADING_ERROR nogil +cdef nvmlReturn_t _nvmlDeviceGetPowerManagementLimit(nvmlDevice_t device, unsigned int* limit) except?_NVMLRETURN_T_INTERNAL_LOADING_ERROR nogil +cdef nvmlReturn_t _nvmlDeviceGetPowerManagementLimitConstraints(nvmlDevice_t device, unsigned int* minLimit, unsigned int* maxLimit) except?_NVMLRETURN_T_INTERNAL_LOADING_ERROR nogil +cdef nvmlReturn_t _nvmlDeviceGetPowerManagementDefaultLimit(nvmlDevice_t device, unsigned int* defaultLimit) except?_NVMLRETURN_T_INTERNAL_LOADING_ERROR nogil +cdef nvmlReturn_t _nvmlDeviceGetPowerUsage(nvmlDevice_t device, unsigned int* power) except?_NVMLRETURN_T_INTERNAL_LOADING_ERROR nogil +cdef nvmlReturn_t _nvmlDeviceGetTotalEnergyConsumption(nvmlDevice_t device, unsigned long long* energy) except?_NVMLRETURN_T_INTERNAL_LOADING_ERROR nogil +cdef nvmlReturn_t _nvmlDeviceGetEnforcedPowerLimit(nvmlDevice_t device, unsigned int* limit) except?_NVMLRETURN_T_INTERNAL_LOADING_ERROR nogil +cdef nvmlReturn_t _nvmlDeviceGetGpuOperationMode(nvmlDevice_t device, nvmlGpuOperationMode_t* current, nvmlGpuOperationMode_t* pending) except?_NVMLRETURN_T_INTERNAL_LOADING_ERROR nogil +cdef nvmlReturn_t _nvmlDeviceGetMemoryInfo_v2(nvmlDevice_t device, nvmlMemory_v2_t* memory) except?_NVMLRETURN_T_INTERNAL_LOADING_ERROR nogil +cdef nvmlReturn_t _nvmlDeviceGetComputeMode(nvmlDevice_t device, nvmlComputeMode_t* mode) except?_NVMLRETURN_T_INTERNAL_LOADING_ERROR nogil +cdef nvmlReturn_t _nvmlDeviceGetCudaComputeCapability(nvmlDevice_t device, int* major, int* minor) except?_NVMLRETURN_T_INTERNAL_LOADING_ERROR nogil +cdef nvmlReturn_t _nvmlDeviceGetDramEncryptionMode(nvmlDevice_t device, nvmlDramEncryptionInfo_t* current, nvmlDramEncryptionInfo_t* pending) except?_NVMLRETURN_T_INTERNAL_LOADING_ERROR nogil +cdef nvmlReturn_t _nvmlDeviceSetDramEncryptionMode(nvmlDevice_t device, const nvmlDramEncryptionInfo_t* dramEncryption) except?_NVMLRETURN_T_INTERNAL_LOADING_ERROR nogil +cdef nvmlReturn_t _nvmlDeviceGetEccMode(nvmlDevice_t device, nvmlEnableState_t* current, nvmlEnableState_t* pending) except?_NVMLRETURN_T_INTERNAL_LOADING_ERROR nogil +cdef nvmlReturn_t _nvmlDeviceGetDefaultEccMode(nvmlDevice_t device, nvmlEnableState_t* defaultMode) except?_NVMLRETURN_T_INTERNAL_LOADING_ERROR nogil +cdef nvmlReturn_t _nvmlDeviceGetBoardId(nvmlDevice_t device, unsigned int* boardId) except?_NVMLRETURN_T_INTERNAL_LOADING_ERROR nogil +cdef nvmlReturn_t _nvmlDeviceGetMultiGpuBoard(nvmlDevice_t device, unsigned int* multiGpuBool) except?_NVMLRETURN_T_INTERNAL_LOADING_ERROR nogil +cdef nvmlReturn_t _nvmlDeviceGetTotalEccErrors(nvmlDevice_t device, nvmlMemoryErrorType_t errorType, nvmlEccCounterType_t counterType, unsigned long long* eccCounts) except?_NVMLRETURN_T_INTERNAL_LOADING_ERROR nogil +cdef nvmlReturn_t _nvmlDeviceGetMemoryErrorCounter(nvmlDevice_t device, nvmlMemoryErrorType_t errorType, nvmlEccCounterType_t counterType, nvmlMemoryLocation_t locationType, unsigned long long* count) except?_NVMLRETURN_T_INTERNAL_LOADING_ERROR nogil +cdef nvmlReturn_t _nvmlDeviceGetUtilizationRates(nvmlDevice_t device, nvmlUtilization_t* utilization) except?_NVMLRETURN_T_INTERNAL_LOADING_ERROR nogil +cdef nvmlReturn_t _nvmlDeviceGetEncoderUtilization(nvmlDevice_t device, unsigned int* utilization, unsigned int* samplingPeriodUs) except?_NVMLRETURN_T_INTERNAL_LOADING_ERROR nogil +cdef nvmlReturn_t _nvmlDeviceGetEncoderCapacity(nvmlDevice_t device, nvmlEncoderType_t encoderQueryType, unsigned int* encoderCapacity) except?_NVMLRETURN_T_INTERNAL_LOADING_ERROR nogil +cdef nvmlReturn_t _nvmlDeviceGetEncoderStats(nvmlDevice_t device, unsigned int* sessionCount, unsigned int* averageFps, unsigned int* averageLatency) except?_NVMLRETURN_T_INTERNAL_LOADING_ERROR nogil +cdef nvmlReturn_t _nvmlDeviceGetEncoderSessions(nvmlDevice_t device, unsigned int* sessionCount, nvmlEncoderSessionInfo_t* sessionInfos) except?_NVMLRETURN_T_INTERNAL_LOADING_ERROR nogil +cdef nvmlReturn_t _nvmlDeviceGetDecoderUtilization(nvmlDevice_t device, unsigned int* utilization, unsigned int* samplingPeriodUs) except?_NVMLRETURN_T_INTERNAL_LOADING_ERROR nogil +cdef nvmlReturn_t _nvmlDeviceGetJpgUtilization(nvmlDevice_t device, unsigned int* utilization, unsigned int* samplingPeriodUs) except?_NVMLRETURN_T_INTERNAL_LOADING_ERROR nogil +cdef nvmlReturn_t _nvmlDeviceGetOfaUtilization(nvmlDevice_t device, unsigned int* utilization, unsigned int* samplingPeriodUs) except?_NVMLRETURN_T_INTERNAL_LOADING_ERROR nogil +cdef nvmlReturn_t _nvmlDeviceGetFBCStats(nvmlDevice_t device, nvmlFBCStats_t* fbcStats) except?_NVMLRETURN_T_INTERNAL_LOADING_ERROR nogil +cdef nvmlReturn_t _nvmlDeviceGetFBCSessions(nvmlDevice_t device, unsigned int* sessionCount, nvmlFBCSessionInfo_t* sessionInfo) except?_NVMLRETURN_T_INTERNAL_LOADING_ERROR nogil +cdef nvmlReturn_t _nvmlDeviceGetDriverModel_v2(nvmlDevice_t device, nvmlDriverModel_t* current, nvmlDriverModel_t* pending) except?_NVMLRETURN_T_INTERNAL_LOADING_ERROR nogil +cdef nvmlReturn_t _nvmlDeviceGetVbiosVersion(nvmlDevice_t device, char* version, unsigned int length) except?_NVMLRETURN_T_INTERNAL_LOADING_ERROR nogil +cdef nvmlReturn_t _nvmlDeviceGetBridgeChipInfo(nvmlDevice_t device, nvmlBridgeChipHierarchy_t* bridgeHierarchy) except?_NVMLRETURN_T_INTERNAL_LOADING_ERROR nogil +cdef nvmlReturn_t _nvmlDeviceGetComputeRunningProcesses_v3(nvmlDevice_t device, unsigned int* infoCount, nvmlProcessInfo_t* infos) except?_NVMLRETURN_T_INTERNAL_LOADING_ERROR nogil +cdef nvmlReturn_t _nvmlDeviceGetGraphicsRunningProcesses_v3(nvmlDevice_t device, unsigned int* infoCount, nvmlProcessInfo_t* infos) except?_NVMLRETURN_T_INTERNAL_LOADING_ERROR nogil +cdef nvmlReturn_t _nvmlDeviceGetMPSComputeRunningProcesses_v3(nvmlDevice_t device, unsigned int* infoCount, nvmlProcessInfo_t* infos) except?_NVMLRETURN_T_INTERNAL_LOADING_ERROR nogil +cdef nvmlReturn_t _nvmlDeviceGetRunningProcessDetailList(nvmlDevice_t device, nvmlProcessDetailList_t* plist) except?_NVMLRETURN_T_INTERNAL_LOADING_ERROR nogil +cdef nvmlReturn_t _nvmlDeviceOnSameBoard(nvmlDevice_t device1, nvmlDevice_t device2, int* onSameBoard) except?_NVMLRETURN_T_INTERNAL_LOADING_ERROR nogil +cdef nvmlReturn_t _nvmlDeviceGetAPIRestriction(nvmlDevice_t device, nvmlRestrictedAPI_t apiType, nvmlEnableState_t* isRestricted) except?_NVMLRETURN_T_INTERNAL_LOADING_ERROR nogil +cdef nvmlReturn_t _nvmlDeviceGetSamples(nvmlDevice_t device, nvmlSamplingType_t type, unsigned long long lastSeenTimeStamp, nvmlValueType_t* sampleValType, unsigned int* sampleCount, nvmlSample_t* samples) except?_NVMLRETURN_T_INTERNAL_LOADING_ERROR nogil +cdef nvmlReturn_t _nvmlDeviceGetBAR1MemoryInfo(nvmlDevice_t device, nvmlBAR1Memory_t* bar1Memory) except?_NVMLRETURN_T_INTERNAL_LOADING_ERROR nogil +cdef nvmlReturn_t _nvmlDeviceGetIrqNum(nvmlDevice_t device, unsigned int* irqNum) except?_NVMLRETURN_T_INTERNAL_LOADING_ERROR nogil +cdef nvmlReturn_t _nvmlDeviceGetNumGpuCores(nvmlDevice_t device, unsigned int* numCores) except?_NVMLRETURN_T_INTERNAL_LOADING_ERROR nogil +cdef nvmlReturn_t _nvmlDeviceGetPowerSource(nvmlDevice_t device, nvmlPowerSource_t* powerSource) except?_NVMLRETURN_T_INTERNAL_LOADING_ERROR nogil +cdef nvmlReturn_t _nvmlDeviceGetMemoryBusWidth(nvmlDevice_t device, unsigned int* busWidth) except?_NVMLRETURN_T_INTERNAL_LOADING_ERROR nogil +cdef nvmlReturn_t _nvmlDeviceGetPcieLinkMaxSpeed(nvmlDevice_t device, unsigned int* maxSpeed) except?_NVMLRETURN_T_INTERNAL_LOADING_ERROR nogil +cdef nvmlReturn_t _nvmlDeviceGetPcieSpeed(nvmlDevice_t device, unsigned int* pcieSpeed) except?_NVMLRETURN_T_INTERNAL_LOADING_ERROR nogil +cdef nvmlReturn_t _nvmlDeviceGetAdaptiveClockInfoStatus(nvmlDevice_t device, unsigned int* adaptiveClockStatus) except?_NVMLRETURN_T_INTERNAL_LOADING_ERROR nogil +cdef nvmlReturn_t _nvmlDeviceGetBusType(nvmlDevice_t device, nvmlBusType_t* type) except?_NVMLRETURN_T_INTERNAL_LOADING_ERROR nogil +cdef nvmlReturn_t _nvmlDeviceGetGpuFabricInfoV(nvmlDevice_t device, nvmlGpuFabricInfoV_t* gpuFabricInfo) except?_NVMLRETURN_T_INTERNAL_LOADING_ERROR nogil +cdef nvmlReturn_t _nvmlSystemGetConfComputeCapabilities(nvmlConfComputeSystemCaps_t* capabilities) except?_NVMLRETURN_T_INTERNAL_LOADING_ERROR nogil +cdef nvmlReturn_t _nvmlSystemGetConfComputeState(nvmlConfComputeSystemState_t* state) except?_NVMLRETURN_T_INTERNAL_LOADING_ERROR nogil +cdef nvmlReturn_t _nvmlDeviceGetConfComputeMemSizeInfo(nvmlDevice_t device, nvmlConfComputeMemSizeInfo_t* memInfo) except?_NVMLRETURN_T_INTERNAL_LOADING_ERROR nogil +cdef nvmlReturn_t _nvmlSystemGetConfComputeGpusReadyState(unsigned int* isAcceptingWork) except?_NVMLRETURN_T_INTERNAL_LOADING_ERROR nogil +cdef nvmlReturn_t _nvmlDeviceGetConfComputeProtectedMemoryUsage(nvmlDevice_t device, nvmlMemory_t* memory) except?_NVMLRETURN_T_INTERNAL_LOADING_ERROR nogil +cdef nvmlReturn_t _nvmlDeviceGetConfComputeGpuCertificate(nvmlDevice_t device, nvmlConfComputeGpuCertificate_t* gpuCert) except?_NVMLRETURN_T_INTERNAL_LOADING_ERROR nogil +cdef nvmlReturn_t _nvmlDeviceGetConfComputeGpuAttestationReport(nvmlDevice_t device, nvmlConfComputeGpuAttestationReport_t* gpuAtstReport) except?_NVMLRETURN_T_INTERNAL_LOADING_ERROR nogil +cdef nvmlReturn_t _nvmlSystemGetConfComputeKeyRotationThresholdInfo(nvmlConfComputeGetKeyRotationThresholdInfo_t* pKeyRotationThrInfo) except?_NVMLRETURN_T_INTERNAL_LOADING_ERROR nogil +cdef nvmlReturn_t _nvmlDeviceSetConfComputeUnprotectedMemSize(nvmlDevice_t device, unsigned long long sizeKiB) except?_NVMLRETURN_T_INTERNAL_LOADING_ERROR nogil +cdef nvmlReturn_t _nvmlSystemSetConfComputeGpusReadyState(unsigned int isAcceptingWork) except?_NVMLRETURN_T_INTERNAL_LOADING_ERROR nogil +cdef nvmlReturn_t _nvmlSystemSetConfComputeKeyRotationThresholdInfo(nvmlConfComputeSetKeyRotationThresholdInfo_t* pKeyRotationThrInfo) except?_NVMLRETURN_T_INTERNAL_LOADING_ERROR nogil +cdef nvmlReturn_t _nvmlSystemGetConfComputeSettings(nvmlSystemConfComputeSettings_t* settings) except?_NVMLRETURN_T_INTERNAL_LOADING_ERROR nogil +cdef nvmlReturn_t _nvmlDeviceGetGspFirmwareVersion(nvmlDevice_t device, char* version) except?_NVMLRETURN_T_INTERNAL_LOADING_ERROR nogil +cdef nvmlReturn_t _nvmlDeviceGetGspFirmwareMode(nvmlDevice_t device, unsigned int* isEnabled, unsigned int* defaultMode) except?_NVMLRETURN_T_INTERNAL_LOADING_ERROR nogil +cdef nvmlReturn_t _nvmlDeviceGetSramEccErrorStatus(nvmlDevice_t device, nvmlEccSramErrorStatus_t* status) except?_NVMLRETURN_T_INTERNAL_LOADING_ERROR nogil +cdef nvmlReturn_t _nvmlDeviceGetAccountingMode(nvmlDevice_t device, nvmlEnableState_t* mode) except?_NVMLRETURN_T_INTERNAL_LOADING_ERROR nogil +cdef nvmlReturn_t _nvmlDeviceGetAccountingStats(nvmlDevice_t device, unsigned int pid, nvmlAccountingStats_t* stats) except?_NVMLRETURN_T_INTERNAL_LOADING_ERROR nogil +cdef nvmlReturn_t _nvmlDeviceGetAccountingPids(nvmlDevice_t device, unsigned int* count, unsigned int* pids) except?_NVMLRETURN_T_INTERNAL_LOADING_ERROR nogil +cdef nvmlReturn_t _nvmlDeviceGetAccountingBufferSize(nvmlDevice_t device, unsigned int* bufferSize) except?_NVMLRETURN_T_INTERNAL_LOADING_ERROR nogil +cdef nvmlReturn_t _nvmlDeviceGetRetiredPages(nvmlDevice_t device, nvmlPageRetirementCause_t cause, unsigned int* pageCount, unsigned long long* addresses) except?_NVMLRETURN_T_INTERNAL_LOADING_ERROR nogil +cdef nvmlReturn_t _nvmlDeviceGetRetiredPages_v2(nvmlDevice_t device, nvmlPageRetirementCause_t cause, unsigned int* pageCount, unsigned long long* addresses, unsigned long long* timestamps) except?_NVMLRETURN_T_INTERNAL_LOADING_ERROR nogil +cdef nvmlReturn_t _nvmlDeviceGetRetiredPagesPendingStatus(nvmlDevice_t device, nvmlEnableState_t* isPending) except?_NVMLRETURN_T_INTERNAL_LOADING_ERROR nogil +cdef nvmlReturn_t _nvmlDeviceGetRemappedRows(nvmlDevice_t device, unsigned int* corrRows, unsigned int* uncRows, unsigned int* isPending, unsigned int* failureOccurred) except?_NVMLRETURN_T_INTERNAL_LOADING_ERROR nogil +cdef nvmlReturn_t _nvmlDeviceGetRowRemapperHistogram(nvmlDevice_t device, nvmlRowRemapperHistogramValues_t* values) except?_NVMLRETURN_T_INTERNAL_LOADING_ERROR nogil +cdef nvmlReturn_t _nvmlDeviceGetArchitecture(nvmlDevice_t device, nvmlDeviceArchitecture_t* arch) except?_NVMLRETURN_T_INTERNAL_LOADING_ERROR nogil +cdef nvmlReturn_t _nvmlDeviceGetClkMonStatus(nvmlDevice_t device, nvmlClkMonStatus_t* status) except?_NVMLRETURN_T_INTERNAL_LOADING_ERROR nogil +cdef nvmlReturn_t _nvmlDeviceGetProcessUtilization(nvmlDevice_t device, nvmlProcessUtilizationSample_t* utilization, unsigned int* processSamplesCount, unsigned long long lastSeenTimeStamp) except?_NVMLRETURN_T_INTERNAL_LOADING_ERROR nogil +cdef nvmlReturn_t _nvmlDeviceGetProcessesUtilizationInfo(nvmlDevice_t device, nvmlProcessesUtilizationInfo_t* procesesUtilInfo) except?_NVMLRETURN_T_INTERNAL_LOADING_ERROR nogil +cdef nvmlReturn_t _nvmlDeviceGetPlatformInfo(nvmlDevice_t device, nvmlPlatformInfo_t* platformInfo) except?_NVMLRETURN_T_INTERNAL_LOADING_ERROR nogil +cdef nvmlReturn_t _nvmlUnitSetLedState(nvmlUnit_t unit, nvmlLedColor_t color) except?_NVMLRETURN_T_INTERNAL_LOADING_ERROR nogil +cdef nvmlReturn_t _nvmlDeviceSetPersistenceMode(nvmlDevice_t device, nvmlEnableState_t mode) except?_NVMLRETURN_T_INTERNAL_LOADING_ERROR nogil +cdef nvmlReturn_t _nvmlDeviceSetComputeMode(nvmlDevice_t device, nvmlComputeMode_t mode) except?_NVMLRETURN_T_INTERNAL_LOADING_ERROR nogil +cdef nvmlReturn_t _nvmlDeviceSetEccMode(nvmlDevice_t device, nvmlEnableState_t ecc) except?_NVMLRETURN_T_INTERNAL_LOADING_ERROR nogil +cdef nvmlReturn_t _nvmlDeviceClearEccErrorCounts(nvmlDevice_t device, nvmlEccCounterType_t counterType) except?_NVMLRETURN_T_INTERNAL_LOADING_ERROR nogil +cdef nvmlReturn_t _nvmlDeviceSetDriverModel(nvmlDevice_t device, nvmlDriverModel_t driverModel, unsigned int flags) except?_NVMLRETURN_T_INTERNAL_LOADING_ERROR nogil +cdef nvmlReturn_t _nvmlDeviceSetGpuLockedClocks(nvmlDevice_t device, unsigned int minGpuClockMHz, unsigned int maxGpuClockMHz) except?_NVMLRETURN_T_INTERNAL_LOADING_ERROR nogil +cdef nvmlReturn_t _nvmlDeviceResetGpuLockedClocks(nvmlDevice_t device) except?_NVMLRETURN_T_INTERNAL_LOADING_ERROR nogil +cdef nvmlReturn_t _nvmlDeviceSetMemoryLockedClocks(nvmlDevice_t device, unsigned int minMemClockMHz, unsigned int maxMemClockMHz) except?_NVMLRETURN_T_INTERNAL_LOADING_ERROR nogil +cdef nvmlReturn_t _nvmlDeviceResetMemoryLockedClocks(nvmlDevice_t device) except?_NVMLRETURN_T_INTERNAL_LOADING_ERROR nogil +cdef nvmlReturn_t _nvmlDeviceSetAutoBoostedClocksEnabled(nvmlDevice_t device, nvmlEnableState_t enabled) except?_NVMLRETURN_T_INTERNAL_LOADING_ERROR nogil +cdef nvmlReturn_t _nvmlDeviceSetDefaultAutoBoostedClocksEnabled(nvmlDevice_t device, nvmlEnableState_t enabled, unsigned int flags) except?_NVMLRETURN_T_INTERNAL_LOADING_ERROR nogil +cdef nvmlReturn_t _nvmlDeviceSetDefaultFanSpeed_v2(nvmlDevice_t device, unsigned int fan) except?_NVMLRETURN_T_INTERNAL_LOADING_ERROR nogil +cdef nvmlReturn_t _nvmlDeviceSetFanControlPolicy(nvmlDevice_t device, unsigned int fan, nvmlFanControlPolicy_t policy) except?_NVMLRETURN_T_INTERNAL_LOADING_ERROR nogil +cdef nvmlReturn_t _nvmlDeviceSetTemperatureThreshold(nvmlDevice_t device, nvmlTemperatureThresholds_t thresholdType, int* temp) except?_NVMLRETURN_T_INTERNAL_LOADING_ERROR nogil +cdef nvmlReturn_t _nvmlDeviceSetGpuOperationMode(nvmlDevice_t device, nvmlGpuOperationMode_t mode) except?_NVMLRETURN_T_INTERNAL_LOADING_ERROR nogil +cdef nvmlReturn_t _nvmlDeviceSetAPIRestriction(nvmlDevice_t device, nvmlRestrictedAPI_t apiType, nvmlEnableState_t isRestricted) except?_NVMLRETURN_T_INTERNAL_LOADING_ERROR nogil +cdef nvmlReturn_t _nvmlDeviceSetFanSpeed_v2(nvmlDevice_t device, unsigned int fan, unsigned int speed) except?_NVMLRETURN_T_INTERNAL_LOADING_ERROR nogil +cdef nvmlReturn_t _nvmlDeviceSetAccountingMode(nvmlDevice_t device, nvmlEnableState_t mode) except?_NVMLRETURN_T_INTERNAL_LOADING_ERROR nogil +cdef nvmlReturn_t _nvmlDeviceClearAccountingPids(nvmlDevice_t device) except?_NVMLRETURN_T_INTERNAL_LOADING_ERROR nogil +cdef nvmlReturn_t _nvmlDeviceSetPowerManagementLimit_v2(nvmlDevice_t device, nvmlPowerValue_v2_t* powerValue) except?_NVMLRETURN_T_INTERNAL_LOADING_ERROR nogil +cdef nvmlReturn_t _nvmlDeviceGetNvLinkState(nvmlDevice_t device, unsigned int link, nvmlEnableState_t* isActive) except?_NVMLRETURN_T_INTERNAL_LOADING_ERROR nogil +cdef nvmlReturn_t _nvmlDeviceGetNvLinkVersion(nvmlDevice_t device, unsigned int link, unsigned int* version) except?_NVMLRETURN_T_INTERNAL_LOADING_ERROR nogil +cdef nvmlReturn_t _nvmlDeviceGetNvLinkCapability(nvmlDevice_t device, unsigned int link, nvmlNvLinkCapability_t capability, unsigned int* capResult) except?_NVMLRETURN_T_INTERNAL_LOADING_ERROR nogil +cdef nvmlReturn_t _nvmlDeviceGetNvLinkRemotePciInfo_v2(nvmlDevice_t device, unsigned int link, nvmlPciInfo_t* pci) except?_NVMLRETURN_T_INTERNAL_LOADING_ERROR nogil +cdef nvmlReturn_t _nvmlDeviceGetNvLinkErrorCounter(nvmlDevice_t device, unsigned int link, nvmlNvLinkErrorCounter_t counter, unsigned long long* counterValue) except?_NVMLRETURN_T_INTERNAL_LOADING_ERROR nogil +cdef nvmlReturn_t _nvmlDeviceResetNvLinkErrorCounters(nvmlDevice_t device, unsigned int link) except?_NVMLRETURN_T_INTERNAL_LOADING_ERROR nogil +cdef nvmlReturn_t _nvmlDeviceGetNvLinkRemoteDeviceType(nvmlDevice_t device, unsigned int link, nvmlIntNvLinkDeviceType_t* pNvLinkDeviceType) except?_NVMLRETURN_T_INTERNAL_LOADING_ERROR nogil +cdef nvmlReturn_t _nvmlDeviceSetNvLinkDeviceLowPowerThreshold(nvmlDevice_t device, nvmlNvLinkPowerThres_t* info) except?_NVMLRETURN_T_INTERNAL_LOADING_ERROR nogil +cdef nvmlReturn_t _nvmlSystemSetNvlinkBwMode(unsigned int nvlinkBwMode) except?_NVMLRETURN_T_INTERNAL_LOADING_ERROR nogil +cdef nvmlReturn_t _nvmlSystemGetNvlinkBwMode(unsigned int* nvlinkBwMode) except?_NVMLRETURN_T_INTERNAL_LOADING_ERROR nogil +cdef nvmlReturn_t _nvmlDeviceGetNvlinkSupportedBwModes(nvmlDevice_t device, nvmlNvlinkSupportedBwModes_t* supportedBwMode) except?_NVMLRETURN_T_INTERNAL_LOADING_ERROR nogil +cdef nvmlReturn_t _nvmlDeviceGetNvlinkBwMode(nvmlDevice_t device, nvmlNvlinkGetBwMode_t* getBwMode) except?_NVMLRETURN_T_INTERNAL_LOADING_ERROR nogil +cdef nvmlReturn_t _nvmlDeviceSetNvlinkBwMode(nvmlDevice_t device, nvmlNvlinkSetBwMode_t* setBwMode) except?_NVMLRETURN_T_INTERNAL_LOADING_ERROR nogil +cdef nvmlReturn_t _nvmlEventSetCreate(nvmlEventSet_t* set) except?_NVMLRETURN_T_INTERNAL_LOADING_ERROR nogil +cdef nvmlReturn_t _nvmlDeviceRegisterEvents(nvmlDevice_t device, unsigned long long eventTypes, nvmlEventSet_t set) except?_NVMLRETURN_T_INTERNAL_LOADING_ERROR nogil +cdef nvmlReturn_t _nvmlDeviceGetSupportedEventTypes(nvmlDevice_t device, unsigned long long* eventTypes) except?_NVMLRETURN_T_INTERNAL_LOADING_ERROR nogil +cdef nvmlReturn_t _nvmlEventSetWait_v2(nvmlEventSet_t set, nvmlEventData_t* data, unsigned int timeoutms) except?_NVMLRETURN_T_INTERNAL_LOADING_ERROR nogil +cdef nvmlReturn_t _nvmlEventSetFree(nvmlEventSet_t set) except?_NVMLRETURN_T_INTERNAL_LOADING_ERROR nogil +cdef nvmlReturn_t _nvmlSystemEventSetCreate(nvmlSystemEventSetCreateRequest_t* request) except?_NVMLRETURN_T_INTERNAL_LOADING_ERROR nogil +cdef nvmlReturn_t _nvmlSystemEventSetFree(nvmlSystemEventSetFreeRequest_t* request) except?_NVMLRETURN_T_INTERNAL_LOADING_ERROR nogil +cdef nvmlReturn_t _nvmlSystemRegisterEvents(nvmlSystemRegisterEventRequest_t* request) except?_NVMLRETURN_T_INTERNAL_LOADING_ERROR nogil +cdef nvmlReturn_t _nvmlSystemEventSetWait(nvmlSystemEventSetWaitRequest_t* request) except?_NVMLRETURN_T_INTERNAL_LOADING_ERROR nogil +cdef nvmlReturn_t _nvmlDeviceModifyDrainState(nvmlPciInfo_t* pciInfo, nvmlEnableState_t newState) except?_NVMLRETURN_T_INTERNAL_LOADING_ERROR nogil +cdef nvmlReturn_t _nvmlDeviceQueryDrainState(nvmlPciInfo_t* pciInfo, nvmlEnableState_t* currentState) except?_NVMLRETURN_T_INTERNAL_LOADING_ERROR nogil +cdef nvmlReturn_t _nvmlDeviceRemoveGpu_v2(nvmlPciInfo_t* pciInfo, nvmlDetachGpuState_t gpuState, nvmlPcieLinkState_t linkState) except?_NVMLRETURN_T_INTERNAL_LOADING_ERROR nogil +cdef nvmlReturn_t _nvmlDeviceDiscoverGpus(nvmlPciInfo_t* pciInfo) except?_NVMLRETURN_T_INTERNAL_LOADING_ERROR nogil +cdef nvmlReturn_t _nvmlDeviceGetFieldValues(nvmlDevice_t device, int valuesCount, nvmlFieldValue_t* values) except?_NVMLRETURN_T_INTERNAL_LOADING_ERROR nogil +cdef nvmlReturn_t _nvmlDeviceClearFieldValues(nvmlDevice_t device, int valuesCount, nvmlFieldValue_t* values) except?_NVMLRETURN_T_INTERNAL_LOADING_ERROR nogil +cdef nvmlReturn_t _nvmlDeviceGetVirtualizationMode(nvmlDevice_t device, nvmlGpuVirtualizationMode_t* pVirtualMode) except?_NVMLRETURN_T_INTERNAL_LOADING_ERROR nogil +cdef nvmlReturn_t _nvmlDeviceGetHostVgpuMode(nvmlDevice_t device, nvmlHostVgpuMode_t* pHostVgpuMode) except?_NVMLRETURN_T_INTERNAL_LOADING_ERROR nogil +cdef nvmlReturn_t _nvmlDeviceSetVirtualizationMode(nvmlDevice_t device, nvmlGpuVirtualizationMode_t virtualMode) except?_NVMLRETURN_T_INTERNAL_LOADING_ERROR nogil +cdef nvmlReturn_t _nvmlDeviceGetVgpuHeterogeneousMode(nvmlDevice_t device, nvmlVgpuHeterogeneousMode_t* pHeterogeneousMode) except?_NVMLRETURN_T_INTERNAL_LOADING_ERROR nogil +cdef nvmlReturn_t _nvmlDeviceSetVgpuHeterogeneousMode(nvmlDevice_t device, const nvmlVgpuHeterogeneousMode_t* pHeterogeneousMode) except?_NVMLRETURN_T_INTERNAL_LOADING_ERROR nogil +cdef nvmlReturn_t _nvmlVgpuInstanceGetPlacementId(nvmlVgpuInstance_t vgpuInstance, nvmlVgpuPlacementId_t* pPlacement) except?_NVMLRETURN_T_INTERNAL_LOADING_ERROR nogil +cdef nvmlReturn_t _nvmlDeviceGetVgpuTypeSupportedPlacements(nvmlDevice_t device, nvmlVgpuTypeId_t vgpuTypeId, nvmlVgpuPlacementList_t* pPlacementList) except?_NVMLRETURN_T_INTERNAL_LOADING_ERROR nogil +cdef nvmlReturn_t _nvmlDeviceGetVgpuTypeCreatablePlacements(nvmlDevice_t device, nvmlVgpuTypeId_t vgpuTypeId, nvmlVgpuPlacementList_t* pPlacementList) except?_NVMLRETURN_T_INTERNAL_LOADING_ERROR nogil +cdef nvmlReturn_t _nvmlVgpuTypeGetGspHeapSize(nvmlVgpuTypeId_t vgpuTypeId, unsigned long long* gspHeapSize) except?_NVMLRETURN_T_INTERNAL_LOADING_ERROR nogil +cdef nvmlReturn_t _nvmlVgpuTypeGetFbReservation(nvmlVgpuTypeId_t vgpuTypeId, unsigned long long* fbReservation) except?_NVMLRETURN_T_INTERNAL_LOADING_ERROR nogil +cdef nvmlReturn_t _nvmlVgpuInstanceGetRuntimeStateSize(nvmlVgpuInstance_t vgpuInstance, nvmlVgpuRuntimeState_t* pState) except?_NVMLRETURN_T_INTERNAL_LOADING_ERROR nogil +cdef nvmlReturn_t _nvmlDeviceSetVgpuCapabilities(nvmlDevice_t device, nvmlDeviceVgpuCapability_t capability, nvmlEnableState_t state) except?_NVMLRETURN_T_INTERNAL_LOADING_ERROR nogil +cdef nvmlReturn_t _nvmlDeviceGetGridLicensableFeatures_v4(nvmlDevice_t device, nvmlGridLicensableFeatures_t* pGridLicensableFeatures) except?_NVMLRETURN_T_INTERNAL_LOADING_ERROR nogil +cdef nvmlReturn_t _nvmlGetVgpuDriverCapabilities(nvmlVgpuDriverCapability_t capability, unsigned int* capResult) except?_NVMLRETURN_T_INTERNAL_LOADING_ERROR nogil +cdef nvmlReturn_t _nvmlDeviceGetVgpuCapabilities(nvmlDevice_t device, nvmlDeviceVgpuCapability_t capability, unsigned int* capResult) except?_NVMLRETURN_T_INTERNAL_LOADING_ERROR nogil +cdef nvmlReturn_t _nvmlDeviceGetSupportedVgpus(nvmlDevice_t device, unsigned int* vgpuCount, nvmlVgpuTypeId_t* vgpuTypeIds) except?_NVMLRETURN_T_INTERNAL_LOADING_ERROR nogil +cdef nvmlReturn_t _nvmlDeviceGetCreatableVgpus(nvmlDevice_t device, unsigned int* vgpuCount, nvmlVgpuTypeId_t* vgpuTypeIds) except?_NVMLRETURN_T_INTERNAL_LOADING_ERROR nogil +cdef nvmlReturn_t _nvmlVgpuTypeGetClass(nvmlVgpuTypeId_t vgpuTypeId, char* vgpuTypeClass, unsigned int* size) except?_NVMLRETURN_T_INTERNAL_LOADING_ERROR nogil +cdef nvmlReturn_t _nvmlVgpuTypeGetName(nvmlVgpuTypeId_t vgpuTypeId, char* vgpuTypeName, unsigned int* size) except?_NVMLRETURN_T_INTERNAL_LOADING_ERROR nogil +cdef nvmlReturn_t _nvmlVgpuTypeGetGpuInstanceProfileId(nvmlVgpuTypeId_t vgpuTypeId, unsigned int* gpuInstanceProfileId) except?_NVMLRETURN_T_INTERNAL_LOADING_ERROR nogil +cdef nvmlReturn_t _nvmlVgpuTypeGetDeviceID(nvmlVgpuTypeId_t vgpuTypeId, unsigned long long* deviceID, unsigned long long* subsystemID) except?_NVMLRETURN_T_INTERNAL_LOADING_ERROR nogil +cdef nvmlReturn_t _nvmlVgpuTypeGetFramebufferSize(nvmlVgpuTypeId_t vgpuTypeId, unsigned long long* fbSize) except?_NVMLRETURN_T_INTERNAL_LOADING_ERROR nogil +cdef nvmlReturn_t _nvmlVgpuTypeGetNumDisplayHeads(nvmlVgpuTypeId_t vgpuTypeId, unsigned int* numDisplayHeads) except?_NVMLRETURN_T_INTERNAL_LOADING_ERROR nogil +cdef nvmlReturn_t _nvmlVgpuTypeGetResolution(nvmlVgpuTypeId_t vgpuTypeId, unsigned int displayIndex, unsigned int* xdim, unsigned int* ydim) except?_NVMLRETURN_T_INTERNAL_LOADING_ERROR nogil +cdef nvmlReturn_t _nvmlVgpuTypeGetLicense(nvmlVgpuTypeId_t vgpuTypeId, char* vgpuTypeLicenseString, unsigned int size) except?_NVMLRETURN_T_INTERNAL_LOADING_ERROR nogil +cdef nvmlReturn_t _nvmlVgpuTypeGetFrameRateLimit(nvmlVgpuTypeId_t vgpuTypeId, unsigned int* frameRateLimit) except?_NVMLRETURN_T_INTERNAL_LOADING_ERROR nogil +cdef nvmlReturn_t _nvmlVgpuTypeGetMaxInstances(nvmlDevice_t device, nvmlVgpuTypeId_t vgpuTypeId, unsigned int* vgpuInstanceCount) except?_NVMLRETURN_T_INTERNAL_LOADING_ERROR nogil +cdef nvmlReturn_t _nvmlVgpuTypeGetMaxInstancesPerVm(nvmlVgpuTypeId_t vgpuTypeId, unsigned int* vgpuInstanceCountPerVm) except?_NVMLRETURN_T_INTERNAL_LOADING_ERROR nogil +cdef nvmlReturn_t _nvmlVgpuTypeGetBAR1Info(nvmlVgpuTypeId_t vgpuTypeId, nvmlVgpuTypeBar1Info_t* bar1Info) except?_NVMLRETURN_T_INTERNAL_LOADING_ERROR nogil +cdef nvmlReturn_t _nvmlDeviceGetActiveVgpus(nvmlDevice_t device, unsigned int* vgpuCount, nvmlVgpuInstance_t* vgpuInstances) except?_NVMLRETURN_T_INTERNAL_LOADING_ERROR nogil +cdef nvmlReturn_t _nvmlVgpuInstanceGetVmID(nvmlVgpuInstance_t vgpuInstance, char* vmId, unsigned int size, nvmlVgpuVmIdType_t* vmIdType) except?_NVMLRETURN_T_INTERNAL_LOADING_ERROR nogil +cdef nvmlReturn_t _nvmlVgpuInstanceGetUUID(nvmlVgpuInstance_t vgpuInstance, char* uuid, unsigned int size) except?_NVMLRETURN_T_INTERNAL_LOADING_ERROR nogil +cdef nvmlReturn_t _nvmlVgpuInstanceGetVmDriverVersion(nvmlVgpuInstance_t vgpuInstance, char* version, unsigned int length) except?_NVMLRETURN_T_INTERNAL_LOADING_ERROR nogil +cdef nvmlReturn_t _nvmlVgpuInstanceGetFbUsage(nvmlVgpuInstance_t vgpuInstance, unsigned long long* fbUsage) except?_NVMLRETURN_T_INTERNAL_LOADING_ERROR nogil +cdef nvmlReturn_t _nvmlVgpuInstanceGetLicenseStatus(nvmlVgpuInstance_t vgpuInstance, unsigned int* licensed) except?_NVMLRETURN_T_INTERNAL_LOADING_ERROR nogil +cdef nvmlReturn_t _nvmlVgpuInstanceGetType(nvmlVgpuInstance_t vgpuInstance, nvmlVgpuTypeId_t* vgpuTypeId) except?_NVMLRETURN_T_INTERNAL_LOADING_ERROR nogil +cdef nvmlReturn_t _nvmlVgpuInstanceGetFrameRateLimit(nvmlVgpuInstance_t vgpuInstance, unsigned int* frameRateLimit) except?_NVMLRETURN_T_INTERNAL_LOADING_ERROR nogil +cdef nvmlReturn_t _nvmlVgpuInstanceGetEccMode(nvmlVgpuInstance_t vgpuInstance, nvmlEnableState_t* eccMode) except?_NVMLRETURN_T_INTERNAL_LOADING_ERROR nogil +cdef nvmlReturn_t _nvmlVgpuInstanceGetEncoderCapacity(nvmlVgpuInstance_t vgpuInstance, unsigned int* encoderCapacity) except?_NVMLRETURN_T_INTERNAL_LOADING_ERROR nogil +cdef nvmlReturn_t _nvmlVgpuInstanceSetEncoderCapacity(nvmlVgpuInstance_t vgpuInstance, unsigned int encoderCapacity) except?_NVMLRETURN_T_INTERNAL_LOADING_ERROR nogil +cdef nvmlReturn_t _nvmlVgpuInstanceGetEncoderStats(nvmlVgpuInstance_t vgpuInstance, unsigned int* sessionCount, unsigned int* averageFps, unsigned int* averageLatency) except?_NVMLRETURN_T_INTERNAL_LOADING_ERROR nogil +cdef nvmlReturn_t _nvmlVgpuInstanceGetEncoderSessions(nvmlVgpuInstance_t vgpuInstance, unsigned int* sessionCount, nvmlEncoderSessionInfo_t* sessionInfo) except?_NVMLRETURN_T_INTERNAL_LOADING_ERROR nogil +cdef nvmlReturn_t _nvmlVgpuInstanceGetFBCStats(nvmlVgpuInstance_t vgpuInstance, nvmlFBCStats_t* fbcStats) except?_NVMLRETURN_T_INTERNAL_LOADING_ERROR nogil +cdef nvmlReturn_t _nvmlVgpuInstanceGetFBCSessions(nvmlVgpuInstance_t vgpuInstance, unsigned int* sessionCount, nvmlFBCSessionInfo_t* sessionInfo) except?_NVMLRETURN_T_INTERNAL_LOADING_ERROR nogil +cdef nvmlReturn_t _nvmlVgpuInstanceGetGpuInstanceId(nvmlVgpuInstance_t vgpuInstance, unsigned int* gpuInstanceId) except?_NVMLRETURN_T_INTERNAL_LOADING_ERROR nogil +cdef nvmlReturn_t _nvmlVgpuInstanceGetGpuPciId(nvmlVgpuInstance_t vgpuInstance, char* vgpuPciId, unsigned int* length) except?_NVMLRETURN_T_INTERNAL_LOADING_ERROR nogil +cdef nvmlReturn_t _nvmlVgpuTypeGetCapabilities(nvmlVgpuTypeId_t vgpuTypeId, nvmlVgpuCapability_t capability, unsigned int* capResult) except?_NVMLRETURN_T_INTERNAL_LOADING_ERROR nogil +cdef nvmlReturn_t _nvmlVgpuInstanceGetMdevUUID(nvmlVgpuInstance_t vgpuInstance, char* mdevUuid, unsigned int size) except?_NVMLRETURN_T_INTERNAL_LOADING_ERROR nogil +cdef nvmlReturn_t _nvmlGpuInstanceGetCreatableVgpus(nvmlGpuInstance_t gpuInstance, nvmlVgpuTypeIdInfo_t* pVgpus) except?_NVMLRETURN_T_INTERNAL_LOADING_ERROR nogil +cdef nvmlReturn_t _nvmlVgpuTypeGetMaxInstancesPerGpuInstance(nvmlVgpuTypeMaxInstance_t* pMaxInstance) except?_NVMLRETURN_T_INTERNAL_LOADING_ERROR nogil +cdef nvmlReturn_t _nvmlGpuInstanceGetActiveVgpus(nvmlGpuInstance_t gpuInstance, nvmlActiveVgpuInstanceInfo_t* pVgpuInstanceInfo) except?_NVMLRETURN_T_INTERNAL_LOADING_ERROR nogil +cdef nvmlReturn_t _nvmlGpuInstanceSetVgpuSchedulerState(nvmlGpuInstance_t gpuInstance, nvmlVgpuSchedulerState_t* pScheduler) except?_NVMLRETURN_T_INTERNAL_LOADING_ERROR nogil +cdef nvmlReturn_t _nvmlGpuInstanceGetVgpuSchedulerState(nvmlGpuInstance_t gpuInstance, nvmlVgpuSchedulerStateInfo_t* pSchedulerStateInfo) except?_NVMLRETURN_T_INTERNAL_LOADING_ERROR nogil +cdef nvmlReturn_t _nvmlGpuInstanceGetVgpuSchedulerLog(nvmlGpuInstance_t gpuInstance, nvmlVgpuSchedulerLogInfo_t* pSchedulerLogInfo) except?_NVMLRETURN_T_INTERNAL_LOADING_ERROR nogil +cdef nvmlReturn_t _nvmlGpuInstanceGetVgpuTypeCreatablePlacements(nvmlGpuInstance_t gpuInstance, nvmlVgpuCreatablePlacementInfo_t* pCreatablePlacementInfo) except?_NVMLRETURN_T_INTERNAL_LOADING_ERROR nogil +cdef nvmlReturn_t _nvmlGpuInstanceGetVgpuHeterogeneousMode(nvmlGpuInstance_t gpuInstance, nvmlVgpuHeterogeneousMode_t* pHeterogeneousMode) except?_NVMLRETURN_T_INTERNAL_LOADING_ERROR nogil +cdef nvmlReturn_t _nvmlGpuInstanceSetVgpuHeterogeneousMode(nvmlGpuInstance_t gpuInstance, const nvmlVgpuHeterogeneousMode_t* pHeterogeneousMode) except?_NVMLRETURN_T_INTERNAL_LOADING_ERROR nogil +cdef nvmlReturn_t _nvmlVgpuInstanceGetMetadata(nvmlVgpuInstance_t vgpuInstance, nvmlVgpuMetadata_t* vgpuMetadata, unsigned int* bufferSize) except?_NVMLRETURN_T_INTERNAL_LOADING_ERROR nogil +cdef nvmlReturn_t _nvmlDeviceGetVgpuMetadata(nvmlDevice_t device, nvmlVgpuPgpuMetadata_t* pgpuMetadata, unsigned int* bufferSize) except?_NVMLRETURN_T_INTERNAL_LOADING_ERROR nogil +cdef nvmlReturn_t _nvmlGetVgpuCompatibility(nvmlVgpuMetadata_t* vgpuMetadata, nvmlVgpuPgpuMetadata_t* pgpuMetadata, nvmlVgpuPgpuCompatibility_t* compatibilityInfo) except?_NVMLRETURN_T_INTERNAL_LOADING_ERROR nogil +cdef nvmlReturn_t _nvmlDeviceGetPgpuMetadataString(nvmlDevice_t device, char* pgpuMetadata, unsigned int* bufferSize) except?_NVMLRETURN_T_INTERNAL_LOADING_ERROR nogil +cdef nvmlReturn_t _nvmlDeviceGetVgpuSchedulerLog(nvmlDevice_t device, nvmlVgpuSchedulerLog_t* pSchedulerLog) except?_NVMLRETURN_T_INTERNAL_LOADING_ERROR nogil +cdef nvmlReturn_t _nvmlDeviceGetVgpuSchedulerState(nvmlDevice_t device, nvmlVgpuSchedulerGetState_t* pSchedulerState) except?_NVMLRETURN_T_INTERNAL_LOADING_ERROR nogil +cdef nvmlReturn_t _nvmlDeviceGetVgpuSchedulerCapabilities(nvmlDevice_t device, nvmlVgpuSchedulerCapabilities_t* pCapabilities) except?_NVMLRETURN_T_INTERNAL_LOADING_ERROR nogil +cdef nvmlReturn_t _nvmlDeviceSetVgpuSchedulerState(nvmlDevice_t device, nvmlVgpuSchedulerSetState_t* pSchedulerState) except?_NVMLRETURN_T_INTERNAL_LOADING_ERROR nogil +cdef nvmlReturn_t _nvmlGetVgpuVersion(nvmlVgpuVersion_t* supported, nvmlVgpuVersion_t* current) except?_NVMLRETURN_T_INTERNAL_LOADING_ERROR nogil +cdef nvmlReturn_t _nvmlSetVgpuVersion(nvmlVgpuVersion_t* vgpuVersion) except?_NVMLRETURN_T_INTERNAL_LOADING_ERROR nogil +cdef nvmlReturn_t _nvmlDeviceGetVgpuUtilization(nvmlDevice_t device, unsigned long long lastSeenTimeStamp, nvmlValueType_t* sampleValType, unsigned int* vgpuInstanceSamplesCount, nvmlVgpuInstanceUtilizationSample_t* utilizationSamples) except?_NVMLRETURN_T_INTERNAL_LOADING_ERROR nogil +cdef nvmlReturn_t _nvmlDeviceGetVgpuInstancesUtilizationInfo(nvmlDevice_t device, nvmlVgpuInstancesUtilizationInfo_t* vgpuUtilInfo) except?_NVMLRETURN_T_INTERNAL_LOADING_ERROR nogil +cdef nvmlReturn_t _nvmlDeviceGetVgpuProcessUtilization(nvmlDevice_t device, unsigned long long lastSeenTimeStamp, unsigned int* vgpuProcessSamplesCount, nvmlVgpuProcessUtilizationSample_t* utilizationSamples) except?_NVMLRETURN_T_INTERNAL_LOADING_ERROR nogil +cdef nvmlReturn_t _nvmlDeviceGetVgpuProcessesUtilizationInfo(nvmlDevice_t device, nvmlVgpuProcessesUtilizationInfo_t* vgpuProcUtilInfo) except?_NVMLRETURN_T_INTERNAL_LOADING_ERROR nogil +cdef nvmlReturn_t _nvmlVgpuInstanceGetAccountingMode(nvmlVgpuInstance_t vgpuInstance, nvmlEnableState_t* mode) except?_NVMLRETURN_T_INTERNAL_LOADING_ERROR nogil +cdef nvmlReturn_t _nvmlVgpuInstanceGetAccountingPids(nvmlVgpuInstance_t vgpuInstance, unsigned int* count, unsigned int* pids) except?_NVMLRETURN_T_INTERNAL_LOADING_ERROR nogil +cdef nvmlReturn_t _nvmlVgpuInstanceGetAccountingStats(nvmlVgpuInstance_t vgpuInstance, unsigned int pid, nvmlAccountingStats_t* stats) except?_NVMLRETURN_T_INTERNAL_LOADING_ERROR nogil +cdef nvmlReturn_t _nvmlVgpuInstanceClearAccountingPids(nvmlVgpuInstance_t vgpuInstance) except?_NVMLRETURN_T_INTERNAL_LOADING_ERROR nogil +cdef nvmlReturn_t _nvmlVgpuInstanceGetLicenseInfo_v2(nvmlVgpuInstance_t vgpuInstance, nvmlVgpuLicenseInfo_t* licenseInfo) except?_NVMLRETURN_T_INTERNAL_LOADING_ERROR nogil +cdef nvmlReturn_t _nvmlGetExcludedDeviceCount(unsigned int* deviceCount) except?_NVMLRETURN_T_INTERNAL_LOADING_ERROR nogil +cdef nvmlReturn_t _nvmlGetExcludedDeviceInfoByIndex(unsigned int index, nvmlExcludedDeviceInfo_t* info) except?_NVMLRETURN_T_INTERNAL_LOADING_ERROR nogil +cdef nvmlReturn_t _nvmlDeviceSetMigMode(nvmlDevice_t device, unsigned int mode, nvmlReturn_t* activationStatus) except?_NVMLRETURN_T_INTERNAL_LOADING_ERROR nogil +cdef nvmlReturn_t _nvmlDeviceGetMigMode(nvmlDevice_t device, unsigned int* currentMode, unsigned int* pendingMode) except?_NVMLRETURN_T_INTERNAL_LOADING_ERROR nogil +cdef nvmlReturn_t _nvmlDeviceGetGpuInstanceProfileInfoV(nvmlDevice_t device, unsigned int profile, nvmlGpuInstanceProfileInfo_v2_t* info) except?_NVMLRETURN_T_INTERNAL_LOADING_ERROR nogil +cdef nvmlReturn_t _nvmlDeviceGetGpuInstancePossiblePlacements_v2(nvmlDevice_t device, unsigned int profileId, nvmlGpuInstancePlacement_t* placements, unsigned int* count) except?_NVMLRETURN_T_INTERNAL_LOADING_ERROR nogil +cdef nvmlReturn_t _nvmlDeviceGetGpuInstanceRemainingCapacity(nvmlDevice_t device, unsigned int profileId, unsigned int* count) except?_NVMLRETURN_T_INTERNAL_LOADING_ERROR nogil +cdef nvmlReturn_t _nvmlDeviceCreateGpuInstance(nvmlDevice_t device, unsigned int profileId, nvmlGpuInstance_t* gpuInstance) except?_NVMLRETURN_T_INTERNAL_LOADING_ERROR nogil +cdef nvmlReturn_t _nvmlDeviceCreateGpuInstanceWithPlacement(nvmlDevice_t device, unsigned int profileId, const nvmlGpuInstancePlacement_t* placement, nvmlGpuInstance_t* gpuInstance) except?_NVMLRETURN_T_INTERNAL_LOADING_ERROR nogil +cdef nvmlReturn_t _nvmlGpuInstanceDestroy(nvmlGpuInstance_t gpuInstance) except?_NVMLRETURN_T_INTERNAL_LOADING_ERROR nogil +cdef nvmlReturn_t _nvmlDeviceGetGpuInstances(nvmlDevice_t device, unsigned int profileId, nvmlGpuInstance_t* gpuInstances, unsigned int* count) except?_NVMLRETURN_T_INTERNAL_LOADING_ERROR nogil +cdef nvmlReturn_t _nvmlDeviceGetGpuInstanceById(nvmlDevice_t device, unsigned int id, nvmlGpuInstance_t* gpuInstance) except?_NVMLRETURN_T_INTERNAL_LOADING_ERROR nogil +cdef nvmlReturn_t _nvmlGpuInstanceGetInfo(nvmlGpuInstance_t gpuInstance, nvmlGpuInstanceInfo_t* info) except?_NVMLRETURN_T_INTERNAL_LOADING_ERROR nogil +cdef nvmlReturn_t _nvmlGpuInstanceGetComputeInstanceProfileInfoV(nvmlGpuInstance_t gpuInstance, unsigned int profile, unsigned int engProfile, nvmlComputeInstanceProfileInfo_v2_t* info) except?_NVMLRETURN_T_INTERNAL_LOADING_ERROR nogil +cdef nvmlReturn_t _nvmlGpuInstanceGetComputeInstanceRemainingCapacity(nvmlGpuInstance_t gpuInstance, unsigned int profileId, unsigned int* count) except?_NVMLRETURN_T_INTERNAL_LOADING_ERROR nogil +cdef nvmlReturn_t _nvmlGpuInstanceGetComputeInstancePossiblePlacements(nvmlGpuInstance_t gpuInstance, unsigned int profileId, nvmlComputeInstancePlacement_t* placements, unsigned int* count) except?_NVMLRETURN_T_INTERNAL_LOADING_ERROR nogil +cdef nvmlReturn_t _nvmlGpuInstanceCreateComputeInstance(nvmlGpuInstance_t gpuInstance, unsigned int profileId, nvmlComputeInstance_t* computeInstance) except?_NVMLRETURN_T_INTERNAL_LOADING_ERROR nogil +cdef nvmlReturn_t _nvmlGpuInstanceCreateComputeInstanceWithPlacement(nvmlGpuInstance_t gpuInstance, unsigned int profileId, const nvmlComputeInstancePlacement_t* placement, nvmlComputeInstance_t* computeInstance) except?_NVMLRETURN_T_INTERNAL_LOADING_ERROR nogil +cdef nvmlReturn_t _nvmlComputeInstanceDestroy(nvmlComputeInstance_t computeInstance) except?_NVMLRETURN_T_INTERNAL_LOADING_ERROR nogil +cdef nvmlReturn_t _nvmlGpuInstanceGetComputeInstances(nvmlGpuInstance_t gpuInstance, unsigned int profileId, nvmlComputeInstance_t* computeInstances, unsigned int* count) except?_NVMLRETURN_T_INTERNAL_LOADING_ERROR nogil +cdef nvmlReturn_t _nvmlGpuInstanceGetComputeInstanceById(nvmlGpuInstance_t gpuInstance, unsigned int id, nvmlComputeInstance_t* computeInstance) except?_NVMLRETURN_T_INTERNAL_LOADING_ERROR nogil +cdef nvmlReturn_t _nvmlComputeInstanceGetInfo_v2(nvmlComputeInstance_t computeInstance, nvmlComputeInstanceInfo_t* info) except?_NVMLRETURN_T_INTERNAL_LOADING_ERROR nogil +cdef nvmlReturn_t _nvmlDeviceIsMigDeviceHandle(nvmlDevice_t device, unsigned int* isMigDevice) except?_NVMLRETURN_T_INTERNAL_LOADING_ERROR nogil +cdef nvmlReturn_t _nvmlDeviceGetGpuInstanceId(nvmlDevice_t device, unsigned int* id) except?_NVMLRETURN_T_INTERNAL_LOADING_ERROR nogil +cdef nvmlReturn_t _nvmlDeviceGetComputeInstanceId(nvmlDevice_t device, unsigned int* id) except?_NVMLRETURN_T_INTERNAL_LOADING_ERROR nogil +cdef nvmlReturn_t _nvmlDeviceGetMaxMigDeviceCount(nvmlDevice_t device, unsigned int* count) except?_NVMLRETURN_T_INTERNAL_LOADING_ERROR nogil +cdef nvmlReturn_t _nvmlDeviceGetMigDeviceHandleByIndex(nvmlDevice_t device, unsigned int index, nvmlDevice_t* migDevice) except?_NVMLRETURN_T_INTERNAL_LOADING_ERROR nogil +cdef nvmlReturn_t _nvmlDeviceGetDeviceHandleFromMigDeviceHandle(nvmlDevice_t migDevice, nvmlDevice_t* device) except?_NVMLRETURN_T_INTERNAL_LOADING_ERROR nogil +cdef nvmlReturn_t _nvmlDeviceGetCapabilities(nvmlDevice_t device, nvmlDeviceCapabilities_t* caps) except?_NVMLRETURN_T_INTERNAL_LOADING_ERROR nogil +cdef nvmlReturn_t _nvmlDevicePowerSmoothingActivatePresetProfile(nvmlDevice_t device, nvmlPowerSmoothingProfile_t* profile) except?_NVMLRETURN_T_INTERNAL_LOADING_ERROR nogil +cdef nvmlReturn_t _nvmlDevicePowerSmoothingUpdatePresetProfileParam(nvmlDevice_t device, nvmlPowerSmoothingProfile_t* profile) except?_NVMLRETURN_T_INTERNAL_LOADING_ERROR nogil +cdef nvmlReturn_t _nvmlDevicePowerSmoothingSetState(nvmlDevice_t device, nvmlPowerSmoothingState_t* state) except?_NVMLRETURN_T_INTERNAL_LOADING_ERROR nogil +cdef nvmlReturn_t _nvmlDeviceGetAddressingMode(nvmlDevice_t device, nvmlDeviceAddressingMode_t* mode) except?_NVMLRETURN_T_INTERNAL_LOADING_ERROR nogil +cdef nvmlReturn_t _nvmlDeviceGetRepairStatus(nvmlDevice_t device, nvmlRepairStatus_t* repairStatus) except?_NVMLRETURN_T_INTERNAL_LOADING_ERROR nogil +cdef nvmlReturn_t _nvmlDeviceGetPowerMizerMode_v1(nvmlDevice_t device, nvmlDevicePowerMizerModes_v1_t* powerMizerMode) except?_NVMLRETURN_T_INTERNAL_LOADING_ERROR nogil +cdef nvmlReturn_t _nvmlDeviceSetPowerMizerMode_v1(nvmlDevice_t device, nvmlDevicePowerMizerModes_v1_t* powerMizerMode) except?_NVMLRETURN_T_INTERNAL_LOADING_ERROR nogil +cdef nvmlReturn_t _nvmlDeviceGetPdi(nvmlDevice_t device, nvmlPdi_t* pdi) except?_NVMLRETURN_T_INTERNAL_LOADING_ERROR nogil +cdef nvmlReturn_t _nvmlDeviceSetHostname_v1(nvmlDevice_t device, nvmlHostname_v1_t* hostname) except?_NVMLRETURN_T_INTERNAL_LOADING_ERROR nogil +cdef nvmlReturn_t _nvmlDeviceGetHostname_v1(nvmlDevice_t device, nvmlHostname_v1_t* hostname) except?_NVMLRETURN_T_INTERNAL_LOADING_ERROR nogil +cdef nvmlReturn_t _nvmlDeviceGetNvLinkInfo(nvmlDevice_t device, nvmlNvLinkInfo_t* info) except?_NVMLRETURN_T_INTERNAL_LOADING_ERROR nogil +cdef nvmlReturn_t _nvmlDeviceReadWritePRM_v1(nvmlDevice_t device, nvmlPRMTLV_v1_t* buffer) except?_NVMLRETURN_T_INTERNAL_LOADING_ERROR nogil +cdef nvmlReturn_t _nvmlDeviceGetGpuInstanceProfileInfoByIdV(nvmlDevice_t device, unsigned int profileId, nvmlGpuInstanceProfileInfo_v2_t* info) except?_NVMLRETURN_T_INTERNAL_LOADING_ERROR nogil +cdef nvmlReturn_t _nvmlDeviceGetSramUniqueUncorrectedEccErrorCounts(nvmlDevice_t device, nvmlEccSramUniqueUncorrectedErrorCounts_t* errorCounts) except?_NVMLRETURN_T_INTERNAL_LOADING_ERROR nogil +cdef nvmlReturn_t _nvmlDeviceGetUnrepairableMemoryFlag_v1(nvmlDevice_t device, nvmlUnrepairableMemoryStatus_v1_t* unrepairableMemoryStatus) except?_NVMLRETURN_T_INTERNAL_LOADING_ERROR nogil +cdef nvmlReturn_t _nvmlDeviceReadPRMCounters_v1(nvmlDevice_t device, nvmlPRMCounterList_v1_t* counterList) except?_NVMLRETURN_T_INTERNAL_LOADING_ERROR nogil +cdef nvmlReturn_t _nvmlDeviceSetRusdSettings_v1(nvmlDevice_t device, nvmlRusdSettings_v1_t* settings) except?_NVMLRETURN_T_INTERNAL_LOADING_ERROR nogil +cdef nvmlReturn_t _nvmlDeviceVgpuForceGspUnload(nvmlDevice_t device) except?_NVMLRETURN_T_INTERNAL_LOADING_ERROR nogil +cdef nvmlReturn_t _nvmlDeviceGetVgpuSchedulerState_v2(nvmlDevice_t device, nvmlVgpuSchedulerStateInfo_v2_t* pSchedulerStateInfo) except?_NVMLRETURN_T_INTERNAL_LOADING_ERROR nogil +cdef nvmlReturn_t _nvmlGpuInstanceGetVgpuSchedulerState_v2(nvmlGpuInstance_t gpuInstance, nvmlVgpuSchedulerStateInfo_v2_t* pSchedulerStateInfo) except?_NVMLRETURN_T_INTERNAL_LOADING_ERROR nogil +cdef nvmlReturn_t _nvmlDeviceGetVgpuSchedulerLog_v2(nvmlDevice_t device, nvmlVgpuSchedulerLogInfo_v2_t* pSchedulerLogInfo) except?_NVMLRETURN_T_INTERNAL_LOADING_ERROR nogil +cdef nvmlReturn_t _nvmlGpuInstanceGetVgpuSchedulerLog_v2(nvmlGpuInstance_t gpuInstance, nvmlVgpuSchedulerLogInfo_v2_t* pSchedulerLogInfo) except?_NVMLRETURN_T_INTERNAL_LOADING_ERROR nogil +cdef nvmlReturn_t _nvmlDeviceSetVgpuSchedulerState_v2(nvmlDevice_t device, nvmlVgpuSchedulerState_v2_t* pSchedulerState) except?_NVMLRETURN_T_INTERNAL_LOADING_ERROR nogil +cdef nvmlReturn_t _nvmlGpuInstanceSetVgpuSchedulerState_v2(nvmlGpuInstance_t gpuInstance, nvmlVgpuSchedulerState_v2_t* pSchedulerState) except?_NVMLRETURN_T_INTERNAL_LOADING_ERROR nogil diff --git a/venv/lib/python3.11/site-packages/cuda/bindings/_internal/nvrtc.cpython-311-x86_64-linux-gnu.so b/venv/lib/python3.11/site-packages/cuda/bindings/_internal/nvrtc.cpython-311-x86_64-linux-gnu.so new file mode 100644 index 0000000000000000000000000000000000000000..4154a92bb1b0a056f833e6ec5d58c22e45b58b6b Binary files /dev/null and b/venv/lib/python3.11/site-packages/cuda/bindings/_internal/nvrtc.cpython-311-x86_64-linux-gnu.so differ diff --git a/venv/lib/python3.11/site-packages/cuda/bindings/_internal/nvrtc.pxd b/venv/lib/python3.11/site-packages/cuda/bindings/_internal/nvrtc.pxd new file mode 100644 index 0000000000000000000000000000000000000000..e27ff2c08da385188faf496c806bc35b01ad848c --- /dev/null +++ b/venv/lib/python3.11/site-packages/cuda/bindings/_internal/nvrtc.pxd @@ -0,0 +1,69 @@ +# SPDX-FileCopyrightText: Copyright (c) 2021-2026 NVIDIA CORPORATION & AFFILIATES. All rights reserved. +# +# SPDX-License-Identifier: LicenseRef-NVIDIA-SOFTWARE-LICENSE +# +# This code was automatically generated with version 13.3.0, generator version 0.3.1.dev1719+g565f73f4e. Do not modify it directly. + +from ..cynvrtc cimport * + +############################################################################### +# Wrapper functions +############################################################################### + +cdef const char* _nvrtcGetErrorString(nvrtcResult result) except ?NULL nogil + +cdef nvrtcResult _nvrtcVersion(int* major, int* minor) except ?NVRTC_ERROR_INVALID_INPUT nogil + +cdef nvrtcResult _nvrtcGetNumSupportedArchs(int* numArchs) except ?NVRTC_ERROR_INVALID_INPUT nogil + +cdef nvrtcResult _nvrtcGetSupportedArchs(int* supportedArchs) except ?NVRTC_ERROR_INVALID_INPUT nogil + +cdef nvrtcResult _nvrtcCreateProgram(nvrtcProgram* prog, const char* src, const char* name, int numHeaders, const char** headers, const char** includeNames) except ?NVRTC_ERROR_INVALID_INPUT nogil + +cdef nvrtcResult _nvrtcDestroyProgram(nvrtcProgram* prog) except ?NVRTC_ERROR_INVALID_INPUT nogil + +cdef nvrtcResult _nvrtcCompileProgram(nvrtcProgram prog, int numOptions, const char** options) except ?NVRTC_ERROR_INVALID_INPUT nogil + +cdef nvrtcResult _nvrtcGetPTXSize(nvrtcProgram prog, size_t* ptxSizeRet) except ?NVRTC_ERROR_INVALID_INPUT nogil + +cdef nvrtcResult _nvrtcGetPTX(nvrtcProgram prog, char* ptx) except ?NVRTC_ERROR_INVALID_INPUT nogil + +cdef nvrtcResult _nvrtcGetCUBINSize(nvrtcProgram prog, size_t* cubinSizeRet) except ?NVRTC_ERROR_INVALID_INPUT nogil + +cdef nvrtcResult _nvrtcGetCUBIN(nvrtcProgram prog, char* cubin) except ?NVRTC_ERROR_INVALID_INPUT nogil + +cdef nvrtcResult _nvrtcGetLTOIRSize(nvrtcProgram prog, size_t* LTOIRSizeRet) except ?NVRTC_ERROR_INVALID_INPUT nogil + +cdef nvrtcResult _nvrtcGetLTOIR(nvrtcProgram prog, char* LTOIR) except ?NVRTC_ERROR_INVALID_INPUT nogil + +cdef nvrtcResult _nvrtcGetOptiXIRSize(nvrtcProgram prog, size_t* optixirSizeRet) except ?NVRTC_ERROR_INVALID_INPUT nogil + +cdef nvrtcResult _nvrtcGetOptiXIR(nvrtcProgram prog, char* optixir) except ?NVRTC_ERROR_INVALID_INPUT nogil + +cdef nvrtcResult _nvrtcGetProgramLogSize(nvrtcProgram prog, size_t* logSizeRet) except ?NVRTC_ERROR_INVALID_INPUT nogil + +cdef nvrtcResult _nvrtcGetProgramLog(nvrtcProgram prog, char* log) except ?NVRTC_ERROR_INVALID_INPUT nogil + +cdef nvrtcResult _nvrtcAddNameExpression(nvrtcProgram prog, const char* name_expression) except ?NVRTC_ERROR_INVALID_INPUT nogil + +cdef nvrtcResult _nvrtcGetLoweredName(nvrtcProgram prog, const char* name_expression, const char** lowered_name) except ?NVRTC_ERROR_INVALID_INPUT nogil + +cdef nvrtcResult _nvrtcGetPCHHeapSize(size_t* ret) except ?NVRTC_ERROR_INVALID_INPUT nogil + +cdef nvrtcResult _nvrtcSetPCHHeapSize(size_t size) except ?NVRTC_ERROR_INVALID_INPUT nogil + +cdef nvrtcResult _nvrtcGetPCHCreateStatus(nvrtcProgram prog) except ?NVRTC_ERROR_INVALID_INPUT nogil + +cdef nvrtcResult _nvrtcGetPCHHeapSizeRequired(nvrtcProgram prog, size_t* size) except ?NVRTC_ERROR_INVALID_INPUT nogil + +cdef nvrtcResult _nvrtcSetFlowCallback(nvrtcProgram prog, void* callback, void* payload) except ?NVRTC_ERROR_INVALID_INPUT nogil + +cdef nvrtcResult _nvrtcGetTileIRSize(nvrtcProgram prog, size_t* TileIRSizeRet) except ?NVRTC_ERROR_INVALID_INPUT nogil + +cdef nvrtcResult _nvrtcGetTileIR(nvrtcProgram prog, char* TileIR) except ?NVRTC_ERROR_INVALID_INPUT nogil + +cdef nvrtcResult _nvrtcInstallBundledHeaders(const char* installPath, unsigned int flags, const char** errorLog) except ?NVRTC_ERROR_INVALID_INPUT nogil + +cdef nvrtcResult _nvrtcGetBundledHeadersInfo(nvrtcBundledHeadersInfo* info, const char** errorLog) except ?NVRTC_ERROR_INVALID_INPUT nogil + +cdef nvrtcResult _nvrtcRemoveBundledHeaders(const char* installPath, const char** errorLog) except ?NVRTC_ERROR_INVALID_INPUT nogil diff --git a/venv/lib/python3.11/site-packages/cuda/bindings/_internal/nvvm.cpython-311-x86_64-linux-gnu.so b/venv/lib/python3.11/site-packages/cuda/bindings/_internal/nvvm.cpython-311-x86_64-linux-gnu.so new file mode 100644 index 0000000000000000000000000000000000000000..9474ab2e2d92bee1d30bdbdc9210187426e9896f Binary files /dev/null and b/venv/lib/python3.11/site-packages/cuda/bindings/_internal/nvvm.cpython-311-x86_64-linux-gnu.so differ diff --git a/venv/lib/python3.11/site-packages/cuda/bindings/_internal/nvvm.pxd b/venv/lib/python3.11/site-packages/cuda/bindings/_internal/nvvm.pxd new file mode 100644 index 0000000000000000000000000000000000000000..4d9ff45e701e7f3f9bde666b89c697af3b9d0966 --- /dev/null +++ b/venv/lib/python3.11/site-packages/cuda/bindings/_internal/nvvm.pxd @@ -0,0 +1,27 @@ +# SPDX-FileCopyrightText: Copyright (c) 2025-2026 NVIDIA CORPORATION & AFFILIATES. All rights reserved. +# +# SPDX-License-Identifier: LicenseRef-NVIDIA-SOFTWARE-LICENSE +# +# This code was automatically generated across versions from 12.0.1 to 13.2.0, generator version 0.3.1.dev1422+gf4812259e.d20260318. Do not modify it directly. + +from ..cynvvm cimport * + + +############################################################################### +# Wrapper functions +############################################################################### + +cdef const char* _nvvmGetErrorString(nvvmResult result) except?NULL nogil +cdef nvvmResult _nvvmVersion(int* major, int* minor) except?_NVVMRESULT_INTERNAL_LOADING_ERROR nogil +cdef nvvmResult _nvvmIRVersion(int* majorIR, int* minorIR, int* majorDbg, int* minorDbg) except?_NVVMRESULT_INTERNAL_LOADING_ERROR nogil +cdef nvvmResult _nvvmCreateProgram(nvvmProgram* prog) except?_NVVMRESULT_INTERNAL_LOADING_ERROR nogil +cdef nvvmResult _nvvmDestroyProgram(nvvmProgram* prog) except?_NVVMRESULT_INTERNAL_LOADING_ERROR nogil +cdef nvvmResult _nvvmAddModuleToProgram(nvvmProgram prog, const char* buffer, size_t size, const char* name) except?_NVVMRESULT_INTERNAL_LOADING_ERROR nogil +cdef nvvmResult _nvvmLazyAddModuleToProgram(nvvmProgram prog, const char* buffer, size_t size, const char* name) except?_NVVMRESULT_INTERNAL_LOADING_ERROR nogil +cdef nvvmResult _nvvmCompileProgram(nvvmProgram prog, int numOptions, const char** options) except?_NVVMRESULT_INTERNAL_LOADING_ERROR nogil +cdef nvvmResult _nvvmVerifyProgram(nvvmProgram prog, int numOptions, const char** options) except?_NVVMRESULT_INTERNAL_LOADING_ERROR nogil +cdef nvvmResult _nvvmGetCompiledResultSize(nvvmProgram prog, size_t* bufferSizeRet) except?_NVVMRESULT_INTERNAL_LOADING_ERROR nogil +cdef nvvmResult _nvvmGetCompiledResult(nvvmProgram prog, char* buffer) except?_NVVMRESULT_INTERNAL_LOADING_ERROR nogil +cdef nvvmResult _nvvmGetProgramLogSize(nvvmProgram prog, size_t* bufferSizeRet) except?_NVVMRESULT_INTERNAL_LOADING_ERROR nogil +cdef nvvmResult _nvvmGetProgramLog(nvvmProgram prog, char* buffer) except?_NVVMRESULT_INTERNAL_LOADING_ERROR nogil +cdef nvvmResult _nvvmLLVMVersion(const char* arch, int* major) except?_NVVMRESULT_INTERNAL_LOADING_ERROR nogil diff --git a/venv/lib/python3.11/site-packages/cuda/bindings/_internal/utils.cpython-311-x86_64-linux-gnu.so b/venv/lib/python3.11/site-packages/cuda/bindings/_internal/utils.cpython-311-x86_64-linux-gnu.so new file mode 100644 index 0000000000000000000000000000000000000000..190f7b5fea01652dc3ee5959776698b1521417ee --- /dev/null +++ b/venv/lib/python3.11/site-packages/cuda/bindings/_internal/utils.cpython-311-x86_64-linux-gnu.so @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:477f98a8ca81977cb3ea2d2db4a269827883c1dc6d2b8b743be097781992b9c2 +size 128000 diff --git a/venv/lib/python3.11/site-packages/cuda/bindings/_internal/utils.pxd b/venv/lib/python3.11/site-packages/cuda/bindings/_internal/utils.pxd new file mode 100644 index 0000000000000000000000000000000000000000..50484727b7ade126a6af539241bd1a2365bad4b8 --- /dev/null +++ b/venv/lib/python3.11/site-packages/cuda/bindings/_internal/utils.pxd @@ -0,0 +1,167 @@ +# SPDX-FileCopyrightText: Copyright (c) 2024-2025 NVIDIA CORPORATION & AFFILIATES. All rights reserved. +# +# SPDX-License-Identifier: LicenseRef-NVIDIA-SOFTWARE-LICENSE + +from libc.stdint cimport int32_t, int64_t, intptr_t +from libcpp.vector cimport vector +from libcpp cimport bool as cppbool +from libcpp cimport nullptr_t, nullptr +from libcpp.memory cimport unique_ptr + + +cdef extern from * nogil: + """ + template + class nullable_unique_ptr { + public: + nullable_unique_ptr() noexcept = default; + + nullable_unique_ptr(std::nullptr_t) noexcept = delete; + + explicit nullable_unique_ptr(T* data, bool own_data): + own_data_(own_data) + { + if (own_data) + manager_.reset(data); + else + raw_data_ = data; + } + + nullable_unique_ptr(const nullable_unique_ptr&) = delete; + + nullable_unique_ptr& operator=(const nullable_unique_ptr&) = delete; + + nullable_unique_ptr(nullable_unique_ptr&& other) noexcept + { + own_data_ = other.own_data_; + other.own_data_ = false; // ownership is transferred + if (own_data_) + { + manager_ = std::move(other.manager_); + raw_data_ = nullptr; // just in case + } + else + { + manager_.reset(nullptr); // just in case + raw_data_ = other.raw_data_; + } + } + + nullable_unique_ptr& operator=(nullable_unique_ptr&& other) noexcept + { + own_data_ = other.own_data_; + other.own_data_ = false; // ownership is transferred + if (own_data_) + { + manager_ = std::move(other.manager_); + raw_data_ = nullptr; // just in case + } + else + { + manager_.reset(nullptr); // just in case + raw_data_ = other.raw_data_; + } + return *this; + } + + ~nullable_unique_ptr() = default; + + void reset(T* data, bool own_data) + { + own_data_ = own_data; + if (own_data_) + { + manager_.reset(data); + raw_data_ = nullptr; + } + else + { + manager_.reset(nullptr); + raw_data_ = data; + } + } + + void swap(nullable_unique_ptr& other) noexcept + { + std::swap(manager_, other.manager_); + std::swap(raw_data_, other.raw_data_); + std::swap(own_data_, other.own_data_); + } + + /* + * Get the pointer to the underlying object (this is different from data()!). + */ + T* get() const noexcept + { + if (own_data_) + return manager_.get(); + else + return raw_data_; + } + + /* + * Get the pointer to the underlying buffer (this is different from get()!). + */ + void* data() noexcept + { + if (own_data_) + return manager_.get()->data(); + else + return raw_data_; + } + + T& operator*() + { + if (own_data_) + return *manager_; + else + return *raw_data_; + } + + private: + std::unique_ptr manager_{}; + T* raw_data_{nullptr}; + bool own_data_{false}; + }; + """ + # xref: cython/Cython/Includes/libcpp/memory.pxd + cdef cppclass nullable_unique_ptr[T]: + nullable_unique_ptr() + nullable_unique_ptr(T*, cppbool) + nullable_unique_ptr(nullable_unique_ptr[T]&) + + # Modifiers + void reset(T*, cppbool) + void swap(nullable_unique_ptr&) + + # Observers + T* get() + T& operator*() + void* data() + + +ctypedef fused ResT: + int + int32_t + int64_t + char + float + double + + +ctypedef fused PtrT: + void + + +cdef cppclass nested_resource[T]: + nullable_unique_ptr[ vector[intptr_t] ] ptrs + nullable_unique_ptr[ vector[vector[T]] ] nested_resource_ptr + + +# accepts the output pointer as input to use the return value for exception propagation +cdef int get_resource_ptr(nullable_unique_ptr[vector[ResT]] &in_out_ptr, object obj, ResT* __unused) except 1 +cdef int get_resource_ptrs(nullable_unique_ptr[ vector[PtrT*] ] &in_out_ptr, object obj, PtrT* __unused) except 1 +cdef int get_nested_resource_ptr(nested_resource[ResT] &in_out_ptr, object obj, ResT* __unused) except 1 + +cdef bint is_nested_sequence(data) +cdef void* get_buffer_pointer(buf, Py_ssize_t size, readonly=*) except* diff --git a/venv/lib/python3.11/site-packages/cuda/bindings/_lib/__init__.py b/venv/lib/python3.11/site-packages/cuda/bindings/_lib/__init__.py new file mode 100644 index 0000000000000000000000000000000000000000..e69de29bb2d1d6434b8b29ae775ad8c2e48c5391 diff --git a/venv/lib/python3.11/site-packages/cuda/bindings/_lib/cyruntime/cyruntime.pxd b/venv/lib/python3.11/site-packages/cuda/bindings/_lib/cyruntime/cyruntime.pxd new file mode 100644 index 0000000000000000000000000000000000000000..48f87f29caf4e93aef95c2d197c48064d7f4da19 --- /dev/null +++ b/venv/lib/python3.11/site-packages/cuda/bindings/_lib/cyruntime/cyruntime.pxd @@ -0,0 +1,43 @@ +# SPDX-FileCopyrightText: Copyright (c) 2021-2025 NVIDIA CORPORATION & AFFILIATES. All rights reserved. +# SPDX-License-Identifier: LicenseRef-NVIDIA-SOFTWARE-LICENSE + +cimport cuda.bindings.cyruntime as cyruntime +cimport cuda.bindings._bindings.cydriver as _cydriver + +# These graphics API are the reimplemented version of what's supported by CUDA Runtime. +# Issue https://github.com/NVIDIA/cuda-python/issues/488 will remove them by letting us +# use call into the static library directly. +# +# This is an ABI breaking change which can only happen in a major version bump. + +# This file is included from cuda/bindings/_bindings/cyruntime.pxd.in but kept in a +# separate file to keep it separated from the auto-generated code there. + +# Prior to https://github.com/NVIDIA/cuda-python/pull/914, this was two +# independent modules (c.b._lib.cyruntime.cyruntime and +# c.b._lib.cyruntime.utils), but was merged into one. + +cdef cudaError_t _cudaEGLStreamProducerPresentFrame(cyruntime.cudaEglStreamConnection* conn, cyruntime.cudaEglFrame eglframe, cudaStream_t* pStream) except ?cudaErrorCallRequiresNewerDriver nogil +cdef cudaError_t _cudaEGLStreamProducerReturnFrame(cyruntime.cudaEglStreamConnection* conn, cyruntime.cudaEglFrame* eglframe, cudaStream_t* pStream) except ?cudaErrorCallRequiresNewerDriver nogil +cdef cudaError_t _cudaGraphicsResourceGetMappedEglFrame(cyruntime.cudaEglFrame* eglFrame, cudaGraphicsResource_t resource, unsigned int index, unsigned int mipLevel) except ?cudaErrorCallRequiresNewerDriver nogil +cdef cudaError_t _cudaVDPAUSetVDPAUDevice(int device, cyruntime.VdpDevice vdpDevice, cyruntime.VdpGetProcAddress* vdpGetProcAddress) except ?cudaErrorCallRequiresNewerDriver nogil +cdef cudaError_t _cudaVDPAUGetDevice(int* device, cyruntime.VdpDevice vdpDevice, cyruntime.VdpGetProcAddress* vdpGetProcAddress) except ?cudaErrorCallRequiresNewerDriver nogil +cdef cudaError_t _cudaGraphicsVDPAURegisterVideoSurface(cudaGraphicsResource** resource, cyruntime.VdpVideoSurface vdpSurface, unsigned int flags) except ?cudaErrorCallRequiresNewerDriver nogil +cdef cudaError_t _cudaGraphicsVDPAURegisterOutputSurface(cudaGraphicsResource** resource, cyruntime.VdpOutputSurface vdpSurface, unsigned int flags) except ?cudaErrorCallRequiresNewerDriver nogil +cdef cudaError_t _cudaGLGetDevices(unsigned int* pCudaDeviceCount, int* pCudaDevices, unsigned int cudaDeviceCount, cyruntime.cudaGLDeviceList deviceList) except ?cudaErrorCallRequiresNewerDriver nogil +cdef cudaError_t _cudaGraphicsGLRegisterImage(cudaGraphicsResource** resource, cyruntime.GLuint image, cyruntime.GLenum target, unsigned int flags) except ?cudaErrorCallRequiresNewerDriver nogil +cdef cudaError_t _cudaGraphicsGLRegisterBuffer(cudaGraphicsResource** resource, cyruntime.GLuint buffer, unsigned int flags) except ?cudaErrorCallRequiresNewerDriver nogil +cdef cudaError_t _cudaGraphicsEGLRegisterImage(cudaGraphicsResource_t* pCudaResource, cyruntime.EGLImageKHR image, unsigned int flags) except ?cudaErrorCallRequiresNewerDriver nogil +cdef cudaError_t _cudaEGLStreamConsumerConnect(cyruntime.cudaEglStreamConnection* conn, cyruntime.EGLStreamKHR eglStream) except ?cudaErrorCallRequiresNewerDriver nogil +cdef cudaError_t _cudaEGLStreamConsumerConnectWithFlags(cyruntime.cudaEglStreamConnection* conn, cyruntime.EGLStreamKHR eglStream, unsigned int flags) except ?cudaErrorCallRequiresNewerDriver nogil +cdef cudaError_t _cudaEGLStreamConsumerDisconnect(cyruntime.cudaEglStreamConnection* conn) except ?cudaErrorCallRequiresNewerDriver nogil +cdef cudaError_t _cudaEGLStreamConsumerAcquireFrame(cyruntime.cudaEglStreamConnection* conn, cudaGraphicsResource_t* pCudaResource, cudaStream_t* pStream, unsigned int timeout) except ?cudaErrorCallRequiresNewerDriver nogil +cdef cudaError_t _cudaEGLStreamConsumerReleaseFrame(cyruntime.cudaEglStreamConnection* conn, cudaGraphicsResource_t pCudaResource, cudaStream_t* pStream) except ?cudaErrorCallRequiresNewerDriver nogil +cdef cudaError_t _cudaEGLStreamProducerConnect(cyruntime.cudaEglStreamConnection* conn, cyruntime.EGLStreamKHR eglStream, cyruntime.EGLint width, cyruntime.EGLint height) except ?cudaErrorCallRequiresNewerDriver nogil +cdef cudaError_t _cudaEGLStreamProducerDisconnect(cyruntime.cudaEglStreamConnection* conn) except ?cudaErrorCallRequiresNewerDriver nogil +cdef cudaError_t _cudaEventCreateFromEGLSync(cudaEvent_t* phEvent, cyruntime.EGLSyncKHR eglSync, unsigned int flags) except ?cudaErrorCallRequiresNewerDriver nogil + +# utility functions + +cdef cudaError_t getDriverEglFrame(_cydriver.CUeglFrame *cuEglFrame, cyruntime.cudaEglFrame eglFrame) except ?cudaErrorCallRequiresNewerDriver nogil +cdef cudaError_t getRuntimeEglFrame(cyruntime.cudaEglFrame *eglFrame, _cydriver.CUeglFrame cueglFrame) except ?cudaErrorCallRequiresNewerDriver nogil diff --git a/venv/lib/python3.11/site-packages/cuda/bindings/_lib/cyruntime/cyruntime.pxi b/venv/lib/python3.11/site-packages/cuda/bindings/_lib/cyruntime/cyruntime.pxi new file mode 100644 index 0000000000000000000000000000000000000000..c18bd1ca2ea4427e3dfc859bceae6e794b307277 --- /dev/null +++ b/venv/lib/python3.11/site-packages/cuda/bindings/_lib/cyruntime/cyruntime.pxi @@ -0,0 +1,1176 @@ +# SPDX-FileCopyrightText: Copyright (c) 2021-2025 NVIDIA CORPORATION & AFFILIATES. All rights reserved. +# SPDX-License-Identifier: LicenseRef-NVIDIA-SOFTWARE-LICENSE + +# These graphics API are the reimplemented version of what's supported by CUDA Runtime. +# Issue https://github.com/NVIDIA/cuda-python/issues/488 will remove them by letting us +# use call into the static library directly. + +# This file is included from cuda/bindings/_bindings/cyruntime.pyx.in but kept in a +# separate file to keep it separated from the auto-generated code there. + +# Prior to https://github.com/NVIDIA/cuda-python/pull/914, this was two +# independent modules (c.b._lib.cyruntime.cyruntime and +# c.b._lib.cyruntime.utils), but was merged into one. + +from libc.string cimport memset +cimport cuda.bindings._bindings.cydriver as cydriver + +cdef cudaError_t _cudaEGLStreamProducerPresentFrame(cyruntime.cudaEglStreamConnection* conn, cyruntime.cudaEglFrame eglframe, cudaStream_t* pStream) except ?cudaErrorCallRequiresNewerDriver nogil: + cdef cudaError_t err = cudaSuccess + # cudaFree(0) is a NOP operations that initializes the context state + err = cudaFree(0) + if err != cudaSuccess: + return err + cdef cydriver.CUeglFrame cueglFrame + err = getDriverEglFrame(&cueglFrame, eglframe) + if err != cudaSuccess: + return err + err = cydriver._cuEGLStreamProducerPresentFrame(conn, cueglFrame, pStream) + return err + +cdef cudaError_t _cudaEGLStreamProducerReturnFrame(cyruntime.cudaEglStreamConnection* conn, cyruntime.cudaEglFrame* eglframe, cudaStream_t* pStream) except ?cudaErrorCallRequiresNewerDriver nogil: + cdef cudaError_t err = cudaSuccess + # cudaFree(0) is a NOP operations that initializes the context state + err = cudaFree(0) + if err != cudaSuccess: + return err + if eglframe == NULL: + err = cudaErrorInvalidResourceHandle + return err + cdef cydriver.CUeglFrame cueglFrame + err = cydriver._cuEGLStreamProducerReturnFrame(conn, &cueglFrame, pStream) + if err != cudaSuccess: + return err + err = getRuntimeEglFrame(eglframe, cueglFrame) + return err + +cdef cudaError_t _cudaGraphicsResourceGetMappedEglFrame(cyruntime.cudaEglFrame* eglFrame, cudaGraphicsResource_t resource, unsigned int index, unsigned int mipLevel) except ?cudaErrorCallRequiresNewerDriver nogil: + cdef cudaError_t err = cudaSuccess + # cudaFree(0) is a NOP operations that initializes the context state + err = cudaFree(0) + if err != cudaSuccess: + return err + cdef cydriver.CUeglFrame cueglFrame + memset(&cueglFrame, 0, sizeof(cueglFrame)) + err = cydriver._cuGraphicsResourceGetMappedEglFrame(&cueglFrame, resource, index, mipLevel) + if err != cudaSuccess: + return err + err = getRuntimeEglFrame(eglFrame, cueglFrame) + return err + +cdef cudaError_t _cudaVDPAUSetVDPAUDevice(int device, cyruntime.VdpDevice vdpDevice, cyruntime.VdpGetProcAddress* vdpGetProcAddress) except ?cudaErrorCallRequiresNewerDriver nogil: + return cudaErrorNotSupported + +cdef cudaError_t _cudaVDPAUGetDevice(int* device, cyruntime.VdpDevice vdpDevice, cyruntime.VdpGetProcAddress* vdpGetProcAddress) except ?cudaErrorCallRequiresNewerDriver nogil: + cdef cudaError_t err = cudaSuccess + # cudaFree(0) is a NOP operations that initializes the context state + err = cudaFree(0) + if err != cudaSuccess: + return err + err = cydriver._cuVDPAUGetDevice(device, vdpDevice, vdpGetProcAddress) + return err + +cdef cudaError_t _cudaGraphicsVDPAURegisterVideoSurface(cudaGraphicsResource** resource, cyruntime.VdpVideoSurface vdpSurface, unsigned int flags) except ?cudaErrorCallRequiresNewerDriver nogil: + cdef cudaError_t err = cudaSuccess + # cudaFree(0) is a NOP operations that initializes the context state + err = cudaFree(0) + if err != cudaSuccess: + return err + err = cydriver._cuGraphicsVDPAURegisterVideoSurface(resource, vdpSurface, flags) + return err + +cdef cudaError_t _cudaGraphicsVDPAURegisterOutputSurface(cudaGraphicsResource** resource, cyruntime.VdpOutputSurface vdpSurface, unsigned int flags) except ?cudaErrorCallRequiresNewerDriver nogil: + cdef cudaError_t err = cudaSuccess + # cudaFree(0) is a NOP operations that initializes the context state + err = cudaFree(0) + if err != cudaSuccess: + return err + err = cydriver._cuGraphicsVDPAURegisterOutputSurface(resource, vdpSurface, flags) + return err + +cdef cudaError_t _cudaGLGetDevices(unsigned int* pCudaDeviceCount, int* pCudaDevices, unsigned int cudaDeviceCount, cyruntime.cudaGLDeviceList deviceList) except ?cudaErrorCallRequiresNewerDriver nogil: + cdef cudaError_t err = cudaSuccess + # cudaFree(0) is a NOP operations that initializes the context state + err = cudaFree(0) + if err != cudaSuccess: + return err + err = cydriver._cuGLGetDevices_v2(pCudaDeviceCount, pCudaDevices, cudaDeviceCount, deviceList) + return err + +cdef cudaError_t _cudaGraphicsGLRegisterImage(cudaGraphicsResource** resource, cyruntime.GLuint image, cyruntime.GLenum target, unsigned int flags) except ?cudaErrorCallRequiresNewerDriver nogil: + cdef cudaError_t err = cudaSuccess + # cudaFree(0) is a NOP operations that initializes the context state + err = cudaFree(0) + if err != cudaSuccess: + return err + err = cydriver._cuGraphicsGLRegisterImage(resource, image, target, flags) + return err + +cdef cudaError_t _cudaGraphicsGLRegisterBuffer(cudaGraphicsResource** resource, cyruntime.GLuint buffer, unsigned int flags) except ?cudaErrorCallRequiresNewerDriver nogil: + cdef cudaError_t err = cudaSuccess + # cudaFree(0) is a NOP operations that initializes the context state + err = cudaFree(0) + if err != cudaSuccess: + return err + err = cydriver._cuGraphicsGLRegisterBuffer(resource, buffer, flags) + return err + +cdef cudaError_t _cudaGraphicsEGLRegisterImage(cudaGraphicsResource_t* pCudaResource, cyruntime.EGLImageKHR image, unsigned int flags) except ?cudaErrorCallRequiresNewerDriver nogil: + cdef cudaError_t err = cudaSuccess + # cudaFree(0) is a NOP operations that initializes the context state + err = cudaFree(0) + if err != cudaSuccess: + return err + err = cydriver._cuGraphicsEGLRegisterImage(pCudaResource, image, flags) + return err + +cdef cudaError_t _cudaEGLStreamConsumerConnect(cyruntime.cudaEglStreamConnection* conn, cyruntime.EGLStreamKHR eglStream) except ?cudaErrorCallRequiresNewerDriver nogil: + cdef cudaError_t err = cudaSuccess + # cudaFree(0) is a NOP operations that initializes the context state + err = cudaFree(0) + if err != cudaSuccess: + return err + err = cydriver._cuEGLStreamConsumerConnect(conn, eglStream) + return err + +cdef cudaError_t _cudaEGLStreamConsumerConnectWithFlags(cyruntime.cudaEglStreamConnection* conn, cyruntime.EGLStreamKHR eglStream, unsigned int flags) except ?cudaErrorCallRequiresNewerDriver nogil: + cdef cudaError_t err = cudaSuccess + # cudaFree(0) is a NOP operations that initializes the context state + err = cudaFree(0) + if err != cudaSuccess: + return err + err = cydriver._cuEGLStreamConsumerConnectWithFlags(conn, eglStream, flags) + return err + +cdef cudaError_t _cudaEGLStreamConsumerDisconnect(cyruntime.cudaEglStreamConnection* conn) except ?cudaErrorCallRequiresNewerDriver nogil: + cdef cudaError_t err = cudaSuccess + # cudaFree(0) is a NOP operations that initializes the context state + err = cudaFree(0) + if err != cudaSuccess: + return err + err = cydriver._cuEGLStreamConsumerDisconnect(conn) + return err + +cdef cudaError_t _cudaEGLStreamConsumerAcquireFrame(cyruntime.cudaEglStreamConnection* conn, cudaGraphicsResource_t* pCudaResource, cudaStream_t* pStream, unsigned int timeout) except ?cudaErrorCallRequiresNewerDriver nogil: + cdef cudaError_t err = cudaSuccess + # cudaFree(0) is a NOP operations that initializes the context state + err = cudaFree(0) + if err != cudaSuccess: + return err + err = cydriver._cuEGLStreamConsumerAcquireFrame(conn, pCudaResource, pStream, timeout) + return err + +cdef cudaError_t _cudaEGLStreamConsumerReleaseFrame(cyruntime.cudaEglStreamConnection* conn, cudaGraphicsResource_t pCudaResource, cudaStream_t* pStream) except ?cudaErrorCallRequiresNewerDriver nogil: + cdef cudaError_t err = cudaSuccess + # cudaFree(0) is a NOP operations that initializes the context state + err = cudaFree(0) + if err != cudaSuccess: + return err + err = cydriver._cuEGLStreamConsumerReleaseFrame(conn, pCudaResource, pStream) + return err + +cdef cudaError_t _cudaEGLStreamProducerConnect(cyruntime.cudaEglStreamConnection* conn, cyruntime.EGLStreamKHR eglStream, cyruntime.EGLint width, cyruntime.EGLint height) except ?cudaErrorCallRequiresNewerDriver nogil: + cdef cudaError_t err = cudaSuccess + # cudaFree(0) is a NOP operations that initializes the context state + err = cudaFree(0) + if err != cudaSuccess: + return err + err = cydriver._cuEGLStreamProducerConnect(conn, eglStream, width, height) + return err + +cdef cudaError_t _cudaEGLStreamProducerDisconnect(cyruntime.cudaEglStreamConnection* conn) except ?cudaErrorCallRequiresNewerDriver nogil: + cdef cudaError_t err = cudaSuccess + # cudaFree(0) is a NOP operations that initializes the context state + err = cudaFree(0) + if err != cudaSuccess: + return err + err = cydriver._cuEGLStreamProducerDisconnect(conn) + return err + +cdef cudaError_t _cudaEventCreateFromEGLSync(cudaEvent_t* phEvent, cyruntime.EGLSyncKHR eglSync, unsigned int flags) except ?cudaErrorCallRequiresNewerDriver nogil: + cdef cudaError_t err = cudaSuccess + # cudaFree(0) is a NOP operations that initializes the context state + err = cudaFree(0) + if err != cudaSuccess: + return err + err = cydriver._cuEventCreateFromEGLSync(phEvent, eglSync, flags) + return err + +## utility functions + +cdef int case_desc(const cudaChannelFormatDesc* d, int x, int y, int z, int w, int f) except ?cudaErrorCallRequiresNewerDriver nogil: + return d[0].x == x and d[0].y == y and d[0].z == z and d[0].w == w and d[0].f == f + + +cdef cudaError_t getDescInfo(const cudaChannelFormatDesc* d, int *numberOfChannels, cydriver.CUarray_format *format) except ?cudaErrorCallRequiresNewerDriver nogil: + # Check validity + if d[0].f in (cudaChannelFormatKind.cudaChannelFormatKindSigned, + cudaChannelFormatKind.cudaChannelFormatKindUnsigned): + if (d[0].x != 8) and (d[0].x != 16) and (d[0].x != 32): + return cudaErrorInvalidChannelDescriptor + elif d[0].f in (cudaChannelFormatKind.cudaChannelFormatKindFloat,): + if (d[0].x != 16) and (d[0].x != 32): + return cudaErrorInvalidChannelDescriptor + elif d[0].f in (cudaChannelFormatKind.cudaChannelFormatKindNV12,): + if (d[0].x != 8) or (d[0].y != 8) or (d[0].z != 8) or (d[0].w != 0): + return cudaErrorInvalidChannelDescriptor + elif d[0].f in (cudaChannelFormatKind.cudaChannelFormatKindSignedNormalized8X1, + cudaChannelFormatKind.cudaChannelFormatKindSignedNormalized8X2, + cudaChannelFormatKind.cudaChannelFormatKindSignedNormalized8X4, + cudaChannelFormatKind.cudaChannelFormatKindUnsignedNormalized8X1, + cudaChannelFormatKind.cudaChannelFormatKindUnsignedNormalized8X2, + cudaChannelFormatKind.cudaChannelFormatKindUnsignedNormalized8X4,): + if (d[0].x != 8): + return cudaErrorInvalidChannelDescriptor + elif d[0].f in (cudaChannelFormatKind.cudaChannelFormatKindSignedNormalized16X1, + cudaChannelFormatKind.cudaChannelFormatKindSignedNormalized16X2, + cudaChannelFormatKind.cudaChannelFormatKindSignedNormalized16X4, + cudaChannelFormatKind.cudaChannelFormatKindUnsignedNormalized16X1, + cudaChannelFormatKind.cudaChannelFormatKindUnsignedNormalized16X2, + cudaChannelFormatKind.cudaChannelFormatKindUnsignedNormalized16X4,): + if (d[0].x != 16): + return cudaErrorInvalidChannelDescriptor + elif d[0].f in (cudaChannelFormatKind.cudaChannelFormatKindUnsignedBlockCompressed1, + cudaChannelFormatKind.cudaChannelFormatKindUnsignedBlockCompressed1SRGB, + cudaChannelFormatKind.cudaChannelFormatKindUnsignedBlockCompressed2, + cudaChannelFormatKind.cudaChannelFormatKindUnsignedBlockCompressed2SRGB, + cudaChannelFormatKind.cudaChannelFormatKindUnsignedBlockCompressed3, + cudaChannelFormatKind.cudaChannelFormatKindUnsignedBlockCompressed3SRGB, + cudaChannelFormatKind.cudaChannelFormatKindUnsignedBlockCompressed4, + cudaChannelFormatKind.cudaChannelFormatKindSignedBlockCompressed4, + cudaChannelFormatKind.cudaChannelFormatKindUnsignedBlockCompressed5, + cudaChannelFormatKind.cudaChannelFormatKindSignedBlockCompressed5, + cudaChannelFormatKind.cudaChannelFormatKindUnsignedBlockCompressed7, + cudaChannelFormatKind.cudaChannelFormatKindUnsignedBlockCompressed7SRGB,): + if (d[0].x != 8): + return cudaErrorInvalidChannelDescriptor + elif d[0].f in (cudaChannelFormatKind.cudaChannelFormatKindUnsignedBlockCompressed6H, + cudaChannelFormatKind.cudaChannelFormatKindSignedBlockCompressed6H,): + if (d[0].x != 16) or (d[0].y != 16) or (d[0].z != 16) or (d[0].w != 0): + return cudaErrorInvalidChannelDescriptor + elif d[0].f in (cudaChannelFormatKind.cudaChannelFormatKindUnsignedNormalized1010102,): + if (d[0].x != 10) or (d[0].y != 10) or (d[0].z != 10) or (d[0].w != 2): + return cudaErrorInvalidChannelDescriptor + else: + return cudaErrorInvalidChannelDescriptor + + # If Y is non-zero, it must match X + # If Z is non-zero, it must match Y + # If W is non-zero, it must match Z + if (((d[0].y != 0) and (d[0].y != d[0].x)) or + ((d[0].z != 0) and (d[0].z != d[0].y)) or + ((d[0].w != 0) and (d[0].w != d[0].z))): + if d[0].f != cudaChannelFormatKind.cudaChannelFormatKindUnsignedNormalized1010102: + return cudaErrorInvalidChannelDescriptor + if case_desc(d, 8, 0, 0, 0, cudaChannelFormatKind.cudaChannelFormatKindSigned): + numberOfChannels[0] = 1 + format[0] = cydriver.CUarray_format_enum.CU_AD_FORMAT_SIGNED_INT8 + elif case_desc(d, 8, 8, 0, 0, cudaChannelFormatKind.cudaChannelFormatKindSigned): + numberOfChannels[0] = 2 + format[0] = cydriver.CUarray_format_enum.CU_AD_FORMAT_SIGNED_INT8 + elif case_desc(d, 8, 8, 8, 0, cudaChannelFormatKind.cudaChannelFormatKindSigned): + numberOfChannels[0] = 3 + format[0] = cydriver.CUarray_format_enum.CU_AD_FORMAT_SIGNED_INT8 + elif case_desc(d, 8, 8, 8, 8, cudaChannelFormatKind.cudaChannelFormatKindSigned): + numberOfChannels[0] = 4 + format[0] = cydriver.CUarray_format_enum.CU_AD_FORMAT_SIGNED_INT8 + elif case_desc(d, 8, 0, 0, 0, cudaChannelFormatKind.cudaChannelFormatKindUnsigned): + numberOfChannels[0] = 1 + format[0] = cydriver.CUarray_format_enum.CU_AD_FORMAT_UNSIGNED_INT8 + elif case_desc(d, 8, 8, 0, 0, cudaChannelFormatKind.cudaChannelFormatKindUnsigned): + numberOfChannels[0] = 2 + format[0] = cydriver.CUarray_format_enum.CU_AD_FORMAT_UNSIGNED_INT8 + elif case_desc(d, 8, 8, 8, 0, cudaChannelFormatKind.cudaChannelFormatKindUnsigned): + numberOfChannels[0] = 3 + format[0] = cydriver.CUarray_format_enum.CU_AD_FORMAT_UNSIGNED_INT8 + elif case_desc(d, 8, 8, 8, 8, cudaChannelFormatKind.cudaChannelFormatKindUnsigned): + numberOfChannels[0] = 4 + format[0] = cydriver.CUarray_format_enum.CU_AD_FORMAT_UNSIGNED_INT8 + elif case_desc(d, 16, 0, 0, 0, cudaChannelFormatKind.cudaChannelFormatKindSigned): + numberOfChannels[0] = 1 + format[0] = cydriver.CUarray_format_enum.CU_AD_FORMAT_SIGNED_INT16 + elif case_desc(d, 16, 16, 0, 0, cudaChannelFormatKind.cudaChannelFormatKindSigned): + numberOfChannels[0] = 2 + format[0] = cydriver.CUarray_format_enum.CU_AD_FORMAT_SIGNED_INT16 + elif case_desc(d, 16, 16, 16, 0, cudaChannelFormatKind.cudaChannelFormatKindSigned): + numberOfChannels[0] = 3 + format[0] = cydriver.CUarray_format_enum.CU_AD_FORMAT_SIGNED_INT16 + elif case_desc(d, 16, 16, 16, 16, cudaChannelFormatKind.cudaChannelFormatKindSigned): + numberOfChannels[0] = 4 + format[0] = cydriver.CUarray_format_enum.CU_AD_FORMAT_SIGNED_INT16 + elif case_desc(d, 16, 0, 0, 0, cudaChannelFormatKind.cudaChannelFormatKindUnsigned): + numberOfChannels[0] = 1 + format[0] = cydriver.CUarray_format_enum.CU_AD_FORMAT_UNSIGNED_INT16 + elif case_desc(d, 16, 16, 0, 0, cudaChannelFormatKind.cudaChannelFormatKindUnsigned): + numberOfChannels[0] = 2 + format[0] = cydriver.CUarray_format_enum.CU_AD_FORMAT_UNSIGNED_INT16 + elif case_desc(d, 16, 16, 16, 0, cudaChannelFormatKind.cudaChannelFormatKindUnsigned): + numberOfChannels[0] = 3 + format[0] = cydriver.CUarray_format_enum.CU_AD_FORMAT_UNSIGNED_INT16 + elif case_desc(d, 16, 16, 16, 16, cudaChannelFormatKind.cudaChannelFormatKindUnsigned): + numberOfChannels[0] = 4 + format[0] = cydriver.CUarray_format_enum.CU_AD_FORMAT_UNSIGNED_INT16 + elif case_desc(d, 32, 0, 0, 0, cudaChannelFormatKind.cudaChannelFormatKindSigned): + numberOfChannels[0] = 1 + format[0] = cydriver.CUarray_format_enum.CU_AD_FORMAT_SIGNED_INT32 + elif case_desc(d, 32, 32, 0, 0, cudaChannelFormatKind.cudaChannelFormatKindSigned): + numberOfChannels[0] = 2 + format[0] = cydriver.CUarray_format_enum.CU_AD_FORMAT_SIGNED_INT32 + elif case_desc(d, 32, 32, 32, 0, cudaChannelFormatKind.cudaChannelFormatKindSigned): + numberOfChannels[0] = 3 + format[0] = cydriver.CUarray_format_enum.CU_AD_FORMAT_SIGNED_INT32 + elif case_desc(d, 32, 32, 32, 32, cudaChannelFormatKind.cudaChannelFormatKindSigned): + numberOfChannels[0] = 4 + format[0] = cydriver.CUarray_format_enum.CU_AD_FORMAT_SIGNED_INT32 + elif case_desc(d, 32, 0, 0, 0, cudaChannelFormatKind.cudaChannelFormatKindUnsigned): + numberOfChannels[0] = 1 + format[0] = cydriver.CUarray_format_enum.CU_AD_FORMAT_UNSIGNED_INT32 + elif case_desc(d, 32, 32, 0, 0, cudaChannelFormatKind.cudaChannelFormatKindUnsigned): + numberOfChannels[0] = 2 + format[0] = cydriver.CUarray_format_enum.CU_AD_FORMAT_UNSIGNED_INT32 + elif case_desc(d, 32, 32, 32, 0, cudaChannelFormatKind.cudaChannelFormatKindUnsigned): + numberOfChannels[0] = 3 + format[0] = cydriver.CUarray_format_enum.CU_AD_FORMAT_UNSIGNED_INT32 + elif case_desc(d, 32, 32, 32, 32, cudaChannelFormatKind.cudaChannelFormatKindUnsigned): + numberOfChannels[0] = 4 + format[0] = cydriver.CUarray_format_enum.CU_AD_FORMAT_UNSIGNED_INT32 + elif case_desc(d, 16, 0, 0, 0, cudaChannelFormatKind.cudaChannelFormatKindFloat): + numberOfChannels[0] = 1 + format[0] = cydriver.CUarray_format_enum.CU_AD_FORMAT_HALF + elif case_desc(d, 16, 16, 0, 0, cudaChannelFormatKind.cudaChannelFormatKindFloat): + numberOfChannels[0] = 2 + format[0] = cydriver.CUarray_format_enum.CU_AD_FORMAT_HALF + elif case_desc(d, 16, 16, 16, 0, cudaChannelFormatKind.cudaChannelFormatKindFloat): + numberOfChannels[0] = 3 + format[0] = cydriver.CUarray_format_enum.CU_AD_FORMAT_HALF + elif case_desc(d, 16, 16, 16, 16, cudaChannelFormatKind.cudaChannelFormatKindFloat): + numberOfChannels[0] = 4 + format[0] = cydriver.CUarray_format_enum.CU_AD_FORMAT_HALF + elif case_desc(d, 32, 0, 0, 0, cudaChannelFormatKind.cudaChannelFormatKindFloat): + numberOfChannels[0] = 1 + format[0] = cydriver.CUarray_format_enum.CU_AD_FORMAT_FLOAT + elif case_desc(d, 32, 32, 0, 0, cudaChannelFormatKind.cudaChannelFormatKindFloat): + numberOfChannels[0] = 2 + format[0] = cydriver.CUarray_format_enum.CU_AD_FORMAT_FLOAT + elif case_desc(d, 32, 32, 32, 0, cudaChannelFormatKind.cudaChannelFormatKindFloat): + numberOfChannels[0] = 3 + format[0] = cydriver.CUarray_format_enum.CU_AD_FORMAT_FLOAT + elif case_desc(d, 32, 32, 32, 32, cudaChannelFormatKind.cudaChannelFormatKindFloat): + numberOfChannels[0] = 4 + format[0] = cydriver.CUarray_format_enum.CU_AD_FORMAT_FLOAT + elif case_desc(d, 8, 8, 8, 0, cudaChannelFormatKind.cudaChannelFormatKindNV12): + numberOfChannels[0] = 3 + format[0] = cydriver.CUarray_format_enum.CU_AD_FORMAT_NV12 + elif case_desc(d, 8, 8, 8, 8, cudaChannelFormatKind.cudaChannelFormatKindUnsignedBlockCompressed1): + numberOfChannels[0] = 4 + format[0] = cydriver.CUarray_format_enum.CU_AD_FORMAT_BC1_UNORM + elif case_desc(d, 8, 8, 8, 8, cudaChannelFormatKind.cudaChannelFormatKindUnsignedBlockCompressed1SRGB): + numberOfChannels[0] = 4 + format[0] = cydriver.CUarray_format_enum.CU_AD_FORMAT_BC1_UNORM_SRGB + elif case_desc(d, 8, 8, 8, 8, cudaChannelFormatKind.cudaChannelFormatKindUnsignedBlockCompressed2): + numberOfChannels[0] = 4 + format[0] = cydriver.CUarray_format_enum.CU_AD_FORMAT_BC2_UNORM + elif case_desc(d, 8, 8, 8, 8, cudaChannelFormatKind.cudaChannelFormatKindUnsignedBlockCompressed2SRGB): + numberOfChannels[0] = 4 + format[0] = cydriver.CUarray_format_enum.CU_AD_FORMAT_BC2_UNORM_SRGB + elif case_desc(d, 8, 8, 8, 8, cudaChannelFormatKind.cudaChannelFormatKindUnsignedBlockCompressed3): + numberOfChannels[0] = 4 + format[0] = cydriver.CUarray_format_enum.CU_AD_FORMAT_BC3_UNORM + elif case_desc(d, 8, 8, 8, 8, cudaChannelFormatKind.cudaChannelFormatKindUnsignedBlockCompressed3SRGB): + numberOfChannels[0] = 4 + format[0] = cydriver.CUarray_format_enum.CU_AD_FORMAT_BC3_UNORM_SRGB + elif case_desc(d, 8, 0, 0, 0, cudaChannelFormatKind.cudaChannelFormatKindUnsignedBlockCompressed4): + numberOfChannels[0] = 1 + format[0] = cydriver.CUarray_format_enum.CU_AD_FORMAT_BC4_UNORM + elif case_desc(d, 8, 0, 0, 0, cudaChannelFormatKind.cudaChannelFormatKindSignedBlockCompressed4): + numberOfChannels[0] = 1 + format[0] = cydriver.CUarray_format_enum.CU_AD_FORMAT_BC4_SNORM + elif case_desc(d, 8, 8, 0, 0, cudaChannelFormatKind.cudaChannelFormatKindUnsignedBlockCompressed5): + numberOfChannels[0] = 2 + format[0] = cydriver.CUarray_format_enum.CU_AD_FORMAT_BC5_UNORM + elif case_desc(d, 8, 8, 0, 0, cudaChannelFormatKind.cudaChannelFormatKindSignedBlockCompressed5): + numberOfChannels[0] = 2 + format[0] = cydriver.CUarray_format_enum.CU_AD_FORMAT_BC5_SNORM + elif case_desc(d, 16, 16, 16, 0, cudaChannelFormatKind.cudaChannelFormatKindUnsignedBlockCompressed6H): + numberOfChannels[0] = 3 + format[0] = cydriver.CUarray_format_enum.CU_AD_FORMAT_BC6H_UF16 + elif case_desc(d, 16, 16, 16, 0, cudaChannelFormatKind.cudaChannelFormatKindSignedBlockCompressed6H): + numberOfChannels[0] = 3 + format[0] = cydriver.CUarray_format_enum.CU_AD_FORMAT_BC6H_SF16 + elif case_desc(d, 8, 8, 8, 8, cudaChannelFormatKind.cudaChannelFormatKindUnsignedBlockCompressed7): + numberOfChannels[0] = 4 + format[0] = cydriver.CUarray_format_enum.CU_AD_FORMAT_BC7_UNORM + elif case_desc(d, 8, 8, 8, 8, cudaChannelFormatKind.cudaChannelFormatKindUnsignedBlockCompressed7SRGB): + numberOfChannels[0] = 4 + format[0] = cydriver.CUarray_format_enum.CU_AD_FORMAT_BC7_UNORM_SRGB + elif case_desc(d, 10, 10, 10, 2, cudaChannelFormatKind.cudaChannelFormatKindUnsignedNormalized1010102): + numberOfChannels[0] = 4 + format[0] = cydriver.CUarray_format_enum.CU_AD_FORMAT_UNORM_INT_101010_2 + else: + return cudaErrorInvalidChannelDescriptor + + if d[0].f in (cudaChannelFormatKind.cudaChannelFormatKindNV12, + cudaChannelFormatKind.cudaChannelFormatKindUnsignedBlockCompressed6H, + cudaChannelFormatKind.cudaChannelFormatKindSignedBlockCompressed6H,): + if numberOfChannels[0] != 3: + return cudaErrorInvalidChannelDescriptor + else: + if (numberOfChannels[0] != 1) and (numberOfChannels[0] != 2) and (numberOfChannels[0] != 4): + return cudaErrorInvalidChannelDescriptor + return cudaSuccess + +cdef cudaError_t getChannelFormatDescFromDriverDesc(cudaChannelFormatDesc* pRuntimeDesc, size_t* pDepth, size_t* pHeight, size_t* pWidth, const cydriver.CUDA_ARRAY3D_DESCRIPTOR_v2* pDriverDesc) except ?cudaErrorCallRequiresNewerDriver nogil: + cdef int channel_size = 0 + if pDriverDesc[0].Format == cydriver.CU_AD_FORMAT_UNSIGNED_INT8: + pRuntimeDesc[0].f = cudaChannelFormatKind.cudaChannelFormatKindUnsigned + channel_size = 8 + elif pDriverDesc[0].Format == cydriver.CU_AD_FORMAT_UNSIGNED_INT16: + pRuntimeDesc[0].f = cudaChannelFormatKind.cudaChannelFormatKindUnsigned + channel_size = 16 + elif pDriverDesc[0].Format == cydriver.CU_AD_FORMAT_UNSIGNED_INT32: + pRuntimeDesc[0].f = cudaChannelFormatKind.cudaChannelFormatKindUnsigned + channel_size = 32 + elif pDriverDesc[0].Format == cydriver.CU_AD_FORMAT_SIGNED_INT8: + pRuntimeDesc[0].f = cudaChannelFormatKind.cudaChannelFormatKindSigned + channel_size = 8 + elif pDriverDesc[0].Format == cydriver.CU_AD_FORMAT_SIGNED_INT16: + pRuntimeDesc[0].f = cudaChannelFormatKind.cudaChannelFormatKindSigned + channel_size = 16 + elif pDriverDesc[0].Format == cydriver.CU_AD_FORMAT_SIGNED_INT32: + pRuntimeDesc[0].f = cudaChannelFormatKind.cudaChannelFormatKindSigned + channel_size = 32 + elif pDriverDesc[0].Format == cydriver.CU_AD_FORMAT_HALF: + pRuntimeDesc[0].f = cudaChannelFormatKind.cudaChannelFormatKindFloat + channel_size = 16 + elif pDriverDesc[0].Format == cydriver.CU_AD_FORMAT_FLOAT: + pRuntimeDesc[0].f = cudaChannelFormatKind.cudaChannelFormatKindFloat + channel_size = 32 + elif pDriverDesc[0].Format == cydriver.CU_AD_FORMAT_NV12: + pRuntimeDesc[0].f = cudaChannelFormatKind.cudaChannelFormatKindNV12 + channel_size = 8 + elif pDriverDesc[0].Format == cydriver.CU_AD_FORMAT_UNORM_INT8X1: + pRuntimeDesc[0].f = cudaChannelFormatKind.cudaChannelFormatKindUnsignedNormalized8X1 + channel_size = 8 + elif pDriverDesc[0].Format == cydriver.CU_AD_FORMAT_UNORM_INT8X2: + pRuntimeDesc[0].f = cudaChannelFormatKind.cudaChannelFormatKindUnsignedNormalized8X2 + channel_size = 8 + elif pDriverDesc[0].Format == cydriver.CU_AD_FORMAT_UNORM_INT8X4: + pRuntimeDesc[0].f = cudaChannelFormatKind.cudaChannelFormatKindUnsignedNormalized8X4 + channel_size = 8 + elif pDriverDesc[0].Format == cydriver.CU_AD_FORMAT_SNORM_INT8X1: + pRuntimeDesc[0].f = cudaChannelFormatKind.cudaChannelFormatKindSignedNormalized8X1 + channel_size = 8 + elif pDriverDesc[0].Format == cydriver.CU_AD_FORMAT_SNORM_INT8X2: + pRuntimeDesc[0].f = cudaChannelFormatKind.cudaChannelFormatKindSignedNormalized8X2 + channel_size = 8 + elif pDriverDesc[0].Format == cydriver.CU_AD_FORMAT_SNORM_INT8X4: + pRuntimeDesc[0].f = cudaChannelFormatKind.cudaChannelFormatKindSignedNormalized8X4 + channel_size = 8 + elif pDriverDesc[0].Format == cydriver.CU_AD_FORMAT_UNORM_INT16X1: + pRuntimeDesc[0].f = cudaChannelFormatKind.cudaChannelFormatKindUnsignedNormalized16X1 + channel_size = 16 + elif pDriverDesc[0].Format == cydriver.CU_AD_FORMAT_UNORM_INT16X2: + pRuntimeDesc[0].f = cudaChannelFormatKind.cudaChannelFormatKindUnsignedNormalized16X2 + channel_size = 16 + elif pDriverDesc[0].Format == cydriver.CU_AD_FORMAT_UNORM_INT16X4: + pRuntimeDesc[0].f = cudaChannelFormatKind.cudaChannelFormatKindUnsignedNormalized16X4 + channel_size = 16 + elif pDriverDesc[0].Format == cydriver.CU_AD_FORMAT_SNORM_INT16X1: + pRuntimeDesc[0].f = cudaChannelFormatKind.cudaChannelFormatKindSignedNormalized16X1 + channel_size = 16 + elif pDriverDesc[0].Format == cydriver.CU_AD_FORMAT_SNORM_INT16X2: + pRuntimeDesc[0].f = cudaChannelFormatKind.cudaChannelFormatKindSignedNormalized16X2 + channel_size = 16 + elif pDriverDesc[0].Format == cydriver.CU_AD_FORMAT_SNORM_INT16X4: + pRuntimeDesc[0].f = cudaChannelFormatKind.cudaChannelFormatKindSignedNormalized16X4 + channel_size = 16 + elif pDriverDesc[0].Format == cydriver.CU_AD_FORMAT_BC1_UNORM: + pRuntimeDesc[0].f = cudaChannelFormatKind.cudaChannelFormatKindUnsignedBlockCompressed1 + channel_size = 8 + elif pDriverDesc[0].Format == cydriver.CU_AD_FORMAT_BC1_UNORM_SRGB: + pRuntimeDesc[0].f = cudaChannelFormatKind.cudaChannelFormatKindUnsignedBlockCompressed1SRGB + channel_size = 8 + elif pDriverDesc[0].Format == cydriver.CU_AD_FORMAT_BC2_UNORM: + pRuntimeDesc[0].f = cudaChannelFormatKind.cudaChannelFormatKindUnsignedBlockCompressed2 + channel_size = 8 + elif pDriverDesc[0].Format == cydriver.CU_AD_FORMAT_BC2_UNORM_SRGB: + pRuntimeDesc[0].f = cudaChannelFormatKind.cudaChannelFormatKindUnsignedBlockCompressed2SRGB + channel_size = 8 + elif pDriverDesc[0].Format == cydriver.CU_AD_FORMAT_BC3_UNORM: + pRuntimeDesc[0].f = cudaChannelFormatKind.cudaChannelFormatKindUnsignedBlockCompressed3 + channel_size = 8 + elif pDriverDesc[0].Format == cydriver.CU_AD_FORMAT_BC3_UNORM_SRGB: + pRuntimeDesc[0].f = cudaChannelFormatKind.cudaChannelFormatKindUnsignedBlockCompressed3SRGB + channel_size = 8 + elif pDriverDesc[0].Format == cydriver.CU_AD_FORMAT_BC4_UNORM: + pRuntimeDesc[0].f = cudaChannelFormatKind.cudaChannelFormatKindUnsignedBlockCompressed4 + channel_size = 8 + elif pDriverDesc[0].Format == cydriver.CU_AD_FORMAT_BC4_SNORM: + pRuntimeDesc[0].f = cudaChannelFormatKind.cudaChannelFormatKindSignedBlockCompressed4 + channel_size = 8 + elif pDriverDesc[0].Format == cydriver.CU_AD_FORMAT_BC5_UNORM: + pRuntimeDesc[0].f = cudaChannelFormatKind.cudaChannelFormatKindUnsignedBlockCompressed5 + channel_size = 8 + elif pDriverDesc[0].Format == cydriver.CU_AD_FORMAT_BC5_SNORM: + pRuntimeDesc[0].f = cudaChannelFormatKind.cudaChannelFormatKindSignedBlockCompressed5 + channel_size = 8 + elif pDriverDesc[0].Format == cydriver.CU_AD_FORMAT_BC6H_UF16: + pRuntimeDesc[0].f = cudaChannelFormatKind.cudaChannelFormatKindUnsignedBlockCompressed6H + channel_size = 16 + elif pDriverDesc[0].Format == cydriver.CU_AD_FORMAT_BC6H_SF16: + pRuntimeDesc[0].f = cudaChannelFormatKind.cudaChannelFormatKindSignedBlockCompressed6H + channel_size = 16 + elif pDriverDesc[0].Format == cydriver.CU_AD_FORMAT_BC7_UNORM: + pRuntimeDesc[0].f = cudaChannelFormatKind.cudaChannelFormatKindUnsignedBlockCompressed7 + channel_size = 8 + elif pDriverDesc[0].Format == cydriver.CU_AD_FORMAT_BC7_UNORM_SRGB: + pRuntimeDesc[0].f = cudaChannelFormatKind.cudaChannelFormatKindUnsignedBlockCompressed7SRGB + channel_size = 8 + elif pDriverDesc[0].Format == cydriver.CU_AD_FORMAT_UNORM_INT_101010_2: + pRuntimeDesc[0].f = cudaChannelFormatKind.cudaChannelFormatKindUnsignedNormalized1010102 + else: + return cudaErrorInvalidChannelDescriptor + + # populate bits per channel + pRuntimeDesc[0].x = 0 + pRuntimeDesc[0].y = 0 + pRuntimeDesc[0].z = 0 + pRuntimeDesc[0].w = 0 + + if pDriverDesc[0].Format == cydriver.CU_AD_FORMAT_UNORM_INT_101010_2 and pDriverDesc[0].NumChannels == 4: + pRuntimeDesc[0].w = 2 + pRuntimeDesc[0].z = 10 + pRuntimeDesc[0].y = 10 + pRuntimeDesc[0].x = 10 + else: + if pDriverDesc[0].NumChannels >= 4: + pRuntimeDesc[0].w = channel_size + if pDriverDesc[0].NumChannels >= 3: + pRuntimeDesc[0].z = channel_size + if pDriverDesc[0].NumChannels >= 2: + pRuntimeDesc[0].y = channel_size + if pDriverDesc[0].NumChannels >= 1: + pRuntimeDesc[0].x = channel_size + + if pDriverDesc[0].NumChannels not in (4, 3, 2, 1): + return cudaErrorInvalidChannelDescriptor + + # populate dimensions + if pDepth != NULL: + pDepth[0] = pDriverDesc[0].Depth + if pHeight != NULL: + pHeight[0] = pDriverDesc[0].Height + if pWidth != NULL: + pWidth[0] = pDriverDesc[0].Width + return cudaSuccess + +cdef cudaError_t getDriverEglFrame(cydriver.CUeglFrame *cuEglFrame, cyruntime.cudaEglFrame eglFrame) except ?cudaErrorCallRequiresNewerDriver nogil: + cdef cudaError_t err = cudaSuccess + cdef unsigned int i = 0 + + err = getDescInfo(&eglFrame.planeDesc[0].channelDesc, &cuEglFrame[0].numChannels, &cuEglFrame[0].cuFormat) + if err != cudaSuccess: + return err + for i in range(eglFrame.planeCount): + if eglFrame.frameType == cyruntime.cudaEglFrameTypeArray: + cuEglFrame[0].frame.pArray[i] = eglFrame.frame.pArray[i] + else: + cuEglFrame[0].frame.pPitch[i] = eglFrame.frame.pPitch[i].ptr + cuEglFrame[0].width = eglFrame.planeDesc[0].width + cuEglFrame[0].height = eglFrame.planeDesc[0].height + cuEglFrame[0].depth = eglFrame.planeDesc[0].depth + cuEglFrame[0].pitch = eglFrame.planeDesc[0].pitch + cuEglFrame[0].planeCount = eglFrame.planeCount + if eglFrame.eglColorFormat == cyruntime.cudaEglColorFormatYUV420Planar: + cuEglFrame[0].eglColorFormat = cydriver.CUeglColorFormat_enum.CU_EGL_COLOR_FORMAT_YUV420_PLANAR + elif eglFrame.eglColorFormat == cyruntime.cudaEglColorFormatYUV420SemiPlanar: + cuEglFrame[0].eglColorFormat = cydriver.CUeglColorFormat_enum.CU_EGL_COLOR_FORMAT_YUV420_SEMIPLANAR + elif eglFrame.eglColorFormat == cyruntime.cudaEglColorFormatYUV422Planar: + cuEglFrame[0].eglColorFormat = cydriver.CUeglColorFormat_enum.CU_EGL_COLOR_FORMAT_YUV422_PLANAR + elif eglFrame.eglColorFormat == cyruntime.cudaEglColorFormatYUV422SemiPlanar: + cuEglFrame[0].eglColorFormat = cydriver.CUeglColorFormat_enum.CU_EGL_COLOR_FORMAT_YUV422_SEMIPLANAR + elif eglFrame.eglColorFormat == cyruntime.cudaEglColorFormatYUV444Planar: + cuEglFrame[0].eglColorFormat = cydriver.CUeglColorFormat_enum.CU_EGL_COLOR_FORMAT_YUV444_PLANAR + elif eglFrame.eglColorFormat == cyruntime.cudaEglColorFormatYUV444SemiPlanar: + cuEglFrame[0].eglColorFormat = cydriver.CUeglColorFormat_enum.CU_EGL_COLOR_FORMAT_YUV444_SEMIPLANAR + elif eglFrame.eglColorFormat == cyruntime.cudaEglColorFormatYUYV422: + cuEglFrame[0].eglColorFormat = cydriver.CUeglColorFormat_enum.CU_EGL_COLOR_FORMAT_YUYV_422 + elif eglFrame.eglColorFormat == cyruntime.cudaEglColorFormatUYVY422: + cuEglFrame[0].eglColorFormat = cydriver.CUeglColorFormat_enum.CU_EGL_COLOR_FORMAT_UYVY_422 + elif eglFrame.eglColorFormat == cyruntime.cudaEglColorFormatUYVY709: + cuEglFrame[0].eglColorFormat = cydriver.CUeglColorFormat_enum.CU_EGL_COLOR_FORMAT_UYVY_709 + elif eglFrame.eglColorFormat == cyruntime.cudaEglColorFormatUYVY709_ER: + cuEglFrame[0].eglColorFormat = cydriver.CUeglColorFormat_enum.CU_EGL_COLOR_FORMAT_UYVY_709_ER + elif eglFrame.eglColorFormat == cyruntime.cudaEglColorFormatUYVY2020: + cuEglFrame[0].eglColorFormat = cydriver.CUeglColorFormat_enum.CU_EGL_COLOR_FORMAT_UYVY_2020 + elif eglFrame.eglColorFormat == cyruntime.cudaEglColorFormatARGB: + cuEglFrame[0].eglColorFormat = cydriver.CUeglColorFormat_enum.CU_EGL_COLOR_FORMAT_ARGB + elif eglFrame.eglColorFormat == cyruntime.cudaEglColorFormatRGBA: + cuEglFrame[0].eglColorFormat = cydriver.CUeglColorFormat_enum.CU_EGL_COLOR_FORMAT_RGBA + elif eglFrame.eglColorFormat == cyruntime.cudaEglColorFormatABGR: + cuEglFrame[0].eglColorFormat = cydriver.CUeglColorFormat_enum.CU_EGL_COLOR_FORMAT_ABGR + elif eglFrame.eglColorFormat == cyruntime.cudaEglColorFormatBGRA: + cuEglFrame[0].eglColorFormat = cydriver.CUeglColorFormat_enum.CU_EGL_COLOR_FORMAT_BGRA + elif eglFrame.eglColorFormat == cyruntime.cudaEglColorFormatL: + cuEglFrame[0].eglColorFormat = cydriver.CUeglColorFormat_enum.CU_EGL_COLOR_FORMAT_L + elif eglFrame.eglColorFormat == cyruntime.cudaEglColorFormatR: + cuEglFrame[0].eglColorFormat = cydriver.CUeglColorFormat_enum.CU_EGL_COLOR_FORMAT_R + elif eglFrame.eglColorFormat == cyruntime.cudaEglColorFormatA: + cuEglFrame[0].eglColorFormat = cydriver.CUeglColorFormat_enum.CU_EGL_COLOR_FORMAT_A + elif eglFrame.eglColorFormat == cyruntime.cudaEglColorFormatRG: + cuEglFrame[0].eglColorFormat = cydriver.CUeglColorFormat_enum.CU_EGL_COLOR_FORMAT_RG + elif eglFrame.eglColorFormat == cyruntime.cudaEglColorFormatAYUV: + cuEglFrame[0].eglColorFormat = cydriver.CUeglColorFormat_enum.CU_EGL_COLOR_FORMAT_AYUV + elif eglFrame.eglColorFormat == cyruntime.cudaEglColorFormatYVU444SemiPlanar: + cuEglFrame[0].eglColorFormat = cydriver.CUeglColorFormat_enum.CU_EGL_COLOR_FORMAT_YVU444_SEMIPLANAR + elif eglFrame.eglColorFormat == cyruntime.cudaEglColorFormatYVU422SemiPlanar: + cuEglFrame[0].eglColorFormat = cydriver.CUeglColorFormat_enum.CU_EGL_COLOR_FORMAT_YVU422_SEMIPLANAR + elif eglFrame.eglColorFormat == cyruntime.cudaEglColorFormatYVU420SemiPlanar: + cuEglFrame[0].eglColorFormat = cydriver.CUeglColorFormat_enum.CU_EGL_COLOR_FORMAT_YVU420_SEMIPLANAR + elif eglFrame.eglColorFormat == cyruntime.cudaEglColorFormatY10V10U10_444SemiPlanar: + cuEglFrame[0].eglColorFormat = cydriver.CUeglColorFormat_enum.CU_EGL_COLOR_FORMAT_Y10V10U10_444_SEMIPLANAR + elif eglFrame.eglColorFormat == cyruntime.cudaEglColorFormatY10V10U10_420SemiPlanar: + cuEglFrame[0].eglColorFormat = cydriver.CUeglColorFormat_enum.CU_EGL_COLOR_FORMAT_Y10V10U10_420_SEMIPLANAR + elif eglFrame.eglColorFormat == cyruntime.cudaEglColorFormatY12V12U12_444SemiPlanar: + cuEglFrame[0].eglColorFormat = cydriver.CUeglColorFormat_enum.CU_EGL_COLOR_FORMAT_Y12V12U12_444_SEMIPLANAR + elif eglFrame.eglColorFormat == cyruntime.cudaEglColorFormatY12V12U12_420SemiPlanar: + cuEglFrame[0].eglColorFormat = cydriver.CUeglColorFormat_enum.CU_EGL_COLOR_FORMAT_Y12V12U12_420_SEMIPLANAR + elif eglFrame.eglColorFormat == cyruntime.cudaEglColorFormatVYUY_ER: + cuEglFrame[0].eglColorFormat = cydriver.CUeglColorFormat_enum.CU_EGL_COLOR_FORMAT_VYUY_ER + elif eglFrame.eglColorFormat == cyruntime.cudaEglColorFormatUYVY_ER: + cuEglFrame[0].eglColorFormat = cydriver.CUeglColorFormat_enum.CU_EGL_COLOR_FORMAT_UYVY_ER + elif eglFrame.eglColorFormat == cyruntime.cudaEglColorFormatYUYV_ER: + cuEglFrame[0].eglColorFormat = cydriver.CUeglColorFormat_enum.CU_EGL_COLOR_FORMAT_YUYV_ER + elif eglFrame.eglColorFormat == cyruntime.cudaEglColorFormatYVYU_ER: + cuEglFrame[0].eglColorFormat = cydriver.CUeglColorFormat_enum.CU_EGL_COLOR_FORMAT_YVYU_ER + elif eglFrame.eglColorFormat == cyruntime.cudaEglColorFormatYUVA_ER: + cuEglFrame[0].eglColorFormat = cydriver.CUeglColorFormat_enum.CU_EGL_COLOR_FORMAT_YUVA_ER + elif eglFrame.eglColorFormat == cyruntime.cudaEglColorFormatAYUV_ER: + cuEglFrame[0].eglColorFormat = cydriver.CUeglColorFormat_enum.CU_EGL_COLOR_FORMAT_AYUV_ER + elif eglFrame.eglColorFormat == cyruntime.cudaEglColorFormatYUV444Planar_ER: + cuEglFrame[0].eglColorFormat = cydriver.CUeglColorFormat_enum.CU_EGL_COLOR_FORMAT_YUV444_PLANAR_ER + elif eglFrame.eglColorFormat == cyruntime.cudaEglColorFormatYUV422Planar_ER: + cuEglFrame[0].eglColorFormat = cydriver.CUeglColorFormat_enum.CU_EGL_COLOR_FORMAT_YUV422_PLANAR_ER + elif eglFrame.eglColorFormat == cyruntime.cudaEglColorFormatYUV420Planar_ER: + cuEglFrame[0].eglColorFormat = cydriver.CUeglColorFormat_enum.CU_EGL_COLOR_FORMAT_YUV420_PLANAR_ER + elif eglFrame.eglColorFormat == cyruntime.cudaEglColorFormatYUV444SemiPlanar_ER: + cuEglFrame[0].eglColorFormat = cydriver.CUeglColorFormat_enum.CU_EGL_COLOR_FORMAT_YUV444_SEMIPLANAR_ER + elif eglFrame.eglColorFormat == cyruntime.cudaEglColorFormatYUV422SemiPlanar_ER: + cuEglFrame[0].eglColorFormat = cydriver.CUeglColorFormat_enum.CU_EGL_COLOR_FORMAT_YUV422_SEMIPLANAR_ER + elif eglFrame.eglColorFormat == cyruntime.cudaEglColorFormatYUV420SemiPlanar_ER: + cuEglFrame[0].eglColorFormat = cydriver.CUeglColorFormat_enum.CU_EGL_COLOR_FORMAT_YUV420_SEMIPLANAR_ER + elif eglFrame.eglColorFormat == cyruntime.cudaEglColorFormatYVU444Planar_ER: + cuEglFrame[0].eglColorFormat = cydriver.CUeglColorFormat_enum.CU_EGL_COLOR_FORMAT_YVU444_PLANAR_ER + elif eglFrame.eglColorFormat == cyruntime.cudaEglColorFormatYVU422Planar_ER: + cuEglFrame[0].eglColorFormat = cydriver.CUeglColorFormat_enum.CU_EGL_COLOR_FORMAT_YVU422_PLANAR_ER + elif eglFrame.eglColorFormat == cyruntime.cudaEglColorFormatYVU420Planar_ER: + cuEglFrame[0].eglColorFormat = cydriver.CUeglColorFormat_enum.CU_EGL_COLOR_FORMAT_YVU420_PLANAR_ER + elif eglFrame.eglColorFormat == cyruntime.cudaEglColorFormatYVU444SemiPlanar_ER: + cuEglFrame[0].eglColorFormat = cydriver.CUeglColorFormat_enum.CU_EGL_COLOR_FORMAT_YVU444_SEMIPLANAR_ER + elif eglFrame.eglColorFormat == cyruntime.cudaEglColorFormatYVU422SemiPlanar_ER: + cuEglFrame[0].eglColorFormat = cydriver.CUeglColorFormat_enum.CU_EGL_COLOR_FORMAT_YVU422_SEMIPLANAR_ER + elif eglFrame.eglColorFormat == cyruntime.cudaEglColorFormatYVU420SemiPlanar_ER: + cuEglFrame[0].eglColorFormat = cydriver.CUeglColorFormat_enum.CU_EGL_COLOR_FORMAT_YVU420_SEMIPLANAR_ER + elif eglFrame.eglColorFormat == cyruntime.cudaEglColorFormatBayerRGGB: + cuEglFrame[0].eglColorFormat = cydriver.CUeglColorFormat_enum.CU_EGL_COLOR_FORMAT_BAYER_RGGB + elif eglFrame.eglColorFormat == cyruntime.cudaEglColorFormatBayerBGGR: + cuEglFrame[0].eglColorFormat = cydriver.CUeglColorFormat_enum.CU_EGL_COLOR_FORMAT_BAYER_BGGR + elif eglFrame.eglColorFormat == cyruntime.cudaEglColorFormatBayerGRBG: + cuEglFrame[0].eglColorFormat = cydriver.CUeglColorFormat_enum.CU_EGL_COLOR_FORMAT_BAYER_GRBG + elif eglFrame.eglColorFormat == cyruntime.cudaEglColorFormatBayerGBRG: + cuEglFrame[0].eglColorFormat = cydriver.CUeglColorFormat_enum.CU_EGL_COLOR_FORMAT_BAYER_GBRG + elif eglFrame.eglColorFormat == cyruntime.cudaEglColorFormatBayer10RGGB: + cuEglFrame[0].eglColorFormat = cydriver.CUeglColorFormat_enum.CU_EGL_COLOR_FORMAT_BAYER10_RGGB + elif eglFrame.eglColorFormat == cyruntime.cudaEglColorFormatBayer10BGGR: + cuEglFrame[0].eglColorFormat = cydriver.CUeglColorFormat_enum.CU_EGL_COLOR_FORMAT_BAYER10_BGGR + elif eglFrame.eglColorFormat == cyruntime.cudaEglColorFormatBayer10GRBG: + cuEglFrame[0].eglColorFormat = cydriver.CUeglColorFormat_enum.CU_EGL_COLOR_FORMAT_BAYER10_GRBG + elif eglFrame.eglColorFormat == cyruntime.cudaEglColorFormatBayer10GBRG: + cuEglFrame[0].eglColorFormat = cydriver.CUeglColorFormat_enum.CU_EGL_COLOR_FORMAT_BAYER10_GBRG + elif eglFrame.eglColorFormat == cyruntime.cudaEglColorFormatBayer12RGGB: + cuEglFrame[0].eglColorFormat = cydriver.CUeglColorFormat_enum.CU_EGL_COLOR_FORMAT_BAYER12_RGGB + elif eglFrame.eglColorFormat == cyruntime.cudaEglColorFormatBayer12BGGR: + cuEglFrame[0].eglColorFormat = cydriver.CUeglColorFormat_enum.CU_EGL_COLOR_FORMAT_BAYER12_BGGR + elif eglFrame.eglColorFormat == cyruntime.cudaEglColorFormatBayer12GRBG: + cuEglFrame[0].eglColorFormat = cydriver.CUeglColorFormat_enum.CU_EGL_COLOR_FORMAT_BAYER12_GRBG + elif eglFrame.eglColorFormat == cyruntime.cudaEglColorFormatBayer12GBRG: + cuEglFrame[0].eglColorFormat = cydriver.CUeglColorFormat_enum.CU_EGL_COLOR_FORMAT_BAYER12_GBRG + elif eglFrame.eglColorFormat == cyruntime.cudaEglColorFormatBayer14RGGB: + cuEglFrame[0].eglColorFormat = cydriver.CUeglColorFormat_enum.CU_EGL_COLOR_FORMAT_BAYER14_RGGB + elif eglFrame.eglColorFormat == cyruntime.cudaEglColorFormatBayer14BGGR: + cuEglFrame[0].eglColorFormat = cydriver.CUeglColorFormat_enum.CU_EGL_COLOR_FORMAT_BAYER14_BGGR + elif eglFrame.eglColorFormat == cyruntime.cudaEglColorFormatBayer14GRBG: + cuEglFrame[0].eglColorFormat = cydriver.CUeglColorFormat_enum.CU_EGL_COLOR_FORMAT_BAYER14_GRBG + elif eglFrame.eglColorFormat == cyruntime.cudaEglColorFormatBayer14GBRG: + cuEglFrame[0].eglColorFormat = cydriver.CUeglColorFormat_enum.CU_EGL_COLOR_FORMAT_BAYER14_GBRG + elif eglFrame.eglColorFormat == cyruntime.cudaEglColorFormatBayer20RGGB: + cuEglFrame[0].eglColorFormat = cydriver.CUeglColorFormat_enum.CU_EGL_COLOR_FORMAT_BAYER20_RGGB + elif eglFrame.eglColorFormat == cyruntime.cudaEglColorFormatBayer20BGGR: + cuEglFrame[0].eglColorFormat = cydriver.CUeglColorFormat_enum.CU_EGL_COLOR_FORMAT_BAYER20_BGGR + elif eglFrame.eglColorFormat == cyruntime.cudaEglColorFormatBayer20GRBG: + cuEglFrame[0].eglColorFormat = cydriver.CUeglColorFormat_enum.CU_EGL_COLOR_FORMAT_BAYER20_GRBG + elif eglFrame.eglColorFormat == cyruntime.cudaEglColorFormatBayer20GBRG: + cuEglFrame[0].eglColorFormat = cydriver.CUeglColorFormat_enum.CU_EGL_COLOR_FORMAT_BAYER20_GBRG + elif eglFrame.eglColorFormat == cyruntime.cudaEglColorFormatBayerIspRGGB: + cuEglFrame[0].eglColorFormat = cydriver.CUeglColorFormat_enum.CU_EGL_COLOR_FORMAT_BAYER_ISP_RGGB + elif eglFrame.eglColorFormat == cyruntime.cudaEglColorFormatBayerIspBGGR: + cuEglFrame[0].eglColorFormat = cydriver.CUeglColorFormat_enum.CU_EGL_COLOR_FORMAT_BAYER_ISP_BGGR + elif eglFrame.eglColorFormat == cyruntime.cudaEglColorFormatBayerIspGRBG: + cuEglFrame[0].eglColorFormat = cydriver.CUeglColorFormat_enum.CU_EGL_COLOR_FORMAT_BAYER_ISP_GRBG + elif eglFrame.eglColorFormat == cyruntime.cudaEglColorFormatBayerIspGBRG: + cuEglFrame[0].eglColorFormat = cydriver.CUeglColorFormat_enum.CU_EGL_COLOR_FORMAT_BAYER_ISP_GBRG + elif eglFrame.eglColorFormat == cyruntime.cudaEglColorFormatYVU444Planar: + cuEglFrame[0].eglColorFormat = cydriver.CUeglColorFormat_enum.CU_EGL_COLOR_FORMAT_YVU444_PLANAR + elif eglFrame.eglColorFormat == cyruntime.cudaEglColorFormatYVU422Planar: + cuEglFrame[0].eglColorFormat = cydriver.CUeglColorFormat_enum.CU_EGL_COLOR_FORMAT_YVU422_PLANAR + elif eglFrame.eglColorFormat == cyruntime.cudaEglColorFormatYVU420Planar: + cuEglFrame[0].eglColorFormat = cydriver.CUeglColorFormat_enum.CU_EGL_COLOR_FORMAT_YVU420_PLANAR + elif eglFrame.eglColorFormat == cyruntime.cudaEglColorFormatBayerBCCR: + cuEglFrame[0].eglColorFormat = cydriver.CUeglColorFormat_enum.CU_EGL_COLOR_FORMAT_BAYER_BCCR + elif eglFrame.eglColorFormat == cyruntime.cudaEglColorFormatBayerRCCB: + cuEglFrame[0].eglColorFormat = cydriver.CUeglColorFormat_enum.CU_EGL_COLOR_FORMAT_BAYER_RCCB + elif eglFrame.eglColorFormat == cyruntime.cudaEglColorFormatBayerCRBC: + cuEglFrame[0].eglColorFormat = cydriver.CUeglColorFormat_enum.CU_EGL_COLOR_FORMAT_BAYER_CRBC + elif eglFrame.eglColorFormat == cyruntime.cudaEglColorFormatBayerCBRC: + cuEglFrame[0].eglColorFormat = cydriver.CUeglColorFormat_enum.CU_EGL_COLOR_FORMAT_BAYER_CBRC + elif eglFrame.eglColorFormat == cyruntime.cudaEglColorFormatBayer10CCCC: + cuEglFrame[0].eglColorFormat = cydriver.CUeglColorFormat_enum.CU_EGL_COLOR_FORMAT_BAYER10_CCCC + elif eglFrame.eglColorFormat == cyruntime.cudaEglColorFormatBayer12BCCR: + cuEglFrame[0].eglColorFormat = cydriver.CUeglColorFormat_enum.CU_EGL_COLOR_FORMAT_BAYER12_BCCR + elif eglFrame.eglColorFormat == cyruntime.cudaEglColorFormatBayer12RCCB: + cuEglFrame[0].eglColorFormat = cydriver.CUeglColorFormat_enum.CU_EGL_COLOR_FORMAT_BAYER12_RCCB + elif eglFrame.eglColorFormat == cyruntime.cudaEglColorFormatBayer12CRBC: + cuEglFrame[0].eglColorFormat = cydriver.CUeglColorFormat_enum.CU_EGL_COLOR_FORMAT_BAYER12_CRBC + elif eglFrame.eglColorFormat == cyruntime.cudaEglColorFormatBayer12CBRC: + cuEglFrame[0].eglColorFormat = cydriver.CUeglColorFormat_enum.CU_EGL_COLOR_FORMAT_BAYER12_CBRC + elif eglFrame.eglColorFormat == cyruntime.cudaEglColorFormatBayer12CCCC: + cuEglFrame[0].eglColorFormat = cydriver.CUeglColorFormat_enum.CU_EGL_COLOR_FORMAT_BAYER12_CCCC + elif eglFrame.eglColorFormat == cyruntime.cudaEglColorFormatY: + cuEglFrame[0].eglColorFormat = cydriver.CUeglColorFormat_enum.CU_EGL_COLOR_FORMAT_Y + elif eglFrame.eglColorFormat == cyruntime.cudaEglColorFormatYUV420SemiPlanar_2020: + cuEglFrame[0].eglColorFormat = cydriver.CUeglColorFormat_enum.CU_EGL_COLOR_FORMAT_YUV420_SEMIPLANAR_2020 + elif eglFrame.eglColorFormat == cyruntime.cudaEglColorFormatYVU420SemiPlanar_2020: + cuEglFrame[0].eglColorFormat = cydriver.CUeglColorFormat_enum.CU_EGL_COLOR_FORMAT_YVU420_SEMIPLANAR_2020 + elif eglFrame.eglColorFormat == cyruntime.cudaEglColorFormatYUV420Planar_2020: + cuEglFrame[0].eglColorFormat = cydriver.CUeglColorFormat_enum.CU_EGL_COLOR_FORMAT_YUV420_PLANAR_2020 + elif eglFrame.eglColorFormat == cyruntime.cudaEglColorFormatYVU420Planar_2020: + cuEglFrame[0].eglColorFormat = cydriver.CUeglColorFormat_enum.CU_EGL_COLOR_FORMAT_YVU420_PLANAR_2020 + elif eglFrame.eglColorFormat == cyruntime.cudaEglColorFormatYUV420SemiPlanar_709: + cuEglFrame[0].eglColorFormat = cydriver.CUeglColorFormat_enum.CU_EGL_COLOR_FORMAT_YUV420_SEMIPLANAR_709 + elif eglFrame.eglColorFormat == cyruntime.cudaEglColorFormatYVU420SemiPlanar_709: + cuEglFrame[0].eglColorFormat = cydriver.CUeglColorFormat_enum.CU_EGL_COLOR_FORMAT_YVU420_SEMIPLANAR_709 + elif eglFrame.eglColorFormat == cyruntime.cudaEglColorFormatYUV420Planar_709: + cuEglFrame[0].eglColorFormat = cydriver.CUeglColorFormat_enum.CU_EGL_COLOR_FORMAT_YUV420_PLANAR_709 + elif eglFrame.eglColorFormat == cyruntime.cudaEglColorFormatYVU420Planar_709: + cuEglFrame[0].eglColorFormat = cydriver.CUeglColorFormat_enum.CU_EGL_COLOR_FORMAT_YVU420_PLANAR_709 + elif eglFrame.eglColorFormat == cyruntime.cudaEglColorFormatY10V10U10_420SemiPlanar_709: + cuEglFrame[0].eglColorFormat = cydriver.CUeglColorFormat_enum.CU_EGL_COLOR_FORMAT_Y10V10U10_420_SEMIPLANAR_709 + elif eglFrame.eglColorFormat == cyruntime.cudaEglColorFormatY10V10U10_420SemiPlanar_2020: + cuEglFrame[0].eglColorFormat = cydriver.CUeglColorFormat_enum.CU_EGL_COLOR_FORMAT_Y10V10U10_420_SEMIPLANAR_2020 + elif eglFrame.eglColorFormat == cyruntime.cudaEglColorFormatY10V10U10_422SemiPlanar_2020: + cuEglFrame[0].eglColorFormat = cydriver.CUeglColorFormat_enum.CU_EGL_COLOR_FORMAT_Y10V10U10_422_SEMIPLANAR_2020 + elif eglFrame.eglColorFormat == cyruntime.cudaEglColorFormatY10V10U10_422SemiPlanar: + cuEglFrame[0].eglColorFormat = cydriver.CUeglColorFormat_enum.CU_EGL_COLOR_FORMAT_Y10V10U10_422_SEMIPLANAR + elif eglFrame.eglColorFormat == cyruntime.cudaEglColorFormatY10V10U10_422SemiPlanar_709: + cuEglFrame[0].eglColorFormat = cydriver.CUeglColorFormat_enum.CU_EGL_COLOR_FORMAT_Y10V10U10_422_SEMIPLANAR_709 + elif eglFrame.eglColorFormat == cyruntime.cudaEglColorFormatY_ER: + cuEglFrame[0].eglColorFormat = cydriver.CUeglColorFormat_enum.CU_EGL_COLOR_FORMAT_Y_ER + elif eglFrame.eglColorFormat == cyruntime.cudaEglColorFormatY_709_ER: + cuEglFrame[0].eglColorFormat = cydriver.CUeglColorFormat_enum.CU_EGL_COLOR_FORMAT_Y_709_ER + elif eglFrame.eglColorFormat == cyruntime.cudaEglColorFormatY10_ER: + cuEglFrame[0].eglColorFormat = cydriver.CUeglColorFormat_enum.CU_EGL_COLOR_FORMAT_Y10_ER + elif eglFrame.eglColorFormat == cyruntime.cudaEglColorFormatY10_709_ER: + cuEglFrame[0].eglColorFormat = cydriver.CUeglColorFormat_enum.CU_EGL_COLOR_FORMAT_Y10_709_ER + elif eglFrame.eglColorFormat == cyruntime.cudaEglColorFormatY12_ER: + cuEglFrame[0].eglColorFormat = cydriver.CUeglColorFormat_enum.CU_EGL_COLOR_FORMAT_Y12_ER + elif eglFrame.eglColorFormat == cyruntime.cudaEglColorFormatY12_709_ER: + cuEglFrame[0].eglColorFormat = cydriver.CUeglColorFormat_enum.CU_EGL_COLOR_FORMAT_Y12_709_ER + elif eglFrame.eglColorFormat == cyruntime.cudaEglColorFormatYUVA: + cuEglFrame[0].eglColorFormat = cydriver.CUeglColorFormat_enum.CU_EGL_COLOR_FORMAT_YUVA + elif eglFrame.eglColorFormat == cyruntime.cudaEglColorFormatYVYU: + cuEglFrame[0].eglColorFormat = cydriver.CUeglColorFormat_enum.CU_EGL_COLOR_FORMAT_YVYU + elif eglFrame.eglColorFormat == cyruntime.cudaEglColorFormatVYUY: + cuEglFrame[0].eglColorFormat = cydriver.CUeglColorFormat_enum.CU_EGL_COLOR_FORMAT_VYUY + elif eglFrame.eglColorFormat == cyruntime.cudaEglColorFormatY10V10U10_420SemiPlanar_ER: + cuEglFrame[0].eglColorFormat = cydriver.CUeglColorFormat_enum.CU_EGL_COLOR_FORMAT_Y10V10U10_420_SEMIPLANAR_ER + elif eglFrame.eglColorFormat == cyruntime.cudaEglColorFormatY10V10U10_420SemiPlanar_709_ER: + cuEglFrame[0].eglColorFormat = cydriver.CUeglColorFormat_enum.CU_EGL_COLOR_FORMAT_Y10V10U10_420_SEMIPLANAR_709_ER + elif eglFrame.eglColorFormat == cyruntime.cudaEglColorFormatY10V10U10_444SemiPlanar_ER: + cuEglFrame[0].eglColorFormat = cydriver.CUeglColorFormat_enum.CU_EGL_COLOR_FORMAT_Y10V10U10_444_SEMIPLANAR_ER + elif eglFrame.eglColorFormat == cyruntime.cudaEglColorFormatY10V10U10_444SemiPlanar_709_ER: + cuEglFrame[0].eglColorFormat = cydriver.CUeglColorFormat_enum.CU_EGL_COLOR_FORMAT_Y10V10U10_444_SEMIPLANAR_709_ER + elif eglFrame.eglColorFormat == cyruntime.cudaEglColorFormatY12V12U12_420SemiPlanar_ER: + cuEglFrame[0].eglColorFormat = cydriver.CUeglColorFormat_enum.CU_EGL_COLOR_FORMAT_Y12V12U12_420_SEMIPLANAR_ER + elif eglFrame.eglColorFormat == cyruntime.cudaEglColorFormatY12V12U12_420SemiPlanar_709_ER: + cuEglFrame[0].eglColorFormat = cydriver.CUeglColorFormat_enum.CU_EGL_COLOR_FORMAT_Y12V12U12_420_SEMIPLANAR_709_ER + elif eglFrame.eglColorFormat == cyruntime.cudaEglColorFormatY12V12U12_444SemiPlanar_ER: + cuEglFrame[0].eglColorFormat = cydriver.CUeglColorFormat_enum.CU_EGL_COLOR_FORMAT_Y12V12U12_444_SEMIPLANAR_ER + elif eglFrame.eglColorFormat == cyruntime.cudaEglColorFormatY12V12U12_444SemiPlanar_709_ER: + cuEglFrame[0].eglColorFormat = cydriver.CUeglColorFormat_enum.CU_EGL_COLOR_FORMAT_Y12V12U12_444_SEMIPLANAR_709_ER + else: + return cudaErrorInvalidValue + if eglFrame.frameType == cyruntime.cudaEglFrameTypeArray: + cuEglFrame[0].frameType = cydriver.CUeglFrameType_enum.CU_EGL_FRAME_TYPE_ARRAY + elif eglFrame.frameType == cyruntime.cudaEglFrameTypePitch: + cuEglFrame[0].frameType = cydriver.CUeglFrameType_enum.CU_EGL_FRAME_TYPE_PITCH + else: + return cudaErrorInvalidValue + +@cython.show_performance_hints(False) +cdef cudaError_t getRuntimeEglFrame(cyruntime.cudaEglFrame *eglFrame, cydriver.CUeglFrame cueglFrame) except ?cudaErrorCallRequiresNewerDriver nogil: + cdef cudaError_t err = cudaSuccess + cdef unsigned int i + cdef cydriver.CUDA_ARRAY3D_DESCRIPTOR_v2 ad + cdef cudaPitchedPtr pPtr + memset(eglFrame, 0, sizeof(eglFrame[0])) + memset(&ad, 0, sizeof(ad)) + for i in range(cueglFrame.planeCount): + ad.Depth = cueglFrame.depth + ad.Flags = 0 + ad.Format = cueglFrame.cuFormat + ad.Height = cueglFrame.height + ad.NumChannels = cueglFrame.numChannels + ad.Width = cueglFrame.width + + err = getChannelFormatDescFromDriverDesc(&eglFrame[0].planeDesc[i].channelDesc, NULL, NULL, NULL, &ad) + if err != cudaSuccess: + return err + + eglFrame[0].planeDesc[i].depth = cueglFrame.depth + eglFrame[0].planeDesc[i].numChannels = cueglFrame.numChannels + if i == 0: + eglFrame[0].planeDesc[i].width = cueglFrame.width + eglFrame[0].planeDesc[i].height = cueglFrame.height + eglFrame[0].planeDesc[i].pitch = cueglFrame.pitch + elif (cueglFrame.eglColorFormat == cydriver.CUeglColorFormat_enum.CU_EGL_COLOR_FORMAT_YUV420_PLANAR or + cueglFrame.eglColorFormat == cydriver.CUeglColorFormat_enum.CU_EGL_COLOR_FORMAT_YUV420_PLANAR_ER or + cueglFrame.eglColorFormat == cydriver.CUeglColorFormat_enum.CU_EGL_COLOR_FORMAT_YVU420_PLANAR or + cueglFrame.eglColorFormat == cydriver.CUeglColorFormat_enum.CU_EGL_COLOR_FORMAT_YVU420_PLANAR_ER or + cueglFrame.eglColorFormat == cydriver.CUeglColorFormat_enum.CU_EGL_COLOR_FORMAT_YUV420_PLANAR_2020 or + cueglFrame.eglColorFormat == cydriver.CUeglColorFormat_enum.CU_EGL_COLOR_FORMAT_YVU420_PLANAR_2020 or + cueglFrame.eglColorFormat == cydriver.CUeglColorFormat_enum.CU_EGL_COLOR_FORMAT_YUV420_PLANAR_709 or + cueglFrame.eglColorFormat == cydriver.CUeglColorFormat_enum.CU_EGL_COLOR_FORMAT_YVU420_PLANAR_709): + eglFrame[0].planeDesc[i].width = (cueglFrame.width / 2) + eglFrame[0].planeDesc[i].height = (cueglFrame.height / 2) + eglFrame[0].planeDesc[i].pitch = (cueglFrame.pitch / 2) + elif (cueglFrame.eglColorFormat == cydriver.CUeglColorFormat_enum.CU_EGL_COLOR_FORMAT_YUV420_SEMIPLANAR or + cueglFrame.eglColorFormat == cydriver.CUeglColorFormat_enum.CU_EGL_COLOR_FORMAT_YUV420_SEMIPLANAR_ER or + cueglFrame.eglColorFormat == cydriver.CUeglColorFormat_enum.CU_EGL_COLOR_FORMAT_YVU420_SEMIPLANAR or + cueglFrame.eglColorFormat == cydriver.CUeglColorFormat_enum.CU_EGL_COLOR_FORMAT_YVU420_SEMIPLANAR_ER or + cueglFrame.eglColorFormat == cydriver.CUeglColorFormat_enum.CU_EGL_COLOR_FORMAT_Y10V10U10_420_SEMIPLANAR or + cueglFrame.eglColorFormat == cydriver.CUeglColorFormat_enum.CU_EGL_COLOR_FORMAT_Y12V12U12_420_SEMIPLANAR or + cueglFrame.eglColorFormat == cydriver.CUeglColorFormat_enum.CU_EGL_COLOR_FORMAT_YUV420_SEMIPLANAR_2020 or + cueglFrame.eglColorFormat == cydriver.CUeglColorFormat_enum.CU_EGL_COLOR_FORMAT_YVU420_SEMIPLANAR_2020 or + cueglFrame.eglColorFormat == cydriver.CUeglColorFormat_enum.CU_EGL_COLOR_FORMAT_YUV420_SEMIPLANAR_709 or + cueglFrame.eglColorFormat == cydriver.CUeglColorFormat_enum.CU_EGL_COLOR_FORMAT_YVU420_SEMIPLANAR_709 or + cueglFrame.eglColorFormat == cydriver.CUeglColorFormat_enum.CU_EGL_COLOR_FORMAT_Y10V10U10_420_SEMIPLANAR_709 or + cueglFrame.eglColorFormat == cydriver.CUeglColorFormat_enum.CU_EGL_COLOR_FORMAT_Y10V10U10_420_SEMIPLANAR_2020 or + cueglFrame.eglColorFormat == cydriver.CUeglColorFormat_enum.CU_EGL_COLOR_FORMAT_Y10V10U10_420_SEMIPLANAR_ER or + cueglFrame.eglColorFormat == cydriver.CUeglColorFormat_enum.CU_EGL_COLOR_FORMAT_Y10V10U10_420_SEMIPLANAR_709_ER or + cueglFrame.eglColorFormat == cydriver.CUeglColorFormat_enum.CU_EGL_COLOR_FORMAT_Y12V12U12_420_SEMIPLANAR_ER or + cueglFrame.eglColorFormat == cydriver.CUeglColorFormat_enum.CU_EGL_COLOR_FORMAT_Y12V12U12_420_SEMIPLANAR_709_ER): + eglFrame[0].planeDesc[i].width = (cueglFrame.width / 2) + eglFrame[0].planeDesc[i].height = (cueglFrame.height / 2) + eglFrame[0].planeDesc[i].pitch = (cueglFrame.pitch / 2) + eglFrame[0].planeDesc[1].channelDesc.y = 8 + if (cueglFrame.eglColorFormat == cydriver.CUeglColorFormat_enum.CU_EGL_COLOR_FORMAT_Y10V10U10_420_SEMIPLANAR or + cueglFrame.eglColorFormat == cydriver.CUeglColorFormat_enum.CU_EGL_COLOR_FORMAT_Y12V12U12_420_SEMIPLANAR or + cueglFrame.eglColorFormat == cydriver.CUeglColorFormat_enum.CU_EGL_COLOR_FORMAT_Y10V10U10_420_SEMIPLANAR_709 or + cueglFrame.eglColorFormat == cydriver.CUeglColorFormat_enum.CU_EGL_COLOR_FORMAT_Y10V10U10_420_SEMIPLANAR_2020 or + cueglFrame.eglColorFormat == cydriver.CUeglColorFormat_enum.CU_EGL_COLOR_FORMAT_Y10V10U10_420_SEMIPLANAR_ER or + cueglFrame.eglColorFormat == cydriver.CUeglColorFormat_enum.CU_EGL_COLOR_FORMAT_Y10V10U10_420_SEMIPLANAR_709_ER or + cueglFrame.eglColorFormat == cydriver.CUeglColorFormat_enum.CU_EGL_COLOR_FORMAT_Y12V12U12_420_SEMIPLANAR_ER or + cueglFrame.eglColorFormat == cydriver.CUeglColorFormat_enum.CU_EGL_COLOR_FORMAT_Y12V12U12_420_SEMIPLANAR_709_ER): + eglFrame[0].planeDesc[1].channelDesc.y = 16 + elif (cueglFrame.eglColorFormat == cydriver.CUeglColorFormat_enum.CU_EGL_COLOR_FORMAT_YUV422_PLANAR or + cueglFrame.eglColorFormat == cydriver.CUeglColorFormat_enum.CU_EGL_COLOR_FORMAT_YUV422_PLANAR_ER or + cueglFrame.eglColorFormat == cydriver.CUeglColorFormat_enum.CU_EGL_COLOR_FORMAT_YVU422_PLANAR or + cueglFrame.eglColorFormat == cydriver.CUeglColorFormat_enum.CU_EGL_COLOR_FORMAT_YVU422_PLANAR_ER): + eglFrame[0].planeDesc[i].height = cueglFrame.height + eglFrame[0].planeDesc[i].width = (cueglFrame.width / 2) + eglFrame[0].planeDesc[i].pitch = (cueglFrame.pitch / 2) + elif (cueglFrame.eglColorFormat == cydriver.CUeglColorFormat_enum.CU_EGL_COLOR_FORMAT_YUV422_SEMIPLANAR or + cueglFrame.eglColorFormat == cydriver.CUeglColorFormat_enum.CU_EGL_COLOR_FORMAT_YUV422_SEMIPLANAR_ER or + cueglFrame.eglColorFormat == cydriver.CUeglColorFormat_enum.CU_EGL_COLOR_FORMAT_YVU422_SEMIPLANAR or + cueglFrame.eglColorFormat == cydriver.CUeglColorFormat_enum.CU_EGL_COLOR_FORMAT_YVU422_SEMIPLANAR_ER or + cueglFrame.eglColorFormat == cydriver.CUeglColorFormat_enum.CU_EGL_COLOR_FORMAT_Y10V10U10_422_SEMIPLANAR_2020 or + cueglFrame.eglColorFormat == cydriver.CUeglColorFormat_enum.CU_EGL_COLOR_FORMAT_Y10V10U10_422_SEMIPLANAR or + cueglFrame.eglColorFormat == cydriver.CUeglColorFormat_enum.CU_EGL_COLOR_FORMAT_Y10V10U10_422_SEMIPLANAR_709): + eglFrame[0].planeDesc[i].width = (cueglFrame.width / 2) + eglFrame[0].planeDesc[i].height = cueglFrame.height + eglFrame[0].planeDesc[i].pitch = (cueglFrame.pitch / 2) + eglFrame[0].planeDesc[1].channelDesc.y = 8 + if (cueglFrame.eglColorFormat == cydriver.CUeglColorFormat_enum.CU_EGL_COLOR_FORMAT_Y10V10U10_422_SEMIPLANAR_2020 or + cueglFrame.eglColorFormat == cydriver.CUeglColorFormat_enum.CU_EGL_COLOR_FORMAT_Y10V10U10_422_SEMIPLANAR or + cueglFrame.eglColorFormat == cydriver.CUeglColorFormat_enum.CU_EGL_COLOR_FORMAT_Y10V10U10_422_SEMIPLANAR_709): + eglFrame[0].planeDesc[1].channelDesc.y = 16 + elif (cueglFrame.eglColorFormat == cydriver.CUeglColorFormat_enum.CU_EGL_COLOR_FORMAT_YUV444_PLANAR or + cueglFrame.eglColorFormat == cydriver.CUeglColorFormat_enum.CU_EGL_COLOR_FORMAT_YUV444_PLANAR_ER or + cueglFrame.eglColorFormat == cydriver.CUeglColorFormat_enum.CU_EGL_COLOR_FORMAT_YVU444_PLANAR or + cueglFrame.eglColorFormat == cydriver.CUeglColorFormat_enum.CU_EGL_COLOR_FORMAT_YVU444_PLANAR_ER): + eglFrame[0].planeDesc[i].height = cueglFrame.height + eglFrame[0].planeDesc[i].width = cueglFrame.width + eglFrame[0].planeDesc[i].pitch = cueglFrame.pitch + elif (cueglFrame.eglColorFormat == cydriver.CUeglColorFormat_enum.CU_EGL_COLOR_FORMAT_YUV444_SEMIPLANAR or + cueglFrame.eglColorFormat == cydriver.CUeglColorFormat_enum.CU_EGL_COLOR_FORMAT_YUV444_SEMIPLANAR_ER or + cueglFrame.eglColorFormat == cydriver.CUeglColorFormat_enum.CU_EGL_COLOR_FORMAT_YVU444_SEMIPLANAR or + cueglFrame.eglColorFormat == cydriver.CUeglColorFormat_enum.CU_EGL_COLOR_FORMAT_YVU444_SEMIPLANAR_ER or + cueglFrame.eglColorFormat == cydriver.CUeglColorFormat_enum.CU_EGL_COLOR_FORMAT_Y10V10U10_444_SEMIPLANAR or + cueglFrame.eglColorFormat == cydriver.CUeglColorFormat_enum.CU_EGL_COLOR_FORMAT_Y12V12U12_444_SEMIPLANAR or + cueglFrame.eglColorFormat == cydriver.CUeglColorFormat_enum.CU_EGL_COLOR_FORMAT_Y10V10U10_444_SEMIPLANAR_ER or + cueglFrame.eglColorFormat == cydriver.CUeglColorFormat_enum.CU_EGL_COLOR_FORMAT_Y10V10U10_444_SEMIPLANAR_709_ER or + cueglFrame.eglColorFormat == cydriver.CUeglColorFormat_enum.CU_EGL_COLOR_FORMAT_Y12V12U12_444_SEMIPLANAR_ER or + cueglFrame.eglColorFormat == cydriver.CUeglColorFormat_enum.CU_EGL_COLOR_FORMAT_Y12V12U12_444_SEMIPLANAR_709_ER): + eglFrame[0].planeDesc[i].height = cueglFrame.height + eglFrame[0].planeDesc[i].width = cueglFrame.width + eglFrame[0].planeDesc[i].pitch = cueglFrame.pitch + eglFrame[0].planeDesc[1].channelDesc.y = 8 + if (cueglFrame.eglColorFormat == cydriver.CUeglColorFormat_enum.CU_EGL_COLOR_FORMAT_Y10V10U10_444_SEMIPLANAR or + cueglFrame.eglColorFormat == cydriver.CUeglColorFormat_enum.CU_EGL_COLOR_FORMAT_Y12V12U12_444_SEMIPLANAR or + cueglFrame.eglColorFormat == cydriver.CUeglColorFormat_enum.CU_EGL_COLOR_FORMAT_Y10V10U10_444_SEMIPLANAR_ER or + cueglFrame.eglColorFormat == cydriver.CUeglColorFormat_enum.CU_EGL_COLOR_FORMAT_Y10V10U10_444_SEMIPLANAR_709_ER or + cueglFrame.eglColorFormat == cydriver.CUeglColorFormat_enum.CU_EGL_COLOR_FORMAT_Y12V12U12_444_SEMIPLANAR_ER or + cueglFrame.eglColorFormat == cydriver.CUeglColorFormat_enum.CU_EGL_COLOR_FORMAT_Y12V12U12_444_SEMIPLANAR_709_ER): + eglFrame[0].planeDesc[1].channelDesc.y = 16 + if cueglFrame.frameType == cydriver.CUeglFrameType_enum.CU_EGL_FRAME_TYPE_ARRAY: + eglFrame[0].frame.pArray[i] = cueglFrame.frame.pArray[i] + else: + pPtr = make_cudaPitchedPtr(cueglFrame.frame.pPitch[i], eglFrame[0].planeDesc[i].pitch, + eglFrame[0].planeDesc[i].width, eglFrame[0].planeDesc[i].height) + eglFrame[0].frame.pPitch[i] = pPtr + + eglFrame[0].planeCount = cueglFrame.planeCount + if cueglFrame.eglColorFormat == cydriver.CUeglColorFormat_enum.CU_EGL_COLOR_FORMAT_YUV420_PLANAR: + eglFrame[0].eglColorFormat = cyruntime.cudaEglColorFormatYUV420Planar + elif cueglFrame.eglColorFormat == cydriver.CUeglColorFormat_enum.CU_EGL_COLOR_FORMAT_YUV420_SEMIPLANAR: + eglFrame[0].eglColorFormat = cyruntime.cudaEglColorFormatYUV420SemiPlanar + elif cueglFrame.eglColorFormat == cydriver.CUeglColorFormat_enum.CU_EGL_COLOR_FORMAT_YUV422_PLANAR: + eglFrame[0].eglColorFormat = cyruntime.cudaEglColorFormatYUV422Planar + elif cueglFrame.eglColorFormat == cydriver.CUeglColorFormat_enum.CU_EGL_COLOR_FORMAT_YUV422_SEMIPLANAR: + eglFrame[0].eglColorFormat = cyruntime.cudaEglColorFormatYUV422SemiPlanar + elif cueglFrame.eglColorFormat == cydriver.CUeglColorFormat_enum.CU_EGL_COLOR_FORMAT_YUV444_PLANAR: + eglFrame[0].eglColorFormat = cyruntime.cudaEglColorFormatYUV444Planar + elif cueglFrame.eglColorFormat == cydriver.CUeglColorFormat_enum.CU_EGL_COLOR_FORMAT_YUV444_SEMIPLANAR: + eglFrame[0].eglColorFormat = cyruntime.cudaEglColorFormatYUV444SemiPlanar + elif cueglFrame.eglColorFormat == cydriver.CUeglColorFormat_enum.CU_EGL_COLOR_FORMAT_YUYV_422: + eglFrame[0].eglColorFormat = cyruntime.cudaEglColorFormatYUYV422 + elif cueglFrame.eglColorFormat == cydriver.CUeglColorFormat_enum.CU_EGL_COLOR_FORMAT_UYVY_422: + eglFrame[0].eglColorFormat = cyruntime.cudaEglColorFormatUYVY422 + elif cueglFrame.eglColorFormat == cydriver.CUeglColorFormat_enum.CU_EGL_COLOR_FORMAT_UYVY_709: + eglFrame[0].eglColorFormat = cyruntime.cudaEglColorFormatUYVY709 + elif cueglFrame.eglColorFormat == cydriver.CUeglColorFormat_enum.CU_EGL_COLOR_FORMAT_UYVY_709_ER: + eglFrame[0].eglColorFormat = cyruntime.cudaEglColorFormatUYVY709_ER + elif cueglFrame.eglColorFormat == cydriver.CUeglColorFormat_enum.CU_EGL_COLOR_FORMAT_UYVY_2020: + eglFrame[0].eglColorFormat = cyruntime.cudaEglColorFormatUYVY2020 + elif cueglFrame.eglColorFormat == cydriver.CUeglColorFormat_enum.CU_EGL_COLOR_FORMAT_ARGB: + eglFrame[0].eglColorFormat = cyruntime.cudaEglColorFormatARGB + elif cueglFrame.eglColorFormat == cydriver.CUeglColorFormat_enum.CU_EGL_COLOR_FORMAT_RGBA: + eglFrame[0].eglColorFormat = cyruntime.cudaEglColorFormatRGBA + elif cueglFrame.eglColorFormat == cydriver.CUeglColorFormat_enum.CU_EGL_COLOR_FORMAT_ABGR: + eglFrame[0].eglColorFormat = cyruntime.cudaEglColorFormatABGR + elif cueglFrame.eglColorFormat == cydriver.CUeglColorFormat_enum.CU_EGL_COLOR_FORMAT_BGRA: + eglFrame[0].eglColorFormat = cyruntime.cudaEglColorFormatBGRA + elif cueglFrame.eglColorFormat == cydriver.CUeglColorFormat_enum.CU_EGL_COLOR_FORMAT_L: + eglFrame[0].eglColorFormat = cyruntime.cudaEglColorFormatL + elif cueglFrame.eglColorFormat == cydriver.CUeglColorFormat_enum.CU_EGL_COLOR_FORMAT_R: + eglFrame[0].eglColorFormat = cyruntime.cudaEglColorFormatR + elif cueglFrame.eglColorFormat == cydriver.CUeglColorFormat_enum.CU_EGL_COLOR_FORMAT_A: + eglFrame[0].eglColorFormat = cyruntime.cudaEglColorFormatA + elif cueglFrame.eglColorFormat == cydriver.CUeglColorFormat_enum.CU_EGL_COLOR_FORMAT_RG: + eglFrame[0].eglColorFormat = cyruntime.cudaEglColorFormatRG + elif cueglFrame.eglColorFormat == cydriver.CUeglColorFormat_enum.CU_EGL_COLOR_FORMAT_AYUV: + eglFrame[0].eglColorFormat = cyruntime.cudaEglColorFormatAYUV + elif cueglFrame.eglColorFormat == cydriver.CUeglColorFormat_enum.CU_EGL_COLOR_FORMAT_YVU444_SEMIPLANAR: + eglFrame[0].eglColorFormat = cyruntime.cudaEglColorFormatYVU444SemiPlanar + elif cueglFrame.eglColorFormat == cydriver.CUeglColorFormat_enum.CU_EGL_COLOR_FORMAT_YVU422_SEMIPLANAR: + eglFrame[0].eglColorFormat = cyruntime.cudaEglColorFormatYVU422SemiPlanar + elif cueglFrame.eglColorFormat == cydriver.CUeglColorFormat_enum.CU_EGL_COLOR_FORMAT_YVU420_SEMIPLANAR: + eglFrame[0].eglColorFormat = cyruntime.cudaEglColorFormatYVU420SemiPlanar + elif cueglFrame.eglColorFormat == cydriver.CUeglColorFormat_enum.CU_EGL_COLOR_FORMAT_Y10V10U10_444_SEMIPLANAR: + eglFrame[0].eglColorFormat = cyruntime.cudaEglColorFormatY10V10U10_444SemiPlanar + elif cueglFrame.eglColorFormat == cydriver.CUeglColorFormat_enum.CU_EGL_COLOR_FORMAT_Y10V10U10_420_SEMIPLANAR: + eglFrame[0].eglColorFormat = cyruntime.cudaEglColorFormatY10V10U10_420SemiPlanar + elif cueglFrame.eglColorFormat == cydriver.CUeglColorFormat_enum.CU_EGL_COLOR_FORMAT_Y12V12U12_444_SEMIPLANAR: + eglFrame[0].eglColorFormat = cyruntime.cudaEglColorFormatY12V12U12_444SemiPlanar + elif cueglFrame.eglColorFormat == cydriver.CUeglColorFormat_enum.CU_EGL_COLOR_FORMAT_Y12V12U12_420_SEMIPLANAR: + eglFrame[0].eglColorFormat = cyruntime.cudaEglColorFormatY12V12U12_420SemiPlanar + elif cueglFrame.eglColorFormat == cydriver.CUeglColorFormat_enum.CU_EGL_COLOR_FORMAT_VYUY_ER: + eglFrame[0].eglColorFormat = cyruntime.cudaEglColorFormatVYUY_ER + elif cueglFrame.eglColorFormat == cydriver.CUeglColorFormat_enum.CU_EGL_COLOR_FORMAT_UYVY_ER: + eglFrame[0].eglColorFormat = cyruntime.cudaEglColorFormatUYVY_ER + elif cueglFrame.eglColorFormat == cydriver.CUeglColorFormat_enum.CU_EGL_COLOR_FORMAT_YUYV_ER: + eglFrame[0].eglColorFormat = cyruntime.cudaEglColorFormatYUYV_ER + elif cueglFrame.eglColorFormat == cydriver.CUeglColorFormat_enum.CU_EGL_COLOR_FORMAT_YVYU_ER: + eglFrame[0].eglColorFormat = cyruntime.cudaEglColorFormatYVYU_ER + elif cueglFrame.eglColorFormat == cydriver.CUeglColorFormat_enum.CU_EGL_COLOR_FORMAT_YUVA_ER: + eglFrame[0].eglColorFormat = cyruntime.cudaEglColorFormatYUVA_ER + elif cueglFrame.eglColorFormat == cydriver.CUeglColorFormat_enum.CU_EGL_COLOR_FORMAT_AYUV_ER: + eglFrame[0].eglColorFormat = cyruntime.cudaEglColorFormatAYUV_ER + elif cueglFrame.eglColorFormat == cydriver.CUeglColorFormat_enum.CU_EGL_COLOR_FORMAT_YUV444_PLANAR_ER: + eglFrame[0].eglColorFormat = cyruntime.cudaEglColorFormatYUV444Planar_ER + elif cueglFrame.eglColorFormat == cydriver.CUeglColorFormat_enum.CU_EGL_COLOR_FORMAT_YUV422_PLANAR_ER: + eglFrame[0].eglColorFormat = cyruntime.cudaEglColorFormatYUV422Planar_ER + elif cueglFrame.eglColorFormat == cydriver.CUeglColorFormat_enum.CU_EGL_COLOR_FORMAT_YUV420_PLANAR_ER: + eglFrame[0].eglColorFormat = cyruntime.cudaEglColorFormatYUV420Planar_ER + elif cueglFrame.eglColorFormat == cydriver.CUeglColorFormat_enum.CU_EGL_COLOR_FORMAT_YUV444_SEMIPLANAR_ER: + eglFrame[0].eglColorFormat = cyruntime.cudaEglColorFormatYUV444SemiPlanar_ER + elif cueglFrame.eglColorFormat == cydriver.CUeglColorFormat_enum.CU_EGL_COLOR_FORMAT_YUV422_SEMIPLANAR_ER: + eglFrame[0].eglColorFormat = cyruntime.cudaEglColorFormatYUV422SemiPlanar_ER + elif cueglFrame.eglColorFormat == cydriver.CUeglColorFormat_enum.CU_EGL_COLOR_FORMAT_YUV420_SEMIPLANAR_ER: + eglFrame[0].eglColorFormat = cyruntime.cudaEglColorFormatYUV420SemiPlanar_ER + elif cueglFrame.eglColorFormat == cydriver.CUeglColorFormat_enum.CU_EGL_COLOR_FORMAT_YVU444_PLANAR_ER: + eglFrame[0].eglColorFormat = cyruntime.cudaEglColorFormatYVU444Planar_ER + elif cueglFrame.eglColorFormat == cydriver.CUeglColorFormat_enum.CU_EGL_COLOR_FORMAT_YVU422_PLANAR_ER: + eglFrame[0].eglColorFormat = cyruntime.cudaEglColorFormatYVU422Planar_ER + elif cueglFrame.eglColorFormat == cydriver.CUeglColorFormat_enum.CU_EGL_COLOR_FORMAT_YVU420_PLANAR_ER: + eglFrame[0].eglColorFormat = cyruntime.cudaEglColorFormatYVU420Planar_ER + elif cueglFrame.eglColorFormat == cydriver.CUeglColorFormat_enum.CU_EGL_COLOR_FORMAT_YVU444_SEMIPLANAR_ER: + eglFrame[0].eglColorFormat = cyruntime.cudaEglColorFormatYVU444SemiPlanar_ER + elif cueglFrame.eglColorFormat == cydriver.CUeglColorFormat_enum.CU_EGL_COLOR_FORMAT_YVU422_SEMIPLANAR_ER: + eglFrame[0].eglColorFormat = cyruntime.cudaEglColorFormatYVU422SemiPlanar_ER + elif cueglFrame.eglColorFormat == cydriver.CUeglColorFormat_enum.CU_EGL_COLOR_FORMAT_YVU420_SEMIPLANAR_ER: + eglFrame[0].eglColorFormat = cyruntime.cudaEglColorFormatYVU420SemiPlanar_ER + elif cueglFrame.eglColorFormat == cydriver.CUeglColorFormat_enum.CU_EGL_COLOR_FORMAT_BAYER_RGGB: + eglFrame[0].eglColorFormat = cyruntime.cudaEglColorFormatBayerRGGB + elif cueglFrame.eglColorFormat == cydriver.CUeglColorFormat_enum.CU_EGL_COLOR_FORMAT_BAYER_BGGR: + eglFrame[0].eglColorFormat = cyruntime.cudaEglColorFormatBayerBGGR + elif cueglFrame.eglColorFormat == cydriver.CUeglColorFormat_enum.CU_EGL_COLOR_FORMAT_BAYER_GRBG: + eglFrame[0].eglColorFormat = cyruntime.cudaEglColorFormatBayerGRBG + elif cueglFrame.eglColorFormat == cydriver.CUeglColorFormat_enum.CU_EGL_COLOR_FORMAT_BAYER_GBRG: + eglFrame[0].eglColorFormat = cyruntime.cudaEglColorFormatBayerGBRG + elif cueglFrame.eglColorFormat == cydriver.CUeglColorFormat_enum.CU_EGL_COLOR_FORMAT_BAYER10_RGGB: + eglFrame[0].eglColorFormat = cyruntime.cudaEglColorFormatBayer10RGGB + elif cueglFrame.eglColorFormat == cydriver.CUeglColorFormat_enum.CU_EGL_COLOR_FORMAT_BAYER10_BGGR: + eglFrame[0].eglColorFormat = cyruntime.cudaEglColorFormatBayer10BGGR + elif cueglFrame.eglColorFormat == cydriver.CUeglColorFormat_enum.CU_EGL_COLOR_FORMAT_BAYER10_GRBG: + eglFrame[0].eglColorFormat = cyruntime.cudaEglColorFormatBayer10GRBG + elif cueglFrame.eglColorFormat == cydriver.CUeglColorFormat_enum.CU_EGL_COLOR_FORMAT_BAYER10_GBRG: + eglFrame[0].eglColorFormat = cyruntime.cudaEglColorFormatBayer10GBRG + elif cueglFrame.eglColorFormat == cydriver.CUeglColorFormat_enum.CU_EGL_COLOR_FORMAT_BAYER12_RGGB: + eglFrame[0].eglColorFormat = cyruntime.cudaEglColorFormatBayer12RGGB + elif cueglFrame.eglColorFormat == cydriver.CUeglColorFormat_enum.CU_EGL_COLOR_FORMAT_BAYER12_BGGR: + eglFrame[0].eglColorFormat = cyruntime.cudaEglColorFormatBayer12BGGR + elif cueglFrame.eglColorFormat == cydriver.CUeglColorFormat_enum.CU_EGL_COLOR_FORMAT_BAYER12_GRBG: + eglFrame[0].eglColorFormat = cyruntime.cudaEglColorFormatBayer12GRBG + elif cueglFrame.eglColorFormat == cydriver.CUeglColorFormat_enum.CU_EGL_COLOR_FORMAT_BAYER12_GBRG: + eglFrame[0].eglColorFormat = cyruntime.cudaEglColorFormatBayer12GBRG + elif cueglFrame.eglColorFormat == cydriver.CUeglColorFormat_enum.CU_EGL_COLOR_FORMAT_BAYER14_RGGB: + eglFrame[0].eglColorFormat = cyruntime.cudaEglColorFormatBayer14RGGB + elif cueglFrame.eglColorFormat == cydriver.CUeglColorFormat_enum.CU_EGL_COLOR_FORMAT_BAYER14_BGGR: + eglFrame[0].eglColorFormat = cyruntime.cudaEglColorFormatBayer14BGGR + elif cueglFrame.eglColorFormat == cydriver.CUeglColorFormat_enum.CU_EGL_COLOR_FORMAT_BAYER14_GRBG: + eglFrame[0].eglColorFormat = cyruntime.cudaEglColorFormatBayer14GRBG + elif cueglFrame.eglColorFormat == cydriver.CUeglColorFormat_enum.CU_EGL_COLOR_FORMAT_BAYER14_GBRG: + eglFrame[0].eglColorFormat = cyruntime.cudaEglColorFormatBayer14GBRG + elif cueglFrame.eglColorFormat == cydriver.CUeglColorFormat_enum.CU_EGL_COLOR_FORMAT_BAYER20_RGGB: + eglFrame[0].eglColorFormat = cyruntime.cudaEglColorFormatBayer20RGGB + elif cueglFrame.eglColorFormat == cydriver.CUeglColorFormat_enum.CU_EGL_COLOR_FORMAT_BAYER20_BGGR: + eglFrame[0].eglColorFormat = cyruntime.cudaEglColorFormatBayer20BGGR + elif cueglFrame.eglColorFormat == cydriver.CUeglColorFormat_enum.CU_EGL_COLOR_FORMAT_BAYER20_GRBG: + eglFrame[0].eglColorFormat = cyruntime.cudaEglColorFormatBayer20GRBG + elif cueglFrame.eglColorFormat == cydriver.CUeglColorFormat_enum.CU_EGL_COLOR_FORMAT_BAYER20_GBRG: + eglFrame[0].eglColorFormat = cyruntime.cudaEglColorFormatBayer20GBRG + elif cueglFrame.eglColorFormat == cydriver.CUeglColorFormat_enum.CU_EGL_COLOR_FORMAT_BAYER_ISP_RGGB: + eglFrame[0].eglColorFormat = cyruntime.cudaEglColorFormatBayerIspRGGB + elif cueglFrame.eglColorFormat == cydriver.CUeglColorFormat_enum.CU_EGL_COLOR_FORMAT_BAYER_ISP_BGGR: + eglFrame[0].eglColorFormat = cyruntime.cudaEglColorFormatBayerIspBGGR + elif cueglFrame.eglColorFormat == cydriver.CUeglColorFormat_enum.CU_EGL_COLOR_FORMAT_BAYER_ISP_GRBG: + eglFrame[0].eglColorFormat = cyruntime.cudaEglColorFormatBayerIspGRBG + elif cueglFrame.eglColorFormat == cydriver.CUeglColorFormat_enum.CU_EGL_COLOR_FORMAT_BAYER_ISP_GBRG: + eglFrame[0].eglColorFormat = cyruntime.cudaEglColorFormatBayerIspGBRG + elif cueglFrame.eglColorFormat == cydriver.CUeglColorFormat_enum.CU_EGL_COLOR_FORMAT_YVU444_PLANAR: + eglFrame[0].eglColorFormat = cyruntime.cudaEglColorFormatYVU444Planar + elif cueglFrame.eglColorFormat == cydriver.CUeglColorFormat_enum.CU_EGL_COLOR_FORMAT_YVU422_PLANAR: + eglFrame[0].eglColorFormat = cyruntime.cudaEglColorFormatYVU422Planar + elif cueglFrame.eglColorFormat == cydriver.CUeglColorFormat_enum.CU_EGL_COLOR_FORMAT_YVU420_PLANAR: + eglFrame[0].eglColorFormat = cyruntime.cudaEglColorFormatYVU420Planar + elif cueglFrame.eglColorFormat == cydriver.CUeglColorFormat_enum.CU_EGL_COLOR_FORMAT_BAYER_BCCR: + eglFrame[0].eglColorFormat = cyruntime.cudaEglColorFormatBayerBCCR + elif cueglFrame.eglColorFormat == cydriver.CUeglColorFormat_enum.CU_EGL_COLOR_FORMAT_BAYER_RCCB: + eglFrame[0].eglColorFormat = cyruntime.cudaEglColorFormatBayerRCCB + elif cueglFrame.eglColorFormat == cydriver.CUeglColorFormat_enum.CU_EGL_COLOR_FORMAT_BAYER_CRBC: + eglFrame[0].eglColorFormat = cyruntime.cudaEglColorFormatBayerCRBC + elif cueglFrame.eglColorFormat == cydriver.CUeglColorFormat_enum.CU_EGL_COLOR_FORMAT_BAYER_CBRC: + eglFrame[0].eglColorFormat = cyruntime.cudaEglColorFormatBayerCBRC + elif cueglFrame.eglColorFormat == cydriver.CUeglColorFormat_enum.CU_EGL_COLOR_FORMAT_BAYER10_CCCC: + eglFrame[0].eglColorFormat = cyruntime.cudaEglColorFormatBayer10CCCC + elif cueglFrame.eglColorFormat == cydriver.CUeglColorFormat_enum.CU_EGL_COLOR_FORMAT_BAYER12_BCCR: + eglFrame[0].eglColorFormat = cyruntime.cudaEglColorFormatBayer12BCCR + elif cueglFrame.eglColorFormat == cydriver.CUeglColorFormat_enum.CU_EGL_COLOR_FORMAT_BAYER12_RCCB: + eglFrame[0].eglColorFormat = cyruntime.cudaEglColorFormatBayer12RCCB + elif cueglFrame.eglColorFormat == cydriver.CUeglColorFormat_enum.CU_EGL_COLOR_FORMAT_BAYER12_CRBC: + eglFrame[0].eglColorFormat = cyruntime.cudaEglColorFormatBayer12CRBC + elif cueglFrame.eglColorFormat == cydriver.CUeglColorFormat_enum.CU_EGL_COLOR_FORMAT_BAYER12_CBRC: + eglFrame[0].eglColorFormat = cyruntime.cudaEglColorFormatBayer12CBRC + elif cueglFrame.eglColorFormat == cydriver.CUeglColorFormat_enum.CU_EGL_COLOR_FORMAT_BAYER12_CCCC: + eglFrame[0].eglColorFormat = cyruntime.cudaEglColorFormatBayer12CCCC + elif cueglFrame.eglColorFormat == cydriver.CUeglColorFormat_enum.CU_EGL_COLOR_FORMAT_Y: + eglFrame[0].eglColorFormat = cyruntime.cudaEglColorFormatY + elif cueglFrame.eglColorFormat == cydriver.CUeglColorFormat_enum.CU_EGL_COLOR_FORMAT_YUV420_SEMIPLANAR_2020: + eglFrame[0].eglColorFormat = cyruntime.cudaEglColorFormatYUV420SemiPlanar_2020 + elif cueglFrame.eglColorFormat == cydriver.CUeglColorFormat_enum.CU_EGL_COLOR_FORMAT_YVU420_SEMIPLANAR_2020: + eglFrame[0].eglColorFormat = cyruntime.cudaEglColorFormatYVU420SemiPlanar_2020 + elif cueglFrame.eglColorFormat == cydriver.CUeglColorFormat_enum.CU_EGL_COLOR_FORMAT_YUV420_PLANAR_2020: + eglFrame[0].eglColorFormat = cyruntime.cudaEglColorFormatYUV420Planar_2020 + elif cueglFrame.eglColorFormat == cydriver.CUeglColorFormat_enum.CU_EGL_COLOR_FORMAT_YVU420_PLANAR_2020: + eglFrame[0].eglColorFormat = cyruntime.cudaEglColorFormatYVU420Planar_2020 + elif cueglFrame.eglColorFormat == cydriver.CUeglColorFormat_enum.CU_EGL_COLOR_FORMAT_YUV420_SEMIPLANAR_709: + eglFrame[0].eglColorFormat = cyruntime.cudaEglColorFormatYUV420SemiPlanar_709 + elif cueglFrame.eglColorFormat == cydriver.CUeglColorFormat_enum.CU_EGL_COLOR_FORMAT_YVU420_SEMIPLANAR_709: + eglFrame[0].eglColorFormat = cyruntime.cudaEglColorFormatYVU420SemiPlanar_709 + elif cueglFrame.eglColorFormat == cydriver.CUeglColorFormat_enum.CU_EGL_COLOR_FORMAT_YUV420_PLANAR_709: + eglFrame[0].eglColorFormat = cyruntime.cudaEglColorFormatYUV420Planar_709 + elif cueglFrame.eglColorFormat == cydriver.CUeglColorFormat_enum.CU_EGL_COLOR_FORMAT_YVU420_PLANAR_709: + eglFrame[0].eglColorFormat = cyruntime.cudaEglColorFormatYVU420Planar_709 + elif cueglFrame.eglColorFormat == cydriver.CUeglColorFormat_enum.CU_EGL_COLOR_FORMAT_Y10V10U10_420_SEMIPLANAR_709: + eglFrame[0].eglColorFormat = cyruntime.cudaEglColorFormatY10V10U10_420SemiPlanar_709 + elif cueglFrame.eglColorFormat == cydriver.CUeglColorFormat_enum.CU_EGL_COLOR_FORMAT_Y10V10U10_420_SEMIPLANAR_2020: + eglFrame[0].eglColorFormat = cyruntime.cudaEglColorFormatY10V10U10_420SemiPlanar_2020 + elif cueglFrame.eglColorFormat == cydriver.CUeglColorFormat_enum.CU_EGL_COLOR_FORMAT_Y10V10U10_422_SEMIPLANAR_2020: + eglFrame[0].eglColorFormat = cyruntime.cudaEglColorFormatY10V10U10_422SemiPlanar_2020 + elif cueglFrame.eglColorFormat == cydriver.CUeglColorFormat_enum.CU_EGL_COLOR_FORMAT_Y10V10U10_422_SEMIPLANAR: + eglFrame[0].eglColorFormat = cyruntime.cudaEglColorFormatY10V10U10_422SemiPlanar + elif cueglFrame.eglColorFormat == cydriver.CUeglColorFormat_enum.CU_EGL_COLOR_FORMAT_Y10V10U10_422_SEMIPLANAR_709: + eglFrame[0].eglColorFormat = cyruntime.cudaEglColorFormatY10V10U10_422SemiPlanar_709 + elif cueglFrame.eglColorFormat == cydriver.CUeglColorFormat_enum.CU_EGL_COLOR_FORMAT_Y_ER: + eglFrame[0].eglColorFormat = cyruntime.cudaEglColorFormatY_ER + elif cueglFrame.eglColorFormat == cydriver.CUeglColorFormat_enum.CU_EGL_COLOR_FORMAT_Y_709_ER: + eglFrame[0].eglColorFormat = cyruntime.cudaEglColorFormatY_709_ER + elif cueglFrame.eglColorFormat == cydriver.CUeglColorFormat_enum.CU_EGL_COLOR_FORMAT_Y10_ER: + eglFrame[0].eglColorFormat = cyruntime.cudaEglColorFormatY10_ER + elif cueglFrame.eglColorFormat == cydriver.CUeglColorFormat_enum.CU_EGL_COLOR_FORMAT_Y10_709_ER: + eglFrame[0].eglColorFormat = cyruntime.cudaEglColorFormatY10_709_ER + elif cueglFrame.eglColorFormat == cydriver.CUeglColorFormat_enum.CU_EGL_COLOR_FORMAT_Y12_ER: + eglFrame[0].eglColorFormat = cyruntime.cudaEglColorFormatY12_ER + elif cueglFrame.eglColorFormat == cydriver.CUeglColorFormat_enum.CU_EGL_COLOR_FORMAT_Y12_709_ER: + eglFrame[0].eglColorFormat = cyruntime.cudaEglColorFormatY12_709_ER + elif cueglFrame.eglColorFormat == cydriver.CUeglColorFormat_enum.CU_EGL_COLOR_FORMAT_YUVA: + eglFrame[0].eglColorFormat = cyruntime.cudaEglColorFormatYUVA + elif cueglFrame.eglColorFormat == cydriver.CUeglColorFormat_enum.CU_EGL_COLOR_FORMAT_YVYU: + eglFrame[0].eglColorFormat = cyruntime.cudaEglColorFormatYVYU + elif cueglFrame.eglColorFormat == cydriver.CUeglColorFormat_enum.CU_EGL_COLOR_FORMAT_VYUY: + eglFrame[0].eglColorFormat = cyruntime.cudaEglColorFormatVYUY + elif cueglFrame.eglColorFormat == cydriver.CUeglColorFormat_enum.CU_EGL_COLOR_FORMAT_Y10V10U10_420_SEMIPLANAR_ER: + eglFrame[0].eglColorFormat = cyruntime.cudaEglColorFormatY10V10U10_420SemiPlanar_ER + elif cueglFrame.eglColorFormat == cydriver.CUeglColorFormat_enum.CU_EGL_COLOR_FORMAT_Y10V10U10_420_SEMIPLANAR_709_ER: + eglFrame[0].eglColorFormat = cyruntime.cudaEglColorFormatY10V10U10_420SemiPlanar_709_ER + elif cueglFrame.eglColorFormat == cydriver.CUeglColorFormat_enum.CU_EGL_COLOR_FORMAT_Y10V10U10_444_SEMIPLANAR_ER: + eglFrame[0].eglColorFormat = cyruntime.cudaEglColorFormatY10V10U10_444SemiPlanar_ER + elif cueglFrame.eglColorFormat == cydriver.CUeglColorFormat_enum.CU_EGL_COLOR_FORMAT_Y10V10U10_444_SEMIPLANAR_709_ER: + eglFrame[0].eglColorFormat = cyruntime.cudaEglColorFormatY10V10U10_444SemiPlanar_709_ER + elif cueglFrame.eglColorFormat == cydriver.CUeglColorFormat_enum.CU_EGL_COLOR_FORMAT_Y12V12U12_420_SEMIPLANAR_ER: + eglFrame[0].eglColorFormat = cyruntime.cudaEglColorFormatY12V12U12_420SemiPlanar_ER + elif cueglFrame.eglColorFormat == cydriver.CUeglColorFormat_enum.CU_EGL_COLOR_FORMAT_Y12V12U12_420_SEMIPLANAR_709_ER: + eglFrame[0].eglColorFormat = cyruntime.cudaEglColorFormatY12V12U12_420SemiPlanar_709_ER + elif cueglFrame.eglColorFormat == cydriver.CUeglColorFormat_enum.CU_EGL_COLOR_FORMAT_Y12V12U12_444_SEMIPLANAR_ER: + eglFrame[0].eglColorFormat = cyruntime.cudaEglColorFormatY12V12U12_444SemiPlanar_ER + elif cueglFrame.eglColorFormat == cydriver.CUeglColorFormat_enum.CU_EGL_COLOR_FORMAT_Y12V12U12_444_SEMIPLANAR_709_ER: + eglFrame[0].eglColorFormat = cyruntime.cudaEglColorFormatY12V12U12_444SemiPlanar_709_ER + else: + return cudaErrorInvalidValue + if cueglFrame.frameType == cydriver.CUeglFrameType_enum.CU_EGL_FRAME_TYPE_ARRAY: + eglFrame[0].frameType = cyruntime.cudaEglFrameTypeArray + elif cueglFrame.frameType == cydriver.CUeglFrameType_enum.CU_EGL_FRAME_TYPE_PITCH: + eglFrame[0].frameType = cyruntime.cudaEglFrameTypePitch + else: + return cudaErrorInvalidValue diff --git a/venv/lib/python3.11/site-packages/cuda/bindings/_lib/dlfcn.pxd b/venv/lib/python3.11/site-packages/cuda/bindings/_lib/dlfcn.pxd new file mode 100644 index 0000000000000000000000000000000000000000..2ae95814396cab6134db80754e52e6f7b68bf979 --- /dev/null +++ b/venv/lib/python3.11/site-packages/cuda/bindings/_lib/dlfcn.pxd @@ -0,0 +1,14 @@ +# SPDX-FileCopyrightText: Copyright (c) 2021-2024 NVIDIA CORPORATION & AFFILIATES. All rights reserved. +# SPDX-License-Identifier: LicenseRef-NVIDIA-SOFTWARE-LICENSE + +cdef extern from "" nogil: + void *dlopen(const char *, int) + char *dlerror() + void *dlsym(void *, const char *) + int dlclose(void *) + + enum: + RTLD_LAZY + RTLD_NOW + RTLD_GLOBAL + RTLD_LOCAL diff --git a/venv/lib/python3.11/site-packages/cuda/bindings/_lib/param_packer.h b/venv/lib/python3.11/site-packages/cuda/bindings/_lib/param_packer.h new file mode 100644 index 0000000000000000000000000000000000000000..96c56b4fe4e0f2d3ec4d7dc87d7f66b3df545d79 --- /dev/null +++ b/venv/lib/python3.11/site-packages/cuda/bindings/_lib/param_packer.h @@ -0,0 +1,152 @@ +// SPDX-FileCopyrightText: Copyright (c) 2021-2024 NVIDIA CORPORATION & AFFILIATES. All rights reserved. +// SPDX-License-Identifier: LicenseRef-NVIDIA-SOFTWARE-LICENSE + +// Please refer to the NVIDIA end user license agreement (EULA) associated +// with this source code for terms and conditions that govern your use of +// this software. Any use, reproduction, disclosure, or distribution of +// this software and related documentation outside the terms of the EULA +// is strictly prohibited. + +#include + +#include +#include +#include +#include + +static PyObject* ctypes_module = nullptr; + +static PyTypeObject* ctypes_c_char = nullptr; +static PyTypeObject* ctypes_c_bool = nullptr; +static PyTypeObject* ctypes_c_wchar = nullptr; +static PyTypeObject* ctypes_c_byte = nullptr; +static PyTypeObject* ctypes_c_ubyte = nullptr; +static PyTypeObject* ctypes_c_short = nullptr; +static PyTypeObject* ctypes_c_ushort = nullptr; +static PyTypeObject* ctypes_c_int = nullptr; +static PyTypeObject* ctypes_c_uint = nullptr; +static PyTypeObject* ctypes_c_long = nullptr; +static PyTypeObject* ctypes_c_ulong = nullptr; +static PyTypeObject* ctypes_c_longlong = nullptr; +static PyTypeObject* ctypes_c_ulonglong = nullptr; +static PyTypeObject* ctypes_c_size_t = nullptr; +static PyTypeObject* ctypes_c_float = nullptr; +static PyTypeObject* ctypes_c_double = nullptr; +static PyTypeObject* ctypes_c_void_p = nullptr; + +static void fetch_ctypes() +{ + ctypes_module = PyImport_ImportModule("ctypes"); + if (ctypes_module == nullptr) + throw std::runtime_error("Cannot import ctypes module"); + // get method addressof + PyObject* ctypes_dict = PyModule_GetDict(ctypes_module); + if (ctypes_dict == nullptr) + throw std::runtime_error(std::string("FAILURE @ ") + std::string(__FILE__) + " : " + std::to_string(__LINE__)); + // supportedtypes + ctypes_c_char = (PyTypeObject*) PyDict_GetItemString(ctypes_dict, "c_char"); + ctypes_c_bool = (PyTypeObject*) PyDict_GetItemString(ctypes_dict, "c_bool"); + ctypes_c_wchar = (PyTypeObject*) PyDict_GetItemString(ctypes_dict, "c_wchar"); + ctypes_c_byte = (PyTypeObject*) PyDict_GetItemString(ctypes_dict, "c_byte"); + ctypes_c_ubyte = (PyTypeObject*) PyDict_GetItemString(ctypes_dict, "c_ubyte"); + ctypes_c_short = (PyTypeObject*) PyDict_GetItemString(ctypes_dict, "c_short"); + ctypes_c_ushort = (PyTypeObject*) PyDict_GetItemString(ctypes_dict, "c_ushort"); + ctypes_c_int = (PyTypeObject*) PyDict_GetItemString(ctypes_dict, "c_int"); + ctypes_c_uint = (PyTypeObject*) PyDict_GetItemString(ctypes_dict, "c_uint"); + ctypes_c_long = (PyTypeObject*) PyDict_GetItemString(ctypes_dict, "c_long"); + ctypes_c_ulong = (PyTypeObject*) PyDict_GetItemString(ctypes_dict, "c_ulong"); + ctypes_c_longlong = (PyTypeObject*) PyDict_GetItemString(ctypes_dict, "c_longlong"); + ctypes_c_ulonglong = (PyTypeObject*) PyDict_GetItemString(ctypes_dict, "c_ulonglong"); + ctypes_c_size_t = (PyTypeObject*) PyDict_GetItemString(ctypes_dict, "c_size_t"); + ctypes_c_float = (PyTypeObject*) PyDict_GetItemString(ctypes_dict, "c_float"); + ctypes_c_double = (PyTypeObject*) PyDict_GetItemString(ctypes_dict, "c_double"); + ctypes_c_void_p = (PyTypeObject*) PyDict_GetItemString(ctypes_dict, "c_void_p"); // == c_voidp +} + + +// (target type, source type) +static std::map, std::function> m_feeders; + +static void populate_feeders(PyTypeObject* target_t, PyTypeObject* source_t) +{ + if (target_t == ctypes_c_int) + { + if (source_t == &PyLong_Type) + { + m_feeders[{target_t,source_t}] = [](void* ptr, PyObject* value) -> int + { + *((int*)ptr) = (int)PyLong_AsLong(value); + return sizeof(int); + }; + return; + } + } else if (target_t == ctypes_c_bool) { + if (source_t == &PyBool_Type) + { + m_feeders[{target_t,source_t}] = [](void* ptr, PyObject* value) -> int + { + *((bool*)ptr) = (value == Py_True); + return sizeof(bool); + }; + return; + } + } else if (target_t == ctypes_c_byte) { + if (source_t == &PyLong_Type) + { + m_feeders[{target_t,source_t}] = [](void* ptr, PyObject* value) -> int + { + *((int8_t*)ptr) = (int8_t)PyLong_AsLong(value); + return sizeof(int8_t); + }; + return; + } + } else if (target_t == ctypes_c_double) { + if (source_t == &PyFloat_Type) + { + m_feeders[{target_t,source_t}] = [](void* ptr, PyObject* value) -> int + { + *((double*)ptr) = (double)PyFloat_AsDouble(value); + return sizeof(double); + }; + return; + } + } else if (target_t == ctypes_c_float) { + if (source_t == &PyFloat_Type) + { + m_feeders[{target_t,source_t}] = [](void* ptr, PyObject* value) -> int + { + *((float*)ptr) = (float)PyFloat_AsDouble(value); + return sizeof(float); + }; + return; + } + } else if (target_t == ctypes_c_longlong) { + if (source_t == &PyLong_Type) + { + m_feeders[{target_t,source_t}] = [](void* ptr, PyObject* value) -> int + { + *((long long*)ptr) = (long long)PyLong_AsLongLong(value); + return sizeof(long long); + }; + return; + } + } +} + +static int feed(void* ptr, PyObject* value, PyObject* type) +{ + PyTypeObject* pto = (PyTypeObject*)type; + if (ctypes_c_int == nullptr) + fetch_ctypes(); + auto found = m_feeders.find({pto,value->ob_type}); + if (found == m_feeders.end()) + { + populate_feeders(pto, value->ob_type); + found = m_feeders.find({pto,value->ob_type}); + } + if (found != m_feeders.end()) + { + return found->second(ptr, value); + } + return 0; +} diff --git a/venv/lib/python3.11/site-packages/cuda/bindings/_lib/param_packer.pxd b/venv/lib/python3.11/site-packages/cuda/bindings/_lib/param_packer.pxd new file mode 100644 index 0000000000000000000000000000000000000000..ad7fd95668fb3065b8ffa142ddad22970d23ed55 --- /dev/null +++ b/venv/lib/python3.11/site-packages/cuda/bindings/_lib/param_packer.pxd @@ -0,0 +1,7 @@ +# SPDX-FileCopyrightText: Copyright (c) 2021-2024 NVIDIA CORPORATION & AFFILIATES. All rights reserved. +# SPDX-License-Identifier: LicenseRef-NVIDIA-SOFTWARE-LICENSE + +# Include "param_packer.h" so its contents get compiled into every +# Cython extension module that depends on param_packer.pxd. +cdef extern from "param_packer.h": + int feed(void* ptr, object o, object ct) diff --git a/venv/lib/python3.11/site-packages/cuda/bindings/_lib/utils.pxd b/venv/lib/python3.11/site-packages/cuda/bindings/_lib/utils.pxd new file mode 100644 index 0000000000000000000000000000000000000000..b3fe005e2ebac038814d87a51865b7d6ece4e2c3 --- /dev/null +++ b/venv/lib/python3.11/site-packages/cuda/bindings/_lib/utils.pxd @@ -0,0 +1,145 @@ +# SPDX-FileCopyrightText: Copyright (c) 2021-2026 NVIDIA CORPORATION & AFFILIATES. All rights reserved. +# SPDX-License-Identifier: LicenseRef-NVIDIA-SOFTWARE-LICENSE + +cimport cuda.bindings.driver as driver +cimport cuda.bindings.cydriver as cydriver +cimport cuda.bindings.cyruntime as cyruntime +from libcpp.vector cimport vector +from cpython.buffer cimport PyBuffer_Release, Py_buffer + +cdef class _HelperKernelParams: + cdef Py_buffer _pybuffer + cdef bint _pyobj_acquired + cdef void** _ckernelParams + cdef char* _ckernelParamsData + cdef int _length + cdef bint _malloc_list_created + +cdef struct _HelperInputVoidPtrStruct: + Py_buffer _pybuffer + +cdef class _HelperInputVoidPtr: + cdef _HelperInputVoidPtrStruct _helper + cdef void* _cptr + +cdef void * _helper_input_void_ptr(ptr, _HelperInputVoidPtrStruct *buffer) + +cdef inline void * _helper_input_void_ptr_free(_HelperInputVoidPtrStruct *helper): + if helper[0]._pybuffer.buf != NULL: + PyBuffer_Release(&helper[0]._pybuffer) + +cdef class _HelperCUmemPool_attribute: + cdef void* _cptr + cdef cydriver.CUmemPool_attribute_enum _attr + cdef bint _is_getter + + # Return values + cdef int _int_val + cdef driver.cuuint64_t _cuuint64_t_val + +cdef class _HelperCUmem_range_attribute: + cdef void* _cptr + cdef cydriver.CUmem_range_attribute_enum _attr + cdef size_t _data_size + + # Return values + cdef int _int_val # 32 bit integer + cdef int* _int_val_list # 32 bit integer array + +cdef class _HelperCUpointer_attribute: + cdef void* _cptr + cdef cydriver.CUpointer_attribute_enum _attr + cdef bint _is_getter + + # Return values + cdef driver.CUcontext _ctx + cdef unsigned int _uint + cdef int _int + cdef driver.CUdeviceptr _devptr + cdef void** _void + cdef driver.CUDA_POINTER_ATTRIBUTE_P2P_TOKENS _token + cdef bint _bool + cdef unsigned long long _ull + cdef size_t _size + cdef driver.CUmemoryPool _mempool + +cdef class _HelperCUgraphMem_attribute: + cdef void* _cptr + cdef cydriver.CUgraphMem_attribute_enum _attr + cdef bint _is_getter + + # Return values + cdef driver.cuuint64_t _cuuint64_t_val + +cdef class _HelperCUjit_option: + cdef void* _cptr + cdef cydriver.CUjit_option_enum _attr + + # Return values + cdef unsigned int _uint + cdef float _float + cdef char* _charstar + cdef cydriver.CUjit_target_enum _target + cdef cydriver.CUjit_fallback_enum _fallback + cdef int _int + cdef cydriver.CUjit_cacheMode_enum _cacheMode + cdef vector[char*] _charstarstar # list of names + cdef _InputVoidPtrPtrHelper _voidstarstar # list of addresses + +cdef class _HelperCudaJitOption: + cdef void* _cptr + cdef cyruntime.cudaJitOption _attr + + # Return values + cdef unsigned int _uint + cdef float _float + cdef char* _charstar + cdef cyruntime.cudaJit_Fallback _fallback + cdef int _int + cdef cyruntime.cudaJit_CacheMode _cacheMode + +cdef class _HelperCUlibraryOption: + cdef void* _cptr + cdef cydriver.CUlibraryOption_enum _attr + + # Return values + cdef unsigned int _uint + +cdef class _HelperCudaLibraryOption: + cdef void* _cptr + cdef cyruntime.cudaLibraryOption _attr + + # Return values + cdef unsigned int _uint + +cdef class _HelperCUmemAllocationHandleType: + cdef void* _cptr + cdef cydriver.CUmemAllocationHandleType_enum _type + + # Return values + cdef int _int + cdef void* _handle + cdef unsigned int _d3dkmt_handle + cdef driver.CUmemFabricHandle _mem_fabric_handle + +cdef class _HelperCUlogicalEndpointIpcHandleType: + cdef void* _cptr + cdef cydriver.CUlogicalEndpointIpcHandleType_enum _type + + # Return values + cdef int _int + cdef driver.CUlogicalEndpointFabricHandle _fabric_handle + +cdef class _InputVoidPtrPtrHelper: + cdef object _references + cdef void** _cptr + +cdef class _HelperCUcoredumpSettings: + cdef void* _cptr + cdef cydriver.CUcoredumpSettings_enum _attrib + cdef bint _is_getter + cdef size_t _size + + # Return values + cdef bint _bool + cdef char* _charstar diff --git a/venv/lib/python3.11/site-packages/cuda/bindings/_lib/utils.pxi b/venv/lib/python3.11/site-packages/cuda/bindings/_lib/utils.pxi new file mode 100644 index 0000000000000000000000000000000000000000..18453c8fae7bbf6def0d22fff5f5cd2e29d76240 --- /dev/null +++ b/venv/lib/python3.11/site-packages/cuda/bindings/_lib/utils.pxi @@ -0,0 +1,640 @@ +# SPDX-FileCopyrightText: Copyright (c) 2021-2026 NVIDIA CORPORATION & AFFILIATES. All rights reserved. +# SPDX-License-Identifier: LicenseRef-NVIDIA-SOFTWARE-LICENSE + +from cpython.buffer cimport PyObject_CheckBuffer, PyObject_GetBuffer, PyBuffer_Release, PyBUF_SIMPLE, PyBUF_ANY_CONTIGUOUS +from libc.stdlib cimport calloc, free +from libc.stdint cimport int32_t, uint32_t, int64_t, uint64_t +from libc.stddef cimport wchar_t +from libc.string cimport memcpy +from cuda.bindings._internal._fast_enum import FastEnum as _FastEnum +import ctypes as _ctypes +cimport cuda.bindings.cydriver as cydriver +cimport cuda.bindings._lib.param_packer as param_packer + +cdef void* _callocWrapper(length, size): + cdef void* out = calloc(length, size) + if out is NULL: + raise MemoryError('Failed to allocated length x size memory: {}x{}'.format(length, size)) + return out + +cdef class _HelperKernelParams: + supported_types = { # excluding void_p and None, which are handled specially + _ctypes.c_bool, + _ctypes.c_char, + _ctypes.c_wchar, + _ctypes.c_byte, + _ctypes.c_ubyte, + _ctypes.c_short, + _ctypes.c_ushort, + _ctypes.c_int, + _ctypes.c_uint, + _ctypes.c_long, + _ctypes.c_ulong, + _ctypes.c_longlong, + _ctypes.c_ulonglong, + _ctypes.c_size_t, + _ctypes.c_float, + _ctypes.c_double + } + + max_param_size = max(_ctypes.sizeof(max(_HelperKernelParams.supported_types, key=lambda t:_ctypes.sizeof(t))), sizeof(void_ptr)) + + def __cinit__(self, kernelParams): + self._pyobj_acquired = False + self._malloc_list_created = False + if kernelParams is None: + self._ckernelParams = NULL + elif isinstance(kernelParams, (int)): + # Easy run, user gave us an already configured void** address + self._ckernelParams = kernelParams + elif PyObject_CheckBuffer(kernelParams): + # Easy run, get address from Python Buffer Protocol + err_buffer = PyObject_GetBuffer(kernelParams, &self._pybuffer, PyBUF_SIMPLE | PyBUF_ANY_CONTIGUOUS) + if err_buffer == -1: + raise RuntimeError("Argument 'kernelParams' failed to retrieve buffer through Buffer Protocol") + self._pyobj_acquired = True + self._ckernelParams = self._pybuffer.buf + elif isinstance(kernelParams, (tuple)) and len(kernelParams) == 2 and isinstance(kernelParams[0], (tuple)) and isinstance(kernelParams[1], (tuple)): + # Hard run, construct and fill out contigues memory using provided kernel values and types based + if len(kernelParams[0]) != len(kernelParams[1]): + raise TypeError("Argument 'kernelParams' has tuples with different length") + if len(kernelParams[0]) != 0: + self._length = len(kernelParams[0]) + self._ckernelParams = _callocWrapper(len(kernelParams[0]), sizeof(void*)) + self._ckernelParamsData = _callocWrapper(len(kernelParams[0]), _HelperKernelParams.max_param_size) + self._malloc_list_created = True + + idx = 0 + data_idx = 0 + for value, ctype in zip(kernelParams[0], kernelParams[1]): + if ctype is None: + # special cases for None + if callable(getattr(value, 'getPtr', None)): + self._ckernelParams[idx] = value.getPtr() + elif isinstance(value, (_ctypes.Structure)): + self._ckernelParams[idx] = _ctypes.addressof(value) + elif isinstance(value, (_FastEnum)): + self._ckernelParams[idx] = &(self._ckernelParamsData[data_idx]) + (self._ckernelParams[idx])[0] = value.value + data_idx += sizeof(int) + else: + raise TypeError("Provided argument is of type {} but expected Type {}, {} or CUDA Binding structure with getPtr() attribute".format(type(value), type(_ctypes.Structure), type(_ctypes.c_void_p))) + elif ctype in _HelperKernelParams.supported_types: + self._ckernelParams[idx] = &(self._ckernelParamsData[data_idx]) + + # handle case where a float is passed as a double + if ctype == _ctypes.c_double and isinstance(value, _ctypes.c_float): + value = ctype(value.value) + if not isinstance(value, ctype): # make it a ctype + size = param_packer.feed(self._ckernelParams[idx], value, ctype) + if size == 0: # feed failed + value = ctype(value) + size = _ctypes.sizeof(ctype) + addr = (_ctypes.addressof(value)) + memcpy(self._ckernelParams[idx], addr, size) + else: + size = _ctypes.sizeof(ctype) + addr = (_ctypes.addressof(value)) + memcpy(self._ckernelParams[idx], addr, size) + data_idx += size + elif ctype == _ctypes.c_void_p: + # special cases for void_p + if isinstance(value, (int, _ctypes.c_void_p)): + self._ckernelParams[idx] = &(self._ckernelParamsData[data_idx]) + (self._ckernelParams[idx])[0] = value.value if isinstance(value, (_ctypes.c_void_p)) else value + data_idx += sizeof(void_ptr) + elif callable(getattr(value, 'getPtr', None)): + self._ckernelParams[idx] = &(self._ckernelParamsData[data_idx]) + (self._ckernelParams[idx])[0] = value.getPtr() + data_idx += sizeof(void_ptr) + else: + raise TypeError("Provided argument is of type {} but expected Type {}, {} or CUDA Binding structure with getPtr() attribute".format(type(value), type(int), type(_ctypes.c_void_p))) + else: + raise TypeError("Unsupported type: " + str(type(ctype))) + idx += 1 + else: + raise TypeError("Argument 'kernelParams' is not a valid type: tuple[tuple[Any, ...], tuple[Any, ...]] or PyObject implimenting Buffer Protocol or Int") + + def __dealloc__(self): + if self._pyobj_acquired is True: + PyBuffer_Release(&self._pybuffer) + if self._malloc_list_created is True: + free(self._ckernelParams) + free(self._ckernelParamsData) + + @property + def ckernelParams(self): + return self._ckernelParams + +cdef class _HelperInputVoidPtr: + def __cinit__(self, ptr): + self._cptr = _helper_input_void_ptr(ptr, &self._helper) + + def __dealloc__(self): + _helper_input_void_ptr_free(&self._helper) + + @property + def cptr(self): + return self._cptr + + +cdef void * _helper_input_void_ptr(ptr, _HelperInputVoidPtrStruct *helper): + helper[0]._pybuffer.buf = NULL + try: + return ptr + except: + if ptr is None: + return NULL + elif PyObject_CheckBuffer(ptr): + # Easy run, get address from Python Buffer Protocol + err_buffer = PyObject_GetBuffer(ptr, &helper[0]._pybuffer, PyBUF_SIMPLE | PyBUF_ANY_CONTIGUOUS) + if err_buffer == -1: + raise RuntimeError("Failed to retrieve buffer through Buffer Protocol") + return (helper[0]._pybuffer.buf) + else: + raise TypeError("Provided argument is of type {} but expected Type {}, {} or object with Buffer Protocol".format(type(ptr), type(None), type(int))) + + +cdef class _HelperCUmemPool_attribute: + def __cinit__(self, attr, init_value, is_getter=False): + self._is_getter = is_getter + self._attr = attr.value + if self._attr in (cydriver.CUmemPool_attribute_enum.CU_MEMPOOL_ATTR_REUSE_FOLLOW_EVENT_DEPENDENCIES, + cydriver.CUmemPool_attribute_enum.CU_MEMPOOL_ATTR_REUSE_ALLOW_OPPORTUNISTIC, + cydriver.CUmemPool_attribute_enum.CU_MEMPOOL_ATTR_REUSE_ALLOW_INTERNAL_DEPENDENCIES,): + self._int_val = init_value + self._cptr = &self._int_val + elif self._attr in (cydriver.CUmemPool_attribute_enum.CU_MEMPOOL_ATTR_RELEASE_THRESHOLD, + cydriver.CUmemPool_attribute_enum.CU_MEMPOOL_ATTR_RESERVED_MEM_CURRENT, + cydriver.CUmemPool_attribute_enum.CU_MEMPOOL_ATTR_RESERVED_MEM_HIGH, + cydriver.CUmemPool_attribute_enum.CU_MEMPOOL_ATTR_USED_MEM_CURRENT, + cydriver.CUmemPool_attribute_enum.CU_MEMPOOL_ATTR_USED_MEM_HIGH,): + if self._is_getter: + self._cuuint64_t_val = _driver["cuuint64_t"]() + self._cptr = self._cuuint64_t_val.getPtr() + else: + self._cptr = init_value.getPtr() + else: + raise TypeError('Unsupported attribute: {}'.format(attr.name)) + + def __dealloc__(self): + pass + + @property + def cptr(self): + return self._cptr + + def pyObj(self): + assert(self._is_getter == True) + if self._attr in (cydriver.CUmemPool_attribute_enum.CU_MEMPOOL_ATTR_REUSE_FOLLOW_EVENT_DEPENDENCIES, + cydriver.CUmemPool_attribute_enum.CU_MEMPOOL_ATTR_REUSE_ALLOW_OPPORTUNISTIC, + cydriver.CUmemPool_attribute_enum.CU_MEMPOOL_ATTR_REUSE_ALLOW_INTERNAL_DEPENDENCIES,): + return self._int_val + elif self._attr in (cydriver.CUmemPool_attribute_enum.CU_MEMPOOL_ATTR_RELEASE_THRESHOLD, + cydriver.CUmemPool_attribute_enum.CU_MEMPOOL_ATTR_RESERVED_MEM_CURRENT, + cydriver.CUmemPool_attribute_enum.CU_MEMPOOL_ATTR_RESERVED_MEM_HIGH, + cydriver.CUmemPool_attribute_enum.CU_MEMPOOL_ATTR_USED_MEM_CURRENT, + cydriver.CUmemPool_attribute_enum.CU_MEMPOOL_ATTR_USED_MEM_HIGH,): + return self._cuuint64_t_val + else: + raise TypeError('Unsupported attribute value: {}'.format(self._attr)) + +cdef class _HelperCUmem_range_attribute: + def __cinit__(self, attr, data_size): + self._data_size = data_size + self._attr = attr.value + if self._attr in (cydriver.CUmem_range_attribute_enum.CU_MEM_RANGE_ATTRIBUTE_READ_MOSTLY, + cydriver.CUmem_range_attribute_enum.CU_MEM_RANGE_ATTRIBUTE_PREFERRED_LOCATION, + cydriver.CUmem_range_attribute_enum.CU_MEM_RANGE_ATTRIBUTE_LAST_PREFETCH_LOCATION,): + self._cptr = &self._int_val + elif self._attr in (cydriver.CUmem_range_attribute_enum.CU_MEM_RANGE_ATTRIBUTE_ACCESSED_BY,): + self._cptr = _callocWrapper(1, self._data_size) + self._int_val_list = self._cptr + else: + raise TypeError('Unsupported attribute: {}'.format(attr.name)) + + def __dealloc__(self): + if self._attr in (cydriver.CUmem_range_attribute_enum.CU_MEM_RANGE_ATTRIBUTE_ACCESSED_BY,): + free(self._cptr) + + @property + def cptr(self): + return self._cptr + + def pyObj(self): + if self._attr in (cydriver.CUmem_range_attribute_enum.CU_MEM_RANGE_ATTRIBUTE_READ_MOSTLY, + cydriver.CUmem_range_attribute_enum.CU_MEM_RANGE_ATTRIBUTE_PREFERRED_LOCATION, + cydriver.CUmem_range_attribute_enum.CU_MEM_RANGE_ATTRIBUTE_LAST_PREFETCH_LOCATION,): + return self._int_val + elif self._attr in (cydriver.CUmem_range_attribute_enum.CU_MEM_RANGE_ATTRIBUTE_ACCESSED_BY,): + return [self._int_val_list[idx] for idx in range(int(self._data_size/4))] + else: + raise TypeError('Unsupported attribute value: {}'.format(self._attr)) + +cdef class _HelperCUpointer_attribute: + def __cinit__(self, attr, init_value, is_getter=False): + self._is_getter = is_getter + self._attr = attr.value + if self._attr in (cydriver.CUpointer_attribute_enum.CU_POINTER_ATTRIBUTE_CONTEXT,): + if self._is_getter: + self._ctx = _driver["CUcontext"]() + self._cptr = self._ctx.getPtr() + else: + self._cptr = init_value.getPtr() + elif self._attr in (cydriver.CUpointer_attribute_enum.CU_POINTER_ATTRIBUTE_MEMORY_TYPE, + cydriver.CUpointer_attribute_enum.CU_POINTER_ATTRIBUTE_ALLOWED_HANDLE_TYPES, + cydriver.CUpointer_attribute_enum.CU_POINTER_ATTRIBUTE_IS_GPU_DIRECT_RDMA_CAPABLE, + cydriver.CUpointer_attribute_enum.CU_POINTER_ATTRIBUTE_ACCESS_FLAGS,): + self._uint = init_value + self._cptr = &self._uint + elif self._attr in (cydriver.CUpointer_attribute_enum.CU_POINTER_ATTRIBUTE_DEVICE_ORDINAL,): + self._int = init_value + self._cptr = &self._int + elif self._attr in (cydriver.CUpointer_attribute_enum.CU_POINTER_ATTRIBUTE_DEVICE_POINTER, + cydriver.CUpointer_attribute_enum.CU_POINTER_ATTRIBUTE_RANGE_START_ADDR,): + if self._is_getter: + self._devptr = _driver["CUdeviceptr"]() + self._cptr = self._devptr.getPtr() + else: + self._cptr = init_value.getPtr() + elif self._attr in (cydriver.CUpointer_attribute_enum.CU_POINTER_ATTRIBUTE_HOST_POINTER,): + self._void = init_value + self._cptr = &self._void + elif self._attr in (cydriver.CUpointer_attribute_enum.CU_POINTER_ATTRIBUTE_P2P_TOKENS,): + if self._is_getter: + self._token = _driver["CUDA_POINTER_ATTRIBUTE_P2P_TOKENS"]() + self._cptr = self._token.getPtr() + else: + self._cptr = init_value.getPtr() + elif self._attr in (cydriver.CUpointer_attribute_enum.CU_POINTER_ATTRIBUTE_SYNC_MEMOPS, + cydriver.CUpointer_attribute_enum.CU_POINTER_ATTRIBUTE_IS_MANAGED, + cydriver.CUpointer_attribute_enum.CU_POINTER_ATTRIBUTE_IS_LEGACY_CUDA_IPC_CAPABLE, + cydriver.CUpointer_attribute_enum.CU_POINTER_ATTRIBUTE_MAPPED,): + self._bool = init_value + self._cptr = &self._bool + elif self._attr in (cydriver.CUpointer_attribute_enum.CU_POINTER_ATTRIBUTE_BUFFER_ID,): + self._ull = init_value + self._cptr = &self._ull + elif self._attr in (cydriver.CUpointer_attribute_enum.CU_POINTER_ATTRIBUTE_RANGE_SIZE,): + self._size = init_value + self._cptr = &self._size + elif self._attr in (cydriver.CUpointer_attribute_enum.CU_POINTER_ATTRIBUTE_MEMPOOL_HANDLE,): + if self._is_getter: + self._mempool = _driver["CUmemoryPool"]() + self._cptr = self._mempool.getPtr() + else: + self._cptr = init_value.getPtr() + else: + raise TypeError('Unsupported attribute: {}'.format(attr.name)) + + def __dealloc__(self): + pass + + @property + def cptr(self): + return self._cptr + + def pyObj(self): + assert(self._is_getter == True) + if self._attr in (cydriver.CUpointer_attribute_enum.CU_POINTER_ATTRIBUTE_CONTEXT,): + return self._ctx + elif self._attr in (cydriver.CUpointer_attribute_enum.CU_POINTER_ATTRIBUTE_MEMORY_TYPE, + cydriver.CUpointer_attribute_enum.CU_POINTER_ATTRIBUTE_DEVICE_ORDINAL, + cydriver.CUpointer_attribute_enum.CU_POINTER_ATTRIBUTE_ALLOWED_HANDLE_TYPES, + cydriver.CUpointer_attribute_enum.CU_POINTER_ATTRIBUTE_IS_GPU_DIRECT_RDMA_CAPABLE, + cydriver.CUpointer_attribute_enum.CU_POINTER_ATTRIBUTE_ACCESS_FLAGS,): + return self._uint + elif self._attr in (cydriver.CUpointer_attribute_enum.CU_POINTER_ATTRIBUTE_DEVICE_POINTER, + cydriver.CUpointer_attribute_enum.CU_POINTER_ATTRIBUTE_RANGE_START_ADDR,): + return self._devptr + elif self._attr in (cydriver.CUpointer_attribute_enum.CU_POINTER_ATTRIBUTE_HOST_POINTER,): + return self._void + elif self._attr in (cydriver.CUpointer_attribute_enum.CU_POINTER_ATTRIBUTE_P2P_TOKENS,): + return self._token + elif self._attr in (cydriver.CUpointer_attribute_enum.CU_POINTER_ATTRIBUTE_SYNC_MEMOPS, + cydriver.CUpointer_attribute_enum.CU_POINTER_ATTRIBUTE_IS_MANAGED, + cydriver.CUpointer_attribute_enum.CU_POINTER_ATTRIBUTE_IS_LEGACY_CUDA_IPC_CAPABLE, + cydriver.CUpointer_attribute_enum.CU_POINTER_ATTRIBUTE_MAPPED,): + return self._bool + elif self._attr in (cydriver.CUpointer_attribute_enum.CU_POINTER_ATTRIBUTE_BUFFER_ID,): + return self._ull + elif self._attr in (cydriver.CUpointer_attribute_enum.CU_POINTER_ATTRIBUTE_RANGE_SIZE,): + return self._size + elif self._attr in (cydriver.CUpointer_attribute_enum.CU_POINTER_ATTRIBUTE_MEMPOOL_HANDLE,): + return self._mempool + else: + raise TypeError('Unsupported attribute value: {}'.format(self._attr)) + +cdef class _HelperCUgraphMem_attribute: + def __cinit__(self, attr, init_value, is_getter=False): + self._is_getter = is_getter + self._attr = attr.value + if self._attr in (cydriver.CUgraphMem_attribute_enum.CU_GRAPH_MEM_ATTR_USED_MEM_CURRENT, + cydriver.CUgraphMem_attribute_enum.CU_GRAPH_MEM_ATTR_USED_MEM_HIGH, + cydriver.CUgraphMem_attribute_enum.CU_GRAPH_MEM_ATTR_RESERVED_MEM_CURRENT, + cydriver.CUgraphMem_attribute_enum.CU_GRAPH_MEM_ATTR_RESERVED_MEM_HIGH,): + if self._is_getter: + self._cuuint64_t_val = _driver["cuuint64_t"]() + self._cptr = self._cuuint64_t_val.getPtr() + else: + self._cptr = init_value.getPtr() + else: + raise TypeError('Unsupported attribute: {}'.format(attr.name)) + + def __dealloc__(self): + pass + + @property + def cptr(self): + return self._cptr + + def pyObj(self): + assert(self._is_getter == True) + if self._attr in (cydriver.CUgraphMem_attribute_enum.CU_GRAPH_MEM_ATTR_USED_MEM_CURRENT, + cydriver.CUgraphMem_attribute_enum.CU_GRAPH_MEM_ATTR_USED_MEM_HIGH, + cydriver.CUgraphMem_attribute_enum.CU_GRAPH_MEM_ATTR_RESERVED_MEM_CURRENT, + cydriver.CUgraphMem_attribute_enum.CU_GRAPH_MEM_ATTR_RESERVED_MEM_HIGH,): + return self._cuuint64_t_val + else: + raise TypeError('Unsupported attribute value: {}'.format(self._attr)) + +cdef class _HelperCUjit_option: + def __cinit__(self, attr, init_value): + self._attr = attr.value + if self._attr in (cydriver.CUjit_option_enum.CU_JIT_MAX_REGISTERS, + cydriver.CUjit_option_enum.CU_JIT_THREADS_PER_BLOCK, + cydriver.CUjit_option_enum.CU_JIT_INFO_LOG_BUFFER_SIZE_BYTES, + cydriver.CUjit_option_enum.CU_JIT_ERROR_LOG_BUFFER_SIZE_BYTES, + cydriver.CUjit_option_enum.CU_JIT_OPTIMIZATION_LEVEL, + cydriver.CUjit_option_enum.CU_JIT_GLOBAL_SYMBOL_COUNT, + cydriver.CUjit_option_enum.CU_JIT_TARGET_FROM_CUCONTEXT, + cydriver.CUjit_option_enum.CU_JIT_REFERENCED_KERNEL_COUNT, + cydriver.CUjit_option_enum.CU_JIT_REFERENCED_VARIABLE_COUNT, + cydriver.CUjit_option_enum.CU_JIT_MIN_CTA_PER_SM, + cydriver.CUjit_option_enum.CU_JIT_SPLIT_COMPILE,): + self._uint = init_value + self._cptr = self._uint + elif self._attr in (cydriver.CUjit_option_enum.CU_JIT_WALL_TIME,): + self._float = init_value + self._cptr = self._float + elif self._attr in (cydriver.CUjit_option_enum.CU_JIT_INFO_LOG_BUFFER, + cydriver.CUjit_option_enum.CU_JIT_ERROR_LOG_BUFFER): + self._charstar = init_value + self._cptr = self._charstar + elif self._attr in (cydriver.CUjit_option_enum.CU_JIT_TARGET,): + self._target = init_value.value + self._cptr = self._target + elif self._attr in (cydriver.CUjit_option_enum.CU_JIT_FALLBACK_STRATEGY,): + self._fallback = init_value.value + self._cptr = self._fallback + elif self._attr in (cydriver.CUjit_option_enum.CU_JIT_GENERATE_DEBUG_INFO, + cydriver.CUjit_option_enum.CU_JIT_LOG_VERBOSE, + cydriver.CUjit_option_enum.CU_JIT_GENERATE_LINE_INFO, + cydriver.CUjit_option_enum.CU_JIT_LTO, + cydriver.CUjit_option_enum.CU_JIT_FTZ, + cydriver.CUjit_option_enum.CU_JIT_PREC_DIV, + cydriver.CUjit_option_enum.CU_JIT_PREC_SQRT, + cydriver.CUjit_option_enum.CU_JIT_FMA, + cydriver.CUjit_option_enum.CU_JIT_OPTIMIZE_UNUSED_DEVICE_VARIABLES,): + self._int = init_value + self._cptr = self._int + elif self._attr in (cydriver.CUjit_option_enum.CU_JIT_CACHE_MODE,): + self._cacheMode = init_value.value + self._cptr = self._cacheMode + elif self._attr in (cydriver.CUjit_option_enum.CU_JIT_GLOBAL_SYMBOL_NAMES, + cydriver.CUjit_option_enum.CU_JIT_REFERENCED_KERNEL_NAMES, + cydriver.CUjit_option_enum.CU_JIT_REFERENCED_VARIABLE_NAMES,): + self._charstarstar = init_value + self._cptr = &self._charstarstar[0] + elif self._attr in (cydriver.CUjit_option_enum.CU_JIT_GLOBAL_SYMBOL_ADDRESSES,): + pylist = [_HelperInputVoidPtr(val) for val in init_value] + self._voidstarstar = _InputVoidPtrPtrHelper(pylist) + self._cptr = self._voidstarstar.cptr + else: + raise TypeError('Unsupported attribute: {}'.format(attr.name)) + + def __dealloc__(self): + pass + + @property + def cptr(self): + return self._cptr + +cdef class _HelperCudaJitOption: + def __cinit__(self, attr, init_value): + self._attr = attr.value + if self._attr in (cyruntime.cudaJitOption.cudaJitMaxRegisters, + cyruntime.cudaJitOption.cudaJitThreadsPerBlock, + cyruntime.cudaJitOption.cudaJitInfoLogBufferSizeBytes, + cyruntime.cudaJitOption.cudaJitErrorLogBufferSizeBytes, + cyruntime.cudaJitOption.cudaJitOptimizationLevel, + cyruntime.cudaJitOption.cudaJitMinCtaPerSm,): + self._uint = init_value + self._cptr = self._uint + elif self._attr in (cyruntime.cudaJitOption.cudaJitWallTime,): + self._float = init_value + self._cptr = self._float + elif self._attr in (cyruntime.cudaJitOption.cudaJitInfoLogBuffer, + cyruntime.cudaJitOption.cudaJitErrorLogBuffer): + self._charstar = init_value + self._cptr = self._charstar + elif self._attr in (cyruntime.cudaJitOption.cudaJitFallbackStrategy,): + self._fallback = init_value.value + self._cptr = self._fallback + elif self._attr in (cyruntime.cudaJitOption.cudaJitGenerateDebugInfo, + cyruntime.cudaJitOption.cudaJitLogVerbose, + cyruntime.cudaJitOption.cudaJitGenerateLineInfo, + cyruntime.cudaJitOption.cudaJitPositionIndependentCode, + cyruntime.cudaJitOption.cudaJitMaxThreadsPerBlock, + cyruntime.cudaJitOption.cudaJitOverrideDirectiveValues,): + self._int = init_value + self._cptr = self._int + elif self._attr in (cyruntime.cudaJitOption.cudaJitCacheMode,): + self._cacheMode = init_value.value + self._cptr = self._cacheMode + else: + raise TypeError('Unsupported attribute: {}'.format(attr.name)) + + def __dealloc__(self): + pass + + @property + def cptr(self): + return self._cptr + +cdef class _HelperCUlibraryOption: + def __cinit__(self, attr, init_value): + self._attr = attr.value + if False: + pass + elif self._attr in (cydriver.CUlibraryOption_enum.CU_LIBRARY_HOST_UNIVERSAL_FUNCTION_AND_DATA_TABLE,): + self._cptr = init_value.getPtr() + elif self._attr in (cydriver.CUlibraryOption_enum.CU_LIBRARY_BINARY_IS_PRESERVED,): + self._uint = init_value + self._cptr = self._uint + else: + raise TypeError('Unsupported attribute: {}'.format(attr.name)) + + def __dealloc__(self): + pass + + @property + def cptr(self): + return self._cptr + +cdef class _HelperCudaLibraryOption: + def __cinit__(self, attr, init_value): + self._attr = attr.value + if False: + pass + elif self._attr in (cyruntime.cudaLibraryOption.cudaLibraryHostUniversalFunctionAndDataTable,): + self._cptr = init_value.getPtr() + elif self._attr in (cyruntime.cudaLibraryOption.cudaLibraryBinaryIsPreserved,): + self._uint = init_value + self._cptr = self._uint + else: + raise TypeError('Unsupported attribute: {}'.format(attr.name)) + + def __dealloc__(self): + pass + + @property + def cptr(self): + return self._cptr + +cdef class _HelperCUmemAllocationHandleType: + def __cinit__(self, attr): + self._type = attr.value + if False: + pass + elif self._type in (cydriver.CUmemAllocationHandleType_enum.CU_MEM_HANDLE_TYPE_NONE,): + self._cptr = &self._int + elif self._type in (cydriver.CUmemAllocationHandleType_enum.CU_MEM_HANDLE_TYPE_POSIX_FILE_DESCRIPTOR,): + self._cptr = &self._int + elif self._type in (cydriver.CUmemAllocationHandleType_enum.CU_MEM_HANDLE_TYPE_WIN32,): + self._cptr = &self._handle + elif self._type in (cydriver.CUmemAllocationHandleType_enum.CU_MEM_HANDLE_TYPE_WIN32_KMT,): + self._cptr = &self._d3dkmt_handle + elif self._type in (cydriver.CUmemAllocationHandleType_enum.CU_MEM_HANDLE_TYPE_FABRIC,): + self._mem_fabric_handle = _driver["CUmemFabricHandle"]() + self._cptr = self._mem_fabric_handle.getPtr() + else: + raise TypeError('Unsupported attribute: {}'.format(attr.name)) + + def __dealloc__(self): + pass + + @property + def cptr(self): + return self._cptr + + def pyObj(self): + if False: + pass + elif self._type in (cydriver.CUmemAllocationHandleType_enum.CU_MEM_HANDLE_TYPE_NONE,): + return self._int + elif self._type in (cydriver.CUmemAllocationHandleType_enum.CU_MEM_HANDLE_TYPE_POSIX_FILE_DESCRIPTOR,): + return self._int + elif self._type in (cydriver.CUmemAllocationHandleType_enum.CU_MEM_HANDLE_TYPE_WIN32,): + return self._handle + elif self._type in (cydriver.CUmemAllocationHandleType_enum.CU_MEM_HANDLE_TYPE_WIN32_KMT,): + return self._d3dkmt_handle + elif self._type in (cydriver.CUmemAllocationHandleType_enum.CU_MEM_HANDLE_TYPE_FABRIC,): + return self._mem_fabric_handle + else: + raise TypeError('Unsupported attribute: {}'.format(self._type)) + +cdef class _HelperCUlogicalEndpointIpcHandleType: + def __cinit__(self, attr): + self._type = attr.value + if False: + pass + elif self._type in (cydriver.CUlogicalEndpointIpcHandleType_enum.CU_LOGICAL_ENDPOINT_IPC_HANDLE_TYPE_NONE,): + self._cptr = &self._int + elif self._type in (cydriver.CUlogicalEndpointIpcHandleType_enum.CU_LOGICAL_ENDPOINT_IPC_HANDLE_TYPE_FABRIC,): + self._fabric_handle = _driver["CUlogicalEndpointFabricHandle"]() + self._cptr = self._fabric_handle.getPtr() + else: + raise TypeError('Unsupported attribute: {}'.format(attr.name)) + + def __dealloc__(self): + pass + + @property + def cptr(self): + return self._cptr + + def pyObj(self): + if False: + pass + elif self._type in (cydriver.CUlogicalEndpointIpcHandleType_enum.CU_LOGICAL_ENDPOINT_IPC_HANDLE_TYPE_NONE,): + return self._int + elif self._type in (cydriver.CUlogicalEndpointIpcHandleType_enum.CU_LOGICAL_ENDPOINT_IPC_HANDLE_TYPE_FABRIC,): + return self._fabric_handle + else: + raise TypeError('Unsupported attribute: {}'.format(self._type)) + +cdef class _InputVoidPtrPtrHelper: + def __cinit__(self, lst): + # Hold onto references to the original buffers so they + # won't be free'd behind our back + self._references = lst + self._cptr = _callocWrapper(len(lst), sizeof(void*)) + for idx in range(len(lst)): + self._cptr[idx] = lst[idx].cptr + + def __dealloc__(self): + free(self._cptr) + + @property + def cptr(self): + return self._cptr + +cdef class _HelperCUcoredumpSettings: + def __cinit__(self, attr, init_value, is_getter=False): + self._is_getter = is_getter + self._attrib = attr.value + if self._attrib in (cydriver.CUcoredumpSettings_enum.CU_COREDUMP_FILE, + cydriver.CUcoredumpSettings_enum.CU_COREDUMP_PIPE,): + if self._is_getter: + self._charstar = _callocWrapper(1024, 1) + self._cptr = self._charstar + self._size = 1024 + else: + self._charstar = init_value + self._cptr = self._charstar + self._size = len(init_value) + elif self._attrib in (cydriver.CUcoredumpSettings_enum.CU_COREDUMP_ENABLE_ON_EXCEPTION, + cydriver.CUcoredumpSettings_enum.CU_COREDUMP_TRIGGER_HOST, + cydriver.CUcoredumpSettings_enum.CU_COREDUMP_LIGHTWEIGHT, + cydriver.CUcoredumpSettings_enum.CU_COREDUMP_ENABLE_USER_TRIGGER,): + if self._is_getter == False: + self._bool = init_value + + self._cptr = &self._bool + self._size = 1 + else: + raise TypeError('Unsupported attribute: {}'.format(attr.name)) + + def __dealloc__(self): + pass + + @property + def cptr(self): + return self._cptr + + def size(self): + return self._size + + def pyObj(self): + assert(self._is_getter == True) + if self._attrib in (cydriver.CUcoredumpSettings_enum.CU_COREDUMP_FILE, + cydriver.CUcoredumpSettings_enum.CU_COREDUMP_PIPE,): + return self._charstar + elif self._attrib in (cydriver.CUcoredumpSettings_enum.CU_COREDUMP_ENABLE_ON_EXCEPTION, + cydriver.CUcoredumpSettings_enum.CU_COREDUMP_TRIGGER_HOST, + cydriver.CUcoredumpSettings_enum.CU_COREDUMP_LIGHTWEIGHT, + cydriver.CUcoredumpSettings_enum.CU_COREDUMP_ENABLE_USER_TRIGGER,): + return self._bool + else: + raise TypeError('Unsupported attribute value: {}'.format(self._attrib)) diff --git a/venv/lib/python3.11/site-packages/cuda/bindings/_lib/windll.pxd b/venv/lib/python3.11/site-packages/cuda/bindings/_lib/windll.pxd new file mode 100644 index 0000000000000000000000000000000000000000..7b190f35959d98d17da3a5c7d1433dc7a8c17cc9 --- /dev/null +++ b/venv/lib/python3.11/site-packages/cuda/bindings/_lib/windll.pxd @@ -0,0 +1,45 @@ +# SPDX-FileCopyrightText: Copyright (c) 2021-2024 NVIDIA CORPORATION & AFFILIATES. All rights reserved. +# SPDX-License-Identifier: LicenseRef-NVIDIA-SOFTWARE-LICENSE + +from libc.stddef cimport wchar_t +from libc.stdint cimport uintptr_t +from cpython cimport PyUnicode_AsWideCharString, PyMem_Free + +cdef extern from "windows.h" nogil: + ctypedef void* HMODULE + ctypedef void* HANDLE + ctypedef void* FARPROC + ctypedef unsigned long DWORD + ctypedef const wchar_t *LPCWSTR + ctypedef const char *LPCSTR + ctypedef int BOOL + + cdef DWORD LOAD_LIBRARY_SEARCH_SYSTEM32 = 0x00000800 + + HMODULE _LoadLibraryExW "LoadLibraryExW"( + LPCWSTR lpLibFileName, + HANDLE hFile, + DWORD dwFlags + ) + + FARPROC _GetProcAddress "GetProcAddress"(HMODULE hModule, LPCSTR lpProcName) + + BOOL _FreeLibrary "FreeLibrary"(HMODULE hLibModule) + +cdef inline uintptr_t LoadLibraryExW(str path, HANDLE hFile, DWORD dwFlags): + cdef uintptr_t result + cdef wchar_t* wpath = PyUnicode_AsWideCharString(path, NULL) + with nogil: + result = _LoadLibraryExW( + wpath, + hFile, + dwFlags + ) + PyMem_Free(wpath) + return result + +cdef inline FARPROC GetProcAddress(uintptr_t hModule, const char* lpProcName) nogil: + return _GetProcAddress(hModule, lpProcName) + +cdef inline BOOL FreeLibrary(uintptr_t hLibModule) nogil: + return _FreeLibrary(hLibModule) diff --git a/venv/lib/python3.11/site-packages/cuda/bindings/_test_helpers/__init__.py b/venv/lib/python3.11/site-packages/cuda/bindings/_test_helpers/__init__.py new file mode 100644 index 0000000000000000000000000000000000000000..c6b171f9cd3721daade7339515b5c0ed8048d278 --- /dev/null +++ b/venv/lib/python3.11/site-packages/cuda/bindings/_test_helpers/__init__.py @@ -0,0 +1,6 @@ +# SPDX-FileCopyrightText: Copyright (c) 2026 NVIDIA CORPORATION & AFFILIATES. All rights reserved. +# SPDX-License-Identifier: LicenseRef-NVIDIA-SOFTWARE-LICENSE + + +# This package contains test helper utilities that may also be useful for other libraries outside of `cuda.bindings`, +# such as `cuda.core`. These utilities are not part of the public API of `cuda.bindings` and may change without notice. diff --git a/venv/lib/python3.11/site-packages/cuda/bindings/_test_helpers/arch_check.py b/venv/lib/python3.11/site-packages/cuda/bindings/_test_helpers/arch_check.py new file mode 100644 index 0000000000000000000000000000000000000000..65f5140b394909e5f9d497808b0048721343cf7e --- /dev/null +++ b/venv/lib/python3.11/site-packages/cuda/bindings/_test_helpers/arch_check.py @@ -0,0 +1,70 @@ +# SPDX-FileCopyrightText: Copyright (c) 2026 NVIDIA CORPORATION & AFFILIATES. All rights reserved. +# SPDX-License-Identifier: LicenseRef-NVIDIA-SOFTWARE-LICENSE + + +from contextlib import contextmanager +from functools import cache + +import pytest + +from cuda.bindings import nvml +from cuda.bindings._internal.utils import FunctionNotFoundError as NvmlSymbolNotFoundError + + +@cache +def hardware_supports_nvml(): + """ + Tries to call the simplest NVML API possible to see if just the basics + works. If not we are probably on one of the platforms where NVML is not + supported at all (e.g. Jetson Orin). + """ + nvml.init_v2() + try: + nvml.system_get_driver_branch() + except (nvml.NotSupportedError, nvml.UnknownError): + return False + else: + return True + finally: + nvml.shutdown() + + +@contextmanager +def unsupported_before(device: int, expected_device_arch: nvml.DeviceArch | str | None): + device_arch = nvml.device_get_architecture(device) + + if isinstance(expected_device_arch, nvml.DeviceArch): + expected_device_arch_int = int(expected_device_arch) + elif expected_device_arch == "FERMI": + expected_device_arch_int = 1 + else: + expected_device_arch_int = 0 + + if expected_device_arch is None or expected_device_arch == "HAS_INFOROM" or device_arch == nvml.DeviceArch.UNKNOWN: + # In this case, we don't /know/ if it will fail, but we are ok if it + # does or does not. + + # TODO: There are APIs that are documented as supported only if the + # device has an InfoROM, but I couldn't find a way to detect that. For + # now, they are just handled as "possibly failing". + + try: + yield + except (nvml.NotSupportedError, nvml.FunctionNotFoundError, NvmlSymbolNotFoundError): + # The API call raised NotSupportedError, NVML status FunctionNotFoundError, + # or NvmlSymbolNotFoundError (symbol absent from the loaded NVML DLL), so we + # skip the test but don't fail it + pytest.skip( + f"Unsupported call for device architecture {nvml.DeviceArch(device_arch).name} " + f"on device '{nvml.device_get_name(device)}'" + ) + # If the API call worked, just continue + elif int(device_arch) < expected_device_arch_int: + # In this case, we /know/ if will fail, and we want to assert that it does. + with pytest.raises(nvml.NotSupportedError): + yield + # The above call was unsupported, so the rest of the test is skipped + pytest.skip(f"Unsupported before {expected_device_arch.name}, got {nvml.device_get_name(device)}") + else: + # In this case, we /know/ it should work, and if it fails, the test should fail. + yield diff --git a/venv/lib/python3.11/site-packages/cuda/bindings/_test_helpers/mempool.py b/venv/lib/python3.11/site-packages/cuda/bindings/_test_helpers/mempool.py new file mode 100644 index 0000000000000000000000000000000000000000..3113113d251250a835609e6e7cd3b8378f7fcfb5 --- /dev/null +++ b/venv/lib/python3.11/site-packages/cuda/bindings/_test_helpers/mempool.py @@ -0,0 +1,57 @@ +# SPDX-FileCopyrightText: Copyright (c) 2026 NVIDIA CORPORATION & AFFILIATES. All rights reserved. +# SPDX-License-Identifier: LicenseRef-NVIDIA-SOFTWARE-LICENSE + +import sys + +import pytest + +from cuda.bindings import driver, runtime + + +# Keep in sync with the fallback in cuda_core/tests/conftest.py. The cuda_core +# copy is intentionally simpler because it only handles cuda_core CUDAError +# exceptions when this helper is absent from older published bindings. +def is_windows_mcdm_device(device=0): + if sys.platform != "win32": + return False + import cuda.bindings.nvml as nvml + + device_id = int(getattr(device, "device_id", device)) + (err,) = driver.cuInit(0) + if err != driver.CUresult.CUDA_SUCCESS: + return False + err, pci_bus_id = driver.cuDeviceGetPCIBusId(13, device_id) + if err != driver.CUresult.CUDA_SUCCESS: + return False + pci_bus_id = pci_bus_id.split(b"\x00", 1)[0].decode("ascii") + nvml.init_v2() + try: + handle = nvml.device_get_handle_by_pci_bus_id_v2(pci_bus_id) + current, _ = nvml.device_get_driver_model_v2(handle) + return current == nvml.DriverModel.DRIVER_MCDM + finally: + nvml.shutdown() + + +def xfail_if_mempool_oom(err_or_exc, api_name=None, device=0): + if api_name is not None and not isinstance(api_name, str): + device = api_name + api_name = None + + is_oom = err_or_exc in ( + driver.CUresult.CUDA_ERROR_OUT_OF_MEMORY, + runtime.cudaError_t.cudaErrorMemoryAllocation, + ) or "CUDA_ERROR_OUT_OF_MEMORY" in str(err_or_exc) + + if not is_oom: + return + try: + is_windows_mcdm = is_windows_mcdm_device(device) + except Exception: + # If MCDM detection fails, leave the primary test failure visible. + return + if not is_windows_mcdm: + return + + api_context = f"{api_name} " if api_name else "" + pytest.xfail(f"{api_context}could not reserve VA for mempool operations on Windows MCDM") diff --git a/venv/lib/python3.11/site-packages/cuda/bindings/_test_helpers/pep723.py b/venv/lib/python3.11/site-packages/cuda/bindings/_test_helpers/pep723.py new file mode 100644 index 0000000000000000000000000000000000000000..e1f6f920b7c64aeae00047345a1c012d5592b85a --- /dev/null +++ b/venv/lib/python3.11/site-packages/cuda/bindings/_test_helpers/pep723.py @@ -0,0 +1,46 @@ +# SPDX-FileCopyrightText: Copyright (c) 2026 NVIDIA CORPORATION & AFFILIATES. All rights reserved. +# SPDX-License-Identifier: LicenseRef-NVIDIA-SOFTWARE-LICENSE + + +import importlib.metadata +import os +import re + +import pytest + + +def has_package_requirements_or_skip(example): + example_name = os.path.basename(example) + + with open(example, encoding="utf-8") as f: + content = f.read() + + # The canonical regex as defined in PEP 723 + pep723 = re.search(r"(?m)^# /// (?P[a-zA-Z0-9-]+)$\s(?P(^#(| .*)$\s)+)^# ///$", content) + if not pep723: + raise ValueError(f"PEP 723 metadata not found in {example_name}") + + metadata = {} + for line in pep723.group("content").splitlines(): + line = line.lstrip("# ").rstrip() + if not line: + continue + key, value = line.split("=", 1) + key = key.strip() + value = value.strip() + metadata[key] = value + + if "dependencies" not in metadata: + raise ValueError(f"PEP 723 dependencies not found in {example_name}") + + missing_dependencies = [] + dependencies = eval(metadata["dependencies"]) # noqa: S307 + for dependency in dependencies: + name = re.match("[a-zA-Z0-9_-]+", dependency) + try: + importlib.metadata.distribution(name.group(0)) + except importlib.metadata.PackageNotFoundError: + missing_dependencies.append(name.string) + + if missing_dependencies: + pytest.skip(f"Skipping {example} due to missing package requirement: {', '.join(missing_dependencies)}") diff --git a/venv/lib/python3.11/site-packages/cuda/bindings/_version.py b/venv/lib/python3.11/site-packages/cuda/bindings/_version.py new file mode 100644 index 0000000000000000000000000000000000000000..bda9d01a7ab069f0e5da4a064b806c10babe9175 --- /dev/null +++ b/venv/lib/python3.11/site-packages/cuda/bindings/_version.py @@ -0,0 +1,24 @@ +# file generated by vcs-versioning +# don't change, don't track in version control +from __future__ import annotations + +__all__ = [ + "__version__", + "__version_tuple__", + "version", + "version_tuple", + "__commit_id__", + "commit_id", +] + +version: str +__version__: str +__version_tuple__: tuple[int | str, ...] +version_tuple: tuple[int | str, ...] +commit_id: str | None +__commit_id__: str | None + +__version__ = version = '13.3.1' +__version_tuple__ = version_tuple = (13, 3, 1) + +__commit_id__ = commit_id = 'g96c7f518d' diff --git a/venv/lib/python3.11/site-packages/cuda/bindings/cudla.cpython-311-x86_64-linux-gnu.so b/venv/lib/python3.11/site-packages/cuda/bindings/cudla.cpython-311-x86_64-linux-gnu.so new file mode 100644 index 0000000000000000000000000000000000000000..7de6733eb272cea480a8aa8f6647134f013e18f0 --- /dev/null +++ b/venv/lib/python3.11/site-packages/cuda/bindings/cudla.cpython-311-x86_64-linux-gnu.so @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:a9e92cd69a3f0e512760f1dd9e5d2879144ddd4d41b0d361037670891f03a695 +size 475592 diff --git a/venv/lib/python3.11/site-packages/cuda/bindings/cudla.pxd b/venv/lib/python3.11/site-packages/cuda/bindings/cudla.pxd new file mode 100644 index 0000000000000000000000000000000000000000..894aacb7c54352f05fa84e6d4f3c073f64e99fb5 --- /dev/null +++ b/venv/lib/python3.11/site-packages/cuda/bindings/cudla.pxd @@ -0,0 +1,52 @@ +# SPDX-FileCopyrightText: Copyright (c) 2024-2026 NVIDIA CORPORATION & AFFILIATES. All rights reserved. +# SPDX-License-Identifier: LicenseRef-NVIDIA-SOFTWARE-LICENSE + +# This code was automatically generated across versions from 1.5.0 to 13.3.0, generator version 0.3.1.dev1719+g565f73f4e. Do not modify it directly. + +from libc.stdint cimport intptr_t + +from .cycudla cimport * + + + + +############################################################################### +# Types +############################################################################### + +ctypedef cudlaDevHandle DevHandle +ctypedef cudlaModule Module + + +############################################################################### +# Enum +############################################################################### + +ctypedef cudlaStatus _Status +ctypedef cudlaMode _Mode +ctypedef cudlaModuleAttributeType _ModuleAttributeType +ctypedef cudlaFenceType _FenceType +ctypedef cudlaModuleLoadFlags _ModuleLoadFlags +ctypedef cudlaSubmissionFlags _SubmissionFlags +ctypedef cudlaAccessPermissionFlags _AccessPermissionFlags +ctypedef cudlaDevAttributeType _DevAttributeType + + +############################################################################### +# Functions +############################################################################### + +cpdef uint64_t get_version() except? -1 +cpdef uint64_t device_get_count() except? -1 +cpdef intptr_t create_device(uint64_t device, uint32_t flags) except * +cpdef intptr_t mem_register(intptr_t dev_handle, intptr_t ptr, size_t size, uint32_t flags) except * +cpdef intptr_t module_load_from_memory(intptr_t dev_handle, p_module, size_t module_size, uint32_t flags) except * +cpdef module_unload(intptr_t h_module, uint32_t flags) +cpdef submit_task(intptr_t dev_handle, intptr_t ptr_to_tasks, uint32_t num_tasks, intptr_t stream, uint32_t flags) +cpdef object device_get_attribute(intptr_t dev_handle, int attrib) except * +cpdef mem_unregister(intptr_t dev_handle, intptr_t dev_ptr) +cpdef int get_last_error(intptr_t dev_handle) except? 0 +cpdef destroy_device(intptr_t dev_handle) +cpdef set_task_timeout_in_ms(intptr_t dev_handle, uint32_t timeout) + +cpdef module_get_attributes(intptr_t h_module, int attr_type) except * diff --git a/venv/lib/python3.11/site-packages/cuda/bindings/cufile.cpython-311-x86_64-linux-gnu.so b/venv/lib/python3.11/site-packages/cuda/bindings/cufile.cpython-311-x86_64-linux-gnu.so new file mode 100644 index 0000000000000000000000000000000000000000..37a2a5ce755cbd5fce7bcf08b8de5e3619016f11 --- /dev/null +++ b/venv/lib/python3.11/site-packages/cuda/bindings/cufile.cpython-311-x86_64-linux-gnu.so @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:9ba612ef27494ea2190fbb2b309253243c034b9c156f829edaf08075193fbe55 +size 765736 diff --git a/venv/lib/python3.11/site-packages/cuda/bindings/cufile.pxd b/venv/lib/python3.11/site-packages/cuda/bindings/cufile.pxd new file mode 100644 index 0000000000000000000000000000000000000000..7a4a83cd796a51840c093d2f39428bc0a434235f --- /dev/null +++ b/venv/lib/python3.11/site-packages/cuda/bindings/cufile.pxd @@ -0,0 +1,85 @@ +# SPDX-FileCopyrightText: Copyright (c) 2025-2026 NVIDIA CORPORATION & AFFILIATES. All rights reserved. +# +# SPDX-License-Identifier: LicenseRef-NVIDIA-SOFTWARE-LICENSE +# +# This code was automatically generated across versions from 12.9.1 to 13.2.0, generator version 0.3.1.dev1568+g289771de9.d20260413. Do not modify it directly. + +from libc.stdint cimport intptr_t + +from .cycufile cimport * + + +############################################################################### +# Types +############################################################################### + +ctypedef CUfileHandle_t Handle +ctypedef CUfileBatchHandle_t BatchHandle +ctypedef CUfileError_t Error +ctypedef cufileRDMAInfo_t RDMAInfo +ctypedef CUfileFSOps_t FSOps +ctypedef CUfileDrvProps_t DrvProps + + +############################################################################### +# Enum +############################################################################### + +ctypedef CUfileOpError _OpError +ctypedef CUfileDriverStatusFlags_t _DriverStatusFlags +ctypedef CUfileDriverControlFlags_t _DriverControlFlags +ctypedef CUfileFeatureFlags_t _FeatureFlags +ctypedef CUfileFileHandleType _FileHandleType +ctypedef CUfileOpcode_t _Opcode +ctypedef CUfileStatus_t _Status +ctypedef CUfileBatchMode_t _BatchMode +ctypedef CUFileSizeTConfigParameter_t _SizeTConfigParameter +ctypedef CUFileBoolConfigParameter_t _BoolConfigParameter +ctypedef CUFileStringConfigParameter_t _StringConfigParameter +ctypedef CUFileArrayConfigParameter_t _ArrayConfigParameter +ctypedef CUfileP2PFlags_t _P2PFlags + + +############################################################################### +# Functions +############################################################################### + +cpdef intptr_t handle_register(intptr_t descr) except? 0 +cpdef void handle_deregister(intptr_t fh) except* +cpdef buf_register(intptr_t buf_ptr_base, size_t length, int flags) +cpdef buf_deregister(intptr_t buf_ptr_base) +cpdef driver_open() +cpdef use_count() +cpdef driver_get_properties(intptr_t props) +cpdef driver_set_poll_mode(bint poll, size_t poll_threshold_size) +cpdef driver_set_max_direct_io_size(size_t max_direct_io_size) +cpdef driver_set_max_cache_size(size_t max_cache_size) +cpdef driver_set_max_pinned_mem_size(size_t max_pinned_size) +cpdef intptr_t batch_io_set_up(unsigned nr) except? 0 +cpdef batch_io_submit(intptr_t batch_idp, unsigned nr, intptr_t iocbp, unsigned int flags) +cpdef batch_io_get_status(intptr_t batch_idp, unsigned min_nr, intptr_t nr, intptr_t iocbp, intptr_t timeout) +cpdef batch_io_cancel(intptr_t batch_idp) +cpdef void batch_io_destroy(intptr_t batch_idp) except* +cpdef read_async(intptr_t fh, intptr_t buf_ptr_base, intptr_t size_p, intptr_t file_offset_p, intptr_t buf_ptr_offset_p, intptr_t bytes_read_p, intptr_t stream) +cpdef write_async(intptr_t fh, intptr_t buf_ptr_base, intptr_t size_p, intptr_t file_offset_p, intptr_t buf_ptr_offset_p, intptr_t bytes_written_p, intptr_t stream) +cpdef stream_register(intptr_t stream, unsigned flags) +cpdef stream_deregister(intptr_t stream) +cpdef int get_version() except? 0 +cpdef size_t get_parameter_size_t(int param) except? 0 +cpdef bint get_parameter_bool(int param) except? 0 +cpdef str get_parameter_string(int param, int len) +cpdef set_parameter_size_t(int param, size_t value) +cpdef set_parameter_bool(int param, bint value) +cpdef set_parameter_string(int param, intptr_t desc_str) +cpdef tuple get_parameter_min_max_value(int param) +cpdef set_stats_level(int level) +cpdef int get_stats_level() except? 0 +cpdef stats_start() +cpdef stats_stop() +cpdef stats_reset() +cpdef get_stats_l1(intptr_t stats) +cpdef get_stats_l2(intptr_t stats) +cpdef get_stats_l3(intptr_t stats) +cpdef size_t get_bar_size_in_kb(int gpu_index) except? 0 +cpdef set_parameter_posix_pool_slab_array(intptr_t size_values, intptr_t count_values, int len) +cpdef get_parameter_posix_pool_slab_array(intptr_t size_values, intptr_t count_values, int len) diff --git a/venv/lib/python3.11/site-packages/cuda/bindings/cycudla.cpython-311-x86_64-linux-gnu.so b/venv/lib/python3.11/site-packages/cuda/bindings/cycudla.cpython-311-x86_64-linux-gnu.so new file mode 100644 index 0000000000000000000000000000000000000000..c263b3cfc00bba1eb8b1cf676e69f8ec61688566 Binary files /dev/null and b/venv/lib/python3.11/site-packages/cuda/bindings/cycudla.cpython-311-x86_64-linux-gnu.so differ diff --git a/venv/lib/python3.11/site-packages/cuda/bindings/cycudla.pxd b/venv/lib/python3.11/site-packages/cuda/bindings/cycudla.pxd new file mode 100644 index 0000000000000000000000000000000000000000..b8fdec0a2f5fbc6517fe6cc3fa07a245efee270b --- /dev/null +++ b/venv/lib/python3.11/site-packages/cuda/bindings/cycudla.pxd @@ -0,0 +1,160 @@ +# SPDX-FileCopyrightText: Copyright (c) 2024-2026 NVIDIA CORPORATION & AFFILIATES. All rights reserved. +# SPDX-License-Identifier: LicenseRef-NVIDIA-SOFTWARE-LICENSE + +# This code was automatically generated across versions from 1.5.0 to 13.3.0, generator version 0.3.1.dev1719+g565f73f4e. Do not modify it directly. +# This layer exposes the C header to Cython as-is. + +from libc.stdint cimport int8_t, int16_t, int32_t, int64_t +from libc.stdint cimport uint8_t, uint16_t, uint32_t, uint64_t +from libc.stdint cimport intptr_t, uintptr_t +from libc.stddef cimport size_t + + + + +############################################################################### +# Types (structs, enums, ...) +############################################################################### + +# enums +ctypedef enum cudlaStatus "cudlaStatus": + cudlaSuccess "cudlaSuccess" = 0 + cudlaErrorInvalidParam "cudlaErrorInvalidParam" = 1 + cudlaErrorOutOfResources "cudlaErrorOutOfResources" = 2 + cudlaErrorCreationFailed "cudlaErrorCreationFailed" = 3 + cudlaErrorInvalidAddress "cudlaErrorInvalidAddress" = 4 + cudlaErrorOs "cudlaErrorOs" = 5 + cudlaErrorCuda "cudlaErrorCuda" = 6 + cudlaErrorUmd "cudlaErrorUmd" = 7 + cudlaErrorInvalidDevice "cudlaErrorInvalidDevice" = 8 + cudlaErrorInvalidAttribute "cudlaErrorInvalidAttribute" = 9 + cudlaErrorIncompatibleDlaSWVersion "cudlaErrorIncompatibleDlaSWVersion" = 10 + cudlaErrorMemoryRegistered "cudlaErrorMemoryRegistered" = 11 + cudlaErrorInvalidModule "cudlaErrorInvalidModule" = 12 + cudlaErrorUnsupportedOperation "cudlaErrorUnsupportedOperation" = 13 + cudlaErrorNvSci "cudlaErrorNvSci" = 14 + cudlaErrorDriverNotFound "cudlaErrorDriverNotFound" = 15 + cudlaErrorDlaErrInvalidInput "cudlaErrorDlaErrInvalidInput" = 0x40000001 + cudlaErrorDlaErrInvalidPreAction "cudlaErrorDlaErrInvalidPreAction" = 0x40000002 + cudlaErrorDlaErrNoMem "cudlaErrorDlaErrNoMem" = 0x40000003 + cudlaErrorDlaErrProcessorBusy "cudlaErrorDlaErrProcessorBusy" = 0x40000004 + cudlaErrorDlaErrTaskStatusMismatch "cudlaErrorDlaErrTaskStatusMismatch" = 0x40000005 + cudlaErrorDlaErrEngineTimeout "cudlaErrorDlaErrEngineTimeout" = 0x40000006 + cudlaErrorDlaErrDataMismatch "cudlaErrorDlaErrDataMismatch" = 0x40000007 + cudlaErrorUnknown "cudlaErrorUnknown" = 0x7fffffff + _CUDLASTATUS_INTERNAL_LOADING_ERROR "_CUDLASTATUS_INTERNAL_LOADING_ERROR" = -42 + +ctypedef enum cudlaMode "cudlaMode": + CUDLA_CUDA_DLA "CUDLA_CUDA_DLA" = 0 + CUDLA_STANDALONE "CUDLA_STANDALONE" = 1 + +ctypedef enum cudlaModuleAttributeType "cudlaModuleAttributeType": + CUDLA_NUM_INPUT_TENSORS "CUDLA_NUM_INPUT_TENSORS" = 0 + CUDLA_NUM_OUTPUT_TENSORS "CUDLA_NUM_OUTPUT_TENSORS" = 1 + CUDLA_INPUT_TENSOR_DESCRIPTORS "CUDLA_INPUT_TENSOR_DESCRIPTORS" = 2 + CUDLA_OUTPUT_TENSOR_DESCRIPTORS "CUDLA_OUTPUT_TENSOR_DESCRIPTORS" = 3 + CUDLA_NUM_OUTPUT_TASK_STATISTICS "CUDLA_NUM_OUTPUT_TASK_STATISTICS" = 4 + CUDLA_OUTPUT_TASK_STATISTICS_DESCRIPTORS "CUDLA_OUTPUT_TASK_STATISTICS_DESCRIPTORS" = 5 + +ctypedef enum cudlaFenceType "cudlaFenceType": + CUDLA_NVSCISYNC_FENCE "CUDLA_NVSCISYNC_FENCE" = 1 + CUDLA_NVSCISYNC_FENCE_SOF "CUDLA_NVSCISYNC_FENCE_SOF" = 2 + +ctypedef enum cudlaModuleLoadFlags "cudlaModuleLoadFlags": + CUDLA_MODULE_DEFAULT "CUDLA_MODULE_DEFAULT" = 0 + CUDLA_MODULE_ENABLE_FAULT_DIAGNOSTICS "CUDLA_MODULE_ENABLE_FAULT_DIAGNOSTICS" = 1 + +ctypedef enum cudlaSubmissionFlags "cudlaSubmissionFlags": + CUDLA_SUBMIT_NOOP "CUDLA_SUBMIT_NOOP" = 1 + CUDLA_SUBMIT_SKIP_LOCK_ACQUIRE "CUDLA_SUBMIT_SKIP_LOCK_ACQUIRE" = (1 << 1) + CUDLA_SUBMIT_DIAGNOSTICS_TASK "CUDLA_SUBMIT_DIAGNOSTICS_TASK" = (1 << 2) + +ctypedef enum cudlaAccessPermissionFlags "cudlaAccessPermissionFlags": + CUDLA_READ_WRITE_PERM "CUDLA_READ_WRITE_PERM" = 0 + CUDLA_READ_ONLY_PERM "CUDLA_READ_ONLY_PERM" = 1 + CUDLA_TASK_STATISTICS "CUDLA_TASK_STATISTICS" = (1 << 1) + +ctypedef enum cudlaDevAttributeType "cudlaDevAttributeType": + CUDLA_UNIFIED_ADDRESSING "CUDLA_UNIFIED_ADDRESSING" = 0 + CUDLA_DEVICE_VERSION "CUDLA_DEVICE_VERSION" = 1 + +# types +ctypedef void* cudlaDevHandle 'cudlaDevHandle' + +ctypedef void* cudlaModule 'cudlaModule' + +ctypedef struct cudlaExternalMemoryHandleDesc_t 'cudlaExternalMemoryHandleDesc_t': + void* extBufObject + unsigned long long size + +ctypedef struct cudlaExternalSemaphoreHandleDesc_t 'cudlaExternalSemaphoreHandleDesc_t': + void* extSyncObject + +ctypedef struct cudlaModuleTensorDescriptor 'cudlaModuleTensorDescriptor': + char name[(80U + 1)] + uint64_t size + uint64_t n + uint64_t c + uint64_t h + uint64_t w + uint8_t dataFormat + uint8_t dataType + uint8_t dataCategory + uint8_t pixelFormat + uint8_t pixelMapping + uint32_t stride[8U] + +ctypedef struct CudlaFence 'CudlaFence': + void* fence + cudlaFenceType type + +ctypedef union cudlaDevAttribute 'cudlaDevAttribute': + uint8_t unifiedAddressingSupported + uint32_t deviceVersion + +ctypedef union cudlaModuleAttribute 'cudlaModuleAttribute': + uint32_t numInputTensors + uint32_t numOutputTensors + cudlaModuleTensorDescriptor* inputTensorDesc + cudlaModuleTensorDescriptor* outputTensorDesc + +ctypedef struct cudlaWaitEvents 'cudlaWaitEvents': + CudlaFence* preFences + uint32_t numEvents + +ctypedef struct cudlaSignalEvents 'cudlaSignalEvents': + uint64_t** devPtrs + CudlaFence* eofFences + uint32_t numEvents + +ctypedef struct cudlaTask 'cudlaTask': + cudlaModule moduleHandle + uint64_t** outputTensor + uint32_t numOutputTensors + uint32_t numInputTensors + uint64_t** inputTensor + cudlaWaitEvents* waitEvents + cudlaSignalEvents* signalEvents + +# Typedef aliases for struct types (struct has _t, typedef doesn't) +ctypedef cudlaExternalMemoryHandleDesc_t cudlaExternalMemoryHandleDesc 'cudlaExternalMemoryHandleDesc' +ctypedef cudlaExternalSemaphoreHandleDesc_t cudlaExternalSemaphoreHandleDesc 'cudlaExternalSemaphoreHandleDesc' + + +############################################################################### +# Functions +############################################################################### + +cdef cudlaStatus cudlaGetVersion(uint64_t* const version) except?_CUDLASTATUS_INTERNAL_LOADING_ERROR nogil +cdef cudlaStatus cudlaDeviceGetCount(uint64_t* const pNumDevices) except?_CUDLASTATUS_INTERNAL_LOADING_ERROR nogil +cdef cudlaStatus cudlaCreateDevice(const uint64_t device, cudlaDevHandle* const devHandle, const uint32_t flags) except?_CUDLASTATUS_INTERNAL_LOADING_ERROR nogil +cdef cudlaStatus cudlaMemRegister(const cudlaDevHandle devHandle, const uint64_t* const ptr, const size_t size, uint64_t** const devPtr, const uint32_t flags) except?_CUDLASTATUS_INTERNAL_LOADING_ERROR nogil +cdef cudlaStatus cudlaModuleLoadFromMemory(const cudlaDevHandle devHandle, const uint8_t* const pModule, const size_t moduleSize, cudlaModule* const hModule, const uint32_t flags) except?_CUDLASTATUS_INTERNAL_LOADING_ERROR nogil +cdef cudlaStatus cudlaModuleGetAttributes(const cudlaModule hModule, const cudlaModuleAttributeType attrType, cudlaModuleAttribute* const attribute) except?_CUDLASTATUS_INTERNAL_LOADING_ERROR nogil +cdef cudlaStatus cudlaModuleUnload(const cudlaModule hModule, const uint32_t flags) except?_CUDLASTATUS_INTERNAL_LOADING_ERROR nogil +cdef cudlaStatus cudlaSubmitTask(const cudlaDevHandle devHandle, const cudlaTask* const ptrToTasks, const uint32_t numTasks, void* const stream, const uint32_t flags) except?_CUDLASTATUS_INTERNAL_LOADING_ERROR nogil +cdef cudlaStatus cudlaDeviceGetAttribute(const cudlaDevHandle devHandle, const cudlaDevAttributeType attrib, cudlaDevAttribute* const pAttribute) except?_CUDLASTATUS_INTERNAL_LOADING_ERROR nogil +cdef cudlaStatus cudlaMemUnregister(const cudlaDevHandle devHandle, const uint64_t* const devPtr) except?_CUDLASTATUS_INTERNAL_LOADING_ERROR nogil +cdef cudlaStatus cudlaGetLastError(const cudlaDevHandle devHandle) except?_CUDLASTATUS_INTERNAL_LOADING_ERROR nogil +cdef cudlaStatus cudlaDestroyDevice(const cudlaDevHandle devHandle) except?_CUDLASTATUS_INTERNAL_LOADING_ERROR nogil +cdef cudlaStatus cudlaSetTaskTimeoutInMs(const cudlaDevHandle devHandle, const uint32_t timeout) except?_CUDLASTATUS_INTERNAL_LOADING_ERROR nogil diff --git a/venv/lib/python3.11/site-packages/cuda/bindings/cycufile.cpython-311-x86_64-linux-gnu.so b/venv/lib/python3.11/site-packages/cuda/bindings/cycufile.cpython-311-x86_64-linux-gnu.so new file mode 100644 index 0000000000000000000000000000000000000000..98182215c59c1f1b79c587ec79b40cb65c883ed3 Binary files /dev/null and b/venv/lib/python3.11/site-packages/cuda/bindings/cycufile.cpython-311-x86_64-linux-gnu.so differ diff --git a/venv/lib/python3.11/site-packages/cuda/bindings/cycufile.pxd b/venv/lib/python3.11/site-packages/cuda/bindings/cycufile.pxd new file mode 100644 index 0000000000000000000000000000000000000000..bdbfc8e9a46df93277a61f330448e8f7af9a1cea --- /dev/null +++ b/venv/lib/python3.11/site-packages/cuda/bindings/cycufile.pxd @@ -0,0 +1,432 @@ +# SPDX-FileCopyrightText: Copyright (c) 2025-2026 NVIDIA CORPORATION & AFFILIATES. All rights reserved. +# +# SPDX-License-Identifier: LicenseRef-NVIDIA-SOFTWARE-LICENSE +# +# This code was automatically generated across versions from 12.9.1 to 13.2.0, generator version 0.3.1.dev1422+gf4812259e.d20260318. Do not modify it directly. + +from libc.stdint cimport uint32_t, uint64_t +from libc.time cimport time_t +from libcpp cimport bool as cpp_bool +from posix.types cimport off_t + +cimport cuda.bindings.cydriver +from cuda.bindings.cydriver cimport CUresult + + +############################################################################### +# Types (structs, enums, ...) +############################################################################### + +# TODO: switch to "from libc.time cimport timespec" once we can use recent +# Cython to build +cdef extern from "": + cdef struct timespec: + time_t tv_sec + long tv_nsec +cdef extern from "": + cdef struct sockaddr: + unsigned short sa_family + char sa_data[14] + ctypedef sockaddr sockaddr_t + + + + + # enums +cdef extern from '': + ctypedef enum CUfileOpError: + CU_FILE_SUCCESS + CU_FILE_DRIVER_NOT_INITIALIZED + CU_FILE_DRIVER_INVALID_PROPS + CU_FILE_DRIVER_UNSUPPORTED_LIMIT + CU_FILE_DRIVER_VERSION_MISMATCH + CU_FILE_DRIVER_VERSION_READ_ERROR + CU_FILE_DRIVER_CLOSING + CU_FILE_PLATFORM_NOT_SUPPORTED + CU_FILE_IO_NOT_SUPPORTED + CU_FILE_DEVICE_NOT_SUPPORTED + CU_FILE_NVFS_DRIVER_ERROR + CU_FILE_CUDA_DRIVER_ERROR + CU_FILE_CUDA_POINTER_INVALID + CU_FILE_CUDA_MEMORY_TYPE_INVALID + CU_FILE_CUDA_POINTER_RANGE_ERROR + CU_FILE_CUDA_CONTEXT_MISMATCH + CU_FILE_INVALID_MAPPING_SIZE + CU_FILE_INVALID_MAPPING_RANGE + CU_FILE_INVALID_FILE_TYPE + CU_FILE_INVALID_FILE_OPEN_FLAG + CU_FILE_DIO_NOT_SET + CU_FILE_INVALID_VALUE + CU_FILE_MEMORY_ALREADY_REGISTERED + CU_FILE_MEMORY_NOT_REGISTERED + CU_FILE_PERMISSION_DENIED + CU_FILE_DRIVER_ALREADY_OPEN + CU_FILE_HANDLE_NOT_REGISTERED + CU_FILE_HANDLE_ALREADY_REGISTERED + CU_FILE_DEVICE_NOT_FOUND + CU_FILE_INTERNAL_ERROR + CU_FILE_GETNEWFD_FAILED + CU_FILE_NVFS_SETUP_ERROR + CU_FILE_IO_DISABLED + CU_FILE_BATCH_SUBMIT_FAILED + CU_FILE_GPU_MEMORY_PINNING_FAILED + CU_FILE_BATCH_FULL + CU_FILE_ASYNC_NOT_SUPPORTED + CU_FILE_INTERNAL_BATCH_SETUP_ERROR + CU_FILE_INTERNAL_BATCH_SUBMIT_ERROR + CU_FILE_INTERNAL_BATCH_GETSTATUS_ERROR + CU_FILE_INTERNAL_BATCH_CANCEL_ERROR + CU_FILE_NOMEM_ERROR + CU_FILE_IO_ERROR + CU_FILE_INTERNAL_BUF_REGISTER_ERROR + CU_FILE_HASH_OPR_ERROR + CU_FILE_INVALID_CONTEXT_ERROR + CU_FILE_NVFS_INTERNAL_DRIVER_ERROR + CU_FILE_BATCH_NOCOMPAT_ERROR + CU_FILE_IO_MAX_ERROR + +cdef extern from '': + ctypedef enum CUfileDriverStatusFlags_t: + CU_FILE_LUSTRE_SUPPORTED + CU_FILE_WEKAFS_SUPPORTED + CU_FILE_NFS_SUPPORTED + CU_FILE_GPFS_SUPPORTED + CU_FILE_NVME_SUPPORTED + CU_FILE_NVMEOF_SUPPORTED + CU_FILE_SCSI_SUPPORTED + CU_FILE_SCALEFLUX_CSD_SUPPORTED + CU_FILE_NVMESH_SUPPORTED + CU_FILE_BEEGFS_SUPPORTED + CU_FILE_NVME_P2P_SUPPORTED + CU_FILE_SCATEFS_SUPPORTED + CU_FILE_VIRTIOFS_SUPPORTED + CU_FILE_MAX_TARGET_TYPES + +cdef extern from '': + ctypedef enum CUfileDriverControlFlags_t: + CU_FILE_USE_POLL_MODE + CU_FILE_ALLOW_COMPAT_MODE + CU_FILE_POSIX_IO_MODE + CU_FILE_FALLBACK_IO_MODE + +cdef extern from '': + ctypedef enum CUfileFeatureFlags_t: + CU_FILE_DYN_ROUTING_SUPPORTED + CU_FILE_BATCH_IO_SUPPORTED + CU_FILE_STREAMS_SUPPORTED + CU_FILE_PARALLEL_IO_SUPPORTED + CU_FILE_P2P_SUPPORTED + +cdef extern from '': + ctypedef enum CUfileFileHandleType: + CU_FILE_HANDLE_TYPE_OPAQUE_FD + CU_FILE_HANDLE_TYPE_OPAQUE_WIN32 + CU_FILE_HANDLE_TYPE_USERSPACE_FS + +cdef extern from '': + ctypedef enum CUfileOpcode_t: + CUFILE_READ + CUFILE_WRITE + +cdef extern from '': + ctypedef enum CUfileStatus_t: + CUFILE_WAITING + CUFILE_PENDING + CUFILE_INVALID + CUFILE_CANCELED + CUFILE_COMPLETE + CUFILE_TIMEOUT + CUFILE_FAILED + +cdef extern from '': + ctypedef enum CUfileBatchMode_t: + CUFILE_BATCH + +cdef extern from '': + ctypedef enum CUFileSizeTConfigParameter_t: + CUFILE_PARAM_PROFILE_STATS + CUFILE_PARAM_EXECUTION_MAX_IO_QUEUE_DEPTH + CUFILE_PARAM_EXECUTION_MAX_IO_THREADS + CUFILE_PARAM_EXECUTION_MIN_IO_THRESHOLD_SIZE_KB + CUFILE_PARAM_EXECUTION_MAX_REQUEST_PARALLELISM + CUFILE_PARAM_PROPERTIES_MAX_DIRECT_IO_SIZE_KB + CUFILE_PARAM_PROPERTIES_MAX_DEVICE_CACHE_SIZE_KB + CUFILE_PARAM_PROPERTIES_PER_BUFFER_CACHE_SIZE_KB + CUFILE_PARAM_PROPERTIES_MAX_DEVICE_PINNED_MEM_SIZE_KB + CUFILE_PARAM_PROPERTIES_IO_BATCHSIZE + CUFILE_PARAM_POLLTHRESHOLD_SIZE_KB + CUFILE_PARAM_PROPERTIES_BATCH_IO_TIMEOUT_MS + +cdef extern from '': + ctypedef enum CUFileBoolConfigParameter_t: + CUFILE_PARAM_PROPERTIES_USE_POLL_MODE + CUFILE_PARAM_PROPERTIES_ALLOW_COMPAT_MODE + CUFILE_PARAM_FORCE_COMPAT_MODE + CUFILE_PARAM_FS_MISC_API_CHECK_AGGRESSIVE + CUFILE_PARAM_EXECUTION_PARALLEL_IO + CUFILE_PARAM_PROFILE_NVTX + CUFILE_PARAM_PROPERTIES_ALLOW_SYSTEM_MEMORY + CUFILE_PARAM_USE_PCIP2PDMA + CUFILE_PARAM_PREFER_IO_URING + CUFILE_PARAM_FORCE_ODIRECT_MODE + CUFILE_PARAM_SKIP_TOPOLOGY_DETECTION + CUFILE_PARAM_STREAM_MEMOPS_BYPASS + +cdef extern from '': + ctypedef enum CUFileStringConfigParameter_t: + CUFILE_PARAM_LOGGING_LEVEL + CUFILE_PARAM_ENV_LOGFILE_PATH + CUFILE_PARAM_LOG_DIR + +cdef extern from '': + ctypedef enum CUFileArrayConfigParameter_t: + CUFILE_PARAM_POSIX_POOL_SLAB_SIZE_KB + CUFILE_PARAM_POSIX_POOL_SLAB_COUNT + CUFILE_PARAM_GPU_BOUNCE_BUFFER_SLAB_SIZE_KB + CUFILE_PARAM_GPU_BOUNCE_BUFFER_SLAB_COUNT + +cdef extern from '': + ctypedef enum CUfileP2PFlags_t: + CUFILE_P2PDMA + CUFILE_NVFS + CUFILE_DMABUF + CUFILE_C2C + CUFILE_NVIDIA_PEERMEM + + # types +cdef extern from '': + ctypedef void* CUfileHandle_t 'CUfileHandle_t' + + +cdef extern from '': + ctypedef void* CUfileBatchHandle_t 'CUfileBatchHandle_t' + + +cdef extern from '': + ctypedef struct CUfileError_t 'CUfileError_t': + CUfileOpError err + CUresult cu_err + +cdef struct cuda_bindings_cufile__anon_pod0: + unsigned int major_version + unsigned int minor_version + size_t poll_thresh_size + size_t max_direct_io_size + unsigned int dstatusflags + unsigned int dcontrolflags + +cdef extern from '': + ctypedef struct cufileRDMAInfo_t 'cufileRDMAInfo_t': + int version + int desc_len + char* desc_str + +cdef extern from '': + ctypedef struct CUfileFSOps_t 'CUfileFSOps_t': + char* (*fs_type)(const void*) + int (*getRDMADeviceList)(const void*, sockaddr_t**) + int (*getRDMADevicePriority)(const void*, char*, size_t, loff_t, const sockaddr_t*) + ssize_t (*read)(const void*, char*, size_t, loff_t, const cufileRDMAInfo_t*) + ssize_t (*write)(const void*, const char*, size_t, loff_t, const cufileRDMAInfo_t*) + +cdef union cuda_bindings_cufile__anon_pod1: + int fd + void* handle + +cdef struct cuda_bindings_cufile__anon_pod3: + void* devPtr_base + off_t file_offset + off_t devPtr_offset + size_t size + +cdef extern from '': + ctypedef struct CUfileIOEvents_t 'CUfileIOEvents_t': + void* cookie + CUfileStatus_t status + size_t ret + +cdef extern from '': + ctypedef struct CUfileOpCounter_t 'CUfileOpCounter_t': + uint64_t ok + uint64_t err + +cdef extern from '': + ctypedef struct CUfilePerGpuStats_t 'CUfilePerGpuStats_t': + char uuid[16] + uint64_t read_bytes + uint64_t read_bw_bytes_per_sec + uint64_t read_utilization + uint64_t read_duration_us + uint64_t n_total_reads + uint64_t n_p2p_reads + uint64_t n_nvfs_reads + uint64_t n_posix_reads + uint64_t n_unaligned_reads + uint64_t n_dr_reads + uint64_t n_sparse_regions + uint64_t n_inline_regions + uint64_t n_reads_err + uint64_t writes_bytes + uint64_t write_bw_bytes_per_sec + uint64_t write_utilization + uint64_t write_duration_us + uint64_t n_total_writes + uint64_t n_p2p_writes + uint64_t n_nvfs_writes + uint64_t n_posix_writes + uint64_t n_unaligned_writes + uint64_t n_dr_writes + uint64_t n_writes_err + uint64_t n_mmap + uint64_t n_mmap_ok + uint64_t n_mmap_err + uint64_t n_mmap_free + uint64_t reg_bytes + +cdef extern from '': + ctypedef struct CUfileDrvProps_t 'CUfileDrvProps_t': + cuda_bindings_cufile__anon_pod0 nvfs + unsigned int fflags + unsigned int max_device_cache_size + unsigned int per_buffer_cache_size + unsigned int max_device_pinned_mem_size + unsigned int max_batch_io_size + unsigned int max_batch_io_timeout_msecs + +cdef extern from '': + ctypedef struct CUfileDescr_t 'CUfileDescr_t': + CUfileFileHandleType type + cuda_bindings_cufile__anon_pod1 handle + CUfileFSOps_t* fs_ops + +cdef union cuda_bindings_cufile__anon_pod2: + cuda_bindings_cufile__anon_pod3 batch + +cdef extern from '': + ctypedef struct CUfileStatsLevel1_t 'CUfileStatsLevel1_t': + CUfileOpCounter_t read_ops + CUfileOpCounter_t write_ops + CUfileOpCounter_t hdl_register_ops + CUfileOpCounter_t hdl_deregister_ops + CUfileOpCounter_t buf_register_ops + CUfileOpCounter_t buf_deregister_ops + uint64_t read_bytes + uint64_t write_bytes + uint64_t read_bw_bytes_per_sec + uint64_t write_bw_bytes_per_sec + uint64_t read_lat_avg_us + uint64_t write_lat_avg_us + uint64_t read_ops_per_sec + uint64_t write_ops_per_sec + uint64_t read_lat_sum_us + uint64_t write_lat_sum_us + CUfileOpCounter_t batch_submit_ops + CUfileOpCounter_t batch_complete_ops + CUfileOpCounter_t batch_setup_ops + CUfileOpCounter_t batch_cancel_ops + CUfileOpCounter_t batch_destroy_ops + CUfileOpCounter_t batch_enqueued_ops + CUfileOpCounter_t batch_posix_enqueued_ops + CUfileOpCounter_t batch_processed_ops + CUfileOpCounter_t batch_posix_processed_ops + CUfileOpCounter_t batch_nvfs_submit_ops + CUfileOpCounter_t batch_p2p_submit_ops + CUfileOpCounter_t batch_aio_submit_ops + CUfileOpCounter_t batch_iouring_submit_ops + CUfileOpCounter_t batch_mixed_io_submit_ops + CUfileOpCounter_t batch_total_submit_ops + uint64_t batch_read_bytes + uint64_t batch_write_bytes + uint64_t batch_read_bw_bytes + uint64_t batch_write_bw_bytes + uint64_t batch_submit_lat_avg_us + uint64_t batch_completion_lat_avg_us + uint64_t batch_submit_ops_per_sec + uint64_t batch_complete_ops_per_sec + uint64_t batch_submit_lat_sum_us + uint64_t batch_completion_lat_sum_us + uint64_t last_batch_read_bytes + uint64_t last_batch_write_bytes + +cdef extern from '': + ctypedef struct CUfileIOParams_t 'CUfileIOParams_t': + CUfileBatchMode_t mode + cuda_bindings_cufile__anon_pod2 u + CUfileHandle_t fh + CUfileOpcode_t opcode + void* cookie + +cdef extern from '': + ctypedef struct CUfileStatsLevel2_t 'CUfileStatsLevel2_t': + CUfileStatsLevel1_t basic + uint64_t read_size_kb_hist[32] + uint64_t write_size_kb_hist[32] + +cdef extern from '': + ctypedef struct CUfileStatsLevel3_t 'CUfileStatsLevel3_t': + CUfileStatsLevel2_t detailed + uint32_t num_gpus + CUfilePerGpuStats_t per_gpu_stats[16] + + +cdef extern from *: + """ + // This is the missing piece we need to supply to help Cython & C++ compilers. + inline bool operator==(const CUfileError_t& lhs, const CUfileError_t& rhs) { + return (lhs.err == rhs.err) && (lhs.cu_err == rhs.cu_err); + } + static CUfileError_t CUFILE_LOADING_ERROR{(CUfileOpError)-1, (CUresult)-1}; + """ + const CUfileError_t CUFILE_LOADING_ERROR + ctypedef void* CUstream "CUstream" + + const char* cufileop_status_error(CUfileOpError) + + +############################################################################### +# Functions +############################################################################### + +cdef CUfileError_t cuFileHandleRegister(CUfileHandle_t* fh, CUfileDescr_t* descr) except?CUFILE_LOADING_ERROR nogil +cdef void cuFileHandleDeregister(CUfileHandle_t fh) except* nogil +cdef CUfileError_t cuFileBufRegister(const void* bufPtr_base, size_t length, int flags) except?CUFILE_LOADING_ERROR nogil +cdef CUfileError_t cuFileBufDeregister(const void* bufPtr_base) except?CUFILE_LOADING_ERROR nogil +cdef ssize_t cuFileRead(CUfileHandle_t fh, void* bufPtr_base, size_t size, off_t file_offset, off_t bufPtr_offset) except* nogil +cdef ssize_t cuFileWrite(CUfileHandle_t fh, const void* bufPtr_base, size_t size, off_t file_offset, off_t bufPtr_offset) except* nogil +cdef CUfileError_t cuFileDriverOpen() except?CUFILE_LOADING_ERROR nogil +cdef CUfileError_t cuFileDriverClose() except?CUFILE_LOADING_ERROR nogil +cdef CUfileError_t cuFileDriverClose_v2() except?CUFILE_LOADING_ERROR nogil +cdef long cuFileUseCount() except* nogil +cdef CUfileError_t cuFileDriverGetProperties(CUfileDrvProps_t* props) except?CUFILE_LOADING_ERROR nogil +cdef CUfileError_t cuFileDriverSetPollMode(cpp_bool poll, size_t poll_threshold_size) except?CUFILE_LOADING_ERROR nogil +cdef CUfileError_t cuFileDriverSetMaxDirectIOSize(size_t max_direct_io_size) except?CUFILE_LOADING_ERROR nogil +cdef CUfileError_t cuFileDriverSetMaxCacheSize(size_t max_cache_size) except?CUFILE_LOADING_ERROR nogil +cdef CUfileError_t cuFileDriverSetMaxPinnedMemSize(size_t max_pinned_size) except?CUFILE_LOADING_ERROR nogil +cdef CUfileError_t cuFileBatchIOSetUp(CUfileBatchHandle_t* batch_idp, unsigned nr) except?CUFILE_LOADING_ERROR nogil +cdef CUfileError_t cuFileBatchIOSubmit(CUfileBatchHandle_t batch_idp, unsigned nr, CUfileIOParams_t* iocbp, unsigned int flags) except?CUFILE_LOADING_ERROR nogil +cdef CUfileError_t cuFileBatchIOGetStatus(CUfileBatchHandle_t batch_idp, unsigned min_nr, unsigned* nr, CUfileIOEvents_t* iocbp, timespec* timeout) except?CUFILE_LOADING_ERROR nogil +cdef CUfileError_t cuFileBatchIOCancel(CUfileBatchHandle_t batch_idp) except?CUFILE_LOADING_ERROR nogil +cdef void cuFileBatchIODestroy(CUfileBatchHandle_t batch_idp) except* nogil +cdef CUfileError_t cuFileReadAsync(CUfileHandle_t fh, void* bufPtr_base, size_t* size_p, off_t* file_offset_p, off_t* bufPtr_offset_p, ssize_t* bytes_read_p, CUstream stream) except?CUFILE_LOADING_ERROR nogil +cdef CUfileError_t cuFileWriteAsync(CUfileHandle_t fh, void* bufPtr_base, size_t* size_p, off_t* file_offset_p, off_t* bufPtr_offset_p, ssize_t* bytes_written_p, CUstream stream) except?CUFILE_LOADING_ERROR nogil +cdef CUfileError_t cuFileStreamRegister(CUstream stream, unsigned flags) except?CUFILE_LOADING_ERROR nogil +cdef CUfileError_t cuFileStreamDeregister(CUstream stream) except?CUFILE_LOADING_ERROR nogil +cdef CUfileError_t cuFileGetVersion(int* version) except?CUFILE_LOADING_ERROR nogil +cdef CUfileError_t cuFileGetParameterSizeT(CUFileSizeTConfigParameter_t param, size_t* value) except?CUFILE_LOADING_ERROR nogil +cdef CUfileError_t cuFileGetParameterBool(CUFileBoolConfigParameter_t param, cpp_bool* value) except?CUFILE_LOADING_ERROR nogil +cdef CUfileError_t cuFileGetParameterString(CUFileStringConfigParameter_t param, char* desc_str, int len) except?CUFILE_LOADING_ERROR nogil +cdef CUfileError_t cuFileSetParameterSizeT(CUFileSizeTConfigParameter_t param, size_t value) except?CUFILE_LOADING_ERROR nogil +cdef CUfileError_t cuFileSetParameterBool(CUFileBoolConfigParameter_t param, cpp_bool value) except?CUFILE_LOADING_ERROR nogil +cdef CUfileError_t cuFileSetParameterString(CUFileStringConfigParameter_t param, const char* desc_str) except?CUFILE_LOADING_ERROR nogil +cdef CUfileError_t cuFileGetParameterMinMaxValue(CUFileSizeTConfigParameter_t param, size_t* min_value, size_t* max_value) except?CUFILE_LOADING_ERROR nogil +cdef CUfileError_t cuFileSetStatsLevel(int level) except?CUFILE_LOADING_ERROR nogil +cdef CUfileError_t cuFileGetStatsLevel(int* level) except?CUFILE_LOADING_ERROR nogil +cdef CUfileError_t cuFileStatsStart() except?CUFILE_LOADING_ERROR nogil +cdef CUfileError_t cuFileStatsStop() except?CUFILE_LOADING_ERROR nogil +cdef CUfileError_t cuFileStatsReset() except?CUFILE_LOADING_ERROR nogil +cdef CUfileError_t cuFileGetStatsL1(CUfileStatsLevel1_t* stats) except?CUFILE_LOADING_ERROR nogil +cdef CUfileError_t cuFileGetStatsL2(CUfileStatsLevel2_t* stats) except?CUFILE_LOADING_ERROR nogil +cdef CUfileError_t cuFileGetStatsL3(CUfileStatsLevel3_t* stats) except?CUFILE_LOADING_ERROR nogil +cdef CUfileError_t cuFileGetBARSizeInKB(int gpuIndex, size_t* barSize) except?CUFILE_LOADING_ERROR nogil +cdef CUfileError_t cuFileSetParameterPosixPoolSlabArray(const size_t* size_values, const size_t* count_values, int len) except?CUFILE_LOADING_ERROR nogil +cdef CUfileError_t cuFileGetParameterPosixPoolSlabArray(size_t* size_values, size_t* count_values, int len) except?CUFILE_LOADING_ERROR nogil diff --git a/venv/lib/python3.11/site-packages/cuda/bindings/cydriver.cpython-311-x86_64-linux-gnu.so b/venv/lib/python3.11/site-packages/cuda/bindings/cydriver.cpython-311-x86_64-linux-gnu.so new file mode 100644 index 0000000000000000000000000000000000000000..6a3618d0a0c68261fa332f2984c0f808144b2cb5 --- /dev/null +++ b/venv/lib/python3.11/site-packages/cuda/bindings/cydriver.cpython-311-x86_64-linux-gnu.so @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:4644de78fbc28349cf63d5ef25c3bac213d27e08b27a55811e87969fe17870b0 +size 166688 diff --git a/venv/lib/python3.11/site-packages/cuda/bindings/cydriver.pxd b/venv/lib/python3.11/site-packages/cuda/bindings/cydriver.pxd new file mode 100644 index 0000000000000000000000000000000000000000..9fec422ca1cf2486c390239dbf5cf1d723ce568a --- /dev/null +++ b/venv/lib/python3.11/site-packages/cuda/bindings/cydriver.pxd @@ -0,0 +1,4029 @@ +# SPDX-FileCopyrightText: Copyright (c) 2021-2026 NVIDIA CORPORATION & AFFILIATES. All rights reserved. +# SPDX-License-Identifier: LicenseRef-NVIDIA-SOFTWARE-LICENSE + +# This code was automatically generated with version 13.3.0, generator version 0.3.1.dev1711+g875fec45. Do not modify it directly. + +from libc.stdint cimport uint32_t, uint64_t + +cdef extern from "cuda.h": + + ctypedef uint32_t cuuint32_t + + ctypedef uint64_t cuuint64_t + + ctypedef unsigned long long CUdeviceptr_v2 + + ctypedef CUdeviceptr_v2 CUdeviceptr + + ctypedef int CUdevice_v1 + + ctypedef CUdevice_v1 CUdevice + + cdef struct CUctx_st: + pass + ctypedef CUctx_st* CUcontext + + cdef struct CUmod_st: + pass + ctypedef CUmod_st* CUmodule + + cdef struct CUfunc_st: + pass + ctypedef CUfunc_st* CUfunction + + cdef struct CUlib_st: + pass + ctypedef CUlib_st* CUlibrary + + cdef struct CUkern_st: + pass + ctypedef CUkern_st* CUkernel + + cdef struct CUarray_st: + pass + ctypedef CUarray_st* CUarray + + cdef struct CUmipmappedArray_st: + pass + ctypedef CUmipmappedArray_st* CUmipmappedArray + + cdef struct CUtexref_st: + pass + ctypedef CUtexref_st* CUtexref + + cdef struct CUsurfref_st: + pass + ctypedef CUsurfref_st* CUsurfref + + cdef struct CUevent_st: + pass + ctypedef CUevent_st* CUevent + + cdef struct CUstream_st: + pass + ctypedef CUstream_st* CUstream + + cdef struct CUgraphicsResource_st: + pass + ctypedef CUgraphicsResource_st* CUgraphicsResource + + ctypedef unsigned long long CUtexObject_v1 + + ctypedef CUtexObject_v1 CUtexObject + + ctypedef unsigned long long CUsurfObject_v1 + + ctypedef CUsurfObject_v1 CUsurfObject + + cdef struct CUextMemory_st: + pass + ctypedef CUextMemory_st* CUexternalMemory + + cdef struct CUextSemaphore_st: + pass + ctypedef CUextSemaphore_st* CUexternalSemaphore + + cdef struct CUgraph_st: + pass + ctypedef CUgraph_st* CUgraph + + cdef struct CUgraphNode_st: + pass + ctypedef CUgraphNode_st* CUgraphNode + + cdef struct CUgraphExec_st: + pass + ctypedef CUgraphExec_st* CUgraphExec + + cdef struct CUmemPoolHandle_st: + pass + ctypedef CUmemPoolHandle_st* CUmemoryPool + + cdef struct CUuserObject_st: + pass + ctypedef CUuserObject_st* CUuserObject + + ctypedef cuuint64_t CUgraphConditionalHandle + + cdef struct CUgraphDeviceUpdatableNode_st: + pass + ctypedef CUgraphDeviceUpdatableNode_st* CUgraphDeviceNode + + cdef struct CUasyncCallbackEntry_st: + pass + ctypedef CUasyncCallbackEntry_st* CUasyncCallbackHandle + + cdef struct CUgreenCtx_st: + pass + ctypedef CUgreenCtx_st* CUgreenCtx + + cdef struct CUuuid_st: + char bytes[16] + + ctypedef CUuuid_st CUuuid + + cdef struct CUmemFabricHandle_st: + unsigned char data[64] + + ctypedef CUmemFabricHandle_st CUmemFabricHandle_v1 + + ctypedef CUmemFabricHandle_v1 CUmemFabricHandle + + cdef struct CUipcEventHandle_st: + char reserved[64] + + ctypedef CUipcEventHandle_st CUipcEventHandle_v1 + + ctypedef CUipcEventHandle_v1 CUipcEventHandle + + cdef struct CUipcMemHandle_st: + char reserved[64] + + ctypedef CUipcMemHandle_st CUipcMemHandle_v1 + + ctypedef CUipcMemHandle_v1 CUipcMemHandle + + cdef enum CUipcMem_flags_enum: + CU_IPC_MEM_LAZY_ENABLE_PEER_ACCESS = 1 + + ctypedef CUipcMem_flags_enum CUipcMem_flags + + cdef enum CUmemAttach_flags_enum: + CU_MEM_ATTACH_GLOBAL = 1 + CU_MEM_ATTACH_HOST = 2 + CU_MEM_ATTACH_SINGLE = 4 + + ctypedef CUmemAttach_flags_enum CUmemAttach_flags + + cdef enum CUctx_flags_enum: + CU_CTX_SCHED_AUTO = 0 + CU_CTX_SCHED_SPIN = 1 + CU_CTX_SCHED_YIELD = 2 + CU_CTX_SCHED_BLOCKING_SYNC = 4 + CU_CTX_BLOCKING_SYNC = 4 + CU_CTX_SCHED_MASK = 7 + CU_CTX_MAP_HOST = 8 + CU_CTX_LMEM_RESIZE_TO_MAX = 16 + CU_CTX_COREDUMP_ENABLE = 32 + CU_CTX_USER_COREDUMP_ENABLE = 64 + CU_CTX_SYNC_MEMOPS = 128 + CU_CTX_FLAGS_MASK = 255 + + ctypedef CUctx_flags_enum CUctx_flags + + cdef enum CUevent_sched_flags_enum: + CU_EVENT_SCHED_AUTO = 0 + CU_EVENT_SCHED_SPIN = 1 + CU_EVENT_SCHED_YIELD = 2 + CU_EVENT_SCHED_BLOCKING_SYNC = 4 + + ctypedef CUevent_sched_flags_enum CUevent_sched_flags + + cdef enum cl_event_flags_enum: + NVCL_EVENT_SCHED_AUTO = 0 + NVCL_EVENT_SCHED_SPIN = 1 + NVCL_EVENT_SCHED_YIELD = 2 + NVCL_EVENT_SCHED_BLOCKING_SYNC = 4 + + ctypedef cl_event_flags_enum cl_event_flags + + cdef enum cl_context_flags_enum: + NVCL_CTX_SCHED_AUTO = 0 + NVCL_CTX_SCHED_SPIN = 1 + NVCL_CTX_SCHED_YIELD = 2 + NVCL_CTX_SCHED_BLOCKING_SYNC = 4 + + ctypedef cl_context_flags_enum cl_context_flags + + cdef enum CUhostTaskSyncMode_enum: + CU_HOST_TASK_BLOCKING = 0 + CU_HOST_TASK_SPINWAIT = 1 + + ctypedef CUhostTaskSyncMode_enum CUhostTaskSyncMode + + cdef enum CUstream_flags_enum: + CU_STREAM_DEFAULT = 0 + CU_STREAM_NON_BLOCKING = 1 + + ctypedef CUstream_flags_enum CUstream_flags + + cdef enum CUevent_flags_enum: + CU_EVENT_DEFAULT = 0 + CU_EVENT_BLOCKING_SYNC = 1 + CU_EVENT_DISABLE_TIMING = 2 + CU_EVENT_INTERPROCESS = 4 + + ctypedef CUevent_flags_enum CUevent_flags + + cdef enum CUevent_record_flags_enum: + CU_EVENT_RECORD_DEFAULT = 0 + CU_EVENT_RECORD_EXTERNAL = 1 + + ctypedef CUevent_record_flags_enum CUevent_record_flags + + cdef enum CUevent_wait_flags_enum: + CU_EVENT_WAIT_DEFAULT = 0 + CU_EVENT_WAIT_EXTERNAL = 1 + + ctypedef CUevent_wait_flags_enum CUevent_wait_flags + + cdef enum CUatomicOperation_enum: + CU_ATOMIC_OPERATION_INTEGER_ADD = 0 + CU_ATOMIC_OPERATION_INTEGER_MIN = 1 + CU_ATOMIC_OPERATION_INTEGER_MAX = 2 + CU_ATOMIC_OPERATION_INTEGER_INCREMENT = 3 + CU_ATOMIC_OPERATION_INTEGER_DECREMENT = 4 + CU_ATOMIC_OPERATION_AND = 5 + CU_ATOMIC_OPERATION_OR = 6 + CU_ATOMIC_OPERATION_XOR = 7 + CU_ATOMIC_OPERATION_EXCHANGE = 8 + CU_ATOMIC_OPERATION_CAS = 9 + CU_ATOMIC_OPERATION_FLOAT_ADD = 10 + CU_ATOMIC_OPERATION_FLOAT_MIN = 11 + CU_ATOMIC_OPERATION_FLOAT_MAX = 12 + CU_ATOMIC_OPERATION_MAX = 13 + + ctypedef CUatomicOperation_enum CUatomicOperation + + cdef enum CUatomicOperationCapability_enum: + CU_ATOMIC_CAPABILITY_SIGNED = 1 + CU_ATOMIC_CAPABILITY_UNSIGNED = 2 + CU_ATOMIC_CAPABILITY_REDUCTION = 4 + CU_ATOMIC_CAPABILITY_SCALAR_32 = 8 + CU_ATOMIC_CAPABILITY_SCALAR_64 = 16 + CU_ATOMIC_CAPABILITY_SCALAR_128 = 32 + CU_ATOMIC_CAPABILITY_VECTOR_32x4 = 64 + + ctypedef CUatomicOperationCapability_enum CUatomicOperationCapability + + cdef enum CUstreamWaitValue_flags_enum: + CU_STREAM_WAIT_VALUE_GEQ = 0 + CU_STREAM_WAIT_VALUE_EQ = 1 + CU_STREAM_WAIT_VALUE_AND = 2 + CU_STREAM_WAIT_VALUE_NOR = 3 + CU_STREAM_WAIT_VALUE_FLUSH = 1073741824 + + ctypedef CUstreamWaitValue_flags_enum CUstreamWaitValue_flags + + cdef enum CUstreamWriteValue_flags_enum: + CU_STREAM_WRITE_VALUE_DEFAULT = 0 + CU_STREAM_WRITE_VALUE_NO_MEMORY_BARRIER = 1 + + ctypedef CUstreamWriteValue_flags_enum CUstreamWriteValue_flags + + cdef enum CUstreamBatchMemOpType_enum: + CU_STREAM_MEM_OP_WAIT_VALUE_32 = 1 + CU_STREAM_MEM_OP_WRITE_VALUE_32 = 2 + CU_STREAM_MEM_OP_FLUSH_REMOTE_WRITES = 3 + CU_STREAM_MEM_OP_WAIT_VALUE_64 = 4 + CU_STREAM_MEM_OP_WRITE_VALUE_64 = 5 + CU_STREAM_MEM_OP_BARRIER = 6 + CU_STREAM_MEM_OP_ATOMIC_REDUCTION = 8 + + ctypedef CUstreamBatchMemOpType_enum CUstreamBatchMemOpType + + cdef enum CUstreamMemoryBarrier_flags_enum: + CU_STREAM_MEMORY_BARRIER_TYPE_SYS = 0 + CU_STREAM_MEMORY_BARRIER_TYPE_GPU = 1 + + ctypedef CUstreamMemoryBarrier_flags_enum CUstreamMemoryBarrier_flags + + cdef enum CUstreamAtomicReductionOpType_enum: + CU_STREAM_ATOMIC_REDUCTION_OP_ADD = 0 + CU_STREAM_ATOMIC_REDUCTION_OP_AND = 5 + CU_STREAM_ATOMIC_REDUCTION_OP_OR = 6 + + ctypedef CUstreamAtomicReductionOpType_enum CUstreamAtomicReductionOpType + + cdef enum CUstreamAtomicReductionDataType_enum: + CU_STREAM_ATOMIC_REDUCTION_UNSIGNED_32 = 14 + CU_STREAM_ATOMIC_REDUCTION_UNSIGNED_64 = 22 + + ctypedef CUstreamAtomicReductionDataType_enum CUstreamAtomicReductionDataType + + cdef struct CUstreamMemOpWaitValueParams_st: + CUstreamBatchMemOpType operation + CUdeviceptr address + cuuint32_t value + cuuint64_t value64 + unsigned int flags + CUdeviceptr alias + + cdef struct CUstreamMemOpWriteValueParams_st: + CUstreamBatchMemOpType operation + CUdeviceptr address + cuuint32_t value + cuuint64_t value64 + unsigned int flags + CUdeviceptr alias + + cdef struct CUstreamMemOpFlushRemoteWritesParams_st: + CUstreamBatchMemOpType operation + unsigned int flags + + cdef struct CUstreamMemOpMemoryBarrierParams_st: + CUstreamBatchMemOpType operation + unsigned int flags + + cdef struct CUstreamMemOpAtomicReductionParams_st: + CUstreamBatchMemOpType operation + unsigned int flags + CUstreamAtomicReductionOpType reductionOp + CUstreamAtomicReductionDataType dataType + CUdeviceptr address + cuuint64_t value + CUdeviceptr alias + + cdef union CUstreamBatchMemOpParams_union: + CUstreamBatchMemOpType operation + CUstreamMemOpWaitValueParams_st waitValue + CUstreamMemOpWriteValueParams_st writeValue + CUstreamMemOpFlushRemoteWritesParams_st flushRemoteWrites + CUstreamMemOpMemoryBarrierParams_st memoryBarrier + CUstreamMemOpAtomicReductionParams_st atomicReduction + cuuint64_t pad[6] + + ctypedef CUstreamBatchMemOpParams_union CUstreamBatchMemOpParams_v1 + + ctypedef CUstreamBatchMemOpParams_v1 CUstreamBatchMemOpParams + + cdef struct CUDA_BATCH_MEM_OP_NODE_PARAMS_v1_st: + CUcontext ctx + unsigned int count + CUstreamBatchMemOpParams* paramArray + unsigned int flags + + ctypedef CUDA_BATCH_MEM_OP_NODE_PARAMS_v1_st CUDA_BATCH_MEM_OP_NODE_PARAMS_v1 + + ctypedef CUDA_BATCH_MEM_OP_NODE_PARAMS_v1 CUDA_BATCH_MEM_OP_NODE_PARAMS + + cdef struct CUDA_BATCH_MEM_OP_NODE_PARAMS_v2_st: + CUcontext ctx + unsigned int count + CUstreamBatchMemOpParams* paramArray + unsigned int flags + + ctypedef CUDA_BATCH_MEM_OP_NODE_PARAMS_v2_st CUDA_BATCH_MEM_OP_NODE_PARAMS_v2 + + cdef enum CUoccupancy_flags_enum: + CU_OCCUPANCY_DEFAULT = 0 + CU_OCCUPANCY_DISABLE_CACHING_OVERRIDE = 1 + + ctypedef CUoccupancy_flags_enum CUoccupancy_flags + + cdef enum CUstreamUpdateCaptureDependencies_flags_enum: + CU_STREAM_ADD_CAPTURE_DEPENDENCIES = 0 + CU_STREAM_SET_CAPTURE_DEPENDENCIES = 1 + + ctypedef CUstreamUpdateCaptureDependencies_flags_enum CUstreamUpdateCaptureDependencies_flags + + cdef enum CUasyncNotificationType_enum: + CU_ASYNC_NOTIFICATION_TYPE_OVER_BUDGET = 1 + + ctypedef CUasyncNotificationType_enum CUasyncNotificationType + + cdef struct anon_struct0: + unsigned long long bytesOverBudget + + cdef union anon_union2: + anon_struct0 overBudget + + cdef struct CUasyncNotificationInfo_st: + CUasyncNotificationType type + anon_union2 info + + ctypedef CUasyncNotificationInfo_st CUasyncNotificationInfo + + ctypedef void (*CUasyncCallback)(CUasyncNotificationInfo* info, void* userData, CUasyncCallbackHandle callback) + + cdef enum CUarray_format_enum: + CU_AD_FORMAT_UNSIGNED_INT8 = 1 + CU_AD_FORMAT_UNSIGNED_INT16 = 2 + CU_AD_FORMAT_UNSIGNED_INT32 = 3 + CU_AD_FORMAT_SIGNED_INT8 = 8 + CU_AD_FORMAT_SIGNED_INT16 = 9 + CU_AD_FORMAT_SIGNED_INT32 = 10 + CU_AD_FORMAT_HALF = 16 + CU_AD_FORMAT_FLOAT = 32 + CU_AD_FORMAT_UNORM_INT_101010_2 = 80 + CU_AD_FORMAT_UINT8_PACKED_422 = 81 + CU_AD_FORMAT_UINT8_PACKED_444 = 82 + CU_AD_FORMAT_UINT8_SEMIPLANAR_420 = 83 + CU_AD_FORMAT_UINT16_SEMIPLANAR_420 = 84 + CU_AD_FORMAT_UINT8_SEMIPLANAR_422 = 85 + CU_AD_FORMAT_UINT16_SEMIPLANAR_422 = 86 + CU_AD_FORMAT_UINT8_SEMIPLANAR_444 = 87 + CU_AD_FORMAT_UINT16_SEMIPLANAR_444 = 88 + CU_AD_FORMAT_UINT8_PLANAR_420 = 89 + CU_AD_FORMAT_UINT16_PLANAR_420 = 90 + CU_AD_FORMAT_UINT8_PLANAR_422 = 91 + CU_AD_FORMAT_UINT16_PLANAR_422 = 92 + CU_AD_FORMAT_UINT8_PLANAR_444 = 93 + CU_AD_FORMAT_UINT16_PLANAR_444 = 94 + CU_AD_FORMAT_BC1_UNORM = 145 + CU_AD_FORMAT_BC1_UNORM_SRGB = 146 + CU_AD_FORMAT_BC2_UNORM = 147 + CU_AD_FORMAT_BC2_UNORM_SRGB = 148 + CU_AD_FORMAT_BC3_UNORM = 149 + CU_AD_FORMAT_BC3_UNORM_SRGB = 150 + CU_AD_FORMAT_BC4_UNORM = 151 + CU_AD_FORMAT_BC4_SNORM = 152 + CU_AD_FORMAT_BC5_UNORM = 153 + CU_AD_FORMAT_BC5_SNORM = 154 + CU_AD_FORMAT_BC6H_UF16 = 155 + CU_AD_FORMAT_BC6H_SF16 = 156 + CU_AD_FORMAT_BC7_UNORM = 157 + CU_AD_FORMAT_BC7_UNORM_SRGB = 158 + CU_AD_FORMAT_P010 = 159 + CU_AD_FORMAT_P016 = 161 + CU_AD_FORMAT_NV16 = 162 + CU_AD_FORMAT_P210 = 163 + CU_AD_FORMAT_P216 = 164 + CU_AD_FORMAT_YUY2 = 165 + CU_AD_FORMAT_Y210 = 166 + CU_AD_FORMAT_Y216 = 167 + CU_AD_FORMAT_AYUV = 168 + CU_AD_FORMAT_Y410 = 169 + CU_AD_FORMAT_NV12 = 176 + CU_AD_FORMAT_Y416 = 177 + CU_AD_FORMAT_Y444_PLANAR8 = 178 + CU_AD_FORMAT_Y444_PLANAR10 = 179 + CU_AD_FORMAT_YUV444_8bit_SemiPlanar = 180 + CU_AD_FORMAT_YUV444_16bit_SemiPlanar = 181 + CU_AD_FORMAT_UNORM_INT8X1 = 192 + CU_AD_FORMAT_UNORM_INT8X2 = 193 + CU_AD_FORMAT_UNORM_INT8X4 = 194 + CU_AD_FORMAT_UNORM_INT16X1 = 195 + CU_AD_FORMAT_UNORM_INT16X2 = 196 + CU_AD_FORMAT_UNORM_INT16X4 = 197 + CU_AD_FORMAT_SNORM_INT8X1 = 198 + CU_AD_FORMAT_SNORM_INT8X2 = 199 + CU_AD_FORMAT_SNORM_INT8X4 = 200 + CU_AD_FORMAT_SNORM_INT16X1 = 201 + CU_AD_FORMAT_SNORM_INT16X2 = 202 + CU_AD_FORMAT_SNORM_INT16X4 = 203 + CU_AD_FORMAT_MAX = 2147483647 + + ctypedef CUarray_format_enum CUarray_format + + cdef enum CUaddress_mode_enum: + CU_TR_ADDRESS_MODE_WRAP = 0 + CU_TR_ADDRESS_MODE_CLAMP = 1 + CU_TR_ADDRESS_MODE_MIRROR = 2 + CU_TR_ADDRESS_MODE_BORDER = 3 + + ctypedef CUaddress_mode_enum CUaddress_mode + + cdef enum CUfilter_mode_enum: + CU_TR_FILTER_MODE_POINT = 0 + CU_TR_FILTER_MODE_LINEAR = 1 + + ctypedef CUfilter_mode_enum CUfilter_mode + + cdef enum CUdevice_attribute_enum: + CU_DEVICE_ATTRIBUTE_MAX_THREADS_PER_BLOCK = 1 + CU_DEVICE_ATTRIBUTE_MAX_BLOCK_DIM_X = 2 + CU_DEVICE_ATTRIBUTE_MAX_BLOCK_DIM_Y = 3 + CU_DEVICE_ATTRIBUTE_MAX_BLOCK_DIM_Z = 4 + CU_DEVICE_ATTRIBUTE_MAX_GRID_DIM_X = 5 + CU_DEVICE_ATTRIBUTE_MAX_GRID_DIM_Y = 6 + CU_DEVICE_ATTRIBUTE_MAX_GRID_DIM_Z = 7 + CU_DEVICE_ATTRIBUTE_MAX_SHARED_MEMORY_PER_BLOCK = 8 + CU_DEVICE_ATTRIBUTE_SHARED_MEMORY_PER_BLOCK = 8 + CU_DEVICE_ATTRIBUTE_TOTAL_CONSTANT_MEMORY = 9 + CU_DEVICE_ATTRIBUTE_WARP_SIZE = 10 + CU_DEVICE_ATTRIBUTE_MAX_PITCH = 11 + CU_DEVICE_ATTRIBUTE_MAX_REGISTERS_PER_BLOCK = 12 + CU_DEVICE_ATTRIBUTE_REGISTERS_PER_BLOCK = 12 + CU_DEVICE_ATTRIBUTE_CLOCK_RATE = 13 + CU_DEVICE_ATTRIBUTE_TEXTURE_ALIGNMENT = 14 + CU_DEVICE_ATTRIBUTE_GPU_OVERLAP = 15 + CU_DEVICE_ATTRIBUTE_MULTIPROCESSOR_COUNT = 16 + CU_DEVICE_ATTRIBUTE_KERNEL_EXEC_TIMEOUT = 17 + CU_DEVICE_ATTRIBUTE_INTEGRATED = 18 + CU_DEVICE_ATTRIBUTE_CAN_MAP_HOST_MEMORY = 19 + CU_DEVICE_ATTRIBUTE_COMPUTE_MODE = 20 + CU_DEVICE_ATTRIBUTE_MAXIMUM_TEXTURE1D_WIDTH = 21 + CU_DEVICE_ATTRIBUTE_MAXIMUM_TEXTURE2D_WIDTH = 22 + CU_DEVICE_ATTRIBUTE_MAXIMUM_TEXTURE2D_HEIGHT = 23 + CU_DEVICE_ATTRIBUTE_MAXIMUM_TEXTURE3D_WIDTH = 24 + CU_DEVICE_ATTRIBUTE_MAXIMUM_TEXTURE3D_HEIGHT = 25 + CU_DEVICE_ATTRIBUTE_MAXIMUM_TEXTURE3D_DEPTH = 26 + CU_DEVICE_ATTRIBUTE_MAXIMUM_TEXTURE2D_LAYERED_WIDTH = 27 + CU_DEVICE_ATTRIBUTE_MAXIMUM_TEXTURE2D_ARRAY_WIDTH = 27 + CU_DEVICE_ATTRIBUTE_MAXIMUM_TEXTURE2D_LAYERED_HEIGHT = 28 + CU_DEVICE_ATTRIBUTE_MAXIMUM_TEXTURE2D_ARRAY_HEIGHT = 28 + CU_DEVICE_ATTRIBUTE_MAXIMUM_TEXTURE2D_LAYERED_LAYERS = 29 + CU_DEVICE_ATTRIBUTE_MAXIMUM_TEXTURE2D_ARRAY_NUMSLICES = 29 + CU_DEVICE_ATTRIBUTE_SURFACE_ALIGNMENT = 30 + CU_DEVICE_ATTRIBUTE_CONCURRENT_KERNELS = 31 + CU_DEVICE_ATTRIBUTE_ECC_ENABLED = 32 + CU_DEVICE_ATTRIBUTE_PCI_BUS_ID = 33 + CU_DEVICE_ATTRIBUTE_PCI_DEVICE_ID = 34 + CU_DEVICE_ATTRIBUTE_TCC_DRIVER = 35 + CU_DEVICE_ATTRIBUTE_MEMORY_CLOCK_RATE = 36 + CU_DEVICE_ATTRIBUTE_GLOBAL_MEMORY_BUS_WIDTH = 37 + CU_DEVICE_ATTRIBUTE_L2_CACHE_SIZE = 38 + CU_DEVICE_ATTRIBUTE_MAX_THREADS_PER_MULTIPROCESSOR = 39 + CU_DEVICE_ATTRIBUTE_ASYNC_ENGINE_COUNT = 40 + CU_DEVICE_ATTRIBUTE_UNIFIED_ADDRESSING = 41 + CU_DEVICE_ATTRIBUTE_MAXIMUM_TEXTURE1D_LAYERED_WIDTH = 42 + CU_DEVICE_ATTRIBUTE_MAXIMUM_TEXTURE1D_LAYERED_LAYERS = 43 + CU_DEVICE_ATTRIBUTE_CAN_TEX2D_GATHER = 44 + CU_DEVICE_ATTRIBUTE_MAXIMUM_TEXTURE2D_GATHER_WIDTH = 45 + CU_DEVICE_ATTRIBUTE_MAXIMUM_TEXTURE2D_GATHER_HEIGHT = 46 + CU_DEVICE_ATTRIBUTE_MAXIMUM_TEXTURE3D_WIDTH_ALTERNATE = 47 + CU_DEVICE_ATTRIBUTE_MAXIMUM_TEXTURE3D_HEIGHT_ALTERNATE = 48 + CU_DEVICE_ATTRIBUTE_MAXIMUM_TEXTURE3D_DEPTH_ALTERNATE = 49 + CU_DEVICE_ATTRIBUTE_PCI_DOMAIN_ID = 50 + CU_DEVICE_ATTRIBUTE_TEXTURE_PITCH_ALIGNMENT = 51 + CU_DEVICE_ATTRIBUTE_MAXIMUM_TEXTURECUBEMAP_WIDTH = 52 + CU_DEVICE_ATTRIBUTE_MAXIMUM_TEXTURECUBEMAP_LAYERED_WIDTH = 53 + CU_DEVICE_ATTRIBUTE_MAXIMUM_TEXTURECUBEMAP_LAYERED_LAYERS = 54 + CU_DEVICE_ATTRIBUTE_MAXIMUM_SURFACE1D_WIDTH = 55 + CU_DEVICE_ATTRIBUTE_MAXIMUM_SURFACE2D_WIDTH = 56 + CU_DEVICE_ATTRIBUTE_MAXIMUM_SURFACE2D_HEIGHT = 57 + CU_DEVICE_ATTRIBUTE_MAXIMUM_SURFACE3D_WIDTH = 58 + CU_DEVICE_ATTRIBUTE_MAXIMUM_SURFACE3D_HEIGHT = 59 + CU_DEVICE_ATTRIBUTE_MAXIMUM_SURFACE3D_DEPTH = 60 + CU_DEVICE_ATTRIBUTE_MAXIMUM_SURFACE1D_LAYERED_WIDTH = 61 + CU_DEVICE_ATTRIBUTE_MAXIMUM_SURFACE1D_LAYERED_LAYERS = 62 + CU_DEVICE_ATTRIBUTE_MAXIMUM_SURFACE2D_LAYERED_WIDTH = 63 + CU_DEVICE_ATTRIBUTE_MAXIMUM_SURFACE2D_LAYERED_HEIGHT = 64 + CU_DEVICE_ATTRIBUTE_MAXIMUM_SURFACE2D_LAYERED_LAYERS = 65 + CU_DEVICE_ATTRIBUTE_MAXIMUM_SURFACECUBEMAP_WIDTH = 66 + CU_DEVICE_ATTRIBUTE_MAXIMUM_SURFACECUBEMAP_LAYERED_WIDTH = 67 + CU_DEVICE_ATTRIBUTE_MAXIMUM_SURFACECUBEMAP_LAYERED_LAYERS = 68 + CU_DEVICE_ATTRIBUTE_MAXIMUM_TEXTURE1D_LINEAR_WIDTH = 69 + CU_DEVICE_ATTRIBUTE_MAXIMUM_TEXTURE2D_LINEAR_WIDTH = 70 + CU_DEVICE_ATTRIBUTE_MAXIMUM_TEXTURE2D_LINEAR_HEIGHT = 71 + CU_DEVICE_ATTRIBUTE_MAXIMUM_TEXTURE2D_LINEAR_PITCH = 72 + CU_DEVICE_ATTRIBUTE_MAXIMUM_TEXTURE2D_MIPMAPPED_WIDTH = 73 + CU_DEVICE_ATTRIBUTE_MAXIMUM_TEXTURE2D_MIPMAPPED_HEIGHT = 74 + CU_DEVICE_ATTRIBUTE_COMPUTE_CAPABILITY_MAJOR = 75 + CU_DEVICE_ATTRIBUTE_COMPUTE_CAPABILITY_MINOR = 76 + CU_DEVICE_ATTRIBUTE_MAXIMUM_TEXTURE1D_MIPMAPPED_WIDTH = 77 + CU_DEVICE_ATTRIBUTE_STREAM_PRIORITIES_SUPPORTED = 78 + CU_DEVICE_ATTRIBUTE_GLOBAL_L1_CACHE_SUPPORTED = 79 + CU_DEVICE_ATTRIBUTE_LOCAL_L1_CACHE_SUPPORTED = 80 + CU_DEVICE_ATTRIBUTE_MAX_SHARED_MEMORY_PER_MULTIPROCESSOR = 81 + CU_DEVICE_ATTRIBUTE_MAX_REGISTERS_PER_MULTIPROCESSOR = 82 + CU_DEVICE_ATTRIBUTE_MANAGED_MEMORY = 83 + CU_DEVICE_ATTRIBUTE_MULTI_GPU_BOARD = 84 + CU_DEVICE_ATTRIBUTE_MULTI_GPU_BOARD_GROUP_ID = 85 + CU_DEVICE_ATTRIBUTE_HOST_NATIVE_ATOMIC_SUPPORTED = 86 + CU_DEVICE_ATTRIBUTE_SINGLE_TO_DOUBLE_PRECISION_PERF_RATIO = 87 + CU_DEVICE_ATTRIBUTE_PAGEABLE_MEMORY_ACCESS = 88 + CU_DEVICE_ATTRIBUTE_CONCURRENT_MANAGED_ACCESS = 89 + CU_DEVICE_ATTRIBUTE_COMPUTE_PREEMPTION_SUPPORTED = 90 + CU_DEVICE_ATTRIBUTE_CAN_USE_HOST_POINTER_FOR_REGISTERED_MEM = 91 + CU_DEVICE_ATTRIBUTE_CAN_USE_STREAM_MEM_OPS_V1 = 92 + CU_DEVICE_ATTRIBUTE_CAN_USE_64_BIT_STREAM_MEM_OPS_V1 = 93 + CU_DEVICE_ATTRIBUTE_CAN_USE_STREAM_WAIT_VALUE_NOR_V1 = 94 + CU_DEVICE_ATTRIBUTE_COOPERATIVE_LAUNCH = 95 + CU_DEVICE_ATTRIBUTE_COOPERATIVE_MULTI_DEVICE_LAUNCH = 96 + CU_DEVICE_ATTRIBUTE_MAX_SHARED_MEMORY_PER_BLOCK_OPTIN = 97 + CU_DEVICE_ATTRIBUTE_CAN_FLUSH_REMOTE_WRITES = 98 + CU_DEVICE_ATTRIBUTE_HOST_REGISTER_SUPPORTED = 99 + CU_DEVICE_ATTRIBUTE_PAGEABLE_MEMORY_ACCESS_USES_HOST_PAGE_TABLES = 100 + CU_DEVICE_ATTRIBUTE_DIRECT_MANAGED_MEM_ACCESS_FROM_HOST = 101 + CU_DEVICE_ATTRIBUTE_VIRTUAL_ADDRESS_MANAGEMENT_SUPPORTED = 102 + CU_DEVICE_ATTRIBUTE_VIRTUAL_MEMORY_MANAGEMENT_SUPPORTED = 102 + CU_DEVICE_ATTRIBUTE_HANDLE_TYPE_POSIX_FILE_DESCRIPTOR_SUPPORTED = 103 + CU_DEVICE_ATTRIBUTE_HANDLE_TYPE_WIN32_HANDLE_SUPPORTED = 104 + CU_DEVICE_ATTRIBUTE_HANDLE_TYPE_WIN32_KMT_HANDLE_SUPPORTED = 105 + CU_DEVICE_ATTRIBUTE_MAX_BLOCKS_PER_MULTIPROCESSOR = 106 + CU_DEVICE_ATTRIBUTE_GENERIC_COMPRESSION_SUPPORTED = 107 + CU_DEVICE_ATTRIBUTE_MAX_PERSISTING_L2_CACHE_SIZE = 108 + CU_DEVICE_ATTRIBUTE_MAX_ACCESS_POLICY_WINDOW_SIZE = 109 + CU_DEVICE_ATTRIBUTE_GPU_DIRECT_RDMA_WITH_CUDA_VMM_SUPPORTED = 110 + CU_DEVICE_ATTRIBUTE_RESERVED_SHARED_MEMORY_PER_BLOCK = 111 + CU_DEVICE_ATTRIBUTE_SPARSE_CUDA_ARRAY_SUPPORTED = 112 + CU_DEVICE_ATTRIBUTE_READ_ONLY_HOST_REGISTER_SUPPORTED = 113 + CU_DEVICE_ATTRIBUTE_TIMELINE_SEMAPHORE_INTEROP_SUPPORTED = 114 + CU_DEVICE_ATTRIBUTE_MEMORY_POOLS_SUPPORTED = 115 + CU_DEVICE_ATTRIBUTE_GPU_DIRECT_RDMA_SUPPORTED = 116 + CU_DEVICE_ATTRIBUTE_GPU_DIRECT_RDMA_FLUSH_WRITES_OPTIONS = 117 + CU_DEVICE_ATTRIBUTE_GPU_DIRECT_RDMA_WRITES_ORDERING = 118 + CU_DEVICE_ATTRIBUTE_MEMPOOL_SUPPORTED_HANDLE_TYPES = 119 + CU_DEVICE_ATTRIBUTE_CLUSTER_LAUNCH = 120 + CU_DEVICE_ATTRIBUTE_DEFERRED_MAPPING_CUDA_ARRAY_SUPPORTED = 121 + CU_DEVICE_ATTRIBUTE_CAN_USE_64_BIT_STREAM_MEM_OPS = 122 + CU_DEVICE_ATTRIBUTE_CAN_USE_STREAM_WAIT_VALUE_NOR = 123 + CU_DEVICE_ATTRIBUTE_DMA_BUF_SUPPORTED = 124 + CU_DEVICE_ATTRIBUTE_IPC_EVENT_SUPPORTED = 125 + CU_DEVICE_ATTRIBUTE_MEM_SYNC_DOMAIN_COUNT = 126 + CU_DEVICE_ATTRIBUTE_TENSOR_MAP_ACCESS_SUPPORTED = 127 + CU_DEVICE_ATTRIBUTE_HANDLE_TYPE_FABRIC_SUPPORTED = 128 + CU_DEVICE_ATTRIBUTE_UNIFIED_FUNCTION_POINTERS = 129 + CU_DEVICE_ATTRIBUTE_NUMA_CONFIG = 130 + CU_DEVICE_ATTRIBUTE_NUMA_ID = 131 + CU_DEVICE_ATTRIBUTE_MULTICAST_SUPPORTED = 132 + CU_DEVICE_ATTRIBUTE_MPS_ENABLED = 133 + CU_DEVICE_ATTRIBUTE_HOST_NUMA_ID = 134 + CU_DEVICE_ATTRIBUTE_D3D12_CIG_SUPPORTED = 135 + CU_DEVICE_ATTRIBUTE_MEM_DECOMPRESS_ALGORITHM_MASK = 136 + CU_DEVICE_ATTRIBUTE_MEM_DECOMPRESS_MAXIMUM_LENGTH = 137 + CU_DEVICE_ATTRIBUTE_VULKAN_CIG_SUPPORTED = 138 + CU_DEVICE_ATTRIBUTE_GPU_PCI_DEVICE_ID = 139 + CU_DEVICE_ATTRIBUTE_GPU_PCI_SUBSYSTEM_ID = 140 + CU_DEVICE_ATTRIBUTE_HOST_NUMA_VIRTUAL_MEMORY_MANAGEMENT_SUPPORTED = 141 + CU_DEVICE_ATTRIBUTE_HOST_NUMA_MEMORY_POOLS_SUPPORTED = 142 + CU_DEVICE_ATTRIBUTE_HOST_NUMA_MULTINODE_IPC_SUPPORTED = 143 + CU_DEVICE_ATTRIBUTE_HOST_MEMORY_POOLS_SUPPORTED = 144 + CU_DEVICE_ATTRIBUTE_HOST_VIRTUAL_MEMORY_MANAGEMENT_SUPPORTED = 145 + CU_DEVICE_ATTRIBUTE_HOST_ALLOC_DMA_BUF_SUPPORTED = 146 + CU_DEVICE_ATTRIBUTE_ONLY_PARTIAL_HOST_NATIVE_ATOMIC_SUPPORTED = 147 + CU_DEVICE_ATTRIBUTE_ATOMIC_REDUCTION_SUPPORTED = 148 + CU_DEVICE_ATTRIBUTE_D3D12_CIG_STREAMS_SUPPORTED = 151 + CU_DEVICE_ATTRIBUTE_DMA_BUF_MMAP_SUPPORTED = 152 + CU_DEVICE_ATTRIBUTE_LOGICAL_ENDPOINT_UNICAST_SUPPORTED = 153 + CU_DEVICE_ATTRIBUTE_LOGICAL_ENDPOINT_MULTICAST_SUPPORTED = 154 + CU_DEVICE_ATTRIBUTE_LOGICAL_ENDPOINT_COUNTED_OPS_SUPPORTED = 155 + CU_DEVICE_ATTRIBUTE_LOGICAL_ENDPOINT_UNICAST_ACCESS_ON_OWNER_DEVICE_SUPPORTED = 156 + CU_DEVICE_ATTRIBUTE_MAX = 157 + + ctypedef CUdevice_attribute_enum CUdevice_attribute + + cdef struct CUdevprop_st: + int maxThreadsPerBlock + int maxThreadsDim[3] + int maxGridSize[3] + int sharedMemPerBlock + int totalConstantMemory + int SIMDWidth + int memPitch + int regsPerBlock + int clockRate + int textureAlign + + ctypedef CUdevprop_st CUdevprop_v1 + + ctypedef CUdevprop_v1 CUdevprop + + cdef enum CUpointer_attribute_enum: + CU_POINTER_ATTRIBUTE_CONTEXT = 1 + CU_POINTER_ATTRIBUTE_MEMORY_TYPE = 2 + CU_POINTER_ATTRIBUTE_DEVICE_POINTER = 3 + CU_POINTER_ATTRIBUTE_HOST_POINTER = 4 + CU_POINTER_ATTRIBUTE_P2P_TOKENS = 5 + CU_POINTER_ATTRIBUTE_SYNC_MEMOPS = 6 + CU_POINTER_ATTRIBUTE_BUFFER_ID = 7 + CU_POINTER_ATTRIBUTE_IS_MANAGED = 8 + CU_POINTER_ATTRIBUTE_DEVICE_ORDINAL = 9 + CU_POINTER_ATTRIBUTE_IS_LEGACY_CUDA_IPC_CAPABLE = 10 + CU_POINTER_ATTRIBUTE_RANGE_START_ADDR = 11 + CU_POINTER_ATTRIBUTE_RANGE_SIZE = 12 + CU_POINTER_ATTRIBUTE_MAPPED = 13 + CU_POINTER_ATTRIBUTE_ALLOWED_HANDLE_TYPES = 14 + CU_POINTER_ATTRIBUTE_IS_GPU_DIRECT_RDMA_CAPABLE = 15 + CU_POINTER_ATTRIBUTE_ACCESS_FLAGS = 16 + CU_POINTER_ATTRIBUTE_MEMPOOL_HANDLE = 17 + CU_POINTER_ATTRIBUTE_MAPPING_SIZE = 18 + CU_POINTER_ATTRIBUTE_MAPPING_BASE_ADDR = 19 + CU_POINTER_ATTRIBUTE_MEMORY_BLOCK_ID = 20 + CU_POINTER_ATTRIBUTE_IS_HW_DECOMPRESS_CAPABLE = 21 + + ctypedef CUpointer_attribute_enum CUpointer_attribute + + cdef enum CUfunction_attribute_enum: + CU_FUNC_ATTRIBUTE_MAX_THREADS_PER_BLOCK = 0 + CU_FUNC_ATTRIBUTE_SHARED_SIZE_BYTES = 1 + CU_FUNC_ATTRIBUTE_CONST_SIZE_BYTES = 2 + CU_FUNC_ATTRIBUTE_LOCAL_SIZE_BYTES = 3 + CU_FUNC_ATTRIBUTE_NUM_REGS = 4 + CU_FUNC_ATTRIBUTE_PTX_VERSION = 5 + CU_FUNC_ATTRIBUTE_BINARY_VERSION = 6 + CU_FUNC_ATTRIBUTE_CACHE_MODE_CA = 7 + CU_FUNC_ATTRIBUTE_MAX_DYNAMIC_SHARED_SIZE_BYTES = 8 + CU_FUNC_ATTRIBUTE_PREFERRED_SHARED_MEMORY_CARVEOUT = 9 + CU_FUNC_ATTRIBUTE_CLUSTER_SIZE_MUST_BE_SET = 10 + CU_FUNC_ATTRIBUTE_REQUIRED_CLUSTER_WIDTH = 11 + CU_FUNC_ATTRIBUTE_REQUIRED_CLUSTER_HEIGHT = 12 + CU_FUNC_ATTRIBUTE_REQUIRED_CLUSTER_DEPTH = 13 + CU_FUNC_ATTRIBUTE_NON_PORTABLE_CLUSTER_SIZE_ALLOWED = 14 + CU_FUNC_ATTRIBUTE_CLUSTER_SCHEDULING_POLICY_PREFERENCE = 15 + CU_FUNC_ATTRIBUTE_DEVICE_NODE_UPDATE_SUPPORTED = 16 + CU_FUNC_ATTRIBUTE_MAX = 17 + + ctypedef CUfunction_attribute_enum CUfunction_attribute + + cdef enum CUfunc_cache_enum: + CU_FUNC_CACHE_PREFER_NONE = 0 + CU_FUNC_CACHE_PREFER_SHARED = 1 + CU_FUNC_CACHE_PREFER_L1 = 2 + CU_FUNC_CACHE_PREFER_EQUAL = 3 + + ctypedef CUfunc_cache_enum CUfunc_cache + + cdef enum CUsharedconfig_enum: + CU_SHARED_MEM_CONFIG_DEFAULT_BANK_SIZE = 0 + CU_SHARED_MEM_CONFIG_FOUR_BYTE_BANK_SIZE = 1 + CU_SHARED_MEM_CONFIG_EIGHT_BYTE_BANK_SIZE = 2 + + ctypedef CUsharedconfig_enum CUsharedconfig + + cdef enum CUshared_carveout_enum: + CU_SHAREDMEM_CARVEOUT_DEFAULT = -1 + CU_SHAREDMEM_CARVEOUT_MAX_L1 = 0 + CU_SHAREDMEM_CARVEOUT_MAX_SHARED = 100 + + ctypedef CUshared_carveout_enum CUshared_carveout + + cdef enum CUmemorytype_enum: + CU_MEMORYTYPE_HOST = 1 + CU_MEMORYTYPE_DEVICE = 2 + CU_MEMORYTYPE_ARRAY = 3 + CU_MEMORYTYPE_UNIFIED = 4 + + ctypedef CUmemorytype_enum CUmemorytype + + cdef enum CUcomputemode_enum: + CU_COMPUTEMODE_DEFAULT = 0 + CU_COMPUTEMODE_PROHIBITED = 2 + CU_COMPUTEMODE_EXCLUSIVE_PROCESS = 3 + + ctypedef CUcomputemode_enum CUcomputemode + + cdef enum CUmem_advise_enum: + CU_MEM_ADVISE_SET_READ_MOSTLY = 1 + CU_MEM_ADVISE_UNSET_READ_MOSTLY = 2 + CU_MEM_ADVISE_SET_PREFERRED_LOCATION = 3 + CU_MEM_ADVISE_UNSET_PREFERRED_LOCATION = 4 + CU_MEM_ADVISE_SET_ACCESSED_BY = 5 + CU_MEM_ADVISE_UNSET_ACCESSED_BY = 6 + + ctypedef CUmem_advise_enum CUmem_advise + + cdef enum CUmem_range_attribute_enum: + CU_MEM_RANGE_ATTRIBUTE_READ_MOSTLY = 1 + CU_MEM_RANGE_ATTRIBUTE_PREFERRED_LOCATION = 2 + CU_MEM_RANGE_ATTRIBUTE_ACCESSED_BY = 3 + CU_MEM_RANGE_ATTRIBUTE_LAST_PREFETCH_LOCATION = 4 + CU_MEM_RANGE_ATTRIBUTE_PREFERRED_LOCATION_TYPE = 5 + CU_MEM_RANGE_ATTRIBUTE_PREFERRED_LOCATION_ID = 6 + CU_MEM_RANGE_ATTRIBUTE_LAST_PREFETCH_LOCATION_TYPE = 7 + CU_MEM_RANGE_ATTRIBUTE_LAST_PREFETCH_LOCATION_ID = 8 + + ctypedef CUmem_range_attribute_enum CUmem_range_attribute + + cdef enum CUjit_option_enum: + CU_JIT_MAX_REGISTERS = 0 + CU_JIT_THREADS_PER_BLOCK = 1 + CU_JIT_WALL_TIME = 2 + CU_JIT_INFO_LOG_BUFFER = 3 + CU_JIT_INFO_LOG_BUFFER_SIZE_BYTES = 4 + CU_JIT_ERROR_LOG_BUFFER = 5 + CU_JIT_ERROR_LOG_BUFFER_SIZE_BYTES = 6 + CU_JIT_OPTIMIZATION_LEVEL = 7 + CU_JIT_TARGET_FROM_CUCONTEXT = 8 + CU_JIT_TARGET = 9 + CU_JIT_FALLBACK_STRATEGY = 10 + CU_JIT_GENERATE_DEBUG_INFO = 11 + CU_JIT_LOG_VERBOSE = 12 + CU_JIT_GENERATE_LINE_INFO = 13 + CU_JIT_CACHE_MODE = 14 + CU_JIT_NEW_SM3X_OPT = 15 + CU_JIT_FAST_COMPILE = 16 + CU_JIT_GLOBAL_SYMBOL_NAMES = 17 + CU_JIT_GLOBAL_SYMBOL_ADDRESSES = 18 + CU_JIT_GLOBAL_SYMBOL_COUNT = 19 + CU_JIT_LTO = 20 + CU_JIT_FTZ = 21 + CU_JIT_PREC_DIV = 22 + CU_JIT_PREC_SQRT = 23 + CU_JIT_FMA = 24 + CU_JIT_REFERENCED_KERNEL_NAMES = 25 + CU_JIT_REFERENCED_KERNEL_COUNT = 26 + CU_JIT_REFERENCED_VARIABLE_NAMES = 27 + CU_JIT_REFERENCED_VARIABLE_COUNT = 28 + CU_JIT_OPTIMIZE_UNUSED_DEVICE_VARIABLES = 29 + CU_JIT_POSITION_INDEPENDENT_CODE = 30 + CU_JIT_MIN_CTA_PER_SM = 31 + CU_JIT_MAX_THREADS_PER_BLOCK = 32 + CU_JIT_OVERRIDE_DIRECTIVE_VALUES = 33 + CU_JIT_SPLIT_COMPILE = 34 + CU_JIT_BINARY_LOADER_THREAD_COUNT = 35 + CU_JIT_NUM_OPTIONS = 36 + + ctypedef CUjit_option_enum CUjit_option + + cdef enum CUjit_target_enum: + CU_TARGET_COMPUTE_30 = 30 + CU_TARGET_COMPUTE_32 = 32 + CU_TARGET_COMPUTE_35 = 35 + CU_TARGET_COMPUTE_37 = 37 + CU_TARGET_COMPUTE_50 = 50 + CU_TARGET_COMPUTE_52 = 52 + CU_TARGET_COMPUTE_53 = 53 + CU_TARGET_COMPUTE_60 = 60 + CU_TARGET_COMPUTE_61 = 61 + CU_TARGET_COMPUTE_62 = 62 + CU_TARGET_COMPUTE_70 = 70 + CU_TARGET_COMPUTE_72 = 72 + CU_TARGET_COMPUTE_75 = 75 + CU_TARGET_COMPUTE_80 = 80 + CU_TARGET_COMPUTE_86 = 86 + CU_TARGET_COMPUTE_87 = 87 + CU_TARGET_COMPUTE_89 = 89 + CU_TARGET_COMPUTE_90 = 90 + CU_TARGET_COMPUTE_100 = 100 + CU_TARGET_COMPUTE_103 = 103 + CU_TARGET_COMPUTE_110 = 110 + CU_TARGET_COMPUTE_120 = 120 + CU_TARGET_COMPUTE_121 = 121 + CU_TARGET_COMPUTE_90A = 65626 + CU_TARGET_COMPUTE_100A = 65636 + CU_TARGET_COMPUTE_103A = 65639 + CU_TARGET_COMPUTE_110A = 65646 + CU_TARGET_COMPUTE_120A = 65656 + CU_TARGET_COMPUTE_121A = 65657 + CU_TARGET_COMPUTE_100F = 131172 + CU_TARGET_COMPUTE_103F = 131175 + CU_TARGET_COMPUTE_110F = 131182 + CU_TARGET_COMPUTE_120F = 131192 + CU_TARGET_COMPUTE_121F = 131193 + + ctypedef CUjit_target_enum CUjit_target + + cdef enum CUjit_fallback_enum: + CU_PREFER_PTX = 0 + CU_PREFER_BINARY = 1 + + ctypedef CUjit_fallback_enum CUjit_fallback + + cdef enum CUjit_cacheMode_enum: + CU_JIT_CACHE_OPTION_NONE = 0 + CU_JIT_CACHE_OPTION_CG = 1 + CU_JIT_CACHE_OPTION_CA = 2 + + ctypedef CUjit_cacheMode_enum CUjit_cacheMode + + cdef enum CUjitInputType_enum: + CU_JIT_INPUT_CUBIN = 0 + CU_JIT_INPUT_PTX = 1 + CU_JIT_INPUT_FATBINARY = 2 + CU_JIT_INPUT_OBJECT = 3 + CU_JIT_INPUT_LIBRARY = 4 + CU_JIT_INPUT_NVVM = 5 + CU_JIT_NUM_INPUT_TYPES = 6 + + ctypedef CUjitInputType_enum CUjitInputType + + cdef struct CUlinkState_st: + pass + ctypedef CUlinkState_st* CUlinkState + + cdef enum CUgraphicsRegisterFlags_enum: + CU_GRAPHICS_REGISTER_FLAGS_NONE = 0 + CU_GRAPHICS_REGISTER_FLAGS_READ_ONLY = 1 + CU_GRAPHICS_REGISTER_FLAGS_WRITE_DISCARD = 2 + CU_GRAPHICS_REGISTER_FLAGS_SURFACE_LDST = 4 + CU_GRAPHICS_REGISTER_FLAGS_TEXTURE_GATHER = 8 + + ctypedef CUgraphicsRegisterFlags_enum CUgraphicsRegisterFlags + + cdef enum CUgraphicsMapResourceFlags_enum: + CU_GRAPHICS_MAP_RESOURCE_FLAGS_NONE = 0 + CU_GRAPHICS_MAP_RESOURCE_FLAGS_READ_ONLY = 1 + CU_GRAPHICS_MAP_RESOURCE_FLAGS_WRITE_DISCARD = 2 + + ctypedef CUgraphicsMapResourceFlags_enum CUgraphicsMapResourceFlags + + cdef enum CUarray_cubemap_face_enum: + CU_CUBEMAP_FACE_POSITIVE_X = 0 + CU_CUBEMAP_FACE_NEGATIVE_X = 1 + CU_CUBEMAP_FACE_POSITIVE_Y = 2 + CU_CUBEMAP_FACE_NEGATIVE_Y = 3 + CU_CUBEMAP_FACE_POSITIVE_Z = 4 + CU_CUBEMAP_FACE_NEGATIVE_Z = 5 + + ctypedef CUarray_cubemap_face_enum CUarray_cubemap_face + + cdef enum CUlimit_enum: + CU_LIMIT_STACK_SIZE = 0 + CU_LIMIT_PRINTF_FIFO_SIZE = 1 + CU_LIMIT_MALLOC_HEAP_SIZE = 2 + CU_LIMIT_DEV_RUNTIME_SYNC_DEPTH = 3 + CU_LIMIT_DEV_RUNTIME_PENDING_LAUNCH_COUNT = 4 + CU_LIMIT_MAX_L2_FETCH_GRANULARITY = 5 + CU_LIMIT_PERSISTING_L2_CACHE_SIZE = 6 + CU_LIMIT_SHMEM_SIZE = 7 + CU_LIMIT_CIG_ENABLED = 8 + CU_LIMIT_CIG_SHMEM_FALLBACK_ENABLED = 9 + CU_LIMIT_MAX = 10 + + ctypedef CUlimit_enum CUlimit + + cdef enum CUresourcetype_enum: + CU_RESOURCE_TYPE_ARRAY = 0 + CU_RESOURCE_TYPE_MIPMAPPED_ARRAY = 1 + CU_RESOURCE_TYPE_LINEAR = 2 + CU_RESOURCE_TYPE_PITCH2D = 3 + + ctypedef CUresourcetype_enum CUresourcetype + + ctypedef void (*CUhostFn)(void* userData) + + cdef enum CUaccessProperty_enum: + CU_ACCESS_PROPERTY_NORMAL = 0 + CU_ACCESS_PROPERTY_STREAMING = 1 + CU_ACCESS_PROPERTY_PERSISTING = 2 + + ctypedef CUaccessProperty_enum CUaccessProperty + + cdef struct CUaccessPolicyWindow_st: + void* base_ptr + size_t num_bytes + float hitRatio + CUaccessProperty hitProp + CUaccessProperty missProp + + ctypedef CUaccessPolicyWindow_st CUaccessPolicyWindow_v1 + + ctypedef CUaccessPolicyWindow_v1 CUaccessPolicyWindow + + cdef struct CUDA_KERNEL_NODE_PARAMS_st: + CUfunction func + unsigned int gridDimX + unsigned int gridDimY + unsigned int gridDimZ + unsigned int blockDimX + unsigned int blockDimY + unsigned int blockDimZ + unsigned int sharedMemBytes + void** kernelParams + void** extra + + ctypedef CUDA_KERNEL_NODE_PARAMS_st CUDA_KERNEL_NODE_PARAMS_v1 + + cdef struct CUDA_KERNEL_NODE_PARAMS_v2_st: + CUfunction func + unsigned int gridDimX + unsigned int gridDimY + unsigned int gridDimZ + unsigned int blockDimX + unsigned int blockDimY + unsigned int blockDimZ + unsigned int sharedMemBytes + void** kernelParams + void** extra + CUkernel kern + CUcontext ctx + + ctypedef CUDA_KERNEL_NODE_PARAMS_v2_st CUDA_KERNEL_NODE_PARAMS_v2 + + ctypedef CUDA_KERNEL_NODE_PARAMS_v2 CUDA_KERNEL_NODE_PARAMS + + cdef struct CUDA_KERNEL_NODE_PARAMS_v3_st: + CUfunction func + unsigned int gridDimX + unsigned int gridDimY + unsigned int gridDimZ + unsigned int blockDimX + unsigned int blockDimY + unsigned int blockDimZ + unsigned int sharedMemBytes + void** kernelParams + void** extra + CUkernel kern + CUcontext ctx + + ctypedef CUDA_KERNEL_NODE_PARAMS_v3_st CUDA_KERNEL_NODE_PARAMS_v3 + + cdef struct CUDA_MEMSET_NODE_PARAMS_st: + CUdeviceptr dst + size_t pitch + unsigned int value + unsigned int elementSize + size_t width + size_t height + + ctypedef CUDA_MEMSET_NODE_PARAMS_st CUDA_MEMSET_NODE_PARAMS_v1 + + ctypedef CUDA_MEMSET_NODE_PARAMS_v1 CUDA_MEMSET_NODE_PARAMS + + cdef struct CUDA_MEMSET_NODE_PARAMS_v2_st: + CUdeviceptr dst + size_t pitch + unsigned int value + unsigned int elementSize + size_t width + size_t height + CUcontext ctx + + ctypedef CUDA_MEMSET_NODE_PARAMS_v2_st CUDA_MEMSET_NODE_PARAMS_v2 + + cdef struct CUDA_HOST_NODE_PARAMS_st: + CUhostFn fn + void* userData + + ctypedef CUDA_HOST_NODE_PARAMS_st CUDA_HOST_NODE_PARAMS_v1 + + ctypedef CUDA_HOST_NODE_PARAMS_v1 CUDA_HOST_NODE_PARAMS + + cdef struct CUDA_HOST_NODE_PARAMS_v2_st: + CUhostFn fn + void* userData + unsigned int syncMode + + ctypedef CUDA_HOST_NODE_PARAMS_v2_st CUDA_HOST_NODE_PARAMS_v2 + + cdef enum CUgraphConditionalNodeType_enum: + CU_GRAPH_COND_TYPE_IF = 0 + CU_GRAPH_COND_TYPE_WHILE = 1 + CU_GRAPH_COND_TYPE_SWITCH = 2 + + ctypedef CUgraphConditionalNodeType_enum CUgraphConditionalNodeType + + cdef struct CUDA_CONDITIONAL_NODE_PARAMS: + CUgraphConditionalHandle handle + CUgraphConditionalNodeType type + unsigned int size + CUgraph* phGraph_out + CUcontext ctx + + cdef enum CUgraphNodeType_enum: + CU_GRAPH_NODE_TYPE_KERNEL = 0 + CU_GRAPH_NODE_TYPE_MEMCPY = 1 + CU_GRAPH_NODE_TYPE_MEMSET = 2 + CU_GRAPH_NODE_TYPE_HOST = 3 + CU_GRAPH_NODE_TYPE_GRAPH = 4 + CU_GRAPH_NODE_TYPE_EMPTY = 5 + CU_GRAPH_NODE_TYPE_WAIT_EVENT = 6 + CU_GRAPH_NODE_TYPE_EVENT_RECORD = 7 + CU_GRAPH_NODE_TYPE_EXT_SEMAS_SIGNAL = 8 + CU_GRAPH_NODE_TYPE_EXT_SEMAS_WAIT = 9 + CU_GRAPH_NODE_TYPE_MEM_ALLOC = 10 + CU_GRAPH_NODE_TYPE_MEM_FREE = 11 + CU_GRAPH_NODE_TYPE_BATCH_MEM_OP = 12 + CU_GRAPH_NODE_TYPE_CONDITIONAL = 13 + CU_GRAPH_NODE_TYPE_RESERVED_16 = 16 + + ctypedef CUgraphNodeType_enum CUgraphNodeType + + cdef enum CUgraphDependencyType_enum: + CU_GRAPH_DEPENDENCY_TYPE_DEFAULT = 0 + CU_GRAPH_DEPENDENCY_TYPE_PROGRAMMATIC = 1 + + ctypedef CUgraphDependencyType_enum CUgraphDependencyType + + cdef struct CUgraphEdgeData_st: + unsigned char from_port + unsigned char to_port + unsigned char type + unsigned char reserved[5] + + ctypedef CUgraphEdgeData_st CUgraphEdgeData + + cdef enum CUgraphInstantiateResult_enum: + CUDA_GRAPH_INSTANTIATE_SUCCESS = 0 + CUDA_GRAPH_INSTANTIATE_ERROR = 1 + CUDA_GRAPH_INSTANTIATE_INVALID_STRUCTURE = 2 + CUDA_GRAPH_INSTANTIATE_NODE_OPERATION_NOT_SUPPORTED = 3 + CUDA_GRAPH_INSTANTIATE_MULTIPLE_CTXS_NOT_SUPPORTED = 4 + CUDA_GRAPH_INSTANTIATE_CONDITIONAL_HANDLE_UNUSED = 5 + + ctypedef CUgraphInstantiateResult_enum CUgraphInstantiateResult + + cdef struct CUDA_GRAPH_INSTANTIATE_PARAMS_st: + cuuint64_t flags + CUstream hUploadStream + CUgraphNode hErrNode_out + CUgraphInstantiateResult result_out + + ctypedef CUDA_GRAPH_INSTANTIATE_PARAMS_st CUDA_GRAPH_INSTANTIATE_PARAMS + + cdef enum CUsynchronizationPolicy_enum: + CU_SYNC_POLICY_AUTO = 1 + CU_SYNC_POLICY_SPIN = 2 + CU_SYNC_POLICY_YIELD = 3 + CU_SYNC_POLICY_BLOCKING_SYNC = 4 + + ctypedef CUsynchronizationPolicy_enum CUsynchronizationPolicy + + cdef enum CUclusterSchedulingPolicy_enum: + CU_CLUSTER_SCHEDULING_POLICY_DEFAULT = 0 + CU_CLUSTER_SCHEDULING_POLICY_SPREAD = 1 + CU_CLUSTER_SCHEDULING_POLICY_LOAD_BALANCING = 2 + + ctypedef CUclusterSchedulingPolicy_enum CUclusterSchedulingPolicy + + cdef enum CUlaunchMemSyncDomain_enum: + CU_LAUNCH_MEM_SYNC_DOMAIN_DEFAULT = 0 + CU_LAUNCH_MEM_SYNC_DOMAIN_REMOTE = 1 + + ctypedef CUlaunchMemSyncDomain_enum CUlaunchMemSyncDomain + + cdef struct CUlaunchMemSyncDomainMap_st: + unsigned char default_ + unsigned char remote + + ctypedef CUlaunchMemSyncDomainMap_st CUlaunchMemSyncDomainMap + + cdef enum CUlaunchAttributePortableClusterMode_enum: + CU_LAUNCH_PORTABLE_CLUSTER_MODE_DEFAULT = 0 + CU_LAUNCH_PORTABLE_CLUSTER_MODE_REQUIRE_PORTABLE = 1 + CU_LAUNCH_PORTABLE_CLUSTER_MODE_ALLOW_NON_PORTABLE = 2 + + ctypedef CUlaunchAttributePortableClusterMode_enum CUlaunchAttributePortableClusterMode + + cdef enum CUsharedMemoryMode_enum: + CU_SHARED_MEMORY_MODE_DEFAULT = 0 + CU_SHARED_MEMORY_MODE_REQUIRE_PORTABLE = 1 + CU_SHARED_MEMORY_MODE_ALLOW_NON_PORTABLE = 2 + + ctypedef CUsharedMemoryMode_enum CUsharedMemoryMode + + cdef enum CUlaunchAttributeID_enum: + CU_LAUNCH_ATTRIBUTE_IGNORE = 0 + CU_LAUNCH_ATTRIBUTE_ACCESS_POLICY_WINDOW = 1 + CU_LAUNCH_ATTRIBUTE_COOPERATIVE = 2 + CU_LAUNCH_ATTRIBUTE_SYNCHRONIZATION_POLICY = 3 + CU_LAUNCH_ATTRIBUTE_CLUSTER_DIMENSION = 4 + CU_LAUNCH_ATTRIBUTE_CLUSTER_SCHEDULING_POLICY_PREFERENCE = 5 + CU_LAUNCH_ATTRIBUTE_PROGRAMMATIC_STREAM_SERIALIZATION = 6 + CU_LAUNCH_ATTRIBUTE_PROGRAMMATIC_EVENT = 7 + CU_LAUNCH_ATTRIBUTE_PRIORITY = 8 + CU_LAUNCH_ATTRIBUTE_MEM_SYNC_DOMAIN_MAP = 9 + CU_LAUNCH_ATTRIBUTE_MEM_SYNC_DOMAIN = 10 + CU_LAUNCH_ATTRIBUTE_PREFERRED_CLUSTER_DIMENSION = 11 + CU_LAUNCH_ATTRIBUTE_LAUNCH_COMPLETION_EVENT = 12 + CU_LAUNCH_ATTRIBUTE_DEVICE_UPDATABLE_KERNEL_NODE = 13 + CU_LAUNCH_ATTRIBUTE_PREFERRED_SHARED_MEMORY_CARVEOUT = 14 + CU_LAUNCH_ATTRIBUTE_NVLINK_UTIL_CENTRIC_SCHEDULING = 16 + CU_LAUNCH_ATTRIBUTE_PORTABLE_CLUSTER_SIZE_MODE = 17 + CU_LAUNCH_ATTRIBUTE_SHARED_MEMORY_MODE = 18 + + ctypedef CUlaunchAttributeID_enum CUlaunchAttributeID + + cdef struct anon_struct1: + unsigned int x + unsigned int y + unsigned int z + + cdef struct anon_struct2: + CUevent event + int flags + int triggerAtBlockStart + + cdef struct anon_struct3: + CUevent event + int flags + + cdef struct anon_struct4: + unsigned int x + unsigned int y + unsigned int z + + cdef struct anon_struct5: + int deviceUpdatable + CUgraphDeviceNode devNode + + cdef union CUlaunchAttributeValue_union: + char pad[64] + CUaccessPolicyWindow accessPolicyWindow + int cooperative + CUsynchronizationPolicy syncPolicy + anon_struct1 clusterDim + CUclusterSchedulingPolicy clusterSchedulingPolicyPreference + int programmaticStreamSerializationAllowed + anon_struct2 programmaticEvent + anon_struct3 launchCompletionEvent + int priority + CUlaunchMemSyncDomainMap memSyncDomainMap + CUlaunchMemSyncDomain memSyncDomain + anon_struct4 preferredClusterDim + anon_struct5 deviceUpdatableKernelNode + unsigned int sharedMemCarveout + unsigned int nvlinkUtilCentricScheduling + CUlaunchAttributePortableClusterMode portableClusterSizeMode + CUsharedMemoryMode sharedMemoryMode + + ctypedef CUlaunchAttributeValue_union CUlaunchAttributeValue + + cdef struct CUlaunchAttribute_st: + CUlaunchAttributeID id + CUlaunchAttributeValue value + + ctypedef CUlaunchAttribute_st CUlaunchAttribute + + cdef struct CUlaunchConfig_st: + unsigned int gridDimX + unsigned int gridDimY + unsigned int gridDimZ + unsigned int blockDimX + unsigned int blockDimY + unsigned int blockDimZ + unsigned int sharedMemBytes + CUstream hStream + CUlaunchAttribute* attrs + unsigned int numAttrs + + ctypedef CUlaunchConfig_st CUlaunchConfig + + ctypedef CUlaunchAttributeID CUkernelNodeAttrID + + ctypedef CUlaunchAttributeValue CUkernelNodeAttrValue_v1 + + ctypedef CUkernelNodeAttrValue_v1 CUkernelNodeAttrValue + + cdef enum CUstreamCaptureStatus_enum: + CU_STREAM_CAPTURE_STATUS_NONE = 0 + CU_STREAM_CAPTURE_STATUS_ACTIVE = 1 + CU_STREAM_CAPTURE_STATUS_INVALIDATED = 2 + + ctypedef CUstreamCaptureStatus_enum CUstreamCaptureStatus + + cdef enum CUstreamCaptureMode_enum: + CU_STREAM_CAPTURE_MODE_GLOBAL = 0 + CU_STREAM_CAPTURE_MODE_THREAD_LOCAL = 1 + CU_STREAM_CAPTURE_MODE_RELAXED = 2 + + ctypedef CUstreamCaptureMode_enum CUstreamCaptureMode + + ctypedef CUlaunchAttributeID CUstreamAttrID + + ctypedef CUlaunchAttributeValue CUstreamAttrValue_v1 + + ctypedef CUstreamAttrValue_v1 CUstreamAttrValue + + cdef enum CUdriverProcAddress_flags_enum: + CU_GET_PROC_ADDRESS_DEFAULT = 0 + CU_GET_PROC_ADDRESS_LEGACY_STREAM = 1 + CU_GET_PROC_ADDRESS_PER_THREAD_DEFAULT_STREAM = 2 + + ctypedef CUdriverProcAddress_flags_enum CUdriverProcAddress_flags + + cdef enum CUdriverProcAddressQueryResult_enum: + CU_GET_PROC_ADDRESS_SUCCESS = 0 + CU_GET_PROC_ADDRESS_SYMBOL_NOT_FOUND = 1 + CU_GET_PROC_ADDRESS_VERSION_NOT_SUFFICIENT = 2 + + ctypedef CUdriverProcAddressQueryResult_enum CUdriverProcAddressQueryResult + + cdef enum CUexecAffinityType_enum: + CU_EXEC_AFFINITY_TYPE_SM_COUNT = 0 + CU_EXEC_AFFINITY_TYPE_MAX = 1 + + ctypedef CUexecAffinityType_enum CUexecAffinityType + + cdef struct CUexecAffinitySmCount_st: + unsigned int val + + ctypedef CUexecAffinitySmCount_st CUexecAffinitySmCount_v1 + + ctypedef CUexecAffinitySmCount_v1 CUexecAffinitySmCount + + cdef union anon_union3: + CUexecAffinitySmCount smCount + + cdef struct CUexecAffinityParam_st: + CUexecAffinityType type + anon_union3 param + + ctypedef CUexecAffinityParam_st CUexecAffinityParam_v1 + + ctypedef CUexecAffinityParam_v1 CUexecAffinityParam + + cdef enum CUcigDataType_enum: + CIG_DATA_TYPE_D3D12_COMMAND_QUEUE = 1 + CIG_DATA_TYPE_NV_BLOB = 2 + + ctypedef CUcigDataType_enum CUcigDataType + + cdef struct CUctxCigParam_st: + CUcigDataType sharedDataType + void* sharedData + + ctypedef CUctxCigParam_st CUctxCigParam + + cdef struct CUctxCreateParams_st: + CUexecAffinityParam* execAffinityParams + int numExecAffinityParams + CUctxCigParam* cigParams + + ctypedef CUctxCreateParams_st CUctxCreateParams + + cdef enum CUstreamCigDataType_enum: + STREAM_CIG_DATA_TYPE_D3D12_COMMAND_LIST = 1 + + ctypedef CUstreamCigDataType_enum CUstreamCigDataType + + cdef struct CUstreamCigParam_st: + CUstreamCigDataType streamSharedDataType + void* streamSharedData + + ctypedef CUstreamCigParam_st CUstreamCigParam + + cdef struct CUstreamCigCaptureParams_st: + CUstreamCigParam* streamCigParams + + ctypedef CUstreamCigCaptureParams_st CUstreamCigCaptureParams + + cdef enum CUlibraryOption_enum: + CU_LIBRARY_HOST_UNIVERSAL_FUNCTION_AND_DATA_TABLE = 0 + CU_LIBRARY_BINARY_IS_PRESERVED = 1 + CU_LIBRARY_NUM_OPTIONS = 2 + + ctypedef CUlibraryOption_enum CUlibraryOption + + cdef struct CUlibraryHostUniversalFunctionAndDataTable_st: + void* functionTable + size_t functionWindowSize + void* dataTable + size_t dataWindowSize + + ctypedef CUlibraryHostUniversalFunctionAndDataTable_st CUlibraryHostUniversalFunctionAndDataTable + + cdef enum cudaError_enum: + CUDA_SUCCESS = 0 + CUDA_ERROR_INVALID_VALUE = 1 + CUDA_ERROR_OUT_OF_MEMORY = 2 + CUDA_ERROR_NOT_INITIALIZED = 3 + CUDA_ERROR_DEINITIALIZED = 4 + CUDA_ERROR_PROFILER_DISABLED = 5 + CUDA_ERROR_PROFILER_NOT_INITIALIZED = 6 + CUDA_ERROR_PROFILER_ALREADY_STARTED = 7 + CUDA_ERROR_PROFILER_ALREADY_STOPPED = 8 + CUDA_ERROR_STUB_LIBRARY = 34 + CUDA_ERROR_CALL_REQUIRES_NEWER_DRIVER = 36 + CUDA_ERROR_DEVICE_UNAVAILABLE = 46 + CUDA_ERROR_NO_DEVICE = 100 + CUDA_ERROR_INVALID_DEVICE = 101 + CUDA_ERROR_DEVICE_NOT_LICENSED = 102 + CUDA_ERROR_INVALID_IMAGE = 200 + CUDA_ERROR_INVALID_CONTEXT = 201 + CUDA_ERROR_CONTEXT_ALREADY_CURRENT = 202 + CUDA_ERROR_MAP_FAILED = 205 + CUDA_ERROR_UNMAP_FAILED = 206 + CUDA_ERROR_ARRAY_IS_MAPPED = 207 + CUDA_ERROR_ALREADY_MAPPED = 208 + CUDA_ERROR_NO_BINARY_FOR_GPU = 209 + CUDA_ERROR_ALREADY_ACQUIRED = 210 + CUDA_ERROR_NOT_MAPPED = 211 + CUDA_ERROR_NOT_MAPPED_AS_ARRAY = 212 + CUDA_ERROR_NOT_MAPPED_AS_POINTER = 213 + CUDA_ERROR_ECC_UNCORRECTABLE = 214 + CUDA_ERROR_UNSUPPORTED_LIMIT = 215 + CUDA_ERROR_CONTEXT_ALREADY_IN_USE = 216 + CUDA_ERROR_PEER_ACCESS_UNSUPPORTED = 217 + CUDA_ERROR_INVALID_PTX = 218 + CUDA_ERROR_INVALID_GRAPHICS_CONTEXT = 219 + CUDA_ERROR_NVLINK_UNCORRECTABLE = 220 + CUDA_ERROR_JIT_COMPILER_NOT_FOUND = 221 + CUDA_ERROR_UNSUPPORTED_PTX_VERSION = 222 + CUDA_ERROR_JIT_COMPILATION_DISABLED = 223 + CUDA_ERROR_UNSUPPORTED_EXEC_AFFINITY = 224 + CUDA_ERROR_UNSUPPORTED_DEVSIDE_SYNC = 225 + CUDA_ERROR_CONTAINED = 226 + CUDA_ERROR_INVALID_SOURCE = 300 + CUDA_ERROR_FILE_NOT_FOUND = 301 + CUDA_ERROR_SHARED_OBJECT_SYMBOL_NOT_FOUND = 302 + CUDA_ERROR_SHARED_OBJECT_INIT_FAILED = 303 + CUDA_ERROR_OPERATING_SYSTEM = 304 + CUDA_ERROR_INVALID_HANDLE = 400 + CUDA_ERROR_ILLEGAL_STATE = 401 + CUDA_ERROR_LOSSY_QUERY = 402 + CUDA_ERROR_NOT_FOUND = 500 + CUDA_ERROR_NOT_READY = 600 + CUDA_ERROR_ILLEGAL_ADDRESS = 700 + CUDA_ERROR_LAUNCH_OUT_OF_RESOURCES = 701 + CUDA_ERROR_LAUNCH_TIMEOUT = 702 + CUDA_ERROR_LAUNCH_INCOMPATIBLE_TEXTURING = 703 + CUDA_ERROR_PEER_ACCESS_ALREADY_ENABLED = 704 + CUDA_ERROR_PEER_ACCESS_NOT_ENABLED = 705 + CUDA_ERROR_PRIMARY_CONTEXT_ACTIVE = 708 + CUDA_ERROR_CONTEXT_IS_DESTROYED = 709 + CUDA_ERROR_ASSERT = 710 + CUDA_ERROR_TOO_MANY_PEERS = 711 + CUDA_ERROR_HOST_MEMORY_ALREADY_REGISTERED = 712 + CUDA_ERROR_HOST_MEMORY_NOT_REGISTERED = 713 + CUDA_ERROR_HARDWARE_STACK_ERROR = 714 + CUDA_ERROR_ILLEGAL_INSTRUCTION = 715 + CUDA_ERROR_MISALIGNED_ADDRESS = 716 + CUDA_ERROR_INVALID_ADDRESS_SPACE = 717 + CUDA_ERROR_INVALID_PC = 718 + CUDA_ERROR_LAUNCH_FAILED = 719 + CUDA_ERROR_COOPERATIVE_LAUNCH_TOO_LARGE = 720 + CUDA_ERROR_TENSOR_MEMORY_LEAK = 721 + CUDA_ERROR_NOT_PERMITTED = 800 + CUDA_ERROR_NOT_SUPPORTED = 801 + CUDA_ERROR_SYSTEM_NOT_READY = 802 + CUDA_ERROR_SYSTEM_DRIVER_MISMATCH = 803 + CUDA_ERROR_COMPAT_NOT_SUPPORTED_ON_DEVICE = 804 + CUDA_ERROR_MPS_CONNECTION_FAILED = 805 + CUDA_ERROR_MPS_RPC_FAILURE = 806 + CUDA_ERROR_MPS_SERVER_NOT_READY = 807 + CUDA_ERROR_MPS_MAX_CLIENTS_REACHED = 808 + CUDA_ERROR_MPS_MAX_CONNECTIONS_REACHED = 809 + CUDA_ERROR_MPS_CLIENT_TERMINATED = 810 + CUDA_ERROR_CDP_NOT_SUPPORTED = 811 + CUDA_ERROR_CDP_VERSION_MISMATCH = 812 + CUDA_ERROR_STREAM_CAPTURE_UNSUPPORTED = 900 + CUDA_ERROR_STREAM_CAPTURE_INVALIDATED = 901 + CUDA_ERROR_STREAM_CAPTURE_MERGE = 902 + CUDA_ERROR_STREAM_CAPTURE_UNMATCHED = 903 + CUDA_ERROR_STREAM_CAPTURE_UNJOINED = 904 + CUDA_ERROR_STREAM_CAPTURE_ISOLATION = 905 + CUDA_ERROR_STREAM_CAPTURE_IMPLICIT = 906 + CUDA_ERROR_CAPTURED_EVENT = 907 + CUDA_ERROR_STREAM_CAPTURE_WRONG_THREAD = 908 + CUDA_ERROR_TIMEOUT = 909 + CUDA_ERROR_GRAPH_EXEC_UPDATE_FAILURE = 910 + CUDA_ERROR_EXTERNAL_DEVICE = 911 + CUDA_ERROR_INVALID_CLUSTER_SIZE = 912 + CUDA_ERROR_FUNCTION_NOT_LOADED = 913 + CUDA_ERROR_INVALID_RESOURCE_TYPE = 914 + CUDA_ERROR_INVALID_RESOURCE_CONFIGURATION = 915 + CUDA_ERROR_KEY_ROTATION = 916 + CUDA_ERROR_STREAM_DETACHED = 917 + CUDA_ERROR_GRAPH_RECAPTURE_FAILURE = 918 + CUDA_ERROR_UNKNOWN = 999 + + ctypedef cudaError_enum CUresult + + cdef enum CUdevice_P2PAttribute_enum: + CU_DEVICE_P2P_ATTRIBUTE_PERFORMANCE_RANK = 1 + CU_DEVICE_P2P_ATTRIBUTE_ACCESS_SUPPORTED = 2 + CU_DEVICE_P2P_ATTRIBUTE_NATIVE_ATOMIC_SUPPORTED = 3 + CU_DEVICE_P2P_ATTRIBUTE_ACCESS_ACCESS_SUPPORTED = 4 + CU_DEVICE_P2P_ATTRIBUTE_CUDA_ARRAY_ACCESS_SUPPORTED = 4 + CU_DEVICE_P2P_ATTRIBUTE_ONLY_PARTIAL_NATIVE_ATOMIC_SUPPORTED = 5 + + ctypedef CUdevice_P2PAttribute_enum CUdevice_P2PAttribute + + ctypedef void (*CUstreamCallback)(CUstream hStream, CUresult status, void* userData) + + ctypedef size_t (*CUoccupancyB2DSize)(int blockSize) + + cdef struct CUDA_MEMCPY2D_st: + size_t srcXInBytes + size_t srcY + CUmemorytype srcMemoryType + const void* srcHost + CUdeviceptr srcDevice + CUarray srcArray + size_t srcPitch + size_t dstXInBytes + size_t dstY + CUmemorytype dstMemoryType + void* dstHost + CUdeviceptr dstDevice + CUarray dstArray + size_t dstPitch + size_t WidthInBytes + size_t Height + + ctypedef CUDA_MEMCPY2D_st CUDA_MEMCPY2D_v2 + + ctypedef CUDA_MEMCPY2D_v2 CUDA_MEMCPY2D + + cdef struct CUDA_MEMCPY3D_st: + size_t srcXInBytes + size_t srcY + size_t srcZ + size_t srcLOD + CUmemorytype srcMemoryType + const void* srcHost + CUdeviceptr srcDevice + CUarray srcArray + void* reserved0 + size_t srcPitch + size_t srcHeight + size_t dstXInBytes + size_t dstY + size_t dstZ + size_t dstLOD + CUmemorytype dstMemoryType + void* dstHost + CUdeviceptr dstDevice + CUarray dstArray + void* reserved1 + size_t dstPitch + size_t dstHeight + size_t WidthInBytes + size_t Height + size_t Depth + + ctypedef CUDA_MEMCPY3D_st CUDA_MEMCPY3D_v2 + + ctypedef CUDA_MEMCPY3D_v2 CUDA_MEMCPY3D + + cdef struct CUDA_MEMCPY3D_PEER_st: + size_t srcXInBytes + size_t srcY + size_t srcZ + size_t srcLOD + CUmemorytype srcMemoryType + const void* srcHost + CUdeviceptr srcDevice + CUarray srcArray + CUcontext srcContext + size_t srcPitch + size_t srcHeight + size_t dstXInBytes + size_t dstY + size_t dstZ + size_t dstLOD + CUmemorytype dstMemoryType + void* dstHost + CUdeviceptr dstDevice + CUarray dstArray + CUcontext dstContext + size_t dstPitch + size_t dstHeight + size_t WidthInBytes + size_t Height + size_t Depth + + ctypedef CUDA_MEMCPY3D_PEER_st CUDA_MEMCPY3D_PEER_v1 + + ctypedef CUDA_MEMCPY3D_PEER_v1 CUDA_MEMCPY3D_PEER + + cdef struct CUDA_MEMCPY_NODE_PARAMS_st: + int flags + int reserved + CUcontext copyCtx + CUDA_MEMCPY3D copyParams + + ctypedef CUDA_MEMCPY_NODE_PARAMS_st CUDA_MEMCPY_NODE_PARAMS + + cdef struct CUDA_ARRAY_DESCRIPTOR_st: + size_t Width + size_t Height + CUarray_format Format + unsigned int NumChannels + + ctypedef CUDA_ARRAY_DESCRIPTOR_st CUDA_ARRAY_DESCRIPTOR_v2 + + ctypedef CUDA_ARRAY_DESCRIPTOR_v2 CUDA_ARRAY_DESCRIPTOR + + cdef struct CUDA_ARRAY3D_DESCRIPTOR_st: + size_t Width + size_t Height + size_t Depth + CUarray_format Format + unsigned int NumChannels + unsigned int Flags + + ctypedef CUDA_ARRAY3D_DESCRIPTOR_st CUDA_ARRAY3D_DESCRIPTOR_v2 + + ctypedef CUDA_ARRAY3D_DESCRIPTOR_v2 CUDA_ARRAY3D_DESCRIPTOR + + cdef struct anon_struct6: + unsigned int width + unsigned int height + unsigned int depth + + cdef struct CUDA_ARRAY_SPARSE_PROPERTIES_st: + anon_struct6 tileExtent + unsigned int miptailFirstLevel + unsigned long long miptailSize + unsigned int flags + unsigned int reserved[4] + + ctypedef CUDA_ARRAY_SPARSE_PROPERTIES_st CUDA_ARRAY_SPARSE_PROPERTIES_v1 + + ctypedef CUDA_ARRAY_SPARSE_PROPERTIES_v1 CUDA_ARRAY_SPARSE_PROPERTIES + + cdef struct CUDA_ARRAY_MEMORY_REQUIREMENTS_st: + size_t size + size_t alignment + unsigned int reserved[4] + + ctypedef CUDA_ARRAY_MEMORY_REQUIREMENTS_st CUDA_ARRAY_MEMORY_REQUIREMENTS_v1 + + ctypedef CUDA_ARRAY_MEMORY_REQUIREMENTS_v1 CUDA_ARRAY_MEMORY_REQUIREMENTS + + cdef struct anon_struct7: + CUarray hArray + + cdef struct anon_struct8: + CUmipmappedArray hMipmappedArray + + cdef struct anon_struct9: + CUdeviceptr devPtr + CUarray_format format + unsigned int numChannels + size_t sizeInBytes + + cdef struct anon_struct10: + CUdeviceptr devPtr + CUarray_format format + unsigned int numChannels + size_t width + size_t height + size_t pitchInBytes + + cdef struct anon_struct11: + int reserved[32] + + cdef union anon_union4: + anon_struct7 array + anon_struct8 mipmap + anon_struct9 linear + anon_struct10 pitch2D + anon_struct11 reserved + + cdef struct CUDA_RESOURCE_DESC_st: + CUresourcetype resType + anon_union4 res + unsigned int flags + + ctypedef CUDA_RESOURCE_DESC_st CUDA_RESOURCE_DESC_v1 + + ctypedef CUDA_RESOURCE_DESC_v1 CUDA_RESOURCE_DESC + + cdef struct CUDA_TEXTURE_DESC_st: + CUaddress_mode addressMode[3] + CUfilter_mode filterMode + unsigned int flags + unsigned int maxAnisotropy + CUfilter_mode mipmapFilterMode + float mipmapLevelBias + float minMipmapLevelClamp + float maxMipmapLevelClamp + float borderColor[4] + int reserved[12] + + ctypedef CUDA_TEXTURE_DESC_st CUDA_TEXTURE_DESC_v1 + + ctypedef CUDA_TEXTURE_DESC_v1 CUDA_TEXTURE_DESC + + cdef enum CUresourceViewFormat_enum: + CU_RES_VIEW_FORMAT_NONE = 0 + CU_RES_VIEW_FORMAT_UINT_1X8 = 1 + CU_RES_VIEW_FORMAT_UINT_2X8 = 2 + CU_RES_VIEW_FORMAT_UINT_4X8 = 3 + CU_RES_VIEW_FORMAT_SINT_1X8 = 4 + CU_RES_VIEW_FORMAT_SINT_2X8 = 5 + CU_RES_VIEW_FORMAT_SINT_4X8 = 6 + CU_RES_VIEW_FORMAT_UINT_1X16 = 7 + CU_RES_VIEW_FORMAT_UINT_2X16 = 8 + CU_RES_VIEW_FORMAT_UINT_4X16 = 9 + CU_RES_VIEW_FORMAT_SINT_1X16 = 10 + CU_RES_VIEW_FORMAT_SINT_2X16 = 11 + CU_RES_VIEW_FORMAT_SINT_4X16 = 12 + CU_RES_VIEW_FORMAT_UINT_1X32 = 13 + CU_RES_VIEW_FORMAT_UINT_2X32 = 14 + CU_RES_VIEW_FORMAT_UINT_4X32 = 15 + CU_RES_VIEW_FORMAT_SINT_1X32 = 16 + CU_RES_VIEW_FORMAT_SINT_2X32 = 17 + CU_RES_VIEW_FORMAT_SINT_4X32 = 18 + CU_RES_VIEW_FORMAT_FLOAT_1X16 = 19 + CU_RES_VIEW_FORMAT_FLOAT_2X16 = 20 + CU_RES_VIEW_FORMAT_FLOAT_4X16 = 21 + CU_RES_VIEW_FORMAT_FLOAT_1X32 = 22 + CU_RES_VIEW_FORMAT_FLOAT_2X32 = 23 + CU_RES_VIEW_FORMAT_FLOAT_4X32 = 24 + CU_RES_VIEW_FORMAT_UNSIGNED_BC1 = 25 + CU_RES_VIEW_FORMAT_UNSIGNED_BC2 = 26 + CU_RES_VIEW_FORMAT_UNSIGNED_BC3 = 27 + CU_RES_VIEW_FORMAT_UNSIGNED_BC4 = 28 + CU_RES_VIEW_FORMAT_SIGNED_BC4 = 29 + CU_RES_VIEW_FORMAT_UNSIGNED_BC5 = 30 + CU_RES_VIEW_FORMAT_SIGNED_BC5 = 31 + CU_RES_VIEW_FORMAT_UNSIGNED_BC6H = 32 + CU_RES_VIEW_FORMAT_SIGNED_BC6H = 33 + CU_RES_VIEW_FORMAT_UNSIGNED_BC7 = 34 + + ctypedef CUresourceViewFormat_enum CUresourceViewFormat + + cdef struct CUDA_RESOURCE_VIEW_DESC_st: + CUresourceViewFormat format + size_t width + size_t height + size_t depth + unsigned int firstMipmapLevel + unsigned int lastMipmapLevel + unsigned int firstLayer + unsigned int lastLayer + unsigned int reserved[16] + + ctypedef CUDA_RESOURCE_VIEW_DESC_st CUDA_RESOURCE_VIEW_DESC_v1 + + ctypedef CUDA_RESOURCE_VIEW_DESC_v1 CUDA_RESOURCE_VIEW_DESC + + cdef struct CUtensorMap_st: + cuuint64_t opaque[16] + + ctypedef CUtensorMap_st CUtensorMap + + cdef enum CUtensorMapDataType_enum: + CU_TENSOR_MAP_DATA_TYPE_UINT8 = 0 + CU_TENSOR_MAP_DATA_TYPE_UINT16 = 1 + CU_TENSOR_MAP_DATA_TYPE_UINT32 = 2 + CU_TENSOR_MAP_DATA_TYPE_INT32 = 3 + CU_TENSOR_MAP_DATA_TYPE_UINT64 = 4 + CU_TENSOR_MAP_DATA_TYPE_INT64 = 5 + CU_TENSOR_MAP_DATA_TYPE_FLOAT16 = 6 + CU_TENSOR_MAP_DATA_TYPE_FLOAT32 = 7 + CU_TENSOR_MAP_DATA_TYPE_FLOAT64 = 8 + CU_TENSOR_MAP_DATA_TYPE_BFLOAT16 = 9 + CU_TENSOR_MAP_DATA_TYPE_FLOAT32_FTZ = 10 + CU_TENSOR_MAP_DATA_TYPE_TFLOAT32 = 11 + CU_TENSOR_MAP_DATA_TYPE_TFLOAT32_FTZ = 12 + CU_TENSOR_MAP_DATA_TYPE_16U4_ALIGN8B = 13 + CU_TENSOR_MAP_DATA_TYPE_16U4_ALIGN16B = 14 + CU_TENSOR_MAP_DATA_TYPE_16U6_ALIGN16B = 15 + + ctypedef CUtensorMapDataType_enum CUtensorMapDataType + + cdef enum CUtensorMapInterleave_enum: + CU_TENSOR_MAP_INTERLEAVE_NONE = 0 + CU_TENSOR_MAP_INTERLEAVE_16B = 1 + CU_TENSOR_MAP_INTERLEAVE_32B = 2 + + ctypedef CUtensorMapInterleave_enum CUtensorMapInterleave + + cdef enum CUtensorMapSwizzle_enum: + CU_TENSOR_MAP_SWIZZLE_NONE = 0 + CU_TENSOR_MAP_SWIZZLE_32B = 1 + CU_TENSOR_MAP_SWIZZLE_64B = 2 + CU_TENSOR_MAP_SWIZZLE_128B = 3 + CU_TENSOR_MAP_SWIZZLE_128B_ATOM_32B = 4 + CU_TENSOR_MAP_SWIZZLE_128B_ATOM_32B_FLIP_8B = 5 + CU_TENSOR_MAP_SWIZZLE_128B_ATOM_64B = 6 + + ctypedef CUtensorMapSwizzle_enum CUtensorMapSwizzle + + cdef enum CUtensorMapL2promotion_enum: + CU_TENSOR_MAP_L2_PROMOTION_NONE = 0 + CU_TENSOR_MAP_L2_PROMOTION_L2_64B = 1 + CU_TENSOR_MAP_L2_PROMOTION_L2_128B = 2 + CU_TENSOR_MAP_L2_PROMOTION_L2_256B = 3 + + ctypedef CUtensorMapL2promotion_enum CUtensorMapL2promotion + + cdef enum CUtensorMapFloatOOBfill_enum: + CU_TENSOR_MAP_FLOAT_OOB_FILL_NONE = 0 + CU_TENSOR_MAP_FLOAT_OOB_FILL_NAN_REQUEST_ZERO_FMA = 1 + + ctypedef CUtensorMapFloatOOBfill_enum CUtensorMapFloatOOBfill + + cdef enum CUtensorMapIm2ColWideMode_enum: + CU_TENSOR_MAP_IM2COL_WIDE_MODE_W = 0 + CU_TENSOR_MAP_IM2COL_WIDE_MODE_W128 = 1 + + ctypedef CUtensorMapIm2ColWideMode_enum CUtensorMapIm2ColWideMode + + cdef struct CUDA_POINTER_ATTRIBUTE_P2P_TOKENS_st: + unsigned long long p2pToken + unsigned int vaSpaceToken + + ctypedef CUDA_POINTER_ATTRIBUTE_P2P_TOKENS_st CUDA_POINTER_ATTRIBUTE_P2P_TOKENS_v1 + + ctypedef CUDA_POINTER_ATTRIBUTE_P2P_TOKENS_v1 CUDA_POINTER_ATTRIBUTE_P2P_TOKENS + + cdef enum CUDA_POINTER_ATTRIBUTE_ACCESS_FLAGS_enum: + CU_POINTER_ATTRIBUTE_ACCESS_FLAG_NONE = 0 + CU_POINTER_ATTRIBUTE_ACCESS_FLAG_READ = 1 + CU_POINTER_ATTRIBUTE_ACCESS_FLAG_READWRITE = 3 + + ctypedef CUDA_POINTER_ATTRIBUTE_ACCESS_FLAGS_enum CUDA_POINTER_ATTRIBUTE_ACCESS_FLAGS + + cdef struct CUDA_LAUNCH_PARAMS_st: + CUfunction function + unsigned int gridDimX + unsigned int gridDimY + unsigned int gridDimZ + unsigned int blockDimX + unsigned int blockDimY + unsigned int blockDimZ + unsigned int sharedMemBytes + CUstream hStream + void** kernelParams + + ctypedef CUDA_LAUNCH_PARAMS_st CUDA_LAUNCH_PARAMS_v1 + + ctypedef CUDA_LAUNCH_PARAMS_v1 CUDA_LAUNCH_PARAMS + + cdef enum CUexternalMemoryHandleType_enum: + CU_EXTERNAL_MEMORY_HANDLE_TYPE_OPAQUE_FD = 1 + CU_EXTERNAL_MEMORY_HANDLE_TYPE_OPAQUE_WIN32 = 2 + CU_EXTERNAL_MEMORY_HANDLE_TYPE_OPAQUE_WIN32_KMT = 3 + CU_EXTERNAL_MEMORY_HANDLE_TYPE_D3D12_HEAP = 4 + CU_EXTERNAL_MEMORY_HANDLE_TYPE_D3D12_RESOURCE = 5 + CU_EXTERNAL_MEMORY_HANDLE_TYPE_D3D11_RESOURCE = 6 + CU_EXTERNAL_MEMORY_HANDLE_TYPE_D3D11_RESOURCE_KMT = 7 + CU_EXTERNAL_MEMORY_HANDLE_TYPE_NVSCIBUF = 8 + CU_EXTERNAL_MEMORY_HANDLE_TYPE_DMABUF_FD = 9 + + ctypedef CUexternalMemoryHandleType_enum CUexternalMemoryHandleType + + cdef struct anon_struct12: + void* handle + const void* name + + cdef union anon_union5: + int fd + anon_struct12 win32 + const void* nvSciBufObject + + cdef struct CUDA_EXTERNAL_MEMORY_HANDLE_DESC_st: + CUexternalMemoryHandleType type + anon_union5 handle + unsigned long long size + unsigned int flags + unsigned int reserved[16] + + ctypedef CUDA_EXTERNAL_MEMORY_HANDLE_DESC_st CUDA_EXTERNAL_MEMORY_HANDLE_DESC_v1 + + ctypedef CUDA_EXTERNAL_MEMORY_HANDLE_DESC_v1 CUDA_EXTERNAL_MEMORY_HANDLE_DESC + + cdef struct CUDA_EXTERNAL_MEMORY_BUFFER_DESC_st: + unsigned long long offset + unsigned long long size + unsigned int flags + unsigned int reserved[16] + + ctypedef CUDA_EXTERNAL_MEMORY_BUFFER_DESC_st CUDA_EXTERNAL_MEMORY_BUFFER_DESC_v1 + + ctypedef CUDA_EXTERNAL_MEMORY_BUFFER_DESC_v1 CUDA_EXTERNAL_MEMORY_BUFFER_DESC + + cdef struct CUDA_EXTERNAL_MEMORY_MIPMAPPED_ARRAY_DESC_st: + unsigned long long offset + CUDA_ARRAY3D_DESCRIPTOR arrayDesc + unsigned int numLevels + unsigned int reserved[16] + + ctypedef CUDA_EXTERNAL_MEMORY_MIPMAPPED_ARRAY_DESC_st CUDA_EXTERNAL_MEMORY_MIPMAPPED_ARRAY_DESC_v1 + + ctypedef CUDA_EXTERNAL_MEMORY_MIPMAPPED_ARRAY_DESC_v1 CUDA_EXTERNAL_MEMORY_MIPMAPPED_ARRAY_DESC + + cdef enum CUexternalSemaphoreHandleType_enum: + CU_EXTERNAL_SEMAPHORE_HANDLE_TYPE_OPAQUE_FD = 1 + CU_EXTERNAL_SEMAPHORE_HANDLE_TYPE_OPAQUE_WIN32 = 2 + CU_EXTERNAL_SEMAPHORE_HANDLE_TYPE_OPAQUE_WIN32_KMT = 3 + CU_EXTERNAL_SEMAPHORE_HANDLE_TYPE_D3D12_FENCE = 4 + CU_EXTERNAL_SEMAPHORE_HANDLE_TYPE_D3D11_FENCE = 5 + CU_EXTERNAL_SEMAPHORE_HANDLE_TYPE_NVSCISYNC = 6 + CU_EXTERNAL_SEMAPHORE_HANDLE_TYPE_D3D11_KEYED_MUTEX = 7 + CU_EXTERNAL_SEMAPHORE_HANDLE_TYPE_D3D11_KEYED_MUTEX_KMT = 8 + CU_EXTERNAL_SEMAPHORE_HANDLE_TYPE_TIMELINE_SEMAPHORE_FD = 9 + CU_EXTERNAL_SEMAPHORE_HANDLE_TYPE_TIMELINE_SEMAPHORE_WIN32 = 10 + + ctypedef CUexternalSemaphoreHandleType_enum CUexternalSemaphoreHandleType + + cdef struct anon_struct13: + void* handle + const void* name + + cdef union anon_union6: + int fd + anon_struct13 win32 + const void* nvSciSyncObj + + cdef struct CUDA_EXTERNAL_SEMAPHORE_HANDLE_DESC_st: + CUexternalSemaphoreHandleType type + anon_union6 handle + unsigned int flags + unsigned int reserved[16] + + ctypedef CUDA_EXTERNAL_SEMAPHORE_HANDLE_DESC_st CUDA_EXTERNAL_SEMAPHORE_HANDLE_DESC_v1 + + ctypedef CUDA_EXTERNAL_SEMAPHORE_HANDLE_DESC_v1 CUDA_EXTERNAL_SEMAPHORE_HANDLE_DESC + + cdef struct anon_struct14: + unsigned long long value + + cdef union anon_union7: + void* fence + unsigned long long reserved + + cdef struct anon_struct15: + unsigned long long key + + cdef struct anon_struct16: + anon_struct14 fence + anon_union7 nvSciSync + anon_struct15 keyedMutex + unsigned int reserved[12] + + cdef struct CUDA_EXTERNAL_SEMAPHORE_SIGNAL_PARAMS_st: + anon_struct16 params + unsigned int flags + unsigned int reserved[16] + + ctypedef CUDA_EXTERNAL_SEMAPHORE_SIGNAL_PARAMS_st CUDA_EXTERNAL_SEMAPHORE_SIGNAL_PARAMS_v1 + + ctypedef CUDA_EXTERNAL_SEMAPHORE_SIGNAL_PARAMS_v1 CUDA_EXTERNAL_SEMAPHORE_SIGNAL_PARAMS + + cdef struct anon_struct17: + unsigned long long value + + cdef union anon_union8: + void* fence + unsigned long long reserved + + cdef struct anon_struct18: + unsigned long long key + unsigned int timeoutMs + + cdef struct anon_struct19: + anon_struct17 fence + anon_union8 nvSciSync + anon_struct18 keyedMutex + unsigned int reserved[10] + + cdef struct CUDA_EXTERNAL_SEMAPHORE_WAIT_PARAMS_st: + anon_struct19 params + unsigned int flags + unsigned int reserved[16] + + ctypedef CUDA_EXTERNAL_SEMAPHORE_WAIT_PARAMS_st CUDA_EXTERNAL_SEMAPHORE_WAIT_PARAMS_v1 + + ctypedef CUDA_EXTERNAL_SEMAPHORE_WAIT_PARAMS_v1 CUDA_EXTERNAL_SEMAPHORE_WAIT_PARAMS + + cdef struct CUDA_EXT_SEM_SIGNAL_NODE_PARAMS_st: + CUexternalSemaphore* extSemArray + const CUDA_EXTERNAL_SEMAPHORE_SIGNAL_PARAMS* paramsArray + unsigned int numExtSems + + ctypedef CUDA_EXT_SEM_SIGNAL_NODE_PARAMS_st CUDA_EXT_SEM_SIGNAL_NODE_PARAMS_v1 + + ctypedef CUDA_EXT_SEM_SIGNAL_NODE_PARAMS_v1 CUDA_EXT_SEM_SIGNAL_NODE_PARAMS + + cdef struct CUDA_EXT_SEM_SIGNAL_NODE_PARAMS_v2_st: + CUexternalSemaphore* extSemArray + const CUDA_EXTERNAL_SEMAPHORE_SIGNAL_PARAMS* paramsArray + unsigned int numExtSems + + ctypedef CUDA_EXT_SEM_SIGNAL_NODE_PARAMS_v2_st CUDA_EXT_SEM_SIGNAL_NODE_PARAMS_v2 + + cdef struct CUDA_EXT_SEM_WAIT_NODE_PARAMS_st: + CUexternalSemaphore* extSemArray + const CUDA_EXTERNAL_SEMAPHORE_WAIT_PARAMS* paramsArray + unsigned int numExtSems + + ctypedef CUDA_EXT_SEM_WAIT_NODE_PARAMS_st CUDA_EXT_SEM_WAIT_NODE_PARAMS_v1 + + ctypedef CUDA_EXT_SEM_WAIT_NODE_PARAMS_v1 CUDA_EXT_SEM_WAIT_NODE_PARAMS + + cdef struct CUDA_EXT_SEM_WAIT_NODE_PARAMS_v2_st: + CUexternalSemaphore* extSemArray + const CUDA_EXTERNAL_SEMAPHORE_WAIT_PARAMS* paramsArray + unsigned int numExtSems + + ctypedef CUDA_EXT_SEM_WAIT_NODE_PARAMS_v2_st CUDA_EXT_SEM_WAIT_NODE_PARAMS_v2 + + ctypedef unsigned long long CUmemGenericAllocationHandle_v1 + + ctypedef CUmemGenericAllocationHandle_v1 CUmemGenericAllocationHandle + + cdef enum CUmemAllocationHandleType_enum: + CU_MEM_HANDLE_TYPE_NONE = 0 + CU_MEM_HANDLE_TYPE_POSIX_FILE_DESCRIPTOR = 1 + CU_MEM_HANDLE_TYPE_WIN32 = 2 + CU_MEM_HANDLE_TYPE_WIN32_KMT = 4 + CU_MEM_HANDLE_TYPE_FABRIC = 8 + CU_MEM_HANDLE_TYPE_MAX = 2147483647 + + ctypedef CUmemAllocationHandleType_enum CUmemAllocationHandleType + + cdef enum CUmemAccess_flags_enum: + CU_MEM_ACCESS_FLAGS_PROT_NONE = 0 + CU_MEM_ACCESS_FLAGS_PROT_READ = 1 + CU_MEM_ACCESS_FLAGS_PROT_READWRITE = 3 + CU_MEM_ACCESS_FLAGS_PROT_MAX = 2147483647 + + ctypedef CUmemAccess_flags_enum CUmemAccess_flags + + cdef enum CUmemLocationType_enum: + CU_MEM_LOCATION_TYPE_INVALID = 0 + CU_MEM_LOCATION_TYPE_NONE = 0 + CU_MEM_LOCATION_TYPE_DEVICE = 1 + CU_MEM_LOCATION_TYPE_HOST = 2 + CU_MEM_LOCATION_TYPE_HOST_NUMA = 3 + CU_MEM_LOCATION_TYPE_HOST_NUMA_CURRENT = 4 + CU_MEM_LOCATION_TYPE_INVISIBLE = 5 + CU_MEM_LOCATION_TYPE_MAX = 2147483647 + + ctypedef CUmemLocationType_enum CUmemLocationType + + cdef enum CUmemAllocationType_enum: + CU_MEM_ALLOCATION_TYPE_INVALID = 0 + CU_MEM_ALLOCATION_TYPE_PINNED = 1 + CU_MEM_ALLOCATION_TYPE_MANAGED = 2 + CU_MEM_ALLOCATION_TYPE_MAX = 2147483647 + + ctypedef CUmemAllocationType_enum CUmemAllocationType + + cdef enum CUmemAllocationGranularity_flags_enum: + CU_MEM_ALLOC_GRANULARITY_MINIMUM = 0 + CU_MEM_ALLOC_GRANULARITY_RECOMMENDED = 1 + + ctypedef CUmemAllocationGranularity_flags_enum CUmemAllocationGranularity_flags + + cdef enum CUmemRangeHandleType_enum: + CU_MEM_RANGE_HANDLE_TYPE_DMA_BUF_FD = 1 + CU_MEM_RANGE_HANDLE_TYPE_MAX = 2147483647 + + ctypedef CUmemRangeHandleType_enum CUmemRangeHandleType + + cdef enum CUmemRangeFlags_enum: + CU_MEM_RANGE_FLAG_DMA_BUF_MAPPING_TYPE_PCIE = 1 + + ctypedef CUmemRangeFlags_enum CUmemRangeFlags + + cdef enum CUarraySparseSubresourceType_enum: + CU_ARRAY_SPARSE_SUBRESOURCE_TYPE_SPARSE_LEVEL = 0 + CU_ARRAY_SPARSE_SUBRESOURCE_TYPE_MIPTAIL = 1 + + ctypedef CUarraySparseSubresourceType_enum CUarraySparseSubresourceType + + cdef enum CUmemOperationType_enum: + CU_MEM_OPERATION_TYPE_MAP = 1 + CU_MEM_OPERATION_TYPE_UNMAP = 2 + + ctypedef CUmemOperationType_enum CUmemOperationType + + cdef enum CUmemHandleType_enum: + CU_MEM_HANDLE_TYPE_GENERIC = 0 + + ctypedef CUmemHandleType_enum CUmemHandleType + + cdef union anon_union9: + CUmipmappedArray mipmap + CUarray array + + cdef struct anon_struct20: + unsigned int level + unsigned int layer + unsigned int offsetX + unsigned int offsetY + unsigned int offsetZ + unsigned int extentWidth + unsigned int extentHeight + unsigned int extentDepth + + cdef struct anon_struct21: + unsigned int layer + unsigned long long offset + unsigned long long size + + cdef union anon_union10: + anon_struct20 sparseLevel + anon_struct21 miptail + + cdef union anon_union11: + CUmemGenericAllocationHandle memHandle + + cdef struct CUarrayMapInfo_st: + CUresourcetype resourceType + anon_union9 resource + CUarraySparseSubresourceType subresourceType + anon_union10 subresource + CUmemOperationType memOperationType + CUmemHandleType memHandleType + anon_union11 memHandle + unsigned long long offset + unsigned int deviceBitMask + unsigned int flags + unsigned int reserved[2] + + ctypedef CUarrayMapInfo_st CUarrayMapInfo_v1 + + ctypedef CUarrayMapInfo_v1 CUarrayMapInfo + + cdef struct CUmemLocation_st: + CUmemLocationType type + int id + + ctypedef CUmemLocation_st CUmemLocation_v1 + + ctypedef CUmemLocation_v1 CUmemLocation + + cdef enum CUmemAllocationCompType_enum: + CU_MEM_ALLOCATION_COMP_NONE = 0 + CU_MEM_ALLOCATION_COMP_GENERIC = 1 + + ctypedef CUmemAllocationCompType_enum CUmemAllocationCompType + + cdef struct anon_struct22: + unsigned char compressionType + unsigned char gpuDirectRDMACapable + unsigned short usage + unsigned char reserved[4] + + cdef struct CUmemAllocationProp_st: + CUmemAllocationType type + CUmemAllocationHandleType requestedHandleTypes + CUmemLocation location + void* win32HandleMetaData + anon_struct22 allocFlags + + ctypedef CUmemAllocationProp_st CUmemAllocationProp_v1 + + ctypedef CUmemAllocationProp_v1 CUmemAllocationProp + + cdef enum CUmulticastGranularity_flags_enum: + CU_MULTICAST_GRANULARITY_MINIMUM = 0 + CU_MULTICAST_GRANULARITY_RECOMMENDED = 1 + + ctypedef CUmulticastGranularity_flags_enum CUmulticastGranularity_flags + + cdef struct CUmulticastObjectProp_st: + unsigned int numDevices + size_t size + unsigned long long handleTypes + unsigned long long flags + + ctypedef CUmulticastObjectProp_st CUmulticastObjectProp_v1 + + ctypedef CUmulticastObjectProp_v1 CUmulticastObjectProp + + cdef struct CUmemAccessDesc_st: + CUmemLocation location + CUmemAccess_flags flags + + ctypedef CUmemAccessDesc_st CUmemAccessDesc_v1 + + ctypedef CUmemAccessDesc_v1 CUmemAccessDesc + + cdef enum CUgraphExecUpdateResult_enum: + CU_GRAPH_EXEC_UPDATE_SUCCESS = 0 + CU_GRAPH_EXEC_UPDATE_ERROR = 1 + CU_GRAPH_EXEC_UPDATE_ERROR_TOPOLOGY_CHANGED = 2 + CU_GRAPH_EXEC_UPDATE_ERROR_NODE_TYPE_CHANGED = 3 + CU_GRAPH_EXEC_UPDATE_ERROR_FUNCTION_CHANGED = 4 + CU_GRAPH_EXEC_UPDATE_ERROR_PARAMETERS_CHANGED = 5 + CU_GRAPH_EXEC_UPDATE_ERROR_NOT_SUPPORTED = 6 + CU_GRAPH_EXEC_UPDATE_ERROR_UNSUPPORTED_FUNCTION_CHANGE = 7 + CU_GRAPH_EXEC_UPDATE_ERROR_ATTRIBUTES_CHANGED = 8 + + ctypedef CUgraphExecUpdateResult_enum CUgraphExecUpdateResult + + cdef struct CUgraphExecUpdateResultInfo_st: + CUgraphExecUpdateResult result + CUgraphNode errorNode + CUgraphNode errorFromNode + + ctypedef CUgraphExecUpdateResultInfo_st CUgraphExecUpdateResultInfo_v1 + + ctypedef CUgraphExecUpdateResultInfo_v1 CUgraphExecUpdateResultInfo + + cdef enum CUmemPool_attribute_enum: + CU_MEMPOOL_ATTR_REUSE_FOLLOW_EVENT_DEPENDENCIES = 1 + CU_MEMPOOL_ATTR_REUSE_ALLOW_OPPORTUNISTIC = 2 + CU_MEMPOOL_ATTR_REUSE_ALLOW_INTERNAL_DEPENDENCIES = 3 + CU_MEMPOOL_ATTR_RELEASE_THRESHOLD = 4 + CU_MEMPOOL_ATTR_RESERVED_MEM_CURRENT = 5 + CU_MEMPOOL_ATTR_RESERVED_MEM_HIGH = 6 + CU_MEMPOOL_ATTR_USED_MEM_CURRENT = 7 + CU_MEMPOOL_ATTR_USED_MEM_HIGH = 8 + CU_MEMPOOL_ATTR_ALLOCATION_TYPE = 9 + CU_MEMPOOL_ATTR_EXPORT_HANDLE_TYPES = 10 + CU_MEMPOOL_ATTR_LOCATION_ID = 11 + CU_MEMPOOL_ATTR_LOCATION_TYPE = 12 + CU_MEMPOOL_ATTR_MAX_POOL_SIZE = 13 + CU_MEMPOOL_ATTR_HW_DECOMPRESS_ENABLED = 14 + + ctypedef CUmemPool_attribute_enum CUmemPool_attribute + + cdef struct CUmemPoolProps_st: + CUmemAllocationType allocType + CUmemAllocationHandleType handleTypes + CUmemLocation location + void* win32SecurityAttributes + size_t maxSize + unsigned short usage + unsigned char reserved[54] + + ctypedef CUmemPoolProps_st CUmemPoolProps_v1 + + ctypedef CUmemPoolProps_v1 CUmemPoolProps + + cdef struct CUmemPoolPtrExportData_st: + unsigned char reserved[64] + + ctypedef CUmemPoolPtrExportData_st CUmemPoolPtrExportData_v1 + + ctypedef CUmemPoolPtrExportData_v1 CUmemPoolPtrExportData + + cdef enum CUmemcpyFlags_enum: + CU_MEMCPY_FLAG_DEFAULT = 0 + CU_MEMCPY_FLAG_PREFER_OVERLAP_WITH_COMPUTE = 1 + + ctypedef CUmemcpyFlags_enum CUmemcpyFlags + + cdef enum CUmemcpySrcAccessOrder_enum: + CU_MEMCPY_SRC_ACCESS_ORDER_INVALID = 0 + CU_MEMCPY_SRC_ACCESS_ORDER_STREAM = 1 + CU_MEMCPY_SRC_ACCESS_ORDER_DURING_API_CALL = 2 + CU_MEMCPY_SRC_ACCESS_ORDER_ANY = 3 + CU_MEMCPY_SRC_ACCESS_ORDER_MAX = 2147483647 + + ctypedef CUmemcpySrcAccessOrder_enum CUmemcpySrcAccessOrder + + cdef struct CUmemcpyAttributes_st: + CUmemcpySrcAccessOrder srcAccessOrder + CUmemLocation srcLocHint + CUmemLocation dstLocHint + unsigned int flags + + ctypedef CUmemcpyAttributes_st CUmemcpyAttributes_v1 + + ctypedef CUmemcpyAttributes_v1 CUmemcpyAttributes + + cdef enum CUmemcpy3DOperandType_enum: + CU_MEMCPY_OPERAND_TYPE_POINTER = 1 + CU_MEMCPY_OPERAND_TYPE_ARRAY = 2 + CU_MEMCPY_OPERAND_TYPE_MAX = 2147483647 + + ctypedef CUmemcpy3DOperandType_enum CUmemcpy3DOperandType + + cdef struct CUoffset3D_st: + size_t x + size_t y + size_t z + + ctypedef CUoffset3D_st CUoffset3D_v1 + + ctypedef CUoffset3D_v1 CUoffset3D + + cdef struct CUextent3D_st: + size_t width + size_t height + size_t depth + + ctypedef CUextent3D_st CUextent3D_v1 + + ctypedef CUextent3D_v1 CUextent3D + + cdef struct anon_struct23: + CUdeviceptr ptr + size_t rowLength + size_t layerHeight + CUmemLocation locHint + + cdef struct anon_struct24: + CUarray array + CUoffset3D offset + + cdef union anon_union13: + anon_struct23 ptr + anon_struct24 array + + cdef struct CUmemcpy3DOperand_st: + CUmemcpy3DOperandType type + anon_union13 op + + ctypedef CUmemcpy3DOperand_st CUmemcpy3DOperand_v1 + + ctypedef CUmemcpy3DOperand_v1 CUmemcpy3DOperand + + cdef struct CUDA_MEMCPY3D_BATCH_OP_st: + CUmemcpy3DOperand src + CUmemcpy3DOperand dst + CUextent3D extent + CUmemcpySrcAccessOrder srcAccessOrder + unsigned int flags + + ctypedef CUDA_MEMCPY3D_BATCH_OP_st CUDA_MEMCPY3D_BATCH_OP_v1 + + ctypedef CUDA_MEMCPY3D_BATCH_OP_v1 CUDA_MEMCPY3D_BATCH_OP + + cdef struct CUDA_MEM_ALLOC_NODE_PARAMS_v1_st: + CUmemPoolProps poolProps + const CUmemAccessDesc* accessDescs + size_t accessDescCount + size_t bytesize + CUdeviceptr dptr + + ctypedef CUDA_MEM_ALLOC_NODE_PARAMS_v1_st CUDA_MEM_ALLOC_NODE_PARAMS_v1 + + ctypedef CUDA_MEM_ALLOC_NODE_PARAMS_v1 CUDA_MEM_ALLOC_NODE_PARAMS + + cdef struct CUDA_MEM_ALLOC_NODE_PARAMS_v2_st: + CUmemPoolProps poolProps + const CUmemAccessDesc* accessDescs + size_t accessDescCount + size_t bytesize + CUdeviceptr dptr + + ctypedef CUDA_MEM_ALLOC_NODE_PARAMS_v2_st CUDA_MEM_ALLOC_NODE_PARAMS_v2 + + cdef struct CUDA_MEM_FREE_NODE_PARAMS_st: + CUdeviceptr dptr + + ctypedef CUDA_MEM_FREE_NODE_PARAMS_st CUDA_MEM_FREE_NODE_PARAMS + + cdef enum CUgraphMem_attribute_enum: + CU_GRAPH_MEM_ATTR_USED_MEM_CURRENT = 0 + CU_GRAPH_MEM_ATTR_USED_MEM_HIGH = 1 + CU_GRAPH_MEM_ATTR_RESERVED_MEM_CURRENT = 2 + CU_GRAPH_MEM_ATTR_RESERVED_MEM_HIGH = 3 + + ctypedef CUgraphMem_attribute_enum CUgraphMem_attribute + + cdef enum CUgraphChildGraphNodeOwnership_enum: + CU_GRAPH_CHILD_GRAPH_OWNERSHIP_INVALID = -1 + CU_GRAPH_CHILD_GRAPH_OWNERSHIP_CLONE = 0 + CU_GRAPH_CHILD_GRAPH_OWNERSHIP_MOVE = 1 + + ctypedef CUgraphChildGraphNodeOwnership_enum CUgraphChildGraphNodeOwnership + + cdef struct CUDA_CHILD_GRAPH_NODE_PARAMS_st: + CUgraph graph + CUgraphChildGraphNodeOwnership ownership + + ctypedef CUDA_CHILD_GRAPH_NODE_PARAMS_st CUDA_CHILD_GRAPH_NODE_PARAMS + + cdef struct CUDA_EVENT_RECORD_NODE_PARAMS_st: + CUevent event + + ctypedef CUDA_EVENT_RECORD_NODE_PARAMS_st CUDA_EVENT_RECORD_NODE_PARAMS + + cdef struct CUDA_EVENT_WAIT_NODE_PARAMS_st: + CUevent event + + ctypedef CUDA_EVENT_WAIT_NODE_PARAMS_st CUDA_EVENT_WAIT_NODE_PARAMS + + cdef struct CUgraphNodeParams_st: + CUgraphNodeType type + int reserved0[3] + long long reserved1[29] + CUDA_KERNEL_NODE_PARAMS_v3 kernel + CUDA_MEMCPY_NODE_PARAMS memcpy + CUDA_MEMSET_NODE_PARAMS_v2 memset + CUDA_HOST_NODE_PARAMS_v2 host + CUDA_CHILD_GRAPH_NODE_PARAMS graph + CUDA_EVENT_WAIT_NODE_PARAMS eventWait + CUDA_EVENT_RECORD_NODE_PARAMS eventRecord + CUDA_EXT_SEM_SIGNAL_NODE_PARAMS_v2 extSemSignal + CUDA_EXT_SEM_WAIT_NODE_PARAMS_v2 extSemWait + CUDA_MEM_ALLOC_NODE_PARAMS_v2 alloc + CUDA_MEM_FREE_NODE_PARAMS free + CUDA_BATCH_MEM_OP_NODE_PARAMS_v2 memOp + CUDA_CONDITIONAL_NODE_PARAMS conditional + char asBytes[232] + long long reserved2 + + ctypedef CUgraphNodeParams_st CUgraphNodeParams + + cdef enum CUflushGPUDirectRDMAWritesOptions_enum: + CU_FLUSH_GPU_DIRECT_RDMA_WRITES_OPTION_HOST = 1 + CU_FLUSH_GPU_DIRECT_RDMA_WRITES_OPTION_MEMOPS = 2 + + ctypedef CUflushGPUDirectRDMAWritesOptions_enum CUflushGPUDirectRDMAWritesOptions + + cdef enum CUGPUDirectRDMAWritesOrdering_enum: + CU_GPU_DIRECT_RDMA_WRITES_ORDERING_NONE = 0 + CU_GPU_DIRECT_RDMA_WRITES_ORDERING_OWNER = 100 + CU_GPU_DIRECT_RDMA_WRITES_ORDERING_ALL_DEVICES = 200 + + ctypedef CUGPUDirectRDMAWritesOrdering_enum CUGPUDirectRDMAWritesOrdering + + cdef enum CUflushGPUDirectRDMAWritesScope_enum: + CU_FLUSH_GPU_DIRECT_RDMA_WRITES_TO_OWNER = 100 + CU_FLUSH_GPU_DIRECT_RDMA_WRITES_TO_ALL_DEVICES = 200 + + ctypedef CUflushGPUDirectRDMAWritesScope_enum CUflushGPUDirectRDMAWritesScope + + cdef enum CUflushGPUDirectRDMAWritesTarget_enum: + CU_FLUSH_GPU_DIRECT_RDMA_WRITES_TARGET_CURRENT_CTX = 0 + + ctypedef CUflushGPUDirectRDMAWritesTarget_enum CUflushGPUDirectRDMAWritesTarget + + cdef enum CUgraphDebugDot_flags_enum: + CU_GRAPH_DEBUG_DOT_FLAGS_VERBOSE = 1 + CU_GRAPH_DEBUG_DOT_FLAGS_RUNTIME_TYPES = 2 + CU_GRAPH_DEBUG_DOT_FLAGS_KERNEL_NODE_PARAMS = 4 + CU_GRAPH_DEBUG_DOT_FLAGS_MEMCPY_NODE_PARAMS = 8 + CU_GRAPH_DEBUG_DOT_FLAGS_MEMSET_NODE_PARAMS = 16 + CU_GRAPH_DEBUG_DOT_FLAGS_HOST_NODE_PARAMS = 32 + CU_GRAPH_DEBUG_DOT_FLAGS_EVENT_NODE_PARAMS = 64 + CU_GRAPH_DEBUG_DOT_FLAGS_EXT_SEMAS_SIGNAL_NODE_PARAMS = 128 + CU_GRAPH_DEBUG_DOT_FLAGS_EXT_SEMAS_WAIT_NODE_PARAMS = 256 + CU_GRAPH_DEBUG_DOT_FLAGS_KERNEL_NODE_ATTRIBUTES = 512 + CU_GRAPH_DEBUG_DOT_FLAGS_HANDLES = 1024 + CU_GRAPH_DEBUG_DOT_FLAGS_MEM_ALLOC_NODE_PARAMS = 2048 + CU_GRAPH_DEBUG_DOT_FLAGS_MEM_FREE_NODE_PARAMS = 4096 + CU_GRAPH_DEBUG_DOT_FLAGS_BATCH_MEM_OP_NODE_PARAMS = 8192 + CU_GRAPH_DEBUG_DOT_FLAGS_EXTRA_TOPO_INFO = 16384 + CU_GRAPH_DEBUG_DOT_FLAGS_CONDITIONAL_NODE_PARAMS = 32768 + + ctypedef CUgraphDebugDot_flags_enum CUgraphDebugDot_flags + + cdef enum CUuserObject_flags_enum: + CU_USER_OBJECT_NO_DESTRUCTOR_SYNC = 1 + + ctypedef CUuserObject_flags_enum CUuserObject_flags + + cdef enum CUuserObjectRetain_flags_enum: + CU_GRAPH_USER_OBJECT_MOVE = 1 + + ctypedef CUuserObjectRetain_flags_enum CUuserObjectRetain_flags + + cdef enum CUgraphInstantiate_flags_enum: + CUDA_GRAPH_INSTANTIATE_FLAG_AUTO_FREE_ON_LAUNCH = 1 + CUDA_GRAPH_INSTANTIATE_FLAG_UPLOAD = 2 + CUDA_GRAPH_INSTANTIATE_FLAG_DEVICE_LAUNCH = 4 + CUDA_GRAPH_INSTANTIATE_FLAG_USE_NODE_PRIORITY = 8 + + ctypedef CUgraphInstantiate_flags_enum CUgraphInstantiate_flags + + cdef enum CUdeviceNumaConfig_enum: + CU_DEVICE_NUMA_CONFIG_NONE = 0 + CU_DEVICE_NUMA_CONFIG_NUMA_NODE = 1 + + ctypedef CUdeviceNumaConfig_enum CUdeviceNumaConfig + + cdef enum CUprocessState_enum: + CU_PROCESS_STATE_RUNNING = 0 + CU_PROCESS_STATE_LOCKED = 1 + CU_PROCESS_STATE_CHECKPOINTED = 2 + CU_PROCESS_STATE_FAILED = 3 + + ctypedef CUprocessState_enum CUprocessState + + cdef struct CUcheckpointLockArgs_st: + unsigned int timeoutMs + unsigned int reserved0 + cuuint64_t reserved1[7] + + ctypedef CUcheckpointLockArgs_st CUcheckpointLockArgs + + cdef struct CUcheckpointCheckpointArgs_st: + cuuint64_t reserved[8] + + ctypedef CUcheckpointCheckpointArgs_st CUcheckpointCheckpointArgs + + cdef struct CUcheckpointGpuPair_st: + CUuuid oldUuid + CUuuid newUuid + + ctypedef CUcheckpointGpuPair_st CUcheckpointGpuPair + + cdef struct CUcheckpointRestoreArgs_st: + CUcheckpointGpuPair* gpuPairs + unsigned int gpuPairsCount + char reserved[52] + + ctypedef CUcheckpointRestoreArgs_st CUcheckpointRestoreArgs + + cdef struct CUcheckpointUnlockArgs_st: + cuuint64_t reserved[8] + + ctypedef CUcheckpointUnlockArgs_st CUcheckpointUnlockArgs + + cdef enum CUmoduleLoadingMode_enum: + CU_MODULE_EAGER_LOADING = 1 + CU_MODULE_LAZY_LOADING = 2 + + ctypedef CUmoduleLoadingMode_enum CUmoduleLoadingMode + + cdef enum CUmemDecompressAlgorithm_enum: + CU_MEM_DECOMPRESS_UNSUPPORTED = 0 + CU_MEM_DECOMPRESS_ALGORITHM_DEFLATE = 1 + CU_MEM_DECOMPRESS_ALGORITHM_SNAPPY = 2 + CU_MEM_DECOMPRESS_ALGORITHM_LZ4 = 4 + + ctypedef CUmemDecompressAlgorithm_enum CUmemDecompressAlgorithm + + cdef struct CUmemDecompressParams_st: + size_t srcNumBytes + size_t dstNumBytes + cuuint32_t* dstActBytes + const void* src + void* dst + CUmemDecompressAlgorithm algo + unsigned char padding[20] + + ctypedef CUmemDecompressParams_st CUmemDecompressParams + + ctypedef cuuint32_t CUlogicalEndpointId + + cdef enum CUlogicalEndpointIpcHandleType_enum: + CU_LOGICAL_ENDPOINT_IPC_HANDLE_TYPE_NONE = 0 + CU_LOGICAL_ENDPOINT_IPC_HANDLE_TYPE_FABRIC = 1 + + ctypedef CUlogicalEndpointIpcHandleType_enum CUlogicalEndpointIpcHandleType + + cdef struct CUlogicalEndpointFabricHandle_st: + unsigned char data[64] + + ctypedef CUlogicalEndpointFabricHandle_st CUlogicalEndpointFabricHandle + + cdef enum CUlogicalEndpointType_enum: + CU_LOGICAL_ENDPOINT_TYPE_INVALID = 0 + CU_LOGICAL_ENDPOINT_TYPE_UNICAST = 1 + CU_LOGICAL_ENDPOINT_TYPE_MULTICAST = 2 + + ctypedef CUlogicalEndpointType_enum CUlogicalEndpointType + + cdef enum CUlogicalEndpointFlag_enum: + CU_LOGICAL_ENDPOINT_FLAG_NONE = 0 + CU_LOGICAL_ENDPOINT_FLAG_COUNTED_OPS = 1 + + ctypedef CUlogicalEndpointFlag_enum CUlogicalEndpointFlag + + cdef struct anon_struct25: + CUdevice device + + cdef struct anon_struct26: + unsigned int numDevices + + cdef struct CUlogicalEndpointProp_struct: + CUlogicalEndpointType type + anon_struct25 unicast + anon_struct26 multicast + unsigned long long size + unsigned int ipcHandleTypes + unsigned int flags + + ctypedef CUlogicalEndpointProp_struct CUlogicalEndpointProp + + cdef enum CUgraphRecaptureStatus_enum: + CU_GRAPH_RECAPTURE_ELIGIBLE_FOR_UPDATE = 0 + CU_GRAPH_RECAPTURE_INELIGIBLE_FOR_UPDATE = 1 + CU_GRAPH_RECAPTURE_ERROR = 2 + + ctypedef CUgraphRecaptureStatus_enum CUgraphRecaptureStatus + + ctypedef CUresult (*CUgraphRecaptureCallback)(void* data, CUgraphNode node, const CUgraphNodeParams* originalParams, const CUgraphNodeParams* recaptureParams, CUgraphRecaptureStatus status) + + cdef enum CUfunctionLoadingState_enum: + CU_FUNCTION_LOADING_STATE_UNLOADED = 0 + CU_FUNCTION_LOADING_STATE_LOADED = 1 + CU_FUNCTION_LOADING_STATE_MAX = 2 + + ctypedef CUfunctionLoadingState_enum CUfunctionLoadingState + + cdef enum CUcoredumpSettings_enum: + CU_COREDUMP_ENABLE_ON_EXCEPTION = 1 + CU_COREDUMP_TRIGGER_HOST = 2 + CU_COREDUMP_LIGHTWEIGHT = 3 + CU_COREDUMP_ENABLE_USER_TRIGGER = 4 + CU_COREDUMP_FILE = 5 + CU_COREDUMP_PIPE = 6 + CU_COREDUMP_GENERATION_FLAGS = 7 + CU_COREDUMP_MAX = 8 + + ctypedef CUcoredumpSettings_enum CUcoredumpSettings + + cdef enum CUCoredumpGenerationFlags: + CU_COREDUMP_DEFAULT_FLAGS = 0 + CU_COREDUMP_SKIP_NONRELOCATED_ELF_IMAGES = 1 + CU_COREDUMP_SKIP_GLOBAL_MEMORY = 2 + CU_COREDUMP_SKIP_SHARED_MEMORY = 4 + CU_COREDUMP_SKIP_LOCAL_MEMORY = 8 + CU_COREDUMP_SKIP_ABORT = 16 + CU_COREDUMP_SKIP_CONSTBANK_MEMORY = 32 + CU_COREDUMP_LIGHTWEIGHT_FLAGS = 47 + CU_COREDUMP_GZIP_COMPRESS = 64 + CU_COREDUMP_FAULTED_CONTEXTS_ONLY = 128 + CU_COREDUMP_NO_ERRBAR_AT_EXIT = 1073741824 + CU_COREDUMP_LOG_ONLY = 2147483648 + + cdef struct CUcoredumpCallbackEntry_st: + pass + ctypedef CUcoredumpCallbackEntry_st* CUcoredumpCallbackHandle + + ctypedef void (*CUcoredumpStatusCallback)(void* userData, int pid, CUdevice dev) + + cdef struct CUdevResourceDesc_st: + pass + ctypedef CUdevResourceDesc_st* CUdevResourceDesc + + ctypedef enum CUgreenCtxCreate_flags: + CU_GREEN_CTX_NONE = 0 + CU_GREEN_CTX_DEFAULT_STREAM = 1 + + ctypedef enum CUdevSmResourceGroup_flags: + CU_DEV_SM_RESOURCE_GROUP_DEFAULT = 0 + CU_DEV_SM_RESOURCE_GROUP_BACKFILL = 1 + + ctypedef enum CUdevSmResourceSplitByCount_flags: + CU_DEV_SM_RESOURCE_SPLIT_IGNORE_SM_COSCHEDULING = 1 + CU_DEV_SM_RESOURCE_SPLIT_MAX_POTENTIAL_CLUSTER_SIZE = 2 + + ctypedef enum CUdevResourceType: + CU_DEV_RESOURCE_TYPE_INVALID = 0 + CU_DEV_RESOURCE_TYPE_SM = 1 + CU_DEV_RESOURCE_TYPE_WORKQUEUE_CONFIG = 1000 + CU_DEV_RESOURCE_TYPE_WORKQUEUE = 10000 + + cdef struct CUdevSmResource_st: + unsigned int smCount + unsigned int minSmPartitionSize + unsigned int smCoscheduledAlignment + unsigned int flags + + ctypedef CUdevSmResource_st CUdevSmResource + + ctypedef enum CUdevWorkqueueConfigScope: + CU_WORKQUEUE_SCOPE_DEVICE_CTX = 0 + CU_WORKQUEUE_SCOPE_GREEN_CTX_BALANCED = 1 + + cdef struct CUdevWorkqueueConfigResource_st: + CUdevice device + unsigned int wqConcurrencyLimit + CUdevWorkqueueConfigScope sharingScope + + ctypedef CUdevWorkqueueConfigResource_st CUdevWorkqueueConfigResource + + cdef struct CUdevWorkqueueResource_st: + unsigned char reserved[40] + + ctypedef CUdevWorkqueueResource_st CUdevWorkqueueResource + + cdef struct CU_DEV_SM_RESOURCE_GROUP_PARAMS_st: + unsigned int smCount + unsigned int coscheduledSmCount + unsigned int preferredCoscheduledSmCount + unsigned int flags + unsigned int reserved[12] + + ctypedef CU_DEV_SM_RESOURCE_GROUP_PARAMS_st CU_DEV_SM_RESOURCE_GROUP_PARAMS + + cdef struct CUdevResource_st: + CUdevResourceType type + unsigned char _internal_padding[92] + CUdevSmResource sm + CUdevWorkqueueConfigResource wqConfig + CUdevWorkqueueResource wq + unsigned char _oversize[40] + CUdevResource_st* nextResource + + ctypedef CUdevResource_st CUdevResource_v1 + + ctypedef CUdevResource_v1 CUdevResource + + cdef enum CUlogLevel_enum: + CU_LOG_LEVEL_ERROR = 0 + CU_LOG_LEVEL_WARNING = 1 + + ctypedef CUlogLevel_enum CUlogLevel + + cdef struct CUlogsCallbackEntry_st: + pass + ctypedef CUlogsCallbackEntry_st* CUlogsCallbackHandle + + ctypedef void (*CUlogsCallback)(void* data, CUlogLevel logLevel, char* message, size_t length) + + ctypedef unsigned int CUlogIterator + +cdef extern from "cudaProfiler.h": + + cdef enum CUoutput_mode_enum: + CU_OUT_KEY_VALUE_PAIR = 0 + CU_OUT_CSV = 1 + + ctypedef CUoutput_mode_enum CUoutput_mode + +cdef enum CUeglFrameType_enum: + CU_EGL_FRAME_TYPE_ARRAY = 0 + CU_EGL_FRAME_TYPE_PITCH = 1 + +ctypedef CUeglFrameType_enum CUeglFrameType + +cdef enum CUeglResourceLocationFlags_enum: + CU_EGL_RESOURCE_LOCATION_SYSMEM = 0 + CU_EGL_RESOURCE_LOCATION_VIDMEM = 1 + +ctypedef CUeglResourceLocationFlags_enum CUeglResourceLocationFlags + +cdef enum CUeglColorFormat_enum: + CU_EGL_COLOR_FORMAT_YUV420_PLANAR = 0 + CU_EGL_COLOR_FORMAT_YUV420_SEMIPLANAR = 1 + CU_EGL_COLOR_FORMAT_YUV422_PLANAR = 2 + CU_EGL_COLOR_FORMAT_YUV422_SEMIPLANAR = 3 + CU_EGL_COLOR_FORMAT_RGB = 4 + CU_EGL_COLOR_FORMAT_BGR = 5 + CU_EGL_COLOR_FORMAT_ARGB = 6 + CU_EGL_COLOR_FORMAT_RGBA = 7 + CU_EGL_COLOR_FORMAT_L = 8 + CU_EGL_COLOR_FORMAT_R = 9 + CU_EGL_COLOR_FORMAT_YUV444_PLANAR = 10 + CU_EGL_COLOR_FORMAT_YUV444_SEMIPLANAR = 11 + CU_EGL_COLOR_FORMAT_YUYV_422 = 12 + CU_EGL_COLOR_FORMAT_UYVY_422 = 13 + CU_EGL_COLOR_FORMAT_ABGR = 14 + CU_EGL_COLOR_FORMAT_BGRA = 15 + CU_EGL_COLOR_FORMAT_A = 16 + CU_EGL_COLOR_FORMAT_RG = 17 + CU_EGL_COLOR_FORMAT_AYUV = 18 + CU_EGL_COLOR_FORMAT_YVU444_SEMIPLANAR = 19 + CU_EGL_COLOR_FORMAT_YVU422_SEMIPLANAR = 20 + CU_EGL_COLOR_FORMAT_YVU420_SEMIPLANAR = 21 + CU_EGL_COLOR_FORMAT_Y10V10U10_444_SEMIPLANAR = 22 + CU_EGL_COLOR_FORMAT_Y10V10U10_420_SEMIPLANAR = 23 + CU_EGL_COLOR_FORMAT_Y12V12U12_444_SEMIPLANAR = 24 + CU_EGL_COLOR_FORMAT_Y12V12U12_420_SEMIPLANAR = 25 + CU_EGL_COLOR_FORMAT_VYUY_ER = 26 + CU_EGL_COLOR_FORMAT_UYVY_ER = 27 + CU_EGL_COLOR_FORMAT_YUYV_ER = 28 + CU_EGL_COLOR_FORMAT_YVYU_ER = 29 + CU_EGL_COLOR_FORMAT_YUV_ER = 30 + CU_EGL_COLOR_FORMAT_YUVA_ER = 31 + CU_EGL_COLOR_FORMAT_AYUV_ER = 32 + CU_EGL_COLOR_FORMAT_YUV444_PLANAR_ER = 33 + CU_EGL_COLOR_FORMAT_YUV422_PLANAR_ER = 34 + CU_EGL_COLOR_FORMAT_YUV420_PLANAR_ER = 35 + CU_EGL_COLOR_FORMAT_YUV444_SEMIPLANAR_ER = 36 + CU_EGL_COLOR_FORMAT_YUV422_SEMIPLANAR_ER = 37 + CU_EGL_COLOR_FORMAT_YUV420_SEMIPLANAR_ER = 38 + CU_EGL_COLOR_FORMAT_YVU444_PLANAR_ER = 39 + CU_EGL_COLOR_FORMAT_YVU422_PLANAR_ER = 40 + CU_EGL_COLOR_FORMAT_YVU420_PLANAR_ER = 41 + CU_EGL_COLOR_FORMAT_YVU444_SEMIPLANAR_ER = 42 + CU_EGL_COLOR_FORMAT_YVU422_SEMIPLANAR_ER = 43 + CU_EGL_COLOR_FORMAT_YVU420_SEMIPLANAR_ER = 44 + CU_EGL_COLOR_FORMAT_BAYER_RGGB = 45 + CU_EGL_COLOR_FORMAT_BAYER_BGGR = 46 + CU_EGL_COLOR_FORMAT_BAYER_GRBG = 47 + CU_EGL_COLOR_FORMAT_BAYER_GBRG = 48 + CU_EGL_COLOR_FORMAT_BAYER10_RGGB = 49 + CU_EGL_COLOR_FORMAT_BAYER10_BGGR = 50 + CU_EGL_COLOR_FORMAT_BAYER10_GRBG = 51 + CU_EGL_COLOR_FORMAT_BAYER10_GBRG = 52 + CU_EGL_COLOR_FORMAT_BAYER12_RGGB = 53 + CU_EGL_COLOR_FORMAT_BAYER12_BGGR = 54 + CU_EGL_COLOR_FORMAT_BAYER12_GRBG = 55 + CU_EGL_COLOR_FORMAT_BAYER12_GBRG = 56 + CU_EGL_COLOR_FORMAT_BAYER14_RGGB = 57 + CU_EGL_COLOR_FORMAT_BAYER14_BGGR = 58 + CU_EGL_COLOR_FORMAT_BAYER14_GRBG = 59 + CU_EGL_COLOR_FORMAT_BAYER14_GBRG = 60 + CU_EGL_COLOR_FORMAT_BAYER20_RGGB = 61 + CU_EGL_COLOR_FORMAT_BAYER20_BGGR = 62 + CU_EGL_COLOR_FORMAT_BAYER20_GRBG = 63 + CU_EGL_COLOR_FORMAT_BAYER20_GBRG = 64 + CU_EGL_COLOR_FORMAT_YVU444_PLANAR = 65 + CU_EGL_COLOR_FORMAT_YVU422_PLANAR = 66 + CU_EGL_COLOR_FORMAT_YVU420_PLANAR = 67 + CU_EGL_COLOR_FORMAT_BAYER_ISP_RGGB = 68 + CU_EGL_COLOR_FORMAT_BAYER_ISP_BGGR = 69 + CU_EGL_COLOR_FORMAT_BAYER_ISP_GRBG = 70 + CU_EGL_COLOR_FORMAT_BAYER_ISP_GBRG = 71 + CU_EGL_COLOR_FORMAT_BAYER_BCCR = 72 + CU_EGL_COLOR_FORMAT_BAYER_RCCB = 73 + CU_EGL_COLOR_FORMAT_BAYER_CRBC = 74 + CU_EGL_COLOR_FORMAT_BAYER_CBRC = 75 + CU_EGL_COLOR_FORMAT_BAYER10_CCCC = 76 + CU_EGL_COLOR_FORMAT_BAYER12_BCCR = 77 + CU_EGL_COLOR_FORMAT_BAYER12_RCCB = 78 + CU_EGL_COLOR_FORMAT_BAYER12_CRBC = 79 + CU_EGL_COLOR_FORMAT_BAYER12_CBRC = 80 + CU_EGL_COLOR_FORMAT_BAYER12_CCCC = 81 + CU_EGL_COLOR_FORMAT_Y = 82 + CU_EGL_COLOR_FORMAT_YUV420_SEMIPLANAR_2020 = 83 + CU_EGL_COLOR_FORMAT_YVU420_SEMIPLANAR_2020 = 84 + CU_EGL_COLOR_FORMAT_YUV420_PLANAR_2020 = 85 + CU_EGL_COLOR_FORMAT_YVU420_PLANAR_2020 = 86 + CU_EGL_COLOR_FORMAT_YUV420_SEMIPLANAR_709 = 87 + CU_EGL_COLOR_FORMAT_YVU420_SEMIPLANAR_709 = 88 + CU_EGL_COLOR_FORMAT_YUV420_PLANAR_709 = 89 + CU_EGL_COLOR_FORMAT_YVU420_PLANAR_709 = 90 + CU_EGL_COLOR_FORMAT_Y10V10U10_420_SEMIPLANAR_709 = 91 + CU_EGL_COLOR_FORMAT_Y10V10U10_420_SEMIPLANAR_2020 = 92 + CU_EGL_COLOR_FORMAT_Y10V10U10_422_SEMIPLANAR_2020 = 93 + CU_EGL_COLOR_FORMAT_Y10V10U10_422_SEMIPLANAR = 94 + CU_EGL_COLOR_FORMAT_Y10V10U10_422_SEMIPLANAR_709 = 95 + CU_EGL_COLOR_FORMAT_Y_ER = 96 + CU_EGL_COLOR_FORMAT_Y_709_ER = 97 + CU_EGL_COLOR_FORMAT_Y10_ER = 98 + CU_EGL_COLOR_FORMAT_Y10_709_ER = 99 + CU_EGL_COLOR_FORMAT_Y12_ER = 100 + CU_EGL_COLOR_FORMAT_Y12_709_ER = 101 + CU_EGL_COLOR_FORMAT_YUVA = 102 + CU_EGL_COLOR_FORMAT_YUV = 103 + CU_EGL_COLOR_FORMAT_YVYU = 104 + CU_EGL_COLOR_FORMAT_VYUY = 105 + CU_EGL_COLOR_FORMAT_Y10V10U10_420_SEMIPLANAR_ER = 106 + CU_EGL_COLOR_FORMAT_Y10V10U10_420_SEMIPLANAR_709_ER = 107 + CU_EGL_COLOR_FORMAT_Y10V10U10_444_SEMIPLANAR_ER = 108 + CU_EGL_COLOR_FORMAT_Y10V10U10_444_SEMIPLANAR_709_ER = 109 + CU_EGL_COLOR_FORMAT_Y12V12U12_420_SEMIPLANAR_ER = 110 + CU_EGL_COLOR_FORMAT_Y12V12U12_420_SEMIPLANAR_709_ER = 111 + CU_EGL_COLOR_FORMAT_Y12V12U12_444_SEMIPLANAR_ER = 112 + CU_EGL_COLOR_FORMAT_Y12V12U12_444_SEMIPLANAR_709_ER = 113 + CU_EGL_COLOR_FORMAT_UYVY_709 = 114 + CU_EGL_COLOR_FORMAT_UYVY_709_ER = 115 + CU_EGL_COLOR_FORMAT_UYVY_2020 = 116 + CU_EGL_COLOR_FORMAT_MAX = 117 + +ctypedef CUeglColorFormat_enum CUeglColorFormat + +cdef union anon_union17: + CUarray pArray[3] + void* pPitch[3] + +cdef struct CUeglFrame_st: + anon_union17 frame + unsigned int width + unsigned int height + unsigned int depth + unsigned int pitch + unsigned int planeCount + unsigned int numChannels + CUeglFrameType frameType + CUeglColorFormat eglColorFormat + CUarray_format cuFormat + +ctypedef CUeglFrame_st CUeglFrame_v1 + +ctypedef CUeglFrame_v1 CUeglFrame + +cdef extern from "": + cdef struct CUeglStreamConnection_st: + pass +ctypedef CUeglStreamConnection_st* CUeglStreamConnection + +cdef enum CUGLDeviceList_enum: + CU_GL_DEVICE_LIST_ALL = 1 + CU_GL_DEVICE_LIST_CURRENT_FRAME = 2 + CU_GL_DEVICE_LIST_NEXT_FRAME = 3 + +ctypedef CUGLDeviceList_enum CUGLDeviceList + +cdef enum CUGLmap_flags_enum: + CU_GL_MAP_RESOURCE_FLAGS_NONE = 0 + CU_GL_MAP_RESOURCE_FLAGS_READ_ONLY = 1 + CU_GL_MAP_RESOURCE_FLAGS_WRITE_DISCARD = 2 + +ctypedef CUGLmap_flags_enum CUGLmap_flags + +ctypedef unsigned int GLenum + +ctypedef unsigned int GLuint + +cdef extern from "": + cdef struct void: + pass +ctypedef void* EGLImageKHR + +cdef extern from "": + cdef struct void: + pass +ctypedef void* EGLStreamKHR + +ctypedef unsigned int EGLint + +cdef extern from "": + cdef struct void: + pass +ctypedef void* EGLSyncKHR + +ctypedef uint32_t VdpDevice + +ctypedef unsigned long long VdpGetProcAddress + +ctypedef uint32_t VdpVideoSurface + +ctypedef uint32_t VdpOutputSurface + +cdef CUresult cuGetErrorString(CUresult error, const char** pStr) except ?CUDA_ERROR_NOT_FOUND nogil + +cdef CUresult cuGetErrorName(CUresult error, const char** pStr) except ?CUDA_ERROR_NOT_FOUND nogil + +cdef CUresult cuInit(unsigned int Flags) except ?CUDA_ERROR_NOT_FOUND nogil + +cdef CUresult cuDriverGetVersion(int* driverVersion) except ?CUDA_ERROR_NOT_FOUND nogil + +cdef CUresult cuDeviceGet(CUdevice* device, int ordinal) except ?CUDA_ERROR_NOT_FOUND nogil + +cdef CUresult cuDeviceGetCount(int* count) except ?CUDA_ERROR_NOT_FOUND nogil + +cdef CUresult cuDeviceGetName(char* name, int length, CUdevice dev) except ?CUDA_ERROR_NOT_FOUND nogil + +cdef CUresult cuDeviceGetUuid(CUuuid* uuid, CUdevice dev) except ?CUDA_ERROR_NOT_FOUND nogil + +cdef CUresult cuDeviceGetLuid(char* luid, unsigned int* deviceNodeMask, CUdevice dev) except ?CUDA_ERROR_NOT_FOUND nogil + +cdef CUresult cuDeviceTotalMem(size_t* numbytes, CUdevice dev) except ?CUDA_ERROR_NOT_FOUND nogil + +cdef CUresult cuDeviceGetTexture1DLinearMaxWidth(size_t* maxWidthInElements, CUarray_format pformat, unsigned numChannels, CUdevice dev) except ?CUDA_ERROR_NOT_FOUND nogil + +cdef CUresult cuDeviceGetAttribute(int* pi, CUdevice_attribute attrib, CUdevice dev) except ?CUDA_ERROR_NOT_FOUND nogil + +cdef CUresult cuDeviceGetHostAtomicCapabilities(unsigned int* capabilities, const CUatomicOperation* operations, unsigned int count, CUdevice dev) except ?CUDA_ERROR_NOT_FOUND nogil + +cdef CUresult cuDeviceGetNvSciSyncAttributes(void* nvSciSyncAttrList, CUdevice dev, int flags) except ?CUDA_ERROR_NOT_FOUND nogil + +cdef CUresult cuDeviceSetMemPool(CUdevice dev, CUmemoryPool pool) except ?CUDA_ERROR_NOT_FOUND nogil + +cdef CUresult cuDeviceGetMemPool(CUmemoryPool* pool, CUdevice dev) except ?CUDA_ERROR_NOT_FOUND nogil + +cdef CUresult cuDeviceGetDefaultMemPool(CUmemoryPool* pool_out, CUdevice dev) except ?CUDA_ERROR_NOT_FOUND nogil + +cdef CUresult cuDeviceGetExecAffinitySupport(int* pi, CUexecAffinityType typename, CUdevice dev) except ?CUDA_ERROR_NOT_FOUND nogil + +cdef CUresult cuFlushGPUDirectRDMAWrites(CUflushGPUDirectRDMAWritesTarget target, CUflushGPUDirectRDMAWritesScope scope) except ?CUDA_ERROR_NOT_FOUND nogil + +cdef CUresult cuDeviceGetProperties(CUdevprop* prop, CUdevice dev) except ?CUDA_ERROR_NOT_FOUND nogil + +cdef CUresult cuDeviceComputeCapability(int* major, int* minor, CUdevice dev) except ?CUDA_ERROR_NOT_FOUND nogil + +cdef CUresult cuDevicePrimaryCtxRetain(CUcontext* pctx, CUdevice dev) except ?CUDA_ERROR_NOT_FOUND nogil + +cdef CUresult cuDevicePrimaryCtxRelease(CUdevice dev) except ?CUDA_ERROR_NOT_FOUND nogil + +cdef CUresult cuDevicePrimaryCtxSetFlags(CUdevice dev, unsigned int flags) except ?CUDA_ERROR_NOT_FOUND nogil + +cdef CUresult cuDevicePrimaryCtxGetState(CUdevice dev, unsigned int* flags, int* active) except ?CUDA_ERROR_NOT_FOUND nogil + +cdef CUresult cuDevicePrimaryCtxReset(CUdevice dev) except ?CUDA_ERROR_NOT_FOUND nogil + +cdef CUresult cuCtxCreate(CUcontext* pctx, CUctxCreateParams* ctxCreateParams, unsigned int flags, CUdevice dev) except ?CUDA_ERROR_NOT_FOUND nogil + +cdef CUresult cuCtxDestroy(CUcontext ctx) except ?CUDA_ERROR_NOT_FOUND nogil + +cdef CUresult cuCtxPushCurrent(CUcontext ctx) except ?CUDA_ERROR_NOT_FOUND nogil + +cdef CUresult cuCtxPopCurrent(CUcontext* pctx) except ?CUDA_ERROR_NOT_FOUND nogil + +cdef CUresult cuCtxSetCurrent(CUcontext ctx) except ?CUDA_ERROR_NOT_FOUND nogil + +cdef CUresult cuCtxGetCurrent(CUcontext* pctx) except ?CUDA_ERROR_NOT_FOUND nogil + +cdef CUresult cuCtxGetDevice(CUdevice* device) except ?CUDA_ERROR_NOT_FOUND nogil + +cdef CUresult cuCtxGetDevice_v2(CUdevice* device, CUcontext ctx) except ?CUDA_ERROR_NOT_FOUND nogil + +cdef CUresult cuCtxGetFlags(unsigned int* flags) except ?CUDA_ERROR_NOT_FOUND nogil + +cdef CUresult cuCtxSetFlags(unsigned int flags) except ?CUDA_ERROR_NOT_FOUND nogil + +cdef CUresult cuCtxGetId(CUcontext ctx, unsigned long long* ctxId) except ?CUDA_ERROR_NOT_FOUND nogil + +cdef CUresult cuCtxSynchronize() except ?CUDA_ERROR_NOT_FOUND nogil + +cdef CUresult cuCtxSynchronize_v2(CUcontext ctx) except ?CUDA_ERROR_NOT_FOUND nogil + +cdef CUresult cuCtxSetLimit(CUlimit limit, size_t value) except ?CUDA_ERROR_NOT_FOUND nogil + +cdef CUresult cuCtxGetLimit(size_t* pvalue, CUlimit limit) except ?CUDA_ERROR_NOT_FOUND nogil + +cdef CUresult cuCtxGetCacheConfig(CUfunc_cache* pconfig) except ?CUDA_ERROR_NOT_FOUND nogil + +cdef CUresult cuCtxSetCacheConfig(CUfunc_cache config) except ?CUDA_ERROR_NOT_FOUND nogil + +cdef CUresult cuCtxGetApiVersion(CUcontext ctx, unsigned int* version) except ?CUDA_ERROR_NOT_FOUND nogil + +cdef CUresult cuCtxGetStreamPriorityRange(int* leastPriority, int* greatestPriority) except ?CUDA_ERROR_NOT_FOUND nogil + +cdef CUresult cuCtxResetPersistingL2Cache() except ?CUDA_ERROR_NOT_FOUND nogil + +cdef CUresult cuCtxGetExecAffinity(CUexecAffinityParam* pExecAffinity, CUexecAffinityType typename) except ?CUDA_ERROR_NOT_FOUND nogil + +cdef CUresult cuCtxRecordEvent(CUcontext hCtx, CUevent hEvent) except ?CUDA_ERROR_NOT_FOUND nogil + +cdef CUresult cuCtxWaitEvent(CUcontext hCtx, CUevent hEvent) except ?CUDA_ERROR_NOT_FOUND nogil + +cdef CUresult cuCtxAttach(CUcontext* pctx, unsigned int flags) except ?CUDA_ERROR_NOT_FOUND nogil + +cdef CUresult cuCtxDetach(CUcontext ctx) except ?CUDA_ERROR_NOT_FOUND nogil + +cdef CUresult cuCtxGetSharedMemConfig(CUsharedconfig* pConfig) except ?CUDA_ERROR_NOT_FOUND nogil + +cdef CUresult cuCtxSetSharedMemConfig(CUsharedconfig config) except ?CUDA_ERROR_NOT_FOUND nogil + +cdef CUresult cuModuleLoad(CUmodule* module, const char* fname) except ?CUDA_ERROR_NOT_FOUND nogil + +cdef CUresult cuModuleLoadData(CUmodule* module, const void* image) except ?CUDA_ERROR_NOT_FOUND nogil + +cdef CUresult cuModuleLoadDataEx(CUmodule* module, const void* image, unsigned int numOptions, CUjit_option* options, void** optionValues) except ?CUDA_ERROR_NOT_FOUND nogil + +cdef CUresult cuModuleLoadFatBinary(CUmodule* module, const void* fatCubin) except ?CUDA_ERROR_NOT_FOUND nogil + +cdef CUresult cuModuleUnload(CUmodule hmod) except ?CUDA_ERROR_NOT_FOUND nogil + +cdef CUresult cuModuleGetLoadingMode(CUmoduleLoadingMode* mode) except ?CUDA_ERROR_NOT_FOUND nogil + +cdef CUresult cuModuleGetFunction(CUfunction* hfunc, CUmodule hmod, const char* name) except ?CUDA_ERROR_NOT_FOUND nogil + +cdef CUresult cuModuleGetFunctionCount(unsigned int* count, CUmodule mod) except ?CUDA_ERROR_NOT_FOUND nogil + +cdef CUresult cuModuleEnumerateFunctions(CUfunction* functions, unsigned int numFunctions, CUmodule mod) except ?CUDA_ERROR_NOT_FOUND nogil + +cdef CUresult cuModuleGetGlobal(CUdeviceptr* dptr, size_t* numbytes, CUmodule hmod, const char* name) except ?CUDA_ERROR_NOT_FOUND nogil + +cdef CUresult cuLinkCreate(unsigned int numOptions, CUjit_option* options, void** optionValues, CUlinkState* stateOut) except ?CUDA_ERROR_NOT_FOUND nogil + +cdef CUresult cuLinkAddData(CUlinkState state, CUjitInputType typename, void* data, size_t size, const char* name, unsigned int numOptions, CUjit_option* options, void** optionValues) except ?CUDA_ERROR_NOT_FOUND nogil + +cdef CUresult cuLinkAddFile(CUlinkState state, CUjitInputType typename, const char* path, unsigned int numOptions, CUjit_option* options, void** optionValues) except ?CUDA_ERROR_NOT_FOUND nogil + +cdef CUresult cuLinkComplete(CUlinkState state, void** cubinOut, size_t* sizeOut) except ?CUDA_ERROR_NOT_FOUND nogil + +cdef CUresult cuLinkDestroy(CUlinkState state) except ?CUDA_ERROR_NOT_FOUND nogil + +cdef CUresult cuModuleGetTexRef(CUtexref* pTexRef, CUmodule hmod, const char* name) except ?CUDA_ERROR_NOT_FOUND nogil + +cdef CUresult cuModuleGetSurfRef(CUsurfref* pSurfRef, CUmodule hmod, const char* name) except ?CUDA_ERROR_NOT_FOUND nogil + +cdef CUresult cuLibraryLoadData(CUlibrary* library, const void* code, CUjit_option* jitOptions, void** jitOptionsValues, unsigned int numJitOptions, CUlibraryOption* libraryOptions, void** libraryOptionValues, unsigned int numLibraryOptions) except ?CUDA_ERROR_NOT_FOUND nogil + +cdef CUresult cuLibraryLoadFromFile(CUlibrary* library, const char* fileName, CUjit_option* jitOptions, void** jitOptionsValues, unsigned int numJitOptions, CUlibraryOption* libraryOptions, void** libraryOptionValues, unsigned int numLibraryOptions) except ?CUDA_ERROR_NOT_FOUND nogil + +cdef CUresult cuLibraryUnload(CUlibrary library) except ?CUDA_ERROR_NOT_FOUND nogil + +cdef CUresult cuLibraryGetKernel(CUkernel* pKernel, CUlibrary library, const char* name) except ?CUDA_ERROR_NOT_FOUND nogil + +cdef CUresult cuLibraryGetKernelCount(unsigned int* count, CUlibrary lib) except ?CUDA_ERROR_NOT_FOUND nogil + +cdef CUresult cuLibraryEnumerateKernels(CUkernel* kernels, unsigned int numKernels, CUlibrary lib) except ?CUDA_ERROR_NOT_FOUND nogil + +cdef CUresult cuLibraryGetModule(CUmodule* pMod, CUlibrary library) except ?CUDA_ERROR_NOT_FOUND nogil + +cdef CUresult cuKernelGetFunction(CUfunction* pFunc, CUkernel kernel) except ?CUDA_ERROR_NOT_FOUND nogil + +cdef CUresult cuKernelGetLibrary(CUlibrary* pLib, CUkernel kernel) except ?CUDA_ERROR_NOT_FOUND nogil + +cdef CUresult cuLibraryGetGlobal(CUdeviceptr* dptr, size_t* numbytes, CUlibrary library, const char* name) except ?CUDA_ERROR_NOT_FOUND nogil + +cdef CUresult cuLibraryGetManaged(CUdeviceptr* dptr, size_t* numbytes, CUlibrary library, const char* name) except ?CUDA_ERROR_NOT_FOUND nogil + +cdef CUresult cuLibraryGetUnifiedFunction(void** fptr, CUlibrary library, const char* symbol) except ?CUDA_ERROR_NOT_FOUND nogil + +cdef CUresult cuKernelGetAttribute(int* pi, CUfunction_attribute attrib, CUkernel kernel, CUdevice dev) except ?CUDA_ERROR_NOT_FOUND nogil + +cdef CUresult cuKernelSetAttribute(CUfunction_attribute attrib, int val, CUkernel kernel, CUdevice dev) except ?CUDA_ERROR_NOT_FOUND nogil + +cdef CUresult cuKernelSetCacheConfig(CUkernel kernel, CUfunc_cache config, CUdevice dev) except ?CUDA_ERROR_NOT_FOUND nogil + +cdef CUresult cuKernelGetName(const char** name, CUkernel hfunc) except ?CUDA_ERROR_NOT_FOUND nogil + +cdef CUresult cuKernelGetParamInfo(CUkernel kernel, size_t paramIndex, size_t* paramOffset, size_t* paramSize) except ?CUDA_ERROR_NOT_FOUND nogil + +cdef CUresult cuKernelGetParamCount(CUkernel kernel, size_t* paramCount) except ?CUDA_ERROR_NOT_FOUND nogil + +cdef CUresult cuMemGetInfo(size_t* free, size_t* total) except ?CUDA_ERROR_NOT_FOUND nogil + +cdef CUresult cuMemAlloc(CUdeviceptr* dptr, size_t bytesize) except ?CUDA_ERROR_NOT_FOUND nogil + +cdef CUresult cuMemAllocPitch(CUdeviceptr* dptr, size_t* pPitch, size_t WidthInBytes, size_t Height, unsigned int ElementSizeBytes) except ?CUDA_ERROR_NOT_FOUND nogil + +cdef CUresult cuMemFree(CUdeviceptr dptr) except ?CUDA_ERROR_NOT_FOUND nogil + +cdef CUresult cuMemGetAddressRange(CUdeviceptr* pbase, size_t* psize, CUdeviceptr dptr) except ?CUDA_ERROR_NOT_FOUND nogil + +cdef CUresult cuMemAllocHost(void** pp, size_t bytesize) except ?CUDA_ERROR_NOT_FOUND nogil + +cdef CUresult cuMemFreeHost(void* p) except ?CUDA_ERROR_NOT_FOUND nogil + +cdef CUresult cuMemHostAlloc(void** pp, size_t bytesize, unsigned int Flags) except ?CUDA_ERROR_NOT_FOUND nogil + +cdef CUresult cuMemHostGetDevicePointer(CUdeviceptr* pdptr, void* p, unsigned int Flags) except ?CUDA_ERROR_NOT_FOUND nogil + +cdef CUresult cuMemHostGetFlags(unsigned int* pFlags, void* p) except ?CUDA_ERROR_NOT_FOUND nogil + +cdef CUresult cuMemAllocManaged(CUdeviceptr* dptr, size_t bytesize, unsigned int flags) except ?CUDA_ERROR_NOT_FOUND nogil + +cdef CUresult cuDeviceRegisterAsyncNotification(CUdevice device, CUasyncCallback callbackFunc, void* userData, CUasyncCallbackHandle* callback) except ?CUDA_ERROR_NOT_FOUND nogil + +cdef CUresult cuDeviceUnregisterAsyncNotification(CUdevice device, CUasyncCallbackHandle callback) except ?CUDA_ERROR_NOT_FOUND nogil + +cdef CUresult cuDeviceGetByPCIBusId(CUdevice* dev, const char* pciBusId) except ?CUDA_ERROR_NOT_FOUND nogil + +cdef CUresult cuDeviceGetPCIBusId(char* pciBusId, int length, CUdevice dev) except ?CUDA_ERROR_NOT_FOUND nogil + +cdef CUresult cuIpcGetEventHandle(CUipcEventHandle* pHandle, CUevent event) except ?CUDA_ERROR_NOT_FOUND nogil + +cdef CUresult cuIpcOpenEventHandle(CUevent* phEvent, CUipcEventHandle handle) except ?CUDA_ERROR_NOT_FOUND nogil + +cdef CUresult cuIpcGetMemHandle(CUipcMemHandle* pHandle, CUdeviceptr dptr) except ?CUDA_ERROR_NOT_FOUND nogil + +cdef CUresult cuIpcOpenMemHandle(CUdeviceptr* pdptr, CUipcMemHandle handle, unsigned int Flags) except ?CUDA_ERROR_NOT_FOUND nogil + +cdef CUresult cuIpcCloseMemHandle(CUdeviceptr dptr) except ?CUDA_ERROR_NOT_FOUND nogil + +cdef CUresult cuMemHostRegister(void* p, size_t bytesize, unsigned int Flags) except ?CUDA_ERROR_NOT_FOUND nogil + +cdef CUresult cuMemHostUnregister(void* p) except ?CUDA_ERROR_NOT_FOUND nogil + +cdef CUresult cuMemcpy(CUdeviceptr dst, CUdeviceptr src, size_t ByteCount) except ?CUDA_ERROR_NOT_FOUND nogil + +cdef CUresult cuMemcpyPeer(CUdeviceptr dstDevice, CUcontext dstContext, CUdeviceptr srcDevice, CUcontext srcContext, size_t ByteCount) except ?CUDA_ERROR_NOT_FOUND nogil + +cdef CUresult cuMemcpyHtoD(CUdeviceptr dstDevice, const void* srcHost, size_t ByteCount) except ?CUDA_ERROR_NOT_FOUND nogil + +cdef CUresult cuMemcpyDtoH(void* dstHost, CUdeviceptr srcDevice, size_t ByteCount) except ?CUDA_ERROR_NOT_FOUND nogil + +cdef CUresult cuMemcpyDtoD(CUdeviceptr dstDevice, CUdeviceptr srcDevice, size_t ByteCount) except ?CUDA_ERROR_NOT_FOUND nogil + +cdef CUresult cuMemcpyDtoA(CUarray dstArray, size_t dstOffset, CUdeviceptr srcDevice, size_t ByteCount) except ?CUDA_ERROR_NOT_FOUND nogil + +cdef CUresult cuMemcpyAtoD(CUdeviceptr dstDevice, CUarray srcArray, size_t srcOffset, size_t ByteCount) except ?CUDA_ERROR_NOT_FOUND nogil + +cdef CUresult cuMemcpyHtoA(CUarray dstArray, size_t dstOffset, const void* srcHost, size_t ByteCount) except ?CUDA_ERROR_NOT_FOUND nogil + +cdef CUresult cuMemcpyAtoH(void* dstHost, CUarray srcArray, size_t srcOffset, size_t ByteCount) except ?CUDA_ERROR_NOT_FOUND nogil + +cdef CUresult cuMemcpyAtoA(CUarray dstArray, size_t dstOffset, CUarray srcArray, size_t srcOffset, size_t ByteCount) except ?CUDA_ERROR_NOT_FOUND nogil + +cdef CUresult cuMemcpy2D(const CUDA_MEMCPY2D* pCopy) except ?CUDA_ERROR_NOT_FOUND nogil + +cdef CUresult cuMemcpy2DUnaligned(const CUDA_MEMCPY2D* pCopy) except ?CUDA_ERROR_NOT_FOUND nogil + +cdef CUresult cuMemcpy3D(const CUDA_MEMCPY3D* pCopy) except ?CUDA_ERROR_NOT_FOUND nogil + +cdef CUresult cuMemcpy3DPeer(const CUDA_MEMCPY3D_PEER* pCopy) except ?CUDA_ERROR_NOT_FOUND nogil + +cdef CUresult cuMemcpyAsync(CUdeviceptr dst, CUdeviceptr src, size_t ByteCount, CUstream hStream) except ?CUDA_ERROR_NOT_FOUND nogil + +cdef CUresult cuMemcpyPeerAsync(CUdeviceptr dstDevice, CUcontext dstContext, CUdeviceptr srcDevice, CUcontext srcContext, size_t ByteCount, CUstream hStream) except ?CUDA_ERROR_NOT_FOUND nogil + +cdef CUresult cuMemcpyHtoDAsync(CUdeviceptr dstDevice, const void* srcHost, size_t ByteCount, CUstream hStream) except ?CUDA_ERROR_NOT_FOUND nogil + +cdef CUresult cuMemcpyDtoHAsync(void* dstHost, CUdeviceptr srcDevice, size_t ByteCount, CUstream hStream) except ?CUDA_ERROR_NOT_FOUND nogil + +cdef CUresult cuMemcpyDtoDAsync(CUdeviceptr dstDevice, CUdeviceptr srcDevice, size_t ByteCount, CUstream hStream) except ?CUDA_ERROR_NOT_FOUND nogil + +cdef CUresult cuMemcpyHtoAAsync(CUarray dstArray, size_t dstOffset, const void* srcHost, size_t ByteCount, CUstream hStream) except ?CUDA_ERROR_NOT_FOUND nogil + +cdef CUresult cuMemcpyAtoHAsync(void* dstHost, CUarray srcArray, size_t srcOffset, size_t ByteCount, CUstream hStream) except ?CUDA_ERROR_NOT_FOUND nogil + +cdef CUresult cuMemcpy2DAsync(const CUDA_MEMCPY2D* pCopy, CUstream hStream) except ?CUDA_ERROR_NOT_FOUND nogil + +cdef CUresult cuMemcpy3DAsync(const CUDA_MEMCPY3D* pCopy, CUstream hStream) except ?CUDA_ERROR_NOT_FOUND nogil + +cdef CUresult cuMemcpy3DPeerAsync(const CUDA_MEMCPY3D_PEER* pCopy, CUstream hStream) except ?CUDA_ERROR_NOT_FOUND nogil + +cdef CUresult cuMemcpyBatchAsync(CUdeviceptr* dsts, CUdeviceptr* srcs, size_t* sizes, size_t count, CUmemcpyAttributes* attrs, size_t* attrsIdxs, size_t numAttrs, CUstream hStream) except ?CUDA_ERROR_NOT_FOUND nogil + +cdef CUresult cuMemcpy3DBatchAsync(size_t numOps, CUDA_MEMCPY3D_BATCH_OP* opList, unsigned long long flags, CUstream hStream) except ?CUDA_ERROR_NOT_FOUND nogil + +cdef CUresult cuMemcpyWithAttributesAsync(CUdeviceptr dst, CUdeviceptr src, size_t size, CUmemcpyAttributes* attr, CUstream hStream) except ?CUDA_ERROR_NOT_FOUND nogil + +cdef CUresult cuMemcpy3DWithAttributesAsync(CUDA_MEMCPY3D_BATCH_OP* op, unsigned long long flags, CUstream hStream) except ?CUDA_ERROR_NOT_FOUND nogil + +cdef CUresult cuMemsetD8(CUdeviceptr dstDevice, unsigned char uc, size_t N) except ?CUDA_ERROR_NOT_FOUND nogil + +cdef CUresult cuMemsetD16(CUdeviceptr dstDevice, unsigned short us, size_t N) except ?CUDA_ERROR_NOT_FOUND nogil + +cdef CUresult cuMemsetD32(CUdeviceptr dstDevice, unsigned int ui, size_t N) except ?CUDA_ERROR_NOT_FOUND nogil + +cdef CUresult cuMemsetD2D8(CUdeviceptr dstDevice, size_t dstPitch, unsigned char uc, size_t Width, size_t Height) except ?CUDA_ERROR_NOT_FOUND nogil + +cdef CUresult cuMemsetD2D16(CUdeviceptr dstDevice, size_t dstPitch, unsigned short us, size_t Width, size_t Height) except ?CUDA_ERROR_NOT_FOUND nogil + +cdef CUresult cuMemsetD2D32(CUdeviceptr dstDevice, size_t dstPitch, unsigned int ui, size_t Width, size_t Height) except ?CUDA_ERROR_NOT_FOUND nogil + +cdef CUresult cuMemsetD8Async(CUdeviceptr dstDevice, unsigned char uc, size_t N, CUstream hStream) except ?CUDA_ERROR_NOT_FOUND nogil + +cdef CUresult cuMemsetD16Async(CUdeviceptr dstDevice, unsigned short us, size_t N, CUstream hStream) except ?CUDA_ERROR_NOT_FOUND nogil + +cdef CUresult cuMemsetD32Async(CUdeviceptr dstDevice, unsigned int ui, size_t N, CUstream hStream) except ?CUDA_ERROR_NOT_FOUND nogil + +cdef CUresult cuMemsetD2D8Async(CUdeviceptr dstDevice, size_t dstPitch, unsigned char uc, size_t Width, size_t Height, CUstream hStream) except ?CUDA_ERROR_NOT_FOUND nogil + +cdef CUresult cuMemsetD2D16Async(CUdeviceptr dstDevice, size_t dstPitch, unsigned short us, size_t Width, size_t Height, CUstream hStream) except ?CUDA_ERROR_NOT_FOUND nogil + +cdef CUresult cuMemsetD2D32Async(CUdeviceptr dstDevice, size_t dstPitch, unsigned int ui, size_t Width, size_t Height, CUstream hStream) except ?CUDA_ERROR_NOT_FOUND nogil + +cdef CUresult cuArrayCreate(CUarray* pHandle, const CUDA_ARRAY_DESCRIPTOR* pAllocateArray) except ?CUDA_ERROR_NOT_FOUND nogil + +cdef CUresult cuArrayGetDescriptor(CUDA_ARRAY_DESCRIPTOR* pArrayDescriptor, CUarray hArray) except ?CUDA_ERROR_NOT_FOUND nogil + +cdef CUresult cuArrayGetSparseProperties(CUDA_ARRAY_SPARSE_PROPERTIES* sparseProperties, CUarray array) except ?CUDA_ERROR_NOT_FOUND nogil + +cdef CUresult cuMipmappedArrayGetSparseProperties(CUDA_ARRAY_SPARSE_PROPERTIES* sparseProperties, CUmipmappedArray mipmap) except ?CUDA_ERROR_NOT_FOUND nogil + +cdef CUresult cuArrayGetMemoryRequirements(CUDA_ARRAY_MEMORY_REQUIREMENTS* memoryRequirements, CUarray array, CUdevice device) except ?CUDA_ERROR_NOT_FOUND nogil + +cdef CUresult cuMipmappedArrayGetMemoryRequirements(CUDA_ARRAY_MEMORY_REQUIREMENTS* memoryRequirements, CUmipmappedArray mipmap, CUdevice device) except ?CUDA_ERROR_NOT_FOUND nogil + +cdef CUresult cuArrayGetPlane(CUarray* pPlaneArray, CUarray hArray, unsigned int planeIdx) except ?CUDA_ERROR_NOT_FOUND nogil + +cdef CUresult cuArrayDestroy(CUarray hArray) except ?CUDA_ERROR_NOT_FOUND nogil + +cdef CUresult cuArray3DCreate(CUarray* pHandle, const CUDA_ARRAY3D_DESCRIPTOR* pAllocateArray) except ?CUDA_ERROR_NOT_FOUND nogil + +cdef CUresult cuArray3DGetDescriptor(CUDA_ARRAY3D_DESCRIPTOR* pArrayDescriptor, CUarray hArray) except ?CUDA_ERROR_NOT_FOUND nogil + +cdef CUresult cuMipmappedArrayCreate(CUmipmappedArray* pHandle, const CUDA_ARRAY3D_DESCRIPTOR* pMipmappedArrayDesc, unsigned int numMipmapLevels) except ?CUDA_ERROR_NOT_FOUND nogil + +cdef CUresult cuMipmappedArrayGetLevel(CUarray* pLevelArray, CUmipmappedArray hMipmappedArray, unsigned int level) except ?CUDA_ERROR_NOT_FOUND nogil + +cdef CUresult cuMipmappedArrayDestroy(CUmipmappedArray hMipmappedArray) except ?CUDA_ERROR_NOT_FOUND nogil + +cdef CUresult cuMemGetHandleForAddressRange(void* handle, CUdeviceptr dptr, size_t size, CUmemRangeHandleType handleType, unsigned long long flags) except ?CUDA_ERROR_NOT_FOUND nogil + +cdef CUresult cuMemBatchDecompressAsync(CUmemDecompressParams* paramsArray, size_t count, unsigned int flags, size_t* errorIndex, CUstream stream) except ?CUDA_ERROR_NOT_FOUND nogil + +cdef CUresult cuMemAddressReserve(CUdeviceptr* ptr, size_t size, size_t alignment, CUdeviceptr addr, unsigned long long flags) except ?CUDA_ERROR_NOT_FOUND nogil + +cdef CUresult cuMemAddressFree(CUdeviceptr ptr, size_t size) except ?CUDA_ERROR_NOT_FOUND nogil + +cdef CUresult cuMemCreate(CUmemGenericAllocationHandle* handle, size_t size, const CUmemAllocationProp* prop, unsigned long long flags) except ?CUDA_ERROR_NOT_FOUND nogil + +cdef CUresult cuMemRelease(CUmemGenericAllocationHandle handle) except ?CUDA_ERROR_NOT_FOUND nogil + +cdef CUresult cuMemMap(CUdeviceptr ptr, size_t size, size_t offset, CUmemGenericAllocationHandle handle, unsigned long long flags) except ?CUDA_ERROR_NOT_FOUND nogil + +cdef CUresult cuMemMapArrayAsync(CUarrayMapInfo* mapInfoList, unsigned int count, CUstream hStream) except ?CUDA_ERROR_NOT_FOUND nogil + +cdef CUresult cuMemUnmap(CUdeviceptr ptr, size_t size) except ?CUDA_ERROR_NOT_FOUND nogil + +cdef CUresult cuMemSetAccess(CUdeviceptr ptr, size_t size, const CUmemAccessDesc* desc, size_t count) except ?CUDA_ERROR_NOT_FOUND nogil + +cdef CUresult cuMemGetAccess(unsigned long long* flags, const CUmemLocation* location, CUdeviceptr ptr) except ?CUDA_ERROR_NOT_FOUND nogil + +cdef CUresult cuMemExportToShareableHandle(void* shareableHandle, CUmemGenericAllocationHandle handle, CUmemAllocationHandleType handleType, unsigned long long flags) except ?CUDA_ERROR_NOT_FOUND nogil + +cdef CUresult cuMemImportFromShareableHandle(CUmemGenericAllocationHandle* handle, void* osHandle, CUmemAllocationHandleType shHandleType) except ?CUDA_ERROR_NOT_FOUND nogil + +cdef CUresult cuMemGetAllocationGranularity(size_t* granularity, const CUmemAllocationProp* prop, CUmemAllocationGranularity_flags option) except ?CUDA_ERROR_NOT_FOUND nogil + +cdef CUresult cuMemGetAllocationPropertiesFromHandle(CUmemAllocationProp* prop, CUmemGenericAllocationHandle handle) except ?CUDA_ERROR_NOT_FOUND nogil + +cdef CUresult cuMemRetainAllocationHandle(CUmemGenericAllocationHandle* handle, void* addr) except ?CUDA_ERROR_NOT_FOUND nogil + +cdef CUresult cuMemFreeAsync(CUdeviceptr dptr, CUstream hStream) except ?CUDA_ERROR_NOT_FOUND nogil + +cdef CUresult cuMemAllocAsync(CUdeviceptr* dptr, size_t bytesize, CUstream hStream) except ?CUDA_ERROR_NOT_FOUND nogil + +cdef CUresult cuMemPoolTrimTo(CUmemoryPool pool, size_t minBytesToKeep) except ?CUDA_ERROR_NOT_FOUND nogil + +cdef CUresult cuMemPoolSetAttribute(CUmemoryPool pool, CUmemPool_attribute attr, void* value) except ?CUDA_ERROR_NOT_FOUND nogil + +cdef CUresult cuMemPoolGetAttribute(CUmemoryPool pool, CUmemPool_attribute attr, void* value) except ?CUDA_ERROR_NOT_FOUND nogil + +cdef CUresult cuMemPoolSetAccess(CUmemoryPool pool, const CUmemAccessDesc* map, size_t count) except ?CUDA_ERROR_NOT_FOUND nogil + +cdef CUresult cuMemPoolGetAccess(CUmemAccess_flags* flags, CUmemoryPool memPool, CUmemLocation* location) except ?CUDA_ERROR_NOT_FOUND nogil + +cdef CUresult cuMemPoolCreate(CUmemoryPool* pool, const CUmemPoolProps* poolProps) except ?CUDA_ERROR_NOT_FOUND nogil + +cdef CUresult cuMemPoolDestroy(CUmemoryPool pool) except ?CUDA_ERROR_NOT_FOUND nogil + +cdef CUresult cuMemGetDefaultMemPool(CUmemoryPool* pool_out, CUmemLocation* location, CUmemAllocationType typename) except ?CUDA_ERROR_NOT_FOUND nogil + +cdef CUresult cuMemGetMemPool(CUmemoryPool* pool, CUmemLocation* location, CUmemAllocationType typename) except ?CUDA_ERROR_NOT_FOUND nogil + +cdef CUresult cuMemSetMemPool(CUmemLocation* location, CUmemAllocationType typename, CUmemoryPool pool) except ?CUDA_ERROR_NOT_FOUND nogil + +cdef CUresult cuMemAllocFromPoolAsync(CUdeviceptr* dptr, size_t bytesize, CUmemoryPool pool, CUstream hStream) except ?CUDA_ERROR_NOT_FOUND nogil + +cdef CUresult cuMemPoolExportToShareableHandle(void* handle_out, CUmemoryPool pool, CUmemAllocationHandleType handleType, unsigned long long flags) except ?CUDA_ERROR_NOT_FOUND nogil + +cdef CUresult cuMemPoolImportFromShareableHandle(CUmemoryPool* pool_out, void* handle, CUmemAllocationHandleType handleType, unsigned long long flags) except ?CUDA_ERROR_NOT_FOUND nogil + +cdef CUresult cuMemPoolExportPointer(CUmemPoolPtrExportData* shareData_out, CUdeviceptr ptr) except ?CUDA_ERROR_NOT_FOUND nogil + +cdef CUresult cuMemPoolImportPointer(CUdeviceptr* ptr_out, CUmemoryPool pool, CUmemPoolPtrExportData* shareData) except ?CUDA_ERROR_NOT_FOUND nogil + +cdef CUresult cuMulticastCreate(CUmemGenericAllocationHandle* mcHandle, const CUmulticastObjectProp* prop) except ?CUDA_ERROR_NOT_FOUND nogil + +cdef CUresult cuMulticastAddDevice(CUmemGenericAllocationHandle mcHandle, CUdevice dev) except ?CUDA_ERROR_NOT_FOUND nogil + +cdef CUresult cuMulticastBindMem(CUmemGenericAllocationHandle mcHandle, size_t mcOffset, CUmemGenericAllocationHandle memHandle, size_t memOffset, size_t size, unsigned long long flags) except ?CUDA_ERROR_NOT_FOUND nogil + +cdef CUresult cuMulticastBindMem_v2(CUmemGenericAllocationHandle mcHandle, CUdevice dev, size_t mcOffset, CUmemGenericAllocationHandle memHandle, size_t memOffset, size_t size, unsigned long long flags) except ?CUDA_ERROR_NOT_FOUND nogil + +cdef CUresult cuMulticastBindAddr(CUmemGenericAllocationHandle mcHandle, size_t mcOffset, CUdeviceptr memptr, size_t size, unsigned long long flags) except ?CUDA_ERROR_NOT_FOUND nogil + +cdef CUresult cuMulticastBindAddr_v2(CUmemGenericAllocationHandle mcHandle, CUdevice dev, size_t mcOffset, CUdeviceptr memptr, size_t size, unsigned long long flags) except ?CUDA_ERROR_NOT_FOUND nogil + +cdef CUresult cuMulticastUnbind(CUmemGenericAllocationHandle mcHandle, CUdevice dev, size_t mcOffset, size_t size) except ?CUDA_ERROR_NOT_FOUND nogil + +cdef CUresult cuMulticastGetGranularity(size_t* granularity, const CUmulticastObjectProp* prop, CUmulticastGranularity_flags option) except ?CUDA_ERROR_NOT_FOUND nogil + +cdef CUresult cuLogicalEndpointIdReserve(CUlogicalEndpointId* baseLeId, cuuint32_t count) except ?CUDA_ERROR_NOT_FOUND nogil + +cdef CUresult cuLogicalEndpointIdRelease(CUlogicalEndpointId baseLeId, cuuint32_t count) except ?CUDA_ERROR_NOT_FOUND nogil + +cdef CUresult cuLogicalEndpointCreate(CUlogicalEndpointId leId, const CUlogicalEndpointProp* prop) except ?CUDA_ERROR_NOT_FOUND nogil + +cdef CUresult cuLogicalEndpointAddDevice(CUlogicalEndpointId leId, CUdevice dev) except ?CUDA_ERROR_NOT_FOUND nogil + +cdef CUresult cuLogicalEndpointDestroy(CUlogicalEndpointId leId) except ?CUDA_ERROR_NOT_FOUND nogil + +cdef CUresult cuLogicalEndpointBindAddr(CUlogicalEndpointId leId, CUdevice dev, cuuint64_t offset, void* ptr, cuuint64_t size, unsigned long long flags) except ?CUDA_ERROR_NOT_FOUND nogil + +cdef CUresult cuLogicalEndpointBindMem(CUlogicalEndpointId leId, CUdevice dev, cuuint64_t offset, CUmemGenericAllocationHandle memHandle, cuuint64_t memOffset, cuuint64_t size, unsigned long long flags) except ?CUDA_ERROR_NOT_FOUND nogil + +cdef CUresult cuLogicalEndpointUnbind(CUlogicalEndpointId leId, CUdevice dev, cuuint64_t offset, cuuint64_t size) except ?CUDA_ERROR_NOT_FOUND nogil + +cdef CUresult cuLogicalEndpointExport(void* handle, CUlogicalEndpointId leId, CUlogicalEndpointIpcHandleType handleType) except ?CUDA_ERROR_NOT_FOUND nogil + +cdef CUresult cuLogicalEndpointImport(CUlogicalEndpointId leId, const void* handle, CUlogicalEndpointIpcHandleType handleType) except ?CUDA_ERROR_NOT_FOUND nogil + +cdef CUresult cuLogicalEndpointGetLimits(cuuint64_t* bindAlignment, cuuint64_t* maxSize, const CUlogicalEndpointProp* prop) except ?CUDA_ERROR_NOT_FOUND nogil + +cdef CUresult cuLogicalEndpointQuery(CUlogicalEndpointId leId, cuuint32_t count, int* queryStatus) except ?CUDA_ERROR_NOT_FOUND nogil + +cdef CUresult cuPointerGetAttribute(void* data, CUpointer_attribute attribute, CUdeviceptr ptr) except ?CUDA_ERROR_NOT_FOUND nogil + +cdef CUresult cuMemPrefetchAsync(CUdeviceptr devPtr, size_t count, CUmemLocation location, unsigned int flags, CUstream hStream) except ?CUDA_ERROR_NOT_FOUND nogil + +cdef CUresult cuMemAdvise(CUdeviceptr devPtr, size_t count, CUmem_advise advice, CUmemLocation location) except ?CUDA_ERROR_NOT_FOUND nogil + +cdef CUresult cuMemPrefetchBatchAsync(CUdeviceptr* dptrs, size_t* sizes, size_t count, CUmemLocation* prefetchLocs, size_t* prefetchLocIdxs, size_t numPrefetchLocs, unsigned long long flags, CUstream hStream) except ?CUDA_ERROR_NOT_FOUND nogil + +cdef CUresult cuMemDiscardBatchAsync(CUdeviceptr* dptrs, size_t* sizes, size_t count, unsigned long long flags, CUstream hStream) except ?CUDA_ERROR_NOT_FOUND nogil + +cdef CUresult cuMemDiscardAndPrefetchBatchAsync(CUdeviceptr* dptrs, size_t* sizes, size_t count, CUmemLocation* prefetchLocs, size_t* prefetchLocIdxs, size_t numPrefetchLocs, unsigned long long flags, CUstream hStream) except ?CUDA_ERROR_NOT_FOUND nogil + +cdef CUresult cuMemRangeGetAttribute(void* data, size_t dataSize, CUmem_range_attribute attribute, CUdeviceptr devPtr, size_t count) except ?CUDA_ERROR_NOT_FOUND nogil + +cdef CUresult cuMemRangeGetAttributes(void** data, size_t* dataSizes, CUmem_range_attribute* attributes, size_t numAttributes, CUdeviceptr devPtr, size_t count) except ?CUDA_ERROR_NOT_FOUND nogil + +cdef CUresult cuPointerSetAttribute(const void* value, CUpointer_attribute attribute, CUdeviceptr ptr) except ?CUDA_ERROR_NOT_FOUND nogil + +cdef CUresult cuPointerGetAttributes(unsigned int numAttributes, CUpointer_attribute* attributes, void** data, CUdeviceptr ptr) except ?CUDA_ERROR_NOT_FOUND nogil + +cdef CUresult cuStreamCreate(CUstream* phStream, unsigned int Flags) except ?CUDA_ERROR_NOT_FOUND nogil + +cdef CUresult cuStreamCreateWithPriority(CUstream* phStream, unsigned int flags, int priority) except ?CUDA_ERROR_NOT_FOUND nogil + +cdef CUresult cuStreamBeginCaptureToCig(CUstream hStream, CUstreamCigCaptureParams* streamCigCaptureParams) except ?CUDA_ERROR_NOT_FOUND nogil + +cdef CUresult cuStreamEndCaptureToCig(CUstream hStream) except ?CUDA_ERROR_NOT_FOUND nogil + +cdef CUresult cuStreamGetPriority(CUstream hStream, int* priority) except ?CUDA_ERROR_NOT_FOUND nogil + +cdef CUresult cuStreamGetDevice(CUstream hStream, CUdevice* device) except ?CUDA_ERROR_NOT_FOUND nogil + +cdef CUresult cuStreamGetFlags(CUstream hStream, unsigned int* flags) except ?CUDA_ERROR_NOT_FOUND nogil + +cdef CUresult cuStreamGetId(CUstream hStream, unsigned long long* streamId) except ?CUDA_ERROR_NOT_FOUND nogil + +cdef CUresult cuStreamGetCtx(CUstream hStream, CUcontext* pctx) except ?CUDA_ERROR_NOT_FOUND nogil + +cdef CUresult cuStreamGetCtx_v2(CUstream hStream, CUcontext* pCtx, CUgreenCtx* pGreenCtx) except ?CUDA_ERROR_NOT_FOUND nogil + +cdef CUresult cuStreamWaitEvent(CUstream hStream, CUevent hEvent, unsigned int Flags) except ?CUDA_ERROR_NOT_FOUND nogil + +cdef CUresult cuStreamAddCallback(CUstream hStream, CUstreamCallback callback, void* userData, unsigned int flags) except ?CUDA_ERROR_NOT_FOUND nogil + +cdef CUresult cuStreamBeginCapture(CUstream hStream, CUstreamCaptureMode mode) except ?CUDA_ERROR_NOT_FOUND nogil + +cdef CUresult cuStreamBeginRecaptureToGraph(CUstream hStream, CUstreamCaptureMode mode, CUgraph hGraph, CUgraphRecaptureCallback callbackFunc, void* userData) except ?CUDA_ERROR_NOT_FOUND nogil + +cdef CUresult cuStreamBeginCaptureToGraph(CUstream hStream, CUgraph hGraph, const CUgraphNode* dependencies, const CUgraphEdgeData* dependencyData, size_t numDependencies, CUstreamCaptureMode mode) except ?CUDA_ERROR_NOT_FOUND nogil + +cdef CUresult cuThreadExchangeStreamCaptureMode(CUstreamCaptureMode* mode) except ?CUDA_ERROR_NOT_FOUND nogil + +cdef CUresult cuStreamEndCapture(CUstream hStream, CUgraph* phGraph) except ?CUDA_ERROR_NOT_FOUND nogil + +cdef CUresult cuStreamIsCapturing(CUstream hStream, CUstreamCaptureStatus* captureStatus) except ?CUDA_ERROR_NOT_FOUND nogil + +cdef CUresult cuStreamGetCaptureInfo(CUstream hStream, CUstreamCaptureStatus* captureStatus_out, cuuint64_t* id_out, CUgraph* graph_out, const CUgraphNode** dependencies_out, const CUgraphEdgeData** edgeData_out, size_t* numDependencies_out) except ?CUDA_ERROR_NOT_FOUND nogil + +cdef CUresult cuStreamUpdateCaptureDependencies(CUstream hStream, CUgraphNode* dependencies, const CUgraphEdgeData* dependencyData, size_t numDependencies, unsigned int flags) except ?CUDA_ERROR_NOT_FOUND nogil + +cdef CUresult cuStreamAttachMemAsync(CUstream hStream, CUdeviceptr dptr, size_t length, unsigned int flags) except ?CUDA_ERROR_NOT_FOUND nogil + +cdef CUresult cuStreamQuery(CUstream hStream) except ?CUDA_ERROR_NOT_FOUND nogil + +cdef CUresult cuStreamSynchronize(CUstream hStream) except ?CUDA_ERROR_NOT_FOUND nogil + +cdef CUresult cuStreamDestroy(CUstream hStream) except ?CUDA_ERROR_NOT_FOUND nogil + +cdef CUresult cuStreamCopyAttributes(CUstream dst, CUstream src) except ?CUDA_ERROR_NOT_FOUND nogil + +cdef CUresult cuStreamGetAttribute(CUstream hStream, CUstreamAttrID attr, CUstreamAttrValue* value_out) except ?CUDA_ERROR_NOT_FOUND nogil + +cdef CUresult cuStreamSetAttribute(CUstream hStream, CUstreamAttrID attr, const CUstreamAttrValue* value) except ?CUDA_ERROR_NOT_FOUND nogil + +cdef CUresult cuEventCreate(CUevent* phEvent, unsigned int Flags) except ?CUDA_ERROR_NOT_FOUND nogil + +cdef CUresult cuEventRecord(CUevent hEvent, CUstream hStream) except ?CUDA_ERROR_NOT_FOUND nogil + +cdef CUresult cuEventRecordWithFlags(CUevent hEvent, CUstream hStream, unsigned int flags) except ?CUDA_ERROR_NOT_FOUND nogil + +cdef CUresult cuEventQuery(CUevent hEvent) except ?CUDA_ERROR_NOT_FOUND nogil + +cdef CUresult cuEventSynchronize(CUevent hEvent) except ?CUDA_ERROR_NOT_FOUND nogil + +cdef CUresult cuEventDestroy(CUevent hEvent) except ?CUDA_ERROR_NOT_FOUND nogil + +cdef CUresult cuEventElapsedTime(float* pMilliseconds, CUevent hStart, CUevent hEnd) except ?CUDA_ERROR_NOT_FOUND nogil + +cdef CUresult cuImportExternalMemory(CUexternalMemory* extMem_out, const CUDA_EXTERNAL_MEMORY_HANDLE_DESC* memHandleDesc) except ?CUDA_ERROR_NOT_FOUND nogil + +cdef CUresult cuExternalMemoryGetMappedBuffer(CUdeviceptr* devPtr, CUexternalMemory extMem, const CUDA_EXTERNAL_MEMORY_BUFFER_DESC* bufferDesc) except ?CUDA_ERROR_NOT_FOUND nogil + +cdef CUresult cuExternalMemoryGetMappedMipmappedArray(CUmipmappedArray* mipmap, CUexternalMemory extMem, const CUDA_EXTERNAL_MEMORY_MIPMAPPED_ARRAY_DESC* mipmapDesc) except ?CUDA_ERROR_NOT_FOUND nogil + +cdef CUresult cuDestroyExternalMemory(CUexternalMemory extMem) except ?CUDA_ERROR_NOT_FOUND nogil + +cdef CUresult cuImportExternalSemaphore(CUexternalSemaphore* extSem_out, const CUDA_EXTERNAL_SEMAPHORE_HANDLE_DESC* semHandleDesc) except ?CUDA_ERROR_NOT_FOUND nogil + +cdef CUresult cuSignalExternalSemaphoresAsync(const CUexternalSemaphore* extSemArray, const CUDA_EXTERNAL_SEMAPHORE_SIGNAL_PARAMS* paramsArray, unsigned int numExtSems, CUstream stream) except ?CUDA_ERROR_NOT_FOUND nogil + +cdef CUresult cuWaitExternalSemaphoresAsync(const CUexternalSemaphore* extSemArray, const CUDA_EXTERNAL_SEMAPHORE_WAIT_PARAMS* paramsArray, unsigned int numExtSems, CUstream stream) except ?CUDA_ERROR_NOT_FOUND nogil + +cdef CUresult cuDestroyExternalSemaphore(CUexternalSemaphore extSem) except ?CUDA_ERROR_NOT_FOUND nogil + +cdef CUresult cuStreamWaitValue32(CUstream stream, CUdeviceptr addr, cuuint32_t value, unsigned int flags) except ?CUDA_ERROR_NOT_FOUND nogil + +cdef CUresult cuStreamWaitValue64(CUstream stream, CUdeviceptr addr, cuuint64_t value, unsigned int flags) except ?CUDA_ERROR_NOT_FOUND nogil + +cdef CUresult cuStreamWriteValue32(CUstream stream, CUdeviceptr addr, cuuint32_t value, unsigned int flags) except ?CUDA_ERROR_NOT_FOUND nogil + +cdef CUresult cuStreamWriteValue64(CUstream stream, CUdeviceptr addr, cuuint64_t value, unsigned int flags) except ?CUDA_ERROR_NOT_FOUND nogil + +cdef CUresult cuStreamBatchMemOp(CUstream stream, unsigned int count, CUstreamBatchMemOpParams* paramArray, unsigned int flags) except ?CUDA_ERROR_NOT_FOUND nogil + +cdef CUresult cuFuncGetAttribute(int* pi, CUfunction_attribute attrib, CUfunction hfunc) except ?CUDA_ERROR_NOT_FOUND nogil + +cdef CUresult cuFuncSetAttribute(CUfunction hfunc, CUfunction_attribute attrib, int value) except ?CUDA_ERROR_NOT_FOUND nogil + +cdef CUresult cuFuncSetCacheConfig(CUfunction hfunc, CUfunc_cache config) except ?CUDA_ERROR_NOT_FOUND nogil + +cdef CUresult cuFuncGetModule(CUmodule* hmod, CUfunction hfunc) except ?CUDA_ERROR_NOT_FOUND nogil + +cdef CUresult cuFuncGetName(const char** name, CUfunction hfunc) except ?CUDA_ERROR_NOT_FOUND nogil + +cdef CUresult cuFuncGetParamInfo(CUfunction func, size_t paramIndex, size_t* paramOffset, size_t* paramSize) except ?CUDA_ERROR_NOT_FOUND nogil + +cdef CUresult cuFuncGetParamCount(CUfunction func, size_t* paramCount) except ?CUDA_ERROR_NOT_FOUND nogil + +cdef CUresult cuFuncIsLoaded(CUfunctionLoadingState* state, CUfunction function) except ?CUDA_ERROR_NOT_FOUND nogil + +cdef CUresult cuFuncLoad(CUfunction function) except ?CUDA_ERROR_NOT_FOUND nogil + +cdef CUresult cuLaunchKernel(CUfunction f, unsigned int gridDimX, unsigned int gridDimY, unsigned int gridDimZ, unsigned int blockDimX, unsigned int blockDimY, unsigned int blockDimZ, unsigned int sharedMemBytes, CUstream hStream, void** kernelParams, void** extra) except ?CUDA_ERROR_NOT_FOUND nogil + +cdef CUresult cuLaunchKernelEx(const CUlaunchConfig* config, CUfunction f, void** kernelParams, void** extra) except ?CUDA_ERROR_NOT_FOUND nogil + +cdef CUresult cuLaunchCooperativeKernel(CUfunction f, unsigned int gridDimX, unsigned int gridDimY, unsigned int gridDimZ, unsigned int blockDimX, unsigned int blockDimY, unsigned int blockDimZ, unsigned int sharedMemBytes, CUstream hStream, void** kernelParams) except ?CUDA_ERROR_NOT_FOUND nogil + +cdef CUresult cuLaunchHostFunc(CUstream hStream, CUhostFn fn, void* userData) except ?CUDA_ERROR_NOT_FOUND nogil + +cdef CUresult cuLaunchHostFunc_v2(CUstream hStream, CUhostFn fn, void* userData, unsigned int syncMode) except ?CUDA_ERROR_NOT_FOUND nogil + +cdef CUresult cuFuncSetBlockShape(CUfunction hfunc, int x, int y, int z) except ?CUDA_ERROR_NOT_FOUND nogil + +cdef CUresult cuFuncSetSharedSize(CUfunction hfunc, unsigned int numbytes) except ?CUDA_ERROR_NOT_FOUND nogil + +cdef CUresult cuParamSetSize(CUfunction hfunc, unsigned int numbytes) except ?CUDA_ERROR_NOT_FOUND nogil + +cdef CUresult cuParamSeti(CUfunction hfunc, int offset, unsigned int value) except ?CUDA_ERROR_NOT_FOUND nogil + +cdef CUresult cuParamSetf(CUfunction hfunc, int offset, float value) except ?CUDA_ERROR_NOT_FOUND nogil + +cdef CUresult cuParamSetv(CUfunction hfunc, int offset, void* ptr, unsigned int numbytes) except ?CUDA_ERROR_NOT_FOUND nogil + +cdef CUresult cuLaunch(CUfunction f) except ?CUDA_ERROR_NOT_FOUND nogil + +cdef CUresult cuLaunchGrid(CUfunction f, int grid_width, int grid_height) except ?CUDA_ERROR_NOT_FOUND nogil + +cdef CUresult cuLaunchGridAsync(CUfunction f, int grid_width, int grid_height, CUstream hStream) except ?CUDA_ERROR_NOT_FOUND nogil + +cdef CUresult cuLaunchCooperativeKernelMultiDevice(CUDA_LAUNCH_PARAMS* launchParamsList, unsigned int numDevices, unsigned int flags) except ?CUDA_ERROR_NOT_FOUND nogil + +cdef CUresult cuParamSetTexRef(CUfunction hfunc, int texunit, CUtexref hTexRef) except ?CUDA_ERROR_NOT_FOUND nogil + +cdef CUresult cuFuncSetSharedMemConfig(CUfunction hfunc, CUsharedconfig config) except ?CUDA_ERROR_NOT_FOUND nogil + +cdef CUresult cuGraphCreate(CUgraph* phGraph, unsigned int flags) except ?CUDA_ERROR_NOT_FOUND nogil + +cdef CUresult cuGraphAddKernelNode(CUgraphNode* phGraphNode, CUgraph hGraph, const CUgraphNode* dependencies, size_t numDependencies, const CUDA_KERNEL_NODE_PARAMS* nodeParams) except ?CUDA_ERROR_NOT_FOUND nogil + +cdef CUresult cuGraphKernelNodeGetParams(CUgraphNode hNode, CUDA_KERNEL_NODE_PARAMS* nodeParams) except ?CUDA_ERROR_NOT_FOUND nogil + +cdef CUresult cuGraphKernelNodeSetParams(CUgraphNode hNode, const CUDA_KERNEL_NODE_PARAMS* nodeParams) except ?CUDA_ERROR_NOT_FOUND nogil + +cdef CUresult cuGraphAddMemcpyNode(CUgraphNode* phGraphNode, CUgraph hGraph, const CUgraphNode* dependencies, size_t numDependencies, const CUDA_MEMCPY3D* copyParams, CUcontext ctx) except ?CUDA_ERROR_NOT_FOUND nogil + +cdef CUresult cuGraphMemcpyNodeGetParams(CUgraphNode hNode, CUDA_MEMCPY3D* nodeParams) except ?CUDA_ERROR_NOT_FOUND nogil + +cdef CUresult cuGraphMemcpyNodeSetParams(CUgraphNode hNode, const CUDA_MEMCPY3D* nodeParams) except ?CUDA_ERROR_NOT_FOUND nogil + +cdef CUresult cuGraphAddMemsetNode(CUgraphNode* phGraphNode, CUgraph hGraph, const CUgraphNode* dependencies, size_t numDependencies, const CUDA_MEMSET_NODE_PARAMS* memsetParams, CUcontext ctx) except ?CUDA_ERROR_NOT_FOUND nogil + +cdef CUresult cuGraphMemsetNodeGetParams(CUgraphNode hNode, CUDA_MEMSET_NODE_PARAMS* nodeParams) except ?CUDA_ERROR_NOT_FOUND nogil + +cdef CUresult cuGraphMemsetNodeSetParams(CUgraphNode hNode, const CUDA_MEMSET_NODE_PARAMS* nodeParams) except ?CUDA_ERROR_NOT_FOUND nogil + +cdef CUresult cuGraphAddHostNode(CUgraphNode* phGraphNode, CUgraph hGraph, const CUgraphNode* dependencies, size_t numDependencies, const CUDA_HOST_NODE_PARAMS* nodeParams) except ?CUDA_ERROR_NOT_FOUND nogil + +cdef CUresult cuGraphHostNodeGetParams(CUgraphNode hNode, CUDA_HOST_NODE_PARAMS* nodeParams) except ?CUDA_ERROR_NOT_FOUND nogil + +cdef CUresult cuGraphHostNodeSetParams(CUgraphNode hNode, const CUDA_HOST_NODE_PARAMS* nodeParams) except ?CUDA_ERROR_NOT_FOUND nogil + +cdef CUresult cuGraphAddChildGraphNode(CUgraphNode* phGraphNode, CUgraph hGraph, const CUgraphNode* dependencies, size_t numDependencies, CUgraph childGraph) except ?CUDA_ERROR_NOT_FOUND nogil + +cdef CUresult cuGraphChildGraphNodeGetGraph(CUgraphNode hNode, CUgraph* phGraph) except ?CUDA_ERROR_NOT_FOUND nogil + +cdef CUresult cuGraphAddEmptyNode(CUgraphNode* phGraphNode, CUgraph hGraph, const CUgraphNode* dependencies, size_t numDependencies) except ?CUDA_ERROR_NOT_FOUND nogil + +cdef CUresult cuGraphAddEventRecordNode(CUgraphNode* phGraphNode, CUgraph hGraph, const CUgraphNode* dependencies, size_t numDependencies, CUevent event) except ?CUDA_ERROR_NOT_FOUND nogil + +cdef CUresult cuGraphEventRecordNodeGetEvent(CUgraphNode hNode, CUevent* event_out) except ?CUDA_ERROR_NOT_FOUND nogil + +cdef CUresult cuGraphEventRecordNodeSetEvent(CUgraphNode hNode, CUevent event) except ?CUDA_ERROR_NOT_FOUND nogil + +cdef CUresult cuGraphAddEventWaitNode(CUgraphNode* phGraphNode, CUgraph hGraph, const CUgraphNode* dependencies, size_t numDependencies, CUevent event) except ?CUDA_ERROR_NOT_FOUND nogil + +cdef CUresult cuGraphEventWaitNodeGetEvent(CUgraphNode hNode, CUevent* event_out) except ?CUDA_ERROR_NOT_FOUND nogil + +cdef CUresult cuGraphEventWaitNodeSetEvent(CUgraphNode hNode, CUevent event) except ?CUDA_ERROR_NOT_FOUND nogil + +cdef CUresult cuGraphAddExternalSemaphoresSignalNode(CUgraphNode* phGraphNode, CUgraph hGraph, const CUgraphNode* dependencies, size_t numDependencies, const CUDA_EXT_SEM_SIGNAL_NODE_PARAMS* nodeParams) except ?CUDA_ERROR_NOT_FOUND nogil + +cdef CUresult cuGraphExternalSemaphoresSignalNodeGetParams(CUgraphNode hNode, CUDA_EXT_SEM_SIGNAL_NODE_PARAMS* params_out) except ?CUDA_ERROR_NOT_FOUND nogil + +cdef CUresult cuGraphExternalSemaphoresSignalNodeSetParams(CUgraphNode hNode, const CUDA_EXT_SEM_SIGNAL_NODE_PARAMS* nodeParams) except ?CUDA_ERROR_NOT_FOUND nogil + +cdef CUresult cuGraphAddExternalSemaphoresWaitNode(CUgraphNode* phGraphNode, CUgraph hGraph, const CUgraphNode* dependencies, size_t numDependencies, const CUDA_EXT_SEM_WAIT_NODE_PARAMS* nodeParams) except ?CUDA_ERROR_NOT_FOUND nogil + +cdef CUresult cuGraphExternalSemaphoresWaitNodeGetParams(CUgraphNode hNode, CUDA_EXT_SEM_WAIT_NODE_PARAMS* params_out) except ?CUDA_ERROR_NOT_FOUND nogil + +cdef CUresult cuGraphExternalSemaphoresWaitNodeSetParams(CUgraphNode hNode, const CUDA_EXT_SEM_WAIT_NODE_PARAMS* nodeParams) except ?CUDA_ERROR_NOT_FOUND nogil + +cdef CUresult cuGraphAddBatchMemOpNode(CUgraphNode* phGraphNode, CUgraph hGraph, const CUgraphNode* dependencies, size_t numDependencies, const CUDA_BATCH_MEM_OP_NODE_PARAMS* nodeParams) except ?CUDA_ERROR_NOT_FOUND nogil + +cdef CUresult cuGraphBatchMemOpNodeGetParams(CUgraphNode hNode, CUDA_BATCH_MEM_OP_NODE_PARAMS* nodeParams_out) except ?CUDA_ERROR_NOT_FOUND nogil + +cdef CUresult cuGraphBatchMemOpNodeSetParams(CUgraphNode hNode, const CUDA_BATCH_MEM_OP_NODE_PARAMS* nodeParams) except ?CUDA_ERROR_NOT_FOUND nogil + +cdef CUresult cuGraphExecBatchMemOpNodeSetParams(CUgraphExec hGraphExec, CUgraphNode hNode, const CUDA_BATCH_MEM_OP_NODE_PARAMS* nodeParams) except ?CUDA_ERROR_NOT_FOUND nogil + +cdef CUresult cuGraphAddMemAllocNode(CUgraphNode* phGraphNode, CUgraph hGraph, const CUgraphNode* dependencies, size_t numDependencies, CUDA_MEM_ALLOC_NODE_PARAMS* nodeParams) except ?CUDA_ERROR_NOT_FOUND nogil + +cdef CUresult cuGraphMemAllocNodeGetParams(CUgraphNode hNode, CUDA_MEM_ALLOC_NODE_PARAMS* params_out) except ?CUDA_ERROR_NOT_FOUND nogil + +cdef CUresult cuGraphAddMemFreeNode(CUgraphNode* phGraphNode, CUgraph hGraph, const CUgraphNode* dependencies, size_t numDependencies, CUdeviceptr dptr) except ?CUDA_ERROR_NOT_FOUND nogil + +cdef CUresult cuGraphMemFreeNodeGetParams(CUgraphNode hNode, CUdeviceptr* dptr_out) except ?CUDA_ERROR_NOT_FOUND nogil + +cdef CUresult cuDeviceGraphMemTrim(CUdevice device) except ?CUDA_ERROR_NOT_FOUND nogil + +cdef CUresult cuDeviceGetGraphMemAttribute(CUdevice device, CUgraphMem_attribute attr, void* value) except ?CUDA_ERROR_NOT_FOUND nogil + +cdef CUresult cuDeviceSetGraphMemAttribute(CUdevice device, CUgraphMem_attribute attr, void* value) except ?CUDA_ERROR_NOT_FOUND nogil + +cdef CUresult cuGraphClone(CUgraph* phGraphClone, CUgraph originalGraph) except ?CUDA_ERROR_NOT_FOUND nogil + +cdef CUresult cuGraphNodeFindInClone(CUgraphNode* phNode, CUgraphNode hOriginalNode, CUgraph hClonedGraph) except ?CUDA_ERROR_NOT_FOUND nogil + +cdef CUresult cuGraphNodeGetType(CUgraphNode hNode, CUgraphNodeType* typename) except ?CUDA_ERROR_NOT_FOUND nogil + +cdef CUresult cuGraphNodeGetContainingGraph(CUgraphNode hNode, CUgraph* phGraph) except ?CUDA_ERROR_NOT_FOUND nogil + +cdef CUresult cuGraphNodeGetLocalId(CUgraphNode hNode, unsigned int* nodeId) except ?CUDA_ERROR_NOT_FOUND nogil + +cdef CUresult cuGraphNodeGetToolsId(CUgraphNode hNode, unsigned long long* toolsNodeId) except ?CUDA_ERROR_NOT_FOUND nogil + +cdef CUresult cuGraphGetId(CUgraph hGraph, unsigned int* graphId) except ?CUDA_ERROR_NOT_FOUND nogil + +cdef CUresult cuGraphExecGetId(CUgraphExec hGraphExec, unsigned int* graphId) except ?CUDA_ERROR_NOT_FOUND nogil + +cdef CUresult cuGraphGetNodes(CUgraph hGraph, CUgraphNode* nodes, size_t* numNodes) except ?CUDA_ERROR_NOT_FOUND nogil + +cdef CUresult cuGraphGetRootNodes(CUgraph hGraph, CUgraphNode* rootNodes, size_t* numRootNodes) except ?CUDA_ERROR_NOT_FOUND nogil + +cdef CUresult cuGraphGetEdges(CUgraph hGraph, CUgraphNode* from_, CUgraphNode* to, CUgraphEdgeData* edgeData, size_t* numEdges) except ?CUDA_ERROR_NOT_FOUND nogil + +cdef CUresult cuGraphNodeGetDependencies(CUgraphNode hNode, CUgraphNode* dependencies, CUgraphEdgeData* edgeData, size_t* numDependencies) except ?CUDA_ERROR_NOT_FOUND nogil + +cdef CUresult cuGraphNodeGetDependentNodes(CUgraphNode hNode, CUgraphNode* dependentNodes, CUgraphEdgeData* edgeData, size_t* numDependentNodes) except ?CUDA_ERROR_NOT_FOUND nogil + +cdef CUresult cuGraphAddDependencies(CUgraph hGraph, const CUgraphNode* from_, const CUgraphNode* to, const CUgraphEdgeData* edgeData, size_t numDependencies) except ?CUDA_ERROR_NOT_FOUND nogil + +cdef CUresult cuGraphRemoveDependencies(CUgraph hGraph, const CUgraphNode* from_, const CUgraphNode* to, const CUgraphEdgeData* edgeData, size_t numDependencies) except ?CUDA_ERROR_NOT_FOUND nogil + +cdef CUresult cuGraphDestroyNode(CUgraphNode hNode) except ?CUDA_ERROR_NOT_FOUND nogil + +cdef CUresult cuGraphInstantiate(CUgraphExec* phGraphExec, CUgraph hGraph, unsigned long long flags) except ?CUDA_ERROR_NOT_FOUND nogil + +cdef CUresult cuGraphInstantiateWithParams(CUgraphExec* phGraphExec, CUgraph hGraph, CUDA_GRAPH_INSTANTIATE_PARAMS* instantiateParams) except ?CUDA_ERROR_NOT_FOUND nogil + +cdef CUresult cuGraphExecGetFlags(CUgraphExec hGraphExec, cuuint64_t* flags) except ?CUDA_ERROR_NOT_FOUND nogil + +cdef CUresult cuGraphExecKernelNodeSetParams(CUgraphExec hGraphExec, CUgraphNode hNode, const CUDA_KERNEL_NODE_PARAMS* nodeParams) except ?CUDA_ERROR_NOT_FOUND nogil + +cdef CUresult cuGraphExecMemcpyNodeSetParams(CUgraphExec hGraphExec, CUgraphNode hNode, const CUDA_MEMCPY3D* copyParams, CUcontext ctx) except ?CUDA_ERROR_NOT_FOUND nogil + +cdef CUresult cuGraphExecMemsetNodeSetParams(CUgraphExec hGraphExec, CUgraphNode hNode, const CUDA_MEMSET_NODE_PARAMS* memsetParams, CUcontext ctx) except ?CUDA_ERROR_NOT_FOUND nogil + +cdef CUresult cuGraphExecHostNodeSetParams(CUgraphExec hGraphExec, CUgraphNode hNode, const CUDA_HOST_NODE_PARAMS* nodeParams) except ?CUDA_ERROR_NOT_FOUND nogil + +cdef CUresult cuGraphExecChildGraphNodeSetParams(CUgraphExec hGraphExec, CUgraphNode hNode, CUgraph childGraph) except ?CUDA_ERROR_NOT_FOUND nogil + +cdef CUresult cuGraphExecEventRecordNodeSetEvent(CUgraphExec hGraphExec, CUgraphNode hNode, CUevent event) except ?CUDA_ERROR_NOT_FOUND nogil + +cdef CUresult cuGraphExecEventWaitNodeSetEvent(CUgraphExec hGraphExec, CUgraphNode hNode, CUevent event) except ?CUDA_ERROR_NOT_FOUND nogil + +cdef CUresult cuGraphExecExternalSemaphoresSignalNodeSetParams(CUgraphExec hGraphExec, CUgraphNode hNode, const CUDA_EXT_SEM_SIGNAL_NODE_PARAMS* nodeParams) except ?CUDA_ERROR_NOT_FOUND nogil + +cdef CUresult cuGraphExecExternalSemaphoresWaitNodeSetParams(CUgraphExec hGraphExec, CUgraphNode hNode, const CUDA_EXT_SEM_WAIT_NODE_PARAMS* nodeParams) except ?CUDA_ERROR_NOT_FOUND nogil + +cdef CUresult cuGraphNodeSetEnabled(CUgraphExec hGraphExec, CUgraphNode hNode, unsigned int isEnabled) except ?CUDA_ERROR_NOT_FOUND nogil + +cdef CUresult cuGraphNodeGetEnabled(CUgraphExec hGraphExec, CUgraphNode hNode, unsigned int* isEnabled) except ?CUDA_ERROR_NOT_FOUND nogil + +cdef CUresult cuGraphUpload(CUgraphExec hGraphExec, CUstream hStream) except ?CUDA_ERROR_NOT_FOUND nogil + +cdef CUresult cuGraphLaunch(CUgraphExec hGraphExec, CUstream hStream) except ?CUDA_ERROR_NOT_FOUND nogil + +cdef CUresult cuGraphExecDestroy(CUgraphExec hGraphExec) except ?CUDA_ERROR_NOT_FOUND nogil + +cdef CUresult cuGraphDestroy(CUgraph hGraph) except ?CUDA_ERROR_NOT_FOUND nogil + +cdef CUresult cuGraphExecUpdate(CUgraphExec hGraphExec, CUgraph hGraph, CUgraphExecUpdateResultInfo* resultInfo) except ?CUDA_ERROR_NOT_FOUND nogil + +cdef CUresult cuGraphKernelNodeCopyAttributes(CUgraphNode dst, CUgraphNode src) except ?CUDA_ERROR_NOT_FOUND nogil + +cdef CUresult cuGraphKernelNodeGetAttribute(CUgraphNode hNode, CUkernelNodeAttrID attr, CUkernelNodeAttrValue* value_out) except ?CUDA_ERROR_NOT_FOUND nogil + +cdef CUresult cuGraphKernelNodeSetAttribute(CUgraphNode hNode, CUkernelNodeAttrID attr, const CUkernelNodeAttrValue* value) except ?CUDA_ERROR_NOT_FOUND nogil + +cdef CUresult cuGraphDebugDotPrint(CUgraph hGraph, const char* path, unsigned int flags) except ?CUDA_ERROR_NOT_FOUND nogil + +cdef CUresult cuUserObjectCreate(CUuserObject* object_out, void* ptr, CUhostFn destroy, unsigned int initialRefcount, unsigned int flags) except ?CUDA_ERROR_NOT_FOUND nogil + +cdef CUresult cuUserObjectRetain(CUuserObject object, unsigned int count) except ?CUDA_ERROR_NOT_FOUND nogil + +cdef CUresult cuUserObjectRelease(CUuserObject object, unsigned int count) except ?CUDA_ERROR_NOT_FOUND nogil + +cdef CUresult cuGraphRetainUserObject(CUgraph graph, CUuserObject object, unsigned int count, unsigned int flags) except ?CUDA_ERROR_NOT_FOUND nogil + +cdef CUresult cuGraphReleaseUserObject(CUgraph graph, CUuserObject object, unsigned int count) except ?CUDA_ERROR_NOT_FOUND nogil + +cdef CUresult cuGraphAddNode(CUgraphNode* phGraphNode, CUgraph hGraph, const CUgraphNode* dependencies, const CUgraphEdgeData* dependencyData, size_t numDependencies, CUgraphNodeParams* nodeParams) except ?CUDA_ERROR_NOT_FOUND nogil + +cdef CUresult cuGraphNodeSetParams(CUgraphNode hNode, CUgraphNodeParams* nodeParams) except ?CUDA_ERROR_NOT_FOUND nogil + +cdef CUresult cuGraphNodeGetParams(CUgraphNode hNode, CUgraphNodeParams* nodeParams) except ?CUDA_ERROR_NOT_FOUND nogil + +cdef CUresult cuGraphExecNodeSetParams(CUgraphExec hGraphExec, CUgraphNode hNode, CUgraphNodeParams* nodeParams) except ?CUDA_ERROR_NOT_FOUND nogil + +cdef CUresult cuGraphConditionalHandleCreate(CUgraphConditionalHandle* pHandle_out, CUgraph hGraph, CUcontext ctx, unsigned int defaultLaunchValue, unsigned int flags) except ?CUDA_ERROR_NOT_FOUND nogil + +cdef CUresult cuOccupancyMaxActiveBlocksPerMultiprocessor(int* numBlocks, CUfunction func, int blockSize, size_t dynamicSMemSize) except ?CUDA_ERROR_NOT_FOUND nogil + +cdef CUresult cuOccupancyMaxActiveBlocksPerMultiprocessorWithFlags(int* numBlocks, CUfunction func, int blockSize, size_t dynamicSMemSize, unsigned int flags) except ?CUDA_ERROR_NOT_FOUND nogil + +cdef CUresult cuOccupancyMaxPotentialBlockSize(int* minGridSize, int* blockSize, CUfunction func, CUoccupancyB2DSize blockSizeToDynamicSMemSize, size_t dynamicSMemSize, int blockSizeLimit) except ?CUDA_ERROR_NOT_FOUND nogil + +cdef CUresult cuOccupancyMaxPotentialBlockSizeWithFlags(int* minGridSize, int* blockSize, CUfunction func, CUoccupancyB2DSize blockSizeToDynamicSMemSize, size_t dynamicSMemSize, int blockSizeLimit, unsigned int flags) except ?CUDA_ERROR_NOT_FOUND nogil + +cdef CUresult cuOccupancyAvailableDynamicSMemPerBlock(size_t* dynamicSmemSize, CUfunction func, int numBlocks, int blockSize) except ?CUDA_ERROR_NOT_FOUND nogil + +cdef CUresult cuOccupancyMaxPotentialClusterSize(int* clusterSize, CUfunction func, const CUlaunchConfig* config) except ?CUDA_ERROR_NOT_FOUND nogil + +cdef CUresult cuOccupancyMaxActiveClusters(int* numClusters, CUfunction func, const CUlaunchConfig* config) except ?CUDA_ERROR_NOT_FOUND nogil + +cdef CUresult cuTexRefSetArray(CUtexref hTexRef, CUarray hArray, unsigned int Flags) except ?CUDA_ERROR_NOT_FOUND nogil + +cdef CUresult cuTexRefSetMipmappedArray(CUtexref hTexRef, CUmipmappedArray hMipmappedArray, unsigned int Flags) except ?CUDA_ERROR_NOT_FOUND nogil + +cdef CUresult cuTexRefSetAddress(size_t* ByteOffset, CUtexref hTexRef, CUdeviceptr dptr, size_t numbytes) except ?CUDA_ERROR_NOT_FOUND nogil + +cdef CUresult cuTexRefSetAddress2D(CUtexref hTexRef, const CUDA_ARRAY_DESCRIPTOR* desc, CUdeviceptr dptr, size_t Pitch) except ?CUDA_ERROR_NOT_FOUND nogil + +cdef CUresult cuTexRefSetFormat(CUtexref hTexRef, CUarray_format fmt, int NumPackedComponents) except ?CUDA_ERROR_NOT_FOUND nogil + +cdef CUresult cuTexRefSetAddressMode(CUtexref hTexRef, int dim, CUaddress_mode am) except ?CUDA_ERROR_NOT_FOUND nogil + +cdef CUresult cuTexRefSetFilterMode(CUtexref hTexRef, CUfilter_mode fm) except ?CUDA_ERROR_NOT_FOUND nogil + +cdef CUresult cuTexRefSetMipmapFilterMode(CUtexref hTexRef, CUfilter_mode fm) except ?CUDA_ERROR_NOT_FOUND nogil + +cdef CUresult cuTexRefSetMipmapLevelBias(CUtexref hTexRef, float bias) except ?CUDA_ERROR_NOT_FOUND nogil + +cdef CUresult cuTexRefSetMipmapLevelClamp(CUtexref hTexRef, float minMipmapLevelClamp, float maxMipmapLevelClamp) except ?CUDA_ERROR_NOT_FOUND nogil + +cdef CUresult cuTexRefSetMaxAnisotropy(CUtexref hTexRef, unsigned int maxAniso) except ?CUDA_ERROR_NOT_FOUND nogil + +cdef CUresult cuTexRefSetBorderColor(CUtexref hTexRef, float* pBorderColor) except ?CUDA_ERROR_NOT_FOUND nogil + +cdef CUresult cuTexRefSetFlags(CUtexref hTexRef, unsigned int Flags) except ?CUDA_ERROR_NOT_FOUND nogil + +cdef CUresult cuTexRefGetAddress(CUdeviceptr* pdptr, CUtexref hTexRef) except ?CUDA_ERROR_NOT_FOUND nogil + +cdef CUresult cuTexRefGetArray(CUarray* phArray, CUtexref hTexRef) except ?CUDA_ERROR_NOT_FOUND nogil + +cdef CUresult cuTexRefGetMipmappedArray(CUmipmappedArray* phMipmappedArray, CUtexref hTexRef) except ?CUDA_ERROR_NOT_FOUND nogil + +cdef CUresult cuTexRefGetAddressMode(CUaddress_mode* pam, CUtexref hTexRef, int dim) except ?CUDA_ERROR_NOT_FOUND nogil + +cdef CUresult cuTexRefGetFilterMode(CUfilter_mode* pfm, CUtexref hTexRef) except ?CUDA_ERROR_NOT_FOUND nogil + +cdef CUresult cuTexRefGetFormat(CUarray_format* pFormat, int* pNumChannels, CUtexref hTexRef) except ?CUDA_ERROR_NOT_FOUND nogil + +cdef CUresult cuTexRefGetMipmapFilterMode(CUfilter_mode* pfm, CUtexref hTexRef) except ?CUDA_ERROR_NOT_FOUND nogil + +cdef CUresult cuTexRefGetMipmapLevelBias(float* pbias, CUtexref hTexRef) except ?CUDA_ERROR_NOT_FOUND nogil + +cdef CUresult cuTexRefGetMipmapLevelClamp(float* pminMipmapLevelClamp, float* pmaxMipmapLevelClamp, CUtexref hTexRef) except ?CUDA_ERROR_NOT_FOUND nogil + +cdef CUresult cuTexRefGetMaxAnisotropy(int* pmaxAniso, CUtexref hTexRef) except ?CUDA_ERROR_NOT_FOUND nogil + +cdef CUresult cuTexRefGetBorderColor(float* pBorderColor, CUtexref hTexRef) except ?CUDA_ERROR_NOT_FOUND nogil + +cdef CUresult cuTexRefGetFlags(unsigned int* pFlags, CUtexref hTexRef) except ?CUDA_ERROR_NOT_FOUND nogil + +cdef CUresult cuTexRefCreate(CUtexref* pTexRef) except ?CUDA_ERROR_NOT_FOUND nogil + +cdef CUresult cuTexRefDestroy(CUtexref hTexRef) except ?CUDA_ERROR_NOT_FOUND nogil + +cdef CUresult cuSurfRefSetArray(CUsurfref hSurfRef, CUarray hArray, unsigned int Flags) except ?CUDA_ERROR_NOT_FOUND nogil + +cdef CUresult cuSurfRefGetArray(CUarray* phArray, CUsurfref hSurfRef) except ?CUDA_ERROR_NOT_FOUND nogil + +cdef CUresult cuTexObjectCreate(CUtexObject* pTexObject, const CUDA_RESOURCE_DESC* pResDesc, const CUDA_TEXTURE_DESC* pTexDesc, const CUDA_RESOURCE_VIEW_DESC* pResViewDesc) except ?CUDA_ERROR_NOT_FOUND nogil + +cdef CUresult cuTexObjectDestroy(CUtexObject texObject) except ?CUDA_ERROR_NOT_FOUND nogil + +cdef CUresult cuTexObjectGetResourceDesc(CUDA_RESOURCE_DESC* pResDesc, CUtexObject texObject) except ?CUDA_ERROR_NOT_FOUND nogil + +cdef CUresult cuTexObjectGetTextureDesc(CUDA_TEXTURE_DESC* pTexDesc, CUtexObject texObject) except ?CUDA_ERROR_NOT_FOUND nogil + +cdef CUresult cuTexObjectGetResourceViewDesc(CUDA_RESOURCE_VIEW_DESC* pResViewDesc, CUtexObject texObject) except ?CUDA_ERROR_NOT_FOUND nogil + +cdef CUresult cuSurfObjectCreate(CUsurfObject* pSurfObject, const CUDA_RESOURCE_DESC* pResDesc) except ?CUDA_ERROR_NOT_FOUND nogil + +cdef CUresult cuSurfObjectDestroy(CUsurfObject surfObject) except ?CUDA_ERROR_NOT_FOUND nogil + +cdef CUresult cuSurfObjectGetResourceDesc(CUDA_RESOURCE_DESC* pResDesc, CUsurfObject surfObject) except ?CUDA_ERROR_NOT_FOUND nogil + +cdef CUresult cuTensorMapEncodeTiled(CUtensorMap* tensorMap, CUtensorMapDataType tensorDataType, cuuint32_t tensorRank, void* globalAddress, const cuuint64_t* globalDim, const cuuint64_t* globalStrides, const cuuint32_t* boxDim, const cuuint32_t* elementStrides, CUtensorMapInterleave interleave, CUtensorMapSwizzle swizzle, CUtensorMapL2promotion l2Promotion, CUtensorMapFloatOOBfill oobFill) except ?CUDA_ERROR_NOT_FOUND nogil + +cdef CUresult cuTensorMapEncodeIm2col(CUtensorMap* tensorMap, CUtensorMapDataType tensorDataType, cuuint32_t tensorRank, void* globalAddress, const cuuint64_t* globalDim, const cuuint64_t* globalStrides, const int* pixelBoxLowerCorner, const int* pixelBoxUpperCorner, cuuint32_t channelsPerPixel, cuuint32_t pixelsPerColumn, const cuuint32_t* elementStrides, CUtensorMapInterleave interleave, CUtensorMapSwizzle swizzle, CUtensorMapL2promotion l2Promotion, CUtensorMapFloatOOBfill oobFill) except ?CUDA_ERROR_NOT_FOUND nogil + +cdef CUresult cuTensorMapEncodeIm2colWide(CUtensorMap* tensorMap, CUtensorMapDataType tensorDataType, cuuint32_t tensorRank, void* globalAddress, const cuuint64_t* globalDim, const cuuint64_t* globalStrides, int pixelBoxLowerCornerWidth, int pixelBoxUpperCornerWidth, cuuint32_t channelsPerPixel, cuuint32_t pixelsPerColumn, const cuuint32_t* elementStrides, CUtensorMapInterleave interleave, CUtensorMapIm2ColWideMode mode, CUtensorMapSwizzle swizzle, CUtensorMapL2promotion l2Promotion, CUtensorMapFloatOOBfill oobFill) except ?CUDA_ERROR_NOT_FOUND nogil + +cdef CUresult cuTensorMapReplaceAddress(CUtensorMap* tensorMap, void* globalAddress) except ?CUDA_ERROR_NOT_FOUND nogil + +cdef CUresult cuDeviceCanAccessPeer(int* canAccessPeer, CUdevice dev, CUdevice peerDev) except ?CUDA_ERROR_NOT_FOUND nogil + +cdef CUresult cuCtxEnablePeerAccess(CUcontext peerContext, unsigned int Flags) except ?CUDA_ERROR_NOT_FOUND nogil + +cdef CUresult cuCtxDisablePeerAccess(CUcontext peerContext) except ?CUDA_ERROR_NOT_FOUND nogil + +cdef CUresult cuDeviceGetP2PAttribute(int* value, CUdevice_P2PAttribute attrib, CUdevice srcDevice, CUdevice dstDevice) except ?CUDA_ERROR_NOT_FOUND nogil + +cdef CUresult cuDeviceGetP2PAtomicCapabilities(unsigned int* capabilities, const CUatomicOperation* operations, unsigned int count, CUdevice srcDevice, CUdevice dstDevice) except ?CUDA_ERROR_NOT_FOUND nogil + +cdef CUresult cuGraphicsUnregisterResource(CUgraphicsResource resource) except ?CUDA_ERROR_NOT_FOUND nogil + +cdef CUresult cuGraphicsSubResourceGetMappedArray(CUarray* pArray, CUgraphicsResource resource, unsigned int arrayIndex, unsigned int mipLevel) except ?CUDA_ERROR_NOT_FOUND nogil + +cdef CUresult cuGraphicsResourceGetMappedMipmappedArray(CUmipmappedArray* pMipmappedArray, CUgraphicsResource resource) except ?CUDA_ERROR_NOT_FOUND nogil + +cdef CUresult cuGraphicsResourceGetMappedPointer(CUdeviceptr* pDevPtr, size_t* pSize, CUgraphicsResource resource) except ?CUDA_ERROR_NOT_FOUND nogil + +cdef CUresult cuGraphicsResourceSetMapFlags(CUgraphicsResource resource, unsigned int flags) except ?CUDA_ERROR_NOT_FOUND nogil + +cdef CUresult cuGraphicsMapResources(unsigned int count, CUgraphicsResource* resources, CUstream hStream) except ?CUDA_ERROR_NOT_FOUND nogil + +cdef CUresult cuGraphicsUnmapResources(unsigned int count, CUgraphicsResource* resources, CUstream hStream) except ?CUDA_ERROR_NOT_FOUND nogil + +cdef CUresult cuGetProcAddress(const char* symbol, void** pfn, int cudaVersion, cuuint64_t flags, CUdriverProcAddressQueryResult* symbolStatus) except ?CUDA_ERROR_NOT_FOUND nogil + +cdef CUresult cuCoredumpGetAttribute(CUcoredumpSettings attrib, void* value, size_t* size) except ?CUDA_ERROR_NOT_FOUND nogil + +cdef CUresult cuCoredumpGetAttributeGlobal(CUcoredumpSettings attrib, void* value, size_t* size) except ?CUDA_ERROR_NOT_FOUND nogil + +cdef CUresult cuCoredumpSetAttribute(CUcoredumpSettings attrib, void* value, size_t* size) except ?CUDA_ERROR_NOT_FOUND nogil + +cdef CUresult cuCoredumpSetAttributeGlobal(CUcoredumpSettings attrib, void* value, size_t* size) except ?CUDA_ERROR_NOT_FOUND nogil + +cdef CUresult cuCoredumpRegisterStartCallback(CUcoredumpStatusCallback callback, void* userData, CUcoredumpCallbackHandle* callbackOut) except ?CUDA_ERROR_NOT_FOUND nogil + +cdef CUresult cuCoredumpRegisterCompleteCallback(CUcoredumpStatusCallback callback, void* userData, CUcoredumpCallbackHandle* callbackOut) except ?CUDA_ERROR_NOT_FOUND nogil + +cdef CUresult cuCoredumpDeregisterStartCallback(CUcoredumpCallbackHandle callback) except ?CUDA_ERROR_NOT_FOUND nogil + +cdef CUresult cuCoredumpDeregisterCompleteCallback(CUcoredumpCallbackHandle callback) except ?CUDA_ERROR_NOT_FOUND nogil + +cdef CUresult cuGetExportTable(const void** ppExportTable, const CUuuid* pExportTableId) except ?CUDA_ERROR_NOT_FOUND nogil + +cdef CUresult cuGreenCtxCreate(CUgreenCtx* phCtx, CUdevResourceDesc desc, CUdevice dev, unsigned int flags) except ?CUDA_ERROR_NOT_FOUND nogil + +cdef CUresult cuGreenCtxDestroy(CUgreenCtx hCtx) except ?CUDA_ERROR_NOT_FOUND nogil + +cdef CUresult cuCtxFromGreenCtx(CUcontext* pContext, CUgreenCtx hCtx) except ?CUDA_ERROR_NOT_FOUND nogil + +cdef CUresult cuDeviceGetDevResource(CUdevice device, CUdevResource* resource, CUdevResourceType typename) except ?CUDA_ERROR_NOT_FOUND nogil + +cdef CUresult cuCtxGetDevResource(CUcontext hCtx, CUdevResource* resource, CUdevResourceType typename) except ?CUDA_ERROR_NOT_FOUND nogil + +cdef CUresult cuGreenCtxGetDevResource(CUgreenCtx hCtx, CUdevResource* resource, CUdevResourceType typename) except ?CUDA_ERROR_NOT_FOUND nogil + +cdef CUresult cuDevSmResourceSplitByCount(CUdevResource* result, unsigned int* nbGroups, const CUdevResource* input, CUdevResource* remainder, unsigned int flags, unsigned int minCount) except ?CUDA_ERROR_NOT_FOUND nogil + +cdef CUresult cuDevSmResourceSplit(CUdevResource* result, unsigned int nbGroups, const CUdevResource* input, CUdevResource* remainder, unsigned int flags, CU_DEV_SM_RESOURCE_GROUP_PARAMS* groupParams) except ?CUDA_ERROR_NOT_FOUND nogil + +cdef CUresult cuDevResourceGenerateDesc(CUdevResourceDesc* phDesc, CUdevResource* resources, unsigned int nbResources) except ?CUDA_ERROR_NOT_FOUND nogil + +cdef CUresult cuGreenCtxRecordEvent(CUgreenCtx hCtx, CUevent hEvent) except ?CUDA_ERROR_NOT_FOUND nogil + +cdef CUresult cuGreenCtxWaitEvent(CUgreenCtx hCtx, CUevent hEvent) except ?CUDA_ERROR_NOT_FOUND nogil + +cdef CUresult cuStreamGetGreenCtx(CUstream hStream, CUgreenCtx* phCtx) except ?CUDA_ERROR_NOT_FOUND nogil + +cdef CUresult cuGreenCtxStreamCreate(CUstream* phStream, CUgreenCtx greenCtx, unsigned int flags, int priority) except ?CUDA_ERROR_NOT_FOUND nogil + +cdef CUresult cuGreenCtxGetId(CUgreenCtx greenCtx, unsigned long long* greenCtxId) except ?CUDA_ERROR_NOT_FOUND nogil + +cdef CUresult cuStreamGetDevResource(CUstream hStream, CUdevResource* resource, CUdevResourceType typename) except ?CUDA_ERROR_NOT_FOUND nogil + +cdef CUresult cuLogsRegisterCallback(CUlogsCallback callbackFunc, void* userData, CUlogsCallbackHandle* callback_out) except ?CUDA_ERROR_NOT_FOUND nogil + +cdef CUresult cuLogsUnregisterCallback(CUlogsCallbackHandle callback) except ?CUDA_ERROR_NOT_FOUND nogil + +cdef CUresult cuLogsCurrent(CUlogIterator* iterator_out, unsigned int flags) except ?CUDA_ERROR_NOT_FOUND nogil + +cdef CUresult cuLogsDumpToFile(CUlogIterator* iterator, const char* pathToFile, unsigned int flags) except ?CUDA_ERROR_NOT_FOUND nogil + +cdef CUresult cuLogsDumpToMemory(CUlogIterator* iterator, char* buffer, size_t* size, unsigned int flags) except ?CUDA_ERROR_NOT_FOUND nogil + +cdef CUresult cuCheckpointProcessGetRestoreThreadId(int pid, int* tid) except ?CUDA_ERROR_NOT_FOUND nogil + +cdef CUresult cuCheckpointProcessGetState(int pid, CUprocessState* state) except ?CUDA_ERROR_NOT_FOUND nogil + +cdef CUresult cuCheckpointProcessLock(int pid, CUcheckpointLockArgs* args) except ?CUDA_ERROR_NOT_FOUND nogil + +cdef CUresult cuCheckpointProcessCheckpoint(int pid, CUcheckpointCheckpointArgs* args) except ?CUDA_ERROR_NOT_FOUND nogil + +cdef CUresult cuCheckpointProcessRestore(int pid, CUcheckpointRestoreArgs* args) except ?CUDA_ERROR_NOT_FOUND nogil + +cdef CUresult cuCheckpointProcessUnlock(int pid, CUcheckpointUnlockArgs* args) except ?CUDA_ERROR_NOT_FOUND nogil + +cdef CUresult cuProfilerStart() except ?CUDA_ERROR_NOT_FOUND nogil + +cdef CUresult cuProfilerStop() except ?CUDA_ERROR_NOT_FOUND nogil + +cdef CUresult cuGraphicsEGLRegisterImage(CUgraphicsResource* pCudaResource, EGLImageKHR image, unsigned int flags) except ?CUDA_ERROR_NOT_FOUND nogil + +cdef CUresult cuEGLStreamConsumerConnect(CUeglStreamConnection* conn, EGLStreamKHR stream) except ?CUDA_ERROR_NOT_FOUND nogil + +cdef CUresult cuEGLStreamConsumerConnectWithFlags(CUeglStreamConnection* conn, EGLStreamKHR stream, unsigned int flags) except ?CUDA_ERROR_NOT_FOUND nogil + +cdef CUresult cuEGLStreamConsumerDisconnect(CUeglStreamConnection* conn) except ?CUDA_ERROR_NOT_FOUND nogil + +cdef CUresult cuEGLStreamConsumerAcquireFrame(CUeglStreamConnection* conn, CUgraphicsResource* pCudaResource, CUstream* pStream, unsigned int timeout) except ?CUDA_ERROR_NOT_FOUND nogil + +cdef CUresult cuEGLStreamConsumerReleaseFrame(CUeglStreamConnection* conn, CUgraphicsResource pCudaResource, CUstream* pStream) except ?CUDA_ERROR_NOT_FOUND nogil + +cdef CUresult cuEGLStreamProducerConnect(CUeglStreamConnection* conn, EGLStreamKHR stream, EGLint width, EGLint height) except ?CUDA_ERROR_NOT_FOUND nogil + +cdef CUresult cuEGLStreamProducerDisconnect(CUeglStreamConnection* conn) except ?CUDA_ERROR_NOT_FOUND nogil + +cdef CUresult cuEGLStreamProducerPresentFrame(CUeglStreamConnection* conn, CUeglFrame eglframe, CUstream* pStream) except ?CUDA_ERROR_NOT_FOUND nogil + +cdef CUresult cuEGLStreamProducerReturnFrame(CUeglStreamConnection* conn, CUeglFrame* eglframe, CUstream* pStream) except ?CUDA_ERROR_NOT_FOUND nogil + +cdef CUresult cuGraphicsResourceGetMappedEglFrame(CUeglFrame* eglFrame, CUgraphicsResource resource, unsigned int index, unsigned int mipLevel) except ?CUDA_ERROR_NOT_FOUND nogil + +cdef CUresult cuEventCreateFromEGLSync(CUevent* phEvent, EGLSyncKHR eglSync, unsigned int flags) except ?CUDA_ERROR_NOT_FOUND nogil + +cdef CUresult cuGraphicsGLRegisterBuffer(CUgraphicsResource* pCudaResource, GLuint buffer, unsigned int Flags) except ?CUDA_ERROR_NOT_FOUND nogil + +cdef CUresult cuGraphicsGLRegisterImage(CUgraphicsResource* pCudaResource, GLuint image, GLenum target, unsigned int Flags) except ?CUDA_ERROR_NOT_FOUND nogil + +cdef CUresult cuGLGetDevices(unsigned int* pCudaDeviceCount, CUdevice* pCudaDevices, unsigned int cudaDeviceCount, CUGLDeviceList deviceList) except ?CUDA_ERROR_NOT_FOUND nogil + +cdef CUresult cuVDPAUGetDevice(CUdevice* pDevice, VdpDevice vdpDevice, VdpGetProcAddress* vdpGetProcAddress) except ?CUDA_ERROR_NOT_FOUND nogil + +cdef CUresult cuVDPAUCtxCreate(CUcontext* pCtx, unsigned int flags, CUdevice device, VdpDevice vdpDevice, VdpGetProcAddress* vdpGetProcAddress) except ?CUDA_ERROR_NOT_FOUND nogil + +cdef CUresult cuGraphicsVDPAURegisterVideoSurface(CUgraphicsResource* pCudaResource, VdpVideoSurface vdpSurface, unsigned int flags) except ?CUDA_ERROR_NOT_FOUND nogil + +cdef CUresult cuGraphicsVDPAURegisterOutputSurface(CUgraphicsResource* pCudaResource, VdpOutputSurface vdpSurface, unsigned int flags) except ?CUDA_ERROR_NOT_FOUND nogil + +cdef enum: CUDA_VERSION = 13030 + +cdef enum: CU_IPC_HANDLE_SIZE = 64 + +cdef enum: CU_STREAM_LEGACY = 1 + +cdef enum: CU_STREAM_PER_THREAD = 2 + +cdef enum: CU_COMPUTE_ACCELERATED_TARGET_BASE = 65536 + +cdef enum: CU_COMPUTE_FAMILY_TARGET_BASE = 131072 + +cdef enum: CU_GRAPH_COND_ASSIGN_DEFAULT = 1 + +cdef enum: CU_GRAPH_KERNEL_NODE_PORT_DEFAULT = 0 + +cdef enum: CU_GRAPH_KERNEL_NODE_PORT_PROGRAMMATIC = 1 + +cdef enum: CU_GRAPH_KERNEL_NODE_PORT_LAUNCH_ORDER = 2 + +cdef enum: CU_KERNEL_NODE_ATTRIBUTE_ACCESS_POLICY_WINDOW = 1 + +cdef enum: CU_KERNEL_NODE_ATTRIBUTE_COOPERATIVE = 2 + +cdef enum: CU_KERNEL_NODE_ATTRIBUTE_CLUSTER_DIMENSION = 4 + +cdef enum: CU_KERNEL_NODE_ATTRIBUTE_CLUSTER_SCHEDULING_POLICY_PREFERENCE = 5 + +cdef enum: CU_KERNEL_NODE_ATTRIBUTE_PRIORITY = 8 + +cdef enum: CU_KERNEL_NODE_ATTRIBUTE_MEM_SYNC_DOMAIN_MAP = 9 + +cdef enum: CU_KERNEL_NODE_ATTRIBUTE_MEM_SYNC_DOMAIN = 10 + +cdef enum: CU_KERNEL_NODE_ATTRIBUTE_PREFERRED_CLUSTER_DIMENSION = 11 + +cdef enum: CU_KERNEL_NODE_ATTRIBUTE_DEVICE_UPDATABLE_KERNEL_NODE = 13 + +cdef enum: CU_KERNEL_NODE_ATTRIBUTE_PREFERRED_SHARED_MEMORY_CARVEOUT = 14 + +cdef enum: CU_STREAM_ATTRIBUTE_ACCESS_POLICY_WINDOW = 1 + +cdef enum: CU_STREAM_ATTRIBUTE_SYNCHRONIZATION_POLICY = 3 + +cdef enum: CU_STREAM_ATTRIBUTE_PRIORITY = 8 + +cdef enum: CU_STREAM_ATTRIBUTE_MEM_SYNC_DOMAIN_MAP = 9 + +cdef enum: CU_STREAM_ATTRIBUTE_MEM_SYNC_DOMAIN = 10 + +cdef enum: CU_MEMHOSTALLOC_PORTABLE = 1 + +cdef enum: CU_MEMHOSTALLOC_DEVICEMAP = 2 + +cdef enum: CU_MEMHOSTALLOC_WRITECOMBINED = 4 + +cdef enum: CU_MEMHOSTREGISTER_PORTABLE = 1 + +cdef enum: CU_MEMHOSTREGISTER_DEVICEMAP = 2 + +cdef enum: CU_MEMHOSTREGISTER_IOMEMORY = 4 + +cdef enum: CU_MEMHOSTREGISTER_READ_ONLY = 8 + +cdef enum: CU_ARRAY_SPARSE_PROPERTIES_SINGLE_MIPTAIL = 1 + +cdef enum: CU_TENSOR_MAP_NUM_QWORDS = 16 + +cdef enum: CUDA_EXTERNAL_MEMORY_DEDICATED = 1 + +cdef enum: CUDA_EXTERNAL_SEMAPHORE_SIGNAL_SKIP_NVSCIBUF_MEMSYNC = 1 + +cdef enum: CUDA_EXTERNAL_SEMAPHORE_WAIT_SKIP_NVSCIBUF_MEMSYNC = 2 + +cdef enum: CUDA_NVSCISYNC_ATTR_SIGNAL = 1 + +cdef enum: CUDA_NVSCISYNC_ATTR_WAIT = 2 + +cdef enum: CU_MEM_CREATE_USAGE_TILE_POOL = 1 + +cdef enum: CU_MEM_CREATE_USAGE_HW_DECOMPRESS = 2 + +cdef enum: CU_MEM_POOL_CREATE_USAGE_HW_DECOMPRESS = 2 + +cdef enum: CUDA_COOPERATIVE_LAUNCH_MULTI_DEVICE_NO_PRE_LAUNCH_SYNC = 1 + +cdef enum: CUDA_COOPERATIVE_LAUNCH_MULTI_DEVICE_NO_POST_LAUNCH_SYNC = 2 + +cdef enum: CUDA_ARRAY3D_LAYERED = 1 + +cdef enum: CUDA_ARRAY3D_2DARRAY = 1 + +cdef enum: CUDA_ARRAY3D_SURFACE_LDST = 2 + +cdef enum: CUDA_ARRAY3D_CUBEMAP = 4 + +cdef enum: CUDA_ARRAY3D_TEXTURE_GATHER = 8 + +cdef enum: CUDA_ARRAY3D_DEPTH_TEXTURE = 16 + +cdef enum: CUDA_ARRAY3D_COLOR_ATTACHMENT = 32 + +cdef enum: CUDA_ARRAY3D_SPARSE = 64 + +cdef enum: CUDA_ARRAY3D_DEFERRED_MAPPING = 128 + +cdef enum: CUDA_ARRAY3D_VIDEO_ENCODE_DECODE = 256 + +cdef enum: CU_TRSA_OVERRIDE_FORMAT = 1 + +cdef enum: CU_TRSF_READ_AS_INTEGER = 1 + +cdef enum: CU_TRSF_NORMALIZED_COORDINATES = 2 + +cdef enum: CU_TRSF_SRGB = 16 + +cdef enum: CU_TRSF_DISABLE_TRILINEAR_OPTIMIZATION = 32 + +cdef enum: CU_TRSF_SEAMLESS_CUBEMAP = 64 + +cdef enum: CU_LAUNCH_KERNEL_REQUIRED_BLOCK_DIM = 1 + +cdef enum: CU_LAUNCH_PARAM_END_AS_INT = 0 + +cdef enum: CU_LAUNCH_PARAM_END = 0 + +cdef enum: CU_LAUNCH_PARAM_BUFFER_POINTER_AS_INT = 1 + +cdef enum: CU_LAUNCH_PARAM_BUFFER_POINTER = 1 + +cdef enum: CU_LAUNCH_PARAM_BUFFER_SIZE_AS_INT = 2 + +cdef enum: CU_LAUNCH_PARAM_BUFFER_SIZE = 2 + +cdef enum: CU_PARAM_TR_DEFAULT = -1 + +cdef enum: CU_DEVICE_CPU = -1 + +cdef enum: CU_DEVICE_INVALID = -2 + +cdef enum: MAX_PLANES = 3 + +cdef enum: CUDA_EGL_INFINITE_TIMEOUT = 4294967295 \ No newline at end of file diff --git a/venv/lib/python3.11/site-packages/cuda/bindings/cynvfatbin.cpython-311-x86_64-linux-gnu.so b/venv/lib/python3.11/site-packages/cuda/bindings/cynvfatbin.cpython-311-x86_64-linux-gnu.so new file mode 100644 index 0000000000000000000000000000000000000000..c9933ec123700ac9d60e89b2d89fb76f7d19d0c4 Binary files /dev/null and b/venv/lib/python3.11/site-packages/cuda/bindings/cynvfatbin.cpython-311-x86_64-linux-gnu.so differ diff --git a/venv/lib/python3.11/site-packages/cuda/bindings/cynvfatbin.pxd b/venv/lib/python3.11/site-packages/cuda/bindings/cynvfatbin.pxd new file mode 100644 index 0000000000000000000000000000000000000000..5aab8de073e507de7151c7cc6e9fa576f2879ebf --- /dev/null +++ b/venv/lib/python3.11/site-packages/cuda/bindings/cynvfatbin.pxd @@ -0,0 +1,56 @@ +# SPDX-FileCopyrightText: Copyright (c) 2026 NVIDIA CORPORATION & AFFILIATES. All rights reserved. +# +# SPDX-License-Identifier: LicenseRef-NVIDIA-SOFTWARE-LICENSE +# +# This code was automatically generated across versions from 12.4.1 to 13.3.0, generator version 0.3.1.dev1719+g565f73f4e. Do not modify it directly. + +from libc.stdint cimport intptr_t, uint32_t + + +############################################################################### +# Types (structs, enums, ...) +############################################################################### + +# enums +ctypedef enum nvFatbinResult "nvFatbinResult": + NVFATBIN_SUCCESS "NVFATBIN_SUCCESS" = 0 + NVFATBIN_ERROR_INTERNAL "NVFATBIN_ERROR_INTERNAL" + NVFATBIN_ERROR_ELF_ARCH_MISMATCH "NVFATBIN_ERROR_ELF_ARCH_MISMATCH" + NVFATBIN_ERROR_ELF_SIZE_MISMATCH "NVFATBIN_ERROR_ELF_SIZE_MISMATCH" + NVFATBIN_ERROR_MISSING_PTX_VERSION "NVFATBIN_ERROR_MISSING_PTX_VERSION" + NVFATBIN_ERROR_NULL_POINTER "NVFATBIN_ERROR_NULL_POINTER" + NVFATBIN_ERROR_COMPRESSION_FAILED "NVFATBIN_ERROR_COMPRESSION_FAILED" + NVFATBIN_ERROR_COMPRESSED_SIZE_EXCEEDED "NVFATBIN_ERROR_COMPRESSED_SIZE_EXCEEDED" + NVFATBIN_ERROR_UNRECOGNIZED_OPTION "NVFATBIN_ERROR_UNRECOGNIZED_OPTION" + NVFATBIN_ERROR_INVALID_ARCH "NVFATBIN_ERROR_INVALID_ARCH" + NVFATBIN_ERROR_INVALID_NVVM "NVFATBIN_ERROR_INVALID_NVVM" + NVFATBIN_ERROR_EMPTY_INPUT "NVFATBIN_ERROR_EMPTY_INPUT" + NVFATBIN_ERROR_MISSING_PTX_ARCH "NVFATBIN_ERROR_MISSING_PTX_ARCH" + NVFATBIN_ERROR_PTX_ARCH_MISMATCH "NVFATBIN_ERROR_PTX_ARCH_MISMATCH" + NVFATBIN_ERROR_MISSING_FATBIN "NVFATBIN_ERROR_MISSING_FATBIN" + NVFATBIN_ERROR_INVALID_INDEX "NVFATBIN_ERROR_INVALID_INDEX" + NVFATBIN_ERROR_IDENTIFIER_REUSE "NVFATBIN_ERROR_IDENTIFIER_REUSE" + NVFATBIN_ERROR_INTERNAL_PTX_OPTION "NVFATBIN_ERROR_INTERNAL_PTX_OPTION" + _NVFATBINRESULT_INTERNAL_LOADING_ERROR "_NVFATBINRESULT_INTERNAL_LOADING_ERROR" = -42 + + +# types +ctypedef void* nvFatbinHandle 'nvFatbinHandle' + + +############################################################################### +# Functions +############################################################################### + +cdef const char* nvFatbinGetErrorString(nvFatbinResult result) except?NULL nogil +cdef nvFatbinResult nvFatbinCreate(nvFatbinHandle* handle_indirect, const char** options, size_t optionsCount) except?_NVFATBINRESULT_INTERNAL_LOADING_ERROR nogil +cdef nvFatbinResult nvFatbinDestroy(nvFatbinHandle* handle_indirect) except?_NVFATBINRESULT_INTERNAL_LOADING_ERROR nogil +cdef nvFatbinResult nvFatbinAddPTX(nvFatbinHandle handle, const char* code, size_t size, const char* arch, const char* identifier, const char* optionsCmdLine) except?_NVFATBINRESULT_INTERNAL_LOADING_ERROR nogil +cdef nvFatbinResult nvFatbinAddCubin(nvFatbinHandle handle, const void* code, size_t size, const char* arch, const char* identifier) except?_NVFATBINRESULT_INTERNAL_LOADING_ERROR nogil +cdef nvFatbinResult nvFatbinAddLTOIR(nvFatbinHandle handle, const void* code, size_t size, const char* arch, const char* identifier, const char* optionsCmdLine) except?_NVFATBINRESULT_INTERNAL_LOADING_ERROR nogil +cdef nvFatbinResult nvFatbinSize(nvFatbinHandle handle, size_t* size) except?_NVFATBINRESULT_INTERNAL_LOADING_ERROR nogil +cdef nvFatbinResult nvFatbinGet(nvFatbinHandle handle, void* buffer) except?_NVFATBINRESULT_INTERNAL_LOADING_ERROR nogil +cdef nvFatbinResult nvFatbinVersion(unsigned int* major, unsigned int* minor) except?_NVFATBINRESULT_INTERNAL_LOADING_ERROR nogil +cdef nvFatbinResult nvFatbinAddIndex(nvFatbinHandle handle, const void* code, size_t size, const char* identifier) except?_NVFATBINRESULT_INTERNAL_LOADING_ERROR nogil +cdef nvFatbinResult nvFatbinAddReloc(nvFatbinHandle handle, const void* code, size_t size) except?_NVFATBINRESULT_INTERNAL_LOADING_ERROR nogil +cdef nvFatbinResult nvFatbinAddTileIR(nvFatbinHandle handle, const void* code, size_t size, const char* identifier, const char* optionsCmdLine) except?_NVFATBINRESULT_INTERNAL_LOADING_ERROR nogil diff --git a/venv/lib/python3.11/site-packages/cuda/bindings/cynvjitlink.cpython-311-x86_64-linux-gnu.so b/venv/lib/python3.11/site-packages/cuda/bindings/cynvjitlink.cpython-311-x86_64-linux-gnu.so new file mode 100644 index 0000000000000000000000000000000000000000..6bca224afa97fad8d14c00f632e066151372143f Binary files /dev/null and b/venv/lib/python3.11/site-packages/cuda/bindings/cynvjitlink.cpython-311-x86_64-linux-gnu.so differ diff --git a/venv/lib/python3.11/site-packages/cuda/bindings/cynvjitlink.pxd b/venv/lib/python3.11/site-packages/cuda/bindings/cynvjitlink.pxd new file mode 100644 index 0000000000000000000000000000000000000000..8e94647775ee84e2516e4c1a425f4c67499f8250 --- /dev/null +++ b/venv/lib/python3.11/site-packages/cuda/bindings/cynvjitlink.pxd @@ -0,0 +1,70 @@ +# SPDX-FileCopyrightText: Copyright (c) 2024-2026 NVIDIA CORPORATION & AFFILIATES. All rights reserved. +# +# SPDX-License-Identifier: LicenseRef-NVIDIA-SOFTWARE-LICENSE +# +# This code was automatically generated across versions from 12.0.1 to 13.2.0, generator version 0.3.1.dev1422+gf4812259e.d20260318. Do not modify it directly. + +from libc.stdint cimport intptr_t, uint32_t + + +############################################################################### +# Types (structs, enums, ...) +############################################################################### + +# enums +ctypedef enum nvJitLinkResult "nvJitLinkResult": + NVJITLINK_SUCCESS "NVJITLINK_SUCCESS" = 0 + NVJITLINK_ERROR_UNRECOGNIZED_OPTION "NVJITLINK_ERROR_UNRECOGNIZED_OPTION" + NVJITLINK_ERROR_MISSING_ARCH "NVJITLINK_ERROR_MISSING_ARCH" + NVJITLINK_ERROR_INVALID_INPUT "NVJITLINK_ERROR_INVALID_INPUT" + NVJITLINK_ERROR_PTX_COMPILE "NVJITLINK_ERROR_PTX_COMPILE" + NVJITLINK_ERROR_NVVM_COMPILE "NVJITLINK_ERROR_NVVM_COMPILE" + NVJITLINK_ERROR_INTERNAL "NVJITLINK_ERROR_INTERNAL" + NVJITLINK_ERROR_THREADPOOL "NVJITLINK_ERROR_THREADPOOL" + NVJITLINK_ERROR_UNRECOGNIZED_INPUT "NVJITLINK_ERROR_UNRECOGNIZED_INPUT" + NVJITLINK_ERROR_FINALIZE "NVJITLINK_ERROR_FINALIZE" + NVJITLINK_ERROR_NULL_INPUT "NVJITLINK_ERROR_NULL_INPUT" + NVJITLINK_ERROR_INCOMPATIBLE_OPTIONS "NVJITLINK_ERROR_INCOMPATIBLE_OPTIONS" + NVJITLINK_ERROR_INCORRECT_INPUT_TYPE "NVJITLINK_ERROR_INCORRECT_INPUT_TYPE" + NVJITLINK_ERROR_ARCH_MISMATCH "NVJITLINK_ERROR_ARCH_MISMATCH" + NVJITLINK_ERROR_OUTDATED_LIBRARY "NVJITLINK_ERROR_OUTDATED_LIBRARY" + NVJITLINK_ERROR_MISSING_FATBIN "NVJITLINK_ERROR_MISSING_FATBIN" + NVJITLINK_ERROR_UNRECOGNIZED_ARCH "NVJITLINK_ERROR_UNRECOGNIZED_ARCH" + NVJITLINK_ERROR_UNSUPPORTED_ARCH "NVJITLINK_ERROR_UNSUPPORTED_ARCH" + NVJITLINK_ERROR_LTO_NOT_ENABLED "NVJITLINK_ERROR_LTO_NOT_ENABLED" + _NVJITLINKRESULT_INTERNAL_LOADING_ERROR "_NVJITLINKRESULT_INTERNAL_LOADING_ERROR" = -42 + +ctypedef enum nvJitLinkInputType "nvJitLinkInputType": + NVJITLINK_INPUT_NONE "NVJITLINK_INPUT_NONE" = 0 + NVJITLINK_INPUT_CUBIN "NVJITLINK_INPUT_CUBIN" = 1 + NVJITLINK_INPUT_PTX "NVJITLINK_INPUT_PTX" + NVJITLINK_INPUT_LTOIR "NVJITLINK_INPUT_LTOIR" + NVJITLINK_INPUT_FATBIN "NVJITLINK_INPUT_FATBIN" + NVJITLINK_INPUT_OBJECT "NVJITLINK_INPUT_OBJECT" + NVJITLINK_INPUT_LIBRARY "NVJITLINK_INPUT_LIBRARY" + NVJITLINK_INPUT_INDEX "NVJITLINK_INPUT_INDEX" + NVJITLINK_INPUT_ANY "NVJITLINK_INPUT_ANY" = 10 + + +# types +ctypedef void* nvJitLinkHandle 'nvJitLinkHandle' + + +############################################################################### +# Functions +############################################################################### + +cdef nvJitLinkResult nvJitLinkCreate(nvJitLinkHandle* handle, uint32_t numOptions, const char** options) except?_NVJITLINKRESULT_INTERNAL_LOADING_ERROR nogil +cdef nvJitLinkResult nvJitLinkDestroy(nvJitLinkHandle* handle) except?_NVJITLINKRESULT_INTERNAL_LOADING_ERROR nogil +cdef nvJitLinkResult nvJitLinkAddData(nvJitLinkHandle handle, nvJitLinkInputType inputType, const void* data, size_t size, const char* name) except?_NVJITLINKRESULT_INTERNAL_LOADING_ERROR nogil +cdef nvJitLinkResult nvJitLinkAddFile(nvJitLinkHandle handle, nvJitLinkInputType inputType, const char* fileName) except?_NVJITLINKRESULT_INTERNAL_LOADING_ERROR nogil +cdef nvJitLinkResult nvJitLinkComplete(nvJitLinkHandle handle) except?_NVJITLINKRESULT_INTERNAL_LOADING_ERROR nogil +cdef nvJitLinkResult nvJitLinkGetLinkedCubinSize(nvJitLinkHandle handle, size_t* size) except?_NVJITLINKRESULT_INTERNAL_LOADING_ERROR nogil +cdef nvJitLinkResult nvJitLinkGetLinkedCubin(nvJitLinkHandle handle, void* cubin) except?_NVJITLINKRESULT_INTERNAL_LOADING_ERROR nogil +cdef nvJitLinkResult nvJitLinkGetLinkedPtxSize(nvJitLinkHandle handle, size_t* size) except?_NVJITLINKRESULT_INTERNAL_LOADING_ERROR nogil +cdef nvJitLinkResult nvJitLinkGetLinkedPtx(nvJitLinkHandle handle, char* ptx) except?_NVJITLINKRESULT_INTERNAL_LOADING_ERROR nogil +cdef nvJitLinkResult nvJitLinkGetErrorLogSize(nvJitLinkHandle handle, size_t* size) except?_NVJITLINKRESULT_INTERNAL_LOADING_ERROR nogil +cdef nvJitLinkResult nvJitLinkGetErrorLog(nvJitLinkHandle handle, char* log) except?_NVJITLINKRESULT_INTERNAL_LOADING_ERROR nogil +cdef nvJitLinkResult nvJitLinkGetInfoLogSize(nvJitLinkHandle handle, size_t* size) except?_NVJITLINKRESULT_INTERNAL_LOADING_ERROR nogil +cdef nvJitLinkResult nvJitLinkGetInfoLog(nvJitLinkHandle handle, char* log) except?_NVJITLINKRESULT_INTERNAL_LOADING_ERROR nogil +cdef nvJitLinkResult nvJitLinkVersion(unsigned int* major, unsigned int* minor) except?_NVJITLINKRESULT_INTERNAL_LOADING_ERROR nogil diff --git a/venv/lib/python3.11/site-packages/cuda/bindings/cynvml.cpython-311-x86_64-linux-gnu.so b/venv/lib/python3.11/site-packages/cuda/bindings/cynvml.cpython-311-x86_64-linux-gnu.so new file mode 100644 index 0000000000000000000000000000000000000000..1644089e0676d17a4ace553684535d826bc47cc2 --- /dev/null +++ b/venv/lib/python3.11/site-packages/cuda/bindings/cynvml.cpython-311-x86_64-linux-gnu.so @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:e9c9991fbdcf0437a18621a4b58accee6d95daead133307f2640cc43fd57255f +size 119168 diff --git a/venv/lib/python3.11/site-packages/cuda/bindings/cynvml.pxd b/venv/lib/python3.11/site-packages/cuda/bindings/cynvml.pxd new file mode 100644 index 0000000000000000000000000000000000000000..2bd67517e41f37afe93cb729d5b18896293775db --- /dev/null +++ b/venv/lib/python3.11/site-packages/cuda/bindings/cynvml.pxd @@ -0,0 +1,2358 @@ +# SPDX-FileCopyrightText: Copyright (c) 2025-2026 NVIDIA CORPORATION & AFFILIATES. All rights reserved. +# +# SPDX-License-Identifier: LicenseRef-NVIDIA-SOFTWARE-LICENSE +# +# This code was automatically generated across versions from 12.9.1 to 13.3.0, generator version 0.3.1.dev1719+g565f73f4e. Do not modify it directly. + +from libc.stdint cimport int64_t + + +############################################################################### +# Types (structs, enums, ...) +############################################################################### + +# enums +ctypedef enum nvmlBridgeChipType_t "nvmlBridgeChipType_t": + NVML_BRIDGE_CHIP_PLX "NVML_BRIDGE_CHIP_PLX" = 0 + NVML_BRIDGE_CHIP_BRO4 "NVML_BRIDGE_CHIP_BRO4" = 1 + +ctypedef enum nvmlNvLinkUtilizationCountUnits_t "nvmlNvLinkUtilizationCountUnits_t": + NVML_NVLINK_COUNTER_UNIT_CYCLES "NVML_NVLINK_COUNTER_UNIT_CYCLES" = 0 + NVML_NVLINK_COUNTER_UNIT_PACKETS "NVML_NVLINK_COUNTER_UNIT_PACKETS" = 1 + NVML_NVLINK_COUNTER_UNIT_BYTES "NVML_NVLINK_COUNTER_UNIT_BYTES" = 2 + NVML_NVLINK_COUNTER_UNIT_RESERVED "NVML_NVLINK_COUNTER_UNIT_RESERVED" = 3 + NVML_NVLINK_COUNTER_UNIT_COUNT "NVML_NVLINK_COUNTER_UNIT_COUNT" + +ctypedef enum nvmlNvLinkUtilizationCountPktTypes_t "nvmlNvLinkUtilizationCountPktTypes_t": + NVML_NVLINK_COUNTER_PKTFILTER_NOP "NVML_NVLINK_COUNTER_PKTFILTER_NOP" = 0x1 + NVML_NVLINK_COUNTER_PKTFILTER_READ "NVML_NVLINK_COUNTER_PKTFILTER_READ" = 0x2 + NVML_NVLINK_COUNTER_PKTFILTER_WRITE "NVML_NVLINK_COUNTER_PKTFILTER_WRITE" = 0x4 + NVML_NVLINK_COUNTER_PKTFILTER_RATOM "NVML_NVLINK_COUNTER_PKTFILTER_RATOM" = 0x8 + NVML_NVLINK_COUNTER_PKTFILTER_NRATOM "NVML_NVLINK_COUNTER_PKTFILTER_NRATOM" = 0x10 + NVML_NVLINK_COUNTER_PKTFILTER_FLUSH "NVML_NVLINK_COUNTER_PKTFILTER_FLUSH" = 0x20 + NVML_NVLINK_COUNTER_PKTFILTER_RESPDATA "NVML_NVLINK_COUNTER_PKTFILTER_RESPDATA" = 0x40 + NVML_NVLINK_COUNTER_PKTFILTER_RESPNODATA "NVML_NVLINK_COUNTER_PKTFILTER_RESPNODATA" = 0x80 + NVML_NVLINK_COUNTER_PKTFILTER_ALL "NVML_NVLINK_COUNTER_PKTFILTER_ALL" = 0xFF + +ctypedef enum nvmlNvLinkCapability_t "nvmlNvLinkCapability_t": + NVML_NVLINK_CAP_P2P_SUPPORTED "NVML_NVLINK_CAP_P2P_SUPPORTED" = 0 + NVML_NVLINK_CAP_SYSMEM_ACCESS "NVML_NVLINK_CAP_SYSMEM_ACCESS" = 1 + NVML_NVLINK_CAP_P2P_ATOMICS "NVML_NVLINK_CAP_P2P_ATOMICS" = 2 + NVML_NVLINK_CAP_SYSMEM_ATOMICS "NVML_NVLINK_CAP_SYSMEM_ATOMICS" = 3 + NVML_NVLINK_CAP_SLI_BRIDGE "NVML_NVLINK_CAP_SLI_BRIDGE" = 4 + NVML_NVLINK_CAP_VALID "NVML_NVLINK_CAP_VALID" = 5 + NVML_NVLINK_CAP_COUNT "NVML_NVLINK_CAP_COUNT" + +ctypedef enum nvmlNvLinkErrorCounter_t "nvmlNvLinkErrorCounter_t": + NVML_NVLINK_ERROR_DL_REPLAY "NVML_NVLINK_ERROR_DL_REPLAY" = 0 + NVML_NVLINK_ERROR_DL_RECOVERY "NVML_NVLINK_ERROR_DL_RECOVERY" = 1 + NVML_NVLINK_ERROR_DL_CRC_FLIT "NVML_NVLINK_ERROR_DL_CRC_FLIT" = 2 + NVML_NVLINK_ERROR_DL_CRC_DATA "NVML_NVLINK_ERROR_DL_CRC_DATA" = 3 + NVML_NVLINK_ERROR_DL_ECC_DATA "NVML_NVLINK_ERROR_DL_ECC_DATA" = 4 + NVML_NVLINK_ERROR_COUNT "NVML_NVLINK_ERROR_COUNT" + +ctypedef enum nvmlIntNvLinkDeviceType_t "nvmlIntNvLinkDeviceType_t": + NVML_NVLINK_DEVICE_TYPE_GPU "NVML_NVLINK_DEVICE_TYPE_GPU" = 0x00 + NVML_NVLINK_DEVICE_TYPE_IBMNPU "NVML_NVLINK_DEVICE_TYPE_IBMNPU" = 0x01 + NVML_NVLINK_DEVICE_TYPE_SWITCH "NVML_NVLINK_DEVICE_TYPE_SWITCH" = 0x02 + NVML_NVLINK_DEVICE_TYPE_UNKNOWN "NVML_NVLINK_DEVICE_TYPE_UNKNOWN" = 0xFF + +ctypedef enum nvmlGpuTopologyLevel_t "nvmlGpuTopologyLevel_t": + NVML_TOPOLOGY_INTERNAL "NVML_TOPOLOGY_INTERNAL" = 0 + NVML_TOPOLOGY_SINGLE "NVML_TOPOLOGY_SINGLE" = 10 + NVML_TOPOLOGY_MULTIPLE "NVML_TOPOLOGY_MULTIPLE" = 20 + NVML_TOPOLOGY_HOSTBRIDGE "NVML_TOPOLOGY_HOSTBRIDGE" = 30 + NVML_TOPOLOGY_NODE "NVML_TOPOLOGY_NODE" = 40 + NVML_TOPOLOGY_SYSTEM "NVML_TOPOLOGY_SYSTEM" = 50 + +ctypedef enum nvmlGpuP2PStatus_t "nvmlGpuP2PStatus_t": + NVML_P2P_STATUS_OK "NVML_P2P_STATUS_OK" = 0 + NVML_P2P_STATUS_CHIPSET_NOT_SUPPORED "NVML_P2P_STATUS_CHIPSET_NOT_SUPPORED" + NVML_P2P_STATUS_CHIPSET_NOT_SUPPORTED "NVML_P2P_STATUS_CHIPSET_NOT_SUPPORTED" = NVML_P2P_STATUS_CHIPSET_NOT_SUPPORED + NVML_P2P_STATUS_GPU_NOT_SUPPORTED "NVML_P2P_STATUS_GPU_NOT_SUPPORTED" + NVML_P2P_STATUS_IOH_TOPOLOGY_NOT_SUPPORTED "NVML_P2P_STATUS_IOH_TOPOLOGY_NOT_SUPPORTED" + NVML_P2P_STATUS_DISABLED_BY_REGKEY "NVML_P2P_STATUS_DISABLED_BY_REGKEY" + NVML_P2P_STATUS_NOT_SUPPORTED "NVML_P2P_STATUS_NOT_SUPPORTED" + NVML_P2P_STATUS_UNKNOWN "NVML_P2P_STATUS_UNKNOWN" + +ctypedef enum nvmlGpuP2PCapsIndex_t "nvmlGpuP2PCapsIndex_t": + NVML_P2P_CAPS_INDEX_READ "NVML_P2P_CAPS_INDEX_READ" = 0 + NVML_P2P_CAPS_INDEX_WRITE "NVML_P2P_CAPS_INDEX_WRITE" = 1 + NVML_P2P_CAPS_INDEX_NVLINK "NVML_P2P_CAPS_INDEX_NVLINK" = 2 + NVML_P2P_CAPS_INDEX_ATOMICS "NVML_P2P_CAPS_INDEX_ATOMICS" = 3 + NVML_P2P_CAPS_INDEX_PCI "NVML_P2P_CAPS_INDEX_PCI" = 4 + NVML_P2P_CAPS_INDEX_PROP "NVML_P2P_CAPS_INDEX_PROP" = NVML_P2P_CAPS_INDEX_PCI + NVML_P2P_CAPS_INDEX_UNKNOWN "NVML_P2P_CAPS_INDEX_UNKNOWN" = 5 + +ctypedef enum nvmlSamplingType_t "nvmlSamplingType_t": + NVML_TOTAL_POWER_SAMPLES "NVML_TOTAL_POWER_SAMPLES" = 0 + NVML_GPU_UTILIZATION_SAMPLES "NVML_GPU_UTILIZATION_SAMPLES" = 1 + NVML_MEMORY_UTILIZATION_SAMPLES "NVML_MEMORY_UTILIZATION_SAMPLES" = 2 + NVML_ENC_UTILIZATION_SAMPLES "NVML_ENC_UTILIZATION_SAMPLES" = 3 + NVML_DEC_UTILIZATION_SAMPLES "NVML_DEC_UTILIZATION_SAMPLES" = 4 + NVML_PROCESSOR_CLK_SAMPLES "NVML_PROCESSOR_CLK_SAMPLES" = 5 + NVML_MEMORY_CLK_SAMPLES "NVML_MEMORY_CLK_SAMPLES" = 6 + NVML_MODULE_POWER_SAMPLES "NVML_MODULE_POWER_SAMPLES" = 7 + NVML_JPG_UTILIZATION_SAMPLES "NVML_JPG_UTILIZATION_SAMPLES" = 8 + NVML_OFA_UTILIZATION_SAMPLES "NVML_OFA_UTILIZATION_SAMPLES" = 9 + NVML_SAMPLINGTYPE_COUNT "NVML_SAMPLINGTYPE_COUNT" + +ctypedef enum nvmlPcieUtilCounter_t "nvmlPcieUtilCounter_t": + NVML_PCIE_UTIL_TX_BYTES "NVML_PCIE_UTIL_TX_BYTES" = 0 + NVML_PCIE_UTIL_RX_BYTES "NVML_PCIE_UTIL_RX_BYTES" = 1 + NVML_PCIE_UTIL_COUNT "NVML_PCIE_UTIL_COUNT" + +ctypedef enum nvmlValueType_t "nvmlValueType_t": + NVML_VALUE_TYPE_DOUBLE "NVML_VALUE_TYPE_DOUBLE" = 0 + NVML_VALUE_TYPE_UNSIGNED_INT "NVML_VALUE_TYPE_UNSIGNED_INT" = 1 + NVML_VALUE_TYPE_UNSIGNED_LONG "NVML_VALUE_TYPE_UNSIGNED_LONG" = 2 + NVML_VALUE_TYPE_UNSIGNED_LONG_LONG "NVML_VALUE_TYPE_UNSIGNED_LONG_LONG" = 3 + NVML_VALUE_TYPE_SIGNED_LONG_LONG "NVML_VALUE_TYPE_SIGNED_LONG_LONG" = 4 + NVML_VALUE_TYPE_SIGNED_INT "NVML_VALUE_TYPE_SIGNED_INT" = 5 + NVML_VALUE_TYPE_UNSIGNED_SHORT "NVML_VALUE_TYPE_UNSIGNED_SHORT" = 6 + NVML_VALUE_TYPE_COUNT "NVML_VALUE_TYPE_COUNT" + +ctypedef enum nvmlPerfPolicyType_t "nvmlPerfPolicyType_t": + NVML_PERF_POLICY_POWER "NVML_PERF_POLICY_POWER" = 0 + NVML_PERF_POLICY_THERMAL "NVML_PERF_POLICY_THERMAL" = 1 + NVML_PERF_POLICY_SYNC_BOOST "NVML_PERF_POLICY_SYNC_BOOST" = 2 + NVML_PERF_POLICY_BOARD_LIMIT "NVML_PERF_POLICY_BOARD_LIMIT" = 3 + NVML_PERF_POLICY_LOW_UTILIZATION "NVML_PERF_POLICY_LOW_UTILIZATION" = 4 + NVML_PERF_POLICY_RELIABILITY "NVML_PERF_POLICY_RELIABILITY" = 5 + NVML_PERF_POLICY_TOTAL_APP_CLOCKS "NVML_PERF_POLICY_TOTAL_APP_CLOCKS" = 10 + NVML_PERF_POLICY_TOTAL_BASE_CLOCKS "NVML_PERF_POLICY_TOTAL_BASE_CLOCKS" = 11 + NVML_PERF_POLICY_COUNT "NVML_PERF_POLICY_COUNT" + +ctypedef enum nvmlThermalTarget_t "nvmlThermalTarget_t": + NVML_THERMAL_TARGET_NONE "NVML_THERMAL_TARGET_NONE" = 0 + NVML_THERMAL_TARGET_GPU "NVML_THERMAL_TARGET_GPU" = 1 + NVML_THERMAL_TARGET_MEMORY "NVML_THERMAL_TARGET_MEMORY" = 2 + NVML_THERMAL_TARGET_POWER_SUPPLY "NVML_THERMAL_TARGET_POWER_SUPPLY" = 4 + NVML_THERMAL_TARGET_BOARD "NVML_THERMAL_TARGET_BOARD" = 8 + NVML_THERMAL_TARGET_VCD_BOARD "NVML_THERMAL_TARGET_VCD_BOARD" = 9 + NVML_THERMAL_TARGET_VCD_INLET "NVML_THERMAL_TARGET_VCD_INLET" = 10 + NVML_THERMAL_TARGET_VCD_OUTLET "NVML_THERMAL_TARGET_VCD_OUTLET" = 11 + NVML_THERMAL_TARGET_ALL "NVML_THERMAL_TARGET_ALL" = 15 + NVML_THERMAL_TARGET_UNKNOWN "NVML_THERMAL_TARGET_UNKNOWN" = -(1) + +ctypedef enum nvmlThermalController_t "nvmlThermalController_t": + NVML_THERMAL_CONTROLLER_NONE "NVML_THERMAL_CONTROLLER_NONE" = 0 + NVML_THERMAL_CONTROLLER_GPU_INTERNAL "NVML_THERMAL_CONTROLLER_GPU_INTERNAL" + NVML_THERMAL_CONTROLLER_ADM1032 "NVML_THERMAL_CONTROLLER_ADM1032" + NVML_THERMAL_CONTROLLER_ADT7461 "NVML_THERMAL_CONTROLLER_ADT7461" + NVML_THERMAL_CONTROLLER_MAX6649 "NVML_THERMAL_CONTROLLER_MAX6649" + NVML_THERMAL_CONTROLLER_MAX1617 "NVML_THERMAL_CONTROLLER_MAX1617" + NVML_THERMAL_CONTROLLER_LM99 "NVML_THERMAL_CONTROLLER_LM99" + NVML_THERMAL_CONTROLLER_LM89 "NVML_THERMAL_CONTROLLER_LM89" + NVML_THERMAL_CONTROLLER_LM64 "NVML_THERMAL_CONTROLLER_LM64" + NVML_THERMAL_CONTROLLER_G781 "NVML_THERMAL_CONTROLLER_G781" + NVML_THERMAL_CONTROLLER_ADT7473 "NVML_THERMAL_CONTROLLER_ADT7473" + NVML_THERMAL_CONTROLLER_SBMAX6649 "NVML_THERMAL_CONTROLLER_SBMAX6649" + NVML_THERMAL_CONTROLLER_VBIOSEVT "NVML_THERMAL_CONTROLLER_VBIOSEVT" + NVML_THERMAL_CONTROLLER_OS "NVML_THERMAL_CONTROLLER_OS" + NVML_THERMAL_CONTROLLER_NVSYSCON_CANOAS "NVML_THERMAL_CONTROLLER_NVSYSCON_CANOAS" + NVML_THERMAL_CONTROLLER_NVSYSCON_E551 "NVML_THERMAL_CONTROLLER_NVSYSCON_E551" + NVML_THERMAL_CONTROLLER_MAX6649R "NVML_THERMAL_CONTROLLER_MAX6649R" + NVML_THERMAL_CONTROLLER_ADT7473S "NVML_THERMAL_CONTROLLER_ADT7473S" + NVML_THERMAL_CONTROLLER_UNKNOWN "NVML_THERMAL_CONTROLLER_UNKNOWN" = -(1) + +ctypedef enum nvmlCoolerControl_t "nvmlCoolerControl_t": + NVML_THERMAL_COOLER_SIGNAL_NONE "NVML_THERMAL_COOLER_SIGNAL_NONE" = 0 + NVML_THERMAL_COOLER_SIGNAL_TOGGLE "NVML_THERMAL_COOLER_SIGNAL_TOGGLE" = 1 + NVML_THERMAL_COOLER_SIGNAL_VARIABLE "NVML_THERMAL_COOLER_SIGNAL_VARIABLE" = 2 + NVML_THERMAL_COOLER_SIGNAL_COUNT "NVML_THERMAL_COOLER_SIGNAL_COUNT" + +ctypedef enum nvmlCoolerTarget_t "nvmlCoolerTarget_t": + NVML_THERMAL_COOLER_TARGET_NONE "NVML_THERMAL_COOLER_TARGET_NONE" = (1 << 0) + NVML_THERMAL_COOLER_TARGET_GPU "NVML_THERMAL_COOLER_TARGET_GPU" = (1 << 1) + NVML_THERMAL_COOLER_TARGET_MEMORY "NVML_THERMAL_COOLER_TARGET_MEMORY" = (1 << 2) + NVML_THERMAL_COOLER_TARGET_POWER_SUPPLY "NVML_THERMAL_COOLER_TARGET_POWER_SUPPLY" = (1 << 3) + NVML_THERMAL_COOLER_TARGET_GPU_RELATED "NVML_THERMAL_COOLER_TARGET_GPU_RELATED" = ((NVML_THERMAL_COOLER_TARGET_GPU | NVML_THERMAL_COOLER_TARGET_MEMORY) | NVML_THERMAL_COOLER_TARGET_POWER_SUPPLY) + +ctypedef enum nvmlUUIDType_t "nvmlUUIDType_t": + NVML_UUID_TYPE_NONE "NVML_UUID_TYPE_NONE" = 0 + NVML_UUID_TYPE_ASCII "NVML_UUID_TYPE_ASCII" = 1 + NVML_UUID_TYPE_BINARY "NVML_UUID_TYPE_BINARY" = 2 + +ctypedef enum nvmlEnableState_t "nvmlEnableState_t": + NVML_FEATURE_DISABLED "NVML_FEATURE_DISABLED" = 0 + NVML_FEATURE_ENABLED "NVML_FEATURE_ENABLED" = 1 + +ctypedef enum nvmlBrandType_t "nvmlBrandType_t": + NVML_BRAND_UNKNOWN "NVML_BRAND_UNKNOWN" = 0 + NVML_BRAND_QUADRO "NVML_BRAND_QUADRO" = 1 + NVML_BRAND_TESLA "NVML_BRAND_TESLA" = 2 + NVML_BRAND_NVS "NVML_BRAND_NVS" = 3 + NVML_BRAND_GRID "NVML_BRAND_GRID" = 4 + NVML_BRAND_GEFORCE "NVML_BRAND_GEFORCE" = 5 + NVML_BRAND_TITAN "NVML_BRAND_TITAN" = 6 + NVML_BRAND_NVIDIA_VAPPS "NVML_BRAND_NVIDIA_VAPPS" = 7 + NVML_BRAND_NVIDIA_VPC "NVML_BRAND_NVIDIA_VPC" = 8 + NVML_BRAND_NVIDIA_VCS "NVML_BRAND_NVIDIA_VCS" = 9 + NVML_BRAND_NVIDIA_VWS "NVML_BRAND_NVIDIA_VWS" = 10 + NVML_BRAND_NVIDIA_CLOUD_GAMING "NVML_BRAND_NVIDIA_CLOUD_GAMING" = 11 + NVML_BRAND_NVIDIA_VGAMING "NVML_BRAND_NVIDIA_VGAMING" = NVML_BRAND_NVIDIA_CLOUD_GAMING + NVML_BRAND_QUADRO_RTX "NVML_BRAND_QUADRO_RTX" = 12 + NVML_BRAND_NVIDIA_RTX "NVML_BRAND_NVIDIA_RTX" = 13 + NVML_BRAND_NVIDIA "NVML_BRAND_NVIDIA" = 14 + NVML_BRAND_GEFORCE_RTX "NVML_BRAND_GEFORCE_RTX" = 15 + NVML_BRAND_TITAN_RTX "NVML_BRAND_TITAN_RTX" = 16 + NVML_BRAND_COUNT "NVML_BRAND_COUNT" = 18 + +ctypedef enum nvmlTemperatureThresholds_t "nvmlTemperatureThresholds_t": + NVML_TEMPERATURE_THRESHOLD_SHUTDOWN "NVML_TEMPERATURE_THRESHOLD_SHUTDOWN" = 0 + NVML_TEMPERATURE_THRESHOLD_SLOWDOWN "NVML_TEMPERATURE_THRESHOLD_SLOWDOWN" = 1 + NVML_TEMPERATURE_THRESHOLD_MEM_MAX "NVML_TEMPERATURE_THRESHOLD_MEM_MAX" = 2 + NVML_TEMPERATURE_THRESHOLD_GPU_MAX "NVML_TEMPERATURE_THRESHOLD_GPU_MAX" = 3 + NVML_TEMPERATURE_THRESHOLD_ACOUSTIC_MIN "NVML_TEMPERATURE_THRESHOLD_ACOUSTIC_MIN" = 4 + NVML_TEMPERATURE_THRESHOLD_ACOUSTIC_CURR "NVML_TEMPERATURE_THRESHOLD_ACOUSTIC_CURR" = 5 + NVML_TEMPERATURE_THRESHOLD_ACOUSTIC_MAX "NVML_TEMPERATURE_THRESHOLD_ACOUSTIC_MAX" = 6 + NVML_TEMPERATURE_THRESHOLD_GPS_CURR "NVML_TEMPERATURE_THRESHOLD_GPS_CURR" = 7 + NVML_TEMPERATURE_THRESHOLD_COUNT "NVML_TEMPERATURE_THRESHOLD_COUNT" + +ctypedef enum nvmlTemperatureSensors_t "nvmlTemperatureSensors_t": + NVML_TEMPERATURE_GPU "NVML_TEMPERATURE_GPU" = 0 + NVML_TEMPERATURE_COUNT "NVML_TEMPERATURE_COUNT" + +ctypedef enum nvmlComputeMode_t "nvmlComputeMode_t": + NVML_COMPUTEMODE_DEFAULT "NVML_COMPUTEMODE_DEFAULT" = 0 + NVML_COMPUTEMODE_EXCLUSIVE_THREAD "NVML_COMPUTEMODE_EXCLUSIVE_THREAD" = 1 + NVML_COMPUTEMODE_PROHIBITED "NVML_COMPUTEMODE_PROHIBITED" = 2 + NVML_COMPUTEMODE_EXCLUSIVE_PROCESS "NVML_COMPUTEMODE_EXCLUSIVE_PROCESS" = 3 + NVML_COMPUTEMODE_COUNT "NVML_COMPUTEMODE_COUNT" + +ctypedef enum nvmlMemoryErrorType_t "nvmlMemoryErrorType_t": + NVML_MEMORY_ERROR_TYPE_CORRECTED "NVML_MEMORY_ERROR_TYPE_CORRECTED" = 0 + NVML_MEMORY_ERROR_TYPE_UNCORRECTED "NVML_MEMORY_ERROR_TYPE_UNCORRECTED" = 1 + NVML_MEMORY_ERROR_TYPE_COUNT "NVML_MEMORY_ERROR_TYPE_COUNT" + +ctypedef enum nvmlNvlinkVersion_t "nvmlNvlinkVersion_t": + NVML_NVLINK_VERSION_INVALID "NVML_NVLINK_VERSION_INVALID" = 0 + NVML_NVLINK_VERSION_1_0 "NVML_NVLINK_VERSION_1_0" = 1 + NVML_NVLINK_VERSION_2_0 "NVML_NVLINK_VERSION_2_0" = 2 + NVML_NVLINK_VERSION_2_2 "NVML_NVLINK_VERSION_2_2" = 3 + NVML_NVLINK_VERSION_3_0 "NVML_NVLINK_VERSION_3_0" = 4 + NVML_NVLINK_VERSION_3_1 "NVML_NVLINK_VERSION_3_1" = 5 + NVML_NVLINK_VERSION_4_0 "NVML_NVLINK_VERSION_4_0" = 6 + NVML_NVLINK_VERSION_5_0 "NVML_NVLINK_VERSION_5_0" = 7 + NVML_NVLINK_VERSION_6_0 "NVML_NVLINK_VERSION_6_0" = 8 + +ctypedef enum nvmlEccCounterType_t "nvmlEccCounterType_t": + NVML_VOLATILE_ECC "NVML_VOLATILE_ECC" = 0 + NVML_AGGREGATE_ECC "NVML_AGGREGATE_ECC" = 1 + NVML_ECC_COUNTER_TYPE_COUNT "NVML_ECC_COUNTER_TYPE_COUNT" + +ctypedef enum nvmlClockType_t "nvmlClockType_t": + NVML_CLOCK_GRAPHICS "NVML_CLOCK_GRAPHICS" = 0 + NVML_CLOCK_SM "NVML_CLOCK_SM" = 1 + NVML_CLOCK_MEM "NVML_CLOCK_MEM" = 2 + NVML_CLOCK_VIDEO "NVML_CLOCK_VIDEO" = 3 + NVML_CLOCK_COUNT "NVML_CLOCK_COUNT" + +ctypedef enum nvmlClockId_t "nvmlClockId_t": + NVML_CLOCK_ID_CURRENT "NVML_CLOCK_ID_CURRENT" = 0 + NVML_CLOCK_ID_APP_CLOCK_TARGET "NVML_CLOCK_ID_APP_CLOCK_TARGET" = 1 + NVML_CLOCK_ID_APP_CLOCK_DEFAULT "NVML_CLOCK_ID_APP_CLOCK_DEFAULT" = 2 + NVML_CLOCK_ID_CUSTOMER_BOOST_MAX "NVML_CLOCK_ID_CUSTOMER_BOOST_MAX" = 3 + NVML_CLOCK_ID_COUNT "NVML_CLOCK_ID_COUNT" + +ctypedef enum nvmlDriverModel_t "nvmlDriverModel_t": + NVML_DRIVER_WDDM "NVML_DRIVER_WDDM" = 0 + NVML_DRIVER_WDM "NVML_DRIVER_WDM" = 1 + NVML_DRIVER_MCDM "NVML_DRIVER_MCDM" = 2 + +ctypedef enum nvmlPstates_t "nvmlPstates_t": + NVML_PSTATE_0 "NVML_PSTATE_0" = 0 + NVML_PSTATE_1 "NVML_PSTATE_1" = 1 + NVML_PSTATE_2 "NVML_PSTATE_2" = 2 + NVML_PSTATE_3 "NVML_PSTATE_3" = 3 + NVML_PSTATE_4 "NVML_PSTATE_4" = 4 + NVML_PSTATE_5 "NVML_PSTATE_5" = 5 + NVML_PSTATE_6 "NVML_PSTATE_6" = 6 + NVML_PSTATE_7 "NVML_PSTATE_7" = 7 + NVML_PSTATE_8 "NVML_PSTATE_8" = 8 + NVML_PSTATE_9 "NVML_PSTATE_9" = 9 + NVML_PSTATE_10 "NVML_PSTATE_10" = 10 + NVML_PSTATE_11 "NVML_PSTATE_11" = 11 + NVML_PSTATE_12 "NVML_PSTATE_12" = 12 + NVML_PSTATE_13 "NVML_PSTATE_13" = 13 + NVML_PSTATE_14 "NVML_PSTATE_14" = 14 + NVML_PSTATE_15 "NVML_PSTATE_15" = 15 + NVML_PSTATE_UNKNOWN "NVML_PSTATE_UNKNOWN" = 32 + +ctypedef enum nvmlGpuOperationMode_t "nvmlGpuOperationMode_t": + NVML_GOM_ALL_ON "NVML_GOM_ALL_ON" = 0 + NVML_GOM_COMPUTE "NVML_GOM_COMPUTE" = 1 + NVML_GOM_LOW_DP "NVML_GOM_LOW_DP" = 2 + +ctypedef enum nvmlInforomObject_t "nvmlInforomObject_t": + NVML_INFOROM_OEM "NVML_INFOROM_OEM" = 0 + NVML_INFOROM_ECC "NVML_INFOROM_ECC" = 1 + NVML_INFOROM_POWER "NVML_INFOROM_POWER" = 2 + NVML_INFOROM_DEN "NVML_INFOROM_DEN" = 3 + NVML_INFOROM_COUNT "NVML_INFOROM_COUNT" + +ctypedef enum nvmlReturn_t "nvmlReturn_t": + NVML_SUCCESS "NVML_SUCCESS" = 0 + NVML_ERROR_UNINITIALIZED "NVML_ERROR_UNINITIALIZED" = 1 + NVML_ERROR_INVALID_ARGUMENT "NVML_ERROR_INVALID_ARGUMENT" = 2 + NVML_ERROR_NOT_SUPPORTED "NVML_ERROR_NOT_SUPPORTED" = 3 + NVML_ERROR_NO_PERMISSION "NVML_ERROR_NO_PERMISSION" = 4 + NVML_ERROR_ALREADY_INITIALIZED "NVML_ERROR_ALREADY_INITIALIZED" = 5 + NVML_ERROR_NOT_FOUND "NVML_ERROR_NOT_FOUND" = 6 + NVML_ERROR_INSUFFICIENT_SIZE "NVML_ERROR_INSUFFICIENT_SIZE" = 7 + NVML_ERROR_INSUFFICIENT_POWER "NVML_ERROR_INSUFFICIENT_POWER" = 8 + NVML_ERROR_DRIVER_NOT_LOADED "NVML_ERROR_DRIVER_NOT_LOADED" = 9 + NVML_ERROR_TIMEOUT "NVML_ERROR_TIMEOUT" = 10 + NVML_ERROR_IRQ_ISSUE "NVML_ERROR_IRQ_ISSUE" = 11 + NVML_ERROR_LIBRARY_NOT_FOUND "NVML_ERROR_LIBRARY_NOT_FOUND" = 12 + NVML_ERROR_FUNCTION_NOT_FOUND "NVML_ERROR_FUNCTION_NOT_FOUND" = 13 + NVML_ERROR_CORRUPTED_INFOROM "NVML_ERROR_CORRUPTED_INFOROM" = 14 + NVML_ERROR_GPU_IS_LOST "NVML_ERROR_GPU_IS_LOST" = 15 + NVML_ERROR_RESET_REQUIRED "NVML_ERROR_RESET_REQUIRED" = 16 + NVML_ERROR_OPERATING_SYSTEM "NVML_ERROR_OPERATING_SYSTEM" = 17 + NVML_ERROR_LIB_RM_VERSION_MISMATCH "NVML_ERROR_LIB_RM_VERSION_MISMATCH" = 18 + NVML_ERROR_IN_USE "NVML_ERROR_IN_USE" = 19 + NVML_ERROR_MEMORY "NVML_ERROR_MEMORY" = 20 + NVML_ERROR_NO_DATA "NVML_ERROR_NO_DATA" = 21 + NVML_ERROR_VGPU_ECC_NOT_SUPPORTED "NVML_ERROR_VGPU_ECC_NOT_SUPPORTED" = 22 + NVML_ERROR_INSUFFICIENT_RESOURCES "NVML_ERROR_INSUFFICIENT_RESOURCES" = 23 + NVML_ERROR_FREQ_NOT_SUPPORTED "NVML_ERROR_FREQ_NOT_SUPPORTED" = 24 + NVML_ERROR_ARGUMENT_VERSION_MISMATCH "NVML_ERROR_ARGUMENT_VERSION_MISMATCH" = 25 + NVML_ERROR_DEPRECATED "NVML_ERROR_DEPRECATED" = 26 + NVML_ERROR_NOT_READY "NVML_ERROR_NOT_READY" = 27 + NVML_ERROR_GPU_NOT_FOUND "NVML_ERROR_GPU_NOT_FOUND" = 28 + NVML_ERROR_INVALID_STATE "NVML_ERROR_INVALID_STATE" = 29 + NVML_ERROR_RESET_TYPE_NOT_SUPPORTED "NVML_ERROR_RESET_TYPE_NOT_SUPPORTED" = 30 + NVML_ERROR_UNKNOWN "NVML_ERROR_UNKNOWN" = 999 + _NVMLRETURN_T_INTERNAL_LOADING_ERROR "_NVMLRETURN_T_INTERNAL_LOADING_ERROR" = -42 + +ctypedef enum nvmlMemoryLocation_t "nvmlMemoryLocation_t": + NVML_MEMORY_LOCATION_L1_CACHE "NVML_MEMORY_LOCATION_L1_CACHE" = 0 + NVML_MEMORY_LOCATION_L2_CACHE "NVML_MEMORY_LOCATION_L2_CACHE" = 1 + NVML_MEMORY_LOCATION_DRAM "NVML_MEMORY_LOCATION_DRAM" = 2 + NVML_MEMORY_LOCATION_DEVICE_MEMORY "NVML_MEMORY_LOCATION_DEVICE_MEMORY" = 2 + NVML_MEMORY_LOCATION_REGISTER_FILE "NVML_MEMORY_LOCATION_REGISTER_FILE" = 3 + NVML_MEMORY_LOCATION_TEXTURE_MEMORY "NVML_MEMORY_LOCATION_TEXTURE_MEMORY" = 4 + NVML_MEMORY_LOCATION_TEXTURE_SHM "NVML_MEMORY_LOCATION_TEXTURE_SHM" = 5 + NVML_MEMORY_LOCATION_CBU "NVML_MEMORY_LOCATION_CBU" = 6 + NVML_MEMORY_LOCATION_SRAM "NVML_MEMORY_LOCATION_SRAM" = 7 + NVML_MEMORY_LOCATION_COUNT "NVML_MEMORY_LOCATION_COUNT" + +ctypedef enum nvmlPageRetirementCause_t "nvmlPageRetirementCause_t": + NVML_PAGE_RETIREMENT_CAUSE_MULTIPLE_SINGLE_BIT_ECC_ERRORS "NVML_PAGE_RETIREMENT_CAUSE_MULTIPLE_SINGLE_BIT_ECC_ERRORS" = 0 + NVML_PAGE_RETIREMENT_CAUSE_DOUBLE_BIT_ECC_ERROR "NVML_PAGE_RETIREMENT_CAUSE_DOUBLE_BIT_ECC_ERROR" = 1 + NVML_PAGE_RETIREMENT_CAUSE_COUNT "NVML_PAGE_RETIREMENT_CAUSE_COUNT" + +ctypedef enum nvmlRestrictedAPI_t "nvmlRestrictedAPI_t": + NVML_RESTRICTED_API_SET_APPLICATION_CLOCKS "NVML_RESTRICTED_API_SET_APPLICATION_CLOCKS" = 0 + NVML_RESTRICTED_API_SET_AUTO_BOOSTED_CLOCKS "NVML_RESTRICTED_API_SET_AUTO_BOOSTED_CLOCKS" = 1 + NVML_RESTRICTED_API_COUNT "NVML_RESTRICTED_API_COUNT" + +ctypedef enum nvmlGpuUtilizationDomainId_t "nvmlGpuUtilizationDomainId_t": + NVML_GPU_UTILIZATION_DOMAIN_GPU "NVML_GPU_UTILIZATION_DOMAIN_GPU" = 0 + NVML_GPU_UTILIZATION_DOMAIN_FB "NVML_GPU_UTILIZATION_DOMAIN_FB" = 1 + NVML_GPU_UTILIZATION_DOMAIN_VID "NVML_GPU_UTILIZATION_DOMAIN_VID" = 2 + NVML_GPU_UTILIZATION_DOMAIN_BUS "NVML_GPU_UTILIZATION_DOMAIN_BUS" = 3 + +ctypedef enum nvmlGpuVirtualizationMode_t "nvmlGpuVirtualizationMode_t": + NVML_GPU_VIRTUALIZATION_MODE_NONE "NVML_GPU_VIRTUALIZATION_MODE_NONE" = 0 + NVML_GPU_VIRTUALIZATION_MODE_PASSTHROUGH "NVML_GPU_VIRTUALIZATION_MODE_PASSTHROUGH" = 1 + NVML_GPU_VIRTUALIZATION_MODE_VGPU "NVML_GPU_VIRTUALIZATION_MODE_VGPU" = 2 + NVML_GPU_VIRTUALIZATION_MODE_HOST_VGPU "NVML_GPU_VIRTUALIZATION_MODE_HOST_VGPU" = 3 + NVML_GPU_VIRTUALIZATION_MODE_HOST_VSGA "NVML_GPU_VIRTUALIZATION_MODE_HOST_VSGA" = 4 + +ctypedef enum nvmlHostVgpuMode_t "nvmlHostVgpuMode_t": + NVML_HOST_VGPU_MODE_NON_SRIOV "NVML_HOST_VGPU_MODE_NON_SRIOV" = 0 + NVML_HOST_VGPU_MODE_SRIOV "NVML_HOST_VGPU_MODE_SRIOV" = 1 + +ctypedef enum nvmlVgpuVmIdType_t "nvmlVgpuVmIdType_t": + NVML_VGPU_VM_ID_DOMAIN_ID "NVML_VGPU_VM_ID_DOMAIN_ID" = 0 + NVML_VGPU_VM_ID_UUID "NVML_VGPU_VM_ID_UUID" = 1 + +ctypedef enum nvmlVgpuGuestInfoState_t "nvmlVgpuGuestInfoState_t": + NVML_VGPU_INSTANCE_GUEST_INFO_STATE_UNINITIALIZED "NVML_VGPU_INSTANCE_GUEST_INFO_STATE_UNINITIALIZED" = 0 + NVML_VGPU_INSTANCE_GUEST_INFO_STATE_INITIALIZED "NVML_VGPU_INSTANCE_GUEST_INFO_STATE_INITIALIZED" = 1 + +ctypedef enum nvmlGridLicenseFeatureCode_t "nvmlGridLicenseFeatureCode_t": + NVML_GRID_LICENSE_FEATURE_CODE_UNKNOWN "NVML_GRID_LICENSE_FEATURE_CODE_UNKNOWN" = 0 + NVML_GRID_LICENSE_FEATURE_CODE_VGPU "NVML_GRID_LICENSE_FEATURE_CODE_VGPU" = 1 + NVML_GRID_LICENSE_FEATURE_CODE_NVIDIA_RTX "NVML_GRID_LICENSE_FEATURE_CODE_NVIDIA_RTX" = 2 + NVML_GRID_LICENSE_FEATURE_CODE_VWORKSTATION "NVML_GRID_LICENSE_FEATURE_CODE_VWORKSTATION" = NVML_GRID_LICENSE_FEATURE_CODE_NVIDIA_RTX + NVML_GRID_LICENSE_FEATURE_CODE_GAMING "NVML_GRID_LICENSE_FEATURE_CODE_GAMING" = 3 + NVML_GRID_LICENSE_FEATURE_CODE_COMPUTE "NVML_GRID_LICENSE_FEATURE_CODE_COMPUTE" = 4 + +ctypedef enum nvmlVgpuCapability_t "nvmlVgpuCapability_t": + NVML_VGPU_CAP_NVLINK_P2P "NVML_VGPU_CAP_NVLINK_P2P" = 0 + NVML_VGPU_CAP_GPUDIRECT "NVML_VGPU_CAP_GPUDIRECT" = 1 + NVML_VGPU_CAP_MULTI_VGPU_EXCLUSIVE "NVML_VGPU_CAP_MULTI_VGPU_EXCLUSIVE" = 2 + NVML_VGPU_CAP_EXCLUSIVE_TYPE "NVML_VGPU_CAP_EXCLUSIVE_TYPE" = 3 + NVML_VGPU_CAP_EXCLUSIVE_SIZE "NVML_VGPU_CAP_EXCLUSIVE_SIZE" = 4 + NVML_VGPU_CAP_COUNT "NVML_VGPU_CAP_COUNT" + +ctypedef enum nvmlVgpuDriverCapability_t "nvmlVgpuDriverCapability_t": + NVML_VGPU_DRIVER_CAP_HETEROGENEOUS_MULTI_VGPU "NVML_VGPU_DRIVER_CAP_HETEROGENEOUS_MULTI_VGPU" = 0 + NVML_VGPU_DRIVER_CAP_WARM_UPDATE "NVML_VGPU_DRIVER_CAP_WARM_UPDATE" = 1 + NVML_VGPU_DRIVER_CAP_COUNT "NVML_VGPU_DRIVER_CAP_COUNT" + +ctypedef enum nvmlDeviceVgpuCapability_t "nvmlDeviceVgpuCapability_t": + NVML_DEVICE_VGPU_CAP_FRACTIONAL_MULTI_VGPU "NVML_DEVICE_VGPU_CAP_FRACTIONAL_MULTI_VGPU" = 0 + NVML_DEVICE_VGPU_CAP_HETEROGENEOUS_TIMESLICE_PROFILES "NVML_DEVICE_VGPU_CAP_HETEROGENEOUS_TIMESLICE_PROFILES" = 1 + NVML_DEVICE_VGPU_CAP_HETEROGENEOUS_TIMESLICE_SIZES "NVML_DEVICE_VGPU_CAP_HETEROGENEOUS_TIMESLICE_SIZES" = 2 + NVML_DEVICE_VGPU_CAP_READ_DEVICE_BUFFER_BW "NVML_DEVICE_VGPU_CAP_READ_DEVICE_BUFFER_BW" = 3 + NVML_DEVICE_VGPU_CAP_WRITE_DEVICE_BUFFER_BW "NVML_DEVICE_VGPU_CAP_WRITE_DEVICE_BUFFER_BW" = 4 + NVML_DEVICE_VGPU_CAP_DEVICE_STREAMING "NVML_DEVICE_VGPU_CAP_DEVICE_STREAMING" = 5 + NVML_DEVICE_VGPU_CAP_MINI_QUARTER_GPU "NVML_DEVICE_VGPU_CAP_MINI_QUARTER_GPU" = 6 + NVML_DEVICE_VGPU_CAP_COMPUTE_MEDIA_ENGINE_GPU "NVML_DEVICE_VGPU_CAP_COMPUTE_MEDIA_ENGINE_GPU" = 7 + NVML_DEVICE_VGPU_CAP_WARM_UPDATE "NVML_DEVICE_VGPU_CAP_WARM_UPDATE" = 8 + NVML_DEVICE_VGPU_CAP_HOMOGENEOUS_PLACEMENTS "NVML_DEVICE_VGPU_CAP_HOMOGENEOUS_PLACEMENTS" = 9 + NVML_DEVICE_VGPU_CAP_MIG_TIMESLICING_SUPPORTED "NVML_DEVICE_VGPU_CAP_MIG_TIMESLICING_SUPPORTED" = 10 + NVML_DEVICE_VGPU_CAP_MIG_TIMESLICING_ENABLED "NVML_DEVICE_VGPU_CAP_MIG_TIMESLICING_ENABLED" = 11 + NVML_DEVICE_VGPU_CAP_COUNT "NVML_DEVICE_VGPU_CAP_COUNT" + +ctypedef enum nvmlDeviceGpuRecoveryAction_t "nvmlDeviceGpuRecoveryAction_t": + NVML_GPU_RECOVERY_ACTION_NONE "NVML_GPU_RECOVERY_ACTION_NONE" = 0 + NVML_GPU_RECOVERY_ACTION_GPU_RESET "NVML_GPU_RECOVERY_ACTION_GPU_RESET" = 1 + NVML_GPU_RECOVERY_ACTION_NODE_REBOOT "NVML_GPU_RECOVERY_ACTION_NODE_REBOOT" = 2 + NVML_GPU_RECOVERY_ACTION_DRAIN_P2P "NVML_GPU_RECOVERY_ACTION_DRAIN_P2P" = 3 + NVML_GPU_RECOVERY_ACTION_DRAIN_AND_RESET "NVML_GPU_RECOVERY_ACTION_DRAIN_AND_RESET" = 4 + NVML_GPU_RECOVERY_ACTION_RECOVER_IMEX_DOMAIN "NVML_GPU_RECOVERY_ACTION_RECOVER_IMEX_DOMAIN" = 5 + +ctypedef enum nvmlFanState_t "nvmlFanState_t": + NVML_FAN_NORMAL "NVML_FAN_NORMAL" = 0 + NVML_FAN_FAILED "NVML_FAN_FAILED" = 1 + +ctypedef enum nvmlLedColor_t "nvmlLedColor_t": + NVML_LED_COLOR_GREEN "NVML_LED_COLOR_GREEN" = 0 + NVML_LED_COLOR_AMBER "NVML_LED_COLOR_AMBER" = 1 + +ctypedef enum nvmlEncoderType_t "nvmlEncoderType_t": + NVML_ENCODER_QUERY_H264 "NVML_ENCODER_QUERY_H264" = 0x00 + NVML_ENCODER_QUERY_HEVC "NVML_ENCODER_QUERY_HEVC" = 0x01 + NVML_ENCODER_QUERY_AV1 "NVML_ENCODER_QUERY_AV1" = 0x02 + NVML_ENCODER_QUERY_UNKNOWN "NVML_ENCODER_QUERY_UNKNOWN" = 0xFF + +ctypedef enum nvmlFBCSessionType_t "nvmlFBCSessionType_t": + NVML_FBC_SESSION_TYPE_UNKNOWN "NVML_FBC_SESSION_TYPE_UNKNOWN" = 0 + NVML_FBC_SESSION_TYPE_TOSYS "NVML_FBC_SESSION_TYPE_TOSYS" + NVML_FBC_SESSION_TYPE_CUDA "NVML_FBC_SESSION_TYPE_CUDA" + NVML_FBC_SESSION_TYPE_VID "NVML_FBC_SESSION_TYPE_VID" + NVML_FBC_SESSION_TYPE_HWENC "NVML_FBC_SESSION_TYPE_HWENC" + +ctypedef enum nvmlDetachGpuState_t "nvmlDetachGpuState_t": + NVML_DETACH_GPU_KEEP "NVML_DETACH_GPU_KEEP" = 0 + NVML_DETACH_GPU_REMOVE "NVML_DETACH_GPU_REMOVE" + +ctypedef enum nvmlPcieLinkState_t "nvmlPcieLinkState_t": + NVML_PCIE_LINK_KEEP "NVML_PCIE_LINK_KEEP" = 0 + NVML_PCIE_LINK_SHUT_DOWN "NVML_PCIE_LINK_SHUT_DOWN" + +ctypedef enum nvmlClockLimitId_t "nvmlClockLimitId_t": + NVML_CLOCK_LIMIT_ID_RANGE_START "NVML_CLOCK_LIMIT_ID_RANGE_START" = 0xffffff00 + NVML_CLOCK_LIMIT_ID_TDP "NVML_CLOCK_LIMIT_ID_TDP" + NVML_CLOCK_LIMIT_ID_UNLIMITED "NVML_CLOCK_LIMIT_ID_UNLIMITED" + +ctypedef enum nvmlVgpuVmCompatibility_t "nvmlVgpuVmCompatibility_t": + NVML_VGPU_VM_COMPATIBILITY_NONE "NVML_VGPU_VM_COMPATIBILITY_NONE" = 0x0 + NVML_VGPU_VM_COMPATIBILITY_COLD "NVML_VGPU_VM_COMPATIBILITY_COLD" = 0x1 + NVML_VGPU_VM_COMPATIBILITY_HIBERNATE "NVML_VGPU_VM_COMPATIBILITY_HIBERNATE" = 0x2 + NVML_VGPU_VM_COMPATIBILITY_SLEEP "NVML_VGPU_VM_COMPATIBILITY_SLEEP" = 0x4 + NVML_VGPU_VM_COMPATIBILITY_LIVE "NVML_VGPU_VM_COMPATIBILITY_LIVE" = 0x8 + +ctypedef enum nvmlVgpuPgpuCompatibilityLimitCode_t "nvmlVgpuPgpuCompatibilityLimitCode_t": + NVML_VGPU_COMPATIBILITY_LIMIT_NONE "NVML_VGPU_COMPATIBILITY_LIMIT_NONE" = 0x0 + NVML_VGPU_COMPATIBILITY_LIMIT_HOST_DRIVER "NVML_VGPU_COMPATIBILITY_LIMIT_HOST_DRIVER" = 0x1 + NVML_VGPU_COMPATIBILITY_LIMIT_GUEST_DRIVER "NVML_VGPU_COMPATIBILITY_LIMIT_GUEST_DRIVER" = 0x2 + NVML_VGPU_COMPATIBILITY_LIMIT_GPU "NVML_VGPU_COMPATIBILITY_LIMIT_GPU" = 0x4 + NVML_VGPU_COMPATIBILITY_LIMIT_OTHER "NVML_VGPU_COMPATIBILITY_LIMIT_OTHER" = 0x80000000 + +ctypedef enum nvmlGpmMetricId_t "nvmlGpmMetricId_t": + NVML_GPM_METRIC_GRAPHICS_UTIL "NVML_GPM_METRIC_GRAPHICS_UTIL" = 1 + NVML_GPM_METRIC_SM_UTIL "NVML_GPM_METRIC_SM_UTIL" = 2 + NVML_GPM_METRIC_SM_OCCUPANCY "NVML_GPM_METRIC_SM_OCCUPANCY" = 3 + NVML_GPM_METRIC_INTEGER_UTIL "NVML_GPM_METRIC_INTEGER_UTIL" = 4 + NVML_GPM_METRIC_ANY_TENSOR_UTIL "NVML_GPM_METRIC_ANY_TENSOR_UTIL" = 5 + NVML_GPM_METRIC_DFMA_TENSOR_UTIL "NVML_GPM_METRIC_DFMA_TENSOR_UTIL" = 6 + NVML_GPM_METRIC_HMMA_TENSOR_UTIL "NVML_GPM_METRIC_HMMA_TENSOR_UTIL" = 7 + NVML_GPM_METRIC_DMMA_TENSOR_UTIL "NVML_GPM_METRIC_DMMA_TENSOR_UTIL" = 8 + NVML_GPM_METRIC_IMMA_TENSOR_UTIL "NVML_GPM_METRIC_IMMA_TENSOR_UTIL" = 9 + NVML_GPM_METRIC_DRAM_BW_UTIL "NVML_GPM_METRIC_DRAM_BW_UTIL" = 10 + NVML_GPM_METRIC_FP64_UTIL "NVML_GPM_METRIC_FP64_UTIL" = 11 + NVML_GPM_METRIC_FP32_UTIL "NVML_GPM_METRIC_FP32_UTIL" = 12 + NVML_GPM_METRIC_FP16_UTIL "NVML_GPM_METRIC_FP16_UTIL" = 13 + NVML_GPM_METRIC_PCIE_TX_PER_SEC "NVML_GPM_METRIC_PCIE_TX_PER_SEC" = 20 + NVML_GPM_METRIC_PCIE_RX_PER_SEC "NVML_GPM_METRIC_PCIE_RX_PER_SEC" = 21 + NVML_GPM_METRIC_NVDEC_0_UTIL "NVML_GPM_METRIC_NVDEC_0_UTIL" = 30 + NVML_GPM_METRIC_NVDEC_1_UTIL "NVML_GPM_METRIC_NVDEC_1_UTIL" = 31 + NVML_GPM_METRIC_NVDEC_2_UTIL "NVML_GPM_METRIC_NVDEC_2_UTIL" = 32 + NVML_GPM_METRIC_NVDEC_3_UTIL "NVML_GPM_METRIC_NVDEC_3_UTIL" = 33 + NVML_GPM_METRIC_NVDEC_4_UTIL "NVML_GPM_METRIC_NVDEC_4_UTIL" = 34 + NVML_GPM_METRIC_NVDEC_5_UTIL "NVML_GPM_METRIC_NVDEC_5_UTIL" = 35 + NVML_GPM_METRIC_NVDEC_6_UTIL "NVML_GPM_METRIC_NVDEC_6_UTIL" = 36 + NVML_GPM_METRIC_NVDEC_7_UTIL "NVML_GPM_METRIC_NVDEC_7_UTIL" = 37 + NVML_GPM_METRIC_NVJPG_0_UTIL "NVML_GPM_METRIC_NVJPG_0_UTIL" = 40 + NVML_GPM_METRIC_NVJPG_1_UTIL "NVML_GPM_METRIC_NVJPG_1_UTIL" = 41 + NVML_GPM_METRIC_NVJPG_2_UTIL "NVML_GPM_METRIC_NVJPG_2_UTIL" = 42 + NVML_GPM_METRIC_NVJPG_3_UTIL "NVML_GPM_METRIC_NVJPG_3_UTIL" = 43 + NVML_GPM_METRIC_NVJPG_4_UTIL "NVML_GPM_METRIC_NVJPG_4_UTIL" = 44 + NVML_GPM_METRIC_NVJPG_5_UTIL "NVML_GPM_METRIC_NVJPG_5_UTIL" = 45 + NVML_GPM_METRIC_NVJPG_6_UTIL "NVML_GPM_METRIC_NVJPG_6_UTIL" = 46 + NVML_GPM_METRIC_NVJPG_7_UTIL "NVML_GPM_METRIC_NVJPG_7_UTIL" = 47 + NVML_GPM_METRIC_NVOFA_0_UTIL "NVML_GPM_METRIC_NVOFA_0_UTIL" = 50 + NVML_GPM_METRIC_NVOFA_1_UTIL "NVML_GPM_METRIC_NVOFA_1_UTIL" = 51 + NVML_GPM_METRIC_NVLINK_TOTAL_RX_PER_SEC "NVML_GPM_METRIC_NVLINK_TOTAL_RX_PER_SEC" = 60 + NVML_GPM_METRIC_NVLINK_TOTAL_TX_PER_SEC "NVML_GPM_METRIC_NVLINK_TOTAL_TX_PER_SEC" = 61 + NVML_GPM_METRIC_NVLINK_L0_RX_PER_SEC "NVML_GPM_METRIC_NVLINK_L0_RX_PER_SEC" = 62 + NVML_GPM_METRIC_NVLINK_L0_TX_PER_SEC "NVML_GPM_METRIC_NVLINK_L0_TX_PER_SEC" = 63 + NVML_GPM_METRIC_NVLINK_L1_RX_PER_SEC "NVML_GPM_METRIC_NVLINK_L1_RX_PER_SEC" = 64 + NVML_GPM_METRIC_NVLINK_L1_TX_PER_SEC "NVML_GPM_METRIC_NVLINK_L1_TX_PER_SEC" = 65 + NVML_GPM_METRIC_NVLINK_L2_RX_PER_SEC "NVML_GPM_METRIC_NVLINK_L2_RX_PER_SEC" = 66 + NVML_GPM_METRIC_NVLINK_L2_TX_PER_SEC "NVML_GPM_METRIC_NVLINK_L2_TX_PER_SEC" = 67 + NVML_GPM_METRIC_NVLINK_L3_RX_PER_SEC "NVML_GPM_METRIC_NVLINK_L3_RX_PER_SEC" = 68 + NVML_GPM_METRIC_NVLINK_L3_TX_PER_SEC "NVML_GPM_METRIC_NVLINK_L3_TX_PER_SEC" = 69 + NVML_GPM_METRIC_NVLINK_L4_RX_PER_SEC "NVML_GPM_METRIC_NVLINK_L4_RX_PER_SEC" = 70 + NVML_GPM_METRIC_NVLINK_L4_TX_PER_SEC "NVML_GPM_METRIC_NVLINK_L4_TX_PER_SEC" = 71 + NVML_GPM_METRIC_NVLINK_L5_RX_PER_SEC "NVML_GPM_METRIC_NVLINK_L5_RX_PER_SEC" = 72 + NVML_GPM_METRIC_NVLINK_L5_TX_PER_SEC "NVML_GPM_METRIC_NVLINK_L5_TX_PER_SEC" = 73 + NVML_GPM_METRIC_NVLINK_L6_RX_PER_SEC "NVML_GPM_METRIC_NVLINK_L6_RX_PER_SEC" = 74 + NVML_GPM_METRIC_NVLINK_L6_TX_PER_SEC "NVML_GPM_METRIC_NVLINK_L6_TX_PER_SEC" = 75 + NVML_GPM_METRIC_NVLINK_L7_RX_PER_SEC "NVML_GPM_METRIC_NVLINK_L7_RX_PER_SEC" = 76 + NVML_GPM_METRIC_NVLINK_L7_TX_PER_SEC "NVML_GPM_METRIC_NVLINK_L7_TX_PER_SEC" = 77 + NVML_GPM_METRIC_NVLINK_L8_RX_PER_SEC "NVML_GPM_METRIC_NVLINK_L8_RX_PER_SEC" = 78 + NVML_GPM_METRIC_NVLINK_L8_TX_PER_SEC "NVML_GPM_METRIC_NVLINK_L8_TX_PER_SEC" = 79 + NVML_GPM_METRIC_NVLINK_L9_RX_PER_SEC "NVML_GPM_METRIC_NVLINK_L9_RX_PER_SEC" = 80 + NVML_GPM_METRIC_NVLINK_L9_TX_PER_SEC "NVML_GPM_METRIC_NVLINK_L9_TX_PER_SEC" = 81 + NVML_GPM_METRIC_NVLINK_L10_RX_PER_SEC "NVML_GPM_METRIC_NVLINK_L10_RX_PER_SEC" = 82 + NVML_GPM_METRIC_NVLINK_L10_TX_PER_SEC "NVML_GPM_METRIC_NVLINK_L10_TX_PER_SEC" = 83 + NVML_GPM_METRIC_NVLINK_L11_RX_PER_SEC "NVML_GPM_METRIC_NVLINK_L11_RX_PER_SEC" = 84 + NVML_GPM_METRIC_NVLINK_L11_TX_PER_SEC "NVML_GPM_METRIC_NVLINK_L11_TX_PER_SEC" = 85 + NVML_GPM_METRIC_NVLINK_L12_RX_PER_SEC "NVML_GPM_METRIC_NVLINK_L12_RX_PER_SEC" = 86 + NVML_GPM_METRIC_NVLINK_L12_TX_PER_SEC "NVML_GPM_METRIC_NVLINK_L12_TX_PER_SEC" = 87 + NVML_GPM_METRIC_NVLINK_L13_RX_PER_SEC "NVML_GPM_METRIC_NVLINK_L13_RX_PER_SEC" = 88 + NVML_GPM_METRIC_NVLINK_L13_TX_PER_SEC "NVML_GPM_METRIC_NVLINK_L13_TX_PER_SEC" = 89 + NVML_GPM_METRIC_NVLINK_L14_RX_PER_SEC "NVML_GPM_METRIC_NVLINK_L14_RX_PER_SEC" = 90 + NVML_GPM_METRIC_NVLINK_L14_TX_PER_SEC "NVML_GPM_METRIC_NVLINK_L14_TX_PER_SEC" = 91 + NVML_GPM_METRIC_NVLINK_L15_RX_PER_SEC "NVML_GPM_METRIC_NVLINK_L15_RX_PER_SEC" = 92 + NVML_GPM_METRIC_NVLINK_L15_TX_PER_SEC "NVML_GPM_METRIC_NVLINK_L15_TX_PER_SEC" = 93 + NVML_GPM_METRIC_NVLINK_L16_RX_PER_SEC "NVML_GPM_METRIC_NVLINK_L16_RX_PER_SEC" = 94 + NVML_GPM_METRIC_NVLINK_L16_TX_PER_SEC "NVML_GPM_METRIC_NVLINK_L16_TX_PER_SEC" = 95 + NVML_GPM_METRIC_NVLINK_L17_RX_PER_SEC "NVML_GPM_METRIC_NVLINK_L17_RX_PER_SEC" = 96 + NVML_GPM_METRIC_NVLINK_L17_TX_PER_SEC "NVML_GPM_METRIC_NVLINK_L17_TX_PER_SEC" = 97 + NVML_GPM_METRIC_C2C_TOTAL_TX_PER_SEC "NVML_GPM_METRIC_C2C_TOTAL_TX_PER_SEC" = 100 + NVML_GPM_METRIC_C2C_TOTAL_RX_PER_SEC "NVML_GPM_METRIC_C2C_TOTAL_RX_PER_SEC" = 101 + NVML_GPM_METRIC_C2C_DATA_TX_PER_SEC "NVML_GPM_METRIC_C2C_DATA_TX_PER_SEC" = 102 + NVML_GPM_METRIC_C2C_DATA_RX_PER_SEC "NVML_GPM_METRIC_C2C_DATA_RX_PER_SEC" = 103 + NVML_GPM_METRIC_C2C_LINK0_TOTAL_TX_PER_SEC "NVML_GPM_METRIC_C2C_LINK0_TOTAL_TX_PER_SEC" = 104 + NVML_GPM_METRIC_C2C_LINK0_TOTAL_RX_PER_SEC "NVML_GPM_METRIC_C2C_LINK0_TOTAL_RX_PER_SEC" = 105 + NVML_GPM_METRIC_C2C_LINK0_DATA_TX_PER_SEC "NVML_GPM_METRIC_C2C_LINK0_DATA_TX_PER_SEC" = 106 + NVML_GPM_METRIC_C2C_LINK0_DATA_RX_PER_SEC "NVML_GPM_METRIC_C2C_LINK0_DATA_RX_PER_SEC" = 107 + NVML_GPM_METRIC_C2C_LINK1_TOTAL_TX_PER_SEC "NVML_GPM_METRIC_C2C_LINK1_TOTAL_TX_PER_SEC" = 108 + NVML_GPM_METRIC_C2C_LINK1_TOTAL_RX_PER_SEC "NVML_GPM_METRIC_C2C_LINK1_TOTAL_RX_PER_SEC" = 109 + NVML_GPM_METRIC_C2C_LINK1_DATA_TX_PER_SEC "NVML_GPM_METRIC_C2C_LINK1_DATA_TX_PER_SEC" = 110 + NVML_GPM_METRIC_C2C_LINK1_DATA_RX_PER_SEC "NVML_GPM_METRIC_C2C_LINK1_DATA_RX_PER_SEC" = 111 + NVML_GPM_METRIC_C2C_LINK2_TOTAL_TX_PER_SEC "NVML_GPM_METRIC_C2C_LINK2_TOTAL_TX_PER_SEC" = 112 + NVML_GPM_METRIC_C2C_LINK2_TOTAL_RX_PER_SEC "NVML_GPM_METRIC_C2C_LINK2_TOTAL_RX_PER_SEC" = 113 + NVML_GPM_METRIC_C2C_LINK2_DATA_TX_PER_SEC "NVML_GPM_METRIC_C2C_LINK2_DATA_TX_PER_SEC" = 114 + NVML_GPM_METRIC_C2C_LINK2_DATA_RX_PER_SEC "NVML_GPM_METRIC_C2C_LINK2_DATA_RX_PER_SEC" = 115 + NVML_GPM_METRIC_C2C_LINK3_TOTAL_TX_PER_SEC "NVML_GPM_METRIC_C2C_LINK3_TOTAL_TX_PER_SEC" = 116 + NVML_GPM_METRIC_C2C_LINK3_TOTAL_RX_PER_SEC "NVML_GPM_METRIC_C2C_LINK3_TOTAL_RX_PER_SEC" = 117 + NVML_GPM_METRIC_C2C_LINK3_DATA_TX_PER_SEC "NVML_GPM_METRIC_C2C_LINK3_DATA_TX_PER_SEC" = 118 + NVML_GPM_METRIC_C2C_LINK3_DATA_RX_PER_SEC "NVML_GPM_METRIC_C2C_LINK3_DATA_RX_PER_SEC" = 119 + NVML_GPM_METRIC_C2C_LINK4_TOTAL_TX_PER_SEC "NVML_GPM_METRIC_C2C_LINK4_TOTAL_TX_PER_SEC" = 120 + NVML_GPM_METRIC_C2C_LINK4_TOTAL_RX_PER_SEC "NVML_GPM_METRIC_C2C_LINK4_TOTAL_RX_PER_SEC" = 121 + NVML_GPM_METRIC_C2C_LINK4_DATA_TX_PER_SEC "NVML_GPM_METRIC_C2C_LINK4_DATA_TX_PER_SEC" = 122 + NVML_GPM_METRIC_C2C_LINK4_DATA_RX_PER_SEC "NVML_GPM_METRIC_C2C_LINK4_DATA_RX_PER_SEC" = 123 + NVML_GPM_METRIC_C2C_LINK5_TOTAL_TX_PER_SEC "NVML_GPM_METRIC_C2C_LINK5_TOTAL_TX_PER_SEC" = 124 + NVML_GPM_METRIC_C2C_LINK5_TOTAL_RX_PER_SEC "NVML_GPM_METRIC_C2C_LINK5_TOTAL_RX_PER_SEC" = 125 + NVML_GPM_METRIC_C2C_LINK5_DATA_TX_PER_SEC "NVML_GPM_METRIC_C2C_LINK5_DATA_TX_PER_SEC" = 126 + NVML_GPM_METRIC_C2C_LINK5_DATA_RX_PER_SEC "NVML_GPM_METRIC_C2C_LINK5_DATA_RX_PER_SEC" = 127 + NVML_GPM_METRIC_C2C_LINK6_TOTAL_TX_PER_SEC "NVML_GPM_METRIC_C2C_LINK6_TOTAL_TX_PER_SEC" = 128 + NVML_GPM_METRIC_C2C_LINK6_TOTAL_RX_PER_SEC "NVML_GPM_METRIC_C2C_LINK6_TOTAL_RX_PER_SEC" = 129 + NVML_GPM_METRIC_C2C_LINK6_DATA_TX_PER_SEC "NVML_GPM_METRIC_C2C_LINK6_DATA_TX_PER_SEC" = 130 + NVML_GPM_METRIC_C2C_LINK6_DATA_RX_PER_SEC "NVML_GPM_METRIC_C2C_LINK6_DATA_RX_PER_SEC" = 131 + NVML_GPM_METRIC_C2C_LINK7_TOTAL_TX_PER_SEC "NVML_GPM_METRIC_C2C_LINK7_TOTAL_TX_PER_SEC" = 132 + NVML_GPM_METRIC_C2C_LINK7_TOTAL_RX_PER_SEC "NVML_GPM_METRIC_C2C_LINK7_TOTAL_RX_PER_SEC" = 133 + NVML_GPM_METRIC_C2C_LINK7_DATA_TX_PER_SEC "NVML_GPM_METRIC_C2C_LINK7_DATA_TX_PER_SEC" = 134 + NVML_GPM_METRIC_C2C_LINK7_DATA_RX_PER_SEC "NVML_GPM_METRIC_C2C_LINK7_DATA_RX_PER_SEC" = 135 + NVML_GPM_METRIC_C2C_LINK8_TOTAL_TX_PER_SEC "NVML_GPM_METRIC_C2C_LINK8_TOTAL_TX_PER_SEC" = 136 + NVML_GPM_METRIC_C2C_LINK8_TOTAL_RX_PER_SEC "NVML_GPM_METRIC_C2C_LINK8_TOTAL_RX_PER_SEC" = 137 + NVML_GPM_METRIC_C2C_LINK8_DATA_TX_PER_SEC "NVML_GPM_METRIC_C2C_LINK8_DATA_TX_PER_SEC" = 138 + NVML_GPM_METRIC_C2C_LINK8_DATA_RX_PER_SEC "NVML_GPM_METRIC_C2C_LINK8_DATA_RX_PER_SEC" = 139 + NVML_GPM_METRIC_C2C_LINK9_TOTAL_TX_PER_SEC "NVML_GPM_METRIC_C2C_LINK9_TOTAL_TX_PER_SEC" = 140 + NVML_GPM_METRIC_C2C_LINK9_TOTAL_RX_PER_SEC "NVML_GPM_METRIC_C2C_LINK9_TOTAL_RX_PER_SEC" = 141 + NVML_GPM_METRIC_C2C_LINK9_DATA_TX_PER_SEC "NVML_GPM_METRIC_C2C_LINK9_DATA_TX_PER_SEC" = 142 + NVML_GPM_METRIC_C2C_LINK9_DATA_RX_PER_SEC "NVML_GPM_METRIC_C2C_LINK9_DATA_RX_PER_SEC" = 143 + NVML_GPM_METRIC_C2C_LINK10_TOTAL_TX_PER_SEC "NVML_GPM_METRIC_C2C_LINK10_TOTAL_TX_PER_SEC" = 144 + NVML_GPM_METRIC_C2C_LINK10_TOTAL_RX_PER_SEC "NVML_GPM_METRIC_C2C_LINK10_TOTAL_RX_PER_SEC" = 145 + NVML_GPM_METRIC_C2C_LINK10_DATA_TX_PER_SEC "NVML_GPM_METRIC_C2C_LINK10_DATA_TX_PER_SEC" = 146 + NVML_GPM_METRIC_C2C_LINK10_DATA_RX_PER_SEC "NVML_GPM_METRIC_C2C_LINK10_DATA_RX_PER_SEC" = 147 + NVML_GPM_METRIC_C2C_LINK11_TOTAL_TX_PER_SEC "NVML_GPM_METRIC_C2C_LINK11_TOTAL_TX_PER_SEC" = 148 + NVML_GPM_METRIC_C2C_LINK11_TOTAL_RX_PER_SEC "NVML_GPM_METRIC_C2C_LINK11_TOTAL_RX_PER_SEC" = 149 + NVML_GPM_METRIC_C2C_LINK11_DATA_TX_PER_SEC "NVML_GPM_METRIC_C2C_LINK11_DATA_TX_PER_SEC" = 150 + NVML_GPM_METRIC_C2C_LINK11_DATA_RX_PER_SEC "NVML_GPM_METRIC_C2C_LINK11_DATA_RX_PER_SEC" = 151 + NVML_GPM_METRIC_C2C_LINK12_TOTAL_TX_PER_SEC "NVML_GPM_METRIC_C2C_LINK12_TOTAL_TX_PER_SEC" = 152 + NVML_GPM_METRIC_C2C_LINK12_TOTAL_RX_PER_SEC "NVML_GPM_METRIC_C2C_LINK12_TOTAL_RX_PER_SEC" = 153 + NVML_GPM_METRIC_C2C_LINK12_DATA_TX_PER_SEC "NVML_GPM_METRIC_C2C_LINK12_DATA_TX_PER_SEC" = 154 + NVML_GPM_METRIC_C2C_LINK12_DATA_RX_PER_SEC "NVML_GPM_METRIC_C2C_LINK12_DATA_RX_PER_SEC" = 155 + NVML_GPM_METRIC_C2C_LINK13_TOTAL_TX_PER_SEC "NVML_GPM_METRIC_C2C_LINK13_TOTAL_TX_PER_SEC" = 156 + NVML_GPM_METRIC_C2C_LINK13_TOTAL_RX_PER_SEC "NVML_GPM_METRIC_C2C_LINK13_TOTAL_RX_PER_SEC" = 157 + NVML_GPM_METRIC_C2C_LINK13_DATA_TX_PER_SEC "NVML_GPM_METRIC_C2C_LINK13_DATA_TX_PER_SEC" = 158 + NVML_GPM_METRIC_C2C_LINK13_DATA_RX_PER_SEC "NVML_GPM_METRIC_C2C_LINK13_DATA_RX_PER_SEC" = 159 + NVML_GPM_METRIC_HOSTMEM_CACHE_HIT "NVML_GPM_METRIC_HOSTMEM_CACHE_HIT" = 160 + NVML_GPM_METRIC_HOSTMEM_CACHE_MISS "NVML_GPM_METRIC_HOSTMEM_CACHE_MISS" = 161 + NVML_GPM_METRIC_PEERMEM_CACHE_HIT "NVML_GPM_METRIC_PEERMEM_CACHE_HIT" = 162 + NVML_GPM_METRIC_PEERMEM_CACHE_MISS "NVML_GPM_METRIC_PEERMEM_CACHE_MISS" = 163 + NVML_GPM_METRIC_DRAM_CACHE_HIT "NVML_GPM_METRIC_DRAM_CACHE_HIT" = 164 + NVML_GPM_METRIC_DRAM_CACHE_MISS "NVML_GPM_METRIC_DRAM_CACHE_MISS" = 165 + NVML_GPM_METRIC_NVENC_0_UTIL "NVML_GPM_METRIC_NVENC_0_UTIL" = 166 + NVML_GPM_METRIC_NVENC_1_UTIL "NVML_GPM_METRIC_NVENC_1_UTIL" = 167 + NVML_GPM_METRIC_NVENC_2_UTIL "NVML_GPM_METRIC_NVENC_2_UTIL" = 168 + NVML_GPM_METRIC_NVENC_3_UTIL "NVML_GPM_METRIC_NVENC_3_UTIL" = 169 + NVML_GPM_METRIC_GR0_CTXSW_CYCLES_ELAPSED "NVML_GPM_METRIC_GR0_CTXSW_CYCLES_ELAPSED" = 170 + NVML_GPM_METRIC_GR0_CTXSW_CYCLES_ACTIVE "NVML_GPM_METRIC_GR0_CTXSW_CYCLES_ACTIVE" = 171 + NVML_GPM_METRIC_GR0_CTXSW_REQUESTS "NVML_GPM_METRIC_GR0_CTXSW_REQUESTS" = 172 + NVML_GPM_METRIC_GR0_CTXSW_CYCLES_PER_REQ "NVML_GPM_METRIC_GR0_CTXSW_CYCLES_PER_REQ" = 173 + NVML_GPM_METRIC_GR0_CTXSW_ACTIVE_PCT "NVML_GPM_METRIC_GR0_CTXSW_ACTIVE_PCT" = 174 + NVML_GPM_METRIC_GR1_CTXSW_CYCLES_ELAPSED "NVML_GPM_METRIC_GR1_CTXSW_CYCLES_ELAPSED" = 175 + NVML_GPM_METRIC_GR1_CTXSW_CYCLES_ACTIVE "NVML_GPM_METRIC_GR1_CTXSW_CYCLES_ACTIVE" = 176 + NVML_GPM_METRIC_GR1_CTXSW_REQUESTS "NVML_GPM_METRIC_GR1_CTXSW_REQUESTS" = 177 + NVML_GPM_METRIC_GR1_CTXSW_CYCLES_PER_REQ "NVML_GPM_METRIC_GR1_CTXSW_CYCLES_PER_REQ" = 178 + NVML_GPM_METRIC_GR1_CTXSW_ACTIVE_PCT "NVML_GPM_METRIC_GR1_CTXSW_ACTIVE_PCT" = 179 + NVML_GPM_METRIC_GR2_CTXSW_CYCLES_ELAPSED "NVML_GPM_METRIC_GR2_CTXSW_CYCLES_ELAPSED" = 180 + NVML_GPM_METRIC_GR2_CTXSW_CYCLES_ACTIVE "NVML_GPM_METRIC_GR2_CTXSW_CYCLES_ACTIVE" = 181 + NVML_GPM_METRIC_GR2_CTXSW_REQUESTS "NVML_GPM_METRIC_GR2_CTXSW_REQUESTS" = 182 + NVML_GPM_METRIC_GR2_CTXSW_CYCLES_PER_REQ "NVML_GPM_METRIC_GR2_CTXSW_CYCLES_PER_REQ" = 183 + NVML_GPM_METRIC_GR2_CTXSW_ACTIVE_PCT "NVML_GPM_METRIC_GR2_CTXSW_ACTIVE_PCT" = 184 + NVML_GPM_METRIC_GR3_CTXSW_CYCLES_ELAPSED "NVML_GPM_METRIC_GR3_CTXSW_CYCLES_ELAPSED" = 185 + NVML_GPM_METRIC_GR3_CTXSW_CYCLES_ACTIVE "NVML_GPM_METRIC_GR3_CTXSW_CYCLES_ACTIVE" = 186 + NVML_GPM_METRIC_GR3_CTXSW_REQUESTS "NVML_GPM_METRIC_GR3_CTXSW_REQUESTS" = 187 + NVML_GPM_METRIC_GR3_CTXSW_CYCLES_PER_REQ "NVML_GPM_METRIC_GR3_CTXSW_CYCLES_PER_REQ" = 188 + NVML_GPM_METRIC_GR3_CTXSW_ACTIVE_PCT "NVML_GPM_METRIC_GR3_CTXSW_ACTIVE_PCT" = 189 + NVML_GPM_METRIC_GR4_CTXSW_CYCLES_ELAPSED "NVML_GPM_METRIC_GR4_CTXSW_CYCLES_ELAPSED" = 190 + NVML_GPM_METRIC_GR4_CTXSW_CYCLES_ACTIVE "NVML_GPM_METRIC_GR4_CTXSW_CYCLES_ACTIVE" = 191 + NVML_GPM_METRIC_GR4_CTXSW_REQUESTS "NVML_GPM_METRIC_GR4_CTXSW_REQUESTS" = 192 + NVML_GPM_METRIC_GR4_CTXSW_CYCLES_PER_REQ "NVML_GPM_METRIC_GR4_CTXSW_CYCLES_PER_REQ" = 193 + NVML_GPM_METRIC_GR4_CTXSW_ACTIVE_PCT "NVML_GPM_METRIC_GR4_CTXSW_ACTIVE_PCT" = 194 + NVML_GPM_METRIC_GR5_CTXSW_CYCLES_ELAPSED "NVML_GPM_METRIC_GR5_CTXSW_CYCLES_ELAPSED" = 195 + NVML_GPM_METRIC_GR5_CTXSW_CYCLES_ACTIVE "NVML_GPM_METRIC_GR5_CTXSW_CYCLES_ACTIVE" = 196 + NVML_GPM_METRIC_GR5_CTXSW_REQUESTS "NVML_GPM_METRIC_GR5_CTXSW_REQUESTS" = 197 + NVML_GPM_METRIC_GR5_CTXSW_CYCLES_PER_REQ "NVML_GPM_METRIC_GR5_CTXSW_CYCLES_PER_REQ" = 198 + NVML_GPM_METRIC_GR5_CTXSW_ACTIVE_PCT "NVML_GPM_METRIC_GR5_CTXSW_ACTIVE_PCT" = 199 + NVML_GPM_METRIC_GR6_CTXSW_CYCLES_ELAPSED "NVML_GPM_METRIC_GR6_CTXSW_CYCLES_ELAPSED" = 200 + NVML_GPM_METRIC_GR6_CTXSW_CYCLES_ACTIVE "NVML_GPM_METRIC_GR6_CTXSW_CYCLES_ACTIVE" = 201 + NVML_GPM_METRIC_GR6_CTXSW_REQUESTS "NVML_GPM_METRIC_GR6_CTXSW_REQUESTS" = 202 + NVML_GPM_METRIC_GR6_CTXSW_CYCLES_PER_REQ "NVML_GPM_METRIC_GR6_CTXSW_CYCLES_PER_REQ" = 203 + NVML_GPM_METRIC_GR6_CTXSW_ACTIVE_PCT "NVML_GPM_METRIC_GR6_CTXSW_ACTIVE_PCT" = 204 + NVML_GPM_METRIC_GR7_CTXSW_CYCLES_ELAPSED "NVML_GPM_METRIC_GR7_CTXSW_CYCLES_ELAPSED" = 205 + NVML_GPM_METRIC_GR7_CTXSW_CYCLES_ACTIVE "NVML_GPM_METRIC_GR7_CTXSW_CYCLES_ACTIVE" = 206 + NVML_GPM_METRIC_GR7_CTXSW_REQUESTS "NVML_GPM_METRIC_GR7_CTXSW_REQUESTS" = 207 + NVML_GPM_METRIC_GR7_CTXSW_CYCLES_PER_REQ "NVML_GPM_METRIC_GR7_CTXSW_CYCLES_PER_REQ" = 208 + NVML_GPM_METRIC_GR7_CTXSW_ACTIVE_PCT "NVML_GPM_METRIC_GR7_CTXSW_ACTIVE_PCT" = 209 + NVML_GPM_METRIC_NVLINK_L18_RX_PER_SEC "NVML_GPM_METRIC_NVLINK_L18_RX_PER_SEC" = 212 + NVML_GPM_METRIC_NVLINK_L18_TX_PER_SEC "NVML_GPM_METRIC_NVLINK_L18_TX_PER_SEC" = 213 + NVML_GPM_METRIC_NVLINK_L19_RX_PER_SEC "NVML_GPM_METRIC_NVLINK_L19_RX_PER_SEC" = 214 + NVML_GPM_METRIC_NVLINK_L19_TX_PER_SEC "NVML_GPM_METRIC_NVLINK_L19_TX_PER_SEC" = 215 + NVML_GPM_METRIC_NVLINK_L20_RX_PER_SEC "NVML_GPM_METRIC_NVLINK_L20_RX_PER_SEC" = 216 + NVML_GPM_METRIC_NVLINK_L20_TX_PER_SEC "NVML_GPM_METRIC_NVLINK_L20_TX_PER_SEC" = 217 + NVML_GPM_METRIC_NVLINK_L21_RX_PER_SEC "NVML_GPM_METRIC_NVLINK_L21_RX_PER_SEC" = 218 + NVML_GPM_METRIC_NVLINK_L21_TX_PER_SEC "NVML_GPM_METRIC_NVLINK_L21_TX_PER_SEC" = 219 + NVML_GPM_METRIC_NVLINK_L22_RX_PER_SEC "NVML_GPM_METRIC_NVLINK_L22_RX_PER_SEC" = 220 + NVML_GPM_METRIC_NVLINK_L22_TX_PER_SEC "NVML_GPM_METRIC_NVLINK_L22_TX_PER_SEC" = 221 + NVML_GPM_METRIC_NVLINK_L23_RX_PER_SEC "NVML_GPM_METRIC_NVLINK_L23_RX_PER_SEC" = 222 + NVML_GPM_METRIC_NVLINK_L23_TX_PER_SEC "NVML_GPM_METRIC_NVLINK_L23_TX_PER_SEC" = 223 + NVML_GPM_METRIC_NVLINK_L24_RX_PER_SEC "NVML_GPM_METRIC_NVLINK_L24_RX_PER_SEC" = 224 + NVML_GPM_METRIC_NVLINK_L24_TX_PER_SEC "NVML_GPM_METRIC_NVLINK_L24_TX_PER_SEC" = 225 + NVML_GPM_METRIC_NVLINK_L25_RX_PER_SEC "NVML_GPM_METRIC_NVLINK_L25_RX_PER_SEC" = 226 + NVML_GPM_METRIC_NVLINK_L25_TX_PER_SEC "NVML_GPM_METRIC_NVLINK_L25_TX_PER_SEC" = 227 + NVML_GPM_METRIC_NVLINK_L26_RX_PER_SEC "NVML_GPM_METRIC_NVLINK_L26_RX_PER_SEC" = 228 + NVML_GPM_METRIC_NVLINK_L26_TX_PER_SEC "NVML_GPM_METRIC_NVLINK_L26_TX_PER_SEC" = 229 + NVML_GPM_METRIC_NVLINK_L27_RX_PER_SEC "NVML_GPM_METRIC_NVLINK_L27_RX_PER_SEC" = 230 + NVML_GPM_METRIC_NVLINK_L27_TX_PER_SEC "NVML_GPM_METRIC_NVLINK_L27_TX_PER_SEC" = 231 + NVML_GPM_METRIC_NVLINK_L28_RX_PER_SEC "NVML_GPM_METRIC_NVLINK_L28_RX_PER_SEC" = 232 + NVML_GPM_METRIC_NVLINK_L28_TX_PER_SEC "NVML_GPM_METRIC_NVLINK_L28_TX_PER_SEC" = 233 + NVML_GPM_METRIC_NVLINK_L29_RX_PER_SEC "NVML_GPM_METRIC_NVLINK_L29_RX_PER_SEC" = 234 + NVML_GPM_METRIC_NVLINK_L29_TX_PER_SEC "NVML_GPM_METRIC_NVLINK_L29_TX_PER_SEC" = 235 + NVML_GPM_METRIC_NVLINK_L30_RX_PER_SEC "NVML_GPM_METRIC_NVLINK_L30_RX_PER_SEC" = 236 + NVML_GPM_METRIC_NVLINK_L30_TX_PER_SEC "NVML_GPM_METRIC_NVLINK_L30_TX_PER_SEC" = 237 + NVML_GPM_METRIC_NVLINK_L31_RX_PER_SEC "NVML_GPM_METRIC_NVLINK_L31_RX_PER_SEC" = 238 + NVML_GPM_METRIC_NVLINK_L31_TX_PER_SEC "NVML_GPM_METRIC_NVLINK_L31_TX_PER_SEC" = 239 + NVML_GPM_METRIC_NVLINK_L32_RX_PER_SEC "NVML_GPM_METRIC_NVLINK_L32_RX_PER_SEC" = 240 + NVML_GPM_METRIC_NVLINK_L32_TX_PER_SEC "NVML_GPM_METRIC_NVLINK_L32_TX_PER_SEC" = 241 + NVML_GPM_METRIC_NVLINK_L33_RX_PER_SEC "NVML_GPM_METRIC_NVLINK_L33_RX_PER_SEC" = 242 + NVML_GPM_METRIC_NVLINK_L33_TX_PER_SEC "NVML_GPM_METRIC_NVLINK_L33_TX_PER_SEC" = 243 + NVML_GPM_METRIC_NVLINK_L34_RX_PER_SEC "NVML_GPM_METRIC_NVLINK_L34_RX_PER_SEC" = 244 + NVML_GPM_METRIC_NVLINK_L34_TX_PER_SEC "NVML_GPM_METRIC_NVLINK_L34_TX_PER_SEC" = 245 + NVML_GPM_METRIC_NVLINK_L35_RX_PER_SEC "NVML_GPM_METRIC_NVLINK_L35_RX_PER_SEC" = 246 + NVML_GPM_METRIC_NVLINK_L35_TX_PER_SEC "NVML_GPM_METRIC_NVLINK_L35_TX_PER_SEC" = 247 + NVML_GPM_METRIC_SM_CYCLES_ELAPSED "NVML_GPM_METRIC_SM_CYCLES_ELAPSED" = 248 + NVML_GPM_METRIC_SM_CYCLES_ACTIVE "NVML_GPM_METRIC_SM_CYCLES_ACTIVE" = 249 + NVML_GPM_METRIC_MMA_CYCLES_ACTIVE "NVML_GPM_METRIC_MMA_CYCLES_ACTIVE" = 250 + NVML_GPM_METRIC_DMMA_CYCLES_ACTIVE "NVML_GPM_METRIC_DMMA_CYCLES_ACTIVE" = 251 + NVML_GPM_METRIC_HMMA_CYCLES_ACTIVE "NVML_GPM_METRIC_HMMA_CYCLES_ACTIVE" = 252 + NVML_GPM_METRIC_IMMA_CYCLES_ACTIVE "NVML_GPM_METRIC_IMMA_CYCLES_ACTIVE" = 253 + NVML_GPM_METRIC_DFMA_CYCLES_ACTIVE "NVML_GPM_METRIC_DFMA_CYCLES_ACTIVE" = 254 + NVML_GPM_METRIC_PCIE_TX "NVML_GPM_METRIC_PCIE_TX" = 255 + NVML_GPM_METRIC_PCIE_RX "NVML_GPM_METRIC_PCIE_RX" = 256 + NVML_GPM_METRIC_INTEGER_CYCLES_ACTIVE "NVML_GPM_METRIC_INTEGER_CYCLES_ACTIVE" = 257 + NVML_GPM_METRIC_FP64_CYCLES_ACTIVE "NVML_GPM_METRIC_FP64_CYCLES_ACTIVE" = 258 + NVML_GPM_METRIC_FP32_CYCLES_ACTIVE "NVML_GPM_METRIC_FP32_CYCLES_ACTIVE" = 259 + NVML_GPM_METRIC_FP16_CYCLES_ACTIVE "NVML_GPM_METRIC_FP16_CYCLES_ACTIVE" = 260 + NVML_GPM_METRIC_NVLINK_L0_RX "NVML_GPM_METRIC_NVLINK_L0_RX" = 261 + NVML_GPM_METRIC_NVLINK_L0_TX "NVML_GPM_METRIC_NVLINK_L0_TX" = 262 + NVML_GPM_METRIC_NVLINK_L1_RX "NVML_GPM_METRIC_NVLINK_L1_RX" = 263 + NVML_GPM_METRIC_NVLINK_L1_TX "NVML_GPM_METRIC_NVLINK_L1_TX" = 264 + NVML_GPM_METRIC_NVLINK_L2_RX "NVML_GPM_METRIC_NVLINK_L2_RX" = 265 + NVML_GPM_METRIC_NVLINK_L2_TX "NVML_GPM_METRIC_NVLINK_L2_TX" = 266 + NVML_GPM_METRIC_NVLINK_L3_RX "NVML_GPM_METRIC_NVLINK_L3_RX" = 267 + NVML_GPM_METRIC_NVLINK_L3_TX "NVML_GPM_METRIC_NVLINK_L3_TX" = 268 + NVML_GPM_METRIC_NVLINK_L4_RX "NVML_GPM_METRIC_NVLINK_L4_RX" = 269 + NVML_GPM_METRIC_NVLINK_L4_TX "NVML_GPM_METRIC_NVLINK_L4_TX" = 270 + NVML_GPM_METRIC_NVLINK_L5_RX "NVML_GPM_METRIC_NVLINK_L5_RX" = 271 + NVML_GPM_METRIC_NVLINK_L5_TX "NVML_GPM_METRIC_NVLINK_L5_TX" = 272 + NVML_GPM_METRIC_NVLINK_L6_RX "NVML_GPM_METRIC_NVLINK_L6_RX" = 273 + NVML_GPM_METRIC_NVLINK_L6_TX "NVML_GPM_METRIC_NVLINK_L6_TX" = 274 + NVML_GPM_METRIC_NVLINK_L7_RX "NVML_GPM_METRIC_NVLINK_L7_RX" = 275 + NVML_GPM_METRIC_NVLINK_L7_TX "NVML_GPM_METRIC_NVLINK_L7_TX" = 276 + NVML_GPM_METRIC_NVLINK_L8_RX "NVML_GPM_METRIC_NVLINK_L8_RX" = 277 + NVML_GPM_METRIC_NVLINK_L8_TX "NVML_GPM_METRIC_NVLINK_L8_TX" = 278 + NVML_GPM_METRIC_NVLINK_L9_RX "NVML_GPM_METRIC_NVLINK_L9_RX" = 279 + NVML_GPM_METRIC_NVLINK_L9_TX "NVML_GPM_METRIC_NVLINK_L9_TX" = 280 + NVML_GPM_METRIC_NVLINK_L10_RX "NVML_GPM_METRIC_NVLINK_L10_RX" = 281 + NVML_GPM_METRIC_NVLINK_L10_TX "NVML_GPM_METRIC_NVLINK_L10_TX" = 282 + NVML_GPM_METRIC_NVLINK_L11_RX "NVML_GPM_METRIC_NVLINK_L11_RX" = 283 + NVML_GPM_METRIC_NVLINK_L11_TX "NVML_GPM_METRIC_NVLINK_L11_TX" = 284 + NVML_GPM_METRIC_NVLINK_L12_RX "NVML_GPM_METRIC_NVLINK_L12_RX" = 285 + NVML_GPM_METRIC_NVLINK_L12_TX "NVML_GPM_METRIC_NVLINK_L12_TX" = 286 + NVML_GPM_METRIC_NVLINK_L13_RX "NVML_GPM_METRIC_NVLINK_L13_RX" = 287 + NVML_GPM_METRIC_NVLINK_L13_TX "NVML_GPM_METRIC_NVLINK_L13_TX" = 288 + NVML_GPM_METRIC_NVLINK_L14_RX "NVML_GPM_METRIC_NVLINK_L14_RX" = 289 + NVML_GPM_METRIC_NVLINK_L14_TX "NVML_GPM_METRIC_NVLINK_L14_TX" = 290 + NVML_GPM_METRIC_NVLINK_L15_RX "NVML_GPM_METRIC_NVLINK_L15_RX" = 291 + NVML_GPM_METRIC_NVLINK_L15_TX "NVML_GPM_METRIC_NVLINK_L15_TX" = 292 + NVML_GPM_METRIC_NVLINK_L16_RX "NVML_GPM_METRIC_NVLINK_L16_RX" = 293 + NVML_GPM_METRIC_NVLINK_L16_TX "NVML_GPM_METRIC_NVLINK_L16_TX" = 294 + NVML_GPM_METRIC_NVLINK_L17_RX "NVML_GPM_METRIC_NVLINK_L17_RX" = 295 + NVML_GPM_METRIC_NVLINK_L17_TX "NVML_GPM_METRIC_NVLINK_L17_TX" = 296 + NVML_GPM_METRIC_NVLINK_L18_RX "NVML_GPM_METRIC_NVLINK_L18_RX" = 297 + NVML_GPM_METRIC_NVLINK_L18_TX "NVML_GPM_METRIC_NVLINK_L18_TX" = 298 + NVML_GPM_METRIC_NVLINK_L19_RX "NVML_GPM_METRIC_NVLINK_L19_RX" = 299 + NVML_GPM_METRIC_NVLINK_L19_TX "NVML_GPM_METRIC_NVLINK_L19_TX" = 300 + NVML_GPM_METRIC_NVLINK_L20_RX "NVML_GPM_METRIC_NVLINK_L20_RX" = 301 + NVML_GPM_METRIC_NVLINK_L20_TX "NVML_GPM_METRIC_NVLINK_L20_TX" = 302 + NVML_GPM_METRIC_NVLINK_L21_RX "NVML_GPM_METRIC_NVLINK_L21_RX" = 303 + NVML_GPM_METRIC_NVLINK_L21_TX "NVML_GPM_METRIC_NVLINK_L21_TX" = 304 + NVML_GPM_METRIC_NVLINK_L22_RX "NVML_GPM_METRIC_NVLINK_L22_RX" = 305 + NVML_GPM_METRIC_NVLINK_L22_TX "NVML_GPM_METRIC_NVLINK_L22_TX" = 306 + NVML_GPM_METRIC_NVLINK_L23_RX "NVML_GPM_METRIC_NVLINK_L23_RX" = 307 + NVML_GPM_METRIC_NVLINK_L23_TX "NVML_GPM_METRIC_NVLINK_L23_TX" = 308 + NVML_GPM_METRIC_NVLINK_L24_RX "NVML_GPM_METRIC_NVLINK_L24_RX" = 309 + NVML_GPM_METRIC_NVLINK_L24_TX "NVML_GPM_METRIC_NVLINK_L24_TX" = 310 + NVML_GPM_METRIC_NVLINK_L25_RX "NVML_GPM_METRIC_NVLINK_L25_RX" = 311 + NVML_GPM_METRIC_NVLINK_L25_TX "NVML_GPM_METRIC_NVLINK_L25_TX" = 312 + NVML_GPM_METRIC_NVLINK_L26_RX "NVML_GPM_METRIC_NVLINK_L26_RX" = 313 + NVML_GPM_METRIC_NVLINK_L26_TX "NVML_GPM_METRIC_NVLINK_L26_TX" = 314 + NVML_GPM_METRIC_NVLINK_L27_RX "NVML_GPM_METRIC_NVLINK_L27_RX" = 315 + NVML_GPM_METRIC_NVLINK_L27_TX "NVML_GPM_METRIC_NVLINK_L27_TX" = 316 + NVML_GPM_METRIC_NVLINK_L28_RX "NVML_GPM_METRIC_NVLINK_L28_RX" = 317 + NVML_GPM_METRIC_NVLINK_L28_TX "NVML_GPM_METRIC_NVLINK_L28_TX" = 318 + NVML_GPM_METRIC_NVLINK_L29_RX "NVML_GPM_METRIC_NVLINK_L29_RX" = 319 + NVML_GPM_METRIC_NVLINK_L29_TX "NVML_GPM_METRIC_NVLINK_L29_TX" = 320 + NVML_GPM_METRIC_NVLINK_L30_RX "NVML_GPM_METRIC_NVLINK_L30_RX" = 321 + NVML_GPM_METRIC_NVLINK_L30_TX "NVML_GPM_METRIC_NVLINK_L30_TX" = 322 + NVML_GPM_METRIC_NVLINK_L31_RX "NVML_GPM_METRIC_NVLINK_L31_RX" = 323 + NVML_GPM_METRIC_NVLINK_L31_TX "NVML_GPM_METRIC_NVLINK_L31_TX" = 324 + NVML_GPM_METRIC_NVLINK_L32_RX "NVML_GPM_METRIC_NVLINK_L32_RX" = 325 + NVML_GPM_METRIC_NVLINK_L32_TX "NVML_GPM_METRIC_NVLINK_L32_TX" = 326 + NVML_GPM_METRIC_NVLINK_L33_RX "NVML_GPM_METRIC_NVLINK_L33_RX" = 327 + NVML_GPM_METRIC_NVLINK_L33_TX "NVML_GPM_METRIC_NVLINK_L33_TX" = 328 + NVML_GPM_METRIC_NVLINK_L34_RX "NVML_GPM_METRIC_NVLINK_L34_RX" = 329 + NVML_GPM_METRIC_NVLINK_L34_TX "NVML_GPM_METRIC_NVLINK_L34_TX" = 330 + NVML_GPM_METRIC_NVLINK_L35_RX "NVML_GPM_METRIC_NVLINK_L35_RX" = 331 + NVML_GPM_METRIC_NVLINK_L35_TX "NVML_GPM_METRIC_NVLINK_L35_TX" = 332 + NVML_GPM_METRIC_MAX "NVML_GPM_METRIC_MAX" = 333 + +ctypedef enum nvmlPowerProfileType_t "nvmlPowerProfileType_t": + NVML_POWER_PROFILE_MAX_P "NVML_POWER_PROFILE_MAX_P" = 0 + NVML_POWER_PROFILE_MAX_Q "NVML_POWER_PROFILE_MAX_Q" = 1 + NVML_POWER_PROFILE_COMPUTE "NVML_POWER_PROFILE_COMPUTE" = 2 + NVML_POWER_PROFILE_MEMORY_BOUND "NVML_POWER_PROFILE_MEMORY_BOUND" = 3 + NVML_POWER_PROFILE_NETWORK "NVML_POWER_PROFILE_NETWORK" = 4 + NVML_POWER_PROFILE_BALANCED "NVML_POWER_PROFILE_BALANCED" = 5 + NVML_POWER_PROFILE_LLM_INFERENCE "NVML_POWER_PROFILE_LLM_INFERENCE" = 6 + NVML_POWER_PROFILE_LLM_TRAINING "NVML_POWER_PROFILE_LLM_TRAINING" = 7 + NVML_POWER_PROFILE_RBM "NVML_POWER_PROFILE_RBM" = 8 + NVML_POWER_PROFILE_DCPCIE "NVML_POWER_PROFILE_DCPCIE" = 9 + NVML_POWER_PROFILE_HMMA_SPARSE "NVML_POWER_PROFILE_HMMA_SPARSE" = 10 + NVML_POWER_PROFILE_HMMA_DENSE "NVML_POWER_PROFILE_HMMA_DENSE" = 11 + NVML_POWER_PROFILE_SYNC_BALANCED "NVML_POWER_PROFILE_SYNC_BALANCED" = 12 + NVML_POWER_PROFILE_HPC "NVML_POWER_PROFILE_HPC" = 13 + NVML_POWER_PROFILE_MIG "NVML_POWER_PROFILE_MIG" = 14 + NVML_POWER_PROFILE_MAX "NVML_POWER_PROFILE_MAX" = 15 + +ctypedef enum nvmlDeviceAddressingModeType_t "nvmlDeviceAddressingModeType_t": + NVML_DEVICE_ADDRESSING_MODE_NONE "NVML_DEVICE_ADDRESSING_MODE_NONE" = 0 + NVML_DEVICE_ADDRESSING_MODE_HMM "NVML_DEVICE_ADDRESSING_MODE_HMM" = 1 + NVML_DEVICE_ADDRESSING_MODE_ATS "NVML_DEVICE_ADDRESSING_MODE_ATS" = 2 + +ctypedef enum nvmlPRMCounterId_t "nvmlPRMCounterId_t": + NVML_PRM_COUNTER_ID_NONE "NVML_PRM_COUNTER_ID_NONE" = 0 + NVML_PRM_COUNTER_ID_PPCNT_PHYSICAL_LAYER_CTRS_LINK_DOWN_EVENTS "NVML_PRM_COUNTER_ID_PPCNT_PHYSICAL_LAYER_CTRS_LINK_DOWN_EVENTS" = 1 + NVML_PRM_COUNTER_ID_PPCNT_PHYSICAL_LAYER_CTRS_SUCCESSFUL_RECOVERY_EVENTS "NVML_PRM_COUNTER_ID_PPCNT_PHYSICAL_LAYER_CTRS_SUCCESSFUL_RECOVERY_EVENTS" = 2 + NVML_PRM_COUNTER_ID_PPCNT_RECOVERY_CTRS_TOTAL_SUCCESSFUL_RECOVERY_EVENTS "NVML_PRM_COUNTER_ID_PPCNT_RECOVERY_CTRS_TOTAL_SUCCESSFUL_RECOVERY_EVENTS" = 101 + NVML_PRM_COUNTER_ID_PPCNT_RECOVERY_CTRS_TIME_SINCE_LAST_RECOVERY "NVML_PRM_COUNTER_ID_PPCNT_RECOVERY_CTRS_TIME_SINCE_LAST_RECOVERY" = 102 + NVML_PRM_COUNTER_ID_PPCNT_RECOVERY_CTRS_TIME_BETWEEN_LAST_TWO_RECOVERIES "NVML_PRM_COUNTER_ID_PPCNT_RECOVERY_CTRS_TIME_BETWEEN_LAST_TWO_RECOVERIES" = 103 + NVML_PRM_COUNTER_ID_PPCNT_PORTCOUNTERS_PORT_XMIT_WAIT "NVML_PRM_COUNTER_ID_PPCNT_PORTCOUNTERS_PORT_XMIT_WAIT" = 201 + NVML_PRM_COUNTER_ID_PPCNT_PLR_RCV_CODES "NVML_PRM_COUNTER_ID_PPCNT_PLR_RCV_CODES" = 301 + NVML_PRM_COUNTER_ID_PPCNT_PLR_RCV_CODE_ERR "NVML_PRM_COUNTER_ID_PPCNT_PLR_RCV_CODE_ERR" = 302 + NVML_PRM_COUNTER_ID_PPCNT_PLR_RCV_UNCORRECTABLE_CODE "NVML_PRM_COUNTER_ID_PPCNT_PLR_RCV_UNCORRECTABLE_CODE" = 303 + NVML_PRM_COUNTER_ID_PPCNT_PLR_XMIT_CODES "NVML_PRM_COUNTER_ID_PPCNT_PLR_XMIT_CODES" = 304 + NVML_PRM_COUNTER_ID_PPCNT_PLR_XMIT_RETRY_CODES "NVML_PRM_COUNTER_ID_PPCNT_PLR_XMIT_RETRY_CODES" = 305 + NVML_PRM_COUNTER_ID_PPCNT_PLR_XMIT_RETRY_EVENTS "NVML_PRM_COUNTER_ID_PPCNT_PLR_XMIT_RETRY_EVENTS" = 306 + NVML_PRM_COUNTER_ID_PPCNT_PLR_SYNC_EVENTS "NVML_PRM_COUNTER_ID_PPCNT_PLR_SYNC_EVENTS" = 307 + NVML_PRM_COUNTER_ID_PPRM_OPER_RECOVERY "NVML_PRM_COUNTER_ID_PPRM_OPER_RECOVERY" = 1001 + +ctypedef enum nvmlPowerProfileOperation_t "nvmlPowerProfileOperation_t": + NVML_POWER_PROFILE_OPERATION_CLEAR "NVML_POWER_PROFILE_OPERATION_CLEAR" = 0 + NVML_POWER_PROFILE_OPERATION_SET "NVML_POWER_PROFILE_OPERATION_SET" = 1 + NVML_POWER_PROFILE_OPERATION_SET_AND_OVERWRITE "NVML_POWER_PROFILE_OPERATION_SET_AND_OVERWRITE" = 2 + NVML_POWER_PROFILE_OPERATION_MAX "NVML_POWER_PROFILE_OPERATION_MAX" = 3 + +ctypedef enum nvmlProcessMode_t "nvmlProcessMode_t": + NVML_PROCESS_MODE_COMPUTE "NVML_PROCESS_MODE_COMPUTE" = 0 + NVML_PROCESS_MODE_GRAPHICS "NVML_PROCESS_MODE_GRAPHICS" = 1 + NVML_PROCESS_MODE_MPS "NVML_PROCESS_MODE_MPS" = 2 + NVML_PROCESS_MODE_ALL "NVML_PROCESS_MODE_ALL" = 3 + NVML_PROCESS_MODE_MAX "NVML_PROCESS_MODE_MAX" = (NVML_PROCESS_MODE_ALL + 1) + +ctypedef enum nvmlCPERType_t "nvmlCPERType_t": + NVML_CPER_ACCESS_TYPE_GPU "NVML_CPER_ACCESS_TYPE_GPU" = (1 << 0) + + +# types +ctypedef struct nvmlPciInfoExt_v1_t 'nvmlPciInfoExt_v1_t': + unsigned int version + unsigned int domain + unsigned int bus + unsigned int device + unsigned int pciDeviceId + unsigned int pciSubSystemId + unsigned int baseClass + unsigned int subClass + char busId[32] + +ctypedef struct nvmlCoolerInfo_v1_t 'nvmlCoolerInfo_v1_t': + unsigned int version + unsigned int index + nvmlCoolerControl_t signalType + nvmlCoolerTarget_t target + +ctypedef struct nvmlDramEncryptionInfo_v1_t 'nvmlDramEncryptionInfo_v1_t': + unsigned int version + nvmlEnableState_t encryptionState + +ctypedef struct nvmlMarginTemperature_v1_t 'nvmlMarginTemperature_v1_t': + unsigned int version + int marginTemperature + +ctypedef struct nvmlClockOffset_v1_t 'nvmlClockOffset_v1_t': + unsigned int version + nvmlClockType_t type + nvmlPstates_t pstate + int clockOffsetMHz + int minClockOffsetMHz + int maxClockOffsetMHz + +ctypedef struct nvmlFanSpeedInfo_v1_t 'nvmlFanSpeedInfo_v1_t': + unsigned int version + unsigned int fan + unsigned int speed + +ctypedef struct nvmlDevicePerfModes_v1_t 'nvmlDevicePerfModes_v1_t': + unsigned int version + char str[2048] + +ctypedef struct nvmlDeviceCurrentClockFreqs_v1_t 'nvmlDeviceCurrentClockFreqs_v1_t': + unsigned int version + char str[2048] + +ctypedef struct nvmlEccSramErrorStatus_v1_t 'nvmlEccSramErrorStatus_v1_t': + unsigned int version + unsigned long long aggregateUncParity + unsigned long long aggregateUncSecDed + unsigned long long aggregateCor + unsigned long long volatileUncParity + unsigned long long volatileUncSecDed + unsigned long long volatileCor + unsigned long long aggregateUncBucketL2 + unsigned long long aggregateUncBucketSm + unsigned long long aggregateUncBucketPcie + unsigned long long aggregateUncBucketMcu + unsigned long long aggregateUncBucketOther + unsigned int bThresholdExceeded + +ctypedef struct nvmlPlatformInfo_v2_t 'nvmlPlatformInfo_v2_t': + unsigned int version + unsigned char ibGuid[16] + unsigned char chassisSerialNumber[16] + unsigned char slotNumber + unsigned char trayIndex + unsigned char hostId + unsigned char peerType + unsigned char moduleId + +ctypedef unsigned int nvmlDeviceArchitecture_t 'nvmlDeviceArchitecture_t' + +ctypedef unsigned int nvmlBusType_t 'nvmlBusType_t' + +ctypedef unsigned int nvmlFanControlPolicy_t 'nvmlFanControlPolicy_t' + +ctypedef unsigned int nvmlPowerSource_t 'nvmlPowerSource_t' + +ctypedef unsigned char nvmlPowerScopeType_t 'nvmlPowerScopeType_t' + +ctypedef unsigned int nvmlVgpuTypeId_t 'nvmlVgpuTypeId_t' + +ctypedef unsigned int nvmlVgpuInstance_t 'nvmlVgpuInstance_t' + +ctypedef struct nvmlVgpuHeterogeneousMode_v1_t 'nvmlVgpuHeterogeneousMode_v1_t': + unsigned int version + unsigned int mode + +ctypedef struct nvmlVgpuPlacementId_v1_t 'nvmlVgpuPlacementId_v1_t': + unsigned int version + unsigned int placementId + +ctypedef struct nvmlVgpuPlacementList_v2_t 'nvmlVgpuPlacementList_v2_t': + unsigned int version + unsigned int placementSize + unsigned int count + unsigned int* placementIds + unsigned int mode + +ctypedef struct nvmlVgpuTypeBar1Info_v1_t 'nvmlVgpuTypeBar1Info_v1_t': + unsigned int version + unsigned long long bar1Size + +ctypedef struct nvmlVgpuRuntimeState_v1_t 'nvmlVgpuRuntimeState_v1_t': + unsigned int version + unsigned long long size + +ctypedef struct nvmlSystemConfComputeSettings_v1_t 'nvmlSystemConfComputeSettings_v1_t': + unsigned int version + unsigned int environment + unsigned int ccFeature + unsigned int devToolsMode + unsigned int multiGpuMode + +ctypedef struct nvmlConfComputeSetKeyRotationThresholdInfo_v1_t 'nvmlConfComputeSetKeyRotationThresholdInfo_v1_t': + unsigned int version + unsigned long long maxAttackerAdvantage + +ctypedef struct nvmlConfComputeGetKeyRotationThresholdInfo_v1_t 'nvmlConfComputeGetKeyRotationThresholdInfo_v1_t': + unsigned int version + unsigned long long attackerAdvantage + +ctypedef unsigned char nvmlGpuFabricState_t 'nvmlGpuFabricState_t' + +ctypedef struct nvmlSystemDriverBranchInfo_v1_t 'nvmlSystemDriverBranchInfo_v1_t': + unsigned int version + char branch[80] + +ctypedef unsigned int nvmlAffinityScope_t 'nvmlAffinityScope_t' + +ctypedef struct nvmlTemperature_v1_t 'nvmlTemperature_v1_t': + unsigned int version + nvmlTemperatureSensors_t sensorType + int temperature + +ctypedef struct nvmlNvlinkSupportedBwModes_v1_t 'nvmlNvlinkSupportedBwModes_v1_t': + unsigned int version + unsigned char bwModes[23] + unsigned char totalBwModes + +ctypedef struct nvmlNvlinkGetBwMode_v1_t 'nvmlNvlinkGetBwMode_v1_t': + unsigned int version + unsigned int bIsBest + unsigned char bwMode + +ctypedef struct nvmlNvlinkSetBwMode_v1_t 'nvmlNvlinkSetBwMode_v1_t': + unsigned int version + unsigned int bSetBest + unsigned char bwMode + +ctypedef struct nvmlDeviceCapabilities_v1_t 'nvmlDeviceCapabilities_v1_t': + unsigned int version + unsigned int capMask + +ctypedef struct nvmlPowerSmoothingProfile_v1_t 'nvmlPowerSmoothingProfile_v1_t': + unsigned int version + unsigned int profileId + unsigned int paramId + double value + +ctypedef struct nvmlPowerSmoothingState_v1_t 'nvmlPowerSmoothingState_v1_t': + unsigned int version + nvmlEnableState_t state + +ctypedef struct nvmlDeviceAddressingMode_v1_t 'nvmlDeviceAddressingMode_v1_t': + unsigned int version + unsigned int value + +ctypedef struct nvmlRepairStatus_v1_t 'nvmlRepairStatus_v1_t': + unsigned int version + unsigned int bChannelRepairPending + unsigned int bTpcRepairPending + +ctypedef struct nvmlPdi_v1_t 'nvmlPdi_v1_t': + unsigned int version + unsigned long long value + +ctypedef unsigned long long nvmlCPERCursorHandle_t 'nvmlCPERCursorHandle_t' + +ctypedef void* nvmlDevice_t 'nvmlDevice_t' + +ctypedef void* nvmlGpuInstance_t 'nvmlGpuInstance_t' + +ctypedef void* nvmlUnit_t 'nvmlUnit_t' + +ctypedef void* nvmlEventSet_t 'nvmlEventSet_t' + +ctypedef void* nvmlSystemEventSet_t 'nvmlSystemEventSet_t' + +ctypedef void* nvmlComputeInstance_t 'nvmlComputeInstance_t' + +ctypedef void* nvmlGpmSample_t 'nvmlGpmSample_t' + +ctypedef struct nvmlPciInfo_t 'nvmlPciInfo_t': + char busIdLegacy[16] + unsigned int domain + unsigned int bus + unsigned int device + unsigned int pciDeviceId + unsigned int pciSubSystemId + char busId[32] + +ctypedef struct nvmlEccErrorCounts_t 'nvmlEccErrorCounts_t': + unsigned long long l1Cache + unsigned long long l2Cache + unsigned long long deviceMemory + unsigned long long registerFile + +ctypedef struct nvmlUtilization_t 'nvmlUtilization_t': + unsigned int gpu + unsigned int memory + +ctypedef struct nvmlMemory_t 'nvmlMemory_t': + unsigned long long total + unsigned long long free + unsigned long long used + +ctypedef struct nvmlMemory_v2_t 'nvmlMemory_v2_t': + unsigned int version + unsigned long long total + unsigned long long reserved + unsigned long long free + unsigned long long used + +ctypedef struct nvmlBAR1Memory_t 'nvmlBAR1Memory_t': + unsigned long long bar1Total + unsigned long long bar1Free + unsigned long long bar1Used + +ctypedef struct nvmlProcessInfo_v1_t 'nvmlProcessInfo_v1_t': + unsigned int pid + unsigned long long usedGpuMemory + +ctypedef struct nvmlProcessInfo_v2_t 'nvmlProcessInfo_v2_t': + unsigned int pid + unsigned long long usedGpuMemory + unsigned int gpuInstanceId + unsigned int computeInstanceId + +ctypedef struct nvmlProcessInfo_t 'nvmlProcessInfo_t': + unsigned int pid + unsigned long long usedGpuMemory + unsigned int gpuInstanceId + unsigned int computeInstanceId + +ctypedef struct nvmlProcessDetail_v1_t 'nvmlProcessDetail_v1_t': + unsigned int pid + unsigned long long usedGpuMemory + unsigned int gpuInstanceId + unsigned int computeInstanceId + unsigned long long usedGpuCcProtectedMemory + +ctypedef struct nvmlDeviceAttributes_t 'nvmlDeviceAttributes_t': + unsigned int multiprocessorCount + unsigned int sharedCopyEngineCount + unsigned int sharedDecoderCount + unsigned int sharedEncoderCount + unsigned int sharedJpegCount + unsigned int sharedOfaCount + unsigned int gpuInstanceSliceCount + unsigned int computeInstanceSliceCount + unsigned long long memorySizeMB + +ctypedef struct nvmlC2cModeInfo_v1_t 'nvmlC2cModeInfo_v1_t': + unsigned int isC2cEnabled + +ctypedef struct nvmlRowRemapperHistogramValues_t 'nvmlRowRemapperHistogramValues_t': + unsigned int max + unsigned int high + unsigned int partial + unsigned int low + unsigned int none + +ctypedef struct nvmlNvLinkUtilizationControl_t 'nvmlNvLinkUtilizationControl_t': + nvmlNvLinkUtilizationCountUnits_t units + nvmlNvLinkUtilizationCountPktTypes_t pktfilter + +ctypedef struct nvmlBridgeChipInfo_t 'nvmlBridgeChipInfo_t': + nvmlBridgeChipType_t type + unsigned int fwVersion + +ctypedef union nvmlValue_t 'nvmlValue_t': + double dVal + int siVal + unsigned int uiVal + unsigned long ulVal + unsigned long long ullVal + signed long long sllVal + unsigned short usVal + +ctypedef struct nvmlViolationTime_t 'nvmlViolationTime_t': + unsigned long long referenceTime + unsigned long long violationTime + +ctypedef struct cuda_bindings_nvml__anon_pod0: + nvmlThermalController_t controller + int defaultMinTemp + int defaultMaxTemp + int currentTemp + nvmlThermalTarget_t target + +ctypedef union nvmlUUIDValue_t 'nvmlUUIDValue_t': + char str[41] + unsigned char bytes[16] + +ctypedef struct nvmlClkMonFaultInfo_t 'nvmlClkMonFaultInfo_t': + unsigned int clkApiDomain + unsigned int clkDomainFaultMask + +ctypedef struct nvmlProcessUtilizationSample_t 'nvmlProcessUtilizationSample_t': + unsigned int pid + unsigned long long timeStamp + unsigned int smUtil + unsigned int memUtil + unsigned int encUtil + unsigned int decUtil + +ctypedef struct nvmlProcessUtilizationInfo_v1_t 'nvmlProcessUtilizationInfo_v1_t': + unsigned long long timeStamp + unsigned int pid + unsigned int smUtil + unsigned int memUtil + unsigned int encUtil + unsigned int decUtil + unsigned int jpgUtil + unsigned int ofaUtil + +ctypedef struct nvmlPlatformInfo_v1_t 'nvmlPlatformInfo_v1_t': + unsigned int version + unsigned char ibGuid[16] + unsigned char rackGuid[16] + unsigned char chassisPhysicalSlotNumber + unsigned char computeSlotIndex + unsigned char nodeIndex + unsigned char peerType + unsigned char moduleId + +ctypedef struct cuda_bindings_nvml__anon_pod1: + unsigned int bIsPresent + unsigned int percentage + unsigned int incThreshold + unsigned int decThreshold + +ctypedef struct nvmlVgpuPlacementList_v1_t 'nvmlVgpuPlacementList_v1_t': + unsigned int version + unsigned int placementSize + unsigned int count + unsigned int* placementIds + +ctypedef struct cuda_bindings_nvml__anon_pod2: + unsigned int avgFactor + unsigned int timeslice + +ctypedef struct cuda_bindings_nvml__anon_pod3: + unsigned int timeslice + +ctypedef struct nvmlVgpuSchedulerLogEntry_t 'nvmlVgpuSchedulerLogEntry_t': + unsigned long long timestamp + unsigned long long timeRunTotal + unsigned long long timeRun + unsigned int swRunlistId + unsigned long long targetTimeSlice + unsigned long long cumulativePreemptionTime + +ctypedef struct cuda_bindings_nvml__anon_pod4: + unsigned int avgFactor + unsigned int frequency + +ctypedef struct cuda_bindings_nvml__anon_pod5: + unsigned int timeslice + +ctypedef struct nvmlVgpuSchedulerCapabilities_t 'nvmlVgpuSchedulerCapabilities_t': + unsigned int supportedSchedulers[3] + unsigned int maxTimeslice + unsigned int minTimeslice + unsigned int isArrModeSupported + unsigned int maxFrequencyForARR + unsigned int minFrequencyForARR + unsigned int maxAvgFactorForARR + unsigned int minAvgFactorForARR + +ctypedef struct nvmlVgpuLicenseExpiry_t 'nvmlVgpuLicenseExpiry_t': + unsigned int year + unsigned short month + unsigned short day + unsigned short hour + unsigned short min + unsigned short sec + unsigned char status + +ctypedef struct nvmlGridLicenseExpiry_t 'nvmlGridLicenseExpiry_t': + unsigned int year + unsigned short month + unsigned short day + unsigned short hour + unsigned short min + unsigned short sec + unsigned char status + +ctypedef struct nvmlNvLinkPowerThres_t 'nvmlNvLinkPowerThres_t': + unsigned int lowPwrThreshold + +ctypedef struct nvmlHwbcEntry_t 'nvmlHwbcEntry_t': + unsigned int hwbcId + char firmwareVersion[32] + +ctypedef struct nvmlLedState_t 'nvmlLedState_t': + char cause[256] + nvmlLedColor_t color + +ctypedef struct nvmlUnitInfo_t 'nvmlUnitInfo_t': + char name[96] + char id[96] + char serial[96] + char firmwareVersion[96] + +ctypedef struct nvmlPSUInfo_t 'nvmlPSUInfo_t': + char state[256] + unsigned int current + unsigned int voltage + unsigned int power + +ctypedef struct nvmlUnitFanInfo_t 'nvmlUnitFanInfo_t': + unsigned int speed + nvmlFanState_t state + +ctypedef struct nvmlSystemEventData_v1_t 'nvmlSystemEventData_v1_t': + unsigned long long eventType + unsigned int gpuId + +ctypedef struct nvmlAccountingStats_t 'nvmlAccountingStats_t': + unsigned int gpuUtilization + unsigned int memoryUtilization + unsigned long long maxMemoryUsage + unsigned long long time + unsigned long long startTime + unsigned int isRunning + unsigned int reserved[5] + +ctypedef struct nvmlFBCStats_t 'nvmlFBCStats_t': + unsigned int sessionsCount + unsigned int averageFPS + unsigned int averageLatency + +ctypedef struct nvmlConfComputeSystemCaps_t 'nvmlConfComputeSystemCaps_t': + unsigned int cpuCaps + unsigned int gpusCaps + +ctypedef struct nvmlConfComputeSystemState_t 'nvmlConfComputeSystemState_t': + unsigned int environment + unsigned int ccFeature + unsigned int devToolsMode + +ctypedef struct nvmlConfComputeMemSizeInfo_t 'nvmlConfComputeMemSizeInfo_t': + unsigned long long protectedMemSizeKib + unsigned long long unprotectedMemSizeKib + +ctypedef struct nvmlConfComputeGpuCertificate_t 'nvmlConfComputeGpuCertificate_t': + unsigned int certChainSize + unsigned int attestationCertChainSize + unsigned char certChain[0x1000] + unsigned char attestationCertChain[0x1400] + +ctypedef struct nvmlConfComputeGpuAttestationReport_t 'nvmlConfComputeGpuAttestationReport_t': + unsigned int isCecAttestationReportPresent + unsigned int attestationReportSize + unsigned int cecAttestationReportSize + unsigned char nonce[0x20] + unsigned char attestationReport[0x2000] + unsigned char cecAttestationReport[0x1000] + +ctypedef struct nvmlVgpuVersion_t 'nvmlVgpuVersion_t': + unsigned int minVersion + unsigned int maxVersion + +ctypedef struct nvmlVgpuMetadata_t 'nvmlVgpuMetadata_t': + unsigned int version + unsigned int revision + nvmlVgpuGuestInfoState_t guestInfoState + char guestDriverVersion[80] + char hostDriverVersion[80] + unsigned int reserved[6] + unsigned int vgpuVirtualizationCaps + unsigned int guestVgpuVersion + unsigned int opaqueDataSize + char opaqueData[4] + +ctypedef struct nvmlVgpuPgpuCompatibility_t 'nvmlVgpuPgpuCompatibility_t': + nvmlVgpuVmCompatibility_t vgpuVmCompatibility + nvmlVgpuPgpuCompatibilityLimitCode_t compatibilityLimitCode + +ctypedef struct nvmlGpuInstancePlacement_t 'nvmlGpuInstancePlacement_t': + unsigned int start + unsigned int size + +ctypedef struct nvmlGpuInstanceProfileInfo_t 'nvmlGpuInstanceProfileInfo_t': + unsigned int id + unsigned int isP2pSupported + unsigned int sliceCount + unsigned int instanceCount + unsigned int multiprocessorCount + unsigned int copyEngineCount + unsigned int decoderCount + unsigned int encoderCount + unsigned int jpegCount + unsigned int ofaCount + unsigned long long memorySizeMB + +ctypedef struct nvmlGpuInstanceProfileInfo_v2_t 'nvmlGpuInstanceProfileInfo_v2_t': + unsigned int version + unsigned int id + unsigned int isP2pSupported + unsigned int sliceCount + unsigned int instanceCount + unsigned int multiprocessorCount + unsigned int copyEngineCount + unsigned int decoderCount + unsigned int encoderCount + unsigned int jpegCount + unsigned int ofaCount + unsigned long long memorySizeMB + char name[96] + +ctypedef struct nvmlGpuInstanceProfileInfo_v3_t 'nvmlGpuInstanceProfileInfo_v3_t': + unsigned int version + unsigned int id + unsigned int sliceCount + unsigned int instanceCount + unsigned int multiprocessorCount + unsigned int copyEngineCount + unsigned int decoderCount + unsigned int encoderCount + unsigned int jpegCount + unsigned int ofaCount + unsigned long long memorySizeMB + char name[96] + unsigned int capabilities + +ctypedef struct nvmlComputeInstancePlacement_t 'nvmlComputeInstancePlacement_t': + unsigned int start + unsigned int size + +ctypedef struct nvmlComputeInstanceProfileInfo_t 'nvmlComputeInstanceProfileInfo_t': + unsigned int id + unsigned int sliceCount + unsigned int instanceCount + unsigned int multiprocessorCount + unsigned int sharedCopyEngineCount + unsigned int sharedDecoderCount + unsigned int sharedEncoderCount + unsigned int sharedJpegCount + unsigned int sharedOfaCount + +ctypedef struct nvmlComputeInstanceProfileInfo_v2_t 'nvmlComputeInstanceProfileInfo_v2_t': + unsigned int version + unsigned int id + unsigned int sliceCount + unsigned int instanceCount + unsigned int multiprocessorCount + unsigned int sharedCopyEngineCount + unsigned int sharedDecoderCount + unsigned int sharedEncoderCount + unsigned int sharedJpegCount + unsigned int sharedOfaCount + char name[96] + +ctypedef struct nvmlComputeInstanceProfileInfo_v3_t 'nvmlComputeInstanceProfileInfo_v3_t': + unsigned int version + unsigned int id + unsigned int sliceCount + unsigned int instanceCount + unsigned int multiprocessorCount + unsigned int sharedCopyEngineCount + unsigned int sharedDecoderCount + unsigned int sharedEncoderCount + unsigned int sharedJpegCount + unsigned int sharedOfaCount + char name[96] + unsigned int capabilities + +ctypedef struct cuda_bindings_nvml__anon_pod6: + char* shortName + char* longName + char* unit + +ctypedef struct nvmlGpmSupport_t 'nvmlGpmSupport_t': + unsigned int version + unsigned int isSupportedDevice + +ctypedef struct nvmlMask255_t 'nvmlMask255_t': + unsigned int mask[8] + +ctypedef struct nvmlDevicePowerMizerModes_v1_t 'nvmlDevicePowerMizerModes_v1_t': + unsigned int currentMode + unsigned int mode + unsigned int supportedPowerMizerModes + +ctypedef struct nvmlHostname_v1_t 'nvmlHostname_v1_t': + char value[64] + +ctypedef struct nvmlEccSramUniqueUncorrectedErrorEntry_v1_t 'nvmlEccSramUniqueUncorrectedErrorEntry_v1_t': + unsigned int unit + unsigned int location + unsigned int sublocation + unsigned int extlocation + unsigned int address + unsigned int isParity + unsigned int count + +ctypedef struct nvmlNvLinkInfo_v1_t 'nvmlNvLinkInfo_v1_t': + unsigned int version + unsigned int isNvleEnabled + +ctypedef struct nvmlNvlinkFirmwareVersion_t 'nvmlNvlinkFirmwareVersion_t': + unsigned char ucodeType + unsigned int major + unsigned int minor + unsigned int subMinor + +ctypedef union cuda_bindings_nvml__anon_pod7: + unsigned char inData[496] + unsigned char outData[496] + +ctypedef struct nvmlUnrepairableMemoryStatus_v1_t 'nvmlUnrepairableMemoryStatus_v1_t': + unsigned int bUnrepairableMemory + +ctypedef struct nvmlRusdSettings_v1_t 'nvmlRusdSettings_v1_t': + unsigned int version + unsigned long long pollMask + +ctypedef struct nvmlPRMCounterInput_v1_t 'nvmlPRMCounterInput_v1_t': + unsigned int localPort + +ctypedef struct nvmlVgpuSchedulerStateInfo_v2_t 'nvmlVgpuSchedulerStateInfo_v2_t': + unsigned int engineId + unsigned int schedulerPolicy + unsigned int avgFactor + unsigned int timeslice + +ctypedef struct nvmlVgpuSchedulerLogEntry_v2_t 'nvmlVgpuSchedulerLogEntry_v2_t': + unsigned long long timestamp + unsigned long long timeRunTotal + unsigned long long timeRun + unsigned int swRunlistId + unsigned long long targetTimeSlice + unsigned long long cumulativePreemptionTime + unsigned int weight + +ctypedef struct nvmlVgpuSchedulerState_v2_t 'nvmlVgpuSchedulerState_v2_t': + unsigned int engineId + unsigned int schedulerPolicy + unsigned int avgFactor + unsigned int frequency + +ctypedef struct nvmlBBXTimeData_v1_t 'nvmlBBXTimeData_v1_t': + unsigned int timeRun + +ctypedef struct nvmlRemappedRowsInfo_v2_t 'nvmlRemappedRowsInfo_v2_t': + unsigned int corrActiveRemaps + unsigned int corrInactiveRemaps + unsigned int uncActiveRemaps + unsigned int uncInactiveRemaps + unsigned int bPending + unsigned int bFailureOccurred + +ctypedef struct nvmlAccountingStats_v2_t 'nvmlAccountingStats_v2_t': + unsigned int pid + unsigned int isRunning + unsigned int gpuUtilization + unsigned int memoryUtilization + unsigned long long maxMemoryUsage + unsigned int sampleCount + unsigned long long sumGpuUtil + unsigned long long sumFbUtil + unsigned long long time + unsigned long long startTime + +ctypedef nvmlPciInfoExt_v1_t nvmlPciInfoExt_t 'nvmlPciInfoExt_t' + +ctypedef nvmlCoolerInfo_v1_t nvmlCoolerInfo_t 'nvmlCoolerInfo_t' + +ctypedef nvmlDramEncryptionInfo_v1_t nvmlDramEncryptionInfo_t 'nvmlDramEncryptionInfo_t' + +ctypedef nvmlMarginTemperature_v1_t nvmlMarginTemperature_t 'nvmlMarginTemperature_t' + +ctypedef nvmlClockOffset_v1_t nvmlClockOffset_t 'nvmlClockOffset_t' + +ctypedef nvmlFanSpeedInfo_v1_t nvmlFanSpeedInfo_t 'nvmlFanSpeedInfo_t' + +ctypedef nvmlDevicePerfModes_v1_t nvmlDevicePerfModes_t 'nvmlDevicePerfModes_t' + +ctypedef nvmlDeviceCurrentClockFreqs_v1_t nvmlDeviceCurrentClockFreqs_t 'nvmlDeviceCurrentClockFreqs_t' + +ctypedef nvmlEccSramErrorStatus_v1_t nvmlEccSramErrorStatus_t 'nvmlEccSramErrorStatus_t' + +ctypedef nvmlPlatformInfo_v2_t nvmlPlatformInfo_t 'nvmlPlatformInfo_t' + +ctypedef struct nvmlPowerValue_v2_t 'nvmlPowerValue_v2_t': + unsigned int version + nvmlPowerScopeType_t powerScope + unsigned int powerValueMw + +ctypedef struct nvmlVgpuTypeIdInfo_v1_t 'nvmlVgpuTypeIdInfo_v1_t': + unsigned int version + unsigned int vgpuCount + nvmlVgpuTypeId_t* vgpuTypeIds + +ctypedef struct nvmlVgpuTypeMaxInstance_v1_t 'nvmlVgpuTypeMaxInstance_v1_t': + unsigned int version + nvmlVgpuTypeId_t vgpuTypeId + unsigned int maxInstancePerGI + +ctypedef struct nvmlVgpuCreatablePlacementInfo_v1_t 'nvmlVgpuCreatablePlacementInfo_v1_t': + unsigned int version + nvmlVgpuTypeId_t vgpuTypeId + unsigned int count + unsigned int* placementIds + unsigned int placementSize + +ctypedef struct nvmlVgpuProcessUtilizationSample_t 'nvmlVgpuProcessUtilizationSample_t': + nvmlVgpuInstance_t vgpuInstance + unsigned int pid + char processName[64] + unsigned long long timeStamp + unsigned int smUtil + unsigned int memUtil + unsigned int encUtil + unsigned int decUtil + +ctypedef struct nvmlVgpuProcessUtilizationInfo_v1_t 'nvmlVgpuProcessUtilizationInfo_v1_t': + char processName[64] + unsigned long long timeStamp + nvmlVgpuInstance_t vgpuInstance + unsigned int pid + unsigned int smUtil + unsigned int memUtil + unsigned int encUtil + unsigned int decUtil + unsigned int jpgUtil + unsigned int ofaUtil + +ctypedef struct nvmlActiveVgpuInstanceInfo_v1_t 'nvmlActiveVgpuInstanceInfo_v1_t': + unsigned int version + unsigned int vgpuCount + nvmlVgpuInstance_t* vgpuInstances + +ctypedef struct nvmlEncoderSessionInfo_t 'nvmlEncoderSessionInfo_t': + unsigned int sessionId + unsigned int pid + nvmlVgpuInstance_t vgpuInstance + nvmlEncoderType_t codecType + unsigned int hResolution + unsigned int vResolution + unsigned int averageFps + unsigned int averageLatency + +ctypedef struct nvmlFBCSessionInfo_t 'nvmlFBCSessionInfo_t': + unsigned int sessionId + unsigned int pid + nvmlVgpuInstance_t vgpuInstance + unsigned int displayOrdinal + nvmlFBCSessionType_t sessionType + unsigned int sessionFlags + unsigned int hMaxResolution + unsigned int vMaxResolution + unsigned int hResolution + unsigned int vResolution + unsigned int averageFPS + unsigned int averageLatency + +ctypedef nvmlVgpuHeterogeneousMode_v1_t nvmlVgpuHeterogeneousMode_t 'nvmlVgpuHeterogeneousMode_t' + +ctypedef nvmlVgpuPlacementId_v1_t nvmlVgpuPlacementId_t 'nvmlVgpuPlacementId_t' + +ctypedef nvmlVgpuPlacementList_v2_t nvmlVgpuPlacementList_t 'nvmlVgpuPlacementList_t' + +ctypedef nvmlVgpuTypeBar1Info_v1_t nvmlVgpuTypeBar1Info_t 'nvmlVgpuTypeBar1Info_t' + +ctypedef nvmlVgpuRuntimeState_v1_t nvmlVgpuRuntimeState_t 'nvmlVgpuRuntimeState_t' + +ctypedef nvmlSystemConfComputeSettings_v1_t nvmlSystemConfComputeSettings_t 'nvmlSystemConfComputeSettings_t' + +ctypedef nvmlConfComputeSetKeyRotationThresholdInfo_v1_t nvmlConfComputeSetKeyRotationThresholdInfo_t 'nvmlConfComputeSetKeyRotationThresholdInfo_t' + +ctypedef nvmlConfComputeGetKeyRotationThresholdInfo_v1_t nvmlConfComputeGetKeyRotationThresholdInfo_t 'nvmlConfComputeGetKeyRotationThresholdInfo_t' + +ctypedef struct nvmlGpuFabricInfo_t 'nvmlGpuFabricInfo_t': + unsigned char clusterUuid[16] + nvmlReturn_t status + unsigned int cliqueId + nvmlGpuFabricState_t state + +ctypedef struct nvmlGpuFabricInfo_v2_t 'nvmlGpuFabricInfo_v2_t': + unsigned int version + unsigned char clusterUuid[16] + nvmlReturn_t status + unsigned int cliqueId + nvmlGpuFabricState_t state + unsigned int healthMask + +ctypedef struct nvmlGpuFabricInfo_v3_t 'nvmlGpuFabricInfo_v3_t': + unsigned int version + unsigned char clusterUuid[16] + nvmlReturn_t status + unsigned int cliqueId + nvmlGpuFabricState_t state + unsigned int healthMask + unsigned char healthSummary + +ctypedef nvmlSystemDriverBranchInfo_v1_t nvmlSystemDriverBranchInfo_t 'nvmlSystemDriverBranchInfo_t' + +ctypedef nvmlTemperature_v1_t nvmlTemperature_t 'nvmlTemperature_t' + +ctypedef nvmlNvlinkSupportedBwModes_v1_t nvmlNvlinkSupportedBwModes_t 'nvmlNvlinkSupportedBwModes_t' + +ctypedef nvmlNvlinkGetBwMode_v1_t nvmlNvlinkGetBwMode_t 'nvmlNvlinkGetBwMode_t' + +ctypedef nvmlNvlinkSetBwMode_v1_t nvmlNvlinkSetBwMode_t 'nvmlNvlinkSetBwMode_t' + +ctypedef nvmlDeviceCapabilities_v1_t nvmlDeviceCapabilities_t 'nvmlDeviceCapabilities_t' + +ctypedef nvmlPowerSmoothingProfile_v1_t nvmlPowerSmoothingProfile_t 'nvmlPowerSmoothingProfile_t' + +ctypedef nvmlPowerSmoothingState_v1_t nvmlPowerSmoothingState_t 'nvmlPowerSmoothingState_t' + +ctypedef nvmlDeviceAddressingMode_v1_t nvmlDeviceAddressingMode_t 'nvmlDeviceAddressingMode_t' + +ctypedef nvmlRepairStatus_v1_t nvmlRepairStatus_t 'nvmlRepairStatus_t' + +ctypedef nvmlPdi_v1_t nvmlPdi_t 'nvmlPdi_t' + +ctypedef struct nvmlCPERCursor_v1_t 'nvmlCPERCursor_v1_t': + unsigned int cperTypeMask + char uuid[80] + nvmlCPERCursorHandle_t handle + +ctypedef struct nvmlEventData_t 'nvmlEventData_t': + nvmlDevice_t device + unsigned long long eventType + unsigned long long eventData + unsigned int gpuInstanceId + unsigned int computeInstanceId + +ctypedef struct nvmlSystemEventSetCreateRequest_v1_t 'nvmlSystemEventSetCreateRequest_v1_t': + unsigned int version + nvmlSystemEventSet_t set + +ctypedef struct nvmlSystemEventSetFreeRequest_v1_t 'nvmlSystemEventSetFreeRequest_v1_t': + unsigned int version + nvmlSystemEventSet_t set + +ctypedef struct nvmlSystemRegisterEventRequest_v1_t 'nvmlSystemRegisterEventRequest_v1_t': + unsigned int version + unsigned long long eventTypes + nvmlSystemEventSet_t set + +ctypedef struct nvmlExcludedDeviceInfo_t 'nvmlExcludedDeviceInfo_t': + nvmlPciInfo_t pciInfo + char uuid[80] + +ctypedef struct nvmlProcessDetailList_v1_t 'nvmlProcessDetailList_v1_t': + unsigned int version + unsigned int mode + unsigned int numProcArrayEntries + nvmlProcessDetail_v1_t* procArray + +ctypedef struct nvmlBridgeChipHierarchy_t 'nvmlBridgeChipHierarchy_t': + unsigned char bridgeCount + nvmlBridgeChipInfo_t bridgeChipInfo[128] + +ctypedef struct nvmlSample_t 'nvmlSample_t': + unsigned long long timeStamp + nvmlValue_t sampleValue + +ctypedef struct nvmlVgpuInstanceUtilizationSample_t 'nvmlVgpuInstanceUtilizationSample_t': + nvmlVgpuInstance_t vgpuInstance + unsigned long long timeStamp + nvmlValue_t smUtil + nvmlValue_t memUtil + nvmlValue_t encUtil + nvmlValue_t decUtil + +ctypedef struct nvmlVgpuInstanceUtilizationInfo_v1_t 'nvmlVgpuInstanceUtilizationInfo_v1_t': + unsigned long long timeStamp + nvmlVgpuInstance_t vgpuInstance + nvmlValue_t smUtil + nvmlValue_t memUtil + nvmlValue_t encUtil + nvmlValue_t decUtil + nvmlValue_t jpgUtil + nvmlValue_t ofaUtil + +ctypedef struct nvmlFieldValue_t 'nvmlFieldValue_t': + unsigned int fieldId + unsigned int scopeId + long long timestamp + long long latencyUsec + nvmlValueType_t valueType + nvmlReturn_t nvmlReturn + nvmlValue_t value + +ctypedef struct nvmlPRMCounterValue_v1_t 'nvmlPRMCounterValue_v1_t': + nvmlReturn_t status + nvmlValueType_t outputType + nvmlValue_t outputValue + +ctypedef struct nvmlGpuThermalSettings_t 'nvmlGpuThermalSettings_t': + unsigned int count + cuda_bindings_nvml__anon_pod0 sensor[3] + +ctypedef struct nvmlUUID_v1_t 'nvmlUUID_v1_t': + unsigned int version + unsigned int type + nvmlUUIDValue_t value + +ctypedef struct nvmlClkMonStatus_t 'nvmlClkMonStatus_t': + unsigned int bGlobalStatus + unsigned int clkMonListSize + nvmlClkMonFaultInfo_t clkMonList[32] + +ctypedef struct nvmlProcessesUtilizationInfo_v1_t 'nvmlProcessesUtilizationInfo_v1_t': + unsigned int version + unsigned int processSamplesCount + unsigned long long lastSeenTimeStamp + nvmlProcessUtilizationInfo_v1_t* procUtilArray + +ctypedef struct nvmlGpuDynamicPstatesInfo_t 'nvmlGpuDynamicPstatesInfo_t': + unsigned int flags + cuda_bindings_nvml__anon_pod1 utilization[8] + +ctypedef union nvmlVgpuSchedulerParams_t 'nvmlVgpuSchedulerParams_t': + cuda_bindings_nvml__anon_pod2 vgpuSchedDataWithARR + cuda_bindings_nvml__anon_pod3 vgpuSchedData + +ctypedef union nvmlVgpuSchedulerSetParams_t 'nvmlVgpuSchedulerSetParams_t': + cuda_bindings_nvml__anon_pod4 vgpuSchedDataWithARR + cuda_bindings_nvml__anon_pod5 vgpuSchedData + +ctypedef struct nvmlVgpuLicenseInfo_t 'nvmlVgpuLicenseInfo_t': + unsigned char isLicensed + nvmlVgpuLicenseExpiry_t licenseExpiry + unsigned int currentState + +ctypedef struct nvmlGridLicensableFeature_t 'nvmlGridLicensableFeature_t': + nvmlGridLicenseFeatureCode_t featureCode + unsigned int featureState + char licenseInfo[128] + char productName[128] + unsigned int featureEnabled + nvmlGridLicenseExpiry_t licenseExpiry + +ctypedef struct nvmlUnitFanSpeeds_t 'nvmlUnitFanSpeeds_t': + nvmlUnitFanInfo_t fans[24] + unsigned int count + +ctypedef struct nvmlSystemEventSetWaitRequest_v1_t 'nvmlSystemEventSetWaitRequest_v1_t': + unsigned int version + unsigned int timeoutms + nvmlSystemEventSet_t set + nvmlSystemEventData_v1_t* data + unsigned int dataSize + unsigned int numEvent + +ctypedef struct nvmlVgpuPgpuMetadata_t 'nvmlVgpuPgpuMetadata_t': + unsigned int version + unsigned int revision + char hostDriverVersion[80] + unsigned int pgpuVirtualizationCaps + unsigned int reserved[5] + nvmlVgpuVersion_t hostSupportedVgpuRange + unsigned int opaqueDataSize + char opaqueData[4] + +ctypedef struct nvmlGpuInstanceInfo_t 'nvmlGpuInstanceInfo_t': + nvmlDevice_t device + unsigned int id + unsigned int profileId + nvmlGpuInstancePlacement_t placement + +ctypedef struct nvmlComputeInstanceInfo_t 'nvmlComputeInstanceInfo_t': + nvmlDevice_t device + nvmlGpuInstance_t gpuInstance + unsigned int id + unsigned int profileId + nvmlComputeInstancePlacement_t placement + +ctypedef struct nvmlGpmMetric_t 'nvmlGpmMetric_t': + unsigned int metricId + nvmlReturn_t nvmlReturn + double value + cuda_bindings_nvml__anon_pod6 metricInfo + +ctypedef struct nvmlWorkloadPowerProfileInfo_v1_t 'nvmlWorkloadPowerProfileInfo_v1_t': + unsigned int version + unsigned int profileId + unsigned int priority + nvmlMask255_t conflictingMask + +ctypedef struct nvmlWorkloadPowerProfileCurrentProfiles_v1_t 'nvmlWorkloadPowerProfileCurrentProfiles_v1_t': + unsigned int version + nvmlMask255_t perfProfilesMask + nvmlMask255_t requestedProfilesMask + nvmlMask255_t enforcedProfilesMask + +ctypedef struct nvmlWorkloadPowerProfileRequestedProfiles_v1_t 'nvmlWorkloadPowerProfileRequestedProfiles_v1_t': + unsigned int version + nvmlMask255_t requestedProfilesMask + +ctypedef struct nvmlWorkloadPowerProfileUpdateProfiles_v1_t 'nvmlWorkloadPowerProfileUpdateProfiles_v1_t': + nvmlPowerProfileOperation_t operation + nvmlMask255_t updateProfilesMask + +ctypedef struct nvmlEccSramUniqueUncorrectedErrorCounts_v1_t 'nvmlEccSramUniqueUncorrectedErrorCounts_v1_t': + unsigned int version + unsigned int entryCount + nvmlEccSramUniqueUncorrectedErrorEntry_v1_t* entries + +ctypedef struct nvmlNvlinkFirmwareInfo_t 'nvmlNvlinkFirmwareInfo_t': + nvmlNvlinkFirmwareVersion_t firmwareVersion[100] + unsigned int numValidEntries + +ctypedef struct nvmlPRMTLV_v1_t 'nvmlPRMTLV_v1_t': + unsigned dataSize + unsigned status + cuda_bindings_nvml__anon_pod7 _anon_pod_member0 + +ctypedef struct nvmlVgpuSchedulerLogInfo_v2_t 'nvmlVgpuSchedulerLogInfo_v2_t': + unsigned int engineId + unsigned int schedulerPolicy + unsigned int avgFactor + unsigned int timeslice + unsigned int entriesCount + nvmlVgpuSchedulerLogEntry_v2_t logEntries[200] + +ctypedef nvmlVgpuTypeIdInfo_v1_t nvmlVgpuTypeIdInfo_t 'nvmlVgpuTypeIdInfo_t' + +ctypedef nvmlVgpuTypeMaxInstance_v1_t nvmlVgpuTypeMaxInstance_t 'nvmlVgpuTypeMaxInstance_t' + +ctypedef nvmlVgpuCreatablePlacementInfo_v1_t nvmlVgpuCreatablePlacementInfo_t 'nvmlVgpuCreatablePlacementInfo_t' + +ctypedef struct nvmlVgpuProcessesUtilizationInfo_v1_t 'nvmlVgpuProcessesUtilizationInfo_v1_t': + unsigned int version + unsigned int vgpuProcessCount + unsigned long long lastSeenTimeStamp + nvmlVgpuProcessUtilizationInfo_v1_t* vgpuProcUtilArray + +ctypedef nvmlActiveVgpuInstanceInfo_v1_t nvmlActiveVgpuInstanceInfo_t 'nvmlActiveVgpuInstanceInfo_t' + +ctypedef nvmlGpuFabricInfo_v3_t nvmlGpuFabricInfoV_t 'nvmlGpuFabricInfoV_t' + +ctypedef struct nvmlGetCPER_v1_t 'nvmlGetCPER_v1_t': + nvmlCPERCursor_v1_t cursor + unsigned char* buffer + unsigned int bufferSize + +ctypedef nvmlSystemEventSetCreateRequest_v1_t nvmlSystemEventSetCreateRequest_t 'nvmlSystemEventSetCreateRequest_t' + +ctypedef nvmlSystemEventSetFreeRequest_v1_t nvmlSystemEventSetFreeRequest_t 'nvmlSystemEventSetFreeRequest_t' + +ctypedef nvmlSystemRegisterEventRequest_v1_t nvmlSystemRegisterEventRequest_t 'nvmlSystemRegisterEventRequest_t' + +ctypedef nvmlProcessDetailList_v1_t nvmlProcessDetailList_t 'nvmlProcessDetailList_t' + +ctypedef struct nvmlVgpuInstancesUtilizationInfo_v1_t 'nvmlVgpuInstancesUtilizationInfo_v1_t': + unsigned int version + nvmlValueType_t sampleValType + unsigned int vgpuInstanceCount + unsigned long long lastSeenTimeStamp + nvmlVgpuInstanceUtilizationInfo_v1_t* vgpuUtilArray + +ctypedef struct nvmlPRMCounter_v1_t 'nvmlPRMCounter_v1_t': + unsigned int counterId + nvmlPRMCounterInput_v1_t inData + nvmlPRMCounterValue_v1_t counterValue + +ctypedef nvmlUUID_v1_t nvmlUUID_t 'nvmlUUID_t' + +ctypedef nvmlProcessesUtilizationInfo_v1_t nvmlProcessesUtilizationInfo_t 'nvmlProcessesUtilizationInfo_t' + +ctypedef struct nvmlVgpuSchedulerLog_t 'nvmlVgpuSchedulerLog_t': + unsigned int engineId + unsigned int schedulerPolicy + unsigned int arrMode + nvmlVgpuSchedulerParams_t schedulerParams + unsigned int entriesCount + nvmlVgpuSchedulerLogEntry_t logEntries[200] + +ctypedef struct nvmlVgpuSchedulerGetState_t 'nvmlVgpuSchedulerGetState_t': + unsigned int schedulerPolicy + unsigned int arrMode + nvmlVgpuSchedulerParams_t schedulerParams + +ctypedef struct nvmlVgpuSchedulerStateInfo_v1_t 'nvmlVgpuSchedulerStateInfo_v1_t': + unsigned int version + unsigned int engineId + unsigned int schedulerPolicy + unsigned int arrMode + nvmlVgpuSchedulerParams_t schedulerParams + +ctypedef struct nvmlVgpuSchedulerLogInfo_v1_t 'nvmlVgpuSchedulerLogInfo_v1_t': + unsigned int version + unsigned int engineId + unsigned int schedulerPolicy + unsigned int arrMode + nvmlVgpuSchedulerParams_t schedulerParams + unsigned int entriesCount + nvmlVgpuSchedulerLogEntry_t logEntries[200] + +ctypedef struct nvmlVgpuSchedulerSetState_t 'nvmlVgpuSchedulerSetState_t': + unsigned int schedulerPolicy + unsigned int enableARRMode + nvmlVgpuSchedulerSetParams_t schedulerParams + +ctypedef struct nvmlVgpuSchedulerState_v1_t 'nvmlVgpuSchedulerState_v1_t': + unsigned int version + unsigned int engineId + unsigned int schedulerPolicy + unsigned int enableARRMode + nvmlVgpuSchedulerSetParams_t schedulerParams + +ctypedef struct nvmlGridLicensableFeatures_t 'nvmlGridLicensableFeatures_t': + int isGridLicenseSupported + unsigned int licensableFeaturesCount + nvmlGridLicensableFeature_t gridLicensableFeatures[3] + +ctypedef nvmlSystemEventSetWaitRequest_v1_t nvmlSystemEventSetWaitRequest_t 'nvmlSystemEventSetWaitRequest_t' + +ctypedef struct nvmlGpmMetricsGet_t 'nvmlGpmMetricsGet_t': + unsigned int version + unsigned int numMetrics + nvmlGpmSample_t sample1 + nvmlGpmSample_t sample2 + nvmlGpmMetric_t metrics[333] + +ctypedef nvmlWorkloadPowerProfileInfo_v1_t nvmlWorkloadPowerProfileInfo_t 'nvmlWorkloadPowerProfileInfo_t' + +ctypedef nvmlWorkloadPowerProfileCurrentProfiles_v1_t nvmlWorkloadPowerProfileCurrentProfiles_t 'nvmlWorkloadPowerProfileCurrentProfiles_t' + +ctypedef nvmlWorkloadPowerProfileRequestedProfiles_v1_t nvmlWorkloadPowerProfileRequestedProfiles_t 'nvmlWorkloadPowerProfileRequestedProfiles_t' + +ctypedef nvmlEccSramUniqueUncorrectedErrorCounts_v1_t nvmlEccSramUniqueUncorrectedErrorCounts_t 'nvmlEccSramUniqueUncorrectedErrorCounts_t' + +ctypedef struct nvmlNvLinkInfo_v2_t 'nvmlNvLinkInfo_v2_t': + unsigned int version + unsigned int isNvleEnabled + nvmlNvlinkFirmwareInfo_t firmwareInfo + +ctypedef nvmlVgpuProcessesUtilizationInfo_v1_t nvmlVgpuProcessesUtilizationInfo_t 'nvmlVgpuProcessesUtilizationInfo_t' + +ctypedef nvmlVgpuInstancesUtilizationInfo_v1_t nvmlVgpuInstancesUtilizationInfo_t 'nvmlVgpuInstancesUtilizationInfo_t' + +ctypedef struct nvmlPRMCounterList_v1_t 'nvmlPRMCounterList_v1_t': + unsigned int numCounters + nvmlPRMCounter_v1_t* counters + +ctypedef nvmlVgpuSchedulerStateInfo_v1_t nvmlVgpuSchedulerStateInfo_t 'nvmlVgpuSchedulerStateInfo_t' + +ctypedef nvmlVgpuSchedulerLogInfo_v1_t nvmlVgpuSchedulerLogInfo_t 'nvmlVgpuSchedulerLogInfo_t' + +ctypedef nvmlVgpuSchedulerState_v1_t nvmlVgpuSchedulerState_t 'nvmlVgpuSchedulerState_t' + +ctypedef struct nvmlWorkloadPowerProfileProfilesInfo_v1_t 'nvmlWorkloadPowerProfileProfilesInfo_v1_t': + unsigned int version + nvmlMask255_t perfProfilesMask + nvmlWorkloadPowerProfileInfo_t perfProfile[255] + +ctypedef nvmlNvLinkInfo_v2_t nvmlNvLinkInfo_t 'nvmlNvLinkInfo_t' + +ctypedef nvmlWorkloadPowerProfileProfilesInfo_v1_t nvmlWorkloadPowerProfileProfilesInfo_t 'nvmlWorkloadPowerProfileProfilesInfo_t' + + +############################################################################### +# Functions +############################################################################### + +cdef nvmlReturn_t nvmlInit_v2() except?_NVMLRETURN_T_INTERNAL_LOADING_ERROR nogil +cdef nvmlReturn_t nvmlInitWithFlags(unsigned int flags) except?_NVMLRETURN_T_INTERNAL_LOADING_ERROR nogil +cdef nvmlReturn_t nvmlShutdown() except?_NVMLRETURN_T_INTERNAL_LOADING_ERROR nogil +cdef const char* nvmlErrorString(nvmlReturn_t result) except?NULL nogil +cdef nvmlReturn_t nvmlSystemGetDriverVersion(char* version, unsigned int length) except?_NVMLRETURN_T_INTERNAL_LOADING_ERROR nogil +cdef nvmlReturn_t nvmlSystemGetNVMLVersion(char* version, unsigned int length) except?_NVMLRETURN_T_INTERNAL_LOADING_ERROR nogil +cdef nvmlReturn_t nvmlSystemGetCudaDriverVersion(int* cudaDriverVersion) except?_NVMLRETURN_T_INTERNAL_LOADING_ERROR nogil +cdef nvmlReturn_t nvmlSystemGetCudaDriverVersion_v2(int* cudaDriverVersion) except?_NVMLRETURN_T_INTERNAL_LOADING_ERROR nogil +cdef nvmlReturn_t nvmlSystemGetProcessName(unsigned int pid, char* name, unsigned int length) except?_NVMLRETURN_T_INTERNAL_LOADING_ERROR nogil +cdef nvmlReturn_t nvmlSystemGetHicVersion(unsigned int* hwbcCount, nvmlHwbcEntry_t* hwbcEntries) except?_NVMLRETURN_T_INTERNAL_LOADING_ERROR nogil +cdef nvmlReturn_t nvmlSystemGetTopologyGpuSet(unsigned int cpuNumber, unsigned int* count, nvmlDevice_t* deviceArray) except?_NVMLRETURN_T_INTERNAL_LOADING_ERROR nogil +cdef nvmlReturn_t nvmlSystemGetDriverBranch(nvmlSystemDriverBranchInfo_t* branchInfo, unsigned int length) except?_NVMLRETURN_T_INTERNAL_LOADING_ERROR nogil +cdef nvmlReturn_t nvmlUnitGetCount(unsigned int* unitCount) except?_NVMLRETURN_T_INTERNAL_LOADING_ERROR nogil +cdef nvmlReturn_t nvmlUnitGetHandleByIndex(unsigned int index, nvmlUnit_t* unit) except?_NVMLRETURN_T_INTERNAL_LOADING_ERROR nogil +cdef nvmlReturn_t nvmlUnitGetUnitInfo(nvmlUnit_t unit, nvmlUnitInfo_t* info) except?_NVMLRETURN_T_INTERNAL_LOADING_ERROR nogil +cdef nvmlReturn_t nvmlUnitGetLedState(nvmlUnit_t unit, nvmlLedState_t* state) except?_NVMLRETURN_T_INTERNAL_LOADING_ERROR nogil +cdef nvmlReturn_t nvmlUnitGetPsuInfo(nvmlUnit_t unit, nvmlPSUInfo_t* psu) except?_NVMLRETURN_T_INTERNAL_LOADING_ERROR nogil +cdef nvmlReturn_t nvmlUnitGetTemperature(nvmlUnit_t unit, unsigned int type, unsigned int* temp) except?_NVMLRETURN_T_INTERNAL_LOADING_ERROR nogil +cdef nvmlReturn_t nvmlUnitGetFanSpeedInfo(nvmlUnit_t unit, nvmlUnitFanSpeeds_t* fanSpeeds) except?_NVMLRETURN_T_INTERNAL_LOADING_ERROR nogil +cdef nvmlReturn_t nvmlUnitGetDevices(nvmlUnit_t unit, unsigned int* deviceCount, nvmlDevice_t* devices) except?_NVMLRETURN_T_INTERNAL_LOADING_ERROR nogil +cdef nvmlReturn_t nvmlDeviceGetCount_v2(unsigned int* deviceCount) except?_NVMLRETURN_T_INTERNAL_LOADING_ERROR nogil +cdef nvmlReturn_t nvmlDeviceGetAttributes_v2(nvmlDevice_t device, nvmlDeviceAttributes_t* attributes) except?_NVMLRETURN_T_INTERNAL_LOADING_ERROR nogil +cdef nvmlReturn_t nvmlDeviceGetHandleByIndex_v2(unsigned int index, nvmlDevice_t* device) except?_NVMLRETURN_T_INTERNAL_LOADING_ERROR nogil +cdef nvmlReturn_t nvmlDeviceGetHandleBySerial(const char* serial, nvmlDevice_t* device) except?_NVMLRETURN_T_INTERNAL_LOADING_ERROR nogil +cdef nvmlReturn_t nvmlDeviceGetHandleByUUID(const char* uuid, nvmlDevice_t* device) except?_NVMLRETURN_T_INTERNAL_LOADING_ERROR nogil +cdef nvmlReturn_t nvmlDeviceGetHandleByUUIDV(const nvmlUUID_t* uuid, nvmlDevice_t* device) except?_NVMLRETURN_T_INTERNAL_LOADING_ERROR nogil +cdef nvmlReturn_t nvmlDeviceGetHandleByPciBusId_v2(const char* pciBusId, nvmlDevice_t* device) except?_NVMLRETURN_T_INTERNAL_LOADING_ERROR nogil +cdef nvmlReturn_t nvmlDeviceGetName(nvmlDevice_t device, char* name, unsigned int length) except?_NVMLRETURN_T_INTERNAL_LOADING_ERROR nogil +cdef nvmlReturn_t nvmlDeviceGetBrand(nvmlDevice_t device, nvmlBrandType_t* type) except?_NVMLRETURN_T_INTERNAL_LOADING_ERROR nogil +cdef nvmlReturn_t nvmlDeviceGetIndex(nvmlDevice_t device, unsigned int* index) except?_NVMLRETURN_T_INTERNAL_LOADING_ERROR nogil +cdef nvmlReturn_t nvmlDeviceGetSerial(nvmlDevice_t device, char* serial, unsigned int length) except?_NVMLRETURN_T_INTERNAL_LOADING_ERROR nogil +cdef nvmlReturn_t nvmlDeviceGetModuleId(nvmlDevice_t device, unsigned int* moduleId) except?_NVMLRETURN_T_INTERNAL_LOADING_ERROR nogil +cdef nvmlReturn_t nvmlDeviceGetC2cModeInfoV(nvmlDevice_t device, nvmlC2cModeInfo_v1_t* c2cModeInfo) except?_NVMLRETURN_T_INTERNAL_LOADING_ERROR nogil +cdef nvmlReturn_t nvmlDeviceGetMemoryAffinity(nvmlDevice_t device, unsigned int nodeSetSize, unsigned long* nodeSet, nvmlAffinityScope_t scope) except?_NVMLRETURN_T_INTERNAL_LOADING_ERROR nogil +cdef nvmlReturn_t nvmlDeviceGetCpuAffinityWithinScope(nvmlDevice_t device, unsigned int cpuSetSize, unsigned long* cpuSet, nvmlAffinityScope_t scope) except?_NVMLRETURN_T_INTERNAL_LOADING_ERROR nogil +cdef nvmlReturn_t nvmlDeviceGetCpuAffinity(nvmlDevice_t device, unsigned int cpuSetSize, unsigned long* cpuSet) except?_NVMLRETURN_T_INTERNAL_LOADING_ERROR nogil +cdef nvmlReturn_t nvmlDeviceSetCpuAffinity(nvmlDevice_t device) except?_NVMLRETURN_T_INTERNAL_LOADING_ERROR nogil +cdef nvmlReturn_t nvmlDeviceClearCpuAffinity(nvmlDevice_t device) except?_NVMLRETURN_T_INTERNAL_LOADING_ERROR nogil +cdef nvmlReturn_t nvmlDeviceGetNumaNodeId(nvmlDevice_t device, unsigned int* node) except?_NVMLRETURN_T_INTERNAL_LOADING_ERROR nogil +cdef nvmlReturn_t nvmlDeviceGetTopologyCommonAncestor(nvmlDevice_t device1, nvmlDevice_t device2, nvmlGpuTopologyLevel_t* pathInfo) except?_NVMLRETURN_T_INTERNAL_LOADING_ERROR nogil +cdef nvmlReturn_t nvmlDeviceGetTopologyNearestGpus(nvmlDevice_t device, nvmlGpuTopologyLevel_t level, unsigned int* count, nvmlDevice_t* deviceArray) except?_NVMLRETURN_T_INTERNAL_LOADING_ERROR nogil +cdef nvmlReturn_t nvmlDeviceGetP2PStatus(nvmlDevice_t device1, nvmlDevice_t device2, nvmlGpuP2PCapsIndex_t p2pIndex, nvmlGpuP2PStatus_t* p2pStatus) except?_NVMLRETURN_T_INTERNAL_LOADING_ERROR nogil +cdef nvmlReturn_t nvmlDeviceGetUUID(nvmlDevice_t device, char* uuid, unsigned int length) except?_NVMLRETURN_T_INTERNAL_LOADING_ERROR nogil +cdef nvmlReturn_t nvmlDeviceGetMinorNumber(nvmlDevice_t device, unsigned int* minorNumber) except?_NVMLRETURN_T_INTERNAL_LOADING_ERROR nogil +cdef nvmlReturn_t nvmlDeviceGetBoardPartNumber(nvmlDevice_t device, char* partNumber, unsigned int length) except?_NVMLRETURN_T_INTERNAL_LOADING_ERROR nogil +cdef nvmlReturn_t nvmlDeviceGetInforomVersion(nvmlDevice_t device, nvmlInforomObject_t object, char* version, unsigned int length) except?_NVMLRETURN_T_INTERNAL_LOADING_ERROR nogil +cdef nvmlReturn_t nvmlDeviceGetInforomImageVersion(nvmlDevice_t device, char* version, unsigned int length) except?_NVMLRETURN_T_INTERNAL_LOADING_ERROR nogil +cdef nvmlReturn_t nvmlDeviceGetInforomConfigurationChecksum(nvmlDevice_t device, unsigned int* checksum) except?_NVMLRETURN_T_INTERNAL_LOADING_ERROR nogil +cdef nvmlReturn_t nvmlDeviceValidateInforom(nvmlDevice_t device) except?_NVMLRETURN_T_INTERNAL_LOADING_ERROR nogil +cdef nvmlReturn_t nvmlDeviceGetLastBBXFlushTime(nvmlDevice_t device, unsigned long long* timestamp, unsigned long* durationUs) except?_NVMLRETURN_T_INTERNAL_LOADING_ERROR nogil +cdef nvmlReturn_t nvmlDeviceGetDisplayMode(nvmlDevice_t device, nvmlEnableState_t* display) except?_NVMLRETURN_T_INTERNAL_LOADING_ERROR nogil +cdef nvmlReturn_t nvmlDeviceGetDisplayActive(nvmlDevice_t device, nvmlEnableState_t* isActive) except?_NVMLRETURN_T_INTERNAL_LOADING_ERROR nogil +cdef nvmlReturn_t nvmlDeviceGetPersistenceMode(nvmlDevice_t device, nvmlEnableState_t* mode) except?_NVMLRETURN_T_INTERNAL_LOADING_ERROR nogil +cdef nvmlReturn_t nvmlDeviceGetPciInfoExt(nvmlDevice_t device, nvmlPciInfoExt_t* pci) except?_NVMLRETURN_T_INTERNAL_LOADING_ERROR nogil +cdef nvmlReturn_t nvmlDeviceGetPciInfo_v3(nvmlDevice_t device, nvmlPciInfo_t* pci) except?_NVMLRETURN_T_INTERNAL_LOADING_ERROR nogil +cdef nvmlReturn_t nvmlDeviceGetMaxPcieLinkGeneration(nvmlDevice_t device, unsigned int* maxLinkGen) except?_NVMLRETURN_T_INTERNAL_LOADING_ERROR nogil +cdef nvmlReturn_t nvmlDeviceGetGpuMaxPcieLinkGeneration(nvmlDevice_t device, unsigned int* maxLinkGenDevice) except?_NVMLRETURN_T_INTERNAL_LOADING_ERROR nogil +cdef nvmlReturn_t nvmlDeviceGetMaxPcieLinkWidth(nvmlDevice_t device, unsigned int* maxLinkWidth) except?_NVMLRETURN_T_INTERNAL_LOADING_ERROR nogil +cdef nvmlReturn_t nvmlDeviceGetCurrPcieLinkGeneration(nvmlDevice_t device, unsigned int* currLinkGen) except?_NVMLRETURN_T_INTERNAL_LOADING_ERROR nogil +cdef nvmlReturn_t nvmlDeviceGetCurrPcieLinkWidth(nvmlDevice_t device, unsigned int* currLinkWidth) except?_NVMLRETURN_T_INTERNAL_LOADING_ERROR nogil +cdef nvmlReturn_t nvmlDeviceGetPcieThroughput(nvmlDevice_t device, nvmlPcieUtilCounter_t counter, unsigned int* value) except?_NVMLRETURN_T_INTERNAL_LOADING_ERROR nogil +cdef nvmlReturn_t nvmlDeviceGetPcieReplayCounter(nvmlDevice_t device, unsigned int* value) except?_NVMLRETURN_T_INTERNAL_LOADING_ERROR nogil +cdef nvmlReturn_t nvmlDeviceGetClockInfo(nvmlDevice_t device, nvmlClockType_t type, unsigned int* clock) except?_NVMLRETURN_T_INTERNAL_LOADING_ERROR nogil +cdef nvmlReturn_t nvmlDeviceGetMaxClockInfo(nvmlDevice_t device, nvmlClockType_t type, unsigned int* clock) except?_NVMLRETURN_T_INTERNAL_LOADING_ERROR nogil +cdef nvmlReturn_t nvmlDeviceGetGpcClkVfOffset(nvmlDevice_t device, int* offset) except?_NVMLRETURN_T_INTERNAL_LOADING_ERROR nogil +cdef nvmlReturn_t nvmlDeviceGetClock(nvmlDevice_t device, nvmlClockType_t clockType, nvmlClockId_t clockId, unsigned int* clockMHz) except?_NVMLRETURN_T_INTERNAL_LOADING_ERROR nogil +cdef nvmlReturn_t nvmlDeviceGetMaxCustomerBoostClock(nvmlDevice_t device, nvmlClockType_t clockType, unsigned int* clockMHz) except?_NVMLRETURN_T_INTERNAL_LOADING_ERROR nogil +cdef nvmlReturn_t nvmlDeviceGetSupportedMemoryClocks(nvmlDevice_t device, unsigned int* count, unsigned int* clocksMHz) except?_NVMLRETURN_T_INTERNAL_LOADING_ERROR nogil +cdef nvmlReturn_t nvmlDeviceGetSupportedGraphicsClocks(nvmlDevice_t device, unsigned int memoryClockMHz, unsigned int* count, unsigned int* clocksMHz) except?_NVMLRETURN_T_INTERNAL_LOADING_ERROR nogil +cdef nvmlReturn_t nvmlDeviceGetAutoBoostedClocksEnabled(nvmlDevice_t device, nvmlEnableState_t* isEnabled, nvmlEnableState_t* defaultIsEnabled) except?_NVMLRETURN_T_INTERNAL_LOADING_ERROR nogil +cdef nvmlReturn_t nvmlDeviceGetFanSpeed(nvmlDevice_t device, unsigned int* speed) except?_NVMLRETURN_T_INTERNAL_LOADING_ERROR nogil +cdef nvmlReturn_t nvmlDeviceGetFanSpeed_v2(nvmlDevice_t device, unsigned int fan, unsigned int* speed) except?_NVMLRETURN_T_INTERNAL_LOADING_ERROR nogil +cdef nvmlReturn_t nvmlDeviceGetFanSpeedRPM(nvmlDevice_t device, nvmlFanSpeedInfo_t* fanSpeed) except?_NVMLRETURN_T_INTERNAL_LOADING_ERROR nogil +cdef nvmlReturn_t nvmlDeviceGetTargetFanSpeed(nvmlDevice_t device, unsigned int fan, unsigned int* targetSpeed) except?_NVMLRETURN_T_INTERNAL_LOADING_ERROR nogil +cdef nvmlReturn_t nvmlDeviceGetMinMaxFanSpeed(nvmlDevice_t device, unsigned int* minSpeed, unsigned int* maxSpeed) except?_NVMLRETURN_T_INTERNAL_LOADING_ERROR nogil +cdef nvmlReturn_t nvmlDeviceGetFanControlPolicy_v2(nvmlDevice_t device, unsigned int fan, nvmlFanControlPolicy_t* policy) except?_NVMLRETURN_T_INTERNAL_LOADING_ERROR nogil +cdef nvmlReturn_t nvmlDeviceGetNumFans(nvmlDevice_t device, unsigned int* numFans) except?_NVMLRETURN_T_INTERNAL_LOADING_ERROR nogil +cdef nvmlReturn_t nvmlDeviceGetCoolerInfo(nvmlDevice_t device, nvmlCoolerInfo_t* coolerInfo) except?_NVMLRETURN_T_INTERNAL_LOADING_ERROR nogil +cdef nvmlReturn_t nvmlDeviceGetTemperatureV(nvmlDevice_t device, nvmlTemperature_t* temperature) except?_NVMLRETURN_T_INTERNAL_LOADING_ERROR nogil +cdef nvmlReturn_t nvmlDeviceGetTemperatureThreshold(nvmlDevice_t device, nvmlTemperatureThresholds_t thresholdType, unsigned int* temp) except?_NVMLRETURN_T_INTERNAL_LOADING_ERROR nogil +cdef nvmlReturn_t nvmlDeviceGetMarginTemperature(nvmlDevice_t device, nvmlMarginTemperature_t* marginTempInfo) except?_NVMLRETURN_T_INTERNAL_LOADING_ERROR nogil +cdef nvmlReturn_t nvmlDeviceGetThermalSettings(nvmlDevice_t device, unsigned int sensorIndex, nvmlGpuThermalSettings_t* pThermalSettings) except?_NVMLRETURN_T_INTERNAL_LOADING_ERROR nogil +cdef nvmlReturn_t nvmlDeviceGetPerformanceState(nvmlDevice_t device, nvmlPstates_t* pState) except?_NVMLRETURN_T_INTERNAL_LOADING_ERROR nogil +cdef nvmlReturn_t nvmlDeviceGetCurrentClocksEventReasons(nvmlDevice_t device, unsigned long long* clocksEventReasons) except?_NVMLRETURN_T_INTERNAL_LOADING_ERROR nogil +cdef nvmlReturn_t nvmlDeviceGetSupportedClocksEventReasons(nvmlDevice_t device, unsigned long long* supportedClocksEventReasons) except?_NVMLRETURN_T_INTERNAL_LOADING_ERROR nogil +cdef nvmlReturn_t nvmlDeviceGetPowerState(nvmlDevice_t device, nvmlPstates_t* pState) except?_NVMLRETURN_T_INTERNAL_LOADING_ERROR nogil +cdef nvmlReturn_t nvmlDeviceGetDynamicPstatesInfo(nvmlDevice_t device, nvmlGpuDynamicPstatesInfo_t* pDynamicPstatesInfo) except?_NVMLRETURN_T_INTERNAL_LOADING_ERROR nogil +cdef nvmlReturn_t nvmlDeviceGetMemClkVfOffset(nvmlDevice_t device, int* offset) except?_NVMLRETURN_T_INTERNAL_LOADING_ERROR nogil +cdef nvmlReturn_t nvmlDeviceGetMinMaxClockOfPState(nvmlDevice_t device, nvmlClockType_t type, nvmlPstates_t pstate, unsigned int* minClockMHz, unsigned int* maxClockMHz) except?_NVMLRETURN_T_INTERNAL_LOADING_ERROR nogil +cdef nvmlReturn_t nvmlDeviceGetSupportedPerformanceStates(nvmlDevice_t device, nvmlPstates_t* pstates, unsigned int size) except?_NVMLRETURN_T_INTERNAL_LOADING_ERROR nogil +cdef nvmlReturn_t nvmlDeviceGetGpcClkMinMaxVfOffset(nvmlDevice_t device, int* minOffset, int* maxOffset) except?_NVMLRETURN_T_INTERNAL_LOADING_ERROR nogil +cdef nvmlReturn_t nvmlDeviceGetMemClkMinMaxVfOffset(nvmlDevice_t device, int* minOffset, int* maxOffset) except?_NVMLRETURN_T_INTERNAL_LOADING_ERROR nogil +cdef nvmlReturn_t nvmlDeviceGetClockOffsets(nvmlDevice_t device, nvmlClockOffset_t* info) except?_NVMLRETURN_T_INTERNAL_LOADING_ERROR nogil +cdef nvmlReturn_t nvmlDeviceSetClockOffsets(nvmlDevice_t device, nvmlClockOffset_t* info) except?_NVMLRETURN_T_INTERNAL_LOADING_ERROR nogil +cdef nvmlReturn_t nvmlDeviceGetPerformanceModes(nvmlDevice_t device, nvmlDevicePerfModes_t* perfModes) except?_NVMLRETURN_T_INTERNAL_LOADING_ERROR nogil +cdef nvmlReturn_t nvmlDeviceGetCurrentClockFreqs(nvmlDevice_t device, nvmlDeviceCurrentClockFreqs_t* currentClockFreqs) except?_NVMLRETURN_T_INTERNAL_LOADING_ERROR nogil +cdef nvmlReturn_t nvmlDeviceGetPowerManagementLimit(nvmlDevice_t device, unsigned int* limit) except?_NVMLRETURN_T_INTERNAL_LOADING_ERROR nogil +cdef nvmlReturn_t nvmlDeviceGetPowerManagementLimitConstraints(nvmlDevice_t device, unsigned int* minLimit, unsigned int* maxLimit) except?_NVMLRETURN_T_INTERNAL_LOADING_ERROR nogil +cdef nvmlReturn_t nvmlDeviceGetPowerManagementDefaultLimit(nvmlDevice_t device, unsigned int* defaultLimit) except?_NVMLRETURN_T_INTERNAL_LOADING_ERROR nogil +cdef nvmlReturn_t nvmlDeviceGetPowerUsage(nvmlDevice_t device, unsigned int* power) except?_NVMLRETURN_T_INTERNAL_LOADING_ERROR nogil +cdef nvmlReturn_t nvmlDeviceGetTotalEnergyConsumption(nvmlDevice_t device, unsigned long long* energy) except?_NVMLRETURN_T_INTERNAL_LOADING_ERROR nogil +cdef nvmlReturn_t nvmlDeviceGetEnforcedPowerLimit(nvmlDevice_t device, unsigned int* limit) except?_NVMLRETURN_T_INTERNAL_LOADING_ERROR nogil +cdef nvmlReturn_t nvmlDeviceGetGpuOperationMode(nvmlDevice_t device, nvmlGpuOperationMode_t* current, nvmlGpuOperationMode_t* pending) except?_NVMLRETURN_T_INTERNAL_LOADING_ERROR nogil +cdef nvmlReturn_t nvmlDeviceGetMemoryInfo_v2(nvmlDevice_t device, nvmlMemory_v2_t* memory) except?_NVMLRETURN_T_INTERNAL_LOADING_ERROR nogil +cdef nvmlReturn_t nvmlDeviceGetComputeMode(nvmlDevice_t device, nvmlComputeMode_t* mode) except?_NVMLRETURN_T_INTERNAL_LOADING_ERROR nogil +cdef nvmlReturn_t nvmlDeviceGetCudaComputeCapability(nvmlDevice_t device, int* major, int* minor) except?_NVMLRETURN_T_INTERNAL_LOADING_ERROR nogil +cdef nvmlReturn_t nvmlDeviceGetDramEncryptionMode(nvmlDevice_t device, nvmlDramEncryptionInfo_t* current, nvmlDramEncryptionInfo_t* pending) except?_NVMLRETURN_T_INTERNAL_LOADING_ERROR nogil +cdef nvmlReturn_t nvmlDeviceSetDramEncryptionMode(nvmlDevice_t device, const nvmlDramEncryptionInfo_t* dramEncryption) except?_NVMLRETURN_T_INTERNAL_LOADING_ERROR nogil +cdef nvmlReturn_t nvmlDeviceGetEccMode(nvmlDevice_t device, nvmlEnableState_t* current, nvmlEnableState_t* pending) except?_NVMLRETURN_T_INTERNAL_LOADING_ERROR nogil +cdef nvmlReturn_t nvmlDeviceGetDefaultEccMode(nvmlDevice_t device, nvmlEnableState_t* defaultMode) except?_NVMLRETURN_T_INTERNAL_LOADING_ERROR nogil +cdef nvmlReturn_t nvmlDeviceGetBoardId(nvmlDevice_t device, unsigned int* boardId) except?_NVMLRETURN_T_INTERNAL_LOADING_ERROR nogil +cdef nvmlReturn_t nvmlDeviceGetMultiGpuBoard(nvmlDevice_t device, unsigned int* multiGpuBool) except?_NVMLRETURN_T_INTERNAL_LOADING_ERROR nogil +cdef nvmlReturn_t nvmlDeviceGetTotalEccErrors(nvmlDevice_t device, nvmlMemoryErrorType_t errorType, nvmlEccCounterType_t counterType, unsigned long long* eccCounts) except?_NVMLRETURN_T_INTERNAL_LOADING_ERROR nogil +cdef nvmlReturn_t nvmlDeviceGetMemoryErrorCounter(nvmlDevice_t device, nvmlMemoryErrorType_t errorType, nvmlEccCounterType_t counterType, nvmlMemoryLocation_t locationType, unsigned long long* count) except?_NVMLRETURN_T_INTERNAL_LOADING_ERROR nogil +cdef nvmlReturn_t nvmlDeviceGetUtilizationRates(nvmlDevice_t device, nvmlUtilization_t* utilization) except?_NVMLRETURN_T_INTERNAL_LOADING_ERROR nogil +cdef nvmlReturn_t nvmlDeviceGetEncoderUtilization(nvmlDevice_t device, unsigned int* utilization, unsigned int* samplingPeriodUs) except?_NVMLRETURN_T_INTERNAL_LOADING_ERROR nogil +cdef nvmlReturn_t nvmlDeviceGetEncoderCapacity(nvmlDevice_t device, nvmlEncoderType_t encoderQueryType, unsigned int* encoderCapacity) except?_NVMLRETURN_T_INTERNAL_LOADING_ERROR nogil +cdef nvmlReturn_t nvmlDeviceGetEncoderStats(nvmlDevice_t device, unsigned int* sessionCount, unsigned int* averageFps, unsigned int* averageLatency) except?_NVMLRETURN_T_INTERNAL_LOADING_ERROR nogil +cdef nvmlReturn_t nvmlDeviceGetEncoderSessions(nvmlDevice_t device, unsigned int* sessionCount, nvmlEncoderSessionInfo_t* sessionInfos) except?_NVMLRETURN_T_INTERNAL_LOADING_ERROR nogil +cdef nvmlReturn_t nvmlDeviceGetDecoderUtilization(nvmlDevice_t device, unsigned int* utilization, unsigned int* samplingPeriodUs) except?_NVMLRETURN_T_INTERNAL_LOADING_ERROR nogil +cdef nvmlReturn_t nvmlDeviceGetJpgUtilization(nvmlDevice_t device, unsigned int* utilization, unsigned int* samplingPeriodUs) except?_NVMLRETURN_T_INTERNAL_LOADING_ERROR nogil +cdef nvmlReturn_t nvmlDeviceGetOfaUtilization(nvmlDevice_t device, unsigned int* utilization, unsigned int* samplingPeriodUs) except?_NVMLRETURN_T_INTERNAL_LOADING_ERROR nogil +cdef nvmlReturn_t nvmlDeviceGetFBCStats(nvmlDevice_t device, nvmlFBCStats_t* fbcStats) except?_NVMLRETURN_T_INTERNAL_LOADING_ERROR nogil +cdef nvmlReturn_t nvmlDeviceGetFBCSessions(nvmlDevice_t device, unsigned int* sessionCount, nvmlFBCSessionInfo_t* sessionInfo) except?_NVMLRETURN_T_INTERNAL_LOADING_ERROR nogil +cdef nvmlReturn_t nvmlDeviceGetDriverModel_v2(nvmlDevice_t device, nvmlDriverModel_t* current, nvmlDriverModel_t* pending) except?_NVMLRETURN_T_INTERNAL_LOADING_ERROR nogil +cdef nvmlReturn_t nvmlDeviceGetVbiosVersion(nvmlDevice_t device, char* version, unsigned int length) except?_NVMLRETURN_T_INTERNAL_LOADING_ERROR nogil +cdef nvmlReturn_t nvmlDeviceGetBridgeChipInfo(nvmlDevice_t device, nvmlBridgeChipHierarchy_t* bridgeHierarchy) except?_NVMLRETURN_T_INTERNAL_LOADING_ERROR nogil +cdef nvmlReturn_t nvmlDeviceGetComputeRunningProcesses_v3(nvmlDevice_t device, unsigned int* infoCount, nvmlProcessInfo_t* infos) except?_NVMLRETURN_T_INTERNAL_LOADING_ERROR nogil +cdef nvmlReturn_t nvmlDeviceGetGraphicsRunningProcesses_v3(nvmlDevice_t device, unsigned int* infoCount, nvmlProcessInfo_t* infos) except?_NVMLRETURN_T_INTERNAL_LOADING_ERROR nogil +cdef nvmlReturn_t nvmlDeviceGetMPSComputeRunningProcesses_v3(nvmlDevice_t device, unsigned int* infoCount, nvmlProcessInfo_t* infos) except?_NVMLRETURN_T_INTERNAL_LOADING_ERROR nogil +cdef nvmlReturn_t nvmlDeviceGetRunningProcessDetailList(nvmlDevice_t device, nvmlProcessDetailList_t* plist) except?_NVMLRETURN_T_INTERNAL_LOADING_ERROR nogil +cdef nvmlReturn_t nvmlDeviceOnSameBoard(nvmlDevice_t device1, nvmlDevice_t device2, int* onSameBoard) except?_NVMLRETURN_T_INTERNAL_LOADING_ERROR nogil +cdef nvmlReturn_t nvmlDeviceGetAPIRestriction(nvmlDevice_t device, nvmlRestrictedAPI_t apiType, nvmlEnableState_t* isRestricted) except?_NVMLRETURN_T_INTERNAL_LOADING_ERROR nogil +cdef nvmlReturn_t nvmlDeviceGetSamples(nvmlDevice_t device, nvmlSamplingType_t type, unsigned long long lastSeenTimeStamp, nvmlValueType_t* sampleValType, unsigned int* sampleCount, nvmlSample_t* samples) except?_NVMLRETURN_T_INTERNAL_LOADING_ERROR nogil +cdef nvmlReturn_t nvmlDeviceGetBAR1MemoryInfo(nvmlDevice_t device, nvmlBAR1Memory_t* bar1Memory) except?_NVMLRETURN_T_INTERNAL_LOADING_ERROR nogil +cdef nvmlReturn_t nvmlDeviceGetIrqNum(nvmlDevice_t device, unsigned int* irqNum) except?_NVMLRETURN_T_INTERNAL_LOADING_ERROR nogil +cdef nvmlReturn_t nvmlDeviceGetNumGpuCores(nvmlDevice_t device, unsigned int* numCores) except?_NVMLRETURN_T_INTERNAL_LOADING_ERROR nogil +cdef nvmlReturn_t nvmlDeviceGetPowerSource(nvmlDevice_t device, nvmlPowerSource_t* powerSource) except?_NVMLRETURN_T_INTERNAL_LOADING_ERROR nogil +cdef nvmlReturn_t nvmlDeviceGetMemoryBusWidth(nvmlDevice_t device, unsigned int* busWidth) except?_NVMLRETURN_T_INTERNAL_LOADING_ERROR nogil +cdef nvmlReturn_t nvmlDeviceGetPcieLinkMaxSpeed(nvmlDevice_t device, unsigned int* maxSpeed) except?_NVMLRETURN_T_INTERNAL_LOADING_ERROR nogil +cdef nvmlReturn_t nvmlDeviceGetPcieSpeed(nvmlDevice_t device, unsigned int* pcieSpeed) except?_NVMLRETURN_T_INTERNAL_LOADING_ERROR nogil +cdef nvmlReturn_t nvmlDeviceGetAdaptiveClockInfoStatus(nvmlDevice_t device, unsigned int* adaptiveClockStatus) except?_NVMLRETURN_T_INTERNAL_LOADING_ERROR nogil +cdef nvmlReturn_t nvmlDeviceGetBusType(nvmlDevice_t device, nvmlBusType_t* type) except?_NVMLRETURN_T_INTERNAL_LOADING_ERROR nogil +cdef nvmlReturn_t nvmlDeviceGetGpuFabricInfoV(nvmlDevice_t device, nvmlGpuFabricInfoV_t* gpuFabricInfo) except?_NVMLRETURN_T_INTERNAL_LOADING_ERROR nogil +cdef nvmlReturn_t nvmlSystemGetConfComputeCapabilities(nvmlConfComputeSystemCaps_t* capabilities) except?_NVMLRETURN_T_INTERNAL_LOADING_ERROR nogil +cdef nvmlReturn_t nvmlSystemGetConfComputeState(nvmlConfComputeSystemState_t* state) except?_NVMLRETURN_T_INTERNAL_LOADING_ERROR nogil +cdef nvmlReturn_t nvmlDeviceGetConfComputeMemSizeInfo(nvmlDevice_t device, nvmlConfComputeMemSizeInfo_t* memInfo) except?_NVMLRETURN_T_INTERNAL_LOADING_ERROR nogil +cdef nvmlReturn_t nvmlSystemGetConfComputeGpusReadyState(unsigned int* isAcceptingWork) except?_NVMLRETURN_T_INTERNAL_LOADING_ERROR nogil +cdef nvmlReturn_t nvmlDeviceGetConfComputeProtectedMemoryUsage(nvmlDevice_t device, nvmlMemory_t* memory) except?_NVMLRETURN_T_INTERNAL_LOADING_ERROR nogil +cdef nvmlReturn_t nvmlDeviceGetConfComputeGpuCertificate(nvmlDevice_t device, nvmlConfComputeGpuCertificate_t* gpuCert) except?_NVMLRETURN_T_INTERNAL_LOADING_ERROR nogil +cdef nvmlReturn_t nvmlDeviceGetConfComputeGpuAttestationReport(nvmlDevice_t device, nvmlConfComputeGpuAttestationReport_t* gpuAtstReport) except?_NVMLRETURN_T_INTERNAL_LOADING_ERROR nogil +cdef nvmlReturn_t nvmlSystemGetConfComputeKeyRotationThresholdInfo(nvmlConfComputeGetKeyRotationThresholdInfo_t* pKeyRotationThrInfo) except?_NVMLRETURN_T_INTERNAL_LOADING_ERROR nogil +cdef nvmlReturn_t nvmlDeviceSetConfComputeUnprotectedMemSize(nvmlDevice_t device, unsigned long long sizeKiB) except?_NVMLRETURN_T_INTERNAL_LOADING_ERROR nogil +cdef nvmlReturn_t nvmlSystemSetConfComputeGpusReadyState(unsigned int isAcceptingWork) except?_NVMLRETURN_T_INTERNAL_LOADING_ERROR nogil +cdef nvmlReturn_t nvmlSystemSetConfComputeKeyRotationThresholdInfo(nvmlConfComputeSetKeyRotationThresholdInfo_t* pKeyRotationThrInfo) except?_NVMLRETURN_T_INTERNAL_LOADING_ERROR nogil +cdef nvmlReturn_t nvmlSystemGetConfComputeSettings(nvmlSystemConfComputeSettings_t* settings) except?_NVMLRETURN_T_INTERNAL_LOADING_ERROR nogil +cdef nvmlReturn_t nvmlDeviceGetGspFirmwareVersion(nvmlDevice_t device, char* version) except?_NVMLRETURN_T_INTERNAL_LOADING_ERROR nogil +cdef nvmlReturn_t nvmlDeviceGetGspFirmwareMode(nvmlDevice_t device, unsigned int* isEnabled, unsigned int* defaultMode) except?_NVMLRETURN_T_INTERNAL_LOADING_ERROR nogil +cdef nvmlReturn_t nvmlDeviceGetSramEccErrorStatus(nvmlDevice_t device, nvmlEccSramErrorStatus_t* status) except?_NVMLRETURN_T_INTERNAL_LOADING_ERROR nogil +cdef nvmlReturn_t nvmlDeviceGetAccountingMode(nvmlDevice_t device, nvmlEnableState_t* mode) except?_NVMLRETURN_T_INTERNAL_LOADING_ERROR nogil +cdef nvmlReturn_t nvmlDeviceGetAccountingStats(nvmlDevice_t device, unsigned int pid, nvmlAccountingStats_t* stats) except?_NVMLRETURN_T_INTERNAL_LOADING_ERROR nogil +cdef nvmlReturn_t nvmlDeviceGetAccountingPids(nvmlDevice_t device, unsigned int* count, unsigned int* pids) except?_NVMLRETURN_T_INTERNAL_LOADING_ERROR nogil +cdef nvmlReturn_t nvmlDeviceGetAccountingBufferSize(nvmlDevice_t device, unsigned int* bufferSize) except?_NVMLRETURN_T_INTERNAL_LOADING_ERROR nogil +cdef nvmlReturn_t nvmlDeviceGetRetiredPages(nvmlDevice_t device, nvmlPageRetirementCause_t cause, unsigned int* pageCount, unsigned long long* addresses) except?_NVMLRETURN_T_INTERNAL_LOADING_ERROR nogil +cdef nvmlReturn_t nvmlDeviceGetRetiredPages_v2(nvmlDevice_t device, nvmlPageRetirementCause_t cause, unsigned int* pageCount, unsigned long long* addresses, unsigned long long* timestamps) except?_NVMLRETURN_T_INTERNAL_LOADING_ERROR nogil +cdef nvmlReturn_t nvmlDeviceGetRetiredPagesPendingStatus(nvmlDevice_t device, nvmlEnableState_t* isPending) except?_NVMLRETURN_T_INTERNAL_LOADING_ERROR nogil +cdef nvmlReturn_t nvmlDeviceGetRemappedRows(nvmlDevice_t device, unsigned int* corrRows, unsigned int* uncRows, unsigned int* isPending, unsigned int* failureOccurred) except?_NVMLRETURN_T_INTERNAL_LOADING_ERROR nogil +cdef nvmlReturn_t nvmlDeviceGetRowRemapperHistogram(nvmlDevice_t device, nvmlRowRemapperHistogramValues_t* values) except?_NVMLRETURN_T_INTERNAL_LOADING_ERROR nogil +cdef nvmlReturn_t nvmlDeviceGetArchitecture(nvmlDevice_t device, nvmlDeviceArchitecture_t* arch) except?_NVMLRETURN_T_INTERNAL_LOADING_ERROR nogil +cdef nvmlReturn_t nvmlDeviceGetClkMonStatus(nvmlDevice_t device, nvmlClkMonStatus_t* status) except?_NVMLRETURN_T_INTERNAL_LOADING_ERROR nogil +cdef nvmlReturn_t nvmlDeviceGetProcessUtilization(nvmlDevice_t device, nvmlProcessUtilizationSample_t* utilization, unsigned int* processSamplesCount, unsigned long long lastSeenTimeStamp) except?_NVMLRETURN_T_INTERNAL_LOADING_ERROR nogil +cdef nvmlReturn_t nvmlDeviceGetProcessesUtilizationInfo(nvmlDevice_t device, nvmlProcessesUtilizationInfo_t* procesesUtilInfo) except?_NVMLRETURN_T_INTERNAL_LOADING_ERROR nogil +cdef nvmlReturn_t nvmlDeviceGetPlatformInfo(nvmlDevice_t device, nvmlPlatformInfo_t* platformInfo) except?_NVMLRETURN_T_INTERNAL_LOADING_ERROR nogil +cdef nvmlReturn_t nvmlUnitSetLedState(nvmlUnit_t unit, nvmlLedColor_t color) except?_NVMLRETURN_T_INTERNAL_LOADING_ERROR nogil +cdef nvmlReturn_t nvmlDeviceSetPersistenceMode(nvmlDevice_t device, nvmlEnableState_t mode) except?_NVMLRETURN_T_INTERNAL_LOADING_ERROR nogil +cdef nvmlReturn_t nvmlDeviceSetComputeMode(nvmlDevice_t device, nvmlComputeMode_t mode) except?_NVMLRETURN_T_INTERNAL_LOADING_ERROR nogil +cdef nvmlReturn_t nvmlDeviceSetEccMode(nvmlDevice_t device, nvmlEnableState_t ecc) except?_NVMLRETURN_T_INTERNAL_LOADING_ERROR nogil +cdef nvmlReturn_t nvmlDeviceClearEccErrorCounts(nvmlDevice_t device, nvmlEccCounterType_t counterType) except?_NVMLRETURN_T_INTERNAL_LOADING_ERROR nogil +cdef nvmlReturn_t nvmlDeviceSetDriverModel(nvmlDevice_t device, nvmlDriverModel_t driverModel, unsigned int flags) except?_NVMLRETURN_T_INTERNAL_LOADING_ERROR nogil +cdef nvmlReturn_t nvmlDeviceSetGpuLockedClocks(nvmlDevice_t device, unsigned int minGpuClockMHz, unsigned int maxGpuClockMHz) except?_NVMLRETURN_T_INTERNAL_LOADING_ERROR nogil +cdef nvmlReturn_t nvmlDeviceResetGpuLockedClocks(nvmlDevice_t device) except?_NVMLRETURN_T_INTERNAL_LOADING_ERROR nogil +cdef nvmlReturn_t nvmlDeviceSetMemoryLockedClocks(nvmlDevice_t device, unsigned int minMemClockMHz, unsigned int maxMemClockMHz) except?_NVMLRETURN_T_INTERNAL_LOADING_ERROR nogil +cdef nvmlReturn_t nvmlDeviceResetMemoryLockedClocks(nvmlDevice_t device) except?_NVMLRETURN_T_INTERNAL_LOADING_ERROR nogil +cdef nvmlReturn_t nvmlDeviceSetAutoBoostedClocksEnabled(nvmlDevice_t device, nvmlEnableState_t enabled) except?_NVMLRETURN_T_INTERNAL_LOADING_ERROR nogil +cdef nvmlReturn_t nvmlDeviceSetDefaultAutoBoostedClocksEnabled(nvmlDevice_t device, nvmlEnableState_t enabled, unsigned int flags) except?_NVMLRETURN_T_INTERNAL_LOADING_ERROR nogil +cdef nvmlReturn_t nvmlDeviceSetDefaultFanSpeed_v2(nvmlDevice_t device, unsigned int fan) except?_NVMLRETURN_T_INTERNAL_LOADING_ERROR nogil +cdef nvmlReturn_t nvmlDeviceSetFanControlPolicy(nvmlDevice_t device, unsigned int fan, nvmlFanControlPolicy_t policy) except?_NVMLRETURN_T_INTERNAL_LOADING_ERROR nogil +cdef nvmlReturn_t nvmlDeviceSetTemperatureThreshold(nvmlDevice_t device, nvmlTemperatureThresholds_t thresholdType, int* temp) except?_NVMLRETURN_T_INTERNAL_LOADING_ERROR nogil +cdef nvmlReturn_t nvmlDeviceSetGpuOperationMode(nvmlDevice_t device, nvmlGpuOperationMode_t mode) except?_NVMLRETURN_T_INTERNAL_LOADING_ERROR nogil +cdef nvmlReturn_t nvmlDeviceSetAPIRestriction(nvmlDevice_t device, nvmlRestrictedAPI_t apiType, nvmlEnableState_t isRestricted) except?_NVMLRETURN_T_INTERNAL_LOADING_ERROR nogil +cdef nvmlReturn_t nvmlDeviceSetFanSpeed_v2(nvmlDevice_t device, unsigned int fan, unsigned int speed) except?_NVMLRETURN_T_INTERNAL_LOADING_ERROR nogil +cdef nvmlReturn_t nvmlDeviceSetAccountingMode(nvmlDevice_t device, nvmlEnableState_t mode) except?_NVMLRETURN_T_INTERNAL_LOADING_ERROR nogil +cdef nvmlReturn_t nvmlDeviceClearAccountingPids(nvmlDevice_t device) except?_NVMLRETURN_T_INTERNAL_LOADING_ERROR nogil +cdef nvmlReturn_t nvmlDeviceSetPowerManagementLimit_v2(nvmlDevice_t device, nvmlPowerValue_v2_t* powerValue) except?_NVMLRETURN_T_INTERNAL_LOADING_ERROR nogil +cdef nvmlReturn_t nvmlDeviceGetNvLinkState(nvmlDevice_t device, unsigned int link, nvmlEnableState_t* isActive) except?_NVMLRETURN_T_INTERNAL_LOADING_ERROR nogil +cdef nvmlReturn_t nvmlDeviceGetNvLinkVersion(nvmlDevice_t device, unsigned int link, unsigned int* version) except?_NVMLRETURN_T_INTERNAL_LOADING_ERROR nogil +cdef nvmlReturn_t nvmlDeviceGetNvLinkCapability(nvmlDevice_t device, unsigned int link, nvmlNvLinkCapability_t capability, unsigned int* capResult) except?_NVMLRETURN_T_INTERNAL_LOADING_ERROR nogil +cdef nvmlReturn_t nvmlDeviceGetNvLinkRemotePciInfo_v2(nvmlDevice_t device, unsigned int link, nvmlPciInfo_t* pci) except?_NVMLRETURN_T_INTERNAL_LOADING_ERROR nogil +cdef nvmlReturn_t nvmlDeviceGetNvLinkErrorCounter(nvmlDevice_t device, unsigned int link, nvmlNvLinkErrorCounter_t counter, unsigned long long* counterValue) except?_NVMLRETURN_T_INTERNAL_LOADING_ERROR nogil +cdef nvmlReturn_t nvmlDeviceResetNvLinkErrorCounters(nvmlDevice_t device, unsigned int link) except?_NVMLRETURN_T_INTERNAL_LOADING_ERROR nogil +cdef nvmlReturn_t nvmlDeviceGetNvLinkRemoteDeviceType(nvmlDevice_t device, unsigned int link, nvmlIntNvLinkDeviceType_t* pNvLinkDeviceType) except?_NVMLRETURN_T_INTERNAL_LOADING_ERROR nogil +cdef nvmlReturn_t nvmlDeviceSetNvLinkDeviceLowPowerThreshold(nvmlDevice_t device, nvmlNvLinkPowerThres_t* info) except?_NVMLRETURN_T_INTERNAL_LOADING_ERROR nogil +cdef nvmlReturn_t nvmlSystemSetNvlinkBwMode(unsigned int nvlinkBwMode) except?_NVMLRETURN_T_INTERNAL_LOADING_ERROR nogil +cdef nvmlReturn_t nvmlSystemGetNvlinkBwMode(unsigned int* nvlinkBwMode) except?_NVMLRETURN_T_INTERNAL_LOADING_ERROR nogil +cdef nvmlReturn_t nvmlDeviceGetNvlinkSupportedBwModes(nvmlDevice_t device, nvmlNvlinkSupportedBwModes_t* supportedBwMode) except?_NVMLRETURN_T_INTERNAL_LOADING_ERROR nogil +cdef nvmlReturn_t nvmlDeviceGetNvlinkBwMode(nvmlDevice_t device, nvmlNvlinkGetBwMode_t* getBwMode) except?_NVMLRETURN_T_INTERNAL_LOADING_ERROR nogil +cdef nvmlReturn_t nvmlDeviceSetNvlinkBwMode(nvmlDevice_t device, nvmlNvlinkSetBwMode_t* setBwMode) except?_NVMLRETURN_T_INTERNAL_LOADING_ERROR nogil +cdef nvmlReturn_t nvmlEventSetCreate(nvmlEventSet_t* set) except?_NVMLRETURN_T_INTERNAL_LOADING_ERROR nogil +cdef nvmlReturn_t nvmlDeviceRegisterEvents(nvmlDevice_t device, unsigned long long eventTypes, nvmlEventSet_t set) except?_NVMLRETURN_T_INTERNAL_LOADING_ERROR nogil +cdef nvmlReturn_t nvmlDeviceGetSupportedEventTypes(nvmlDevice_t device, unsigned long long* eventTypes) except?_NVMLRETURN_T_INTERNAL_LOADING_ERROR nogil +cdef nvmlReturn_t nvmlEventSetWait_v2(nvmlEventSet_t set, nvmlEventData_t* data, unsigned int timeoutms) except?_NVMLRETURN_T_INTERNAL_LOADING_ERROR nogil +cdef nvmlReturn_t nvmlEventSetFree(nvmlEventSet_t set) except?_NVMLRETURN_T_INTERNAL_LOADING_ERROR nogil +cdef nvmlReturn_t nvmlSystemEventSetCreate(nvmlSystemEventSetCreateRequest_t* request) except?_NVMLRETURN_T_INTERNAL_LOADING_ERROR nogil +cdef nvmlReturn_t nvmlSystemEventSetFree(nvmlSystemEventSetFreeRequest_t* request) except?_NVMLRETURN_T_INTERNAL_LOADING_ERROR nogil +cdef nvmlReturn_t nvmlSystemRegisterEvents(nvmlSystemRegisterEventRequest_t* request) except?_NVMLRETURN_T_INTERNAL_LOADING_ERROR nogil +cdef nvmlReturn_t nvmlSystemEventSetWait(nvmlSystemEventSetWaitRequest_t* request) except?_NVMLRETURN_T_INTERNAL_LOADING_ERROR nogil +cdef nvmlReturn_t nvmlDeviceModifyDrainState(nvmlPciInfo_t* pciInfo, nvmlEnableState_t newState) except?_NVMLRETURN_T_INTERNAL_LOADING_ERROR nogil +cdef nvmlReturn_t nvmlDeviceQueryDrainState(nvmlPciInfo_t* pciInfo, nvmlEnableState_t* currentState) except?_NVMLRETURN_T_INTERNAL_LOADING_ERROR nogil +cdef nvmlReturn_t nvmlDeviceRemoveGpu_v2(nvmlPciInfo_t* pciInfo, nvmlDetachGpuState_t gpuState, nvmlPcieLinkState_t linkState) except?_NVMLRETURN_T_INTERNAL_LOADING_ERROR nogil +cdef nvmlReturn_t nvmlDeviceDiscoverGpus(nvmlPciInfo_t* pciInfo) except?_NVMLRETURN_T_INTERNAL_LOADING_ERROR nogil +cdef nvmlReturn_t nvmlDeviceGetFieldValues(nvmlDevice_t device, int valuesCount, nvmlFieldValue_t* values) except?_NVMLRETURN_T_INTERNAL_LOADING_ERROR nogil +cdef nvmlReturn_t nvmlDeviceClearFieldValues(nvmlDevice_t device, int valuesCount, nvmlFieldValue_t* values) except?_NVMLRETURN_T_INTERNAL_LOADING_ERROR nogil +cdef nvmlReturn_t nvmlDeviceGetVirtualizationMode(nvmlDevice_t device, nvmlGpuVirtualizationMode_t* pVirtualMode) except?_NVMLRETURN_T_INTERNAL_LOADING_ERROR nogil +cdef nvmlReturn_t nvmlDeviceGetHostVgpuMode(nvmlDevice_t device, nvmlHostVgpuMode_t* pHostVgpuMode) except?_NVMLRETURN_T_INTERNAL_LOADING_ERROR nogil +cdef nvmlReturn_t nvmlDeviceSetVirtualizationMode(nvmlDevice_t device, nvmlGpuVirtualizationMode_t virtualMode) except?_NVMLRETURN_T_INTERNAL_LOADING_ERROR nogil +cdef nvmlReturn_t nvmlDeviceGetVgpuHeterogeneousMode(nvmlDevice_t device, nvmlVgpuHeterogeneousMode_t* pHeterogeneousMode) except?_NVMLRETURN_T_INTERNAL_LOADING_ERROR nogil +cdef nvmlReturn_t nvmlDeviceSetVgpuHeterogeneousMode(nvmlDevice_t device, const nvmlVgpuHeterogeneousMode_t* pHeterogeneousMode) except?_NVMLRETURN_T_INTERNAL_LOADING_ERROR nogil +cdef nvmlReturn_t nvmlVgpuInstanceGetPlacementId(nvmlVgpuInstance_t vgpuInstance, nvmlVgpuPlacementId_t* pPlacement) except?_NVMLRETURN_T_INTERNAL_LOADING_ERROR nogil +cdef nvmlReturn_t nvmlDeviceGetVgpuTypeSupportedPlacements(nvmlDevice_t device, nvmlVgpuTypeId_t vgpuTypeId, nvmlVgpuPlacementList_t* pPlacementList) except?_NVMLRETURN_T_INTERNAL_LOADING_ERROR nogil +cdef nvmlReturn_t nvmlDeviceGetVgpuTypeCreatablePlacements(nvmlDevice_t device, nvmlVgpuTypeId_t vgpuTypeId, nvmlVgpuPlacementList_t* pPlacementList) except?_NVMLRETURN_T_INTERNAL_LOADING_ERROR nogil +cdef nvmlReturn_t nvmlVgpuTypeGetGspHeapSize(nvmlVgpuTypeId_t vgpuTypeId, unsigned long long* gspHeapSize) except?_NVMLRETURN_T_INTERNAL_LOADING_ERROR nogil +cdef nvmlReturn_t nvmlVgpuTypeGetFbReservation(nvmlVgpuTypeId_t vgpuTypeId, unsigned long long* fbReservation) except?_NVMLRETURN_T_INTERNAL_LOADING_ERROR nogil +cdef nvmlReturn_t nvmlVgpuInstanceGetRuntimeStateSize(nvmlVgpuInstance_t vgpuInstance, nvmlVgpuRuntimeState_t* pState) except?_NVMLRETURN_T_INTERNAL_LOADING_ERROR nogil +cdef nvmlReturn_t nvmlDeviceSetVgpuCapabilities(nvmlDevice_t device, nvmlDeviceVgpuCapability_t capability, nvmlEnableState_t state) except?_NVMLRETURN_T_INTERNAL_LOADING_ERROR nogil +cdef nvmlReturn_t nvmlDeviceGetGridLicensableFeatures_v4(nvmlDevice_t device, nvmlGridLicensableFeatures_t* pGridLicensableFeatures) except?_NVMLRETURN_T_INTERNAL_LOADING_ERROR nogil +cdef nvmlReturn_t nvmlGetVgpuDriverCapabilities(nvmlVgpuDriverCapability_t capability, unsigned int* capResult) except?_NVMLRETURN_T_INTERNAL_LOADING_ERROR nogil +cdef nvmlReturn_t nvmlDeviceGetVgpuCapabilities(nvmlDevice_t device, nvmlDeviceVgpuCapability_t capability, unsigned int* capResult) except?_NVMLRETURN_T_INTERNAL_LOADING_ERROR nogil +cdef nvmlReturn_t nvmlDeviceGetSupportedVgpus(nvmlDevice_t device, unsigned int* vgpuCount, nvmlVgpuTypeId_t* vgpuTypeIds) except?_NVMLRETURN_T_INTERNAL_LOADING_ERROR nogil +cdef nvmlReturn_t nvmlDeviceGetCreatableVgpus(nvmlDevice_t device, unsigned int* vgpuCount, nvmlVgpuTypeId_t* vgpuTypeIds) except?_NVMLRETURN_T_INTERNAL_LOADING_ERROR nogil +cdef nvmlReturn_t nvmlVgpuTypeGetClass(nvmlVgpuTypeId_t vgpuTypeId, char* vgpuTypeClass, unsigned int* size) except?_NVMLRETURN_T_INTERNAL_LOADING_ERROR nogil +cdef nvmlReturn_t nvmlVgpuTypeGetName(nvmlVgpuTypeId_t vgpuTypeId, char* vgpuTypeName, unsigned int* size) except?_NVMLRETURN_T_INTERNAL_LOADING_ERROR nogil +cdef nvmlReturn_t nvmlVgpuTypeGetGpuInstanceProfileId(nvmlVgpuTypeId_t vgpuTypeId, unsigned int* gpuInstanceProfileId) except?_NVMLRETURN_T_INTERNAL_LOADING_ERROR nogil +cdef nvmlReturn_t nvmlVgpuTypeGetDeviceID(nvmlVgpuTypeId_t vgpuTypeId, unsigned long long* deviceID, unsigned long long* subsystemID) except?_NVMLRETURN_T_INTERNAL_LOADING_ERROR nogil +cdef nvmlReturn_t nvmlVgpuTypeGetFramebufferSize(nvmlVgpuTypeId_t vgpuTypeId, unsigned long long* fbSize) except?_NVMLRETURN_T_INTERNAL_LOADING_ERROR nogil +cdef nvmlReturn_t nvmlVgpuTypeGetNumDisplayHeads(nvmlVgpuTypeId_t vgpuTypeId, unsigned int* numDisplayHeads) except?_NVMLRETURN_T_INTERNAL_LOADING_ERROR nogil +cdef nvmlReturn_t nvmlVgpuTypeGetResolution(nvmlVgpuTypeId_t vgpuTypeId, unsigned int displayIndex, unsigned int* xdim, unsigned int* ydim) except?_NVMLRETURN_T_INTERNAL_LOADING_ERROR nogil +cdef nvmlReturn_t nvmlVgpuTypeGetLicense(nvmlVgpuTypeId_t vgpuTypeId, char* vgpuTypeLicenseString, unsigned int size) except?_NVMLRETURN_T_INTERNAL_LOADING_ERROR nogil +cdef nvmlReturn_t nvmlVgpuTypeGetFrameRateLimit(nvmlVgpuTypeId_t vgpuTypeId, unsigned int* frameRateLimit) except?_NVMLRETURN_T_INTERNAL_LOADING_ERROR nogil +cdef nvmlReturn_t nvmlVgpuTypeGetMaxInstances(nvmlDevice_t device, nvmlVgpuTypeId_t vgpuTypeId, unsigned int* vgpuInstanceCount) except?_NVMLRETURN_T_INTERNAL_LOADING_ERROR nogil +cdef nvmlReturn_t nvmlVgpuTypeGetMaxInstancesPerVm(nvmlVgpuTypeId_t vgpuTypeId, unsigned int* vgpuInstanceCountPerVm) except?_NVMLRETURN_T_INTERNAL_LOADING_ERROR nogil +cdef nvmlReturn_t nvmlVgpuTypeGetBAR1Info(nvmlVgpuTypeId_t vgpuTypeId, nvmlVgpuTypeBar1Info_t* bar1Info) except?_NVMLRETURN_T_INTERNAL_LOADING_ERROR nogil +cdef nvmlReturn_t nvmlDeviceGetActiveVgpus(nvmlDevice_t device, unsigned int* vgpuCount, nvmlVgpuInstance_t* vgpuInstances) except?_NVMLRETURN_T_INTERNAL_LOADING_ERROR nogil +cdef nvmlReturn_t nvmlVgpuInstanceGetVmID(nvmlVgpuInstance_t vgpuInstance, char* vmId, unsigned int size, nvmlVgpuVmIdType_t* vmIdType) except?_NVMLRETURN_T_INTERNAL_LOADING_ERROR nogil +cdef nvmlReturn_t nvmlVgpuInstanceGetUUID(nvmlVgpuInstance_t vgpuInstance, char* uuid, unsigned int size) except?_NVMLRETURN_T_INTERNAL_LOADING_ERROR nogil +cdef nvmlReturn_t nvmlVgpuInstanceGetVmDriverVersion(nvmlVgpuInstance_t vgpuInstance, char* version, unsigned int length) except?_NVMLRETURN_T_INTERNAL_LOADING_ERROR nogil +cdef nvmlReturn_t nvmlVgpuInstanceGetFbUsage(nvmlVgpuInstance_t vgpuInstance, unsigned long long* fbUsage) except?_NVMLRETURN_T_INTERNAL_LOADING_ERROR nogil +cdef nvmlReturn_t nvmlVgpuInstanceGetLicenseStatus(nvmlVgpuInstance_t vgpuInstance, unsigned int* licensed) except?_NVMLRETURN_T_INTERNAL_LOADING_ERROR nogil +cdef nvmlReturn_t nvmlVgpuInstanceGetType(nvmlVgpuInstance_t vgpuInstance, nvmlVgpuTypeId_t* vgpuTypeId) except?_NVMLRETURN_T_INTERNAL_LOADING_ERROR nogil +cdef nvmlReturn_t nvmlVgpuInstanceGetFrameRateLimit(nvmlVgpuInstance_t vgpuInstance, unsigned int* frameRateLimit) except?_NVMLRETURN_T_INTERNAL_LOADING_ERROR nogil +cdef nvmlReturn_t nvmlVgpuInstanceGetEccMode(nvmlVgpuInstance_t vgpuInstance, nvmlEnableState_t* eccMode) except?_NVMLRETURN_T_INTERNAL_LOADING_ERROR nogil +cdef nvmlReturn_t nvmlVgpuInstanceGetEncoderCapacity(nvmlVgpuInstance_t vgpuInstance, unsigned int* encoderCapacity) except?_NVMLRETURN_T_INTERNAL_LOADING_ERROR nogil +cdef nvmlReturn_t nvmlVgpuInstanceSetEncoderCapacity(nvmlVgpuInstance_t vgpuInstance, unsigned int encoderCapacity) except?_NVMLRETURN_T_INTERNAL_LOADING_ERROR nogil +cdef nvmlReturn_t nvmlVgpuInstanceGetEncoderStats(nvmlVgpuInstance_t vgpuInstance, unsigned int* sessionCount, unsigned int* averageFps, unsigned int* averageLatency) except?_NVMLRETURN_T_INTERNAL_LOADING_ERROR nogil +cdef nvmlReturn_t nvmlVgpuInstanceGetEncoderSessions(nvmlVgpuInstance_t vgpuInstance, unsigned int* sessionCount, nvmlEncoderSessionInfo_t* sessionInfo) except?_NVMLRETURN_T_INTERNAL_LOADING_ERROR nogil +cdef nvmlReturn_t nvmlVgpuInstanceGetFBCStats(nvmlVgpuInstance_t vgpuInstance, nvmlFBCStats_t* fbcStats) except?_NVMLRETURN_T_INTERNAL_LOADING_ERROR nogil +cdef nvmlReturn_t nvmlVgpuInstanceGetFBCSessions(nvmlVgpuInstance_t vgpuInstance, unsigned int* sessionCount, nvmlFBCSessionInfo_t* sessionInfo) except?_NVMLRETURN_T_INTERNAL_LOADING_ERROR nogil +cdef nvmlReturn_t nvmlVgpuInstanceGetGpuInstanceId(nvmlVgpuInstance_t vgpuInstance, unsigned int* gpuInstanceId) except?_NVMLRETURN_T_INTERNAL_LOADING_ERROR nogil +cdef nvmlReturn_t nvmlVgpuInstanceGetGpuPciId(nvmlVgpuInstance_t vgpuInstance, char* vgpuPciId, unsigned int* length) except?_NVMLRETURN_T_INTERNAL_LOADING_ERROR nogil +cdef nvmlReturn_t nvmlVgpuTypeGetCapabilities(nvmlVgpuTypeId_t vgpuTypeId, nvmlVgpuCapability_t capability, unsigned int* capResult) except?_NVMLRETURN_T_INTERNAL_LOADING_ERROR nogil +cdef nvmlReturn_t nvmlVgpuInstanceGetMdevUUID(nvmlVgpuInstance_t vgpuInstance, char* mdevUuid, unsigned int size) except?_NVMLRETURN_T_INTERNAL_LOADING_ERROR nogil +cdef nvmlReturn_t nvmlGpuInstanceGetCreatableVgpus(nvmlGpuInstance_t gpuInstance, nvmlVgpuTypeIdInfo_t* pVgpus) except?_NVMLRETURN_T_INTERNAL_LOADING_ERROR nogil +cdef nvmlReturn_t nvmlVgpuTypeGetMaxInstancesPerGpuInstance(nvmlVgpuTypeMaxInstance_t* pMaxInstance) except?_NVMLRETURN_T_INTERNAL_LOADING_ERROR nogil +cdef nvmlReturn_t nvmlGpuInstanceGetActiveVgpus(nvmlGpuInstance_t gpuInstance, nvmlActiveVgpuInstanceInfo_t* pVgpuInstanceInfo) except?_NVMLRETURN_T_INTERNAL_LOADING_ERROR nogil +cdef nvmlReturn_t nvmlGpuInstanceSetVgpuSchedulerState(nvmlGpuInstance_t gpuInstance, nvmlVgpuSchedulerState_t* pScheduler) except?_NVMLRETURN_T_INTERNAL_LOADING_ERROR nogil +cdef nvmlReturn_t nvmlGpuInstanceGetVgpuSchedulerState(nvmlGpuInstance_t gpuInstance, nvmlVgpuSchedulerStateInfo_t* pSchedulerStateInfo) except?_NVMLRETURN_T_INTERNAL_LOADING_ERROR nogil +cdef nvmlReturn_t nvmlGpuInstanceGetVgpuSchedulerLog(nvmlGpuInstance_t gpuInstance, nvmlVgpuSchedulerLogInfo_t* pSchedulerLogInfo) except?_NVMLRETURN_T_INTERNAL_LOADING_ERROR nogil +cdef nvmlReturn_t nvmlGpuInstanceGetVgpuTypeCreatablePlacements(nvmlGpuInstance_t gpuInstance, nvmlVgpuCreatablePlacementInfo_t* pCreatablePlacementInfo) except?_NVMLRETURN_T_INTERNAL_LOADING_ERROR nogil +cdef nvmlReturn_t nvmlGpuInstanceGetVgpuHeterogeneousMode(nvmlGpuInstance_t gpuInstance, nvmlVgpuHeterogeneousMode_t* pHeterogeneousMode) except?_NVMLRETURN_T_INTERNAL_LOADING_ERROR nogil +cdef nvmlReturn_t nvmlGpuInstanceSetVgpuHeterogeneousMode(nvmlGpuInstance_t gpuInstance, const nvmlVgpuHeterogeneousMode_t* pHeterogeneousMode) except?_NVMLRETURN_T_INTERNAL_LOADING_ERROR nogil +cdef nvmlReturn_t nvmlVgpuInstanceGetMetadata(nvmlVgpuInstance_t vgpuInstance, nvmlVgpuMetadata_t* vgpuMetadata, unsigned int* bufferSize) except?_NVMLRETURN_T_INTERNAL_LOADING_ERROR nogil +cdef nvmlReturn_t nvmlDeviceGetVgpuMetadata(nvmlDevice_t device, nvmlVgpuPgpuMetadata_t* pgpuMetadata, unsigned int* bufferSize) except?_NVMLRETURN_T_INTERNAL_LOADING_ERROR nogil +cdef nvmlReturn_t nvmlGetVgpuCompatibility(nvmlVgpuMetadata_t* vgpuMetadata, nvmlVgpuPgpuMetadata_t* pgpuMetadata, nvmlVgpuPgpuCompatibility_t* compatibilityInfo) except?_NVMLRETURN_T_INTERNAL_LOADING_ERROR nogil +cdef nvmlReturn_t nvmlDeviceGetPgpuMetadataString(nvmlDevice_t device, char* pgpuMetadata, unsigned int* bufferSize) except?_NVMLRETURN_T_INTERNAL_LOADING_ERROR nogil +cdef nvmlReturn_t nvmlDeviceGetVgpuSchedulerLog(nvmlDevice_t device, nvmlVgpuSchedulerLog_t* pSchedulerLog) except?_NVMLRETURN_T_INTERNAL_LOADING_ERROR nogil +cdef nvmlReturn_t nvmlDeviceGetVgpuSchedulerState(nvmlDevice_t device, nvmlVgpuSchedulerGetState_t* pSchedulerState) except?_NVMLRETURN_T_INTERNAL_LOADING_ERROR nogil +cdef nvmlReturn_t nvmlDeviceGetVgpuSchedulerCapabilities(nvmlDevice_t device, nvmlVgpuSchedulerCapabilities_t* pCapabilities) except?_NVMLRETURN_T_INTERNAL_LOADING_ERROR nogil +cdef nvmlReturn_t nvmlDeviceSetVgpuSchedulerState(nvmlDevice_t device, nvmlVgpuSchedulerSetState_t* pSchedulerState) except?_NVMLRETURN_T_INTERNAL_LOADING_ERROR nogil +cdef nvmlReturn_t nvmlGetVgpuVersion(nvmlVgpuVersion_t* supported, nvmlVgpuVersion_t* current) except?_NVMLRETURN_T_INTERNAL_LOADING_ERROR nogil +cdef nvmlReturn_t nvmlSetVgpuVersion(nvmlVgpuVersion_t* vgpuVersion) except?_NVMLRETURN_T_INTERNAL_LOADING_ERROR nogil +cdef nvmlReturn_t nvmlDeviceGetVgpuUtilization(nvmlDevice_t device, unsigned long long lastSeenTimeStamp, nvmlValueType_t* sampleValType, unsigned int* vgpuInstanceSamplesCount, nvmlVgpuInstanceUtilizationSample_t* utilizationSamples) except?_NVMLRETURN_T_INTERNAL_LOADING_ERROR nogil +cdef nvmlReturn_t nvmlDeviceGetVgpuInstancesUtilizationInfo(nvmlDevice_t device, nvmlVgpuInstancesUtilizationInfo_t* vgpuUtilInfo) except?_NVMLRETURN_T_INTERNAL_LOADING_ERROR nogil +cdef nvmlReturn_t nvmlDeviceGetVgpuProcessUtilization(nvmlDevice_t device, unsigned long long lastSeenTimeStamp, unsigned int* vgpuProcessSamplesCount, nvmlVgpuProcessUtilizationSample_t* utilizationSamples) except?_NVMLRETURN_T_INTERNAL_LOADING_ERROR nogil +cdef nvmlReturn_t nvmlDeviceGetVgpuProcessesUtilizationInfo(nvmlDevice_t device, nvmlVgpuProcessesUtilizationInfo_t* vgpuProcUtilInfo) except?_NVMLRETURN_T_INTERNAL_LOADING_ERROR nogil +cdef nvmlReturn_t nvmlVgpuInstanceGetAccountingMode(nvmlVgpuInstance_t vgpuInstance, nvmlEnableState_t* mode) except?_NVMLRETURN_T_INTERNAL_LOADING_ERROR nogil +cdef nvmlReturn_t nvmlVgpuInstanceGetAccountingPids(nvmlVgpuInstance_t vgpuInstance, unsigned int* count, unsigned int* pids) except?_NVMLRETURN_T_INTERNAL_LOADING_ERROR nogil +cdef nvmlReturn_t nvmlVgpuInstanceGetAccountingStats(nvmlVgpuInstance_t vgpuInstance, unsigned int pid, nvmlAccountingStats_t* stats) except?_NVMLRETURN_T_INTERNAL_LOADING_ERROR nogil +cdef nvmlReturn_t nvmlVgpuInstanceClearAccountingPids(nvmlVgpuInstance_t vgpuInstance) except?_NVMLRETURN_T_INTERNAL_LOADING_ERROR nogil +cdef nvmlReturn_t nvmlVgpuInstanceGetLicenseInfo_v2(nvmlVgpuInstance_t vgpuInstance, nvmlVgpuLicenseInfo_t* licenseInfo) except?_NVMLRETURN_T_INTERNAL_LOADING_ERROR nogil +cdef nvmlReturn_t nvmlGetExcludedDeviceCount(unsigned int* deviceCount) except?_NVMLRETURN_T_INTERNAL_LOADING_ERROR nogil +cdef nvmlReturn_t nvmlGetExcludedDeviceInfoByIndex(unsigned int index, nvmlExcludedDeviceInfo_t* info) except?_NVMLRETURN_T_INTERNAL_LOADING_ERROR nogil +cdef nvmlReturn_t nvmlDeviceSetMigMode(nvmlDevice_t device, unsigned int mode, nvmlReturn_t* activationStatus) except?_NVMLRETURN_T_INTERNAL_LOADING_ERROR nogil +cdef nvmlReturn_t nvmlDeviceGetMigMode(nvmlDevice_t device, unsigned int* currentMode, unsigned int* pendingMode) except?_NVMLRETURN_T_INTERNAL_LOADING_ERROR nogil +cdef nvmlReturn_t nvmlDeviceGetGpuInstanceProfileInfoV(nvmlDevice_t device, unsigned int profile, nvmlGpuInstanceProfileInfo_v2_t* info) except?_NVMLRETURN_T_INTERNAL_LOADING_ERROR nogil +cdef nvmlReturn_t nvmlDeviceGetGpuInstancePossiblePlacements_v2(nvmlDevice_t device, unsigned int profileId, nvmlGpuInstancePlacement_t* placements, unsigned int* count) except?_NVMLRETURN_T_INTERNAL_LOADING_ERROR nogil +cdef nvmlReturn_t nvmlDeviceGetGpuInstanceRemainingCapacity(nvmlDevice_t device, unsigned int profileId, unsigned int* count) except?_NVMLRETURN_T_INTERNAL_LOADING_ERROR nogil +cdef nvmlReturn_t nvmlDeviceCreateGpuInstance(nvmlDevice_t device, unsigned int profileId, nvmlGpuInstance_t* gpuInstance) except?_NVMLRETURN_T_INTERNAL_LOADING_ERROR nogil +cdef nvmlReturn_t nvmlDeviceCreateGpuInstanceWithPlacement(nvmlDevice_t device, unsigned int profileId, const nvmlGpuInstancePlacement_t* placement, nvmlGpuInstance_t* gpuInstance) except?_NVMLRETURN_T_INTERNAL_LOADING_ERROR nogil +cdef nvmlReturn_t nvmlGpuInstanceDestroy(nvmlGpuInstance_t gpuInstance) except?_NVMLRETURN_T_INTERNAL_LOADING_ERROR nogil +cdef nvmlReturn_t nvmlDeviceGetGpuInstances(nvmlDevice_t device, unsigned int profileId, nvmlGpuInstance_t* gpuInstances, unsigned int* count) except?_NVMLRETURN_T_INTERNAL_LOADING_ERROR nogil +cdef nvmlReturn_t nvmlDeviceGetGpuInstanceById(nvmlDevice_t device, unsigned int id, nvmlGpuInstance_t* gpuInstance) except?_NVMLRETURN_T_INTERNAL_LOADING_ERROR nogil +cdef nvmlReturn_t nvmlGpuInstanceGetInfo(nvmlGpuInstance_t gpuInstance, nvmlGpuInstanceInfo_t* info) except?_NVMLRETURN_T_INTERNAL_LOADING_ERROR nogil +cdef nvmlReturn_t nvmlGpuInstanceGetComputeInstanceProfileInfoV(nvmlGpuInstance_t gpuInstance, unsigned int profile, unsigned int engProfile, nvmlComputeInstanceProfileInfo_v2_t* info) except?_NVMLRETURN_T_INTERNAL_LOADING_ERROR nogil +cdef nvmlReturn_t nvmlGpuInstanceGetComputeInstanceRemainingCapacity(nvmlGpuInstance_t gpuInstance, unsigned int profileId, unsigned int* count) except?_NVMLRETURN_T_INTERNAL_LOADING_ERROR nogil +cdef nvmlReturn_t nvmlGpuInstanceGetComputeInstancePossiblePlacements(nvmlGpuInstance_t gpuInstance, unsigned int profileId, nvmlComputeInstancePlacement_t* placements, unsigned int* count) except?_NVMLRETURN_T_INTERNAL_LOADING_ERROR nogil +cdef nvmlReturn_t nvmlGpuInstanceCreateComputeInstance(nvmlGpuInstance_t gpuInstance, unsigned int profileId, nvmlComputeInstance_t* computeInstance) except?_NVMLRETURN_T_INTERNAL_LOADING_ERROR nogil +cdef nvmlReturn_t nvmlGpuInstanceCreateComputeInstanceWithPlacement(nvmlGpuInstance_t gpuInstance, unsigned int profileId, const nvmlComputeInstancePlacement_t* placement, nvmlComputeInstance_t* computeInstance) except?_NVMLRETURN_T_INTERNAL_LOADING_ERROR nogil +cdef nvmlReturn_t nvmlComputeInstanceDestroy(nvmlComputeInstance_t computeInstance) except?_NVMLRETURN_T_INTERNAL_LOADING_ERROR nogil +cdef nvmlReturn_t nvmlGpuInstanceGetComputeInstances(nvmlGpuInstance_t gpuInstance, unsigned int profileId, nvmlComputeInstance_t* computeInstances, unsigned int* count) except?_NVMLRETURN_T_INTERNAL_LOADING_ERROR nogil +cdef nvmlReturn_t nvmlGpuInstanceGetComputeInstanceById(nvmlGpuInstance_t gpuInstance, unsigned int id, nvmlComputeInstance_t* computeInstance) except?_NVMLRETURN_T_INTERNAL_LOADING_ERROR nogil +cdef nvmlReturn_t nvmlComputeInstanceGetInfo_v2(nvmlComputeInstance_t computeInstance, nvmlComputeInstanceInfo_t* info) except?_NVMLRETURN_T_INTERNAL_LOADING_ERROR nogil +cdef nvmlReturn_t nvmlDeviceIsMigDeviceHandle(nvmlDevice_t device, unsigned int* isMigDevice) except?_NVMLRETURN_T_INTERNAL_LOADING_ERROR nogil +cdef nvmlReturn_t nvmlDeviceGetGpuInstanceId(nvmlDevice_t device, unsigned int* id) except?_NVMLRETURN_T_INTERNAL_LOADING_ERROR nogil +cdef nvmlReturn_t nvmlDeviceGetComputeInstanceId(nvmlDevice_t device, unsigned int* id) except?_NVMLRETURN_T_INTERNAL_LOADING_ERROR nogil +cdef nvmlReturn_t nvmlDeviceGetMaxMigDeviceCount(nvmlDevice_t device, unsigned int* count) except?_NVMLRETURN_T_INTERNAL_LOADING_ERROR nogil +cdef nvmlReturn_t nvmlDeviceGetMigDeviceHandleByIndex(nvmlDevice_t device, unsigned int index, nvmlDevice_t* migDevice) except?_NVMLRETURN_T_INTERNAL_LOADING_ERROR nogil +cdef nvmlReturn_t nvmlDeviceGetDeviceHandleFromMigDeviceHandle(nvmlDevice_t migDevice, nvmlDevice_t* device) except?_NVMLRETURN_T_INTERNAL_LOADING_ERROR nogil +cdef nvmlReturn_t nvmlDeviceGetCapabilities(nvmlDevice_t device, nvmlDeviceCapabilities_t* caps) except?_NVMLRETURN_T_INTERNAL_LOADING_ERROR nogil +cdef nvmlReturn_t nvmlDevicePowerSmoothingActivatePresetProfile(nvmlDevice_t device, nvmlPowerSmoothingProfile_t* profile) except?_NVMLRETURN_T_INTERNAL_LOADING_ERROR nogil +cdef nvmlReturn_t nvmlDevicePowerSmoothingUpdatePresetProfileParam(nvmlDevice_t device, nvmlPowerSmoothingProfile_t* profile) except?_NVMLRETURN_T_INTERNAL_LOADING_ERROR nogil +cdef nvmlReturn_t nvmlDevicePowerSmoothingSetState(nvmlDevice_t device, nvmlPowerSmoothingState_t* state) except?_NVMLRETURN_T_INTERNAL_LOADING_ERROR nogil +cdef nvmlReturn_t nvmlDeviceGetAddressingMode(nvmlDevice_t device, nvmlDeviceAddressingMode_t* mode) except?_NVMLRETURN_T_INTERNAL_LOADING_ERROR nogil +cdef nvmlReturn_t nvmlDeviceGetRepairStatus(nvmlDevice_t device, nvmlRepairStatus_t* repairStatus) except?_NVMLRETURN_T_INTERNAL_LOADING_ERROR nogil +cdef nvmlReturn_t nvmlDeviceGetPowerMizerMode_v1(nvmlDevice_t device, nvmlDevicePowerMizerModes_v1_t* powerMizerMode) except?_NVMLRETURN_T_INTERNAL_LOADING_ERROR nogil +cdef nvmlReturn_t nvmlDeviceSetPowerMizerMode_v1(nvmlDevice_t device, nvmlDevicePowerMizerModes_v1_t* powerMizerMode) except?_NVMLRETURN_T_INTERNAL_LOADING_ERROR nogil +cdef nvmlReturn_t nvmlDeviceGetPdi(nvmlDevice_t device, nvmlPdi_t* pdi) except?_NVMLRETURN_T_INTERNAL_LOADING_ERROR nogil +cdef nvmlReturn_t nvmlDeviceSetHostname_v1(nvmlDevice_t device, nvmlHostname_v1_t* hostname) except?_NVMLRETURN_T_INTERNAL_LOADING_ERROR nogil +cdef nvmlReturn_t nvmlDeviceGetHostname_v1(nvmlDevice_t device, nvmlHostname_v1_t* hostname) except?_NVMLRETURN_T_INTERNAL_LOADING_ERROR nogil +cdef nvmlReturn_t nvmlDeviceGetNvLinkInfo(nvmlDevice_t device, nvmlNvLinkInfo_t* info) except?_NVMLRETURN_T_INTERNAL_LOADING_ERROR nogil +cdef nvmlReturn_t nvmlDeviceReadWritePRM_v1(nvmlDevice_t device, nvmlPRMTLV_v1_t* buffer) except?_NVMLRETURN_T_INTERNAL_LOADING_ERROR nogil +cdef nvmlReturn_t nvmlDeviceGetGpuInstanceProfileInfoByIdV(nvmlDevice_t device, unsigned int profileId, nvmlGpuInstanceProfileInfo_v2_t* info) except?_NVMLRETURN_T_INTERNAL_LOADING_ERROR nogil +cdef nvmlReturn_t nvmlDeviceGetSramUniqueUncorrectedEccErrorCounts(nvmlDevice_t device, nvmlEccSramUniqueUncorrectedErrorCounts_t* errorCounts) except?_NVMLRETURN_T_INTERNAL_LOADING_ERROR nogil +cdef nvmlReturn_t nvmlDeviceGetUnrepairableMemoryFlag_v1(nvmlDevice_t device, nvmlUnrepairableMemoryStatus_v1_t* unrepairableMemoryStatus) except?_NVMLRETURN_T_INTERNAL_LOADING_ERROR nogil +cdef nvmlReturn_t nvmlDeviceReadPRMCounters_v1(nvmlDevice_t device, nvmlPRMCounterList_v1_t* counterList) except?_NVMLRETURN_T_INTERNAL_LOADING_ERROR nogil +cdef nvmlReturn_t nvmlDeviceSetRusdSettings_v1(nvmlDevice_t device, nvmlRusdSettings_v1_t* settings) except?_NVMLRETURN_T_INTERNAL_LOADING_ERROR nogil +cdef nvmlReturn_t nvmlDeviceVgpuForceGspUnload(nvmlDevice_t device) except?_NVMLRETURN_T_INTERNAL_LOADING_ERROR nogil +cdef nvmlReturn_t nvmlDeviceGetVgpuSchedulerState_v2(nvmlDevice_t device, nvmlVgpuSchedulerStateInfo_v2_t* pSchedulerStateInfo) except?_NVMLRETURN_T_INTERNAL_LOADING_ERROR nogil +cdef nvmlReturn_t nvmlGpuInstanceGetVgpuSchedulerState_v2(nvmlGpuInstance_t gpuInstance, nvmlVgpuSchedulerStateInfo_v2_t* pSchedulerStateInfo) except?_NVMLRETURN_T_INTERNAL_LOADING_ERROR nogil +cdef nvmlReturn_t nvmlDeviceGetVgpuSchedulerLog_v2(nvmlDevice_t device, nvmlVgpuSchedulerLogInfo_v2_t* pSchedulerLogInfo) except?_NVMLRETURN_T_INTERNAL_LOADING_ERROR nogil +cdef nvmlReturn_t nvmlGpuInstanceGetVgpuSchedulerLog_v2(nvmlGpuInstance_t gpuInstance, nvmlVgpuSchedulerLogInfo_v2_t* pSchedulerLogInfo) except?_NVMLRETURN_T_INTERNAL_LOADING_ERROR nogil +cdef nvmlReturn_t nvmlDeviceSetVgpuSchedulerState_v2(nvmlDevice_t device, nvmlVgpuSchedulerState_v2_t* pSchedulerState) except?_NVMLRETURN_T_INTERNAL_LOADING_ERROR nogil +cdef nvmlReturn_t nvmlGpuInstanceSetVgpuSchedulerState_v2(nvmlGpuInstance_t gpuInstance, nvmlVgpuSchedulerState_v2_t* pSchedulerState) except?_NVMLRETURN_T_INTERNAL_LOADING_ERROR nogil diff --git a/venv/lib/python3.11/site-packages/cuda/bindings/cynvrtc.cpython-311-x86_64-linux-gnu.so b/venv/lib/python3.11/site-packages/cuda/bindings/cynvrtc.cpython-311-x86_64-linux-gnu.so new file mode 100644 index 0000000000000000000000000000000000000000..caa4bd66eef3c5c3e2c10a7004a87ae0c9a9cc63 Binary files /dev/null and b/venv/lib/python3.11/site-packages/cuda/bindings/cynvrtc.cpython-311-x86_64-linux-gnu.so differ diff --git a/venv/lib/python3.11/site-packages/cuda/bindings/cynvrtc.pxd b/venv/lib/python3.11/site-packages/cuda/bindings/cynvrtc.pxd new file mode 100644 index 0000000000000000000000000000000000000000..9a4476c3ced0f03223544c05d7580b8b5b264f51 --- /dev/null +++ b/venv/lib/python3.11/site-packages/cuda/bindings/cynvrtc.pxd @@ -0,0 +1,108 @@ +# SPDX-FileCopyrightText: Copyright (c) 2021-2026 NVIDIA CORPORATION & AFFILIATES. All rights reserved. +# +# SPDX-License-Identifier: LicenseRef-NVIDIA-SOFTWARE-LICENSE +# +# This code was automatically generated with version 13.3.0, generator version 0.3.1.dev1719+g565f73f4e. Do not modify it directly. + +from libc.stdint cimport uint32_t, uint64_t + +cdef extern from "nvrtc.h": + + ctypedef enum nvrtcResult: + NVRTC_SUCCESS = 0 + NVRTC_ERROR_OUT_OF_MEMORY = 1 + NVRTC_ERROR_PROGRAM_CREATION_FAILURE = 2 + NVRTC_ERROR_INVALID_INPUT = 3 + NVRTC_ERROR_INVALID_PROGRAM = 4 + NVRTC_ERROR_INVALID_OPTION = 5 + NVRTC_ERROR_COMPILATION = 6 + NVRTC_ERROR_BUILTIN_OPERATION_FAILURE = 7 + NVRTC_ERROR_NO_NAME_EXPRESSIONS_AFTER_COMPILATION = 8 + NVRTC_ERROR_NO_LOWERED_NAMES_BEFORE_COMPILATION = 9 + NVRTC_ERROR_NAME_EXPRESSION_NOT_VALID = 10 + NVRTC_ERROR_INTERNAL_ERROR = 11 + NVRTC_ERROR_TIME_FILE_WRITE_FAILED = 12 + NVRTC_ERROR_NO_PCH_CREATE_ATTEMPTED = 13 + NVRTC_ERROR_PCH_CREATE_HEAP_EXHAUSTED = 14 + NVRTC_ERROR_PCH_CREATE = 15 + NVRTC_ERROR_CANCELLED = 16 + NVRTC_ERROR_TIME_TRACE_FILE_WRITE_FAILED = 17 + NVRTC_ERROR_BUSY = 18 + + cdef struct _nvrtcProgram: + pass + ctypedef _nvrtcProgram* nvrtcProgram + + cdef struct anon_struct0: + int available + size_t compressedSize + size_t uncompressedSize + int cudaVersionMajor + int cudaVersionMinor + unsigned int numFiles + + ctypedef anon_struct0 nvrtcBundledHeadersInfo + +cdef const char* nvrtcGetErrorString(nvrtcResult result) except ?NULL nogil + +cdef nvrtcResult nvrtcVersion(int* major, int* minor) except ?NVRTC_ERROR_INVALID_INPUT nogil + +cdef nvrtcResult nvrtcGetNumSupportedArchs(int* numArchs) except ?NVRTC_ERROR_INVALID_INPUT nogil + +cdef nvrtcResult nvrtcGetSupportedArchs(int* supportedArchs) except ?NVRTC_ERROR_INVALID_INPUT nogil + +cdef nvrtcResult nvrtcCreateProgram(nvrtcProgram* prog, const char* src, const char* name, int numHeaders, const char** headers, const char** includeNames) except ?NVRTC_ERROR_INVALID_INPUT nogil + +cdef nvrtcResult nvrtcDestroyProgram(nvrtcProgram* prog) except ?NVRTC_ERROR_INVALID_INPUT nogil + +cdef nvrtcResult nvrtcCompileProgram(nvrtcProgram prog, int numOptions, const char** options) except ?NVRTC_ERROR_INVALID_INPUT nogil + +cdef nvrtcResult nvrtcGetPTXSize(nvrtcProgram prog, size_t* ptxSizeRet) except ?NVRTC_ERROR_INVALID_INPUT nogil + +cdef nvrtcResult nvrtcGetPTX(nvrtcProgram prog, char* ptx) except ?NVRTC_ERROR_INVALID_INPUT nogil + +cdef nvrtcResult nvrtcGetCUBINSize(nvrtcProgram prog, size_t* cubinSizeRet) except ?NVRTC_ERROR_INVALID_INPUT nogil + +cdef nvrtcResult nvrtcGetCUBIN(nvrtcProgram prog, char* cubin) except ?NVRTC_ERROR_INVALID_INPUT nogil + +cdef nvrtcResult nvrtcGetLTOIRSize(nvrtcProgram prog, size_t* LTOIRSizeRet) except ?NVRTC_ERROR_INVALID_INPUT nogil + +cdef nvrtcResult nvrtcGetLTOIR(nvrtcProgram prog, char* LTOIR) except ?NVRTC_ERROR_INVALID_INPUT nogil + +cdef nvrtcResult nvrtcGetOptiXIRSize(nvrtcProgram prog, size_t* optixirSizeRet) except ?NVRTC_ERROR_INVALID_INPUT nogil + +cdef nvrtcResult nvrtcGetOptiXIR(nvrtcProgram prog, char* optixir) except ?NVRTC_ERROR_INVALID_INPUT nogil + +cdef nvrtcResult nvrtcGetProgramLogSize(nvrtcProgram prog, size_t* logSizeRet) except ?NVRTC_ERROR_INVALID_INPUT nogil + +cdef nvrtcResult nvrtcGetProgramLog(nvrtcProgram prog, char* log) except ?NVRTC_ERROR_INVALID_INPUT nogil + +cdef nvrtcResult nvrtcAddNameExpression(nvrtcProgram prog, const char* name_expression) except ?NVRTC_ERROR_INVALID_INPUT nogil + +cdef nvrtcResult nvrtcGetLoweredName(nvrtcProgram prog, const char* name_expression, const char** lowered_name) except ?NVRTC_ERROR_INVALID_INPUT nogil + +cdef nvrtcResult nvrtcGetPCHHeapSize(size_t* ret) except ?NVRTC_ERROR_INVALID_INPUT nogil + +cdef nvrtcResult nvrtcSetPCHHeapSize(size_t size) except ?NVRTC_ERROR_INVALID_INPUT nogil + +cdef nvrtcResult nvrtcGetPCHCreateStatus(nvrtcProgram prog) except ?NVRTC_ERROR_INVALID_INPUT nogil + +cdef nvrtcResult nvrtcGetPCHHeapSizeRequired(nvrtcProgram prog, size_t* size) except ?NVRTC_ERROR_INVALID_INPUT nogil + +cdef nvrtcResult nvrtcSetFlowCallback(nvrtcProgram prog, void* callback, void* payload) except ?NVRTC_ERROR_INVALID_INPUT nogil + +cdef nvrtcResult nvrtcGetTileIRSize(nvrtcProgram prog, size_t* TileIRSizeRet) except ?NVRTC_ERROR_INVALID_INPUT nogil + +cdef nvrtcResult nvrtcGetTileIR(nvrtcProgram prog, char* TileIR) except ?NVRTC_ERROR_INVALID_INPUT nogil + +cdef nvrtcResult nvrtcInstallBundledHeaders(const char* installPath, unsigned int flags, const char** errorLog) except ?NVRTC_ERROR_INVALID_INPUT nogil + +cdef nvrtcResult nvrtcGetBundledHeadersInfo(nvrtcBundledHeadersInfo* info, const char** errorLog) except ?NVRTC_ERROR_INVALID_INPUT nogil + +cdef nvrtcResult nvrtcRemoveBundledHeaders(const char* installPath, const char** errorLog) except ?NVRTC_ERROR_INVALID_INPUT nogil + +cdef enum: NVRTC_INSTALL_HEADERS_SKIP_IF_EXISTS = 0 + +cdef enum: NVRTC_INSTALL_HEADERS_FORCE_OVERWRITE = 1 + +cdef enum: NVRTC_INSTALL_HEADERS_NO_WAIT = 2 diff --git a/venv/lib/python3.11/site-packages/cuda/bindings/cynvvm.cpython-311-x86_64-linux-gnu.so b/venv/lib/python3.11/site-packages/cuda/bindings/cynvvm.cpython-311-x86_64-linux-gnu.so new file mode 100644 index 0000000000000000000000000000000000000000..4d0927ab89797a7e9d5ae54d4782a40d66a59d6e Binary files /dev/null and b/venv/lib/python3.11/site-packages/cuda/bindings/cynvvm.cpython-311-x86_64-linux-gnu.so differ diff --git a/venv/lib/python3.11/site-packages/cuda/bindings/cynvvm.pxd b/venv/lib/python3.11/site-packages/cuda/bindings/cynvvm.pxd new file mode 100644 index 0000000000000000000000000000000000000000..d9d5baf229f597b212c00e5a39a150851f411e2b --- /dev/null +++ b/venv/lib/python3.11/site-packages/cuda/bindings/cynvvm.pxd @@ -0,0 +1,49 @@ +# SPDX-FileCopyrightText: Copyright (c) 2025-2026 NVIDIA CORPORATION & AFFILIATES. All rights reserved. +# +# SPDX-License-Identifier: LicenseRef-NVIDIA-SOFTWARE-LICENSE +# +# This code was automatically generated across versions from 12.0.1 to 13.2.0, generator version 0.3.1.dev1422+gf4812259e.d20260318. Do not modify it directly. + + +############################################################################### +# Types (structs, enums, ...) +############################################################################### + +# enums +ctypedef enum nvvmResult "nvvmResult": + NVVM_SUCCESS "NVVM_SUCCESS" = 0 + NVVM_ERROR_OUT_OF_MEMORY "NVVM_ERROR_OUT_OF_MEMORY" = 1 + NVVM_ERROR_PROGRAM_CREATION_FAILURE "NVVM_ERROR_PROGRAM_CREATION_FAILURE" = 2 + NVVM_ERROR_IR_VERSION_MISMATCH "NVVM_ERROR_IR_VERSION_MISMATCH" = 3 + NVVM_ERROR_INVALID_INPUT "NVVM_ERROR_INVALID_INPUT" = 4 + NVVM_ERROR_INVALID_PROGRAM "NVVM_ERROR_INVALID_PROGRAM" = 5 + NVVM_ERROR_INVALID_IR "NVVM_ERROR_INVALID_IR" = 6 + NVVM_ERROR_INVALID_OPTION "NVVM_ERROR_INVALID_OPTION" = 7 + NVVM_ERROR_NO_MODULE_IN_PROGRAM "NVVM_ERROR_NO_MODULE_IN_PROGRAM" = 8 + NVVM_ERROR_COMPILATION "NVVM_ERROR_COMPILATION" = 9 + NVVM_ERROR_CANCELLED "NVVM_ERROR_CANCELLED" = 10 + _NVVMRESULT_INTERNAL_LOADING_ERROR "_NVVMRESULT_INTERNAL_LOADING_ERROR" = -42 + + +# types +ctypedef void* nvvmProgram 'nvvmProgram' + + +############################################################################### +# Functions +############################################################################### + +cdef const char* nvvmGetErrorString(nvvmResult result) except?NULL nogil +cdef nvvmResult nvvmVersion(int* major, int* minor) except?_NVVMRESULT_INTERNAL_LOADING_ERROR nogil +cdef nvvmResult nvvmIRVersion(int* majorIR, int* minorIR, int* majorDbg, int* minorDbg) except?_NVVMRESULT_INTERNAL_LOADING_ERROR nogil +cdef nvvmResult nvvmCreateProgram(nvvmProgram* prog) except?_NVVMRESULT_INTERNAL_LOADING_ERROR nogil +cdef nvvmResult nvvmDestroyProgram(nvvmProgram* prog) except?_NVVMRESULT_INTERNAL_LOADING_ERROR nogil +cdef nvvmResult nvvmAddModuleToProgram(nvvmProgram prog, const char* buffer, size_t size, const char* name) except?_NVVMRESULT_INTERNAL_LOADING_ERROR nogil +cdef nvvmResult nvvmLazyAddModuleToProgram(nvvmProgram prog, const char* buffer, size_t size, const char* name) except?_NVVMRESULT_INTERNAL_LOADING_ERROR nogil +cdef nvvmResult nvvmCompileProgram(nvvmProgram prog, int numOptions, const char** options) except?_NVVMRESULT_INTERNAL_LOADING_ERROR nogil +cdef nvvmResult nvvmVerifyProgram(nvvmProgram prog, int numOptions, const char** options) except?_NVVMRESULT_INTERNAL_LOADING_ERROR nogil +cdef nvvmResult nvvmGetCompiledResultSize(nvvmProgram prog, size_t* bufferSizeRet) except?_NVVMRESULT_INTERNAL_LOADING_ERROR nogil +cdef nvvmResult nvvmGetCompiledResult(nvvmProgram prog, char* buffer) except?_NVVMRESULT_INTERNAL_LOADING_ERROR nogil +cdef nvvmResult nvvmGetProgramLogSize(nvvmProgram prog, size_t* bufferSizeRet) except?_NVVMRESULT_INTERNAL_LOADING_ERROR nogil +cdef nvvmResult nvvmGetProgramLog(nvvmProgram prog, char* buffer) except?_NVVMRESULT_INTERNAL_LOADING_ERROR nogil +cdef nvvmResult nvvmLLVMVersion(const char* arch, int* major) except?_NVVMRESULT_INTERNAL_LOADING_ERROR nogil diff --git a/venv/lib/python3.11/site-packages/cuda/bindings/cyruntime.cpython-311-x86_64-linux-gnu.so b/venv/lib/python3.11/site-packages/cuda/bindings/cyruntime.cpython-311-x86_64-linux-gnu.so new file mode 100644 index 0000000000000000000000000000000000000000..37afec5051364dcdc871c48249749644c89fdcc1 --- /dev/null +++ b/venv/lib/python3.11/site-packages/cuda/bindings/cyruntime.cpython-311-x86_64-linux-gnu.so @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:407453bba9e30154dd114086129f70e547d0ed8d65f1e445216c2451773efdd8 +size 123232 diff --git a/venv/lib/python3.11/site-packages/cuda/bindings/cyruntime.pxd b/venv/lib/python3.11/site-packages/cuda/bindings/cyruntime.pxd new file mode 100644 index 0000000000000000000000000000000000000000..90793df8752719dc26d026519430c667d6303fb9 --- /dev/null +++ b/venv/lib/python3.11/site-packages/cuda/bindings/cyruntime.pxd @@ -0,0 +1,1071 @@ +# SPDX-FileCopyrightText: Copyright (c) 2021-2026 NVIDIA CORPORATION & AFFILIATES. All rights reserved. +# SPDX-License-Identifier: LicenseRef-NVIDIA-SOFTWARE-LICENSE + +# This code was automatically generated with version 13.3.0, generator version 0.3.1.dev1719+g565f73f4e. Do not modify it directly. + +from libc.stdint cimport uint32_t, uint64_t + +include "cyruntime_types.pxi" + +ctypedef unsigned int GLenum + +ctypedef unsigned int GLuint + +cdef extern from "": + cdef struct void: + pass +ctypedef void* EGLImageKHR + +cdef extern from "": + cdef struct void: + pass +ctypedef void* EGLStreamKHR + +ctypedef unsigned int EGLint + +cdef extern from "": + cdef struct void: + pass +ctypedef void* EGLSyncKHR + +ctypedef uint32_t VdpDevice + +ctypedef unsigned long long VdpGetProcAddress + +ctypedef uint32_t VdpVideoSurface + +ctypedef uint32_t VdpOutputSurface + +cdef enum cudaEglFrameType_enum: + cudaEglFrameTypeArray = 0 + cudaEglFrameTypePitch = 1 + +ctypedef cudaEglFrameType_enum cudaEglFrameType + +cdef enum cudaEglResourceLocationFlags_enum: + cudaEglResourceLocationSysmem = 0 + cudaEglResourceLocationVidmem = 1 + +ctypedef cudaEglResourceLocationFlags_enum cudaEglResourceLocationFlags + +cdef enum cudaEglColorFormat_enum: + cudaEglColorFormatYUV420Planar = 0 + cudaEglColorFormatYUV420SemiPlanar = 1 + cudaEglColorFormatYUV422Planar = 2 + cudaEglColorFormatYUV422SemiPlanar = 3 + cudaEglColorFormatARGB = 6 + cudaEglColorFormatRGBA = 7 + cudaEglColorFormatL = 8 + cudaEglColorFormatR = 9 + cudaEglColorFormatYUV444Planar = 10 + cudaEglColorFormatYUV444SemiPlanar = 11 + cudaEglColorFormatYUYV422 = 12 + cudaEglColorFormatUYVY422 = 13 + cudaEglColorFormatABGR = 14 + cudaEglColorFormatBGRA = 15 + cudaEglColorFormatA = 16 + cudaEglColorFormatRG = 17 + cudaEglColorFormatAYUV = 18 + cudaEglColorFormatYVU444SemiPlanar = 19 + cudaEglColorFormatYVU422SemiPlanar = 20 + cudaEglColorFormatYVU420SemiPlanar = 21 + cudaEglColorFormatY10V10U10_444SemiPlanar = 22 + cudaEglColorFormatY10V10U10_420SemiPlanar = 23 + cudaEglColorFormatY12V12U12_444SemiPlanar = 24 + cudaEglColorFormatY12V12U12_420SemiPlanar = 25 + cudaEglColorFormatVYUY_ER = 26 + cudaEglColorFormatUYVY_ER = 27 + cudaEglColorFormatYUYV_ER = 28 + cudaEglColorFormatYVYU_ER = 29 + cudaEglColorFormatYUVA_ER = 31 + cudaEglColorFormatAYUV_ER = 32 + cudaEglColorFormatYUV444Planar_ER = 33 + cudaEglColorFormatYUV422Planar_ER = 34 + cudaEglColorFormatYUV420Planar_ER = 35 + cudaEglColorFormatYUV444SemiPlanar_ER = 36 + cudaEglColorFormatYUV422SemiPlanar_ER = 37 + cudaEglColorFormatYUV420SemiPlanar_ER = 38 + cudaEglColorFormatYVU444Planar_ER = 39 + cudaEglColorFormatYVU422Planar_ER = 40 + cudaEglColorFormatYVU420Planar_ER = 41 + cudaEglColorFormatYVU444SemiPlanar_ER = 42 + cudaEglColorFormatYVU422SemiPlanar_ER = 43 + cudaEglColorFormatYVU420SemiPlanar_ER = 44 + cudaEglColorFormatBayerRGGB = 45 + cudaEglColorFormatBayerBGGR = 46 + cudaEglColorFormatBayerGRBG = 47 + cudaEglColorFormatBayerGBRG = 48 + cudaEglColorFormatBayer10RGGB = 49 + cudaEglColorFormatBayer10BGGR = 50 + cudaEglColorFormatBayer10GRBG = 51 + cudaEglColorFormatBayer10GBRG = 52 + cudaEglColorFormatBayer12RGGB = 53 + cudaEglColorFormatBayer12BGGR = 54 + cudaEglColorFormatBayer12GRBG = 55 + cudaEglColorFormatBayer12GBRG = 56 + cudaEglColorFormatBayer14RGGB = 57 + cudaEglColorFormatBayer14BGGR = 58 + cudaEglColorFormatBayer14GRBG = 59 + cudaEglColorFormatBayer14GBRG = 60 + cudaEglColorFormatBayer20RGGB = 61 + cudaEglColorFormatBayer20BGGR = 62 + cudaEglColorFormatBayer20GRBG = 63 + cudaEglColorFormatBayer20GBRG = 64 + cudaEglColorFormatYVU444Planar = 65 + cudaEglColorFormatYVU422Planar = 66 + cudaEglColorFormatYVU420Planar = 67 + cudaEglColorFormatBayerIspRGGB = 68 + cudaEglColorFormatBayerIspBGGR = 69 + cudaEglColorFormatBayerIspGRBG = 70 + cudaEglColorFormatBayerIspGBRG = 71 + cudaEglColorFormatBayerBCCR = 72 + cudaEglColorFormatBayerRCCB = 73 + cudaEglColorFormatBayerCRBC = 74 + cudaEglColorFormatBayerCBRC = 75 + cudaEglColorFormatBayer10CCCC = 76 + cudaEglColorFormatBayer12BCCR = 77 + cudaEglColorFormatBayer12RCCB = 78 + cudaEglColorFormatBayer12CRBC = 79 + cudaEglColorFormatBayer12CBRC = 80 + cudaEglColorFormatBayer12CCCC = 81 + cudaEglColorFormatY = 82 + cudaEglColorFormatYUV420SemiPlanar_2020 = 83 + cudaEglColorFormatYVU420SemiPlanar_2020 = 84 + cudaEglColorFormatYUV420Planar_2020 = 85 + cudaEglColorFormatYVU420Planar_2020 = 86 + cudaEglColorFormatYUV420SemiPlanar_709 = 87 + cudaEglColorFormatYVU420SemiPlanar_709 = 88 + cudaEglColorFormatYUV420Planar_709 = 89 + cudaEglColorFormatYVU420Planar_709 = 90 + cudaEglColorFormatY10V10U10_420SemiPlanar_709 = 91 + cudaEglColorFormatY10V10U10_420SemiPlanar_2020 = 92 + cudaEglColorFormatY10V10U10_422SemiPlanar_2020 = 93 + cudaEglColorFormatY10V10U10_422SemiPlanar = 94 + cudaEglColorFormatY10V10U10_422SemiPlanar_709 = 95 + cudaEglColorFormatY_ER = 96 + cudaEglColorFormatY_709_ER = 97 + cudaEglColorFormatY10_ER = 98 + cudaEglColorFormatY10_709_ER = 99 + cudaEglColorFormatY12_ER = 100 + cudaEglColorFormatY12_709_ER = 101 + cudaEglColorFormatYUVA = 102 + cudaEglColorFormatYVYU = 104 + cudaEglColorFormatVYUY = 105 + cudaEglColorFormatY10V10U10_420SemiPlanar_ER = 106 + cudaEglColorFormatY10V10U10_420SemiPlanar_709_ER = 107 + cudaEglColorFormatY10V10U10_444SemiPlanar_ER = 108 + cudaEglColorFormatY10V10U10_444SemiPlanar_709_ER = 109 + cudaEglColorFormatY12V12U12_420SemiPlanar_ER = 110 + cudaEglColorFormatY12V12U12_420SemiPlanar_709_ER = 111 + cudaEglColorFormatY12V12U12_444SemiPlanar_ER = 112 + cudaEglColorFormatY12V12U12_444SemiPlanar_709_ER = 113 + cudaEglColorFormatUYVY709 = 114 + cudaEglColorFormatUYVY709_ER = 115 + cudaEglColorFormatUYVY2020 = 116 + +ctypedef cudaEglColorFormat_enum cudaEglColorFormat + +cdef struct cudaEglPlaneDesc_st: + unsigned int width + unsigned int height + unsigned int depth + unsigned int pitch + unsigned int numChannels + cudaChannelFormatDesc channelDesc + unsigned int reserved[4] + +ctypedef cudaEglPlaneDesc_st cudaEglPlaneDesc + +cdef union anon_union12: + cudaArray_t pArray[3] + cudaPitchedPtr pPitch[3] + +cdef struct cudaEglFrame_st: + anon_union12 frame + cudaEglPlaneDesc planeDesc[3] + unsigned int planeCount + cudaEglFrameType frameType + cudaEglColorFormat eglColorFormat + +ctypedef cudaEglFrame_st cudaEglFrame + +cdef extern from "": + cdef struct CUeglStreamConnection_st: + pass +ctypedef CUeglStreamConnection_st* cudaEglStreamConnection + +cdef enum cudaGLDeviceList: + cudaGLDeviceListAll = 1 + cudaGLDeviceListCurrentFrame = 2 + cudaGLDeviceListNextFrame = 3 + +cdef enum cudaGLMapFlags: + cudaGLMapFlagsNone = 0 + cudaGLMapFlagsReadOnly = 1 + cudaGLMapFlagsWriteDiscard = 2 + +cdef cudaError_t cudaDeviceReset() except ?cudaErrorCallRequiresNewerDriver nogil + +cdef cudaError_t cudaDeviceSynchronize() except ?cudaErrorCallRequiresNewerDriver nogil + +cdef cudaError_t cudaDeviceSetLimit(cudaLimit limit, size_t value) except ?cudaErrorCallRequiresNewerDriver nogil + +cdef cudaError_t cudaDeviceGetLimit(size_t* pValue, cudaLimit limit) except ?cudaErrorCallRequiresNewerDriver nogil + +cdef cudaError_t cudaDeviceGetTexture1DLinearMaxWidth(size_t* maxWidthInElements, const cudaChannelFormatDesc* fmtDesc, int device) except ?cudaErrorCallRequiresNewerDriver nogil + +cdef cudaError_t cudaDeviceGetCacheConfig(cudaFuncCache* pCacheConfig) except ?cudaErrorCallRequiresNewerDriver nogil + +cdef cudaError_t cudaDeviceGetStreamPriorityRange(int* leastPriority, int* greatestPriority) except ?cudaErrorCallRequiresNewerDriver nogil + +cdef cudaError_t cudaDeviceSetCacheConfig(cudaFuncCache cacheConfig) except ?cudaErrorCallRequiresNewerDriver nogil + +cdef cudaError_t cudaDeviceGetByPCIBusId(int* device, const char* pciBusId) except ?cudaErrorCallRequiresNewerDriver nogil + +cdef cudaError_t cudaDeviceGetPCIBusId(char* pciBusId, int length, int device) except ?cudaErrorCallRequiresNewerDriver nogil + +cdef cudaError_t cudaIpcGetEventHandle(cudaIpcEventHandle_t* handle, cudaEvent_t event) except ?cudaErrorCallRequiresNewerDriver nogil + +cdef cudaError_t cudaIpcOpenEventHandle(cudaEvent_t* event, cudaIpcEventHandle_t handle) except ?cudaErrorCallRequiresNewerDriver nogil + +cdef cudaError_t cudaIpcGetMemHandle(cudaIpcMemHandle_t* handle, void* devPtr) except ?cudaErrorCallRequiresNewerDriver nogil + +cdef cudaError_t cudaIpcOpenMemHandle(void** devPtr, cudaIpcMemHandle_t handle, unsigned int flags) except ?cudaErrorCallRequiresNewerDriver nogil + +cdef cudaError_t cudaIpcCloseMemHandle(void* devPtr) except ?cudaErrorCallRequiresNewerDriver nogil + +cdef cudaError_t cudaDeviceFlushGPUDirectRDMAWrites(cudaFlushGPUDirectRDMAWritesTarget target, cudaFlushGPUDirectRDMAWritesScope scope) except ?cudaErrorCallRequiresNewerDriver nogil + +cdef cudaError_t cudaDeviceRegisterAsyncNotification(int device, cudaAsyncCallback callbackFunc, void* userData, cudaAsyncCallbackHandle_t* callback) except ?cudaErrorCallRequiresNewerDriver nogil + +cdef cudaError_t cudaDeviceUnregisterAsyncNotification(int device, cudaAsyncCallbackHandle_t callback) except ?cudaErrorCallRequiresNewerDriver nogil + +cdef cudaError_t cudaDeviceGetSharedMemConfig(cudaSharedMemConfig* pConfig) except ?cudaErrorCallRequiresNewerDriver nogil + +cdef cudaError_t cudaDeviceSetSharedMemConfig(cudaSharedMemConfig config) except ?cudaErrorCallRequiresNewerDriver nogil + +cdef cudaError_t cudaGetLastError() except ?cudaErrorCallRequiresNewerDriver nogil + +cdef cudaError_t cudaPeekAtLastError() except ?cudaErrorCallRequiresNewerDriver nogil + +cdef const char* cudaGetErrorName(cudaError_t error) except ?NULL nogil + +cdef const char* cudaGetErrorString(cudaError_t error) except ?NULL nogil + +cdef cudaError_t cudaGetDeviceCount(int* count) except ?cudaErrorCallRequiresNewerDriver nogil + +cdef cudaError_t cudaGetDeviceProperties(cudaDeviceProp* prop, int device) except ?cudaErrorCallRequiresNewerDriver nogil + +cdef cudaError_t cudaDeviceGetAttribute(int* value, cudaDeviceAttr attr, int device) except ?cudaErrorCallRequiresNewerDriver nogil + +cdef cudaError_t cudaDeviceGetHostAtomicCapabilities(unsigned int* capabilities, const cudaAtomicOperation* operations, unsigned int count, int device) except ?cudaErrorCallRequiresNewerDriver nogil + +cdef cudaError_t cudaDeviceGetDefaultMemPool(cudaMemPool_t* memPool, int device) except ?cudaErrorCallRequiresNewerDriver nogil + +cdef cudaError_t cudaDeviceSetMemPool(int device, cudaMemPool_t memPool) except ?cudaErrorCallRequiresNewerDriver nogil + +cdef cudaError_t cudaDeviceGetMemPool(cudaMemPool_t* memPool, int device) except ?cudaErrorCallRequiresNewerDriver nogil + +cdef cudaError_t cudaDeviceGetNvSciSyncAttributes(void* nvSciSyncAttrList, int device, int flags) except ?cudaErrorCallRequiresNewerDriver nogil + +cdef cudaError_t cudaDeviceGetP2PAttribute(int* value, cudaDeviceP2PAttr attr, int srcDevice, int dstDevice) except ?cudaErrorCallRequiresNewerDriver nogil + +cdef cudaError_t cudaDeviceGetP2PAtomicCapabilities(unsigned int* capabilities, const cudaAtomicOperation* operations, unsigned int count, int srcDevice, int dstDevice) except ?cudaErrorCallRequiresNewerDriver nogil + +cdef cudaError_t cudaChooseDevice(int* device, const cudaDeviceProp* prop) except ?cudaErrorCallRequiresNewerDriver nogil + +cdef cudaError_t cudaInitDevice(int device, unsigned int deviceFlags, unsigned int flags) except ?cudaErrorCallRequiresNewerDriver nogil + +cdef cudaError_t cudaSetDevice(int device) except ?cudaErrorCallRequiresNewerDriver nogil + +cdef cudaError_t cudaGetDevice(int* device) except ?cudaErrorCallRequiresNewerDriver nogil + +cdef cudaError_t cudaSetDeviceFlags(unsigned int flags) except ?cudaErrorCallRequiresNewerDriver nogil + +cdef cudaError_t cudaGetDeviceFlags(unsigned int* flags) except ?cudaErrorCallRequiresNewerDriver nogil + +cdef cudaError_t cudaStreamCreate(cudaStream_t* pStream) except ?cudaErrorCallRequiresNewerDriver nogil + +cdef cudaError_t cudaStreamCreateWithFlags(cudaStream_t* pStream, unsigned int flags) except ?cudaErrorCallRequiresNewerDriver nogil + +cdef cudaError_t cudaStreamCreateWithPriority(cudaStream_t* pStream, unsigned int flags, int priority) except ?cudaErrorCallRequiresNewerDriver nogil + +cdef cudaError_t cudaStreamGetPriority(cudaStream_t hStream, int* priority) except ?cudaErrorCallRequiresNewerDriver nogil + +cdef cudaError_t cudaStreamGetFlags(cudaStream_t hStream, unsigned int* flags) except ?cudaErrorCallRequiresNewerDriver nogil + +cdef cudaError_t cudaStreamGetId(cudaStream_t hStream, unsigned long long* streamId) except ?cudaErrorCallRequiresNewerDriver nogil + +cdef cudaError_t cudaStreamGetDevice(cudaStream_t hStream, int* device) except ?cudaErrorCallRequiresNewerDriver nogil + +cdef cudaError_t cudaCtxResetPersistingL2Cache() except ?cudaErrorCallRequiresNewerDriver nogil + +cdef cudaError_t cudaStreamCopyAttributes(cudaStream_t dst, cudaStream_t src) except ?cudaErrorCallRequiresNewerDriver nogil + +cdef cudaError_t cudaStreamGetAttribute(cudaStream_t hStream, cudaStreamAttrID attr, cudaStreamAttrValue* value_out) except ?cudaErrorCallRequiresNewerDriver nogil + +cdef cudaError_t cudaStreamSetAttribute(cudaStream_t hStream, cudaStreamAttrID attr, const cudaStreamAttrValue* value) except ?cudaErrorCallRequiresNewerDriver nogil + +cdef cudaError_t cudaStreamDestroy(cudaStream_t stream) except ?cudaErrorCallRequiresNewerDriver nogil + +cdef cudaError_t cudaStreamWaitEvent(cudaStream_t stream, cudaEvent_t event, unsigned int flags) except ?cudaErrorCallRequiresNewerDriver nogil + +cdef cudaError_t cudaStreamAddCallback(cudaStream_t stream, cudaStreamCallback_t callback, void* userData, unsigned int flags) except ?cudaErrorCallRequiresNewerDriver nogil + +cdef cudaError_t cudaStreamSynchronize(cudaStream_t stream) except ?cudaErrorCallRequiresNewerDriver nogil + +cdef cudaError_t cudaStreamQuery(cudaStream_t stream) except ?cudaErrorCallRequiresNewerDriver nogil + +cdef cudaError_t cudaStreamAttachMemAsync(cudaStream_t stream, void* devPtr, size_t length, unsigned int flags) except ?cudaErrorCallRequiresNewerDriver nogil + +cdef cudaError_t cudaStreamBeginCapture(cudaStream_t stream, cudaStreamCaptureMode mode) except ?cudaErrorCallRequiresNewerDriver nogil + +cdef cudaError_t cudaStreamBeginRecaptureToGraph(cudaStream_t stream, cudaStreamCaptureMode mode, cudaGraph_t graph, cudaGraphRecaptureCallbackData* callbackData) except ?cudaErrorCallRequiresNewerDriver nogil + +cdef cudaError_t cudaStreamBeginCaptureToGraph(cudaStream_t stream, cudaGraph_t graph, const cudaGraphNode_t* dependencies, const cudaGraphEdgeData* dependencyData, size_t numDependencies, cudaStreamCaptureMode mode) except ?cudaErrorCallRequiresNewerDriver nogil + +cdef cudaError_t cudaThreadExchangeStreamCaptureMode(cudaStreamCaptureMode* mode) except ?cudaErrorCallRequiresNewerDriver nogil + +cdef cudaError_t cudaStreamEndCapture(cudaStream_t stream, cudaGraph_t* pGraph) except ?cudaErrorCallRequiresNewerDriver nogil + +cdef cudaError_t cudaStreamIsCapturing(cudaStream_t stream, cudaStreamCaptureStatus* pCaptureStatus) except ?cudaErrorCallRequiresNewerDriver nogil + +cdef cudaError_t cudaStreamGetCaptureInfo(cudaStream_t stream, cudaStreamCaptureStatus* captureStatus_out, unsigned long long* id_out, cudaGraph_t* graph_out, const cudaGraphNode_t** dependencies_out, const cudaGraphEdgeData** edgeData_out, size_t* numDependencies_out) except ?cudaErrorCallRequiresNewerDriver nogil + +cdef cudaError_t cudaStreamUpdateCaptureDependencies(cudaStream_t stream, cudaGraphNode_t* dependencies, const cudaGraphEdgeData* dependencyData, size_t numDependencies, unsigned int flags) except ?cudaErrorCallRequiresNewerDriver nogil + +cdef cudaError_t cudaEventCreate(cudaEvent_t* event) except ?cudaErrorCallRequiresNewerDriver nogil + +cdef cudaError_t cudaEventCreateWithFlags(cudaEvent_t* event, unsigned int flags) except ?cudaErrorCallRequiresNewerDriver nogil + +cdef cudaError_t cudaEventRecord(cudaEvent_t event, cudaStream_t stream) except ?cudaErrorCallRequiresNewerDriver nogil + +cdef cudaError_t cudaEventRecordWithFlags(cudaEvent_t event, cudaStream_t stream, unsigned int flags) except ?cudaErrorCallRequiresNewerDriver nogil + +cdef cudaError_t cudaEventQuery(cudaEvent_t event) except ?cudaErrorCallRequiresNewerDriver nogil + +cdef cudaError_t cudaEventSynchronize(cudaEvent_t event) except ?cudaErrorCallRequiresNewerDriver nogil + +cdef cudaError_t cudaEventDestroy(cudaEvent_t event) except ?cudaErrorCallRequiresNewerDriver nogil + +cdef cudaError_t cudaEventElapsedTime(float* ms, cudaEvent_t start, cudaEvent_t end) except ?cudaErrorCallRequiresNewerDriver nogil + +cdef cudaError_t cudaImportExternalMemory(cudaExternalMemory_t* extMem_out, const cudaExternalMemoryHandleDesc* memHandleDesc) except ?cudaErrorCallRequiresNewerDriver nogil + +cdef cudaError_t cudaExternalMemoryGetMappedBuffer(void** devPtr, cudaExternalMemory_t extMem, const cudaExternalMemoryBufferDesc* bufferDesc) except ?cudaErrorCallRequiresNewerDriver nogil + +cdef cudaError_t cudaExternalMemoryGetMappedMipmappedArray(cudaMipmappedArray_t* mipmap, cudaExternalMemory_t extMem, const cudaExternalMemoryMipmappedArrayDesc* mipmapDesc) except ?cudaErrorCallRequiresNewerDriver nogil + +cdef cudaError_t cudaDestroyExternalMemory(cudaExternalMemory_t extMem) except ?cudaErrorCallRequiresNewerDriver nogil + +cdef cudaError_t cudaImportExternalSemaphore(cudaExternalSemaphore_t* extSem_out, const cudaExternalSemaphoreHandleDesc* semHandleDesc) except ?cudaErrorCallRequiresNewerDriver nogil + +cdef cudaError_t cudaSignalExternalSemaphoresAsync(const cudaExternalSemaphore_t* extSemArray, const cudaExternalSemaphoreSignalParams* paramsArray, unsigned int numExtSems, cudaStream_t stream) except ?cudaErrorCallRequiresNewerDriver nogil + +cdef cudaError_t cudaWaitExternalSemaphoresAsync(const cudaExternalSemaphore_t* extSemArray, const cudaExternalSemaphoreWaitParams* paramsArray, unsigned int numExtSems, cudaStream_t stream) except ?cudaErrorCallRequiresNewerDriver nogil + +cdef cudaError_t cudaDestroyExternalSemaphore(cudaExternalSemaphore_t extSem) except ?cudaErrorCallRequiresNewerDriver nogil + +cdef cudaError_t cudaFuncSetCacheConfig(const void* func, cudaFuncCache cacheConfig) except ?cudaErrorCallRequiresNewerDriver nogil + +cdef cudaError_t cudaFuncGetAttributes(cudaFuncAttributes* attr, const void* func) except ?cudaErrorCallRequiresNewerDriver nogil + +cdef cudaError_t cudaFuncSetAttribute(const void* func, cudaFuncAttribute attr, int value) except ?cudaErrorCallRequiresNewerDriver nogil + +cdef cudaError_t cudaFuncGetParamCount(const void* func, size_t* paramCount) except ?cudaErrorCallRequiresNewerDriver nogil + +cdef cudaError_t cudaLaunchHostFunc(cudaStream_t stream, cudaHostFn_t fn, void* userData) except ?cudaErrorCallRequiresNewerDriver nogil + +cdef cudaError_t cudaLaunchHostFunc_v2(cudaStream_t stream, cudaHostFn_t fn, void* userData, unsigned int syncMode) except ?cudaErrorCallRequiresNewerDriver nogil + +cdef cudaError_t cudaFuncSetSharedMemConfig(const void* func, cudaSharedMemConfig config) except ?cudaErrorCallRequiresNewerDriver nogil + +cdef cudaError_t cudaOccupancyMaxActiveBlocksPerMultiprocessor(int* numBlocks, const void* func, int blockSize, size_t dynamicSMemSize) except ?cudaErrorCallRequiresNewerDriver nogil + +cdef cudaError_t cudaOccupancyAvailableDynamicSMemPerBlock(size_t* dynamicSmemSize, const void* func, int numBlocks, int blockSize) except ?cudaErrorCallRequiresNewerDriver nogil + +cdef cudaError_t cudaOccupancyMaxActiveBlocksPerMultiprocessorWithFlags(int* numBlocks, const void* func, int blockSize, size_t dynamicSMemSize, unsigned int flags) except ?cudaErrorCallRequiresNewerDriver nogil + +cdef cudaError_t cudaMallocManaged(void** devPtr, size_t size, unsigned int flags) except ?cudaErrorCallRequiresNewerDriver nogil + +cdef cudaError_t cudaMalloc(void** devPtr, size_t size) except ?cudaErrorCallRequiresNewerDriver nogil + +cdef cudaError_t cudaMallocHost(void** ptr, size_t size) except ?cudaErrorCallRequiresNewerDriver nogil + +cdef cudaError_t cudaMallocPitch(void** devPtr, size_t* pitch, size_t width, size_t height) except ?cudaErrorCallRequiresNewerDriver nogil + +cdef cudaError_t cudaMallocArray(cudaArray_t* array, const cudaChannelFormatDesc* desc, size_t width, size_t height, unsigned int flags) except ?cudaErrorCallRequiresNewerDriver nogil + +cdef cudaError_t cudaFree(void* devPtr) except ?cudaErrorCallRequiresNewerDriver nogil + +cdef cudaError_t cudaFreeHost(void* ptr) except ?cudaErrorCallRequiresNewerDriver nogil + +cdef cudaError_t cudaFreeArray(cudaArray_t array) except ?cudaErrorCallRequiresNewerDriver nogil + +cdef cudaError_t cudaFreeMipmappedArray(cudaMipmappedArray_t mipmappedArray) except ?cudaErrorCallRequiresNewerDriver nogil + +cdef cudaError_t cudaHostAlloc(void** pHost, size_t size, unsigned int flags) except ?cudaErrorCallRequiresNewerDriver nogil + +cdef cudaError_t cudaHostRegister(void* ptr, size_t size, unsigned int flags) except ?cudaErrorCallRequiresNewerDriver nogil + +cdef cudaError_t cudaHostUnregister(void* ptr) except ?cudaErrorCallRequiresNewerDriver nogil + +cdef cudaError_t cudaHostGetDevicePointer(void** pDevice, void* pHost, unsigned int flags) except ?cudaErrorCallRequiresNewerDriver nogil + +cdef cudaError_t cudaHostGetFlags(unsigned int* pFlags, void* pHost) except ?cudaErrorCallRequiresNewerDriver nogil + +cdef cudaError_t cudaMalloc3D(cudaPitchedPtr* pitchedDevPtr, cudaExtent extent) except ?cudaErrorCallRequiresNewerDriver nogil + +cdef cudaError_t cudaMalloc3DArray(cudaArray_t* array, const cudaChannelFormatDesc* desc, cudaExtent extent, unsigned int flags) except ?cudaErrorCallRequiresNewerDriver nogil + +cdef cudaError_t cudaMallocMipmappedArray(cudaMipmappedArray_t* mipmappedArray, const cudaChannelFormatDesc* desc, cudaExtent extent, unsigned int numLevels, unsigned int flags) except ?cudaErrorCallRequiresNewerDriver nogil + +cdef cudaError_t cudaGetMipmappedArrayLevel(cudaArray_t* levelArray, cudaMipmappedArray_const_t mipmappedArray, unsigned int level) except ?cudaErrorCallRequiresNewerDriver nogil + +cdef cudaError_t cudaMemcpy3D(const cudaMemcpy3DParms* p) except ?cudaErrorCallRequiresNewerDriver nogil + +cdef cudaError_t cudaMemcpy3DPeer(const cudaMemcpy3DPeerParms* p) except ?cudaErrorCallRequiresNewerDriver nogil + +cdef cudaError_t cudaMemcpy3DAsync(const cudaMemcpy3DParms* p, cudaStream_t stream) except ?cudaErrorCallRequiresNewerDriver nogil + +cdef cudaError_t cudaMemcpy3DPeerAsync(const cudaMemcpy3DPeerParms* p, cudaStream_t stream) except ?cudaErrorCallRequiresNewerDriver nogil + +cdef cudaError_t cudaMemGetInfo(size_t* free, size_t* total) except ?cudaErrorCallRequiresNewerDriver nogil + +cdef cudaError_t cudaArrayGetInfo(cudaChannelFormatDesc* desc, cudaExtent* extent, unsigned int* flags, cudaArray_t array) except ?cudaErrorCallRequiresNewerDriver nogil + +cdef cudaError_t cudaArrayGetPlane(cudaArray_t* pPlaneArray, cudaArray_t hArray, unsigned int planeIdx) except ?cudaErrorCallRequiresNewerDriver nogil + +cdef cudaError_t cudaArrayGetMemoryRequirements(cudaArrayMemoryRequirements* memoryRequirements, cudaArray_t array, int device) except ?cudaErrorCallRequiresNewerDriver nogil + +cdef cudaError_t cudaMipmappedArrayGetMemoryRequirements(cudaArrayMemoryRequirements* memoryRequirements, cudaMipmappedArray_t mipmap, int device) except ?cudaErrorCallRequiresNewerDriver nogil + +cdef cudaError_t cudaArrayGetSparseProperties(cudaArraySparseProperties* sparseProperties, cudaArray_t array) except ?cudaErrorCallRequiresNewerDriver nogil + +cdef cudaError_t cudaMipmappedArrayGetSparseProperties(cudaArraySparseProperties* sparseProperties, cudaMipmappedArray_t mipmap) except ?cudaErrorCallRequiresNewerDriver nogil + +cdef cudaError_t cudaMemcpy(void* dst, const void* src, size_t count, cudaMemcpyKind kind) except ?cudaErrorCallRequiresNewerDriver nogil + +cdef cudaError_t cudaMemcpyPeer(void* dst, int dstDevice, const void* src, int srcDevice, size_t count) except ?cudaErrorCallRequiresNewerDriver nogil + +cdef cudaError_t cudaMemcpy2D(void* dst, size_t dpitch, const void* src, size_t spitch, size_t width, size_t height, cudaMemcpyKind kind) except ?cudaErrorCallRequiresNewerDriver nogil + +cdef cudaError_t cudaMemcpy2DToArray(cudaArray_t dst, size_t wOffset, size_t hOffset, const void* src, size_t spitch, size_t width, size_t height, cudaMemcpyKind kind) except ?cudaErrorCallRequiresNewerDriver nogil + +cdef cudaError_t cudaMemcpy2DFromArray(void* dst, size_t dpitch, cudaArray_const_t src, size_t wOffset, size_t hOffset, size_t width, size_t height, cudaMemcpyKind kind) except ?cudaErrorCallRequiresNewerDriver nogil + +cdef cudaError_t cudaMemcpy2DArrayToArray(cudaArray_t dst, size_t wOffsetDst, size_t hOffsetDst, cudaArray_const_t src, size_t wOffsetSrc, size_t hOffsetSrc, size_t width, size_t height, cudaMemcpyKind kind) except ?cudaErrorCallRequiresNewerDriver nogil + +cdef cudaError_t cudaMemcpyAsync(void* dst, const void* src, size_t count, cudaMemcpyKind kind, cudaStream_t stream) except ?cudaErrorCallRequiresNewerDriver nogil + +cdef cudaError_t cudaMemcpyPeerAsync(void* dst, int dstDevice, const void* src, int srcDevice, size_t count, cudaStream_t stream) except ?cudaErrorCallRequiresNewerDriver nogil + +cdef cudaError_t cudaMemcpyBatchAsync(const void** dsts, const void** srcs, const size_t* sizes, size_t count, cudaMemcpyAttributes* attrs, size_t* attrsIdxs, size_t numAttrs, cudaStream_t stream) except ?cudaErrorCallRequiresNewerDriver nogil + +cdef cudaError_t cudaMemcpy3DBatchAsync(size_t numOps, cudaMemcpy3DBatchOp* opList, unsigned long long flags, cudaStream_t stream) except ?cudaErrorCallRequiresNewerDriver nogil + +cdef cudaError_t cudaMemcpyWithAttributesAsync(void* dst, const void* src, size_t size, cudaMemcpyAttributes* attr, cudaStream_t stream) except ?cudaErrorCallRequiresNewerDriver nogil + +cdef cudaError_t cudaMemcpy3DWithAttributesAsync(cudaMemcpy3DBatchOp* op, unsigned long long flags, cudaStream_t stream) except ?cudaErrorCallRequiresNewerDriver nogil + +cdef cudaError_t cudaMemcpy2DAsync(void* dst, size_t dpitch, const void* src, size_t spitch, size_t width, size_t height, cudaMemcpyKind kind, cudaStream_t stream) except ?cudaErrorCallRequiresNewerDriver nogil + +cdef cudaError_t cudaMemcpy2DToArrayAsync(cudaArray_t dst, size_t wOffset, size_t hOffset, const void* src, size_t spitch, size_t width, size_t height, cudaMemcpyKind kind, cudaStream_t stream) except ?cudaErrorCallRequiresNewerDriver nogil + +cdef cudaError_t cudaMemcpy2DFromArrayAsync(void* dst, size_t dpitch, cudaArray_const_t src, size_t wOffset, size_t hOffset, size_t width, size_t height, cudaMemcpyKind kind, cudaStream_t stream) except ?cudaErrorCallRequiresNewerDriver nogil + +cdef cudaError_t cudaMemset(void* devPtr, int value, size_t count) except ?cudaErrorCallRequiresNewerDriver nogil + +cdef cudaError_t cudaMemset2D(void* devPtr, size_t pitch, int value, size_t width, size_t height) except ?cudaErrorCallRequiresNewerDriver nogil + +cdef cudaError_t cudaMemset3D(cudaPitchedPtr pitchedDevPtr, int value, cudaExtent extent) except ?cudaErrorCallRequiresNewerDriver nogil + +cdef cudaError_t cudaMemsetAsync(void* devPtr, int value, size_t count, cudaStream_t stream) except ?cudaErrorCallRequiresNewerDriver nogil + +cdef cudaError_t cudaMemset2DAsync(void* devPtr, size_t pitch, int value, size_t width, size_t height, cudaStream_t stream) except ?cudaErrorCallRequiresNewerDriver nogil + +cdef cudaError_t cudaMemset3DAsync(cudaPitchedPtr pitchedDevPtr, int value, cudaExtent extent, cudaStream_t stream) except ?cudaErrorCallRequiresNewerDriver nogil + +cdef cudaError_t cudaMemPrefetchAsync(const void* devPtr, size_t count, cudaMemLocation location, unsigned int flags, cudaStream_t stream) except ?cudaErrorCallRequiresNewerDriver nogil + +cdef cudaError_t cudaMemPrefetchBatchAsync(void** dptrs, size_t* sizes, size_t count, cudaMemLocation* prefetchLocs, size_t* prefetchLocIdxs, size_t numPrefetchLocs, unsigned long long flags, cudaStream_t stream) except ?cudaErrorCallRequiresNewerDriver nogil + +cdef cudaError_t cudaMemDiscardBatchAsync(void** dptrs, size_t* sizes, size_t count, unsigned long long flags, cudaStream_t stream) except ?cudaErrorCallRequiresNewerDriver nogil + +cdef cudaError_t cudaMemDiscardAndPrefetchBatchAsync(void** dptrs, size_t* sizes, size_t count, cudaMemLocation* prefetchLocs, size_t* prefetchLocIdxs, size_t numPrefetchLocs, unsigned long long flags, cudaStream_t stream) except ?cudaErrorCallRequiresNewerDriver nogil + +cdef cudaError_t cudaMemAdvise(const void* devPtr, size_t count, cudaMemoryAdvise advice, cudaMemLocation location) except ?cudaErrorCallRequiresNewerDriver nogil + +cdef cudaError_t cudaMemRangeGetAttribute(void* data, size_t dataSize, cudaMemRangeAttribute attribute, const void* devPtr, size_t count) except ?cudaErrorCallRequiresNewerDriver nogil + +cdef cudaError_t cudaMemRangeGetAttributes(void** data, size_t* dataSizes, cudaMemRangeAttribute* attributes, size_t numAttributes, const void* devPtr, size_t count) except ?cudaErrorCallRequiresNewerDriver nogil + +cdef cudaError_t cudaMemcpyToArray(cudaArray_t dst, size_t wOffset, size_t hOffset, const void* src, size_t count, cudaMemcpyKind kind) except ?cudaErrorCallRequiresNewerDriver nogil + +cdef cudaError_t cudaMemcpyFromArray(void* dst, cudaArray_const_t src, size_t wOffset, size_t hOffset, size_t count, cudaMemcpyKind kind) except ?cudaErrorCallRequiresNewerDriver nogil + +cdef cudaError_t cudaMemcpyArrayToArray(cudaArray_t dst, size_t wOffsetDst, size_t hOffsetDst, cudaArray_const_t src, size_t wOffsetSrc, size_t hOffsetSrc, size_t count, cudaMemcpyKind kind) except ?cudaErrorCallRequiresNewerDriver nogil + +cdef cudaError_t cudaMemcpyToArrayAsync(cudaArray_t dst, size_t wOffset, size_t hOffset, const void* src, size_t count, cudaMemcpyKind kind, cudaStream_t stream) except ?cudaErrorCallRequiresNewerDriver nogil + +cdef cudaError_t cudaMemcpyFromArrayAsync(void* dst, cudaArray_const_t src, size_t wOffset, size_t hOffset, size_t count, cudaMemcpyKind kind, cudaStream_t stream) except ?cudaErrorCallRequiresNewerDriver nogil + +cdef cudaError_t cudaMallocAsync(void** devPtr, size_t size, cudaStream_t hStream) except ?cudaErrorCallRequiresNewerDriver nogil + +cdef cudaError_t cudaFreeAsync(void* devPtr, cudaStream_t hStream) except ?cudaErrorCallRequiresNewerDriver nogil + +cdef cudaError_t cudaMemPoolTrimTo(cudaMemPool_t memPool, size_t minBytesToKeep) except ?cudaErrorCallRequiresNewerDriver nogil + +cdef cudaError_t cudaMemPoolSetAttribute(cudaMemPool_t memPool, cudaMemPoolAttr attr, void* value) except ?cudaErrorCallRequiresNewerDriver nogil + +cdef cudaError_t cudaMemPoolGetAttribute(cudaMemPool_t memPool, cudaMemPoolAttr attr, void* value) except ?cudaErrorCallRequiresNewerDriver nogil + +cdef cudaError_t cudaMemPoolSetAccess(cudaMemPool_t memPool, const cudaMemAccessDesc* descList, size_t count) except ?cudaErrorCallRequiresNewerDriver nogil + +cdef cudaError_t cudaMemPoolGetAccess(cudaMemAccessFlags* flags, cudaMemPool_t memPool, cudaMemLocation* location) except ?cudaErrorCallRequiresNewerDriver nogil + +cdef cudaError_t cudaMemPoolCreate(cudaMemPool_t* memPool, const cudaMemPoolProps* poolProps) except ?cudaErrorCallRequiresNewerDriver nogil + +cdef cudaError_t cudaMemPoolDestroy(cudaMemPool_t memPool) except ?cudaErrorCallRequiresNewerDriver nogil + +cdef cudaError_t cudaMemGetDefaultMemPool(cudaMemPool_t* memPool, cudaMemLocation* location, cudaMemAllocationType typename) except ?cudaErrorCallRequiresNewerDriver nogil + +cdef cudaError_t cudaMemGetMemPool(cudaMemPool_t* memPool, cudaMemLocation* location, cudaMemAllocationType typename) except ?cudaErrorCallRequiresNewerDriver nogil + +cdef cudaError_t cudaMemSetMemPool(cudaMemLocation* location, cudaMemAllocationType typename, cudaMemPool_t memPool) except ?cudaErrorCallRequiresNewerDriver nogil + +cdef cudaError_t cudaMallocFromPoolAsync(void** ptr, size_t size, cudaMemPool_t memPool, cudaStream_t stream) except ?cudaErrorCallRequiresNewerDriver nogil + +cdef cudaError_t cudaMemPoolExportToShareableHandle(void* shareableHandle, cudaMemPool_t memPool, cudaMemAllocationHandleType handleType, unsigned int flags) except ?cudaErrorCallRequiresNewerDriver nogil + +cdef cudaError_t cudaMemPoolImportFromShareableHandle(cudaMemPool_t* memPool, void* shareableHandle, cudaMemAllocationHandleType handleType, unsigned int flags) except ?cudaErrorCallRequiresNewerDriver nogil + +cdef cudaError_t cudaMemPoolExportPointer(cudaMemPoolPtrExportData* exportData, void* ptr) except ?cudaErrorCallRequiresNewerDriver nogil + +cdef cudaError_t cudaMemPoolImportPointer(void** ptr, cudaMemPool_t memPool, cudaMemPoolPtrExportData* exportData) except ?cudaErrorCallRequiresNewerDriver nogil + +cdef cudaError_t cudaPointerGetAttributes(cudaPointerAttributes* attributes, const void* ptr) except ?cudaErrorCallRequiresNewerDriver nogil + +cdef cudaError_t cudaDeviceCanAccessPeer(int* canAccessPeer, int device, int peerDevice) except ?cudaErrorCallRequiresNewerDriver nogil + +cdef cudaError_t cudaDeviceEnablePeerAccess(int peerDevice, unsigned int flags) except ?cudaErrorCallRequiresNewerDriver nogil + +cdef cudaError_t cudaDeviceDisablePeerAccess(int peerDevice) except ?cudaErrorCallRequiresNewerDriver nogil + +cdef cudaError_t cudaGraphicsUnregisterResource(cudaGraphicsResource_t resource) except ?cudaErrorCallRequiresNewerDriver nogil + +cdef cudaError_t cudaGraphicsResourceSetMapFlags(cudaGraphicsResource_t resource, unsigned int flags) except ?cudaErrorCallRequiresNewerDriver nogil + +cdef cudaError_t cudaGraphicsMapResources(int count, cudaGraphicsResource_t* resources, cudaStream_t stream) except ?cudaErrorCallRequiresNewerDriver nogil + +cdef cudaError_t cudaGraphicsUnmapResources(int count, cudaGraphicsResource_t* resources, cudaStream_t stream) except ?cudaErrorCallRequiresNewerDriver nogil + +cdef cudaError_t cudaGraphicsResourceGetMappedPointer(void** devPtr, size_t* size, cudaGraphicsResource_t resource) except ?cudaErrorCallRequiresNewerDriver nogil + +cdef cudaError_t cudaGraphicsSubResourceGetMappedArray(cudaArray_t* array, cudaGraphicsResource_t resource, unsigned int arrayIndex, unsigned int mipLevel) except ?cudaErrorCallRequiresNewerDriver nogil + +cdef cudaError_t cudaGraphicsResourceGetMappedMipmappedArray(cudaMipmappedArray_t* mipmappedArray, cudaGraphicsResource_t resource) except ?cudaErrorCallRequiresNewerDriver nogil + +cdef cudaError_t cudaGetChannelDesc(cudaChannelFormatDesc* desc, cudaArray_const_t array) except ?cudaErrorCallRequiresNewerDriver nogil + +cdef cudaChannelFormatDesc cudaCreateChannelDesc(int x, int y, int z, int w, cudaChannelFormatKind f) except* nogil + +cdef cudaError_t cudaCreateTextureObject(cudaTextureObject_t* pTexObject, const cudaResourceDesc* pResDesc, const cudaTextureDesc* pTexDesc, const cudaResourceViewDesc* pResViewDesc) except ?cudaErrorCallRequiresNewerDriver nogil + +cdef cudaError_t cudaDestroyTextureObject(cudaTextureObject_t texObject) except ?cudaErrorCallRequiresNewerDriver nogil + +cdef cudaError_t cudaGetTextureObjectResourceDesc(cudaResourceDesc* pResDesc, cudaTextureObject_t texObject) except ?cudaErrorCallRequiresNewerDriver nogil + +cdef cudaError_t cudaGetTextureObjectTextureDesc(cudaTextureDesc* pTexDesc, cudaTextureObject_t texObject) except ?cudaErrorCallRequiresNewerDriver nogil + +cdef cudaError_t cudaGetTextureObjectResourceViewDesc(cudaResourceViewDesc* pResViewDesc, cudaTextureObject_t texObject) except ?cudaErrorCallRequiresNewerDriver nogil + +cdef cudaError_t cudaCreateSurfaceObject(cudaSurfaceObject_t* pSurfObject, const cudaResourceDesc* pResDesc) except ?cudaErrorCallRequiresNewerDriver nogil + +cdef cudaError_t cudaDestroySurfaceObject(cudaSurfaceObject_t surfObject) except ?cudaErrorCallRequiresNewerDriver nogil + +cdef cudaError_t cudaGetSurfaceObjectResourceDesc(cudaResourceDesc* pResDesc, cudaSurfaceObject_t surfObject) except ?cudaErrorCallRequiresNewerDriver nogil + +cdef cudaError_t cudaDriverGetVersion(int* driverVersion) except ?cudaErrorCallRequiresNewerDriver nogil + +cdef cudaError_t cudaRuntimeGetVersion(int* runtimeVersion) except ?cudaErrorCallRequiresNewerDriver nogil + +cdef cudaError_t cudaLogsRegisterCallback(cudaLogsCallback_t callbackFunc, void* userData, cudaLogsCallbackHandle* callback_out) except ?cudaErrorCallRequiresNewerDriver nogil + +cdef cudaError_t cudaLogsUnregisterCallback(cudaLogsCallbackHandle callback) except ?cudaErrorCallRequiresNewerDriver nogil + +cdef cudaError_t cudaLogsCurrent(cudaLogIterator* iterator_out, unsigned int flags) except ?cudaErrorCallRequiresNewerDriver nogil + +cdef cudaError_t cudaLogsDumpToFile(cudaLogIterator* iterator, const char* pathToFile, unsigned int flags) except ?cudaErrorCallRequiresNewerDriver nogil + +cdef cudaError_t cudaLogsDumpToMemory(cudaLogIterator* iterator, char* buffer, size_t* size, unsigned int flags) except ?cudaErrorCallRequiresNewerDriver nogil + +cdef cudaError_t cudaGraphCreate(cudaGraph_t* pGraph, unsigned int flags) except ?cudaErrorCallRequiresNewerDriver nogil + +cdef cudaError_t cudaGraphAddKernelNode(cudaGraphNode_t* pGraphNode, cudaGraph_t graph, const cudaGraphNode_t* pDependencies, size_t numDependencies, const cudaKernelNodeParams* pNodeParams) except ?cudaErrorCallRequiresNewerDriver nogil + +cdef cudaError_t cudaGraphKernelNodeGetParams(cudaGraphNode_t node, cudaKernelNodeParams* pNodeParams) except ?cudaErrorCallRequiresNewerDriver nogil + +cdef cudaError_t cudaGraphKernelNodeSetParams(cudaGraphNode_t node, const cudaKernelNodeParams* pNodeParams) except ?cudaErrorCallRequiresNewerDriver nogil + +cdef cudaError_t cudaGraphKernelNodeCopyAttributes(cudaGraphNode_t hDst, cudaGraphNode_t hSrc) except ?cudaErrorCallRequiresNewerDriver nogil + +cdef cudaError_t cudaGraphKernelNodeGetAttribute(cudaGraphNode_t hNode, cudaKernelNodeAttrID attr, cudaKernelNodeAttrValue* value_out) except ?cudaErrorCallRequiresNewerDriver nogil + +cdef cudaError_t cudaGraphKernelNodeSetAttribute(cudaGraphNode_t hNode, cudaKernelNodeAttrID attr, const cudaKernelNodeAttrValue* value) except ?cudaErrorCallRequiresNewerDriver nogil + +cdef cudaError_t cudaGraphAddMemcpyNode(cudaGraphNode_t* pGraphNode, cudaGraph_t graph, const cudaGraphNode_t* pDependencies, size_t numDependencies, const cudaMemcpy3DParms* pCopyParams) except ?cudaErrorCallRequiresNewerDriver nogil + +cdef cudaError_t cudaGraphAddMemcpyNode1D(cudaGraphNode_t* pGraphNode, cudaGraph_t graph, const cudaGraphNode_t* pDependencies, size_t numDependencies, void* dst, const void* src, size_t count, cudaMemcpyKind kind) except ?cudaErrorCallRequiresNewerDriver nogil + +cdef cudaError_t cudaGraphMemcpyNodeGetParams(cudaGraphNode_t node, cudaMemcpy3DParms* pNodeParams) except ?cudaErrorCallRequiresNewerDriver nogil + +cdef cudaError_t cudaGraphMemcpyNodeSetParams(cudaGraphNode_t node, const cudaMemcpy3DParms* pNodeParams) except ?cudaErrorCallRequiresNewerDriver nogil + +cdef cudaError_t cudaGraphMemcpyNodeSetParams1D(cudaGraphNode_t node, void* dst, const void* src, size_t count, cudaMemcpyKind kind) except ?cudaErrorCallRequiresNewerDriver nogil + +cdef cudaError_t cudaGraphAddMemsetNode(cudaGraphNode_t* pGraphNode, cudaGraph_t graph, const cudaGraphNode_t* pDependencies, size_t numDependencies, const cudaMemsetParams* pMemsetParams) except ?cudaErrorCallRequiresNewerDriver nogil + +cdef cudaError_t cudaGraphMemsetNodeGetParams(cudaGraphNode_t node, cudaMemsetParams* pNodeParams) except ?cudaErrorCallRequiresNewerDriver nogil + +cdef cudaError_t cudaGraphMemsetNodeSetParams(cudaGraphNode_t node, const cudaMemsetParams* pNodeParams) except ?cudaErrorCallRequiresNewerDriver nogil + +cdef cudaError_t cudaGraphAddHostNode(cudaGraphNode_t* pGraphNode, cudaGraph_t graph, const cudaGraphNode_t* pDependencies, size_t numDependencies, const cudaHostNodeParams* pNodeParams) except ?cudaErrorCallRequiresNewerDriver nogil + +cdef cudaError_t cudaGraphHostNodeGetParams(cudaGraphNode_t node, cudaHostNodeParams* pNodeParams) except ?cudaErrorCallRequiresNewerDriver nogil + +cdef cudaError_t cudaGraphHostNodeSetParams(cudaGraphNode_t node, const cudaHostNodeParams* pNodeParams) except ?cudaErrorCallRequiresNewerDriver nogil + +cdef cudaError_t cudaGraphAddChildGraphNode(cudaGraphNode_t* pGraphNode, cudaGraph_t graph, const cudaGraphNode_t* pDependencies, size_t numDependencies, cudaGraph_t childGraph) except ?cudaErrorCallRequiresNewerDriver nogil + +cdef cudaError_t cudaGraphChildGraphNodeGetGraph(cudaGraphNode_t node, cudaGraph_t* pGraph) except ?cudaErrorCallRequiresNewerDriver nogil + +cdef cudaError_t cudaGraphAddEmptyNode(cudaGraphNode_t* pGraphNode, cudaGraph_t graph, const cudaGraphNode_t* pDependencies, size_t numDependencies) except ?cudaErrorCallRequiresNewerDriver nogil + +cdef cudaError_t cudaGraphAddEventRecordNode(cudaGraphNode_t* pGraphNode, cudaGraph_t graph, const cudaGraphNode_t* pDependencies, size_t numDependencies, cudaEvent_t event) except ?cudaErrorCallRequiresNewerDriver nogil + +cdef cudaError_t cudaGraphEventRecordNodeGetEvent(cudaGraphNode_t node, cudaEvent_t* event_out) except ?cudaErrorCallRequiresNewerDriver nogil + +cdef cudaError_t cudaGraphEventRecordNodeSetEvent(cudaGraphNode_t node, cudaEvent_t event) except ?cudaErrorCallRequiresNewerDriver nogil + +cdef cudaError_t cudaGraphAddEventWaitNode(cudaGraphNode_t* pGraphNode, cudaGraph_t graph, const cudaGraphNode_t* pDependencies, size_t numDependencies, cudaEvent_t event) except ?cudaErrorCallRequiresNewerDriver nogil + +cdef cudaError_t cudaGraphEventWaitNodeGetEvent(cudaGraphNode_t node, cudaEvent_t* event_out) except ?cudaErrorCallRequiresNewerDriver nogil + +cdef cudaError_t cudaGraphEventWaitNodeSetEvent(cudaGraphNode_t node, cudaEvent_t event) except ?cudaErrorCallRequiresNewerDriver nogil + +cdef cudaError_t cudaGraphAddExternalSemaphoresSignalNode(cudaGraphNode_t* pGraphNode, cudaGraph_t graph, const cudaGraphNode_t* pDependencies, size_t numDependencies, const cudaExternalSemaphoreSignalNodeParams* nodeParams) except ?cudaErrorCallRequiresNewerDriver nogil + +cdef cudaError_t cudaGraphExternalSemaphoresSignalNodeGetParams(cudaGraphNode_t hNode, cudaExternalSemaphoreSignalNodeParams* params_out) except ?cudaErrorCallRequiresNewerDriver nogil + +cdef cudaError_t cudaGraphExternalSemaphoresSignalNodeSetParams(cudaGraphNode_t hNode, const cudaExternalSemaphoreSignalNodeParams* nodeParams) except ?cudaErrorCallRequiresNewerDriver nogil + +cdef cudaError_t cudaGraphAddExternalSemaphoresWaitNode(cudaGraphNode_t* pGraphNode, cudaGraph_t graph, const cudaGraphNode_t* pDependencies, size_t numDependencies, const cudaExternalSemaphoreWaitNodeParams* nodeParams) except ?cudaErrorCallRequiresNewerDriver nogil + +cdef cudaError_t cudaGraphExternalSemaphoresWaitNodeGetParams(cudaGraphNode_t hNode, cudaExternalSemaphoreWaitNodeParams* params_out) except ?cudaErrorCallRequiresNewerDriver nogil + +cdef cudaError_t cudaGraphExternalSemaphoresWaitNodeSetParams(cudaGraphNode_t hNode, const cudaExternalSemaphoreWaitNodeParams* nodeParams) except ?cudaErrorCallRequiresNewerDriver nogil + +cdef cudaError_t cudaGraphAddMemAllocNode(cudaGraphNode_t* pGraphNode, cudaGraph_t graph, const cudaGraphNode_t* pDependencies, size_t numDependencies, cudaMemAllocNodeParams* nodeParams) except ?cudaErrorCallRequiresNewerDriver nogil + +cdef cudaError_t cudaGraphMemAllocNodeGetParams(cudaGraphNode_t node, cudaMemAllocNodeParams* params_out) except ?cudaErrorCallRequiresNewerDriver nogil + +cdef cudaError_t cudaGraphAddMemFreeNode(cudaGraphNode_t* pGraphNode, cudaGraph_t graph, const cudaGraphNode_t* pDependencies, size_t numDependencies, void* dptr) except ?cudaErrorCallRequiresNewerDriver nogil + +cdef cudaError_t cudaGraphMemFreeNodeGetParams(cudaGraphNode_t node, void* dptr_out) except ?cudaErrorCallRequiresNewerDriver nogil + +cdef cudaError_t cudaDeviceGraphMemTrim(int device) except ?cudaErrorCallRequiresNewerDriver nogil + +cdef cudaError_t cudaDeviceGetGraphMemAttribute(int device, cudaGraphMemAttributeType attr, void* value) except ?cudaErrorCallRequiresNewerDriver nogil + +cdef cudaError_t cudaDeviceSetGraphMemAttribute(int device, cudaGraphMemAttributeType attr, void* value) except ?cudaErrorCallRequiresNewerDriver nogil + +cdef cudaError_t cudaGraphClone(cudaGraph_t* pGraphClone, cudaGraph_t originalGraph) except ?cudaErrorCallRequiresNewerDriver nogil + +cdef cudaError_t cudaGraphNodeFindInClone(cudaGraphNode_t* pNode, cudaGraphNode_t originalNode, cudaGraph_t clonedGraph) except ?cudaErrorCallRequiresNewerDriver nogil + +cdef cudaError_t cudaGraphNodeGetType(cudaGraphNode_t node, cudaGraphNodeType* pType) except ?cudaErrorCallRequiresNewerDriver nogil + +cdef cudaError_t cudaGraphNodeGetContainingGraph(cudaGraphNode_t hNode, cudaGraph_t* phGraph) except ?cudaErrorCallRequiresNewerDriver nogil + +cdef cudaError_t cudaGraphNodeGetLocalId(cudaGraphNode_t hNode, unsigned int* nodeId) except ?cudaErrorCallRequiresNewerDriver nogil + +cdef cudaError_t cudaGraphNodeGetToolsId(cudaGraphNode_t hNode, unsigned long long* toolsNodeId) except ?cudaErrorCallRequiresNewerDriver nogil + +cdef cudaError_t cudaGraphGetId(cudaGraph_t hGraph, unsigned int* graphID) except ?cudaErrorCallRequiresNewerDriver nogil + +cdef cudaError_t cudaGraphExecGetId(cudaGraphExec_t hGraphExec, unsigned int* graphID) except ?cudaErrorCallRequiresNewerDriver nogil + +cdef cudaError_t cudaGraphGetNodes(cudaGraph_t graph, cudaGraphNode_t* nodes, size_t* numNodes) except ?cudaErrorCallRequiresNewerDriver nogil + +cdef cudaError_t cudaGraphGetRootNodes(cudaGraph_t graph, cudaGraphNode_t* pRootNodes, size_t* pNumRootNodes) except ?cudaErrorCallRequiresNewerDriver nogil + +cdef cudaError_t cudaGraphGetEdges(cudaGraph_t graph, cudaGraphNode_t* from_, cudaGraphNode_t* to, cudaGraphEdgeData* edgeData, size_t* numEdges) except ?cudaErrorCallRequiresNewerDriver nogil + +cdef cudaError_t cudaGraphNodeGetDependencies(cudaGraphNode_t node, cudaGraphNode_t* pDependencies, cudaGraphEdgeData* edgeData, size_t* pNumDependencies) except ?cudaErrorCallRequiresNewerDriver nogil + +cdef cudaError_t cudaGraphNodeGetDependentNodes(cudaGraphNode_t node, cudaGraphNode_t* pDependentNodes, cudaGraphEdgeData* edgeData, size_t* pNumDependentNodes) except ?cudaErrorCallRequiresNewerDriver nogil + +cdef cudaError_t cudaGraphAddDependencies(cudaGraph_t graph, const cudaGraphNode_t* from_, const cudaGraphNode_t* to, const cudaGraphEdgeData* edgeData, size_t numDependencies) except ?cudaErrorCallRequiresNewerDriver nogil + +cdef cudaError_t cudaGraphRemoveDependencies(cudaGraph_t graph, const cudaGraphNode_t* from_, const cudaGraphNode_t* to, const cudaGraphEdgeData* edgeData, size_t numDependencies) except ?cudaErrorCallRequiresNewerDriver nogil + +cdef cudaError_t cudaGraphDestroyNode(cudaGraphNode_t node) except ?cudaErrorCallRequiresNewerDriver nogil + +cdef cudaError_t cudaGraphInstantiate(cudaGraphExec_t* pGraphExec, cudaGraph_t graph, unsigned long long flags) except ?cudaErrorCallRequiresNewerDriver nogil + +cdef cudaError_t cudaGraphInstantiateWithFlags(cudaGraphExec_t* pGraphExec, cudaGraph_t graph, unsigned long long flags) except ?cudaErrorCallRequiresNewerDriver nogil + +cdef cudaError_t cudaGraphInstantiateWithParams(cudaGraphExec_t* pGraphExec, cudaGraph_t graph, cudaGraphInstantiateParams* instantiateParams) except ?cudaErrorCallRequiresNewerDriver nogil + +cdef cudaError_t cudaGraphExecGetFlags(cudaGraphExec_t graphExec, unsigned long long* flags) except ?cudaErrorCallRequiresNewerDriver nogil + +cdef cudaError_t cudaGraphExecKernelNodeSetParams(cudaGraphExec_t hGraphExec, cudaGraphNode_t node, const cudaKernelNodeParams* pNodeParams) except ?cudaErrorCallRequiresNewerDriver nogil + +cdef cudaError_t cudaGraphExecMemcpyNodeSetParams(cudaGraphExec_t hGraphExec, cudaGraphNode_t node, const cudaMemcpy3DParms* pNodeParams) except ?cudaErrorCallRequiresNewerDriver nogil + +cdef cudaError_t cudaGraphExecMemcpyNodeSetParams1D(cudaGraphExec_t hGraphExec, cudaGraphNode_t node, void* dst, const void* src, size_t count, cudaMemcpyKind kind) except ?cudaErrorCallRequiresNewerDriver nogil + +cdef cudaError_t cudaGraphExecMemsetNodeSetParams(cudaGraphExec_t hGraphExec, cudaGraphNode_t node, const cudaMemsetParams* pNodeParams) except ?cudaErrorCallRequiresNewerDriver nogil + +cdef cudaError_t cudaGraphExecHostNodeSetParams(cudaGraphExec_t hGraphExec, cudaGraphNode_t node, const cudaHostNodeParams* pNodeParams) except ?cudaErrorCallRequiresNewerDriver nogil + +cdef cudaError_t cudaGraphExecChildGraphNodeSetParams(cudaGraphExec_t hGraphExec, cudaGraphNode_t node, cudaGraph_t childGraph) except ?cudaErrorCallRequiresNewerDriver nogil + +cdef cudaError_t cudaGraphExecEventRecordNodeSetEvent(cudaGraphExec_t hGraphExec, cudaGraphNode_t hNode, cudaEvent_t event) except ?cudaErrorCallRequiresNewerDriver nogil + +cdef cudaError_t cudaGraphExecEventWaitNodeSetEvent(cudaGraphExec_t hGraphExec, cudaGraphNode_t hNode, cudaEvent_t event) except ?cudaErrorCallRequiresNewerDriver nogil + +cdef cudaError_t cudaGraphExecExternalSemaphoresSignalNodeSetParams(cudaGraphExec_t hGraphExec, cudaGraphNode_t hNode, const cudaExternalSemaphoreSignalNodeParams* nodeParams) except ?cudaErrorCallRequiresNewerDriver nogil + +cdef cudaError_t cudaGraphExecExternalSemaphoresWaitNodeSetParams(cudaGraphExec_t hGraphExec, cudaGraphNode_t hNode, const cudaExternalSemaphoreWaitNodeParams* nodeParams) except ?cudaErrorCallRequiresNewerDriver nogil + +cdef cudaError_t cudaGraphNodeSetEnabled(cudaGraphExec_t hGraphExec, cudaGraphNode_t hNode, unsigned int isEnabled) except ?cudaErrorCallRequiresNewerDriver nogil + +cdef cudaError_t cudaGraphNodeGetEnabled(cudaGraphExec_t hGraphExec, cudaGraphNode_t hNode, unsigned int* isEnabled) except ?cudaErrorCallRequiresNewerDriver nogil + +cdef cudaError_t cudaGraphExecUpdate(cudaGraphExec_t hGraphExec, cudaGraph_t hGraph, cudaGraphExecUpdateResultInfo* resultInfo) except ?cudaErrorCallRequiresNewerDriver nogil + +cdef cudaError_t cudaGraphUpload(cudaGraphExec_t graphExec, cudaStream_t stream) except ?cudaErrorCallRequiresNewerDriver nogil + +cdef cudaError_t cudaGraphLaunch(cudaGraphExec_t graphExec, cudaStream_t stream) except ?cudaErrorCallRequiresNewerDriver nogil + +cdef cudaError_t cudaGraphExecDestroy(cudaGraphExec_t graphExec) except ?cudaErrorCallRequiresNewerDriver nogil + +cdef cudaError_t cudaGraphDestroy(cudaGraph_t graph) except ?cudaErrorCallRequiresNewerDriver nogil + +cdef cudaError_t cudaGraphDebugDotPrint(cudaGraph_t graph, const char* path, unsigned int flags) except ?cudaErrorCallRequiresNewerDriver nogil + +cdef cudaError_t cudaUserObjectCreate(cudaUserObject_t* object_out, void* ptr, cudaHostFn_t destroy, unsigned int initialRefcount, unsigned int flags) except ?cudaErrorCallRequiresNewerDriver nogil + +cdef cudaError_t cudaUserObjectRetain(cudaUserObject_t object, unsigned int count) except ?cudaErrorCallRequiresNewerDriver nogil + +cdef cudaError_t cudaUserObjectRelease(cudaUserObject_t object, unsigned int count) except ?cudaErrorCallRequiresNewerDriver nogil + +cdef cudaError_t cudaGraphRetainUserObject(cudaGraph_t graph, cudaUserObject_t object, unsigned int count, unsigned int flags) except ?cudaErrorCallRequiresNewerDriver nogil + +cdef cudaError_t cudaGraphReleaseUserObject(cudaGraph_t graph, cudaUserObject_t object, unsigned int count) except ?cudaErrorCallRequiresNewerDriver nogil + +cdef cudaError_t cudaGraphAddNode(cudaGraphNode_t* pGraphNode, cudaGraph_t graph, const cudaGraphNode_t* pDependencies, const cudaGraphEdgeData* dependencyData, size_t numDependencies, cudaGraphNodeParams* nodeParams) except ?cudaErrorCallRequiresNewerDriver nogil + +cdef cudaError_t cudaGraphNodeSetParams(cudaGraphNode_t node, cudaGraphNodeParams* nodeParams) except ?cudaErrorCallRequiresNewerDriver nogil + +cdef cudaError_t cudaGraphNodeGetParams(cudaGraphNode_t node, cudaGraphNodeParams* nodeParams) except ?cudaErrorCallRequiresNewerDriver nogil + +cdef cudaError_t cudaGraphExecNodeSetParams(cudaGraphExec_t graphExec, cudaGraphNode_t node, cudaGraphNodeParams* nodeParams) except ?cudaErrorCallRequiresNewerDriver nogil + +cdef cudaError_t cudaGraphConditionalHandleCreate(cudaGraphConditionalHandle* pHandle_out, cudaGraph_t graph, unsigned int defaultLaunchValue, unsigned int flags) except ?cudaErrorCallRequiresNewerDriver nogil + +cdef cudaError_t cudaGraphConditionalHandleCreate_v2(cudaGraphConditionalHandle* pHandle_out, cudaGraph_t graph, cudaExecutionContext_t ctx, unsigned int defaultLaunchValue, unsigned int flags) except ?cudaErrorCallRequiresNewerDriver nogil + +cdef cudaError_t cudaGetDriverEntryPoint(const char* symbol, void** funcPtr, unsigned long long flags, cudaDriverEntryPointQueryResult* driverStatus) except ?cudaErrorCallRequiresNewerDriver nogil + +cdef cudaError_t cudaGetDriverEntryPointByVersion(const char* symbol, void** funcPtr, unsigned int cudaVersion, unsigned long long flags, cudaDriverEntryPointQueryResult* driverStatus) except ?cudaErrorCallRequiresNewerDriver nogil + +cdef cudaError_t cudaLibraryLoadData(cudaLibrary_t* library, const void* code, cudaJitOption* jitOptions, void** jitOptionsValues, unsigned int numJitOptions, cudaLibraryOption* libraryOptions, void** libraryOptionValues, unsigned int numLibraryOptions) except ?cudaErrorCallRequiresNewerDriver nogil + +cdef cudaError_t cudaLibraryLoadFromFile(cudaLibrary_t* library, const char* fileName, cudaJitOption* jitOptions, void** jitOptionsValues, unsigned int numJitOptions, cudaLibraryOption* libraryOptions, void** libraryOptionValues, unsigned int numLibraryOptions) except ?cudaErrorCallRequiresNewerDriver nogil + +cdef cudaError_t cudaLibraryUnload(cudaLibrary_t library) except ?cudaErrorCallRequiresNewerDriver nogil + +cdef cudaError_t cudaLibraryGetKernel(cudaKernel_t* pKernel, cudaLibrary_t library, const char* name) except ?cudaErrorCallRequiresNewerDriver nogil + +cdef cudaError_t cudaLibraryGetGlobal(void** dptr, size_t* numbytes, cudaLibrary_t library, const char* name) except ?cudaErrorCallRequiresNewerDriver nogil + +cdef cudaError_t cudaLibraryGetManaged(void** dptr, size_t* numbytes, cudaLibrary_t library, const char* name) except ?cudaErrorCallRequiresNewerDriver nogil + +cdef cudaError_t cudaLibraryGetUnifiedFunction(void** fptr, cudaLibrary_t library, const char* symbol) except ?cudaErrorCallRequiresNewerDriver nogil + +cdef cudaError_t cudaLibraryGetKernelCount(unsigned int* count, cudaLibrary_t lib) except ?cudaErrorCallRequiresNewerDriver nogil + +cdef cudaError_t cudaLibraryEnumerateKernels(cudaKernel_t* kernels, unsigned int numKernels, cudaLibrary_t lib) except ?cudaErrorCallRequiresNewerDriver nogil + +cdef cudaError_t cudaKernelSetAttributeForDevice(cudaKernel_t kernel, cudaFuncAttribute attr, int value, int device) except ?cudaErrorCallRequiresNewerDriver nogil + +cdef cudaError_t cudaDeviceGetDevResource(int device, cudaDevResource* resource, cudaDevResourceType typename) except ?cudaErrorCallRequiresNewerDriver nogil + +cdef cudaError_t cudaDevSmResourceSplitByCount(cudaDevResource* result, unsigned int* nbGroups, const cudaDevResource* input, cudaDevResource* remaining, unsigned int flags, unsigned int minCount) except ?cudaErrorCallRequiresNewerDriver nogil + +cdef cudaError_t cudaDevSmResourceSplit(cudaDevResource* result, unsigned int nbGroups, const cudaDevResource* input, cudaDevResource* remainder, unsigned int flags, cudaDevSmResourceGroupParams* groupParams) except ?cudaErrorCallRequiresNewerDriver nogil + +cdef cudaError_t cudaDevResourceGenerateDesc(cudaDevResourceDesc_t* phDesc, cudaDevResource* resources, unsigned int nbResources) except ?cudaErrorCallRequiresNewerDriver nogil + +cdef cudaError_t cudaGreenCtxCreate(cudaExecutionContext_t* phCtx, cudaDevResourceDesc_t desc, int device, unsigned int flags) except ?cudaErrorCallRequiresNewerDriver nogil + +cdef cudaError_t cudaExecutionCtxDestroy(cudaExecutionContext_t ctx) except ?cudaErrorCallRequiresNewerDriver nogil + +cdef cudaError_t cudaExecutionCtxGetDevResource(cudaExecutionContext_t ctx, cudaDevResource* resource, cudaDevResourceType typename) except ?cudaErrorCallRequiresNewerDriver nogil + +cdef cudaError_t cudaExecutionCtxGetDevice(int* device, cudaExecutionContext_t ctx) except ?cudaErrorCallRequiresNewerDriver nogil + +cdef cudaError_t cudaExecutionCtxGetId(cudaExecutionContext_t ctx, unsigned long long* ctxId) except ?cudaErrorCallRequiresNewerDriver nogil + +cdef cudaError_t cudaExecutionCtxStreamCreate(cudaStream_t* phStream, cudaExecutionContext_t ctx, unsigned int flags, int priority) except ?cudaErrorCallRequiresNewerDriver nogil + +cdef cudaError_t cudaExecutionCtxSynchronize(cudaExecutionContext_t ctx) except ?cudaErrorCallRequiresNewerDriver nogil + +cdef cudaError_t cudaStreamGetDevResource(cudaStream_t hStream, cudaDevResource* resource, cudaDevResourceType typename) except ?cudaErrorCallRequiresNewerDriver nogil + +cdef cudaError_t cudaExecutionCtxRecordEvent(cudaExecutionContext_t ctx, cudaEvent_t event) except ?cudaErrorCallRequiresNewerDriver nogil + +cdef cudaError_t cudaExecutionCtxWaitEvent(cudaExecutionContext_t ctx, cudaEvent_t event) except ?cudaErrorCallRequiresNewerDriver nogil + +cdef cudaError_t cudaDeviceGetExecutionCtx(cudaExecutionContext_t* ctx, int device) except ?cudaErrorCallRequiresNewerDriver nogil + +cdef cudaError_t cudaGetExportTable(const void** ppExportTable, const cudaUUID_t* pExportTableId) except ?cudaErrorCallRequiresNewerDriver nogil + +cdef cudaError_t cudaGetKernel(cudaKernel_t* kernelPtr, const void* entryFuncAddr) except ?cudaErrorCallRequiresNewerDriver nogil + +cdef cudaPitchedPtr make_cudaPitchedPtr(void* d, size_t p, size_t xsz, size_t ysz) except* nogil + +cdef cudaPos make_cudaPos(size_t x, size_t y, size_t z) except* nogil + +cdef cudaExtent make_cudaExtent(size_t w, size_t h, size_t d) except* nogil + +cdef cudaError_t cudaGraphicsEGLRegisterImage(cudaGraphicsResource** pCudaResource, EGLImageKHR image, unsigned int flags) except ?cudaErrorCallRequiresNewerDriver nogil + +cdef cudaError_t cudaEGLStreamConsumerConnect(cudaEglStreamConnection* conn, EGLStreamKHR eglStream) except ?cudaErrorCallRequiresNewerDriver nogil + +cdef cudaError_t cudaEGLStreamConsumerConnectWithFlags(cudaEglStreamConnection* conn, EGLStreamKHR eglStream, unsigned int flags) except ?cudaErrorCallRequiresNewerDriver nogil + +cdef cudaError_t cudaEGLStreamConsumerDisconnect(cudaEglStreamConnection* conn) except ?cudaErrorCallRequiresNewerDriver nogil + +cdef cudaError_t cudaEGLStreamConsumerAcquireFrame(cudaEglStreamConnection* conn, cudaGraphicsResource_t* pCudaResource, cudaStream_t* pStream, unsigned int timeout) except ?cudaErrorCallRequiresNewerDriver nogil + +cdef cudaError_t cudaEGLStreamConsumerReleaseFrame(cudaEglStreamConnection* conn, cudaGraphicsResource_t pCudaResource, cudaStream_t* pStream) except ?cudaErrorCallRequiresNewerDriver nogil + +cdef cudaError_t cudaEGLStreamProducerConnect(cudaEglStreamConnection* conn, EGLStreamKHR eglStream, EGLint width, EGLint height) except ?cudaErrorCallRequiresNewerDriver nogil + +cdef cudaError_t cudaEGLStreamProducerDisconnect(cudaEglStreamConnection* conn) except ?cudaErrorCallRequiresNewerDriver nogil + +cdef cudaError_t cudaEGLStreamProducerPresentFrame(cudaEglStreamConnection* conn, cudaEglFrame eglframe, cudaStream_t* pStream) except ?cudaErrorCallRequiresNewerDriver nogil + +cdef cudaError_t cudaEGLStreamProducerReturnFrame(cudaEglStreamConnection* conn, cudaEglFrame* eglframe, cudaStream_t* pStream) except ?cudaErrorCallRequiresNewerDriver nogil + +cdef cudaError_t cudaGraphicsResourceGetMappedEglFrame(cudaEglFrame* eglFrame, cudaGraphicsResource_t resource, unsigned int index, unsigned int mipLevel) except ?cudaErrorCallRequiresNewerDriver nogil + +cdef cudaError_t cudaEventCreateFromEGLSync(cudaEvent_t* phEvent, EGLSyncKHR eglSync, unsigned int flags) except ?cudaErrorCallRequiresNewerDriver nogil + +cdef cudaError_t cudaProfilerStart() except ?cudaErrorCallRequiresNewerDriver nogil + +cdef cudaError_t cudaProfilerStop() except ?cudaErrorCallRequiresNewerDriver nogil + +cdef cudaError_t cudaGLGetDevices(unsigned int* pCudaDeviceCount, int* pCudaDevices, unsigned int cudaDeviceCount, cudaGLDeviceList deviceList) except ?cudaErrorCallRequiresNewerDriver nogil + +cdef cudaError_t cudaGraphicsGLRegisterImage(cudaGraphicsResource** resource, GLuint image, GLenum target, unsigned int flags) except ?cudaErrorCallRequiresNewerDriver nogil + +cdef cudaError_t cudaGraphicsGLRegisterBuffer(cudaGraphicsResource** resource, GLuint buffer, unsigned int flags) except ?cudaErrorCallRequiresNewerDriver nogil + +cdef cudaError_t cudaVDPAUGetDevice(int* device, VdpDevice vdpDevice, VdpGetProcAddress* vdpGetProcAddress) except ?cudaErrorCallRequiresNewerDriver nogil + +cdef cudaError_t cudaVDPAUSetVDPAUDevice(int device, VdpDevice vdpDevice, VdpGetProcAddress* vdpGetProcAddress) except ?cudaErrorCallRequiresNewerDriver nogil + +cdef cudaError_t cudaGraphicsVDPAURegisterVideoSurface(cudaGraphicsResource** resource, VdpVideoSurface vdpSurface, unsigned int flags) except ?cudaErrorCallRequiresNewerDriver nogil + +cdef cudaError_t cudaGraphicsVDPAURegisterOutputSurface(cudaGraphicsResource** resource, VdpOutputSurface vdpSurface, unsigned int flags) except ?cudaErrorCallRequiresNewerDriver nogil + +cdef cudaError_t getLocalRuntimeVersion(int* runtimeVersion) except ?cudaErrorCallRequiresNewerDriver nogil + +cdef enum: cudaHostAllocDefault = 0 + +cdef enum: cudaHostAllocPortable = 1 + +cdef enum: cudaHostAllocMapped = 2 + +cdef enum: cudaHostAllocWriteCombined = 4 + +cdef enum: cudaHostRegisterDefault = 0 + +cdef enum: cudaHostRegisterPortable = 1 + +cdef enum: cudaHostRegisterMapped = 2 + +cdef enum: cudaHostRegisterIoMemory = 4 + +cdef enum: cudaHostRegisterReadOnly = 8 + +cdef enum: cudaPeerAccessDefault = 0 + +cdef enum: cudaStreamDefault = 0 + +cdef enum: cudaStreamNonBlocking = 1 + +cdef enum: cudaStreamLegacy = 1 + +cdef enum: cudaStreamPerThread = 2 + +cdef enum: cudaEventDefault = 0 + +cdef enum: cudaEventBlockingSync = 1 + +cdef enum: cudaEventDisableTiming = 2 + +cdef enum: cudaEventInterprocess = 4 + +cdef enum: cudaEventRecordDefault = 0 + +cdef enum: cudaEventRecordExternal = 1 + +cdef enum: cudaEventWaitDefault = 0 + +cdef enum: cudaEventWaitExternal = 1 + +cdef enum: cudaDeviceScheduleAuto = 0 + +cdef enum: cudaDeviceScheduleSpin = 1 + +cdef enum: cudaDeviceScheduleYield = 2 + +cdef enum: cudaDeviceScheduleBlockingSync = 4 + +cdef enum: cudaDeviceBlockingSync = 4 + +cdef enum: cudaDeviceScheduleMask = 7 + +cdef enum: cudaDeviceMapHost = 8 + +cdef enum: cudaDeviceLmemResizeToMax = 16 + +cdef enum: cudaDeviceSyncMemops = 128 + +cdef enum: cudaDeviceMask = 255 + +cdef enum: cudaArrayDefault = 0 + +cdef enum: cudaArrayLayered = 1 + +cdef enum: cudaArraySurfaceLoadStore = 2 + +cdef enum: cudaArrayCubemap = 4 + +cdef enum: cudaArrayTextureGather = 8 + +cdef enum: cudaArrayColorAttachment = 32 + +cdef enum: cudaArraySparse = 64 + +cdef enum: cudaArrayDeferredMapping = 128 + +cdef enum: cudaIpcMemLazyEnablePeerAccess = 1 + +cdef enum: cudaMemAttachGlobal = 1 + +cdef enum: cudaMemAttachHost = 2 + +cdef enum: cudaMemAttachSingle = 4 + +cdef enum: cudaOccupancyDefault = 0 + +cdef enum: cudaOccupancyDisableCachingOverride = 1 + +cdef enum: cudaCpuDeviceId = -1 + +cdef enum: cudaInvalidDeviceId = -2 + +cdef enum: cudaInitDeviceFlagsAreValid = 1 + +cdef enum: cudaArraySparsePropertiesSingleMipTail = 1 + +cdef enum: cudaMemPoolCreateUsageHwDecompress = 2 + +cdef enum: CUDA_IPC_HANDLE_SIZE = 64 + +cdef enum: cudaExternalMemoryDedicated = 1 + +cdef enum: cudaExternalSemaphoreSignalSkipNvSciBufMemSync = 1 + +cdef enum: cudaExternalSemaphoreWaitSkipNvSciBufMemSync = 2 + +cdef enum: cudaNvSciSyncAttrSignal = 1 + +cdef enum: cudaNvSciSyncAttrWait = 2 + +cdef enum: cudaGraphKernelNodePortDefault = 0 + +cdef enum: cudaGraphKernelNodePortProgrammatic = 1 + +cdef enum: cudaGraphKernelNodePortLaunchCompletion = 2 + +cdef enum: cudaStreamAttributeAccessPolicyWindow = 1 + +cdef enum: cudaStreamAttributeSynchronizationPolicy = 3 + +cdef enum: cudaStreamAttributeMemSyncDomainMap = 9 + +cdef enum: cudaStreamAttributeMemSyncDomain = 10 + +cdef enum: cudaStreamAttributePriority = 8 + +cdef enum: cudaKernelNodeAttributeAccessPolicyWindow = 1 + +cdef enum: cudaKernelNodeAttributeCooperative = 2 + +cdef enum: cudaKernelNodeAttributePriority = 8 + +cdef enum: cudaKernelNodeAttributeClusterDimension = 4 + +cdef enum: cudaKernelNodeAttributeClusterSchedulingPolicyPreference = 5 + +cdef enum: cudaKernelNodeAttributeMemSyncDomainMap = 9 + +cdef enum: cudaKernelNodeAttributeMemSyncDomain = 10 + +cdef enum: cudaKernelNodeAttributePreferredSharedMemoryCarveout = 14 + +cdef enum: cudaKernelNodeAttributeDeviceUpdatableKernelNode = 13 + +cdef enum: cudaKernelNodeAttributeNvlinkUtilCentricScheduling = 16 + +cdef enum: cudaSurfaceType1D = 1 + +cdef enum: cudaSurfaceType2D = 2 + +cdef enum: cudaSurfaceType3D = 3 + +cdef enum: cudaSurfaceTypeCubemap = 12 + +cdef enum: cudaSurfaceType1DLayered = 241 + +cdef enum: cudaSurfaceType2DLayered = 242 + +cdef enum: cudaSurfaceTypeCubemapLayered = 252 + +cdef enum: cudaTextureType1D = 1 + +cdef enum: cudaTextureType2D = 2 + +cdef enum: cudaTextureType3D = 3 + +cdef enum: cudaTextureTypeCubemap = 12 + +cdef enum: cudaTextureType1DLayered = 241 + +cdef enum: cudaTextureType2DLayered = 242 + +cdef enum: cudaTextureTypeCubemapLayered = 252 + +cdef enum: CUDART_VERSION = 13030 + +cdef enum: __CUDART_API_VERSION = 13030 + +cdef enum: CUDA_EGL_MAX_PLANES = 3 \ No newline at end of file diff --git a/venv/lib/python3.11/site-packages/cuda/bindings/cyruntime_functions.pxi b/venv/lib/python3.11/site-packages/cuda/bindings/cyruntime_functions.pxi new file mode 100644 index 0000000000000000000000000000000000000000..30eb108ebf0356455b4a2d8078d07a352d195abf --- /dev/null +++ b/venv/lib/python3.11/site-packages/cuda/bindings/cyruntime_functions.pxi @@ -0,0 +1,975 @@ +# SPDX-FileCopyrightText: Copyright (c) 2021-2026 NVIDIA CORPORATION & AFFILIATES. All rights reserved. +# SPDX-License-Identifier: LicenseRef-NVIDIA-SOFTWARE-LICENSE + +# This code was automatically generated with version 13.3.0, generator version 0.3.1.dev1719+g565f73f4e. Do not modify it directly. +cdef extern from "cuda_runtime_api.h": + + + cudaError_t cudaDeviceReset() nogil + + + cudaError_t cudaDeviceSynchronize() nogil + + + cudaError_t cudaDeviceSetLimit(cudaLimit limit, size_t value) nogil + + + cudaError_t cudaDeviceGetLimit(size_t* pValue, cudaLimit limit) nogil + + + cudaError_t cudaDeviceGetTexture1DLinearMaxWidth(size_t* maxWidthInElements, const cudaChannelFormatDesc* fmtDesc, int device) nogil + + + cudaError_t cudaDeviceGetCacheConfig(cudaFuncCache* pCacheConfig) nogil + + + cudaError_t cudaDeviceGetStreamPriorityRange(int* leastPriority, int* greatestPriority) nogil + + + cudaError_t cudaDeviceSetCacheConfig(cudaFuncCache cacheConfig) nogil + + + cudaError_t cudaDeviceGetByPCIBusId(int* device, const char* pciBusId) nogil + + + cudaError_t cudaDeviceGetPCIBusId(char* pciBusId, int length, int device) nogil + + + cudaError_t cudaIpcGetEventHandle(cudaIpcEventHandle_t* handle, cudaEvent_t event) nogil + + + cudaError_t cudaIpcOpenEventHandle(cudaEvent_t* event, cudaIpcEventHandle_t handle) nogil + + + cudaError_t cudaIpcGetMemHandle(cudaIpcMemHandle_t* handle, void* devPtr) nogil + + + cudaError_t cudaIpcOpenMemHandle(void** devPtr, cudaIpcMemHandle_t handle, unsigned int flags) nogil + + + cudaError_t cudaIpcCloseMemHandle(void* devPtr) nogil + + + cudaError_t cudaDeviceFlushGPUDirectRDMAWrites(cudaFlushGPUDirectRDMAWritesTarget target, cudaFlushGPUDirectRDMAWritesScope scope) nogil + + + cudaError_t cudaDeviceRegisterAsyncNotification(int device, cudaAsyncCallback callbackFunc, void* userData, cudaAsyncCallbackHandle_t* callback) nogil + + + cudaError_t cudaDeviceUnregisterAsyncNotification(int device, cudaAsyncCallbackHandle_t callback) nogil + + + cudaError_t cudaDeviceGetSharedMemConfig(cudaSharedMemConfig* pConfig) nogil + + + cudaError_t cudaDeviceSetSharedMemConfig(cudaSharedMemConfig config) nogil + + + cudaError_t cudaGetLastError() nogil + + + cudaError_t cudaPeekAtLastError() nogil + + + const char* cudaGetErrorName(cudaError_t error) nogil + + + const char* cudaGetErrorString(cudaError_t error) nogil + + + cudaError_t cudaGetDeviceCount(int* count) nogil + + + cudaError_t cudaGetDeviceProperties(cudaDeviceProp* prop, int device) nogil + + + cudaError_t cudaDeviceGetAttribute(int* value, cudaDeviceAttr attr, int device) nogil + + + cudaError_t cudaDeviceGetHostAtomicCapabilities(unsigned int* capabilities, const cudaAtomicOperation* operations, unsigned int count, int device) nogil + + + cudaError_t cudaDeviceGetDefaultMemPool(cudaMemPool_t* memPool, int device) nogil + + + cudaError_t cudaDeviceSetMemPool(int device, cudaMemPool_t memPool) nogil + + + cudaError_t cudaDeviceGetMemPool(cudaMemPool_t* memPool, int device) nogil + + + cudaError_t cudaDeviceGetNvSciSyncAttributes(void* nvSciSyncAttrList, int device, int flags) nogil + + + cudaError_t cudaDeviceGetP2PAttribute(int* value, cudaDeviceP2PAttr attr, int srcDevice, int dstDevice) nogil + + + cudaError_t cudaDeviceGetP2PAtomicCapabilities(unsigned int* capabilities, const cudaAtomicOperation* operations, unsigned int count, int srcDevice, int dstDevice) nogil + + + cudaError_t cudaChooseDevice(int* device, const cudaDeviceProp* prop) nogil + + + cudaError_t cudaInitDevice(int device, unsigned int deviceFlags, unsigned int flags) nogil + + + cudaError_t cudaSetDevice(int device) nogil + + + cudaError_t cudaGetDevice(int* device) nogil + + + cudaError_t cudaSetDeviceFlags(unsigned int flags) nogil + + + cudaError_t cudaGetDeviceFlags(unsigned int* flags) nogil + + + cudaError_t cudaStreamCreate(cudaStream_t* pStream) nogil + + + cudaError_t cudaStreamCreateWithFlags(cudaStream_t* pStream, unsigned int flags) nogil + + + cudaError_t cudaStreamCreateWithPriority(cudaStream_t* pStream, unsigned int flags, int priority) nogil + + + cudaError_t cudaStreamGetPriority(cudaStream_t hStream, int* priority) nogil + + + cudaError_t cudaStreamGetFlags(cudaStream_t hStream, unsigned int* flags) nogil + + + cudaError_t cudaStreamGetId(cudaStream_t hStream, unsigned long long* streamId) nogil + + + cudaError_t cudaStreamGetDevice(cudaStream_t hStream, int* device) nogil + + + cudaError_t cudaCtxResetPersistingL2Cache() nogil + + + cudaError_t cudaStreamCopyAttributes(cudaStream_t dst, cudaStream_t src) nogil + + + cudaError_t cudaStreamGetAttribute(cudaStream_t hStream, cudaStreamAttrID attr, cudaStreamAttrValue* value_out) nogil + + + cudaError_t cudaStreamSetAttribute(cudaStream_t hStream, cudaStreamAttrID attr, const cudaStreamAttrValue* value) nogil + + + cudaError_t cudaStreamDestroy(cudaStream_t stream) nogil + + + cudaError_t cudaStreamWaitEvent(cudaStream_t stream, cudaEvent_t event, unsigned int flags) nogil + + + cudaError_t cudaStreamAddCallback(cudaStream_t stream, cudaStreamCallback_t callback, void* userData, unsigned int flags) nogil + + + cudaError_t cudaStreamSynchronize(cudaStream_t stream) nogil + + + cudaError_t cudaStreamQuery(cudaStream_t stream) nogil + + + cudaError_t cudaStreamAttachMemAsync(cudaStream_t stream, void* devPtr, size_t length, unsigned int flags) nogil + + + cudaError_t cudaStreamBeginCapture(cudaStream_t stream, cudaStreamCaptureMode mode) nogil + + + cudaError_t cudaStreamBeginRecaptureToGraph(cudaStream_t stream, cudaStreamCaptureMode mode, cudaGraph_t graph, cudaGraphRecaptureCallbackData* callbackData) nogil + + + cudaError_t cudaStreamBeginCaptureToGraph(cudaStream_t stream, cudaGraph_t graph, const cudaGraphNode_t* dependencies, const cudaGraphEdgeData* dependencyData, size_t numDependencies, cudaStreamCaptureMode mode) nogil + + + cudaError_t cudaThreadExchangeStreamCaptureMode(cudaStreamCaptureMode* mode) nogil + + + cudaError_t cudaStreamEndCapture(cudaStream_t stream, cudaGraph_t* pGraph) nogil + + + cudaError_t cudaStreamIsCapturing(cudaStream_t stream, cudaStreamCaptureStatus* pCaptureStatus) nogil + + + cudaError_t cudaStreamGetCaptureInfo(cudaStream_t stream, cudaStreamCaptureStatus* captureStatus_out, unsigned long long* id_out, cudaGraph_t* graph_out, const cudaGraphNode_t** dependencies_out, const cudaGraphEdgeData** edgeData_out, size_t* numDependencies_out) nogil + + + cudaError_t cudaStreamUpdateCaptureDependencies(cudaStream_t stream, cudaGraphNode_t* dependencies, const cudaGraphEdgeData* dependencyData, size_t numDependencies, unsigned int flags) nogil + + + cudaError_t cudaEventCreate(cudaEvent_t* event) nogil + + + cudaError_t cudaEventCreateWithFlags(cudaEvent_t* event, unsigned int flags) nogil + + + cudaError_t cudaEventRecord(cudaEvent_t event, cudaStream_t stream) nogil + + + cudaError_t cudaEventRecordWithFlags(cudaEvent_t event, cudaStream_t stream, unsigned int flags) nogil + + + cudaError_t cudaEventQuery(cudaEvent_t event) nogil + + + cudaError_t cudaEventSynchronize(cudaEvent_t event) nogil + + + cudaError_t cudaEventDestroy(cudaEvent_t event) nogil + + + cudaError_t cudaEventElapsedTime(float* ms, cudaEvent_t start, cudaEvent_t end) nogil + + + cudaError_t cudaImportExternalMemory(cudaExternalMemory_t* extMem_out, const cudaExternalMemoryHandleDesc* memHandleDesc) nogil + + + cudaError_t cudaExternalMemoryGetMappedBuffer(void** devPtr, cudaExternalMemory_t extMem, const cudaExternalMemoryBufferDesc* bufferDesc) nogil + + + cudaError_t cudaExternalMemoryGetMappedMipmappedArray(cudaMipmappedArray_t* mipmap, cudaExternalMemory_t extMem, const cudaExternalMemoryMipmappedArrayDesc* mipmapDesc) nogil + + + cudaError_t cudaDestroyExternalMemory(cudaExternalMemory_t extMem) nogil + + + cudaError_t cudaImportExternalSemaphore(cudaExternalSemaphore_t* extSem_out, const cudaExternalSemaphoreHandleDesc* semHandleDesc) nogil + + + cudaError_t cudaSignalExternalSemaphoresAsync(const cudaExternalSemaphore_t* extSemArray, const cudaExternalSemaphoreSignalParams* paramsArray, unsigned int numExtSems, cudaStream_t stream) nogil + + + cudaError_t cudaWaitExternalSemaphoresAsync(const cudaExternalSemaphore_t* extSemArray, const cudaExternalSemaphoreWaitParams* paramsArray, unsigned int numExtSems, cudaStream_t stream) nogil + + + cudaError_t cudaDestroyExternalSemaphore(cudaExternalSemaphore_t extSem) nogil + + + cudaError_t cudaFuncSetCacheConfig(const void* func, cudaFuncCache cacheConfig) nogil + + + cudaError_t cudaFuncGetAttributes(cudaFuncAttributes* attr, const void* func) nogil + + + cudaError_t cudaFuncSetAttribute(const void* func, cudaFuncAttribute attr, int value) nogil + + + cudaError_t cudaFuncGetParamCount(const void* func, size_t* paramCount) nogil + + + cudaError_t cudaLaunchHostFunc(cudaStream_t stream, cudaHostFn_t fn, void* userData) nogil + + + cudaError_t cudaLaunchHostFunc_v2(cudaStream_t stream, cudaHostFn_t fn, void* userData, unsigned int syncMode) nogil + + + cudaError_t cudaFuncSetSharedMemConfig(const void* func, cudaSharedMemConfig config) nogil + + + cudaError_t cudaOccupancyMaxActiveBlocksPerMultiprocessor(int* numBlocks, const void* func, int blockSize, size_t dynamicSMemSize) nogil + + + cudaError_t cudaOccupancyAvailableDynamicSMemPerBlock(size_t* dynamicSmemSize, const void* func, int numBlocks, int blockSize) nogil + + + cudaError_t cudaOccupancyMaxActiveBlocksPerMultiprocessorWithFlags(int* numBlocks, const void* func, int blockSize, size_t dynamicSMemSize, unsigned int flags) nogil + + + cudaError_t cudaMallocManaged(void** devPtr, size_t size, unsigned int flags) nogil + + + cudaError_t cudaMalloc(void** devPtr, size_t size) nogil + + + cudaError_t cudaMallocHost(void** ptr, size_t size) nogil + + + cudaError_t cudaMallocPitch(void** devPtr, size_t* pitch, size_t width, size_t height) nogil + + + cudaError_t cudaMallocArray(cudaArray_t* array, const cudaChannelFormatDesc* desc, size_t width, size_t height, unsigned int flags) nogil + + + cudaError_t cudaFree(void* devPtr) nogil + + + cudaError_t cudaFreeHost(void* ptr) nogil + + + cudaError_t cudaFreeArray(cudaArray_t array) nogil + + + cudaError_t cudaFreeMipmappedArray(cudaMipmappedArray_t mipmappedArray) nogil + + + cudaError_t cudaHostAlloc(void** pHost, size_t size, unsigned int flags) nogil + + + cudaError_t cudaHostRegister(void* ptr, size_t size, unsigned int flags) nogil + + + cudaError_t cudaHostUnregister(void* ptr) nogil + + + cudaError_t cudaHostGetDevicePointer(void** pDevice, void* pHost, unsigned int flags) nogil + + + cudaError_t cudaHostGetFlags(unsigned int* pFlags, void* pHost) nogil + + + cudaError_t cudaMalloc3D(cudaPitchedPtr* pitchedDevPtr, cudaExtent extent) nogil + + + cudaError_t cudaMalloc3DArray(cudaArray_t* array, const cudaChannelFormatDesc* desc, cudaExtent extent, unsigned int flags) nogil + + + cudaError_t cudaMallocMipmappedArray(cudaMipmappedArray_t* mipmappedArray, const cudaChannelFormatDesc* desc, cudaExtent extent, unsigned int numLevels, unsigned int flags) nogil + + + cudaError_t cudaGetMipmappedArrayLevel(cudaArray_t* levelArray, cudaMipmappedArray_const_t mipmappedArray, unsigned int level) nogil + + + cudaError_t cudaMemcpy3D(const cudaMemcpy3DParms* p) nogil + + + cudaError_t cudaMemcpy3DPeer(const cudaMemcpy3DPeerParms* p) nogil + + + cudaError_t cudaMemcpy3DAsync(const cudaMemcpy3DParms* p, cudaStream_t stream) nogil + + + cudaError_t cudaMemcpy3DPeerAsync(const cudaMemcpy3DPeerParms* p, cudaStream_t stream) nogil + + + cudaError_t cudaMemGetInfo(size_t* free, size_t* total) nogil + + + cudaError_t cudaArrayGetInfo(cudaChannelFormatDesc* desc, cudaExtent* extent, unsigned int* flags, cudaArray_t array) nogil + + + cudaError_t cudaArrayGetPlane(cudaArray_t* pPlaneArray, cudaArray_t hArray, unsigned int planeIdx) nogil + + + cudaError_t cudaArrayGetMemoryRequirements(cudaArrayMemoryRequirements* memoryRequirements, cudaArray_t array, int device) nogil + + + cudaError_t cudaMipmappedArrayGetMemoryRequirements(cudaArrayMemoryRequirements* memoryRequirements, cudaMipmappedArray_t mipmap, int device) nogil + + + cudaError_t cudaArrayGetSparseProperties(cudaArraySparseProperties* sparseProperties, cudaArray_t array) nogil + + + cudaError_t cudaMipmappedArrayGetSparseProperties(cudaArraySparseProperties* sparseProperties, cudaMipmappedArray_t mipmap) nogil + + + cudaError_t cudaMemcpy(void* dst, const void* src, size_t count, cudaMemcpyKind kind) nogil + + + cudaError_t cudaMemcpyPeer(void* dst, int dstDevice, const void* src, int srcDevice, size_t count) nogil + + + cudaError_t cudaMemcpy2D(void* dst, size_t dpitch, const void* src, size_t spitch, size_t width, size_t height, cudaMemcpyKind kind) nogil + + + cudaError_t cudaMemcpy2DToArray(cudaArray_t dst, size_t wOffset, size_t hOffset, const void* src, size_t spitch, size_t width, size_t height, cudaMemcpyKind kind) nogil + + + cudaError_t cudaMemcpy2DFromArray(void* dst, size_t dpitch, cudaArray_const_t src, size_t wOffset, size_t hOffset, size_t width, size_t height, cudaMemcpyKind kind) nogil + + + cudaError_t cudaMemcpy2DArrayToArray(cudaArray_t dst, size_t wOffsetDst, size_t hOffsetDst, cudaArray_const_t src, size_t wOffsetSrc, size_t hOffsetSrc, size_t width, size_t height, cudaMemcpyKind kind) nogil + + + cudaError_t cudaMemcpyAsync(void* dst, const void* src, size_t count, cudaMemcpyKind kind, cudaStream_t stream) nogil + + + cudaError_t cudaMemcpyPeerAsync(void* dst, int dstDevice, const void* src, int srcDevice, size_t count, cudaStream_t stream) nogil + + + cudaError_t cudaMemcpyBatchAsync(const void** dsts, const void** srcs, const size_t* sizes, size_t count, cudaMemcpyAttributes* attrs, size_t* attrsIdxs, size_t numAttrs, cudaStream_t stream) nogil + + + cudaError_t cudaMemcpy3DBatchAsync(size_t numOps, cudaMemcpy3DBatchOp* opList, unsigned long long flags, cudaStream_t stream) nogil + + + cudaError_t cudaMemcpyWithAttributesAsync(void* dst, const void* src, size_t size, cudaMemcpyAttributes* attr, cudaStream_t stream) nogil + + + cudaError_t cudaMemcpy3DWithAttributesAsync(cudaMemcpy3DBatchOp* op, unsigned long long flags, cudaStream_t stream) nogil + + + cudaError_t cudaMemcpy2DAsync(void* dst, size_t dpitch, const void* src, size_t spitch, size_t width, size_t height, cudaMemcpyKind kind, cudaStream_t stream) nogil + + + cudaError_t cudaMemcpy2DToArrayAsync(cudaArray_t dst, size_t wOffset, size_t hOffset, const void* src, size_t spitch, size_t width, size_t height, cudaMemcpyKind kind, cudaStream_t stream) nogil + + + cudaError_t cudaMemcpy2DFromArrayAsync(void* dst, size_t dpitch, cudaArray_const_t src, size_t wOffset, size_t hOffset, size_t width, size_t height, cudaMemcpyKind kind, cudaStream_t stream) nogil + + + cudaError_t cudaMemset(void* devPtr, int value, size_t count) nogil + + + cudaError_t cudaMemset2D(void* devPtr, size_t pitch, int value, size_t width, size_t height) nogil + + + cudaError_t cudaMemset3D(cudaPitchedPtr pitchedDevPtr, int value, cudaExtent extent) nogil + + + cudaError_t cudaMemsetAsync(void* devPtr, int value, size_t count, cudaStream_t stream) nogil + + + cudaError_t cudaMemset2DAsync(void* devPtr, size_t pitch, int value, size_t width, size_t height, cudaStream_t stream) nogil + + + cudaError_t cudaMemset3DAsync(cudaPitchedPtr pitchedDevPtr, int value, cudaExtent extent, cudaStream_t stream) nogil + + + cudaError_t cudaMemPrefetchAsync(const void* devPtr, size_t count, cudaMemLocation location, unsigned int flags, cudaStream_t stream) nogil + + + cudaError_t cudaMemPrefetchBatchAsync(void** dptrs, size_t* sizes, size_t count, cudaMemLocation* prefetchLocs, size_t* prefetchLocIdxs, size_t numPrefetchLocs, unsigned long long flags, cudaStream_t stream) nogil + + + cudaError_t cudaMemDiscardBatchAsync(void** dptrs, size_t* sizes, size_t count, unsigned long long flags, cudaStream_t stream) nogil + + + cudaError_t cudaMemDiscardAndPrefetchBatchAsync(void** dptrs, size_t* sizes, size_t count, cudaMemLocation* prefetchLocs, size_t* prefetchLocIdxs, size_t numPrefetchLocs, unsigned long long flags, cudaStream_t stream) nogil + + + cudaError_t cudaMemAdvise(const void* devPtr, size_t count, cudaMemoryAdvise advice, cudaMemLocation location) nogil + + + cudaError_t cudaMemRangeGetAttribute(void* data, size_t dataSize, cudaMemRangeAttribute attribute, const void* devPtr, size_t count) nogil + + + cudaError_t cudaMemRangeGetAttributes(void** data, size_t* dataSizes, cudaMemRangeAttribute* attributes, size_t numAttributes, const void* devPtr, size_t count) nogil + + + cudaError_t cudaMemcpyToArray(cudaArray_t dst, size_t wOffset, size_t hOffset, const void* src, size_t count, cudaMemcpyKind kind) nogil + + + cudaError_t cudaMemcpyFromArray(void* dst, cudaArray_const_t src, size_t wOffset, size_t hOffset, size_t count, cudaMemcpyKind kind) nogil + + + cudaError_t cudaMemcpyArrayToArray(cudaArray_t dst, size_t wOffsetDst, size_t hOffsetDst, cudaArray_const_t src, size_t wOffsetSrc, size_t hOffsetSrc, size_t count, cudaMemcpyKind kind) nogil + + + cudaError_t cudaMemcpyToArrayAsync(cudaArray_t dst, size_t wOffset, size_t hOffset, const void* src, size_t count, cudaMemcpyKind kind, cudaStream_t stream) nogil + + + cudaError_t cudaMemcpyFromArrayAsync(void* dst, cudaArray_const_t src, size_t wOffset, size_t hOffset, size_t count, cudaMemcpyKind kind, cudaStream_t stream) nogil + + + cudaError_t cudaMallocAsync(void** devPtr, size_t size, cudaStream_t hStream) nogil + + + cudaError_t cudaFreeAsync(void* devPtr, cudaStream_t hStream) nogil + + + cudaError_t cudaMemPoolTrimTo(cudaMemPool_t memPool, size_t minBytesToKeep) nogil + + + cudaError_t cudaMemPoolSetAttribute(cudaMemPool_t memPool, cudaMemPoolAttr attr, void* value) nogil + + + cudaError_t cudaMemPoolGetAttribute(cudaMemPool_t memPool, cudaMemPoolAttr attr, void* value) nogil + + + cudaError_t cudaMemPoolSetAccess(cudaMemPool_t memPool, const cudaMemAccessDesc* descList, size_t count) nogil + + + cudaError_t cudaMemPoolGetAccess(cudaMemAccessFlags* flags, cudaMemPool_t memPool, cudaMemLocation* location) nogil + + + cudaError_t cudaMemPoolCreate(cudaMemPool_t* memPool, const cudaMemPoolProps* poolProps) nogil + + + cudaError_t cudaMemPoolDestroy(cudaMemPool_t memPool) nogil + + + cudaError_t cudaMemGetDefaultMemPool(cudaMemPool_t* memPool, cudaMemLocation* location, cudaMemAllocationType typename) nogil + + + cudaError_t cudaMemGetMemPool(cudaMemPool_t* memPool, cudaMemLocation* location, cudaMemAllocationType typename) nogil + + + cudaError_t cudaMemSetMemPool(cudaMemLocation* location, cudaMemAllocationType typename, cudaMemPool_t memPool) nogil + + + cudaError_t cudaMallocFromPoolAsync(void** ptr, size_t size, cudaMemPool_t memPool, cudaStream_t stream) nogil + + + cudaError_t cudaMemPoolExportToShareableHandle(void* shareableHandle, cudaMemPool_t memPool, cudaMemAllocationHandleType handleType, unsigned int flags) nogil + + + cudaError_t cudaMemPoolImportFromShareableHandle(cudaMemPool_t* memPool, void* shareableHandle, cudaMemAllocationHandleType handleType, unsigned int flags) nogil + + + cudaError_t cudaMemPoolExportPointer(cudaMemPoolPtrExportData* exportData, void* ptr) nogil + + + cudaError_t cudaMemPoolImportPointer(void** ptr, cudaMemPool_t memPool, cudaMemPoolPtrExportData* exportData) nogil + + + cudaError_t cudaPointerGetAttributes(cudaPointerAttributes* attributes, const void* ptr) nogil + + + cudaError_t cudaDeviceCanAccessPeer(int* canAccessPeer, int device, int peerDevice) nogil + + + cudaError_t cudaDeviceEnablePeerAccess(int peerDevice, unsigned int flags) nogil + + + cudaError_t cudaDeviceDisablePeerAccess(int peerDevice) nogil + + + cudaError_t cudaGraphicsUnregisterResource(cudaGraphicsResource_t resource) nogil + + + cudaError_t cudaGraphicsResourceSetMapFlags(cudaGraphicsResource_t resource, unsigned int flags) nogil + + + cudaError_t cudaGraphicsMapResources(int count, cudaGraphicsResource_t* resources, cudaStream_t stream) nogil + + + cudaError_t cudaGraphicsUnmapResources(int count, cudaGraphicsResource_t* resources, cudaStream_t stream) nogil + + + cudaError_t cudaGraphicsResourceGetMappedPointer(void** devPtr, size_t* size, cudaGraphicsResource_t resource) nogil + + + cudaError_t cudaGraphicsSubResourceGetMappedArray(cudaArray_t* array, cudaGraphicsResource_t resource, unsigned int arrayIndex, unsigned int mipLevel) nogil + + + cudaError_t cudaGraphicsResourceGetMappedMipmappedArray(cudaMipmappedArray_t* mipmappedArray, cudaGraphicsResource_t resource) nogil + + + cudaError_t cudaGetChannelDesc(cudaChannelFormatDesc* desc, cudaArray_const_t array) nogil + + + cudaChannelFormatDesc cudaCreateChannelDesc(int x, int y, int z, int w, cudaChannelFormatKind f) nogil + + + cudaError_t cudaCreateTextureObject(cudaTextureObject_t* pTexObject, const cudaResourceDesc* pResDesc, const cudaTextureDesc* pTexDesc, const cudaResourceViewDesc* pResViewDesc) nogil + + + cudaError_t cudaDestroyTextureObject(cudaTextureObject_t texObject) nogil + + + cudaError_t cudaGetTextureObjectResourceDesc(cudaResourceDesc* pResDesc, cudaTextureObject_t texObject) nogil + + + cudaError_t cudaGetTextureObjectTextureDesc(cudaTextureDesc* pTexDesc, cudaTextureObject_t texObject) nogil + + + cudaError_t cudaGetTextureObjectResourceViewDesc(cudaResourceViewDesc* pResViewDesc, cudaTextureObject_t texObject) nogil + + + cudaError_t cudaCreateSurfaceObject(cudaSurfaceObject_t* pSurfObject, const cudaResourceDesc* pResDesc) nogil + + + cudaError_t cudaDestroySurfaceObject(cudaSurfaceObject_t surfObject) nogil + + + cudaError_t cudaGetSurfaceObjectResourceDesc(cudaResourceDesc* pResDesc, cudaSurfaceObject_t surfObject) nogil + + + cudaError_t cudaDriverGetVersion(int* driverVersion) nogil + + + cudaError_t cudaRuntimeGetVersion(int* runtimeVersion) nogil + + + cudaError_t cudaLogsRegisterCallback(cudaLogsCallback_t callbackFunc, void* userData, cudaLogsCallbackHandle* callback_out) nogil + + + cudaError_t cudaLogsUnregisterCallback(cudaLogsCallbackHandle callback) nogil + + + cudaError_t cudaLogsCurrent(cudaLogIterator* iterator_out, unsigned int flags) nogil + + + cudaError_t cudaLogsDumpToFile(cudaLogIterator* iterator, const char* pathToFile, unsigned int flags) nogil + + + cudaError_t cudaLogsDumpToMemory(cudaLogIterator* iterator, char* buffer, size_t* size, unsigned int flags) nogil + + + cudaError_t cudaGraphCreate(cudaGraph_t* pGraph, unsigned int flags) nogil + + + cudaError_t cudaGraphAddKernelNode(cudaGraphNode_t* pGraphNode, cudaGraph_t graph, const cudaGraphNode_t* pDependencies, size_t numDependencies, const cudaKernelNodeParams* pNodeParams) nogil + + + cudaError_t cudaGraphKernelNodeGetParams(cudaGraphNode_t node, cudaKernelNodeParams* pNodeParams) nogil + + + cudaError_t cudaGraphKernelNodeSetParams(cudaGraphNode_t node, const cudaKernelNodeParams* pNodeParams) nogil + + + cudaError_t cudaGraphKernelNodeCopyAttributes(cudaGraphNode_t hDst, cudaGraphNode_t hSrc) nogil + + + cudaError_t cudaGraphKernelNodeGetAttribute(cudaGraphNode_t hNode, cudaKernelNodeAttrID attr, cudaKernelNodeAttrValue* value_out) nogil + + + cudaError_t cudaGraphKernelNodeSetAttribute(cudaGraphNode_t hNode, cudaKernelNodeAttrID attr, const cudaKernelNodeAttrValue* value) nogil + + + cudaError_t cudaGraphAddMemcpyNode(cudaGraphNode_t* pGraphNode, cudaGraph_t graph, const cudaGraphNode_t* pDependencies, size_t numDependencies, const cudaMemcpy3DParms* pCopyParams) nogil + + + cudaError_t cudaGraphAddMemcpyNode1D(cudaGraphNode_t* pGraphNode, cudaGraph_t graph, const cudaGraphNode_t* pDependencies, size_t numDependencies, void* dst, const void* src, size_t count, cudaMemcpyKind kind) nogil + + + cudaError_t cudaGraphMemcpyNodeGetParams(cudaGraphNode_t node, cudaMemcpy3DParms* pNodeParams) nogil + + + cudaError_t cudaGraphMemcpyNodeSetParams(cudaGraphNode_t node, const cudaMemcpy3DParms* pNodeParams) nogil + + + cudaError_t cudaGraphMemcpyNodeSetParams1D(cudaGraphNode_t node, void* dst, const void* src, size_t count, cudaMemcpyKind kind) nogil + + + cudaError_t cudaGraphAddMemsetNode(cudaGraphNode_t* pGraphNode, cudaGraph_t graph, const cudaGraphNode_t* pDependencies, size_t numDependencies, const cudaMemsetParams* pMemsetParams) nogil + + + cudaError_t cudaGraphMemsetNodeGetParams(cudaGraphNode_t node, cudaMemsetParams* pNodeParams) nogil + + + cudaError_t cudaGraphMemsetNodeSetParams(cudaGraphNode_t node, const cudaMemsetParams* pNodeParams) nogil + + + cudaError_t cudaGraphAddHostNode(cudaGraphNode_t* pGraphNode, cudaGraph_t graph, const cudaGraphNode_t* pDependencies, size_t numDependencies, const cudaHostNodeParams* pNodeParams) nogil + + + cudaError_t cudaGraphHostNodeGetParams(cudaGraphNode_t node, cudaHostNodeParams* pNodeParams) nogil + + + cudaError_t cudaGraphHostNodeSetParams(cudaGraphNode_t node, const cudaHostNodeParams* pNodeParams) nogil + + + cudaError_t cudaGraphAddChildGraphNode(cudaGraphNode_t* pGraphNode, cudaGraph_t graph, const cudaGraphNode_t* pDependencies, size_t numDependencies, cudaGraph_t childGraph) nogil + + + cudaError_t cudaGraphChildGraphNodeGetGraph(cudaGraphNode_t node, cudaGraph_t* pGraph) nogil + + + cudaError_t cudaGraphAddEmptyNode(cudaGraphNode_t* pGraphNode, cudaGraph_t graph, const cudaGraphNode_t* pDependencies, size_t numDependencies) nogil + + + cudaError_t cudaGraphAddEventRecordNode(cudaGraphNode_t* pGraphNode, cudaGraph_t graph, const cudaGraphNode_t* pDependencies, size_t numDependencies, cudaEvent_t event) nogil + + + cudaError_t cudaGraphEventRecordNodeGetEvent(cudaGraphNode_t node, cudaEvent_t* event_out) nogil + + + cudaError_t cudaGraphEventRecordNodeSetEvent(cudaGraphNode_t node, cudaEvent_t event) nogil + + + cudaError_t cudaGraphAddEventWaitNode(cudaGraphNode_t* pGraphNode, cudaGraph_t graph, const cudaGraphNode_t* pDependencies, size_t numDependencies, cudaEvent_t event) nogil + + + cudaError_t cudaGraphEventWaitNodeGetEvent(cudaGraphNode_t node, cudaEvent_t* event_out) nogil + + + cudaError_t cudaGraphEventWaitNodeSetEvent(cudaGraphNode_t node, cudaEvent_t event) nogil + + + cudaError_t cudaGraphAddExternalSemaphoresSignalNode(cudaGraphNode_t* pGraphNode, cudaGraph_t graph, const cudaGraphNode_t* pDependencies, size_t numDependencies, const cudaExternalSemaphoreSignalNodeParams* nodeParams) nogil + + + cudaError_t cudaGraphExternalSemaphoresSignalNodeGetParams(cudaGraphNode_t hNode, cudaExternalSemaphoreSignalNodeParams* params_out) nogil + + + cudaError_t cudaGraphExternalSemaphoresSignalNodeSetParams(cudaGraphNode_t hNode, const cudaExternalSemaphoreSignalNodeParams* nodeParams) nogil + + + cudaError_t cudaGraphAddExternalSemaphoresWaitNode(cudaGraphNode_t* pGraphNode, cudaGraph_t graph, const cudaGraphNode_t* pDependencies, size_t numDependencies, const cudaExternalSemaphoreWaitNodeParams* nodeParams) nogil + + + cudaError_t cudaGraphExternalSemaphoresWaitNodeGetParams(cudaGraphNode_t hNode, cudaExternalSemaphoreWaitNodeParams* params_out) nogil + + + cudaError_t cudaGraphExternalSemaphoresWaitNodeSetParams(cudaGraphNode_t hNode, const cudaExternalSemaphoreWaitNodeParams* nodeParams) nogil + + + cudaError_t cudaGraphAddMemAllocNode(cudaGraphNode_t* pGraphNode, cudaGraph_t graph, const cudaGraphNode_t* pDependencies, size_t numDependencies, cudaMemAllocNodeParams* nodeParams) nogil + + + cudaError_t cudaGraphMemAllocNodeGetParams(cudaGraphNode_t node, cudaMemAllocNodeParams* params_out) nogil + + + cudaError_t cudaGraphAddMemFreeNode(cudaGraphNode_t* pGraphNode, cudaGraph_t graph, const cudaGraphNode_t* pDependencies, size_t numDependencies, void* dptr) nogil + + + cudaError_t cudaGraphMemFreeNodeGetParams(cudaGraphNode_t node, void* dptr_out) nogil + + + cudaError_t cudaDeviceGraphMemTrim(int device) nogil + + + cudaError_t cudaDeviceGetGraphMemAttribute(int device, cudaGraphMemAttributeType attr, void* value) nogil + + + cudaError_t cudaDeviceSetGraphMemAttribute(int device, cudaGraphMemAttributeType attr, void* value) nogil + + + cudaError_t cudaGraphClone(cudaGraph_t* pGraphClone, cudaGraph_t originalGraph) nogil + + + cudaError_t cudaGraphNodeFindInClone(cudaGraphNode_t* pNode, cudaGraphNode_t originalNode, cudaGraph_t clonedGraph) nogil + + + cudaError_t cudaGraphNodeGetType(cudaGraphNode_t node, cudaGraphNodeType* pType) nogil + + + cudaError_t cudaGraphNodeGetContainingGraph(cudaGraphNode_t hNode, cudaGraph_t* phGraph) nogil + + + cudaError_t cudaGraphNodeGetLocalId(cudaGraphNode_t hNode, unsigned int* nodeId) nogil + + + cudaError_t cudaGraphNodeGetToolsId(cudaGraphNode_t hNode, unsigned long long* toolsNodeId) nogil + + + cudaError_t cudaGraphGetId(cudaGraph_t hGraph, unsigned int* graphID) nogil + + + cudaError_t cudaGraphExecGetId(cudaGraphExec_t hGraphExec, unsigned int* graphID) nogil + + + cudaError_t cudaGraphGetNodes(cudaGraph_t graph, cudaGraphNode_t* nodes, size_t* numNodes) nogil + + + cudaError_t cudaGraphGetRootNodes(cudaGraph_t graph, cudaGraphNode_t* pRootNodes, size_t* pNumRootNodes) nogil + + + cudaError_t cudaGraphGetEdges(cudaGraph_t graph, cudaGraphNode_t* from_, cudaGraphNode_t* to, cudaGraphEdgeData* edgeData, size_t* numEdges) nogil + + + cudaError_t cudaGraphNodeGetDependencies(cudaGraphNode_t node, cudaGraphNode_t* pDependencies, cudaGraphEdgeData* edgeData, size_t* pNumDependencies) nogil + + + cudaError_t cudaGraphNodeGetDependentNodes(cudaGraphNode_t node, cudaGraphNode_t* pDependentNodes, cudaGraphEdgeData* edgeData, size_t* pNumDependentNodes) nogil + + + cudaError_t cudaGraphAddDependencies(cudaGraph_t graph, const cudaGraphNode_t* from_, const cudaGraphNode_t* to, const cudaGraphEdgeData* edgeData, size_t numDependencies) nogil + + + cudaError_t cudaGraphRemoveDependencies(cudaGraph_t graph, const cudaGraphNode_t* from_, const cudaGraphNode_t* to, const cudaGraphEdgeData* edgeData, size_t numDependencies) nogil + + + cudaError_t cudaGraphDestroyNode(cudaGraphNode_t node) nogil + + + cudaError_t cudaGraphInstantiate(cudaGraphExec_t* pGraphExec, cudaGraph_t graph, unsigned long long flags) nogil + + + cudaError_t cudaGraphInstantiateWithFlags(cudaGraphExec_t* pGraphExec, cudaGraph_t graph, unsigned long long flags) nogil + + + cudaError_t cudaGraphInstantiateWithParams(cudaGraphExec_t* pGraphExec, cudaGraph_t graph, cudaGraphInstantiateParams* instantiateParams) nogil + + + cudaError_t cudaGraphExecGetFlags(cudaGraphExec_t graphExec, unsigned long long* flags) nogil + + + cudaError_t cudaGraphExecKernelNodeSetParams(cudaGraphExec_t hGraphExec, cudaGraphNode_t node, const cudaKernelNodeParams* pNodeParams) nogil + + + cudaError_t cudaGraphExecMemcpyNodeSetParams(cudaGraphExec_t hGraphExec, cudaGraphNode_t node, const cudaMemcpy3DParms* pNodeParams) nogil + + + cudaError_t cudaGraphExecMemcpyNodeSetParams1D(cudaGraphExec_t hGraphExec, cudaGraphNode_t node, void* dst, const void* src, size_t count, cudaMemcpyKind kind) nogil + + + cudaError_t cudaGraphExecMemsetNodeSetParams(cudaGraphExec_t hGraphExec, cudaGraphNode_t node, const cudaMemsetParams* pNodeParams) nogil + + + cudaError_t cudaGraphExecHostNodeSetParams(cudaGraphExec_t hGraphExec, cudaGraphNode_t node, const cudaHostNodeParams* pNodeParams) nogil + + + cudaError_t cudaGraphExecChildGraphNodeSetParams(cudaGraphExec_t hGraphExec, cudaGraphNode_t node, cudaGraph_t childGraph) nogil + + + cudaError_t cudaGraphExecEventRecordNodeSetEvent(cudaGraphExec_t hGraphExec, cudaGraphNode_t hNode, cudaEvent_t event) nogil + + + cudaError_t cudaGraphExecEventWaitNodeSetEvent(cudaGraphExec_t hGraphExec, cudaGraphNode_t hNode, cudaEvent_t event) nogil + + + cudaError_t cudaGraphExecExternalSemaphoresSignalNodeSetParams(cudaGraphExec_t hGraphExec, cudaGraphNode_t hNode, const cudaExternalSemaphoreSignalNodeParams* nodeParams) nogil + + + cudaError_t cudaGraphExecExternalSemaphoresWaitNodeSetParams(cudaGraphExec_t hGraphExec, cudaGraphNode_t hNode, const cudaExternalSemaphoreWaitNodeParams* nodeParams) nogil + + + cudaError_t cudaGraphNodeSetEnabled(cudaGraphExec_t hGraphExec, cudaGraphNode_t hNode, unsigned int isEnabled) nogil + + + cudaError_t cudaGraphNodeGetEnabled(cudaGraphExec_t hGraphExec, cudaGraphNode_t hNode, unsigned int* isEnabled) nogil + + + cudaError_t cudaGraphExecUpdate(cudaGraphExec_t hGraphExec, cudaGraph_t hGraph, cudaGraphExecUpdateResultInfo* resultInfo) nogil + + + cudaError_t cudaGraphUpload(cudaGraphExec_t graphExec, cudaStream_t stream) nogil + + + cudaError_t cudaGraphLaunch(cudaGraphExec_t graphExec, cudaStream_t stream) nogil + + + cudaError_t cudaGraphExecDestroy(cudaGraphExec_t graphExec) nogil + + + cudaError_t cudaGraphDestroy(cudaGraph_t graph) nogil + + + cudaError_t cudaGraphDebugDotPrint(cudaGraph_t graph, const char* path, unsigned int flags) nogil + + + cudaError_t cudaUserObjectCreate(cudaUserObject_t* object_out, void* ptr, cudaHostFn_t destroy, unsigned int initialRefcount, unsigned int flags) nogil + + + cudaError_t cudaUserObjectRetain(cudaUserObject_t object, unsigned int count) nogil + + + cudaError_t cudaUserObjectRelease(cudaUserObject_t object, unsigned int count) nogil + + + cudaError_t cudaGraphRetainUserObject(cudaGraph_t graph, cudaUserObject_t object, unsigned int count, unsigned int flags) nogil + + + cudaError_t cudaGraphReleaseUserObject(cudaGraph_t graph, cudaUserObject_t object, unsigned int count) nogil + + + cudaError_t cudaGraphAddNode(cudaGraphNode_t* pGraphNode, cudaGraph_t graph, const cudaGraphNode_t* pDependencies, const cudaGraphEdgeData* dependencyData, size_t numDependencies, cudaGraphNodeParams* nodeParams) nogil + + + cudaError_t cudaGraphNodeSetParams(cudaGraphNode_t node, cudaGraphNodeParams* nodeParams) nogil + + + cudaError_t cudaGraphNodeGetParams(cudaGraphNode_t node, cudaGraphNodeParams* nodeParams) nogil + + + cudaError_t cudaGraphExecNodeSetParams(cudaGraphExec_t graphExec, cudaGraphNode_t node, cudaGraphNodeParams* nodeParams) nogil + + + cudaError_t cudaGraphConditionalHandleCreate(cudaGraphConditionalHandle* pHandle_out, cudaGraph_t graph, unsigned int defaultLaunchValue, unsigned int flags) nogil + + + cudaError_t cudaGraphConditionalHandleCreate_v2(cudaGraphConditionalHandle* pHandle_out, cudaGraph_t graph, cudaExecutionContext_t ctx, unsigned int defaultLaunchValue, unsigned int flags) nogil + + + cudaError_t cudaGetDriverEntryPoint(const char* symbol, void** funcPtr, unsigned long long flags, cudaDriverEntryPointQueryResult* driverStatus) nogil + + + cudaError_t cudaGetDriverEntryPointByVersion(const char* symbol, void** funcPtr, unsigned int cudaVersion, unsigned long long flags, cudaDriverEntryPointQueryResult* driverStatus) nogil + + + cudaError_t cudaLibraryLoadData(cudaLibrary_t* library, const void* code, cudaJitOption* jitOptions, void** jitOptionsValues, unsigned int numJitOptions, cudaLibraryOption* libraryOptions, void** libraryOptionValues, unsigned int numLibraryOptions) nogil + + + cudaError_t cudaLibraryLoadFromFile(cudaLibrary_t* library, const char* fileName, cudaJitOption* jitOptions, void** jitOptionsValues, unsigned int numJitOptions, cudaLibraryOption* libraryOptions, void** libraryOptionValues, unsigned int numLibraryOptions) nogil + + + cudaError_t cudaLibraryUnload(cudaLibrary_t library) nogil + + + cudaError_t cudaLibraryGetKernel(cudaKernel_t* pKernel, cudaLibrary_t library, const char* name) nogil + + + cudaError_t cudaLibraryGetGlobal(void** dptr, size_t* numbytes, cudaLibrary_t library, const char* name) nogil + + + cudaError_t cudaLibraryGetManaged(void** dptr, size_t* numbytes, cudaLibrary_t library, const char* name) nogil + + + cudaError_t cudaLibraryGetUnifiedFunction(void** fptr, cudaLibrary_t library, const char* symbol) nogil + + + cudaError_t cudaLibraryGetKernelCount(unsigned int* count, cudaLibrary_t lib) nogil + + + cudaError_t cudaLibraryEnumerateKernels(cudaKernel_t* kernels, unsigned int numKernels, cudaLibrary_t lib) nogil + + + cudaError_t cudaKernelSetAttributeForDevice(cudaKernel_t kernel, cudaFuncAttribute attr, int value, int device) nogil + + + cudaError_t cudaDeviceGetDevResource(int device, cudaDevResource* resource, cudaDevResourceType typename) nogil + + + cudaError_t cudaDevSmResourceSplitByCount(cudaDevResource* result, unsigned int* nbGroups, const cudaDevResource* input, cudaDevResource* remaining, unsigned int flags, unsigned int minCount) nogil + + + cudaError_t cudaDevSmResourceSplit(cudaDevResource* result, unsigned int nbGroups, const cudaDevResource* input, cudaDevResource* remainder, unsigned int flags, cudaDevSmResourceGroupParams* groupParams) nogil + + + cudaError_t cudaDevResourceGenerateDesc(cudaDevResourceDesc_t* phDesc, cudaDevResource* resources, unsigned int nbResources) nogil + + + cudaError_t cudaGreenCtxCreate(cudaExecutionContext_t* phCtx, cudaDevResourceDesc_t desc, int device, unsigned int flags) nogil + + + cudaError_t cudaExecutionCtxDestroy(cudaExecutionContext_t ctx) nogil + + + cudaError_t cudaExecutionCtxGetDevResource(cudaExecutionContext_t ctx, cudaDevResource* resource, cudaDevResourceType typename) nogil + + + cudaError_t cudaExecutionCtxGetDevice(int* device, cudaExecutionContext_t ctx) nogil + + + cudaError_t cudaExecutionCtxGetId(cudaExecutionContext_t ctx, unsigned long long* ctxId) nogil + + + cudaError_t cudaExecutionCtxStreamCreate(cudaStream_t* phStream, cudaExecutionContext_t ctx, unsigned int flags, int priority) nogil + + + cudaError_t cudaExecutionCtxSynchronize(cudaExecutionContext_t ctx) nogil + + + cudaError_t cudaStreamGetDevResource(cudaStream_t hStream, cudaDevResource* resource, cudaDevResourceType typename) nogil + + + cudaError_t cudaExecutionCtxRecordEvent(cudaExecutionContext_t ctx, cudaEvent_t event) nogil + + + cudaError_t cudaExecutionCtxWaitEvent(cudaExecutionContext_t ctx, cudaEvent_t event) nogil + + + cudaError_t cudaDeviceGetExecutionCtx(cudaExecutionContext_t* ctx, int device) nogil + + + cudaError_t cudaGetExportTable(const void** ppExportTable, const cudaUUID_t* pExportTableId) nogil + + + cudaError_t cudaGetKernel(cudaKernel_t* kernelPtr, const void* entryFuncAddr) nogil + + +cdef extern from "cuda_runtime.h": + + + cudaPitchedPtr make_cudaPitchedPtr(void* d, size_t p, size_t xsz, size_t ysz) nogil + + + cudaPos make_cudaPos(size_t x, size_t y, size_t z) nogil + + + cudaExtent make_cudaExtent(size_t w, size_t h, size_t d) nogil + + +cdef extern from "cuda_profiler_api.h": + + + cudaError_t cudaProfilerStart() nogil + + + cudaError_t cudaProfilerStop() nogil + diff --git a/venv/lib/python3.11/site-packages/cuda/bindings/cyruntime_types.pxi b/venv/lib/python3.11/site-packages/cuda/bindings/cyruntime_types.pxi new file mode 100644 index 0000000000000000000000000000000000000000..a7ad5839ac8ff1ab7d1545bd1a69c3c6309c32b0 --- /dev/null +++ b/venv/lib/python3.11/site-packages/cuda/bindings/cyruntime_types.pxi @@ -0,0 +1,1777 @@ +# SPDX-FileCopyrightText: Copyright (c) 2021-2026 NVIDIA CORPORATION & AFFILIATES. All rights reserved. +# SPDX-License-Identifier: LicenseRef-NVIDIA-SOFTWARE-LICENSE + +# This code was automatically generated with version 13.3.0, generator version 0.3.1.dev1719+g565f73f4e. Do not modify it directly. + +cdef extern from "vector_types.h": + + cdef struct dim3: + unsigned int x + unsigned int y + unsigned int z + +cdef extern from "driver_types.h": + + cdef enum cudaError: + cudaSuccess = 0 + cudaErrorInvalidValue = 1 + cudaErrorMemoryAllocation = 2 + cudaErrorInitializationError = 3 + cudaErrorCudartUnloading = 4 + cudaErrorProfilerDisabled = 5 + cudaErrorProfilerNotInitialized = 6 + cudaErrorProfilerAlreadyStarted = 7 + cudaErrorProfilerAlreadyStopped = 8 + cudaErrorInvalidConfiguration = 9 + cudaErrorVersionTranslation = 10 + cudaErrorInvalidPitchValue = 12 + cudaErrorInvalidSymbol = 13 + cudaErrorInvalidHostPointer = 16 + cudaErrorInvalidDevicePointer = 17 + cudaErrorInvalidTexture = 18 + cudaErrorInvalidTextureBinding = 19 + cudaErrorInvalidChannelDescriptor = 20 + cudaErrorInvalidMemcpyDirection = 21 + cudaErrorAddressOfConstant = 22 + cudaErrorTextureFetchFailed = 23 + cudaErrorTextureNotBound = 24 + cudaErrorSynchronizationError = 25 + cudaErrorInvalidFilterSetting = 26 + cudaErrorInvalidNormSetting = 27 + cudaErrorMixedDeviceExecution = 28 + cudaErrorNotYetImplemented = 31 + cudaErrorMemoryValueTooLarge = 32 + cudaErrorStubLibrary = 34 + cudaErrorInsufficientDriver = 35 + cudaErrorCallRequiresNewerDriver = 36 + cudaErrorInvalidSurface = 37 + cudaErrorDuplicateVariableName = 43 + cudaErrorDuplicateTextureName = 44 + cudaErrorDuplicateSurfaceName = 45 + cudaErrorDevicesUnavailable = 46 + cudaErrorIncompatibleDriverContext = 49 + cudaErrorMissingConfiguration = 52 + cudaErrorPriorLaunchFailure = 53 + cudaErrorLaunchMaxDepthExceeded = 65 + cudaErrorLaunchFileScopedTex = 66 + cudaErrorLaunchFileScopedSurf = 67 + cudaErrorSyncDepthExceeded = 68 + cudaErrorLaunchPendingCountExceeded = 69 + cudaErrorInvalidDeviceFunction = 98 + cudaErrorNoDevice = 100 + cudaErrorInvalidDevice = 101 + cudaErrorDeviceNotLicensed = 102 + cudaErrorSoftwareValidityNotEstablished = 103 + cudaErrorStartupFailure = 127 + cudaErrorInvalidKernelImage = 200 + cudaErrorDeviceUninitialized = 201 + cudaErrorMapBufferObjectFailed = 205 + cudaErrorUnmapBufferObjectFailed = 206 + cudaErrorArrayIsMapped = 207 + cudaErrorAlreadyMapped = 208 + cudaErrorNoKernelImageForDevice = 209 + cudaErrorAlreadyAcquired = 210 + cudaErrorNotMapped = 211 + cudaErrorNotMappedAsArray = 212 + cudaErrorNotMappedAsPointer = 213 + cudaErrorECCUncorrectable = 214 + cudaErrorUnsupportedLimit = 215 + cudaErrorDeviceAlreadyInUse = 216 + cudaErrorPeerAccessUnsupported = 217 + cudaErrorInvalidPtx = 218 + cudaErrorInvalidGraphicsContext = 219 + cudaErrorNvlinkUncorrectable = 220 + cudaErrorJitCompilerNotFound = 221 + cudaErrorUnsupportedPtxVersion = 222 + cudaErrorJitCompilationDisabled = 223 + cudaErrorUnsupportedExecAffinity = 224 + cudaErrorUnsupportedDevSideSync = 225 + cudaErrorContained = 226 + cudaErrorInvalidSource = 300 + cudaErrorFileNotFound = 301 + cudaErrorSharedObjectSymbolNotFound = 302 + cudaErrorSharedObjectInitFailed = 303 + cudaErrorOperatingSystem = 304 + cudaErrorInvalidResourceHandle = 400 + cudaErrorIllegalState = 401 + cudaErrorLossyQuery = 402 + cudaErrorSymbolNotFound = 500 + cudaErrorNotReady = 600 + cudaErrorIllegalAddress = 700 + cudaErrorLaunchOutOfResources = 701 + cudaErrorLaunchTimeout = 702 + cudaErrorLaunchIncompatibleTexturing = 703 + cudaErrorPeerAccessAlreadyEnabled = 704 + cudaErrorPeerAccessNotEnabled = 705 + cudaErrorSetOnActiveProcess = 708 + cudaErrorContextIsDestroyed = 709 + cudaErrorAssert = 710 + cudaErrorTooManyPeers = 711 + cudaErrorHostMemoryAlreadyRegistered = 712 + cudaErrorHostMemoryNotRegistered = 713 + cudaErrorHardwareStackError = 714 + cudaErrorIllegalInstruction = 715 + cudaErrorMisalignedAddress = 716 + cudaErrorInvalidAddressSpace = 717 + cudaErrorInvalidPc = 718 + cudaErrorLaunchFailure = 719 + cudaErrorCooperativeLaunchTooLarge = 720 + cudaErrorTensorMemoryLeak = 721 + cudaErrorNotPermitted = 800 + cudaErrorNotSupported = 801 + cudaErrorSystemNotReady = 802 + cudaErrorSystemDriverMismatch = 803 + cudaErrorCompatNotSupportedOnDevice = 804 + cudaErrorMpsConnectionFailed = 805 + cudaErrorMpsRpcFailure = 806 + cudaErrorMpsServerNotReady = 807 + cudaErrorMpsMaxClientsReached = 808 + cudaErrorMpsMaxConnectionsReached = 809 + cudaErrorMpsClientTerminated = 810 + cudaErrorCdpNotSupported = 811 + cudaErrorCdpVersionMismatch = 812 + cudaErrorStreamCaptureUnsupported = 900 + cudaErrorStreamCaptureInvalidated = 901 + cudaErrorStreamCaptureMerge = 902 + cudaErrorStreamCaptureUnmatched = 903 + cudaErrorStreamCaptureUnjoined = 904 + cudaErrorStreamCaptureIsolation = 905 + cudaErrorStreamCaptureImplicit = 906 + cudaErrorCapturedEvent = 907 + cudaErrorStreamCaptureWrongThread = 908 + cudaErrorTimeout = 909 + cudaErrorGraphExecUpdateFailure = 910 + cudaErrorExternalDevice = 911 + cudaErrorInvalidClusterSize = 912 + cudaErrorFunctionNotLoaded = 913 + cudaErrorInvalidResourceType = 914 + cudaErrorInvalidResourceConfiguration = 915 + cudaErrorStreamDetached = 917 + cudaErrorGraphRecaptureFailure = 918 + cudaErrorUnknown = 999 + cudaErrorApiFailureBase = 10000 + + ctypedef cudaError cudaError_t + + cdef struct CUdevResourceDesc_st: + pass + ctypedef CUdevResourceDesc_st* cudaDevResourceDesc_t + + cdef struct cudaExecutionContext_st: + pass + ctypedef cudaExecutionContext_st* cudaExecutionContext_t + + cdef struct cudaChannelFormatDesc: + int x + int y + int z + int w + cudaChannelFormatKind f + + cdef struct cudaArray: + pass + ctypedef cudaArray* cudaArray_t + + cdef struct cudaArray: + pass + ctypedef cudaArray* cudaArray_const_t + + cdef struct cudaMipmappedArray: + pass + ctypedef cudaMipmappedArray* cudaMipmappedArray_t + + cdef struct cudaMipmappedArray: + pass + ctypedef cudaMipmappedArray* cudaMipmappedArray_const_t + + cdef struct anon_struct0: + unsigned int width + unsigned int height + unsigned int depth + + cdef struct cudaArraySparseProperties: + anon_struct0 tileExtent + unsigned int miptailFirstLevel + unsigned long long miptailSize + unsigned int flags + unsigned int reserved[4] + + cdef struct cudaArrayMemoryRequirements: + size_t size + size_t alignment + unsigned int reserved[4] + + cdef struct cudaPitchedPtr: + void* ptr + size_t pitch + size_t xsize + size_t ysize + + cdef struct cudaExtent: + size_t width + size_t height + size_t depth + + cdef struct cudaPos: + size_t x + size_t y + size_t z + + cdef struct cudaMemcpy3DParms: + cudaArray_t srcArray + cudaPos srcPos + cudaPitchedPtr srcPtr + cudaArray_t dstArray + cudaPos dstPos + cudaPitchedPtr dstPtr + cudaExtent extent + cudaMemcpyKind kind + + cdef struct cudaMemcpyNodeParams: + int flags + int reserved + cudaExecutionContext_t ctx + cudaMemcpy3DParms copyParams + + cdef struct cudaMemcpy3DPeerParms: + cudaArray_t srcArray + cudaPos srcPos + cudaPitchedPtr srcPtr + int srcDevice + cudaArray_t dstArray + cudaPos dstPos + cudaPitchedPtr dstPtr + int dstDevice + cudaExtent extent + + cdef struct cudaMemsetParams: + void* dst + size_t pitch + unsigned int value + unsigned int elementSize + size_t width + size_t height + + cdef struct cudaMemsetParamsV2: + void* dst + size_t pitch + unsigned int value + unsigned int elementSize + size_t width + size_t height + cudaExecutionContext_t ctx + + cdef struct cudaAccessPolicyWindow: + void* base_ptr + size_t num_bytes + float hitRatio + cudaAccessProperty hitProp + cudaAccessProperty missProp + + ctypedef void (*cudaHostFn_t)(void* userData) + + cdef struct cudaHostNodeParams: + cudaHostFn_t fn + void* userData + + cdef struct cudaHostNodeParamsV2: + cudaHostFn_t fn + void* userData + unsigned int syncMode + + cdef struct anon_struct1: + cudaArray_t array + + cdef struct anon_struct2: + cudaMipmappedArray_t mipmap + + cdef struct anon_struct3: + void* devPtr + cudaChannelFormatDesc desc + size_t sizeInBytes + + cdef struct anon_struct4: + void* devPtr + cudaChannelFormatDesc desc + size_t width + size_t height + size_t pitchInBytes + + cdef struct anon_struct5: + int reserved[32] + + cdef union anon_union0: + anon_struct1 array + anon_struct2 mipmap + anon_struct3 linear + anon_struct4 pitch2D + anon_struct5 reserved + + cdef struct cudaResourceDesc: + cudaResourceType resType + anon_union0 res + unsigned int flags + + cdef struct cudaResourceViewDesc: + cudaResourceViewFormat format + size_t width + size_t height + size_t depth + unsigned int firstMipmapLevel + unsigned int lastMipmapLevel + unsigned int firstLayer + unsigned int lastLayer + unsigned int reserved[16] + + cdef enum cudaSharedMemoryMode: + cudaSharedMemoryModeDefault = 0 + cudaSharedMemoryModeRequirePortable = 1 + cudaSharedMemoryModeAllowNonPortable = 2 + + cdef struct cudaPointerAttributes: + cudaMemoryType type + int device + void* devicePointer + void* hostPointer + long reserved[8] + + cdef struct cudaFuncAttributes: + size_t sharedSizeBytes + size_t constSizeBytes + size_t localSizeBytes + int maxThreadsPerBlock + int numRegs + int ptxVersion + int binaryVersion + int cacheModeCA + int maxDynamicSharedSizeBytes + int preferredShmemCarveout + int clusterDimMustBeSet + int requiredClusterWidth + int requiredClusterHeight + int requiredClusterDepth + int clusterSchedulingPolicyPreference + int nonPortableClusterSizeAllowed + int deviceNodeUpdateStatus + int reserved1 + int reserved[14] + + cdef struct cudaMemLocation: + cudaMemLocationType type + int id + + cdef struct cudaMemAccessDesc: + cudaMemLocation location + cudaMemAccessFlags flags + + cdef struct cudaMemPoolProps: + cudaMemAllocationType allocType + cudaMemAllocationHandleType handleTypes + cudaMemLocation location + void* win32SecurityAttributes + size_t maxSize + unsigned short usage + unsigned char reserved[54] + + cdef struct cudaMemPoolPtrExportData: + unsigned char reserved[64] + + cdef struct cudaMemAllocNodeParams: + cudaMemPoolProps poolProps + const cudaMemAccessDesc* accessDescs + size_t accessDescCount + size_t bytesize + void* dptr + + cdef struct cudaMemAllocNodeParamsV2: + cudaMemPoolProps poolProps + const cudaMemAccessDesc* accessDescs + size_t accessDescCount + size_t bytesize + void* dptr + + cdef struct cudaMemFreeNodeParams: + void* dptr + + cdef struct cudaMemcpyAttributes: + cudaMemcpySrcAccessOrder srcAccessOrder + cudaMemLocation srcLocHint + cudaMemLocation dstLocHint + unsigned int flags + + cdef struct cudaOffset3D: + size_t x + size_t y + size_t z + + cdef struct anon_struct6: + void* ptr + size_t rowLength + size_t layerHeight + cudaMemLocation locHint + + cdef struct anon_struct7: + cudaArray_t array + cudaOffset3D offset + + cdef union anon_union2: + anon_struct6 ptr + anon_struct7 array + + cdef struct cudaMemcpy3DOperand: + cudaMemcpy3DOperandType type + anon_union2 op + + cdef struct cudaMemcpy3DBatchOp: + cudaMemcpy3DOperand src + cudaMemcpy3DOperand dst + cudaExtent extent + cudaMemcpySrcAccessOrder srcAccessOrder + unsigned int flags + + cdef struct CUuuid_st: + char bytes[16] + + ctypedef CUuuid_st CUuuid + + ctypedef CUuuid_st cudaUUID_t + + cdef struct cudaDeviceProp: + char name[256] + cudaUUID_t uuid + char luid[8] + unsigned int luidDeviceNodeMask + size_t totalGlobalMem + size_t sharedMemPerBlock + int regsPerBlock + int warpSize + size_t memPitch + int maxThreadsPerBlock + int maxThreadsDim[3] + int maxGridSize[3] + size_t totalConstMem + int major + int minor + size_t textureAlignment + size_t texturePitchAlignment + int multiProcessorCount + int integrated + int canMapHostMemory + int maxTexture1D + int maxTexture1DMipmap + int maxTexture2D[2] + int maxTexture2DMipmap[2] + int maxTexture2DLinear[3] + int maxTexture2DGather[2] + int maxTexture3D[3] + int maxTexture3DAlt[3] + int maxTextureCubemap + int maxTexture1DLayered[2] + int maxTexture2DLayered[3] + int maxTextureCubemapLayered[2] + int maxSurface1D + int maxSurface2D[2] + int maxSurface3D[3] + int maxSurface1DLayered[2] + int maxSurface2DLayered[3] + int maxSurfaceCubemap + int maxSurfaceCubemapLayered[2] + size_t surfaceAlignment + int concurrentKernels + int ECCEnabled + int pciBusID + int pciDeviceID + int pciDomainID + int tccDriver + int asyncEngineCount + int unifiedAddressing + int memoryBusWidth + int l2CacheSize + int persistingL2CacheMaxSize + int maxThreadsPerMultiProcessor + int streamPrioritiesSupported + int globalL1CacheSupported + int localL1CacheSupported + size_t sharedMemPerMultiprocessor + int regsPerMultiprocessor + int managedMemory + int isMultiGpuBoard + int multiGpuBoardGroupID + int hostNativeAtomicSupported + int pageableMemoryAccess + int concurrentManagedAccess + int computePreemptionSupported + int canUseHostPointerForRegisteredMem + int cooperativeLaunch + size_t sharedMemPerBlockOptin + int pageableMemoryAccessUsesHostPageTables + int directManagedMemAccessFromHost + int maxBlocksPerMultiProcessor + int accessPolicyMaxWindowSize + size_t reservedSharedMemPerBlock + int hostRegisterSupported + int sparseCudaArraySupported + int hostRegisterReadOnlySupported + int timelineSemaphoreInteropSupported + int memoryPoolsSupported + int gpuDirectRDMASupported + unsigned int gpuDirectRDMAFlushWritesOptions + int gpuDirectRDMAWritesOrdering + unsigned int memoryPoolSupportedHandleTypes + int deferredMappingCudaArraySupported + int ipcEventSupported + int clusterLaunch + int unifiedFunctionPointers + int deviceNumaConfig + int deviceNumaId + int mpsEnabled + int hostNumaId + unsigned int gpuPciDeviceID + unsigned int gpuPciSubsystemID + int hostNumaMultinodeIpcSupported + int reserved[56] + + cdef struct cudaIpcEventHandle_st: + char reserved[64] + + ctypedef cudaIpcEventHandle_st cudaIpcEventHandle_t + + cdef struct cudaIpcMemHandle_st: + char reserved[64] + + ctypedef cudaIpcMemHandle_st cudaIpcMemHandle_t + + cdef struct cudaMemFabricHandle_st: + char reserved[64] + + ctypedef cudaMemFabricHandle_st cudaMemFabricHandle_t + + cdef struct anon_struct8: + void* handle + const void* name + + cdef union anon_union3: + int fd + anon_struct8 win32 + const void* nvSciBufObject + + cdef struct cudaExternalMemoryHandleDesc: + cudaExternalMemoryHandleType type + anon_union3 handle + unsigned long long size + unsigned int flags + unsigned int reserved[16] + + cdef struct cudaExternalMemoryBufferDesc: + unsigned long long offset + unsigned long long size + unsigned int flags + unsigned int reserved[16] + + cdef struct cudaExternalMemoryMipmappedArrayDesc: + unsigned long long offset + cudaChannelFormatDesc formatDesc + cudaExtent extent + unsigned int flags + unsigned int numLevels + unsigned int reserved[16] + + cdef struct anon_struct9: + void* handle + const void* name + + cdef union anon_union4: + int fd + anon_struct9 win32 + const void* nvSciSyncObj + + cdef struct cudaExternalSemaphoreHandleDesc: + cudaExternalSemaphoreHandleType type + anon_union4 handle + unsigned int flags + unsigned int reserved[16] + + cdef struct anon_struct10: + unsigned long long value + + cdef union anon_union5: + void* fence + unsigned long long reserved + + cdef struct anon_struct11: + unsigned long long key + + cdef struct anon_struct12: + anon_struct10 fence + anon_union5 nvSciSync + anon_struct11 keyedMutex + unsigned int reserved[12] + + cdef struct cudaExternalSemaphoreSignalParams: + anon_struct12 params + unsigned int flags + unsigned int reserved[16] + + cdef struct anon_struct13: + unsigned long long value + + cdef union anon_union6: + void* fence + unsigned long long reserved + + cdef struct anon_struct14: + unsigned long long key + unsigned int timeoutMs + + cdef struct anon_struct15: + anon_struct13 fence + anon_union6 nvSciSync + anon_struct14 keyedMutex + unsigned int reserved[10] + + cdef struct cudaExternalSemaphoreWaitParams: + anon_struct15 params + unsigned int flags + unsigned int reserved[16] + + cdef struct cudaDevSmResource: + unsigned int smCount + unsigned int minSmPartitionSize + unsigned int smCoscheduledAlignment + unsigned int flags + + cdef struct cudaDevWorkqueueConfigResource: + int device + unsigned int wqConcurrencyLimit + cudaDevWorkqueueConfigScope sharingScope + + cdef struct cudaDevWorkqueueResource: + unsigned char reserved[40] + + cdef struct cudaDevSmResourceGroupParams_st: + unsigned int smCount + unsigned int coscheduledSmCount + unsigned int preferredCoscheduledSmCount + unsigned int flags + unsigned int reserved[12] + + ctypedef cudaDevSmResourceGroupParams_st cudaDevSmResourceGroupParams + + cdef struct cudaDevResource_st: + cudaDevResourceType type + unsigned char _internal_padding[92] + cudaDevSmResource sm + cudaDevWorkqueueConfigResource wqConfig + cudaDevWorkqueueResource wq + unsigned char _oversize[40] + cudaDevResource_st* nextResource + + ctypedef cudaDevResource_st cudaDevResource + + cdef struct CUstream_st: + pass + ctypedef CUstream_st* cudaStream_t + + cdef struct CUevent_st: + pass + ctypedef CUevent_st* cudaEvent_t + + cdef struct cudaGraphicsResource: + pass + ctypedef cudaGraphicsResource* cudaGraphicsResource_t + + cdef struct CUexternalMemory_st: + pass + ctypedef CUexternalMemory_st* cudaExternalMemory_t + + cdef struct CUexternalSemaphore_st: + pass + ctypedef CUexternalSemaphore_st* cudaExternalSemaphore_t + + cdef struct CUgraph_st: + pass + ctypedef CUgraph_st* cudaGraph_t + + cdef struct CUgraphNode_st: + pass + ctypedef CUgraphNode_st* cudaGraphNode_t + + cdef struct CUuserObject_st: + pass + ctypedef CUuserObject_st* cudaUserObject_t + + ctypedef unsigned long long cudaGraphConditionalHandle + + cdef struct CUfunc_st: + pass + ctypedef CUfunc_st* cudaFunction_t + + cdef struct CUkern_st: + pass + ctypedef CUkern_st* cudaKernel_t + + cdef struct cudalibraryHostUniversalFunctionAndDataTable: + void* functionTable + size_t functionWindowSize + void* dataTable + size_t dataWindowSize + + cdef struct CUlib_st: + pass + ctypedef CUlib_st* cudaLibrary_t + + cdef struct CUmemPoolHandle_st: + pass + ctypedef CUmemPoolHandle_st* cudaMemPool_t + + cdef struct cudaKernelNodeParams: + void* func + dim3 gridDim + dim3 blockDim + unsigned int sharedMemBytes + void** kernelParams + void** extra + + cdef struct cudaKernelNodeParamsV2: + void* func + cudaKernel_t kern + cudaFunction_t cuFunc + dim3 gridDim + dim3 blockDim + unsigned int sharedMemBytes + void** kernelParams + void** extra + cudaExecutionContext_t ctx + cudaKernelFunctionType functionType + + cdef struct cudaExternalSemaphoreSignalNodeParams: + cudaExternalSemaphore_t* extSemArray + const cudaExternalSemaphoreSignalParams* paramsArray + unsigned int numExtSems + + cdef struct cudaExternalSemaphoreSignalNodeParamsV2: + cudaExternalSemaphore_t* extSemArray + const cudaExternalSemaphoreSignalParams* paramsArray + unsigned int numExtSems + + cdef struct cudaExternalSemaphoreWaitNodeParams: + cudaExternalSemaphore_t* extSemArray + const cudaExternalSemaphoreWaitParams* paramsArray + unsigned int numExtSems + + cdef struct cudaExternalSemaphoreWaitNodeParamsV2: + cudaExternalSemaphore_t* extSemArray + const cudaExternalSemaphoreWaitParams* paramsArray + unsigned int numExtSems + + cdef struct cudaConditionalNodeParams: + cudaGraphConditionalHandle handle + cudaGraphConditionalNodeType type + unsigned int size + cudaGraph_t* phGraph_out + cudaExecutionContext_t ctx + + cdef struct cudaChildGraphNodeParams: + cudaGraph_t graph + cudaGraphChildGraphNodeOwnership ownership + + cdef struct cudaEventRecordNodeParams: + cudaEvent_t event + + cdef struct cudaEventWaitNodeParams: + cudaEvent_t event + + cdef struct cudaGraphNodeParams: + cudaGraphNodeType type + int reserved0[3] + long long reserved1[29] + cudaKernelNodeParamsV2 kernel + cudaMemcpyNodeParams memcpy + cudaMemsetParamsV2 memset + cudaHostNodeParamsV2 host + cudaChildGraphNodeParams graph + cudaEventWaitNodeParams eventWait + cudaEventRecordNodeParams eventRecord + cudaExternalSemaphoreSignalNodeParamsV2 extSemSignal + cudaExternalSemaphoreWaitNodeParamsV2 extSemWait + cudaMemAllocNodeParamsV2 alloc + cudaMemFreeNodeParams free + cudaConditionalNodeParams conditional + long long reserved2 + + cdef enum cudaGraphDependencyType_enum: + cudaGraphDependencyTypeDefault = 0 + cudaGraphDependencyTypeProgrammatic = 1 + + ctypedef cudaGraphDependencyType_enum cudaGraphDependencyType + + cdef struct cudaGraphEdgeData_st: + unsigned char from_port + unsigned char to_port + unsigned char type + unsigned char reserved[5] + + ctypedef cudaGraphEdgeData_st cudaGraphEdgeData + + cdef struct CUgraphExec_st: + pass + ctypedef CUgraphExec_st* cudaGraphExec_t + + cdef enum cudaGraphInstantiateResult: + cudaGraphInstantiateSuccess = 0 + cudaGraphInstantiateError = 1 + cudaGraphInstantiateInvalidStructure = 2 + cudaGraphInstantiateNodeOperationNotSupported = 3 + cudaGraphInstantiateMultipleDevicesNotSupported = 4 + cudaGraphInstantiateConditionalHandleUnused = 5 + + cdef struct cudaGraphInstantiateParams_st: + unsigned long long flags + cudaStream_t uploadStream + cudaGraphNode_t errNode_out + cudaGraphInstantiateResult result_out + + ctypedef cudaGraphInstantiateParams_st cudaGraphInstantiateParams + + cdef struct cudaGraphExecUpdateResultInfo_st: + cudaGraphExecUpdateResult result + cudaGraphNode_t errorNode + cudaGraphNode_t errorFromNode + + ctypedef cudaGraphExecUpdateResultInfo_st cudaGraphExecUpdateResultInfo + + cdef struct CUgraphDeviceUpdatableNode_st: + pass + ctypedef CUgraphDeviceUpdatableNode_st* cudaGraphDeviceNode_t + + cdef struct anon_struct16: + const void* pValue + size_t offset + size_t size + + cdef union anon_union10: + dim3 gridDim + anon_struct16 param + unsigned int isEnabled + + cdef struct cudaGraphKernelNodeUpdate: + cudaGraphDeviceNode_t node + cudaGraphKernelNodeField field + anon_union10 updateData + + cdef enum cudaLaunchMemSyncDomain: + cudaLaunchMemSyncDomainDefault = 0 + cudaLaunchMemSyncDomainRemote = 1 + + cdef struct cudaLaunchMemSyncDomainMap_st: + unsigned char default_ + unsigned char remote + + ctypedef cudaLaunchMemSyncDomainMap_st cudaLaunchMemSyncDomainMap + + cdef enum cudaLaunchAttributePortableClusterMode: + cudaLaunchPortableClusterModeDefault = 0 + cudaLaunchPortableClusterModeRequirePortable = 1 + cudaLaunchPortableClusterModeAllowNonPortable = 2 + + cdef enum cudaLaunchAttributeID: + cudaLaunchAttributeIgnore = 0 + cudaLaunchAttributeAccessPolicyWindow = 1 + cudaLaunchAttributeCooperative = 2 + cudaLaunchAttributeSynchronizationPolicy = 3 + cudaLaunchAttributeClusterDimension = 4 + cudaLaunchAttributeClusterSchedulingPolicyPreference = 5 + cudaLaunchAttributeProgrammaticStreamSerialization = 6 + cudaLaunchAttributeProgrammaticEvent = 7 + cudaLaunchAttributePriority = 8 + cudaLaunchAttributeMemSyncDomainMap = 9 + cudaLaunchAttributeMemSyncDomain = 10 + cudaLaunchAttributePreferredClusterDimension = 11 + cudaLaunchAttributeLaunchCompletionEvent = 12 + cudaLaunchAttributeDeviceUpdatableKernelNode = 13 + cudaLaunchAttributePreferredSharedMemoryCarveout = 14 + cudaLaunchAttributeNvlinkUtilCentricScheduling = 16 + cudaLaunchAttributePortableClusterSizeMode = 17 + cudaLaunchAttributeSharedMemoryMode = 18 + + cdef struct anon_struct17: + unsigned int x + unsigned int y + unsigned int z + + cdef struct anon_struct18: + cudaEvent_t event + int flags + int triggerAtBlockStart + + cdef struct anon_struct19: + unsigned int x + unsigned int y + unsigned int z + + cdef struct anon_struct20: + cudaEvent_t event + int flags + + cdef struct anon_struct21: + int deviceUpdatable + cudaGraphDeviceNode_t devNode + + cdef union cudaLaunchAttributeValue: + char pad[64] + cudaAccessPolicyWindow accessPolicyWindow + int cooperative + cudaSynchronizationPolicy syncPolicy + anon_struct17 clusterDim + cudaClusterSchedulingPolicy clusterSchedulingPolicyPreference + int programmaticStreamSerializationAllowed + anon_struct18 programmaticEvent + int priority + cudaLaunchMemSyncDomainMap memSyncDomainMap + cudaLaunchMemSyncDomain memSyncDomain + anon_struct19 preferredClusterDim + anon_struct20 launchCompletionEvent + anon_struct21 deviceUpdatableKernelNode + unsigned int sharedMemCarveout + unsigned int nvlinkUtilCentricScheduling + cudaLaunchAttributePortableClusterMode portableClusterSizeMode + cudaSharedMemoryMode sharedMemoryMode + + cdef struct cudaLaunchAttribute_st: + cudaLaunchAttributeID id + cudaLaunchAttributeValue val + + ctypedef cudaLaunchAttribute_st cudaLaunchAttribute + + cdef struct cudaAsyncCallbackEntry: + pass + ctypedef cudaAsyncCallbackEntry* cudaAsyncCallbackHandle_t + + cdef enum cudaAsyncNotificationType_enum: + cudaAsyncNotificationTypeOverBudget = 1 + + ctypedef cudaAsyncNotificationType_enum cudaAsyncNotificationType + + cdef struct anon_struct22: + unsigned long long bytesOverBudget + + cdef union anon_union11: + anon_struct22 overBudget + + cdef struct cudaAsyncNotificationInfo: + cudaAsyncNotificationType type + anon_union11 info + + ctypedef cudaAsyncNotificationInfo cudaAsyncNotificationInfo_t + + ctypedef void (*cudaAsyncCallback)(cudaAsyncNotificationInfo_t* , void* , cudaAsyncCallbackHandle_t ) + + cdef enum CUDAlogLevel_enum: + cudaLogLevelError = 0 + cudaLogLevelWarning = 1 + + ctypedef CUDAlogLevel_enum cudaLogLevel + + cdef struct CUlogsCallbackEntry_st: + pass + ctypedef CUlogsCallbackEntry_st* cudaLogsCallbackHandle + + ctypedef unsigned int cudaLogIterator + + cdef enum cudaChannelFormatKind: + cudaChannelFormatKindSigned = 0 + cudaChannelFormatKindUnsigned = 1 + cudaChannelFormatKindFloat = 2 + cudaChannelFormatKindNone = 3 + cudaChannelFormatKindNV12 = 4 + cudaChannelFormatKindUnsignedNormalized8X1 = 5 + cudaChannelFormatKindUnsignedNormalized8X2 = 6 + cudaChannelFormatKindUnsignedNormalized8X4 = 7 + cudaChannelFormatKindUnsignedNormalized16X1 = 8 + cudaChannelFormatKindUnsignedNormalized16X2 = 9 + cudaChannelFormatKindUnsignedNormalized16X4 = 10 + cudaChannelFormatKindSignedNormalized8X1 = 11 + cudaChannelFormatKindSignedNormalized8X2 = 12 + cudaChannelFormatKindSignedNormalized8X4 = 13 + cudaChannelFormatKindSignedNormalized16X1 = 14 + cudaChannelFormatKindSignedNormalized16X2 = 15 + cudaChannelFormatKindSignedNormalized16X4 = 16 + cudaChannelFormatKindUnsignedBlockCompressed1 = 17 + cudaChannelFormatKindUnsignedBlockCompressed1SRGB = 18 + cudaChannelFormatKindUnsignedBlockCompressed2 = 19 + cudaChannelFormatKindUnsignedBlockCompressed2SRGB = 20 + cudaChannelFormatKindUnsignedBlockCompressed3 = 21 + cudaChannelFormatKindUnsignedBlockCompressed3SRGB = 22 + cudaChannelFormatKindUnsignedBlockCompressed4 = 23 + cudaChannelFormatKindSignedBlockCompressed4 = 24 + cudaChannelFormatKindUnsignedBlockCompressed5 = 25 + cudaChannelFormatKindSignedBlockCompressed5 = 26 + cudaChannelFormatKindUnsignedBlockCompressed6H = 27 + cudaChannelFormatKindSignedBlockCompressed6H = 28 + cudaChannelFormatKindUnsignedBlockCompressed7 = 29 + cudaChannelFormatKindUnsignedBlockCompressed7SRGB = 30 + cudaChannelFormatKindUnsignedNormalized1010102 = 31 + cudaChannelFormatKindUnsigned8Packed422 = 32 + cudaChannelFormatKindUnsigned8Packed444 = 33 + cudaChannelFormatKindUnsigned8SemiPlanar420 = 34 + cudaChannelFormatKindUnsigned16SemiPlanar420 = 35 + cudaChannelFormatKindUnsigned8SemiPlanar422 = 36 + cudaChannelFormatKindUnsigned16SemiPlanar422 = 37 + cudaChannelFormatKindUnsigned8SemiPlanar444 = 38 + cudaChannelFormatKindUnsigned16SemiPlanar444 = 39 + cudaChannelFormatKindUnsigned8Planar420 = 40 + cudaChannelFormatKindUnsigned16Planar420 = 41 + cudaChannelFormatKindUnsigned8Planar422 = 42 + cudaChannelFormatKindUnsigned16Planar422 = 43 + cudaChannelFormatKindUnsigned8Planar444 = 44 + cudaChannelFormatKindUnsigned16Planar444 = 45 + + cdef enum cudaMemoryType: + cudaMemoryTypeUnregistered = 0 + cudaMemoryTypeHost = 1 + cudaMemoryTypeDevice = 2 + cudaMemoryTypeManaged = 3 + + cdef enum cudaMemcpyKind: + cudaMemcpyHostToHost = 0 + cudaMemcpyHostToDevice = 1 + cudaMemcpyDeviceToHost = 2 + cudaMemcpyDeviceToDevice = 3 + cudaMemcpyDefault = 4 + + cdef enum cudaAccessProperty: + cudaAccessPropertyNormal = 0 + cudaAccessPropertyStreaming = 1 + cudaAccessPropertyPersisting = 2 + + cdef enum cudaStreamCaptureStatus: + cudaStreamCaptureStatusNone = 0 + cudaStreamCaptureStatusActive = 1 + cudaStreamCaptureStatusInvalidated = 2 + + cdef enum cudaGraphRecaptureStatus: + cudaGraphRecaptureEligibleForUpdate = 0 + cudaGraphRecaptureIneligibleForUpdate = 1 + cudaGraphRecaptureError = 2 + + cdef enum cudaStreamCaptureMode: + cudaStreamCaptureModeGlobal = 0 + cudaStreamCaptureModeThreadLocal = 1 + cudaStreamCaptureModeRelaxed = 2 + + cdef enum cudaSynchronizationPolicy: + cudaSyncPolicyAuto = 1 + cudaSyncPolicySpin = 2 + cudaSyncPolicyYield = 3 + cudaSyncPolicyBlockingSync = 4 + + cdef enum cudaClusterSchedulingPolicy: + cudaClusterSchedulingPolicyDefault = 0 + cudaClusterSchedulingPolicySpread = 1 + cudaClusterSchedulingPolicyLoadBalancing = 2 + + cdef enum cudaStreamUpdateCaptureDependenciesFlags: + cudaStreamAddCaptureDependencies = 0 + cudaStreamSetCaptureDependencies = 1 + + cdef enum cudaUserObjectFlags: + cudaUserObjectNoDestructorSync = 1 + + cdef enum cudaUserObjectRetainFlags: + cudaGraphUserObjectMove = 1 + + cdef enum cudaHostTaskSyncMode: + cudaHostTaskBlocking = 0 + cudaHostTaskSpinWait = 1 + + cdef enum cudaGraphicsRegisterFlags: + cudaGraphicsRegisterFlagsNone = 0 + cudaGraphicsRegisterFlagsReadOnly = 1 + cudaGraphicsRegisterFlagsWriteDiscard = 2 + cudaGraphicsRegisterFlagsSurfaceLoadStore = 4 + cudaGraphicsRegisterFlagsTextureGather = 8 + + cdef enum cudaGraphicsMapFlags: + cudaGraphicsMapFlagsNone = 0 + cudaGraphicsMapFlagsReadOnly = 1 + cudaGraphicsMapFlagsWriteDiscard = 2 + + cdef enum cudaGraphicsCubeFace: + cudaGraphicsCubeFacePositiveX = 0 + cudaGraphicsCubeFaceNegativeX = 1 + cudaGraphicsCubeFacePositiveY = 2 + cudaGraphicsCubeFaceNegativeY = 3 + cudaGraphicsCubeFacePositiveZ = 4 + cudaGraphicsCubeFaceNegativeZ = 5 + + cdef enum cudaResourceType: + cudaResourceTypeArray = 0 + cudaResourceTypeMipmappedArray = 1 + cudaResourceTypeLinear = 2 + cudaResourceTypePitch2D = 3 + + cdef enum cudaResourceViewFormat: + cudaResViewFormatNone = 0 + cudaResViewFormatUnsignedChar1 = 1 + cudaResViewFormatUnsignedChar2 = 2 + cudaResViewFormatUnsignedChar4 = 3 + cudaResViewFormatSignedChar1 = 4 + cudaResViewFormatSignedChar2 = 5 + cudaResViewFormatSignedChar4 = 6 + cudaResViewFormatUnsignedShort1 = 7 + cudaResViewFormatUnsignedShort2 = 8 + cudaResViewFormatUnsignedShort4 = 9 + cudaResViewFormatSignedShort1 = 10 + cudaResViewFormatSignedShort2 = 11 + cudaResViewFormatSignedShort4 = 12 + cudaResViewFormatUnsignedInt1 = 13 + cudaResViewFormatUnsignedInt2 = 14 + cudaResViewFormatUnsignedInt4 = 15 + cudaResViewFormatSignedInt1 = 16 + cudaResViewFormatSignedInt2 = 17 + cudaResViewFormatSignedInt4 = 18 + cudaResViewFormatHalf1 = 19 + cudaResViewFormatHalf2 = 20 + cudaResViewFormatHalf4 = 21 + cudaResViewFormatFloat1 = 22 + cudaResViewFormatFloat2 = 23 + cudaResViewFormatFloat4 = 24 + cudaResViewFormatUnsignedBlockCompressed1 = 25 + cudaResViewFormatUnsignedBlockCompressed2 = 26 + cudaResViewFormatUnsignedBlockCompressed3 = 27 + cudaResViewFormatUnsignedBlockCompressed4 = 28 + cudaResViewFormatSignedBlockCompressed4 = 29 + cudaResViewFormatUnsignedBlockCompressed5 = 30 + cudaResViewFormatSignedBlockCompressed5 = 31 + cudaResViewFormatUnsignedBlockCompressed6H = 32 + cudaResViewFormatSignedBlockCompressed6H = 33 + cudaResViewFormatUnsignedBlockCompressed7 = 34 + + cdef enum cudaFuncAttribute: + cudaFuncAttributeMaxDynamicSharedMemorySize = 8 + cudaFuncAttributePreferredSharedMemoryCarveout = 9 + cudaFuncAttributeClusterDimMustBeSet = 10 + cudaFuncAttributeRequiredClusterWidth = 11 + cudaFuncAttributeRequiredClusterHeight = 12 + cudaFuncAttributeRequiredClusterDepth = 13 + cudaFuncAttributeNonPortableClusterSizeAllowed = 14 + cudaFuncAttributeClusterSchedulingPolicyPreference = 15 + cudaFuncAttributeMax = 16 + + cdef enum cudaFuncCache: + cudaFuncCachePreferNone = 0 + cudaFuncCachePreferShared = 1 + cudaFuncCachePreferL1 = 2 + cudaFuncCachePreferEqual = 3 + + cdef enum cudaSharedMemConfig: + cudaSharedMemBankSizeDefault = 0 + cudaSharedMemBankSizeFourByte = 1 + cudaSharedMemBankSizeEightByte = 2 + + cdef enum cudaSharedCarveout: + cudaSharedmemCarveoutDefault = -1 + cudaSharedmemCarveoutMaxL1 = 0 + cudaSharedmemCarveoutMaxShared = 100 + + cdef enum cudaComputeMode: + cudaComputeModeDefault = 0 + cudaComputeModeExclusive = 1 + cudaComputeModeProhibited = 2 + cudaComputeModeExclusiveProcess = 3 + + cdef enum cudaLimit: + cudaLimitStackSize = 0 + cudaLimitPrintfFifoSize = 1 + cudaLimitMallocHeapSize = 2 + cudaLimitDevRuntimeSyncDepth = 3 + cudaLimitDevRuntimePendingLaunchCount = 4 + cudaLimitMaxL2FetchGranularity = 5 + cudaLimitPersistingL2CacheSize = 6 + + cdef enum cudaMemoryAdvise: + cudaMemAdviseSetReadMostly = 1 + cudaMemAdviseUnsetReadMostly = 2 + cudaMemAdviseSetPreferredLocation = 3 + cudaMemAdviseUnsetPreferredLocation = 4 + cudaMemAdviseSetAccessedBy = 5 + cudaMemAdviseUnsetAccessedBy = 6 + + cdef enum cudaMemRangeAttribute: + cudaMemRangeAttributeReadMostly = 1 + cudaMemRangeAttributePreferredLocation = 2 + cudaMemRangeAttributeAccessedBy = 3 + cudaMemRangeAttributeLastPrefetchLocation = 4 + cudaMemRangeAttributePreferredLocationType = 5 + cudaMemRangeAttributePreferredLocationId = 6 + cudaMemRangeAttributeLastPrefetchLocationType = 7 + cudaMemRangeAttributeLastPrefetchLocationId = 8 + + cdef enum cudaFlushGPUDirectRDMAWritesOptions: + cudaFlushGPUDirectRDMAWritesOptionHost = 1 + cudaFlushGPUDirectRDMAWritesOptionMemOps = 2 + + cdef enum cudaGPUDirectRDMAWritesOrdering: + cudaGPUDirectRDMAWritesOrderingNone = 0 + cudaGPUDirectRDMAWritesOrderingOwner = 100 + cudaGPUDirectRDMAWritesOrderingAllDevices = 200 + + cdef enum cudaFlushGPUDirectRDMAWritesScope: + cudaFlushGPUDirectRDMAWritesToOwner = 100 + cudaFlushGPUDirectRDMAWritesToAllDevices = 200 + + cdef enum cudaFlushGPUDirectRDMAWritesTarget: + cudaFlushGPUDirectRDMAWritesTargetCurrentDevice = 0 + + cdef enum cudaDeviceAttr: + cudaDevAttrMaxThreadsPerBlock = 1 + cudaDevAttrMaxBlockDimX = 2 + cudaDevAttrMaxBlockDimY = 3 + cudaDevAttrMaxBlockDimZ = 4 + cudaDevAttrMaxGridDimX = 5 + cudaDevAttrMaxGridDimY = 6 + cudaDevAttrMaxGridDimZ = 7 + cudaDevAttrMaxSharedMemoryPerBlock = 8 + cudaDevAttrTotalConstantMemory = 9 + cudaDevAttrWarpSize = 10 + cudaDevAttrMaxPitch = 11 + cudaDevAttrMaxRegistersPerBlock = 12 + cudaDevAttrClockRate = 13 + cudaDevAttrTextureAlignment = 14 + cudaDevAttrGpuOverlap = 15 + cudaDevAttrMultiProcessorCount = 16 + cudaDevAttrKernelExecTimeout = 17 + cudaDevAttrIntegrated = 18 + cudaDevAttrCanMapHostMemory = 19 + cudaDevAttrComputeMode = 20 + cudaDevAttrMaxTexture1DWidth = 21 + cudaDevAttrMaxTexture2DWidth = 22 + cudaDevAttrMaxTexture2DHeight = 23 + cudaDevAttrMaxTexture3DWidth = 24 + cudaDevAttrMaxTexture3DHeight = 25 + cudaDevAttrMaxTexture3DDepth = 26 + cudaDevAttrMaxTexture2DLayeredWidth = 27 + cudaDevAttrMaxTexture2DLayeredHeight = 28 + cudaDevAttrMaxTexture2DLayeredLayers = 29 + cudaDevAttrSurfaceAlignment = 30 + cudaDevAttrConcurrentKernels = 31 + cudaDevAttrEccEnabled = 32 + cudaDevAttrPciBusId = 33 + cudaDevAttrPciDeviceId = 34 + cudaDevAttrTccDriver = 35 + cudaDevAttrMemoryClockRate = 36 + cudaDevAttrGlobalMemoryBusWidth = 37 + cudaDevAttrL2CacheSize = 38 + cudaDevAttrMaxThreadsPerMultiProcessor = 39 + cudaDevAttrAsyncEngineCount = 40 + cudaDevAttrUnifiedAddressing = 41 + cudaDevAttrMaxTexture1DLayeredWidth = 42 + cudaDevAttrMaxTexture1DLayeredLayers = 43 + cudaDevAttrMaxTexture2DGatherWidth = 45 + cudaDevAttrMaxTexture2DGatherHeight = 46 + cudaDevAttrMaxTexture3DWidthAlt = 47 + cudaDevAttrMaxTexture3DHeightAlt = 48 + cudaDevAttrMaxTexture3DDepthAlt = 49 + cudaDevAttrPciDomainId = 50 + cudaDevAttrTexturePitchAlignment = 51 + cudaDevAttrMaxTextureCubemapWidth = 52 + cudaDevAttrMaxTextureCubemapLayeredWidth = 53 + cudaDevAttrMaxTextureCubemapLayeredLayers = 54 + cudaDevAttrMaxSurface1DWidth = 55 + cudaDevAttrMaxSurface2DWidth = 56 + cudaDevAttrMaxSurface2DHeight = 57 + cudaDevAttrMaxSurface3DWidth = 58 + cudaDevAttrMaxSurface3DHeight = 59 + cudaDevAttrMaxSurface3DDepth = 60 + cudaDevAttrMaxSurface1DLayeredWidth = 61 + cudaDevAttrMaxSurface1DLayeredLayers = 62 + cudaDevAttrMaxSurface2DLayeredWidth = 63 + cudaDevAttrMaxSurface2DLayeredHeight = 64 + cudaDevAttrMaxSurface2DLayeredLayers = 65 + cudaDevAttrMaxSurfaceCubemapWidth = 66 + cudaDevAttrMaxSurfaceCubemapLayeredWidth = 67 + cudaDevAttrMaxSurfaceCubemapLayeredLayers = 68 + cudaDevAttrMaxTexture1DLinearWidth = 69 + cudaDevAttrMaxTexture2DLinearWidth = 70 + cudaDevAttrMaxTexture2DLinearHeight = 71 + cudaDevAttrMaxTexture2DLinearPitch = 72 + cudaDevAttrMaxTexture2DMipmappedWidth = 73 + cudaDevAttrMaxTexture2DMipmappedHeight = 74 + cudaDevAttrComputeCapabilityMajor = 75 + cudaDevAttrComputeCapabilityMinor = 76 + cudaDevAttrMaxTexture1DMipmappedWidth = 77 + cudaDevAttrStreamPrioritiesSupported = 78 + cudaDevAttrGlobalL1CacheSupported = 79 + cudaDevAttrLocalL1CacheSupported = 80 + cudaDevAttrMaxSharedMemoryPerMultiprocessor = 81 + cudaDevAttrMaxRegistersPerMultiprocessor = 82 + cudaDevAttrManagedMemory = 83 + cudaDevAttrIsMultiGpuBoard = 84 + cudaDevAttrMultiGpuBoardGroupID = 85 + cudaDevAttrHostNativeAtomicSupported = 86 + cudaDevAttrSingleToDoublePrecisionPerfRatio = 87 + cudaDevAttrPageableMemoryAccess = 88 + cudaDevAttrConcurrentManagedAccess = 89 + cudaDevAttrComputePreemptionSupported = 90 + cudaDevAttrCanUseHostPointerForRegisteredMem = 91 + cudaDevAttrReserved92 = 92 + cudaDevAttrReserved93 = 93 + cudaDevAttrReserved94 = 94 + cudaDevAttrCooperativeLaunch = 95 + cudaDevAttrReserved96 = 96 + cudaDevAttrMaxSharedMemoryPerBlockOptin = 97 + cudaDevAttrCanFlushRemoteWrites = 98 + cudaDevAttrHostRegisterSupported = 99 + cudaDevAttrPageableMemoryAccessUsesHostPageTables = 100 + cudaDevAttrDirectManagedMemAccessFromHost = 101 + cudaDevAttrMaxBlocksPerMultiprocessor = 106 + cudaDevAttrMaxPersistingL2CacheSize = 108 + cudaDevAttrMaxAccessPolicyWindowSize = 109 + cudaDevAttrReservedSharedMemoryPerBlock = 111 + cudaDevAttrSparseCudaArraySupported = 112 + cudaDevAttrHostRegisterReadOnlySupported = 113 + cudaDevAttrTimelineSemaphoreInteropSupported = 114 + cudaDevAttrMemoryPoolsSupported = 115 + cudaDevAttrGPUDirectRDMASupported = 116 + cudaDevAttrGPUDirectRDMAFlushWritesOptions = 117 + cudaDevAttrGPUDirectRDMAWritesOrdering = 118 + cudaDevAttrMemoryPoolSupportedHandleTypes = 119 + cudaDevAttrClusterLaunch = 120 + cudaDevAttrDeferredMappingCudaArraySupported = 121 + cudaDevAttrReserved122 = 122 + cudaDevAttrReserved123 = 123 + cudaDevAttrReserved124 = 124 + cudaDevAttrIpcEventSupport = 125 + cudaDevAttrMemSyncDomainCount = 126 + cudaDevAttrReserved127 = 127 + cudaDevAttrReserved128 = 128 + cudaDevAttrReserved129 = 129 + cudaDevAttrNumaConfig = 130 + cudaDevAttrNumaId = 131 + cudaDevAttrReserved132 = 132 + cudaDevAttrMpsEnabled = 133 + cudaDevAttrHostNumaId = 134 + cudaDevAttrD3D12CigSupported = 135 + cudaDevAttrVulkanCigSupported = 138 + cudaDevAttrGpuPciDeviceId = 139 + cudaDevAttrGpuPciSubsystemId = 140 + cudaDevAttrReserved141 = 141 + cudaDevAttrHostNumaMemoryPoolsSupported = 142 + cudaDevAttrHostNumaMultinodeIpcSupported = 143 + cudaDevAttrHostMemoryPoolsSupported = 144 + cudaDevAttrReserved145 = 145 + cudaDevAttrOnlyPartialHostNativeAtomicSupported = 147 + cudaDevAttrAtomicReductionSupported = 148 + cudaDevAttrCigStreamsSupported = 151 + cudaDevAttrMax = 152 + + cdef enum cudaMemPoolAttr: + cudaMemPoolReuseFollowEventDependencies = 1 + cudaMemPoolReuseAllowOpportunistic = 2 + cudaMemPoolReuseAllowInternalDependencies = 3 + cudaMemPoolAttrReleaseThreshold = 4 + cudaMemPoolAttrReservedMemCurrent = 5 + cudaMemPoolAttrReservedMemHigh = 6 + cudaMemPoolAttrUsedMemCurrent = 7 + cudaMemPoolAttrUsedMemHigh = 8 + cudaMemPoolAttrAllocationType = 9 + cudaMemPoolAttrExportHandleTypes = 10 + cudaMemPoolAttrLocationId = 11 + cudaMemPoolAttrLocationType = 12 + cudaMemPoolAttrMaxPoolSize = 13 + cudaMemPoolAttrHwDecompressEnabled = 14 + + cdef enum cudaMemLocationType: + cudaMemLocationTypeInvalid = 0 + cudaMemLocationTypeNone = 0 + cudaMemLocationTypeDevice = 1 + cudaMemLocationTypeHost = 2 + cudaMemLocationTypeHostNuma = 3 + cudaMemLocationTypeHostNumaCurrent = 4 + cudaMemLocationTypeInvisible = 5 + + cdef enum cudaMemAccessFlags: + cudaMemAccessFlagsProtNone = 0 + cudaMemAccessFlagsProtRead = 1 + cudaMemAccessFlagsProtReadWrite = 3 + + cdef enum cudaMemAllocationType: + cudaMemAllocationTypeInvalid = 0 + cudaMemAllocationTypePinned = 1 + cudaMemAllocationTypeManaged = 2 + cudaMemAllocationTypeMax = 2147483647 + + cdef enum cudaMemAllocationHandleType: + cudaMemHandleTypeNone = 0 + cudaMemHandleTypePosixFileDescriptor = 1 + cudaMemHandleTypeWin32 = 2 + cudaMemHandleTypeWin32Kmt = 4 + cudaMemHandleTypeFabric = 8 + + cdef enum cudaGraphMemAttributeType: + cudaGraphMemAttrUsedMemCurrent = 0 + cudaGraphMemAttrUsedMemHigh = 1 + cudaGraphMemAttrReservedMemCurrent = 2 + cudaGraphMemAttrReservedMemHigh = 3 + + cdef enum cudaMemcpyFlags: + cudaMemcpyFlagDefault = 0 + cudaMemcpyFlagPreferOverlapWithCompute = 1 + + cdef enum cudaMemcpySrcAccessOrder: + cudaMemcpySrcAccessOrderInvalid = 0 + cudaMemcpySrcAccessOrderStream = 1 + cudaMemcpySrcAccessOrderDuringApiCall = 2 + cudaMemcpySrcAccessOrderAny = 3 + cudaMemcpySrcAccessOrderMax = 2147483647 + + cdef enum cudaMemcpy3DOperandType: + cudaMemcpyOperandTypePointer = 1 + cudaMemcpyOperandTypeArray = 2 + cudaMemcpyOperandTypeMax = 2147483647 + + cdef enum cudaDeviceP2PAttr: + cudaDevP2PAttrPerformanceRank = 1 + cudaDevP2PAttrAccessSupported = 2 + cudaDevP2PAttrNativeAtomicSupported = 3 + cudaDevP2PAttrCudaArrayAccessSupported = 4 + cudaDevP2PAttrOnlyPartialNativeAtomicSupported = 5 + + cdef enum cudaAtomicOperation: + cudaAtomicOperationIntegerAdd = 0 + cudaAtomicOperationIntegerMin = 1 + cudaAtomicOperationIntegerMax = 2 + cudaAtomicOperationIntegerIncrement = 3 + cudaAtomicOperationIntegerDecrement = 4 + cudaAtomicOperationAnd = 5 + cudaAtomicOperationOr = 6 + cudaAtomicOperationXOR = 7 + cudaAtomicOperationExchange = 8 + cudaAtomicOperationCAS = 9 + cudaAtomicOperationFloatAdd = 10 + cudaAtomicOperationFloatMin = 11 + cudaAtomicOperationFloatMax = 12 + + cdef enum cudaAtomicOperationCapability: + cudaAtomicCapabilitySigned = 1 + cudaAtomicCapabilityUnsigned = 2 + cudaAtomicCapabilityReduction = 4 + cudaAtomicCapabilityScalar32 = 8 + cudaAtomicCapabilityScalar64 = 16 + cudaAtomicCapabilityScalar128 = 32 + cudaAtomicCapabilityVector32x4 = 64 + + cdef enum cudaExternalMemoryHandleType: + cudaExternalMemoryHandleTypeOpaqueFd = 1 + cudaExternalMemoryHandleTypeOpaqueWin32 = 2 + cudaExternalMemoryHandleTypeOpaqueWin32Kmt = 3 + cudaExternalMemoryHandleTypeD3D12Heap = 4 + cudaExternalMemoryHandleTypeD3D12Resource = 5 + cudaExternalMemoryHandleTypeD3D11Resource = 6 + cudaExternalMemoryHandleTypeD3D11ResourceKmt = 7 + cudaExternalMemoryHandleTypeNvSciBuf = 8 + + cdef enum cudaExternalSemaphoreHandleType: + cudaExternalSemaphoreHandleTypeOpaqueFd = 1 + cudaExternalSemaphoreHandleTypeOpaqueWin32 = 2 + cudaExternalSemaphoreHandleTypeOpaqueWin32Kmt = 3 + cudaExternalSemaphoreHandleTypeD3D12Fence = 4 + cudaExternalSemaphoreHandleTypeD3D11Fence = 5 + cudaExternalSemaphoreHandleTypeNvSciSync = 6 + cudaExternalSemaphoreHandleTypeKeyedMutex = 7 + cudaExternalSemaphoreHandleTypeKeyedMutexKmt = 8 + cudaExternalSemaphoreHandleTypeTimelineSemaphoreFd = 9 + cudaExternalSemaphoreHandleTypeTimelineSemaphoreWin32 = 10 + + cdef enum cudaDevSmResourceGroup_flags: + cudaDevSmResourceGroupDefault = 0 + cudaDevSmResourceGroupBackfill = 1 + + cdef enum cudaDevSmResourceSplitByCount_flags: + cudaDevSmResourceSplitIgnoreSmCoscheduling = 1 + cudaDevSmResourceSplitMaxPotentialClusterSize = 2 + + cdef enum cudaDevResourceType: + cudaDevResourceTypeInvalid = 0 + cudaDevResourceTypeSm = 1 + cudaDevResourceTypeWorkqueueConfig = 1000 + cudaDevResourceTypeWorkqueue = 10000 + + cdef enum cudaDevWorkqueueConfigScope: + cudaDevWorkqueueConfigScopeDeviceCtx = 0 + cudaDevWorkqueueConfigScopeGreenCtxBalanced = 1 + + cdef enum cudaJitOption: + cudaJitMaxRegisters = 0 + cudaJitThreadsPerBlock = 1 + cudaJitWallTime = 2 + cudaJitInfoLogBuffer = 3 + cudaJitInfoLogBufferSizeBytes = 4 + cudaJitErrorLogBuffer = 5 + cudaJitErrorLogBufferSizeBytes = 6 + cudaJitOptimizationLevel = 7 + cudaJitFallbackStrategy = 10 + cudaJitGenerateDebugInfo = 11 + cudaJitLogVerbose = 12 + cudaJitGenerateLineInfo = 13 + cudaJitCacheMode = 14 + cudaJitPositionIndependentCode = 30 + cudaJitMinCtaPerSm = 31 + cudaJitMaxThreadsPerBlock = 32 + cudaJitOverrideDirectiveValues = 33 + + cdef enum cudaLibraryOption: + cudaLibraryHostUniversalFunctionAndDataTable = 0 + cudaLibraryBinaryIsPreserved = 1 + + cdef enum cudaJit_CacheMode: + cudaJitCacheOptionNone = 0 + cudaJitCacheOptionCG = 1 + cudaJitCacheOptionCA = 2 + + cdef enum cudaJit_Fallback: + cudaPreferPtx = 0 + cudaPreferBinary = 1 + + cdef enum cudaCGScope: + cudaCGScopeInvalid = 0 + cudaCGScopeGrid = 1 + cudaCGScopeReserved = 2 + + cdef enum cudaKernelFunctionType: + cudaKernelFunctionTypeUnspecified = 0 + cudaKernelFunctionTypeDeviceEntry = 1 + cudaKernelFunctionTypeKernel = 2 + cudaKernelFunctionTypeFunction = 3 + + cdef enum cudaGraphConditionalHandleFlags: + cudaGraphCondAssignDefault = 1 + + cdef enum cudaGraphConditionalNodeType: + cudaGraphCondTypeIf = 0 + cudaGraphCondTypeWhile = 1 + cudaGraphCondTypeSwitch = 2 + + cdef enum cudaGraphNodeType: + cudaGraphNodeTypeKernel = 0 + cudaGraphNodeTypeMemcpy = 1 + cudaGraphNodeTypeMemset = 2 + cudaGraphNodeTypeHost = 3 + cudaGraphNodeTypeGraph = 4 + cudaGraphNodeTypeEmpty = 5 + cudaGraphNodeTypeWaitEvent = 6 + cudaGraphNodeTypeEventRecord = 7 + cudaGraphNodeTypeExtSemaphoreSignal = 8 + cudaGraphNodeTypeExtSemaphoreWait = 9 + cudaGraphNodeTypeMemAlloc = 10 + cudaGraphNodeTypeMemFree = 11 + cudaGraphNodeTypeConditional = 13 + cudaGraphNodeTypeReserved16 = 16 + cudaGraphNodeTypeCount = 17 + + cdef enum cudaGraphChildGraphNodeOwnership: + cudaGraphChildGraphOwnershipInvalid = -1 + cudaGraphChildGraphOwnershipClone = 0 + cudaGraphChildGraphOwnershipMove = 1 + + cdef enum cudaGraphExecUpdateResult: + cudaGraphExecUpdateSuccess = 0 + cudaGraphExecUpdateError = 1 + cudaGraphExecUpdateErrorTopologyChanged = 2 + cudaGraphExecUpdateErrorNodeTypeChanged = 3 + cudaGraphExecUpdateErrorFunctionChanged = 4 + cudaGraphExecUpdateErrorParametersChanged = 5 + cudaGraphExecUpdateErrorNotSupported = 6 + cudaGraphExecUpdateErrorUnsupportedFunctionChange = 7 + cudaGraphExecUpdateErrorAttributesChanged = 8 + + cdef enum cudaGraphKernelNodeField: + cudaGraphKernelNodeFieldInvalid = 0 + cudaGraphKernelNodeFieldGridDim = 1 + cudaGraphKernelNodeFieldParam = 2 + cudaGraphKernelNodeFieldEnabled = 3 + + cdef enum cudaGetDriverEntryPointFlags: + cudaEnableDefault = 0 + cudaEnableLegacyStream = 1 + cudaEnablePerThreadDefaultStream = 2 + + cdef enum cudaDriverEntryPointQueryResult: + cudaDriverEntryPointSuccess = 0 + cudaDriverEntryPointSymbolNotFound = 1 + cudaDriverEntryPointVersionNotSufficent = 2 + + cdef enum cudaGraphDebugDotFlags: + cudaGraphDebugDotFlagsVerbose = 1 + cudaGraphDebugDotFlagsKernelNodeParams = 4 + cudaGraphDebugDotFlagsMemcpyNodeParams = 8 + cudaGraphDebugDotFlagsMemsetNodeParams = 16 + cudaGraphDebugDotFlagsHostNodeParams = 32 + cudaGraphDebugDotFlagsEventNodeParams = 64 + cudaGraphDebugDotFlagsExtSemasSignalNodeParams = 128 + cudaGraphDebugDotFlagsExtSemasWaitNodeParams = 256 + cudaGraphDebugDotFlagsKernelNodeAttributes = 512 + cudaGraphDebugDotFlagsHandles = 1024 + cudaGraphDebugDotFlagsConditionalNodeParams = 32768 + + cdef enum cudaGraphInstantiateFlags: + cudaGraphInstantiateFlagAutoFreeOnLaunch = 1 + cudaGraphInstantiateFlagUpload = 2 + cudaGraphInstantiateFlagDeviceLaunch = 4 + cudaGraphInstantiateFlagUseNodePriority = 8 + + cdef enum cudaDeviceNumaConfig: + cudaDeviceNumaConfigNone = 0 + cudaDeviceNumaConfigNumaNode = 1 + + cdef enum cudaFabricOpStatusSource: + cudaFabricOpStatusSourceMbarrierV1 = 0 + cudaFabricOpStatusSourceMax = 2147483647 + + cdef enum cudaFabricOpStatusInfo: + cudaFabricOpStatusInfoSuccess = 0 + cudaFabricOpStatusInfoLast = 0 + cudaFabricOpStatusInfoMax = 2147483647 + +cdef extern from "surface_types.h": + + ctypedef unsigned long long cudaSurfaceObject_t + + cdef enum cudaSurfaceBoundaryMode: + cudaBoundaryModeZero = 0 + cudaBoundaryModeClamp = 1 + cudaBoundaryModeTrap = 2 + + cdef enum cudaSurfaceFormatMode: + cudaFormatModeForced = 0 + cudaFormatModeAuto = 1 + +cdef extern from "texture_types.h": + + cdef struct cudaTextureDesc: + cudaTextureAddressMode addressMode[3] + cudaTextureFilterMode filterMode + cudaTextureReadMode readMode + int sRGB + float borderColor[4] + int normalizedCoords + unsigned int maxAnisotropy + cudaTextureFilterMode mipmapFilterMode + float mipmapLevelBias + float minMipmapLevelClamp + float maxMipmapLevelClamp + int disableTrilinearOptimization + int seamlessCubemap + + ctypedef unsigned long long cudaTextureObject_t + + cdef enum cudaTextureAddressMode: + cudaAddressModeWrap = 0 + cudaAddressModeClamp = 1 + cudaAddressModeMirror = 2 + cudaAddressModeBorder = 3 + + cdef enum cudaTextureFilterMode: + cudaFilterModePoint = 0 + cudaFilterModeLinear = 1 + + cdef enum cudaTextureReadMode: + cudaReadModeElementType = 0 + cudaReadModeNormalizedFloat = 1 + +cdef extern from "library_types.h": + + cdef enum cudaDataType_t: + CUDA_R_32F = 0 + CUDA_R_64F = 1 + CUDA_R_16F = 2 + CUDA_R_8I = 3 + CUDA_C_32F = 4 + CUDA_C_64F = 5 + CUDA_C_16F = 6 + CUDA_C_8I = 7 + CUDA_R_8U = 8 + CUDA_C_8U = 9 + CUDA_R_32I = 10 + CUDA_C_32I = 11 + CUDA_R_32U = 12 + CUDA_C_32U = 13 + CUDA_R_16BF = 14 + CUDA_C_16BF = 15 + CUDA_R_4I = 16 + CUDA_C_4I = 17 + CUDA_R_4U = 18 + CUDA_C_4U = 19 + CUDA_R_16I = 20 + CUDA_C_16I = 21 + CUDA_R_16U = 22 + CUDA_C_16U = 23 + CUDA_R_64I = 24 + CUDA_C_64I = 25 + CUDA_R_64U = 26 + CUDA_C_64U = 27 + CUDA_R_8F_E4M3 = 28 + CUDA_R_8F_UE4M3 = 28 + CUDA_R_8F_E5M2 = 29 + CUDA_R_8F_UE8M0 = 30 + CUDA_R_6F_E2M3 = 31 + CUDA_R_6F_E3M2 = 32 + CUDA_R_4F_E2M1 = 33 + + ctypedef cudaDataType_t cudaDataType + + cdef enum cudaEmulationStrategy_t: + CUDA_EMULATION_STRATEGY_DEFAULT = 0 + CUDA_EMULATION_STRATEGY_PERFORMANT = 1 + CUDA_EMULATION_STRATEGY_EAGER = 2 + + ctypedef cudaEmulationStrategy_t cudaEmulationStrategy + + cdef enum cudaEmulationMantissaControl_t: + CUDA_EMULATION_MANTISSA_CONTROL_DYNAMIC = 0 + CUDA_EMULATION_MANTISSA_CONTROL_FIXED = 1 + + ctypedef cudaEmulationMantissaControl_t cudaEmulationMantissaControl + + cdef enum cudaEmulationSpecialValuesSupport_t: + CUDA_EMULATION_SPECIAL_VALUES_SUPPORT_NONE = 0 + CUDA_EMULATION_SPECIAL_VALUES_SUPPORT_INFINITY = 1 + CUDA_EMULATION_SPECIAL_VALUES_SUPPORT_NAN = 2 + CUDA_EMULATION_SPECIAL_VALUES_SUPPORT_DEFAULT = 65535 + + ctypedef cudaEmulationSpecialValuesSupport_t cudaEmulationSpecialValuesSupport + + cdef enum libraryPropertyType_t: + MAJOR_VERSION = 0 + MINOR_VERSION = 1 + PATCH_LEVEL = 2 + + ctypedef libraryPropertyType_t libraryPropertyType + +cdef extern from "cuda_runtime_api.h": + + ctypedef void (*cudaStreamCallback_t)(cudaStream_t stream, cudaError_t status, void* userData) + + ctypedef cudaError_t (*cudaGraphRecaptureCallback_t)(void* data, cudaGraphNode_t node, const cudaGraphNodeParams* originalParams, const cudaGraphNodeParams* recaptureParams, cudaGraphRecaptureStatus status) + + cdef struct cudaGraphRecaptureCallbackData: + cudaGraphRecaptureCallback_t callbackFunc + void* userData + + ctypedef void (*cudaLogsCallback_t)(void* data, cudaLogLevel logLevel, char* message, size_t length) + +cdef extern from "device_types.h": + + cdef enum cudaRoundMode: + cudaRoundNearest = 0 + cudaRoundZero = 1 + cudaRoundPosInf = 2 + cudaRoundMinInf = 3 + +ctypedef cudaLaunchAttributeID cudaStreamAttrID + +ctypedef cudaLaunchAttributeID cudaKernelNodeAttrID + +ctypedef cudaLaunchAttributeValue cudaStreamAttrValue + +ctypedef cudaLaunchAttributeValue cudaKernelNodeAttrValue diff --git a/venv/lib/python3.11/site-packages/cuda/bindings/driver.cpython-311-x86_64-linux-gnu.so b/venv/lib/python3.11/site-packages/cuda/bindings/driver.cpython-311-x86_64-linux-gnu.so new file mode 100644 index 0000000000000000000000000000000000000000..be856f28ffb551d60ae2c4e8a9a9aadc083d320e --- /dev/null +++ b/venv/lib/python3.11/site-packages/cuda/bindings/driver.cpython-311-x86_64-linux-gnu.so @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:0fb19b9fac1af8d48b2ea78f7d722331a6d8c3249a00bf4595821d482209395f +size 7621440 diff --git a/venv/lib/python3.11/site-packages/cuda/bindings/driver.pxd b/venv/lib/python3.11/site-packages/cuda/bindings/driver.pxd new file mode 100644 index 0000000000000000000000000000000000000000..d33979c1d9eb5e791e617d1f4425f1e7ba906552 --- /dev/null +++ b/venv/lib/python3.11/site-packages/cuda/bindings/driver.pxd @@ -0,0 +1,8127 @@ +# SPDX-FileCopyrightText: Copyright (c) 2021-2026 NVIDIA CORPORATION & AFFILIATES. All rights reserved. +# SPDX-License-Identifier: LicenseRef-NVIDIA-SOFTWARE-LICENSE + +# This code was automatically generated with version 13.3.0, generator version 0.3.1.dev1711+g875fec45. Do not modify it directly. +cimport cuda.bindings.cydriver as cydriver + +include "_lib/utils.pxd" + +cdef class CUcontext: + """ + + A regular context handle + + Methods + ------- + getPtr() + Get memory address of class instance + + """ + cdef cydriver.CUcontext _pvt_val + cdef cydriver.CUcontext* _pvt_ptr + +cdef class CUmodule: + """ + + CUDA module + + Methods + ------- + getPtr() + Get memory address of class instance + + """ + cdef cydriver.CUmodule _pvt_val + cdef cydriver.CUmodule* _pvt_ptr + +cdef class CUfunction: + """ + + CUDA function + + Methods + ------- + getPtr() + Get memory address of class instance + + """ + cdef cydriver.CUfunction _pvt_val + cdef cydriver.CUfunction* _pvt_ptr + +cdef class CUlibrary: + """ + + CUDA library + + Methods + ------- + getPtr() + Get memory address of class instance + + """ + cdef cydriver.CUlibrary _pvt_val + cdef cydriver.CUlibrary* _pvt_ptr + +cdef class CUkernel: + """ + + CUDA kernel + + Methods + ------- + getPtr() + Get memory address of class instance + + """ + cdef cydriver.CUkernel _pvt_val + cdef cydriver.CUkernel* _pvt_ptr + +cdef class CUarray: + """ + + CUDA array + + Methods + ------- + getPtr() + Get memory address of class instance + + """ + cdef cydriver.CUarray _pvt_val + cdef cydriver.CUarray* _pvt_ptr + +cdef class CUmipmappedArray: + """ + + CUDA mipmapped array + + Methods + ------- + getPtr() + Get memory address of class instance + + """ + cdef cydriver.CUmipmappedArray _pvt_val + cdef cydriver.CUmipmappedArray* _pvt_ptr + +cdef class CUtexref: + """ + + CUDA texture reference + + Methods + ------- + getPtr() + Get memory address of class instance + + """ + cdef cydriver.CUtexref _pvt_val + cdef cydriver.CUtexref* _pvt_ptr + +cdef class CUsurfref: + """ + + CUDA surface reference + + Methods + ------- + getPtr() + Get memory address of class instance + + """ + cdef cydriver.CUsurfref _pvt_val + cdef cydriver.CUsurfref* _pvt_ptr + +cdef class CUevent: + """ + + CUDA event + + Methods + ------- + getPtr() + Get memory address of class instance + + """ + cdef cydriver.CUevent _pvt_val + cdef cydriver.CUevent* _pvt_ptr + +cdef class CUstream: + """ + + CUDA stream + + Methods + ------- + getPtr() + Get memory address of class instance + + """ + cdef cydriver.CUstream _pvt_val + cdef cydriver.CUstream* _pvt_ptr + +cdef class CUgraphicsResource: + """ + + CUDA graphics interop resource + + Methods + ------- + getPtr() + Get memory address of class instance + + """ + cdef cydriver.CUgraphicsResource _pvt_val + cdef cydriver.CUgraphicsResource* _pvt_ptr + +cdef class CUexternalMemory: + """ + + CUDA external memory + + Methods + ------- + getPtr() + Get memory address of class instance + + """ + cdef cydriver.CUexternalMemory _pvt_val + cdef cydriver.CUexternalMemory* _pvt_ptr + +cdef class CUexternalSemaphore: + """ + + CUDA external semaphore + + Methods + ------- + getPtr() + Get memory address of class instance + + """ + cdef cydriver.CUexternalSemaphore _pvt_val + cdef cydriver.CUexternalSemaphore* _pvt_ptr + +cdef class CUgraph: + """ + + CUDA graph + + Methods + ------- + getPtr() + Get memory address of class instance + + """ + cdef cydriver.CUgraph _pvt_val + cdef cydriver.CUgraph* _pvt_ptr + +cdef class CUgraphNode: + """ + + CUDA graph node + + Methods + ------- + getPtr() + Get memory address of class instance + + """ + cdef cydriver.CUgraphNode _pvt_val + cdef cydriver.CUgraphNode* _pvt_ptr + +cdef class CUgraphExec: + """ + + CUDA executable graph + + Methods + ------- + getPtr() + Get memory address of class instance + + """ + cdef cydriver.CUgraphExec _pvt_val + cdef cydriver.CUgraphExec* _pvt_ptr + +cdef class CUmemoryPool: + """ + + CUDA memory pool + + Methods + ------- + getPtr() + Get memory address of class instance + + """ + cdef cydriver.CUmemoryPool _pvt_val + cdef cydriver.CUmemoryPool* _pvt_ptr + +cdef class CUuserObject: + """ + + CUDA user object for graphs + + Methods + ------- + getPtr() + Get memory address of class instance + + """ + cdef cydriver.CUuserObject _pvt_val + cdef cydriver.CUuserObject* _pvt_ptr + +cdef class CUgraphDeviceNode: + """ + + CUDA graph device node handle + + Methods + ------- + getPtr() + Get memory address of class instance + + """ + cdef cydriver.CUgraphDeviceNode _pvt_val + cdef cydriver.CUgraphDeviceNode* _pvt_ptr + +cdef class CUasyncCallbackHandle: + """ + + CUDA async notification callback handle + + Methods + ------- + getPtr() + Get memory address of class instance + + """ + cdef cydriver.CUasyncCallbackHandle _pvt_val + cdef cydriver.CUasyncCallbackHandle* _pvt_ptr + +cdef class CUgreenCtx: + """ + + A green context handle. This handle can be used safely from only one CPU thread at a time. Created via cuGreenCtxCreate + + Methods + ------- + getPtr() + Get memory address of class instance + + """ + cdef cydriver.CUgreenCtx _pvt_val + cdef cydriver.CUgreenCtx* _pvt_ptr + +cdef class CUlinkState: + """ + + Methods + ------- + getPtr() + Get memory address of class instance + + """ + cdef cydriver.CUlinkState _pvt_val + cdef cydriver.CUlinkState* _pvt_ptr + cdef list _keepalive + +cdef class CUcoredumpCallbackHandle: + """ Opaque handle representing a registered coredump status callback. + + This handle is returned when registering a callback and must be provided when deregistering the callback. + + Methods + ------- + getPtr() + Get memory address of class instance + + """ + cdef cydriver.CUcoredumpCallbackHandle _pvt_val + cdef cydriver.CUcoredumpCallbackHandle* _pvt_ptr + +cdef class CUdevResourceDesc: + """ + + An opaque descriptor handle. The descriptor encapsulates multiple created and configured resources. Created via cuDevResourceGenerateDesc + + Methods + ------- + getPtr() + Get memory address of class instance + + """ + cdef cydriver.CUdevResourceDesc _pvt_val + cdef cydriver.CUdevResourceDesc* _pvt_ptr + +cdef class CUlogsCallbackHandle: + """ + + Methods + ------- + getPtr() + Get memory address of class instance + + """ + cdef cydriver.CUlogsCallbackHandle _pvt_val + cdef cydriver.CUlogsCallbackHandle* _pvt_ptr + +cdef class CUeglStreamConnection: + """ + + CUDA EGLSream Connection + + Methods + ------- + getPtr() + Get memory address of class instance + + """ + cdef cydriver.CUeglStreamConnection _pvt_val + cdef cydriver.CUeglStreamConnection* _pvt_ptr + +cdef class EGLImageKHR: + """ + + Methods + ------- + getPtr() + Get memory address of class instance + + """ + cdef cydriver.EGLImageKHR _pvt_val + cdef cydriver.EGLImageKHR* _pvt_ptr + +cdef class EGLStreamKHR: + """ + + Methods + ------- + getPtr() + Get memory address of class instance + + """ + cdef cydriver.EGLStreamKHR _pvt_val + cdef cydriver.EGLStreamKHR* _pvt_ptr + +cdef class EGLSyncKHR: + """ + + Methods + ------- + getPtr() + Get memory address of class instance + + """ + cdef cydriver.EGLSyncKHR _pvt_val + cdef cydriver.EGLSyncKHR* _pvt_ptr + +cdef class CUasyncCallback: + """ + + Methods + ------- + getPtr() + Get memory address of class instance + + """ + cdef cydriver.CUasyncCallback _pvt_val + cdef cydriver.CUasyncCallback* _pvt_ptr + +cdef class CUhostFn: + """ + + Methods + ------- + getPtr() + Get memory address of class instance + + """ + cdef cydriver.CUhostFn _pvt_val + cdef cydriver.CUhostFn* _pvt_ptr + +cdef class CUstreamCallback: + """ + + Methods + ------- + getPtr() + Get memory address of class instance + + """ + cdef cydriver.CUstreamCallback _pvt_val + cdef cydriver.CUstreamCallback* _pvt_ptr + +cdef class CUoccupancyB2DSize: + """ + + Methods + ------- + getPtr() + Get memory address of class instance + + """ + cdef cydriver.CUoccupancyB2DSize _pvt_val + cdef cydriver.CUoccupancyB2DSize* _pvt_ptr + +cdef class CUgraphRecaptureCallback: + """ + + Methods + ------- + getPtr() + Get memory address of class instance + + """ + cdef cydriver.CUgraphRecaptureCallback _pvt_val + cdef cydriver.CUgraphRecaptureCallback* _pvt_ptr + +cdef class CUcoredumpStatusCallback: + """ + + Methods + ------- + getPtr() + Get memory address of class instance + + """ + cdef cydriver.CUcoredumpStatusCallback _pvt_val + cdef cydriver.CUcoredumpStatusCallback* _pvt_ptr + +cdef class CUlogsCallback: + """ + + Methods + ------- + getPtr() + Get memory address of class instance + + """ + cdef cydriver.CUlogsCallback _pvt_val + cdef cydriver.CUlogsCallback* _pvt_ptr + +cdef class CUuuid_st: + """ + Attributes + ---------- + bytes : bytes + < CUDA definition of UUID + + Methods + ------- + getPtr() + Get memory address of class instance + """ + cdef cydriver.CUuuid_st _pvt_val + cdef cydriver.CUuuid_st* _pvt_ptr + +cdef class CUmemFabricHandle_st: + """ + Fabric handle - An opaque handle representing a memory allocation + that can be exported to processes in same or different nodes. For + IPC between processes on different nodes they must be connected via + the NVSwitch fabric. + + Attributes + ---------- + data : bytes + + + Methods + ------- + getPtr() + Get memory address of class instance + """ + cdef cydriver.CUmemFabricHandle_st _pvt_val + cdef cydriver.CUmemFabricHandle_st* _pvt_ptr + +cdef class CUipcEventHandle_st: + """ + CUDA IPC event handle + + Attributes + ---------- + reserved : bytes + + + Methods + ------- + getPtr() + Get memory address of class instance + """ + cdef cydriver.CUipcEventHandle_st _pvt_val + cdef cydriver.CUipcEventHandle_st* _pvt_ptr + +cdef class CUipcMemHandle_st: + """ + CUDA IPC mem handle + + Attributes + ---------- + reserved : bytes + + + Methods + ------- + getPtr() + Get memory address of class instance + """ + cdef cydriver.CUipcMemHandle_st _pvt_val + cdef cydriver.CUipcMemHandle_st* _pvt_ptr + +cdef class CUstreamMemOpWaitValueParams_st: + """ + Attributes + ---------- + operation : CUstreamBatchMemOpType + + address : CUdeviceptr + + value : cuuint32_t + + value64 : cuuint64_t + + flags : unsigned int + See CUstreamWaitValue_flags. + alias : CUdeviceptr + For driver internal use. Initial value is unimportant. + + Methods + ------- + getPtr() + Get memory address of class instance + """ + cdef cydriver.CUstreamBatchMemOpParams_union* _pvt_ptr + cdef CUdeviceptr _address + cdef cuuint32_t _value + cdef cuuint64_t _value64 + cdef CUdeviceptr _alias + +cdef class CUstreamMemOpWriteValueParams_st: + """ + Attributes + ---------- + operation : CUstreamBatchMemOpType + + address : CUdeviceptr + + value : cuuint32_t + + value64 : cuuint64_t + + flags : unsigned int + See CUstreamWriteValue_flags. + alias : CUdeviceptr + For driver internal use. Initial value is unimportant. + + Methods + ------- + getPtr() + Get memory address of class instance + """ + cdef cydriver.CUstreamBatchMemOpParams_union* _pvt_ptr + cdef CUdeviceptr _address + cdef cuuint32_t _value + cdef cuuint64_t _value64 + cdef CUdeviceptr _alias + +cdef class CUstreamMemOpFlushRemoteWritesParams_st: + """ + Attributes + ---------- + operation : CUstreamBatchMemOpType + + flags : unsigned int + Must be 0. + + Methods + ------- + getPtr() + Get memory address of class instance + """ + cdef cydriver.CUstreamBatchMemOpParams_union* _pvt_ptr + +cdef class CUstreamMemOpMemoryBarrierParams_st: + """ + Attributes + ---------- + operation : CUstreamBatchMemOpType + < Only supported in the _v2 API + flags : unsigned int + See CUstreamMemoryBarrier_flags + + Methods + ------- + getPtr() + Get memory address of class instance + """ + cdef cydriver.CUstreamBatchMemOpParams_union* _pvt_ptr + +cdef class CUstreamMemOpAtomicReductionParams_st: + """ + Attributes + ---------- + operation : CUstreamBatchMemOpType + + flags : unsigned int + Must be 0 + reductionOp : CUstreamAtomicReductionOpType + See CUstreamAtomicReductionOpType + dataType : CUstreamAtomicReductionDataType + See CUstreamAtomicReductionDataType + address : CUdeviceptr + The address the atomic operation will be operated on + value : cuuint64_t + The operand value the atomic operation will operate with + alias : CUdeviceptr + For driver internal use. Initial value is unimportant. + + Methods + ------- + getPtr() + Get memory address of class instance + """ + cdef cydriver.CUstreamBatchMemOpParams_union* _pvt_ptr + cdef CUdeviceptr _address + cdef cuuint64_t _value + cdef CUdeviceptr _alias + +cdef class CUstreamBatchMemOpParams_union: + """ + Per-operation parameters for cuStreamBatchMemOp + + Attributes + ---------- + operation : CUstreamBatchMemOpType + Operation. This is the first field of all the union elemets and + acts as a TAG to determine which union member is valid. + waitValue : CUstreamMemOpWaitValueParams_st + Params for CU_STREAM_MEM_OP_WAIT_VALUE_32 and + CU_STREAM_MEM_OP_WAIT_VALUE_64 operations. + writeValue : CUstreamMemOpWriteValueParams_st + Params for CU_STREAM_MEM_OP_WRITE_VALUE_32 and + CU_STREAM_MEM_OP_WRITE_VALUE_64 operations. + flushRemoteWrites : CUstreamMemOpFlushRemoteWritesParams_st + Params for CU_STREAM_MEM_OP_FLUSH_REMOTE_WRITES operations. + memoryBarrier : CUstreamMemOpMemoryBarrierParams_st + Params for CU_STREAM_MEM_OP_BARRIER operations. + atomicReduction : CUstreamMemOpAtomicReductionParams_st + + pad : list[cuuint64_t] + + + Methods + ------- + getPtr() + Get memory address of class instance + """ + cdef cydriver.CUstreamBatchMemOpParams_union _pvt_val + cdef cydriver.CUstreamBatchMemOpParams_union* _pvt_ptr + cdef CUstreamMemOpWaitValueParams_st _waitValue + cdef CUstreamMemOpWriteValueParams_st _writeValue + cdef CUstreamMemOpFlushRemoteWritesParams_st _flushRemoteWrites + cdef CUstreamMemOpMemoryBarrierParams_st _memoryBarrier + cdef CUstreamMemOpAtomicReductionParams_st _atomicReduction + +cdef class CUDA_BATCH_MEM_OP_NODE_PARAMS_v1_st: + """ + Batch memory operation node parameters Used in the legacy + cuGraphAddBatchMemOpNode api. New code should use cuGraphAddNode() + + Attributes + ---------- + ctx : CUcontext + + count : unsigned int + + paramArray : CUstreamBatchMemOpParams + + flags : unsigned int + + + Methods + ------- + getPtr() + Get memory address of class instance + """ + cdef cydriver.CUDA_BATCH_MEM_OP_NODE_PARAMS_v1_st _pvt_val + cdef cydriver.CUDA_BATCH_MEM_OP_NODE_PARAMS_v1_st* _pvt_ptr + cdef CUcontext _ctx + cdef size_t _paramArray_length + cdef cydriver.CUstreamBatchMemOpParams* _paramArray + +cdef class CUDA_BATCH_MEM_OP_NODE_PARAMS_v2_st: + """ + Batch memory operation node parameters + + Attributes + ---------- + ctx : CUcontext + Context to use for the operations. + count : unsigned int + Number of operations in paramArray. + paramArray : CUstreamBatchMemOpParams + Array of batch memory operations. + flags : unsigned int + Flags to control the node. + + Methods + ------- + getPtr() + Get memory address of class instance + """ + cdef cydriver.CUDA_BATCH_MEM_OP_NODE_PARAMS_v2_st _pvt_val + cdef cydriver.CUDA_BATCH_MEM_OP_NODE_PARAMS_v2_st* _pvt_ptr + cdef CUcontext _ctx + cdef size_t _paramArray_length + cdef cydriver.CUstreamBatchMemOpParams* _paramArray + +cdef class anon_struct0: + """ + Attributes + ---------- + bytesOverBudget : unsigned long long + + + Methods + ------- + getPtr() + Get memory address of class instance + """ + cdef cydriver.CUasyncNotificationInfo_st* _pvt_ptr + +cdef class anon_union2: + """ + Attributes + ---------- + overBudget : anon_struct0 + + + Methods + ------- + getPtr() + Get memory address of class instance + """ + cdef cydriver.CUasyncNotificationInfo_st* _pvt_ptr + cdef anon_struct0 _overBudget + +cdef class CUasyncNotificationInfo_st: + """ + Information passed to the user via the async notification callback + + Attributes + ---------- + type : CUasyncNotificationType + The type of notification being sent + info : anon_union2 + Information about the notification. `typename` must be checked in + order to interpret this field. + + Methods + ------- + getPtr() + Get memory address of class instance + """ + cdef cydriver.CUasyncNotificationInfo_st* _val_ptr + cdef cydriver.CUasyncNotificationInfo_st* _pvt_ptr + cdef anon_union2 _info + +cdef class CUdevprop_st: + """ + Legacy device properties + + Attributes + ---------- + maxThreadsPerBlock : int + Maximum number of threads per block + maxThreadsDim : list[int] + Maximum size of each dimension of a block + maxGridSize : list[int] + Maximum size of each dimension of a grid + sharedMemPerBlock : int + Shared memory available per block in bytes + totalConstantMemory : int + Constant memory available on device in bytes + SIMDWidth : int + Warp size in threads + memPitch : int + Maximum pitch in bytes allowed by memory copies + regsPerBlock : int + 32-bit registers available per block + clockRate : int + Clock frequency in kilohertz + textureAlign : int + Alignment requirement for textures + + Methods + ------- + getPtr() + Get memory address of class instance + """ + cdef cydriver.CUdevprop_st _pvt_val + cdef cydriver.CUdevprop_st* _pvt_ptr + +cdef class CUaccessPolicyWindow_st: + """ + Specifies an access policy for a window, a contiguous extent of + memory beginning at base_ptr and ending at base_ptr + num_bytes. + num_bytes is limited by + CU_DEVICE_ATTRIBUTE_MAX_ACCESS_POLICY_WINDOW_SIZE. Partition into + many segments and assign segments such that: sum of "hit segments" + / window == approx. ratio. sum of "miss segments" / window == + approx 1-ratio. Segments and ratio specifications are fitted to the + capabilities of the architecture. Accesses in a hit segment apply + the hitProp access policy. Accesses in a miss segment apply the + missProp access policy. + + Attributes + ---------- + base_ptr : Any + Starting address of the access policy window. CUDA driver may align + it. + num_bytes : size_t + Size in bytes of the window policy. CUDA driver may restrict the + maximum size and alignment. + hitRatio : float + hitRatio specifies percentage of lines assigned hitProp, rest are + assigned missProp. + hitProp : CUaccessProperty + CUaccessProperty set for hit. + missProp : CUaccessProperty + CUaccessProperty set for miss. Must be either NORMAL or STREAMING + + Methods + ------- + getPtr() + Get memory address of class instance + """ + cdef cydriver.CUaccessPolicyWindow_st _pvt_val + cdef cydriver.CUaccessPolicyWindow_st* _pvt_ptr + cdef _HelperInputVoidPtr _cybase_ptr + +cdef class CUDA_KERNEL_NODE_PARAMS_st: + """ + GPU kernel node parameters + + Attributes + ---------- + func : CUfunction + Kernel to launch + gridDimX : unsigned int + Width of grid in blocks + gridDimY : unsigned int + Height of grid in blocks + gridDimZ : unsigned int + Depth of grid in blocks + blockDimX : unsigned int + X dimension of each thread block + blockDimY : unsigned int + Y dimension of each thread block + blockDimZ : unsigned int + Z dimension of each thread block + sharedMemBytes : unsigned int + Dynamic shared-memory size per thread block in bytes + kernelParams : Any + Array of pointers to kernel parameters + extra : Any + Extra options + + Methods + ------- + getPtr() + Get memory address of class instance + """ + cdef cydriver.CUDA_KERNEL_NODE_PARAMS_st _pvt_val + cdef cydriver.CUDA_KERNEL_NODE_PARAMS_st* _pvt_ptr + cdef CUfunction _func + cdef _HelperKernelParams _cykernelParams + +cdef class CUDA_KERNEL_NODE_PARAMS_v2_st: + """ + GPU kernel node parameters + + Attributes + ---------- + func : CUfunction + Kernel to launch + gridDimX : unsigned int + Width of grid in blocks + gridDimY : unsigned int + Height of grid in blocks + gridDimZ : unsigned int + Depth of grid in blocks + blockDimX : unsigned int + X dimension of each thread block + blockDimY : unsigned int + Y dimension of each thread block + blockDimZ : unsigned int + Z dimension of each thread block + sharedMemBytes : unsigned int + Dynamic shared-memory size per thread block in bytes + kernelParams : Any + Array of pointers to kernel parameters + extra : Any + Extra options + kern : CUkernel + Kernel to launch, will only be referenced if func is NULL + ctx : CUcontext + Context for the kernel task to run in. The value NULL will indicate + the current context should be used by the api. This field is + ignored if func is set. + + Methods + ------- + getPtr() + Get memory address of class instance + """ + cdef cydriver.CUDA_KERNEL_NODE_PARAMS_v2_st _pvt_val + cdef cydriver.CUDA_KERNEL_NODE_PARAMS_v2_st* _pvt_ptr + cdef CUfunction _func + cdef _HelperKernelParams _cykernelParams + cdef CUkernel _kern + cdef CUcontext _ctx + +cdef class CUDA_KERNEL_NODE_PARAMS_v3_st: + """ + GPU kernel node parameters + + Attributes + ---------- + func : CUfunction + Kernel to launch + gridDimX : unsigned int + Width of grid in blocks + gridDimY : unsigned int + Height of grid in blocks + gridDimZ : unsigned int + Depth of grid in blocks + blockDimX : unsigned int + X dimension of each thread block + blockDimY : unsigned int + Y dimension of each thread block + blockDimZ : unsigned int + Z dimension of each thread block + sharedMemBytes : unsigned int + Dynamic shared-memory size per thread block in bytes + kernelParams : Any + Array of pointers to kernel parameters + extra : Any + Extra options + kern : CUkernel + Kernel to launch, will only be referenced if func is NULL + ctx : CUcontext + Context for the kernel task to run in. The value NULL will indicate + the current context should be used by the api. This field is + ignored if func is set. + + Methods + ------- + getPtr() + Get memory address of class instance + """ + cdef cydriver.CUDA_KERNEL_NODE_PARAMS_v3_st _pvt_val + cdef cydriver.CUDA_KERNEL_NODE_PARAMS_v3_st* _pvt_ptr + cdef CUfunction _func + cdef _HelperKernelParams _cykernelParams + cdef CUkernel _kern + cdef CUcontext _ctx + +cdef class CUDA_MEMSET_NODE_PARAMS_st: + """ + Memset node parameters + + Attributes + ---------- + dst : CUdeviceptr + Destination device pointer + pitch : size_t + Pitch of destination device pointer. Unused if height is 1 + value : unsigned int + Value to be set + elementSize : unsigned int + Size of each element in bytes. Must be 1, 2, or 4. + width : size_t + Width of the row in elements + height : size_t + Number of rows + + Methods + ------- + getPtr() + Get memory address of class instance + """ + cdef cydriver.CUDA_MEMSET_NODE_PARAMS_st _pvt_val + cdef cydriver.CUDA_MEMSET_NODE_PARAMS_st* _pvt_ptr + cdef CUdeviceptr _dst + +cdef class CUDA_MEMSET_NODE_PARAMS_v2_st: + """ + Memset node parameters + + Attributes + ---------- + dst : CUdeviceptr + Destination device pointer + pitch : size_t + Pitch of destination device pointer. Unused if height is 1 + value : unsigned int + Value to be set + elementSize : unsigned int + Size of each element in bytes. Must be 1, 2, or 4. + width : size_t + Width of the row in elements + height : size_t + Number of rows + ctx : CUcontext + Context on which to run the node + + Methods + ------- + getPtr() + Get memory address of class instance + """ + cdef cydriver.CUDA_MEMSET_NODE_PARAMS_v2_st _pvt_val + cdef cydriver.CUDA_MEMSET_NODE_PARAMS_v2_st* _pvt_ptr + cdef CUdeviceptr _dst + cdef CUcontext _ctx + +cdef class CUDA_HOST_NODE_PARAMS_st: + """ + Host node parameters + + Attributes + ---------- + fn : CUhostFn + The function to call when the node executes + userData : Any + Argument to pass to the function + + Methods + ------- + getPtr() + Get memory address of class instance + """ + cdef cydriver.CUDA_HOST_NODE_PARAMS_st _pvt_val + cdef cydriver.CUDA_HOST_NODE_PARAMS_st* _pvt_ptr + cdef CUhostFn _fn + cdef _HelperInputVoidPtr _cyuserData + +cdef class CUDA_HOST_NODE_PARAMS_v2_st: + """ + Host node parameters + + Attributes + ---------- + fn : CUhostFn + The function to call when the node executes + userData : Any + Argument to pass to the function + syncMode : unsigned int + The sync mode to use for the host task + + Methods + ------- + getPtr() + Get memory address of class instance + """ + cdef cydriver.CUDA_HOST_NODE_PARAMS_v2_st _pvt_val + cdef cydriver.CUDA_HOST_NODE_PARAMS_v2_st* _pvt_ptr + cdef CUhostFn _fn + cdef _HelperInputVoidPtr _cyuserData + +cdef class CUDA_CONDITIONAL_NODE_PARAMS: + """ + Conditional node parameters + + Attributes + ---------- + handle : CUgraphConditionalHandle + Conditional node handle. Handles must be created in advance of + creating the node using cuGraphConditionalHandleCreate. + type : CUgraphConditionalNodeType + Type of conditional node. + size : unsigned int + Size of graph output array. Allowed values are 1 for + CU_GRAPH_COND_TYPE_WHILE, 1 or 2 for CU_GRAPH_COND_TYPE_IF, or any + value greater than zero for CU_GRAPH_COND_TYPE_SWITCH. + phGraph_out : CUgraph + CUDA-owned array populated with conditional node child graphs + during creation of the node. Valid for the lifetime of the + conditional node. The contents of the graph(s) are subject to the + following constraints: - Allowed node types are kernel nodes, + empty nodes, child graphs, memsets, memcopies, and conditionals. + This applies recursively to child graphs and conditional bodies. + - All kernels, including kernels in nested conditionals or child + graphs at any level, must belong to the same CUDA context. + These graphs may be populated using graph node creation APIs or + cuStreamBeginCaptureToGraph. CU_GRAPH_COND_TYPE_IF: phGraph_out[0] + is executed when the condition is non-zero. If `size` == 2, + phGraph_out[1] will be executed when the condition is zero. + CU_GRAPH_COND_TYPE_WHILE: phGraph_out[0] is executed as long as the + condition is non-zero. CU_GRAPH_COND_TYPE_SWITCH: phGraph_out[n] is + executed when the condition is equal to n. If the condition >= + `size`, no body graph is executed. + ctx : CUcontext + Context on which to run the node. Must match context used to create + the handle and all body nodes. + + Methods + ------- + getPtr() + Get memory address of class instance + """ + cdef cydriver.CUDA_CONDITIONAL_NODE_PARAMS _pvt_val + cdef cydriver.CUDA_CONDITIONAL_NODE_PARAMS* _pvt_ptr + cdef CUgraphConditionalHandle _handle + cdef size_t _phGraph_out_length + cdef cydriver.CUgraph* _phGraph_out + cdef CUcontext _ctx + +cdef class CUgraphEdgeData_st: + """ + Optional annotation for edges in a CUDA graph. Note, all edges + implicitly have annotations and default to a zero-initialized value + if not specified. A zero-initialized struct indicates a standard + full serialization of two nodes with memory visibility. + + Attributes + ---------- + from_port : bytes + This indicates when the dependency is triggered from the upstream + node on the edge. The meaning is specfic to the node type. A value + of 0 in all cases means full completion of the upstream node, with + memory visibility to the downstream node or portion thereof + (indicated by `to_port`). Only kernel nodes define non-zero + ports. A kernel node can use the following output port types: + CU_GRAPH_KERNEL_NODE_PORT_DEFAULT, + CU_GRAPH_KERNEL_NODE_PORT_PROGRAMMATIC, or + CU_GRAPH_KERNEL_NODE_PORT_LAUNCH_ORDER. + to_port : bytes + This indicates what portion of the downstream node is dependent on + the upstream node or portion thereof (indicated by `from_port`). + The meaning is specific to the node type. A value of 0 in all cases + means the entirety of the downstream node is dependent on the + upstream work. Currently no node types define non-zero ports. + Accordingly, this field must be set to zero. + type : bytes + This should be populated with a value from CUgraphDependencyType. + (It is typed as char due to compiler-specific layout of bitfields.) + See CUgraphDependencyType. + reserved : bytes + These bytes are unused and must be zeroed. This ensures + compatibility if additional fields are added in the future. + + Methods + ------- + getPtr() + Get memory address of class instance + """ + cdef cydriver.CUgraphEdgeData_st _pvt_val + cdef cydriver.CUgraphEdgeData_st* _pvt_ptr + +cdef class CUDA_GRAPH_INSTANTIATE_PARAMS_st: + """ + Graph instantiation parameters + + Attributes + ---------- + flags : cuuint64_t + Instantiation flags + hUploadStream : CUstream + Upload stream + hErrNode_out : CUgraphNode + The node which caused instantiation to fail, if any + result_out : CUgraphInstantiateResult + Whether instantiation was successful. If it failed, the reason why + + Methods + ------- + getPtr() + Get memory address of class instance + """ + cdef cydriver.CUDA_GRAPH_INSTANTIATE_PARAMS_st _pvt_val + cdef cydriver.CUDA_GRAPH_INSTANTIATE_PARAMS_st* _pvt_ptr + cdef cuuint64_t _flags + cdef CUstream _hUploadStream + cdef CUgraphNode _hErrNode_out + +cdef class CUlaunchMemSyncDomainMap_st: + """ + Memory Synchronization Domain map See ::cudaLaunchMemSyncDomain. + By default, kernels are launched in domain 0. Kernel launched with + CU_LAUNCH_MEM_SYNC_DOMAIN_REMOTE will have a different domain ID. + User may also alter the domain ID with CUlaunchMemSyncDomainMap for + a specific stream / graph node / kernel launch. See + CU_LAUNCH_ATTRIBUTE_MEM_SYNC_DOMAIN_MAP. Domain ID range is + available through CU_DEVICE_ATTRIBUTE_MEM_SYNC_DOMAIN_COUNT. + + Attributes + ---------- + default_ : bytes + The default domain ID to use for designated kernels + remote : bytes + The remote domain ID to use for designated kernels + + Methods + ------- + getPtr() + Get memory address of class instance + """ + cdef cydriver.CUlaunchMemSyncDomainMap_st _pvt_val + cdef cydriver.CUlaunchMemSyncDomainMap_st* _pvt_ptr + +cdef class anon_struct1: + """ + Attributes + ---------- + x : unsigned int + + y : unsigned int + + z : unsigned int + + + Methods + ------- + getPtr() + Get memory address of class instance + """ + cdef cydriver.CUlaunchAttributeValue_union* _pvt_ptr + +cdef class anon_struct2: + """ + Attributes + ---------- + event : CUevent + + flags : int + + triggerAtBlockStart : int + + + Methods + ------- + getPtr() + Get memory address of class instance + """ + cdef cydriver.CUlaunchAttributeValue_union* _pvt_ptr + cdef CUevent _event + +cdef class anon_struct3: + """ + Attributes + ---------- + event : CUevent + + flags : int + + + Methods + ------- + getPtr() + Get memory address of class instance + """ + cdef cydriver.CUlaunchAttributeValue_union* _pvt_ptr + cdef CUevent _event + +cdef class anon_struct4: + """ + Attributes + ---------- + x : unsigned int + + y : unsigned int + + z : unsigned int + + + Methods + ------- + getPtr() + Get memory address of class instance + """ + cdef cydriver.CUlaunchAttributeValue_union* _pvt_ptr + +cdef class anon_struct5: + """ + Attributes + ---------- + deviceUpdatable : int + + devNode : CUgraphDeviceNode + + + Methods + ------- + getPtr() + Get memory address of class instance + """ + cdef cydriver.CUlaunchAttributeValue_union* _pvt_ptr + cdef CUgraphDeviceNode _devNode + +cdef class CUlaunchAttributeValue_union: + """ + Launch attributes union; used as value field of CUlaunchAttribute + + Attributes + ---------- + pad : bytes + + accessPolicyWindow : CUaccessPolicyWindow + Value of launch attribute CU_LAUNCH_ATTRIBUTE_ACCESS_POLICY_WINDOW. + cooperative : int + Value of launch attribute CU_LAUNCH_ATTRIBUTE_COOPERATIVE. Nonzero + indicates a cooperative kernel (see cuLaunchCooperativeKernel). + syncPolicy : CUsynchronizationPolicy + Value of launch attribute + CU_LAUNCH_ATTRIBUTE_SYNCHRONIZATION_POLICY. CUsynchronizationPolicy + for work queued up in this stream + clusterDim : anon_struct1 + Value of launch attribute CU_LAUNCH_ATTRIBUTE_CLUSTER_DIMENSION + that represents the desired cluster dimensions for the kernel. + Opaque type with the following fields: - `x` - The X dimension of + the cluster, in blocks. Must be a divisor of the grid X dimension. + - `y` - The Y dimension of the cluster, in blocks. Must be a + divisor of the grid Y dimension. - `z` - The Z dimension of the + cluster, in blocks. Must be a divisor of the grid Z dimension. + clusterSchedulingPolicyPreference : CUclusterSchedulingPolicy + Value of launch attribute + CU_LAUNCH_ATTRIBUTE_CLUSTER_SCHEDULING_POLICY_PREFERENCE. Cluster + scheduling policy preference for the kernel. + programmaticStreamSerializationAllowed : int + Value of launch attribute + CU_LAUNCH_ATTRIBUTE_PROGRAMMATIC_STREAM_SERIALIZATION. + programmaticEvent : anon_struct2 + Value of launch attribute CU_LAUNCH_ATTRIBUTE_PROGRAMMATIC_EVENT + with the following fields: - `CUevent` event - Event to fire when + all blocks trigger it. - `Event` record flags, see + cuEventRecordWithFlags. Does not accept :CU_EVENT_RECORD_EXTERNAL. + - `triggerAtBlockStart` - If this is set to non-0, each block + launch will automatically trigger the event. + launchCompletionEvent : anon_struct3 + Value of launch attribute + CU_LAUNCH_ATTRIBUTE_LAUNCH_COMPLETION_EVENT with the following + fields: - `CUevent` event - Event to fire when the last block + launches - `int` flags; - Event record flags, see + cuEventRecordWithFlags. Does not accept CU_EVENT_RECORD_EXTERNAL. + priority : int + Value of launch attribute CU_LAUNCH_ATTRIBUTE_PRIORITY. Execution + priority of the kernel. + memSyncDomainMap : CUlaunchMemSyncDomainMap + Value of launch attribute CU_LAUNCH_ATTRIBUTE_MEM_SYNC_DOMAIN_MAP. + See CUlaunchMemSyncDomainMap. + memSyncDomain : CUlaunchMemSyncDomain + Value of launch attribute CU_LAUNCH_ATTRIBUTE_MEM_SYNC_DOMAIN. + See::CUlaunchMemSyncDomain + preferredClusterDim : anon_struct4 + Value of launch attribute + CU_LAUNCH_ATTRIBUTE_PREFERRED_CLUSTER_DIMENSION that represents the + desired preferred cluster dimensions for the kernel. Opaque type + with the following fields: - `x` - The X dimension of the preferred + cluster, in blocks. Must be a divisor of the grid X dimension, and + must be a multiple of the `x` field of + CUlaunchAttributeValue::clusterDim. - `y` - The Y dimension of + the preferred cluster, in blocks. Must be a divisor of the grid Y + dimension, and must be a multiple of the `y` field of + CUlaunchAttributeValue::clusterDim. - `z` - The Z dimension of + the preferred cluster, in blocks. Must be equal to the `z` field of + CUlaunchAttributeValue::clusterDim. + deviceUpdatableKernelNode : anon_struct5 + Value of launch attribute + CU_LAUNCH_ATTRIBUTE_DEVICE_UPDATABLE_KERNEL_NODE. with the + following fields: - `int` deviceUpdatable - Whether or not the + resulting kernel node should be device-updatable. - + `CUgraphDeviceNode` devNode - Returns a handle to pass to the + various device-side update functions. + sharedMemCarveout : unsigned int + Value of launch attribute + CU_LAUNCH_ATTRIBUTE_PREFERRED_SHARED_MEMORY_CARVEOUT. + nvlinkUtilCentricScheduling : unsigned int + + portableClusterSizeMode : CUlaunchAttributePortableClusterMode + Value of launch attribute + CU_LAUNCH_ATTRIBUTE_PORTABLE_CLUSTER_SIZE_MODE. + sharedMemoryMode : CUsharedMemoryMode + Value of launch attribute CU_LAUNCH_ATTRIBUTE_SHARED_MEMORY_MODE. + See CUsharedMemoryMode for acceptable values. + + Methods + ------- + getPtr() + Get memory address of class instance + """ + cdef cydriver.CUlaunchAttributeValue_union _pvt_val + cdef cydriver.CUlaunchAttributeValue_union* _pvt_ptr + cdef CUaccessPolicyWindow _accessPolicyWindow + cdef anon_struct1 _clusterDim + cdef anon_struct2 _programmaticEvent + cdef anon_struct3 _launchCompletionEvent + cdef CUlaunchMemSyncDomainMap _memSyncDomainMap + cdef anon_struct4 _preferredClusterDim + cdef anon_struct5 _deviceUpdatableKernelNode + +cdef class CUlaunchAttribute_st: + """ + Launch attribute + + Attributes + ---------- + id : CUlaunchAttributeID + Attribute to set + value : CUlaunchAttributeValue + Value of the attribute + + Methods + ------- + getPtr() + Get memory address of class instance + """ + cdef cydriver.CUlaunchAttribute_st _pvt_val + cdef cydriver.CUlaunchAttribute_st* _pvt_ptr + cdef CUlaunchAttributeValue _value + +cdef class CUlaunchConfig_st: + """ + CUDA extensible launch configuration + + Attributes + ---------- + gridDimX : unsigned int + Width of grid in blocks + gridDimY : unsigned int + Height of grid in blocks + gridDimZ : unsigned int + Depth of grid in blocks + blockDimX : unsigned int + X dimension of each thread block + blockDimY : unsigned int + Y dimension of each thread block + blockDimZ : unsigned int + Z dimension of each thread block + sharedMemBytes : unsigned int + Dynamic shared-memory size per thread block in bytes + hStream : CUstream + Stream identifier + attrs : CUlaunchAttribute + List of attributes; nullable if CUlaunchConfig::numAttrs == 0 + numAttrs : unsigned int + Number of attributes populated in CUlaunchConfig::attrs + + Methods + ------- + getPtr() + Get memory address of class instance + """ + cdef cydriver.CUlaunchConfig_st _pvt_val + cdef cydriver.CUlaunchConfig_st* _pvt_ptr + cdef CUstream _hStream + cdef size_t _attrs_length + cdef cydriver.CUlaunchAttribute* _attrs + +cdef class CUexecAffinitySmCount_st: + """ + Value for CU_EXEC_AFFINITY_TYPE_SM_COUNT + + Attributes + ---------- + val : unsigned int + The number of SMs the context is limited to use. + + Methods + ------- + getPtr() + Get memory address of class instance + """ + cdef cydriver.CUexecAffinitySmCount_st _pvt_val + cdef cydriver.CUexecAffinitySmCount_st* _pvt_ptr + +cdef class anon_union3: + """ + Attributes + ---------- + smCount : CUexecAffinitySmCount + + + Methods + ------- + getPtr() + Get memory address of class instance + """ + cdef cydriver.CUexecAffinityParam_st* _pvt_ptr + cdef CUexecAffinitySmCount _smCount + +cdef class CUexecAffinityParam_st: + """ + Execution Affinity Parameters + + Attributes + ---------- + type : CUexecAffinityType + Type of execution affinity. + param : anon_union3 + + + Methods + ------- + getPtr() + Get memory address of class instance + """ + cdef cydriver.CUexecAffinityParam_st* _val_ptr + cdef cydriver.CUexecAffinityParam_st* _pvt_ptr + cdef anon_union3 _param + +cdef class CUctxCigParam_st: + """ + CIG Context Create Params + + Attributes + ---------- + sharedDataType : CUcigDataType + Type of shared data from graphics client (D3D12 or Vulkan). + sharedData : Any + Graphics client data handle (ID3D12CommandQueue or Nvidia specific + data blob). + + Methods + ------- + getPtr() + Get memory address of class instance + """ + cdef cydriver.CUctxCigParam_st _pvt_val + cdef cydriver.CUctxCigParam_st* _pvt_ptr + cdef _HelperInputVoidPtr _cysharedData + +cdef class CUctxCreateParams_st: + """ + Params for creating CUDA context. Both execAffinityParams and + cigParams cannot be non-NULL at the same time. If both are NULL, + the context will be created as a regular CUDA context. + + Attributes + ---------- + execAffinityParams : CUexecAffinityParam + Array of execution affinity parameters to limit context resources + (e.g., SM count). Only supported Volta+ MPS. Mutually exclusive + with cigParams. + numExecAffinityParams : int + Number of elements in execAffinityParams array. Must be 0 if + execAffinityParams is NULL. + cigParams : CUctxCigParam + CIG (CUDA in Graphics) parameters for sharing data from + D3D12/Vulkan graphics clients. Mutually exclusive with + execAffinityParams. + + Methods + ------- + getPtr() + Get memory address of class instance + """ + cdef cydriver.CUctxCreateParams_st _pvt_val + cdef cydriver.CUctxCreateParams_st* _pvt_ptr + cdef size_t _execAffinityParams_length + cdef cydriver.CUexecAffinityParam* _execAffinityParams + cdef size_t _cigParams_length + cdef cydriver.CUctxCigParam* _cigParams + +cdef class CUstreamCigParam_st: + """ + CIG Stream Capture Params + + Attributes + ---------- + streamSharedDataType : CUstreamCigDataType + Type of shared data from graphics client (D3D12). + streamSharedData : Any + Graphics client data handle + (ID3D12CommandList/ID3D12GraphicsCommandList). + + Methods + ------- + getPtr() + Get memory address of class instance + """ + cdef cydriver.CUstreamCigParam_st _pvt_val + cdef cydriver.CUstreamCigParam_st* _pvt_ptr + cdef _HelperInputVoidPtr _cystreamSharedData + +cdef class CUstreamCigCaptureParams_st: + """ + Params for capturing CUDA stream to CIG streamCigParams must be + non-NULL. + + Attributes + ---------- + streamCigParams : CUstreamCigParam + CIG (CUDA in Graphics) parameters for sharing command list data + from D3D12 graphics clients. + + Methods + ------- + getPtr() + Get memory address of class instance + """ + cdef cydriver.CUstreamCigCaptureParams_st _pvt_val + cdef cydriver.CUstreamCigCaptureParams_st* _pvt_ptr + cdef size_t _streamCigParams_length + cdef cydriver.CUstreamCigParam* _streamCigParams + +cdef class CUlibraryHostUniversalFunctionAndDataTable_st: + """ + Attributes + ---------- + functionTable : Any + + functionWindowSize : size_t + + dataTable : Any + + dataWindowSize : size_t + + + Methods + ------- + getPtr() + Get memory address of class instance + """ + cdef cydriver.CUlibraryHostUniversalFunctionAndDataTable_st _pvt_val + cdef cydriver.CUlibraryHostUniversalFunctionAndDataTable_st* _pvt_ptr + cdef _HelperInputVoidPtr _cyfunctionTable + cdef _HelperInputVoidPtr _cydataTable + +cdef class CUDA_MEMCPY2D_st: + """ + 2D memory copy parameters + + Attributes + ---------- + srcXInBytes : size_t + Source X in bytes + srcY : size_t + Source Y + srcMemoryType : CUmemorytype + Source memory type (host, device, array) + srcHost : Any + Source host pointer + srcDevice : CUdeviceptr + Source device pointer + srcArray : CUarray + Source array reference + srcPitch : size_t + Source pitch (ignored when src is array) + dstXInBytes : size_t + Destination X in bytes + dstY : size_t + Destination Y + dstMemoryType : CUmemorytype + Destination memory type (host, device, array) + dstHost : Any + Destination host pointer + dstDevice : CUdeviceptr + Destination device pointer + dstArray : CUarray + Destination array reference + dstPitch : size_t + Destination pitch (ignored when dst is array) + WidthInBytes : size_t + Width of 2D memory copy in bytes + Height : size_t + Height of 2D memory copy + + Methods + ------- + getPtr() + Get memory address of class instance + """ + cdef cydriver.CUDA_MEMCPY2D_st _pvt_val + cdef cydriver.CUDA_MEMCPY2D_st* _pvt_ptr + cdef _HelperInputVoidPtr _cysrcHost + cdef CUdeviceptr _srcDevice + cdef CUarray _srcArray + cdef _HelperInputVoidPtr _cydstHost + cdef CUdeviceptr _dstDevice + cdef CUarray _dstArray + +cdef class CUDA_MEMCPY3D_st: + """ + 3D memory copy parameters + + Attributes + ---------- + srcXInBytes : size_t + Source X in bytes + srcY : size_t + Source Y + srcZ : size_t + Source Z + srcLOD : size_t + Source LOD + srcMemoryType : CUmemorytype + Source memory type (host, device, array) + srcHost : Any + Source host pointer + srcDevice : CUdeviceptr + Source device pointer + srcArray : CUarray + Source array reference + reserved0 : Any + Must be NULL + srcPitch : size_t + Source pitch (ignored when src is array) + srcHeight : size_t + Source height (ignored when src is array; may be 0 if Depth==1) + dstXInBytes : size_t + Destination X in bytes + dstY : size_t + Destination Y + dstZ : size_t + Destination Z + dstLOD : size_t + Destination LOD + dstMemoryType : CUmemorytype + Destination memory type (host, device, array) + dstHost : Any + Destination host pointer + dstDevice : CUdeviceptr + Destination device pointer + dstArray : CUarray + Destination array reference + reserved1 : Any + Must be NULL + dstPitch : size_t + Destination pitch (ignored when dst is array) + dstHeight : size_t + Destination height (ignored when dst is array; may be 0 if + Depth==1) + WidthInBytes : size_t + Width of 3D memory copy in bytes + Height : size_t + Height of 3D memory copy + Depth : size_t + Depth of 3D memory copy + + Methods + ------- + getPtr() + Get memory address of class instance + """ + cdef cydriver.CUDA_MEMCPY3D_st _pvt_val + cdef cydriver.CUDA_MEMCPY3D_st* _pvt_ptr + cdef _HelperInputVoidPtr _cysrcHost + cdef CUdeviceptr _srcDevice + cdef CUarray _srcArray + cdef _HelperInputVoidPtr _cyreserved0 + cdef _HelperInputVoidPtr _cydstHost + cdef CUdeviceptr _dstDevice + cdef CUarray _dstArray + cdef _HelperInputVoidPtr _cyreserved1 + +cdef class CUDA_MEMCPY3D_PEER_st: + """ + 3D memory cross-context copy parameters + + Attributes + ---------- + srcXInBytes : size_t + Source X in bytes + srcY : size_t + Source Y + srcZ : size_t + Source Z + srcLOD : size_t + Source LOD + srcMemoryType : CUmemorytype + Source memory type (host, device, array) + srcHost : Any + Source host pointer + srcDevice : CUdeviceptr + Source device pointer + srcArray : CUarray + Source array reference + srcContext : CUcontext + Source context (ignored with srcMemoryType is CU_MEMORYTYPE_ARRAY) + srcPitch : size_t + Source pitch (ignored when src is array) + srcHeight : size_t + Source height (ignored when src is array; may be 0 if Depth==1) + dstXInBytes : size_t + Destination X in bytes + dstY : size_t + Destination Y + dstZ : size_t + Destination Z + dstLOD : size_t + Destination LOD + dstMemoryType : CUmemorytype + Destination memory type (host, device, array) + dstHost : Any + Destination host pointer + dstDevice : CUdeviceptr + Destination device pointer + dstArray : CUarray + Destination array reference + dstContext : CUcontext + Destination context (ignored with dstMemoryType is + CU_MEMORYTYPE_ARRAY) + dstPitch : size_t + Destination pitch (ignored when dst is array) + dstHeight : size_t + Destination height (ignored when dst is array; may be 0 if + Depth==1) + WidthInBytes : size_t + Width of 3D memory copy in bytes + Height : size_t + Height of 3D memory copy + Depth : size_t + Depth of 3D memory copy + + Methods + ------- + getPtr() + Get memory address of class instance + """ + cdef cydriver.CUDA_MEMCPY3D_PEER_st _pvt_val + cdef cydriver.CUDA_MEMCPY3D_PEER_st* _pvt_ptr + cdef _HelperInputVoidPtr _cysrcHost + cdef CUdeviceptr _srcDevice + cdef CUarray _srcArray + cdef CUcontext _srcContext + cdef _HelperInputVoidPtr _cydstHost + cdef CUdeviceptr _dstDevice + cdef CUarray _dstArray + cdef CUcontext _dstContext + +cdef class CUDA_MEMCPY_NODE_PARAMS_st: + """ + Memcpy node parameters + + Attributes + ---------- + flags : int + Must be zero + reserved : int + Must be zero + copyCtx : CUcontext + Context on which to run the node + copyParams : CUDA_MEMCPY3D + Parameters for the memory copy + + Methods + ------- + getPtr() + Get memory address of class instance + """ + cdef cydriver.CUDA_MEMCPY_NODE_PARAMS_st _pvt_val + cdef cydriver.CUDA_MEMCPY_NODE_PARAMS_st* _pvt_ptr + cdef CUcontext _copyCtx + cdef CUDA_MEMCPY3D _copyParams + +cdef class CUDA_ARRAY_DESCRIPTOR_st: + """ + Array descriptor + + Attributes + ---------- + Width : size_t + Width of array + Height : size_t + Height of array + Format : CUarray_format + Array format + NumChannels : unsigned int + Channels per array element + + Methods + ------- + getPtr() + Get memory address of class instance + """ + cdef cydriver.CUDA_ARRAY_DESCRIPTOR_st _pvt_val + cdef cydriver.CUDA_ARRAY_DESCRIPTOR_st* _pvt_ptr + +cdef class CUDA_ARRAY3D_DESCRIPTOR_st: + """ + 3D array descriptor + + Attributes + ---------- + Width : size_t + Width of 3D array + Height : size_t + Height of 3D array + Depth : size_t + Depth of 3D array + Format : CUarray_format + Array format + NumChannels : unsigned int + Channels per array element + Flags : unsigned int + Flags + + Methods + ------- + getPtr() + Get memory address of class instance + """ + cdef cydriver.CUDA_ARRAY3D_DESCRIPTOR_st _pvt_val + cdef cydriver.CUDA_ARRAY3D_DESCRIPTOR_st* _pvt_ptr + +cdef class anon_struct6: + """ + Attributes + ---------- + width : unsigned int + + height : unsigned int + + depth : unsigned int + + + Methods + ------- + getPtr() + Get memory address of class instance + """ + cdef cydriver.CUDA_ARRAY_SPARSE_PROPERTIES_st* _pvt_ptr + +cdef class CUDA_ARRAY_SPARSE_PROPERTIES_st: + """ + CUDA array sparse properties + + Attributes + ---------- + tileExtent : anon_struct6 + + miptailFirstLevel : unsigned int + First mip level at which the mip tail begins. + miptailSize : unsigned long long + Total size of the mip tail. + flags : unsigned int + Flags will either be zero or + CU_ARRAY_SPARSE_PROPERTIES_SINGLE_MIPTAIL + reserved : list[unsigned int] + + + Methods + ------- + getPtr() + Get memory address of class instance + """ + cdef cydriver.CUDA_ARRAY_SPARSE_PROPERTIES_st _pvt_val + cdef cydriver.CUDA_ARRAY_SPARSE_PROPERTIES_st* _pvt_ptr + cdef anon_struct6 _tileExtent + +cdef class CUDA_ARRAY_MEMORY_REQUIREMENTS_st: + """ + CUDA array memory requirements + + Attributes + ---------- + size : size_t + Total required memory size + alignment : size_t + alignment requirement + reserved : list[unsigned int] + + + Methods + ------- + getPtr() + Get memory address of class instance + """ + cdef cydriver.CUDA_ARRAY_MEMORY_REQUIREMENTS_st _pvt_val + cdef cydriver.CUDA_ARRAY_MEMORY_REQUIREMENTS_st* _pvt_ptr + +cdef class anon_struct7: + """ + Attributes + ---------- + hArray : CUarray + + + Methods + ------- + getPtr() + Get memory address of class instance + """ + cdef cydriver.CUDA_RESOURCE_DESC_st* _pvt_ptr + cdef CUarray _hArray + +cdef class anon_struct8: + """ + Attributes + ---------- + hMipmappedArray : CUmipmappedArray + + + Methods + ------- + getPtr() + Get memory address of class instance + """ + cdef cydriver.CUDA_RESOURCE_DESC_st* _pvt_ptr + cdef CUmipmappedArray _hMipmappedArray + +cdef class anon_struct9: + """ + Attributes + ---------- + devPtr : CUdeviceptr + + format : CUarray_format + + numChannels : unsigned int + + sizeInBytes : size_t + + + Methods + ------- + getPtr() + Get memory address of class instance + """ + cdef cydriver.CUDA_RESOURCE_DESC_st* _pvt_ptr + cdef CUdeviceptr _devPtr + +cdef class anon_struct10: + """ + Attributes + ---------- + devPtr : CUdeviceptr + + format : CUarray_format + + numChannels : unsigned int + + width : size_t + + height : size_t + + pitchInBytes : size_t + + + Methods + ------- + getPtr() + Get memory address of class instance + """ + cdef cydriver.CUDA_RESOURCE_DESC_st* _pvt_ptr + cdef CUdeviceptr _devPtr + +cdef class anon_struct11: + """ + Attributes + ---------- + reserved : list[int] + + + Methods + ------- + getPtr() + Get memory address of class instance + """ + cdef cydriver.CUDA_RESOURCE_DESC_st* _pvt_ptr + +cdef class anon_union4: + """ + Attributes + ---------- + array : anon_struct7 + + mipmap : anon_struct8 + + linear : anon_struct9 + + pitch2D : anon_struct10 + + reserved : anon_struct11 + + + Methods + ------- + getPtr() + Get memory address of class instance + """ + cdef cydriver.CUDA_RESOURCE_DESC_st* _pvt_ptr + cdef anon_struct7 _array + cdef anon_struct8 _mipmap + cdef anon_struct9 _linear + cdef anon_struct10 _pitch2D + cdef anon_struct11 _reserved + +cdef class CUDA_RESOURCE_DESC_st: + """ + CUDA Resource descriptor + + Attributes + ---------- + resType : CUresourcetype + Resource type + res : anon_union4 + + flags : unsigned int + Flags (must be zero) + + Methods + ------- + getPtr() + Get memory address of class instance + """ + cdef cydriver.CUDA_RESOURCE_DESC_st* _val_ptr + cdef cydriver.CUDA_RESOURCE_DESC_st* _pvt_ptr + cdef anon_union4 _res + +cdef class CUDA_TEXTURE_DESC_st: + """ + Texture descriptor + + Attributes + ---------- + addressMode : list[CUaddress_mode] + Address modes + filterMode : CUfilter_mode + Filter mode + flags : unsigned int + Flags + maxAnisotropy : unsigned int + Maximum anisotropy ratio + mipmapFilterMode : CUfilter_mode + Mipmap filter mode + mipmapLevelBias : float + Mipmap level bias + minMipmapLevelClamp : float + Mipmap minimum level clamp + maxMipmapLevelClamp : float + Mipmap maximum level clamp + borderColor : list[float] + Border Color + reserved : list[int] + + + Methods + ------- + getPtr() + Get memory address of class instance + """ + cdef cydriver.CUDA_TEXTURE_DESC_st _pvt_val + cdef cydriver.CUDA_TEXTURE_DESC_st* _pvt_ptr + +cdef class CUDA_RESOURCE_VIEW_DESC_st: + """ + Resource view descriptor + + Attributes + ---------- + format : CUresourceViewFormat + Resource view format + width : size_t + Width of the resource view + height : size_t + Height of the resource view + depth : size_t + Depth of the resource view + firstMipmapLevel : unsigned int + First defined mipmap level + lastMipmapLevel : unsigned int + Last defined mipmap level + firstLayer : unsigned int + First layer index + lastLayer : unsigned int + Last layer index + reserved : list[unsigned int] + + + Methods + ------- + getPtr() + Get memory address of class instance + """ + cdef cydriver.CUDA_RESOURCE_VIEW_DESC_st _pvt_val + cdef cydriver.CUDA_RESOURCE_VIEW_DESC_st* _pvt_ptr + +cdef class CUtensorMap_st: + """ + Tensor map descriptor. Requires compiler support for aligning to + 128 bytes. + + Attributes + ---------- + opaque : list[cuuint64_t] + + + Methods + ------- + getPtr() + Get memory address of class instance + """ + cdef cydriver.CUtensorMap_st _pvt_val + cdef cydriver.CUtensorMap_st* _pvt_ptr + +cdef class CUDA_POINTER_ATTRIBUTE_P2P_TOKENS_st: + """ + GPU Direct v3 tokens + + Attributes + ---------- + p2pToken : unsigned long long + + vaSpaceToken : unsigned int + + + Methods + ------- + getPtr() + Get memory address of class instance + """ + cdef cydriver.CUDA_POINTER_ATTRIBUTE_P2P_TOKENS_st _pvt_val + cdef cydriver.CUDA_POINTER_ATTRIBUTE_P2P_TOKENS_st* _pvt_ptr + +cdef class CUDA_LAUNCH_PARAMS_st: + """ + Kernel launch parameters + + Attributes + ---------- + function : CUfunction + Kernel to launch + gridDimX : unsigned int + Width of grid in blocks + gridDimY : unsigned int + Height of grid in blocks + gridDimZ : unsigned int + Depth of grid in blocks + blockDimX : unsigned int + X dimension of each thread block + blockDimY : unsigned int + Y dimension of each thread block + blockDimZ : unsigned int + Z dimension of each thread block + sharedMemBytes : unsigned int + Dynamic shared-memory size per thread block in bytes + hStream : CUstream + Stream identifier + kernelParams : Any + Array of pointers to kernel parameters + + Methods + ------- + getPtr() + Get memory address of class instance + """ + cdef cydriver.CUDA_LAUNCH_PARAMS_st _pvt_val + cdef cydriver.CUDA_LAUNCH_PARAMS_st* _pvt_ptr + cdef CUfunction _function + cdef CUstream _hStream + cdef _HelperKernelParams _cykernelParams + +cdef class anon_struct12: + """ + Attributes + ---------- + handle : Any + + name : Any + + + Methods + ------- + getPtr() + Get memory address of class instance + """ + cdef cydriver.CUDA_EXTERNAL_MEMORY_HANDLE_DESC_st* _pvt_ptr + cdef _HelperInputVoidPtr _cyhandle + cdef _HelperInputVoidPtr _cyname + +cdef class anon_union5: + """ + Attributes + ---------- + fd : int + + win32 : anon_struct12 + + nvSciBufObject : Any + + + Methods + ------- + getPtr() + Get memory address of class instance + """ + cdef cydriver.CUDA_EXTERNAL_MEMORY_HANDLE_DESC_st* _pvt_ptr + cdef anon_struct12 _win32 + cdef _HelperInputVoidPtr _cynvSciBufObject + +cdef class CUDA_EXTERNAL_MEMORY_HANDLE_DESC_st: + """ + External memory handle descriptor + + Attributes + ---------- + type : CUexternalMemoryHandleType + Type of the handle + handle : anon_union5 + + size : unsigned long long + Size of the memory allocation + flags : unsigned int + Flags must either be zero or CUDA_EXTERNAL_MEMORY_DEDICATED + reserved : list[unsigned int] + + + Methods + ------- + getPtr() + Get memory address of class instance + """ + cdef cydriver.CUDA_EXTERNAL_MEMORY_HANDLE_DESC_st* _val_ptr + cdef cydriver.CUDA_EXTERNAL_MEMORY_HANDLE_DESC_st* _pvt_ptr + cdef anon_union5 _handle + +cdef class CUDA_EXTERNAL_MEMORY_BUFFER_DESC_st: + """ + External memory buffer descriptor + + Attributes + ---------- + offset : unsigned long long + Offset into the memory object where the buffer's base is + size : unsigned long long + Size of the buffer + flags : unsigned int + Flags reserved for future use. Must be zero. + reserved : list[unsigned int] + + + Methods + ------- + getPtr() + Get memory address of class instance + """ + cdef cydriver.CUDA_EXTERNAL_MEMORY_BUFFER_DESC_st _pvt_val + cdef cydriver.CUDA_EXTERNAL_MEMORY_BUFFER_DESC_st* _pvt_ptr + +cdef class CUDA_EXTERNAL_MEMORY_MIPMAPPED_ARRAY_DESC_st: + """ + External memory mipmap descriptor + + Attributes + ---------- + offset : unsigned long long + Offset into the memory object where the base level of the mipmap + chain is. + arrayDesc : CUDA_ARRAY3D_DESCRIPTOR + Format, dimension and type of base level of the mipmap chain + numLevels : unsigned int + Total number of levels in the mipmap chain + reserved : list[unsigned int] + + + Methods + ------- + getPtr() + Get memory address of class instance + """ + cdef cydriver.CUDA_EXTERNAL_MEMORY_MIPMAPPED_ARRAY_DESC_st _pvt_val + cdef cydriver.CUDA_EXTERNAL_MEMORY_MIPMAPPED_ARRAY_DESC_st* _pvt_ptr + cdef CUDA_ARRAY3D_DESCRIPTOR _arrayDesc + +cdef class anon_struct13: + """ + Attributes + ---------- + handle : Any + + name : Any + + + Methods + ------- + getPtr() + Get memory address of class instance + """ + cdef cydriver.CUDA_EXTERNAL_SEMAPHORE_HANDLE_DESC_st* _pvt_ptr + cdef _HelperInputVoidPtr _cyhandle + cdef _HelperInputVoidPtr _cyname + +cdef class anon_union6: + """ + Attributes + ---------- + fd : int + + win32 : anon_struct13 + + nvSciSyncObj : Any + + + Methods + ------- + getPtr() + Get memory address of class instance + """ + cdef cydriver.CUDA_EXTERNAL_SEMAPHORE_HANDLE_DESC_st* _pvt_ptr + cdef anon_struct13 _win32 + cdef _HelperInputVoidPtr _cynvSciSyncObj + +cdef class CUDA_EXTERNAL_SEMAPHORE_HANDLE_DESC_st: + """ + External semaphore handle descriptor + + Attributes + ---------- + type : CUexternalSemaphoreHandleType + Type of the handle + handle : anon_union6 + + flags : unsigned int + Flags reserved for the future. Must be zero. + reserved : list[unsigned int] + + + Methods + ------- + getPtr() + Get memory address of class instance + """ + cdef cydriver.CUDA_EXTERNAL_SEMAPHORE_HANDLE_DESC_st* _val_ptr + cdef cydriver.CUDA_EXTERNAL_SEMAPHORE_HANDLE_DESC_st* _pvt_ptr + cdef anon_union6 _handle + +cdef class anon_struct14: + """ + Attributes + ---------- + value : unsigned long long + + + Methods + ------- + getPtr() + Get memory address of class instance + """ + cdef cydriver.CUDA_EXTERNAL_SEMAPHORE_SIGNAL_PARAMS_st* _pvt_ptr + +cdef class anon_union7: + """ + Attributes + ---------- + fence : Any + + reserved : unsigned long long + + + Methods + ------- + getPtr() + Get memory address of class instance + """ + cdef cydriver.CUDA_EXTERNAL_SEMAPHORE_SIGNAL_PARAMS_st* _pvt_ptr + cdef _HelperInputVoidPtr _cyfence + +cdef class anon_struct15: + """ + Attributes + ---------- + key : unsigned long long + + + Methods + ------- + getPtr() + Get memory address of class instance + """ + cdef cydriver.CUDA_EXTERNAL_SEMAPHORE_SIGNAL_PARAMS_st* _pvt_ptr + +cdef class anon_struct16: + """ + Attributes + ---------- + fence : anon_struct14 + + nvSciSync : anon_union7 + + keyedMutex : anon_struct15 + + reserved : list[unsigned int] + + + Methods + ------- + getPtr() + Get memory address of class instance + """ + cdef cydriver.CUDA_EXTERNAL_SEMAPHORE_SIGNAL_PARAMS_st* _pvt_ptr + cdef anon_struct14 _fence + cdef anon_union7 _nvSciSync + cdef anon_struct15 _keyedMutex + +cdef class CUDA_EXTERNAL_SEMAPHORE_SIGNAL_PARAMS_st: + """ + External semaphore signal parameters + + Attributes + ---------- + params : anon_struct16 + + flags : unsigned int + Only when CUDA_EXTERNAL_SEMAPHORE_SIGNAL_PARAMS is used to signal a + CUexternalSemaphore of type + CU_EXTERNAL_SEMAPHORE_HANDLE_TYPE_NVSCISYNC, the valid flag is + CUDA_EXTERNAL_SEMAPHORE_SIGNAL_SKIP_NVSCIBUF_MEMSYNC which + indicates that while signaling the CUexternalSemaphore, no memory + synchronization operations should be performed for any external + memory object imported as CU_EXTERNAL_MEMORY_HANDLE_TYPE_NVSCIBUF. + For all other types of CUexternalSemaphore, flags must be zero. + reserved : list[unsigned int] + + + Methods + ------- + getPtr() + Get memory address of class instance + """ + cdef cydriver.CUDA_EXTERNAL_SEMAPHORE_SIGNAL_PARAMS_st _pvt_val + cdef cydriver.CUDA_EXTERNAL_SEMAPHORE_SIGNAL_PARAMS_st* _pvt_ptr + cdef anon_struct16 _params + +cdef class anon_struct17: + """ + Attributes + ---------- + value : unsigned long long + + + Methods + ------- + getPtr() + Get memory address of class instance + """ + cdef cydriver.CUDA_EXTERNAL_SEMAPHORE_WAIT_PARAMS_st* _pvt_ptr + +cdef class anon_union8: + """ + Attributes + ---------- + fence : Any + + reserved : unsigned long long + + + Methods + ------- + getPtr() + Get memory address of class instance + """ + cdef cydriver.CUDA_EXTERNAL_SEMAPHORE_WAIT_PARAMS_st* _pvt_ptr + cdef _HelperInputVoidPtr _cyfence + +cdef class anon_struct18: + """ + Attributes + ---------- + key : unsigned long long + + timeoutMs : unsigned int + + + Methods + ------- + getPtr() + Get memory address of class instance + """ + cdef cydriver.CUDA_EXTERNAL_SEMAPHORE_WAIT_PARAMS_st* _pvt_ptr + +cdef class anon_struct19: + """ + Attributes + ---------- + fence : anon_struct17 + + nvSciSync : anon_union8 + + keyedMutex : anon_struct18 + + reserved : list[unsigned int] + + + Methods + ------- + getPtr() + Get memory address of class instance + """ + cdef cydriver.CUDA_EXTERNAL_SEMAPHORE_WAIT_PARAMS_st* _pvt_ptr + cdef anon_struct17 _fence + cdef anon_union8 _nvSciSync + cdef anon_struct18 _keyedMutex + +cdef class CUDA_EXTERNAL_SEMAPHORE_WAIT_PARAMS_st: + """ + External semaphore wait parameters + + Attributes + ---------- + params : anon_struct19 + + flags : unsigned int + Only when CUDA_EXTERNAL_SEMAPHORE_WAIT_PARAMS is used to wait on a + CUexternalSemaphore of type + CU_EXTERNAL_SEMAPHORE_HANDLE_TYPE_NVSCISYNC, the valid flag is + CUDA_EXTERNAL_SEMAPHORE_WAIT_SKIP_NVSCIBUF_MEMSYNC which indicates + that while waiting for the CUexternalSemaphore, no memory + synchronization operations should be performed for any external + memory object imported as CU_EXTERNAL_MEMORY_HANDLE_TYPE_NVSCIBUF. + For all other types of CUexternalSemaphore, flags must be zero. + reserved : list[unsigned int] + + + Methods + ------- + getPtr() + Get memory address of class instance + """ + cdef cydriver.CUDA_EXTERNAL_SEMAPHORE_WAIT_PARAMS_st _pvt_val + cdef cydriver.CUDA_EXTERNAL_SEMAPHORE_WAIT_PARAMS_st* _pvt_ptr + cdef anon_struct19 _params + +cdef class CUDA_EXT_SEM_SIGNAL_NODE_PARAMS_st: + """ + Semaphore signal node parameters + + Attributes + ---------- + extSemArray : CUexternalSemaphore + Array of external semaphore handles. + paramsArray : CUDA_EXTERNAL_SEMAPHORE_SIGNAL_PARAMS + Array of external semaphore signal parameters. + numExtSems : unsigned int + Number of handles and parameters supplied in extSemArray and + paramsArray. + + Methods + ------- + getPtr() + Get memory address of class instance + """ + cdef cydriver.CUDA_EXT_SEM_SIGNAL_NODE_PARAMS_st _pvt_val + cdef cydriver.CUDA_EXT_SEM_SIGNAL_NODE_PARAMS_st* _pvt_ptr + cdef size_t _extSemArray_length + cdef cydriver.CUexternalSemaphore* _extSemArray + cdef size_t _paramsArray_length + cdef cydriver.CUDA_EXTERNAL_SEMAPHORE_SIGNAL_PARAMS* _paramsArray + +cdef class CUDA_EXT_SEM_SIGNAL_NODE_PARAMS_v2_st: + """ + Semaphore signal node parameters + + Attributes + ---------- + extSemArray : CUexternalSemaphore + Array of external semaphore handles. + paramsArray : CUDA_EXTERNAL_SEMAPHORE_SIGNAL_PARAMS + Array of external semaphore signal parameters. + numExtSems : unsigned int + Number of handles and parameters supplied in extSemArray and + paramsArray. + + Methods + ------- + getPtr() + Get memory address of class instance + """ + cdef cydriver.CUDA_EXT_SEM_SIGNAL_NODE_PARAMS_v2_st _pvt_val + cdef cydriver.CUDA_EXT_SEM_SIGNAL_NODE_PARAMS_v2_st* _pvt_ptr + cdef size_t _extSemArray_length + cdef cydriver.CUexternalSemaphore* _extSemArray + cdef size_t _paramsArray_length + cdef cydriver.CUDA_EXTERNAL_SEMAPHORE_SIGNAL_PARAMS* _paramsArray + +cdef class CUDA_EXT_SEM_WAIT_NODE_PARAMS_st: + """ + Semaphore wait node parameters + + Attributes + ---------- + extSemArray : CUexternalSemaphore + Array of external semaphore handles. + paramsArray : CUDA_EXTERNAL_SEMAPHORE_WAIT_PARAMS + Array of external semaphore wait parameters. + numExtSems : unsigned int + Number of handles and parameters supplied in extSemArray and + paramsArray. + + Methods + ------- + getPtr() + Get memory address of class instance + """ + cdef cydriver.CUDA_EXT_SEM_WAIT_NODE_PARAMS_st _pvt_val + cdef cydriver.CUDA_EXT_SEM_WAIT_NODE_PARAMS_st* _pvt_ptr + cdef size_t _extSemArray_length + cdef cydriver.CUexternalSemaphore* _extSemArray + cdef size_t _paramsArray_length + cdef cydriver.CUDA_EXTERNAL_SEMAPHORE_WAIT_PARAMS* _paramsArray + +cdef class CUDA_EXT_SEM_WAIT_NODE_PARAMS_v2_st: + """ + Semaphore wait node parameters + + Attributes + ---------- + extSemArray : CUexternalSemaphore + Array of external semaphore handles. + paramsArray : CUDA_EXTERNAL_SEMAPHORE_WAIT_PARAMS + Array of external semaphore wait parameters. + numExtSems : unsigned int + Number of handles and parameters supplied in extSemArray and + paramsArray. + + Methods + ------- + getPtr() + Get memory address of class instance + """ + cdef cydriver.CUDA_EXT_SEM_WAIT_NODE_PARAMS_v2_st _pvt_val + cdef cydriver.CUDA_EXT_SEM_WAIT_NODE_PARAMS_v2_st* _pvt_ptr + cdef size_t _extSemArray_length + cdef cydriver.CUexternalSemaphore* _extSemArray + cdef size_t _paramsArray_length + cdef cydriver.CUDA_EXTERNAL_SEMAPHORE_WAIT_PARAMS* _paramsArray + +cdef class anon_union9: + """ + Attributes + ---------- + mipmap : CUmipmappedArray + + array : CUarray + + + Methods + ------- + getPtr() + Get memory address of class instance + """ + cdef cydriver.CUarrayMapInfo_st* _pvt_ptr + cdef CUmipmappedArray _mipmap + cdef CUarray _array + +cdef class anon_struct20: + """ + Attributes + ---------- + level : unsigned int + + layer : unsigned int + + offsetX : unsigned int + + offsetY : unsigned int + + offsetZ : unsigned int + + extentWidth : unsigned int + + extentHeight : unsigned int + + extentDepth : unsigned int + + + Methods + ------- + getPtr() + Get memory address of class instance + """ + cdef cydriver.CUarrayMapInfo_st* _pvt_ptr + +cdef class anon_struct21: + """ + Attributes + ---------- + layer : unsigned int + + offset : unsigned long long + + size : unsigned long long + + + Methods + ------- + getPtr() + Get memory address of class instance + """ + cdef cydriver.CUarrayMapInfo_st* _pvt_ptr + +cdef class anon_union10: + """ + Attributes + ---------- + sparseLevel : anon_struct20 + + miptail : anon_struct21 + + + Methods + ------- + getPtr() + Get memory address of class instance + """ + cdef cydriver.CUarrayMapInfo_st* _pvt_ptr + cdef anon_struct20 _sparseLevel + cdef anon_struct21 _miptail + +cdef class anon_union11: + """ + Attributes + ---------- + memHandle : CUmemGenericAllocationHandle + + + Methods + ------- + getPtr() + Get memory address of class instance + """ + cdef cydriver.CUarrayMapInfo_st* _pvt_ptr + cdef CUmemGenericAllocationHandle _memHandle + +cdef class CUarrayMapInfo_st: + """ + Specifies the CUDA array or CUDA mipmapped array memory mapping + information + + Attributes + ---------- + resourceType : CUresourcetype + Resource type + resource : anon_union9 + + subresourceType : CUarraySparseSubresourceType + Sparse subresource type + subresource : anon_union10 + + memOperationType : CUmemOperationType + Memory operation type + memHandleType : CUmemHandleType + Memory handle type + memHandle : anon_union11 + + offset : unsigned long long + Offset within mip tail Offset within the memory + deviceBitMask : unsigned int + Device ordinal bit mask + flags : unsigned int + flags for future use, must be zero now. + reserved : list[unsigned int] + Reserved for future use, must be zero now. + + Methods + ------- + getPtr() + Get memory address of class instance + """ + cdef cydriver.CUarrayMapInfo_st* _val_ptr + cdef cydriver.CUarrayMapInfo_st* _pvt_ptr + cdef anon_union9 _resource + cdef anon_union10 _subresource + cdef anon_union11 _memHandle + +cdef class CUmemLocation_st: + """ + Specifies a memory location. + + Attributes + ---------- + type : CUmemLocationType + Specifies the location type, which modifies the meaning of id. + id : int + Identifier for CUmemLocationType::CU_MEM_LOCATION_TYPE_DEVICE, + CUmemLocationType::CU_MEM_LOCATION_TYPE_HOST, + CUmemLocationType::CU_MEM_LOCATION_TYPE_HOST_NUMA. + + Methods + ------- + getPtr() + Get memory address of class instance + """ + cdef cydriver.CUmemLocation_st* _val_ptr + cdef cydriver.CUmemLocation_st* _pvt_ptr + +cdef class anon_struct22: + """ + Attributes + ---------- + compressionType : bytes + + gpuDirectRDMACapable : bytes + + usage : unsigned short + + reserved : bytes + + + Methods + ------- + getPtr() + Get memory address of class instance + """ + cdef cydriver.CUmemAllocationProp_st* _pvt_ptr + +cdef class CUmemAllocationProp_st: + """ + Specifies the allocation properties for a allocation. + + Attributes + ---------- + type : CUmemAllocationType + Allocation type + requestedHandleTypes : CUmemAllocationHandleType + requested CUmemAllocationHandleType + location : CUmemLocation + Location of allocation + win32HandleMetaData : Any + Windows-specific POBJECT_ATTRIBUTES required when + CU_MEM_HANDLE_TYPE_WIN32 is specified. This object attributes + structure includes security attributes that define the scope of + which exported allocations may be transferred to other processes. + In all other cases, this field is required to be zero. + allocFlags : anon_struct22 + + + Methods + ------- + getPtr() + Get memory address of class instance + """ + cdef cydriver.CUmemAllocationProp_st _pvt_val + cdef cydriver.CUmemAllocationProp_st* _pvt_ptr + cdef CUmemLocation _location + cdef _HelperInputVoidPtr _cywin32HandleMetaData + cdef anon_struct22 _allocFlags + +cdef class CUmulticastObjectProp_st: + """ + Specifies the properties for a multicast object. + + Attributes + ---------- + numDevices : unsigned int + The number of devices in the multicast team that will bind memory + to this object + size : size_t + The maximum amount of memory that can be bound to this multicast + object per device + handleTypes : unsigned long long + Bitmask of exportable handle types (see CUmemAllocationHandleType) + for this object + flags : unsigned long long + Flags for future use, must be zero now + + Methods + ------- + getPtr() + Get memory address of class instance + """ + cdef cydriver.CUmulticastObjectProp_st _pvt_val + cdef cydriver.CUmulticastObjectProp_st* _pvt_ptr + +cdef class CUmemAccessDesc_st: + """ + Memory access descriptor + + Attributes + ---------- + location : CUmemLocation + Location on which the request is to change it's accessibility + flags : CUmemAccess_flags + ::CUmemProt accessibility flags to set on the request + + Methods + ------- + getPtr() + Get memory address of class instance + """ + cdef cydriver.CUmemAccessDesc_st _pvt_val + cdef cydriver.CUmemAccessDesc_st* _pvt_ptr + cdef CUmemLocation _location + +cdef class CUgraphExecUpdateResultInfo_st: + """ + Result information returned by cuGraphExecUpdate + + Attributes + ---------- + result : CUgraphExecUpdateResult + Gives more specific detail when a cuda graph update fails. + errorNode : CUgraphNode + The "to node" of the error edge when the topologies do not match. + The error node when the error is associated with a specific node. + NULL when the error is generic. + errorFromNode : CUgraphNode + The from node of error edge when the topologies do not match. + Otherwise NULL. + + Methods + ------- + getPtr() + Get memory address of class instance + """ + cdef cydriver.CUgraphExecUpdateResultInfo_st _pvt_val + cdef cydriver.CUgraphExecUpdateResultInfo_st* _pvt_ptr + cdef CUgraphNode _errorNode + cdef CUgraphNode _errorFromNode + +cdef class CUmemPoolProps_st: + """ + Specifies the properties of allocations made from the pool. + + Attributes + ---------- + allocType : CUmemAllocationType + Allocation type. Currently must be specified as + CU_MEM_ALLOCATION_TYPE_PINNED + handleTypes : CUmemAllocationHandleType + Handle types that will be supported by allocations from the pool. + location : CUmemLocation + Location where allocations should reside. + win32SecurityAttributes : Any + Windows-specific LPSECURITYATTRIBUTES required when + CU_MEM_HANDLE_TYPE_WIN32 is specified. This security attribute + defines the scope of which exported allocations may be transferred + to other processes. In all other cases, this field is required to + be zero. + maxSize : size_t + Maximum pool size. When set to 0, defaults to a system dependent + value. + usage : unsigned short + Bitmask indicating intended usage for the pool. + reserved : bytes + reserved for future use, must be 0 + + Methods + ------- + getPtr() + Get memory address of class instance + """ + cdef cydriver.CUmemPoolProps_st _pvt_val + cdef cydriver.CUmemPoolProps_st* _pvt_ptr + cdef CUmemLocation _location + cdef _HelperInputVoidPtr _cywin32SecurityAttributes + +cdef class CUmemPoolPtrExportData_st: + """ + Opaque data for exporting a pool allocation + + Attributes + ---------- + reserved : bytes + + + Methods + ------- + getPtr() + Get memory address of class instance + """ + cdef cydriver.CUmemPoolPtrExportData_st _pvt_val + cdef cydriver.CUmemPoolPtrExportData_st* _pvt_ptr + +cdef class CUmemcpyAttributes_st: + """ + Attributes specific to copies within a batch. For more details on + usage see cuMemcpyBatchAsync. + + Attributes + ---------- + srcAccessOrder : CUmemcpySrcAccessOrder + Source access ordering to be observed for copies with this + attribute. + srcLocHint : CUmemLocation + Hint location for the source operand. Ignored when the pointers are + not managed memory or memory allocated outside CUDA. + dstLocHint : CUmemLocation + Hint location for the destination operand. Ignored when the + pointers are not managed memory or memory allocated outside CUDA. + flags : unsigned int + Additional flags for copies with this attribute. See CUmemcpyFlags + + Methods + ------- + getPtr() + Get memory address of class instance + """ + cdef cydriver.CUmemcpyAttributes_st _pvt_val + cdef cydriver.CUmemcpyAttributes_st* _pvt_ptr + cdef CUmemLocation _srcLocHint + cdef CUmemLocation _dstLocHint + +cdef class CUoffset3D_st: + """ + Struct representing a 3D offset + + Attributes + ---------- + x : size_t + + y : size_t + + z : size_t + + + Methods + ------- + getPtr() + Get memory address of class instance + """ + cdef cydriver.CUoffset3D_st _pvt_val + cdef cydriver.CUoffset3D_st* _pvt_ptr + +cdef class CUextent3D_st: + """ + Struct representing width/height/depth of a CUarray in elements + + Attributes + ---------- + width : size_t + + height : size_t + + depth : size_t + + + Methods + ------- + getPtr() + Get memory address of class instance + """ + cdef cydriver.CUextent3D_st _pvt_val + cdef cydriver.CUextent3D_st* _pvt_ptr + +cdef class anon_struct23: + """ + Attributes + ---------- + ptr : CUdeviceptr + + rowLength : size_t + + layerHeight : size_t + + locHint : CUmemLocation + + + Methods + ------- + getPtr() + Get memory address of class instance + """ + cdef cydriver.CUmemcpy3DOperand_st* _pvt_ptr + cdef CUdeviceptr _ptr + cdef CUmemLocation _locHint + +cdef class anon_struct24: + """ + Attributes + ---------- + array : CUarray + + offset : CUoffset3D + + + Methods + ------- + getPtr() + Get memory address of class instance + """ + cdef cydriver.CUmemcpy3DOperand_st* _pvt_ptr + cdef CUarray _array + cdef CUoffset3D _offset + +cdef class anon_union13: + """ + Attributes + ---------- + ptr : anon_struct23 + + array : anon_struct24 + + + Methods + ------- + getPtr() + Get memory address of class instance + """ + cdef cydriver.CUmemcpy3DOperand_st* _pvt_ptr + cdef anon_struct23 _ptr + cdef anon_struct24 _array + +cdef class CUmemcpy3DOperand_st: + """ + Struct representing an operand for copy with cuMemcpy3DBatchAsync + + Attributes + ---------- + type : CUmemcpy3DOperandType + + op : anon_union13 + + + Methods + ------- + getPtr() + Get memory address of class instance + """ + cdef cydriver.CUmemcpy3DOperand_st* _val_ptr + cdef cydriver.CUmemcpy3DOperand_st* _pvt_ptr + cdef anon_union13 _op + +cdef class CUDA_MEMCPY3D_BATCH_OP_st: + """ + Attributes + ---------- + src : CUmemcpy3DOperand + Source memcpy operand. + dst : CUmemcpy3DOperand + Destination memcpy operand. + extent : CUextent3D + Extents of the memcpy between src and dst. The width, height and + depth components must not be 0. + srcAccessOrder : CUmemcpySrcAccessOrder + Source access ordering to be observed for copy from src to dst. + flags : unsigned int + Additional flags for copies with this attribute. See CUmemcpyFlags + + Methods + ------- + getPtr() + Get memory address of class instance + """ + cdef cydriver.CUDA_MEMCPY3D_BATCH_OP_st _pvt_val + cdef cydriver.CUDA_MEMCPY3D_BATCH_OP_st* _pvt_ptr + cdef CUmemcpy3DOperand _src + cdef CUmemcpy3DOperand _dst + cdef CUextent3D _extent + +cdef class CUDA_MEM_ALLOC_NODE_PARAMS_v1_st: + """ + Memory allocation node parameters + + Attributes + ---------- + poolProps : CUmemPoolProps + in: location where the allocation should reside (specified in + ::location). ::handleTypes must be CU_MEM_HANDLE_TYPE_NONE. IPC is + not supported. + accessDescs : CUmemAccessDesc + in: array of memory access descriptors. Used to describe peer GPU + access + accessDescCount : size_t + in: number of memory access descriptors. Must not exceed the number + of GPUs. + bytesize : size_t + in: size in bytes of the requested allocation + dptr : CUdeviceptr + out: address of the allocation returned by CUDA + + Methods + ------- + getPtr() + Get memory address of class instance + """ + cdef cydriver.CUDA_MEM_ALLOC_NODE_PARAMS_v1_st _pvt_val + cdef cydriver.CUDA_MEM_ALLOC_NODE_PARAMS_v1_st* _pvt_ptr + cdef CUmemPoolProps _poolProps + cdef size_t _accessDescs_length + cdef cydriver.CUmemAccessDesc* _accessDescs + cdef CUdeviceptr _dptr + +cdef class CUDA_MEM_ALLOC_NODE_PARAMS_v2_st: + """ + Memory allocation node parameters + + Attributes + ---------- + poolProps : CUmemPoolProps + in: location where the allocation should reside (specified in + ::location). ::handleTypes must be CU_MEM_HANDLE_TYPE_NONE. IPC is + not supported. + accessDescs : CUmemAccessDesc + in: array of memory access descriptors. Used to describe peer GPU + access + accessDescCount : size_t + in: number of memory access descriptors. Must not exceed the number + of GPUs. + bytesize : size_t + in: size in bytes of the requested allocation + dptr : CUdeviceptr + out: address of the allocation returned by CUDA + + Methods + ------- + getPtr() + Get memory address of class instance + """ + cdef cydriver.CUDA_MEM_ALLOC_NODE_PARAMS_v2_st _pvt_val + cdef cydriver.CUDA_MEM_ALLOC_NODE_PARAMS_v2_st* _pvt_ptr + cdef CUmemPoolProps _poolProps + cdef size_t _accessDescs_length + cdef cydriver.CUmemAccessDesc* _accessDescs + cdef CUdeviceptr _dptr + +cdef class CUDA_MEM_FREE_NODE_PARAMS_st: + """ + Memory free node parameters + + Attributes + ---------- + dptr : CUdeviceptr + in: the pointer to free + + Methods + ------- + getPtr() + Get memory address of class instance + """ + cdef cydriver.CUDA_MEM_FREE_NODE_PARAMS_st _pvt_val + cdef cydriver.CUDA_MEM_FREE_NODE_PARAMS_st* _pvt_ptr + cdef CUdeviceptr _dptr + +cdef class CUDA_CHILD_GRAPH_NODE_PARAMS_st: + """ + Child graph node parameters + + Attributes + ---------- + graph : CUgraph + The child graph to clone into the node for node creation, or a + handle to the graph owned by the node for node query. The graph + must not contain conditional nodes. Graphs containing memory + allocation or memory free nodes must set the ownership to be moved + to the parent. + ownership : CUgraphChildGraphNodeOwnership + The ownership relationship of the child graph node. + + Methods + ------- + getPtr() + Get memory address of class instance + """ + cdef cydriver.CUDA_CHILD_GRAPH_NODE_PARAMS_st _pvt_val + cdef cydriver.CUDA_CHILD_GRAPH_NODE_PARAMS_st* _pvt_ptr + cdef CUgraph _graph + +cdef class CUDA_EVENT_RECORD_NODE_PARAMS_st: + """ + Event record node parameters + + Attributes + ---------- + event : CUevent + The event to record when the node executes + + Methods + ------- + getPtr() + Get memory address of class instance + """ + cdef cydriver.CUDA_EVENT_RECORD_NODE_PARAMS_st _pvt_val + cdef cydriver.CUDA_EVENT_RECORD_NODE_PARAMS_st* _pvt_ptr + cdef CUevent _event + +cdef class CUDA_EVENT_WAIT_NODE_PARAMS_st: + """ + Event wait node parameters + + Attributes + ---------- + event : CUevent + The event to wait on from the node + + Methods + ------- + getPtr() + Get memory address of class instance + """ + cdef cydriver.CUDA_EVENT_WAIT_NODE_PARAMS_st _pvt_val + cdef cydriver.CUDA_EVENT_WAIT_NODE_PARAMS_st* _pvt_ptr + cdef CUevent _event + +cdef class CUgraphNodeParams_st: + """ + Graph node parameters. See cuGraphAddNode. + + Attributes + ---------- + type : CUgraphNodeType + Type of the node + reserved0 : list[int] + Reserved. Must be zero. + reserved1 : list[long long] + Padding. Unused bytes must be zero. + kernel : CUDA_KERNEL_NODE_PARAMS_v3 + Kernel node parameters. + memcpy : CUDA_MEMCPY_NODE_PARAMS + Memcpy node parameters. + memset : CUDA_MEMSET_NODE_PARAMS_v2 + Memset node parameters. + host : CUDA_HOST_NODE_PARAMS_v2 + Host node parameters. + graph : CUDA_CHILD_GRAPH_NODE_PARAMS + Child graph node parameters. + eventWait : CUDA_EVENT_WAIT_NODE_PARAMS + Event wait node parameters. + eventRecord : CUDA_EVENT_RECORD_NODE_PARAMS + Event record node parameters. + extSemSignal : CUDA_EXT_SEM_SIGNAL_NODE_PARAMS_v2 + External semaphore signal node parameters. + extSemWait : CUDA_EXT_SEM_WAIT_NODE_PARAMS_v2 + External semaphore wait node parameters. + alloc : CUDA_MEM_ALLOC_NODE_PARAMS_v2 + Memory allocation node parameters. + free : CUDA_MEM_FREE_NODE_PARAMS + Memory free node parameters. + memOp : CUDA_BATCH_MEM_OP_NODE_PARAMS_v2 + MemOp node parameters. + conditional : CUDA_CONDITIONAL_NODE_PARAMS + Conditional node parameters. + asBytes : bytes + Padding as bytes + reserved2 : long long + Reserved bytes. Must be zero. + + Methods + ------- + getPtr() + Get memory address of class instance + """ + cdef cydriver.CUgraphNodeParams_st* _val_ptr + cdef cydriver.CUgraphNodeParams_st* _pvt_ptr + cdef CUDA_KERNEL_NODE_PARAMS_v3 _kernel + cdef CUDA_MEMCPY_NODE_PARAMS _memcpy + cdef CUDA_MEMSET_NODE_PARAMS_v2 _memset + cdef CUDA_HOST_NODE_PARAMS_v2 _host + cdef CUDA_CHILD_GRAPH_NODE_PARAMS _graph + cdef CUDA_EVENT_WAIT_NODE_PARAMS _eventWait + cdef CUDA_EVENT_RECORD_NODE_PARAMS _eventRecord + cdef CUDA_EXT_SEM_SIGNAL_NODE_PARAMS_v2 _extSemSignal + cdef CUDA_EXT_SEM_WAIT_NODE_PARAMS_v2 _extSemWait + cdef CUDA_MEM_ALLOC_NODE_PARAMS_v2 _alloc + cdef CUDA_MEM_FREE_NODE_PARAMS _free + cdef CUDA_BATCH_MEM_OP_NODE_PARAMS_v2 _memOp + cdef CUDA_CONDITIONAL_NODE_PARAMS _conditional + +cdef class CUcheckpointLockArgs_st: + """ + CUDA checkpoint optional lock arguments + + Attributes + ---------- + timeoutMs : unsigned int + Timeout in milliseconds to attempt to lock the process, 0 indicates + no timeout + reserved0 : unsigned int + Reserved for future use, must be zero + reserved1 : list[cuuint64_t] + Reserved for future use, must be zeroed + + Methods + ------- + getPtr() + Get memory address of class instance + """ + cdef cydriver.CUcheckpointLockArgs_st _pvt_val + cdef cydriver.CUcheckpointLockArgs_st* _pvt_ptr + +cdef class CUcheckpointCheckpointArgs_st: + """ + CUDA checkpoint optional checkpoint arguments + + Attributes + ---------- + reserved : list[cuuint64_t] + Reserved for future use, must be zeroed + + Methods + ------- + getPtr() + Get memory address of class instance + """ + cdef cydriver.CUcheckpointCheckpointArgs_st _pvt_val + cdef cydriver.CUcheckpointCheckpointArgs_st* _pvt_ptr + +cdef class CUcheckpointGpuPair_st: + """ + CUDA checkpoint GPU UUID pairs for device remapping during restore + + Attributes + ---------- + oldUuid : CUuuid + UUID of the GPU that was checkpointed + newUuid : CUuuid + UUID of the GPU to restore onto + + Methods + ------- + getPtr() + Get memory address of class instance + """ + cdef cydriver.CUcheckpointGpuPair_st _pvt_val + cdef cydriver.CUcheckpointGpuPair_st* _pvt_ptr + cdef CUuuid _oldUuid + cdef CUuuid _newUuid + +cdef class CUcheckpointRestoreArgs_st: + """ + CUDA checkpoint optional restore arguments + + Attributes + ---------- + gpuPairs : CUcheckpointGpuPair + Pointer to array of gpu pairs that indicate how to remap GPUs + during restore + gpuPairsCount : unsigned int + Number of gpu pairs to remap + reserved : bytes + Reserved for future use, must be zeroed + + Methods + ------- + getPtr() + Get memory address of class instance + """ + cdef cydriver.CUcheckpointRestoreArgs_st _pvt_val + cdef cydriver.CUcheckpointRestoreArgs_st* _pvt_ptr + cdef size_t _gpuPairs_length + cdef cydriver.CUcheckpointGpuPair* _gpuPairs + +cdef class CUcheckpointUnlockArgs_st: + """ + CUDA checkpoint optional unlock arguments + + Attributes + ---------- + reserved : list[cuuint64_t] + Reserved for future use, must be zeroed + + Methods + ------- + getPtr() + Get memory address of class instance + """ + cdef cydriver.CUcheckpointUnlockArgs_st _pvt_val + cdef cydriver.CUcheckpointUnlockArgs_st* _pvt_ptr + +cdef class CUmemDecompressParams_st: + """ + Structure describing the parameters that compose a single + decompression operation. + + Attributes + ---------- + srcNumBytes : size_t + The number of bytes to be read and decompressed from + CUmemDecompressParams_st.src. + dstNumBytes : size_t + The number of bytes that the decompression operation will be + expected to write to CUmemDecompressParams_st.dst. This value is + optional; if present, it may be used by the CUDA driver as a + heuristic for scheduling the individual decompression operations. + dstActBytes : cuuint32_t + After the decompression operation has completed, the actual number + of bytes written to CUmemDecompressParams.dst will be recorded as a + 32-bit unsigned integer in the memory at this address. + src : Any + Pointer to a buffer of at least + CUmemDecompressParams_st.srcNumBytes compressed bytes. + dst : Any + Pointer to a buffer where the decompressed data will be written. + The number of bytes written to this location will be recorded in + the memory pointed to by CUmemDecompressParams_st.dstActBytes + algo : CUmemDecompressAlgorithm + The decompression algorithm to use. + padding : bytes + + + Methods + ------- + getPtr() + Get memory address of class instance + """ + cdef cydriver.CUmemDecompressParams_st _pvt_val + cdef cydriver.CUmemDecompressParams_st* _pvt_ptr + cdef _HelperInputVoidPtr _cysrc + cdef _HelperInputVoidPtr _cydst + +cdef class CUlogicalEndpointFabricHandle_st: + """ + Fabric handle for a logical endpoint + + Attributes + ---------- + data : bytes + + + Methods + ------- + getPtr() + Get memory address of class instance + """ + cdef cydriver.CUlogicalEndpointFabricHandle_st _pvt_val + cdef cydriver.CUlogicalEndpointFabricHandle_st* _pvt_ptr + +cdef class anon_struct25: + """ + Attributes + ---------- + device : CUdevice + + + Methods + ------- + getPtr() + Get memory address of class instance + """ + cdef cydriver.CUlogicalEndpointProp_struct* _pvt_ptr + cdef CUdevice _device + +cdef class anon_struct26: + """ + Attributes + ---------- + numDevices : unsigned int + + + Methods + ------- + getPtr() + Get memory address of class instance + """ + cdef cydriver.CUlogicalEndpointProp_struct* _pvt_ptr + +cdef class CUlogicalEndpointProp_struct: + """ + Properties of a logical endpoint construction + + Attributes + ---------- + type : CUlogicalEndpointType + Type of the logical endpoint defined in CUlogicalEndpointType + unicast : anon_struct25 + + multicast : anon_struct26 + + size : unsigned long long + Size of the logical endpoint + ipcHandleTypes : unsigned int + A bitmask of IPC handle types defined in + CUlogicalEndpointIpcHandleType + flags : unsigned int + A bitmask of flags defined in CUlogicalEndpointFlag + + Methods + ------- + getPtr() + Get memory address of class instance + """ + cdef cydriver.CUlogicalEndpointProp_struct* _val_ptr + cdef cydriver.CUlogicalEndpointProp_struct* _pvt_ptr + cdef anon_struct25 _unicast + cdef anon_struct26 _multicast + +cdef class CUdevSmResource_st: + """ + Attributes + ---------- + smCount : unsigned int + The amount of streaming multiprocessors available in this resource. + minSmPartitionSize : unsigned int + The minimum number of streaming multiprocessors required to + partition this resource. + smCoscheduledAlignment : unsigned int + The number of streaming multiprocessors in this resource that are + guaranteed to be co-scheduled on the same GPU processing cluster. + smCount will be a multiple of this value, unless the backfill flag + is set. + flags : unsigned int + The flags set on this SM resource. For possible values see + CUdevSmResourceGroup_flags. + + Methods + ------- + getPtr() + Get memory address of class instance + """ + cdef cydriver.CUdevSmResource_st _pvt_val + cdef cydriver.CUdevSmResource_st* _pvt_ptr + +cdef class CUdevWorkqueueConfigResource_st: + """ + Attributes + ---------- + device : CUdevice + The device on which the workqueue resources are available + wqConcurrencyLimit : unsigned int + The expected maximum number of concurrent stream-ordered workloads + sharingScope : CUdevWorkqueueConfigScope + The sharing scope for the workqueue resources + + Methods + ------- + getPtr() + Get memory address of class instance + """ + cdef cydriver.CUdevWorkqueueConfigResource_st _pvt_val + cdef cydriver.CUdevWorkqueueConfigResource_st* _pvt_ptr + cdef CUdevice _device + +cdef class CUdevWorkqueueResource_st: + """ + Attributes + ---------- + reserved : bytes + Reserved for future use + + Methods + ------- + getPtr() + Get memory address of class instance + """ + cdef cydriver.CUdevWorkqueueResource_st _pvt_val + cdef cydriver.CUdevWorkqueueResource_st* _pvt_ptr + +cdef class CU_DEV_SM_RESOURCE_GROUP_PARAMS_st: + """ + Attributes + ---------- + smCount : unsigned int + The amount of SMs available in this resource. + coscheduledSmCount : unsigned int + The amount of co-scheduled SMs grouped together for locality + purposes. + preferredCoscheduledSmCount : unsigned int + When possible, combine co-scheduled groups together into larger + groups of this size. + flags : unsigned int + The flags set on this SM resource group. For possible values see + CUdevSmResourceGroup_flags. + reserved : list[unsigned int] + + + Methods + ------- + getPtr() + Get memory address of class instance + """ + cdef cydriver.CU_DEV_SM_RESOURCE_GROUP_PARAMS_st _pvt_val + cdef cydriver.CU_DEV_SM_RESOURCE_GROUP_PARAMS_st* _pvt_ptr + +cdef class CUdevResource_st: + """ + Attributes + ---------- + type : CUdevResourceType + Type of resource, dictates which union field was last set + _internal_padding : bytes + + sm : CUdevSmResource + Resource corresponding to CU_DEV_RESOURCE_TYPE_SM `typename`. + wqConfig : CUdevWorkqueueConfigResource + Resource corresponding to CU_DEV_RESOURCE_TYPE_WORKQUEUE_CONFIG + `typename`. + wq : CUdevWorkqueueResource + Resource corresponding to CU_DEV_RESOURCE_TYPE_WORKQUEUE + `typename`. + _oversize : bytes + + nextResource : CUdevResource_st + + + Methods + ------- + getPtr() + Get memory address of class instance + """ + cdef cydriver.CUdevResource_st* _val_ptr + cdef cydriver.CUdevResource_st* _pvt_ptr + cdef CUdevSmResource _sm + cdef CUdevWorkqueueConfigResource _wqConfig + cdef CUdevWorkqueueResource _wq + cdef size_t _nextResource_length + cdef cydriver.CUdevResource_st* _nextResource + +cdef class anon_union17: + """ + Attributes + ---------- + pArray : list[CUarray] + + pPitch : list[Any] + + + Methods + ------- + getPtr() + Get memory address of class instance + """ + cdef cydriver.CUeglFrame_st* _pvt_ptr + +cdef class CUeglFrame_st: + """ + CUDA EGLFrame structure Descriptor - structure defining one frame + of EGL. Each frame may contain one or more planes depending on + whether the surface * is Multiplanar or not. + + Attributes + ---------- + frame : anon_union17 + + width : unsigned int + Width of first plane + height : unsigned int + Height of first plane + depth : unsigned int + Depth of first plane + pitch : unsigned int + Pitch of first plane + planeCount : unsigned int + Number of planes + numChannels : unsigned int + Number of channels for the plane + frameType : CUeglFrameType + Array or Pitch + eglColorFormat : CUeglColorFormat + CUDA EGL Color Format + cuFormat : CUarray_format + CUDA Array Format + + Methods + ------- + getPtr() + Get memory address of class instance + """ + cdef cydriver.CUeglFrame_st* _val_ptr + cdef cydriver.CUeglFrame_st* _pvt_ptr + cdef anon_union17 _frame + +cdef class CUdeviceptr: + """ + + CUDA device pointer CUdeviceptr is defined as an unsigned integer type whose size matches the size of a pointer on the target platform. + + Methods + ------- + getPtr() + Get memory address of class instance + + """ + cdef cydriver.CUdeviceptr _pvt_val + cdef cydriver.CUdeviceptr* _pvt_ptr + +cdef class CUdevice: + """ + + CUDA device + + Methods + ------- + getPtr() + Get memory address of class instance + + """ + cdef cydriver.CUdevice _pvt_val + cdef cydriver.CUdevice* _pvt_ptr + +cdef class CUtexObject: + """ + + An opaque value that represents a CUDA texture object + + Methods + ------- + getPtr() + Get memory address of class instance + + """ + cdef cydriver.CUtexObject _pvt_val + cdef cydriver.CUtexObject* _pvt_ptr + +cdef class CUsurfObject: + """ + + An opaque value that represents a CUDA surface object + + Methods + ------- + getPtr() + Get memory address of class instance + + """ + cdef cydriver.CUsurfObject _pvt_val + cdef cydriver.CUsurfObject* _pvt_ptr + +cdef class CUgraphConditionalHandle: + """ + + Methods + ------- + getPtr() + Get memory address of class instance + + """ + cdef cydriver.CUgraphConditionalHandle _pvt_val + cdef cydriver.CUgraphConditionalHandle* _pvt_ptr + +cdef class CUuuid(CUuuid_st): + """ + Attributes + ---------- + bytes : bytes + < CUDA definition of UUID + + Methods + ------- + getPtr() + Get memory address of class instance + """ + pass + +cdef class CUmemFabricHandle_v1(CUmemFabricHandle_st): + """ + Fabric handle - An opaque handle representing a memory allocation + that can be exported to processes in same or different nodes. For + IPC between processes on different nodes they must be connected via + the NVSwitch fabric. + + Attributes + ---------- + data : bytes + + + Methods + ------- + getPtr() + Get memory address of class instance + """ + pass + +cdef class CUmemFabricHandle(CUmemFabricHandle_v1): + """ + Fabric handle - An opaque handle representing a memory allocation + that can be exported to processes in same or different nodes. For + IPC between processes on different nodes they must be connected via + the NVSwitch fabric. + + Attributes + ---------- + data : bytes + + + Methods + ------- + getPtr() + Get memory address of class instance + """ + pass + +cdef class CUipcEventHandle_v1(CUipcEventHandle_st): + """ + CUDA IPC event handle + + Attributes + ---------- + reserved : bytes + + + Methods + ------- + getPtr() + Get memory address of class instance + """ + pass + +cdef class CUipcEventHandle(CUipcEventHandle_v1): + """ + CUDA IPC event handle + + Attributes + ---------- + reserved : bytes + + + Methods + ------- + getPtr() + Get memory address of class instance + """ + pass + +cdef class CUipcMemHandle_v1(CUipcMemHandle_st): + """ + CUDA IPC mem handle + + Attributes + ---------- + reserved : bytes + + + Methods + ------- + getPtr() + Get memory address of class instance + """ + pass + +cdef class CUipcMemHandle(CUipcMemHandle_v1): + """ + CUDA IPC mem handle + + Attributes + ---------- + reserved : bytes + + + Methods + ------- + getPtr() + Get memory address of class instance + """ + pass + +cdef class CUstreamBatchMemOpParams_v1(CUstreamBatchMemOpParams_union): + """ + Per-operation parameters for cuStreamBatchMemOp + + Attributes + ---------- + operation : CUstreamBatchMemOpType + Operation. This is the first field of all the union elemets and + acts as a TAG to determine which union member is valid. + waitValue : CUstreamMemOpWaitValueParams_st + Params for CU_STREAM_MEM_OP_WAIT_VALUE_32 and + CU_STREAM_MEM_OP_WAIT_VALUE_64 operations. + writeValue : CUstreamMemOpWriteValueParams_st + Params for CU_STREAM_MEM_OP_WRITE_VALUE_32 and + CU_STREAM_MEM_OP_WRITE_VALUE_64 operations. + flushRemoteWrites : CUstreamMemOpFlushRemoteWritesParams_st + Params for CU_STREAM_MEM_OP_FLUSH_REMOTE_WRITES operations. + memoryBarrier : CUstreamMemOpMemoryBarrierParams_st + Params for CU_STREAM_MEM_OP_BARRIER operations. + atomicReduction : CUstreamMemOpAtomicReductionParams_st + + pad : list[cuuint64_t] + + + Methods + ------- + getPtr() + Get memory address of class instance + """ + pass + +cdef class CUstreamBatchMemOpParams(CUstreamBatchMemOpParams_v1): + """ + Per-operation parameters for cuStreamBatchMemOp + + Attributes + ---------- + operation : CUstreamBatchMemOpType + Operation. This is the first field of all the union elemets and + acts as a TAG to determine which union member is valid. + waitValue : CUstreamMemOpWaitValueParams_st + Params for CU_STREAM_MEM_OP_WAIT_VALUE_32 and + CU_STREAM_MEM_OP_WAIT_VALUE_64 operations. + writeValue : CUstreamMemOpWriteValueParams_st + Params for CU_STREAM_MEM_OP_WRITE_VALUE_32 and + CU_STREAM_MEM_OP_WRITE_VALUE_64 operations. + flushRemoteWrites : CUstreamMemOpFlushRemoteWritesParams_st + Params for CU_STREAM_MEM_OP_FLUSH_REMOTE_WRITES operations. + memoryBarrier : CUstreamMemOpMemoryBarrierParams_st + Params for CU_STREAM_MEM_OP_BARRIER operations. + atomicReduction : CUstreamMemOpAtomicReductionParams_st + + pad : list[cuuint64_t] + + + Methods + ------- + getPtr() + Get memory address of class instance + """ + pass + +cdef class CUDA_BATCH_MEM_OP_NODE_PARAMS_v1(CUDA_BATCH_MEM_OP_NODE_PARAMS_v1_st): + """ + Batch memory operation node parameters Used in the legacy + cuGraphAddBatchMemOpNode api. New code should use cuGraphAddNode() + + Attributes + ---------- + ctx : CUcontext + + count : unsigned int + + paramArray : CUstreamBatchMemOpParams + + flags : unsigned int + + + Methods + ------- + getPtr() + Get memory address of class instance + """ + pass + +cdef class CUDA_BATCH_MEM_OP_NODE_PARAMS(CUDA_BATCH_MEM_OP_NODE_PARAMS_v1): + """ + Batch memory operation node parameters Used in the legacy + cuGraphAddBatchMemOpNode api. New code should use cuGraphAddNode() + + Attributes + ---------- + ctx : CUcontext + + count : unsigned int + + paramArray : CUstreamBatchMemOpParams + + flags : unsigned int + + + Methods + ------- + getPtr() + Get memory address of class instance + """ + pass + +cdef class CUDA_BATCH_MEM_OP_NODE_PARAMS_v2(CUDA_BATCH_MEM_OP_NODE_PARAMS_v2_st): + """ + Batch memory operation node parameters + + Attributes + ---------- + ctx : CUcontext + Context to use for the operations. + count : unsigned int + Number of operations in paramArray. + paramArray : CUstreamBatchMemOpParams + Array of batch memory operations. + flags : unsigned int + Flags to control the node. + + Methods + ------- + getPtr() + Get memory address of class instance + """ + pass + +cdef class CUasyncNotificationInfo(CUasyncNotificationInfo_st): + """ + Information passed to the user via the async notification callback + + Attributes + ---------- + type : CUasyncNotificationType + The type of notification being sent + info : anon_union2 + Information about the notification. `typename` must be checked in + order to interpret this field. + + Methods + ------- + getPtr() + Get memory address of class instance + """ + pass + +cdef class CUdevprop_v1(CUdevprop_st): + """ + Legacy device properties + + Attributes + ---------- + maxThreadsPerBlock : int + Maximum number of threads per block + maxThreadsDim : list[int] + Maximum size of each dimension of a block + maxGridSize : list[int] + Maximum size of each dimension of a grid + sharedMemPerBlock : int + Shared memory available per block in bytes + totalConstantMemory : int + Constant memory available on device in bytes + SIMDWidth : int + Warp size in threads + memPitch : int + Maximum pitch in bytes allowed by memory copies + regsPerBlock : int + 32-bit registers available per block + clockRate : int + Clock frequency in kilohertz + textureAlign : int + Alignment requirement for textures + + Methods + ------- + getPtr() + Get memory address of class instance + """ + pass + +cdef class CUdevprop(CUdevprop_v1): + """ + Legacy device properties + + Attributes + ---------- + maxThreadsPerBlock : int + Maximum number of threads per block + maxThreadsDim : list[int] + Maximum size of each dimension of a block + maxGridSize : list[int] + Maximum size of each dimension of a grid + sharedMemPerBlock : int + Shared memory available per block in bytes + totalConstantMemory : int + Constant memory available on device in bytes + SIMDWidth : int + Warp size in threads + memPitch : int + Maximum pitch in bytes allowed by memory copies + regsPerBlock : int + 32-bit registers available per block + clockRate : int + Clock frequency in kilohertz + textureAlign : int + Alignment requirement for textures + + Methods + ------- + getPtr() + Get memory address of class instance + """ + pass + +cdef class CUaccessPolicyWindow_v1(CUaccessPolicyWindow_st): + """ + Specifies an access policy for a window, a contiguous extent of + memory beginning at base_ptr and ending at base_ptr + num_bytes. + num_bytes is limited by + CU_DEVICE_ATTRIBUTE_MAX_ACCESS_POLICY_WINDOW_SIZE. Partition into + many segments and assign segments such that: sum of "hit segments" + / window == approx. ratio. sum of "miss segments" / window == + approx 1-ratio. Segments and ratio specifications are fitted to the + capabilities of the architecture. Accesses in a hit segment apply + the hitProp access policy. Accesses in a miss segment apply the + missProp access policy. + + Attributes + ---------- + base_ptr : Any + Starting address of the access policy window. CUDA driver may align + it. + num_bytes : size_t + Size in bytes of the window policy. CUDA driver may restrict the + maximum size and alignment. + hitRatio : float + hitRatio specifies percentage of lines assigned hitProp, rest are + assigned missProp. + hitProp : CUaccessProperty + CUaccessProperty set for hit. + missProp : CUaccessProperty + CUaccessProperty set for miss. Must be either NORMAL or STREAMING + + Methods + ------- + getPtr() + Get memory address of class instance + """ + pass + +cdef class CUaccessPolicyWindow(CUaccessPolicyWindow_v1): + """ + Specifies an access policy for a window, a contiguous extent of + memory beginning at base_ptr and ending at base_ptr + num_bytes. + num_bytes is limited by + CU_DEVICE_ATTRIBUTE_MAX_ACCESS_POLICY_WINDOW_SIZE. Partition into + many segments and assign segments such that: sum of "hit segments" + / window == approx. ratio. sum of "miss segments" / window == + approx 1-ratio. Segments and ratio specifications are fitted to the + capabilities of the architecture. Accesses in a hit segment apply + the hitProp access policy. Accesses in a miss segment apply the + missProp access policy. + + Attributes + ---------- + base_ptr : Any + Starting address of the access policy window. CUDA driver may align + it. + num_bytes : size_t + Size in bytes of the window policy. CUDA driver may restrict the + maximum size and alignment. + hitRatio : float + hitRatio specifies percentage of lines assigned hitProp, rest are + assigned missProp. + hitProp : CUaccessProperty + CUaccessProperty set for hit. + missProp : CUaccessProperty + CUaccessProperty set for miss. Must be either NORMAL or STREAMING + + Methods + ------- + getPtr() + Get memory address of class instance + """ + pass + +cdef class CUDA_KERNEL_NODE_PARAMS_v1(CUDA_KERNEL_NODE_PARAMS_st): + """ + GPU kernel node parameters + + Attributes + ---------- + func : CUfunction + Kernel to launch + gridDimX : unsigned int + Width of grid in blocks + gridDimY : unsigned int + Height of grid in blocks + gridDimZ : unsigned int + Depth of grid in blocks + blockDimX : unsigned int + X dimension of each thread block + blockDimY : unsigned int + Y dimension of each thread block + blockDimZ : unsigned int + Z dimension of each thread block + sharedMemBytes : unsigned int + Dynamic shared-memory size per thread block in bytes + kernelParams : Any + Array of pointers to kernel parameters + extra : Any + Extra options + + Methods + ------- + getPtr() + Get memory address of class instance + """ + pass + +cdef class CUDA_KERNEL_NODE_PARAMS_v2(CUDA_KERNEL_NODE_PARAMS_v2_st): + """ + GPU kernel node parameters + + Attributes + ---------- + func : CUfunction + Kernel to launch + gridDimX : unsigned int + Width of grid in blocks + gridDimY : unsigned int + Height of grid in blocks + gridDimZ : unsigned int + Depth of grid in blocks + blockDimX : unsigned int + X dimension of each thread block + blockDimY : unsigned int + Y dimension of each thread block + blockDimZ : unsigned int + Z dimension of each thread block + sharedMemBytes : unsigned int + Dynamic shared-memory size per thread block in bytes + kernelParams : Any + Array of pointers to kernel parameters + extra : Any + Extra options + kern : CUkernel + Kernel to launch, will only be referenced if func is NULL + ctx : CUcontext + Context for the kernel task to run in. The value NULL will indicate + the current context should be used by the api. This field is + ignored if func is set. + + Methods + ------- + getPtr() + Get memory address of class instance + """ + pass + +cdef class CUDA_KERNEL_NODE_PARAMS(CUDA_KERNEL_NODE_PARAMS_v2): + """ + GPU kernel node parameters + + Attributes + ---------- + func : CUfunction + Kernel to launch + gridDimX : unsigned int + Width of grid in blocks + gridDimY : unsigned int + Height of grid in blocks + gridDimZ : unsigned int + Depth of grid in blocks + blockDimX : unsigned int + X dimension of each thread block + blockDimY : unsigned int + Y dimension of each thread block + blockDimZ : unsigned int + Z dimension of each thread block + sharedMemBytes : unsigned int + Dynamic shared-memory size per thread block in bytes + kernelParams : Any + Array of pointers to kernel parameters + extra : Any + Extra options + kern : CUkernel + Kernel to launch, will only be referenced if func is NULL + ctx : CUcontext + Context for the kernel task to run in. The value NULL will indicate + the current context should be used by the api. This field is + ignored if func is set. + + Methods + ------- + getPtr() + Get memory address of class instance + """ + pass + +cdef class CUDA_KERNEL_NODE_PARAMS_v3(CUDA_KERNEL_NODE_PARAMS_v3_st): + """ + GPU kernel node parameters + + Attributes + ---------- + func : CUfunction + Kernel to launch + gridDimX : unsigned int + Width of grid in blocks + gridDimY : unsigned int + Height of grid in blocks + gridDimZ : unsigned int + Depth of grid in blocks + blockDimX : unsigned int + X dimension of each thread block + blockDimY : unsigned int + Y dimension of each thread block + blockDimZ : unsigned int + Z dimension of each thread block + sharedMemBytes : unsigned int + Dynamic shared-memory size per thread block in bytes + kernelParams : Any + Array of pointers to kernel parameters + extra : Any + Extra options + kern : CUkernel + Kernel to launch, will only be referenced if func is NULL + ctx : CUcontext + Context for the kernel task to run in. The value NULL will indicate + the current context should be used by the api. This field is + ignored if func is set. + + Methods + ------- + getPtr() + Get memory address of class instance + """ + pass + +cdef class CUDA_MEMSET_NODE_PARAMS_v1(CUDA_MEMSET_NODE_PARAMS_st): + """ + Memset node parameters + + Attributes + ---------- + dst : CUdeviceptr + Destination device pointer + pitch : size_t + Pitch of destination device pointer. Unused if height is 1 + value : unsigned int + Value to be set + elementSize : unsigned int + Size of each element in bytes. Must be 1, 2, or 4. + width : size_t + Width of the row in elements + height : size_t + Number of rows + + Methods + ------- + getPtr() + Get memory address of class instance + """ + pass + +cdef class CUDA_MEMSET_NODE_PARAMS(CUDA_MEMSET_NODE_PARAMS_v1): + """ + Memset node parameters + + Attributes + ---------- + dst : CUdeviceptr + Destination device pointer + pitch : size_t + Pitch of destination device pointer. Unused if height is 1 + value : unsigned int + Value to be set + elementSize : unsigned int + Size of each element in bytes. Must be 1, 2, or 4. + width : size_t + Width of the row in elements + height : size_t + Number of rows + + Methods + ------- + getPtr() + Get memory address of class instance + """ + pass + +cdef class CUDA_MEMSET_NODE_PARAMS_v2(CUDA_MEMSET_NODE_PARAMS_v2_st): + """ + Memset node parameters + + Attributes + ---------- + dst : CUdeviceptr + Destination device pointer + pitch : size_t + Pitch of destination device pointer. Unused if height is 1 + value : unsigned int + Value to be set + elementSize : unsigned int + Size of each element in bytes. Must be 1, 2, or 4. + width : size_t + Width of the row in elements + height : size_t + Number of rows + ctx : CUcontext + Context on which to run the node + + Methods + ------- + getPtr() + Get memory address of class instance + """ + pass + +cdef class CUDA_HOST_NODE_PARAMS_v1(CUDA_HOST_NODE_PARAMS_st): + """ + Host node parameters + + Attributes + ---------- + fn : CUhostFn + The function to call when the node executes + userData : Any + Argument to pass to the function + + Methods + ------- + getPtr() + Get memory address of class instance + """ + pass + +cdef class CUDA_HOST_NODE_PARAMS(CUDA_HOST_NODE_PARAMS_v1): + """ + Host node parameters + + Attributes + ---------- + fn : CUhostFn + The function to call when the node executes + userData : Any + Argument to pass to the function + + Methods + ------- + getPtr() + Get memory address of class instance + """ + pass + +cdef class CUDA_HOST_NODE_PARAMS_v2(CUDA_HOST_NODE_PARAMS_v2_st): + """ + Host node parameters + + Attributes + ---------- + fn : CUhostFn + The function to call when the node executes + userData : Any + Argument to pass to the function + syncMode : unsigned int + The sync mode to use for the host task + + Methods + ------- + getPtr() + Get memory address of class instance + """ + pass + +cdef class CUgraphEdgeData(CUgraphEdgeData_st): + """ + Optional annotation for edges in a CUDA graph. Note, all edges + implicitly have annotations and default to a zero-initialized value + if not specified. A zero-initialized struct indicates a standard + full serialization of two nodes with memory visibility. + + Attributes + ---------- + from_port : bytes + This indicates when the dependency is triggered from the upstream + node on the edge. The meaning is specfic to the node type. A value + of 0 in all cases means full completion of the upstream node, with + memory visibility to the downstream node or portion thereof + (indicated by `to_port`). Only kernel nodes define non-zero + ports. A kernel node can use the following output port types: + CU_GRAPH_KERNEL_NODE_PORT_DEFAULT, + CU_GRAPH_KERNEL_NODE_PORT_PROGRAMMATIC, or + CU_GRAPH_KERNEL_NODE_PORT_LAUNCH_ORDER. + to_port : bytes + This indicates what portion of the downstream node is dependent on + the upstream node or portion thereof (indicated by `from_port`). + The meaning is specific to the node type. A value of 0 in all cases + means the entirety of the downstream node is dependent on the + upstream work. Currently no node types define non-zero ports. + Accordingly, this field must be set to zero. + type : bytes + This should be populated with a value from CUgraphDependencyType. + (It is typed as char due to compiler-specific layout of bitfields.) + See CUgraphDependencyType. + reserved : bytes + These bytes are unused and must be zeroed. This ensures + compatibility if additional fields are added in the future. + + Methods + ------- + getPtr() + Get memory address of class instance + """ + pass + +cdef class CUDA_GRAPH_INSTANTIATE_PARAMS(CUDA_GRAPH_INSTANTIATE_PARAMS_st): + """ + Graph instantiation parameters + + Attributes + ---------- + flags : cuuint64_t + Instantiation flags + hUploadStream : CUstream + Upload stream + hErrNode_out : CUgraphNode + The node which caused instantiation to fail, if any + result_out : CUgraphInstantiateResult + Whether instantiation was successful. If it failed, the reason why + + Methods + ------- + getPtr() + Get memory address of class instance + """ + pass + +cdef class CUlaunchMemSyncDomainMap(CUlaunchMemSyncDomainMap_st): + """ + Memory Synchronization Domain map See ::cudaLaunchMemSyncDomain. + By default, kernels are launched in domain 0. Kernel launched with + CU_LAUNCH_MEM_SYNC_DOMAIN_REMOTE will have a different domain ID. + User may also alter the domain ID with CUlaunchMemSyncDomainMap for + a specific stream / graph node / kernel launch. See + CU_LAUNCH_ATTRIBUTE_MEM_SYNC_DOMAIN_MAP. Domain ID range is + available through CU_DEVICE_ATTRIBUTE_MEM_SYNC_DOMAIN_COUNT. + + Attributes + ---------- + default_ : bytes + The default domain ID to use for designated kernels + remote : bytes + The remote domain ID to use for designated kernels + + Methods + ------- + getPtr() + Get memory address of class instance + """ + pass + +cdef class CUlaunchAttributeValue(CUlaunchAttributeValue_union): + """ + Launch attributes union; used as value field of CUlaunchAttribute + + Attributes + ---------- + pad : bytes + + accessPolicyWindow : CUaccessPolicyWindow + Value of launch attribute CU_LAUNCH_ATTRIBUTE_ACCESS_POLICY_WINDOW. + cooperative : int + Value of launch attribute CU_LAUNCH_ATTRIBUTE_COOPERATIVE. Nonzero + indicates a cooperative kernel (see cuLaunchCooperativeKernel). + syncPolicy : CUsynchronizationPolicy + Value of launch attribute + CU_LAUNCH_ATTRIBUTE_SYNCHRONIZATION_POLICY. CUsynchronizationPolicy + for work queued up in this stream + clusterDim : anon_struct1 + Value of launch attribute CU_LAUNCH_ATTRIBUTE_CLUSTER_DIMENSION + that represents the desired cluster dimensions for the kernel. + Opaque type with the following fields: - `x` - The X dimension of + the cluster, in blocks. Must be a divisor of the grid X dimension. + - `y` - The Y dimension of the cluster, in blocks. Must be a + divisor of the grid Y dimension. - `z` - The Z dimension of the + cluster, in blocks. Must be a divisor of the grid Z dimension. + clusterSchedulingPolicyPreference : CUclusterSchedulingPolicy + Value of launch attribute + CU_LAUNCH_ATTRIBUTE_CLUSTER_SCHEDULING_POLICY_PREFERENCE. Cluster + scheduling policy preference for the kernel. + programmaticStreamSerializationAllowed : int + Value of launch attribute + CU_LAUNCH_ATTRIBUTE_PROGRAMMATIC_STREAM_SERIALIZATION. + programmaticEvent : anon_struct2 + Value of launch attribute CU_LAUNCH_ATTRIBUTE_PROGRAMMATIC_EVENT + with the following fields: - `CUevent` event - Event to fire when + all blocks trigger it. - `Event` record flags, see + cuEventRecordWithFlags. Does not accept :CU_EVENT_RECORD_EXTERNAL. + - `triggerAtBlockStart` - If this is set to non-0, each block + launch will automatically trigger the event. + launchCompletionEvent : anon_struct3 + Value of launch attribute + CU_LAUNCH_ATTRIBUTE_LAUNCH_COMPLETION_EVENT with the following + fields: - `CUevent` event - Event to fire when the last block + launches - `int` flags; - Event record flags, see + cuEventRecordWithFlags. Does not accept CU_EVENT_RECORD_EXTERNAL. + priority : int + Value of launch attribute CU_LAUNCH_ATTRIBUTE_PRIORITY. Execution + priority of the kernel. + memSyncDomainMap : CUlaunchMemSyncDomainMap + Value of launch attribute CU_LAUNCH_ATTRIBUTE_MEM_SYNC_DOMAIN_MAP. + See CUlaunchMemSyncDomainMap. + memSyncDomain : CUlaunchMemSyncDomain + Value of launch attribute CU_LAUNCH_ATTRIBUTE_MEM_SYNC_DOMAIN. + See::CUlaunchMemSyncDomain + preferredClusterDim : anon_struct4 + Value of launch attribute + CU_LAUNCH_ATTRIBUTE_PREFERRED_CLUSTER_DIMENSION that represents the + desired preferred cluster dimensions for the kernel. Opaque type + with the following fields: - `x` - The X dimension of the preferred + cluster, in blocks. Must be a divisor of the grid X dimension, and + must be a multiple of the `x` field of + CUlaunchAttributeValue::clusterDim. - `y` - The Y dimension of + the preferred cluster, in blocks. Must be a divisor of the grid Y + dimension, and must be a multiple of the `y` field of + CUlaunchAttributeValue::clusterDim. - `z` - The Z dimension of + the preferred cluster, in blocks. Must be equal to the `z` field of + CUlaunchAttributeValue::clusterDim. + deviceUpdatableKernelNode : anon_struct5 + Value of launch attribute + CU_LAUNCH_ATTRIBUTE_DEVICE_UPDATABLE_KERNEL_NODE. with the + following fields: - `int` deviceUpdatable - Whether or not the + resulting kernel node should be device-updatable. - + `CUgraphDeviceNode` devNode - Returns a handle to pass to the + various device-side update functions. + sharedMemCarveout : unsigned int + Value of launch attribute + CU_LAUNCH_ATTRIBUTE_PREFERRED_SHARED_MEMORY_CARVEOUT. + nvlinkUtilCentricScheduling : unsigned int + + portableClusterSizeMode : CUlaunchAttributePortableClusterMode + Value of launch attribute + CU_LAUNCH_ATTRIBUTE_PORTABLE_CLUSTER_SIZE_MODE. + sharedMemoryMode : CUsharedMemoryMode + Value of launch attribute CU_LAUNCH_ATTRIBUTE_SHARED_MEMORY_MODE. + See CUsharedMemoryMode for acceptable values. + + Methods + ------- + getPtr() + Get memory address of class instance + """ + pass + +cdef class CUlaunchAttribute(CUlaunchAttribute_st): + """ + Launch attribute + + Attributes + ---------- + id : CUlaunchAttributeID + Attribute to set + value : CUlaunchAttributeValue + Value of the attribute + + Methods + ------- + getPtr() + Get memory address of class instance + """ + pass + +cdef class CUlaunchConfig(CUlaunchConfig_st): + """ + CUDA extensible launch configuration + + Attributes + ---------- + gridDimX : unsigned int + Width of grid in blocks + gridDimY : unsigned int + Height of grid in blocks + gridDimZ : unsigned int + Depth of grid in blocks + blockDimX : unsigned int + X dimension of each thread block + blockDimY : unsigned int + Y dimension of each thread block + blockDimZ : unsigned int + Z dimension of each thread block + sharedMemBytes : unsigned int + Dynamic shared-memory size per thread block in bytes + hStream : CUstream + Stream identifier + attrs : CUlaunchAttribute + List of attributes; nullable if CUlaunchConfig::numAttrs == 0 + numAttrs : unsigned int + Number of attributes populated in CUlaunchConfig::attrs + + Methods + ------- + getPtr() + Get memory address of class instance + """ + pass + +cdef class CUkernelNodeAttrValue_v1(CUlaunchAttributeValue): + """ + Launch attributes union; used as value field of CUlaunchAttribute + + Attributes + ---------- + pad : bytes + + accessPolicyWindow : CUaccessPolicyWindow + Value of launch attribute CU_LAUNCH_ATTRIBUTE_ACCESS_POLICY_WINDOW. + cooperative : int + Value of launch attribute CU_LAUNCH_ATTRIBUTE_COOPERATIVE. Nonzero + indicates a cooperative kernel (see cuLaunchCooperativeKernel). + syncPolicy : CUsynchronizationPolicy + Value of launch attribute + CU_LAUNCH_ATTRIBUTE_SYNCHRONIZATION_POLICY. CUsynchronizationPolicy + for work queued up in this stream + clusterDim : anon_struct1 + Value of launch attribute CU_LAUNCH_ATTRIBUTE_CLUSTER_DIMENSION + that represents the desired cluster dimensions for the kernel. + Opaque type with the following fields: - `x` - The X dimension of + the cluster, in blocks. Must be a divisor of the grid X dimension. + - `y` - The Y dimension of the cluster, in blocks. Must be a + divisor of the grid Y dimension. - `z` - The Z dimension of the + cluster, in blocks. Must be a divisor of the grid Z dimension. + clusterSchedulingPolicyPreference : CUclusterSchedulingPolicy + Value of launch attribute + CU_LAUNCH_ATTRIBUTE_CLUSTER_SCHEDULING_POLICY_PREFERENCE. Cluster + scheduling policy preference for the kernel. + programmaticStreamSerializationAllowed : int + Value of launch attribute + CU_LAUNCH_ATTRIBUTE_PROGRAMMATIC_STREAM_SERIALIZATION. + programmaticEvent : anon_struct2 + Value of launch attribute CU_LAUNCH_ATTRIBUTE_PROGRAMMATIC_EVENT + with the following fields: - `CUevent` event - Event to fire when + all blocks trigger it. - `Event` record flags, see + cuEventRecordWithFlags. Does not accept :CU_EVENT_RECORD_EXTERNAL. + - `triggerAtBlockStart` - If this is set to non-0, each block + launch will automatically trigger the event. + launchCompletionEvent : anon_struct3 + Value of launch attribute + CU_LAUNCH_ATTRIBUTE_LAUNCH_COMPLETION_EVENT with the following + fields: - `CUevent` event - Event to fire when the last block + launches - `int` flags; - Event record flags, see + cuEventRecordWithFlags. Does not accept CU_EVENT_RECORD_EXTERNAL. + priority : int + Value of launch attribute CU_LAUNCH_ATTRIBUTE_PRIORITY. Execution + priority of the kernel. + memSyncDomainMap : CUlaunchMemSyncDomainMap + Value of launch attribute CU_LAUNCH_ATTRIBUTE_MEM_SYNC_DOMAIN_MAP. + See CUlaunchMemSyncDomainMap. + memSyncDomain : CUlaunchMemSyncDomain + Value of launch attribute CU_LAUNCH_ATTRIBUTE_MEM_SYNC_DOMAIN. + See::CUlaunchMemSyncDomain + preferredClusterDim : anon_struct4 + Value of launch attribute + CU_LAUNCH_ATTRIBUTE_PREFERRED_CLUSTER_DIMENSION that represents the + desired preferred cluster dimensions for the kernel. Opaque type + with the following fields: - `x` - The X dimension of the preferred + cluster, in blocks. Must be a divisor of the grid X dimension, and + must be a multiple of the `x` field of + CUlaunchAttributeValue::clusterDim. - `y` - The Y dimension of + the preferred cluster, in blocks. Must be a divisor of the grid Y + dimension, and must be a multiple of the `y` field of + CUlaunchAttributeValue::clusterDim. - `z` - The Z dimension of + the preferred cluster, in blocks. Must be equal to the `z` field of + CUlaunchAttributeValue::clusterDim. + deviceUpdatableKernelNode : anon_struct5 + Value of launch attribute + CU_LAUNCH_ATTRIBUTE_DEVICE_UPDATABLE_KERNEL_NODE. with the + following fields: - `int` deviceUpdatable - Whether or not the + resulting kernel node should be device-updatable. - + `CUgraphDeviceNode` devNode - Returns a handle to pass to the + various device-side update functions. + sharedMemCarveout : unsigned int + Value of launch attribute + CU_LAUNCH_ATTRIBUTE_PREFERRED_SHARED_MEMORY_CARVEOUT. + nvlinkUtilCentricScheduling : unsigned int + + portableClusterSizeMode : CUlaunchAttributePortableClusterMode + Value of launch attribute + CU_LAUNCH_ATTRIBUTE_PORTABLE_CLUSTER_SIZE_MODE. + sharedMemoryMode : CUsharedMemoryMode + Value of launch attribute CU_LAUNCH_ATTRIBUTE_SHARED_MEMORY_MODE. + See CUsharedMemoryMode for acceptable values. + + Methods + ------- + getPtr() + Get memory address of class instance + """ + pass + +cdef class CUkernelNodeAttrValue(CUkernelNodeAttrValue_v1): + """ + Launch attributes union; used as value field of CUlaunchAttribute + + Attributes + ---------- + pad : bytes + + accessPolicyWindow : CUaccessPolicyWindow + Value of launch attribute CU_LAUNCH_ATTRIBUTE_ACCESS_POLICY_WINDOW. + cooperative : int + Value of launch attribute CU_LAUNCH_ATTRIBUTE_COOPERATIVE. Nonzero + indicates a cooperative kernel (see cuLaunchCooperativeKernel). + syncPolicy : CUsynchronizationPolicy + Value of launch attribute + CU_LAUNCH_ATTRIBUTE_SYNCHRONIZATION_POLICY. CUsynchronizationPolicy + for work queued up in this stream + clusterDim : anon_struct1 + Value of launch attribute CU_LAUNCH_ATTRIBUTE_CLUSTER_DIMENSION + that represents the desired cluster dimensions for the kernel. + Opaque type with the following fields: - `x` - The X dimension of + the cluster, in blocks. Must be a divisor of the grid X dimension. + - `y` - The Y dimension of the cluster, in blocks. Must be a + divisor of the grid Y dimension. - `z` - The Z dimension of the + cluster, in blocks. Must be a divisor of the grid Z dimension. + clusterSchedulingPolicyPreference : CUclusterSchedulingPolicy + Value of launch attribute + CU_LAUNCH_ATTRIBUTE_CLUSTER_SCHEDULING_POLICY_PREFERENCE. Cluster + scheduling policy preference for the kernel. + programmaticStreamSerializationAllowed : int + Value of launch attribute + CU_LAUNCH_ATTRIBUTE_PROGRAMMATIC_STREAM_SERIALIZATION. + programmaticEvent : anon_struct2 + Value of launch attribute CU_LAUNCH_ATTRIBUTE_PROGRAMMATIC_EVENT + with the following fields: - `CUevent` event - Event to fire when + all blocks trigger it. - `Event` record flags, see + cuEventRecordWithFlags. Does not accept :CU_EVENT_RECORD_EXTERNAL. + - `triggerAtBlockStart` - If this is set to non-0, each block + launch will automatically trigger the event. + launchCompletionEvent : anon_struct3 + Value of launch attribute + CU_LAUNCH_ATTRIBUTE_LAUNCH_COMPLETION_EVENT with the following + fields: - `CUevent` event - Event to fire when the last block + launches - `int` flags; - Event record flags, see + cuEventRecordWithFlags. Does not accept CU_EVENT_RECORD_EXTERNAL. + priority : int + Value of launch attribute CU_LAUNCH_ATTRIBUTE_PRIORITY. Execution + priority of the kernel. + memSyncDomainMap : CUlaunchMemSyncDomainMap + Value of launch attribute CU_LAUNCH_ATTRIBUTE_MEM_SYNC_DOMAIN_MAP. + See CUlaunchMemSyncDomainMap. + memSyncDomain : CUlaunchMemSyncDomain + Value of launch attribute CU_LAUNCH_ATTRIBUTE_MEM_SYNC_DOMAIN. + See::CUlaunchMemSyncDomain + preferredClusterDim : anon_struct4 + Value of launch attribute + CU_LAUNCH_ATTRIBUTE_PREFERRED_CLUSTER_DIMENSION that represents the + desired preferred cluster dimensions for the kernel. Opaque type + with the following fields: - `x` - The X dimension of the preferred + cluster, in blocks. Must be a divisor of the grid X dimension, and + must be a multiple of the `x` field of + CUlaunchAttributeValue::clusterDim. - `y` - The Y dimension of + the preferred cluster, in blocks. Must be a divisor of the grid Y + dimension, and must be a multiple of the `y` field of + CUlaunchAttributeValue::clusterDim. - `z` - The Z dimension of + the preferred cluster, in blocks. Must be equal to the `z` field of + CUlaunchAttributeValue::clusterDim. + deviceUpdatableKernelNode : anon_struct5 + Value of launch attribute + CU_LAUNCH_ATTRIBUTE_DEVICE_UPDATABLE_KERNEL_NODE. with the + following fields: - `int` deviceUpdatable - Whether or not the + resulting kernel node should be device-updatable. - + `CUgraphDeviceNode` devNode - Returns a handle to pass to the + various device-side update functions. + sharedMemCarveout : unsigned int + Value of launch attribute + CU_LAUNCH_ATTRIBUTE_PREFERRED_SHARED_MEMORY_CARVEOUT. + nvlinkUtilCentricScheduling : unsigned int + + portableClusterSizeMode : CUlaunchAttributePortableClusterMode + Value of launch attribute + CU_LAUNCH_ATTRIBUTE_PORTABLE_CLUSTER_SIZE_MODE. + sharedMemoryMode : CUsharedMemoryMode + Value of launch attribute CU_LAUNCH_ATTRIBUTE_SHARED_MEMORY_MODE. + See CUsharedMemoryMode for acceptable values. + + Methods + ------- + getPtr() + Get memory address of class instance + """ + pass + +cdef class CUstreamAttrValue_v1(CUlaunchAttributeValue): + """ + Launch attributes union; used as value field of CUlaunchAttribute + + Attributes + ---------- + pad : bytes + + accessPolicyWindow : CUaccessPolicyWindow + Value of launch attribute CU_LAUNCH_ATTRIBUTE_ACCESS_POLICY_WINDOW. + cooperative : int + Value of launch attribute CU_LAUNCH_ATTRIBUTE_COOPERATIVE. Nonzero + indicates a cooperative kernel (see cuLaunchCooperativeKernel). + syncPolicy : CUsynchronizationPolicy + Value of launch attribute + CU_LAUNCH_ATTRIBUTE_SYNCHRONIZATION_POLICY. CUsynchronizationPolicy + for work queued up in this stream + clusterDim : anon_struct1 + Value of launch attribute CU_LAUNCH_ATTRIBUTE_CLUSTER_DIMENSION + that represents the desired cluster dimensions for the kernel. + Opaque type with the following fields: - `x` - The X dimension of + the cluster, in blocks. Must be a divisor of the grid X dimension. + - `y` - The Y dimension of the cluster, in blocks. Must be a + divisor of the grid Y dimension. - `z` - The Z dimension of the + cluster, in blocks. Must be a divisor of the grid Z dimension. + clusterSchedulingPolicyPreference : CUclusterSchedulingPolicy + Value of launch attribute + CU_LAUNCH_ATTRIBUTE_CLUSTER_SCHEDULING_POLICY_PREFERENCE. Cluster + scheduling policy preference for the kernel. + programmaticStreamSerializationAllowed : int + Value of launch attribute + CU_LAUNCH_ATTRIBUTE_PROGRAMMATIC_STREAM_SERIALIZATION. + programmaticEvent : anon_struct2 + Value of launch attribute CU_LAUNCH_ATTRIBUTE_PROGRAMMATIC_EVENT + with the following fields: - `CUevent` event - Event to fire when + all blocks trigger it. - `Event` record flags, see + cuEventRecordWithFlags. Does not accept :CU_EVENT_RECORD_EXTERNAL. + - `triggerAtBlockStart` - If this is set to non-0, each block + launch will automatically trigger the event. + launchCompletionEvent : anon_struct3 + Value of launch attribute + CU_LAUNCH_ATTRIBUTE_LAUNCH_COMPLETION_EVENT with the following + fields: - `CUevent` event - Event to fire when the last block + launches - `int` flags; - Event record flags, see + cuEventRecordWithFlags. Does not accept CU_EVENT_RECORD_EXTERNAL. + priority : int + Value of launch attribute CU_LAUNCH_ATTRIBUTE_PRIORITY. Execution + priority of the kernel. + memSyncDomainMap : CUlaunchMemSyncDomainMap + Value of launch attribute CU_LAUNCH_ATTRIBUTE_MEM_SYNC_DOMAIN_MAP. + See CUlaunchMemSyncDomainMap. + memSyncDomain : CUlaunchMemSyncDomain + Value of launch attribute CU_LAUNCH_ATTRIBUTE_MEM_SYNC_DOMAIN. + See::CUlaunchMemSyncDomain + preferredClusterDim : anon_struct4 + Value of launch attribute + CU_LAUNCH_ATTRIBUTE_PREFERRED_CLUSTER_DIMENSION that represents the + desired preferred cluster dimensions for the kernel. Opaque type + with the following fields: - `x` - The X dimension of the preferred + cluster, in blocks. Must be a divisor of the grid X dimension, and + must be a multiple of the `x` field of + CUlaunchAttributeValue::clusterDim. - `y` - The Y dimension of + the preferred cluster, in blocks. Must be a divisor of the grid Y + dimension, and must be a multiple of the `y` field of + CUlaunchAttributeValue::clusterDim. - `z` - The Z dimension of + the preferred cluster, in blocks. Must be equal to the `z` field of + CUlaunchAttributeValue::clusterDim. + deviceUpdatableKernelNode : anon_struct5 + Value of launch attribute + CU_LAUNCH_ATTRIBUTE_DEVICE_UPDATABLE_KERNEL_NODE. with the + following fields: - `int` deviceUpdatable - Whether or not the + resulting kernel node should be device-updatable. - + `CUgraphDeviceNode` devNode - Returns a handle to pass to the + various device-side update functions. + sharedMemCarveout : unsigned int + Value of launch attribute + CU_LAUNCH_ATTRIBUTE_PREFERRED_SHARED_MEMORY_CARVEOUT. + nvlinkUtilCentricScheduling : unsigned int + + portableClusterSizeMode : CUlaunchAttributePortableClusterMode + Value of launch attribute + CU_LAUNCH_ATTRIBUTE_PORTABLE_CLUSTER_SIZE_MODE. + sharedMemoryMode : CUsharedMemoryMode + Value of launch attribute CU_LAUNCH_ATTRIBUTE_SHARED_MEMORY_MODE. + See CUsharedMemoryMode for acceptable values. + + Methods + ------- + getPtr() + Get memory address of class instance + """ + pass + +cdef class CUstreamAttrValue(CUstreamAttrValue_v1): + """ + Launch attributes union; used as value field of CUlaunchAttribute + + Attributes + ---------- + pad : bytes + + accessPolicyWindow : CUaccessPolicyWindow + Value of launch attribute CU_LAUNCH_ATTRIBUTE_ACCESS_POLICY_WINDOW. + cooperative : int + Value of launch attribute CU_LAUNCH_ATTRIBUTE_COOPERATIVE. Nonzero + indicates a cooperative kernel (see cuLaunchCooperativeKernel). + syncPolicy : CUsynchronizationPolicy + Value of launch attribute + CU_LAUNCH_ATTRIBUTE_SYNCHRONIZATION_POLICY. CUsynchronizationPolicy + for work queued up in this stream + clusterDim : anon_struct1 + Value of launch attribute CU_LAUNCH_ATTRIBUTE_CLUSTER_DIMENSION + that represents the desired cluster dimensions for the kernel. + Opaque type with the following fields: - `x` - The X dimension of + the cluster, in blocks. Must be a divisor of the grid X dimension. + - `y` - The Y dimension of the cluster, in blocks. Must be a + divisor of the grid Y dimension. - `z` - The Z dimension of the + cluster, in blocks. Must be a divisor of the grid Z dimension. + clusterSchedulingPolicyPreference : CUclusterSchedulingPolicy + Value of launch attribute + CU_LAUNCH_ATTRIBUTE_CLUSTER_SCHEDULING_POLICY_PREFERENCE. Cluster + scheduling policy preference for the kernel. + programmaticStreamSerializationAllowed : int + Value of launch attribute + CU_LAUNCH_ATTRIBUTE_PROGRAMMATIC_STREAM_SERIALIZATION. + programmaticEvent : anon_struct2 + Value of launch attribute CU_LAUNCH_ATTRIBUTE_PROGRAMMATIC_EVENT + with the following fields: - `CUevent` event - Event to fire when + all blocks trigger it. - `Event` record flags, see + cuEventRecordWithFlags. Does not accept :CU_EVENT_RECORD_EXTERNAL. + - `triggerAtBlockStart` - If this is set to non-0, each block + launch will automatically trigger the event. + launchCompletionEvent : anon_struct3 + Value of launch attribute + CU_LAUNCH_ATTRIBUTE_LAUNCH_COMPLETION_EVENT with the following + fields: - `CUevent` event - Event to fire when the last block + launches - `int` flags; - Event record flags, see + cuEventRecordWithFlags. Does not accept CU_EVENT_RECORD_EXTERNAL. + priority : int + Value of launch attribute CU_LAUNCH_ATTRIBUTE_PRIORITY. Execution + priority of the kernel. + memSyncDomainMap : CUlaunchMemSyncDomainMap + Value of launch attribute CU_LAUNCH_ATTRIBUTE_MEM_SYNC_DOMAIN_MAP. + See CUlaunchMemSyncDomainMap. + memSyncDomain : CUlaunchMemSyncDomain + Value of launch attribute CU_LAUNCH_ATTRIBUTE_MEM_SYNC_DOMAIN. + See::CUlaunchMemSyncDomain + preferredClusterDim : anon_struct4 + Value of launch attribute + CU_LAUNCH_ATTRIBUTE_PREFERRED_CLUSTER_DIMENSION that represents the + desired preferred cluster dimensions for the kernel. Opaque type + with the following fields: - `x` - The X dimension of the preferred + cluster, in blocks. Must be a divisor of the grid X dimension, and + must be a multiple of the `x` field of + CUlaunchAttributeValue::clusterDim. - `y` - The Y dimension of + the preferred cluster, in blocks. Must be a divisor of the grid Y + dimension, and must be a multiple of the `y` field of + CUlaunchAttributeValue::clusterDim. - `z` - The Z dimension of + the preferred cluster, in blocks. Must be equal to the `z` field of + CUlaunchAttributeValue::clusterDim. + deviceUpdatableKernelNode : anon_struct5 + Value of launch attribute + CU_LAUNCH_ATTRIBUTE_DEVICE_UPDATABLE_KERNEL_NODE. with the + following fields: - `int` deviceUpdatable - Whether or not the + resulting kernel node should be device-updatable. - + `CUgraphDeviceNode` devNode - Returns a handle to pass to the + various device-side update functions. + sharedMemCarveout : unsigned int + Value of launch attribute + CU_LAUNCH_ATTRIBUTE_PREFERRED_SHARED_MEMORY_CARVEOUT. + nvlinkUtilCentricScheduling : unsigned int + + portableClusterSizeMode : CUlaunchAttributePortableClusterMode + Value of launch attribute + CU_LAUNCH_ATTRIBUTE_PORTABLE_CLUSTER_SIZE_MODE. + sharedMemoryMode : CUsharedMemoryMode + Value of launch attribute CU_LAUNCH_ATTRIBUTE_SHARED_MEMORY_MODE. + See CUsharedMemoryMode for acceptable values. + + Methods + ------- + getPtr() + Get memory address of class instance + """ + pass + +cdef class CUexecAffinitySmCount_v1(CUexecAffinitySmCount_st): + """ + Value for CU_EXEC_AFFINITY_TYPE_SM_COUNT + + Attributes + ---------- + val : unsigned int + The number of SMs the context is limited to use. + + Methods + ------- + getPtr() + Get memory address of class instance + """ + pass + +cdef class CUexecAffinitySmCount(CUexecAffinitySmCount_v1): + """ + Value for CU_EXEC_AFFINITY_TYPE_SM_COUNT + + Attributes + ---------- + val : unsigned int + The number of SMs the context is limited to use. + + Methods + ------- + getPtr() + Get memory address of class instance + """ + pass + +cdef class CUexecAffinityParam_v1(CUexecAffinityParam_st): + """ + Execution Affinity Parameters + + Attributes + ---------- + type : CUexecAffinityType + Type of execution affinity. + param : anon_union3 + + + Methods + ------- + getPtr() + Get memory address of class instance + """ + pass + +cdef class CUexecAffinityParam(CUexecAffinityParam_v1): + """ + Execution Affinity Parameters + + Attributes + ---------- + type : CUexecAffinityType + Type of execution affinity. + param : anon_union3 + + + Methods + ------- + getPtr() + Get memory address of class instance + """ + pass + +cdef class CUctxCigParam(CUctxCigParam_st): + """ + CIG Context Create Params + + Attributes + ---------- + sharedDataType : CUcigDataType + Type of shared data from graphics client (D3D12 or Vulkan). + sharedData : Any + Graphics client data handle (ID3D12CommandQueue or Nvidia specific + data blob). + + Methods + ------- + getPtr() + Get memory address of class instance + """ + pass + +cdef class CUctxCreateParams(CUctxCreateParams_st): + """ + Params for creating CUDA context. Both execAffinityParams and + cigParams cannot be non-NULL at the same time. If both are NULL, + the context will be created as a regular CUDA context. + + Attributes + ---------- + execAffinityParams : CUexecAffinityParam + Array of execution affinity parameters to limit context resources + (e.g., SM count). Only supported Volta+ MPS. Mutually exclusive + with cigParams. + numExecAffinityParams : int + Number of elements in execAffinityParams array. Must be 0 if + execAffinityParams is NULL. + cigParams : CUctxCigParam + CIG (CUDA in Graphics) parameters for sharing data from + D3D12/Vulkan graphics clients. Mutually exclusive with + execAffinityParams. + + Methods + ------- + getPtr() + Get memory address of class instance + """ + pass + +cdef class CUstreamCigParam(CUstreamCigParam_st): + """ + CIG Stream Capture Params + + Attributes + ---------- + streamSharedDataType : CUstreamCigDataType + Type of shared data from graphics client (D3D12). + streamSharedData : Any + Graphics client data handle + (ID3D12CommandList/ID3D12GraphicsCommandList). + + Methods + ------- + getPtr() + Get memory address of class instance + """ + pass + +cdef class CUstreamCigCaptureParams(CUstreamCigCaptureParams_st): + """ + Params for capturing CUDA stream to CIG streamCigParams must be + non-NULL. + + Attributes + ---------- + streamCigParams : CUstreamCigParam + CIG (CUDA in Graphics) parameters for sharing command list data + from D3D12 graphics clients. + + Methods + ------- + getPtr() + Get memory address of class instance + """ + pass + +cdef class CUlibraryHostUniversalFunctionAndDataTable(CUlibraryHostUniversalFunctionAndDataTable_st): + """ + Attributes + ---------- + functionTable : Any + + functionWindowSize : size_t + + dataTable : Any + + dataWindowSize : size_t + + + Methods + ------- + getPtr() + Get memory address of class instance + """ + pass + +cdef class CUDA_MEMCPY2D_v2(CUDA_MEMCPY2D_st): + """ + 2D memory copy parameters + + Attributes + ---------- + srcXInBytes : size_t + Source X in bytes + srcY : size_t + Source Y + srcMemoryType : CUmemorytype + Source memory type (host, device, array) + srcHost : Any + Source host pointer + srcDevice : CUdeviceptr + Source device pointer + srcArray : CUarray + Source array reference + srcPitch : size_t + Source pitch (ignored when src is array) + dstXInBytes : size_t + Destination X in bytes + dstY : size_t + Destination Y + dstMemoryType : CUmemorytype + Destination memory type (host, device, array) + dstHost : Any + Destination host pointer + dstDevice : CUdeviceptr + Destination device pointer + dstArray : CUarray + Destination array reference + dstPitch : size_t + Destination pitch (ignored when dst is array) + WidthInBytes : size_t + Width of 2D memory copy in bytes + Height : size_t + Height of 2D memory copy + + Methods + ------- + getPtr() + Get memory address of class instance + """ + pass + +cdef class CUDA_MEMCPY2D(CUDA_MEMCPY2D_v2): + """ + 2D memory copy parameters + + Attributes + ---------- + srcXInBytes : size_t + Source X in bytes + srcY : size_t + Source Y + srcMemoryType : CUmemorytype + Source memory type (host, device, array) + srcHost : Any + Source host pointer + srcDevice : CUdeviceptr + Source device pointer + srcArray : CUarray + Source array reference + srcPitch : size_t + Source pitch (ignored when src is array) + dstXInBytes : size_t + Destination X in bytes + dstY : size_t + Destination Y + dstMemoryType : CUmemorytype + Destination memory type (host, device, array) + dstHost : Any + Destination host pointer + dstDevice : CUdeviceptr + Destination device pointer + dstArray : CUarray + Destination array reference + dstPitch : size_t + Destination pitch (ignored when dst is array) + WidthInBytes : size_t + Width of 2D memory copy in bytes + Height : size_t + Height of 2D memory copy + + Methods + ------- + getPtr() + Get memory address of class instance + """ + pass + +cdef class CUDA_MEMCPY3D_v2(CUDA_MEMCPY3D_st): + """ + 3D memory copy parameters + + Attributes + ---------- + srcXInBytes : size_t + Source X in bytes + srcY : size_t + Source Y + srcZ : size_t + Source Z + srcLOD : size_t + Source LOD + srcMemoryType : CUmemorytype + Source memory type (host, device, array) + srcHost : Any + Source host pointer + srcDevice : CUdeviceptr + Source device pointer + srcArray : CUarray + Source array reference + reserved0 : Any + Must be NULL + srcPitch : size_t + Source pitch (ignored when src is array) + srcHeight : size_t + Source height (ignored when src is array; may be 0 if Depth==1) + dstXInBytes : size_t + Destination X in bytes + dstY : size_t + Destination Y + dstZ : size_t + Destination Z + dstLOD : size_t + Destination LOD + dstMemoryType : CUmemorytype + Destination memory type (host, device, array) + dstHost : Any + Destination host pointer + dstDevice : CUdeviceptr + Destination device pointer + dstArray : CUarray + Destination array reference + reserved1 : Any + Must be NULL + dstPitch : size_t + Destination pitch (ignored when dst is array) + dstHeight : size_t + Destination height (ignored when dst is array; may be 0 if + Depth==1) + WidthInBytes : size_t + Width of 3D memory copy in bytes + Height : size_t + Height of 3D memory copy + Depth : size_t + Depth of 3D memory copy + + Methods + ------- + getPtr() + Get memory address of class instance + """ + pass + +cdef class CUDA_MEMCPY3D(CUDA_MEMCPY3D_v2): + """ + 3D memory copy parameters + + Attributes + ---------- + srcXInBytes : size_t + Source X in bytes + srcY : size_t + Source Y + srcZ : size_t + Source Z + srcLOD : size_t + Source LOD + srcMemoryType : CUmemorytype + Source memory type (host, device, array) + srcHost : Any + Source host pointer + srcDevice : CUdeviceptr + Source device pointer + srcArray : CUarray + Source array reference + reserved0 : Any + Must be NULL + srcPitch : size_t + Source pitch (ignored when src is array) + srcHeight : size_t + Source height (ignored when src is array; may be 0 if Depth==1) + dstXInBytes : size_t + Destination X in bytes + dstY : size_t + Destination Y + dstZ : size_t + Destination Z + dstLOD : size_t + Destination LOD + dstMemoryType : CUmemorytype + Destination memory type (host, device, array) + dstHost : Any + Destination host pointer + dstDevice : CUdeviceptr + Destination device pointer + dstArray : CUarray + Destination array reference + reserved1 : Any + Must be NULL + dstPitch : size_t + Destination pitch (ignored when dst is array) + dstHeight : size_t + Destination height (ignored when dst is array; may be 0 if + Depth==1) + WidthInBytes : size_t + Width of 3D memory copy in bytes + Height : size_t + Height of 3D memory copy + Depth : size_t + Depth of 3D memory copy + + Methods + ------- + getPtr() + Get memory address of class instance + """ + pass + +cdef class CUDA_MEMCPY3D_PEER_v1(CUDA_MEMCPY3D_PEER_st): + """ + 3D memory cross-context copy parameters + + Attributes + ---------- + srcXInBytes : size_t + Source X in bytes + srcY : size_t + Source Y + srcZ : size_t + Source Z + srcLOD : size_t + Source LOD + srcMemoryType : CUmemorytype + Source memory type (host, device, array) + srcHost : Any + Source host pointer + srcDevice : CUdeviceptr + Source device pointer + srcArray : CUarray + Source array reference + srcContext : CUcontext + Source context (ignored with srcMemoryType is CU_MEMORYTYPE_ARRAY) + srcPitch : size_t + Source pitch (ignored when src is array) + srcHeight : size_t + Source height (ignored when src is array; may be 0 if Depth==1) + dstXInBytes : size_t + Destination X in bytes + dstY : size_t + Destination Y + dstZ : size_t + Destination Z + dstLOD : size_t + Destination LOD + dstMemoryType : CUmemorytype + Destination memory type (host, device, array) + dstHost : Any + Destination host pointer + dstDevice : CUdeviceptr + Destination device pointer + dstArray : CUarray + Destination array reference + dstContext : CUcontext + Destination context (ignored with dstMemoryType is + CU_MEMORYTYPE_ARRAY) + dstPitch : size_t + Destination pitch (ignored when dst is array) + dstHeight : size_t + Destination height (ignored when dst is array; may be 0 if + Depth==1) + WidthInBytes : size_t + Width of 3D memory copy in bytes + Height : size_t + Height of 3D memory copy + Depth : size_t + Depth of 3D memory copy + + Methods + ------- + getPtr() + Get memory address of class instance + """ + pass + +cdef class CUDA_MEMCPY3D_PEER(CUDA_MEMCPY3D_PEER_v1): + """ + 3D memory cross-context copy parameters + + Attributes + ---------- + srcXInBytes : size_t + Source X in bytes + srcY : size_t + Source Y + srcZ : size_t + Source Z + srcLOD : size_t + Source LOD + srcMemoryType : CUmemorytype + Source memory type (host, device, array) + srcHost : Any + Source host pointer + srcDevice : CUdeviceptr + Source device pointer + srcArray : CUarray + Source array reference + srcContext : CUcontext + Source context (ignored with srcMemoryType is CU_MEMORYTYPE_ARRAY) + srcPitch : size_t + Source pitch (ignored when src is array) + srcHeight : size_t + Source height (ignored when src is array; may be 0 if Depth==1) + dstXInBytes : size_t + Destination X in bytes + dstY : size_t + Destination Y + dstZ : size_t + Destination Z + dstLOD : size_t + Destination LOD + dstMemoryType : CUmemorytype + Destination memory type (host, device, array) + dstHost : Any + Destination host pointer + dstDevice : CUdeviceptr + Destination device pointer + dstArray : CUarray + Destination array reference + dstContext : CUcontext + Destination context (ignored with dstMemoryType is + CU_MEMORYTYPE_ARRAY) + dstPitch : size_t + Destination pitch (ignored when dst is array) + dstHeight : size_t + Destination height (ignored when dst is array; may be 0 if + Depth==1) + WidthInBytes : size_t + Width of 3D memory copy in bytes + Height : size_t + Height of 3D memory copy + Depth : size_t + Depth of 3D memory copy + + Methods + ------- + getPtr() + Get memory address of class instance + """ + pass + +cdef class CUDA_MEMCPY_NODE_PARAMS(CUDA_MEMCPY_NODE_PARAMS_st): + """ + Memcpy node parameters + + Attributes + ---------- + flags : int + Must be zero + reserved : int + Must be zero + copyCtx : CUcontext + Context on which to run the node + copyParams : CUDA_MEMCPY3D + Parameters for the memory copy + + Methods + ------- + getPtr() + Get memory address of class instance + """ + pass + +cdef class CUDA_ARRAY_DESCRIPTOR_v2(CUDA_ARRAY_DESCRIPTOR_st): + """ + Array descriptor + + Attributes + ---------- + Width : size_t + Width of array + Height : size_t + Height of array + Format : CUarray_format + Array format + NumChannels : unsigned int + Channels per array element + + Methods + ------- + getPtr() + Get memory address of class instance + """ + pass + +cdef class CUDA_ARRAY_DESCRIPTOR(CUDA_ARRAY_DESCRIPTOR_v2): + """ + Array descriptor + + Attributes + ---------- + Width : size_t + Width of array + Height : size_t + Height of array + Format : CUarray_format + Array format + NumChannels : unsigned int + Channels per array element + + Methods + ------- + getPtr() + Get memory address of class instance + """ + pass + +cdef class CUDA_ARRAY3D_DESCRIPTOR_v2(CUDA_ARRAY3D_DESCRIPTOR_st): + """ + 3D array descriptor + + Attributes + ---------- + Width : size_t + Width of 3D array + Height : size_t + Height of 3D array + Depth : size_t + Depth of 3D array + Format : CUarray_format + Array format + NumChannels : unsigned int + Channels per array element + Flags : unsigned int + Flags + + Methods + ------- + getPtr() + Get memory address of class instance + """ + pass + +cdef class CUDA_ARRAY3D_DESCRIPTOR(CUDA_ARRAY3D_DESCRIPTOR_v2): + """ + 3D array descriptor + + Attributes + ---------- + Width : size_t + Width of 3D array + Height : size_t + Height of 3D array + Depth : size_t + Depth of 3D array + Format : CUarray_format + Array format + NumChannels : unsigned int + Channels per array element + Flags : unsigned int + Flags + + Methods + ------- + getPtr() + Get memory address of class instance + """ + pass + +cdef class CUDA_ARRAY_SPARSE_PROPERTIES_v1(CUDA_ARRAY_SPARSE_PROPERTIES_st): + """ + CUDA array sparse properties + + Attributes + ---------- + tileExtent : anon_struct6 + + miptailFirstLevel : unsigned int + First mip level at which the mip tail begins. + miptailSize : unsigned long long + Total size of the mip tail. + flags : unsigned int + Flags will either be zero or + CU_ARRAY_SPARSE_PROPERTIES_SINGLE_MIPTAIL + reserved : list[unsigned int] + + + Methods + ------- + getPtr() + Get memory address of class instance + """ + pass + +cdef class CUDA_ARRAY_SPARSE_PROPERTIES(CUDA_ARRAY_SPARSE_PROPERTIES_v1): + """ + CUDA array sparse properties + + Attributes + ---------- + tileExtent : anon_struct6 + + miptailFirstLevel : unsigned int + First mip level at which the mip tail begins. + miptailSize : unsigned long long + Total size of the mip tail. + flags : unsigned int + Flags will either be zero or + CU_ARRAY_SPARSE_PROPERTIES_SINGLE_MIPTAIL + reserved : list[unsigned int] + + + Methods + ------- + getPtr() + Get memory address of class instance + """ + pass + +cdef class CUDA_ARRAY_MEMORY_REQUIREMENTS_v1(CUDA_ARRAY_MEMORY_REQUIREMENTS_st): + """ + CUDA array memory requirements + + Attributes + ---------- + size : size_t + Total required memory size + alignment : size_t + alignment requirement + reserved : list[unsigned int] + + + Methods + ------- + getPtr() + Get memory address of class instance + """ + pass + +cdef class CUDA_ARRAY_MEMORY_REQUIREMENTS(CUDA_ARRAY_MEMORY_REQUIREMENTS_v1): + """ + CUDA array memory requirements + + Attributes + ---------- + size : size_t + Total required memory size + alignment : size_t + alignment requirement + reserved : list[unsigned int] + + + Methods + ------- + getPtr() + Get memory address of class instance + """ + pass + +cdef class CUDA_RESOURCE_DESC_v1(CUDA_RESOURCE_DESC_st): + """ + CUDA Resource descriptor + + Attributes + ---------- + resType : CUresourcetype + Resource type + res : anon_union4 + + flags : unsigned int + Flags (must be zero) + + Methods + ------- + getPtr() + Get memory address of class instance + """ + pass + +cdef class CUDA_RESOURCE_DESC(CUDA_RESOURCE_DESC_v1): + """ + CUDA Resource descriptor + + Attributes + ---------- + resType : CUresourcetype + Resource type + res : anon_union4 + + flags : unsigned int + Flags (must be zero) + + Methods + ------- + getPtr() + Get memory address of class instance + """ + pass + +cdef class CUDA_TEXTURE_DESC_v1(CUDA_TEXTURE_DESC_st): + """ + Texture descriptor + + Attributes + ---------- + addressMode : list[CUaddress_mode] + Address modes + filterMode : CUfilter_mode + Filter mode + flags : unsigned int + Flags + maxAnisotropy : unsigned int + Maximum anisotropy ratio + mipmapFilterMode : CUfilter_mode + Mipmap filter mode + mipmapLevelBias : float + Mipmap level bias + minMipmapLevelClamp : float + Mipmap minimum level clamp + maxMipmapLevelClamp : float + Mipmap maximum level clamp + borderColor : list[float] + Border Color + reserved : list[int] + + + Methods + ------- + getPtr() + Get memory address of class instance + """ + pass + +cdef class CUDA_TEXTURE_DESC(CUDA_TEXTURE_DESC_v1): + """ + Texture descriptor + + Attributes + ---------- + addressMode : list[CUaddress_mode] + Address modes + filterMode : CUfilter_mode + Filter mode + flags : unsigned int + Flags + maxAnisotropy : unsigned int + Maximum anisotropy ratio + mipmapFilterMode : CUfilter_mode + Mipmap filter mode + mipmapLevelBias : float + Mipmap level bias + minMipmapLevelClamp : float + Mipmap minimum level clamp + maxMipmapLevelClamp : float + Mipmap maximum level clamp + borderColor : list[float] + Border Color + reserved : list[int] + + + Methods + ------- + getPtr() + Get memory address of class instance + """ + pass + +cdef class CUDA_RESOURCE_VIEW_DESC_v1(CUDA_RESOURCE_VIEW_DESC_st): + """ + Resource view descriptor + + Attributes + ---------- + format : CUresourceViewFormat + Resource view format + width : size_t + Width of the resource view + height : size_t + Height of the resource view + depth : size_t + Depth of the resource view + firstMipmapLevel : unsigned int + First defined mipmap level + lastMipmapLevel : unsigned int + Last defined mipmap level + firstLayer : unsigned int + First layer index + lastLayer : unsigned int + Last layer index + reserved : list[unsigned int] + + + Methods + ------- + getPtr() + Get memory address of class instance + """ + pass + +cdef class CUDA_RESOURCE_VIEW_DESC(CUDA_RESOURCE_VIEW_DESC_v1): + """ + Resource view descriptor + + Attributes + ---------- + format : CUresourceViewFormat + Resource view format + width : size_t + Width of the resource view + height : size_t + Height of the resource view + depth : size_t + Depth of the resource view + firstMipmapLevel : unsigned int + First defined mipmap level + lastMipmapLevel : unsigned int + Last defined mipmap level + firstLayer : unsigned int + First layer index + lastLayer : unsigned int + Last layer index + reserved : list[unsigned int] + + + Methods + ------- + getPtr() + Get memory address of class instance + """ + pass + +cdef class CUtensorMap(CUtensorMap_st): + """ + Tensor map descriptor. Requires compiler support for aligning to + 128 bytes. + + Attributes + ---------- + opaque : list[cuuint64_t] + + + Methods + ------- + getPtr() + Get memory address of class instance + """ + pass + +cdef class CUDA_POINTER_ATTRIBUTE_P2P_TOKENS_v1(CUDA_POINTER_ATTRIBUTE_P2P_TOKENS_st): + """ + GPU Direct v3 tokens + + Attributes + ---------- + p2pToken : unsigned long long + + vaSpaceToken : unsigned int + + + Methods + ------- + getPtr() + Get memory address of class instance + """ + pass + +cdef class CUDA_POINTER_ATTRIBUTE_P2P_TOKENS(CUDA_POINTER_ATTRIBUTE_P2P_TOKENS_v1): + """ + GPU Direct v3 tokens + + Attributes + ---------- + p2pToken : unsigned long long + + vaSpaceToken : unsigned int + + + Methods + ------- + getPtr() + Get memory address of class instance + """ + pass + +cdef class CUDA_LAUNCH_PARAMS_v1(CUDA_LAUNCH_PARAMS_st): + """ + Kernel launch parameters + + Attributes + ---------- + function : CUfunction + Kernel to launch + gridDimX : unsigned int + Width of grid in blocks + gridDimY : unsigned int + Height of grid in blocks + gridDimZ : unsigned int + Depth of grid in blocks + blockDimX : unsigned int + X dimension of each thread block + blockDimY : unsigned int + Y dimension of each thread block + blockDimZ : unsigned int + Z dimension of each thread block + sharedMemBytes : unsigned int + Dynamic shared-memory size per thread block in bytes + hStream : CUstream + Stream identifier + kernelParams : Any + Array of pointers to kernel parameters + + Methods + ------- + getPtr() + Get memory address of class instance + """ + pass + +cdef class CUDA_LAUNCH_PARAMS(CUDA_LAUNCH_PARAMS_v1): + """ + Kernel launch parameters + + Attributes + ---------- + function : CUfunction + Kernel to launch + gridDimX : unsigned int + Width of grid in blocks + gridDimY : unsigned int + Height of grid in blocks + gridDimZ : unsigned int + Depth of grid in blocks + blockDimX : unsigned int + X dimension of each thread block + blockDimY : unsigned int + Y dimension of each thread block + blockDimZ : unsigned int + Z dimension of each thread block + sharedMemBytes : unsigned int + Dynamic shared-memory size per thread block in bytes + hStream : CUstream + Stream identifier + kernelParams : Any + Array of pointers to kernel parameters + + Methods + ------- + getPtr() + Get memory address of class instance + """ + pass + +cdef class CUDA_EXTERNAL_MEMORY_HANDLE_DESC_v1(CUDA_EXTERNAL_MEMORY_HANDLE_DESC_st): + """ + External memory handle descriptor + + Attributes + ---------- + type : CUexternalMemoryHandleType + Type of the handle + handle : anon_union5 + + size : unsigned long long + Size of the memory allocation + flags : unsigned int + Flags must either be zero or CUDA_EXTERNAL_MEMORY_DEDICATED + reserved : list[unsigned int] + + + Methods + ------- + getPtr() + Get memory address of class instance + """ + pass + +cdef class CUDA_EXTERNAL_MEMORY_HANDLE_DESC(CUDA_EXTERNAL_MEMORY_HANDLE_DESC_v1): + """ + External memory handle descriptor + + Attributes + ---------- + type : CUexternalMemoryHandleType + Type of the handle + handle : anon_union5 + + size : unsigned long long + Size of the memory allocation + flags : unsigned int + Flags must either be zero or CUDA_EXTERNAL_MEMORY_DEDICATED + reserved : list[unsigned int] + + + Methods + ------- + getPtr() + Get memory address of class instance + """ + pass + +cdef class CUDA_EXTERNAL_MEMORY_BUFFER_DESC_v1(CUDA_EXTERNAL_MEMORY_BUFFER_DESC_st): + """ + External memory buffer descriptor + + Attributes + ---------- + offset : unsigned long long + Offset into the memory object where the buffer's base is + size : unsigned long long + Size of the buffer + flags : unsigned int + Flags reserved for future use. Must be zero. + reserved : list[unsigned int] + + + Methods + ------- + getPtr() + Get memory address of class instance + """ + pass + +cdef class CUDA_EXTERNAL_MEMORY_BUFFER_DESC(CUDA_EXTERNAL_MEMORY_BUFFER_DESC_v1): + """ + External memory buffer descriptor + + Attributes + ---------- + offset : unsigned long long + Offset into the memory object where the buffer's base is + size : unsigned long long + Size of the buffer + flags : unsigned int + Flags reserved for future use. Must be zero. + reserved : list[unsigned int] + + + Methods + ------- + getPtr() + Get memory address of class instance + """ + pass + +cdef class CUDA_EXTERNAL_MEMORY_MIPMAPPED_ARRAY_DESC_v1(CUDA_EXTERNAL_MEMORY_MIPMAPPED_ARRAY_DESC_st): + """ + External memory mipmap descriptor + + Attributes + ---------- + offset : unsigned long long + Offset into the memory object where the base level of the mipmap + chain is. + arrayDesc : CUDA_ARRAY3D_DESCRIPTOR + Format, dimension and type of base level of the mipmap chain + numLevels : unsigned int + Total number of levels in the mipmap chain + reserved : list[unsigned int] + + + Methods + ------- + getPtr() + Get memory address of class instance + """ + pass + +cdef class CUDA_EXTERNAL_MEMORY_MIPMAPPED_ARRAY_DESC(CUDA_EXTERNAL_MEMORY_MIPMAPPED_ARRAY_DESC_v1): + """ + External memory mipmap descriptor + + Attributes + ---------- + offset : unsigned long long + Offset into the memory object where the base level of the mipmap + chain is. + arrayDesc : CUDA_ARRAY3D_DESCRIPTOR + Format, dimension and type of base level of the mipmap chain + numLevels : unsigned int + Total number of levels in the mipmap chain + reserved : list[unsigned int] + + + Methods + ------- + getPtr() + Get memory address of class instance + """ + pass + +cdef class CUDA_EXTERNAL_SEMAPHORE_HANDLE_DESC_v1(CUDA_EXTERNAL_SEMAPHORE_HANDLE_DESC_st): + """ + External semaphore handle descriptor + + Attributes + ---------- + type : CUexternalSemaphoreHandleType + Type of the handle + handle : anon_union6 + + flags : unsigned int + Flags reserved for the future. Must be zero. + reserved : list[unsigned int] + + + Methods + ------- + getPtr() + Get memory address of class instance + """ + pass + +cdef class CUDA_EXTERNAL_SEMAPHORE_HANDLE_DESC(CUDA_EXTERNAL_SEMAPHORE_HANDLE_DESC_v1): + """ + External semaphore handle descriptor + + Attributes + ---------- + type : CUexternalSemaphoreHandleType + Type of the handle + handle : anon_union6 + + flags : unsigned int + Flags reserved for the future. Must be zero. + reserved : list[unsigned int] + + + Methods + ------- + getPtr() + Get memory address of class instance + """ + pass + +cdef class CUDA_EXTERNAL_SEMAPHORE_SIGNAL_PARAMS_v1(CUDA_EXTERNAL_SEMAPHORE_SIGNAL_PARAMS_st): + """ + External semaphore signal parameters + + Attributes + ---------- + params : anon_struct16 + + flags : unsigned int + Only when CUDA_EXTERNAL_SEMAPHORE_SIGNAL_PARAMS is used to signal a + CUexternalSemaphore of type + CU_EXTERNAL_SEMAPHORE_HANDLE_TYPE_NVSCISYNC, the valid flag is + CUDA_EXTERNAL_SEMAPHORE_SIGNAL_SKIP_NVSCIBUF_MEMSYNC which + indicates that while signaling the CUexternalSemaphore, no memory + synchronization operations should be performed for any external + memory object imported as CU_EXTERNAL_MEMORY_HANDLE_TYPE_NVSCIBUF. + For all other types of CUexternalSemaphore, flags must be zero. + reserved : list[unsigned int] + + + Methods + ------- + getPtr() + Get memory address of class instance + """ + pass + +cdef class CUDA_EXTERNAL_SEMAPHORE_SIGNAL_PARAMS(CUDA_EXTERNAL_SEMAPHORE_SIGNAL_PARAMS_v1): + """ + External semaphore signal parameters + + Attributes + ---------- + params : anon_struct16 + + flags : unsigned int + Only when CUDA_EXTERNAL_SEMAPHORE_SIGNAL_PARAMS is used to signal a + CUexternalSemaphore of type + CU_EXTERNAL_SEMAPHORE_HANDLE_TYPE_NVSCISYNC, the valid flag is + CUDA_EXTERNAL_SEMAPHORE_SIGNAL_SKIP_NVSCIBUF_MEMSYNC which + indicates that while signaling the CUexternalSemaphore, no memory + synchronization operations should be performed for any external + memory object imported as CU_EXTERNAL_MEMORY_HANDLE_TYPE_NVSCIBUF. + For all other types of CUexternalSemaphore, flags must be zero. + reserved : list[unsigned int] + + + Methods + ------- + getPtr() + Get memory address of class instance + """ + pass + +cdef class CUDA_EXTERNAL_SEMAPHORE_WAIT_PARAMS_v1(CUDA_EXTERNAL_SEMAPHORE_WAIT_PARAMS_st): + """ + External semaphore wait parameters + + Attributes + ---------- + params : anon_struct19 + + flags : unsigned int + Only when CUDA_EXTERNAL_SEMAPHORE_WAIT_PARAMS is used to wait on a + CUexternalSemaphore of type + CU_EXTERNAL_SEMAPHORE_HANDLE_TYPE_NVSCISYNC, the valid flag is + CUDA_EXTERNAL_SEMAPHORE_WAIT_SKIP_NVSCIBUF_MEMSYNC which indicates + that while waiting for the CUexternalSemaphore, no memory + synchronization operations should be performed for any external + memory object imported as CU_EXTERNAL_MEMORY_HANDLE_TYPE_NVSCIBUF. + For all other types of CUexternalSemaphore, flags must be zero. + reserved : list[unsigned int] + + + Methods + ------- + getPtr() + Get memory address of class instance + """ + pass + +cdef class CUDA_EXTERNAL_SEMAPHORE_WAIT_PARAMS(CUDA_EXTERNAL_SEMAPHORE_WAIT_PARAMS_v1): + """ + External semaphore wait parameters + + Attributes + ---------- + params : anon_struct19 + + flags : unsigned int + Only when CUDA_EXTERNAL_SEMAPHORE_WAIT_PARAMS is used to wait on a + CUexternalSemaphore of type + CU_EXTERNAL_SEMAPHORE_HANDLE_TYPE_NVSCISYNC, the valid flag is + CUDA_EXTERNAL_SEMAPHORE_WAIT_SKIP_NVSCIBUF_MEMSYNC which indicates + that while waiting for the CUexternalSemaphore, no memory + synchronization operations should be performed for any external + memory object imported as CU_EXTERNAL_MEMORY_HANDLE_TYPE_NVSCIBUF. + For all other types of CUexternalSemaphore, flags must be zero. + reserved : list[unsigned int] + + + Methods + ------- + getPtr() + Get memory address of class instance + """ + pass + +cdef class CUDA_EXT_SEM_SIGNAL_NODE_PARAMS_v1(CUDA_EXT_SEM_SIGNAL_NODE_PARAMS_st): + """ + Semaphore signal node parameters + + Attributes + ---------- + extSemArray : CUexternalSemaphore + Array of external semaphore handles. + paramsArray : CUDA_EXTERNAL_SEMAPHORE_SIGNAL_PARAMS + Array of external semaphore signal parameters. + numExtSems : unsigned int + Number of handles and parameters supplied in extSemArray and + paramsArray. + + Methods + ------- + getPtr() + Get memory address of class instance + """ + pass + +cdef class CUDA_EXT_SEM_SIGNAL_NODE_PARAMS(CUDA_EXT_SEM_SIGNAL_NODE_PARAMS_v1): + """ + Semaphore signal node parameters + + Attributes + ---------- + extSemArray : CUexternalSemaphore + Array of external semaphore handles. + paramsArray : CUDA_EXTERNAL_SEMAPHORE_SIGNAL_PARAMS + Array of external semaphore signal parameters. + numExtSems : unsigned int + Number of handles and parameters supplied in extSemArray and + paramsArray. + + Methods + ------- + getPtr() + Get memory address of class instance + """ + pass + +cdef class CUDA_EXT_SEM_SIGNAL_NODE_PARAMS_v2(CUDA_EXT_SEM_SIGNAL_NODE_PARAMS_v2_st): + """ + Semaphore signal node parameters + + Attributes + ---------- + extSemArray : CUexternalSemaphore + Array of external semaphore handles. + paramsArray : CUDA_EXTERNAL_SEMAPHORE_SIGNAL_PARAMS + Array of external semaphore signal parameters. + numExtSems : unsigned int + Number of handles and parameters supplied in extSemArray and + paramsArray. + + Methods + ------- + getPtr() + Get memory address of class instance + """ + pass + +cdef class CUDA_EXT_SEM_WAIT_NODE_PARAMS_v1(CUDA_EXT_SEM_WAIT_NODE_PARAMS_st): + """ + Semaphore wait node parameters + + Attributes + ---------- + extSemArray : CUexternalSemaphore + Array of external semaphore handles. + paramsArray : CUDA_EXTERNAL_SEMAPHORE_WAIT_PARAMS + Array of external semaphore wait parameters. + numExtSems : unsigned int + Number of handles and parameters supplied in extSemArray and + paramsArray. + + Methods + ------- + getPtr() + Get memory address of class instance + """ + pass + +cdef class CUDA_EXT_SEM_WAIT_NODE_PARAMS(CUDA_EXT_SEM_WAIT_NODE_PARAMS_v1): + """ + Semaphore wait node parameters + + Attributes + ---------- + extSemArray : CUexternalSemaphore + Array of external semaphore handles. + paramsArray : CUDA_EXTERNAL_SEMAPHORE_WAIT_PARAMS + Array of external semaphore wait parameters. + numExtSems : unsigned int + Number of handles and parameters supplied in extSemArray and + paramsArray. + + Methods + ------- + getPtr() + Get memory address of class instance + """ + pass + +cdef class CUDA_EXT_SEM_WAIT_NODE_PARAMS_v2(CUDA_EXT_SEM_WAIT_NODE_PARAMS_v2_st): + """ + Semaphore wait node parameters + + Attributes + ---------- + extSemArray : CUexternalSemaphore + Array of external semaphore handles. + paramsArray : CUDA_EXTERNAL_SEMAPHORE_WAIT_PARAMS + Array of external semaphore wait parameters. + numExtSems : unsigned int + Number of handles and parameters supplied in extSemArray and + paramsArray. + + Methods + ------- + getPtr() + Get memory address of class instance + """ + pass + +cdef class CUmemGenericAllocationHandle: + """ + + Methods + ------- + getPtr() + Get memory address of class instance + + """ + cdef cydriver.CUmemGenericAllocationHandle _pvt_val + cdef cydriver.CUmemGenericAllocationHandle* _pvt_ptr + +cdef class CUarrayMapInfo_v1(CUarrayMapInfo_st): + """ + Specifies the CUDA array or CUDA mipmapped array memory mapping + information + + Attributes + ---------- + resourceType : CUresourcetype + Resource type + resource : anon_union9 + + subresourceType : CUarraySparseSubresourceType + Sparse subresource type + subresource : anon_union10 + + memOperationType : CUmemOperationType + Memory operation type + memHandleType : CUmemHandleType + Memory handle type + memHandle : anon_union11 + + offset : unsigned long long + Offset within mip tail Offset within the memory + deviceBitMask : unsigned int + Device ordinal bit mask + flags : unsigned int + flags for future use, must be zero now. + reserved : list[unsigned int] + Reserved for future use, must be zero now. + + Methods + ------- + getPtr() + Get memory address of class instance + """ + pass + +cdef class CUarrayMapInfo(CUarrayMapInfo_v1): + """ + Specifies the CUDA array or CUDA mipmapped array memory mapping + information + + Attributes + ---------- + resourceType : CUresourcetype + Resource type + resource : anon_union9 + + subresourceType : CUarraySparseSubresourceType + Sparse subresource type + subresource : anon_union10 + + memOperationType : CUmemOperationType + Memory operation type + memHandleType : CUmemHandleType + Memory handle type + memHandle : anon_union11 + + offset : unsigned long long + Offset within mip tail Offset within the memory + deviceBitMask : unsigned int + Device ordinal bit mask + flags : unsigned int + flags for future use, must be zero now. + reserved : list[unsigned int] + Reserved for future use, must be zero now. + + Methods + ------- + getPtr() + Get memory address of class instance + """ + pass + +cdef class CUmemLocation_v1(CUmemLocation_st): + """ + Specifies a memory location. + + Attributes + ---------- + type : CUmemLocationType + Specifies the location type, which modifies the meaning of id. + id : int + Identifier for CUmemLocationType::CU_MEM_LOCATION_TYPE_DEVICE, + CUmemLocationType::CU_MEM_LOCATION_TYPE_HOST, + CUmemLocationType::CU_MEM_LOCATION_TYPE_HOST_NUMA. + + Methods + ------- + getPtr() + Get memory address of class instance + """ + pass + +cdef class CUmemLocation(CUmemLocation_v1): + """ + Specifies a memory location. + + Attributes + ---------- + type : CUmemLocationType + Specifies the location type, which modifies the meaning of id. + id : int + Identifier for CUmemLocationType::CU_MEM_LOCATION_TYPE_DEVICE, + CUmemLocationType::CU_MEM_LOCATION_TYPE_HOST, + CUmemLocationType::CU_MEM_LOCATION_TYPE_HOST_NUMA. + + Methods + ------- + getPtr() + Get memory address of class instance + """ + pass + +cdef class CUmemAllocationProp_v1(CUmemAllocationProp_st): + """ + Specifies the allocation properties for a allocation. + + Attributes + ---------- + type : CUmemAllocationType + Allocation type + requestedHandleTypes : CUmemAllocationHandleType + requested CUmemAllocationHandleType + location : CUmemLocation + Location of allocation + win32HandleMetaData : Any + Windows-specific POBJECT_ATTRIBUTES required when + CU_MEM_HANDLE_TYPE_WIN32 is specified. This object attributes + structure includes security attributes that define the scope of + which exported allocations may be transferred to other processes. + In all other cases, this field is required to be zero. + allocFlags : anon_struct22 + + + Methods + ------- + getPtr() + Get memory address of class instance + """ + pass + +cdef class CUmemAllocationProp(CUmemAllocationProp_v1): + """ + Specifies the allocation properties for a allocation. + + Attributes + ---------- + type : CUmemAllocationType + Allocation type + requestedHandleTypes : CUmemAllocationHandleType + requested CUmemAllocationHandleType + location : CUmemLocation + Location of allocation + win32HandleMetaData : Any + Windows-specific POBJECT_ATTRIBUTES required when + CU_MEM_HANDLE_TYPE_WIN32 is specified. This object attributes + structure includes security attributes that define the scope of + which exported allocations may be transferred to other processes. + In all other cases, this field is required to be zero. + allocFlags : anon_struct22 + + + Methods + ------- + getPtr() + Get memory address of class instance + """ + pass + +cdef class CUmulticastObjectProp_v1(CUmulticastObjectProp_st): + """ + Specifies the properties for a multicast object. + + Attributes + ---------- + numDevices : unsigned int + The number of devices in the multicast team that will bind memory + to this object + size : size_t + The maximum amount of memory that can be bound to this multicast + object per device + handleTypes : unsigned long long + Bitmask of exportable handle types (see CUmemAllocationHandleType) + for this object + flags : unsigned long long + Flags for future use, must be zero now + + Methods + ------- + getPtr() + Get memory address of class instance + """ + pass + +cdef class CUmulticastObjectProp(CUmulticastObjectProp_v1): + """ + Specifies the properties for a multicast object. + + Attributes + ---------- + numDevices : unsigned int + The number of devices in the multicast team that will bind memory + to this object + size : size_t + The maximum amount of memory that can be bound to this multicast + object per device + handleTypes : unsigned long long + Bitmask of exportable handle types (see CUmemAllocationHandleType) + for this object + flags : unsigned long long + Flags for future use, must be zero now + + Methods + ------- + getPtr() + Get memory address of class instance + """ + pass + +cdef class CUmemAccessDesc_v1(CUmemAccessDesc_st): + """ + Memory access descriptor + + Attributes + ---------- + location : CUmemLocation + Location on which the request is to change it's accessibility + flags : CUmemAccess_flags + ::CUmemProt accessibility flags to set on the request + + Methods + ------- + getPtr() + Get memory address of class instance + """ + pass + +cdef class CUmemAccessDesc(CUmemAccessDesc_v1): + """ + Memory access descriptor + + Attributes + ---------- + location : CUmemLocation + Location on which the request is to change it's accessibility + flags : CUmemAccess_flags + ::CUmemProt accessibility flags to set on the request + + Methods + ------- + getPtr() + Get memory address of class instance + """ + pass + +cdef class CUgraphExecUpdateResultInfo_v1(CUgraphExecUpdateResultInfo_st): + """ + Result information returned by cuGraphExecUpdate + + Attributes + ---------- + result : CUgraphExecUpdateResult + Gives more specific detail when a cuda graph update fails. + errorNode : CUgraphNode + The "to node" of the error edge when the topologies do not match. + The error node when the error is associated with a specific node. + NULL when the error is generic. + errorFromNode : CUgraphNode + The from node of error edge when the topologies do not match. + Otherwise NULL. + + Methods + ------- + getPtr() + Get memory address of class instance + """ + pass + +cdef class CUgraphExecUpdateResultInfo(CUgraphExecUpdateResultInfo_v1): + """ + Result information returned by cuGraphExecUpdate + + Attributes + ---------- + result : CUgraphExecUpdateResult + Gives more specific detail when a cuda graph update fails. + errorNode : CUgraphNode + The "to node" of the error edge when the topologies do not match. + The error node when the error is associated with a specific node. + NULL when the error is generic. + errorFromNode : CUgraphNode + The from node of error edge when the topologies do not match. + Otherwise NULL. + + Methods + ------- + getPtr() + Get memory address of class instance + """ + pass + +cdef class CUmemPoolProps_v1(CUmemPoolProps_st): + """ + Specifies the properties of allocations made from the pool. + + Attributes + ---------- + allocType : CUmemAllocationType + Allocation type. Currently must be specified as + CU_MEM_ALLOCATION_TYPE_PINNED + handleTypes : CUmemAllocationHandleType + Handle types that will be supported by allocations from the pool. + location : CUmemLocation + Location where allocations should reside. + win32SecurityAttributes : Any + Windows-specific LPSECURITYATTRIBUTES required when + CU_MEM_HANDLE_TYPE_WIN32 is specified. This security attribute + defines the scope of which exported allocations may be transferred + to other processes. In all other cases, this field is required to + be zero. + maxSize : size_t + Maximum pool size. When set to 0, defaults to a system dependent + value. + usage : unsigned short + Bitmask indicating intended usage for the pool. + reserved : bytes + reserved for future use, must be 0 + + Methods + ------- + getPtr() + Get memory address of class instance + """ + pass + +cdef class CUmemPoolProps(CUmemPoolProps_v1): + """ + Specifies the properties of allocations made from the pool. + + Attributes + ---------- + allocType : CUmemAllocationType + Allocation type. Currently must be specified as + CU_MEM_ALLOCATION_TYPE_PINNED + handleTypes : CUmemAllocationHandleType + Handle types that will be supported by allocations from the pool. + location : CUmemLocation + Location where allocations should reside. + win32SecurityAttributes : Any + Windows-specific LPSECURITYATTRIBUTES required when + CU_MEM_HANDLE_TYPE_WIN32 is specified. This security attribute + defines the scope of which exported allocations may be transferred + to other processes. In all other cases, this field is required to + be zero. + maxSize : size_t + Maximum pool size. When set to 0, defaults to a system dependent + value. + usage : unsigned short + Bitmask indicating intended usage for the pool. + reserved : bytes + reserved for future use, must be 0 + + Methods + ------- + getPtr() + Get memory address of class instance + """ + pass + +cdef class CUmemPoolPtrExportData_v1(CUmemPoolPtrExportData_st): + """ + Opaque data for exporting a pool allocation + + Attributes + ---------- + reserved : bytes + + + Methods + ------- + getPtr() + Get memory address of class instance + """ + pass + +cdef class CUmemPoolPtrExportData(CUmemPoolPtrExportData_v1): + """ + Opaque data for exporting a pool allocation + + Attributes + ---------- + reserved : bytes + + + Methods + ------- + getPtr() + Get memory address of class instance + """ + pass + +cdef class CUmemcpyAttributes_v1(CUmemcpyAttributes_st): + """ + Attributes specific to copies within a batch. For more details on + usage see cuMemcpyBatchAsync. + + Attributes + ---------- + srcAccessOrder : CUmemcpySrcAccessOrder + Source access ordering to be observed for copies with this + attribute. + srcLocHint : CUmemLocation + Hint location for the source operand. Ignored when the pointers are + not managed memory or memory allocated outside CUDA. + dstLocHint : CUmemLocation + Hint location for the destination operand. Ignored when the + pointers are not managed memory or memory allocated outside CUDA. + flags : unsigned int + Additional flags for copies with this attribute. See CUmemcpyFlags + + Methods + ------- + getPtr() + Get memory address of class instance + """ + pass + +cdef class CUmemcpyAttributes(CUmemcpyAttributes_v1): + """ + Attributes specific to copies within a batch. For more details on + usage see cuMemcpyBatchAsync. + + Attributes + ---------- + srcAccessOrder : CUmemcpySrcAccessOrder + Source access ordering to be observed for copies with this + attribute. + srcLocHint : CUmemLocation + Hint location for the source operand. Ignored when the pointers are + not managed memory or memory allocated outside CUDA. + dstLocHint : CUmemLocation + Hint location for the destination operand. Ignored when the + pointers are not managed memory or memory allocated outside CUDA. + flags : unsigned int + Additional flags for copies with this attribute. See CUmemcpyFlags + + Methods + ------- + getPtr() + Get memory address of class instance + """ + pass + +cdef class CUoffset3D_v1(CUoffset3D_st): + """ + Struct representing a 3D offset + + Attributes + ---------- + x : size_t + + y : size_t + + z : size_t + + + Methods + ------- + getPtr() + Get memory address of class instance + """ + pass + +cdef class CUoffset3D(CUoffset3D_v1): + """ + Struct representing a 3D offset + + Attributes + ---------- + x : size_t + + y : size_t + + z : size_t + + + Methods + ------- + getPtr() + Get memory address of class instance + """ + pass + +cdef class CUextent3D_v1(CUextent3D_st): + """ + Struct representing width/height/depth of a CUarray in elements + + Attributes + ---------- + width : size_t + + height : size_t + + depth : size_t + + + Methods + ------- + getPtr() + Get memory address of class instance + """ + pass + +cdef class CUextent3D(CUextent3D_v1): + """ + Struct representing width/height/depth of a CUarray in elements + + Attributes + ---------- + width : size_t + + height : size_t + + depth : size_t + + + Methods + ------- + getPtr() + Get memory address of class instance + """ + pass + +cdef class CUmemcpy3DOperand_v1(CUmemcpy3DOperand_st): + """ + Struct representing an operand for copy with cuMemcpy3DBatchAsync + + Attributes + ---------- + type : CUmemcpy3DOperandType + + op : anon_union13 + + + Methods + ------- + getPtr() + Get memory address of class instance + """ + pass + +cdef class CUmemcpy3DOperand(CUmemcpy3DOperand_v1): + """ + Struct representing an operand for copy with cuMemcpy3DBatchAsync + + Attributes + ---------- + type : CUmemcpy3DOperandType + + op : anon_union13 + + + Methods + ------- + getPtr() + Get memory address of class instance + """ + pass + +cdef class CUDA_MEMCPY3D_BATCH_OP_v1(CUDA_MEMCPY3D_BATCH_OP_st): + """ + Attributes + ---------- + src : CUmemcpy3DOperand + Source memcpy operand. + dst : CUmemcpy3DOperand + Destination memcpy operand. + extent : CUextent3D + Extents of the memcpy between src and dst. The width, height and + depth components must not be 0. + srcAccessOrder : CUmemcpySrcAccessOrder + Source access ordering to be observed for copy from src to dst. + flags : unsigned int + Additional flags for copies with this attribute. See CUmemcpyFlags + + Methods + ------- + getPtr() + Get memory address of class instance + """ + pass + +cdef class CUDA_MEMCPY3D_BATCH_OP(CUDA_MEMCPY3D_BATCH_OP_v1): + """ + Attributes + ---------- + src : CUmemcpy3DOperand + Source memcpy operand. + dst : CUmemcpy3DOperand + Destination memcpy operand. + extent : CUextent3D + Extents of the memcpy between src and dst. The width, height and + depth components must not be 0. + srcAccessOrder : CUmemcpySrcAccessOrder + Source access ordering to be observed for copy from src to dst. + flags : unsigned int + Additional flags for copies with this attribute. See CUmemcpyFlags + + Methods + ------- + getPtr() + Get memory address of class instance + """ + pass + +cdef class CUDA_MEM_ALLOC_NODE_PARAMS_v1(CUDA_MEM_ALLOC_NODE_PARAMS_v1_st): + """ + Memory allocation node parameters + + Attributes + ---------- + poolProps : CUmemPoolProps + in: location where the allocation should reside (specified in + ::location). ::handleTypes must be CU_MEM_HANDLE_TYPE_NONE. IPC is + not supported. + accessDescs : CUmemAccessDesc + in: array of memory access descriptors. Used to describe peer GPU + access + accessDescCount : size_t + in: number of memory access descriptors. Must not exceed the number + of GPUs. + bytesize : size_t + in: size in bytes of the requested allocation + dptr : CUdeviceptr + out: address of the allocation returned by CUDA + + Methods + ------- + getPtr() + Get memory address of class instance + """ + pass + +cdef class CUDA_MEM_ALLOC_NODE_PARAMS(CUDA_MEM_ALLOC_NODE_PARAMS_v1): + """ + Memory allocation node parameters + + Attributes + ---------- + poolProps : CUmemPoolProps + in: location where the allocation should reside (specified in + ::location). ::handleTypes must be CU_MEM_HANDLE_TYPE_NONE. IPC is + not supported. + accessDescs : CUmemAccessDesc + in: array of memory access descriptors. Used to describe peer GPU + access + accessDescCount : size_t + in: number of memory access descriptors. Must not exceed the number + of GPUs. + bytesize : size_t + in: size in bytes of the requested allocation + dptr : CUdeviceptr + out: address of the allocation returned by CUDA + + Methods + ------- + getPtr() + Get memory address of class instance + """ + pass + +cdef class CUDA_MEM_ALLOC_NODE_PARAMS_v2(CUDA_MEM_ALLOC_NODE_PARAMS_v2_st): + """ + Memory allocation node parameters + + Attributes + ---------- + poolProps : CUmemPoolProps + in: location where the allocation should reside (specified in + ::location). ::handleTypes must be CU_MEM_HANDLE_TYPE_NONE. IPC is + not supported. + accessDescs : CUmemAccessDesc + in: array of memory access descriptors. Used to describe peer GPU + access + accessDescCount : size_t + in: number of memory access descriptors. Must not exceed the number + of GPUs. + bytesize : size_t + in: size in bytes of the requested allocation + dptr : CUdeviceptr + out: address of the allocation returned by CUDA + + Methods + ------- + getPtr() + Get memory address of class instance + """ + pass + +cdef class CUDA_MEM_FREE_NODE_PARAMS(CUDA_MEM_FREE_NODE_PARAMS_st): + """ + Memory free node parameters + + Attributes + ---------- + dptr : CUdeviceptr + in: the pointer to free + + Methods + ------- + getPtr() + Get memory address of class instance + """ + pass + +cdef class CUDA_CHILD_GRAPH_NODE_PARAMS(CUDA_CHILD_GRAPH_NODE_PARAMS_st): + """ + Child graph node parameters + + Attributes + ---------- + graph : CUgraph + The child graph to clone into the node for node creation, or a + handle to the graph owned by the node for node query. The graph + must not contain conditional nodes. Graphs containing memory + allocation or memory free nodes must set the ownership to be moved + to the parent. + ownership : CUgraphChildGraphNodeOwnership + The ownership relationship of the child graph node. + + Methods + ------- + getPtr() + Get memory address of class instance + """ + pass + +cdef class CUDA_EVENT_RECORD_NODE_PARAMS(CUDA_EVENT_RECORD_NODE_PARAMS_st): + """ + Event record node parameters + + Attributes + ---------- + event : CUevent + The event to record when the node executes + + Methods + ------- + getPtr() + Get memory address of class instance + """ + pass + +cdef class CUDA_EVENT_WAIT_NODE_PARAMS(CUDA_EVENT_WAIT_NODE_PARAMS_st): + """ + Event wait node parameters + + Attributes + ---------- + event : CUevent + The event to wait on from the node + + Methods + ------- + getPtr() + Get memory address of class instance + """ + pass + +cdef class CUgraphNodeParams(CUgraphNodeParams_st): + """ + Graph node parameters. See cuGraphAddNode. + + Attributes + ---------- + type : CUgraphNodeType + Type of the node + reserved0 : list[int] + Reserved. Must be zero. + reserved1 : list[long long] + Padding. Unused bytes must be zero. + kernel : CUDA_KERNEL_NODE_PARAMS_v3 + Kernel node parameters. + memcpy : CUDA_MEMCPY_NODE_PARAMS + Memcpy node parameters. + memset : CUDA_MEMSET_NODE_PARAMS_v2 + Memset node parameters. + host : CUDA_HOST_NODE_PARAMS_v2 + Host node parameters. + graph : CUDA_CHILD_GRAPH_NODE_PARAMS + Child graph node parameters. + eventWait : CUDA_EVENT_WAIT_NODE_PARAMS + Event wait node parameters. + eventRecord : CUDA_EVENT_RECORD_NODE_PARAMS + Event record node parameters. + extSemSignal : CUDA_EXT_SEM_SIGNAL_NODE_PARAMS_v2 + External semaphore signal node parameters. + extSemWait : CUDA_EXT_SEM_WAIT_NODE_PARAMS_v2 + External semaphore wait node parameters. + alloc : CUDA_MEM_ALLOC_NODE_PARAMS_v2 + Memory allocation node parameters. + free : CUDA_MEM_FREE_NODE_PARAMS + Memory free node parameters. + memOp : CUDA_BATCH_MEM_OP_NODE_PARAMS_v2 + MemOp node parameters. + conditional : CUDA_CONDITIONAL_NODE_PARAMS + Conditional node parameters. + asBytes : bytes + Padding as bytes + reserved2 : long long + Reserved bytes. Must be zero. + + Methods + ------- + getPtr() + Get memory address of class instance + """ + pass + +cdef class CUcheckpointLockArgs(CUcheckpointLockArgs_st): + """ + CUDA checkpoint optional lock arguments + + Attributes + ---------- + timeoutMs : unsigned int + Timeout in milliseconds to attempt to lock the process, 0 indicates + no timeout + reserved0 : unsigned int + Reserved for future use, must be zero + reserved1 : list[cuuint64_t] + Reserved for future use, must be zeroed + + Methods + ------- + getPtr() + Get memory address of class instance + """ + pass + +cdef class CUcheckpointCheckpointArgs(CUcheckpointCheckpointArgs_st): + """ + CUDA checkpoint optional checkpoint arguments + + Attributes + ---------- + reserved : list[cuuint64_t] + Reserved for future use, must be zeroed + + Methods + ------- + getPtr() + Get memory address of class instance + """ + pass + +cdef class CUcheckpointGpuPair(CUcheckpointGpuPair_st): + """ + CUDA checkpoint GPU UUID pairs for device remapping during restore + + Attributes + ---------- + oldUuid : CUuuid + UUID of the GPU that was checkpointed + newUuid : CUuuid + UUID of the GPU to restore onto + + Methods + ------- + getPtr() + Get memory address of class instance + """ + pass + +cdef class CUcheckpointRestoreArgs(CUcheckpointRestoreArgs_st): + """ + CUDA checkpoint optional restore arguments + + Attributes + ---------- + gpuPairs : CUcheckpointGpuPair + Pointer to array of gpu pairs that indicate how to remap GPUs + during restore + gpuPairsCount : unsigned int + Number of gpu pairs to remap + reserved : bytes + Reserved for future use, must be zeroed + + Methods + ------- + getPtr() + Get memory address of class instance + """ + pass + +cdef class CUcheckpointUnlockArgs(CUcheckpointUnlockArgs_st): + """ + CUDA checkpoint optional unlock arguments + + Attributes + ---------- + reserved : list[cuuint64_t] + Reserved for future use, must be zeroed + + Methods + ------- + getPtr() + Get memory address of class instance + """ + pass + +cdef class CUmemDecompressParams(CUmemDecompressParams_st): + """ + Structure describing the parameters that compose a single + decompression operation. + + Attributes + ---------- + srcNumBytes : size_t + The number of bytes to be read and decompressed from + CUmemDecompressParams_st.src. + dstNumBytes : size_t + The number of bytes that the decompression operation will be + expected to write to CUmemDecompressParams_st.dst. This value is + optional; if present, it may be used by the CUDA driver as a + heuristic for scheduling the individual decompression operations. + dstActBytes : cuuint32_t + After the decompression operation has completed, the actual number + of bytes written to CUmemDecompressParams.dst will be recorded as a + 32-bit unsigned integer in the memory at this address. + src : Any + Pointer to a buffer of at least + CUmemDecompressParams_st.srcNumBytes compressed bytes. + dst : Any + Pointer to a buffer where the decompressed data will be written. + The number of bytes written to this location will be recorded in + the memory pointed to by CUmemDecompressParams_st.dstActBytes + algo : CUmemDecompressAlgorithm + The decompression algorithm to use. + padding : bytes + + + Methods + ------- + getPtr() + Get memory address of class instance + """ + pass + +cdef class CUlogicalEndpointId: + """ + + Methods + ------- + getPtr() + Get memory address of class instance + + """ + cdef cydriver.CUlogicalEndpointId _pvt_val + cdef cydriver.CUlogicalEndpointId* _pvt_ptr + +cdef class CUlogicalEndpointFabricHandle(CUlogicalEndpointFabricHandle_st): + """ + Fabric handle for a logical endpoint + + Attributes + ---------- + data : bytes + + + Methods + ------- + getPtr() + Get memory address of class instance + """ + pass + +cdef class CUlogicalEndpointProp(CUlogicalEndpointProp_struct): + """ + Properties of a logical endpoint construction + + Attributes + ---------- + type : CUlogicalEndpointType + Type of the logical endpoint defined in CUlogicalEndpointType + unicast : anon_struct25 + + multicast : anon_struct26 + + size : unsigned long long + Size of the logical endpoint + ipcHandleTypes : unsigned int + A bitmask of IPC handle types defined in + CUlogicalEndpointIpcHandleType + flags : unsigned int + A bitmask of flags defined in CUlogicalEndpointFlag + + Methods + ------- + getPtr() + Get memory address of class instance + """ + pass + +cdef class CUdevSmResource(CUdevSmResource_st): + """ + Attributes + ---------- + smCount : unsigned int + The amount of streaming multiprocessors available in this resource. + minSmPartitionSize : unsigned int + The minimum number of streaming multiprocessors required to + partition this resource. + smCoscheduledAlignment : unsigned int + The number of streaming multiprocessors in this resource that are + guaranteed to be co-scheduled on the same GPU processing cluster. + smCount will be a multiple of this value, unless the backfill flag + is set. + flags : unsigned int + The flags set on this SM resource. For possible values see + CUdevSmResourceGroup_flags. + + Methods + ------- + getPtr() + Get memory address of class instance + """ + pass + +cdef class CUdevWorkqueueConfigResource(CUdevWorkqueueConfigResource_st): + """ + Attributes + ---------- + device : CUdevice + The device on which the workqueue resources are available + wqConcurrencyLimit : unsigned int + The expected maximum number of concurrent stream-ordered workloads + sharingScope : CUdevWorkqueueConfigScope + The sharing scope for the workqueue resources + + Methods + ------- + getPtr() + Get memory address of class instance + """ + pass + +cdef class CUdevWorkqueueResource(CUdevWorkqueueResource_st): + """ + Attributes + ---------- + reserved : bytes + Reserved for future use + + Methods + ------- + getPtr() + Get memory address of class instance + """ + pass + +cdef class CU_DEV_SM_RESOURCE_GROUP_PARAMS(CU_DEV_SM_RESOURCE_GROUP_PARAMS_st): + """ + Attributes + ---------- + smCount : unsigned int + The amount of SMs available in this resource. + coscheduledSmCount : unsigned int + The amount of co-scheduled SMs grouped together for locality + purposes. + preferredCoscheduledSmCount : unsigned int + When possible, combine co-scheduled groups together into larger + groups of this size. + flags : unsigned int + The flags set on this SM resource group. For possible values see + CUdevSmResourceGroup_flags. + reserved : list[unsigned int] + + + Methods + ------- + getPtr() + Get memory address of class instance + """ + pass + +cdef class CUdevResource_v1(CUdevResource_st): + """ + Attributes + ---------- + type : CUdevResourceType + Type of resource, dictates which union field was last set + _internal_padding : bytes + + sm : CUdevSmResource + Resource corresponding to CU_DEV_RESOURCE_TYPE_SM `typename`. + wqConfig : CUdevWorkqueueConfigResource + Resource corresponding to CU_DEV_RESOURCE_TYPE_WORKQUEUE_CONFIG + `typename`. + wq : CUdevWorkqueueResource + Resource corresponding to CU_DEV_RESOURCE_TYPE_WORKQUEUE + `typename`. + _oversize : bytes + + nextResource : CUdevResource_st + + + Methods + ------- + getPtr() + Get memory address of class instance + """ + pass + +cdef class CUdevResource(CUdevResource_v1): + """ + Attributes + ---------- + type : CUdevResourceType + Type of resource, dictates which union field was last set + _internal_padding : bytes + + sm : CUdevSmResource + Resource corresponding to CU_DEV_RESOURCE_TYPE_SM `typename`. + wqConfig : CUdevWorkqueueConfigResource + Resource corresponding to CU_DEV_RESOURCE_TYPE_WORKQUEUE_CONFIG + `typename`. + wq : CUdevWorkqueueResource + Resource corresponding to CU_DEV_RESOURCE_TYPE_WORKQUEUE + `typename`. + _oversize : bytes + + nextResource : CUdevResource_st + + + Methods + ------- + getPtr() + Get memory address of class instance + """ + pass + +cdef class CUeglFrame_v1(CUeglFrame_st): + """ + CUDA EGLFrame structure Descriptor - structure defining one frame + of EGL. Each frame may contain one or more planes depending on + whether the surface * is Multiplanar or not. + + Attributes + ---------- + frame : anon_union17 + + width : unsigned int + Width of first plane + height : unsigned int + Height of first plane + depth : unsigned int + Depth of first plane + pitch : unsigned int + Pitch of first plane + planeCount : unsigned int + Number of planes + numChannels : unsigned int + Number of channels for the plane + frameType : CUeglFrameType + Array or Pitch + eglColorFormat : CUeglColorFormat + CUDA EGL Color Format + cuFormat : CUarray_format + CUDA Array Format + + Methods + ------- + getPtr() + Get memory address of class instance + """ + pass + +cdef class CUeglFrame(CUeglFrame_v1): + """ + CUDA EGLFrame structure Descriptor - structure defining one frame + of EGL. Each frame may contain one or more planes depending on + whether the surface * is Multiplanar or not. + + Attributes + ---------- + frame : anon_union17 + + width : unsigned int + Width of first plane + height : unsigned int + Height of first plane + depth : unsigned int + Depth of first plane + pitch : unsigned int + Pitch of first plane + planeCount : unsigned int + Number of planes + numChannels : unsigned int + Number of channels for the plane + frameType : CUeglFrameType + Array or Pitch + eglColorFormat : CUeglColorFormat + CUDA EGL Color Format + cuFormat : CUarray_format + CUDA Array Format + + Methods + ------- + getPtr() + Get memory address of class instance + """ + pass + +cdef class cuuint32_t: + """ + + Methods + ------- + getPtr() + Get memory address of class instance + + """ + cdef cydriver.cuuint32_t _pvt_val + cdef cydriver.cuuint32_t* _pvt_ptr + +cdef class cuuint64_t: + """ + + Methods + ------- + getPtr() + Get memory address of class instance + + """ + cdef cydriver.cuuint64_t _pvt_val + cdef cydriver.cuuint64_t* _pvt_ptr + +cdef class CUdeviceptr_v2: + """ + + CUDA device pointer CUdeviceptr is defined as an unsigned integer type whose size matches the size of a pointer on the target platform. + + Methods + ------- + getPtr() + Get memory address of class instance + + """ + cdef cydriver.CUdeviceptr_v2 _pvt_val + cdef cydriver.CUdeviceptr_v2* _pvt_ptr + +cdef class CUdevice_v1: + """ + + CUDA device + + Methods + ------- + getPtr() + Get memory address of class instance + + """ + cdef cydriver.CUdevice_v1 _pvt_val + cdef cydriver.CUdevice_v1* _pvt_ptr + +cdef class CUtexObject_v1: + """ + + An opaque value that represents a CUDA texture object + + Methods + ------- + getPtr() + Get memory address of class instance + + """ + cdef cydriver.CUtexObject_v1 _pvt_val + cdef cydriver.CUtexObject_v1* _pvt_ptr + +cdef class CUsurfObject_v1: + """ + + An opaque value that represents a CUDA surface object + + Methods + ------- + getPtr() + Get memory address of class instance + + """ + cdef cydriver.CUsurfObject_v1 _pvt_val + cdef cydriver.CUsurfObject_v1* _pvt_ptr + +cdef class CUmemGenericAllocationHandle_v1: + """ + + Methods + ------- + getPtr() + Get memory address of class instance + + """ + cdef cydriver.CUmemGenericAllocationHandle_v1 _pvt_val + cdef cydriver.CUmemGenericAllocationHandle_v1* _pvt_ptr + +cdef class CUlogIterator: + """ + + Methods + ------- + getPtr() + Get memory address of class instance + + """ + cdef cydriver.CUlogIterator _pvt_val + cdef cydriver.CUlogIterator* _pvt_ptr + +cdef class GLenum: + """ + + Methods + ------- + getPtr() + Get memory address of class instance + + """ + cdef cydriver.GLenum _pvt_val + cdef cydriver.GLenum* _pvt_ptr + +cdef class GLuint: + """ + + Methods + ------- + getPtr() + Get memory address of class instance + + """ + cdef cydriver.GLuint _pvt_val + cdef cydriver.GLuint* _pvt_ptr + +cdef class EGLint: + """ + + Methods + ------- + getPtr() + Get memory address of class instance + + """ + cdef cydriver.EGLint _pvt_val + cdef cydriver.EGLint* _pvt_ptr + +cdef class VdpDevice: + """ + + Methods + ------- + getPtr() + Get memory address of class instance + + """ + cdef cydriver.VdpDevice _pvt_val + cdef cydriver.VdpDevice* _pvt_ptr + +cdef class VdpGetProcAddress: + """ + + Methods + ------- + getPtr() + Get memory address of class instance + + """ + cdef cydriver.VdpGetProcAddress _pvt_val + cdef cydriver.VdpGetProcAddress* _pvt_ptr + +cdef class VdpVideoSurface: + """ + + Methods + ------- + getPtr() + Get memory address of class instance + + """ + cdef cydriver.VdpVideoSurface _pvt_val + cdef cydriver.VdpVideoSurface* _pvt_ptr + +cdef class VdpOutputSurface: + """ + + Methods + ------- + getPtr() + Get memory address of class instance + + """ + cdef cydriver.VdpOutputSurface _pvt_val + cdef cydriver.VdpOutputSurface* _pvt_ptr diff --git a/venv/lib/python3.11/site-packages/cuda/bindings/nvfatbin.cpython-311-x86_64-linux-gnu.so b/venv/lib/python3.11/site-packages/cuda/bindings/nvfatbin.cpython-311-x86_64-linux-gnu.so new file mode 100644 index 0000000000000000000000000000000000000000..30e81f4467a9be87a54113090ac42c554230657e --- /dev/null +++ b/venv/lib/python3.11/site-packages/cuda/bindings/nvfatbin.cpython-311-x86_64-linux-gnu.so @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:34a647baf674902b593fa645f5b3d2a0017f7ab57f72bc1924530bdd24b65a0b +size 111880 diff --git a/venv/lib/python3.11/site-packages/cuda/bindings/nvfatbin.pxd b/venv/lib/python3.11/site-packages/cuda/bindings/nvfatbin.pxd new file mode 100644 index 0000000000000000000000000000000000000000..2a080b09869396ce8a1d2feba341686c81890741 --- /dev/null +++ b/venv/lib/python3.11/site-packages/cuda/bindings/nvfatbin.pxd @@ -0,0 +1,39 @@ +# SPDX-FileCopyrightText: Copyright (c) 2026 NVIDIA CORPORATION & AFFILIATES. All rights reserved. +# +# SPDX-License-Identifier: LicenseRef-NVIDIA-SOFTWARE-LICENSE +# +# This code was automatically generated across versions from 12.4.1 to 13.3.0, generator version 0.3.1.dev1719+g565f73f4e. Do not modify it directly. + +from libc.stdint cimport intptr_t, uint32_t + +from .cynvfatbin cimport * + + +############################################################################### +# Types +############################################################################### + +ctypedef nvFatbinHandle Handle + + +############################################################################### +# Enum +############################################################################### + +ctypedef nvFatbinResult _Result + + +############################################################################### +# Functions +############################################################################### + +cpdef intptr_t create(options, size_t options_count) except -1 +cpdef add_ptx(intptr_t handle, code, size_t size, arch, identifier, options_cmd_line) +cpdef add_cubin(intptr_t handle, code, size_t size, arch, identifier) +cpdef add_ltoir(intptr_t handle, code, size_t size, arch, identifier, options_cmd_line) +cpdef size_t size(intptr_t handle) except? 0 +cpdef get(intptr_t handle, buffer) +cpdef tuple version() +cpdef add_index(intptr_t handle, code, size_t size, identifier) +cpdef add_reloc(intptr_t handle, code, size_t size) +cpdef add_tile_ir(intptr_t handle, code, size_t size, identifier, options_cmd_line) diff --git a/venv/lib/python3.11/site-packages/cuda/bindings/nvjitlink.cpython-311-x86_64-linux-gnu.so b/venv/lib/python3.11/site-packages/cuda/bindings/nvjitlink.cpython-311-x86_64-linux-gnu.so new file mode 100644 index 0000000000000000000000000000000000000000..936e1582792ff113bd09b0d77699de7d01a1907b --- /dev/null +++ b/venv/lib/python3.11/site-packages/cuda/bindings/nvjitlink.cpython-311-x86_64-linux-gnu.so @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:718a335e455d8b7284078aabe10925efb8a016d3f8e51967d6d372ea018494e3 +size 107848 diff --git a/venv/lib/python3.11/site-packages/cuda/bindings/nvjitlink.pxd b/venv/lib/python3.11/site-packages/cuda/bindings/nvjitlink.pxd new file mode 100644 index 0000000000000000000000000000000000000000..7da795a45f58f9d1787504e2d1cfdbebba5cea15 --- /dev/null +++ b/venv/lib/python3.11/site-packages/cuda/bindings/nvjitlink.pxd @@ -0,0 +1,43 @@ +# SPDX-FileCopyrightText: Copyright (c) 2024-2026 NVIDIA CORPORATION & AFFILIATES. All rights reserved. +# +# SPDX-License-Identifier: LicenseRef-NVIDIA-SOFTWARE-LICENSE +# +# This code was automatically generated across versions from 12.0.1 to 13.2.0, generator version 0.3.1.dev1422+gf4812259e.d20260318. Do not modify it directly. + +from libc.stdint cimport intptr_t, uint32_t + +from .cynvjitlink cimport * + + +############################################################################### +# Types +############################################################################### + +ctypedef nvJitLinkHandle Handle + + +############################################################################### +# Enum +############################################################################### + +ctypedef nvJitLinkResult _Result +ctypedef nvJitLinkInputType _InputType + + +############################################################################### +# Functions +############################################################################### + +cpdef intptr_t create(uint32_t num_options, options) except -1 +cpdef add_data(intptr_t handle, int input_type, data, size_t size, name) +cpdef add_file(intptr_t handle, int input_type, file_name) +cpdef complete(intptr_t handle) +cpdef size_t get_linked_cubin_size(intptr_t handle) except? 0 +cpdef get_linked_cubin(intptr_t handle, cubin) +cpdef size_t get_linked_ptx_size(intptr_t handle) except? 0 +cpdef get_linked_ptx(intptr_t handle, ptx) +cpdef size_t get_error_log_size(intptr_t handle) except? 0 +cpdef get_error_log(intptr_t handle, log) +cpdef size_t get_info_log_size(intptr_t handle) except? 0 +cpdef get_info_log(intptr_t handle, log) +cpdef tuple version() diff --git a/venv/lib/python3.11/site-packages/cuda/bindings/nvml.cpython-311-x86_64-linux-gnu.so b/venv/lib/python3.11/site-packages/cuda/bindings/nvml.cpython-311-x86_64-linux-gnu.so new file mode 100644 index 0000000000000000000000000000000000000000..31d26b1fce2505fc5bede85bc347cfe9d1152999 --- /dev/null +++ b/venv/lib/python3.11/site-packages/cuda/bindings/nvml.cpython-311-x86_64-linux-gnu.so @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:08ca02486b49316bd6098671a6810b7a9fd700aa36686f7442add7eb23bdd965 +size 4723944 diff --git a/venv/lib/python3.11/site-packages/cuda/bindings/nvml.pxd b/venv/lib/python3.11/site-packages/cuda/bindings/nvml.pxd new file mode 100644 index 0000000000000000000000000000000000000000..45f1d1ac084d696988c3d6a94292e8ac5b55a981 --- /dev/null +++ b/venv/lib/python3.11/site-packages/cuda/bindings/nvml.pxd @@ -0,0 +1,433 @@ +# SPDX-FileCopyrightText: Copyright (c) 2025-2026 NVIDIA CORPORATION & AFFILIATES. All rights reserved. +# +# SPDX-License-Identifier: LicenseRef-NVIDIA-SOFTWARE-LICENSE +# +# This code was automatically generated across versions from 12.9.1 to 13.3.0, generator version 0.3.1.dev1719+g565f73f4e. Do not modify it directly. + +from libc.stdint cimport intptr_t + +from .cynvml cimport * + + +############################################################################### +# Types +############################################################################### + +ctypedef nvmlDramEncryptionInfo_v1_t DramEncryptionInfo_v1 +ctypedef nvmlMarginTemperature_v1_t MarginTemperature_v1 +ctypedef nvmlFanSpeedInfo_v1_t FanSpeedInfo_v1 +ctypedef nvmlDevicePerfModes_v1_t DevicePerfModes_v1 +ctypedef nvmlDeviceCurrentClockFreqs_v1_t DeviceCurrentClockFreqs_v1 +ctypedef nvmlVgpuHeterogeneousMode_v1_t VgpuHeterogeneousMode_v1 +ctypedef nvmlVgpuPlacementId_v1_t VgpuPlacementId_v1 +ctypedef nvmlVgpuRuntimeState_v1_t VgpuRuntimeState_v1 +ctypedef nvmlConfComputeSetKeyRotationThresholdInfo_v1_t ConfComputeSetKeyRotationThresholdInfo_v1 +ctypedef nvmlConfComputeGetKeyRotationThresholdInfo_v1_t ConfComputeGetKeyRotationThresholdInfo_v1 +ctypedef nvmlSystemDriverBranchInfo_v1_t SystemDriverBranchInfo_v1 +ctypedef nvmlTemperature_v1_t Temperature_v1 +ctypedef nvmlDeviceCapabilities_v1_t DeviceCapabilities_v1 +ctypedef nvmlPowerSmoothingProfile_v1_t PowerSmoothingProfile_v1 +ctypedef nvmlPowerSmoothingState_v1_t PowerSmoothingState_v1 +ctypedef nvmlPdi_v1_t Pdi_v1 +ctypedef nvmlDevice_t Device +ctypedef nvmlGpuInstance_t GpuInstance +ctypedef nvmlUnit_t Unit +ctypedef nvmlEventSet_t EventSet +ctypedef nvmlSystemEventSet_t SystemEventSet +ctypedef nvmlComputeInstance_t ComputeInstance +ctypedef nvmlGpmSample_t GpmSample +ctypedef nvmlEccErrorCounts_t EccErrorCounts +ctypedef nvmlProcessInfo_v1_t ProcessInfo_v1 +ctypedef nvmlProcessInfo_v2_t ProcessInfo_v2 +ctypedef nvmlNvLinkUtilizationControl_t NvLinkUtilizationControl +ctypedef nvmlViolationTime_t ViolationTime +ctypedef nvmlUUIDValue_t UUIDValue +ctypedef nvmlVgpuPlacementList_v1_t VgpuPlacementList_v1 +ctypedef nvmlNvLinkPowerThres_t NvLinkPowerThres +ctypedef nvmlGpuInstanceProfileInfo_t GpuInstanceProfileInfo +ctypedef nvmlGpuInstanceProfileInfo_v2_t GpuInstanceProfileInfo_v2 +ctypedef nvmlComputeInstanceProfileInfo_t ComputeInstanceProfileInfo +ctypedef nvmlGpmSupport_t GpmSupport +ctypedef nvmlMask255_t Mask255 +ctypedef nvmlHostname_v1_t Hostname_v1 +ctypedef nvmlUnrepairableMemoryStatus_v1_t UnrepairableMemoryStatus_v1 +ctypedef nvmlRusdSettings_v1_t RusdSettings_v1 +ctypedef nvmlBBXTimeData_v1_t BBXTimeData_v1 +ctypedef nvmlRemappedRowsInfo_v2_t RemappedRowsInfo_v2 +ctypedef nvmlAccountingStats_v2_t AccountingStats_v2 +ctypedef nvmlPowerValue_v2_t PowerValue_v2 +ctypedef nvmlVgpuTypeMaxInstance_v1_t VgpuTypeMaxInstance_v1 +ctypedef nvmlVgpuProcessUtilizationSample_t VgpuProcessUtilizationSample +ctypedef nvmlGpuFabricInfo_t GpuFabricInfo +ctypedef nvmlCPERCursor_v1_t CPERCursor_v1 +ctypedef nvmlSystemEventSetCreateRequest_v1_t SystemEventSetCreateRequest_v1 +ctypedef nvmlSystemEventSetFreeRequest_v1_t SystemEventSetFreeRequest_v1 +ctypedef nvmlSystemRegisterEventRequest_v1_t SystemRegisterEventRequest_v1 +ctypedef nvmlUUID_v1_t UUID_v1 +ctypedef nvmlSystemEventSetWaitRequest_v1_t SystemEventSetWaitRequest_v1 +ctypedef nvmlGpmMetric_t GpmMetric +ctypedef nvmlWorkloadPowerProfileInfo_v1_t WorkloadPowerProfileInfo_v1 +ctypedef nvmlWorkloadPowerProfileCurrentProfiles_v1_t WorkloadPowerProfileCurrentProfiles_v1 +ctypedef nvmlWorkloadPowerProfileRequestedProfiles_v1_t WorkloadPowerProfileRequestedProfiles_v1 +ctypedef nvmlWorkloadPowerProfileUpdateProfiles_v1_t WorkloadPowerProfileUpdateProfiles_v1 +ctypedef nvmlPRMTLV_v1_t PRMTLV_v1 +ctypedef nvmlGetCPER_v1_t GetCPER_v1 +ctypedef nvmlVgpuSchedulerSetState_t VgpuSchedulerSetState +ctypedef nvmlGpmMetricsGet_t GpmMetricsGet +ctypedef nvmlPRMCounterList_v1_t PRMCounterList_v1 +ctypedef nvmlWorkloadPowerProfileProfilesInfo_v1_t WorkloadPowerProfileProfilesInfo_v1 + + +############################################################################### +# Enum +############################################################################### + +ctypedef nvmlBridgeChipType_t _BridgeChipType +ctypedef nvmlNvLinkUtilizationCountUnits_t _NvLinkUtilizationCountUnits +ctypedef nvmlNvLinkUtilizationCountPktTypes_t _NvLinkUtilizationCountPktTypes +ctypedef nvmlNvLinkCapability_t _NvLinkCapability +ctypedef nvmlNvLinkErrorCounter_t _NvLinkErrorCounter +ctypedef nvmlIntNvLinkDeviceType_t _IntNvLinkDeviceType +ctypedef nvmlGpuTopologyLevel_t _GpuTopologyLevel +ctypedef nvmlGpuP2PStatus_t _GpuP2PStatus +ctypedef nvmlGpuP2PCapsIndex_t _GpuP2PCapsIndex +ctypedef nvmlSamplingType_t _SamplingType +ctypedef nvmlPcieUtilCounter_t _PcieUtilCounter +ctypedef nvmlValueType_t _ValueType +ctypedef nvmlPerfPolicyType_t _PerfPolicyType +ctypedef nvmlThermalTarget_t _ThermalTarget +ctypedef nvmlThermalController_t _ThermalController +ctypedef nvmlCoolerControl_t _CoolerControl +ctypedef nvmlCoolerTarget_t _CoolerTarget +ctypedef nvmlUUIDType_t _UUIDType +ctypedef nvmlEnableState_t _EnableState +ctypedef nvmlBrandType_t _BrandType +ctypedef nvmlTemperatureThresholds_t _TemperatureThresholds +ctypedef nvmlTemperatureSensors_t _TemperatureSensors +ctypedef nvmlComputeMode_t _ComputeMode +ctypedef nvmlMemoryErrorType_t _MemoryErrorType +ctypedef nvmlNvlinkVersion_t _NvlinkVersion +ctypedef nvmlEccCounterType_t _EccCounterType +ctypedef nvmlClockType_t _ClockType +ctypedef nvmlClockId_t _ClockId +ctypedef nvmlDriverModel_t _DriverModel +ctypedef nvmlPstates_t _Pstates +ctypedef nvmlGpuOperationMode_t _GpuOperationMode +ctypedef nvmlInforomObject_t _InforomObject +ctypedef nvmlReturn_t _Return +ctypedef nvmlMemoryLocation_t _MemoryLocation +ctypedef nvmlPageRetirementCause_t _PageRetirementCause +ctypedef nvmlRestrictedAPI_t _RestrictedAPI +ctypedef nvmlGpuUtilizationDomainId_t _GpuUtilizationDomainId +ctypedef nvmlGpuVirtualizationMode_t _GpuVirtualizationMode +ctypedef nvmlHostVgpuMode_t _HostVgpuMode +ctypedef nvmlVgpuVmIdType_t _VgpuVmIdType +ctypedef nvmlVgpuGuestInfoState_t _VgpuGuestInfoState +ctypedef nvmlGridLicenseFeatureCode_t _GridLicenseFeatureCode +ctypedef nvmlVgpuCapability_t _VgpuCapability +ctypedef nvmlVgpuDriverCapability_t _VgpuDriverCapability +ctypedef nvmlDeviceVgpuCapability_t _DeviceVgpuCapability +ctypedef nvmlDeviceGpuRecoveryAction_t _DeviceGpuRecoveryAction +ctypedef nvmlFanState_t _FanState +ctypedef nvmlLedColor_t _LedColor +ctypedef nvmlEncoderType_t _EncoderType +ctypedef nvmlFBCSessionType_t _FBCSessionType +ctypedef nvmlDetachGpuState_t _DetachGpuState +ctypedef nvmlPcieLinkState_t _PcieLinkState +ctypedef nvmlClockLimitId_t _ClockLimitId +ctypedef nvmlVgpuVmCompatibility_t _VgpuVmCompatibility +ctypedef nvmlVgpuPgpuCompatibilityLimitCode_t _VgpuPgpuCompatibilityLimitCode +ctypedef nvmlGpmMetricId_t _GpmMetricId +ctypedef nvmlPowerProfileType_t _PowerProfileType +ctypedef nvmlDeviceAddressingModeType_t _DeviceAddressingModeType +ctypedef nvmlPRMCounterId_t _PRMCounterId +ctypedef nvmlPowerProfileOperation_t _PowerProfileOperation +ctypedef nvmlProcessMode_t _ProcessMode +ctypedef nvmlCPERType_t _CPERType + + +############################################################################### +# Functions +############################################################################### + +cpdef init_v2() +cpdef init_with_flags(unsigned int flags) +cpdef shutdown() +cpdef str error_string(int result) +cpdef str system_get_driver_version() +cpdef str system_get_nvml_version() +cpdef int system_get_cuda_driver_version() except * +cpdef int system_get_cuda_driver_version_v2() except 0 +cpdef str system_get_process_name(unsigned int pid) +cpdef object system_get_hic_version() +cpdef unsigned int unit_get_count() except? 0 +cpdef intptr_t unit_get_handle_by_index(unsigned int index) except? 0 +cpdef object unit_get_unit_info(intptr_t unit) +cpdef object unit_get_led_state(intptr_t unit) +cpdef object unit_get_psu_info(intptr_t unit) +cpdef unsigned int unit_get_temperature(intptr_t unit, unsigned int type) except? 0 +cpdef object unit_get_fan_speed_info(intptr_t unit) +cpdef unsigned int device_get_count_v2() except? 0 +cpdef object device_get_attributes_v2(intptr_t device) +cpdef intptr_t device_get_handle_by_index_v2(unsigned int index) except? 0 +cpdef intptr_t device_get_handle_by_serial(serial) except? 0 +cpdef intptr_t device_get_handle_by_uuid(uuid) except? 0 +cpdef intptr_t device_get_handle_by_pci_bus_id_v2(pci_bus_id) except? 0 +cpdef str device_get_name(intptr_t device) +cpdef int device_get_brand(intptr_t device) except? -1 +cpdef unsigned int device_get_index(intptr_t device) except? 0 +cpdef str device_get_serial(intptr_t device) +cpdef unsigned int device_get_module_id(intptr_t device) except? 0 +cpdef object device_get_c2c_mode_info_v(intptr_t device) +cpdef object device_get_memory_affinity(intptr_t device, unsigned int node_set_size, unsigned int scope) +cpdef object device_get_cpu_affinity_within_scope(intptr_t device, unsigned int cpu_set_size, unsigned int scope) +cpdef object device_get_cpu_affinity(intptr_t device, unsigned int cpu_set_size) +cpdef device_set_cpu_affinity(intptr_t device) +cpdef device_clear_cpu_affinity(intptr_t device) +cpdef unsigned int device_get_numa_node_id(intptr_t device) except? 0 +cpdef int device_get_topology_common_ancestor(intptr_t device1, intptr_t device2) except? -1 +cpdef int device_get_p2p_status(intptr_t device1, intptr_t device2, int p2p_index) except? -1 +cpdef str device_get_uuid(intptr_t device) +cpdef unsigned int device_get_minor_number(intptr_t device) except? 0 +cpdef str device_get_board_part_number(intptr_t device) +cpdef str device_get_inforom_version(intptr_t device, int object) +cpdef str device_get_inforom_image_version(intptr_t device) +cpdef unsigned int device_get_inforom_configuration_checksum(intptr_t device) except? 0 +cpdef device_validate_inforom(intptr_t device) +cpdef tuple device_get_last_bbx_flush_time(intptr_t device) +cpdef int device_get_display_mode(intptr_t device) except? -1 +cpdef int device_get_display_active(intptr_t device) except? -1 +cpdef int device_get_persistence_mode(intptr_t device) except? -1 +cpdef object device_get_pci_info_ext(intptr_t device) +cpdef object device_get_pci_info_v3(intptr_t device) +cpdef unsigned int device_get_max_pcie_link_generation(intptr_t device) except? 0 +cpdef unsigned int device_get_gpu_max_pcie_link_generation(intptr_t device) except? 0 +cpdef unsigned int device_get_max_pcie_link_width(intptr_t device) except? 0 +cpdef unsigned int device_get_curr_pcie_link_generation(intptr_t device) except? 0 +cpdef unsigned int device_get_curr_pcie_link_width(intptr_t device) except? 0 +cpdef unsigned int device_get_pcie_throughput(intptr_t device, int counter) except? 0 +cpdef unsigned int device_get_pcie_replay_counter(intptr_t device) except? 0 +cpdef unsigned int device_get_clock_info(intptr_t device, int type) except? 0 +cpdef unsigned int device_get_max_clock_info(intptr_t device, int type) except? 0 +cpdef int device_get_gpc_clk_vf_offset(intptr_t device) except? 0 +cpdef unsigned int device_get_clock(intptr_t device, int clock_type, int clock_id) except? 0 +cpdef unsigned int device_get_max_customer_boost_clock(intptr_t device, int clock_type) except? 0 +cpdef object device_get_supported_memory_clocks(intptr_t device) +cpdef object device_get_supported_graphics_clocks(intptr_t device, unsigned int memory_clock_m_hz) +cpdef tuple device_get_auto_boosted_clocks_enabled(intptr_t device) +cpdef unsigned int device_get_fan_speed(intptr_t device) except? 0 +cpdef unsigned int device_get_fan_speed_v2(intptr_t device, unsigned int fan) except? 0 +cpdef unsigned int device_get_target_fan_speed(intptr_t device, unsigned int fan) except? 0 +cpdef tuple device_get_min_max_fan_speed(intptr_t device) +cpdef unsigned int device_get_fan_control_policy_v2(intptr_t device, unsigned int fan) except * +cpdef unsigned int device_get_num_fans(intptr_t device) except? 0 +cpdef object device_get_cooler_info(intptr_t device) +cpdef unsigned int device_get_temperature_threshold(intptr_t device, int threshold_type) except? 0 +cpdef object device_get_thermal_settings(intptr_t device, unsigned int sensor_index) +cpdef int device_get_performance_state(intptr_t device) except? -1 +cpdef unsigned long long device_get_current_clocks_event_reasons(intptr_t device) except? 0 +cpdef unsigned long long device_get_supported_clocks_event_reasons(intptr_t device) except? 0 +cpdef int device_get_power_state(intptr_t device) except? -1 +cpdef object device_get_dynamic_pstates_info(intptr_t device) +cpdef int device_get_mem_clk_vf_offset(intptr_t device) except? 0 +cpdef tuple device_get_min_max_clock_of_p_state(intptr_t device, int type, int pstate) +cpdef tuple device_get_gpc_clk_min_max_vf_offset(intptr_t device) +cpdef tuple device_get_mem_clk_min_max_vf_offset(intptr_t device) +cpdef device_set_clock_offsets(intptr_t device, intptr_t info) +cpdef unsigned int device_get_power_management_limit(intptr_t device) except? 0 +cpdef tuple device_get_power_management_limit_constraints(intptr_t device) +cpdef unsigned int device_get_power_management_default_limit(intptr_t device) except? 0 +cpdef unsigned int device_get_power_usage(intptr_t device) except? 0 +cpdef unsigned long long device_get_total_energy_consumption(intptr_t device) except? 0 +cpdef unsigned int device_get_enforced_power_limit(intptr_t device) except? 0 +cpdef tuple device_get_gpu_operation_mode(intptr_t device) +cpdef object device_get_memory_info_v2(intptr_t device) +cpdef int device_get_compute_mode(intptr_t device) except? -1 +cpdef tuple device_get_cuda_compute_capability(intptr_t device) +cpdef tuple device_get_ecc_mode(intptr_t device) +cpdef int device_get_default_ecc_mode(intptr_t device) except? -1 +cpdef unsigned int device_get_board_id(intptr_t device) except? 0 +cpdef unsigned int device_get_multi_gpu_board(intptr_t device) except? 0 +cpdef unsigned long long device_get_total_ecc_errors(intptr_t device, int error_type, int counter_type) except? 0 +cpdef unsigned long long device_get_memory_error_counter(intptr_t device, int error_type, int counter_type, int location_type) except? 0 +cpdef object device_get_utilization_rates(intptr_t device) +cpdef tuple device_get_encoder_utilization(intptr_t device) +cpdef unsigned int device_get_encoder_capacity(intptr_t device, int encoder_query_type) except? 0 +cpdef tuple device_get_encoder_stats(intptr_t device) +cpdef object device_get_encoder_sessions(intptr_t device) +cpdef tuple device_get_decoder_utilization(intptr_t device) +cpdef tuple device_get_jpg_utilization(intptr_t device) +cpdef tuple device_get_ofa_utilization(intptr_t device) +cpdef object device_get_fbc_stats(intptr_t device) +cpdef object device_get_fbc_sessions(intptr_t device) +cpdef tuple device_get_driver_model_v2(intptr_t device) +cpdef str device_get_vbios_version(intptr_t device) +cpdef object device_get_bridge_chip_info(intptr_t device) +cpdef object device_get_compute_running_processes_v3(intptr_t device) +cpdef object device_get_graphics_running_processes_v3(intptr_t device) +cpdef object device_get_mps_compute_running_processes_v3(intptr_t device) +cpdef int device_on_same_board(intptr_t device1, intptr_t device2) except? 0 +cpdef int device_get_api_restriction(intptr_t device, int api_type) except? -1 +cpdef object device_get_bar1_memory_info(intptr_t device) +cpdef unsigned int device_get_irq_num(intptr_t device) except? 0 +cpdef unsigned int device_get_num_gpu_cores(intptr_t device) except? 0 +cpdef unsigned int device_get_power_source(intptr_t device) except * +cpdef unsigned int device_get_memory_bus_width(intptr_t device) except? 0 +cpdef unsigned int device_get_pcie_link_max_speed(intptr_t device) except? 0 +cpdef unsigned int device_get_pcie_speed(intptr_t device) except? 0 +cpdef unsigned int device_get_adaptive_clock_info_status(intptr_t device) except? 0 +cpdef unsigned int device_get_bus_type(intptr_t device) except? 0 +cpdef object system_get_conf_compute_capabilities() +cpdef object system_get_conf_compute_state() +cpdef object device_get_conf_compute_mem_size_info(intptr_t device) +cpdef unsigned int system_get_conf_compute_gpus_ready_state() except? 0 +cpdef object device_get_conf_compute_protected_memory_usage(intptr_t device) +cpdef object device_get_conf_compute_gpu_certificate(intptr_t device) +cpdef device_set_conf_compute_unprotected_mem_size(intptr_t device, unsigned long long size_ki_b) +cpdef system_set_conf_compute_gpus_ready_state(unsigned int is_accepting_work) +cpdef object system_get_conf_compute_settings() +cpdef char device_get_gsp_firmware_version(intptr_t device) except? 0 +cpdef tuple device_get_gsp_firmware_mode(intptr_t device) +cpdef object device_get_sram_ecc_error_status(intptr_t device) +cpdef int device_get_accounting_mode(intptr_t device) except? -1 +cpdef object device_get_accounting_stats(intptr_t device, unsigned int pid) +cpdef object device_get_accounting_pids(intptr_t device) +cpdef unsigned int device_get_accounting_buffer_size(intptr_t device) except? 0 +cpdef object device_get_retired_pages(intptr_t device, int cause) +cpdef int device_get_retired_pages_pending_status(intptr_t device) except? -1 +cpdef tuple device_get_remapped_rows(intptr_t device) +cpdef object device_get_row_remapper_histogram(intptr_t device) +cpdef unsigned int device_get_architecture(intptr_t device) except? 0 +cpdef object device_get_clk_mon_status(intptr_t device) +cpdef object device_get_process_utilization(intptr_t device, unsigned long long last_seen_time_stamp) +cpdef unit_set_led_state(intptr_t unit, int color) +cpdef device_set_persistence_mode(intptr_t device, int mode) +cpdef device_set_compute_mode(intptr_t device, int mode) +cpdef device_set_ecc_mode(intptr_t device, int ecc) +cpdef device_clear_ecc_error_counts(intptr_t device, int counter_type) +cpdef device_set_driver_model(intptr_t device, int driver_model, unsigned int flags) +cpdef device_set_gpu_locked_clocks(intptr_t device, unsigned int min_gpu_clock_m_hz, unsigned int max_gpu_clock_m_hz) +cpdef device_reset_gpu_locked_clocks(intptr_t device) +cpdef device_set_memory_locked_clocks(intptr_t device, unsigned int min_mem_clock_m_hz, unsigned int max_mem_clock_m_hz) +cpdef device_reset_memory_locked_clocks(intptr_t device) +cpdef device_set_auto_boosted_clocks_enabled(intptr_t device, int enabled) +cpdef device_set_default_auto_boosted_clocks_enabled(intptr_t device, int enabled, unsigned int flags) +cpdef device_set_default_fan_speed_v2(intptr_t device, unsigned int fan) +cpdef device_set_fan_control_policy(intptr_t device, unsigned int fan, unsigned int policy) +cpdef device_set_gpu_operation_mode(intptr_t device, int mode) +cpdef device_set_api_restriction(intptr_t device, int api_type, int is_restricted) +cpdef device_set_fan_speed_v2(intptr_t device, unsigned int fan, unsigned int speed) +cpdef device_set_accounting_mode(intptr_t device, int mode) +cpdef device_clear_accounting_pids(intptr_t device) +cpdef int device_get_nvlink_state(intptr_t device, unsigned int link) except? -1 +cpdef unsigned int device_get_nvlink_version(intptr_t device, unsigned int link) except? 0 +cpdef unsigned int device_get_nvlink_capability(intptr_t device, unsigned int link, int capability) except? 0 +cpdef object device_get_nvlink_remote_pci_info_v2(intptr_t device, unsigned int link) +cpdef unsigned long long device_get_nvlink_error_counter(intptr_t device, unsigned int link, int counter) except? 0 +cpdef device_reset_nvlink_error_counters(intptr_t device, unsigned int link) +cpdef int device_get_nvlink_remote_device_type(intptr_t device, unsigned int link) except? -1 +cpdef system_set_nvlink_bw_mode(unsigned int nvlink_bw_mode) +cpdef unsigned int system_get_nvlink_bw_mode() except? 0 +cpdef object device_get_nvlink_supported_bw_modes(intptr_t device) +cpdef object device_get_nvlink_bw_mode(intptr_t device) +cpdef device_set_nvlink_bw_mode(intptr_t device, intptr_t set_bw_mode) +cpdef intptr_t event_set_create() except? 0 +cpdef device_register_events(intptr_t device, unsigned long long event_types, intptr_t set) +cpdef unsigned long long device_get_supported_event_types(intptr_t device) except? 0 +cpdef object event_set_wait_v2(intptr_t set, unsigned int timeoutms) +cpdef event_set_free(intptr_t set) +cpdef device_modify_drain_state(intptr_t pci_info, int new_state) +cpdef int device_query_drain_state(intptr_t pci_info) except? -1 +cpdef device_remove_gpu_v2(intptr_t pci_info, int gpu_state, int link_state) +cpdef device_discover_gpus(intptr_t pci_info) +cpdef int device_get_virtualization_mode(intptr_t device) except? -1 +cpdef int device_get_host_vgpu_mode(intptr_t device) except? -1 +cpdef device_set_virtualization_mode(intptr_t device, int virtual_mode) +cpdef unsigned long long vgpu_type_get_gsp_heap_size(unsigned int vgpu_type_id) except? 0 +cpdef unsigned long long vgpu_type_get_fb_reservation(unsigned int vgpu_type_id) except? 0 +cpdef device_set_vgpu_capabilities(intptr_t device, int capability, int state) +cpdef object device_get_grid_licensable_features_v4(intptr_t device) +cpdef unsigned int get_vgpu_driver_capabilities(int capability) except? 0 +cpdef unsigned int device_get_vgpu_capabilities(intptr_t device, int capability) except? 0 +cpdef str vgpu_type_get_class(unsigned int vgpu_type_id) +cpdef unsigned int vgpu_type_get_gpu_instance_profile_id(unsigned int vgpu_type_id) except? 0 +cpdef tuple vgpu_type_get_device_id(unsigned int vgpu_type_id) +cpdef unsigned long long vgpu_type_get_framebuffer_size(unsigned int vgpu_type_id) except? 0 +cpdef unsigned int vgpu_type_get_num_display_heads(unsigned int vgpu_type_id) except? 0 +cpdef tuple vgpu_type_get_resolution(unsigned int vgpu_type_id, unsigned int display_index) +cpdef str vgpu_type_get_license(unsigned int vgpu_type_id) +cpdef unsigned int vgpu_type_get_frame_rate_limit(unsigned int vgpu_type_id) except? 0 +cpdef unsigned int vgpu_type_get_max_instances(intptr_t device, unsigned int vgpu_type_id) except? 0 +cpdef unsigned int vgpu_type_get_max_instances_per_vm(unsigned int vgpu_type_id) except? 0 +cpdef object vgpu_type_get_bar1_info(unsigned int vgpu_type_id) +cpdef str vgpu_instance_get_uuid(unsigned int vgpu_instance) +cpdef str vgpu_instance_get_vm_driver_version(unsigned int vgpu_instance) +cpdef unsigned long long vgpu_instance_get_fb_usage(unsigned int vgpu_instance) except? 0 +cpdef unsigned int vgpu_instance_get_license_status(unsigned int vgpu_instance) except? 0 +cpdef unsigned int vgpu_instance_get_type(unsigned int vgpu_instance) except? 0 +cpdef unsigned int vgpu_instance_get_frame_rate_limit(unsigned int vgpu_instance) except? 0 +cpdef int vgpu_instance_get_ecc_mode(unsigned int vgpu_instance) except? -1 +cpdef unsigned int vgpu_instance_get_encoder_capacity(unsigned int vgpu_instance) except? 0 +cpdef vgpu_instance_set_encoder_capacity(unsigned int vgpu_instance, unsigned int encoder_capacity) +cpdef tuple vgpu_instance_get_encoder_stats(unsigned int vgpu_instance) +cpdef object vgpu_instance_get_encoder_sessions(unsigned int vgpu_instance) +cpdef object vgpu_instance_get_fbc_stats(unsigned int vgpu_instance) +cpdef object vgpu_instance_get_fbc_sessions(unsigned int vgpu_instance) +cpdef unsigned int vgpu_instance_get_gpu_instance_id(unsigned int vgpu_instance) except? 0 +cpdef str vgpu_instance_get_gpu_pci_id(unsigned int vgpu_instance) +cpdef unsigned int vgpu_type_get_capabilities(unsigned int vgpu_type_id, int capability) except? 0 +cpdef str vgpu_instance_get_mdev_uuid(unsigned int vgpu_instance) +cpdef gpu_instance_set_vgpu_scheduler_state(intptr_t gpu_instance, intptr_t p_scheduler) +cpdef object gpu_instance_get_vgpu_scheduler_state(intptr_t gpu_instance) +cpdef object gpu_instance_get_vgpu_scheduler_log(intptr_t gpu_instance) +cpdef str device_get_pgpu_metadata_string(intptr_t device) +cpdef object device_get_vgpu_scheduler_log(intptr_t device) +cpdef object device_get_vgpu_scheduler_state(intptr_t device) +cpdef object device_get_vgpu_scheduler_capabilities(intptr_t device) +cpdef device_set_vgpu_scheduler_state(intptr_t device, intptr_t p_scheduler_state) +cpdef set_vgpu_version(intptr_t vgpu_version) +cpdef tuple device_get_vgpu_process_utilization(intptr_t device, unsigned long long last_seen_time_stamp) +cpdef int vgpu_instance_get_accounting_mode(unsigned int vgpu_instance) except? -1 +cpdef object vgpu_instance_get_accounting_pids(unsigned int vgpu_instance) +cpdef object vgpu_instance_get_accounting_stats(unsigned int vgpu_instance, unsigned int pid) +cpdef vgpu_instance_clear_accounting_pids(unsigned int vgpu_instance) +cpdef object vgpu_instance_get_license_info_v2(unsigned int vgpu_instance) +cpdef unsigned int get_excluded_device_count() except? 0 +cpdef object get_excluded_device_info_by_index(unsigned int index) +cpdef int device_set_mig_mode(intptr_t device, unsigned int mode) except? -1 +cpdef tuple device_get_mig_mode(intptr_t device) +cpdef object device_get_gpu_instance_possible_placements_v2(intptr_t device, unsigned int profile_id) +cpdef unsigned int device_get_gpu_instance_remaining_capacity(intptr_t device, unsigned int profile_id) except? 0 +cpdef intptr_t device_create_gpu_instance(intptr_t device, unsigned int profile_id) except? 0 +cpdef intptr_t device_create_gpu_instance_with_placement(intptr_t device, unsigned int profile_id, intptr_t placement) except? 0 +cpdef gpu_instance_destroy(intptr_t gpu_instance) +cpdef intptr_t device_get_gpu_instance_by_id(intptr_t device, unsigned int id) except? 0 +cpdef object gpu_instance_get_info(intptr_t gpu_instance) +cpdef object gpu_instance_get_compute_instance_profile_info_v(intptr_t gpu_instance, unsigned int profile, unsigned int eng_profile) +cpdef unsigned int gpu_instance_get_compute_instance_remaining_capacity(intptr_t gpu_instance, unsigned int profile_id) except? 0 +cpdef object gpu_instance_get_compute_instance_possible_placements(intptr_t gpu_instance, unsigned int profile_id) +cpdef intptr_t gpu_instance_create_compute_instance(intptr_t gpu_instance, unsigned int profile_id) except? 0 +cpdef intptr_t gpu_instance_create_compute_instance_with_placement(intptr_t gpu_instance, unsigned int profile_id, intptr_t placement) except? 0 +cpdef compute_instance_destroy(intptr_t compute_instance) +cpdef intptr_t gpu_instance_get_compute_instance_by_id(intptr_t gpu_instance, unsigned int id) except? 0 +cpdef object compute_instance_get_info_v2(intptr_t compute_instance) +cpdef unsigned int device_is_mig_device_handle(intptr_t device) except? 0 +cpdef unsigned int device_get_gpu_instance_id(intptr_t device) except? 0 +cpdef unsigned int device_get_compute_instance_id(intptr_t device) except? 0 +cpdef unsigned int device_get_max_mig_device_count(intptr_t device) except? 0 +cpdef intptr_t device_get_mig_device_handle_by_index(intptr_t device, unsigned int index) except? 0 +cpdef intptr_t device_get_device_handle_from_mig_device_handle(intptr_t mig_device) except? 0 +cpdef device_power_smoothing_activate_preset_profile(intptr_t device, intptr_t profile) +cpdef device_power_smoothing_update_preset_profile_param(intptr_t device, intptr_t profile) +cpdef device_power_smoothing_set_state(intptr_t device, intptr_t state) +cpdef object device_get_addressing_mode(intptr_t device) +cpdef object device_get_repair_status(intptr_t device) +cpdef object device_get_power_mizer_mode_v1(intptr_t device) +cpdef device_set_power_mizer_mode_v1(intptr_t device, intptr_t power_mizer_mode) +cpdef device_vgpu_force_gsp_unload(intptr_t device) +cpdef object device_get_vgpu_scheduler_state_v2(intptr_t device) +cpdef object gpu_instance_get_vgpu_scheduler_state_v2(intptr_t gpu_instance) +cpdef object device_get_vgpu_scheduler_log_v2(intptr_t device) +cpdef object gpu_instance_get_vgpu_scheduler_log_v2(intptr_t gpu_instance) +cpdef device_set_vgpu_scheduler_state_v2(intptr_t device, intptr_t p_scheduler_state) +cpdef gpu_instance_set_vgpu_scheduler_state_v2(intptr_t gpu_instance, intptr_t p_scheduler_state) diff --git a/venv/lib/python3.11/site-packages/cuda/bindings/nvrtc.cpython-311-x86_64-linux-gnu.so b/venv/lib/python3.11/site-packages/cuda/bindings/nvrtc.cpython-311-x86_64-linux-gnu.so new file mode 100644 index 0000000000000000000000000000000000000000..ddea19ca1e2cdc715b1c6ceefb831c17e8cd6185 --- /dev/null +++ b/venv/lib/python3.11/site-packages/cuda/bindings/nvrtc.cpython-311-x86_64-linux-gnu.so @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:f34eb38127aba3db7211fe33a616cef878c9f83cfb1b51b3e785610059546b0f +size 451200 diff --git a/venv/lib/python3.11/site-packages/cuda/bindings/nvrtc.pxd b/venv/lib/python3.11/site-packages/cuda/bindings/nvrtc.pxd new file mode 100644 index 0000000000000000000000000000000000000000..743c75f88379a955f5cc2e22073e541fc5e1ab0f --- /dev/null +++ b/venv/lib/python3.11/site-packages/cuda/bindings/nvrtc.pxd @@ -0,0 +1,93 @@ +# SPDX-FileCopyrightText: Copyright (c) 2021-2026 NVIDIA CORPORATION & AFFILIATES. All rights reserved. +# SPDX-License-Identifier: LicenseRef-NVIDIA-SOFTWARE-LICENSE + +# This code was automatically generated with version 13.3.0, generator version 0.3.1.dev1719+g565f73f4e. Do not modify it directly. +cimport cuda.bindings.cynvrtc as cynvrtc + +include "_lib/utils.pxd" + +cdef class nvrtcProgram: + """ nvrtcProgram is the unit of compilation, and an opaque handle for a program. + + To compile a CUDA program string, an instance of nvrtcProgram must be created first with nvrtcCreateProgram, then compiled with nvrtcCompileProgram. + + Methods + ------- + getPtr() + Get memory address of class instance + + """ + cdef cynvrtc.nvrtcProgram _pvt_val + cdef cynvrtc.nvrtcProgram* _pvt_ptr + +cdef class anon_struct0: + """ + Attributes + ---------- + + available : int + + + + compressedSize : size_t + + + + uncompressedSize : size_t + + + + cudaVersionMajor : int + + + + cudaVersionMinor : int + + + + numFiles : unsigned int + + + + Methods + ------- + getPtr() + Get memory address of class instance + """ + cdef cynvrtc.nvrtcBundledHeadersInfo* _pvt_ptr + +cdef class nvrtcBundledHeadersInfo(anon_struct0): + """ + Attributes + ---------- + + available : int + + + + compressedSize : size_t + + + + uncompressedSize : size_t + + + + cudaVersionMajor : int + + + + cudaVersionMinor : int + + + + numFiles : unsigned int + + + + Methods + ------- + getPtr() + Get memory address of class instance + """ + cdef cynvrtc.nvrtcBundledHeadersInfo _pvt_val diff --git a/venv/lib/python3.11/site-packages/cuda/bindings/nvvm.cpython-311-x86_64-linux-gnu.so b/venv/lib/python3.11/site-packages/cuda/bindings/nvvm.cpython-311-x86_64-linux-gnu.so new file mode 100644 index 0000000000000000000000000000000000000000..fd26602e9a26bfac1d16e6650c522d8a76a4b926 Binary files /dev/null and b/venv/lib/python3.11/site-packages/cuda/bindings/nvvm.cpython-311-x86_64-linux-gnu.so differ diff --git a/venv/lib/python3.11/site-packages/cuda/bindings/nvvm.pxd b/venv/lib/python3.11/site-packages/cuda/bindings/nvvm.pxd new file mode 100644 index 0000000000000000000000000000000000000000..4cf37a3464ad05bad49ae443e5505173de9e600c --- /dev/null +++ b/venv/lib/python3.11/site-packages/cuda/bindings/nvvm.pxd @@ -0,0 +1,42 @@ +# SPDX-FileCopyrightText: Copyright (c) 2025-2026 NVIDIA CORPORATION & AFFILIATES. All rights reserved. +# +# SPDX-License-Identifier: LicenseRef-NVIDIA-SOFTWARE-LICENSE +# +# This code was automatically generated across versions from 12.0.1 to 13.2.0, generator version 0.3.1.dev1422+gf4812259e.d20260318. Do not modify it directly. + +from libc.stdint cimport intptr_t + +from .cynvvm cimport * + + +############################################################################### +# Types +############################################################################### + +ctypedef nvvmProgram Program + + +############################################################################### +# Enum +############################################################################### + +ctypedef nvvmResult _Result + + +############################################################################### +# Functions +############################################################################### + +cpdef str get_error_string(int result) +cpdef tuple version() +cpdef tuple ir_version() +cpdef intptr_t create_program() except? 0 +cpdef add_module_to_program(intptr_t prog, buffer, size_t size, name) +cpdef lazy_add_module_to_program(intptr_t prog, buffer, size_t size, name) +cpdef compile_program(intptr_t prog, int num_options, options) +cpdef verify_program(intptr_t prog, int num_options, options) +cpdef size_t get_compiled_result_size(intptr_t prog) except? 0 +cpdef get_compiled_result(intptr_t prog, buffer) +cpdef size_t get_program_log_size(intptr_t prog) except? 0 +cpdef get_program_log(intptr_t prog, buffer) +cpdef int llvm_version(arch) except? 0 diff --git a/venv/lib/python3.11/site-packages/cuda/bindings/runtime.cpython-311-x86_64-linux-gnu.so b/venv/lib/python3.11/site-packages/cuda/bindings/runtime.cpython-311-x86_64-linux-gnu.so new file mode 100644 index 0000000000000000000000000000000000000000..55553587bec780f0706788a85c9bc3579220fbd8 --- /dev/null +++ b/venv/lib/python3.11/site-packages/cuda/bindings/runtime.cpython-311-x86_64-linux-gnu.so @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:f07804131634cc3fa0a26f00ecb0bde78ffa0696acac1a0fa78937ad7e308f42 +size 5533440 diff --git a/venv/lib/python3.11/site-packages/cuda/bindings/runtime.pxd b/venv/lib/python3.11/site-packages/cuda/bindings/runtime.pxd new file mode 100644 index 0000000000000000000000000000000000000000..8f5723e60b6226e08ea981ccfd2c5e52b575a86a --- /dev/null +++ b/venv/lib/python3.11/site-packages/cuda/bindings/runtime.pxd @@ -0,0 +1,3910 @@ +# SPDX-FileCopyrightText: Copyright (c) 2021-2026 NVIDIA CORPORATION & AFFILIATES. All rights reserved. +# SPDX-License-Identifier: LicenseRef-NVIDIA-SOFTWARE-LICENSE + +# This code was automatically generated with version 13.3.0, generator version 0.3.1.dev1719+g565f73f4e. Do not modify it directly. +cimport cuda.bindings.cyruntime as cyruntime + +include "_lib/utils.pxd" +cimport cuda.bindings.driver as driver + +cdef class cudaDevResourceDesc_t: + """ + + An opaque descriptor handle. The descriptor encapsulates multiple created and configured resources. Created via ::cudaDeviceResourceGenerateDesc + + Methods + ------- + getPtr() + Get memory address of class instance + + """ + cdef cyruntime.cudaDevResourceDesc_t _pvt_val + cdef cyruntime.cudaDevResourceDesc_t* _pvt_ptr + +cdef class cudaExecutionContext_t: + """ + + An opaque handle to a CUDA execution context. It represents an execution context created via CUDA Runtime APIs such as cudaGreenCtxCreate. + + Methods + ------- + getPtr() + Get memory address of class instance + + """ + cdef cyruntime.cudaExecutionContext_t _pvt_val + cdef cyruntime.cudaExecutionContext_t* _pvt_ptr + +cdef class cudaArray_t: + """ + + CUDA array + + Methods + ------- + getPtr() + Get memory address of class instance + + """ + cdef cyruntime.cudaArray_t _pvt_val + cdef cyruntime.cudaArray_t* _pvt_ptr + +cdef class cudaArray_const_t: + """ + + CUDA array (as source copy argument) + + Methods + ------- + getPtr() + Get memory address of class instance + + """ + cdef cyruntime.cudaArray_const_t _pvt_val + cdef cyruntime.cudaArray_const_t* _pvt_ptr + +cdef class cudaMipmappedArray_t: + """ + + CUDA mipmapped array + + Methods + ------- + getPtr() + Get memory address of class instance + + """ + cdef cyruntime.cudaMipmappedArray_t _pvt_val + cdef cyruntime.cudaMipmappedArray_t* _pvt_ptr + +cdef class cudaMipmappedArray_const_t: + """ + + CUDA mipmapped array (as source argument) + + Methods + ------- + getPtr() + Get memory address of class instance + + """ + cdef cyruntime.cudaMipmappedArray_const_t _pvt_val + cdef cyruntime.cudaMipmappedArray_const_t* _pvt_ptr + +cdef class cudaGraphicsResource_t: + """ + + CUDA graphics resource types + + Methods + ------- + getPtr() + Get memory address of class instance + + """ + cdef cyruntime.cudaGraphicsResource_t _pvt_val + cdef cyruntime.cudaGraphicsResource_t* _pvt_ptr + +cdef class cudaExternalMemory_t: + """ + + CUDA external memory + + Methods + ------- + getPtr() + Get memory address of class instance + + """ + cdef cyruntime.cudaExternalMemory_t _pvt_val + cdef cyruntime.cudaExternalMemory_t* _pvt_ptr + +cdef class cudaExternalSemaphore_t: + """ + + CUDA external semaphore + + Methods + ------- + getPtr() + Get memory address of class instance + + """ + cdef cyruntime.cudaExternalSemaphore_t _pvt_val + cdef cyruntime.cudaExternalSemaphore_t* _pvt_ptr + +cdef class cudaKernel_t: + """ + + CUDA kernel + + Methods + ------- + getPtr() + Get memory address of class instance + + """ + cdef cyruntime.cudaKernel_t _pvt_val + cdef cyruntime.cudaKernel_t* _pvt_ptr + +cdef class cudaLibrary_t: + """ + + CUDA library + + Methods + ------- + getPtr() + Get memory address of class instance + + """ + cdef cyruntime.cudaLibrary_t _pvt_val + cdef cyruntime.cudaLibrary_t* _pvt_ptr + +cdef class cudaGraphDeviceNode_t: + """ + + CUDA device node handle for device-side node update + + Methods + ------- + getPtr() + Get memory address of class instance + + """ + cdef cyruntime.cudaGraphDeviceNode_t _pvt_val + cdef cyruntime.cudaGraphDeviceNode_t* _pvt_ptr + +cdef class cudaAsyncCallbackHandle_t: + """ + + CUDA async callback handle + + Methods + ------- + getPtr() + Get memory address of class instance + + """ + cdef cyruntime.cudaAsyncCallbackHandle_t _pvt_val + cdef cyruntime.cudaAsyncCallbackHandle_t* _pvt_ptr + +cdef class cudaLogsCallbackHandle: + """ + + Methods + ------- + getPtr() + Get memory address of class instance + + """ + cdef cyruntime.cudaLogsCallbackHandle _pvt_val + cdef cyruntime.cudaLogsCallbackHandle* _pvt_ptr + +cdef class EGLImageKHR: + """ + + Methods + ------- + getPtr() + Get memory address of class instance + + """ + cdef cyruntime.EGLImageKHR _pvt_val + cdef cyruntime.EGLImageKHR* _pvt_ptr + +cdef class EGLStreamKHR: + """ + + Methods + ------- + getPtr() + Get memory address of class instance + + """ + cdef cyruntime.EGLStreamKHR _pvt_val + cdef cyruntime.EGLStreamKHR* _pvt_ptr + +cdef class EGLSyncKHR: + """ + + Methods + ------- + getPtr() + Get memory address of class instance + + """ + cdef cyruntime.EGLSyncKHR _pvt_val + cdef cyruntime.EGLSyncKHR* _pvt_ptr + +cdef class cudaHostFn_t: + """ + + Methods + ------- + getPtr() + Get memory address of class instance + + """ + cdef cyruntime.cudaHostFn_t _pvt_val + cdef cyruntime.cudaHostFn_t* _pvt_ptr + +cdef class cudaAsyncCallback: + """ + + Methods + ------- + getPtr() + Get memory address of class instance + + """ + cdef cyruntime.cudaAsyncCallback _pvt_val + cdef cyruntime.cudaAsyncCallback* _pvt_ptr + +cdef class cudaStreamCallback_t: + """ + + Methods + ------- + getPtr() + Get memory address of class instance + + """ + cdef cyruntime.cudaStreamCallback_t _pvt_val + cdef cyruntime.cudaStreamCallback_t* _pvt_ptr + +cdef class cudaGraphRecaptureCallback_t: + """ + + Methods + ------- + getPtr() + Get memory address of class instance + + """ + cdef cyruntime.cudaGraphRecaptureCallback_t _pvt_val + cdef cyruntime.cudaGraphRecaptureCallback_t* _pvt_ptr + +cdef class cudaLogsCallback_t: + """ + + Methods + ------- + getPtr() + Get memory address of class instance + + """ + cdef cyruntime.cudaLogsCallback_t _pvt_val + cdef cyruntime.cudaLogsCallback_t* _pvt_ptr + +cdef class dim3: + """ + Attributes + ---------- + x : unsigned int + + y : unsigned int + + z : unsigned int + + + Methods + ------- + getPtr() + Get memory address of class instance + """ + cdef cyruntime.dim3 _pvt_val + cdef cyruntime.dim3* _pvt_ptr + +cdef class cudaChannelFormatDesc: + """ + CUDA Channel format descriptor + + Attributes + ---------- + x : int + x + y : int + y + z : int + z + w : int + w + f : cudaChannelFormatKind + Channel format kind + + Methods + ------- + getPtr() + Get memory address of class instance + """ + cdef cyruntime.cudaChannelFormatDesc _pvt_val + cdef cyruntime.cudaChannelFormatDesc* _pvt_ptr + +cdef class anon_struct0: + """ + Attributes + ---------- + width : unsigned int + + height : unsigned int + + depth : unsigned int + + + Methods + ------- + getPtr() + Get memory address of class instance + """ + cdef cyruntime.cudaArraySparseProperties* _pvt_ptr + +cdef class cudaArraySparseProperties: + """ + Sparse CUDA array and CUDA mipmapped array properties + + Attributes + ---------- + tileExtent : anon_struct0 + + miptailFirstLevel : unsigned int + First mip level at which the mip tail begins + miptailSize : unsigned long long + Total size of the mip tail. + flags : unsigned int + Flags will either be zero or cudaArraySparsePropertiesSingleMipTail + reserved : list[unsigned int] + + + Methods + ------- + getPtr() + Get memory address of class instance + """ + cdef cyruntime.cudaArraySparseProperties _pvt_val + cdef cyruntime.cudaArraySparseProperties* _pvt_ptr + cdef anon_struct0 _tileExtent + +cdef class cudaArrayMemoryRequirements: + """ + CUDA array and CUDA mipmapped array memory requirements + + Attributes + ---------- + size : size_t + Total size of the array. + alignment : size_t + Alignment necessary for mapping the array. + reserved : list[unsigned int] + + + Methods + ------- + getPtr() + Get memory address of class instance + """ + cdef cyruntime.cudaArrayMemoryRequirements _pvt_val + cdef cyruntime.cudaArrayMemoryRequirements* _pvt_ptr + +cdef class cudaPitchedPtr: + """ + CUDA Pitched memory pointer make_cudaPitchedPtr + + Attributes + ---------- + ptr : Any + Pointer to allocated memory + pitch : size_t + Pitch of allocated memory in bytes + xsize : size_t + Logical width of allocation in elements + ysize : size_t + Logical height of allocation in elements + + Methods + ------- + getPtr() + Get memory address of class instance + """ + cdef cyruntime.cudaPitchedPtr _pvt_val + cdef cyruntime.cudaPitchedPtr* _pvt_ptr + cdef _HelperInputVoidPtr _cyptr + +cdef class cudaExtent: + """ + CUDA extent make_cudaExtent + + Attributes + ---------- + width : size_t + Width in elements when referring to array memory, in bytes when + referring to linear memory + height : size_t + Height in elements + depth : size_t + Depth in elements + + Methods + ------- + getPtr() + Get memory address of class instance + """ + cdef cyruntime.cudaExtent _pvt_val + cdef cyruntime.cudaExtent* _pvt_ptr + +cdef class cudaPos: + """ + CUDA 3D position make_cudaPos + + Attributes + ---------- + x : size_t + x + y : size_t + y + z : size_t + z + + Methods + ------- + getPtr() + Get memory address of class instance + """ + cdef cyruntime.cudaPos _pvt_val + cdef cyruntime.cudaPos* _pvt_ptr + +cdef class cudaMemcpy3DParms: + """ + CUDA 3D memory copying parameters + + Attributes + ---------- + srcArray : cudaArray_t + Source memory address + srcPos : cudaPos + Source position offset + srcPtr : cudaPitchedPtr + Pitched source memory address + dstArray : cudaArray_t + Destination memory address + dstPos : cudaPos + Destination position offset + dstPtr : cudaPitchedPtr + Pitched destination memory address + extent : cudaExtent + Requested memory copy size + kind : cudaMemcpyKind + Type of transfer + + Methods + ------- + getPtr() + Get memory address of class instance + """ + cdef cyruntime.cudaMemcpy3DParms _pvt_val + cdef cyruntime.cudaMemcpy3DParms* _pvt_ptr + cdef cudaArray_t _srcArray + cdef cudaPos _srcPos + cdef cudaPitchedPtr _srcPtr + cdef cudaArray_t _dstArray + cdef cudaPos _dstPos + cdef cudaPitchedPtr _dstPtr + cdef cudaExtent _extent + +cdef class cudaMemcpyNodeParams: + """ + Memcpy node parameters + + Attributes + ---------- + flags : int + Must be zero + reserved : int + Must be zero + ctx : cudaExecutionContext_t + Context in which to run the memcpy. If NULL will try to use the + current context. + copyParams : cudaMemcpy3DParms + Parameters for the memory copy + + Methods + ------- + getPtr() + Get memory address of class instance + """ + cdef cyruntime.cudaMemcpyNodeParams _pvt_val + cdef cyruntime.cudaMemcpyNodeParams* _pvt_ptr + cdef cudaExecutionContext_t _ctx + cdef cudaMemcpy3DParms _copyParams + +cdef class cudaMemcpy3DPeerParms: + """ + CUDA 3D cross-device memory copying parameters + + Attributes + ---------- + srcArray : cudaArray_t + Source memory address + srcPos : cudaPos + Source position offset + srcPtr : cudaPitchedPtr + Pitched source memory address + srcDevice : int + Source device + dstArray : cudaArray_t + Destination memory address + dstPos : cudaPos + Destination position offset + dstPtr : cudaPitchedPtr + Pitched destination memory address + dstDevice : int + Destination device + extent : cudaExtent + Requested memory copy size + + Methods + ------- + getPtr() + Get memory address of class instance + """ + cdef cyruntime.cudaMemcpy3DPeerParms _pvt_val + cdef cyruntime.cudaMemcpy3DPeerParms* _pvt_ptr + cdef cudaArray_t _srcArray + cdef cudaPos _srcPos + cdef cudaPitchedPtr _srcPtr + cdef cudaArray_t _dstArray + cdef cudaPos _dstPos + cdef cudaPitchedPtr _dstPtr + cdef cudaExtent _extent + +cdef class cudaMemsetParams: + """ + CUDA Memset node parameters + + Attributes + ---------- + dst : Any + Destination device pointer + pitch : size_t + Pitch of destination device pointer. Unused if height is 1 + value : unsigned int + Value to be set + elementSize : unsigned int + Size of each element in bytes. Must be 1, 2, or 4. + width : size_t + Width of the row in elements + height : size_t + Number of rows + + Methods + ------- + getPtr() + Get memory address of class instance + """ + cdef cyruntime.cudaMemsetParams _pvt_val + cdef cyruntime.cudaMemsetParams* _pvt_ptr + cdef _HelperInputVoidPtr _cydst + +cdef class cudaMemsetParamsV2: + """ + CUDA Memset node parameters + + Attributes + ---------- + dst : Any + Destination device pointer + pitch : size_t + Pitch of destination device pointer. Unused if height is 1 + value : unsigned int + Value to be set + elementSize : unsigned int + Size of each element in bytes. Must be 1, 2, or 4. + width : size_t + Width of the row in elements + height : size_t + Number of rows + ctx : cudaExecutionContext_t + Context in which to run the memset. If NULL will try to use the + current context. + + Methods + ------- + getPtr() + Get memory address of class instance + """ + cdef cyruntime.cudaMemsetParamsV2 _pvt_val + cdef cyruntime.cudaMemsetParamsV2* _pvt_ptr + cdef _HelperInputVoidPtr _cydst + cdef cudaExecutionContext_t _ctx + +cdef class cudaAccessPolicyWindow: + """ + Specifies an access policy for a window, a contiguous extent of + memory beginning at base_ptr and ending at base_ptr + num_bytes. + Partition into many segments and assign segments such that. sum of + "hit segments" / window == approx. ratio. sum of "miss segments" / + window == approx 1-ratio. Segments and ratio specifications are + fitted to the capabilities of the architecture. Accesses in a hit + segment apply the hitProp access policy. Accesses in a miss segment + apply the missProp access policy. + + Attributes + ---------- + base_ptr : Any + Starting address of the access policy window. CUDA driver may align + it. + num_bytes : size_t + Size in bytes of the window policy. CUDA driver may restrict the + maximum size and alignment. + hitRatio : float + hitRatio specifies percentage of lines assigned hitProp, rest are + assigned missProp. + hitProp : cudaAccessProperty + ::CUaccessProperty set for hit. + missProp : cudaAccessProperty + ::CUaccessProperty set for miss. Must be either NORMAL or + STREAMING. + + Methods + ------- + getPtr() + Get memory address of class instance + """ + cdef cyruntime.cudaAccessPolicyWindow _pvt_val + cdef cyruntime.cudaAccessPolicyWindow* _pvt_ptr + cdef _HelperInputVoidPtr _cybase_ptr + +cdef class cudaHostNodeParams: + """ + CUDA host node parameters + + Attributes + ---------- + fn : cudaHostFn_t + The function to call when the node executes + userData : Any + Argument to pass to the function + + Methods + ------- + getPtr() + Get memory address of class instance + """ + cdef cyruntime.cudaHostNodeParams _pvt_val + cdef cyruntime.cudaHostNodeParams* _pvt_ptr + cdef cudaHostFn_t _fn + cdef _HelperInputVoidPtr _cyuserData + +cdef class cudaHostNodeParamsV2: + """ + CUDA host node parameters + + Attributes + ---------- + fn : cudaHostFn_t + The function to call when the node executes + userData : Any + Argument to pass to the function + syncMode : unsigned int + The synchronization mode to use for the host task + + Methods + ------- + getPtr() + Get memory address of class instance + """ + cdef cyruntime.cudaHostNodeParamsV2 _pvt_val + cdef cyruntime.cudaHostNodeParamsV2* _pvt_ptr + cdef cudaHostFn_t _fn + cdef _HelperInputVoidPtr _cyuserData + +cdef class anon_struct1: + """ + Attributes + ---------- + array : cudaArray_t + + + Methods + ------- + getPtr() + Get memory address of class instance + """ + cdef cyruntime.cudaResourceDesc* _pvt_ptr + cdef cudaArray_t _array + +cdef class anon_struct2: + """ + Attributes + ---------- + mipmap : cudaMipmappedArray_t + + + Methods + ------- + getPtr() + Get memory address of class instance + """ + cdef cyruntime.cudaResourceDesc* _pvt_ptr + cdef cudaMipmappedArray_t _mipmap + +cdef class anon_struct3: + """ + Attributes + ---------- + devPtr : Any + + desc : cudaChannelFormatDesc + + sizeInBytes : size_t + + + Methods + ------- + getPtr() + Get memory address of class instance + """ + cdef cyruntime.cudaResourceDesc* _pvt_ptr + cdef _HelperInputVoidPtr _cydevPtr + cdef cudaChannelFormatDesc _desc + +cdef class anon_struct4: + """ + Attributes + ---------- + devPtr : Any + + desc : cudaChannelFormatDesc + + width : size_t + + height : size_t + + pitchInBytes : size_t + + + Methods + ------- + getPtr() + Get memory address of class instance + """ + cdef cyruntime.cudaResourceDesc* _pvt_ptr + cdef _HelperInputVoidPtr _cydevPtr + cdef cudaChannelFormatDesc _desc + +cdef class anon_struct5: + """ + Attributes + ---------- + reserved : list[int] + + + Methods + ------- + getPtr() + Get memory address of class instance + """ + cdef cyruntime.cudaResourceDesc* _pvt_ptr + +cdef class anon_union0: + """ + Attributes + ---------- + array : anon_struct1 + + mipmap : anon_struct2 + + linear : anon_struct3 + + pitch2D : anon_struct4 + + reserved : anon_struct5 + + + Methods + ------- + getPtr() + Get memory address of class instance + """ + cdef cyruntime.cudaResourceDesc* _pvt_ptr + cdef anon_struct1 _array + cdef anon_struct2 _mipmap + cdef anon_struct3 _linear + cdef anon_struct4 _pitch2D + cdef anon_struct5 _reserved + +cdef class cudaResourceDesc: + """ + CUDA resource descriptor + + Attributes + ---------- + resType : cudaResourceType + Resource type + res : anon_union0 + + flags : unsigned int + Flags (must be zero) + + Methods + ------- + getPtr() + Get memory address of class instance + """ + cdef cyruntime.cudaResourceDesc* _val_ptr + cdef cyruntime.cudaResourceDesc* _pvt_ptr + cdef anon_union0 _res + +cdef class cudaResourceViewDesc: + """ + CUDA resource view descriptor + + Attributes + ---------- + format : cudaResourceViewFormat + Resource view format + width : size_t + Width of the resource view + height : size_t + Height of the resource view + depth : size_t + Depth of the resource view + firstMipmapLevel : unsigned int + First defined mipmap level + lastMipmapLevel : unsigned int + Last defined mipmap level + firstLayer : unsigned int + First layer index + lastLayer : unsigned int + Last layer index + reserved : list[unsigned int] + Must be zero + + Methods + ------- + getPtr() + Get memory address of class instance + """ + cdef cyruntime.cudaResourceViewDesc _pvt_val + cdef cyruntime.cudaResourceViewDesc* _pvt_ptr + +cdef class cudaPointerAttributes: + """ + CUDA pointer attributes + + Attributes + ---------- + type : cudaMemoryType + The type of memory - cudaMemoryTypeUnregistered, + cudaMemoryTypeHost, cudaMemoryTypeDevice or cudaMemoryTypeManaged. + device : int + The device against which the memory was allocated or registered. If + the memory type is cudaMemoryTypeDevice then this identifies the + device on which the memory referred physically resides. If the + memory type is cudaMemoryTypeHost or::cudaMemoryTypeManaged then + this identifies the device which was current when the memory was + allocated or registered (and if that device is deinitialized then + this allocation will vanish with that device's state). + devicePointer : Any + The address which may be dereferenced on the current device to + access the memory or NULL if no such address exists. + hostPointer : Any + The address which may be dereferenced on the host to access the + memory or NULL if no such address exists. CUDA doesn't check if + unregistered memory is allocated so this field may contain invalid + pointer if an invalid pointer has been passed to CUDA. + reserved : list[long] + Must be zero + + Methods + ------- + getPtr() + Get memory address of class instance + """ + cdef cyruntime.cudaPointerAttributes _pvt_val + cdef cyruntime.cudaPointerAttributes* _pvt_ptr + cdef _HelperInputVoidPtr _cydevicePointer + cdef _HelperInputVoidPtr _cyhostPointer + +cdef class cudaFuncAttributes: + """ + CUDA function attributes + + Attributes + ---------- + sharedSizeBytes : size_t + The size in bytes of statically-allocated shared memory per block + required by this function. This does not include dynamically- + allocated shared memory requested by the user at runtime. + constSizeBytes : size_t + The size in bytes of user-allocated constant memory required by + this function. + localSizeBytes : size_t + The size in bytes of local memory used by each thread of this + function. + maxThreadsPerBlock : int + The maximum number of threads per block, beyond which a launch of + the function would fail. This number depends on both the function + and the device on which the function is currently loaded. + numRegs : int + The number of registers used by each thread of this function. + ptxVersion : int + The PTX virtual architecture version for which the function was + compiled. This value is the major PTX version * 10 + the minor PTX + version, so a PTX version 1.3 function would return the value 13. + binaryVersion : int + The binary architecture version for which the function was + compiled. This value is the major binary version * 10 + the minor + binary version, so a binary version 1.3 function would return the + value 13. + cacheModeCA : int + The attribute to indicate whether the function has been compiled + with user specified option "-Xptxas --dlcm=ca" set. + maxDynamicSharedSizeBytes : int + The maximum size in bytes of dynamic shared memory per block for + this function. Any launch must have a dynamic shared memory size + smaller than this value. + preferredShmemCarveout : int + On devices where the L1 cache and shared memory use the same + hardware resources, this sets the shared memory carveout + preference, in percent of the maximum shared memory. Refer to + cudaDevAttrMaxSharedMemoryPerMultiprocessor. This is only a hint, + and the driver can choose a different ratio if required to execute + the function. See cudaFuncSetAttribute + clusterDimMustBeSet : int + If this attribute is set, the kernel must launch with a valid + cluster dimension specified. + requiredClusterWidth : int + The required cluster width/height/depth in blocks. The values must + either all be 0 or all be positive. The validity of the cluster + dimensions is otherwise checked at launch time. If the value is + set during compile time, it cannot be set at runtime. Setting it at + runtime should return cudaErrorNotPermitted. See + cudaFuncSetAttribute + requiredClusterHeight : int + + requiredClusterDepth : int + + clusterSchedulingPolicyPreference : int + The block scheduling policy of a function. See cudaFuncSetAttribute + nonPortableClusterSizeAllowed : int + Whether the function can be launched with non-portable cluster + size. 1 is allowed, 0 is disallowed. A non-portable cluster size + may only function on the specific SKUs the program is tested on. + The launch might fail if the program is run on a different hardware + platform. CUDA API provides cudaOccupancyMaxActiveClusters to + assist with checking whether the desired size can be launched on + the current device. Portable Cluster Size A portable cluster size + is guaranteed to be functional on all compute capabilities higher + than the target compute capability. The portable cluster size for + sm_90 is 8 blocks per cluster. This value may increase for future + compute capabilities. The specific hardware unit may support + higher cluster sizes that’s not guaranteed to be portable. See + cudaFuncSetAttribute + deviceNodeUpdateStatus : int + Whether the function can be updated on device. 1 means device node + update is supported, 0 is unsupported or driver is too old to check + the value. + reserved1 : int + + reserved : list[int] + Reserved for future use. + + Methods + ------- + getPtr() + Get memory address of class instance + """ + cdef cyruntime.cudaFuncAttributes _pvt_val + cdef cyruntime.cudaFuncAttributes* _pvt_ptr + +cdef class cudaMemLocation: + """ + Specifies a memory location. To specify a gpu, set type = + cudaMemLocationTypeDevice and set id = the gpu's device ordinal. To + specify a cpu NUMA node, set type = cudaMemLocationTypeHostNuma and + set id = host NUMA node id. + + Attributes + ---------- + type : cudaMemLocationType + Specifies the location type, which modifies the meaning of id. + id : int + Identifier for cudaMemLocationType::cudaMemLocationTypeDevice, + cudaMemLocationType::cudaMemLocationTypeHost, or + cudaMemLocationType::cudaMemLocationTypeHostNuma. + + Methods + ------- + getPtr() + Get memory address of class instance + """ + cdef cyruntime.cudaMemLocation* _val_ptr + cdef cyruntime.cudaMemLocation* _pvt_ptr + +cdef class cudaMemAccessDesc: + """ + Memory access descriptor + + Attributes + ---------- + location : cudaMemLocation + Location on which the request is to change it's accessibility + flags : cudaMemAccessFlags + ::CUmemProt accessibility flags to set on the request + + Methods + ------- + getPtr() + Get memory address of class instance + """ + cdef cyruntime.cudaMemAccessDesc _pvt_val + cdef cyruntime.cudaMemAccessDesc* _pvt_ptr + cdef cudaMemLocation _location + +cdef class cudaMemPoolProps: + """ + Specifies the properties of allocations made from the pool. + + Attributes + ---------- + allocType : cudaMemAllocationType + Allocation type. Currently must be specified as + cudaMemAllocationTypePinned + handleTypes : cudaMemAllocationHandleType + Handle types that will be supported by allocations from the pool. + location : cudaMemLocation + Location allocations should reside. + win32SecurityAttributes : Any + Windows-specific LPSECURITYATTRIBUTES required when + cudaMemHandleTypeWin32 is specified. This security attribute + defines the scope of which exported allocations may be tranferred + to other processes. In all other cases, this field is required to + be zero. + maxSize : size_t + Maximum pool size. When set to 0, defaults to a system dependent + value. + usage : unsigned short + Bitmask indicating intended usage for the pool. + reserved : bytes + reserved for future use, must be 0 + + Methods + ------- + getPtr() + Get memory address of class instance + """ + cdef cyruntime.cudaMemPoolProps _pvt_val + cdef cyruntime.cudaMemPoolProps* _pvt_ptr + cdef cudaMemLocation _location + cdef _HelperInputVoidPtr _cywin32SecurityAttributes + +cdef class cudaMemPoolPtrExportData: + """ + Opaque data for exporting a pool allocation + + Attributes + ---------- + reserved : bytes + + + Methods + ------- + getPtr() + Get memory address of class instance + """ + cdef cyruntime.cudaMemPoolPtrExportData _pvt_val + cdef cyruntime.cudaMemPoolPtrExportData* _pvt_ptr + +cdef class cudaMemAllocNodeParams: + """ + Memory allocation node parameters + + Attributes + ---------- + poolProps : cudaMemPoolProps + in: location where the allocation should reside (specified in + ::location). ::handleTypes must be cudaMemHandleTypeNone. IPC is + not supported. in: array of memory access descriptors. Used to + describe peer GPU access + accessDescs : cudaMemAccessDesc + in: number of memory access descriptors. Must not exceed the number + of GPUs. + accessDescCount : size_t + in: Number of `accessDescs`s + bytesize : size_t + in: size in bytes of the requested allocation + dptr : Any + out: address of the allocation returned by CUDA + + Methods + ------- + getPtr() + Get memory address of class instance + """ + cdef cyruntime.cudaMemAllocNodeParams _pvt_val + cdef cyruntime.cudaMemAllocNodeParams* _pvt_ptr + cdef cudaMemPoolProps _poolProps + cdef size_t _accessDescs_length + cdef cyruntime.cudaMemAccessDesc* _accessDescs + cdef _HelperInputVoidPtr _cydptr + +cdef class cudaMemAllocNodeParamsV2: + """ + Memory allocation node parameters + + Attributes + ---------- + poolProps : cudaMemPoolProps + in: location where the allocation should reside (specified in + ::location). ::handleTypes must be cudaMemHandleTypeNone. IPC is + not supported. in: array of memory access descriptors. Used to + describe peer GPU access + accessDescs : cudaMemAccessDesc + in: number of memory access descriptors. Must not exceed the number + of GPUs. + accessDescCount : size_t + in: Number of `accessDescs`s + bytesize : size_t + in: size in bytes of the requested allocation + dptr : Any + out: address of the allocation returned by CUDA + + Methods + ------- + getPtr() + Get memory address of class instance + """ + cdef cyruntime.cudaMemAllocNodeParamsV2 _pvt_val + cdef cyruntime.cudaMemAllocNodeParamsV2* _pvt_ptr + cdef cudaMemPoolProps _poolProps + cdef size_t _accessDescs_length + cdef cyruntime.cudaMemAccessDesc* _accessDescs + cdef _HelperInputVoidPtr _cydptr + +cdef class cudaMemFreeNodeParams: + """ + Memory free node parameters + + Attributes + ---------- + dptr : Any + in: the pointer to free + + Methods + ------- + getPtr() + Get memory address of class instance + """ + cdef cyruntime.cudaMemFreeNodeParams _pvt_val + cdef cyruntime.cudaMemFreeNodeParams* _pvt_ptr + cdef _HelperInputVoidPtr _cydptr + +cdef class cudaMemcpyAttributes: + """ + Attributes specific to copies within a batch. For more details on + usage see cudaMemcpyBatchAsync. + + Attributes + ---------- + srcAccessOrder : cudaMemcpySrcAccessOrder + Source access ordering to be observed for copies with this + attribute. + srcLocHint : cudaMemLocation + Hint location for the source operand. Ignored when the pointers are + not managed memory or memory allocated outside CUDA. + dstLocHint : cudaMemLocation + Hint location for the destination operand. Ignored when the + pointers are not managed memory or memory allocated outside CUDA. + flags : unsigned int + Additional flags for copies with this attribute. See + cudaMemcpyFlags. + + Methods + ------- + getPtr() + Get memory address of class instance + """ + cdef cyruntime.cudaMemcpyAttributes _pvt_val + cdef cyruntime.cudaMemcpyAttributes* _pvt_ptr + cdef cudaMemLocation _srcLocHint + cdef cudaMemLocation _dstLocHint + +cdef class cudaOffset3D: + """ + Struct representing offset into a cudaArray_t in elements + + Attributes + ---------- + x : size_t + + y : size_t + + z : size_t + + + Methods + ------- + getPtr() + Get memory address of class instance + """ + cdef cyruntime.cudaOffset3D _pvt_val + cdef cyruntime.cudaOffset3D* _pvt_ptr + +cdef class anon_struct6: + """ + Attributes + ---------- + ptr : Any + + rowLength : size_t + + layerHeight : size_t + + locHint : cudaMemLocation + + + Methods + ------- + getPtr() + Get memory address of class instance + """ + cdef cyruntime.cudaMemcpy3DOperand* _pvt_ptr + cdef _HelperInputVoidPtr _cyptr + cdef cudaMemLocation _locHint + +cdef class anon_struct7: + """ + Attributes + ---------- + array : cudaArray_t + + offset : cudaOffset3D + + + Methods + ------- + getPtr() + Get memory address of class instance + """ + cdef cyruntime.cudaMemcpy3DOperand* _pvt_ptr + cdef cudaArray_t _array + cdef cudaOffset3D _offset + +cdef class anon_union2: + """ + Attributes + ---------- + ptr : anon_struct6 + + array : anon_struct7 + + + Methods + ------- + getPtr() + Get memory address of class instance + """ + cdef cyruntime.cudaMemcpy3DOperand* _pvt_ptr + cdef anon_struct6 _ptr + cdef anon_struct7 _array + +cdef class cudaMemcpy3DOperand: + """ + Struct representing an operand for copy with cudaMemcpy3DBatchAsync + + Attributes + ---------- + type : cudaMemcpy3DOperandType + + op : anon_union2 + + + Methods + ------- + getPtr() + Get memory address of class instance + """ + cdef cyruntime.cudaMemcpy3DOperand* _val_ptr + cdef cyruntime.cudaMemcpy3DOperand* _pvt_ptr + cdef anon_union2 _op + +cdef class cudaMemcpy3DBatchOp: + """ + Attributes + ---------- + src : cudaMemcpy3DOperand + Source memcpy operand. + dst : cudaMemcpy3DOperand + Destination memcpy operand. + extent : cudaExtent + Extents of the memcpy between src and dst. The width, height and + depth components must not be 0. + srcAccessOrder : cudaMemcpySrcAccessOrder + Source access ordering to be observed for copy from src to dst. + flags : unsigned int + Additional flags for copy from src to dst. See cudaMemcpyFlags. + + Methods + ------- + getPtr() + Get memory address of class instance + """ + cdef cyruntime.cudaMemcpy3DBatchOp _pvt_val + cdef cyruntime.cudaMemcpy3DBatchOp* _pvt_ptr + cdef cudaMemcpy3DOperand _src + cdef cudaMemcpy3DOperand _dst + cdef cudaExtent _extent + +cdef class CUuuid_st: + """ + Attributes + ---------- + bytes : bytes + < CUDA definition of UUID + + Methods + ------- + getPtr() + Get memory address of class instance + """ + cdef cyruntime.CUuuid_st _pvt_val + cdef cyruntime.CUuuid_st* _pvt_ptr + +cdef class cudaDeviceProp: + """ + CUDA device properties + + Attributes + ---------- + name : bytes + ASCII string identifying device + uuid : cudaUUID_t + 16-byte unique identifier + luid : bytes + 8-byte locally unique identifier. Value is undefined on TCC and + non-Windows platforms + luidDeviceNodeMask : unsigned int + LUID device node mask. Value is undefined on TCC and non-Windows + platforms + totalGlobalMem : size_t + Global memory available on device in bytes + sharedMemPerBlock : size_t + Shared memory available per block in bytes + regsPerBlock : int + 32-bit registers available per block + warpSize : int + Warp size in threads + memPitch : size_t + Maximum pitch in bytes allowed by memory copies + maxThreadsPerBlock : int + Maximum number of threads per block + maxThreadsDim : list[int] + Maximum size of each dimension of a block + maxGridSize : list[int] + Maximum size of each dimension of a grid + totalConstMem : size_t + Constant memory available on device in bytes + major : int + Major compute capability + minor : int + Minor compute capability + textureAlignment : size_t + Alignment requirement for textures + texturePitchAlignment : size_t + Pitch alignment requirement for texture references bound to pitched + memory + multiProcessorCount : int + Number of multiprocessors on device + integrated : int + Device is integrated as opposed to discrete + canMapHostMemory : int + Device can map host memory with + cudaHostAlloc/cudaHostGetDevicePointer + maxTexture1D : int + Maximum 1D texture size + maxTexture1DMipmap : int + Maximum 1D mipmapped texture size + maxTexture2D : list[int] + Maximum 2D texture dimensions + maxTexture2DMipmap : list[int] + Maximum 2D mipmapped texture dimensions + maxTexture2DLinear : list[int] + Maximum dimensions (width, height, pitch) for 2D textures bound to + pitched memory + maxTexture2DGather : list[int] + Maximum 2D texture dimensions if texture gather operations have to + be performed + maxTexture3D : list[int] + Maximum 3D texture dimensions + maxTexture3DAlt : list[int] + Maximum alternate 3D texture dimensions + maxTextureCubemap : int + Maximum Cubemap texture dimensions + maxTexture1DLayered : list[int] + Maximum 1D layered texture dimensions + maxTexture2DLayered : list[int] + Maximum 2D layered texture dimensions + maxTextureCubemapLayered : list[int] + Maximum Cubemap layered texture dimensions + maxSurface1D : int + Maximum 1D surface size + maxSurface2D : list[int] + Maximum 2D surface dimensions + maxSurface3D : list[int] + Maximum 3D surface dimensions + maxSurface1DLayered : list[int] + Maximum 1D layered surface dimensions + maxSurface2DLayered : list[int] + Maximum 2D layered surface dimensions + maxSurfaceCubemap : int + Maximum Cubemap surface dimensions + maxSurfaceCubemapLayered : list[int] + Maximum Cubemap layered surface dimensions + surfaceAlignment : size_t + Alignment requirements for surfaces + concurrentKernels : int + Device can possibly execute multiple kernels concurrently + ECCEnabled : int + Device has ECC support enabled + pciBusID : int + PCI bus ID of the device + pciDeviceID : int + PCI device ID of the device + pciDomainID : int + PCI domain ID of the device + tccDriver : int + 1 if device is a Tesla device using TCC driver, 0 otherwise + asyncEngineCount : int + Number of asynchronous engines + unifiedAddressing : int + Device shares a unified address space with the host + memoryBusWidth : int + Global memory bus width in bits + l2CacheSize : int + Size of L2 cache in bytes + persistingL2CacheMaxSize : int + Device's maximum l2 persisting lines capacity setting in bytes + maxThreadsPerMultiProcessor : int + Maximum resident threads per multiprocessor + streamPrioritiesSupported : int + Device supports stream priorities + globalL1CacheSupported : int + Device supports caching globals in L1 + localL1CacheSupported : int + Device supports caching locals in L1 + sharedMemPerMultiprocessor : size_t + Shared memory available per multiprocessor in bytes + regsPerMultiprocessor : int + 32-bit registers available per multiprocessor + managedMemory : int + Device supports allocating managed memory on this system + isMultiGpuBoard : int + Device is on a multi-GPU board + multiGpuBoardGroupID : int + Unique identifier for a group of devices on the same multi-GPU + board + hostNativeAtomicSupported : int + Link between the device and the host supports native atomic + operations + pageableMemoryAccess : int + Device supports coherently accessing pageable memory without + calling cudaHostRegister on it + concurrentManagedAccess : int + Device can coherently access managed memory concurrently with the + CPU + computePreemptionSupported : int + Device supports Compute Preemption + canUseHostPointerForRegisteredMem : int + Device can access host registered memory at the same virtual + address as the CPU + cooperativeLaunch : int + Device supports launching cooperative kernels via + cudaLaunchCooperativeKernel + sharedMemPerBlockOptin : size_t + Per device maximum shared memory per block usable by special opt in + pageableMemoryAccessUsesHostPageTables : int + Device accesses pageable memory via the host's page tables + directManagedMemAccessFromHost : int + Host can directly access managed memory on the device without + migration. + maxBlocksPerMultiProcessor : int + Maximum number of resident blocks per multiprocessor + accessPolicyMaxWindowSize : int + The maximum value of cudaAccessPolicyWindow::num_bytes. + reservedSharedMemPerBlock : size_t + Shared memory reserved by CUDA driver per block in bytes + hostRegisterSupported : int + Device supports host memory registration via cudaHostRegister. + sparseCudaArraySupported : int + 1 if the device supports sparse CUDA arrays and sparse CUDA + mipmapped arrays, 0 otherwise + hostRegisterReadOnlySupported : int + Device supports using the cudaHostRegister flag + cudaHostRegisterReadOnly to register memory that must be mapped as + read-only to the GPU + timelineSemaphoreInteropSupported : int + External timeline semaphore interop is supported on the device + memoryPoolsSupported : int + 1 if the device supports using the cudaMallocAsync and cudaMemPool + family of APIs, 0 otherwise + gpuDirectRDMASupported : int + 1 if the device supports GPUDirect RDMA APIs, 0 otherwise + gpuDirectRDMAFlushWritesOptions : unsigned int + Bitmask to be interpreted according to the + cudaFlushGPUDirectRDMAWritesOptions enum + gpuDirectRDMAWritesOrdering : int + See the cudaGPUDirectRDMAWritesOrdering enum for numerical values + memoryPoolSupportedHandleTypes : unsigned int + Bitmask of handle types supported with mempool-based IPC + deferredMappingCudaArraySupported : int + 1 if the device supports deferred mapping CUDA arrays and CUDA + mipmapped arrays + ipcEventSupported : int + Device supports IPC Events. + clusterLaunch : int + Indicates device supports cluster launch + unifiedFunctionPointers : int + Indicates device supports unified pointers + deviceNumaConfig : int + NUMA configuration of a device: value is of type + cudaDeviceNumaConfig enum + deviceNumaId : int + NUMA node ID of the GPU memory + mpsEnabled : int + Indicates if contexts created on this device will be shared via MPS + hostNumaId : int + NUMA ID of the host node closest to the device or -1 when system + does not support NUMA + gpuPciDeviceID : unsigned int + The combined 16-bit PCI device ID and 16-bit PCI vendor ID + gpuPciSubsystemID : unsigned int + The combined 16-bit PCI subsystem ID and 16-bit PCI subsystem + vendor ID + hostNumaMultinodeIpcSupported : int + 1 if the device supports HostNuma location IPC between nodes in a + multi-node system. + reserved : list[int] + Reserved for future use + + Methods + ------- + getPtr() + Get memory address of class instance + """ + cdef cyruntime.cudaDeviceProp _pvt_val + cdef cyruntime.cudaDeviceProp* _pvt_ptr + cdef cudaUUID_t _uuid + +cdef class cudaIpcEventHandle_st: + """ + CUDA IPC event handle + + Attributes + ---------- + reserved : bytes + + + Methods + ------- + getPtr() + Get memory address of class instance + """ + cdef cyruntime.cudaIpcEventHandle_st _pvt_val + cdef cyruntime.cudaIpcEventHandle_st* _pvt_ptr + +cdef class cudaIpcMemHandle_st: + """ + CUDA IPC memory handle + + Attributes + ---------- + reserved : bytes + + + Methods + ------- + getPtr() + Get memory address of class instance + """ + cdef cyruntime.cudaIpcMemHandle_st _pvt_val + cdef cyruntime.cudaIpcMemHandle_st* _pvt_ptr + +cdef class cudaMemFabricHandle_st: + """ + Attributes + ---------- + reserved : bytes + + + Methods + ------- + getPtr() + Get memory address of class instance + """ + cdef cyruntime.cudaMemFabricHandle_st _pvt_val + cdef cyruntime.cudaMemFabricHandle_st* _pvt_ptr + +cdef class anon_struct8: + """ + Attributes + ---------- + handle : Any + + name : Any + + + Methods + ------- + getPtr() + Get memory address of class instance + """ + cdef cyruntime.cudaExternalMemoryHandleDesc* _pvt_ptr + cdef _HelperInputVoidPtr _cyhandle + cdef _HelperInputVoidPtr _cyname + +cdef class anon_union3: + """ + Attributes + ---------- + fd : int + + win32 : anon_struct8 + + nvSciBufObject : Any + + + Methods + ------- + getPtr() + Get memory address of class instance + """ + cdef cyruntime.cudaExternalMemoryHandleDesc* _pvt_ptr + cdef anon_struct8 _win32 + cdef _HelperInputVoidPtr _cynvSciBufObject + +cdef class cudaExternalMemoryHandleDesc: + """ + External memory handle descriptor + + Attributes + ---------- + type : cudaExternalMemoryHandleType + Type of the handle + handle : anon_union3 + + size : unsigned long long + Size of the memory allocation + flags : unsigned int + Flags must either be zero or cudaExternalMemoryDedicated + reserved : list[unsigned int] + Must be zero + + Methods + ------- + getPtr() + Get memory address of class instance + """ + cdef cyruntime.cudaExternalMemoryHandleDesc* _val_ptr + cdef cyruntime.cudaExternalMemoryHandleDesc* _pvt_ptr + cdef anon_union3 _handle + +cdef class cudaExternalMemoryBufferDesc: + """ + External memory buffer descriptor + + Attributes + ---------- + offset : unsigned long long + Offset into the memory object where the buffer's base is + size : unsigned long long + Size of the buffer + flags : unsigned int + Flags reserved for future use. Must be zero. + reserved : list[unsigned int] + Must be zero + + Methods + ------- + getPtr() + Get memory address of class instance + """ + cdef cyruntime.cudaExternalMemoryBufferDesc _pvt_val + cdef cyruntime.cudaExternalMemoryBufferDesc* _pvt_ptr + +cdef class cudaExternalMemoryMipmappedArrayDesc: + """ + External memory mipmap descriptor + + Attributes + ---------- + offset : unsigned long long + Offset into the memory object where the base level of the mipmap + chain is. + formatDesc : cudaChannelFormatDesc + Format of base level of the mipmap chain + extent : cudaExtent + Dimensions of base level of the mipmap chain + flags : unsigned int + Flags associated with CUDA mipmapped arrays. See + cudaMallocMipmappedArray + numLevels : unsigned int + Total number of levels in the mipmap chain + reserved : list[unsigned int] + Must be zero + + Methods + ------- + getPtr() + Get memory address of class instance + """ + cdef cyruntime.cudaExternalMemoryMipmappedArrayDesc _pvt_val + cdef cyruntime.cudaExternalMemoryMipmappedArrayDesc* _pvt_ptr + cdef cudaChannelFormatDesc _formatDesc + cdef cudaExtent _extent + +cdef class anon_struct9: + """ + Attributes + ---------- + handle : Any + + name : Any + + + Methods + ------- + getPtr() + Get memory address of class instance + """ + cdef cyruntime.cudaExternalSemaphoreHandleDesc* _pvt_ptr + cdef _HelperInputVoidPtr _cyhandle + cdef _HelperInputVoidPtr _cyname + +cdef class anon_union4: + """ + Attributes + ---------- + fd : int + + win32 : anon_struct9 + + nvSciSyncObj : Any + + + Methods + ------- + getPtr() + Get memory address of class instance + """ + cdef cyruntime.cudaExternalSemaphoreHandleDesc* _pvt_ptr + cdef anon_struct9 _win32 + cdef _HelperInputVoidPtr _cynvSciSyncObj + +cdef class cudaExternalSemaphoreHandleDesc: + """ + External semaphore handle descriptor + + Attributes + ---------- + type : cudaExternalSemaphoreHandleType + Type of the handle + handle : anon_union4 + + flags : unsigned int + Flags reserved for the future. Must be zero. + reserved : list[unsigned int] + Must be zero + + Methods + ------- + getPtr() + Get memory address of class instance + """ + cdef cyruntime.cudaExternalSemaphoreHandleDesc* _val_ptr + cdef cyruntime.cudaExternalSemaphoreHandleDesc* _pvt_ptr + cdef anon_union4 _handle + +cdef class anon_struct10: + """ + Attributes + ---------- + value : unsigned long long + + + Methods + ------- + getPtr() + Get memory address of class instance + """ + cdef cyruntime.cudaExternalSemaphoreSignalParams* _pvt_ptr + +cdef class anon_union5: + """ + Attributes + ---------- + fence : Any + + reserved : unsigned long long + + + Methods + ------- + getPtr() + Get memory address of class instance + """ + cdef cyruntime.cudaExternalSemaphoreSignalParams* _pvt_ptr + cdef _HelperInputVoidPtr _cyfence + +cdef class anon_struct11: + """ + Attributes + ---------- + key : unsigned long long + + + Methods + ------- + getPtr() + Get memory address of class instance + """ + cdef cyruntime.cudaExternalSemaphoreSignalParams* _pvt_ptr + +cdef class anon_struct12: + """ + Attributes + ---------- + fence : anon_struct10 + + nvSciSync : anon_union5 + + keyedMutex : anon_struct11 + + reserved : list[unsigned int] + + + Methods + ------- + getPtr() + Get memory address of class instance + """ + cdef cyruntime.cudaExternalSemaphoreSignalParams* _pvt_ptr + cdef anon_struct10 _fence + cdef anon_union5 _nvSciSync + cdef anon_struct11 _keyedMutex + +cdef class cudaExternalSemaphoreSignalParams: + """ + External semaphore signal parameters, compatible with driver type + + Attributes + ---------- + params : anon_struct12 + + flags : unsigned int + Only when cudaExternalSemaphoreSignalParams is used to signal a + cudaExternalSemaphore_t of type + cudaExternalSemaphoreHandleTypeNvSciSync, the valid flag is + cudaExternalSemaphoreSignalSkipNvSciBufMemSync: which indicates + that while signaling the cudaExternalSemaphore_t, no memory + synchronization operations should be performed for any external + memory object imported as cudaExternalMemoryHandleTypeNvSciBuf. For + all other types of cudaExternalSemaphore_t, flags must be zero. + reserved : list[unsigned int] + + + Methods + ------- + getPtr() + Get memory address of class instance + """ + cdef cyruntime.cudaExternalSemaphoreSignalParams _pvt_val + cdef cyruntime.cudaExternalSemaphoreSignalParams* _pvt_ptr + cdef anon_struct12 _params + +cdef class anon_struct13: + """ + Attributes + ---------- + value : unsigned long long + + + Methods + ------- + getPtr() + Get memory address of class instance + """ + cdef cyruntime.cudaExternalSemaphoreWaitParams* _pvt_ptr + +cdef class anon_union6: + """ + Attributes + ---------- + fence : Any + + reserved : unsigned long long + + + Methods + ------- + getPtr() + Get memory address of class instance + """ + cdef cyruntime.cudaExternalSemaphoreWaitParams* _pvt_ptr + cdef _HelperInputVoidPtr _cyfence + +cdef class anon_struct14: + """ + Attributes + ---------- + key : unsigned long long + + timeoutMs : unsigned int + + + Methods + ------- + getPtr() + Get memory address of class instance + """ + cdef cyruntime.cudaExternalSemaphoreWaitParams* _pvt_ptr + +cdef class anon_struct15: + """ + Attributes + ---------- + fence : anon_struct13 + + nvSciSync : anon_union6 + + keyedMutex : anon_struct14 + + reserved : list[unsigned int] + + + Methods + ------- + getPtr() + Get memory address of class instance + """ + cdef cyruntime.cudaExternalSemaphoreWaitParams* _pvt_ptr + cdef anon_struct13 _fence + cdef anon_union6 _nvSciSync + cdef anon_struct14 _keyedMutex + +cdef class cudaExternalSemaphoreWaitParams: + """ + External semaphore wait parameters, compatible with driver type + + Attributes + ---------- + params : anon_struct15 + + flags : unsigned int + Only when cudaExternalSemaphoreSignalParams is used to signal a + cudaExternalSemaphore_t of type + cudaExternalSemaphoreHandleTypeNvSciSync, the valid flag is + cudaExternalSemaphoreSignalSkipNvSciBufMemSync: which indicates + that while waiting for the cudaExternalSemaphore_t, no memory + synchronization operations should be performed for any external + memory object imported as cudaExternalMemoryHandleTypeNvSciBuf. For + all other types of cudaExternalSemaphore_t, flags must be zero. + reserved : list[unsigned int] + + + Methods + ------- + getPtr() + Get memory address of class instance + """ + cdef cyruntime.cudaExternalSemaphoreWaitParams _pvt_val + cdef cyruntime.cudaExternalSemaphoreWaitParams* _pvt_ptr + cdef anon_struct15 _params + +cdef class cudaDevSmResource: + """ + Data for SM-related resources All parameters in this structure are + OUTPUT only. Do not write to any of the fields in this structure. + + Attributes + ---------- + smCount : unsigned int + The amount of streaming multiprocessors available in this resource. + minSmPartitionSize : unsigned int + The minimum number of streaming multiprocessors required to + partition this resource. + smCoscheduledAlignment : unsigned int + The number of streaming multiprocessors in this resource that are + guaranteed to be co-scheduled on the same GPU processing cluster. + smCount will be a multiple of this value, unless the backfill flag + is set. + flags : unsigned int + The flags set on this SM resource. For available flags see + cudaDevSmResourceGroup_flags. + + Methods + ------- + getPtr() + Get memory address of class instance + """ + cdef cyruntime.cudaDevSmResource _pvt_val + cdef cyruntime.cudaDevSmResource* _pvt_ptr + +cdef class cudaDevWorkqueueConfigResource: + """ + Data for workqueue configuration related resources + + Attributes + ---------- + device : int + The device on which the workqueue resources are available + wqConcurrencyLimit : unsigned int + The expected maximum number of concurrent stream-ordered workloads + sharingScope : cudaDevWorkqueueConfigScope + The sharing scope for the workqueue resources + + Methods + ------- + getPtr() + Get memory address of class instance + """ + cdef cyruntime.cudaDevWorkqueueConfigResource _pvt_val + cdef cyruntime.cudaDevWorkqueueConfigResource* _pvt_ptr + +cdef class cudaDevWorkqueueResource: + """ + Handle to a pre-existing workqueue related resource + + Attributes + ---------- + reserved : bytes + Reserved for future use + + Methods + ------- + getPtr() + Get memory address of class instance + """ + cdef cyruntime.cudaDevWorkqueueResource _pvt_val + cdef cyruntime.cudaDevWorkqueueResource* _pvt_ptr + +cdef class cudaDevSmResourceGroupParams_st: + """ + Input data for splitting SMs + + Attributes + ---------- + smCount : unsigned int + The amount of SMs available in this resource. + coscheduledSmCount : unsigned int + The amount of co-scheduled SMs grouped together for locality + purposes. + preferredCoscheduledSmCount : unsigned int + When possible, combine co-scheduled groups together into larger + groups of this size. + flags : unsigned int + Combination of `cudaDevSmResourceGroup_flags` values to indicate + this this group is created. + reserved : list[unsigned int] + Reserved for future use - ensure this is zero initialized. + + Methods + ------- + getPtr() + Get memory address of class instance + """ + cdef cyruntime.cudaDevSmResourceGroupParams_st _pvt_val + cdef cyruntime.cudaDevSmResourceGroupParams_st* _pvt_ptr + +cdef class cudaDevResource_st: + """ + A tagged union describing different resources identified by the + type field. This structure should not be directly modified outside + of the API that created it. struct enumcudaDevResourceTypetype; + union structcudaDevSmResourcesm; + structcudaDevWorkqueueConfigResourcewqConfig; + structcudaDevWorkqueueResourcewq; ; ; - If `typename` is + `cudaDevResourceTypeInvalid`, this resoure is not valid and cannot + be further accessed. - If `typename` is `cudaDevResourceTypeSm`, + the cudaDevSmResource structure `sm` is filled in. For example, + `sm.smCount` will reflect the amount of streaming multiprocessors + available in this resource. - If `typename` is + `cudaDevResourceTypeWorkqueueConfig`, the + cudaDevWorkqueueConfigResource structure `wqConfig` is filled in. + - If `typename` is `cudaDevResourceTypeWorkqueue`, the + cudaDevWorkqueueResource structure `wq` is filled in. + + Attributes + ---------- + type : cudaDevResourceType + Type of resource, dictates which union field was last set + _internal_padding : bytes + + sm : cudaDevSmResource + Resource corresponding to cudaDevResourceTypeSm `typename`. + wqConfig : cudaDevWorkqueueConfigResource + Resource corresponding to cudaDevResourceTypeWorkqueueConfig + `typename`. + wq : cudaDevWorkqueueResource + Resource corresponding to cudaDevResourceTypeWorkqueue `typename`. + _oversize : bytes + + nextResource : cudaDevResource_st + + + Methods + ------- + getPtr() + Get memory address of class instance + """ + cdef cyruntime.cudaDevResource_st* _val_ptr + cdef cyruntime.cudaDevResource_st* _pvt_ptr + cdef cudaDevSmResource _sm + cdef cudaDevWorkqueueConfigResource _wqConfig + cdef cudaDevWorkqueueResource _wq + cdef size_t _nextResource_length + cdef cyruntime.cudaDevResource_st* _nextResource + +cdef class cudalibraryHostUniversalFunctionAndDataTable: + """ + Attributes + ---------- + functionTable : Any + + functionWindowSize : size_t + + dataTable : Any + + dataWindowSize : size_t + + + Methods + ------- + getPtr() + Get memory address of class instance + """ + cdef cyruntime.cudalibraryHostUniversalFunctionAndDataTable _pvt_val + cdef cyruntime.cudalibraryHostUniversalFunctionAndDataTable* _pvt_ptr + cdef _HelperInputVoidPtr _cyfunctionTable + cdef _HelperInputVoidPtr _cydataTable + +cdef class cudaKernelNodeParams: + """ + CUDA GPU kernel node parameters + + Attributes + ---------- + func : Any + Kernel to launch + gridDim : dim3 + Grid dimensions + blockDim : dim3 + Block dimensions + sharedMemBytes : unsigned int + Dynamic shared-memory size per thread block in bytes + kernelParams : Any + Array of pointers to individual kernel arguments + extra : Any + Pointer to kernel arguments in the "extra" format + + Methods + ------- + getPtr() + Get memory address of class instance + """ + cdef cyruntime.cudaKernelNodeParams _pvt_val + cdef cyruntime.cudaKernelNodeParams* _pvt_ptr + cdef _HelperInputVoidPtr _cyfunc + cdef dim3 _gridDim + cdef dim3 _blockDim + cdef _HelperKernelParams _cykernelParams + +cdef class cudaKernelNodeParamsV2: + """ + CUDA GPU kernel node parameters + + Attributes + ---------- + func : Any + functionType = cudaKernelFucntionTypeDevice + kern : cudaKernel_t + functionType = cudaKernelFucntionTypeKernel + cuFunc : cudaFunction_t + functionType = cudaKernelFucntionTypeFunction + gridDim : dim3 + Grid dimensions + blockDim : dim3 + Block dimensions + sharedMemBytes : unsigned int + Dynamic shared-memory size per thread block in bytes + kernelParams : Any + Array of pointers to individual kernel arguments + extra : Any + Pointer to kernel arguments in the "extra" format + ctx : cudaExecutionContext_t + Context in which to run the kernel. If NULL will try to use the + current context. + functionType : cudaKernelFunctionType + Type of handle passed in the func/kern/cuFunc union above + + Methods + ------- + getPtr() + Get memory address of class instance + """ + cdef cyruntime.cudaKernelNodeParamsV2* _val_ptr + cdef cyruntime.cudaKernelNodeParamsV2* _pvt_ptr + cdef _HelperInputVoidPtr _cyfunc + cdef cudaKernel_t _kern + cdef cudaFunction_t _cuFunc + cdef dim3 _gridDim + cdef dim3 _blockDim + cdef _HelperKernelParams _cykernelParams + cdef cudaExecutionContext_t _ctx + +cdef class cudaExternalSemaphoreSignalNodeParams: + """ + External semaphore signal node parameters + + Attributes + ---------- + extSemArray : cudaExternalSemaphore_t + Array of external semaphore handles. + paramsArray : cudaExternalSemaphoreSignalParams + Array of external semaphore signal parameters. + numExtSems : unsigned int + Number of handles and parameters supplied in extSemArray and + paramsArray. + + Methods + ------- + getPtr() + Get memory address of class instance + """ + cdef cyruntime.cudaExternalSemaphoreSignalNodeParams _pvt_val + cdef cyruntime.cudaExternalSemaphoreSignalNodeParams* _pvt_ptr + cdef size_t _extSemArray_length + cdef cyruntime.cudaExternalSemaphore_t* _extSemArray + cdef size_t _paramsArray_length + cdef cyruntime.cudaExternalSemaphoreSignalParams* _paramsArray + +cdef class cudaExternalSemaphoreSignalNodeParamsV2: + """ + External semaphore signal node parameters + + Attributes + ---------- + extSemArray : cudaExternalSemaphore_t + Array of external semaphore handles. + paramsArray : cudaExternalSemaphoreSignalParams + Array of external semaphore signal parameters. + numExtSems : unsigned int + Number of handles and parameters supplied in extSemArray and + paramsArray. + + Methods + ------- + getPtr() + Get memory address of class instance + """ + cdef cyruntime.cudaExternalSemaphoreSignalNodeParamsV2 _pvt_val + cdef cyruntime.cudaExternalSemaphoreSignalNodeParamsV2* _pvt_ptr + cdef size_t _extSemArray_length + cdef cyruntime.cudaExternalSemaphore_t* _extSemArray + cdef size_t _paramsArray_length + cdef cyruntime.cudaExternalSemaphoreSignalParams* _paramsArray + +cdef class cudaExternalSemaphoreWaitNodeParams: + """ + External semaphore wait node parameters + + Attributes + ---------- + extSemArray : cudaExternalSemaphore_t + Array of external semaphore handles. + paramsArray : cudaExternalSemaphoreWaitParams + Array of external semaphore wait parameters. + numExtSems : unsigned int + Number of handles and parameters supplied in extSemArray and + paramsArray. + + Methods + ------- + getPtr() + Get memory address of class instance + """ + cdef cyruntime.cudaExternalSemaphoreWaitNodeParams _pvt_val + cdef cyruntime.cudaExternalSemaphoreWaitNodeParams* _pvt_ptr + cdef size_t _extSemArray_length + cdef cyruntime.cudaExternalSemaphore_t* _extSemArray + cdef size_t _paramsArray_length + cdef cyruntime.cudaExternalSemaphoreWaitParams* _paramsArray + +cdef class cudaExternalSemaphoreWaitNodeParamsV2: + """ + External semaphore wait node parameters + + Attributes + ---------- + extSemArray : cudaExternalSemaphore_t + Array of external semaphore handles. + paramsArray : cudaExternalSemaphoreWaitParams + Array of external semaphore wait parameters. + numExtSems : unsigned int + Number of handles and parameters supplied in extSemArray and + paramsArray. + + Methods + ------- + getPtr() + Get memory address of class instance + """ + cdef cyruntime.cudaExternalSemaphoreWaitNodeParamsV2 _pvt_val + cdef cyruntime.cudaExternalSemaphoreWaitNodeParamsV2* _pvt_ptr + cdef size_t _extSemArray_length + cdef cyruntime.cudaExternalSemaphore_t* _extSemArray + cdef size_t _paramsArray_length + cdef cyruntime.cudaExternalSemaphoreWaitParams* _paramsArray + +cdef class cudaConditionalNodeParams: + """ + CUDA conditional node parameters + + Attributes + ---------- + handle : cudaGraphConditionalHandle + Conditional node handle. Handles must be created in advance of + creating the node using cudaGraphConditionalHandleCreate. + type : cudaGraphConditionalNodeType + Type of conditional node. + size : unsigned int + Size of graph output array. Allowed values are 1 for + cudaGraphCondTypeWhile, 1 or 2 for cudaGraphCondTypeIf, or any + value greater than zero for cudaGraphCondTypeSwitch. + phGraph_out : cudaGraph_t + CUDA-owned array populated with conditional node child graphs + during creation of the node. Valid for the lifetime of the + conditional node. The contents of the graph(s) are subject to the + following constraints: - Allowed node types are kernel nodes, + empty nodes, child graphs, memsets, memcopies, and conditionals. + This applies recursively to child graphs and conditional bodies. + - All kernels, including kernels in nested conditionals or child + graphs at any level, must belong to the same CUDA context. + These graphs may be populated using graph node creation APIs or + cudaStreamBeginCaptureToGraph. cudaGraphCondTypeIf: phGraph_out[0] + is executed when the condition is non-zero. If `size` == 2, + phGraph_out[1] will be executed when the condition is zero. + cudaGraphCondTypeWhile: phGraph_out[0] is executed as long as the + condition is non-zero. cudaGraphCondTypeSwitch: phGraph_out[n] is + executed when the condition is equal to n. If the condition >= + `size`, no body graph is executed. + ctx : cudaExecutionContext_t + CUDA Execution Context + + Methods + ------- + getPtr() + Get memory address of class instance + """ + cdef cyruntime.cudaConditionalNodeParams _pvt_val + cdef cyruntime.cudaConditionalNodeParams* _pvt_ptr + cdef cudaGraphConditionalHandle _handle + cdef size_t _phGraph_out_length + cdef cyruntime.cudaGraph_t* _phGraph_out + cdef cudaExecutionContext_t _ctx + +cdef class cudaChildGraphNodeParams: + """ + Child graph node parameters + + Attributes + ---------- + graph : cudaGraph_t + The child graph to clone into the node for node creation, or a + handle to the graph owned by the node for node query. The graph + must not contain conditional nodes. Graphs containing memory + allocation or memory free nodes must set the ownership to be moved + to the parent. + ownership : cudaGraphChildGraphNodeOwnership + The ownership relationship of the child graph node. + + Methods + ------- + getPtr() + Get memory address of class instance + """ + cdef cyruntime.cudaChildGraphNodeParams _pvt_val + cdef cyruntime.cudaChildGraphNodeParams* _pvt_ptr + cdef cudaGraph_t _graph + +cdef class cudaEventRecordNodeParams: + """ + Event record node parameters + + Attributes + ---------- + event : cudaEvent_t + The event to record when the node executes + + Methods + ------- + getPtr() + Get memory address of class instance + """ + cdef cyruntime.cudaEventRecordNodeParams _pvt_val + cdef cyruntime.cudaEventRecordNodeParams* _pvt_ptr + cdef cudaEvent_t _event + +cdef class cudaEventWaitNodeParams: + """ + Event wait node parameters + + Attributes + ---------- + event : cudaEvent_t + The event to wait on from the node + + Methods + ------- + getPtr() + Get memory address of class instance + """ + cdef cyruntime.cudaEventWaitNodeParams _pvt_val + cdef cyruntime.cudaEventWaitNodeParams* _pvt_ptr + cdef cudaEvent_t _event + +cdef class cudaGraphNodeParams: + """ + Graph node parameters. See cudaGraphAddNode. + + Attributes + ---------- + type : cudaGraphNodeType + Type of the node + reserved0 : list[int] + Reserved. Must be zero. + reserved1 : list[long long] + Padding. Unused bytes must be zero. + kernel : cudaKernelNodeParamsV2 + Kernel node parameters. + memcpy : cudaMemcpyNodeParams + Memcpy node parameters. + memset : cudaMemsetParamsV2 + Memset node parameters. + host : cudaHostNodeParamsV2 + Host node parameters. + graph : cudaChildGraphNodeParams + Child graph node parameters. + eventWait : cudaEventWaitNodeParams + Event wait node parameters. + eventRecord : cudaEventRecordNodeParams + Event record node parameters. + extSemSignal : cudaExternalSemaphoreSignalNodeParamsV2 + External semaphore signal node parameters. + extSemWait : cudaExternalSemaphoreWaitNodeParamsV2 + External semaphore wait node parameters. + alloc : cudaMemAllocNodeParamsV2 + Memory allocation node parameters. + free : cudaMemFreeNodeParams + Memory free node parameters. + conditional : cudaConditionalNodeParams + Conditional node parameters. + reserved2 : long long + Reserved bytes. Must be zero. + + Methods + ------- + getPtr() + Get memory address of class instance + """ + cdef cyruntime.cudaGraphNodeParams* _val_ptr + cdef cyruntime.cudaGraphNodeParams* _pvt_ptr + cdef cudaKernelNodeParamsV2 _kernel + cdef cudaMemcpyNodeParams _memcpy + cdef cudaMemsetParamsV2 _memset + cdef cudaHostNodeParamsV2 _host + cdef cudaChildGraphNodeParams _graph + cdef cudaEventWaitNodeParams _eventWait + cdef cudaEventRecordNodeParams _eventRecord + cdef cudaExternalSemaphoreSignalNodeParamsV2 _extSemSignal + cdef cudaExternalSemaphoreWaitNodeParamsV2 _extSemWait + cdef cudaMemAllocNodeParamsV2 _alloc + cdef cudaMemFreeNodeParams _free + cdef cudaConditionalNodeParams _conditional + +cdef class cudaGraphEdgeData_st: + """ + Optional annotation for edges in a CUDA graph. Note, all edges + implicitly have annotations and default to a zero-initialized value + if not specified. A zero-initialized struct indicates a standard + full serialization of two nodes with memory visibility. + + Attributes + ---------- + from_port : bytes + This indicates when the dependency is triggered from the upstream + node on the edge. The meaning is specfic to the node type. A value + of 0 in all cases means full completion of the upstream node, with + memory visibility to the downstream node or portion thereof + (indicated by `to_port`). Only kernel nodes define non-zero + ports. A kernel node can use the following output port types: + cudaGraphKernelNodePortDefault, + cudaGraphKernelNodePortProgrammatic, or + cudaGraphKernelNodePortLaunchCompletion. + to_port : bytes + This indicates what portion of the downstream node is dependent on + the upstream node or portion thereof (indicated by `from_port`). + The meaning is specific to the node type. A value of 0 in all cases + means the entirety of the downstream node is dependent on the + upstream work. Currently no node types define non-zero ports. + Accordingly, this field must be set to zero. + type : bytes + This should be populated with a value from cudaGraphDependencyType. + (It is typed as char due to compiler-specific layout of bitfields.) + See cudaGraphDependencyType. + reserved : bytes + These bytes are unused and must be zeroed. This ensures + compatibility if additional fields are added in the future. + + Methods + ------- + getPtr() + Get memory address of class instance + """ + cdef cyruntime.cudaGraphEdgeData_st _pvt_val + cdef cyruntime.cudaGraphEdgeData_st* _pvt_ptr + +cdef class cudaGraphInstantiateParams_st: + """ + Graph instantiation parameters + + Attributes + ---------- + flags : unsigned long long + Instantiation flags + uploadStream : cudaStream_t + Upload stream + errNode_out : cudaGraphNode_t + The node which caused instantiation to fail, if any + result_out : cudaGraphInstantiateResult + Whether instantiation was successful. If it failed, the reason why + + Methods + ------- + getPtr() + Get memory address of class instance + """ + cdef cyruntime.cudaGraphInstantiateParams_st _pvt_val + cdef cyruntime.cudaGraphInstantiateParams_st* _pvt_ptr + cdef cudaStream_t _uploadStream + cdef cudaGraphNode_t _errNode_out + +cdef class cudaGraphExecUpdateResultInfo_st: + """ + Result information returned by cudaGraphExecUpdate + + Attributes + ---------- + result : cudaGraphExecUpdateResult + Gives more specific detail when a cuda graph update fails. + errorNode : cudaGraphNode_t + The "to node" of the error edge when the topologies do not match. + The error node when the error is associated with a specific node. + NULL when the error is generic. + errorFromNode : cudaGraphNode_t + The from node of error edge when the topologies do not match. + Otherwise NULL. + + Methods + ------- + getPtr() + Get memory address of class instance + """ + cdef cyruntime.cudaGraphExecUpdateResultInfo_st _pvt_val + cdef cyruntime.cudaGraphExecUpdateResultInfo_st* _pvt_ptr + cdef cudaGraphNode_t _errorNode + cdef cudaGraphNode_t _errorFromNode + +cdef class anon_struct16: + """ + Attributes + ---------- + pValue : Any + + offset : size_t + + size : size_t + + + Methods + ------- + getPtr() + Get memory address of class instance + """ + cdef cyruntime.cudaGraphKernelNodeUpdate* _pvt_ptr + cdef _HelperInputVoidPtr _cypValue + +cdef class anon_union10: + """ + Attributes + ---------- + gridDim : dim3 + + param : anon_struct16 + + isEnabled : unsigned int + + + Methods + ------- + getPtr() + Get memory address of class instance + """ + cdef cyruntime.cudaGraphKernelNodeUpdate* _pvt_ptr + cdef dim3 _gridDim + cdef anon_struct16 _param + +cdef class cudaGraphKernelNodeUpdate: + """ + Struct to specify a single node update to pass as part of a larger + array to ::cudaGraphKernelNodeUpdatesApply + + Attributes + ---------- + node : cudaGraphDeviceNode_t + Node to update + field : cudaGraphKernelNodeField + Which type of update to apply. Determines how updateData is + interpreted + updateData : anon_union10 + Update data to apply. Which field is used depends on field's value + + Methods + ------- + getPtr() + Get memory address of class instance + """ + cdef cyruntime.cudaGraphKernelNodeUpdate* _val_ptr + cdef cyruntime.cudaGraphKernelNodeUpdate* _pvt_ptr + cdef cudaGraphDeviceNode_t _node + cdef anon_union10 _updateData + +cdef class cudaLaunchMemSyncDomainMap_st: + """ + Memory Synchronization Domain map See cudaLaunchMemSyncDomain. By + default, kernels are launched in domain 0. Kernel launched with + cudaLaunchMemSyncDomainRemote will have a different domain ID. User + may also alter the domain ID with cudaLaunchMemSyncDomainMap for a + specific stream / graph node / kernel launch. See + cudaLaunchAttributeMemSyncDomainMap. Domain ID range is available + through cudaDevAttrMemSyncDomainCount. + + Attributes + ---------- + default_ : bytes + The default domain ID to use for designated kernels + remote : bytes + The remote domain ID to use for designated kernels + + Methods + ------- + getPtr() + Get memory address of class instance + """ + cdef cyruntime.cudaLaunchMemSyncDomainMap_st _pvt_val + cdef cyruntime.cudaLaunchMemSyncDomainMap_st* _pvt_ptr + +cdef class anon_struct17: + """ + Attributes + ---------- + x : unsigned int + + y : unsigned int + + z : unsigned int + + + Methods + ------- + getPtr() + Get memory address of class instance + """ + cdef cyruntime.cudaLaunchAttributeValue* _pvt_ptr + +cdef class anon_struct18: + """ + Attributes + ---------- + event : cudaEvent_t + + flags : int + + triggerAtBlockStart : int + + + Methods + ------- + getPtr() + Get memory address of class instance + """ + cdef cyruntime.cudaLaunchAttributeValue* _pvt_ptr + cdef cudaEvent_t _event + +cdef class anon_struct19: + """ + Attributes + ---------- + x : unsigned int + + y : unsigned int + + z : unsigned int + + + Methods + ------- + getPtr() + Get memory address of class instance + """ + cdef cyruntime.cudaLaunchAttributeValue* _pvt_ptr + +cdef class anon_struct20: + """ + Attributes + ---------- + event : cudaEvent_t + + flags : int + + + Methods + ------- + getPtr() + Get memory address of class instance + """ + cdef cyruntime.cudaLaunchAttributeValue* _pvt_ptr + cdef cudaEvent_t _event + +cdef class anon_struct21: + """ + Attributes + ---------- + deviceUpdatable : int + + devNode : cudaGraphDeviceNode_t + + + Methods + ------- + getPtr() + Get memory address of class instance + """ + cdef cyruntime.cudaLaunchAttributeValue* _pvt_ptr + cdef cudaGraphDeviceNode_t _devNode + +cdef class cudaLaunchAttributeValue: + """ + Launch attributes union; used as value field of cudaLaunchAttribute + + Attributes + ---------- + pad : bytes + + accessPolicyWindow : cudaAccessPolicyWindow + Value of launch attribute cudaLaunchAttributeAccessPolicyWindow. + cooperative : int + Value of launch attribute cudaLaunchAttributeCooperative. Nonzero + indicates a cooperative kernel (see cudaLaunchCooperativeKernel). + syncPolicy : cudaSynchronizationPolicy + Value of launch attribute cudaLaunchAttributeSynchronizationPolicy. + cudaSynchronizationPolicy for work queued up in this stream. + clusterDim : anon_struct17 + Value of launch attribute cudaLaunchAttributeClusterDimension that + represents the desired cluster dimensions for the kernel. Opaque + type with the following fields: - `x` - The X dimension of the + cluster, in blocks. Must be a divisor of the grid X dimension. - + `y` - The Y dimension of the cluster, in blocks. Must be a divisor + of the grid Y dimension. - `z` - The Z dimension of the cluster, + in blocks. Must be a divisor of the grid Z dimension. + clusterSchedulingPolicyPreference : cudaClusterSchedulingPolicy + Value of launch attribute + cudaLaunchAttributeClusterSchedulingPolicyPreference. Cluster + scheduling policy preference for the kernel. + programmaticStreamSerializationAllowed : int + Value of launch attribute + cudaLaunchAttributeProgrammaticStreamSerialization. + programmaticEvent : anon_struct18 + Value of launch attribute cudaLaunchAttributeProgrammaticEvent with + the following fields: - `cudaEvent_t` event - Event to fire when + all blocks trigger it. - `int` flags; - Event record flags, see + cudaEventRecordWithFlags. Does not accept cudaEventRecordExternal. + - `int` triggerAtBlockStart - If this is set to non-0, each block + launch will automatically trigger the event. + priority : int + Value of launch attribute cudaLaunchAttributePriority. Execution + priority of the kernel. + memSyncDomainMap : cudaLaunchMemSyncDomainMap + Value of launch attribute cudaLaunchAttributeMemSyncDomainMap. See + cudaLaunchMemSyncDomainMap. + memSyncDomain : cudaLaunchMemSyncDomain + Value of launch attribute cudaLaunchAttributeMemSyncDomain. See + cudaLaunchMemSyncDomain. + preferredClusterDim : anon_struct19 + Value of launch attribute + cudaLaunchAttributePreferredClusterDimension that represents the + desired preferred cluster dimensions for the kernel. Opaque type + with the following fields: - `x` - The X dimension of the preferred + cluster, in blocks. Must be a divisor of the grid X dimension, and + must be a multiple of the `x` field of + ::cudaLaunchAttributeValue::clusterDim. - `y` - The Y dimension + of the preferred cluster, in blocks. Must be a divisor of the grid + Y dimension, and must be a multiple of the `y` field of + ::cudaLaunchAttributeValue::clusterDim. - `z` - The Z dimension + of the preferred cluster, in blocks. Must be equal to the `z` field + of ::cudaLaunchAttributeValue::clusterDim. + launchCompletionEvent : anon_struct20 + Value of launch attribute cudaLaunchAttributeLaunchCompletionEvent + with the following fields: - `cudaEvent_t` event - Event to fire + when the last block launches. - `int` flags - Event record + flags, see cudaEventRecordWithFlags. Does not accept + cudaEventRecordExternal. + deviceUpdatableKernelNode : anon_struct21 + Value of launch attribute + cudaLaunchAttributeDeviceUpdatableKernelNode with the following + fields: - `int` deviceUpdatable - Whether or not the resulting + kernel node should be device-updatable. - + `cudaGraphDeviceNode_t` devNode - Returns a handle to pass to the + various device-side update functions. + sharedMemCarveout : unsigned int + Value of launch attribute + cudaLaunchAttributePreferredSharedMemoryCarveout. + nvlinkUtilCentricScheduling : unsigned int + Value of launch attribute + cudaLaunchAttributeNvlinkUtilCentricScheduling. + portableClusterSizeMode : cudaLaunchAttributePortableClusterMode + Value of launch attribute + cudaLaunchAttributePortableClusterSizeMode + sharedMemoryMode : cudaSharedMemoryMode + Value of launch attribute cudaLaunchAttributeSharedMemoryMode. See + cudaSharedMemoryMode for acceptable values. + + Methods + ------- + getPtr() + Get memory address of class instance + """ + cdef cyruntime.cudaLaunchAttributeValue _pvt_val + cdef cyruntime.cudaLaunchAttributeValue* _pvt_ptr + cdef cudaAccessPolicyWindow _accessPolicyWindow + cdef anon_struct17 _clusterDim + cdef anon_struct18 _programmaticEvent + cdef cudaLaunchMemSyncDomainMap _memSyncDomainMap + cdef anon_struct19 _preferredClusterDim + cdef anon_struct20 _launchCompletionEvent + cdef anon_struct21 _deviceUpdatableKernelNode + +cdef class cudaLaunchAttribute_st: + """ + Launch attribute + + Attributes + ---------- + id : cudaLaunchAttributeID + Attribute to set + val : cudaLaunchAttributeValue + Value of the attribute + + Methods + ------- + getPtr() + Get memory address of class instance + """ + cdef cyruntime.cudaLaunchAttribute_st _pvt_val + cdef cyruntime.cudaLaunchAttribute_st* _pvt_ptr + cdef cudaLaunchAttributeValue _val + +cdef class anon_struct22: + """ + Attributes + ---------- + bytesOverBudget : unsigned long long + + + Methods + ------- + getPtr() + Get memory address of class instance + """ + cdef cyruntime.cudaAsyncNotificationInfo* _pvt_ptr + +cdef class anon_union11: + """ + Attributes + ---------- + overBudget : anon_struct22 + + + Methods + ------- + getPtr() + Get memory address of class instance + """ + cdef cyruntime.cudaAsyncNotificationInfo* _pvt_ptr + cdef anon_struct22 _overBudget + +cdef class cudaAsyncNotificationInfo: + """ + Information describing an async notification event + + Attributes + ---------- + type : cudaAsyncNotificationType + The type of notification being sent + info : anon_union11 + Information about the notification. `typename` must be checked in + order to interpret this field. + + Methods + ------- + getPtr() + Get memory address of class instance + """ + cdef cyruntime.cudaAsyncNotificationInfo* _val_ptr + cdef cyruntime.cudaAsyncNotificationInfo* _pvt_ptr + cdef anon_union11 _info + +cdef class cudaTextureDesc: + """ + CUDA texture descriptor + + Attributes + ---------- + addressMode : list[cudaTextureAddressMode] + Texture address mode for up to 3 dimensions + filterMode : cudaTextureFilterMode + Texture filter mode + readMode : cudaTextureReadMode + Texture read mode + sRGB : int + Perform sRGB->linear conversion during texture read + borderColor : list[float] + Texture Border Color + normalizedCoords : int + Indicates whether texture reads are normalized or not + maxAnisotropy : unsigned int + Limit to the anisotropy ratio + mipmapFilterMode : cudaTextureFilterMode + Mipmap filter mode + mipmapLevelBias : float + Offset applied to the supplied mipmap level + minMipmapLevelClamp : float + Lower end of the mipmap level range to clamp access to + maxMipmapLevelClamp : float + Upper end of the mipmap level range to clamp access to + disableTrilinearOptimization : int + Disable any trilinear filtering optimizations. + seamlessCubemap : int + Enable seamless cube map filtering. + + Methods + ------- + getPtr() + Get memory address of class instance + """ + cdef cyruntime.cudaTextureDesc _pvt_val + cdef cyruntime.cudaTextureDesc* _pvt_ptr + +cdef class cudaGraphRecaptureCallbackData: + """ + Struct of user callback data that is invoked when node parameter + mismatches are detected while recapturing to an existing graph + + Attributes + ---------- + callbackFunc : cudaGraphRecaptureCallback_t + Callback function that will be invoked + userData : Any + Generic pointer that is passed to the callback function + + Methods + ------- + getPtr() + Get memory address of class instance + """ + cdef cyruntime.cudaGraphRecaptureCallbackData _pvt_val + cdef cyruntime.cudaGraphRecaptureCallbackData* _pvt_ptr + cdef cudaGraphRecaptureCallback_t _callbackFunc + cdef _HelperInputVoidPtr _cyuserData + +cdef class cudaEglPlaneDesc_st: + """ + CUDA EGL Plane Descriptor - structure defining each plane of a CUDA + EGLFrame + + Attributes + ---------- + width : unsigned int + Width of plane + height : unsigned int + Height of plane + depth : unsigned int + Depth of plane + pitch : unsigned int + Pitch of plane + numChannels : unsigned int + Number of channels for the plane + channelDesc : cudaChannelFormatDesc + Channel Format Descriptor + reserved : list[unsigned int] + Reserved for future use + + Methods + ------- + getPtr() + Get memory address of class instance + """ + cdef cyruntime.cudaEglPlaneDesc_st _pvt_val + cdef cyruntime.cudaEglPlaneDesc_st* _pvt_ptr + cdef cudaChannelFormatDesc _channelDesc + +cdef class anon_union12: + """ + Attributes + ---------- + pArray : list[cudaArray_t] + + pPitch : list[cudaPitchedPtr] + + + Methods + ------- + getPtr() + Get memory address of class instance + """ + cdef cyruntime.cudaEglFrame_st* _pvt_ptr + +cdef class cudaEglFrame_st: + """ + CUDA EGLFrame Descriptor - structure defining one frame of EGL. + Each frame may contain one or more planes depending on whether the + surface is Multiplanar or not. Each plane of EGLFrame is + represented by cudaEglPlaneDesc which is defined as: + typedefstructcudaEglPlaneDesc_st unsignedintwidth; + unsignedintheight; unsignedintdepth; unsignedintpitch; + unsignedintnumChannels; structcudaChannelFormatDescchannelDesc; + unsignedintreserved[4]; cudaEglPlaneDesc; + + Attributes + ---------- + frame : anon_union12 + + planeDesc : list[cudaEglPlaneDesc] + CUDA EGL Plane Descriptor cudaEglPlaneDesc + planeCount : unsigned int + Number of planes + frameType : cudaEglFrameType + Array or Pitch + eglColorFormat : cudaEglColorFormat + CUDA EGL Color Format + + Methods + ------- + getPtr() + Get memory address of class instance + """ + cdef cyruntime.cudaEglFrame_st* _val_ptr + cdef cyruntime.cudaEglFrame_st* _pvt_ptr + cdef anon_union12 _frame + +cdef class CUuuid(CUuuid_st): + """ + Attributes + ---------- + bytes : bytes + < CUDA definition of UUID + + Methods + ------- + getPtr() + Get memory address of class instance + """ + pass + +cdef class cudaUUID_t(CUuuid_st): + """ + Attributes + ---------- + bytes : bytes + < CUDA definition of UUID + + Methods + ------- + getPtr() + Get memory address of class instance + """ + pass + +cdef class cudaIpcEventHandle_t(cudaIpcEventHandle_st): + """ + CUDA IPC event handle + + Attributes + ---------- + reserved : bytes + + + Methods + ------- + getPtr() + Get memory address of class instance + """ + pass + +cdef class cudaIpcMemHandle_t(cudaIpcMemHandle_st): + """ + CUDA IPC memory handle + + Attributes + ---------- + reserved : bytes + + + Methods + ------- + getPtr() + Get memory address of class instance + """ + pass + +cdef class cudaMemFabricHandle_t(cudaMemFabricHandle_st): + """ + Attributes + ---------- + reserved : bytes + + + Methods + ------- + getPtr() + Get memory address of class instance + """ + pass + +cdef class cudaDevSmResourceGroupParams(cudaDevSmResourceGroupParams_st): + """ + Input data for splitting SMs + + Attributes + ---------- + smCount : unsigned int + The amount of SMs available in this resource. + coscheduledSmCount : unsigned int + The amount of co-scheduled SMs grouped together for locality + purposes. + preferredCoscheduledSmCount : unsigned int + When possible, combine co-scheduled groups together into larger + groups of this size. + flags : unsigned int + Combination of `cudaDevSmResourceGroup_flags` values to indicate + this this group is created. + reserved : list[unsigned int] + Reserved for future use - ensure this is zero initialized. + + Methods + ------- + getPtr() + Get memory address of class instance + """ + pass + +cdef class cudaDevResource(cudaDevResource_st): + """ + A tagged union describing different resources identified by the + type field. This structure should not be directly modified outside + of the API that created it. struct enumcudaDevResourceTypetype; + union structcudaDevSmResourcesm; + structcudaDevWorkqueueConfigResourcewqConfig; + structcudaDevWorkqueueResourcewq; ; ; - If `typename` is + `cudaDevResourceTypeInvalid`, this resoure is not valid and cannot + be further accessed. - If `typename` is `cudaDevResourceTypeSm`, + the cudaDevSmResource structure `sm` is filled in. For example, + `sm.smCount` will reflect the amount of streaming multiprocessors + available in this resource. - If `typename` is + `cudaDevResourceTypeWorkqueueConfig`, the + cudaDevWorkqueueConfigResource structure `wqConfig` is filled in. + - If `typename` is `cudaDevResourceTypeWorkqueue`, the + cudaDevWorkqueueResource structure `wq` is filled in. + + Attributes + ---------- + type : cudaDevResourceType + Type of resource, dictates which union field was last set + _internal_padding : bytes + + sm : cudaDevSmResource + Resource corresponding to cudaDevResourceTypeSm `typename`. + wqConfig : cudaDevWorkqueueConfigResource + Resource corresponding to cudaDevResourceTypeWorkqueueConfig + `typename`. + wq : cudaDevWorkqueueResource + Resource corresponding to cudaDevResourceTypeWorkqueue `typename`. + _oversize : bytes + + nextResource : cudaDevResource_st + + + Methods + ------- + getPtr() + Get memory address of class instance + """ + pass + +cdef class cudaGraphEdgeData(cudaGraphEdgeData_st): + """ + Optional annotation for edges in a CUDA graph. Note, all edges + implicitly have annotations and default to a zero-initialized value + if not specified. A zero-initialized struct indicates a standard + full serialization of two nodes with memory visibility. + + Attributes + ---------- + from_port : bytes + This indicates when the dependency is triggered from the upstream + node on the edge. The meaning is specfic to the node type. A value + of 0 in all cases means full completion of the upstream node, with + memory visibility to the downstream node or portion thereof + (indicated by `to_port`). Only kernel nodes define non-zero + ports. A kernel node can use the following output port types: + cudaGraphKernelNodePortDefault, + cudaGraphKernelNodePortProgrammatic, or + cudaGraphKernelNodePortLaunchCompletion. + to_port : bytes + This indicates what portion of the downstream node is dependent on + the upstream node or portion thereof (indicated by `from_port`). + The meaning is specific to the node type. A value of 0 in all cases + means the entirety of the downstream node is dependent on the + upstream work. Currently no node types define non-zero ports. + Accordingly, this field must be set to zero. + type : bytes + This should be populated with a value from cudaGraphDependencyType. + (It is typed as char due to compiler-specific layout of bitfields.) + See cudaGraphDependencyType. + reserved : bytes + These bytes are unused and must be zeroed. This ensures + compatibility if additional fields are added in the future. + + Methods + ------- + getPtr() + Get memory address of class instance + """ + pass + +cdef class cudaGraphInstantiateParams(cudaGraphInstantiateParams_st): + """ + Graph instantiation parameters + + Attributes + ---------- + flags : unsigned long long + Instantiation flags + uploadStream : cudaStream_t + Upload stream + errNode_out : cudaGraphNode_t + The node which caused instantiation to fail, if any + result_out : cudaGraphInstantiateResult + Whether instantiation was successful. If it failed, the reason why + + Methods + ------- + getPtr() + Get memory address of class instance + """ + pass + +cdef class cudaGraphExecUpdateResultInfo(cudaGraphExecUpdateResultInfo_st): + """ + Result information returned by cudaGraphExecUpdate + + Attributes + ---------- + result : cudaGraphExecUpdateResult + Gives more specific detail when a cuda graph update fails. + errorNode : cudaGraphNode_t + The "to node" of the error edge when the topologies do not match. + The error node when the error is associated with a specific node. + NULL when the error is generic. + errorFromNode : cudaGraphNode_t + The from node of error edge when the topologies do not match. + Otherwise NULL. + + Methods + ------- + getPtr() + Get memory address of class instance + """ + pass + +cdef class cudaLaunchMemSyncDomainMap(cudaLaunchMemSyncDomainMap_st): + """ + Memory Synchronization Domain map See cudaLaunchMemSyncDomain. By + default, kernels are launched in domain 0. Kernel launched with + cudaLaunchMemSyncDomainRemote will have a different domain ID. User + may also alter the domain ID with cudaLaunchMemSyncDomainMap for a + specific stream / graph node / kernel launch. See + cudaLaunchAttributeMemSyncDomainMap. Domain ID range is available + through cudaDevAttrMemSyncDomainCount. + + Attributes + ---------- + default_ : bytes + The default domain ID to use for designated kernels + remote : bytes + The remote domain ID to use for designated kernels + + Methods + ------- + getPtr() + Get memory address of class instance + """ + pass + +cdef class cudaLaunchAttribute(cudaLaunchAttribute_st): + """ + Launch attribute + + Attributes + ---------- + id : cudaLaunchAttributeID + Attribute to set + val : cudaLaunchAttributeValue + Value of the attribute + + Methods + ------- + getPtr() + Get memory address of class instance + """ + pass + +cdef class cudaAsyncNotificationInfo_t(cudaAsyncNotificationInfo): + """ + Information describing an async notification event + + Attributes + ---------- + type : cudaAsyncNotificationType + The type of notification being sent + info : anon_union11 + Information about the notification. `typename` must be checked in + order to interpret this field. + + Methods + ------- + getPtr() + Get memory address of class instance + """ + pass + +cdef class cudaStreamAttrValue(cudaLaunchAttributeValue): + """ + Launch attributes union; used as value field of cudaLaunchAttribute + + Attributes + ---------- + pad : bytes + + accessPolicyWindow : cudaAccessPolicyWindow + Value of launch attribute cudaLaunchAttributeAccessPolicyWindow. + cooperative : int + Value of launch attribute cudaLaunchAttributeCooperative. Nonzero + indicates a cooperative kernel (see cudaLaunchCooperativeKernel). + syncPolicy : cudaSynchronizationPolicy + Value of launch attribute cudaLaunchAttributeSynchronizationPolicy. + cudaSynchronizationPolicy for work queued up in this stream. + clusterDim : anon_struct17 + Value of launch attribute cudaLaunchAttributeClusterDimension that + represents the desired cluster dimensions for the kernel. Opaque + type with the following fields: - `x` - The X dimension of the + cluster, in blocks. Must be a divisor of the grid X dimension. - + `y` - The Y dimension of the cluster, in blocks. Must be a divisor + of the grid Y dimension. - `z` - The Z dimension of the cluster, + in blocks. Must be a divisor of the grid Z dimension. + clusterSchedulingPolicyPreference : cudaClusterSchedulingPolicy + Value of launch attribute + cudaLaunchAttributeClusterSchedulingPolicyPreference. Cluster + scheduling policy preference for the kernel. + programmaticStreamSerializationAllowed : int + Value of launch attribute + cudaLaunchAttributeProgrammaticStreamSerialization. + programmaticEvent : anon_struct18 + Value of launch attribute cudaLaunchAttributeProgrammaticEvent with + the following fields: - `cudaEvent_t` event - Event to fire when + all blocks trigger it. - `int` flags; - Event record flags, see + cudaEventRecordWithFlags. Does not accept cudaEventRecordExternal. + - `int` triggerAtBlockStart - If this is set to non-0, each block + launch will automatically trigger the event. + priority : int + Value of launch attribute cudaLaunchAttributePriority. Execution + priority of the kernel. + memSyncDomainMap : cudaLaunchMemSyncDomainMap + Value of launch attribute cudaLaunchAttributeMemSyncDomainMap. See + cudaLaunchMemSyncDomainMap. + memSyncDomain : cudaLaunchMemSyncDomain + Value of launch attribute cudaLaunchAttributeMemSyncDomain. See + cudaLaunchMemSyncDomain. + preferredClusterDim : anon_struct19 + Value of launch attribute + cudaLaunchAttributePreferredClusterDimension that represents the + desired preferred cluster dimensions for the kernel. Opaque type + with the following fields: - `x` - The X dimension of the preferred + cluster, in blocks. Must be a divisor of the grid X dimension, and + must be a multiple of the `x` field of + ::cudaLaunchAttributeValue::clusterDim. - `y` - The Y dimension + of the preferred cluster, in blocks. Must be a divisor of the grid + Y dimension, and must be a multiple of the `y` field of + ::cudaLaunchAttributeValue::clusterDim. - `z` - The Z dimension + of the preferred cluster, in blocks. Must be equal to the `z` field + of ::cudaLaunchAttributeValue::clusterDim. + launchCompletionEvent : anon_struct20 + Value of launch attribute cudaLaunchAttributeLaunchCompletionEvent + with the following fields: - `cudaEvent_t` event - Event to fire + when the last block launches. - `int` flags - Event record + flags, see cudaEventRecordWithFlags. Does not accept + cudaEventRecordExternal. + deviceUpdatableKernelNode : anon_struct21 + Value of launch attribute + cudaLaunchAttributeDeviceUpdatableKernelNode with the following + fields: - `int` deviceUpdatable - Whether or not the resulting + kernel node should be device-updatable. - + `cudaGraphDeviceNode_t` devNode - Returns a handle to pass to the + various device-side update functions. + sharedMemCarveout : unsigned int + Value of launch attribute + cudaLaunchAttributePreferredSharedMemoryCarveout. + nvlinkUtilCentricScheduling : unsigned int + Value of launch attribute + cudaLaunchAttributeNvlinkUtilCentricScheduling. + portableClusterSizeMode : cudaLaunchAttributePortableClusterMode + Value of launch attribute + cudaLaunchAttributePortableClusterSizeMode + sharedMemoryMode : cudaSharedMemoryMode + Value of launch attribute cudaLaunchAttributeSharedMemoryMode. See + cudaSharedMemoryMode for acceptable values. + + Methods + ------- + getPtr() + Get memory address of class instance + """ + pass + +cdef class cudaKernelNodeAttrValue(cudaLaunchAttributeValue): + """ + Launch attributes union; used as value field of cudaLaunchAttribute + + Attributes + ---------- + pad : bytes + + accessPolicyWindow : cudaAccessPolicyWindow + Value of launch attribute cudaLaunchAttributeAccessPolicyWindow. + cooperative : int + Value of launch attribute cudaLaunchAttributeCooperative. Nonzero + indicates a cooperative kernel (see cudaLaunchCooperativeKernel). + syncPolicy : cudaSynchronizationPolicy + Value of launch attribute cudaLaunchAttributeSynchronizationPolicy. + cudaSynchronizationPolicy for work queued up in this stream. + clusterDim : anon_struct17 + Value of launch attribute cudaLaunchAttributeClusterDimension that + represents the desired cluster dimensions for the kernel. Opaque + type with the following fields: - `x` - The X dimension of the + cluster, in blocks. Must be a divisor of the grid X dimension. - + `y` - The Y dimension of the cluster, in blocks. Must be a divisor + of the grid Y dimension. - `z` - The Z dimension of the cluster, + in blocks. Must be a divisor of the grid Z dimension. + clusterSchedulingPolicyPreference : cudaClusterSchedulingPolicy + Value of launch attribute + cudaLaunchAttributeClusterSchedulingPolicyPreference. Cluster + scheduling policy preference for the kernel. + programmaticStreamSerializationAllowed : int + Value of launch attribute + cudaLaunchAttributeProgrammaticStreamSerialization. + programmaticEvent : anon_struct18 + Value of launch attribute cudaLaunchAttributeProgrammaticEvent with + the following fields: - `cudaEvent_t` event - Event to fire when + all blocks trigger it. - `int` flags; - Event record flags, see + cudaEventRecordWithFlags. Does not accept cudaEventRecordExternal. + - `int` triggerAtBlockStart - If this is set to non-0, each block + launch will automatically trigger the event. + priority : int + Value of launch attribute cudaLaunchAttributePriority. Execution + priority of the kernel. + memSyncDomainMap : cudaLaunchMemSyncDomainMap + Value of launch attribute cudaLaunchAttributeMemSyncDomainMap. See + cudaLaunchMemSyncDomainMap. + memSyncDomain : cudaLaunchMemSyncDomain + Value of launch attribute cudaLaunchAttributeMemSyncDomain. See + cudaLaunchMemSyncDomain. + preferredClusterDim : anon_struct19 + Value of launch attribute + cudaLaunchAttributePreferredClusterDimension that represents the + desired preferred cluster dimensions for the kernel. Opaque type + with the following fields: - `x` - The X dimension of the preferred + cluster, in blocks. Must be a divisor of the grid X dimension, and + must be a multiple of the `x` field of + ::cudaLaunchAttributeValue::clusterDim. - `y` - The Y dimension + of the preferred cluster, in blocks. Must be a divisor of the grid + Y dimension, and must be a multiple of the `y` field of + ::cudaLaunchAttributeValue::clusterDim. - `z` - The Z dimension + of the preferred cluster, in blocks. Must be equal to the `z` field + of ::cudaLaunchAttributeValue::clusterDim. + launchCompletionEvent : anon_struct20 + Value of launch attribute cudaLaunchAttributeLaunchCompletionEvent + with the following fields: - `cudaEvent_t` event - Event to fire + when the last block launches. - `int` flags - Event record + flags, see cudaEventRecordWithFlags. Does not accept + cudaEventRecordExternal. + deviceUpdatableKernelNode : anon_struct21 + Value of launch attribute + cudaLaunchAttributeDeviceUpdatableKernelNode with the following + fields: - `int` deviceUpdatable - Whether or not the resulting + kernel node should be device-updatable. - + `cudaGraphDeviceNode_t` devNode - Returns a handle to pass to the + various device-side update functions. + sharedMemCarveout : unsigned int + Value of launch attribute + cudaLaunchAttributePreferredSharedMemoryCarveout. + nvlinkUtilCentricScheduling : unsigned int + Value of launch attribute + cudaLaunchAttributeNvlinkUtilCentricScheduling. + portableClusterSizeMode : cudaLaunchAttributePortableClusterMode + Value of launch attribute + cudaLaunchAttributePortableClusterSizeMode + sharedMemoryMode : cudaSharedMemoryMode + Value of launch attribute cudaLaunchAttributeSharedMemoryMode. See + cudaSharedMemoryMode for acceptable values. + + Methods + ------- + getPtr() + Get memory address of class instance + """ + pass + +cdef class cudaEglPlaneDesc(cudaEglPlaneDesc_st): + """ + CUDA EGL Plane Descriptor - structure defining each plane of a CUDA + EGLFrame + + Attributes + ---------- + width : unsigned int + Width of plane + height : unsigned int + Height of plane + depth : unsigned int + Depth of plane + pitch : unsigned int + Pitch of plane + numChannels : unsigned int + Number of channels for the plane + channelDesc : cudaChannelFormatDesc + Channel Format Descriptor + reserved : list[unsigned int] + Reserved for future use + + Methods + ------- + getPtr() + Get memory address of class instance + """ + pass + +cdef class cudaEglFrame(cudaEglFrame_st): + """ + CUDA EGLFrame Descriptor - structure defining one frame of EGL. + Each frame may contain one or more planes depending on whether the + surface is Multiplanar or not. Each plane of EGLFrame is + represented by cudaEglPlaneDesc which is defined as: + typedefstructcudaEglPlaneDesc_st unsignedintwidth; + unsignedintheight; unsignedintdepth; unsignedintpitch; + unsignedintnumChannels; structcudaChannelFormatDescchannelDesc; + unsignedintreserved[4]; cudaEglPlaneDesc; + + Attributes + ---------- + frame : anon_union12 + + planeDesc : list[cudaEglPlaneDesc] + CUDA EGL Plane Descriptor cudaEglPlaneDesc + planeCount : unsigned int + Number of planes + frameType : cudaEglFrameType + Array or Pitch + eglColorFormat : cudaEglColorFormat + CUDA EGL Color Format + + Methods + ------- + getPtr() + Get memory address of class instance + """ + pass + +cdef class cudaStream_t(driver.CUstream): + """ + + CUDA stream + + Methods + ------- + getPtr() + Get memory address of class instance + + """ + pass + +cdef class cudaEvent_t(driver.CUevent): + """ + + CUDA event types + + Methods + ------- + getPtr() + Get memory address of class instance + + """ + pass + +cdef class cudaGraph_t(driver.CUgraph): + """ + + CUDA graph + + Methods + ------- + getPtr() + Get memory address of class instance + + """ + pass + +cdef class cudaGraphNode_t(driver.CUgraphNode): + """ + + CUDA graph node. + + Methods + ------- + getPtr() + Get memory address of class instance + + """ + pass + +cdef class cudaUserObject_t(driver.CUuserObject): + """ + + CUDA user object for graphs + + Methods + ------- + getPtr() + Get memory address of class instance + + """ + pass + +cdef class cudaFunction_t(driver.CUfunction): + """ + + CUDA function + + Methods + ------- + getPtr() + Get memory address of class instance + + """ + pass + +cdef class cudaMemPool_t(driver.CUmemoryPool): + """ + + CUDA memory pool + + Methods + ------- + getPtr() + Get memory address of class instance + + """ + pass + +cdef class cudaGraphExec_t(driver.CUgraphExec): + """ + + CUDA executable (launchable) graph + + Methods + ------- + getPtr() + Get memory address of class instance + + """ + pass + +cdef class cudaEglStreamConnection(driver.CUeglStreamConnection): + """ + + CUDA EGLSream Connection + + Methods + ------- + getPtr() + Get memory address of class instance + + """ + pass + +cdef class cudaGraphConditionalHandle: + """ + + CUDA handle for conditional graph nodes + + Methods + ------- + getPtr() + Get memory address of class instance + + """ + cdef cyruntime.cudaGraphConditionalHandle _pvt_val + cdef cyruntime.cudaGraphConditionalHandle* _pvt_ptr + +cdef class cudaLogIterator: + """ + + Methods + ------- + getPtr() + Get memory address of class instance + + """ + cdef cyruntime.cudaLogIterator _pvt_val + cdef cyruntime.cudaLogIterator* _pvt_ptr + +cdef class cudaSurfaceObject_t: + """ + + An opaque value that represents a CUDA Surface object + + Methods + ------- + getPtr() + Get memory address of class instance + + """ + cdef cyruntime.cudaSurfaceObject_t _pvt_val + cdef cyruntime.cudaSurfaceObject_t* _pvt_ptr + +cdef class cudaTextureObject_t: + """ + + An opaque value that represents a CUDA texture object + + Methods + ------- + getPtr() + Get memory address of class instance + + """ + cdef cyruntime.cudaTextureObject_t _pvt_val + cdef cyruntime.cudaTextureObject_t* _pvt_ptr + +cdef class GLenum: + """ + + Methods + ------- + getPtr() + Get memory address of class instance + + """ + cdef cyruntime.GLenum _pvt_val + cdef cyruntime.GLenum* _pvt_ptr + +cdef class GLuint: + """ + + Methods + ------- + getPtr() + Get memory address of class instance + + """ + cdef cyruntime.GLuint _pvt_val + cdef cyruntime.GLuint* _pvt_ptr + +cdef class EGLint: + """ + + Methods + ------- + getPtr() + Get memory address of class instance + + """ + cdef cyruntime.EGLint _pvt_val + cdef cyruntime.EGLint* _pvt_ptr + +cdef class VdpDevice: + """ + + Methods + ------- + getPtr() + Get memory address of class instance + + """ + cdef cyruntime.VdpDevice _pvt_val + cdef cyruntime.VdpDevice* _pvt_ptr + +cdef class VdpGetProcAddress: + """ + + Methods + ------- + getPtr() + Get memory address of class instance + + """ + cdef cyruntime.VdpGetProcAddress _pvt_val + cdef cyruntime.VdpGetProcAddress* _pvt_ptr + +cdef class VdpVideoSurface: + """ + + Methods + ------- + getPtr() + Get memory address of class instance + + """ + cdef cyruntime.VdpVideoSurface _pvt_val + cdef cyruntime.VdpVideoSurface* _pvt_ptr + +cdef class VdpOutputSurface: + """ + + Methods + ------- + getPtr() + Get memory address of class instance + + """ + cdef cyruntime.VdpOutputSurface _pvt_val + cdef cyruntime.VdpOutputSurface* _pvt_ptr diff --git a/venv/lib/python3.11/site-packages/cuda/bindings/utils/__init__.py b/venv/lib/python3.11/site-packages/cuda/bindings/utils/__init__.py new file mode 100644 index 0000000000000000000000000000000000000000..3fe75ca13f0f400073d73ec952569620fcf74d75 --- /dev/null +++ b/venv/lib/python3.11/site-packages/cuda/bindings/utils/__init__.py @@ -0,0 +1,32 @@ +# SPDX-FileCopyrightText: Copyright (c) 2025-2026 NVIDIA CORPORATION & AFFILIATES. All rights reserved. +# SPDX-License-Identifier: LicenseRef-NVIDIA-SOFTWARE-LICENSE +from typing import Any, Callable + +from ._nvvm_utils import check_nvvm_compiler_options +from ._ptx_utils import get_minimal_required_cuda_ver_from_ptx_ver, get_ptx_ver +from ._version_check import warn_if_cuda_major_version_mismatch + +_handle_getters: dict[type, Callable[[Any], int]] = {} + + +def _add_cuda_native_handle_getter(t: type, getter: Callable[[Any], int]) -> None: + _handle_getters[t] = getter + + +def get_cuda_native_handle(obj: Any) -> int: + """Returns the address of the provided CUDA Python object as a Python int. + + Parameters + ---------- + obj : Any + CUDA Python object + + Returns + ------- + int : The object address. + """ + obj_type = type(obj) + try: + return _handle_getters[obj_type](obj) + except KeyError: + raise TypeError("Unknown type: " + str(obj_type)) from None diff --git a/venv/lib/python3.11/site-packages/cuda/bindings/utils/_nvvm_utils.py b/venv/lib/python3.11/site-packages/cuda/bindings/utils/_nvvm_utils.py new file mode 100644 index 0000000000000000000000000000000000000000..de7b111e7bfe049a2786abb83f4ca5c6ae9a20a4 --- /dev/null +++ b/venv/lib/python3.11/site-packages/cuda/bindings/utils/_nvvm_utils.py @@ -0,0 +1,89 @@ +# SPDX-FileCopyrightText: Copyright (c) 2026 NVIDIA CORPORATION & AFFILIATES. All rights reserved. +# SPDX-License-Identifier: LicenseRef-NVIDIA-SOFTWARE-LICENSE + +from typing import Sequence + +_PRECHECK_NVVM_IR = """target triple = "nvptx64-unknown-cuda" +target datalayout = "e-p:64:64:64-i1:8:8-i8:8:8-i16:16:16-i32:32:32-i64:64:64-i128:128:128-f32:32:32-f64:64:64-v16:16:16-v32:32:32-v64:64:64-v128:128:128-n16:32:64" + +define void @dummy_kernel() {{ +entry: + ret void +}} + +!nvvm.annotations = !{{!0}} +!0 = !{{void ()* @dummy_kernel, !"kernel", i32 1}} + +!nvvmir.version = !{{!1}} +!1 = !{{i32 {major}, i32 {minor}, i32 {debug_major}, i32 {debug_minor}}} +""" + + +def check_nvvm_compiler_options(options: Sequence[str]) -> bool: + """ + Abstracted from https://github.com/NVIDIA/numba-cuda/pull/681 + + Check if the specified options are supported by the current libNVVM version. + + The options are a list of strings, each representing a compiler option. + + If the test program fails to compile, the options are not supported and False + is returned. + + If the test program compiles successfully, True is returned. + + cuda.bindings.nvvm returns exceptions instead of return codes. + + Parameters + ---------- + options : Sequence[str] + List of compiler options as strings (e.g., ["-arch=compute_90", "-g"]). + + Returns + ------- + bool + True if the options are supported, False otherwise. + + Examples + -------- + >>> from cuda.bindings.utils import check_nvvm_compiler_options + >>> check_nvvm_compiler_options(["-arch=compute_90", "-g"]) + True + """ + try: + from cuda.bindings import nvvm + except ModuleNotFoundError as exc: + if exc.name == "nvvm": + return False + raise + + from cuda.bindings._internal.nvvm import _inspect_function_pointer + + if _inspect_function_pointer("__nvvmCreateProgram") == 0: + return False + + program = nvvm.create_program() + try: + major, minor, debug_major, debug_minor = nvvm.ir_version() + precheck_ir = _PRECHECK_NVVM_IR.format( + major=major, + minor=minor, + debug_major=debug_major, + debug_minor=debug_minor, + ) + precheck_ir_bytes = precheck_ir.encode("utf-8") + nvvm.add_module_to_program( + program, + precheck_ir_bytes, + len(precheck_ir_bytes), + "precheck.ll", + ) + try: + nvvm.compile_program(program, len(options), options) + except nvvm.nvvmError as e: + if e.status == nvvm.Result.ERROR_INVALID_OPTION: + return False + raise + finally: + nvvm.destroy_program(program) + return True diff --git a/venv/lib/python3.11/site-packages/cuda/bindings/utils/_ptx_utils.py b/venv/lib/python3.11/site-packages/cuda/bindings/utils/_ptx_utils.py new file mode 100644 index 0000000000000000000000000000000000000000..5ba21c398c2b7af582f7376c9d8bdcb979a1b141 --- /dev/null +++ b/venv/lib/python3.11/site-packages/cuda/bindings/utils/_ptx_utils.py @@ -0,0 +1,135 @@ +# SPDX-FileCopyrightText: Copyright (c) 2025 NVIDIA CORPORATION & AFFILIATES. All rights reserved. +# SPDX-License-Identifier: LicenseRef-NVIDIA-SOFTWARE-LICENSE + +import re + +# Mapping based on the official PTX ISA <-> CUDA Release table +# https://docs.nvidia.com/cuda/parallel-thread-execution/#release-notes-ptx-release-history +_ptx_to_cuda = { + "1.0": (1, 0), + "1.1": (1, 1), + "1.2": (2, 0), + "1.3": (2, 1), + "1.4": (2, 2), + "2.0": (3, 0), + "2.1": (3, 1), + "2.2": (3, 2), + "2.3": (4, 0), + "3.0": (4, 1), + "3.1": (5, 0), + "3.2": (5, 5), + "4.0": (6, 0), + "4.1": (6, 5), + "4.2": (7, 0), + "4.3": (7, 5), + "5.0": (8, 0), + "6.0": (9, 0), + "6.1": (9, 1), + "6.2": (9, 2), + "6.3": (10, 0), + "6.4": (10, 1), + "6.5": (10, 2), + "7.0": (11, 0), + "7.1": (11, 1), + "7.2": (11, 2), + "7.3": (11, 3), + "7.4": (11, 4), + "7.5": (11, 5), + "7.6": (11, 6), + "7.7": (11, 7), + "7.8": (11, 8), + "8.0": (12, 0), + "8.1": (12, 1), + "8.2": (12, 2), + "8.3": (12, 3), + "8.4": (12, 4), + "8.5": (12, 5), + "8.6": (12, 7), + "8.7": (12, 8), + "8.8": (12, 9), + "9.0": (13, 0), + "9.1": (13, 1), + "9.2": (13, 2), + "9.3": (13, 3), +} + + +def get_minimal_required_cuda_ver_from_ptx_ver(ptx_version: str) -> int: + """ + Maps the PTX ISA version to the minimal CUDA driver, nvPTXCompiler, or nvJitLink version + that is needed to load a PTX of the given ISA version. + + Parameters + ---------- + ptx_version : str + PTX ISA version as a string, e.g. "8.8" for PTX ISA 8.8. This is the ``.version`` + directive in the PTX header. + + Returns + ------- + int + Minimal CUDA version as 1000 * major + 10 * minor, e.g. 12090 for CUDA 12.9. + + Raises + ------ + ValueError + If the PTX version is unknown. + + Examples + -------- + >>> get_minimal_required_driver_ver_from_ptx_ver("8.8") + 12090 + >>> get_minimal_required_driver_ver_from_ptx_ver("7.0") + 11000 + """ + try: + major, minor = _ptx_to_cuda[ptx_version] + return 1000 * major + 10 * minor + except KeyError: + raise ValueError(f"Unknown or unsupported PTX ISA version: {ptx_version}") from None + + +# Regex pattern to match .version directive and capture the version number +# TODO: if import speed is a concern, consider lazy-initializing it. +_ptx_ver_pattern = re.compile(r"\.version\s+([0-9]+\.[0-9]+)") + + +def get_ptx_ver(ptx: str) -> str: + """ + Extract the PTX ISA version string from PTX source code. + + Parameters + ---------- + ptx : str + The PTX assembly source code as a string. + + Returns + ------- + str + The PTX ISA version string, e.g., "8.8". + + Raises + ------ + ValueError + If the .version directive is not found in the PTX source. + + Examples + -------- + >>> ptx = r''' + ... .version 8.8 + ... .target sm_86 + ... .address_size 64 + ... + ... .visible .entry test_kernel() + ... { + ... ret; + ... } + ... ''' + >>> get_ptx_ver(ptx) + '8.8' + """ + m = _ptx_ver_pattern.search(ptx) + if m: + return m.group(1) + else: + raise ValueError("No .version directive found in PTX source. Is it a valid PTX?") diff --git a/venv/lib/python3.11/site-packages/cuda/bindings/utils/_version_check.py b/venv/lib/python3.11/site-packages/cuda/bindings/utils/_version_check.py new file mode 100644 index 0000000000000000000000000000000000000000..1ebd7f3d924208619676dd724371adadc504b881 --- /dev/null +++ b/venv/lib/python3.11/site-packages/cuda/bindings/utils/_version_check.py @@ -0,0 +1,61 @@ +# SPDX-FileCopyrightText: Copyright (c) 2025 NVIDIA CORPORATION & AFFILIATES. All rights reserved. +# SPDX-License-Identifier: LicenseRef-NVIDIA-SOFTWARE-LICENSE + +import os +import threading +import warnings + +# Track whether we've already checked major version compatibility +_major_version_compatibility_checked = False +_lock = threading.Lock() + + +def warn_if_cuda_major_version_mismatch(): + """Warn if the CUDA driver major version is older than cuda-bindings compile-time version. + + This function compares the CUDA major version that cuda-bindings was compiled + against with the CUDA major version supported by the installed driver. If the + compile-time major version is greater than the driver's major version, a warning + is issued. + + The check runs only once per process. Subsequent calls are no-ops. + + The warning can be suppressed by setting the environment variable + ``CUDA_PYTHON_DISABLE_MAJOR_VERSION_WARNING=1``. + """ + global _major_version_compatibility_checked + if _major_version_compatibility_checked: + return + with _lock: + if _major_version_compatibility_checked: + return + _major_version_compatibility_checked = True + + # Allow users to suppress the warning + if os.environ.get("CUDA_PYTHON_DISABLE_MAJOR_VERSION_WARNING"): + return + + # Import here to avoid circular imports and allow lazy loading + from cuda.bindings import driver + + # Get compile-time CUDA version from cuda-bindings + compile_version = driver.CUDA_VERSION # e.g., 13010 + compile_major = compile_version // 1000 + + # Get runtime driver version + err, runtime_version = driver.cuDriverGetVersion() + if err != driver.CUresult.CUDA_SUCCESS: + raise RuntimeError(f"Failed to query CUDA driver version: {err}") + + runtime_major = runtime_version // 1000 + + if compile_major > runtime_major: + warnings.warn( + f"cuda-bindings was built for CUDA major version {compile_major}, but the " + f"NVIDIA driver only supports up to CUDA {runtime_major}. Some cuda-bindings " + f"features may not work correctly. Consider updating your NVIDIA driver, " + f"or using a cuda-bindings version built for CUDA {runtime_major}. " + f"(Set CUDA_PYTHON_DISABLE_MAJOR_VERSION_WARNING=1 to suppress this warning.)", + UserWarning, + stacklevel=3, + ) diff --git a/venv/lib/python3.11/site-packages/cuda/pathfinder/README.md b/venv/lib/python3.11/site-packages/cuda/pathfinder/README.md new file mode 100644 index 0000000000000000000000000000000000000000..c020fc6a233bcf1b1b893867200519d76e4ae8e3 --- /dev/null +++ b/venv/lib/python3.11/site-packages/cuda/pathfinder/README.md @@ -0,0 +1,3 @@ +### The `cuda.pathfinder` documentation was moved + +Please see https://nvidia.github.io/cuda-python/cuda-pathfinder/latest/ diff --git a/venv/lib/python3.11/site-packages/cuda/pathfinder/__init__.py b/venv/lib/python3.11/site-packages/cuda/pathfinder/__init__.py new file mode 100644 index 0000000000000000000000000000000000000000..dc818dfd08ff02f1ce45e049ea24a7afe7972982 --- /dev/null +++ b/venv/lib/python3.11/site-packages/cuda/pathfinder/__init__.py @@ -0,0 +1,91 @@ +# SPDX-FileCopyrightText: Copyright (c) 2025-2026 NVIDIA CORPORATION & AFFILIATES. All rights reserved. +# SPDX-License-Identifier: Apache-2.0 + +"""cuda.pathfinder public APIs""" + +# NOTE: When adding or removing public APIs from this file, remember to update +# cuda_pathfinder/docs/source/api.rst +# to keep the documentation in sync. + +from cuda.pathfinder._binaries.find_nvidia_binary_utility import ( + find_nvidia_binary_utility as find_nvidia_binary_utility, +) +from cuda.pathfinder._binaries.supported_nvidia_binaries import SUPPORTED_BINARIES as _SUPPORTED_BINARIES +from cuda.pathfinder._dynamic_libs.load_dl_common import ( + DynamicLibNotAvailableError as DynamicLibNotAvailableError, +) +from cuda.pathfinder._dynamic_libs.load_dl_common import DynamicLibNotFoundError as DynamicLibNotFoundError +from cuda.pathfinder._dynamic_libs.load_dl_common import ( + DynamicLibUnknownError as DynamicLibUnknownError, +) +from cuda.pathfinder._dynamic_libs.load_dl_common import LoadedDL as LoadedDL +from cuda.pathfinder._dynamic_libs.load_nvidia_dynamic_lib import load_nvidia_dynamic_lib as load_nvidia_dynamic_lib +from cuda.pathfinder._dynamic_libs.supported_nvidia_libs import ( + SUPPORTED_LIBNAMES as SUPPORTED_NVIDIA_LIBNAMES, +) +from cuda.pathfinder._headers.find_nvidia_headers import LocatedHeaderDir as LocatedHeaderDir +from cuda.pathfinder._headers.find_nvidia_headers import find_nvidia_header_directory as find_nvidia_header_directory +from cuda.pathfinder._headers.find_nvidia_headers import ( + locate_nvidia_header_directory as locate_nvidia_header_directory, +) +from cuda.pathfinder._headers.supported_nvidia_headers import SUPPORTED_HEADERS_CTK as _SUPPORTED_HEADERS_CTK +from cuda.pathfinder._static_libs.find_bitcode_lib import ( + SUPPORTED_BITCODE_LIBS as _SUPPORTED_BITCODE_LIBS, +) +from cuda.pathfinder._static_libs.find_bitcode_lib import ( + BitcodeLibNotFoundError as BitcodeLibNotFoundError, +) +from cuda.pathfinder._static_libs.find_bitcode_lib import ( + LocatedBitcodeLib as LocatedBitcodeLib, +) +from cuda.pathfinder._static_libs.find_bitcode_lib import ( + find_bitcode_lib as find_bitcode_lib, +) +from cuda.pathfinder._static_libs.find_bitcode_lib import ( + locate_bitcode_lib as locate_bitcode_lib, +) +from cuda.pathfinder._static_libs.find_static_lib import ( + SUPPORTED_STATIC_LIBS as _SUPPORTED_STATIC_LIBS, +) +from cuda.pathfinder._static_libs.find_static_lib import ( + LocatedStaticLib as LocatedStaticLib, +) +from cuda.pathfinder._static_libs.find_static_lib import ( + StaticLibNotFoundError as StaticLibNotFoundError, +) +from cuda.pathfinder._static_libs.find_static_lib import ( + find_static_lib as find_static_lib, +) +from cuda.pathfinder._static_libs.find_static_lib import ( + locate_static_lib as locate_static_lib, +) +from cuda.pathfinder._utils.env_vars import get_cuda_path_or_home as get_cuda_path_or_home + +from cuda.pathfinder._version import __version__ # isort: skip + +# Indirections to help Sphinx find the docstrings. +#: Mapping from short CUDA Toolkit (CTK) library names to their canonical +#: header basenames (used to validate a discovered include directory). +#: Example: ``"cublas" → "cublas.h"``. The key set is platform-aware +#: (e.g., ``"cufile"`` may be Linux-only). +SUPPORTED_HEADERS_CTK = _SUPPORTED_HEADERS_CTK + +#: Tuple of supported CUDA binary utility names that can be located +#: via ``find_nvidia_binary_utility()``. Platform-aware (e.g., some +#: utilities may be available only on Linux or Windows). +#: Example utilities: ``"nvdisasm"``, ``"cuobjdump"``, ``"nvcc"``. +SUPPORTED_BINARY_UTILITIES = _SUPPORTED_BINARIES + +#: Tuple of supported bitcode library names that can be resolved +#: via ``locate_bitcode_lib()`` and ``find_bitcode_lib()``. +#: Example value: ``"device"``. +SUPPORTED_BITCODE_LIBS = _SUPPORTED_BITCODE_LIBS + +#: Tuple of supported static library names that can be resolved +#: via ``locate_static_lib()`` and ``find_static_lib()``. +#: Example value: ``"cudadevrt"``. +SUPPORTED_STATIC_LIBS = _SUPPORTED_STATIC_LIBS + +# Backward compatibility: _find_nvidia_header_directory was added in release 1.2.2. +# It will be removed in release 1.2.4. +_find_nvidia_header_directory = find_nvidia_header_directory diff --git a/venv/lib/python3.11/site-packages/cuda/pathfinder/_binaries/find_nvidia_binary_utility.py b/venv/lib/python3.11/site-packages/cuda/pathfinder/_binaries/find_nvidia_binary_utility.py new file mode 100644 index 0000000000000000000000000000000000000000..4f857b9ac29658170f9ce3a93ed321bcd9b91f8c --- /dev/null +++ b/venv/lib/python3.11/site-packages/cuda/pathfinder/_binaries/find_nvidia_binary_utility.py @@ -0,0 +1,160 @@ +# SPDX-FileCopyrightText: Copyright (c) 2025-2026 NVIDIA CORPORATION & AFFILIATES. All rights reserved. +# SPDX-License-Identifier: Apache-2.0 + +import functools +import os + +from cuda.pathfinder._binaries import supported_nvidia_binaries +from cuda.pathfinder._utils.ctk_root_canary import CTK_ROOT_CANARY_ANCHOR_LIBNAMES +from cuda.pathfinder._utils.env_vars import get_cuda_path_or_home +from cuda.pathfinder._utils.find_sub_dirs import find_sub_dirs_all_sitepackages +from cuda.pathfinder._utils.platform_aware import IS_WINDOWS + + +class UnsupportedBinaryError(Exception): + def __init__(self, utility: str) -> None: + super().__init__(utility) + self.utility = utility + + def __str__(self) -> str: + supported_utilities = ", ".join(supported_nvidia_binaries.SUPPORTED_BINARIES) + return f"Binary '{self.utility}' is not supported. Supported utilities are: {supported_utilities}" + + +def _normalize_utility_name(utility_name: str) -> str: + """Normalize utility name by adding .exe on Windows if needed.""" + if IS_WINDOWS and not utility_name.lower().endswith((".exe", ".bat", ".cmd")): + return f"{utility_name}.exe" + return utility_name + + +def _is_executable_candidate(path: str) -> bool: + if not os.path.isfile(path): + return False + if IS_WINDOWS: + return True + return os.access(path, os.X_OK) + + +def _ctk_bin_subdirs(root: str) -> list[str]: + if IS_WINDOWS: + return [ + os.path.join(root, "bin", "x64"), + os.path.join(root, "bin", "x86_64"), + os.path.join(root, "bin"), + ] + return [os.path.join(root, "bin")] + + +def _resolve_ctk_root_via_canary() -> str | None: + from cuda.pathfinder._dynamic_libs.load_nvidia_dynamic_lib import resolve_ctk_root_via_canary + + ctk_root: str | None = resolve_ctk_root_via_canary(CTK_ROOT_CANARY_ANCHOR_LIBNAMES[0]) + return ctk_root + + +def _resolve_in_trusted_dirs(normalized_name: str, dirs: list[str]) -> str | None: + """Resolve ``normalized_name`` against ``dirs`` in order.""" + seen: set[str] = set() + for directory in dirs: + if directory in seen: + continue + assert directory + seen.add(directory) + candidate = os.path.join(directory, normalized_name) + if _is_executable_candidate(candidate): + return candidate + return None + + +@functools.cache +def find_nvidia_binary_utility(utility_name: str) -> str | None: + """Locate a CUDA binary utility executable. + + Args: + utility_name (str): The name of the binary utility to find + (e.g., ``"nvdisasm"``, ``"cuobjdump"``). On Windows, the ``.exe`` + extension will be automatically appended if not present. The function + also recognizes ``.bat`` and ``.cmd`` files on Windows. + + Returns: + str or None: Absolute path to the discovered executable, or ``None`` + if the utility cannot be found. The returned path is normalized + (absolute and with resolved separators). + + Raises: + UnsupportedBinaryError: If ``utility_name`` is not in the supported set + (see ``SUPPORTED_BINARY_UTILITIES``). + + Search order: + 1. **NVIDIA Python wheels** + + - Scan installed distributions (``site-packages``) for binary layouts + shipped in NVIDIA wheels (e.g., ``cuda-nvcc``). + + 2. **Conda environments** + + - Check Conda-style installation prefixes via ``CONDA_PREFIX`` + environment variable, which use platform-specific bin directory + layouts (``Library/bin`` on Windows, ``bin`` on Linux). + + 3. **CUDA Toolkit environment variables** + + - Use ``CUDA_HOME`` or ``CUDA_PATH`` (in that order), searching + ``bin/x64``, ``bin/x86_64``, and ``bin`` subdirectories on Windows, + or just ``bin`` on Linux. + + 4. **CTK-root canary fallback** + + - Only when steps 1-3 miss: resolve the ``cudart`` library through the + OS dynamic loader, derive the CUDA Toolkit root from it, and search + that root's bin layout. + + Note: + Results are cached using ``@functools.cache`` for performance. The cache + persists for the lifetime of the process. + + On Windows, executables are identified by their file extensions + (``.exe``, ``.bat``, ``.cmd``). On Unix-like systems, executables + are identified by the ``X_OK`` (execute) permission bit. + + Lookup is restricted to the trusted directories and the canary-derived + CTK root listed above. + + Example: + >>> from cuda.pathfinder import find_nvidia_binary_utility + >>> nvdisasm = find_nvidia_binary_utility("nvdisasm") + >>> if nvdisasm: + ... print(f"Found nvdisasm at: {nvdisasm}") + """ + if utility_name not in supported_nvidia_binaries.SUPPORTED_BINARIES: + raise UnsupportedBinaryError(utility_name) + + # 1. Search in site-packages (NVIDIA wheels) + candidate_dirs = supported_nvidia_binaries.SITE_PACKAGES_BINDIRS.get(utility_name, ()) + dirs = [] + + for sub_dir in candidate_dirs: + dirs.extend(find_sub_dirs_all_sitepackages(sub_dir.split(os.sep))) + + # 2. Search in Conda environment + if (conda_prefix := os.environ.get("CONDA_PREFIX")) is not None: + if IS_WINDOWS: + dirs.append(os.path.join(conda_prefix, "Library", "bin")) + else: + dirs.append(os.path.join(conda_prefix, "bin")) + + # 3. Search in CUDA Toolkit (CUDA_HOME/CUDA_PATH) + if (cuda_home := get_cuda_path_or_home()) is not None: + dirs.extend(_ctk_bin_subdirs(cuda_home)) + + normalized_name = _normalize_utility_name(utility_name) + found = _resolve_in_trusted_dirs(normalized_name, dirs) + if found is not None: + return found + + # 4. CTK-root canary fallback. + ctk_root = _resolve_ctk_root_via_canary() + if ctk_root is not None: + return _resolve_in_trusted_dirs(normalized_name, _ctk_bin_subdirs(ctk_root)) + return None diff --git a/venv/lib/python3.11/site-packages/cuda/pathfinder/_binaries/supported_nvidia_binaries.py b/venv/lib/python3.11/site-packages/cuda/pathfinder/_binaries/supported_nvidia_binaries.py new file mode 100644 index 0000000000000000000000000000000000000000..ac70378f112586b653759e67ca5d5b77ea61edcb --- /dev/null +++ b/venv/lib/python3.11/site-packages/cuda/pathfinder/_binaries/supported_nvidia_binaries.py @@ -0,0 +1,34 @@ +# SPDX-FileCopyrightText: Copyright (c) 2025-2026 NVIDIA CORPORATION & AFFILIATES. All rights reserved. +# SPDX-License-Identifier: Apache-2.0 +import os + +# Site-packages bin directories where binaries might be found +# Based on NVIDIA wheel layouts (same for Linux and Windows) +_CUDA_NVCC_BIN = os.path.join("nvidia", "cuda_nvcc", "bin") +_CUDA13_BIN = os.path.join("nvidia", "cu13", "bin") +_NSIGHT_SYSTEMS_BIN = os.path.join("nvidia", "nsight_systems", "bin") +_NSIGHT_COMPUTE_BIN = os.path.join("nvidia", "nsight_compute", "bin") + +# Common CUDA binary utilities available on both Linux and Windows +SITE_PACKAGES_BINDIRS = { + # Core compilation tools + "nvcc": (_CUDA13_BIN, _CUDA_NVCC_BIN), + "nvdisasm": (_CUDA13_BIN, _CUDA_NVCC_BIN), + "cuobjdump": (_CUDA_NVCC_BIN,), + "nvprune": (_CUDA_NVCC_BIN,), + "fatbinary": (_CUDA13_BIN, _CUDA_NVCC_BIN), + "bin2c": (_CUDA13_BIN, _CUDA_NVCC_BIN), + "nvlink": (_CUDA13_BIN, _CUDA_NVCC_BIN), + # Runtime/debugging tools + "cuda-gdb": (_CUDA_NVCC_BIN,), + "cuda-gdbserver": (_CUDA_NVCC_BIN,), + "compute-sanitizer": (_CUDA13_BIN, _CUDA_NVCC_BIN), + # Profiling tools + "nvprof": (_CUDA_NVCC_BIN,), + "nsys": (_NSIGHT_SYSTEMS_BIN,), + "nsight-sys": (_NSIGHT_SYSTEMS_BIN,), + "ncu": (_NSIGHT_COMPUTE_BIN,), + "nsight-compute": (_NSIGHT_COMPUTE_BIN,), +} + +SUPPORTED_BINARIES_ALL = SUPPORTED_BINARIES = tuple(SITE_PACKAGES_BINDIRS.keys()) diff --git a/venv/lib/python3.11/site-packages/cuda/pathfinder/_dynamic_libs/descriptor_catalog.py b/venv/lib/python3.11/site-packages/cuda/pathfinder/_dynamic_libs/descriptor_catalog.py new file mode 100644 index 0000000000000000000000000000000000000000..a26862c5435ed65569fd9a851da8bf88cbc95c85 --- /dev/null +++ b/venv/lib/python3.11/site-packages/cuda/pathfinder/_dynamic_libs/descriptor_catalog.py @@ -0,0 +1,467 @@ +# SPDX-FileCopyrightText: Copyright (c) 2025-2026 NVIDIA CORPORATION & AFFILIATES. All rights reserved. +# SPDX-License-Identifier: Apache-2.0 + +"""Canonical authored descriptor catalog for dynamic libraries.""" + +from __future__ import annotations + +from dataclasses import dataclass +from typing import Literal + +from cuda.pathfinder._utils.ctk_root_canary import CTK_ROOT_CANARY_ANCHOR_LIBNAMES + +PackagedWith = Literal["ctk", "other", "driver"] + + +@dataclass(frozen=True, slots=True) +class DescriptorSpec: + name: str + packaged_with: PackagedWith + linux_sonames: tuple[str, ...] = () + windows_dlls: tuple[str, ...] = () + site_packages_linux: tuple[str, ...] = () + site_packages_windows: tuple[str, ...] = () + dependencies: tuple[str, ...] = () + anchor_rel_dirs_linux: tuple[str, ...] = ("lib64", "lib") + anchor_rel_dirs_windows: tuple[str, ...] = ("bin/x64", "bin") + ctk_root_canary_anchor_libnames: tuple[str, ...] = () + requires_add_dll_directory: bool = False + requires_rtld_deepbind: bool = False + + +DESCRIPTOR_CATALOG: tuple[DescriptorSpec, ...] = ( + # ----------------------------------------------------------------------- + # CTK (CUDA Toolkit) libraries + # ----------------------------------------------------------------------- + DescriptorSpec( + name="cudart", + packaged_with="ctk", + linux_sonames=("libcudart.so.12", "libcudart.so.13"), + windows_dlls=("cudart64_12.dll", "cudart64_13.dll"), + site_packages_linux=("nvidia/cu13/lib", "nvidia/cuda_runtime/lib"), + site_packages_windows=("nvidia/cu13/bin/x86_64", "nvidia/cuda_runtime/bin"), + ), + DescriptorSpec( + name="nvfatbin", + packaged_with="ctk", + linux_sonames=("libnvfatbin.so.12", "libnvfatbin.so.13"), + windows_dlls=("nvfatbin_120_0.dll", "nvfatbin_130_0.dll"), + site_packages_linux=("nvidia/cu13/lib", "nvidia/nvfatbin/lib"), + site_packages_windows=("nvidia/cu13/bin/x86_64", "nvidia/nvfatbin/bin"), + ), + DescriptorSpec( + name="nvJitLink", + packaged_with="ctk", + linux_sonames=("libnvJitLink.so.12", "libnvJitLink.so.13"), + windows_dlls=("nvJitLink_120_0.dll", "nvJitLink_130_0.dll"), + site_packages_linux=("nvidia/cu13/lib", "nvidia/nvjitlink/lib"), + site_packages_windows=("nvidia/cu13/bin/x86_64", "nvidia/nvjitlink/bin"), + ), + DescriptorSpec( + name="nvrtc", + packaged_with="ctk", + linux_sonames=("libnvrtc.so.12", "libnvrtc.so.13"), + windows_dlls=("nvrtc64_120_0.dll", "nvrtc64_130_0.dll"), + site_packages_linux=("nvidia/cu13/lib", "nvidia/cuda_nvrtc/lib"), + site_packages_windows=("nvidia/cu13/bin/x86_64", "nvidia/cuda_nvrtc/bin"), + requires_add_dll_directory=True, + ), + DescriptorSpec( + name="nvvm", + packaged_with="ctk", + linux_sonames=("libnvvm.so.4",), + windows_dlls=("nvvm64.dll", "nvvm64_40_0.dll", "nvvm70.dll"), + site_packages_linux=("nvidia/cu13/lib", "nvidia/cuda_nvcc/nvvm/lib64"), + site_packages_windows=("nvidia/cu13/bin/x86_64", "nvidia/cuda_nvcc/nvvm/bin"), + anchor_rel_dirs_linux=("nvvm/lib64",), + anchor_rel_dirs_windows=("nvvm/bin/*", "nvvm/bin"), + ctk_root_canary_anchor_libnames=CTK_ROOT_CANARY_ANCHOR_LIBNAMES, + ), + DescriptorSpec( + name="cublas", + packaged_with="ctk", + linux_sonames=("libcublas.so.12", "libcublas.so.13"), + windows_dlls=("cublas64_12.dll", "cublas64_13.dll"), + site_packages_linux=("nvidia/cu13/lib", "nvidia/cublas/lib"), + site_packages_windows=("nvidia/cu13/bin/x86_64", "nvidia/cublas/bin"), + dependencies=("cublasLt",), + ), + DescriptorSpec( + name="cublasLt", + packaged_with="ctk", + linux_sonames=("libcublasLt.so.12", "libcublasLt.so.13"), + windows_dlls=("cublasLt64_12.dll", "cublasLt64_13.dll"), + site_packages_linux=("nvidia/cu13/lib", "nvidia/cublas/lib"), + site_packages_windows=("nvidia/cu13/bin/x86_64", "nvidia/cublas/bin"), + ), + DescriptorSpec( + name="cufft", + packaged_with="ctk", + linux_sonames=("libcufft.so.11", "libcufft.so.12"), + windows_dlls=("cufft64_11.dll", "cufft64_12.dll"), + site_packages_linux=("nvidia/cu13/lib", "nvidia/cufft/lib"), + site_packages_windows=("nvidia/cu13/bin/x86_64", "nvidia/cufft/bin"), + requires_add_dll_directory=True, + ), + DescriptorSpec( + name="cufftw", + packaged_with="ctk", + linux_sonames=("libcufftw.so.11", "libcufftw.so.12"), + windows_dlls=("cufftw64_11.dll", "cufftw64_12.dll"), + site_packages_linux=("nvidia/cu13/lib", "nvidia/cufft/lib"), + site_packages_windows=("nvidia/cu13/bin/x86_64", "nvidia/cufft/bin"), + dependencies=("cufft",), + ), + DescriptorSpec( + name="curand", + packaged_with="ctk", + linux_sonames=("libcurand.so.10",), + windows_dlls=("curand64_10.dll",), + site_packages_linux=("nvidia/cu13/lib", "nvidia/curand/lib"), + site_packages_windows=("nvidia/cu13/bin/x86_64", "nvidia/curand/bin"), + ), + DescriptorSpec( + name="cusolver", + packaged_with="ctk", + linux_sonames=("libcusolver.so.11", "libcusolver.so.12"), + windows_dlls=("cusolver64_11.dll", "cusolver64_12.dll"), + site_packages_linux=("nvidia/cu13/lib", "nvidia/cusolver/lib"), + site_packages_windows=("nvidia/cu13/bin/x86_64", "nvidia/cusolver/bin"), + dependencies=("nvJitLink", "cusparse", "cublasLt", "cublas"), + ), + DescriptorSpec( + name="cusolverMg", + packaged_with="ctk", + linux_sonames=("libcusolverMg.so.11", "libcusolverMg.so.12"), + windows_dlls=("cusolverMg64_11.dll", "cusolverMg64_12.dll"), + site_packages_linux=("nvidia/cu13/lib", "nvidia/cusolver/lib"), + site_packages_windows=("nvidia/cu13/bin/x86_64", "nvidia/cusolver/bin"), + dependencies=("nvJitLink", "cublasLt", "cublas"), + ), + DescriptorSpec( + name="cusparse", + packaged_with="ctk", + linux_sonames=("libcusparse.so.12",), + windows_dlls=("cusparse64_12.dll",), + site_packages_linux=("nvidia/cu13/lib", "nvidia/cusparse/lib"), + site_packages_windows=("nvidia/cu13/bin/x86_64", "nvidia/cusparse/bin"), + dependencies=("nvJitLink",), + ), + DescriptorSpec( + name="nppc", + packaged_with="ctk", + linux_sonames=("libnppc.so.12", "libnppc.so.13"), + windows_dlls=("nppc64_12.dll", "nppc64_13.dll"), + site_packages_linux=("nvidia/cu13/lib", "nvidia/npp/lib"), + site_packages_windows=("nvidia/cu13/bin/x86_64", "nvidia/npp/bin"), + ), + DescriptorSpec( + name="nppial", + packaged_with="ctk", + linux_sonames=("libnppial.so.12", "libnppial.so.13"), + windows_dlls=("nppial64_12.dll", "nppial64_13.dll"), + site_packages_linux=("nvidia/cu13/lib", "nvidia/npp/lib"), + site_packages_windows=("nvidia/cu13/bin/x86_64", "nvidia/npp/bin"), + dependencies=("nppc",), + ), + DescriptorSpec( + name="nppicc", + packaged_with="ctk", + linux_sonames=("libnppicc.so.12", "libnppicc.so.13"), + windows_dlls=("nppicc64_12.dll", "nppicc64_13.dll"), + site_packages_linux=("nvidia/cu13/lib", "nvidia/npp/lib"), + site_packages_windows=("nvidia/cu13/bin/x86_64", "nvidia/npp/bin"), + dependencies=("nppc",), + ), + DescriptorSpec( + name="nppidei", + packaged_with="ctk", + linux_sonames=("libnppidei.so.12", "libnppidei.so.13"), + windows_dlls=("nppidei64_12.dll", "nppidei64_13.dll"), + site_packages_linux=("nvidia/cu13/lib", "nvidia/npp/lib"), + site_packages_windows=("nvidia/cu13/bin/x86_64", "nvidia/npp/bin"), + dependencies=("nppc",), + ), + DescriptorSpec( + name="nppif", + packaged_with="ctk", + linux_sonames=("libnppif.so.12", "libnppif.so.13"), + windows_dlls=("nppif64_12.dll", "nppif64_13.dll"), + site_packages_linux=("nvidia/cu13/lib", "nvidia/npp/lib"), + site_packages_windows=("nvidia/cu13/bin/x86_64", "nvidia/npp/bin"), + dependencies=("nppc",), + ), + DescriptorSpec( + name="nppig", + packaged_with="ctk", + linux_sonames=("libnppig.so.12", "libnppig.so.13"), + windows_dlls=("nppig64_12.dll", "nppig64_13.dll"), + site_packages_linux=("nvidia/cu13/lib", "nvidia/npp/lib"), + site_packages_windows=("nvidia/cu13/bin/x86_64", "nvidia/npp/bin"), + dependencies=("nppc",), + ), + DescriptorSpec( + name="nppim", + packaged_with="ctk", + linux_sonames=("libnppim.so.12", "libnppim.so.13"), + windows_dlls=("nppim64_12.dll", "nppim64_13.dll"), + site_packages_linux=("nvidia/cu13/lib", "nvidia/npp/lib"), + site_packages_windows=("nvidia/cu13/bin/x86_64", "nvidia/npp/bin"), + dependencies=("nppc",), + ), + DescriptorSpec( + name="nppist", + packaged_with="ctk", + linux_sonames=("libnppist.so.12", "libnppist.so.13"), + windows_dlls=("nppist64_12.dll", "nppist64_13.dll"), + site_packages_linux=("nvidia/cu13/lib", "nvidia/npp/lib"), + site_packages_windows=("nvidia/cu13/bin/x86_64", "nvidia/npp/bin"), + dependencies=("nppc",), + ), + DescriptorSpec( + name="nppisu", + packaged_with="ctk", + linux_sonames=("libnppisu.so.12", "libnppisu.so.13"), + windows_dlls=("nppisu64_12.dll", "nppisu64_13.dll"), + site_packages_linux=("nvidia/cu13/lib", "nvidia/npp/lib"), + site_packages_windows=("nvidia/cu13/bin/x86_64", "nvidia/npp/bin"), + dependencies=("nppc",), + ), + DescriptorSpec( + name="nppitc", + packaged_with="ctk", + linux_sonames=("libnppitc.so.12", "libnppitc.so.13"), + windows_dlls=("nppitc64_12.dll", "nppitc64_13.dll"), + site_packages_linux=("nvidia/cu13/lib", "nvidia/npp/lib"), + site_packages_windows=("nvidia/cu13/bin/x86_64", "nvidia/npp/bin"), + dependencies=("nppc",), + ), + DescriptorSpec( + name="npps", + packaged_with="ctk", + linux_sonames=("libnpps.so.12", "libnpps.so.13"), + windows_dlls=("npps64_12.dll", "npps64_13.dll"), + site_packages_linux=("nvidia/cu13/lib", "nvidia/npp/lib"), + site_packages_windows=("nvidia/cu13/bin/x86_64", "nvidia/npp/bin"), + dependencies=("nppc",), + ), + DescriptorSpec( + name="nvblas", + packaged_with="ctk", + linux_sonames=("libnvblas.so.12", "libnvblas.so.13"), + windows_dlls=("nvblas64_12.dll", "nvblas64_13.dll"), + site_packages_linux=("nvidia/cu13/lib", "nvidia/cublas/lib"), + site_packages_windows=("nvidia/cu13/bin/x86_64", "nvidia/cublas/bin"), + dependencies=("cublas", "cublasLt"), + ), + DescriptorSpec( + name="nvjpeg", + packaged_with="ctk", + linux_sonames=("libnvjpeg.so.12", "libnvjpeg.so.13"), + windows_dlls=("nvjpeg64_12.dll", "nvjpeg64_13.dll"), + site_packages_linux=("nvidia/cu13/lib", "nvidia/nvjpeg/lib"), + site_packages_windows=("nvidia/cu13/bin/x86_64", "nvidia/nvjpeg/bin"), + ), + DescriptorSpec( + name="cufile", + packaged_with="ctk", + linux_sonames=("libcufile.so.0",), + site_packages_linux=("nvidia/cu13/lib", "nvidia/cufile/lib"), + ), + DescriptorSpec( + name="cupti", + packaged_with="ctk", + linux_sonames=("libcupti.so.12", "libcupti.so.13"), + windows_dlls=( + "cupti64_2026.3.0.dll", + "cupti64_2026.2.1.dll", + "cupti64_2026.2.0.dll", + "cupti64_2026.1.1.dll", + "cupti64_2026.1.0.dll", + "cupti64_2025.4.1.dll", + "cupti64_2025.3.1.dll", + "cupti64_2025.2.1.dll", + "cupti64_2025.1.1.dll", + "cupti64_2024.3.2.dll", + "cupti64_2024.2.1.dll", + "cupti64_2024.1.1.dll", + "cupti64_2023.3.1.dll", + "cupti64_2023.2.2.dll", + "cupti64_2023.1.1.dll", + "cupti64_2022.4.1.dll", + ), + site_packages_linux=("nvidia/cu13/lib", "nvidia/cuda_cupti/lib"), + site_packages_windows=("nvidia/cu13/bin/x86_64", "nvidia/cuda_cupti/bin"), + anchor_rel_dirs_linux=("extras/CUPTI/lib64", "lib"), + anchor_rel_dirs_windows=("extras/CUPTI/lib64", "bin"), + ctk_root_canary_anchor_libnames=CTK_ROOT_CANARY_ANCHOR_LIBNAMES, + ), + DescriptorSpec( + name="cudla", + packaged_with="ctk", + linux_sonames=("libcudla.so.1",), + windows_dlls=("cudla.dll",), + site_packages_linux=("nvidia/cu13/lib",), + # No Windows pip wheel ships cudla.dll today; it is loaded from the local + # CUDA Toolkit only, so site_packages_windows is intentionally left empty. + # The Windows CUDA Toolkit ships cudla.dll under per-architecture bin + # subdirs (e.g. bin/arm64 on N1X); search those ahead of the defaults. + anchor_rel_dirs_windows=("bin/arm64", "bin/x64", "bin"), + ), + # ----------------------------------------------------------------------- + # Third-party / separately packaged libraries + # ----------------------------------------------------------------------- + DescriptorSpec( + name="cublasmp", + packaged_with="other", + linux_sonames=("libcublasmp.so.0",), + site_packages_linux=("nvidia/cublasmp/cu13/lib", "nvidia/cublasmp/cu12/lib"), + dependencies=("cublas", "cublasLt", "nvshmem_host"), + ), + DescriptorSpec( + name="cufftMp", + packaged_with="other", + linux_sonames=("libcufftMp.so.12", "libcufftMp.so.11"), + site_packages_linux=("nvidia/cufftmp/cu13/lib", "nvidia/cufftmp/cu12/lib"), + dependencies=("nvshmem_host",), + requires_rtld_deepbind=True, + ), + DescriptorSpec( + name="cusolverMp", + packaged_with="other", + linux_sonames=("libcusolverMp.so.0",), + site_packages_linux=("nvidia/cu13/lib", "nvidia/cu12/lib"), + dependencies=("cublas", "cudart", "cusolver", "nccl"), + ), + DescriptorSpec( + name="mathdx", + packaged_with="other", + linux_sonames=("libmathdx.so.0",), + windows_dlls=("mathdx64_0.dll",), + site_packages_linux=("nvidia/cu13/lib", "nvidia/cu12/lib"), + site_packages_windows=("nvidia/cu13/bin", "nvidia/cu12/bin"), + dependencies=("nvrtc",), + ), + DescriptorSpec( + name="cudss", + packaged_with="other", + linux_sonames=("libcudss.so.0",), + windows_dlls=("cudss64_0.dll",), + site_packages_linux=("nvidia/cu13/lib", "nvidia/cu12/lib"), + site_packages_windows=("nvidia/cu13/bin", "nvidia/cu12/bin"), + dependencies=("cublas", "cublasLt"), + ), + DescriptorSpec( + name="cusparseLt", + packaged_with="other", + linux_sonames=("libcusparseLt.so.0",), + windows_dlls=("cusparseLt.dll",), + site_packages_linux=("nvidia/cu13/lib", "nvidia/cusparselt/lib"), + site_packages_windows=("nvidia/cu13/bin/x64", "nvidia/cusparselt/bin"), + ), + DescriptorSpec( + name="cutensor", + packaged_with="other", + linux_sonames=("libcutensor.so.2",), + windows_dlls=("cutensor.dll",), + site_packages_linux=("cutensor/lib",), + site_packages_windows=("cutensor/bin",), + dependencies=("cublasLt",), + ), + DescriptorSpec( + name="cutensorMg", + packaged_with="other", + linux_sonames=("libcutensorMg.so.2",), + windows_dlls=("cutensorMg.dll",), + site_packages_linux=("cutensor/lib",), + site_packages_windows=("cutensor/bin",), + dependencies=("cutensor", "cublasLt"), + ), + DescriptorSpec( + name="cutensorMp", + packaged_with="other", + linux_sonames=("libcutensorMp.so.2",), + site_packages_linux=("cutensor/lib",), + dependencies=("cutensor", "cublasLt", "cudart", "nccl"), + ), + DescriptorSpec( + name="cudensitymat", + packaged_with="other", + linux_sonames=("libcudensitymat.so.0",), + site_packages_linux=("cuquantum/lib",), + dependencies=( + "cutensornet", + "cutensor", + "cusolver", + "cublasLt", + "cublas", + "curand", + "cusparse", + "nvJitLink", + ), + ), + DescriptorSpec( + name="cupauliprop", + packaged_with="other", + linux_sonames=("libcupauliprop.so.0",), + site_packages_linux=("cuquantum/lib",), + ), + DescriptorSpec( + name="cutensornet", + packaged_with="other", + linux_sonames=("libcutensornet.so.2",), + site_packages_linux=("cuquantum/lib",), + dependencies=("cutensor", "cublas", "cusolver"), + ), + DescriptorSpec( + name="custabilizer", + packaged_with="other", + linux_sonames=("libcustabilizer.so.0",), + site_packages_linux=("cuquantum/lib",), + ), + DescriptorSpec( + name="custatevec", + packaged_with="other", + linux_sonames=("libcustatevec.so.1",), + site_packages_linux=("cuquantum/lib",), + dependencies=("cublas", "cublasLt"), + ), + DescriptorSpec( + name="nccl", + packaged_with="other", + linux_sonames=("libnccl.so.2",), + site_packages_linux=("nvidia/nccl/lib",), + ), + DescriptorSpec( + name="nvpl_fftw", + packaged_with="other", + linux_sonames=("libnvpl_fftw.so.0",), + site_packages_linux=("nvpl/lib",), + ), + DescriptorSpec( + name="nvshmem_host", + packaged_with="other", + linux_sonames=("libnvshmem_host.so.3",), + site_packages_linux=("nvidia/nvshmem/lib",), + ), + # ----------------------------------------------------------------------- + # Driver libraries (system-search only, no CTK cascade) + # ----------------------------------------------------------------------- + DescriptorSpec( + name="cuda", + packaged_with="driver", + linux_sonames=("libcuda.so.1",), + windows_dlls=("nvcuda.dll",), + ), + DescriptorSpec( + name="nvcudla", + packaged_with="driver", + linux_sonames=("libnvcudla.so",), + ), + DescriptorSpec( + name="nvml", + packaged_with="driver", + linux_sonames=("libnvidia-ml.so.1",), + windows_dlls=("nvml.dll",), + ), +) diff --git a/venv/lib/python3.11/site-packages/cuda/pathfinder/_dynamic_libs/dynamic_lib_subprocess.py b/venv/lib/python3.11/site-packages/cuda/pathfinder/_dynamic_libs/dynamic_lib_subprocess.py new file mode 100644 index 0000000000000000000000000000000000000000..ba5d05242f2f8913f9133cdfadfefd13ec7b4878 --- /dev/null +++ b/venv/lib/python3.11/site-packages/cuda/pathfinder/_dynamic_libs/dynamic_lib_subprocess.py @@ -0,0 +1,127 @@ +#!/usr/bin/env python +# SPDX-FileCopyrightText: Copyright (c) 2026 NVIDIA CORPORATION & AFFILIATES. All rights reserved. +# SPDX-License-Identifier: Apache-2.0 + +from __future__ import annotations + +import os +import sys +from collections.abc import Sequence + +from cuda.pathfinder._dynamic_libs.lib_descriptor import LIB_DESCRIPTORS +from cuda.pathfinder._dynamic_libs.load_dl_common import DynamicLibNotFoundError, LoadedDL +from cuda.pathfinder._dynamic_libs.platform_loader import LOADER +from cuda.pathfinder._dynamic_libs.subprocess_protocol import ( + MODE_CANARY, + MODE_LOAD, + STATUS_NOT_FOUND, + STATUS_OK, + VALID_MODES, + format_dynamic_lib_subprocess_payload, +) + +# NOTE: The main entrypoint (below) serves both production (canary probe) +# and tests (full loader). Keeping them together ensures a single subprocess +# protocol and CLI surface, so the test subprocess stays aligned with the +# production flow while avoiding a separate test-only module. +# Any production-code impact is negligible since the extra logic only runs +# in the subprocess entrypoint and only in test mode. + + +def _probe_canary_abs_path(libname: str) -> str | None: + desc = LIB_DESCRIPTORS.get(libname) + if desc is None: + raise ValueError(f"Unsupported canary library name: {libname!r}") + try: + loaded: LoadedDL | None = LOADER.load_with_system_search(desc) + except DynamicLibNotFoundError: + return None + if loaded is None: + return None + abs_path: str | None = loaded.abs_path + return abs_path + + +def _validate_abs_path(abs_path: str) -> None: + assert abs_path, f"empty path: {abs_path=!r}" + assert os.path.isabs(abs_path), f"not absolute: {abs_path=!r}" + assert os.path.isfile(abs_path), f"not a file: {abs_path=!r}" + + +def _load_nvidia_dynamic_lib_for_test(libname: str) -> str: + """Test-only loader used by the subprocess entrypoint.""" + # Keep imports inside the subprocess body so startup stays focused on the + # code under test rather than the parent test module. + from cuda.pathfinder import load_nvidia_dynamic_lib + from cuda.pathfinder._dynamic_libs.load_nvidia_dynamic_lib import _load_lib_no_cache + from cuda.pathfinder._dynamic_libs.supported_nvidia_libs import ( + SUPPORTED_LINUX_SONAMES, + SUPPORTED_WINDOWS_DLLS, + ) + from cuda.pathfinder._utils.platform_aware import IS_WINDOWS + + loaded_dl_fresh = load_nvidia_dynamic_lib(libname) + if loaded_dl_fresh.was_already_loaded_from_elsewhere: + raise RuntimeError("loaded_dl_fresh.was_already_loaded_from_elsewhere") + + abs_path = loaded_dl_fresh.abs_path + if not isinstance(abs_path, str): + raise RuntimeError(f"loaded_dl_fresh.abs_path is not a string: {abs_path!r}") + _validate_abs_path(abs_path) + assert loaded_dl_fresh.found_via is not None + + loaded_dl_from_cache = load_nvidia_dynamic_lib(libname) + if loaded_dl_from_cache is not loaded_dl_fresh: + raise RuntimeError("loaded_dl_from_cache is not loaded_dl_fresh") + + loaded_dl_no_cache = _load_lib_no_cache(libname) + supported_libs = SUPPORTED_WINDOWS_DLLS if IS_WINDOWS else SUPPORTED_LINUX_SONAMES + if not loaded_dl_no_cache.was_already_loaded_from_elsewhere and libname in supported_libs: + raise RuntimeError("not loaded_dl_no_cache.was_already_loaded_from_elsewhere") + abs_path_no_cache = loaded_dl_no_cache.abs_path + if not isinstance(abs_path_no_cache, str): + raise RuntimeError(f"loaded_dl_no_cache.abs_path is not a string: {abs_path_no_cache!r}") + if not os.path.samefile(abs_path_no_cache, abs_path): + raise RuntimeError(f"not os.path.samefile({abs_path_no_cache=!r}, {abs_path=!r})") + _validate_abs_path(abs_path_no_cache) + return abs_path + + +def probe_dynamic_lib_and_print_json(libname: str, mode: str) -> None: + if mode == MODE_CANARY: + abs_path = _probe_canary_abs_path(libname) + status = STATUS_OK if abs_path is not None else STATUS_NOT_FOUND + print(format_dynamic_lib_subprocess_payload(status, abs_path)) + return + + if mode == MODE_LOAD: + # Test-only path: exercises full loader behavior in isolation. + try: + abs_path = _load_nvidia_dynamic_lib_for_test(libname) + except DynamicLibNotFoundError as exc: + error = { + "type": exc.__class__.__name__, + "message": str(exc), + } + print(format_dynamic_lib_subprocess_payload(STATUS_NOT_FOUND, None, error=error)) + return + print(format_dynamic_lib_subprocess_payload(STATUS_OK, abs_path)) + return + + raise ValueError(f"Unsupported subprocess probe mode: {mode!r}") + + +def main(argv: Sequence[str] | None = None) -> int: + args = list(sys.argv[1:] if argv is None else argv) + if len(args) != 2 or args[0] not in VALID_MODES: + modes = ", ".join(VALID_MODES) + raise SystemExit( + f"Usage: python -m cuda.pathfinder._dynamic_libs.dynamic_lib_subprocess \nModes: {modes}" + ) + mode, libname = args + probe_dynamic_lib_and_print_json(libname, mode) + return 0 + + +if __name__ == "__main__": + raise SystemExit(main()) diff --git a/venv/lib/python3.11/site-packages/cuda/pathfinder/_dynamic_libs/lib_descriptor.py b/venv/lib/python3.11/site-packages/cuda/pathfinder/_dynamic_libs/lib_descriptor.py new file mode 100644 index 0000000000000000000000000000000000000000..f5e643e28fae3d7d766dd7ee3acc3019933ed6dd --- /dev/null +++ b/venv/lib/python3.11/site-packages/cuda/pathfinder/_dynamic_libs/lib_descriptor.py @@ -0,0 +1,24 @@ +# SPDX-FileCopyrightText: Copyright (c) 2025-2026 NVIDIA CORPORATION & AFFILIATES. All rights reserved. +# SPDX-License-Identifier: Apache-2.0 + +"""Per-library descriptor and registry. + +The canonical authored data lives in :mod:`descriptor_catalog`. This module +provides a name-keyed registry consumed by the runtime search/load path. +""" + +from __future__ import annotations + +from typing import TypeAlias + +from cuda.pathfinder._dynamic_libs.descriptor_catalog import ( + DESCRIPTOR_CATALOG, + DescriptorSpec, +) + +# Keep the historical type name for downstream imports. +LibDescriptor: TypeAlias = DescriptorSpec + + +#: Canonical registry of all known libraries. +LIB_DESCRIPTORS: dict[str, LibDescriptor] = {desc.name: desc for desc in DESCRIPTOR_CATALOG} diff --git a/venv/lib/python3.11/site-packages/cuda/pathfinder/_dynamic_libs/load_dl_common.py b/venv/lib/python3.11/site-packages/cuda/pathfinder/_dynamic_libs/load_dl_common.py new file mode 100644 index 0000000000000000000000000000000000000000..8d7987d00e2b9982365de200ab1626ca3658477f --- /dev/null +++ b/venv/lib/python3.11/site-packages/cuda/pathfinder/_dynamic_libs/load_dl_common.py @@ -0,0 +1,36 @@ +# SPDX-FileCopyrightText: Copyright (c) 2025 NVIDIA CORPORATION & AFFILIATES. All rights reserved. +# SPDX-License-Identifier: Apache-2.0 + +from __future__ import annotations + +from collections.abc import Callable +from dataclasses import dataclass +from typing import TYPE_CHECKING + +if TYPE_CHECKING: + from cuda.pathfinder._dynamic_libs.lib_descriptor import LibDescriptor + + +class DynamicLibNotFoundError(RuntimeError): + pass + + +class DynamicLibNotAvailableError(DynamicLibNotFoundError): + pass + + +class DynamicLibUnknownError(DynamicLibNotFoundError): + pass + + +@dataclass +class LoadedDL: + abs_path: str | None + was_already_loaded_from_elsewhere: bool + _handle_uint: int # Platform-agnostic unsigned pointer value + found_via: str # "CUDA_PATH" covers both CUDA_PATH and CUDA_HOME env vars + + +def load_dependencies(desc: LibDescriptor, load_func: Callable[[str], LoadedDL]) -> None: + for dep in desc.dependencies: + load_func(dep) diff --git a/venv/lib/python3.11/site-packages/cuda/pathfinder/_dynamic_libs/load_dl_linux.py b/venv/lib/python3.11/site-packages/cuda/pathfinder/_dynamic_libs/load_dl_linux.py new file mode 100644 index 0000000000000000000000000000000000000000..10a92c20830b08e538697dba556c8afc4b5deb14 --- /dev/null +++ b/venv/lib/python3.11/site-packages/cuda/pathfinder/_dynamic_libs/load_dl_linux.py @@ -0,0 +1,218 @@ +# SPDX-FileCopyrightText: Copyright (c) 2025 NVIDIA CORPORATION & AFFILIATES. All rights reserved. +# SPDX-License-Identifier: Apache-2.0 + +from __future__ import annotations + +import contextlib +import ctypes +import ctypes.util +import os +from typing import TYPE_CHECKING, cast + +from cuda.pathfinder._dynamic_libs.load_dl_common import LoadedDL + +if TYPE_CHECKING: + from cuda.pathfinder._dynamic_libs.lib_descriptor import LibDescriptor + +CDLL_MODE = os.RTLD_NOW | os.RTLD_GLOBAL + + +def _load_libdl() -> ctypes.CDLL: + # In normal glibc-based Linux environments, find_library("dl") should return + # something like "libdl.so.2". In minimal or stripped-down environments + # (no ldconfig/gcc, incomplete linker cache), this can return None even + # though libdl is present. In that case, we fall back to the stable SONAME. + name = ctypes.util.find_library("dl") or "libdl.so.2" + try: + return ctypes.CDLL(name) + except OSError as e: + raise RuntimeError(f"Could not load {name!r} (required for dlinfo/dlerror on Linux)") from e + + +LIBDL = _load_libdl() + +# dlinfo +LIBDL.dlinfo.argtypes = [ctypes.c_void_p, ctypes.c_int, ctypes.c_void_p] +LIBDL.dlinfo.restype = ctypes.c_int + +# dlerror (thread-local error string; cleared after read) +LIBDL.dlerror.argtypes = [] +LIBDL.dlerror.restype = ctypes.c_char_p + +# First appeared in 2004-era glibc. Universally correct on Linux for all practical purposes. +RTLD_DI_LINKMAP = 2 +RTLD_DI_ORIGIN = 6 + + +class _LinkMapLNameView(ctypes.Structure): + """ + Prefix-only view of glibc's `struct link_map` used **solely** to read `l_name`. + + Background: + - `dlinfo(handle, RTLD_DI_LINKMAP, ...)` returns a `struct link_map*`. + - The first few members of `struct link_map` (including `l_name`) have been + stable on glibc for decades and are documented as debugger-visible. + - We only need the offset/layout of `l_name`, not the full struct. + + Safety constraints: + - This is a **partial** definition (prefix). It must only be used via a pointer + returned by `dlinfo(...)`. + - Do **not** instantiate it or pass it **by value** to any C function. + - Do **not** access any members beyond those declared here. + - Do **not** rely on `ctypes.sizeof(LinkMapPrefix)` for allocation. + + Rationale: + - Defining only the leading fields avoids depending on internal/unstable + tail members while keeping code more readable than raw pointer arithmetic. + """ + + _fields_ = ( + ("l_addr", ctypes.c_void_p), # ElfW(Addr) + ("l_name", ctypes.c_char_p), # char* + ) + + +# Defensive assertions, mainly to document the invariants we depend on +assert _LinkMapLNameView.l_addr.offset == 0 +assert _LinkMapLNameView.l_name.offset == ctypes.sizeof(ctypes.c_void_p) + + +def _dl_last_error() -> str | None: + msg_bytes = cast(bytes | None, LIBDL.dlerror()) + if not msg_bytes: + return None # no pending error + # Never raises; undecodable bytes are mapped to U+DC80..U+DCFF + return msg_bytes.decode("utf-8", "surrogateescape") + + +def l_name_for_dynamic_library(libname: str, handle: ctypes.CDLL) -> str: + lm_view = ctypes.POINTER(_LinkMapLNameView)() + rc = LIBDL.dlinfo(ctypes.c_void_p(handle._handle), RTLD_DI_LINKMAP, ctypes.byref(lm_view)) + if rc != 0: + err = _dl_last_error() + raise OSError(f"dlinfo failed for {libname=!r} (rc={rc})" + (f": {err}" if err else "")) + if not lm_view: # NULL link_map** + raise OSError(f"dlinfo returned NULL link_map pointer for {libname=!r}") + + l_name_bytes = lm_view.contents.l_name + if not l_name_bytes: + raise OSError(f"dlinfo returned empty link_map->l_name for {libname=!r}") + + path = os.fsdecode(l_name_bytes) + if not path: + raise OSError(f"dlinfo returned empty l_name string for {libname=!r}") + + return path + + +def l_origin_for_dynamic_library(libname: str, handle: ctypes.CDLL) -> str: + l_origin_buf = ctypes.create_string_buffer(4096) + rc = LIBDL.dlinfo(ctypes.c_void_p(handle._handle), RTLD_DI_ORIGIN, l_origin_buf) + if rc != 0: + err = _dl_last_error() + raise OSError(f"dlinfo failed for {libname=!r} (rc={rc})" + (f": {err}" if err else "")) + + path = os.fsdecode(l_origin_buf.value) + if not path: + raise OSError(f"dlinfo returned empty l_origin string for {libname=!r}") + + return path + + +def abs_path_for_dynamic_library(libname: str, handle: ctypes.CDLL) -> str: + l_name = l_name_for_dynamic_library(libname, handle) + l_origin = l_origin_for_dynamic_library(libname, handle) + return os.path.join(l_origin, os.path.basename(l_name)) + + +def _candidate_sonames(desc: LibDescriptor) -> list[str]: + # Reverse tabulated names to achieve new -> old search order. + candidates = list(reversed(desc.linux_sonames)) + candidates.append(f"lib{desc.name}.so") + return candidates + + +def check_if_already_loaded_from_elsewhere(desc: LibDescriptor, _have_abs_path: bool) -> LoadedDL | None: + for soname in _candidate_sonames(desc): + try: + handle = ctypes.CDLL(soname, mode=os.RTLD_NOLOAD) + except OSError: + continue + else: + return LoadedDL( + abs_path_for_dynamic_library(desc.name, handle), + True, + handle._handle, + "was-already-loaded-from-elsewhere", + ) + return None + + +def _load_lib(desc: LibDescriptor, filename: str) -> ctypes.CDLL: + cdll_mode = CDLL_MODE + if desc.requires_rtld_deepbind: + cdll_mode |= os.RTLD_DEEPBIND + return ctypes.CDLL(filename, cdll_mode) + + +def load_with_system_search(desc: LibDescriptor) -> LoadedDL | None: + """Try to load a library using the native Linux dynamic-loader search path. + + Args: + desc: Descriptor for the library to load + + Returns: + A LoadedDL object if successful, None if the library cannot be loaded + + """ + for soname in _candidate_sonames(desc): + try: + handle = _load_lib(desc, soname) + except OSError: + pass + else: + abs_path = abs_path_for_dynamic_library(desc.name, handle) + assert abs_path + return LoadedDL(abs_path, False, handle._handle, "system-search") + return None + + +def _work_around_known_bugs(libname: str, found_path: str) -> None: + if libname == "nvrtc": + # Work around bug/oversight in + # nvidia_cuda_nvrtc-13.0.48-py3-none-manylinux2010_x86_64.manylinux_2_12_x86_64.whl + # Issue: libnvrtc.so.13 RUNPATH is not set. + # This workaround is highly specific + # - for simplicity. + # - to not mask bugs in future nvidia-cuda-nvrtc releases. + # - because a more general workaround is complicated. + dirname, basename = os.path.split(found_path) + if basename == "libnvrtc.so.13": + dep_basename = "libnvrtc-builtins.so.13.0" + dep_path = os.path.join(dirname, dep_basename) + if os.path.isfile(dep_path): + # In case of failure, defer to primary load, which is almost certain to fail, too. + with contextlib.suppress(OSError): + ctypes.CDLL(dep_path, CDLL_MODE) + + +def load_with_abs_path(desc: LibDescriptor, found_path: str, found_via: str | None = None) -> LoadedDL: + """Load a dynamic library from the given path. + + Args: + desc: Descriptor for the library to load. + found_path: The absolute path to the library file. + found_via: Label indicating how the path was discovered. + + Returns: + A LoadedDL object representing the loaded library. + + Raises: + RuntimeError: If the library cannot be loaded. + """ + _work_around_known_bugs(desc.name, found_path) + try: + handle = _load_lib(desc, found_path) + except OSError as e: + raise RuntimeError(f"Failed to dlopen {found_path}: {e}") from e + return LoadedDL(found_path, False, handle._handle, found_via) diff --git a/venv/lib/python3.11/site-packages/cuda/pathfinder/_dynamic_libs/load_dl_windows.py b/venv/lib/python3.11/site-packages/cuda/pathfinder/_dynamic_libs/load_dl_windows.py new file mode 100644 index 0000000000000000000000000000000000000000..5069a6247906daa11b365c5d0eaaa24fe01040d5 --- /dev/null +++ b/venv/lib/python3.11/site-packages/cuda/pathfinder/_dynamic_libs/load_dl_windows.py @@ -0,0 +1,166 @@ +# SPDX-FileCopyrightText: Copyright (c) 2025 NVIDIA CORPORATION & AFFILIATES. All rights reserved. +# SPDX-License-Identifier: Apache-2.0 + +from __future__ import annotations + +import ctypes +import ctypes.wintypes +import os +import struct +from typing import TYPE_CHECKING + +from cuda.pathfinder._dynamic_libs.load_dl_common import LoadedDL + +if TYPE_CHECKING: + from cuda.pathfinder._dynamic_libs.lib_descriptor import LibDescriptor + +# Mirrors WinBase.h (unfortunately not defined already elsewhere) +WINBASE_LOAD_LIBRARY_SEARCH_DLL_LOAD_DIR = 0x00000100 +WINBASE_LOAD_LIBRARY_SEARCH_DEFAULT_DIRS = 0x00001000 + +POINTER_ADDRESS_SPACE = 2 ** (struct.calcsize("P") * 8) + +# Set up kernel32 functions with proper types +kernel32 = ctypes.windll.kernel32 # type: ignore[attr-defined] + +# GetModuleHandleW +kernel32.GetModuleHandleW.argtypes = [ctypes.wintypes.LPCWSTR] +kernel32.GetModuleHandleW.restype = ctypes.wintypes.HMODULE + +# LoadLibraryExW +kernel32.LoadLibraryExW.argtypes = [ + ctypes.wintypes.LPCWSTR, # lpLibFileName + ctypes.wintypes.HANDLE, # hFile (reserved, must be NULL) + ctypes.wintypes.DWORD, # dwFlags +] +kernel32.LoadLibraryExW.restype = ctypes.wintypes.HMODULE + +# GetModuleFileNameW +kernel32.GetModuleFileNameW.argtypes = [ + ctypes.wintypes.HMODULE, # hModule + ctypes.wintypes.LPWSTR, # lpFilename + ctypes.wintypes.DWORD, # nSize +] +kernel32.GetModuleFileNameW.restype = ctypes.wintypes.DWORD + +# AddDllDirectory (Windows 7+) +kernel32.AddDllDirectory.argtypes = [ctypes.wintypes.LPCWSTR] +kernel32.AddDllDirectory.restype = ctypes.c_void_p # DLL_DIRECTORY_COOKIE + + +def ctypes_handle_to_unsigned_int(handle: ctypes.wintypes.HMODULE) -> int: + """Convert ctypes HMODULE to unsigned int.""" + handle_uint = int(handle) + if handle_uint < 0: + # Convert from signed to unsigned representation + handle_uint += POINTER_ADDRESS_SPACE + return handle_uint + + +def add_dll_directory(dll_abs_path: str) -> None: + """Add a DLL directory to the search path and update PATH environment variable. + + Args: + dll_abs_path: Absolute path to the DLL file + + Raises: + AssertionError: If the directory containing the DLL does not exist + """ + dirpath = os.path.dirname(dll_abs_path) + assert os.path.isdir(dirpath), dll_abs_path + + # Add the DLL directory to the native search path. AddDllDirectory only + # affects the LOAD_LIBRARY_SEARCH_USER_DIRS search; PATH is updated + # unconditionally below to also cover legacy dependent-DLL resolution. + kernel32.AddDllDirectory(dirpath) + + # Update PATH as a fallback for dependent DLL resolution + curr_path = os.environ.get("PATH") + os.environ["PATH"] = dirpath if curr_path is None else os.pathsep.join((curr_path, dirpath)) + + +def abs_path_for_dynamic_library(libname: str, handle: ctypes.wintypes.HMODULE) -> str: + """Get the absolute path of a loaded dynamic library on Windows.""" + # Create buffer for the path + buffer = ctypes.create_unicode_buffer(260) # MAX_PATH + length = kernel32.GetModuleFileNameW(handle, buffer, len(buffer)) + + if length == 0: + error_code = ctypes.GetLastError() # type: ignore[attr-defined] + raise RuntimeError(f"GetModuleFileNameW failed for {libname!r} (error code: {error_code})") + + # If buffer was too small, try with larger buffer + if length == len(buffer): + buffer = ctypes.create_unicode_buffer(32768) # Extended path length + length = kernel32.GetModuleFileNameW(handle, buffer, len(buffer)) + if length == 0: + error_code = ctypes.GetLastError() # type: ignore[attr-defined] + raise RuntimeError(f"GetModuleFileNameW failed for {libname!r} (error code: {error_code})") + + return buffer.value + + +def check_if_already_loaded_from_elsewhere(desc: LibDescriptor, have_abs_path: bool) -> LoadedDL | None: + for dll_name in desc.windows_dlls: + handle = kernel32.GetModuleHandleW(dll_name) + if handle: + abs_path = abs_path_for_dynamic_library(desc.name, handle) + if have_abs_path and desc.requires_add_dll_directory: + # This is a side-effect if the pathfinder loads the library via + # load_with_abs_path(). To make the side-effect more deterministic, + # activate it even if the library was already loaded from elsewhere. + add_dll_directory(abs_path) + return LoadedDL(abs_path, True, ctypes_handle_to_unsigned_int(handle), "was-already-loaded-from-elsewhere") + return None + + +def load_with_system_search(desc: LibDescriptor) -> LoadedDL | None: + """Try to load a DLL using the native Windows process DLL search path. + + This calls ``LoadLibraryExW(dll_name, NULL, 0)`` directly. Under Python + 3.8+, CPython configures the process with + ``SetDefaultDllDirectories(LOAD_LIBRARY_SEARCH_DEFAULT_DIRS)``, so this + search does **not** include the system ``PATH``. Directories added via + ``AddDllDirectory()`` still participate. + + Args: + desc: Descriptor for the library to load + + Returns: + A LoadedDL object if successful, None if the library cannot be loaded + """ + # Reverse tabulated names to achieve new -> old search order. + for dll_name in reversed(desc.windows_dlls): + handle = kernel32.LoadLibraryExW(dll_name, None, 0) + if handle: + abs_path = abs_path_for_dynamic_library(desc.name, handle) + return LoadedDL(abs_path, False, ctypes_handle_to_unsigned_int(handle), "system-search") + + return None + + +def load_with_abs_path(desc: LibDescriptor, found_path: str, found_via: str | None = None) -> LoadedDL: + """Load a dynamic library from the given path. + + Args: + desc: Descriptor for the library to load. + found_path: The absolute path to the DLL file. + found_via: Label indicating how the path was discovered. + + Returns: + A LoadedDL object representing the loaded library. + + Raises: + RuntimeError: If the DLL cannot be loaded. + """ + if desc.requires_add_dll_directory: + add_dll_directory(found_path) + + flags = WINBASE_LOAD_LIBRARY_SEARCH_DEFAULT_DIRS | WINBASE_LOAD_LIBRARY_SEARCH_DLL_LOAD_DIR + handle = kernel32.LoadLibraryExW(found_path, None, flags) + + if not handle: + error_code = ctypes.GetLastError() # type: ignore[attr-defined] + raise RuntimeError(f"Failed to load DLL at {found_path}: Windows error {error_code}") + + return LoadedDL(found_path, False, ctypes_handle_to_unsigned_int(handle), found_via) diff --git a/venv/lib/python3.11/site-packages/cuda/pathfinder/_dynamic_libs/load_nvidia_dynamic_lib.py b/venv/lib/python3.11/site-packages/cuda/pathfinder/_dynamic_libs/load_nvidia_dynamic_lib.py new file mode 100644 index 0000000000000000000000000000000000000000..95a7182579333ad9e2624862c3f03945937abfcb --- /dev/null +++ b/venv/lib/python3.11/site-packages/cuda/pathfinder/_dynamic_libs/load_nvidia_dynamic_lib.py @@ -0,0 +1,316 @@ +# SPDX-FileCopyrightText: Copyright (c) 2025-2026 NVIDIA CORPORATION & AFFILIATES. All rights reserved. +# SPDX-License-Identifier: Apache-2.0 + +from __future__ import annotations + +import functools +import struct +import subprocess +import sys +from typing import TYPE_CHECKING + +from cuda.pathfinder._dynamic_libs.lib_descriptor import LIB_DESCRIPTORS +from cuda.pathfinder._dynamic_libs.load_dl_common import ( + DynamicLibNotAvailableError, + DynamicLibNotFoundError, + DynamicLibUnknownError, + LoadedDL, + load_dependencies, +) +from cuda.pathfinder._dynamic_libs.platform_loader import LOADER +from cuda.pathfinder._dynamic_libs.search_steps import ( + EARLY_FIND_STEPS, + LATE_FIND_STEPS, + SearchContext, + derive_ctk_root, + find_via_ctk_root, + run_find_steps, +) +from cuda.pathfinder._dynamic_libs.subprocess_protocol import ( + DYNAMIC_LIB_SUBPROCESS_CWD, + MODE_CANARY, + STATUS_OK, + DynamicLibSubprocessPayload, + build_dynamic_lib_subprocess_command, + parse_dynamic_lib_subprocess_payload, +) +from cuda.pathfinder._utils.platform_aware import IS_WINDOWS + +if TYPE_CHECKING: + from cuda.pathfinder._dynamic_libs.lib_descriptor import LibDescriptor + +# All libnames recognized by load_nvidia_dynamic_lib, across all categories +# (CTK, third-party, driver). +_ALL_KNOWN_LIBNAMES: frozenset[str] = frozenset(LIB_DESCRIPTORS) +_ALL_SUPPORTED_LIBNAMES: frozenset[str] = frozenset( + name for name, desc in LIB_DESCRIPTORS.items() if (desc.windows_dlls if IS_WINDOWS else desc.linux_sonames) +) +_PLATFORM_NAME = "Windows" if IS_WINDOWS else "Linux" +_CANARY_PROBE_TIMEOUT_SECONDS = 10.0 + +# Driver libraries: shipped with the NVIDIA display driver, always on the +# system linker path. These skip all CTK search steps (site-packages, +# conda, CUDA_PATH, canary) and go straight to system search. +_DRIVER_ONLY_LIBNAMES = frozenset(name for name, desc in LIB_DESCRIPTORS.items() if desc.packaged_with == "driver") + + +def _load_driver_lib_no_cache(desc: LibDescriptor) -> LoadedDL: + """Load an NVIDIA driver library (system-search only). + + Driver libs (libcuda, libnvidia-ml) are part of the display driver, not + the CUDA Toolkit. They are expected to be discoverable via the platform's + native loader mechanisms, so the full CTK search cascade (site-packages, + conda, CUDA_PATH, canary) is unnecessary. + """ + loaded = LOADER.check_if_already_loaded_from_elsewhere(desc, False) + if loaded is not None: + return loaded + loaded = LOADER.load_with_system_search(desc) + if loaded is not None: + return loaded + raise DynamicLibNotFoundError( + f'"{desc.name}" is an NVIDIA driver library and can only be found via' + f" system search. Ensure the NVIDIA display driver is installed." + ) + + +def _coerce_subprocess_output(output: str | bytes | None) -> str: + if isinstance(output, bytes): + return output.decode(errors="replace") + return "" if output is None else output + + +def _raise_canary_probe_child_process_error( + *, + returncode: int | None = None, + timeout: float | None = None, + stderr: str | bytes | None = None, +) -> None: + if timeout is None: + error_line = f"Canary probe child process exited with code {returncode}." + else: + error_line = f"Canary probe child process timed out after {timeout} seconds." + raise ChildProcessError( + f"{error_line}\n" + "--- stderr-from-child-process ---\n" + f"{_coerce_subprocess_output(stderr)}" + "\n" + ) + + +@functools.cache +def _resolve_system_loaded_abs_path_in_subprocess( + libname: str, + *, + timeout: float = _CANARY_PROBE_TIMEOUT_SECONDS, +) -> str | None: + """Resolve a canary library's absolute path in a fresh Python subprocess.""" + try: + result = subprocess.run( # noqa: S603 - trusted argv: current interpreter + internal probe module + build_dynamic_lib_subprocess_command(MODE_CANARY, libname), + capture_output=True, + text=True, + timeout=timeout, + check=False, + cwd=DYNAMIC_LIB_SUBPROCESS_CWD, + ) + except subprocess.TimeoutExpired as exc: + _raise_canary_probe_child_process_error(timeout=exc.timeout, stderr=exc.stderr) + + if result.returncode != 0: + _raise_canary_probe_child_process_error(returncode=result.returncode, stderr=result.stderr) + + payload: DynamicLibSubprocessPayload = parse_dynamic_lib_subprocess_payload( + result.stdout, + libname=libname, + error_label="Canary probe child process", + ) + abs_path: str | None = payload.abs_path + if payload.status == STATUS_OK: + return abs_path + return None + + +def _loadable_via_canary_subprocess(libname: str, *, timeout: float = _CANARY_PROBE_TIMEOUT_SECONDS) -> bool: + """Return True if the canary subprocess can resolve ``libname`` via system search.""" + return _resolve_system_loaded_abs_path_in_subprocess(libname, timeout=timeout) is not None + + +def resolve_ctk_root_via_canary(canary_libname: str) -> str | None: + """Resolve the CUDA Toolkit root from a system-loadable canary library. + + The canary library's absolute path is resolved by the OS dynamic loader in + an isolated subprocess, which honors ``LD_LIBRARY_PATH`` on Linux and the + native DLL search on Windows. The toolkit root is then derived from that + path. Returns ``None`` if the canary cannot be resolved or no root can be + derived. + """ + canary_abs_path = _resolve_system_loaded_abs_path_in_subprocess(canary_libname) + if canary_abs_path is None: + return None + ctk_root: str | None = derive_ctk_root(canary_abs_path) + return ctk_root + + +def _try_ctk_root_canary(ctx: SearchContext) -> str | None: + """Try CTK-root canary fallback for descriptor-configured libraries.""" + for canary_libname in ctx.desc.ctk_root_canary_anchor_libnames: + ctk_root = resolve_ctk_root_via_canary(canary_libname) + if ctk_root is None: + continue + find = find_via_ctk_root(ctx, ctk_root) + if find is not None: + return str(find.abs_path) + return None + + +def _load_lib_no_cache(libname: str) -> LoadedDL: + desc = LIB_DESCRIPTORS[libname] + + if libname in _DRIVER_ONLY_LIBNAMES: + return _load_driver_lib_no_cache(desc) + + ctx = SearchContext(desc) + + # Phase 1: Try to find the library file on disk (pip wheels, conda). + find = run_find_steps(ctx, EARLY_FIND_STEPS) + + # Phase 2: Cross-cutting — already-loaded check and dependency loading. + # The already-loaded check on Windows uses the "have we found a path?" + # flag to decide whether to apply AddDllDirectory side-effects. + loaded = LOADER.check_if_already_loaded_from_elsewhere(desc, find is not None) + load_dependencies(desc, load_nvidia_dynamic_lib) + if loaded is not None: + return loaded + + # Phase 3: Load from found path, or fall back to system search + late find. + if find is not None: + return LOADER.load_with_abs_path(desc, find.abs_path, find.found_via) + + loaded = LOADER.load_with_system_search(desc) + if loaded is not None: + return loaded + + find = run_find_steps(ctx, LATE_FIND_STEPS) + if find is not None: + return LOADER.load_with_abs_path(desc, find.abs_path, find.found_via) + + if desc.ctk_root_canary_anchor_libnames: + canary_abs_path = _try_ctk_root_canary(ctx) + if canary_abs_path is not None: + return LOADER.load_with_abs_path(desc, canary_abs_path, "system-ctk-root") + + ctx.raise_not_found() + + +@functools.cache +def load_nvidia_dynamic_lib(libname: str) -> LoadedDL: + """Load an NVIDIA dynamic library by name. + + Args: + libname (str): The short name of the library to load (e.g., ``"cudart"``, + ``"nvvm"``, etc.). + + Returns: + LoadedDL: Object containing the OS library handle and absolute path. + + **Important:** + + **Never close the returned handle.** Do **not** call ``dlclose`` (Linux) or + ``FreeLibrary`` (Windows) on the ``LoadedDL._handle_uint``. + + **Why:** the return value is cached (``functools.cache``) and shared across the + process. Closing the handle can unload the module while other code still uses + it, leading to crashes or subtle failures. + + This applies to Linux and Windows. For context, see issue #1011: + https://github.com/NVIDIA/cuda-python/issues/1011 + + Raises: + DynamicLibUnknownError: If ``libname`` is not a recognized library name. + DynamicLibNotAvailableError: If ``libname`` is recognized but not + supported on this platform. + DynamicLibNotFoundError: If the library cannot be found or loaded. + RuntimeError: If Python is not 64-bit. + + Search order: + 0. **Already loaded in the current process** + + - If a matching library is already loaded by some other component, + return its absolute path and handle and skip the rest of the search. + + 1. **NVIDIA Python wheels** + + - Scan installed distributions (``site-packages``) to find libraries + shipped in NVIDIA wheels. + + 2. **Conda environment** + + - Conda installations are discovered via ``CONDA_PREFIX``, which is + defined automatically in activated conda environments (see + https://docs.conda.io/projects/conda-build/en/stable/user-guide/environment-variables.html). + + 3. **OS default mechanisms** + + - Fall back to the native loader: + + - Linux: ``dlopen()`` + + - Windows: ``LoadLibraryExW()`` + + On Linux, CUDA Toolkit (CTK) system installs with system config updates are + usually discovered via ``/etc/ld.so.conf.d/*cuda*.conf``. + + On Windows, under Python 3.8+, CPython configures the process with + ``SetDefaultDllDirectories(LOAD_LIBRARY_SEARCH_DEFAULT_DIRS)``. + As a result, the native DLL search used here does **not** include + the system ``PATH``. + + 4. **Environment variables** + + - If set, use ``CUDA_PATH`` or ``CUDA_HOME`` (in that order). + On Windows, this is the typical way system-installed CTK DLLs are + located. Note that the NVIDIA CTK installer automatically + adds ``CUDA_PATH`` to the system-wide environment. + + 5. **CTK root canary probe (discoverable libs only)** + + - For selected libraries whose shared object doesn't reside on the + standard linker path (currently ``nvvm``), attempt to derive CTK + root by system-loading a well-known CTK canary library in a + subprocess and then searching relative to that root. On Windows, + the canary uses the same native ``LoadLibraryExW`` semantics as + step 3, so there is also no ``PATH``-based discovery. + + **Driver libraries** (``"cuda"``, ``"nvml"``): + + These are part of the NVIDIA display driver (not the CUDA Toolkit) and + are expected to be reachable via the native OS loader path. For these + libraries the search is simplified to: + + 0. Already loaded in the current process + 1. OS default mechanisms (``dlopen`` / ``LoadLibraryExW``) + + The CTK-specific steps (site-packages, conda, ``CUDA_PATH``, canary + probe) are skipped entirely. + + Notes: + The search is performed **per library**. There is currently no mechanism to + guarantee that multiple libraries are all resolved from the same location. + + """ + pointer_size_bits = struct.calcsize("P") * 8 + if pointer_size_bits != 64: + raise RuntimeError( + f"cuda.pathfinder.load_nvidia_dynamic_lib() requires 64-bit Python." + f" Currently running: {pointer_size_bits}-bit Python" + f" {sys.version_info.major}.{sys.version_info.minor}" + ) + if libname not in _ALL_KNOWN_LIBNAMES: + raise DynamicLibUnknownError(f"Unknown library name: {libname!r}. Known names: {sorted(_ALL_KNOWN_LIBNAMES)}") + if libname not in _ALL_SUPPORTED_LIBNAMES: + raise DynamicLibNotAvailableError( + f"Library name {libname!r} is known but not available on {_PLATFORM_NAME}. " + f"Supported names on {_PLATFORM_NAME}: {sorted(_ALL_SUPPORTED_LIBNAMES)}" + ) + return _load_lib_no_cache(libname) diff --git a/venv/lib/python3.11/site-packages/cuda/pathfinder/_dynamic_libs/platform_loader.py b/venv/lib/python3.11/site-packages/cuda/pathfinder/_dynamic_libs/platform_loader.py new file mode 100644 index 0000000000000000000000000000000000000000..9b108a57acc80dc1067fb66c310996bec7c27208 --- /dev/null +++ b/venv/lib/python3.11/site-packages/cuda/pathfinder/_dynamic_libs/platform_loader.py @@ -0,0 +1,41 @@ +# SPDX-FileCopyrightText: Copyright (c) 2025 NVIDIA CORPORATION & AFFILIATES. All rights reserved. +# SPDX-License-Identifier: Apache-2.0 + +"""Platform loader seam for OS-specific dynamic linking. + +This module provides a small interface that hides the Linux vs Windows +implementation details of: + +- already-loaded checks +- system-search loading +- absolute-path loading + +The orchestration logic in :mod:`load_nvidia_dynamic_lib` should not need to +branch on platform; it calls through the loader instance exported here. +""" + +from __future__ import annotations + +from typing import Protocol + +from cuda.pathfinder._dynamic_libs.lib_descriptor import LibDescriptor +from cuda.pathfinder._dynamic_libs.load_dl_common import LoadedDL +from cuda.pathfinder._utils.platform_aware import IS_WINDOWS + + +class PlatformLoader(Protocol): + def check_if_already_loaded_from_elsewhere(self, desc: LibDescriptor, have_abs_path: bool) -> LoadedDL | None: ... + + def load_with_system_search(self, desc: LibDescriptor) -> LoadedDL | None: ... + + def load_with_abs_path(self, desc: LibDescriptor, found_path: str, found_via: str | None = None) -> LoadedDL: ... + + +if IS_WINDOWS: + from cuda.pathfinder._dynamic_libs import load_dl_windows as _impl +else: + from cuda.pathfinder._dynamic_libs import load_dl_linux as _impl + +# The platform modules already expose functions matching the PlatformLoader +# protocol. Wrap in a simple namespace so callers use LOADER.method() syntax. +LOADER: PlatformLoader = _impl diff --git a/venv/lib/python3.11/site-packages/cuda/pathfinder/_dynamic_libs/search_platform.py b/venv/lib/python3.11/site-packages/cuda/pathfinder/_dynamic_libs/search_platform.py new file mode 100644 index 0000000000000000000000000000000000000000..37fd6eb17005996db579945ac8e91fb93d5c71cc --- /dev/null +++ b/venv/lib/python3.11/site-packages/cuda/pathfinder/_dynamic_libs/search_platform.py @@ -0,0 +1,219 @@ +# SPDX-FileCopyrightText: Copyright (c) 2025 NVIDIA CORPORATION & AFFILIATES. All rights reserved. +# SPDX-License-Identifier: Apache-2.0 + +"""Platform abstraction for filesystem search steps. + +The goal is to keep :mod:`search_steps` platform-agnostic: it should not branch +on OS flags like ``IS_WINDOWS``. Instead, it calls through the single +``PLATFORM`` instance exported here. +""" + +from __future__ import annotations + +import glob +import os +from collections.abc import Sequence +from dataclasses import dataclass +from typing import Protocol, cast + +from cuda.pathfinder._dynamic_libs.lib_descriptor import LibDescriptor +from cuda.pathfinder._dynamic_libs.supported_nvidia_libs import is_suppressed_dll_file +from cuda.pathfinder._utils.find_sub_dirs import find_sub_dirs_all_sitepackages +from cuda.pathfinder._utils.platform_aware import IS_WINDOWS + + +def _no_such_file_in_sub_dirs( + sub_dirs: Sequence[str], file_wild: str, error_messages: list[str], attachments: list[str] +) -> None: + error_messages.append(f"No such file: {file_wild}") + for sub_dir in find_sub_dirs_all_sitepackages(sub_dirs): + attachments.append(f' listdir("{sub_dir}"):') + for node in sorted(os.listdir(sub_dir)): + attachments.append(f" {node}") + + +def _find_so_in_rel_dirs( + rel_dirs: tuple[str, ...], + so_basename: str, + error_messages: list[str], + attachments: list[str], +) -> str | None: + sub_dirs_searched: list[tuple[str, ...]] = [] + file_wild = so_basename + "*" + for rel_dir in rel_dirs: + sub_dir = tuple(rel_dir.split(os.path.sep)) + for abs_dir in find_sub_dirs_all_sitepackages(sub_dir): + # Exact unversioned match first; fall back to versioned names because some + # distros only ship lib.so. (e.g. conda libcupti). Only one match + # is expected in practice. Sort in reverse so the newest-sorting name wins if + # multiple coexist, matching the newest-first bias elsewhere in pathfinder + # (see LinuxSearchPlatform.find_in_lib_dir and load_dl_linux._candidate_sonames). + # Issue #1732 tracks the deferred question of raising on true ambiguity. + so_name = os.path.join(abs_dir, so_basename) + if os.path.isfile(so_name): + return so_name + for so_name in sorted(glob.glob(os.path.join(abs_dir, file_wild)), reverse=True): + if os.path.isfile(so_name): + return so_name + sub_dirs_searched.append(sub_dir) + for sub_dir in sub_dirs_searched: + _no_such_file_in_sub_dirs(sub_dir, file_wild, error_messages, attachments) + return None + + +def _find_dll_under_dir(dirpath: str, file_wild: str) -> str | None: + for path in sorted(glob.glob(os.path.join(dirpath, file_wild))): + if not os.path.isfile(path): + continue + if not is_suppressed_dll_file(os.path.basename(path)): + return path + return None + + +def _find_dll_in_rel_dirs( + rel_dirs: tuple[str, ...], + lib_searched_for: str, + error_messages: list[str], + attachments: list[str], +) -> str | None: + sub_dirs_searched: list[tuple[str, ...]] = [] + for rel_dir in rel_dirs: + sub_dir = tuple(rel_dir.split(os.path.sep)) + for abs_dir in find_sub_dirs_all_sitepackages(sub_dir): + dll_name = _find_dll_under_dir(abs_dir, lib_searched_for) + if dll_name is not None: + return dll_name + sub_dirs_searched.append(sub_dir) + for sub_dir in sub_dirs_searched: + _no_such_file_in_sub_dirs(sub_dir, lib_searched_for, error_messages, attachments) + return None + + +class SearchPlatform(Protocol): + def lib_searched_for(self, libname: str) -> str: ... + + def site_packages_rel_dirs(self, desc: LibDescriptor) -> tuple[str, ...]: ... + + def conda_anchor_point(self, conda_prefix: str) -> str: ... + + def anchor_rel_dirs(self, desc: LibDescriptor) -> tuple[str, ...]: ... + + def find_in_site_packages( + self, + rel_dirs: tuple[str, ...], + lib_searched_for: str, + error_messages: list[str], + attachments: list[str], + ) -> str | None: ... + + def find_in_lib_dir( + self, + lib_dir: str, + libname: str, + lib_searched_for: str, + error_messages: list[str], + attachments: list[str], + ) -> str | None: ... + + +@dataclass(frozen=True, slots=True) +class LinuxSearchPlatform: + def lib_searched_for(self, libname: str) -> str: + return f"lib{libname}.so" + + def site_packages_rel_dirs(self, desc: LibDescriptor) -> tuple[str, ...]: + return cast(tuple[str, ...], desc.site_packages_linux) + + def conda_anchor_point(self, conda_prefix: str) -> str: + return conda_prefix + + def anchor_rel_dirs(self, desc: LibDescriptor) -> tuple[str, ...]: + return cast(tuple[str, ...], desc.anchor_rel_dirs_linux) + + def find_in_site_packages( + self, + rel_dirs: tuple[str, ...], + lib_searched_for: str, + error_messages: list[str], + attachments: list[str], + ) -> str | None: + return _find_so_in_rel_dirs(rel_dirs, lib_searched_for, error_messages, attachments) + + def find_in_lib_dir( + self, + lib_dir: str, + _libname: str, + lib_searched_for: str, + error_messages: list[str], + attachments: list[str], + ) -> str | None: + # Most libraries have both unversioned and versioned files/symlinks (exact match first) + so_name = os.path.join(lib_dir, lib_searched_for) + if os.path.isfile(so_name): + return so_name + # Some libraries only exist as versioned files (e.g., libcupti.so.13 in conda), + # so the glob fallback is needed + file_wild = lib_searched_for + "*" + # Only one match is expected, but to ensure deterministic behavior in unexpected + # situations, and to be internally consistent, we sort in reverse order with the + # intent to return the newest version first. Issue #1732 tracks the deferred + # question of raising on true ambiguity. + for so_name in sorted(glob.glob(os.path.join(lib_dir, file_wild)), reverse=True): + if os.path.isfile(so_name): + return so_name + error_messages.append(f"No such file: {file_wild}") + attachments.append(f' listdir("{lib_dir}"):') + if not os.path.isdir(lib_dir): + attachments.append(" DIRECTORY DOES NOT EXIST") + else: + for node in sorted(os.listdir(lib_dir)): + attachments.append(f" {node}") + return None + + +@dataclass(frozen=True, slots=True) +class WindowsSearchPlatform: + def lib_searched_for(self, libname: str) -> str: + return f"{libname}*.dll" + + def site_packages_rel_dirs(self, desc: LibDescriptor) -> tuple[str, ...]: + return cast(tuple[str, ...], desc.site_packages_windows) + + def conda_anchor_point(self, conda_prefix: str) -> str: + return os.path.join(conda_prefix, "Library") + + def anchor_rel_dirs(self, desc: LibDescriptor) -> tuple[str, ...]: + return cast(tuple[str, ...], desc.anchor_rel_dirs_windows) + + def find_in_site_packages( + self, + rel_dirs: tuple[str, ...], + lib_searched_for: str, + error_messages: list[str], + attachments: list[str], + ) -> str | None: + return _find_dll_in_rel_dirs(rel_dirs, lib_searched_for, error_messages, attachments) + + def find_in_lib_dir( + self, + lib_dir: str, + libname: str, + _lib_searched_for: str, + error_messages: list[str], + attachments: list[str], + ) -> str | None: + file_wild = libname + "*.dll" + dll_name = _find_dll_under_dir(lib_dir, file_wild) + if dll_name is not None: + return dll_name + error_messages.append(f"No such file: {file_wild}") + attachments.append(f' listdir("{lib_dir}"):') + if not os.path.isdir(lib_dir): + attachments.append(" DIRECTORY DOES NOT EXIST") + else: + for node in sorted(os.listdir(lib_dir)): + attachments.append(f" {node}") + return None + + +PLATFORM: SearchPlatform = WindowsSearchPlatform() if IS_WINDOWS else LinuxSearchPlatform() diff --git a/venv/lib/python3.11/site-packages/cuda/pathfinder/_dynamic_libs/search_steps.py b/venv/lib/python3.11/site-packages/cuda/pathfinder/_dynamic_libs/search_steps.py new file mode 100644 index 0000000000000000000000000000000000000000..55d8a8aa6748f939d8ebfca7541b406303d985e8 --- /dev/null +++ b/venv/lib/python3.11/site-packages/cuda/pathfinder/_dynamic_libs/search_steps.py @@ -0,0 +1,228 @@ +# SPDX-FileCopyrightText: Copyright (c) 2025-2026 NVIDIA CORPORATION & AFFILIATES. All rights reserved. +# SPDX-License-Identifier: Apache-2.0 + +"""Composable search steps for locating NVIDIA libraries. + +Each find step is a callable with signature:: + + (SearchContext) -> FindResult | None + +Find steps locate a library file on disk without loading it. The +orchestrator in :mod:`load_nvidia_dynamic_lib` handles loading, the +already-loaded check, and dependency resolution. + +Step sequences are defined per search strategy so that adding a new +step or strategy only requires adding a function and a tuple entry. + +This module is intentionally platform-agnostic: it does not branch on the +current operating system. Platform differences are routed through the +:data:`~cuda.pathfinder._dynamic_libs.search_platform.PLATFORM` instance. +""" + +import glob +import os +from collections.abc import Callable +from dataclasses import dataclass, field +from typing import NoReturn, cast + +from cuda.pathfinder._dynamic_libs.lib_descriptor import LibDescriptor +from cuda.pathfinder._dynamic_libs.load_dl_common import DynamicLibNotFoundError +from cuda.pathfinder._dynamic_libs.search_platform import PLATFORM, SearchPlatform +from cuda.pathfinder._utils.env_vars import get_cuda_path_or_home + +# --------------------------------------------------------------------------- +# Data types +# --------------------------------------------------------------------------- + + +@dataclass +class FindResult: + """A library file located on disk (not yet loaded).""" + + abs_path: str + found_via: str + + +@dataclass +class SearchContext: + """Mutable state accumulated during the search cascade.""" + + desc: LibDescriptor + platform: SearchPlatform = PLATFORM + error_messages: list[str] = field(default_factory=list) + attachments: list[str] = field(default_factory=list) + + @property + def libname(self) -> str: + return self.desc.name # type: ignore[no-any-return] # mypy can't resolve new sibling module + + @property + def lib_searched_for(self) -> str: + return cast(str, self.platform.lib_searched_for(self.libname)) + + def raise_not_found(self) -> NoReturn: + err = ", ".join(self.error_messages) + att = "\n".join(self.attachments) + raise DynamicLibNotFoundError(f'Failure finding "{self.lib_searched_for}": {err}\n{att}') + + +#: Type alias for a find step callable. +FindStep = Callable[[SearchContext], FindResult | None] + + +def _find_lib_dir_using_anchor(desc: LibDescriptor, platform: SearchPlatform, anchor_point: str) -> str | None: + """Find the library directory under *anchor_point* using the descriptor's relative paths.""" + rel_dirs = platform.anchor_rel_dirs(desc) + for rel_path in rel_dirs: + for dirname in sorted(glob.glob(os.path.join(anchor_point, rel_path))): + if os.path.isdir(dirname): + return os.path.normpath(dirname) + return None + + +def _find_using_lib_dir(ctx: SearchContext, lib_dir: str | None) -> str | None: + """Find a library file in a resolved lib directory.""" + if lib_dir is None: + return None + return cast( + str | None, + ctx.platform.find_in_lib_dir( + lib_dir, + ctx.libname, + ctx.lib_searched_for, + ctx.error_messages, + ctx.attachments, + ), + ) + + +def _derive_ctk_root_linux(resolved_lib_path: str) -> str | None: + """Derive CTK root from Linux canary path. + + Supports: + - ``$CTK_ROOT/lib64/libfoo.so.*`` + - ``$CTK_ROOT/lib/libfoo.so.*`` + - ``$CTK_ROOT/targets//lib64/libfoo.so.*`` + - ``$CTK_ROOT/targets//lib/libfoo.so.*`` + """ + lib_dir = os.path.dirname(resolved_lib_path) + basename = os.path.basename(lib_dir) + if basename in ("lib64", "lib"): + parent = os.path.dirname(lib_dir) + grandparent = os.path.dirname(parent) + if os.path.basename(grandparent) == "targets": + return os.path.dirname(grandparent) + return parent + return None + + +def _derive_ctk_root_windows(resolved_lib_path: str) -> str | None: + """Derive CTK root from Windows canary path. + + Supports: + - ``$CTK_ROOT/bin/x64/foo.dll`` (CTK 13 style) + - ``$CTK_ROOT/bin/foo.dll`` (CTK 12 style) + """ + import ntpath + + lib_dir = ntpath.dirname(resolved_lib_path) + basename = ntpath.basename(lib_dir).lower() + if basename == "x64": + parent = ntpath.dirname(lib_dir) + if ntpath.basename(parent).lower() == "bin": + return ntpath.dirname(parent) + elif basename == "bin": + return ntpath.dirname(lib_dir) + return None + + +def derive_ctk_root(resolved_lib_path: str) -> str | None: + """Derive CTK root from a resolved canary library path.""" + ctk_root = _derive_ctk_root_linux(resolved_lib_path) + if ctk_root is not None: + return ctk_root + return _derive_ctk_root_windows(resolved_lib_path) + + +def find_via_ctk_root(ctx: SearchContext, ctk_root: str) -> FindResult | None: + """Find a library under a previously derived CTK root.""" + lib_dir = _find_lib_dir_using_anchor(ctx.desc, ctx.platform, ctk_root) + abs_path = _find_using_lib_dir(ctx, lib_dir) + if abs_path is None: + return None + return FindResult(abs_path, "system-ctk-root") + + +# --------------------------------------------------------------------------- +# Find steps +# --------------------------------------------------------------------------- + + +def find_in_site_packages(ctx: SearchContext) -> FindResult | None: + """Search pip wheel install locations.""" + rel_dirs = ctx.platform.site_packages_rel_dirs(ctx.desc) + if not rel_dirs: + return None + abs_path = ctx.platform.find_in_site_packages(rel_dirs, ctx.lib_searched_for, ctx.error_messages, ctx.attachments) + if abs_path is not None: + return FindResult(abs_path, "site-packages") + return None + + +def find_in_conda(ctx: SearchContext) -> FindResult | None: + """Search ``$CONDA_PREFIX``.""" + conda_prefix = os.environ.get("CONDA_PREFIX") + if not conda_prefix: + return None + anchor = ctx.platform.conda_anchor_point(conda_prefix) + lib_dir = _find_lib_dir_using_anchor(ctx.desc, ctx.platform, anchor) + abs_path = _find_using_lib_dir(ctx, lib_dir) + if abs_path is not None: + return FindResult(abs_path, "conda") + return None + + +def find_in_cuda_path(ctx: SearchContext) -> FindResult | None: + """Search ``$CUDA_PATH`` / ``$CUDA_HOME``. + + On Windows, this is the normal fallback for system-installed CTK DLLs when + they are not already discoverable via the native ``LoadLibraryExW(..., 0)`` + path used by :func:`cuda.pathfinder._dynamic_libs.load_dl_windows.load_with_system_search`. + Python 3.8+ does not include ``PATH`` in that native DLL search. + + The returned ``found_via`` is always ``"CUDA_PATH"`` regardless of which + environment variable actually provided the value. + """ + cuda_home = get_cuda_path_or_home() + if cuda_home is None: + return None + lib_dir = _find_lib_dir_using_anchor(ctx.desc, ctx.platform, cuda_home) + abs_path = _find_using_lib_dir(ctx, lib_dir) + if abs_path is not None: + return FindResult(abs_path, "CUDA_PATH") + return None + + +# --------------------------------------------------------------------------- +# Step sequences per strategy +# --------------------------------------------------------------------------- + +#: Find steps that run before the already-loaded check and system search. +EARLY_FIND_STEPS: tuple[FindStep, ...] = (find_in_site_packages, find_in_conda) + +#: Find steps that run after system search fails. +LATE_FIND_STEPS: tuple[FindStep, ...] = (find_in_cuda_path,) + + +# --------------------------------------------------------------------------- +# Cascade runner +# --------------------------------------------------------------------------- + + +def run_find_steps(ctx: SearchContext, steps: tuple[FindStep, ...]) -> FindResult | None: + """Run find steps in order, returning the first hit.""" + for step in steps: + result = step(ctx) + if result is not None: + return result + return None diff --git a/venv/lib/python3.11/site-packages/cuda/pathfinder/_dynamic_libs/subprocess_protocol.py b/venv/lib/python3.11/site-packages/cuda/pathfinder/_dynamic_libs/subprocess_protocol.py new file mode 100644 index 0000000000000000000000000000000000000000..4404d667f5f756df15f1233dd12cde794b41d112 --- /dev/null +++ b/venv/lib/python3.11/site-packages/cuda/pathfinder/_dynamic_libs/subprocess_protocol.py @@ -0,0 +1,71 @@ +# SPDX-FileCopyrightText: Copyright (c) 2026 NVIDIA CORPORATION & AFFILIATES. All rights reserved. +# SPDX-License-Identifier: Apache-2.0 + +from __future__ import annotations + +import json +import sys +from dataclasses import dataclass +from pathlib import Path +from typing import Literal + +MODE_CANARY: Literal["canary"] = "canary" +MODE_LOAD: Literal["load"] = "load" +VALID_MODES: tuple[Literal["canary"], Literal["load"]] = (MODE_CANARY, MODE_LOAD) + +STATUS_OK: Literal["ok"] = "ok" +STATUS_NOT_FOUND: Literal["not-found"] = "not-found" + +DYNAMIC_LIB_SUBPROCESS_MODULE = "cuda.pathfinder._dynamic_libs.dynamic_lib_subprocess" +DYNAMIC_LIB_SUBPROCESS_CWD = Path(__file__).resolve().parents[3] + + +@dataclass(frozen=True) +class DynamicLibSubprocessPayload: + status: Literal["ok", "not-found"] + abs_path: str | None + + +def format_dynamic_lib_subprocess_payload( + status: Literal["ok", "not-found"], + abs_path: str | None, + *, + error: dict[str, str] | None = None, +) -> str: + payload: dict[str, object] = {"status": status, "abs_path": abs_path} + if error is not None: + payload["error"] = error + return json.dumps(payload) + + +def build_dynamic_lib_subprocess_command(mode: str, libname: str) -> list[str]: + return [sys.executable, "-m", DYNAMIC_LIB_SUBPROCESS_MODULE, mode, libname] + + +def parse_dynamic_lib_subprocess_payload( + stdout: str, + *, + libname: str, + error_label: str, +) -> DynamicLibSubprocessPayload: + # Use the final non-empty line in case earlier output lines are emitted. + lines = [line for line in stdout.splitlines() if line.strip()] + if not lines: + raise RuntimeError(f"{error_label} produced no stdout payload for {libname!r}") + try: + payload = json.loads(lines[-1]) + except json.JSONDecodeError: + raise RuntimeError(f"{error_label} emitted invalid JSON payload for {libname!r}: {lines[-1]!r}") from None + if not isinstance(payload, dict): + raise RuntimeError(f"{error_label} emitted unexpected payload for {libname!r}: {payload!r}") + status = payload.get("status") + abs_path = payload.get("abs_path") + if status == STATUS_OK: + if not isinstance(abs_path, str): + raise RuntimeError(f"{error_label} emitted unexpected payload for {libname!r}: {payload!r}") + return DynamicLibSubprocessPayload(status=STATUS_OK, abs_path=abs_path) + if status == STATUS_NOT_FOUND: + if abs_path is not None: + raise RuntimeError(f"{error_label} emitted unexpected payload for {libname!r}: {payload!r}") + return DynamicLibSubprocessPayload(status=STATUS_NOT_FOUND, abs_path=None) + raise RuntimeError(f"{error_label} emitted unexpected payload for {libname!r}: {payload!r}") diff --git a/venv/lib/python3.11/site-packages/cuda/pathfinder/_dynamic_libs/supported_nvidia_libs.py b/venv/lib/python3.11/site-packages/cuda/pathfinder/_dynamic_libs/supported_nvidia_libs.py new file mode 100644 index 0000000000000000000000000000000000000000..db06411c6d0314995fde8831ecf3349ab1874413 --- /dev/null +++ b/venv/lib/python3.11/site-packages/cuda/pathfinder/_dynamic_libs/supported_nvidia_libs.py @@ -0,0 +1,80 @@ +# SPDX-FileCopyrightText: Copyright (c) 2025-2026 NVIDIA CORPORATION & AFFILIATES. All rights reserved. +# SPDX-License-Identifier: Apache-2.0 + +"""Legacy table exports derived from the authored descriptor catalog. + +The canonical data entry point is :mod:`descriptor_catalog`. This module keeps +historical constant names for backward compatibility by deriving them from the +catalog. +""" + +from __future__ import annotations + +from cuda.pathfinder._dynamic_libs.descriptor_catalog import DESCRIPTOR_CATALOG +from cuda.pathfinder._utils.platform_aware import IS_WINDOWS + +_CTK_DESCRIPTORS = tuple(desc for desc in DESCRIPTOR_CATALOG if desc.packaged_with == "ctk") +_OTHER_DESCRIPTORS = tuple(desc for desc in DESCRIPTOR_CATALOG if desc.packaged_with == "other") +_DRIVER_DESCRIPTORS = tuple(desc for desc in DESCRIPTOR_CATALOG if desc.packaged_with == "driver") +_NON_CTK_DESCRIPTORS = _OTHER_DESCRIPTORS + _DRIVER_DESCRIPTORS + +SUPPORTED_LIBNAMES_COMMON = tuple(desc.name for desc in _CTK_DESCRIPTORS if desc.linux_sonames and desc.windows_dlls) +SUPPORTED_LIBNAMES_LINUX_ONLY = tuple( + desc.name for desc in _CTK_DESCRIPTORS if desc.linux_sonames and not desc.windows_dlls +) +SUPPORTED_LIBNAMES_WINDOWS_ONLY = tuple( + desc.name for desc in _CTK_DESCRIPTORS if desc.windows_dlls and not desc.linux_sonames +) + +SUPPORTED_LIBNAMES_LINUX = SUPPORTED_LIBNAMES_COMMON + SUPPORTED_LIBNAMES_LINUX_ONLY +SUPPORTED_LIBNAMES_WINDOWS = SUPPORTED_LIBNAMES_COMMON + SUPPORTED_LIBNAMES_WINDOWS_ONLY +SUPPORTED_LIBNAMES_ALL = SUPPORTED_LIBNAMES_COMMON + SUPPORTED_LIBNAMES_LINUX_ONLY + SUPPORTED_LIBNAMES_WINDOWS_ONLY +SUPPORTED_LIBNAMES = SUPPORTED_LIBNAMES_WINDOWS if IS_WINDOWS else SUPPORTED_LIBNAMES_LINUX + +DIRECT_DEPENDENCIES_CTK = {desc.name: desc.dependencies for desc in _CTK_DESCRIPTORS if desc.dependencies} +DIRECT_DEPENDENCIES = {desc.name: desc.dependencies for desc in DESCRIPTOR_CATALOG if desc.dependencies} + +SUPPORTED_LINUX_SONAMES_CTK = {desc.name: desc.linux_sonames for desc in _CTK_DESCRIPTORS if desc.linux_sonames} +SUPPORTED_LINUX_SONAMES_OTHER = {desc.name: desc.linux_sonames for desc in _OTHER_DESCRIPTORS if desc.linux_sonames} +SUPPORTED_LINUX_SONAMES_DRIVER = {desc.name: desc.linux_sonames for desc in _DRIVER_DESCRIPTORS if desc.linux_sonames} +SUPPORTED_LINUX_SONAMES = SUPPORTED_LINUX_SONAMES_CTK | SUPPORTED_LINUX_SONAMES_OTHER | SUPPORTED_LINUX_SONAMES_DRIVER + +SUPPORTED_WINDOWS_DLLS_CTK = {desc.name: desc.windows_dlls for desc in _CTK_DESCRIPTORS if desc.windows_dlls} +SUPPORTED_WINDOWS_DLLS_OTHER = {desc.name: desc.windows_dlls for desc in _OTHER_DESCRIPTORS if desc.windows_dlls} +SUPPORTED_WINDOWS_DLLS_DRIVER = {desc.name: desc.windows_dlls for desc in _DRIVER_DESCRIPTORS if desc.windows_dlls} +SUPPORTED_WINDOWS_DLLS = SUPPORTED_WINDOWS_DLLS_CTK | SUPPORTED_WINDOWS_DLLS_OTHER | SUPPORTED_WINDOWS_DLLS_DRIVER + +LIBNAMES_REQUIRING_OS_ADD_DLL_DIRECTORY = tuple( + desc.name for desc in DESCRIPTOR_CATALOG if desc.requires_add_dll_directory and desc.windows_dlls +) +LIBNAMES_REQUIRING_RTLD_DEEPBIND = tuple( + desc.name for desc in DESCRIPTOR_CATALOG if desc.requires_rtld_deepbind and desc.linux_sonames +) + +# Based on output of toolshed/make_site_packages_libdirs_linux.py +SITE_PACKAGES_LIBDIRS_LINUX_CTK = { + desc.name: desc.site_packages_linux for desc in _CTK_DESCRIPTORS if desc.site_packages_linux +} +SITE_PACKAGES_LIBDIRS_LINUX_OTHER = { + desc.name: desc.site_packages_linux for desc in _NON_CTK_DESCRIPTORS if desc.site_packages_linux +} +SITE_PACKAGES_LIBDIRS_LINUX = SITE_PACKAGES_LIBDIRS_LINUX_CTK | SITE_PACKAGES_LIBDIRS_LINUX_OTHER + +SITE_PACKAGES_LIBDIRS_WINDOWS_CTK = { + desc.name: desc.site_packages_windows for desc in _CTK_DESCRIPTORS if desc.site_packages_windows +} +SITE_PACKAGES_LIBDIRS_WINDOWS_OTHER = { + desc.name: desc.site_packages_windows for desc in _NON_CTK_DESCRIPTORS if desc.site_packages_windows +} +SITE_PACKAGES_LIBDIRS_WINDOWS = SITE_PACKAGES_LIBDIRS_WINDOWS_CTK | SITE_PACKAGES_LIBDIRS_WINDOWS_OTHER + + +def is_suppressed_dll_file(path_basename: str) -> bool: + if path_basename.startswith("nvrtc"): + # nvidia_cuda_nvrtc_cu12-12.8.93-py3-none-win_amd64.whl: + # nvidia\cuda_nvrtc\bin\ + # nvrtc-builtins64_128.dll + # nvrtc64_120_0.alt.dll + # nvrtc64_120_0.dll + return path_basename.endswith(".alt.dll") or "-builtins" in path_basename + return path_basename.startswith(("cudart32_", "nvvm32")) diff --git a/venv/lib/python3.11/site-packages/cuda/pathfinder/_headers/find_nvidia_headers.py b/venv/lib/python3.11/site-packages/cuda/pathfinder/_headers/find_nvidia_headers.py new file mode 100644 index 0000000000000000000000000000000000000000..f5f568171411af08145d9f00e99e296a0bb7f530 --- /dev/null +++ b/venv/lib/python3.11/site-packages/cuda/pathfinder/_headers/find_nvidia_headers.py @@ -0,0 +1,227 @@ +# SPDX-FileCopyrightText: Copyright (c) 2025-2026 NVIDIA CORPORATION & AFFILIATES. All rights reserved. +# SPDX-License-Identifier: Apache-2.0 + +from __future__ import annotations + +import functools +import glob +import os +from collections.abc import Callable +from dataclasses import dataclass +from typing import TYPE_CHECKING + +from cuda.pathfinder._dynamic_libs.load_nvidia_dynamic_lib import ( + _resolve_system_loaded_abs_path_in_subprocess, +) +from cuda.pathfinder._dynamic_libs.search_steps import derive_ctk_root +from cuda.pathfinder._headers.header_descriptor import ( + HEADER_DESCRIPTORS, + platform_include_subdirs, + resolve_conda_anchor, +) +from cuda.pathfinder._utils.ctk_root_canary import CTK_ROOT_CANARY_ANCHOR_LIBNAMES +from cuda.pathfinder._utils.env_vars import get_cuda_path_or_home +from cuda.pathfinder._utils.find_sub_dirs import find_sub_dirs_all_sitepackages + +if TYPE_CHECKING: + from cuda.pathfinder._headers.header_descriptor import HeaderDescriptor + +# --------------------------------------------------------------------------- +# Data types +# --------------------------------------------------------------------------- + + +@dataclass +class LocatedHeaderDir: + abs_path: str | None + found_via: str + + def __post_init__(self) -> None: + self.abs_path = _abs_norm(self.abs_path) + + +#: Type alias for a header find step callable. +HeaderFindStep = Callable[["HeaderDescriptor"], LocatedHeaderDir | None] + +# --------------------------------------------------------------------------- +# Helpers +# --------------------------------------------------------------------------- + + +def _abs_norm(path: str | None) -> str | None: + if path: + return os.path.normpath(os.path.abspath(path)) + return None + + +def _joined_isfile(dirpath: str, basename: str) -> bool: + return os.path.isfile(os.path.join(dirpath, basename)) + + +def _locate_in_anchor_layout(desc: HeaderDescriptor, anchor_point: str) -> str | None: + """Search for a header under *anchor_point* using the descriptor's layout fields.""" + h_basename = desc.header_basename + for rel_dir in desc.anchor_include_rel_dirs: + idir = os.path.join(anchor_point, rel_dir) + for subdir in platform_include_subdirs(desc): + cdir = os.path.join(idir, subdir) + if _joined_isfile(cdir, h_basename): + return cdir + if _joined_isfile(idir, h_basename): + return idir + return None + + +# --------------------------------------------------------------------------- +# Find steps +# --------------------------------------------------------------------------- + + +def find_in_site_packages(desc: HeaderDescriptor) -> LocatedHeaderDir | None: + """Search pip wheel install locations.""" + for sub_dir in desc.site_packages_dirs: + hdr_dir: str # help mypy + for hdr_dir in find_sub_dirs_all_sitepackages(tuple(sub_dir.split("/"))): + if _joined_isfile(hdr_dir, desc.header_basename): + return LocatedHeaderDir(abs_path=hdr_dir, found_via="site-packages") + return None + + +def find_in_conda(desc: HeaderDescriptor) -> LocatedHeaderDir | None: + """Search ``$CONDA_PREFIX``.""" + conda_prefix = os.environ.get("CONDA_PREFIX") + if not conda_prefix: + return None + anchor_point = resolve_conda_anchor(desc, conda_prefix) + if anchor_point is None: + return None + found_header_path = _locate_in_anchor_layout(desc, anchor_point) + if found_header_path: + return LocatedHeaderDir(abs_path=found_header_path, found_via="conda") + return None + + +def find_in_cuda_path(desc: HeaderDescriptor) -> LocatedHeaderDir | None: + """Search ``$CUDA_PATH`` / ``$CUDA_HOME``.""" + cuda_home = get_cuda_path_or_home() + if cuda_home is None: + return None + result = _locate_in_anchor_layout(desc, cuda_home) + if result is not None: + return LocatedHeaderDir(abs_path=result, found_via="CUDA_PATH") + return None + + +def find_via_ctk_root_canary(desc: HeaderDescriptor) -> LocatedHeaderDir | None: + """Try CTK header lookup via CTK-root canary probing. + + Skips immediately if the descriptor does not opt in (``use_ctk_root_canary``). + Otherwise, system-loads ``cudart`` in a fully isolated Python subprocess, derives + CTK root from the resolved library path, and searches the expected include + layout under that root. + """ + if not desc.use_ctk_root_canary: + return None + canary_abs_path = _resolve_system_loaded_abs_path_in_subprocess(CTK_ROOT_CANARY_ANCHOR_LIBNAMES[0]) + if canary_abs_path is None: + return None + ctk_root = derive_ctk_root(canary_abs_path) + if ctk_root is None: + return None + result = _locate_in_anchor_layout(desc, ctk_root) + if result is not None: + return LocatedHeaderDir(abs_path=result, found_via="system-ctk-root") + return None + + +def find_in_system_install_dirs(desc: HeaderDescriptor) -> LocatedHeaderDir | None: + """Search system install directories (glob patterns).""" + for pattern in desc.system_install_dirs: + for hdr_dir in sorted(glob.glob(pattern), reverse=True): + if _joined_isfile(hdr_dir, desc.header_basename): + return LocatedHeaderDir(abs_path=hdr_dir, found_via="supported_install_dir") + return None + + +# --------------------------------------------------------------------------- +# Step sequence and cascade runner +# --------------------------------------------------------------------------- + +#: Unified find steps — each step self-gates based on descriptor fields. +FIND_STEPS: tuple[HeaderFindStep, ...] = ( + find_in_site_packages, + find_in_conda, + find_in_cuda_path, + find_via_ctk_root_canary, + find_in_system_install_dirs, +) + + +def run_find_steps(desc: HeaderDescriptor, steps: tuple[HeaderFindStep, ...]) -> LocatedHeaderDir | None: + """Run find steps in order, returning the first hit.""" + for step in steps: + result = step(desc) + if result is not None: + return result + return None + + +# --------------------------------------------------------------------------- +# Public API +# --------------------------------------------------------------------------- + + +@functools.cache +def locate_nvidia_header_directory(libname: str) -> LocatedHeaderDir | None: + """Locate the header directory for a supported NVIDIA library. + + Args: + libname (str): The short name of the library whose headers are needed + (e.g., ``"nvrtc"``, ``"cusolver"``, ``"nvshmem"``). + + Returns: + LocatedHeaderDir or None: A LocatedHeaderDir object containing the absolute path + to the discovered header directory and information about where it was found, + or ``None`` if the headers cannot be found. + + Raises: + RuntimeError: If ``libname`` is not in the supported set. + + Search order: + 1. **NVIDIA Python wheels** — site-packages directories from the descriptor. + 2. **Conda environments** — platform-specific conda include layouts. + 3. **CUDA Toolkit environment variables** — ``CUDA_PATH`` / ``CUDA_HOME``. + 4. **CTK root canary probe** — subprocess canary (descriptors with + ``use_ctk_root_canary=True`` only). + 5. **System install directories** — glob patterns from the descriptor. + """ + desc = HEADER_DESCRIPTORS.get(libname) + if desc is None: + raise RuntimeError(f"UNKNOWN {libname=}") + return run_find_steps(desc, FIND_STEPS) + + +def find_nvidia_header_directory(libname: str) -> str | None: + """Locate the header directory for a supported NVIDIA library. + + Args: + libname (str): The short name of the library whose headers are needed + (e.g., ``"nvrtc"``, ``"cusolver"``, ``"nvshmem"``). + + Returns: + str or None: Absolute path to the discovered header directory, or ``None`` + if the headers cannot be found. + + Raises: + RuntimeError: If ``libname`` is not in the supported set. + + Search order: + 1. **NVIDIA Python wheels** — site-packages directories from the descriptor. + 2. **Conda environments** — platform-specific conda include layouts. + 3. **CUDA Toolkit environment variables** — ``CUDA_PATH`` / ``CUDA_HOME``. + 4. **CTK root canary probe** — subprocess canary (descriptors with + ``use_ctk_root_canary=True`` only). + 5. **System install directories** — glob patterns from the descriptor. + """ + found = locate_nvidia_header_directory(libname) + return found.abs_path if found else None diff --git a/venv/lib/python3.11/site-packages/cuda/pathfinder/_headers/header_descriptor.py b/venv/lib/python3.11/site-packages/cuda/pathfinder/_headers/header_descriptor.py new file mode 100644 index 0000000000000000000000000000000000000000..609dcab71845e8c76ce96e8e1105635d4207dcec --- /dev/null +++ b/venv/lib/python3.11/site-packages/cuda/pathfinder/_headers/header_descriptor.py @@ -0,0 +1,54 @@ +# SPDX-FileCopyrightText: Copyright (c) 2025-2026 NVIDIA CORPORATION & AFFILIATES. All rights reserved. +# SPDX-License-Identifier: Apache-2.0 + +"""Per-header descriptor, registry, and platform-aware accessors. + +The canonical authored data lives in :mod:`header_descriptor_catalog`. This +module provides a name-keyed registry and platform-dispatch helpers consumed +by the runtime search path — keeping the search code itself platform-agnostic. +""" + +from __future__ import annotations + +import glob +import os +from typing import TypeAlias, cast + +from cuda.pathfinder._headers.header_descriptor_catalog import ( + HEADER_DESCRIPTOR_CATALOG, + HeaderDescriptorSpec, +) +from cuda.pathfinder._utils.platform_aware import IS_WINDOWS + +HeaderDescriptor: TypeAlias = HeaderDescriptorSpec + +#: Canonical registry of all known header libraries. +HEADER_DESCRIPTORS: dict[str, HeaderDescriptor] = {desc.name: desc for desc in HEADER_DESCRIPTOR_CATALOG} + + +def platform_include_subdirs(desc: HeaderDescriptor) -> tuple[str, ...]: + """Return the effective include subdirectory search list for the current platform. + + On Windows, Windows-specific subdirs are checked first, followed by the + common subdirs. On Linux, only the common subdirs are returned. + """ + if IS_WINDOWS: + return cast(tuple[str, ...], desc.include_subdirs_windows + desc.include_subdirs) + return cast(tuple[str, ...], desc.include_subdirs) + + +def resolve_conda_anchor(desc: HeaderDescriptor, conda_prefix: str) -> str | None: + """Resolve the conda anchor point for header search on the current platform. + + Returns the directory that ``_locate_in_anchor_layout`` should use as + *anchor_point*, or ``None`` if the conda layout is not usable. + """ + if IS_WINDOWS: + anchor = os.path.join(conda_prefix, "Library") + return anchor if os.path.isdir(anchor) else None + if desc.conda_targets_layout: + targets_include_path = glob.glob(os.path.join(conda_prefix, "targets", "*", "include")) + if not targets_include_path or len(targets_include_path) != 1: + return None + return os.path.dirname(targets_include_path[0]) + return conda_prefix diff --git a/venv/lib/python3.11/site-packages/cuda/pathfinder/_headers/header_descriptor_catalog.py b/venv/lib/python3.11/site-packages/cuda/pathfinder/_headers/header_descriptor_catalog.py new file mode 100644 index 0000000000000000000000000000000000000000..b364e224e7e1d4e560fc14cec8d927213615d1ee --- /dev/null +++ b/venv/lib/python3.11/site-packages/cuda/pathfinder/_headers/header_descriptor_catalog.py @@ -0,0 +1,257 @@ +# SPDX-FileCopyrightText: Copyright (c) 2025-2026 NVIDIA CORPORATION & AFFILIATES. All rights reserved. +# SPDX-License-Identifier: Apache-2.0 + +"""Canonical authored descriptor catalog for header directories.""" + +from __future__ import annotations + +from dataclasses import dataclass +from typing import Literal + +HeaderPackagedWith = Literal["ctk", "other"] + + +@dataclass(frozen=True, slots=True) +class HeaderDescriptorSpec: + name: str + packaged_with: HeaderPackagedWith + header_basename: str + site_packages_dirs: tuple[str, ...] = () + available_on_linux: bool = True + available_on_windows: bool = True + # Relative path(s) from anchor point to the include directory. + anchor_include_rel_dirs: tuple[str, ...] = ("include",) + # Subdirectories within the include dir to check before the include dir itself. + include_subdirs: tuple[str, ...] = () + # Windows-only additional subdirectories within the include dir. + include_subdirs_windows: tuple[str, ...] = () + # System install directories (glob patterns). + system_install_dirs: tuple[str, ...] = () + # Whether to use targets//include layout for conda on Linux. + conda_targets_layout: bool = True + # Whether to attempt CTK-root canary probing (spawns a subprocess). + use_ctk_root_canary: bool = True + + +HEADER_DESCRIPTOR_CATALOG: tuple[HeaderDescriptorSpec, ...] = ( + # ----------------------------------------------------------------------- + # CTK (CUDA Toolkit) headers + # ----------------------------------------------------------------------- + HeaderDescriptorSpec( + name="cccl", + packaged_with="ctk", + header_basename="cuda/std/version", + site_packages_dirs=( + "nvidia/cu13/include/cccl", # cuda-toolkit[cccl]==13.* + "nvidia/cuda_cccl/include", # cuda-toolkit[cccl]==12.* + ), + include_subdirs=("cccl",), + include_subdirs_windows=("targets/x64/cccl", "targets/x64"), + ), + HeaderDescriptorSpec( + name="cublas", + packaged_with="ctk", + header_basename="cublas.h", + site_packages_dirs=("nvidia/cu13/include", "nvidia/cublas/include"), + ), + HeaderDescriptorSpec( + name="cudart", + packaged_with="ctk", + header_basename="cuda_runtime.h", + site_packages_dirs=("nvidia/cu13/include", "nvidia/cuda_runtime/include"), + ), + HeaderDescriptorSpec( + name="cufft", + packaged_with="ctk", + header_basename="cufft.h", + site_packages_dirs=("nvidia/cu13/include", "nvidia/cufft/include"), + ), + HeaderDescriptorSpec( + name="cufile", + packaged_with="ctk", + header_basename="cufile.h", + site_packages_dirs=("nvidia/cu13/include", "nvidia/cufile/include"), + available_on_windows=False, + ), + HeaderDescriptorSpec( + name="curand", + packaged_with="ctk", + header_basename="curand.h", + site_packages_dirs=("nvidia/cu13/include", "nvidia/curand/include"), + ), + HeaderDescriptorSpec( + name="cusolver", + packaged_with="ctk", + header_basename="cusolverDn.h", + site_packages_dirs=("nvidia/cu13/include", "nvidia/cusolver/include"), + ), + HeaderDescriptorSpec( + name="cusparse", + packaged_with="ctk", + header_basename="cusparse.h", + site_packages_dirs=("nvidia/cu13/include", "nvidia/cusparse/include"), + ), + HeaderDescriptorSpec( + name="npp", + packaged_with="ctk", + header_basename="npp.h", + site_packages_dirs=("nvidia/cu13/include", "nvidia/npp/include"), + ), + HeaderDescriptorSpec( + name="profiler", + packaged_with="ctk", + header_basename="cuda_profiler_api.h", + site_packages_dirs=("nvidia/cu13/include", "nvidia/cuda_profiler_api/include"), + ), + HeaderDescriptorSpec( + name="nvcc", + packaged_with="ctk", + header_basename="fatbinary_section.h", + site_packages_dirs=("nvidia/cu13/include", "nvidia/cuda_nvcc/include"), + ), + HeaderDescriptorSpec( + name="nvfatbin", + packaged_with="ctk", + header_basename="nvFatbin.h", + site_packages_dirs=("nvidia/cu13/include", "nvidia/nvfatbin/include"), + ), + HeaderDescriptorSpec( + name="nvjitlink", + packaged_with="ctk", + header_basename="nvJitLink.h", + site_packages_dirs=("nvidia/cu13/include", "nvidia/nvjitlink/include"), + ), + HeaderDescriptorSpec( + name="nvjpeg", + packaged_with="ctk", + header_basename="nvjpeg.h", + site_packages_dirs=("nvidia/cu13/include", "nvidia/nvjpeg/include"), + ), + HeaderDescriptorSpec( + name="nvrtc", + packaged_with="ctk", + header_basename="nvrtc.h", + site_packages_dirs=("nvidia/cu13/include", "nvidia/cuda_nvrtc/include"), + ), + HeaderDescriptorSpec( + name="nvvm", + packaged_with="ctk", + header_basename="nvvm.h", + site_packages_dirs=("nvidia/cu13/include", "nvidia/cuda_nvcc/nvvm/include"), + anchor_include_rel_dirs=("nvvm/include",), + ), + HeaderDescriptorSpec( + name="cudla", + packaged_with="ctk", + header_basename="cudla.h", + site_packages_dirs=("nvidia/cu13/include",), + available_on_windows=False, + ), + # ----------------------------------------------------------------------- + # Third-party / separately packaged headers + # ----------------------------------------------------------------------- + HeaderDescriptorSpec( + name="cusolverMp", + packaged_with="other", + header_basename="cusolverMp.h", + site_packages_dirs=("nvidia/cu13/include", "nvidia/cu12/include"), + available_on_windows=False, + conda_targets_layout=False, + use_ctk_root_canary=False, + ), + HeaderDescriptorSpec( + name="cusparseLt", + packaged_with="other", + header_basename="cusparseLt.h", + site_packages_dirs=("nvidia/cu13/include", "nvidia/cusparselt/include"), + conda_targets_layout=False, + use_ctk_root_canary=False, + ), + HeaderDescriptorSpec( + name="cute", + packaged_with="other", + header_basename="cute/tensor.hpp", + site_packages_dirs=("cutlass_library/source/include",), + conda_targets_layout=False, + use_ctk_root_canary=False, + ), + HeaderDescriptorSpec( + name="cutensor", + packaged_with="other", + header_basename="cutensor.h", + site_packages_dirs=("cutensor/include",), + conda_targets_layout=False, + use_ctk_root_canary=False, + ), + HeaderDescriptorSpec( + name="cudensitymat", + packaged_with="other", + header_basename="cudensitymat.h", + site_packages_dirs=("cuquantum/include",), + available_on_windows=False, + conda_targets_layout=False, + use_ctk_root_canary=False, + ), + HeaderDescriptorSpec( + name="cupauliprop", + packaged_with="other", + header_basename="cupauliprop.h", + site_packages_dirs=("cuquantum/include",), + available_on_windows=False, + conda_targets_layout=False, + use_ctk_root_canary=False, + ), + HeaderDescriptorSpec( + name="cutensornet", + packaged_with="other", + header_basename="cutensornet.h", + site_packages_dirs=("cuquantum/include",), + available_on_windows=False, + conda_targets_layout=False, + use_ctk_root_canary=False, + ), + HeaderDescriptorSpec( + name="custabilizer", + packaged_with="other", + header_basename="custabilizer.h", + site_packages_dirs=("cuquantum/include",), + available_on_windows=False, + conda_targets_layout=False, + use_ctk_root_canary=False, + ), + HeaderDescriptorSpec( + name="custatevec", + packaged_with="other", + header_basename="custatevec.h", + site_packages_dirs=("cuquantum/include",), + available_on_windows=False, + conda_targets_layout=False, + use_ctk_root_canary=False, + ), + HeaderDescriptorSpec( + name="cutlass", + packaged_with="other", + header_basename="cutlass/cutlass.h", + site_packages_dirs=("cutlass_library/source/include",), + conda_targets_layout=False, + use_ctk_root_canary=False, + ), + HeaderDescriptorSpec( + name="mathdx", + packaged_with="other", + header_basename="libmathdx.h", + site_packages_dirs=("nvidia/cu13/include", "nvidia/cu12/include"), + conda_targets_layout=False, + use_ctk_root_canary=False, + ), + HeaderDescriptorSpec( + name="nvshmem", + packaged_with="other", + header_basename="nvshmem.h", + site_packages_dirs=("nvidia/nvshmem/include",), + available_on_windows=False, + system_install_dirs=("/usr/include/nvshmem_*",), + conda_targets_layout=False, + use_ctk_root_canary=False, + ), +) diff --git a/venv/lib/python3.11/site-packages/cuda/pathfinder/_headers/supported_nvidia_headers.py b/venv/lib/python3.11/site-packages/cuda/pathfinder/_headers/supported_nvidia_headers.py new file mode 100644 index 0000000000000000000000000000000000000000..c7b40834e676ef854507304deb28b4e371bd1997 --- /dev/null +++ b/venv/lib/python3.11/site-packages/cuda/pathfinder/_headers/supported_nvidia_headers.py @@ -0,0 +1,81 @@ +# SPDX-FileCopyrightText: Copyright (c) 2025-2026 NVIDIA CORPORATION & AFFILIATES. All rights reserved. +# SPDX-License-Identifier: Apache-2.0 + +"""Legacy table exports derived from the authored header descriptor catalog. + +The canonical data entry point is :mod:`header_descriptor_catalog`. This module +keeps historical constant names for backward compatibility by deriving them +from the catalog. +""" + +from __future__ import annotations + +from typing import Final + +from cuda.pathfinder._headers.header_descriptor_catalog import HEADER_DESCRIPTOR_CATALOG +from cuda.pathfinder._utils.platform_aware import IS_WINDOWS + +_CTK_DESCRIPTORS = tuple(desc for desc in HEADER_DESCRIPTOR_CATALOG if desc.packaged_with == "ctk") +_NON_CTK_DESCRIPTORS = tuple(desc for desc in HEADER_DESCRIPTOR_CATALOG if desc.packaged_with == "other") + +SUPPORTED_HEADERS_CTK_COMMON: Final[dict[str, str]] = { + desc.name: desc.header_basename + for desc in _CTK_DESCRIPTORS + if desc.available_on_linux and desc.available_on_windows +} +SUPPORTED_HEADERS_CTK_LINUX_ONLY: Final[dict[str, str]] = { + desc.name: desc.header_basename + for desc in _CTK_DESCRIPTORS + if desc.available_on_linux and not desc.available_on_windows +} +SUPPORTED_HEADERS_CTK_WINDOWS_ONLY: Final[dict[str, str]] = { + desc.name: desc.header_basename + for desc in _CTK_DESCRIPTORS + if desc.available_on_windows and not desc.available_on_linux +} + +SUPPORTED_HEADERS_CTK_LINUX = SUPPORTED_HEADERS_CTK_COMMON | SUPPORTED_HEADERS_CTK_LINUX_ONLY +SUPPORTED_HEADERS_CTK_WINDOWS = SUPPORTED_HEADERS_CTK_COMMON | SUPPORTED_HEADERS_CTK_WINDOWS_ONLY +SUPPORTED_HEADERS_CTK_ALL = ( + SUPPORTED_HEADERS_CTK_COMMON | SUPPORTED_HEADERS_CTK_LINUX_ONLY | SUPPORTED_HEADERS_CTK_WINDOWS_ONLY +) +SUPPORTED_HEADERS_CTK: Final[dict[str, str]] = ( + SUPPORTED_HEADERS_CTK_WINDOWS if IS_WINDOWS else SUPPORTED_HEADERS_CTK_LINUX +) + +SUPPORTED_SITE_PACKAGE_HEADER_DIRS_CTK: Final[dict[str, tuple[str, ...]]] = { + desc.name: desc.site_packages_dirs for desc in _CTK_DESCRIPTORS if desc.site_packages_dirs +} + +SUPPORTED_HEADERS_NON_CTK_COMMON: Final[dict[str, str]] = { + desc.name: desc.header_basename + for desc in _NON_CTK_DESCRIPTORS + if desc.available_on_linux and desc.available_on_windows +} +SUPPORTED_HEADERS_NON_CTK_LINUX_ONLY: Final[dict[str, str]] = { + desc.name: desc.header_basename + for desc in _NON_CTK_DESCRIPTORS + if desc.available_on_linux and not desc.available_on_windows +} +SUPPORTED_HEADERS_NON_CTK_WINDOWS_ONLY: Final[dict[str, str]] = { + desc.name: desc.header_basename + for desc in _NON_CTK_DESCRIPTORS + if desc.available_on_windows and not desc.available_on_linux +} + +SUPPORTED_HEADERS_NON_CTK_LINUX = SUPPORTED_HEADERS_NON_CTK_COMMON | SUPPORTED_HEADERS_NON_CTK_LINUX_ONLY +SUPPORTED_HEADERS_NON_CTK_WINDOWS = SUPPORTED_HEADERS_NON_CTK_COMMON | SUPPORTED_HEADERS_NON_CTK_WINDOWS_ONLY +SUPPORTED_HEADERS_NON_CTK_ALL = ( + SUPPORTED_HEADERS_NON_CTK_COMMON | SUPPORTED_HEADERS_NON_CTK_LINUX_ONLY | SUPPORTED_HEADERS_NON_CTK_WINDOWS_ONLY +) +SUPPORTED_HEADERS_NON_CTK: Final[dict[str, str]] = ( + SUPPORTED_HEADERS_NON_CTK_WINDOWS if IS_WINDOWS else SUPPORTED_HEADERS_NON_CTK_LINUX +) + +SUPPORTED_SITE_PACKAGE_HEADER_DIRS_NON_CTK: Final[dict[str, tuple[str, ...]]] = { + desc.name: desc.site_packages_dirs for desc in _NON_CTK_DESCRIPTORS if desc.site_packages_dirs +} + +SUPPORTED_INSTALL_DIRS_NON_CTK: Final[dict[str, tuple[str, ...]]] = { + desc.name: desc.system_install_dirs for desc in _NON_CTK_DESCRIPTORS if desc.system_install_dirs +} diff --git a/venv/lib/python3.11/site-packages/cuda/pathfinder/_optional_cuda_import.py b/venv/lib/python3.11/site-packages/cuda/pathfinder/_optional_cuda_import.py new file mode 100644 index 0000000000000000000000000000000000000000..0a3cc27b5956d5321cec3a5aaa7ea264f7631321 --- /dev/null +++ b/venv/lib/python3.11/site-packages/cuda/pathfinder/_optional_cuda_import.py @@ -0,0 +1,43 @@ +# SPDX-FileCopyrightText: Copyright (c) 2026 NVIDIA CORPORATION & AFFILIATES. All rights reserved. +# SPDX-License-Identifier: Apache-2.0 + +from __future__ import annotations + +import importlib +from collections.abc import Callable +from types import ModuleType + +from cuda.pathfinder._dynamic_libs.load_dl_common import DynamicLibNotFoundError + + +def _optional_cuda_import( + fully_qualified_modname: str, + *, + probe_function: Callable[[ModuleType], object] | None = None, +) -> ModuleType | None: + """Import an optional CUDA module without masking unrelated import bugs. + + Returns: + The imported module if available and the optional probe succeeds, + otherwise ``None`` when the requested module is unavailable. + + Raises: + ModuleNotFoundError: If the import fails because a dependency of the + target module is missing (instead of the target module itself). + Exception: Any exception raised by ``probe_function`` except + :class:`DynamicLibNotFoundError`, which is treated as "unavailable". + """ + try: + module = importlib.import_module(fully_qualified_modname) + except ModuleNotFoundError as err: + if err.name != fully_qualified_modname: + raise + return None + + if probe_function is not None: + try: + probe_function(module) + except DynamicLibNotFoundError: + return None + + return module diff --git a/venv/lib/python3.11/site-packages/cuda/pathfinder/_static_libs/find_bitcode_lib.py b/venv/lib/python3.11/site-packages/cuda/pathfinder/_static_libs/find_bitcode_lib.py new file mode 100644 index 0000000000000000000000000000000000000000..ac038aadfe71739acb4190e10dfeb2fce340023d --- /dev/null +++ b/venv/lib/python3.11/site-packages/cuda/pathfinder/_static_libs/find_bitcode_lib.py @@ -0,0 +1,180 @@ +# SPDX-FileCopyrightText: Copyright (c) 2025-2026 NVIDIA CORPORATION & AFFILIATES. All rights reserved. +# SPDX-License-Identifier: Apache-2.0 + +import functools +import os +from dataclasses import dataclass +from typing import NoReturn, TypedDict + +from cuda.pathfinder._utils.env_vars import get_cuda_path_or_home +from cuda.pathfinder._utils.find_sub_dirs import find_sub_dirs_all_sitepackages +from cuda.pathfinder._utils.platform_aware import IS_WINDOWS + + +class BitcodeLibNotFoundError(RuntimeError): + """Raised when a bitcode library cannot be found.""" + + +@dataclass(frozen=True) +class LocatedBitcodeLib: + """Information about a located bitcode library.""" + + name: str + abs_path: str + filename: str + found_via: str + + +class _BitcodeLibInfo(TypedDict): + filename: str + rel_path: str + site_packages_dirs: tuple[str, ...] + available_on_windows: bool + + +_SUPPORTED_BITCODE_LIBS_INFO: dict[str, _BitcodeLibInfo] = { + "device": { + "filename": "libdevice.10.bc", + "rel_path": os.path.join("nvvm", "libdevice"), + "site_packages_dirs": ( + "nvidia/cu13/nvvm/libdevice", + "nvidia/cuda_nvcc/nvvm/libdevice", + ), + "available_on_windows": True, + }, + "nccl_device": { + "filename": "libnccl_device.bc", + "rel_path": "lib", + "site_packages_dirs": ("nvidia/nccl/lib",), + "available_on_windows": False, + }, + "nvshmem_device": { + "filename": "libnvshmem_device.bc", + "rel_path": "lib", + "site_packages_dirs": ("nvidia/nvshmem/lib",), + "available_on_windows": False, + }, +} + +# Public API: just the supported library names +SUPPORTED_BITCODE_LIBS: tuple[str, ...] = tuple( + sorted( + name for name, info in _SUPPORTED_BITCODE_LIBS_INFO.items() if not IS_WINDOWS or info["available_on_windows"] + ) +) + + +def _no_such_file_in_dir(dir_path: str, filename: str, error_messages: list[str], attachments: list[str]) -> None: + error_messages.append(f"No such file: {os.path.join(dir_path, filename)}") + if os.path.isdir(dir_path): + attachments.append(f' listdir("{dir_path}"):') + for node in sorted(os.listdir(dir_path)): + attachments.append(f" {node}") + else: + attachments.append(f' Directory does not exist: "{dir_path}"') + + +class _FindBitcodeLib: + def __init__(self, name: str) -> None: + if name not in _SUPPORTED_BITCODE_LIBS_INFO: # Updated reference + raise ValueError(f"Unknown bitcode library: '{name}'. Supported: {', '.join(SUPPORTED_BITCODE_LIBS)}") + self.name: str = name + self.config: _BitcodeLibInfo = _SUPPORTED_BITCODE_LIBS_INFO[name] # Updated reference + self.filename: str = self.config["filename"] + self.rel_path: str = self.config["rel_path"] + self.site_packages_dirs: tuple[str, ...] = self.config["site_packages_dirs"] + self.error_messages: list[str] = [] + self.attachments: list[str] = [] + + def try_site_packages(self) -> str | None: + for rel_dir in self.site_packages_dirs: + sub_dir = tuple(rel_dir.split("/")) + for abs_dir in find_sub_dirs_all_sitepackages(sub_dir): + file_path = os.path.join(abs_dir, self.filename) + if os.path.isfile(file_path): + return file_path + return None + + def try_with_conda_prefix(self) -> str | None: + conda_prefix = os.environ.get("CONDA_PREFIX") + if not conda_prefix: + return None + + anchor = os.path.join(conda_prefix, "Library") if IS_WINDOWS else conda_prefix + file_path = os.path.join(anchor, self.rel_path, self.filename) + if os.path.isfile(file_path): + return file_path + return None + + def try_with_cuda_home(self) -> str | None: + cuda_home = get_cuda_path_or_home() + if cuda_home is None: + self.error_messages.append("CUDA_HOME/CUDA_PATH not set") + return None + + file_path = os.path.join(cuda_home, self.rel_path, self.filename) + if os.path.isfile(file_path): + return file_path + + _no_such_file_in_dir( + os.path.join(cuda_home, self.rel_path), + self.filename, + self.error_messages, + self.attachments, + ) + return None + + def raise_not_found_error(self) -> NoReturn: + err = ", ".join(self.error_messages) if self.error_messages else "No search paths available" + att = "\n".join(self.attachments) if self.attachments else "" + raise BitcodeLibNotFoundError(f'Failure finding "{self.filename}": {err}\n{att}') + + +def locate_bitcode_lib(name: str) -> LocatedBitcodeLib: + """Locate a bitcode library by name. + + Raises: + ValueError: If ``name`` is not a supported bitcode library. + BitcodeLibNotFoundError: If the bitcode library cannot be found. + """ + finder = _FindBitcodeLib(name) + + abs_path = finder.try_site_packages() + if abs_path is not None: + return LocatedBitcodeLib( + name=name, + abs_path=abs_path, + filename=finder.filename, + found_via="site-packages", + ) + + abs_path = finder.try_with_conda_prefix() + if abs_path is not None: + return LocatedBitcodeLib( + name=name, + abs_path=abs_path, + filename=finder.filename, + found_via="conda", + ) + + abs_path = finder.try_with_cuda_home() + if abs_path is not None: + return LocatedBitcodeLib( + name=name, + abs_path=abs_path, + filename=finder.filename, + found_via="CUDA_PATH", + ) + + finder.raise_not_found_error() + + +@functools.cache +def find_bitcode_lib(name: str) -> str: + """Find the absolute path to a bitcode library. + + Raises: + ValueError: If ``name`` is not a supported bitcode library. + BitcodeLibNotFoundError: If the bitcode library cannot be found. + """ + return locate_bitcode_lib(name).abs_path diff --git a/venv/lib/python3.11/site-packages/cuda/pathfinder/_static_libs/find_static_lib.py b/venv/lib/python3.11/site-packages/cuda/pathfinder/_static_libs/find_static_lib.py new file mode 100644 index 0000000000000000000000000000000000000000..804b1c04be70926b866c763d7abc0ff6be8713de --- /dev/null +++ b/venv/lib/python3.11/site-packages/cuda/pathfinder/_static_libs/find_static_lib.py @@ -0,0 +1,167 @@ +# SPDX-FileCopyrightText: Copyright (c) 2026 NVIDIA CORPORATION & AFFILIATES. All rights reserved. +# SPDX-License-Identifier: Apache-2.0 + +import functools +import os +from dataclasses import dataclass +from typing import NoReturn, TypedDict + +from cuda.pathfinder._utils.env_vars import get_cuda_path_or_home +from cuda.pathfinder._utils.find_sub_dirs import find_sub_dirs_all_sitepackages +from cuda.pathfinder._utils.platform_aware import IS_WINDOWS + + +class StaticLibNotFoundError(RuntimeError): + """Raised when a static library cannot be found.""" + + +@dataclass(frozen=True) +class LocatedStaticLib: + """Information about a located static library.""" + + name: str + abs_path: str + filename: str + found_via: str + + +class _StaticLibInfo(TypedDict): + filename: str + ctk_rel_paths: tuple[str, ...] + conda_rel_paths: tuple[str, ...] + site_packages_dirs: tuple[str, ...] + + +_SUPPORTED_STATIC_LIBS_INFO: dict[str, _StaticLibInfo] = { + "cudadevrt": { + "filename": "cudadevrt.lib" if IS_WINDOWS else "libcudadevrt.a", + "ctk_rel_paths": (os.path.join("lib", "x64"),) if IS_WINDOWS else ("lib64", "lib"), + "conda_rel_paths": ((os.path.join("lib", "x64"), "lib") if IS_WINDOWS else ("lib",)), + "site_packages_dirs": ( + ("nvidia/cu13/lib/x64", "nvidia/cuda_runtime/lib/x64") + if IS_WINDOWS + else ("nvidia/cu13/lib", "nvidia/cuda_runtime/lib") + ), + }, +} + +SUPPORTED_STATIC_LIBS: tuple[str, ...] = tuple(sorted(_SUPPORTED_STATIC_LIBS_INFO.keys())) + + +def _no_such_file_in_dir(dir_path: str, filename: str, error_messages: list[str], attachments: list[str]) -> None: + error_messages.append(f"No such file: {os.path.join(dir_path, filename)}") + if os.path.isdir(dir_path): + attachments.append(f' listdir("{dir_path}"):') + for node in sorted(os.listdir(dir_path)): + attachments.append(f" {node}") + else: + attachments.append(f' Directory does not exist: "{dir_path}"') + + +class _FindStaticLib: + def __init__(self, name: str) -> None: + if name not in _SUPPORTED_STATIC_LIBS_INFO: + raise ValueError(f"Unknown static library: '{name}'. Supported: {', '.join(SUPPORTED_STATIC_LIBS)}") + self.name: str = name + self.config: _StaticLibInfo = _SUPPORTED_STATIC_LIBS_INFO[name] + self.filename: str = self.config["filename"] + self.ctk_rel_paths: tuple[str, ...] = self.config["ctk_rel_paths"] + self.conda_rel_paths: tuple[str, ...] = self.config["conda_rel_paths"] + self.site_packages_dirs: tuple[str, ...] = self.config["site_packages_dirs"] + self.error_messages: list[str] = [] + self.attachments: list[str] = [] + + def try_site_packages(self) -> str | None: + for rel_dir in self.site_packages_dirs: + sub_dir = tuple(rel_dir.split("/")) + for abs_dir in find_sub_dirs_all_sitepackages(sub_dir): + file_path = os.path.join(abs_dir, self.filename) + if os.path.isfile(file_path): + return file_path + return None + + def try_with_conda_prefix(self) -> str | None: + conda_prefix = os.environ.get("CONDA_PREFIX") + if not conda_prefix: + return None + + anchor = os.path.join(conda_prefix, "Library") if IS_WINDOWS else conda_prefix + for rel_path in self.conda_rel_paths: + file_path = os.path.join(anchor, rel_path, self.filename) + if os.path.isfile(file_path): + return file_path + return None + + def try_with_cuda_home(self) -> str | None: + cuda_home = get_cuda_path_or_home() + if cuda_home is None: + self.error_messages.append("CUDA_HOME/CUDA_PATH not set") + return None + + for rel_path in self.ctk_rel_paths: + file_path = os.path.join(cuda_home, rel_path, self.filename) + if os.path.isfile(file_path): + return file_path + + _no_such_file_in_dir( + os.path.join(cuda_home, self.ctk_rel_paths[0]), + self.filename, + self.error_messages, + self.attachments, + ) + return None + + def raise_not_found_error(self) -> NoReturn: + err = ", ".join(self.error_messages) if self.error_messages else "No search paths available" + att = "\n".join(self.attachments) if self.attachments else "" + raise StaticLibNotFoundError(f'Failure finding "{self.filename}": {err}\n{att}') + + +def locate_static_lib(name: str) -> LocatedStaticLib: + """Locate a static library by name. + + Raises: + ValueError: If ``name`` is not a supported static library. + StaticLibNotFoundError: If the static library cannot be found. + """ + finder = _FindStaticLib(name) + + abs_path = finder.try_site_packages() + if abs_path is not None: + return LocatedStaticLib( + name=name, + abs_path=abs_path, + filename=finder.filename, + found_via="site-packages", + ) + + abs_path = finder.try_with_conda_prefix() + if abs_path is not None: + return LocatedStaticLib( + name=name, + abs_path=abs_path, + filename=finder.filename, + found_via="conda", + ) + + abs_path = finder.try_with_cuda_home() + if abs_path is not None: + return LocatedStaticLib( + name=name, + abs_path=abs_path, + filename=finder.filename, + found_via="CUDA_PATH", + ) + + finder.raise_not_found_error() + + +@functools.cache +def find_static_lib(name: str) -> str: + """Find the absolute path to a static library. + + Raises: + ValueError: If ``name`` is not a supported static library. + StaticLibNotFoundError: If the static library cannot be found. + """ + return locate_static_lib(name).abs_path diff --git a/venv/lib/python3.11/site-packages/cuda/pathfinder/_utils/ctk_root_canary.py b/venv/lib/python3.11/site-packages/cuda/pathfinder/_utils/ctk_root_canary.py new file mode 100644 index 0000000000000000000000000000000000000000..80122f517ee1062ffa8adf081b945f0b3bea0113 --- /dev/null +++ b/venv/lib/python3.11/site-packages/cuda/pathfinder/_utils/ctk_root_canary.py @@ -0,0 +1,4 @@ +# SPDX-FileCopyrightText: Copyright (c) 2026 NVIDIA CORPORATION & AFFILIATES. All rights reserved. +# SPDX-License-Identifier: Apache-2.0 + +CTK_ROOT_CANARY_ANCHOR_LIBNAMES = ("cudart",) diff --git a/venv/lib/python3.11/site-packages/cuda/pathfinder/_utils/driver_info.py b/venv/lib/python3.11/site-packages/cuda/pathfinder/_utils/driver_info.py new file mode 100644 index 0000000000000000000000000000000000000000..a5d4d167d33968f1c70427686fa7b6555a062e5c --- /dev/null +++ b/venv/lib/python3.11/site-packages/cuda/pathfinder/_utils/driver_info.py @@ -0,0 +1,80 @@ +# SPDX-FileCopyrightText: Copyright (c) 2026 NVIDIA CORPORATION & AFFILIATES. All rights reserved. +# SPDX-License-Identifier: Apache-2.0 + +from __future__ import annotations + +import ctypes +import functools +from collections.abc import Callable +from dataclasses import dataclass + +from cuda.pathfinder._dynamic_libs.load_nvidia_dynamic_lib import ( + load_nvidia_dynamic_lib as _load_nvidia_dynamic_lib, +) +from cuda.pathfinder._utils.platform_aware import IS_WINDOWS + + +class QueryDriverCudaVersionError(RuntimeError): + """Raised when ``query_driver_cuda_version()`` cannot determine the CUDA driver version.""" + + +@dataclass(frozen=True, slots=True) +class DriverCudaVersion: + """ + CUDA-facing driver version reported by ``cuDriverGetVersion()``. + + The name ``DriverCudaVersion`` is intentionally specific: this dataclass + models the version shown as ``CUDA Version`` in ``nvidia-smi``, not the + graphics driver release shown as ``Driver Version``. More specifically, + it reflects the CUDA user-mode driver (UMD) interface version reported by + ``cuDriverGetVersion()``, not the kernel-mode driver (KMD) package + version. + + Example ``nvidia-smi`` output:: + + +---------------------------------------------------------------------+ + | NVIDIA-SMI 595.58.03 Driver Version: 595.58.03 CUDA Version: 13.2 | + +---------------------------------------------------------------------+ + + For the example above, ``DriverCudaVersion(encoded=13020, major=13, + minor=2)`` corresponds to ``CUDA Version: 13.2``. It does not correspond + to ``Driver Version: 595.58.03``. + """ + + encoded: int + major: int + minor: int + + +@functools.cache +def query_driver_cuda_version() -> DriverCudaVersion: + """Return the CUDA driver version parsed into its major/minor components.""" + try: + encoded = _query_driver_cuda_version_int() + return DriverCudaVersion( + encoded=encoded, + major=encoded // 1000, + minor=(encoded % 1000) // 10, + ) + except Exception as exc: + raise QueryDriverCudaVersionError("Failed to query the CUDA driver version.") from exc + + +def _query_driver_cuda_version_int() -> int: + """Return the encoded CUDA driver version from ``cuDriverGetVersion()``.""" + loaded_cuda = _load_nvidia_dynamic_lib("cuda") + if IS_WINDOWS: + # `ctypes.WinDLL` exists on Windows at runtime. The ignore is only for + # Linux mypy runs, where the platform stubs do not define that attribute. + loader_cls: Callable[[str], ctypes.CDLL] = ctypes.WinDLL # type: ignore[attr-defined] + else: + loader_cls = ctypes.CDLL + driver_lib = loader_cls(loaded_cuda.abs_path) + cu_driver_get_version = driver_lib.cuDriverGetVersion + cu_driver_get_version.argtypes = [ctypes.POINTER(ctypes.c_int)] + cu_driver_get_version.restype = ctypes.c_int + version = ctypes.c_int() + status = cu_driver_get_version(ctypes.byref(version)) + if status != 0: + raise RuntimeError(f"Failed to query CUDA driver version via cuDriverGetVersion() (status={status}).") + return version.value diff --git a/venv/lib/python3.11/site-packages/cuda/pathfinder/_utils/env_vars.py b/venv/lib/python3.11/site-packages/cuda/pathfinder/_utils/env_vars.py new file mode 100644 index 0000000000000000000000000000000000000000..12198ac9f7f8714f399e7de68bc7fc4c9594134d --- /dev/null +++ b/venv/lib/python3.11/site-packages/cuda/pathfinder/_utils/env_vars.py @@ -0,0 +1,105 @@ +# SPDX-FileCopyrightText: Copyright (c) 2025 NVIDIA CORPORATION & AFFILIATES. All rights reserved. +# SPDX-License-Identifier: Apache-2.0 + +"""Centralized CUDA environment variable handling. + +This module defines the canonical search order for CUDA Toolkit environment variables +used throughout cuda-python packages (cuda.pathfinder, cuda.core, cuda.bindings). + +Search Order Priority: + 1. CUDA_PATH (higher priority) + 2. CUDA_HOME (lower priority) + +If both are set and differ, CUDA_PATH takes precedence and a warning is issued. + +Important Note on Caching: + The result of get_cuda_path_or_home() is cached for the process lifetime. The first + call determines the CUDA Toolkit path, and all subsequent calls return the cached + value, even if environment variables change later. This ensures consistent behavior + throughout the application lifecycle. +""" + +import functools +import os +import warnings + +_CUDA_PATH_ENV_VARS_ORDERED = ("CUDA_PATH", "CUDA_HOME") + + +def _paths_differ(a: str, b: str) -> bool: + """ + Return True if paths are observably different. + + Strategy: + 1) Compare os.path.normcase(os.path.normpath(...)) for quick, robust textual equality. + - Handles trailing slashes and case-insensitivity on Windows. + 2) If still different AND both exist, use os.path.samefile to resolve symlinks/junctions. + 3) Otherwise (nonexistent paths or samefile unavailable), treat as different. + """ + norm_a = os.path.normcase(os.path.normpath(a)) + norm_b = os.path.normcase(os.path.normpath(b)) + if norm_a == norm_b: + return False + + try: + if os.path.exists(a) and os.path.exists(b): + # samefile raises on non-existent paths; only call when both exist. + return not os.path.samefile(a, b) + except OSError: + # Fall through to "different" if samefile isn't applicable/available. + pass + + # If normalized strings differ and we couldn't prove they're the same entry, treat as different. + return True + + +@functools.cache +def get_cuda_path_or_home() -> str | None: + """Get CUDA Toolkit path from environment variables. + + Returns the value of CUDA_PATH or CUDA_HOME. If both are set and differ, + CUDA_PATH takes precedence and a warning is issued. + + The result is cached for the process lifetime. The first call determines the CUDA + Toolkit path, and subsequent calls return the cached value. + + Returns: + Path to CUDA Toolkit, or None if neither variable is set or all are empty. + + Warnings: + UserWarning: If multiple CUDA environment variables are set but point to + different locations (only on the first call). + + """ + # Collect non-empty environment variables in priority order. + # Empty strings are treated as undefined — no valid CUDA path is empty. + set_vars = {} + for var in _CUDA_PATH_ENV_VARS_ORDERED: + val = os.environ.get(var) + if val: + set_vars[var] = val + + if not set_vars: + return None + + # If multiple variables are set, check if they differ and warn + if len(set_vars) > 1: + values = list(set_vars.items()) + values_differ = False + for i in range(len(values) - 1): + if _paths_differ(values[i][1], values[i + 1][1]): + values_differ = True + break + + if values_differ: + var_list = "\n".join(f" {var}={val}" for var, val in set_vars.items()) + warnings.warn( + f"Multiple CUDA environment variables are set but differ:\n" + f"{var_list}\n" + f"Using {_CUDA_PATH_ENV_VARS_ORDERED[0]} (highest priority).", + UserWarning, + stacklevel=2, + ) + + # Return the first (highest priority) set variable + return next(iter(set_vars.values())) diff --git a/venv/lib/python3.11/site-packages/cuda/pathfinder/_utils/find_site_packages_dll.py b/venv/lib/python3.11/site-packages/cuda/pathfinder/_utils/find_site_packages_dll.py new file mode 100644 index 0000000000000000000000000000000000000000..507355727f98ece01d53398d0154113abe8061f5 --- /dev/null +++ b/venv/lib/python3.11/site-packages/cuda/pathfinder/_utils/find_site_packages_dll.py @@ -0,0 +1,31 @@ +# SPDX-FileCopyrightText: Copyright (c) 2025 NVIDIA CORPORATION & AFFILIATES. All rights reserved. +# SPDX-License-Identifier: Apache-2.0 + +import collections +import functools +import importlib.metadata + + +@functools.cache +def find_all_dll_files_via_metadata() -> dict[str, tuple[str, ...]]: + results: collections.defaultdict[str, list[str]] = collections.defaultdict(list) + + # sort dists for deterministic output + + for dist in sorted( + importlib.metadata.distributions(), + # `get` exists before 3.12, even though the hints only exist for Python >=3.12 + key=lambda d: (d.metadata.get("Name", ""), d.version), # type: ignore[attr-defined] + ): + files = dist.files + if not files: + continue + for relpath in sorted(files, key=lambda p: str(p)): # deterministic + relname = relpath.name.lower() + if not relname.endswith(".dll"): + continue + abs_path = str(dist.locate_file(relpath)) + results[relname].append(abs_path) + + # plain dicts; sort inner list for stability + return {k: tuple(sorted(v)) for k, v in results.items()} diff --git a/venv/lib/python3.11/site-packages/cuda/pathfinder/_utils/find_site_packages_so.py b/venv/lib/python3.11/site-packages/cuda/pathfinder/_utils/find_site_packages_so.py new file mode 100644 index 0000000000000000000000000000000000000000..33ee1f1bcfb07cc22000b732090ecb535f5335a7 --- /dev/null +++ b/venv/lib/python3.11/site-packages/cuda/pathfinder/_utils/find_site_packages_so.py @@ -0,0 +1,43 @@ +# SPDX-FileCopyrightText: Copyright (c) 2025 NVIDIA CORPORATION & AFFILIATES. All rights reserved. +# SPDX-License-Identifier: Apache-2.0 + +import collections +import functools +import importlib.metadata +import re + +_SO_RE = re.compile(r"\.so(?:$|\.)") # matches libfoo.so or libfoo.so.1.2.3 + + +def split_so_version_suffix(so_filename: str) -> tuple[str, str]: + idx = so_filename.rfind(".so") + assert idx > 0, so_filename + idx += 3 + return (so_filename[:idx], so_filename[idx:]) + + +@functools.cache +def find_all_so_files_via_metadata() -> dict[str, dict[str, tuple[str, ...]]]: + results: collections.defaultdict[str, collections.defaultdict[str, list[str]]] = collections.defaultdict( + lambda: collections.defaultdict(list) + ) + + # sort dists for deterministic output + for dist in sorted( + importlib.metadata.distributions(), + # `get` exists before 3.12, even though the hints only exist for Python >=3.12 + key=lambda d: (d.metadata.get("Name", ""), d.version), # type: ignore[attr-defined] + ): + files = dist.files + if not files: + continue + for relpath in sorted(files, key=lambda p: str(p)): # deterministic + relname = relpath.name + if not _SO_RE.search(relname): + continue + so_basename, so_version_suffix = split_so_version_suffix(relname) + abs_path = str(dist.locate_file(relpath)) + results[so_basename][so_version_suffix].append(abs_path) + + # plain dicts; sort inner lists for stability + return {k: {kk: tuple(sorted(vv)) for kk, vv in v.items()} for k, v in results.items()} diff --git a/venv/lib/python3.11/site-packages/cuda/pathfinder/_utils/find_sub_dirs.py b/venv/lib/python3.11/site-packages/cuda/pathfinder/_utils/find_sub_dirs.py new file mode 100644 index 0000000000000000000000000000000000000000..ebb7b13f488f25432c014d16b44811b31a3d0254 --- /dev/null +++ b/venv/lib/python3.11/site-packages/cuda/pathfinder/_utils/find_sub_dirs.py @@ -0,0 +1,65 @@ +# SPDX-FileCopyrightText: Copyright (c) 2024-2025 NVIDIA CORPORATION & AFFILIATES. All rights reserved. +# SPDX-License-Identifier: Apache-2.0 + +import functools +import os +import site +import sys +from collections.abc import Sequence + + +def find_sub_dirs_no_cache(parent_dirs: Sequence[str], sub_dirs: Sequence[str]) -> list[str]: + results = [] + for base in parent_dirs: + stack = [(base, 0)] # (current_path, index into sub_dirs) + while stack: + current_path, idx = stack.pop() + if idx == len(sub_dirs): + if os.path.isdir(current_path): + results.append(current_path) + continue + + sub = sub_dirs[idx] + if sub == "*": + try: + entries = sorted(os.listdir(current_path)) + except OSError: + continue + for entry in entries: + entry_path = os.path.join(current_path, entry) + if os.path.isdir(entry_path): + stack.append((entry_path, idx + 1)) + else: + next_path = os.path.join(current_path, sub) + if os.path.isdir(next_path): + stack.append((next_path, idx + 1)) + return results + + +@functools.cache +def find_sub_dirs_cached(parent_dirs: Sequence[str], sub_dirs: Sequence[str]) -> list[str]: + return find_sub_dirs_no_cache(parent_dirs, sub_dirs) + + +def find_sub_dirs(parent_dirs: Sequence[str], sub_dirs: Sequence[str]) -> list[str]: + return find_sub_dirs_cached(tuple(parent_dirs), tuple(sub_dirs)) + + +def find_sub_dirs_sys_path(sub_dirs: Sequence[str]) -> list[str]: + return find_sub_dirs(sys.path, sub_dirs) + + +def find_sub_dirs_all_sitepackages(sub_dirs: Sequence[str]) -> list[str]: + parent_dirs = list(site.getsitepackages()) + if site.ENABLE_USER_SITE: + user_site = site.getusersitepackages() + if user_site: + # Determine insertion index based on whether we're in a virtual environment (fixes #1716): + # - In venv (PEP 405): venv site-packages should come first, then user-site-packages, + # then system site-packages. Insert at index 1 (after venv, before system). + # - Not in venv (PEP 370): user-site-packages should come before system site-packages. + # Insert at index 0. + # Detect venv by checking if sys.prefix differs from sys.base_prefix + insert_idx = 1 if sys.prefix != sys.base_prefix else 0 + parent_dirs.insert(insert_idx, user_site) + return find_sub_dirs(parent_dirs, sub_dirs) diff --git a/venv/lib/python3.11/site-packages/cuda/pathfinder/_utils/platform_aware.py b/venv/lib/python3.11/site-packages/cuda/pathfinder/_utils/platform_aware.py new file mode 100644 index 0000000000000000000000000000000000000000..72ecbc535932a7aa4252bdc6f4973326a8706cb6 --- /dev/null +++ b/venv/lib/python3.11/site-packages/cuda/pathfinder/_utils/platform_aware.py @@ -0,0 +1,18 @@ +# SPDX-FileCopyrightText: Copyright (c) 2025 NVIDIA CORPORATION & AFFILIATES. All rights reserved. +# SPDX-License-Identifier: Apache-2.0 + +import sys + +IS_WINDOWS = sys.platform == "win32" + + +def quote_for_shell(s: str) -> str: + if IS_WINDOWS: + # This is a relatively heavy import; keep pathfinder lean if possible. + from subprocess import list2cmdline + + return list2cmdline([s]) + else: + import shlex + + return shlex.quote(s) diff --git a/venv/lib/python3.11/site-packages/cuda/pathfinder/_version.py b/venv/lib/python3.11/site-packages/cuda/pathfinder/_version.py new file mode 100644 index 0000000000000000000000000000000000000000..2caf6b5e75dcf817c662ddabcf76d349e3573044 --- /dev/null +++ b/venv/lib/python3.11/site-packages/cuda/pathfinder/_version.py @@ -0,0 +1,24 @@ +# file generated by vcs-versioning +# don't change, don't track in version control +from __future__ import annotations + +__all__ = [ + "__version__", + "__version_tuple__", + "version", + "version_tuple", + "__commit_id__", + "commit_id", +] + +version: str +__version__: str +__version_tuple__: tuple[int | str, ...] +version_tuple: tuple[int | str, ...] +commit_id: str | None +__commit_id__: str | None + +__version__ = version = '1.6.0' +__version_tuple__ = version_tuple = (1, 6, 0) + +__commit_id__ = commit_id = 'gdb347c90' diff --git a/venv/lib/python3.11/site-packages/cuda_bindings-13.3.1.dist-info/INSTALLER b/venv/lib/python3.11/site-packages/cuda_bindings-13.3.1.dist-info/INSTALLER new file mode 100644 index 0000000000000000000000000000000000000000..5c69047b2eb8235994febeeae1da4a82365a240a --- /dev/null +++ b/venv/lib/python3.11/site-packages/cuda_bindings-13.3.1.dist-info/INSTALLER @@ -0,0 +1 @@ +uv \ No newline at end of file diff --git a/venv/lib/python3.11/site-packages/cuda_bindings-13.3.1.dist-info/METADATA b/venv/lib/python3.11/site-packages/cuda_bindings-13.3.1.dist-info/METADATA new file mode 100644 index 0000000000000000000000000000000000000000..94a3745ef0beb7d3e603c0900c08189aa17076d6 --- /dev/null +++ b/venv/lib/python3.11/site-packages/cuda_bindings-13.3.1.dist-info/METADATA @@ -0,0 +1,48 @@ +Metadata-Version: 2.4 +Name: cuda-bindings +Version: 13.3.1 +Summary: Python bindings for CUDA +Author-email: NVIDIA Corporation +License-Expression: LicenseRef-NVIDIA-SOFTWARE-LICENSE +Project-URL: Repository, https://github.com/NVIDIA/cuda-python +Project-URL: Documentation, https://nvidia.github.io/cuda-python/ +Classifier: Intended Audience :: Developers +Classifier: Topic :: Database +Classifier: Topic :: Scientific/Engineering +Classifier: Programming Language :: Python +Classifier: Programming Language :: Python :: 3.10 +Classifier: Programming Language :: Python :: 3.11 +Classifier: Programming Language :: Python :: 3.12 +Classifier: Programming Language :: Python :: 3.13 +Classifier: Programming Language :: Python :: 3.14 +Classifier: Environment :: GPU :: NVIDIA CUDA +Requires-Python: >=3.10 +Description-Content-Type: text/x-rst +License-File: LICENSE +Requires-Dist: cuda-pathfinder>=1.4.2 +Provides-Extra: all +Requires-Dist: cuda-toolkit[nvfatbin,nvjitlink,nvrtc,nvvm]==13.*; extra == "all" +Requires-Dist: cuda-toolkit[cufile]==13.*; sys_platform == "linux" and extra == "all" +Requires-Dist: cuda-toolkit==13.*; extra == "all" +Requires-Dist: nvidia-cudla==13.*; (platform_system == "Linux" and platform_machine == "aarch64") and extra == "all" +Dynamic: license-file + +.. SPDX-FileCopyrightText: Copyright (c) 2025 NVIDIA CORPORATION & AFFILIATES. All rights reserved. +.. SPDX-License-Identifier: LicenseRef-NVIDIA-SOFTWARE-LICENSE + +**************************************** +cuda-bindings: Low-level CUDA interfaces +**************************************** + +.. image:: https://img.shields.io/badge/NVIDIA-black?logo=nvidia + :target: https://www.nvidia.com/ + :alt: NVIDIA + +`cuda.bindings `_ is a standard set of low-level interfaces, providing full coverage of and 1:1 access to the CUDA host APIs from Python. Checkout the `Overview `_ for the workflow and performance results. + +* `Repository `_ +* `Documentation `_ +* `Examples `_ +* `Issue tracker `_ + +For the installation instruction, please refer to the `Installation `_ page. diff --git a/venv/lib/python3.11/site-packages/cuda_bindings-13.3.1.dist-info/RECORD b/venv/lib/python3.11/site-packages/cuda_bindings-13.3.1.dist-info/RECORD new file mode 100644 index 0000000000000000000000000000000000000000..739d54505508be757521bc2491c3932e69ec2e18 --- /dev/null +++ b/venv/lib/python3.11/site-packages/cuda_bindings-13.3.1.dist-info/RECORD @@ -0,0 +1,96 @@ +cuda/bindings/__init__.pxd,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0 +cuda/bindings/__init__.py,sha256=MwaiGzsnjQRwjtwFMGS36SnuaElYmFDh_VOT5vAvzhI,246 +cuda/bindings/_bindings/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0 +cuda/bindings/_bindings/cydriver.cpython-311-x86_64-linux-gnu.so,sha256=0mNIxf-zRS9HnHPd5Y56M7tPB11phLJmQU0QbQl1L0E,479880 +cuda/bindings/_bindings/cydriver.pxd,sha256=oTrFyd_6QMSX9lQqRsY1LfGSBw0gncrSBTkNAiY4J-E,70792 +cuda/bindings/_bindings/cyruntime.cpython-311-x86_64-linux-gnu.so,sha256=RF5mBS_JMD9QbxH6e582aaN8uPxv3kZUH6ncjsqTqrs,941968 +cuda/bindings/_bindings/cyruntime.pxd,sha256=aH6elKxMqncPpW_bJIxpO4dopP-AV_E2s8rx1Vjrpjs,51558 +cuda/bindings/_bindings/cyruntime_ptds.cpython-311-x86_64-linux-gnu.so,sha256=nEdRBKl9w60Bh7P3OWKrtL5_UCBxsqO_lp6JU2pxQtc,799824 +cuda/bindings/_bindings/cyruntime_ptds.pxd,sha256=vr8zjo9X2w_k7zWtpQTRPqPxwCTD5qKyZD1RIiTsBmc,51600 +cuda/bindings/_bindings/loader.h,sha256=nv8OzG_tSP4jszgK5o4-ELSW6K1iZEwaEekIECjP1dA,545 +cuda/bindings/_bindings/loader.pxd,sha256=vBMdQU-VrGguCEW58Y8V2HRzaUh5DDC0NkNWLJ_silI,252 +cuda/bindings/_example_helpers/__init__.py,sha256=2yAp7RQ628MIzxkonridznKqD7AY6vDDiqckq9U11fo,646 +cuda/bindings/_example_helpers/common.py,sha256=h-32yuSEcWdaGq150LgbbGSsgYG6xUxh3FoNE_DLSXQ,3581 +cuda/bindings/_example_helpers/helper_cuda.py,sha256=nXHcYQnV7rWTQiQ3oKUcElAdFEPU3KRqoU1p9F9U-0c,1571 +cuda/bindings/_example_helpers/helper_string.py,sha256=VOsvf2Uhv2e6bEl4K29dTZZrLV29bBuq8oGOXGWzFeA,491 +cuda/bindings/_internal/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0 +cuda/bindings/_internal/_fast_enum.py,sha256=aGuilcCYfZPJzgF-mJr78yP3C9HLNHD1NMmy3P0vSB4,2331 +cuda/bindings/_internal/cudla.cpython-311-x86_64-linux-gnu.so,sha256=hvooJkUOqWg92isGU456IF5OzmBZWzTFBq12JlwEAXo,74408 +cuda/bindings/_internal/cudla.pxd,sha256=dI1lAeHpT9Y9XnQpkxyFLKb3mQVw4jGtP26uY_ZTbaQ,2627 +cuda/bindings/_internal/cufile.cpython-311-x86_64-linux-gnu.so,sha256=sxR_74fOxQSjA-HygeYb6GQqCZycu-U4bbw_9nxQA-I,103432 +cuda/bindings/_internal/cufile.pxd,sha256=clPeFlOq2gPfnUd_DutLeqfLB7u3e2t7sskXiQSnrR8,6000 +cuda/bindings/_internal/nvfatbin.cpython-311-x86_64-linux-gnu.so,sha256=8rPa4yCKCQyUtHnJIK3fg6YNBYN21_5bkaSGMjqc1XM,70312 +cuda/bindings/_internal/nvfatbin.pxd,sha256=_2QAI1XZvp6eou1FC0nZHw47gilH0Nfs2fTIQhkUwFA,2392 +cuda/bindings/_internal/nvjitlink.cpython-311-x86_64-linux-gnu.so,sha256=QQIzTW84NoW4lcYnD3yzyMurOPmG7cSWyuAH6frnQnI,74408 +cuda/bindings/_internal/nvjitlink.pxd,sha256=QALxlm14SzNiT2X-XxrGYjWLmmJ8F7VIHzdKHSs3_es,2517 +cuda/bindings/_internal/nvml.cpython-311-x86_64-linux-gnu.so,sha256=C19HBZ6QjRXHsPGBuohuPEmI8qdnV-JKngFLhLsTmk8,458152 +cuda/bindings/_internal/nvml.pxd,sha256=onoRORIRyZ6VWyUJB7t1TOohzG7KuQQPK--FyLMhKNI,57555 +cuda/bindings/_internal/nvrtc.cpython-311-x86_64-linux-gnu.so,sha256=n60KGhk51lAP4ZgAX2vDzTKcc19o01_rtbGoCfvL3y8,98984 +cuda/bindings/_internal/nvrtc.pxd,sha256=6_Sy073J8JnGZcDAjum4ItBmI_SlnUgJWG1TxMgAJaE,3914 +cuda/bindings/_internal/nvvm.cpython-311-x86_64-linux-gnu.so,sha256=dpmbtKzi9eY16Ba0zViqRxrQfEjvmb0u8wIVsSsyRcQ,74408 +cuda/bindings/_internal/nvvm.pxd,sha256=4kl55jzYjC3wvQUqx9JwOxS600nq_nGPvwwy7PFubV0,2257 +cuda/bindings/_internal/utils.cpython-311-x86_64-linux-gnu.so,sha256=R3-YqMqBl3yz6i0ttKJpgniDwdxtK4t0O-CXeBmSucI,128000 +cuda/bindings/_internal/utils.pxd,sha256=LlAp7vAy5_7XqZ8IIc0dCW0duu01V3aPt8seqgx37VM,4669 +cuda/bindings/_lib/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0 +cuda/bindings/_lib/cyruntime/cyruntime.pxd,sha256=icR65C-YpWJ59uyCRMRg_wGbqNGt6qPQLh2ksFkuTis,4785 +cuda/bindings/_lib/cyruntime/cyruntime.pxi,sha256=xQGllvLx76JE8WEeKS3LjOungvwj335nP6QNmKulr8c,88191 +cuda/bindings/_lib/dlfcn.pxd,sha256=Hey780RLtX6IQwca7kzsBnoMJ6CsizjfaKtcY240GrE,406 +cuda/bindings/_lib/param_packer.h,sha256=ITzzEtJ4ykPY1Py7_SPlf8u1gY9tUlAelvQ6Z3b0vkc,6031 +cuda/bindings/_lib/param_packer.pxd,sha256=9dAhnMLzwYbdDhdiTW6EFXRPfIE5wvfnKwoZTVIhjgs,374 +cuda/bindings/_lib/utils.pxd,sha256=qfQEdfliVG6zsRFQBDejkCkDHHdgP5yyxTd_9nqwIsA,4031 +cuda/bindings/_lib/utils.pxi,sha256=xn5s7LWNpF3hzlr0rVO2Eh1LEDg-J2p0gf_hH6YSug4,32642 +cuda/bindings/_lib/windll.pxd,sha256=oOzOOJ_hpQNVnqareRx3h_ctJI_zpebBDfaRhxtpSk8,1445 +cuda/bindings/_test_helpers/__init__.py,sha256=cgHj5gSAhwMG-0TGW_v4V-rrqaPQqtshVyKh_WiQpEg,401 +cuda/bindings/_test_helpers/arch_check.py,sha256=ZWbEVKDBbRymAo3H0JdjUdrEWsckBsFQUtRo5k086QE,2778 +cuda/bindings/_test_helpers/mempool.py,sha256=5WqnSHXbY4EpUGrSk3Eui9rszzkSc3rhXZ1sqsnnSjw,1958 +cuda/bindings/_test_helpers/pep723.py,sha256=7tZF33TizFxzqXEv88lYPunLQFhXv7vw5HSQxs0FEoQ,1553 +cuda/bindings/_version.py,sha256=R4wvDAeqktxDMPKHGOVLsN4KzhUbbzrexxVa2eyQbbM,530 +cuda/bindings/cudla.cpython-311-x86_64-linux-gnu.so,sha256=qeks1po_DlEnYPHdnl0oeRRN3U1BsNNhA3ZwiR8DppU,475592 +cuda/bindings/cudla.pxd,sha256=srZchWRd3JlPRj7LqOcvBZNRyBzx7s6dh9iAE9C7VFs,2218 +cuda/bindings/cufile.cpython-311-x86_64-linux-gnu.so,sha256=m6YS7ydJTqIZD7srMJJTJDwDS5wVb4Ke2vCAdRk_vlU,765736 +cuda/bindings/cufile.pxd,sha256=JaxsKd4tUFr-_PO7HNlHq41uEWBP8cwZz197EzoH4-w,3921 +cuda/bindings/cycudla.cpython-311-x86_64-linux-gnu.so,sha256=UjmA5v3tuWEDWA-yju_2hhwOaho4tOiZR07mFLxN5Y4,23424 +cuda/bindings/cycudla.pxd,sha256=6P8whaVmvamjn_Y0sQETwpKqPYWjrwJeIUX5CIIlr-I,8166 +cuda/bindings/cycufile.cpython-311-x86_64-linux-gnu.so,sha256=XunAqZeJAOwA16M967GUhvzdZBk8C-ZQvjCx10n66lo,32320 +cuda/bindings/cycufile.pxd,sha256=YGJlI6kGM3600QF0XCsjCMGLt8pBAJ_cFyCX3CSY4Bw,18414 +cuda/bindings/cydriver.cpython-311-x86_64-linux-gnu.so,sha256=RkTeePvCg0nPY9XvJcO6whPSfgiyelWBHoeWn-F4cLA,166688 +cuda/bindings/cydriver.pxd,sha256=ib4ptxEbUkZFv79AgcY5fjWPiZbVKCsA_ykGPbnT1fI,172390 +cuda/bindings/cynvfatbin.cpython-311-x86_64-linux-gnu.so,sha256=65LV_lXf3hA1LDEOczSg8Q5A86-O9CKlb6mlaU8Joms,23424 +cuda/bindings/cynvfatbin.pxd,sha256=fVOKBxJ24unjJ9uABsWEgTPROGhCtpmtvBZAIgh8NeU,4001 +cuda/bindings/cynvjitlink.cpython-311-x86_64-linux-gnu.so,sha256=qt73gd6adlA8fyz58gxNT2X4D2sp_S2zr5P_5Y1TluQ,23424 +cuda/bindings/cynvjitlink.pxd,sha256=fWFnC2hPWNUslvAtJWeNad7-qj5xSj2noNrW90WWxBk,4698 +cuda/bindings/cynvml.cpython-311-x86_64-linux-gnu.so,sha256=6cmZH73PBDehhiGktYrM7m2V2urRMzB_JkDMQ_1XJV8,119168 +cuda/bindings/cynvml.pxd,sha256=91gyPoI0AVFsa9jQrSDJpdkGj5sQZQu8mGfEvdWK5Lc,152180 +cuda/bindings/cynvrtc.cpython-311-x86_64-linux-gnu.so,sha256=foKlrNA8cQO5WXntCgqeLAgiU0yDrj4V8KYZBtHN88o,31616 +cuda/bindings/cynvrtc.pxd,sha256=iK94S8MJspoECP8uNWwNxBSYbXtamAntacBmST728T8,5109 +cuda/bindings/cynvvm.cpython-311-x86_64-linux-gnu.so,sha256=_nTKndL8l6fyspo_EgwOo_VnVWhoQb0MNjxRNWjcS84,23424 +cuda/bindings/cynvvm.pxd,sha256=F31ruUDOiUwNerwe9WwyhuAmWw-Nb6dl1j-luduWNUg,3256 +cuda/bindings/cyruntime.cpython-311-x86_64-linux-gnu.so,sha256=QHRTu6njAVTdEUCGEp9w5UfQ7Y1l8eRFIWwkUXc-_dg,123232 +cuda/bindings/cyruntime.pxd,sha256=5lQ7JPjVKoRhnIUJNld0a5snnOq7O7jmkOpK6m_RNq8,65095 +cuda/bindings/cyruntime_functions.pxi,sha256=GysOTFP9qdsr_-HFhV9iJtjZyBGORp3lWT7YmA29lI0,38307 +cuda/bindings/cyruntime_types.pxi,sha256=xVvoSje4Co1BXHTHxrevIUs6WhTNx-tkM5QlzGP-3aY,59652 +cuda/bindings/driver.cpython-311-x86_64-linux-gnu.so,sha256=D7Gbn6wa-NSLLqePfXIjMabYwySaAL9FlYIdSCIJOV8,7621440 +cuda/bindings/driver.pxd,sha256=sSII06VJDF6uf5xBrVvwNHzIL5o9psbNJnM0zhyfXeg,219135 +cuda/bindings/nvfatbin.cpython-311-x86_64-linux-gnu.so,sha256=NKZHuvZ0kCtZP6ZF9bPSoAF_erV_crwZJFML3SS2Wgs,111880 +cuda/bindings/nvfatbin.pxd,sha256=idR_YzNHCmh7XWOvDBDDDoE8jJI_cbe8LFtKoLbt2Wc,1576 +cuda/bindings/nvjitlink.cpython-311-x86_64-linux-gnu.so,sha256=cYozXkVdi3KEB4qr4Qkl77igFtP45Rln1tNy6gGElOM,107848 +cuda/bindings/nvjitlink.pxd,sha256=3j6iTR6Cpq0QHfgzIhHr89SkWubbiMKOMU_rD2zfio0,1685 +cuda/bindings/nvml.cpython-311-x86_64-linux-gnu.so,sha256=CMoCSGtJMWvWCYZxpoELep_XAKo2aG90Qq3X6yO92WU,4723944 +cuda/bindings/nvml.pxd,sha256=u1uDek9LMTK1DkDARdvXFbZuKQIy_Mz-iKCPus9ynPQ,27771 +cuda/bindings/nvrtc.cpython-311-x86_64-linux-gnu.so,sha256=806zgSero9tyEf4zphbO-HjJ-Dz7G1Gz54VhAFlUaw8,451200 +cuda/bindings/nvrtc.pxd,sha256=wKbEf2IdfjZHfvQ0wrtaVfMfD8pGMV6fGMlZb9QxFAw,1595 +cuda/bindings/nvvm.cpython-311-x86_64-linux-gnu.so,sha256=6-NHeJg9XAGjDxzjx9YL0EbY4r2qhl1s33ZAZ16bTBQ,99656 +cuda/bindings/nvvm.pxd,sha256=iVHGSAgqQVpmCMYvi1sqCHJ3LVMeB1jkhZOx4DPVvZY,1615 +cuda/bindings/runtime.cpython-311-x86_64-linux-gnu.so,sha256=8HgEExY0zD-gom8A7LC954_6BpasrBoPp4k3rX4wj0I,5533440 +cuda/bindings/runtime.pxd,sha256=UVk6QDONtBNfemSnQhT7vAcYY-TvPkD5SnWQjJW8CNE,112142 +cuda/bindings/utils/__init__.py,sha256=PoBge2GNGWEr89V0jYfqLdziOE_elDqmvFMcNif8atM,1000 +cuda/bindings/utils/_nvvm_utils.py,sha256=-YCS8fnjiOxouPkGJ7SLZ1QHphPnOddHFlsuZYA-hhg,2712 +cuda/bindings/utils/_ptx_utils.py,sha256=VAN6_Rpj5os1I5Pr9oK9N94kZO5XDLprYD2wJK3cULw,3245 +cuda/bindings/utils/_version_check.py,sha256=Wr-o20azz3b2wiWUrhUyzwd3RHEFBMpkbgz-6sPf_mE,2397 +cuda_bindings-13.3.1.dist-info/INSTALLER,sha256=5hhM4Q4mYTT9z6QB6PGpUAW81PGNFrYrdXMj4oM_6ak,2 +cuda_bindings-13.3.1.dist-info/METADATA,sha256=C_y-d9reYbHLqfIBwEZfI1P1tQrfTk9VS8o1o1AzFm8,2498 +cuda_bindings-13.3.1.dist-info/RECORD,, +cuda_bindings-13.3.1.dist-info/REQUESTED,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0 +cuda_bindings-13.3.1.dist-info/WHEEL,sha256=1AdkAXFvBWjoNMxi61bi8SaLpOOfDHzRK1qgGSEFvOo,152 +cuda_bindings-13.3.1.dist-info/licenses/LICENSE,sha256=gHsN94kFVQ3-fC6hFBTLdOonjuxnrXrsJxtPC3MAy9M,11076 +cuda_bindings-13.3.1.dist-info/top_level.txt,sha256=U5vpnvwNpaJF8bl4KnoUluMDTRt0J972FipwXjgNQ3A,5 diff --git a/venv/lib/python3.11/site-packages/cuda_bindings-13.3.1.dist-info/REQUESTED b/venv/lib/python3.11/site-packages/cuda_bindings-13.3.1.dist-info/REQUESTED new file mode 100644 index 0000000000000000000000000000000000000000..e69de29bb2d1d6434b8b29ae775ad8c2e48c5391 diff --git a/venv/lib/python3.11/site-packages/cuda_bindings-13.3.1.dist-info/WHEEL b/venv/lib/python3.11/site-packages/cuda_bindings-13.3.1.dist-info/WHEEL new file mode 100644 index 0000000000000000000000000000000000000000..80b7a2cf422601682e3c69ba4822ef69c6f93003 --- /dev/null +++ b/venv/lib/python3.11/site-packages/cuda_bindings-13.3.1.dist-info/WHEEL @@ -0,0 +1,6 @@ +Wheel-Version: 1.0 +Generator: setuptools (13.3.1) +Root-Is-Purelib: false +Tag: cp311-cp311-manylinux_2_24_x86_64 +Tag: cp311-cp311-manylinux_2_28_x86_64 + diff --git a/venv/lib/python3.11/site-packages/cuda_bindings-13.3.1.dist-info/licenses/LICENSE b/venv/lib/python3.11/site-packages/cuda_bindings-13.3.1.dist-info/licenses/LICENSE new file mode 100644 index 0000000000000000000000000000000000000000..a5a65097cdc5e452ffd79974f1d7621c06ddbd1f --- /dev/null +++ b/venv/lib/python3.11/site-packages/cuda_bindings-13.3.1.dist-info/licenses/LICENSE @@ -0,0 +1,48 @@ +NVIDIA SOFTWARE LICENSE + +This license is a legal agreement between you and NVIDIA Corporation ("NVIDIA") and governs your use of the NVIDIA CUDA Python software and materials provided hereunder ("SOFTWARE"). + +This license can be accepted only by an adult of legal age of majority in the country in which the SOFTWARE is used. If you are under the legal age of majority, you must ask your parent or legal guardian to consent to this license. By taking delivery of the SOFTWARE, you affirm that you have reached the legal age of majority, you accept the terms of this license, and you take legal and financial responsibility for the actions of your permitted users. + +You agree to use the SOFTWARE only for purposes that are permitted by (a) this license, and (b) any applicable law, regulation or generally accepted practices or guidelines in the relevant jurisdictions. + +1. LICENSE. Subject to the terms of this license, NVIDIA grants you a non-exclusive limited license to: (a) install and use the SOFTWARE, and (b) distribute the SOFTWARE subject to the distribution requirements described in this license. NVIDIA reserves all rights, title and interest in and to the SOFTWARE not expressly granted to you under this license. + +2. DISTRIBUTION REQUIREMENTS. These are the distribution requirements for you to exercise the distribution grant: +a. The terms under which you distribute the SOFTWARE must be consistent with the terms of this license, including (without limitation) terms relating to the license grant and license restrictions and protection of NVIDIA's intellectual property rights. +b. You agree to notify NVIDIA in writing of any known or suspected distribution or use of the SOFTWARE not in compliance with the requirements of this license, and to enforce the terms of your agreements with respect to distributed SOFTWARE. + +3. LIMITATIONS. Your license to use the SOFTWARE is restricted as follows: +a. The SOFTWARE is licensed for you to develop applications only for use in systems with NVIDIA GPUs. +b. You may not reverse engineer, decompile or disassemble, or remove copyright or other proprietary notices from any portion of the SOFTWARE or copies of the SOFTWARE. +c. You may not modify or create derivative works of any portion of the SOFTWARE. +d. You may not bypass, disable, or circumvent any technical measure, encryption, security, digital rights management or authentication mechanism in the SOFTWARE. +e. You may not use the SOFTWARE in any manner that would cause it to become subject to an open source software license. As examples, licenses that require as a condition of use, modification, and/or distribution that the SOFTWARE be (i) disclosed or distributed in source code form; (ii) licensed for the purpose of making derivative works; or (iii) redistributable at no charge. +f. Unless you have an agreement with NVIDIA for this purpose, you may not use the SOFTWARE with any system or application where the use or failure of the system or application can reasonably be expected to threaten or result in personal injury, death, or catastrophic loss. Examples include use in avionics, navigation, military, medical, life support or other life critical applications. NVIDIA does not design, test or manufacture the SOFTWARE for these critical uses and NVIDIA shall not be liable to you or any third party, in whole or in part, for any claims or damages arising from such uses. +g. You agree to defend, indemnify and hold harmless NVIDIA and its affiliates, and their respective employees, contractors, agents, officers and directors, from and against any and all claims, damages, obligations, losses, liabilities, costs or debt, fines, restitutions and expenses (including but not limited to attorney's fees and costs incident to establishing the right of indemnification) arising out of or related to use of the SOFTWARE outside of the scope of this Agreement, or not in compliance with its terms. + +4. PRE-RELEASE. SOFTWARE versions identified as alpha, beta, preview, early access or otherwise as pre-release may not be fully functional, may contain errors or design flaws, and may have reduced or different security, privacy, availability, and reliability standards relative to commercial versions of NVIDIA software and materials. You may use a pre-release SOFTWARE version at your own risk, understanding that these versions are not intended for use in production or business-critical systems. + +5. OWNERSHIP. The SOFTWARE and the related intellectual property rights therein are and will remain the sole and exclusive property of NVIDIA or its licensors. The SOFTWARE is copyrighted and protected by the laws of the United States and other countries, and international treaty provisions. NVIDIA may make changes to the SOFTWARE, at any time without notice, but is not obligated to support or update the SOFTWARE. + +6. COMPONENTS UNDER OTHER LICENSES. The SOFTWARE may include NVIDIA or third-party components with separate legal notices or terms as may be described in proprietary notices accompanying the SOFTWARE. If and to the extent there is a conflict between the terms in this license and the license terms associated with a component, the license terms associated with the components control only to the extent necessary to resolve the conflict. + +7. FEEDBACK. You may, but don't have to, provide to NVIDIA any Feedback. "Feedback" means any suggestions, bug fixes, enhancements, modifications, feature requests or other feedback regarding the SOFTWARE. For any Feedback that you voluntarily provide, you hereby grant NVIDIA and its affiliates a perpetual, non-exclusive, worldwide, irrevocable license to use, reproduce, modify, license, sublicense (through multiple tiers of sublicensees), and distribute (through multiple tiers of distributors) the Feedback without the payment of any royalties or fees to you. NVIDIA will use Feedback at its choice. + +8. NO WARRANTIES. THE SOFTWARE IS PROVIDED "AS IS" WITHOUT ANY EXPRESS OR IMPLIED WARRANTY OF ANY KIND INCLUDING, BUT NOT LIMITED TO, WARRANTIES OF MERCHANTABILITY, NONINFRINGEMENT, OR FITNESS FOR A PARTICULAR PURPOSE. NVIDIA DOES NOT WARRANT THAT THE SOFTWARE WILL MEET YOUR REQUIREMENTS OR THAT THE OPERATION THEREOF WILL BE UNINTERRUPTED OR ERROR-FREE, OR THAT ALL ERRORS WILL BE CORRECTED. + +9. LIMITATIONS OF LIABILITY. TO THE MAXIMUM EXTENT PERMITTED BY LAW, NVIDIA AND ITS AFFILIATES SHALL NOT BE LIABLE FOR ANY SPECIAL, INCIDENTAL, PUNITIVE OR CONSEQUENTIAL DAMAGES, OR ANY LOST PROFITS, PROJECT DELAYS, LOSS OF USE, LOSS OF DATA OR LOSS OF GOODWILL, OR THE COSTS OF PROCURING SUBSTITUTE PRODUCTS, ARISING OUT OF OR IN CONNECTION WITH THIS LICENSE OR THE USE OR PERFORMANCE OF THE SOFTWARE, WHETHER SUCH LIABILITY ARISES FROM ANY CLAIM BASED UPON BREACH OF CONTRACT, BREACH OF WARRANTY, TORT (INCLUDING NEGLIGENCE), PRODUCT LIABILITY OR ANY OTHER CAUSE OF ACTION OR THEORY OF LIABILITY, EVEN IF NVIDIA HAS PREVIOUSLY BEEN ADVISED OF, OR COULD REASONABLY HAVE FORESEEN, THE POSSIBILITY OF SUCH DAMAGES. IN NO EVENT WILL NVIDIA'S AND ITS AFFILIATES TOTAL CUMULATIVE LIABILITY UNDER OR ARISING OUT OF THIS LICENSE EXCEED US$10.00. THE NATURE OF THE LIABILITY OR THE NUMBER OF CLAIMS OR SUITS SHALL NOT ENLARGE OR EXTEND THIS LIMIT. + +10. TERMINATION. Your rights under this license will terminate automatically without notice from NVIDIA if you fail to comply with any term and condition of this license or if you commence or participate in any legal proceeding against NVIDIA with respect to the SOFTWARE. NVIDIA may terminate this license with advance written notice to you if NVIDIA decides to no longer provide the SOFTWARE in a country or, in NVIDIA's sole discretion, the continued use of it is no longer commercially viable. Upon any termination of this license, you agree to promptly discontinue use of the SOFTWARE and destroy all copies in your possession or control. Your prior distributions in accordance with this license are not affected by the termination of this license. All provisions of this license will survive termination, except for the license granted to you. + +11. APPLICABLE LAW. This license will be governed in all respects by the laws of the United States and of the State of Delaware as those laws are applied to contracts entered into and performed entirely within Delaware by Delaware residents, without regard to the conflicts of laws principles. The United Nations Convention on Contracts for the International Sale of Goods is specifically disclaimed. You agree to all terms of this Agreement in the English language. The state or federal courts residing in Santa Clara County, California shall have exclusive jurisdiction over any dispute or claim arising out of this license. Notwithstanding this, you agree that NVIDIA shall still be allowed to apply for injunctive remedies or an equivalent type of urgent legal relief in any jurisdiction. + +12. NO ASSIGNMENT. This license and your rights and obligations thereunder may not be assigned by you by any means or operation of law without NVIDIA's permission. Any attempted assignment not approved by NVIDIA in writing shall be void and of no effect. + +13. EXPORT. The SOFTWARE is subject to United States export laws and regulations. You agree that you will not ship, transfer or export the SOFTWARE into any country, or use the SOFTWARE in any manner, prohibited by the United States Bureau of Industry and Security or economic sanctions regulations administered by the U.S. Department of Treasury's Office of Foreign Assets Control (OFAC), or any applicable export laws, restrictions or regulations. These laws include restrictions on destinations, end users and end use. By accepting this license, you confirm that you are not a resident or citizen of any country currently embargoed by the U.S. and that you are not otherwise prohibited from receiving the SOFTWARE. + +14. GOVERNMENT USE. The SOFTWARE has been developed entirely at private expense and is "commercial items" consisting of "commercial computer software" and "commercial computer software documentation" provided with RESTRICTED RIGHTS. Use, duplication or disclosure by the U.S. Government or a U.S. Government subcontractor is subject to the restrictions in this license pursuant to DFARS 227.7202-3(a) or as set forth in subparagraphs (b)(1) and (2) of the Commercial Computer Software - Restricted Rights clause at FAR 52.227-19, as applicable. Contractor/manufacturer is NVIDIA, 2788 San Tomas Expressway, Santa Clara, CA 95051. + +15. ENTIRE AGREEMENT. This license is the final, complete and exclusive agreement between the parties relating to the subject matter of this license and supersedes all prior or contemporaneous understandings and agreements relating to this subject matter, whether oral or written. If any court of competent jurisdiction determines that any provision of this license is illegal, invalid or unenforceable, the remaining provisions will remain in full force and effect. This license may only be modified in a writing signed by an authorized representative of each party. + +(v. May 12, 2021) diff --git a/venv/lib/python3.11/site-packages/cuda_bindings-13.3.1.dist-info/top_level.txt b/venv/lib/python3.11/site-packages/cuda_bindings-13.3.1.dist-info/top_level.txt new file mode 100644 index 0000000000000000000000000000000000000000..089f044f442ab95aabf9de9eb52b63efbac9f7b9 --- /dev/null +++ b/venv/lib/python3.11/site-packages/cuda_bindings-13.3.1.dist-info/top_level.txt @@ -0,0 +1 @@ +cuda diff --git a/venv/lib/python3.11/site-packages/cuda_pathfinder-1.6.0.dist-info/INSTALLER b/venv/lib/python3.11/site-packages/cuda_pathfinder-1.6.0.dist-info/INSTALLER new file mode 100644 index 0000000000000000000000000000000000000000..5c69047b2eb8235994febeeae1da4a82365a240a --- /dev/null +++ b/venv/lib/python3.11/site-packages/cuda_pathfinder-1.6.0.dist-info/INSTALLER @@ -0,0 +1 @@ +uv \ No newline at end of file diff --git a/venv/lib/python3.11/site-packages/cuda_pathfinder-1.6.0.dist-info/METADATA b/venv/lib/python3.11/site-packages/cuda_pathfinder-1.6.0.dist-info/METADATA new file mode 100644 index 0000000000000000000000000000000000000000..e620d58291e0a3da8988d22cd31c748bc6996dd2 --- /dev/null +++ b/venv/lib/python3.11/site-packages/cuda_pathfinder-1.6.0.dist-info/METADATA @@ -0,0 +1,47 @@ +Metadata-Version: 2.4 +Name: cuda-pathfinder +Version: 1.6.0 +Summary: Pathfinder for CUDA components +Author-email: NVIDIA Corporation +License-Expression: Apache-2.0 +Project-URL: Repository, https://github.com/NVIDIA/cuda-python +Project-URL: Documentation, https://nvidia.github.io/cuda-python/ +Requires-Python: >=3.10 +Description-Content-Type: text/x-rst +License-File: LICENSE +Dynamic: license-file + +.. SPDX-FileCopyrightText: Copyright (c) 2025 NVIDIA CORPORATION & AFFILIATES. All rights reserved. +.. SPDX-License-Identifier: Apache-2.0 + +******************************************************* +cuda-pathfinder: Utilities for locating CUDA components +******************************************************* + +.. image:: https://img.shields.io/badge/NVIDIA-black?logo=nvidia + :target: https://www.nvidia.com/ + :alt: NVIDIA + +`cuda.pathfinder `_ +aims to be a one-stop solution for locating CUDA components. Currently +it supports locating and loading dynamic libraries (``.so``, ``.dll``), and +locating CTK header directories. Support for other artifacts is in progress. + +* `Documentation `_ +* `Releases `_ +* `Repository `_ +* `Issue tracker `_ (select component ``cuda.pathfinder``) + +``cuda.pathfinder`` is under active development. Feedback and suggestions are welcome. + + +Installation +============ + +.. code-block:: bash + + pip install cuda-pathfinder + +``cuda-pathfinder`` is `CUDA Toolkit (CTK) `_ +version-agnostic. It follows the general CUDA Toolkit support policy: the +two most recent major versions are supported simultaneously. diff --git a/venv/lib/python3.11/site-packages/cuda_pathfinder-1.6.0.dist-info/RECORD b/venv/lib/python3.11/site-packages/cuda_pathfinder-1.6.0.dist-info/RECORD new file mode 100644 index 0000000000000000000000000000000000000000..d3ae38a18389aeb394516dde11d94770f130352a --- /dev/null +++ b/venv/lib/python3.11/site-packages/cuda_pathfinder-1.6.0.dist-info/RECORD @@ -0,0 +1,40 @@ +cuda/pathfinder/README.md,sha256=JPbUfq3xYFMGa1ZlnpHkKsGXjJi4Zr1nNU3SzWJIviw,123 +cuda/pathfinder/__init__.py,sha256=N88Ky8JCENHM0Bj5rv9kKKMswPm2BIWG2uhQIuE41ns,4203 +cuda/pathfinder/_binaries/find_nvidia_binary_utility.py,sha256=Oeyq7G6BwScoI98pa_XNxX3vlU_RpKq4qeawwJRbWYw,5984 +cuda/pathfinder/_binaries/supported_nvidia_binaries.py,sha256=E6ed_ZL8EQy-zJYNjsUQC0hGBSN4zDgaMbFaEeca89M,1409 +cuda/pathfinder/_dynamic_libs/descriptor_catalog.py,sha256=ySY4B2SDwcpytDIbp_G-D17kVqdqTUl4UGz6DGxuJNU,18455 +cuda/pathfinder/_dynamic_libs/dynamic_lib_subprocess.py,sha256=-jgshHMUUXwvPt49K1R4GcXMK0XhgNRRtyKKFczsoIc,5165 +cuda/pathfinder/_dynamic_libs/lib_descriptor.py,sha256=4TuEXVowm8Oq149M_tQvTgjWJGTQ_AJgouLz-x0I-Wg,753 +cuda/pathfinder/_dynamic_libs/load_dl_common.py,sha256=tQfuSm0VKEUzaYU7Y4HEHuHyU_Z4zYU2QQBYIxlvoU8,957 +cuda/pathfinder/_dynamic_libs/load_dl_linux.py,sha256=yDz8wNM-FM2hDsUzohpkQ9s2uwMtO_UhbxCeiBGsdOk,7953 +cuda/pathfinder/_dynamic_libs/load_dl_windows.py,sha256=mh95zdwa_0ZMxyBR6b8y9ikikeL22W00rD0t9QTvm9Q,6514 +cuda/pathfinder/_dynamic_libs/load_nvidia_dynamic_lib.py,sha256=n6ZKe6UprWu1Kd2QinlJlxmu6f35gntfQwiUo0TDngE,12377 +cuda/pathfinder/_dynamic_libs/platform_loader.py,sha256=9dwZFmVlWxsnmlpH3w23B99JxE1O-h0hFJKoiRiRbIE,1490 +cuda/pathfinder/_dynamic_libs/search_platform.py,sha256=eb7f1ayFpTgtbAdo5pst82wivaktkXwSEBNXhrXqylY,8250 +cuda/pathfinder/_dynamic_libs/search_steps.py,sha256=vMHCamMaLFQkn2w6KFGx8o82R4mG0JJAG4Dwc9deF7M,8122 +cuda/pathfinder/_dynamic_libs/subprocess_protocol.py,sha256=bieP_U7UujgbePzxvykszai1Xpn9tueO_qVv62_8CQA,2713 +cuda/pathfinder/_dynamic_libs/supported_nvidia_libs.py,sha256=L1IYyAzaIbV3CLPhTactV_YEGDoBcsLY7GAQhUAv7AM,4419 +cuda/pathfinder/_headers/find_nvidia_headers.py,sha256=prbMNxxZMKAce33XRx-WGXpPMxEa0-vFuqglWUvxr2o,8538 +cuda/pathfinder/_headers/header_descriptor.py,sha256=fdU_rg293TQqYxRJRPaHrPa1a5WDhgjHqTlGwAUNIcA,2172 +cuda/pathfinder/_headers/header_descriptor_catalog.py,sha256=T8KOscEpMdcvnrWI4I4Axqx8V54LnWpOfx3naIGzUOo,8956 +cuda/pathfinder/_headers/supported_nvidia_headers.py,sha256=DT5JHhBY59Q4CJz4iCMLcHyMRNM8rgesjYfGpX8FITs,3519 +cuda/pathfinder/_optional_cuda_import.py,sha256=1Vjsv3DvBmz7-yqeaxHD-TDe-Fzwdyu88S1df-CfRBo,1424 +cuda/pathfinder/_static_libs/find_bitcode_lib.py,sha256=Ke0b3KmApVeF6QjVw5r020L6B_DiPG8qvvsdFRacuRo,6006 +cuda/pathfinder/_static_libs/find_static_lib.py,sha256=OF8N4CqCphPYilvkr_xM31H-0s3OoyucxLngCmYexrs,5837 +cuda/pathfinder/_utils/ctk_root_canary.py,sha256=fMwpBqFBgOkLCwiqAR85aA9de9A23Wkha6PGAHrzI0g,184 +cuda/pathfinder/_utils/driver_info.py,sha256=KYg8EXMdlJg9tn0VGk0cVzURholCHnFQAcyhGGcVV5g,3118 +cuda/pathfinder/_utils/env_vars.py,sha256=9VspktZnl7oQyGHVP85n61Snj6eXSqbqs6aiQsYxzqg,3813 +cuda/pathfinder/_utils/find_site_packages_dll.py,sha256=HixAy-Ubd5Gu9DZwCLAu2jvlEr1nfolOSZ_7GX3ZgbM,1143 +cuda/pathfinder/_utils/find_site_packages_so.py,sha256=_udOAI8RtTXRJWz-X6TUy-g9W_nW8PeAcG61k1AVSLw,1638 +cuda/pathfinder/_utils/find_sub_dirs.py,sha256=lr2Ls7COGIorf8H3snxLm66ClXkPNYb5f7g5ZBl5yBQ,2614 +cuda/pathfinder/_utils/platform_aware.py,sha256=oOCqy_VyNdEdISVM2ilde8Kl6rOeElItvsAnw0WD9b8,463 +cuda/pathfinder/_version.py,sha256=wykEcfGCnKe-lc3KX6GOfWnMy-TGbXkdmGemFAdVyFc,527 +cuda_pathfinder-1.6.0.dist-info/INSTALLER,sha256=5hhM4Q4mYTT9z6QB6PGpUAW81PGNFrYrdXMj4oM_6ak,2 +cuda_pathfinder-1.6.0.dist-info/METADATA,sha256=CyJNjfSJl80tM22_nevHp6-gAMwkLhVVxckKxlTMy38,1906 +cuda_pathfinder-1.6.0.dist-info/RECORD,, +cuda_pathfinder-1.6.0.dist-info/REQUESTED,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0 +cuda_pathfinder-1.6.0.dist-info/WHEEL,sha256=K260EYznzXsJYBQGqmI8VTxEdiZYNvDZwW9cBh9-_MA,91 +cuda_pathfinder-1.6.0.dist-info/licenses/LICENSE,sha256=K5UVtFgFcOzjfFOXZQsPlQ3i9GWHOhaaZ-QMCMEhMH0,10252 +cuda_pathfinder-1.6.0.dist-info/scm_file_list.json,sha256=-8vU46dDghSbX-FLozMmCXWknGZF6zjm_5hxWm1Qbww,3985 +cuda_pathfinder-1.6.0.dist-info/scm_version.json,sha256=S4Jobk3vEEM4srxkVP-ftEIyBtwSMSBgtdJQQyD048M,128 +cuda_pathfinder-1.6.0.dist-info/top_level.txt,sha256=U5vpnvwNpaJF8bl4KnoUluMDTRt0J972FipwXjgNQ3A,5 diff --git a/venv/lib/python3.11/site-packages/cuda_pathfinder-1.6.0.dist-info/REQUESTED b/venv/lib/python3.11/site-packages/cuda_pathfinder-1.6.0.dist-info/REQUESTED new file mode 100644 index 0000000000000000000000000000000000000000..e69de29bb2d1d6434b8b29ae775ad8c2e48c5391 diff --git a/venv/lib/python3.11/site-packages/cuda_pathfinder-1.6.0.dist-info/WHEEL b/venv/lib/python3.11/site-packages/cuda_pathfinder-1.6.0.dist-info/WHEEL new file mode 100644 index 0000000000000000000000000000000000000000..1d472b6c22838de58d1c3c0dd2c795a5cde9e415 --- /dev/null +++ b/venv/lib/python3.11/site-packages/cuda_pathfinder-1.6.0.dist-info/WHEEL @@ -0,0 +1,5 @@ +Wheel-Version: 1.0 +Generator: setuptools (83.0.0) +Root-Is-Purelib: true +Tag: py3-none-any + diff --git a/venv/lib/python3.11/site-packages/cuda_pathfinder-1.6.0.dist-info/licenses/LICENSE b/venv/lib/python3.11/site-packages/cuda_pathfinder-1.6.0.dist-info/licenses/LICENSE new file mode 100644 index 0000000000000000000000000000000000000000..a4baaa2d3fac94bf64abceee419eda739fe3e98a --- /dev/null +++ b/venv/lib/python3.11/site-packages/cuda_pathfinder-1.6.0.dist-info/licenses/LICENSE @@ -0,0 +1,178 @@ +Copyright (c) 2025-2026 NVIDIA CORPORATION & AFFILIATES. All rights reserved. + + Apache License + Version 2.0, January 2004 + http://www.apache.org/licenses/ + + TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION + + 1. Definitions. + + "License" shall mean the terms and conditions for use, reproduction, + and distribution as defined by Sections 1 through 9 of this document. + + "Licensor" shall mean the copyright owner or entity authorized by + the copyright owner that is granting the License. + + "Legal Entity" shall mean the union of the acting entity and all + other entities that control, are controlled by, or are under common + control with that entity. For the purposes of this definition, + "control" means (i) the power, direct or indirect, to cause the + direction or management of such entity, whether by contract or + otherwise, or (ii) ownership of fifty percent (50%) or more of the + outstanding shares, or (iii) beneficial ownership of such entity. + + "You" (or "Your") shall mean an individual or Legal Entity + exercising permissions granted by this License. + + "Source" form shall mean the preferred form for making modifications, + including but not limited to software source code, documentation + source, and configuration files. + + "Object" form shall mean any form resulting from mechanical + transformation or translation of a Source form, including but + not limited to compiled object code, generated documentation, + and conversions to other media types. + + "Work" shall mean the work of authorship, whether in Source or + Object form, made available under the License, as indicated by a + copyright notice that is included in or attached to the work + (an example is provided in the Appendix below). + + "Derivative Works" shall mean any work, whether in Source or Object + form, that is based on (or derived from) the Work and for which the + editorial revisions, annotations, elaborations, or other modifications + represent, as a whole, an original work of authorship. For the purposes + of this License, Derivative Works shall not include works that remain + separable from, or merely link (or bind by name) to the interfaces of, + the Work and Derivative Works thereof. + + "Contribution" shall mean any work of authorship, including + the original version of the Work and any modifications or additions + to that Work or Derivative Works thereof, that is intentionally + submitted to Licensor for inclusion in the Work by the copyright owner + or by an individual or Legal Entity authorized to submit on behalf of + the copyright owner. For the purposes of this definition, "submitted" + means any form of electronic, verbal, or written communication sent + to the Licensor or its representatives, including but not limited to + communication on electronic mailing lists, source code control systems, + and issue tracking systems that are managed by, or on behalf of, the + Licensor for the purpose of discussing and improving the Work, but + excluding communication that is conspicuously marked or otherwise + designated in writing by the copyright owner as "Not a Contribution." + + "Contributor" shall mean Licensor and any individual or Legal Entity + on behalf of whom a Contribution has been received by Licensor and + subsequently incorporated within the Work. + + 2. Grant of Copyright License. Subject to the terms and conditions of + this License, each Contributor hereby grants to You a perpetual, + worldwide, non-exclusive, no-charge, royalty-free, irrevocable + copyright license to reproduce, prepare Derivative Works of, + publicly display, publicly perform, sublicense, and distribute the + Work and such Derivative Works in Source or Object form. + + 3. Grant of Patent License. Subject to the terms and conditions of + this License, each Contributor hereby grants to You a perpetual, + worldwide, non-exclusive, no-charge, royalty-free, irrevocable + (except as stated in this section) patent license to make, have made, + use, offer to sell, sell, import, and otherwise transfer the Work, + where such license applies only to those patent claims licensable + by such Contributor that are necessarily infringed by their + Contribution(s) alone or by combination of their Contribution(s) + with the Work to which such Contribution(s) was submitted. If You + institute patent litigation against any entity (including a + cross-claim or counterclaim in a lawsuit) alleging that the Work + or a Contribution incorporated within the Work constitutes direct + or contributory patent infringement, then any patent licenses + granted to You under this License for that Work shall terminate + as of the date such litigation is filed. + + 4. Redistribution. You may reproduce and distribute copies of the + Work or Derivative Works thereof in any medium, with or without + modifications, and in Source or Object form, provided that You + meet the following conditions: + + (a) You must give any other recipients of the Work or + Derivative Works a copy of this License; and + + (b) You must cause any modified files to carry prominent notices + stating that You changed the files; and + + (c) You must retain, in the Source form of any Derivative Works + that You distribute, all copyright, patent, trademark, and + attribution notices from the Source form of the Work, + excluding those notices that do not pertain to any part of + the Derivative Works; and + + (d) If the Work includes a "NOTICE" text file as part of its + distribution, then any Derivative Works that You distribute must + include a readable copy of the attribution notices contained + within such NOTICE file, excluding those notices that do not + pertain to any part of the Derivative Works, in at least one + of the following places: within a NOTICE text file distributed + as part of the Derivative Works; within the Source form or + documentation, if provided along with the Derivative Works; or, + within a display generated by the Derivative Works, if and + wherever such third-party notices normally appear. The contents + of the NOTICE file are for informational purposes only and + do not modify the License. You may add Your own attribution + notices within Derivative Works that You distribute, alongside + or as an addendum to the NOTICE text from the Work, provided + that such additional attribution notices cannot be construed + as modifying the License. + + You may add Your own copyright statement to Your modifications and + may provide additional or different license terms and conditions + for use, reproduction, or distribution of Your modifications, or + for any such Derivative Works as a whole, provided Your use, + reproduction, and distribution of the Work otherwise complies with + the conditions stated in this License. + + 5. Submission of Contributions. Unless You explicitly state otherwise, + any Contribution intentionally submitted for inclusion in the Work + by You to the Licensor shall be under the terms and conditions of + this License, without any additional terms or conditions. + Notwithstanding the above, nothing herein shall supersede or modify + the terms of any separate license agreement you may have executed + with Licensor regarding such Contributions. + + 6. Trademarks. This License does not grant permission to use the trade + names, trademarks, service marks, or product names of the Licensor, + except as required for reasonable and customary use in describing the + origin of the Work and reproducing the content of the NOTICE file. + + 7. Disclaimer of Warranty. Unless required by applicable law or + agreed to in writing, Licensor provides the Work (and each + Contributor provides its Contributions) on an "AS IS" BASIS, + WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or + implied, including, without limitation, any warranties or conditions + of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A + PARTICULAR PURPOSE. You are solely responsible for determining the + appropriateness of using or redistributing the Work and assume any + risks associated with Your exercise of permissions under this License. + + 8. Limitation of Liability. In no event and under no legal theory, + whether in tort (including negligence), contract, or otherwise, + unless required by applicable law (such as deliberate and grossly + negligent acts) or agreed to in writing, shall any Contributor be + liable to You for damages, including any direct, indirect, special, + incidental, or consequential damages of any character arising as a + result of this License or out of the use or inability to use the + Work (including but not limited to damages for loss of goodwill, + work stoppage, computer failure or malfunction, or any and all + other commercial damages or losses), even if such Contributor + has been advised of the possibility of such damages. + + 9. Accepting Warranty or Additional Liability. While redistributing + the Work or Derivative Works thereof, You may choose to offer, + and charge a fee for, acceptance of support, warranty, indemnity, + or other liability obligations and/or rights consistent with this + License. However, in accepting such obligations, You may act only + on Your own behalf and on Your sole responsibility, not on behalf + of any other Contributor, and only if You agree to indemnify, + defend, and hold each Contributor harmless for any liability + incurred by, or claims asserted against, such Contributor by reason + of your accepting any such warranty or additional liability. + + END OF TERMS AND CONDITIONS diff --git a/venv/lib/python3.11/site-packages/cuda_pathfinder-1.6.0.dist-info/scm_file_list.json b/venv/lib/python3.11/site-packages/cuda_pathfinder-1.6.0.dist-info/scm_file_list.json new file mode 100644 index 0000000000000000000000000000000000000000..90c3b4bc293a9aaee79e4393f06a230f4144fe99 --- /dev/null +++ b/venv/lib/python3.11/site-packages/cuda_pathfinder-1.6.0.dist-info/scm_file_list.json @@ -0,0 +1,98 @@ +{ + "files": [ + "CLAUDE.md", + "AGENTS.md", + "LICENSE", + "pixi.toml", + "pyproject.toml", + "DESCRIPTION.rst", + "pixi.lock", + ".git_archival.txt", + "docs/nv-versions.json", + "docs/README.md", + "docs/Makefile", + "docs/build_docs.sh", + "docs/source/conf.py", + "docs/source/install.rst", + "docs/source/contribute.rst", + "docs/source/index.rst", + "docs/source/license.rst", + "docs/source/api.rst", + "docs/source/release.rst", + "docs/source/_templates/main.html", + "docs/source/release/1.2.2-notes.rst", + "docs/source/release/1.3.2-notes.rst", + "docs/source/release/1.3.3-notes.rst", + "docs/source/release/1.5.2-notes.rst", + "docs/source/release/1.0.0-notes.rst", + "docs/source/release/1.4.0-notes.rst", + "docs/source/release/1.5.3-notes.rst", + "docs/source/release/1.3.1-notes.rst", + "docs/source/release/1.2.0-notes.rst", + "docs/source/release/1.4.1-notes.rst", + "docs/source/release/1.3.4-notes.rst", + "docs/source/release/1.5.0-notes.rst", + "docs/source/release/1.2.3-notes.rst", + "docs/source/release/1.3.5-notes.rst", + "docs/source/release/1.3.0-notes.rst", + "docs/source/release/1.6.0-notes.rst", + "docs/source/release/1.5.6-notes.rst", + "docs/source/release/1.4.2-notes.rst", + "docs/source/release/1.4.4-notes.rst", + "docs/source/release/1.4.3-notes.rst", + "docs/source/release/1.5.5-notes.rst", + "docs/source/release/1.1.0-notes.rst", + "docs/source/release/1.5.1-notes.rst", + "docs/source/release/1.5.4-notes.rst", + "docs/source/release/1.2.1-notes.rst", + "cuda/pathfinder/__init__.py", + "cuda/pathfinder/README.md", + "cuda/pathfinder/_optional_cuda_import.py", + "cuda/pathfinder/_static_libs/find_bitcode_lib.py", + "cuda/pathfinder/_static_libs/find_static_lib.py", + "cuda/pathfinder/_utils/ctk_root_canary.py", + "cuda/pathfinder/_utils/find_site_packages_dll.py", + "cuda/pathfinder/_utils/driver_info.py", + "cuda/pathfinder/_utils/env_vars.py", + "cuda/pathfinder/_utils/find_sub_dirs.py", + "cuda/pathfinder/_utils/platform_aware.py", + "cuda/pathfinder/_utils/find_site_packages_so.py", + "cuda/pathfinder/_headers/supported_nvidia_headers.py", + "cuda/pathfinder/_headers/find_nvidia_headers.py", + "cuda/pathfinder/_headers/header_descriptor_catalog.py", + "cuda/pathfinder/_headers/header_descriptor.py", + "cuda/pathfinder/_binaries/supported_nvidia_binaries.py", + "cuda/pathfinder/_binaries/find_nvidia_binary_utility.py", + "cuda/pathfinder/_dynamic_libs/search_platform.py", + "cuda/pathfinder/_dynamic_libs/load_nvidia_dynamic_lib.py", + "cuda/pathfinder/_dynamic_libs/load_dl_common.py", + "cuda/pathfinder/_dynamic_libs/platform_loader.py", + "cuda/pathfinder/_dynamic_libs/load_dl_windows.py", + "cuda/pathfinder/_dynamic_libs/descriptor_catalog.py", + "cuda/pathfinder/_dynamic_libs/load_dl_linux.py", + "cuda/pathfinder/_dynamic_libs/lib_descriptor.py", + "cuda/pathfinder/_dynamic_libs/supported_nvidia_libs.py", + "cuda/pathfinder/_dynamic_libs/dynamic_lib_subprocess.py", + "cuda/pathfinder/_dynamic_libs/search_steps.py", + "cuda/pathfinder/_dynamic_libs/subprocess_protocol.py", + "tests/test_find_nvidia_binaries.py", + "tests/test_load_nvidia_dynamic_lib_using_mocker.py", + "tests/test_utils_find_sub_dirs.py", + "tests/test_load_nvidia_dynamic_lib.py", + "tests/test_utils_env_vars.py", + "tests/test_find_bitcode_lib.py", + "tests/test_descriptor_catalog.py", + "tests/test_ctk_root_discovery.py", + "tests/test_optional_cuda_import.py", + "tests/test_find_nvidia_headers.py", + "tests/test_lib_descriptor.py", + "tests/test_search_steps.py", + "tests/child_load_nvidia_dynamic_lib_helper.py", + "tests/conftest.py", + "tests/test_find_static_lib.py", + "tests/test_utils_driver_info.py", + "tests/local_helpers.py", + "tests/test_driver_lib_loading.py", + "tests/test_load_nvidia_dynamic_lib_subprocess.py" + ] +} diff --git a/venv/lib/python3.11/site-packages/cuda_pathfinder-1.6.0.dist-info/scm_version.json b/venv/lib/python3.11/site-packages/cuda_pathfinder-1.6.0.dist-info/scm_version.json new file mode 100644 index 0000000000000000000000000000000000000000..be1e8dee4842ade8147266df23abb7f590565bac --- /dev/null +++ b/venv/lib/python3.11/site-packages/cuda_pathfinder-1.6.0.dist-info/scm_version.json @@ -0,0 +1,8 @@ +{ + "tag": "1.6.0", + "distance": 0, + "node": "gdb347c90", + "dirty": false, + "branch": "HEAD", + "node_date": "2026-07-21" +} diff --git a/venv/lib/python3.11/site-packages/cuda_pathfinder-1.6.0.dist-info/top_level.txt b/venv/lib/python3.11/site-packages/cuda_pathfinder-1.6.0.dist-info/top_level.txt new file mode 100644 index 0000000000000000000000000000000000000000..089f044f442ab95aabf9de9eb52b63efbac9f7b9 --- /dev/null +++ b/venv/lib/python3.11/site-packages/cuda_pathfinder-1.6.0.dist-info/top_level.txt @@ -0,0 +1 @@ +cuda diff --git a/venv/lib/python3.11/site-packages/cuda_toolkit-13.0.3.0.dist-info/INSTALLER b/venv/lib/python3.11/site-packages/cuda_toolkit-13.0.3.0.dist-info/INSTALLER new file mode 100644 index 0000000000000000000000000000000000000000..5c69047b2eb8235994febeeae1da4a82365a240a --- /dev/null +++ b/venv/lib/python3.11/site-packages/cuda_toolkit-13.0.3.0.dist-info/INSTALLER @@ -0,0 +1 @@ +uv \ No newline at end of file diff --git a/venv/lib/python3.11/site-packages/cuda_toolkit-13.0.3.0.dist-info/METADATA b/venv/lib/python3.11/site-packages/cuda_toolkit-13.0.3.0.dist-info/METADATA new file mode 100644 index 0000000000000000000000000000000000000000..11775af4f8bc770fdfb35f127722efe7d09ce7fd --- /dev/null +++ b/venv/lib/python3.11/site-packages/cuda_toolkit-13.0.3.0.dist-info/METADATA @@ -0,0 +1,160 @@ +Metadata-Version: 2.4 +Name: cuda-toolkit +Version: 13.0.3.0 +Summary: CUDA Toolkit meta-package +Project-URL: homepage, https://developer.nvidia.com/cuda-toolkit +Project-URL: documentation, https://docs.nvidia.com/cuda/ +Author-email: NVIDIA Kitmaker Team +Keywords: cuda,nvidia +Classifier: Development Status :: 6 - Mature +Classifier: Environment :: GPU +Classifier: Environment :: GPU :: NVIDIA CUDA +Provides-Extra: all +Requires-Dist: nvidia-cublas==13.1.1.3.*; (sys_platform == 'linux' and platform_machine == 'aarch64' or sys_platform == 'linux' and platform_machine == 'x86_64' or sys_platform == 'win32' and platform_machine == 'AMD64') and extra == 'all' +Requires-Dist: nvidia-cuda-cccl==13.0.85.*; (sys_platform == 'linux' and platform_machine == 'aarch64' or sys_platform == 'linux' and platform_machine == 'x86_64' or sys_platform == 'win32' and platform_machine == 'AMD64') and extra == 'all' +Requires-Dist: nvidia-cuda-crt==13.0.88.*; (sys_platform == 'linux' and platform_machine == 'aarch64' or sys_platform == 'linux' and platform_machine == 'x86_64' or sys_platform == 'win32' and platform_machine == 'AMD64') and extra == 'all' +Requires-Dist: nvidia-cuda-culibos==13.0.85.*; (sys_platform == 'linux' and platform_machine == 'aarch64' or sys_platform == 'linux' and platform_machine == 'x86_64') and extra == 'all' +Requires-Dist: nvidia-cuda-cupti==13.0.85.*; (sys_platform == 'linux' and platform_machine == 'aarch64' or sys_platform == 'linux' and platform_machine == 'x86_64' or sys_platform == 'win32' and platform_machine == 'AMD64') and extra == 'all' +Requires-Dist: nvidia-cuda-cuxxfilt==13.0.85.*; (sys_platform == 'linux' and platform_machine == 'aarch64' or sys_platform == 'linux' and platform_machine == 'x86_64' or sys_platform == 'win32' and platform_machine == 'AMD64') and extra == 'all' +Requires-Dist: nvidia-cuda-nvcc==13.0.88.*; (sys_platform == 'linux' and platform_machine == 'aarch64' or sys_platform == 'linux' and platform_machine == 'x86_64' or sys_platform == 'win32' and platform_machine == 'AMD64') and extra == 'all' +Requires-Dist: nvidia-cuda-nvrtc==13.0.88.*; (sys_platform == 'linux' and platform_machine == 'aarch64' or sys_platform == 'linux' and platform_machine == 'x86_64' or sys_platform == 'win32' and platform_machine == 'AMD64') and extra == 'all' +Requires-Dist: nvidia-cuda-opencl==13.0.85.*; (sys_platform == 'linux' and platform_machine == 'x86_64' or sys_platform == 'win32' and platform_machine == 'AMD64') and extra == 'all' +Requires-Dist: nvidia-cuda-profiler-api==13.0.85.*; (sys_platform == 'linux' and platform_machine == 'aarch64' or sys_platform == 'linux' and platform_machine == 'x86_64' or sys_platform == 'win32' and platform_machine == 'AMD64') and extra == 'all' +Requires-Dist: nvidia-cuda-runtime==13.0.96.*; (sys_platform == 'linux' and platform_machine == 'aarch64' or sys_platform == 'linux' and platform_machine == 'x86_64' or sys_platform == 'win32' and platform_machine == 'AMD64') and extra == 'all' +Requires-Dist: nvidia-cuda-sanitizer-api==13.0.85.*; (sys_platform == 'linux' and platform_machine == 'aarch64' or sys_platform == 'linux' and platform_machine == 'x86_64' or sys_platform == 'win32' and platform_machine == 'AMD64') and extra == 'all' +Requires-Dist: nvidia-cufft==12.0.0.61.*; (sys_platform == 'linux' and platform_machine == 'aarch64' or sys_platform == 'linux' and platform_machine == 'x86_64' or sys_platform == 'win32' and platform_machine == 'AMD64') and extra == 'all' +Requires-Dist: nvidia-cufile==1.15.1.6.*; (sys_platform == 'linux' and platform_machine == 'aarch64' or sys_platform == 'linux' and platform_machine == 'x86_64') and extra == 'all' +Requires-Dist: nvidia-curand==10.4.0.35.*; (sys_platform == 'linux' and platform_machine == 'aarch64' or sys_platform == 'linux' and platform_machine == 'x86_64' or sys_platform == 'win32' and platform_machine == 'AMD64') and extra == 'all' +Requires-Dist: nvidia-cusolver==12.0.4.66.*; (sys_platform == 'linux' and platform_machine == 'aarch64' or sys_platform == 'linux' and platform_machine == 'x86_64' or sys_platform == 'win32' and platform_machine == 'AMD64') and extra == 'all' +Requires-Dist: nvidia-cusparse==12.6.3.3.*; (sys_platform == 'linux' and platform_machine == 'aarch64' or sys_platform == 'linux' and platform_machine == 'x86_64' or sys_platform == 'win32' and platform_machine == 'AMD64') and extra == 'all' +Requires-Dist: nvidia-npp==13.0.1.2.*; (sys_platform == 'linux' and platform_machine == 'aarch64' or sys_platform == 'linux' and platform_machine == 'x86_64' or sys_platform == 'win32' and platform_machine == 'AMD64') and extra == 'all' +Requires-Dist: nvidia-nvfatbin==13.0.85.*; (sys_platform == 'linux' and platform_machine == 'aarch64' or sys_platform == 'linux' and platform_machine == 'x86_64' or sys_platform == 'win32' and platform_machine == 'AMD64') and extra == 'all' +Requires-Dist: nvidia-nvjitlink<14,>=13.0.88; (sys_platform == 'linux' and platform_machine == 'aarch64' or sys_platform == 'linux' and platform_machine == 'x86_64' or sys_platform == 'win32' and platform_machine == 'AMD64') and extra == 'all' +Requires-Dist: nvidia-nvjpeg==13.0.1.86.*; (sys_platform == 'linux' and platform_machine == 'aarch64' or sys_platform == 'linux' and platform_machine == 'x86_64' or sys_platform == 'win32' and platform_machine == 'AMD64') and extra == 'all' +Requires-Dist: nvidia-nvml-dev==13.0.87.*; (sys_platform == 'linux' and platform_machine == 'aarch64' or sys_platform == 'linux' and platform_machine == 'x86_64' or sys_platform == 'win32' and platform_machine == 'AMD64') and extra == 'all' +Requires-Dist: nvidia-nvptxcompiler==13.0.88.*; (sys_platform == 'linux' and platform_machine == 'aarch64' or sys_platform == 'linux' and platform_machine == 'x86_64' or sys_platform == 'win32' and platform_machine == 'AMD64') and extra == 'all' +Requires-Dist: nvidia-nvtx==13.0.85.*; (sys_platform == 'linux' and platform_machine == 'aarch64' or sys_platform == 'linux' and platform_machine == 'x86_64' or sys_platform == 'win32' and platform_machine == 'AMD64') and extra == 'all' +Requires-Dist: nvidia-nvvm==13.0.88.*; (sys_platform == 'linux' and platform_machine == 'aarch64' or sys_platform == 'linux' and platform_machine == 'x86_64' or sys_platform == 'win32' and platform_machine == 'AMD64') and extra == 'all' +Provides-Extra: cccl +Requires-Dist: nvidia-cuda-cccl==13.0.85.*; (sys_platform == 'linux' and platform_machine == 'aarch64' or sys_platform == 'linux' and platform_machine == 'x86_64' or sys_platform == 'win32' and platform_machine == 'AMD64') and extra == 'cccl' +Provides-Extra: crt +Requires-Dist: nvidia-cuda-crt==13.0.88.*; (sys_platform == 'linux' and platform_machine == 'aarch64' or sys_platform == 'linux' and platform_machine == 'x86_64' or sys_platform == 'win32' and platform_machine == 'AMD64') and extra == 'crt' +Provides-Extra: cublas +Requires-Dist: nvidia-cublas==13.1.1.3.*; (sys_platform == 'linux' and platform_machine == 'aarch64' or sys_platform == 'linux' and platform_machine == 'x86_64' or sys_platform == 'win32' and platform_machine == 'AMD64') and extra == 'cublas' +Requires-Dist: nvidia-cuda-nvrtc==13.0.88.*; (sys_platform == 'linux' and platform_machine == 'aarch64' or sys_platform == 'linux' and platform_machine == 'x86_64' or sys_platform == 'win32' and platform_machine == 'AMD64') and extra == 'cublas' +Provides-Extra: cudart +Requires-Dist: nvidia-cuda-runtime==13.0.96.*; (sys_platform == 'linux' and platform_machine == 'aarch64' or sys_platform == 'linux' and platform_machine == 'x86_64' or sys_platform == 'win32' and platform_machine == 'AMD64') and extra == 'cudart' +Provides-Extra: cufft +Requires-Dist: nvidia-cufft==12.0.0.61.*; (sys_platform == 'linux' and platform_machine == 'aarch64' or sys_platform == 'linux' and platform_machine == 'x86_64' or sys_platform == 'win32' and platform_machine == 'AMD64') and extra == 'cufft' +Requires-Dist: nvidia-nvjitlink<14,>=13.0.88; (sys_platform == 'linux' and platform_machine == 'aarch64' or sys_platform == 'linux' and platform_machine == 'x86_64' or sys_platform == 'win32' and platform_machine == 'AMD64') and extra == 'cufft' +Provides-Extra: cufile +Requires-Dist: nvidia-cufile==1.15.1.6.*; (sys_platform == 'linux' and platform_machine == 'aarch64' or sys_platform == 'linux' and platform_machine == 'x86_64') and extra == 'cufile' +Provides-Extra: culibos +Requires-Dist: nvidia-cuda-culibos==13.0.85.*; (sys_platform == 'linux' and platform_machine == 'aarch64' or sys_platform == 'linux' and platform_machine == 'x86_64') and extra == 'culibos' +Provides-Extra: cupti +Requires-Dist: nvidia-cuda-cupti==13.0.85.*; (sys_platform == 'linux' and platform_machine == 'aarch64' or sys_platform == 'linux' and platform_machine == 'x86_64' or sys_platform == 'win32' and platform_machine == 'AMD64') and extra == 'cupti' +Provides-Extra: curand +Requires-Dist: nvidia-curand==10.4.0.35.*; (sys_platform == 'linux' and platform_machine == 'aarch64' or sys_platform == 'linux' and platform_machine == 'x86_64' or sys_platform == 'win32' and platform_machine == 'AMD64') and extra == 'curand' +Provides-Extra: cusolver +Requires-Dist: nvidia-cublas==13.1.1.3.*; (sys_platform == 'linux' and platform_machine == 'aarch64' or sys_platform == 'linux' and platform_machine == 'x86_64' or sys_platform == 'win32' and platform_machine == 'AMD64') and extra == 'cusolver' +Requires-Dist: nvidia-cusolver==12.0.4.66.*; (sys_platform == 'linux' and platform_machine == 'aarch64' or sys_platform == 'linux' and platform_machine == 'x86_64' or sys_platform == 'win32' and platform_machine == 'AMD64') and extra == 'cusolver' +Requires-Dist: nvidia-cusparse==12.6.3.3.*; (sys_platform == 'linux' and platform_machine == 'aarch64' or sys_platform == 'linux' and platform_machine == 'x86_64' or sys_platform == 'win32' and platform_machine == 'AMD64') and extra == 'cusolver' +Requires-Dist: nvidia-nvjitlink<14,>=13.0.88; (sys_platform == 'linux' and platform_machine == 'aarch64' or sys_platform == 'linux' and platform_machine == 'x86_64' or sys_platform == 'win32' and platform_machine == 'AMD64') and extra == 'cusolver' +Provides-Extra: cusparse +Requires-Dist: nvidia-cusparse==12.6.3.3.*; (sys_platform == 'linux' and platform_machine == 'aarch64' or sys_platform == 'linux' and platform_machine == 'x86_64' or sys_platform == 'win32' and platform_machine == 'AMD64') and extra == 'cusparse' +Requires-Dist: nvidia-nvjitlink<14,>=13.0.88; (sys_platform == 'linux' and platform_machine == 'aarch64' or sys_platform == 'linux' and platform_machine == 'x86_64' or sys_platform == 'win32' and platform_machine == 'AMD64') and extra == 'cusparse' +Provides-Extra: cuxxfilt +Requires-Dist: nvidia-cuda-cuxxfilt==13.0.85.*; (sys_platform == 'linux' and platform_machine == 'aarch64' or sys_platform == 'linux' and platform_machine == 'x86_64' or sys_platform == 'win32' and platform_machine == 'AMD64') and extra == 'cuxxfilt' +Provides-Extra: npp +Requires-Dist: nvidia-npp==13.0.1.2.*; (sys_platform == 'linux' and platform_machine == 'aarch64' or sys_platform == 'linux' and platform_machine == 'x86_64' or sys_platform == 'win32' and platform_machine == 'AMD64') and extra == 'npp' +Provides-Extra: nvcc +Requires-Dist: nvidia-cuda-crt==13.0.88.*; (sys_platform == 'linux' and platform_machine == 'aarch64' or sys_platform == 'linux' and platform_machine == 'x86_64' or sys_platform == 'win32' and platform_machine == 'AMD64') and extra == 'nvcc' +Requires-Dist: nvidia-cuda-nvcc==13.0.88.*; (sys_platform == 'linux' and platform_machine == 'aarch64' or sys_platform == 'linux' and platform_machine == 'x86_64' or sys_platform == 'win32' and platform_machine == 'AMD64') and extra == 'nvcc' +Requires-Dist: nvidia-cuda-runtime==13.0.96.*; (sys_platform == 'linux' and platform_machine == 'aarch64' or sys_platform == 'linux' and platform_machine == 'x86_64' or sys_platform == 'win32' and platform_machine == 'AMD64') and extra == 'nvcc' +Requires-Dist: nvidia-nvvm==13.0.88.*; (sys_platform == 'linux' and platform_machine == 'aarch64' or sys_platform == 'linux' and platform_machine == 'x86_64' or sys_platform == 'win32' and platform_machine == 'AMD64') and extra == 'nvcc' +Provides-Extra: nvfatbin +Requires-Dist: nvidia-nvfatbin==13.0.85.*; (sys_platform == 'linux' and platform_machine == 'aarch64' or sys_platform == 'linux' and platform_machine == 'x86_64' or sys_platform == 'win32' and platform_machine == 'AMD64') and extra == 'nvfatbin' +Provides-Extra: nvjitlink +Requires-Dist: nvidia-nvjitlink<14,>=13.0.88; (sys_platform == 'linux' and platform_machine == 'aarch64' or sys_platform == 'linux' and platform_machine == 'x86_64' or sys_platform == 'win32' and platform_machine == 'AMD64') and extra == 'nvjitlink' +Provides-Extra: nvjpeg +Requires-Dist: nvidia-nvjpeg==13.0.1.86.*; (sys_platform == 'linux' and platform_machine == 'aarch64' or sys_platform == 'linux' and platform_machine == 'x86_64' or sys_platform == 'win32' and platform_machine == 'AMD64') and extra == 'nvjpeg' +Provides-Extra: nvml +Requires-Dist: nvidia-nvml-dev==13.0.87.*; (sys_platform == 'linux' and platform_machine == 'aarch64' or sys_platform == 'linux' and platform_machine == 'x86_64' or sys_platform == 'win32' and platform_machine == 'AMD64') and extra == 'nvml' +Provides-Extra: nvptxcompiler +Requires-Dist: nvidia-nvptxcompiler==13.0.88.*; (sys_platform == 'linux' and platform_machine == 'aarch64' or sys_platform == 'linux' and platform_machine == 'x86_64' or sys_platform == 'win32' and platform_machine == 'AMD64') and extra == 'nvptxcompiler' +Provides-Extra: nvrtc +Requires-Dist: nvidia-cuda-nvrtc==13.0.88.*; (sys_platform == 'linux' and platform_machine == 'aarch64' or sys_platform == 'linux' and platform_machine == 'x86_64' or sys_platform == 'win32' and platform_machine == 'AMD64') and extra == 'nvrtc' +Provides-Extra: nvtx +Requires-Dist: nvidia-nvtx==13.0.85.*; (sys_platform == 'linux' and platform_machine == 'aarch64' or sys_platform == 'linux' and platform_machine == 'x86_64' or sys_platform == 'win32' and platform_machine == 'AMD64') and extra == 'nvtx' +Provides-Extra: nvvm +Requires-Dist: nvidia-nvvm==13.0.88.*; (sys_platform == 'linux' and platform_machine == 'aarch64' or sys_platform == 'linux' and platform_machine == 'x86_64' or sys_platform == 'win32' and platform_machine == 'AMD64') and extra == 'nvvm' +Provides-Extra: opencl +Requires-Dist: nvidia-cuda-opencl==13.0.85.*; (sys_platform == 'linux' and platform_machine == 'x86_64' or sys_platform == 'win32' and platform_machine == 'AMD64') and extra == 'opencl' +Provides-Extra: profiler +Requires-Dist: nvidia-cuda-profiler-api==13.0.85.*; (sys_platform == 'linux' and platform_machine == 'aarch64' or sys_platform == 'linux' and platform_machine == 'x86_64' or sys_platform == 'win32' and platform_machine == 'AMD64') and extra == 'profiler' +Provides-Extra: sanitizer +Requires-Dist: nvidia-cuda-sanitizer-api==13.0.85.*; (sys_platform == 'linux' and platform_machine == 'aarch64' or sys_platform == 'linux' and platform_machine == 'x86_64' or sys_platform == 'win32' and platform_machine == 'AMD64') and extra == 'sanitizer' +Description-Content-Type: text/markdown + +# cuda-toolkit 13.0.3 + +### [NVIDIA CUDA Toolkit](https://developer.nvidia.com/cuda-toolkit) + +> The NVIDIA CUDA Toolkit provides a development environment for creating high-performance, GPU-accelerated applications. With it, you can develop, optimize, and deploy your applications on GPU-accelerated embedded systems, desktop workstations, enterprise data centers, cloud-based platforms, and supercomputers. The toolkit includes GPU-accelerated libraries, debugging and optimization tools, a C/C++ compiler, and a runtime library. + +### `cuda-toolkit` package + +The `cuda-toolkit` package is a meta-package (a package that contains no software and only installs other packages) to install all or part of the NVIDIA CUDA Toolkit. + +For instructions on how to use the `cuda-toolkit` package, please refer to the [NVIDIA CUDA Toolkit documentation](https://docs.nvidia.com/cuda/) and follow the installation guide for your platform. A summary of usage is also available below. + +### Using the `cuda-toolkit` package + +The `cuda-toolkit` package uses package extras to install all or part of the CUDA Toolkit. +Some examples of using the `cuda-toolkit` meta-package with extras: + +Install all of the CUDA Toolkit +``` +pip install cuda-toolkit[all] +``` + +Install just the CUDA Runtime +``` +pip install cuda-toolkit[cudart] +``` + +Install cuBLAS, cuSOLVER, and cuSPARSE +``` +pip install cuda-toolkit[cublas,cusolver,cusparse] +``` + +### Available extras + +| Extra | Package | Version | +|-------|---------|---------| +| `all` | All packages below | | +| cccl | nvidia-cuda-cccl | 13.0.85. | +| crt | nvidia-cuda-crt | 13.0.88. | +| cublas | nvidia-cublas | 13.1.1.3. | +| cudart | nvidia-cuda-runtime | 13.0.96. | +| cufft | nvidia-cufft | 12.0.0.61. | +| cufile | nvidia-cufile | 1.15.1.6. | +| culibos | nvidia-cuda-culibos | 13.0.85. | +| cupti | nvidia-cuda-cupti | 13.0.85. | +| curand | nvidia-curand | 10.4.0.35. | +| cusolver | nvidia-cusolver | 12.0.4.66. | +| cusparse | nvidia-cusparse | 12.6.3.3. | +| cuxxfilt | nvidia-cuda-cuxxfilt | 13.0.85. | +| npp | nvidia-npp | 13.0.1.2. | +| nvcc | nvidia-cuda-nvcc | 13.0.88. | +| nvfatbin | nvidia-nvfatbin | 13.0.85. | +| nvjitlink | nvidia-nvjitlink | 13.0.88 | +| nvjpeg | nvidia-nvjpeg | 13.0.1.86. | +| nvml | nvidia-nvml-dev | 13.0.87. | +| nvptxcompiler | nvidia-nvptxcompiler | 13.0.88. | +| nvrtc | nvidia-cuda-nvrtc | 13.0.88. | +| nvtx | nvidia-nvtx | 13.0.85. | +| nvvm | nvidia-nvvm | 13.0.88. | +| opencl | nvidia-cuda-opencl | 13.0.85. | +| profiler | nvidia-cuda-profiler-api | 13.0.85. | +| sanitizer | nvidia-cuda-sanitizer-api | 13.0.85. | \ No newline at end of file diff --git a/venv/lib/python3.11/site-packages/cuda_toolkit-13.0.3.0.dist-info/RECORD b/venv/lib/python3.11/site-packages/cuda_toolkit-13.0.3.0.dist-info/RECORD new file mode 100644 index 0000000000000000000000000000000000000000..ccbdb4f492001fa735b3bf62d9bf5cb48023de6b --- /dev/null +++ b/venv/lib/python3.11/site-packages/cuda_toolkit-13.0.3.0.dist-info/RECORD @@ -0,0 +1,5 @@ +cuda_toolkit-13.0.3.0.dist-info/INSTALLER,sha256=5hhM4Q4mYTT9z6QB6PGpUAW81PGNFrYrdXMj4oM_6ak,2 +cuda_toolkit-13.0.3.0.dist-info/METADATA,sha256=Pii_ABOujbjPhjrjkolySPSh_2yUb-lmVH_UtsRMAFc,17687 +cuda_toolkit-13.0.3.0.dist-info/RECORD,, +cuda_toolkit-13.0.3.0.dist-info/REQUESTED,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0 +cuda_toolkit-13.0.3.0.dist-info/WHEEL,sha256=e22IIVjxDyt0lABi4WpktFIGsmO_ebSDXLnPUbPK0E0,105 diff --git a/venv/lib/python3.11/site-packages/cuda_toolkit-13.0.3.0.dist-info/REQUESTED b/venv/lib/python3.11/site-packages/cuda_toolkit-13.0.3.0.dist-info/REQUESTED new file mode 100644 index 0000000000000000000000000000000000000000..e69de29bb2d1d6434b8b29ae775ad8c2e48c5391 diff --git a/venv/lib/python3.11/site-packages/cuda_toolkit-13.0.3.0.dist-info/WHEEL b/venv/lib/python3.11/site-packages/cuda_toolkit-13.0.3.0.dist-info/WHEEL new file mode 100644 index 0000000000000000000000000000000000000000..d35cde4d0dc1dfd99182b6d7ca0ea087860a3b10 --- /dev/null +++ b/venv/lib/python3.11/site-packages/cuda_toolkit-13.0.3.0.dist-info/WHEEL @@ -0,0 +1,5 @@ +Wheel-Version: 1.0 +Generator: hatchling 1.29.0 +Root-Is-Purelib: true +Tag: py2-none-any +Tag: py3-none-any diff --git a/venv/lib/python3.11/site-packages/cv2/Error/__init__.pyi b/venv/lib/python3.11/site-packages/cv2/Error/__init__.pyi new file mode 100644 index 0000000000000000000000000000000000000000..5dac858f382c3247ff0ce2b204af1ddcd10dace5 --- /dev/null +++ b/venv/lib/python3.11/site-packages/cv2/Error/__init__.pyi @@ -0,0 +1,118 @@ +__all__: list[str] = [] + +# Enumerations +StsOk: int +STS_OK: int +StsBackTrace: int +STS_BACK_TRACE: int +StsError: int +STS_ERROR: int +StsInternal: int +STS_INTERNAL: int +StsNoMem: int +STS_NO_MEM: int +StsBadArg: int +STS_BAD_ARG: int +StsBadFunc: int +STS_BAD_FUNC: int +StsNoConv: int +STS_NO_CONV: int +StsAutoTrace: int +STS_AUTO_TRACE: int +HeaderIsNull: int +HEADER_IS_NULL: int +BadImageSize: int +BAD_IMAGE_SIZE: int +BadOffset: int +BAD_OFFSET: int +BadDataPtr: int +BAD_DATA_PTR: int +BadStep: int +BAD_STEP: int +BadModelOrChSeq: int +BAD_MODEL_OR_CH_SEQ: int +BadNumChannels: int +BAD_NUM_CHANNELS: int +BadNumChannel1U: int +BAD_NUM_CHANNEL1U: int +BadDepth: int +BAD_DEPTH: int +BadAlphaChannel: int +BAD_ALPHA_CHANNEL: int +BadOrder: int +BAD_ORDER: int +BadOrigin: int +BAD_ORIGIN: int +BadAlign: int +BAD_ALIGN: int +BadCallBack: int +BAD_CALL_BACK: int +BadTileSize: int +BAD_TILE_SIZE: int +BadCOI: int +BAD_COI: int +BadROISize: int +BAD_ROISIZE: int +MaskIsTiled: int +MASK_IS_TILED: int +StsNullPtr: int +STS_NULL_PTR: int +StsVecLengthErr: int +STS_VEC_LENGTH_ERR: int +StsFilterStructContentErr: int +STS_FILTER_STRUCT_CONTENT_ERR: int +StsKernelStructContentErr: int +STS_KERNEL_STRUCT_CONTENT_ERR: int +StsFilterOffsetErr: int +STS_FILTER_OFFSET_ERR: int +StsBadSize: int +STS_BAD_SIZE: int +StsDivByZero: int +STS_DIV_BY_ZERO: int +StsInplaceNotSupported: int +STS_INPLACE_NOT_SUPPORTED: int +StsObjectNotFound: int +STS_OBJECT_NOT_FOUND: int +StsUnmatchedFormats: int +STS_UNMATCHED_FORMATS: int +StsBadFlag: int +STS_BAD_FLAG: int +StsBadPoint: int +STS_BAD_POINT: int +StsBadMask: int +STS_BAD_MASK: int +StsUnmatchedSizes: int +STS_UNMATCHED_SIZES: int +StsUnsupportedFormat: int +STS_UNSUPPORTED_FORMAT: int +StsOutOfRange: int +STS_OUT_OF_RANGE: int +StsParseError: int +STS_PARSE_ERROR: int +StsNotImplemented: int +STS_NOT_IMPLEMENTED: int +StsBadMemBlock: int +STS_BAD_MEM_BLOCK: int +StsAssert: int +STS_ASSERT: int +GpuNotSupported: int +GPU_NOT_SUPPORTED: int +GpuApiCallError: int +GPU_API_CALL_ERROR: int +OpenGlNotSupported: int +OPEN_GL_NOT_SUPPORTED: int +OpenGlApiCallError: int +OPEN_GL_API_CALL_ERROR: int +OpenCLApiCallError: int +OPEN_CLAPI_CALL_ERROR: int +OpenCLDoubleNotSupported: int +OPEN_CLDOUBLE_NOT_SUPPORTED: int +OpenCLInitError: int +OPEN_CLINIT_ERROR: int +OpenCLNoAMDBlasFft: int +OPEN_CLNO_AMDBLAS_FFT: int +Code = int +"""One of [StsOk, STS_OK, StsBackTrace, STS_BACK_TRACE, StsError, STS_ERROR, StsInternal, STS_INTERNAL, StsNoMem, STS_NO_MEM, StsBadArg, STS_BAD_ARG, StsBadFunc, STS_BAD_FUNC, StsNoConv, STS_NO_CONV, StsAutoTrace, STS_AUTO_TRACE, HeaderIsNull, HEADER_IS_NULL, BadImageSize, BAD_IMAGE_SIZE, BadOffset, BAD_OFFSET, BadDataPtr, BAD_DATA_PTR, BadStep, BAD_STEP, BadModelOrChSeq, BAD_MODEL_OR_CH_SEQ, BadNumChannels, BAD_NUM_CHANNELS, BadNumChannel1U, BAD_NUM_CHANNEL1U, BadDepth, BAD_DEPTH, BadAlphaChannel, BAD_ALPHA_CHANNEL, BadOrder, BAD_ORDER, BadOrigin, BAD_ORIGIN, BadAlign, BAD_ALIGN, BadCallBack, BAD_CALL_BACK, BadTileSize, BAD_TILE_SIZE, BadCOI, BAD_COI, BadROISize, BAD_ROISIZE, MaskIsTiled, MASK_IS_TILED, StsNullPtr, STS_NULL_PTR, StsVecLengthErr, STS_VEC_LENGTH_ERR, StsFilterStructContentErr, STS_FILTER_STRUCT_CONTENT_ERR, StsKernelStructContentErr, STS_KERNEL_STRUCT_CONTENT_ERR, StsFilterOffsetErr, STS_FILTER_OFFSET_ERR, StsBadSize, STS_BAD_SIZE, StsDivByZero, STS_DIV_BY_ZERO, StsInplaceNotSupported, STS_INPLACE_NOT_SUPPORTED, StsObjectNotFound, STS_OBJECT_NOT_FOUND, StsUnmatchedFormats, STS_UNMATCHED_FORMATS, StsBadFlag, STS_BAD_FLAG, StsBadPoint, STS_BAD_POINT, StsBadMask, STS_BAD_MASK, StsUnmatchedSizes, STS_UNMATCHED_SIZES, StsUnsupportedFormat, STS_UNSUPPORTED_FORMAT, StsOutOfRange, STS_OUT_OF_RANGE, StsParseError, STS_PARSE_ERROR, StsNotImplemented, STS_NOT_IMPLEMENTED, StsBadMemBlock, STS_BAD_MEM_BLOCK, StsAssert, STS_ASSERT, GpuNotSupported, GPU_NOT_SUPPORTED, GpuApiCallError, GPU_API_CALL_ERROR, OpenGlNotSupported, OPEN_GL_NOT_SUPPORTED, OpenGlApiCallError, OPEN_GL_API_CALL_ERROR, OpenCLApiCallError, OPEN_CLAPI_CALL_ERROR, OpenCLDoubleNotSupported, OPEN_CLDOUBLE_NOT_SUPPORTED, OpenCLInitError, OPEN_CLINIT_ERROR, OpenCLNoAMDBlasFft, OPEN_CLNO_AMDBLAS_FFT]""" + + + diff --git a/venv/lib/python3.11/site-packages/cv2/LICENSE-3RD-PARTY.txt b/venv/lib/python3.11/site-packages/cv2/LICENSE-3RD-PARTY.txt new file mode 100644 index 0000000000000000000000000000000000000000..0462eee383c3d7d24ad85bf75c4024caa4634e34 --- /dev/null +++ b/venv/lib/python3.11/site-packages/cv2/LICENSE-3RD-PARTY.txt @@ -0,0 +1,3090 @@ +OpenCV library is redistributed within opencv-python package. +This license applies to OpenCV binary in the directory cv2/. + + + Apache License + Version 2.0, January 2004 + http://www.apache.org/licenses/ + + TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION + + 1. Definitions. + + "License" shall mean the terms and conditions for use, reproduction, + and distribution as defined by Sections 1 through 9 of this document. + + "Licensor" shall mean the copyright owner or entity authorized by + the copyright owner that is granting the License. + + "Legal Entity" shall mean the union of the acting entity and all + other entities that control, are controlled by, or are under common + control with that entity. For the purposes of this definition, + "control" means (i) the power, direct or indirect, to cause the + direction or management of such entity, whether by contract or + otherwise, or (ii) ownership of fifty percent (50%) or more of the + outstanding shares, or (iii) beneficial ownership of such entity. + + "You" (or "Your") shall mean an individual or Legal Entity + exercising permissions granted by this License. + + "Source" form shall mean the preferred form for making modifications, + including but not limited to software source code, documentation + source, and configuration files. + + "Object" form shall mean any form resulting from mechanical + transformation or translation of a Source form, including but + not limited to compiled object code, generated documentation, + and conversions to other media types. + + "Work" shall mean the work of authorship, whether in Source or + Object form, made available under the License, as indicated by a + copyright notice that is included in or attached to the work + (an example is provided in the Appendix below). + + "Derivative Works" shall mean any work, whether in Source or Object + form, that is based on (or derived from) the Work and for which the + editorial revisions, annotations, elaborations, or other modifications + represent, as a whole, an original work of authorship. For the purposes + of this License, Derivative Works shall not include works that remain + separable from, or merely link (or bind by name) to the interfaces of, + the Work and Derivative Works thereof. + + "Contribution" shall mean any work of authorship, including + the original version of the Work and any modifications or additions + to that Work or Derivative Works thereof, that is intentionally + submitted to Licensor for inclusion in the Work by the copyright owner + or by an individual or Legal Entity authorized to submit on behalf of + the copyright owner. For the purposes of this definition, "submitted" + means any form of electronic, verbal, or written communication sent + to the Licensor or its representatives, including but not limited to + communication on electronic mailing lists, source code control systems, + and issue tracking systems that are managed by, or on behalf of, the + Licensor for the purpose of discussing and improving the Work, but + excluding communication that is conspicuously marked or otherwise + designated in writing by the copyright owner as "Not a Contribution." + + "Contributor" shall mean Licensor and any individual or Legal Entity + on behalf of whom a Contribution has been received by Licensor and + subsequently incorporated within the Work. + + 2. Grant of Copyright License. Subject to the terms and conditions of + this License, each Contributor hereby grants to You a perpetual, + worldwide, non-exclusive, no-charge, royalty-free, irrevocable + copyright license to reproduce, prepare Derivative Works of, + publicly display, publicly perform, sublicense, and distribute the + Work and such Derivative Works in Source or Object form. + + 3. Grant of Patent License. Subject to the terms and conditions of + this License, each Contributor hereby grants to You a perpetual, + worldwide, non-exclusive, no-charge, royalty-free, irrevocable + (except as stated in this section) patent license to make, have made, + use, offer to sell, sell, import, and otherwise transfer the Work, + where such license applies only to those patent claims licensable + by such Contributor that are necessarily infringed by their + Contribution(s) alone or by combination of their Contribution(s) + with the Work to which such Contribution(s) was submitted. If You + institute patent litigation against any entity (including a + cross-claim or counterclaim in a lawsuit) alleging that the Work + or a Contribution incorporated within the Work constitutes direct + or contributory patent infringement, then any patent licenses + granted to You under this License for that Work shall terminate + as of the date such litigation is filed. + + 4. Redistribution. You may reproduce and distribute copies of the + Work or Derivative Works thereof in any medium, with or without + modifications, and in Source or Object form, provided that You + meet the following conditions: + + (a) You must give any other recipients of the Work or + Derivative Works a copy of this License; and + + (b) You must cause any modified files to carry prominent notices + stating that You changed the files; and + + (c) You must retain, in the Source form of any Derivative Works + that You distribute, all copyright, patent, trademark, and + attribution notices from the Source form of the Work, + excluding those notices that do not pertain to any part of + the Derivative Works; and + + (d) If the Work includes a "NOTICE" text file as part of its + distribution, then any Derivative Works that You distribute must + include a readable copy of the attribution notices contained + within such NOTICE file, excluding those notices that do not + pertain to any part of the Derivative Works, in at least one + of the following places: within a NOTICE text file distributed + as part of the Derivative Works; within the Source form or + documentation, if provided along with the Derivative Works; or, + within a display generated by the Derivative Works, if and + wherever such third-party notices normally appear. The contents + of the NOTICE file are for informational purposes only and + do not modify the License. You may add Your own attribution + notices within Derivative Works that You distribute, alongside + or as an addendum to the NOTICE text from the Work, provided + that such additional attribution notices cannot be construed + as modifying the License. + + You may add Your own copyright statement to Your modifications and + may provide additional or different license terms and conditions + for use, reproduction, or distribution of Your modifications, or + for any such Derivative Works as a whole, provided Your use, + reproduction, and distribution of the Work otherwise complies with + the conditions stated in this License. + + 5. Submission of Contributions. Unless You explicitly state otherwise, + any Contribution intentionally submitted for inclusion in the Work + by You to the Licensor shall be under the terms and conditions of + this License, without any additional terms or conditions. + Notwithstanding the above, nothing herein shall supersede or modify + the terms of any separate license agreement you may have executed + with Licensor regarding such Contributions. + + 6. Trademarks. This License does not grant permission to use the trade + names, trademarks, service marks, or product names of the Licensor, + except as required for reasonable and customary use in describing the + origin of the Work and reproducing the content of the NOTICE file. + + 7. Disclaimer of Warranty. Unless required by applicable law or + agreed to in writing, Licensor provides the Work (and each + Contributor provides its Contributions) on an "AS IS" BASIS, + WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or + implied, including, without limitation, any warranties or conditions + of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A + PARTICULAR PURPOSE. You are solely responsible for determining the + appropriateness of using or redistributing the Work and assume any + risks associated with Your exercise of permissions under this License. + + 8. Limitation of Liability. In no event and under no legal theory, + whether in tort (including negligence), contract, or otherwise, + unless required by applicable law (such as deliberate and grossly + negligent acts) or agreed to in writing, shall any Contributor be + liable to You for damages, including any direct, indirect, special, + incidental, or consequential damages of any character arising as a + result of this License or out of the use or inability to use the + Work (including but not limited to damages for loss of goodwill, + work stoppage, computer failure or malfunction, or any and all + other commercial damages or losses), even if such Contributor + has been advised of the possibility of such damages. + + 9. Accepting Warranty or Additional Liability. While redistributing + the Work or Derivative Works thereof, You may choose to offer, + and charge a fee for, acceptance of support, warranty, indemnity, + or other liability obligations and/or rights consistent with this + License. However, in accepting such obligations, You may act only + on Your own behalf and on Your sole responsibility, not on behalf + of any other Contributor, and only if You agree to indemnify, + defend, and hold each Contributor harmless for any liability + incurred by, or claims asserted against, such Contributor by reason + of your accepting any such warranty or additional liability. + + END OF TERMS AND CONDITIONS + + APPENDIX: How to apply the Apache License to your work. + + To apply the Apache License to your work, attach the following + boilerplate notice, with the fields enclosed by brackets "[]" + replaced with your own identifying information. (Don't include + the brackets!) The text should be enclosed in the appropriate + comment syntax for the file format. We also recommend that a + file or class name and description of purpose be included on the + same "printed page" as the copyright notice for easier + identification within third-party archives. + + Copyright [yyyy] [name of copyright owner] + + Licensed under the Apache License, Version 2.0 (the "License"); + you may not use this file except in compliance with the License. + You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + + Unless required by applicable law or agreed to in writing, software + distributed under the License is distributed on an "AS IS" BASIS, + WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + See the License for the specific language governing permissions and + limitations under the License. + +------------------------------------------------------------------------------ +libvpx is redistributed within all opencv-python Linux packages. +This license applies to libvpx binary in the directory cv2/. + +Copyright (c) 2010, The WebM Project authors. All rights reserved. + +Redistribution and use in source and binary forms, with or without +modification, are permitted provided that the following conditions are +met: + + * Redistributions of source code must retain the above copyright + notice, this list of conditions and the following disclaimer. + + * Redistributions in binary form must reproduce the above copyright + notice, this list of conditions and the following disclaimer in + the documentation and/or other materials provided with the + distribution. + + * Neither the name of Google, nor the WebM Project, nor the names + of its contributors may be used to endorse or promote products + derived from this software without specific prior written + permission. + +THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS +"AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT +LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR +A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT +HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, +SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT +LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, +DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY +THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT +(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE +OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + +------------------------------------------------------------------------------ +FFmpeg is redistributed within all opencv-python packages. + +Libbluray, libgnutls, libnettle, libhogweed, libintl, libmp3lame, libp11, +librtmp, libsoxr and libtasn1 are redistributed within all opencv-python macOS packages. + +This license applies to the above library binaries in the directory cv2/. + + GNU LESSER GENERAL PUBLIC LICENSE + Version 2.1, February 1999 + + Copyright (C) 1991, 1999 Free Software Foundation, Inc. + 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA + Everyone is permitted to copy and distribute verbatim copies + of this license document, but changing it is not allowed. + +[This is the first released version of the Lesser GPL. It also counts + as the successor of the GNU Library Public License, version 2, hence + the version number 2.1.] + + Preamble + + The licenses for most software are designed to take away your +freedom to share and change it. By contrast, the GNU General Public +Licenses are intended to guarantee your freedom to share and change +free software--to make sure the software is free for all its users. + + This license, the Lesser General Public License, applies to some +specially designated software packages--typically libraries--of the +Free Software Foundation and other authors who decide to use it. You +can use it too, but we suggest you first think carefully about whether +this license or the ordinary General Public License is the better +strategy to use in any particular case, based on the explanations below. + + When we speak of free software, we are referring to freedom of use, +not price. Our General Public Licenses are designed to make sure that +you have the freedom to distribute copies of free software (and charge +for this service if you wish); that you receive source code or can get +it if you want it; that you can change the software and use pieces of +it in new free programs; and that you are informed that you can do +these things. + + To protect your rights, we need to make restrictions that forbid +distributors to deny you these rights or to ask you to surrender these +rights. These restrictions translate to certain responsibilities for +you if you distribute copies of the library or if you modify it. + + For example, if you distribute copies of the library, whether gratis +or for a fee, you must give the recipients all the rights that we gave +you. You must make sure that they, too, receive or can get the source +code. If you link other code with the library, you must provide +complete object files to the recipients, so that they can relink them +with the library after making changes to the library and recompiling +it. And you must show them these terms so they know their rights. + + We protect your rights with a two-step method: (1) we copyright the +library, and (2) we offer you this license, which gives you legal +permission to copy, distribute and/or modify the library. + + To protect each distributor, we want to make it very clear that +there is no warranty for the free library. Also, if the library is +modified by someone else and passed on, the recipients should know +that what they have is not the original version, so that the original +author's reputation will not be affected by problems that might be +introduced by others. + + Finally, software patents pose a constant threat to the existence of +any free program. We wish to make sure that a company cannot +effectively restrict the users of a free program by obtaining a +restrictive license from a patent holder. Therefore, we insist that +any patent license obtained for a version of the library must be +consistent with the full freedom of use specified in this license. + + Most GNU software, including some libraries, is covered by the +ordinary GNU General Public License. This license, the GNU Lesser +General Public License, applies to certain designated libraries, and +is quite different from the ordinary General Public License. We use +this license for certain libraries in order to permit linking those +libraries into non-free programs. + + When a program is linked with a library, whether statically or using +a shared library, the combination of the two is legally speaking a +combined work, a derivative of the original library. The ordinary +General Public License therefore permits such linking only if the +entire combination fits its criteria of freedom. The Lesser General +Public License permits more lax criteria for linking other code with +the library. + + We call this license the "Lesser" General Public License because it +does Less to protect the user's freedom than the ordinary General +Public License. It also provides other free software developers Less +of an advantage over competing non-free programs. These disadvantages +are the reason we use the ordinary General Public License for many +libraries. However, the Lesser license provides advantages in certain +special circumstances. + + For example, on rare occasions, there may be a special need to +encourage the widest possible use of a certain library, so that it becomes +a de-facto standard. To achieve this, non-free programs must be +allowed to use the library. A more frequent case is that a free +library does the same job as widely used non-free libraries. In this +case, there is little to gain by limiting the free library to free +software only, so we use the Lesser General Public License. + + In other cases, permission to use a particular library in non-free +programs enables a greater number of people to use a large body of +free software. For example, permission to use the GNU C Library in +non-free programs enables many more people to use the whole GNU +operating system, as well as its variant, the GNU/Linux operating +system. + + Although the Lesser General Public License is Less protective of the +users' freedom, it does ensure that the user of a program that is +linked with the Library has the freedom and the wherewithal to run +that program using a modified version of the Library. + + The precise terms and conditions for copying, distribution and +modification follow. Pay close attention to the difference between a +"work based on the library" and a "work that uses the library". The +former contains code derived from the library, whereas the latter must +be combined with the library in order to run. + + GNU LESSER GENERAL PUBLIC LICENSE + TERMS AND CONDITIONS FOR COPYING, DISTRIBUTION AND MODIFICATION + + 0. This License Agreement applies to any software library or other +program which contains a notice placed by the copyright holder or +other authorized party saying it may be distributed under the terms of +this Lesser General Public License (also called "this License"). +Each licensee is addressed as "you". + + A "library" means a collection of software functions and/or data +prepared so as to be conveniently linked with application programs +(which use some of those functions and data) to form executables. + + The "Library", below, refers to any such software library or work +which has been distributed under these terms. A "work based on the +Library" means either the Library or any derivative work under +copyright law: that is to say, a work containing the Library or a +portion of it, either verbatim or with modifications and/or translated +straightforwardly into another language. (Hereinafter, translation is +included without limitation in the term "modification".) + + "Source code" for a work means the preferred form of the work for +making modifications to it. For a library, complete source code means +all the source code for all modules it contains, plus any associated +interface definition files, plus the scripts used to control compilation +and installation of the library. + + Activities other than copying, distribution and modification are not +covered by this License; they are outside its scope. The act of +running a program using the Library is not restricted, and output from +such a program is covered only if its contents constitute a work based +on the Library (independent of the use of the Library in a tool for +writing it). Whether that is true depends on what the Library does +and what the program that uses the Library does. + + 1. You may copy and distribute verbatim copies of the Library's +complete source code as you receive it, in any medium, provided that +you conspicuously and appropriately publish on each copy an +appropriate copyright notice and disclaimer of warranty; keep intact +all the notices that refer to this License and to the absence of any +warranty; and distribute a copy of this License along with the +Library. + + You may charge a fee for the physical act of transferring a copy, +and you may at your option offer warranty protection in exchange for a +fee. + + 2. You may modify your copy or copies of the Library or any portion +of it, thus forming a work based on the Library, and copy and +distribute such modifications or work under the terms of Section 1 +above, provided that you also meet all of these conditions: + + a) The modified work must itself be a software library. + + b) You must cause the files modified to carry prominent notices + stating that you changed the files and the date of any change. + + c) You must cause the whole of the work to be licensed at no + charge to all third parties under the terms of this License. + + d) If a facility in the modified Library refers to a function or a + table of data to be supplied by an application program that uses + the facility, other than as an argument passed when the facility + is invoked, then you must make a good faith effort to ensure that, + in the event an application does not supply such function or + table, the facility still operates, and performs whatever part of + its purpose remains meaningful. + + (For example, a function in a library to compute square roots has + a purpose that is entirely well-defined independent of the + application. Therefore, Subsection 2d requires that any + application-supplied function or table used by this function must + be optional: if the application does not supply it, the square + root function must still compute square roots.) + +These requirements apply to the modified work as a whole. If +identifiable sections of that work are not derived from the Library, +and can be reasonably considered independent and separate works in +themselves, then this License, and its terms, do not apply to those +sections when you distribute them as separate works. But when you +distribute the same sections as part of a whole which is a work based +on the Library, the distribution of the whole must be on the terms of +this License, whose permissions for other licensees extend to the +entire whole, and thus to each and every part regardless of who wrote +it. + +Thus, it is not the intent of this section to claim rights or contest +your rights to work written entirely by you; rather, the intent is to +exercise the right to control the distribution of derivative or +collective works based on the Library. + +In addition, mere aggregation of another work not based on the Library +with the Library (or with a work based on the Library) on a volume of +a storage or distribution medium does not bring the other work under +the scope of this License. + + 3. You may opt to apply the terms of the ordinary GNU General Public +License instead of this License to a given copy of the Library. To do +this, you must alter all the notices that refer to this License, so +that they refer to the ordinary GNU General Public License, version 2, +instead of to this License. (If a newer version than version 2 of the +ordinary GNU General Public License has appeared, then you can specify +that version instead if you wish.) Do not make any other change in +these notices. + + Once this change is made in a given copy, it is irreversible for +that copy, so the ordinary GNU General Public License applies to all +subsequent copies and derivative works made from that copy. + + This option is useful when you wish to copy part of the code of +the Library into a program that is not a library. + + 4. You may copy and distribute the Library (or a portion or +derivative of it, under Section 2) in object code or executable form +under the terms of Sections 1 and 2 above provided that you accompany +it with the complete corresponding machine-readable source code, which +must be distributed under the terms of Sections 1 and 2 above on a +medium customarily used for software interchange. + + If distribution of object code is made by offering access to copy +from a designated place, then offering equivalent access to copy the +source code from the same place satisfies the requirement to +distribute the source code, even though third parties are not +compelled to copy the source along with the object code. + + 5. A program that contains no derivative of any portion of the +Library, but is designed to work with the Library by being compiled or +linked with it, is called a "work that uses the Library". Such a +work, in isolation, is not a derivative work of the Library, and +therefore falls outside the scope of this License. + + However, linking a "work that uses the Library" with the Library +creates an executable that is a derivative of the Library (because it +contains portions of the Library), rather than a "work that uses the +library". The executable is therefore covered by this License. +Section 6 states terms for distribution of such executables. + + When a "work that uses the Library" uses material from a header file +that is part of the Library, the object code for the work may be a +derivative work of the Library even though the source code is not. +Whether this is true is especially significant if the work can be +linked without the Library, or if the work is itself a library. The +threshold for this to be true is not precisely defined by law. + + If such an object file uses only numerical parameters, data +structure layouts and accessors, and small macros and small inline +functions (ten lines or less in length), then the use of the object +file is unrestricted, regardless of whether it is legally a derivative +work. (Executables containing this object code plus portions of the +Library will still fall under Section 6.) + + Otherwise, if the work is a derivative of the Library, you may +distribute the object code for the work under the terms of Section 6. +Any executables containing that work also fall under Section 6, +whether or not they are linked directly with the Library itself. + + 6. As an exception to the Sections above, you may also combine or +link a "work that uses the Library" with the Library to produce a +work containing portions of the Library, and distribute that work +under terms of your choice, provided that the terms permit +modification of the work for the customer's own use and reverse +engineering for debugging such modifications. + + You must give prominent notice with each copy of the work that the +Library is used in it and that the Library and its use are covered by +this License. You must supply a copy of this License. If the work +during execution displays copyright notices, you must include the +copyright notice for the Library among them, as well as a reference +directing the user to the copy of this License. Also, you must do one +of these things: + + a) Accompany the work with the complete corresponding + machine-readable source code for the Library including whatever + changes were used in the work (which must be distributed under + Sections 1 and 2 above); and, if the work is an executable linked + with the Library, with the complete machine-readable "work that + uses the Library", as object code and/or source code, so that the + user can modify the Library and then relink to produce a modified + executable containing the modified Library. (It is understood + that the user who changes the contents of definitions files in the + Library will not necessarily be able to recompile the application + to use the modified definitions.) + + b) Use a suitable shared library mechanism for linking with the + Library. A suitable mechanism is one that (1) uses at run time a + copy of the library already present on the user's computer system, + rather than copying library functions into the executable, and (2) + will operate properly with a modified version of the library, if + the user installs one, as long as the modified version is + interface-compatible with the version that the work was made with. + + c) Accompany the work with a written offer, valid for at + least three years, to give the same user the materials + specified in Subsection 6a, above, for a charge no more + than the cost of performing this distribution. + + d) If distribution of the work is made by offering access to copy + from a designated place, offer equivalent access to copy the above + specified materials from the same place. + + e) Verify that the user has already received a copy of these + materials or that you have already sent this user a copy. + + For an executable, the required form of the "work that uses the +Library" must include any data and utility programs needed for +reproducing the executable from it. However, as a special exception, +the materials to be distributed need not include anything that is +normally distributed (in either source or binary form) with the major +components (compiler, kernel, and so on) of the operating system on +which the executable runs, unless that component itself accompanies +the executable. + + It may happen that this requirement contradicts the license +restrictions of other proprietary libraries that do not normally +accompany the operating system. Such a contradiction means you cannot +use both them and the Library together in an executable that you +distribute. + + 7. You may place library facilities that are a work based on the +Library side-by-side in a single library together with other library +facilities not covered by this License, and distribute such a combined +library, provided that the separate distribution of the work based on +the Library and of the other library facilities is otherwise +permitted, and provided that you do these two things: + + a) Accompany the combined library with a copy of the same work + based on the Library, uncombined with any other library + facilities. This must be distributed under the terms of the + Sections above. + + b) Give prominent notice with the combined library of the fact + that part of it is a work based on the Library, and explaining + where to find the accompanying uncombined form of the same work. + + 8. You may not copy, modify, sublicense, link with, or distribute +the Library except as expressly provided under this License. Any +attempt otherwise to copy, modify, sublicense, link with, or +distribute the Library is void, and will automatically terminate your +rights under this License. However, parties who have received copies, +or rights, from you under this License will not have their licenses +terminated so long as such parties remain in full compliance. + + 9. You are not required to accept this License, since you have not +signed it. However, nothing else grants you permission to modify or +distribute the Library or its derivative works. These actions are +prohibited by law if you do not accept this License. Therefore, by +modifying or distributing the Library (or any work based on the +Library), you indicate your acceptance of this License to do so, and +all its terms and conditions for copying, distributing or modifying +the Library or works based on it. + + 10. Each time you redistribute the Library (or any work based on the +Library), the recipient automatically receives a license from the +original licensor to copy, distribute, link with or modify the Library +subject to these terms and conditions. You may not impose any further +restrictions on the recipients' exercise of the rights granted herein. +You are not responsible for enforcing compliance by third parties with +this License. + + 11. If, as a consequence of a court judgment or allegation of patent +infringement or for any other reason (not limited to patent issues), +conditions are imposed on you (whether by court order, agreement or +otherwise) that contradict the conditions of this License, they do not +excuse you from the conditions of this License. If you cannot +distribute so as to satisfy simultaneously your obligations under this +License and any other pertinent obligations, then as a consequence you +may not distribute the Library at all. For example, if a patent +license would not permit royalty-free redistribution of the Library by +all those who receive copies directly or indirectly through you, then +the only way you could satisfy both it and this License would be to +refrain entirely from distribution of the Library. + +If any portion of this section is held invalid or unenforceable under any +particular circumstance, the balance of the section is intended to apply, +and the section as a whole is intended to apply in other circumstances. + +It is not the purpose of this section to induce you to infringe any +patents or other property right claims or to contest validity of any +such claims; this section has the sole purpose of protecting the +integrity of the free software distribution system which is +implemented by public license practices. Many people have made +generous contributions to the wide range of software distributed +through that system in reliance on consistent application of that +system; it is up to the author/donor to decide if he or she is willing +to distribute software through any other system and a licensee cannot +impose that choice. + +This section is intended to make thoroughly clear what is believed to +be a consequence of the rest of this License. + + 12. If the distribution and/or use of the Library is restricted in +certain countries either by patents or by copyrighted interfaces, the +original copyright holder who places the Library under this License may add +an explicit geographical distribution limitation excluding those countries, +so that distribution is permitted only in or among countries not thus +excluded. In such case, this License incorporates the limitation as if +written in the body of this License. + + 13. The Free Software Foundation may publish revised and/or new +versions of the Lesser General Public License from time to time. +Such new versions will be similar in spirit to the present version, +but may differ in detail to address new problems or concerns. + +Each version is given a distinguishing version number. If the Library +specifies a version number of this License which applies to it and +"any later version", you have the option of following the terms and +conditions either of that version or of any later version published by +the Free Software Foundation. If the Library does not specify a +license version number, you may choose any version ever published by +the Free Software Foundation. + + 14. If you wish to incorporate parts of the Library into other free +programs whose distribution conditions are incompatible with these, +write to the author to ask for permission. For software which is +copyrighted by the Free Software Foundation, write to the Free +Software Foundation; we sometimes make exceptions for this. Our +decision will be guided by the two goals of preserving the free status +of all derivatives of our free software and of promoting the sharing +and reuse of software generally. + + NO WARRANTY + + 15. BECAUSE THE LIBRARY IS LICENSED FREE OF CHARGE, THERE IS NO +WARRANTY FOR THE LIBRARY, TO THE EXTENT PERMITTED BY APPLICABLE LAW. +EXCEPT WHEN OTHERWISE STATED IN WRITING THE COPYRIGHT HOLDERS AND/OR +OTHER PARTIES PROVIDE THE LIBRARY "AS IS" WITHOUT WARRANTY OF ANY +KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING, BUT NOT LIMITED TO, THE +IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR +PURPOSE. THE ENTIRE RISK AS TO THE QUALITY AND PERFORMANCE OF THE +LIBRARY IS WITH YOU. SHOULD THE LIBRARY PROVE DEFECTIVE, YOU ASSUME +THE COST OF ALL NECESSARY SERVICING, REPAIR OR CORRECTION. + + 16. IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW OR AGREED TO IN +WRITING WILL ANY COPYRIGHT HOLDER, OR ANY OTHER PARTY WHO MAY MODIFY +AND/OR REDISTRIBUTE THE LIBRARY AS PERMITTED ABOVE, BE LIABLE TO YOU +FOR DAMAGES, INCLUDING ANY GENERAL, SPECIAL, INCIDENTAL OR +CONSEQUENTIAL DAMAGES ARISING OUT OF THE USE OR INABILITY TO USE THE +LIBRARY (INCLUDING BUT NOT LIMITED TO LOSS OF DATA OR DATA BEING +RENDERED INACCURATE OR LOSSES SUSTAINED BY YOU OR THIRD PARTIES OR A +FAILURE OF THE LIBRARY TO OPERATE WITH ANY OTHER SOFTWARE), EVEN IF +SUCH HOLDER OR OTHER PARTY HAS BEEN ADVISED OF THE POSSIBILITY OF SUCH +DAMAGES. + + END OF TERMS AND CONDITIONS + +------------------------------------------------------------------------------ +Qt 5 is redistributed within non-headless opencv-python Linux and macOS packages. +libgmp is redistributed within opencv-python macOS packages. +libidn2 is redistributed within opencv-python macOS packages. +libunistring is redistributed within opencv-python macOS packages. +This license applies to the above binaries in the directory cv2/. + + GNU LESSER GENERAL PUBLIC LICENSE + Version 3, 29 June 2007 + + Copyright (C) 2007 Free Software Foundation, Inc. + Everyone is permitted to copy and distribute verbatim copies + of this license document, but changing it is not allowed. + + This version of the GNU Lesser General Public License incorporates +the terms and conditions of version 3 of the GNU General Public +License, supplemented by the additional permissions listed below. + + 0. Additional Definitions. + + As used herein, "this License" refers to version 3 of the GNU Lesser +General Public License, and the "GNU GPL" refers to version 3 of the GNU +General Public License. + + "The Library" refers to a covered work governed by this License, +other than an Application or a Combined Work as defined below. + + An "Application" is any work that makes use of an interface provided +by the Library, but which is not otherwise based on the Library. +Defining a subclass of a class defined by the Library is deemed a mode +of using an interface provided by the Library. + + A "Combined Work" is a work produced by combining or linking an +Application with the Library. The particular version of the Library +with which the Combined Work was made is also called the "Linked +Version". + + The "Minimal Corresponding Source" for a Combined Work means the +Corresponding Source for the Combined Work, excluding any source code +for portions of the Combined Work that, considered in isolation, are +based on the Application, and not on the Linked Version. + + The "Corresponding Application Code" for a Combined Work means the +object code and/or source code for the Application, including any data +and utility programs needed for reproducing the Combined Work from the +Application, but excluding the System Libraries of the Combined Work. + + 1. Exception to Section 3 of the GNU GPL. + + You may convey a covered work under sections 3 and 4 of this License +without being bound by section 3 of the GNU GPL. + + 2. Conveying Modified Versions. + + If you modify a copy of the Library, and, in your modifications, a +facility refers to a function or data to be supplied by an Application +that uses the facility (other than as an argument passed when the +facility is invoked), then you may convey a copy of the modified +version: + + a) under this License, provided that you make a good faith effort to + ensure that, in the event an Application does not supply the + function or data, the facility still operates, and performs + whatever part of its purpose remains meaningful, or + + b) under the GNU GPL, with none of the additional permissions of + this License applicable to that copy. + + 3. Object Code Incorporating Material from Library Header Files. + + The object code form of an Application may incorporate material from +a header file that is part of the Library. You may convey such object +code under terms of your choice, provided that, if the incorporated +material is not limited to numerical parameters, data structure +layouts and accessors, or small macros, inline functions and templates +(ten or fewer lines in length), you do both of the following: + + a) Give prominent notice with each copy of the object code that the + Library is used in it and that the Library and its use are + covered by this License. + + b) Accompany the object code with a copy of the GNU GPL and this license + document. + + 4. Combined Works. + + You may convey a Combined Work under terms of your choice that, +taken together, effectively do not restrict modification of the +portions of the Library contained in the Combined Work and reverse +engineering for debugging such modifications, if you also do each of +the following: + + a) Give prominent notice with each copy of the Combined Work that + the Library is used in it and that the Library and its use are + covered by this License. + + b) Accompany the Combined Work with a copy of the GNU GPL and this license + document. + + c) For a Combined Work that displays copyright notices during + execution, include the copyright notice for the Library among + these notices, as well as a reference directing the user to the + copies of the GNU GPL and this license document. + + d) Do one of the following: + + 0) Convey the Minimal Corresponding Source under the terms of this + License, and the Corresponding Application Code in a form + suitable for, and under terms that permit, the user to + recombine or relink the Application with a modified version of + the Linked Version to produce a modified Combined Work, in the + manner specified by section 6 of the GNU GPL for conveying + Corresponding Source. + + 1) Use a suitable shared library mechanism for linking with the + Library. A suitable mechanism is one that (a) uses at run time + a copy of the Library already present on the user's computer + system, and (b) will operate properly with a modified version + of the Library that is interface-compatible with the Linked + Version. + + e) Provide Installation Information, but only if you would otherwise + be required to provide such information under section 6 of the + GNU GPL, and only to the extent that such information is + necessary to install and execute a modified version of the + Combined Work produced by recombining or relinking the + Application with a modified version of the Linked Version. (If + you use option 4d0, the Installation Information must accompany + the Minimal Corresponding Source and Corresponding Application + Code. If you use option 4d1, you must provide the Installation + Information in the manner specified by section 6 of the GNU GPL + for conveying Corresponding Source.) + + 5. Combined Libraries. + + You may place library facilities that are a work based on the +Library side by side in a single library together with other library +facilities that are not Applications and are not covered by this +License, and convey such a combined library under terms of your +choice, if you do both of the following: + + a) Accompany the combined library with a copy of the same work based + on the Library, uncombined with any other library facilities, + conveyed under the terms of this License. + + b) Give prominent notice with the combined library that part of it + is a work based on the Library, and explaining where to find the + accompanying uncombined form of the same work. + + 6. Revised Versions of the GNU Lesser General Public License. + + The Free Software Foundation may publish revised and/or new versions +of the GNU Lesser General Public License from time to time. Such new +versions will be similar in spirit to the present version, but may +differ in detail to address new problems or concerns. + + Each version is given a distinguishing version number. If the +Library as you received it specifies that a certain numbered version +of the GNU Lesser General Public License "or any later version" +applies to it, you have the option of following the terms and +conditions either of that published version or of any later version +published by the Free Software Foundation. If the Library as you +received it does not specify a version number of the GNU Lesser +General Public License, you may choose any version of the GNU Lesser +General Public License ever published by the Free Software Foundation. + + If the Library as you received it specifies that a proxy can decide +whether future versions of the GNU Lesser General Public License shall +apply, that proxy's public statement of acceptance of any version is +permanent authorization for you to choose that version for the +Library. + +------------------------------------------------------------------------------ +bzip2 is redistributed within all opencv-python Linux packages. +This license applies to libbz2 binary in the directory cv2/. + +This program, "bzip2", the associated library "libbzip2", and all +documentation, are copyright (C) 1996-2010 Julian R Seward. All +rights reserved. + +Redistribution and use in source and binary forms, with or without +modification, are permitted provided that the following conditions +are met: + +1. Redistributions of source code must retain the above copyright + notice, this list of conditions and the following disclaimer. + +2. The origin of this software must not be misrepresented; you must + not claim that you wrote the original software. If you use this + software in a product, an acknowledgment in the product + documentation would be appreciated but is not required. + +3. Altered source versions must be plainly marked as such, and must + not be misrepresented as being the original software. + +4. The name of the author may not be used to endorse or promote + products derived from this software without specific prior written + permission. + +THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS +OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED +WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE +ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY +DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL +DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE +GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS +INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, +WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING +NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS +SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + +Julian Seward, jseward@bzip.org +bzip2/libbzip2 version 1.0.6 of 6 September 2010 + +------------------------------------------------------------------------------ +libcrypto and libssl are redistributed within all opencv-python Linux and macOS packages. +libopencore-amrnb and libopencore-amrwb are redistributed within all opencv-python Linux and macOS packages. +This license applies to above binaries in the directory cv2/. + + LICENSE ISSUES + ============== + + The OpenSSL toolkit stays under a double license, i.e. both the conditions of + the OpenSSL License and the original SSLeay license apply to the toolkit. + See below for the actual license texts. + + OpenSSL License + --------------- + +/* ==================================================================== + * Copyright (c) 1998-2019 The OpenSSL Project. All rights reserved. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions + * are met: + * + * 1. Redistributions of source code must retain the above copyright + * notice, this list of conditions and the following disclaimer. + * + * 2. Redistributions in binary form must reproduce the above copyright + * notice, this list of conditions and the following disclaimer in + * the documentation and/or other materials provided with the + * distribution. + * + * 3. All advertising materials mentioning features or use of this + * software must display the following acknowledgment: + * "This product includes software developed by the OpenSSL Project + * for use in the OpenSSL Toolkit. (http://www.openssl.org/)" + * + * 4. The names "OpenSSL Toolkit" and "OpenSSL Project" must not be used to + * endorse or promote products derived from this software without + * prior written permission. For written permission, please contact + * openssl-core@openssl.org. + * + * 5. Products derived from this software may not be called "OpenSSL" + * nor may "OpenSSL" appear in their names without prior written + * permission of the OpenSSL Project. + * + * 6. Redistributions of any form whatsoever must retain the following + * acknowledgment: + * "This product includes software developed by the OpenSSL Project + * for use in the OpenSSL Toolkit (http://www.openssl.org/)" + * + * THIS SOFTWARE IS PROVIDED BY THE OpenSSL PROJECT ``AS IS'' AND ANY + * EXPRESSED OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE + * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR + * PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE OpenSSL PROJECT OR + * ITS CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, + * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT + * NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; + * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) + * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, + * STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) + * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED + * OF THE POSSIBILITY OF SUCH DAMAGE. + * ==================================================================== + * + * This product includes cryptographic software written by Eric Young + * (eay@cryptsoft.com). This product includes software written by Tim + * Hudson (tjh@cryptsoft.com). + * + */ + + Original SSLeay License + ----------------------- + +/* Copyright (C) 1995-1998 Eric Young (eay@cryptsoft.com) + * All rights reserved. + * + * This package is an SSL implementation written + * by Eric Young (eay@cryptsoft.com). + * The implementation was written so as to conform with Netscapes SSL. + * + * This library is free for commercial and non-commercial use as long as + * the following conditions are adhered to. The following conditions + * apply to all code found in this distribution, be it the RC4, RSA, + * lhash, DES, etc., code; not just the SSL code. The SSL documentation + * included with this distribution is covered by the same copyright terms + * except that the holder is Tim Hudson (tjh@cryptsoft.com). + * + * Copyright remains Eric Young's, and as such any Copyright notices in + * the code are not to be removed. + * If this package is used in a product, Eric Young should be given attribution + * as the author of the parts of the library used. + * This can be in the form of a textual message at program startup or + * in documentation (online or textual) provided with the package. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions + * are met: + * 1. Redistributions of source code must retain the copyright + * notice, this list of conditions and the following disclaimer. + * 2. Redistributions in binary form must reproduce the above copyright + * notice, this list of conditions and the following disclaimer in the + * documentation and/or other materials provided with the distribution. + * 3. All advertising materials mentioning features or use of this software + * must display the following acknowledgement: + * "This product includes cryptographic software written by + * Eric Young (eay@cryptsoft.com)" + * The word 'cryptographic' can be left out if the routines from the library + * being used are not cryptographic related :-). + * 4. If you include any Windows specific code (or a derivative thereof) from + * the apps directory (application code) you must include an acknowledgement: + * "This product includes software written by Tim Hudson (tjh@cryptsoft.com)" + * + * THIS SOFTWARE IS PROVIDED BY ERIC YOUNG ``AS IS'' AND + * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE + * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE + * ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR OR CONTRIBUTORS BE LIABLE + * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL + * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS + * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) + * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT + * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY + * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF + * SUCH DAMAGE. + * + * The licence and distribution terms for any publicly available version or + * derivative of this code cannot be changed. i.e. this code cannot simply be + * copied and put under another distribution licence + * [including the GNU Public Licence.] + */ + +------------------------------------------------------------------------------ +libfontconfig is redistributed within all opencv-python macOS packages. +This license applies to libfontconfig binary in the directory cv2/. + +Copyright © 2000,2001,2002,2003,2004,2006,2007 Keith Packard +Copyright © 2005 Patrick Lam +Copyright © 2009 Roozbeh Pournader +Copyright © 2008,2009 Red Hat, Inc. +Copyright © 2008 Danilo Šegan +Copyright © 2012 Google, Inc. + + +Permission to use, copy, modify, distribute, and sell this software and its +documentation for any purpose is hereby granted without fee, provided that +the above copyright notice appear in all copies and that both that +copyright notice and this permission notice appear in supporting +documentation, and that the name of the author(s) not be used in +advertising or publicity pertaining to distribution of the software without +specific, written prior permission. The authors make no +representations about the suitability of this software for any purpose. It +is provided "as is" without express or implied warranty. + +THE AUTHOR(S) DISCLAIMS ALL WARRANTIES WITH REGARD TO THIS SOFTWARE, +INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS, IN NO +EVENT SHALL THE AUTHOR(S) BE LIABLE FOR ANY SPECIAL, INDIRECT OR +CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE, +DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER +TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR +PERFORMANCE OF THIS SOFTWARE. + +------------------------------------------------------------------------------ +libfreetype is redistributed within opencv-python Linux and macOS packages. +This license applies to libfreetype binary in the directory cv2/. + + The FreeType Project LICENSE + ---------------------------- + + 2006-Jan-27 + + Copyright 1996-2002, 2006 by + David Turner, Robert Wilhelm, and Werner Lemberg + + + +Introduction +============ + + The FreeType Project is distributed in several archive packages; + some of them may contain, in addition to the FreeType font engine, + various tools and contributions which rely on, or relate to, the + FreeType Project. + + This license applies to all files found in such packages, and + which do not fall under their own explicit license. The license + affects thus the FreeType font engine, the test programs, + documentation and makefiles, at the very least. + + This license was inspired by the BSD, Artistic, and IJG + (Independent JPEG Group) licenses, which all encourage inclusion + and use of free software in commercial and freeware products + alike. As a consequence, its main points are that: + + o We don't promise that this software works. However, we will be + interested in any kind of bug reports. (`as is' distribution) + + o You can use this software for whatever you want, in parts or + full form, without having to pay us. (`royalty-free' usage) + + o You may not pretend that you wrote this software. If you use + it, or only parts of it, in a program, you must acknowledge + somewhere in your documentation that you have used the + FreeType code. (`credits') + + We specifically permit and encourage the inclusion of this + software, with or without modifications, in commercial products. + We disclaim all warranties covering The FreeType Project and + assume no liability related to The FreeType Project. + + + Finally, many people asked us for a preferred form for a + credit/disclaimer to use in compliance with this license. We thus + encourage you to use the following text: + + """ + Portions of this software are copyright © The FreeType + Project (www.freetype.org). All rights reserved. + """ + + Please replace with the value from the FreeType version you + actually use. + + +Legal Terms +=========== + +0. Definitions +-------------- + + Throughout this license, the terms `package', `FreeType Project', + and `FreeType archive' refer to the set of files originally + distributed by the authors (David Turner, Robert Wilhelm, and + Werner Lemberg) as the `FreeType Project', be they named as alpha, + beta or final release. + + `You' refers to the licensee, or person using the project, where + `using' is a generic term including compiling the project's source + code as well as linking it to form a `program' or `executable'. + This program is referred to as `a program using the FreeType + engine'. + + This license applies to all files distributed in the original + FreeType Project, including all source code, binaries and + documentation, unless otherwise stated in the file in its + original, unmodified form as distributed in the original archive. + If you are unsure whether or not a particular file is covered by + this license, you must contact us to verify this. + + The FreeType Project is copyright (C) 1996-2000 by David Turner, + Robert Wilhelm, and Werner Lemberg. All rights reserved except as + specified below. + +1. No Warranty +-------------- + + THE FREETYPE PROJECT IS PROVIDED `AS IS' WITHOUT WARRANTY OF ANY + KIND, EITHER EXPRESS OR IMPLIED, INCLUDING, BUT NOT LIMITED TO, + WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR + PURPOSE. IN NO EVENT WILL ANY OF THE AUTHORS OR COPYRIGHT HOLDERS + BE LIABLE FOR ANY DAMAGES CAUSED BY THE USE OR THE INABILITY TO + USE, OF THE FREETYPE PROJECT. + +2. Redistribution +----------------- + + This license grants a worldwide, royalty-free, perpetual and + irrevocable right and license to use, execute, perform, compile, + display, copy, create derivative works of, distribute and + sublicense the FreeType Project (in both source and object code + forms) and derivative works thereof for any purpose; and to + authorize others to exercise some or all of the rights granted + herein, subject to the following conditions: + + o Redistribution of source code must retain this license file + (`FTL.TXT') unaltered; any additions, deletions or changes to + the original files must be clearly indicated in accompanying + documentation. The copyright notices of the unaltered, + original files must be preserved in all copies of source + files. + + o Redistribution in binary form must provide a disclaimer that + states that the software is based in part of the work of the + FreeType Team, in the distribution documentation. We also + encourage you to put an URL to the FreeType web page in your + documentation, though this isn't mandatory. + + These conditions apply to any software derived from or based on + the FreeType Project, not just the unmodified files. If you use + our work, you must acknowledge us. However, no fee need be paid + to us. + +3. Advertising +-------------- + + Neither the FreeType authors and contributors nor you shall use + the name of the other for commercial, advertising, or promotional + purposes without specific prior written permission. + + We suggest, but do not require, that you use one or more of the + following phrases to refer to this software in your documentation + or advertising materials: `FreeType Project', `FreeType Engine', + `FreeType library', or `FreeType Distribution'. + + As you have not signed this license, you are not required to + accept it. However, as the FreeType Project is copyrighted + material, only this license, or another one contracted with the + authors, grants you the right to use, distribute, and modify it. + Therefore, by using, distributing, or modifying the FreeType + Project, you indicate that you understand and accept all the terms + of this license. + +4. Contacts +----------- + + There are two mailing lists related to FreeType: + + o freetype@nongnu.org + + Discusses general use and applications of FreeType, as well as + future and wanted additions to the library and distribution. + If you are looking for support, start in this list if you + haven't found anything to help you in the documentation. + + o freetype-devel@nongnu.org + + Discusses bugs, as well as engine internals, design issues, + specific licenses, porting, etc. + + Our home page can be found at + + https://www.freetype.org + +------------------------------------------------------------------------------ +libpng is redistributed within all opencv-python Linux and macOS packages. +This license applies to libpng binary in the directory cv2/. + +PNG Reference Library License version 2 +--------------------------------------- + + * Copyright (c) 1995-2019 The PNG Reference Library Authors. + * Copyright (c) 2018-2019 Cosmin Truta. + * Copyright (c) 2000-2002, 2004, 2006-2018 Glenn Randers-Pehrson. + * Copyright (c) 1996-1997 Andreas Dilger. + * Copyright (c) 1995-1996 Guy Eric Schalnat, Group 42, Inc. + +The software is supplied "as is", without warranty of any kind, +express or implied, including, without limitation, the warranties +of merchantability, fitness for a particular purpose, title, and +non-infringement. In no event shall the Copyright owners, or +anyone distributing the software, be liable for any damages or +other liability, whether in contract, tort or otherwise, arising +from, out of, or in connection with the software, or the use or +other dealings in the software, even if advised of the possibility +of such damage. + +Permission is hereby granted to use, copy, modify, and distribute +this software, or portions hereof, for any purpose, without fee, +subject to the following restrictions: + + 1. The origin of this software must not be misrepresented; you + must not claim that you wrote the original software. If you + use this software in a product, an acknowledgment in the product + documentation would be appreciated, but is not required. + + 2. Altered source versions must be plainly marked as such, and must + not be misrepresented as being the original software. + + 3. This Copyright notice may not be removed or altered from any + source or altered source distribution. + + +PNG Reference Library License version 1 (for libpng 0.5 through 1.6.35) +----------------------------------------------------------------------- + +libpng versions 1.0.7, July 1, 2000, through 1.6.35, July 15, 2018 are +Copyright (c) 2000-2002, 2004, 2006-2018 Glenn Randers-Pehrson, are +derived from libpng-1.0.6, and are distributed according to the same +disclaimer and license as libpng-1.0.6 with the following individuals +added to the list of Contributing Authors: + + Simon-Pierre Cadieux + Eric S. Raymond + Mans Rullgard + Cosmin Truta + Gilles Vollant + James Yu + Mandar Sahastrabuddhe + Google Inc. + Vadim Barkov + +and with the following additions to the disclaimer: + + There is no warranty against interference with your enjoyment of + the library or against infringement. There is no warranty that our + efforts or the library will fulfill any of your particular purposes + or needs. This library is provided with all faults, and the entire + risk of satisfactory quality, performance, accuracy, and effort is + with the user. + +Some files in the "contrib" directory and some configure-generated +files that are distributed with libpng have other copyright owners, and +are released under other open source licenses. + +libpng versions 0.97, January 1998, through 1.0.6, March 20, 2000, are +Copyright (c) 1998-2000 Glenn Randers-Pehrson, are derived from +libpng-0.96, and are distributed according to the same disclaimer and +license as libpng-0.96, with the following individuals added to the +list of Contributing Authors: + + Tom Lane + Glenn Randers-Pehrson + Willem van Schaik + +libpng versions 0.89, June 1996, through 0.96, May 1997, are +Copyright (c) 1996-1997 Andreas Dilger, are derived from libpng-0.88, +and are distributed according to the same disclaimer and license as +libpng-0.88, with the following individuals added to the list of +Contributing Authors: + + John Bowler + Kevin Bracey + Sam Bushell + Magnus Holmgren + Greg Roelofs + Tom Tanner + +Some files in the "scripts" directory have other copyright owners, +but are released under this license. + +libpng versions 0.5, May 1995, through 0.88, January 1996, are +Copyright (c) 1995-1996 Guy Eric Schalnat, Group 42, Inc. + +For the purposes of this copyright and license, "Contributing Authors" +is defined as the following set of individuals: + + Andreas Dilger + Dave Martindale + Guy Eric Schalnat + Paul Schmidt + Tim Wegner + +The PNG Reference Library is supplied "AS IS". The Contributing +Authors and Group 42, Inc. disclaim all warranties, expressed or +implied, including, without limitation, the warranties of +merchantability and of fitness for any purpose. The Contributing +Authors and Group 42, Inc. assume no liability for direct, indirect, +incidental, special, exemplary, or consequential damages, which may +result from the use of the PNG Reference Library, even if advised of +the possibility of such damage. + +Permission is hereby granted to use, copy, modify, and distribute this +source code, or portions hereof, for any purpose, without fee, subject +to the following restrictions: + + 1. The origin of this source code must not be misrepresented. + + 2. Altered versions must be plainly marked as such and must not + be misrepresented as being the original source. + + 3. This Copyright notice may not be removed or altered from any + source or altered source distribution. + +The Contributing Authors and Group 42, Inc. specifically permit, +without fee, and encourage the use of this source code as a component +to supporting the PNG file format in commercial products. If you use +this source code in a product, acknowledgment is not required but would +be appreciated. + +------------------------------------------------------------------------------ +libz is redistributed within all opencv-python Linux packages. +This license applies to libz binary in the directory cv2/. + + Copyright (C) 1995-2017 Jean-loup Gailly and Mark Adler + + This software is provided 'as-is', without any express or implied + warranty. In no event will the authors be held liable for any damages + arising from the use of this software. + + Permission is granted to anyone to use this software for any purpose, + including commercial applications, and to alter it and redistribute it + freely, subject to the following restrictions: + + 1. The origin of this software must not be misrepresented; you must not + claim that you wrote the original software. If you use this software + in a product, an acknowledgment in the product documentation would be + appreciated but is not required. + 2. Altered source versions must be plainly marked as such, and must not be + misrepresented as being the original software. + 3. This notice may not be removed or altered from any source distribution. + + Jean-loup Gailly Mark Adler + jloup@gzip.org madler@alumni.caltech.edu + +------------------------------------------------------------------------------ +libdav1d is redistributed within opencv-python macOS packages. +This license applies to libdav1d binary in the directory cv2/. + +Copyright © 2018-2019, VideoLAN and dav1d authors +All rights reserved. + +Redistribution and use in source and binary forms, with or without +modification, are permitted provided that the following conditions are met: + +1. Redistributions of source code must retain the above copyright notice, this + list of conditions and the following disclaimer. + +2. Redistributions in binary form must reproduce the above copyright notice, + this list of conditions and the following disclaimer in the documentation + and/or other materials provided with the distribution. + +THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND +ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED +WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE +DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR +ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES +(INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; +LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND +ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT +(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS +SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + +------------------------------------------------------------------------------ +libffi is redistributed within opencv-python macOS packages. +This license applies to libffi binary in the directory cv2/. + +libffi - Copyright (c) 1996-2020 Anthony Green, Red Hat, Inc and others. +See source files for details. + +Permission is hereby granted, free of charge, to any person obtaining +a copy of this software and associated documentation files (the +``Software''), to deal in the Software without restriction, including +without limitation the rights to use, copy, modify, merge, publish, +distribute, sublicense, and/or sell copies of the Software, and to +permit persons to whom the Software is furnished to do so, subject to +the following conditions: + +The above copyright notice and this permission notice shall be +included in all copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED ``AS IS'', WITHOUT WARRANTY OF ANY KIND, +EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF +MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. +IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY +CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, +TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE +SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. + +------------------------------------------------------------------------------ +libogg is redistributed within opencv-python macOS packages. +This license applies to libogg binary in the directory cv2/. + +Copyright (c) 2002, Xiph.org Foundation + +Redistribution and use in source and binary forms, with or without +modification, are permitted provided that the following conditions +are met: + +- Redistributions of source code must retain the above copyright +notice, this list of conditions and the following disclaimer. + +- Redistributions in binary form must reproduce the above copyright +notice, this list of conditions and the following disclaimer in the +documentation and/or other materials provided with the distribution. + +- Neither the name of the Xiph.org Foundation nor the names of its +contributors may be used to endorse or promote products derived from +this software without specific prior written permission. + +THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS +``AS IS'' AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT +LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR +A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE FOUNDATION +OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, +SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT +LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, +DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY +THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT +(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE +OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + +------------------------------------------------------------------------------ +libopenjp2 is redistributed within opencv-python macOS packages. +This license applies to libopenjp2 binary in the directory cv2/. + +The copyright in this software is being made available under the 2-clauses +BSD License, included below. This software may be subject to other third +party and contributor rights, including patent rights, and no such rights +are granted under this license. + +Copyright (c) 2002-2014, Universite catholique de Louvain (UCL), Belgium +Copyright (c) 2002-2014, Professor Benoit Macq +Copyright (c) 2003-2014, Antonin Descampe +Copyright (c) 2003-2009, Francois-Olivier Devaux +Copyright (c) 2005, Herve Drolon, FreeImage Team +Copyright (c) 2002-2003, Yannick Verschueren +Copyright (c) 2001-2003, David Janssens +Copyright (c) 2011-2012, Centre National d'Etudes Spatiales (CNES), France +Copyright (c) 2012, CS Systemes d'Information, France + +All rights reserved. + +Redistribution and use in source and binary forms, with or without +modification, are permitted provided that the following conditions +are met: +1. Redistributions of source code must retain the above copyright + notice, this list of conditions and the following disclaimer. +2. Redistributions in binary form must reproduce the above copyright + notice, this list of conditions and the following disclaimer in the + documentation and/or other materials provided with the distribution. + +THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS `AS IS' +AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE +IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE +ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE +LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR +CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF +SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS +INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN +CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) +ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE +POSSIBILITY OF SUCH DAMAGE. + +------------------------------------------------------------------------------ +libopus is redistributed within opencv-python macOS packages. +This license applies to libopus binary in the directory cv2/. + +Copyright 2001-2011 Xiph.Org, Skype Limited, Octasic, + Jean-Marc Valin, Timothy B. Terriberry, + CSIRO, Gregory Maxwell, Mark Borgerding, + Erik de Castro Lopo + +Redistribution and use in source and binary forms, with or without +modification, are permitted provided that the following conditions +are met: + +- Redistributions of source code must retain the above copyright +notice, this list of conditions and the following disclaimer. + +- Redistributions in binary form must reproduce the above copyright +notice, this list of conditions and the following disclaimer in the +documentation and/or other materials provided with the distribution. + +- Neither the name of Internet Society, IETF or IETF Trust, nor the +names of specific contributors, may be used to endorse or promote +products derived from this software without specific prior written +permission. + +THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS +``AS IS'' AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT +LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR +A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER +OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, +EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, +PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR +PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF +LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING +NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS +SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + +Opus is subject to the royalty-free patent licenses which are +specified at: + +Xiph.Org Foundation: +https://datatracker.ietf.org/ipr/1524/ + +Microsoft Corporation: +https://datatracker.ietf.org/ipr/1914/ + +Broadcom Corporation: +https://datatracker.ietf.org/ipr/1526/ + +------------------------------------------------------------------------------ +librav1e is redistributed within opencv-python macOS packages. +This license applies to librav1e binary in the directory cv2/. + +BSD 2-Clause License + +Copyright (c) 2017-2020, the rav1e contributors +All rights reserved. + +Redistribution and use in source and binary forms, with or without +modification, are permitted provided that the following conditions are met: + +* Redistributions of source code must retain the above copyright notice, this + list of conditions and the following disclaimer. + +* Redistributions in binary form must reproduce the above copyright notice, + this list of conditions and the following disclaimer in the documentation + and/or other materials provided with the distribution. + +THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" +AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE +IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE +DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE +FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL +DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR +SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER +CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, +OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE +OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + +------------------------------------------------------------------------------ +libsnappy is redistributed within opencv-python macOS packages. +This license applies to libsnappy binary in the directory cv2/. + +Copyright 2011, Google Inc. +All rights reserved. + +Redistribution and use in source and binary forms, with or without +modification, are permitted provided that the following conditions are +met: + + * Redistributions of source code must retain the above copyright +notice, this list of conditions and the following disclaimer. + * Redistributions in binary form must reproduce the above +copyright notice, this list of conditions and the following disclaimer +in the documentation and/or other materials provided with the +distribution. + * Neither the name of Google Inc. nor the names of its +contributors may be used to endorse or promote products derived from +this software without specific prior written permission. + +THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS +"AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT +LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR +A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT +OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, +SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT +LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, +DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY +THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT +(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE +OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + +------------------------------------------------------------------------------ +libspeex is redistributed within opencv-python macOS packages. +This license applies to libspeex binary in the directory cv2/. + +Copyright 2002-2008 Xiph.org Foundation +Copyright 2002-2008 Jean-Marc Valin +Copyright 2005-2007 Analog Devices Inc. +Copyright 2005-2008 Commonwealth Scientific and Industrial Research + Organisation (CSIRO) +Copyright 1993, 2002, 2006 David Rowe +Copyright 2003 EpicGames +Copyright 1992-1994 Jutta Degener, Carsten Bormann + +Redistribution and use in source and binary forms, with or without +modification, are permitted provided that the following conditions +are met: + +- Redistributions of source code must retain the above copyright +notice, this list of conditions and the following disclaimer. + +- Redistributions in binary form must reproduce the above copyright +notice, this list of conditions and the following disclaimer in the +documentation and/or other materials provided with the distribution. + +- Neither the name of the Xiph.org Foundation nor the names of its +contributors may be used to endorse or promote products derived from +this software without specific prior written permission. + +THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS +``AS IS'' AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT +LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR +A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE FOUNDATION OR +CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, +EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, +PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR +PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF +LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING +NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS +SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + +------------------------------------------------------------------------------ +libsrt is redistributed within opencv-python macOS packages. +This license applies to libsrt binary in the directory cv2/. + +/* + * + * Copyright (c) 2001-2017 Cisco Systems, Inc. + * All rights reserved. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions + * are met: + * + * Redistributions of source code must retain the above copyright + * notice, this list of conditions and the following disclaimer. + * + * Redistributions in binary form must reproduce the above + * copyright notice, this list of conditions and the following + * disclaimer in the documentation and/or other materials provided + * with the distribution. + * + * Neither the name of the Cisco Systems, Inc. nor the names of its + * contributors may be used to endorse or promote products derived + * from this software without specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS + * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT + * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS + * FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE + * COPYRIGHT HOLDERS OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, + * INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES + * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR + * SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) + * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, + * STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) + * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED + * OF THE POSSIBILITY OF SUCH DAMAGE. + * + */ + + + Mozilla Public License Version 2.0 +================================== + +1. Definitions +-------------- + +1.1. "Contributor" + means each individual or legal entity that creates, contributes to + the creation of, or owns Covered Software. + +1.2. "Contributor Version" + means the combination of the Contributions of others (if any) used + by a Contributor and that particular Contributor's Contribution. + +1.3. "Contribution" + means Covered Software of a particular Contributor. + +1.4. "Covered Software" + means Source Code Form to which the initial Contributor has attached + the notice in Exhibit A, the Executable Form of such Source Code + Form, and Modifications of such Source Code Form, in each case + including portions thereof. + +1.5. "Incompatible With Secondary Licenses" + means + + (a) that the initial Contributor has attached the notice described + in Exhibit B to the Covered Software; or + + (b) that the Covered Software was made available under the terms of + version 1.1 or earlier of the License, but not also under the + terms of a Secondary License. + +1.6. "Executable Form" + means any form of the work other than Source Code Form. + +1.7. "Larger Work" + means a work that combines Covered Software with other material, in + a separate file or files, that is not Covered Software. + +1.8. "License" + means this document. + +1.9. "Licensable" + means having the right to grant, to the maximum extent possible, + whether at the time of the initial grant or subsequently, any and + all of the rights conveyed by this License. + +1.10. "Modifications" + means any of the following: + + (a) any file in Source Code Form that results from an addition to, + deletion from, or modification of the contents of Covered + Software; or + + (b) any new file in Source Code Form that contains any Covered + Software. + +1.11. "Patent Claims" of a Contributor + means any patent claim(s), including without limitation, method, + process, and apparatus claims, in any patent Licensable by such + Contributor that would be infringed, but for the grant of the + License, by the making, using, selling, offering for sale, having + made, import, or transfer of either its Contributions or its + Contributor Version. + +1.12. "Secondary License" + means either the GNU General Public License, Version 2.0, the GNU + Lesser General Public License, Version 2.1, the GNU Affero General + Public License, Version 3.0, or any later versions of those + licenses. + +1.13. "Source Code Form" + means the form of the work preferred for making modifications. + +1.14. "You" (or "Your") + means an individual or a legal entity exercising rights under this + License. For legal entities, "You" includes any entity that + controls, is controlled by, or is under common control with You. For + purposes of this definition, "control" means (a) the power, direct + or indirect, to cause the direction or management of such entity, + whether by contract or otherwise, or (b) ownership of more than + fifty percent (50%) of the outstanding shares or beneficial + ownership of such entity. + +2. License Grants and Conditions +-------------------------------- + +2.1. Grants + +Each Contributor hereby grants You a world-wide, royalty-free, +non-exclusive license: + +(a) under intellectual property rights (other than patent or trademark) + Licensable by such Contributor to use, reproduce, make available, + modify, display, perform, distribute, and otherwise exploit its + Contributions, either on an unmodified basis, with Modifications, or + as part of a Larger Work; and + +(b) under Patent Claims of such Contributor to make, use, sell, offer + for sale, have made, import, and otherwise transfer either its + Contributions or its Contributor Version. + +2.2. Effective Date + +The licenses granted in Section 2.1 with respect to any Contribution +become effective for each Contribution on the date the Contributor first +distributes such Contribution. + +2.3. Limitations on Grant Scope + +The licenses granted in this Section 2 are the only rights granted under +this License. No additional rights or licenses will be implied from the +distribution or licensing of Covered Software under this License. +Notwithstanding Section 2.1(b) above, no patent license is granted by a +Contributor: + +(a) for any code that a Contributor has removed from Covered Software; + or + +(b) for infringements caused by: (i) Your and any other third party's + modifications of Covered Software, or (ii) the combination of its + Contributions with other software (except as part of its Contributor + Version); or + +(c) under Patent Claims infringed by Covered Software in the absence of + its Contributions. + +This License does not grant any rights in the trademarks, service marks, +or logos of any Contributor (except as may be necessary to comply with +the notice requirements in Section 3.4). + +2.4. Subsequent Licenses + +No Contributor makes additional grants as a result of Your choice to +distribute the Covered Software under a subsequent version of this +License (see Section 10.2) or under the terms of a Secondary License (if +permitted under the terms of Section 3.3). + +2.5. Representation + +Each Contributor represents that the Contributor believes its +Contributions are its original creation(s) or it has sufficient rights +to grant the rights to its Contributions conveyed by this License. + +2.6. Fair Use + +This License is not intended to limit any rights You have under +applicable copyright doctrines of fair use, fair dealing, or other +equivalents. + +2.7. Conditions + +Sections 3.1, 3.2, 3.3, and 3.4 are conditions of the licenses granted +in Section 2.1. + +3. Responsibilities +------------------- + +3.1. Distribution of Source Form + +All distribution of Covered Software in Source Code Form, including any +Modifications that You create or to which You contribute, must be under +the terms of this License. You must inform recipients that the Source +Code Form of the Covered Software is governed by the terms of this +License, and how they can obtain a copy of this License. You may not +attempt to alter or restrict the recipients' rights in the Source Code +Form. + +3.2. Distribution of Executable Form + +If You distribute Covered Software in Executable Form then: + +(a) such Covered Software must also be made available in Source Code + Form, as described in Section 3.1, and You must inform recipients of + the Executable Form how they can obtain a copy of such Source Code + Form by reasonable means in a timely manner, at a charge no more + than the cost of distribution to the recipient; and + +(b) You may distribute such Executable Form under the terms of this + License, or sublicense it under different terms, provided that the + license for the Executable Form does not attempt to limit or alter + the recipients' rights in the Source Code Form under this License. + +3.3. Distribution of a Larger Work + +You may create and distribute a Larger Work under terms of Your choice, +provided that You also comply with the requirements of this License for +the Covered Software. If the Larger Work is a combination of Covered +Software with a work governed by one or more Secondary Licenses, and the +Covered Software is not Incompatible With Secondary Licenses, this +License permits You to additionally distribute such Covered Software +under the terms of such Secondary License(s), so that the recipient of +the Larger Work may, at their option, further distribute the Covered +Software under the terms of either this License or such Secondary +License(s). + +3.4. Notices + +You may not remove or alter the substance of any license notices +(including copyright notices, patent notices, disclaimers of warranty, +or limitations of liability) contained within the Source Code Form of +the Covered Software, except that You may alter any license notices to +the extent required to remedy known factual inaccuracies. + +3.5. Application of Additional Terms + +You may choose to offer, and to charge a fee for, warranty, support, +indemnity or liability obligations to one or more recipients of Covered +Software. However, You may do so only on Your own behalf, and not on +behalf of any Contributor. You must make it absolutely clear that any +such warranty, support, indemnity, or liability obligation is offered by +You alone, and You hereby agree to indemnify every Contributor for any +liability incurred by such Contributor as a result of warranty, support, +indemnity or liability terms You offer. You may include additional +disclaimers of warranty and limitations of liability specific to any +jurisdiction. + +4. Inability to Comply Due to Statute or Regulation +--------------------------------------------------- + +If it is impossible for You to comply with any of the terms of this +License with respect to some or all of the Covered Software due to +statute, judicial order, or regulation then You must: (a) comply with +the terms of this License to the maximum extent possible; and (b) +describe the limitations and the code they affect. Such description must +be placed in a text file included with all distributions of the Covered +Software under this License. Except to the extent prohibited by statute +or regulation, such description must be sufficiently detailed for a +recipient of ordinary skill to be able to understand it. + +5. Termination +-------------- + +5.1. The rights granted under this License will terminate automatically +if You fail to comply with any of its terms. However, if You become +compliant, then the rights granted under this License from a particular +Contributor are reinstated (a) provisionally, unless and until such +Contributor explicitly and finally terminates Your grants, and (b) on an +ongoing basis, if such Contributor fails to notify You of the +non-compliance by some reasonable means prior to 60 days after You have +come back into compliance. Moreover, Your grants from a particular +Contributor are reinstated on an ongoing basis if such Contributor +notifies You of the non-compliance by some reasonable means, this is the +first time You have received notice of non-compliance with this License +from such Contributor, and You become compliant prior to 30 days after +Your receipt of the notice. + +5.2. If You initiate litigation against any entity by asserting a patent +infringement claim (excluding declaratory judgment actions, +counter-claims, and cross-claims) alleging that a Contributor Version +directly or indirectly infringes any patent, then the rights granted to +You by any and all Contributors for the Covered Software under Section +2.1 of this License shall terminate. + +5.3. In the event of termination under Sections 5.1 or 5.2 above, all +end user license agreements (excluding distributors and resellers) which +have been validly granted by You or Your distributors under this License +prior to termination shall survive termination. + +************************************************************************ +* * +* 6. Disclaimer of Warranty * +* ------------------------- * +* * +* Covered Software is provided under this License on an "as is" * +* basis, without warranty of any kind, either expressed, implied, or * +* statutory, including, without limitation, warranties that the * +* Covered Software is free of defects, merchantable, fit for a * +* particular purpose or non-infringing. The entire risk as to the * +* quality and performance of the Covered Software is with You. * +* Should any Covered Software prove defective in any respect, You * +* (not any Contributor) assume the cost of any necessary servicing, * +* repair, or correction. This disclaimer of warranty constitutes an * +* essential part of this License. No use of any Covered Software is * +* authorized under this License except under this disclaimer. * +* * +************************************************************************ + +************************************************************************ +* * +* 7. Limitation of Liability * +* -------------------------- * +* * +* Under no circumstances and under no legal theory, whether tort * +* (including negligence), contract, or otherwise, shall any * +* Contributor, or anyone who distributes Covered Software as * +* permitted above, be liable to You for any direct, indirect, * +* special, incidental, or consequential damages of any character * +* including, without limitation, damages for lost profits, loss of * +* goodwill, work stoppage, computer failure or malfunction, or any * +* and all other commercial damages or losses, even if such party * +* shall have been informed of the possibility of such damages. This * +* limitation of liability shall not apply to liability for death or * +* personal injury resulting from such party's negligence to the * +* extent applicable law prohibits such limitation. Some * +* jurisdictions do not allow the exclusion or limitation of * +* incidental or consequential damages, so this exclusion and * +* limitation may not apply to You. * +* * +************************************************************************ + +8. Litigation +------------- + +Any litigation relating to this License may be brought only in the +courts of a jurisdiction where the defendant maintains its principal +place of business and such litigation shall be governed by laws of that +jurisdiction, without reference to its conflict-of-law provisions. +Nothing in this Section shall prevent a party's ability to bring +cross-claims or counter-claims. + +9. Miscellaneous +---------------- + +This License represents the complete agreement concerning the subject +matter hereof. If any provision of this License is held to be +unenforceable, such provision shall be reformed only to the extent +necessary to make it enforceable. Any law or regulation which provides +that the language of a contract shall be construed against the drafter +shall not be used to construe this License against a Contributor. + +10. Versions of the License +--------------------------- + +10.1. New Versions + +Mozilla Foundation is the license steward. Except as provided in Section +10.3, no one other than the license steward has the right to modify or +publish new versions of this License. Each version will be given a +distinguishing version number. + +10.2. Effect of New Versions + +You may distribute the Covered Software under the terms of the version +of the License under which You originally received the Covered Software, +or under the terms of any subsequent version published by the license +steward. + +10.3. Modified Versions + +If you create software not governed by this License, and you want to +create a new license for such software, you may create and use a +modified version of this License if you rename the license and remove +any references to the name of the license steward (except to note that +such modified license differs from this License). + +10.4. Distributing Source Code Form that is Incompatible With Secondary +Licenses + +If You choose to distribute Source Code Form that is Incompatible With +Secondary Licenses under the terms of this version of the License, the +notice described in Exhibit B of this License must be attached. + +Exhibit A - Source Code Form License Notice +------------------------------------------- + + This Source Code Form is subject to the terms of the Mozilla Public + License, v. 2.0. If a copy of the MPL was not distributed with this + file, You can obtain one at http://mozilla.org/MPL/2.0/. + +If it is not possible or desirable to put the notice in a particular +file, then You may include the notice in a location (such as a LICENSE +file in a relevant directory) where a recipient would be likely to look +for such a notice. + +You may add additional accurate notices of copyright ownership. + +Exhibit B - "Incompatible With Secondary Licenses" Notice +--------------------------------------------------------- + + This Source Code Form is "Incompatible With Secondary Licenses", as + defined by the Mozilla Public License, v. 2.0. + +------------------------------------------------------------------------------ +libtheoradec and libtheoraenc are redistributed within opencv-python macOS packages. +This license applies to libtheoradec and libtheoraenc binaries in the directory cv2/. + + Copyright (C) 2002-2009 Xiph.org Foundation + +Redistribution and use in source and binary forms, with or without +modification, are permitted provided that the following conditions +are met: + +- Redistributions of source code must retain the above copyright +notice, this list of conditions and the following disclaimer. + +- Redistributions in binary form must reproduce the above copyright +notice, this list of conditions and the following disclaimer in the +documentation and/or other materials provided with the distribution. + +- Neither the name of the Xiph.org Foundation nor the names of its +contributors may be used to endorse or promote products derived from +this software without specific prior written permission. + +THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS +``AS IS'' AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT +LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR +A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE FOUNDATION +OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, +SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT +LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, +DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY +THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT +(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE +OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + +------------------------------------------------------------------------------ +libwebp and libwebpmux are redistributed within all opencv-python packages. +This license applies to libwebp and libwebpmux binaries in the directory cv2/. + +Copyright (c) 2010, Google Inc. All rights reserved. + +Redistribution and use in source and binary forms, with or without +modification, are permitted provided that the following conditions are +met: + + * Redistributions of source code must retain the above copyright + notice, this list of conditions and the following disclaimer. + + * Redistributions in binary form must reproduce the above copyright + notice, this list of conditions and the following disclaimer in + the documentation and/or other materials provided with the + distribution. + + * Neither the name of Google nor the names of its contributors may + be used to endorse or promote products derived from this software + without specific prior written permission. + +THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS +"AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT +LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR +A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT +HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, +SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT +LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, +DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY +THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT +(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE +OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + +------------------------------------------------------------------------------ +libvorbis and libvorbisenc are redistributed within opencv-python macOS packages. +This license applies to libvorbis and libvorbisenc binaries in the directory cv2/. + +Copyright (c) 2002-2020 Xiph.org Foundation + +Redistribution and use in source and binary forms, with or without +modification, are permitted provided that the following conditions +are met: + +- Redistributions of source code must retain the above copyright +notice, this list of conditions and the following disclaimer. + +- Redistributions in binary form must reproduce the above copyright +notice, this list of conditions and the following disclaimer in the +documentation and/or other materials provided with the distribution. + +- Neither the name of the Xiph.org Foundation nor the names of its +contributors may be used to endorse or promote products derived from +this software without specific prior written permission. + +THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS +``AS IS'' AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT +LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR +A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE FOUNDATION +OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, +SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT +LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, +DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY +THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT +(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE +OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + +------------------------------------------------------------------------------ +Libxcb utility libraries are redistributed within opencv-python non-headless Linux packages. +This license applies to libxcb related binaries in the directory cv2/. + +Copyright (C) 2001-2006 Bart Massey, Jamey Sharp, and Josh Triplett. +All Rights Reserved. + +Permission is hereby granted, free of charge, to any person +obtaining a copy of this software and associated +documentation files (the "Software"), to deal in the +Software without restriction, including without limitation +the rights to use, copy, modify, merge, publish, distribute, +sublicense, and/or sell copies of the Software, and to +permit persons to whom the Software is furnished to do so, +subject to the following conditions: + +The above copyright notice and this permission notice shall +be included in all copies or substantial portions of the +Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY +KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE +WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR +PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS +BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER +IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR +OTHER DEALINGS IN THE SOFTWARE. + +Except as contained in this notice, the names of the authors +or their institutions shall not be used in advertising or +otherwise to promote the sale, use or other dealings in this +Software without prior written authorization from the +authors. + +------------------------------------------------------------------------------ +Libxcb-image is redistributed within opencv-python non-headless Linux packages. +This license applies to libxcb-image binary in the directory cv2/. + +Copyright © 2007-2008 Bart Massey +Copyright © 2008 Julien Danjou +Copyright © 2008 Keith Packard + +Permission is hereby granted, free of charge, to any person +obtaining a copy of this software and associated documentation +files (the "Software"), to deal in the Software without +restriction, including without limitation the rights to use, copy, +modify, merge, publish, distribute, sublicense, and/or sell copies +of the Software, and to permit persons to whom the Software is +furnished to do so, subject to the following conditions: + +The above copyright notice and this permission notice shall be +included in all copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, +EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF +MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND +NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS BE LIABLE FOR ANY +CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF +CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION +WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. + +Except as contained in this notice, the names of the authors or +their institutions shall not be used in advertising or otherwise to +promote the sale, use or other dealings in this Software without +prior written authorization from the authors. + +------------------------------------------------------------------------------ +Libxcb-util is redistributed within opencv-python non-headless Linux packages. +This license applies to libxcb-util binary in the directory cv2/. + +Copyright © 2008 Bart Massey +Copyright © 2008 Ian Osgood +Copyright © 2008 Jamey Sharp +Copyright © 2008 Josh Triplett +Copyright © 2008-2009 Julien Danjou + +Permission is hereby granted, free of charge, to any person +obtaining a copy of this software and associated documentation +files (the "Software"), to deal in the Software without +restriction, including without limitation the rights to use, copy, +modify, merge, publish, distribute, sublicense, and/or sell copies +of the Software, and to permit persons to whom the Software is +furnished to do so, subject to the following conditions: + +The above copyright notice and this permission notice shall be +included in all copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, +EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF +MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND +NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS BE LIABLE FOR ANY +CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF +CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION +WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. + +Except as contained in this notice, the names of the authors or +their institutions shall not be used in advertising or otherwise to +promote the sale, use or other dealings in this Software without +prior written authorization from the authors. + +------------------------------------------------------------------------------ +Libxcb-render-util is redistributed within opencv-python non-headless Linux packages. +This license applies to libxcb-render-util binary in the directory cv2/. + +Copyright © 2000 Keith Packard + +Permission to use, copy, modify, distribute, and sell this software and its +documentation for any purpose is hereby granted without fee, provided that +the above copyright notice appear in all copies and that both that +copyright notice and this permission notice appear in supporting +documentation, and that the name of Keith Packard not be used in +advertising or publicity pertaining to distribution of the software without +specific, written prior permission. Keith Packard makes no +representations about the suitability of this software for any purpose. It +is provided "as is" without express or implied warranty. + +KEITH PACKARD DISCLAIMS ALL WARRANTIES WITH REGARD TO THIS SOFTWARE, +INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS, IN NO +EVENT SHALL KEITH PACKARD BE LIABLE FOR ANY SPECIAL, INDIRECT OR +CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE, +DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER +TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR +PERFORMANCE OF THIS SOFTWARE. + +Copyright © 2006 Jamey Sharp. + +Permission is hereby granted, free of charge, to any person obtaining a +copy of this software and associated documentation files (the "Software"), +to deal in the Software without restriction, including without limitation +the rights to use, copy, modify, merge, publish, distribute, sublicense, +and/or sell copies of the Software, and to permit persons to whom the +Software is furnished to do so, subject to the following conditions: + +The above copyright notice and this permission notice shall be included in +all copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +AUTHORS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN +ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN +CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. + +Except as contained in this notice, the names of the authors or their +institutions shall not be used in advertising or otherwise to promote the +sale, use or other dealings in this Software without prior written +authorization from the authors. + +Copyright © 2006 Ian Osgood + +Permission is hereby granted, free of charge, to any person obtaining a +copy of this software and associated documentation files (the "Software"), +to deal in the Software without restriction, including without limitation +the rights to use, copy, modify, merge, publish, distribute, sublicense, +and/or sell copies of the Software, and to permit persons to whom the +Software is furnished to do so, subject to the following conditions: + +The above copyright notice and this permission notice shall be included in +all copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +AUTHORS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN +ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN +CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. + +Except as contained in this notice, the names of the authors or their +institutions shall not be used in advertising or otherwise to promote the +sale, use or other dealings in this Software without prior written +authorization from the authors. + +------------------------------------------------------------------------------ +Libxcb-icccm is redistributed within opencv-python non-headless Linux packages. +This license applies to Libxcb-icccm binary in the directory cv2/. + +Copyright © 2008-2011 Arnaud Fontaine +Copyright © 2007-2008 Vincent Torri + +Permission is hereby granted, free of charge, to any person +obtaining a copy of this software and associated documentation +files (the "Software"), to deal in the Software without +restriction, including without limitation the rights to use, copy, +modify, merge, publish, distribute, sublicense, and/or sell copies +of the Software, and to permit persons to whom the Software is +furnished to do so, subject to the following conditions: + +The above copyright notice and this permission notice shall be +included in all copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, +EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF +MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND +NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS BE LIABLE FOR ANY +CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF +CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION +WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. + +Except as contained in this notice, the names of the authors or +their institutions shall not be used in advertising or otherwise to +promote the sale, use or other dealings in this Software without +prior written authorization from the authors. + +------------------------------------------------------------------------------ +libXau is redistributed within opencv-python non-headless Linux packages. +This license applies to libXau binary in the directory cv2/. + +Copyright 1988, 1993, 1994, 1998 The Open Group + +Permission to use, copy, modify, distribute, and sell this software and its +documentation for any purpose is hereby granted without fee, provided that +the above copyright notice appear in all copies and that both that +copyright notice and this permission notice appear in supporting +documentation. + +The above copyright notice and this permission notice shall be included in +all copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +OPEN GROUP BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN +AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN +CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. + +Except as contained in this notice, the name of The Open Group shall not be +used in advertising or otherwise to promote the sale, use or other dealings +in this Software without prior written authorization from The Open Group. + +------------------------------------------------------------------------------ +Vulkan headers are redistributed within all opencv-python packages. +This license applies to Vulkan headers in the directory 3rdparty/include/vulkan. + +Copyright (c) 2015-2018 The Khronos Group Inc. + +Licensed under the Apache License, Version 2.0 (the "License"); +you may not use this file except in compliance with the License. +You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + +Unless required by applicable law or agreed to in writing, software +distributed under the License is distributed on an "AS IS" BASIS, +WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +See the License for the specific language governing permissions and +limitations under the License. + +------------------------------------------------------------------------------ +Libjpeg-turbo is redistributed within all opencv-python packages as build option. + +libjpeg-turbo Licenses +====================== + +libjpeg-turbo is covered by three compatible BSD-style open source licenses: + +- The IJG (Independent JPEG Group) License, which is listed in + [README.ijg](README.ijg) + + This license applies to the libjpeg API library and associated programs + (any code inherited from libjpeg, and any modifications to that code.) + +- The Modified (3-clause) BSD License, which is listed below + + This license covers the TurboJPEG API library and associated programs, as + well as the build system. + +- The [zlib License](https://opensource.org/licenses/Zlib) + + This license is a subset of the other two, and it covers the libjpeg-turbo + SIMD extensions. + + +Complying with the libjpeg-turbo Licenses +========================================= + +This section provides a roll-up of the libjpeg-turbo licensing terms, to the +best of our understanding. + +1. If you are distributing a modified version of the libjpeg-turbo source, + then: + + 1. You cannot alter or remove any existing copyright or license notices + from the source. + + **Origin** + - Clause 1 of the IJG License + - Clause 1 of the Modified BSD License + - Clauses 1 and 3 of the zlib License + + 2. You must add your own copyright notice to the header of each source + file you modified, so others can tell that you modified that file (if + there is not an existing copyright header in that file, then you can + simply add a notice stating that you modified the file.) + + **Origin** + - Clause 1 of the IJG License + - Clause 2 of the zlib License + + 3. You must include the IJG README file, and you must not alter any of the + copyright or license text in that file. + + **Origin** + - Clause 1 of the IJG License + +2. If you are distributing only libjpeg-turbo binaries without the source, or + if you are distributing an application that statically links with + libjpeg-turbo, then: + + 1. Your product documentation must include a message stating: + + This software is based in part on the work of the Independent JPEG + Group. + + **Origin** + - Clause 2 of the IJG license + + 2. If your binary distribution includes or uses the TurboJPEG API, then + your product documentation must include the text of the Modified BSD + License (see below.) + + **Origin** + - Clause 2 of the Modified BSD License + +3. You cannot use the name of the IJG or The libjpeg-turbo Project or the + contributors thereof in advertising, publicity, etc. + + **Origin** + - IJG License + - Clause 3 of the Modified BSD License + +4. The IJG and The libjpeg-turbo Project do not warrant libjpeg-turbo to be + free of defects, nor do we accept any liability for undesirable + consequences resulting from your use of the software. + + **Origin** + - IJG License + - Modified BSD License + - zlib License + + +The Modified (3-clause) BSD License +=================================== + +Copyright (C)2009-2022 D. R. Commander. All Rights Reserved.
+Copyright (C)2015 Viktor Szathmáry. All Rights Reserved. + +Redistribution and use in source and binary forms, with or without +modification, are permitted provided that the following conditions are met: + +- Redistributions of source code must retain the above copyright notice, + this list of conditions and the following disclaimer. +- Redistributions in binary form must reproduce the above copyright notice, + this list of conditions and the following disclaimer in the documentation + and/or other materials provided with the distribution. +- Neither the name of the libjpeg-turbo Project nor the names of its + contributors may be used to endorse or promote products derived from this + software without specific prior written permission. + +THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS", +AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE +IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE +ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDERS OR CONTRIBUTORS BE +LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR +CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF +SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS +INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN +CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) +ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE +POSSIBILITY OF SUCH DAMAGE. + + +Why Three Licenses? +=================== + +The zlib License could have been used instead of the Modified (3-clause) BSD +License, and since the IJG License effectively subsumes the distribution +conditions of the zlib License, this would have effectively placed +libjpeg-turbo binary distributions under the IJG License. However, the IJG +License specifically refers to the Independent JPEG Group and does not extend +attribution and endorsement protections to other entities. Thus, it was +desirable to choose a license that granted us the same protections for new code +that were granted to the IJG for code derived from their software. + +------------------------------------------------------------------------------ +Libspng is redistributed within all opencv-python packages as build option. + +BSD 2-Clause License + +Copyright (c) 2018-2022, Randy +All rights reserved. + +Redistribution and use in source and binary forms, with or without +modification, are permitted provided that the following conditions are met: + +* Redistributions of source code must retain the above copyright notice, this + list of conditions and the following disclaimer. + +* Redistributions in binary form must reproduce the above copyright notice, + this list of conditions and the following disclaimer in the documentation + and/or other materials provided with the distribution. + +THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" +AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE +IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE +DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE +FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL +DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR +SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER +CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, +OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE +OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + +------------------------------------------------------------------------------ +QUIRC library is redistributed within all opencv-python packages. + +quirc -- QR-code recognition library +Copyright (C) 2010-2012 Daniel Beer + +Permission to use, copy, modify, and/or distribute this software for +any purpose with or without fee is hereby granted, provided that the +above copyright notice and this permission notice appear in all +copies. + +THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL +WARRANTIES WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED +WARRANTIES OF MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE +AUTHOR BE LIABLE FOR ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL +DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR +PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER +TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR +PERFORMANCE OF THIS SOFTWARE. + +------------------------------------------------------------------------------ +Flatbuffers library is redistributed within all opencv-python packages. + + Apache License + Version 2.0, January 2004 + http://www.apache.org/licenses/ + + TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION + + 1. Definitions. + + "License" shall mean the terms and conditions for use, reproduction, + and distribution as defined by Sections 1 through 9 of this document. + + "Licensor" shall mean the copyright owner or entity authorized by + the copyright owner that is granting the License. + + "Legal Entity" shall mean the union of the acting entity and all + other entities that control, are controlled by, or are under common + control with that entity. For the purposes of this definition, + "control" means (i) the power, direct or indirect, to cause the + direction or management of such entity, whether by contract or + otherwise, or (ii) ownership of fifty percent (50%) or more of the + outstanding shares, or (iii) beneficial ownership of such entity. + + "You" (or "Your") shall mean an individual or Legal Entity + exercising permissions granted by this License. + + "Source" form shall mean the preferred form for making modifications, + including but not limited to software source code, documentation + source, and configuration files. + + "Object" form shall mean any form resulting from mechanical + transformation or translation of a Source form, including but + not limited to compiled object code, generated documentation, + and conversions to other media types. + + "Work" shall mean the work of authorship, whether in Source or + Object form, made available under the License, as indicated by a + copyright notice that is included in or attached to the work + (an example is provided in the Appendix below). + + "Derivative Works" shall mean any work, whether in Source or Object + form, that is based on (or derived from) the Work and for which the + editorial revisions, annotations, elaborations, or other modifications + represent, as a whole, an original work of authorship. For the purposes + of this License, Derivative Works shall not include works that remain + separable from, or merely link (or bind by name) to the interfaces of, + the Work and Derivative Works thereof. + + "Contribution" shall mean any work of authorship, including + the original version of the Work and any modifications or additions + to that Work or Derivative Works thereof, that is intentionally + submitted to Licensor for inclusion in the Work by the copyright owner + or by an individual or Legal Entity authorized to submit on behalf of + the copyright owner. For the purposes of this definition, "submitted" + means any form of electronic, verbal, or written communication sent + to the Licensor or its representatives, including but not limited to + communication on electronic mailing lists, source code control systems, + and issue tracking systems that are managed by, or on behalf of, the + Licensor for the purpose of discussing and improving the Work, but + excluding communication that is conspicuously marked or otherwise + designated in writing by the copyright owner as "Not a Contribution." + + "Contributor" shall mean Licensor and any individual or Legal Entity + on behalf of whom a Contribution has been received by Licensor and + subsequently incorporated within the Work. + + 2. Grant of Copyright License. Subject to the terms and conditions of + this License, each Contributor hereby grants to You a perpetual, + worldwide, non-exclusive, no-charge, royalty-free, irrevocable + copyright license to reproduce, prepare Derivative Works of, + publicly display, publicly perform, sublicense, and distribute the + Work and such Derivative Works in Source or Object form. + + 3. Grant of Patent License. Subject to the terms and conditions of + this License, each Contributor hereby grants to You a perpetual, + worldwide, non-exclusive, no-charge, royalty-free, irrevocable + (except as stated in this section) patent license to make, have made, + use, offer to sell, sell, import, and otherwise transfer the Work, + where such license applies only to those patent claims licensable + by such Contributor that are necessarily infringed by their + Contribution(s) alone or by combination of their Contribution(s) + with the Work to which such Contribution(s) was submitted. If You + institute patent litigation against any entity (including a + cross-claim or counterclaim in a lawsuit) alleging that the Work + or a Contribution incorporated within the Work constitutes direct + or contributory patent infringement, then any patent licenses + granted to You under this License for that Work shall terminate + as of the date such litigation is filed. + + 4. Redistribution. You may reproduce and distribute copies of the + Work or Derivative Works thereof in any medium, with or without + modifications, and in Source or Object form, provided that You + meet the following conditions: + + (a) You must give any other recipients of the Work or + Derivative Works a copy of this License; and + + (b) You must cause any modified files to carry prominent notices + stating that You changed the files; and + + (c) You must retain, in the Source form of any Derivative Works + that You distribute, all copyright, patent, trademark, and + attribution notices from the Source form of the Work, + excluding those notices that do not pertain to any part of + the Derivative Works; and + + (d) If the Work includes a "NOTICE" text file as part of its + distribution, then any Derivative Works that You distribute must + include a readable copy of the attribution notices contained + within such NOTICE file, excluding those notices that do not + pertain to any part of the Derivative Works, in at least one + of the following places: within a NOTICE text file distributed + as part of the Derivative Works; within the Source form or + documentation, if provided along with the Derivative Works; or, + within a display generated by the Derivative Works, if and + wherever such third-party notices normally appear. The contents + of the NOTICE file are for informational purposes only and + do not modify the License. You may add Your own attribution + notices within Derivative Works that You distribute, alongside + or as an addendum to the NOTICE text from the Work, provided + that such additional attribution notices cannot be construed + as modifying the License. + + You may add Your own copyright statement to Your modifications and + may provide additional or different license terms and conditions + for use, reproduction, or distribution of Your modifications, or + for any such Derivative Works as a whole, provided Your use, + reproduction, and distribution of the Work otherwise complies with + the conditions stated in this License. + + 5. Submission of Contributions. Unless You explicitly state otherwise, + any Contribution intentionally submitted for inclusion in the Work + by You to the Licensor shall be under the terms and conditions of + this License, without any additional terms or conditions. + Notwithstanding the above, nothing herein shall supersede or modify + the terms of any separate license agreement you may have executed + with Licensor regarding such Contributions. + + 6. Trademarks. This License does not grant permission to use the trade + names, trademarks, service marks, or product names of the Licensor, + except as required for reasonable and customary use in describing the + origin of the Work and reproducing the content of the NOTICE file. + + 7. Disclaimer of Warranty. Unless required by applicable law or + agreed to in writing, Licensor provides the Work (and each + Contributor provides its Contributions) on an "AS IS" BASIS, + WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or + implied, including, without limitation, any warranties or conditions + of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A + PARTICULAR PURPOSE. You are solely responsible for determining the + appropriateness of using or redistributing the Work and assume any + risks associated with Your exercise of permissions under this License. + + 8. Limitation of Liability. In no event and under no legal theory, + whether in tort (including negligence), contract, or otherwise, + unless required by applicable law (such as deliberate and grossly + negligent acts) or agreed to in writing, shall any Contributor be + liable to You for damages, including any direct, indirect, special, + incidental, or consequential damages of any character arising as a + result of this License or out of the use or inability to use the + Work (including but not limited to damages for loss of goodwill, + work stoppage, computer failure or malfunction, or any and all + other commercial damages or losses), even if such Contributor + has been advised of the possibility of such damages. + + 9. Accepting Warranty or Additional Liability. While redistributing + the Work or Derivative Works thereof, You may choose to offer, + and charge a fee for, acceptance of support, warranty, indemnity, + or other liability obligations and/or rights consistent with this + License. However, in accepting such obligations, You may act only + on Your own behalf and on Your sole responsibility, not on behalf + of any other Contributor, and only if You agree to indemnify, + defend, and hold each Contributor harmless for any liability + incurred by, or claims asserted against, such Contributor by reason + of your accepting any such warranty or additional liability. + + END OF TERMS AND CONDITIONS + + APPENDIX: How to apply the Apache License to your work. + + To apply the Apache License to your work, attach the following + boilerplate notice, with the fields enclosed by brackets "[]" + replaced with your own identifying information. (Don't include + the brackets!) The text should be enclosed in the appropriate + comment syntax for the file format. We also recommend that a + file or class name and description of purpose be included on the + same "printed page" as the copyright notice for easier + identification within third-party archives. + + Copyright [yyyy] [name of copyright owner] + + Licensed under the Apache License, Version 2.0 (the "License"); + you may not use this file except in compliance with the License. + You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + + Unless required by applicable law or agreed to in writing, software + distributed under the License is distributed on an "AS IS" BASIS, + WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + See the License for the specific language governing permissions and + limitations under the License. + +------------------------------------------------------------------------------ +Protobuf library is redistributed within all opencv-python packages. + +Copyright 2008 Google Inc. All rights reserved. + +Redistribution and use in source and binary forms, with or without +modification, are permitted provided that the following conditions are +met: + + * Redistributions of source code must retain the above copyright +notice, this list of conditions and the following disclaimer. + * Redistributions in binary form must reproduce the above +copyright notice, this list of conditions and the following disclaimer +in the documentation and/or other materials provided with the +distribution. + * Neither the name of Google Inc. nor the names of its +contributors may be used to endorse or promote products derived from +this software without specific prior written permission. + +THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS +"AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT +LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR +A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT +OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, +SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT +LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, +DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY +THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT +(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE +OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + +Code generated by the Protocol Buffer compiler is owned by the owner +of the input file used when generating it. This code is not +standalone and requires a support library to be linked with it. This +support library is itself covered by the above license. + +------------------------------------------------------------------------------ +OpenJPEG library is redistributed within all opencv-python packages. + +/* + * The copyright in this software is being made available under the 2-clauses + * BSD License, included below. This software may be subject to other third + * party and contributor rights, including patent rights, and no such rights + * are granted under this license. + * + * Copyright (c) 2002-2014, Universite catholique de Louvain (UCL), Belgium + * Copyright (c) 2002-2014, Professor Benoit Macq + * Copyright (c) 2003-2014, Antonin Descampe + * Copyright (c) 2003-2009, Francois-Olivier Devaux + * Copyright (c) 2005, Herve Drolon, FreeImage Team + * Copyright (c) 2002-2003, Yannick Verschueren + * Copyright (c) 2001-2003, David Janssens + * Copyright (c) 2011-2012, Centre National d'Etudes Spatiales (CNES), France + * Copyright (c) 2012, CS Systemes d'Information, France + * + * All rights reserved. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions + * are met: + * 1. Redistributions of source code must retain the above copyright + * notice, this list of conditions and the following disclaimer. + * 2. Redistributions in binary form must reproduce the above copyright + * notice, this list of conditions and the following disclaimer in the + * documentation and/or other materials provided with the distribution. + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS `AS IS' + * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE + * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE + * ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE + * LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR + * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF + * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS + * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN + * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) + * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE + * POSSIBILITY OF SUCH DAMAGE. + */ + +------------------------------------------------------------------------------ +TIFF library is redistributed within all opencv-python packages. + +Copyright (c) 1988-1997 Sam Leffler +Copyright (c) 1991-1997 Silicon Graphics, Inc. + +Permission to use, copy, modify, distribute, and sell this software and +its documentation for any purpose is hereby granted without fee, provided +that (i) the above copyright notices and this permission notice appear in +all copies of the software and related documentation, and (ii) the names of +Sam Leffler and Silicon Graphics may not be used in any advertising or +publicity relating to the software without the specific, prior written +permission of Sam Leffler and Silicon Graphics. + +THE SOFTWARE IS PROVIDED "AS-IS" AND WITHOUT WARRANTY OF ANY KIND, +EXPRESS, IMPLIED OR OTHERWISE, INCLUDING WITHOUT LIMITATION, ANY +WARRANTY OF MERCHANTABILITY OR FITNESS FOR A PARTICULAR PURPOSE. + +IN NO EVENT SHALL SAM LEFFLER OR SILICON GRAPHICS BE LIABLE FOR +ANY SPECIAL, INCIDENTAL, INDIRECT OR CONSEQUENTIAL DAMAGES OF ANY KIND, +OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, +WHETHER OR NOT ADVISED OF THE POSSIBILITY OF DAMAGE, AND ON ANY THEORY OF +LIABILITY, ARISING OUT OF OR IN CONNECTION WITH THE USE OR PERFORMANCE +OF THIS SOFTWARE. + +------------------------------------------------------------------------------ +OpenEXR library is redistributed within all opencv-python packages. + +Copyright (c) 2006, Industrial Light & Magic, a division of Lucasfilm +Entertainment Company Ltd. Portions contributed and copyright held by +others as indicated. All rights reserved. + +Redistribution and use in source and binary forms, with or without +modification, are permitted provided that the following conditions are +met: + + * Redistributions of source code must retain the above + copyright notice, this list of conditions and the following + disclaimer. + + * Redistributions in binary form must reproduce the above + copyright notice, this list of conditions and the following + disclaimer in the documentation and/or other materials provided with + the distribution. + + * Neither the name of Industrial Light & Magic nor the names of + any other contributors to this software may be used to endorse or + promote products derived from this software without specific prior + written permission. + +THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS +IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, +THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR +PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR +CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, +EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, +PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR +PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF +LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING +NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS +SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + +------------------------------------------------------------------------------ +Intel(R) IPP ICV library statically linked within x86 and x86_64 opencv-python packages. + +Intel(R) Integrated Performance Primitives 2021 Update 10 + +Intel Simplified Software License (Version October 2022) + +Intel(R) Integrated Performance Primitives (Intel(R) IPP) : Copyright (C) 1997 Intel Corporation + +Use and Redistribution. You may use and redistribute the software, which is +provided in binary form only, (the "Software"), without modification, +provided the following conditions are met: + +* Redistributions must reproduce the above copyright notice and these + terms of use in the Software and in the documentation and/or other materials + provided with the distribution. +* Neither the name of Intel nor the names of its suppliers may be used to + endorse or promote products derived from this Software without specific + prior written permission. +* No reverse engineering, decompilation, or disassembly of the Software is + permitted, nor any modification or alteration of the Software or its operation + at any time, including during execution. + +No other licenses. Except as provided in the preceding section, Intel grants no +licenses or other rights by implication, estoppel or otherwise to, patent, +copyright, trademark, trade name, service mark or other intellectual property +licenses or rights of Intel. + +Third party software. "Third Party Software" means the files (if any) listed +in the "third-party-software.txt" or other similarly-named text file that may +be included with the Software. Third Party Software, even if included with the +distribution of the Software, may be governed by separate license terms, including +without limitation, third party license terms, open source software notices and +terms, and/or other Intel software license terms. These separate license terms +solely govern Your use of the Third Party Software. + +DISCLAIMER. THIS SOFTWARE IS PROVIDED "AS IS" AND ANY EXPRESS OR IMPLIED +WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF +MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE, AND NON-INFRINGEMENT ARE +DISCLAIMED. THIS SOFTWARE IS NOT INTENDED FOR USE IN SYSTEMS OR APPLICATIONS +WHERE FAILURE OF THE SOFTWARE MAY CAUSE PERSONAL INJURY OR DEATH AND YOU AGREE +THAT YOU ARE FULLY RESPONSIBLE FOR ANY CLAIMS, COSTS, DAMAGES, EXPENSES, AND +ATTORNEYS' FEES ARISING OUT OF ANY SUCH USE, EVEN IF ANY CLAIM ALLEGES THAT +INTEL WAS NEGLIGENT REGARDING THE DESIGN OR MANUFACTURE OF THE SOFTWARE. + +LIMITATION OF LIABILITY. IN NO EVENT WILL INTEL BE LIABLE FOR ANY DIRECT, +INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, +BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, +DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF +LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE +OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF +ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + +No support. Intel may make changes to the Software, at any time without notice, +and is not obligated to support, update or provide training for the Software. + +Termination. Your right to use the Software is terminated in the event of your +breach of this license. + +Feedback. Should you provide Intel with comments, modifications, corrections, +enhancements or other input ("Feedback") related to the Software, Intel will be +free to use, disclose, reproduce, license or otherwise distribute or exploit the +Feedback in its sole discretion without any obligations or restrictions of any +kind, including without limitation, intellectual property rights or licensing +obligations. + +Compliance with laws. You agree to comply with all relevant laws and regulations +governing your use, transfer, import or export (or prohibition thereof) of the +Software. + +Governing law. All disputes will be governed by the laws of the United States of +America and the State of Delaware without reference to conflict of law +principles and subject to the exclusive jurisdiction of the state or federal +courts sitting in the State of Delaware, and each party agrees that it submits +to the personal jurisdiction and venue of those courts and waives any +objections. THE UNITED NATIONS CONVENTION ON CONTRACTS FOR THE INTERNATIONAL +SALE OF GOODS (1980) IS SPECIFICALLY EXCLUDED AND WILL NOT APPLY TO THE SOFTWARE. + +------------------------------------------------------------------------------ +Orbbec SDK distributed with arm64 MacOS packages. + +MIT License + +Copyright (c) 2023 OrbbecDeveloper + +Permission is hereby granted, free of charge, to any person obtaining a copy +of this software and associated documentation files (the "Software"), to deal +in the Software without restriction, including without limitation the rights +to use, copy, modify, merge, publish, distribute, sublicense, and/or sell +copies of the Software, and to permit persons to whom the Software is +furnished to do so, subject to the following conditions: + +The above copyright notice and this permission notice shall be included in all +copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE +SOFTWARE. diff --git a/venv/lib/python3.11/site-packages/cv2/LICENSE.txt b/venv/lib/python3.11/site-packages/cv2/LICENSE.txt new file mode 100644 index 0000000000000000000000000000000000000000..328bf50632a988cf1cc494d557936d84fec16335 --- /dev/null +++ b/venv/lib/python3.11/site-packages/cv2/LICENSE.txt @@ -0,0 +1,21 @@ +MIT License + +Copyright (c) Olli-Pekka Heinisuo + +Permission is hereby granted, free of charge, to any person obtaining a copy +of this software and associated documentation files (the "Software"), to deal +in the Software without restriction, including without limitation the rights +to use, copy, modify, merge, publish, distribute, sublicense, and/or sell +copies of the Software, and to permit persons to whom the Software is +furnished to do so, subject to the following conditions: + +The above copyright notice and this permission notice shall be included in all +copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE +SOFTWARE. \ No newline at end of file diff --git a/venv/lib/python3.11/site-packages/cv2/__init__.py b/venv/lib/python3.11/site-packages/cv2/__init__.py new file mode 100644 index 0000000000000000000000000000000000000000..7e148fc9f2b93a2b51b3bc6ec49187dbdcdfc5cb --- /dev/null +++ b/venv/lib/python3.11/site-packages/cv2/__init__.py @@ -0,0 +1,181 @@ +''' +OpenCV Python binary extension loader +''' +import os +import importlib +import sys + +__all__ = [] + +try: + import numpy + import numpy.core.multiarray +except ImportError: + print('OpenCV bindings requires "numpy" package.') + print('Install it via command:') + print(' pip install numpy') + raise + +# TODO +# is_x64 = sys.maxsize > 2**32 + + +def __load_extra_py_code_for_module(base, name, enable_debug_print=False): + module_name = "{}.{}".format(__name__, name) + export_module_name = "{}.{}".format(base, name) + native_module = sys.modules.pop(module_name, None) + try: + py_module = importlib.import_module(module_name) + except ImportError as err: + if enable_debug_print: + print("Can't load Python code for module:", module_name, + ". Reason:", err) + # Extension doesn't contain extra py code + return False + + if base in sys.modules and not hasattr(sys.modules[base], name): + setattr(sys.modules[base], name, py_module) + sys.modules[export_module_name] = py_module + # If it is C extension module it is already loaded by cv2 package + if native_module: + setattr(py_module, "_native", native_module) + for k, v in filter(lambda kv: not hasattr(py_module, kv[0]), + native_module.__dict__.items()): + if enable_debug_print: print(' symbol({}): {} = {}'.format(name, k, v)) + setattr(py_module, k, v) + return True + + +def __collect_extra_submodules(enable_debug_print=False): + def modules_filter(module): + return all(( + # module is not internal + not module.startswith("_"), + not module.startswith("python-"), + # it is not a file + os.path.isdir(os.path.join(_extra_submodules_init_path, module)) + )) + if sys.version_info[0] < 3: + if enable_debug_print: + print("Extra submodules is loaded only for Python 3") + return [] + + __INIT_FILE_PATH = os.path.abspath(__file__) + _extra_submodules_init_path = os.path.dirname(__INIT_FILE_PATH) + return filter(modules_filter, os.listdir(_extra_submodules_init_path)) + + +def bootstrap(): + import sys + + import copy + save_sys_path = copy.copy(sys.path) + + if hasattr(sys, 'OpenCV_LOADER'): + print(sys.path) + raise ImportError('ERROR: recursion is detected during loading of "cv2" binary extensions. Check OpenCV installation.') + sys.OpenCV_LOADER = True + + DEBUG = False + if hasattr(sys, 'OpenCV_LOADER_DEBUG'): + DEBUG = True + + import platform + if DEBUG: print('OpenCV loader: os.name="{}" platform.system()="{}"'.format(os.name, str(platform.system()))) + + LOADER_DIR = os.path.dirname(os.path.abspath(os.path.realpath(__file__))) + + PYTHON_EXTENSIONS_PATHS = [] + BINARIES_PATHS = [] + + g_vars = globals() + l_vars = locals().copy() + + if sys.version_info[:2] < (3, 0): + from . load_config_py2 import exec_file_wrapper + else: + from . load_config_py3 import exec_file_wrapper + + def load_first_config(fnames, required=True): + for fname in fnames: + fpath = os.path.join(LOADER_DIR, fname) + if not os.path.exists(fpath): + if DEBUG: print('OpenCV loader: config not found, skip: {}'.format(fpath)) + continue + if DEBUG: print('OpenCV loader: loading config: {}'.format(fpath)) + exec_file_wrapper(fpath, g_vars, l_vars) + return True + if required: + raise ImportError('OpenCV loader: missing configuration file: {}. Check OpenCV installation.'.format(fnames)) + + load_first_config(['config.py'], True) + load_first_config([ + 'config-{}.{}.py'.format(sys.version_info[0], sys.version_info[1]), + 'config-{}.py'.format(sys.version_info[0]) + ], True) + + if DEBUG: print('OpenCV loader: PYTHON_EXTENSIONS_PATHS={}'.format(str(l_vars['PYTHON_EXTENSIONS_PATHS']))) + if DEBUG: print('OpenCV loader: BINARIES_PATHS={}'.format(str(l_vars['BINARIES_PATHS']))) + + applySysPathWorkaround = False + if hasattr(sys, 'OpenCV_REPLACE_SYS_PATH_0'): + applySysPathWorkaround = True + else: + try: + BASE_DIR = os.path.dirname(LOADER_DIR) + if sys.path[0] == BASE_DIR or os.path.realpath(sys.path[0]) == BASE_DIR: + applySysPathWorkaround = True + except: + if DEBUG: print('OpenCV loader: exception during checking workaround for sys.path[0]') + pass # applySysPathWorkaround is False + + for p in reversed(l_vars['PYTHON_EXTENSIONS_PATHS']): + sys.path.insert(1 if not applySysPathWorkaround else 0, p) + + if os.name == 'nt': + if sys.version_info[:2] >= (3, 8): # https://github.com/python/cpython/pull/12302 + for p in l_vars['BINARIES_PATHS']: + try: + os.add_dll_directory(p) + except Exception as e: + if DEBUG: print('Failed os.add_dll_directory(): '+ str(e)) + pass + os.environ['PATH'] = ';'.join(l_vars['BINARIES_PATHS']) + ';' + os.environ.get('PATH', '') + if DEBUG: print('OpenCV loader: PATH={}'.format(str(os.environ['PATH']))) + else: + # amending of LD_LIBRARY_PATH works for sub-processes only + os.environ['LD_LIBRARY_PATH'] = ':'.join(l_vars['BINARIES_PATHS']) + ':' + os.environ.get('LD_LIBRARY_PATH', '') + + if DEBUG: print("Relink everything from native cv2 module to cv2 package") + + py_module = sys.modules.pop("cv2") + + native_module = importlib.import_module("cv2") + + sys.modules["cv2"] = py_module + setattr(py_module, "_native", native_module) + + for item_name, item in filter(lambda kv: kv[0] not in ("__file__", "__loader__", "__spec__", + "__name__", "__package__"), + native_module.__dict__.items()): + if item_name not in g_vars: + g_vars[item_name] = item + + sys.path = save_sys_path # multiprocessing should start from bootstrap code (https://github.com/opencv/opencv/issues/18502) + + try: + del sys.OpenCV_LOADER + except Exception as e: + if DEBUG: + print("Exception during delete OpenCV_LOADER:", e) + + if DEBUG: print('OpenCV loader: binary extension... OK') + + for submodule in __collect_extra_submodules(DEBUG): + if __load_extra_py_code_for_module("cv2", submodule, DEBUG): + if DEBUG: print("Extra Python code for", submodule, "is loaded") + + if DEBUG: print('OpenCV loader: DONE') + + +bootstrap() diff --git a/venv/lib/python3.11/site-packages/cv2/__init__.pyi b/venv/lib/python3.11/site-packages/cv2/__init__.pyi new file mode 100644 index 0000000000000000000000000000000000000000..937f8e9540c4c2f2cded778af41a326e59dcc41b --- /dev/null +++ b/venv/lib/python3.11/site-packages/cv2/__init__.pyi @@ -0,0 +1,6305 @@ +__all__: list[str] = [] + +import cv2.aruco +import cv2.cuda +import cv2.dnn +import cv2.gapi +import cv2.gapi.ot +import cv2.gapi.streaming +import cv2.typing +import numpy +import typing as _typing + + +from cv2 import Error as Error +from cv2 import aruco as aruco +from cv2 import barcode as barcode +from cv2 import cuda as cuda +from cv2 import detail as detail +from cv2 import dnn as dnn +from cv2 import fisheye as fisheye +from cv2 import flann as flann +from cv2 import gapi as gapi +from cv2 import ipp as ipp +from cv2 import ml as ml +from cv2 import ocl as ocl +from cv2 import ogl as ogl +from cv2 import parallel as parallel +from cv2 import samples as samples +from cv2 import segmentation as segmentation +from cv2 import typing as typing +from cv2 import utils as utils +from cv2 import videoio_registry as videoio_registry +from cv2.mat_wrapper import Mat as Mat + + +# Enumerations +SORT_EVERY_ROW: int +SORT_EVERY_COLUMN: int +SORT_ASCENDING: int +SORT_DESCENDING: int +SortFlags = int +"""One of [SORT_EVERY_ROW, SORT_EVERY_COLUMN, SORT_ASCENDING, SORT_DESCENDING]""" + +COVAR_SCRAMBLED: int +COVAR_NORMAL: int +COVAR_USE_AVG: int +COVAR_SCALE: int +COVAR_ROWS: int +COVAR_COLS: int +CovarFlags = int +"""One of [COVAR_SCRAMBLED, COVAR_NORMAL, COVAR_USE_AVG, COVAR_SCALE, COVAR_ROWS, COVAR_COLS]""" + +KMEANS_RANDOM_CENTERS: int +KMEANS_PP_CENTERS: int +KMEANS_USE_INITIAL_LABELS: int +KmeansFlags = int +"""One of [KMEANS_RANDOM_CENTERS, KMEANS_PP_CENTERS, KMEANS_USE_INITIAL_LABELS]""" + +REDUCE_SUM: int +REDUCE_AVG: int +REDUCE_MAX: int +REDUCE_MIN: int +REDUCE_SUM2: int +ReduceTypes = int +"""One of [REDUCE_SUM, REDUCE_AVG, REDUCE_MAX, REDUCE_MIN, REDUCE_SUM2]""" + +ROTATE_90_CLOCKWISE: int +ROTATE_180: int +ROTATE_90_COUNTERCLOCKWISE: int +RotateFlags = int +"""One of [ROTATE_90_CLOCKWISE, ROTATE_180, ROTATE_90_COUNTERCLOCKWISE]""" + +Param_INT: int +PARAM_INT: int +Param_BOOLEAN: int +PARAM_BOOLEAN: int +Param_REAL: int +PARAM_REAL: int +Param_STRING: int +PARAM_STRING: int +Param_MAT: int +PARAM_MAT: int +Param_MAT_VECTOR: int +PARAM_MAT_VECTOR: int +Param_ALGORITHM: int +PARAM_ALGORITHM: int +Param_FLOAT: int +PARAM_FLOAT: int +Param_UNSIGNED_INT: int +PARAM_UNSIGNED_INT: int +Param_UINT64: int +PARAM_UINT64: int +Param_UCHAR: int +PARAM_UCHAR: int +Param_SCALAR: int +PARAM_SCALAR: int +Param = int +"""One of [Param_INT, PARAM_INT, Param_BOOLEAN, PARAM_BOOLEAN, Param_REAL, PARAM_REAL, Param_STRING, PARAM_STRING, Param_MAT, PARAM_MAT, Param_MAT_VECTOR, PARAM_MAT_VECTOR, Param_ALGORITHM, PARAM_ALGORITHM, Param_FLOAT, PARAM_FLOAT, Param_UNSIGNED_INT, PARAM_UNSIGNED_INT, Param_UINT64, PARAM_UINT64, Param_UCHAR, PARAM_UCHAR, Param_SCALAR, PARAM_SCALAR]""" + +DECOMP_LU: int +DECOMP_SVD: int +DECOMP_EIG: int +DECOMP_CHOLESKY: int +DECOMP_QR: int +DECOMP_NORMAL: int +DecompTypes = int +"""One of [DECOMP_LU, DECOMP_SVD, DECOMP_EIG, DECOMP_CHOLESKY, DECOMP_QR, DECOMP_NORMAL]""" + +NORM_INF: int +NORM_L1: int +NORM_L2: int +NORM_L2SQR: int +NORM_HAMMING: int +NORM_HAMMING2: int +NORM_TYPE_MASK: int +NORM_RELATIVE: int +NORM_MINMAX: int +NormTypes = int +"""One of [NORM_INF, NORM_L1, NORM_L2, NORM_L2SQR, NORM_HAMMING, NORM_HAMMING2, NORM_TYPE_MASK, NORM_RELATIVE, NORM_MINMAX]""" + +CMP_EQ: int +CMP_GT: int +CMP_GE: int +CMP_LT: int +CMP_LE: int +CMP_NE: int +CmpTypes = int +"""One of [CMP_EQ, CMP_GT, CMP_GE, CMP_LT, CMP_LE, CMP_NE]""" + +GEMM_1_T: int +GEMM_2_T: int +GEMM_3_T: int +GemmFlags = int +"""One of [GEMM_1_T, GEMM_2_T, GEMM_3_T]""" + +DFT_INVERSE: int +DFT_SCALE: int +DFT_ROWS: int +DFT_COMPLEX_OUTPUT: int +DFT_REAL_OUTPUT: int +DFT_COMPLEX_INPUT: int +DCT_INVERSE: int +DCT_ROWS: int +DftFlags = int +"""One of [DFT_INVERSE, DFT_SCALE, DFT_ROWS, DFT_COMPLEX_OUTPUT, DFT_REAL_OUTPUT, DFT_COMPLEX_INPUT, DCT_INVERSE, DCT_ROWS]""" + +BORDER_CONSTANT: int +BORDER_REPLICATE: int +BORDER_REFLECT: int +BORDER_WRAP: int +BORDER_REFLECT_101: int +BORDER_TRANSPARENT: int +BORDER_REFLECT101: int +BORDER_DEFAULT: int +BORDER_ISOLATED: int +BorderTypes = int +"""One of [BORDER_CONSTANT, BORDER_REPLICATE, BORDER_REFLECT, BORDER_WRAP, BORDER_REFLECT_101, BORDER_TRANSPARENT, BORDER_REFLECT101, BORDER_DEFAULT, BORDER_ISOLATED]""" + +ACCESS_READ: int +ACCESS_WRITE: int +ACCESS_RW: int +ACCESS_MASK: int +ACCESS_FAST: int +AccessFlag = int +"""One of [ACCESS_READ, ACCESS_WRITE, ACCESS_RW, ACCESS_MASK, ACCESS_FAST]""" + +USAGE_DEFAULT: int +USAGE_ALLOCATE_HOST_MEMORY: int +USAGE_ALLOCATE_DEVICE_MEMORY: int +USAGE_ALLOCATE_SHARED_MEMORY: int +__UMAT_USAGE_FLAGS_32BIT: int +UMatUsageFlags = int +"""One of [USAGE_DEFAULT, USAGE_ALLOCATE_HOST_MEMORY, USAGE_ALLOCATE_DEVICE_MEMORY, USAGE_ALLOCATE_SHARED_MEMORY, __UMAT_USAGE_FLAGS_32BIT]""" + +SOLVELP_LOST: int +SOLVELP_UNBOUNDED: int +SOLVELP_UNFEASIBLE: int +SOLVELP_SINGLE: int +SOLVELP_MULTI: int +SolveLPResult = int +"""One of [SOLVELP_LOST, SOLVELP_UNBOUNDED, SOLVELP_UNFEASIBLE, SOLVELP_SINGLE, SOLVELP_MULTI]""" + +QUAT_ASSUME_NOT_UNIT: int +QUAT_ASSUME_UNIT: int +QuatAssumeType = int +"""One of [QUAT_ASSUME_NOT_UNIT, QUAT_ASSUME_UNIT]""" + +FILTER_SCHARR: int +SpecialFilter = int +"""One of [FILTER_SCHARR]""" + +MORPH_ERODE: int +MORPH_DILATE: int +MORPH_OPEN: int +MORPH_CLOSE: int +MORPH_GRADIENT: int +MORPH_TOPHAT: int +MORPH_BLACKHAT: int +MORPH_HITMISS: int +MorphTypes = int +"""One of [MORPH_ERODE, MORPH_DILATE, MORPH_OPEN, MORPH_CLOSE, MORPH_GRADIENT, MORPH_TOPHAT, MORPH_BLACKHAT, MORPH_HITMISS]""" + +MORPH_RECT: int +MORPH_CROSS: int +MORPH_ELLIPSE: int +MorphShapes = int +"""One of [MORPH_RECT, MORPH_CROSS, MORPH_ELLIPSE]""" + +INTER_NEAREST: int +INTER_LINEAR: int +INTER_CUBIC: int +INTER_AREA: int +INTER_LANCZOS4: int +INTER_LINEAR_EXACT: int +INTER_NEAREST_EXACT: int +INTER_MAX: int +WARP_FILL_OUTLIERS: int +WARP_INVERSE_MAP: int +WARP_RELATIVE_MAP: int +InterpolationFlags = int +"""One of [INTER_NEAREST, INTER_LINEAR, INTER_CUBIC, INTER_AREA, INTER_LANCZOS4, INTER_LINEAR_EXACT, INTER_NEAREST_EXACT, INTER_MAX, WARP_FILL_OUTLIERS, WARP_INVERSE_MAP, WARP_RELATIVE_MAP]""" + +WARP_POLAR_LINEAR: int +WARP_POLAR_LOG: int +WarpPolarMode = int +"""One of [WARP_POLAR_LINEAR, WARP_POLAR_LOG]""" + +INTER_BITS: int +INTER_BITS2: int +INTER_TAB_SIZE: int +INTER_TAB_SIZE2: int +InterpolationMasks = int +"""One of [INTER_BITS, INTER_BITS2, INTER_TAB_SIZE, INTER_TAB_SIZE2]""" + +DIST_USER: int +DIST_L1: int +DIST_L2: int +DIST_C: int +DIST_L12: int +DIST_FAIR: int +DIST_WELSCH: int +DIST_HUBER: int +DistanceTypes = int +"""One of [DIST_USER, DIST_L1, DIST_L2, DIST_C, DIST_L12, DIST_FAIR, DIST_WELSCH, DIST_HUBER]""" + +DIST_MASK_3: int +DIST_MASK_5: int +DIST_MASK_PRECISE: int +DistanceTransformMasks = int +"""One of [DIST_MASK_3, DIST_MASK_5, DIST_MASK_PRECISE]""" + +THRESH_BINARY: int +THRESH_BINARY_INV: int +THRESH_TRUNC: int +THRESH_TOZERO: int +THRESH_TOZERO_INV: int +THRESH_MASK: int +THRESH_OTSU: int +THRESH_TRIANGLE: int +ThresholdTypes = int +"""One of [THRESH_BINARY, THRESH_BINARY_INV, THRESH_TRUNC, THRESH_TOZERO, THRESH_TOZERO_INV, THRESH_MASK, THRESH_OTSU, THRESH_TRIANGLE]""" + +ADAPTIVE_THRESH_MEAN_C: int +ADAPTIVE_THRESH_GAUSSIAN_C: int +AdaptiveThresholdTypes = int +"""One of [ADAPTIVE_THRESH_MEAN_C, ADAPTIVE_THRESH_GAUSSIAN_C]""" + +GC_BGD: int +GC_FGD: int +GC_PR_BGD: int +GC_PR_FGD: int +GrabCutClasses = int +"""One of [GC_BGD, GC_FGD, GC_PR_BGD, GC_PR_FGD]""" + +GC_INIT_WITH_RECT: int +GC_INIT_WITH_MASK: int +GC_EVAL: int +GC_EVAL_FREEZE_MODEL: int +GrabCutModes = int +"""One of [GC_INIT_WITH_RECT, GC_INIT_WITH_MASK, GC_EVAL, GC_EVAL_FREEZE_MODEL]""" + +DIST_LABEL_CCOMP: int +DIST_LABEL_PIXEL: int +DistanceTransformLabelTypes = int +"""One of [DIST_LABEL_CCOMP, DIST_LABEL_PIXEL]""" + +FLOODFILL_FIXED_RANGE: int +FLOODFILL_MASK_ONLY: int +FloodFillFlags = int +"""One of [FLOODFILL_FIXED_RANGE, FLOODFILL_MASK_ONLY]""" + +CC_STAT_LEFT: int +CC_STAT_TOP: int +CC_STAT_WIDTH: int +CC_STAT_HEIGHT: int +CC_STAT_AREA: int +CC_STAT_MAX: int +ConnectedComponentsTypes = int +"""One of [CC_STAT_LEFT, CC_STAT_TOP, CC_STAT_WIDTH, CC_STAT_HEIGHT, CC_STAT_AREA, CC_STAT_MAX]""" + +CCL_DEFAULT: int +CCL_WU: int +CCL_GRANA: int +CCL_BOLELLI: int +CCL_SAUF: int +CCL_BBDT: int +CCL_SPAGHETTI: int +ConnectedComponentsAlgorithmsTypes = int +"""One of [CCL_DEFAULT, CCL_WU, CCL_GRANA, CCL_BOLELLI, CCL_SAUF, CCL_BBDT, CCL_SPAGHETTI]""" + +RETR_EXTERNAL: int +RETR_LIST: int +RETR_CCOMP: int +RETR_TREE: int +RETR_FLOODFILL: int +RetrievalModes = int +"""One of [RETR_EXTERNAL, RETR_LIST, RETR_CCOMP, RETR_TREE, RETR_FLOODFILL]""" + +CHAIN_APPROX_NONE: int +CHAIN_APPROX_SIMPLE: int +CHAIN_APPROX_TC89_L1: int +CHAIN_APPROX_TC89_KCOS: int +ContourApproximationModes = int +"""One of [CHAIN_APPROX_NONE, CHAIN_APPROX_SIMPLE, CHAIN_APPROX_TC89_L1, CHAIN_APPROX_TC89_KCOS]""" + +CONTOURS_MATCH_I1: int +CONTOURS_MATCH_I2: int +CONTOURS_MATCH_I3: int +ShapeMatchModes = int +"""One of [CONTOURS_MATCH_I1, CONTOURS_MATCH_I2, CONTOURS_MATCH_I3]""" + +HOUGH_STANDARD: int +HOUGH_PROBABILISTIC: int +HOUGH_MULTI_SCALE: int +HOUGH_GRADIENT: int +HOUGH_GRADIENT_ALT: int +HoughModes = int +"""One of [HOUGH_STANDARD, HOUGH_PROBABILISTIC, HOUGH_MULTI_SCALE, HOUGH_GRADIENT, HOUGH_GRADIENT_ALT]""" + +LSD_REFINE_NONE: int +LSD_REFINE_STD: int +LSD_REFINE_ADV: int +LineSegmentDetectorModes = int +"""One of [LSD_REFINE_NONE, LSD_REFINE_STD, LSD_REFINE_ADV]""" + +HISTCMP_CORREL: int +HISTCMP_CHISQR: int +HISTCMP_INTERSECT: int +HISTCMP_BHATTACHARYYA: int +HISTCMP_HELLINGER: int +HISTCMP_CHISQR_ALT: int +HISTCMP_KL_DIV: int +HistCompMethods = int +"""One of [HISTCMP_CORREL, HISTCMP_CHISQR, HISTCMP_INTERSECT, HISTCMP_BHATTACHARYYA, HISTCMP_HELLINGER, HISTCMP_CHISQR_ALT, HISTCMP_KL_DIV]""" + +COLOR_BGR2BGRA: int +COLOR_RGB2RGBA: int +COLOR_BGRA2BGR: int +COLOR_RGBA2RGB: int +COLOR_BGR2RGBA: int +COLOR_RGB2BGRA: int +COLOR_RGBA2BGR: int +COLOR_BGRA2RGB: int +COLOR_BGR2RGB: int +COLOR_RGB2BGR: int +COLOR_BGRA2RGBA: int +COLOR_RGBA2BGRA: int +COLOR_BGR2GRAY: int +COLOR_RGB2GRAY: int +COLOR_GRAY2BGR: int +COLOR_GRAY2RGB: int +COLOR_GRAY2BGRA: int +COLOR_GRAY2RGBA: int +COLOR_BGRA2GRAY: int +COLOR_RGBA2GRAY: int +COLOR_BGR2BGR565: int +COLOR_RGB2BGR565: int +COLOR_BGR5652BGR: int +COLOR_BGR5652RGB: int +COLOR_BGRA2BGR565: int +COLOR_RGBA2BGR565: int +COLOR_BGR5652BGRA: int +COLOR_BGR5652RGBA: int +COLOR_GRAY2BGR565: int +COLOR_BGR5652GRAY: int +COLOR_BGR2BGR555: int +COLOR_RGB2BGR555: int +COLOR_BGR5552BGR: int +COLOR_BGR5552RGB: int +COLOR_BGRA2BGR555: int +COLOR_RGBA2BGR555: int +COLOR_BGR5552BGRA: int +COLOR_BGR5552RGBA: int +COLOR_GRAY2BGR555: int +COLOR_BGR5552GRAY: int +COLOR_BGR2XYZ: int +COLOR_RGB2XYZ: int +COLOR_XYZ2BGR: int +COLOR_XYZ2RGB: int +COLOR_BGR2YCrCb: int +COLOR_BGR2YCR_CB: int +COLOR_RGB2YCrCb: int +COLOR_RGB2YCR_CB: int +COLOR_YCrCb2BGR: int +COLOR_YCR_CB2BGR: int +COLOR_YCrCb2RGB: int +COLOR_YCR_CB2RGB: int +COLOR_BGR2HSV: int +COLOR_RGB2HSV: int +COLOR_BGR2Lab: int +COLOR_BGR2LAB: int +COLOR_RGB2Lab: int +COLOR_RGB2LAB: int +COLOR_BGR2Luv: int +COLOR_BGR2LUV: int +COLOR_RGB2Luv: int +COLOR_RGB2LUV: int +COLOR_BGR2HLS: int +COLOR_RGB2HLS: int +COLOR_HSV2BGR: int +COLOR_HSV2RGB: int +COLOR_Lab2BGR: int +COLOR_LAB2BGR: int +COLOR_Lab2RGB: int +COLOR_LAB2RGB: int +COLOR_Luv2BGR: int +COLOR_LUV2BGR: int +COLOR_Luv2RGB: int +COLOR_LUV2RGB: int +COLOR_HLS2BGR: int +COLOR_HLS2RGB: int +COLOR_BGR2HSV_FULL: int +COLOR_RGB2HSV_FULL: int +COLOR_BGR2HLS_FULL: int +COLOR_RGB2HLS_FULL: int +COLOR_HSV2BGR_FULL: int +COLOR_HSV2RGB_FULL: int +COLOR_HLS2BGR_FULL: int +COLOR_HLS2RGB_FULL: int +COLOR_LBGR2Lab: int +COLOR_LBGR2LAB: int +COLOR_LRGB2Lab: int +COLOR_LRGB2LAB: int +COLOR_LBGR2Luv: int +COLOR_LBGR2LUV: int +COLOR_LRGB2Luv: int +COLOR_LRGB2LUV: int +COLOR_Lab2LBGR: int +COLOR_LAB2LBGR: int +COLOR_Lab2LRGB: int +COLOR_LAB2LRGB: int +COLOR_Luv2LBGR: int +COLOR_LUV2LBGR: int +COLOR_Luv2LRGB: int +COLOR_LUV2LRGB: int +COLOR_BGR2YUV: int +COLOR_RGB2YUV: int +COLOR_YUV2BGR: int +COLOR_YUV2RGB: int +COLOR_YUV2RGB_NV12: int +COLOR_YUV2BGR_NV12: int +COLOR_YUV2RGB_NV21: int +COLOR_YUV2BGR_NV21: int +COLOR_YUV420sp2RGB: int +COLOR_YUV420SP2RGB: int +COLOR_YUV420sp2BGR: int +COLOR_YUV420SP2BGR: int +COLOR_YUV2RGBA_NV12: int +COLOR_YUV2BGRA_NV12: int +COLOR_YUV2RGBA_NV21: int +COLOR_YUV2BGRA_NV21: int +COLOR_YUV420sp2RGBA: int +COLOR_YUV420SP2RGBA: int +COLOR_YUV420sp2BGRA: int +COLOR_YUV420SP2BGRA: int +COLOR_YUV2RGB_YV12: int +COLOR_YUV2BGR_YV12: int +COLOR_YUV2RGB_IYUV: int +COLOR_YUV2BGR_IYUV: int +COLOR_YUV2RGB_I420: int +COLOR_YUV2BGR_I420: int +COLOR_YUV420p2RGB: int +COLOR_YUV420P2RGB: int +COLOR_YUV420p2BGR: int +COLOR_YUV420P2BGR: int +COLOR_YUV2RGBA_YV12: int +COLOR_YUV2BGRA_YV12: int +COLOR_YUV2RGBA_IYUV: int +COLOR_YUV2BGRA_IYUV: int +COLOR_YUV2RGBA_I420: int +COLOR_YUV2BGRA_I420: int +COLOR_YUV420p2RGBA: int +COLOR_YUV420P2RGBA: int +COLOR_YUV420p2BGRA: int +COLOR_YUV420P2BGRA: int +COLOR_YUV2GRAY_420: int +COLOR_YUV2GRAY_NV21: int +COLOR_YUV2GRAY_NV12: int +COLOR_YUV2GRAY_YV12: int +COLOR_YUV2GRAY_IYUV: int +COLOR_YUV2GRAY_I420: int +COLOR_YUV420sp2GRAY: int +COLOR_YUV420SP2GRAY: int +COLOR_YUV420p2GRAY: int +COLOR_YUV420P2GRAY: int +COLOR_YUV2RGB_UYVY: int +COLOR_YUV2BGR_UYVY: int +COLOR_YUV2RGB_Y422: int +COLOR_YUV2BGR_Y422: int +COLOR_YUV2RGB_UYNV: int +COLOR_YUV2BGR_UYNV: int +COLOR_YUV2RGBA_UYVY: int +COLOR_YUV2BGRA_UYVY: int +COLOR_YUV2RGBA_Y422: int +COLOR_YUV2BGRA_Y422: int +COLOR_YUV2RGBA_UYNV: int +COLOR_YUV2BGRA_UYNV: int +COLOR_YUV2RGB_YUY2: int +COLOR_YUV2BGR_YUY2: int +COLOR_YUV2RGB_YVYU: int +COLOR_YUV2BGR_YVYU: int +COLOR_YUV2RGB_YUYV: int +COLOR_YUV2BGR_YUYV: int +COLOR_YUV2RGB_YUNV: int +COLOR_YUV2BGR_YUNV: int +COLOR_YUV2RGBA_YUY2: int +COLOR_YUV2BGRA_YUY2: int +COLOR_YUV2RGBA_YVYU: int +COLOR_YUV2BGRA_YVYU: int +COLOR_YUV2RGBA_YUYV: int +COLOR_YUV2BGRA_YUYV: int +COLOR_YUV2RGBA_YUNV: int +COLOR_YUV2BGRA_YUNV: int +COLOR_YUV2GRAY_UYVY: int +COLOR_YUV2GRAY_YUY2: int +COLOR_YUV2GRAY_Y422: int +COLOR_YUV2GRAY_UYNV: int +COLOR_YUV2GRAY_YVYU: int +COLOR_YUV2GRAY_YUYV: int +COLOR_YUV2GRAY_YUNV: int +COLOR_RGBA2mRGBA: int +COLOR_RGBA2M_RGBA: int +COLOR_mRGBA2RGBA: int +COLOR_M_RGBA2RGBA: int +COLOR_RGB2YUV_I420: int +COLOR_BGR2YUV_I420: int +COLOR_RGB2YUV_IYUV: int +COLOR_BGR2YUV_IYUV: int +COLOR_RGBA2YUV_I420: int +COLOR_BGRA2YUV_I420: int +COLOR_RGBA2YUV_IYUV: int +COLOR_BGRA2YUV_IYUV: int +COLOR_RGB2YUV_YV12: int +COLOR_BGR2YUV_YV12: int +COLOR_RGBA2YUV_YV12: int +COLOR_BGRA2YUV_YV12: int +COLOR_BayerBG2BGR: int +COLOR_BAYER_BG2BGR: int +COLOR_BayerGB2BGR: int +COLOR_BAYER_GB2BGR: int +COLOR_BayerRG2BGR: int +COLOR_BAYER_RG2BGR: int +COLOR_BayerGR2BGR: int +COLOR_BAYER_GR2BGR: int +COLOR_BayerRGGB2BGR: int +COLOR_BAYER_RGGB2BGR: int +COLOR_BayerGRBG2BGR: int +COLOR_BAYER_GRBG2BGR: int +COLOR_BayerBGGR2BGR: int +COLOR_BAYER_BGGR2BGR: int +COLOR_BayerGBRG2BGR: int +COLOR_BAYER_GBRG2BGR: int +COLOR_BayerRGGB2RGB: int +COLOR_BAYER_RGGB2RGB: int +COLOR_BayerGRBG2RGB: int +COLOR_BAYER_GRBG2RGB: int +COLOR_BayerBGGR2RGB: int +COLOR_BAYER_BGGR2RGB: int +COLOR_BayerGBRG2RGB: int +COLOR_BAYER_GBRG2RGB: int +COLOR_BayerBG2RGB: int +COLOR_BAYER_BG2RGB: int +COLOR_BayerGB2RGB: int +COLOR_BAYER_GB2RGB: int +COLOR_BayerRG2RGB: int +COLOR_BAYER_RG2RGB: int +COLOR_BayerGR2RGB: int +COLOR_BAYER_GR2RGB: int +COLOR_BayerBG2GRAY: int +COLOR_BAYER_BG2GRAY: int +COLOR_BayerGB2GRAY: int +COLOR_BAYER_GB2GRAY: int +COLOR_BayerRG2GRAY: int +COLOR_BAYER_RG2GRAY: int +COLOR_BayerGR2GRAY: int +COLOR_BAYER_GR2GRAY: int +COLOR_BayerRGGB2GRAY: int +COLOR_BAYER_RGGB2GRAY: int +COLOR_BayerGRBG2GRAY: int +COLOR_BAYER_GRBG2GRAY: int +COLOR_BayerBGGR2GRAY: int +COLOR_BAYER_BGGR2GRAY: int +COLOR_BayerGBRG2GRAY: int +COLOR_BAYER_GBRG2GRAY: int +COLOR_BayerBG2BGR_VNG: int +COLOR_BAYER_BG2BGR_VNG: int +COLOR_BayerGB2BGR_VNG: int +COLOR_BAYER_GB2BGR_VNG: int +COLOR_BayerRG2BGR_VNG: int +COLOR_BAYER_RG2BGR_VNG: int +COLOR_BayerGR2BGR_VNG: int +COLOR_BAYER_GR2BGR_VNG: int +COLOR_BayerRGGB2BGR_VNG: int +COLOR_BAYER_RGGB2BGR_VNG: int +COLOR_BayerGRBG2BGR_VNG: int +COLOR_BAYER_GRBG2BGR_VNG: int +COLOR_BayerBGGR2BGR_VNG: int +COLOR_BAYER_BGGR2BGR_VNG: int +COLOR_BayerGBRG2BGR_VNG: int +COLOR_BAYER_GBRG2BGR_VNG: int +COLOR_BayerRGGB2RGB_VNG: int +COLOR_BAYER_RGGB2RGB_VNG: int +COLOR_BayerGRBG2RGB_VNG: int +COLOR_BAYER_GRBG2RGB_VNG: int +COLOR_BayerBGGR2RGB_VNG: int +COLOR_BAYER_BGGR2RGB_VNG: int +COLOR_BayerGBRG2RGB_VNG: int +COLOR_BAYER_GBRG2RGB_VNG: int +COLOR_BayerBG2RGB_VNG: int +COLOR_BAYER_BG2RGB_VNG: int +COLOR_BayerGB2RGB_VNG: int +COLOR_BAYER_GB2RGB_VNG: int +COLOR_BayerRG2RGB_VNG: int +COLOR_BAYER_RG2RGB_VNG: int +COLOR_BayerGR2RGB_VNG: int +COLOR_BAYER_GR2RGB_VNG: int +COLOR_BayerBG2BGR_EA: int +COLOR_BAYER_BG2BGR_EA: int +COLOR_BayerGB2BGR_EA: int +COLOR_BAYER_GB2BGR_EA: int +COLOR_BayerRG2BGR_EA: int +COLOR_BAYER_RG2BGR_EA: int +COLOR_BayerGR2BGR_EA: int +COLOR_BAYER_GR2BGR_EA: int +COLOR_BayerRGGB2BGR_EA: int +COLOR_BAYER_RGGB2BGR_EA: int +COLOR_BayerGRBG2BGR_EA: int +COLOR_BAYER_GRBG2BGR_EA: int +COLOR_BayerBGGR2BGR_EA: int +COLOR_BAYER_BGGR2BGR_EA: int +COLOR_BayerGBRG2BGR_EA: int +COLOR_BAYER_GBRG2BGR_EA: int +COLOR_BayerRGGB2RGB_EA: int +COLOR_BAYER_RGGB2RGB_EA: int +COLOR_BayerGRBG2RGB_EA: int +COLOR_BAYER_GRBG2RGB_EA: int +COLOR_BayerBGGR2RGB_EA: int +COLOR_BAYER_BGGR2RGB_EA: int +COLOR_BayerGBRG2RGB_EA: int +COLOR_BAYER_GBRG2RGB_EA: int +COLOR_BayerBG2RGB_EA: int +COLOR_BAYER_BG2RGB_EA: int +COLOR_BayerGB2RGB_EA: int +COLOR_BAYER_GB2RGB_EA: int +COLOR_BayerRG2RGB_EA: int +COLOR_BAYER_RG2RGB_EA: int +COLOR_BayerGR2RGB_EA: int +COLOR_BAYER_GR2RGB_EA: int +COLOR_BayerBG2BGRA: int +COLOR_BAYER_BG2BGRA: int +COLOR_BayerGB2BGRA: int +COLOR_BAYER_GB2BGRA: int +COLOR_BayerRG2BGRA: int +COLOR_BAYER_RG2BGRA: int +COLOR_BayerGR2BGRA: int +COLOR_BAYER_GR2BGRA: int +COLOR_BayerRGGB2BGRA: int +COLOR_BAYER_RGGB2BGRA: int +COLOR_BayerGRBG2BGRA: int +COLOR_BAYER_GRBG2BGRA: int +COLOR_BayerBGGR2BGRA: int +COLOR_BAYER_BGGR2BGRA: int +COLOR_BayerGBRG2BGRA: int +COLOR_BAYER_GBRG2BGRA: int +COLOR_BayerRGGB2RGBA: int +COLOR_BAYER_RGGB2RGBA: int +COLOR_BayerGRBG2RGBA: int +COLOR_BAYER_GRBG2RGBA: int +COLOR_BayerBGGR2RGBA: int +COLOR_BAYER_BGGR2RGBA: int +COLOR_BayerGBRG2RGBA: int +COLOR_BAYER_GBRG2RGBA: int +COLOR_BayerBG2RGBA: int +COLOR_BAYER_BG2RGBA: int +COLOR_BayerGB2RGBA: int +COLOR_BAYER_GB2RGBA: int +COLOR_BayerRG2RGBA: int +COLOR_BAYER_RG2RGBA: int +COLOR_BayerGR2RGBA: int +COLOR_BAYER_GR2RGBA: int +COLOR_RGB2YUV_UYVY: int +COLOR_BGR2YUV_UYVY: int +COLOR_RGB2YUV_Y422: int +COLOR_BGR2YUV_Y422: int +COLOR_RGB2YUV_UYNV: int +COLOR_BGR2YUV_UYNV: int +COLOR_RGBA2YUV_UYVY: int +COLOR_BGRA2YUV_UYVY: int +COLOR_RGBA2YUV_Y422: int +COLOR_BGRA2YUV_Y422: int +COLOR_RGBA2YUV_UYNV: int +COLOR_BGRA2YUV_UYNV: int +COLOR_RGB2YUV_YUY2: int +COLOR_BGR2YUV_YUY2: int +COLOR_RGB2YUV_YVYU: int +COLOR_BGR2YUV_YVYU: int +COLOR_RGB2YUV_YUYV: int +COLOR_BGR2YUV_YUYV: int +COLOR_RGB2YUV_YUNV: int +COLOR_BGR2YUV_YUNV: int +COLOR_RGBA2YUV_YUY2: int +COLOR_BGRA2YUV_YUY2: int +COLOR_RGBA2YUV_YVYU: int +COLOR_BGRA2YUV_YVYU: int +COLOR_RGBA2YUV_YUYV: int +COLOR_BGRA2YUV_YUYV: int +COLOR_RGBA2YUV_YUNV: int +COLOR_BGRA2YUV_YUNV: int +COLOR_COLORCVT_MAX: int +ColorConversionCodes = int +"""One of [COLOR_BGR2BGRA, COLOR_RGB2RGBA, COLOR_BGRA2BGR, COLOR_RGBA2RGB, COLOR_BGR2RGBA, COLOR_RGB2BGRA, COLOR_RGBA2BGR, COLOR_BGRA2RGB, COLOR_BGR2RGB, COLOR_RGB2BGR, COLOR_BGRA2RGBA, COLOR_RGBA2BGRA, COLOR_BGR2GRAY, COLOR_RGB2GRAY, COLOR_GRAY2BGR, COLOR_GRAY2RGB, COLOR_GRAY2BGRA, COLOR_GRAY2RGBA, COLOR_BGRA2GRAY, COLOR_RGBA2GRAY, COLOR_BGR2BGR565, COLOR_RGB2BGR565, COLOR_BGR5652BGR, COLOR_BGR5652RGB, COLOR_BGRA2BGR565, COLOR_RGBA2BGR565, COLOR_BGR5652BGRA, COLOR_BGR5652RGBA, COLOR_GRAY2BGR565, COLOR_BGR5652GRAY, COLOR_BGR2BGR555, COLOR_RGB2BGR555, COLOR_BGR5552BGR, COLOR_BGR5552RGB, COLOR_BGRA2BGR555, COLOR_RGBA2BGR555, COLOR_BGR5552BGRA, COLOR_BGR5552RGBA, COLOR_GRAY2BGR555, COLOR_BGR5552GRAY, COLOR_BGR2XYZ, COLOR_RGB2XYZ, COLOR_XYZ2BGR, COLOR_XYZ2RGB, COLOR_BGR2YCrCb, COLOR_BGR2YCR_CB, COLOR_RGB2YCrCb, COLOR_RGB2YCR_CB, COLOR_YCrCb2BGR, COLOR_YCR_CB2BGR, COLOR_YCrCb2RGB, COLOR_YCR_CB2RGB, COLOR_BGR2HSV, COLOR_RGB2HSV, COLOR_BGR2Lab, COLOR_BGR2LAB, COLOR_RGB2Lab, COLOR_RGB2LAB, COLOR_BGR2Luv, COLOR_BGR2LUV, COLOR_RGB2Luv, COLOR_RGB2LUV, COLOR_BGR2HLS, COLOR_RGB2HLS, COLOR_HSV2BGR, COLOR_HSV2RGB, COLOR_Lab2BGR, COLOR_LAB2BGR, COLOR_Lab2RGB, COLOR_LAB2RGB, COLOR_Luv2BGR, COLOR_LUV2BGR, COLOR_Luv2RGB, COLOR_LUV2RGB, COLOR_HLS2BGR, COLOR_HLS2RGB, COLOR_BGR2HSV_FULL, COLOR_RGB2HSV_FULL, COLOR_BGR2HLS_FULL, COLOR_RGB2HLS_FULL, COLOR_HSV2BGR_FULL, COLOR_HSV2RGB_FULL, COLOR_HLS2BGR_FULL, COLOR_HLS2RGB_FULL, COLOR_LBGR2Lab, COLOR_LBGR2LAB, COLOR_LRGB2Lab, COLOR_LRGB2LAB, COLOR_LBGR2Luv, COLOR_LBGR2LUV, COLOR_LRGB2Luv, COLOR_LRGB2LUV, COLOR_Lab2LBGR, COLOR_LAB2LBGR, COLOR_Lab2LRGB, COLOR_LAB2LRGB, COLOR_Luv2LBGR, COLOR_LUV2LBGR, COLOR_Luv2LRGB, COLOR_LUV2LRGB, COLOR_BGR2YUV, COLOR_RGB2YUV, COLOR_YUV2BGR, COLOR_YUV2RGB, COLOR_YUV2RGB_NV12, COLOR_YUV2BGR_NV12, COLOR_YUV2RGB_NV21, COLOR_YUV2BGR_NV21, COLOR_YUV420sp2RGB, COLOR_YUV420SP2RGB, COLOR_YUV420sp2BGR, COLOR_YUV420SP2BGR, COLOR_YUV2RGBA_NV12, COLOR_YUV2BGRA_NV12, COLOR_YUV2RGBA_NV21, COLOR_YUV2BGRA_NV21, COLOR_YUV420sp2RGBA, COLOR_YUV420SP2RGBA, COLOR_YUV420sp2BGRA, COLOR_YUV420SP2BGRA, COLOR_YUV2RGB_YV12, COLOR_YUV2BGR_YV12, COLOR_YUV2RGB_IYUV, COLOR_YUV2BGR_IYUV, COLOR_YUV2RGB_I420, COLOR_YUV2BGR_I420, COLOR_YUV420p2RGB, COLOR_YUV420P2RGB, COLOR_YUV420p2BGR, COLOR_YUV420P2BGR, COLOR_YUV2RGBA_YV12, COLOR_YUV2BGRA_YV12, COLOR_YUV2RGBA_IYUV, COLOR_YUV2BGRA_IYUV, COLOR_YUV2RGBA_I420, COLOR_YUV2BGRA_I420, COLOR_YUV420p2RGBA, COLOR_YUV420P2RGBA, COLOR_YUV420p2BGRA, COLOR_YUV420P2BGRA, COLOR_YUV2GRAY_420, COLOR_YUV2GRAY_NV21, COLOR_YUV2GRAY_NV12, COLOR_YUV2GRAY_YV12, COLOR_YUV2GRAY_IYUV, COLOR_YUV2GRAY_I420, COLOR_YUV420sp2GRAY, COLOR_YUV420SP2GRAY, COLOR_YUV420p2GRAY, COLOR_YUV420P2GRAY, COLOR_YUV2RGB_UYVY, COLOR_YUV2BGR_UYVY, COLOR_YUV2RGB_Y422, COLOR_YUV2BGR_Y422, COLOR_YUV2RGB_UYNV, COLOR_YUV2BGR_UYNV, COLOR_YUV2RGBA_UYVY, COLOR_YUV2BGRA_UYVY, COLOR_YUV2RGBA_Y422, COLOR_YUV2BGRA_Y422, COLOR_YUV2RGBA_UYNV, COLOR_YUV2BGRA_UYNV, COLOR_YUV2RGB_YUY2, COLOR_YUV2BGR_YUY2, COLOR_YUV2RGB_YVYU, COLOR_YUV2BGR_YVYU, COLOR_YUV2RGB_YUYV, COLOR_YUV2BGR_YUYV, COLOR_YUV2RGB_YUNV, COLOR_YUV2BGR_YUNV, COLOR_YUV2RGBA_YUY2, COLOR_YUV2BGRA_YUY2, COLOR_YUV2RGBA_YVYU, COLOR_YUV2BGRA_YVYU, COLOR_YUV2RGBA_YUYV, COLOR_YUV2BGRA_YUYV, COLOR_YUV2RGBA_YUNV, COLOR_YUV2BGRA_YUNV, COLOR_YUV2GRAY_UYVY, COLOR_YUV2GRAY_YUY2, COLOR_YUV2GRAY_Y422, COLOR_YUV2GRAY_UYNV, COLOR_YUV2GRAY_YVYU, COLOR_YUV2GRAY_YUYV, COLOR_YUV2GRAY_YUNV, COLOR_RGBA2mRGBA, COLOR_RGBA2M_RGBA, COLOR_mRGBA2RGBA, COLOR_M_RGBA2RGBA, COLOR_RGB2YUV_I420, COLOR_BGR2YUV_I420, COLOR_RGB2YUV_IYUV, COLOR_BGR2YUV_IYUV, COLOR_RGBA2YUV_I420, COLOR_BGRA2YUV_I420, COLOR_RGBA2YUV_IYUV, COLOR_BGRA2YUV_IYUV, COLOR_RGB2YUV_YV12, COLOR_BGR2YUV_YV12, COLOR_RGBA2YUV_YV12, COLOR_BGRA2YUV_YV12, COLOR_BayerBG2BGR, COLOR_BAYER_BG2BGR, COLOR_BayerGB2BGR, COLOR_BAYER_GB2BGR, COLOR_BayerRG2BGR, COLOR_BAYER_RG2BGR, COLOR_BayerGR2BGR, COLOR_BAYER_GR2BGR, COLOR_BayerRGGB2BGR, COLOR_BAYER_RGGB2BGR, COLOR_BayerGRBG2BGR, COLOR_BAYER_GRBG2BGR, COLOR_BayerBGGR2BGR, COLOR_BAYER_BGGR2BGR, COLOR_BayerGBRG2BGR, COLOR_BAYER_GBRG2BGR, COLOR_BayerRGGB2RGB, COLOR_BAYER_RGGB2RGB, COLOR_BayerGRBG2RGB, COLOR_BAYER_GRBG2RGB, COLOR_BayerBGGR2RGB, COLOR_BAYER_BGGR2RGB, COLOR_BayerGBRG2RGB, COLOR_BAYER_GBRG2RGB, COLOR_BayerBG2RGB, COLOR_BAYER_BG2RGB, COLOR_BayerGB2RGB, COLOR_BAYER_GB2RGB, COLOR_BayerRG2RGB, COLOR_BAYER_RG2RGB, COLOR_BayerGR2RGB, COLOR_BAYER_GR2RGB, COLOR_BayerBG2GRAY, COLOR_BAYER_BG2GRAY, COLOR_BayerGB2GRAY, COLOR_BAYER_GB2GRAY, COLOR_BayerRG2GRAY, COLOR_BAYER_RG2GRAY, COLOR_BayerGR2GRAY, COLOR_BAYER_GR2GRAY, COLOR_BayerRGGB2GRAY, COLOR_BAYER_RGGB2GRAY, COLOR_BayerGRBG2GRAY, COLOR_BAYER_GRBG2GRAY, COLOR_BayerBGGR2GRAY, COLOR_BAYER_BGGR2GRAY, COLOR_BayerGBRG2GRAY, COLOR_BAYER_GBRG2GRAY, COLOR_BayerBG2BGR_VNG, COLOR_BAYER_BG2BGR_VNG, COLOR_BayerGB2BGR_VNG, COLOR_BAYER_GB2BGR_VNG, COLOR_BayerRG2BGR_VNG, COLOR_BAYER_RG2BGR_VNG, COLOR_BayerGR2BGR_VNG, COLOR_BAYER_GR2BGR_VNG, COLOR_BayerRGGB2BGR_VNG, COLOR_BAYER_RGGB2BGR_VNG, COLOR_BayerGRBG2BGR_VNG, COLOR_BAYER_GRBG2BGR_VNG, COLOR_BayerBGGR2BGR_VNG, COLOR_BAYER_BGGR2BGR_VNG, COLOR_BayerGBRG2BGR_VNG, COLOR_BAYER_GBRG2BGR_VNG, COLOR_BayerRGGB2RGB_VNG, COLOR_BAYER_RGGB2RGB_VNG, COLOR_BayerGRBG2RGB_VNG, COLOR_BAYER_GRBG2RGB_VNG, COLOR_BayerBGGR2RGB_VNG, COLOR_BAYER_BGGR2RGB_VNG, COLOR_BayerGBRG2RGB_VNG, COLOR_BAYER_GBRG2RGB_VNG, COLOR_BayerBG2RGB_VNG, COLOR_BAYER_BG2RGB_VNG, COLOR_BayerGB2RGB_VNG, COLOR_BAYER_GB2RGB_VNG, COLOR_BayerRG2RGB_VNG, COLOR_BAYER_RG2RGB_VNG, COLOR_BayerGR2RGB_VNG, COLOR_BAYER_GR2RGB_VNG, COLOR_BayerBG2BGR_EA, COLOR_BAYER_BG2BGR_EA, COLOR_BayerGB2BGR_EA, COLOR_BAYER_GB2BGR_EA, COLOR_BayerRG2BGR_EA, COLOR_BAYER_RG2BGR_EA, COLOR_BayerGR2BGR_EA, COLOR_BAYER_GR2BGR_EA, COLOR_BayerRGGB2BGR_EA, COLOR_BAYER_RGGB2BGR_EA, COLOR_BayerGRBG2BGR_EA, COLOR_BAYER_GRBG2BGR_EA, COLOR_BayerBGGR2BGR_EA, COLOR_BAYER_BGGR2BGR_EA, COLOR_BayerGBRG2BGR_EA, COLOR_BAYER_GBRG2BGR_EA, COLOR_BayerRGGB2RGB_EA, COLOR_BAYER_RGGB2RGB_EA, COLOR_BayerGRBG2RGB_EA, COLOR_BAYER_GRBG2RGB_EA, COLOR_BayerBGGR2RGB_EA, COLOR_BAYER_BGGR2RGB_EA, COLOR_BayerGBRG2RGB_EA, COLOR_BAYER_GBRG2RGB_EA, COLOR_BayerBG2RGB_EA, COLOR_BAYER_BG2RGB_EA, COLOR_BayerGB2RGB_EA, COLOR_BAYER_GB2RGB_EA, COLOR_BayerRG2RGB_EA, COLOR_BAYER_RG2RGB_EA, COLOR_BayerGR2RGB_EA, COLOR_BAYER_GR2RGB_EA, COLOR_BayerBG2BGRA, COLOR_BAYER_BG2BGRA, COLOR_BayerGB2BGRA, COLOR_BAYER_GB2BGRA, COLOR_BayerRG2BGRA, COLOR_BAYER_RG2BGRA, COLOR_BayerGR2BGRA, COLOR_BAYER_GR2BGRA, COLOR_BayerRGGB2BGRA, COLOR_BAYER_RGGB2BGRA, COLOR_BayerGRBG2BGRA, COLOR_BAYER_GRBG2BGRA, COLOR_BayerBGGR2BGRA, COLOR_BAYER_BGGR2BGRA, COLOR_BayerGBRG2BGRA, COLOR_BAYER_GBRG2BGRA, COLOR_BayerRGGB2RGBA, COLOR_BAYER_RGGB2RGBA, COLOR_BayerGRBG2RGBA, COLOR_BAYER_GRBG2RGBA, COLOR_BayerBGGR2RGBA, COLOR_BAYER_BGGR2RGBA, COLOR_BayerGBRG2RGBA, COLOR_BAYER_GBRG2RGBA, COLOR_BayerBG2RGBA, COLOR_BAYER_BG2RGBA, COLOR_BayerGB2RGBA, COLOR_BAYER_GB2RGBA, COLOR_BayerRG2RGBA, COLOR_BAYER_RG2RGBA, COLOR_BayerGR2RGBA, COLOR_BAYER_GR2RGBA, COLOR_RGB2YUV_UYVY, COLOR_BGR2YUV_UYVY, COLOR_RGB2YUV_Y422, COLOR_BGR2YUV_Y422, COLOR_RGB2YUV_UYNV, COLOR_BGR2YUV_UYNV, COLOR_RGBA2YUV_UYVY, COLOR_BGRA2YUV_UYVY, COLOR_RGBA2YUV_Y422, COLOR_BGRA2YUV_Y422, COLOR_RGBA2YUV_UYNV, COLOR_BGRA2YUV_UYNV, COLOR_RGB2YUV_YUY2, COLOR_BGR2YUV_YUY2, COLOR_RGB2YUV_YVYU, COLOR_BGR2YUV_YVYU, COLOR_RGB2YUV_YUYV, COLOR_BGR2YUV_YUYV, COLOR_RGB2YUV_YUNV, COLOR_BGR2YUV_YUNV, COLOR_RGBA2YUV_YUY2, COLOR_BGRA2YUV_YUY2, COLOR_RGBA2YUV_YVYU, COLOR_BGRA2YUV_YVYU, COLOR_RGBA2YUV_YUYV, COLOR_BGRA2YUV_YUYV, COLOR_RGBA2YUV_YUNV, COLOR_BGRA2YUV_YUNV, COLOR_COLORCVT_MAX]""" + +INTERSECT_NONE: int +INTERSECT_PARTIAL: int +INTERSECT_FULL: int +RectanglesIntersectTypes = int +"""One of [INTERSECT_NONE, INTERSECT_PARTIAL, INTERSECT_FULL]""" + +FILLED: int +LINE_4: int +LINE_8: int +LINE_AA: int +LineTypes = int +"""One of [FILLED, LINE_4, LINE_8, LINE_AA]""" + +FONT_HERSHEY_SIMPLEX: int +FONT_HERSHEY_PLAIN: int +FONT_HERSHEY_DUPLEX: int +FONT_HERSHEY_COMPLEX: int +FONT_HERSHEY_TRIPLEX: int +FONT_HERSHEY_COMPLEX_SMALL: int +FONT_HERSHEY_SCRIPT_SIMPLEX: int +FONT_HERSHEY_SCRIPT_COMPLEX: int +FONT_ITALIC: int +HersheyFonts = int +"""One of [FONT_HERSHEY_SIMPLEX, FONT_HERSHEY_PLAIN, FONT_HERSHEY_DUPLEX, FONT_HERSHEY_COMPLEX, FONT_HERSHEY_TRIPLEX, FONT_HERSHEY_COMPLEX_SMALL, FONT_HERSHEY_SCRIPT_SIMPLEX, FONT_HERSHEY_SCRIPT_COMPLEX, FONT_ITALIC]""" + +MARKER_CROSS: int +MARKER_TILTED_CROSS: int +MARKER_STAR: int +MARKER_DIAMOND: int +MARKER_SQUARE: int +MARKER_TRIANGLE_UP: int +MARKER_TRIANGLE_DOWN: int +MarkerTypes = int +"""One of [MARKER_CROSS, MARKER_TILTED_CROSS, MARKER_STAR, MARKER_DIAMOND, MARKER_SQUARE, MARKER_TRIANGLE_UP, MARKER_TRIANGLE_DOWN]""" + +TM_SQDIFF: int +TM_SQDIFF_NORMED: int +TM_CCORR: int +TM_CCORR_NORMED: int +TM_CCOEFF: int +TM_CCOEFF_NORMED: int +TemplateMatchModes = int +"""One of [TM_SQDIFF, TM_SQDIFF_NORMED, TM_CCORR, TM_CCORR_NORMED, TM_CCOEFF, TM_CCOEFF_NORMED]""" + +COLORMAP_AUTUMN: int +COLORMAP_BONE: int +COLORMAP_JET: int +COLORMAP_WINTER: int +COLORMAP_RAINBOW: int +COLORMAP_OCEAN: int +COLORMAP_SUMMER: int +COLORMAP_SPRING: int +COLORMAP_COOL: int +COLORMAP_HSV: int +COLORMAP_PINK: int +COLORMAP_HOT: int +COLORMAP_PARULA: int +COLORMAP_MAGMA: int +COLORMAP_INFERNO: int +COLORMAP_PLASMA: int +COLORMAP_VIRIDIS: int +COLORMAP_CIVIDIS: int +COLORMAP_TWILIGHT: int +COLORMAP_TWILIGHT_SHIFTED: int +COLORMAP_TURBO: int +COLORMAP_DEEPGREEN: int +ColormapTypes = int +"""One of [COLORMAP_AUTUMN, COLORMAP_BONE, COLORMAP_JET, COLORMAP_WINTER, COLORMAP_RAINBOW, COLORMAP_OCEAN, COLORMAP_SUMMER, COLORMAP_SPRING, COLORMAP_COOL, COLORMAP_HSV, COLORMAP_PINK, COLORMAP_HOT, COLORMAP_PARULA, COLORMAP_MAGMA, COLORMAP_INFERNO, COLORMAP_PLASMA, COLORMAP_VIRIDIS, COLORMAP_CIVIDIS, COLORMAP_TWILIGHT, COLORMAP_TWILIGHT_SHIFTED, COLORMAP_TURBO, COLORMAP_DEEPGREEN]""" + +INPAINT_NS: int +INPAINT_TELEA: int +LDR_SIZE: int +NORMAL_CLONE: int +MIXED_CLONE: int +MONOCHROME_TRANSFER: int +RECURS_FILTER: int +NORMCONV_FILTER: int +CAP_PROP_DC1394_OFF: int +CAP_PROP_DC1394_MODE_MANUAL: int +CAP_PROP_DC1394_MODE_AUTO: int +CAP_PROP_DC1394_MODE_ONE_PUSH_AUTO: int +CAP_PROP_DC1394_MAX: int +CAP_OPENNI_DEPTH_GENERATOR: int +CAP_OPENNI_IMAGE_GENERATOR: int +CAP_OPENNI_IR_GENERATOR: int +CAP_OPENNI_GENERATORS_MASK: int +CAP_PROP_OPENNI_OUTPUT_MODE: int +CAP_PROP_OPENNI_FRAME_MAX_DEPTH: int +CAP_PROP_OPENNI_BASELINE: int +CAP_PROP_OPENNI_FOCAL_LENGTH: int +CAP_PROP_OPENNI_REGISTRATION: int +CAP_PROP_OPENNI_REGISTRATION_ON: int +CAP_PROP_OPENNI_APPROX_FRAME_SYNC: int +CAP_PROP_OPENNI_MAX_BUFFER_SIZE: int +CAP_PROP_OPENNI_CIRCLE_BUFFER: int +CAP_PROP_OPENNI_MAX_TIME_DURATION: int +CAP_PROP_OPENNI_GENERATOR_PRESENT: int +CAP_PROP_OPENNI2_SYNC: int +CAP_PROP_OPENNI2_MIRROR: int +CAP_OPENNI_IMAGE_GENERATOR_PRESENT: int +CAP_OPENNI_IMAGE_GENERATOR_OUTPUT_MODE: int +CAP_OPENNI_DEPTH_GENERATOR_PRESENT: int +CAP_OPENNI_DEPTH_GENERATOR_BASELINE: int +CAP_OPENNI_DEPTH_GENERATOR_FOCAL_LENGTH: int +CAP_OPENNI_DEPTH_GENERATOR_REGISTRATION: int +CAP_OPENNI_DEPTH_GENERATOR_REGISTRATION_ON: int +CAP_OPENNI_IR_GENERATOR_PRESENT: int +CAP_OPENNI_DEPTH_MAP: int +CAP_OPENNI_POINT_CLOUD_MAP: int +CAP_OPENNI_DISPARITY_MAP: int +CAP_OPENNI_DISPARITY_MAP_32F: int +CAP_OPENNI_VALID_DEPTH_MASK: int +CAP_OPENNI_BGR_IMAGE: int +CAP_OPENNI_GRAY_IMAGE: int +CAP_OPENNI_IR_IMAGE: int +CAP_OPENNI_VGA_30HZ: int +CAP_OPENNI_SXGA_15HZ: int +CAP_OPENNI_SXGA_30HZ: int +CAP_OPENNI_QVGA_30HZ: int +CAP_OPENNI_QVGA_60HZ: int +CAP_PROP_GSTREAMER_QUEUE_LENGTH: int +CAP_PROP_PVAPI_MULTICASTIP: int +CAP_PROP_PVAPI_FRAMESTARTTRIGGERMODE: int +CAP_PROP_PVAPI_DECIMATIONHORIZONTAL: int +CAP_PROP_PVAPI_DECIMATIONVERTICAL: int +CAP_PROP_PVAPI_BINNINGX: int +CAP_PROP_PVAPI_BINNINGY: int +CAP_PROP_PVAPI_PIXELFORMAT: int +CAP_PVAPI_FSTRIGMODE_FREERUN: int +CAP_PVAPI_FSTRIGMODE_SYNCIN1: int +CAP_PVAPI_FSTRIGMODE_SYNCIN2: int +CAP_PVAPI_FSTRIGMODE_FIXEDRATE: int +CAP_PVAPI_FSTRIGMODE_SOFTWARE: int +CAP_PVAPI_DECIMATION_OFF: int +CAP_PVAPI_DECIMATION_2OUTOF4: int +CAP_PVAPI_DECIMATION_2OUTOF8: int +CAP_PVAPI_DECIMATION_2OUTOF16: int +CAP_PVAPI_PIXELFORMAT_MONO8: int +CAP_PVAPI_PIXELFORMAT_MONO16: int +CAP_PVAPI_PIXELFORMAT_BAYER8: int +CAP_PVAPI_PIXELFORMAT_BAYER16: int +CAP_PVAPI_PIXELFORMAT_RGB24: int +CAP_PVAPI_PIXELFORMAT_BGR24: int +CAP_PVAPI_PIXELFORMAT_RGBA32: int +CAP_PVAPI_PIXELFORMAT_BGRA32: int +CAP_PROP_XI_DOWNSAMPLING: int +CAP_PROP_XI_DATA_FORMAT: int +CAP_PROP_XI_OFFSET_X: int +CAP_PROP_XI_OFFSET_Y: int +CAP_PROP_XI_TRG_SOURCE: int +CAP_PROP_XI_TRG_SOFTWARE: int +CAP_PROP_XI_GPI_SELECTOR: int +CAP_PROP_XI_GPI_MODE: int +CAP_PROP_XI_GPI_LEVEL: int +CAP_PROP_XI_GPO_SELECTOR: int +CAP_PROP_XI_GPO_MODE: int +CAP_PROP_XI_LED_SELECTOR: int +CAP_PROP_XI_LED_MODE: int +CAP_PROP_XI_MANUAL_WB: int +CAP_PROP_XI_AUTO_WB: int +CAP_PROP_XI_AEAG: int +CAP_PROP_XI_EXP_PRIORITY: int +CAP_PROP_XI_AE_MAX_LIMIT: int +CAP_PROP_XI_AG_MAX_LIMIT: int +CAP_PROP_XI_AEAG_LEVEL: int +CAP_PROP_XI_TIMEOUT: int +CAP_PROP_XI_EXPOSURE: int +CAP_PROP_XI_EXPOSURE_BURST_COUNT: int +CAP_PROP_XI_GAIN_SELECTOR: int +CAP_PROP_XI_GAIN: int +CAP_PROP_XI_DOWNSAMPLING_TYPE: int +CAP_PROP_XI_BINNING_SELECTOR: int +CAP_PROP_XI_BINNING_VERTICAL: int +CAP_PROP_XI_BINNING_HORIZONTAL: int +CAP_PROP_XI_BINNING_PATTERN: int +CAP_PROP_XI_DECIMATION_SELECTOR: int +CAP_PROP_XI_DECIMATION_VERTICAL: int +CAP_PROP_XI_DECIMATION_HORIZONTAL: int +CAP_PROP_XI_DECIMATION_PATTERN: int +CAP_PROP_XI_TEST_PATTERN_GENERATOR_SELECTOR: int +CAP_PROP_XI_TEST_PATTERN: int +CAP_PROP_XI_IMAGE_DATA_FORMAT: int +CAP_PROP_XI_SHUTTER_TYPE: int +CAP_PROP_XI_SENSOR_TAPS: int +CAP_PROP_XI_AEAG_ROI_OFFSET_X: int +CAP_PROP_XI_AEAG_ROI_OFFSET_Y: int +CAP_PROP_XI_AEAG_ROI_WIDTH: int +CAP_PROP_XI_AEAG_ROI_HEIGHT: int +CAP_PROP_XI_BPC: int +CAP_PROP_XI_WB_KR: int +CAP_PROP_XI_WB_KG: int +CAP_PROP_XI_WB_KB: int +CAP_PROP_XI_WIDTH: int +CAP_PROP_XI_HEIGHT: int +CAP_PROP_XI_REGION_SELECTOR: int +CAP_PROP_XI_REGION_MODE: int +CAP_PROP_XI_LIMIT_BANDWIDTH: int +CAP_PROP_XI_SENSOR_DATA_BIT_DEPTH: int +CAP_PROP_XI_OUTPUT_DATA_BIT_DEPTH: int +CAP_PROP_XI_IMAGE_DATA_BIT_DEPTH: int +CAP_PROP_XI_OUTPUT_DATA_PACKING: int +CAP_PROP_XI_OUTPUT_DATA_PACKING_TYPE: int +CAP_PROP_XI_IS_COOLED: int +CAP_PROP_XI_COOLING: int +CAP_PROP_XI_TARGET_TEMP: int +CAP_PROP_XI_CHIP_TEMP: int +CAP_PROP_XI_HOUS_TEMP: int +CAP_PROP_XI_HOUS_BACK_SIDE_TEMP: int +CAP_PROP_XI_SENSOR_BOARD_TEMP: int +CAP_PROP_XI_CMS: int +CAP_PROP_XI_APPLY_CMS: int +CAP_PROP_XI_IMAGE_IS_COLOR: int +CAP_PROP_XI_COLOR_FILTER_ARRAY: int +CAP_PROP_XI_GAMMAY: int +CAP_PROP_XI_GAMMAC: int +CAP_PROP_XI_SHARPNESS: int +CAP_PROP_XI_CC_MATRIX_00: int +CAP_PROP_XI_CC_MATRIX_01: int +CAP_PROP_XI_CC_MATRIX_02: int +CAP_PROP_XI_CC_MATRIX_03: int +CAP_PROP_XI_CC_MATRIX_10: int +CAP_PROP_XI_CC_MATRIX_11: int +CAP_PROP_XI_CC_MATRIX_12: int +CAP_PROP_XI_CC_MATRIX_13: int +CAP_PROP_XI_CC_MATRIX_20: int +CAP_PROP_XI_CC_MATRIX_21: int +CAP_PROP_XI_CC_MATRIX_22: int +CAP_PROP_XI_CC_MATRIX_23: int +CAP_PROP_XI_CC_MATRIX_30: int +CAP_PROP_XI_CC_MATRIX_31: int +CAP_PROP_XI_CC_MATRIX_32: int +CAP_PROP_XI_CC_MATRIX_33: int +CAP_PROP_XI_DEFAULT_CC_MATRIX: int +CAP_PROP_XI_TRG_SELECTOR: int +CAP_PROP_XI_ACQ_FRAME_BURST_COUNT: int +CAP_PROP_XI_DEBOUNCE_EN: int +CAP_PROP_XI_DEBOUNCE_T0: int +CAP_PROP_XI_DEBOUNCE_T1: int +CAP_PROP_XI_DEBOUNCE_POL: int +CAP_PROP_XI_LENS_MODE: int +CAP_PROP_XI_LENS_APERTURE_VALUE: int +CAP_PROP_XI_LENS_FOCUS_MOVEMENT_VALUE: int +CAP_PROP_XI_LENS_FOCUS_MOVE: int +CAP_PROP_XI_LENS_FOCUS_DISTANCE: int +CAP_PROP_XI_LENS_FOCAL_LENGTH: int +CAP_PROP_XI_LENS_FEATURE_SELECTOR: int +CAP_PROP_XI_LENS_FEATURE: int +CAP_PROP_XI_DEVICE_MODEL_ID: int +CAP_PROP_XI_DEVICE_SN: int +CAP_PROP_XI_IMAGE_DATA_FORMAT_RGB32_ALPHA: int +CAP_PROP_XI_IMAGE_PAYLOAD_SIZE: int +CAP_PROP_XI_TRANSPORT_PIXEL_FORMAT: int +CAP_PROP_XI_SENSOR_CLOCK_FREQ_HZ: int +CAP_PROP_XI_SENSOR_CLOCK_FREQ_INDEX: int +CAP_PROP_XI_SENSOR_OUTPUT_CHANNEL_COUNT: int +CAP_PROP_XI_FRAMERATE: int +CAP_PROP_XI_COUNTER_SELECTOR: int +CAP_PROP_XI_COUNTER_VALUE: int +CAP_PROP_XI_ACQ_TIMING_MODE: int +CAP_PROP_XI_AVAILABLE_BANDWIDTH: int +CAP_PROP_XI_BUFFER_POLICY: int +CAP_PROP_XI_LUT_EN: int +CAP_PROP_XI_LUT_INDEX: int +CAP_PROP_XI_LUT_VALUE: int +CAP_PROP_XI_TRG_DELAY: int +CAP_PROP_XI_TS_RST_MODE: int +CAP_PROP_XI_TS_RST_SOURCE: int +CAP_PROP_XI_IS_DEVICE_EXIST: int +CAP_PROP_XI_ACQ_BUFFER_SIZE: int +CAP_PROP_XI_ACQ_BUFFER_SIZE_UNIT: int +CAP_PROP_XI_ACQ_TRANSPORT_BUFFER_SIZE: int +CAP_PROP_XI_BUFFERS_QUEUE_SIZE: int +CAP_PROP_XI_ACQ_TRANSPORT_BUFFER_COMMIT: int +CAP_PROP_XI_RECENT_FRAME: int +CAP_PROP_XI_DEVICE_RESET: int +CAP_PROP_XI_COLUMN_FPN_CORRECTION: int +CAP_PROP_XI_ROW_FPN_CORRECTION: int +CAP_PROP_XI_SENSOR_MODE: int +CAP_PROP_XI_HDR: int +CAP_PROP_XI_HDR_KNEEPOINT_COUNT: int +CAP_PROP_XI_HDR_T1: int +CAP_PROP_XI_HDR_T2: int +CAP_PROP_XI_KNEEPOINT1: int +CAP_PROP_XI_KNEEPOINT2: int +CAP_PROP_XI_IMAGE_BLACK_LEVEL: int +CAP_PROP_XI_HW_REVISION: int +CAP_PROP_XI_DEBUG_LEVEL: int +CAP_PROP_XI_AUTO_BANDWIDTH_CALCULATION: int +CAP_PROP_XI_FFS_FILE_ID: int +CAP_PROP_XI_FFS_FILE_SIZE: int +CAP_PROP_XI_FREE_FFS_SIZE: int +CAP_PROP_XI_USED_FFS_SIZE: int +CAP_PROP_XI_FFS_ACCESS_KEY: int +CAP_PROP_XI_SENSOR_FEATURE_SELECTOR: int +CAP_PROP_XI_SENSOR_FEATURE_VALUE: int +CAP_PROP_ARAVIS_AUTOTRIGGER: int +CAP_PROP_IOS_DEVICE_FOCUS: int +CAP_PROP_IOS_DEVICE_EXPOSURE: int +CAP_PROP_IOS_DEVICE_FLASH: int +CAP_PROP_IOS_DEVICE_WHITEBALANCE: int +CAP_PROP_IOS_DEVICE_TORCH: int +CAP_PROP_GIGA_FRAME_OFFSET_X: int +CAP_PROP_GIGA_FRAME_OFFSET_Y: int +CAP_PROP_GIGA_FRAME_WIDTH_MAX: int +CAP_PROP_GIGA_FRAME_HEIGH_MAX: int +CAP_PROP_GIGA_FRAME_SENS_WIDTH: int +CAP_PROP_GIGA_FRAME_SENS_HEIGH: int +CAP_PROP_INTELPERC_PROFILE_COUNT: int +CAP_PROP_INTELPERC_PROFILE_IDX: int +CAP_PROP_INTELPERC_DEPTH_LOW_CONFIDENCE_VALUE: int +CAP_PROP_INTELPERC_DEPTH_SATURATION_VALUE: int +CAP_PROP_INTELPERC_DEPTH_CONFIDENCE_THRESHOLD: int +CAP_PROP_INTELPERC_DEPTH_FOCAL_LENGTH_HORZ: int +CAP_PROP_INTELPERC_DEPTH_FOCAL_LENGTH_VERT: int +CAP_INTELPERC_DEPTH_GENERATOR: int +CAP_INTELPERC_IMAGE_GENERATOR: int +CAP_INTELPERC_IR_GENERATOR: int +CAP_INTELPERC_GENERATORS_MASK: int +CAP_INTELPERC_DEPTH_MAP: int +CAP_INTELPERC_UVDEPTH_MAP: int +CAP_INTELPERC_IR_MAP: int +CAP_INTELPERC_IMAGE: int +CAP_PROP_GPHOTO2_PREVIEW: int +CAP_PROP_GPHOTO2_WIDGET_ENUMERATE: int +CAP_PROP_GPHOTO2_RELOAD_CONFIG: int +CAP_PROP_GPHOTO2_RELOAD_ON_CHANGE: int +CAP_PROP_GPHOTO2_COLLECT_MSGS: int +CAP_PROP_GPHOTO2_FLUSH_MSGS: int +CAP_PROP_SPEED: int +CAP_PROP_APERTURE: int +CAP_PROP_EXPOSUREPROGRAM: int +CAP_PROP_VIEWFINDER: int +CAP_PROP_IMAGES_BASE: int +CAP_PROP_IMAGES_LAST: int +LMEDS: int +RANSAC: int +RHO: int +USAC_DEFAULT: int +USAC_PARALLEL: int +USAC_FM_8PTS: int +USAC_FAST: int +USAC_ACCURATE: int +USAC_PROSAC: int +USAC_MAGSAC: int +CALIB_CB_ADAPTIVE_THRESH: int +CALIB_CB_NORMALIZE_IMAGE: int +CALIB_CB_FILTER_QUADS: int +CALIB_CB_FAST_CHECK: int +CALIB_CB_EXHAUSTIVE: int +CALIB_CB_ACCURACY: int +CALIB_CB_LARGER: int +CALIB_CB_MARKER: int +CALIB_CB_PLAIN: int +CALIB_CB_SYMMETRIC_GRID: int +CALIB_CB_ASYMMETRIC_GRID: int +CALIB_CB_CLUSTERING: int +CALIB_NINTRINSIC: int +CALIB_USE_INTRINSIC_GUESS: int +CALIB_FIX_ASPECT_RATIO: int +CALIB_FIX_PRINCIPAL_POINT: int +CALIB_ZERO_TANGENT_DIST: int +CALIB_FIX_FOCAL_LENGTH: int +CALIB_FIX_K1: int +CALIB_FIX_K2: int +CALIB_FIX_K3: int +CALIB_FIX_K4: int +CALIB_FIX_K5: int +CALIB_FIX_K6: int +CALIB_RATIONAL_MODEL: int +CALIB_THIN_PRISM_MODEL: int +CALIB_FIX_S1_S2_S3_S4: int +CALIB_TILTED_MODEL: int +CALIB_FIX_TAUX_TAUY: int +CALIB_USE_QR: int +CALIB_FIX_TANGENT_DIST: int +CALIB_FIX_INTRINSIC: int +CALIB_SAME_FOCAL_LENGTH: int +CALIB_ZERO_DISPARITY: int +CALIB_USE_LU: int +CALIB_USE_EXTRINSIC_GUESS: int +FM_7POINT: int +FM_8POINT: int +FM_LMEDS: int +FM_RANSAC: int +CASCADE_DO_CANNY_PRUNING: int +CASCADE_SCALE_IMAGE: int +CASCADE_FIND_BIGGEST_OBJECT: int +CASCADE_DO_ROUGH_SEARCH: int +OPTFLOW_USE_INITIAL_FLOW: int +OPTFLOW_LK_GET_MIN_EIGENVALS: int +OPTFLOW_FARNEBACK_GAUSSIAN: int +MOTION_TRANSLATION: int +MOTION_EUCLIDEAN: int +MOTION_AFFINE: int +MOTION_HOMOGRAPHY: int + +DrawMatchesFlags_DEFAULT: int +DRAW_MATCHES_FLAGS_DEFAULT: int +DrawMatchesFlags_DRAW_OVER_OUTIMG: int +DRAW_MATCHES_FLAGS_DRAW_OVER_OUTIMG: int +DrawMatchesFlags_NOT_DRAW_SINGLE_POINTS: int +DRAW_MATCHES_FLAGS_NOT_DRAW_SINGLE_POINTS: int +DrawMatchesFlags_DRAW_RICH_KEYPOINTS: int +DRAW_MATCHES_FLAGS_DRAW_RICH_KEYPOINTS: int +DrawMatchesFlags = int +"""One of [DrawMatchesFlags_DEFAULT, DRAW_MATCHES_FLAGS_DEFAULT, DrawMatchesFlags_DRAW_OVER_OUTIMG, DRAW_MATCHES_FLAGS_DRAW_OVER_OUTIMG, DrawMatchesFlags_NOT_DRAW_SINGLE_POINTS, DRAW_MATCHES_FLAGS_NOT_DRAW_SINGLE_POINTS, DrawMatchesFlags_DRAW_RICH_KEYPOINTS, DRAW_MATCHES_FLAGS_DRAW_RICH_KEYPOINTS]""" + +IMREAD_UNCHANGED: int +IMREAD_GRAYSCALE: int +IMREAD_COLOR: int +IMREAD_ANYDEPTH: int +IMREAD_ANYCOLOR: int +IMREAD_LOAD_GDAL: int +IMREAD_REDUCED_GRAYSCALE_2: int +IMREAD_REDUCED_COLOR_2: int +IMREAD_REDUCED_GRAYSCALE_4: int +IMREAD_REDUCED_COLOR_4: int +IMREAD_REDUCED_GRAYSCALE_8: int +IMREAD_REDUCED_COLOR_8: int +IMREAD_IGNORE_ORIENTATION: int +ImreadModes = int +"""One of [IMREAD_UNCHANGED, IMREAD_GRAYSCALE, IMREAD_COLOR, IMREAD_ANYDEPTH, IMREAD_ANYCOLOR, IMREAD_LOAD_GDAL, IMREAD_REDUCED_GRAYSCALE_2, IMREAD_REDUCED_COLOR_2, IMREAD_REDUCED_GRAYSCALE_4, IMREAD_REDUCED_COLOR_4, IMREAD_REDUCED_GRAYSCALE_8, IMREAD_REDUCED_COLOR_8, IMREAD_IGNORE_ORIENTATION]""" + +IMWRITE_JPEG_QUALITY: int +IMWRITE_JPEG_PROGRESSIVE: int +IMWRITE_JPEG_OPTIMIZE: int +IMWRITE_JPEG_RST_INTERVAL: int +IMWRITE_JPEG_LUMA_QUALITY: int +IMWRITE_JPEG_CHROMA_QUALITY: int +IMWRITE_JPEG_SAMPLING_FACTOR: int +IMWRITE_PNG_COMPRESSION: int +IMWRITE_PNG_STRATEGY: int +IMWRITE_PNG_BILEVEL: int +IMWRITE_PXM_BINARY: int +IMWRITE_EXR_TYPE: int +IMWRITE_EXR_COMPRESSION: int +IMWRITE_EXR_DWA_COMPRESSION_LEVEL: int +IMWRITE_WEBP_QUALITY: int +IMWRITE_HDR_COMPRESSION: int +IMWRITE_PAM_TUPLETYPE: int +IMWRITE_TIFF_RESUNIT: int +IMWRITE_TIFF_XDPI: int +IMWRITE_TIFF_YDPI: int +IMWRITE_TIFF_COMPRESSION: int +IMWRITE_TIFF_ROWSPERSTRIP: int +IMWRITE_TIFF_PREDICTOR: int +IMWRITE_JPEG2000_COMPRESSION_X1000: int +IMWRITE_AVIF_QUALITY: int +IMWRITE_AVIF_DEPTH: int +IMWRITE_AVIF_SPEED: int +ImwriteFlags = int +"""One of [IMWRITE_JPEG_QUALITY, IMWRITE_JPEG_PROGRESSIVE, IMWRITE_JPEG_OPTIMIZE, IMWRITE_JPEG_RST_INTERVAL, IMWRITE_JPEG_LUMA_QUALITY, IMWRITE_JPEG_CHROMA_QUALITY, IMWRITE_JPEG_SAMPLING_FACTOR, IMWRITE_PNG_COMPRESSION, IMWRITE_PNG_STRATEGY, IMWRITE_PNG_BILEVEL, IMWRITE_PXM_BINARY, IMWRITE_EXR_TYPE, IMWRITE_EXR_COMPRESSION, IMWRITE_EXR_DWA_COMPRESSION_LEVEL, IMWRITE_WEBP_QUALITY, IMWRITE_HDR_COMPRESSION, IMWRITE_PAM_TUPLETYPE, IMWRITE_TIFF_RESUNIT, IMWRITE_TIFF_XDPI, IMWRITE_TIFF_YDPI, IMWRITE_TIFF_COMPRESSION, IMWRITE_TIFF_ROWSPERSTRIP, IMWRITE_TIFF_PREDICTOR, IMWRITE_JPEG2000_COMPRESSION_X1000, IMWRITE_AVIF_QUALITY, IMWRITE_AVIF_DEPTH, IMWRITE_AVIF_SPEED]""" + +IMWRITE_JPEG_SAMPLING_FACTOR_411: int +IMWRITE_JPEG_SAMPLING_FACTOR_420: int +IMWRITE_JPEG_SAMPLING_FACTOR_422: int +IMWRITE_JPEG_SAMPLING_FACTOR_440: int +IMWRITE_JPEG_SAMPLING_FACTOR_444: int +ImwriteJPEGSamplingFactorParams = int +"""One of [IMWRITE_JPEG_SAMPLING_FACTOR_411, IMWRITE_JPEG_SAMPLING_FACTOR_420, IMWRITE_JPEG_SAMPLING_FACTOR_422, IMWRITE_JPEG_SAMPLING_FACTOR_440, IMWRITE_JPEG_SAMPLING_FACTOR_444]""" + +IMWRITE_TIFF_COMPRESSION_NONE: int +IMWRITE_TIFF_COMPRESSION_CCITTRLE: int +IMWRITE_TIFF_COMPRESSION_CCITTFAX3: int +IMWRITE_TIFF_COMPRESSION_CCITT_T4: int +IMWRITE_TIFF_COMPRESSION_CCITTFAX4: int +IMWRITE_TIFF_COMPRESSION_CCITT_T6: int +IMWRITE_TIFF_COMPRESSION_LZW: int +IMWRITE_TIFF_COMPRESSION_OJPEG: int +IMWRITE_TIFF_COMPRESSION_JPEG: int +IMWRITE_TIFF_COMPRESSION_T85: int +IMWRITE_TIFF_COMPRESSION_T43: int +IMWRITE_TIFF_COMPRESSION_NEXT: int +IMWRITE_TIFF_COMPRESSION_CCITTRLEW: int +IMWRITE_TIFF_COMPRESSION_PACKBITS: int +IMWRITE_TIFF_COMPRESSION_THUNDERSCAN: int +IMWRITE_TIFF_COMPRESSION_IT8CTPAD: int +IMWRITE_TIFF_COMPRESSION_IT8LW: int +IMWRITE_TIFF_COMPRESSION_IT8MP: int +IMWRITE_TIFF_COMPRESSION_IT8BL: int +IMWRITE_TIFF_COMPRESSION_PIXARFILM: int +IMWRITE_TIFF_COMPRESSION_PIXARLOG: int +IMWRITE_TIFF_COMPRESSION_DEFLATE: int +IMWRITE_TIFF_COMPRESSION_ADOBE_DEFLATE: int +IMWRITE_TIFF_COMPRESSION_DCS: int +IMWRITE_TIFF_COMPRESSION_JBIG: int +IMWRITE_TIFF_COMPRESSION_SGILOG: int +IMWRITE_TIFF_COMPRESSION_SGILOG24: int +IMWRITE_TIFF_COMPRESSION_JP2000: int +IMWRITE_TIFF_COMPRESSION_LERC: int +IMWRITE_TIFF_COMPRESSION_LZMA: int +IMWRITE_TIFF_COMPRESSION_ZSTD: int +IMWRITE_TIFF_COMPRESSION_WEBP: int +IMWRITE_TIFF_COMPRESSION_JXL: int +ImwriteTiffCompressionFlags = int +"""One of [IMWRITE_TIFF_COMPRESSION_NONE, IMWRITE_TIFF_COMPRESSION_CCITTRLE, IMWRITE_TIFF_COMPRESSION_CCITTFAX3, IMWRITE_TIFF_COMPRESSION_CCITT_T4, IMWRITE_TIFF_COMPRESSION_CCITTFAX4, IMWRITE_TIFF_COMPRESSION_CCITT_T6, IMWRITE_TIFF_COMPRESSION_LZW, IMWRITE_TIFF_COMPRESSION_OJPEG, IMWRITE_TIFF_COMPRESSION_JPEG, IMWRITE_TIFF_COMPRESSION_T85, IMWRITE_TIFF_COMPRESSION_T43, IMWRITE_TIFF_COMPRESSION_NEXT, IMWRITE_TIFF_COMPRESSION_CCITTRLEW, IMWRITE_TIFF_COMPRESSION_PACKBITS, IMWRITE_TIFF_COMPRESSION_THUNDERSCAN, IMWRITE_TIFF_COMPRESSION_IT8CTPAD, IMWRITE_TIFF_COMPRESSION_IT8LW, IMWRITE_TIFF_COMPRESSION_IT8MP, IMWRITE_TIFF_COMPRESSION_IT8BL, IMWRITE_TIFF_COMPRESSION_PIXARFILM, IMWRITE_TIFF_COMPRESSION_PIXARLOG, IMWRITE_TIFF_COMPRESSION_DEFLATE, IMWRITE_TIFF_COMPRESSION_ADOBE_DEFLATE, IMWRITE_TIFF_COMPRESSION_DCS, IMWRITE_TIFF_COMPRESSION_JBIG, IMWRITE_TIFF_COMPRESSION_SGILOG, IMWRITE_TIFF_COMPRESSION_SGILOG24, IMWRITE_TIFF_COMPRESSION_JP2000, IMWRITE_TIFF_COMPRESSION_LERC, IMWRITE_TIFF_COMPRESSION_LZMA, IMWRITE_TIFF_COMPRESSION_ZSTD, IMWRITE_TIFF_COMPRESSION_WEBP, IMWRITE_TIFF_COMPRESSION_JXL]""" + +IMWRITE_TIFF_PREDICTOR_NONE: int +IMWRITE_TIFF_PREDICTOR_HORIZONTAL: int +IMWRITE_TIFF_PREDICTOR_FLOATINGPOINT: int +ImwriteTiffPredictorFlags = int +"""One of [IMWRITE_TIFF_PREDICTOR_NONE, IMWRITE_TIFF_PREDICTOR_HORIZONTAL, IMWRITE_TIFF_PREDICTOR_FLOATINGPOINT]""" + +IMWRITE_EXR_TYPE_HALF: int +IMWRITE_EXR_TYPE_FLOAT: int +ImwriteEXRTypeFlags = int +"""One of [IMWRITE_EXR_TYPE_HALF, IMWRITE_EXR_TYPE_FLOAT]""" + +IMWRITE_EXR_COMPRESSION_NO: int +IMWRITE_EXR_COMPRESSION_RLE: int +IMWRITE_EXR_COMPRESSION_ZIPS: int +IMWRITE_EXR_COMPRESSION_ZIP: int +IMWRITE_EXR_COMPRESSION_PIZ: int +IMWRITE_EXR_COMPRESSION_PXR24: int +IMWRITE_EXR_COMPRESSION_B44: int +IMWRITE_EXR_COMPRESSION_B44A: int +IMWRITE_EXR_COMPRESSION_DWAA: int +IMWRITE_EXR_COMPRESSION_DWAB: int +ImwriteEXRCompressionFlags = int +"""One of [IMWRITE_EXR_COMPRESSION_NO, IMWRITE_EXR_COMPRESSION_RLE, IMWRITE_EXR_COMPRESSION_ZIPS, IMWRITE_EXR_COMPRESSION_ZIP, IMWRITE_EXR_COMPRESSION_PIZ, IMWRITE_EXR_COMPRESSION_PXR24, IMWRITE_EXR_COMPRESSION_B44, IMWRITE_EXR_COMPRESSION_B44A, IMWRITE_EXR_COMPRESSION_DWAA, IMWRITE_EXR_COMPRESSION_DWAB]""" + +IMWRITE_PNG_STRATEGY_DEFAULT: int +IMWRITE_PNG_STRATEGY_FILTERED: int +IMWRITE_PNG_STRATEGY_HUFFMAN_ONLY: int +IMWRITE_PNG_STRATEGY_RLE: int +IMWRITE_PNG_STRATEGY_FIXED: int +ImwritePNGFlags = int +"""One of [IMWRITE_PNG_STRATEGY_DEFAULT, IMWRITE_PNG_STRATEGY_FILTERED, IMWRITE_PNG_STRATEGY_HUFFMAN_ONLY, IMWRITE_PNG_STRATEGY_RLE, IMWRITE_PNG_STRATEGY_FIXED]""" + +IMWRITE_PAM_FORMAT_NULL: int +IMWRITE_PAM_FORMAT_BLACKANDWHITE: int +IMWRITE_PAM_FORMAT_GRAYSCALE: int +IMWRITE_PAM_FORMAT_GRAYSCALE_ALPHA: int +IMWRITE_PAM_FORMAT_RGB: int +IMWRITE_PAM_FORMAT_RGB_ALPHA: int +ImwritePAMFlags = int +"""One of [IMWRITE_PAM_FORMAT_NULL, IMWRITE_PAM_FORMAT_BLACKANDWHITE, IMWRITE_PAM_FORMAT_GRAYSCALE, IMWRITE_PAM_FORMAT_GRAYSCALE_ALPHA, IMWRITE_PAM_FORMAT_RGB, IMWRITE_PAM_FORMAT_RGB_ALPHA]""" + +IMWRITE_HDR_COMPRESSION_NONE: int +IMWRITE_HDR_COMPRESSION_RLE: int +ImwriteHDRCompressionFlags = int +"""One of [IMWRITE_HDR_COMPRESSION_NONE, IMWRITE_HDR_COMPRESSION_RLE]""" + +CAP_ANY: int +CAP_VFW: int +CAP_V4L: int +CAP_V4L2: int +CAP_FIREWIRE: int +CAP_FIREWARE: int +CAP_IEEE1394: int +CAP_DC1394: int +CAP_CMU1394: int +CAP_QT: int +CAP_UNICAP: int +CAP_DSHOW: int +CAP_PVAPI: int +CAP_OPENNI: int +CAP_OPENNI_ASUS: int +CAP_ANDROID: int +CAP_XIAPI: int +CAP_AVFOUNDATION: int +CAP_GIGANETIX: int +CAP_MSMF: int +CAP_WINRT: int +CAP_INTELPERC: int +CAP_REALSENSE: int +CAP_OPENNI2: int +CAP_OPENNI2_ASUS: int +CAP_OPENNI2_ASTRA: int +CAP_GPHOTO2: int +CAP_GSTREAMER: int +CAP_FFMPEG: int +CAP_IMAGES: int +CAP_ARAVIS: int +CAP_OPENCV_MJPEG: int +CAP_INTEL_MFX: int +CAP_XINE: int +CAP_UEYE: int +CAP_OBSENSOR: int +VideoCaptureAPIs = int +"""One of [CAP_ANY, CAP_VFW, CAP_V4L, CAP_V4L2, CAP_FIREWIRE, CAP_FIREWARE, CAP_IEEE1394, CAP_DC1394, CAP_CMU1394, CAP_QT, CAP_UNICAP, CAP_DSHOW, CAP_PVAPI, CAP_OPENNI, CAP_OPENNI_ASUS, CAP_ANDROID, CAP_XIAPI, CAP_AVFOUNDATION, CAP_GIGANETIX, CAP_MSMF, CAP_WINRT, CAP_INTELPERC, CAP_REALSENSE, CAP_OPENNI2, CAP_OPENNI2_ASUS, CAP_OPENNI2_ASTRA, CAP_GPHOTO2, CAP_GSTREAMER, CAP_FFMPEG, CAP_IMAGES, CAP_ARAVIS, CAP_OPENCV_MJPEG, CAP_INTEL_MFX, CAP_XINE, CAP_UEYE, CAP_OBSENSOR]""" + +CAP_PROP_POS_MSEC: int +CAP_PROP_POS_FRAMES: int +CAP_PROP_POS_AVI_RATIO: int +CAP_PROP_FRAME_WIDTH: int +CAP_PROP_FRAME_HEIGHT: int +CAP_PROP_FPS: int +CAP_PROP_FOURCC: int +CAP_PROP_FRAME_COUNT: int +CAP_PROP_FORMAT: int +CAP_PROP_MODE: int +CAP_PROP_BRIGHTNESS: int +CAP_PROP_CONTRAST: int +CAP_PROP_SATURATION: int +CAP_PROP_HUE: int +CAP_PROP_GAIN: int +CAP_PROP_EXPOSURE: int +CAP_PROP_CONVERT_RGB: int +CAP_PROP_WHITE_BALANCE_BLUE_U: int +CAP_PROP_RECTIFICATION: int +CAP_PROP_MONOCHROME: int +CAP_PROP_SHARPNESS: int +CAP_PROP_AUTO_EXPOSURE: int +CAP_PROP_GAMMA: int +CAP_PROP_TEMPERATURE: int +CAP_PROP_TRIGGER: int +CAP_PROP_TRIGGER_DELAY: int +CAP_PROP_WHITE_BALANCE_RED_V: int +CAP_PROP_ZOOM: int +CAP_PROP_FOCUS: int +CAP_PROP_GUID: int +CAP_PROP_ISO_SPEED: int +CAP_PROP_BACKLIGHT: int +CAP_PROP_PAN: int +CAP_PROP_TILT: int +CAP_PROP_ROLL: int +CAP_PROP_IRIS: int +CAP_PROP_SETTINGS: int +CAP_PROP_BUFFERSIZE: int +CAP_PROP_AUTOFOCUS: int +CAP_PROP_SAR_NUM: int +CAP_PROP_SAR_DEN: int +CAP_PROP_BACKEND: int +CAP_PROP_CHANNEL: int +CAP_PROP_AUTO_WB: int +CAP_PROP_WB_TEMPERATURE: int +CAP_PROP_CODEC_PIXEL_FORMAT: int +CAP_PROP_BITRATE: int +CAP_PROP_ORIENTATION_META: int +CAP_PROP_ORIENTATION_AUTO: int +CAP_PROP_HW_ACCELERATION: int +CAP_PROP_HW_DEVICE: int +CAP_PROP_HW_ACCELERATION_USE_OPENCL: int +CAP_PROP_OPEN_TIMEOUT_MSEC: int +CAP_PROP_READ_TIMEOUT_MSEC: int +CAP_PROP_STREAM_OPEN_TIME_USEC: int +CAP_PROP_VIDEO_TOTAL_CHANNELS: int +CAP_PROP_VIDEO_STREAM: int +CAP_PROP_AUDIO_STREAM: int +CAP_PROP_AUDIO_POS: int +CAP_PROP_AUDIO_SHIFT_NSEC: int +CAP_PROP_AUDIO_DATA_DEPTH: int +CAP_PROP_AUDIO_SAMPLES_PER_SECOND: int +CAP_PROP_AUDIO_BASE_INDEX: int +CAP_PROP_AUDIO_TOTAL_CHANNELS: int +CAP_PROP_AUDIO_TOTAL_STREAMS: int +CAP_PROP_AUDIO_SYNCHRONIZE: int +CAP_PROP_LRF_HAS_KEY_FRAME: int +CAP_PROP_CODEC_EXTRADATA_INDEX: int +CAP_PROP_FRAME_TYPE: int +CAP_PROP_N_THREADS: int +VideoCaptureProperties = int +"""One of [CAP_PROP_POS_MSEC, CAP_PROP_POS_FRAMES, CAP_PROP_POS_AVI_RATIO, CAP_PROP_FRAME_WIDTH, CAP_PROP_FRAME_HEIGHT, CAP_PROP_FPS, CAP_PROP_FOURCC, CAP_PROP_FRAME_COUNT, CAP_PROP_FORMAT, CAP_PROP_MODE, CAP_PROP_BRIGHTNESS, CAP_PROP_CONTRAST, CAP_PROP_SATURATION, CAP_PROP_HUE, CAP_PROP_GAIN, CAP_PROP_EXPOSURE, CAP_PROP_CONVERT_RGB, CAP_PROP_WHITE_BALANCE_BLUE_U, CAP_PROP_RECTIFICATION, CAP_PROP_MONOCHROME, CAP_PROP_SHARPNESS, CAP_PROP_AUTO_EXPOSURE, CAP_PROP_GAMMA, CAP_PROP_TEMPERATURE, CAP_PROP_TRIGGER, CAP_PROP_TRIGGER_DELAY, CAP_PROP_WHITE_BALANCE_RED_V, CAP_PROP_ZOOM, CAP_PROP_FOCUS, CAP_PROP_GUID, CAP_PROP_ISO_SPEED, CAP_PROP_BACKLIGHT, CAP_PROP_PAN, CAP_PROP_TILT, CAP_PROP_ROLL, CAP_PROP_IRIS, CAP_PROP_SETTINGS, CAP_PROP_BUFFERSIZE, CAP_PROP_AUTOFOCUS, CAP_PROP_SAR_NUM, CAP_PROP_SAR_DEN, CAP_PROP_BACKEND, CAP_PROP_CHANNEL, CAP_PROP_AUTO_WB, CAP_PROP_WB_TEMPERATURE, CAP_PROP_CODEC_PIXEL_FORMAT, CAP_PROP_BITRATE, CAP_PROP_ORIENTATION_META, CAP_PROP_ORIENTATION_AUTO, CAP_PROP_HW_ACCELERATION, CAP_PROP_HW_DEVICE, CAP_PROP_HW_ACCELERATION_USE_OPENCL, CAP_PROP_OPEN_TIMEOUT_MSEC, CAP_PROP_READ_TIMEOUT_MSEC, CAP_PROP_STREAM_OPEN_TIME_USEC, CAP_PROP_VIDEO_TOTAL_CHANNELS, CAP_PROP_VIDEO_STREAM, CAP_PROP_AUDIO_STREAM, CAP_PROP_AUDIO_POS, CAP_PROP_AUDIO_SHIFT_NSEC, CAP_PROP_AUDIO_DATA_DEPTH, CAP_PROP_AUDIO_SAMPLES_PER_SECOND, CAP_PROP_AUDIO_BASE_INDEX, CAP_PROP_AUDIO_TOTAL_CHANNELS, CAP_PROP_AUDIO_TOTAL_STREAMS, CAP_PROP_AUDIO_SYNCHRONIZE, CAP_PROP_LRF_HAS_KEY_FRAME, CAP_PROP_CODEC_EXTRADATA_INDEX, CAP_PROP_FRAME_TYPE, CAP_PROP_N_THREADS]""" + +VIDEOWRITER_PROP_QUALITY: int +VIDEOWRITER_PROP_FRAMEBYTES: int +VIDEOWRITER_PROP_NSTRIPES: int +VIDEOWRITER_PROP_IS_COLOR: int +VIDEOWRITER_PROP_DEPTH: int +VIDEOWRITER_PROP_HW_ACCELERATION: int +VIDEOWRITER_PROP_HW_DEVICE: int +VIDEOWRITER_PROP_HW_ACCELERATION_USE_OPENCL: int +VIDEOWRITER_PROP_RAW_VIDEO: int +VIDEOWRITER_PROP_KEY_INTERVAL: int +VIDEOWRITER_PROP_KEY_FLAG: int +VideoWriterProperties = int +"""One of [VIDEOWRITER_PROP_QUALITY, VIDEOWRITER_PROP_FRAMEBYTES, VIDEOWRITER_PROP_NSTRIPES, VIDEOWRITER_PROP_IS_COLOR, VIDEOWRITER_PROP_DEPTH, VIDEOWRITER_PROP_HW_ACCELERATION, VIDEOWRITER_PROP_HW_DEVICE, VIDEOWRITER_PROP_HW_ACCELERATION_USE_OPENCL, VIDEOWRITER_PROP_RAW_VIDEO, VIDEOWRITER_PROP_KEY_INTERVAL, VIDEOWRITER_PROP_KEY_FLAG]""" + +VIDEO_ACCELERATION_NONE: int +VIDEO_ACCELERATION_ANY: int +VIDEO_ACCELERATION_D3D11: int +VIDEO_ACCELERATION_VAAPI: int +VIDEO_ACCELERATION_MFX: int +VideoAccelerationType = int +"""One of [VIDEO_ACCELERATION_NONE, VIDEO_ACCELERATION_ANY, VIDEO_ACCELERATION_D3D11, VIDEO_ACCELERATION_VAAPI, VIDEO_ACCELERATION_MFX]""" + +CAP_OBSENSOR_DEPTH_MAP: int +CAP_OBSENSOR_BGR_IMAGE: int +CAP_OBSENSOR_IR_IMAGE: int +VideoCaptureOBSensorDataType = int +"""One of [CAP_OBSENSOR_DEPTH_MAP, CAP_OBSENSOR_BGR_IMAGE, CAP_OBSENSOR_IR_IMAGE]""" + +CAP_OBSENSOR_DEPTH_GENERATOR: int +CAP_OBSENSOR_IMAGE_GENERATOR: int +CAP_OBSENSOR_IR_GENERATOR: int +CAP_OBSENSOR_GENERATORS_MASK: int +VideoCaptureOBSensorGenerators = int +"""One of [CAP_OBSENSOR_DEPTH_GENERATOR, CAP_OBSENSOR_IMAGE_GENERATOR, CAP_OBSENSOR_IR_GENERATOR, CAP_OBSENSOR_GENERATORS_MASK]""" + +CAP_PROP_OBSENSOR_INTRINSIC_FX: int +CAP_PROP_OBSENSOR_INTRINSIC_FY: int +CAP_PROP_OBSENSOR_INTRINSIC_CX: int +CAP_PROP_OBSENSOR_INTRINSIC_CY: int +VideoCaptureOBSensorProperties = int +"""One of [CAP_PROP_OBSENSOR_INTRINSIC_FX, CAP_PROP_OBSENSOR_INTRINSIC_FY, CAP_PROP_OBSENSOR_INTRINSIC_CX, CAP_PROP_OBSENSOR_INTRINSIC_CY]""" + +SOLVEPNP_ITERATIVE: int +SOLVEPNP_EPNP: int +SOLVEPNP_P3P: int +SOLVEPNP_DLS: int +SOLVEPNP_UPNP: int +SOLVEPNP_AP3P: int +SOLVEPNP_IPPE: int +SOLVEPNP_IPPE_SQUARE: int +SOLVEPNP_SQPNP: int +SOLVEPNP_MAX_COUNT: int +SolvePnPMethod = int +"""One of [SOLVEPNP_ITERATIVE, SOLVEPNP_EPNP, SOLVEPNP_P3P, SOLVEPNP_DLS, SOLVEPNP_UPNP, SOLVEPNP_AP3P, SOLVEPNP_IPPE, SOLVEPNP_IPPE_SQUARE, SOLVEPNP_SQPNP, SOLVEPNP_MAX_COUNT]""" + +CALIB_HAND_EYE_TSAI: int +CALIB_HAND_EYE_PARK: int +CALIB_HAND_EYE_HORAUD: int +CALIB_HAND_EYE_ANDREFF: int +CALIB_HAND_EYE_DANIILIDIS: int +HandEyeCalibrationMethod = int +"""One of [CALIB_HAND_EYE_TSAI, CALIB_HAND_EYE_PARK, CALIB_HAND_EYE_HORAUD, CALIB_HAND_EYE_ANDREFF, CALIB_HAND_EYE_DANIILIDIS]""" + +CALIB_ROBOT_WORLD_HAND_EYE_SHAH: int +CALIB_ROBOT_WORLD_HAND_EYE_LI: int +RobotWorldHandEyeCalibrationMethod = int +"""One of [CALIB_ROBOT_WORLD_HAND_EYE_SHAH, CALIB_ROBOT_WORLD_HAND_EYE_LI]""" + +SAMPLING_UNIFORM: int +SAMPLING_PROGRESSIVE_NAPSAC: int +SAMPLING_NAPSAC: int +SAMPLING_PROSAC: int +SamplingMethod = int +"""One of [SAMPLING_UNIFORM, SAMPLING_PROGRESSIVE_NAPSAC, SAMPLING_NAPSAC, SAMPLING_PROSAC]""" + +LOCAL_OPTIM_NULL: int +LOCAL_OPTIM_INNER_LO: int +LOCAL_OPTIM_INNER_AND_ITER_LO: int +LOCAL_OPTIM_GC: int +LOCAL_OPTIM_SIGMA: int +LocalOptimMethod = int +"""One of [LOCAL_OPTIM_NULL, LOCAL_OPTIM_INNER_LO, LOCAL_OPTIM_INNER_AND_ITER_LO, LOCAL_OPTIM_GC, LOCAL_OPTIM_SIGMA]""" + +SCORE_METHOD_RANSAC: int +SCORE_METHOD_MSAC: int +SCORE_METHOD_MAGSAC: int +SCORE_METHOD_LMEDS: int +ScoreMethod = int +"""One of [SCORE_METHOD_RANSAC, SCORE_METHOD_MSAC, SCORE_METHOD_MAGSAC, SCORE_METHOD_LMEDS]""" + +NEIGH_FLANN_KNN: int +NEIGH_GRID: int +NEIGH_FLANN_RADIUS: int +NeighborSearchMethod = int +"""One of [NEIGH_FLANN_KNN, NEIGH_GRID, NEIGH_FLANN_RADIUS]""" + +NONE_POLISHER: int +LSQ_POLISHER: int +MAGSAC: int +COV_POLISHER: int +PolishingMethod = int +"""One of [NONE_POLISHER, LSQ_POLISHER, MAGSAC, COV_POLISHER]""" + +PROJ_SPHERICAL_ORTHO: int +PROJ_SPHERICAL_EQRECT: int +UndistortTypes = int +"""One of [PROJ_SPHERICAL_ORTHO, PROJ_SPHERICAL_EQRECT]""" + +WINDOW_NORMAL: int +WINDOW_AUTOSIZE: int +WINDOW_OPENGL: int +WINDOW_FULLSCREEN: int +WINDOW_FREERATIO: int +WINDOW_KEEPRATIO: int +WINDOW_GUI_EXPANDED: int +WINDOW_GUI_NORMAL: int +WindowFlags = int +"""One of [WINDOW_NORMAL, WINDOW_AUTOSIZE, WINDOW_OPENGL, WINDOW_FULLSCREEN, WINDOW_FREERATIO, WINDOW_KEEPRATIO, WINDOW_GUI_EXPANDED, WINDOW_GUI_NORMAL]""" + +WND_PROP_FULLSCREEN: int +WND_PROP_AUTOSIZE: int +WND_PROP_ASPECT_RATIO: int +WND_PROP_OPENGL: int +WND_PROP_VISIBLE: int +WND_PROP_TOPMOST: int +WND_PROP_VSYNC: int +WindowPropertyFlags = int +"""One of [WND_PROP_FULLSCREEN, WND_PROP_AUTOSIZE, WND_PROP_ASPECT_RATIO, WND_PROP_OPENGL, WND_PROP_VISIBLE, WND_PROP_TOPMOST, WND_PROP_VSYNC]""" + +EVENT_MOUSEMOVE: int +EVENT_LBUTTONDOWN: int +EVENT_RBUTTONDOWN: int +EVENT_MBUTTONDOWN: int +EVENT_LBUTTONUP: int +EVENT_RBUTTONUP: int +EVENT_MBUTTONUP: int +EVENT_LBUTTONDBLCLK: int +EVENT_RBUTTONDBLCLK: int +EVENT_MBUTTONDBLCLK: int +EVENT_MOUSEWHEEL: int +EVENT_MOUSEHWHEEL: int +MouseEventTypes = int +"""One of [EVENT_MOUSEMOVE, EVENT_LBUTTONDOWN, EVENT_RBUTTONDOWN, EVENT_MBUTTONDOWN, EVENT_LBUTTONUP, EVENT_RBUTTONUP, EVENT_MBUTTONUP, EVENT_LBUTTONDBLCLK, EVENT_RBUTTONDBLCLK, EVENT_MBUTTONDBLCLK, EVENT_MOUSEWHEEL, EVENT_MOUSEHWHEEL]""" + +EVENT_FLAG_LBUTTON: int +EVENT_FLAG_RBUTTON: int +EVENT_FLAG_MBUTTON: int +EVENT_FLAG_CTRLKEY: int +EVENT_FLAG_SHIFTKEY: int +EVENT_FLAG_ALTKEY: int +MouseEventFlags = int +"""One of [EVENT_FLAG_LBUTTON, EVENT_FLAG_RBUTTON, EVENT_FLAG_MBUTTON, EVENT_FLAG_CTRLKEY, EVENT_FLAG_SHIFTKEY, EVENT_FLAG_ALTKEY]""" + +QT_FONT_LIGHT: int +QT_FONT_NORMAL: int +QT_FONT_DEMIBOLD: int +QT_FONT_BOLD: int +QT_FONT_BLACK: int +QtFontWeights = int +"""One of [QT_FONT_LIGHT, QT_FONT_NORMAL, QT_FONT_DEMIBOLD, QT_FONT_BOLD, QT_FONT_BLACK]""" + +QT_STYLE_NORMAL: int +QT_STYLE_ITALIC: int +QT_STYLE_OBLIQUE: int +QtFontStyles = int +"""One of [QT_STYLE_NORMAL, QT_STYLE_ITALIC, QT_STYLE_OBLIQUE]""" + +QT_PUSH_BUTTON: int +QT_CHECKBOX: int +QT_RADIOBOX: int +QT_NEW_BUTTONBAR: int +QtButtonTypes = int +"""One of [QT_PUSH_BUTTON, QT_CHECKBOX, QT_RADIOBOX, QT_NEW_BUTTONBAR]""" + +GShape_GMAT: int +GSHAPE_GMAT: int +GShape_GSCALAR: int +GSHAPE_GSCALAR: int +GShape_GARRAY: int +GSHAPE_GARRAY: int +GShape_GOPAQUE: int +GSHAPE_GOPAQUE: int +GShape_GFRAME: int +GSHAPE_GFRAME: int +GShape = int +"""One of [GShape_GMAT, GSHAPE_GMAT, GShape_GSCALAR, GSHAPE_GSCALAR, GShape_GARRAY, GSHAPE_GARRAY, GShape_GOPAQUE, GSHAPE_GOPAQUE, GShape_GFRAME, GSHAPE_GFRAME]""" + +MediaFormat_BGR: int +MEDIA_FORMAT_BGR: int +MediaFormat_NV12: int +MEDIA_FORMAT_NV12: int +MediaFormat_GRAY: int +MEDIA_FORMAT_GRAY: int +MediaFormat = int +"""One of [MediaFormat_BGR, MEDIA_FORMAT_BGR, MediaFormat_NV12, MEDIA_FORMAT_NV12, MediaFormat_GRAY, MEDIA_FORMAT_GRAY]""" + + +FileStorage_READ: int +FILE_STORAGE_READ: int +FileStorage_WRITE: int +FILE_STORAGE_WRITE: int +FileStorage_APPEND: int +FILE_STORAGE_APPEND: int +FileStorage_MEMORY: int +FILE_STORAGE_MEMORY: int +FileStorage_FORMAT_MASK: int +FILE_STORAGE_FORMAT_MASK: int +FileStorage_FORMAT_AUTO: int +FILE_STORAGE_FORMAT_AUTO: int +FileStorage_FORMAT_XML: int +FILE_STORAGE_FORMAT_XML: int +FileStorage_FORMAT_YAML: int +FILE_STORAGE_FORMAT_YAML: int +FileStorage_FORMAT_JSON: int +FILE_STORAGE_FORMAT_JSON: int +FileStorage_BASE64: int +FILE_STORAGE_BASE64: int +FileStorage_WRITE_BASE64: int +FILE_STORAGE_WRITE_BASE64: int +FileStorage_Mode = int +"""One of [FileStorage_READ, FILE_STORAGE_READ, FileStorage_WRITE, FILE_STORAGE_WRITE, FileStorage_APPEND, FILE_STORAGE_APPEND, FileStorage_MEMORY, FILE_STORAGE_MEMORY, FileStorage_FORMAT_MASK, FILE_STORAGE_FORMAT_MASK, FileStorage_FORMAT_AUTO, FILE_STORAGE_FORMAT_AUTO, FileStorage_FORMAT_XML, FILE_STORAGE_FORMAT_XML, FileStorage_FORMAT_YAML, FILE_STORAGE_FORMAT_YAML, FileStorage_FORMAT_JSON, FILE_STORAGE_FORMAT_JSON, FileStorage_BASE64, FILE_STORAGE_BASE64, FileStorage_WRITE_BASE64, FILE_STORAGE_WRITE_BASE64]""" + +FileStorage_UNDEFINED: int +FILE_STORAGE_UNDEFINED: int +FileStorage_VALUE_EXPECTED: int +FILE_STORAGE_VALUE_EXPECTED: int +FileStorage_NAME_EXPECTED: int +FILE_STORAGE_NAME_EXPECTED: int +FileStorage_INSIDE_MAP: int +FILE_STORAGE_INSIDE_MAP: int +FileStorage_State = int +"""One of [FileStorage_UNDEFINED, FILE_STORAGE_UNDEFINED, FileStorage_VALUE_EXPECTED, FILE_STORAGE_VALUE_EXPECTED, FileStorage_NAME_EXPECTED, FILE_STORAGE_NAME_EXPECTED, FileStorage_INSIDE_MAP, FILE_STORAGE_INSIDE_MAP]""" + +FileNode_NONE: int +FILE_NODE_NONE: int +FileNode_INT: int +FILE_NODE_INT: int +FileNode_REAL: int +FILE_NODE_REAL: int +FileNode_FLOAT: int +FILE_NODE_FLOAT: int +FileNode_STR: int +FILE_NODE_STR: int +FileNode_STRING: int +FILE_NODE_STRING: int +FileNode_SEQ: int +FILE_NODE_SEQ: int +FileNode_MAP: int +FILE_NODE_MAP: int +FileNode_TYPE_MASK: int +FILE_NODE_TYPE_MASK: int +FileNode_FLOW: int +FILE_NODE_FLOW: int +FileNode_UNIFORM: int +FILE_NODE_UNIFORM: int +FileNode_EMPTY: int +FILE_NODE_EMPTY: int +FileNode_NAMED: int +FILE_NODE_NAMED: int + +UMat_MAGIC_VAL: int +UMAT_MAGIC_VAL: int +UMat_AUTO_STEP: int +UMAT_AUTO_STEP: int +UMat_CONTINUOUS_FLAG: int +UMAT_CONTINUOUS_FLAG: int +UMat_SUBMATRIX_FLAG: int +UMAT_SUBMATRIX_FLAG: int +UMat_MAGIC_MASK: int +UMAT_MAGIC_MASK: int +UMat_TYPE_MASK: int +UMAT_TYPE_MASK: int +UMat_DEPTH_MASK: int +UMAT_DEPTH_MASK: int + +Subdiv2D_PTLOC_ERROR: int +SUBDIV2D_PTLOC_ERROR: int +Subdiv2D_PTLOC_OUTSIDE_RECT: int +SUBDIV2D_PTLOC_OUTSIDE_RECT: int +Subdiv2D_PTLOC_INSIDE: int +SUBDIV2D_PTLOC_INSIDE: int +Subdiv2D_PTLOC_VERTEX: int +SUBDIV2D_PTLOC_VERTEX: int +Subdiv2D_PTLOC_ON_EDGE: int +SUBDIV2D_PTLOC_ON_EDGE: int +Subdiv2D_NEXT_AROUND_ORG: int +SUBDIV2D_NEXT_AROUND_ORG: int +Subdiv2D_NEXT_AROUND_DST: int +SUBDIV2D_NEXT_AROUND_DST: int +Subdiv2D_PREV_AROUND_ORG: int +SUBDIV2D_PREV_AROUND_ORG: int +Subdiv2D_PREV_AROUND_DST: int +SUBDIV2D_PREV_AROUND_DST: int +Subdiv2D_NEXT_AROUND_LEFT: int +SUBDIV2D_NEXT_AROUND_LEFT: int +Subdiv2D_NEXT_AROUND_RIGHT: int +SUBDIV2D_NEXT_AROUND_RIGHT: int +Subdiv2D_PREV_AROUND_LEFT: int +SUBDIV2D_PREV_AROUND_LEFT: int +Subdiv2D_PREV_AROUND_RIGHT: int +SUBDIV2D_PREV_AROUND_RIGHT: int + +ORB_HARRIS_SCORE: int +ORB_FAST_SCORE: int +ORB_ScoreType = int +"""One of [ORB_HARRIS_SCORE, ORB_FAST_SCORE]""" + +FastFeatureDetector_TYPE_5_8: int +FAST_FEATURE_DETECTOR_TYPE_5_8: int +FastFeatureDetector_TYPE_7_12: int +FAST_FEATURE_DETECTOR_TYPE_7_12: int +FastFeatureDetector_TYPE_9_16: int +FAST_FEATURE_DETECTOR_TYPE_9_16: int +FastFeatureDetector_DetectorType = int +"""One of [FastFeatureDetector_TYPE_5_8, FAST_FEATURE_DETECTOR_TYPE_5_8, FastFeatureDetector_TYPE_7_12, FAST_FEATURE_DETECTOR_TYPE_7_12, FastFeatureDetector_TYPE_9_16, FAST_FEATURE_DETECTOR_TYPE_9_16]""" + +FastFeatureDetector_THRESHOLD: int +FAST_FEATURE_DETECTOR_THRESHOLD: int +FastFeatureDetector_NONMAX_SUPPRESSION: int +FAST_FEATURE_DETECTOR_NONMAX_SUPPRESSION: int +FastFeatureDetector_FAST_N: int +FAST_FEATURE_DETECTOR_FAST_N: int + +AgastFeatureDetector_AGAST_5_8: int +AGAST_FEATURE_DETECTOR_AGAST_5_8: int +AgastFeatureDetector_AGAST_7_12d: int +AGAST_FEATURE_DETECTOR_AGAST_7_12D: int +AgastFeatureDetector_AGAST_7_12s: int +AGAST_FEATURE_DETECTOR_AGAST_7_12S: int +AgastFeatureDetector_OAST_9_16: int +AGAST_FEATURE_DETECTOR_OAST_9_16: int +AgastFeatureDetector_DetectorType = int +"""One of [AgastFeatureDetector_AGAST_5_8, AGAST_FEATURE_DETECTOR_AGAST_5_8, AgastFeatureDetector_AGAST_7_12d, AGAST_FEATURE_DETECTOR_AGAST_7_12D, AgastFeatureDetector_AGAST_7_12s, AGAST_FEATURE_DETECTOR_AGAST_7_12S, AgastFeatureDetector_OAST_9_16, AGAST_FEATURE_DETECTOR_OAST_9_16]""" + +AgastFeatureDetector_THRESHOLD: int +AGAST_FEATURE_DETECTOR_THRESHOLD: int +AgastFeatureDetector_NONMAX_SUPPRESSION: int +AGAST_FEATURE_DETECTOR_NONMAX_SUPPRESSION: int + +KAZE_DIFF_PM_G1: int +KAZE_DIFF_PM_G2: int +KAZE_DIFF_WEICKERT: int +KAZE_DIFF_CHARBONNIER: int +KAZE_DiffusivityType = int +"""One of [KAZE_DIFF_PM_G1, KAZE_DIFF_PM_G2, KAZE_DIFF_WEICKERT, KAZE_DIFF_CHARBONNIER]""" + +AKAZE_DESCRIPTOR_KAZE_UPRIGHT: int +AKAZE_DESCRIPTOR_KAZE: int +AKAZE_DESCRIPTOR_MLDB_UPRIGHT: int +AKAZE_DESCRIPTOR_MLDB: int +AKAZE_DescriptorType = int +"""One of [AKAZE_DESCRIPTOR_KAZE_UPRIGHT, AKAZE_DESCRIPTOR_KAZE, AKAZE_DESCRIPTOR_MLDB_UPRIGHT, AKAZE_DESCRIPTOR_MLDB]""" + +DescriptorMatcher_FLANNBASED: int +DESCRIPTOR_MATCHER_FLANNBASED: int +DescriptorMatcher_BRUTEFORCE: int +DESCRIPTOR_MATCHER_BRUTEFORCE: int +DescriptorMatcher_BRUTEFORCE_L1: int +DESCRIPTOR_MATCHER_BRUTEFORCE_L1: int +DescriptorMatcher_BRUTEFORCE_HAMMING: int +DESCRIPTOR_MATCHER_BRUTEFORCE_HAMMING: int +DescriptorMatcher_BRUTEFORCE_HAMMINGLUT: int +DESCRIPTOR_MATCHER_BRUTEFORCE_HAMMINGLUT: int +DescriptorMatcher_BRUTEFORCE_SL2: int +DESCRIPTOR_MATCHER_BRUTEFORCE_SL2: int +DescriptorMatcher_MatcherType = int +"""One of [DescriptorMatcher_FLANNBASED, DESCRIPTOR_MATCHER_FLANNBASED, DescriptorMatcher_BRUTEFORCE, DESCRIPTOR_MATCHER_BRUTEFORCE, DescriptorMatcher_BRUTEFORCE_L1, DESCRIPTOR_MATCHER_BRUTEFORCE_L1, DescriptorMatcher_BRUTEFORCE_HAMMING, DESCRIPTOR_MATCHER_BRUTEFORCE_HAMMING, DescriptorMatcher_BRUTEFORCE_HAMMINGLUT, DESCRIPTOR_MATCHER_BRUTEFORCE_HAMMINGLUT, DescriptorMatcher_BRUTEFORCE_SL2, DESCRIPTOR_MATCHER_BRUTEFORCE_SL2]""" + +CirclesGridFinderParameters_SYMMETRIC_GRID: int +CIRCLES_GRID_FINDER_PARAMETERS_SYMMETRIC_GRID: int +CirclesGridFinderParameters_ASYMMETRIC_GRID: int +CIRCLES_GRID_FINDER_PARAMETERS_ASYMMETRIC_GRID: int +CirclesGridFinderParameters_GridType = int +"""One of [CirclesGridFinderParameters_SYMMETRIC_GRID, CIRCLES_GRID_FINDER_PARAMETERS_SYMMETRIC_GRID, CirclesGridFinderParameters_ASYMMETRIC_GRID, CIRCLES_GRID_FINDER_PARAMETERS_ASYMMETRIC_GRID]""" + +StereoMatcher_DISP_SHIFT: int +STEREO_MATCHER_DISP_SHIFT: int +StereoMatcher_DISP_SCALE: int +STEREO_MATCHER_DISP_SCALE: int + +StereoBM_PREFILTER_NORMALIZED_RESPONSE: int +STEREO_BM_PREFILTER_NORMALIZED_RESPONSE: int +StereoBM_PREFILTER_XSOBEL: int +STEREO_BM_PREFILTER_XSOBEL: int + +StereoSGBM_MODE_SGBM: int +STEREO_SGBM_MODE_SGBM: int +StereoSGBM_MODE_HH: int +STEREO_SGBM_MODE_HH: int +StereoSGBM_MODE_SGBM_3WAY: int +STEREO_SGBM_MODE_SGBM_3WAY: int +StereoSGBM_MODE_HH4: int +STEREO_SGBM_MODE_HH4: int + +HOGDescriptor_L2Hys: int +HOGDESCRIPTOR_L2HYS: int +HOGDescriptor_HistogramNormType = int +"""One of [HOGDescriptor_L2Hys, HOGDESCRIPTOR_L2HYS]""" + +HOGDescriptor_DEFAULT_NLEVELS: int +HOGDESCRIPTOR_DEFAULT_NLEVELS: int + +HOGDescriptor_DESCR_FORMAT_COL_BY_COL: int +HOGDESCRIPTOR_DESCR_FORMAT_COL_BY_COL: int +HOGDescriptor_DESCR_FORMAT_ROW_BY_ROW: int +HOGDESCRIPTOR_DESCR_FORMAT_ROW_BY_ROW: int +HOGDescriptor_DescriptorStorageFormat = int +"""One of [HOGDescriptor_DESCR_FORMAT_COL_BY_COL, HOGDESCRIPTOR_DESCR_FORMAT_COL_BY_COL, HOGDescriptor_DESCR_FORMAT_ROW_BY_ROW, HOGDESCRIPTOR_DESCR_FORMAT_ROW_BY_ROW]""" + +QRCodeEncoder_MODE_AUTO: int +QRCODE_ENCODER_MODE_AUTO: int +QRCodeEncoder_MODE_NUMERIC: int +QRCODE_ENCODER_MODE_NUMERIC: int +QRCodeEncoder_MODE_ALPHANUMERIC: int +QRCODE_ENCODER_MODE_ALPHANUMERIC: int +QRCodeEncoder_MODE_BYTE: int +QRCODE_ENCODER_MODE_BYTE: int +QRCodeEncoder_MODE_ECI: int +QRCODE_ENCODER_MODE_ECI: int +QRCodeEncoder_MODE_KANJI: int +QRCODE_ENCODER_MODE_KANJI: int +QRCodeEncoder_MODE_STRUCTURED_APPEND: int +QRCODE_ENCODER_MODE_STRUCTURED_APPEND: int +QRCodeEncoder_EncodeMode = int +"""One of [QRCodeEncoder_MODE_AUTO, QRCODE_ENCODER_MODE_AUTO, QRCodeEncoder_MODE_NUMERIC, QRCODE_ENCODER_MODE_NUMERIC, QRCodeEncoder_MODE_ALPHANUMERIC, QRCODE_ENCODER_MODE_ALPHANUMERIC, QRCodeEncoder_MODE_BYTE, QRCODE_ENCODER_MODE_BYTE, QRCodeEncoder_MODE_ECI, QRCODE_ENCODER_MODE_ECI, QRCodeEncoder_MODE_KANJI, QRCODE_ENCODER_MODE_KANJI, QRCodeEncoder_MODE_STRUCTURED_APPEND, QRCODE_ENCODER_MODE_STRUCTURED_APPEND]""" + +QRCodeEncoder_CORRECT_LEVEL_L: int +QRCODE_ENCODER_CORRECT_LEVEL_L: int +QRCodeEncoder_CORRECT_LEVEL_M: int +QRCODE_ENCODER_CORRECT_LEVEL_M: int +QRCodeEncoder_CORRECT_LEVEL_Q: int +QRCODE_ENCODER_CORRECT_LEVEL_Q: int +QRCodeEncoder_CORRECT_LEVEL_H: int +QRCODE_ENCODER_CORRECT_LEVEL_H: int +QRCodeEncoder_CorrectionLevel = int +"""One of [QRCodeEncoder_CORRECT_LEVEL_L, QRCODE_ENCODER_CORRECT_LEVEL_L, QRCodeEncoder_CORRECT_LEVEL_M, QRCODE_ENCODER_CORRECT_LEVEL_M, QRCodeEncoder_CORRECT_LEVEL_Q, QRCODE_ENCODER_CORRECT_LEVEL_Q, QRCodeEncoder_CORRECT_LEVEL_H, QRCODE_ENCODER_CORRECT_LEVEL_H]""" + +QRCodeEncoder_ECI_UTF8: int +QRCODE_ENCODER_ECI_UTF8: int +QRCodeEncoder_ECIEncodings = int +"""One of [QRCodeEncoder_ECI_UTF8, QRCODE_ENCODER_ECI_UTF8]""" + +FaceRecognizerSF_FR_COSINE: int +FACE_RECOGNIZER_SF_FR_COSINE: int +FaceRecognizerSF_FR_NORM_L2: int +FACE_RECOGNIZER_SF_FR_NORM_L2: int +FaceRecognizerSF_DisType = int +"""One of [FaceRecognizerSF_FR_COSINE, FACE_RECOGNIZER_SF_FR_COSINE, FaceRecognizerSF_FR_NORM_L2, FACE_RECOGNIZER_SF_FR_NORM_L2]""" + +Stitcher_OK: int +STITCHER_OK: int +Stitcher_ERR_NEED_MORE_IMGS: int +STITCHER_ERR_NEED_MORE_IMGS: int +Stitcher_ERR_HOMOGRAPHY_EST_FAIL: int +STITCHER_ERR_HOMOGRAPHY_EST_FAIL: int +Stitcher_ERR_CAMERA_PARAMS_ADJUST_FAIL: int +STITCHER_ERR_CAMERA_PARAMS_ADJUST_FAIL: int +Stitcher_Status = int +"""One of [Stitcher_OK, STITCHER_OK, Stitcher_ERR_NEED_MORE_IMGS, STITCHER_ERR_NEED_MORE_IMGS, Stitcher_ERR_HOMOGRAPHY_EST_FAIL, STITCHER_ERR_HOMOGRAPHY_EST_FAIL, Stitcher_ERR_CAMERA_PARAMS_ADJUST_FAIL, STITCHER_ERR_CAMERA_PARAMS_ADJUST_FAIL]""" + +Stitcher_PANORAMA: int +STITCHER_PANORAMA: int +Stitcher_SCANS: int +STITCHER_SCANS: int +Stitcher_Mode = int +"""One of [Stitcher_PANORAMA, STITCHER_PANORAMA, Stitcher_SCANS, STITCHER_SCANS]""" + +DISOpticalFlow_PRESET_ULTRAFAST: int +DISOPTICAL_FLOW_PRESET_ULTRAFAST: int +DISOpticalFlow_PRESET_FAST: int +DISOPTICAL_FLOW_PRESET_FAST: int +DISOpticalFlow_PRESET_MEDIUM: int +DISOPTICAL_FLOW_PRESET_MEDIUM: int + +PCA_DATA_AS_ROW: int +PCA_DATA_AS_COL: int +PCA_USE_AVG: int +PCA_Flags = int +"""One of [PCA_DATA_AS_ROW, PCA_DATA_AS_COL, PCA_USE_AVG]""" + +SVD_MODIFY_A: int +SVD_NO_UV: int +SVD_FULL_UV: int +SVD_Flags = int +"""One of [SVD_MODIFY_A, SVD_NO_UV, SVD_FULL_UV]""" + +RNG_UNIFORM: int +RNG_NORMAL: int + +Formatter_FMT_DEFAULT: int +FORMATTER_FMT_DEFAULT: int +Formatter_FMT_MATLAB: int +FORMATTER_FMT_MATLAB: int +Formatter_FMT_CSV: int +FORMATTER_FMT_CSV: int +Formatter_FMT_PYTHON: int +FORMATTER_FMT_PYTHON: int +Formatter_FMT_NUMPY: int +FORMATTER_FMT_NUMPY: int +Formatter_FMT_C: int +FORMATTER_FMT_C: int +Formatter_FormatType = int +"""One of [Formatter_FMT_DEFAULT, FORMATTER_FMT_DEFAULT, Formatter_FMT_MATLAB, FORMATTER_FMT_MATLAB, Formatter_FMT_CSV, FORMATTER_FMT_CSV, Formatter_FMT_PYTHON, FORMATTER_FMT_PYTHON, Formatter_FMT_NUMPY, FORMATTER_FMT_NUMPY, Formatter_FMT_C, FORMATTER_FMT_C]""" + +_InputArray_KIND_SHIFT: int +_INPUT_ARRAY_KIND_SHIFT: int +_InputArray_FIXED_TYPE: int +_INPUT_ARRAY_FIXED_TYPE: int +_InputArray_FIXED_SIZE: int +_INPUT_ARRAY_FIXED_SIZE: int +_InputArray_KIND_MASK: int +_INPUT_ARRAY_KIND_MASK: int +_InputArray_NONE: int +_INPUT_ARRAY_NONE: int +_InputArray_MAT: int +_INPUT_ARRAY_MAT: int +_InputArray_MATX: int +_INPUT_ARRAY_MATX: int +_InputArray_STD_VECTOR: int +_INPUT_ARRAY_STD_VECTOR: int +_InputArray_STD_VECTOR_VECTOR: int +_INPUT_ARRAY_STD_VECTOR_VECTOR: int +_InputArray_STD_VECTOR_MAT: int +_INPUT_ARRAY_STD_VECTOR_MAT: int +_InputArray_EXPR: int +_INPUT_ARRAY_EXPR: int +_InputArray_OPENGL_BUFFER: int +_INPUT_ARRAY_OPENGL_BUFFER: int +_InputArray_CUDA_HOST_MEM: int +_INPUT_ARRAY_CUDA_HOST_MEM: int +_InputArray_CUDA_GPU_MAT: int +_INPUT_ARRAY_CUDA_GPU_MAT: int +_InputArray_UMAT: int +_INPUT_ARRAY_UMAT: int +_InputArray_STD_VECTOR_UMAT: int +_INPUT_ARRAY_STD_VECTOR_UMAT: int +_InputArray_STD_BOOL_VECTOR: int +_INPUT_ARRAY_STD_BOOL_VECTOR: int +_InputArray_STD_VECTOR_CUDA_GPU_MAT: int +_INPUT_ARRAY_STD_VECTOR_CUDA_GPU_MAT: int +_InputArray_STD_ARRAY: int +_INPUT_ARRAY_STD_ARRAY: int +_InputArray_STD_ARRAY_MAT: int +_INPUT_ARRAY_STD_ARRAY_MAT: int +_InputArray_KindFlag = int +"""One of [_InputArray_KIND_SHIFT, _INPUT_ARRAY_KIND_SHIFT, _InputArray_FIXED_TYPE, _INPUT_ARRAY_FIXED_TYPE, _InputArray_FIXED_SIZE, _INPUT_ARRAY_FIXED_SIZE, _InputArray_KIND_MASK, _INPUT_ARRAY_KIND_MASK, _InputArray_NONE, _INPUT_ARRAY_NONE, _InputArray_MAT, _INPUT_ARRAY_MAT, _InputArray_MATX, _INPUT_ARRAY_MATX, _InputArray_STD_VECTOR, _INPUT_ARRAY_STD_VECTOR, _InputArray_STD_VECTOR_VECTOR, _INPUT_ARRAY_STD_VECTOR_VECTOR, _InputArray_STD_VECTOR_MAT, _INPUT_ARRAY_STD_VECTOR_MAT, _InputArray_EXPR, _INPUT_ARRAY_EXPR, _InputArray_OPENGL_BUFFER, _INPUT_ARRAY_OPENGL_BUFFER, _InputArray_CUDA_HOST_MEM, _INPUT_ARRAY_CUDA_HOST_MEM, _InputArray_CUDA_GPU_MAT, _INPUT_ARRAY_CUDA_GPU_MAT, _InputArray_UMAT, _INPUT_ARRAY_UMAT, _InputArray_STD_VECTOR_UMAT, _INPUT_ARRAY_STD_VECTOR_UMAT, _InputArray_STD_BOOL_VECTOR, _INPUT_ARRAY_STD_BOOL_VECTOR, _InputArray_STD_VECTOR_CUDA_GPU_MAT, _INPUT_ARRAY_STD_VECTOR_CUDA_GPU_MAT, _InputArray_STD_ARRAY, _INPUT_ARRAY_STD_ARRAY, _InputArray_STD_ARRAY_MAT, _INPUT_ARRAY_STD_ARRAY_MAT]""" + +_OutputArray_DEPTH_MASK_8U: int +_OUTPUT_ARRAY_DEPTH_MASK_8U: int +_OutputArray_DEPTH_MASK_8S: int +_OUTPUT_ARRAY_DEPTH_MASK_8S: int +_OutputArray_DEPTH_MASK_16U: int +_OUTPUT_ARRAY_DEPTH_MASK_16U: int +_OutputArray_DEPTH_MASK_16S: int +_OUTPUT_ARRAY_DEPTH_MASK_16S: int +_OutputArray_DEPTH_MASK_32S: int +_OUTPUT_ARRAY_DEPTH_MASK_32S: int +_OutputArray_DEPTH_MASK_32F: int +_OUTPUT_ARRAY_DEPTH_MASK_32F: int +_OutputArray_DEPTH_MASK_64F: int +_OUTPUT_ARRAY_DEPTH_MASK_64F: int +_OutputArray_DEPTH_MASK_16F: int +_OUTPUT_ARRAY_DEPTH_MASK_16F: int +_OutputArray_DEPTH_MASK_ALL: int +_OUTPUT_ARRAY_DEPTH_MASK_ALL: int +_OutputArray_DEPTH_MASK_ALL_BUT_8S: int +_OUTPUT_ARRAY_DEPTH_MASK_ALL_BUT_8S: int +_OutputArray_DEPTH_MASK_ALL_16F: int +_OUTPUT_ARRAY_DEPTH_MASK_ALL_16F: int +_OutputArray_DEPTH_MASK_FLT: int +_OUTPUT_ARRAY_DEPTH_MASK_FLT: int +_OutputArray_DepthMask = int +"""One of [_OutputArray_DEPTH_MASK_8U, _OUTPUT_ARRAY_DEPTH_MASK_8U, _OutputArray_DEPTH_MASK_8S, _OUTPUT_ARRAY_DEPTH_MASK_8S, _OutputArray_DEPTH_MASK_16U, _OUTPUT_ARRAY_DEPTH_MASK_16U, _OutputArray_DEPTH_MASK_16S, _OUTPUT_ARRAY_DEPTH_MASK_16S, _OutputArray_DEPTH_MASK_32S, _OUTPUT_ARRAY_DEPTH_MASK_32S, _OutputArray_DEPTH_MASK_32F, _OUTPUT_ARRAY_DEPTH_MASK_32F, _OutputArray_DEPTH_MASK_64F, _OUTPUT_ARRAY_DEPTH_MASK_64F, _OutputArray_DEPTH_MASK_16F, _OUTPUT_ARRAY_DEPTH_MASK_16F, _OutputArray_DEPTH_MASK_ALL, _OUTPUT_ARRAY_DEPTH_MASK_ALL, _OutputArray_DEPTH_MASK_ALL_BUT_8S, _OUTPUT_ARRAY_DEPTH_MASK_ALL_BUT_8S, _OutputArray_DEPTH_MASK_ALL_16F, _OUTPUT_ARRAY_DEPTH_MASK_ALL_16F, _OutputArray_DEPTH_MASK_FLT, _OUTPUT_ARRAY_DEPTH_MASK_FLT]""" + +UMatData_COPY_ON_MAP: int +UMAT_DATA_COPY_ON_MAP: int +UMatData_HOST_COPY_OBSOLETE: int +UMAT_DATA_HOST_COPY_OBSOLETE: int +UMatData_DEVICE_COPY_OBSOLETE: int +UMAT_DATA_DEVICE_COPY_OBSOLETE: int +UMatData_TEMP_UMAT: int +UMAT_DATA_TEMP_UMAT: int +UMatData_TEMP_COPIED_UMAT: int +UMAT_DATA_TEMP_COPIED_UMAT: int +UMatData_USER_ALLOCATED: int +UMAT_DATA_USER_ALLOCATED: int +UMatData_DEVICE_MEM_MAPPED: int +UMAT_DATA_DEVICE_MEM_MAPPED: int +UMatData_ASYNC_CLEANUP: int +UMAT_DATA_ASYNC_CLEANUP: int +UMatData_MemoryFlag = int +"""One of [UMatData_COPY_ON_MAP, UMAT_DATA_COPY_ON_MAP, UMatData_HOST_COPY_OBSOLETE, UMAT_DATA_HOST_COPY_OBSOLETE, UMatData_DEVICE_COPY_OBSOLETE, UMAT_DATA_DEVICE_COPY_OBSOLETE, UMatData_TEMP_UMAT, UMAT_DATA_TEMP_UMAT, UMatData_TEMP_COPIED_UMAT, UMAT_DATA_TEMP_COPIED_UMAT, UMatData_USER_ALLOCATED, UMAT_DATA_USER_ALLOCATED, UMatData_DEVICE_MEM_MAPPED, UMAT_DATA_DEVICE_MEM_MAPPED, UMatData_ASYNC_CLEANUP, UMAT_DATA_ASYNC_CLEANUP]""" + +Mat_MAGIC_VAL: int +MAT_MAGIC_VAL: int +Mat_AUTO_STEP: int +MAT_AUTO_STEP: int +Mat_CONTINUOUS_FLAG: int +MAT_CONTINUOUS_FLAG: int +Mat_SUBMATRIX_FLAG: int +MAT_SUBMATRIX_FLAG: int +Mat_MAGIC_MASK: int +MAT_MAGIC_MASK: int +Mat_TYPE_MASK: int +MAT_TYPE_MASK: int +Mat_DEPTH_MASK: int +MAT_DEPTH_MASK: int + +SparseMat_MAGIC_VAL: int +SPARSE_MAT_MAGIC_VAL: int +SparseMat_MAX_DIM: int +SPARSE_MAT_MAX_DIM: int +SparseMat_HASH_SCALE: int +SPARSE_MAT_HASH_SCALE: int +SparseMat_HASH_BIT: int +SPARSE_MAT_HASH_BIT: int + +QuatEnum_INT_XYZ: int +QUAT_ENUM_INT_XYZ: int +QuatEnum_INT_XZY: int +QUAT_ENUM_INT_XZY: int +QuatEnum_INT_YXZ: int +QUAT_ENUM_INT_YXZ: int +QuatEnum_INT_YZX: int +QUAT_ENUM_INT_YZX: int +QuatEnum_INT_ZXY: int +QUAT_ENUM_INT_ZXY: int +QuatEnum_INT_ZYX: int +QUAT_ENUM_INT_ZYX: int +QuatEnum_INT_XYX: int +QUAT_ENUM_INT_XYX: int +QuatEnum_INT_XZX: int +QUAT_ENUM_INT_XZX: int +QuatEnum_INT_YXY: int +QUAT_ENUM_INT_YXY: int +QuatEnum_INT_YZY: int +QUAT_ENUM_INT_YZY: int +QuatEnum_INT_ZXZ: int +QUAT_ENUM_INT_ZXZ: int +QuatEnum_INT_ZYZ: int +QUAT_ENUM_INT_ZYZ: int +QuatEnum_EXT_XYZ: int +QUAT_ENUM_EXT_XYZ: int +QuatEnum_EXT_XZY: int +QUAT_ENUM_EXT_XZY: int +QuatEnum_EXT_YXZ: int +QUAT_ENUM_EXT_YXZ: int +QuatEnum_EXT_YZX: int +QUAT_ENUM_EXT_YZX: int +QuatEnum_EXT_ZXY: int +QUAT_ENUM_EXT_ZXY: int +QuatEnum_EXT_ZYX: int +QUAT_ENUM_EXT_ZYX: int +QuatEnum_EXT_XYX: int +QUAT_ENUM_EXT_XYX: int +QuatEnum_EXT_XZX: int +QUAT_ENUM_EXT_XZX: int +QuatEnum_EXT_YXY: int +QUAT_ENUM_EXT_YXY: int +QuatEnum_EXT_YZY: int +QUAT_ENUM_EXT_YZY: int +QuatEnum_EXT_ZXZ: int +QUAT_ENUM_EXT_ZXZ: int +QuatEnum_EXT_ZYZ: int +QUAT_ENUM_EXT_ZYZ: int +QuatEnum_EULER_ANGLES_MAX_VALUE: int +QUAT_ENUM_EULER_ANGLES_MAX_VALUE: int +QuatEnum_EulerAnglesType = int +"""One of [QuatEnum_INT_XYZ, QUAT_ENUM_INT_XYZ, QuatEnum_INT_XZY, QUAT_ENUM_INT_XZY, QuatEnum_INT_YXZ, QUAT_ENUM_INT_YXZ, QuatEnum_INT_YZX, QUAT_ENUM_INT_YZX, QuatEnum_INT_ZXY, QUAT_ENUM_INT_ZXY, QuatEnum_INT_ZYX, QUAT_ENUM_INT_ZYX, QuatEnum_INT_XYX, QUAT_ENUM_INT_XYX, QuatEnum_INT_XZX, QUAT_ENUM_INT_XZX, QuatEnum_INT_YXY, QUAT_ENUM_INT_YXY, QuatEnum_INT_YZY, QUAT_ENUM_INT_YZY, QuatEnum_INT_ZXZ, QUAT_ENUM_INT_ZXZ, QuatEnum_INT_ZYZ, QUAT_ENUM_INT_ZYZ, QuatEnum_EXT_XYZ, QUAT_ENUM_EXT_XYZ, QuatEnum_EXT_XZY, QUAT_ENUM_EXT_XZY, QuatEnum_EXT_YXZ, QUAT_ENUM_EXT_YXZ, QuatEnum_EXT_YZX, QUAT_ENUM_EXT_YZX, QuatEnum_EXT_ZXY, QUAT_ENUM_EXT_ZXY, QuatEnum_EXT_ZYX, QUAT_ENUM_EXT_ZYX, QuatEnum_EXT_XYX, QUAT_ENUM_EXT_XYX, QuatEnum_EXT_XZX, QUAT_ENUM_EXT_XZX, QuatEnum_EXT_YXY, QUAT_ENUM_EXT_YXY, QuatEnum_EXT_YZY, QUAT_ENUM_EXT_YZY, QuatEnum_EXT_ZXZ, QUAT_ENUM_EXT_ZXZ, QuatEnum_EXT_ZYZ, QUAT_ENUM_EXT_ZYZ, QuatEnum_EULER_ANGLES_MAX_VALUE, QUAT_ENUM_EULER_ANGLES_MAX_VALUE]""" + +TermCriteria_COUNT: int +TERM_CRITERIA_COUNT: int +TermCriteria_MAX_ITER: int +TERM_CRITERIA_MAX_ITER: int +TermCriteria_EPS: int +TERM_CRITERIA_EPS: int +TermCriteria_Type = int +"""One of [TermCriteria_COUNT, TERM_CRITERIA_COUNT, TermCriteria_MAX_ITER, TERM_CRITERIA_MAX_ITER, TermCriteria_EPS, TERM_CRITERIA_EPS]""" + +GFluidKernel_Kind_Filter: int +GFLUID_KERNEL_KIND_FILTER: int +GFluidKernel_Kind_Resize: int +GFLUID_KERNEL_KIND_RESIZE: int +GFluidKernel_Kind_YUV420toRGB: int +GFLUID_KERNEL_KIND_YUV420TO_RGB: int +GFluidKernel_Kind = int +"""One of [GFluidKernel_Kind_Filter, GFLUID_KERNEL_KIND_FILTER, GFluidKernel_Kind_Resize, GFLUID_KERNEL_KIND_RESIZE, GFluidKernel_Kind_YUV420toRGB, GFLUID_KERNEL_KIND_YUV420TO_RGB]""" + +MediaFrame_Access_R: int +MEDIA_FRAME_ACCESS_R: int +MediaFrame_Access_W: int +MEDIA_FRAME_ACCESS_W: int +MediaFrame_Access = int +"""One of [MediaFrame_Access_R, MEDIA_FRAME_ACCESS_R, MediaFrame_Access_W, MEDIA_FRAME_ACCESS_W]""" + +RMat_Access_R: int +RMAT_ACCESS_R: int +RMat_Access_W: int +RMAT_ACCESS_W: int +RMat_Access = int +"""One of [RMat_Access_R, RMAT_ACCESS_R, RMat_Access_W, RMAT_ACCESS_W]""" + + +# Constants +CV_8U: int +CV_8UC1: int +CV_8UC2: int +CV_8UC3: int +CV_8UC4: int +CV_8S: int +CV_8SC1: int +CV_8SC2: int +CV_8SC3: int +CV_8SC4: int +CV_16U: int +CV_16UC1: int +CV_16UC2: int +CV_16UC3: int +CV_16UC4: int +CV_16S: int +CV_16SC1: int +CV_16SC2: int +CV_16SC3: int +CV_16SC4: int +CV_32S: int +CV_32SC1: int +CV_32SC2: int +CV_32SC3: int +CV_32SC4: int +CV_32F: int +CV_32FC1: int +CV_32FC2: int +CV_32FC3: int +CV_32FC4: int +CV_64F: int +CV_64FC1: int +CV_64FC2: int +CV_64FC3: int +CV_64FC4: int +CV_16F: int +CV_16FC1: int +CV_16FC2: int +CV_16FC3: int +CV_16FC4: int +__version__: str + +# Classes +class Algorithm: + # Functions + def clear(self) -> None: ... + + @_typing.overload + def write(self, fs: FileStorage) -> None: ... + @_typing.overload + def write(self, fs: FileStorage, name: str) -> None: ... + + def read(self, fn: FileNode) -> None: ... + + def empty(self) -> bool: ... + + def save(self, filename: str) -> None: ... + + def getDefaultName(self) -> str: ... + + +class AsyncArray: + # Functions + def __init__(self) -> None: ... + + def release(self) -> None: ... + + @_typing.overload + def get(self, dst: cv2.typing.MatLike | None = ...) -> cv2.typing.MatLike: ... + @_typing.overload + def get(self, dst: UMat | None = ...) -> UMat: ... + @_typing.overload + def get(self, timeoutNs: float, dst: cv2.typing.MatLike | None = ...) -> tuple[bool, cv2.typing.MatLike]: ... + @_typing.overload + def get(self, timeoutNs: float, dst: UMat | None = ...) -> tuple[bool, UMat]: ... + + def wait_for(self, timeoutNs: float) -> bool: ... + + def valid(self) -> bool: ... + + +class FileStorage: + # Functions + @_typing.overload + def __init__(self) -> None: ... + @_typing.overload + def __init__(self, filename: str, flags: int, encoding: str = ...) -> None: ... + + def open(self, filename: str, flags: int, encoding: str = ...) -> bool: ... + + def isOpened(self) -> bool: ... + + def release(self) -> None: ... + + def releaseAndGetString(self) -> str: ... + + def getFirstTopLevelNode(self) -> FileNode: ... + + def root(self, streamidx: int = ...) -> FileNode: ... + + def getNode(self, nodename: str) -> FileNode: ... + + @_typing.overload + def write(self, name: str, val: int) -> None: ... + @_typing.overload + def write(self, name: str, val: float) -> None: ... + @_typing.overload + def write(self, name: str, val: str) -> None: ... + @_typing.overload + def write(self, name: str, val: cv2.typing.MatLike) -> None: ... + @_typing.overload + def write(self, name: str, val: _typing.Sequence[str]) -> None: ... + + def writeComment(self, comment: str, append: bool = ...) -> None: ... + + def startWriteStruct(self, name: str, flags: int, typeName: str = ...) -> None: ... + + def endWriteStruct(self) -> None: ... + + def getFormat(self) -> int: ... + + +class FileNode: + # Functions + def __init__(self) -> None: ... + + def getNode(self, nodename: str) -> FileNode: ... + + def at(self, i: int) -> FileNode: ... + + def keys(self) -> _typing.Sequence[str]: ... + + def type(self) -> int: ... + + def empty(self) -> bool: ... + + def isNone(self) -> bool: ... + + def isSeq(self) -> bool: ... + + def isMap(self) -> bool: ... + + def isInt(self) -> bool: ... + + def isReal(self) -> bool: ... + + def isString(self) -> bool: ... + + def isNamed(self) -> bool: ... + + def name(self) -> str: ... + + def size(self) -> int: ... + + def rawSize(self) -> int: ... + + def real(self) -> float: ... + + def string(self) -> str: ... + + def mat(self) -> cv2.typing.MatLike: ... + + +class RotatedRect: + center: cv2.typing.Point2f + size: cv2.typing.Size2f + angle: float + + # Functions + @_typing.overload + def __init__(self) -> None: ... + @_typing.overload + def __init__(self, center: cv2.typing.Point2f, size: cv2.typing.Size2f, angle: float) -> None: ... + @_typing.overload + def __init__(self, point1: cv2.typing.Point2f, point2: cv2.typing.Point2f, point3: cv2.typing.Point2f) -> None: ... + + def points(self) -> _typing.Sequence[cv2.typing.Point2f]: ... + + def boundingRect(self) -> cv2.typing.Rect: ... + + def boundingRect2f(self) -> cv2.typing.Rect2f: ... + + +class KeyPoint: + pt: cv2.typing.Point2f + size: float + angle: float + response: float + octave: int + class_id: int + + # Functions + @_typing.overload + def __init__(self) -> None: ... + @_typing.overload + def __init__(self, x: float, y: float, size: float, angle: float = ..., response: float = ..., octave: int = ..., class_id: int = ...) -> None: ... + + @staticmethod + @_typing.overload + def convert(keypoints: _typing.Sequence[KeyPoint], keypointIndexes: _typing.Sequence[int] = ...) -> _typing.Sequence[cv2.typing.Point2f]: ... + @staticmethod + @_typing.overload + def convert(points2f: _typing.Sequence[cv2.typing.Point2f], size: float = ..., response: float = ..., octave: int = ..., class_id: int = ...) -> _typing.Sequence[KeyPoint]: ... + + @staticmethod + def overlap(kp1: KeyPoint, kp2: KeyPoint) -> float: ... + + +class DMatch: + queryIdx: int + trainIdx: int + imgIdx: int + distance: float + + # Functions + @_typing.overload + def __init__(self) -> None: ... + @_typing.overload + def __init__(self, _queryIdx: int, _trainIdx: int, _distance: float) -> None: ... + @_typing.overload + def __init__(self, _queryIdx: int, _trainIdx: int, _imgIdx: int, _distance: float) -> None: ... + + +class TickMeter: + # Functions + def __init__(self) -> None: ... + + def start(self) -> None: ... + + def stop(self) -> None: ... + + def getTimeTicks(self) -> int: ... + + def getTimeMicro(self) -> float: ... + + def getTimeMilli(self) -> float: ... + + def getTimeSec(self) -> float: ... + + def getCounter(self) -> int: ... + + def getFPS(self) -> float: ... + + def getAvgTimeSec(self) -> float: ... + + def getAvgTimeMilli(self) -> float: ... + + def reset(self) -> None: ... + + +class UMat: + offset: int + + # Functions + @_typing.overload + def __init__(self, usageFlags: UMatUsageFlags = ...) -> None: ... + @_typing.overload + def __init__(self, rows: int, cols: int, type: int, usageFlags: UMatUsageFlags = ...) -> None: ... + @_typing.overload + def __init__(self, size: cv2.typing.Size, type: int, usageFlags: UMatUsageFlags = ...) -> None: ... + @_typing.overload + def __init__(self, rows: int, cols: int, type: int, s: cv2.typing.Scalar, usageFlags: UMatUsageFlags = ...) -> None: ... + @_typing.overload + def __init__(self, size: cv2.typing.Size, type: int, s: cv2.typing.Scalar, usageFlags: UMatUsageFlags = ...) -> None: ... + @_typing.overload + def __init__(self, m: UMat) -> None: ... + @_typing.overload + def __init__(self, m: UMat, rowRange: cv2.typing.Range, colRange: cv2.typing.Range = ...) -> None: ... + @_typing.overload + def __init__(self, m: UMat, roi: cv2.typing.Rect) -> None: ... + @_typing.overload + def __init__(self, m: UMat, ranges: _typing.Sequence[cv2.typing.Range]) -> None: ... + + @staticmethod + def queue() -> cv2.typing.IntPointer: ... + + @staticmethod + def context() -> cv2.typing.IntPointer: ... + + def get(self) -> cv2.typing.MatLike: ... + + def isContinuous(self) -> bool: ... + + def isSubmatrix(self) -> bool: ... + + def handle(self, accessFlags: AccessFlag) -> cv2.typing.IntPointer: ... + + +class GeneralizedHough(Algorithm): + # Functions + @_typing.overload + def setTemplate(self, templ: cv2.typing.MatLike, templCenter: cv2.typing.Point = ...) -> None: ... + @_typing.overload + def setTemplate(self, templ: UMat, templCenter: cv2.typing.Point = ...) -> None: ... + @_typing.overload + def setTemplate(self, edges: cv2.typing.MatLike, dx: cv2.typing.MatLike, dy: cv2.typing.MatLike, templCenter: cv2.typing.Point = ...) -> None: ... + @_typing.overload + def setTemplate(self, edges: UMat, dx: UMat, dy: UMat, templCenter: cv2.typing.Point = ...) -> None: ... + + @_typing.overload + def detect(self, image: cv2.typing.MatLike, positions: cv2.typing.MatLike | None = ..., votes: cv2.typing.MatLike | None = ...) -> tuple[cv2.typing.MatLike, cv2.typing.MatLike]: ... + @_typing.overload + def detect(self, image: UMat, positions: UMat | None = ..., votes: UMat | None = ...) -> tuple[UMat, UMat]: ... + @_typing.overload + def detect(self, edges: cv2.typing.MatLike, dx: cv2.typing.MatLike, dy: cv2.typing.MatLike, positions: cv2.typing.MatLike | None = ..., votes: cv2.typing.MatLike | None = ...) -> tuple[cv2.typing.MatLike, cv2.typing.MatLike]: ... + @_typing.overload + def detect(self, edges: UMat, dx: UMat, dy: UMat, positions: UMat | None = ..., votes: UMat | None = ...) -> tuple[UMat, UMat]: ... + + def setCannyLowThresh(self, cannyLowThresh: int) -> None: ... + + def getCannyLowThresh(self) -> int: ... + + def setCannyHighThresh(self, cannyHighThresh: int) -> None: ... + + def getCannyHighThresh(self) -> int: ... + + def setMinDist(self, minDist: float) -> None: ... + + def getMinDist(self) -> float: ... + + def setDp(self, dp: float) -> None: ... + + def getDp(self) -> float: ... + + def setMaxBufferSize(self, maxBufferSize: int) -> None: ... + + def getMaxBufferSize(self) -> int: ... + + +class GeneralizedHoughBallard(GeneralizedHough): + # Functions + def setLevels(self, levels: int) -> None: ... + + def getLevels(self) -> int: ... + + def setVotesThreshold(self, votesThreshold: int) -> None: ... + + def getVotesThreshold(self) -> int: ... + + +class GeneralizedHoughGuil(GeneralizedHough): + # Functions + def setXi(self, xi: float) -> None: ... + + def getXi(self) -> float: ... + + def setLevels(self, levels: int) -> None: ... + + def getLevels(self) -> int: ... + + def setAngleEpsilon(self, angleEpsilon: float) -> None: ... + + def getAngleEpsilon(self) -> float: ... + + def setMinAngle(self, minAngle: float) -> None: ... + + def getMinAngle(self) -> float: ... + + def setMaxAngle(self, maxAngle: float) -> None: ... + + def getMaxAngle(self) -> float: ... + + def setAngleStep(self, angleStep: float) -> None: ... + + def getAngleStep(self) -> float: ... + + def setAngleThresh(self, angleThresh: int) -> None: ... + + def getAngleThresh(self) -> int: ... + + def setMinScale(self, minScale: float) -> None: ... + + def getMinScale(self) -> float: ... + + def setMaxScale(self, maxScale: float) -> None: ... + + def getMaxScale(self) -> float: ... + + def setScaleStep(self, scaleStep: float) -> None: ... + + def getScaleStep(self) -> float: ... + + def setScaleThresh(self, scaleThresh: int) -> None: ... + + def getScaleThresh(self) -> int: ... + + def setPosThresh(self, posThresh: int) -> None: ... + + def getPosThresh(self) -> int: ... + + +class CLAHE(Algorithm): + # Functions + @_typing.overload + def apply(self, src: cv2.typing.MatLike, dst: cv2.typing.MatLike | None = ...) -> cv2.typing.MatLike: ... + @_typing.overload + def apply(self, src: UMat, dst: UMat | None = ...) -> UMat: ... + + def setClipLimit(self, clipLimit: float) -> None: ... + + def getClipLimit(self) -> float: ... + + def setTilesGridSize(self, tileGridSize: cv2.typing.Size) -> None: ... + + def getTilesGridSize(self) -> cv2.typing.Size: ... + + def collectGarbage(self) -> None: ... + + +class Subdiv2D: + # Functions + @_typing.overload + def __init__(self) -> None: ... + @_typing.overload + def __init__(self, rect: cv2.typing.Rect) -> None: ... + + def initDelaunay(self, rect: cv2.typing.Rect) -> None: ... + + @_typing.overload + def insert(self, pt: cv2.typing.Point2f) -> int: ... + @_typing.overload + def insert(self, ptvec: _typing.Sequence[cv2.typing.Point2f]) -> None: ... + + def locate(self, pt: cv2.typing.Point2f) -> tuple[int, int, int]: ... + + def findNearest(self, pt: cv2.typing.Point2f) -> tuple[int, cv2.typing.Point2f]: ... + + def getEdgeList(self) -> _typing.Sequence[cv2.typing.Vec4f]: ... + + def getLeadingEdgeList(self) -> _typing.Sequence[int]: ... + + def getTriangleList(self) -> _typing.Sequence[cv2.typing.Vec6f]: ... + + def getVoronoiFacetList(self, idx: _typing.Sequence[int]) -> tuple[_typing.Sequence[_typing.Sequence[cv2.typing.Point2f]], _typing.Sequence[cv2.typing.Point2f]]: ... + + def getVertex(self, vertex: int) -> tuple[cv2.typing.Point2f, int]: ... + + def getEdge(self, edge: int, nextEdgeType: int) -> int: ... + + def nextEdge(self, edge: int) -> int: ... + + def rotateEdge(self, edge: int, rotate: int) -> int: ... + + def symEdge(self, edge: int) -> int: ... + + def edgeOrg(self, edge: int) -> tuple[int, cv2.typing.Point2f]: ... + + def edgeDst(self, edge: int) -> tuple[int, cv2.typing.Point2f]: ... + + +class LineSegmentDetector(Algorithm): + # Functions + @_typing.overload + def detect(self, image: cv2.typing.MatLike, lines: cv2.typing.MatLike | None = ..., width: cv2.typing.MatLike | None = ..., prec: cv2.typing.MatLike | None = ..., nfa: cv2.typing.MatLike | None = ...) -> tuple[cv2.typing.MatLike, cv2.typing.MatLike, cv2.typing.MatLike, cv2.typing.MatLike]: ... + @_typing.overload + def detect(self, image: UMat, lines: UMat | None = ..., width: UMat | None = ..., prec: UMat | None = ..., nfa: UMat | None = ...) -> tuple[UMat, UMat, UMat, UMat]: ... + + @_typing.overload + def drawSegments(self, image: cv2.typing.MatLike, lines: cv2.typing.MatLike) -> cv2.typing.MatLike: ... + @_typing.overload + def drawSegments(self, image: UMat, lines: UMat) -> UMat: ... + + @_typing.overload + def compareSegments(self, size: cv2.typing.Size, lines1: cv2.typing.MatLike, lines2: cv2.typing.MatLike, image: cv2.typing.MatLike | None = ...) -> tuple[int, cv2.typing.MatLike]: ... + @_typing.overload + def compareSegments(self, size: cv2.typing.Size, lines1: UMat, lines2: UMat, image: UMat | None = ...) -> tuple[int, UMat]: ... + + +class Tonemap(Algorithm): + # Functions + @_typing.overload + def process(self, src: cv2.typing.MatLike, dst: cv2.typing.MatLike | None = ...) -> cv2.typing.MatLike: ... + @_typing.overload + def process(self, src: UMat, dst: UMat | None = ...) -> UMat: ... + + def getGamma(self) -> float: ... + + def setGamma(self, gamma: float) -> None: ... + + +class TonemapDrago(Tonemap): + # Functions + def getSaturation(self) -> float: ... + + def setSaturation(self, saturation: float) -> None: ... + + def getBias(self) -> float: ... + + def setBias(self, bias: float) -> None: ... + + +class TonemapReinhard(Tonemap): + # Functions + def getIntensity(self) -> float: ... + + def setIntensity(self, intensity: float) -> None: ... + + def getLightAdaptation(self) -> float: ... + + def setLightAdaptation(self, light_adapt: float) -> None: ... + + def getColorAdaptation(self) -> float: ... + + def setColorAdaptation(self, color_adapt: float) -> None: ... + + +class TonemapMantiuk(Tonemap): + # Functions + def getScale(self) -> float: ... + + def setScale(self, scale: float) -> None: ... + + def getSaturation(self) -> float: ... + + def setSaturation(self, saturation: float) -> None: ... + + +class AlignExposures(Algorithm): + # Functions + @_typing.overload + def process(self, src: _typing.Sequence[cv2.typing.MatLike], dst: _typing.Sequence[cv2.typing.MatLike], times: cv2.typing.MatLike, response: cv2.typing.MatLike) -> None: ... + @_typing.overload + def process(self, src: _typing.Sequence[UMat], dst: _typing.Sequence[cv2.typing.MatLike], times: UMat, response: UMat) -> None: ... + + +class AlignMTB(AlignExposures): + # Functions + @_typing.overload + def process(self, src: _typing.Sequence[cv2.typing.MatLike], dst: _typing.Sequence[cv2.typing.MatLike], times: cv2.typing.MatLike, response: cv2.typing.MatLike) -> None: ... + @_typing.overload + def process(self, src: _typing.Sequence[UMat], dst: _typing.Sequence[cv2.typing.MatLike], times: UMat, response: UMat) -> None: ... + @_typing.overload + def process(self, src: _typing.Sequence[cv2.typing.MatLike], dst: _typing.Sequence[cv2.typing.MatLike]) -> None: ... + @_typing.overload + def process(self, src: _typing.Sequence[UMat], dst: _typing.Sequence[cv2.typing.MatLike]) -> None: ... + + @_typing.overload + def calculateShift(self, img0: cv2.typing.MatLike, img1: cv2.typing.MatLike) -> cv2.typing.Point: ... + @_typing.overload + def calculateShift(self, img0: UMat, img1: UMat) -> cv2.typing.Point: ... + + @_typing.overload + def shiftMat(self, src: cv2.typing.MatLike, shift: cv2.typing.Point, dst: cv2.typing.MatLike | None = ...) -> cv2.typing.MatLike: ... + @_typing.overload + def shiftMat(self, src: UMat, shift: cv2.typing.Point, dst: UMat | None = ...) -> UMat: ... + + @_typing.overload + def computeBitmaps(self, img: cv2.typing.MatLike, tb: cv2.typing.MatLike | None = ..., eb: cv2.typing.MatLike | None = ...) -> tuple[cv2.typing.MatLike, cv2.typing.MatLike]: ... + @_typing.overload + def computeBitmaps(self, img: UMat, tb: UMat | None = ..., eb: UMat | None = ...) -> tuple[UMat, UMat]: ... + + def getMaxBits(self) -> int: ... + + def setMaxBits(self, max_bits: int) -> None: ... + + def getExcludeRange(self) -> int: ... + + def setExcludeRange(self, exclude_range: int) -> None: ... + + def getCut(self) -> bool: ... + + def setCut(self, value: bool) -> None: ... + + +class CalibrateCRF(Algorithm): + # Functions + @_typing.overload + def process(self, src: _typing.Sequence[cv2.typing.MatLike], times: cv2.typing.MatLike, dst: cv2.typing.MatLike | None = ...) -> cv2.typing.MatLike: ... + @_typing.overload + def process(self, src: _typing.Sequence[UMat], times: UMat, dst: UMat | None = ...) -> UMat: ... + + +class CalibrateDebevec(CalibrateCRF): + # Functions + def getLambda(self) -> float: ... + + def setLambda(self, lambda_: float) -> None: ... + + def getSamples(self) -> int: ... + + def setSamples(self, samples: int) -> None: ... + + def getRandom(self) -> bool: ... + + def setRandom(self, random: bool) -> None: ... + + +class CalibrateRobertson(CalibrateCRF): + # Functions + def getMaxIter(self) -> int: ... + + def setMaxIter(self, max_iter: int) -> None: ... + + def getThreshold(self) -> float: ... + + def setThreshold(self, threshold: float) -> None: ... + + def getRadiance(self) -> cv2.typing.MatLike: ... + + +class MergeExposures(Algorithm): + # Functions + @_typing.overload + def process(self, src: _typing.Sequence[cv2.typing.MatLike], times: cv2.typing.MatLike, response: cv2.typing.MatLike, dst: cv2.typing.MatLike | None = ...) -> cv2.typing.MatLike: ... + @_typing.overload + def process(self, src: _typing.Sequence[UMat], times: UMat, response: UMat, dst: UMat | None = ...) -> UMat: ... + + +class MergeDebevec(MergeExposures): + # Functions + @_typing.overload + def process(self, src: _typing.Sequence[cv2.typing.MatLike], times: cv2.typing.MatLike, response: cv2.typing.MatLike, dst: cv2.typing.MatLike | None = ...) -> cv2.typing.MatLike: ... + @_typing.overload + def process(self, src: _typing.Sequence[UMat], times: UMat, response: UMat, dst: UMat | None = ...) -> UMat: ... + @_typing.overload + def process(self, src: _typing.Sequence[cv2.typing.MatLike], times: cv2.typing.MatLike, dst: cv2.typing.MatLike | None = ...) -> cv2.typing.MatLike: ... + @_typing.overload + def process(self, src: _typing.Sequence[UMat], times: UMat, dst: UMat | None = ...) -> UMat: ... + + +class MergeMertens(MergeExposures): + # Functions + @_typing.overload + def process(self, src: _typing.Sequence[cv2.typing.MatLike], times: cv2.typing.MatLike, response: cv2.typing.MatLike, dst: cv2.typing.MatLike | None = ...) -> cv2.typing.MatLike: ... + @_typing.overload + def process(self, src: _typing.Sequence[UMat], times: UMat, response: UMat, dst: UMat | None = ...) -> UMat: ... + @_typing.overload + def process(self, src: _typing.Sequence[cv2.typing.MatLike], dst: cv2.typing.MatLike | None = ...) -> cv2.typing.MatLike: ... + @_typing.overload + def process(self, src: _typing.Sequence[UMat], dst: UMat | None = ...) -> UMat: ... + + def getContrastWeight(self) -> float: ... + + def setContrastWeight(self, contrast_weiht: float) -> None: ... + + def getSaturationWeight(self) -> float: ... + + def setSaturationWeight(self, saturation_weight: float) -> None: ... + + def getExposureWeight(self) -> float: ... + + def setExposureWeight(self, exposure_weight: float) -> None: ... + + +class MergeRobertson(MergeExposures): + # Functions + @_typing.overload + def process(self, src: _typing.Sequence[cv2.typing.MatLike], times: cv2.typing.MatLike, response: cv2.typing.MatLike, dst: cv2.typing.MatLike | None = ...) -> cv2.typing.MatLike: ... + @_typing.overload + def process(self, src: _typing.Sequence[UMat], times: UMat, response: UMat, dst: UMat | None = ...) -> UMat: ... + @_typing.overload + def process(self, src: _typing.Sequence[cv2.typing.MatLike], times: cv2.typing.MatLike, dst: cv2.typing.MatLike | None = ...) -> cv2.typing.MatLike: ... + @_typing.overload + def process(self, src: _typing.Sequence[UMat], times: UMat, dst: UMat | None = ...) -> UMat: ... + + +class Feature2D: + # Functions + @_typing.overload + def detect(self, image: cv2.typing.MatLike, mask: cv2.typing.MatLike | None = ...) -> _typing.Sequence[KeyPoint]: ... + @_typing.overload + def detect(self, image: UMat, mask: UMat | None = ...) -> _typing.Sequence[KeyPoint]: ... + @_typing.overload + def detect(self, images: _typing.Sequence[cv2.typing.MatLike], masks: _typing.Sequence[cv2.typing.MatLike] | None = ...) -> _typing.Sequence[_typing.Sequence[KeyPoint]]: ... + @_typing.overload + def detect(self, images: _typing.Sequence[UMat], masks: _typing.Sequence[UMat] | None = ...) -> _typing.Sequence[_typing.Sequence[KeyPoint]]: ... + + @_typing.overload + def compute(self, image: cv2.typing.MatLike, keypoints: _typing.Sequence[KeyPoint], descriptors: cv2.typing.MatLike | None = ...) -> tuple[_typing.Sequence[KeyPoint], cv2.typing.MatLike]: ... + @_typing.overload + def compute(self, image: UMat, keypoints: _typing.Sequence[KeyPoint], descriptors: UMat | None = ...) -> tuple[_typing.Sequence[KeyPoint], UMat]: ... + @_typing.overload + def compute(self, images: _typing.Sequence[cv2.typing.MatLike], keypoints: _typing.Sequence[_typing.Sequence[KeyPoint]], descriptors: _typing.Sequence[cv2.typing.MatLike] | None = ...) -> tuple[_typing.Sequence[_typing.Sequence[KeyPoint]], _typing.Sequence[cv2.typing.MatLike]]: ... + @_typing.overload + def compute(self, images: _typing.Sequence[UMat], keypoints: _typing.Sequence[_typing.Sequence[KeyPoint]], descriptors: _typing.Sequence[UMat] | None = ...) -> tuple[_typing.Sequence[_typing.Sequence[KeyPoint]], _typing.Sequence[UMat]]: ... + + @_typing.overload + def detectAndCompute(self, image: cv2.typing.MatLike, mask: cv2.typing.MatLike, descriptors: cv2.typing.MatLike | None = ..., useProvidedKeypoints: bool = ...) -> tuple[_typing.Sequence[KeyPoint], cv2.typing.MatLike]: ... + @_typing.overload + def detectAndCompute(self, image: UMat, mask: UMat, descriptors: UMat | None = ..., useProvidedKeypoints: bool = ...) -> tuple[_typing.Sequence[KeyPoint], UMat]: ... + + def descriptorSize(self) -> int: ... + + def descriptorType(self) -> int: ... + + def defaultNorm(self) -> int: ... + + @_typing.overload + def write(self, fileName: str) -> None: ... + @_typing.overload + def write(self, fs: FileStorage, name: str) -> None: ... + + @_typing.overload + def read(self, fileName: str) -> None: ... + @_typing.overload + def read(self, arg1: FileNode) -> None: ... + + def empty(self) -> bool: ... + + def getDefaultName(self) -> str: ... + + +class AffineFeature(Feature2D): + # Functions + @classmethod + def create(cls, backend: Feature2D, maxTilt: int = ..., minTilt: int = ..., tiltStep: float = ..., rotateStepBase: float = ...) -> AffineFeature: ... + + def setViewParams(self, tilts: _typing.Sequence[float], rolls: _typing.Sequence[float]) -> None: ... + + def getViewParams(self, tilts: _typing.Sequence[float], rolls: _typing.Sequence[float]) -> None: ... + + def getDefaultName(self) -> str: ... + + +class SIFT(Feature2D): + # Functions + @classmethod + @_typing.overload + def create(cls, nfeatures: int = ..., nOctaveLayers: int = ..., contrastThreshold: float = ..., edgeThreshold: float = ..., sigma: float = ..., enable_precise_upscale: bool = ...) -> SIFT: ... + @classmethod + @_typing.overload + def create(cls, nfeatures: int, nOctaveLayers: int, contrastThreshold: float, edgeThreshold: float, sigma: float, descriptorType: int, enable_precise_upscale: bool = ...) -> SIFT: ... + + def getDefaultName(self) -> str: ... + + def setNFeatures(self, maxFeatures: int) -> None: ... + + def getNFeatures(self) -> int: ... + + def setNOctaveLayers(self, nOctaveLayers: int) -> None: ... + + def getNOctaveLayers(self) -> int: ... + + def setContrastThreshold(self, contrastThreshold: float) -> None: ... + + def getContrastThreshold(self) -> float: ... + + def setEdgeThreshold(self, edgeThreshold: float) -> None: ... + + def getEdgeThreshold(self) -> float: ... + + def setSigma(self, sigma: float) -> None: ... + + def getSigma(self) -> float: ... + + +class BRISK(Feature2D): + # Functions + @classmethod + @_typing.overload + def create(cls, thresh: int = ..., octaves: int = ..., patternScale: float = ...) -> BRISK: ... + @classmethod + @_typing.overload + def create(cls, radiusList: _typing.Sequence[float], numberList: _typing.Sequence[int], dMax: float = ..., dMin: float = ..., indexChange: _typing.Sequence[int] = ...) -> BRISK: ... + @classmethod + @_typing.overload + def create(cls, thresh: int, octaves: int, radiusList: _typing.Sequence[float], numberList: _typing.Sequence[int], dMax: float = ..., dMin: float = ..., indexChange: _typing.Sequence[int] = ...) -> BRISK: ... + + def getDefaultName(self) -> str: ... + + def setThreshold(self, threshold: int) -> None: ... + + def getThreshold(self) -> int: ... + + def setOctaves(self, octaves: int) -> None: ... + + def getOctaves(self) -> int: ... + + def setPatternScale(self, patternScale: float) -> None: ... + + def getPatternScale(self) -> float: ... + + +class ORB(Feature2D): + # Functions + @classmethod + def create(cls, nfeatures: int = ..., scaleFactor: float = ..., nlevels: int = ..., edgeThreshold: int = ..., firstLevel: int = ..., WTA_K: int = ..., scoreType: ORB_ScoreType = ..., patchSize: int = ..., fastThreshold: int = ...) -> ORB: ... + + def setMaxFeatures(self, maxFeatures: int) -> None: ... + + def getMaxFeatures(self) -> int: ... + + def setScaleFactor(self, scaleFactor: float) -> None: ... + + def getScaleFactor(self) -> float: ... + + def setNLevels(self, nlevels: int) -> None: ... + + def getNLevels(self) -> int: ... + + def setEdgeThreshold(self, edgeThreshold: int) -> None: ... + + def getEdgeThreshold(self) -> int: ... + + def setFirstLevel(self, firstLevel: int) -> None: ... + + def getFirstLevel(self) -> int: ... + + def setWTA_K(self, wta_k: int) -> None: ... + + def getWTA_K(self) -> int: ... + + def setScoreType(self, scoreType: ORB_ScoreType) -> None: ... + + def getScoreType(self) -> ORB_ScoreType: ... + + def setPatchSize(self, patchSize: int) -> None: ... + + def getPatchSize(self) -> int: ... + + def setFastThreshold(self, fastThreshold: int) -> None: ... + + def getFastThreshold(self) -> int: ... + + def getDefaultName(self) -> str: ... + + +class MSER(Feature2D): + # Functions + @classmethod + def create(cls, delta: int = ..., min_area: int = ..., max_area: int = ..., max_variation: float = ..., min_diversity: float = ..., max_evolution: int = ..., area_threshold: float = ..., min_margin: float = ..., edge_blur_size: int = ...) -> MSER: ... + + @_typing.overload + def detectRegions(self, image: cv2.typing.MatLike) -> tuple[_typing.Sequence[_typing.Sequence[cv2.typing.Point]], _typing.Sequence[cv2.typing.Rect]]: ... + @_typing.overload + def detectRegions(self, image: UMat) -> tuple[_typing.Sequence[_typing.Sequence[cv2.typing.Point]], _typing.Sequence[cv2.typing.Rect]]: ... + + def setDelta(self, delta: int) -> None: ... + + def getDelta(self) -> int: ... + + def setMinArea(self, minArea: int) -> None: ... + + def getMinArea(self) -> int: ... + + def setMaxArea(self, maxArea: int) -> None: ... + + def getMaxArea(self) -> int: ... + + def setMaxVariation(self, maxVariation: float) -> None: ... + + def getMaxVariation(self) -> float: ... + + def setMinDiversity(self, minDiversity: float) -> None: ... + + def getMinDiversity(self) -> float: ... + + def setMaxEvolution(self, maxEvolution: int) -> None: ... + + def getMaxEvolution(self) -> int: ... + + def setAreaThreshold(self, areaThreshold: float) -> None: ... + + def getAreaThreshold(self) -> float: ... + + def setMinMargin(self, min_margin: float) -> None: ... + + def getMinMargin(self) -> float: ... + + def setEdgeBlurSize(self, edge_blur_size: int) -> None: ... + + def getEdgeBlurSize(self) -> int: ... + + def setPass2Only(self, f: bool) -> None: ... + + def getPass2Only(self) -> bool: ... + + def getDefaultName(self) -> str: ... + + +class FastFeatureDetector(Feature2D): + # Functions + @classmethod + def create(cls, threshold: int = ..., nonmaxSuppression: bool = ..., type: FastFeatureDetector_DetectorType = ...) -> FastFeatureDetector: ... + + def setThreshold(self, threshold: int) -> None: ... + + def getThreshold(self) -> int: ... + + def setNonmaxSuppression(self, f: bool) -> None: ... + + def getNonmaxSuppression(self) -> bool: ... + + def setType(self, type: FastFeatureDetector_DetectorType) -> None: ... + + def getType(self) -> FastFeatureDetector_DetectorType: ... + + def getDefaultName(self) -> str: ... + + +class AgastFeatureDetector(Feature2D): + # Functions + @classmethod + def create(cls, threshold: int = ..., nonmaxSuppression: bool = ..., type: AgastFeatureDetector_DetectorType = ...) -> AgastFeatureDetector: ... + + def setThreshold(self, threshold: int) -> None: ... + + def getThreshold(self) -> int: ... + + def setNonmaxSuppression(self, f: bool) -> None: ... + + def getNonmaxSuppression(self) -> bool: ... + + def setType(self, type: AgastFeatureDetector_DetectorType) -> None: ... + + def getType(self) -> AgastFeatureDetector_DetectorType: ... + + def getDefaultName(self) -> str: ... + + +class GFTTDetector(Feature2D): + # Functions + @classmethod + @_typing.overload + def create(cls, maxCorners: int = ..., qualityLevel: float = ..., minDistance: float = ..., blockSize: int = ..., useHarrisDetector: bool = ..., k: float = ...) -> GFTTDetector: ... + @classmethod + @_typing.overload + def create(cls, maxCorners: int, qualityLevel: float, minDistance: float, blockSize: int, gradiantSize: int, useHarrisDetector: bool = ..., k: float = ...) -> GFTTDetector: ... + + def setMaxFeatures(self, maxFeatures: int) -> None: ... + + def getMaxFeatures(self) -> int: ... + + def setQualityLevel(self, qlevel: float) -> None: ... + + def getQualityLevel(self) -> float: ... + + def setMinDistance(self, minDistance: float) -> None: ... + + def getMinDistance(self) -> float: ... + + def setBlockSize(self, blockSize: int) -> None: ... + + def getBlockSize(self) -> int: ... + + def setGradientSize(self, gradientSize_: int) -> None: ... + + def getGradientSize(self) -> int: ... + + def setHarrisDetector(self, val: bool) -> None: ... + + def getHarrisDetector(self) -> bool: ... + + def setK(self, k: float) -> None: ... + + def getK(self) -> float: ... + + def getDefaultName(self) -> str: ... + + +class SimpleBlobDetector(Feature2D): + # Classes + class Params: + thresholdStep: float + minThreshold: float + maxThreshold: float + minRepeatability: int + minDistBetweenBlobs: float + filterByColor: bool + blobColor: int + filterByArea: bool + minArea: float + maxArea: float + filterByCircularity: bool + minCircularity: float + maxCircularity: float + filterByInertia: bool + minInertiaRatio: float + maxInertiaRatio: float + filterByConvexity: bool + minConvexity: float + maxConvexity: float + collectContours: bool + + # Functions + def __init__(self) -> None: ... + + + + # Functions + @classmethod + def create(cls, parameters: SimpleBlobDetector.Params = ...) -> SimpleBlobDetector: ... + + def setParams(self, params: SimpleBlobDetector.Params) -> None: ... + + def getParams(self) -> SimpleBlobDetector.Params: ... + + def getDefaultName(self) -> str: ... + + def getBlobContours(self) -> _typing.Sequence[_typing.Sequence[cv2.typing.Point]]: ... + + +class KAZE(Feature2D): + # Functions + @classmethod + def create(cls, extended: bool = ..., upright: bool = ..., threshold: float = ..., nOctaves: int = ..., nOctaveLayers: int = ..., diffusivity: KAZE_DiffusivityType = ...) -> KAZE: ... + + def setExtended(self, extended: bool) -> None: ... + + def getExtended(self) -> bool: ... + + def setUpright(self, upright: bool) -> None: ... + + def getUpright(self) -> bool: ... + + def setThreshold(self, threshold: float) -> None: ... + + def getThreshold(self) -> float: ... + + def setNOctaves(self, octaves: int) -> None: ... + + def getNOctaves(self) -> int: ... + + def setNOctaveLayers(self, octaveLayers: int) -> None: ... + + def getNOctaveLayers(self) -> int: ... + + def setDiffusivity(self, diff: KAZE_DiffusivityType) -> None: ... + + def getDiffusivity(self) -> KAZE_DiffusivityType: ... + + def getDefaultName(self) -> str: ... + + +class AKAZE(Feature2D): + # Functions + @classmethod + def create(cls, descriptor_type: AKAZE_DescriptorType = ..., descriptor_size: int = ..., descriptor_channels: int = ..., threshold: float = ..., nOctaves: int = ..., nOctaveLayers: int = ..., diffusivity: KAZE_DiffusivityType = ..., max_points: int = ...) -> AKAZE: ... + + def setDescriptorType(self, dtype: AKAZE_DescriptorType) -> None: ... + + def getDescriptorType(self) -> AKAZE_DescriptorType: ... + + def setDescriptorSize(self, dsize: int) -> None: ... + + def getDescriptorSize(self) -> int: ... + + def setDescriptorChannels(self, dch: int) -> None: ... + + def getDescriptorChannels(self) -> int: ... + + def setThreshold(self, threshold: float) -> None: ... + + def getThreshold(self) -> float: ... + + def setNOctaves(self, octaves: int) -> None: ... + + def getNOctaves(self) -> int: ... + + def setNOctaveLayers(self, octaveLayers: int) -> None: ... + + def getNOctaveLayers(self) -> int: ... + + def setDiffusivity(self, diff: KAZE_DiffusivityType) -> None: ... + + def getDiffusivity(self) -> KAZE_DiffusivityType: ... + + def getDefaultName(self) -> str: ... + + def setMaxPoints(self, max_points: int) -> None: ... + + def getMaxPoints(self) -> int: ... + + +class DescriptorMatcher(Algorithm): + # Functions + @_typing.overload + def add(self, descriptors: _typing.Sequence[cv2.typing.MatLike]) -> None: ... + @_typing.overload + def add(self, descriptors: _typing.Sequence[UMat]) -> None: ... + + def getTrainDescriptors(self) -> _typing.Sequence[cv2.typing.MatLike]: ... + + def clear(self) -> None: ... + + def empty(self) -> bool: ... + + def isMaskSupported(self) -> bool: ... + + def train(self) -> None: ... + + @_typing.overload + def match(self, queryDescriptors: cv2.typing.MatLike, trainDescriptors: cv2.typing.MatLike, mask: cv2.typing.MatLike | None = ...) -> _typing.Sequence[DMatch]: ... + @_typing.overload + def match(self, queryDescriptors: UMat, trainDescriptors: UMat, mask: UMat | None = ...) -> _typing.Sequence[DMatch]: ... + @_typing.overload + def match(self, queryDescriptors: cv2.typing.MatLike, masks: _typing.Sequence[cv2.typing.MatLike] | None = ...) -> _typing.Sequence[DMatch]: ... + @_typing.overload + def match(self, queryDescriptors: UMat, masks: _typing.Sequence[UMat] | None = ...) -> _typing.Sequence[DMatch]: ... + + @_typing.overload + def knnMatch(self, queryDescriptors: cv2.typing.MatLike, trainDescriptors: cv2.typing.MatLike, k: int, mask: cv2.typing.MatLike | None = ..., compactResult: bool = ...) -> _typing.Sequence[_typing.Sequence[DMatch]]: ... + @_typing.overload + def knnMatch(self, queryDescriptors: UMat, trainDescriptors: UMat, k: int, mask: UMat | None = ..., compactResult: bool = ...) -> _typing.Sequence[_typing.Sequence[DMatch]]: ... + @_typing.overload + def knnMatch(self, queryDescriptors: cv2.typing.MatLike, k: int, masks: _typing.Sequence[cv2.typing.MatLike] | None = ..., compactResult: bool = ...) -> _typing.Sequence[_typing.Sequence[DMatch]]: ... + @_typing.overload + def knnMatch(self, queryDescriptors: UMat, k: int, masks: _typing.Sequence[UMat] | None = ..., compactResult: bool = ...) -> _typing.Sequence[_typing.Sequence[DMatch]]: ... + + @_typing.overload + def radiusMatch(self, queryDescriptors: cv2.typing.MatLike, trainDescriptors: cv2.typing.MatLike, maxDistance: float, mask: cv2.typing.MatLike | None = ..., compactResult: bool = ...) -> _typing.Sequence[_typing.Sequence[DMatch]]: ... + @_typing.overload + def radiusMatch(self, queryDescriptors: UMat, trainDescriptors: UMat, maxDistance: float, mask: UMat | None = ..., compactResult: bool = ...) -> _typing.Sequence[_typing.Sequence[DMatch]]: ... + @_typing.overload + def radiusMatch(self, queryDescriptors: cv2.typing.MatLike, maxDistance: float, masks: _typing.Sequence[cv2.typing.MatLike] | None = ..., compactResult: bool = ...) -> _typing.Sequence[_typing.Sequence[DMatch]]: ... + @_typing.overload + def radiusMatch(self, queryDescriptors: UMat, maxDistance: float, masks: _typing.Sequence[UMat] | None = ..., compactResult: bool = ...) -> _typing.Sequence[_typing.Sequence[DMatch]]: ... + + @_typing.overload + def write(self, fileName: str) -> None: ... + @_typing.overload + def write(self, fs: FileStorage, name: str) -> None: ... + + @_typing.overload + def read(self, fileName: str) -> None: ... + @_typing.overload + def read(self, arg1: FileNode) -> None: ... + + def clone(self, emptyTrainData: bool = ...) -> DescriptorMatcher: ... + + @classmethod + @_typing.overload + def create(cls, descriptorMatcherType: str) -> DescriptorMatcher: ... + @classmethod + @_typing.overload + def create(cls, matcherType: DescriptorMatcher_MatcherType) -> DescriptorMatcher: ... + + +class BFMatcher(DescriptorMatcher): + # Functions + def __init__(self, normType: int = ..., crossCheck: bool = ...) -> None: ... + + @classmethod + def create(cls, normType: int = ..., crossCheck: bool = ...) -> BFMatcher: ... + + +class FlannBasedMatcher(DescriptorMatcher): + # Functions + def __init__(self, indexParams: cv2.typing.IndexParams = ..., searchParams: cv2.typing.SearchParams = ...) -> None: ... + + @classmethod + def create(cls) -> FlannBasedMatcher: ... + + +class BOWTrainer: + # Functions + def add(self, descriptors: cv2.typing.MatLike) -> None: ... + + def getDescriptors(self) -> _typing.Sequence[cv2.typing.MatLike]: ... + + def descriptorsCount(self) -> int: ... + + def clear(self) -> None: ... + + @_typing.overload + def cluster(self) -> cv2.typing.MatLike: ... + @_typing.overload + def cluster(self, descriptors: cv2.typing.MatLike) -> cv2.typing.MatLike: ... + + +class BOWKMeansTrainer(BOWTrainer): + # Functions + def __init__(self, clusterCount: int, termcrit: cv2.typing.TermCriteria = ..., attempts: int = ..., flags: int = ...) -> None: ... + + @_typing.overload + def cluster(self) -> cv2.typing.MatLike: ... + @_typing.overload + def cluster(self, descriptors: cv2.typing.MatLike) -> cv2.typing.MatLike: ... + + +class BOWImgDescriptorExtractor: + # Functions + def __init__(self, dextractor: Feature2D, dmatcher: DescriptorMatcher) -> None: ... + + def setVocabulary(self, vocabulary: cv2.typing.MatLike) -> None: ... + + def getVocabulary(self) -> cv2.typing.MatLike: ... + + def compute(self, image: cv2.typing.MatLike, keypoints: _typing.Sequence[KeyPoint], imgDescriptor: cv2.typing.MatLike | None = ...) -> cv2.typing.MatLike: ... + + def descriptorSize(self) -> int: ... + + def descriptorType(self) -> int: ... + + +class VideoCapture: + # Functions + @_typing.overload + def __init__(self) -> None: ... + @_typing.overload + def __init__(self, filename: str, apiPreference: int = ...) -> None: ... + @_typing.overload + def __init__(self, filename: str, apiPreference: int, params: _typing.Sequence[int]) -> None: ... + @_typing.overload + def __init__(self, index: int, apiPreference: int = ...) -> None: ... + @_typing.overload + def __init__(self, index: int, apiPreference: int, params: _typing.Sequence[int]) -> None: ... + + @_typing.overload + def open(self, filename: str, apiPreference: int = ...) -> bool: ... + @_typing.overload + def open(self, filename: str, apiPreference: int, params: _typing.Sequence[int]) -> bool: ... + @_typing.overload + def open(self, index: int, apiPreference: int = ...) -> bool: ... + @_typing.overload + def open(self, index: int, apiPreference: int, params: _typing.Sequence[int]) -> bool: ... + + def isOpened(self) -> bool: ... + + def release(self) -> None: ... + + def grab(self) -> bool: ... + + @_typing.overload + def retrieve(self, image: cv2.typing.MatLike | None = ..., flag: int = ...) -> tuple[bool, cv2.typing.MatLike]: ... + @_typing.overload + def retrieve(self, image: UMat | None = ..., flag: int = ...) -> tuple[bool, UMat]: ... + + @_typing.overload + def read(self, image: cv2.typing.MatLike | None = ...) -> tuple[bool, cv2.typing.MatLike]: ... + @_typing.overload + def read(self, image: UMat | None = ...) -> tuple[bool, UMat]: ... + + def set(self, propId: int, value: float) -> bool: ... + + def get(self, propId: int) -> float: ... + + def getBackendName(self) -> str: ... + + def setExceptionMode(self, enable: bool) -> None: ... + + def getExceptionMode(self) -> bool: ... + + @staticmethod + def waitAny(streams: _typing.Sequence[VideoCapture], timeoutNs: int = ...) -> tuple[bool, _typing.Sequence[int]]: ... + + +class VideoWriter: + # Functions + @_typing.overload + def __init__(self) -> None: ... + @_typing.overload + def __init__(self, filename: str, fourcc: int, fps: float, frameSize: cv2.typing.Size, isColor: bool = ...) -> None: ... + @_typing.overload + def __init__(self, filename: str, apiPreference: int, fourcc: int, fps: float, frameSize: cv2.typing.Size, isColor: bool = ...) -> None: ... + @_typing.overload + def __init__(self, filename: str, fourcc: int, fps: float, frameSize: cv2.typing.Size, params: _typing.Sequence[int]) -> None: ... + @_typing.overload + def __init__(self, filename: str, apiPreference: int, fourcc: int, fps: float, frameSize: cv2.typing.Size, params: _typing.Sequence[int]) -> None: ... + + @_typing.overload + def open(self, filename: str, fourcc: int, fps: float, frameSize: cv2.typing.Size, isColor: bool = ...) -> bool: ... + @_typing.overload + def open(self, filename: str, apiPreference: int, fourcc: int, fps: float, frameSize: cv2.typing.Size, isColor: bool = ...) -> bool: ... + @_typing.overload + def open(self, filename: str, fourcc: int, fps: float, frameSize: cv2.typing.Size, params: _typing.Sequence[int]) -> bool: ... + @_typing.overload + def open(self, filename: str, apiPreference: int, fourcc: int, fps: float, frameSize: cv2.typing.Size, params: _typing.Sequence[int]) -> bool: ... + + def isOpened(self) -> bool: ... + + def release(self) -> None: ... + + @_typing.overload + def write(self, image: cv2.typing.MatLike) -> None: ... + @_typing.overload + def write(self, image: UMat) -> None: ... + + def set(self, propId: int, value: float) -> bool: ... + + def get(self, propId: int) -> float: ... + + @staticmethod + def fourcc(c1: str, c2: str, c3: str, c4: str) -> int: ... + + def getBackendName(self) -> str: ... + + +class UsacParams: + confidence: float + isParallel: bool + loIterations: int + loMethod: LocalOptimMethod + loSampleSize: int + maxIterations: int + neighborsSearch: NeighborSearchMethod + randomGeneratorState: int + sampler: SamplingMethod + score: ScoreMethod + threshold: float + final_polisher: PolishingMethod + final_polisher_iterations: int + + # Functions + def __init__(self) -> None: ... + + +class CirclesGridFinderParameters: + densityNeighborhoodSize: cv2.typing.Size2f + minDensity: float + kmeansAttempts: int + minDistanceToAddKeypoint: int + keypointScale: int + minGraphConfidence: float + vertexGain: float + vertexPenalty: float + existingVertexGain: float + edgeGain: float + edgePenalty: float + convexHullFactor: float + minRNGEdgeSwitchDist: float + squareSize: float + maxRectifiedDistance: float + + # Functions + def __init__(self) -> None: ... + + +class StereoMatcher(Algorithm): + # Functions + @_typing.overload + def compute(self, left: cv2.typing.MatLike, right: cv2.typing.MatLike, disparity: cv2.typing.MatLike | None = ...) -> cv2.typing.MatLike: ... + @_typing.overload + def compute(self, left: UMat, right: UMat, disparity: UMat | None = ...) -> UMat: ... + + def getMinDisparity(self) -> int: ... + + def setMinDisparity(self, minDisparity: int) -> None: ... + + def getNumDisparities(self) -> int: ... + + def setNumDisparities(self, numDisparities: int) -> None: ... + + def getBlockSize(self) -> int: ... + + def setBlockSize(self, blockSize: int) -> None: ... + + def getSpeckleWindowSize(self) -> int: ... + + def setSpeckleWindowSize(self, speckleWindowSize: int) -> None: ... + + def getSpeckleRange(self) -> int: ... + + def setSpeckleRange(self, speckleRange: int) -> None: ... + + def getDisp12MaxDiff(self) -> int: ... + + def setDisp12MaxDiff(self, disp12MaxDiff: int) -> None: ... + + +class StereoBM(StereoMatcher): + # Functions + def getPreFilterType(self) -> int: ... + + def setPreFilterType(self, preFilterType: int) -> None: ... + + def getPreFilterSize(self) -> int: ... + + def setPreFilterSize(self, preFilterSize: int) -> None: ... + + def getPreFilterCap(self) -> int: ... + + def setPreFilterCap(self, preFilterCap: int) -> None: ... + + def getTextureThreshold(self) -> int: ... + + def setTextureThreshold(self, textureThreshold: int) -> None: ... + + def getUniquenessRatio(self) -> int: ... + + def setUniquenessRatio(self, uniquenessRatio: int) -> None: ... + + def getSmallerBlockSize(self) -> int: ... + + def setSmallerBlockSize(self, blockSize: int) -> None: ... + + def getROI1(self) -> cv2.typing.Rect: ... + + def setROI1(self, roi1: cv2.typing.Rect) -> None: ... + + def getROI2(self) -> cv2.typing.Rect: ... + + def setROI2(self, roi2: cv2.typing.Rect) -> None: ... + + @classmethod + def create(cls, numDisparities: int = ..., blockSize: int = ...) -> StereoBM: ... + + +class StereoSGBM(StereoMatcher): + # Functions + def getPreFilterCap(self) -> int: ... + + def setPreFilterCap(self, preFilterCap: int) -> None: ... + + def getUniquenessRatio(self) -> int: ... + + def setUniquenessRatio(self, uniquenessRatio: int) -> None: ... + + def getP1(self) -> int: ... + + def setP1(self, P1: int) -> None: ... + + def getP2(self) -> int: ... + + def setP2(self, P2: int) -> None: ... + + def getMode(self) -> int: ... + + def setMode(self, mode: int) -> None: ... + + @classmethod + def create(cls, minDisparity: int = ..., numDisparities: int = ..., blockSize: int = ..., P1: int = ..., P2: int = ..., disp12MaxDiff: int = ..., preFilterCap: int = ..., uniquenessRatio: int = ..., speckleWindowSize: int = ..., speckleRange: int = ..., mode: int = ...) -> StereoSGBM: ... + + +class BaseCascadeClassifier(Algorithm): + ... + +class CascadeClassifier: + # Functions + @_typing.overload + def __init__(self) -> None: ... + @_typing.overload + def __init__(self, filename: str) -> None: ... + + def empty(self) -> bool: ... + + def load(self, filename: str) -> bool: ... + + def read(self, node: FileNode) -> bool: ... + + @_typing.overload + def detectMultiScale(self, image: cv2.typing.MatLike, scaleFactor: float = ..., minNeighbors: int = ..., flags: int = ..., minSize: cv2.typing.Size = ..., maxSize: cv2.typing.Size = ...) -> _typing.Sequence[cv2.typing.Rect]: ... + @_typing.overload + def detectMultiScale(self, image: UMat, scaleFactor: float = ..., minNeighbors: int = ..., flags: int = ..., minSize: cv2.typing.Size = ..., maxSize: cv2.typing.Size = ...) -> _typing.Sequence[cv2.typing.Rect]: ... + + @_typing.overload + def detectMultiScale2(self, image: cv2.typing.MatLike, scaleFactor: float = ..., minNeighbors: int = ..., flags: int = ..., minSize: cv2.typing.Size = ..., maxSize: cv2.typing.Size = ...) -> tuple[_typing.Sequence[cv2.typing.Rect], _typing.Sequence[int]]: ... + @_typing.overload + def detectMultiScale2(self, image: UMat, scaleFactor: float = ..., minNeighbors: int = ..., flags: int = ..., minSize: cv2.typing.Size = ..., maxSize: cv2.typing.Size = ...) -> tuple[_typing.Sequence[cv2.typing.Rect], _typing.Sequence[int]]: ... + + @_typing.overload + def detectMultiScale3(self, image: cv2.typing.MatLike, scaleFactor: float = ..., minNeighbors: int = ..., flags: int = ..., minSize: cv2.typing.Size = ..., maxSize: cv2.typing.Size = ..., outputRejectLevels: bool = ...) -> tuple[_typing.Sequence[cv2.typing.Rect], _typing.Sequence[int], _typing.Sequence[float]]: ... + @_typing.overload + def detectMultiScale3(self, image: UMat, scaleFactor: float = ..., minNeighbors: int = ..., flags: int = ..., minSize: cv2.typing.Size = ..., maxSize: cv2.typing.Size = ..., outputRejectLevels: bool = ...) -> tuple[_typing.Sequence[cv2.typing.Rect], _typing.Sequence[int], _typing.Sequence[float]]: ... + + def isOldFormatCascade(self) -> bool: ... + + def getOriginalWindowSize(self) -> cv2.typing.Size: ... + + def getFeatureType(self) -> int: ... + + @staticmethod + def convert(oldcascade: str, newcascade: str) -> bool: ... + + +class HOGDescriptor: + @property + def winSize(self) -> cv2.typing.Size: ... + @property + def blockSize(self) -> cv2.typing.Size: ... + @property + def blockStride(self) -> cv2.typing.Size: ... + @property + def cellSize(self) -> cv2.typing.Size: ... + @property + def nbins(self) -> int: ... + @property + def derivAperture(self) -> int: ... + @property + def winSigma(self) -> float: ... + @property + def histogramNormType(self) -> HOGDescriptor_HistogramNormType: ... + @property + def L2HysThreshold(self) -> float: ... + @property + def gammaCorrection(self) -> bool: ... + @property + def svmDetector(self) -> _typing.Sequence[float]: ... + @property + def nlevels(self) -> int: ... + @property + def signedGradient(self) -> bool: ... + + # Functions + @_typing.overload + def __init__(self) -> None: ... + @_typing.overload + def __init__(self, _winSize: cv2.typing.Size, _blockSize: cv2.typing.Size, _blockStride: cv2.typing.Size, _cellSize: cv2.typing.Size, _nbins: int, _derivAperture: int = ..., _winSigma: float = ..., _histogramNormType: HOGDescriptor_HistogramNormType = ..., _L2HysThreshold: float = ..., _gammaCorrection: bool = ..., _nlevels: int = ..., _signedGradient: bool = ...) -> None: ... + @_typing.overload + def __init__(self, filename: str) -> None: ... + + def getDescriptorSize(self) -> int: ... + + def checkDetectorSize(self) -> bool: ... + + def getWinSigma(self) -> float: ... + + @_typing.overload + def setSVMDetector(self, svmdetector: cv2.typing.MatLike) -> None: ... + @_typing.overload + def setSVMDetector(self, svmdetector: UMat) -> None: ... + + def load(self, filename: str, objname: str = ...) -> bool: ... + + def save(self, filename: str, objname: str = ...) -> None: ... + + @_typing.overload + def compute(self, img: cv2.typing.MatLike, winStride: cv2.typing.Size = ..., padding: cv2.typing.Size = ..., locations: _typing.Sequence[cv2.typing.Point] = ...) -> _typing.Sequence[float]: ... + @_typing.overload + def compute(self, img: UMat, winStride: cv2.typing.Size = ..., padding: cv2.typing.Size = ..., locations: _typing.Sequence[cv2.typing.Point] = ...) -> _typing.Sequence[float]: ... + + @_typing.overload + def detect(self, img: cv2.typing.MatLike, hitThreshold: float = ..., winStride: cv2.typing.Size = ..., padding: cv2.typing.Size = ..., searchLocations: _typing.Sequence[cv2.typing.Point] = ...) -> tuple[_typing.Sequence[cv2.typing.Point], _typing.Sequence[float]]: ... + @_typing.overload + def detect(self, img: UMat, hitThreshold: float = ..., winStride: cv2.typing.Size = ..., padding: cv2.typing.Size = ..., searchLocations: _typing.Sequence[cv2.typing.Point] = ...) -> tuple[_typing.Sequence[cv2.typing.Point], _typing.Sequence[float]]: ... + + @_typing.overload + def detectMultiScale(self, img: cv2.typing.MatLike, hitThreshold: float = ..., winStride: cv2.typing.Size = ..., padding: cv2.typing.Size = ..., scale: float = ..., groupThreshold: float = ..., useMeanshiftGrouping: bool = ...) -> tuple[_typing.Sequence[cv2.typing.Rect], _typing.Sequence[float]]: ... + @_typing.overload + def detectMultiScale(self, img: UMat, hitThreshold: float = ..., winStride: cv2.typing.Size = ..., padding: cv2.typing.Size = ..., scale: float = ..., groupThreshold: float = ..., useMeanshiftGrouping: bool = ...) -> tuple[_typing.Sequence[cv2.typing.Rect], _typing.Sequence[float]]: ... + + @_typing.overload + def computeGradient(self, img: cv2.typing.MatLike, grad: cv2.typing.MatLike, angleOfs: cv2.typing.MatLike, paddingTL: cv2.typing.Size = ..., paddingBR: cv2.typing.Size = ...) -> tuple[cv2.typing.MatLike, cv2.typing.MatLike]: ... + @_typing.overload + def computeGradient(self, img: UMat, grad: UMat, angleOfs: UMat, paddingTL: cv2.typing.Size = ..., paddingBR: cv2.typing.Size = ...) -> tuple[UMat, UMat]: ... + + @staticmethod + def getDefaultPeopleDetector() -> _typing.Sequence[float]: ... + + @staticmethod + def getDaimlerPeopleDetector() -> _typing.Sequence[float]: ... + + +class QRCodeEncoder: + # Classes + class Params: + version: int + correction_level: QRCodeEncoder_CorrectionLevel + mode: QRCodeEncoder_EncodeMode + structure_number: int + + # Functions + def __init__(self) -> None: ... + + + + # Functions + @classmethod + def create(cls, parameters: QRCodeEncoder.Params = ...) -> QRCodeEncoder: ... + + @_typing.overload + def encode(self, encoded_info: str, qrcode: cv2.typing.MatLike | None = ...) -> cv2.typing.MatLike: ... + @_typing.overload + def encode(self, encoded_info: str, qrcode: UMat | None = ...) -> UMat: ... + + @_typing.overload + def encodeStructuredAppend(self, encoded_info: str, qrcodes: _typing.Sequence[cv2.typing.MatLike] | None = ...) -> _typing.Sequence[cv2.typing.MatLike]: ... + @_typing.overload + def encodeStructuredAppend(self, encoded_info: str, qrcodes: _typing.Sequence[UMat] | None = ...) -> _typing.Sequence[UMat]: ... + + +class QRCodeDetector(GraphicalCodeDetector): + # Functions + def __init__(self) -> None: ... + + def setEpsX(self, epsX: float) -> QRCodeDetector: ... + + def setEpsY(self, epsY: float) -> QRCodeDetector: ... + + def setUseAlignmentMarkers(self, useAlignmentMarkers: bool) -> QRCodeDetector: ... + + @_typing.overload + def decodeCurved(self, img: cv2.typing.MatLike, points: cv2.typing.MatLike, straight_qrcode: cv2.typing.MatLike | None = ...) -> tuple[str, cv2.typing.MatLike]: ... + @_typing.overload + def decodeCurved(self, img: UMat, points: UMat, straight_qrcode: UMat | None = ...) -> tuple[str, UMat]: ... + + @_typing.overload + def detectAndDecodeCurved(self, img: cv2.typing.MatLike, points: cv2.typing.MatLike | None = ..., straight_qrcode: cv2.typing.MatLike | None = ...) -> tuple[str, cv2.typing.MatLike, cv2.typing.MatLike]: ... + @_typing.overload + def detectAndDecodeCurved(self, img: UMat, points: UMat | None = ..., straight_qrcode: UMat | None = ...) -> tuple[str, UMat, UMat]: ... + + +class GraphicalCodeDetector: + # Functions + @_typing.overload + def detect(self, img: cv2.typing.MatLike, points: cv2.typing.MatLike | None = ...) -> tuple[bool, cv2.typing.MatLike]: ... + @_typing.overload + def detect(self, img: UMat, points: UMat | None = ...) -> tuple[bool, UMat]: ... + + @_typing.overload + def decode(self, img: cv2.typing.MatLike, points: cv2.typing.MatLike, straight_code: cv2.typing.MatLike | None = ...) -> tuple[str, cv2.typing.MatLike]: ... + @_typing.overload + def decode(self, img: UMat, points: UMat, straight_code: UMat | None = ...) -> tuple[str, UMat]: ... + + @_typing.overload + def detectAndDecode(self, img: cv2.typing.MatLike, points: cv2.typing.MatLike | None = ..., straight_code: cv2.typing.MatLike | None = ...) -> tuple[str, cv2.typing.MatLike, cv2.typing.MatLike]: ... + @_typing.overload + def detectAndDecode(self, img: UMat, points: UMat | None = ..., straight_code: UMat | None = ...) -> tuple[str, UMat, UMat]: ... + + @_typing.overload + def detectMulti(self, img: cv2.typing.MatLike, points: cv2.typing.MatLike | None = ...) -> tuple[bool, cv2.typing.MatLike]: ... + @_typing.overload + def detectMulti(self, img: UMat, points: UMat | None = ...) -> tuple[bool, UMat]: ... + + @_typing.overload + def decodeMulti(self, img: cv2.typing.MatLike, points: cv2.typing.MatLike, straight_code: _typing.Sequence[cv2.typing.MatLike] | None = ...) -> tuple[bool, _typing.Sequence[str], _typing.Sequence[cv2.typing.MatLike]]: ... + @_typing.overload + def decodeMulti(self, img: UMat, points: UMat, straight_code: _typing.Sequence[UMat] | None = ...) -> tuple[bool, _typing.Sequence[str], _typing.Sequence[UMat]]: ... + + @_typing.overload + def detectAndDecodeMulti(self, img: cv2.typing.MatLike, points: cv2.typing.MatLike | None = ..., straight_code: _typing.Sequence[cv2.typing.MatLike] | None = ...) -> tuple[bool, _typing.Sequence[str], cv2.typing.MatLike, _typing.Sequence[cv2.typing.MatLike]]: ... + @_typing.overload + def detectAndDecodeMulti(self, img: UMat, points: UMat | None = ..., straight_code: _typing.Sequence[UMat] | None = ...) -> tuple[bool, _typing.Sequence[str], UMat, _typing.Sequence[UMat]]: ... + + +class QRCodeDetectorAruco(GraphicalCodeDetector): + # Classes + class Params: + minModuleSizeInPyramid: float + maxRotation: float + maxModuleSizeMismatch: float + maxTimingPatternMismatch: float + maxPenalties: float + maxColorsMismatch: float + scaleTimingPatternScore: float + + # Functions + def __init__(self) -> None: ... + + + + # Functions + @_typing.overload + def __init__(self) -> None: ... + @_typing.overload + def __init__(self, params: QRCodeDetectorAruco.Params) -> None: ... + + def getDetectorParameters(self) -> QRCodeDetectorAruco.Params: ... + + def setDetectorParameters(self, params: QRCodeDetectorAruco.Params) -> QRCodeDetectorAruco: ... + + def getArucoParameters(self) -> cv2.aruco.DetectorParameters: ... + + def setArucoParameters(self, params: cv2.aruco.DetectorParameters) -> None: ... + + +class FaceDetectorYN: + # Functions + def setInputSize(self, input_size: cv2.typing.Size) -> None: ... + + def getInputSize(self) -> cv2.typing.Size: ... + + def setScoreThreshold(self, score_threshold: float) -> None: ... + + def getScoreThreshold(self) -> float: ... + + def setNMSThreshold(self, nms_threshold: float) -> None: ... + + def getNMSThreshold(self) -> float: ... + + def setTopK(self, top_k: int) -> None: ... + + def getTopK(self) -> int: ... + + @_typing.overload + def detect(self, image: cv2.typing.MatLike, faces: cv2.typing.MatLike | None = ...) -> tuple[int, cv2.typing.MatLike]: ... + @_typing.overload + def detect(self, image: UMat, faces: UMat | None = ...) -> tuple[int, UMat]: ... + + @classmethod + @_typing.overload + def create(cls, model: str, config: str, input_size: cv2.typing.Size, score_threshold: float = ..., nms_threshold: float = ..., top_k: int = ..., backend_id: int = ..., target_id: int = ...) -> FaceDetectorYN: ... + @classmethod + @_typing.overload + def create(cls, framework: str, bufferModel: numpy.ndarray[_typing.Any, numpy.dtype[numpy.uint8]], bufferConfig: numpy.ndarray[_typing.Any, numpy.dtype[numpy.uint8]], input_size: cv2.typing.Size, score_threshold: float = ..., nms_threshold: float = ..., top_k: int = ..., backend_id: int = ..., target_id: int = ...) -> FaceDetectorYN: ... + + +class FaceRecognizerSF: + # Functions + @_typing.overload + def alignCrop(self, src_img: cv2.typing.MatLike, face_box: cv2.typing.MatLike, aligned_img: cv2.typing.MatLike | None = ...) -> cv2.typing.MatLike: ... + @_typing.overload + def alignCrop(self, src_img: UMat, face_box: UMat, aligned_img: UMat | None = ...) -> UMat: ... + + @_typing.overload + def feature(self, aligned_img: cv2.typing.MatLike, face_feature: cv2.typing.MatLike | None = ...) -> cv2.typing.MatLike: ... + @_typing.overload + def feature(self, aligned_img: UMat, face_feature: UMat | None = ...) -> UMat: ... + + @_typing.overload + def match(self, face_feature1: cv2.typing.MatLike, face_feature2: cv2.typing.MatLike, dis_type: int = ...) -> float: ... + @_typing.overload + def match(self, face_feature1: UMat, face_feature2: UMat, dis_type: int = ...) -> float: ... + + @classmethod + def create(cls, model: str, config: str, backend_id: int = ..., target_id: int = ...) -> FaceRecognizerSF: ... + + +class Stitcher: + # Functions + @classmethod + def create(cls, mode: Stitcher_Mode = ...) -> Stitcher: ... + + def registrationResol(self) -> float: ... + + def setRegistrationResol(self, resol_mpx: float) -> None: ... + + def seamEstimationResol(self) -> float: ... + + def setSeamEstimationResol(self, resol_mpx: float) -> None: ... + + def compositingResol(self) -> float: ... + + def setCompositingResol(self, resol_mpx: float) -> None: ... + + def panoConfidenceThresh(self) -> float: ... + + def setPanoConfidenceThresh(self, conf_thresh: float) -> None: ... + + def waveCorrection(self) -> bool: ... + + def setWaveCorrection(self, flag: bool) -> None: ... + + def interpolationFlags(self) -> InterpolationFlags: ... + + def setInterpolationFlags(self, interp_flags: InterpolationFlags) -> None: ... + + @_typing.overload + def estimateTransform(self, images: _typing.Sequence[cv2.typing.MatLike], masks: _typing.Sequence[cv2.typing.MatLike] | None = ...) -> Stitcher_Status: ... + @_typing.overload + def estimateTransform(self, images: _typing.Sequence[UMat], masks: _typing.Sequence[UMat] | None = ...) -> Stitcher_Status: ... + + @_typing.overload + def composePanorama(self, pano: cv2.typing.MatLike | None = ...) -> tuple[Stitcher_Status, cv2.typing.MatLike]: ... + @_typing.overload + def composePanorama(self, pano: UMat | None = ...) -> tuple[Stitcher_Status, UMat]: ... + @_typing.overload + def composePanorama(self, images: _typing.Sequence[cv2.typing.MatLike], pano: cv2.typing.MatLike | None = ...) -> tuple[Stitcher_Status, cv2.typing.MatLike]: ... + @_typing.overload + def composePanorama(self, images: _typing.Sequence[UMat], pano: UMat | None = ...) -> tuple[Stitcher_Status, UMat]: ... + + @_typing.overload + def stitch(self, images: _typing.Sequence[cv2.typing.MatLike], pano: cv2.typing.MatLike | None = ...) -> tuple[Stitcher_Status, cv2.typing.MatLike]: ... + @_typing.overload + def stitch(self, images: _typing.Sequence[UMat], pano: UMat | None = ...) -> tuple[Stitcher_Status, UMat]: ... + @_typing.overload + def stitch(self, images: _typing.Sequence[cv2.typing.MatLike], masks: _typing.Sequence[cv2.typing.MatLike], pano: cv2.typing.MatLike | None = ...) -> tuple[Stitcher_Status, cv2.typing.MatLike]: ... + @_typing.overload + def stitch(self, images: _typing.Sequence[UMat], masks: _typing.Sequence[UMat], pano: UMat | None = ...) -> tuple[Stitcher_Status, UMat]: ... + + def workScale(self) -> float: ... + + +class PyRotationWarper: + # Functions + @_typing.overload + def __init__(self, type: str, scale: float) -> None: ... + @_typing.overload + def __init__(self) -> None: ... + + @_typing.overload + def warpPoint(self, pt: cv2.typing.Point2f, K: cv2.typing.MatLike, R: cv2.typing.MatLike) -> cv2.typing.Point2f: ... + @_typing.overload + def warpPoint(self, pt: cv2.typing.Point2f, K: UMat, R: UMat) -> cv2.typing.Point2f: ... + + @_typing.overload + def warpPointBackward(self, pt: cv2.typing.Point2f, K: cv2.typing.MatLike, R: cv2.typing.MatLike) -> cv2.typing.Point2f: ... + @_typing.overload + def warpPointBackward(self, pt: cv2.typing.Point2f, K: UMat, R: UMat) -> cv2.typing.Point2f: ... + @_typing.overload + def warpPointBackward(self, pt: cv2.typing.Point2f, K: cv2.typing.MatLike, R: cv2.typing.MatLike) -> cv2.typing.Point2f: ... + @_typing.overload + def warpPointBackward(self, pt: cv2.typing.Point2f, K: UMat, R: UMat) -> cv2.typing.Point2f: ... + + @_typing.overload + def buildMaps(self, src_size: cv2.typing.Size, K: cv2.typing.MatLike, R: cv2.typing.MatLike, xmap: cv2.typing.MatLike | None = ..., ymap: cv2.typing.MatLike | None = ...) -> tuple[cv2.typing.Rect, cv2.typing.MatLike, cv2.typing.MatLike]: ... + @_typing.overload + def buildMaps(self, src_size: cv2.typing.Size, K: UMat, R: UMat, xmap: UMat | None = ..., ymap: UMat | None = ...) -> tuple[cv2.typing.Rect, UMat, UMat]: ... + + @_typing.overload + def warp(self, src: cv2.typing.MatLike, K: cv2.typing.MatLike, R: cv2.typing.MatLike, interp_mode: int, border_mode: int, dst: cv2.typing.MatLike | None = ...) -> tuple[cv2.typing.Point, cv2.typing.MatLike]: ... + @_typing.overload + def warp(self, src: UMat, K: UMat, R: UMat, interp_mode: int, border_mode: int, dst: UMat | None = ...) -> tuple[cv2.typing.Point, UMat]: ... + + @_typing.overload + def warpBackward(self, src: cv2.typing.MatLike, K: cv2.typing.MatLike, R: cv2.typing.MatLike, interp_mode: int, border_mode: int, dst_size: cv2.typing.Size, dst: cv2.typing.MatLike | None = ...) -> cv2.typing.MatLike: ... + @_typing.overload + def warpBackward(self, src: UMat, K: UMat, R: UMat, interp_mode: int, border_mode: int, dst_size: cv2.typing.Size, dst: UMat | None = ...) -> UMat: ... + + @_typing.overload + def warpRoi(self, src_size: cv2.typing.Size, K: cv2.typing.MatLike, R: cv2.typing.MatLike) -> cv2.typing.Rect: ... + @_typing.overload + def warpRoi(self, src_size: cv2.typing.Size, K: UMat, R: UMat) -> cv2.typing.Rect: ... + + def getScale(self) -> float: ... + + def setScale(self, arg1: float) -> None: ... + + +class WarperCreator: + ... + +class BackgroundSubtractor(Algorithm): + # Functions + @_typing.overload + def apply(self, image: cv2.typing.MatLike, fgmask: cv2.typing.MatLike | None = ..., learningRate: float = ...) -> cv2.typing.MatLike: ... + @_typing.overload + def apply(self, image: UMat, fgmask: UMat | None = ..., learningRate: float = ...) -> UMat: ... + + @_typing.overload + def getBackgroundImage(self, backgroundImage: cv2.typing.MatLike | None = ...) -> cv2.typing.MatLike: ... + @_typing.overload + def getBackgroundImage(self, backgroundImage: UMat | None = ...) -> UMat: ... + + +class BackgroundSubtractorMOG2(BackgroundSubtractor): + # Functions + def getHistory(self) -> int: ... + + def setHistory(self, history: int) -> None: ... + + def getNMixtures(self) -> int: ... + + def setNMixtures(self, nmixtures: int) -> None: ... + + def getBackgroundRatio(self) -> float: ... + + def setBackgroundRatio(self, ratio: float) -> None: ... + + def getVarThreshold(self) -> float: ... + + def setVarThreshold(self, varThreshold: float) -> None: ... + + def getVarThresholdGen(self) -> float: ... + + def setVarThresholdGen(self, varThresholdGen: float) -> None: ... + + def getVarInit(self) -> float: ... + + def setVarInit(self, varInit: float) -> None: ... + + def getVarMin(self) -> float: ... + + def setVarMin(self, varMin: float) -> None: ... + + def getVarMax(self) -> float: ... + + def setVarMax(self, varMax: float) -> None: ... + + def getComplexityReductionThreshold(self) -> float: ... + + def setComplexityReductionThreshold(self, ct: float) -> None: ... + + def getDetectShadows(self) -> bool: ... + + def setDetectShadows(self, detectShadows: bool) -> None: ... + + def getShadowValue(self) -> int: ... + + def setShadowValue(self, value: int) -> None: ... + + def getShadowThreshold(self) -> float: ... + + def setShadowThreshold(self, threshold: float) -> None: ... + + @_typing.overload + def apply(self, image: cv2.typing.MatLike, fgmask: cv2.typing.MatLike | None = ..., learningRate: float = ...) -> cv2.typing.MatLike: ... + @_typing.overload + def apply(self, image: UMat, fgmask: UMat | None = ..., learningRate: float = ...) -> UMat: ... + + +class BackgroundSubtractorKNN(BackgroundSubtractor): + # Functions + def getHistory(self) -> int: ... + + def setHistory(self, history: int) -> None: ... + + def getNSamples(self) -> int: ... + + def setNSamples(self, _nN: int) -> None: ... + + def getDist2Threshold(self) -> float: ... + + def setDist2Threshold(self, _dist2Threshold: float) -> None: ... + + def getkNNSamples(self) -> int: ... + + def setkNNSamples(self, _nkNN: int) -> None: ... + + def getDetectShadows(self) -> bool: ... + + def setDetectShadows(self, detectShadows: bool) -> None: ... + + def getShadowValue(self) -> int: ... + + def setShadowValue(self, value: int) -> None: ... + + def getShadowThreshold(self) -> float: ... + + def setShadowThreshold(self, threshold: float) -> None: ... + + +class KalmanFilter: + statePre: cv2.typing.MatLike + statePost: cv2.typing.MatLike + transitionMatrix: cv2.typing.MatLike + controlMatrix: cv2.typing.MatLike + measurementMatrix: cv2.typing.MatLike + processNoiseCov: cv2.typing.MatLike + measurementNoiseCov: cv2.typing.MatLike + errorCovPre: cv2.typing.MatLike + gain: cv2.typing.MatLike + errorCovPost: cv2.typing.MatLike + + # Functions + @_typing.overload + def __init__(self) -> None: ... + @_typing.overload + def __init__(self, dynamParams: int, measureParams: int, controlParams: int = ..., type: int = ...) -> None: ... + + def predict(self, control: cv2.typing.MatLike | None = ...) -> cv2.typing.MatLike: ... + + def correct(self, measurement: cv2.typing.MatLike) -> cv2.typing.MatLike: ... + + +class DenseOpticalFlow(Algorithm): + # Functions + @_typing.overload + def calc(self, I0: cv2.typing.MatLike, I1: cv2.typing.MatLike, flow: cv2.typing.MatLike) -> cv2.typing.MatLike: ... + @_typing.overload + def calc(self, I0: UMat, I1: UMat, flow: UMat) -> UMat: ... + + def collectGarbage(self) -> None: ... + + +class SparseOpticalFlow(Algorithm): + # Functions + @_typing.overload + def calc(self, prevImg: cv2.typing.MatLike, nextImg: cv2.typing.MatLike, prevPts: cv2.typing.MatLike, nextPts: cv2.typing.MatLike, status: cv2.typing.MatLike | None = ..., err: cv2.typing.MatLike | None = ...) -> tuple[cv2.typing.MatLike, cv2.typing.MatLike, cv2.typing.MatLike]: ... + @_typing.overload + def calc(self, prevImg: UMat, nextImg: UMat, prevPts: UMat, nextPts: UMat, status: UMat | None = ..., err: UMat | None = ...) -> tuple[UMat, UMat, UMat]: ... + + +class FarnebackOpticalFlow(DenseOpticalFlow): + # Functions + def getNumLevels(self) -> int: ... + + def setNumLevels(self, numLevels: int) -> None: ... + + def getPyrScale(self) -> float: ... + + def setPyrScale(self, pyrScale: float) -> None: ... + + def getFastPyramids(self) -> bool: ... + + def setFastPyramids(self, fastPyramids: bool) -> None: ... + + def getWinSize(self) -> int: ... + + def setWinSize(self, winSize: int) -> None: ... + + def getNumIters(self) -> int: ... + + def setNumIters(self, numIters: int) -> None: ... + + def getPolyN(self) -> int: ... + + def setPolyN(self, polyN: int) -> None: ... + + def getPolySigma(self) -> float: ... + + def setPolySigma(self, polySigma: float) -> None: ... + + def getFlags(self) -> int: ... + + def setFlags(self, flags: int) -> None: ... + + @classmethod + def create(cls, numLevels: int = ..., pyrScale: float = ..., fastPyramids: bool = ..., winSize: int = ..., numIters: int = ..., polyN: int = ..., polySigma: float = ..., flags: int = ...) -> FarnebackOpticalFlow: ... + + +class VariationalRefinement(DenseOpticalFlow): + # Functions + @_typing.overload + def calcUV(self, I0: cv2.typing.MatLike, I1: cv2.typing.MatLike, flow_u: cv2.typing.MatLike, flow_v: cv2.typing.MatLike) -> tuple[cv2.typing.MatLike, cv2.typing.MatLike]: ... + @_typing.overload + def calcUV(self, I0: UMat, I1: UMat, flow_u: UMat, flow_v: UMat) -> tuple[UMat, UMat]: ... + + def getFixedPointIterations(self) -> int: ... + + def setFixedPointIterations(self, val: int) -> None: ... + + def getSorIterations(self) -> int: ... + + def setSorIterations(self, val: int) -> None: ... + + def getOmega(self) -> float: ... + + def setOmega(self, val: float) -> None: ... + + def getAlpha(self) -> float: ... + + def setAlpha(self, val: float) -> None: ... + + def getDelta(self) -> float: ... + + def setDelta(self, val: float) -> None: ... + + def getGamma(self) -> float: ... + + def setGamma(self, val: float) -> None: ... + + def getEpsilon(self) -> float: ... + + def setEpsilon(self, val: float) -> None: ... + + @classmethod + def create(cls) -> VariationalRefinement: ... + + +class DISOpticalFlow(DenseOpticalFlow): + # Functions + def getFinestScale(self) -> int: ... + + def setFinestScale(self, val: int) -> None: ... + + def getPatchSize(self) -> int: ... + + def setPatchSize(self, val: int) -> None: ... + + def getPatchStride(self) -> int: ... + + def setPatchStride(self, val: int) -> None: ... + + def getGradientDescentIterations(self) -> int: ... + + def setGradientDescentIterations(self, val: int) -> None: ... + + def getVariationalRefinementIterations(self) -> int: ... + + def setVariationalRefinementIterations(self, val: int) -> None: ... + + def getVariationalRefinementAlpha(self) -> float: ... + + def setVariationalRefinementAlpha(self, val: float) -> None: ... + + def getVariationalRefinementDelta(self) -> float: ... + + def setVariationalRefinementDelta(self, val: float) -> None: ... + + def getVariationalRefinementGamma(self) -> float: ... + + def setVariationalRefinementGamma(self, val: float) -> None: ... + + def getVariationalRefinementEpsilon(self) -> float: ... + + def setVariationalRefinementEpsilon(self, val: float) -> None: ... + + def getUseMeanNormalization(self) -> bool: ... + + def setUseMeanNormalization(self, val: bool) -> None: ... + + def getUseSpatialPropagation(self) -> bool: ... + + def setUseSpatialPropagation(self, val: bool) -> None: ... + + @classmethod + def create(cls, preset: int = ...) -> DISOpticalFlow: ... + + +class SparsePyrLKOpticalFlow(SparseOpticalFlow): + # Functions + def getWinSize(self) -> cv2.typing.Size: ... + + def setWinSize(self, winSize: cv2.typing.Size) -> None: ... + + def getMaxLevel(self) -> int: ... + + def setMaxLevel(self, maxLevel: int) -> None: ... + + def getTermCriteria(self) -> cv2.typing.TermCriteria: ... + + def setTermCriteria(self, crit: cv2.typing.TermCriteria) -> None: ... + + def getFlags(self) -> int: ... + + def setFlags(self, flags: int) -> None: ... + + def getMinEigThreshold(self) -> float: ... + + def setMinEigThreshold(self, minEigThreshold: float) -> None: ... + + @classmethod + def create(cls, winSize: cv2.typing.Size = ..., maxLevel: int = ..., crit: cv2.typing.TermCriteria = ..., flags: int = ..., minEigThreshold: float = ...) -> SparsePyrLKOpticalFlow: ... + + +class Tracker: + # Functions + @_typing.overload + def init(self, image: cv2.typing.MatLike, boundingBox: cv2.typing.Rect) -> None: ... + @_typing.overload + def init(self, image: UMat, boundingBox: cv2.typing.Rect) -> None: ... + + @_typing.overload + def update(self, image: cv2.typing.MatLike) -> tuple[bool, cv2.typing.Rect]: ... + @_typing.overload + def update(self, image: UMat) -> tuple[bool, cv2.typing.Rect]: ... + + +class TrackerMIL(Tracker): + # Classes + class Params: + samplerInitInRadius: float + samplerInitMaxNegNum: int + samplerSearchWinSize: float + samplerTrackInRadius: float + samplerTrackMaxPosNum: int + samplerTrackMaxNegNum: int + featureSetNumFeatures: int + + # Functions + def __init__(self) -> None: ... + + + + # Functions + @classmethod + def create(cls, parameters: TrackerMIL.Params = ...) -> TrackerMIL: ... + + +class TrackerGOTURN(Tracker): + # Classes + class Params: + modelTxt: str + modelBin: str + + # Functions + def __init__(self) -> None: ... + + + + # Functions + @classmethod + def create(cls, parameters: TrackerGOTURN.Params = ...) -> TrackerGOTURN: ... + + +class TrackerDaSiamRPN(Tracker): + # Classes + class Params: + model: str + kernel_cls1: str + kernel_r1: str + backend: int + target: int + + # Functions + def __init__(self) -> None: ... + + + + # Functions + @classmethod + def create(cls, parameters: TrackerDaSiamRPN.Params = ...) -> TrackerDaSiamRPN: ... + + def getTrackingScore(self) -> float: ... + + +class TrackerNano(Tracker): + # Classes + class Params: + backbone: str + neckhead: str + backend: int + target: int + + # Functions + def __init__(self) -> None: ... + + + + # Functions + @classmethod + def create(cls, parameters: TrackerNano.Params = ...) -> TrackerNano: ... + + def getTrackingScore(self) -> float: ... + + +class TrackerVit(Tracker): + # Classes + class Params: + net: str + backend: int + target: int + meanvalue: cv2.typing.Scalar + stdvalue: cv2.typing.Scalar + + # Functions + def __init__(self) -> None: ... + + + + # Functions + @classmethod + def create(cls, parameters: TrackerVit.Params = ...) -> TrackerVit: ... + + def getTrackingScore(self) -> float: ... + + +class GArrayDesc: + ... + +class GComputation: + # Functions + @_typing.overload + def __init__(self, ins: cv2.typing.GProtoInputArgs, outs: cv2.typing.GProtoOutputArgs) -> None: ... + @_typing.overload + def __init__(self, in_: GMat, out: GMat) -> None: ... + @_typing.overload + def __init__(self, in_: GMat, out: GScalar) -> None: ... + @_typing.overload + def __init__(self, in1: GMat, in2: GMat, out: GMat) -> None: ... + + def apply(self, callback: cv2.typing.ExtractArgsCallback, args: _typing.Sequence[GCompileArg] = ...) -> _typing.Sequence[cv2.typing.GRunArg]: ... + + @_typing.overload + def compileStreaming(self, in_metas: _typing.Sequence[cv2.typing.GMetaArg], args: _typing.Sequence[GCompileArg] = ...) -> GStreamingCompiled: ... + @_typing.overload + def compileStreaming(self, args: _typing.Sequence[GCompileArg] = ...) -> GStreamingCompiled: ... + @_typing.overload + def compileStreaming(self, callback: cv2.typing.ExtractMetaCallback, args: _typing.Sequence[GCompileArg] = ...) -> GStreamingCompiled: ... + + +class GFrame: + # Functions + def __init__(self) -> None: ... + + +class GKernelPackage: + # Functions + def size(self) -> int: ... + + +class GMat: + # Functions + @_typing.overload + def __init__(self) -> None: ... + @_typing.overload + def __init__(self, m: cv2.typing.MatLike) -> None: ... + + +class GMatDesc: + @property + def depth(self) -> int: ... + @property + def chan(self) -> int: ... + @property + def size(self) -> cv2.typing.Size: ... + @property + def planar(self) -> bool: ... + @property + def dims(self) -> _typing.Sequence[int]: ... + + # Functions + @_typing.overload + def __init__(self, d: int, c: int, s: cv2.typing.Size, p: bool = ...) -> None: ... + @_typing.overload + def __init__(self, d: int, dd: _typing.Sequence[int]) -> None: ... + @_typing.overload + def __init__(self, d: int, dd: _typing.Sequence[int]) -> None: ... + @_typing.overload + def __init__(self) -> None: ... + + @_typing.overload + def withSizeDelta(self, delta: cv2.typing.Size) -> GMatDesc: ... + @_typing.overload + def withSizeDelta(self, dx: int, dy: int) -> GMatDesc: ... + + def withSize(self, sz: cv2.typing.Size) -> GMatDesc: ... + + def withDepth(self, ddepth: int) -> GMatDesc: ... + + def withType(self, ddepth: int, dchan: int) -> GMatDesc: ... + + @_typing.overload + def asPlanar(self) -> GMatDesc: ... + @_typing.overload + def asPlanar(self, planes: int) -> GMatDesc: ... + + def asInterleaved(self) -> GMatDesc: ... + + +class GOpaqueDesc: + ... + +class GScalar: + # Functions + @_typing.overload + def __init__(self) -> None: ... + @_typing.overload + def __init__(self, s: cv2.typing.Scalar) -> None: ... + + +class GScalarDesc: + ... + +class GStreamingCompiled: + # Functions + def __init__(self) -> None: ... + + def setSource(self, callback: cv2.typing.ExtractArgsCallback) -> None: ... + + def start(self) -> None: ... + + def pull(self) -> tuple[bool, _typing.Sequence[cv2.typing.GRunArg] | _typing.Sequence[cv2.typing.GOptRunArg]]: ... + + def stop(self) -> None: ... + + def running(self) -> bool: ... + + +class GOpaqueT: + # Functions + def __init__(self, type: cv2.gapi.ArgType) -> None: ... + + def type(self) -> cv2.gapi.ArgType: ... + + +class GArrayT: + # Functions + def __init__(self, type: cv2.gapi.ArgType) -> None: ... + + def type(self) -> cv2.gapi.ArgType: ... + + +class GCompileArg: + # Functions + @_typing.overload + def __init__(self, arg: GKernelPackage) -> None: ... + @_typing.overload + def __init__(self, arg: cv2.gapi.GNetPackage) -> None: ... + @_typing.overload + def __init__(self, arg: cv2.gapi.streaming.queue_capacity) -> None: ... + @_typing.overload + def __init__(self, arg: cv2.gapi.ot.ObjectTrackerParams) -> None: ... + + +class GInferInputs: + # Functions + def __init__(self) -> None: ... + + @_typing.overload + def setInput(self, name: str, value: GMat) -> GInferInputs: ... + @_typing.overload + def setInput(self, name: str, value: GFrame) -> GInferInputs: ... + + +class GInferListInputs: + # Functions + def __init__(self) -> None: ... + + @_typing.overload + def setInput(self, name: str, value: GArrayT) -> GInferListInputs: ... + @_typing.overload + def setInput(self, name: str, value: GArrayT) -> GInferListInputs: ... + + +class GInferOutputs: + # Functions + def __init__(self) -> None: ... + + def at(self, name: str) -> GMat: ... + + +class GInferListOutputs: + # Functions + def __init__(self) -> None: ... + + def at(self, name: str) -> GArrayT: ... + + +class error(Exception): + code: int + err: str + file: str + func: str + line: int + msg: str + + +# Functions +@_typing.overload +def CamShift(probImage: cv2.typing.MatLike, window: cv2.typing.Rect, criteria: cv2.typing.TermCriteria) -> tuple[cv2.typing.RotatedRect, cv2.typing.Rect]: ... +@_typing.overload +def CamShift(probImage: UMat, window: cv2.typing.Rect, criteria: cv2.typing.TermCriteria) -> tuple[cv2.typing.RotatedRect, cv2.typing.Rect]: ... + +@_typing.overload +def Canny(image: cv2.typing.MatLike, threshold1: float, threshold2: float, edges: cv2.typing.MatLike | None = ..., apertureSize: int = ..., L2gradient: bool = ...) -> cv2.typing.MatLike: ... +@_typing.overload +def Canny(image: UMat, threshold1: float, threshold2: float, edges: UMat | None = ..., apertureSize: int = ..., L2gradient: bool = ...) -> UMat: ... +@_typing.overload +def Canny(dx: cv2.typing.MatLike, dy: cv2.typing.MatLike, threshold1: float, threshold2: float, edges: cv2.typing.MatLike | None = ..., L2gradient: bool = ...) -> cv2.typing.MatLike: ... +@_typing.overload +def Canny(dx: UMat, dy: UMat, threshold1: float, threshold2: float, edges: UMat | None = ..., L2gradient: bool = ...) -> UMat: ... + +@_typing.overload +def EMD(signature1: cv2.typing.MatLike, signature2: cv2.typing.MatLike, distType: int, cost: cv2.typing.MatLike | None = ..., lowerBound: float | None = ..., flow: cv2.typing.MatLike | None = ...) -> tuple[float, float, cv2.typing.MatLike]: ... +@_typing.overload +def EMD(signature1: UMat, signature2: UMat, distType: int, cost: UMat | None = ..., lowerBound: float | None = ..., flow: UMat | None = ...) -> tuple[float, float, UMat]: ... + +@_typing.overload +def GaussianBlur(src: cv2.typing.MatLike, ksize: cv2.typing.Size, sigmaX: float, dst: cv2.typing.MatLike | None = ..., sigmaY: float = ..., borderType: int = ...) -> cv2.typing.MatLike: ... +@_typing.overload +def GaussianBlur(src: UMat, ksize: cv2.typing.Size, sigmaX: float, dst: UMat | None = ..., sigmaY: float = ..., borderType: int = ...) -> UMat: ... + +@_typing.overload +def HoughCircles(image: cv2.typing.MatLike, method: int, dp: float, minDist: float, circles: cv2.typing.MatLike | None = ..., param1: float = ..., param2: float = ..., minRadius: int = ..., maxRadius: int = ...) -> cv2.typing.MatLike: ... +@_typing.overload +def HoughCircles(image: UMat, method: int, dp: float, minDist: float, circles: UMat | None = ..., param1: float = ..., param2: float = ..., minRadius: int = ..., maxRadius: int = ...) -> UMat: ... + +@_typing.overload +def HoughLines(image: cv2.typing.MatLike, rho: float, theta: float, threshold: int, lines: cv2.typing.MatLike | None = ..., srn: float = ..., stn: float = ..., min_theta: float = ..., max_theta: float = ...) -> cv2.typing.MatLike: ... +@_typing.overload +def HoughLines(image: UMat, rho: float, theta: float, threshold: int, lines: UMat | None = ..., srn: float = ..., stn: float = ..., min_theta: float = ..., max_theta: float = ...) -> UMat: ... + +@_typing.overload +def HoughLinesP(image: cv2.typing.MatLike, rho: float, theta: float, threshold: int, lines: cv2.typing.MatLike | None = ..., minLineLength: float = ..., maxLineGap: float = ...) -> cv2.typing.MatLike: ... +@_typing.overload +def HoughLinesP(image: UMat, rho: float, theta: float, threshold: int, lines: UMat | None = ..., minLineLength: float = ..., maxLineGap: float = ...) -> UMat: ... + +@_typing.overload +def HoughLinesPointSet(point: cv2.typing.MatLike, lines_max: int, threshold: int, min_rho: float, max_rho: float, rho_step: float, min_theta: float, max_theta: float, theta_step: float, lines: cv2.typing.MatLike | None = ...) -> cv2.typing.MatLike: ... +@_typing.overload +def HoughLinesPointSet(point: UMat, lines_max: int, threshold: int, min_rho: float, max_rho: float, rho_step: float, min_theta: float, max_theta: float, theta_step: float, lines: UMat | None = ...) -> UMat: ... + +@_typing.overload +def HoughLinesWithAccumulator(image: cv2.typing.MatLike, rho: float, theta: float, threshold: int, lines: cv2.typing.MatLike | None = ..., srn: float = ..., stn: float = ..., min_theta: float = ..., max_theta: float = ...) -> cv2.typing.MatLike: ... +@_typing.overload +def HoughLinesWithAccumulator(image: UMat, rho: float, theta: float, threshold: int, lines: UMat | None = ..., srn: float = ..., stn: float = ..., min_theta: float = ..., max_theta: float = ...) -> UMat: ... + +@_typing.overload +def HuMoments(m: cv2.typing.Moments, hu: cv2.typing.MatLike | None = ...) -> cv2.typing.MatLike: ... +@_typing.overload +def HuMoments(m: cv2.typing.Moments, hu: UMat | None = ...) -> UMat: ... + +@_typing.overload +def LUT(src: cv2.typing.MatLike, lut: cv2.typing.MatLike, dst: cv2.typing.MatLike | None = ...) -> cv2.typing.MatLike: ... +@_typing.overload +def LUT(src: UMat, lut: UMat, dst: UMat | None = ...) -> UMat: ... + +@_typing.overload +def Laplacian(src: cv2.typing.MatLike, ddepth: int, dst: cv2.typing.MatLike | None = ..., ksize: int = ..., scale: float = ..., delta: float = ..., borderType: int = ...) -> cv2.typing.MatLike: ... +@_typing.overload +def Laplacian(src: UMat, ddepth: int, dst: UMat | None = ..., ksize: int = ..., scale: float = ..., delta: float = ..., borderType: int = ...) -> UMat: ... + +@_typing.overload +def Mahalanobis(v1: cv2.typing.MatLike, v2: cv2.typing.MatLike, icovar: cv2.typing.MatLike) -> float: ... +@_typing.overload +def Mahalanobis(v1: UMat, v2: UMat, icovar: UMat) -> float: ... + +@_typing.overload +def PCABackProject(data: cv2.typing.MatLike, mean: cv2.typing.MatLike, eigenvectors: cv2.typing.MatLike, result: cv2.typing.MatLike | None = ...) -> cv2.typing.MatLike: ... +@_typing.overload +def PCABackProject(data: UMat, mean: UMat, eigenvectors: UMat, result: UMat | None = ...) -> UMat: ... + +@_typing.overload +def PCACompute(data: cv2.typing.MatLike, mean: cv2.typing.MatLike, eigenvectors: cv2.typing.MatLike | None = ..., maxComponents: int = ...) -> tuple[cv2.typing.MatLike, cv2.typing.MatLike]: ... +@_typing.overload +def PCACompute(data: UMat, mean: UMat, eigenvectors: UMat | None = ..., maxComponents: int = ...) -> tuple[UMat, UMat]: ... +@_typing.overload +def PCACompute(data: cv2.typing.MatLike, mean: cv2.typing.MatLike, retainedVariance: float, eigenvectors: cv2.typing.MatLike | None = ...) -> tuple[cv2.typing.MatLike, cv2.typing.MatLike]: ... +@_typing.overload +def PCACompute(data: UMat, mean: UMat, retainedVariance: float, eigenvectors: UMat | None = ...) -> tuple[UMat, UMat]: ... + +@_typing.overload +def PCACompute2(data: cv2.typing.MatLike, mean: cv2.typing.MatLike, eigenvectors: cv2.typing.MatLike | None = ..., eigenvalues: cv2.typing.MatLike | None = ..., maxComponents: int = ...) -> tuple[cv2.typing.MatLike, cv2.typing.MatLike, cv2.typing.MatLike]: ... +@_typing.overload +def PCACompute2(data: UMat, mean: UMat, eigenvectors: UMat | None = ..., eigenvalues: UMat | None = ..., maxComponents: int = ...) -> tuple[UMat, UMat, UMat]: ... +@_typing.overload +def PCACompute2(data: cv2.typing.MatLike, mean: cv2.typing.MatLike, retainedVariance: float, eigenvectors: cv2.typing.MatLike | None = ..., eigenvalues: cv2.typing.MatLike | None = ...) -> tuple[cv2.typing.MatLike, cv2.typing.MatLike, cv2.typing.MatLike]: ... +@_typing.overload +def PCACompute2(data: UMat, mean: UMat, retainedVariance: float, eigenvectors: UMat | None = ..., eigenvalues: UMat | None = ...) -> tuple[UMat, UMat, UMat]: ... + +@_typing.overload +def PCAProject(data: cv2.typing.MatLike, mean: cv2.typing.MatLike, eigenvectors: cv2.typing.MatLike, result: cv2.typing.MatLike | None = ...) -> cv2.typing.MatLike: ... +@_typing.overload +def PCAProject(data: UMat, mean: UMat, eigenvectors: UMat, result: UMat | None = ...) -> UMat: ... + +@_typing.overload +def PSNR(src1: cv2.typing.MatLike, src2: cv2.typing.MatLike, R: float = ...) -> float: ... +@_typing.overload +def PSNR(src1: UMat, src2: UMat, R: float = ...) -> float: ... + +@_typing.overload +def RQDecomp3x3(src: cv2.typing.MatLike, mtxR: cv2.typing.MatLike | None = ..., mtxQ: cv2.typing.MatLike | None = ..., Qx: cv2.typing.MatLike | None = ..., Qy: cv2.typing.MatLike | None = ..., Qz: cv2.typing.MatLike | None = ...) -> tuple[cv2.typing.Vec3d, cv2.typing.MatLike, cv2.typing.MatLike, cv2.typing.MatLike, cv2.typing.MatLike, cv2.typing.MatLike]: ... +@_typing.overload +def RQDecomp3x3(src: UMat, mtxR: UMat | None = ..., mtxQ: UMat | None = ..., Qx: UMat | None = ..., Qy: UMat | None = ..., Qz: UMat | None = ...) -> tuple[cv2.typing.Vec3d, UMat, UMat, UMat, UMat, UMat]: ... + +@_typing.overload +def Rodrigues(src: cv2.typing.MatLike, dst: cv2.typing.MatLike | None = ..., jacobian: cv2.typing.MatLike | None = ...) -> tuple[cv2.typing.MatLike, cv2.typing.MatLike]: ... +@_typing.overload +def Rodrigues(src: UMat, dst: UMat | None = ..., jacobian: UMat | None = ...) -> tuple[UMat, UMat]: ... + +@_typing.overload +def SVBackSubst(w: cv2.typing.MatLike, u: cv2.typing.MatLike, vt: cv2.typing.MatLike, rhs: cv2.typing.MatLike, dst: cv2.typing.MatLike | None = ...) -> cv2.typing.MatLike: ... +@_typing.overload +def SVBackSubst(w: UMat, u: UMat, vt: UMat, rhs: UMat, dst: UMat | None = ...) -> UMat: ... + +@_typing.overload +def SVDecomp(src: cv2.typing.MatLike, w: cv2.typing.MatLike | None = ..., u: cv2.typing.MatLike | None = ..., vt: cv2.typing.MatLike | None = ..., flags: int = ...) -> tuple[cv2.typing.MatLike, cv2.typing.MatLike, cv2.typing.MatLike]: ... +@_typing.overload +def SVDecomp(src: UMat, w: UMat | None = ..., u: UMat | None = ..., vt: UMat | None = ..., flags: int = ...) -> tuple[UMat, UMat, UMat]: ... + +@_typing.overload +def Scharr(src: cv2.typing.MatLike, ddepth: int, dx: int, dy: int, dst: cv2.typing.MatLike | None = ..., scale: float = ..., delta: float = ..., borderType: int = ...) -> cv2.typing.MatLike: ... +@_typing.overload +def Scharr(src: UMat, ddepth: int, dx: int, dy: int, dst: UMat | None = ..., scale: float = ..., delta: float = ..., borderType: int = ...) -> UMat: ... + +@_typing.overload +def Sobel(src: cv2.typing.MatLike, ddepth: int, dx: int, dy: int, dst: cv2.typing.MatLike | None = ..., ksize: int = ..., scale: float = ..., delta: float = ..., borderType: int = ...) -> cv2.typing.MatLike: ... +@_typing.overload +def Sobel(src: UMat, ddepth: int, dx: int, dy: int, dst: UMat | None = ..., ksize: int = ..., scale: float = ..., delta: float = ..., borderType: int = ...) -> UMat: ... + +@_typing.overload +def absdiff(src1: cv2.typing.MatLike, src2: cv2.typing.MatLike, dst: cv2.typing.MatLike | None = ...) -> cv2.typing.MatLike: ... +@_typing.overload +def absdiff(src1: UMat, src2: UMat, dst: UMat | None = ...) -> UMat: ... + +@_typing.overload +def accumulate(src: cv2.typing.MatLike, dst: cv2.typing.MatLike, mask: cv2.typing.MatLike | None = ...) -> cv2.typing.MatLike: ... +@_typing.overload +def accumulate(src: UMat, dst: UMat, mask: UMat | None = ...) -> UMat: ... + +@_typing.overload +def accumulateProduct(src1: cv2.typing.MatLike, src2: cv2.typing.MatLike, dst: cv2.typing.MatLike, mask: cv2.typing.MatLike | None = ...) -> cv2.typing.MatLike: ... +@_typing.overload +def accumulateProduct(src1: UMat, src2: UMat, dst: UMat, mask: UMat | None = ...) -> UMat: ... + +@_typing.overload +def accumulateSquare(src: cv2.typing.MatLike, dst: cv2.typing.MatLike, mask: cv2.typing.MatLike | None = ...) -> cv2.typing.MatLike: ... +@_typing.overload +def accumulateSquare(src: UMat, dst: UMat, mask: UMat | None = ...) -> UMat: ... + +@_typing.overload +def accumulateWeighted(src: cv2.typing.MatLike, dst: cv2.typing.MatLike, alpha: float, mask: cv2.typing.MatLike | None = ...) -> cv2.typing.MatLike: ... +@_typing.overload +def accumulateWeighted(src: UMat, dst: UMat, alpha: float, mask: UMat | None = ...) -> UMat: ... + +@_typing.overload +def adaptiveThreshold(src: cv2.typing.MatLike, maxValue: float, adaptiveMethod: int, thresholdType: int, blockSize: int, C: float, dst: cv2.typing.MatLike | None = ...) -> cv2.typing.MatLike: ... +@_typing.overload +def adaptiveThreshold(src: UMat, maxValue: float, adaptiveMethod: int, thresholdType: int, blockSize: int, C: float, dst: UMat | None = ...) -> UMat: ... + +@_typing.overload +def add(src1: cv2.typing.MatLike, src2: cv2.typing.MatLike, dst: cv2.typing.MatLike | None = ..., mask: cv2.typing.MatLike | None = ..., dtype: int = ...) -> cv2.typing.MatLike: ... +@_typing.overload +def add(src1: UMat, src2: UMat, dst: UMat | None = ..., mask: UMat | None = ..., dtype: int = ...) -> UMat: ... + +def addText(img: cv2.typing.MatLike, text: str, org: cv2.typing.Point, nameFont: str, pointSize: int = ..., color: cv2.typing.Scalar = ..., weight: int = ..., style: int = ..., spacing: int = ...) -> None: ... + +@_typing.overload +def addWeighted(src1: cv2.typing.MatLike, alpha: float, src2: cv2.typing.MatLike, beta: float, gamma: float, dst: cv2.typing.MatLike | None = ..., dtype: int = ...) -> cv2.typing.MatLike: ... +@_typing.overload +def addWeighted(src1: UMat, alpha: float, src2: UMat, beta: float, gamma: float, dst: UMat | None = ..., dtype: int = ...) -> UMat: ... + +@_typing.overload +def applyColorMap(src: cv2.typing.MatLike, colormap: int, dst: cv2.typing.MatLike | None = ...) -> cv2.typing.MatLike: ... +@_typing.overload +def applyColorMap(src: UMat, colormap: int, dst: UMat | None = ...) -> UMat: ... +@_typing.overload +def applyColorMap(src: cv2.typing.MatLike, userColor: cv2.typing.MatLike, dst: cv2.typing.MatLike | None = ...) -> cv2.typing.MatLike: ... +@_typing.overload +def applyColorMap(src: UMat, userColor: UMat, dst: UMat | None = ...) -> UMat: ... + +@_typing.overload +def approxPolyDP(curve: cv2.typing.MatLike, epsilon: float, closed: bool, approxCurve: cv2.typing.MatLike | None = ...) -> cv2.typing.MatLike: ... +@_typing.overload +def approxPolyDP(curve: UMat, epsilon: float, closed: bool, approxCurve: UMat | None = ...) -> UMat: ... + +@_typing.overload +def arcLength(curve: cv2.typing.MatLike, closed: bool) -> float: ... +@_typing.overload +def arcLength(curve: UMat, closed: bool) -> float: ... + +@_typing.overload +def arrowedLine(img: cv2.typing.MatLike, pt1: cv2.typing.Point, pt2: cv2.typing.Point, color: cv2.typing.Scalar, thickness: int = ..., line_type: int = ..., shift: int = ..., tipLength: float = ...) -> cv2.typing.MatLike: ... +@_typing.overload +def arrowedLine(img: UMat, pt1: cv2.typing.Point, pt2: cv2.typing.Point, color: cv2.typing.Scalar, thickness: int = ..., line_type: int = ..., shift: int = ..., tipLength: float = ...) -> UMat: ... + +@_typing.overload +def batchDistance(src1: cv2.typing.MatLike, src2: cv2.typing.MatLike, dtype: int, dist: cv2.typing.MatLike | None = ..., nidx: cv2.typing.MatLike | None = ..., normType: int = ..., K: int = ..., mask: cv2.typing.MatLike | None = ..., update: int = ..., crosscheck: bool = ...) -> tuple[cv2.typing.MatLike, cv2.typing.MatLike]: ... +@_typing.overload +def batchDistance(src1: UMat, src2: UMat, dtype: int, dist: UMat | None = ..., nidx: UMat | None = ..., normType: int = ..., K: int = ..., mask: UMat | None = ..., update: int = ..., crosscheck: bool = ...) -> tuple[UMat, UMat]: ... + +@_typing.overload +def bilateralFilter(src: cv2.typing.MatLike, d: int, sigmaColor: float, sigmaSpace: float, dst: cv2.typing.MatLike | None = ..., borderType: int = ...) -> cv2.typing.MatLike: ... +@_typing.overload +def bilateralFilter(src: UMat, d: int, sigmaColor: float, sigmaSpace: float, dst: UMat | None = ..., borderType: int = ...) -> UMat: ... + +@_typing.overload +def bitwise_and(src1: cv2.typing.MatLike, src2: cv2.typing.MatLike, dst: cv2.typing.MatLike | None = ..., mask: cv2.typing.MatLike | None = ...) -> cv2.typing.MatLike: ... +@_typing.overload +def bitwise_and(src1: UMat, src2: UMat, dst: UMat | None = ..., mask: UMat | None = ...) -> UMat: ... + +@_typing.overload +def bitwise_not(src: cv2.typing.MatLike, dst: cv2.typing.MatLike | None = ..., mask: cv2.typing.MatLike | None = ...) -> cv2.typing.MatLike: ... +@_typing.overload +def bitwise_not(src: UMat, dst: UMat | None = ..., mask: UMat | None = ...) -> UMat: ... + +@_typing.overload +def bitwise_or(src1: cv2.typing.MatLike, src2: cv2.typing.MatLike, dst: cv2.typing.MatLike | None = ..., mask: cv2.typing.MatLike | None = ...) -> cv2.typing.MatLike: ... +@_typing.overload +def bitwise_or(src1: UMat, src2: UMat, dst: UMat | None = ..., mask: UMat | None = ...) -> UMat: ... + +@_typing.overload +def bitwise_xor(src1: cv2.typing.MatLike, src2: cv2.typing.MatLike, dst: cv2.typing.MatLike | None = ..., mask: cv2.typing.MatLike | None = ...) -> cv2.typing.MatLike: ... +@_typing.overload +def bitwise_xor(src1: UMat, src2: UMat, dst: UMat | None = ..., mask: UMat | None = ...) -> UMat: ... + +@_typing.overload +def blendLinear(src1: cv2.typing.MatLike, src2: cv2.typing.MatLike, weights1: cv2.typing.MatLike, weights2: cv2.typing.MatLike, dst: cv2.typing.MatLike | None = ...) -> cv2.typing.MatLike: ... +@_typing.overload +def blendLinear(src1: UMat, src2: UMat, weights1: UMat, weights2: UMat, dst: UMat | None = ...) -> UMat: ... + +@_typing.overload +def blur(src: cv2.typing.MatLike, ksize: cv2.typing.Size, dst: cv2.typing.MatLike | None = ..., anchor: cv2.typing.Point = ..., borderType: int = ...) -> cv2.typing.MatLike: ... +@_typing.overload +def blur(src: UMat, ksize: cv2.typing.Size, dst: UMat | None = ..., anchor: cv2.typing.Point = ..., borderType: int = ...) -> UMat: ... + +def borderInterpolate(p: int, len: int, borderType: int) -> int: ... + +@_typing.overload +def boundingRect(array: cv2.typing.MatLike) -> cv2.typing.Rect: ... +@_typing.overload +def boundingRect(array: UMat) -> cv2.typing.Rect: ... + +@_typing.overload +def boxFilter(src: cv2.typing.MatLike, ddepth: int, ksize: cv2.typing.Size, dst: cv2.typing.MatLike | None = ..., anchor: cv2.typing.Point = ..., normalize: bool = ..., borderType: int = ...) -> cv2.typing.MatLike: ... +@_typing.overload +def boxFilter(src: UMat, ddepth: int, ksize: cv2.typing.Size, dst: UMat | None = ..., anchor: cv2.typing.Point = ..., normalize: bool = ..., borderType: int = ...) -> UMat: ... + +@_typing.overload +def boxPoints(box: cv2.typing.RotatedRect, points: cv2.typing.MatLike | None = ...) -> cv2.typing.MatLike: ... +@_typing.overload +def boxPoints(box: cv2.typing.RotatedRect, points: UMat | None = ...) -> UMat: ... + +@_typing.overload +def broadcast(src: cv2.typing.MatLike, shape: cv2.typing.MatLike, dst: cv2.typing.MatLike | None = ...) -> cv2.typing.MatLike: ... +@_typing.overload +def broadcast(src: UMat, shape: UMat, dst: UMat | None = ...) -> UMat: ... + +@_typing.overload +def buildOpticalFlowPyramid(img: cv2.typing.MatLike, winSize: cv2.typing.Size, maxLevel: int, pyramid: _typing.Sequence[cv2.typing.MatLike] | None = ..., withDerivatives: bool = ..., pyrBorder: int = ..., derivBorder: int = ..., tryReuseInputImage: bool = ...) -> tuple[int, _typing.Sequence[cv2.typing.MatLike]]: ... +@_typing.overload +def buildOpticalFlowPyramid(img: UMat, winSize: cv2.typing.Size, maxLevel: int, pyramid: _typing.Sequence[UMat] | None = ..., withDerivatives: bool = ..., pyrBorder: int = ..., derivBorder: int = ..., tryReuseInputImage: bool = ...) -> tuple[int, _typing.Sequence[UMat]]: ... + +@_typing.overload +def calcBackProject(images: _typing.Sequence[cv2.typing.MatLike], channels: _typing.Sequence[int], hist: cv2.typing.MatLike, ranges: _typing.Sequence[float], scale: float, dst: cv2.typing.MatLike | None = ...) -> cv2.typing.MatLike: ... +@_typing.overload +def calcBackProject(images: _typing.Sequence[UMat], channels: _typing.Sequence[int], hist: UMat, ranges: _typing.Sequence[float], scale: float, dst: UMat | None = ...) -> UMat: ... + +@_typing.overload +def calcCovarMatrix(samples: cv2.typing.MatLike, mean: cv2.typing.MatLike, flags: int, covar: cv2.typing.MatLike | None = ..., ctype: int = ...) -> tuple[cv2.typing.MatLike, cv2.typing.MatLike]: ... +@_typing.overload +def calcCovarMatrix(samples: UMat, mean: UMat, flags: int, covar: UMat | None = ..., ctype: int = ...) -> tuple[UMat, UMat]: ... + +@_typing.overload +def calcHist(images: _typing.Sequence[cv2.typing.MatLike], channels: _typing.Sequence[int], mask: cv2.typing.MatLike | None, histSize: _typing.Sequence[int], ranges: _typing.Sequence[float], hist: cv2.typing.MatLike | None = ..., accumulate: bool = ...) -> cv2.typing.MatLike: ... +@_typing.overload +def calcHist(images: _typing.Sequence[UMat], channels: _typing.Sequence[int], mask: UMat | None, histSize: _typing.Sequence[int], ranges: _typing.Sequence[float], hist: UMat | None = ..., accumulate: bool = ...) -> UMat: ... + +@_typing.overload +def calcOpticalFlowFarneback(prev: cv2.typing.MatLike, next: cv2.typing.MatLike, flow: cv2.typing.MatLike, pyr_scale: float, levels: int, winsize: int, iterations: int, poly_n: int, poly_sigma: float, flags: int) -> cv2.typing.MatLike: ... +@_typing.overload +def calcOpticalFlowFarneback(prev: UMat, next: UMat, flow: UMat, pyr_scale: float, levels: int, winsize: int, iterations: int, poly_n: int, poly_sigma: float, flags: int) -> UMat: ... + +@_typing.overload +def calcOpticalFlowPyrLK(prevImg: cv2.typing.MatLike, nextImg: cv2.typing.MatLike, prevPts: cv2.typing.MatLike, nextPts: cv2.typing.MatLike, status: cv2.typing.MatLike | None = ..., err: cv2.typing.MatLike | None = ..., winSize: cv2.typing.Size = ..., maxLevel: int = ..., criteria: cv2.typing.TermCriteria = ..., flags: int = ..., minEigThreshold: float = ...) -> tuple[cv2.typing.MatLike, cv2.typing.MatLike, cv2.typing.MatLike]: ... +@_typing.overload +def calcOpticalFlowPyrLK(prevImg: UMat, nextImg: UMat, prevPts: UMat, nextPts: UMat, status: UMat | None = ..., err: UMat | None = ..., winSize: cv2.typing.Size = ..., maxLevel: int = ..., criteria: cv2.typing.TermCriteria = ..., flags: int = ..., minEigThreshold: float = ...) -> tuple[UMat, UMat, UMat]: ... + +@_typing.overload +def calibrateCamera(objectPoints: _typing.Sequence[cv2.typing.MatLike], imagePoints: _typing.Sequence[cv2.typing.MatLike], imageSize: cv2.typing.Size, cameraMatrix: cv2.typing.MatLike, distCoeffs: cv2.typing.MatLike, rvecs: _typing.Sequence[cv2.typing.MatLike] | None = ..., tvecs: _typing.Sequence[cv2.typing.MatLike] | None = ..., flags: int = ..., criteria: cv2.typing.TermCriteria = ...) -> tuple[float, cv2.typing.MatLike, cv2.typing.MatLike, _typing.Sequence[cv2.typing.MatLike], _typing.Sequence[cv2.typing.MatLike]]: ... +@_typing.overload +def calibrateCamera(objectPoints: _typing.Sequence[UMat], imagePoints: _typing.Sequence[UMat], imageSize: cv2.typing.Size, cameraMatrix: UMat, distCoeffs: UMat, rvecs: _typing.Sequence[UMat] | None = ..., tvecs: _typing.Sequence[UMat] | None = ..., flags: int = ..., criteria: cv2.typing.TermCriteria = ...) -> tuple[float, UMat, UMat, _typing.Sequence[UMat], _typing.Sequence[UMat]]: ... + +@_typing.overload +def calibrateCameraExtended(objectPoints: _typing.Sequence[cv2.typing.MatLike], imagePoints: _typing.Sequence[cv2.typing.MatLike], imageSize: cv2.typing.Size, cameraMatrix: cv2.typing.MatLike, distCoeffs: cv2.typing.MatLike, rvecs: _typing.Sequence[cv2.typing.MatLike] | None = ..., tvecs: _typing.Sequence[cv2.typing.MatLike] | None = ..., stdDeviationsIntrinsics: cv2.typing.MatLike | None = ..., stdDeviationsExtrinsics: cv2.typing.MatLike | None = ..., perViewErrors: cv2.typing.MatLike | None = ..., flags: int = ..., criteria: cv2.typing.TermCriteria = ...) -> tuple[float, cv2.typing.MatLike, cv2.typing.MatLike, _typing.Sequence[cv2.typing.MatLike], _typing.Sequence[cv2.typing.MatLike], cv2.typing.MatLike, cv2.typing.MatLike, cv2.typing.MatLike]: ... +@_typing.overload +def calibrateCameraExtended(objectPoints: _typing.Sequence[UMat], imagePoints: _typing.Sequence[UMat], imageSize: cv2.typing.Size, cameraMatrix: UMat, distCoeffs: UMat, rvecs: _typing.Sequence[UMat] | None = ..., tvecs: _typing.Sequence[UMat] | None = ..., stdDeviationsIntrinsics: UMat | None = ..., stdDeviationsExtrinsics: UMat | None = ..., perViewErrors: UMat | None = ..., flags: int = ..., criteria: cv2.typing.TermCriteria = ...) -> tuple[float, UMat, UMat, _typing.Sequence[UMat], _typing.Sequence[UMat], UMat, UMat, UMat]: ... + +@_typing.overload +def calibrateCameraRO(objectPoints: _typing.Sequence[cv2.typing.MatLike], imagePoints: _typing.Sequence[cv2.typing.MatLike], imageSize: cv2.typing.Size, iFixedPoint: int, cameraMatrix: cv2.typing.MatLike, distCoeffs: cv2.typing.MatLike, rvecs: _typing.Sequence[cv2.typing.MatLike] | None = ..., tvecs: _typing.Sequence[cv2.typing.MatLike] | None = ..., newObjPoints: cv2.typing.MatLike | None = ..., flags: int = ..., criteria: cv2.typing.TermCriteria = ...) -> tuple[float, cv2.typing.MatLike, cv2.typing.MatLike, _typing.Sequence[cv2.typing.MatLike], _typing.Sequence[cv2.typing.MatLike], cv2.typing.MatLike]: ... +@_typing.overload +def calibrateCameraRO(objectPoints: _typing.Sequence[UMat], imagePoints: _typing.Sequence[UMat], imageSize: cv2.typing.Size, iFixedPoint: int, cameraMatrix: UMat, distCoeffs: UMat, rvecs: _typing.Sequence[UMat] | None = ..., tvecs: _typing.Sequence[UMat] | None = ..., newObjPoints: UMat | None = ..., flags: int = ..., criteria: cv2.typing.TermCriteria = ...) -> tuple[float, UMat, UMat, _typing.Sequence[UMat], _typing.Sequence[UMat], UMat]: ... + +@_typing.overload +def calibrateCameraROExtended(objectPoints: _typing.Sequence[cv2.typing.MatLike], imagePoints: _typing.Sequence[cv2.typing.MatLike], imageSize: cv2.typing.Size, iFixedPoint: int, cameraMatrix: cv2.typing.MatLike, distCoeffs: cv2.typing.MatLike, rvecs: _typing.Sequence[cv2.typing.MatLike] | None = ..., tvecs: _typing.Sequence[cv2.typing.MatLike] | None = ..., newObjPoints: cv2.typing.MatLike | None = ..., stdDeviationsIntrinsics: cv2.typing.MatLike | None = ..., stdDeviationsExtrinsics: cv2.typing.MatLike | None = ..., stdDeviationsObjPoints: cv2.typing.MatLike | None = ..., perViewErrors: cv2.typing.MatLike | None = ..., flags: int = ..., criteria: cv2.typing.TermCriteria = ...) -> tuple[float, cv2.typing.MatLike, cv2.typing.MatLike, _typing.Sequence[cv2.typing.MatLike], _typing.Sequence[cv2.typing.MatLike], cv2.typing.MatLike, cv2.typing.MatLike, cv2.typing.MatLike, cv2.typing.MatLike, cv2.typing.MatLike]: ... +@_typing.overload +def calibrateCameraROExtended(objectPoints: _typing.Sequence[UMat], imagePoints: _typing.Sequence[UMat], imageSize: cv2.typing.Size, iFixedPoint: int, cameraMatrix: UMat, distCoeffs: UMat, rvecs: _typing.Sequence[UMat] | None = ..., tvecs: _typing.Sequence[UMat] | None = ..., newObjPoints: UMat | None = ..., stdDeviationsIntrinsics: UMat | None = ..., stdDeviationsExtrinsics: UMat | None = ..., stdDeviationsObjPoints: UMat | None = ..., perViewErrors: UMat | None = ..., flags: int = ..., criteria: cv2.typing.TermCriteria = ...) -> tuple[float, UMat, UMat, _typing.Sequence[UMat], _typing.Sequence[UMat], UMat, UMat, UMat, UMat, UMat]: ... + +@_typing.overload +def calibrateHandEye(R_gripper2base: _typing.Sequence[cv2.typing.MatLike], t_gripper2base: _typing.Sequence[cv2.typing.MatLike], R_target2cam: _typing.Sequence[cv2.typing.MatLike], t_target2cam: _typing.Sequence[cv2.typing.MatLike], R_cam2gripper: cv2.typing.MatLike | None = ..., t_cam2gripper: cv2.typing.MatLike | None = ..., method: HandEyeCalibrationMethod = ...) -> tuple[cv2.typing.MatLike, cv2.typing.MatLike]: ... +@_typing.overload +def calibrateHandEye(R_gripper2base: _typing.Sequence[UMat], t_gripper2base: _typing.Sequence[UMat], R_target2cam: _typing.Sequence[UMat], t_target2cam: _typing.Sequence[UMat], R_cam2gripper: UMat | None = ..., t_cam2gripper: UMat | None = ..., method: HandEyeCalibrationMethod = ...) -> tuple[UMat, UMat]: ... + +@_typing.overload +def calibrateRobotWorldHandEye(R_world2cam: _typing.Sequence[cv2.typing.MatLike], t_world2cam: _typing.Sequence[cv2.typing.MatLike], R_base2gripper: _typing.Sequence[cv2.typing.MatLike], t_base2gripper: _typing.Sequence[cv2.typing.MatLike], R_base2world: cv2.typing.MatLike | None = ..., t_base2world: cv2.typing.MatLike | None = ..., R_gripper2cam: cv2.typing.MatLike | None = ..., t_gripper2cam: cv2.typing.MatLike | None = ..., method: RobotWorldHandEyeCalibrationMethod = ...) -> tuple[cv2.typing.MatLike, cv2.typing.MatLike, cv2.typing.MatLike, cv2.typing.MatLike]: ... +@_typing.overload +def calibrateRobotWorldHandEye(R_world2cam: _typing.Sequence[UMat], t_world2cam: _typing.Sequence[UMat], R_base2gripper: _typing.Sequence[UMat], t_base2gripper: _typing.Sequence[UMat], R_base2world: UMat | None = ..., t_base2world: UMat | None = ..., R_gripper2cam: UMat | None = ..., t_gripper2cam: UMat | None = ..., method: RobotWorldHandEyeCalibrationMethod = ...) -> tuple[UMat, UMat, UMat, UMat]: ... + +@_typing.overload +def calibrationMatrixValues(cameraMatrix: cv2.typing.MatLike, imageSize: cv2.typing.Size, apertureWidth: float, apertureHeight: float) -> tuple[float, float, float, cv2.typing.Point2d, float]: ... +@_typing.overload +def calibrationMatrixValues(cameraMatrix: UMat, imageSize: cv2.typing.Size, apertureWidth: float, apertureHeight: float) -> tuple[float, float, float, cv2.typing.Point2d, float]: ... + +@_typing.overload +def cartToPolar(x: cv2.typing.MatLike, y: cv2.typing.MatLike, magnitude: cv2.typing.MatLike | None = ..., angle: cv2.typing.MatLike | None = ..., angleInDegrees: bool = ...) -> tuple[cv2.typing.MatLike, cv2.typing.MatLike]: ... +@_typing.overload +def cartToPolar(x: UMat, y: UMat, magnitude: UMat | None = ..., angle: UMat | None = ..., angleInDegrees: bool = ...) -> tuple[UMat, UMat]: ... + +@_typing.overload +def checkChessboard(img: cv2.typing.MatLike, size: cv2.typing.Size) -> bool: ... +@_typing.overload +def checkChessboard(img: UMat, size: cv2.typing.Size) -> bool: ... + +def checkHardwareSupport(feature: int) -> bool: ... + +@_typing.overload +def checkRange(a: cv2.typing.MatLike, quiet: bool = ..., minVal: float = ..., maxVal: float = ...) -> tuple[bool, cv2.typing.Point]: ... +@_typing.overload +def checkRange(a: UMat, quiet: bool = ..., minVal: float = ..., maxVal: float = ...) -> tuple[bool, cv2.typing.Point]: ... + +@_typing.overload +def circle(img: cv2.typing.MatLike, center: cv2.typing.Point, radius: int, color: cv2.typing.Scalar, thickness: int = ..., lineType: int = ..., shift: int = ...) -> cv2.typing.MatLike: ... +@_typing.overload +def circle(img: UMat, center: cv2.typing.Point, radius: int, color: cv2.typing.Scalar, thickness: int = ..., lineType: int = ..., shift: int = ...) -> UMat: ... + +def clipLine(imgRect: cv2.typing.Rect, pt1: cv2.typing.Point, pt2: cv2.typing.Point) -> tuple[bool, cv2.typing.Point, cv2.typing.Point]: ... + +@_typing.overload +def colorChange(src: cv2.typing.MatLike, mask: cv2.typing.MatLike, dst: cv2.typing.MatLike | None = ..., red_mul: float = ..., green_mul: float = ..., blue_mul: float = ...) -> cv2.typing.MatLike: ... +@_typing.overload +def colorChange(src: UMat, mask: UMat, dst: UMat | None = ..., red_mul: float = ..., green_mul: float = ..., blue_mul: float = ...) -> UMat: ... + +@_typing.overload +def compare(src1: cv2.typing.MatLike, src2: cv2.typing.MatLike, cmpop: int, dst: cv2.typing.MatLike | None = ...) -> cv2.typing.MatLike: ... +@_typing.overload +def compare(src1: UMat, src2: UMat, cmpop: int, dst: UMat | None = ...) -> UMat: ... + +@_typing.overload +def compareHist(H1: cv2.typing.MatLike, H2: cv2.typing.MatLike, method: int) -> float: ... +@_typing.overload +def compareHist(H1: UMat, H2: UMat, method: int) -> float: ... + +@_typing.overload +def completeSymm(m: cv2.typing.MatLike, lowerToUpper: bool = ...) -> cv2.typing.MatLike: ... +@_typing.overload +def completeSymm(m: UMat, lowerToUpper: bool = ...) -> UMat: ... + +@_typing.overload +def composeRT(rvec1: cv2.typing.MatLike, tvec1: cv2.typing.MatLike, rvec2: cv2.typing.MatLike, tvec2: cv2.typing.MatLike, rvec3: cv2.typing.MatLike | None = ..., tvec3: cv2.typing.MatLike | None = ..., dr3dr1: cv2.typing.MatLike | None = ..., dr3dt1: cv2.typing.MatLike | None = ..., dr3dr2: cv2.typing.MatLike | None = ..., dr3dt2: cv2.typing.MatLike | None = ..., dt3dr1: cv2.typing.MatLike | None = ..., dt3dt1: cv2.typing.MatLike | None = ..., dt3dr2: cv2.typing.MatLike | None = ..., dt3dt2: cv2.typing.MatLike | None = ...) -> tuple[cv2.typing.MatLike, cv2.typing.MatLike, cv2.typing.MatLike, cv2.typing.MatLike, cv2.typing.MatLike, cv2.typing.MatLike, cv2.typing.MatLike, cv2.typing.MatLike, cv2.typing.MatLike, cv2.typing.MatLike]: ... +@_typing.overload +def composeRT(rvec1: UMat, tvec1: UMat, rvec2: UMat, tvec2: UMat, rvec3: UMat | None = ..., tvec3: UMat | None = ..., dr3dr1: UMat | None = ..., dr3dt1: UMat | None = ..., dr3dr2: UMat | None = ..., dr3dt2: UMat | None = ..., dt3dr1: UMat | None = ..., dt3dt1: UMat | None = ..., dt3dr2: UMat | None = ..., dt3dt2: UMat | None = ...) -> tuple[UMat, UMat, UMat, UMat, UMat, UMat, UMat, UMat, UMat, UMat]: ... + +@_typing.overload +def computeCorrespondEpilines(points: cv2.typing.MatLike, whichImage: int, F: cv2.typing.MatLike, lines: cv2.typing.MatLike | None = ...) -> cv2.typing.MatLike: ... +@_typing.overload +def computeCorrespondEpilines(points: UMat, whichImage: int, F: UMat, lines: UMat | None = ...) -> UMat: ... + +@_typing.overload +def computeECC(templateImage: cv2.typing.MatLike, inputImage: cv2.typing.MatLike, inputMask: cv2.typing.MatLike | None = ...) -> float: ... +@_typing.overload +def computeECC(templateImage: UMat, inputImage: UMat, inputMask: UMat | None = ...) -> float: ... + +@_typing.overload +def connectedComponents(image: cv2.typing.MatLike, labels: cv2.typing.MatLike | None = ..., connectivity: int = ..., ltype: int = ...) -> tuple[int, cv2.typing.MatLike]: ... +@_typing.overload +def connectedComponents(image: UMat, labels: UMat | None = ..., connectivity: int = ..., ltype: int = ...) -> tuple[int, UMat]: ... + +@_typing.overload +def connectedComponentsWithAlgorithm(image: cv2.typing.MatLike, connectivity: int, ltype: int, ccltype: int, labels: cv2.typing.MatLike | None = ...) -> tuple[int, cv2.typing.MatLike]: ... +@_typing.overload +def connectedComponentsWithAlgorithm(image: UMat, connectivity: int, ltype: int, ccltype: int, labels: UMat | None = ...) -> tuple[int, UMat]: ... + +@_typing.overload +def connectedComponentsWithStats(image: cv2.typing.MatLike, labels: cv2.typing.MatLike | None = ..., stats: cv2.typing.MatLike | None = ..., centroids: cv2.typing.MatLike | None = ..., connectivity: int = ..., ltype: int = ...) -> tuple[int, cv2.typing.MatLike, cv2.typing.MatLike, cv2.typing.MatLike]: ... +@_typing.overload +def connectedComponentsWithStats(image: UMat, labels: UMat | None = ..., stats: UMat | None = ..., centroids: UMat | None = ..., connectivity: int = ..., ltype: int = ...) -> tuple[int, UMat, UMat, UMat]: ... + +@_typing.overload +def connectedComponentsWithStatsWithAlgorithm(image: cv2.typing.MatLike, connectivity: int, ltype: int, ccltype: int, labels: cv2.typing.MatLike | None = ..., stats: cv2.typing.MatLike | None = ..., centroids: cv2.typing.MatLike | None = ...) -> tuple[int, cv2.typing.MatLike, cv2.typing.MatLike, cv2.typing.MatLike]: ... +@_typing.overload +def connectedComponentsWithStatsWithAlgorithm(image: UMat, connectivity: int, ltype: int, ccltype: int, labels: UMat | None = ..., stats: UMat | None = ..., centroids: UMat | None = ...) -> tuple[int, UMat, UMat, UMat]: ... + +@_typing.overload +def contourArea(contour: cv2.typing.MatLike, oriented: bool = ...) -> float: ... +@_typing.overload +def contourArea(contour: UMat, oriented: bool = ...) -> float: ... + +@_typing.overload +def convertFp16(src: cv2.typing.MatLike, dst: cv2.typing.MatLike | None = ...) -> cv2.typing.MatLike: ... +@_typing.overload +def convertFp16(src: UMat, dst: UMat | None = ...) -> UMat: ... + +@_typing.overload +def convertMaps(map1: cv2.typing.MatLike, map2: cv2.typing.MatLike, dstmap1type: int, dstmap1: cv2.typing.MatLike | None = ..., dstmap2: cv2.typing.MatLike | None = ..., nninterpolation: bool = ...) -> tuple[cv2.typing.MatLike, cv2.typing.MatLike]: ... +@_typing.overload +def convertMaps(map1: UMat, map2: UMat, dstmap1type: int, dstmap1: UMat | None = ..., dstmap2: UMat | None = ..., nninterpolation: bool = ...) -> tuple[UMat, UMat]: ... + +@_typing.overload +def convertPointsFromHomogeneous(src: cv2.typing.MatLike, dst: cv2.typing.MatLike | None = ...) -> cv2.typing.MatLike: ... +@_typing.overload +def convertPointsFromHomogeneous(src: UMat, dst: UMat | None = ...) -> UMat: ... + +@_typing.overload +def convertPointsToHomogeneous(src: cv2.typing.MatLike, dst: cv2.typing.MatLike | None = ...) -> cv2.typing.MatLike: ... +@_typing.overload +def convertPointsToHomogeneous(src: UMat, dst: UMat | None = ...) -> UMat: ... + +@_typing.overload +def convertScaleAbs(src: cv2.typing.MatLike, dst: cv2.typing.MatLike | None = ..., alpha: float = ..., beta: float = ...) -> cv2.typing.MatLike: ... +@_typing.overload +def convertScaleAbs(src: UMat, dst: UMat | None = ..., alpha: float = ..., beta: float = ...) -> UMat: ... + +@_typing.overload +def convexHull(points: cv2.typing.MatLike, hull: cv2.typing.MatLike | None = ..., clockwise: bool = ..., returnPoints: bool = ...) -> cv2.typing.MatLike: ... +@_typing.overload +def convexHull(points: UMat, hull: UMat | None = ..., clockwise: bool = ..., returnPoints: bool = ...) -> UMat: ... + +@_typing.overload +def convexityDefects(contour: cv2.typing.MatLike, convexhull: cv2.typing.MatLike, convexityDefects: cv2.typing.MatLike | None = ...) -> cv2.typing.MatLike: ... +@_typing.overload +def convexityDefects(contour: UMat, convexhull: UMat, convexityDefects: UMat | None = ...) -> UMat: ... + +@_typing.overload +def copyMakeBorder(src: cv2.typing.MatLike, top: int, bottom: int, left: int, right: int, borderType: int, dst: cv2.typing.MatLike | None = ..., value: cv2.typing.Scalar = ...) -> cv2.typing.MatLike: ... +@_typing.overload +def copyMakeBorder(src: UMat, top: int, bottom: int, left: int, right: int, borderType: int, dst: UMat | None = ..., value: cv2.typing.Scalar = ...) -> UMat: ... + +@_typing.overload +def copyTo(src: cv2.typing.MatLike, mask: cv2.typing.MatLike, dst: cv2.typing.MatLike | None = ...) -> cv2.typing.MatLike: ... +@_typing.overload +def copyTo(src: UMat, mask: UMat, dst: UMat | None = ...) -> UMat: ... + +@_typing.overload +def cornerEigenValsAndVecs(src: cv2.typing.MatLike, blockSize: int, ksize: int, dst: cv2.typing.MatLike | None = ..., borderType: int = ...) -> cv2.typing.MatLike: ... +@_typing.overload +def cornerEigenValsAndVecs(src: UMat, blockSize: int, ksize: int, dst: UMat | None = ..., borderType: int = ...) -> UMat: ... + +@_typing.overload +def cornerHarris(src: cv2.typing.MatLike, blockSize: int, ksize: int, k: float, dst: cv2.typing.MatLike | None = ..., borderType: int = ...) -> cv2.typing.MatLike: ... +@_typing.overload +def cornerHarris(src: UMat, blockSize: int, ksize: int, k: float, dst: UMat | None = ..., borderType: int = ...) -> UMat: ... + +@_typing.overload +def cornerMinEigenVal(src: cv2.typing.MatLike, blockSize: int, dst: cv2.typing.MatLike | None = ..., ksize: int = ..., borderType: int = ...) -> cv2.typing.MatLike: ... +@_typing.overload +def cornerMinEigenVal(src: UMat, blockSize: int, dst: UMat | None = ..., ksize: int = ..., borderType: int = ...) -> UMat: ... + +@_typing.overload +def cornerSubPix(image: cv2.typing.MatLike, corners: cv2.typing.MatLike, winSize: cv2.typing.Size, zeroZone: cv2.typing.Size, criteria: cv2.typing.TermCriteria) -> cv2.typing.MatLike: ... +@_typing.overload +def cornerSubPix(image: UMat, corners: UMat, winSize: cv2.typing.Size, zeroZone: cv2.typing.Size, criteria: cv2.typing.TermCriteria) -> UMat: ... + +@_typing.overload +def correctMatches(F: cv2.typing.MatLike, points1: cv2.typing.MatLike, points2: cv2.typing.MatLike, newPoints1: cv2.typing.MatLike | None = ..., newPoints2: cv2.typing.MatLike | None = ...) -> tuple[cv2.typing.MatLike, cv2.typing.MatLike]: ... +@_typing.overload +def correctMatches(F: UMat, points1: UMat, points2: UMat, newPoints1: UMat | None = ..., newPoints2: UMat | None = ...) -> tuple[UMat, UMat]: ... + +@_typing.overload +def countNonZero(src: cv2.typing.MatLike) -> int: ... +@_typing.overload +def countNonZero(src: UMat) -> int: ... + +def createAlignMTB(max_bits: int = ..., exclude_range: int = ..., cut: bool = ...) -> AlignMTB: ... + +def createBackgroundSubtractorKNN(history: int = ..., dist2Threshold: float = ..., detectShadows: bool = ...) -> BackgroundSubtractorKNN: ... + +def createBackgroundSubtractorMOG2(history: int = ..., varThreshold: float = ..., detectShadows: bool = ...) -> BackgroundSubtractorMOG2: ... + +def createCLAHE(clipLimit: float = ..., tileGridSize: cv2.typing.Size = ...) -> CLAHE: ... + +def createCalibrateDebevec(samples: int = ..., lambda_: float = ..., random: bool = ...) -> CalibrateDebevec: ... + +def createCalibrateRobertson(max_iter: int = ..., threshold: float = ...) -> CalibrateRobertson: ... + +def createGeneralizedHoughBallard() -> GeneralizedHoughBallard: ... + +def createGeneralizedHoughGuil() -> GeneralizedHoughGuil: ... + +@_typing.overload +def createHanningWindow(winSize: cv2.typing.Size, type: int, dst: cv2.typing.MatLike | None = ...) -> cv2.typing.MatLike: ... +@_typing.overload +def createHanningWindow(winSize: cv2.typing.Size, type: int, dst: UMat | None = ...) -> UMat: ... + +def createLineSegmentDetector(refine: int = ..., scale: float = ..., sigma_scale: float = ..., quant: float = ..., ang_th: float = ..., log_eps: float = ..., density_th: float = ..., n_bins: int = ...) -> LineSegmentDetector: ... + +def createMergeDebevec() -> MergeDebevec: ... + +def createMergeMertens(contrast_weight: float = ..., saturation_weight: float = ..., exposure_weight: float = ...) -> MergeMertens: ... + +def createMergeRobertson() -> MergeRobertson: ... + +def createTonemap(gamma: float = ...) -> Tonemap: ... + +def createTonemapDrago(gamma: float = ..., saturation: float = ..., bias: float = ...) -> TonemapDrago: ... + +def createTonemapMantiuk(gamma: float = ..., scale: float = ..., saturation: float = ...) -> TonemapMantiuk: ... + +def createTonemapReinhard(gamma: float = ..., intensity: float = ..., light_adapt: float = ..., color_adapt: float = ...) -> TonemapReinhard: ... + +def cubeRoot(val: float) -> float: ... + +def currentUIFramework() -> str: ... + +@_typing.overload +def cvtColor(src: cv2.typing.MatLike, code: int, dst: cv2.typing.MatLike | None = ..., dstCn: int = ...) -> cv2.typing.MatLike: ... +@_typing.overload +def cvtColor(src: UMat, code: int, dst: UMat | None = ..., dstCn: int = ...) -> UMat: ... + +@_typing.overload +def cvtColorTwoPlane(src1: cv2.typing.MatLike, src2: cv2.typing.MatLike, code: int, dst: cv2.typing.MatLike | None = ...) -> cv2.typing.MatLike: ... +@_typing.overload +def cvtColorTwoPlane(src1: UMat, src2: UMat, code: int, dst: UMat | None = ...) -> UMat: ... + +@_typing.overload +def dct(src: cv2.typing.MatLike, dst: cv2.typing.MatLike | None = ..., flags: int = ...) -> cv2.typing.MatLike: ... +@_typing.overload +def dct(src: UMat, dst: UMat | None = ..., flags: int = ...) -> UMat: ... + +@_typing.overload +def decolor(src: cv2.typing.MatLike, grayscale: cv2.typing.MatLike | None = ..., color_boost: cv2.typing.MatLike | None = ...) -> tuple[cv2.typing.MatLike, cv2.typing.MatLike]: ... +@_typing.overload +def decolor(src: UMat, grayscale: UMat | None = ..., color_boost: UMat | None = ...) -> tuple[UMat, UMat]: ... + +@_typing.overload +def decomposeEssentialMat(E: cv2.typing.MatLike, R1: cv2.typing.MatLike | None = ..., R2: cv2.typing.MatLike | None = ..., t: cv2.typing.MatLike | None = ...) -> tuple[cv2.typing.MatLike, cv2.typing.MatLike, cv2.typing.MatLike]: ... +@_typing.overload +def decomposeEssentialMat(E: UMat, R1: UMat | None = ..., R2: UMat | None = ..., t: UMat | None = ...) -> tuple[UMat, UMat, UMat]: ... + +@_typing.overload +def decomposeHomographyMat(H: cv2.typing.MatLike, K: cv2.typing.MatLike, rotations: _typing.Sequence[cv2.typing.MatLike] | None = ..., translations: _typing.Sequence[cv2.typing.MatLike] | None = ..., normals: _typing.Sequence[cv2.typing.MatLike] | None = ...) -> tuple[int, _typing.Sequence[cv2.typing.MatLike], _typing.Sequence[cv2.typing.MatLike], _typing.Sequence[cv2.typing.MatLike]]: ... +@_typing.overload +def decomposeHomographyMat(H: UMat, K: UMat, rotations: _typing.Sequence[UMat] | None = ..., translations: _typing.Sequence[UMat] | None = ..., normals: _typing.Sequence[UMat] | None = ...) -> tuple[int, _typing.Sequence[UMat], _typing.Sequence[UMat], _typing.Sequence[UMat]]: ... + +@_typing.overload +def decomposeProjectionMatrix(projMatrix: cv2.typing.MatLike, cameraMatrix: cv2.typing.MatLike | None = ..., rotMatrix: cv2.typing.MatLike | None = ..., transVect: cv2.typing.MatLike | None = ..., rotMatrixX: cv2.typing.MatLike | None = ..., rotMatrixY: cv2.typing.MatLike | None = ..., rotMatrixZ: cv2.typing.MatLike | None = ..., eulerAngles: cv2.typing.MatLike | None = ...) -> tuple[cv2.typing.MatLike, cv2.typing.MatLike, cv2.typing.MatLike, cv2.typing.MatLike, cv2.typing.MatLike, cv2.typing.MatLike, cv2.typing.MatLike]: ... +@_typing.overload +def decomposeProjectionMatrix(projMatrix: UMat, cameraMatrix: UMat | None = ..., rotMatrix: UMat | None = ..., transVect: UMat | None = ..., rotMatrixX: UMat | None = ..., rotMatrixY: UMat | None = ..., rotMatrixZ: UMat | None = ..., eulerAngles: UMat | None = ...) -> tuple[UMat, UMat, UMat, UMat, UMat, UMat, UMat]: ... + +@_typing.overload +def demosaicing(src: cv2.typing.MatLike, code: int, dst: cv2.typing.MatLike | None = ..., dstCn: int = ...) -> cv2.typing.MatLike: ... +@_typing.overload +def demosaicing(src: UMat, code: int, dst: UMat | None = ..., dstCn: int = ...) -> UMat: ... + +def denoise_TVL1(observations: _typing.Sequence[cv2.typing.MatLike], result: cv2.typing.MatLike, lambda_: float = ..., niters: int = ...) -> None: ... + +def destroyAllWindows() -> None: ... + +def destroyWindow(winname: str) -> None: ... + +@_typing.overload +def detailEnhance(src: cv2.typing.MatLike, dst: cv2.typing.MatLike | None = ..., sigma_s: float = ..., sigma_r: float = ...) -> cv2.typing.MatLike: ... +@_typing.overload +def detailEnhance(src: UMat, dst: UMat | None = ..., sigma_s: float = ..., sigma_r: float = ...) -> UMat: ... + +@_typing.overload +def determinant(mtx: cv2.typing.MatLike) -> float: ... +@_typing.overload +def determinant(mtx: UMat) -> float: ... + +@_typing.overload +def dft(src: cv2.typing.MatLike, dst: cv2.typing.MatLike | None = ..., flags: int = ..., nonzeroRows: int = ...) -> cv2.typing.MatLike: ... +@_typing.overload +def dft(src: UMat, dst: UMat | None = ..., flags: int = ..., nonzeroRows: int = ...) -> UMat: ... + +@_typing.overload +def dilate(src: cv2.typing.MatLike, kernel: cv2.typing.MatLike, dst: cv2.typing.MatLike | None = ..., anchor: cv2.typing.Point = ..., iterations: int = ..., borderType: int = ..., borderValue: cv2.typing.Scalar = ...) -> cv2.typing.MatLike: ... +@_typing.overload +def dilate(src: UMat, kernel: UMat, dst: UMat | None = ..., anchor: cv2.typing.Point = ..., iterations: int = ..., borderType: int = ..., borderValue: cv2.typing.Scalar = ...) -> UMat: ... + +def displayOverlay(winname: str, text: str, delayms: int = ...) -> None: ... + +def displayStatusBar(winname: str, text: str, delayms: int = ...) -> None: ... + +@_typing.overload +def distanceTransform(src: cv2.typing.MatLike, distanceType: int, maskSize: int, dst: cv2.typing.MatLike | None = ..., dstType: int = ...) -> cv2.typing.MatLike: ... +@_typing.overload +def distanceTransform(src: UMat, distanceType: int, maskSize: int, dst: UMat | None = ..., dstType: int = ...) -> UMat: ... + +@_typing.overload +def distanceTransformWithLabels(src: cv2.typing.MatLike, distanceType: int, maskSize: int, dst: cv2.typing.MatLike | None = ..., labels: cv2.typing.MatLike | None = ..., labelType: int = ...) -> tuple[cv2.typing.MatLike, cv2.typing.MatLike]: ... +@_typing.overload +def distanceTransformWithLabels(src: UMat, distanceType: int, maskSize: int, dst: UMat | None = ..., labels: UMat | None = ..., labelType: int = ...) -> tuple[UMat, UMat]: ... + +@_typing.overload +def divSpectrums(a: cv2.typing.MatLike, b: cv2.typing.MatLike, flags: int, c: cv2.typing.MatLike | None = ..., conjB: bool = ...) -> cv2.typing.MatLike: ... +@_typing.overload +def divSpectrums(a: UMat, b: UMat, flags: int, c: UMat | None = ..., conjB: bool = ...) -> UMat: ... + +@_typing.overload +def divide(src1: cv2.typing.MatLike, src2: cv2.typing.MatLike, dst: cv2.typing.MatLike | None = ..., scale: float = ..., dtype: int = ...) -> cv2.typing.MatLike: ... +@_typing.overload +def divide(src1: UMat, src2: UMat, dst: UMat | None = ..., scale: float = ..., dtype: int = ...) -> UMat: ... +@_typing.overload +def divide(scale: float, src2: cv2.typing.MatLike, dst: cv2.typing.MatLike | None = ..., dtype: int = ...) -> cv2.typing.MatLike: ... +@_typing.overload +def divide(scale: float, src2: UMat, dst: UMat | None = ..., dtype: int = ...) -> UMat: ... + +@_typing.overload +def drawChessboardCorners(image: cv2.typing.MatLike, patternSize: cv2.typing.Size, corners: cv2.typing.MatLike, patternWasFound: bool) -> cv2.typing.MatLike: ... +@_typing.overload +def drawChessboardCorners(image: UMat, patternSize: cv2.typing.Size, corners: UMat, patternWasFound: bool) -> UMat: ... + +@_typing.overload +def drawContours(image: cv2.typing.MatLike, contours: _typing.Sequence[cv2.typing.MatLike], contourIdx: int, color: cv2.typing.Scalar, thickness: int = ..., lineType: int = ..., hierarchy: cv2.typing.MatLike | None = ..., maxLevel: int = ..., offset: cv2.typing.Point = ...) -> cv2.typing.MatLike: ... +@_typing.overload +def drawContours(image: UMat, contours: _typing.Sequence[UMat], contourIdx: int, color: cv2.typing.Scalar, thickness: int = ..., lineType: int = ..., hierarchy: UMat | None = ..., maxLevel: int = ..., offset: cv2.typing.Point = ...) -> UMat: ... + +@_typing.overload +def drawFrameAxes(image: cv2.typing.MatLike, cameraMatrix: cv2.typing.MatLike, distCoeffs: cv2.typing.MatLike, rvec: cv2.typing.MatLike, tvec: cv2.typing.MatLike, length: float, thickness: int = ...) -> cv2.typing.MatLike: ... +@_typing.overload +def drawFrameAxes(image: UMat, cameraMatrix: UMat, distCoeffs: UMat, rvec: UMat, tvec: UMat, length: float, thickness: int = ...) -> UMat: ... + +@_typing.overload +def drawKeypoints(image: cv2.typing.MatLike, keypoints: _typing.Sequence[KeyPoint], outImage: cv2.typing.MatLike, color: cv2.typing.Scalar = ..., flags: DrawMatchesFlags = ...) -> cv2.typing.MatLike: ... +@_typing.overload +def drawKeypoints(image: UMat, keypoints: _typing.Sequence[KeyPoint], outImage: UMat, color: cv2.typing.Scalar = ..., flags: DrawMatchesFlags = ...) -> UMat: ... + +@_typing.overload +def drawMarker(img: cv2.typing.MatLike, position: cv2.typing.Point, color: cv2.typing.Scalar, markerType: int = ..., markerSize: int = ..., thickness: int = ..., line_type: int = ...) -> cv2.typing.MatLike: ... +@_typing.overload +def drawMarker(img: UMat, position: cv2.typing.Point, color: cv2.typing.Scalar, markerType: int = ..., markerSize: int = ..., thickness: int = ..., line_type: int = ...) -> UMat: ... + +@_typing.overload +def drawMatches(img1: cv2.typing.MatLike, keypoints1: _typing.Sequence[KeyPoint], img2: cv2.typing.MatLike, keypoints2: _typing.Sequence[KeyPoint], matches1to2: _typing.Sequence[DMatch], outImg: cv2.typing.MatLike, matchColor: cv2.typing.Scalar = ..., singlePointColor: cv2.typing.Scalar = ..., matchesMask: _typing.Sequence[str] = ..., flags: DrawMatchesFlags = ...) -> cv2.typing.MatLike: ... +@_typing.overload +def drawMatches(img1: UMat, keypoints1: _typing.Sequence[KeyPoint], img2: UMat, keypoints2: _typing.Sequence[KeyPoint], matches1to2: _typing.Sequence[DMatch], outImg: UMat, matchColor: cv2.typing.Scalar = ..., singlePointColor: cv2.typing.Scalar = ..., matchesMask: _typing.Sequence[str] = ..., flags: DrawMatchesFlags = ...) -> UMat: ... +@_typing.overload +def drawMatches(img1: cv2.typing.MatLike, keypoints1: _typing.Sequence[KeyPoint], img2: cv2.typing.MatLike, keypoints2: _typing.Sequence[KeyPoint], matches1to2: _typing.Sequence[DMatch], outImg: cv2.typing.MatLike, matchesThickness: int, matchColor: cv2.typing.Scalar = ..., singlePointColor: cv2.typing.Scalar = ..., matchesMask: _typing.Sequence[str] = ..., flags: DrawMatchesFlags = ...) -> cv2.typing.MatLike: ... +@_typing.overload +def drawMatches(img1: UMat, keypoints1: _typing.Sequence[KeyPoint], img2: UMat, keypoints2: _typing.Sequence[KeyPoint], matches1to2: _typing.Sequence[DMatch], outImg: UMat, matchesThickness: int, matchColor: cv2.typing.Scalar = ..., singlePointColor: cv2.typing.Scalar = ..., matchesMask: _typing.Sequence[str] = ..., flags: DrawMatchesFlags = ...) -> UMat: ... + +@_typing.overload +def drawMatchesKnn(img1: cv2.typing.MatLike, keypoints1: _typing.Sequence[KeyPoint], img2: cv2.typing.MatLike, keypoints2: _typing.Sequence[KeyPoint], matches1to2: _typing.Sequence[_typing.Sequence[DMatch]], outImg: cv2.typing.MatLike, matchColor: cv2.typing.Scalar = ..., singlePointColor: cv2.typing.Scalar = ..., matchesMask: _typing.Sequence[_typing.Sequence[str]] = ..., flags: DrawMatchesFlags = ...) -> cv2.typing.MatLike: ... +@_typing.overload +def drawMatchesKnn(img1: UMat, keypoints1: _typing.Sequence[KeyPoint], img2: UMat, keypoints2: _typing.Sequence[KeyPoint], matches1to2: _typing.Sequence[_typing.Sequence[DMatch]], outImg: UMat, matchColor: cv2.typing.Scalar = ..., singlePointColor: cv2.typing.Scalar = ..., matchesMask: _typing.Sequence[_typing.Sequence[str]] = ..., flags: DrawMatchesFlags = ...) -> UMat: ... + +@_typing.overload +def edgePreservingFilter(src: cv2.typing.MatLike, dst: cv2.typing.MatLike | None = ..., flags: int = ..., sigma_s: float = ..., sigma_r: float = ...) -> cv2.typing.MatLike: ... +@_typing.overload +def edgePreservingFilter(src: UMat, dst: UMat | None = ..., flags: int = ..., sigma_s: float = ..., sigma_r: float = ...) -> UMat: ... + +@_typing.overload +def eigen(src: cv2.typing.MatLike, eigenvalues: cv2.typing.MatLike | None = ..., eigenvectors: cv2.typing.MatLike | None = ...) -> tuple[bool, cv2.typing.MatLike, cv2.typing.MatLike]: ... +@_typing.overload +def eigen(src: UMat, eigenvalues: UMat | None = ..., eigenvectors: UMat | None = ...) -> tuple[bool, UMat, UMat]: ... + +@_typing.overload +def eigenNonSymmetric(src: cv2.typing.MatLike, eigenvalues: cv2.typing.MatLike | None = ..., eigenvectors: cv2.typing.MatLike | None = ...) -> tuple[cv2.typing.MatLike, cv2.typing.MatLike]: ... +@_typing.overload +def eigenNonSymmetric(src: UMat, eigenvalues: UMat | None = ..., eigenvectors: UMat | None = ...) -> tuple[UMat, UMat]: ... + +@_typing.overload +def ellipse(img: cv2.typing.MatLike, center: cv2.typing.Point, axes: cv2.typing.Size, angle: float, startAngle: float, endAngle: float, color: cv2.typing.Scalar, thickness: int = ..., lineType: int = ..., shift: int = ...) -> cv2.typing.MatLike: ... +@_typing.overload +def ellipse(img: UMat, center: cv2.typing.Point, axes: cv2.typing.Size, angle: float, startAngle: float, endAngle: float, color: cv2.typing.Scalar, thickness: int = ..., lineType: int = ..., shift: int = ...) -> UMat: ... +@_typing.overload +def ellipse(img: cv2.typing.MatLike, box: cv2.typing.RotatedRect, color: cv2.typing.Scalar, thickness: int = ..., lineType: int = ...) -> cv2.typing.MatLike: ... +@_typing.overload +def ellipse(img: UMat, box: cv2.typing.RotatedRect, color: cv2.typing.Scalar, thickness: int = ..., lineType: int = ...) -> UMat: ... + +def ellipse2Poly(center: cv2.typing.Point, axes: cv2.typing.Size, angle: int, arcStart: int, arcEnd: int, delta: int) -> _typing.Sequence[cv2.typing.Point]: ... + +def empty_array_desc() -> GArrayDesc: ... + +def empty_gopaque_desc() -> GOpaqueDesc: ... + +def empty_scalar_desc() -> GScalarDesc: ... + +@_typing.overload +def equalizeHist(src: cv2.typing.MatLike, dst: cv2.typing.MatLike | None = ...) -> cv2.typing.MatLike: ... +@_typing.overload +def equalizeHist(src: UMat, dst: UMat | None = ...) -> UMat: ... + +@_typing.overload +def erode(src: cv2.typing.MatLike, kernel: cv2.typing.MatLike, dst: cv2.typing.MatLike | None = ..., anchor: cv2.typing.Point = ..., iterations: int = ..., borderType: int = ..., borderValue: cv2.typing.Scalar = ...) -> cv2.typing.MatLike: ... +@_typing.overload +def erode(src: UMat, kernel: UMat, dst: UMat | None = ..., anchor: cv2.typing.Point = ..., iterations: int = ..., borderType: int = ..., borderValue: cv2.typing.Scalar = ...) -> UMat: ... + +@_typing.overload +def estimateAffine2D(from_: cv2.typing.MatLike, to: cv2.typing.MatLike, inliers: cv2.typing.MatLike | None = ..., method: int = ..., ransacReprojThreshold: float = ..., maxIters: int = ..., confidence: float = ..., refineIters: int = ...) -> tuple[cv2.typing.MatLike, cv2.typing.MatLike]: ... +@_typing.overload +def estimateAffine2D(from_: UMat, to: UMat, inliers: UMat | None = ..., method: int = ..., ransacReprojThreshold: float = ..., maxIters: int = ..., confidence: float = ..., refineIters: int = ...) -> tuple[cv2.typing.MatLike, UMat]: ... +@_typing.overload +def estimateAffine2D(pts1: cv2.typing.MatLike, pts2: cv2.typing.MatLike, params: UsacParams, inliers: cv2.typing.MatLike | None = ...) -> tuple[cv2.typing.MatLike, cv2.typing.MatLike]: ... +@_typing.overload +def estimateAffine2D(pts1: UMat, pts2: UMat, params: UsacParams, inliers: UMat | None = ...) -> tuple[cv2.typing.MatLike, UMat]: ... + +@_typing.overload +def estimateAffine3D(src: cv2.typing.MatLike, dst: cv2.typing.MatLike, out: cv2.typing.MatLike | None = ..., inliers: cv2.typing.MatLike | None = ..., ransacThreshold: float = ..., confidence: float = ...) -> tuple[int, cv2.typing.MatLike, cv2.typing.MatLike]: ... +@_typing.overload +def estimateAffine3D(src: UMat, dst: UMat, out: UMat | None = ..., inliers: UMat | None = ..., ransacThreshold: float = ..., confidence: float = ...) -> tuple[int, UMat, UMat]: ... +@_typing.overload +def estimateAffine3D(src: cv2.typing.MatLike, dst: cv2.typing.MatLike, force_rotation: bool = ...) -> tuple[cv2.typing.MatLike, float]: ... +@_typing.overload +def estimateAffine3D(src: UMat, dst: UMat, force_rotation: bool = ...) -> tuple[cv2.typing.MatLike, float]: ... + +@_typing.overload +def estimateAffinePartial2D(from_: cv2.typing.MatLike, to: cv2.typing.MatLike, inliers: cv2.typing.MatLike | None = ..., method: int = ..., ransacReprojThreshold: float = ..., maxIters: int = ..., confidence: float = ..., refineIters: int = ...) -> tuple[cv2.typing.MatLike, cv2.typing.MatLike]: ... +@_typing.overload +def estimateAffinePartial2D(from_: UMat, to: UMat, inliers: UMat | None = ..., method: int = ..., ransacReprojThreshold: float = ..., maxIters: int = ..., confidence: float = ..., refineIters: int = ...) -> tuple[cv2.typing.MatLike, UMat]: ... + +@_typing.overload +def estimateChessboardSharpness(image: cv2.typing.MatLike, patternSize: cv2.typing.Size, corners: cv2.typing.MatLike, rise_distance: float = ..., vertical: bool = ..., sharpness: cv2.typing.MatLike | None = ...) -> tuple[cv2.typing.Scalar, cv2.typing.MatLike]: ... +@_typing.overload +def estimateChessboardSharpness(image: UMat, patternSize: cv2.typing.Size, corners: UMat, rise_distance: float = ..., vertical: bool = ..., sharpness: UMat | None = ...) -> tuple[cv2.typing.Scalar, UMat]: ... + +@_typing.overload +def estimateTranslation3D(src: cv2.typing.MatLike, dst: cv2.typing.MatLike, out: cv2.typing.MatLike | None = ..., inliers: cv2.typing.MatLike | None = ..., ransacThreshold: float = ..., confidence: float = ...) -> tuple[int, cv2.typing.MatLike, cv2.typing.MatLike]: ... +@_typing.overload +def estimateTranslation3D(src: UMat, dst: UMat, out: UMat | None = ..., inliers: UMat | None = ..., ransacThreshold: float = ..., confidence: float = ...) -> tuple[int, UMat, UMat]: ... + +@_typing.overload +def exp(src: cv2.typing.MatLike, dst: cv2.typing.MatLike | None = ...) -> cv2.typing.MatLike: ... +@_typing.overload +def exp(src: UMat, dst: UMat | None = ...) -> UMat: ... + +@_typing.overload +def extractChannel(src: cv2.typing.MatLike, coi: int, dst: cv2.typing.MatLike | None = ...) -> cv2.typing.MatLike: ... +@_typing.overload +def extractChannel(src: UMat, coi: int, dst: UMat | None = ...) -> UMat: ... + +def fastAtan2(y: float, x: float) -> float: ... + +@_typing.overload +def fastNlMeansDenoising(src: cv2.typing.MatLike, dst: cv2.typing.MatLike | None = ..., h: float = ..., templateWindowSize: int = ..., searchWindowSize: int = ...) -> cv2.typing.MatLike: ... +@_typing.overload +def fastNlMeansDenoising(src: UMat, dst: UMat | None = ..., h: float = ..., templateWindowSize: int = ..., searchWindowSize: int = ...) -> UMat: ... +@_typing.overload +def fastNlMeansDenoising(src: cv2.typing.MatLike, h: _typing.Sequence[float], dst: cv2.typing.MatLike | None = ..., templateWindowSize: int = ..., searchWindowSize: int = ..., normType: int = ...) -> cv2.typing.MatLike: ... +@_typing.overload +def fastNlMeansDenoising(src: UMat, h: _typing.Sequence[float], dst: UMat | None = ..., templateWindowSize: int = ..., searchWindowSize: int = ..., normType: int = ...) -> UMat: ... + +@_typing.overload +def fastNlMeansDenoisingColored(src: cv2.typing.MatLike, dst: cv2.typing.MatLike | None = ..., h: float = ..., hColor: float = ..., templateWindowSize: int = ..., searchWindowSize: int = ...) -> cv2.typing.MatLike: ... +@_typing.overload +def fastNlMeansDenoisingColored(src: UMat, dst: UMat | None = ..., h: float = ..., hColor: float = ..., templateWindowSize: int = ..., searchWindowSize: int = ...) -> UMat: ... + +@_typing.overload +def fastNlMeansDenoisingColoredMulti(srcImgs: _typing.Sequence[cv2.typing.MatLike], imgToDenoiseIndex: int, temporalWindowSize: int, dst: cv2.typing.MatLike | None = ..., h: float = ..., hColor: float = ..., templateWindowSize: int = ..., searchWindowSize: int = ...) -> cv2.typing.MatLike: ... +@_typing.overload +def fastNlMeansDenoisingColoredMulti(srcImgs: _typing.Sequence[UMat], imgToDenoiseIndex: int, temporalWindowSize: int, dst: UMat | None = ..., h: float = ..., hColor: float = ..., templateWindowSize: int = ..., searchWindowSize: int = ...) -> UMat: ... + +@_typing.overload +def fastNlMeansDenoisingMulti(srcImgs: _typing.Sequence[cv2.typing.MatLike], imgToDenoiseIndex: int, temporalWindowSize: int, dst: cv2.typing.MatLike | None = ..., h: float = ..., templateWindowSize: int = ..., searchWindowSize: int = ...) -> cv2.typing.MatLike: ... +@_typing.overload +def fastNlMeansDenoisingMulti(srcImgs: _typing.Sequence[UMat], imgToDenoiseIndex: int, temporalWindowSize: int, dst: UMat | None = ..., h: float = ..., templateWindowSize: int = ..., searchWindowSize: int = ...) -> UMat: ... +@_typing.overload +def fastNlMeansDenoisingMulti(srcImgs: _typing.Sequence[cv2.typing.MatLike], imgToDenoiseIndex: int, temporalWindowSize: int, h: _typing.Sequence[float], dst: cv2.typing.MatLike | None = ..., templateWindowSize: int = ..., searchWindowSize: int = ..., normType: int = ...) -> cv2.typing.MatLike: ... +@_typing.overload +def fastNlMeansDenoisingMulti(srcImgs: _typing.Sequence[UMat], imgToDenoiseIndex: int, temporalWindowSize: int, h: _typing.Sequence[float], dst: UMat | None = ..., templateWindowSize: int = ..., searchWindowSize: int = ..., normType: int = ...) -> UMat: ... + +@_typing.overload +def fillConvexPoly(img: cv2.typing.MatLike, points: cv2.typing.MatLike, color: cv2.typing.Scalar, lineType: int = ..., shift: int = ...) -> cv2.typing.MatLike: ... +@_typing.overload +def fillConvexPoly(img: UMat, points: UMat, color: cv2.typing.Scalar, lineType: int = ..., shift: int = ...) -> UMat: ... + +@_typing.overload +def fillPoly(img: cv2.typing.MatLike, pts: _typing.Sequence[cv2.typing.MatLike], color: cv2.typing.Scalar, lineType: int = ..., shift: int = ..., offset: cv2.typing.Point = ...) -> cv2.typing.MatLike: ... +@_typing.overload +def fillPoly(img: UMat, pts: _typing.Sequence[UMat], color: cv2.typing.Scalar, lineType: int = ..., shift: int = ..., offset: cv2.typing.Point = ...) -> UMat: ... + +@_typing.overload +def filter2D(src: cv2.typing.MatLike, ddepth: int, kernel: cv2.typing.MatLike, dst: cv2.typing.MatLike | None = ..., anchor: cv2.typing.Point = ..., delta: float = ..., borderType: int = ...) -> cv2.typing.MatLike: ... +@_typing.overload +def filter2D(src: UMat, ddepth: int, kernel: UMat, dst: UMat | None = ..., anchor: cv2.typing.Point = ..., delta: float = ..., borderType: int = ...) -> UMat: ... + +@_typing.overload +def filterHomographyDecompByVisibleRefpoints(rotations: _typing.Sequence[cv2.typing.MatLike], normals: _typing.Sequence[cv2.typing.MatLike], beforePoints: cv2.typing.MatLike, afterPoints: cv2.typing.MatLike, possibleSolutions: cv2.typing.MatLike | None = ..., pointsMask: cv2.typing.MatLike | None = ...) -> cv2.typing.MatLike: ... +@_typing.overload +def filterHomographyDecompByVisibleRefpoints(rotations: _typing.Sequence[UMat], normals: _typing.Sequence[UMat], beforePoints: UMat, afterPoints: UMat, possibleSolutions: UMat | None = ..., pointsMask: UMat | None = ...) -> UMat: ... + +@_typing.overload +def filterSpeckles(img: cv2.typing.MatLike, newVal: float, maxSpeckleSize: int, maxDiff: float, buf: cv2.typing.MatLike | None = ...) -> tuple[cv2.typing.MatLike, cv2.typing.MatLike]: ... +@_typing.overload +def filterSpeckles(img: UMat, newVal: float, maxSpeckleSize: int, maxDiff: float, buf: UMat | None = ...) -> tuple[UMat, UMat]: ... + +@_typing.overload +def find4QuadCornerSubpix(img: cv2.typing.MatLike, corners: cv2.typing.MatLike, region_size: cv2.typing.Size) -> tuple[bool, cv2.typing.MatLike]: ... +@_typing.overload +def find4QuadCornerSubpix(img: UMat, corners: UMat, region_size: cv2.typing.Size) -> tuple[bool, UMat]: ... + +@_typing.overload +def findChessboardCorners(image: cv2.typing.MatLike, patternSize: cv2.typing.Size, corners: cv2.typing.MatLike | None = ..., flags: int = ...) -> tuple[bool, cv2.typing.MatLike]: ... +@_typing.overload +def findChessboardCorners(image: UMat, patternSize: cv2.typing.Size, corners: UMat | None = ..., flags: int = ...) -> tuple[bool, UMat]: ... + +@_typing.overload +def findChessboardCornersSB(image: cv2.typing.MatLike, patternSize: cv2.typing.Size, corners: cv2.typing.MatLike | None = ..., flags: int = ...) -> tuple[bool, cv2.typing.MatLike]: ... +@_typing.overload +def findChessboardCornersSB(image: UMat, patternSize: cv2.typing.Size, corners: UMat | None = ..., flags: int = ...) -> tuple[bool, UMat]: ... + +@_typing.overload +def findChessboardCornersSBWithMeta(image: cv2.typing.MatLike, patternSize: cv2.typing.Size, flags: int, corners: cv2.typing.MatLike | None = ..., meta: cv2.typing.MatLike | None = ...) -> tuple[bool, cv2.typing.MatLike, cv2.typing.MatLike]: ... +@_typing.overload +def findChessboardCornersSBWithMeta(image: UMat, patternSize: cv2.typing.Size, flags: int, corners: UMat | None = ..., meta: UMat | None = ...) -> tuple[bool, UMat, UMat]: ... + +@_typing.overload +def findCirclesGrid(image: cv2.typing.MatLike, patternSize: cv2.typing.Size, flags: int, blobDetector: cv2.typing.FeatureDetector, parameters: CirclesGridFinderParameters, centers: cv2.typing.MatLike | None = ...) -> tuple[bool, cv2.typing.MatLike]: ... +@_typing.overload +def findCirclesGrid(image: UMat, patternSize: cv2.typing.Size, flags: int, blobDetector: cv2.typing.FeatureDetector, parameters: CirclesGridFinderParameters, centers: UMat | None = ...) -> tuple[bool, UMat]: ... +@_typing.overload +def findCirclesGrid(image: cv2.typing.MatLike, patternSize: cv2.typing.Size, centers: cv2.typing.MatLike | None = ..., flags: int = ..., blobDetector: cv2.typing.FeatureDetector = ...) -> tuple[bool, cv2.typing.MatLike]: ... +@_typing.overload +def findCirclesGrid(image: UMat, patternSize: cv2.typing.Size, centers: UMat | None = ..., flags: int = ..., blobDetector: cv2.typing.FeatureDetector = ...) -> tuple[bool, UMat]: ... + +@_typing.overload +def findContours(image: cv2.typing.MatLike, mode: int, method: int, contours: _typing.Sequence[cv2.typing.MatLike] | None = ..., hierarchy: cv2.typing.MatLike | None = ..., offset: cv2.typing.Point = ...) -> tuple[_typing.Sequence[cv2.typing.MatLike], cv2.typing.MatLike]: ... +@_typing.overload +def findContours(image: UMat, mode: int, method: int, contours: _typing.Sequence[UMat] | None = ..., hierarchy: UMat | None = ..., offset: cv2.typing.Point = ...) -> tuple[_typing.Sequence[UMat], UMat]: ... + +@_typing.overload +def findContoursLinkRuns(image: cv2.typing.MatLike, contours: _typing.Sequence[cv2.typing.MatLike] | None = ..., hierarchy: cv2.typing.MatLike | None = ...) -> tuple[_typing.Sequence[cv2.typing.MatLike], cv2.typing.MatLike]: ... +@_typing.overload +def findContoursLinkRuns(image: UMat, contours: _typing.Sequence[UMat] | None = ..., hierarchy: UMat | None = ...) -> tuple[_typing.Sequence[UMat], UMat]: ... +@_typing.overload +def findContoursLinkRuns(image: cv2.typing.MatLike, contours: _typing.Sequence[cv2.typing.MatLike] | None = ...) -> _typing.Sequence[cv2.typing.MatLike]: ... +@_typing.overload +def findContoursLinkRuns(image: UMat, contours: _typing.Sequence[UMat] | None = ...) -> _typing.Sequence[UMat]: ... + +@_typing.overload +def findEssentialMat(points1: cv2.typing.MatLike, points2: cv2.typing.MatLike, cameraMatrix: cv2.typing.MatLike, method: int = ..., prob: float = ..., threshold: float = ..., maxIters: int = ..., mask: cv2.typing.MatLike | None = ...) -> tuple[cv2.typing.MatLike, cv2.typing.MatLike]: ... +@_typing.overload +def findEssentialMat(points1: UMat, points2: UMat, cameraMatrix: UMat, method: int = ..., prob: float = ..., threshold: float = ..., maxIters: int = ..., mask: UMat | None = ...) -> tuple[cv2.typing.MatLike, UMat]: ... +@_typing.overload +def findEssentialMat(points1: cv2.typing.MatLike, points2: cv2.typing.MatLike, focal: float = ..., pp: cv2.typing.Point2d = ..., method: int = ..., prob: float = ..., threshold: float = ..., maxIters: int = ..., mask: cv2.typing.MatLike | None = ...) -> tuple[cv2.typing.MatLike, cv2.typing.MatLike]: ... +@_typing.overload +def findEssentialMat(points1: UMat, points2: UMat, focal: float = ..., pp: cv2.typing.Point2d = ..., method: int = ..., prob: float = ..., threshold: float = ..., maxIters: int = ..., mask: UMat | None = ...) -> tuple[cv2.typing.MatLike, UMat]: ... +@_typing.overload +def findEssentialMat(points1: cv2.typing.MatLike, points2: cv2.typing.MatLike, cameraMatrix1: cv2.typing.MatLike, distCoeffs1: cv2.typing.MatLike, cameraMatrix2: cv2.typing.MatLike, distCoeffs2: cv2.typing.MatLike, method: int = ..., prob: float = ..., threshold: float = ..., mask: cv2.typing.MatLike | None = ...) -> tuple[cv2.typing.MatLike, cv2.typing.MatLike]: ... +@_typing.overload +def findEssentialMat(points1: UMat, points2: UMat, cameraMatrix1: UMat, distCoeffs1: UMat, cameraMatrix2: UMat, distCoeffs2: UMat, method: int = ..., prob: float = ..., threshold: float = ..., mask: UMat | None = ...) -> tuple[cv2.typing.MatLike, UMat]: ... +@_typing.overload +def findEssentialMat(points1: cv2.typing.MatLike, points2: cv2.typing.MatLike, cameraMatrix1: cv2.typing.MatLike, cameraMatrix2: cv2.typing.MatLike, dist_coeff1: cv2.typing.MatLike, dist_coeff2: cv2.typing.MatLike, params: UsacParams, mask: cv2.typing.MatLike | None = ...) -> tuple[cv2.typing.MatLike, cv2.typing.MatLike]: ... +@_typing.overload +def findEssentialMat(points1: UMat, points2: UMat, cameraMatrix1: UMat, cameraMatrix2: UMat, dist_coeff1: UMat, dist_coeff2: UMat, params: UsacParams, mask: UMat | None = ...) -> tuple[cv2.typing.MatLike, UMat]: ... + +@_typing.overload +def findFundamentalMat(points1: cv2.typing.MatLike, points2: cv2.typing.MatLike, method: int, ransacReprojThreshold: float, confidence: float, maxIters: int, mask: cv2.typing.MatLike | None = ...) -> tuple[cv2.typing.MatLike, cv2.typing.MatLike]: ... +@_typing.overload +def findFundamentalMat(points1: UMat, points2: UMat, method: int, ransacReprojThreshold: float, confidence: float, maxIters: int, mask: UMat | None = ...) -> tuple[cv2.typing.MatLike, UMat]: ... +@_typing.overload +def findFundamentalMat(points1: cv2.typing.MatLike, points2: cv2.typing.MatLike, method: int = ..., ransacReprojThreshold: float = ..., confidence: float = ..., mask: cv2.typing.MatLike | None = ...) -> tuple[cv2.typing.MatLike, cv2.typing.MatLike]: ... +@_typing.overload +def findFundamentalMat(points1: UMat, points2: UMat, method: int = ..., ransacReprojThreshold: float = ..., confidence: float = ..., mask: UMat | None = ...) -> tuple[cv2.typing.MatLike, UMat]: ... +@_typing.overload +def findFundamentalMat(points1: cv2.typing.MatLike, points2: cv2.typing.MatLike, params: UsacParams, mask: cv2.typing.MatLike | None = ...) -> tuple[cv2.typing.MatLike, cv2.typing.MatLike]: ... +@_typing.overload +def findFundamentalMat(points1: UMat, points2: UMat, params: UsacParams, mask: UMat | None = ...) -> tuple[cv2.typing.MatLike, UMat]: ... + +@_typing.overload +def findHomography(srcPoints: cv2.typing.MatLike, dstPoints: cv2.typing.MatLike, method: int = ..., ransacReprojThreshold: float = ..., mask: cv2.typing.MatLike | None = ..., maxIters: int = ..., confidence: float = ...) -> tuple[cv2.typing.MatLike, cv2.typing.MatLike]: ... +@_typing.overload +def findHomography(srcPoints: UMat, dstPoints: UMat, method: int = ..., ransacReprojThreshold: float = ..., mask: UMat | None = ..., maxIters: int = ..., confidence: float = ...) -> tuple[cv2.typing.MatLike, UMat]: ... +@_typing.overload +def findHomography(srcPoints: cv2.typing.MatLike, dstPoints: cv2.typing.MatLike, params: UsacParams, mask: cv2.typing.MatLike | None = ...) -> tuple[cv2.typing.MatLike, cv2.typing.MatLike]: ... +@_typing.overload +def findHomography(srcPoints: UMat, dstPoints: UMat, params: UsacParams, mask: UMat | None = ...) -> tuple[cv2.typing.MatLike, UMat]: ... + +@_typing.overload +def findNonZero(src: cv2.typing.MatLike, idx: cv2.typing.MatLike | None = ...) -> cv2.typing.MatLike: ... +@_typing.overload +def findNonZero(src: UMat, idx: UMat | None = ...) -> UMat: ... + +@_typing.overload +def findTransformECC(templateImage: cv2.typing.MatLike, inputImage: cv2.typing.MatLike, warpMatrix: cv2.typing.MatLike, motionType: int, criteria: cv2.typing.TermCriteria, inputMask: cv2.typing.MatLike, gaussFiltSize: int) -> tuple[float, cv2.typing.MatLike]: ... +@_typing.overload +def findTransformECC(templateImage: UMat, inputImage: UMat, warpMatrix: UMat, motionType: int, criteria: cv2.typing.TermCriteria, inputMask: UMat, gaussFiltSize: int) -> tuple[float, UMat]: ... +@_typing.overload +def findTransformECC(templateImage: cv2.typing.MatLike, inputImage: cv2.typing.MatLike, warpMatrix: cv2.typing.MatLike, motionType: int = ..., criteria: cv2.typing.TermCriteria = ..., inputMask: cv2.typing.MatLike | None = ...) -> tuple[float, cv2.typing.MatLike]: ... +@_typing.overload +def findTransformECC(templateImage: UMat, inputImage: UMat, warpMatrix: UMat, motionType: int = ..., criteria: cv2.typing.TermCriteria = ..., inputMask: UMat | None = ...) -> tuple[float, UMat]: ... + +@_typing.overload +def fitEllipse(points: cv2.typing.MatLike) -> cv2.typing.RotatedRect: ... +@_typing.overload +def fitEllipse(points: UMat) -> cv2.typing.RotatedRect: ... + +@_typing.overload +def fitEllipseAMS(points: cv2.typing.MatLike) -> cv2.typing.RotatedRect: ... +@_typing.overload +def fitEllipseAMS(points: UMat) -> cv2.typing.RotatedRect: ... + +@_typing.overload +def fitEllipseDirect(points: cv2.typing.MatLike) -> cv2.typing.RotatedRect: ... +@_typing.overload +def fitEllipseDirect(points: UMat) -> cv2.typing.RotatedRect: ... + +@_typing.overload +def fitLine(points: cv2.typing.MatLike, distType: int, param: float, reps: float, aeps: float, line: cv2.typing.MatLike | None = ...) -> cv2.typing.MatLike: ... +@_typing.overload +def fitLine(points: UMat, distType: int, param: float, reps: float, aeps: float, line: UMat | None = ...) -> UMat: ... + +@_typing.overload +def flip(src: cv2.typing.MatLike, flipCode: int, dst: cv2.typing.MatLike | None = ...) -> cv2.typing.MatLike: ... +@_typing.overload +def flip(src: UMat, flipCode: int, dst: UMat | None = ...) -> UMat: ... + +@_typing.overload +def flipND(src: cv2.typing.MatLike, axis: int, dst: cv2.typing.MatLike | None = ...) -> cv2.typing.MatLike: ... +@_typing.overload +def flipND(src: UMat, axis: int, dst: UMat | None = ...) -> UMat: ... + +@_typing.overload +def floodFill(image: cv2.typing.MatLike, mask: cv2.typing.MatLike, seedPoint: cv2.typing.Point, newVal: cv2.typing.Scalar, loDiff: cv2.typing.Scalar = ..., upDiff: cv2.typing.Scalar = ..., flags: int = ...) -> tuple[int, cv2.typing.MatLike, cv2.typing.MatLike, cv2.typing.Rect]: ... +@_typing.overload +def floodFill(image: UMat, mask: UMat, seedPoint: cv2.typing.Point, newVal: cv2.typing.Scalar, loDiff: cv2.typing.Scalar = ..., upDiff: cv2.typing.Scalar = ..., flags: int = ...) -> tuple[int, UMat, UMat, cv2.typing.Rect]: ... + +@_typing.overload +def gemm(src1: cv2.typing.MatLike, src2: cv2.typing.MatLike, alpha: float, src3: cv2.typing.MatLike, beta: float, dst: cv2.typing.MatLike | None = ..., flags: int = ...) -> cv2.typing.MatLike: ... +@_typing.overload +def gemm(src1: UMat, src2: UMat, alpha: float, src3: UMat, beta: float, dst: UMat | None = ..., flags: int = ...) -> UMat: ... + +@_typing.overload +def getAffineTransform(src: cv2.typing.MatLike, dst: cv2.typing.MatLike) -> cv2.typing.MatLike: ... +@_typing.overload +def getAffineTransform(src: UMat, dst: UMat) -> cv2.typing.MatLike: ... + +def getBuildInformation() -> str: ... + +def getCPUFeaturesLine() -> str: ... + +def getCPUTickCount() -> int: ... + +@_typing.overload +def getDefaultNewCameraMatrix(cameraMatrix: cv2.typing.MatLike, imgsize: cv2.typing.Size = ..., centerPrincipalPoint: bool = ...) -> cv2.typing.MatLike: ... +@_typing.overload +def getDefaultNewCameraMatrix(cameraMatrix: UMat, imgsize: cv2.typing.Size = ..., centerPrincipalPoint: bool = ...) -> cv2.typing.MatLike: ... + +@_typing.overload +def getDerivKernels(dx: int, dy: int, ksize: int, kx: cv2.typing.MatLike | None = ..., ky: cv2.typing.MatLike | None = ..., normalize: bool = ..., ktype: int = ...) -> tuple[cv2.typing.MatLike, cv2.typing.MatLike]: ... +@_typing.overload +def getDerivKernels(dx: int, dy: int, ksize: int, kx: UMat | None = ..., ky: UMat | None = ..., normalize: bool = ..., ktype: int = ...) -> tuple[UMat, UMat]: ... + +def getFontScaleFromHeight(fontFace: int, pixelHeight: int, thickness: int = ...) -> float: ... + +def getGaborKernel(ksize: cv2.typing.Size, sigma: float, theta: float, lambd: float, gamma: float, psi: float = ..., ktype: int = ...) -> cv2.typing.MatLike: ... + +def getGaussianKernel(ksize: int, sigma: float, ktype: int = ...) -> cv2.typing.MatLike: ... + +def getHardwareFeatureName(feature: int) -> str: ... + +def getLogLevel() -> int: ... + +def getNumThreads() -> int: ... + +def getNumberOfCPUs() -> int: ... + +def getOptimalDFTSize(vecsize: int) -> int: ... + +@_typing.overload +def getOptimalNewCameraMatrix(cameraMatrix: cv2.typing.MatLike, distCoeffs: cv2.typing.MatLike, imageSize: cv2.typing.Size, alpha: float, newImgSize: cv2.typing.Size = ..., centerPrincipalPoint: bool = ...) -> tuple[cv2.typing.MatLike, cv2.typing.Rect]: ... +@_typing.overload +def getOptimalNewCameraMatrix(cameraMatrix: UMat, distCoeffs: UMat, imageSize: cv2.typing.Size, alpha: float, newImgSize: cv2.typing.Size = ..., centerPrincipalPoint: bool = ...) -> tuple[cv2.typing.MatLike, cv2.typing.Rect]: ... + +@_typing.overload +def getPerspectiveTransform(src: cv2.typing.MatLike, dst: cv2.typing.MatLike, solveMethod: int = ...) -> cv2.typing.MatLike: ... +@_typing.overload +def getPerspectiveTransform(src: UMat, dst: UMat, solveMethod: int = ...) -> cv2.typing.MatLike: ... + +@_typing.overload +def getRectSubPix(image: cv2.typing.MatLike, patchSize: cv2.typing.Size, center: cv2.typing.Point2f, patch: cv2.typing.MatLike | None = ..., patchType: int = ...) -> cv2.typing.MatLike: ... +@_typing.overload +def getRectSubPix(image: UMat, patchSize: cv2.typing.Size, center: cv2.typing.Point2f, patch: UMat | None = ..., patchType: int = ...) -> UMat: ... + +def getRotationMatrix2D(center: cv2.typing.Point2f, angle: float, scale: float) -> cv2.typing.MatLike: ... + +def getStructuringElement(shape: int, ksize: cv2.typing.Size, anchor: cv2.typing.Point = ...) -> cv2.typing.MatLike: ... + +def getTextSize(text: str, fontFace: int, fontScale: float, thickness: int) -> tuple[cv2.typing.Size, int]: ... + +def getThreadNum() -> int: ... + +def getTickCount() -> int: ... + +def getTickFrequency() -> float: ... + +def getTrackbarPos(trackbarname: str, winname: str) -> int: ... + +def getValidDisparityROI(roi1: cv2.typing.Rect, roi2: cv2.typing.Rect, minDisparity: int, numberOfDisparities: int, blockSize: int) -> cv2.typing.Rect: ... + +def getVersionMajor() -> int: ... + +def getVersionMinor() -> int: ... + +def getVersionRevision() -> int: ... + +def getVersionString() -> str: ... + +def getWindowImageRect(winname: str) -> cv2.typing.Rect: ... + +def getWindowProperty(winname: str, prop_id: int) -> float: ... + +@_typing.overload +def goodFeaturesToTrack(image: cv2.typing.MatLike, maxCorners: int, qualityLevel: float, minDistance: float, corners: cv2.typing.MatLike | None = ..., mask: cv2.typing.MatLike | None = ..., blockSize: int = ..., useHarrisDetector: bool = ..., k: float = ...) -> cv2.typing.MatLike: ... +@_typing.overload +def goodFeaturesToTrack(image: UMat, maxCorners: int, qualityLevel: float, minDistance: float, corners: UMat | None = ..., mask: UMat | None = ..., blockSize: int = ..., useHarrisDetector: bool = ..., k: float = ...) -> UMat: ... +@_typing.overload +def goodFeaturesToTrack(image: cv2.typing.MatLike, maxCorners: int, qualityLevel: float, minDistance: float, mask: cv2.typing.MatLike, blockSize: int, gradientSize: int, corners: cv2.typing.MatLike | None = ..., useHarrisDetector: bool = ..., k: float = ...) -> cv2.typing.MatLike: ... +@_typing.overload +def goodFeaturesToTrack(image: UMat, maxCorners: int, qualityLevel: float, minDistance: float, mask: UMat, blockSize: int, gradientSize: int, corners: UMat | None = ..., useHarrisDetector: bool = ..., k: float = ...) -> UMat: ... + +@_typing.overload +def goodFeaturesToTrackWithQuality(image: cv2.typing.MatLike, maxCorners: int, qualityLevel: float, minDistance: float, mask: cv2.typing.MatLike, corners: cv2.typing.MatLike | None = ..., cornersQuality: cv2.typing.MatLike | None = ..., blockSize: int = ..., gradientSize: int = ..., useHarrisDetector: bool = ..., k: float = ...) -> tuple[cv2.typing.MatLike, cv2.typing.MatLike]: ... +@_typing.overload +def goodFeaturesToTrackWithQuality(image: UMat, maxCorners: int, qualityLevel: float, minDistance: float, mask: UMat, corners: UMat | None = ..., cornersQuality: UMat | None = ..., blockSize: int = ..., gradientSize: int = ..., useHarrisDetector: bool = ..., k: float = ...) -> tuple[UMat, UMat]: ... + +@_typing.overload +def grabCut(img: cv2.typing.MatLike, mask: cv2.typing.MatLike, rect: cv2.typing.Rect, bgdModel: cv2.typing.MatLike, fgdModel: cv2.typing.MatLike, iterCount: int, mode: int = ...) -> tuple[cv2.typing.MatLike, cv2.typing.MatLike, cv2.typing.MatLike]: ... +@_typing.overload +def grabCut(img: UMat, mask: UMat, rect: cv2.typing.Rect, bgdModel: UMat, fgdModel: UMat, iterCount: int, mode: int = ...) -> tuple[UMat, UMat, UMat]: ... + +def groupRectangles(rectList: _typing.Sequence[cv2.typing.Rect], groupThreshold: int, eps: float = ...) -> tuple[_typing.Sequence[cv2.typing.Rect], _typing.Sequence[int]]: ... + +@_typing.overload +def hasNonZero(src: cv2.typing.MatLike) -> bool: ... +@_typing.overload +def hasNonZero(src: UMat) -> bool: ... + +def haveImageReader(filename: str) -> bool: ... + +def haveImageWriter(filename: str) -> bool: ... + +def haveOpenVX() -> bool: ... + +@_typing.overload +def hconcat(src: _typing.Sequence[cv2.typing.MatLike], dst: cv2.typing.MatLike | None = ...) -> cv2.typing.MatLike: ... +@_typing.overload +def hconcat(src: _typing.Sequence[UMat], dst: UMat | None = ...) -> UMat: ... + +@_typing.overload +def idct(src: cv2.typing.MatLike, dst: cv2.typing.MatLike | None = ..., flags: int = ...) -> cv2.typing.MatLike: ... +@_typing.overload +def idct(src: UMat, dst: UMat | None = ..., flags: int = ...) -> UMat: ... + +@_typing.overload +def idft(src: cv2.typing.MatLike, dst: cv2.typing.MatLike | None = ..., flags: int = ..., nonzeroRows: int = ...) -> cv2.typing.MatLike: ... +@_typing.overload +def idft(src: UMat, dst: UMat | None = ..., flags: int = ..., nonzeroRows: int = ...) -> UMat: ... + +@_typing.overload +def illuminationChange(src: cv2.typing.MatLike, mask: cv2.typing.MatLike, dst: cv2.typing.MatLike | None = ..., alpha: float = ..., beta: float = ...) -> cv2.typing.MatLike: ... +@_typing.overload +def illuminationChange(src: UMat, mask: UMat, dst: UMat | None = ..., alpha: float = ..., beta: float = ...) -> UMat: ... + +def imcount(filename: str, flags: int = ...) -> int: ... + +@_typing.overload +def imdecode(buf: cv2.typing.MatLike, flags: int) -> cv2.typing.MatLike: ... +@_typing.overload +def imdecode(buf: UMat, flags: int) -> cv2.typing.MatLike: ... + +@_typing.overload +def imdecodemulti(buf: cv2.typing.MatLike, flags: int, mats: _typing.Sequence[cv2.typing.MatLike] | None = ..., range: cv2.typing.Range = ...) -> tuple[bool, _typing.Sequence[cv2.typing.MatLike]]: ... +@_typing.overload +def imdecodemulti(buf: UMat, flags: int, mats: _typing.Sequence[cv2.typing.MatLike] | None = ..., range: cv2.typing.Range = ...) -> tuple[bool, _typing.Sequence[cv2.typing.MatLike]]: ... + +@_typing.overload +def imencode(ext: str, img: cv2.typing.MatLike, params: _typing.Sequence[int] = ...) -> tuple[bool, numpy.ndarray[_typing.Any, numpy.dtype[numpy.uint8]]]: ... +@_typing.overload +def imencode(ext: str, img: UMat, params: _typing.Sequence[int] = ...) -> tuple[bool, numpy.ndarray[_typing.Any, numpy.dtype[numpy.uint8]]]: ... + +@_typing.overload +def imread(filename: str, flags: int = ...) -> cv2.typing.MatLike: ... +@_typing.overload +def imread(filename: str, dst: cv2.typing.MatLike | None = ..., flags: int = ...) -> cv2.typing.MatLike: ... +@_typing.overload +def imread(filename: str, dst: UMat | None = ..., flags: int = ...) -> UMat: ... + +@_typing.overload +def imreadmulti(filename: str, mats: _typing.Sequence[cv2.typing.MatLike] | None = ..., flags: int = ...) -> tuple[bool, _typing.Sequence[cv2.typing.MatLike]]: ... +@_typing.overload +def imreadmulti(filename: str, start: int, count: int, mats: _typing.Sequence[cv2.typing.MatLike] | None = ..., flags: int = ...) -> tuple[bool, _typing.Sequence[cv2.typing.MatLike]]: ... + +@_typing.overload +def imshow(winname: str, mat: cv2.typing.MatLike) -> None: ... +@_typing.overload +def imshow(winname: str, mat: cv2.cuda.GpuMat) -> None: ... +@_typing.overload +def imshow(winname: str, mat: UMat) -> None: ... + +@_typing.overload +def imwrite(filename: str, img: cv2.typing.MatLike, params: _typing.Sequence[int] = ...) -> bool: ... +@_typing.overload +def imwrite(filename: str, img: UMat, params: _typing.Sequence[int] = ...) -> bool: ... + +@_typing.overload +def imwritemulti(filename: str, img: _typing.Sequence[cv2.typing.MatLike], params: _typing.Sequence[int] = ...) -> bool: ... +@_typing.overload +def imwritemulti(filename: str, img: _typing.Sequence[UMat], params: _typing.Sequence[int] = ...) -> bool: ... + +@_typing.overload +def inRange(src: cv2.typing.MatLike, lowerb: cv2.typing.MatLike, upperb: cv2.typing.MatLike, dst: cv2.typing.MatLike | None = ...) -> cv2.typing.MatLike: ... +@_typing.overload +def inRange(src: UMat, lowerb: UMat, upperb: UMat, dst: UMat | None = ...) -> UMat: ... + +@_typing.overload +def initCameraMatrix2D(objectPoints: _typing.Sequence[cv2.typing.MatLike], imagePoints: _typing.Sequence[cv2.typing.MatLike], imageSize: cv2.typing.Size, aspectRatio: float = ...) -> cv2.typing.MatLike: ... +@_typing.overload +def initCameraMatrix2D(objectPoints: _typing.Sequence[UMat], imagePoints: _typing.Sequence[UMat], imageSize: cv2.typing.Size, aspectRatio: float = ...) -> cv2.typing.MatLike: ... + +@_typing.overload +def initInverseRectificationMap(cameraMatrix: cv2.typing.MatLike, distCoeffs: cv2.typing.MatLike, R: cv2.typing.MatLike, newCameraMatrix: cv2.typing.MatLike, size: cv2.typing.Size, m1type: int, map1: cv2.typing.MatLike | None = ..., map2: cv2.typing.MatLike | None = ...) -> tuple[cv2.typing.MatLike, cv2.typing.MatLike]: ... +@_typing.overload +def initInverseRectificationMap(cameraMatrix: UMat, distCoeffs: UMat, R: UMat, newCameraMatrix: UMat, size: cv2.typing.Size, m1type: int, map1: UMat | None = ..., map2: UMat | None = ...) -> tuple[UMat, UMat]: ... + +@_typing.overload +def initUndistortRectifyMap(cameraMatrix: cv2.typing.MatLike, distCoeffs: cv2.typing.MatLike, R: cv2.typing.MatLike, newCameraMatrix: cv2.typing.MatLike, size: cv2.typing.Size, m1type: int, map1: cv2.typing.MatLike | None = ..., map2: cv2.typing.MatLike | None = ...) -> tuple[cv2.typing.MatLike, cv2.typing.MatLike]: ... +@_typing.overload +def initUndistortRectifyMap(cameraMatrix: UMat, distCoeffs: UMat, R: UMat, newCameraMatrix: UMat, size: cv2.typing.Size, m1type: int, map1: UMat | None = ..., map2: UMat | None = ...) -> tuple[UMat, UMat]: ... + +@_typing.overload +def inpaint(src: cv2.typing.MatLike, inpaintMask: cv2.typing.MatLike, inpaintRadius: float, flags: int, dst: cv2.typing.MatLike | None = ...) -> cv2.typing.MatLike: ... +@_typing.overload +def inpaint(src: UMat, inpaintMask: UMat, inpaintRadius: float, flags: int, dst: UMat | None = ...) -> UMat: ... + +@_typing.overload +def insertChannel(src: cv2.typing.MatLike, dst: cv2.typing.MatLike, coi: int) -> cv2.typing.MatLike: ... +@_typing.overload +def insertChannel(src: UMat, dst: UMat, coi: int) -> UMat: ... + +@_typing.overload +def integral(src: cv2.typing.MatLike, sum: cv2.typing.MatLike | None = ..., sdepth: int = ...) -> cv2.typing.MatLike: ... +@_typing.overload +def integral(src: UMat, sum: UMat | None = ..., sdepth: int = ...) -> UMat: ... + +@_typing.overload +def integral2(src: cv2.typing.MatLike, sum: cv2.typing.MatLike | None = ..., sqsum: cv2.typing.MatLike | None = ..., sdepth: int = ..., sqdepth: int = ...) -> tuple[cv2.typing.MatLike, cv2.typing.MatLike]: ... +@_typing.overload +def integral2(src: UMat, sum: UMat | None = ..., sqsum: UMat | None = ..., sdepth: int = ..., sqdepth: int = ...) -> tuple[UMat, UMat]: ... + +@_typing.overload +def integral3(src: cv2.typing.MatLike, sum: cv2.typing.MatLike | None = ..., sqsum: cv2.typing.MatLike | None = ..., tilted: cv2.typing.MatLike | None = ..., sdepth: int = ..., sqdepth: int = ...) -> tuple[cv2.typing.MatLike, cv2.typing.MatLike, cv2.typing.MatLike]: ... +@_typing.overload +def integral3(src: UMat, sum: UMat | None = ..., sqsum: UMat | None = ..., tilted: UMat | None = ..., sdepth: int = ..., sqdepth: int = ...) -> tuple[UMat, UMat, UMat]: ... + +@_typing.overload +def intersectConvexConvex(p1: cv2.typing.MatLike, p2: cv2.typing.MatLike, p12: cv2.typing.MatLike | None = ..., handleNested: bool = ...) -> tuple[float, cv2.typing.MatLike]: ... +@_typing.overload +def intersectConvexConvex(p1: UMat, p2: UMat, p12: UMat | None = ..., handleNested: bool = ...) -> tuple[float, UMat]: ... + +@_typing.overload +def invert(src: cv2.typing.MatLike, dst: cv2.typing.MatLike | None = ..., flags: int = ...) -> tuple[float, cv2.typing.MatLike]: ... +@_typing.overload +def invert(src: UMat, dst: UMat | None = ..., flags: int = ...) -> tuple[float, UMat]: ... + +@_typing.overload +def invertAffineTransform(M: cv2.typing.MatLike, iM: cv2.typing.MatLike | None = ...) -> cv2.typing.MatLike: ... +@_typing.overload +def invertAffineTransform(M: UMat, iM: UMat | None = ...) -> UMat: ... + +@_typing.overload +def isContourConvex(contour: cv2.typing.MatLike) -> bool: ... +@_typing.overload +def isContourConvex(contour: UMat) -> bool: ... + +@_typing.overload +def kmeans(data: cv2.typing.MatLike, K: int, bestLabels: cv2.typing.MatLike, criteria: cv2.typing.TermCriteria, attempts: int, flags: int, centers: cv2.typing.MatLike | None = ...) -> tuple[float, cv2.typing.MatLike, cv2.typing.MatLike]: ... +@_typing.overload +def kmeans(data: UMat, K: int, bestLabels: UMat, criteria: cv2.typing.TermCriteria, attempts: int, flags: int, centers: UMat | None = ...) -> tuple[float, UMat, UMat]: ... + +@_typing.overload +def line(img: cv2.typing.MatLike, pt1: cv2.typing.Point, pt2: cv2.typing.Point, color: cv2.typing.Scalar, thickness: int = ..., lineType: int = ..., shift: int = ...) -> cv2.typing.MatLike: ... +@_typing.overload +def line(img: UMat, pt1: cv2.typing.Point, pt2: cv2.typing.Point, color: cv2.typing.Scalar, thickness: int = ..., lineType: int = ..., shift: int = ...) -> UMat: ... + +@_typing.overload +def linearPolar(src: cv2.typing.MatLike, center: cv2.typing.Point2f, maxRadius: float, flags: int, dst: cv2.typing.MatLike | None = ...) -> cv2.typing.MatLike: ... +@_typing.overload +def linearPolar(src: UMat, center: cv2.typing.Point2f, maxRadius: float, flags: int, dst: UMat | None = ...) -> UMat: ... + +@_typing.overload +def log(src: cv2.typing.MatLike, dst: cv2.typing.MatLike | None = ...) -> cv2.typing.MatLike: ... +@_typing.overload +def log(src: UMat, dst: UMat | None = ...) -> UMat: ... + +@_typing.overload +def logPolar(src: cv2.typing.MatLike, center: cv2.typing.Point2f, M: float, flags: int, dst: cv2.typing.MatLike | None = ...) -> cv2.typing.MatLike: ... +@_typing.overload +def logPolar(src: UMat, center: cv2.typing.Point2f, M: float, flags: int, dst: UMat | None = ...) -> UMat: ... + +@_typing.overload +def magnitude(x: cv2.typing.MatLike, y: cv2.typing.MatLike, magnitude: cv2.typing.MatLike | None = ...) -> cv2.typing.MatLike: ... +@_typing.overload +def magnitude(x: UMat, y: UMat, magnitude: UMat | None = ...) -> UMat: ... + +@_typing.overload +def matMulDeriv(A: cv2.typing.MatLike, B: cv2.typing.MatLike, dABdA: cv2.typing.MatLike | None = ..., dABdB: cv2.typing.MatLike | None = ...) -> tuple[cv2.typing.MatLike, cv2.typing.MatLike]: ... +@_typing.overload +def matMulDeriv(A: UMat, B: UMat, dABdA: UMat | None = ..., dABdB: UMat | None = ...) -> tuple[UMat, UMat]: ... + +@_typing.overload +def matchShapes(contour1: cv2.typing.MatLike, contour2: cv2.typing.MatLike, method: int, parameter: float) -> float: ... +@_typing.overload +def matchShapes(contour1: UMat, contour2: UMat, method: int, parameter: float) -> float: ... + +@_typing.overload +def matchTemplate(image: cv2.typing.MatLike, templ: cv2.typing.MatLike, method: int, result: cv2.typing.MatLike | None = ..., mask: cv2.typing.MatLike | None = ...) -> cv2.typing.MatLike: ... +@_typing.overload +def matchTemplate(image: UMat, templ: UMat, method: int, result: UMat | None = ..., mask: UMat | None = ...) -> UMat: ... + +@_typing.overload +def max(src1: cv2.typing.MatLike, src2: cv2.typing.MatLike, dst: cv2.typing.MatLike | None = ...) -> cv2.typing.MatLike: ... +@_typing.overload +def max(src1: UMat, src2: UMat, dst: UMat | None = ...) -> UMat: ... + +@_typing.overload +def mean(src: cv2.typing.MatLike, mask: cv2.typing.MatLike | None = ...) -> cv2.typing.Scalar: ... +@_typing.overload +def mean(src: UMat, mask: UMat | None = ...) -> cv2.typing.Scalar: ... + +@_typing.overload +def meanShift(probImage: cv2.typing.MatLike, window: cv2.typing.Rect, criteria: cv2.typing.TermCriteria) -> tuple[int, cv2.typing.Rect]: ... +@_typing.overload +def meanShift(probImage: UMat, window: cv2.typing.Rect, criteria: cv2.typing.TermCriteria) -> tuple[int, cv2.typing.Rect]: ... + +@_typing.overload +def meanStdDev(src: cv2.typing.MatLike, mean: cv2.typing.MatLike | None = ..., stddev: cv2.typing.MatLike | None = ..., mask: cv2.typing.MatLike | None = ...) -> tuple[cv2.typing.MatLike, cv2.typing.MatLike]: ... +@_typing.overload +def meanStdDev(src: UMat, mean: UMat | None = ..., stddev: UMat | None = ..., mask: UMat | None = ...) -> tuple[UMat, UMat]: ... + +@_typing.overload +def medianBlur(src: cv2.typing.MatLike, ksize: int, dst: cv2.typing.MatLike | None = ...) -> cv2.typing.MatLike: ... +@_typing.overload +def medianBlur(src: UMat, ksize: int, dst: UMat | None = ...) -> UMat: ... + +@_typing.overload +def merge(mv: _typing.Sequence[cv2.typing.MatLike], dst: cv2.typing.MatLike | None = ...) -> cv2.typing.MatLike: ... +@_typing.overload +def merge(mv: _typing.Sequence[UMat], dst: UMat | None = ...) -> UMat: ... + +@_typing.overload +def min(src1: cv2.typing.MatLike, src2: cv2.typing.MatLike, dst: cv2.typing.MatLike | None = ...) -> cv2.typing.MatLike: ... +@_typing.overload +def min(src1: UMat, src2: UMat, dst: UMat | None = ...) -> UMat: ... + +@_typing.overload +def minAreaRect(points: cv2.typing.MatLike) -> cv2.typing.RotatedRect: ... +@_typing.overload +def minAreaRect(points: UMat) -> cv2.typing.RotatedRect: ... + +@_typing.overload +def minEnclosingCircle(points: cv2.typing.MatLike) -> tuple[cv2.typing.Point2f, float]: ... +@_typing.overload +def minEnclosingCircle(points: UMat) -> tuple[cv2.typing.Point2f, float]: ... + +@_typing.overload +def minEnclosingTriangle(points: cv2.typing.MatLike, triangle: cv2.typing.MatLike | None = ...) -> tuple[float, cv2.typing.MatLike]: ... +@_typing.overload +def minEnclosingTriangle(points: UMat, triangle: UMat | None = ...) -> tuple[float, UMat]: ... + +@_typing.overload +def minMaxLoc(src: cv2.typing.MatLike, mask: cv2.typing.MatLike | None = ...) -> tuple[float, float, cv2.typing.Point, cv2.typing.Point]: ... +@_typing.overload +def minMaxLoc(src: UMat, mask: UMat | None = ...) -> tuple[float, float, cv2.typing.Point, cv2.typing.Point]: ... + +@_typing.overload +def mixChannels(src: _typing.Sequence[cv2.typing.MatLike], dst: _typing.Sequence[cv2.typing.MatLike], fromTo: _typing.Sequence[int]) -> _typing.Sequence[cv2.typing.MatLike]: ... +@_typing.overload +def mixChannels(src: _typing.Sequence[UMat], dst: _typing.Sequence[UMat], fromTo: _typing.Sequence[int]) -> _typing.Sequence[UMat]: ... + +@_typing.overload +def moments(array: cv2.typing.MatLike, binaryImage: bool = ...) -> cv2.typing.Moments: ... +@_typing.overload +def moments(array: UMat, binaryImage: bool = ...) -> cv2.typing.Moments: ... + +@_typing.overload +def morphologyEx(src: cv2.typing.MatLike, op: int, kernel: cv2.typing.MatLike, dst: cv2.typing.MatLike | None = ..., anchor: cv2.typing.Point = ..., iterations: int = ..., borderType: int = ..., borderValue: cv2.typing.Scalar = ...) -> cv2.typing.MatLike: ... +@_typing.overload +def morphologyEx(src: UMat, op: int, kernel: UMat, dst: UMat | None = ..., anchor: cv2.typing.Point = ..., iterations: int = ..., borderType: int = ..., borderValue: cv2.typing.Scalar = ...) -> UMat: ... + +def moveWindow(winname: str, x: int, y: int) -> None: ... + +@_typing.overload +def mulSpectrums(a: cv2.typing.MatLike, b: cv2.typing.MatLike, flags: int, c: cv2.typing.MatLike | None = ..., conjB: bool = ...) -> cv2.typing.MatLike: ... +@_typing.overload +def mulSpectrums(a: UMat, b: UMat, flags: int, c: UMat | None = ..., conjB: bool = ...) -> UMat: ... + +@_typing.overload +def mulTransposed(src: cv2.typing.MatLike, aTa: bool, dst: cv2.typing.MatLike | None = ..., delta: cv2.typing.MatLike | None = ..., scale: float = ..., dtype: int = ...) -> cv2.typing.MatLike: ... +@_typing.overload +def mulTransposed(src: UMat, aTa: bool, dst: UMat | None = ..., delta: UMat | None = ..., scale: float = ..., dtype: int = ...) -> UMat: ... + +@_typing.overload +def multiply(src1: cv2.typing.MatLike, src2: cv2.typing.MatLike, dst: cv2.typing.MatLike | None = ..., scale: float = ..., dtype: int = ...) -> cv2.typing.MatLike: ... +@_typing.overload +def multiply(src1: UMat, src2: UMat, dst: UMat | None = ..., scale: float = ..., dtype: int = ...) -> UMat: ... + +def namedWindow(winname: str, flags: int = ...) -> None: ... + +@_typing.overload +def norm(src1: cv2.typing.MatLike, normType: int = ..., mask: cv2.typing.MatLike | None = ...) -> float: ... +@_typing.overload +def norm(src1: UMat, normType: int = ..., mask: UMat | None = ...) -> float: ... +@_typing.overload +def norm(src1: cv2.typing.MatLike, src2: cv2.typing.MatLike, normType: int = ..., mask: cv2.typing.MatLike | None = ...) -> float: ... +@_typing.overload +def norm(src1: UMat, src2: UMat, normType: int = ..., mask: UMat | None = ...) -> float: ... + +@_typing.overload +def normalize(src: cv2.typing.MatLike, dst: cv2.typing.MatLike, alpha: float = ..., beta: float = ..., norm_type: int = ..., dtype: int = ..., mask: cv2.typing.MatLike | None = ...) -> cv2.typing.MatLike: ... +@_typing.overload +def normalize(src: UMat, dst: UMat, alpha: float = ..., beta: float = ..., norm_type: int = ..., dtype: int = ..., mask: UMat | None = ...) -> UMat: ... + +@_typing.overload +def patchNaNs(a: cv2.typing.MatLike, val: float = ...) -> cv2.typing.MatLike: ... +@_typing.overload +def patchNaNs(a: UMat, val: float = ...) -> UMat: ... + +@_typing.overload +def pencilSketch(src: cv2.typing.MatLike, dst1: cv2.typing.MatLike | None = ..., dst2: cv2.typing.MatLike | None = ..., sigma_s: float = ..., sigma_r: float = ..., shade_factor: float = ...) -> tuple[cv2.typing.MatLike, cv2.typing.MatLike]: ... +@_typing.overload +def pencilSketch(src: UMat, dst1: UMat | None = ..., dst2: UMat | None = ..., sigma_s: float = ..., sigma_r: float = ..., shade_factor: float = ...) -> tuple[UMat, UMat]: ... + +@_typing.overload +def perspectiveTransform(src: cv2.typing.MatLike, m: cv2.typing.MatLike, dst: cv2.typing.MatLike | None = ...) -> cv2.typing.MatLike: ... +@_typing.overload +def perspectiveTransform(src: UMat, m: UMat, dst: UMat | None = ...) -> UMat: ... + +@_typing.overload +def phase(x: cv2.typing.MatLike, y: cv2.typing.MatLike, angle: cv2.typing.MatLike | None = ..., angleInDegrees: bool = ...) -> cv2.typing.MatLike: ... +@_typing.overload +def phase(x: UMat, y: UMat, angle: UMat | None = ..., angleInDegrees: bool = ...) -> UMat: ... + +@_typing.overload +def phaseCorrelate(src1: cv2.typing.MatLike, src2: cv2.typing.MatLike, window: cv2.typing.MatLike | None = ...) -> tuple[cv2.typing.Point2d, float]: ... +@_typing.overload +def phaseCorrelate(src1: UMat, src2: UMat, window: UMat | None = ...) -> tuple[cv2.typing.Point2d, float]: ... + +@_typing.overload +def pointPolygonTest(contour: cv2.typing.MatLike, pt: cv2.typing.Point2f, measureDist: bool) -> float: ... +@_typing.overload +def pointPolygonTest(contour: UMat, pt: cv2.typing.Point2f, measureDist: bool) -> float: ... + +@_typing.overload +def polarToCart(magnitude: cv2.typing.MatLike, angle: cv2.typing.MatLike, x: cv2.typing.MatLike | None = ..., y: cv2.typing.MatLike | None = ..., angleInDegrees: bool = ...) -> tuple[cv2.typing.MatLike, cv2.typing.MatLike]: ... +@_typing.overload +def polarToCart(magnitude: UMat, angle: UMat, x: UMat | None = ..., y: UMat | None = ..., angleInDegrees: bool = ...) -> tuple[UMat, UMat]: ... + +def pollKey() -> int: ... + +@_typing.overload +def polylines(img: cv2.typing.MatLike, pts: _typing.Sequence[cv2.typing.MatLike], isClosed: bool, color: cv2.typing.Scalar, thickness: int = ..., lineType: int = ..., shift: int = ...) -> cv2.typing.MatLike: ... +@_typing.overload +def polylines(img: UMat, pts: _typing.Sequence[UMat], isClosed: bool, color: cv2.typing.Scalar, thickness: int = ..., lineType: int = ..., shift: int = ...) -> UMat: ... + +@_typing.overload +def pow(src: cv2.typing.MatLike, power: float, dst: cv2.typing.MatLike | None = ...) -> cv2.typing.MatLike: ... +@_typing.overload +def pow(src: UMat, power: float, dst: UMat | None = ...) -> UMat: ... + +@_typing.overload +def preCornerDetect(src: cv2.typing.MatLike, ksize: int, dst: cv2.typing.MatLike | None = ..., borderType: int = ...) -> cv2.typing.MatLike: ... +@_typing.overload +def preCornerDetect(src: UMat, ksize: int, dst: UMat | None = ..., borderType: int = ...) -> UMat: ... + +@_typing.overload +def projectPoints(objectPoints: cv2.typing.MatLike, rvec: cv2.typing.MatLike, tvec: cv2.typing.MatLike, cameraMatrix: cv2.typing.MatLike, distCoeffs: cv2.typing.MatLike, imagePoints: cv2.typing.MatLike | None = ..., jacobian: cv2.typing.MatLike | None = ..., aspectRatio: float = ...) -> tuple[cv2.typing.MatLike, cv2.typing.MatLike]: ... +@_typing.overload +def projectPoints(objectPoints: UMat, rvec: UMat, tvec: UMat, cameraMatrix: UMat, distCoeffs: UMat, imagePoints: UMat | None = ..., jacobian: UMat | None = ..., aspectRatio: float = ...) -> tuple[UMat, UMat]: ... + +@_typing.overload +def putText(img: cv2.typing.MatLike, text: str, org: cv2.typing.Point, fontFace: int, fontScale: float, color: cv2.typing.Scalar, thickness: int = ..., lineType: int = ..., bottomLeftOrigin: bool = ...) -> cv2.typing.MatLike: ... +@_typing.overload +def putText(img: UMat, text: str, org: cv2.typing.Point, fontFace: int, fontScale: float, color: cv2.typing.Scalar, thickness: int = ..., lineType: int = ..., bottomLeftOrigin: bool = ...) -> UMat: ... + +@_typing.overload +def pyrDown(src: cv2.typing.MatLike, dst: cv2.typing.MatLike | None = ..., dstsize: cv2.typing.Size = ..., borderType: int = ...) -> cv2.typing.MatLike: ... +@_typing.overload +def pyrDown(src: UMat, dst: UMat | None = ..., dstsize: cv2.typing.Size = ..., borderType: int = ...) -> UMat: ... + +@_typing.overload +def pyrMeanShiftFiltering(src: cv2.typing.MatLike, sp: float, sr: float, dst: cv2.typing.MatLike | None = ..., maxLevel: int = ..., termcrit: cv2.typing.TermCriteria = ...) -> cv2.typing.MatLike: ... +@_typing.overload +def pyrMeanShiftFiltering(src: UMat, sp: float, sr: float, dst: UMat | None = ..., maxLevel: int = ..., termcrit: cv2.typing.TermCriteria = ...) -> UMat: ... + +@_typing.overload +def pyrUp(src: cv2.typing.MatLike, dst: cv2.typing.MatLike | None = ..., dstsize: cv2.typing.Size = ..., borderType: int = ...) -> cv2.typing.MatLike: ... +@_typing.overload +def pyrUp(src: UMat, dst: UMat | None = ..., dstsize: cv2.typing.Size = ..., borderType: int = ...) -> UMat: ... + +@_typing.overload +def randShuffle(dst: cv2.typing.MatLike, iterFactor: float = ...) -> cv2.typing.MatLike: ... +@_typing.overload +def randShuffle(dst: UMat, iterFactor: float = ...) -> UMat: ... + +@_typing.overload +def randn(dst: cv2.typing.MatLike, mean: cv2.typing.MatLike, stddev: cv2.typing.MatLike) -> cv2.typing.MatLike: ... +@_typing.overload +def randn(dst: UMat, mean: UMat, stddev: UMat) -> UMat: ... + +@_typing.overload +def randu(dst: cv2.typing.MatLike, low: cv2.typing.MatLike, high: cv2.typing.MatLike) -> cv2.typing.MatLike: ... +@_typing.overload +def randu(dst: UMat, low: UMat, high: UMat) -> UMat: ... + +def readOpticalFlow(path: str) -> cv2.typing.MatLike: ... + +@_typing.overload +def recoverPose(points1: cv2.typing.MatLike, points2: cv2.typing.MatLike, cameraMatrix1: cv2.typing.MatLike, distCoeffs1: cv2.typing.MatLike, cameraMatrix2: cv2.typing.MatLike, distCoeffs2: cv2.typing.MatLike, E: cv2.typing.MatLike | None = ..., R: cv2.typing.MatLike | None = ..., t: cv2.typing.MatLike | None = ..., method: int = ..., prob: float = ..., threshold: float = ..., mask: cv2.typing.MatLike | None = ...) -> tuple[int, cv2.typing.MatLike, cv2.typing.MatLike, cv2.typing.MatLike, cv2.typing.MatLike]: ... +@_typing.overload +def recoverPose(points1: UMat, points2: UMat, cameraMatrix1: UMat, distCoeffs1: UMat, cameraMatrix2: UMat, distCoeffs2: UMat, E: UMat | None = ..., R: UMat | None = ..., t: UMat | None = ..., method: int = ..., prob: float = ..., threshold: float = ..., mask: UMat | None = ...) -> tuple[int, UMat, UMat, UMat, UMat]: ... +@_typing.overload +def recoverPose(E: cv2.typing.MatLike, points1: cv2.typing.MatLike, points2: cv2.typing.MatLike, cameraMatrix: cv2.typing.MatLike, R: cv2.typing.MatLike | None = ..., t: cv2.typing.MatLike | None = ..., mask: cv2.typing.MatLike | None = ...) -> tuple[int, cv2.typing.MatLike, cv2.typing.MatLike, cv2.typing.MatLike]: ... +@_typing.overload +def recoverPose(E: UMat, points1: UMat, points2: UMat, cameraMatrix: UMat, R: UMat | None = ..., t: UMat | None = ..., mask: UMat | None = ...) -> tuple[int, UMat, UMat, UMat]: ... +@_typing.overload +def recoverPose(E: cv2.typing.MatLike, points1: cv2.typing.MatLike, points2: cv2.typing.MatLike, R: cv2.typing.MatLike | None = ..., t: cv2.typing.MatLike | None = ..., focal: float = ..., pp: cv2.typing.Point2d = ..., mask: cv2.typing.MatLike | None = ...) -> tuple[int, cv2.typing.MatLike, cv2.typing.MatLike, cv2.typing.MatLike]: ... +@_typing.overload +def recoverPose(E: UMat, points1: UMat, points2: UMat, R: UMat | None = ..., t: UMat | None = ..., focal: float = ..., pp: cv2.typing.Point2d = ..., mask: UMat | None = ...) -> tuple[int, UMat, UMat, UMat]: ... +@_typing.overload +def recoverPose(E: cv2.typing.MatLike, points1: cv2.typing.MatLike, points2: cv2.typing.MatLike, cameraMatrix: cv2.typing.MatLike, distanceThresh: float, R: cv2.typing.MatLike | None = ..., t: cv2.typing.MatLike | None = ..., mask: cv2.typing.MatLike | None = ..., triangulatedPoints: cv2.typing.MatLike | None = ...) -> tuple[int, cv2.typing.MatLike, cv2.typing.MatLike, cv2.typing.MatLike, cv2.typing.MatLike]: ... +@_typing.overload +def recoverPose(E: UMat, points1: UMat, points2: UMat, cameraMatrix: UMat, distanceThresh: float, R: UMat | None = ..., t: UMat | None = ..., mask: UMat | None = ..., triangulatedPoints: UMat | None = ...) -> tuple[int, UMat, UMat, UMat, UMat]: ... + +@_typing.overload +def rectangle(img: cv2.typing.MatLike, pt1: cv2.typing.Point, pt2: cv2.typing.Point, color: cv2.typing.Scalar, thickness: int = ..., lineType: int = ..., shift: int = ...) -> cv2.typing.MatLike: ... +@_typing.overload +def rectangle(img: UMat, pt1: cv2.typing.Point, pt2: cv2.typing.Point, color: cv2.typing.Scalar, thickness: int = ..., lineType: int = ..., shift: int = ...) -> UMat: ... +@_typing.overload +def rectangle(img: cv2.typing.MatLike, rec: cv2.typing.Rect, color: cv2.typing.Scalar, thickness: int = ..., lineType: int = ..., shift: int = ...) -> cv2.typing.MatLike: ... +@_typing.overload +def rectangle(img: UMat, rec: cv2.typing.Rect, color: cv2.typing.Scalar, thickness: int = ..., lineType: int = ..., shift: int = ...) -> UMat: ... + +def rectangleIntersectionArea(a: cv2.typing.Rect2d, b: cv2.typing.Rect2d) -> float: ... + +@_typing.overload +def rectify3Collinear(cameraMatrix1: cv2.typing.MatLike, distCoeffs1: cv2.typing.MatLike, cameraMatrix2: cv2.typing.MatLike, distCoeffs2: cv2.typing.MatLike, cameraMatrix3: cv2.typing.MatLike, distCoeffs3: cv2.typing.MatLike, imgpt1: _typing.Sequence[cv2.typing.MatLike], imgpt3: _typing.Sequence[cv2.typing.MatLike], imageSize: cv2.typing.Size, R12: cv2.typing.MatLike, T12: cv2.typing.MatLike, R13: cv2.typing.MatLike, T13: cv2.typing.MatLike, alpha: float, newImgSize: cv2.typing.Size, flags: int, R1: cv2.typing.MatLike | None = ..., R2: cv2.typing.MatLike | None = ..., R3: cv2.typing.MatLike | None = ..., P1: cv2.typing.MatLike | None = ..., P2: cv2.typing.MatLike | None = ..., P3: cv2.typing.MatLike | None = ..., Q: cv2.typing.MatLike | None = ...) -> tuple[float, cv2.typing.MatLike, cv2.typing.MatLike, cv2.typing.MatLike, cv2.typing.MatLike, cv2.typing.MatLike, cv2.typing.MatLike, cv2.typing.MatLike, cv2.typing.Rect, cv2.typing.Rect]: ... +@_typing.overload +def rectify3Collinear(cameraMatrix1: UMat, distCoeffs1: UMat, cameraMatrix2: UMat, distCoeffs2: UMat, cameraMatrix3: UMat, distCoeffs3: UMat, imgpt1: _typing.Sequence[UMat], imgpt3: _typing.Sequence[UMat], imageSize: cv2.typing.Size, R12: UMat, T12: UMat, R13: UMat, T13: UMat, alpha: float, newImgSize: cv2.typing.Size, flags: int, R1: UMat | None = ..., R2: UMat | None = ..., R3: UMat | None = ..., P1: UMat | None = ..., P2: UMat | None = ..., P3: UMat | None = ..., Q: UMat | None = ...) -> tuple[float, UMat, UMat, UMat, UMat, UMat, UMat, UMat, cv2.typing.Rect, cv2.typing.Rect]: ... + +@_typing.overload +def reduce(src: cv2.typing.MatLike, dim: int, rtype: int, dst: cv2.typing.MatLike | None = ..., dtype: int = ...) -> cv2.typing.MatLike: ... +@_typing.overload +def reduce(src: UMat, dim: int, rtype: int, dst: UMat | None = ..., dtype: int = ...) -> UMat: ... + +@_typing.overload +def reduceArgMax(src: cv2.typing.MatLike, axis: int, dst: cv2.typing.MatLike | None = ..., lastIndex: bool = ...) -> cv2.typing.MatLike: ... +@_typing.overload +def reduceArgMax(src: UMat, axis: int, dst: UMat | None = ..., lastIndex: bool = ...) -> UMat: ... + +@_typing.overload +def reduceArgMin(src: cv2.typing.MatLike, axis: int, dst: cv2.typing.MatLike | None = ..., lastIndex: bool = ...) -> cv2.typing.MatLike: ... +@_typing.overload +def reduceArgMin(src: UMat, axis: int, dst: UMat | None = ..., lastIndex: bool = ...) -> UMat: ... + +@_typing.overload +def remap(src: cv2.typing.MatLike, map1: cv2.typing.MatLike, map2: cv2.typing.MatLike, interpolation: int, dst: cv2.typing.MatLike | None = ..., borderMode: int = ..., borderValue: cv2.typing.Scalar = ...) -> cv2.typing.MatLike: ... +@_typing.overload +def remap(src: UMat, map1: UMat, map2: UMat, interpolation: int, dst: UMat | None = ..., borderMode: int = ..., borderValue: cv2.typing.Scalar = ...) -> UMat: ... + +@_typing.overload +def repeat(src: cv2.typing.MatLike, ny: int, nx: int, dst: cv2.typing.MatLike | None = ...) -> cv2.typing.MatLike: ... +@_typing.overload +def repeat(src: UMat, ny: int, nx: int, dst: UMat | None = ...) -> UMat: ... + +@_typing.overload +def reprojectImageTo3D(disparity: cv2.typing.MatLike, Q: cv2.typing.MatLike, _3dImage: cv2.typing.MatLike | None = ..., handleMissingValues: bool = ..., ddepth: int = ...) -> cv2.typing.MatLike: ... +@_typing.overload +def reprojectImageTo3D(disparity: UMat, Q: UMat, _3dImage: UMat | None = ..., handleMissingValues: bool = ..., ddepth: int = ...) -> UMat: ... + +@_typing.overload +def resize(src: cv2.typing.MatLike, dsize: cv2.typing.Size | None, dst: cv2.typing.MatLike | None = ..., fx: float = ..., fy: float = ..., interpolation: int = ...) -> cv2.typing.MatLike: ... +@_typing.overload +def resize(src: UMat, dsize: cv2.typing.Size | None, dst: UMat | None = ..., fx: float = ..., fy: float = ..., interpolation: int = ...) -> UMat: ... + +@_typing.overload +def resizeWindow(winname: str, width: int, height: int) -> None: ... +@_typing.overload +def resizeWindow(winname: str, size: cv2.typing.Size) -> None: ... + +@_typing.overload +def rotate(src: cv2.typing.MatLike, rotateCode: int, dst: cv2.typing.MatLike | None = ...) -> cv2.typing.MatLike: ... +@_typing.overload +def rotate(src: UMat, rotateCode: int, dst: UMat | None = ...) -> UMat: ... + +@_typing.overload +def rotatedRectangleIntersection(rect1: cv2.typing.RotatedRect, rect2: cv2.typing.RotatedRect, intersectingRegion: cv2.typing.MatLike | None = ...) -> tuple[int, cv2.typing.MatLike]: ... +@_typing.overload +def rotatedRectangleIntersection(rect1: cv2.typing.RotatedRect, rect2: cv2.typing.RotatedRect, intersectingRegion: UMat | None = ...) -> tuple[int, UMat]: ... + +@_typing.overload +def sampsonDistance(pt1: cv2.typing.MatLike, pt2: cv2.typing.MatLike, F: cv2.typing.MatLike) -> float: ... +@_typing.overload +def sampsonDistance(pt1: UMat, pt2: UMat, F: UMat) -> float: ... + +@_typing.overload +def scaleAdd(src1: cv2.typing.MatLike, alpha: float, src2: cv2.typing.MatLike, dst: cv2.typing.MatLike | None = ...) -> cv2.typing.MatLike: ... +@_typing.overload +def scaleAdd(src1: UMat, alpha: float, src2: UMat, dst: UMat | None = ...) -> UMat: ... + +@_typing.overload +def seamlessClone(src: cv2.typing.MatLike, dst: cv2.typing.MatLike, mask: cv2.typing.MatLike, p: cv2.typing.Point, flags: int, blend: cv2.typing.MatLike | None = ...) -> cv2.typing.MatLike: ... +@_typing.overload +def seamlessClone(src: UMat, dst: UMat, mask: UMat, p: cv2.typing.Point, flags: int, blend: UMat | None = ...) -> UMat: ... + +@_typing.overload +def selectROI(windowName: str, img: cv2.typing.MatLike, showCrosshair: bool = ..., fromCenter: bool = ..., printNotice: bool = ...) -> cv2.typing.Rect: ... +@_typing.overload +def selectROI(windowName: str, img: UMat, showCrosshair: bool = ..., fromCenter: bool = ..., printNotice: bool = ...) -> cv2.typing.Rect: ... +@_typing.overload +def selectROI(img: cv2.typing.MatLike, showCrosshair: bool = ..., fromCenter: bool = ..., printNotice: bool = ...) -> cv2.typing.Rect: ... +@_typing.overload +def selectROI(img: UMat, showCrosshair: bool = ..., fromCenter: bool = ..., printNotice: bool = ...) -> cv2.typing.Rect: ... + +@_typing.overload +def selectROIs(windowName: str, img: cv2.typing.MatLike, showCrosshair: bool = ..., fromCenter: bool = ..., printNotice: bool = ...) -> _typing.Sequence[cv2.typing.Rect]: ... +@_typing.overload +def selectROIs(windowName: str, img: UMat, showCrosshair: bool = ..., fromCenter: bool = ..., printNotice: bool = ...) -> _typing.Sequence[cv2.typing.Rect]: ... + +@_typing.overload +def sepFilter2D(src: cv2.typing.MatLike, ddepth: int, kernelX: cv2.typing.MatLike, kernelY: cv2.typing.MatLike, dst: cv2.typing.MatLike | None = ..., anchor: cv2.typing.Point = ..., delta: float = ..., borderType: int = ...) -> cv2.typing.MatLike: ... +@_typing.overload +def sepFilter2D(src: UMat, ddepth: int, kernelX: UMat, kernelY: UMat, dst: UMat | None = ..., anchor: cv2.typing.Point = ..., delta: float = ..., borderType: int = ...) -> UMat: ... + +@_typing.overload +def setIdentity(mtx: cv2.typing.MatLike, s: cv2.typing.Scalar = ...) -> cv2.typing.MatLike: ... +@_typing.overload +def setIdentity(mtx: UMat, s: cv2.typing.Scalar = ...) -> UMat: ... + +def setLogLevel(level: int) -> int: ... + +def setNumThreads(nthreads: int) -> None: ... + +def setRNGSeed(seed: int) -> None: ... + +def setTrackbarMax(trackbarname: str, winname: str, maxval: int) -> None: ... + +def setTrackbarMin(trackbarname: str, winname: str, minval: int) -> None: ... + +def setTrackbarPos(trackbarname: str, winname: str, pos: int) -> None: ... + +def setUseOpenVX(flag: bool) -> None: ... + +def setUseOptimized(onoff: bool) -> None: ... + +def setWindowProperty(winname: str, prop_id: int, prop_value: float) -> None: ... + +def setWindowTitle(winname: str, title: str) -> None: ... + +@_typing.overload +def solve(src1: cv2.typing.MatLike, src2: cv2.typing.MatLike, dst: cv2.typing.MatLike | None = ..., flags: int = ...) -> tuple[bool, cv2.typing.MatLike]: ... +@_typing.overload +def solve(src1: UMat, src2: UMat, dst: UMat | None = ..., flags: int = ...) -> tuple[bool, UMat]: ... + +@_typing.overload +def solveCubic(coeffs: cv2.typing.MatLike, roots: cv2.typing.MatLike | None = ...) -> tuple[int, cv2.typing.MatLike]: ... +@_typing.overload +def solveCubic(coeffs: UMat, roots: UMat | None = ...) -> tuple[int, UMat]: ... + +@_typing.overload +def solveLP(Func: cv2.typing.MatLike, Constr: cv2.typing.MatLike, constr_eps: float, z: cv2.typing.MatLike | None = ...) -> tuple[int, cv2.typing.MatLike]: ... +@_typing.overload +def solveLP(Func: UMat, Constr: UMat, constr_eps: float, z: UMat | None = ...) -> tuple[int, UMat]: ... +@_typing.overload +def solveLP(Func: cv2.typing.MatLike, Constr: cv2.typing.MatLike, z: cv2.typing.MatLike | None = ...) -> tuple[int, cv2.typing.MatLike]: ... +@_typing.overload +def solveLP(Func: UMat, Constr: UMat, z: UMat | None = ...) -> tuple[int, UMat]: ... + +@_typing.overload +def solveP3P(objectPoints: cv2.typing.MatLike, imagePoints: cv2.typing.MatLike, cameraMatrix: cv2.typing.MatLike, distCoeffs: cv2.typing.MatLike, flags: int, rvecs: _typing.Sequence[cv2.typing.MatLike] | None = ..., tvecs: _typing.Sequence[cv2.typing.MatLike] | None = ...) -> tuple[int, _typing.Sequence[cv2.typing.MatLike], _typing.Sequence[cv2.typing.MatLike]]: ... +@_typing.overload +def solveP3P(objectPoints: UMat, imagePoints: UMat, cameraMatrix: UMat, distCoeffs: UMat, flags: int, rvecs: _typing.Sequence[UMat] | None = ..., tvecs: _typing.Sequence[UMat] | None = ...) -> tuple[int, _typing.Sequence[UMat], _typing.Sequence[UMat]]: ... + +@_typing.overload +def solvePnP(objectPoints: cv2.typing.MatLike, imagePoints: cv2.typing.MatLike, cameraMatrix: cv2.typing.MatLike, distCoeffs: cv2.typing.MatLike, rvec: cv2.typing.MatLike | None = ..., tvec: cv2.typing.MatLike | None = ..., useExtrinsicGuess: bool = ..., flags: int = ...) -> tuple[bool, cv2.typing.MatLike, cv2.typing.MatLike]: ... +@_typing.overload +def solvePnP(objectPoints: UMat, imagePoints: UMat, cameraMatrix: UMat, distCoeffs: UMat, rvec: UMat | None = ..., tvec: UMat | None = ..., useExtrinsicGuess: bool = ..., flags: int = ...) -> tuple[bool, UMat, UMat]: ... + +@_typing.overload +def solvePnPGeneric(objectPoints: cv2.typing.MatLike, imagePoints: cv2.typing.MatLike, cameraMatrix: cv2.typing.MatLike, distCoeffs: cv2.typing.MatLike, rvecs: _typing.Sequence[cv2.typing.MatLike] | None = ..., tvecs: _typing.Sequence[cv2.typing.MatLike] | None = ..., useExtrinsicGuess: bool = ..., flags: SolvePnPMethod = ..., rvec: cv2.typing.MatLike | None = ..., tvec: cv2.typing.MatLike | None = ..., reprojectionError: cv2.typing.MatLike | None = ...) -> tuple[int, _typing.Sequence[cv2.typing.MatLike], _typing.Sequence[cv2.typing.MatLike], cv2.typing.MatLike]: ... +@_typing.overload +def solvePnPGeneric(objectPoints: UMat, imagePoints: UMat, cameraMatrix: UMat, distCoeffs: UMat, rvecs: _typing.Sequence[UMat] | None = ..., tvecs: _typing.Sequence[UMat] | None = ..., useExtrinsicGuess: bool = ..., flags: SolvePnPMethod = ..., rvec: UMat | None = ..., tvec: UMat | None = ..., reprojectionError: UMat | None = ...) -> tuple[int, _typing.Sequence[UMat], _typing.Sequence[UMat], UMat]: ... + +@_typing.overload +def solvePnPRansac(objectPoints: cv2.typing.MatLike, imagePoints: cv2.typing.MatLike, cameraMatrix: cv2.typing.MatLike, distCoeffs: cv2.typing.MatLike, rvec: cv2.typing.MatLike | None = ..., tvec: cv2.typing.MatLike | None = ..., useExtrinsicGuess: bool = ..., iterationsCount: int = ..., reprojectionError: float = ..., confidence: float = ..., inliers: cv2.typing.MatLike | None = ..., flags: int = ...) -> tuple[bool, cv2.typing.MatLike, cv2.typing.MatLike, cv2.typing.MatLike]: ... +@_typing.overload +def solvePnPRansac(objectPoints: UMat, imagePoints: UMat, cameraMatrix: UMat, distCoeffs: UMat, rvec: UMat | None = ..., tvec: UMat | None = ..., useExtrinsicGuess: bool = ..., iterationsCount: int = ..., reprojectionError: float = ..., confidence: float = ..., inliers: UMat | None = ..., flags: int = ...) -> tuple[bool, UMat, UMat, UMat]: ... +@_typing.overload +def solvePnPRansac(objectPoints: cv2.typing.MatLike, imagePoints: cv2.typing.MatLike, cameraMatrix: cv2.typing.MatLike, distCoeffs: cv2.typing.MatLike, rvec: cv2.typing.MatLike | None = ..., tvec: cv2.typing.MatLike | None = ..., inliers: cv2.typing.MatLike | None = ..., params: UsacParams = ...) -> tuple[bool, cv2.typing.MatLike, cv2.typing.MatLike, cv2.typing.MatLike, cv2.typing.MatLike]: ... +@_typing.overload +def solvePnPRansac(objectPoints: UMat, imagePoints: UMat, cameraMatrix: UMat, distCoeffs: UMat, rvec: UMat | None = ..., tvec: UMat | None = ..., inliers: UMat | None = ..., params: UsacParams = ...) -> tuple[bool, UMat, UMat, UMat, UMat]: ... + +@_typing.overload +def solvePnPRefineLM(objectPoints: cv2.typing.MatLike, imagePoints: cv2.typing.MatLike, cameraMatrix: cv2.typing.MatLike, distCoeffs: cv2.typing.MatLike, rvec: cv2.typing.MatLike, tvec: cv2.typing.MatLike, criteria: cv2.typing.TermCriteria = ...) -> tuple[cv2.typing.MatLike, cv2.typing.MatLike]: ... +@_typing.overload +def solvePnPRefineLM(objectPoints: UMat, imagePoints: UMat, cameraMatrix: UMat, distCoeffs: UMat, rvec: UMat, tvec: UMat, criteria: cv2.typing.TermCriteria = ...) -> tuple[UMat, UMat]: ... + +@_typing.overload +def solvePnPRefineVVS(objectPoints: cv2.typing.MatLike, imagePoints: cv2.typing.MatLike, cameraMatrix: cv2.typing.MatLike, distCoeffs: cv2.typing.MatLike, rvec: cv2.typing.MatLike, tvec: cv2.typing.MatLike, criteria: cv2.typing.TermCriteria = ..., VVSlambda: float = ...) -> tuple[cv2.typing.MatLike, cv2.typing.MatLike]: ... +@_typing.overload +def solvePnPRefineVVS(objectPoints: UMat, imagePoints: UMat, cameraMatrix: UMat, distCoeffs: UMat, rvec: UMat, tvec: UMat, criteria: cv2.typing.TermCriteria = ..., VVSlambda: float = ...) -> tuple[UMat, UMat]: ... + +@_typing.overload +def solvePoly(coeffs: cv2.typing.MatLike, roots: cv2.typing.MatLike | None = ..., maxIters: int = ...) -> tuple[float, cv2.typing.MatLike]: ... +@_typing.overload +def solvePoly(coeffs: UMat, roots: UMat | None = ..., maxIters: int = ...) -> tuple[float, UMat]: ... + +@_typing.overload +def sort(src: cv2.typing.MatLike, flags: int, dst: cv2.typing.MatLike | None = ...) -> cv2.typing.MatLike: ... +@_typing.overload +def sort(src: UMat, flags: int, dst: UMat | None = ...) -> UMat: ... + +@_typing.overload +def sortIdx(src: cv2.typing.MatLike, flags: int, dst: cv2.typing.MatLike | None = ...) -> cv2.typing.MatLike: ... +@_typing.overload +def sortIdx(src: UMat, flags: int, dst: UMat | None = ...) -> UMat: ... + +@_typing.overload +def spatialGradient(src: cv2.typing.MatLike, dx: cv2.typing.MatLike | None = ..., dy: cv2.typing.MatLike | None = ..., ksize: int = ..., borderType: int = ...) -> tuple[cv2.typing.MatLike, cv2.typing.MatLike]: ... +@_typing.overload +def spatialGradient(src: UMat, dx: UMat | None = ..., dy: UMat | None = ..., ksize: int = ..., borderType: int = ...) -> tuple[UMat, UMat]: ... + +@_typing.overload +def split(m: cv2.typing.MatLike, mv: _typing.Sequence[cv2.typing.MatLike] | None = ...) -> _typing.Sequence[cv2.typing.MatLike]: ... +@_typing.overload +def split(m: UMat, mv: _typing.Sequence[UMat] | None = ...) -> _typing.Sequence[UMat]: ... + +@_typing.overload +def sqrBoxFilter(src: cv2.typing.MatLike, ddepth: int, ksize: cv2.typing.Size, dst: cv2.typing.MatLike | None = ..., anchor: cv2.typing.Point = ..., normalize: bool = ..., borderType: int = ...) -> cv2.typing.MatLike: ... +@_typing.overload +def sqrBoxFilter(src: UMat, ddepth: int, ksize: cv2.typing.Size, dst: UMat | None = ..., anchor: cv2.typing.Point = ..., normalize: bool = ..., borderType: int = ...) -> UMat: ... + +@_typing.overload +def sqrt(src: cv2.typing.MatLike, dst: cv2.typing.MatLike | None = ...) -> cv2.typing.MatLike: ... +@_typing.overload +def sqrt(src: UMat, dst: UMat | None = ...) -> UMat: ... + +@_typing.overload +def stackBlur(src: cv2.typing.MatLike, ksize: cv2.typing.Size, dst: cv2.typing.MatLike | None = ...) -> cv2.typing.MatLike: ... +@_typing.overload +def stackBlur(src: UMat, ksize: cv2.typing.Size, dst: UMat | None = ...) -> UMat: ... + +def startWindowThread() -> int: ... + +@_typing.overload +def stereoCalibrate(objectPoints: _typing.Sequence[cv2.typing.MatLike], imagePoints1: _typing.Sequence[cv2.typing.MatLike], imagePoints2: _typing.Sequence[cv2.typing.MatLike], cameraMatrix1: cv2.typing.MatLike, distCoeffs1: cv2.typing.MatLike, cameraMatrix2: cv2.typing.MatLike, distCoeffs2: cv2.typing.MatLike, imageSize: cv2.typing.Size, R: cv2.typing.MatLike | None = ..., T: cv2.typing.MatLike | None = ..., E: cv2.typing.MatLike | None = ..., F: cv2.typing.MatLike | None = ..., flags: int = ..., criteria: cv2.typing.TermCriteria = ...) -> tuple[float, cv2.typing.MatLike, cv2.typing.MatLike, cv2.typing.MatLike, cv2.typing.MatLike, cv2.typing.MatLike, cv2.typing.MatLike, cv2.typing.MatLike, cv2.typing.MatLike]: ... +@_typing.overload +def stereoCalibrate(objectPoints: _typing.Sequence[UMat], imagePoints1: _typing.Sequence[UMat], imagePoints2: _typing.Sequence[UMat], cameraMatrix1: UMat, distCoeffs1: UMat, cameraMatrix2: UMat, distCoeffs2: UMat, imageSize: cv2.typing.Size, R: UMat | None = ..., T: UMat | None = ..., E: UMat | None = ..., F: UMat | None = ..., flags: int = ..., criteria: cv2.typing.TermCriteria = ...) -> tuple[float, UMat, UMat, UMat, UMat, UMat, UMat, UMat, UMat]: ... +@_typing.overload +def stereoCalibrate(objectPoints: _typing.Sequence[cv2.typing.MatLike], imagePoints1: _typing.Sequence[cv2.typing.MatLike], imagePoints2: _typing.Sequence[cv2.typing.MatLike], cameraMatrix1: cv2.typing.MatLike, distCoeffs1: cv2.typing.MatLike, cameraMatrix2: cv2.typing.MatLike, distCoeffs2: cv2.typing.MatLike, imageSize: cv2.typing.Size, R: cv2.typing.MatLike, T: cv2.typing.MatLike, E: cv2.typing.MatLike | None = ..., F: cv2.typing.MatLike | None = ..., perViewErrors: cv2.typing.MatLike | None = ..., flags: int = ..., criteria: cv2.typing.TermCriteria = ...) -> tuple[float, cv2.typing.MatLike, cv2.typing.MatLike, cv2.typing.MatLike, cv2.typing.MatLike, cv2.typing.MatLike, cv2.typing.MatLike, cv2.typing.MatLike, cv2.typing.MatLike, cv2.typing.MatLike]: ... +@_typing.overload +def stereoCalibrate(objectPoints: _typing.Sequence[UMat], imagePoints1: _typing.Sequence[UMat], imagePoints2: _typing.Sequence[UMat], cameraMatrix1: UMat, distCoeffs1: UMat, cameraMatrix2: UMat, distCoeffs2: UMat, imageSize: cv2.typing.Size, R: UMat, T: UMat, E: UMat | None = ..., F: UMat | None = ..., perViewErrors: UMat | None = ..., flags: int = ..., criteria: cv2.typing.TermCriteria = ...) -> tuple[float, UMat, UMat, UMat, UMat, UMat, UMat, UMat, UMat, UMat]: ... + +@_typing.overload +def stereoCalibrateExtended(objectPoints: _typing.Sequence[cv2.typing.MatLike], imagePoints1: _typing.Sequence[cv2.typing.MatLike], imagePoints2: _typing.Sequence[cv2.typing.MatLike], cameraMatrix1: cv2.typing.MatLike, distCoeffs1: cv2.typing.MatLike, cameraMatrix2: cv2.typing.MatLike, distCoeffs2: cv2.typing.MatLike, imageSize: cv2.typing.Size, R: cv2.typing.MatLike, T: cv2.typing.MatLike, E: cv2.typing.MatLike | None = ..., F: cv2.typing.MatLike | None = ..., rvecs: _typing.Sequence[cv2.typing.MatLike] | None = ..., tvecs: _typing.Sequence[cv2.typing.MatLike] | None = ..., perViewErrors: cv2.typing.MatLike | None = ..., flags: int = ..., criteria: cv2.typing.TermCriteria = ...) -> tuple[float, cv2.typing.MatLike, cv2.typing.MatLike, cv2.typing.MatLike, cv2.typing.MatLike, cv2.typing.MatLike, cv2.typing.MatLike, cv2.typing.MatLike, cv2.typing.MatLike, _typing.Sequence[cv2.typing.MatLike], _typing.Sequence[cv2.typing.MatLike], cv2.typing.MatLike]: ... +@_typing.overload +def stereoCalibrateExtended(objectPoints: _typing.Sequence[UMat], imagePoints1: _typing.Sequence[UMat], imagePoints2: _typing.Sequence[UMat], cameraMatrix1: UMat, distCoeffs1: UMat, cameraMatrix2: UMat, distCoeffs2: UMat, imageSize: cv2.typing.Size, R: UMat, T: UMat, E: UMat | None = ..., F: UMat | None = ..., rvecs: _typing.Sequence[UMat] | None = ..., tvecs: _typing.Sequence[UMat] | None = ..., perViewErrors: UMat | None = ..., flags: int = ..., criteria: cv2.typing.TermCriteria = ...) -> tuple[float, UMat, UMat, UMat, UMat, UMat, UMat, UMat, UMat, _typing.Sequence[UMat], _typing.Sequence[UMat], UMat]: ... + +@_typing.overload +def stereoRectify(cameraMatrix1: cv2.typing.MatLike, distCoeffs1: cv2.typing.MatLike, cameraMatrix2: cv2.typing.MatLike, distCoeffs2: cv2.typing.MatLike, imageSize: cv2.typing.Size, R: cv2.typing.MatLike, T: cv2.typing.MatLike, R1: cv2.typing.MatLike | None = ..., R2: cv2.typing.MatLike | None = ..., P1: cv2.typing.MatLike | None = ..., P2: cv2.typing.MatLike | None = ..., Q: cv2.typing.MatLike | None = ..., flags: int = ..., alpha: float = ..., newImageSize: cv2.typing.Size = ...) -> tuple[cv2.typing.MatLike, cv2.typing.MatLike, cv2.typing.MatLike, cv2.typing.MatLike, cv2.typing.MatLike, cv2.typing.Rect, cv2.typing.Rect]: ... +@_typing.overload +def stereoRectify(cameraMatrix1: UMat, distCoeffs1: UMat, cameraMatrix2: UMat, distCoeffs2: UMat, imageSize: cv2.typing.Size, R: UMat, T: UMat, R1: UMat | None = ..., R2: UMat | None = ..., P1: UMat | None = ..., P2: UMat | None = ..., Q: UMat | None = ..., flags: int = ..., alpha: float = ..., newImageSize: cv2.typing.Size = ...) -> tuple[UMat, UMat, UMat, UMat, UMat, cv2.typing.Rect, cv2.typing.Rect]: ... + +@_typing.overload +def stereoRectifyUncalibrated(points1: cv2.typing.MatLike, points2: cv2.typing.MatLike, F: cv2.typing.MatLike, imgSize: cv2.typing.Size, H1: cv2.typing.MatLike | None = ..., H2: cv2.typing.MatLike | None = ..., threshold: float = ...) -> tuple[bool, cv2.typing.MatLike, cv2.typing.MatLike]: ... +@_typing.overload +def stereoRectifyUncalibrated(points1: UMat, points2: UMat, F: UMat, imgSize: cv2.typing.Size, H1: UMat | None = ..., H2: UMat | None = ..., threshold: float = ...) -> tuple[bool, UMat, UMat]: ... + +@_typing.overload +def stylization(src: cv2.typing.MatLike, dst: cv2.typing.MatLike | None = ..., sigma_s: float = ..., sigma_r: float = ...) -> cv2.typing.MatLike: ... +@_typing.overload +def stylization(src: UMat, dst: UMat | None = ..., sigma_s: float = ..., sigma_r: float = ...) -> UMat: ... + +@_typing.overload +def subtract(src1: cv2.typing.MatLike, src2: cv2.typing.MatLike, dst: cv2.typing.MatLike | None = ..., mask: cv2.typing.MatLike | None = ..., dtype: int = ...) -> cv2.typing.MatLike: ... +@_typing.overload +def subtract(src1: UMat, src2: UMat, dst: UMat | None = ..., mask: UMat | None = ..., dtype: int = ...) -> UMat: ... + +@_typing.overload +def sumElems(src: cv2.typing.MatLike) -> cv2.typing.Scalar: ... +@_typing.overload +def sumElems(src: UMat) -> cv2.typing.Scalar: ... + +@_typing.overload +def textureFlattening(src: cv2.typing.MatLike, mask: cv2.typing.MatLike, dst: cv2.typing.MatLike | None = ..., low_threshold: float = ..., high_threshold: float = ..., kernel_size: int = ...) -> cv2.typing.MatLike: ... +@_typing.overload +def textureFlattening(src: UMat, mask: UMat, dst: UMat | None = ..., low_threshold: float = ..., high_threshold: float = ..., kernel_size: int = ...) -> UMat: ... + +@_typing.overload +def threshold(src: cv2.typing.MatLike, thresh: float, maxval: float, type: int, dst: cv2.typing.MatLike | None = ...) -> tuple[float, cv2.typing.MatLike]: ... +@_typing.overload +def threshold(src: UMat, thresh: float, maxval: float, type: int, dst: UMat | None = ...) -> tuple[float, UMat]: ... + +@_typing.overload +def trace(mtx: cv2.typing.MatLike) -> cv2.typing.Scalar: ... +@_typing.overload +def trace(mtx: UMat) -> cv2.typing.Scalar: ... + +@_typing.overload +def transform(src: cv2.typing.MatLike, m: cv2.typing.MatLike, dst: cv2.typing.MatLike | None = ...) -> cv2.typing.MatLike: ... +@_typing.overload +def transform(src: UMat, m: UMat, dst: UMat | None = ...) -> UMat: ... + +@_typing.overload +def transpose(src: cv2.typing.MatLike, dst: cv2.typing.MatLike | None = ...) -> cv2.typing.MatLike: ... +@_typing.overload +def transpose(src: UMat, dst: UMat | None = ...) -> UMat: ... + +@_typing.overload +def transposeND(src: cv2.typing.MatLike, order: _typing.Sequence[int], dst: cv2.typing.MatLike | None = ...) -> cv2.typing.MatLike: ... +@_typing.overload +def transposeND(src: UMat, order: _typing.Sequence[int], dst: UMat | None = ...) -> UMat: ... + +@_typing.overload +def triangulatePoints(projMatr1: cv2.typing.MatLike, projMatr2: cv2.typing.MatLike, projPoints1: cv2.typing.MatLike, projPoints2: cv2.typing.MatLike, points4D: cv2.typing.MatLike | None = ...) -> cv2.typing.MatLike: ... +@_typing.overload +def triangulatePoints(projMatr1: UMat, projMatr2: UMat, projPoints1: UMat, projPoints2: UMat, points4D: UMat | None = ...) -> UMat: ... + +@_typing.overload +def undistort(src: cv2.typing.MatLike, cameraMatrix: cv2.typing.MatLike, distCoeffs: cv2.typing.MatLike, dst: cv2.typing.MatLike | None = ..., newCameraMatrix: cv2.typing.MatLike | None = ...) -> cv2.typing.MatLike: ... +@_typing.overload +def undistort(src: UMat, cameraMatrix: UMat, distCoeffs: UMat, dst: UMat | None = ..., newCameraMatrix: UMat | None = ...) -> UMat: ... + +@_typing.overload +def undistortImagePoints(src: cv2.typing.MatLike, cameraMatrix: cv2.typing.MatLike, distCoeffs: cv2.typing.MatLike, dst: cv2.typing.MatLike | None = ..., arg1: cv2.typing.TermCriteria = ...) -> cv2.typing.MatLike: ... +@_typing.overload +def undistortImagePoints(src: UMat, cameraMatrix: UMat, distCoeffs: UMat, dst: UMat | None = ..., arg1: cv2.typing.TermCriteria = ...) -> UMat: ... + +@_typing.overload +def undistortPoints(src: cv2.typing.MatLike, cameraMatrix: cv2.typing.MatLike, distCoeffs: cv2.typing.MatLike, dst: cv2.typing.MatLike | None = ..., R: cv2.typing.MatLike | None = ..., P: cv2.typing.MatLike | None = ...) -> cv2.typing.MatLike: ... +@_typing.overload +def undistortPoints(src: UMat, cameraMatrix: UMat, distCoeffs: UMat, dst: UMat | None = ..., R: UMat | None = ..., P: UMat | None = ...) -> UMat: ... + +@_typing.overload +def undistortPointsIter(src: cv2.typing.MatLike, cameraMatrix: cv2.typing.MatLike, distCoeffs: cv2.typing.MatLike, R: cv2.typing.MatLike, P: cv2.typing.MatLike, criteria: cv2.typing.TermCriteria, dst: cv2.typing.MatLike | None = ...) -> cv2.typing.MatLike: ... +@_typing.overload +def undistortPointsIter(src: UMat, cameraMatrix: UMat, distCoeffs: UMat, R: UMat, P: UMat, criteria: cv2.typing.TermCriteria, dst: UMat | None = ...) -> UMat: ... + +def useOpenVX() -> bool: ... + +def useOptimized() -> bool: ... + +@_typing.overload +def validateDisparity(disparity: cv2.typing.MatLike, cost: cv2.typing.MatLike, minDisparity: int, numberOfDisparities: int, disp12MaxDisp: int = ...) -> cv2.typing.MatLike: ... +@_typing.overload +def validateDisparity(disparity: UMat, cost: UMat, minDisparity: int, numberOfDisparities: int, disp12MaxDisp: int = ...) -> UMat: ... + +@_typing.overload +def vconcat(src: _typing.Sequence[cv2.typing.MatLike], dst: cv2.typing.MatLike | None = ...) -> cv2.typing.MatLike: ... +@_typing.overload +def vconcat(src: _typing.Sequence[UMat], dst: UMat | None = ...) -> UMat: ... + +def waitKey(delay: int = ...) -> int: ... + +def waitKeyEx(delay: int = ...) -> int: ... + +@_typing.overload +def warpAffine(src: cv2.typing.MatLike, M: cv2.typing.MatLike, dsize: cv2.typing.Size, dst: cv2.typing.MatLike | None = ..., flags: int = ..., borderMode: int = ..., borderValue: cv2.typing.Scalar = ...) -> cv2.typing.MatLike: ... +@_typing.overload +def warpAffine(src: UMat, M: UMat, dsize: cv2.typing.Size, dst: UMat | None = ..., flags: int = ..., borderMode: int = ..., borderValue: cv2.typing.Scalar = ...) -> UMat: ... + +@_typing.overload +def warpPerspective(src: cv2.typing.MatLike, M: cv2.typing.MatLike, dsize: cv2.typing.Size, dst: cv2.typing.MatLike | None = ..., flags: int = ..., borderMode: int = ..., borderValue: cv2.typing.Scalar = ...) -> cv2.typing.MatLike: ... +@_typing.overload +def warpPerspective(src: UMat, M: UMat, dsize: cv2.typing.Size, dst: UMat | None = ..., flags: int = ..., borderMode: int = ..., borderValue: cv2.typing.Scalar = ...) -> UMat: ... + +@_typing.overload +def warpPolar(src: cv2.typing.MatLike, dsize: cv2.typing.Size, center: cv2.typing.Point2f, maxRadius: float, flags: int, dst: cv2.typing.MatLike | None = ...) -> cv2.typing.MatLike: ... +@_typing.overload +def warpPolar(src: UMat, dsize: cv2.typing.Size, center: cv2.typing.Point2f, maxRadius: float, flags: int, dst: UMat | None = ...) -> UMat: ... + +@_typing.overload +def watershed(image: cv2.typing.MatLike, markers: cv2.typing.MatLike) -> cv2.typing.MatLike: ... +@_typing.overload +def watershed(image: UMat, markers: UMat) -> UMat: ... + +@_typing.overload +def writeOpticalFlow(path: str, flow: cv2.typing.MatLike) -> bool: ... +@_typing.overload +def writeOpticalFlow(path: str, flow: UMat) -> bool: ... + +def createTrackbar(trackbarName: str, windowName: str, value: int, count: int, onChange: _typing.Callable[[int], None]) -> None: ... + +def createButton(buttonName: str, onChange: _typing.Callable[[tuple[int] | tuple[int, _typing.Any]], None], userData: _typing.Any | None = ..., buttonType: int = ..., initialButtonState: int = ...) -> None: ... + +def setMouseCallback(windowName: str, onMouse: _typing.Callable[[int, int, int, int, _typing.Any | None], None], param: _typing.Any | None = ...) -> None: ... + +def CV_8UC(channels: int) -> int: ... + +def CV_8SC(channels: int) -> int: ... + +def CV_16UC(channels: int) -> int: ... + +def CV_16SC(channels: int) -> int: ... + +def CV_32SC(channels: int) -> int: ... + +def CV_32FC(channels: int) -> int: ... + +def CV_64FC(channels: int) -> int: ... + +def CV_16FC(channels: int) -> int: ... + +def CV_MAKETYPE(depth: int, channels: int) -> int: ... + +def dnn_registerLayer(layerTypeName: str, layerClass: _typing.Type[cv2.dnn.LayerProtocol]) -> None: ... + +def dnn_unregisterLayer(layerTypeName: str) -> None: ... + +def redirectError(onError: _typing.Callable[[int, str, str, str, int], None] | None) -> None: ... + + diff --git a/venv/lib/python3.11/site-packages/cv2/aruco/__init__.pyi b/venv/lib/python3.11/site-packages/cv2/aruco/__init__.pyi new file mode 100644 index 0000000000000000000000000000000000000000..9e252203471e3b1a9867e94fa677120996e1c136 --- /dev/null +++ b/venv/lib/python3.11/site-packages/cv2/aruco/__init__.pyi @@ -0,0 +1,303 @@ +__all__: list[str] = [] + +import cv2 +import cv2.typing +import typing as _typing + + +# Enumerations +CORNER_REFINE_NONE: int +CORNER_REFINE_SUBPIX: int +CORNER_REFINE_CONTOUR: int +CORNER_REFINE_APRILTAG: int +CornerRefineMethod = int +"""One of [CORNER_REFINE_NONE, CORNER_REFINE_SUBPIX, CORNER_REFINE_CONTOUR, CORNER_REFINE_APRILTAG]""" + +DICT_4X4_50: int +DICT_4X4_100: int +DICT_4X4_250: int +DICT_4X4_1000: int +DICT_5X5_50: int +DICT_5X5_100: int +DICT_5X5_250: int +DICT_5X5_1000: int +DICT_6X6_50: int +DICT_6X6_100: int +DICT_6X6_250: int +DICT_6X6_1000: int +DICT_7X7_50: int +DICT_7X7_100: int +DICT_7X7_250: int +DICT_7X7_1000: int +DICT_ARUCO_ORIGINAL: int +DICT_APRILTAG_16h5: int +DICT_APRILTAG_16H5: int +DICT_APRILTAG_25h9: int +DICT_APRILTAG_25H9: int +DICT_APRILTAG_36h10: int +DICT_APRILTAG_36H10: int +DICT_APRILTAG_36h11: int +DICT_APRILTAG_36H11: int +DICT_ARUCO_MIP_36h12: int +DICT_ARUCO_MIP_36H12: int +PredefinedDictionaryType = int +"""One of [DICT_4X4_50, DICT_4X4_100, DICT_4X4_250, DICT_4X4_1000, DICT_5X5_50, DICT_5X5_100, DICT_5X5_250, DICT_5X5_1000, DICT_6X6_50, DICT_6X6_100, DICT_6X6_250, DICT_6X6_1000, DICT_7X7_50, DICT_7X7_100, DICT_7X7_250, DICT_7X7_1000, DICT_ARUCO_ORIGINAL, DICT_APRILTAG_16h5, DICT_APRILTAG_16H5, DICT_APRILTAG_25h9, DICT_APRILTAG_25H9, DICT_APRILTAG_36h10, DICT_APRILTAG_36H10, DICT_APRILTAG_36h11, DICT_APRILTAG_36H11, DICT_ARUCO_MIP_36h12, DICT_ARUCO_MIP_36H12]""" + + + +# Classes +class Board: + # Functions + @_typing.overload + def __init__(self, objPoints: _typing.Sequence[cv2.typing.MatLike], dictionary: Dictionary, ids: cv2.typing.MatLike) -> None: ... + @_typing.overload + def __init__(self, objPoints: _typing.Sequence[cv2.UMat], dictionary: Dictionary, ids: cv2.UMat) -> None: ... + + def getDictionary(self) -> Dictionary: ... + + def getObjPoints(self) -> _typing.Sequence[_typing.Sequence[cv2.typing.Point3f]]: ... + + def getIds(self) -> _typing.Sequence[int]: ... + + def getRightBottomCorner(self) -> cv2.typing.Point3f: ... + + @_typing.overload + def matchImagePoints(self, detectedCorners: _typing.Sequence[cv2.typing.MatLike], detectedIds: cv2.typing.MatLike, objPoints: cv2.typing.MatLike | None = ..., imgPoints: cv2.typing.MatLike | None = ...) -> tuple[cv2.typing.MatLike, cv2.typing.MatLike]: ... + @_typing.overload + def matchImagePoints(self, detectedCorners: _typing.Sequence[cv2.UMat], detectedIds: cv2.UMat, objPoints: cv2.UMat | None = ..., imgPoints: cv2.UMat | None = ...) -> tuple[cv2.UMat, cv2.UMat]: ... + + @_typing.overload + def generateImage(self, outSize: cv2.typing.Size, img: cv2.typing.MatLike | None = ..., marginSize: int = ..., borderBits: int = ...) -> cv2.typing.MatLike: ... + @_typing.overload + def generateImage(self, outSize: cv2.typing.Size, img: cv2.UMat | None = ..., marginSize: int = ..., borderBits: int = ...) -> cv2.UMat: ... + + +class GridBoard(Board): + # Functions + @_typing.overload + def __init__(self, size: cv2.typing.Size, markerLength: float, markerSeparation: float, dictionary: Dictionary, ids: cv2.typing.MatLike | None = ...) -> None: ... + @_typing.overload + def __init__(self, size: cv2.typing.Size, markerLength: float, markerSeparation: float, dictionary: Dictionary, ids: cv2.UMat | None = ...) -> None: ... + + def getGridSize(self) -> cv2.typing.Size: ... + + def getMarkerLength(self) -> float: ... + + def getMarkerSeparation(self) -> float: ... + + +class CharucoBoard(Board): + # Functions + @_typing.overload + def __init__(self, size: cv2.typing.Size, squareLength: float, markerLength: float, dictionary: Dictionary, ids: cv2.typing.MatLike | None = ...) -> None: ... + @_typing.overload + def __init__(self, size: cv2.typing.Size, squareLength: float, markerLength: float, dictionary: Dictionary, ids: cv2.UMat | None = ...) -> None: ... + + def setLegacyPattern(self, legacyPattern: bool) -> None: ... + + def getLegacyPattern(self) -> bool: ... + + def getChessboardSize(self) -> cv2.typing.Size: ... + + def getSquareLength(self) -> float: ... + + def getMarkerLength(self) -> float: ... + + def getChessboardCorners(self) -> _typing.Sequence[cv2.typing.Point3f]: ... + + @_typing.overload + def checkCharucoCornersCollinear(self, charucoIds: cv2.typing.MatLike) -> bool: ... + @_typing.overload + def checkCharucoCornersCollinear(self, charucoIds: cv2.UMat) -> bool: ... + + +class DetectorParameters: + adaptiveThreshWinSizeMin: int + adaptiveThreshWinSizeMax: int + adaptiveThreshWinSizeStep: int + adaptiveThreshConstant: float + minMarkerPerimeterRate: float + maxMarkerPerimeterRate: float + polygonalApproxAccuracyRate: float + minCornerDistanceRate: float + minDistanceToBorder: int + minMarkerDistanceRate: float + minGroupDistance: float + cornerRefinementMethod: int + cornerRefinementWinSize: int + relativeCornerRefinmentWinSize: float + cornerRefinementMaxIterations: int + cornerRefinementMinAccuracy: float + markerBorderBits: int + perspectiveRemovePixelPerCell: int + perspectiveRemoveIgnoredMarginPerCell: float + maxErroneousBitsInBorderRate: float + minOtsuStdDev: float + errorCorrectionRate: float + aprilTagQuadDecimate: float + aprilTagQuadSigma: float + aprilTagMinClusterPixels: int + aprilTagMaxNmaxima: int + aprilTagCriticalRad: float + aprilTagMaxLineFitMse: float + aprilTagMinWhiteBlackDiff: int + aprilTagDeglitch: int + detectInvertedMarker: bool + useAruco3Detection: bool + minSideLengthCanonicalImg: int + minMarkerLengthRatioOriginalImg: float + + # Functions + def __init__(self) -> None: ... + + def readDetectorParameters(self, fn: cv2.FileNode) -> bool: ... + + def writeDetectorParameters(self, fs: cv2.FileStorage, name: str = ...) -> bool: ... + + +class RefineParameters: + minRepDistance: float + errorCorrectionRate: float + checkAllOrders: bool + + # Functions + def __init__(self, minRepDistance: float = ..., errorCorrectionRate: float = ..., checkAllOrders: bool = ...) -> None: ... + + def readRefineParameters(self, fn: cv2.FileNode) -> bool: ... + + def writeRefineParameters(self, fs: cv2.FileStorage, name: str = ...) -> bool: ... + + +class ArucoDetector(cv2.Algorithm): + # Functions + def __init__(self, dictionary: Dictionary = ..., detectorParams: DetectorParameters = ..., refineParams: RefineParameters = ...) -> None: ... + + @_typing.overload + def detectMarkers(self, image: cv2.typing.MatLike, corners: _typing.Sequence[cv2.typing.MatLike] | None = ..., ids: cv2.typing.MatLike | None = ..., rejectedImgPoints: _typing.Sequence[cv2.typing.MatLike] | None = ...) -> tuple[_typing.Sequence[cv2.typing.MatLike], cv2.typing.MatLike, _typing.Sequence[cv2.typing.MatLike]]: ... + @_typing.overload + def detectMarkers(self, image: cv2.UMat, corners: _typing.Sequence[cv2.UMat] | None = ..., ids: cv2.UMat | None = ..., rejectedImgPoints: _typing.Sequence[cv2.UMat] | None = ...) -> tuple[_typing.Sequence[cv2.UMat], cv2.UMat, _typing.Sequence[cv2.UMat]]: ... + + @_typing.overload + def refineDetectedMarkers(self, image: cv2.typing.MatLike, board: Board, detectedCorners: _typing.Sequence[cv2.typing.MatLike], detectedIds: cv2.typing.MatLike, rejectedCorners: _typing.Sequence[cv2.typing.MatLike], cameraMatrix: cv2.typing.MatLike | None = ..., distCoeffs: cv2.typing.MatLike | None = ..., recoveredIdxs: cv2.typing.MatLike | None = ...) -> tuple[_typing.Sequence[cv2.typing.MatLike], cv2.typing.MatLike, _typing.Sequence[cv2.typing.MatLike], cv2.typing.MatLike]: ... + @_typing.overload + def refineDetectedMarkers(self, image: cv2.UMat, board: Board, detectedCorners: _typing.Sequence[cv2.UMat], detectedIds: cv2.UMat, rejectedCorners: _typing.Sequence[cv2.UMat], cameraMatrix: cv2.UMat | None = ..., distCoeffs: cv2.UMat | None = ..., recoveredIdxs: cv2.UMat | None = ...) -> tuple[_typing.Sequence[cv2.UMat], cv2.UMat, _typing.Sequence[cv2.UMat], cv2.UMat]: ... + + def getDictionary(self) -> Dictionary: ... + + def setDictionary(self, dictionary: Dictionary) -> None: ... + + def getDetectorParameters(self) -> DetectorParameters: ... + + def setDetectorParameters(self, detectorParameters: DetectorParameters) -> None: ... + + def getRefineParameters(self) -> RefineParameters: ... + + def setRefineParameters(self, refineParameters: RefineParameters) -> None: ... + + def write(self, fs: cv2.FileStorage, name: str) -> None: ... + + def read(self, fn: cv2.FileNode) -> None: ... + + +class Dictionary: + bytesList: cv2.typing.MatLike + markerSize: int + maxCorrectionBits: int + + # Functions + @_typing.overload + def __init__(self) -> None: ... + @_typing.overload + def __init__(self, bytesList: cv2.typing.MatLike, _markerSize: int, maxcorr: int = ...) -> None: ... + + def readDictionary(self, fn: cv2.FileNode) -> bool: ... + + def writeDictionary(self, fs: cv2.FileStorage, name: str = ...) -> None: ... + + def identify(self, onlyBits: cv2.typing.MatLike, maxCorrectionRate: float) -> tuple[bool, int, int]: ... + + @_typing.overload + def getDistanceToId(self, bits: cv2.typing.MatLike, id: int, allRotations: bool = ...) -> int: ... + @_typing.overload + def getDistanceToId(self, bits: cv2.UMat, id: int, allRotations: bool = ...) -> int: ... + + @_typing.overload + def generateImageMarker(self, id: int, sidePixels: int, _img: cv2.typing.MatLike | None = ..., borderBits: int = ...) -> cv2.typing.MatLike: ... + @_typing.overload + def generateImageMarker(self, id: int, sidePixels: int, _img: cv2.UMat | None = ..., borderBits: int = ...) -> cv2.UMat: ... + + @staticmethod + def getByteListFromBits(bits: cv2.typing.MatLike) -> cv2.typing.MatLike: ... + + @staticmethod + def getBitsFromByteList(byteList: cv2.typing.MatLike, markerSize: int) -> cv2.typing.MatLike: ... + + +class CharucoParameters: + cameraMatrix: cv2.typing.MatLike + distCoeffs: cv2.typing.MatLike + minMarkers: int + tryRefineMarkers: bool + + # Functions + def __init__(self) -> None: ... + + +class CharucoDetector(cv2.Algorithm): + # Functions + def __init__(self, board: CharucoBoard, charucoParams: CharucoParameters = ..., detectorParams: DetectorParameters = ..., refineParams: RefineParameters = ...) -> None: ... + + def getBoard(self) -> CharucoBoard: ... + + def setBoard(self, board: CharucoBoard) -> None: ... + + def getCharucoParameters(self) -> CharucoParameters: ... + + def setCharucoParameters(self, charucoParameters: CharucoParameters) -> None: ... + + def getDetectorParameters(self) -> DetectorParameters: ... + + def setDetectorParameters(self, detectorParameters: DetectorParameters) -> None: ... + + def getRefineParameters(self) -> RefineParameters: ... + + def setRefineParameters(self, refineParameters: RefineParameters) -> None: ... + + @_typing.overload + def detectBoard(self, image: cv2.typing.MatLike, charucoCorners: cv2.typing.MatLike | None = ..., charucoIds: cv2.typing.MatLike | None = ..., markerCorners: _typing.Sequence[cv2.typing.MatLike] | None = ..., markerIds: cv2.typing.MatLike | None = ...) -> tuple[cv2.typing.MatLike, cv2.typing.MatLike, _typing.Sequence[cv2.typing.MatLike], cv2.typing.MatLike]: ... + @_typing.overload + def detectBoard(self, image: cv2.UMat, charucoCorners: cv2.UMat | None = ..., charucoIds: cv2.UMat | None = ..., markerCorners: _typing.Sequence[cv2.UMat] | None = ..., markerIds: cv2.UMat | None = ...) -> tuple[cv2.UMat, cv2.UMat, _typing.Sequence[cv2.UMat], cv2.UMat]: ... + + @_typing.overload + def detectDiamonds(self, image: cv2.typing.MatLike, diamondCorners: _typing.Sequence[cv2.typing.MatLike] | None = ..., diamondIds: cv2.typing.MatLike | None = ..., markerCorners: _typing.Sequence[cv2.typing.MatLike] | None = ..., markerIds: cv2.typing.MatLike | None = ...) -> tuple[_typing.Sequence[cv2.typing.MatLike], cv2.typing.MatLike, _typing.Sequence[cv2.typing.MatLike], cv2.typing.MatLike]: ... + @_typing.overload + def detectDiamonds(self, image: cv2.UMat, diamondCorners: _typing.Sequence[cv2.UMat] | None = ..., diamondIds: cv2.UMat | None = ..., markerCorners: _typing.Sequence[cv2.UMat] | None = ..., markerIds: cv2.UMat | None = ...) -> tuple[_typing.Sequence[cv2.UMat], cv2.UMat, _typing.Sequence[cv2.UMat], cv2.UMat]: ... + + + +# Functions +@_typing.overload +def drawDetectedCornersCharuco(image: cv2.typing.MatLike, charucoCorners: cv2.typing.MatLike, charucoIds: cv2.typing.MatLike | None = ..., cornerColor: cv2.typing.Scalar = ...) -> cv2.typing.MatLike: ... +@_typing.overload +def drawDetectedCornersCharuco(image: cv2.UMat, charucoCorners: cv2.UMat, charucoIds: cv2.UMat | None = ..., cornerColor: cv2.typing.Scalar = ...) -> cv2.UMat: ... + +@_typing.overload +def drawDetectedDiamonds(image: cv2.typing.MatLike, diamondCorners: _typing.Sequence[cv2.typing.MatLike], diamondIds: cv2.typing.MatLike | None = ..., borderColor: cv2.typing.Scalar = ...) -> cv2.typing.MatLike: ... +@_typing.overload +def drawDetectedDiamonds(image: cv2.UMat, diamondCorners: _typing.Sequence[cv2.UMat], diamondIds: cv2.UMat | None = ..., borderColor: cv2.typing.Scalar = ...) -> cv2.UMat: ... + +@_typing.overload +def drawDetectedMarkers(image: cv2.typing.MatLike, corners: _typing.Sequence[cv2.typing.MatLike], ids: cv2.typing.MatLike | None = ..., borderColor: cv2.typing.Scalar = ...) -> cv2.typing.MatLike: ... +@_typing.overload +def drawDetectedMarkers(image: cv2.UMat, corners: _typing.Sequence[cv2.UMat], ids: cv2.UMat | None = ..., borderColor: cv2.typing.Scalar = ...) -> cv2.UMat: ... + +def extendDictionary(nMarkers: int, markerSize: int, baseDictionary: Dictionary = ..., randomSeed: int = ...) -> Dictionary: ... + +@_typing.overload +def generateImageMarker(dictionary: Dictionary, id: int, sidePixels: int, img: cv2.typing.MatLike | None = ..., borderBits: int = ...) -> cv2.typing.MatLike: ... +@_typing.overload +def generateImageMarker(dictionary: Dictionary, id: int, sidePixels: int, img: cv2.UMat | None = ..., borderBits: int = ...) -> cv2.UMat: ... + +def getPredefinedDictionary(dict: int) -> Dictionary: ... + + diff --git a/venv/lib/python3.11/site-packages/cv2/barcode/__init__.pyi b/venv/lib/python3.11/site-packages/cv2/barcode/__init__.pyi new file mode 100644 index 0000000000000000000000000000000000000000..2f494ae93a524cfd9daf52f666fa23d2b142ec33 --- /dev/null +++ b/venv/lib/python3.11/site-packages/cv2/barcode/__init__.pyi @@ -0,0 +1,39 @@ +__all__: list[str] = [] + +import cv2 +import cv2.typing +import typing as _typing + + +# Classes +class BarcodeDetector(cv2.GraphicalCodeDetector): + # Functions + @_typing.overload + def __init__(self) -> None: ... + @_typing.overload + def __init__(self, prototxt_path: str, model_path: str) -> None: ... + + @_typing.overload + def decodeWithType(self, img: cv2.typing.MatLike, points: cv2.typing.MatLike) -> tuple[bool, _typing.Sequence[str], _typing.Sequence[str]]: ... + @_typing.overload + def decodeWithType(self, img: cv2.UMat, points: cv2.UMat) -> tuple[bool, _typing.Sequence[str], _typing.Sequence[str]]: ... + + @_typing.overload + def detectAndDecodeWithType(self, img: cv2.typing.MatLike, points: cv2.typing.MatLike | None = ...) -> tuple[bool, _typing.Sequence[str], _typing.Sequence[str], cv2.typing.MatLike]: ... + @_typing.overload + def detectAndDecodeWithType(self, img: cv2.UMat, points: cv2.UMat | None = ...) -> tuple[bool, _typing.Sequence[str], _typing.Sequence[str], cv2.UMat]: ... + + def getDownsamplingThreshold(self) -> float: ... + + def setDownsamplingThreshold(self, thresh: float) -> BarcodeDetector: ... + + def getDetectorScales(self) -> _typing.Sequence[float]: ... + + def setDetectorScales(self, sizes: _typing.Sequence[float]) -> BarcodeDetector: ... + + def getGradientThreshold(self) -> float: ... + + def setGradientThreshold(self, thresh: float) -> BarcodeDetector: ... + + + diff --git a/venv/lib/python3.11/site-packages/cv2/config-3.py b/venv/lib/python3.11/site-packages/cv2/config-3.py new file mode 100644 index 0000000000000000000000000000000000000000..587a42bfacd8401281a51fe5dbc8ea44f4e156d5 --- /dev/null +++ b/venv/lib/python3.11/site-packages/cv2/config-3.py @@ -0,0 +1,24 @@ +PYTHON_EXTENSIONS_PATHS = [ + LOADER_DIR +] + PYTHON_EXTENSIONS_PATHS + +ci_and_not_headless = False + +try: + from .version import ci_build, headless + + ci_and_not_headless = ci_build and not headless +except: + pass + +# the Qt plugin is included currently only in the pre-built wheels +if sys.platform.startswith("linux") and ci_and_not_headless: + os.environ["QT_QPA_PLATFORM_PLUGIN_PATH"] = os.path.join( + os.path.dirname(os.path.abspath(__file__)), "qt", "plugins" + ) + +# Qt will throw warning on Linux if fonts are not found +if sys.platform.startswith("linux") and ci_and_not_headless: + os.environ["QT_QPA_FONTDIR"] = os.path.join( + os.path.dirname(os.path.abspath(__file__)), "qt", "fonts" + ) diff --git a/venv/lib/python3.11/site-packages/cv2/config.py b/venv/lib/python3.11/site-packages/cv2/config.py new file mode 100644 index 0000000000000000000000000000000000000000..a95fbcf0db643541979c557588cb264233bc6891 --- /dev/null +++ b/venv/lib/python3.11/site-packages/cv2/config.py @@ -0,0 +1,5 @@ +import os + +BINARIES_PATHS = [ + os.path.join(os.path.join(LOADER_DIR, '../../'), 'lib64') +] + BINARIES_PATHS diff --git a/venv/lib/python3.11/site-packages/cv2/cuda/__init__.pyi b/venv/lib/python3.11/site-packages/cv2/cuda/__init__.pyi new file mode 100644 index 0000000000000000000000000000000000000000..03278eb887fc15764fb5a748d5c2239e0e1ad987 --- /dev/null +++ b/venv/lib/python3.11/site-packages/cv2/cuda/__init__.pyi @@ -0,0 +1,508 @@ +__all__: list[str] = [] + +import cv2 +import cv2.typing +import typing as _typing + + +# Enumerations +FEATURE_SET_COMPUTE_10: int +FEATURE_SET_COMPUTE_11: int +FEATURE_SET_COMPUTE_12: int +FEATURE_SET_COMPUTE_13: int +FEATURE_SET_COMPUTE_20: int +FEATURE_SET_COMPUTE_21: int +FEATURE_SET_COMPUTE_30: int +FEATURE_SET_COMPUTE_32: int +FEATURE_SET_COMPUTE_35: int +FEATURE_SET_COMPUTE_50: int +GLOBAL_ATOMICS: int +SHARED_ATOMICS: int +NATIVE_DOUBLE: int +WARP_SHUFFLE_FUNCTIONS: int +DYNAMIC_PARALLELISM: int +FeatureSet = int +"""One of [FEATURE_SET_COMPUTE_10, FEATURE_SET_COMPUTE_11, FEATURE_SET_COMPUTE_12, FEATURE_SET_COMPUTE_13, FEATURE_SET_COMPUTE_20, FEATURE_SET_COMPUTE_21, FEATURE_SET_COMPUTE_30, FEATURE_SET_COMPUTE_32, FEATURE_SET_COMPUTE_35, FEATURE_SET_COMPUTE_50, GLOBAL_ATOMICS, SHARED_ATOMICS, NATIVE_DOUBLE, WARP_SHUFFLE_FUNCTIONS, DYNAMIC_PARALLELISM]""" + + +HostMem_PAGE_LOCKED: int +HOST_MEM_PAGE_LOCKED: int +HostMem_SHARED: int +HOST_MEM_SHARED: int +HostMem_WRITE_COMBINED: int +HOST_MEM_WRITE_COMBINED: int +HostMem_AllocType = int +"""One of [HostMem_PAGE_LOCKED, HOST_MEM_PAGE_LOCKED, HostMem_SHARED, HOST_MEM_SHARED, HostMem_WRITE_COMBINED, HOST_MEM_WRITE_COMBINED]""" + +Event_DEFAULT: int +EVENT_DEFAULT: int +Event_BLOCKING_SYNC: int +EVENT_BLOCKING_SYNC: int +Event_DISABLE_TIMING: int +EVENT_DISABLE_TIMING: int +Event_INTERPROCESS: int +EVENT_INTERPROCESS: int +Event_CreateFlags = int +"""One of [Event_DEFAULT, EVENT_DEFAULT, Event_BLOCKING_SYNC, EVENT_BLOCKING_SYNC, Event_DISABLE_TIMING, EVENT_DISABLE_TIMING, Event_INTERPROCESS, EVENT_INTERPROCESS]""" + +DeviceInfo_ComputeModeDefault: int +DEVICE_INFO_COMPUTE_MODE_DEFAULT: int +DeviceInfo_ComputeModeExclusive: int +DEVICE_INFO_COMPUTE_MODE_EXCLUSIVE: int +DeviceInfo_ComputeModeProhibited: int +DEVICE_INFO_COMPUTE_MODE_PROHIBITED: int +DeviceInfo_ComputeModeExclusiveProcess: int +DEVICE_INFO_COMPUTE_MODE_EXCLUSIVE_PROCESS: int +DeviceInfo_ComputeMode = int +"""One of [DeviceInfo_ComputeModeDefault, DEVICE_INFO_COMPUTE_MODE_DEFAULT, DeviceInfo_ComputeModeExclusive, DEVICE_INFO_COMPUTE_MODE_EXCLUSIVE, DeviceInfo_ComputeModeProhibited, DEVICE_INFO_COMPUTE_MODE_PROHIBITED, DeviceInfo_ComputeModeExclusiveProcess, DEVICE_INFO_COMPUTE_MODE_EXCLUSIVE_PROCESS]""" + + +# Classes +class GpuMat: + @property + def step(self) -> int: ... + + # Classes + class Allocator: + ... + + + # Functions + @_typing.overload + def __init__(self, allocator: GpuMat.Allocator = ...) -> None: ... + @_typing.overload + def __init__(self, rows: int, cols: int, type: int, allocator: GpuMat.Allocator = ...) -> None: ... + @_typing.overload + def __init__(self, size: cv2.typing.Size, type: int, allocator: GpuMat.Allocator = ...) -> None: ... + @_typing.overload + def __init__(self, rows: int, cols: int, type: int, s: cv2.typing.Scalar, allocator: GpuMat.Allocator = ...) -> None: ... + @_typing.overload + def __init__(self, size: cv2.typing.Size, type: int, s: cv2.typing.Scalar, allocator: GpuMat.Allocator = ...) -> None: ... + @_typing.overload + def __init__(self, m: GpuMat) -> None: ... + @_typing.overload + def __init__(self, m: GpuMat, rowRange: cv2.typing.Range, colRange: cv2.typing.Range) -> None: ... + @_typing.overload + def __init__(self, m: GpuMat, roi: cv2.typing.Rect) -> None: ... + @_typing.overload + def __init__(self, arr: cv2.typing.MatLike, allocator: GpuMat.Allocator = ...) -> None: ... + @_typing.overload + def __init__(self, arr: GpuMat, allocator: GpuMat.Allocator = ...) -> None: ... + @_typing.overload + def __init__(self, arr: cv2.UMat, allocator: GpuMat.Allocator = ...) -> None: ... + + @staticmethod + def defaultAllocator() -> GpuMat.Allocator: ... + + @staticmethod + def setDefaultAllocator(allocator: GpuMat.Allocator) -> None: ... + + @_typing.overload + def create(self, rows: int, cols: int, type: int) -> None: ... + @_typing.overload + def create(self, size: cv2.typing.Size, type: int) -> None: ... + + def release(self) -> None: ... + + def swap(self, mat: GpuMat) -> None: ... + + @_typing.overload + def upload(self, arr: cv2.typing.MatLike) -> None: ... + @_typing.overload + def upload(self, arr: GpuMat) -> None: ... + @_typing.overload + def upload(self, arr: cv2.UMat) -> None: ... + @_typing.overload + def upload(self, arr: cv2.typing.MatLike, stream: Stream) -> None: ... + @_typing.overload + def upload(self, arr: GpuMat, stream: Stream) -> None: ... + @_typing.overload + def upload(self, arr: cv2.UMat, stream: Stream) -> None: ... + + @_typing.overload + def download(self, dst: cv2.typing.MatLike | None = ...) -> cv2.typing.MatLike: ... + @_typing.overload + def download(self, dst: GpuMat | None = ...) -> GpuMat: ... + @_typing.overload + def download(self, dst: cv2.UMat | None = ...) -> cv2.UMat: ... + @_typing.overload + def download(self, stream: Stream, dst: cv2.typing.MatLike | None = ...) -> cv2.typing.MatLike: ... + @_typing.overload + def download(self, stream: Stream, dst: GpuMat | None = ...) -> GpuMat: ... + @_typing.overload + def download(self, stream: Stream, dst: cv2.UMat | None = ...) -> cv2.UMat: ... + + def clone(self) -> GpuMat: ... + + @_typing.overload + def copyTo(self, dst: GpuMat | None = ...) -> GpuMat: ... + @_typing.overload + def copyTo(self, stream: Stream, dst: GpuMat | None = ...) -> GpuMat: ... + @_typing.overload + def copyTo(self, mask: GpuMat, dst: GpuMat | None = ...) -> GpuMat: ... + @_typing.overload + def copyTo(self, mask: GpuMat, stream: Stream, dst: GpuMat | None = ...) -> GpuMat: ... + + @_typing.overload + def setTo(self, s: cv2.typing.Scalar) -> GpuMat: ... + @_typing.overload + def setTo(self, s: cv2.typing.Scalar, stream: Stream) -> GpuMat: ... + @_typing.overload + def setTo(self, s: cv2.typing.Scalar, mask: cv2.typing.MatLike) -> GpuMat: ... + @_typing.overload + def setTo(self, s: cv2.typing.Scalar, mask: GpuMat) -> GpuMat: ... + @_typing.overload + def setTo(self, s: cv2.typing.Scalar, mask: cv2.UMat) -> GpuMat: ... + @_typing.overload + def setTo(self, s: cv2.typing.Scalar, mask: cv2.typing.MatLike, stream: Stream) -> GpuMat: ... + @_typing.overload + def setTo(self, s: cv2.typing.Scalar, mask: GpuMat, stream: Stream) -> GpuMat: ... + @_typing.overload + def setTo(self, s: cv2.typing.Scalar, mask: cv2.UMat, stream: Stream) -> GpuMat: ... + + @_typing.overload + def convertTo(self, rtype: int, stream: Stream, dst: GpuMat | None = ...) -> GpuMat: ... + @_typing.overload + def convertTo(self, rtype: int, dst: GpuMat | None = ..., alpha: float = ..., beta: float = ...) -> GpuMat: ... + @_typing.overload + def convertTo(self, rtype: int, alpha: float, beta: float, stream: Stream, dst: GpuMat | None = ...) -> GpuMat: ... + + def assignTo(self, m: GpuMat, type: int = ...) -> None: ... + + def row(self, y: int) -> GpuMat: ... + + def col(self, x: int) -> GpuMat: ... + + @_typing.overload + def rowRange(self, startrow: int, endrow: int) -> GpuMat: ... + @_typing.overload + def rowRange(self, r: cv2.typing.Range) -> GpuMat: ... + + @_typing.overload + def colRange(self, startcol: int, endcol: int) -> GpuMat: ... + @_typing.overload + def colRange(self, r: cv2.typing.Range) -> GpuMat: ... + + def reshape(self, cn: int, rows: int = ...) -> GpuMat: ... + + def locateROI(self, wholeSize: cv2.typing.Size, ofs: cv2.typing.Point) -> None: ... + + def adjustROI(self, dtop: int, dbottom: int, dleft: int, dright: int) -> GpuMat: ... + + def isContinuous(self) -> bool: ... + + def elemSize(self) -> int: ... + + def elemSize1(self) -> int: ... + + def type(self) -> int: ... + + def depth(self) -> int: ... + + def channels(self) -> int: ... + + def step1(self) -> int: ... + + def size(self) -> cv2.typing.Size: ... + + def empty(self) -> bool: ... + + def cudaPtr(self) -> cv2.typing.IntPointer: ... + + def updateContinuityFlag(self) -> None: ... + + +class GpuData: + ... + +class GpuMatND: + ... + +class BufferPool: + # Functions + def __init__(self, stream: Stream) -> None: ... + + @_typing.overload + def getBuffer(self, rows: int, cols: int, type: int) -> GpuMat: ... + @_typing.overload + def getBuffer(self, size: cv2.typing.Size, type: int) -> GpuMat: ... + + def getAllocator(self) -> GpuMat.Allocator: ... + + +class HostMem: + @property + def step(self) -> int: ... + + # Functions + @_typing.overload + def __init__(self, alloc_type: HostMem_AllocType = ...) -> None: ... + @_typing.overload + def __init__(self, rows: int, cols: int, type: int, alloc_type: HostMem_AllocType = ...) -> None: ... + @_typing.overload + def __init__(self, size: cv2.typing.Size, type: int, alloc_type: HostMem_AllocType = ...) -> None: ... + @_typing.overload + def __init__(self, arr: cv2.typing.MatLike, alloc_type: HostMem_AllocType = ...) -> None: ... + @_typing.overload + def __init__(self, arr: GpuMat, alloc_type: HostMem_AllocType = ...) -> None: ... + @_typing.overload + def __init__(self, arr: cv2.UMat, alloc_type: HostMem_AllocType = ...) -> None: ... + + def swap(self, b: HostMem) -> None: ... + + def clone(self) -> HostMem: ... + + def create(self, rows: int, cols: int, type: int) -> None: ... + + def reshape(self, cn: int, rows: int = ...) -> HostMem: ... + + def createMatHeader(self) -> cv2.typing.MatLike: ... + + def isContinuous(self) -> bool: ... + + def elemSize(self) -> int: ... + + def elemSize1(self) -> int: ... + + def type(self) -> int: ... + + def depth(self) -> int: ... + + def channels(self) -> int: ... + + def step1(self) -> int: ... + + def size(self) -> cv2.typing.Size: ... + + def empty(self) -> bool: ... + + +class Stream: + # Functions + @_typing.overload + def __init__(self) -> None: ... + @_typing.overload + def __init__(self, allocator: GpuMat.Allocator) -> None: ... + @_typing.overload + def __init__(self, cudaFlags: int) -> None: ... + + def queryIfComplete(self) -> bool: ... + + def waitForCompletion(self) -> None: ... + + def waitEvent(self, event: Event) -> None: ... + + @classmethod + def Null(cls) -> Stream: ... + + def cudaPtr(self) -> cv2.typing.IntPointer: ... + + +class Event: + # Functions + def __init__(self, flags: Event_CreateFlags = ...) -> None: ... + + def record(self, stream: Stream = ...) -> None: ... + + def queryIfComplete(self) -> bool: ... + + def waitForCompletion(self) -> None: ... + + @staticmethod + def elapsedTime(start: Event, end: Event) -> float: ... + + +class TargetArchs: + # Functions + @staticmethod + def has(major: int, minor: int) -> bool: ... + + @staticmethod + def hasPtx(major: int, minor: int) -> bool: ... + + @staticmethod + def hasBin(major: int, minor: int) -> bool: ... + + @staticmethod + def hasEqualOrLessPtx(major: int, minor: int) -> bool: ... + + @staticmethod + def hasEqualOrGreater(major: int, minor: int) -> bool: ... + + @staticmethod + def hasEqualOrGreaterPtx(major: int, minor: int) -> bool: ... + + @staticmethod + def hasEqualOrGreaterBin(major: int, minor: int) -> bool: ... + + +class DeviceInfo: + # Functions + @_typing.overload + def __init__(self) -> None: ... + @_typing.overload + def __init__(self, device_id: int) -> None: ... + + def deviceID(self) -> int: ... + + def totalGlobalMem(self) -> int: ... + + def sharedMemPerBlock(self) -> int: ... + + def regsPerBlock(self) -> int: ... + + def warpSize(self) -> int: ... + + def memPitch(self) -> int: ... + + def maxThreadsPerBlock(self) -> int: ... + + def maxThreadsDim(self) -> cv2.typing.Vec3i: ... + + def maxGridSize(self) -> cv2.typing.Vec3i: ... + + def clockRate(self) -> int: ... + + def totalConstMem(self) -> int: ... + + def majorVersion(self) -> int: ... + + def minorVersion(self) -> int: ... + + def textureAlignment(self) -> int: ... + + def texturePitchAlignment(self) -> int: ... + + def multiProcessorCount(self) -> int: ... + + def kernelExecTimeoutEnabled(self) -> bool: ... + + def integrated(self) -> bool: ... + + def canMapHostMemory(self) -> bool: ... + + def computeMode(self) -> DeviceInfo_ComputeMode: ... + + def maxTexture1D(self) -> int: ... + + def maxTexture1DMipmap(self) -> int: ... + + def maxTexture1DLinear(self) -> int: ... + + def maxTexture2D(self) -> cv2.typing.Vec2i: ... + + def maxTexture2DMipmap(self) -> cv2.typing.Vec2i: ... + + def maxTexture2DLinear(self) -> cv2.typing.Vec3i: ... + + def maxTexture2DGather(self) -> cv2.typing.Vec2i: ... + + def maxTexture3D(self) -> cv2.typing.Vec3i: ... + + def maxTextureCubemap(self) -> int: ... + + def maxTexture1DLayered(self) -> cv2.typing.Vec2i: ... + + def maxTexture2DLayered(self) -> cv2.typing.Vec3i: ... + + def maxTextureCubemapLayered(self) -> cv2.typing.Vec2i: ... + + def maxSurface1D(self) -> int: ... + + def maxSurface2D(self) -> cv2.typing.Vec2i: ... + + def maxSurface3D(self) -> cv2.typing.Vec3i: ... + + def maxSurface1DLayered(self) -> cv2.typing.Vec2i: ... + + def maxSurface2DLayered(self) -> cv2.typing.Vec3i: ... + + def maxSurfaceCubemap(self) -> int: ... + + def maxSurfaceCubemapLayered(self) -> cv2.typing.Vec2i: ... + + def surfaceAlignment(self) -> int: ... + + def concurrentKernels(self) -> bool: ... + + def ECCEnabled(self) -> bool: ... + + def pciBusID(self) -> int: ... + + def pciDeviceID(self) -> int: ... + + def pciDomainID(self) -> int: ... + + def tccDriver(self) -> bool: ... + + def asyncEngineCount(self) -> int: ... + + def unifiedAddressing(self) -> bool: ... + + def memoryClockRate(self) -> int: ... + + def memoryBusWidth(self) -> int: ... + + def l2CacheSize(self) -> int: ... + + def maxThreadsPerMultiProcessor(self) -> int: ... + + def queryMemory(self, totalMemory: int, freeMemory: int) -> None: ... + + def freeMemory(self) -> int: ... + + def totalMemory(self) -> int: ... + + def isCompatible(self) -> bool: ... + + + +# Functions +@_typing.overload +def createContinuous(rows: int, cols: int, type: int, arr: cv2.typing.MatLike | None = ...) -> cv2.typing.MatLike: ... +@_typing.overload +def createContinuous(rows: int, cols: int, type: int, arr: GpuMat | None = ...) -> GpuMat: ... +@_typing.overload +def createContinuous(rows: int, cols: int, type: int, arr: cv2.UMat | None = ...) -> cv2.UMat: ... + +@_typing.overload +def createGpuMatFromCudaMemory(rows: int, cols: int, type: int, cudaMemoryAddress: int, step: int = ...) -> GpuMat: ... +@_typing.overload +def createGpuMatFromCudaMemory(size: cv2.typing.Size, type: int, cudaMemoryAddress: int, step: int = ...) -> GpuMat: ... + +@_typing.overload +def ensureSizeIsEnough(rows: int, cols: int, type: int, arr: cv2.typing.MatLike | None = ...) -> cv2.typing.MatLike: ... +@_typing.overload +def ensureSizeIsEnough(rows: int, cols: int, type: int, arr: GpuMat | None = ...) -> GpuMat: ... +@_typing.overload +def ensureSizeIsEnough(rows: int, cols: int, type: int, arr: cv2.UMat | None = ...) -> cv2.UMat: ... + +def fastNlMeansDenoising(src: GpuMat, h: float, dst: GpuMat | None = ..., search_window: int = ..., block_size: int = ..., stream: Stream = ...) -> GpuMat: ... + +def fastNlMeansDenoisingColored(src: GpuMat, h_luminance: float, photo_render: float, dst: GpuMat | None = ..., search_window: int = ..., block_size: int = ..., stream: Stream = ...) -> GpuMat: ... + +def getCudaEnabledDeviceCount() -> int: ... + +def getDevice() -> int: ... + +def nonLocalMeans(src: GpuMat, h: float, dst: GpuMat | None = ..., search_window: int = ..., block_size: int = ..., borderMode: int = ..., stream: Stream = ...) -> GpuMat: ... + +def printCudaDeviceInfo(device: int) -> None: ... + +def printShortCudaDeviceInfo(device: int) -> None: ... + +def registerPageLocked(m: cv2.typing.MatLike) -> None: ... + +def resetDevice() -> None: ... + +def setBufferPoolConfig(deviceId: int, stackSize: int, stackCount: int) -> None: ... + +def setBufferPoolUsage(on: bool) -> None: ... + +def setDevice(device: int) -> None: ... + +def unregisterPageLocked(m: cv2.typing.MatLike) -> None: ... + +def wrapStream(cudaStreamMemoryAddress: int) -> Stream: ... + + diff --git a/venv/lib/python3.11/site-packages/cv2/cv2.abi3.so b/venv/lib/python3.11/site-packages/cv2/cv2.abi3.so new file mode 100644 index 0000000000000000000000000000000000000000..a25f802cd89300f0700269fd87e72a62c2088547 --- /dev/null +++ b/venv/lib/python3.11/site-packages/cv2/cv2.abi3.so @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:c4139433b8ab5a656c13b1261028599d827254c21268dd17312c6f6cae1e7dc4 +size 65859185 diff --git a/venv/lib/python3.11/site-packages/cv2/data/__init__.py b/venv/lib/python3.11/site-packages/cv2/data/__init__.py new file mode 100644 index 0000000000000000000000000000000000000000..1cad2750a50da66bc344a874d527c5452a24d5b1 --- /dev/null +++ b/venv/lib/python3.11/site-packages/cv2/data/__init__.py @@ -0,0 +1,3 @@ +import os + +haarcascades = os.path.join(os.path.dirname(__file__), "") diff --git a/venv/lib/python3.11/site-packages/cv2/data/haarcascade_eye.xml b/venv/lib/python3.11/site-packages/cv2/data/haarcascade_eye.xml new file mode 100644 index 0000000000000000000000000000000000000000..b21e3b93d74b5130b5a1323be9fc46017ab0e8c7 --- /dev/null +++ b/venv/lib/python3.11/site-packages/cv2/data/haarcascade_eye.xml @@ -0,0 +1,12213 @@ + + + +BOOST + HAAR + 20 + 20 + + 93 + + 0 + 24 + + <_> + 6 + -1.4562760591506958e+00 + + <_> + + 0 -1 0 1.2963959574699402e-01 + + -7.7304208278656006e-01 6.8350148200988770e-01 + <_> + + 0 -1 1 -4.6326808631420135e-02 + + 5.7352751493453979e-01 -4.9097689986228943e-01 + <_> + + 0 -1 2 -1.6173090785741806e-02 + + 6.0254341363906860e-01 -3.1610709428787231e-01 + <_> + + 0 -1 3 -4.5828841626644135e-02 + + 6.4177548885345459e-01 -1.5545040369033813e-01 + <_> + + 0 -1 4 -5.3759619593620300e-02 + + 5.4219317436218262e-01 -2.0480829477310181e-01 + <_> + + 0 -1 5 3.4171190112829208e-02 + + -2.3388190567493439e-01 4.8410901427268982e-01 + <_> + 12 + -1.2550230026245117e+00 + + <_> + + 0 -1 6 -2.1727620065212250e-01 + + 7.1098899841308594e-01 -5.9360730648040771e-01 + <_> + + 0 -1 7 1.2071969918906689e-02 + + -2.8240481019020081e-01 5.9013551473617554e-01 + <_> + + 0 -1 8 -1.7854139208793640e-02 + + 5.3137522935867310e-01 -2.2758960723876953e-01 + <_> + + 0 -1 9 2.2333610802888870e-02 + + -1.7556099593639374e-01 6.3356137275695801e-01 + <_> + + 0 -1 10 -9.1420017182826996e-02 + + 6.1563092470169067e-01 -1.6899530589580536e-01 + <_> + + 0 -1 11 2.8973650187253952e-02 + + -1.2250079959630966e-01 7.4401170015335083e-01 + <_> + + 0 -1 12 7.8203463926911354e-03 + + 1.6974370181560516e-01 -6.5441650152206421e-01 + <_> + + 0 -1 13 2.0340489223599434e-02 + + -1.2556649744510651e-01 8.2710450887680054e-01 + <_> + + 0 -1 14 -1.1926149949431419e-02 + + 3.8605681061744690e-01 -2.0992340147495270e-01 + <_> + + 0 -1 15 -9.7281101625412703e-04 + + -6.3761192560195923e-01 1.2952390313148499e-01 + <_> + + 0 -1 16 1.8322050891583785e-05 + + -3.4631478786468506e-01 2.2924269735813141e-01 + <_> + + 0 -1 17 -8.0854417756199837e-03 + + -6.3665801286697388e-01 1.3078659772872925e-01 + <_> + 9 + -1.3728189468383789e+00 + + <_> + + 0 -1 18 -1.1812269687652588e-01 + + 6.7844521999359131e-01 -5.0045782327651978e-01 + <_> + + 0 -1 19 -3.4332759678363800e-02 + + 6.7186361551284790e-01 -3.5744878649711609e-01 + <_> + + 0 -1 20 -2.1530799567699432e-02 + + 7.2220700979232788e-01 -1.8192419409751892e-01 + <_> + + 0 -1 21 -2.1909970790147781e-02 + + 6.6529387235641479e-01 -2.7510228753089905e-01 + <_> + + 0 -1 22 -2.8713539242744446e-02 + + 6.9955700635910034e-01 -1.9615580141544342e-01 + <_> + + 0 -1 23 -1.1467480100691319e-02 + + 5.9267348051071167e-01 -2.2097350656986237e-01 + <_> + + 0 -1 24 -2.2611169144511223e-02 + + 3.4483069181442261e-01 -3.8379558920860291e-01 + <_> + + 0 -1 25 -1.9308089977130294e-03 + + -7.9445719718933105e-01 1.5628659725189209e-01 + <_> + + 0 -1 26 5.6419910833938047e-05 + + -3.0896010994911194e-01 3.5431089997291565e-01 + <_> + 16 + -1.2879480123519897e+00 + + <_> + + 0 -1 27 1.9886520504951477e-01 + + -5.2860701084136963e-01 3.5536721348762512e-01 + <_> + + 0 -1 28 -3.6008939146995544e-02 + + 4.2109689116477966e-01 -3.9348980784416199e-01 + <_> + + 0 -1 29 -7.7569849789142609e-02 + + 4.7991541028022766e-01 -2.5122168660163879e-01 + <_> + + 0 -1 30 8.2630853285081685e-05 + + -3.8475489616394043e-01 3.1849220395088196e-01 + <_> + + 0 -1 31 3.2773229759186506e-04 + + -2.6427319645881653e-01 3.2547241449356079e-01 + <_> + + 0 -1 32 -1.8574850633740425e-02 + + 4.6736589074134827e-01 -1.5067270398139954e-01 + <_> + + 0 -1 33 -7.0008762122597545e-05 + + 2.9313150048255920e-01 -2.5365099310874939e-01 + <_> + + 0 -1 34 -1.8552130088210106e-02 + + 4.6273660659790039e-01 -1.3148050010204315e-01 + <_> + + 0 -1 35 -1.3030420057475567e-02 + + 4.1627219319343567e-01 -1.7751489579677582e-01 + <_> + + 0 -1 36 6.5694141085259616e-05 + + -2.8035101294517517e-01 2.6680740714073181e-01 + <_> + + 0 -1 37 1.7005260451696813e-04 + + -2.7027249336242676e-01 2.3981650173664093e-01 + <_> + + 0 -1 38 -3.3129199873656034e-03 + + 4.4411438703536987e-01 -1.4428889751434326e-01 + <_> + + 0 -1 39 1.7583490116521716e-03 + + -1.6126190125942230e-01 4.2940768599510193e-01 + <_> + + 0 -1 40 -2.5194749236106873e-02 + + 4.0687298774719238e-01 -1.8202580511569977e-01 + <_> + + 0 -1 41 1.4031709870323539e-03 + + 8.4759786725044250e-02 -8.0018568038940430e-01 + <_> + + 0 -1 42 -7.3991729877889156e-03 + + 5.5766099691390991e-01 -1.1843159794807434e-01 + <_> + 23 + -1.2179850339889526e+00 + + <_> + + 0 -1 43 -2.9943080618977547e-02 + + 3.5810810327529907e-01 -3.8487631082534790e-01 + <_> + + 0 -1 44 -1.2567380070686340e-01 + + 3.9316931366920471e-01 -3.0012258887290955e-01 + <_> + + 0 -1 45 5.3635272197425365e-03 + + -4.3908619880676270e-01 1.9257010519504547e-01 + <_> + + 0 -1 46 -8.0971820279955864e-03 + + 3.9906668663024902e-01 -2.3407870531082153e-01 + <_> + + 0 -1 47 -1.6597909852862358e-02 + + 4.2095288634300232e-01 -2.2674840688705444e-01 + <_> + + 0 -1 48 -2.0199299324303865e-03 + + -7.4156731367111206e-01 1.2601189315319061e-01 + <_> + + 0 -1 49 -1.5202340437099338e-03 + + -7.6154601573944092e-01 8.6373612284660339e-02 + <_> + + 0 -1 50 -4.9663940444588661e-03 + + 4.2182239890098572e-01 -1.7904919385910034e-01 + <_> + + 0 -1 51 -1.9207600504159927e-02 + + 4.6894899010658264e-01 -1.4378750324249268e-01 + <_> + + 0 -1 52 -1.2222680263221264e-02 + + 3.2842078804969788e-01 -2.1802149713039398e-01 + <_> + + 0 -1 53 5.7548668235540390e-02 + + -3.6768808960914612e-01 2.4357110261917114e-01 + <_> + + 0 -1 54 -9.5794079825282097e-03 + + -7.2245067358016968e-01 6.3664563000202179e-02 + <_> + + 0 -1 55 -2.9545740690082312e-03 + + 3.5846439003944397e-01 -1.6696329414844513e-01 + <_> + + 0 -1 56 -4.2017991654574871e-03 + + 3.9094808697700500e-01 -1.2041790038347244e-01 + <_> + + 0 -1 57 -1.3624990358948708e-02 + + -5.8767718076705933e-01 8.8404729962348938e-02 + <_> + + 0 -1 58 6.2853112467564642e-05 + + -2.6348459720611572e-01 2.1419279277324677e-01 + <_> + + 0 -1 59 -2.6782939676195383e-03 + + -7.8390169143676758e-01 8.0526962876319885e-02 + <_> + + 0 -1 60 -7.0597179234027863e-02 + + 4.1469261050224304e-01 -1.3989959657192230e-01 + <_> + + 0 -1 61 9.2093646526336670e-02 + + -1.3055180013179779e-01 5.0435781478881836e-01 + <_> + + 0 -1 62 -8.8004386052489281e-03 + + 3.6609750986099243e-01 -1.4036649465560913e-01 + <_> + + 0 -1 63 7.5080977694597095e-05 + + -2.9704439640045166e-01 2.0702940225601196e-01 + <_> + + 0 -1 64 -2.9870450962334871e-03 + + 3.5615700483322144e-01 -1.5445969998836517e-01 + <_> + + 0 -1 65 -2.6441509835422039e-03 + + -5.4353517293930054e-01 1.0295110195875168e-01 + <_> + 27 + -1.2905240058898926e+00 + + <_> + + 0 -1 66 -4.7862470149993896e-02 + + 4.1528239846229553e-01 -3.4185820817947388e-01 + <_> + + 0 -1 67 8.7350532412528992e-02 + + -3.8749781250953674e-01 2.4204200506210327e-01 + <_> + + 0 -1 68 -1.6849499195814133e-02 + + 5.3082478046417236e-01 -1.7282910645008087e-01 + <_> + + 0 -1 69 -2.8870029374957085e-02 + + 3.5843509435653687e-01 -2.2402590513229370e-01 + <_> + + 0 -1 70 2.5679389946162701e-03 + + 1.4990499615669250e-01 -6.5609407424926758e-01 + <_> + + 0 -1 71 -2.4116659536957741e-02 + + 5.5889678001403809e-01 -1.4810280501842499e-01 + <_> + + 0 -1 72 -3.2826658338308334e-02 + + 4.6468681097030640e-01 -1.0785529762506485e-01 + <_> + + 0 -1 73 -1.5233060345053673e-02 + + -7.3954427242279053e-01 5.6236881762742996e-02 + <_> + + 0 -1 74 -3.0209511169232428e-04 + + -4.5548820495605469e-01 9.7069837152957916e-02 + <_> + + 0 -1 75 7.5365108205005527e-04 + + 9.5147296786308289e-02 -5.4895019531250000e-01 + <_> + + 0 -1 76 -1.0638950392603874e-02 + + 4.0912970900535583e-01 -1.2308409810066223e-01 + <_> + + 0 -1 77 -7.5217830017209053e-03 + + 4.0289148688316345e-01 -1.6048780083656311e-01 + <_> + + 0 -1 78 -1.0677099972963333e-01 + + 6.1759322881698608e-01 -7.3091186583042145e-02 + <_> + + 0 -1 79 1.6256919130682945e-02 + + -1.3103680312633514e-01 3.7453651428222656e-01 + <_> + + 0 -1 80 -2.0679360255599022e-02 + + -7.1402907371520996e-01 5.2390009164810181e-02 + <_> + + 0 -1 81 1.7052369192242622e-02 + + 1.2822860479354858e-01 -3.1080681085586548e-01 + <_> + + 0 -1 82 -5.7122060097754002e-03 + + -6.0556507110595703e-01 8.1884756684303284e-02 + <_> + + 0 -1 83 2.0851430235779844e-05 + + -2.6812988519668579e-01 1.4453840255737305e-01 + <_> + + 0 -1 84 7.9284431412816048e-03 + + -7.8795351088047028e-02 5.6762582063674927e-01 + <_> + + 0 -1 85 -2.5217379443347454e-03 + + 3.7068629264831543e-01 -1.3620570302009583e-01 + <_> + + 0 -1 86 -2.2426199167966843e-02 + + -6.8704998493194580e-01 5.1062859594821930e-02 + <_> + + 0 -1 87 -7.6451441273093224e-03 + + 2.3492220044136047e-01 -1.7905959486961365e-01 + <_> + + 0 -1 88 -1.1175329564139247e-03 + + -5.9869050979614258e-01 7.4324436485767365e-02 + <_> + + 0 -1 89 1.9212789833545685e-02 + + -1.5702550113201141e-01 2.9737469553947449e-01 + <_> + + 0 -1 90 5.6293429806828499e-03 + + -9.9769018590450287e-02 4.2130270600318909e-01 + <_> + + 0 -1 91 -9.5671862363815308e-03 + + -6.0858798027038574e-01 7.3506258428096771e-02 + <_> + + 0 -1 92 1.1217960156500340e-02 + + -1.0320810228586197e-01 4.1909849643707275e-01 + <_> + 28 + -1.1600480079650879e+00 + + <_> + + 0 -1 93 -1.7486440017819405e-02 + + 3.1307280063629150e-01 -3.3681181073188782e-01 + <_> + + 0 -1 94 3.0714649707078934e-02 + + -1.8766190111637115e-01 5.3780800104141235e-01 + <_> + + 0 -1 95 -2.2188719362020493e-02 + + 3.6637881398200989e-01 -1.6124810278415680e-01 + <_> + + 0 -1 96 -5.0700771680567414e-05 + + 2.1245710551738739e-01 -2.8444620966911316e-01 + <_> + + 0 -1 97 -7.0170420221984386e-03 + + 3.9543110132217407e-01 -1.3173590600490570e-01 + <_> + + 0 -1 98 -6.8563609384000301e-03 + + 3.0373859405517578e-01 -2.0657819509506226e-01 + <_> + + 0 -1 99 -1.4129259623587132e-02 + + -7.6503008604049683e-01 9.8213188350200653e-02 + <_> + + 0 -1 100 -4.7915481030941010e-02 + + 4.8307389020919800e-01 -1.3006809353828430e-01 + <_> + + 0 -1 101 4.7032979637151584e-05 + + -2.5216570496559143e-01 2.4386680126190186e-01 + <_> + + 0 -1 102 1.0221180273219943e-03 + + 6.8857602775096893e-02 -6.5861141681671143e-01 + <_> + + 0 -1 103 -2.6056109927594662e-03 + + 4.2942029237747192e-01 -1.3022460043430328e-01 + <_> + + 0 -1 104 5.4505340813193470e-05 + + -1.9288620352745056e-01 2.8958499431610107e-01 + <_> + + 0 -1 105 -6.6721157054416835e-05 + + 3.0290710926055908e-01 -1.9854369759559631e-01 + <_> + + 0 -1 106 2.6281431317329407e-01 + + -2.3293940722942352e-01 2.3692460358142853e-01 + <_> + + 0 -1 107 -2.3569669574499130e-02 + + 1.9401040673255920e-01 -2.8484618663787842e-01 + <_> + + 0 -1 108 -3.9120172150433064e-03 + + 5.5378979444503784e-01 -9.5665678381919861e-02 + <_> + + 0 -1 109 5.0788799853762612e-05 + + -2.3912659287452698e-01 2.1799489855766296e-01 + <_> + + 0 -1 110 -7.8732017427682877e-03 + + 4.0697428584098816e-01 -1.2768040597438812e-01 + <_> + + 0 -1 111 -1.6778609715402126e-03 + + -5.7744657993316650e-01 9.7324788570404053e-02 + <_> + + 0 -1 112 -2.6832430739887059e-04 + + 2.9021880030632019e-01 -1.6831269860267639e-01 + <_> + + 0 -1 113 7.8687182394787669e-05 + + -1.9551570713520050e-01 2.7720969915390015e-01 + <_> + + 0 -1 114 1.2953500263392925e-02 + + -9.6838317811489105e-02 4.0323871374130249e-01 + <_> + + 0 -1 115 -1.3043959625065327e-02 + + 4.7198569774627686e-01 -8.9287549257278442e-02 + <_> + + 0 -1 116 3.0261781066656113e-03 + + -1.3623380661010742e-01 3.0686271190643311e-01 + <_> + + 0 -1 117 -6.0438038781285286e-03 + + -7.7954101562500000e-01 5.7316310703754425e-02 + <_> + + 0 -1 118 -2.2507249377667904e-03 + + 3.0877059698104858e-01 -1.5006309747695923e-01 + <_> + + 0 -1 119 1.5826810151338577e-02 + + 6.4551889896392822e-02 -7.2455567121505737e-01 + <_> + + 0 -1 120 6.5864507632795721e-05 + + -1.7598840594291687e-01 2.3210389912128448e-01 + <_> + 36 + -1.2257250547409058e+00 + + <_> + + 0 -1 121 -2.7854869142174721e-02 + + 4.5518448948860168e-01 -1.8099910020828247e-01 + <_> + + 0 -1 122 1.2895040214061737e-01 + + -5.2565532922744751e-01 1.6188900172710419e-01 + <_> + + 0 -1 123 2.4403180927038193e-02 + + -1.4974960684776306e-01 4.2357379198074341e-01 + <_> + + 0 -1 124 -2.4458570405840874e-03 + + 3.2948669791221619e-01 -1.7447690665721893e-01 + <_> + + 0 -1 125 -3.5336529836058617e-03 + + 4.7426640987396240e-01 -7.3618359863758087e-02 + <_> + + 0 -1 126 5.1358150813030079e-05 + + -3.0421930551528931e-01 1.5633270144462585e-01 + <_> + + 0 -1 127 -1.6225680708885193e-02 + + 2.3002180457115173e-01 -2.0359820127487183e-01 + <_> + + 0 -1 128 -4.6007009223103523e-03 + + 4.0459269285202026e-01 -1.3485440611839294e-01 + <_> + + 0 -1 129 -2.1928999572992325e-02 + + -6.8724489212036133e-01 8.0684266984462738e-02 + <_> + + 0 -1 130 -2.8971210122108459e-03 + + -6.9619607925415039e-01 4.8545219004154205e-02 + <_> + + 0 -1 131 -4.4074649922549725e-03 + + 2.5166261196136475e-01 -1.6236649453639984e-01 + <_> + + 0 -1 132 2.8437169268727303e-02 + + 6.0394261032342911e-02 -6.6744458675384521e-01 + <_> + + 0 -1 133 8.3212882280349731e-02 + + 6.4357921481132507e-02 -5.3626042604446411e-01 + <_> + + 0 -1 134 -1.2419329956173897e-02 + + -7.0816862583160400e-01 5.7526610791683197e-02 + <_> + + 0 -1 135 -4.6992599964141846e-03 + + 5.1254332065582275e-01 -8.7350800633430481e-02 + <_> + + 0 -1 136 -7.8025809489190578e-04 + + 2.6687660813331604e-01 -1.7961509525775909e-01 + <_> + + 0 -1 137 -1.9724339246749878e-02 + + -6.7563730478286743e-01 7.2941906750202179e-02 + <_> + + 0 -1 138 1.0269250487908721e-03 + + 5.3919319063425064e-02 -5.5540180206298828e-01 + <_> + + 0 -1 139 -2.5957189500331879e-02 + + 5.6362527608871460e-01 -7.1898393332958221e-02 + <_> + + 0 -1 140 -1.2552699772641063e-03 + + -5.0346630811691284e-01 8.9691452682018280e-02 + <_> + + 0 -1 141 -4.9970578402280807e-02 + + 1.7685119807720184e-01 -2.2301959991455078e-01 + <_> + + 0 -1 142 -2.9899610672146082e-03 + + 3.9122420549392700e-01 -1.0149750113487244e-01 + <_> + + 0 -1 143 4.8546842299401760e-03 + + -1.1770179867744446e-01 4.2190939188003540e-01 + <_> + + 0 -1 144 1.0448860120959580e-04 + + -1.7333979904651642e-01 2.2344440221786499e-01 + <_> + + 0 -1 145 5.9689260524464771e-05 + + -2.3409630358219147e-01 1.6558240354061127e-01 + <_> + + 0 -1 146 -1.3423919677734375e-02 + + 4.3023818731307983e-01 -9.9723652005195618e-02 + <_> + + 0 -1 147 2.2581999655812979e-03 + + 7.2720989584922791e-02 -5.7501018047332764e-01 + <_> + + 0 -1 148 -1.2546280398964882e-02 + + 3.6184579133987427e-01 -1.1457010358572006e-01 + <_> + + 0 -1 149 -2.8705769218504429e-03 + + 2.8210538625717163e-01 -1.2367550283670425e-01 + <_> + + 0 -1 150 1.9785640761256218e-02 + + 4.7876749187707901e-02 -8.0666238069534302e-01 + <_> + + 0 -1 151 4.7588930465281010e-03 + + -1.0925389826297760e-01 3.3746978640556335e-01 + <_> + + 0 -1 152 -6.9974269717931747e-03 + + -8.0295938253402710e-01 4.5706700533628464e-02 + <_> + + 0 -1 153 -1.3033480383455753e-02 + + 1.8680439889431000e-01 -1.7688910663127899e-01 + <_> + + 0 -1 154 -1.3742579612880945e-03 + + 2.7725479006767273e-01 -1.2809009850025177e-01 + <_> + + 0 -1 155 2.7657810132950544e-03 + + 9.0758942067623138e-02 -4.2594739794731140e-01 + <_> + + 0 -1 156 2.8941841446794569e-04 + + -3.8816329836845398e-01 8.9267797768115997e-02 + <_> + 47 + -1.2863140106201172e+00 + + <_> + + 0 -1 157 -1.4469229616224766e-02 + + 3.7507829070091248e-01 -2.4928289651870728e-01 + <_> + + 0 -1 158 -1.3317629694938660e-01 + + 3.0166378617286682e-01 -2.2414070367813110e-01 + <_> + + 0 -1 159 -1.0132160037755966e-02 + + 3.6985591053962708e-01 -1.7850010097026825e-01 + <_> + + 0 -1 160 -7.8511182218790054e-03 + + 4.6086761355400085e-01 -1.2931390106678009e-01 + <_> + + 0 -1 161 -1.4295839704573154e-02 + + 4.4841429591178894e-01 -1.0226240009069443e-01 + <_> + + 0 -1 162 -5.9606940485537052e-03 + + 2.7927988767623901e-01 -1.5323829650878906e-01 + <_> + + 0 -1 163 1.0932769626379013e-02 + + -1.5141740441322327e-01 3.9889648556709290e-01 + <_> + + 0 -1 164 5.0430990086169913e-05 + + -2.2681570053100586e-01 2.1644389629364014e-01 + <_> + + 0 -1 165 -5.8431681245565414e-03 + + 4.5420148968696594e-01 -1.2587159872055054e-01 + <_> + + 0 -1 166 -2.2346209734678268e-02 + + -6.2690192461013794e-01 8.2403123378753662e-02 + <_> + + 0 -1 167 -4.8836669884622097e-03 + + 2.6359251141548157e-01 -1.4686630666255951e-01 + <_> + + 0 -1 168 7.5506002758629620e-05 + + -2.4507020413875580e-01 1.6678880155086517e-01 + <_> + + 0 -1 169 -4.9026997294276953e-04 + + -4.2649960517883301e-01 8.9973561465740204e-02 + <_> + + 0 -1 170 1.4861579984426498e-03 + + -1.2040250003337860e-01 3.0097651481628418e-01 + <_> + + 0 -1 171 -1.1988339945673943e-02 + + 2.7852478623390198e-01 -1.2244340032339096e-01 + <_> + + 0 -1 172 1.0502239689230919e-02 + + 4.0452759712934494e-02 -7.4050408601760864e-01 + <_> + + 0 -1 173 -3.0963009223341942e-02 + + -6.2842690944671631e-01 4.8013761639595032e-02 + <_> + + 0 -1 174 1.1414520442485809e-02 + + 3.9405211806297302e-02 -7.1674120426177979e-01 + <_> + + 0 -1 175 -1.2337000109255314e-02 + + 1.9941329956054688e-01 -1.9274300336837769e-01 + <_> + + 0 -1 176 -5.9942267835140228e-03 + + 5.1318162679672241e-01 -6.1658058315515518e-02 + <_> + + 0 -1 177 -1.1923230485990644e-03 + + -7.2605299949645996e-01 5.0652720034122467e-02 + <_> + + 0 -1 178 -7.4582789093255997e-03 + + 2.9603078961372375e-01 -1.1754789948463440e-01 + <_> + + 0 -1 179 2.7877509128302336e-03 + + 4.5068711042404175e-02 -6.9535410404205322e-01 + <_> + + 0 -1 180 -2.2503209766000509e-04 + + 2.0047250390052795e-01 -1.5775249898433685e-01 + <_> + + 0 -1 181 -5.0367889925837517e-03 + + 2.9299819469451904e-01 -1.1700499802827835e-01 + <_> + + 0 -1 182 7.4742160737514496e-02 + + -1.1392319947481155e-01 3.0256620049476624e-01 + <_> + + 0 -1 183 2.0255519077181816e-02 + + -1.0515890270471573e-01 4.0670460462570190e-01 + <_> + + 0 -1 184 4.4214509427547455e-02 + + -2.7631640434265137e-01 1.2363869696855545e-01 + <_> + + 0 -1 185 -8.7259558495134115e-04 + + 2.4355030059814453e-01 -1.3300949335098267e-01 + <_> + + 0 -1 186 -2.4453739169985056e-03 + + -5.3866171836853027e-01 6.2510646879673004e-02 + <_> + + 0 -1 187 8.2725353422574699e-05 + + -2.0772209763526917e-01 1.6270439326763153e-01 + <_> + + 0 -1 188 -3.6627110093832016e-02 + + 3.6568409204483032e-01 -9.0330280363559723e-02 + <_> + + 0 -1 189 3.0996399000287056e-03 + + -1.3183020055294037e-01 2.5354298949241638e-01 + <_> + + 0 -1 190 -2.4709280114620924e-03 + + -5.6853497028350830e-01 5.3505431860685349e-02 + <_> + + 0 -1 191 -1.4114670455455780e-02 + + -4.8599010705947876e-01 5.8485250920057297e-02 + <_> + + 0 -1 192 8.4537261864170432e-04 + + -8.0093637108802795e-02 4.0265649557113647e-01 + <_> + + 0 -1 193 -7.1098632179200649e-03 + + 4.4703239202499390e-01 -6.2947437167167664e-02 + <_> + + 0 -1 194 -1.9125960767269135e-02 + + -6.6422867774963379e-01 4.9822770059108734e-02 + <_> + + 0 -1 195 -5.0773010589182377e-03 + + 1.7379400134086609e-01 -1.6850599646568298e-01 + <_> + + 0 -1 196 -2.9198289848864079e-03 + + -6.0110282897949219e-01 5.7427939027547836e-02 + <_> + + 0 -1 197 -2.4902150034904480e-02 + + 2.3397980630397797e-01 -1.1818459630012512e-01 + <_> + + 0 -1 198 2.0147779956459999e-02 + + -8.9459821581840515e-02 3.6024400591850281e-01 + <_> + + 0 -1 199 1.7597640398889780e-03 + + 4.9458440393209457e-02 -6.3102620840072632e-01 + <_> + + 0 -1 200 1.3812039978802204e-03 + + -1.5218059718608856e-01 1.8971739709377289e-01 + <_> + + 0 -1 201 -1.0904540307819843e-02 + + -5.8097380399703979e-01 4.4862728565931320e-02 + <_> + + 0 -1 202 7.5157178798690438e-05 + + -1.3777349889278412e-01 1.9543160498142242e-01 + <_> + + 0 -1 203 3.8649770431220531e-03 + + -1.0302229970693588e-01 2.5374969840049744e-01 + <_> + 48 + -1.1189440488815308e+00 + + <_> + + 0 -1 204 -1.0215889662504196e-01 + + 4.1681259870529175e-01 -1.6655629873275757e-01 + <_> + + 0 -1 205 -5.1939819008111954e-02 + + 3.3023950457572937e-01 -2.0715710520744324e-01 + <_> + + 0 -1 206 -4.2717780917882919e-02 + + 2.6093730330467224e-01 -1.6013890504837036e-01 + <_> + + 0 -1 207 4.3890418601222336e-04 + + -3.4750530123710632e-01 1.3918919861316681e-01 + <_> + + 0 -1 208 2.4264389649033546e-02 + + -4.2552059888839722e-01 1.3578380644321442e-01 + <_> + + 0 -1 209 -2.3820599541068077e-02 + + 3.1749808788299561e-01 -1.6652040183544159e-01 + <_> + + 0 -1 210 -7.0518180727958679e-03 + + 3.0947178602218628e-01 -1.3338300585746765e-01 + <_> + + 0 -1 211 -6.8517157342284918e-04 + + -6.0082262754440308e-01 8.7747000157833099e-02 + <_> + + 0 -1 212 5.3705149330198765e-03 + + -1.2311449646949768e-01 3.8333550095558167e-01 + <_> + + 0 -1 213 -1.3403539545834064e-02 + + 3.3877369761466980e-01 -1.0140489786863327e-01 + <_> + + 0 -1 214 -6.6856360062956810e-03 + + -6.1193597316741943e-01 4.7740221023559570e-02 + <_> + + 0 -1 215 -4.2887418530881405e-03 + + 2.5275790691375732e-01 -1.4434510469436646e-01 + <_> + + 0 -1 216 -1.0876749642193317e-02 + + 5.4775732755661011e-01 -5.9455480426549911e-02 + <_> + + 0 -1 217 3.7882640026509762e-04 + + 8.3410300314426422e-02 -4.4226369261741638e-01 + <_> + + 0 -1 218 -2.4550149682909250e-03 + + 2.3330999910831451e-01 -1.3964480161666870e-01 + <_> + + 0 -1 219 1.2721839593723416e-03 + + 6.0480289161205292e-02 -4.9456089735031128e-01 + <_> + + 0 -1 220 -4.8933159559965134e-03 + + -6.6833269596099854e-01 4.6218499541282654e-02 + <_> + + 0 -1 221 2.6449989527463913e-02 + + -7.3235362768173218e-02 4.4425961375236511e-01 + <_> + + 0 -1 222 -3.3706070389598608e-03 + + -4.2464339733123779e-01 6.8676561117172241e-02 + <_> + + 0 -1 223 -2.9559480026364326e-03 + + 1.6218039393424988e-01 -1.8222999572753906e-01 + <_> + + 0 -1 224 3.0619909986853600e-02 + + -5.8643341064453125e-02 5.3263628482818604e-01 + <_> + + 0 -1 225 -9.5765907317399979e-03 + + -6.0562682151794434e-01 5.3345989435911179e-02 + <_> + + 0 -1 226 6.6372493165545166e-05 + + -1.6680839657783508e-01 1.9284160435199738e-01 + <_> + + 0 -1 227 5.0975950434803963e-03 + + 4.4119510799646378e-02 -5.7458841800689697e-01 + <_> + + 0 -1 228 3.7112718564458191e-04 + + -1.1086399853229523e-01 2.3105390369892120e-01 + <_> + + 0 -1 229 -8.6607588455080986e-03 + + 4.0456289052963257e-01 -6.2446091324090958e-02 + <_> + + 0 -1 230 8.7489158613607287e-04 + + 6.4875148236751556e-02 -4.4871041178703308e-01 + <_> + + 0 -1 231 1.1120870476588607e-03 + + -9.3861460685729980e-02 3.0453911423683167e-01 + <_> + + 0 -1 232 -2.3837819695472717e-02 + + -5.8887428045272827e-01 4.6659421175718307e-02 + <_> + + 0 -1 233 2.2272899514064193e-04 + + -1.4898599684238434e-01 1.7701950669288635e-01 + <_> + + 0 -1 234 2.4467470124363899e-02 + + -5.5789601057767868e-02 4.9208301305770874e-01 + <_> + + 0 -1 235 -1.4239320158958435e-01 + + 1.5192000567913055e-01 -1.8778899312019348e-01 + <_> + + 0 -1 236 -2.0123120397329330e-02 + + 2.1780100464820862e-01 -1.2081900238990784e-01 + <_> + + 0 -1 237 1.1513679783092812e-04 + + -1.6856589913368225e-01 1.6451929509639740e-01 + <_> + + 0 -1 238 -2.7556740678846836e-03 + + -6.9442039728164673e-01 3.9449468255043030e-02 + <_> + + 0 -1 239 -7.5843912782147527e-05 + + 1.8941369652748108e-01 -1.5183840692043304e-01 + <_> + + 0 -1 240 -7.0697711780667305e-03 + + 4.7064599394798279e-01 -5.7927619665861130e-02 + <_> + + 0 -1 241 -3.7393178790807724e-02 + + -7.5892448425292969e-01 3.4116048365831375e-02 + <_> + + 0 -1 242 -1.5995610505342484e-02 + + 3.0670469999313354e-01 -8.7525576353073120e-02 + <_> + + 0 -1 243 -3.1183990649878979e-03 + + 2.6195371150970459e-01 -9.1214887797832489e-02 + <_> + + 0 -1 244 1.0651360498741269e-03 + + -1.7427560687065125e-01 1.5277640521526337e-01 + <_> + + 0 -1 245 -1.6029420075938106e-03 + + 3.5612630844116211e-01 -7.6629996299743652e-02 + <_> + + 0 -1 246 4.3619908392429352e-03 + + 4.9356970936059952e-02 -5.9228771924972534e-01 + <_> + + 0 -1 247 -1.0779909789562225e-02 + + -6.3922178745269775e-01 3.3204540610313416e-02 + <_> + + 0 -1 248 -4.3590869754552841e-03 + + 1.6107389330863953e-01 -1.5221320092678070e-01 + <_> + + 0 -1 249 7.4596069753170013e-03 + + 3.3172961324453354e-02 -7.5007742643356323e-01 + <_> + + 0 -1 250 8.1385448575019836e-03 + + 2.6325279846787453e-02 -7.1731162071228027e-01 + <_> + + 0 -1 251 -3.3338490873575211e-02 + + 3.3536610007286072e-01 -7.0803590118885040e-02 + <_> + 55 + -1.1418989896774292e+00 + + <_> + + 0 -1 252 1.9553979858756065e-02 + + -1.0439720004796982e-01 5.3128951787948608e-01 + <_> + + 0 -1 253 2.2122919559478760e-02 + + -2.4747270345687866e-01 2.0847250521183014e-01 + <_> + + 0 -1 254 -4.1829389519989491e-03 + + 3.8289439678192139e-01 -1.4711579680442810e-01 + <_> + + 0 -1 255 -8.6381728760898113e-04 + + -6.2632888555526733e-01 1.1993259936571121e-01 + <_> + + 0 -1 256 7.9958612332120538e-04 + + 9.2573471367359161e-02 -5.5168831348419189e-01 + <_> + + 0 -1 257 9.1527570039033890e-03 + + -7.2929807007312775e-02 5.5512511730194092e-01 + <_> + + 0 -1 258 -3.9388681761920452e-03 + + 2.0196039974689484e-01 -2.0912039279937744e-01 + <_> + + 0 -1 259 1.4613410166930407e-04 + + -2.7861818671226501e-01 1.3817410171031952e-01 + <_> + + 0 -1 260 -3.1691689509898424e-03 + + 3.6685898900032043e-01 -7.6308242976665497e-02 + <_> + + 0 -1 261 -2.2189389914274216e-02 + + 3.9096599817276001e-01 -1.0971540212631226e-01 + <_> + + 0 -1 262 -7.4523608200252056e-03 + + 1.2838590145111084e-01 -2.4159869551658630e-01 + <_> + + 0 -1 263 7.7997002517804503e-04 + + 7.1978069841861725e-02 -4.3976500630378723e-01 + <_> + + 0 -1 264 -4.6783639118075371e-03 + + 2.1569849550724030e-01 -1.4205920696258545e-01 + <_> + + 0 -1 265 -1.5188639983534813e-02 + + 3.6458781361579895e-01 -8.2675926387310028e-02 + <_> + + 0 -1 266 5.0619798712432384e-03 + + -3.4380409121513367e-01 9.2068232595920563e-02 + <_> + + 0 -1 267 -1.7351920250803232e-03 + + -6.1725497245788574e-01 4.9214478582143784e-02 + <_> + + 0 -1 268 -1.2423450127243996e-02 + + -5.8558952808380127e-01 4.6112600713968277e-02 + <_> + + 0 -1 269 -1.3031429611146450e-02 + + -5.9710788726806641e-01 4.0672458708286285e-02 + <_> + + 0 -1 270 -1.2369629694148898e-03 + + -6.8334168195724487e-01 3.3156178891658783e-02 + <_> + + 0 -1 271 6.1022108420729637e-03 + + -9.4729237258434296e-02 3.0102241039276123e-01 + <_> + + 0 -1 272 6.6952849738299847e-04 + + 8.1816866993904114e-02 -3.5196030139923096e-01 + <_> + + 0 -1 273 -1.7970580374822021e-03 + + 2.3718979954719543e-01 -1.1768709868192673e-01 + <_> + + 0 -1 274 -7.1074528386816382e-04 + + -4.4763788580894470e-01 5.7682480663061142e-02 + <_> + + 0 -1 275 -5.9126471169292927e-03 + + 4.3425410985946655e-01 -6.6868573427200317e-02 + <_> + + 0 -1 276 -3.3132149837911129e-03 + + 1.8150010704994202e-01 -1.4180320501327515e-01 + <_> + + 0 -1 277 -6.0814660042524338e-02 + + 4.7221711277961731e-01 -6.1410639435052872e-02 + <_> + + 0 -1 278 -9.6714183688163757e-02 + + 2.7683168649673462e-01 -9.4490036368370056e-02 + <_> + + 0 -1 279 3.9073550142347813e-03 + + -1.2278530001640320e-01 2.1057400107383728e-01 + <_> + + 0 -1 280 -9.0431869029998779e-03 + + 3.5641568899154663e-01 -7.7806226909160614e-02 + <_> + + 0 -1 281 -4.8800031654536724e-03 + + -4.1034790873527527e-01 6.9694377481937408e-02 + <_> + + 0 -1 282 -4.3547428213059902e-03 + + -7.3017889261245728e-01 3.6655150353908539e-02 + <_> + + 0 -1 283 -9.6500627696514130e-03 + + 5.5181127786636353e-01 -5.3168080747127533e-02 + <_> + + 0 -1 284 -1.7397310584783554e-02 + + -5.7084232568740845e-01 5.0214089453220367e-02 + <_> + + 0 -1 285 -6.8304329179227352e-03 + + -4.6180281043052673e-01 5.0202690064907074e-02 + <_> + + 0 -1 286 3.3255619928240776e-04 + + -9.5362730324268341e-02 2.5983759760856628e-01 + <_> + + 0 -1 287 -2.3100529797375202e-03 + + 2.2872470319271088e-01 -1.0533530265092850e-01 + <_> + + 0 -1 288 -7.5426651164889336e-03 + + -5.6990510225296021e-01 4.8863459378480911e-02 + <_> + + 0 -1 289 -5.2723060362040997e-03 + + 3.5145181417465210e-01 -8.2390107214450836e-02 + <_> + + 0 -1 290 -4.8578968271613121e-03 + + -6.0417622327804565e-01 4.4539440423250198e-02 + <_> + + 0 -1 291 1.5867310576140881e-03 + + -1.0340909659862518e-01 2.3282019793987274e-01 + <_> + + 0 -1 292 -4.7427811659872532e-03 + + 2.8490281105041504e-01 -9.8090499639511108e-02 + <_> + + 0 -1 293 -1.3515240279957652e-03 + + 2.3096430301666260e-01 -1.1361840367317200e-01 + <_> + + 0 -1 294 2.2526069078594446e-03 + + 6.4478322863578796e-02 -4.2205891013145447e-01 + <_> + + 0 -1 295 -3.8038659840822220e-04 + + -3.8076201081275940e-01 6.0043290257453918e-02 + <_> + + 0 -1 296 4.9043921753764153e-03 + + -7.6104998588562012e-02 3.3232170343399048e-01 + <_> + + 0 -1 297 -9.0969670563936234e-03 + + 1.4287790656089783e-01 -1.6887800395488739e-01 + <_> + + 0 -1 298 -6.9317929446697235e-03 + + 2.7255409955978394e-01 -9.2879563570022583e-02 + <_> + + 0 -1 299 1.1471060570329428e-03 + + -1.5273059904575348e-01 1.9702400267124176e-01 + <_> + + 0 -1 300 -3.7662889808416367e-02 + + -5.9320437908172607e-01 4.0738601237535477e-02 + <_> + + 0 -1 301 -6.8165571428835392e-03 + + 2.5494089722633362e-01 -9.4081960618495941e-02 + <_> + + 0 -1 302 6.6205562325194478e-04 + + 4.6795718371868134e-02 -4.8454371094703674e-01 + <_> + + 0 -1 303 -4.2202551849186420e-03 + + 2.4682149291038513e-01 -9.4673976302146912e-02 + <_> + + 0 -1 304 -6.8986512720584869e-02 + + -6.6514801979064941e-01 3.5926390439271927e-02 + <_> + + 0 -1 305 6.1707608401775360e-03 + + 2.5833319872617722e-02 -7.2686272859573364e-01 + <_> + + 0 -1 306 1.0536249727010727e-02 + + -8.1828996539115906e-02 2.9760798811912537e-01 + <_> + 32 + -1.1255199909210205e+00 + + <_> + + 0 -1 307 -6.2758728861808777e-02 + + 2.7899080514907837e-01 -2.9656109213829041e-01 + <_> + + 0 -1 308 3.4516479354351759e-03 + + -3.4635880589485168e-01 2.0903840661048889e-01 + <_> + + 0 -1 309 -7.8699486330151558e-03 + + 2.4144889414310455e-01 -1.9205570220947266e-01 + <_> + + 0 -1 310 -3.4624869003891945e-03 + + -5.9151780605316162e-01 1.2486449629068375e-01 + <_> + + 0 -1 311 -9.4818761572241783e-03 + + 1.8391540646553040e-01 -2.4858260154724121e-01 + <_> + + 0 -1 312 2.3226840130519122e-04 + + -3.3047258853912354e-01 1.0999260097742081e-01 + <_> + + 0 -1 313 1.8101120367646217e-03 + + 9.8744012415409088e-02 -4.9634781479835510e-01 + <_> + + 0 -1 314 -5.4422430694103241e-03 + + 2.9344418644905090e-01 -1.3094750046730042e-01 + <_> + + 0 -1 315 7.4148122221231461e-03 + + -1.4762699604034424e-01 3.3277168869972229e-01 + <_> + + 0 -1 316 -1.5565140172839165e-02 + + -6.8404901027679443e-01 9.9872693419456482e-02 + <_> + + 0 -1 317 2.8720520436763763e-02 + + -1.4833280444145203e-01 3.0902579426765442e-01 + <_> + + 0 -1 318 9.6687392215244472e-05 + + -1.7431040108203888e-01 2.1402959525585175e-01 + <_> + + 0 -1 319 5.2371058613061905e-02 + + -7.0156857371330261e-02 4.9222990870475769e-01 + <_> + + 0 -1 320 -8.6485691368579865e-02 + + 5.0757247209548950e-01 -7.5294211506843567e-02 + <_> + + 0 -1 321 -4.2169868946075439e-02 + + 4.5680961012840271e-01 -9.0219900012016296e-02 + <_> + + 0 -1 322 4.5369830331765115e-05 + + -2.6538279652595520e-01 1.6189539432525635e-01 + <_> + + 0 -1 323 5.2918000146746635e-03 + + 7.4890151619911194e-02 -5.4054671525955200e-01 + <_> + + 0 -1 324 -7.5511651812121272e-04 + + -4.9261990189552307e-01 5.8723948895931244e-02 + <_> + + 0 -1 325 7.5108138844370842e-05 + + -2.1432100236415863e-01 1.4077760279178619e-01 + <_> + + 0 -1 326 4.9981209449470043e-03 + + -9.0547338128089905e-02 3.5716068744659424e-01 + <_> + + 0 -1 327 -1.4929979806765914e-03 + + 2.5623458623886108e-01 -1.4229069650173187e-01 + <_> + + 0 -1 328 2.7239411137998104e-03 + + -1.5649250149726868e-01 2.1088710427284241e-01 + <_> + + 0 -1 329 2.2218320518732071e-03 + + -1.5072989463806152e-01 2.6801869273185730e-01 + <_> + + 0 -1 330 -7.3993072146549821e-04 + + 2.9546990990638733e-01 -1.0692390054464340e-01 + <_> + + 0 -1 331 2.0113459322601557e-03 + + 5.0614349544048309e-02 -7.1683371067047119e-01 + <_> + + 0 -1 332 1.1452870443463326e-02 + + -1.2719069421291351e-01 2.4152779579162598e-01 + <_> + + 0 -1 333 -1.0782170575112104e-03 + + 2.4813009798526764e-01 -1.3461199402809143e-01 + <_> + + 0 -1 334 3.3417691010981798e-03 + + 5.3578309714794159e-02 -5.2274167537689209e-01 + <_> + + 0 -1 335 6.9398651248775423e-05 + + -2.1698740124702454e-01 1.2812179327011108e-01 + <_> + + 0 -1 336 -4.0982551872730255e-03 + + 2.4401889741420746e-01 -1.1570589989423752e-01 + <_> + + 0 -1 337 -1.6289720078930259e-03 + + 2.8261470794677734e-01 -1.0659469664096832e-01 + <_> + + 0 -1 338 1.3984859921038151e-02 + + 4.2715899646282196e-02 -7.3646312952041626e-01 + <_> + 30 + -1.1729990243911743e+00 + + <_> + + 0 -1 339 1.6416519880294800e-01 + + -4.8960301280021667e-01 1.7607709765434265e-01 + <_> + + 0 -1 340 8.3413062384352088e-04 + + -2.8220430016517639e-01 2.4199579656124115e-01 + <_> + + 0 -1 341 -1.7193210078403354e-03 + + -7.1485888957977295e-01 8.6162216961383820e-02 + <_> + + 0 -1 342 -1.5654950402677059e-03 + + -7.2972381114959717e-01 9.4070672988891602e-02 + <_> + + 0 -1 343 1.9124479731544852e-03 + + -3.1187158823013306e-01 1.8143390119075775e-01 + <_> + + 0 -1 344 -1.3512369990348816e-01 + + 2.9577299952507019e-01 -2.2179250419139862e-01 + <_> + + 0 -1 345 -4.0300549007952213e-03 + + -6.6595137119293213e-01 8.5431016981601715e-02 + <_> + + 0 -1 346 -2.8640460222959518e-03 + + -6.2086361646652222e-01 5.3106021136045456e-02 + <_> + + 0 -1 347 -1.4065420255064964e-03 + + 2.2346289455890656e-01 -2.0211009681224823e-01 + <_> + + 0 -1 348 -3.5820449702441692e-03 + + -5.4030400514602661e-01 6.8213619291782379e-02 + <_> + + 0 -1 349 4.1544470936059952e-02 + + -6.5215840935707092e-02 6.2109231948852539e-01 + <_> + + 0 -1 350 -9.1709550470113754e-03 + + -7.5553297996520996e-01 5.2640449255704880e-02 + <_> + + 0 -1 351 6.1552738770842552e-03 + + 9.0939402580261230e-02 -4.4246131181716919e-01 + <_> + + 0 -1 352 -1.0043520014733076e-03 + + 2.4292330443859100e-01 -1.8669790029525757e-01 + <_> + + 0 -1 353 1.1519829742610455e-02 + + -1.1763150244951248e-01 3.6723458766937256e-01 + <_> + + 0 -1 354 -8.9040733873844147e-03 + + -4.8931330442428589e-01 1.0897020250558853e-01 + <_> + + 0 -1 355 5.3973670583218336e-04 + + -2.1850399672985077e-01 1.8489989638328552e-01 + <_> + + 0 -1 356 1.3727260520681739e-03 + + -1.5072910487651825e-01 2.9173129796981812e-01 + <_> + + 0 -1 357 -1.0807390324771404e-02 + + 4.2897450923919678e-01 -1.0280139744281769e-01 + <_> + + 0 -1 358 1.2670770520344377e-03 + + 7.4192158877849579e-02 -6.4208251237869263e-01 + <_> + + 0 -1 359 2.2991129662841558e-03 + + 4.7100279480218887e-02 -7.2335231304168701e-01 + <_> + + 0 -1 360 2.7187510859221220e-03 + + -1.7086869478225708e-01 2.3513509333133698e-01 + <_> + + 0 -1 361 -6.6619180142879486e-03 + + -7.8975427150726318e-01 4.5084670186042786e-02 + <_> + + 0 -1 362 -4.8266649246215820e-02 + + -6.9579917192459106e-01 4.1976079344749451e-02 + <_> + + 0 -1 363 1.5214690007269382e-02 + + -1.0818280279636383e-01 3.6460620164871216e-01 + <_> + + 0 -1 364 -6.0080131515860558e-03 + + 3.0970990657806396e-01 -1.1359210312366486e-01 + <_> + + 0 -1 365 6.6127157770097256e-03 + + 8.0665342509746552e-02 -4.6658530831336975e-01 + <_> + + 0 -1 366 -7.9607013612985611e-03 + + -8.7201941013336182e-01 3.6774590611457825e-02 + <_> + + 0 -1 367 3.8847199175506830e-03 + + -1.1666289716959000e-01 3.3070269227027893e-01 + <_> + + 0 -1 368 -1.0988810099661350e-03 + + 2.3872570693492889e-01 -1.7656759917736053e-01 + <_> + 44 + -1.0368299484252930e+00 + + <_> + + 0 -1 369 3.5903379321098328e-03 + + -2.3688079416751862e-01 2.4631640315055847e-01 + <_> + + 0 -1 370 6.4815930090844631e-03 + + -3.1373620033264160e-01 1.8675759434700012e-01 + <_> + + 0 -1 371 7.3048402555286884e-05 + + -2.7644351124763489e-01 1.6496239602565765e-01 + <_> + + 0 -1 372 -3.8514640182256699e-03 + + -5.6014508008956909e-01 1.1294739693403244e-01 + <_> + + 0 -1 373 3.8588210009038448e-03 + + 3.9848998188972473e-02 -5.8071857690811157e-01 + <_> + + 0 -1 374 -2.4651220068335533e-02 + + 1.6755010187625885e-01 -2.5343671441078186e-01 + <_> + + 0 -1 375 4.7245521098375320e-02 + + -1.0662080347537994e-01 3.9451980590820312e-01 + <_> + + 0 -1 376 6.5964651294052601e-03 + + -1.7744250595569611e-01 2.7280190587043762e-01 + <_> + + 0 -1 377 -1.3177490327507257e-03 + + -5.4272651672363281e-01 4.8606589436531067e-02 + <_> + + 0 -1 378 -5.0261709839105606e-03 + + 2.4394249916076660e-01 -1.3143649697303772e-01 + <_> + + 0 -1 379 3.4632768947631121e-03 + + 6.9049343466758728e-02 -7.0336240530014038e-01 + <_> + + 0 -1 380 2.1692588925361633e-03 + + -1.3289460539817810e-01 2.2098529338836670e-01 + <_> + + 0 -1 381 2.9395870864391327e-02 + + -2.8530520200729370e-01 1.3543990254402161e-01 + <_> + + 0 -1 382 -9.6181448316201568e-04 + + -5.8041381835937500e-01 3.7450648844242096e-02 + <_> + + 0 -1 383 -1.0820999741554260e-01 + + 3.9467281103134155e-01 -7.8655943274497986e-02 + <_> + + 0 -1 384 -1.8024869263172150e-02 + + 2.7355629205703735e-01 -1.3415299355983734e-01 + <_> + + 0 -1 385 6.2509840354323387e-03 + + 2.3388059809803963e-02 -8.0088591575622559e-01 + <_> + + 0 -1 386 -1.6088379779830575e-03 + + -5.6762522459030151e-01 4.1215669363737106e-02 + <_> + + 0 -1 387 7.7564752427861094e-04 + + -1.4891269803047180e-01 1.9086180627346039e-01 + <_> + + 0 -1 388 8.7122338300105184e-05 + + -1.5557530522346497e-01 1.9428220391273499e-01 + <_> + + 0 -1 389 -2.0755320787429810e-02 + + -6.3006532192230225e-01 3.6134380847215652e-02 + <_> + + 0 -1 390 -6.2931738793849945e-03 + + 2.5609248876571655e-01 -1.0588269680738449e-01 + <_> + + 0 -1 391 1.0844149626791477e-02 + + -1.0124850273132324e-01 3.0322128534317017e-01 + <_> + + 0 -1 392 -6.3752777350600809e-05 + + 1.9111579656600952e-01 -1.3849230110645294e-01 + <_> + + 0 -1 393 6.6480963141657412e-05 + + -1.5205250680446625e-01 2.1706309914588928e-01 + <_> + + 0 -1 394 1.3560829684138298e-03 + + 4.9431789666414261e-02 -6.4279842376708984e-01 + <_> + + 0 -1 395 -9.0662558795884252e-04 + + 1.7982010543346405e-01 -1.4044609665870667e-01 + <_> + + 0 -1 396 1.0473709553480148e-03 + + -1.0933549702167511e-01 2.4265940487384796e-01 + <_> + + 0 -1 397 -1.0243969736620784e-03 + + 2.7162680029869080e-01 -1.1820919811725616e-01 + <_> + + 0 -1 398 -1.2024149764329195e-03 + + -7.0151102542877197e-01 3.9489898830652237e-02 + <_> + + 0 -1 399 7.6911649666726589e-03 + + -9.2218913137912750e-02 3.1046289205551147e-01 + <_> + + 0 -1 400 -1.3966549932956696e-01 + + 6.8979388475418091e-01 -3.9706118404865265e-02 + <_> + + 0 -1 401 2.1276050247251987e-03 + + 9.7277611494064331e-02 -2.8841799497604370e-01 + <_> + + 0 -1 402 -2.7594310231506824e-03 + + 2.4168670177459717e-01 -1.1277820169925690e-01 + <_> + + 0 -1 403 5.2236132323741913e-03 + + -1.1430279910564423e-01 2.4256780743598938e-01 + <_> + + 0 -1 404 -1.2590440455824137e-03 + + -5.9679388999938965e-01 4.7663960605859756e-02 + <_> + + 0 -1 405 -3.7192099262028933e-03 + + -4.6414130926132202e-01 5.2847690880298615e-02 + <_> + + 0 -1 406 5.9696151874959469e-03 + + -7.3244288563728333e-02 3.8743090629577637e-01 + <_> + + 0 -1 407 -5.1776720210909843e-03 + + -7.4193227291107178e-01 4.0496710687875748e-02 + <_> + + 0 -1 408 5.0035100430250168e-03 + + -1.3888800144195557e-01 1.8767620623111725e-01 + <_> + + 0 -1 409 -5.2013457752764225e-04 + + -5.4940617084503174e-01 4.9417849630117416e-02 + <_> + + 0 -1 410 5.3168768063187599e-03 + + -8.2482978701591492e-02 3.1740561127662659e-01 + <_> + + 0 -1 411 -1.4774589799344540e-02 + + 2.0816099643707275e-01 -1.2115559726953506e-01 + <_> + + 0 -1 412 -4.1416451334953308e-02 + + -8.2437807321548462e-01 3.3329188823699951e-02 + <_> + 53 + -1.0492420196533203e+00 + + <_> + + 0 -1 413 9.0962520334869623e-04 + + 8.4579966962337494e-02 -5.6118410825729370e-01 + <_> + + 0 -1 414 -5.6139789521694183e-02 + + 1.5341749787330627e-01 -2.6967319846153259e-01 + <_> + + 0 -1 415 1.0292009683325887e-03 + + -2.0489980280399323e-01 2.0153179764747620e-01 + <_> + + 0 -1 416 2.8783010784536600e-03 + + -1.7351140081882477e-01 2.1297949552536011e-01 + <_> + + 0 -1 417 -7.4144392274320126e-03 + + -5.9624868631362915e-01 4.7077950090169907e-02 + <_> + + 0 -1 418 -1.4831849839538336e-03 + + 1.9024610519409180e-01 -1.5986390411853790e-01 + <_> + + 0 -1 419 4.5968941412866116e-03 + + 3.1447131186723709e-02 -6.8694341182708740e-01 + <_> + + 0 -1 420 2.4255330208688974e-03 + + -2.3609359562397003e-01 1.1036109924316406e-01 + <_> + + 0 -1 421 -8.4950566291809082e-02 + + 2.3107160627841949e-01 -1.3776530325412750e-01 + <_> + + 0 -1 422 -5.0145681016147137e-03 + + 3.8676109910011292e-01 -5.6217379868030548e-02 + <_> + + 0 -1 423 -2.1482061129063368e-03 + + 1.8191599845886230e-01 -1.7615699768066406e-01 + <_> + + 0 -1 424 -1.0396770201623440e-02 + + -7.5351381301879883e-01 2.4091970175504684e-02 + <_> + + 0 -1 425 -1.3466750271618366e-02 + + -7.2118860483169556e-01 3.4949369728565216e-02 + <_> + + 0 -1 426 -8.4435477852821350e-02 + + -3.3792638778686523e-01 7.1113817393779755e-02 + <_> + + 0 -1 427 2.4771490134298801e-03 + + -1.1765109747648239e-01 2.2541989386081696e-01 + <_> + + 0 -1 428 1.5828050673007965e-02 + + -6.9536216557025909e-02 3.1395369768142700e-01 + <_> + + 0 -1 429 6.4916983246803284e-02 + + -7.5043588876724243e-02 4.0677338838577271e-01 + <_> + + 0 -1 430 2.9652469675056636e-04 + + 7.3953360319137573e-02 -3.4544008970260620e-01 + <_> + + 0 -1 431 1.3129520229995251e-03 + + -1.6909439861774445e-01 1.5258370339870453e-01 + <_> + + 0 -1 432 -5.8032129891216755e-03 + + 3.5260149836540222e-01 -8.3444066345691681e-02 + <_> + + 0 -1 433 -1.4791679382324219e-01 + + 4.3004658818244934e-01 -5.7309929281473160e-02 + <_> + + 0 -1 434 -1.6584150493144989e-02 + + 2.3432689905166626e-01 -1.0907640308141708e-01 + <_> + + 0 -1 435 3.0183270573616028e-03 + + -1.3600939512252808e-01 2.6409289240837097e-01 + <_> + + 0 -1 436 -3.6471918225288391e-02 + + -6.2809741497039795e-01 4.3545108288526535e-02 + <_> + + 0 -1 437 -7.3119226726703346e-05 + + 1.6470630466938019e-01 -1.6463780403137207e-01 + <_> + + 0 -1 438 -3.6719450727105141e-03 + + -4.7421360015869141e-01 4.8586919903755188e-02 + <_> + + 0 -1 439 -4.0151178836822510e-03 + + 1.8222180008888245e-01 -1.4097510278224945e-01 + <_> + + 0 -1 440 1.9948020577430725e-02 + + -6.9787658751010895e-02 3.6707460880279541e-01 + <_> + + 0 -1 441 7.6699437340721488e-04 + + 5.5729299783706665e-02 -4.4585430622100830e-01 + <_> + + 0 -1 442 -1.1806039838120341e-03 + + -4.6876621246337891e-01 4.8902221024036407e-02 + <_> + + 0 -1 443 1.5847349539399147e-02 + + -1.2120209634304047e-01 2.0566530525684357e-01 + <_> + + 0 -1 444 -1.1985700111836195e-03 + + 2.0262099802494049e-01 -1.2823820114135742e-01 + <_> + + 0 -1 445 -1.0964959859848022e-01 + + -8.6619192361831665e-01 3.0351849272847176e-02 + <_> + + 0 -1 446 -9.2532606795430183e-03 + + 2.9343119263648987e-01 -8.5361950099468231e-02 + <_> + + 0 -1 447 1.4686530455946922e-02 + + 3.2798621803522110e-02 -7.7556562423706055e-01 + <_> + + 0 -1 448 -1.3514430029317737e-03 + + 2.4426999688148499e-01 -1.1503250151872635e-01 + <_> + + 0 -1 449 -4.3728090822696686e-03 + + 2.1687670052051544e-01 -1.3984480500221252e-01 + <_> + + 0 -1 450 3.4263390116393566e-03 + + 4.5614220201969147e-02 -5.4567712545394897e-01 + <_> + + 0 -1 451 -3.8404068909585476e-03 + + 1.4949500560760498e-01 -1.5062509477138519e-01 + <_> + + 0 -1 452 3.7988980766385794e-03 + + -8.7301626801490784e-02 2.5481531023979187e-01 + <_> + + 0 -1 453 -2.0094281062483788e-03 + + 1.7259070277214050e-01 -1.4288470149040222e-01 + <_> + + 0 -1 454 -2.4370709434151649e-03 + + 2.6848098635673523e-01 -8.1898219883441925e-02 + <_> + + 0 -1 455 1.0485399980098009e-03 + + 4.6113260090351105e-02 -4.7243279218673706e-01 + <_> + + 0 -1 456 1.7460780218243599e-03 + + -1.1030430346727371e-01 2.0379729568958282e-01 + <_> + + 0 -1 457 5.8608627878129482e-03 + + -1.5619659423828125e-01 1.5927439928054810e-01 + <_> + + 0 -1 458 -2.7724979445338249e-02 + + 1.1349119991064072e-01 -2.1885140240192413e-01 + <_> + + 0 -1 459 4.7080639749765396e-02 + + -4.1688729077577591e-02 5.3630048036575317e-01 + <_> + + 0 -1 460 -7.9283770173788071e-03 + + -5.3595131635665894e-01 4.4237509369850159e-02 + <_> + + 0 -1 461 -1.2880540452897549e-02 + + 2.3237949609756470e-01 -1.0246250033378601e-01 + <_> + + 0 -1 462 2.3604769259691238e-02 + + -8.8291436433792114e-02 3.0561059713363647e-01 + <_> + + 0 -1 463 1.5902200713753700e-02 + + -1.2238109856843948e-01 1.7849120497703552e-01 + <_> + + 0 -1 464 7.9939495772123337e-03 + + -8.3729006350040436e-02 3.2319590449333191e-01 + <_> + + 0 -1 465 5.7100867852568626e-03 + + 3.8479208946228027e-02 -6.8138152360916138e-01 + <_> + 51 + -1.1122100353240967e+00 + + <_> + + 0 -1 466 2.2480720654129982e-03 + + -1.6416870057582855e-01 4.1648530960083008e-01 + <_> + + 0 -1 467 4.5813550241291523e-03 + + -1.2465959787368774e-01 4.0385121107101440e-01 + <_> + + 0 -1 468 -1.6073239967226982e-03 + + 2.6082459092140198e-01 -2.0282520353794098e-01 + <_> + + 0 -1 469 2.5205370038747787e-03 + + -1.0557229816913605e-01 3.6669111251831055e-01 + <_> + + 0 -1 470 2.4119189474731684e-03 + + -1.3877600431442261e-01 2.9959911108016968e-01 + <_> + + 0 -1 471 5.7156179100275040e-03 + + -7.7683463692665100e-02 4.8481920361518860e-01 + <_> + + 0 -1 472 3.1093840952962637e-03 + + -1.1229000240564346e-01 2.9215508699417114e-01 + <_> + + 0 -1 473 -8.6836628615856171e-02 + + -3.6779600381851196e-01 7.2597242891788483e-02 + <_> + + 0 -1 474 5.2652182057499886e-03 + + -1.0890290141105652e-01 3.1791260838508606e-01 + <_> + + 0 -1 475 -1.9913529977202415e-02 + + -5.3373438119888306e-01 7.0585712790489197e-02 + <_> + + 0 -1 476 3.8297839928418398e-03 + + -1.3575910031795502e-01 2.2788879275321960e-01 + <_> + + 0 -1 477 1.0431859642267227e-02 + + 8.8797912001609802e-02 -4.7958970069885254e-01 + <_> + + 0 -1 478 -2.0040439441800117e-02 + + 1.5745539963245392e-01 -1.7771570384502411e-01 + <_> + + 0 -1 479 -5.2967290394008160e-03 + + -6.8434917926788330e-01 3.5671461373567581e-02 + <_> + + 0 -1 480 -2.1624139044433832e-03 + + 2.8318038582801819e-01 -9.8511278629302979e-02 + <_> + + 0 -1 481 -3.5464888787828386e-04 + + -3.7077340483665466e-01 8.0932952463626862e-02 + <_> + + 0 -1 482 -1.8152060511056334e-04 + + -3.2207030057907104e-01 7.7551059424877167e-02 + <_> + + 0 -1 483 -2.7563021285459399e-04 + + -3.2441279292106628e-01 8.7949477136135101e-02 + <_> + + 0 -1 484 6.3823810778558254e-03 + + -8.8924713432788849e-02 3.1727218627929688e-01 + <_> + + 0 -1 485 1.1150909587740898e-02 + + 7.1019843220710754e-02 -4.0494039654731750e-01 + <_> + + 0 -1 486 -1.0593760525807738e-03 + + 2.6050668954849243e-01 -1.1765640228986740e-01 + <_> + + 0 -1 487 2.3906480055302382e-03 + + -8.4388621151447296e-02 3.1230551004409790e-01 + <_> + + 0 -1 488 -1.1000749655067921e-02 + + 1.9152249395847321e-01 -1.5210020542144775e-01 + <_> + + 0 -1 489 -2.4643228971399367e-04 + + -3.1765159964561462e-01 8.6582258343696594e-02 + <_> + + 0 -1 490 2.3053269833326340e-02 + + -1.0089760273694992e-01 2.5769290328025818e-01 + <_> + + 0 -1 491 -2.2135660983622074e-03 + + 4.5689210295677185e-01 -5.2404791116714478e-02 + <_> + + 0 -1 492 -9.7139709396287799e-04 + + -3.5518380999565125e-01 8.0094382166862488e-02 + <_> + + 0 -1 493 1.5676229959353805e-03 + + 1.0091420263051987e-01 -2.1603040397167206e-01 + <_> + + 0 -1 494 7.5460801599547267e-04 + + 5.7896178215742111e-02 -4.0461111068725586e-01 + <_> + + 0 -1 495 -2.0698970183730125e-02 + + 3.1543630361557007e-01 -8.0713048577308655e-02 + <_> + + 0 -1 496 -2.0619940012693405e-02 + + 2.7181661128997803e-01 -7.6358616352081299e-02 + <_> + + 0 -1 497 2.1611129865050316e-02 + + 3.9493449032306671e-02 -5.9429651498794556e-01 + <_> + + 0 -1 498 6.5676742233335972e-03 + + -9.8353669047355652e-02 2.3649279773235321e-01 + <_> + + 0 -1 499 -8.8434796780347824e-03 + + -5.2523428201675415e-01 4.3099921196699142e-02 + <_> + + 0 -1 500 -9.4260741025209427e-03 + + 2.4665130674839020e-01 -9.4130717217922211e-02 + <_> + + 0 -1 501 -1.9830230157822371e-03 + + 2.6743701100349426e-01 -9.0069316327571869e-02 + <_> + + 0 -1 502 -1.7358399927616119e-03 + + 1.5940019488334656e-01 -1.5789410471916199e-01 + <_> + + 0 -1 503 -1.3513869605958462e-02 + + 4.0792331099510193e-01 -6.4223118126392365e-02 + <_> + + 0 -1 504 -1.9394010305404663e-02 + + 1.8015649914741516e-01 -1.3731400668621063e-01 + <_> + + 0 -1 505 -3.2684770412743092e-03 + + 2.9080390930175781e-01 -8.0161906778812408e-02 + <_> + + 0 -1 506 4.1773589327931404e-04 + + -2.1412980556488037e-01 1.1273439973592758e-01 + <_> + + 0 -1 507 -7.6351119205355644e-03 + + -4.5365959405899048e-01 5.4625060409307480e-02 + <_> + + 0 -1 508 -8.3652976900339127e-03 + + 2.6472920179367065e-01 -9.4334110617637634e-02 + <_> + + 0 -1 509 2.7768449857831001e-02 + + -1.0136710107326508e-01 2.0743979513645172e-01 + <_> + + 0 -1 510 -5.4891228675842285e-02 + + 2.8840309381484985e-01 -7.5312040746212006e-02 + <_> + + 0 -1 511 2.5793339591473341e-03 + + -1.1088529974222183e-01 2.1724960207939148e-01 + <_> + + 0 -1 512 6.6196516854688525e-05 + + -1.8872100114822388e-01 1.4440689980983734e-01 + <_> + + 0 -1 513 5.0907251425087452e-03 + + -7.7601231634616852e-02 2.9398378729820251e-01 + <_> + + 0 -1 514 -1.0444259643554688e-01 + + 2.0133109390735626e-01 -1.0903970152139664e-01 + <_> + + 0 -1 515 -6.7273090826347470e-04 + + 1.7945900559425354e-01 -1.2023670226335526e-01 + <_> + + 0 -1 516 3.2412849832326174e-03 + + 4.0688131004571915e-02 -5.4600572586059570e-01 + <_> + 44 + -1.2529590129852295e+00 + + <_> + + 0 -1 517 5.2965320646762848e-03 + + -1.2154529988765717e-01 6.4420372247695923e-01 + <_> + + 0 -1 518 -2.5326260365545750e-03 + + 5.1233220100402832e-01 -1.1108259856700897e-01 + <_> + + 0 -1 519 -2.9183230362832546e-03 + + -5.0615429878234863e-01 1.1501979827880859e-01 + <_> + + 0 -1 520 -2.3692339658737183e-02 + + 3.7167280912399292e-01 -1.4672680199146271e-01 + <_> + + 0 -1 521 2.0177470520138741e-02 + + -1.7388840019702911e-01 4.7759491205215454e-01 + <_> + + 0 -1 522 -2.1723210811614990e-02 + + -4.3880090117454529e-01 1.3576899468898773e-01 + <_> + + 0 -1 523 2.8369780629873276e-03 + + -1.2512069940567017e-01 4.6789029240608215e-01 + <_> + + 0 -1 524 2.7148420922458172e-03 + + -8.8018856942653656e-02 3.6866518855094910e-01 + <_> + + 0 -1 525 3.2625689636915922e-03 + + -8.5335306823253632e-02 5.1644730567932129e-01 + <_> + + 0 -1 526 -3.5618850961327553e-03 + + -4.4503930211067200e-01 9.1738171875476837e-02 + <_> + + 0 -1 527 1.9227749435231090e-03 + + -1.1077310144901276e-01 3.9416998624801636e-01 + <_> + + 0 -1 528 -3.5111969918943942e-04 + + -3.7775701284408569e-01 1.2166170030832291e-01 + <_> + + 0 -1 529 1.9121779769193381e-04 + + 7.4816018342971802e-02 -4.0767100453376770e-01 + <_> + + 0 -1 530 -2.6525629800744355e-04 + + -3.3151718974113464e-01 1.1291120201349258e-01 + <_> + + 0 -1 531 2.0086700096726418e-02 + + -6.1598118394613266e-02 5.6128817796707153e-01 + <_> + + 0 -1 532 3.6783248186111450e-02 + + -6.0251388698816299e-02 5.2192491292953491e-01 + <_> + + 0 -1 533 1.3941619545221329e-03 + + -3.5503050684928894e-01 1.0863020271062851e-01 + <_> + + 0 -1 534 -1.5181669965386391e-02 + + 2.2739650309085846e-01 -1.6252990067005157e-01 + <_> + + 0 -1 535 4.6796840615570545e-03 + + -5.7535041123628616e-02 4.8124238848686218e-01 + <_> + + 0 -1 536 -1.7988319450523704e-04 + + -3.0587670207023621e-01 1.0868159681558609e-01 + <_> + + 0 -1 537 -3.5850999411195517e-03 + + 3.8596940040588379e-01 -9.2194072902202606e-02 + <_> + + 0 -1 538 1.0793360415846109e-03 + + -1.1190389841794968e-01 3.1125208735466003e-01 + <_> + + 0 -1 539 7.3285802500322461e-05 + + -2.0239910483360291e-01 1.5586680173873901e-01 + <_> + + 0 -1 540 1.3678739964962006e-01 + + -2.1672859787940979e-01 1.4420390129089355e-01 + <_> + + 0 -1 541 -1.1729259975254536e-02 + + 4.3503770232200623e-01 -7.4886530637741089e-02 + <_> + + 0 -1 542 3.9230841211974621e-03 + + -5.0289329141378403e-02 5.8831161260604858e-01 + <_> + + 0 -1 543 -2.9819121118634939e-04 + + -3.8232401013374329e-01 9.2451132833957672e-02 + <_> + + 0 -1 544 -4.7992770560085773e-03 + + 4.8488789796829224e-01 -7.3136523365974426e-02 + <_> + + 0 -1 545 -3.0155890271998942e-04 + + -3.5757359862327576e-01 1.0581880062818527e-01 + <_> + + 0 -1 546 1.0390769690275192e-02 + + 5.2920468151569366e-02 -5.7249659299850464e-01 + <_> + + 0 -1 547 -9.4488041941076517e-04 + + 4.4966828823089600e-01 -8.3075523376464844e-02 + <_> + + 0 -1 548 1.2651870492845774e-03 + + -9.6695438027381897e-02 3.1302270293235779e-01 + <_> + + 0 -1 549 1.7094539478421211e-02 + + -8.1248976290225983e-02 3.6113831400871277e-01 + <_> + + 0 -1 550 2.5973359588533640e-03 + + -1.1338350176811218e-01 2.2233949601650238e-01 + <_> + + 0 -1 551 1.4527440071105957e-03 + + 6.9750443100929260e-02 -3.6720710992813110e-01 + <_> + + 0 -1 552 4.7638658434152603e-03 + + -6.5788961946964264e-02 3.8328540325164795e-01 + <_> + + 0 -1 553 -6.2501081265509129e-03 + + -7.0754468441009521e-01 3.8350198417901993e-02 + <_> + + 0 -1 554 -3.1765329185873270e-03 + + 1.3755400478839874e-01 -2.3240029811859131e-01 + <_> + + 0 -1 555 3.2191169448196888e-03 + + -1.2935450673103333e-01 2.2737880051136017e-01 + <_> + + 0 -1 556 -5.6365579366683960e-03 + + 3.8067150115966797e-01 -6.7246839404106140e-02 + <_> + + 0 -1 557 -2.3844049428589642e-04 + + -3.1122380495071411e-01 8.3838358521461487e-02 + <_> + + 0 -1 558 -4.1017560288310051e-03 + + 2.6067280769348145e-01 -1.0449740290641785e-01 + <_> + + 0 -1 559 1.3336989795789123e-03 + + -5.8250140398740768e-02 4.7682440280914307e-01 + <_> + + 0 -1 560 -1.2090239906683564e-03 + + 1.4834509789943695e-01 -1.7329469323158264e-01 + <_> + 72 + -1.1188739538192749e+00 + + <_> + + 0 -1 561 -3.1760931015014648e-03 + + 3.3333331346511841e-01 -1.6642349958419800e-01 + <_> + + 0 -1 562 2.4858079850673676e-02 + + -7.2728872299194336e-02 5.6674581766128540e-01 + <_> + + 0 -1 563 -7.7597280032932758e-03 + + 4.6258568763732910e-01 -9.3112178146839142e-02 + <_> + + 0 -1 564 7.8239021822810173e-03 + + -2.7414610981941223e-01 1.3243049383163452e-01 + <_> + + 0 -1 565 -1.0948839597404003e-02 + + 2.2345480322837830e-01 -1.4965449273586273e-01 + <_> + + 0 -1 566 -3.4349008928984404e-03 + + 3.8724988698959351e-01 -6.6121727228164673e-02 + <_> + + 0 -1 567 -3.1156290322542191e-02 + + 2.4078279733657837e-01 -1.1406909674406052e-01 + <_> + + 0 -1 568 1.1100519914180040e-03 + + -2.8207978606224060e-01 1.3275429606437683e-01 + <_> + + 0 -1 569 3.1762740109115839e-03 + + 3.4585930407047272e-02 -5.1374310255050659e-01 + <_> + + 0 -1 570 -2.7977459132671356e-02 + + 2.3926779627799988e-01 -1.3255919516086578e-01 + <_> + + 0 -1 571 -2.3097939789295197e-02 + + 3.9019620418548584e-01 -7.8478008508682251e-02 + <_> + + 0 -1 572 -3.9731930010020733e-03 + + 3.0691069364547729e-01 -7.0601403713226318e-02 + <_> + + 0 -1 573 3.0335749033838511e-03 + + -1.4002190530300140e-01 1.9134859740734100e-01 + <_> + + 0 -1 574 -1.0844370350241661e-02 + + 1.6548730432987213e-01 -1.5657779574394226e-01 + <_> + + 0 -1 575 -1.8150510266423225e-02 + + -6.3243591785430908e-01 3.9561819285154343e-02 + <_> + + 0 -1 576 7.1052298881113529e-04 + + -1.8515570461750031e-01 1.3408809900283813e-01 + <_> + + 0 -1 577 1.0893340222537518e-02 + + -2.6730230078101158e-02 6.0971802473068237e-01 + <_> + + 0 -1 578 -2.8780900174751878e-04 + + -3.0065140128135681e-01 7.3171459138393402e-02 + <_> + + 0 -1 579 -3.5855069290846586e-03 + + 2.6217609643936157e-01 -7.9714097082614899e-02 + <_> + + 0 -1 580 -1.9759280607104301e-02 + + -5.9039229154586792e-01 4.0698971599340439e-02 + <_> + + 0 -1 581 -1.0845210403203964e-02 + + 1.6364559531211853e-01 -1.2586060166358948e-01 + <_> + + 0 -1 582 -4.3183090165257454e-03 + + -5.7474881410598755e-01 3.7644311785697937e-02 + <_> + + 0 -1 583 1.4913700288161635e-03 + + 6.0913469642400742e-02 -3.0222928524017334e-01 + <_> + + 0 -1 584 1.5675699338316917e-02 + + -7.3145911097526550e-02 2.9379451274871826e-01 + <_> + + 0 -1 585 -1.1033560149371624e-02 + + 3.9318808913230896e-01 -4.7084320336580276e-02 + <_> + + 0 -1 586 8.8555756956338882e-03 + + 3.7601381540298462e-02 -4.9108490347862244e-01 + <_> + + 0 -1 587 -8.9665671112015843e-04 + + 1.7952020466327667e-01 -1.1086239665746689e-01 + <_> + + 0 -1 588 -3.0592409893870354e-03 + + -4.4429460167884827e-01 5.1005430519580841e-02 + <_> + + 0 -1 589 6.3201179727911949e-03 + + -5.2841089665889740e-02 3.7197101116180420e-01 + <_> + + 0 -1 590 2.0682830363512039e-02 + + 5.7667169719934464e-02 -3.6901599168777466e-01 + <_> + + 0 -1 591 9.9822662770748138e-02 + + -3.7377018481492996e-02 5.8165591955184937e-01 + <_> + + 0 -1 592 -6.5854229032993317e-03 + + 2.8509441018104553e-01 -6.0978069901466370e-02 + <_> + + 0 -1 593 -6.0900300741195679e-02 + + -5.1031768321990967e-01 3.7787400186061859e-02 + <_> + + 0 -1 594 -2.9991709161549807e-03 + + -4.7943010926246643e-01 3.8833890110254288e-02 + <_> + + 0 -1 595 -9.8906438797712326e-03 + + 4.0609079599380493e-01 -4.7869648784399033e-02 + <_> + + 0 -1 596 -8.2688927650451660e-02 + + -7.0671182870864868e-01 2.7487749233841896e-02 + <_> + + 0 -1 597 5.0060399807989597e-03 + + 2.8208440169692039e-02 -5.2909690141677856e-01 + <_> + + 0 -1 598 6.1695030890405178e-03 + + -5.4554861038923264e-02 3.2837980985641479e-01 + <_> + + 0 -1 599 -3.3914761152118444e-03 + + 9.2117667198181152e-02 -2.1637110412120819e-01 + <_> + + 0 -1 600 -2.6131230406463146e-03 + + 1.3651019334793091e-01 -1.3781130313873291e-01 + <_> + + 0 -1 601 8.0490659456700087e-04 + + -6.8637110292911530e-02 3.3581069111824036e-01 + <_> + + 0 -1 602 -3.8106508553028107e-02 + + 2.9445430636405945e-01 -6.8239226937294006e-02 + <_> + + 0 -1 603 7.2450799052603543e-05 + + -1.6750130057334900e-01 1.2178230285644531e-01 + <_> + + 0 -1 604 1.5837959945201874e-03 + + -9.2042848467826843e-02 2.1348990499973297e-01 + <_> + + 0 -1 605 1.2924340553581715e-03 + + 6.2917232513427734e-02 -3.6174508929252625e-01 + <_> + + 0 -1 606 9.9146775901317596e-03 + + 1.9534060731530190e-02 -8.1015038490295410e-01 + <_> + + 0 -1 607 -1.7086310544982553e-03 + + 2.5525239109992981e-01 -6.8229459226131439e-02 + <_> + + 0 -1 608 2.1844399161636829e-03 + + 2.3314049467444420e-02 -8.4296780824661255e-01 + <_> + + 0 -1 609 -3.4244330599904060e-03 + + 2.7213689684867859e-01 -7.6395228505134583e-02 + <_> + + 0 -1 610 2.7591470279730856e-04 + + -1.0742840170860291e-01 2.2888970375061035e-01 + <_> + + 0 -1 611 -6.0005177510902286e-04 + + -2.9854211211204529e-01 6.3479736447334290e-02 + <_> + + 0 -1 612 -2.5001438916660845e-04 + + -2.7178969979286194e-01 6.9615006446838379e-02 + <_> + + 0 -1 613 6.8751391954720020e-03 + + -5.7185899466276169e-02 3.6695951223373413e-01 + <_> + + 0 -1 614 1.2761900201439857e-02 + + 6.7955687642097473e-02 -2.8534150123596191e-01 + <_> + + 0 -1 615 -1.4752789866179228e-03 + + 2.0680660009384155e-01 -1.0059390217065811e-01 + <_> + + 0 -1 616 1.2138819694519043e-01 + + -9.7126796841621399e-02 1.9789619743824005e-01 + <_> + + 0 -1 617 -5.0081279128789902e-02 + + 2.8417178988456726e-01 -6.7879997193813324e-02 + <_> + + 0 -1 618 3.1454950571060181e-02 + + -8.9468672871589661e-02 2.1298420429229736e-01 + <_> + + 0 -1 619 1.8878319533541799e-03 + + -1.1656440049409866e-01 1.6663520038127899e-01 + <_> + + 0 -1 620 -5.7211960665881634e-03 + + 2.3702140152454376e-01 -9.0776607394218445e-02 + <_> + + 0 -1 621 -1.8076719425152987e-04 + + 1.7951929569244385e-01 -1.0793480277061462e-01 + <_> + + 0 -1 622 -1.9761849939823151e-01 + + 4.5674291253089905e-01 -4.0480159223079681e-02 + <_> + + 0 -1 623 -2.3846809926908463e-04 + + -2.3733009397983551e-01 7.5922161340713501e-02 + <_> + + 0 -1 624 2.1540730085689574e-04 + + 8.1688016653060913e-02 -2.8685030341148376e-01 + <_> + + 0 -1 625 1.0163090191781521e-02 + + -4.1250020265579224e-02 4.8038348555564880e-01 + <_> + + 0 -1 626 -7.2184870950877666e-03 + + 1.7458580434322357e-01 -1.0146500170230865e-01 + <_> + + 0 -1 627 2.4263170361518860e-01 + + 5.3426481783390045e-02 -3.2318529486656189e-01 + <_> + + 0 -1 628 6.9304101634770632e-04 + + -1.1499179899692535e-01 1.4793939888477325e-01 + <_> + + 0 -1 629 3.5475199110805988e-03 + + -3.9424978196620941e-02 5.3126180171966553e-01 + <_> + + 0 -1 630 2.1403690334409475e-04 + + 6.9753833115100861e-02 -2.7319580316543579e-01 + <_> + + 0 -1 631 -5.7119462871924043e-04 + + 3.4369900822639465e-01 -5.7699009776115417e-02 + <_> + + 0 -1 632 -6.6290069371461868e-03 + + 1.1758489906787872e-01 -1.5020139515399933e-01 + <_> + 66 + -1.0888810157775879e+00 + + <_> + + 0 -1 633 -2.6513449847698212e-02 + + 2.0568640530109406e-01 -2.6473900675773621e-01 + <_> + + 0 -1 634 9.7727458924055099e-03 + + -1.1192840337753296e-01 3.2570549845695496e-01 + <_> + + 0 -1 635 3.2290350645780563e-02 + + -9.8574757575988770e-02 3.1779170036315918e-01 + <_> + + 0 -1 636 -2.8103240765631199e-03 + + 1.5213899314403534e-01 -1.9686409831047058e-01 + <_> + + 0 -1 637 -1.0991429910063744e-02 + + 5.1407659053802490e-01 -4.3707210570573807e-02 + <_> + + 0 -1 638 6.3133831135928631e-03 + + -9.2781022191047668e-02 3.4702470898628235e-01 + <_> + + 0 -1 639 8.7105982005596161e-02 + + 3.0053649097681046e-02 -8.2814818620681763e-01 + <_> + + 0 -1 640 1.1799359926953912e-03 + + -1.2928420305252075e-01 2.0646120607852936e-01 + <_> + + 0 -1 641 -9.3056890182197094e-04 + + -5.0021439790725708e-01 9.3666993081569672e-02 + <_> + + 0 -1 642 -1.3687170110642910e-02 + + -7.9358148574829102e-01 -6.6733639687299728e-03 + <_> + + 0 -1 643 -7.5917452573776245e-02 + + 3.0469641089439392e-01 -7.9655893146991730e-02 + <_> + + 0 -1 644 -2.8559709899127483e-03 + + 2.0961460471153259e-01 -1.2732550501823425e-01 + <_> + + 0 -1 645 -4.0231510065495968e-03 + + -6.5817278623580933e-01 5.0683639943599701e-02 + <_> + + 0 -1 646 1.7558040097355843e-02 + + -8.5382692515850067e-02 3.6174559593200684e-01 + <_> + + 0 -1 647 2.1988239139318466e-02 + + 6.2943696975708008e-02 -7.0896339416503906e-01 + <_> + + 0 -1 648 -2.8599589131772518e-03 + + 1.4683780074119568e-01 -1.6465979814529419e-01 + <_> + + 0 -1 649 -1.0030849836766720e-02 + + 4.9579939246177673e-01 -2.7188340201973915e-02 + <_> + + 0 -1 650 -6.9560329429805279e-03 + + 2.7977779507637024e-01 -7.7953331172466278e-02 + <_> + + 0 -1 651 -3.8356808945536613e-03 + + -5.8163982629776001e-01 3.5739939659833908e-02 + <_> + + 0 -1 652 -3.2647319603711367e-03 + + -4.9945080280303955e-01 4.6986490488052368e-02 + <_> + + 0 -1 653 -7.8412350267171860e-03 + + 3.4532830119132996e-01 -6.8810403347015381e-02 + <_> + + 0 -1 654 -8.1718113506212831e-05 + + 1.5041710436344147e-01 -1.4146679639816284e-01 + <_> + + 0 -1 655 -3.2448628917336464e-03 + + 2.2724510729312897e-01 -9.2860206961631775e-02 + <_> + + 0 -1 656 -7.8561151167377830e-04 + + -4.4319018721580505e-01 5.7812441140413284e-02 + <_> + + 0 -1 657 -6.2474247533828020e-04 + + 1.3952389359474182e-01 -1.4668719470500946e-01 + <_> + + 0 -1 658 -3.2942948746494949e-04 + + -2.9901570081710815e-01 7.6066739857196808e-02 + <_> + + 0 -1 659 1.2605739757418633e-03 + + -1.6125600039958954e-01 1.3953800499439240e-01 + <_> + + 0 -1 660 -5.1667019724845886e-02 + + -5.3142839670181274e-01 4.0719520300626755e-02 + <_> + + 0 -1 661 -1.5285619534552097e-02 + + -7.8206378221511841e-01 2.7183769270777702e-02 + <_> + + 0 -1 662 6.9029822945594788e-02 + + -3.6427021026611328e-02 7.1102517843246460e-01 + <_> + + 0 -1 663 1.4522749697789550e-03 + + -9.6890516579151154e-02 2.1668420732021332e-01 + <_> + + 0 -1 664 -2.4765590205788612e-03 + + 1.1645310372114182e-01 -1.8227979540824890e-01 + <_> + + 0 -1 665 -1.5134819550439715e-03 + + 1.7863979935646057e-01 -1.2214969843626022e-01 + <_> + + 0 -1 666 -1.5099470037966967e-03 + + 1.8086239695549011e-01 -1.1446069926023483e-01 + <_> + + 0 -1 667 -6.7054620012640953e-03 + + 2.5106599926948547e-01 -9.1871462762355804e-02 + <_> + + 0 -1 668 -1.4075200073421001e-02 + + 1.3707509636878967e-01 -1.7333500087261200e-01 + <_> + + 0 -1 669 -2.2400720044970512e-03 + + 4.0092980861663818e-01 -4.7576878219842911e-02 + <_> + + 0 -1 670 1.9782369956374168e-02 + + -1.9040350615978241e-01 1.4923410117626190e-01 + <_> + + 0 -1 671 2.6002870872616768e-03 + + 4.6971768140792847e-02 -4.3307659029960632e-01 + <_> + + 0 -1 672 -5.3445628145709634e-04 + + -4.3744230270385742e-01 4.1520189493894577e-02 + <_> + + 0 -1 673 -1.7466509714722633e-02 + + 6.5818172693252563e-01 -3.4447491168975830e-02 + <_> + + 0 -1 674 -2.0425589755177498e-03 + + 3.9657929539680481e-01 -4.4052429497241974e-02 + <_> + + 0 -1 675 2.6661779265850782e-03 + + 5.8770958334207535e-02 -3.2806369662284851e-01 + <_> + + 0 -1 676 -5.5982369929552078e-02 + + -5.1735472679138184e-01 3.5791840404272079e-02 + <_> + + 0 -1 677 -1.5066330088302493e-03 + + 1.5123869478702545e-01 -1.2520180642604828e-01 + <_> + + 0 -1 678 -1.1472369544208050e-02 + + -6.2930530309677124e-01 3.4704331308603287e-02 + <_> + + 0 -1 679 2.3409629240632057e-02 + + -5.8063350617885590e-02 3.8668221235275269e-01 + <_> + + 0 -1 680 -2.3243729956448078e-03 + + 1.8754099309444427e-01 -9.8394669592380524e-02 + <_> + + 0 -1 681 -2.9039299115538597e-02 + + -5.4486900568008423e-01 4.0926340967416763e-02 + <_> + + 0 -1 682 -1.4474649913609028e-02 + + -6.7248392105102539e-01 2.3128850385546684e-02 + <_> + + 0 -1 683 -5.2086091600358486e-03 + + -4.3271440267562866e-01 4.3780650943517685e-02 + <_> + + 0 -1 684 4.9382899887859821e-03 + + -1.0878620296716690e-01 1.9342589378356934e-01 + <_> + + 0 -1 685 -4.3193930760025978e-03 + + 2.4080930650234222e-01 -1.0380800068378448e-01 + <_> + + 0 -1 686 2.3705669445917010e-04 + + -8.7349072098731995e-02 2.0466239750385284e-01 + <_> + + 0 -1 687 4.7858079778961837e-04 + + 4.5624580234289169e-02 -3.8854670524597168e-01 + <_> + + 0 -1 688 -8.5342838428914547e-04 + + -5.5077940225601196e-01 3.5825889557600021e-02 + <_> + + 0 -1 689 5.4772121075075120e-05 + + -1.1225239932537079e-01 1.7503519356250763e-01 + <_> + + 0 -1 690 -3.8445889949798584e-03 + + 2.4526700377464294e-01 -8.1132568418979645e-02 + <_> + + 0 -1 691 -4.0128458291292191e-02 + + -6.3122707605361938e-01 2.6972670108079910e-02 + <_> + + 0 -1 692 -1.7886360001284629e-04 + + 1.9855099916458130e-01 -1.0333680361509323e-01 + <_> + + 0 -1 693 1.7668239888735116e-04 + + -9.1359011828899384e-02 1.9848720729351044e-01 + <_> + + 0 -1 694 7.2763383388519287e-02 + + 5.0075579434633255e-02 -3.3852630853652954e-01 + <_> + + 0 -1 695 1.0181630030274391e-02 + + -9.3229979276657104e-02 2.0059590041637421e-01 + <_> + + 0 -1 696 2.4409969337284565e-03 + + 6.4636632800102234e-02 -2.6921740174293518e-01 + <_> + + 0 -1 697 -3.6227488890290260e-03 + + 1.3169890642166138e-01 -1.2514840066432953e-01 + <_> + + 0 -1 698 -1.3635610230267048e-03 + + 1.6350460052490234e-01 -1.0665939748287201e-01 + <_> + 69 + -1.0408929586410522e+00 + + <_> + + 0 -1 699 -9.6991164609789848e-03 + + 6.1125320196151733e-01 -6.6225312650203705e-02 + <_> + + 0 -1 700 -9.6426531672477722e-03 + + -1. 2.7699959464371204e-03 + <_> + + 0 -1 701 -9.6381865441799164e-03 + + 1. -2.9904270195402205e-04 + <_> + + 0 -1 702 -4.2553939856588840e-03 + + 2.8464388847351074e-01 -1.5540120005607605e-01 + <_> + + 0 -1 703 -9.6223521977663040e-03 + + -1. 4.3999180197715759e-02 + <_> + + 0 -1 704 -9.1231241822242737e-03 + + 8.6869341135025024e-01 -2.7267890982329845e-03 + <_> + + 0 -1 705 -8.6240433156490326e-03 + + 4.5352488756179810e-01 -8.6071379482746124e-02 + <_> + + 0 -1 706 -8.9324144646525383e-03 + + 1.3375559449195862e-01 -2.6012519001960754e-01 + <_> + + 0 -1 707 -1.4207810163497925e-02 + + 3.2077640295028687e-01 -9.7226411104202271e-02 + <_> + + 0 -1 708 2.5911010801792145e-02 + + -1.2964080274105072e-01 2.6218649744987488e-01 + <_> + + 0 -1 709 2.0531509653665125e-04 + + -1.2404280155897141e-01 2.1062959730625153e-01 + <_> + + 0 -1 710 -5.4795680625829846e-05 + + 1.1974299699068069e-01 -2.3201279342174530e-01 + <_> + + 0 -1 711 6.8555199541151524e-03 + + -6.3276126980781555e-02 4.1044250130653381e-01 + <_> + + 0 -1 712 -1.2253040447831154e-02 + + 5.4883331060409546e-01 -3.9731100201606750e-02 + <_> + + 0 -1 713 -3.9058770053088665e-03 + + 2.4190980195999146e-01 -9.7096011042594910e-02 + <_> + + 0 -1 714 2.7560980524867773e-03 + + -1.2569679319858551e-01 1.9456650316715240e-01 + <_> + + 0 -1 715 -7.7662160620093346e-03 + + 2.9765701293945312e-01 -9.6818156540393829e-02 + <_> + + 0 -1 716 3.8997188676148653e-04 + + 6.2188401818275452e-02 -4.2040899395942688e-01 + <_> + + 0 -1 717 3.3579880837351084e-03 + + 4.7498140484094620e-02 -6.3216882944107056e-01 + <_> + + 0 -1 718 -1.6745539382100105e-02 + + 7.1098130941390991e-01 -3.9157349616289139e-02 + <_> + + 0 -1 719 -6.5409899689257145e-03 + + -3.5043171048164368e-01 7.0616953074932098e-02 + <_> + + 0 -1 720 3.0016340315341949e-04 + + 9.1902457177639008e-02 -2.4618670344352722e-01 + <_> + + 0 -1 721 1.4918990433216095e-02 + + -5.1909450441598892e-02 5.6636041402816772e-01 + <_> + + 0 -1 722 4.8153079114854336e-04 + + 6.4659558236598969e-02 -3.6590608954429626e-01 + <_> + + 0 -1 723 -3.0211321427486837e-04 + + 1.7926569283008575e-01 -1.1410660296678543e-01 + <_> + + 0 -1 724 3.8521419628523290e-04 + + 1.0345619916915894e-01 -2.0072460174560547e-01 + <_> + + 0 -1 725 8.0837132409214973e-03 + + -6.6073462367057800e-02 3.0284249782562256e-01 + <_> + + 0 -1 726 -2.2804969921708107e-02 + + 5.2962350845336914e-01 -4.0118999779224396e-02 + <_> + + 0 -1 727 1.9440450705587864e-04 + + 8.1854820251464844e-02 -2.4663360416889191e-01 + <_> + + 0 -1 728 -1.2848090380430222e-02 + + -3.4973311424255371e-01 5.6916229426860809e-02 + <_> + + 0 -1 729 -1.0937290498986840e-03 + + 2.3368680477142334e-01 -9.1604806482791901e-02 + <_> + + 0 -1 730 1.0032650316134095e-03 + + 1.1852180212736130e-01 -1.8469190597534180e-01 + <_> + + 0 -1 731 -4.4688429683446884e-02 + + -6.4362460374832153e-01 3.0363269150257111e-02 + <_> + + 0 -1 732 8.1657543778419495e-03 + + 4.3674658983945847e-02 -4.3002089858055115e-01 + <_> + + 0 -1 733 -1.1717810295522213e-02 + + 4.1781479120254517e-01 -4.8233699053525925e-02 + <_> + + 0 -1 734 8.4277130663394928e-02 + + 5.3461279720067978e-02 -3.7952190637588501e-01 + <_> + + 0 -1 735 1.4211839996278286e-02 + + 4.4900938868522644e-02 -4.2981499433517456e-01 + <_> + + 0 -1 736 1.5028340276330709e-03 + + 8.2227639853954315e-02 -2.4706399440765381e-01 + <_> + + 0 -1 737 1.0003579780459404e-02 + + -5.7221669703722000e-02 3.4609371423721313e-01 + <_> + + 0 -1 738 -9.0706320479512215e-03 + + 4.5058089494705200e-01 -4.2795319110155106e-02 + <_> + + 0 -1 739 -3.3141620224341750e-04 + + 1.8336910009384155e-01 -1.0759949684143066e-01 + <_> + + 0 -1 740 1.9723279774188995e-01 + + -3.0363829806447029e-02 6.6423428058624268e-01 + <_> + + 0 -1 741 -7.1258801035583019e-03 + + -8.9225047826766968e-01 2.5669990107417107e-02 + <_> + + 0 -1 742 8.6921341717243195e-03 + + -7.0764370262622833e-02 2.8210529685020447e-01 + <_> + + 0 -1 743 8.9262127876281738e-03 + + 7.1078233420848846e-02 -3.0232560634613037e-01 + <_> + + 0 -1 744 5.7286009192466736e-02 + + 5.0974130630493164e-02 -3.9196950197219849e-01 + <_> + + 0 -1 745 3.7920880131423473e-03 + + 3.3841941505670547e-02 -5.1016288995742798e-01 + <_> + + 0 -1 746 -1.4508679741993546e-03 + + 3.0879148840904236e-01 -6.3845083117485046e-02 + <_> + + 0 -1 747 9.8390132188796997e-04 + + -1.3029569387435913e-01 1.4604410529136658e-01 + <_> + + 0 -1 748 -1.7221809830516577e-03 + + 2.9157009720802307e-01 -6.8549558520317078e-02 + <_> + + 0 -1 749 1.0948250070214272e-02 + + 3.4351408481597900e-02 -4.7702258825302124e-01 + <_> + + 0 -1 750 -1.7176309484057128e-05 + + 1.6055269539356232e-01 -1.1690840125083923e-01 + <_> + + 0 -1 751 -5.4884208366274834e-03 + + -4.3415889143943787e-01 4.6106241643428802e-02 + <_> + + 0 -1 752 -3.0975250992923975e-03 + + 3.7943339347839355e-01 -5.6860551238059998e-02 + <_> + + 0 -1 753 6.4182081259787083e-03 + + -1.5858210623264313e-01 1.2335419654846191e-01 + <_> + + 0 -1 754 1.1831239797174931e-02 + + -4.0929291397333145e-02 4.5878958702087402e-01 + <_> + + 0 -1 755 1.3540499843657017e-02 + + -5.3725559264421463e-02 3.5056120157241821e-01 + <_> + + 0 -1 756 -2.5932150892913342e-03 + + 1.1010520160198212e-01 -1.6752210259437561e-01 + <_> + + 0 -1 757 1.6856270376592875e-03 + + 6.6574357450008392e-02 -3.0835020542144775e-01 + <_> + + 0 -1 758 2.6524690911173820e-03 + + 6.6318482160568237e-02 -2.7861338853836060e-01 + <_> + + 0 -1 759 -7.7341729775071144e-03 + + 1.9718359410762787e-01 -1.0782919824123383e-01 + <_> + + 0 -1 760 5.0944271497428417e-03 + + 8.5337489843368530e-02 -2.4847009778022766e-01 + <_> + + 0 -1 761 -2.9162371065467596e-03 + + -4.7476351261138916e-01 3.3566489815711975e-02 + <_> + + 0 -1 762 3.0121419113129377e-03 + + -4.7575380653142929e-02 4.2586800456047058e-01 + <_> + + 0 -1 763 3.1694869976490736e-03 + + -1.0519450157880783e-01 1.7163459956645966e-01 + <_> + + 0 -1 764 2.2327560186386108e-01 + + -1.4370209537446499e-02 9.2483651638031006e-01 + <_> + + 0 -1 765 -9.5585048198699951e-02 + + -7.4206638336181641e-01 2.7818970382213593e-02 + <_> + + 0 -1 766 3.4773729566950351e-05 + + -1.2765780091285706e-01 1.2926669418811798e-01 + <_> + + 0 -1 767 7.2459770308341831e-05 + + -1.6518579423427582e-01 1.0036809742450714e-01 + <_> + 59 + -1.0566600561141968e+00 + + <_> + + 0 -1 768 -6.5778270363807678e-03 + + 3.3815258741378784e-01 -1.5281909704208374e-01 + <_> + + 0 -1 769 -1.0922809597104788e-03 + + 2.2282369434833527e-01 -1.9308499991893768e-01 + <_> + + 0 -1 770 -2.9759589582681656e-02 + + 2.5959870219230652e-01 -1.5409409999847412e-01 + <_> + + 0 -1 771 -1.3147540390491486e-02 + + 1.9033810496330261e-01 -1.6543999314308167e-01 + <_> + + 0 -1 772 -1.4396329643204808e-03 + + 2.0071710646152496e-01 -1.2338940054178238e-01 + <_> + + 0 -1 773 -3.5928250290453434e-03 + + 2.3985520005226135e-01 -1.2922149896621704e-01 + <_> + + 0 -1 774 -1.5314699849113822e-03 + + -4.9014899134635925e-01 1.0275030136108398e-01 + <_> + + 0 -1 775 -6.2372139655053616e-03 + + 3.1214639544487000e-01 -1.1405629664659500e-01 + <_> + + 0 -1 776 -3.3364649862051010e-02 + + -4.9520879983901978e-01 5.1328450441360474e-02 + <_> + + 0 -1 777 -2.2827699780464172e-02 + + 3.2558828592300415e-01 -6.5089307725429535e-02 + <_> + + 0 -1 778 -8.6199097335338593e-02 + + -6.7646330595016479e-01 2.6985699310898781e-02 + <_> + + 0 -1 779 -2.1065981127321720e-03 + + 2.2452430427074432e-01 -1.2610229849815369e-01 + <_> + + 0 -1 780 3.9120148867368698e-02 + + 1.1329399794340134e-01 -2.6860630512237549e-01 + <_> + + 0 -1 781 3.5082739777863026e-03 + + -1.1359959840774536e-01 2.5649771094322205e-01 + <_> + + 0 -1 782 5.9289898490533233e-04 + + -1.4942969381809235e-01 1.6409839689731598e-01 + <_> + + 0 -1 783 7.1766850305721164e-04 + + 9.9905692040920258e-02 -2.1967969834804535e-01 + <_> + + 0 -1 784 -2.1803600713610649e-02 + + -3.1711721420288086e-01 8.2889586687088013e-02 + <_> + + 0 -1 785 -3.2962779514491558e-03 + + -3.8048729300498962e-01 6.0819379985332489e-02 + <_> + + 0 -1 786 2.4196270387619734e-03 + + -9.6013016998767853e-02 2.8540581464767456e-01 + <_> + + 0 -1 787 -4.4187481398694217e-04 + + 2.2127939760684967e-01 -9.7434908151626587e-02 + <_> + + 0 -1 788 3.4523929934948683e-03 + + 3.7553120404481888e-02 -5.7969051599502563e-01 + <_> + + 0 -1 789 -2.1834600716829300e-02 + + 2.9562139511108398e-01 -8.0048300325870514e-02 + <_> + + 0 -1 790 -2.1309500152710825e-04 + + 2.2814509272575378e-01 -1.0114189982414246e-01 + <_> + + 0 -1 791 -1.6166249988600612e-03 + + -5.0541198253631592e-01 4.4764541089534760e-02 + <_> + + 0 -1 792 7.5959609821438789e-03 + + 4.5986540615558624e-02 -4.1197681427001953e-01 + <_> + + 0 -1 793 3.8601809646934271e-03 + + -8.6563169956207275e-02 2.4809999763965607e-01 + <_> + + 0 -1 794 6.0622231103479862e-03 + + -7.5557373464107513e-02 2.8433260321617126e-01 + <_> + + 0 -1 795 -1.7097420059144497e-03 + + -3.5295820236206055e-01 5.8410499244928360e-02 + <_> + + 0 -1 796 1.6515579074621201e-02 + + -8.0486953258514404e-02 2.3537430167198181e-01 + <_> + + 0 -1 797 4.8465100117027760e-03 + + 4.1895218193531036e-02 -4.8443049192428589e-01 + <_> + + 0 -1 798 -3.1167170032858849e-02 + + 1.9192309677600861e-01 -1.0268159955739975e-01 + <_> + + 0 -1 799 6.1892281519249082e-04 + + -2.1085770428180695e-01 9.3886926770210266e-02 + <_> + + 0 -1 800 1.1946310289204121e-02 + + 3.9096169173717499e-02 -6.2248629331588745e-01 + <_> + + 0 -1 801 -7.5677200220525265e-03 + + 1.5936839580535889e-01 -1.2250780314207077e-01 + <_> + + 0 -1 802 -5.3747411817312241e-02 + + -5.5622178316116333e-01 4.1190009564161301e-02 + <_> + + 0 -1 803 1.5513530001044273e-02 + + -3.9826881140470505e-02 6.2400728464126587e-01 + <_> + + 0 -1 804 1.5246650436893106e-03 + + 7.0138677954673767e-02 -3.0789071321487427e-01 + <_> + + 0 -1 805 -4.8315100139006972e-04 + + 1.7887659370899200e-01 -1.0958620160818100e-01 + <_> + + 0 -1 806 2.7374739293009043e-03 + + 2.7478590607643127e-02 -8.8489568233489990e-01 + <_> + + 0 -1 807 -6.5787717700004578e-02 + + -4.6432140469551086e-01 3.5037148743867874e-02 + <_> + + 0 -1 808 1.2409730115905404e-03 + + -9.6479237079620361e-02 2.8779220581054688e-01 + <_> + + 0 -1 809 8.1398809561505914e-04 + + 1.1511719971895218e-01 -1.6766160726547241e-01 + <_> + + 0 -1 810 2.3901820182800293e-02 + + -3.2603189349174500e-02 6.0017347335815430e-01 + <_> + + 0 -1 811 2.7556600049138069e-02 + + -6.6137343645095825e-02 2.9994478821754456e-01 + <_> + + 0 -1 812 -3.8070970913395286e-04 + + -3.3881181478500366e-01 6.4450770616531372e-02 + <_> + + 0 -1 813 -1.3335429830476642e-03 + + 1.4588660001754761e-01 -1.3217620551586151e-01 + <_> + + 0 -1 814 -9.3507990241050720e-03 + + -5.1177829504013062e-01 3.4969471395015717e-02 + <_> + + 0 -1 815 7.6215229928493500e-03 + + 2.3249529302120209e-02 -6.9619411230087280e-01 + <_> + + 0 -1 816 -5.3407860832521692e-05 + + 2.3727379739284515e-01 -8.6910709738731384e-02 + <_> + + 0 -1 817 -1.5332329785451293e-03 + + 1.9228410720825195e-01 -1.0422399640083313e-01 + <_> + + 0 -1 818 4.3135890737175941e-03 + + -9.6219547092914581e-02 2.5601211190223694e-01 + <_> + + 0 -1 819 -2.3042880638968199e-04 + + -3.1564751267433167e-01 5.8838598430156708e-02 + <_> + + 0 -1 820 -7.8411828726530075e-03 + + -6.6340929269790649e-01 2.4500999599695206e-02 + <_> + + 0 -1 821 1.7103740572929382e-01 + + 3.3831499516963959e-02 -4.5615941286087036e-01 + <_> + + 0 -1 822 -1.6011140542104840e-03 + + 2.1574890613555908e-01 -8.3622530102729797e-02 + <_> + + 0 -1 823 -1.0535780340433121e-02 + + 2.4552319943904877e-01 -8.2384489476680756e-02 + <_> + + 0 -1 824 -5.8351638726890087e-03 + + -4.7807329893112183e-01 4.4086221605539322e-02 + <_> + + 0 -1 825 -1.8706109374761581e-02 + + -6.0024029016494751e-01 2.1410040557384491e-02 + <_> + + 0 -1 826 -9.3307439237833023e-04 + + 2.4323590099811554e-01 -7.4165716767311096e-02 + <_> + 88 + -9.7693431377410889e-01 + + <_> + + 0 -1 827 1.0646229609847069e-02 + + -1.3861389458179474e-01 2.6494070887565613e-01 + <_> + + 0 -1 828 3.5298269242048264e-02 + + -7.5821727514266968e-02 3.9021068811416626e-01 + <_> + + 0 -1 829 7.5638387352228165e-04 + + -9.5521442592144012e-02 2.9061999917030334e-01 + <_> + + 0 -1 830 9.2497706413269043e-02 + + -2.7704238891601562e-01 7.9474702477455139e-02 + <_> + + 0 -1 831 -2.9340879991650581e-03 + + 2.2989539802074432e-01 -7.8550010919570923e-02 + <_> + + 0 -1 832 -8.6535848677158356e-02 + + 4.7744810581207275e-01 -6.8231220357120037e-03 + <_> + + 0 -1 833 5.4699288739357144e-05 + + -2.2642609477043152e-01 8.8192112743854523e-02 + <_> + + 0 -1 834 -3.6592520773410797e-02 + + 2.7353870868682861e-01 -9.8606742918491364e-02 + <_> + + 0 -1 835 2.6469118893146515e-03 + + -4.4083978980779648e-02 3.1445288658142090e-01 + <_> + + 0 -1 836 -4.4271810911595821e-03 + + 2.3822729289531708e-01 -8.6784273386001587e-02 + <_> + + 0 -1 837 -5.1882481202483177e-03 + + 1.5042769908905029e-01 -1.2672109901905060e-01 + <_> + + 0 -1 838 4.5530400238931179e-03 + + -5.5945020169019699e-02 3.6501631140708923e-01 + <_> + + 0 -1 839 1.4562410302460194e-02 + + 3.6397770047187805e-02 -5.3559190034866333e-01 + <_> + + 0 -1 840 6.8677567469421774e-05 + + -1.7479629814624786e-01 1.1068709939718246e-01 + <_> + + 0 -1 841 -5.9744901955127716e-03 + + 3.1077870726585388e-01 -6.6530227661132812e-02 + <_> + + 0 -1 842 -5.8691250160336494e-03 + + -3.1901490688323975e-01 6.3931830227375031e-02 + <_> + + 0 -1 843 -1.1140310205519199e-02 + + 2.4364790320396423e-01 -8.0935180187225342e-02 + <_> + + 0 -1 844 -5.8643531054258347e-02 + + -7.6083260774612427e-01 3.0809629708528519e-02 + <_> + + 0 -1 845 -4.6097282320261002e-03 + + -4.5315021276473999e-01 2.9879059642553329e-02 + <_> + + 0 -1 846 -9.3032103031873703e-03 + + 1.4513379335403442e-01 -1.1033169925212860e-01 + <_> + + 0 -1 847 1.3253629440441728e-03 + + -9.7698956727981567e-02 1.9646440446376801e-01 + <_> + + 0 -1 848 4.9800761044025421e-03 + + 3.3648081123828888e-02 -3.9792209863662720e-01 + <_> + + 0 -1 849 -7.6542161405086517e-03 + + 9.0841993689537048e-02 -1.5967549383640289e-01 + <_> + + 0 -1 850 -3.8920590281486511e-01 + + -6.6571092605590820e-01 1.9028829410672188e-02 + <_> + + 0 -1 851 -1.0019669681787491e-01 + + -5.7559269666671753e-01 2.4282779544591904e-02 + <_> + + 0 -1 852 7.3541211895644665e-04 + + 8.7919801473617554e-02 -1.6195340454578400e-01 + <_> + + 0 -1 853 -3.4802639856934547e-03 + + 2.6064491271972656e-01 -6.0200810432434082e-02 + <_> + + 0 -1 854 8.4000425413250923e-03 + + -1.0979729890823364e-01 1.5707309544086456e-01 + <_> + + 0 -1 855 2.3786011151969433e-03 + + 3.6058239638805389e-02 -4.7277191281318665e-01 + <_> + + 0 -1 856 7.3831682093441486e-03 + + -3.5756360739469528e-02 4.9498590826988220e-01 + <_> + + 0 -1 857 3.2115620560944080e-03 + + -1.0125560313463211e-01 1.5747989714145660e-01 + <_> + + 0 -1 858 -7.8209668397903442e-02 + + -7.6627081632614136e-01 2.2965829819440842e-02 + <_> + + 0 -1 859 5.3303989261621609e-05 + + -1.3414350152015686e-01 1.1114919930696487e-01 + <_> + + 0 -1 860 -9.6419155597686768e-03 + + 2.5068029761314392e-01 -6.6608138382434845e-02 + <_> + + 0 -1 861 -7.1092672646045685e-02 + + -4.0056818723678589e-01 4.0297791361808777e-02 + <_> + + 0 -1 862 3.5171560011804104e-04 + + 4.1861180216073990e-02 -3.2961198687553406e-01 + <_> + + 0 -1 863 -3.3458150574006140e-04 + + -2.6029831171035767e-01 6.7892737686634064e-02 + <_> + + 0 -1 864 -4.1451421566307545e-03 + + 2.3967699706554413e-01 -7.2093337774276733e-02 + <_> + + 0 -1 865 3.1754500232636929e-03 + + -7.1235269308090210e-02 2.4128450453281403e-01 + <_> + + 0 -1 866 -5.5184490047395229e-03 + + 5.0320237874984741e-01 -2.9686680063605309e-02 + <_> + + 0 -1 867 -3.0242869979701936e-04 + + 2.4879050254821777e-01 -5.6758578866720200e-02 + <_> + + 0 -1 868 -1.3125919504091144e-03 + + 3.1747800111770630e-01 -4.1845861822366714e-02 + <_> + + 0 -1 869 -2.7123570907860994e-04 + + -2.7042070031166077e-01 5.6828990578651428e-02 + <_> + + 0 -1 870 -7.3241777718067169e-03 + + 2.7556678652763367e-01 -5.4252970963716507e-02 + <_> + + 0 -1 871 -1.6851710155606270e-02 + + -3.4852910041809082e-01 4.5368999242782593e-02 + <_> + + 0 -1 872 2.9902100563049316e-02 + + 3.1621079891920090e-02 -4.3114370107650757e-01 + <_> + + 0 -1 873 2.8902660124003887e-03 + + 3.8029961287975311e-02 -3.7027099728584290e-01 + <_> + + 0 -1 874 -1.9242949783802032e-03 + + 2.4800279736518860e-01 -5.9333298355340958e-02 + <_> + + 0 -1 875 4.9354149959981441e-03 + + -8.3068400621414185e-02 2.2043809294700623e-01 + <_> + + 0 -1 876 8.2075603306293488e-02 + + -1.9413439556956291e-02 6.9089287519454956e-01 + <_> + + 0 -1 877 -2.4699489586055279e-04 + + -2.4660569429397583e-01 6.4776450395584106e-02 + <_> + + 0 -1 878 -1.8365769647061825e-03 + + 2.8836160898208618e-01 -5.3390458226203918e-02 + <_> + + 0 -1 879 -4.9553811550140381e-03 + + 1.2740829586982727e-01 -1.2559419870376587e-01 + <_> + + 0 -1 880 -8.3086621016263962e-03 + + 2.3478110134601593e-01 -7.1676492691040039e-02 + <_> + + 0 -1 881 -1.0879919677972794e-01 + + -2.5992238521575928e-01 5.8689739555120468e-02 + <_> + + 0 -1 882 -9.6786450594663620e-03 + + -7.0720428228378296e-01 1.8749259412288666e-02 + <_> + + 0 -1 883 -2.7136830613017082e-02 + + -5.8384227752685547e-01 2.1684130653738976e-02 + <_> + + 0 -1 884 -6.5389778465032578e-03 + + -5.9748911857604980e-01 2.1480310708284378e-02 + <_> + + 0 -1 885 -1.2095630168914795e-02 + + 1.3269039988517761e-01 -9.9722720682621002e-02 + <_> + + 0 -1 886 -1.6776099801063538e-01 + + -5.6655067205429077e-01 3.2123088836669922e-02 + <_> + + 0 -1 887 -1.3262550346553326e-02 + + 1.1495590209960938e-01 -1.1738389730453491e-01 + <_> + + 0 -1 888 7.6744519174098969e-02 + + -3.1413231045007706e-02 5.9935492277145386e-01 + <_> + + 0 -1 889 5.0785229541361332e-03 + + -5.2911940962076187e-02 2.3342399299144745e-01 + <_> + + 0 -1 890 3.1800279393792152e-03 + + -7.7734388411045074e-02 1.7652909457683563e-01 + <_> + + 0 -1 891 -1.7729829996824265e-03 + + 1.9591629505157471e-01 -7.9752199351787567e-02 + <_> + + 0 -1 892 -4.8560940194875002e-04 + + -2.8800371289253235e-01 4.9047119915485382e-02 + <_> + + 0 -1 893 3.6554320831783116e-04 + + 6.7922897636890411e-02 -2.2499430179595947e-01 + <_> + + 0 -1 894 -2.6938671362586319e-04 + + 1.6582170128822327e-01 -8.9744098484516144e-02 + <_> + + 0 -1 895 7.8684233129024506e-02 + + 2.6081679388880730e-02 -5.5693739652633667e-01 + <_> + + 0 -1 896 -7.3774810880422592e-04 + + 1.4036870002746582e-01 -1.1800300329923630e-01 + <_> + + 0 -1 897 2.3957829922437668e-02 + + 3.0470740050077438e-02 -4.6159979701042175e-01 + <_> + + 0 -1 898 -1.6239080578088760e-03 + + 2.6327079534530640e-01 -5.6765370070934296e-02 + <_> + + 0 -1 899 -9.0819748584181070e-04 + + 1.5462459623813629e-01 -1.1087069660425186e-01 + <_> + + 0 -1 900 3.9806248969398439e-04 + + 5.5630370974540710e-02 -2.8331959247589111e-01 + <_> + + 0 -1 901 2.0506449509412050e-03 + + -9.1604836285114288e-02 1.7585539817810059e-01 + <_> + + 0 -1 902 2.6742549613118172e-02 + + 6.2003031373023987e-02 -2.4487000703811646e-01 + <_> + + 0 -1 903 -2.1497008856385946e-03 + + 2.9449298977851868e-01 -5.3218148648738861e-02 + <_> + + 0 -1 904 5.6671658530831337e-03 + + -6.4298242330551147e-02 2.4905680119991302e-01 + <_> + + 0 -1 905 6.8317902332637459e-05 + + -1.6819630563259125e-01 9.6548579633235931e-02 + <_> + + 0 -1 906 1.7600439605303109e-04 + + 6.5308012068271637e-02 -2.4267880618572235e-01 + <_> + + 0 -1 907 4.1861608624458313e-03 + + -9.7988583147525787e-02 1.8052889406681061e-01 + <_> + + 0 -1 908 -2.1808340679854155e-03 + + 1.9231270253658295e-01 -9.4123929738998413e-02 + <_> + + 0 -1 909 2.1730400621891022e-02 + + 3.5578511655330658e-02 -4.5088538527488708e-01 + <_> + + 0 -1 910 -1.4780269935727119e-02 + + -4.3927010893821716e-01 3.1735591590404510e-02 + <_> + + 0 -1 911 -3.6145891062915325e-03 + + 1.9811479747295380e-01 -7.7701419591903687e-02 + <_> + + 0 -1 912 1.8892709631472826e-03 + + 1.9962439313530922e-02 -7.2041720151901245e-01 + <_> + + 0 -1 913 -1.3822480104863644e-03 + + 9.8466947674751282e-02 -1.4881080389022827e-01 + <_> + + 0 -1 914 -3.9505911991000175e-03 + + 1.1593230068683624e-01 -1.2791970372200012e-01 + <_> + 58 + -1.0129359960556030e+00 + + <_> + + 0 -1 915 -1.9395539537072182e-02 + + 4.7474750876426697e-01 -1.1721090227365494e-01 + <_> + + 0 -1 916 1.3118919916450977e-02 + + -2.5552129745483398e-01 1.6378800570964813e-01 + <_> + + 0 -1 917 -5.1606801571324468e-04 + + 1.9452619552612305e-01 -1.7448890209197998e-01 + <_> + + 0 -1 918 -1.3184159994125366e-02 + + 4.4181451201438904e-01 -9.0048752725124359e-02 + <_> + + 0 -1 919 3.4657081123441458e-03 + + -1.3477090001106262e-01 1.8056340515613556e-01 + <_> + + 0 -1 920 6.2980200164020061e-03 + + -5.4164979606866837e-02 3.6033380031585693e-01 + <_> + + 0 -1 921 1.6879989998415112e-03 + + -1.9997949898242950e-01 1.2021599709987640e-01 + <_> + + 0 -1 922 3.6039709812030196e-04 + + 1.0524140298366547e-01 -2.4116060137748718e-01 + <_> + + 0 -1 923 -1.5276849735528231e-03 + + 2.8135529160499573e-01 -6.8964816629886627e-02 + <_> + + 0 -1 924 3.5033570602536201e-03 + + -8.2519583404064178e-02 4.0713590383529663e-01 + <_> + + 0 -1 925 -4.7337161377072334e-03 + + 1.9727009534835815e-01 -1.1710140109062195e-01 + <_> + + 0 -1 926 -1.1557149700820446e-02 + + -5.6061112880706787e-01 6.8170957267284393e-02 + <_> + + 0 -1 927 -2.7445720508694649e-02 + + 4.9718621373176575e-01 -6.2380149960517883e-02 + <_> + + 0 -1 928 -5.2825778722763062e-02 + + 1.6921220719814301e-01 -1.3093550503253937e-01 + <_> + + 0 -1 929 -2.9849699139595032e-01 + + -6.4649671316146851e-01 4.0076818317174911e-02 + <_> + + 0 -1 930 -2.6307269581593573e-04 + + 2.5127941370010376e-01 -8.9494839310646057e-02 + <_> + + 0 -1 931 2.3261709429789335e-04 + + -8.6843989789485931e-02 2.3831979930400848e-01 + <_> + + 0 -1 932 2.3631360090803355e-04 + + 1.1554460227489471e-01 -1.8936349451541901e-01 + <_> + + 0 -1 933 2.0742209162563086e-03 + + -4.8594851046800613e-02 5.7485991716384888e-01 + <_> + + 0 -1 934 -7.0308889262378216e-03 + + -5.4120808839797974e-01 4.8743750900030136e-02 + <_> + + 0 -1 935 8.2652270793914795e-03 + + 2.6494519785046577e-02 -6.1728459596633911e-01 + <_> + + 0 -1 936 2.0042760297656059e-04 + + -1.1768630146980286e-01 1.6333860158920288e-01 + <_> + + 0 -1 937 1.6470040427520871e-03 + + -5.9954918920993805e-02 3.5179701447486877e-01 + <_> + + 0 -1 938 -3.5642538568936288e-04 + + -3.4420299530029297e-01 6.4948253333568573e-02 + <_> + + 0 -1 939 -3.0935870483517647e-02 + + 1.9979700446128845e-01 -9.7693696618080139e-02 + <_> + + 0 -1 940 -6.3578772824257612e-04 + + -3.1481391191482544e-01 5.9425041079521179e-02 + <_> + + 0 -1 941 -1.1862180195748806e-02 + + 2.0043690502643585e-01 -8.9447543025016785e-02 + <_> + + 0 -1 942 7.1508930996060371e-03 + + -3.9006061851978302e-02 5.3327161073684692e-01 + <_> + + 0 -1 943 -2.0059191156178713e-03 + + -2.8469720482826233e-01 7.0723608136177063e-02 + <_> + + 0 -1 944 3.6412389017641544e-03 + + -1.0660319775342941e-01 2.4944800138473511e-01 + <_> + + 0 -1 945 -1.3467429578304291e-01 + + 4.9910080432891846e-01 -4.0332220494747162e-02 + <_> + + 0 -1 946 -2.2547659464180470e-03 + + 1.6851690411567688e-01 -1.1119280010461807e-01 + <_> + + 0 -1 947 4.3842289596796036e-03 + + 8.6139492690563202e-02 -2.7431771159172058e-01 + <_> + + 0 -1 948 -7.3361168615520000e-03 + + 2.4875210225582123e-01 -9.5919162034988403e-02 + <_> + + 0 -1 949 6.4666912658140063e-04 + + 6.7431576550006866e-02 -3.3754080533981323e-01 + <_> + + 0 -1 950 2.2983769304119051e-04 + + -8.3903051912784576e-02 2.4584099650382996e-01 + <_> + + 0 -1 951 6.7039071582257748e-03 + + 2.9079329222440720e-02 -6.9055938720703125e-01 + <_> + + 0 -1 952 5.0734888645820320e-05 + + -1.5696719288825989e-01 1.1965429782867432e-01 + <_> + + 0 -1 953 -2.0335559546947479e-01 + + -6.9506347179412842e-01 2.7507519349455833e-02 + <_> + + 0 -1 954 9.4939414411783218e-03 + + -8.7449371814727783e-02 2.3968330025672913e-01 + <_> + + 0 -1 955 -2.4055240210145712e-03 + + 2.1150960028171539e-01 -1.3148930668830872e-01 + <_> + + 0 -1 956 -1.1342419747961685e-04 + + 1.5233789384365082e-01 -1.2725900113582611e-01 + <_> + + 0 -1 957 1.4992210082709789e-02 + + -3.4127969294786453e-02 5.0624072551727295e-01 + <_> + + 0 -1 958 7.4068200774490833e-04 + + 4.8764750361442566e-02 -4.0225321054458618e-01 + <_> + + 0 -1 959 -4.2459447868168354e-03 + + 2.1554760634899139e-01 -8.7126992642879486e-02 + <_> + + 0 -1 960 6.8655109498649836e-04 + + -7.5418718159198761e-02 2.6405909657478333e-01 + <_> + + 0 -1 961 -1.6751460731029510e-02 + + -6.7729032039642334e-01 3.2918728888034821e-02 + <_> + + 0 -1 962 -2.6301678735762835e-04 + + 2.2725869715213776e-01 -9.0534873306751251e-02 + <_> + + 0 -1 963 4.3398610432632267e-04 + + 5.5894378572702408e-02 -3.5592669248580933e-01 + <_> + + 0 -1 964 -2.0150149241089821e-02 + + 1.9162760674953461e-01 -9.4929970800876617e-02 + <_> + + 0 -1 965 -1.4452129602432251e-02 + + -6.8510341644287109e-01 2.5422170758247375e-02 + <_> + + 0 -1 966 -2.1149739623069763e-02 + + 3.7533190846443176e-01 -5.1496580243110657e-02 + <_> + + 0 -1 967 2.1137770265340805e-02 + + 2.9083080589771271e-02 -8.9430367946624756e-01 + <_> + + 0 -1 968 1.1524349683895707e-03 + + -6.9694936275482178e-02 2.7299800515174866e-01 + <_> + + 0 -1 969 -1.9070580310653895e-04 + + 1.8228119611740112e-01 -9.8367072641849518e-02 + <_> + + 0 -1 970 -3.6349631845951080e-02 + + -8.3693099021911621e-01 2.5055760517716408e-02 + <_> + + 0 -1 971 -9.0632075443863869e-03 + + 4.1463500261306763e-01 -5.4413449019193649e-02 + <_> + + 0 -1 972 -2.0535490475594997e-03 + + -1.9750310480594635e-01 1.0506899654865265e-01 + <_> + 93 + -9.7747492790222168e-01 + + <_> + + 0 -1 973 -2.2717019543051720e-02 + + 2.4288550019264221e-01 -1.4745520055294037e-01 + <_> + + 0 -1 974 2.5505950674414635e-02 + + -2.8551739454269409e-01 1.0837209969758987e-01 + <_> + + 0 -1 975 -2.6640091091394424e-03 + + 2.9275730252265930e-01 -1.0372710227966309e-01 + <_> + + 0 -1 976 -3.8115289062261581e-03 + + 2.1426899731159210e-01 -1.3811139762401581e-01 + <_> + + 0 -1 977 -1.6732690855860710e-02 + + 2.6550260186195374e-01 -4.3911330401897430e-02 + <_> + + 0 -1 978 4.9277010839432478e-04 + + 2.1104559302330017e-02 -4.2971360683441162e-01 + <_> + + 0 -1 979 -3.6691110581159592e-02 + + 5.3992420434951782e-01 -4.3648801743984222e-02 + <_> + + 0 -1 980 1.2615970335900784e-03 + + -1.2933869659900665e-01 1.6638770699501038e-01 + <_> + + 0 -1 981 -8.4106856957077980e-03 + + -9.4698411226272583e-01 2.1465849131345749e-02 + <_> + + 0 -1 982 6.4902722835540771e-02 + + -7.1727760136127472e-02 2.6613479852676392e-01 + <_> + + 0 -1 983 3.0305000022053719e-02 + + -8.2782492041587830e-02 2.7694320678710938e-01 + <_> + + 0 -1 984 2.5875340215861797e-03 + + -1.2966169416904449e-01 1.7756630480289459e-01 + <_> + + 0 -1 985 -7.0240451022982597e-03 + + -6.4243179559707642e-01 3.9943210780620575e-02 + <_> + + 0 -1 986 -1.0099769569933414e-03 + + 1.4176610112190247e-01 -1.1659970134496689e-01 + <_> + + 0 -1 987 -4.1179071558872238e-05 + + 1.5687669813632965e-01 -1.1127340048551559e-01 + <_> + + 0 -1 988 -4.7293151146732271e-04 + + -3.3554559946060181e-01 4.5977730304002762e-02 + <_> + + 0 -1 989 -1.7178079579025507e-03 + + 1.6952909529209137e-01 -1.0578069835901260e-01 + <_> + + 0 -1 990 -1.3333169743418694e-02 + + -5.8257812261581421e-01 3.0978430062532425e-02 + <_> + + 0 -1 991 -1.8783430568873882e-03 + + 1.4266879856586456e-01 -1.1131259799003601e-01 + <_> + + 0 -1 992 -6.5765981562435627e-03 + + 2.7561360597610474e-01 -5.3100328892469406e-02 + <_> + + 0 -1 993 -7.7210381277836859e-05 + + 1.3240240514278412e-01 -1.1167799681425095e-01 + <_> + + 0 -1 994 2.1968539804220200e-02 + + -2.6968160644173622e-02 5.0067168474197388e-01 + <_> + + 0 -1 995 -2.7445750311017036e-02 + + -2.4086740612983704e-01 6.0478270053863525e-02 + <_> + + 0 -1 996 7.8305849456228316e-05 + + -1.3334889709949493e-01 1.0123469680547714e-01 + <_> + + 0 -1 997 7.0190683007240295e-02 + + -5.4863780736923218e-02 2.4809940159320831e-01 + <_> + + 0 -1 998 -7.1902133524417877e-02 + + -3.7846690416336060e-01 4.2210999876260757e-02 + <_> + + 0 -1 999 -1.0780979692935944e-01 + + -3.7486588954925537e-01 4.2833440005779266e-02 + <_> + + 0 -1 1000 1.4364200178533792e-03 + + 8.0476358532905579e-02 -1.7263789474964142e-01 + <_> + + 0 -1 1001 6.8289190530776978e-02 + + -3.5595789551734924e-02 4.0761318802833557e-01 + <_> + + 0 -1 1002 -6.8037179298698902e-03 + + 1.9233790040016174e-01 -8.2368023693561554e-02 + <_> + + 0 -1 1003 -5.6193489581346512e-04 + + 1.3057120144367218e-01 -1.4355149865150452e-01 + <_> + + 0 -1 1004 -5.8276649564504623e-02 + + -3.0125439167022705e-01 5.2819650620222092e-02 + <_> + + 0 -1 1005 -6.1205718666315079e-03 + + 2.2043900191783905e-01 -7.5691752135753632e-02 + <_> + + 0 -1 1006 -1.3594309799373150e-02 + + -3.9049360156059265e-01 4.1857108473777771e-02 + <_> + + 0 -1 1007 1.3626200379803777e-03 + + -9.5363423228263855e-02 1.4970320463180542e-01 + <_> + + 0 -1 1008 -1.5074219845701009e-04 + + -2.3945580422878265e-01 6.4798332750797272e-02 + <_> + + 0 -1 1009 -7.7414259314537048e-02 + + 5.5941981077194214e-01 -2.4516880512237549e-02 + <_> + + 0 -1 1010 9.2117872554808855e-04 + + 5.4928861558437347e-02 -2.7934810519218445e-01 + <_> + + 0 -1 1011 1.0250780032947659e-03 + + -6.2167309224605560e-02 2.4976369738578796e-01 + <_> + + 0 -1 1012 -8.1174750812351704e-04 + + 2.3437939584255219e-01 -6.5725810825824738e-02 + <_> + + 0 -1 1013 8.3431020379066467e-02 + + 5.0954800099134445e-02 -3.1020981073379517e-01 + <_> + + 0 -1 1014 -9.2014456167817116e-03 + + -3.9242538809776306e-01 3.2926950603723526e-02 + <_> + + 0 -1 1015 -2.9086650465615094e-04 + + -3.1039750576019287e-01 4.9711819738149643e-02 + <_> + + 0 -1 1016 7.7576898038387299e-03 + + -4.4040750712156296e-02 3.6431351304054260e-01 + <_> + + 0 -1 1017 -1.2466090172529221e-01 + + -8.1957077980041504e-01 1.9150640815496445e-02 + <_> + + 0 -1 1018 1.3242550194263458e-02 + + 3.8988839834928513e-02 -3.3230680227279663e-01 + <_> + + 0 -1 1019 -6.6770128905773163e-03 + + -3.5790139436721802e-01 4.0460210293531418e-02 + <_> + + 0 -1 1020 -2.7479929849505424e-03 + + 2.5253900885581970e-01 -5.6427821516990662e-02 + <_> + + 0 -1 1021 8.2659651525318623e-04 + + -7.1988657116889954e-02 2.2780479490756989e-01 + <_> + + 0 -1 1022 -5.0153400748968124e-02 + + -6.3036471605300903e-01 2.7462050318717957e-02 + <_> + + 0 -1 1023 7.4203149415552616e-03 + + -6.6610716283321381e-02 2.7787339687347412e-01 + <_> + + 0 -1 1024 -6.7951780511066318e-04 + + -3.6327061057090759e-01 4.2795430868864059e-02 + <_> + + 0 -1 1025 -1.9305750029161572e-03 + + 1.4196230471134186e-01 -1.0759980231523514e-01 + <_> + + 0 -1 1026 -3.8132671033963561e-04 + + 2.1591760218143463e-01 -7.0202663540840149e-02 + <_> + + 0 -1 1027 -7.0990346372127533e-02 + + 4.5266601443290710e-01 -4.0750481188297272e-02 + <_> + + 0 -1 1028 -5.3368080407381058e-02 + + -6.7674058675765991e-01 1.9288340583443642e-02 + <_> + + 0 -1 1029 -2.0064849406480789e-02 + + -4.3365430831909180e-01 3.1853288412094116e-02 + <_> + + 0 -1 1030 1.1976360110566020e-03 + + -2.6559870690107346e-02 5.0797182321548462e-01 + <_> + + 0 -1 1031 -2.2697300300933421e-04 + + 1.8012599647045135e-01 -8.3606548607349396e-02 + <_> + + 0 -1 1032 1.5262699685990810e-02 + + -2.0238929986953735e-01 6.7422017455101013e-02 + <_> + + 0 -1 1033 -2.0811769366264343e-01 + + 6.6943860054016113e-01 -2.2452110424637794e-02 + <_> + + 0 -1 1034 1.5514369588345289e-03 + + -7.5121842324733734e-02 1.7326919734477997e-01 + <_> + + 0 -1 1035 -5.2924010902643204e-02 + + 2.4992519617080688e-01 -6.2879167497158051e-02 + <_> + + 0 -1 1036 -2.1648850291967392e-02 + + -2.9194280505180359e-01 5.2614491432905197e-02 + <_> + + 0 -1 1037 -2.2905069636180997e-04 + + -2.2117300331592560e-01 6.3168339431285858e-02 + <_> + + 0 -1 1038 5.0170070608146489e-05 + + -1.1510709673166275e-01 1.1611440032720566e-01 + <_> + + 0 -1 1039 -1.6416069411206990e-04 + + 1.5871520340442657e-01 -8.2600601017475128e-02 + <_> + + 0 -1 1040 -1.2003289535641670e-02 + + 1.2218090146780014e-01 -1.1229699850082397e-01 + <_> + + 0 -1 1041 -1.7784100025892258e-02 + + -3.5072788596153259e-01 3.1341921538114548e-02 + <_> + + 0 -1 1042 -6.3457582145929337e-03 + + 1.3078069686889648e-01 -1.0574410110712051e-01 + <_> + + 0 -1 1043 -7.9523242311552167e-04 + + 1.7204670608043671e-01 -8.6001992225646973e-02 + <_> + + 0 -1 1044 -3.1029590172693133e-04 + + -2.8433170914649963e-01 5.1817119121551514e-02 + <_> + + 0 -1 1045 -1.7053710296750069e-02 + + 3.9242428541183472e-01 -4.0143270045518875e-02 + <_> + + 0 -1 1046 4.6504959464073181e-03 + + -3.1837560236454010e-02 4.1237699985504150e-01 + <_> + + 0 -1 1047 -1.0358760133385658e-02 + + -5.6993198394775391e-01 2.9248379170894623e-02 + <_> + + 0 -1 1048 -2.2196240723133087e-02 + + -4.5605289936065674e-01 2.6285989210009575e-02 + <_> + + 0 -1 1049 -7.0536029525101185e-03 + + 1.5998320281505585e-01 -9.1594859957695007e-02 + <_> + + 0 -1 1050 -5.7094299700111151e-04 + + -1.4076329767704010e-01 1.0287419706583023e-01 + <_> + + 0 -1 1051 -2.2152599412947893e-03 + + 1.6593599319458008e-01 -8.5273988544940948e-02 + <_> + + 0 -1 1052 -2.8084890916943550e-02 + + 2.7022340893745422e-01 -5.5873811244964600e-02 + <_> + + 0 -1 1053 2.1515151020139456e-03 + + 4.2472891509532928e-02 -3.2005849480628967e-01 + <_> + + 0 -1 1054 -2.9733829433098435e-04 + + 1.6177169978618622e-01 -8.5115589201450348e-02 + <_> + + 0 -1 1055 -1.6694780439138412e-02 + + -4.2858770489692688e-01 3.0541609972715378e-02 + <_> + + 0 -1 1056 1.1982990056276321e-01 + + -1.6277290880680084e-02 7.9846781492233276e-01 + <_> + + 0 -1 1057 -3.5499420482665300e-04 + + 1.5935939550399780e-01 -8.3272881805896759e-02 + <_> + + 0 -1 1058 -1.8226269632577896e-02 + + 1.9527280330657959e-01 -7.3939889669418335e-02 + <_> + + 0 -1 1059 -4.0238600922748446e-04 + + 7.9101808369159698e-02 -2.0806129276752472e-01 + <_> + + 0 -1 1060 4.0892060496844351e-04 + + 1.0036630183458328e-01 -1.5128210186958313e-01 + <_> + + 0 -1 1061 9.5368112670257688e-04 + + -7.3011666536331177e-02 2.1752020716667175e-01 + <_> + + 0 -1 1062 4.3081799149513245e-01 + + -2.7450699359178543e-02 5.7061582803726196e-01 + <_> + + 0 -1 1063 5.3564831614494324e-04 + + 1.1587540060281754e-01 -1.2790560722351074e-01 + <_> + + 0 -1 1064 2.4430730263702571e-05 + + -1.6816629469394684e-01 8.0449983477592468e-02 + <_> + + 0 -1 1065 -5.5345650762319565e-02 + + 4.5338949561119080e-01 -3.1222779303789139e-02 + + <_> + + <_> + 0 8 20 12 -1. + <_> + 0 14 20 6 2. + <_> + + <_> + 9 1 4 15 -1. + <_> + 9 6 4 5 3. + <_> + + <_> + 6 10 9 2 -1. + <_> + 9 10 3 2 3. + <_> + + <_> + 7 0 10 9 -1. + <_> + 7 3 10 3 3. + <_> + + <_> + 12 2 2 18 -1. + <_> + 12 8 2 6 3. + <_> + + <_> + 8 6 8 6 -1. + <_> + 8 9 8 3 2. + <_> + + <_> + 2 0 17 18 -1. + <_> + 2 6 17 6 3. + <_> + + <_> + 10 10 1 8 -1. + <_> + 10 14 1 4 2. + <_> + + <_> + 7 10 9 2 -1. + <_> + 10 10 3 2 3. + <_> + + <_> + 5 1 6 6 -1. + <_> + 5 3 6 2 3. + <_> + + <_> + 3 1 15 9 -1. + <_> + 3 4 15 3 3. + <_> + + <_> + 6 3 9 6 -1. + <_> + 6 5 9 2 3. + <_> + + <_> + 8 17 6 3 -1. + <_> + 10 17 2 3 3. + <_> + + <_> + 9 10 9 1 -1. + <_> + 12 10 3 1 3. + <_> + + <_> + 1 7 6 11 -1. + <_> + 3 7 2 11 3. + <_> + + <_> + 9 18 3 1 -1. + <_> + 10 18 1 1 3. + <_> + + <_> + 16 16 1 2 -1. + <_> + 16 17 1 1 2. + <_> + + <_> + 9 17 6 3 -1. + <_> + 11 17 2 3 3. + <_> + + <_> + 8 0 5 18 -1. + <_> + 8 6 5 6 3. + <_> + + <_> + 6 7 9 7 -1. + <_> + 9 7 3 7 3. + <_> + + <_> + 14 6 6 10 -1. + <_> + 16 6 2 10 3. + <_> + + <_> + 9 8 9 5 -1. + <_> + 12 8 3 5 3. + <_> + + <_> + 3 7 9 6 -1. + <_> + 6 7 3 6 3. + <_> + + <_> + 1 7 6 6 -1. + <_> + 3 7 2 6 3. + <_> + + <_> + 16 0 4 18 -1. + <_> + 16 6 4 6 3. + <_> + + <_> + 0 17 3 3 -1. + <_> + 0 18 3 1 3. + <_> + + <_> + 16 0 2 1 -1. + <_> + 17 0 1 1 2. + <_> + + <_> + 0 8 20 12 -1. + <_> + 0 14 20 6 2. + <_> + + <_> + 6 6 9 8 -1. + <_> + 9 6 3 8 3. + <_> + + <_> + 5 3 12 9 -1. + <_> + 5 6 12 3 3. + <_> + + <_> + 4 16 1 2 -1. + <_> + 4 17 1 1 2. + <_> + + <_> + 18 10 2 1 -1. + <_> + 19 10 1 1 2. + <_> + + <_> + 9 8 6 5 -1. + <_> + 11 8 2 5 3. + <_> + + <_> + 0 0 2 1 -1. + <_> + 1 0 1 1 2. + <_> + + <_> + 6 8 6 6 -1. + <_> + 8 8 2 6 3. + <_> + + <_> + 11 7 6 7 -1. + <_> + 13 7 2 7 3. + <_> + + <_> + 19 14 1 2 -1. + <_> + 19 15 1 1 2. + <_> + + <_> + 6 17 1 2 -1. + <_> + 6 18 1 1 2. + <_> + + <_> + 14 7 2 7 -1. + <_> + 15 7 1 7 2. + <_> + + <_> + 6 8 2 4 -1. + <_> + 7 8 1 4 2. + <_> + + <_> + 5 8 12 6 -1. + <_> + 5 10 12 2 3. + <_> + + <_> + 2 17 1 3 -1. + <_> + 2 18 1 1 3. + <_> + + <_> + 6 7 3 6 -1. + <_> + 7 7 1 6 3. + <_> + + <_> + 6 7 9 12 -1. + <_> + 9 7 3 12 3. + <_> + + <_> + 6 2 11 12 -1. + <_> + 6 6 11 4 3. + <_> + + <_> + 1 12 5 8 -1. + <_> + 1 16 5 4 2. + <_> + + <_> + 14 7 6 7 -1. + <_> + 16 7 2 7 3. + <_> + + <_> + 10 8 6 6 -1. + <_> + 12 8 2 6 3. + <_> + + <_> + 16 18 4 2 -1. + <_> + 16 19 4 1 2. + <_> + + <_> + 18 17 2 3 -1. + <_> + 18 18 2 1 3. + <_> + + <_> + 9 7 3 7 -1. + <_> + 10 7 1 7 3. + <_> + + <_> + 5 6 6 8 -1. + <_> + 7 6 2 8 3. + <_> + + <_> + 2 6 6 11 -1. + <_> + 4 6 2 11 3. + <_> + + <_> + 8 10 12 8 -1. + <_> + 8 14 12 4 2. + <_> + + <_> + 7 17 6 3 -1. + <_> + 9 17 2 3 3. + <_> + + <_> + 10 9 3 3 -1. + <_> + 11 9 1 3 3. + <_> + + <_> + 8 8 3 6 -1. + <_> + 9 8 1 6 3. + <_> + + <_> + 7 0 6 5 -1. + <_> + 9 0 2 5 3. + <_> + + <_> + 6 17 1 3 -1. + <_> + 6 18 1 1 3. + <_> + + <_> + 0 18 4 2 -1. + <_> + 0 19 4 1 2. + <_> + + <_> + 4 1 11 9 -1. + <_> + 4 4 11 3 3. + <_> + + <_> + 3 1 14 9 -1. + <_> + 3 4 14 3 3. + <_> + + <_> + 0 9 6 4 -1. + <_> + 2 9 2 4 3. + <_> + + <_> + 18 13 1 2 -1. + <_> + 18 14 1 1 2. + <_> + + <_> + 13 5 3 11 -1. + <_> + 14 5 1 11 3. + <_> + + <_> + 0 18 8 2 -1. + <_> + 0 18 4 1 2. + <_> + 4 19 4 1 2. + <_> + + <_> + 5 8 12 5 -1. + <_> + 9 8 4 5 3. + <_> + + <_> + 4 7 11 10 -1. + <_> + 4 12 11 5 2. + <_> + + <_> + 14 9 6 4 -1. + <_> + 16 9 2 4 3. + <_> + + <_> + 0 7 6 8 -1. + <_> + 3 7 3 8 2. + <_> + + <_> + 0 16 3 3 -1. + <_> + 0 17 3 1 3. + <_> + + <_> + 7 11 12 1 -1. + <_> + 11 11 4 1 3. + <_> + + <_> + 4 8 9 4 -1. + <_> + 7 8 3 4 3. + <_> + + <_> + 5 16 6 4 -1. + <_> + 7 16 2 4 3. + <_> + + <_> + 18 17 1 3 -1. + <_> + 18 18 1 1 3. + <_> + + <_> + 18 17 1 3 -1. + <_> + 18 18 1 1 3. + <_> + + <_> + 4 9 4 10 -1. + <_> + 4 9 2 5 2. + <_> + 6 14 2 5 2. + <_> + + <_> + 4 8 6 4 -1. + <_> + 6 8 2 4 3. + <_> + + <_> + 10 2 2 18 -1. + <_> + 10 8 2 6 3. + <_> + + <_> + 0 5 8 6 -1. + <_> + 0 5 4 3 2. + <_> + 4 8 4 3 2. + <_> + + <_> + 6 0 6 5 -1. + <_> + 8 0 2 5 3. + <_> + + <_> + 18 0 2 14 -1. + <_> + 18 7 2 7 2. + <_> + + <_> + 8 18 4 2 -1. + <_> + 10 18 2 2 2. + <_> + + <_> + 1 17 6 3 -1. + <_> + 1 18 6 1 3. + <_> + + <_> + 11 8 3 5 -1. + <_> + 12 8 1 5 3. + <_> + + <_> + 11 8 3 4 -1. + <_> + 12 8 1 4 3. + <_> + + <_> + 11 0 6 5 -1. + <_> + 13 0 2 5 3. + <_> + + <_> + 1 7 6 7 -1. + <_> + 3 7 2 7 3. + <_> + + <_> + 0 13 1 3 -1. + <_> + 0 14 1 1 3. + <_> + + <_> + 3 2 9 6 -1. + <_> + 3 4 9 2 3. + <_> + + <_> + 8 6 9 2 -1. + <_> + 8 7 9 1 2. + <_> + + <_> + 0 14 3 6 -1. + <_> + 0 16 3 2 3. + <_> + + <_> + 1 11 6 4 -1. + <_> + 3 11 2 4 3. + <_> + + <_> + 6 9 9 3 -1. + <_> + 9 9 3 3 3. + <_> + + <_> + 6 0 9 6 -1. + <_> + 6 2 9 2 3. + <_> + + <_> + 8 5 6 6 -1. + <_> + 8 7 6 2 3. + <_> + + <_> + 1 12 2 1 -1. + <_> + 2 12 1 1 2. + <_> + + <_> + 10 10 6 2 -1. + <_> + 12 10 2 2 3. + <_> + + <_> + 13 8 6 6 -1. + <_> + 15 8 2 6 3. + <_> + + <_> + 6 16 6 4 -1. + <_> + 8 16 2 4 3. + <_> + + <_> + 8 0 9 9 -1. + <_> + 8 3 9 3 3. + <_> + + <_> + 18 17 1 3 -1. + <_> + 18 18 1 1 3. + <_> + + <_> + 18 17 1 3 -1. + <_> + 18 18 1 1 3. + <_> + + <_> + 7 10 3 3 -1. + <_> + 8 10 1 3 3. + <_> + + <_> + 9 14 2 2 -1. + <_> + 9 14 1 1 2. + <_> + 10 15 1 1 2. + <_> + + <_> + 9 14 2 2 -1. + <_> + 9 14 1 1 2. + <_> + 10 15 1 1 2. + <_> + + <_> + 0 8 19 12 -1. + <_> + 0 14 19 6 2. + <_> + + <_> + 7 6 9 14 -1. + <_> + 10 6 3 14 3. + <_> + + <_> + 13 8 3 4 -1. + <_> + 14 8 1 4 3. + <_> + + <_> + 4 17 1 3 -1. + <_> + 4 18 1 1 3. + <_> + + <_> + 4 9 6 3 -1. + <_> + 6 9 2 3 3. + <_> + + <_> + 2 18 5 2 -1. + <_> + 2 19 5 1 2. + <_> + + <_> + 7 8 2 2 -1. + <_> + 7 8 1 1 2. + <_> + 8 9 1 1 2. + <_> + + <_> + 7 8 2 2 -1. + <_> + 7 8 1 1 2. + <_> + 8 9 1 1 2. + <_> + + <_> + 5 10 13 2 -1. + <_> + 5 11 13 1 2. + <_> + + <_> + 10 8 1 9 -1. + <_> + 10 11 1 3 3. + <_> + + <_> + 15 8 2 12 -1. + <_> + 15 8 1 6 2. + <_> + 16 14 1 6 2. + <_> + + <_> + 4 0 3 5 -1. + <_> + 5 0 1 5 3. + <_> + + <_> + 12 6 3 7 -1. + <_> + 13 6 1 7 3. + <_> + + <_> + 7 16 6 4 -1. + <_> + 9 16 2 4 3. + <_> + + <_> + 9 16 2 1 -1. + <_> + 10 16 1 1 2. + <_> + + <_> + 6 10 9 2 -1. + <_> + 9 10 3 2 3. + <_> + + <_> + 0 6 15 14 -1. + <_> + 0 13 15 7 2. + <_> + + <_> + 9 1 5 6 -1. + <_> + 9 3 5 2 3. + <_> + + <_> + 3 9 3 4 -1. + <_> + 4 9 1 4 3. + <_> + + <_> + 5 7 3 6 -1. + <_> + 6 7 1 6 3. + <_> + + <_> + 17 16 1 2 -1. + <_> + 17 17 1 1 2. + <_> + + <_> + 9 8 6 12 -1. + <_> + 11 8 2 12 3. + <_> + + <_> + 6 10 6 1 -1. + <_> + 8 10 2 1 3. + <_> + + <_> + 7 17 9 3 -1. + <_> + 10 17 3 3 3. + <_> + + <_> + 14 18 6 2 -1. + <_> + 14 19 6 1 2. + <_> + + <_> + 9 5 3 14 -1. + <_> + 10 5 1 14 3. + <_> + + <_> + 8 16 9 4 -1. + <_> + 11 16 3 4 3. + <_> + + <_> + 0 0 4 14 -1. + <_> + 0 7 4 7 2. + <_> + + <_> + 8 1 6 3 -1. + <_> + 10 1 2 3 3. + <_> + + <_> + 6 8 3 4 -1. + <_> + 7 8 1 4 3. + <_> + + <_> + 4 8 3 4 -1. + <_> + 5 8 1 4 3. + <_> + + <_> + 5 1 6 5 -1. + <_> + 7 1 2 5 3. + <_> + + <_> + 1 18 1 2 -1. + <_> + 1 19 1 1 2. + <_> + + <_> + 7 0 6 6 -1. + <_> + 7 2 6 2 3. + <_> + + <_> + 0 18 4 2 -1. + <_> + 0 19 4 1 2. + <_> + + <_> + 12 3 8 12 -1. + <_> + 12 7 8 4 3. + <_> + + <_> + 12 9 3 4 -1. + <_> + 13 9 1 4 3. + <_> + + <_> + 12 8 3 5 -1. + <_> + 13 8 1 5 3. + <_> + + <_> + 16 0 2 1 -1. + <_> + 17 0 1 1 2. + <_> + + <_> + 5 17 1 3 -1. + <_> + 5 18 1 1 3. + <_> + + <_> + 10 2 3 6 -1. + <_> + 10 4 3 2 3. + <_> + + <_> + 4 17 2 3 -1. + <_> + 4 18 2 1 3. + <_> + + <_> + 12 7 1 9 -1. + <_> + 12 10 1 3 3. + <_> + + <_> + 7 6 3 9 -1. + <_> + 8 6 1 9 3. + <_> + + <_> + 17 13 3 6 -1. + <_> + 17 15 3 2 3. + <_> + + <_> + 7 7 3 8 -1. + <_> + 8 7 1 8 3. + <_> + + <_> + 5 0 3 5 -1. + <_> + 6 0 1 5 3. + <_> + + <_> + 4 6 9 8 -1. + <_> + 7 6 3 8 3. + <_> + + <_> + 2 9 3 3 -1. + <_> + 3 9 1 3 3. + <_> + + <_> + 16 18 4 2 -1. + <_> + 16 19 4 1 2. + <_> + + <_> + 17 10 3 10 -1. + <_> + 17 15 3 5 2. + <_> + + <_> + 8 9 6 4 -1. + <_> + 10 9 2 4 3. + <_> + + <_> + 5 2 10 12 -1. + <_> + 5 6 10 4 3. + <_> + + <_> + 6 9 6 3 -1. + <_> + 8 9 2 3 3. + <_> + + <_> + 11 7 3 7 -1. + <_> + 12 7 1 7 3. + <_> + + <_> + 12 8 6 4 -1. + <_> + 14 8 2 4 3. + <_> + + <_> + 14 8 6 5 -1. + <_> + 16 8 2 5 3. + <_> + + <_> + 12 12 2 4 -1. + <_> + 12 14 2 2 2. + <_> + + <_> + 3 15 1 2 -1. + <_> + 3 16 1 1 2. + <_> + + <_> + 12 7 3 4 -1. + <_> + 13 7 1 4 3. + <_> + + <_> + 10 0 6 6 -1. + <_> + 12 0 2 6 3. + <_> + + <_> + 10 6 3 8 -1. + <_> + 11 6 1 8 3. + <_> + + <_> + 16 17 1 2 -1. + <_> + 16 18 1 1 2. + <_> + + <_> + 16 16 1 3 -1. + <_> + 16 17 1 1 3. + <_> + + <_> + 11 11 1 2 -1. + <_> + 11 12 1 1 2. + <_> + + <_> + 3 7 6 9 -1. + <_> + 5 7 2 9 3. + <_> + + <_> + 4 18 9 1 -1. + <_> + 7 18 3 1 3. + <_> + + <_> + 0 11 4 9 -1. + <_> + 0 14 4 3 3. + <_> + + <_> + 9 17 6 3 -1. + <_> + 11 17 2 3 3. + <_> + + <_> + 7 8 6 12 -1. + <_> + 9 8 2 12 3. + <_> + + <_> + 6 8 3 4 -1. + <_> + 7 8 1 4 3. + <_> + + <_> + 3 17 1 3 -1. + <_> + 3 18 1 1 3. + <_> + + <_> + 11 9 6 4 -1. + <_> + 13 9 2 4 3. + <_> + + <_> + 6 1 3 2 -1. + <_> + 7 1 1 2 3. + <_> + + <_> + 1 0 2 1 -1. + <_> + 2 0 1 1 2. + <_> + + <_> + 1 0 2 14 -1. + <_> + 1 0 1 7 2. + <_> + 2 7 1 7 2. + <_> + + <_> + 5 5 11 8 -1. + <_> + 5 9 11 4 2. + <_> + + <_> + 9 3 5 6 -1. + <_> + 9 5 5 2 3. + <_> + + <_> + 7 9 5 10 -1. + <_> + 7 14 5 5 2. + <_> + + <_> + 15 10 2 2 -1. + <_> + 16 10 1 2 2. + <_> + + <_> + 0 18 8 2 -1. + <_> + 0 19 8 1 2. + <_> + + <_> + 7 17 1 3 -1. + <_> + 7 18 1 1 3. + <_> + + <_> + 7 2 11 6 -1. + <_> + 7 4 11 2 3. + <_> + + <_> + 8 3 9 3 -1. + <_> + 8 4 9 1 3. + <_> + + <_> + 0 9 2 2 -1. + <_> + 0 10 2 1 2. + <_> + + <_> + 0 5 3 6 -1. + <_> + 0 7 3 2 3. + <_> + + <_> + 6 7 2 2 -1. + <_> + 6 7 1 1 2. + <_> + 7 8 1 1 2. + <_> + + <_> + 7 6 3 6 -1. + <_> + 8 6 1 6 3. + <_> + + <_> + 12 1 6 4 -1. + <_> + 14 1 2 4 3. + <_> + + <_> + 9 11 6 8 -1. + <_> + 11 11 2 8 3. + <_> + + <_> + 17 15 3 3 -1. + <_> + 17 16 3 1 3. + <_> + + <_> + 6 6 3 9 -1. + <_> + 6 9 3 3 3. + <_> + + <_> + 0 5 8 6 -1. + <_> + 0 5 4 3 2. + <_> + 4 8 4 3 2. + <_> + + <_> + 0 6 1 3 -1. + <_> + 0 7 1 1 3. + <_> + + <_> + 17 0 2 6 -1. + <_> + 18 0 1 6 2. + <_> + + <_> + 10 17 6 3 -1. + <_> + 12 17 2 3 3. + <_> + + <_> + 13 15 2 2 -1. + <_> + 13 15 1 1 2. + <_> + 14 16 1 1 2. + <_> + + <_> + 4 0 12 3 -1. + <_> + 4 1 12 1 3. + <_> + + <_> + 5 3 10 9 -1. + <_> + 5 6 10 3 3. + <_> + + <_> + 7 7 9 7 -1. + <_> + 10 7 3 7 3. + <_> + + <_> + 5 8 9 6 -1. + <_> + 8 8 3 6 3. + <_> + + <_> + 0 16 6 2 -1. + <_> + 0 17 6 1 2. + <_> + + <_> + 12 6 7 14 -1. + <_> + 12 13 7 7 2. + <_> + + <_> + 13 7 6 8 -1. + <_> + 15 7 2 8 3. + <_> + + <_> + 2 10 6 3 -1. + <_> + 4 10 2 3 3. + <_> + + <_> + 18 17 1 3 -1. + <_> + 18 18 1 1 3. + <_> + + <_> + 7 1 6 2 -1. + <_> + 7 2 6 1 2. + <_> + + <_> + 6 0 6 4 -1. + <_> + 6 2 6 2 2. + <_> + + <_> + 8 18 6 2 -1. + <_> + 10 18 2 2 3. + <_> + + <_> + 7 6 5 2 -1. + <_> + 7 7 5 1 2. + <_> + + <_> + 6 7 3 6 -1. + <_> + 7 7 1 6 3. + <_> + + <_> + 18 18 2 2 -1. + <_> + 18 18 1 1 2. + <_> + 19 19 1 1 2. + <_> + + <_> + 16 8 3 7 -1. + <_> + 17 8 1 7 3. + <_> + + <_> + 0 16 2 3 -1. + <_> + 0 17 2 1 3. + <_> + + <_> + 5 19 6 1 -1. + <_> + 7 19 2 1 3. + <_> + + <_> + 9 5 6 6 -1. + <_> + 9 7 6 2 3. + <_> + + <_> + 0 10 2 4 -1. + <_> + 0 12 2 2 2. + <_> + + <_> + 0 9 4 3 -1. + <_> + 2 9 2 3 2. + <_> + + <_> + 1 10 6 9 -1. + <_> + 3 10 2 9 3. + <_> + + <_> + 9 0 6 2 -1. + <_> + 11 0 2 2 3. + <_> + + <_> + 14 1 2 1 -1. + <_> + 15 1 1 1 2. + <_> + + <_> + 0 8 1 4 -1. + <_> + 0 10 1 2 2. + <_> + + <_> + 15 6 2 2 -1. + <_> + 15 6 1 1 2. + <_> + 16 7 1 1 2. + <_> + + <_> + 7 5 3 6 -1. + <_> + 8 5 1 6 3. + <_> + + <_> + 19 17 1 3 -1. + <_> + 19 18 1 1 3. + <_> + + <_> + 7 10 3 1 -1. + <_> + 8 10 1 1 3. + <_> + + <_> + 12 1 6 6 -1. + <_> + 14 1 2 6 3. + <_> + + <_> + 15 5 2 1 -1. + <_> + 16 5 1 1 2. + <_> + + <_> + 8 2 7 4 -1. + <_> + 8 4 7 2 2. + <_> + + <_> + 4 0 14 15 -1. + <_> + 4 5 14 5 3. + <_> + + <_> + 7 8 6 6 -1. + <_> + 9 8 2 6 3. + <_> + + <_> + 11 17 1 3 -1. + <_> + 11 18 1 1 3. + <_> + + <_> + 12 16 2 4 -1. + <_> + 12 16 1 2 2. + <_> + 13 18 1 2 2. + <_> + + <_> + 10 13 2 1 -1. + <_> + 11 13 1 1 2. + <_> + + <_> + 11 8 3 3 -1. + <_> + 12 8 1 3 3. + <_> + + <_> + 2 0 6 8 -1. + <_> + 4 0 2 8 3. + <_> + + <_> + 3 5 6 6 -1. + <_> + 3 5 3 3 2. + <_> + 6 8 3 3 2. + <_> + + <_> + 10 8 3 3 -1. + <_> + 11 8 1 3 3. + <_> + + <_> + 5 17 4 2 -1. + <_> + 5 18 4 1 2. + <_> + + <_> + 8 16 5 2 -1. + <_> + 8 17 5 1 2. + <_> + + <_> + 0 4 3 3 -1. + <_> + 0 5 3 1 3. + <_> + + <_> + 6 3 6 2 -1. + <_> + 8 3 2 2 3. + <_> + + <_> + 4 4 9 3 -1. + <_> + 7 4 3 3 3. + <_> + + <_> + 0 13 1 4 -1. + <_> + 0 15 1 2 2. + <_> + + <_> + 0 17 8 3 -1. + <_> + 0 18 8 1 3. + <_> + + <_> + 6 1 11 6 -1. + <_> + 6 3 11 2 3. + <_> + + <_> + 4 10 6 2 -1. + <_> + 6 10 2 2 3. + <_> + + <_> + 10 8 1 12 -1. + <_> + 10 14 1 6 2. + <_> + + <_> + 5 8 3 4 -1. + <_> + 6 8 1 4 3. + <_> + + <_> + 0 17 1 3 -1. + <_> + 0 18 1 1 3. + <_> + + <_> + 0 17 1 3 -1. + <_> + 0 18 1 1 3. + <_> + + <_> + 13 8 3 4 -1. + <_> + 14 8 1 4 3. + <_> + + <_> + 1 5 5 4 -1. + <_> + 1 7 5 2 2. + <_> + + <_> + 18 14 1 2 -1. + <_> + 18 15 1 1 2. + <_> + + <_> + 13 8 2 4 -1. + <_> + 14 8 1 4 2. + <_> + + <_> + 10 6 6 8 -1. + <_> + 12 6 2 8 3. + <_> + + <_> + 8 6 6 10 -1. + <_> + 10 6 2 10 3. + <_> + + <_> + 17 16 1 3 -1. + <_> + 17 17 1 1 3. + <_> + + <_> + 1 7 2 10 -1. + <_> + 2 7 1 10 2. + <_> + + <_> + 5 9 6 3 -1. + <_> + 7 9 2 3 3. + <_> + + <_> + 0 8 5 12 -1. + <_> + 0 14 5 6 2. + <_> + + <_> + 0 11 1 3 -1. + <_> + 0 12 1 1 3. + <_> + + <_> + 6 16 6 4 -1. + <_> + 8 16 2 4 3. + <_> + + <_> + 0 6 2 6 -1. + <_> + 0 8 2 2 3. + <_> + + <_> + 11 18 2 1 -1. + <_> + 12 18 1 1 2. + <_> + + <_> + 5 1 9 2 -1. + <_> + 5 2 9 1 2. + <_> + + <_> + 0 0 1 2 -1. + <_> + 0 1 1 1 2. + <_> + + <_> + 15 9 3 3 -1. + <_> + 16 9 1 3 3. + <_> + + <_> + 18 16 1 3 -1. + <_> + 18 17 1 1 3. + <_> + + <_> + 11 10 6 1 -1. + <_> + 13 10 2 1 3. + <_> + + <_> + 1 3 4 4 -1. + <_> + 3 3 2 4 2. + <_> + + <_> + 11 2 1 18 -1. + <_> + 11 8 1 6 3. + <_> + + <_> + 9 1 5 12 -1. + <_> + 9 5 5 4 3. + <_> + + <_> + 12 0 8 1 -1. + <_> + 16 0 4 1 2. + <_> + + <_> + 8 6 3 10 -1. + <_> + 9 6 1 10 3. + <_> + + <_> + 19 2 1 6 -1. + <_> + 19 4 1 2 3. + <_> + + <_> + 18 6 2 2 -1. + <_> + 18 7 2 1 2. + <_> + + <_> + 7 7 3 4 -1. + <_> + 8 7 1 4 3. + <_> + + <_> + 5 0 6 5 -1. + <_> + 7 0 2 5 3. + <_> + + <_> + 0 3 7 3 -1. + <_> + 0 4 7 1 3. + <_> + + <_> + 1 6 2 1 -1. + <_> + 2 6 1 1 2. + <_> + + <_> + 4 8 2 10 -1. + <_> + 4 8 1 5 2. + <_> + 5 13 1 5 2. + <_> + + <_> + 2 18 18 2 -1. + <_> + 2 18 9 1 2. + <_> + 11 19 9 1 2. + <_> + + <_> + 2 7 4 4 -1. + <_> + 2 7 2 2 2. + <_> + 4 9 2 2 2. + <_> + + <_> + 17 3 3 4 -1. + <_> + 18 3 1 4 3. + <_> + + <_> + 16 9 2 8 -1. + <_> + 16 9 1 4 2. + <_> + 17 13 1 4 2. + <_> + + <_> + 15 7 1 6 -1. + <_> + 15 9 1 2 3. + <_> + + <_> + 14 2 2 2 -1. + <_> + 14 3 2 1 2. + <_> + + <_> + 17 0 2 3 -1. + <_> + 17 1 2 1 3. + <_> + + <_> + 16 18 2 2 -1. + <_> + 16 18 1 1 2. + <_> + 17 19 1 1 2. + <_> + + <_> + 10 4 4 3 -1. + <_> + 10 5 4 1 3. + <_> + + <_> + 0 2 8 6 -1. + <_> + 4 2 4 6 2. + <_> + + <_> + 7 14 6 6 -1. + <_> + 7 16 6 2 3. + <_> + + <_> + 11 15 2 2 -1. + <_> + 11 16 2 1 2. + <_> + + <_> + 7 1 9 4 -1. + <_> + 10 1 3 4 3. + <_> + + <_> + 9 7 3 7 -1. + <_> + 10 7 1 7 3. + <_> + + <_> + 6 17 2 2 -1. + <_> + 6 17 1 1 2. + <_> + 7 18 1 1 2. + <_> + + <_> + 4 6 3 9 -1. + <_> + 5 6 1 9 3. + <_> + + <_> + 0 10 19 10 -1. + <_> + 0 15 19 5 2. + <_> + + <_> + 5 17 6 1 -1. + <_> + 7 17 2 1 3. + <_> + + <_> + 0 12 6 3 -1. + <_> + 3 12 3 3 2. + <_> + + <_> + 2 5 18 5 -1. + <_> + 8 5 6 5 3. + <_> + + <_> + 1 15 6 4 -1. + <_> + 1 17 6 2 2. + <_> + + <_> + 14 10 6 6 -1. + <_> + 16 10 2 6 3. + <_> + + <_> + 0 14 4 3 -1. + <_> + 0 15 4 1 3. + <_> + + <_> + 1 7 6 11 -1. + <_> + 3 7 2 11 3. + <_> + + <_> + 13 17 7 2 -1. + <_> + 13 18 7 1 2. + <_> + + <_> + 0 14 2 3 -1. + <_> + 0 15 2 1 3. + <_> + + <_> + 0 0 6 2 -1. + <_> + 3 0 3 2 2. + <_> + + <_> + 0 1 6 3 -1. + <_> + 3 1 3 3 2. + <_> + + <_> + 0 8 2 6 -1. + <_> + 0 10 2 2 3. + <_> + + <_> + 1 2 6 14 -1. + <_> + 1 2 3 7 2. + <_> + 4 9 3 7 2. + <_> + + <_> + 17 5 2 2 -1. + <_> + 17 5 1 1 2. + <_> + 18 6 1 1 2. + <_> + + <_> + 11 10 9 4 -1. + <_> + 14 10 3 4 3. + <_> + + <_> + 2 9 12 4 -1. + <_> + 6 9 4 4 3. + <_> + + <_> + 7 10 12 2 -1. + <_> + 11 10 4 2 3. + <_> + + <_> + 2 13 1 2 -1. + <_> + 2 14 1 1 2. + <_> + + <_> + 16 7 4 3 -1. + <_> + 16 8 4 1 3. + <_> + + <_> + 19 16 1 3 -1. + <_> + 19 17 1 1 3. + <_> + + <_> + 18 11 1 2 -1. + <_> + 18 12 1 1 2. + <_> + + <_> + 12 7 8 2 -1. + <_> + 12 7 4 1 2. + <_> + 16 8 4 1 2. + <_> + + <_> + 14 9 2 4 -1. + <_> + 15 9 1 4 2. + <_> + + <_> + 14 2 6 4 -1. + <_> + 14 2 3 2 2. + <_> + 17 4 3 2 2. + <_> + + <_> + 14 0 6 1 -1. + <_> + 17 0 3 1 2. + <_> + + <_> + 3 12 2 1 -1. + <_> + 4 12 1 1 2. + <_> + + <_> + 17 2 3 1 -1. + <_> + 18 2 1 1 3. + <_> + + <_> + 1 16 18 2 -1. + <_> + 7 16 6 2 3. + <_> + + <_> + 2 19 8 1 -1. + <_> + 6 19 4 1 2. + <_> + + <_> + 1 17 4 3 -1. + <_> + 1 18 4 1 3. + <_> + + <_> + 19 13 1 2 -1. + <_> + 19 14 1 1 2. + <_> + + <_> + 9 16 10 4 -1. + <_> + 9 16 5 2 2. + <_> + 14 18 5 2 2. + <_> + + <_> + 12 9 2 4 -1. + <_> + 12 9 1 2 2. + <_> + 13 11 1 2 2. + <_> + + <_> + 19 11 1 9 -1. + <_> + 19 14 1 3 3. + <_> + + <_> + 6 6 14 14 -1. + <_> + 6 13 14 7 2. + <_> + + <_> + 2 17 4 2 -1. + <_> + 2 18 4 1 2. + <_> + + <_> + 0 2 1 3 -1. + <_> + 0 3 1 1 3. + <_> + + <_> + 0 12 1 3 -1. + <_> + 0 13 1 1 3. + <_> + + <_> + 15 15 4 4 -1. + <_> + 15 17 4 2 2. + <_> + + <_> + 2 5 18 7 -1. + <_> + 8 5 6 7 3. + <_> + + <_> + 1 16 5 3 -1. + <_> + 1 17 5 1 3. + <_> + + <_> + 0 4 2 3 -1. + <_> + 0 5 2 1 3. + <_> + + <_> + 0 6 2 6 -1. + <_> + 1 6 1 6 2. + <_> + + <_> + 16 14 4 3 -1. + <_> + 16 15 4 1 3. + <_> + + <_> + 0 0 10 6 -1. + <_> + 0 0 5 3 2. + <_> + 5 3 5 3 2. + <_> + + <_> + 2 2 3 6 -1. + <_> + 3 2 1 6 3. + <_> + + <_> + 2 0 3 10 -1. + <_> + 3 0 1 10 3. + <_> + + <_> + 5 5 2 2 -1. + <_> + 5 6 2 1 2. + <_> + + <_> + 12 6 4 4 -1. + <_> + 12 8 4 2 2. + <_> + + <_> + 13 5 7 3 -1. + <_> + 13 6 7 1 3. + <_> + + <_> + 10 13 1 2 -1. + <_> + 10 14 1 1 2. + <_> + + <_> + 16 16 4 2 -1. + <_> + 18 16 2 2 2. + <_> + + <_> + 16 12 4 7 -1. + <_> + 18 12 2 7 2. + <_> + + <_> + 16 17 1 3 -1. + <_> + 16 18 1 1 3. + <_> + + <_> + 19 9 1 3 -1. + <_> + 19 10 1 1 3. + <_> + + <_> + 18 7 2 6 -1. + <_> + 19 7 1 6 2. + <_> + + <_> + 8 1 3 4 -1. + <_> + 9 1 1 4 3. + <_> + + <_> + 14 0 6 9 -1. + <_> + 16 0 2 9 3. + <_> + + <_> + 4 2 10 2 -1. + <_> + 9 2 5 2 2. + <_> + + <_> + 2 12 8 4 -1. + <_> + 2 12 4 2 2. + <_> + 6 14 4 2 2. + <_> + + <_> + 0 4 7 3 -1. + <_> + 0 5 7 1 3. + <_> + + <_> + 14 14 3 3 -1. + <_> + 15 14 1 3 3. + <_> + + <_> + 0 3 4 3 -1. + <_> + 2 3 2 3 2. + <_> + + <_> + 1 0 2 7 -1. + <_> + 2 0 1 7 2. + <_> + + <_> + 15 16 4 4 -1. + <_> + 15 18 4 2 2. + <_> + + <_> + 5 8 12 4 -1. + <_> + 5 10 12 2 2. + <_> + + <_> + 3 17 1 2 -1. + <_> + 3 18 1 1 2. + <_> + + <_> + 6 1 3 4 -1. + <_> + 7 1 1 4 3. + <_> + + <_> + 6 2 3 4 -1. + <_> + 7 2 1 4 3. + <_> + + <_> + 6 8 9 12 -1. + <_> + 9 8 3 12 3. + <_> + + <_> + 8 1 8 6 -1. + <_> + 8 3 8 2 3. + <_> + + <_> + 14 2 6 3 -1. + <_> + 17 2 3 3 2. + <_> + + <_> + 0 6 1 3 -1. + <_> + 0 7 1 1 3. + <_> + + <_> + 10 0 10 2 -1. + <_> + 15 0 5 2 2. + <_> + + <_> + 11 0 3 2 -1. + <_> + 12 0 1 2 3. + <_> + + <_> + 3 19 10 1 -1. + <_> + 8 19 5 1 2. + <_> + + <_> + 0 4 7 16 -1. + <_> + 0 12 7 8 2. + <_> + + <_> + 2 16 1 3 -1. + <_> + 2 17 1 1 3. + <_> + + <_> + 7 8 12 6 -1. + <_> + 11 8 4 6 3. + <_> + + <_> + 14 9 6 7 -1. + <_> + 16 9 2 7 3. + <_> + + <_> + 12 17 6 1 -1. + <_> + 14 17 2 1 3. + <_> + + <_> + 16 1 3 1 -1. + <_> + 17 1 1 1 3. + <_> + + <_> + 0 17 8 2 -1. + <_> + 0 17 4 1 2. + <_> + 4 18 4 1 2. + <_> + + <_> + 17 0 2 1 -1. + <_> + 18 0 1 1 2. + <_> + + <_> + 4 15 6 5 -1. + <_> + 6 15 2 5 3. + <_> + + <_> + 7 2 8 2 -1. + <_> + 7 3 8 1 2. + <_> + + <_> + 4 1 8 4 -1. + <_> + 4 3 8 2 2. + <_> + + <_> + 5 19 2 1 -1. + <_> + 6 19 1 1 2. + <_> + + <_> + 5 19 2 1 -1. + <_> + 6 19 1 1 2. + <_> + + <_> + 16 17 1 3 -1. + <_> + 16 18 1 1 3. + <_> + + <_> + 0 11 2 3 -1. + <_> + 1 11 1 3 2. + <_> + + <_> + 0 19 4 1 -1. + <_> + 2 19 2 1 2. + <_> + + <_> + 0 18 4 2 -1. + <_> + 2 18 2 2 2. + <_> + + <_> + 2 17 1 3 -1. + <_> + 2 18 1 1 3. + <_> + + <_> + 5 7 11 2 -1. + <_> + 5 8 11 1 2. + <_> + + <_> + 9 2 4 10 -1. + <_> + 9 7 4 5 2. + <_> + + <_> + 0 2 4 3 -1. + <_> + 0 3 4 1 3. + <_> + + <_> + 10 19 10 1 -1. + <_> + 15 19 5 1 2. + <_> + + <_> + 11 17 8 3 -1. + <_> + 15 17 4 3 2. + <_> + + <_> + 8 19 3 1 -1. + <_> + 9 19 1 1 3. + <_> + + <_> + 14 0 3 4 -1. + <_> + 15 0 1 4 3. + <_> + + <_> + 10 6 4 3 -1. + <_> + 10 7 4 1 3. + <_> + + <_> + 0 8 3 2 -1. + <_> + 0 9 3 1 2. + <_> + + <_> + 7 12 3 6 -1. + <_> + 7 14 3 2 3. + <_> + + <_> + 1 18 1 2 -1. + <_> + 1 19 1 1 2. + <_> + + <_> + 0 12 4 4 -1. + <_> + 2 12 2 4 2. + <_> + + <_> + 1 8 6 7 -1. + <_> + 3 8 2 7 3. + <_> + + <_> + 0 8 4 5 -1. + <_> + 2 8 2 5 2. + <_> + + <_> + 19 16 1 3 -1. + <_> + 19 17 1 1 3. + <_> + + <_> + 1 5 18 6 -1. + <_> + 7 5 6 6 3. + <_> + + <_> + 2 15 4 2 -1. + <_> + 2 16 4 1 2. + <_> + + <_> + 18 6 2 11 -1. + <_> + 19 6 1 11 2. + <_> + + <_> + 0 12 2 6 -1. + <_> + 0 14 2 2 3. + <_> + + <_> + 12 5 3 2 -1. + <_> + 12 6 3 1 2. + <_> + + <_> + 1 3 2 3 -1. + <_> + 1 4 2 1 3. + <_> + + <_> + 16 14 4 4 -1. + <_> + 16 16 4 2 2. + <_> + + <_> + 6 8 12 5 -1. + <_> + 10 8 4 5 3. + <_> + + <_> + 13 7 2 7 -1. + <_> + 14 7 1 7 2. + <_> + + <_> + 1 8 2 6 -1. + <_> + 2 8 1 6 2. + <_> + + <_> + 15 0 3 7 -1. + <_> + 16 0 1 7 3. + <_> + + <_> + 4 2 6 2 -1. + <_> + 6 2 2 2 3. + <_> + + <_> + 0 9 20 9 -1. + <_> + 0 12 20 3 3. + <_> + + <_> + 10 14 2 2 -1. + <_> + 10 15 2 1 2. + <_> + + <_> + 6 5 10 4 -1. + <_> + 6 7 10 2 2. + <_> + + <_> + 6 1 5 9 -1. + <_> + 6 4 5 3 3. + <_> + + <_> + 16 18 2 2 -1. + <_> + 16 18 1 1 2. + <_> + 17 19 1 1 2. + <_> + + <_> + 0 14 2 4 -1. + <_> + 0 16 2 2 2. + <_> + + <_> + 10 8 2 5 -1. + <_> + 11 8 1 5 2. + <_> + + <_> + 3 7 12 7 -1. + <_> + 7 7 4 7 3. + <_> + + <_> + 0 0 6 6 -1. + <_> + 3 0 3 6 2. + <_> + + <_> + 1 0 4 4 -1. + <_> + 3 0 2 4 2. + <_> + + <_> + 0 0 6 8 -1. + <_> + 2 0 2 8 3. + <_> + + <_> + 0 0 2 1 -1. + <_> + 1 0 1 1 2. + <_> + + <_> + 0 0 3 3 -1. + <_> + 0 1 3 1 3. + <_> + + <_> + 5 4 2 4 -1. + <_> + 5 6 2 2 2. + <_> + + <_> + 2 10 9 1 -1. + <_> + 5 10 3 1 3. + <_> + + <_> + 1 17 1 3 -1. + <_> + 1 18 1 1 3. + <_> + + <_> + 0 17 2 3 -1. + <_> + 0 18 2 1 3. + <_> + + <_> + 0 15 16 3 -1. + <_> + 8 15 8 3 2. + <_> + + <_> + 0 5 4 1 -1. + <_> + 2 5 2 1 2. + <_> + + <_> + 1 0 6 20 -1. + <_> + 3 0 2 20 3. + <_> + + <_> + 2 5 4 6 -1. + <_> + 2 5 2 3 2. + <_> + 4 8 2 3 2. + <_> + + <_> + 9 16 6 3 -1. + <_> + 11 16 2 3 3. + <_> + + <_> + 11 17 6 1 -1. + <_> + 14 17 3 1 2. + <_> + + <_> + 3 17 15 2 -1. + <_> + 8 17 5 2 3. + <_> + + <_> + 18 0 2 3 -1. + <_> + 18 1 2 1 3. + <_> + + <_> + 13 1 7 4 -1. + <_> + 13 3 7 2 2. + <_> + + <_> + 13 6 4 4 -1. + <_> + 13 6 2 2 2. + <_> + 15 8 2 2 2. + <_> + + <_> + 17 6 3 4 -1. + <_> + 17 8 3 2 2. + <_> + + <_> + 14 9 2 2 -1. + <_> + 15 9 1 2 2. + <_> + + <_> + 17 17 1 3 -1. + <_> + 17 18 1 1 3. + <_> + + <_> + 3 19 8 1 -1. + <_> + 7 19 4 1 2. + <_> + + <_> + 0 9 3 6 -1. + <_> + 0 12 3 3 2. + <_> + + <_> + 4 7 15 5 -1. + <_> + 9 7 5 5 3. + <_> + + <_> + 6 9 9 5 -1. + <_> + 9 9 3 5 3. + <_> + + <_> + 8 1 6 2 -1. + <_> + 10 1 2 2 3. + <_> + + <_> + 4 0 12 2 -1. + <_> + 10 0 6 2 2. + <_> + + <_> + 7 0 10 3 -1. + <_> + 12 0 5 3 2. + <_> + + <_> + 5 0 9 6 -1. + <_> + 5 2 9 2 3. + <_> + + <_> + 8 3 6 4 -1. + <_> + 8 5 6 2 2. + <_> + + <_> + 17 4 2 3 -1. + <_> + 17 5 2 1 3. + <_> + + <_> + 5 2 4 3 -1. + <_> + 5 3 4 1 3. + <_> + + <_> + 5 9 2 6 -1. + <_> + 6 9 1 6 2. + <_> + + <_> + 14 10 2 6 -1. + <_> + 15 10 1 6 2. + <_> + + <_> + 7 4 3 3 -1. + <_> + 7 5 3 1 3. + <_> + + <_> + 12 4 8 2 -1. + <_> + 12 4 4 1 2. + <_> + 16 5 4 1 2. + <_> + + <_> + 15 8 1 6 -1. + <_> + 15 10 1 2 3. + <_> + + <_> + 4 17 11 3 -1. + <_> + 4 18 11 1 3. + <_> + + <_> + 3 0 16 20 -1. + <_> + 3 10 16 10 2. + <_> + + <_> + 12 4 4 6 -1. + <_> + 12 6 4 2 3. + <_> + + <_> + 11 0 6 6 -1. + <_> + 13 0 2 6 3. + <_> + + <_> + 13 1 6 4 -1. + <_> + 13 1 3 2 2. + <_> + 16 3 3 2 2. + <_> + + <_> + 11 0 6 4 -1. + <_> + 13 0 2 4 3. + <_> + + <_> + 8 6 6 9 -1. + <_> + 10 6 2 9 3. + <_> + + <_> + 7 0 3 4 -1. + <_> + 8 0 1 4 3. + <_> + + <_> + 0 17 14 2 -1. + <_> + 0 17 7 1 2. + <_> + 7 18 7 1 2. + <_> + + <_> + 6 18 2 2 -1. + <_> + 6 18 1 1 2. + <_> + 7 19 1 1 2. + <_> + + <_> + 18 17 1 3 -1. + <_> + 18 18 1 1 3. + <_> + + <_> + 17 18 2 2 -1. + <_> + 17 18 1 1 2. + <_> + 18 19 1 1 2. + <_> + + <_> + 5 7 1 9 -1. + <_> + 5 10 1 3 3. + <_> + + <_> + 5 3 6 4 -1. + <_> + 7 3 2 4 3. + <_> + + <_> + 1 9 6 2 -1. + <_> + 1 9 3 1 2. + <_> + 4 10 3 1 2. + <_> + + <_> + 6 9 2 3 -1. + <_> + 7 9 1 3 2. + <_> + + <_> + 6 8 6 12 -1. + <_> + 8 8 2 12 3. + <_> + + <_> + 4 18 2 2 -1. + <_> + 4 18 1 1 2. + <_> + 5 19 1 1 2. + <_> + + <_> + 9 1 6 6 -1. + <_> + 9 3 6 2 3. + <_> + + <_> + 6 17 6 2 -1. + <_> + 6 18 6 1 2. + <_> + + <_> + 3 18 16 2 -1. + <_> + 3 19 16 1 2. + <_> + + <_> + 3 0 3 11 -1. + <_> + 4 0 1 11 3. + <_> + + <_> + 13 18 3 1 -1. + <_> + 14 18 1 1 3. + <_> + + <_> + 6 0 9 6 -1. + <_> + 6 2 9 2 3. + <_> + + <_> + 1 2 12 4 -1. + <_> + 1 2 6 2 2. + <_> + 7 4 6 2 2. + <_> + + <_> + 3 3 6 4 -1. + <_> + 5 3 2 4 3. + <_> + + <_> + 12 0 8 1 -1. + <_> + 16 0 4 1 2. + <_> + + <_> + 9 0 6 2 -1. + <_> + 11 0 2 2 3. + <_> + + <_> + 3 3 12 1 -1. + <_> + 9 3 6 1 2. + <_> + + <_> + 2 7 6 2 -1. + <_> + 2 7 3 1 2. + <_> + 5 8 3 1 2. + <_> + + <_> + 0 8 4 6 -1. + <_> + 0 10 4 2 3. + <_> + + <_> + 9 6 3 7 -1. + <_> + 10 6 1 7 3. + <_> + + <_> + 9 6 6 13 -1. + <_> + 11 6 2 13 3. + <_> + + <_> + 11 12 6 1 -1. + <_> + 13 12 2 1 3. + <_> + + <_> + 18 9 2 6 -1. + <_> + 18 12 2 3 2. + <_> + + <_> + 17 2 3 9 -1. + <_> + 18 2 1 9 3. + <_> + + <_> + 13 8 4 6 -1. + <_> + 13 8 2 3 2. + <_> + 15 11 2 3 2. + <_> + + <_> + 4 2 12 6 -1. + <_> + 10 2 6 6 2. + <_> + + <_> + 4 14 16 6 -1. + <_> + 12 14 8 6 2. + <_> + + <_> + 6 19 10 1 -1. + <_> + 11 19 5 1 2. + <_> + + <_> + 6 17 1 3 -1. + <_> + 6 18 1 1 3. + <_> + + <_> + 4 14 10 3 -1. + <_> + 4 15 10 1 3. + <_> + + <_> + 6 0 12 12 -1. + <_> + 6 4 12 4 3. + <_> + + <_> + 5 7 4 2 -1. + <_> + 5 7 2 1 2. + <_> + 7 8 2 1 2. + <_> + + <_> + 17 5 3 2 -1. + <_> + 18 5 1 2 3. + <_> + + <_> + 8 13 6 3 -1. + <_> + 8 14 6 1 3. + <_> + + <_> + 8 13 5 3 -1. + <_> + 8 14 5 1 3. + <_> + + <_> + 13 2 1 18 -1. + <_> + 13 11 1 9 2. + <_> + + <_> + 6 10 9 2 -1. + <_> + 9 10 3 2 3. + <_> + + <_> + 11 0 7 4 -1. + <_> + 11 2 7 2 2. + <_> + + <_> + 1 0 6 8 -1. + <_> + 3 0 2 8 3. + <_> + + <_> + 9 15 3 3 -1. + <_> + 9 16 3 1 3. + <_> + + <_> + 9 17 9 3 -1. + <_> + 9 18 9 1 3. + <_> + + <_> + 12 12 3 3 -1. + <_> + 12 13 3 1 3. + <_> + + <_> + 4 1 3 5 -1. + <_> + 5 1 1 5 3. + <_> + + <_> + 10 14 2 3 -1. + <_> + 10 15 2 1 3. + <_> + + <_> + 18 17 2 2 -1. + <_> + 18 17 1 1 2. + <_> + 19 18 1 1 2. + <_> + + <_> + 18 18 2 2 -1. + <_> + 18 18 1 1 2. + <_> + 19 19 1 1 2. + <_> + + <_> + 18 18 2 2 -1. + <_> + 18 18 1 1 2. + <_> + 19 19 1 1 2. + <_> + + <_> + 4 10 9 1 -1. + <_> + 7 10 3 1 3. + <_> + + <_> + 3 9 6 5 -1. + <_> + 5 9 2 5 3. + <_> + + <_> + 18 8 1 12 -1. + <_> + 18 14 1 6 2. + <_> + + <_> + 0 2 8 6 -1. + <_> + 0 2 4 3 2. + <_> + 4 5 4 3 2. + <_> + + <_> + 9 4 3 3 -1. + <_> + 9 5 3 1 3. + <_> + + <_> + 3 18 2 2 -1. + <_> + 3 18 1 1 2. + <_> + 4 19 1 1 2. + <_> + + <_> + 6 4 4 3 -1. + <_> + 6 5 4 1 3. + <_> + + <_> + 16 7 4 2 -1. + <_> + 16 7 2 1 2. + <_> + 18 8 2 1 2. + <_> + + <_> + 5 17 1 3 -1. + <_> + 5 18 1 1 3. + <_> + + <_> + 2 0 15 20 -1. + <_> + 2 10 15 10 2. + <_> + + <_> + 8 11 6 4 -1. + <_> + 8 11 3 2 2. + <_> + 11 13 3 2 2. + <_> + + <_> + 8 16 4 3 -1. + <_> + 8 17 4 1 3. + <_> + + <_> + 8 18 2 2 -1. + <_> + 8 18 1 1 2. + <_> + 9 19 1 1 2. + <_> + + <_> + 2 16 13 3 -1. + <_> + 2 17 13 1 3. + <_> + + <_> + 16 16 2 2 -1. + <_> + 16 16 1 1 2. + <_> + 17 17 1 1 2. + <_> + + <_> + 8 1 6 3 -1. + <_> + 10 1 2 3 3. + <_> + + <_> + 16 7 2 2 -1. + <_> + 16 7 1 1 2. + <_> + 17 8 1 1 2. + <_> + + <_> + 14 7 4 2 -1. + <_> + 14 7 2 1 2. + <_> + 16 8 2 1 2. + <_> + + <_> + 4 0 14 1 -1. + <_> + 11 0 7 1 2. + <_> + + <_> + 10 4 8 2 -1. + <_> + 10 4 4 1 2. + <_> + 14 5 4 1 2. + <_> + + <_> + 8 2 3 2 -1. + <_> + 9 2 1 2 3. + <_> + + <_> + 12 11 6 3 -1. + <_> + 12 12 6 1 3. + <_> + + <_> + 1 5 1 4 -1. + <_> + 1 7 1 2 2. + <_> + + <_> + 1 1 1 18 -1. + <_> + 1 7 1 6 3. + <_> + + <_> + 11 13 3 2 -1. + <_> + 11 14 3 1 2. + <_> + + <_> + 0 1 12 2 -1. + <_> + 0 1 6 1 2. + <_> + 6 2 6 1 2. + <_> + + <_> + 10 18 2 2 -1. + <_> + 10 18 1 1 2. + <_> + 11 19 1 1 2. + <_> + + <_> + 4 5 4 4 -1. + <_> + 4 5 2 2 2. + <_> + 6 7 2 2 2. + <_> + + <_> + 6 7 1 3 -1. + <_> + 6 8 1 1 3. + <_> + + <_> + 14 10 6 2 -1. + <_> + 16 10 2 2 3. + <_> + + <_> + 16 8 3 6 -1. + <_> + 17 8 1 6 3. + <_> + + <_> + 4 10 6 2 -1. + <_> + 6 10 2 2 3. + <_> + + <_> + 6 5 3 7 -1. + <_> + 7 5 1 7 3. + <_> + + <_> + 0 13 6 6 -1. + <_> + 0 16 6 3 2. + <_> + + <_> + 12 5 1 9 -1. + <_> + 12 8 1 3 3. + <_> + + <_> + 5 9 3 3 -1. + <_> + 6 9 1 3 3. + <_> + + <_> + 7 5 6 13 -1. + <_> + 9 5 2 13 3. + <_> + + <_> + 19 8 1 10 -1. + <_> + 19 13 1 5 2. + <_> + + <_> + 11 18 6 1 -1. + <_> + 13 18 2 1 3. + <_> + + <_> + 9 7 6 12 -1. + <_> + 11 7 2 12 3. + <_> + + <_> + 12 7 6 6 -1. + <_> + 14 7 2 6 3. + <_> + + <_> + 15 8 3 4 -1. + <_> + 16 8 1 4 3. + <_> + + <_> + 6 11 4 2 -1. + <_> + 6 12 4 1 2. + <_> + + <_> + 1 6 6 8 -1. + <_> + 3 6 2 8 3. + <_> + + <_> + 11 15 6 5 -1. + <_> + 13 15 2 5 3. + <_> + + <_> + 15 17 4 2 -1. + <_> + 15 18 4 1 2. + <_> + + <_> + 13 11 6 1 -1. + <_> + 15 11 2 1 3. + <_> + + <_> + 5 18 2 2 -1. + <_> + 5 18 1 1 2. + <_> + 6 19 1 1 2. + <_> + + <_> + 4 8 4 4 -1. + <_> + 4 8 2 2 2. + <_> + 6 10 2 2 2. + <_> + + <_> + 11 7 9 3 -1. + <_> + 11 8 9 1 3. + <_> + + <_> + 0 3 10 4 -1. + <_> + 0 3 5 2 2. + <_> + 5 5 5 2 2. + <_> + + <_> + 7 18 6 1 -1. + <_> + 9 18 2 1 3. + <_> + + <_> + 0 8 3 3 -1. + <_> + 0 9 3 1 3. + <_> + + <_> + 0 0 6 8 -1. + <_> + 0 0 3 4 2. + <_> + 3 4 3 4 2. + <_> + + <_> + 7 6 3 8 -1. + <_> + 8 6 1 8 3. + <_> + + <_> + 13 7 7 3 -1. + <_> + 13 8 7 1 3. + <_> + + <_> + 3 3 2 2 -1. + <_> + 3 4 2 1 2. + <_> + + <_> + 0 3 3 3 -1. + <_> + 0 4 3 1 3. + <_> + + <_> + 9 3 5 2 -1. + <_> + 9 4 5 1 2. + <_> + + <_> + 6 5 9 4 -1. + <_> + 9 5 3 4 3. + <_> + + <_> + 3 10 12 3 -1. + <_> + 7 10 4 3 3. + <_> + + <_> + 8 7 3 6 -1. + <_> + 9 7 1 6 3. + <_> + + <_> + 5 5 6 5 -1. + <_> + 8 5 3 5 2. + <_> + + <_> + 0 5 2 3 -1. + <_> + 0 6 2 1 3. + <_> + + <_> + 9 7 3 4 -1. + <_> + 10 7 1 4 3. + <_> + + <_> + 1 0 6 15 -1. + <_> + 3 0 2 15 3. + <_> + + <_> + 15 1 3 5 -1. + <_> + 16 1 1 5 3. + <_> + + <_> + 9 2 3 10 -1. + <_> + 10 2 1 10 3. + <_> + + <_> + 8 8 6 12 -1. + <_> + 10 8 2 12 3. + <_> + + <_> + 16 4 3 4 -1. + <_> + 16 6 3 2 2. + <_> + + <_> + 16 7 2 2 -1. + <_> + 16 7 1 1 2. + <_> + 17 8 1 1 2. + <_> + + <_> + 13 0 6 9 -1. + <_> + 13 3 6 3 3. + <_> + + <_> + 7 17 1 3 -1. + <_> + 7 18 1 1 3. + <_> + + <_> + 12 1 4 2 -1. + <_> + 12 2 4 1 2. + <_> + + <_> + 17 3 1 3 -1. + <_> + 17 4 1 1 3. + <_> + + <_> + 0 16 9 3 -1. + <_> + 0 17 9 1 3. + <_> + + <_> + 3 6 2 4 -1. + <_> + 3 6 1 2 2. + <_> + 4 8 1 2 2. + <_> + + <_> + 13 18 3 1 -1. + <_> + 14 18 1 1 3. + <_> + + <_> + 0 18 4 2 -1. + <_> + 2 18 2 2 2. + <_> + + <_> + 1 19 2 1 -1. + <_> + 2 19 1 1 2. + <_> + + <_> + 0 18 4 2 -1. + <_> + 0 19 4 1 2. + <_> + + <_> + 2 17 1 3 -1. + <_> + 2 18 1 1 3. + <_> + + <_> + 4 8 3 5 -1. + <_> + 5 8 1 5 3. + <_> + + <_> + 2 1 6 7 -1. + <_> + 4 1 2 7 3. + <_> + + <_> + 3 6 2 8 -1. + <_> + 3 6 1 4 2. + <_> + 4 10 1 4 2. + <_> + + <_> + 4 5 11 10 -1. + <_> + 4 10 11 5 2. + <_> + + <_> + 0 13 20 2 -1. + <_> + 10 13 10 2 2. + <_> + + <_> + 1 13 16 3 -1. + <_> + 9 13 8 3 2. + <_> + + <_> + 16 4 4 4 -1. + <_> + 16 4 2 2 2. + <_> + 18 6 2 2 2. + <_> + + <_> + 16 0 4 12 -1. + <_> + 16 0 2 6 2. + <_> + 18 6 2 6 2. + <_> + + <_> + 14 15 3 1 -1. + <_> + 15 15 1 1 3. + <_> + + <_> + 3 4 12 10 -1. + <_> + 3 9 12 5 2. + <_> + + <_> + 9 18 2 2 -1. + <_> + 9 18 1 1 2. + <_> + 10 19 1 1 2. + <_> + + <_> + 9 18 2 2 -1. + <_> + 9 18 1 1 2. + <_> + 10 19 1 1 2. + <_> + + <_> + 13 4 2 14 -1. + <_> + 13 4 1 7 2. + <_> + 14 11 1 7 2. + <_> + + <_> + 4 2 6 4 -1. + <_> + 7 2 3 4 2. + <_> + + <_> + 0 0 18 20 -1. + <_> + 0 0 9 10 2. + <_> + 9 10 9 10 2. + <_> + + <_> + 15 11 1 2 -1. + <_> + 15 12 1 1 2. + <_> + + <_> + 16 10 2 4 -1. + <_> + 16 10 1 2 2. + <_> + 17 12 1 2 2. + <_> + + <_> + 18 17 2 2 -1. + <_> + 18 17 1 1 2. + <_> + 19 18 1 1 2. + <_> + + <_> + 9 17 1 2 -1. + <_> + 9 18 1 1 2. + <_> + + <_> + 8 4 9 6 -1. + <_> + 11 4 3 6 3. + <_> + + <_> + 6 9 9 10 -1. + <_> + 9 9 3 10 3. + <_> + + <_> + 5 0 5 4 -1. + <_> + 5 2 5 2 2. + <_> + + <_> + 5 7 11 4 -1. + <_> + 5 9 11 2 2. + <_> + + <_> + 2 4 2 14 -1. + <_> + 3 4 1 14 2. + <_> + + <_> + 8 6 3 5 -1. + <_> + 9 6 1 5 3. + <_> + + <_> + 8 4 3 9 -1. + <_> + 9 4 1 9 3. + <_> + + <_> + 0 8 20 6 -1. + <_> + 0 10 20 2 3. + <_> + + <_> + 14 16 6 1 -1. + <_> + 17 16 3 1 2. + <_> + + <_> + 17 18 2 2 -1. + <_> + 17 19 2 1 2. + <_> + + <_> + 8 17 6 3 -1. + <_> + 10 17 2 3 3. + <_> + + <_> + 4 1 9 15 -1. + <_> + 7 1 3 15 3. + <_> + + <_> + 11 5 3 12 -1. + <_> + 12 5 1 12 3. + <_> + + <_> + 0 15 4 3 -1. + <_> + 0 16 4 1 3. + <_> + + <_> + 0 0 15 1 -1. + <_> + 5 0 5 1 3. + <_> + + <_> + 6 0 6 4 -1. + <_> + 8 0 2 4 3. + <_> + + <_> + 2 0 9 3 -1. + <_> + 5 0 3 3 3. + <_> + + <_> + 13 6 3 7 -1. + <_> + 14 6 1 7 3. + <_> + + <_> + 7 6 4 2 -1. + <_> + 7 7 4 1 2. + <_> + + <_> + 6 18 6 1 -1. + <_> + 8 18 2 1 3. + <_> + + <_> + 18 6 2 2 -1. + <_> + 18 7 2 1 2. + <_> + + <_> + 6 4 7 3 -1. + <_> + 6 5 7 1 3. + <_> + + <_> + 12 7 3 1 -1. + <_> + 13 7 1 1 3. + <_> + + <_> + 15 1 2 10 -1. + <_> + 15 1 1 5 2. + <_> + 16 6 1 5 2. + <_> + + <_> + 0 18 2 2 -1. + <_> + 0 19 2 1 2. + <_> + + <_> + 19 4 1 8 -1. + <_> + 19 8 1 4 2. + <_> + + <_> + 1 17 1 3 -1. + <_> + 1 18 1 1 3. + <_> + + <_> + 0 15 6 4 -1. + <_> + 0 15 3 2 2. + <_> + 3 17 3 2 2. + <_> + + <_> + 19 0 1 18 -1. + <_> + 19 6 1 6 3. + <_> + + <_> + 10 2 6 2 -1. + <_> + 12 2 2 2 3. + <_> + + <_> + 2 8 12 2 -1. + <_> + 6 8 4 2 3. + <_> + + <_> + 16 0 4 1 -1. + <_> + 18 0 2 1 2. + <_> + + <_> + 8 4 2 6 -1. + <_> + 8 7 2 3 2. + <_> + + <_> + 14 5 2 10 -1. + <_> + 15 5 1 10 2. + <_> + + <_> + 13 4 2 2 -1. + <_> + 13 5 2 1 2. + <_> + + <_> + 11 1 3 6 -1. + <_> + 11 3 3 2 3. + <_> + + <_> + 6 9 12 2 -1. + <_> + 10 9 4 2 3. + <_> + + <_> + 9 16 4 2 -1. + <_> + 9 17 4 1 2. + <_> + + <_> + 5 14 15 4 -1. + <_> + 5 16 15 2 2. + <_> + + <_> + 18 16 2 2 -1. + <_> + 18 17 2 1 2. + <_> + + <_> + 16 18 2 2 -1. + <_> + 16 18 1 1 2. + <_> + 17 19 1 1 2. + <_> + + <_> + 6 4 3 8 -1. + <_> + 7 4 1 8 3. + <_> + + <_> + 5 9 3 1 -1. + <_> + 6 9 1 1 3. + <_> + + <_> + 0 8 1 6 -1. + <_> + 0 10 1 2 3. + <_> + + <_> + 11 2 9 6 -1. + <_> + 14 2 3 6 3. + <_> + + <_> + 12 2 6 4 -1. + <_> + 14 2 2 4 3. + <_> + + <_> + 1 7 2 4 -1. + <_> + 1 9 2 2 2. + <_> + + <_> + 13 1 6 4 -1. + <_> + 13 3 6 2 2. + <_> + + <_> + 4 10 2 10 -1. + <_> + 4 10 1 5 2. + <_> + 5 15 1 5 2. + <_> + + <_> + 2 16 9 3 -1. + <_> + 5 16 3 3 3. + <_> + + <_> + 1 2 3 9 -1. + <_> + 2 2 1 9 3. + <_> + + <_> + 19 7 1 4 -1. + <_> + 19 9 1 2 2. + <_> + + <_> + 14 11 6 8 -1. + <_> + 14 11 3 4 2. + <_> + 17 15 3 4 2. + <_> + + <_> + 15 12 4 6 -1. + <_> + 15 12 2 3 2. + <_> + 17 15 2 3 2. + <_> + + <_> + 16 15 2 2 -1. + <_> + 16 15 1 1 2. + <_> + 17 16 1 1 2. + <_> + + <_> + 17 16 2 2 -1. + <_> + 17 16 1 1 2. + <_> + 18 17 1 1 2. + <_> + + <_> + 17 16 2 2 -1. + <_> + 17 16 1 1 2. + <_> + 18 17 1 1 2. + <_> + + <_> + 2 3 2 2 -1. + <_> + 2 3 1 1 2. + <_> + 3 4 1 1 2. + <_> + + <_> + 10 10 3 3 -1. + <_> + 11 10 1 3 3. + <_> + + <_> + 5 9 7 8 -1. + <_> + 5 13 7 4 2. + <_> + + <_> + 7 16 2 2 -1. + <_> + 7 16 1 1 2. + <_> + 8 17 1 1 2. + <_> + + <_> + 7 16 2 2 -1. + <_> + 7 16 1 1 2. + <_> + 8 17 1 1 2. + <_> + + <_> + 9 8 10 3 -1. + <_> + 14 8 5 3 2. + <_> + + <_> + 6 7 4 8 -1. + <_> + 6 7 2 4 2. + <_> + 8 11 2 4 2. + <_> + + <_> + 1 6 4 3 -1. + <_> + 1 7 4 1 3. + <_> + + <_> + 6 10 6 10 -1. + <_> + 8 10 2 10 3. + <_> + + <_> + 4 6 3 6 -1. + <_> + 5 6 1 6 3. + <_> + + <_> + 3 10 4 4 -1. + <_> + 3 10 2 2 2. + <_> + 5 12 2 2 2. + <_> + + <_> + 3 10 4 4 -1. + <_> + 3 10 2 2 2. + <_> + 5 12 2 2 2. + <_> + + <_> + 3 10 4 4 -1. + <_> + 3 10 2 2 2. + <_> + 5 12 2 2 2. + <_> + + <_> + 14 8 2 6 -1. + <_> + 15 8 1 6 2. + <_> + + <_> + 3 10 4 4 -1. + <_> + 3 10 2 2 2. + <_> + 5 12 2 2 2. + <_> + + <_> + 3 10 4 4 -1. + <_> + 3 10 2 2 2. + <_> + 5 12 2 2 2. + <_> + + <_> + 12 4 3 9 -1. + <_> + 13 4 1 9 3. + <_> + + <_> + 12 3 1 12 -1. + <_> + 12 7 1 4 3. + <_> + + <_> + 2 0 18 1 -1. + <_> + 8 0 6 1 3. + <_> + + <_> + 10 0 10 6 -1. + <_> + 10 0 5 3 2. + <_> + 15 3 5 3 2. + <_> + + <_> + 18 16 2 2 -1. + <_> + 18 17 2 1 2. + <_> + + <_> + 3 5 4 2 -1. + <_> + 3 5 2 1 2. + <_> + 5 6 2 1 2. + <_> + + <_> + 11 8 3 3 -1. + <_> + 12 8 1 3 3. + <_> + + <_> + 11 7 3 5 -1. + <_> + 12 7 1 5 3. + <_> + + <_> + 3 19 15 1 -1. + <_> + 8 19 5 1 3. + <_> + + <_> + 8 13 3 2 -1. + <_> + 8 14 3 1 2. + <_> + + <_> + 2 12 8 4 -1. + <_> + 2 12 4 2 2. + <_> + 6 14 4 2 2. + <_> + + <_> + 16 16 2 2 -1. + <_> + 16 16 1 1 2. + <_> + 17 17 1 1 2. + <_> + + <_> + 7 0 3 2 -1. + <_> + 8 0 1 2 3. + <_> + + <_> + 6 7 2 5 -1. + <_> + 7 7 1 5 2. + <_> + + <_> + 18 0 2 17 -1. + <_> + 19 0 1 17 2. + <_> + + <_> + 16 16 1 3 -1. + <_> + 16 17 1 1 3. + <_> + + <_> + 14 8 3 7 -1. + <_> + 15 8 1 7 3. + <_> + + <_> + 10 17 2 2 -1. + <_> + 10 17 1 1 2. + <_> + 11 18 1 1 2. + <_> + + <_> + 4 9 1 3 -1. + <_> + 4 10 1 1 3. + <_> + + <_> + 18 10 2 3 -1. + <_> + 18 11 2 1 3. + <_> + + <_> + 12 1 3 10 -1. + <_> + 13 1 1 10 3. + <_> + + <_> + 8 12 9 1 -1. + <_> + 11 12 3 1 3. + <_> + + <_> + 5 18 2 2 -1. + <_> + 5 18 1 1 2. + <_> + 6 19 1 1 2. + <_> + + <_> + 19 6 1 9 -1. + <_> + 19 9 1 3 3. + <_> + + <_> + 4 7 2 4 -1. + <_> + 4 7 1 2 2. + <_> + 5 9 1 2 2. + <_> + + <_> + 1 4 6 14 -1. + <_> + 3 4 2 14 3. + <_> + + <_> + 10 5 9 3 -1. + <_> + 13 5 3 3 3. + <_> + + <_> + 18 7 2 6 -1. + <_> + 18 9 2 2 3. + <_> + + <_> + 5 6 2 7 -1. + <_> + 6 6 1 7 2. + <_> + + <_> + 10 4 6 8 -1. + <_> + 13 4 3 8 2. + <_> + + <_> + 0 8 2 9 -1. + <_> + 0 11 2 3 3. + <_> + + <_> + 0 7 5 3 -1. + <_> + 0 8 5 1 3. + <_> + + <_> + 8 1 7 2 -1. + <_> + 8 2 7 1 2. + <_> + + <_> + 7 5 3 5 -1. + <_> + 8 5 1 5 3. + <_> + + <_> + 19 2 1 2 -1. + <_> + 19 3 1 1 2. + <_> + + <_> + 6 7 10 11 -1. + <_> + 11 7 5 11 2. + <_> + + <_> + 9 19 6 1 -1. + <_> + 11 19 2 1 3. + <_> + + <_> + 3 0 12 1 -1. + <_> + 7 0 4 1 3. + <_> + + <_> + 4 1 6 5 -1. + <_> + 6 1 2 5 3. + <_> + + <_> + 6 12 12 6 -1. + <_> + 10 12 4 6 3. + <_> + + <_> + 16 13 2 3 -1. + <_> + 16 14 2 1 3. + <_> + + <_> + 7 14 4 2 -1. + <_> + 7 15 4 1 2. + <_> + + <_> + 7 14 2 2 -1. + <_> + 7 15 2 1 2. + <_> + + <_> + 3 10 2 4 -1. + <_> + 3 10 1 2 2. + <_> + 4 12 1 2 2. + <_> + + <_> + 0 3 2 6 -1. + <_> + 0 5 2 2 3. + <_> + + <_> + 1 10 2 2 -1. + <_> + 1 10 1 1 2. + <_> + 2 11 1 1 2. + <_> + + <_> + 16 4 4 3 -1. + <_> + 16 5 4 1 3. + <_> + + <_> + 5 10 2 4 -1. + <_> + 5 10 1 2 2. + <_> + 6 12 1 2 2. + <_> + + <_> + 5 11 13 2 -1. + <_> + 5 12 13 1 2. + <_> + + <_> + 10 2 3 11 -1. + <_> + 11 2 1 11 3. + <_> + + <_> + 10 2 4 4 -1. + <_> + 10 4 4 2 2. + <_> + + <_> + 8 8 6 2 -1. + <_> + 10 8 2 2 3. + <_> + + <_> + 11 2 3 3 -1. + <_> + 12 2 1 3 3. + <_> + + <_> + 6 18 14 2 -1. + <_> + 6 18 7 1 2. + <_> + 13 19 7 1 2. + <_> + + <_> + 17 7 1 12 -1. + <_> + 17 11 1 4 3. + <_> + + <_> + 10 5 10 3 -1. + <_> + 10 6 10 1 3. + <_> + + <_> + 6 1 3 3 -1. + <_> + 7 1 1 3 3. + <_> + + <_> + 13 8 3 1 -1. + <_> + 14 8 1 1 3. + <_> + + <_> + 10 14 2 6 -1. + <_> + 10 16 2 2 3. + <_> + + <_> + 4 1 12 14 -1. + <_> + 8 1 4 14 3. + <_> + + <_> + 14 1 6 14 -1. + <_> + 16 1 2 14 3. + <_> + + <_> + 3 16 2 2 -1. + <_> + 3 16 1 1 2. + <_> + 4 17 1 1 2. + <_> + + <_> + 0 16 2 2 -1. + <_> + 0 17 2 1 2. + <_> + + <_> + 15 6 4 6 -1. + <_> + 15 6 2 3 2. + <_> + 17 9 2 3 2. + <_> + + <_> + 12 5 2 2 -1. + <_> + 12 6 2 1 2. + <_> + + <_> + 7 6 6 13 -1. + <_> + 9 6 2 13 3. + <_> + + <_> + 1 9 6 5 -1. + <_> + 3 9 2 5 3. + <_> + + <_> + 0 5 3 4 -1. + <_> + 0 7 3 2 2. + <_> + + <_> + 4 1 16 2 -1. + <_> + 4 1 8 1 2. + <_> + 12 2 8 1 2. + <_> + + <_> + 1 18 4 2 -1. + <_> + 1 18 2 1 2. + <_> + 3 19 2 1 2. + <_> + + <_> + 7 7 3 4 -1. + <_> + 8 7 1 4 3. + <_> + + <_> + 3 4 9 3 -1. + <_> + 6 4 3 3 3. + <_> + + <_> + 4 6 6 10 -1. + <_> + 6 6 2 10 3. + <_> + + <_> + 9 0 8 10 -1. + <_> + 13 0 4 10 2. + <_> + + <_> + 8 0 8 1 -1. + <_> + 12 0 4 1 2. + <_> + + <_> + 6 2 8 16 -1. + <_> + 6 2 4 8 2. + <_> + 10 10 4 8 2. + <_> + + <_> + 14 10 2 10 -1. + <_> + 14 10 1 5 2. + <_> + 15 15 1 5 2. + <_> + + <_> + 12 11 1 2 -1. + <_> + 12 12 1 1 2. + <_> + + <_> + 16 0 3 8 -1. + <_> + 17 0 1 8 3. + <_> + + <_> + 14 0 6 10 -1. + <_> + 17 0 3 10 2. + <_> + + <_> + 16 0 3 5 -1. + <_> + 17 0 1 5 3. + <_> + + <_> + 4 5 11 2 -1. + <_> + 4 6 11 1 2. + <_> + + <_> + 1 0 2 1 -1. + <_> + 2 0 1 1 2. + <_> + + <_> + 0 0 2 3 -1. + <_> + 0 1 2 1 3. + <_> + + <_> + 11 6 6 11 -1. + <_> + 13 6 2 11 3. + <_> + + <_> + 14 0 3 1 -1. + <_> + 15 0 1 1 3. + <_> + + <_> + 19 7 1 2 -1. + <_> + 19 8 1 1 2. + <_> + + <_> + 17 0 3 9 -1. + <_> + 18 0 1 9 3. + <_> + + <_> + 12 7 3 4 -1. + <_> + 13 7 1 4 3. + <_> + + <_> + 0 1 14 2 -1. + <_> + 0 1 7 1 2. + <_> + 7 2 7 1 2. + <_> + + <_> + 3 1 3 2 -1. + <_> + 4 1 1 2 3. + <_> + + <_> + 4 0 15 2 -1. + <_> + 9 0 5 2 3. + <_> + + <_> + 10 2 6 1 -1. + <_> + 12 2 2 1 3. + <_> + + <_> + 9 4 6 11 -1. + <_> + 11 4 2 11 3. + <_> + + <_> + 2 16 2 4 -1. + <_> + 2 18 2 2 2. + <_> + + <_> + 6 17 6 3 -1. + <_> + 8 17 2 3 3. + <_> + + <_> + 7 9 6 2 -1. + <_> + 9 9 2 2 3. + <_> + + <_> + 6 8 9 2 -1. + <_> + 9 8 3 2 3. + <_> + + <_> + 6 6 2 10 -1. + <_> + 6 6 1 5 2. + <_> + 7 11 1 5 2. + <_> + + <_> + 0 11 2 3 -1. + <_> + 0 12 2 1 3. + <_> + + <_> + 11 15 4 1 -1. + <_> + 13 15 2 1 2. + <_> + + <_> + 6 17 1 2 -1. + <_> + 6 18 1 1 2. + <_> + + <_> + 0 0 6 20 -1. + <_> + 2 0 2 20 3. + <_> + + <_> + 3 10 2 2 -1. + <_> + 4 10 1 2 2. + <_> + + <_> + 4 7 3 5 -1. + <_> + 5 7 1 5 3. + <_> + + <_> + 3 12 6 2 -1. + <_> + 5 12 2 2 3. + <_> + + <_> + 6 15 7 4 -1. + <_> + 6 17 7 2 2. + <_> + + <_> + 17 16 2 2 -1. + <_> + 17 16 1 1 2. + <_> + 18 17 1 1 2. + <_> + + <_> + 15 1 3 16 -1. + <_> + 16 1 1 16 3. + <_> + + <_> + 6 16 6 3 -1. + <_> + 8 16 2 3 3. + <_> + + <_> + 15 14 3 2 -1. + <_> + 15 15 3 1 2. + <_> + + <_> + 12 16 1 2 -1. + <_> + 12 17 1 1 2. + <_> + + <_> + 0 2 4 4 -1. + <_> + 0 2 2 2 2. + <_> + 2 4 2 2 2. + <_> + + <_> + 1 1 6 4 -1. + <_> + 1 1 3 2 2. + <_> + 4 3 3 2 2. + <_> + + <_> + 1 18 1 2 -1. + <_> + 1 19 1 1 2. + <_> + + <_> + 4 7 2 3 -1. + <_> + 4 8 2 1 3. + <_> + + <_> + 1 0 9 14 -1. + <_> + 1 7 9 7 2. + <_> + + <_> + 4 9 2 6 -1. + <_> + 4 9 1 3 2. + <_> + 5 12 1 3 2. + <_> + + <_> + 3 9 4 3 -1. + <_> + 5 9 2 3 2. + <_> + + <_> + 0 9 2 4 -1. + <_> + 0 11 2 2 2. + <_> + + <_> + 16 6 3 10 -1. + <_> + 17 6 1 10 3. + <_> + + <_> + 16 11 2 1 -1. + <_> + 17 11 1 1 2. + <_> + + <_> + 5 7 4 4 -1. + <_> + 5 9 4 2 2. + <_> + + <_> + 10 11 9 2 -1. + <_> + 13 11 3 2 3. + <_> + + <_> + 15 10 2 2 -1. + <_> + 15 10 1 1 2. + <_> + 16 11 1 1 2. + <_> + + <_> + 10 6 6 14 -1. + <_> + 10 13 6 7 2. + <_> + + <_> + 14 7 3 5 -1. + <_> + 15 7 1 5 3. + <_> + + <_> + 6 11 12 3 -1. + <_> + 10 11 4 3 3. + <_> + + <_> + 17 16 1 2 -1. + <_> + 17 17 1 1 2. + <_> + + <_> + 8 5 5 4 -1. + <_> + 8 7 5 2 2. + <_> + + <_> + 11 6 4 2 -1. + <_> + 11 7 4 1 2. + <_> + + <_> + 3 4 8 2 -1. + <_> + 3 4 4 1 2. + <_> + 7 5 4 1 2. + <_> + + <_> + 0 8 6 6 -1. + <_> + 2 8 2 6 3. + <_> + + <_> + 7 4 6 2 -1. + <_> + 7 5 6 1 2. + <_> + + <_> + 7 3 6 3 -1. + <_> + 9 3 2 3 3. + <_> + + <_> + 2 17 3 3 -1. + <_> + 2 18 3 1 3. + <_> + + <_> + 3 10 6 1 -1. + <_> + 5 10 2 1 3. + <_> + + <_> + 7 2 6 2 -1. + <_> + 9 2 2 2 3. + <_> + + <_> + 4 11 9 1 -1. + <_> + 7 11 3 1 3. + <_> + + <_> + 7 7 11 12 -1. + <_> + 7 13 11 6 2. + <_> + + <_> + 3 2 3 4 -1. + <_> + 4 2 1 4 3. + <_> + + <_> + 9 7 9 3 -1. + <_> + 12 7 3 3 3. + <_> + + <_> + 15 11 2 6 -1. + <_> + 15 11 1 3 2. + <_> + 16 14 1 3 2. + <_> + + <_> + 0 5 5 3 -1. + <_> + 0 6 5 1 3. + <_> + + <_> + 8 1 6 12 -1. + <_> + 10 1 2 12 3. + <_> + + <_> + 3 7 15 13 -1. + <_> + 8 7 5 13 3. + <_> + + <_> + 0 9 9 9 -1. + <_> + 0 12 9 3 3. + <_> + + <_> + 16 0 3 8 -1. + <_> + 17 0 1 8 3. + <_> + + <_> + 16 2 4 2 -1. + <_> + 18 2 2 2 2. + <_> + + <_> + 13 0 6 5 -1. + <_> + 16 0 3 5 2. + <_> + + <_> + 15 1 3 2 -1. + <_> + 16 1 1 2 3. + <_> + + <_> + 11 8 3 2 -1. + <_> + 12 8 1 2 3. + <_> + + <_> + 1 8 2 12 -1. + <_> + 1 8 1 6 2. + <_> + 2 14 1 6 2. + <_> + + <_> + 0 1 6 12 -1. + <_> + 2 1 2 12 3. + <_> + + <_> + 19 17 1 3 -1. + <_> + 19 18 1 1 3. + <_> + + <_> + 11 3 3 10 -1. + <_> + 12 3 1 10 3. + <_> + + <_> + 8 1 9 8 -1. + <_> + 11 1 3 8 3. + <_> + + <_> + 18 16 2 2 -1. + <_> + 18 16 1 1 2. + <_> + 19 17 1 1 2. + <_> + + <_> + 18 16 2 2 -1. + <_> + 18 16 1 1 2. + <_> + 19 17 1 1 2. + <_> + + <_> + 6 13 2 6 -1. + <_> + 6 15 2 2 3. + <_> + + <_> + 9 14 2 2 -1. + <_> + 9 15 2 1 2. + <_> + + <_> + 14 10 2 4 -1. + <_> + 14 10 1 2 2. + <_> + 15 12 1 2 2. + <_> + + <_> + 0 15 2 2 -1. + <_> + 0 15 1 1 2. + <_> + 1 16 1 1 2. + <_> + + <_> + 6 7 2 2 -1. + <_> + 6 7 1 1 2. + <_> + 7 8 1 1 2. + <_> + + <_> + 11 18 2 2 -1. + <_> + 11 18 1 1 2. + <_> + 12 19 1 1 2. + <_> + + <_> + 0 0 6 4 -1. + <_> + 0 0 3 2 2. + <_> + 3 2 3 2 2. + <_> + + <_> + 4 1 6 6 -1. + <_> + 6 1 2 6 3. + <_> + + <_> + 15 13 5 4 -1. + <_> + 15 15 5 2 2. + <_> + + <_> + 7 17 6 1 -1. + <_> + 9 17 2 1 3. + <_> + + <_> + 16 19 4 1 -1. + <_> + 18 19 2 1 2. + <_> + + <_> + 16 16 4 4 -1. + <_> + 18 16 2 4 2. + <_> + + <_> + 7 8 9 4 -1. + <_> + 10 8 3 4 3. + <_> + + <_> + 16 18 2 2 -1. + <_> + 16 18 1 1 2. + <_> + 17 19 1 1 2. + <_> + + <_> + 2 9 2 4 -1. + <_> + 2 9 1 2 2. + <_> + 3 11 1 2 2. + <_> + + <_> + 0 3 8 4 -1. + <_> + 0 3 4 2 2. + <_> + 4 5 4 2 2. + <_> + + <_> + 0 1 8 1 -1. + <_> + 4 1 4 1 2. + <_> + + <_> + 0 5 8 9 -1. + <_> + 4 5 4 9 2. + <_> + + <_> + 7 18 6 2 -1. + <_> + 9 18 2 2 3. + <_> + + <_> + 0 4 1 12 -1. + <_> + 0 8 1 4 3. + <_> + + <_> + 19 13 1 6 -1. + <_> + 19 15 1 2 3. + <_> + + <_> + 2 8 6 8 -1. + <_> + 4 8 2 8 3. + <_> + + <_> + 0 0 9 17 -1. + <_> + 3 0 3 17 3. + <_> + + <_> + 7 9 6 8 -1. + <_> + 9 9 2 8 3. + <_> + + <_> + 5 10 9 4 -1. + <_> + 8 10 3 4 3. + <_> + + <_> + 5 0 8 3 -1. + <_> + 5 1 8 1 3. + <_> + + <_> + 16 6 4 4 -1. + <_> + 16 6 2 2 2. + <_> + 18 8 2 2 2. + <_> + + <_> + 17 4 2 8 -1. + <_> + 17 4 1 4 2. + <_> + 18 8 1 4 2. + <_> + + <_> + 2 16 1 3 -1. + <_> + 2 17 1 1 3. + <_> + + <_> + 2 16 1 3 -1. + <_> + 2 17 1 1 3. + <_> + + <_> + 11 0 1 3 -1. + <_> + 11 1 1 1 3. + <_> + + <_> + 11 2 9 7 -1. + <_> + 14 2 3 7 3. + <_> + + <_> + 10 2 3 6 -1. + <_> + 11 2 1 6 3. + <_> + + <_> + 5 9 15 2 -1. + <_> + 5 10 15 1 2. + <_> + + <_> + 8 16 6 2 -1. + <_> + 8 17 6 1 2. + <_> + + <_> + 9 16 10 2 -1. + <_> + 9 16 5 1 2. + <_> + 14 17 5 1 2. + <_> + + <_> + 9 17 2 2 -1. + <_> + 9 17 1 1 2. + <_> + 10 18 1 1 2. + <_> + + <_> + 10 15 6 4 -1. + <_> + 10 15 3 2 2. + <_> + 13 17 3 2 2. + <_> + + <_> + 4 5 15 12 -1. + <_> + 9 5 5 12 3. + <_> + + <_> + 11 13 2 3 -1. + <_> + 11 14 2 1 3. + <_> + + <_> + 8 13 7 3 -1. + <_> + 8 14 7 1 3. + <_> + + <_> + 1 12 1 2 -1. + <_> + 1 13 1 1 2. + <_> + + <_> + 16 18 2 2 -1. + <_> + 16 18 1 1 2. + <_> + 17 19 1 1 2. + <_> + + <_> + 1 19 18 1 -1. + <_> + 7 19 6 1 3. + <_> + + <_> + 1 17 6 1 -1. + <_> + 4 17 3 1 2. + <_> + + <_> + 1 3 1 12 -1. + <_> + 1 9 1 6 2. + <_> + + <_> + 0 9 3 6 -1. + <_> + 0 11 3 2 3. + <_> + + <_> + 5 4 3 10 -1. + <_> + 6 4 1 10 3. + <_> + + <_> + 6 17 2 1 -1. + <_> + 7 17 1 1 2. + <_> + + <_> + 1 0 6 12 -1. + <_> + 3 0 2 12 3. + <_> + + <_> + 4 7 9 2 -1. + <_> + 7 7 3 2 3. + <_> + + <_> + 6 11 9 1 -1. + <_> + 9 11 3 1 3. + <_> + + <_> + 17 10 2 10 -1. + <_> + 17 15 2 5 2. + <_> + + <_> + 4 10 2 10 -1. + <_> + 4 10 1 5 2. + <_> + 5 15 1 5 2. + <_> + + <_> + 12 3 3 12 -1. + <_> + 13 3 1 12 3. + <_> + + <_> + 15 3 4 6 -1. + <_> + 15 3 2 3 2. + <_> + 17 6 2 3 2. + <_> + + <_> + 12 8 3 3 -1. + <_> + 13 8 1 3 3. + <_> + + <_> + 4 14 2 4 -1. + <_> + 4 16 2 2 2. + <_> + + <_> + 6 16 1 3 -1. + <_> + 6 17 1 1 3. + <_> + + <_> + 1 1 2 3 -1. + <_> + 2 1 1 3 2. + <_> + + <_> + 0 2 4 1 -1. + <_> + 2 2 2 1 2. + <_> + + <_> + 8 17 12 3 -1. + <_> + 12 17 4 3 3. + <_> + + <_> + 9 16 6 4 -1. + <_> + 11 16 2 4 3. + <_> + + <_> + 4 6 3 6 -1. + <_> + 4 9 3 3 2. + <_> + + <_> + 6 2 12 9 -1. + <_> + 6 5 12 3 3. + <_> + + <_> + 6 0 14 20 -1. + <_> + 6 0 7 10 2. + <_> + 13 10 7 10 2. + <_> + + <_> + 15 16 2 2 -1. + <_> + 15 16 1 1 2. + <_> + 16 17 1 1 2. + <_> + + <_> + 15 16 2 2 -1. + <_> + 15 16 1 1 2. + <_> + 16 17 1 1 2. + <_> + + <_> + 19 8 1 3 -1. + <_> + 19 9 1 1 3. + <_> + + <_> + 13 4 1 2 -1. + <_> + 13 5 1 1 2. + <_> + + <_> + 0 4 4 2 -1. + <_> + 0 5 4 1 2. + <_> + + <_> + 19 5 1 6 -1. + <_> + 19 7 1 2 3. + <_> + + <_> + 16 0 2 1 -1. + <_> + 17 0 1 1 2. + <_> + + <_> + 13 1 1 3 -1. + <_> + 13 2 1 1 3. + <_> + + <_> + 17 17 1 3 -1. + <_> + 17 18 1 1 3. + <_> + + <_> + 5 4 8 8 -1. + <_> + 5 4 4 4 2. + <_> + 9 8 4 4 2. + <_> + + <_> + 1 2 2 2 -1. + <_> + 1 2 1 1 2. + <_> + 2 3 1 1 2. + <_> + + <_> + 0 0 8 6 -1. + <_> + 0 0 4 3 2. + <_> + 4 3 4 3 2. + <_> + + <_> + 6 3 4 2 -1. + <_> + 6 4 4 1 2. + <_> + + <_> + 1 0 3 3 -1. + <_> + 1 1 3 1 3. + <_> + + <_> + 6 1 7 2 -1. + <_> + 6 2 7 1 2. + <_> + + <_> + 2 6 12 6 -1. + <_> + 6 6 4 6 3. + <_> + + <_> + 1 16 9 2 -1. + <_> + 4 16 3 2 3. + <_> + + <_> + 7 15 6 4 -1. + <_> + 9 15 2 4 3. + <_> + + <_> + 6 15 12 1 -1. + <_> + 12 15 6 1 2. + <_> + + <_> + 17 17 1 3 -1. + <_> + 17 18 1 1 3. + <_> + + <_> + 17 15 2 2 -1. + <_> + 17 15 1 1 2. + <_> + 18 16 1 1 2. + <_> + + <_> + 3 13 3 3 -1. + <_> + 3 14 3 1 3. + <_> + + <_> + 10 17 1 3 -1. + <_> + 10 18 1 1 3. + <_> + + <_> + 4 0 14 8 -1. + <_> + 11 0 7 8 2. + <_> + + <_> + 2 0 12 2 -1. + <_> + 6 0 4 2 3. + <_> + + <_> + 2 0 4 3 -1. + <_> + 4 0 2 3 2. + <_> + + <_> + 13 1 1 2 -1. + <_> + 13 2 1 1 2. + <_> + + <_> + 7 5 3 6 -1. + <_> + 8 5 1 6 3. + <_> + + <_> + 18 2 2 2 -1. + <_> + 18 2 1 1 2. + <_> + 19 3 1 1 2. + <_> + + <_> + 15 1 2 14 -1. + <_> + 16 1 1 14 2. + <_> + + <_> + 15 6 2 2 -1. + <_> + 15 6 1 1 2. + <_> + 16 7 1 1 2. + <_> + + <_> + 3 1 6 3 -1. + <_> + 5 1 2 3 3. + <_> + + <_> + 7 16 2 2 -1. + <_> + 7 16 1 1 2. + <_> + 8 17 1 1 2. + <_> + + <_> + 5 17 2 2 -1. + <_> + 5 17 1 1 2. + <_> + 6 18 1 1 2. + <_> + + <_> + 9 10 6 10 -1. + <_> + 11 10 2 10 3. + <_> + + <_> + 10 17 6 3 -1. + <_> + 12 17 2 3 3. + <_> + + <_> + 14 5 2 10 -1. + <_> + 14 10 2 5 2. + <_> + + <_> + 11 12 6 2 -1. + <_> + 11 13 6 1 2. + <_> + + <_> + 8 1 1 3 -1. + <_> + 8 2 1 1 3. + <_> + + <_> + 12 15 2 2 -1. + <_> + 12 15 1 1 2. + <_> + 13 16 1 1 2. + <_> + + <_> + 6 8 6 4 -1. + <_> + 6 8 3 2 2. + <_> + 9 10 3 2 2. + <_> + + <_> + 7 5 3 5 -1. + <_> + 8 5 1 5 3. + <_> + + <_> + 0 5 7 3 -1. + <_> + 0 6 7 1 3. + <_> + + <_> + 7 9 6 6 -1. + <_> + 9 9 2 6 3. + <_> + + <_> + 5 7 8 8 -1. + <_> + 5 11 8 4 2. + <_> + + <_> + 4 9 2 6 -1. + <_> + 4 9 1 3 2. + <_> + 5 12 1 3 2. + <_> + + <_> + 10 11 6 1 -1. + <_> + 12 11 2 1 3. + <_> + + <_> + 13 6 6 11 -1. + <_> + 15 6 2 11 3. + <_> + + <_> + 8 17 2 2 -1. + <_> + 8 17 1 1 2. + <_> + 9 18 1 1 2. + <_> + + <_> + 4 12 12 1 -1. + <_> + 8 12 4 1 3. + <_> + + <_> + 11 17 3 2 -1. + <_> + 11 18 3 1 2. + <_> + + <_> + 8 17 6 1 -1. + <_> + 10 17 2 1 3. + <_> + + <_> + 4 1 14 6 -1. + <_> + 4 3 14 2 3. + <_> + + <_> + 14 2 2 12 -1. + <_> + 14 8 2 6 2. + <_> + + <_> + 12 13 3 2 -1. + <_> + 12 14 3 1 2. + <_> + + <_> + 6 1 6 1 -1. + <_> + 8 1 2 1 3. + <_> + + <_> + 10 6 6 1 -1. + <_> + 12 6 2 1 3. + <_> + + <_> + 3 19 2 1 -1. + <_> + 4 19 1 1 2. + <_> + + <_> + 18 16 2 2 -1. + <_> + 18 16 1 1 2. + <_> + 19 17 1 1 2. + <_> + + <_> + 16 11 3 7 -1. + <_> + 17 11 1 7 3. + <_> + + <_> + 19 5 1 6 -1. + <_> + 19 8 1 3 2. + <_> + + <_> + 9 8 4 3 -1. + <_> + 9 9 4 1 3. + <_> + + <_> + 16 8 4 4 -1. + <_> + 16 8 2 2 2. + <_> + 18 10 2 2 2. + <_> + + <_> + 2 8 2 2 -1. + <_> + 2 8 1 1 2. + <_> + 3 9 1 1 2. + <_> + + <_> + 3 5 6 4 -1. + <_> + 3 5 3 2 2. + <_> + 6 7 3 2 2. + <_> + + <_> + 2 3 8 16 -1. + <_> + 2 3 4 8 2. + <_> + 6 11 4 8 2. + <_> + + <_> + 17 17 1 3 -1. + <_> + 17 18 1 1 3. + <_> + + <_> + 7 2 8 11 -1. + <_> + 11 2 4 11 2. + <_> + + <_> + 13 3 6 14 -1. + <_> + 16 3 3 14 2. + <_> + + <_> + 0 9 18 2 -1. + <_> + 6 9 6 2 3. + <_> + + <_> + 6 10 14 3 -1. + <_> + 6 11 14 1 3. + <_> + + <_> + 10 9 9 3 -1. + <_> + 13 9 3 3 3. + <_> + + <_> + 3 5 4 6 -1. + <_> + 3 5 2 3 2. + <_> + 5 8 2 3 2. + <_> + + <_> + 3 7 3 7 -1. + <_> + 4 7 1 7 3. + <_> + + <_> + 2 8 11 6 -1. + <_> + 2 10 11 2 3. + <_> + + <_> + 8 9 6 3 -1. + <_> + 8 10 6 1 3. + <_> + + <_> + 3 3 3 11 -1. + <_> + 4 3 1 11 3. + <_> + + <_> + 0 19 6 1 -1. + <_> + 3 19 3 1 2. + <_> + + <_> + 18 18 1 2 -1. + <_> + 18 19 1 1 2. + <_> + + <_> + 8 0 12 6 -1. + <_> + 8 0 6 3 2. + <_> + 14 3 6 3 2. + <_> + + <_> + 19 5 1 3 -1. + <_> + 19 6 1 1 3. + <_> + + <_> + 5 8 2 1 -1. + <_> + 6 8 1 1 2. + <_> + + <_> + 13 11 2 1 -1. + <_> + 14 11 1 1 2. + <_> + + <_> + 3 6 15 13 -1. + <_> + 8 6 5 13 3. + <_> + + <_> + 4 3 6 2 -1. + <_> + 6 3 2 2 3. + <_> + + <_> + 0 18 1 2 -1. + <_> + 0 19 1 1 2. + <_> + + <_> + 7 8 2 6 -1. + <_> + 8 8 1 6 2. + <_> + + <_> + 3 0 6 19 -1. + <_> + 5 0 2 19 3. + <_> + + <_> + 3 1 6 5 -1. + <_> + 5 1 2 5 3. + <_> + + <_> + 17 14 3 6 -1. + <_> + 17 16 3 2 3. + <_> + + <_> + 17 13 2 6 -1. + <_> + 18 13 1 6 2. + <_> + + <_> + 17 18 2 2 -1. + <_> + 18 18 1 2 2. + <_> + + <_> + 11 14 9 4 -1. + <_> + 14 14 3 4 3. + <_> + + <_> + 15 8 4 6 -1. + <_> + 15 8 2 3 2. + <_> + 17 11 2 3 2. + <_> + + <_> + 1 16 1 3 -1. + <_> + 1 17 1 1 3. + <_> + + <_> + 7 0 3 14 -1. + <_> + 8 0 1 14 3. + <_> + + <_> + 12 0 2 1 -1. + <_> + 13 0 1 1 2. + <_> + + <_> + 7 9 6 5 -1. + <_> + 10 9 3 5 2. + <_> + + <_> + 15 5 4 9 -1. + <_> + 17 5 2 9 2. + <_> + + <_> + 11 0 6 6 -1. + <_> + 13 0 2 6 3. + <_> + + <_> + 16 15 2 2 -1. + <_> + 16 15 1 1 2. + <_> + 17 16 1 1 2. + <_> + + <_> + 16 15 2 2 -1. + <_> + 16 15 1 1 2. + <_> + 17 16 1 1 2. + <_> + + <_> + 13 2 2 18 -1. + <_> + 13 11 2 9 2. + <_> + + <_> + 8 4 8 10 -1. + <_> + 8 9 8 5 2. + <_> + + <_> + 8 3 2 3 -1. + <_> + 8 4 2 1 3. + <_> + + <_> + 11 1 6 9 -1. + <_> + 11 4 6 3 3. + <_> + + <_> + 15 4 5 6 -1. + <_> + 15 6 5 2 3. + <_> + + <_> + 12 18 2 2 -1. + <_> + 12 18 1 1 2. + <_> + 13 19 1 1 2. + <_> + + <_> + 1 17 1 3 -1. + <_> + 1 18 1 1 3. + <_> + + <_> + 12 19 2 1 -1. + <_> + 13 19 1 1 2. + <_> + + <_> + 8 10 6 6 -1. + <_> + 10 10 2 6 3. + <_> + + <_> + 14 2 6 5 -1. + <_> + 16 2 2 5 3. + <_> + + <_> + 9 5 2 6 -1. + <_> + 9 7 2 2 3. + <_> + + <_> + 1 15 2 2 -1. + <_> + 2 15 1 2 2. + <_> + + <_> + 18 17 1 3 -1. + <_> + 18 18 1 1 3. + <_> + + <_> + 10 14 4 6 -1. + <_> + 10 16 4 2 3. + <_> + + <_> + 9 7 3 2 -1. + <_> + 10 7 1 2 3. + <_> + + <_> + 6 9 6 2 -1. + <_> + 6 9 3 1 2. + <_> + 9 10 3 1 2. + <_> + + <_> + 0 2 1 12 -1. + <_> + 0 6 1 4 3. + <_> + + <_> + 4 0 15 1 -1. + <_> + 9 0 5 1 3. + <_> + + <_> + 9 0 8 2 -1. + <_> + 9 0 4 1 2. + <_> + 13 1 4 1 2. + <_> + + <_> + 12 2 8 1 -1. + <_> + 16 2 4 1 2. + <_> + + <_> + 7 1 10 6 -1. + <_> + 7 3 10 2 3. + <_> + + <_> + 18 6 2 3 -1. + <_> + 18 7 2 1 3. + <_> + + <_> + 4 12 2 2 -1. + <_> + 4 12 1 1 2. + <_> + 5 13 1 1 2. + <_> + + <_> + 6 6 6 2 -1. + <_> + 8 6 2 2 3. + <_> + + <_> + 0 9 9 6 -1. + <_> + 3 9 3 6 3. + <_> + + <_> + 17 18 2 2 -1. + <_> + 18 18 1 2 2. + <_> + + <_> + 11 2 6 16 -1. + <_> + 13 2 2 16 3. + <_> + + <_> + 2 4 15 13 -1. + <_> + 7 4 5 13 3. + <_> + + <_> + 16 2 3 10 -1. + <_> + 17 2 1 10 3. + <_> + + <_> + 6 10 2 1 -1. + <_> + 7 10 1 1 2. + <_> + + <_> + 1 1 18 16 -1. + <_> + 10 1 9 16 2. + <_> + + <_> + 14 4 3 15 -1. + <_> + 15 4 1 15 3. + <_> + + <_> + 19 13 1 2 -1. + <_> + 19 14 1 1 2. + <_> + + <_> + 2 6 5 8 -1. + <_> + 2 10 5 4 2. + diff --git a/venv/lib/python3.11/site-packages/cv2/data/haarcascade_eye_tree_eyeglasses.xml b/venv/lib/python3.11/site-packages/cv2/data/haarcascade_eye_tree_eyeglasses.xml new file mode 100644 index 0000000000000000000000000000000000000000..6813d243c77e5c1819a680a60595ae4b4b635272 --- /dev/null +++ b/venv/lib/python3.11/site-packages/cv2/data/haarcascade_eye_tree_eyeglasses.xml @@ -0,0 +1,22619 @@ + + + +BOOST + HAAR + 20 + 20 + + 47 + + 0 + 30 + + <_> + 5 + -1.6473180055618286e+00 + + <_> + + 2 1 0 -2.6987109333276749e-02 0 -1 1 5.0670530647039413e-02 + -2 -3 2 -1.2915390729904175e-01 + + -8.0395472049713135e-01 6.0491400957107544e-01 + 9.0544581413269043e-01 4.4070810079574585e-02 + <_> + + 2 1 3 8.8827736675739288e-02 0 -1 4 -2.0398240536451340e-02 + -2 -3 5 -6.1261758208274841e-02 + + 7.9218882322311401e-01 4.0692299604415894e-02 + 4.2585361003875732e-01 -7.0325207710266113e-01 + <_> + + 2 1 6 -2.0490810275077820e-01 0 -1 7 9.4933047890663147e-02 + -2 -3 8 1.2091030366718769e-03 + + -4.4017648696899414e-01 5.3640520572662354e-01 + 6.8776458501815796e-01 -5.5879348516464233e-01 + <_> + + 1 0 9 9.2227972345426679e-04 -1 2 10 -7.2678289143368602e-04 + -2 -3 11 6.8421510513871908e-04 + + -7.2684401273727417e-01 -5.8028000593185425e-01 + 5.6177532672882080e-01 -2.9834181070327759e-01 + <_> + + 0 1 12 -5.1150590181350708e-02 2 -1 13 + 6.1622060835361481e-02 -2 -3 14 7.2873473167419434e-02 + + 5.9840762615203857e-01 7.4743932485580444e-01 + -4.9703779816627502e-01 2.8129258751869202e-01 + <_> + 7 + -1.4257860183715820e+00 + + <_> + + 2 1 15 -4.1994878649711609e-01 0 -1 16 + -5.6186288595199585e-02 -2 -3 17 -2.3711109533905983e-02 + + 2.7586200833320618e-01 -6.4623218774795532e-01 + 8.5241252183914185e-01 8.3703370764851570e-03 + <_> + + 1 0 18 4.0523439645767212e-02 -1 2 19 2.7388900518417358e-01 + -2 -3 20 -1.4293800108134747e-02 + + 7.4270218610763550e-01 -4.9286690354347229e-01 + 7.1784788370132446e-01 -4.2223978787660599e-02 + <_> + + 0 1 21 -2.1144729107618332e-03 2 -1 22 + 1.0659949621185660e-03 -2 -3 23 1.0812469990924001e-03 + + -8.0196601152420044e-01 -6.6025912761688232e-01 + 4.7916370630264282e-01 -5.1645290851593018e-01 + <_> + + 1 0 24 3.0198289081454277e-02 2 -1 25 4.0569551289081573e-02 + -2 -3 26 7.0679739117622375e-02 + + 5.1327562332153320e-01 6.6641497611999512e-01 + -4.5298659801483154e-01 5.5480718612670898e-01 + <_> + + 0 1 27 -7.8928138827905059e-04 2 -1 28 + 8.0574717139825225e-04 -2 -3 29 -2.0976560190320015e-02 + + -7.2526299953460693e-01 -5.6479871273040771e-01 + 6.9993537664413452e-01 6.8500466644763947e-02 + <_> + + 1 0 30 1.2794960290193558e-02 -1 2 31 + -8.1120636314153671e-03 -2 -3 32 -1.5506530180573463e-02 + + -8.6409568786621094e-01 4.4448360800743103e-01 + 3.6675310134887695e-01 -2.9189071059226990e-01 + <_> + + 2 1 33 -1.2915650382637978e-02 0 -1 34 + 6.6297221928834915e-03 -2 -3 35 -3.6532930098474026e-03 + + -4.7566780447959900e-01 1.0350350290536880e-01 + -6.1723059415817261e-01 5.4382532835006714e-01 + <_> + 9 + -1.4711019992828369e+00 + + <_> + + 0 1 36 -7.8731971979141235e-01 -1 2 37 + 1.6908009350299835e-01 -2 -3 38 -4.0369689464569092e-02 + + 7.1268838644027710e-01 -7.1908998489379883e-01 + 4.4148930907249451e-01 -4.2251929640769958e-01 + <_> + + 1 0 39 1.9132360816001892e-02 2 -1 40 6.4184539951384068e-04 + -2 -3 41 -7.8941037645563483e-04 + + 6.9186228513717651e-01 -7.6116967201232910e-01 + -6.8140429258346558e-01 1.6009919345378876e-01 + <_> + + 1 2 42 -7.1503049694001675e-03 0 -1 43 + -2.3156129755079746e-03 -2 -3 44 -4.1521269828081131e-02 + + -5.5916607379913330e-01 5.1284497976303101e-01 + 2.4422569572925568e-01 -4.6883401274681091e-01 + <_> + + 1 0 45 9.1200548922643065e-04 -1 2 46 + -1.5798299573361874e-03 -2 -3 47 -1.1573649942874908e-02 + + -6.9527888298034668e-01 -6.3509649038314819e-01 + 6.4686381816864014e-01 6.9198559504002333e-04 + <_> + + 2 1 48 2.1843519061803818e-03 0 -1 49 2.9345690272748470e-03 + -2 -3 50 -5.8788150548934937e-02 + + 4.5632898807525635e-01 -5.8841437101364136e-01 + 2.6704201102256775e-01 -3.8348990678787231e-01 + <_> + + 0 1 51 -5.5392808280885220e-04 -1 2 52 + -5.3035060409456491e-04 -2 -3 53 -6.8775108084082603e-03 + + -4.8913368582725525e-01 -3.8421550393104553e-01 + 6.6845697164535522e-01 9.3158259987831116e-02 + <_> + + 1 0 54 1.6710379859432578e-03 2 -1 55 1.4162790030241013e-03 + -2 -3 56 7.7876187860965729e-03 + + -6.0369372367858887e-01 -3.0418768525123596e-01 + 3.9699068665504456e-01 -6.6687589883804321e-01 + <_> + + 1 2 57 -1.2916780076920986e-02 0 -1 58 + -3.0156269203871489e-03 -2 -3 59 -1.9785940647125244e-02 + + -7.1239727735519409e-01 4.6252989768981934e-01 + 2.8338319063186646e-01 -3.5317930579185486e-01 + <_> + + 1 0 60 3.3207770902663469e-03 2 -1 61 2.9606239870190620e-02 + -2 -3 62 4.4614788144826889e-02 + + -7.3291397094726562e-01 4.9530759453773499e-01 + -1.9502809643745422e-01 7.9816418886184692e-01 + <_> + 12 + -1.3850779533386230e+00 + + <_> + + 0 1 63 -9.2366141080856323e-01 2 -1 64 + -4.8193939030170441e-02 -2 -3 65 2.8669878840446472e-01 + + 7.6915800571441650e-01 -5.1361227035522461e-01 + -2.9671901464462280e-01 6.2028187513351440e-01 + <_> + + 1 2 66 -1.3038160279393196e-02 0 -1 67 + -1.4749659458175302e-03 -2 -3 68 -4.6921748667955399e-02 + + -7.1294248104095459e-01 5.9115177392959595e-01 + 3.1303560733795166e-01 -3.6749690771102905e-01 + <_> + + 0 1 69 2.4459899868816137e-03 -1 2 70 + -2.5321498978883028e-03 -2 -3 71 1.4651260571554303e-03 + + -4.6930000185966492e-01 -7.7450162172317505e-01 + 3.6414781212806702e-01 -5.7445889711380005e-01 + <_> + + 1 2 72 -1.1307420209050179e-02 0 -1 73 + -1.2048849603161216e-03 -2 -3 74 -6.2752872705459595e-02 + + -5.5727648735046387e-01 4.7871670126914978e-01 + 2.2788530588150024e-01 -4.3667969107627869e-01 + <_> + + 0 1 75 -4.0173111483454704e-03 2 -1 76 + 1.5160309849306941e-03 -2 -3 77 1.9954680465161800e-03 + + -7.3568779230117798e-01 -5.8480697870254517e-01 + 2.1544020622968674e-02 5.5875688791275024e-01 + <_> + + 1 0 78 3.4435209818184376e-03 -1 2 79 + -2.6550020556896925e-03 -2 -3 80 -1.1407690122723579e-02 + + -7.6565897464752197e-01 -6.5447497367858887e-01 + 5.3633081912994385e-01 -3.8849171251058578e-02 + <_> + + 1 2 81 -2.3805440869182348e-03 0 -1 82 + 6.6475258208811283e-03 -2 -3 83 1.4018240571022034e-01 + + 3.3984410762786865e-01 -6.5025091171264648e-01 + -3.2491090893745422e-01 7.5067067146301270e-01 + <_> + + 0 1 84 -6.2358360737562180e-02 2 -1 85 + 1.3628599699586630e-03 -2 -3 86 -4.4609848409891129e-03 + + 4.5777168869972229e-01 -6.3202661275863647e-01 + 4.0597960352897644e-01 -2.0854069292545319e-01 + <_> + + 0 1 87 -1.0046839714050293e-02 2 -1 88 + -2.9274819418787956e-02 -2 -3 89 7.7389390207827091e-03 + + -7.4789828062057495e-01 -1.7995479702949524e-01 + 4.7782841324806213e-01 -6.5113341808319092e-01 + <_> + + 1 0 90 1.4774020528420806e-03 -1 2 91 1.4989820308983326e-02 + -2 -3 92 4.5073241926729679e-03 + + -6.6269898414611816e-01 -1.6695550084114075e-01 + 3.8702058792114258e-01 -7.3409372568130493e-01 + <_> + + 1 0 93 1.4901049435138702e-03 2 -1 94 8.9141662465408444e-04 + -2 -3 95 -1.1558219790458679e-02 + + -3.4280839562416077e-01 -2.8036740422248840e-01 + -4.2523959279060364e-01 4.5259669423103333e-01 + <_> + + 0 1 96 -2.0011950284242630e-02 -1 2 97 + -1.7092300578951836e-02 -2 -3 98 -6.7685171961784363e-02 + + 4.0133118629455566e-01 3.6970010399818420e-01 + 7.4438679218292236e-01 -3.8255840539932251e-01 + <_> + 12 + -1.4432040452957153e+00 + + <_> + + 1 2 99 -2.0911149680614471e-02 0 -1 100 + 1.4305709302425385e-01 -2 -3 101 1.1925029568374157e-02 + + -3.4965568780899048e-01 7.0134562253952026e-01 + -6.0404628515243530e-01 8.5615903139114380e-02 + <_> + + 1 0 102 2.4742009118199348e-02 2 -1 103 + 4.5732118189334869e-02 -2 -3 104 4.3204430490732193e-02 + + 8.5365587472915649e-01 4.1876411437988281e-01 + -3.9094918966293335e-01 2.7387988567352295e-01 + <_> + + 0 1 105 -7.2548422031104565e-04 2 -1 106 + 1.4243220211938024e-03 -2 -3 107 -5.3335479460656643e-03 + + -6.2011122703552246e-01 -6.1589437723159790e-01 + 6.0596448183059692e-01 1.5840480104088783e-02 + <_> + + 1 0 108 -7.1891010738909245e-03 2 -1 109 + 1.8233320442959666e-03 -2 -3 110 1.6109029529616237e-03 + + -2.0852829515933990e-01 -8.1338381767272949e-01 + 5.6780648231506348e-01 -8.7046259641647339e-01 + <_> + + 2 1 111 -4.8350278288125992e-02 0 -1 112 + 3.1746171414852142e-02 -2 -3 113 1.9233829807490110e-03 + + -3.5335820913314819e-01 4.4076570868492126e-01 + 4.0730631351470947e-01 -5.9592568874359131e-01 + <_> + + 1 0 114 1.3614529743790627e-03 -1 2 115 + -3.6934199742972851e-03 -2 -3 116 -8.5378461517393589e-04 + + -5.5307251214981079e-01 -7.3163098096847534e-01 + 4.3890678882598877e-01 -6.3009172677993774e-02 + <_> + + 0 1 117 -1.0950770229101181e-02 -1 2 118 + -7.2186449542641640e-03 -2 -3 119 1.8548289313912392e-02 + + 3.9263078570365906e-01 2.7225250005722046e-01 + -4.1208618879318237e-01 6.3790637254714966e-01 + <_> + + 1 0 120 1.0859060566872358e-03 -1 2 121 + -6.5618362277746201e-03 -2 -3 122 -6.1777420341968536e-02 + + -5.0857210159301758e-01 3.5386729240417480e-01 + 5.7568281888961792e-01 -2.8477248549461365e-01 + <_> + + 1 0 123 4.9480778397992253e-04 2 -1 124 + 1.1606880463659763e-02 -2 -3 125 -1.6142609529197216e-03 + + -4.9583891034126282e-01 -5.1320201158523560e-01 + 5.2665728330612183e-01 3.0917160212993622e-02 + <_> + + 1 0 126 2.0437680650502443e-03 -1 2 127 + -8.2394909113645554e-03 -2 -3 128 -3.9699211716651917e-02 + + -7.0948588848114014e-01 3.4189811348915100e-01 + 4.7383341193199158e-01 -2.5060850381851196e-01 + <_> + + 1 2 129 -8.0377282574772835e-04 0 -1 130 + -5.4273242130875587e-03 -2 -3 131 -5.2662738598883152e-03 + + -5.1384007930755615e-01 2.9752710461616516e-01 + 1.4577029645442963e-01 -4.6007528901100159e-01 + <_> + + 1 0 132 6.3841522205621004e-04 -1 2 133 + -1.5458120033144951e-03 -2 -3 134 1.1863360414281487e-03 + + -3.6412829160690308e-01 -5.8081609010696411e-01 + 2.9298609495162964e-01 -5.1420718431472778e-01 + <_> + 12 + -1.5415630340576172e+00 + + <_> + + 1 2 135 -2.7745011448860168e-01 0 -1 136 + -3.1200000084936619e-03 -2 -3 137 -8.0280922353267670e-02 + + 8.3265638351440430e-01 1.0233189910650253e-01 + 2.3773579299449921e-01 -6.4546662569046021e-01 + <_> + + 0 1 138 -6.9391548633575439e-02 2 -1 139 + 5.3355181589722633e-03 -2 -3 140 -5.4189618676900864e-02 + + 4.6008241176605225e-01 2.9137989878654480e-01 + 4.7026729583740234e-01 -5.7723402976989746e-01 + <_> + + 1 0 141 1.8562959507107735e-02 -1 2 142 + 4.6305730938911438e-02 -2 -3 143 -8.8262781500816345e-03 + + 7.0555502176284790e-01 -5.2839881181716919e-01 + 4.3953609466552734e-01 -1.3887490332126617e-01 + <_> + + 1 0 144 -2.8772179502993822e-03 -1 2 145 + -2.6457069907337427e-03 -2 -3 146 3.3441530540585518e-03 + + -2.7475830912590027e-01 -5.7746797800064087e-01 + 3.6615240573883057e-01 -6.3586741685867310e-01 + <_> + + 2 1 147 -8.3742372691631317e-02 0 -1 148 + 1.0164769738912582e-01 -2 -3 149 -2.1541758906096220e-03 + + -2.9664519429206848e-01 5.6140047311782837e-01 + -7.5446271896362305e-01 3.9601260423660278e-01 + <_> + + 0 1 150 -1.7133549554273486e-03 2 -1 151 + 1.3899410143494606e-02 -2 -3 152 -2.8498120605945587e-02 + + -7.3741632699966431e-01 4.8247390985488892e-01 + 4.1971048712730408e-01 -2.0021289587020874e-01 + <_> + + 0 1 153 -4.9728769809007645e-03 2 -1 154 + -3.4751880913972855e-02 -2 -3 155 -8.7171117775142193e-04 + + 3.7631350755691528e-01 -4.4797790050506592e-01 + -6.9995099306106567e-01 1.5640909969806671e-01 + <_> + + 0 1 156 -3.3666230738162994e-03 -1 2 157 + -2.1378830075263977e-02 -2 -3 158 -1.1869249865412712e-02 + + -6.7721921205520630e-01 3.3951529860496521e-01 + 5.4050672054290771e-01 -2.4071580171585083e-01 + <_> + + 0 1 159 -4.4268160127103329e-03 2 -1 160 + 4.1405398398637772e-02 -2 -3 161 -3.7884410470724106e-02 + + -7.3965507745742798e-01 8.2905638217926025e-01 + 1.7030739784240723e-01 -2.4498699605464935e-01 + <_> + + 1 0 162 3.7567419349215925e-04 -1 2 163 + -3.7140299100428820e-03 -2 -3 164 -6.1806719750165939e-03 + + -4.5103698968887329e-01 3.8348129391670227e-01 + 3.6097520589828491e-01 -2.0644439756870270e-01 + <_> + + 0 1 165 -1.2373559875413775e-03 -1 2 166 + -2.1339580416679382e-03 -2 -3 167 2.8985869139432907e-03 + + -5.8166879415512085e-01 4.1669690608978271e-01 + -2.4721260368824005e-01 3.5056841373443604e-01 + <_> + + 1 2 168 -4.4636861421167850e-03 0 -1 169 + 1.6411510296165943e-03 -2 -3 170 -7.3051019571721554e-03 + + 3.5625410079956055e-01 -4.1040098667144775e-01 + 2.0216129720211029e-01 -3.4234520792961121e-01 + <_> + 13 + -1.4762729406356812e+00 + + <_> + + 1 2 171 -5.1942609250545502e-02 0 -1 172 + -4.7268528491258621e-02 -2 -3 173 -7.8969672322273254e-03 + + 8.8198930025100708e-01 6.4829237759113312e-02 + 8.8662758469581604e-02 -5.9007811546325684e-01 + <_> + + 1 0 174 9.0199249098077416e-04 2 -1 175 + -1.7289820313453674e-01 -2 -3 176 -2.3374119773507118e-03 + + 5.9040898084640503e-01 -5.2029031515121460e-01 + 5.2981728315353394e-01 -1.4985850453376770e-01 + <_> + + 0 1 177 -1.7534950748085976e-02 -1 2 178 + 5.8875310060102493e-05 -2 -3 179 -3.2241028547286987e-01 + + 5.3269028663635254e-01 -4.5709720253944397e-01 + 5.7380169630050659e-01 -1.2866480648517609e-01 + <_> + + 1 2 180 8.3220787928439677e-05 0 -1 181 + -1.1180160072399303e-04 -2 -3 182 -1.0344980284571648e-02 + + 9.0006209909915924e-02 -5.6352388858795166e-01 + 6.3273417949676514e-01 5.0064269453287125e-02 + <_> + + 0 1 183 -9.4440882094204426e-04 2 -1 184 + -3.7474210839718580e-03 -2 -3 185 4.0574651211500168e-03 + + 4.4386640191078186e-01 -3.4999918937683105e-01 + -4.5298218727111816e-01 3.0920198559761047e-01 + <_> + + 1 2 186 5.5205920943990350e-05 0 -1 187 + -7.5678288936614990e-02 -2 -3 188 -3.0975368618965149e-01 + + 3.5544091463088989e-01 -3.6047360301017761e-01 + -6.4954018592834473e-01 3.0679279565811157e-01 + <_> + + 1 2 189 -7.9595847637392581e-05 0 -1 190 + 4.0613119490444660e-03 -2 -3 191 4.3240871280431747e-02 + + 3.3850470185279846e-01 -5.3271901607513428e-01 + -3.2592329382896423e-01 5.5076271295547485e-01 + <_> + + 0 1 192 -6.7015928216278553e-03 -1 2 193 + -1.0451120324432850e-03 -2 -3 194 8.3967261016368866e-03 + + 5.0109171867370605e-01 -5.8881980180740356e-01 + -9.5237597823143005e-02 5.6516999006271362e-01 + <_> + + 2 1 195 -6.5531006839592010e-05 0 -1 196 + 7.8218057751655579e-05 -2 -3 197 3.2988168299198151e-02 + + -4.6556711196899414e-01 5.4509781301021576e-02 + 3.5248789191246033e-01 -5.2722948789596558e-01 + <_> + + 0 1 198 -1.4161449857056141e-02 2 -1 199 + 3.1500440090894699e-02 -2 -3 200 -2.1956730633974075e-03 + + 3.6811780929565430e-01 5.2040421962738037e-01 + 1.1603529751300812e-01 -3.0985280871391296e-01 + <_> + + 0 1 201 -4.0099889039993286e-02 -1 2 202 + -3.2569639384746552e-02 -2 -3 203 -4.2014168575406075e-03 + + -4.5146378874778748e-01 -6.4392048120498657e-01 + -8.2594501972198486e-01 1.9259540736675262e-01 + <_> + + 2 1 204 2.0385689567774534e-03 0 -1 205 + -1.6212540213018656e-03 -2 -3 206 -8.6220083758234978e-03 + + -3.7723371386528015e-01 3.3918830752372742e-01 + 4.8986920714378357e-01 -2.7532070875167847e-01 + <_> + + 1 0 207 9.2185800895094872e-05 2 -1 208 + -7.1932889113668352e-05 -2 -3 209 4.4952900498174131e-04 + + 2.4223749339580536e-01 -4.2189198732376099e-01 + 2.9407840967178345e-01 -4.4028049707412720e-01 + <_> + 15 + -1.4963719844818115e+00 + + <_> + + 1 2 210 -1.9638450816273689e-02 0 -1 211 + 1.1364299803972244e-01 -2 -3 212 -1.0112149640917778e-02 + + -3.2444450259208679e-01 7.4602019786834717e-01 + 3.3333331346511841e-01 -5.6435650587081909e-01 + <_> + + 1 0 213 1.2130879797041416e-02 2 -1 214 + -1.5958850085735321e-01 -2 -3 215 -2.3524949792772532e-03 + + 7.2214919328689575e-01 -3.9274591207504272e-01 + 5.6152492761611938e-01 -1.3768480718135834e-01 + <_> + + 0 1 216 -4.1118920780718327e-03 -1 2 217 + -1.7832900583744049e-01 -2 -3 218 -7.8500732779502869e-03 + + 6.3556081056594849e-01 3.3373141288757324e-01 + 3.9536771178245544e-01 -3.3380430936813354e-01 + <_> + + 2 1 219 -4.6880490117473528e-05 0 -1 220 + 5.2934719860786572e-05 -2 -3 221 2.0851430235779844e-05 + + -6.6118270158767700e-01 -4.8232190310955048e-02 + -9.8838359117507935e-02 4.4528418779373169e-01 + <_> + + 0 1 222 -1.8425289541482925e-02 -1 2 223 + -7.6133902184665203e-03 -2 -3 224 -6.0353721491992474e-03 + + -6.5690898895263672e-01 5.3413677215576172e-01 + 3.6171048879623413e-01 -2.0478430390357971e-01 + <_> + + 2 1 225 4.3712720071198419e-05 0 -1 226 + -7.8823999501764774e-04 -2 -3 227 -4.5693209394812584e-03 + + -4.5326828956604004e-01 3.5517698526382446e-01 + 6.1721032857894897e-01 -2.9707700014114380e-01 + <_> + + 1 2 228 -3.8058571517467499e-02 0 -1 229 + -1.1797689646482468e-01 -2 -3 230 4.6841651201248169e-03 + + 3.5003998875617981e-01 -2.7257668972015381e-01 + -3.2559171319007874e-01 3.7737470865249634e-01 + <_> + + 1 2 231 -2.6372840511612594e-04 0 -1 232 + 6.2580420635640621e-03 -2 -3 233 5.6767999922158197e-05 + + 3.7421739101409912e-01 -5.8926701545715332e-01 + -4.8859021067619324e-01 -1.8623730167746544e-02 + <_> + + 1 0 234 9.2742107808589935e-03 2 -1 235 + -3.8514519110321999e-03 -2 -3 236 -5.3287498303689063e-05 + + 3.0933541059494019e-01 -3.4513729810714722e-01 + 5.2340328693389893e-01 -9.1159403324127197e-02 + <_> + + 1 0 237 9.8315975628793240e-04 2 -1 238 + 8.2858657697215676e-04 -2 -3 239 1.1229789815843105e-02 + + -5.0185352563858032e-01 -3.0529549717903137e-01 + 2.6219210028648376e-01 -4.7969821095466614e-01 + <_> + + 0 1 240 -1.0327639989554882e-02 -1 2 241 + -6.9197742268443108e-03 -2 -3 242 -5.0027170218527317e-03 + + -5.6315082311630249e-01 3.1225070357322693e-01 + 1.7820779979228973e-01 -3.0091148614883423e-01 + <_> + + 0 1 243 -1.1156810069223866e-04 -1 2 244 + 4.2464961297810078e-03 -2 -3 245 -4.7280951548600569e-05 + + 1.8883679807186127e-01 -4.0101578831672668e-01 + 4.6505901217460632e-01 -2.9863640666007996e-01 + <_> + + 0 1 246 -1.8891280051320791e-03 -1 2 247 + -5.8536308642942458e-05 -2 -3 248 2.0671950551331975e-05 + + 5.6963747739791870e-01 1.8008249998092651e-01 + -5.8659601211547852e-01 -5.4875258356332779e-03 + <_> + + 0 1 249 -1.1267509544268250e-03 2 -1 250 + 2.1378440782427788e-02 -2 -3 251 -1.2546040117740631e-02 + + -4.0261599421501160e-01 3.9230358600616455e-01 + 4.9474561214447021e-01 -1.7322529852390289e-01 + <_> + + 0 1 252 -7.2257901774719357e-04 2 -1 253 + 6.4563672058284283e-03 -2 -3 254 4.9086650833487511e-03 + + -3.0380329489707947e-01 4.7173491120338440e-01 + -1.6380549967288971e-01 3.7708491086959839e-01 + <_> + 19 + -1.5243699550628662e+00 + + <_> + + 2 1 255 -7.2617560625076294e-02 0 -1 256 + -6.9059380330145359e-03 -2 -3 257 2.1727949380874634e-01 + + 2.6602798700332642e-01 -4.9325171113014221e-01 + -1.0769230127334595e-01 8.2661122083663940e-01 + <_> + + 1 2 258 -2.0319509785622358e-03 0 -1 259 + 2.8931589797139168e-02 -2 -3 260 -4.6076569706201553e-03 + + -3.7963140755891800e-02 8.0230438709259033e-01 + 4.2468398809432983e-01 -2.9379379749298096e-01 + <_> + + 1 2 261 6.9408868439495564e-03 0 -1 262 + -5.9231962077319622e-03 -2 -3 263 5.1128160208463669e-02 + + 4.1737049818038940e-01 -2.5552588701248169e-01 + -3.8619861006736755e-01 4.7076860070228577e-01 + <_> + + 1 0 264 1.5201330184936523e-02 -1 2 265 + -1.8096340820193291e-02 -2 -3 266 7.9378951340913773e-05 + + 5.4354798793792725e-01 2.6651141047477722e-01 + -4.3927749991416931e-01 2.5831260718405247e-03 + <_> + + 0 1 267 -5.3462558425962925e-03 -1 2 268 + -6.9701080210506916e-03 -2 -3 269 8.4738981968257576e-05 + + -6.6308969259262085e-01 -7.0310682058334351e-01 + -1.7880809307098389e-01 2.5993299484252930e-01 + <_> + + 0 1 270 -2.8513800352811813e-03 2 -1 271 + 2.2954840678721666e-03 -2 -3 272 -3.5036220215260983e-03 + + 4.5053678750991821e-01 3.0560511350631714e-01 + 1.5040870010852814e-01 -3.3283078670501709e-01 + <_> + + 1 2 273 -6.9570228457450867e-02 0 -1 274 + 5.9261121350573376e-05 -2 -3 275 -5.9058349579572678e-02 + + -3.6899719387292862e-02 4.0927308797836304e-01 + 1.3826370239257812e-01 -3.8214409351348877e-01 + <_> + + 0 1 276 -8.9645627886056900e-03 -1 2 277 + 4.9211819714400917e-05 -2 -3 278 9.9640293046832085e-03 + + -5.8134728670120239e-01 -1.8481740355491638e-01 + 8.7685473263263702e-02 5.8509802818298340e-01 + <_> + + 0 1 279 -1.9302699714899063e-02 -1 2 280 + -4.3869198998436332e-04 -2 -3 281 6.5669846662785858e-05 + + 5.3263461589813232e-01 2.8891131281852722e-01 + -3.3493599295616150e-01 5.9566751122474670e-02 + <_> + + 0 1 282 -2.0224519073963165e-02 -1 2 283 + 8.7082196841947734e-05 -2 -3 284 -1.6202719882130623e-02 + + -6.5536081790924072e-01 -1.2211789935827255e-01 + -4.7076839208602905e-01 3.0990770459175110e-01 + <_> + + 1 0 285 4.4353529810905457e-03 -1 2 286 + -9.0544822160154581e-04 -2 -3 287 -1.4297979651018977e-03 + + -5.4039931297302246e-01 4.2878800630569458e-01 + 2.2322739660739899e-01 -1.8194420635700226e-01 + <_> + + 1 2 288 3.2359519973397255e-03 0 -1 289 + 1.0716189717641100e-04 -2 -3 290 -5.8802281273528934e-04 + + -2.9218220710754395e-01 1.3910460472106934e-01 + -4.6926081180572510e-01 3.8085499405860901e-01 + <_> + + 0 1 291 -9.0546347200870514e-03 -1 2 292 + -8.6048766970634460e-03 -2 -3 293 -1.2719300575554371e-03 + + -5.0426542758941650e-01 -2.7559030055999756e-01 + 3.6022108793258667e-01 -2.6484970003366470e-02 + <_> + + 0 1 294 -3.9098240085877478e-04 -1 2 295 + -3.6405251012183726e-04 -2 -3 296 -6.6685711499303579e-04 + + 2.6651731133460999e-01 1.4721649885177612e-01 + -4.9719738960266113e-01 -6.1579849570989609e-02 + <_> + + 0 1 297 -2.4845570325851440e-02 -1 2 298 + -1.5436399728059769e-02 -2 -3 299 -5.6572312116622925e-01 + + -7.0820981264114380e-01 -4.7206890583038330e-01 + 6.3965231180191040e-01 5.2069328725337982e-02 + <_> + + 0 1 300 -5.7480141520500183e-02 -1 2 301 + -1.4613820239901543e-02 -2 -3 302 -3.3993738889694214e-01 + + 2.9297390580177307e-01 6.0129672288894653e-01 + 1.9041299819946289e-02 -3.3254599571228027e-01 + <_> + + 2 1 303 -3.1427140347659588e-03 0 -1 304 + 2.1966299973428249e-03 -2 -3 305 -2.4858590215444565e-02 + + -2.2972729802131653e-01 2.2367340326309204e-01 + -5.6212967634201050e-01 3.9542859792709351e-01 + <_> + + 0 1 306 -1.6135630430653691e-03 2 -1 307 + 1.1416019697207958e-04 -2 -3 308 1.3170539750717580e-04 + + -4.8256790637969971e-01 2.6877319812774658e-01 + -3.9078921079635620e-01 1.7153440415859222e-01 + <_> + + 0 1 309 -8.5256207967177033e-05 -1 2 310 + 6.4925159676931798e-05 -2 -3 311 -1.2689639814198017e-02 + + 2.1754570305347443e-01 -4.7468620538711548e-01 + -6.6538578271865845e-01 1.2347090244293213e-01 + <_> + 27 + -1.3592849969863892e+00 + + <_> + + 2 1 312 -2.9844639822840691e-02 0 -1 313 + -4.5487660169601440e-01 -2 -3 314 2.7445149607956409e-03 + + 3.9222040772438049e-01 -3.9314880967140198e-01 + -1.5923570096492767e-01 8.2696700096130371e-01 + <_> + + 2 1 315 -1.0584670118987560e-02 0 -1 316 + -1.6308380290865898e-02 -2 -3 317 -4.8787441104650497e-02 + + 4.5954689383506775e-01 -2.1620120108127594e-01 + 7.5103652477264404e-01 7.4557967483997345e-02 + <_> + + 1 0 318 -2.9621229041367769e-03 2 -1 319 + 1.7300529405474663e-02 -2 -3 320 -1.6731169074773788e-02 + + -2.4452270567417145e-01 -3.3090409636497498e-01 + 5.3751850128173828e-01 2.9153820127248764e-02 + <_> + + 1 0 321 1.2326180003583431e-02 -1 2 322 + 5.4928299039602280e-02 -2 -3 323 2.7763319667428732e-03 + + -5.4824811220169067e-01 -2.1952770650386810e-01 + 3.6463689059019089e-02 5.0633782148361206e-01 + <_> + + 0 1 324 -4.5116998255252838e-02 2 -1 325 + 1.1207940056920052e-02 -2 -3 326 -5.7006389833986759e-03 + + 4.2339310050010681e-01 3.9984008669853210e-01 + -5.9729182720184326e-01 -9.8557651042938232e-02 + <_> + + 1 2 327 -5.3951311856508255e-03 0 -1 328 + 7.8587066382169724e-03 -2 -3 329 1.0666639544069767e-02 + + 3.4734690189361572e-01 -4.7281920909881592e-01 + -2.3315669596195221e-01 2.4360010027885437e-01 + <_> + + 2 1 330 2.8001810424029827e-03 0 -1 331 + -7.9198479652404785e-03 -2 -3 332 -2.3832279257476330e-03 + + -4.8354551196098328e-01 1.8321120738983154e-01 + 3.2168481498956680e-02 -5.0476258993148804e-01 + <_> + + 0 1 333 -9.7674019634723663e-03 -1 2 334 + -1.3897259719669819e-02 -2 -3 335 -6.4803068526089191e-03 + + -7.4415212869644165e-01 4.5425128936767578e-01 + 4.8292869329452515e-01 -1.0258570313453674e-01 + <_> + + 1 0 336 9.4482619315385818e-03 -1 2 337 + -7.0351187605410814e-04 -2 -3 338 -4.2770579457283020e-03 + + -5.3326022624969482e-01 2.9435831308364868e-01 + 1.5501999855041504e-01 -3.0867969989776611e-01 + <_> + + 1 0 339 5.8752358891069889e-03 2 -1 340 + 9.5629561692476273e-03 -2 -3 341 -6.8425266363192350e-05 + + -6.0491317510604858e-01 4.4039881229400635e-01 + 1.0206270217895508e-01 -2.5624030828475952e-01 + <_> + + 1 0 342 5.4002371616661549e-03 2 -1 343 + 2.9745819047093391e-03 -2 -3 344 -2.5536341127008200e-03 + + 4.5371580123901367e-01 -6.0967987775802612e-01 + 2.2111609578132629e-01 -1.2801170349121094e-01 + <_> + + 0 1 345 4.0425839833915234e-03 2 -1 346 + 7.6407291926443577e-03 -2 -3 347 -1.0939979692921042e-03 + + -1.9264020025730133e-01 6.1178821325302124e-01 + -3.7973681092262268e-01 1.6438940167427063e-01 + <_> + + 1 2 348 -1.1377089685993269e-04 0 -1 349 + 5.2979402244091034e-03 -2 -3 350 2.9510098975151777e-03 + + -2.7770480141043663e-02 4.3019628524780273e-01 + -3.7912338972091675e-01 1.0130850225687027e-01 + <_> + + 1 0 351 6.3235480338335037e-03 -1 2 352 + 3.9955950342118740e-03 -2 -3 353 -5.3595582721754909e-04 + + 4.0413460135459900e-01 -1.5097740292549133e-01 + 5.9522801637649536e-01 -3.4380171447992325e-02 + <_> + + 1 0 354 3.6193430423736572e-03 2 -1 355 + 3.4626820124685764e-03 -2 -3 356 2.9030859470367432e-02 + + -7.4454522132873535e-01 2.8504610061645508e-01 + -1.8565440177917480e-01 1.5829989314079285e-01 + <_> + + 1 0 357 6.0747697716578841e-04 2 -1 358 + 9.4140451401472092e-03 -2 -3 359 -2.2230610251426697e-02 + + -3.3788970112800598e-01 -3.6750578880310059e-01 + -6.4205718040466309e-01 1.7526410520076752e-01 + <_> + + 2 1 360 -4.6881791204214096e-03 0 -1 361 + -3.9184167981147766e-03 -2 -3 362 -6.3269808888435364e-03 + + 1.6476869583129883e-01 -2.2729560732841492e-01 + 5.7388627529144287e-01 5.7931281626224518e-02 + <_> + + 0 1 363 -3.7428940413519740e-04 2 -1 364 + 2.8672320768237114e-03 -2 -3 365 2.4337199283763766e-04 + + -3.5288140177726746e-01 -4.1419389843940735e-01 + 2.0027640461921692e-01 -2.8263148665428162e-01 + <_> + + 0 1 366 -9.1555183753371239e-03 -1 2 367 + -1.2892490485683084e-03 -2 -3 368 -1.6453899443149567e-03 + + -5.4508739709854126e-01 2.5321239233016968e-01 + 1.7635670304298401e-01 -2.3053619265556335e-01 + <_> + + 0 1 369 -7.6485536992549896e-02 2 -1 370 + 3.8297360879369080e-04 -2 -3 371 -2.6448920834809542e-04 + + -7.0480287075042725e-01 2.2375050187110901e-01 + 1.4251540601253510e-01 -2.4608950316905975e-01 + <_> + + 0 1 372 -7.9496540129184723e-03 -1 2 373 + -7.7398279681801796e-03 -2 -3 374 -1.0467980057001114e-02 + + -4.2123699188232422e-01 -4.6475729346275330e-01 + -4.7312980890274048e-01 1.3598929345607758e-01 + <_> + + 1 0 375 9.4248689711093903e-03 2 -1 376 + -3.7210211157798767e-03 -2 -3 377 -1.6539100557565689e-02 + + 3.5587531328201294e-01 -1.5899239480495453e-01 + -6.1142671108245850e-01 3.3778318762779236e-01 + <_> + + 1 0 378 1.8258139491081238e-02 -1 2 379 + -6.1498139984905720e-03 -2 -3 380 1.4396630227565765e-02 + + -7.0120972394943237e-01 3.8414189219474792e-01 + 2.2873559966683388e-02 -4.8029011487960815e-01 + <_> + + 1 0 381 -4.8927508294582367e-02 -1 2 382 + -4.9874751130118966e-04 -2 -3 383 -1.2338399887084961e-02 + + -1.2219530344009399e-01 4.4899681210517883e-01 + 5.8306622505187988e-01 -1.5592460334300995e-01 + <_> + + 1 0 384 4.9237860366702080e-03 -1 2 385 + 6.4515617850702256e-05 -2 -3 386 -9.0754460543394089e-03 + + 5.7889437675476074e-01 -2.2252050042152405e-01 + 2.5118181109428406e-01 -1.1915980279445648e-01 + <_> + + 0 1 387 -2.2913129068911076e-03 2 -1 388 + -1.1618229560554028e-02 -2 -3 389 -2.6231290772557259e-02 + + 2.0203049480915070e-01 -2.4990449845790863e-01 + -7.2858989238739014e-01 2.2483369708061218e-01 + <_> + + 1 0 390 2.1525719785131514e-04 2 -1 391 + 5.4147760383784771e-03 -2 -3 392 -6.8281739950180054e-03 + + -3.0237621068954468e-01 -3.4467801451683044e-01 + -5.1470118761062622e-01 1.8762029707431793e-01 + <_> + 29 + -1.3664239645004272e+00 + + <_> + + 1 2 393 8.8577903807163239e-03 0 -1 394 + 2.2660400718450546e-03 -2 -3 395 1.5509200282394886e-02 + + -3.6197811365127563e-01 3.4535628557205200e-01 + -2.2814500331878662e-01 8.0521601438522339e-01 + <_> + + 1 2 396 1.9730629399418831e-02 0 -1 397 + -5.2804131060838699e-02 -2 -3 398 -3.4123551100492477e-02 + + 2.2162230312824249e-01 -2.6307260990142822e-01 + 8.7687742710113525e-01 1.5147949755191803e-01 + <_> + + 0 1 399 -4.4995918869972229e-03 -1 2 400 + -3.8060150109231472e-03 -2 -3 401 -6.5935899328906089e-05 + + -5.1520478725433350e-01 3.1563198566436768e-01 + 1.1052650213241577e-01 -3.0016160011291504e-01 + <_> + + 1 0 402 9.5838904380798340e-03 2 -1 403 + 4.2877299711108208e-03 -2 -3 404 3.2141651026904583e-03 + + 5.2808177471160889e-01 -6.3694041967391968e-01 + 3.5910170525312424e-02 -5.4334390163421631e-01 + <_> + + 0 1 405 -7.9250690760090947e-04 2 -1 406 + -1.5514569822698832e-03 -2 -3 407 -1.7790550366044044e-02 + + -4.7867339849472046e-01 -9.1462276875972748e-02 + 4.5612779259681702e-01 1.0628259740769863e-02 + <_> + + 2 1 408 -2.5881261099129915e-03 0 -1 409 + -2.7412150520831347e-03 -2 -3 410 4.4753181282430887e-04 + + 1.6198949515819550e-01 -2.9113239049911499e-01 + -2.8482219576835632e-01 3.3902090787887573e-01 + <_> + + 0 1 411 -3.6593680270016193e-03 2 -1 412 + 2.4432500358670950e-03 -2 -3 413 -1.3546410016715527e-02 + + -5.1089602708816528e-01 -3.2154849171638489e-01 + 2.7356979250907898e-01 -1.2062689661979675e-01 + <_> + + 1 0 414 1.1241570115089417e-01 -1 2 415 + -4.5845299027860165e-03 -2 -3 416 6.3416222110390663e-03 + + 3.6505278944969177e-01 4.4773998856544495e-01 + -9.7543753683567047e-02 -6.1698240041732788e-01 + <_> + + 2 1 417 -9.1398190706968307e-03 0 -1 418 + -8.2371473312377930e-02 -2 -3 419 3.1728888861835003e-03 + + 6.1478227376937866e-01 -1.7612460255622864e-01 + 2.7462399005889893e-01 -5.3833961486816406e-01 + <_> + + 2 1 420 8.2914117956534028e-04 0 -1 421 + -1.7079230397939682e-02 -2 -3 422 -4.8665981739759445e-03 + + -4.3669781088829041e-01 1.7935889959335327e-01 + -6.2017709016799927e-02 -5.9141248464584351e-01 + <_> + + 0 1 423 -3.3614661078900099e-03 -1 2 424 + -4.4482201337814331e-02 -2 -3 425 -1.8765870481729507e-03 + + -4.3437281250953674e-01 -6.8157917261123657e-01 + -6.8667972087860107e-01 1.1657930165529251e-01 + <_> + + 1 0 426 2.3192320019006729e-02 -1 2 427 + -4.5041430741548538e-02 -2 -3 428 2.3778830654919147e-03 + + 4.0776708722114563e-01 3.7137511372566223e-01 + -7.1181386709213257e-02 -5.3898727893829346e-01 + <_> + + 1 2 429 -1.3468379620462656e-03 0 -1 430 + 4.3169260025024414e-03 -2 -3 431 4.5682261697947979e-03 + + 2.3184180259704590e-01 -3.8448938727378845e-01 + -2.4857190251350403e-01 1.2519669532775879e-01 + <_> + + 1 0 432 1.1057799682021141e-02 -1 2 433 + -6.6700251772999763e-04 -2 -3 434 4.8536141548538581e-05 + + -3.8228470087051392e-01 -2.7387779951095581e-01 + -2.9664589092135429e-02 2.8385889530181885e-01 + <_> + + 2 1 435 -3.9972390979528427e-02 0 -1 436 + -1.6880780458450317e-02 -2 -3 437 -5.6082051247358322e-02 + + 6.3570600748062134e-01 -1.9189420342445374e-01 + -9.0092360973358154e-01 1.9145509600639343e-01 + <_> + + 1 0 438 3.4141261130571365e-03 2 -1 439 + 9.1075859963893890e-03 -2 -3 440 -1.3897320022806525e-03 + + 4.2132571339607239e-01 5.5071562528610229e-01 + -5.0447541475296021e-01 -4.0802270174026489e-02 + <_> + + 2 1 441 1.7231719568371773e-02 0 -1 442 + -2.0052720792591572e-03 -2 -3 443 3.5111181205138564e-04 + + -3.1567269563674927e-01 5.5168247222900391e-01 + 5.6736338883638382e-02 -2.6553949713706970e-01 + <_> + + 0 1 444 -2.0616729743778706e-03 -1 2 445 + -1.0434100404381752e-03 -2 -3 446 2.0041360985487700e-03 + + -4.9637660384178162e-01 2.5625479221343994e-01 + -2.3637770116329193e-01 1.2562820315361023e-01 + <_> + + 0 1 447 -4.6680038794875145e-03 2 -1 448 + 1.0352090001106262e-02 -2 -3 449 2.9808359686285257e-03 + + -5.1331508159637451e-01 3.5214298963546753e-01 + -1.6628879308700562e-01 1.6649410128593445e-01 + <_> + + 1 0 450 1.0835190303623676e-02 -1 2 451 + -3.8211939390748739e-03 -2 -3 452 -3.4161040093749762e-03 + + -3.8929209113121033e-01 3.5466459393501282e-01 + -4.5814520120620728e-01 4.5853018760681152e-02 + <_> + + 2 1 453 -5.8807642199099064e-03 0 -1 454 + -3.4913890063762665e-02 -2 -3 455 4.8959217965602875e-03 + + 1.0240379720926285e-01 -2.5945249199867249e-01 + 2.6778548955917358e-01 -4.8959800601005554e-01 + <_> + + 1 0 456 5.8120768517255783e-03 -1 2 457 + 3.5575949586927891e-03 -2 -3 458 2.5241500698029995e-03 + + 3.0377060174942017e-01 -1.8064819276332855e-01 + 4.1480910778045654e-01 -1.9794499874114990e-01 + <_> + + 1 0 459 1.5492970123887062e-02 2 -1 460 + 2.3261269961949438e-04 -2 -3 461 -2.1607619710266590e-03 + + 4.7802209854125977e-01 -3.0891039967536926e-01 + -4.0223160386085510e-01 1.1098849773406982e-01 + <_> + + 1 0 462 3.5326189827173948e-03 -1 2 463 + -3.3474999945610762e-03 -2 -3 464 2.9168210923671722e-02 + + 2.2489060461521149e-01 1.6631869971752167e-01 + -7.4026778340339661e-02 -4.5744699239730835e-01 + <_> + + 0 1 465 -1.6242500394582748e-02 -1 2 466 + -7.5024510733783245e-03 -2 -3 467 1.7816389445215464e-03 + + -4.3497189879417419e-01 1.6646090149879456e-01 + -3.9155849814414978e-01 8.0571353435516357e-02 + <_> + + 2 1 468 -7.2545823059044778e-05 0 -1 469 + 6.1626458773389459e-05 -2 -3 470 -4.3781189015135169e-04 + + -4.1679731011390686e-01 6.0808397829532623e-03 + 3.1920549273490906e-01 -7.7506266534328461e-02 + <_> + + 1 2 471 -3.0576970311813056e-04 0 -1 472 + -1.3107899576425552e-02 -2 -3 473 -7.4203108670189977e-04 + + -3.6462840437889099e-01 2.2391660511493683e-01 + 6.8343617022037506e-02 -2.9597601294517517e-01 + <_> + + 0 1 474 -7.7575328759849072e-03 2 -1 475 + 3.0043099541217089e-03 -2 -3 476 -5.8561760932207108e-02 + + 4.5748728513717651e-01 1.8059000372886658e-01 + 2.6555559039115906e-01 -2.0381399989128113e-01 + <_> + + 0 1 477 -2.5295289233326912e-02 -1 2 478 + -4.9810659140348434e-02 -2 -3 479 -2.4564980994910002e-03 + + -5.8704811334609985e-01 -8.4442830085754395e-01 + 4.4017440080642700e-01 3.7946549709886312e-03 + <_> + 25 + -1.3621879816055298e+00 + + <_> + + 2 1 480 -2.3795999586582184e-02 0 -1 481 + -4.2916718870401382e-02 -2 -3 482 -9.9466904066503048e-04 + + 2.1881549619138241e-03 -4.9640420079231262e-01 + 8.3718097209930420e-01 -3.0279759317636490e-02 + <_> + + 0 1 483 1.3895650394260883e-02 2 -1 484 + -2.2832138929516077e-03 -2 -3 485 -4.8447579145431519e-01 + + -3.9495769143104553e-01 -3.8689300417900085e-02 + 8.3933347463607788e-01 2.3111909627914429e-01 + <_> + + 0 1 486 -7.3761418461799622e-03 2 -1 487 + 3.3793840557336807e-03 -2 -3 488 -3.3415269106626511e-02 + + 2.3094999790191650e-01 9.1608531773090363e-02 + 1.1462929844856262e-01 -5.4809182882308960e-01 + <_> + + 0 1 489 -7.6022851280868053e-03 2 -1 490 + 7.6229616999626160e-02 -2 -3 491 -3.7729479372501373e-03 + + -5.7959568500518799e-01 3.4666779637336731e-01 + 1.1899670213460922e-01 -2.7983540296554565e-01 + <_> + + 2 1 492 -4.2590490193106234e-04 0 -1 493 + -9.4475867226719856e-03 -2 -3 494 -8.0220031738281250e-01 + + 1.4403289556503296e-01 -2.8053888678550720e-01 + 6.6430008411407471e-01 5.4834768176078796e-02 + <_> + + 0 1 495 -2.8851430397480726e-03 -1 2 496 + -1.2341480469331145e-03 -2 -3 497 4.8669218813301995e-05 + + -3.8836699724197388e-01 -3.6734551191329956e-01 + -7.8982323408126831e-02 3.0184748768806458e-01 + <_> + + 0 1 498 -1.6491800546646118e-01 -1 2 499 + 1.0784890037029982e-03 -2 -3 500 -2.8511860873550177e-03 + + 3.8886231184005737e-01 -2.4477399885654449e-01 + 4.5753139257431030e-01 -5.3499769419431686e-02 + <_> + + 2 1 501 -3.2212301157414913e-03 0 -1 502 + 3.4995030146092176e-03 -2 -3 503 -1.0098779574036598e-02 + + -2.4303850531578064e-01 1.5881340205669403e-01 + -5.5816608667373657e-01 3.2196229696273804e-01 + <_> + + 0 1 504 -6.6468201112002134e-04 -1 2 505 + -3.6263898946344852e-03 -2 -3 506 -7.6791420578956604e-02 + + 2.4572889506816864e-01 1.8094339966773987e-01 + 2.6634529232978821e-01 -3.5051029920578003e-01 + <_> + + 0 1 507 -2.7685859240591526e-03 2 -1 508 + 2.5676529854536057e-02 -2 -3 509 -4.6753739006817341e-03 + + -4.3504360318183899e-01 -3.5143280029296875e-01 + 4.1049909591674805e-01 3.3144820481538773e-02 + <_> + + 1 0 510 6.7022559233009815e-03 -1 2 511 + 1.6208000481128693e-02 -2 -3 512 -1.1024869978427887e-02 + + -4.9738308787345886e-01 -1.7945469915866852e-01 + 4.0457150340080261e-01 -4.3077580630779266e-02 + <_> + + 2 1 513 7.7911361586302519e-04 0 -1 514 + -1.8139690160751343e-01 -2 -3 515 -1.2972550466656685e-03 + + 5.1866638660430908e-01 -7.5364969670772552e-02 + -5.0643932819366455e-01 -1.7226299270987511e-02 + <_> + + 1 0 516 2.0431660115718842e-02 2 -1 517 + 1.6622639959678054e-03 -2 -3 518 -2.7155179996043444e-03 + + -7.0584601163864136e-01 -4.5102250576019287e-01 + -4.4598218798637390e-01 1.3886100053787231e-01 + <_> + + 0 1 519 4.2074210796272382e-05 2 -1 520 + 9.3489577993750572e-03 -2 -3 521 -1.3226609677076340e-02 + + -2.2170229256153107e-01 -4.6554449200630188e-01 + 5.4859870672225952e-01 6.7970179021358490e-02 + <_> + + 0 1 522 -1.5071720117703080e-03 2 -1 523 + 8.7646767497062683e-03 -2 -3 524 -1.0542649775743484e-02 + + 4.6481129527091980e-01 2.7992910146713257e-01 + 2.1239709854125977e-01 -2.2514510154724121e-01 + <_> + + 0 1 525 -6.4357798546552658e-03 2 -1 526 + 7.8919027000665665e-03 -2 -3 527 -7.8666176705155522e-05 + + -4.1811630129814148e-01 -6.2211698293685913e-01 + 2.7184090018272400e-01 -4.2934559285640717e-02 + <_> + + 1 0 528 8.2855960354208946e-03 2 -1 529 + 5.4834279580973089e-05 -2 -3 530 2.4197530001401901e-03 + + 3.4669309854507446e-01 7.2008788585662842e-02 + -3.7774428725242615e-01 1.7871029675006866e-01 + <_> + + 2 1 531 -6.7930121440440416e-04 0 -1 532 + -5.6035388261079788e-03 -2 -3 533 8.4534510970115662e-03 + + 1.6817240417003632e-01 -2.7659809589385986e-01 + 6.9586731493473053e-02 6.7284989356994629e-01 + <_> + + 1 0 534 4.4707441702485085e-03 -1 2 535 + -9.1664772480726242e-03 -2 -3 536 -7.1168012917041779e-02 + + -4.2183759808540344e-01 3.6319440603256226e-01 + -5.9520107507705688e-01 2.3322079330682755e-02 + <_> + + 1 2 537 -3.6344379186630249e-03 0 -1 538 + -5.8278841897845268e-03 -2 -3 539 -2.5245670694857836e-03 + + -3.5108420252799988e-01 2.7366310358047485e-01 + 1.4989720284938812e-01 -2.4933290481567383e-01 + <_> + + 1 0 540 5.6592230685055256e-03 2 -1 541 + 4.0714079514145851e-03 -2 -3 542 -1.1921550147235394e-02 + + -3.4733161330223083e-01 -4.7359859943389893e-01 + -4.0016528964042664e-01 1.5767680108547211e-01 + <_> + + 1 2 543 9.8874024115502834e-04 0 -1 544 + 1.4633700484409928e-03 -2 -3 545 -7.6617081649601460e-03 + + 2.1033559739589691e-01 -1.5317709743976593e-01 + 2.3481769859790802e-01 -3.7187078595161438e-01 + <_> + + 2 1 546 -1.7770569771528244e-02 0 -1 547 + 8.8388901203870773e-03 -2 -3 548 -1.0058529675006866e-02 + + -1.6414129734039307e-01 4.8245888948440552e-01 + -5.4388159513473511e-01 2.8127178549766541e-01 + <_> + + 1 0 549 2.8392190579324961e-03 -1 2 550 + -7.8546267468482256e-04 -2 -3 551 4.2725168896140531e-05 + + -3.8577800989151001e-01 -3.2860949635505676e-01 + -4.6654768288135529e-02 2.7741169929504395e-01 + <_> + + 1 0 552 5.1506902091205120e-03 -1 2 553 + -8.3640925586223602e-03 -2 -3 554 -8.8340323418378830e-03 + + 2.7348038554191589e-01 1.4315670728683472e-01 + 5.4049361497163773e-02 -3.6266559362411499e-01 + <_> + 16 + -1.3905019760131836e+00 + + <_> + + 1 2 555 1.7114889621734619e-01 0 -1 556 + 3.2740959431976080e-03 -2 -3 557 4.8062200658023357e-03 + + -5.5645358562469482e-01 5.5018130689859390e-02 + 1.1190200224518776e-02 7.9551488161087036e-01 + <_> + + 2 1 558 1.8143800552934408e-03 0 -1 559 + -4.2795971035957336e-01 -2 -3 560 -6.3261981122195721e-03 + + 5.8408319950103760e-01 -1.3940179720520973e-02 + 1.6659989953041077e-01 -5.0161522626876831e-01 + <_> + + 1 2 561 1.0702019557356834e-02 0 -1 562 + 7.3792198672890663e-03 -2 -3 563 4.8895571380853653e-03 + + -4.0653520822525024e-01 1.2877050042152405e-01 + 4.3990871310234070e-01 -7.8997397422790527e-01 + <_> + + 1 2 564 1.0012320242822170e-02 0 -1 565 + 3.4356310963630676e-01 -2 -3 566 -7.2859530337154865e-03 + + -2.5616368651390076e-01 4.6377441287040710e-01 + 5.8014488220214844e-01 -5.4609451442956924e-02 + <_> + + 0 1 567 -1.5099609736353159e-03 2 -1 568 + 2.9597719549201429e-04 -2 -3 569 1.0984730033669621e-04 + + -6.4054518938064575e-01 3.8956710696220398e-01 + -3.4113371372222900e-01 1.1111719906330109e-01 + <_> + + 0 1 570 -3.2580990809947252e-03 -1 2 571 + -3.8750080857425928e-03 -2 -3 572 1.4542469754815102e-02 + + -7.3414462804794312e-01 -6.3508582115173340e-01 + 1.7632520198822021e-01 -6.6695272922515869e-01 + <_> + + 1 0 573 2.6616070419549942e-02 2 -1 574 + 5.2236141636967659e-03 -2 -3 575 5.8677811175584793e-03 + + -7.5831902027130127e-01 -6.2622100114822388e-01 + -3.1810950487852097e-02 4.1031879186630249e-01 + <_> + + 2 1 576 -1.0499180061742663e-03 0 -1 577 + 2.3986180312931538e-03 -2 -3 578 1.1009530164301395e-02 + + -5.2936470508575439e-01 2.2620279341936111e-02 + 3.0528450012207031e-01 -7.4659830331802368e-01 + <_> + + 0 1 579 -2.3957889527082443e-02 -1 2 580 + -3.6849190946668386e-03 -2 -3 581 3.4864700865000486e-03 + + -5.8027571439743042e-01 3.0985590815544128e-01 + -3.1498908996582031e-01 1.3219730556011200e-01 + <_> + + 0 1 582 -1.9150340557098389e-01 -1 2 583 + -8.0496361479163170e-03 -2 -3 584 1.2236339971423149e-02 + + 4.3646478652954102e-01 1.7165799438953400e-01 + -3.6382019519805908e-01 2.3967529833316803e-01 + <_> + + 0 1 585 -2.0347100216895342e-03 -1 2 586 + -5.5528031662106514e-03 -2 -3 587 -3.2379259355366230e-03 + + -5.9768581390380859e-01 -5.4164600372314453e-01 + -5.3870290517807007e-01 1.8444229662418365e-01 + <_> + + 1 0 588 9.0606305748224258e-03 -1 2 589 + -4.1239038109779358e-03 -2 -3 590 3.5246899351477623e-03 + + 3.1039738655090332e-01 1.8052390217781067e-01 + -4.7347640991210938e-01 1.5349459834396839e-02 + <_> + + 1 0 591 5.2378959953784943e-03 -1 2 592 + -9.4280708581209183e-03 -2 -3 593 -7.9351589083671570e-03 + + -4.5859739184379578e-01 -6.3323330879211426e-01 + -6.1539369821548462e-01 1.6920439898967743e-01 + <_> + + 0 1 594 -7.7211041934788227e-03 2 -1 595 + 9.0800300240516663e-03 -2 -3 596 -4.3125250376760960e-03 + + -6.5861612558364868e-01 -7.1446138620376587e-01 + 3.4336578845977783e-01 -4.6265859156847000e-02 + <_> + + 1 0 597 2.3179050534963608e-02 -1 2 598 + -2.1390080451965332e-02 -2 -3 599 -2.3761409521102905e-01 + + 3.6338710784912109e-01 1.8276840448379517e-01 + 6.1675137281417847e-01 -3.4261471033096313e-01 + <_> + + 1 0 600 2.1705040708184242e-03 -1 2 601 + 7.8210679930634797e-05 -2 -3 602 5.5145919322967529e-03 + + 3.0056789517402649e-01 -3.4116759896278381e-01 + 2.3386859893798828e-01 -4.2150521278381348e-01 + <_> + 25 + -1.3378640413284302e+00 + + <_> + + 1 2 603 -2.2743379697203636e-02 0 -1 604 + 1.8450849456712604e-03 -2 -3 605 1.3338179886341095e-01 + + -8.9552268385887146e-02 7.4778342247009277e-01 + -4.4504231214523315e-01 -1.7580920830368996e-02 + <_> + + 0 1 606 6.3608489930629730e-02 -1 2 607 + -2.5199958682060242e-01 -2 -3 608 -1.2144230306148529e-01 + + -3.7739220261573792e-01 4.9088031053543091e-01 + 6.3825917243957520e-01 -1.1822170019149780e-01 + <_> + + 1 0 609 2.6287150103598833e-03 2 -1 610 + 3.0568530783057213e-03 -2 -3 611 8.1901780504267663e-05 + + -4.6926748752593994e-01 -6.5101218223571777e-01 + -1.1639259755611420e-01 3.0188819766044617e-01 + <_> + + 1 0 612 -1.6189720481634140e-03 2 -1 613 + 1.8283469835296273e-03 -2 -3 614 -3.9073298685252666e-03 + + -2.0891909301280975e-01 -1.9859300553798676e-01 + -3.4454259276390076e-01 3.7140819430351257e-01 + <_> + + 0 1 615 8.3928240928798914e-04 2 -1 616 + 3.7175789475440979e-03 -2 -3 617 5.1694628782570362e-03 + + -1.5356570482254028e-01 -5.0904238224029541e-01 + 3.5618001222610474e-01 -5.5773228406906128e-01 + <_> + + 1 0 618 2.5797619018703699e-03 -1 2 619 + -6.0318140313029289e-03 -2 -3 620 6.4257727935910225e-03 + + -4.2096439003944397e-01 -4.3999868631362915e-01 + 1.8873579800128937e-01 -4.5191749930381775e-01 + <_> + + 1 0 621 3.4354510717093945e-03 2 -1 622 + 2.3672808893024921e-03 -2 -3 623 -2.0294289570301771e-03 + + 2.7395468950271606e-01 2.3808500170707703e-01 + -4.7586150467395782e-02 -4.8159629106521606e-01 + <_> + + 0 1 624 -4.8436429351568222e-03 2 -1 625 + 3.0318649951368570e-03 -2 -3 626 -1.1691249907016754e-02 + + -4.9325150251388550e-01 -4.7109460830688477e-01 + -5.8763760328292847e-01 1.4840489625930786e-01 + <_> + + 1 0 627 6.5642758272588253e-05 2 -1 628 + -6.9199966674204916e-05 -2 -3 629 -2.8953890432603657e-04 + + 2.0787779986858368e-01 -4.2199170589447021e-01 + -3.4657689929008484e-01 2.4809280037879944e-01 + <_> + + 1 2 630 4.0080421604216099e-03 0 -1 631 + 5.0496991025283933e-04 -2 -3 632 -8.1637818366289139e-03 + + -2.9731631278991699e-01 6.3133187592029572e-02 + 6.3499641418457031e-01 -1.4965349435806274e-01 + <_> + + 1 0 633 4.9255997873842716e-03 -1 2 634 + -1.9985990598797798e-02 -2 -3 635 6.5322928130626678e-03 + + -5.8709067106246948e-01 4.1946971416473389e-01 + -1.3393980264663696e-01 2.6131281256675720e-01 + <_> + + 1 0 636 5.1231118850409985e-03 2 -1 637 + -4.0335211087949574e-04 -2 -3 638 2.9234900139272213e-03 + + -3.6397430300712585e-01 -1.1776120215654373e-01 + -1.2529510073363781e-02 4.6132311224937439e-01 + <_> + + 1 0 639 3.5967670381069183e-02 2 -1 640 + 6.5072569996118546e-03 -2 -3 641 -1.0821050032973289e-02 + + 4.5991379022598267e-01 3.2189390063285828e-01 + 3.0423519015312195e-01 -2.0769970118999481e-01 + <_> + + 0 1 642 -3.7279170937836170e-03 -1 2 643 + -8.9352466166019440e-03 -2 -3 644 3.9792140014469624e-03 + + -4.7056239843368530e-01 3.1361898779869080e-01 + -1.8559350073337555e-01 3.0811190605163574e-01 + <_> + + 1 0 645 1.9110339926555753e-03 -1 2 646 + -6.8130958825349808e-03 -2 -3 647 -6.4241990912705660e-04 + + -4.4997429847717285e-01 -4.4663950800895691e-01 + 2.5373989343643188e-01 -6.7794866859912872e-02 + <_> + + 1 0 648 4.8487721942365170e-03 -1 2 649 + -2.2816660348325968e-03 -2 -3 650 -1.1166459880769253e-03 + + 2.1777780354022980e-01 7.4151009321212769e-02 + 1.3762679696083069e-01 -4.5716550946235657e-01 + <_> + + 1 0 651 -5.7191308587789536e-03 2 -1 652 + 1.9458220340311527e-03 -2 -3 653 1.7544110305607319e-03 + + -2.0206199586391449e-01 5.1613742113113403e-01 + 1.8209919333457947e-01 -2.4927709996700287e-01 + <_> + + 1 0 654 6.5033212304115295e-03 2 -1 655 + 2.3260021116584539e-03 -2 -3 656 -5.0675291568040848e-03 + + -6.0831350088119507e-01 -4.5783790946006775e-01 + -4.6264541149139404e-01 1.3114589452743530e-01 + <_> + + 1 2 657 -1.4921430265530944e-03 0 -1 658 + -1.3755200430750847e-02 -2 -3 659 6.3531019259244204e-04 + + -4.3485641479492188e-01 2.0381599664688110e-01 + -3.2480859756469727e-01 1.9679710268974304e-01 + <_> + + 1 2 660 -1.0971709853038192e-03 0 -1 661 + 2.1464130841195583e-03 -2 -3 662 1.0343589819967747e-02 + + 2.2354440391063690e-01 -2.5036358833312988e-01 + -2.7500569820404053e-01 3.2847368717193604e-01 + <_> + + 0 1 663 -1.3076810538768768e-01 -1 2 664 + -8.7650436908006668e-03 -2 -3 665 -3.0066180624999106e-04 + + -7.7974641323089600e-01 3.8356649875640869e-01 + -3.0849298834800720e-01 5.5713050067424774e-02 + <_> + + 0 1 666 -1.0776310227811337e-02 2 -1 667 + 7.3227831162512302e-03 -2 -3 668 -2.1263879537582397e-01 + + -5.3079968690872192e-01 3.0776378512382507e-01 + -6.5190672874450684e-01 2.3253040853887796e-03 + <_> + + 1 0 669 6.5717170946300030e-03 -1 2 670 + -1.6367210075259209e-02 -2 -3 671 -1.5086789615452290e-02 + + 2.4296599626541138e-01 4.0867790579795837e-01 + 1.5299239754676819e-01 -2.5561499595642090e-01 + <_> + + 1 2 672 4.5563760213553905e-03 0 -1 673 + 7.2980518452823162e-03 -2 -3 674 2.3971209302544594e-02 + + 8.6251303553581238e-02 -5.1425570249557495e-01 + -6.8491697311401367e-01 3.9260080456733704e-01 + <_> + + 1 0 675 3.5279770381748676e-03 -1 2 676 + -5.4452237673103809e-03 -2 -3 677 8.1267702626064420e-04 + + -5.8989018201828003e-01 4.1997981071472168e-01 + -2.5605329871177673e-01 7.9393006861209869e-02 + <_> + 30 + -1.2140669822692871e+00 + + <_> + + 1 2 678 -2.7691459283232689e-02 0 -1 679 + 1.3043059734627604e-03 -2 -3 680 -1.9430460408329964e-02 + + -1.3037249445915222e-01 7.8108358383178711e-01 + 1.4480729587376118e-02 -3.7184581160545349e-01 + <_> + + 2 1 681 -1.2235040217638016e-01 0 -1 682 + -9.8456647247076035e-03 -2 -3 683 -7.4350096285343170e-02 + + 2.8437229990959167e-01 -2.3675830662250519e-01 + 5.8174878358840942e-01 -2.8041550889611244e-02 + <_> + + 0 1 684 5.4055661894381046e-03 -1 2 685 + -3.7805580068379641e-03 -2 -3 686 -6.2997087836265564e-02 + + -3.3748638629913330e-01 -4.6232721209526062e-01 + 4.2070108652114868e-01 -1.6759809805080295e-03 + <_> + + 0 1 687 -5.5793630890548229e-03 -1 2 688 + -2.2814329713582993e-03 -2 -3 689 3.9111520163714886e-03 + + -6.4612352848052979e-01 -4.6796101331710815e-01 + -2.5594810023903847e-02 3.3460310101509094e-01 + <_> + + 2 1 690 -3.5144959110766649e-03 0 -1 691 + -5.8226250112056732e-03 -2 -3 692 -3.5309740342199802e-03 + + 1.1143500357866287e-01 -3.0549728870391846e-01 + -3.7789401412010193e-01 2.9324159026145935e-01 + <_> + + 2 1 693 -1.6653330530971289e-03 0 -1 694 + -5.3326018154621124e-02 -2 -3 695 8.0891316756606102e-03 + + 1.7236860096454620e-01 -3.9026060700416565e-01 + -1.6290800645947456e-02 3.9434731006622314e-01 + <_> + + 0 1 696 -3.7783260922878981e-03 2 -1 697 + 6.9123809225857258e-03 -2 -3 698 -2.1676100790500641e-02 + + -5.9947258234024048e-01 3.4755259752273560e-01 + 3.3966198563575745e-01 -1.2729069590568542e-01 + <_> + + 1 0 699 4.8390422016382217e-03 -1 2 700 + -8.3583313971757889e-03 -2 -3 701 3.7209360743872821e-04 + + -3.6860859394073486e-01 3.6083450913429260e-01 + 5.5149830877780914e-02 -3.8888710737228394e-01 + <_> + + 1 0 702 2.4114940315485001e-03 -1 2 703 + -2.2250239271670580e-03 -2 -3 704 5.9994249604642391e-03 + + -3.4846460819244385e-01 2.5639998912811279e-01 + -3.3086439967155457e-01 6.3943088054656982e-02 + <_> + + 1 0 705 1.2653459794819355e-02 2 -1 706 + 9.6980258822441101e-03 -2 -3 707 4.6688161790370941e-02 + + -6.5382891893386841e-01 3.2730111479759216e-01 + 6.1174212023615837e-03 -5.0968867540359497e-01 + <_> + + 1 0 708 1.7876239726319909e-03 2 -1 709 + 1.2315230444073677e-02 -2 -3 710 -5.9714429080486298e-03 + + 2.5808030366897583e-01 1.8367570638656616e-01 + 9.3017883598804474e-02 -3.3489298820495605e-01 + <_> + + 0 1 711 -4.6226778067648411e-03 -1 2 712 + -1.8949989229440689e-02 -2 -3 713 -2.6787531375885010e-01 + + -6.0853439569473267e-01 -6.2188267707824707e-01 + -4.4505828619003296e-01 1.1461599916219711e-01 + <_> + + 1 2 714 5.3505371324717999e-03 0 -1 715 + 2.8202211251482368e-04 -2 -3 716 -2.1514539548661560e-04 + + -3.3214330673217773e-01 1.1352939903736115e-01 + 3.9949831366539001e-01 -7.2412580251693726e-02 + <_> + + 0 1 717 -7.1091961581259966e-04 -1 2 718 + 3.9453650970244780e-05 -2 -3 719 -1.5662070363759995e-02 + + -3.4575951099395752e-01 -1.4114260673522949e-01 + 4.7070771455764771e-01 8.7163902819156647e-02 + <_> + + 2 1 720 -2.9816610738635063e-02 0 -1 721 + 8.2333059981465340e-04 -2 -3 722 -4.9664578400552273e-03 + + -1.4977900311350822e-02 -4.1764840483665466e-01 + 4.4018781185150146e-01 -2.0097310189157724e-03 + <_> + + 1 2 723 9.6796536818146706e-03 0 -1 724 + 1.4388150302693248e-03 -2 -3 725 -6.5185758285224438e-04 + + -2.8451511263847351e-01 1.1680959910154343e-01 + 3.4258028864860535e-01 -2.7020359039306641e-01 + <_> + + 0 1 726 -4.6871218830347061e-02 -1 2 727 + -2.2867210209369659e-02 -2 -3 728 -1.1887500295415521e-03 + + -3.9659130573272705e-01 -3.4727048873901367e-01 + 2.6036709547042847e-01 -4.2848858982324600e-02 + <_> + + 1 0 729 4.3433779501356184e-04 -1 2 730 + -2.0600060001015663e-02 -2 -3 731 3.2824440859258175e-03 + + -2.2835609316825867e-01 -5.0135952234268188e-01 + 1.6683070361614227e-01 -5.0252157449722290e-01 + <_> + + 0 1 732 -1.9087310880422592e-02 -1 2 733 + -1.1216020211577415e-02 -2 -3 734 7.7710166573524475e-02 + + 4.1381299495697021e-01 1.5498070418834686e-01 + -2.9895618557929993e-01 1.7541980743408203e-01 + <_> + + 0 1 735 3.1873160041868687e-03 -1 2 736 + -1.0656990110874176e-01 -2 -3 737 -5.1779888570308685e-02 + + -8.5479579865932465e-02 -5.1295292377471924e-01 + -5.0179839134216309e-01 3.8466781377792358e-01 + <_> + + 1 0 738 1.5107400249689817e-03 2 -1 739 + 3.1244980636984110e-03 -2 -3 740 -1.3240240514278412e-03 + + -3.3874571323394775e-01 -2.1653899550437927e-01 + 3.3594998717308044e-01 -1.2085800059139729e-02 + <_> + + 0 1 741 -1.6975030303001404e-02 2 -1 742 + 7.9635268775746226e-04 -2 -3 743 -8.4425378590822220e-03 + + 5.1493197679519653e-01 -2.2367909550666809e-01 + -5.4637181758880615e-01 1.2477649748325348e-01 + <_> + + 1 0 744 1.4797519892454147e-02 2 -1 745 + 3.8537830114364624e-03 -2 -3 746 -2.5684939697384834e-02 + + 4.0930178761482239e-01 2.5966641306877136e-01 + 4.6507820487022400e-02 -3.1387579441070557e-01 + <_> + + 0 1 747 -1.9678380340337753e-03 2 -1 748 + 1.9392849644646049e-03 -2 -3 749 -5.7980217970907688e-03 + + -3.4348770976066589e-01 -2.3071029782295227e-01 + -4.2302230000495911e-01 1.8470630049705505e-01 + <_> + + 1 0 750 6.0432781465351582e-03 2 -1 751 + 2.2162510140333325e-04 -2 -3 752 -2.5901809567585588e-04 + + 2.0985080301761627e-01 -3.4345629811286926e-01 + -4.0245899558067322e-01 9.6283361315727234e-02 + <_> + + 0 1 753 -4.6646450646221638e-03 -1 2 754 + 1.8331389874219894e-03 -2 -3 755 -5.4393261671066284e-03 + + -4.0147981047630310e-01 -7.4128046631813049e-02 + -7.1304339170455933e-01 2.5141170620918274e-01 + <_> + + 1 2 756 -4.2101307772099972e-03 0 -1 757 + -8.6573585867881775e-03 -2 -3 758 -2.5619829073548317e-02 + + 5.5250108242034912e-01 -8.8310241699218750e-02 + 4.0513488650321960e-01 -1.2086849659681320e-01 + <_> + + 0 1 759 -9.3565601855516434e-03 -1 2 760 + -9.7968382760882378e-04 -2 -3 761 4.5081991702318192e-02 + + 1.4859180152416229e-01 1.5276379883289337e-01 + -3.3007758855819702e-01 4.9553450942039490e-01 + <_> + + 1 0 762 2.0435510668903589e-03 -1 2 763 + -5.1532210782170296e-03 -2 -3 764 2.5609789881855249e-03 + + -5.4895031452178955e-01 -5.9945631027221680e-01 + -3.6197409033775330e-02 2.5463849306106567e-01 + <_> + + 2 1 765 -2.8830259107053280e-03 0 -1 766 + 2.4457499966956675e-04 -2 -3 767 3.4641250967979431e-03 + + 3.6667680740356445e-01 -8.9348360896110535e-02 + -2.2523890435695648e-01 1.6340459883213043e-01 + <_> + 23 + -1.3826370239257812e+00 + + <_> + + 2 1 768 6.3124410808086395e-03 0 -1 769 + -2.9899911023676395e-03 -2 -3 770 -5.2643599919974804e-03 + + 8.2071298360824585e-01 5.6462198495864868e-02 + 1.8240800499916077e-01 -4.2487311363220215e-01 + <_> + + 1 2 771 2.4592089466750622e-03 0 -1 772 + 4.2719349265098572e-01 -2 -3 773 3.0295109376311302e-02 + + -3.3858558535575867e-01 1.5100230276584625e-01 + 7.8724241256713867e-01 -5.8373618125915527e-01 + <_> + + 1 0 774 5.7569369673728943e-03 -1 2 775 + -9.9140219390392303e-03 -2 -3 776 8.0783478915691376e-03 + + 4.2810270190238953e-01 3.5321989655494690e-01 + -4.0107539296150208e-01 1.2523290514945984e-01 + <_> + + 0 1 777 -3.5829450935125351e-02 2 -1 778 + 3.0664550140500069e-02 -2 -3 779 -1.3575930148363113e-02 + + -3.8963070511817932e-01 6.7701917886734009e-01 + 3.0789810419082642e-01 -1.1214990168809891e-01 + <_> + + 0 1 780 -3.1188609078526497e-02 -1 2 781 + -1.7885420471429825e-02 -2 -3 782 2.3879480431787670e-04 + + -5.0550907850265503e-01 -5.2990978956222534e-01 + 2.6112490892410278e-01 -1.2882560491561890e-01 + <_> + + 1 0 783 8.5746757686138153e-03 2 -1 784 + 2.3016470950096846e-03 -2 -3 785 4.6683140099048615e-03 + + 4.8921179771423340e-01 1.5979060530662537e-01 + -3.8685420155525208e-01 2.4002879858016968e-01 + <_> + + 1 0 786 5.3485399112105370e-03 2 -1 787 + 2.3726709187030792e-02 -2 -3 788 -3.0209170654416084e-04 + + 3.4825628995895386e-01 5.2329671382904053e-01 + -4.4047841429710388e-01 -3.3358339220285416e-02 + <_> + + 0 1 789 -1.6881260275840759e-01 -1 2 790 + -1.8069280486088246e-04 -2 -3 791 -2.7342080138623714e-03 + + -6.5631157159805298e-01 -2.7557009458541870e-01 + 4.0996900200843811e-01 3.1245049089193344e-02 + <_> + + 2 1 792 -3.1896680593490601e-03 0 -1 793 + -1.6777559649199247e-03 -2 -3 794 7.5925810961052775e-04 + + 3.1674280762672424e-01 -1.3047559559345245e-01 + 8.2382179796695709e-02 7.4721777439117432e-01 + <_> + + 1 2 795 1.7604179680347443e-02 0 -1 796 + -2.5936108827590942e-01 -2 -3 797 -2.4794649798423052e-03 + + 2.6953551173210144e-01 -3.3992108702659607e-01 + 5.0643271207809448e-01 2.7994990348815918e-02 + <_> + + 0 1 798 -5.7244639843702316e-02 -1 2 799 + -2.9133851057849824e-04 -2 -3 800 3.0808679759502411e-02 + + -6.9636821746826172e-01 -3.1919568777084351e-01 + 1.3237810134887695e-01 -7.6749938726425171e-01 + <_> + + 1 0 801 2.8046660125255585e-02 2 -1 802 + -3.7829200737178326e-03 -2 -3 803 -1.3911469839513302e-02 + + 6.9832587242126465e-01 -2.1438920497894287e-01 + 3.3778458833694458e-01 -9.6943713724613190e-02 + <_> + + 0 1 804 -9.6410012338310480e-04 -1 2 805 + -4.1028819978237152e-03 -2 -3 806 7.6512782834470272e-04 + + 2.7303680777549744e-01 1.8931980431079865e-01 + -3.2082849740982056e-01 8.1871077418327332e-02 + <_> + + 0 1 807 -2.2203559638001025e-04 -1 2 808 + -2.5135980104096234e-04 -2 -3 809 -1.7842829402070493e-04 + + -2.9679200053215027e-01 -2.7259480953216553e-01 + -2.2551620006561279e-01 2.9105350375175476e-01 + <_> + + 1 0 810 2.2679679095745087e-02 -1 2 811 + -1.4839429641142488e-03 -2 -3 812 -9.7775906324386597e-02 + + 6.0594111680984497e-01 5.8346527814865112e-01 + -5.1989138126373291e-01 -2.1351039409637451e-02 + <_> + + 2 1 813 -2.1942430175840855e-03 0 -1 814 + 9.6272170543670654e-02 -2 -3 815 2.5899629108607769e-03 + + -2.3860040307044983e-01 4.5208680629730225e-01 + -3.2299709320068359e-01 2.3171809315681458e-01 + <_> + + 1 0 816 5.4749320261180401e-03 -1 2 817 + -1.4976410195231438e-02 -2 -3 818 -7.3499558493494987e-03 + + 2.6661419868469238e-01 -4.7525641322135925e-01 + 3.6936700344085693e-01 -1.0437080264091492e-01 + <_> + + 1 0 819 8.0258701927959919e-04 -1 2 820 + -3.1779240816831589e-03 -2 -3 821 -1.6361019515898079e-04 + + -2.6545119285583496e-01 -2.6746180653572083e-01 + -1.3902419805526733e-01 2.9700610041618347e-01 + <_> + + 1 0 822 -3.0408808961510658e-03 -1 2 823 + -1.2945629656314850e-02 -2 -3 824 -1.7983650788664818e-02 + + -1.0607139766216278e-01 -4.2864450812339783e-01 + 5.3250139951705933e-01 6.2068658880889416e-03 + <_> + + 1 0 825 3.5721210297197104e-03 2 -1 826 + 3.3481561113148928e-03 -2 -3 827 -2.7103780303150415e-04 + + 2.8643238544464111e-01 5.2708417177200317e-01 + -4.0083900094032288e-01 -1.1597709730267525e-02 + <_> + + 0 1 828 -3.5315480083227158e-02 -1 2 829 + -3.3448180183768272e-03 -2 -3 830 -3.6211799830198288e-02 + + -6.4248001575469971e-01 1.6799710690975189e-01 + -4.4045579433441162e-01 7.2158249095082283e-03 + <_> + + 1 0 831 9.7624881891533732e-04 2 -1 832 + 3.9304429083131254e-04 -2 -3 833 -9.0960100293159485e-02 + + -3.3223769068717957e-01 -2.9518169164657593e-01 + -2.6596671342849731e-01 1.9091020524501801e-01 + <_> + + 0 1 834 -9.7260335460305214e-03 2 -1 835 + 6.3109961338341236e-03 -2 -3 836 -1.8113269470632076e-04 + + 4.3416848778724670e-01 3.6779248714447021e-01 + -3.8609200716018677e-01 -2.1463580429553986e-02 + <_> + 33 + -1.2412749528884888e+00 + + <_> + + 2 1 837 2.1084180101752281e-02 0 -1 838 + -2.1115990821272135e-03 -2 -3 839 -3.7253301125019789e-03 + + 7.7905070781707764e-01 -9.1717608273029327e-02 + 3.5618048161268234e-02 -3.5509699583053589e-01 + <_> + + 2 1 840 -4.9224868416786194e-02 0 -1 841 + -1.2256789952516556e-02 -2 -3 842 -1.7591969808563590e-03 + + 2.3374380171298981e-01 -2.0726789534091949e-01 + 7.1231132745742798e-01 1.5468549728393555e-01 + <_> + + 1 0 843 -1.3072569854557514e-02 -1 2 844 + 1.0713989846408367e-02 -2 -3 845 2.7589630335569382e-03 + + -1.7413349449634552e-01 -1.3037489354610443e-01 + 4.3284869194030762e-01 -6.6202241182327271e-01 + <_> + + 0 1 846 -7.0322921965271235e-04 2 -1 847 + 3.2859561033546925e-03 -2 -3 848 -1.5731799649074674e-03 + + -4.2838820815086365e-01 -4.5926880836486816e-01 + -4.6182459592819214e-01 1.7856159806251526e-01 + <_> + + 0 1 849 -6.4174369908869267e-03 -1 2 850 + 1.6610589809715748e-03 -2 -3 851 1.5099810436367989e-02 + + -5.4262351989746094e-01 -6.4273983240127563e-02 + 4.0244659781455994e-01 -6.2330418825149536e-01 + <_> + + 1 0 852 1.6554270405322313e-03 -1 2 853 + -3.3705390524119139e-03 -2 -3 854 -1.0568870231509209e-02 + + -4.5953160524368286e-01 3.0769738554954529e-01 + 2.8306689858436584e-01 -1.5513870120048523e-01 + <_> + + 2 1 855 -1.5460990369319916e-02 0 -1 856 + 1.0563080199062824e-02 -2 -3 857 -2.5313820224255323e-03 + + -2.3533730208873749e-01 1.7863610386848450e-01 + -3.9789968729019165e-01 3.4673249721527100e-01 + <_> + + 1 2 858 -1.1370539665222168e-02 0 -1 859 + 5.1206751959398389e-04 -2 -3 860 2.0633509848266840e-03 + + 3.5862970352172852e-01 -2.6715761423110962e-01 + -2.3807419836521149e-01 8.9544452726840973e-02 + <_> + + 1 0 861 6.1831250786781311e-03 2 -1 862 + -1.5297930222004652e-03 -2 -3 863 -1.4521819539368153e-03 + + -3.4589260816574097e-01 -5.7744260877370834e-02 + -2.2643689811229706e-01 3.3492559194564819e-01 + <_> + + 1 0 864 9.1494834050536156e-03 -1 2 865 + -7.8258356079459190e-03 -2 -3 866 -9.1795083135366440e-03 + + -4.5102459192276001e-01 -2.0574240386486053e-01 + 2.8064918518066406e-01 -1.9400069490075111e-02 + <_> + + 1 0 867 5.2864141762256622e-03 -1 2 868 + -1.1895409785211086e-02 -2 -3 869 -2.9768719105049968e-04 + + 3.8742628693580627e-01 3.3122861385345459e-01 + -4.1473099589347839e-01 -4.6005301177501678e-02 + <_> + + 0 1 870 -9.9406214430928230e-03 -1 2 871 + 1.8322050891583785e-05 -2 -3 872 -8.9074727147817612e-03 + + -6.0510438680648804e-01 -1.5049360692501068e-01 + 4.3751770257949829e-01 4.4532001018524170e-02 + <_> + + 1 2 873 2.7458940166980028e-04 0 -1 874 + -1.0605080024106428e-04 -2 -3 875 1.3431450352072716e-02 + + 3.4243520349264145e-02 -3.1917920708656311e-01 + 5.4285280406475067e-02 5.1082128286361694e-01 + <_> + + 0 1 876 1.7373449736624025e-05 2 -1 877 + 2.6647070626495406e-05 -2 -3 878 2.8135200409451500e-05 + + -1.3858599960803986e-01 2.9074499011039734e-01 + -5.2693158388137817e-01 6.1677869409322739e-02 + <_> + + 1 0 879 -1.4079789980314672e-04 -1 2 880 + -1.0311259888112545e-02 -2 -3 881 -2.7866840362548828e-02 + + -1.4329759776592255e-01 -4.7958651185035706e-01 + 3.8226899504661560e-01 1.0630049742758274e-02 + <_> + + 1 0 882 5.8228662237524986e-03 2 -1 883 + -8.7669547647237778e-03 -2 -3 884 -2.8466230724006891e-03 + + 2.9776591062545776e-01 -1.8124760687351227e-01 + -2.4237589538097382e-01 3.0139160156250000e-01 + <_> + + 1 0 885 6.4540808089077473e-03 2 -1 886 + 6.9421119987964630e-03 -2 -3 887 -7.1991360746324062e-03 + + -4.7911441326141357e-01 -3.8983830809593201e-01 + -3.8099661469459534e-01 1.3023279607295990e-01 + <_> + + 1 0 888 1.3020260259509087e-02 -1 2 889 + -1.0113810189068317e-02 -2 -3 890 -1.9183289259672165e-02 + + 4.9582180380821228e-01 4.5563331246376038e-01 + 3.3518138527870178e-01 -1.1938130110502243e-01 + <_> + + 1 2 891 1.0314499959349632e-03 0 -1 892 + 5.7669691159389913e-05 -2 -3 893 5.0447430461645126e-02 + + -3.5977721214294434e-01 2.6054680347442627e-02 + 1.6761170327663422e-01 -2.8970599174499512e-01 + <_> + + 1 0 894 3.7453400436788797e-03 2 -1 895 + 4.7667181206634268e-05 -2 -3 896 -5.3708041377831250e-05 + + -4.6433079242706299e-01 1.8610210716724396e-01 + 5.6288938969373703e-02 -4.2427191138267517e-01 + <_> + + 0 1 897 -6.5939482301473618e-03 -1 2 898 + -2.1548079326748848e-02 -2 -3 899 1.3188139535486698e-02 + + -4.7423711419105530e-01 -4.2937740683555603e-01 + 1.1677609756588936e-02 4.2440900206565857e-01 + <_> + + 1 0 900 1.2091189622879028e-02 2 -1 901 + -6.2589373555965722e-05 -2 -3 902 1.9446300575509667e-03 + + 2.3611229658126831e-01 -2.1822200715541840e-01 + -2.5404209271073341e-02 4.2902240157127380e-01 + <_> + + 1 0 903 7.7299331314861774e-03 -1 2 904 + -3.7915860302746296e-03 -2 -3 905 4.3860040605068207e-03 + + -5.3524547815322876e-01 -4.3546271324157715e-01 + 1.2576849758625031e-01 -2.8148999810218811e-01 + <_> + + 1 0 906 -9.4350852305069566e-04 -1 2 907 + -1.1670179665088654e-03 -2 -3 908 2.9260620940476656e-03 + + -1.7022730410099030e-01 2.6141870021820068e-01 + -1.7437639832496643e-01 3.8530299067497253e-01 + <_> + + 1 0 909 1.4593300409615040e-02 2 -1 910 + 7.9177077859640121e-03 -2 -3 911 -3.1372120138257742e-03 + + -5.5104351043701172e-01 2.7703890204429626e-01 + 1.3093240559101105e-01 -1.6954340040683746e-01 + <_> + + 1 2 912 -9.2021061573177576e-04 0 -1 913 + -1.0446259751915932e-02 -2 -3 914 -8.3597414195537567e-03 + + 4.4468599557876587e-01 -3.9477398991584778e-01 + 3.4909680485725403e-01 -1.0887180455029011e-02 + <_> + + 0 1 915 -9.7741633653640747e-03 -1 2 916 + 1.2587079778313637e-02 -2 -3 917 -1.4933859929442406e-03 + + 2.1157720685005188e-01 -1.4542940258979797e-01 + -1.5098230540752411e-01 5.0790101289749146e-01 + <_> + + 0 1 918 -5.0530377775430679e-03 -1 2 919 + -2.5890849065035582e-04 -2 -3 920 4.8418638471048325e-05 + + -2.3845790326595306e-01 -2.5153321027755737e-01 + -2.4533210322260857e-02 3.0376350879669189e-01 + <_> + + 1 0 921 2.3038890212774277e-03 2 -1 922 + 3.6540660075843334e-03 -2 -3 923 -3.3346249256283045e-03 + + 2.8125861287117004e-01 -3.6965739727020264e-01 + -3.0266079306602478e-01 8.8287420570850372e-02 + <_> + + 0 1 924 -1.1975349858403206e-02 -1 2 925 + -1.8564870115369558e-03 -2 -3 926 1.5760740498080850e-03 + + -4.6360239386558533e-01 3.9942011237144470e-01 + -1.1057750135660172e-01 1.6782909631729126e-01 + <_> + + 1 0 927 4.1210349649190903e-02 2 -1 928 + -1.0635109618306160e-02 -2 -3 929 -3.3335660118609667e-03 + + -6.8945991992950439e-01 -9.5825389027595520e-02 + -4.6437320113182068e-01 2.2104820609092712e-01 + <_> + + 0 1 930 -2.4082309100776911e-03 2 -1 931 + 5.5890781804919243e-03 -2 -3 932 1.2177750468254089e-03 + + 2.0128449797630310e-01 -5.2314841747283936e-01 + 3.1367950141429901e-02 -4.1038578748703003e-01 + <_> + + 1 0 933 8.6324941366910934e-03 2 -1 934 + 3.8473210297524929e-03 -2 -3 935 -1.8842349527403712e-03 + + 3.1741571426391602e-01 -4.3851628899574280e-01 + 3.8140851259231567e-01 -6.0103170573711395e-02 + <_> + 41 + -1.2084549665451050e+00 + + <_> + + 1 0 936 -2.3675959557294846e-02 -1 2 937 + -2.0480139646679163e-03 -2 -3 938 8.1840698840096593e-04 + + -3.5308888554573059e-01 6.9878387451171875e-01 + -2.8367671370506287e-01 4.1667369008064270e-01 + <_> + + 1 2 939 1.2784999562427402e-03 0 -1 940 + -3.4423400647938251e-03 -2 -3 941 -7.4483961798250675e-03 + + 3.3807888627052307e-01 -1.6657039523124695e-01 + 6.4591968059539795e-01 -2.2018529474735260e-01 + <_> + + 0 1 942 1.1179470457136631e-02 2 -1 943 + -2.3196099698543549e-01 -2 -3 944 -4.3133709579706192e-02 + + -3.2552671432495117e-01 -8.3167977631092072e-02 + -1.6172540187835693e-01 4.6209758520126343e-01 + <_> + + 1 0 945 -1.9728920597117394e-04 -1 2 946 + -2.3259329609572887e-03 -2 -3 947 -1.0320080444216728e-02 + + -1.5667790174484253e-01 3.6914899945259094e-01 + 4.8015019297599792e-01 -8.9061602950096130e-02 + <_> + + 0 1 948 -2.0040970295667648e-02 -1 2 949 + -2.4495070101693273e-04 -2 -3 950 -1.1836830526590347e-03 + + -5.6967437267303467e-01 -2.3713299632072449e-01 + -3.4671390056610107e-01 1.4475019276142120e-01 + <_> + + 1 0 951 -2.6744368951767683e-03 2 -1 952 + -5.1904888823628426e-03 -2 -3 953 -1.9888129085302353e-02 + + -1.2661710381507874e-01 -6.4648993313312531e-02 + -4.5441371202468872e-01 3.9849451184272766e-01 + <_> + + 0 1 954 -5.7462421245872974e-03 2 -1 955 + 4.4583589769899845e-03 -2 -3 956 -1.2518949806690216e-02 + + -3.6761870980262756e-01 3.8435870409011841e-01 + -6.1902827024459839e-01 1.9050609320402145e-02 + <_> + + 0 1 957 -7.7734276652336121e-02 2 -1 958 + 6.7193829454481602e-03 -2 -3 959 1.6520710196346045e-03 + + 5.5405282974243164e-01 -4.1308841109275818e-01 + 7.3280662298202515e-02 -2.8589090704917908e-01 + <_> + + 1 0 960 2.1226350218057632e-02 2 -1 961 + 1.1231450363993645e-02 -2 -3 962 -1.8163130152970552e-04 + + 3.6871838569641113e-01 3.5591110587120056e-01 + -3.3781459927558899e-01 -8.1584807485342026e-03 + <_> + + 1 0 963 2.8726160526275635e-02 2 -1 964 + 5.0780461169779301e-03 -2 -3 965 -5.1352521404623985e-04 + + -7.2751021385192871e-01 2.6649999618530273e-01 + 1.1073680222034454e-01 -1.8206079304218292e-01 + <_> + + 0 1 966 -3.8125980645418167e-03 2 -1 967 + 9.1425428399816155e-04 -2 -3 968 1.0090490104630589e-03 + + -2.8374129533767700e-01 2.4259260296821594e-01 + 6.0151178389787674e-02 -2.7039301395416260e-01 + <_> + + 0 1 969 -7.8553140163421631e-02 -1 2 970 + -6.5192081965506077e-03 -2 -3 971 2.0706290379166603e-03 + + -5.5804842710494995e-01 2.5557601451873779e-01 + -1.0600800067186356e-01 2.7225118875503540e-01 + <_> + + 1 0 972 1.3555780053138733e-02 -1 2 973 + 7.0873757067602128e-05 -2 -3 974 -1.4444560511037707e-03 + + -4.8073831200599670e-01 -1.3499049842357635e-01 + 4.3762150406837463e-01 4.8329260200262070e-02 + <_> + + 1 0 975 -3.6353049799799919e-03 -1 2 976 + -2.7163419872522354e-03 -2 -3 977 -7.4552530422806740e-03 + + -1.2743209302425385e-01 3.3708488941192627e-01 + 5.4894310235977173e-01 -1.0238330066204071e-01 + <_> + + 1 2 978 1.8306199926882982e-03 0 -1 979 + 3.5198179539293051e-03 -2 -3 980 -3.0126908677630126e-04 + + -2.4612280726432800e-01 1.5894930064678192e-01 + -2.7785000205039978e-01 2.3901990056037903e-01 + <_> + + 2 1 981 3.1999459024518728e-03 0 -1 982 + 1.4862619573250413e-03 -2 -3 983 -1.3004139764234424e-03 + + 4.7738438844680786e-01 -3.1345888972282410e-02 + 7.1047246456146240e-02 -2.1556860208511353e-01 + <_> + + 1 0 984 1.5583000145852566e-02 2 -1 985 + 7.6356581412255764e-03 -2 -3 986 -1.4318820321932435e-03 + + 2.7187249064445496e-01 -5.1074218750000000e-01 + -1.5140180289745331e-01 1.4207449555397034e-01 + <_> + + 1 2 987 -6.7814798094332218e-03 0 -1 988 + -1.1809200048446655e-01 -2 -3 989 -2.8277190402150154e-02 + + -6.9562858343124390e-01 3.3270710706710815e-01 + 1.1135250329971313e-01 -1.7491710186004639e-01 + <_> + + 0 1 990 -3.7033241242170334e-02 -1 2 991 + -4.9177031032741070e-03 -2 -3 992 -2.7518879505805671e-04 + + 2.8885498642921448e-01 -4.0966060757637024e-01 + -3.1160330772399902e-01 6.0995019972324371e-02 + <_> + + 0 1 993 -2.3584270384162664e-03 -1 2 994 + -3.5775059368461370e-03 -2 -3 995 -4.1078119538724422e-03 + + -5.9846490621566772e-01 2.4603059887886047e-01 + 8.5180006921291351e-02 -2.0629020035266876e-01 + <_> + + 1 0 996 1.5300850383937359e-02 -1 2 997 + -1.5483479946851730e-02 -2 -3 998 -5.7852710597217083e-03 + + 3.0057510733604431e-01 -6.8350881338119507e-01 + 2.0100210607051849e-01 -9.0607739984989166e-02 + <_> + + 1 0 999 1.4448310248553753e-02 -1 2 1000 + -3.1330309808254242e-02 -2 -3 1001 -3.0594000127166510e-03 + + 2.6733011007308960e-01 -5.2288150787353516e-01 + 4.0950208902359009e-01 -6.5823979675769806e-02 + <_> + + 0 1 1002 -1.8781309481710196e-03 2 -1 1003 + -5.8503728359937668e-03 -2 -3 1004 2.6462681125849485e-03 + + -2.5463208556175232e-01 -1.2269999831914902e-01 + -7.9216457903385162e-02 2.9203468561172485e-01 + <_> + + 0 1 1005 1.3989449944347143e-03 2 -1 1006 + 9.7635984420776367e-03 -2 -3 1007 -9.4864349812269211e-03 + + 1.2148520350456238e-01 2.7110511064529419e-01 + 1.0176890343427658e-01 -3.2153740525245667e-01 + <_> + + 1 0 1008 1.5739769442006946e-03 2 -1 1009 + 4.9365921877324581e-03 -2 -3 1010 -5.0848699174821377e-04 + + -5.9908610582351685e-01 -3.8752740621566772e-01 + -1.3056530058383942e-01 1.2711940705776215e-01 + <_> + + 0 1 1011 -9.6375271677970886e-02 -1 2 1012 + -8.0375596880912781e-02 -2 -3 1013 -5.4449690505862236e-03 + + -6.8821328878402710e-01 4.1428178548812866e-01 + 8.2179926335811615e-02 -1.8036940693855286e-01 + <_> + + 0 1 1014 -7.6126731000840664e-03 2 -1 1015 + -3.1007949728518724e-03 -2 -3 1016 -2.0799610763788223e-02 + + 1.7513050138950348e-01 -2.1534129977226257e-01 + 2.9026609659194946e-01 -2.1753519773483276e-01 + <_> + + 0 1 1017 -1.7213800549507141e-01 -1 2 1018 + -1.7464880365878344e-03 -2 -3 1019 -6.8416520953178406e-02 + + 2.2739590704441071e-01 1.3240070641040802e-01 + -6.2430542707443237e-01 -1.0549639910459518e-01 + <_> + + 0 1 1020 -1.9070530310273170e-02 -1 2 1021 + -2.8794098761864007e-04 -2 -3 1022 7.3958968278020620e-04 + + 5.5033868551254272e-01 -3.4565579891204834e-01 + 1.8934780359268188e-01 -8.8741242885589600e-02 + <_> + + 0 1 1023 -7.5153419747948647e-03 -1 2 1024 + -1.2848030310124159e-03 -2 -3 1025 1.2194210430607200e-03 + + -4.5797100663185120e-01 1.2825480103492737e-01 + -2.9630279541015625e-01 1.9254499673843384e-01 + <_> + + 1 2 1026 -1.6169670224189758e-01 0 -1 1027 + 1.4747560024261475e-02 -2 -3 1028 -8.4396981401368976e-04 + + -4.4868141412734985e-01 1.3941350579261780e-01 + 2.0387759804725647e-01 -5.6935109198093414e-02 + <_> + + 1 0 1029 -1.2965890346094966e-04 -1 2 1030 + -1.3776419684290886e-02 -2 -3 1031 -9.4375656917691231e-03 + + -1.4722099900245667e-01 2.4039970338344574e-01 + 5.5077737569808960e-01 -1.5877890586853027e-01 + <_> + + 1 0 1032 1.1291690316284075e-04 -1 2 1033 + 6.6032530739903450e-03 -2 -3 1034 2.0985701121389866e-03 + + 1.3769179582595825e-01 -2.5903069972991943e-01 + 2.3297089338302612e-01 -3.7152260541915894e-01 + <_> + + 2 1 1035 -1.8329389858990908e-03 0 -1 1036 + -1.6420709434896708e-03 -2 -3 1037 6.7886798642575741e-03 + + 3.5991749167442322e-01 -1.5401339530944824e-01 + 1.8581290543079376e-01 -6.7269998788833618e-01 + <_> + + 0 1 1038 1.6932019498199224e-03 -1 2 1039 + -1.0055249556899071e-02 -2 -3 1040 -3.1679549720138311e-03 + + -1.3255499303340912e-01 3.8144260644912720e-01 + 3.2224041223526001e-01 -8.5345722734928131e-02 + <_> + + 2 1 1041 2.4724518880248070e-04 0 -1 1042 + -2.4610899854451418e-03 -2 -3 1043 4.2370590381324291e-04 + + 2.4504560232162476e-01 -4.2068049311637878e-01 + 9.6731372177600861e-02 -3.6695280671119690e-01 + <_> + + 1 2 1044 -2.3991330526769161e-03 0 -1 1045 + -1.0543569922447205e-01 -2 -3 1046 -2.9867719858884811e-03 + + -7.3811298608779907e-01 2.8551021218299866e-01 + 1.9291989505290985e-01 -1.4805729687213898e-01 + <_> + + 0 1 1047 -4.0492648258805275e-03 2 -1 1048 + -1.1622729944065213e-03 -2 -3 1049 -2.7857329696416855e-02 + + 1.0766500234603882e-01 -2.7701449394226074e-01 + 3.9593660831451416e-01 -2.0954720675945282e-01 + <_> + + 2 1 1050 8.1511605530977249e-03 0 -1 1051 + 1.5126319602131844e-02 -2 -3 1052 -1.1020600050687790e-01 + + 6.8626463413238525e-02 5.3772068023681641e-01 + -4.9161431193351746e-01 -4.4780239462852478e-02 + <_> + + 1 2 1053 -1.6588929574936628e-03 0 -1 1054 + -3.4530278295278549e-02 -2 -3 1055 1.0060180211439729e-03 + + 3.6734369397163391e-01 -2.5586590170860291e-02 + 2.7465619146823883e-02 -3.4973311424255371e-01 + <_> + + 0 1 1056 -2.8843909502029419e-02 2 -1 1057 + 2.4647780810482800e-04 -2 -3 1058 -7.4189889710396528e-04 + + -6.5100878477096558e-01 -1.8410819768905640e-01 + -9.0942107141017914e-02 2.2521719336509705e-01 + <_> + 37 + -1.2229189872741699e+00 + + <_> + + 1 2 1059 -1.2407599948346615e-02 0 -1 1060 + -1.1902820318937302e-02 -2 -3 1061 -5.5238649249076843e-02 + + 6.8965518474578857e-01 -1.3579159975051880e-01 + -4.4337168335914612e-02 -4.5446300506591797e-01 + <_> + + 1 2 1062 3.3332619350403547e-03 0 -1 1063 + 4.8620607703924179e-03 -2 -3 1064 -3.1632129102945328e-03 + + -3.1873029470443726e-01 7.0181049406528473e-02 + -3.2160758972167969e-01 7.0131868124008179e-01 + <_> + + 1 0 1065 1.8592040240764618e-01 -1 2 1066 + 3.1807690393179655e-03 -2 -3 1067 -9.4139128923416138e-03 + + 3.4192711114883423e-01 -3.3313518762588501e-01 + 3.2091590762138367e-01 -1.2491060048341751e-01 + <_> + + 1 0 1068 6.5205397550016642e-04 2 -1 1069 + -5.0521180965006351e-03 -2 -3 1070 7.6105687767267227e-03 + + -2.3811559379100800e-01 -1.4155420660972595e-01 + 3.2182168960571289e-01 -2.4797810614109039e-01 + <_> + + 0 1 1071 -1.6043110517784953e-03 -1 2 1072 + -2.7449749410152435e-02 -2 -3 1073 5.6960887741297483e-04 + + 1.9883860647678375e-01 -6.9581168889999390e-01 + 5.0723928958177567e-02 -2.9218611121177673e-01 + <_> + + 1 0 1074 2.7564789634197950e-03 2 -1 1075 + -1.1058920063078403e-02 -2 -3 1076 5.1102549768984318e-03 + + 2.0911119878292084e-01 -2.4516950547695160e-01 + -1.0658439993858337e-01 4.0211549401283264e-01 + <_> + + 1 0 1077 4.5064617879688740e-03 2 -1 1078 + 4.2800018563866615e-03 -2 -3 1079 7.8124259598553181e-03 + + -4.6300640702247620e-01 -3.9396348595619202e-01 + 1.4130340516567230e-01 -2.8671020269393921e-01 + <_> + + 1 0 1080 4.4836059212684631e-02 2 -1 1081 + 1.7986740916967392e-02 -2 -3 1082 -6.0726520605385303e-03 + + -5.0257712602615356e-01 3.1318759918212891e-01 + 9.8504282534122467e-02 -2.2500780224800110e-01 + <_> + + 0 1 1083 -1.8578730523586273e-02 2 -1 1084 + 3.5717431455850601e-02 -2 -3 1085 -1.8269789870828390e-03 + + -5.1453977823257446e-01 3.1848269701004028e-01 + 1.4090469479560852e-01 -1.8669110536575317e-01 + <_> + + 0 1 1086 -5.4818098433315754e-03 -1 2 1087 + -6.0164718888700008e-04 -2 -3 1088 9.9322739988565445e-03 + + 1.9321410357952118e-01 -3.8167670369148254e-01 + -5.8519419282674789e-02 4.8970058560371399e-01 + <_> + + 2 1 1089 1.4053160557523370e-03 0 -1 1090 + 5.2271760068833828e-03 -2 -3 1091 -1.4931050129234791e-02 + + 2.5072118639945984e-01 -6.5754747390747070e-01 + 5.5669851601123810e-02 -2.4669079482555389e-01 + <_> + + 1 2 1092 -1.2826359830796719e-02 0 -1 1093 + -2.7587350457906723e-02 -2 -3 1094 -4.7543710097670555e-03 + + -3.2225701212882996e-01 5.6484752893447876e-01 + -4.9142929911613464e-01 -8.8634714484214783e-03 + <_> + + 0 1 1095 -2.7212230488657951e-03 2 -1 1096 + 6.6132671199738979e-03 -2 -3 1097 -1.1435840278863907e-02 + + -5.7900500297546387e-01 4.5554360747337341e-01 + 1.5250509977340698e-01 -1.2167599797248840e-01 + <_> + + 0 1 1098 -1.9095990806818008e-02 2 -1 1099 + -1.2672290205955505e-01 -2 -3 1100 -1.8373519182205200e-02 + + -4.4416400790214539e-01 1.1622429639101028e-01 + 4.1248679161071777e-01 -3.0303838849067688e-01 + <_> + + 0 1 1101 -3.2425698637962341e-01 -1 2 1102 + -3.8764779455959797e-03 -2 -3 1103 -7.5138150714337826e-04 + + 4.4721060991287231e-01 7.5931303203105927e-02 + 1.1976880021393299e-02 -3.6275759339332581e-01 + <_> + + 1 0 1104 6.7106341011822224e-03 -1 2 1105 + -6.5366760827600956e-03 -2 -3 1106 -5.5684632388874888e-04 + + -3.9521178603172302e-01 -3.0311599373817444e-01 + -1.5832960605621338e-01 1.7123879492282867e-01 + <_> + + 0 1 1107 -3.9269351400434971e-03 -1 2 1108 + -1.6322469338774681e-02 -2 -3 1109 5.5038761347532272e-02 + + 2.0034509897232056e-01 4.1271069645881653e-01 + -1.7926050722599030e-01 2.6303529739379883e-01 + <_> + + 1 2 1110 1.0095089673995972e-03 0 -1 1111 + -9.8581332713365555e-03 -2 -3 1112 -7.0780781097710133e-03 + + 2.4884219467639923e-01 -3.9200861006975174e-02 + 3.7243181467056274e-01 -3.7739849090576172e-01 + <_> + + 1 0 1113 2.1169960964471102e-03 2 -1 1114 + 1.5883900225162506e-01 -2 -3 1115 -4.2488988488912582e-02 + + 1.7665450274944305e-01 7.2631222009658813e-01 + 4.8568719625473022e-01 -1.4427030086517334e-01 + <_> + + 0 1 1116 -9.4166352937463671e-05 -1 2 1117 + 8.1764090282376856e-05 -2 -3 1118 5.4165818728506565e-03 + + 1.7045879364013672e-01 -3.1940829753875732e-01 + 9.9846661090850830e-02 -4.1059550642967224e-01 + <_> + + 0 1 1119 -6.1865211464464664e-03 2 -1 1120 + 6.5089072450064123e-05 -2 -3 1121 -6.8352972448337823e-05 + + -3.8492518663406372e-01 1.6319459676742554e-01 + 2.1182140707969666e-01 -2.5311520695686340e-01 + <_> + + 1 2 1122 -4.0968839311972260e-04 0 -1 1123 + 3.5239830613136292e-03 -2 -3 1124 -8.3400387666188180e-05 + + -1.1859580129384995e-01 -7.9780608415603638e-01 + 2.2940699756145477e-01 -3.8782458752393723e-02 + <_> + + 1 2 1125 -2.7096238918602467e-03 0 -1 1126 + -6.8883160129189491e-03 -2 -3 1127 1.1571759823709726e-03 + + -5.9978920221328735e-01 3.4748208522796631e-01 + -1.5406990051269531e-01 1.3573920726776123e-01 + <_> + + 0 1 1128 9.5913361292332411e-04 -1 2 1129 + -1.8333569169044495e-02 -2 -3 1130 2.4258090183138847e-02 + + -1.0236030071973801e-01 -5.5400210618972778e-01 + 1.4270070195198059e-01 7.2077578306198120e-01 + <_> + + 2 1 1131 1.0541410185396671e-02 0 -1 1132 + 9.1231325641274452e-03 -2 -3 1133 -1.4598550042137504e-03 + + 1.9214800000190735e-01 -3.6190611124038696e-01 + 2.8950750827789307e-01 -1.8767410516738892e-01 + <_> + + 0 1 1134 -1.1819070205092430e-02 -1 2 1135 + -3.2446000725030899e-02 -2 -3 1136 -2.3319718893617392e-03 + + -5.3653758764266968e-01 -6.8713748455047607e-01 + -8.8751368224620819e-02 1.5991990268230438e-01 + <_> + + 1 2 1137 -6.5151029266417027e-03 0 -1 1138 + 2.5015550199896097e-03 -2 -3 1139 7.8799802577123046e-04 + + 6.8285889923572540e-02 5.7962691783905029e-01 + -1.9128720462322235e-01 9.7289860248565674e-02 + <_> + + 1 0 1140 6.0783070512115955e-03 -1 2 1141 + -8.7201576679944992e-03 -2 -3 1142 3.5847601247951388e-04 + + -6.1147671937942505e-01 4.7648158669471741e-01 + 9.0117119252681732e-02 -1.6770669817924500e-01 + <_> + + 1 0 1143 -1.3178629800677299e-02 -1 2 1144 + -8.5365071892738342e-02 -2 -3 1145 3.3002009149640799e-03 + + -1.2755720317363739e-01 2.6924338936805725e-01 + -1.8480269610881805e-01 5.8760780096054077e-01 + <_> + + 0 1 1146 -1.1601460166275501e-02 2 -1 1147 + 9.9076535552740097e-03 -2 -3 1148 4.3782261200249195e-03 + + 3.3849120140075684e-01 -5.5809050798416138e-01 + -7.8933097422122955e-02 2.2385579347610474e-01 + <_> + + 0 1 1149 -4.7082178294658661e-02 -1 2 1150 + -3.2685339101590216e-04 -2 -3 1151 7.8715756535530090e-03 + + 6.8917119503021240e-01 1.2139579653739929e-01 + -7.5880296528339386e-02 -6.5191179513931274e-01 + <_> + + 1 2 1152 -3.9275310700759292e-04 0 -1 1153 + -3.4211258753202856e-04 -2 -3 1154 5.6030962150543928e-04 + + -3.4082669019699097e-01 3.7230521440505981e-01 + 1.8275870010256767e-02 -2.7192598581314087e-01 + <_> + + 0 1 1155 -2.4439349770545959e-02 -1 2 1156 + 1.2128120288252831e-02 -2 -3 1157 2.2948130499571562e-03 + + -3.4894740581512451e-01 -4.1957078501582146e-03 + -2.0841300487518311e-02 8.0151557922363281e-01 + <_> + + 1 2 1158 -3.6386020947247744e-03 0 -1 1159 + -6.3949287869036198e-04 -2 -3 1160 2.0897389913443476e-04 + + -2.5389778614044189e-01 3.6606290936470032e-01 + -1.4177979528903961e-01 1.4148280024528503e-01 + <_> + + 2 1 1161 -6.7888460762333125e-05 0 -1 1162 + 3.9580671000294387e-04 -2 -3 1163 1.2493260437622666e-03 + + -2.0807999372482300e-01 2.3690980672836304e-01 + 2.4679720401763916e-01 -2.2032499313354492e-01 + <_> + + 0 1 1164 -4.6679278602823615e-04 -1 2 1165 + 1.1740219779312611e-03 -2 -3 1166 -7.1949949488043785e-03 + + -3.3990928530693054e-01 1.2153220176696777e-01 + 3.3542940020561218e-01 -3.9178979396820068e-01 + <_> + + 1 0 1167 3.2422799267806113e-04 2 -1 1168 + 2.4374879896640778e-02 -2 -3 1169 2.6271429378539324e-03 + + -2.5593858957290649e-01 4.2434880137443542e-01 + 1.0237640142440796e-01 -2.6907420158386230e-01 + <_> + 32 + -1.2001949548721313e+00 + + <_> + + 1 0 1170 -1.8586540594696999e-02 -1 2 1171 + -7.4109081178903580e-03 -2 -3 1172 -5.3711149841547012e-02 + + -3.6523258686065674e-01 7.7427452802658081e-01 + 2.4213680624961853e-01 -3.7803840637207031e-01 + <_> + + 1 2 1173 6.9198510609567165e-03 0 -1 1174 + -3.0759189277887344e-02 -2 -3 1175 -8.9597534388303757e-03 + + 1.3523690402507782e-01 -2.7957341074943542e-01 + -6.0680317878723145e-01 6.9579082727432251e-01 + <_> + + 1 0 1176 7.1816287934780121e-02 2 -1 1177 + -1.1622999794781208e-02 -2 -3 1178 -1.0627550072968006e-03 + + 3.0647501349449158e-01 -2.2690390050411224e-01 + 4.4374391436576843e-01 -3.1824579834938049e-01 + <_> + + 0 1 1179 -7.3452957440167665e-04 -1 2 1180 + -4.9303710460662842e-02 -2 -3 1181 -3.2011170405894518e-03 + + -2.2684609889984131e-01 3.4253200888633728e-01 + 3.0913218855857849e-01 -2.0078240334987640e-01 + <_> + + 2 1 1182 1.4706649817526340e-02 0 -1 1183 + -1.1798519641160965e-01 -2 -3 1184 -1.6695359721779823e-02 + + -9.4517791271209717e-01 5.7428210973739624e-01 + 2.4567030370235443e-01 -1.1707650125026703e-01 + <_> + + 1 2 1185 -6.8853241391479969e-03 0 -1 1186 + 7.8145717270672321e-04 -2 -3 1187 2.7586790919303894e-01 + + 3.9508721232414246e-01 -1.0023059695959091e-01 + -1.4659850299358368e-01 7.7942031621932983e-01 + <_> + + 0 1 1188 -2.6423679664731026e-02 -1 2 1189 + 1.8955089617520571e-03 -2 -3 1190 -5.7396688498556614e-03 + + -3.2860249280929565e-01 1.5046370029449463e-01 + -4.0492990612983704e-01 1.5257360041141510e-01 + <_> + + 0 1 1191 -7.8677870333194733e-03 -1 2 1192 + -1.9029570103157312e-04 -2 -3 1193 2.9406580142676830e-04 + + 2.2024929523468018e-01 -3.7222158908843994e-01 + 1.0350369662046432e-01 -3.6075070500373840e-01 + <_> + + 2 1 1194 -6.1921158339828253e-04 0 -1 1195 + -4.6625699847936630e-02 -2 -3 1196 8.0430079833604395e-05 + + 2.5249621272087097e-01 -3.2340309023857117e-01 + -8.7712243199348450e-02 2.5224068760871887e-01 + <_> + + 1 0 1197 2.9532159678637981e-03 -1 2 1198 + -4.5338911004364491e-03 -2 -3 1199 -1.1544080451130867e-02 + + 4.8171079158782959e-01 -4.5188549160957336e-01 + 2.5434678792953491e-01 -8.4140419960021973e-02 + <_> + + 0 1 1200 1.3043760554865003e-03 -1 2 1201 + -3.4115801099687815e-03 -2 -3 1202 -1.5855060191825032e-03 + + -1.0121349990367889e-01 5.2193498611450195e-01 + 6.8923211097717285e-01 -1.0570000112056732e-01 + <_> + + 0 1 1203 -2.9867749661207199e-02 2 -1 1204 + -2.5652049225755036e-04 -2 -3 1205 -3.9234450086951256e-03 + + -4.3362548947334290e-01 -3.3430889248847961e-02 + -2.5569188594818115e-01 4.4265130162239075e-01 + <_> + + 1 0 1206 4.6491571702063084e-03 -1 2 1207 + -2.7727609872817993e-01 -2 -3 1208 -2.2448340058326721e-01 + + 6.2878167629241943e-01 7.1006447076797485e-01 + 3.0520048737525940e-01 -9.2947281897068024e-02 + <_> + + 2 1 1209 3.8704689592123032e-02 0 -1 1210 + 8.2667707465589046e-04 -2 -3 1211 3.5339579335413873e-04 + + -7.1300238370895386e-01 3.4036791324615479e-01 + -2.7960309386253357e-01 4.1289128363132477e-02 + <_> + + 1 2 1212 1.2603959999978542e-02 0 -1 1213 + -5.5078358855098486e-05 -2 -3 1214 9.1213081032037735e-03 + + 6.5844729542732239e-02 -2.0295199751853943e-01 + 5.0578397512435913e-01 -2.8807151317596436e-01 + <_> + + 0 1 1215 -4.0084728971123695e-03 2 -1 1216 + 4.4780140742659569e-03 -2 -3 1217 -4.7284600441344082e-04 + + 2.1491059660911560e-01 2.1849650144577026e-01 + -6.7471832036972046e-01 -1.0888069868087769e-01 + <_> + + 0 1 1218 -3.7310249172151089e-04 -1 2 1219 + -1.0922510176897049e-02 -2 -3 1220 2.5496890768408775e-02 + + 1.7151309549808502e-01 4.2335990071296692e-01 + -2.3464329540729523e-01 1.9871939718723297e-01 + <_> + + 1 0 1221 7.0709688588976860e-03 -1 2 1222 + 3.5252509405836463e-04 -2 -3 1223 5.8937398716807365e-04 + + -4.3551680445671082e-01 -6.1764400452375412e-02 + -7.9512260854244232e-02 4.0493848919868469e-01 + <_> + + 2 1 1224 -8.7519101798534393e-03 0 -1 1225 + -9.4158039428293705e-04 -2 -3 1226 -8.8366247713565826e-02 + + 7.1111567318439484e-02 -3.1814581155776978e-01 + -5.9796679019927979e-01 1.9428940117359161e-01 + <_> + + 2 1 1227 4.5438520610332489e-03 0 -1 1228 + -1.3041470199823380e-02 -2 -3 1229 3.2197220716625452e-03 + + -2.1855579316616058e-01 3.0563870072364807e-01 + -1.9010399281978607e-01 1.8796740472316742e-01 + <_> + + 1 0 1230 3.2370660454034805e-02 2 -1 1231 + 8.7954197078943253e-03 -2 -3 1232 -8.5182236507534981e-03 + + -1.6135400533676147e-01 6.6259282827377319e-01 + -3.8733869791030884e-01 1.3088770210742950e-01 + <_> + + 1 2 1233 -5.4210029542446136e-02 0 -1 1234 + 2.9004408861510456e-04 -2 -3 1235 -1.2670000083744526e-02 + + -1.8559680320322514e-03 5.0099188089370728e-01 + 2.9727068543434143e-01 -1.6530840098857880e-01 + <_> + + 1 0 1236 3.7995529174804688e-01 -1 2 1237 + -4.8071850091218948e-02 -2 -3 1238 6.4968131482601166e-03 + + 4.2289760708808899e-01 1.1011490225791931e-01 + -2.6050418615341187e-01 1.7244240641593933e-01 + <_> + + 1 0 1239 -2.0901230163872242e-03 -1 2 1240 + -6.2400829046964645e-03 -2 -3 1241 8.5770338773727417e-03 + + -1.4854459464550018e-01 3.5841208696365356e-01 + -2.1481679379940033e-01 2.1504589915275574e-01 + <_> + + 1 2 1242 -6.6754068247973919e-03 0 -1 1243 + -3.8183759897947311e-03 -2 -3 1244 5.5124791106209159e-04 + + -2.3905350267887115e-01 4.4719010591506958e-01 + -2.5307258963584900e-01 3.4307420253753662e-02 + <_> + + 2 1 1245 9.0955598279833794e-03 0 -1 1246 + 1.1171290278434753e-01 -2 -3 1247 -1.7274810234084725e-03 + + -6.5154308080673218e-01 -2.6602389290928841e-02 + 6.1791652441024780e-01 2.7143610641360283e-02 + <_> + + 1 2 1248 7.5292278779670596e-04 0 -1 1249 + -3.1208951259031892e-04 -2 -3 1250 1.3574779732152820e-03 + + -5.5061008781194687e-02 2.7939450740814209e-01 + -2.9496839642524719e-01 2.3769420385360718e-01 + <_> + + 1 0 1251 2.6001129299402237e-02 2 -1 1252 + -5.1486152224242687e-03 -2 -3 1253 -4.1137751191854477e-02 + + 4.8369780182838440e-01 -1.4562819898128510e-01 + -4.8423030972480774e-01 1.9624310731887817e-01 + <_> + + 1 0 1254 1.2921179644763470e-02 2 -1 1255 + 2.9845361132174730e-03 -2 -3 1256 1.2732800096273422e-02 + + 6.0538208484649658e-01 -4.6820640563964844e-01 + -2.9540339484810829e-02 3.6185088753700256e-01 + <_> + + 0 1 1257 -1.0869900143006817e-04 -1 2 1258 + -8.9501799084246159e-04 -2 -3 1259 5.3637558594346046e-03 + + 1.6606490314006805e-01 3.5517621785402298e-02 + -3.5981449484825134e-01 4.2224168777465820e-01 + <_> + + 1 0 1260 1.4909369871020317e-02 -1 2 1261 + -1.0603530099615455e-03 -2 -3 1262 -3.6916081444360316e-04 + + -6.6308712959289551e-01 -3.8903519511222839e-01 + -1.1299440264701843e-01 1.6010889410972595e-01 + <_> + + 0 1 1263 -3.8595579098910093e-04 2 -1 1264 + 5.9791578678414226e-04 -2 -3 1265 1.0427299886941910e-02 + + 1.9961580634117126e-01 -2.5480431318283081e-01 + 1.0820420086383820e-01 -5.4060971736907959e-01 + <_> + 41 + -1.2273980379104614e+00 + + <_> + + 0 1 1266 8.5305199027061462e-03 2 -1 1267 + -7.0295208133757114e-03 -2 -3 1268 1.1181459762156010e-02 + + -2.3412899672985077e-01 -1.3273300230503082e-01 + -1.0306409746408463e-01 8.1993848085403442e-01 + <_> + + 1 0 1269 -3.3347710967063904e-02 2 -1 1270 + -5.7895448990166187e-03 -2 -3 1271 7.5207999907433987e-03 + + -2.0504109561443329e-01 -7.2138823568820953e-02 + 9.2525452375411987e-02 6.4616191387176514e-01 + <_> + + 1 0 1272 5.1975441165268421e-03 2 -1 1273 + 2.7103458996862173e-03 -2 -3 1274 -5.8099921792745590e-02 + + -3.6144751310348511e-01 -3.4319791197776794e-01 + 3.2151529192924500e-01 -3.0232580378651619e-02 + <_> + + 1 2 1275 4.1742541361600161e-04 0 -1 1276 + 5.8975181309506297e-04 -2 -3 1277 1.3578129932284355e-02 + + -2.6612699031829834e-01 1.4442689716815948e-01 + 3.6293990910053253e-02 4.4277408719062805e-01 + <_> + + 0 1 1278 -3.9278618060052395e-03 -1 2 1279 + -1.6465460881590843e-02 -2 -3 1280 -9.0516731142997742e-03 + + -4.2203828692436218e-01 -5.7036012411117554e-01 + -2.4343970417976379e-01 1.2901119887828827e-01 + <_> + + 0 1 1281 -4.0202909149229527e-03 -1 2 1282 + 1.9786891061812639e-03 -2 -3 1283 -2.1167920902371407e-02 + + 3.0336159467697144e-01 -1.1887379735708237e-01 + -5.3209340572357178e-01 3.7618291378021240e-01 + <_> + + 0 1 1284 -1.3314959593117237e-02 2 -1 1285 + -3.0734280124306679e-02 -2 -3 1286 -4.9376720190048218e-01 + + -4.7728979587554932e-01 -1.0171979665756226e-01 + -4.9745380878448486e-01 1.9965989887714386e-01 + <_> + + 1 0 1287 -2.2439099848270416e-03 -1 2 1288 + -4.3283861130475998e-02 -2 -3 1289 -9.8785851150751114e-05 + + -1.0817500203847885e-01 6.4580261707305908e-01 + 2.6985371112823486e-01 -1.5044610202312469e-01 + <_> + + 1 0 1290 2.8435129672288895e-02 -1 2 1291 + 2.7237860485911369e-03 -2 -3 1292 -4.7562850522808731e-04 + + 2.9883900284767151e-01 -1.8797110021114349e-01 + 2.8433099389076233e-01 -1.2085639685392380e-01 + <_> + + 1 0 1293 3.8944541011005640e-03 2 -1 1294 + 4.3390938080847263e-03 -2 -3 1295 -2.0263839513063431e-02 + + -2.7473360300064087e-01 -3.7163880467414856e-01 + -3.5409209132194519e-01 1.3197909295558929e-01 + <_> + + 0 1 1296 -5.5432569235563278e-02 2 -1 1297 + 5.4974798113107681e-03 -2 -3 1298 -4.8123318701982498e-03 + + -6.3836967945098877e-01 2.4118340015411377e-01 + 1.2418109923601151e-01 -1.8538869917392731e-01 + <_> + + 2 1 1299 1.4174300013110042e-03 0 -1 1300 + -3.3114890102297068e-03 -2 -3 1301 -9.4083733856678009e-03 + + 1.0947279632091522e-01 -3.1438231468200684e-01 + -5.0812500715255737e-01 1.2708969414234161e-01 + <_> + + 1 0 1302 1.6073260456323624e-02 -1 2 1303 + -3.9989468641579151e-03 -2 -3 1304 1.0122359963133931e-03 + + -3.2891270518302917e-01 2.3349060118198395e-01 + -1.7827099561691284e-01 1.6806240379810333e-01 + <_> + + 1 0 1305 1.5654880553483963e-02 2 -1 1306 + 1.3416170142591000e-02 -2 -3 1307 2.4865430314093828e-03 + + 6.6142809391021729e-01 -5.6725960969924927e-01 + 7.0396818220615387e-02 -2.1695409715175629e-01 + <_> + + 0 1 1308 -4.5016291551291943e-03 -1 2 1309 + -2.0310489460825920e-02 -2 -3 1310 2.0448309369385242e-03 + + -2.9001921415328979e-01 -5.5471527576446533e-01 + -7.5903441756963730e-03 3.0112549662590027e-01 + <_> + + 2 1 1311 3.3151761163026094e-03 0 -1 1312 + -1.1767409741878510e-02 -2 -3 1313 -9.0457782149314880e-02 + + -6.5939038991928101e-01 1.9516299664974213e-01 + 2.3783689737319946e-01 -1.6133689880371094e-01 + <_> + + 0 1 1314 -9.4386242562904954e-04 -1 2 1315 + -5.5300429463386536e-02 -2 -3 1316 1.8430839991196990e-03 + + 2.0265130698680878e-01 1.3218100368976593e-01 + -8.5232466459274292e-02 -5.0634711980819702e-01 + <_> + + 2 1 1317 -4.4628758914768696e-03 0 -1 1318 + 9.7493419889360666e-04 -2 -3 1319 -3.1454759300686419e-04 + + -2.7136290073394775e-01 1.5943349897861481e-01 + 2.7965110540390015e-01 -3.2671060413122177e-02 + <_> + + 1 2 1320 -1.6447799280285835e-02 0 -1 1321 + 2.3777380585670471e-02 -2 -3 1322 2.8008338995277882e-03 + + -4.1435249149799347e-03 3.5191389918327332e-01 + -2.2791029512882233e-01 1.8853689730167389e-01 + <_> + + 1 0 1323 1.7503320123068988e-04 -1 2 1324 + 1.3492659491021186e-04 -2 -3 1325 4.8691541451262310e-05 + + -2.1376720070838928e-01 -1.3506560027599335e-01 + -2.7009880542755127e-01 3.2778948545455933e-01 + <_> + + 1 0 1326 2.4542049504816532e-03 -1 2 1327 + -2.3232260718941689e-02 -2 -3 1328 5.2798539400100708e-03 + + 2.6363280415534973e-01 -3.8305589556694031e-01 + -7.7942140400409698e-02 2.4021050333976746e-01 + <_> + + 1 0 1329 7.0398352108895779e-03 2 -1 1330 + 4.0894638746976852e-02 -2 -3 1331 -7.9772479832172394e-02 + + 2.0972409844398499e-01 -7.0987868309020996e-01 + 5.7007771730422974e-01 -6.9354712963104248e-02 + <_> + + 1 0 1332 6.4237392507493496e-04 -1 2 1333 + 1.8864229787141085e-03 -2 -3 1334 -2.5151949375867844e-03 + + -4.0321418642997742e-01 8.4503486752510071e-02 + 7.3963850736618042e-01 -3.7004008889198303e-01 + <_> + + 2 1 1335 9.2179048806428909e-04 0 -1 1336 + -6.6281789913773537e-03 -2 -3 1337 -1.2447969987988472e-02 + + 2.4241310358047485e-01 -2.5563749670982361e-01 + 4.5645469427108765e-01 3.5875100642442703e-02 + <_> + + 1 0 1338 9.8073864355683327e-03 2 -1 1339 + 1.1752230115234852e-02 -2 -3 1340 -4.5835418859496713e-04 + + -3.5728690028190613e-01 2.2477920353412628e-01 + 9.2636883258819580e-02 -2.2759440541267395e-01 + <_> + + 1 0 1341 1.2521909549832344e-02 2 -1 1342 + 5.4397471249103546e-03 -2 -3 1343 -5.8840587735176086e-04 + + -5.0926029682159424e-01 4.6630910038948059e-01 + -2.5326851010322571e-01 4.8585399985313416e-02 + <_> + + 0 1 1344 -8.6136013269424438e-03 2 -1 1345 + 4.8513390356674790e-04 -2 -3 1346 -5.7645072229206562e-04 + + -4.6801608800888062e-01 1.5412229299545288e-01 + 3.3526080846786499e-01 -1.3425140082836151e-01 + <_> + + 0 1 1347 1.5327259898185730e-03 2 -1 1348 + 1.6712940123397857e-04 -2 -3 1349 5.0148408627137542e-04 + + -8.4655933082103729e-02 -2.9512628912925720e-01 + 4.4228151440620422e-01 7.0311659947037697e-03 + <_> + + 0 1 1350 -7.2751182597130537e-04 2 -1 1351 + 1.6298179980367422e-03 -2 -3 1352 -6.5518761985003948e-03 + + 3.6965361237525940e-01 -3.1909099221229553e-01 + -5.0437092781066895e-01 4.8704870045185089e-02 + <_> + + 0 1 1353 -1.8271349370479584e-02 2 -1 1354 + -3.1057938933372498e-01 -2 -3 1355 8.6849008221179247e-04 + + 2.6778510212898254e-01 -1.5646959841251373e-01 + 2.2130140662193298e-01 -2.3309649527072906e-01 + <_> + + 0 1 1356 -1.0790280066430569e-02 2 -1 1357 + -6.7156221484765410e-04 -2 -3 1358 7.9050064086914062e-03 + + -4.1554379463195801e-01 -8.0280020833015442e-02 + 1.7470720410346985e-01 -7.7852571010589600e-01 + <_> + + 2 1 1359 1.2352660298347473e-02 0 -1 1360 + 6.2703549861907959e-02 -2 -3 1361 -7.1864388883113861e-03 + + 4.3160900473594666e-01 -3.9224869012832642e-01 + -5.8003968000411987e-01 -2.5838220492005348e-02 + <_> + + 0 1 1362 -3.8558109663426876e-03 -1 2 1363 + -1.5419459668919444e-03 -2 -3 1364 -2.2120370995253325e-03 + + 1.5963500738143921e-01 1.6741840541362762e-01 + 2.9176110401749611e-02 -2.8822419047355652e-01 + <_> + + 0 1 1365 -2.1434590220451355e-02 2 -1 1366 + -1.9107710104435682e-03 -2 -3 1367 3.5804428160190582e-02 + + -2.2613149881362915e-01 1.0307289659976959e-01 + 7.5381852686405182e-02 -6.3267099857330322e-01 + <_> + + 1 0 1368 1.4067400479689240e-03 -1 2 1369 + 9.6554737538099289e-03 -2 -3 1370 2.4058830738067627e-01 + + 3.7057319283485413e-01 -2.0454670488834381e-01 + 2.0735639333724976e-01 -1.2661419808864594e-01 + <_> + + 1 0 1371 5.2541731856763363e-03 -1 2 1372 + -1.1480560060590506e-03 -2 -3 1373 5.2387482719495893e-04 + + -2.3812450468540192e-01 -1.8807569518685341e-02 + 5.8435738086700439e-01 -7.0002108812332153e-02 + <_> + + 1 0 1374 8.9346221648156643e-04 -1 2 1375 + -1.4664779603481293e-01 -2 -3 1376 6.4734317129477859e-04 + + -2.0343719422817230e-01 4.2429131269454956e-01 + -7.2510123252868652e-02 2.4216009676456451e-01 + <_> + + 1 0 1377 3.7285720463842154e-03 2 -1 1378 + 1.0364309855503961e-04 -2 -3 1379 -4.3523311614990234e-03 + + -4.1690871119499207e-01 1.7091989517211914e-01 + 3.1368499994277954e-01 -1.3387750089168549e-01 + <_> + + 1 2 1380 -8.2644030451774597e-02 0 -1 1381 + -8.3868228830397129e-04 -2 -3 1382 -2.6123419404029846e-02 + + 6.7182201147079468e-01 -4.5429998636245728e-01 + 2.1897830069065094e-01 -3.2377090305089951e-02 + <_> + + 2 1 1383 5.2059517474845052e-04 0 -1 1384 + -2.9154460877180099e-02 -2 -3 1385 -1.1165169999003410e-03 + + -3.6328500509262085e-01 1.6834139823913574e-01 + 1.5818840265274048e-01 -2.3134049773216248e-01 + <_> + + 1 0 1386 -1.1460180394351482e-03 2 -1 1387 + 2.0873030647635460e-02 -2 -3 1388 4.0476579219102859e-02 + + -1.2237170338630676e-01 4.0715441107749939e-01 + -4.8719130456447601e-02 6.1359512805938721e-01 + <_> + 42 + -1.1990439891815186e+00 + + <_> + + 2 1 1389 2.3152550682425499e-02 0 -1 1390 + 9.4490228220820427e-03 -2 -3 1391 1.2632790021598339e-03 + + 1.6217540204524994e-01 8.9458537101745605e-01 + -2.9920589923858643e-01 2.4114310741424561e-01 + <_> + + 1 2 1392 -6.3288196921348572e-02 0 -1 1393 + -5.4630772210657597e-03 -2 -3 1394 -5.3964817197993398e-04 + + 5.8726388216018677e-01 2.8670629486441612e-02 + 2.1043429151177406e-02 -3.3096361160278320e-01 + <_> + + 0 1 1395 -4.3574950098991394e-01 -1 2 1396 + -2.2997299674898386e-03 -2 -3 1397 2.8589849825948477e-03 + + 2.9235550761222839e-01 1.0574100166559219e-01 + -3.3370551466941833e-01 1.6990379989147186e-01 + <_> + + 0 1 1398 -2.1891849115490913e-02 -1 2 1399 + -9.2662516981363297e-03 -2 -3 1400 -1.6625279560685158e-02 + + -6.2861520051956177e-01 -4.3969720602035522e-01 + 4.0394479036331177e-01 1.1343320365995169e-03 + <_> + + 2 1 1401 2.4849560577422380e-03 0 -1 1402 + -1.8093220889568329e-02 -2 -3 1403 -1.5609259717166424e-02 + + -1.5912850201129913e-01 4.4538548588752747e-01 + 6.9278262555599213e-02 -2.2655999660491943e-01 + <_> + + 0 1 1404 -4.3753669597208500e-03 -1 2 1405 + -1.3602689432445914e-04 -2 -3 1406 3.8207470788620412e-04 + + -7.1104782819747925e-01 -1.6582900285720825e-01 + 2.1408109366893768e-01 -1.2310829758644104e-01 + <_> + + 0 1 1407 -5.7698809541761875e-03 -1 2 1408 + -6.5253339707851410e-03 -2 -3 1409 -8.3149597048759460e-02 + + 2.5808620452880859e-01 2.0068170130252838e-01 + -6.4005237817764282e-01 -9.6292853355407715e-02 + <_> + + 0 1 1410 -1.7492580227553844e-03 -1 2 1411 + -3.5885178949683905e-03 -2 -3 1412 2.8363720048218966e-03 + + -2.7996930480003357e-01 -4.2557060718536377e-01 + 1.7105630040168762e-01 -1.1548189818859100e-01 + <_> + + 2 1 1413 3.7369329947978258e-03 0 -1 1414 + 2.0398290827870369e-02 -2 -3 1415 -1.8605329096317291e-02 + + 7.5142003595829010e-02 7.1449148654937744e-01 + 6.6745537519454956e-01 -1.3011719286441803e-01 + <_> + + 1 0 1416 1.2047400232404470e-03 -1 2 1417 + -4.1799237951636314e-03 -2 -3 1418 5.3556780330836773e-03 + + 1.9936279952526093e-01 2.0625339448451996e-01 + -2.1847389638423920e-01 3.9184600114822388e-01 + <_> + + 1 2 1419 -2.3561089765280485e-03 0 -1 1420 + -5.9740748256444931e-02 -2 -3 1421 1.4918210217729211e-03 + + 6.4951920509338379e-01 -2.6147049665451050e-01 + 1.1800879985094070e-01 -3.6518579721450806e-01 + <_> + + 0 1 1422 -2.6466009020805359e-01 -1 2 1423 + -6.3644978217780590e-04 -2 -3 1424 -1.0798840224742889e-01 + + -4.7007301449775696e-01 1.5393650531768799e-01 + 2.8167989850044250e-01 -1.9636960327625275e-01 + <_> + + 0 1 1425 -3.6950930370949209e-04 -1 2 1426 + -7.9222144559025764e-03 -2 -3 1427 -7.1997018530964851e-03 + + -2.5694531202316284e-01 -3.6089059710502625e-01 + 2.1187220513820648e-01 -6.0304410755634308e-02 + <_> + + 1 0 1428 2.7865950018167496e-02 -1 2 1429 + 1.0313779785064980e-04 -2 -3 1430 9.8026450723409653e-04 + + 2.7542260289192200e-01 -2.1113120019435883e-01 + 1.2969830632209778e-01 -3.5925969481468201e-01 + <_> + + 1 0 1431 1.0869160294532776e-02 2 -1 1432 + 1.9162669777870178e-03 -2 -3 1433 -6.9466588320210576e-04 + + -2.8709220886230469e-01 1.9223760068416595e-01 + 2.6802310347557068e-01 -1.5893469750881195e-01 + <_> + + 0 1 1434 -1.5737100038677454e-03 2 -1 1435 + 2.8489651158452034e-03 -2 -3 1436 1.2300360249355435e-03 + + 4.8450559377670288e-01 1.4732420444488525e-01 + -2.2078629583120346e-02 -3.5363599658012390e-01 + <_> + + 0 1 1437 -1.7871359596028924e-03 -1 2 1438 + -7.5124297291040421e-04 -2 -3 1439 -1.5810869634151459e-02 + + 1.5130859613418579e-01 -2.5845149159431458e-01 + 3.9024001359939575e-01 -8.3249032497406006e-02 + <_> + + 2 1 1440 -8.5817109793424606e-03 0 -1 1441 + 1.4925940334796906e-01 -2 -3 1442 5.0973348319530487e-02 + + 6.5285183489322662e-02 -4.4836780428886414e-01 + -5.9802252054214478e-01 7.6314812898635864e-01 + <_> + + 2 1 1443 -1.4699130551889539e-03 0 -1 1444 + 1.8571510445326567e-03 -2 -3 1445 2.7572319377213717e-03 + + -1.5857130289077759e-01 2.0623469352722168e-01 + -1.5369700267910957e-02 3.5741418600082397e-01 + <_> + + 0 1 1446 -1.2494870461523533e-02 -1 2 1447 + -2.0542230457067490e-02 -2 -3 1448 9.8408637568354607e-03 + + 2.1646310389041901e-01 3.5183259844779968e-01 + -2.5107988715171814e-01 2.4597419425845146e-02 + <_> + + 1 0 1449 7.5531061738729477e-03 2 -1 1450 + 8.6472760885953903e-03 -2 -3 1451 -2.3343270644545555e-02 + + -7.7170521020889282e-01 -2.6535108685493469e-01 + -3.1102359294891357e-01 1.0751940310001373e-01 + <_> + + 0 1 1452 -2.3739689495414495e-03 2 -1 1453 + 4.5531010255217552e-03 -2 -3 1454 -1.7819739878177643e-02 + + 2.4833559989929199e-01 1.2766610085964203e-01 + -2.1538909524679184e-02 -3.3530569076538086e-01 + <_> + + 0 1 1455 -1.8217710778117180e-02 -1 2 1456 + -4.5768721029162407e-03 -2 -3 1457 -1.8008370534516871e-04 + + -4.1915500164031982e-01 -4.3936538696289062e-01 + -1.2697519361972809e-01 1.3539279997348785e-01 + <_> + + 0 1 1458 -7.6008588075637817e-03 2 -1 1459 + 4.5034091453999281e-04 -2 -3 1460 2.7170981047675014e-04 + + -3.3822789788246155e-01 3.1599909067153931e-01 + -7.5660146772861481e-02 2.3075099289417267e-01 + <_> + + 0 1 1461 -5.9739891439676285e-02 2 -1 1462 + -2.4159778840839863e-03 -2 -3 1463 7.5702499598264694e-03 + + -3.9958238601684570e-01 -2.9177419841289520e-02 + 3.6201998591423035e-01 -7.8775990009307861e-01 + <_> + + 1 0 1464 4.8360861837863922e-03 -1 2 1465 + -1.9794749096035957e-02 -2 -3 1466 -5.3176241926848888e-03 + + -4.7984561324119568e-01 3.1721720099449158e-01 + 2.1971449255943298e-01 -8.5302233695983887e-02 + <_> + + 2 1 1467 3.5097550135105848e-03 0 -1 1468 + -1.6063610091805458e-03 -2 -3 1469 1.8238229677081108e-03 + + 3.4705808758735657e-01 -3.2198080420494080e-01 + 9.7573727369308472e-02 -4.1784769296646118e-01 + <_> + + 2 1 1470 2.2058039903640747e-03 0 -1 1471 + 2.5601179804652929e-03 -2 -3 1472 2.2490289993584156e-03 + + -2.9866018891334534e-01 3.2085859775543213e-01 + 1.0411229729652405e-01 -3.0941790342330933e-01 + <_> + + 1 2 1473 2.2417849395424128e-03 0 -1 1474 + 9.5781440904829651e-05 -2 -3 1475 -1.0199189931154251e-01 + + -1.9861190021038055e-01 8.0484487116336823e-02 + -6.6573441028594971e-01 2.6545938849449158e-01 + <_> + + 2 1 1476 2.9278239235281944e-03 0 -1 1477 + -2.3058110382407904e-03 -2 -3 1478 -3.5818710457533598e-03 + + 4.6711549162864685e-01 -2.3293379694223404e-02 + 1.9756149500608444e-02 -2.5899839401245117e-01 + <_> + + 2 1 1479 4.8302081413567066e-03 0 -1 1480 + -2.7483499143272638e-03 -2 -3 1481 -4.5970390783622861e-04 + + -3.6909970641136169e-01 2.9650568962097168e-01 + 1.0480040311813354e-01 -1.6184529662132263e-01 + <_> + + 2 1 1482 -1.0161349549889565e-02 0 -1 1483 + 3.2342320773750544e-03 -2 -3 1484 -1.1368689592927694e-03 + + -1.5523530542850494e-01 4.8816910386085510e-01 + 2.8159290552139282e-01 -6.2790401279926300e-02 + <_> + + 1 0 1485 1.1411249870434403e-03 2 -1 1486 + 2.8695389628410339e-03 -2 -3 1487 2.4731169641017914e-01 + + 1.2081749737262726e-01 2.0992599427700043e-01 + -2.4197529256343842e-01 6.4990550279617310e-01 + <_> + + 2 1 1488 2.7829511091113091e-03 0 -1 1489 + -1.3701720163226128e-02 -2 -3 1490 4.8768401145935059e-02 + + 4.5538169145584106e-01 -3.3847901225090027e-01 + 8.9688122272491455e-02 -3.1576380133628845e-01 + <_> + + 1 0 1491 1.7329800873994827e-02 2 -1 1492 + 1.4899630099534988e-02 -2 -3 1493 -5.4528238251805305e-03 + + 4.2558190226554871e-01 6.1711931228637695e-01 + -4.0939989686012268e-01 -1.5215449966490269e-02 + <_> + + 0 1 1494 -4.6164509840309620e-03 2 -1 1495 + 2.2072680294513702e-03 -2 -3 1496 1.1780969798564911e-03 + + -3.5992878675460815e-01 2.0051500201225281e-01 + -1.7710399627685547e-01 1.3283580541610718e-01 + <_> + + 2 1 1497 -2.1226529497653246e-04 0 -1 1498 + 6.6969380713999271e-03 -2 -3 1499 4.8628589138388634e-03 + + -1.4558829367160797e-01 3.0319228768348694e-01 + 2.1147659420967102e-01 -6.5050870180130005e-01 + <_> + + 1 0 1500 1.2855669483542442e-03 -1 2 1501 + -9.8538002930581570e-04 -2 -3 1502 3.6161120515316725e-03 + + -1.4253799617290497e-01 -4.9302369356155396e-02 + 4.5496350526809692e-01 -1.2398339807987213e-01 + <_> + + 1 0 1503 7.4739390984177589e-03 2 -1 1504 + 1.4764349907636642e-02 -2 -3 1505 5.4328311234712601e-03 + + 2.5631210207939148e-01 5.8572351932525635e-01 + 3.2529931515455246e-02 -2.2187189757823944e-01 + <_> + + 1 2 1506 -2.7086320915259421e-04 0 -1 1507 + 4.2132260277867317e-03 -2 -3 1508 1.9583420362323523e-04 + + 2.6175120472908020e-01 -5.9540379047393799e-01 + -1.9159470498561859e-01 9.1520026326179504e-02 + <_> + + 0 1 1509 -7.1442658081650734e-03 2 -1 1510 + 2.3744559439364821e-04 -2 -3 1511 -8.4380080807022750e-05 + + 1.3012650609016418e-01 -3.8831448554992676e-01 + 2.1030910313129425e-01 -1.4587140083312988e-01 + <_> + + 1 0 1512 1.2161800265312195e-01 2 -1 1513 + 6.9275178248062730e-05 -2 -3 1514 -1.5904659405350685e-02 + + 2.5583249330520630e-01 1.1272220313549042e-01 + 7.2112542390823364e-01 -1.9385160505771637e-01 + <_> + 35 + -1.1545649766921997e+00 + + <_> + + 2 1 1515 1.7899930477142334e-02 0 -1 1516 + 1.5925300540402532e-03 -2 -3 1517 1.8896949477493763e-03 + + 4.6134639531373978e-02 8.3787131309509277e-01 + -3.6899039149284363e-01 1.8707709386944771e-02 + <_> + + 1 0 1518 -4.1336648166179657e-02 -1 2 1519 + -4.0737599134445190e-02 -2 -3 1520 -1.4306500088423491e-03 + + -1.9983500242233276e-01 5.5203098058700562e-01 + -5.4083228111267090e-01 1.3183380663394928e-01 + <_> + + 2 1 1521 1.4656609855592251e-03 0 -1 1522 + -1.3589359587058425e-03 -2 -3 1523 -1.5437849797308445e-03 + + 1.7477029561996460e-01 -4.5285460352897644e-01 + 2.2154679894447327e-01 -1.1437030136585236e-01 + <_> + + 2 1 1524 6.6659757867455482e-03 0 -1 1525 + -1.7080729594454169e-03 -2 -3 1526 -3.6050159484148026e-02 + + 5.6135451793670654e-01 -7.5875748880207539e-03 + 6.9391137361526489e-01 -1.3373179733753204e-01 + <_> + + 0 1 1527 -7.1983798407018185e-03 -1 2 1528 + -6.5796967828646302e-04 -2 -3 1529 -1.2115390272811055e-03 + + 1.8855899572372437e-01 -4.7130081057548523e-01 + 1.9381099939346313e-01 -1.4709189534187317e-01 + <_> + + 0 1 1530 -1.0272770188748837e-02 2 -1 1531 + -7.0025851018726826e-03 -2 -3 1532 -2.4933859705924988e-02 + + -4.1135069727897644e-01 -8.8177748024463654e-02 + -6.3464301824569702e-01 2.5403091311454773e-01 + <_> + + 2 1 1533 7.7693387866020203e-03 0 -1 1534 + -4.4885549694299698e-02 -2 -3 1535 1.9916899036616087e-03 + + -4.5445719361305237e-01 3.3884489536285400e-01 + -5.3012330085039139e-02 -5.7269239425659180e-01 + <_> + + 0 1 1536 -1.4783450402319431e-02 2 -1 1537 + 1.1688449885696173e-03 -2 -3 1538 -1.2033269740641117e-04 + + 3.7365919351577759e-01 -3.0164909362792969e-01 + 1.4958509802818298e-01 -1.4014390110969543e-01 + <_> + + 0 1 1539 -4.3730039149522781e-02 -1 2 1540 + -1.7855180427432060e-02 -2 -3 1541 8.3651271415874362e-04 + + -7.0078557729721069e-01 8.0032449960708618e-01 + 7.8825756907463074e-02 -2.0352110266685486e-01 + <_> + + 2 1 1542 -6.6671593231149018e-05 0 -1 1543 + -9.8805947345681489e-05 -2 -3 1544 -2.7336759376339614e-04 + + -3.7201121449470520e-01 1.3640309683978558e-02 + -1.6216109693050385e-01 2.6113900542259216e-01 + <_> + + 1 0 1545 4.2468630708754063e-03 2 -1 1546 + -4.9197040498256683e-03 -2 -3 1547 -1.4116670005023479e-02 + + 2.8842711448669434e-01 -1.0787279903888702e-01 + -7.0104539394378662e-01 3.3659279346466064e-01 + <_> + + 1 2 1548 -4.4507419806905091e-04 0 -1 1549 + -1.2075440026819706e-02 -2 -3 1550 -2.3437689524143934e-03 + + -7.0987367630004883e-01 1.5176150202751160e-01 + -4.0890040993690491e-01 -1.7091540619730949e-02 + <_> + + 1 0 1551 1.6248680651187897e-02 2 -1 1552 + 1.9177920185029507e-03 -2 -3 1553 -1.0359560139477253e-02 + + -6.0641109943389893e-01 3.6670050024986267e-01 + 1.9813629984855652e-01 -1.1020349711179733e-01 + <_> + + 2 1 1554 2.9234820976853371e-03 0 -1 1555 + 3.4323200583457947e-02 -2 -3 1556 1.8238219490740448e-04 + + -4.6382451057434082e-01 1.5469099581241608e-01 + -2.5076579302549362e-02 2.7050849795341492e-01 + <_> + + 0 1 1557 -8.5055502131581306e-04 2 -1 1558 + 4.7644949518144131e-03 -2 -3 1559 -2.5098009500652552e-03 + + 1.7459200322628021e-01 4.0942171216011047e-01 + 3.9601740241050720e-01 -1.7667229473590851e-01 + <_> + + 0 1 1560 -5.0978600047528744e-03 -1 2 1561 + -5.2095171064138412e-02 -2 -3 1562 3.5293150693178177e-02 + + -4.4393861293792725e-01 -6.6363197565078735e-01 + 2.7801029384136200e-02 5.6744211912155151e-01 + <_> + + 0 1 1563 -3.6938309669494629e-01 2 -1 1564 + 5.7077431119978428e-03 -2 -3 1565 5.1315332530066371e-04 + + -5.4281282424926758e-01 -3.8007241487503052e-01 + -7.5563162565231323e-02 1.8112689256668091e-01 + <_> + + 0 1 1566 -8.1165106967091560e-03 -1 2 1567 + 2.4742930690990761e-05 -2 -3 1568 -8.3282394334673882e-03 + + 4.3757191300392151e-01 -1.6252890229225159e-01 + 2.9233780503273010e-01 -5.2530951797962189e-02 + <_> + + 0 1 1569 -9.9733080714941025e-03 -1 2 1570 + -1.6291439533233643e-03 -2 -3 1571 2.3081828840076923e-03 + + 2.3018500208854675e-01 -3.8834458589553833e-01 + 1.5438289940357208e-01 -1.6248099505901337e-01 + <_> + + 0 1 1572 7.0326360873878002e-03 2 -1 1573 + -8.7802913039922714e-03 -2 -3 1574 -1.1044350266456604e-01 + + -8.2522578537464142e-02 3.2759511470794678e-01 + 6.3194888830184937e-01 -2.1398690342903137e-01 + <_> + + 0 1 1575 6.3772657886147499e-03 -1 2 1576 + -1.4427660405635834e-01 -2 -3 1577 5.2613671869039536e-03 + + -6.5774962306022644e-02 -5.2361601591110229e-01 + 3.7687599658966064e-01 -3.7297201156616211e-01 + <_> + + 0 1 1578 -9.3407719396054745e-04 2 -1 1579 + 7.0944131584838033e-04 -2 -3 1580 -2.0967289805412292e-02 + + -3.5960820317268372e-01 2.9923319816589355e-01 + -3.0739480257034302e-01 4.0209449827671051e-02 + <_> + + 1 2 1581 3.0113470274955034e-03 0 -1 1582 + -1.6325850447174162e-04 -2 -3 1583 3.9222151972353458e-03 + + 8.1960096955299377e-02 -2.3989020287990570e-01 + 3.2356649637222290e-01 -1.2140029668807983e-01 + <_> + + 1 0 1584 1.9476639572530985e-03 -1 2 1585 + -1.1166670173406601e-01 -2 -3 1586 -8.8221747428178787e-03 + + -2.0126590132713318e-01 -3.1850230693817139e-01 + -4.0777778625488281e-01 1.7498190701007843e-01 + <_> + + 1 0 1587 4.4771569082513452e-04 -1 2 1588 + -1.5389479696750641e-01 -2 -3 1589 9.9520087242126465e-02 + + 2.2826899588108063e-01 2.3346799612045288e-01 + -1.9206780195236206e-01 1.9271479547023773e-01 + <_> + + 0 1 1590 -7.3821679688990116e-03 2 -1 1591 + 3.8805850781500340e-03 -2 -3 1592 1.6339759528636932e-01 + + -4.6257901191711426e-01 -2.3733510076999664e-01 + 5.5862568318843842e-02 6.1965280771255493e-01 + <_> + + 0 1 1593 -8.8077411055564880e-02 -1 2 1594 + -3.5946018993854523e-02 -2 -3 1595 -1.6441620886325836e-02 + + -3.8033220171928406e-01 2.6925620436668396e-01 + 1.4508089423179626e-01 -1.6219359636306763e-01 + <_> + + 0 1 1596 -4.3592150323092937e-03 2 -1 1597 + 1.0485500097274780e-02 -2 -3 1598 -6.1118233134038746e-05 + + -5.1064497232437134e-01 2.8324770927429199e-01 + 7.6486147940158844e-02 -1.9800069928169250e-01 + <_> + + 0 1 1599 -4.7104779630899429e-02 2 -1 1600 + 4.4213151559233665e-03 -2 -3 1601 7.0402962155640125e-03 + + -7.2683817148208618e-01 3.9631149172782898e-01 + 1.8920229747891426e-02 -3.7019899487495422e-01 + <_> + + 1 0 1602 1.4250110089778900e-01 2 -1 1603 + -5.7172770611941814e-03 -2 -3 1604 -4.6481531113386154e-02 + + 8.8020402193069458e-01 4.3595671653747559e-02 + 7.6506501436233521e-01 -2.7619931101799011e-01 + <_> + + 0 1 1605 -4.4838748872280121e-02 2 -1 1606 + 3.0957909300923347e-02 -2 -3 1607 -8.7462607771158218e-03 + + -5.1540642976760864e-01 5.9068799018859863e-01 + -2.2899469733238220e-01 6.3833296298980713e-02 + <_> + + 1 2 1608 -1.5742169693112373e-02 0 -1 1609 + -2.6640590280294418e-02 -2 -3 1610 1.8860519630834460e-03 + + 7.8339278697967529e-01 -2.8742430731654167e-02 + -5.8971941471099854e-03 -5.2254527807235718e-01 + <_> + + 1 0 1611 9.0017020702362061e-02 2 -1 1612 + 4.1232812218368053e-03 -2 -3 1613 -3.1369640491902828e-03 + + -2.7766749262809753e-01 -3.3485591411590576e-01 + 2.3297710716724396e-01 -2.5101479142904282e-02 + <_> + + 0 1 1614 -1.9068670272827148e-01 -1 2 1615 + -1.2578029930591583e-01 -2 -3 1616 -4.1931928717531264e-04 + + -4.9549269676208496e-01 -4.1263309121131897e-01 + 3.1464719772338867e-01 -1.8672699807211757e-03 + <_> + + 0 1 1617 -3.2330630347132683e-03 -1 2 1618 + 1.7340299673378468e-03 -2 -3 1619 -2.2027179598808289e-02 + + 1.2561239302158356e-01 -3.4801191091537476e-01 + 4.4815701246261597e-01 -7.2313196957111359e-02 + <_> + 39 + -1.1791440248489380e+00 + + <_> + + 2 1 1620 3.3422548323869705e-02 0 -1 1621 + 8.5403252160176635e-04 -2 -3 1622 -7.3585510253906250e-03 + + -1.3247360289096832e-01 7.6739120483398438e-01 + 1.3871429860591888e-01 -3.1415361166000366e-01 + <_> + + 1 0 1623 -1.0222700238227844e-01 2 -1 1624 + 3.4475249703973532e-03 -2 -3 1625 -1.7645580694079399e-02 + + -2.0302750170230865e-01 6.8434572219848633e-01 + 4.2404478788375854e-01 -4.3976809829473495e-02 + <_> + + 1 0 1626 3.2828699331730604e-03 -1 2 1627 + -2.6843189261853695e-03 -2 -3 1628 2.6746080256998539e-03 + + -3.2990959286689758e-01 -3.5459449887275696e-01 + 2.0094729959964752e-01 -2.5637739896774292e-01 + <_> + + 2 1 1629 4.3111201375722885e-03 0 -1 1630 + -1.0081959888339043e-02 -2 -3 1631 -1.2621459551155567e-02 + + 6.3562941551208496e-01 7.2961407713592052e-03 + -4.7962281107902527e-01 -2.3874230682849884e-02 + <_> + + 1 0 1632 6.5851196646690369e-02 2 -1 1633 + 6.6091239452362061e-02 -2 -3 1634 1.0616159997880459e-02 + + -4.3995830416679382e-01 5.8817231655120850e-01 + 4.4144749641418457e-02 -5.2871602773666382e-01 + <_> + + 0 1 1635 -1.7077329754829407e-01 2 -1 1636 + 7.3064928874373436e-03 -2 -3 1637 -1.6232950612902641e-02 + + 3.5454490780830383e-01 -4.8716691136360168e-01 + 5.1020520925521851e-01 -4.3431609869003296e-02 + <_> + + 1 0 1638 1.7457149922847748e-02 -1 2 1639 + 1.8004700905294158e-05 -2 -3 1640 -1.8200390331912786e-04 + + 6.0515201091766357e-01 -1.7250029742717743e-01 + -1.9305349886417389e-01 1.9700099527835846e-01 + <_> + + 1 2 1641 1.9662559498101473e-04 0 -1 1642 + -1.1132629588246346e-02 -2 -3 1643 2.1626690868288279e-03 + + 5.0847887992858887e-01 -1.9962939620018005e-01 + 1.6478070616722107e-01 -4.2688089609146118e-01 + <_> + + 1 0 1644 7.7909911051392555e-03 -1 2 1645 + -1.7233919352293015e-02 -2 -3 1646 1.2938809581100941e-02 + + 4.0679588913917542e-01 -3.7941160798072815e-01 + 5.0589919090270996e-02 -3.9163780212402344e-01 + <_> + + 0 1 1647 -1.7387060448527336e-02 -1 2 1648 + -2.5230729952454567e-03 -2 -3 1649 6.4417538233101368e-03 + + 3.1603300571441650e-01 -1.7287540435791016e-01 + -9.0429611504077911e-02 3.1889480352401733e-01 + <_> + + 0 1 1650 -6.1783548444509506e-03 -1 2 1651 + -6.8178442306816578e-03 -2 -3 1652 1.2576530571095645e-04 + + -8.6734527349472046e-01 -4.4892689585685730e-01 + -9.1477192938327789e-02 1.5243050456047058e-01 + <_> + + 1 0 1653 3.7562008947134018e-03 2 -1 1654 + -7.1173519827425480e-03 -2 -3 1655 -4.5744940871372819e-04 + + -3.9259639382362366e-01 -1.9343020394444466e-02 + 5.8565497398376465e-01 -3.0873420182615519e-03 + <_> + + 1 0 1656 1.8661000067368150e-03 -1 2 1657 + 4.5793029130436480e-04 -2 -3 1658 -7.0905109168961644e-04 + + 1.2924820184707642e-01 -3.0677530169487000e-01 + -2.7637350559234619e-01 1.8316049873828888e-01 + <_> + + 1 2 1659 1.6472890274599195e-03 0 -1 1660 + 3.3973839599639177e-03 -2 -3 1661 1.0479029733687639e-03 + + 3.3831808716058731e-02 5.3982901573181152e-01 + -3.4972178936004639e-01 3.4049559384584427e-02 + <_> + + 1 0 1662 -1.2611759593710303e-03 -1 2 1663 + -1.3892400311306119e-03 -2 -3 1664 -2.3636990226805210e-03 + + -1.0801869630813599e-01 -5.8067310601472855e-02 + -1.1870750039815903e-01 4.2690658569335938e-01 + <_> + + 1 0 1665 7.7976062893867493e-02 2 -1 1666 + 2.6837061159312725e-03 -2 -3 1667 -1.8215410411357880e-02 + + 6.1271321773529053e-01 2.0893469452857971e-01 + 2.2027739882469177e-01 -1.4412580430507660e-01 + <_> + + 0 1 1668 -7.1908776590134948e-05 2 -1 1669 + -4.8738159239292145e-02 -2 -3 1670 1.0442149825394154e-02 + + 1.3836480677127838e-01 -1.8305869400501251e-01 + 2.6348349452018738e-01 -6.3504451513290405e-01 + <_> + + 1 2 1671 9.3731992819812149e-05 0 -1 1672 + -8.5826592112425715e-05 -2 -3 1673 -8.0251938197761774e-04 + + 1.4046959578990936e-01 -2.6721659302711487e-01 + -1.2936100363731384e-01 2.3326739668846130e-01 + <_> + + 0 1 1674 -4.1836570017039776e-03 2 -1 1675 + -7.2750613093376160e-02 -2 -3 1676 -2.1738439798355103e-01 + + -6.0153460502624512e-01 6.9707646965980530e-02 + 5.6727671623229980e-01 -4.5854389667510986e-01 + <_> + + 2 1 1677 1.1648099869489670e-02 0 -1 1678 + -6.2701262533664703e-02 -2 -3 1679 2.1612979471683502e-02 + + 7.8997617959976196e-01 -3.9388018846511841e-01 + 7.7059872448444366e-02 -3.8484179973602295e-01 + <_> + + 2 1 1680 1.4084950089454651e-02 0 -1 1681 + -1.9548619166016579e-02 -2 -3 1682 -3.8142129778862000e-03 + + -8.6542218923568726e-01 3.0495870113372803e-01 + 9.0823858976364136e-02 -1.5859849750995636e-01 + <_> + + 1 0 1683 -1.0152840055525303e-02 -1 2 1684 + -7.2696566581726074e-02 -2 -3 1685 6.2066782265901566e-03 + + 4.4999830424785614e-02 -5.6914567947387695e-01 + -2.0673969388008118e-01 9.0268892049789429e-01 + <_> + + 1 0 1686 6.9105483591556549e-02 -1 2 1687 + -1.4375509927049279e-03 -2 -3 1688 -1.2960369931533933e-03 + + -5.9451812505722046e-01 4.0363711118698120e-01 + -3.1941750645637512e-01 3.5984441637992859e-02 + <_> + + 1 0 1689 6.1866950243711472e-02 2 -1 1690 + -1.2085740454494953e-02 -2 -3 1691 2.4474540259689093e-03 + + -2.7787050604820251e-01 -1.3511900603771210e-01 + -1.1833719909191132e-02 3.7945300340652466e-01 + <_> + + 0 1 1692 -5.3315522382035851e-04 2 -1 1693 + 4.3831359595060349e-02 -2 -3 1694 3.1255939393304288e-04 + + -2.2559830546379089e-01 -4.7124490141868591e-01 + 1.7324599623680115e-01 -1.0789500176906586e-01 + <_> + + 0 1 1695 -3.2911780290305614e-03 2 -1 1696 + -5.8774580247700214e-03 -2 -3 1697 1.7906239954754710e-03 + + 7.7492022514343262e-01 -8.2756206393241882e-02 + 2.2471660748124123e-02 5.2061527967453003e-01 + <_> + + 1 2 1698 -2.8294209390878677e-02 0 -1 1699 + -2.0737959071993828e-02 -2 -3 1700 6.0438051819801331e-02 + + -2.7196401357650757e-01 2.4411930143833160e-01 + -1.8866230547428131e-01 1.2102810293436050e-01 + <_> + + 1 0 1701 1.0623940266668797e-02 -1 2 1702 + -5.2178360521793365e-02 -2 -3 1703 -1.0080549865961075e-02 + + -4.3548050522804260e-01 5.5961382389068604e-01 + -4.7012031078338623e-01 3.5867590457201004e-02 + <_> + + 0 1 1704 -1.8482849700376391e-03 -1 2 1705 + -1.9860679458361119e-04 -2 -3 1706 1.3552449643611908e-01 + + 1.6979730129241943e-01 7.1132831275463104e-02 + -2.6272559165954590e-01 6.1016607284545898e-01 + <_> + + 1 2 1707 -1.5910629183053970e-02 0 -1 1708 + 2.6022290810942650e-02 -2 -3 1709 4.9573001451790333e-03 + + -3.0872771143913269e-01 4.9954459071159363e-01 + 1.6577349603176117e-01 -9.6653968095779419e-02 + <_> + + 0 1 1710 -7.6060830906499177e-05 -1 2 1711 + -7.5124457478523254e-02 -2 -3 1712 -1.2995740398764610e-03 + + 1.4288060367107391e-01 2.5722241401672363e-01 + 5.3607620298862457e-02 -2.8598341345787048e-01 + <_> + + 2 1 1713 -2.2266160231083632e-03 0 -1 1714 + -1.7864009365439415e-02 -2 -3 1715 -7.8721214085817337e-03 + + 4.0117779374122620e-01 -1.5379750728607178e-01 + -5.3092598915100098e-01 2.0486819744110107e-01 + <_> + + 2 1 1716 7.2514810599386692e-03 0 -1 1717 + -3.3152610994875431e-03 -2 -3 1718 1.1477110092528164e-04 + + 4.3453741073608398e-01 9.4297742471098900e-03 + -2.5599750876426697e-01 8.4530018270015717e-02 + <_> + + 0 1 1719 -8.1627883017063141e-02 -1 2 1720 + -3.0422580894082785e-03 -2 -3 1721 9.5837161643430591e-04 + + 6.3307619094848633e-01 1.4660899341106415e-01 + -2.0023280382156372e-01 9.1823212802410126e-02 + <_> + + 0 1 1722 -2.9197218827903271e-04 -1 2 1723 + -4.1077801142819226e-04 -2 -3 1724 -3.4885460045188665e-03 + + 1.1741080135107040e-01 -4.0920740365982056e-01 + -3.9310920238494873e-01 9.1094776988029480e-02 + <_> + + 0 1 1725 -8.0458387732505798e-02 2 -1 1726 + 1.4809619635343552e-02 -2 -3 1727 -2.5831649079918861e-02 + + -3.9728361368179321e-01 -6.7901968955993652e-01 + -4.8431569337844849e-01 7.2864383459091187e-02 + <_> + + 0 1 1728 -6.8509988486766815e-03 2 -1 1729 + 7.2365561500191689e-03 -2 -3 1730 -1.5076539712026715e-03 + + -6.2457418441772461e-01 -4.1250211000442505e-01 + 4.2033711075782776e-01 4.4630239717662334e-03 + <_> + + 1 0 1731 3.1408321112394333e-02 -1 2 1732 + -1.5178160369396210e-01 -2 -3 1733 -1.4014760032296181e-02 + + 5.3995478153228760e-01 -3.0855739116668701e-01 + -5.0550711154937744e-01 4.7526750713586807e-02 + <_> + + 0 1 1734 -1.4479519426822662e-01 2 -1 1735 + -3.5547069273889065e-04 -2 -3 1736 3.9468570612370968e-03 + + -6.7499721050262451e-01 -6.9627217948436737e-02 + 2.0310120284557343e-01 -5.7640278339385986e-01 + <_> + 46 + -1.0878429412841797e+00 + + <_> + + 1 2 1737 -3.7029121071100235e-02 0 -1 1738 + 3.5863209050148726e-03 -2 -3 1739 2.0645149052143097e-03 + + 9.5846345648169518e-03 7.9992657899856567e-01 + -2.9247409105300903e-01 1.4642210304737091e-01 + <_> + + 2 1 1740 5.5934679694473743e-03 0 -1 1741 + 2.2176630795001984e-02 -2 -3 1742 4.8479600081918761e-05 + + -3.9403820037841797e-01 5.4291707277297974e-01 + -2.4063709378242493e-01 9.0213976800441742e-02 + <_> + + 1 0 1743 -1.2722389772534370e-02 2 -1 1744 + 1.1610349640250206e-02 -2 -3 1745 8.2520343363285065e-02 + + -1.7550089955329895e-01 -3.1787800788879395e-01 + 2.8798571228981018e-01 -4.4052869081497192e-01 + <_> + + 0 1 1746 -1.4208409935235977e-02 -1 2 1747 + -8.1465748371556401e-04 -2 -3 1748 -5.5117108859121799e-03 + + -8.2584899663925171e-01 1.9521759450435638e-01 + 1.8622130155563354e-01 -1.9417479634284973e-01 + <_> + + 1 0 1749 1.0232779895886779e-03 -1 2 1750 + -6.4967863261699677e-02 -2 -3 1751 2.5218280497938395e-03 + + -1.7564930021762848e-01 -6.9197070598602295e-01 + 6.9476373493671417e-02 6.7932087182998657e-01 + <_> + + 1 0 1752 1.5097549557685852e-01 -1 2 1753 + 4.3899910524487495e-03 -2 -3 1754 9.9906846880912781e-03 + + 4.6142420172691345e-01 4.2842838913202286e-02 + -4.2551028728485107e-01 3.2834030687808990e-02 + <_> + + 0 1 1755 -2.1895440295338631e-02 -1 2 1756 + -7.6050527393817902e-02 -2 -3 1757 -9.6018705517053604e-03 + + -4.7627368569374084e-01 -3.6348098516464233e-01 + 2.4625270068645477e-01 -1.4736860059201717e-02 + <_> + + 0 1 1758 6.1576829466503114e-05 -1 2 1759 + -2.2094589658081532e-03 -2 -3 1760 -1.3034399598836899e-02 + + -1.2972380220890045e-01 3.2342359423637390e-01 + 4.9937328696250916e-01 -1.3894359767436981e-01 + <_> + + 0 1 1761 -2.0411429926753044e-02 2 -1 1762 + -6.8360187113285065e-02 -2 -3 1763 -4.1714729741215706e-03 + + -4.5825520157814026e-01 -5.3202010691165924e-02 + -3.3815470337867737e-01 2.8209799528121948e-01 + <_> + + 1 0 1764 -2.2963550873100758e-03 -1 2 1765 + -7.3422670364379883e-02 -2 -3 1766 3.5119321197271347e-02 + + -8.7558113038539886e-02 5.8385127782821655e-01 + -7.8373529016971588e-02 5.2284508943557739e-01 + <_> + + 0 1 1767 -2.3843089584261179e-03 2 -1 1768 + 5.8223021915182471e-04 -2 -3 1769 5.1109357737004757e-03 + + -3.6075130105018616e-01 2.1036569774150848e-01 + -1.9436909258365631e-01 1.3681420683860779e-01 + <_> + + 0 1 1770 -6.9154787342995405e-04 2 -1 1771 + -5.5549171520397067e-04 -2 -3 1772 -7.5950571335852146e-03 + + -2.3962910473346710e-01 -1.0858660191297531e-01 + -9.1398581862449646e-02 2.7578109502792358e-01 + <_> + + 0 1 1773 2.8131629806011915e-03 -1 2 1774 + -4.5272540301084518e-02 -2 -3 1775 -2.6697120629251003e-03 + + -7.3745496571063995e-02 3.9891231060028076e-01 + 3.7440070509910583e-01 -2.5978609919548035e-01 + <_> + + 2 1 1776 -1.0849219746887684e-02 0 -1 1777 + -1.6776850447058678e-02 -2 -3 1778 -1.9630219787359238e-02 + + -6.7678660154342651e-01 -4.9237858504056931e-02 + -4.7865530848503113e-01 2.2300049662590027e-01 + <_> + + 1 0 1779 7.0901170372962952e-02 -1 2 1780 + 7.0403231075033545e-04 -2 -3 1781 3.3363080583512783e-03 + + -2.8926369547843933e-01 -5.3575031459331512e-02 + -8.7073008762672544e-04 4.0888670086860657e-01 + <_> + + 1 0 1782 9.3207405880093575e-03 2 -1 1783 + 1.1512059718370438e-02 -2 -3 1784 -1.8639869813341647e-04 + + -5.3399091958999634e-01 -5.2177387475967407e-01 + -1.1254069954156876e-01 1.3096989691257477e-01 + <_> + + 0 1 1785 1.5442570438608527e-03 -1 2 1786 + 2.5775749236345291e-03 -2 -3 1787 -1.2664040550589561e-03 + + -8.3666101098060608e-02 3.2544130086898804e-01 + 3.0370441079139709e-01 -2.6052421331405640e-01 + <_> + + 1 0 1788 3.2941689714789391e-03 -1 2 1789 + -2.3375200107693672e-03 -2 -3 1790 -7.7096500899642706e-04 + + 2.1506890654563904e-01 1.9738529622554779e-01 + 6.9986172020435333e-02 -1.9839569926261902e-01 + <_> + + 1 0 1791 -2.7190460241399705e-04 -1 2 1792 + 2.7237389236688614e-02 -2 -3 1793 -1.5080779790878296e-02 + + 8.3213888108730316e-02 -2.8429448604583740e-01 + 6.8940150737762451e-01 -5.7628151029348373e-02 + <_> + + 0 1 1794 -6.5730936825275421e-02 -1 2 1795 + -7.4283648282289505e-03 -2 -3 1796 3.4652319736778736e-03 + + -5.2482831478118896e-01 3.9523449540138245e-01 + -7.3690779507160187e-02 2.0800660550594330e-01 + <_> + + 0 1 1797 -1.2613019905984402e-02 2 -1 1798 + 2.3288120329380035e-01 -2 -3 1799 2.1903509274125099e-02 + + -6.8893492221832275e-01 7.0790272951126099e-01 + -7.7761108987033367e-03 8.4372210502624512e-01 + <_> + + 1 0 1800 1.0629750322550535e-03 -1 2 1801 + 1.8193929281551391e-04 -2 -3 1802 1.4717869926244020e-03 + + -3.4246420860290527e-01 1.0657790303230286e-01 + -3.1970989704132080e-01 7.0577569305896759e-02 + <_> + + 1 2 1803 7.5306659564375877e-03 0 -1 1804 + 1.7505730502307415e-03 -2 -3 1805 3.8401300553232431e-03 + + -1.5460279583930969e-01 2.1335080265998840e-01 + 2.3800070583820343e-01 -4.1055840253829956e-01 + <_> + + 1 2 1806 -2.5041550397872925e-01 0 -1 1807 + -2.0444789528846741e-01 -2 -3 1808 -1.2383040040731430e-02 + + -3.7927308678627014e-01 4.9870368838310242e-01 + 4.6343478560447693e-01 -6.7613303661346436e-02 + <_> + + 2 1 1809 1.9026029622182250e-03 0 -1 1810 + -1.6705439984798431e-01 -2 -3 1811 -8.6937591433525085e-02 + + 3.5356861352920532e-01 -2.4803459644317627e-01 + -5.6781381368637085e-01 1.0121189802885056e-01 + <_> + + 1 0 1812 -1.0314949788153172e-02 2 -1 1813 + 4.5044738799333572e-03 -2 -3 1814 1.5172120183706284e-02 + + -5.2530448883771896e-02 -9.0071156620979309e-02 + 7.1758699417114258e-01 -3.7740949541330338e-02 + <_> + + 0 1 1815 -5.6233601644635201e-03 2 -1 1816 + 5.4567858576774597e-02 -2 -3 1817 9.7008212469518185e-04 + + 2.3325720429420471e-01 4.8646458983421326e-01 + -2.4600529670715332e-01 2.4224309250712395e-02 + <_> + + 0 1 1818 -2.7179729659110308e-03 2 -1 1819 + -2.0419640466570854e-02 -2 -3 1820 -3.3307760953903198e-02 + + -5.3633391857147217e-01 -1.1361650191247463e-02 + 6.7398411035537720e-01 -1.4063489437103271e-01 + <_> + + 0 1 1821 -2.5500180199742317e-02 -1 2 1822 + -4.0629908442497253e-02 -2 -3 1823 -9.0600941330194473e-03 + + -3.6177828907966614e-01 -5.4579132795333862e-01 + 5.2202242612838745e-01 2.2736469283699989e-02 + <_> + + 0 1 1824 -2.5635668635368347e-01 2 -1 1825 + -9.5340751111507416e-02 -2 -3 1826 -5.9463721700012684e-03 + + -8.3328348398208618e-01 -1.6835439950227737e-02 + 5.6909567117691040e-01 -2.4973009526729584e-01 + <_> + + 2 1 1827 -9.2139927437528968e-04 0 -1 1828 + -6.8437340669333935e-03 -2 -3 1829 -8.2487165927886963e-03 + + -3.6735090613365173e-01 1.6015109419822693e-01 + 5.2686601877212524e-01 -1.5151239931583405e-01 + <_> + + 1 0 1830 4.7555859200656414e-03 2 -1 1831 + 9.3567231670022011e-04 -2 -3 1832 -6.3907768344506621e-04 + + -4.2700308561325073e-01 1.7327770590782166e-01 + 1.3155570626258850e-01 -1.8646000325679779e-01 + <_> + + 0 1 1833 -5.6550311855971813e-03 -1 2 1834 + -1.2212459929287434e-02 -2 -3 1835 -1.0550339706242085e-02 + + 3.1297039985656738e-01 4.6750861406326294e-01 + -2.4461230635643005e-01 1.6502030193805695e-02 + <_> + + 0 1 1836 -7.5216998811811209e-04 2 -1 1837 + 3.0214080470614135e-04 -2 -3 1838 2.8510420816019177e-04 + + -1.0075300186872482e-01 -2.8865608572959900e-01 + -1.1844499967992306e-02 3.6691731214523315e-01 + <_> + + 1 0 1839 -4.4020009227097034e-03 2 -1 1840 + 3.5568218678236008e-02 -2 -3 1841 6.4601990743540227e-05 + + -7.7167138457298279e-02 -4.4335851073265076e-01 + 1.3781660236418247e-02 4.5319119095802307e-01 + <_> + + 1 0 1842 9.3313469551503658e-04 -1 2 1843 + -8.7838143110275269e-02 -2 -3 1844 2.8037109877914190e-03 + + -1.2059070169925690e-01 -4.6736609935760498e-01 + 7.1518830955028534e-02 4.4593128561973572e-01 + <_> + + 1 0 1845 2.3915059864521027e-03 2 -1 1846 + -1.8183189677074552e-03 -2 -3 1847 1.9244100258219987e-04 + + -3.3277919888496399e-01 9.1478407382965088e-02 + 4.9121279269456863e-02 -4.5266890525817871e-01 + <_> + + 1 0 1848 2.1789909899234772e-01 -1 2 1849 + 1.0331439552828670e-03 -2 -3 1850 -1.4138330519199371e-01 + + 7.4892401695251465e-01 -1.0637000203132629e-01 + -4.2974629998207092e-01 1.6179689764976501e-01 + <_> + + 0 1 1851 -5.9106688946485519e-02 2 -1 1852 + 7.8279376029968262e-03 -2 -3 1853 -3.1304039293900132e-04 + + -4.0774118900299072e-01 3.9237990975379944e-01 + 1.3964369893074036e-01 -9.7562357783317566e-02 + <_> + + 0 1 1854 -6.4937800168991089e-02 -1 2 1855 + -2.1739810705184937e-01 -2 -3 1856 -2.0257150754332542e-02 + + 2.2590440511703491e-01 -3.4484180808067322e-01 + 2.4723629653453827e-01 -6.6609263420104980e-02 + <_> + + 1 2 1857 -1.1548499576747417e-02 0 -1 1858 + -6.7811407148838043e-02 -2 -3 1859 -3.4953389316797256e-02 + + 1.9427110254764557e-01 -5.8727997541427612e-01 + 7.8955358266830444e-01 1.5297190286219120e-02 + <_> + + 0 1 1860 -1.7180469632148743e-01 2 -1 1861 + -2.5918710161931813e-04 -2 -3 1862 1.2741640210151672e-02 + + -2.9612448811531067e-01 1.0281720012426376e-01 + -3.0702060461044312e-01 2.1692450344562531e-01 + <_> + + 0 1 1863 -3.1258590519428253e-02 2 -1 1864 + 3.5533700138330460e-03 -2 -3 1865 -9.2502118786796927e-04 + + 5.7348787784576416e-01 5.0475007295608521e-01 + -2.6686659455299377e-01 9.2138834297657013e-03 + <_> + + 0 1 1866 -1.2170480331405997e-03 -1 2 1867 + -2.2023949772119522e-02 -2 -3 1868 2.9549229890108109e-02 + + -3.9172619581222534e-01 2.0690579712390900e-01 + -6.0358341783285141e-02 6.9752788543701172e-01 + <_> + + 1 2 1869 -7.2058511432260275e-04 0 -1 1870 + -2.5625678896903992e-01 -2 -3 1871 3.2817238569259644e-01 + + -3.3763760328292847e-01 5.7221870869398117e-02 + 1.8268160521984100e-02 4.5866298675537109e-01 + <_> + + 0 1 1872 -5.2478950470685959e-02 -1 2 1873 + -7.2261072695255280e-02 -2 -3 1874 -1.0751239955425262e-02 + + -3.7492391467094421e-01 5.6878948211669922e-01 + -3.2823160290718079e-01 5.0447538495063782e-02 + <_> + 43 + -1.1713529825210571e+00 + + <_> + + 1 2 1875 -3.6475598812103271e-02 0 -1 1876 + 1.2570239603519440e-02 -2 -3 1877 -5.3332238458096981e-03 + + 7.8855842351913452e-01 -5.8355428278446198e-02 + 6.4850552007555962e-03 -3.8411408662796021e-01 + <_> + + 1 2 1878 -3.8449079729616642e-03 0 -1 1879 + 1.8065240001305938e-03 -2 -3 1880 4.4460720382630825e-03 + + -8.8380120694637299e-02 6.6356122493743896e-01 + -2.2651070356369019e-01 1.2168529629707336e-01 + <_> + + 1 0 1881 -1.5441340208053589e-01 2 -1 1882 + 2.8965979814529419e-02 -2 -3 1883 -1.8112070858478546e-02 + + -1.7789100110530853e-01 3.8929471373558044e-01 + 4.2137289047241211e-01 -2.0651680231094360e-01 + <_> + + 0 1 1884 -3.0437670648097992e-03 -1 2 1885 + -2.7257429901510477e-03 -2 -3 1886 -1.5535579994320869e-02 + + -4.5531120896339417e-01 2.5576180219650269e-01 + 2.9463219642639160e-01 -1.2572860717773438e-01 + <_> + + 0 1 1887 -1.4182399958372116e-02 -1 2 1888 + 2.8875279240310192e-03 -2 -3 1889 1.9505630480125546e-03 + + -4.7841429710388184e-01 -1.4739120006561279e-01 + -1.1689100414514542e-02 3.8708359003067017e-01 + <_> + + 2 1 1890 -4.1997907683253288e-03 0 -1 1891 + -1.2343189679086208e-02 -2 -3 1892 -6.5799211151897907e-03 + + 2.1066769957542419e-01 -2.4238829314708710e-01 + -4.1709339618682861e-01 1.9089350104331970e-01 + <_> + + 1 0 1893 2.0319439936429262e-03 -1 2 1894 + -2.2653149440884590e-02 -2 -3 1895 -2.4583860067650676e-04 + + 2.7525109052658081e-01 6.1857348680496216e-01 + -3.7903881072998047e-01 -1.9395859912037849e-02 + <_> + + 0 1 1896 -1.1686830548569560e-03 -1 2 1897 + 3.6638419260270894e-04 -2 -3 1898 -5.7184919569408521e-05 + + 1.3913659751415253e-01 -2.6073169708251953e-01 + 3.0361440777778625e-01 -1.7147840559482574e-01 + <_> + + 2 1 1899 -2.3458409123122692e-03 0 -1 1900 + -7.0121302269399166e-03 -2 -3 1901 2.3318149149417877e-02 + + 1.7510280013084412e-01 -1.7132690548896790e-01 + 2.2869640588760376e-01 -3.7544658780097961e-01 + <_> + + 1 0 1902 2.7293559163808823e-02 -1 2 1903 + -7.4272030033171177e-03 -2 -3 1904 -7.8977271914482117e-03 + + -2.8686890006065369e-01 -6.9167411327362061e-01 + -4.1576528549194336e-01 1.0694450139999390e-01 + <_> + + 0 1 1905 -3.6563118919730186e-03 2 -1 1906 + 1.5060990117490292e-03 -2 -3 1907 -2.2211389616131783e-02 + + -4.2580971121788025e-01 2.3827329277992249e-01 + -6.2818527221679688e-01 -1.2995249591767788e-02 + <_> + + 1 2 1908 -1.0182500118389726e-03 0 -1 1909 + 2.7624370530247688e-02 -2 -3 1910 -3.0267149209976196e-02 + + 2.0952360332012177e-01 -3.9603650569915771e-01 + -2.9257088899612427e-01 1.6949739307165146e-02 + <_> + + 1 0 1911 8.2686528563499451e-02 2 -1 1912 + 6.4655147492885590e-02 -2 -3 1913 2.7647409588098526e-03 + + 3.3863779902458191e-01 6.1647278070449829e-01 + -1.4266699552536011e-01 1.2386939674615860e-01 + <_> + + 0 1 1914 -3.1129099428653717e-02 2 -1 1915 + -1.5587930101901293e-03 -2 -3 1916 -5.9767777565866709e-04 + + -3.7931808829307556e-01 -9.2908859252929688e-02 + -1.0530649870634079e-01 2.9945549368858337e-01 + <_> + + 0 1 1917 -5.0103079527616501e-02 2 -1 1918 + 2.5710230693221092e-02 -2 -3 1919 -8.8613387197256088e-04 + + -4.4678428769111633e-01 -4.3549379706382751e-01 + 2.0978139340877533e-01 -3.8637928664684296e-02 + <_> + + 0 1 1920 -6.0174837708473206e-03 2 -1 1921 + 6.2055201269686222e-03 -2 -3 1922 2.7212419081479311e-04 + + 2.9752719402313232e-01 6.6692227125167847e-01 + 2.1671950817108154e-02 -2.7139788866043091e-01 + <_> + + 0 1 1923 -1.3685439713299274e-02 -1 2 1924 + -6.1648458242416382e-01 -2 -3 1925 -2.6253409683704376e-02 + + 4.7005081176757812e-01 -5.2666938304901123e-01 + 1.3483020663261414e-01 -1.0639149695634842e-01 + <_> + + 1 2 1926 -4.1545720887370408e-04 0 -1 1927 + -3.6237420863471925e-04 -2 -3 1928 5.5113807320594788e-04 + + -1.8588809669017792e-01 5.2727550268173218e-01 + 4.5380011200904846e-02 -2.3133419454097748e-01 + <_> + + 1 2 1929 -3.1878859736025333e-03 0 -1 1930 + -6.2446491792798042e-03 -2 -3 1931 -2.1054609678685665e-03 + + 2.8475400805473328e-01 -4.0583759546279907e-01 + 2.6000189781188965e-01 -1.6356609761714935e-02 + <_> + + 1 0 1932 2.2513020667247474e-04 2 -1 1933 + -5.1745050586760044e-03 -2 -3 1934 -2.7152549009770155e-03 + + -1.8777419626712799e-01 1.2812760472297668e-01 + 3.4431490302085876e-01 -4.2658099532127380e-01 + <_> + + 1 0 1935 2.7846530079841614e-02 2 -1 1936 + 4.3891910463571548e-03 -2 -3 1937 1.9749049097299576e-03 + + -2.8553798794746399e-01 6.4455038309097290e-01 + -8.2864962518215179e-02 1.7122590541839600e-01 + <_> + + 1 0 1938 -3.1317298999056220e-04 -1 2 1939 + -1.5486280433833599e-02 -2 -3 1940 9.5049021765589714e-03 + + -1.2443479895591736e-01 -1.8395289778709412e-01 + 3.4495291113853455e-01 -2.0286519080400467e-02 + <_> + + 2 1 1941 -3.7190609145909548e-04 0 -1 1942 + 2.9666710179299116e-03 -2 -3 1943 -5.8068940415978432e-03 + + 4.3022842146456242e-03 -3.4436589479446411e-01 + -8.4134072065353394e-01 2.8392368555068970e-01 + <_> + + 2 1 1944 -5.5204080417752266e-03 0 -1 1945 + -1.3792069512419403e-04 -2 -3 1946 -3.7187319248914719e-02 + + -2.6300218701362610e-01 2.6706520467996597e-02 + -2.9245018959045410e-01 4.0641939640045166e-01 + <_> + + 1 0 1947 -5.0016207387670875e-04 -1 2 1948 + -1.5453010564669967e-03 -2 -3 1949 1.9056679448112845e-03 + + -1.1965669691562653e-01 -4.2565101385116577e-01 + 2.9724061489105225e-01 -4.7963049262762070e-02 + <_> + + 0 1 1950 7.2636879049241543e-03 2 -1 1951 + 1.9141070079058409e-03 -2 -3 1952 1.2875479296781123e-04 + + -6.4583316445350647e-02 -3.5147330164909363e-01 + 1.1196230351924896e-01 5.7284992933273315e-01 + <_> + + 0 1 1953 -1.0092630051076412e-02 -1 2 1954 + -7.8368087997660041e-04 -2 -3 1955 -9.8703950643539429e-03 + + -3.7826448678970337e-01 2.3288239538669586e-01 + 2.1510779857635498e-01 -1.2697519361972809e-01 + <_> + + 0 1 1956 -1.0650960030034184e-03 -1 2 1957 + 8.5762650996912271e-05 -2 -3 1958 8.1163638969883323e-04 + + -3.2178428769111633e-01 -8.8832110166549683e-02 + 3.0365571379661560e-01 -8.3779007196426392e-02 + <_> + + 0 1 1959 -4.8947618342936039e-03 2 -1 1960 + 5.5883510503917933e-04 -2 -3 1961 -1.9008320523425937e-03 + + 1.6282820701599121e-01 -2.5395259261131287e-01 + -1.3888220489025116e-01 2.9919460415840149e-01 + <_> + + 1 2 1962 -2.0215269178152084e-03 0 -1 1963 + -4.4383360072970390e-03 -2 -3 1964 6.8489909172058105e-02 + + 3.9251059293746948e-01 -4.3069578707218170e-02 + 2.4472021032124758e-03 -2.9618039727210999e-01 + <_> + + 1 0 1965 5.0306279212236404e-02 2 -1 1966 + -5.6435600854456425e-03 -2 -3 1967 -8.9875478297472000e-03 + + 4.2249730229377747e-01 -9.2901676893234253e-02 + 6.6785961389541626e-01 6.2985196709632874e-02 + <_> + + 1 2 1968 -7.9090101644396782e-04 0 -1 1969 + -2.5300959125161171e-02 -2 -3 1970 7.8745762584730983e-04 + + 3.0849850177764893e-01 -6.3608251512050629e-02 + -1.4883120357990265e-01 2.6234000921249390e-01 + <_> + + 1 0 1971 7.6404176652431488e-02 -1 2 1972 + -7.9231243580579758e-03 -2 -3 1973 1.9256339874118567e-03 + + -4.5977321267127991e-01 -3.9364838600158691e-01 + -6.4516498241573572e-04 2.8573459386825562e-01 + <_> + + 1 0 1974 3.3896900713443756e-03 -1 2 1975 + 2.6566439191810787e-04 -2 -3 1976 -7.0364158600568771e-03 + + -4.1618600487709045e-01 8.7239697575569153e-02 + 5.4902660846710205e-01 -3.1658211350440979e-01 + <_> + + 1 0 1977 2.7734860777854919e-02 -1 2 1978 + 3.3155460841953754e-03 -2 -3 1979 5.4807748645544052e-02 + + 3.5683360695838928e-01 2.0545400679111481e-02 + -3.7979850172996521e-01 8.2199662923812866e-01 + <_> + + 0 1 1980 -3.1911249971017241e-04 -1 2 1981 + -2.3244849580805749e-04 -2 -3 1982 2.4389199912548065e-02 + + 2.3498380184173584e-01 1.5976969897747040e-01 + -1.6952790319919586e-01 3.8837739825248718e-01 + <_> + + 1 0 1983 3.7521280348300934e-02 -1 2 1984 + 5.3981738165020943e-04 -2 -3 1985 -1.1914219940081239e-03 + + -5.3004390001296997e-01 -9.2949196696281433e-02 + 2.5772979855537415e-01 -1.2804870307445526e-01 + <_> + + 0 1 1986 -1.9628699868917465e-02 2 -1 1987 + -2.6430340949445963e-03 -2 -3 1988 -1.0492499917745590e-02 + + -4.5749071240425110e-01 -6.6639073193073273e-02 + 3.7817710638046265e-01 -7.0677888579666615e-03 + <_> + + 1 0 1989 -8.1244978355243802e-04 2 -1 1990 + 1.4308369718492031e-02 -2 -3 1991 -2.6346129016019404e-04 + + 7.1544222533702850e-02 -4.6973049640655518e-01 + 3.2926559448242188e-01 -2.3322540521621704e-01 + <_> + + 1 0 1992 9.5907926559448242e-02 -1 2 1993 + -1.2872040271759033e-01 -2 -3 1994 -3.1911451369524002e-02 + + 9.9990457296371460e-01 5.7599371671676636e-01 + -7.3348528146743774e-01 -1.8063450232148170e-02 + <_> + + 1 2 1995 3.7128551048226655e-04 0 -1 1996 + -2.8491979464888573e-03 -2 -3 1997 -4.2754760943353176e-04 + + -5.4329651594161987e-01 1.0755009949207306e-01 + 2.2071920335292816e-01 -2.6160699129104614e-01 + <_> + + 1 2 1998 9.7452866612002254e-05 0 -1 1999 + 5.2659702487289906e-04 -2 -3 2000 5.9415772557258606e-04 + + -2.0488780736923218e-01 3.1935650110244751e-01 + 1.5211449563503265e-01 -2.8799989819526672e-01 + <_> + + 0 1 2001 -2.1307960560079664e-04 -1 2 2002 + -1.2103560147807002e-03 -2 -3 2003 1.2572610285133123e-03 + + 1.5206280350685120e-01 -2.3918260633945465e-01 + 3.7353378534317017e-01 -8.1597693264484406e-02 + <_> + 46 + -1.0940879583358765e+00 + + <_> + + 1 2 2004 -3.1007960438728333e-02 0 -1 2005 + -3.1969440169632435e-03 -2 -3 2006 -2.0676921121776104e-03 + + 6.8854278326034546e-01 -5.4836649447679520e-02 + -3.5974439978599548e-01 -3.0973760411143303e-02 + <_> + + 1 0 2007 -1.1122719943523407e-01 2 -1 2008 + 1.4844049699604511e-02 -2 -3 2009 -3.4631208982318640e-03 + + -1.5703879296779633e-01 -2.0413580536842346e-01 + 6.6245990991592407e-01 1.5534339845180511e-01 + <_> + + 0 1 2010 -1.2320470064878464e-01 2 -1 2011 + 1.1103290133178234e-02 -2 -3 2012 4.7404197975993156e-03 + + -5.2760660648345947e-01 -4.7932231426239014e-01 + -1.0074780136346817e-01 1.6249769926071167e-01 + <_> + + 1 2 2013 -5.8416109532117844e-03 0 -1 2014 + -5.1666028797626495e-02 -2 -3 2015 -3.9447061717510223e-03 + + -3.7591809034347534e-01 3.7338769435882568e-01 + 2.4347339570522308e-01 -1.4522999525070190e-01 + <_> + + 0 1 2016 -3.6320939660072327e-02 -1 2 2017 + 3.7123491056263447e-03 -2 -3 2018 -2.8242779895663261e-02 + + -3.6804199218750000e-01 1.0094779729843140e-01 + 4.2476901412010193e-01 -4.3828350305557251e-01 + <_> + + 1 2 2019 -2.0250169560313225e-02 0 -1 2020 + 3.0780840665102005e-02 -2 -3 2021 2.5205970741808414e-03 + + 1.6355019807815552e-01 -6.3770228624343872e-01 + -1.9899259507656097e-01 3.1258741021156311e-01 + <_> + + 0 1 2022 -4.2486261576414108e-02 2 -1 2023 + 3.0256640166044235e-02 -2 -3 2024 1.2559810420498252e-03 + + -6.1104768514633179e-01 7.7699762582778931e-01 + 6.8223267793655396e-02 -1.8402789533138275e-01 + <_> + + 0 1 2025 -1.8111230805516243e-02 2 -1 2026 + -7.0966721978038549e-04 -2 -3 2027 2.0517550874501467e-03 + + 3.7390831112861633e-01 7.1673221886157990e-02 + -2.3723709583282471e-01 4.2304378747940063e-01 + <_> + + 0 1 2028 -6.6939830780029297e-02 -1 2 2029 + -8.4355175495147705e-03 -2 -3 2030 -7.6646007597446442e-02 + + -6.4464849233627319e-01 -5.9667718410491943e-01 + -3.5360890626907349e-01 7.6701030135154724e-02 + <_> + + 0 1 2031 -1.8152770353481174e-03 -1 2 2032 + -2.7247369289398193e-03 -2 -3 2033 -5.4963980801403522e-04 + + 1.7099569737911224e-01 1.6262990236282349e-01 + -4.4764471054077148e-01 -7.4255913496017456e-02 + <_> + + 0 1 2034 -4.1336409747600555e-02 -1 2 2035 + -1.2627179920673370e-01 -2 -3 2036 -4.9632410518825054e-03 + + -3.0079290270805359e-01 -2.1949230134487152e-01 + 3.1715381145477295e-01 1.6522889956831932e-02 + <_> + + 0 1 2037 -6.8255789577960968e-02 2 -1 2038 + 1.7256699502468109e-02 -2 -3 2039 1.8318969523534179e-03 + + 3.7629279494285583e-01 6.0703051090240479e-01 + 4.4839300215244293e-02 -1.8284620344638824e-01 + <_> + + 1 0 2040 6.2703560106456280e-03 2 -1 2041 + 6.4142688643187284e-04 -2 -3 2042 -1.2087869690731168e-03 + + 1.5012329816818237e-01 -2.4387939274311066e-01 + -9.6486136317253113e-02 4.5252281427383423e-01 + <_> + + 1 2 2043 -1.3087630271911621e-02 0 -1 2044 + -2.0685649942606688e-03 -2 -3 2045 -9.9608547985553741e-02 + + 3.4508320689201355e-01 -4.1232489049434662e-02 + -5.4945659637451172e-01 -5.1996659487485886e-02 + <_> + + 1 2 2046 -3.6486559547483921e-03 0 -1 2047 + -2.8182850219309330e-03 -2 -3 2048 5.5368460714817047e-02 + + -3.3460721373558044e-01 1.5438309311866760e-01 + -2.0008920133113861e-01 2.6830759644508362e-01 + <_> + + 0 1 2049 -7.4223391711711884e-03 2 -1 2050 + -4.4916807673871517e-03 -2 -3 2051 -6.0621831566095352e-02 + + -2.5990688800811768e-01 9.8559968173503876e-02 + -3.5481810569763184e-01 4.1711899638175964e-01 + <_> + + 1 2 2052 2.3197410337161273e-04 0 -1 2053 + -2.6323291240260005e-04 -2 -3 2054 1.8173559510614723e-04 + + 1.1800730228424072e-01 -1.8469020724296570e-01 + 3.3645889163017273e-01 -1.6443650424480438e-01 + <_> + + 1 2 2055 -4.3080520117655396e-04 0 -1 2056 + 8.4635447710752487e-03 -2 -3 2057 3.2700230367481709e-03 + + -3.5056531429290771e-01 3.3979919552803040e-01 + -1.9305050373077393e-01 1.0525429993867874e-01 + <_> + + 2 1 2058 1.2329599820077419e-02 0 -1 2059 + 3.2368130632676184e-04 -2 -3 2060 -7.1359151042997837e-03 + + -7.0782758295536041e-02 4.2691200971603394e-01 + 2.4507419764995575e-01 -1.1304569989442825e-01 + <_> + + 0 1 2061 -3.8914520293474197e-02 2 -1 2062 + 6.6584121668711305e-04 -2 -3 2063 -9.3276530969887972e-04 + + -4.1401219367980957e-01 -1.2954230606555939e-01 + -2.8715679422020912e-02 2.9640379548072815e-01 + <_> + + 2 1 2064 9.1005821013823152e-04 0 -1 2065 + 7.4173710308969021e-03 -2 -3 2066 -5.9348379727452993e-04 + + 1.5225520357489586e-02 5.1878088712692261e-01 + 6.3158690929412842e-02 -1.6790659725666046e-01 + <_> + + 0 1 2067 -1.6713090008124709e-03 2 -1 2068 + -3.2247399212792516e-04 -2 -3 2069 -3.3846818841993809e-03 + + 1.8846319615840912e-01 -2.2796130180358887e-01 + 3.0563241243362427e-01 -8.1067040562629700e-02 + <_> + + 1 0 2070 9.5189079642295837e-02 2 -1 2071 + 9.7679207101464272e-04 -2 -3 2072 -1.0893770307302475e-01 + + 1.9821229577064514e-01 1.4671079814434052e-01 + -6.9909930229187012e-01 -1.1488740146160126e-01 + <_> + + 1 2 2073 -1.7448779195547104e-02 0 -1 2074 + -9.9434393632691354e-05 -2 -3 2075 6.4250029623508453e-02 + + 2.4062860012054443e-01 -8.9487351477146149e-02 + -1.7152050137519836e-01 5.1314127445220947e-01 + <_> + + 1 0 2076 5.9518171474337578e-03 -1 2 2077 + -9.0886192629113793e-04 -2 -3 2078 -5.1080051343888044e-04 + + 2.3301599919795990e-01 5.8810569345951080e-02 + -5.0240808725357056e-01 -8.0962918698787689e-02 + <_> + + 0 1 2079 -1.5467169694602489e-02 2 -1 2080 + 2.3221820592880249e-02 -2 -3 2081 3.9248089888133109e-04 + + -4.4010490179061890e-01 5.1546990871429443e-01 + -5.2290290594100952e-02 2.1555709838867188e-01 + <_> + + 0 1 2082 -1.1872940231114626e-03 -1 2 2083 + -1.1692909756675363e-03 -2 -3 2084 -1.8374159699305892e-03 + + 2.8682470321655273e-01 3.9871171116828918e-01 + -2.4273440241813660e-01 2.5974079966545105e-02 + <_> + + 0 1 2085 -3.9783148095011711e-03 2 -1 2086 + -4.7793678822927177e-04 -2 -3 2087 5.3964089602231979e-04 + + -2.5224199891090393e-01 1.0499279946088791e-01 + -4.1497600078582764e-01 1.0635569691658020e-01 + <_> + + 0 1 2088 -4.2262359056621790e-04 -1 2 2089 + -1.0138460248708725e-01 -2 -3 2090 -9.2142065986990929e-03 + + 2.1089179813861847e-01 -9.3101882934570312e-01 + -8.2452338933944702e-01 -2.4682279676198959e-02 + <_> + + 1 0 2091 4.3104309588670731e-02 -1 2 2092 + -5.3224200382828712e-03 -2 -3 2093 3.7746389862149954e-03 + + 9.0424752235412598e-01 -2.7320840954780579e-01 + -2.9543019831180573e-02 2.7356389164924622e-01 + <_> + + 1 0 2094 2.3850500583648682e-02 -1 2 2095 + -8.8544972240924835e-03 -2 -3 2096 -1.3691160082817078e-01 + + -5.1007378101348877e-01 4.8890089988708496e-01 + -5.5362242460250854e-01 2.5062739849090576e-02 + <_> + + 0 1 2097 -2.5274729356169701e-02 2 -1 2098 + 2.6481070090085268e-03 -2 -3 2099 -2.0161429711151868e-04 + + -7.3669922351837158e-01 2.6283189654350281e-01 + -2.4148160219192505e-01 5.1645949482917786e-02 + <_> + + 0 1 2100 -1.1898370459675789e-02 -1 2 2101 + -1.9360600272193551e-03 -2 -3 2102 2.1037699189037085e-03 + + -6.3804662227630615e-01 3.9121028780937195e-01 + -5.2923560142517090e-02 2.3925469815731049e-01 + <_> + + 0 1 2103 -1.3646620325744152e-02 -1 2 2104 + -8.8408291339874268e-03 -2 -3 2105 3.7220980972051620e-02 + + 4.5531919598579407e-01 -5.2776831388473511e-01 + -5.2423689514398575e-02 2.1479150652885437e-01 + <_> + + 1 2 2106 -4.2580282315611839e-03 0 -1 2107 + -4.6129771508276463e-03 -2 -3 2108 5.9317899867892265e-03 + + -5.8091402053833008e-01 9.2666886746883392e-02 + -6.7499437136575580e-04 3.6766529083251953e-01 + <_> + + 1 0 2109 9.4187082722783089e-03 -1 2 2110 + -4.1941772215068340e-03 -2 -3 2111 5.1073678769171238e-03 + + -6.1342322826385498e-01 -3.8310700654983521e-01 + 6.7254997789859772e-02 -3.9773949980735779e-01 + <_> + + 1 0 2112 -5.5304579436779022e-03 2 -1 2113 + -6.0295849107205868e-04 -2 -3 2114 -7.0414398796856403e-03 + + -1.2926359474658966e-01 1.8724639713764191e-01 + 4.7651541233062744e-01 -2.3238509893417358e-01 + <_> + + 1 0 2115 -1.3096419861540198e-03 2 -1 2116 + 3.2035118783824146e-04 -2 -3 2117 -3.3677490428090096e-03 + + -8.3683609962463379e-02 4.4803410768508911e-01 + 2.6184868812561035e-01 -2.1176619827747345e-01 + <_> + + 0 1 2118 -1.3419929891824722e-02 2 -1 2119 + 4.5043388381600380e-03 -2 -3 2120 -7.8677892452105880e-04 + + -5.1725488901138306e-01 -2.4854829907417297e-01 + 2.2026860713958740e-01 -2.9989460483193398e-02 + <_> + + 0 1 2121 -4.0467849373817444e-01 -1 2 2122 + -1.6472050547599792e-01 -2 -3 2123 -4.3211959302425385e-02 + + -8.6876207590103149e-01 -2.6331049203872681e-01 + -1.2996859848499298e-01 1.2739099562168121e-01 + <_> + + 0 1 2124 -1.7417479539290071e-03 2 -1 2125 + -8.3949731197208166e-04 -2 -3 2126 1.5101189492270350e-03 + + 8.2801252603530884e-02 -3.8465818762779236e-01 + 1.3933099806308746e-01 -3.5602769255638123e-01 + <_> + + 1 0 2127 3.6241519264876842e-03 2 -1 2128 + 1.6943299851845950e-04 -2 -3 2129 -5.5435068905353546e-02 + + 2.3847030103206635e-01 5.6582901626825333e-02 + 8.5272318124771118e-01 -1.9084540009498596e-01 + <_> + + 1 0 2130 -2.3511620238423347e-02 2 -1 2131 + -2.2539960627909750e-04 -2 -3 2132 1.6610369086265564e-02 + + -1.3226120173931122e-01 -2.0941901020705700e-03 + 4.0792500972747803e-01 -2.9247689247131348e-01 + <_> + + 0 1 2133 -6.3177421689033508e-03 -1 2 2134 + 8.5653591668233275e-04 -2 -3 2135 -1.1638339608907700e-02 + + 2.4937899410724640e-01 -1.5689609944820404e-01 + 4.2693111300468445e-01 -1.3493919745087624e-02 + <_> + + 0 1 2136 -5.1630330272018909e-03 2 -1 2137 + 4.8902099952101707e-03 -2 -3 2138 -2.9903270304203033e-02 + + 2.8233599662780762e-01 -2.2749769687652588e-01 + -3.1318700313568115e-01 7.2451077401638031e-02 + <_> + + 1 0 2139 3.1764109735377133e-04 -1 2 2140 + 5.2735407371073961e-04 -2 -3 2141 3.4350980422459543e-04 + + -1.3494649529457092e-01 -9.4839558005332947e-02 + -2.8737118840217590e-01 2.6408618688583374e-01 + <_> + 47 + -1.1282010078430176e+00 + + <_> + + 0 1 2142 2.0928289741277695e-03 2 -1 2143 + -2.0667549222707748e-02 -2 -3 2144 4.1186730377376080e-03 + + -2.4059830605983734e-01 -8.3949699997901917e-02 + 7.5294119119644165e-01 -2.5010040402412415e-01 + <_> + + 2 1 2145 -7.7038057148456573e-02 0 -1 2146 + 6.8526387214660645e-02 -2 -3 2147 -9.1197844594717026e-03 + + -1.6047920286655426e-01 5.8060508966445923e-01 + 4.0888330340385437e-01 -2.3711539804935455e-02 + <_> + + 2 1 2148 3.8453419692814350e-03 0 -1 2149 + -4.0648199617862701e-02 -2 -3 2150 -3.5154789686203003e-02 + + -3.6227381229400635e-01 2.8189870715141296e-01 + -6.3932722806930542e-01 -8.8311180472373962e-02 + <_> + + 1 0 2151 1.7193749547004700e-02 -1 2 2152 + -3.1834539026021957e-02 -2 -3 2153 5.9677828103303909e-03 + + 2.1619839966297150e-01 -6.1106377840042114e-01 + -1.3163220137357712e-03 -6.7810398340225220e-01 + <_> + + 0 1 2154 1.7432730237487704e-04 -1 2 2155 + -1.0427909903228283e-02 -2 -3 2156 -1.4324070070870221e-04 + + -1.6660380363464355e-01 3.0099079012870789e-01 + -3.6957770586013794e-01 7.5943082571029663e-02 + <_> + + 1 0 2157 -1.0312269441783428e-03 -1 2 2158 + -8.9528188109397888e-03 -2 -3 2159 5.4365568794310093e-03 + + -8.3984650671482086e-02 3.3358749747276306e-01 + -2.5666850805282593e-01 3.6911809444427490e-01 + <_> + + 1 0 2160 2.0321870688349009e-03 2 -1 2161 + 1.9954480230808258e-03 -2 -3 2162 1.6922239214181900e-02 + + -1.1628130078315735e-01 -2.2477209568023682e-01 + 3.6504098773002625e-01 1.8671670928597450e-02 + <_> + + 1 2 2163 -1.4152450021356344e-03 0 -1 2164 + 8.0416322452947497e-04 -2 -3 2165 6.2191791832447052e-02 + + -4.4372379779815674e-02 2.6297140121459961e-01 + -1.4997449517250061e-01 5.6759977340698242e-01 + <_> + + 0 1 2166 -4.4721928425133228e-03 -1 2 2167 + -1.9247440621256828e-02 -2 -3 2168 5.2884127944707870e-03 + + -2.9525101184844971e-01 -7.0941370725631714e-01 + 4.9494709819555283e-03 3.6569160223007202e-01 + <_> + + 1 0 2169 9.1529808938503265e-02 -1 2 2170 + -3.9309188723564148e-02 -2 -3 2171 -6.9177672266960144e-02 + + -4.7588708996772766e-01 -4.9558719992637634e-01 + 7.8180468082427979e-01 3.5177771002054214e-02 + <_> + + 1 0 2172 1.9501270726323128e-02 -1 2 2173 + -5.4460992105305195e-03 -2 -3 2174 1.0495989583432674e-02 + + 4.5107740163803101e-01 9.5154292881488800e-02 + -1.6815499961376190e-01 5.1015657186508179e-01 + <_> + + 1 0 2175 5.7117962278425694e-03 -1 2 2176 + -2.7439638972282410e-01 -2 -3 2177 -4.5373341999948025e-03 + + -7.4655741453170776e-01 -6.0310351848602295e-01 + 2.3245190083980560e-01 -4.1262548416852951e-02 + <_> + + 1 0 2178 4.7711891238577664e-04 -1 2 2179 + -6.9821202196180820e-03 -2 -3 2180 -1.0556570291519165e+00 + + -1.5402629971504211e-01 -5.2603191137313843e-01 + -5.0477248430252075e-01 1.4896139502525330e-01 + <_> + + 0 1 2181 -1.7868630588054657e-01 -1 2 2182 + 9.6028903499245644e-05 -2 -3 2183 1.4864769764244556e-03 + + 6.1333847045898438e-01 -1.2570370733737946e-01 + 1.5855489671230316e-01 -3.2419750094413757e-01 + <_> + + 2 1 2184 -2.7532540843822062e-04 0 -1 2185 + 1.9395699491724372e-03 -2 -3 2186 -3.0006670858711004e-03 + + 2.2301700711250305e-01 -1.4492830634117126e-01 + 2.5364619493484497e-01 -1.9060049951076508e-01 + <_> + + 2 1 2187 2.6949180755764246e-03 0 -1 2188 + -2.7354890480637550e-02 -2 -3 2189 -2.6278549805283546e-02 + + -6.9697231054306030e-01 2.6986810564994812e-01 + 8.3400028944015503e-01 -8.1475183367729187e-02 + <_> + + 0 1 2190 -1.1615309631451964e-03 -1 2 2191 + -7.9284235835075378e-03 -2 -3 2192 -4.0769609622657299e-03 + + 9.9186070263385773e-02 2.9844290018081665e-01 + 1.1436840146780014e-01 -3.5259690880775452e-01 + <_> + + 2 1 2193 1.3272130163386464e-03 0 -1 2194 + 9.6542192623019218e-03 -2 -3 2195 -1.8561830511316657e-03 + + 1.8691679835319519e-01 -3.3289530873298645e-01 + -4.8549610376358032e-01 -4.0883861482143402e-02 + <_> + + 1 0 2196 8.5922293365001678e-02 -1 2 2197 + -8.8873326778411865e-02 -2 -3 2198 -2.7235411107540131e-03 + + 3.6382618546485901e-01 -3.3766660094261169e-01 + 2.4199460446834564e-01 -4.2081810534000397e-02 + <_> + + 0 1 2199 -1.3049770146608353e-02 2 -1 2200 + -3.2052190508693457e-03 -2 -3 2201 -3.4975090529769659e-03 + + -3.0092039704322815e-01 -1.0076750069856644e-01 + -4.0278410911560059e-01 1.7511740326881409e-01 + <_> + + 1 2 2202 3.6366239655762911e-03 0 -1 2203 + -1.1586080305278301e-02 -2 -3 2204 3.9760980871506035e-04 + + 1.7796489596366882e-01 -1.6348969936370850e-01 + 6.7020449787378311e-03 4.4130641222000122e-01 + <_> + + 0 1 2205 -2.5880750268697739e-02 2 -1 2206 + 1.0445900261402130e-03 -2 -3 2207 -4.7445381060242653e-03 + + 6.0719907283782959e-01 -3.2216680049896240e-01 + 1.8654330074787140e-01 -5.8600809425115585e-02 + <_> + + 1 0 2208 7.0085371844470501e-03 -1 2 2209 + -7.0238402113318443e-03 -2 -3 2210 8.1113204360008240e-03 + + 3.1219249963760376e-01 -4.7851589322090149e-01 + -1.1469169706106186e-01 1.4005890488624573e-01 + <_> + + 1 2 2211 -4.0908880531787872e-02 0 -1 2212 + 6.7115128040313721e-03 -2 -3 2213 4.7661857679486275e-03 + + 1.1935690045356750e-01 -4.9553608894348145e-01 + 2.9291590908542275e-04 3.0523601174354553e-01 + <_> + + 2 1 2214 8.2969013601541519e-03 0 -1 2215 + -1.4058559900149703e-03 -2 -3 2216 3.8165580481290817e-03 + + 3.8395699858665466e-01 -5.8064288459718227e-03 + 8.5270447016227990e-05 -3.1768730282783508e-01 + <_> + + 0 1 2217 -1.5988849103450775e-02 2 -1 2218 + -4.2525809258222580e-02 -2 -3 2219 1.0341469943523407e-01 + + 5.8605968952178955e-01 1.5200969763100147e-02 + -4.2698180675506592e-01 9.1076821088790894e-01 + <_> + + 1 0 2220 1.5279020590241998e-04 -1 2 2221 + 4.4353670091368258e-04 -2 -3 2222 -2.1845809533260763e-04 + + -1.8349540233612061e-01 1.8386720120906830e-01 + -3.0458870530128479e-01 9.6679449081420898e-02 + <_> + + 0 1 2223 -6.9333161227405071e-03 2 -1 2224 + 2.6824630796909332e-02 -2 -3 2225 2.8827119618654251e-02 + + 1.9829869270324707e-01 5.7704108953475952e-01 + -1.3593469560146332e-01 1.8093059957027435e-01 + <_> + + 1 0 2226 3.4493818879127502e-02 -1 2 2227 + -3.9107841439545155e-03 -2 -3 2228 2.0955900254193693e-04 + + 2.7782711386680603e-01 1.0099980235099792e-01 + -1.6889050602912903e-02 -3.4672379493713379e-01 + <_> + + 1 2 2229 -1.1503810063004494e-02 0 -1 2230 + -5.8503649197518826e-03 -2 -3 2231 -1.9477239402476698e-04 + + 2.9069650173187256e-01 -5.7935047149658203e-01 + -1.5547400712966919e-01 8.7707668542861938e-02 + <_> + + 1 2 2232 -2.4192599812522531e-04 0 -1 2233 + -8.7722227908670902e-04 -2 -3 2234 -8.8649448007345200e-03 + + -4.9958980083465576e-01 2.2867499291896820e-01 + 1.4817740023136139e-01 -1.4039020240306854e-01 + <_> + + 1 0 2235 6.6976482048630714e-03 2 -1 2236 + 1.6602370305918157e-04 -2 -3 2237 5.6860040873289108e-02 + + -1.7738009989261627e-01 2.5650730729103088e-01 + 1.7361199483275414e-02 -7.4021261930465698e-01 + <_> + + 1 0 2238 2.4098889902234077e-02 2 -1 2239 + 8.0347352195531130e-04 -2 -3 2240 6.9724403321743011e-02 + + -5.3940677642822266e-01 1.4385139942169189e-01 + -1.0675229877233505e-01 5.4217422008514404e-01 + <_> + + 1 0 2241 9.0714782709255815e-04 -1 2 2242 + -7.3141716711688787e-05 -2 -3 2243 -1.5573799610137939e-03 + + 2.4376200139522552e-01 7.3325037956237793e-02 + 4.9846198409795761e-02 -3.1094640493392944e-01 + <_> + + 0 1 2244 -1.3867990113794804e-02 -1 2 2245 + 1.1202249443158507e-03 -2 -3 2246 -3.7206329405307770e-02 + + -6.6426891088485718e-01 7.0658437907695770e-02 + 4.2091751098632812e-01 -2.5585201382637024e-01 + <_> + + 1 2 2247 -4.2576639680191875e-04 0 -1 2248 + 5.4934259504079819e-02 -2 -3 2249 9.6833100542426109e-04 + + -3.0530530214309692e-01 2.7118149399757385e-01 + -6.7041292786598206e-02 1.7276880145072937e-01 + <_> + + 0 1 2250 7.9393703490495682e-03 -1 2 2251 + 5.0757948309183121e-02 -2 -3 2252 -3.2133560627698898e-02 + + -5.3697269409894943e-02 4.0109890699386597e-01 + 4.3551141023635864e-01 -4.1936281323432922e-01 + <_> + + 1 0 2253 9.9633932113647461e-02 -1 2 2254 + -4.5324079692363739e-03 -2 -3 2255 7.6392642222344875e-04 + + -6.1999887228012085e-01 1.6984449326992035e-01 + 1.0533300042152405e-01 -2.1900549530982971e-01 + <_> + + 1 0 2256 -1.3120270334184170e-02 2 -1 2257 + -1.2095270212739706e-03 -2 -3 2258 -6.0685798525810242e-03 + + -5.1372468471527100e-02 -1.2173540145158768e-01 + -3.2418820261955261e-01 6.5560877323150635e-01 + <_> + + 0 1 2259 -4.4329889118671417e-02 -1 2 2260 + -1.1334549635648727e-02 -2 -3 2261 -9.7028171876445413e-04 + + -2.6503491401672363e-01 -7.6205557584762573e-01 + -9.5501512289047241e-02 1.5263360738754272e-01 + <_> + + 0 1 2262 -8.4918709471821785e-03 -1 2 2263 + -6.9846503436565399e-02 -2 -3 2264 9.2466361820697784e-02 + + 1.9973739981651306e-01 3.1325021386146545e-01 + -1.1733359843492508e-01 7.7850347757339478e-01 + <_> + + 0 1 2265 -9.5799759030342102e-02 2 -1 2266 + 5.1276460289955139e-03 -2 -3 2267 6.1059608124196529e-03 + + 7.8442037105560303e-01 1.5389220416545868e-01 + -1.3577620685100555e-01 2.1575249731540680e-01 + <_> + + 2 1 2268 -5.5722601246088743e-04 0 -1 2269 + 5.2772291004657745e-02 -2 -3 2270 -3.7010889500379562e-03 + + -1.3534410297870636e-01 2.9378059506416321e-01 + -1.7292410135269165e-01 2.3805269598960876e-01 + <_> + + 1 0 2271 -1.3051830464974046e-03 -1 2 2272 + -4.0903348475694656e-02 -2 -3 2273 -6.3687269575893879e-03 + + -5.5020369589328766e-02 -3.0940970778465271e-01 + 6.5783101320266724e-01 9.2643633484840393e-02 + <_> + + 2 1 2274 1.4673050027340651e-03 0 -1 2275 + 5.3080540150403976e-02 -2 -3 2276 4.5696222223341465e-03 + + 1.1342869699001312e-01 -3.8801661133766174e-01 + 8.7235711514949799e-02 -5.5333012342453003e-01 + <_> + + 2 1 2277 2.7171480469405651e-03 0 -1 2278 + -7.5547560118138790e-03 -2 -3 2279 2.1428259788081050e-04 + + 4.6386051177978516e-01 2.2095510736107826e-02 + -1.7482960224151611e-01 1.6784119606018066e-01 + <_> + + 1 2 2280 1.1644139885902405e-03 0 -1 2281 + 2.7417868841439486e-03 -2 -3 2282 5.1555588841438293e-02 + + -3.0654639005661011e-01 5.7464569807052612e-02 + 1.3891890645027161e-01 -4.4362550973892212e-01 + <_> + 46 + -1.0841189622879028e+00 + + <_> + + 1 0 2283 -1.9345199689269066e-03 -1 2 2284 + 5.4789008572697639e-03 -2 -3 2285 1.3723999727517366e-03 + + -2.9038429260253906e-01 -4.9600031226873398e-02 + 8.1412100791931152e-01 -4.1888630390167236e-01 + <_> + + 1 2 2286 2.6495110243558884e-02 0 -1 2287 + -1.3697579503059387e-01 -2 -3 2288 -3.0566600617021322e-04 + + 2.4463020265102386e-01 -1.4825659990310669e-01 + 6.5781980752944946e-01 -7.9236596822738647e-02 + <_> + + 0 1 2289 -1.9925139844417572e-02 -1 2 2290 + -1.3427959382534027e-01 -2 -3 2291 -1.0180550161749125e-03 + + -7.2399538755416870e-01 5.6490647792816162e-01 + 1.0791130363941193e-01 -1.4493170380592346e-01 + <_> + + 2 1 2292 -1.6956209437921643e-03 0 -1 2293 + -3.9232008159160614e-02 -2 -3 2294 -1.1985700111836195e-03 + + 2.0442679524421692e-01 -2.2484399378299713e-01 + -9.8312400281429291e-02 2.5217679142951965e-01 + <_> + + 1 0 2295 5.6637298315763474e-02 -1 2 2296 + -1.4088810421526432e-02 -2 -3 2297 1.9742019474506378e-02 + + 4.2156541347503662e-01 -5.4424422979354858e-01 + -4.3038509786128998e-02 3.9660850167274475e-01 + <_> + + 0 1 2298 -3.7790019065141678e-02 -1 2 2299 + -2.1278490126132965e-01 -2 -3 2300 -7.5766840018332005e-04 + + -5.3746891021728516e-01 2.9742780327796936e-01 + -1.7239089310169220e-01 9.4371169805526733e-02 + <_> + + 0 1 2301 1.0515520116314292e-03 -1 2 2302 + -4.6967338770627975e-02 -2 -3 2303 -6.6702580079436302e-03 + + -9.4606198370456696e-02 3.8049909472465515e-01 + -3.6735290288925171e-01 1.8134810030460358e-01 + <_> + + 0 1 2304 -8.8434442877769470e-03 -1 2 2305 + -7.5162857770919800e-02 -2 -3 2306 6.0678281442960724e-05 + + 1.9733619689941406e-01 2.8719368577003479e-01 + -2.1481469273567200e-01 4.5404769480228424e-02 + <_> + + 0 1 2307 -2.6157319545745850e-02 -1 2 2308 + -2.5265390053391457e-02 -2 -3 2309 -5.3271669894456863e-03 + + -5.9915411472320557e-01 -3.2973399758338928e-01 + 4.3388798832893372e-01 1.2896250002086163e-02 + <_> + + 0 1 2310 -4.6350698918104172e-02 2 -1 2311 + 8.5780251538380980e-04 -2 -3 2312 8.7990947067737579e-03 + + -4.4396370649337769e-01 -1.0408560186624527e-01 + 2.6796650141477585e-02 3.4592410922050476e-01 + <_> + + 2 1 2313 -8.6540228221565485e-04 0 -1 2314 + 1.4915770152583718e-03 -2 -3 2315 -1.7994260415434837e-02 + + -3.0356478691101074e-01 2.4568190798163414e-02 + -3.6277890205383301e-01 2.3864120244979858e-01 + <_> + + 1 0 2316 3.1142059713602066e-02 -1 2 2317 + -1.3936620205640793e-02 -2 -3 2318 -2.1907410700805485e-04 + + 3.8710731267929077e-01 5.2351367473602295e-01 + -1.7730639874935150e-01 5.4297018796205521e-02 + <_> + + 2 1 2319 -1.5399450203403831e-03 0 -1 2320 + 2.0680578891187906e-03 -2 -3 2321 6.5148430876433849e-03 + + -1.2532320618629456e-01 1.5583939850330353e-01 + 2.7854940295219421e-01 -6.9196671247482300e-01 + <_> + + 1 0 2322 3.9056401699781418e-02 2 -1 2323 + -4.0204878896474838e-03 -2 -3 2324 2.9492459725588560e-03 + + -4.3681609630584717e-01 8.3736188709735870e-02 + -2.3137259483337402e-01 5.8771818876266479e-01 + <_> + + 2 1 2325 4.0582148358225822e-03 0 -1 2326 + 5.4531730711460114e-02 -2 -3 2327 2.4824589490890503e-03 + + 2.7056580781936646e-01 -3.6512500047683716e-01 + -2.2614318877458572e-03 3.5627979040145874e-01 + <_> + + 0 1 2328 -4.5967500656843185e-02 -1 2 2329 + -7.7245971187949181e-03 -2 -3 2330 1.0509139858186245e-02 + + -3.6472341418266296e-01 -3.5956159234046936e-01 + -1.1801080545410514e-03 2.6658898591995239e-01 + <_> + + 2 1 2331 2.7509370818734169e-02 0 -1 2332 + -3.8485318422317505e-02 -2 -3 2333 8.4051601588726044e-03 + + -5.8312857151031494e-01 2.4421650171279907e-01 + -1.2067990005016327e-01 2.0528540015220642e-01 + <_> + + 1 2 2334 -4.0405229665338993e-03 0 -1 2335 + 1.5476900443900377e-04 -2 -3 2336 2.4814540665829554e-05 + + 3.1298181414604187e-01 -2.5597780942916870e-01 + -2.2016249597072601e-01 5.4762478917837143e-02 + <_> + + 1 2 2337 -2.0571500062942505e-03 0 -1 2338 + -2.5400029495358467e-02 -2 -3 2339 -9.7940629348158836e-04 + + 1.5875819325447083e-01 -2.5695261359214783e-01 + -4.8633909225463867e-01 1.3700939714908600e-01 + <_> + + 1 0 2340 2.1806131117045879e-03 2 -1 2341 + -3.5455688834190369e-02 -2 -3 2342 7.0310868322849274e-03 + + -1.5206259489059448e-01 2.2079099714756012e-01 + -1.0352379828691483e-01 7.8391069173812866e-01 + <_> + + 2 1 2343 -1.9015279831364751e-03 0 -1 2344 + -2.7523210272192955e-02 -2 -3 2345 1.1140380054712296e-02 + + 2.2670629620552063e-01 -1.4048579335212708e-01 + 3.8015339523553848e-02 4.5577189326286316e-01 + <_> + + 0 1 2346 -1.4077059924602509e-02 -1 2 2347 + -7.5063481926918030e-03 -2 -3 2348 3.4938179887831211e-03 + + -3.4491220116615295e-01 2.4528980255126953e-01 + -1.3371880352497101e-01 1.5036830306053162e-01 + <_> + + 1 0 2349 5.0538990646600723e-02 -1 2 2350 + 5.9616268845275044e-04 -2 -3 2351 -2.0425749942660332e-02 + + 3.9677879214286804e-01 -1.6664770245552063e-01 + -3.4699028730392456e-01 1.3850739598274231e-01 + <_> + + 0 1 2352 -5.2063791081309319e-03 -1 2 2353 + -7.5247389031574130e-04 -2 -3 2354 -5.4832808673381805e-02 + + -3.6672219634056091e-01 -2.6418569684028625e-01 + 2.7295270562171936e-01 -3.5999810788780451e-03 + <_> + + 1 2 2355 1.7384309321641922e-02 0 -1 2356 + 8.1398971378803253e-03 -2 -3 2357 5.3603048436343670e-03 + + -9.5032609999179840e-02 3.2227438688278198e-01 + -1.8586769700050354e-02 4.8577728867530823e-01 + <_> + + 0 1 2358 -6.7889019846916199e-03 -1 2 2359 + -2.6219699066132307e-04 -2 -3 2360 -6.3086668960750103e-03 + + 4.3564158678054810e-01 -1.8974490463733673e-01 + -3.2145148515701294e-01 9.9988803267478943e-02 + <_> + + 1 0 2361 -7.5333809945732355e-04 -1 2 2362 + -5.1618018187582493e-04 -2 -3 2363 4.9971960484981537e-02 + + -6.4324781298637390e-02 4.0329611301422119e-01 + -1.0619989782571793e-01 7.8842008113861084e-01 + <_> + + 0 1 2364 -1.6776630282402039e-01 2 -1 2365 + 1.5873169759288430e-03 -2 -3 2366 -1.5413289656862617e-03 + + 8.3238917589187622e-01 -1.4161799848079681e-01 + -1.1225470155477524e-01 2.1630200743675232e-01 + <_> + + 1 2 2367 -6.0930051840841770e-03 0 -1 2368 + 1.2093319557607174e-02 -2 -3 2369 -1.0354000143706799e-02 + + 2.8332099318504333e-01 -7.5473171472549438e-01 + 3.1173440814018250e-01 -8.3147212862968445e-02 + <_> + + 1 2 2370 -2.2508190572261810e-01 0 -1 2371 + -3.9419779181480408e-01 -2 -3 2372 -7.0281741209328175e-03 + + 7.2753679752349854e-01 -4.7205528616905212e-01 + 2.6742509007453918e-01 -2.3675439879298210e-02 + <_> + + 0 1 2373 -1.0977389663457870e-01 -1 2 2374 + -1.8981259316205978e-02 -2 -3 2375 -1.5975029673427343e-03 + + 3.2995739579200745e-01 -4.1107800602912903e-01 + 3.9100599288940430e-01 -3.0054800212383270e-02 + <_> + + 2 1 2376 3.3699660561978817e-03 0 -1 2377 + 2.8608400374650955e-02 -2 -3 2378 1.1234980076551437e-02 + + -2.6757821440696716e-01 5.4922807216644287e-01 + 7.9798206686973572e-02 -4.9347519874572754e-01 + <_> + + 2 1 2379 1.0005270130932331e-02 0 -1 2380 + -1.3333059847354889e-01 -2 -3 2381 1.0838189627975225e-03 + + 4.3375509977340698e-01 1.4595700427889824e-02 + 9.0088322758674622e-03 -2.6673930883407593e-01 + <_> + + 1 0 2382 1.8866240279749036e-03 2 -1 2383 + -1.9594319164752960e-02 -2 -3 2384 -4.0433141402900219e-03 + + 1.6358950734138489e-01 2.3428240790963173e-02 + 1.8105390667915344e-01 -3.7628519535064697e-01 + <_> + + 1 2 2385 -1.3283960521221161e-01 0 -1 2386 + 3.8986348954495043e-05 -2 -3 2387 3.0710658757016063e-04 + + -4.7917541116476059e-02 5.7672798633575439e-01 + -1.0200879722833633e-01 1.3613240420818329e-01 + <_> + + 0 1 2388 -4.0010150521993637e-02 -1 2 2389 + -1.1752990540117025e-03 -2 -3 2390 -4.5838830992579460e-03 + + 7.0342528820037842e-01 1.1457219719886780e-01 + 7.0621937513351440e-02 -2.1597090363502502e-01 + <_> + + 1 0 2391 5.3299739956855774e-02 2 -1 2392 + 1.9961010664701462e-02 -2 -3 2393 -1.4994270168244839e-02 + + -1.6445639729499817e-01 4.0419510006904602e-01 + -4.9861040711402893e-01 6.1822768300771713e-02 + <_> + + 1 0 2394 4.2854552157223225e-03 -1 2 2395 + -1.3991270214319229e-02 -2 -3 2396 9.9598374217748642e-03 + + -7.2749477624893188e-01 1.5665039420127869e-01 + -1.2152709811925888e-01 2.4375760555267334e-01 + <_> + + 0 1 2397 -6.1463691294193268e-02 2 -1 2398 + 8.1084080738946795e-04 -2 -3 2399 1.4836339978501201e-03 + + -4.9159640073776245e-01 4.0312820672988892e-01 + 5.2907239645719528e-02 -2.0971420407295227e-01 + <_> + + 0 1 2400 2.8651900356635451e-04 2 -1 2401 + -4.9405667232349515e-04 -2 -3 2402 -1.3786340132355690e-03 + + -5.8905839920043945e-02 3.8144549727439880e-01 + -4.4638028740882874e-01 4.1437059640884399e-01 + <_> + + 1 0 2403 9.0396329760551453e-03 2 -1 2404 + 1.5593219723086804e-04 -2 -3 2405 -1.1492449790239334e-02 + + -5.8979207277297974e-01 1.4469850063323975e-01 + -6.2305951118469238e-01 -2.8079420328140259e-02 + <_> + + 0 1 2406 -1.0058670304715633e-02 -1 2 2407 + 2.8506040107458830e-03 -2 -3 2408 -1.0550140403211117e-02 + + 1.3063749670982361e-01 -1.5896910429000854e-01 + -5.8578401803970337e-01 4.1516658663749695e-01 + <_> + + 0 1 2409 -2.6834249496459961e-02 -1 2 2410 + -6.7446259781718254e-03 -2 -3 2411 -1.9539019558578730e-03 + + -2.3982690274715424e-01 -3.0731248855590820e-01 + 2.6545688509941101e-01 -2.7655568555928767e-04 + <_> + + 1 2 2412 -1.5296439826488495e-01 0 -1 2413 + 1.3547400012612343e-02 -2 -3 2414 4.4966558925807476e-03 + + 5.4796701669692993e-01 7.3741371743381023e-03 + -3.9956450928002596e-04 -3.4183570742607117e-01 + <_> + + 0 1 2415 -9.6259176731109619e-02 2 -1 2416 + 6.0006431303918362e-03 -2 -3 2417 4.8557221889495850e-03 + + -3.4981849789619446e-01 4.8977410793304443e-01 + 9.2725560069084167e-02 -1.3060179352760315e-01 + <_> + + 1 2 2418 -1.2333790073171258e-03 0 -1 2419 + -4.2365258559584618e-04 -2 -3 2420 8.3003565669059753e-03 + + 2.4704679846763611e-01 -3.9149808883666992e-01 + 9.2340186238288879e-03 4.0348419547080994e-01 + <_> + 44 + -1.1084890365600586e+00 + + <_> + + 2 1 2421 2.8592639137059450e-03 0 -1 2422 + -1.5535679645836353e-02 -2 -3 2423 -2.3885839618742466e-03 + + 8.2635468244552612e-01 2.2793740034103394e-02 + 6.7295722663402557e-02 -3.1476849317550659e-01 + <_> + + 0 1 2424 1.4029210433363914e-03 -1 2 2425 + -4.5515298843383789e-03 -2 -3 2426 9.4592738896608353e-03 + + -1.0290689766407013e-01 -3.2368329167366028e-01 + 5.4250991344451904e-01 -3.0348530411720276e-01 + <_> + + 1 0 2427 5.4062008857727051e-03 -1 2 2428 + -2.6852379087358713e-03 -2 -3 2429 -6.2019047618377954e-05 + + -2.8486549854278564e-01 2.6024919748306274e-01 + 1.6827000677585602e-01 -2.3859730362892151e-01 + <_> + + 1 0 2430 2.4147080257534981e-02 -1 2 2431 + 1.3977369526401162e-03 -2 -3 2432 2.0164279267191887e-02 + + 4.8240968585014343e-01 -3.6230188608169556e-01 + -3.6146581172943115e-02 5.0473397970199585e-01 + <_> + + 0 1 2433 -6.1244291067123413e-01 2 -1 2434 + 9.0631619095802307e-03 -2 -3 2435 1.7811909317970276e-01 + + -4.8220318555831909e-01 -5.7859402894973755e-01 + 8.5012361407279968e-02 -6.3362121582031250e-01 + <_> + + 1 0 2436 2.6881069061346352e-04 -1 2 2437 + -1.2180560268461704e-02 -2 -3 2438 4.0606390684843063e-03 + + -1.6075380146503448e-01 -6.5734118223190308e-01 + 5.4012559354305267e-02 4.9817681312561035e-01 + <_> + + 0 1 2439 -3.6952861119061708e-03 -1 2 2440 + -6.8888221867382526e-03 -2 -3 2441 2.7258940972387791e-03 + + -2.9826200008392334e-01 6.1437392234802246e-01 + -8.3065047860145569e-02 1.8066459894180298e-01 + <_> + + 2 1 2442 9.8391417413949966e-03 0 -1 2443 + 1.4573390362784266e-03 -2 -3 2444 -2.3016060004010797e-04 + + -4.8802070319652557e-02 2.9650750756263733e-01 + 8.3583436906337738e-02 -2.4457779526710510e-01 + <_> + + 1 2 2445 -1.3347089989110827e-03 0 -1 2446 + -2.3516249656677246e-01 -2 -3 2447 -3.1839110888540745e-03 + + -3.9780059456825256e-01 2.9200470447540283e-01 + 1.5484599769115448e-01 -1.3911180198192596e-01 + <_> + + 0 1 2448 -5.9498839080333710e-02 2 -1 2449 + 2.9865070246160030e-04 -2 -3 2450 -2.1592311095446348e-03 + + -8.0241578817367554e-01 -1.7932119965553284e-01 + -1.9703079760074615e-01 1.5901389718055725e-01 + <_> + + 0 1 2451 -8.7727643549442291e-02 -1 2 2452 + 1.8073969986289740e-03 -2 -3 2453 -3.0411710031330585e-04 + + 2.3391810059547424e-01 -1.9777239859104156e-01 + -2.2787599265575409e-01 2.3480290174484253e-01 + <_> + + 0 1 2454 -3.6778930574655533e-02 -1 2 2455 + -8.4806662052869797e-03 -2 -3 2456 4.4526819139719009e-02 + + 6.3471937179565430e-01 3.4320148825645447e-01 + -3.2206610776484013e-03 -3.3057790994644165e-01 + <_> + + 1 2 2457 -1.1732319835573435e-03 0 -1 2458 + 1.4339870540425181e-03 -2 -3 2459 7.7017117291688919e-04 + + -3.2894629240036011e-01 2.6812461018562317e-01 + 1.5722079575061798e-01 -1.2080919742584229e-01 + <_> + + 1 0 2460 5.0579622620716691e-04 -1 2 2461 + -1.6109919548034668e-01 -2 -3 2462 -9.3872181605547667e-04 + + 1.6917209327220917e-01 5.4838567972183228e-01 + 1.3432510197162628e-01 -1.8490299582481384e-01 + <_> + + 1 0 2463 1.0552279651165009e-02 2 -1 2464 + 4.1157208383083344e-02 -2 -3 2465 -1.3245060108602047e-03 + + -4.0745589137077332e-01 7.5326120853424072e-01 + -1.1372119933366776e-01 1.1744459718465805e-01 + <_> + + 1 0 2466 -7.3126708157360554e-03 -1 2 2467 + -1.5847360715270042e-02 -2 -3 2468 -5.2730008028447628e-03 + + -7.3187656700611115e-02 -4.7248768806457520e-01 + -3.9433181285858154e-01 3.2054188847541809e-01 + <_> + + 0 1 2469 -1.0163930244743824e-02 -1 2 2470 + -1.4269599691033363e-02 -2 -3 2471 -2.8677590307779610e-04 + + -5.2099817991256714e-01 4.4472008943557739e-01 + 1.0787820070981979e-01 -1.3239330053329468e-01 + <_> + + 1 2 2472 -4.4711050577461720e-04 0 -1 2473 + 6.9207558408379555e-03 -2 -3 2474 -4.7490649740211666e-04 + + -2.1184509992599487e-01 7.1038311719894409e-01 + -9.0368412435054779e-02 1.9339320063591003e-01 + <_> + + 0 1 2475 -1.4192230068147182e-02 -1 2 2476 + -5.9010402765125036e-04 -2 -3 2477 2.2904858924448490e-03 + + -3.8774991035461426e-01 4.2241969704627991e-01 + -8.0403536558151245e-02 1.7335900664329529e-01 + <_> + + 0 1 2478 -2.5104399770498276e-02 -1 2 2479 + -9.7052762284874916e-03 -2 -3 2480 2.7441041311249137e-04 + + -6.0312938690185547e-01 -6.5721738338470459e-01 + -5.2042860537767410e-02 1.8078009784221649e-01 + <_> + + 0 1 2481 -2.6883379905484617e-04 -1 2 2482 + 8.5731758736073971e-04 -2 -3 2483 -7.1471570990979671e-03 + + 1.8486160039901733e-01 3.6701809614896774e-02 + 3.8019171357154846e-01 -3.1314790248870850e-01 + <_> + + 0 1 2484 -5.9650279581546783e-03 2 -1 2485 + 6.5897651948034763e-03 -2 -3 2486 5.0898519111797214e-04 + + -3.7518349289894104e-01 2.1948930621147156e-01 + 5.8855868875980377e-02 -2.6831701397895813e-01 + <_> + + 0 1 2487 -1.9406380131840706e-02 2 -1 2488 + 1.0682499967515469e-02 -2 -3 2489 5.9157088398933411e-03 + + -4.0213540196418762e-01 6.6164708137512207e-01 + 3.6718819290399551e-02 -4.7886928915977478e-01 + <_> + + 0 1 2490 -4.9229031428694725e-03 -1 2 2491 + -1.2417170219123363e-02 -2 -3 2492 5.5979369208216667e-03 + + 2.2026430070400238e-01 -4.9814000725746155e-01 + -4.0141601115465164e-02 7.9332500696182251e-01 + <_> + + 0 1 2493 -1.8435899913311005e-01 2 -1 2494 + 6.4280577003955841e-02 -2 -3 2495 -1.6670690383762121e-03 + + 8.2392162084579468e-01 -5.1533687114715576e-01 + -5.7897537946701050e-01 3.1020650640130043e-02 + <_> + + 1 0 2496 4.7475788742303848e-02 2 -1 2497 + 2.5915699079632759e-03 -2 -3 2498 -6.8349228240549564e-04 + + 1.5852110087871552e-01 -2.8132149577140808e-01 + -8.4496207535266876e-02 3.4085351228713989e-01 + <_> + + 0 1 2499 -8.0965347588062286e-03 2 -1 2500 + 2.0750269293785095e-02 -2 -3 2501 2.0832920563407242e-04 + + 6.4384061098098755e-01 4.5479089021682739e-01 + -1.0736659914255142e-01 1.3257840275764465e-01 + <_> + + 0 1 2502 -3.6361071397550404e-04 -1 2 2503 + -6.1230720020830631e-03 -2 -3 2504 -4.2420169338583946e-03 + + 1.8995989859104156e-01 -5.5252599716186523e-01 + 2.9558050632476807e-01 -7.1881696581840515e-02 + <_> + + 0 1 2505 -3.2453850144520402e-04 2 -1 2506 + 1.2140260078012943e-02 -2 -3 2507 -1.8192020070273429e-04 + + -2.1697629988193512e-01 -3.1753998994827271e-01 + -1.1777029931545258e-01 1.7208409309387207e-01 + <_> + + 0 1 2508 -3.0392920598387718e-03 2 -1 2509 + 2.8347579063847661e-04 -2 -3 2510 -2.0839450880885124e-03 + + 1.8131990730762482e-01 1.4752319455146790e-01 + 1.2602719664573669e-01 -2.3448009788990021e-01 + <_> + + 2 1 2511 -1.5735890716314316e-02 0 -1 2512 + -5.9783339500427246e-02 -2 -3 2513 8.1148296594619751e-02 + + -3.7624269723892212e-01 1.0452839732170105e-01 + -4.6331068873405457e-01 1.4930450357496738e-02 + <_> + + 1 0 2514 5.8228247798979282e-03 2 -1 2515 + -5.7364261010661721e-04 -2 -3 2516 -3.6678448668681085e-04 + + -7.1261131763458252e-01 -3.9293140172958374e-02 + -1.0198889672756195e-01 4.7379100322723389e-01 + <_> + + 1 2 2517 -9.1290572891011834e-04 0 -1 2518 + 1.2561770156025887e-02 -2 -3 2519 -7.6223909854888916e-04 + + 3.5364340990781784e-02 4.8163351416587830e-01 + 4.6516609191894531e-01 -1.5139210224151611e-01 + <_> + + 0 1 2520 1.8540889723226428e-03 -1 2 2521 + -1.8188059329986572e-02 -2 -3 2522 2.5648679584264755e-02 + + 1.1853530257940292e-01 5.0805187225341797e-01 + -2.3640629649162292e-01 2.6991719007492065e-01 + <_> + + 0 1 2523 -2.5939470157027245e-02 2 -1 2524 + 9.7436201758682728e-04 -2 -3 2525 -1.2310179881751537e-03 + + -6.1304092407226562e-01 -1.6751369833946228e-01 + -2.6179370284080505e-01 1.2718600034713745e-01 + <_> + + 0 1 2526 -7.0769861340522766e-02 2 -1 2527 + 6.8592047318816185e-04 -2 -3 2528 7.2288517840206623e-03 + + 3.6499670147895813e-01 3.1916418671607971e-01 + -1.1326509714126587e-01 2.3138450086116791e-01 + <_> + + 0 1 2529 -4.7549661248922348e-03 -1 2 2530 + 3.8560681045055389e-02 -2 -3 2531 3.3737360499799252e-03 + + 1.2249550223350525e-01 -2.2969830036163330e-01 + -2.9323069378733635e-02 7.3215091228485107e-01 + <_> + + 0 1 2532 -1.4671970158815384e-02 -1 2 2533 + 3.5087150172330439e-04 -2 -3 2534 -2.0783280488103628e-03 + + -5.2395147085189819e-01 9.8115980625152588e-02 + 4.0350338816642761e-01 -2.2959670424461365e-01 + <_> + + 1 0 2535 -3.7065339274704456e-03 2 -1 2536 + 4.0150329470634460e-02 -2 -3 2537 -6.1276711523532867e-02 + + -9.2062972486019135e-02 -7.1320801973342896e-01 + 4.4615340232849121e-01 5.8714438229799271e-02 + <_> + + 1 2 2538 -9.9730096757411957e-02 0 -1 2539 + -7.7125482494011521e-04 -2 -3 2540 1.3902420178055763e-03 + + -1.4246919751167297e-01 5.1187419891357422e-01 + 1.8041240051388741e-02 -2.5729590654373169e-01 + <_> + + 0 1 2541 -2.5304889306426048e-02 -1 2 2542 + 2.5176260620355606e-02 -2 -3 2543 -2.7789679169654846e-01 + + -3.9365610480308533e-01 -1.7298270016908646e-02 + -5.1464182138442993e-01 4.1422238945960999e-01 + <_> + + 1 0 2544 4.6188719570636749e-02 -1 2 2545 + -1.7873500473797321e-03 -2 -3 2546 -1.2076550163328648e-02 + + -4.1546550393104553e-01 2.9358920454978943e-01 + 3.0501538515090942e-01 -8.3189137279987335e-02 + <_> + + 0 1 2547 -5.4004848934710026e-03 -1 2 2548 + -9.4532333314418793e-03 -2 -3 2549 -1.6526769613847136e-03 + + -4.8242959380149841e-01 -4.1864201426506042e-01 + -4.7690790891647339e-01 6.9955162703990936e-02 + <_> + + 0 1 2550 -3.1153310090303421e-02 2 -1 2551 + 5.1554460078477859e-03 -2 -3 2552 -2.7182319900020957e-04 + + 6.2633192539215088e-01 -2.2152930498123169e-01 + -2.8926940634846687e-02 3.6499640345573425e-01 + + <_> + + <_> + 8 7 12 1 -1. + <_> + 8 7 6 1 2. + 1 + <_> + + <_> + 4 7 8 6 -1. + <_> + 6 7 4 6 2. + <_> + + <_> + 5 3 12 12 -1. + <_> + 9 7 4 4 9. + <_> + + <_> + 1 8 12 12 -1. + <_> + 1 14 12 6 2. + <_> + + <_> + 5 9 9 5 -1. + <_> + 8 9 3 5 3. + <_> + + <_> + 5 7 9 6 -1. + <_> + 8 7 3 6 3. + <_> + + <_> + 2 0 18 15 -1. + <_> + 2 5 18 5 3. + <_> + + <_> + 7 1 9 9 -1. + <_> + 7 4 9 3 3. + <_> + + <_> + 8 19 3 1 -1. + <_> + 9 19 1 1 3. + <_> + + <_> + 5 17 2 2 -1. + <_> + 5 17 1 1 2. + <_> + 6 18 1 1 2. + <_> + + <_> + 5 17 2 2 -1. + <_> + 5 17 1 1 2. + <_> + 6 18 1 1 2. + <_> + + <_> + 10 18 3 1 -1. + <_> + 11 18 1 1 3. + <_> + + <_> + 7 7 9 7 -1. + <_> + 10 7 3 7 3. + <_> + + <_> + 6 8 12 5 -1. + <_> + 9 8 6 5 2. + <_> + + <_> + 13 1 6 7 -1. + <_> + 13 1 3 7 2. + 1 + <_> + + <_> + 5 2 12 15 -1. + <_> + 9 7 4 5 9. + <_> + + <_> + 6 5 14 1 -1. + <_> + 6 5 7 1 2. + 1 + <_> + + <_> + 9 9 10 1 -1. + <_> + 9 9 5 1 2. + 1 + <_> + + <_> + 2 9 9 3 -1. + <_> + 5 9 3 3 3. + <_> + + <_> + 0 8 20 12 -1. + <_> + 0 14 20 6 2. + <_> + + <_> + 0 5 4 13 -1. + <_> + 2 5 2 13 2. + <_> + + <_> + 11 18 3 2 -1. + <_> + 12 18 1 2 3. + <_> + + <_> + 11 18 3 1 -1. + <_> + 12 18 1 1 3. + <_> + + <_> + 11 19 3 1 -1. + <_> + 12 19 1 1 3. + <_> + + <_> + 10 9 9 3 -1. + <_> + 13 9 3 3 3. + <_> + + <_> + 5 8 8 7 -1. + <_> + 7 8 4 7 2. + <_> + + <_> + 8 6 9 8 -1. + <_> + 11 6 3 8 3. + <_> + + <_> + 4 18 2 2 -1. + <_> + 4 18 1 1 2. + <_> + 5 19 1 1 2. + <_> + + <_> + 4 18 2 2 -1. + <_> + 4 18 1 1 2. + <_> + 5 19 1 1 2. + <_> + + <_> + 7 6 8 14 -1. + <_> + 9 6 4 14 2. + <_> + + <_> + 16 13 4 3 -1. + <_> + 15 14 4 1 3. + 1 + <_> + + <_> + 16 13 4 2 -1. + <_> + 16 13 2 2 2. + 1 + <_> + + <_> + 5 6 6 14 -1. + <_> + 7 6 2 14 3. + <_> + + <_> + 0 7 8 11 -1. + <_> + 2 7 4 11 2. + <_> + + <_> + 0 7 8 7 -1. + <_> + 2 7 4 7 2. + <_> + + <_> + 2 16 3 1 -1. + <_> + 3 17 1 1 3. + 1 + <_> + + <_> + 3 0 15 18 -1. + <_> + 8 6 5 6 9. + <_> + + <_> + 0 6 20 14 -1. + <_> + 0 13 20 7 2. + <_> + + <_> + 6 7 9 7 -1. + <_> + 9 7 3 7 3. + <_> + + <_> + 3 9 6 2 -1. + <_> + 5 9 2 2 3. + <_> + + <_> + 17 16 2 2 -1. + <_> + 17 16 1 1 2. + <_> + 18 17 1 1 2. + <_> + + <_> + 17 16 2 2 -1. + <_> + 17 16 1 1 2. + <_> + 18 17 1 1 2. + <_> + + <_> + 14 8 6 5 -1. + <_> + 16 8 2 5 3. + <_> + + <_> + 16 18 4 2 -1. + <_> + 16 19 4 1 2. + <_> + + <_> + 8 8 9 12 -1. + <_> + 11 8 3 12 3. + <_> + + <_> + 8 18 3 1 -1. + <_> + 9 18 1 1 3. + <_> + + <_> + 8 18 3 2 -1. + <_> + 9 18 1 2 3. + <_> + + <_> + 0 8 4 11 -1. + <_> + 2 8 2 11 2. + <_> + + <_> + 10 0 10 1 -1. + <_> + 15 0 5 1 2. + <_> + + <_> + 13 1 3 3 -1. + <_> + 14 1 1 3 3. + <_> + + <_> + 2 8 12 12 -1. + <_> + 6 8 4 12 3. + <_> + + <_> + 18 17 1 3 -1. + <_> + 18 18 1 1 3. + <_> + + <_> + 18 18 1 2 -1. + <_> + 18 19 1 1 2. + <_> + + <_> + 8 10 6 5 -1. + <_> + 10 10 2 5 3. + <_> + + <_> + 13 17 3 2 -1. + <_> + 14 17 1 2 3. + <_> + + <_> + 0 4 6 12 -1. + <_> + 0 8 6 4 3. + <_> + + <_> + 0 8 5 4 -1. + <_> + 0 9 5 2 2. + <_> + + <_> + 13 6 4 6 -1. + <_> + 14 7 2 6 2. + 1 + <_> + + <_> + 4 2 3 2 -1. + <_> + 5 2 1 2 3. + <_> + + <_> + 11 2 8 17 -1. + <_> + 13 2 4 17 2. + <_> + + <_> + 15 0 3 3 -1. + <_> + 16 0 1 3 3. + <_> + + <_> + 10 5 9 13 -1. + <_> + 13 5 3 13 3. + <_> + + <_> + 5 8 8 6 -1. + <_> + 7 8 4 6 2. + <_> + + <_> + 3 1 15 18 -1. + <_> + 8 7 5 6 9. + <_> + + <_> + 6 7 9 8 -1. + <_> + 9 7 3 8 3. + <_> + + <_> + 0 6 20 14 -1. + <_> + 0 13 20 7 2. + <_> + + <_> + 1 7 6 7 -1. + <_> + 3 7 2 7 3. + <_> + + <_> + 9 19 3 1 -1. + <_> + 10 19 1 1 3. + <_> + + <_> + 4 6 9 7 -1. + <_> + 7 6 3 7 3. + <_> + + <_> + 18 10 1 10 -1. + <_> + 18 15 1 5 2. + <_> + + <_> + 12 16 2 4 -1. + <_> + 12 16 1 2 2. + <_> + 13 18 1 2 2. + <_> + + <_> + 12 19 4 1 -1. + <_> + 13 19 2 1 2. + <_> + + <_> + 9 5 6 15 -1. + <_> + 11 5 2 15 3. + <_> + + <_> + 10 18 4 1 -1. + <_> + 11 18 2 1 2. + <_> + + <_> + 1 0 12 16 -1. + <_> + 5 0 4 16 3. + <_> + + <_> + 0 13 3 3 -1. + <_> + 0 14 3 1 3. + <_> + + <_> + 1 13 1 3 -1. + <_> + 1 14 1 1 3. + <_> + + <_> + 14 0 6 1 -1. + <_> + 17 0 3 1 2. + <_> + + <_> + 12 0 3 3 -1. + <_> + 13 0 1 3 3. + <_> + + <_> + 12 1 3 2 -1. + <_> + 13 1 1 2 3. + <_> + + <_> + 14 2 6 13 -1. + <_> + 16 2 2 13 3. + <_> + + <_> + 12 4 6 1 -1. + <_> + 14 6 2 1 3. + 1 + <_> + + <_> + 15 6 5 2 -1. + <_> + 15 7 5 1 2. + <_> + + <_> + 9 0 5 12 -1. + <_> + 9 4 5 4 3. + <_> + + <_> + 6 1 13 9 -1. + <_> + 6 4 13 3 3. + <_> + + <_> + 16 0 3 2 -1. + <_> + 17 0 1 2 3. + <_> + + <_> + 6 0 4 2 -1. + <_> + 6 0 2 2 2. + 1 + <_> + + <_> + 4 2 3 3 -1. + <_> + 3 3 3 1 3. + 1 + <_> + + <_> + 7 1 13 6 -1. + <_> + 5 3 13 2 3. + 1 + <_> + + <_> + 3 2 2 3 -1. + <_> + 2 3 2 1 3. + 1 + <_> + + <_> + 17 0 3 1 -1. + <_> + 18 0 1 1 3. + <_> + + <_> + 1 12 5 6 -1. + <_> + 1 15 5 3 2. + <_> + + <_> + 5 14 3 1 -1. + <_> + 6 15 1 1 3. + 1 + <_> + + <_> + 0 7 7 3 -1. + <_> + 0 8 7 1 3. + <_> + + <_> + 0 8 2 4 -1. + <_> + 0 9 2 2 2. + <_> + + <_> + 7 2 4 3 -1. + <_> + 6 3 4 1 3. + 1 + <_> + + <_> + 6 7 6 10 -1. + <_> + 8 7 2 10 3. + <_> + + <_> + 2 5 8 12 -1. + <_> + 4 5 4 12 2. + <_> + + <_> + 4 0 12 4 -1. + <_> + 4 2 12 2 2. + <_> + + <_> + 7 8 8 12 -1. + <_> + 9 8 4 12 2. + <_> + + <_> + 8 6 11 14 -1. + <_> + 8 13 11 7 2. + <_> + + <_> + 16 9 4 9 -1. + <_> + 18 9 2 9 2. + <_> + + <_> + 12 9 6 2 -1. + <_> + 14 9 2 2 3. + <_> + + <_> + 6 1 10 6 -1. + <_> + 6 3 10 2 3. + <_> + + <_> + 5 0 4 5 -1. + <_> + 5 0 2 5 2. + 1 + <_> + + <_> + 2 17 1 3 -1. + <_> + 2 18 1 1 3. + <_> + + <_> + 2 17 1 3 -1. + <_> + 2 18 1 1 3. + <_> + + <_> + 8 0 12 2 -1. + <_> + 12 0 4 2 3. + <_> + + <_> + 0 8 6 5 -1. + <_> + 2 8 2 5 3. + <_> + + <_> + 8 18 4 1 -1. + <_> + 9 18 2 1 2. + <_> + + <_> + 10 18 2 1 -1. + <_> + 11 18 1 1 2. + <_> + + <_> + 7 2 9 3 -1. + <_> + 10 5 3 3 3. + 1 + <_> + + <_> + 8 3 5 6 -1. + <_> + 8 5 5 2 3. + <_> + + <_> + 0 14 1 3 -1. + <_> + 0 15 1 1 3. + <_> + + <_> + 12 17 3 2 -1. + <_> + 13 17 1 2 3. + <_> + + <_> + 12 17 3 3 -1. + <_> + 13 17 1 3 3. + <_> + + <_> + 7 9 1 4 -1. + <_> + 6 10 1 2 2. + 1 + <_> + + <_> + 12 7 8 8 -1. + <_> + 14 7 4 8 2. + <_> + + <_> + 7 10 4 6 -1. + <_> + 5 12 4 2 3. + 1 + <_> + + <_> + 0 6 4 10 -1. + <_> + 2 6 2 10 2. + <_> + + <_> + 19 9 1 3 -1. + <_> + 19 10 1 1 3. + <_> + + <_> + 16 1 4 15 -1. + <_> + 17 2 2 15 2. + 1 + <_> + + <_> + 14 5 6 7 -1. + <_> + 16 7 2 7 3. + 1 + <_> + + <_> + 18 18 2 2 -1. + <_> + 18 18 1 1 2. + <_> + 19 19 1 1 2. + <_> + + <_> + 0 7 4 6 -1. + <_> + 0 9 4 2 3. + <_> + + <_> + 16 9 4 4 -1. + <_> + 17 9 2 4 2. + <_> + + <_> + 0 15 1 3 -1. + <_> + 0 16 1 1 3. + <_> + + <_> + 7 5 10 3 -1. + <_> + 6 6 10 1 3. + 1 + <_> + + <_> + 9 7 9 7 -1. + <_> + 12 7 3 7 3. + <_> + + <_> + 14 4 6 8 -1. + <_> + 14 6 6 4 2. + <_> + + <_> + 17 6 3 1 -1. + <_> + 18 7 1 1 3. + 1 + <_> + + <_> + 17 1 3 8 -1. + <_> + 17 3 3 4 2. + <_> + + <_> + 0 10 1 3 -1. + <_> + 0 11 1 1 3. + <_> + + <_> + 5 2 3 1 -1. + <_> + 6 2 1 1 3. + <_> + + <_> + 5 2 3 1 -1. + <_> + 6 2 1 1 3. + <_> + + <_> + 6 2 9 15 -1. + <_> + 9 7 3 5 9. + <_> + + <_> + 0 9 6 3 -1. + <_> + 2 9 2 3 3. + <_> + + <_> + 9 6 6 9 -1. + <_> + 11 9 2 3 9. + <_> + + <_> + 4 3 12 9 -1. + <_> + 4 6 12 3 3. + <_> + + <_> + 8 5 6 4 -1. + <_> + 8 6 6 2 2. + <_> + + <_> + 0 1 17 8 -1. + <_> + 0 3 17 4 2. + <_> + + <_> + 2 10 9 1 -1. + <_> + 5 10 3 1 3. + <_> + + <_> + 2 11 9 8 -1. + <_> + 2 15 9 4 2. + <_> + + <_> + 14 0 6 15 -1. + <_> + 16 0 2 15 3. + <_> + + <_> + 17 6 2 9 -1. + <_> + 17 9 2 3 3. + <_> + + <_> + 16 16 1 3 -1. + <_> + 15 17 1 1 3. + 1 + <_> + + <_> + 7 0 4 2 -1. + <_> + 8 0 2 2 2. + <_> + + <_> + 6 0 12 15 -1. + <_> + 10 0 4 15 3. + <_> + + <_> + 7 8 12 6 -1. + <_> + 11 8 4 6 3. + <_> + + <_> + 11 18 4 1 -1. + <_> + 12 18 2 1 2. + <_> + + <_> + 8 18 4 1 -1. + <_> + 9 18 2 1 2. + <_> + + <_> + 7 0 8 4 -1. + <_> + 7 2 8 2 2. + <_> + + <_> + 8 0 12 8 -1. + <_> + 8 2 12 4 2. + <_> + + <_> + 4 9 6 3 -1. + <_> + 6 9 2 3 3. + <_> + + <_> + 0 4 9 12 -1. + <_> + 3 8 3 4 9. + <_> + + <_> + 6 18 1 2 -1. + <_> + 6 19 1 1 2. + <_> + + <_> + 9 2 4 2 -1. + <_> + 10 2 2 2 2. + <_> + + <_> + 6 1 8 17 -1. + <_> + 8 1 4 17 2. + <_> + + <_> + 13 9 4 4 -1. + <_> + 14 10 2 4 2. + 1 + <_> + + <_> + 7 1 4 3 -1. + <_> + 8 1 2 3 2. + <_> + + <_> + 12 8 6 4 -1. + <_> + 14 8 2 4 3. + <_> + + <_> + 13 1 7 15 -1. + <_> + 13 6 7 5 3. + <_> + + <_> + 17 18 2 2 -1. + <_> + 17 18 1 1 2. + <_> + 18 19 1 1 2. + <_> + + <_> + 3 6 4 10 -1. + <_> + 4 6 2 10 2. + <_> + + <_> + 6 4 4 11 -1. + <_> + 7 4 2 11 2. + <_> + + <_> + 7 18 4 1 -1. + <_> + 8 18 2 1 2. + <_> + + <_> + 15 0 4 2 -1. + <_> + 15 0 4 1 2. + 1 + <_> + + <_> + 8 0 10 3 -1. + <_> + 8 1 10 1 3. + <_> + + <_> + 8 0 12 3 -1. + <_> + 12 1 4 1 9. + <_> + + <_> + 16 0 3 2 -1. + <_> + 17 0 1 2 3. + <_> + + <_> + 16 10 4 6 -1. + <_> + 17 11 2 6 2. + 1 + <_> + + <_> + 11 4 5 6 -1. + <_> + 9 6 5 2 3. + 1 + <_> + + <_> + 12 3 6 10 -1. + <_> + 14 5 2 10 3. + 1 + <_> + + <_> + 9 7 5 3 -1. + <_> + 8 8 5 1 3. + 1 + <_> + + <_> + 4 10 2 1 -1. + <_> + 5 10 1 1 2. + <_> + + <_> + 4 2 16 16 -1. + <_> + 4 6 16 8 2. + <_> + + <_> + 15 8 4 6 -1. + <_> + 16 8 2 6 2. + <_> + + <_> + 15 7 2 6 -1. + <_> + 15 7 1 6 2. + 1 + <_> + + <_> + 6 17 1 2 -1. + <_> + 6 18 1 1 2. + <_> + + <_> + 7 4 12 12 -1. + <_> + 11 8 4 4 9. + <_> + + <_> + 18 16 1 2 -1. + <_> + 18 17 1 1 2. + <_> + + <_> + 17 17 2 1 -1. + <_> + 18 17 1 1 2. + <_> + + <_> + 6 4 3 6 -1. + <_> + 7 5 1 6 3. + 1 + <_> + + <_> + 4 10 4 1 -1. + <_> + 5 10 2 1 2. + <_> + + <_> + 6 10 6 9 -1. + <_> + 8 10 2 9 3. + <_> + + <_> + 1 8 2 12 -1. + <_> + 1 14 2 6 2. + <_> + + <_> + 16 0 2 1 -1. + <_> + 17 0 1 1 2. + <_> + + <_> + 8 2 7 9 -1. + <_> + 8 5 7 3 3. + <_> + + <_> + 0 0 20 20 -1. + <_> + 0 0 10 10 2. + <_> + 10 10 10 10 2. + <_> + + <_> + 18 6 1 2 -1. + <_> + 18 7 1 1 2. + <_> + + <_> + 18 5 2 1 -1. + <_> + 18 5 1 1 2. + 1 + <_> + + <_> + 7 4 10 6 -1. + <_> + 7 6 10 2 3. + <_> + + <_> + 15 9 3 3 -1. + <_> + 16 10 1 3 3. + 1 + <_> + + <_> + 17 18 3 2 -1. + <_> + 17 19 3 1 2. + <_> + + <_> + 15 9 3 2 -1. + <_> + 16 10 1 2 3. + 1 + <_> + + <_> + 0 0 2 1 -1. + <_> + 1 0 1 1 2. + <_> + + <_> + 1 14 1 2 -1. + <_> + 1 15 1 1 2. + <_> + + <_> + 0 18 20 1 -1. + <_> + 10 18 10 1 2. + <_> + + <_> + 9 7 6 2 -1. + <_> + 9 7 6 1 2. + 1 + <_> + + <_> + 10 9 6 5 -1. + <_> + 12 9 2 5 3. + <_> + + <_> + 11 8 4 5 -1. + <_> + 12 8 2 5 2. + <_> + + <_> + 18 0 2 18 -1. + <_> + 18 9 2 9 2. + <_> + + <_> + 3 15 9 3 -1. + <_> + 6 16 3 1 9. + <_> + + <_> + 16 16 1 3 -1. + <_> + 15 17 1 1 3. + 1 + <_> + + <_> + 2 16 9 4 -1. + <_> + 2 17 9 2 2. + <_> + + <_> + 0 18 5 2 -1. + <_> + 0 19 5 1 2. + <_> + + <_> + 17 7 2 3 -1. + <_> + 16 8 2 1 3. + 1 + <_> + + <_> + 17 17 2 1 -1. + <_> + 18 17 1 1 2. + <_> + + <_> + 16 18 2 1 -1. + <_> + 17 18 1 1 2. + <_> + + <_> + 17 18 1 2 -1. + <_> + 17 19 1 1 2. + <_> + + <_> + 6 10 9 2 -1. + <_> + 9 10 3 2 3. + <_> + + <_> + 2 8 18 12 -1. + <_> + 2 14 18 6 2. + <_> + + <_> + 12 6 3 3 -1. + <_> + 11 7 3 1 3. + 1 + <_> + + <_> + 15 8 3 3 -1. + <_> + 16 9 1 3 3. + 1 + <_> + + <_> + 2 3 17 12 -1. + <_> + 2 6 17 6 2. + <_> + + <_> + 2 7 4 9 -1. + <_> + 3 7 2 9 2. + <_> + + <_> + 4 9 2 6 -1. + <_> + 4 9 1 3 2. + <_> + 5 12 1 3 2. + <_> + + <_> + 1 6 12 9 -1. + <_> + 5 9 4 3 9. + <_> + + <_> + 8 2 1 8 -1. + <_> + 8 4 1 4 2. + <_> + + <_> + 3 16 2 1 -1. + <_> + 4 16 1 1 2. + <_> + + <_> + 3 16 2 1 -1. + <_> + 4 16 1 1 2. + <_> + + <_> + 4 17 1 3 -1. + <_> + 4 18 1 1 3. + <_> + + <_> + 6 17 9 3 -1. + <_> + 9 17 3 3 3. + <_> + + <_> + 14 8 3 4 -1. + <_> + 15 9 1 4 3. + 1 + <_> + + <_> + 17 8 3 6 -1. + <_> + 18 9 1 6 3. + 1 + <_> + + <_> + 16 17 1 3 -1. + <_> + 16 18 1 1 3. + <_> + + <_> + 14 18 3 2 -1. + <_> + 14 19 3 1 2. + <_> + + <_> + 6 8 3 3 -1. + <_> + 7 8 1 3 3. + <_> + + <_> + 3 0 16 11 -1. + <_> + 7 0 8 11 2. + <_> + + <_> + 1 0 18 20 -1. + <_> + 1 5 18 10 2. + <_> + + <_> + 15 5 4 4 -1. + <_> + 15 5 2 2 2. + <_> + 17 7 2 2 2. + <_> + + <_> + 15 10 2 1 -1. + <_> + 16 10 1 1 2. + <_> + + <_> + 7 18 6 2 -1. + <_> + 9 18 2 2 3. + <_> + + <_> + 15 10 2 1 -1. + <_> + 16 10 1 1 2. + <_> + + <_> + 2 0 18 4 -1. + <_> + 2 1 18 2 2. + <_> + + <_> + 5 0 9 4 -1. + <_> + 5 1 9 2 2. + <_> + + <_> + 0 0 2 1 -1. + <_> + 1 0 1 1 2. + <_> + + <_> + 0 18 1 2 -1. + <_> + 0 19 1 1 2. + <_> + + <_> + 18 0 2 2 -1. + <_> + 18 1 2 1 2. + <_> + + <_> + 17 0 2 4 -1. + <_> + 17 0 1 4 2. + 1 + <_> + + <_> + 4 2 3 4 -1. + <_> + 3 3 3 2 2. + 1 + <_> + + <_> + 0 4 6 11 -1. + <_> + 2 4 2 11 3. + <_> + + <_> + 0 4 8 4 -1. + <_> + 0 4 4 2 2. + <_> + 4 6 4 2 2. + <_> + + <_> + 4 3 1 2 -1. + <_> + 4 4 1 1 2. + <_> + + <_> + 0 1 6 4 -1. + <_> + 0 1 3 2 2. + <_> + 3 3 3 2 2. + <_> + + <_> + 3 5 4 2 -1. + <_> + 3 5 2 1 2. + <_> + 5 6 2 1 2. + <_> + + <_> + 4 9 4 1 -1. + <_> + 5 9 2 1 2. + <_> + + <_> + 8 15 2 2 -1. + <_> + 8 15 1 1 2. + <_> + 9 16 1 1 2. + <_> + + <_> + 8 15 2 2 -1. + <_> + 8 15 1 1 2. + <_> + 9 16 1 1 2. + <_> + + <_> + 2 18 5 2 -1. + <_> + 2 19 5 1 2. + <_> + + <_> + 4 12 10 8 -1. + <_> + 4 14 10 4 2. + <_> + + <_> + 9 7 5 3 -1. + <_> + 8 8 5 1 3. + 1 + <_> + + <_> + 2 18 6 2 -1. + <_> + 2 18 3 1 2. + <_> + 5 19 3 1 2. + <_> + + <_> + 6 16 12 4 -1. + <_> + 6 17 12 2 2. + <_> + + <_> + 10 9 1 4 -1. + <_> + 10 11 1 2 2. + <_> + + <_> + 5 9 12 3 -1. + <_> + 9 10 4 1 9. + <_> + + <_> + 9 7 3 3 -1. + <_> + 10 8 1 1 9. + <_> + + <_> + 1 6 19 14 -1. + <_> + 1 13 19 7 2. + <_> + + <_> + 15 9 4 2 -1. + <_> + 16 9 2 2 2. + <_> + + <_> + 8 9 3 8 -1. + <_> + 8 13 3 4 2. + <_> + + <_> + 6 8 4 3 -1. + <_> + 7 8 2 3 2. + <_> + + <_> + 5 1 8 4 -1. + <_> + 5 2 8 2 2. + <_> + + <_> + 8 1 3 4 -1. + <_> + 8 2 3 2 2. + <_> + + <_> + 2 10 18 10 -1. + <_> + 2 15 18 5 2. + <_> + + <_> + 8 8 5 3 -1. + <_> + 7 9 5 1 3. + 1 + <_> + + <_> + 7 9 7 2 -1. + <_> + 7 9 7 1 2. + 1 + <_> + + <_> + 5 17 1 3 -1. + <_> + 5 18 1 1 3. + <_> + + <_> + 7 18 13 2 -1. + <_> + 7 19 13 1 2. + <_> + + <_> + 16 16 2 2 -1. + <_> + 16 16 2 1 2. + 1 + <_> + + <_> + 3 14 1 2 -1. + <_> + 3 15 1 1 2. + <_> + + <_> + 12 9 3 4 -1. + <_> + 13 9 1 4 3. + <_> + + <_> + 12 9 3 2 -1. + <_> + 13 9 1 2 3. + <_> + + <_> + 7 9 2 3 -1. + <_> + 6 10 2 1 3. + 1 + <_> + + <_> + 10 3 9 12 -1. + <_> + 10 7 9 4 3. + <_> + + <_> + 15 5 2 1 -1. + <_> + 16 5 1 1 2. + <_> + + <_> + 1 0 15 9 -1. + <_> + 1 3 15 3 3. + <_> + + <_> + 3 15 2 3 -1. + <_> + 3 15 1 3 2. + 1 + <_> + + <_> + 2 16 1 2 -1. + <_> + 2 17 1 1 2. + <_> + + <_> + 12 1 8 4 -1. + <_> + 11 2 8 2 2. + 1 + <_> + + <_> + 6 5 3 6 -1. + <_> + 7 6 1 6 3. + 1 + <_> + + <_> + 5 7 2 2 -1. + <_> + 5 7 1 1 2. + <_> + 6 8 1 1 2. + <_> + + <_> + 17 7 3 1 -1. + <_> + 18 7 1 1 3. + <_> + + <_> + 12 0 6 5 -1. + <_> + 14 0 2 5 3. + <_> + + <_> + 17 0 2 1 -1. + <_> + 18 0 1 1 2. + <_> + + <_> + 10 1 6 5 -1. + <_> + 12 1 2 5 3. + <_> + + <_> + 17 14 3 2 -1. + <_> + 17 14 3 1 2. + 1 + <_> + + <_> + 5 10 4 1 -1. + <_> + 6 10 2 1 2. + <_> + + <_> + 3 8 3 6 -1. + <_> + 4 8 1 6 3. + <_> + + <_> + 8 16 5 4 -1. + <_> + 8 17 5 2 2. + <_> + + <_> + 14 15 2 2 -1. + <_> + 14 15 1 1 2. + <_> + 15 16 1 1 2. + <_> + + <_> + 4 18 1 2 -1. + <_> + 4 19 1 1 2. + <_> + + <_> + 8 15 2 3 -1. + <_> + 8 15 1 3 2. + 1 + <_> + + <_> + 19 0 1 20 -1. + <_> + 19 10 1 10 2. + <_> + + <_> + 7 9 8 1 -1. + <_> + 9 9 4 1 2. + <_> + + <_> + 14 10 3 1 -1. + <_> + 15 10 1 1 3. + <_> + + <_> + 15 11 2 1 -1. + <_> + 16 11 1 1 2. + <_> + + <_> + 18 11 2 8 -1. + <_> + 18 11 1 4 2. + <_> + 19 15 1 4 2. + <_> + + <_> + 6 1 8 4 -1. + <_> + 8 1 4 4 2. + <_> + + <_> + 6 0 5 4 -1. + <_> + 5 1 5 2 2. + 1 + <_> + + <_> + 6 5 12 15 -1. + <_> + 10 10 4 5 9. + <_> + + <_> + 7 2 8 9 -1. + <_> + 7 5 8 3 3. + <_> + + <_> + 2 1 10 3 -1. + <_> + 2 2 10 1 3. + <_> + + <_> + 2 5 15 12 -1. + <_> + 7 9 5 4 9. + <_> + + <_> + 7 8 3 6 -1. + <_> + 8 8 1 6 3. + <_> + + <_> + 7 6 3 7 -1. + <_> + 8 6 1 7 3. + <_> + + <_> + 4 16 9 4 -1. + <_> + 7 16 3 4 3. + <_> + + <_> + 15 18 5 2 -1. + <_> + 15 19 5 1 2. + <_> + + <_> + 15 16 1 4 -1. + <_> + 15 17 1 2 2. + <_> + + <_> + 15 16 2 2 -1. + <_> + 15 16 1 1 2. + <_> + 16 17 1 1 2. + <_> + + <_> + 6 15 2 2 -1. + <_> + 6 15 1 1 2. + <_> + 7 16 1 1 2. + <_> + + <_> + 6 15 2 2 -1. + <_> + 6 15 1 1 2. + <_> + 7 16 1 1 2. + <_> + + <_> + 8 16 8 3 -1. + <_> + 10 16 4 3 2. + <_> + + <_> + 5 10 12 1 -1. + <_> + 9 10 4 1 3. + <_> + + <_> + 6 2 9 15 -1. + <_> + 9 7 3 5 9. + <_> + + <_> + 17 6 1 14 -1. + <_> + 17 13 1 7 2. + <_> + + <_> + 9 7 3 3 -1. + <_> + 8 8 3 1 3. + 1 + <_> + + <_> + 16 5 4 3 -1. + <_> + 15 6 4 1 3. + 1 + <_> + + <_> + 13 7 4 9 -1. + <_> + 13 7 2 9 2. + 1 + <_> + + <_> + 3 10 2 2 -1. + <_> + 3 10 2 1 2. + 1 + <_> + + <_> + 0 4 3 15 -1. + <_> + 0 9 3 5 3. + <_> + + <_> + 7 8 9 6 -1. + <_> + 10 8 3 6 3. + <_> + + <_> + 5 17 9 2 -1. + <_> + 8 17 3 2 3. + <_> + + <_> + 7 2 6 18 -1. + <_> + 7 11 6 9 2. + <_> + + <_> + 15 9 2 10 -1. + <_> + 15 9 1 5 2. + <_> + 16 14 1 5 2. + <_> + + <_> + 12 7 6 4 -1. + <_> + 14 9 2 4 3. + 1 + <_> + + <_> + 13 8 3 2 -1. + <_> + 14 9 1 2 3. + 1 + <_> + + <_> + 17 4 3 2 -1. + <_> + 18 5 1 2 3. + 1 + <_> + + <_> + 10 5 8 2 -1. + <_> + 10 6 8 1 2. + <_> + + <_> + 18 4 2 2 -1. + <_> + 18 4 1 2 2. + 1 + <_> + + <_> + 7 4 7 4 -1. + <_> + 7 5 7 2 2. + <_> + + <_> + 1 15 6 4 -1. + <_> + 1 17 6 2 2. + <_> + + <_> + 0 13 2 6 -1. + <_> + 0 15 2 2 3. + <_> + + <_> + 10 13 4 2 -1. + <_> + 10 13 4 1 2. + 1 + <_> + + <_> + 16 14 2 4 -1. + <_> + 15 15 2 2 2. + 1 + <_> + + <_> + 7 4 3 4 -1. + <_> + 8 5 1 4 3. + 1 + <_> + + <_> + 5 9 4 3 -1. + <_> + 6 9 2 3 2. + <_> + + <_> + 4 1 2 4 -1. + <_> + 3 2 2 2 2. + 1 + <_> + + <_> + 2 1 2 3 -1. + <_> + 3 1 1 3 2. + <_> + + <_> + 1 2 8 4 -1. + <_> + 1 2 4 2 2. + <_> + 5 4 4 2 2. + <_> + + <_> + 6 0 4 4 -1. + <_> + 7 0 2 4 2. + <_> + + <_> + 6 4 3 5 -1. + <_> + 7 5 1 5 3. + 1 + <_> + + <_> + 3 5 1 2 -1. + <_> + 3 6 1 1 2. + <_> + + <_> + 6 8 3 3 -1. + <_> + 7 8 1 3 3. + <_> + + <_> + 5 16 3 1 -1. + <_> + 6 17 1 1 3. + 1 + <_> + + <_> + 6 9 4 4 -1. + <_> + 7 9 2 4 2. + <_> + + <_> + 9 11 9 2 -1. + <_> + 9 12 9 1 2. + <_> + + <_> + 5 2 7 2 -1. + <_> + 5 3 7 1 2. + <_> + + <_> + 12 18 8 2 -1. + <_> + 12 19 8 1 2. + <_> + + <_> + 19 0 1 4 -1. + <_> + 19 2 1 2 2. + <_> + + <_> + 14 1 6 2 -1. + <_> + 17 1 3 2 2. + <_> + + <_> + 14 2 6 4 -1. + <_> + 14 2 3 2 2. + <_> + 17 4 3 2 2. + <_> + + <_> + 7 7 3 6 -1. + <_> + 8 7 1 6 3. + <_> + + <_> + 11 6 5 4 -1. + <_> + 11 7 5 2 2. + <_> + + <_> + 17 7 3 3 -1. + <_> + 18 7 1 3 3. + <_> + + <_> + 15 16 1 2 -1. + <_> + 15 16 1 1 2. + 1 + <_> + + <_> + 7 0 4 4 -1. + <_> + 7 1 4 2 2. + <_> + + <_> + 6 1 8 8 -1. + <_> + 6 3 8 4 2. + <_> + + <_> + 0 0 1 2 -1. + <_> + 0 1 1 1 2. + <_> + + <_> + 2 0 4 2 -1. + <_> + 2 0 4 1 2. + 1 + <_> + + <_> + 10 0 6 5 -1. + <_> + 12 0 2 5 3. + <_> + + <_> + 7 7 4 7 -1. + <_> + 8 7 2 7 2. + <_> + + <_> + 9 3 2 8 -1. + <_> + 10 3 1 8 2. + <_> + + <_> + 6 1 4 4 -1. + <_> + 7 2 2 4 2. + 1 + <_> + + <_> + 0 18 1 2 -1. + <_> + 0 19 1 1 2. + <_> + + <_> + 17 2 3 1 -1. + <_> + 18 3 1 1 3. + 1 + <_> + + <_> + 18 18 2 2 -1. + <_> + 18 18 1 1 2. + <_> + 19 19 1 1 2. + <_> + + <_> + 17 13 3 4 -1. + <_> + 16 14 3 2 2. + 1 + <_> + + <_> + 3 10 4 3 -1. + <_> + 4 10 2 3 2. + <_> + + <_> + 0 8 4 5 -1. + <_> + 1 8 2 5 2. + <_> + + <_> + 4 8 14 12 -1. + <_> + 4 14 14 6 2. + <_> + + <_> + 16 16 2 2 -1. + <_> + 17 16 1 2 2. + <_> + + <_> + 16 18 4 2 -1. + <_> + 17 18 2 2 2. + <_> + + <_> + 17 1 3 4 -1. + <_> + 18 2 1 4 3. + 1 + <_> + + <_> + 3 0 4 7 -1. + <_> + 4 0 2 7 2. + <_> + + <_> + 6 1 6 3 -1. + <_> + 8 1 2 3 3. + <_> + + <_> + 12 8 4 4 -1. + <_> + 13 8 2 4 2. + <_> + + <_> + 6 1 5 2 -1. + <_> + 6 2 5 1 2. + <_> + + <_> + 1 7 5 12 -1. + <_> + 1 13 5 6 2. + <_> + + <_> + 8 17 6 3 -1. + <_> + 10 18 2 1 9. + <_> + + <_> + 12 4 3 12 -1. + <_> + 13 4 1 12 3. + <_> + + <_> + 3 11 8 1 -1. + <_> + 5 13 4 1 2. + 1 + <_> + + <_> + 7 2 9 6 -1. + <_> + 5 4 9 2 3. + 1 + <_> + + <_> + 14 1 1 2 -1. + <_> + 14 1 1 1 2. + 1 + <_> + + <_> + 0 1 16 1 -1. + <_> + 8 1 8 1 2. + <_> + + <_> + 8 8 3 2 -1. + <_> + 9 8 1 2 3. + <_> + + <_> + 0 14 1 2 -1. + <_> + 0 15 1 1 2. + <_> + + <_> + 11 5 3 8 -1. + <_> + 11 7 3 4 2. + <_> + + <_> + 7 9 3 3 -1. + <_> + 6 10 3 1 3. + 1 + <_> + + <_> + 0 5 6 11 -1. + <_> + 2 5 2 11 3. + <_> + + <_> + 1 0 4 14 -1. + <_> + 2 0 2 14 2. + <_> + + <_> + 16 18 2 2 -1. + <_> + 16 18 1 1 2. + <_> + 17 19 1 1 2. + <_> + + <_> + 16 0 3 3 -1. + <_> + 17 1 1 3 3. + 1 + <_> + + <_> + 19 5 1 4 -1. + <_> + 19 7 1 2 2. + <_> + + <_> + 3 10 6 1 -1. + <_> + 5 10 2 1 3. + <_> + + <_> + 6 10 3 1 -1. + <_> + 7 10 1 1 3. + <_> + + <_> + 8 7 2 10 -1. + <_> + 8 12 2 5 2. + <_> + + <_> + 12 9 6 2 -1. + <_> + 14 9 2 2 3. + <_> + + <_> + 18 3 1 12 -1. + <_> + 14 7 1 4 3. + 1 + <_> + + <_> + 13 3 2 8 -1. + <_> + 11 5 2 4 2. + 1 + <_> + + <_> + 3 2 2 3 -1. + <_> + 2 3 2 1 3. + 1 + <_> + + <_> + 0 3 6 4 -1. + <_> + 0 3 3 2 2. + <_> + 3 5 3 2 2. + <_> + + <_> + 3 2 2 1 -1. + <_> + 4 2 1 1 2. + <_> + + <_> + 12 8 3 5 -1. + <_> + 13 8 1 5 3. + <_> + + <_> + 15 15 2 3 -1. + <_> + 14 16 2 1 3. + 1 + <_> + + <_> + 0 18 3 2 -1. + <_> + 0 19 3 1 2. + <_> + + <_> + 18 17 1 3 -1. + <_> + 18 18 1 1 3. + <_> + + <_> + 5 6 2 2 -1. + <_> + 5 7 2 1 2. + <_> + + <_> + 2 7 16 2 -1. + <_> + 6 7 8 2 2. + <_> + + <_> + 16 8 4 7 -1. + <_> + 17 8 2 7 2. + <_> + + <_> + 14 9 4 5 -1. + <_> + 15 9 2 5 2. + <_> + + <_> + 0 6 3 14 -1. + <_> + 0 13 3 7 2. + <_> + + <_> + 17 3 3 1 -1. + <_> + 18 4 1 1 3. + 1 + <_> + + <_> + 18 5 2 1 -1. + <_> + 18 5 1 1 2. + 1 + <_> + + <_> + 18 0 2 18 -1. + <_> + 18 6 2 6 3. + <_> + + <_> + 4 0 13 12 -1. + <_> + 4 3 13 6 2. + <_> + + <_> + 12 9 4 2 -1. + <_> + 13 9 2 2 2. + <_> + + <_> + 4 2 3 3 -1. + <_> + 3 3 3 1 3. + 1 + <_> + + <_> + 8 10 6 3 -1. + <_> + 10 10 2 3 3. + <_> + + <_> + 11 5 4 6 -1. + <_> + 11 5 2 6 2. + 1 + <_> + + <_> + 10 2 4 2 -1. + <_> + 11 2 2 2 2. + <_> + + <_> + 4 16 2 4 -1. + <_> + 4 18 2 2 2. + <_> + + <_> + 5 18 8 2 -1. + <_> + 9 18 4 2 2. + <_> + + <_> + 19 9 1 8 -1. + <_> + 19 9 1 4 2. + 1 + <_> + + <_> + 0 15 5 3 -1. + <_> + 0 16 5 1 3. + <_> + + <_> + 19 4 1 15 -1. + <_> + 19 9 1 5 3. + <_> + + <_> + 7 19 4 1 -1. + <_> + 8 19 2 1 2. + <_> + + <_> + 6 2 12 4 -1. + <_> + 6 3 12 2 2. + <_> + + <_> + 4 1 11 6 -1. + <_> + 4 3 11 2 3. + <_> + + <_> + 0 14 2 4 -1. + <_> + 0 15 2 2 2. + <_> + + <_> + 1 9 4 5 -1. + <_> + 2 9 2 5 2. + <_> + + <_> + 4 5 2 4 -1. + <_> + 3 6 2 2 2. + 1 + <_> + + <_> + 1 17 6 3 -1. + <_> + 3 18 2 1 9. + <_> + + <_> + 11 0 6 6 -1. + <_> + 13 0 2 6 3. + <_> + + <_> + 17 18 3 2 -1. + <_> + 17 19 3 1 2. + <_> + + <_> + 18 17 1 3 -1. + <_> + 18 18 1 1 3. + <_> + + <_> + 3 7 15 3 -1. + <_> + 8 8 5 1 9. + <_> + + <_> + 10 8 3 3 -1. + <_> + 11 9 1 1 9. + <_> + + <_> + 0 10 6 8 -1. + <_> + 0 12 6 4 2. + <_> + + <_> + 9 8 3 3 -1. + <_> + 10 8 1 3 3. + <_> + + <_> + 10 7 3 8 -1. + <_> + 11 7 1 8 3. + <_> + + <_> + 12 4 4 1 -1. + <_> + 13 4 2 1 2. + <_> + + <_> + 2 1 11 4 -1. + <_> + 2 2 11 2 2. + <_> + + <_> + 0 3 3 4 -1. + <_> + 0 4 3 2 2. + <_> + + <_> + 17 0 3 2 -1. + <_> + 17 1 3 1 2. + <_> + + <_> + 19 14 1 4 -1. + <_> + 19 15 1 2 2. + <_> + + <_> + 1 16 2 4 -1. + <_> + 2 16 1 4 2. + <_> + + <_> + 3 13 4 3 -1. + <_> + 2 14 4 1 3. + 1 + <_> + + <_> + 0 14 4 3 -1. + <_> + 0 15 4 1 3. + <_> + + <_> + 9 3 5 4 -1. + <_> + 9 4 5 2 2. + <_> + + <_> + 12 0 8 4 -1. + <_> + 12 1 8 2 2. + <_> + + <_> + 18 0 2 5 -1. + <_> + 18 0 1 5 2. + 1 + <_> + + <_> + 14 3 1 4 -1. + <_> + 14 5 1 2 2. + <_> + + <_> + 5 15 3 2 -1. + <_> + 6 16 1 2 3. + 1 + <_> + + <_> + 9 7 4 8 -1. + <_> + 10 7 2 8 2. + <_> + + <_> + 14 5 1 12 -1. + <_> + 10 9 1 4 3. + 1 + <_> + + <_> + 5 0 2 3 -1. + <_> + 4 1 2 1 3. + 1 + <_> + + <_> + 18 1 2 2 -1. + <_> + 18 1 2 1 2. + 1 + <_> + + <_> + 6 8 9 2 -1. + <_> + 6 9 9 1 2. + <_> + + <_> + 7 8 13 4 -1. + <_> + 7 9 13 2 2. + <_> + + <_> + 6 7 3 4 -1. + <_> + 7 8 1 4 3. + 1 + <_> + + <_> + 9 18 2 2 -1. + <_> + 9 18 1 1 2. + <_> + 10 19 1 1 2. + <_> + + <_> + 6 18 6 2 -1. + <_> + 6 18 3 1 2. + <_> + 9 19 3 1 2. + <_> + + <_> + 5 6 3 4 -1. + <_> + 6 7 1 4 3. + 1 + <_> + + <_> + 5 8 2 12 -1. + <_> + 5 8 1 6 2. + <_> + 6 14 1 6 2. + <_> + + <_> + 19 0 1 8 -1. + <_> + 19 0 1 4 2. + 1 + <_> + + <_> + 1 11 4 6 -1. + <_> + 1 13 4 2 3. + <_> + + <_> + 6 12 4 4 -1. + <_> + 6 12 2 4 2. + 1 + <_> + + <_> + 18 13 1 6 -1. + <_> + 18 16 1 3 2. + <_> + + <_> + 16 15 2 2 -1. + <_> + 16 15 1 1 2. + <_> + 17 16 1 1 2. + <_> + + <_> + 16 15 2 2 -1. + <_> + 16 15 1 1 2. + <_> + 17 16 1 1 2. + <_> + + <_> + 14 15 4 4 -1. + <_> + 14 15 2 2 2. + <_> + 16 17 2 2 2. + <_> + + <_> + 4 3 1 2 -1. + <_> + 4 4 1 1 2. + <_> + + <_> + 6 3 3 4 -1. + <_> + 5 4 3 2 2. + 1 + <_> + + <_> + 2 1 3 1 -1. + <_> + 3 2 1 1 3. + 1 + <_> + + <_> + 6 8 3 5 -1. + <_> + 7 8 1 5 3. + <_> + + <_> + 8 9 1 8 -1. + <_> + 8 11 1 4 2. + <_> + + <_> + 14 10 4 4 -1. + <_> + 14 10 2 4 2. + 1 + <_> + + <_> + 5 16 9 3 -1. + <_> + 8 16 3 3 3. + <_> + + <_> + 14 11 6 6 -1. + <_> + 14 13 6 2 3. + <_> + + <_> + 9 16 5 2 -1. + <_> + 9 17 5 1 2. + <_> + + <_> + 5 10 12 1 -1. + <_> + 8 10 6 1 2. + <_> + + <_> + 1 5 18 5 -1. + <_> + 7 5 6 5 3. + <_> + + <_> + 15 9 2 3 -1. + <_> + 16 9 1 3 2. + <_> + + <_> + 0 14 20 6 -1. + <_> + 0 17 20 3 2. + <_> + + <_> + 4 9 2 6 -1. + <_> + 4 9 1 3 2. + <_> + 5 12 1 3 2. + <_> + + <_> + 5 1 12 15 -1. + <_> + 9 6 4 5 9. + <_> + + <_> + 0 0 20 1 -1. + <_> + 5 0 10 1 2. + <_> + + <_> + 0 0 12 1 -1. + <_> + 6 0 6 1 2. + <_> + + <_> + 0 0 10 6 -1. + <_> + 5 0 5 6 2. + <_> + + <_> + 3 0 4 3 -1. + <_> + 2 1 4 1 3. + 1 + <_> + + <_> + 2 0 15 6 -1. + <_> + 7 2 5 2 9. + <_> + + <_> + 0 2 6 4 -1. + <_> + 3 2 3 4 2. + <_> + + <_> + 14 10 2 1 -1. + <_> + 15 10 1 1 2. + <_> + + <_> + 2 7 6 9 -1. + <_> + 4 7 2 9 3. + <_> + + <_> + 1 0 15 18 -1. + <_> + 6 6 5 6 9. + <_> + + <_> + 3 5 1 3 -1. + <_> + 2 6 1 1 3. + 1 + <_> + + <_> + 19 12 1 3 -1. + <_> + 19 13 1 1 3. + <_> + + <_> + 19 13 1 2 -1. + <_> + 19 14 1 1 2. + <_> + + <_> + 7 5 7 12 -1. + <_> + 7 8 7 6 2. + <_> + + <_> + 15 9 3 2 -1. + <_> + 15 10 3 1 2. + <_> + + <_> + 16 9 4 4 -1. + <_> + 17 9 2 4 2. + <_> + + <_> + 10 15 9 2 -1. + <_> + 13 15 3 2 3. + <_> + + <_> + 2 15 10 1 -1. + <_> + 7 15 5 1 2. + <_> + + <_> + 15 13 4 3 -1. + <_> + 14 14 4 1 3. + 1 + <_> + + <_> + 3 17 2 3 -1. + <_> + 4 17 1 3 2. + <_> + + <_> + 12 18 8 2 -1. + <_> + 16 18 4 2 2. + <_> + + <_> + 8 7 12 6 -1. + <_> + 12 7 4 6 3. + <_> + + <_> + 18 16 1 2 -1. + <_> + 18 16 1 1 2. + 1 + <_> + + <_> + 17 11 3 9 -1. + <_> + 17 14 3 3 3. + <_> + + <_> + 16 9 4 2 -1. + <_> + 17 10 2 2 2. + 1 + <_> + + <_> + 16 0 4 7 -1. + <_> + 17 0 2 7 2. + <_> + + <_> + 5 2 2 18 -1. + <_> + 5 11 2 9 2. + <_> + + <_> + 5 9 8 9 -1. + <_> + 7 9 4 9 2. + <_> + + <_> + 5 10 2 1 -1. + <_> + 6 10 1 1 2. + <_> + + <_> + 5 5 15 9 -1. + <_> + 10 8 5 3 9. + <_> + + <_> + 0 18 4 2 -1. + <_> + 0 19 4 1 2. + <_> + + <_> + 0 12 10 3 -1. + <_> + 0 13 10 1 3. + <_> + + <_> + 1 14 1 2 -1. + <_> + 1 15 1 1 2. + <_> + + <_> + 5 1 4 2 -1. + <_> + 6 1 2 2 2. + <_> + + <_> + 2 13 1 2 -1. + <_> + 2 14 1 1 2. + <_> + + <_> + 0 13 7 3 -1. + <_> + 0 14 7 1 3. + <_> + + <_> + 15 6 3 5 -1. + <_> + 16 7 1 5 3. + 1 + <_> + + <_> + 13 10 2 1 -1. + <_> + 14 10 1 1 2. + <_> + + <_> + 5 3 3 5 -1. + <_> + 6 4 1 5 3. + 1 + <_> + + <_> + 5 3 3 5 -1. + <_> + 6 4 1 5 3. + 1 + <_> + + <_> + 17 5 3 2 -1. + <_> + 18 6 1 2 3. + 1 + <_> + + <_> + 4 0 2 3 -1. + <_> + 3 1 2 1 3. + 1 + <_> + + <_> + 11 5 2 1 -1. + <_> + 12 5 1 1 2. + <_> + + <_> + 16 6 3 3 -1. + <_> + 15 7 3 1 3. + 1 + <_> + + <_> + 2 16 1 4 -1. + <_> + 2 17 1 2 2. + <_> + + <_> + 2 13 5 2 -1. + <_> + 2 13 5 1 2. + 1 + <_> + + <_> + 12 5 1 2 -1. + <_> + 12 6 1 1 2. + <_> + + <_> + 10 3 6 4 -1. + <_> + 10 4 6 2 2. + <_> + + <_> + 13 8 4 6 -1. + <_> + 13 8 2 3 2. + <_> + 15 11 2 3 2. + <_> + + <_> + 6 15 3 2 -1. + <_> + 7 16 1 2 3. + 1 + <_> + + <_> + 16 10 4 3 -1. + <_> + 17 11 2 3 2. + 1 + <_> + + <_> + 1 2 6 8 -1. + <_> + 4 2 3 8 2. + <_> + + <_> + 4 0 15 1 -1. + <_> + 9 0 5 1 3. + <_> + + <_> + 15 13 2 2 -1. + <_> + 15 13 2 1 2. + 1 + <_> + + <_> + 14 2 6 1 -1. + <_> + 17 2 3 1 2. + <_> + + <_> + 15 0 3 3 -1. + <_> + 16 1 1 3 3. + 1 + <_> + + <_> + 18 7 2 1 -1. + <_> + 18 7 1 1 2. + 1 + <_> + + <_> + 4 3 3 4 -1. + <_> + 3 4 3 2 2. + 1 + <_> + + <_> + 16 8 4 4 -1. + <_> + 16 9 4 2 2. + <_> + + <_> + 7 4 2 4 -1. + <_> + 6 5 2 2 2. + 1 + <_> + + <_> + 16 14 4 6 -1. + <_> + 18 14 2 6 2. + <_> + + <_> + 7 9 6 3 -1. + <_> + 9 10 2 1 9. + <_> + + <_> + 8 9 3 4 -1. + <_> + 9 9 1 4 3. + <_> + + <_> + 8 0 6 3 -1. + <_> + 10 0 2 3 3. + <_> + + <_> + 0 8 3 3 -1. + <_> + 0 9 3 1 3. + <_> + + <_> + 18 16 1 3 -1. + <_> + 18 17 1 1 3. + <_> + + <_> + 18 17 1 3 -1. + <_> + 18 18 1 1 3. + <_> + + <_> + 17 5 3 3 -1. + <_> + 16 6 3 1 3. + 1 + <_> + + <_> + 12 8 1 6 -1. + <_> + 10 10 1 2 3. + 1 + <_> + + <_> + 10 3 6 12 -1. + <_> + 12 3 2 12 3. + <_> + + <_> + 8 6 5 14 -1. + <_> + 8 13 5 7 2. + <_> + + <_> + 1 17 19 2 -1. + <_> + 1 18 19 1 2. + <_> + + <_> + 14 7 2 4 -1. + <_> + 14 9 2 2 2. + <_> + + <_> + 3 13 2 4 -1. + <_> + 3 15 2 2 2. + <_> + + <_> + 1 2 18 12 -1. + <_> + 7 6 6 4 9. + <_> + + <_> + 0 0 4 5 -1. + <_> + 2 0 2 5 2. + <_> + + <_> + 14 14 6 6 -1. + <_> + 17 14 3 6 2. + <_> + + <_> + 4 16 16 3 -1. + <_> + 8 16 8 3 2. + <_> + + <_> + 8 17 8 1 -1. + <_> + 10 17 4 1 2. + <_> + + <_> + 4 7 4 4 -1. + <_> + 4 9 4 2 2. + <_> + + <_> + 0 0 18 9 -1. + <_> + 6 3 6 3 9. + <_> + + <_> + 0 9 6 2 -1. + <_> + 2 9 2 2 3. + <_> + + <_> + 15 0 3 1 -1. + <_> + 16 0 1 1 3. + <_> + + <_> + 16 0 2 1 -1. + <_> + 17 0 1 1 2. + <_> + + <_> + 18 14 1 2 -1. + <_> + 18 15 1 1 2. + <_> + + <_> + 4 0 3 2 -1. + <_> + 5 0 1 2 3. + <_> + + <_> + 6 14 3 1 -1. + <_> + 7 15 1 1 3. + 1 + <_> + + <_> + 0 11 7 3 -1. + <_> + 0 12 7 1 3. + <_> + + <_> + 1 14 19 3 -1. + <_> + 1 15 19 1 3. + <_> + + <_> + 15 1 3 5 -1. + <_> + 16 1 1 5 3. + <_> + + <_> + 14 2 6 4 -1. + <_> + 14 2 3 2 2. + <_> + 17 4 3 2 2. + <_> + + <_> + 15 10 2 2 -1. + <_> + 16 10 1 2 2. + <_> + + <_> + 14 11 3 4 -1. + <_> + 14 13 3 2 2. + <_> + + <_> + 16 5 3 15 -1. + <_> + 17 5 1 15 3. + <_> + + <_> + 6 10 14 3 -1. + <_> + 6 11 14 1 3. + <_> + + <_> + 2 17 12 3 -1. + <_> + 6 17 4 3 3. + <_> + + <_> + 0 16 16 2 -1. + <_> + 4 16 8 2 2. + <_> + + <_> + 7 3 6 16 -1. + <_> + 7 7 6 8 2. + <_> + + <_> + 7 1 12 3 -1. + <_> + 10 1 6 3 2. + <_> + + <_> + 13 1 4 4 -1. + <_> + 13 3 4 2 2. + <_> + + <_> + 6 18 3 2 -1. + <_> + 7 18 1 2 3. + <_> + + <_> + 2 2 3 5 -1. + <_> + 3 2 1 5 3. + <_> + + <_> + 10 0 3 3 -1. + <_> + 11 0 1 3 3. + <_> + + <_> + 10 0 10 4 -1. + <_> + 10 0 5 2 2. + <_> + 15 2 5 2 2. + <_> + + <_> + 0 16 6 3 -1. + <_> + 3 16 3 3 2. + <_> + + <_> + 0 17 6 3 -1. + <_> + 3 17 3 3 2. + <_> + + <_> + 16 1 3 2 -1. + <_> + 17 2 1 2 3. + 1 + <_> + + <_> + 4 1 3 3 -1. + <_> + 3 2 3 1 3. + 1 + <_> + + <_> + 6 0 4 5 -1. + <_> + 7 0 2 5 2. + <_> + + <_> + 4 17 3 3 -1. + <_> + 5 18 1 1 9. + <_> + + <_> + 4 15 3 3 -1. + <_> + 5 16 1 1 9. + <_> + + <_> + 1 10 6 1 -1. + <_> + 3 10 2 1 3. + <_> + + <_> + 0 3 20 2 -1. + <_> + 5 3 10 2 2. + <_> + + <_> + 2 1 15 4 -1. + <_> + 7 1 5 4 3. + <_> + + <_> + 1 10 18 8 -1. + <_> + 10 10 9 8 2. + <_> + + <_> + 16 7 1 4 -1. + <_> + 16 9 1 2 2. + <_> + + <_> + 17 9 2 1 -1. + <_> + 18 9 1 1 2. + <_> + + <_> + 17 5 3 7 -1. + <_> + 18 5 1 7 3. + <_> + + <_> + 5 10 12 1 -1. + <_> + 8 10 6 1 2. + <_> + + <_> + 15 9 2 6 -1. + <_> + 15 9 1 3 2. + <_> + 16 12 1 3 2. + <_> + + <_> + 1 6 16 10 -1. + <_> + 1 11 16 5 2. + <_> + + <_> + 1 12 19 8 -1. + <_> + 1 16 19 4 2. + <_> + + <_> + 4 4 12 9 -1. + <_> + 8 7 4 3 9. + <_> + + <_> + 5 2 9 9 -1. + <_> + 5 5 9 3 3. + <_> + + <_> + 13 0 3 6 -1. + <_> + 14 0 1 6 3. + <_> + + <_> + 19 16 1 3 -1. + <_> + 18 17 1 1 3. + 1 + <_> + + <_> + 17 17 1 2 -1. + <_> + 17 18 1 1 2. + <_> + + <_> + 0 9 4 2 -1. + <_> + 2 9 2 2 2. + <_> + + <_> + 3 0 3 19 -1. + <_> + 4 0 1 19 3. + <_> + + <_> + 4 13 4 1 -1. + <_> + 5 14 2 1 2. + 1 + <_> + + <_> + 16 0 4 1 -1. + <_> + 18 0 2 1 2. + <_> + + <_> + 10 0 4 4 -1. + <_> + 11 0 2 4 2. + <_> + + <_> + 9 0 3 5 -1. + <_> + 10 0 1 5 3. + <_> + + <_> + 3 4 1 3 -1. + <_> + 2 5 1 1 3. + 1 + <_> + + <_> + 3 4 2 3 -1. + <_> + 2 5 2 1 3. + 1 + <_> + + <_> + 5 14 3 3 -1. + <_> + 6 15 1 3 3. + 1 + <_> + + <_> + 2 0 2 2 -1. + <_> + 2 0 1 2 2. + 1 + <_> + + <_> + 0 2 6 1 -1. + <_> + 3 2 3 1 2. + <_> + + <_> + 0 2 4 5 -1. + <_> + 2 2 2 5 2. + <_> + + <_> + 2 0 4 4 -1. + <_> + 3 0 2 4 2. + <_> + + <_> + 6 16 3 1 -1. + <_> + 7 17 1 1 3. + 1 + <_> + + <_> + 16 3 4 2 -1. + <_> + 17 4 2 2 2. + 1 + <_> + + <_> + 16 19 2 1 -1. + <_> + 17 19 1 1 2. + <_> + + <_> + 17 18 2 1 -1. + <_> + 18 18 1 1 2. + <_> + + <_> + 17 16 1 3 -1. + <_> + 17 17 1 1 3. + <_> + + <_> + 9 8 3 3 -1. + <_> + 9 9 3 1 3. + <_> + + <_> + 2 17 5 2 -1. + <_> + 2 18 5 1 2. + <_> + + <_> + 6 10 8 3 -1. + <_> + 8 10 4 3 2. + <_> + + <_> + 17 15 2 3 -1. + <_> + 16 16 2 1 3. + 1 + <_> + + <_> + 6 8 5 2 -1. + <_> + 6 8 5 1 2. + 1 + <_> + + <_> + 11 0 3 4 -1. + <_> + 11 2 3 2 2. + <_> + + <_> + 17 2 3 3 -1. + <_> + 18 3 1 3 3. + 1 + <_> + + <_> + 16 4 3 2 -1. + <_> + 16 5 3 1 2. + <_> + + <_> + 14 0 6 6 -1. + <_> + 14 0 3 3 2. + <_> + 17 3 3 3 2. + <_> + + <_> + 6 2 10 4 -1. + <_> + 6 4 10 2 2. + <_> + + <_> + 5 6 9 2 -1. + <_> + 5 7 9 1 2. + <_> + + <_> + 7 6 6 3 -1. + <_> + 7 7 6 1 3. + <_> + + <_> + 17 0 3 1 -1. + <_> + 18 1 1 1 3. + 1 + <_> + + <_> + 8 0 12 2 -1. + <_> + 14 0 6 2 2. + <_> + + <_> + 16 2 4 2 -1. + <_> + 18 2 2 2 2. + <_> + + <_> + 9 4 4 1 -1. + <_> + 10 4 2 1 2. + <_> + + <_> + 5 4 2 3 -1. + <_> + 4 5 2 1 3. + 1 + <_> + + <_> + 16 8 4 8 -1. + <_> + 17 8 2 8 2. + <_> + + <_> + 1 19 16 1 -1. + <_> + 9 19 8 1 2. + <_> + + <_> + 4 19 12 1 -1. + <_> + 10 19 6 1 2. + <_> + + <_> + 2 19 4 1 -1. + <_> + 4 19 2 1 2. + <_> + + <_> + 12 5 2 8 -1. + <_> + 12 7 2 4 2. + <_> + + <_> + 8 10 1 2 -1. + <_> + 8 10 1 1 2. + 1 + <_> + + <_> + 15 3 3 12 -1. + <_> + 16 3 1 12 3. + <_> + + <_> + 16 14 4 3 -1. + <_> + 16 15 4 1 3. + <_> + + <_> + 3 0 3 2 -1. + <_> + 4 0 1 2 3. + <_> + + <_> + 13 13 3 6 -1. + <_> + 14 13 1 6 3. + <_> + + <_> + 2 12 2 2 -1. + <_> + 2 12 2 1 2. + 1 + <_> + + <_> + 1 8 1 9 -1. + <_> + 1 11 1 3 3. + <_> + + <_> + 1 9 2 2 -1. + <_> + 2 9 1 2 2. + <_> + + <_> + 13 9 2 3 -1. + <_> + 12 10 2 1 3. + 1 + <_> + + <_> + 10 14 4 6 -1. + <_> + 11 14 2 6 2. + <_> + + <_> + 11 6 4 8 -1. + <_> + 12 6 2 8 2. + <_> + + <_> + 5 6 14 14 -1. + <_> + 5 13 14 7 2. + <_> + + <_> + 6 4 8 3 -1. + <_> + 6 5 8 1 3. + <_> + + <_> + 1 16 1 3 -1. + <_> + 1 17 1 1 3. + <_> + + <_> + 5 1 4 3 -1. + <_> + 4 2 4 1 3. + 1 + <_> + + <_> + 17 3 3 3 -1. + <_> + 16 4 3 1 3. + 1 + <_> + + <_> + 15 3 5 15 -1. + <_> + 15 8 5 5 3. + <_> + + <_> + 15 9 4 6 -1. + <_> + 15 9 2 3 2. + <_> + 17 12 2 3 2. + <_> + + <_> + 16 7 3 3 -1. + <_> + 15 8 3 1 3. + 1 + <_> + + <_> + 11 5 6 9 -1. + <_> + 13 5 2 9 3. + <_> + + <_> + 16 15 2 3 -1. + <_> + 15 16 2 1 3. + 1 + <_> + + <_> + 0 17 7 3 -1. + <_> + 0 18 7 1 3. + <_> + + <_> + 16 8 4 7 -1. + <_> + 17 9 2 7 2. + 1 + <_> + + <_> + 15 16 1 3 -1. + <_> + 14 17 1 1 3. + 1 + <_> + + <_> + 12 17 8 1 -1. + <_> + 16 17 4 1 2. + <_> + + <_> + 14 16 2 4 -1. + <_> + 14 18 2 2 2. + <_> + + <_> + 4 10 12 1 -1. + <_> + 8 10 4 1 3. + <_> + + <_> + 4 9 2 2 -1. + <_> + 5 9 1 2 2. + <_> + + <_> + 7 10 9 2 -1. + <_> + 10 10 3 2 3. + <_> + + <_> + 5 3 13 9 -1. + <_> + 5 6 13 3 3. + <_> + + <_> + 6 7 5 2 -1. + <_> + 6 8 5 1 2. + <_> + + <_> + 5 5 12 14 -1. + <_> + 9 5 4 14 3. + <_> + + <_> + 18 8 2 10 -1. + <_> + 18 13 2 5 2. + <_> + + <_> + 8 1 4 4 -1. + <_> + 9 1 2 4 2. + <_> + + <_> + 0 0 20 7 -1. + <_> + 5 0 10 7 2. + <_> + + <_> + 10 0 4 4 -1. + <_> + 11 0 2 4 2. + <_> + + <_> + 13 1 3 2 -1. + <_> + 14 1 1 2 3. + <_> + + <_> + 12 0 8 1 -1. + <_> + 16 0 4 1 2. + <_> + + <_> + 0 3 4 6 -1. + <_> + 0 3 2 3 2. + <_> + 2 6 2 3 2. + <_> + + <_> + 1 0 4 5 -1. + <_> + 3 0 2 5 2. + <_> + + <_> + 4 5 1 3 -1. + <_> + 3 6 1 1 3. + 1 + <_> + + <_> + 4 14 4 2 -1. + <_> + 4 14 2 2 2. + 1 + <_> + + <_> + 3 13 16 7 -1. + <_> + 11 13 8 7 2. + <_> + + <_> + 5 1 9 4 -1. + <_> + 5 2 9 2 2. + <_> + + <_> + 4 1 3 3 -1. + <_> + 5 1 1 3 3. + <_> + + <_> + 0 0 10 1 -1. + <_> + 5 0 5 1 2. + <_> + + <_> + 8 6 5 4 -1. + <_> + 7 7 5 2 2. + 1 + <_> + + <_> + 18 4 2 2 -1. + <_> + 18 4 1 2 2. + 1 + <_> + + <_> + 11 7 3 3 -1. + <_> + 12 8 1 1 9. + <_> + + <_> + 16 16 2 2 -1. + <_> + 16 16 1 1 2. + <_> + 17 17 1 1 2. + <_> + + <_> + 3 5 1 3 -1. + <_> + 2 6 1 1 3. + 1 + <_> + + <_> + 7 10 2 3 -1. + <_> + 6 11 2 1 3. + 1 + <_> + + <_> + 0 5 2 14 -1. + <_> + 0 12 2 7 2. + <_> + + <_> + 14 12 5 2 -1. + <_> + 14 13 5 1 2. + <_> + + <_> + 5 4 3 5 -1. + <_> + 6 5 1 5 3. + 1 + <_> + + <_> + 0 8 20 6 -1. + <_> + 0 10 20 2 3. + <_> + + <_> + 15 10 2 2 -1. + <_> + 15 10 1 2 2. + 1 + <_> + + <_> + 1 15 14 2 -1. + <_> + 8 15 7 2 2. + <_> + + <_> + 2 14 4 5 -1. + <_> + 4 14 2 5 2. + <_> + + <_> + 17 15 2 3 -1. + <_> + 16 16 2 1 3. + 1 + <_> + + <_> + 5 0 6 4 -1. + <_> + 7 0 2 4 3. + <_> + + <_> + 6 0 14 20 -1. + <_> + 6 10 14 10 2. + <_> + + <_> + 13 1 1 9 -1. + <_> + 13 4 1 3 3. + <_> + + <_> + 15 0 1 4 -1. + <_> + 15 1 1 2 2. + <_> + + <_> + 13 3 2 2 -1. + <_> + 14 3 1 2 2. + <_> + + <_> + 16 18 3 2 -1. + <_> + 16 19 3 1 2. + <_> + + <_> + 17 17 2 3 -1. + <_> + 17 18 2 1 3. + <_> + + <_> + 4 6 8 6 -1. + <_> + 4 6 4 3 2. + <_> + 8 9 4 3 2. + <_> + + <_> + 0 3 18 3 -1. + <_> + 6 3 6 3 3. + <_> + + <_> + 16 1 3 2 -1. + <_> + 17 1 1 2 3. + <_> + + <_> + 4 7 4 3 -1. + <_> + 4 7 2 3 2. + 1 + <_> + + <_> + 0 17 20 3 -1. + <_> + 5 17 10 3 2. + <_> + + <_> + 15 16 4 2 -1. + <_> + 17 16 2 2 2. + <_> + + <_> + 5 13 2 5 -1. + <_> + 5 13 1 5 2. + 1 + <_> + + <_> + 1 8 10 1 -1. + <_> + 1 8 5 1 2. + 1 + <_> + + <_> + 9 15 9 5 -1. + <_> + 12 15 3 5 3. + <_> + + <_> + 15 8 4 7 -1. + <_> + 16 8 2 7 2. + <_> + + <_> + 12 4 3 1 -1. + <_> + 13 4 1 1 3. + <_> + + <_> + 15 3 4 11 -1. + <_> + 16 3 2 11 2. + <_> + + <_> + 3 15 3 1 -1. + <_> + 4 16 1 1 3. + 1 + <_> + + <_> + 13 8 3 4 -1. + <_> + 14 9 1 4 3. + 1 + <_> + + <_> + 4 2 12 2 -1. + <_> + 10 2 6 2 2. + <_> + + <_> + 2 1 16 7 -1. + <_> + 10 1 8 7 2. + <_> + + <_> + 12 1 3 4 -1. + <_> + 12 2 3 2 2. + <_> + + <_> + 10 8 10 12 -1. + <_> + 10 12 10 4 3. + <_> + + <_> + 17 0 3 8 -1. + <_> + 17 4 3 4 2. + <_> + + <_> + 6 2 3 2 -1. + <_> + 7 2 1 2 3. + <_> + + <_> + 4 1 3 8 -1. + <_> + 5 1 1 8 3. + <_> + + <_> + 4 18 6 2 -1. + <_> + 7 18 3 2 2. + <_> + + <_> + 8 0 2 6 -1. + <_> + 8 0 1 6 2. + 1 + <_> + + <_> + 2 1 3 14 -1. + <_> + 3 1 1 14 3. + <_> + + <_> + 17 0 3 9 -1. + <_> + 18 0 1 9 3. + <_> + + <_> + 6 5 3 5 -1. + <_> + 7 6 1 5 3. + 1 + <_> + + <_> + 6 8 2 5 -1. + <_> + 7 8 1 5 2. + <_> + + <_> + 5 8 9 11 -1. + <_> + 8 8 3 11 3. + <_> + + <_> + 7 16 3 4 -1. + <_> + 8 16 1 4 3. + <_> + + <_> + 10 12 3 6 -1. + <_> + 11 12 1 6 3. + <_> + + <_> + 8 17 6 2 -1. + <_> + 10 17 2 2 3. + <_> + + <_> + 12 0 8 4 -1. + <_> + 12 0 4 2 2. + <_> + 16 2 4 2 2. + <_> + + <_> + 19 0 1 2 -1. + <_> + 19 1 1 1 2. + <_> + + <_> + 18 1 2 1 -1. + <_> + 19 1 1 1 2. + <_> + + <_> + 5 6 1 3 -1. + <_> + 4 7 1 1 3. + 1 + <_> + + <_> + 6 6 2 1 -1. + <_> + 6 6 1 1 2. + 1 + <_> + + <_> + 0 7 2 3 -1. + <_> + 0 8 2 1 3. + <_> + + <_> + 14 7 2 5 -1. + <_> + 15 7 1 5 2. + <_> + + <_> + 16 5 2 7 -1. + <_> + 16 5 1 7 2. + 1 + <_> + + <_> + 14 8 4 6 -1. + <_> + 15 9 2 6 2. + 1 + <_> + + <_> + 4 8 4 4 -1. + <_> + 4 8 2 4 2. + 1 + <_> + + <_> + 16 1 4 2 -1. + <_> + 18 1 2 2 2. + <_> + + <_> + 8 0 12 2 -1. + <_> + 14 0 6 2 2. + <_> + + <_> + 7 2 4 1 -1. + <_> + 8 2 2 1 2. + <_> + + <_> + 18 7 2 3 -1. + <_> + 18 8 2 1 3. + <_> + + <_> + 13 3 4 4 -1. + <_> + 13 4 4 2 2. + <_> + + <_> + 0 8 17 4 -1. + <_> + 0 9 17 2 2. + <_> + + <_> + 11 8 1 4 -1. + <_> + 11 9 1 2 2. + <_> + + <_> + 12 8 8 2 -1. + <_> + 12 8 4 1 2. + <_> + 16 9 4 1 2. + <_> + + <_> + 12 10 6 1 -1. + <_> + 14 10 2 1 3. + <_> + + <_> + 5 8 2 5 -1. + <_> + 5 8 1 5 2. + 1 + <_> + + <_> + 12 9 2 1 -1. + <_> + 12 9 1 1 2. + 1 + <_> + + <_> + 5 10 3 1 -1. + <_> + 6 10 1 1 3. + <_> + + <_> + 0 6 20 14 -1. + <_> + 0 13 20 7 2. + <_> + + <_> + 9 5 4 8 -1. + <_> + 9 5 4 4 2. + 1 + <_> + + <_> + 6 1 9 2 -1. + <_> + 6 2 9 1 2. + <_> + + <_> + 7 1 8 4 -1. + <_> + 7 2 8 2 2. + <_> + + <_> + 3 0 12 4 -1. + <_> + 3 1 12 2 2. + <_> + + <_> + 0 1 9 7 -1. + <_> + 3 1 3 7 3. + <_> + + <_> + 5 9 6 3 -1. + <_> + 7 9 2 3 3. + <_> + + <_> + 6 4 10 3 -1. + <_> + 5 5 10 1 3. + 1 + <_> + + <_> + 12 0 8 7 -1. + <_> + 14 0 4 7 2. + <_> + + <_> + 8 0 6 6 -1. + <_> + 10 0 2 6 3. + <_> + + <_> + 1 14 4 1 -1. + <_> + 1 14 2 1 2. + 1 + <_> + + <_> + 5 9 3 4 -1. + <_> + 6 10 1 4 3. + 1 + <_> + + <_> + 5 17 10 3 -1. + <_> + 5 18 10 1 3. + <_> + + <_> + 7 14 6 4 -1. + <_> + 7 15 6 2 2. + <_> + + <_> + 8 13 7 3 -1. + <_> + 8 14 7 1 3. + <_> + + <_> + 8 7 8 3 -1. + <_> + 7 8 8 1 3. + 1 + <_> + + <_> + 18 16 2 2 -1. + <_> + 18 16 1 1 2. + <_> + 19 17 1 1 2. + <_> + + <_> + 9 3 9 6 -1. + <_> + 7 5 9 2 3. + 1 + <_> + + <_> + 18 18 1 2 -1. + <_> + 18 19 1 1 2. + <_> + + <_> + 16 11 4 1 -1. + <_> + 17 12 2 1 2. + 1 + <_> + + <_> + 5 0 4 3 -1. + <_> + 5 1 4 1 3. + <_> + + <_> + 13 10 4 1 -1. + <_> + 14 10 2 1 2. + <_> + + <_> + 15 7 2 10 -1. + <_> + 15 7 1 5 2. + <_> + 16 12 1 5 2. + <_> + + <_> + 6 0 3 20 -1. + <_> + 6 10 3 10 2. + <_> + + <_> + 4 4 9 16 -1. + <_> + 4 8 9 8 2. + <_> + + <_> + 2 9 3 3 -1. + <_> + 3 9 1 3 3. + <_> + + <_> + 3 1 9 6 -1. + <_> + 6 1 3 6 3. + <_> + + <_> + 5 18 1 2 -1. + <_> + 5 19 1 1 2. + <_> + + <_> + 4 0 6 5 -1. + <_> + 6 0 2 5 3. + <_> + + <_> + 16 8 3 7 -1. + <_> + 17 9 1 7 3. + 1 + <_> + + <_> + 15 3 3 7 -1. + <_> + 16 4 1 7 3. + 1 + <_> + + <_> + 18 3 1 15 -1. + <_> + 18 8 1 5 3. + <_> + + <_> + 5 10 4 1 -1. + <_> + 6 10 2 1 2. + <_> + + <_> + 7 8 3 12 -1. + <_> + 8 8 1 12 3. + <_> + + <_> + 14 6 4 2 -1. + <_> + 14 6 2 1 2. + <_> + 16 7 2 1 2. + <_> + + <_> + 5 18 2 2 -1. + <_> + 5 18 1 1 2. + <_> + 6 19 1 1 2. + <_> + + <_> + 8 18 2 2 -1. + <_> + 8 18 1 1 2. + <_> + 9 19 1 1 2. + <_> + + <_> + 3 18 2 2 -1. + <_> + 3 18 1 1 2. + <_> + 4 19 1 1 2. + <_> + + <_> + 6 4 3 6 -1. + <_> + 7 5 1 6 3. + 1 + <_> + + <_> + 16 7 2 2 -1. + <_> + 16 7 1 1 2. + <_> + 17 8 1 1 2. + <_> + + <_> + 0 8 12 3 -1. + <_> + 6 8 6 3 2. + <_> + + <_> + 9 10 6 2 -1. + <_> + 11 10 2 2 3. + <_> + + <_> + 8 5 9 8 -1. + <_> + 11 5 3 8 3. + <_> + + <_> + 16 8 4 12 -1. + <_> + 16 14 4 6 2. + <_> + + <_> + 9 16 10 4 -1. + <_> + 9 17 10 2 2. + <_> + + <_> + 12 0 1 20 -1. + <_> + 12 10 1 10 2. + <_> + + <_> + 8 9 3 3 -1. + <_> + 9 10 1 1 9. + <_> + + <_> + 5 4 3 2 -1. + <_> + 6 4 1 2 3. + <_> + + <_> + 4 0 4 5 -1. + <_> + 5 0 2 5 2. + <_> + + <_> + 16 18 2 2 -1. + <_> + 16 18 1 1 2. + <_> + 17 19 1 1 2. + <_> + + <_> + 4 10 5 3 -1. + <_> + 3 11 5 1 3. + 1 + <_> + + <_> + 0 0 4 12 -1. + <_> + 1 0 2 12 2. + <_> + + <_> + 7 1 8 14 -1. + <_> + 9 1 4 14 2. + <_> + + <_> + 5 14 7 3 -1. + <_> + 5 15 7 1 3. + <_> + + <_> + 15 7 4 2 -1. + <_> + 15 7 2 1 2. + <_> + 17 8 2 1 2. + <_> + + <_> + 8 18 3 1 -1. + <_> + 9 18 1 1 3. + <_> + + <_> + 1 9 6 6 -1. + <_> + 1 12 6 3 2. + <_> + + <_> + 9 4 5 3 -1. + <_> + 8 5 5 1 3. + 1 + <_> + + <_> + 14 6 6 2 -1. + <_> + 14 6 3 2 2. + 1 + <_> + + <_> + 8 18 3 2 -1. + <_> + 9 18 1 2 3. + <_> + + <_> + 9 16 2 2 -1. + <_> + 9 16 1 1 2. + <_> + 10 17 1 1 2. + <_> + + <_> + 0 8 13 8 -1. + <_> + 0 10 13 4 2. + <_> + + <_> + 12 6 4 7 -1. + <_> + 13 6 2 7 2. + <_> + + <_> + 5 6 5 3 -1. + <_> + 5 7 5 1 3. + <_> + + <_> + 11 18 2 2 -1. + <_> + 11 18 1 1 2. + <_> + 12 19 1 1 2. + <_> + + <_> + 12 9 6 2 -1. + <_> + 14 9 2 2 3. + <_> + + <_> + 0 9 6 2 -1. + <_> + 2 9 2 2 3. + <_> + + <_> + 2 7 4 6 -1. + <_> + 3 7 2 6 2. + <_> + + <_> + 6 4 10 4 -1. + <_> + 6 6 10 2 2. + <_> + + <_> + 9 5 2 4 -1. + <_> + 9 7 2 2 2. + <_> + + <_> + 15 9 2 2 -1. + <_> + 16 9 1 2 2. + <_> + + <_> + 0 15 20 4 -1. + <_> + 5 15 10 4 2. + <_> + + <_> + 10 9 1 8 -1. + <_> + 10 13 1 4 2. + <_> + + <_> + 8 17 4 3 -1. + <_> + 9 17 2 3 2. + <_> + + <_> + 0 17 1 3 -1. + <_> + 0 18 1 1 3. + <_> + + <_> + 18 6 2 1 -1. + <_> + 18 6 1 1 2. + 1 + <_> + + <_> + 0 15 1 4 -1. + <_> + 0 16 1 2 2. + <_> + + <_> + 7 16 6 2 -1. + <_> + 9 16 2 2 3. + <_> + + <_> + 5 10 3 1 -1. + <_> + 6 10 1 1 3. + <_> + + <_> + 4 16 8 4 -1. + <_> + 6 16 4 4 2. + <_> + + <_> + 0 6 1 3 -1. + <_> + 0 7 1 1 3. + <_> + + <_> + 1 7 4 1 -1. + <_> + 2 8 2 1 2. + 1 + <_> + + <_> + 5 4 1 8 -1. + <_> + 5 8 1 4 2. + <_> + + <_> + 7 1 5 4 -1. + <_> + 7 3 5 2 2. + <_> + + <_> + 7 1 5 4 -1. + <_> + 7 3 5 2 2. + <_> + + <_> + 18 0 2 4 -1. + <_> + 18 1 2 2 2. + <_> + + <_> + 0 0 8 3 -1. + <_> + 4 0 4 3 2. + <_> + + <_> + 0 0 2 2 -1. + <_> + 0 1 2 1 2. + <_> + + <_> + 14 0 6 1 -1. + <_> + 17 0 3 1 2. + <_> + + <_> + 6 2 3 3 -1. + <_> + 5 3 3 1 3. + 1 + <_> + + <_> + 13 4 2 2 -1. + <_> + 13 5 2 1 2. + <_> + + <_> + 18 4 2 3 -1. + <_> + 18 5 2 1 3. + <_> + + <_> + 17 0 3 4 -1. + <_> + 18 1 1 4 3. + 1 + <_> + + <_> + 16 1 4 4 -1. + <_> + 17 2 2 4 2. + 1 + <_> + + <_> + 6 9 6 9 -1. + <_> + 8 9 2 9 3. + <_> + + <_> + 6 8 2 5 -1. + <_> + 7 8 1 5 2. + <_> + + <_> + 4 3 3 4 -1. + <_> + 5 4 1 4 3. + 1 + <_> + + <_> + 0 18 1 2 -1. + <_> + 0 19 1 1 2. + <_> + + <_> + 15 13 5 4 -1. + <_> + 15 14 5 2 2. + <_> + + <_> + 19 11 1 2 -1. + <_> + 19 12 1 1 2. + <_> + + <_> + 12 8 3 2 -1. + <_> + 13 9 1 2 3. + 1 + <_> + + <_> + 15 15 1 2 -1. + <_> + 15 16 1 1 2. + <_> + + <_> + 14 15 2 3 -1. + <_> + 15 15 1 3 2. + <_> + + <_> + 14 4 4 3 -1. + <_> + 13 5 4 1 3. + 1 + <_> + + <_> + 3 17 1 3 -1. + <_> + 3 18 1 1 3. + <_> + + <_> + 2 18 6 2 -1. + <_> + 2 19 6 1 2. + <_> + + <_> + 2 16 3 3 -1. + <_> + 2 17 3 1 3. + <_> + + <_> + 16 0 4 19 -1. + <_> + 17 0 2 19 2. + <_> + + <_> + 5 16 6 4 -1. + <_> + 7 16 2 4 3. + <_> + + <_> + 5 6 6 6 -1. + <_> + 7 8 2 2 9. + <_> + + <_> + 17 0 2 2 -1. + <_> + 17 0 2 1 2. + 1 + <_> + + <_> + 8 1 12 2 -1. + <_> + 14 1 6 2 2. + <_> + + <_> + 0 0 20 2 -1. + <_> + 0 1 20 1 2. + <_> + + <_> + 18 0 2 2 -1. + <_> + 18 0 1 2 2. + 1 + <_> + + <_> + 17 2 3 3 -1. + <_> + 18 3 1 3 3. + 1 + <_> + + <_> + 3 0 4 3 -1. + <_> + 2 1 4 1 3. + 1 + <_> + + <_> + 12 7 3 4 -1. + <_> + 13 7 1 4 3. + <_> + + <_> + 12 0 1 6 -1. + <_> + 12 2 1 2 3. + <_> + + <_> + 6 4 3 4 -1. + <_> + 7 5 1 4 3. + 1 + <_> + + <_> + 9 13 2 2 -1. + <_> + 9 14 2 1 2. + <_> + + <_> + 15 15 2 2 -1. + <_> + 16 15 1 2 2. + <_> + + <_> + 15 12 5 6 -1. + <_> + 15 15 5 3 2. + <_> + + <_> + 3 1 1 3 -1. + <_> + 2 2 1 1 3. + 1 + <_> + + <_> + 15 14 2 2 -1. + <_> + 15 14 1 1 2. + <_> + 16 15 1 1 2. + <_> + + <_> + 15 14 2 2 -1. + <_> + 15 14 1 1 2. + <_> + 16 15 1 1 2. + <_> + + <_> + 7 16 2 2 -1. + <_> + 7 16 1 2 2. + 1 + <_> + + <_> + 13 0 6 6 -1. + <_> + 15 0 2 6 3. + <_> + + <_> + 15 3 5 3 -1. + <_> + 14 4 5 1 3. + 1 + <_> + + <_> + 5 15 10 2 -1. + <_> + 10 15 5 2 2. + <_> + + <_> + 9 16 2 1 -1. + <_> + 10 16 1 1 2. + <_> + + <_> + 2 14 4 2 -1. + <_> + 2 14 4 1 2. + 1 + <_> + + <_> + 17 14 3 3 -1. + <_> + 16 15 3 1 3. + 1 + <_> + + <_> + 18 14 1 4 -1. + <_> + 17 15 1 2 2. + 1 + <_> + + <_> + 1 13 5 3 -1. + <_> + 1 14 5 1 3. + <_> + + <_> + 3 12 1 2 -1. + <_> + 3 12 1 1 2. + 1 + <_> + + <_> + 18 4 2 4 -1. + <_> + 18 6 2 2 2. + <_> + + <_> + 18 0 1 2 -1. + <_> + 18 0 1 1 2. + 1 + <_> + + <_> + 1 14 8 2 -1. + <_> + 1 15 8 1 2. + <_> + + <_> + 16 2 4 3 -1. + <_> + 15 3 4 1 3. + 1 + <_> + + <_> + 16 2 2 4 -1. + <_> + 16 4 2 2 2. + <_> + + <_> + 19 5 1 3 -1. + <_> + 19 6 1 1 3. + <_> + + <_> + 11 6 4 6 -1. + <_> + 12 6 2 6 2. + <_> + + <_> + 3 9 6 3 -1. + <_> + 5 9 2 3 3. + <_> + + <_> + 2 8 4 12 -1. + <_> + 2 8 2 6 2. + <_> + 4 14 2 6 2. + <_> + + <_> + 12 5 6 1 -1. + <_> + 12 5 3 1 2. + 1 + <_> + + <_> + 7 9 12 5 -1. + <_> + 13 9 6 5 2. + <_> + + <_> + 13 9 6 3 -1. + <_> + 13 10 6 1 3. + <_> + + <_> + 19 18 1 2 -1. + <_> + 19 19 1 1 2. + <_> + + <_> + 19 17 1 3 -1. + <_> + 19 18 1 1 3. + <_> + + <_> + 15 9 2 4 -1. + <_> + 15 9 1 2 2. + <_> + 16 11 1 2 2. + <_> + + <_> + 16 5 4 3 -1. + <_> + 16 6 4 1 3. + <_> + + <_> + 5 0 3 3 -1. + <_> + 4 1 3 1 3. + 1 + <_> + + <_> + 10 1 6 3 -1. + <_> + 12 1 2 3 3. + <_> + + <_> + 13 9 3 1 -1. + <_> + 14 9 1 1 3. + <_> + + <_> + 0 2 6 4 -1. + <_> + 0 2 3 2 2. + <_> + 3 4 3 2 2. + <_> + + <_> + 0 8 19 4 -1. + <_> + 0 9 19 2 2. + <_> + + <_> + 7 5 3 6 -1. + <_> + 8 7 1 2 9. + <_> + + <_> + 4 4 1 3 -1. + <_> + 3 5 1 1 3. + 1 + <_> + + <_> + 0 2 4 4 -1. + <_> + 0 2 2 2 2. + <_> + 2 4 2 2 2. + <_> + + <_> + 5 0 3 3 -1. + <_> + 6 1 1 1 9. + <_> + + <_> + 19 2 1 3 -1. + <_> + 19 3 1 1 3. + <_> + + <_> + 7 6 5 3 -1. + <_> + 7 7 5 1 3. + <_> + + <_> + 7 5 1 4 -1. + <_> + 6 6 1 2 2. + 1 + <_> + + <_> + 14 10 2 1 -1. + <_> + 15 10 1 1 2. + <_> + + <_> + 6 10 9 2 -1. + <_> + 9 10 3 2 3. + <_> + + <_> + 15 5 2 6 -1. + <_> + 15 5 1 3 2. + <_> + 16 8 1 3 2. + <_> + + <_> + 5 10 2 2 -1. + <_> + 6 10 1 2 2. + <_> + + <_> + 6 10 2 2 -1. + <_> + 6 10 1 1 2. + <_> + 7 11 1 1 2. + <_> + + <_> + 5 9 4 2 -1. + <_> + 6 9 2 2 2. + <_> + + <_> + 12 10 4 4 -1. + <_> + 12 10 4 2 2. + 1 + <_> + + <_> + 0 9 3 10 -1. + <_> + 0 14 3 5 2. + <_> + + <_> + 3 3 15 9 -1. + <_> + 8 6 5 3 9. + <_> + + <_> + 8 1 8 18 -1. + <_> + 8 1 4 9 2. + <_> + 12 10 4 9 2. + <_> + + <_> + 3 6 3 11 -1. + <_> + 4 6 1 11 3. + <_> + + <_> + 11 8 4 3 -1. + <_> + 12 8 2 3 2. + <_> + + <_> + 17 8 2 3 -1. + <_> + 16 9 2 1 3. + 1 + <_> + + <_> + 3 1 6 5 -1. + <_> + 5 1 2 5 3. + <_> + + <_> + 6 18 2 2 -1. + <_> + 6 18 1 1 2. + <_> + 7 19 1 1 2. + <_> + + <_> + 9 18 3 2 -1. + <_> + 10 18 1 2 3. + <_> + + <_> + 15 6 4 9 -1. + <_> + 16 6 2 9 2. + <_> + + <_> + 6 9 6 5 -1. + <_> + 8 9 2 5 3. + <_> + + <_> + 15 4 3 15 -1. + <_> + 16 4 1 15 3. + <_> + + <_> + 14 4 2 16 -1. + <_> + 14 12 2 8 2. + <_> + + <_> + 12 2 4 2 -1. + <_> + 12 3 4 1 2. + <_> + + <_> + 19 5 1 6 -1. + <_> + 19 8 1 3 2. + <_> + + <_> + 5 0 9 6 -1. + <_> + 5 2 9 2 3. + <_> + + <_> + 6 3 3 3 -1. + <_> + 5 4 3 1 3. + 1 + <_> + + <_> + 17 4 3 1 -1. + <_> + 18 5 1 1 3. + 1 + <_> + + <_> + 8 5 9 4 -1. + <_> + 8 6 9 2 2. + <_> + + <_> + 9 7 4 3 -1. + <_> + 8 8 4 1 3. + 1 + <_> + + <_> + 0 18 2 2 -1. + <_> + 0 18 1 1 2. + <_> + 1 19 1 1 2. + <_> + + <_> + 0 9 10 4 -1. + <_> + 0 10 10 2 2. + <_> + + <_> + 17 8 3 3 -1. + <_> + 16 9 3 1 3. + 1 + <_> + + <_> + 14 4 3 16 -1. + <_> + 15 4 1 16 3. + <_> + + <_> + 15 4 4 1 -1. + <_> + 16 5 2 1 2. + 1 + <_> + + <_> + 14 6 4 2 -1. + <_> + 14 6 2 1 2. + <_> + 16 7 2 1 2. + <_> + + <_> + 15 5 5 3 -1. + <_> + 15 6 5 1 3. + <_> + + <_> + 0 0 6 20 -1. + <_> + 2 0 2 20 3. + <_> + + <_> + 1 7 4 9 -1. + <_> + 2 7 2 9 2. + <_> + + <_> + 1 19 4 1 -1. + <_> + 3 19 2 1 2. + <_> + + <_> + 2 0 5 2 -1. + <_> + 2 0 5 1 2. + 1 + <_> + + <_> + 18 16 1 2 -1. + <_> + 18 17 1 1 2. + <_> + + <_> + 7 9 3 1 -1. + <_> + 8 9 1 1 3. + <_> + + <_> + 5 5 1 8 -1. + <_> + 5 7 1 4 2. + <_> + + <_> + 9 9 3 2 -1. + <_> + 10 10 1 2 3. + 1 + <_> + + <_> + 9 5 2 7 -1. + <_> + 10 5 1 7 2. + <_> + + <_> + 0 17 11 3 -1. + <_> + 0 18 11 1 3. + <_> + + <_> + 6 14 5 4 -1. + <_> + 6 15 5 2 2. + <_> + + <_> + 3 18 1 2 -1. + <_> + 3 19 1 1 2. + <_> + + <_> + 2 7 11 2 -1. + <_> + 2 8 11 1 2. + <_> + + <_> + 7 7 3 6 -1. + <_> + 7 9 3 2 3. + <_> + + <_> + 12 0 8 3 -1. + <_> + 14 0 4 3 2. + <_> + + <_> + 2 2 16 1 -1. + <_> + 10 2 8 1 2. + <_> + + <_> + 10 0 6 3 -1. + <_> + 12 0 2 3 3. + <_> + + <_> + 11 8 7 4 -1. + <_> + 11 9 7 2 2. + <_> + + <_> + 8 7 4 3 -1. + <_> + 8 8 4 1 3. + <_> + + <_> + 5 8 11 12 -1. + <_> + 5 12 11 4 3. + <_> + + <_> + 11 7 6 3 -1. + <_> + 13 9 2 3 3. + 1 + <_> + + <_> + 3 2 15 6 -1. + <_> + 3 4 15 2 3. + <_> + + <_> + 3 0 3 9 -1. + <_> + 4 0 1 9 3. + <_> + + <_> + 8 18 2 2 -1. + <_> + 8 18 1 1 2. + <_> + 9 19 1 1 2. + <_> + + <_> + 15 0 4 1 -1. + <_> + 16 0 2 1 2. + <_> + + <_> + 17 0 3 2 -1. + <_> + 17 0 3 1 2. + 1 + <_> + + <_> + 10 0 9 6 -1. + <_> + 13 0 3 6 3. + <_> + + <_> + 15 6 3 6 -1. + <_> + 16 7 1 6 3. + 1 + <_> + + <_> + 14 7 5 3 -1. + <_> + 14 8 5 1 3. + <_> + + <_> + 16 11 4 4 -1. + <_> + 17 12 2 4 2. + 1 + <_> + + <_> + 16 10 4 5 -1. + <_> + 17 11 2 5 2. + 1 + <_> + + <_> + 10 4 9 3 -1. + <_> + 13 4 3 3 3. + <_> + + <_> + 5 9 2 4 -1. + <_> + 5 9 1 2 2. + <_> + 6 11 1 2 2. + <_> + + <_> + 18 6 2 8 -1. + <_> + 19 6 1 8 2. + <_> + + <_> + 19 3 1 15 -1. + <_> + 19 8 1 5 3. + <_> + + <_> + 8 9 12 2 -1. + <_> + 14 9 6 2 2. + <_> + + <_> + 18 1 2 10 -1. + <_> + 19 1 1 10 2. + <_> + + <_> + 5 4 3 4 -1. + <_> + 6 5 1 4 3. + 1 + <_> + + <_> + 4 4 4 3 -1. + <_> + 5 5 2 3 2. + 1 + <_> + + <_> + 10 18 4 1 -1. + <_> + 11 18 2 1 2. + <_> + + <_> + 0 4 3 3 -1. + <_> + 0 5 3 1 3. + <_> + + <_> + 8 5 4 1 -1. + <_> + 9 5 2 1 2. + <_> + + <_> + 12 8 8 8 -1. + <_> + 12 10 8 4 2. + <_> + + <_> + 7 7 8 7 -1. + <_> + 11 7 4 7 2. + <_> + + <_> + 11 7 4 4 -1. + <_> + 10 8 4 2 2. + 1 + <_> + + <_> + 5 5 9 3 -1. + <_> + 4 6 9 1 3. + 1 + <_> + + <_> + 6 9 4 3 -1. + <_> + 5 10 4 1 3. + 1 + <_> + + <_> + 12 4 8 6 -1. + <_> + 10 6 8 2 3. + 1 + <_> + + <_> + 9 3 10 5 -1. + <_> + 9 3 5 5 2. + 1 + <_> + + <_> + 15 11 4 2 -1. + <_> + 16 11 2 2 2. + <_> + + <_> + 8 8 8 10 -1. + <_> + 8 8 4 5 2. + <_> + 12 13 4 5 2. + <_> + + <_> + 16 0 4 3 -1. + <_> + 15 1 4 1 3. + 1 + <_> + + <_> + 17 18 1 2 -1. + <_> + 17 19 1 1 2. + <_> + + <_> + 13 18 7 2 -1. + <_> + 13 19 7 1 2. + <_> + + <_> + 5 5 1 4 -1. + <_> + 4 6 1 2 2. + 1 + <_> + + <_> + 2 4 2 4 -1. + <_> + 2 6 2 2 2. + <_> + + <_> + 1 3 4 4 -1. + <_> + 1 3 2 2 2. + <_> + 3 5 2 2 2. + <_> + + <_> + 0 0 7 12 -1. + <_> + 0 6 7 6 2. + <_> + + <_> + 1 0 15 4 -1. + <_> + 1 1 15 2 2. + <_> + + <_> + 14 3 3 14 -1. + <_> + 15 3 1 14 3. + <_> + + <_> + 19 16 1 2 -1. + <_> + 19 16 1 1 2. + 1 + <_> + + <_> + 3 4 4 6 -1. + <_> + 3 7 4 3 2. + <_> + + <_> + 9 5 5 3 -1. + <_> + 9 6 5 1 3. + <_> + + <_> + 17 16 2 1 -1. + <_> + 18 16 1 1 2. + <_> + + <_> + 8 17 12 3 -1. + <_> + 11 17 6 3 2. + <_> + + <_> + 1 12 3 3 -1. + <_> + 1 13 3 1 3. + <_> + + <_> + 7 17 8 2 -1. + <_> + 11 17 4 2 2. + <_> + + <_> + 13 17 4 2 -1. + <_> + 13 18 4 1 2. + <_> + + <_> + 11 17 6 3 -1. + <_> + 13 17 2 3 3. + <_> + + <_> + 6 8 3 4 -1. + <_> + 6 10 3 2 2. + <_> + + <_> + 6 8 3 6 -1. + <_> + 7 10 1 2 9. + <_> + + <_> + 7 4 3 5 -1. + <_> + 8 4 1 5 3. + <_> + + <_> + 16 18 2 2 -1. + <_> + 16 18 1 1 2. + <_> + 17 19 1 1 2. + <_> + + <_> + 12 0 8 1 -1. + <_> + 14 0 4 1 2. + <_> + + <_> + 16 17 2 2 -1. + <_> + 16 17 1 1 2. + <_> + 17 18 1 1 2. + <_> + + <_> + 1 0 4 1 -1. + <_> + 2 1 2 1 2. + 1 + <_> + + <_> + 3 0 5 10 -1. + <_> + 3 5 5 5 2. + <_> + + <_> + 4 2 3 2 -1. + <_> + 4 3 3 1 2. + <_> + + <_> + 8 9 8 2 -1. + <_> + 10 9 4 2 2. + <_> + + <_> + 13 10 2 3 -1. + <_> + 14 10 1 3 2. + <_> + + <_> + 11 6 1 10 -1. + <_> + 11 6 1 5 2. + 1 + <_> + + <_> + 5 15 12 2 -1. + <_> + 11 15 6 2 2. + <_> + + <_> + 6 3 14 2 -1. + <_> + 6 3 14 1 2. + 1 + <_> + + <_> + 15 1 5 10 -1. + <_> + 15 6 5 5 2. + <_> + + <_> + 18 10 2 2 -1. + <_> + 18 10 2 1 2. + 1 + <_> + + <_> + 12 4 8 3 -1. + <_> + 14 6 4 3 2. + 1 + <_> + + <_> + 2 0 16 2 -1. + <_> + 2 0 8 1 2. + <_> + 10 1 8 1 2. + <_> + + <_> + 0 11 4 8 -1. + <_> + 0 13 4 4 2. + <_> + + <_> + 8 16 2 2 -1. + <_> + 8 16 1 1 2. + <_> + 9 17 1 1 2. + <_> + + <_> + 6 0 12 2 -1. + <_> + 6 0 6 1 2. + <_> + 12 1 6 1 2. + <_> + + <_> + 0 8 6 3 -1. + <_> + 2 8 2 3 3. + <_> + + <_> + 2 2 13 2 -1. + <_> + 2 2 13 1 2. + 1 + <_> + + <_> + 0 7 20 13 -1. + <_> + 5 7 10 13 2. + <_> + + <_> + 15 10 4 2 -1. + <_> + 15 10 2 1 2. + <_> + 17 11 2 1 2. + <_> + + <_> + 16 12 2 6 -1. + <_> + 16 15 2 3 2. + <_> + + <_> + 17 11 1 3 -1. + <_> + 16 12 1 1 3. + 1 + <_> + + <_> + 0 0 16 9 -1. + <_> + 0 3 16 3 3. + <_> + + <_> + 0 15 6 4 -1. + <_> + 0 17 6 2 2. + <_> + + <_> + 14 5 3 6 -1. + <_> + 14 7 3 2 3. + <_> + + <_> + 16 8 3 5 -1. + <_> + 17 8 1 5 3. + <_> + + <_> + 7 10 6 8 -1. + <_> + 9 10 2 8 3. + <_> + + <_> + 14 11 5 4 -1. + <_> + 13 12 5 2 2. + 1 + <_> + + <_> + 14 9 4 3 -1. + <_> + 15 9 2 3 2. + <_> + + <_> + 5 9 9 1 -1. + <_> + 8 9 3 1 3. + <_> + + <_> + 16 1 3 6 -1. + <_> + 17 1 1 6 3. + <_> + + <_> + 10 3 10 2 -1. + <_> + 10 3 5 1 2. + <_> + 15 4 5 1 2. + <_> + + <_> + 2 1 18 1 -1. + <_> + 8 1 6 1 3. + <_> + + <_> + 14 3 5 4 -1. + <_> + 13 4 5 2 2. + 1 + <_> + + <_> + 4 0 4 4 -1. + <_> + 5 0 2 4 2. + <_> + + <_> + 12 1 4 5 -1. + <_> + 13 1 2 5 2. + <_> + + <_> + 9 9 7 3 -1. + <_> + 9 10 7 1 3. + <_> + + <_> + 19 3 1 16 -1. + <_> + 19 11 1 8 2. + <_> + + <_> + 4 0 16 3 -1. + <_> + 8 0 8 3 2. + <_> + + <_> + 8 0 12 3 -1. + <_> + 12 0 4 3 3. + <_> + + <_> + 11 0 6 5 -1. + <_> + 13 0 2 5 3. + <_> + + <_> + 12 4 5 8 -1. + <_> + 12 8 5 4 2. + <_> + + <_> + 6 9 2 4 -1. + <_> + 5 10 2 2 2. + 1 + <_> + + <_> + 13 6 2 3 -1. + <_> + 12 7 2 1 3. + 1 + <_> + + <_> + 10 5 3 1 -1. + <_> + 11 5 1 1 3. + <_> + + <_> + 10 6 4 5 -1. + <_> + 11 6 2 5 2. + <_> + + <_> + 15 17 4 2 -1. + <_> + 17 17 2 2 2. + <_> + + <_> + 17 16 2 2 -1. + <_> + 17 16 2 1 2. + 1 + <_> + + <_> + 15 7 3 6 -1. + <_> + 13 9 3 2 3. + 1 + <_> + + <_> + 3 0 4 3 -1. + <_> + 4 1 2 3 2. + 1 + <_> + + <_> + 0 2 6 3 -1. + <_> + 2 3 2 1 9. + <_> + + <_> + 2 15 3 2 -1. + <_> + 3 16 1 2 3. + 1 + <_> + + <_> + 19 8 1 2 -1. + <_> + 19 9 1 1 2. + <_> + + <_> + 7 8 4 2 -1. + <_> + 8 8 2 2 2. + <_> + + <_> + 4 8 9 2 -1. + <_> + 7 8 3 2 3. + <_> + + <_> + 6 10 11 6 -1. + <_> + 6 13 11 3 2. + <_> + + <_> + 0 8 20 5 -1. + <_> + 5 8 10 5 2. + <_> + + <_> + 8 12 6 3 -1. + <_> + 10 12 2 3 3. + <_> + + <_> + 2 2 14 18 -1. + <_> + 9 2 7 18 2. + <_> + + <_> + 10 3 1 8 -1. + <_> + 8 5 1 4 2. + 1 + <_> + + <_> + 0 14 8 2 -1. + <_> + 2 14 4 2 2. + <_> + + <_> + 6 13 3 3 -1. + <_> + 7 14 1 3 3. + 1 + <_> + + <_> + 3 2 4 3 -1. + <_> + 2 3 4 1 3. + 1 + <_> + + <_> + 5 6 3 1 -1. + <_> + 6 6 1 1 3. + <_> + + <_> + 2 5 9 1 -1. + <_> + 5 5 3 1 3. + <_> + + <_> + 6 2 8 3 -1. + <_> + 6 3 8 1 3. + <_> + + <_> + 1 0 16 5 -1. + <_> + 5 0 8 5 2. + <_> + + <_> + 8 3 3 2 -1. + <_> + 9 3 1 2 3. + <_> + + <_> + 0 0 20 1 -1. + <_> + 5 0 10 1 2. + <_> + + <_> + 9 4 3 4 -1. + <_> + 9 5 3 2 2. + <_> + + <_> + 18 4 1 2 -1. + <_> + 18 4 1 1 2. + 1 + <_> + + <_> + 8 0 9 4 -1. + <_> + 11 3 3 4 3. + 1 + <_> + + <_> + 5 12 9 2 -1. + <_> + 8 12 3 2 3. + <_> + + <_> + 3 15 2 2 -1. + <_> + 3 15 1 1 2. + <_> + 4 16 1 1 2. + <_> + + <_> + 3 15 2 2 -1. + <_> + 3 15 1 1 2. + <_> + 4 16 1 1 2. + <_> + + <_> + 8 13 3 4 -1. + <_> + 9 14 1 4 3. + 1 + <_> + + <_> + 8 13 3 4 -1. + <_> + 9 14 1 4 3. + 1 + <_> + + <_> + 14 17 1 3 -1. + <_> + 14 18 1 1 3. + <_> + + <_> + 15 16 1 2 -1. + <_> + 15 17 1 1 2. + <_> + + <_> + 13 18 3 2 -1. + <_> + 13 19 3 1 2. + <_> + + <_> + 13 17 6 2 -1. + <_> + 13 18 6 1 2. + <_> + + <_> + 5 19 2 1 -1. + <_> + 6 19 1 1 2. + <_> + + <_> + 2 9 2 4 -1. + <_> + 2 11 2 2 2. + <_> + + <_> + 5 1 3 3 -1. + <_> + 4 2 3 1 3. + 1 + <_> + + <_> + 3 10 1 2 -1. + <_> + 3 11 1 1 2. + <_> + + <_> + 8 8 3 2 -1. + <_> + 8 9 3 1 2. + <_> + + <_> + 2 5 7 2 -1. + <_> + 2 6 7 1 2. + <_> + + <_> + 0 0 12 3 -1. + <_> + 3 0 6 3 2. + <_> + + <_> + 12 5 5 4 -1. + <_> + 12 5 5 2 2. + 1 + <_> + + <_> + 17 1 3 17 -1. + <_> + 18 1 1 17 3. + <_> + + <_> + 7 12 2 2 -1. + <_> + 7 13 2 1 2. + <_> + + <_> + 19 4 1 8 -1. + <_> + 19 6 1 4 2. + <_> + + <_> + 11 3 6 3 -1. + <_> + 14 3 3 3 2. + <_> + + <_> + 3 0 17 2 -1. + <_> + 3 1 17 1 2. + <_> + + <_> + 15 1 3 4 -1. + <_> + 15 3 3 2 2. + <_> + + <_> + 12 8 2 2 -1. + <_> + 12 8 1 2 2. + 1 + <_> + + <_> + 7 17 4 2 -1. + <_> + 9 17 2 2 2. + <_> + + <_> + 6 1 6 1 -1. + <_> + 8 1 2 1 3. + <_> + + <_> + 13 3 2 10 -1. + <_> + 13 3 1 5 2. + <_> + 14 8 1 5 2. + <_> + + <_> + 18 1 2 4 -1. + <_> + 18 1 1 2 2. + <_> + 19 3 1 2 2. + <_> + + <_> + 15 2 4 8 -1. + <_> + 16 3 2 8 2. + 1 + <_> + + <_> + 17 3 3 14 -1. + <_> + 17 3 3 7 2. + 1 + <_> + + <_> + 8 7 4 3 -1. + <_> + 9 7 2 3 2. + <_> + + <_> + 8 9 4 3 -1. + <_> + 7 10 4 1 3. + 1 + <_> + + <_> + 10 13 3 3 -1. + <_> + 11 14 1 3 3. + 1 + <_> + + <_> + 7 15 7 4 -1. + <_> + 7 16 7 2 2. + <_> + + <_> + 6 0 10 4 -1. + <_> + 6 1 10 2 2. + <_> + + <_> + 15 14 3 1 -1. + <_> + 16 15 1 1 3. + 1 + <_> + + <_> + 4 10 3 2 -1. + <_> + 4 11 3 1 2. + <_> + + <_> + 7 16 2 2 -1. + <_> + 7 16 1 1 2. + <_> + 8 17 1 1 2. + <_> + + <_> + 0 18 1 2 -1. + <_> + 0 19 1 1 2. + <_> + + <_> + 11 12 2 4 -1. + <_> + 11 12 1 2 2. + <_> + 12 14 1 2 2. + <_> + + <_> + 10 8 3 8 -1. + <_> + 11 9 1 8 3. + 1 + <_> + + <_> + 5 9 4 3 -1. + <_> + 6 9 2 3 2. + <_> + + <_> + 11 11 3 2 -1. + <_> + 11 12 3 1 2. + <_> + + <_> + 6 17 14 2 -1. + <_> + 6 17 7 1 2. + <_> + 13 18 7 1 2. + <_> + + <_> + 2 18 8 2 -1. + <_> + 2 18 4 1 2. + <_> + 6 19 4 1 2. + <_> + + <_> + 15 16 2 2 -1. + <_> + 15 16 1 1 2. + <_> + 16 17 1 1 2. + <_> + + <_> + 15 16 2 2 -1. + <_> + 15 16 1 1 2. + <_> + 16 17 1 1 2. + <_> + + <_> + 16 15 2 2 -1. + <_> + 16 15 1 1 2. + <_> + 17 16 1 1 2. + <_> + + <_> + 14 14 4 2 -1. + <_> + 15 14 2 2 2. + <_> + + <_> + 16 16 2 2 -1. + <_> + 16 16 1 1 2. + <_> + 17 17 1 1 2. + <_> + + <_> + 19 15 1 3 -1. + <_> + 18 16 1 1 3. + 1 + <_> + + <_> + 16 8 4 6 -1. + <_> + 16 8 2 3 2. + <_> + 18 11 2 3 2. + <_> + + <_> + 6 17 2 2 -1. + <_> + 6 17 1 1 2. + <_> + 7 18 1 1 2. + <_> + + <_> + 3 7 6 3 -1. + <_> + 5 9 2 3 3. + 1 + <_> + + <_> + 3 0 3 18 -1. + <_> + 4 0 1 18 3. + <_> + + <_> + 8 4 10 4 -1. + <_> + 7 5 10 2 2. + 1 + <_> + + <_> + 3 9 4 6 -1. + <_> + 3 9 2 3 2. + <_> + 5 12 2 3 2. + <_> + + <_> + 10 1 8 7 -1. + <_> + 12 3 4 7 2. + 1 + <_> + + <_> + 14 8 3 1 -1. + <_> + 15 9 1 1 3. + 1 + <_> + + <_> + 16 3 3 12 -1. + <_> + 17 7 1 4 9. + <_> + + <_> + 5 12 3 3 -1. + <_> + 6 13 1 3 3. + 1 + <_> + + <_> + 0 1 17 6 -1. + <_> + 0 3 17 2 3. + <_> + + <_> + 0 18 18 2 -1. + <_> + 6 18 6 2 3. + <_> + + <_> + 2 15 3 2 -1. + <_> + 2 15 3 1 2. + 1 + <_> + + <_> + 18 1 2 6 -1. + <_> + 19 1 1 6 2. + <_> + + <_> + 11 7 8 4 -1. + <_> + 11 7 8 2 2. + 1 + <_> + + <_> + 6 10 3 3 -1. + <_> + 7 11 1 1 9. + <_> + + <_> + 5 5 3 8 -1. + <_> + 6 5 1 8 3. + <_> + + <_> + 2 8 10 2 -1. + <_> + 2 8 5 2 2. + 1 + <_> + + <_> + 2 9 6 5 -1. + <_> + 4 9 2 5 3. + <_> + + <_> + 8 7 5 3 -1. + <_> + 7 8 5 1 3. + 1 + <_> + + <_> + 2 8 3 10 -1. + <_> + 3 8 1 10 3. + <_> + + <_> + 4 2 15 9 -1. + <_> + 4 5 15 3 3. + <_> + + <_> + 9 7 9 3 -1. + <_> + 8 8 9 1 3. + 1 + <_> + + <_> + 2 12 4 3 -1. + <_> + 2 13 4 1 3. + <_> + + <_> + 5 12 6 1 -1. + <_> + 5 12 3 1 2. + 1 + <_> + + <_> + 9 9 3 3 -1. + <_> + 10 10 1 1 9. + <_> + + <_> + 1 18 1 2 -1. + <_> + 1 19 1 1 2. + <_> + + <_> + 0 18 2 2 -1. + <_> + 0 18 1 1 2. + <_> + 1 19 1 1 2. + <_> + + <_> + 6 6 8 3 -1. + <_> + 8 6 4 3 2. + <_> + + <_> + 9 7 9 6 -1. + <_> + 12 7 3 6 3. + <_> + + <_> + 5 16 1 4 -1. + <_> + 5 17 1 2 2. + <_> + + <_> + 9 9 4 1 -1. + <_> + 10 9 2 1 2. + <_> + + <_> + 14 1 4 4 -1. + <_> + 15 1 2 4 2. + <_> + + <_> + 0 0 6 3 -1. + <_> + 3 0 3 3 2. + <_> + + <_> + 0 0 4 3 -1. + <_> + 2 0 2 3 2. + <_> + + <_> + 0 12 8 2 -1. + <_> + 2 12 4 2 2. + <_> + + <_> + 5 10 2 1 -1. + <_> + 6 10 1 1 2. + <_> + + <_> + 11 6 9 3 -1. + <_> + 10 7 9 1 3. + 1 + <_> + + <_> + 15 16 2 2 -1. + <_> + 15 16 1 1 2. + <_> + 16 17 1 1 2. + <_> + + <_> + 16 14 3 3 -1. + <_> + 15 15 3 1 3. + 1 + <_> + + <_> + 11 4 1 3 -1. + <_> + 11 5 1 1 3. + <_> + + <_> + 0 6 12 9 -1. + <_> + 0 9 12 3 3. + <_> + + <_> + 1 9 18 10 -1. + <_> + 10 9 9 10 2. + <_> + + <_> + 12 3 5 10 -1. + <_> + 12 8 5 5 2. + <_> + + <_> + 1 6 12 14 -1. + <_> + 1 13 12 7 2. + <_> + + <_> + 13 5 2 1 -1. + <_> + 13 5 1 1 2. + 1 + <_> + + <_> + 0 0 16 3 -1. + <_> + 0 1 16 1 3. + <_> + + <_> + 1 11 2 1 -1. + <_> + 1 11 1 1 2. + 1 + <_> + + <_> + 14 5 6 5 -1. + <_> + 16 5 2 5 3. + <_> + + <_> + 16 8 3 4 -1. + <_> + 16 10 3 2 2. + <_> + + <_> + 18 9 2 4 -1. + <_> + 17 10 2 2 2. + 1 + <_> + + <_> + 18 18 1 2 -1. + <_> + 18 19 1 1 2. + <_> + + <_> + 5 5 2 1 -1. + <_> + 6 5 1 1 2. + <_> + + <_> + 7 2 12 2 -1. + <_> + 7 2 6 1 2. + <_> + 13 3 6 1 2. + <_> + + <_> + 6 0 12 6 -1. + <_> + 9 0 6 6 2. + <_> + + <_> + 4 0 3 3 -1. + <_> + 3 1 3 1 3. + 1 + <_> + + <_> + 12 19 4 1 -1. + <_> + 14 19 2 1 2. + <_> + + <_> + 12 11 1 2 -1. + <_> + 12 12 1 1 2. + <_> + + <_> + 0 0 20 2 -1. + <_> + 5 0 10 2 2. + <_> + + <_> + 13 0 4 2 -1. + <_> + 15 0 2 2 2. + <_> + + <_> + 17 1 3 12 -1. + <_> + 18 5 1 4 9. + <_> + + <_> + 0 0 10 2 -1. + <_> + 5 0 5 2 2. + <_> + + <_> + 4 15 12 2 -1. + <_> + 10 15 6 2 2. + <_> + + <_> + 10 1 3 2 -1. + <_> + 10 2 3 1 2. + <_> + + <_> + 5 2 15 6 -1. + <_> + 10 4 5 2 9. + <_> + + <_> + 7 6 3 5 -1. + <_> + 8 6 1 5 3. + <_> + + <_> + 15 2 3 3 -1. + <_> + 16 3 1 3 3. + 1 + <_> + + <_> + 6 2 9 6 -1. + <_> + 4 4 9 2 3. + 1 + <_> + + <_> + 15 9 2 1 -1. + <_> + 15 9 1 1 2. + 1 + <_> + + <_> + 3 8 4 6 -1. + <_> + 3 8 2 3 2. + <_> + 5 11 2 3 2. + <_> + + <_> + 2 7 16 10 -1. + <_> + 2 12 16 5 2. + <_> + + <_> + 7 3 9 16 -1. + <_> + 10 3 3 16 3. + <_> + + <_> + 15 9 1 6 -1. + <_> + 13 11 1 2 3. + 1 + <_> + + <_> + 2 11 2 2 -1. + <_> + 2 11 2 1 2. + 1 + <_> + + <_> + 9 4 4 3 -1. + <_> + 10 5 2 3 2. + 1 + <_> + + <_> + 13 13 4 4 -1. + <_> + 13 15 4 2 2. + <_> + + <_> + 3 1 4 3 -1. + <_> + 4 2 2 3 2. + 1 + <_> + + <_> + 0 7 3 5 -1. + <_> + 1 7 1 5 3. + <_> + + <_> + 3 0 3 6 -1. + <_> + 3 2 3 2 3. + <_> + + <_> + 4 9 15 4 -1. + <_> + 4 10 15 2 2. + <_> + + <_> + 3 0 12 20 -1. + <_> + 3 10 12 10 2. + <_> + + <_> + 0 18 2 2 -1. + <_> + 1 18 1 2 2. + <_> + + <_> + 16 0 3 8 -1. + <_> + 17 0 1 8 3. + <_> + + <_> + 16 3 3 4 -1. + <_> + 17 3 1 4 3. + <_> + + <_> + 0 0 2 6 -1. + <_> + 0 0 1 3 2. + <_> + 1 3 1 3 2. + <_> + + <_> + 16 10 4 5 -1. + <_> + 17 11 2 5 2. + 1 + <_> + + <_> + 8 14 12 3 -1. + <_> + 12 15 4 1 9. + <_> + + <_> + 5 13 12 4 -1. + <_> + 8 13 6 4 2. + <_> + + <_> + 3 9 4 3 -1. + <_> + 4 9 2 3 2. + <_> + + <_> + 0 14 3 3 -1. + <_> + 0 15 3 1 3. + <_> + + <_> + 14 3 1 14 -1. + <_> + 14 3 1 7 2. + 1 + <_> + + <_> + 9 0 3 1 -1. + <_> + 10 0 1 1 3. + <_> + + <_> + 8 9 8 1 -1. + <_> + 10 9 4 1 2. + <_> + + <_> + 16 8 3 2 -1. + <_> + 17 9 1 2 3. + 1 + <_> + + <_> + 14 7 6 4 -1. + <_> + 14 8 6 2 2. + <_> + + <_> + 0 14 1 3 -1. + <_> + 0 15 1 1 3. + <_> + + <_> + 18 8 1 3 -1. + <_> + 18 9 1 1 3. + <_> + + <_> + 16 7 2 2 -1. + <_> + 16 7 1 1 2. + <_> + 17 8 1 1 2. + <_> + + <_> + 15 0 3 17 -1. + <_> + 16 0 1 17 3. + <_> + + <_> + 11 15 6 4 -1. + <_> + 13 15 2 4 3. + <_> + + <_> + 12 10 6 1 -1. + <_> + 14 10 2 1 3. + <_> + + <_> + 9 7 1 4 -1. + <_> + 9 7 1 2 2. + 1 + <_> + + <_> + 9 10 1 10 -1. + <_> + 9 15 1 5 2. + <_> + + <_> + 4 6 16 14 -1. + <_> + 8 6 8 14 2. + <_> + + <_> + 1 6 6 11 -1. + <_> + 3 6 2 11 3. + <_> + + <_> + 5 6 3 6 -1. + <_> + 5 9 3 3 2. + <_> + + <_> + 14 0 4 9 -1. + <_> + 15 0 2 9 2. + <_> + + <_> + 9 13 3 6 -1. + <_> + 10 13 1 6 3. + <_> + + <_> + 11 3 6 7 -1. + <_> + 13 5 2 7 3. + 1 + <_> + + <_> + 18 12 1 2 -1. + <_> + 18 13 1 1 2. + <_> + + <_> + 17 0 2 1 -1. + <_> + 18 0 1 1 2. + <_> + + <_> + 1 2 15 3 -1. + <_> + 1 3 15 1 3. + <_> + + <_> + 3 1 3 5 -1. + <_> + 4 1 1 5 3. + <_> + + <_> + 4 3 6 3 -1. + <_> + 6 3 2 3 3. + <_> + + <_> + 7 1 6 5 -1. + <_> + 9 1 2 5 3. + <_> + + <_> + 13 7 2 5 -1. + <_> + 14 7 1 5 2. + <_> + + <_> + 8 10 2 2 -1. + <_> + 8 10 2 1 2. + 1 + <_> + + <_> + 2 10 12 4 -1. + <_> + 2 12 12 2 2. + <_> + + <_> + 3 5 3 3 -1. + <_> + 2 6 3 1 3. + 1 + <_> + + <_> + 11 6 6 6 -1. + <_> + 9 8 6 2 3. + 1 + <_> + + <_> + 4 5 9 12 -1. + <_> + 7 9 3 4 9. + <_> + + <_> + 12 6 1 3 -1. + <_> + 11 7 1 1 3. + 1 + <_> + + <_> + 11 1 5 9 -1. + <_> + 11 4 5 3 3. + <_> + + <_> + 10 7 4 1 -1. + <_> + 11 7 2 1 2. + <_> + + <_> + 0 0 10 6 -1. + <_> + 0 0 5 3 2. + <_> + 5 3 5 3 2. + <_> + + <_> + 2 0 3 6 -1. + <_> + 2 2 3 2 3. + <_> + + <_> + 6 6 4 3 -1. + <_> + 7 6 2 3 2. + <_> + + <_> + 5 0 2 3 -1. + <_> + 4 1 2 1 3. + 1 + <_> + + <_> + 13 15 2 3 -1. + <_> + 12 16 2 1 3. + 1 + <_> + + <_> + 10 2 8 4 -1. + <_> + 12 2 4 4 2. + <_> + + <_> + 6 8 2 6 -1. + <_> + 4 10 2 2 3. + 1 + <_> + + <_> + 18 0 2 4 -1. + <_> + 17 1 2 2 2. + 1 + <_> + + <_> + 6 0 12 2 -1. + <_> + 10 0 4 2 3. + <_> + + <_> + 2 0 18 2 -1. + <_> + 2 0 9 1 2. + <_> + 11 1 9 1 2. + <_> + + <_> + 17 8 3 2 -1. + <_> + 18 9 1 2 3. + 1 + <_> + + <_> + 5 2 3 3 -1. + <_> + 4 3 3 1 3. + 1 + <_> + + <_> + 18 0 2 20 -1. + <_> + 19 0 1 20 2. + <_> + + <_> + 16 11 4 5 -1. + <_> + 17 12 2 5 2. + 1 + <_> + + <_> + 7 0 6 1 -1. + <_> + 10 0 3 1 2. + <_> + + <_> + 15 11 3 2 -1. + <_> + 16 12 1 2 3. + 1 + <_> + + <_> + 13 11 7 2 -1. + <_> + 13 11 7 1 2. + 1 + <_> + + <_> + 0 1 2 17 -1. + <_> + 1 1 1 17 2. + <_> + + <_> + 4 4 2 3 -1. + <_> + 3 5 2 1 3. + 1 + <_> + + <_> + 18 5 1 8 -1. + <_> + 18 9 1 4 2. + <_> + + <_> + 13 7 2 1 -1. + <_> + 13 7 1 1 2. + 1 + <_> + + <_> + 7 4 12 2 -1. + <_> + 7 4 6 1 2. + <_> + 13 5 6 1 2. + <_> + + <_> + 6 18 6 2 -1. + <_> + 9 18 3 2 2. + <_> + + <_> + 0 1 20 4 -1. + <_> + 5 1 10 4 2. + <_> + + <_> + 14 10 2 1 -1. + <_> + 15 10 1 1 2. + <_> + + <_> + 5 4 10 10 -1. + <_> + 10 4 5 10 2. + <_> + + <_> + 3 2 1 3 -1. + <_> + 2 3 1 1 3. + 1 + <_> + + <_> + 3 13 4 3 -1. + <_> + 3 13 2 3 2. + 1 + <_> + + <_> + 16 19 4 1 -1. + <_> + 18 19 2 1 2. + <_> + + <_> + 3 14 4 2 -1. + <_> + 4 14 2 2 2. + <_> + + <_> + 8 7 6 3 -1. + <_> + 10 9 2 3 3. + 1 + <_> + + <_> + 12 2 8 6 -1. + <_> + 12 4 8 2 3. + <_> + + <_> + 0 0 6 1 -1. + <_> + 3 0 3 1 2. + <_> + + <_> + 18 18 2 2 -1. + <_> + 18 18 1 1 2. + <_> + 19 19 1 1 2. + <_> + + <_> + 17 17 2 3 -1. + <_> + 17 18 2 1 3. + <_> + + <_> + 18 16 1 2 -1. + <_> + 18 17 1 1 2. + <_> + + <_> + 15 9 2 4 -1. + <_> + 15 9 1 2 2. + <_> + 16 11 1 2 2. + <_> + + <_> + 4 10 16 4 -1. + <_> + 4 11 16 2 2. + <_> + + <_> + 16 5 3 3 -1. + <_> + 15 6 3 1 3. + 1 + <_> + + <_> + 16 12 4 4 -1. + <_> + 17 13 2 4 2. + 1 + <_> + + <_> + 18 3 2 15 -1. + <_> + 18 8 2 5 3. + <_> + + <_> + 13 4 1 12 -1. + <_> + 13 4 1 6 2. + 1 + <_> + + <_> + 17 16 2 2 -1. + <_> + 17 16 1 1 2. + <_> + 18 17 1 1 2. + <_> + + <_> + 0 0 2 2 -1. + <_> + 0 1 2 1 2. + <_> + + <_> + 5 4 1 2 -1. + <_> + 5 5 1 1 2. + <_> + + <_> + 2 2 3 18 -1. + <_> + 3 2 1 18 3. + <_> + + <_> + 7 9 2 3 -1. + <_> + 6 10 2 1 3. + 1 + <_> + + <_> + 8 2 7 4 -1. + <_> + 8 3 7 2 2. + <_> + + <_> + 16 0 4 1 -1. + <_> + 16 0 2 1 2. + 1 + <_> + + <_> + 0 17 20 2 -1. + <_> + 5 17 10 2 2. + <_> + + <_> + 1 18 6 1 -1. + <_> + 4 18 3 1 2. + <_> + + <_> + 5 18 6 2 -1. + <_> + 8 18 3 2 2. + <_> + + <_> + 9 8 3 2 -1. + <_> + 10 8 1 2 3. + <_> + + <_> + 11 1 3 1 -1. + <_> + 12 1 1 1 3. + <_> + + <_> + 0 18 20 2 -1. + <_> + 0 18 10 1 2. + <_> + 10 19 10 1 2. + <_> + + <_> + 15 9 1 2 -1. + <_> + 15 10 1 1 2. + <_> + + <_> + 17 1 2 1 -1. + <_> + 18 1 1 1 2. + <_> + + <_> + 15 0 4 1 -1. + <_> + 17 0 2 1 2. + <_> + + <_> + 19 0 1 2 -1. + <_> + 19 1 1 1 2. + <_> + + <_> + 2 18 18 2 -1. + <_> + 2 18 9 1 2. + <_> + 11 19 9 1 2. + <_> + + <_> + 15 16 2 2 -1. + <_> + 15 16 1 1 2. + <_> + 16 17 1 1 2. + <_> + + <_> + 16 15 1 3 -1. + <_> + 15 16 1 1 3. + 1 + <_> + + <_> + 2 9 1 2 -1. + <_> + 2 9 1 1 2. + 1 + <_> + + <_> + 6 4 4 3 -1. + <_> + 7 5 2 3 2. + 1 + <_> + + <_> + 3 5 12 12 -1. + <_> + 7 9 4 4 9. + <_> + + <_> + 7 12 3 4 -1. + <_> + 8 12 1 4 3. + <_> + + <_> + 17 4 3 3 -1. + <_> + 18 5 1 3 3. + 1 + <_> + + <_> + 17 16 2 1 -1. + <_> + 17 16 1 1 2. + 1 + <_> + + <_> + 7 6 1 2 -1. + <_> + 7 6 1 1 2. + 1 + <_> + + <_> + 1 0 12 1 -1. + <_> + 7 0 6 1 2. + <_> + + <_> + 0 7 18 8 -1. + <_> + 6 7 6 8 3. + <_> + + <_> + 13 14 4 6 -1. + <_> + 14 14 2 6 2. + <_> + + <_> + 6 10 3 3 -1. + <_> + 5 11 3 1 3. + 1 + <_> + + <_> + 16 2 4 2 -1. + <_> + 18 2 2 2 2. + <_> + + <_> + 9 13 8 4 -1. + <_> + 13 13 4 4 2. + <_> + + <_> + 12 0 6 20 -1. + <_> + 12 10 6 10 2. + <_> + + <_> + 18 0 2 8 -1. + <_> + 19 0 1 8 2. + <_> + + <_> + 18 5 2 14 -1. + <_> + 18 12 2 7 2. + <_> + + <_> + 16 7 2 2 -1. + <_> + 16 7 1 1 2. + <_> + 17 8 1 1 2. + <_> + + <_> + 9 13 8 4 -1. + <_> + 9 15 8 2 2. + <_> + + <_> + 0 10 14 10 -1. + <_> + 0 15 14 5 2. + <_> + + <_> + 1 8 14 4 -1. + <_> + 1 9 14 2 2. + <_> + + <_> + 2 8 11 4 -1. + <_> + 2 9 11 2 2. + <_> + + <_> + 4 0 6 2 -1. + <_> + 4 0 3 1 2. + <_> + 7 1 3 1 2. + <_> + + <_> + 8 16 4 2 -1. + <_> + 9 16 2 2 2. + <_> + + <_> + 7 4 4 12 -1. + <_> + 7 8 4 4 3. + <_> + + <_> + 17 10 2 6 -1. + <_> + 17 10 1 6 2. + 1 + <_> + + <_> + 7 0 4 3 -1. + <_> + 8 0 2 3 2. + <_> + + <_> + 16 7 4 1 -1. + <_> + 17 7 2 1 2. + <_> + + <_> + 17 3 2 8 -1. + <_> + 17 3 1 4 2. + <_> + 18 7 1 4 2. + <_> + + <_> + 9 8 10 8 -1. + <_> + 9 8 5 4 2. + <_> + 14 12 5 4 2. + <_> + + <_> + 9 14 3 1 -1. + <_> + 10 14 1 1 3. + <_> + + <_> + 9 0 6 14 -1. + <_> + 11 0 2 14 3. + <_> + + <_> + 11 11 4 1 -1. + <_> + 12 12 2 1 2. + 1 + <_> + + <_> + 2 14 9 6 -1. + <_> + 5 14 3 6 3. + <_> + + <_> + 14 2 6 1 -1. + <_> + 17 2 3 1 2. + <_> + + <_> + 2 16 9 2 -1. + <_> + 5 16 3 2 3. + <_> + + <_> + 4 5 3 8 -1. + <_> + 4 9 3 4 2. + <_> + + <_> + 1 1 7 4 -1. + <_> + 1 3 7 2 2. + <_> + + <_> + 3 9 6 3 -1. + <_> + 5 9 2 3 3. + <_> + + <_> + 13 9 4 2 -1. + <_> + 14 9 2 2 2. + <_> + + <_> + 7 10 2 2 -1. + <_> + 7 10 1 1 2. + <_> + 8 11 1 1 2. + <_> + + <_> + 13 7 4 7 -1. + <_> + 13 7 2 7 2. + 1 + <_> + + <_> + 19 6 1 4 -1. + <_> + 18 7 1 2 2. + 1 + <_> + + <_> + 1 14 4 2 -1. + <_> + 3 14 2 2 2. + <_> + + <_> + 0 2 16 16 -1. + <_> + 0 6 16 8 2. + <_> + + <_> + 1 1 6 1 -1. + <_> + 4 1 3 1 2. + <_> + + <_> + 6 9 2 3 -1. + <_> + 7 9 1 3 2. + <_> + + <_> + 16 5 4 9 -1. + <_> + 17 5 2 9 2. + <_> + + <_> + 7 12 3 5 -1. + <_> + 8 13 1 5 3. + 1 + <_> + + <_> + 5 6 3 4 -1. + <_> + 6 7 1 4 3. + 1 + <_> + + <_> + 16 1 4 1 -1. + <_> + 18 1 2 1 2. + <_> + + <_> + 8 0 12 16 -1. + <_> + 8 0 6 8 2. + <_> + 14 8 6 8 2. + <_> + + <_> + 4 5 13 2 -1. + <_> + 4 5 13 1 2. + 1 + <_> + + <_> + 17 17 1 2 -1. + <_> + 17 17 1 1 2. + 1 + <_> + + <_> + 17 18 3 2 -1. + <_> + 17 19 3 1 2. + <_> + + <_> + 16 10 3 3 -1. + <_> + 17 10 1 3 3. + <_> + + <_> + 11 4 3 2 -1. + <_> + 11 5 3 1 2. + <_> + + <_> + 8 2 8 4 -1. + <_> + 8 3 8 2 2. + <_> + + <_> + 14 3 5 9 -1. + <_> + 14 6 5 3 3. + <_> + + <_> + 0 18 9 2 -1. + <_> + 0 19 9 1 2. + <_> + + <_> + 17 3 3 1 -1. + <_> + 18 4 1 1 3. + 1 + <_> + + <_> + 13 12 5 3 -1. + <_> + 12 13 5 1 3. + 1 + <_> + + <_> + 10 13 4 2 -1. + <_> + 10 14 4 1 2. + <_> + + <_> + 8 8 3 3 -1. + <_> + 7 9 3 1 3. + 1 + <_> + + <_> + 16 3 3 3 -1. + <_> + 15 4 3 1 3. + 1 + <_> + + <_> + 15 18 4 1 -1. + <_> + 17 18 2 1 2. + <_> + + <_> + 5 0 2 3 -1. + <_> + 5 0 1 3 2. + 1 + <_> + + <_> + 11 10 3 2 -1. + <_> + 12 10 1 2 3. + <_> + + <_> + 0 2 2 18 -1. + <_> + 0 2 1 9 2. + <_> + 1 11 1 9 2. + <_> + + <_> + 1 8 8 7 -1. + <_> + 3 8 4 7 2. + <_> + + <_> + 12 18 4 2 -1. + <_> + 12 18 2 1 2. + <_> + 14 19 2 1 2. + <_> + + <_> + 3 4 16 12 -1. + <_> + 7 4 8 12 2. + <_> + + <_> + 5 8 6 1 -1. + <_> + 7 8 2 1 3. + <_> + + <_> + 7 4 12 8 -1. + <_> + 11 4 4 8 3. + <_> + + <_> + 8 16 2 2 -1. + <_> + 8 16 1 1 2. + <_> + 9 17 1 1 2. + <_> + + <_> + 3 4 3 3 -1. + <_> + 2 5 3 1 3. + 1 + <_> + + <_> + 8 5 3 6 -1. + <_> + 9 7 1 2 9. + <_> + + <_> + 2 5 18 2 -1. + <_> + 8 5 6 2 3. + <_> + + <_> + 14 8 1 2 -1. + <_> + 14 9 1 1 2. + <_> + + <_> + 5 1 4 1 -1. + <_> + 6 1 2 1 2. + <_> + + <_> + 1 9 17 3 -1. + <_> + 1 10 17 1 3. + <_> + + <_> + 1 17 9 3 -1. + <_> + 1 18 9 1 3. + <_> + + <_> + 4 16 6 2 -1. + <_> + 4 17 6 1 2. + <_> + + <_> + 3 8 2 2 -1. + <_> + 3 8 1 1 2. + <_> + 4 9 1 1 2. + <_> + + <_> + 17 8 3 3 -1. + <_> + 16 9 3 1 3. + 1 + <_> + + <_> + 7 3 4 2 -1. + <_> + 8 3 2 2 2. + <_> + + <_> + 4 9 2 1 -1. + <_> + 4 9 1 1 2. + 1 + <_> + + <_> + 0 4 2 4 -1. + <_> + 1 4 1 4 2. + <_> + + <_> + 6 3 1 12 -1. + <_> + 6 9 1 6 2. + <_> + + <_> + 0 7 4 2 -1. + <_> + 0 8 4 1 2. + <_> + + <_> + 2 0 5 16 -1. + <_> + 2 8 5 8 2. + <_> + + <_> + 11 0 3 6 -1. + <_> + 9 2 3 2 3. + 1 + <_> + + <_> + 5 16 12 1 -1. + <_> + 8 16 6 1 2. + <_> + + <_> + 9 8 3 2 -1. + <_> + 10 8 1 2 3. + <_> + + <_> + 14 8 3 6 -1. + <_> + 15 9 1 6 3. + 1 + <_> + + <_> + 13 8 4 7 -1. + <_> + 14 9 2 7 2. + 1 + <_> + + <_> + 16 7 3 4 -1. + <_> + 15 8 3 2 2. + 1 + <_> + + <_> + 13 1 1 16 -1. + <_> + 13 9 1 8 2. + <_> + + <_> + 7 17 8 1 -1. + <_> + 9 17 4 1 2. + <_> + + <_> + 9 10 3 5 -1. + <_> + 10 11 1 5 3. + 1 + <_> + + <_> + 4 11 6 3 -1. + <_> + 6 13 2 3 3. + 1 + <_> + + <_> + 3 16 1 2 -1. + <_> + 3 16 1 1 2. + 1 + <_> + + <_> + 5 13 3 4 -1. + <_> + 4 14 3 2 2. + 1 + <_> + + <_> + 7 5 8 8 -1. + <_> + 9 5 4 8 2. + <_> + + <_> + 17 5 2 4 -1. + <_> + 17 5 1 4 2. + 1 + <_> + + <_> + 0 14 3 4 -1. + <_> + 0 15 3 2 2. + <_> + + <_> + 16 16 2 2 -1. + <_> + 16 16 1 1 2. + <_> + 17 17 1 1 2. + <_> + + <_> + 6 16 6 4 -1. + <_> + 8 16 2 4 3. + <_> + + <_> + 15 16 2 2 -1. + <_> + 15 16 1 1 2. + <_> + 16 17 1 1 2. + <_> + + <_> + 9 17 2 1 -1. + <_> + 10 17 1 1 2. + <_> + + <_> + 14 5 5 8 -1. + <_> + 14 7 5 4 2. + <_> + + <_> + 16 7 2 2 -1. + <_> + 16 8 2 1 2. + <_> + + <_> + 9 11 2 7 -1. + <_> + 10 11 1 7 2. + <_> + + <_> + 2 5 1 2 -1. + <_> + 2 5 1 1 2. + 1 + <_> + + <_> + 4 6 11 3 -1. + <_> + 4 7 11 1 3. + <_> + + <_> + 5 4 8 3 -1. + <_> + 5 5 8 1 3. + <_> + + <_> + 0 8 20 3 -1. + <_> + 0 9 20 1 3. + <_> + + <_> + 15 8 3 3 -1. + <_> + 15 9 3 1 3. + <_> + + <_> + 17 9 3 1 -1. + <_> + 18 9 1 1 3. + <_> + + <_> + 15 6 5 3 -1. + <_> + 15 7 5 1 3. + <_> + + <_> + 9 15 8 2 -1. + <_> + 9 15 4 1 2. + <_> + 13 16 4 1 2. + <_> + + <_> + 0 3 1 4 -1. + <_> + 0 4 1 2 2. + <_> + + <_> + 9 3 5 2 -1. + <_> + 9 4 5 1 2. + <_> + + <_> + 15 3 2 2 -1. + <_> + 15 3 1 1 2. + <_> + 16 4 1 1 2. + <_> + + <_> + 12 0 4 12 -1. + <_> + 12 0 2 12 2. + 1 + <_> + + <_> + 10 6 8 2 -1. + <_> + 10 7 8 1 2. + <_> + + <_> + 15 3 2 13 -1. + <_> + 16 3 1 13 2. + <_> + + <_> + 11 11 5 2 -1. + <_> + 11 11 5 1 2. + 1 + <_> + + <_> + 0 0 6 2 -1. + <_> + 3 0 3 2 2. + <_> + + <_> + 4 0 1 3 -1. + <_> + 3 1 1 1 3. + 1 + <_> + + <_> + 1 0 2 1 -1. + <_> + 2 0 1 1 2. + <_> + + <_> + 3 0 16 5 -1. + <_> + 7 0 8 5 2. + <_> + + <_> + 18 10 1 2 -1. + <_> + 18 10 1 1 2. + 1 + <_> + + <_> + 4 6 2 4 -1. + <_> + 4 7 2 2 2. + <_> + + <_> + 13 5 2 1 -1. + <_> + 13 5 1 1 2. + 1 + <_> + + <_> + 0 5 8 2 -1. + <_> + 0 5 4 1 2. + <_> + 4 6 4 1 2. + <_> + + <_> + 7 7 10 13 -1. + <_> + 12 7 5 13 2. + <_> + + <_> + 17 3 3 2 -1. + <_> + 18 4 1 2 3. + 1 + <_> + + <_> + 2 0 9 2 -1. + <_> + 2 1 9 1 2. + <_> + + <_> + 4 8 12 6 -1. + <_> + 4 10 12 2 3. + <_> + + <_> + 13 8 3 2 -1. + <_> + 14 9 1 2 3. + 1 + <_> + + <_> + 10 9 3 8 -1. + <_> + 11 9 1 8 3. + <_> + + <_> + 13 13 4 6 -1. + <_> + 14 13 2 6 2. + <_> + + <_> + 7 0 6 1 -1. + <_> + 9 0 2 1 3. + <_> + + <_> + 11 1 4 2 -1. + <_> + 11 2 4 1 2. + <_> + + <_> + 13 0 6 3 -1. + <_> + 13 1 6 1 3. + <_> + + <_> + 7 18 2 1 -1. + <_> + 8 18 1 1 2. + <_> + + <_> + 6 15 6 4 -1. + <_> + 6 16 6 2 2. + <_> + + <_> + 13 15 2 3 -1. + <_> + 12 16 2 1 3. + 1 + <_> + + <_> + 0 18 20 2 -1. + <_> + 0 18 10 1 2. + <_> + 10 19 10 1 2. + <_> + + <_> + 2 18 18 2 -1. + <_> + 2 18 9 1 2. + <_> + 11 19 9 1 2. + <_> + + <_> + 4 0 3 17 -1. + <_> + 5 0 1 17 3. + <_> + + <_> + 4 9 4 4 -1. + <_> + 4 9 2 2 2. + <_> + 6 11 2 2 2. + <_> + + <_> + 6 10 2 4 -1. + <_> + 5 11 2 2 2. + 1 + <_> + + <_> + 12 2 2 12 -1. + <_> + 12 2 1 12 2. + 1 + <_> + + <_> + 15 16 2 2 -1. + <_> + 15 16 1 1 2. + <_> + 16 17 1 1 2. + <_> + + <_> + 1 9 2 4 -1. + <_> + 1 9 1 2 2. + <_> + 2 11 1 2 2. + <_> + + <_> + 15 17 2 1 -1. + <_> + 16 17 1 1 2. + <_> + + <_> + 14 6 3 4 -1. + <_> + 15 7 1 4 3. + 1 + <_> + + <_> + 16 16 2 2 -1. + <_> + 16 16 1 1 2. + <_> + 17 17 1 1 2. + <_> + + <_> + 15 14 2 1 -1. + <_> + 16 14 1 1 2. + <_> + + <_> + 2 3 18 10 -1. + <_> + 2 3 9 5 2. + <_> + 11 8 9 5 2. + <_> + + <_> + 15 17 2 2 -1. + <_> + 15 17 1 1 2. + <_> + 16 18 1 1 2. + <_> + + <_> + 6 1 3 10 -1. + <_> + 7 1 1 10 3. + <_> + + <_> + 3 9 6 2 -1. + <_> + 5 9 2 2 3. + <_> + + <_> + 15 10 4 2 -1. + <_> + 15 10 2 1 2. + <_> + 17 11 2 1 2. + <_> + + <_> + 0 11 1 4 -1. + <_> + 0 13 1 2 2. + <_> + + <_> + 7 7 9 13 -1. + <_> + 10 7 3 13 3. + <_> + + <_> + 8 5 11 6 -1. + <_> + 8 7 11 2 3. + <_> + + <_> + 7 15 3 3 -1. + <_> + 8 15 1 3 3. + <_> + + <_> + 0 9 2 11 -1. + <_> + 1 9 1 11 2. + <_> + + <_> + 4 8 4 2 -1. + <_> + 5 8 2 2 2. + <_> + + <_> + 9 6 4 1 -1. + <_> + 10 7 2 1 2. + 1 + <_> + + <_> + 5 1 5 4 -1. + <_> + 5 2 5 2 2. + <_> + + <_> + 15 10 4 3 -1. + <_> + 16 10 2 3 2. + <_> + + <_> + 0 1 16 3 -1. + <_> + 0 2 16 1 3. + <_> + + <_> + 8 9 4 3 -1. + <_> + 9 10 2 3 2. + 1 + <_> + + <_> + 18 17 2 3 -1. + <_> + 18 18 2 1 3. + <_> + + <_> + 5 13 4 6 -1. + <_> + 5 13 2 3 2. + <_> + 7 16 2 3 2. + <_> + + <_> + 0 0 3 17 -1. + <_> + 1 0 1 17 3. + <_> + + <_> + 10 7 3 3 -1. + <_> + 9 8 3 1 3. + 1 + <_> + + <_> + 9 7 3 3 -1. + <_> + 10 8 1 3 3. + 1 + <_> + + <_> + 7 5 5 6 -1. + <_> + 7 8 5 3 2. + <_> + + <_> + 12 4 2 9 -1. + <_> + 12 7 2 3 3. + <_> + + <_> + 14 0 3 2 -1. + <_> + 15 0 1 2 3. + <_> + + <_> + 11 8 3 3 -1. + <_> + 12 9 1 1 9. + <_> + + <_> + 4 16 2 3 -1. + <_> + 4 17 2 1 3. + <_> + + <_> + 6 10 14 3 -1. + <_> + 6 11 14 1 3. + <_> + + <_> + 0 10 14 4 -1. + <_> + 0 11 14 2 2. + <_> + + <_> + 12 7 3 4 -1. + <_> + 13 7 1 4 3. + <_> + + <_> + 3 2 3 3 -1. + <_> + 4 2 1 3 3. + <_> + + <_> + 17 17 2 2 -1. + <_> + 17 17 1 1 2. + <_> + 18 18 1 1 2. + <_> + + <_> + 18 16 2 2 -1. + <_> + 18 16 1 1 2. + <_> + 19 17 1 1 2. + <_> + + <_> + 17 16 1 3 -1. + <_> + 17 17 1 1 3. + <_> + + <_> + 6 8 2 1 -1. + <_> + 6 8 1 1 2. + 1 + <_> + + <_> + 8 7 3 1 -1. + <_> + 9 8 1 1 3. + 1 + <_> + + <_> + 9 6 3 1 -1. + <_> + 10 7 1 1 3. + 1 + <_> + + <_> + 3 9 3 10 -1. + <_> + 4 9 1 10 3. + <_> + + <_> + 5 15 6 3 -1. + <_> + 7 15 2 3 3. + <_> + + <_> + 0 4 2 12 -1. + <_> + 0 4 1 6 2. + <_> + 1 10 1 6 2. + <_> + + <_> + 4 2 2 10 -1. + <_> + 5 2 1 10 2. + <_> + + <_> + 4 9 2 1 -1. + <_> + 5 9 1 1 2. + <_> + + <_> + 14 7 4 6 -1. + <_> + 15 8 2 6 2. + 1 + <_> + + <_> + 17 5 3 2 -1. + <_> + 18 6 1 2 3. + 1 + <_> + + <_> + 2 10 16 5 -1. + <_> + 10 10 8 5 2. + <_> + + <_> + 7 17 2 2 -1. + <_> + 7 17 1 1 2. + <_> + 8 18 1 1 2. + <_> + + <_> + 4 17 4 1 -1. + <_> + 6 17 2 1 2. + <_> + + <_> + 8 6 3 3 -1. + <_> + 9 6 1 3 3. + <_> + + <_> + 16 10 1 4 -1. + <_> + 16 12 1 2 2. + <_> + + <_> + 17 13 2 3 -1. + <_> + 16 14 2 1 3. + 1 + <_> + + <_> + 3 8 13 10 -1. + <_> + 3 13 13 5 2. + <_> + + <_> + 9 6 9 1 -1. + <_> + 12 9 3 1 3. + 1 + <_> + + <_> + 2 5 15 6 -1. + <_> + 7 7 5 2 9. + <_> + + <_> + 16 0 3 2 -1. + <_> + 17 1 1 2 3. + 1 + <_> + + <_> + 0 17 6 3 -1. + <_> + 0 18 6 1 3. + <_> + + <_> + 11 1 2 2 -1. + <_> + 11 1 1 2 2. + 1 + <_> + + <_> + 12 5 2 2 -1. + <_> + 12 5 1 1 2. + <_> + 13 6 1 1 2. + <_> + + <_> + 8 0 12 2 -1. + <_> + 12 0 4 2 3. + <_> + + <_> + 10 9 3 3 -1. + <_> + 11 10 1 1 9. + <_> + + <_> + 12 18 8 2 -1. + <_> + 12 19 8 1 2. + <_> + + <_> + 8 18 9 2 -1. + <_> + 8 19 9 1 2. + <_> + + <_> + 6 0 9 4 -1. + <_> + 6 1 9 2 2. + <_> + + <_> + 3 8 12 4 -1. + <_> + 3 9 12 2 2. + <_> + + <_> + 13 4 2 9 -1. + <_> + 10 7 2 3 3. + 1 + <_> + + <_> + 5 15 12 4 -1. + <_> + 5 15 6 2 2. + <_> + 11 17 6 2 2. + <_> + + <_> + 6 3 14 10 -1. + <_> + 13 3 7 10 2. + <_> + + <_> + 9 2 6 2 -1. + <_> + 11 2 2 2 3. + <_> + + <_> + 11 16 3 1 -1. + <_> + 12 16 1 1 3. + <_> + + <_> + 15 16 2 4 -1. + <_> + 15 16 1 2 2. + <_> + 16 18 1 2 2. + <_> + + <_> + 3 11 14 4 -1. + <_> + 3 11 7 2 2. + <_> + 10 13 7 2 2. + <_> + + <_> + 1 19 16 1 -1. + <_> + 5 19 8 1 2. + <_> + + <_> + 3 18 2 1 -1. + <_> + 4 18 1 1 2. + <_> + + <_> + 12 7 1 8 -1. + <_> + 10 9 1 4 2. + 1 + <_> + + <_> + 18 3 2 16 -1. + <_> + 18 3 1 8 2. + <_> + 19 11 1 8 2. + <_> + + <_> + 0 9 20 3 -1. + <_> + 5 9 10 3 2. + <_> + + <_> + 7 15 2 3 -1. + <_> + 7 15 1 3 2. + 1 + <_> + + <_> + 7 1 2 2 -1. + <_> + 7 1 1 1 2. + <_> + 8 2 1 1 2. + <_> + + <_> + 5 5 12 11 -1. + <_> + 9 5 4 11 3. + <_> + + <_> + 14 0 4 14 -1. + <_> + 14 0 4 7 2. + 1 + <_> + + <_> + 15 1 2 8 -1. + <_> + 16 1 1 8 2. + <_> + + <_> + 0 1 3 4 -1. + <_> + 0 2 3 2 2. + <_> + + <_> + 5 9 9 9 -1. + <_> + 8 12 3 3 9. + <_> + + <_> + 12 7 4 6 -1. + <_> + 10 9 4 2 3. + 1 + <_> + + <_> + 5 5 8 9 -1. + <_> + 7 5 4 9 2. + <_> + + <_> + 2 3 16 2 -1. + <_> + 10 3 8 2 2. + <_> + + <_> + 7 1 4 3 -1. + <_> + 8 1 2 3 2. + <_> + + <_> + 8 1 12 3 -1. + <_> + 11 1 6 3 2. + <_> + + <_> + 18 1 1 2 -1. + <_> + 18 2 1 1 2. + <_> + + <_> + 6 9 8 2 -1. + <_> + 8 9 4 2 2. + <_> + + <_> + 5 7 2 4 -1. + <_> + 5 7 1 2 2. + <_> + 6 9 1 2 2. + <_> + + <_> + 2 15 9 1 -1. + <_> + 5 15 3 1 3. + <_> + + <_> + 3 10 6 9 -1. + <_> + 5 13 2 3 9. + <_> + + <_> + 0 9 7 3 -1. + <_> + 0 10 7 1 3. + <_> + + <_> + 0 9 16 1 -1. + <_> + 8 9 8 1 2. + <_> + + <_> + 6 1 12 3 -1. + <_> + 5 2 12 1 3. + 1 + <_> + + <_> + 9 9 9 1 -1. + <_> + 12 9 3 1 3. + <_> + + <_> + 12 10 4 10 -1. + <_> + 14 10 2 10 2. + <_> + + <_> + 5 10 4 8 -1. + <_> + 5 10 2 4 2. + <_> + 7 14 2 4 2. + <_> + + <_> + 0 0 16 10 -1. + <_> + 0 0 8 5 2. + <_> + 8 5 8 5 2. + <_> + + <_> + 5 15 2 4 -1. + <_> + 5 15 1 2 2. + <_> + 6 17 1 2 2. + <_> + + <_> + 14 2 6 16 -1. + <_> + 17 2 3 16 2. + <_> + + <_> + 7 5 6 1 -1. + <_> + 9 5 2 1 3. + <_> + + <_> + 18 12 2 2 -1. + <_> + 18 12 1 2 2. + 1 + <_> + + <_> + 16 0 3 18 -1. + <_> + 17 6 1 6 9. + <_> + + <_> + 0 2 20 3 -1. + <_> + 10 2 10 3 2. + <_> + + <_> + 1 19 2 1 -1. + <_> + 2 19 1 1 2. + <_> + + <_> + 8 0 6 3 -1. + <_> + 11 0 3 3 2. + <_> + + <_> + 7 0 8 3 -1. + <_> + 11 0 4 3 2. + <_> + + <_> + 18 9 1 6 -1. + <_> + 18 9 1 3 2. + 1 + <_> + + <_> + 3 9 6 3 -1. + <_> + 5 10 2 1 9. + <_> + + <_> + 15 9 2 6 -1. + <_> + 15 9 1 3 2. + <_> + 16 12 1 3 2. + <_> + + <_> + 12 6 4 1 -1. + <_> + 13 7 2 1 2. + 1 + <_> + + <_> + 1 6 18 14 -1. + <_> + 7 6 6 14 3. + <_> + + <_> + 15 10 4 2 -1. + <_> + 15 10 2 1 2. + <_> + 17 11 2 1 2. + <_> + + <_> + 14 8 6 7 -1. + <_> + 16 8 2 7 3. + <_> + + <_> + 0 10 2 10 -1. + <_> + 1 10 1 10 2. + <_> + + <_> + 18 0 2 12 -1. + <_> + 19 0 1 12 2. + <_> + + <_> + 4 7 10 1 -1. + <_> + 4 7 5 1 2. + 1 + <_> + + <_> + 12 1 6 2 -1. + <_> + 12 2 6 1 2. + <_> + + <_> + 8 8 3 2 -1. + <_> + 8 8 3 1 2. + 1 + <_> + + <_> + 14 10 4 3 -1. + <_> + 13 11 4 1 3. + 1 + <_> + + <_> + 10 7 5 6 -1. + <_> + 10 10 5 3 2. + <_> + + <_> + 11 5 5 8 -1. + <_> + 9 7 5 4 2. + 1 + <_> + + <_> + 16 2 2 3 -1. + <_> + 16 2 1 3 2. + 1 + <_> + + <_> + 4 2 13 9 -1. + <_> + 4 5 13 3 3. + <_> + + <_> + 9 2 6 2 -1. + <_> + 11 2 2 2 3. + <_> + + <_> + 0 0 9 2 -1. + <_> + 0 1 9 1 2. + <_> + + <_> + 11 2 3 12 -1. + <_> + 12 2 1 12 3. + <_> + + <_> + 19 17 1 3 -1. + <_> + 19 18 1 1 3. + <_> + + <_> + 19 18 1 2 -1. + <_> + 19 19 1 1 2. + <_> + + <_> + 13 4 2 4 -1. + <_> + 13 4 1 2 2. + <_> + 14 6 1 2 2. + <_> + + <_> + 14 7 1 4 -1. + <_> + 13 8 1 2 2. + 1 + <_> + + <_> + 1 10 3 1 -1. + <_> + 2 10 1 1 3. + <_> + + <_> + 18 9 1 4 -1. + <_> + 17 10 1 2 2. + 1 + <_> + + <_> + 8 9 6 4 -1. + <_> + 8 9 3 2 2. + <_> + 11 11 3 2 2. + <_> + + <_> + 0 9 15 3 -1. + <_> + 0 10 15 1 3. + <_> + + <_> + 16 6 4 3 -1. + <_> + 15 7 4 1 3. + 1 + <_> + + <_> + 11 8 9 4 -1. + <_> + 11 9 9 2 2. + <_> + + <_> + 16 5 1 6 -1. + <_> + 16 5 1 3 2. + 1 + <_> + + <_> + 7 17 4 3 -1. + <_> + 8 17 2 3 2. + <_> + + <_> + 4 5 1 4 -1. + <_> + 3 6 1 2 2. + 1 + <_> + + <_> + 17 16 3 4 -1. + <_> + 17 17 3 2 2. + <_> + + <_> + 14 17 4 3 -1. + <_> + 14 18 4 1 3. + <_> + + <_> + 6 3 8 3 -1. + <_> + 6 4 8 1 3. + <_> + + <_> + 9 4 1 8 -1. + <_> + 9 6 1 4 2. + <_> + + <_> + 14 0 6 1 -1. + <_> + 17 0 3 1 2. + <_> + + <_> + 15 3 2 1 -1. + <_> + 15 3 1 1 2. + 1 + <_> + + <_> + 16 1 3 4 -1. + <_> + 17 1 1 4 3. + <_> + + <_> + 16 5 2 4 -1. + <_> + 17 5 1 4 2. + <_> + + <_> + 12 7 2 3 -1. + <_> + 12 8 2 1 3. + <_> + + <_> + 17 3 3 7 -1. + <_> + 18 3 1 7 3. + <_> + + <_> + 15 7 5 2 -1. + <_> + 15 8 5 1 2. + <_> + + <_> + 16 7 3 1 -1. + <_> + 17 8 1 1 3. + 1 + <_> + + <_> + 0 10 3 6 -1. + <_> + 1 10 1 6 3. + <_> + + <_> + 8 4 8 13 -1. + <_> + 10 4 4 13 2. + <_> + + <_> + 5 10 2 2 -1. + <_> + 6 10 1 2 2. + <_> + + <_> + 5 10 6 3 -1. + <_> + 7 11 2 1 9. + <_> + + <_> + 5 9 3 2 -1. + <_> + 6 9 1 2 3. + <_> + + <_> + 6 7 9 3 -1. + <_> + 9 8 3 1 9. + <_> + + <_> + 0 6 4 6 -1. + <_> + 1 6 2 6 2. + <_> + + <_> + 10 17 1 3 -1. + <_> + 10 18 1 1 3. + <_> + + <_> + 8 16 4 2 -1. + <_> + 8 17 4 1 2. + <_> + + <_> + 1 18 10 2 -1. + <_> + 1 18 5 1 2. + <_> + 6 19 5 1 2. + <_> + + <_> + 5 0 4 2 -1. + <_> + 6 0 2 2 2. + <_> + + <_> + 8 5 6 3 -1. + <_> + 10 7 2 3 3. + 1 + <_> + + <_> + 6 5 7 9 -1. + <_> + 6 8 7 3 3. + <_> + + <_> + 16 12 2 4 -1. + <_> + 16 14 2 2 2. + <_> + + <_> + 9 7 10 6 -1. + <_> + 9 7 5 3 2. + <_> + 14 10 5 3 2. + <_> + + <_> + 9 5 8 4 -1. + <_> + 8 6 8 2 2. + 1 + <_> + + <_> + 3 14 6 6 -1. + <_> + 3 16 6 2 3. + <_> + + <_> + 5 14 6 6 -1. + <_> + 5 14 3 3 2. + <_> + 8 17 3 3 2. + <_> + + <_> + 2 7 4 6 -1. + <_> + 3 7 2 6 2. + <_> + + <_> + 2 0 3 20 -1. + <_> + 3 0 1 20 3. + <_> + + <_> + 4 7 10 3 -1. + <_> + 4 7 5 3 2. + 1 + <_> + + <_> + 1 10 4 6 -1. + <_> + 1 10 2 3 2. + <_> + 3 13 2 3 2. + <_> + + <_> + 4 9 2 10 -1. + <_> + 4 14 2 5 2. + <_> + + <_> + 4 7 2 2 -1. + <_> + 4 7 1 1 2. + <_> + 5 8 1 1 2. + <_> + + <_> + 0 18 6 2 -1. + <_> + 0 19 6 1 2. + <_> + + <_> + 19 0 1 10 -1. + <_> + 19 0 1 5 2. + 1 + <_> + + <_> + 9 2 2 12 -1. + <_> + 9 5 2 6 2. + <_> + + <_> + 4 14 2 4 -1. + <_> + 3 15 2 2 2. + 1 + <_> + + <_> + 8 17 4 1 -1. + <_> + 9 17 2 1 2. + <_> + + <_> + 1 9 10 4 -1. + <_> + 1 9 5 2 2. + <_> + 6 11 5 2 2. + <_> + + <_> + 5 4 3 1 -1. + <_> + 6 4 1 1 3. + <_> + + <_> + 14 7 2 2 -1. + <_> + 14 7 1 1 2. + <_> + 15 8 1 1 2. + <_> + + <_> + 13 7 3 3 -1. + <_> + 14 8 1 1 9. + <_> + + <_> + 6 2 6 1 -1. + <_> + 9 2 3 1 2. + <_> + + <_> + 8 0 12 7 -1. + <_> + 12 0 4 7 3. + <_> + + <_> + 16 0 4 4 -1. + <_> + 16 0 2 4 2. + 1 + <_> + + <_> + 2 0 16 7 -1. + <_> + 10 0 8 7 2. + <_> + + <_> + 7 1 8 2 -1. + <_> + 9 1 4 2 2. + <_> + + <_> + 4 6 12 1 -1. + <_> + 7 9 6 1 2. + 1 + <_> + + <_> + 3 17 6 3 -1. + <_> + 5 17 2 3 3. + <_> + + <_> + 0 19 12 1 -1. + <_> + 4 19 4 1 3. + <_> + + <_> + 12 14 8 1 -1. + <_> + 14 14 4 1 2. + <_> + + <_> + 4 10 12 6 -1. + <_> + 8 12 4 2 9. + <_> + + <_> + 12 4 8 6 -1. + <_> + 14 4 4 6 2. + <_> + + <_> + 9 2 2 8 -1. + <_> + 9 2 1 8 2. + 1 + <_> + + <_> + 1 18 19 2 -1. + <_> + 1 19 19 1 2. + <_> + + <_> + 9 18 3 2 -1. + <_> + 10 18 1 2 3. + <_> + + <_> + 10 3 8 3 -1. + <_> + 10 3 4 3 2. + 1 + <_> + + <_> + 4 0 9 1 -1. + <_> + 7 0 3 1 3. + <_> + + <_> + 9 2 8 1 -1. + <_> + 13 2 4 1 2. + <_> + + <_> + 7 1 10 2 -1. + <_> + 7 2 10 1 2. + <_> + + <_> + 0 11 3 3 -1. + <_> + 1 12 1 1 9. + <_> + + <_> + 0 10 12 9 -1. + <_> + 4 10 4 9 3. + <_> + + <_> + 4 0 6 3 -1. + <_> + 6 0 2 3 3. + <_> + + <_> + 17 2 3 2 -1. + <_> + 18 2 1 2 3. + <_> + + <_> + 14 10 4 4 -1. + <_> + 14 10 2 4 2. + 1 + <_> + + <_> + 7 10 2 3 -1. + <_> + 6 11 2 1 3. + 1 + <_> + + <_> + 4 5 1 2 -1. + <_> + 4 5 1 1 2. + 1 + <_> + + <_> + 0 0 4 1 -1. + <_> + 2 0 2 1 2. + <_> + + <_> + 1 18 3 2 -1. + <_> + 1 19 3 1 2. + <_> + + <_> + 0 0 4 6 -1. + <_> + 0 2 4 2 3. + <_> + + <_> + 0 10 12 10 -1. + <_> + 0 10 6 5 2. + <_> + 6 15 6 5 2. + <_> + + <_> + 7 15 6 2 -1. + <_> + 7 16 6 1 2. + <_> + + <_> + 14 8 6 3 -1. + <_> + 13 9 6 1 3. + 1 + <_> + + <_> + 6 0 1 2 -1. + <_> + 6 0 1 1 2. + 1 + <_> + + <_> + 17 1 2 2 -1. + <_> + 17 1 1 2 2. + 1 + <_> + + <_> + 15 10 1 2 -1. + <_> + 15 11 1 1 2. + <_> + + <_> + 16 9 3 6 -1. + <_> + 17 10 1 6 3. + 1 + <_> + + <_> + 2 8 16 9 -1. + <_> + 6 8 8 9 2. + <_> + + <_> + 12 1 6 3 -1. + <_> + 14 1 2 3 3. + <_> + + <_> + 9 6 9 4 -1. + <_> + 9 6 9 2 2. + 1 + <_> + + <_> + 3 17 2 2 -1. + <_> + 4 17 1 2 2. + <_> + + <_> + 0 7 2 4 -1. + <_> + 0 8 2 2 2. + <_> + + <_> + 5 10 12 1 -1. + <_> + 9 10 4 1 3. + <_> + + <_> + 15 9 4 4 -1. + <_> + 15 9 2 2 2. + <_> + 17 11 2 2 2. + <_> + + <_> + 4 10 4 1 -1. + <_> + 5 10 2 1 2. + <_> + + <_> + 13 9 3 2 -1. + <_> + 14 9 1 2 3. + <_> + + <_> + 2 12 13 8 -1. + <_> + 2 16 13 4 2. + <_> + + <_> + 16 17 1 3 -1. + <_> + 16 18 1 1 3. + <_> + + <_> + 9 5 3 6 -1. + <_> + 10 7 1 2 9. + <_> + + <_> + 1 9 12 4 -1. + <_> + 1 10 12 2 2. + <_> + + <_> + 12 2 6 17 -1. + <_> + 14 2 2 17 3. + <_> + + <_> + 8 18 8 2 -1. + <_> + 10 18 4 2 2. + <_> + + <_> + 0 18 4 2 -1. + <_> + 2 18 2 2 2. + <_> + + <_> + 10 15 10 4 -1. + <_> + 10 15 5 2 2. + <_> + 15 17 5 2 2. + <_> + + <_> + 15 1 3 14 -1. + <_> + 16 1 1 14 3. + <_> + + <_> + 3 8 6 12 -1. + <_> + 3 14 6 6 2. + <_> + + <_> + 4 8 1 2 -1. + <_> + 4 9 1 1 2. + <_> + + <_> + 3 8 12 6 -1. + <_> + 7 10 4 2 9. + <_> + + <_> + 18 3 2 7 -1. + <_> + 19 3 1 7 2. + <_> + + <_> + 16 5 4 6 -1. + <_> + 14 7 4 2 3. + 1 + <_> + + <_> + 14 9 2 4 -1. + <_> + 13 10 2 2 2. + 1 + <_> + + <_> + 0 1 20 2 -1. + <_> + 10 1 10 2 2. + <_> + + <_> + 0 0 6 5 -1. + <_> + 3 0 3 5 2. + <_> + + <_> + 18 0 2 1 -1. + <_> + 19 0 1 1 2. + <_> + + <_> + 13 9 1 3 -1. + <_> + 12 10 1 1 3. + 1 + <_> + + <_> + 8 12 6 2 -1. + <_> + 10 12 2 2 3. + <_> + + <_> + 2 1 6 6 -1. + <_> + 4 1 2 6 3. + <_> + + <_> + 4 1 6 12 -1. + <_> + 4 4 6 6 2. + <_> + + <_> + 3 3 2 3 -1. + <_> + 2 4 2 1 3. + 1 + <_> + + <_> + 7 9 2 3 -1. + <_> + 6 10 2 1 3. + 1 + <_> + + <_> + 2 4 14 5 -1. + <_> + 9 4 7 5 2. + <_> + + <_> + 10 0 9 4 -1. + <_> + 13 3 3 4 3. + 1 + <_> + + <_> + 0 15 3 3 -1. + <_> + 0 16 3 1 3. + <_> + + <_> + 5 17 2 3 -1. + <_> + 5 18 2 1 3. + <_> + + <_> + 7 12 2 8 -1. + <_> + 7 14 2 4 2. + <_> + + <_> + 3 18 5 2 -1. + <_> + 3 19 5 1 2. + <_> + + <_> + 18 10 1 2 -1. + <_> + 18 10 1 1 2. + 1 + <_> + + <_> + 0 0 1 18 -1. + <_> + 0 9 1 9 2. + <_> + + <_> + 8 1 4 2 -1. + <_> + 8 2 4 1 2. + <_> + + <_> + 10 8 5 4 -1. + <_> + 10 8 5 2 2. + 1 + <_> + + <_> + 5 11 6 1 -1. + <_> + 7 11 2 1 3. + <_> + + <_> + 14 8 4 12 -1. + <_> + 14 12 4 4 3. + <_> + + <_> + 1 6 2 4 -1. + <_> + 1 8 2 2 2. + <_> + + <_> + 13 14 6 3 -1. + <_> + 15 15 2 1 9. + <_> + + <_> + 10 12 4 8 -1. + <_> + 10 16 4 4 2. + <_> + + <_> + 5 11 2 2 -1. + <_> + 6 11 1 2 2. + <_> + + <_> + 7 14 8 2 -1. + <_> + 7 15 8 1 2. + <_> + + <_> + 17 6 2 2 -1. + <_> + 17 6 1 2 2. + 1 + <_> + + <_> + 5 1 3 2 -1. + <_> + 5 1 3 1 2. + 1 + <_> + + <_> + 0 16 2 3 -1. + <_> + 0 17 2 1 3. + <_> + + <_> + 7 0 5 3 -1. + <_> + 7 1 5 1 3. + <_> + + <_> + 0 0 16 2 -1. + <_> + 0 1 16 1 2. + <_> + + <_> + 5 8 4 2 -1. + <_> + 5 8 2 1 2. + <_> + 7 9 2 1 2. + <_> + + <_> + 14 5 6 2 -1. + <_> + 14 5 3 1 2. + <_> + 17 6 3 1 2. + <_> + + <_> + 2 1 2 4 -1. + <_> + 3 1 1 4 2. + <_> + + <_> + 2 7 1 2 -1. + <_> + 2 8 1 1 2. + <_> + + <_> + 0 0 2 4 -1. + <_> + 0 0 1 2 2. + <_> + 1 2 1 2 2. + <_> + + <_> + 8 0 8 10 -1. + <_> + 8 0 4 5 2. + <_> + 12 5 4 5 2. + <_> + + <_> + 3 3 2 8 -1. + <_> + 3 5 2 4 2. + <_> + + <_> + 7 9 9 2 -1. + <_> + 10 9 3 2 3. + <_> + + <_> + 6 3 2 3 -1. + <_> + 6 3 1 3 2. + 1 + <_> + + <_> + 11 13 2 2 -1. + <_> + 11 14 2 1 2. + <_> + + <_> + 16 2 4 5 -1. + <_> + 17 2 2 5 2. + <_> + + <_> + 7 10 12 6 -1. + <_> + 11 12 4 2 9. + <_> + + <_> + 14 6 2 7 -1. + <_> + 15 6 1 7 2. + <_> + + <_> + 18 16 1 3 -1. + <_> + 18 17 1 1 3. + <_> + + <_> + 18 9 2 2 -1. + <_> + 18 9 1 1 2. + <_> + 19 10 1 1 2. + <_> + + <_> + 16 7 4 4 -1. + <_> + 16 7 2 2 2. + <_> + 18 9 2 2 2. + <_> + + <_> + 14 10 6 6 -1. + <_> + 14 10 3 3 2. + <_> + 17 13 3 3 2. + <_> + + <_> + 8 16 2 4 -1. + <_> + 8 17 2 2 2. + <_> + + <_> + 18 11 2 8 -1. + <_> + 18 11 1 4 2. + <_> + 19 15 1 4 2. + <_> + + <_> + 7 4 6 12 -1. + <_> + 7 8 6 4 3. + <_> + + <_> + 0 7 20 9 -1. + <_> + 5 7 10 9 2. + <_> + + <_> + 12 7 3 4 -1. + <_> + 13 7 1 4 3. + <_> + + <_> + 6 3 3 4 -1. + <_> + 5 4 3 2 2. + 1 + <_> + + <_> + 14 3 3 12 -1. + <_> + 14 3 3 6 2. + 1 + <_> + + <_> + 11 5 8 6 -1. + <_> + 11 7 8 2 3. + <_> + + <_> + 17 7 3 5 -1. + <_> + 18 8 1 5 3. + 1 + <_> + + <_> + 3 11 6 6 -1. + <_> + 5 13 2 2 9. + <_> + + <_> + 15 6 4 5 -1. + <_> + 15 6 2 5 2. + 1 + <_> + + <_> + 8 9 3 3 -1. + <_> + 7 10 3 1 3. + 1 + <_> + + <_> + 6 7 9 2 -1. + <_> + 9 10 3 2 3. + 1 + <_> + + <_> + 7 8 2 12 -1. + <_> + 7 8 1 6 2. + <_> + 8 14 1 6 2. + <_> + + <_> + 5 17 3 2 -1. + <_> + 6 17 1 2 3. + <_> + + <_> + 4 5 3 4 -1. + <_> + 5 6 1 4 3. + 1 + <_> + + <_> + 11 1 6 10 -1. + <_> + 11 1 6 5 2. + 1 + <_> + + <_> + 2 6 6 1 -1. + <_> + 2 6 3 1 2. + 1 + <_> + + <_> + 16 6 1 6 -1. + <_> + 14 8 1 2 3. + 1 + <_> + + <_> + 14 6 1 3 -1. + <_> + 13 7 1 1 3. + 1 + <_> + + <_> + 0 6 18 3 -1. + <_> + 6 7 6 1 9. + <_> + + <_> + 14 7 6 3 -1. + <_> + 14 7 3 3 2. + 1 + <_> + + <_> + 7 12 4 3 -1. + <_> + 7 12 2 3 2. + 1 + <_> + + <_> + 18 8 2 8 -1. + <_> + 18 8 1 4 2. + <_> + 19 12 1 4 2. + <_> + + <_> + 15 1 4 2 -1. + <_> + 16 2 2 2 2. + 1 + <_> + + <_> + 14 0 2 10 -1. + <_> + 14 0 1 5 2. + <_> + 15 5 1 5 2. + <_> + + <_> + 10 1 2 6 -1. + <_> + 10 1 1 3 2. + <_> + 11 4 1 3 2. + <_> + + <_> + 16 2 2 3 -1. + <_> + 17 2 1 3 2. + <_> + + <_> + 12 2 4 1 -1. + <_> + 14 2 2 1 2. + <_> + + <_> + 0 1 4 2 -1. + <_> + 0 2 4 1 2. + <_> + + <_> + 12 11 3 4 -1. + <_> + 13 12 1 4 3. + 1 + <_> + + <_> + 8 12 8 7 -1. + <_> + 10 12 4 7 2. + <_> + + <_> + 2 5 6 8 -1. + <_> + 4 5 2 8 3. + <_> + + <_> + 18 17 2 2 -1. + <_> + 18 17 1 1 2. + <_> + 19 18 1 1 2. + <_> + + <_> + 5 14 1 2 -1. + <_> + 5 15 1 1 2. + <_> + + <_> + 1 10 6 1 -1. + <_> + 3 10 2 1 3. + <_> + + <_> + 6 6 6 12 -1. + <_> + 9 6 3 12 2. + <_> + + <_> + 18 2 2 12 -1. + <_> + 18 2 1 6 2. + <_> + 19 8 1 6 2. + <_> + + <_> + 2 16 9 3 -1. + <_> + 2 17 9 1 3. + <_> + + <_> + 10 9 10 9 -1. + <_> + 10 12 10 3 3. + <_> + + <_> + 13 14 3 4 -1. + <_> + 13 15 3 2 2. + <_> + + <_> + 8 9 1 3 -1. + <_> + 8 10 1 1 3. + <_> + + <_> + 2 16 5 3 -1. + <_> + 2 17 5 1 3. + <_> + + <_> + 11 19 6 1 -1. + <_> + 13 19 2 1 3. + <_> + + <_> + 9 1 6 15 -1. + <_> + 11 6 2 5 9. + <_> + + <_> + 15 10 2 8 -1. + <_> + 15 10 1 4 2. + <_> + 16 14 1 4 2. + <_> + + <_> + 0 7 6 12 -1. + <_> + 2 11 2 4 9. + <_> + + <_> + 11 2 9 4 -1. + <_> + 11 2 9 2 2. + 1 + <_> + + <_> + 5 9 2 3 -1. + <_> + 5 9 1 3 2. + 1 + <_> + + <_> + 14 8 3 4 -1. + <_> + 15 8 1 4 3. + <_> + + <_> + 2 13 18 4 -1. + <_> + 11 13 9 4 2. + <_> + + <_> + 0 0 20 14 -1. + <_> + 10 0 10 14 2. + <_> + + <_> + 0 9 6 11 -1. + <_> + 2 9 2 11 3. + <_> + + <_> + 2 0 3 17 -1. + <_> + 3 0 1 17 3. + <_> + + <_> + 1 0 18 7 -1. + <_> + 7 0 6 7 3. + <_> + + <_> + 7 3 4 6 -1. + <_> + 9 3 2 6 2. + <_> + + <_> + 6 0 14 20 -1. + <_> + 6 0 7 10 2. + <_> + 13 10 7 10 2. + <_> + + <_> + 18 6 2 2 -1. + <_> + 18 6 1 1 2. + <_> + 19 7 1 1 2. + <_> + + <_> + 13 9 4 3 -1. + <_> + 14 10 2 3 2. + 1 + <_> + + <_> + 10 11 2 6 -1. + <_> + 8 13 2 2 3. + 1 + <_> + + <_> + 18 15 2 1 -1. + <_> + 18 15 1 1 2. + 1 + <_> + + <_> + 8 16 4 2 -1. + <_> + 9 16 2 2 2. + <_> + + <_> + 6 17 4 1 -1. + <_> + 7 17 2 1 2. + <_> + + <_> + 7 0 12 5 -1. + <_> + 10 0 6 5 2. + <_> + + <_> + 6 4 9 3 -1. + <_> + 6 5 9 1 3. + <_> + + <_> + 15 0 4 2 -1. + <_> + 15 1 4 1 2. + <_> + + <_> + 6 0 9 20 -1. + <_> + 6 5 9 10 2. + <_> + + <_> + 0 7 11 12 -1. + <_> + 0 13 11 6 2. + <_> + + <_> + 1 8 10 1 -1. + <_> + 1 8 5 1 2. + 1 + <_> + + <_> + 12 1 2 10 -1. + <_> + 12 6 2 5 2. + <_> + + <_> + 18 5 1 6 -1. + <_> + 18 8 1 3 2. + <_> + + <_> + 5 10 12 1 -1. + <_> + 9 10 4 1 3. + <_> + + <_> + 11 12 9 4 -1. + <_> + 14 12 3 4 3. + <_> + + <_> + 12 8 7 4 -1. + <_> + 11 9 7 2 2. + 1 + <_> + + <_> + 4 9 2 6 -1. + <_> + 4 9 1 3 2. + <_> + 5 12 1 3 2. + <_> + + <_> + 15 8 2 8 -1. + <_> + 15 8 1 4 2. + <_> + 16 12 1 4 2. + <_> + + <_> + 1 16 9 2 -1. + <_> + 1 17 9 1 2. + <_> + + <_> + 5 2 14 12 -1. + <_> + 5 5 14 6 2. + <_> + + <_> + 2 10 2 10 -1. + <_> + 2 15 2 5 2. + <_> + + <_> + 1 0 12 5 -1. + <_> + 5 0 4 5 3. + <_> + + <_> + 16 17 1 2 -1. + <_> + 16 17 1 1 2. + 1 + <_> + + <_> + 12 1 8 2 -1. + <_> + 12 1 4 1 2. + <_> + 16 2 4 1 2. + <_> + + <_> + 3 5 8 6 -1. + <_> + 5 5 4 6 2. + <_> + + <_> + 5 1 4 4 -1. + <_> + 4 2 4 2 2. + 1 + <_> + + <_> + 6 3 1 14 -1. + <_> + 6 10 1 7 2. + <_> + + <_> + 15 10 2 10 -1. + <_> + 15 10 1 5 2. + <_> + 16 15 1 5 2. + <_> + + <_> + 10 2 9 4 -1. + <_> + 13 2 3 4 3. + <_> + + <_> + 15 6 1 9 -1. + <_> + 15 9 1 3 3. + <_> + + <_> + 3 2 6 2 -1. + <_> + 5 2 2 2 3. + <_> + + <_> + 15 5 4 2 -1. + <_> + 15 5 2 1 2. + <_> + 17 6 2 1 2. + <_> + + <_> + 8 2 6 4 -1. + <_> + 8 3 6 2 2. + <_> + + <_> + 17 18 1 2 -1. + <_> + 17 19 1 1 2. + <_> + + <_> + 1 13 6 3 -1. + <_> + 3 14 2 1 9. + <_> + + <_> + 2 16 14 2 -1. + <_> + 2 16 7 1 2. + <_> + 9 17 7 1 2. + <_> + + <_> + 4 0 2 3 -1. + <_> + 5 0 1 3 2. + <_> + + <_> + 8 6 3 1 -1. + <_> + 9 7 1 1 3. + 1 + <_> + + <_> + 11 6 2 3 -1. + <_> + 10 7 2 1 3. + 1 + <_> + + <_> + 4 11 10 2 -1. + <_> + 4 12 10 1 2. + <_> + + <_> + 0 8 15 6 -1. + <_> + 0 10 15 2 3. + <_> + + <_> + 3 18 8 1 -1. + <_> + 5 18 4 1 2. + <_> + + <_> + 14 2 3 2 -1. + <_> + 15 3 1 2 3. + 1 + <_> + + <_> + 17 1 3 4 -1. + <_> + 18 1 1 4 3. + <_> + + <_> + 8 17 4 2 -1. + <_> + 10 17 2 2 2. + <_> + + <_> + 12 8 2 3 -1. + <_> + 11 9 2 1 3. + 1 + <_> + + <_> + 5 7 4 2 -1. + <_> + 5 7 2 1 2. + <_> + 7 8 2 1 2. + <_> + + <_> + 3 12 6 5 -1. + <_> + 6 12 3 5 2. + <_> + + <_> + 7 7 10 6 -1. + <_> + 7 9 10 2 3. + <_> + + <_> + 4 3 9 16 -1. + <_> + 7 3 3 16 3. + <_> + + <_> + 5 10 6 8 -1. + <_> + 5 12 6 4 2. + <_> + + <_> + 17 7 2 3 -1. + <_> + 17 7 1 3 2. + 1 + <_> + + <_> + 16 0 1 12 -1. + <_> + 16 6 1 6 2. + <_> + + <_> + 13 4 5 2 -1. + <_> + 13 5 5 1 2. + <_> + + <_> + 17 4 3 3 -1. + <_> + 17 5 3 1 3. + <_> + + <_> + 10 1 9 6 -1. + <_> + 13 1 3 6 3. + <_> + + <_> + 7 7 13 4 -1. + <_> + 7 8 13 2 2. + <_> + + <_> + 13 11 6 2 -1. + <_> + 13 11 3 1 2. + <_> + 16 12 3 1 2. + <_> + + <_> + 10 2 5 3 -1. + <_> + 10 3 5 1 3. + <_> + + <_> + 1 8 4 2 -1. + <_> + 1 8 2 1 2. + <_> + 3 9 2 1 2. + <_> + + <_> + 19 8 1 4 -1. + <_> + 19 9 1 2 2. + <_> + + <_> + 4 9 3 2 -1. + <_> + 5 10 1 2 3. + 1 + <_> + + <_> + 4 4 15 9 -1. + <_> + 9 7 5 3 9. + <_> + + <_> + 8 0 9 11 -1. + <_> + 11 0 3 11 3. + <_> + + <_> + 15 16 2 2 -1. + <_> + 15 16 1 1 2. + <_> + 16 17 1 1 2. + <_> + + <_> + 16 16 1 3 -1. + <_> + 16 17 1 1 3. + <_> + + <_> + 14 16 3 3 -1. + <_> + 14 17 3 1 3. + <_> + + <_> + 12 12 4 6 -1. + <_> + 13 12 2 6 2. + <_> + + <_> + 10 10 1 6 -1. + <_> + 8 12 1 2 3. + 1 + <_> + + <_> + 8 19 12 1 -1. + <_> + 11 19 6 1 2. + <_> + + <_> + 14 16 2 2 -1. + <_> + 14 16 1 1 2. + <_> + 15 17 1 1 2. + <_> + + <_> + 4 8 1 4 -1. + <_> + 3 9 1 2 2. + 1 + <_> + + <_> + 6 9 4 2 -1. + <_> + 6 9 2 1 2. + <_> + 8 10 2 1 2. + <_> + + <_> + 2 2 6 1 -1. + <_> + 2 2 3 1 2. + 1 + <_> + + <_> + 12 8 3 1 -1. + <_> + 13 8 1 1 3. + <_> + + <_> + 13 3 2 6 -1. + <_> + 13 3 1 3 2. + <_> + 14 6 1 3 2. + <_> + + <_> + 7 9 3 5 -1. + <_> + 8 9 1 5 3. + <_> + + <_> + 6 1 2 17 -1. + <_> + 7 1 1 17 2. + <_> + + <_> + 15 1 4 11 -1. + <_> + 17 1 2 11 2. + <_> + + <_> + 12 9 2 1 -1. + <_> + 13 9 1 1 2. + <_> + + <_> + 14 6 3 3 -1. + <_> + 15 6 1 3 3. + <_> + + <_> + 1 6 2 4 -1. + <_> + 1 6 1 2 2. + <_> + 2 8 1 2 2. + <_> + + <_> + 3 7 2 12 -1. + <_> + 3 7 1 6 2. + <_> + 4 13 1 6 2. + <_> + + <_> + 2 18 2 2 -1. + <_> + 2 18 1 1 2. + <_> + 3 19 1 1 2. + <_> + + <_> + 8 9 4 7 -1. + <_> + 8 9 2 7 2. + 1 + <_> + + <_> + 19 5 1 4 -1. + <_> + 19 7 1 2 2. + <_> + + <_> + 5 18 3 2 -1. + <_> + 5 19 3 1 2. + <_> + + <_> + 8 14 8 5 -1. + <_> + 10 14 4 5 2. + <_> + + <_> + 0 16 8 3 -1. + <_> + 4 16 4 3 2. + <_> + + <_> + 2 4 1 4 -1. + <_> + 2 5 1 2 2. + <_> + + <_> + 0 17 1 3 -1. + <_> + 0 18 1 1 3. + <_> + + <_> + 7 17 8 3 -1. + <_> + 9 17 4 3 2. + <_> + + <_> + 7 19 8 1 -1. + <_> + 9 19 4 1 2. + <_> + + <_> + 0 0 6 6 -1. + <_> + 0 0 3 3 2. + <_> + 3 3 3 3 2. + <_> + + <_> + 9 5 2 2 -1. + <_> + 9 5 1 1 2. + <_> + 10 6 1 1 2. + <_> + + <_> + 8 17 1 3 -1. + <_> + 8 18 1 1 3. + <_> + + <_> + 8 18 12 2 -1. + <_> + 8 18 6 1 2. + <_> + 14 19 6 1 2. + <_> + + <_> + 9 8 4 1 -1. + <_> + 10 9 2 1 2. + 1 + <_> + + <_> + 8 18 3 2 -1. + <_> + 8 19 3 1 2. + <_> + + <_> + 0 2 2 18 -1. + <_> + 1 2 1 18 2. + <_> + + <_> + 0 19 12 1 -1. + <_> + 3 19 6 1 2. + <_> + + <_> + 3 12 6 1 -1. + <_> + 3 12 3 1 2. + 1 + <_> + + <_> + 6 11 14 5 -1. + <_> + 13 11 7 5 2. + <_> + + <_> + 13 4 6 10 -1. + <_> + 15 4 2 10 3. + <_> + + <_> + 0 0 6 1 -1. + <_> + 3 0 3 1 2. + <_> + + <_> + 15 7 1 12 -1. + <_> + 15 10 1 6 2. + <_> + + <_> + 14 9 4 2 -1. + <_> + 15 9 2 2 2. + <_> + + <_> + 6 9 9 11 -1. + <_> + 9 9 3 11 3. + <_> + + <_> + 12 10 2 2 -1. + <_> + 12 10 1 1 2. + <_> + 13 11 1 1 2. + <_> + + <_> + 2 3 6 13 -1. + <_> + 5 3 3 13 2. + <_> + + <_> + 16 7 4 3 -1. + <_> + 16 8 4 1 3. + <_> + + <_> + 6 7 2 6 -1. + <_> + 7 7 1 6 2. + <_> + + <_> + 17 0 3 1 -1. + <_> + 18 1 1 1 3. + 1 + <_> + + <_> + 18 16 2 2 -1. + <_> + 18 16 1 1 2. + <_> + 19 17 1 1 2. + <_> + + <_> + 12 2 8 2 -1. + <_> + 12 2 4 1 2. + <_> + 16 3 4 1 2. + <_> + + <_> + 4 1 10 4 -1. + <_> + 4 2 10 2 2. + <_> + + <_> + 4 0 2 3 -1. + <_> + 3 1 2 1 3. + 1 + <_> + + <_> + 12 7 3 8 -1. + <_> + 10 9 3 4 2. + 1 + <_> + + <_> + 1 15 2 2 -1. + <_> + 1 15 1 1 2. + <_> + 2 16 1 1 2. + <_> + + <_> + 7 16 2 2 -1. + <_> + 7 16 1 1 2. + <_> + 8 17 1 1 2. + <_> + + <_> + 0 8 2 12 -1. + <_> + 0 11 2 6 2. + <_> + + <_> + 10 6 4 8 -1. + <_> + 10 6 2 4 2. + <_> + 12 10 2 4 2. + <_> + + <_> + 12 6 2 4 -1. + <_> + 12 6 1 2 2. + <_> + 13 8 1 2 2. + <_> + + <_> + 3 12 4 2 -1. + <_> + 3 12 2 2 2. + 1 + <_> + + <_> + 7 9 8 1 -1. + <_> + 9 9 4 1 2. + <_> + + <_> + 3 1 3 16 -1. + <_> + 4 1 1 16 3. + <_> + + <_> + 8 10 6 9 -1. + <_> + 10 10 2 9 3. + <_> + + <_> + 16 14 3 3 -1. + <_> + 17 14 1 3 3. + <_> + + <_> + 14 8 6 12 -1. + <_> + 14 11 6 6 2. + <_> + + <_> + 14 19 6 1 -1. + <_> + 16 19 2 1 3. + <_> + + <_> + 5 8 8 5 -1. + <_> + 9 8 4 5 2. + <_> + + <_> + 9 3 8 3 -1. + <_> + 11 5 4 3 2. + 1 + <_> + + <_> + 9 9 6 10 -1. + <_> + 9 14 6 5 2. + <_> + + <_> + 16 8 3 2 -1. + <_> + 17 8 1 2 3. + <_> + + <_> + 3 0 3 2 -1. + <_> + 4 0 1 2 3. + <_> + + <_> + 13 10 2 1 -1. + <_> + 14 10 1 1 2. + <_> + + <_> + 17 17 2 3 -1. + <_> + 17 18 2 1 3. + <_> + + <_> + 15 14 2 2 -1. + <_> + 15 14 1 1 2. + <_> + 16 15 1 1 2. + <_> + + <_> + 16 18 4 2 -1. + <_> + 16 18 2 1 2. + <_> + 18 19 2 1 2. + <_> + + <_> + 4 17 3 2 -1. + <_> + 5 17 1 2 3. + <_> + + <_> + 1 0 11 2 -1. + <_> + 1 1 11 1 2. + <_> + + <_> + 2 0 10 2 -1. + <_> + 2 1 10 1 2. + <_> + + <_> + 4 10 12 1 -1. + <_> + 8 10 4 1 3. + <_> + + <_> + 2 9 4 6 -1. + <_> + 2 9 2 3 2. + <_> + 4 12 2 3 2. + <_> + + <_> + 15 6 4 14 -1. + <_> + 15 6 2 7 2. + <_> + 17 13 2 7 2. + <_> + + <_> + 10 2 6 12 -1. + <_> + 12 6 2 4 9. + <_> + + <_> + 8 5 6 15 -1. + <_> + 10 10 2 5 9. + <_> + + <_> + 17 8 3 5 -1. + <_> + 18 9 1 5 3. + 1 + <_> + + <_> + 10 6 6 6 -1. + <_> + 12 8 2 6 3. + 1 + <_> + + <_> + 17 8 3 12 -1. + <_> + 18 8 1 12 3. + <_> + + <_> + 5 8 3 4 -1. + <_> + 5 10 3 2 2. + <_> + + <_> + 16 0 4 6 -1. + <_> + 16 0 2 3 2. + <_> + 18 3 2 3 2. + <_> + + <_> + 15 0 5 10 -1. + <_> + 15 5 5 5 2. + <_> + + <_> + 14 8 2 3 -1. + <_> + 15 8 1 3 2. + <_> + + <_> + 3 1 14 3 -1. + <_> + 2 2 14 1 3. + 1 + <_> + + <_> + 0 0 2 13 -1. + <_> + 1 0 1 13 2. + <_> + + <_> + 2 8 6 12 -1. + <_> + 4 8 2 12 3. + <_> + + <_> + 8 7 6 5 -1. + <_> + 10 9 2 5 3. + 1 + <_> + + <_> + 9 8 1 12 -1. + <_> + 9 12 1 4 3. + <_> + + <_> + 1 0 2 4 -1. + <_> + 2 0 1 4 2. + <_> + + <_> + 6 8 8 2 -1. + <_> + 8 8 4 2 2. + <_> + + <_> + 4 6 4 6 -1. + <_> + 5 6 2 6 2. + <_> + + <_> + 12 1 4 6 -1. + <_> + 13 1 2 6 2. + <_> + + <_> + 3 0 9 2 -1. + <_> + 3 0 9 1 2. + 1 + <_> + + <_> + 12 0 4 2 -1. + <_> + 12 1 4 1 2. + <_> + + <_> + 14 18 2 2 -1. + <_> + 14 19 2 1 2. + <_> + + <_> + 12 3 8 4 -1. + <_> + 12 5 8 2 2. + <_> + + <_> + 4 11 1 2 -1. + <_> + 4 11 1 1 2. + 1 + <_> + + <_> + 8 4 9 6 -1. + <_> + 11 4 3 6 3. + <_> + + <_> + 5 10 2 6 -1. + <_> + 5 10 1 3 2. + <_> + 6 13 1 3 2. + <_> + + <_> + 5 10 4 3 -1. + <_> + 6 10 2 3 2. + <_> + + <_> + 12 4 3 1 -1. + <_> + 13 4 1 1 3. + <_> + + <_> + 2 11 18 6 -1. + <_> + 2 13 18 2 3. + <_> + + <_> + 8 6 10 14 -1. + <_> + 8 6 5 7 2. + <_> + 13 13 5 7 2. + <_> + + <_> + 2 2 12 2 -1. + <_> + 2 2 6 1 2. + <_> + 8 3 6 1 2. + <_> + + <_> + 10 7 6 10 -1. + <_> + 10 7 3 5 2. + <_> + 13 12 3 5 2. + <_> + + <_> + 1 2 4 4 -1. + <_> + 3 2 2 4 2. + <_> + + <_> + 3 0 13 2 -1. + <_> + 3 1 13 1 2. + <_> + + <_> + 3 2 11 3 -1. + <_> + 3 3 11 1 3. + <_> + + <_> + 14 8 3 4 -1. + <_> + 14 9 3 2 2. + <_> + + <_> + 9 8 10 4 -1. + <_> + 9 9 10 2 2. + <_> + + <_> + 6 8 6 12 -1. + <_> + 8 8 2 12 3. + <_> + + <_> + 4 7 3 3 -1. + <_> + 5 8 1 1 9. + <_> + + <_> + 1 5 12 15 -1. + <_> + 4 5 6 15 2. + <_> + + <_> + 8 8 8 2 -1. + <_> + 10 8 4 2 2. + <_> + + <_> + 18 0 2 6 -1. + <_> + 19 0 1 6 2. + <_> + + <_> + 6 1 12 5 -1. + <_> + 12 1 6 5 2. + <_> + + <_> + 8 1 6 4 -1. + <_> + 10 1 2 4 3. + <_> + + <_> + 17 5 3 2 -1. + <_> + 18 6 1 2 3. + 1 + <_> + + <_> + 11 1 6 9 -1. + <_> + 8 4 6 3 3. + 1 + <_> + + <_> + 15 16 2 2 -1. + <_> + 15 16 1 1 2. + <_> + 16 17 1 1 2. + <_> + + <_> + 15 16 2 2 -1. + <_> + 15 16 1 1 2. + <_> + 16 17 1 1 2. + <_> + + <_> + 16 16 2 2 -1. + <_> + 16 16 1 1 2. + <_> + 17 17 1 1 2. + <_> + + <_> + 18 16 1 3 -1. + <_> + 18 17 1 1 3. + <_> + + <_> + 5 7 8 2 -1. + <_> + 9 7 4 2 2. + <_> + + <_> + 8 3 1 16 -1. + <_> + 8 11 1 8 2. + <_> + + <_> + 17 2 2 8 -1. + <_> + 17 2 1 8 2. + 1 + <_> + + <_> + 5 3 4 2 -1. + <_> + 7 3 2 2 2. + <_> + + <_> + 14 6 3 3 -1. + <_> + 15 7 1 1 9. + <_> + + <_> + 2 0 8 9 -1. + <_> + 4 0 4 9 2. + <_> + + <_> + 16 0 3 8 -1. + <_> + 17 0 1 8 3. + <_> + + <_> + 16 0 3 8 -1. + <_> + 17 0 1 8 3. + <_> + + <_> + 17 18 2 2 -1. + <_> + 18 18 1 2 2. + <_> + + <_> + 11 10 8 4 -1. + <_> + 13 10 4 4 2. + <_> + + <_> + 17 5 2 2 -1. + <_> + 17 6 2 1 2. + <_> + + <_> + 12 9 4 3 -1. + <_> + 13 9 2 3 2. + <_> + + <_> + 15 7 3 7 -1. + <_> + 16 7 1 7 3. + <_> + + <_> + 1 5 4 6 -1. + <_> + 2 5 2 6 2. + <_> + + <_> + 2 2 18 10 -1. + <_> + 2 2 9 5 2. + <_> + 11 7 9 5 2. + <_> + + <_> + 8 4 2 3 -1. + <_> + 9 4 1 3 2. + <_> + + <_> + 3 3 12 2 -1. + <_> + 6 6 6 2 2. + 1 + <_> + + <_> + 5 3 12 6 -1. + <_> + 9 3 4 6 3. + <_> + + <_> + 15 7 2 3 -1. + <_> + 15 8 2 1 3. + <_> + + <_> + 5 9 4 6 -1. + <_> + 5 12 4 3 2. + <_> + + <_> + 1 15 6 4 -1. + <_> + 1 15 3 2 2. + <_> + 4 17 3 2 2. + <_> + + <_> + 2 9 2 6 -1. + <_> + 3 9 1 6 2. + <_> + + <_> + 1 18 3 2 -1. + <_> + 1 19 3 1 2. + <_> + + <_> + 16 9 3 2 -1. + <_> + 17 10 1 2 3. + 1 + <_> + + <_> + 7 10 3 4 -1. + <_> + 6 11 3 2 2. + 1 + <_> + + <_> + 16 15 2 2 -1. + <_> + 16 15 1 1 2. + <_> + 17 16 1 1 2. + <_> + + <_> + 16 7 2 2 -1. + <_> + 16 7 1 1 2. + <_> + 17 8 1 1 2. + <_> + + <_> + 16 5 2 2 -1. + <_> + 16 5 1 1 2. + <_> + 17 6 1 1 2. + <_> + + <_> + 0 1 2 8 -1. + <_> + 0 1 1 4 2. + <_> + 1 5 1 4 2. + <_> + + <_> + 7 17 6 3 -1. + <_> + 9 17 2 3 3. + <_> + + <_> + 1 2 3 1 -1. + <_> + 2 2 1 1 3. + <_> + + <_> + 2 13 2 6 -1. + <_> + 2 13 1 3 2. + <_> + 3 16 1 3 2. + <_> + + <_> + 16 15 2 2 -1. + <_> + 16 15 1 1 2. + <_> + 17 16 1 1 2. + <_> + + <_> + 2 10 16 10 -1. + <_> + 2 15 16 5 2. + <_> + + <_> + 10 18 4 2 -1. + <_> + 12 18 2 2 2. + <_> + + <_> + 6 6 4 8 -1. + <_> + 7 6 2 8 2. + <_> + + <_> + 9 10 3 1 -1. + <_> + 10 11 1 1 3. + 1 + <_> + + <_> + 1 13 4 3 -1. + <_> + 3 13 2 3 2. + <_> + + <_> + 5 11 7 2 -1. + <_> + 5 12 7 1 2. + <_> + + <_> + 1 9 3 3 -1. + <_> + 1 10 3 1 3. + <_> + + <_> + 10 7 6 6 -1. + <_> + 12 9 2 2 9. + <_> + + <_> + 5 7 2 4 -1. + <_> + 4 8 2 2 2. + 1 + <_> + + <_> + 5 10 2 4 -1. + <_> + 5 10 1 2 2. + <_> + 6 12 1 2 2. + <_> + + <_> + 14 16 2 2 -1. + <_> + 14 16 1 1 2. + <_> + 15 17 1 1 2. + <_> + + <_> + 2 9 2 10 -1. + <_> + 2 9 1 5 2. + <_> + 3 14 1 5 2. + <_> + + <_> + 14 17 4 2 -1. + <_> + 14 18 4 1 2. + <_> + + <_> + 4 16 1 3 -1. + <_> + 3 17 1 1 3. + 1 + <_> + + <_> + 13 12 4 3 -1. + <_> + 14 13 2 3 2. + 1 + <_> + + <_> + 16 6 4 1 -1. + <_> + 17 7 2 1 2. + 1 + <_> + + <_> + 11 0 9 6 -1. + <_> + 11 3 9 3 2. + <_> + + <_> + 16 13 3 3 -1. + <_> + 15 14 3 1 3. + 1 + <_> + + <_> + 0 7 3 6 -1. + <_> + 1 9 1 2 9. + <_> + + <_> + 11 5 7 2 -1. + <_> + 11 6 7 1 2. + <_> + + <_> + 6 17 6 3 -1. + <_> + 6 18 6 1 3. + <_> + + <_> + 15 17 3 3 -1. + <_> + 16 18 1 1 9. + <_> + + <_> + 7 4 6 1 -1. + <_> + 9 4 2 1 3. + <_> + + <_> + 8 10 6 3 -1. + <_> + 10 10 2 3 3. + <_> + + <_> + 1 5 1 4 -1. + <_> + 1 6 1 2 2. + <_> + + <_> + 12 6 1 4 -1. + <_> + 12 8 1 2 2. + <_> + + <_> + 2 6 3 1 -1. + <_> + 3 7 1 1 3. + 1 + <_> + + <_> + 9 7 1 2 -1. + <_> + 9 8 1 1 2. + <_> + + <_> + 2 2 12 1 -1. + <_> + 8 2 6 1 2. + <_> + + <_> + 18 0 2 4 -1. + <_> + 18 0 1 4 2. + 1 + <_> + + <_> + 1 6 2 1 -1. + <_> + 1 6 1 1 2. + 1 + <_> + + <_> + 4 6 1 4 -1. + <_> + 4 7 1 2 2. + <_> + + <_> + 1 3 19 9 -1. + <_> + 1 6 19 3 3. + <_> + + <_> + 0 0 4 20 -1. + <_> + 0 5 4 10 2. + <_> + + <_> + 0 9 12 2 -1. + <_> + 6 9 6 2 2. + <_> + + <_> + 6 8 6 11 -1. + <_> + 8 8 2 11 3. + <_> + + <_> + 9 7 9 1 -1. + <_> + 12 7 3 1 3. + <_> + + <_> + 4 3 3 8 -1. + <_> + 5 3 1 8 3. + <_> + + <_> + 7 3 2 11 -1. + <_> + 8 3 1 11 2. + <_> + + <_> + 18 4 2 1 -1. + <_> + 18 4 1 1 2. + 1 + <_> + + <_> + 3 8 4 9 -1. + <_> + 5 8 2 9 2. + <_> + + <_> + 16 5 1 12 -1. + <_> + 12 9 1 4 3. + 1 + <_> + + <_> + 2 19 2 1 -1. + <_> + 3 19 1 1 2. + <_> + + <_> + 2 1 6 6 -1. + <_> + 5 1 3 6 2. + <_> + + <_> + 11 0 8 1 -1. + <_> + 15 0 4 1 2. + <_> + + <_> + 14 0 4 1 -1. + <_> + 16 0 2 1 2. + <_> + + <_> + 5 4 12 1 -1. + <_> + 11 4 6 1 2. + <_> + + <_> + 10 6 8 2 -1. + <_> + 10 6 4 1 2. + <_> + 14 7 4 1 2. + <_> + + <_> + 6 0 9 3 -1. + <_> + 5 1 9 1 3. + 1 + <_> + + <_> + 0 8 4 6 -1. + <_> + 2 8 2 6 2. + <_> + + <_> + 2 8 3 12 -1. + <_> + 3 8 1 12 3. + <_> + + <_> + 1 17 7 3 -1. + <_> + 1 18 7 1 3. + <_> + + <_> + 1 16 8 2 -1. + <_> + 1 17 8 1 2. + <_> + + <_> + 15 9 2 6 -1. + <_> + 15 9 1 3 2. + <_> + 16 12 1 3 2. + <_> + + <_> + 5 10 12 1 -1. + <_> + 8 10 6 1 2. + <_> + + <_> + 14 11 4 3 -1. + <_> + 15 11 2 3 2. + <_> + + <_> + 2 2 3 15 -1. + <_> + 3 7 1 5 9. + <_> + + <_> + 4 5 3 9 -1. + <_> + 5 8 1 3 9. + <_> + + <_> + 1 8 12 2 -1. + <_> + 7 8 6 2 2. + <_> + + <_> + 15 15 4 5 -1. + <_> + 17 15 2 5 2. + <_> + + <_> + 10 13 9 7 -1. + <_> + 13 13 3 7 3. + <_> + + <_> + 9 5 5 3 -1. + <_> + 8 6 5 1 3. + 1 + <_> + + <_> + 9 0 8 4 -1. + <_> + 9 2 8 2 2. + <_> + + <_> + 6 3 2 6 -1. + <_> + 4 5 2 2 3. + 1 + <_> + + <_> + 10 10 1 4 -1. + <_> + 10 11 1 2 2. + <_> + + <_> + 1 17 5 3 -1. + <_> + 1 18 5 1 3. + <_> + + <_> + 2 4 10 1 -1. + <_> + 2 4 5 1 2. + 1 + <_> + + <_> + 4 18 1 2 -1. + <_> + 4 19 1 1 2. + <_> + + <_> + 5 7 1 3 -1. + <_> + 5 8 1 1 3. + <_> + + <_> + 6 11 4 3 -1. + <_> + 6 11 2 3 2. + 1 + <_> + + <_> + 17 16 3 4 -1. + <_> + 17 18 3 2 2. + <_> + + <_> + 6 11 11 4 -1. + <_> + 6 12 11 2 2. + <_> + + <_> + 6 5 6 1 -1. + <_> + 8 5 2 1 3. + <_> + + <_> + 17 12 2 8 -1. + <_> + 17 16 2 4 2. + <_> + + <_> + 17 6 2 4 -1. + <_> + 17 8 2 2 2. + <_> + + <_> + 10 8 6 2 -1. + <_> + 10 9 6 1 2. + <_> + + <_> + 5 8 3 12 -1. + <_> + 5 12 3 4 3. + <_> + + <_> + 19 7 1 4 -1. + <_> + 19 9 1 2 2. + <_> + + <_> + 1 10 6 1 -1. + <_> + 3 10 2 1 3. + <_> + + <_> + 7 10 3 2 -1. + <_> + 7 10 3 1 2. + 1 + <_> + + <_> + 2 2 8 11 -1. + <_> + 6 2 4 11 2. + <_> + + <_> + 18 4 2 7 -1. + <_> + 18 4 1 7 2. + 1 + <_> + + <_> + 11 3 2 8 -1. + <_> + 11 7 2 4 2. + <_> + + <_> + 16 6 3 3 -1. + <_> + 15 7 3 1 3. + 1 + <_> + + <_> + 10 8 3 7 -1. + <_> + 11 9 1 7 3. + 1 + <_> + + <_> + 14 9 2 6 -1. + <_> + 15 9 1 6 2. + <_> + + <_> + 9 17 6 1 -1. + <_> + 11 17 2 1 3. + <_> + + <_> + 11 4 9 9 -1. + <_> + 14 7 3 3 9. + <_> + + <_> + 14 7 4 7 -1. + <_> + 15 7 2 7 2. + <_> + + <_> + 16 2 3 6 -1. + <_> + 17 2 1 6 3. + <_> + + <_> + 14 13 2 7 -1. + <_> + 15 13 1 7 2. + <_> + + <_> + 0 4 18 12 -1. + <_> + 6 8 6 4 9. + <_> + + <_> + 3 6 7 9 -1. + <_> + 3 9 7 3 3. + <_> + + <_> + 17 4 3 4 -1. + <_> + 18 4 1 4 3. + <_> + + <_> + 5 15 3 3 -1. + <_> + 6 15 1 3 3. + <_> + + <_> + 0 12 2 1 -1. + <_> + 1 12 1 1 2. + <_> + + <_> + 5 8 11 4 -1. + <_> + 5 9 11 2 2. + <_> + + <_> + 8 13 4 7 -1. + <_> + 9 13 2 7 2. + <_> + + <_> + 7 7 5 2 -1. + <_> + 7 8 5 1 2. + <_> + + <_> + 5 9 14 3 -1. + <_> + 5 10 14 1 3. + <_> + + <_> + 15 9 5 4 -1. + <_> + 15 10 5 2 2. + <_> + + <_> + 13 9 3 3 -1. + <_> + 12 10 3 1 3. + 1 + <_> + + <_> + 4 11 4 4 -1. + <_> + 3 12 4 2 2. + 1 + <_> + + <_> + 13 7 2 13 -1. + <_> + 14 7 1 13 2. + <_> + + <_> + 8 8 5 2 -1. + <_> + 8 9 5 1 2. + <_> + + <_> + 5 14 6 4 -1. + <_> + 7 14 2 4 3. + <_> + + <_> + 6 16 3 1 -1. + <_> + 7 17 1 1 3. + 1 + <_> + + <_> + 1 0 18 3 -1. + <_> + 7 1 6 1 9. + <_> + + <_> + 8 0 2 15 -1. + <_> + 8 5 2 5 3. + <_> + + <_> + 13 1 2 4 -1. + <_> + 13 2 2 2 2. + <_> + + <_> + 11 11 9 4 -1. + <_> + 11 12 9 2 2. + <_> + + <_> + 2 11 3 2 -1. + <_> + 2 11 3 1 2. + 1 + <_> + + <_> + 3 5 1 3 -1. + <_> + 2 6 1 1 3. + 1 + <_> + + <_> + 4 17 16 1 -1. + <_> + 8 17 8 1 2. + <_> + + <_> + 4 16 8 3 -1. + <_> + 8 16 4 3 2. + <_> + + <_> + 4 2 4 1 -1. + <_> + 6 2 2 1 2. + <_> + + <_> + 6 4 9 3 -1. + <_> + 6 5 9 1 3. + <_> + + <_> + 6 1 4 1 -1. + <_> + 7 1 2 1 2. + <_> + + <_> + 3 0 7 3 -1. + <_> + 2 1 7 1 3. + 1 + <_> + + <_> + 6 9 3 2 -1. + <_> + 7 9 1 2 3. + <_> + + <_> + 18 3 2 10 -1. + <_> + 18 3 1 5 2. + <_> + 19 8 1 5 2. + <_> + + <_> + 0 9 10 4 -1. + <_> + 0 9 5 2 2. + <_> + 5 11 5 2 2. + <_> + + <_> + 0 3 8 6 -1. + <_> + 0 3 4 3 2. + <_> + 4 6 4 3 2. + <_> + + <_> + 14 8 6 4 -1. + <_> + 14 10 6 2 2. + <_> + + <_> + 17 6 1 2 -1. + <_> + 17 6 1 1 2. + 1 + <_> + + <_> + 14 4 1 10 -1. + <_> + 14 9 1 5 2. + <_> + + <_> + 16 15 2 1 -1. + <_> + 16 15 1 1 2. + 1 + <_> + + <_> + 4 11 4 8 -1. + <_> + 5 11 2 8 2. + <_> + + <_> + 6 13 8 1 -1. + <_> + 8 13 4 1 2. + <_> + + <_> + 13 0 6 11 -1. + <_> + 16 0 3 11 2. + <_> + + <_> + 10 1 8 12 -1. + <_> + 10 4 8 6 2. + <_> + + <_> + 18 18 2 2 -1. + <_> + 18 18 1 1 2. + <_> + 19 19 1 1 2. + <_> + + <_> + 0 15 2 4 -1. + <_> + 0 16 2 2 2. + <_> + + <_> + 16 0 1 2 -1. + <_> + 16 1 1 1 2. + <_> + + <_> + 10 3 10 4 -1. + <_> + 10 3 5 2 2. + <_> + 15 5 5 2 2. + <_> + + <_> + 16 7 3 3 -1. + <_> + 15 8 3 1 3. + 1 + <_> + + <_> + 1 0 12 6 -1. + <_> + 4 0 6 6 2. + <_> + + <_> + 7 0 12 8 -1. + <_> + 10 0 6 8 2. + <_> + + <_> + 5 8 2 3 -1. + <_> + 5 8 1 3 2. + 1 + <_> + + <_> + 16 11 2 2 -1. + <_> + 16 11 1 1 2. + <_> + 17 12 1 1 2. + <_> + + <_> + 15 0 3 12 -1. + <_> + 16 0 1 12 3. + <_> + + <_> + 14 1 3 5 -1. + <_> + 15 2 1 5 3. + 1 + <_> + + <_> + 18 18 2 2 -1. + <_> + 18 18 1 1 2. + <_> + 19 19 1 1 2. + <_> + + <_> + 6 15 2 2 -1. + <_> + 6 15 1 1 2. + <_> + 7 16 1 1 2. + <_> + + <_> + 4 16 2 2 -1. + <_> + 4 16 1 1 2. + <_> + 5 17 1 1 2. + <_> + + <_> + 9 8 3 3 -1. + <_> + 8 9 3 1 3. + 1 + <_> + + <_> + 3 8 3 8 -1. + <_> + 3 10 3 4 2. + <_> + + <_> + 7 16 2 2 -1. + <_> + 7 16 1 1 2. + <_> + 8 17 1 1 2. + <_> + + <_> + 17 4 1 8 -1. + <_> + 17 4 1 4 2. + 1 + <_> + + <_> + 3 15 10 4 -1. + <_> + 3 15 5 2 2. + <_> + 8 17 5 2 2. + <_> + + <_> + 13 0 4 1 -1. + <_> + 15 0 2 1 2. + <_> + + <_> + 8 5 8 7 -1. + <_> + 8 5 4 7 2. + 1 + <_> + + <_> + 16 7 2 2 -1. + <_> + 16 7 1 1 2. + <_> + 17 8 1 1 2. + <_> + + <_> + 16 7 2 2 -1. + <_> + 16 7 1 1 2. + <_> + 17 8 1 1 2. + <_> + + <_> + 15 10 2 3 -1. + <_> + 14 11 2 1 3. + 1 + <_> + + <_> + 11 9 2 3 -1. + <_> + 11 10 2 1 3. + <_> + + <_> + 17 8 3 3 -1. + <_> + 17 9 3 1 3. + <_> + + <_> + 4 1 2 12 -1. + <_> + 4 4 2 6 2. + <_> + + <_> + 11 6 2 2 -1. + <_> + 11 6 1 1 2. + <_> + 12 7 1 1 2. + <_> + + <_> + 5 2 9 12 -1. + <_> + 5 8 9 6 2. + <_> + + <_> + 13 5 6 4 -1. + <_> + 13 5 3 2 2. + <_> + 16 7 3 2 2. + <_> + + <_> + 14 0 4 3 -1. + <_> + 13 1 4 1 3. + 1 + <_> + + <_> + 3 5 10 12 -1. + <_> + 3 5 5 6 2. + <_> + 8 11 5 6 2. + <_> + + <_> + 0 9 9 6 -1. + <_> + 3 11 3 2 9. + <_> + + <_> + 1 4 8 7 -1. + <_> + 5 4 4 7 2. + <_> + + <_> + 15 7 4 5 -1. + <_> + 16 7 2 5 2. + <_> + + <_> + 18 6 2 4 -1. + <_> + 19 6 1 4 2. + <_> + + <_> + 16 9 2 3 -1. + <_> + 16 9 1 3 2. + 1 + <_> + + <_> + 3 2 3 17 -1. + <_> + 4 2 1 17 3. + <_> + + <_> + 18 9 2 10 -1. + <_> + 18 14 2 5 2. + <_> + + <_> + 6 0 14 4 -1. + <_> + 5 1 14 2 2. + 1 + <_> + + <_> + 17 8 3 1 -1. + <_> + 18 9 1 1 3. + 1 + <_> + + <_> + 8 13 4 3 -1. + <_> + 9 13 2 3 2. + <_> + + <_> + 6 8 6 3 -1. + <_> + 5 9 6 1 3. + 1 + <_> + + <_> + 10 7 10 1 -1. + <_> + 10 7 5 1 2. + 1 + <_> + + <_> + 9 7 6 5 -1. + <_> + 12 7 3 5 2. + <_> + + <_> + 13 5 1 12 -1. + <_> + 13 5 1 6 2. + 1 + <_> + + <_> + 1 13 6 5 -1. + <_> + 4 13 3 5 2. + <_> + + <_> + 4 6 4 3 -1. + <_> + 5 7 2 3 2. + 1 + <_> + + <_> + 3 16 2 3 -1. + <_> + 4 16 1 3 2. + <_> + + <_> + 7 2 5 4 -1. + <_> + 7 2 5 2 2. + 1 + <_> + + <_> + 3 13 3 7 -1. + <_> + 4 13 1 7 3. + <_> + + <_> + 16 6 1 3 -1. + <_> + 16 7 1 1 3. + <_> + + <_> + 1 6 8 3 -1. + <_> + 5 6 4 3 2. + <_> + + <_> + 14 9 3 4 -1. + <_> + 13 10 3 2 2. + 1 + <_> + + <_> + 8 10 4 5 -1. + <_> + 9 10 2 5 2. + <_> + + <_> + 0 11 13 6 -1. + <_> + 0 14 13 3 2. + <_> + + <_> + 2 3 1 2 -1. + <_> + 2 3 1 1 2. + 1 + <_> + + <_> + 3 15 12 4 -1. + <_> + 6 15 6 4 2. + <_> + + <_> + 6 7 4 13 -1. + <_> + 7 7 2 13 2. + <_> + + <_> + 17 15 2 2 -1. + <_> + 17 15 1 1 2. + <_> + 18 16 1 1 2. + <_> + + <_> + 12 15 5 2 -1. + <_> + 12 16 5 1 2. + <_> + + <_> + 13 12 1 6 -1. + <_> + 13 14 1 2 3. + <_> + + <_> + 15 0 1 9 -1. + <_> + 12 3 1 3 3. + 1 + <_> + + <_> + 4 9 2 6 -1. + <_> + 4 9 1 3 2. + <_> + 5 12 1 3 2. + <_> + + <_> + 12 10 6 1 -1. + <_> + 14 10 2 1 3. + <_> + + <_> + 11 11 2 3 -1. + <_> + 11 11 1 3 2. + 1 + <_> + + <_> + 12 9 6 2 -1. + <_> + 14 9 2 2 3. + <_> + + <_> + 12 6 2 12 -1. + <_> + 12 6 2 6 2. + 1 + <_> + + <_> + 11 11 2 8 -1. + <_> + 11 11 1 4 2. + <_> + 12 15 1 4 2. + <_> + + <_> + 5 3 6 3 -1. + <_> + 7 3 2 3 3. + <_> + + <_> + 8 7 12 6 -1. + <_> + 8 9 12 2 3. + <_> + + <_> + 3 15 1 2 -1. + <_> + 3 15 1 1 2. + 1 + <_> + + <_> + 12 1 8 3 -1. + <_> + 14 1 4 3 2. + <_> + + <_> + 0 0 12 7 -1. + <_> + 4 0 4 7 3. + <_> + + <_> + 18 2 2 6 -1. + <_> + 18 2 1 3 2. + <_> + 19 5 1 3 2. + <_> + + <_> + 4 0 6 16 -1. + <_> + 4 0 3 8 2. + <_> + 7 8 3 8 2. + <_> + + <_> + 3 16 6 4 -1. + <_> + 5 16 2 4 3. + <_> + + <_> + 4 7 6 3 -1. + <_> + 3 8 6 1 3. + 1 + <_> + + <_> + 11 6 5 3 -1. + <_> + 10 7 5 1 3. + 1 + <_> + + <_> + 3 3 12 8 -1. + <_> + 3 7 12 4 2. + <_> + + <_> + 12 8 2 3 -1. + <_> + 12 9 2 1 3. + <_> + + <_> + 5 10 2 2 -1. + <_> + 6 10 1 2 2. + <_> + + <_> + 17 4 1 14 -1. + <_> + 17 4 1 7 2. + 1 + <_> + + <_> + 5 10 2 3 -1. + <_> + 5 10 1 3 2. + 1 + <_> + + <_> + 6 5 4 9 -1. + <_> + 7 5 2 9 2. + <_> + + <_> + 7 5 12 1 -1. + <_> + 7 5 6 1 2. + 1 + <_> + + <_> + 2 16 2 2 -1. + <_> + 2 16 1 1 2. + <_> + 3 17 1 1 2. + <_> + + <_> + 15 5 3 3 -1. + <_> + 16 6 1 3 3. + 1 + <_> + + <_> + 10 7 3 8 -1. + <_> + 11 8 1 8 3. + 1 + <_> + + <_> + 7 3 3 3 -1. + <_> + 7 4 3 1 3. + <_> + + <_> + 13 3 5 6 -1. + <_> + 13 5 5 2 3. + <_> + + <_> + 0 15 5 3 -1. + <_> + 0 16 5 1 3. + <_> + + <_> + 2 18 18 1 -1. + <_> + 11 18 9 1 2. + <_> + + <_> + 11 14 4 2 -1. + <_> + 13 14 2 2 2. + <_> + + <_> + 3 15 7 2 -1. + <_> + 3 16 7 1 2. + <_> + + <_> + 13 9 3 3 -1. + <_> + 12 10 3 1 3. + 1 + <_> + + <_> + 13 0 3 12 -1. + <_> + 14 1 1 12 3. + 1 + <_> + + <_> + 9 5 3 5 -1. + <_> + 10 5 1 5 3. + <_> + + <_> + 18 14 2 4 -1. + <_> + 18 14 1 2 2. + <_> + 19 16 1 2 2. + <_> + + <_> + 16 19 4 1 -1. + <_> + 18 19 2 1 2. + <_> + + <_> + 17 15 2 5 -1. + <_> + 18 15 1 5 2. + <_> + + <_> + 0 17 6 3 -1. + <_> + 0 18 6 1 3. + <_> + + <_> + 0 4 1 14 -1. + <_> + 0 11 1 7 2. + <_> + + <_> + 5 11 3 5 -1. + <_> + 6 12 1 5 3. + 1 + <_> + + <_> + 12 8 3 1 -1. + <_> + 13 8 1 1 3. + <_> + + <_> + 18 0 2 7 -1. + <_> + 19 0 1 7 2. + <_> + + <_> + 3 8 6 10 -1. + <_> + 3 13 6 5 2. + <_> + + <_> + 17 0 2 5 -1. + <_> + 18 0 1 5 2. + <_> + + <_> + 18 0 2 12 -1. + <_> + 18 0 2 6 2. + 1 + <_> + + <_> + 2 1 3 2 -1. + <_> + 2 1 3 1 2. + 1 + <_> + + <_> + 1 1 5 12 -1. + <_> + 1 4 5 6 2. + <_> + + <_> + 2 5 1 14 -1. + <_> + 2 12 1 7 2. + <_> + + <_> + 6 0 9 7 -1. + <_> + 9 0 3 7 3. + <_> + + <_> + 16 1 4 6 -1. + <_> + 16 1 2 3 2. + <_> + 18 4 2 3 2. + <_> + + <_> + 16 0 4 6 -1. + <_> + 16 0 2 3 2. + <_> + 18 3 2 3 2. + <_> + + <_> + 18 0 1 2 -1. + <_> + 18 1 1 1 2. + <_> + + <_> + 17 1 1 3 -1. + <_> + 17 2 1 1 3. + <_> + + <_> + 1 8 3 4 -1. + <_> + 1 9 3 2 2. + <_> + + <_> + 6 0 4 15 -1. + <_> + 8 0 2 15 2. + <_> + + <_> + 18 17 1 3 -1. + <_> + 18 18 1 1 3. + <_> + + <_> + 3 7 6 3 -1. + <_> + 5 8 2 1 9. + <_> + + <_> + 0 5 12 12 -1. + <_> + 4 5 4 12 3. + <_> + + <_> + 14 9 1 3 -1. + <_> + 13 10 1 1 3. + 1 + <_> + + <_> + 4 4 2 2 -1. + <_> + 4 5 2 1 2. + <_> + + <_> + 6 4 2 10 -1. + <_> + 6 9 2 5 2. + <_> + + <_> + 14 6 6 14 -1. + <_> + 14 6 3 7 2. + <_> + 17 13 3 7 2. + <_> + + <_> + 6 7 11 8 -1. + <_> + 6 11 11 4 2. + <_> + + <_> + 17 8 3 5 -1. + <_> + 18 9 1 5 3. + 1 + <_> + + <_> + 10 4 10 2 -1. + <_> + 10 4 5 1 2. + <_> + 15 5 5 1 2. + <_> + + <_> + 5 1 8 8 -1. + <_> + 5 5 8 4 2. + <_> + + <_> + 19 16 1 4 -1. + <_> + 19 18 1 2 2. + <_> + + <_> + 19 0 1 10 -1. + <_> + 19 5 1 5 2. + <_> + + <_> + 17 0 3 3 -1. + <_> + 17 1 3 1 3. + <_> + + <_> + 9 2 3 1 -1. + <_> + 10 2 1 1 3. + <_> + + <_> + 2 0 18 5 -1. + <_> + 8 0 6 5 3. + <_> + + <_> + 15 8 3 9 -1. + <_> + 15 11 3 3 3. + <_> + + <_> + 13 11 1 8 -1. + <_> + 13 13 1 4 2. + <_> + + <_> + 10 14 8 3 -1. + <_> + 14 14 4 3 2. + <_> + + <_> + 7 8 2 8 -1. + <_> + 7 8 1 4 2. + <_> + 8 12 1 4 2. + <_> + + <_> + 2 18 4 2 -1. + <_> + 2 18 2 1 2. + <_> + 4 19 2 1 2. + <_> + + <_> + 5 5 2 3 -1. + <_> + 4 6 2 1 3. + 1 + <_> + + <_> + 15 1 4 1 -1. + <_> + 17 1 2 1 2. + <_> + + <_> + 7 1 4 3 -1. + <_> + 6 2 4 1 3. + 1 + <_> + + <_> + 3 1 6 19 -1. + <_> + 6 1 3 19 2. + <_> + + <_> + 8 3 5 8 -1. + <_> + 8 7 5 4 2. + <_> + + <_> + 0 0 20 2 -1. + <_> + 0 0 10 1 2. + <_> + 10 1 10 1 2. + <_> + + <_> + 7 0 8 2 -1. + <_> + 7 0 4 1 2. + <_> + 11 1 4 1 2. + <_> + + <_> + 3 6 3 3 -1. + <_> + 4 7 1 1 9. + <_> + + <_> + 1 6 2 8 -1. + <_> + 1 6 1 4 2. + <_> + 2 10 1 4 2. + <_> + + <_> + 18 9 2 3 -1. + <_> + 17 10 2 1 3. + 1 + <_> + + <_> + 16 2 4 12 -1. + <_> + 13 5 4 6 2. + 1 + <_> + + <_> + 8 0 7 20 -1. + <_> + 8 5 7 10 2. + <_> + + <_> + 11 6 4 3 -1. + <_> + 11 7 4 1 3. + <_> + + <_> + 12 2 4 12 -1. + <_> + 12 8 4 6 2. + <_> + + <_> + 11 9 7 4 -1. + <_> + 11 10 7 2 2. + <_> + + <_> + 2 9 1 2 -1. + <_> + 2 10 1 1 2. + <_> + + <_> + 6 9 5 3 -1. + <_> + 6 10 5 1 3. + <_> + + <_> + 8 6 12 2 -1. + <_> + 12 6 4 2 3. + <_> + + <_> + 0 11 4 4 -1. + <_> + 0 11 2 2 2. + <_> + 2 13 2 2 2. + <_> + + <_> + 0 9 4 8 -1. + <_> + 0 9 2 4 2. + <_> + 2 13 2 4 2. + <_> + + <_> + 14 7 3 10 -1. + <_> + 14 7 3 5 2. + 1 + <_> + + <_> + 0 1 2 7 -1. + <_> + 1 1 1 7 2. + <_> + + <_> + 1 1 8 2 -1. + <_> + 1 1 4 1 2. + <_> + 5 2 4 1 2. + <_> + + <_> + 0 2 4 10 -1. + <_> + 2 2 2 10 2. + <_> + + <_> + 15 11 4 9 -1. + <_> + 16 11 2 9 2. + <_> + + <_> + 8 1 12 3 -1. + <_> + 8 1 6 3 2. + 1 + <_> + + <_> + 0 1 3 6 -1. + <_> + 1 1 1 6 3. + <_> + + <_> + 2 15 3 1 -1. + <_> + 3 15 1 1 3. + <_> + + <_> + 2 1 11 3 -1. + <_> + 2 2 11 1 3. + <_> + + <_> + 6 6 1 2 -1. + <_> + 6 7 1 1 2. + <_> + + <_> + 13 8 3 3 -1. + <_> + 14 9 1 3 3. + 1 + <_> + + <_> + 0 3 12 6 -1. + <_> + 4 5 4 2 9. + <_> + + <_> + 2 6 9 3 -1. + <_> + 5 6 3 3 3. + <_> + + <_> + 1 5 5 4 -1. + <_> + 1 6 5 2 2. + <_> + + <_> + 14 0 2 2 -1. + <_> + 15 0 1 2 2. + <_> + + <_> + 5 0 15 2 -1. + <_> + 10 0 5 2 3. + <_> + + <_> + 10 5 8 1 -1. + <_> + 14 5 4 1 2. + <_> + + <_> + 0 15 12 3 -1. + <_> + 4 16 4 1 9. + <_> + + <_> + 7 16 2 1 -1. + <_> + 8 16 1 1 2. + <_> + + <_> + 0 8 2 12 -1. + <_> + 1 8 1 12 2. + <_> + + <_> + 7 16 2 2 -1. + <_> + 7 16 1 1 2. + <_> + 8 17 1 1 2. + <_> + + <_> + 11 2 2 10 -1. + <_> + 11 2 1 5 2. + <_> + 12 7 1 5 2. + <_> + + <_> + 7 1 2 13 -1. + <_> + 8 1 1 13 2. + <_> + + <_> + 15 14 2 4 -1. + <_> + 14 15 2 2 2. + 1 + <_> + + <_> + 13 7 2 1 -1. + <_> + 13 7 1 1 2. + 1 + <_> + + <_> + 6 8 10 2 -1. + <_> + 6 8 5 1 2. + <_> + 11 9 5 1 2. + <_> + + <_> + 7 6 8 4 -1. + <_> + 7 7 8 2 2. + <_> + + <_> + 9 5 4 2 -1. + <_> + 9 6 4 1 2. + <_> + + <_> + 4 9 10 2 -1. + <_> + 4 9 5 1 2. + <_> + 9 10 5 1 2. + <_> + + <_> + 14 4 6 2 -1. + <_> + 16 6 2 2 3. + 1 + <_> + + <_> + 9 2 3 2 -1. + <_> + 10 3 1 2 3. + 1 + <_> + + <_> + 14 1 2 12 -1. + <_> + 15 1 1 12 2. + <_> + + <_> + 6 0 12 14 -1. + <_> + 10 0 4 14 3. + <_> + + <_> + 16 5 3 4 -1. + <_> + 16 5 3 2 2. + 1 + <_> + + <_> + 0 3 3 3 -1. + <_> + 1 4 1 1 9. + <_> + + <_> + 5 5 8 6 -1. + <_> + 9 5 4 6 2. + <_> + + <_> + 9 7 4 2 -1. + <_> + 10 7 2 2 2. + <_> + + <_> + 0 18 18 2 -1. + <_> + 0 19 18 1 2. + <_> + + <_> + 3 18 16 2 -1. + <_> + 3 19 16 1 2. + <_> + + <_> + 13 17 6 3 -1. + <_> + 13 18 6 1 3. + <_> + + <_> + 1 17 17 3 -1. + <_> + 1 18 17 1 3. + <_> + + <_> + 15 8 1 4 -1. + <_> + 15 9 1 2 2. + <_> + + <_> + 1 9 6 6 -1. + <_> + 1 9 3 3 2. + <_> + 4 12 3 3 2. + <_> + + <_> + 8 15 12 2 -1. + <_> + 12 15 4 2 3. + <_> + + <_> + 4 10 2 1 -1. + <_> + 5 10 1 1 2. + <_> + + <_> + 5 11 2 1 -1. + <_> + 5 11 1 1 2. + 1 + <_> + + <_> + 9 0 6 17 -1. + <_> + 11 0 2 17 3. + <_> + + <_> + 4 1 4 8 -1. + <_> + 4 1 2 4 2. + <_> + 6 5 2 4 2. + <_> + + <_> + 6 13 2 2 -1. + <_> + 6 13 1 2 2. + 1 + <_> + + <_> + 2 19 2 1 -1. + <_> + 3 19 1 1 2. + <_> + + <_> + 0 1 19 3 -1. + <_> + 0 2 19 1 3. + <_> + + <_> + 4 8 13 6 -1. + <_> + 4 11 13 3 2. + <_> + + <_> + 4 2 10 3 -1. + <_> + 4 3 10 1 3. + <_> + + <_> + 4 4 15 9 -1. + <_> + 9 7 5 3 9. + <_> + + <_> + 6 2 2 2 -1. + <_> + 6 2 2 1 2. + 1 + <_> + + <_> + 8 2 3 18 -1. + <_> + 8 11 3 9 2. + <_> + + <_> + 3 16 1 3 -1. + <_> + 3 17 1 1 3. + <_> + + <_> + 3 12 15 2 -1. + <_> + 3 13 15 1 2. + <_> + + <_> + 3 16 6 4 -1. + <_> + 3 16 3 2 2. + <_> + 6 18 3 2 2. + <_> + + <_> + 16 0 2 9 -1. + <_> + 17 0 1 9 2. + <_> + + <_> + 17 9 2 3 -1. + <_> + 17 10 2 1 3. + <_> + + <_> + 14 4 4 4 -1. + <_> + 13 5 4 2 2. + 1 + <_> + + <_> + 11 3 6 6 -1. + <_> + 11 3 3 3 2. + <_> + 14 6 3 3 2. + <_> + + <_> + 3 15 1 4 -1. + <_> + 3 17 1 2 2. + <_> + + <_> + 2 0 2 1 -1. + <_> + 3 0 1 1 2. + <_> + + <_> + 4 9 3 2 -1. + <_> + 5 9 1 2 3. + <_> + + <_> + 7 5 6 9 -1. + <_> + 9 8 2 3 9. + <_> + + <_> + 11 7 2 2 -1. + <_> + 11 7 1 2 2. + 1 + <_> + + <_> + 0 11 5 9 -1. + <_> + 0 14 5 3 3. + <_> + + <_> + 8 10 4 1 -1. + <_> + 9 10 2 1 2. + <_> + + <_> + 4 3 1 4 -1. + <_> + 3 4 1 2 2. + 1 + <_> + + <_> + 1 2 18 12 -1. + <_> + 1 2 9 6 2. + <_> + 10 8 9 6 2. + <_> + + <_> + 5 2 1 4 -1. + <_> + 5 2 1 2 2. + 1 + <_> + + <_> + 0 2 2 2 -1. + <_> + 1 2 1 2 2. + <_> + + <_> + 4 2 12 4 -1. + <_> + 4 3 12 2 2. + <_> + + <_> + 7 7 3 3 -1. + <_> + 8 7 1 3 3. + <_> + + <_> + 4 6 6 6 -1. + <_> + 6 6 2 6 3. + <_> + + <_> + 0 6 2 3 -1. + <_> + 0 7 2 1 3. + <_> + + <_> + 17 11 3 3 -1. + <_> + 17 12 3 1 3. + <_> + + <_> + 16 0 3 9 -1. + <_> + 17 0 1 9 3. + <_> + + <_> + 13 1 2 2 -1. + <_> + 14 1 1 2 2. + <_> + + <_> + 4 5 8 9 -1. + <_> + 8 5 4 9 2. + <_> + + <_> + 10 0 2 2 -1. + <_> + 11 0 1 2 2. + <_> + + <_> + 10 3 4 4 -1. + <_> + 10 3 2 2 2. + <_> + 12 5 2 2 2. + <_> + + <_> + 5 0 8 1 -1. + <_> + 7 2 4 1 2. + 1 + <_> + + <_> + 0 3 2 12 -1. + <_> + 0 3 1 6 2. + <_> + 1 9 1 6 2. + <_> + + <_> + 5 8 2 4 -1. + <_> + 4 9 2 2 2. + 1 + <_> + + <_> + 0 1 1 12 -1. + <_> + 0 4 1 6 2. + <_> + + <_> + 16 11 3 6 -1. + <_> + 16 14 3 3 2. + <_> + + <_> + 6 9 1 3 -1. + <_> + 5 10 1 1 3. + 1 + <_> + + <_> + 13 0 4 18 -1. + <_> + 14 0 2 18 2. + <_> + + <_> + 15 11 2 2 -1. + <_> + 16 11 1 2 2. + <_> + + <_> + 15 16 3 3 -1. + <_> + 15 17 3 1 3. + <_> + + <_> + 16 9 4 1 -1. + <_> + 17 10 2 1 2. + 1 + <_> + + <_> + 4 0 8 2 -1. + <_> + 4 0 4 1 2. + <_> + 8 1 4 1 2. + <_> + + <_> + 9 15 8 4 -1. + <_> + 11 15 4 4 2. + <_> + + <_> + 15 18 2 2 -1. + <_> + 15 18 1 1 2. + <_> + 16 19 1 1 2. + <_> + + <_> + 15 2 4 4 -1. + <_> + 15 2 2 2 2. + <_> + 17 4 2 2 2. + <_> + + <_> + 19 5 1 12 -1. + <_> + 19 8 1 6 2. + <_> + + <_> + 15 14 5 3 -1. + <_> + 15 15 5 1 3. + <_> + + <_> + 15 18 2 2 -1. + <_> + 16 18 1 2 2. + <_> + + <_> + 15 18 2 1 -1. + <_> + 16 18 1 1 2. + <_> + + <_> + 0 0 18 2 -1. + <_> + 0 0 9 1 2. + <_> + 9 1 9 1 2. + <_> + + <_> + 5 6 2 4 -1. + <_> + 5 7 2 2 2. + <_> + + <_> + 16 11 2 3 -1. + <_> + 15 12 2 1 3. + 1 + <_> + + <_> + 8 4 4 7 -1. + <_> + 9 5 2 7 2. + 1 + <_> + + <_> + 5 8 2 4 -1. + <_> + 5 9 2 2 2. + <_> + + <_> + 8 9 4 2 -1. + <_> + 9 10 2 2 2. + 1 + <_> + + <_> + 11 10 3 3 -1. + <_> + 12 10 1 3 3. + <_> + + <_> + 15 0 2 5 -1. + <_> + 16 0 1 5 2. + <_> + + <_> + 4 8 3 1 -1. + <_> + 5 9 1 1 3. + 1 + <_> + + <_> + 9 5 1 4 -1. + <_> + 9 7 1 2 2. + <_> + + <_> + 12 11 2 1 -1. + <_> + 13 11 1 1 2. + <_> + + <_> + 9 3 5 10 -1. + <_> + 9 8 5 5 2. + <_> + + <_> + 4 13 9 4 -1. + <_> + 4 15 9 2 2. + <_> + + <_> + 15 2 2 1 -1. + <_> + 16 2 1 1 2. + <_> + + <_> + 7 1 13 6 -1. + <_> + 7 3 13 2 3. + <_> + + <_> + 3 0 15 2 -1. + <_> + 3 1 15 1 2. + <_> + + <_> + 4 0 12 2 -1. + <_> + 4 1 12 1 2. + <_> + + <_> + 17 2 2 4 -1. + <_> + 17 3 2 2 2. + <_> + + <_> + 5 6 4 6 -1. + <_> + 5 6 2 3 2. + <_> + 7 9 2 3 2. + <_> + + <_> + 16 15 2 2 -1. + <_> + 16 15 1 1 2. + <_> + 17 16 1 1 2. + <_> + + <_> + 16 15 2 2 -1. + <_> + 16 15 1 1 2. + <_> + 17 16 1 1 2. + <_> + + <_> + 7 18 13 2 -1. + <_> + 7 19 13 1 2. + <_> + + <_> + 16 2 1 6 -1. + <_> + 16 4 1 2 3. + <_> + + <_> + 17 16 2 2 -1. + <_> + 17 16 1 1 2. + <_> + 18 17 1 1 2. + <_> + + <_> + 4 4 5 2 -1. + <_> + 4 4 5 1 2. + 1 + <_> + + <_> + 14 17 2 2 -1. + <_> + 14 17 1 1 2. + <_> + 15 18 1 1 2. + <_> + + <_> + 15 1 2 2 -1. + <_> + 15 1 2 1 2. + 1 + <_> + + <_> + 15 1 2 2 -1. + <_> + 15 1 1 1 2. + <_> + 16 2 1 1 2. + <_> + + <_> + 6 10 3 7 -1. + <_> + 7 10 1 7 3. + <_> + + <_> + 12 9 6 5 -1. + <_> + 15 9 3 5 2. + <_> + + <_> + 7 4 3 6 -1. + <_> + 7 4 3 3 2. + 1 + <_> + + <_> + 2 6 8 10 -1. + <_> + 2 11 8 5 2. + <_> + + <_> + 3 13 2 3 -1. + <_> + 3 14 2 1 3. + <_> + + <_> + 1 11 4 2 -1. + <_> + 1 12 4 1 2. + <_> + + <_> + 5 16 15 4 -1. + <_> + 5 17 15 2 2. + <_> + + <_> + 15 6 2 4 -1. + <_> + 15 7 2 2 2. + <_> + + <_> + 6 2 9 3 -1. + <_> + 6 3 9 1 3. + <_> + + <_> + 15 16 2 2 -1. + <_> + 15 16 1 1 2. + <_> + 16 17 1 1 2. + <_> + + <_> + 8 2 10 3 -1. + <_> + 8 3 10 1 3. + <_> + + <_> + 18 8 2 4 -1. + <_> + 17 9 2 2 2. + 1 + <_> + + <_> + 2 5 1 12 -1. + <_> + 2 11 1 6 2. + <_> + + <_> + 17 13 3 6 -1. + <_> + 18 15 1 2 9. + <_> + + <_> + 13 5 3 2 -1. + <_> + 14 5 1 2 3. + <_> + + <_> + 3 2 3 2 -1. + <_> + 4 2 1 2 3. + <_> + + <_> + 4 4 12 5 -1. + <_> + 7 4 6 5 2. + <_> + + <_> + 5 15 2 2 -1. + <_> + 5 15 1 1 2. + <_> + 6 16 1 1 2. + <_> + + <_> + 10 0 8 3 -1. + <_> + 12 0 4 3 2. + <_> + + <_> + 11 0 8 6 -1. + <_> + 13 0 4 6 2. + <_> + + <_> + 4 1 12 8 -1. + <_> + 10 1 6 8 2. + <_> + + <_> + 18 10 2 3 -1. + <_> + 17 11 2 1 3. + 1 + <_> + + <_> + 12 1 6 3 -1. + <_> + 14 1 2 3 3. + <_> + + <_> + 1 16 1 3 -1. + <_> + 1 17 1 1 3. + <_> + + <_> + 10 9 1 2 -1. + <_> + 10 10 1 1 2. + <_> + + <_> + 19 13 1 4 -1. + <_> + 19 13 1 2 2. + 1 + <_> + + <_> + 9 6 3 6 -1. + <_> + 9 9 3 3 2. + <_> + + <_> + 2 9 18 10 -1. + <_> + 2 9 9 5 2. + <_> + 11 14 9 5 2. + <_> + + <_> + 11 4 5 6 -1. + <_> + 11 4 5 3 2. + 1 + <_> + + <_> + 17 0 2 4 -1. + <_> + 17 1 2 2 2. + <_> + + <_> + 2 3 3 4 -1. + <_> + 3 3 1 4 3. + <_> + + <_> + 19 0 1 10 -1. + <_> + 19 5 1 5 2. + <_> + + <_> + 1 7 6 6 -1. + <_> + 1 7 3 3 2. + <_> + 4 10 3 3 2. + <_> + + <_> + 15 2 3 12 -1. + <_> + 11 6 3 4 3. + 1 + <_> + + <_> + 3 9 7 6 -1. + <_> + 3 11 7 2 3. + <_> + + <_> + 8 8 1 3 -1. + <_> + 8 9 1 1 3. + <_> + + <_> + 4 13 6 6 -1. + <_> + 4 15 6 2 3. + <_> + + <_> + 1 13 4 3 -1. + <_> + 1 14 4 1 3. + <_> + + <_> + 7 1 4 4 -1. + <_> + 7 1 2 2 2. + <_> + 9 3 2 2 2. + <_> + + <_> + 2 4 2 2 -1. + <_> + 2 4 1 1 2. + <_> + 3 5 1 1 2. + <_> + + <_> + 2 4 16 3 -1. + <_> + 2 5 16 1 3. + <_> + + <_> + 0 6 17 3 -1. + <_> + 0 7 17 1 3. + <_> + + <_> + 5 6 10 3 -1. + <_> + 5 7 10 1 3. + diff --git a/venv/lib/python3.11/site-packages/cv2/data/haarcascade_frontalcatface.xml b/venv/lib/python3.11/site-packages/cv2/data/haarcascade_frontalcatface.xml new file mode 100644 index 0000000000000000000000000000000000000000..1c38a8bab222c50f2962713930b7e971c6cc3abc --- /dev/null +++ b/venv/lib/python3.11/site-packages/cv2/data/haarcascade_frontalcatface.xml @@ -0,0 +1,14382 @@ + + + + + BOOST + HAAR + 24 + 24 + + GAB + 9.9500000476837158e-01 + 5.0000000000000000e-01 + 9.4999999999999996e-01 + 1 + 100 + + 0 + 1 + BASIC + 20 + + + <_> + 16 + -1.4806525707244873e+00 + + <_> + + 0 -1 472 -1.5126220881938934e-02 + + 7.5887596607208252e-01 -3.4230688214302063e-01 + <_> + + 0 -1 839 3.9337221533060074e-03 + + -3.3288389444351196e-01 5.2361363172531128e-01 + <_> + + 0 -1 858 -1.5044892206788063e-02 + + 5.5565774440765381e-01 -2.2505992650985718e-01 + <_> + + 0 -1 387 -1.2927042320370674e-02 + + 5.7442700862884521e-01 -1.9708566367626190e-01 + <_> + + 0 -1 137 5.5960696190595627e-03 + + -3.0430641770362854e-01 4.0241482853889465e-01 + <_> + + 0 -1 207 1.5758406370878220e-02 + + -1.9767063856124878e-01 4.5033392310142517e-01 + <_> + + 0 -1 678 2.4262722581624985e-02 + + -1.6931040585041046e-01 5.9707510471343994e-01 + <_> + + 0 -1 267 -3.5242564976215363e-02 + + 6.5973556041717529e-01 -1.4519356191158295e-01 + <_> + + 0 -1 687 2.6568008586764336e-02 + + -1.3476610183715820e-01 5.4296624660491943e-01 + <_> + + 0 -1 228 4.7154121100902557e-02 + + -1.7337851226329803e-01 4.6071702241897583e-01 + <_> + + 0 -1 925 -5.3081759251654148e-03 + + 5.4976856708526611e-01 -1.1913410574197769e-01 + <_> + + 0 -1 608 5.3415738046169281e-02 + + -1.2382411211729050e-01 6.3972741365432739e-01 + <_> + + 0 -1 671 -3.0798995867371559e-03 + + -8.2048600912094116e-01 1.0249497741460800e-01 + <_> + + 0 -1 676 -2.3766520898789167e-03 + + -7.0665025711059570e-01 6.7025005817413330e-02 + <_> + + 0 -1 180 1.1965663870796561e-03 + + -2.4753804504871368e-01 3.0198124051094055e-01 + <_> + + 0 -1 830 -4.2106406763195992e-03 + + 3.8455343246459961e-01 -1.8334107100963593e-01 + + <_> + 26 + -1.4618960618972778e+00 + + <_> + + 0 -1 725 1.0133055038750172e-02 + + -2.8207325935363770e-01 6.2703561782836914e-01 + <_> + + 0 -1 356 3.8468956947326660e-02 + + -1.4483113586902618e-01 7.4971008300781250e-01 + <_> + + 0 -1 2 -3.7523733917623758e-03 + + 4.2959973216056824e-01 -2.1445912122726440e-01 + <_> + + 0 -1 844 9.9978316575288773e-04 + + -1.9259409606456757e-01 4.2325544357299805e-01 + <_> + + 0 -1 387 -1.6786376014351845e-02 + + 5.0582861900329590e-01 -1.8607729673385620e-01 + <_> + + 0 -1 208 3.0330579727888107e-02 + + -2.1100421249866486e-01 4.2819553613662720e-01 + <_> + + 0 -1 206 1.5150709077715874e-02 + + -2.1129198372364044e-01 3.6263525485992432e-01 + <_> + + 0 -1 451 -3.6349350120872259e-03 + + 3.9500275254249573e-01 -1.8650630116462708e-01 + <_> + + 0 -1 270 -7.2061517275869846e-03 + + -7.2816300392150879e-01 1.1153221875429153e-01 + <_> + + 0 -1 866 -2.0212728530168533e-02 + + 5.6296736001968384e-01 -1.2056054919958115e-01 + <_> + + 0 -1 265 2.5640423409640789e-03 + + -2.3753854632377625e-01 3.5794413089752197e-01 + <_> + + 0 -1 230 -6.2726587057113647e-03 + + -6.7750877141952515e-01 1.2570948898792267e-01 + <_> + + 0 -1 126 7.8710336238145828e-03 + + 6.9211356341838837e-02 -7.6449161767959595e-01 + <_> + + 0 -1 306 5.9134580194950104e-02 + + -1.7324967682361603e-01 3.3361187577247620e-01 + <_> + + 0 -1 185 -2.8770491480827332e-03 + + 3.6101511120796204e-01 -1.6122241318225861e-01 + <_> + + 0 -1 388 -5.7046953588724136e-03 + + -6.7659336328506470e-01 8.4153175354003906e-02 + <_> + + 0 -1 13 -7.8070178627967834e-02 + + 6.0763663053512573e-01 -1.1037797480821609e-01 + <_> + + 0 -1 321 6.5858578309416771e-03 + + 9.3060031533241272e-02 -7.0068693161010742e-01 + <_> + + 0 -1 796 -2.0920131355524063e-03 + + 2.8173315525054932e-01 -1.8406434357166290e-01 + <_> + + 0 -1 578 -2.1252598613500595e-02 + + 3.9672371745109558e-01 -1.5127600729465485e-01 + <_> + + 0 -1 770 -3.2937981188297272e-02 + + 3.9487251639366150e-01 -1.3228580355644226e-01 + <_> + + 0 -1 1016 4.9491915851831436e-03 + + 1.1234261840581894e-01 -4.7414371371269226e-01 + <_> + + 0 -1 215 3.4271054901182652e-03 + + 7.8623600304126740e-02 -5.7828009128570557e-01 + <_> + + 0 -1 200 -6.0859560035169125e-03 + + -5.0091904401779175e-01 9.1926425695419312e-02 + <_> + + 0 -1 990 1.2116413563489914e-02 + + -1.7154470086097717e-01 2.6759135723114014e-01 + <_> + + 0 -1 456 8.2814376801252365e-03 + + -1.2938241660594940e-01 3.5665917396545410e-01 + + <_> + 26 + -1.4103703498840332e+00 + + <_> + + 0 -1 532 -1.0988018475472927e-02 + + 6.4358645677566528e-01 -2.3149165511131287e-01 + <_> + + 0 -1 750 -7.8163212165236473e-03 + + 5.4850798845291138e-01 -1.7881108820438385e-01 + <_> + + 0 -1 289 7.1337133646011353e-02 + + -1.7631703615188599e-01 4.5873588323593140e-01 + <_> + + 0 -1 549 5.2656695246696472e-02 + + -1.3836050033569336e-01 5.6253266334533691e-01 + <_> + + 0 -1 8 1.5166129916906357e-02 + + -2.0990008115768433e-01 4.0483391284942627e-01 + <_> + + 0 -1 970 -1.4538960531353951e-03 + + 3.3692672848701477e-01 -2.1745139360427856e-01 + <_> + + 0 -1 875 1.1136244982481003e-02 + + -1.5003634989261627e-01 5.2208083868026733e-01 + <_> + + 0 -1 925 -3.3187635708600283e-03 + + 3.9145255088806152e-01 -1.9418042898178101e-01 + <_> + + 0 -1 485 4.9791105091571808e-02 + + -1.0192432254552841e-01 5.4612094163894653e-01 + <_> + + 0 -1 828 4.3476112186908722e-02 + + -1.2768918275833130e-01 5.0825607776641846e-01 + <_> + + 0 -1 719 -2.8149634599685669e-03 + + -7.0453292131423950e-01 1.2536850571632385e-01 + <_> + + 0 -1 846 1.6101204091683030e-03 + + -2.6965174078941345e-01 2.2737979888916016e-01 + <_> + + 0 -1 715 -1.5866891480982304e-03 + + -6.6891485452651978e-01 1.1686278134584427e-01 + <_> + + 0 -1 677 -3.2338392920792103e-03 + + -6.7284232378005981e-01 6.6228114068508148e-02 + <_> + + 0 -1 479 -9.9909156560897827e-03 + + 3.6961549520492554e-01 -1.5993835031986237e-01 + <_> + + 0 -1 350 4.8409838229417801e-02 + + -1.0068884491920471e-01 5.0648134946823120e-01 + <_> + + 0 -1 273 8.0585200339555740e-03 + + -1.6782654821872711e-01 3.5382467508316040e-01 + <_> + + 0 -1 338 -1.1718695983290672e-02 + + 4.3832498788833618e-01 -1.2780784070491791e-01 + <_> + + 0 -1 594 5.7147610932588577e-03 + + 7.5814604759216309e-02 -7.2597140073776245e-01 + <_> + + 0 -1 603 -2.0917234942317009e-03 + + -6.0916984081268311e-01 8.4811411798000336e-02 + <_> + + 0 -1 855 5.7651996612548828e-03 + + -1.9243443012237549e-01 2.8976503014564514e-01 + <_> + + 0 -1 565 -2.8093710541725159e-02 + + 5.4229170083999634e-01 -1.0005526244640350e-01 + <_> + + 0 -1 136 8.9291334152221680e-03 + + 8.3808921277523041e-02 -6.3219338655471802e-01 + <_> + + 0 -1 268 -5.1958961412310600e-03 + + -5.4964137077331543e-01 7.9588212072849274e-02 + <_> + + 0 -1 95 9.2318728566169739e-03 + + -1.2818163633346558e-01 4.2056322097778320e-01 + <_> + + 0 -1 964 -2.0556427538394928e-02 + + 3.2048463821411133e-01 -1.3858842849731445e-01 + + <_> + 35 + -1.4265209436416626e+00 + + <_> + + 0 -1 683 1.8821602687239647e-02 + + -1.7807419598102570e-01 5.9040957689285278e-01 + <_> + + 0 -1 471 -9.5066539943218231e-03 + + 5.0587177276611328e-01 -1.7767964303493500e-01 + <_> + + 0 -1 884 1.3296608813107014e-03 + + -1.6886346042156219e-01 3.6326614022254944e-01 + <_> + + 0 -1 473 3.5266026854515076e-02 + + -1.1824090778827667e-01 5.8951085805892944e-01 + <_> + + 0 -1 340 1.7804209142923355e-02 + + -1.4211210608482361e-01 5.1762068271636963e-01 + <_> + + 0 -1 1001 4.7029324923641980e-04 + + -2.4296821653842926e-01 2.5087893009185791e-01 + <_> + + 0 -1 182 7.1838246658444405e-03 + + 9.2609666287899017e-02 -6.7694115638732910e-01 + <_> + + 0 -1 390 -5.7565318420529366e-03 + + -7.3053181171417236e-01 8.2794629037380219e-02 + <_> + + 0 -1 203 2.0850602537393570e-02 + + -1.7353208363056183e-01 3.3287450671195984e-01 + <_> + + 0 -1 805 3.1848326325416565e-03 + + -2.0941653847694397e-01 2.6059800386428833e-01 + <_> + + 0 -1 234 -7.5752258300781250e-02 + + 5.1588213443756104e-01 -1.0057342052459717e-01 + <_> + + 0 -1 5 2.8725115582346916e-02 + + -1.5012685954570770e-01 4.1436919569969177e-01 + <_> + + 0 -1 175 -1.7325732856988907e-02 + + 3.8678762316703796e-01 -1.3586300611495972e-01 + <_> + + 0 -1 47 -3.2187681645154953e-03 + + -5.1590150594711304e-01 1.1511231958866119e-01 + <_> + + 0 -1 1020 -6.1595086008310318e-03 + + -7.0271849632263184e-01 5.5648274719715118e-02 + <_> + + 0 -1 768 -8.7264683097600937e-03 + + 2.6393634080886841e-01 -1.8446569144725800e-01 + <_> + + 0 -1 57 8.1868227571249008e-03 + + 8.0838531255722046e-02 -5.5512112379074097e-01 + <_> + + 0 -1 139 -7.8468751162290573e-03 + + -5.7306796312332153e-01 8.3454042673110962e-02 + <_> + + 0 -1 665 2.9962153639644384e-03 + + 6.2645487487316132e-02 -5.8123600482940674e-01 + <_> + + 0 -1 414 -4.3795984238386154e-03 + + 2.2211562097072601e-01 -1.9649308919906616e-01 + <_> + + 0 -1 908 -6.3172029331326485e-03 + + -6.6067039966583252e-01 6.4884319901466370e-02 + <_> + + 0 -1 465 1.3302030274644494e-03 + + -1.0496762394905090e-01 4.2326071858406067e-01 + <_> + + 0 -1 951 -4.3333107605576515e-03 + + -4.9972066283226013e-01 8.7225496768951416e-02 + <_> + + 0 -1 244 -3.5346355289220810e-03 + + 3.0818134546279907e-01 -1.4765550196170807e-01 + <_> + + 0 -1 256 -8.7353587150573730e-03 + + -6.5214675664901733e-01 7.1881487965583801e-02 + <_> + + 0 -1 491 -1.5620354562997818e-02 + + 3.5721915960311890e-01 -1.1427627503871918e-01 + <_> + + 0 -1 778 -3.9745438843965530e-03 + + -6.6090464591979980e-01 6.2067609280347824e-02 + <_> + + 0 -1 689 -6.7040426656603813e-03 + + 2.7337384223937988e-01 -1.4059108495712280e-01 + <_> + + 0 -1 125 3.5359347239136696e-03 + + 6.1201948672533035e-02 -6.0017114877700806e-01 + <_> + + 0 -1 118 6.0818484053015709e-03 + + -1.5247075259685516e-01 2.4383027851581573e-01 + <_> + + 0 -1 880 -7.2771648410707712e-04 + + 3.0065426230430603e-01 -1.2037902325391769e-01 + <_> + + 0 -1 643 4.6168416738510132e-03 + + 5.5311698466539383e-02 -7.5343269109725952e-01 + <_> + + 0 -1 676 2.5280299596488476e-03 + + 5.7204965502023697e-02 -5.3993463516235352e-01 + <_> + + 0 -1 878 1.5074670314788818e-02 + + -9.6106290817260742e-02 3.9084190130233765e-01 + <_> + + 0 -1 831 -8.4932018071413040e-03 + + 3.4130987524986267e-01 -1.4117397367954254e-01 + + <_> + 37 + -1.3977209329605103e+00 + + <_> + + 0 -1 794 -2.5338861159980297e-03 + + 5.7321399450302124e-01 -2.0396080613136292e-01 + <_> + + 0 -1 588 -6.5112011507153511e-03 + + 3.7378740310668945e-01 -2.5049039721488953e-01 + <_> + + 0 -1 238 1.6318978741765022e-03 + + -2.1858637034893036e-01 3.5027471184730530e-01 + <_> + + 0 -1 189 3.3452022820711136e-02 + + -1.4827065169811249e-01 4.7324529290199280e-01 + <_> + + 0 -1 192 -1.1114047840237617e-02 + + 4.1662359237670898e-01 -2.1660456061363220e-01 + <_> + + 0 -1 527 -1.2996498262509704e-03 + + 4.7613915801048279e-01 -1.6742442548274994e-01 + <_> + + 0 -1 648 -3.2986078877002001e-03 + + -6.7662662267684937e-01 8.6653761565685272e-02 + <_> + + 0 -1 4 6.6831205040216446e-03 + + -2.0158858597278595e-01 2.6189696788787842e-01 + <_> + + 0 -1 482 2.1282089874148369e-03 + + -1.1156299710273743e-01 4.0097075700759888e-01 + <_> + + 0 -1 682 -9.0472139418125153e-03 + + 3.2078295946121216e-01 -1.6775439679622650e-01 + <_> + + 0 -1 226 -5.3160609677433968e-03 + + -5.5567348003387451e-01 1.2950280308723450e-01 + <_> + + 0 -1 205 7.9724024981260300e-03 + + -2.1466700732707977e-01 2.2514854371547699e-01 + <_> + + 0 -1 920 -2.1980279125273228e-03 + + 2.8711742162704468e-01 -1.6561916470527649e-01 + <_> + + 0 -1 312 5.3897619247436523e-02 + + -1.4823001623153687e-01 3.4951418638229370e-01 + <_> + + 0 -1 13 -7.6241128146648407e-02 + + 6.0101884603500366e-01 -8.8328786194324493e-02 + <_> + + 0 -1 129 -8.3202747628092766e-03 + + -7.2828358411788940e-01 8.7956465780735016e-02 + <_> + + 0 -1 401 5.3778752684593201e-02 + + -1.0316975414752960e-01 5.0247919559478760e-01 + <_> + + 0 -1 416 -1.2401826679706573e-02 + + 2.7538898587226868e-01 -1.5569972991943359e-01 + <_> + + 0 -1 986 1.3729928061366081e-02 + + -1.3373774290084839e-01 3.0739122629165649e-01 + <_> + + 0 -1 905 -2.2788168862462044e-03 + + 2.2555501759052277e-01 -1.9497908651828766e-01 + <_> + + 0 -1 667 3.6288173869252205e-03 + + 4.8981692641973495e-02 -7.9248648881912231e-01 + <_> + + 0 -1 85 5.2453137934207916e-02 + + -1.3389803469181061e-01 3.2700663805007935e-01 + <_> + + 0 -1 821 3.1685843132436275e-03 + + -1.4415425062179565e-01 2.8044179081916809e-01 + <_> + + 0 -1 193 8.9051481336355209e-03 + + 6.1227656900882721e-02 -7.0277702808380127e-01 + <_> + + 0 -1 837 -1.3966157566756010e-03 + + 4.2409667372703552e-01 -1.0888981819152832e-01 + <_> + + 0 -1 271 -6.7695947363972664e-03 + + -5.1588076353073120e-01 8.3254821598529816e-02 + <_> + + 0 -1 404 2.2157761268317699e-03 + + -1.3696527481079102e-01 2.8638482093811035e-01 + <_> + + 0 -1 619 2.7808796148747206e-03 + + 7.1316704154014587e-02 -6.0322999954223633e-01 + <_> + + 0 -1 515 4.5836241915822029e-03 + + -1.2486589699983597e-01 3.2929363846778870e-01 + <_> + + 0 -1 1042 -5.1459800451993942e-03 + + -5.3781992197036743e-01 7.6631128787994385e-02 + <_> + + 0 -1 1043 2.4449056945741177e-03 + + 8.5920669138431549e-02 -4.0670683979988098e-01 + <_> + + 0 -1 71 -2.7756379917263985e-02 + + 3.7449231743812561e-01 -1.0538945347070694e-01 + <_> + + 0 -1 809 -1.8243372440338135e-02 + + 3.4281516075134277e-01 -9.9502928555011749e-02 + <_> + + 0 -1 372 3.8416781462728977e-03 + + 7.3987491428852081e-02 -4.8903524875640869e-01 + <_> + + 0 -1 376 -1.2322908267378807e-02 + + 2.1036790311336517e-01 -1.5852701663970947e-01 + <_> + + 0 -1 391 -4.1760304011404514e-03 + + 3.1288132071495056e-01 -1.1697492748498917e-01 + <_> + + 0 -1 859 -2.8026863932609558e-02 + + 3.3711743354797363e-01 -1.2294299900531769e-01 + + <_> + 42 + -1.3775455951690674e+00 + + <_> + + 0 -1 725 1.3382414355874062e-02 + + -1.7922241985797882e-01 5.0368404388427734e-01 + <_> + + 0 -1 967 1.9935802556574345e-03 + + -2.5249919295310974e-01 3.5295018553733826e-01 + <_> + + 0 -1 891 -1.3569685397669673e-03 + + 4.1222429275512695e-01 -1.8140394985675812e-01 + <_> + + 0 -1 911 2.5418698787689209e-03 + + -2.3195247352123260e-01 2.5945317745208740e-01 + <_> + + 0 -1 362 1.1867792345583439e-03 + + -1.1509010195732117e-01 4.0095508098602295e-01 + <_> + + 0 -1 280 -4.0491363033652306e-03 + + -7.6275551319122314e-01 8.0663219094276428e-02 + <_> + + 0 -1 264 2.4698153138160706e-02 + + -9.9053405225276947e-02 4.6469488739967346e-01 + <_> + + 0 -1 832 1.3041709549725056e-02 + + -1.3049817085266113e-01 4.7066822648048401e-01 + <_> + + 0 -1 257 -2.0927201956510544e-02 + + -7.2363191843032837e-01 7.5520738959312439e-02 + <_> + + 0 -1 41 1.6108792275190353e-02 + + 8.9385204017162323e-02 -5.0678378343582153e-01 + <_> + + 0 -1 872 -8.6308103054761887e-03 + + 3.1878158450126648e-01 -1.3526505231857300e-01 + <_> + + 0 -1 347 1.2651814613491297e-03 + + -1.2344279885292053e-01 4.0271109342575073e-01 + <_> + + 0 -1 735 -3.0170590616762638e-03 + + -5.6960099935531616e-01 7.0437252521514893e-02 + <_> + + 0 -1 538 -3.5529488231986761e-03 + + 2.0624065399169922e-01 -1.8426756560802460e-01 + <_> + + 0 -1 735 2.8021419420838356e-03 + + 7.2748780250549316e-02 -5.3796368837356567e-01 + <_> + + 0 -1 447 -9.9331419914960861e-04 + + 2.4827398359775543e-01 -1.5866567194461823e-01 + <_> + + 0 -1 440 -7.1950745768845081e-03 + + -5.0943744182586670e-01 7.3041573166847229e-02 + <_> + + 0 -1 906 -8.7737981230020523e-03 + + 2.4838714301586151e-01 -1.5162147581577301e-01 + <_> + + 0 -1 608 5.6750684976577759e-02 + + -8.4416143596172333e-02 4.4269657135009766e-01 + <_> + + 0 -1 772 1.8110256642103195e-03 + + -1.7787678539752960e-01 2.2753682732582092e-01 + <_> + + 0 -1 117 6.1733853071928024e-02 + + -1.4452947676181793e-01 2.6785543560981750e-01 + <_> + + 0 -1 718 1.7999792471528053e-03 + + 5.3869031369686127e-02 -7.0216673612594604e-01 + <_> + + 0 -1 718 -1.7839821521192789e-03 + + -7.3474282026290894e-01 4.3809492141008377e-02 + <_> + + 0 -1 795 -2.2269869223237038e-03 + + 2.5256577134132385e-01 -1.4765015244483948e-01 + <_> + + 0 -1 845 7.7408831566572189e-04 + + -1.6781617701053619e-01 2.5267890095710754e-01 + <_> + + 0 -1 710 9.6316616982221603e-03 + + 5.8525908738374710e-02 -6.3684886693954468e-01 + <_> + + 0 -1 181 -1.1892126873135567e-02 + + 2.6363542675971985e-01 -1.4106634259223938e-01 + <_> + + 0 -1 326 4.8407237976789474e-02 + + -1.0837136209011078e-01 3.6018091440200806e-01 + <_> + + 0 -1 572 -1.0315750539302826e-01 + + -7.3309695720672607e-01 6.4976803958415985e-02 + <_> + + 0 -1 415 -2.6544972788542509e-03 + + 2.7709859609603882e-01 -1.3764445483684540e-01 + <_> + + 0 -1 1033 -4.8850756138563156e-03 + + -5.0026285648345947e-01 6.8797707557678223e-02 + <_> + + 0 -1 299 -1.1310833506286144e-02 + + 2.5653550028800964e-01 -1.3755545020103455e-01 + <_> + + 0 -1 152 -3.8394361734390259e-02 + + 2.6404461264610291e-01 -1.3614650070667267e-01 + <_> + + 0 -1 486 5.8298893272876740e-03 + + 6.0382172465324402e-02 -5.9578329324722290e-01 + <_> + + 0 -1 393 2.2631133906543255e-03 + + -1.0302778333425522e-01 3.4782779216766357e-01 + <_> + + 0 -1 629 -1.8709234893321991e-02 + + -7.6758313179016113e-01 4.6181913465261459e-02 + <_> + + 0 -1 67 3.7359733134508133e-02 + + -1.3407541811466217e-01 2.5607112050056458e-01 + <_> + + 0 -1 504 -5.3099328652024269e-03 + + -6.9016355276107788e-01 4.7683756798505783e-02 + <_> + + 0 -1 527 -1.5396323287859559e-03 + + 3.7874689698219299e-01 -9.2663109302520752e-02 + <_> + + 0 -1 470 -2.6333518326282501e-03 + + 2.9358446598052979e-01 -1.2460695207118988e-01 + <_> + + 0 -1 171 1.6515964642167091e-02 + + -1.4082725346088409e-01 2.3664724826812744e-01 + <_> + + 0 -1 681 -4.4658156111836433e-03 + + -5.9253305196762085e-01 5.5994171649217606e-02 + + <_> + 50 + -1.3835698366165161e+00 + + <_> + + 0 -1 898 1.5156399458646774e-03 + + -1.0024535655975342e-01 5.8807808160781860e-01 + <_> + + 0 -1 802 -3.5168868489563465e-03 + + 4.0972998738288879e-01 -1.6088742017745972e-01 + <_> + + 0 -1 180 2.3035616613924503e-03 + + -1.8985269963741302e-01 2.9883998632431030e-01 + <_> + + 0 -1 254 4.5840561389923096e-02 + + -1.4383240044116974e-01 4.7528687119483948e-01 + <_> + + 0 -1 405 5.5156396701931953e-03 + + -1.7356806993484497e-01 3.4583050012588501e-01 + <_> + + 0 -1 436 3.9731184951961040e-03 + + 7.8886620700359344e-02 -5.6442558765411377e-01 + <_> + + 0 -1 412 -5.6995991617441177e-03 + + -4.7576662898063660e-01 9.4875656068325043e-02 + <_> + + 0 -1 539 -9.6501735970377922e-03 + + 2.3381656408309937e-01 -1.8310526013374329e-01 + <_> + + 0 -1 209 6.1656545847654343e-02 + + -1.4697165787220001e-01 3.6247691512107849e-01 + <_> + + 0 -1 398 1.1418928205966949e-01 + + -8.8033527135848999e-02 4.4633501768112183e-01 + <_> + + 0 -1 3 -1.1903396807610989e-02 + + 3.3496665954589844e-01 -1.2121009081602097e-01 + <_> + + 0 -1 546 -4.1371315717697144e-02 + + 4.1400006413459778e-01 -9.7229279577732086e-02 + <_> + + 0 -1 380 7.8342631459236145e-03 + + -1.6631671786308289e-01 2.5738984346389771e-01 + <_> + + 0 -1 304 -4.5139621943235397e-03 + + -4.6883803606033325e-01 8.7662570178508759e-02 + <_> + + 0 -1 929 1.5914421528577805e-03 + + -1.1636006087064743e-01 3.2739594578742981e-01 + <_> + + 0 -1 942 -5.2607608959078789e-03 + + -6.7755740880966187e-01 5.1752120256423950e-02 + <_> + + 0 -1 941 3.1824512407183647e-03 + + 5.2379645407199860e-02 -6.0918039083480835e-01 + <_> + + 0 -1 939 -3.6813789047300816e-03 + + 4.8251116275787354e-01 -9.2318780720233917e-02 + <_> + + 0 -1 622 -4.3226117268204689e-03 + + -5.7561415433883667e-01 5.9672243893146515e-02 + <_> + + 0 -1 250 -7.1843853220343590e-03 + + 2.6631006598472595e-01 -1.4015418291091919e-01 + <_> + + 0 -1 871 2.1028071641921997e-03 + + -1.1286304146051407e-01 3.5946926474571228e-01 + <_> + + 0 -1 22 8.5248583927750587e-03 + + 6.9424033164978027e-02 -5.2462881803512573e-01 + <_> + + 0 -1 147 6.9785099476575851e-03 + + 5.6668873876333237e-02 -5.6192052364349365e-01 + <_> + + 0 -1 474 -5.2639590576291084e-03 + + -5.8648955821990967e-01 5.0352573394775391e-02 + <_> + + 0 -1 406 2.8417459689080715e-03 + + -1.3425759971141815e-01 2.7325555682182312e-01 + <_> + + 0 -1 394 -1.3187457807362080e-02 + + 4.0453648567199707e-01 -9.1843754053115845e-02 + <_> + + 0 -1 722 -6.7344801500439644e-03 + + -7.5647395849227905e-01 5.0157479941844940e-02 + <_> + + 0 -1 187 2.1363141015172005e-02 + + 4.7982390969991684e-02 -5.5388218164443970e-01 + <_> + + 0 -1 623 1.6145884292200208e-03 + + 7.9808227717876434e-02 -3.7233716249465942e-01 + <_> + + 0 -1 525 -2.2595757618546486e-03 + + 2.8343635797500610e-01 -1.1216876655817032e-01 + <_> + + 0 -1 214 1.4407988637685776e-02 + + -1.0392460227012634e-01 3.1299999356269836e-01 + <_> + + 0 -1 476 -1.4912552433088422e-03 + + 2.8538599610328674e-01 -1.0644508898258209e-01 + <_> + + 0 -1 195 9.8895151168107986e-03 + + 5.0090074539184570e-02 -6.2053185701370239e-01 + <_> + + 0 -1 115 4.2754956521093845e-03 + + 6.5051443874835968e-02 -4.2582303285598755e-01 + <_> + + 0 -1 754 -2.5489409454166889e-03 + + 3.1278640031814575e-01 -9.9601686000823975e-02 + <_> + + 0 -1 717 -6.0358326882123947e-03 + + 2.2685267031192780e-01 -1.3849361240863800e-01 + <_> + + 0 -1 875 1.1879121884703636e-02 + + -8.9687183499336243e-02 3.7642294168472290e-01 + <_> + + 0 -1 111 1.2982923537492752e-02 + + 4.3990727514028549e-02 -7.3371982574462891e-01 + <_> + + 0 -1 993 -2.8599319048225880e-03 + + -4.3102917075157166e-01 5.9561621397733688e-02 + <_> + + 0 -1 737 -3.5829999251291156e-04 + + 1.7152757942676544e-01 -1.6511310636997223e-01 + <_> + + 0 -1 27 2.5972571223974228e-02 + + -1.2855969369411469e-01 2.2820757329463959e-01 + <_> + + 0 -1 516 4.2565623298287392e-03 + + 5.7662181556224823e-02 -5.3734982013702393e-01 + <_> + + 0 -1 50 -2.9159568250179291e-02 + + -6.3020753860473633e-01 4.0746636688709259e-02 + <_> + + 0 -1 413 3.1341956928372383e-03 + + -8.1374719738960266e-02 4.1371321678161621e-01 + <_> + + 0 -1 935 -1.3592604082077742e-03 + + 3.2382342219352722e-01 -9.7880341112613678e-02 + <_> + + 0 -1 758 -6.9904811680316925e-03 + + -6.8850576877593994e-01 4.2428225278854370e-02 + <_> + + 0 -1 93 -8.7879784405231476e-03 + + -5.8945190906524658e-01 3.7613209336996078e-02 + <_> + + 0 -1 491 -1.7947785556316376e-02 + + 3.1659606099128723e-01 -8.7437197566032410e-02 + <_> + + 0 -1 490 8.0379713326692581e-03 + + -1.1311284452676773e-01 3.0860018730163574e-01 + <_> + + 0 -1 716 3.0642822384834290e-03 + + 4.8351831734180450e-02 -6.0563534498214722e-01 + + <_> + 54 + -1.3756012916564941e+00 + + <_> + + 0 -1 798 -1.7431776504963636e-03 + + 5.5538344383239746e-01 -1.0357239097356796e-01 + <_> + + 0 -1 425 4.4551412574946880e-03 + + -1.2460361421108246e-01 5.1942145824432373e-01 + <_> + + 0 -1 843 3.5308140795677900e-03 + + -2.2974169254302979e-01 2.7043044567108154e-01 + <_> + + 0 -1 532 -1.5887852758169174e-02 + + 4.1745069622993469e-01 -1.1281611770391464e-01 + <_> + + 0 -1 7 1.1611310765147209e-02 + + -1.9416445493698120e-01 2.5554594397544861e-01 + <_> + + 0 -1 935 1.5740045346319675e-03 + + -1.2263108044862747e-01 3.8852572441101074e-01 + <_> + + 0 -1 547 5.1882643252611160e-02 + + -7.5461924076080322e-02 5.0257563591003418e-01 + <_> + + 0 -1 251 -3.8624972105026245e-02 + + 4.0001305937767029e-01 -9.6231088042259216e-02 + <_> + + 0 -1 272 -3.9408572018146515e-02 + + 3.0533725023269653e-01 -1.6677139699459076e-01 + <_> + + 0 -1 29 7.5884531252086163e-03 + + 9.8107770085334778e-02 -5.8249044418334961e-01 + <_> + + 0 -1 218 7.2114326059818268e-02 + + -1.4419755339622498e-01 2.8208708763122559e-01 + <_> + + 0 -1 268 5.5582458153367043e-03 + + 7.2843901813030243e-02 -5.5255079269409180e-01 + <_> + + 0 -1 877 -4.7345291823148727e-03 + + 3.3209753036499023e-01 -1.2499606609344482e-01 + <_> + + 0 -1 577 5.1413839682936668e-03 + + 6.4787313342094421e-02 -6.4880597591400146e-01 + <_> + + 0 -1 999 5.4608630016446114e-03 + + 3.7491828203201294e-02 -7.5315922498703003e-01 + <_> + + 0 -1 542 -8.6404485045932233e-05 + + 1.7464619874954224e-01 -1.8258170783519745e-01 + <_> + + 0 -1 442 6.1132330447435379e-03 + + 7.5624085962772369e-02 -4.3711006641387939e-01 + <_> + + 0 -1 889 -7.0670098066329956e-03 + + 2.1796958148479462e-01 -1.4547325670719147e-01 + <_> + + 0 -1 347 9.4080460257828236e-04 + + -1.2536728382110596e-01 2.8143358230590820e-01 + <_> + + 0 -1 580 -2.6800869964063168e-03 + + -4.2977494001388550e-01 8.2963027060031891e-02 + <_> + + 0 -1 297 5.8945640921592712e-03 + + 4.2834181338548660e-02 -6.0937494039535522e-01 + <_> + + 0 -1 465 1.0121082887053490e-03 + + -1.1036285758018494e-01 2.9971688985824585e-01 + <_> + + 0 -1 56 3.1157936900854111e-03 + + 7.3115289211273193e-02 -4.3226471543312073e-01 + <_> + + 0 -1 411 -3.3052214421331882e-03 + + -4.9826300144195557e-01 5.1225960254669189e-02 + <_> + + 0 -1 109 8.3188470453023911e-03 + + 5.0362452864646912e-02 -4.8688000440597534e-01 + <_> + + 0 -1 393 -2.5094528682529926e-03 + + 2.6902040839195251e-01 -1.0433372855186462e-01 + <_> + + 0 -1 924 1.1217880528420210e-03 + + -1.1188100278377533e-01 3.1254816055297852e-01 + <_> + + 0 -1 716 -2.9259414877742529e-03 + + -5.7495939731597900e-01 5.3564101457595825e-02 + <_> + + 0 -1 733 -1.1687271296977997e-02 + + 2.5880128145217896e-01 -1.0639669001102448e-01 + <_> + + 0 -1 763 3.5054073669016361e-03 + + 5.4045904427766800e-02 -5.5625277757644653e-01 + <_> + + 0 -1 552 1.9068794324994087e-02 + + -1.1246301978826523e-01 2.5745245814323425e-01 + <_> + + 0 -1 230 4.6145436353981495e-03 + + 6.7216314375400543e-02 -4.1385611891746521e-01 + <_> + + 0 -1 857 -8.2267355173826218e-03 + + 2.1265375614166260e-01 -1.3443692028522491e-01 + <_> + + 0 -1 149 -1.4355888590216637e-02 + + 2.5618723034858704e-01 -1.0785522311925888e-01 + <_> + + 0 -1 61 8.0431215465068817e-03 + + -1.4258129894733429e-01 2.2692860662937164e-01 + <_> + + 0 -1 170 -5.6914249435067177e-03 + + -4.8886317014694214e-01 6.0331270098686218e-02 + <_> + + 0 -1 133 -2.5912215933203697e-03 + + 2.1062785387039185e-01 -1.4967896044254303e-01 + <_> + + 0 -1 461 5.5204275995492935e-03 + + -8.1333734095096588e-02 3.8316065073013306e-01 + <_> + + 0 -1 515 5.3790090605616570e-03 + + -9.3129634857177734e-02 3.2883483171463013e-01 + <_> + + 0 -1 199 -7.2196200489997864e-03 + + -6.6427856683731079e-01 4.4702950865030289e-02 + <_> + + 0 -1 94 -8.3873540163040161e-02 + + -7.9910254478454590e-01 2.7107261121273041e-02 + <_> + + 0 -1 513 -3.4268260933458805e-03 + + 2.5298807024955750e-01 -1.0898132622241974e-01 + <_> + + 0 -1 763 -3.7466005887836218e-03 + + -5.5346089601516724e-01 5.2094604820013046e-02 + <_> + + 0 -1 276 1.2452949304133654e-03 + + -8.2017965614795685e-02 3.5483068227767944e-01 + <_> + + 0 -1 1013 -6.2445802614092827e-03 + + -5.0969594717025757e-01 5.4533429443836212e-02 + <_> + + 0 -1 276 -1.1970927007496357e-03 + + 3.6470764875411987e-01 -7.7394872903823853e-02 + <_> + + 0 -1 757 3.0796977225691080e-03 + + 5.3208738565444946e-02 -5.0689512491226196e-01 + <_> + + 0 -1 33 -3.9015077054500580e-02 + + 1.9598089158535004e-01 -1.3218660652637482e-01 + <_> + + 0 -1 680 -7.7085788361728191e-03 + + 2.2754703462123871e-01 -1.2544488906860352e-01 + <_> + + 0 -1 655 3.2509677112102509e-02 + + -6.7099742591381073e-02 4.1469818353652954e-01 + <_> + + 0 -1 569 3.0232844874262810e-03 + + 6.6373795270919800e-02 -4.2127549648284912e-01 + <_> + + 0 -1 54 2.5392756797373295e-03 + + -1.1576391756534576e-01 2.3464009165763855e-01 + <_> + + 0 -1 1013 6.8497275933623314e-03 + + 4.5596633106470108e-02 -5.8435302972793579e-01 + <_> + + 0 -1 231 -4.4358119368553162e-02 + + -3.9718165993690491e-01 6.2707424163818359e-02 + + <_> + 63 + -1.4057025909423828e+00 + + <_> + + 0 -1 804 5.0806580111384392e-03 + + -7.9617008566856384e-02 5.6362086534500122e-01 + <_> + + 0 -1 965 2.0602284930646420e-03 + + -1.8717131018638611e-01 3.4062680602073669e-01 + <_> + + 0 -1 495 6.1347078531980515e-02 + + -1.3253036141395569e-01 4.0938606858253479e-01 + <_> + + 0 -1 13 -6.0383215546607971e-02 + + 4.1172346472740173e-01 -1.4447186887264252e-01 + <_> + + 0 -1 478 -3.0238348990678787e-03 + + 3.4262558817863464e-01 -1.0982885956764221e-01 + <_> + + 0 -1 458 4.0474245324730873e-03 + + 7.1186766028404236e-02 -5.0650447607040405e-01 + <_> + + 0 -1 633 -2.0359824411571026e-03 + + 2.2166600823402405e-01 -1.6060648858547211e-01 + <_> + + 0 -1 887 2.7303429305902682e-05 + + -2.6211214065551758e-01 1.2801185250282288e-01 + <_> + + 0 -1 352 1.2323079630732536e-02 + + 8.2502633333206177e-02 -4.5231887698173523e-01 + <_> + + 0 -1 878 2.2477287799119949e-02 + + -7.7229477465152740e-02 4.5144733786582947e-01 + <_> + + 0 -1 395 -1.4673802070319653e-02 + + 3.5660189390182495e-01 -1.1584777384996414e-01 + <_> + + 0 -1 141 9.9029816687107086e-02 + + -1.6957059502601624e-01 2.2625257074832916e-01 + <_> + + 0 -1 144 -1.0632930323481560e-02 + + -5.6829780340194702e-01 7.1929946541786194e-02 + <_> + + 0 -1 808 2.5341216474771500e-02 + + -1.2931844592094421e-01 2.6161769032478333e-01 + <_> + + 0 -1 816 5.8172484859824181e-03 + + -1.5375703573226929e-01 2.0636843144893646e-01 + <_> + + 0 -1 68 -2.0786169171333313e-01 + + 3.9931070804595947e-01 -7.7051497995853424e-02 + <_> + + 0 -1 140 2.2137831151485443e-01 + + -7.2486869990825653e-02 3.9756566286087036e-01 + <_> + + 0 -1 554 3.4148676786571741e-04 + + -1.5928100049495697e-01 1.8005076050758362e-01 + <_> + + 0 -1 307 -6.7202709615230560e-03 + + -6.7838191986083984e-01 4.5886330306529999e-02 + <_> + + 0 -1 392 1.4110710471868515e-03 + + -9.7257830202579498e-02 3.2224002480506897e-01 + <_> + + 0 -1 266 4.2120069265365601e-02 + + -8.8405482470989227e-02 3.2538983225822449e-01 + <_> + + 0 -1 242 -1.3846142683178186e-03 + + 2.0695628225803375e-01 -1.5275791287422180e-01 + <_> + + 0 -1 817 3.5425978712737560e-03 + + -1.2709444761276245e-01 2.1816165745258331e-01 + <_> + + 0 -1 959 3.3351695165038109e-03 + + 4.8398405313491821e-02 -6.0871434211730957e-01 + <_> + + 0 -1 958 -3.3201207406818867e-03 + + -4.8987022042274475e-01 5.5623263120651245e-02 + <_> + + 0 -1 915 1.0103111853823066e-03 + + -1.5765775740146637e-01 1.6940611600875854e-01 + <_> + + 0 -1 151 4.9717966467142105e-03 + + 5.1272217184305191e-02 -5.4395431280136108e-01 + <_> + + 0 -1 799 1.7913591582328081e-03 + + -7.2745941579341888e-02 4.0087917447090149e-01 + <_> + + 0 -1 102 -1.3228422030806541e-02 + + -3.5441592335700989e-01 7.9325266182422638e-02 + <_> + + 0 -1 276 2.0421743392944336e-03 + + -5.9137169271707535e-02 4.6143886446952820e-01 + <_> + + 0 -1 276 -5.9784355107694864e-04 + + 2.5433012843132019e-01 -1.0601133853197098e-01 + <_> + + 0 -1 396 -5.1422840915620327e-03 + + -4.4627833366394043e-01 6.1951976269483566e-02 + <_> + + 0 -1 86 6.4243013039231300e-03 + + 3.1528502702713013e-02 -7.2403544187545776e-01 + <_> + + 0 -1 1035 3.4636156633496284e-03 + + 3.7317775189876556e-02 -5.4165351390838623e-01 + <_> + + 0 -1 14 3.2000489532947540e-02 + + 3.0169567093253136e-02 -7.1302002668380737e-01 + <_> + + 0 -1 498 -5.8225672692060471e-03 + + -4.4310861825942993e-01 4.7724053263664246e-02 + <_> + + 0 -1 24 -8.4763765335083008e-03 + + -6.0832363367080688e-01 3.6428902298212051e-02 + <_> + + 0 -1 598 2.7582058683037758e-03 + + -1.0180406272411346e-01 2.4450653791427612e-01 + <_> + + 0 -1 695 -3.0314538162201643e-03 + + -5.6130182743072510e-01 4.1730970144271851e-02 + <_> + + 0 -1 691 3.8132141344249249e-03 + + 4.3826375156641006e-02 -4.8639413714408875e-01 + <_> + + 0 -1 799 -1.1944114230573177e-03 + + 1.9191412627696991e-01 -1.2599647045135498e-01 + <_> + + 0 -1 751 -3.2212696969509125e-02 + + -7.3205161094665527e-01 3.3331435173749924e-02 + <_> + + 0 -1 521 -1.0144908446818590e-03 + + 3.0479896068572998e-01 -8.2489714026451111e-02 + <_> + + 0 -1 836 -1.4355147257447243e-02 + + 2.1706604957580566e-01 -1.0914804041385651e-01 + <_> + + 0 -1 574 -4.8122168518602848e-03 + + -6.7199075222015381e-01 4.0943562984466553e-02 + <_> + + 0 -1 236 3.3706519752740860e-04 + + -1.4588885009288788e-01 1.6099508106708527e-01 + <_> + + 0 -1 43 -1.8943618983030319e-02 + + -5.9796541929244995e-01 3.7877634167671204e-02 + <_> + + 0 -1 69 1.5444982796907425e-02 + + 2.6846721768379211e-02 -7.2375786304473877e-01 + <_> + + 0 -1 303 1.0463559068739414e-02 + + 3.2184243202209473e-02 -6.0756552219390869e-01 + <_> + + 0 -1 292 2.5047133676707745e-03 + + -1.1925315856933594e-01 1.9379882514476776e-01 + <_> + + 0 -1 797 -1.4791900292038918e-02 + + 1.9981779158115387e-01 -1.2553811073303223e-01 + <_> + + 0 -1 146 -6.1217732727527618e-03 + + -4.2455345392227173e-01 5.5959124118089676e-02 + <_> + + 0 -1 563 -3.5850135609507561e-03 + + 3.2560044527053833e-01 -7.1894593536853790e-02 + <_> + + 0 -1 1048 -3.2580485567450523e-03 + + -5.4515779018402100e-01 4.5138467103242874e-02 + <_> + + 0 -1 367 8.5870809853076935e-03 + + -9.2699222266674042e-02 2.7361676096916199e-01 + <_> + + 0 -1 384 -3.5999938845634460e-03 + + 1.7715592682361603e-01 -1.3859097659587860e-01 + <_> + + 0 -1 650 1.5299995429813862e-03 + + -1.0419535636901855e-01 2.1118766069412231e-01 + <_> + + 0 -1 413 2.7578026056289673e-03 + + -7.0944413542747498e-02 2.9870492219924927e-01 + <_> + + 0 -1 283 -6.1489176005125046e-03 + + -5.1581281423568726e-01 4.6433247625827789e-02 + <_> + + 0 -1 979 8.3175086183473468e-04 + + -8.4185592830181122e-02 2.8132751584053040e-01 + <_> + + 0 -1 979 -6.7444925662130117e-04 + + 2.6548036932945251e-01 -9.7815677523612976e-02 + <_> + + 0 -1 555 -5.6643221527338028e-02 + + 3.8170987367630005e-01 -6.2833912670612335e-02 + <_> + + 0 -1 602 -7.5360340997576714e-03 + + 2.2137185931205750e-01 -1.0336405038833618e-01 + + <_> + 54 + -1.3439358472824097e+00 + + <_> + + 0 -1 526 -4.8420722596347332e-03 + + 5.7400572299957275e-01 -9.5008336007595062e-02 + <_> + + 0 -1 786 -5.9993756003677845e-03 + + 4.5479923486709595e-01 -1.5483228862285614e-01 + <_> + + 0 -1 531 -3.1531709246337414e-03 + + 4.2504432797431946e-01 -1.2935030460357666e-01 + <_> + + 0 -1 884 1.2363551650196314e-03 + + -1.5872104465961456e-01 3.1463247537612915e-01 + <_> + + 0 -1 925 -6.7780278623104095e-03 + + 4.1302111744880676e-01 -1.7017546296119690e-01 + <_> + + 0 -1 259 1.3960017822682858e-03 + + -1.3419999182224274e-01 3.3868113160133362e-01 + <_> + + 0 -1 564 -3.5894233733415604e-03 + + 3.3102113008499146e-01 -1.1498286575078964e-01 + <_> + + 0 -1 551 5.4187951609492302e-03 + + -1.2790408730506897e-01 3.1275641918182373e-01 + <_> + + 0 -1 934 -3.3248444087803364e-03 + + -5.1654219627380371e-01 7.1216024458408356e-02 + <_> + + 0 -1 49 7.9970825463533401e-03 + + 6.3098005950450897e-02 -5.8896148204803467e-01 + <_> + + 0 -1 124 6.0347835533320904e-03 + + 6.4018696546554565e-02 -4.7639665007591248e-01 + <_> + + 0 -1 124 -6.9478121586143970e-03 + + -6.0485291481018066e-01 7.2506561875343323e-02 + <_> + + 0 -1 30 1.9063859945163131e-03 + + -1.8492227792739868e-01 1.9994279742240906e-01 + <_> + + 0 -1 752 2.1343495696783066e-02 + + -8.6192794144153595e-02 4.8719888925552368e-01 + <_> + + 0 -1 261 -2.2514071315526962e-03 + + 3.5809755325317383e-01 -7.6123438775539398e-02 + <_> + + 0 -1 480 -4.4778124429285526e-03 + + -4.5578238368034363e-01 7.3516018688678741e-02 + <_> + + 0 -1 533 3.9280336350202560e-03 + + 6.2599055469036102e-02 -5.2695369720458984e-01 + <_> + + 0 -1 365 -4.5666974037885666e-03 + + -6.1827522516250610e-01 4.1984613984823227e-02 + <_> + + 0 -1 743 -6.1424830928444862e-03 + + 3.0607789754867554e-01 -9.1138295829296112e-02 + <_> + + 0 -1 1019 3.4258943051099777e-03 + + 5.5657953023910522e-02 -5.3350126743316650e-01 + <_> + + 0 -1 731 3.3122287131845951e-03 + + -1.5935245156288147e-01 1.7000633478164673e-01 + <_> + + 0 -1 135 7.4128687381744385e-02 + + 3.3975400030612946e-02 -6.4646822214126587e-01 + <_> + + 0 -1 496 -6.0862921178340912e-02 + + 3.1012952327728271e-01 -9.1380268335342407e-02 + <_> + + 0 -1 575 -4.3243117630481720e-02 + + -4.5051410794258118e-01 6.6722445189952850e-02 + <_> + + 0 -1 322 -5.4576778784394264e-03 + + -4.8368638753890991e-01 5.5113438516855240e-02 + <_> + + 0 -1 196 -2.1073617972433567e-03 + + 2.3326623439788818e-01 -1.2007984519004822e-01 + <_> + + 0 -1 252 -1.1282963678240776e-02 + + 2.9159554839134216e-01 -1.0025029629468918e-01 + <_> + + 0 -1 339 2.9302681796252728e-03 + + -8.5840485990047455e-02 3.3159431815147400e-01 + <_> + + 0 -1 53 -2.8825225308537483e-03 + + -5.3361582756042480e-01 5.7994876056909561e-02 + <_> + + 0 -1 76 6.2230005860328674e-03 + + 4.4393569231033325e-02 -5.3072142601013184e-01 + <_> + + 0 -1 971 1.1437942739576101e-03 + + -9.5763660967350006e-02 2.8212538361549377e-01 + <_> + + 0 -1 1052 1.2469270732253790e-03 + + 6.5446242690086365e-02 -4.1902217268943787e-01 + <_> + + 0 -1 612 -1.1369751766324043e-02 + + -7.0747911930084229e-01 3.4916084259748459e-02 + <_> + + 0 -1 35 1.0013033449649811e-01 + + -6.7160040140151978e-02 4.2184004187583923e-01 + <_> + + 0 -1 653 -2.6742245536297560e-03 + + 1.7217047512531281e-01 -1.6229687631130219e-01 + <_> + + 0 -1 713 -3.4254738129675388e-03 + + 2.9603767395019531e-01 -8.9177258312702179e-02 + <_> + + 0 -1 669 1.5813322970643640e-03 + + 4.8733744770288467e-02 -5.6422549486160278e-01 + <_> + + 0 -1 917 2.7555555789149366e-05 + + -1.7079097032546997e-01 1.4066468179225922e-01 + <_> + + 0 -1 466 -8.2116597332060337e-04 + + 1.8260034918785095e-01 -1.3242910802364349e-01 + <_> + + 0 -1 353 -1.0168720036745071e-02 + + -4.1390055418014526e-01 6.5349683165550232e-02 + <_> + + 0 -1 96 2.5848036631941795e-02 + + 4.6910341829061508e-02 -4.7531116008758545e-01 + <_> + + 0 -1 75 5.9797330759465694e-03 + + 4.5450355857610703e-02 -4.5701387524604797e-01 + <_> + + 0 -1 81 -2.4257015902549028e-03 + + 1.8431460857391357e-01 -1.1879430711269379e-01 + <_> + + 0 -1 346 -4.1334740817546844e-02 + + 3.0460721254348755e-01 -9.4910860061645508e-02 + <_> + + 0 -1 537 7.5982198119163513e-02 + + -6.5890170633792877e-02 3.3325287699699402e-01 + <_> + + 0 -1 318 -2.7852014682139270e-05 + + 1.4771287143230438e-01 -1.4524473249912262e-01 + <_> + + 0 -1 669 -1.4885163400322199e-03 + + -4.6987643837928772e-01 4.7233786433935165e-02 + <_> + + 0 -1 897 -3.3519542776048183e-03 + + 2.4128976464271545e-01 -9.3788638710975647e-02 + <_> + + 0 -1 935 1.3348343782126904e-03 + + -9.9509775638580322e-02 2.9368522763252258e-01 + <_> + + 0 -1 704 3.2456549815833569e-03 + + -9.8895303905010223e-02 2.3363485932350159e-01 + <_> + + 0 -1 611 4.2385179549455643e-03 + + 5.9986904263496399e-02 -4.5745995640754700e-01 + <_> + + 0 -1 170 8.4751443937420845e-03 + + 3.0937874689698219e-02 -6.7139619588851929e-01 + <_> + + 0 -1 995 3.0964510515332222e-03 + + 3.0879957601428032e-02 -6.2686437368392944e-01 + <_> + + 0 -1 212 2.3455230984836817e-03 + + -1.3303077220916748e-01 1.6908498108386993e-01 + + <_> + 72 + -1.4052674770355225e+00 + + <_> + + 0 -1 534 -8.4834604058414698e-04 + + 4.6746683120727539e-01 -1.2498743087053299e-01 + <_> + + 0 -1 838 1.1534148361533880e-03 + + -2.1341361105442047e-01 3.0533915758132935e-01 + <_> + + 0 -1 728 1.3660041615366936e-02 + + -1.5390963852405548e-01 3.2113197445869446e-01 + <_> + + 0 -1 528 -1.3363182079046965e-03 + + 2.4346974492073059e-01 -1.8074017763137817e-01 + <_> + + 0 -1 1002 5.5064354091882706e-04 + + -1.9600959122180939e-01 2.1903340518474579e-01 + <_> + + 0 -1 340 2.8026416897773743e-02 + + -9.9956467747688293e-02 5.1314896345138550e-01 + <_> + + 0 -1 930 -9.8200759384781122e-04 + + 2.0671010017395020e-01 -1.9585600495338440e-01 + <_> + + 0 -1 249 -1.9661948084831238e-02 + + -5.1859843730926514e-01 7.9988524317741394e-02 + <_> + + 0 -1 514 5.7550622150301933e-03 + + -1.0230549424886703e-01 2.9102912545204163e-01 + <_> + + 0 -1 854 4.8226406797766685e-03 + + -1.2503834068775177e-01 2.2606587409973145e-01 + <_> + + 0 -1 1025 -3.5137422382831573e-03 + + -6.8291509151458740e-01 4.6296034008264542e-02 + <_> + + 0 -1 468 2.7717142074834555e-05 + + -2.1390475332736969e-01 1.3291628658771515e-01 + <_> + + 0 -1 875 -2.2634968161582947e-02 + + 4.0156257152557373e-01 -9.0922117233276367e-02 + <_> + + 0 -1 890 -2.6544253341853619e-04 + + 2.1944612264633179e-01 -1.5686984360218048e-01 + <_> + + 0 -1 45 1.7469950020313263e-02 + + 5.9605021029710770e-02 -5.4529672861099243e-01 + <_> + + 0 -1 812 3.6130528897047043e-03 + + 5.2721742540597916e-02 -4.4890201091766357e-01 + <_> + + 0 -1 813 -3.8260491564869881e-03 + + -5.1076781749725342e-01 4.7858215868473053e-02 + <_> + + 0 -1 348 -4.6305969590321183e-04 + + 2.0340332388877869e-01 -1.3007256388664246e-01 + <_> + + 0 -1 685 -7.3791583999991417e-03 + + -5.4855078458786011e-01 5.1355980336666107e-02 + <_> + + 0 -1 397 -4.1331160813570023e-02 + + -3.7914556264877319e-01 6.2432620674371719e-02 + <_> + + 0 -1 720 -1.4983891742303967e-03 + + -5.2967226505279541e-01 4.2461462318897247e-02 + <_> + + 0 -1 785 -2.5054097641259432e-03 + + 2.0288434624671936e-01 -1.2341590225696564e-01 + <_> + + 0 -1 259 -7.1871257387101650e-04 + + 2.4784520268440247e-01 -9.8167583346366882e-02 + <_> + + 0 -1 260 -6.8983237724751234e-04 + + 2.7780577540397644e-01 -9.7512029111385345e-02 + <_> + + 0 -1 274 4.8434769269078970e-04 + + -1.1704409867525101e-01 2.4324342608451843e-01 + <_> + + 0 -1 508 -3.6378027871251106e-03 + + -5.7295501232147217e-01 4.9037151038646698e-02 + <_> + + 0 -1 709 -2.6648804545402527e-02 + + -6.0253041982650757e-01 3.6413222551345825e-02 + <_> + + 0 -1 825 -4.3416651897132397e-03 + + 4.7109794616699219e-01 -5.9058945626020432e-02 + <_> + + 0 -1 60 -2.7588163502514362e-03 + + -4.9160134792327881e-01 5.4663125425577164e-02 + <_> + + 0 -1 987 4.7046472318470478e-03 + + 3.7025094032287598e-02 -5.6842529773712158e-01 + <_> + + 0 -1 77 4.9029560759663582e-03 + + 4.8207473009824753e-02 -4.2965477705001831e-01 + <_> + + 0 -1 837 -7.0135248824954033e-04 + + 2.2556030750274658e-01 -9.9117368459701538e-02 + <_> + + 0 -1 332 2.7165210340172052e-03 + + 4.3833449482917786e-02 -5.5271440744400024e-01 + <_> + + 0 -1 837 8.9941755868494511e-04 + + -8.9474648237228394e-02 2.6415902376174927e-01 + <_> + + 0 -1 723 -1.7575379461050034e-03 + + -5.7822185754776001e-01 4.4655490666627884e-02 + <_> + + 0 -1 323 2.2079560905694962e-02 + + -9.1862626373767853e-02 2.6927500963211060e-01 + <_> + + 0 -1 247 -2.4989219382405281e-03 + + 1.9282613694667816e-01 -1.4004705846309662e-01 + <_> + + 0 -1 388 4.4558709487318993e-03 + + 5.2965965121984482e-02 -4.6530798077583313e-01 + <_> + + 0 -1 345 8.9809950441122055e-03 + + -6.9099865853786469e-02 3.5005539655685425e-01 + <_> + + 0 -1 589 -4.6078087761998177e-03 + + 1.5373907983303070e-01 -1.5948937833309174e-01 + <_> + + 0 -1 10 -8.9063167572021484e-02 + + 4.8500600457191467e-01 -5.1386959850788116e-02 + <_> + + 0 -1 540 4.8636873252689838e-03 + + 5.1732856780290604e-02 -4.9787709116935730e-01 + <_> + + 0 -1 992 -5.4465518333017826e-03 + + 1.5584819018840790e-01 -1.4326727390289307e-01 + <_> + + 0 -1 788 6.4384475350379944e-02 + + 3.1540591269731522e-02 -7.1331930160522461e-01 + <_> + + 0 -1 25 -9.3528348952531815e-03 + + -5.8800560235977173e-01 3.2534934580326080e-02 + <_> + + 0 -1 374 6.5686285961419344e-04 + + -1.6972899436950684e-01 1.4208021759986877e-01 + <_> + + 0 -1 744 -6.5707243047654629e-03 + + 3.1901842355728149e-01 -7.0233277976512909e-02 + <_> + + 0 -1 370 7.0676081813871861e-03 + + 3.0735086649656296e-02 -7.6451587677001953e-01 + <_> + + 0 -1 875 -1.1614331044256687e-02 + + 2.0416912436485291e-01 -1.0650242120027542e-01 + <_> + + 0 -1 227 -3.0933439731597900e-02 + + -3.5186296701431274e-01 6.3158944249153137e-02 + <_> + + 0 -1 31 8.9404191821813583e-03 + + 4.1301336139440536e-02 -5.2171415090560913e-01 + <_> + + 0 -1 542 -3.0004943255335093e-04 + + 1.8332102894783020e-01 -1.1965552717447281e-01 + <_> + + 0 -1 753 -4.2704585939645767e-03 + + -4.1220253705978394e-01 5.2136015146970749e-02 + <_> + + 0 -1 979 9.1349193826317787e-04 + + -8.2035504281520844e-02 2.7817621827125549e-01 + <_> + + 0 -1 97 2.8089310973882675e-02 + + 6.0909613966941833e-02 -3.7705209851264954e-01 + <_> + + 0 -1 979 -1.1489203898236156e-03 + + 2.9547268152236938e-01 -7.8550107777118683e-02 + <_> + + 0 -1 766 -8.5876882076263428e-04 + + 1.6158875823020935e-01 -1.3613829016685486e-01 + <_> + + 0 -1 862 3.3645064104348421e-03 + + 3.6055568605661392e-02 -5.5788111686706543e-01 + <_> + + 0 -1 1034 -1.2699423357844353e-02 + + -4.2199519276618958e-01 4.3876208364963531e-02 + <_> + + 0 -1 158 -1.3306856155395508e-01 + + -7.5723612308502197e-01 2.4755204096436501e-02 + <_> + + 0 -1 822 4.9831219017505646e-02 + + 2.5250671431422234e-02 -6.3122928142547607e-01 + <_> + + 0 -1 569 5.8193420991301537e-03 + + 2.2189516574144363e-02 -7.2821933031082153e-01 + <_> + + 0 -1 422 -6.3158385455608368e-03 + + 1.9480472803115845e-01 -1.0275462269783020e-01 + <_> + + 0 -1 58 -2.6879269629716873e-02 + + -4.3909311294555664e-01 4.5222271233797073e-02 + <_> + + 0 -1 900 -1.6478844918310642e-03 + + 2.7425831556320190e-01 -7.7650256454944611e-02 + <_> + + 0 -1 947 4.4362144544720650e-03 + + 3.2876692712306976e-02 -6.0907542705535889e-01 + <_> + + 0 -1 760 -1.5154483262449503e-03 + + 2.2985421121120453e-01 -8.5810013115406036e-02 + <_> + + 0 -1 157 7.0627350360155106e-03 + + 3.4827440977096558e-02 -5.9273594617843628e-01 + <_> + + 0 -1 393 4.5482232235372066e-03 + + -5.2113339304924011e-02 4.0603092312812805e-01 + <_> + + 0 -1 183 -3.9095789194107056e-02 + + 2.5562492012977600e-01 -8.1410482525825500e-02 + <_> + + 0 -1 718 -1.9122204976156354e-03 + + -6.5523076057434082e-01 3.1964879482984543e-02 + <_> + + 0 -1 622 5.1604928448796272e-03 + + 2.8228869661688805e-02 -6.0336226224899292e-01 + + <_> + 63 + -1.2550007104873657e+00 + + <_> + + 0 -1 532 -1.3708438724279404e-02 + + 4.5314663648605347e-01 -1.2558805942535400e-01 + <_> + + 0 -1 32 1.2687301263213158e-02 + + -1.5584127604961395e-01 3.8753288984298706e-01 + <_> + + 0 -1 254 3.3966779708862305e-02 + + -1.1772038787603378e-01 4.0628942847251892e-01 + <_> + + 0 -1 756 8.0258902162313461e-03 + + -1.4661933481693268e-01 4.0369525551795959e-01 + <_> + + 0 -1 2 -4.2836386710405350e-03 + + 2.2167153656482697e-01 -1.9662868976593018e-01 + <_> + + 0 -1 164 -2.7807329315692186e-03 + + -4.6929144859313965e-01 6.9577261805534363e-02 + <_> + + 0 -1 172 1.9090694840997458e-03 + + 5.9488739818334579e-02 -6.3101488351821899e-01 + <_> + + 0 -1 426 3.1442400068044662e-03 + + -1.1149841547012329e-01 3.0095639824867249e-01 + <_> + + 0 -1 324 -2.8418585658073425e-02 + + 3.6157062649726868e-01 -9.6387691795825958e-02 + <_> + + 0 -1 449 -4.4032465666532516e-03 + + 3.2977014780044556e-01 -9.8187342286109924e-02 + <_> + + 0 -1 400 -2.6041134260594845e-03 + + 2.8221642971038818e-01 -1.0142992436885834e-01 + <_> + + 0 -1 357 -5.8917067945003510e-03 + + -5.8254349231719971e-01 6.0040380805730820e-02 + <_> + + 0 -1 998 1.3956660404801369e-03 + + -1.6574928164482117e-01 1.7746162414550781e-01 + <_> + + 0 -1 1022 -1.7630932852625847e-03 + + -5.7597070932388306e-01 6.2388133257627487e-02 + <_> + + 0 -1 697 -1.3517161132767797e-03 + + -5.1934504508972168e-01 4.7232870012521744e-02 + <_> + + 0 -1 507 -3.8743610493838787e-03 + + 2.9165247082710266e-01 -9.9355563521385193e-02 + <_> + + 0 -1 765 1.0973589494824409e-02 + + -7.7571205794811249e-02 3.4312543272972107e-01 + <_> + + 0 -1 128 -3.5274624824523926e-03 + + -6.7513287067413330e-01 3.6897819489240646e-02 + <_> + + 0 -1 605 -2.4239125195890665e-03 + + 2.5701349973678589e-01 -1.0465545207262039e-01 + <_> + + 0 -1 727 -8.3098262548446655e-03 + + 2.6842510700225830e-01 -9.9635124206542969e-02 + <_> + + 0 -1 269 -2.7831714600324631e-02 + + -3.9901316165924072e-01 6.5086022019386292e-02 + <_> + + 0 -1 399 8.1690559163689613e-03 + + -1.1402101069688797e-01 2.2761905193328857e-01 + <_> + + 0 -1 368 2.8635351918637753e-03 + + -1.4034478366374969e-01 1.8733198940753937e-01 + <_> + + 0 -1 286 -2.1204156801104546e-03 + + -5.9949654340744019e-01 4.9501683562994003e-02 + <_> + + 0 -1 669 -9.4446074217557907e-04 + + -3.8145086169242859e-01 5.9254929423332214e-02 + <_> + + 0 -1 686 2.1901372820138931e-03 + + 3.6901079118251801e-02 -5.6260800361633301e-01 + <_> + + 0 -1 103 4.2550573125481606e-03 + + -9.8831087350845337e-02 2.3313422501087189e-01 + <_> + + 0 -1 281 4.2771790176630020e-03 + + 4.2207289487123489e-02 -5.6859022378921509e-01 + <_> + + 0 -1 422 -7.8792609274387360e-03 + + 2.2428077459335327e-01 -9.9518932402133942e-02 + <_> + + 0 -1 561 -3.5514549817889929e-03 + + -5.6150603294372559e-01 3.9242122322320938e-02 + <_> + + 0 -1 738 -6.8606354761868715e-04 + + 2.1056549251079559e-01 -1.2413132935762405e-01 + <_> + + 0 -1 433 5.2483025938272476e-03 + + 3.4256864339113235e-02 -7.2566890716552734e-01 + <_> + + 0 -1 658 -3.6910744383931160e-03 + + 2.6440864801406860e-01 -8.9745096862316132e-02 + <_> + + 0 -1 127 2.0369128324091434e-03 + + 4.6990364789962769e-02 -5.3132331371307373e-01 + <_> + + 0 -1 662 3.8735207635909319e-03 + + -9.1540865600109100e-02 2.7486115694046021e-01 + <_> + + 0 -1 126 6.0556940734386444e-03 + + 5.3909529000520706e-02 -4.6437451243400574e-01 + <_> + + 0 -1 912 4.8301572678610682e-04 + + -1.6165176033973694e-01 1.3917934894561768e-01 + <_> + + 0 -1 101 -1.4880476519465446e-02 + + -5.9634107351303101e-01 3.9811171591281891e-02 + <_> + + 0 -1 609 2.9731846880167723e-03 + + 3.0903076753020287e-02 -6.2935864925384521e-01 + <_> + + 0 -1 90 -1.1181155219674110e-02 + + 3.5473996400833130e-01 -6.4499482512474060e-02 + <_> + + 0 -1 1009 -9.8370900377631187e-04 + + 2.9858112335205078e-01 -8.4500424563884735e-02 + <_> + + 0 -1 975 -1.0228222236037254e-03 + + 2.7100124955177307e-01 -1.0033085197210312e-01 + <_> + + 0 -1 913 2.0134919323027134e-03 + + 4.3533660471439362e-02 -5.4969471693038940e-01 + <_> + + 0 -1 881 -3.1473359558731318e-03 + + 3.1102818250656128e-01 -8.0141142010688782e-02 + <_> + + 0 -1 991 -2.9232497327029705e-03 + + -6.7808300256729126e-01 3.5025410354137421e-02 + <_> + + 0 -1 494 -3.8992143236100674e-03 + + 2.5711989402770996e-01 -8.4509201347827911e-02 + <_> + + 0 -1 547 -3.8403570652008057e-02 + + 2.8463324904441833e-01 -7.5673028826713562e-02 + <_> + + 0 -1 700 -2.2210094612091780e-03 + + -5.6876182556152344e-01 4.0759250521659851e-02 + <_> + + 0 -1 989 6.9615743122994900e-03 + + -7.8118488192558289e-02 2.8128826618194580e-01 + <_> + + 0 -1 948 -1.8219950143247843e-03 + + 1.8647159636020660e-01 -1.3465921580791473e-01 + <_> + + 0 -1 697 1.0106971021741629e-03 + + 5.7168632745742798e-02 -4.1419604420661926e-01 + <_> + + 0 -1 945 -3.3746981061995029e-03 + + -5.2892911434173584e-01 4.0065344423055649e-02 + <_> + + 0 -1 1030 -8.5245687514543533e-03 + + -5.0935691595077515e-01 3.8823168724775314e-02 + <_> + + 0 -1 1012 -2.2426969371736050e-03 + + 2.5891116261482239e-01 -8.8167145848274231e-02 + <_> + + 0 -1 402 -5.9730862267315388e-03 + + -4.3465223908424377e-01 4.9864508211612701e-02 + <_> + + 0 -1 452 -5.5482299067080021e-03 + + 2.5288850069046021e-01 -9.3322932720184326e-02 + <_> + + 0 -1 51 3.7344563007354736e-01 + + -4.9019347876310349e-02 4.3872711062431335e-01 + <_> + + 0 -1 615 -4.0881419554352760e-03 + + 3.1952694058418274e-01 -7.7735908329486847e-02 + <_> + + 0 -1 202 3.1661842949688435e-03 + + -1.0995075106620789e-01 1.7701222002506256e-01 + <_> + + 0 -1 17 -2.1666671335697174e-01 + + -4.5134860277175903e-01 4.9127347767353058e-02 + <_> + + 0 -1 241 -3.1139418482780457e-02 + + 2.5138390064239502e-01 -9.4933450222015381e-02 + <_> + + 0 -1 459 9.1597874416038394e-04 + + -7.4231699109077454e-02 3.1368830800056458e-01 + <_> + + 0 -1 747 -6.1164153739809990e-03 + + -7.0417582988739014e-01 3.4018490463495255e-02 + + <_> + 77 + -1.3230814933776855e+00 + + <_> + + 0 -1 522 -3.3400340471416712e-03 + + 4.2352598905563354e-01 -1.2572944164276123e-01 + <_> + + 0 -1 799 -2.3890279699116945e-03 + + 3.8169610500335693e-01 -1.4501731097698212e-01 + <_> + + 0 -1 448 -2.4045775644481182e-03 + + 3.4690696001052856e-01 -1.2821178138256073e-01 + <_> + + 0 -1 524 1.2546034995466471e-03 + + -1.4823316037654877e-01 2.9894015192985535e-01 + <_> + + 0 -1 752 -1.8236635252833366e-02 + + 3.0641126632690430e-01 -1.2427721172571182e-01 + <_> + + 0 -1 229 4.1921215597540140e-04 + + -1.8449674546718597e-01 1.7403297126293182e-01 + <_> + + 0 -1 914 -3.0837533995509148e-03 + + -6.2562137842178345e-01 3.4162398427724838e-02 + <_> + + 0 -1 587 -3.4897932782769203e-03 + + 2.0127655565738678e-01 -1.4677318930625916e-01 + <_> + + 0 -1 882 -3.4818234853446484e-03 + + 2.9465374350547791e-01 -1.0961814969778061e-01 + <_> + + 0 -1 13 6.2356598675251007e-02 + + -9.8056003451347351e-02 3.1733244657516479e-01 + <_> + + 0 -1 607 -1.8334560096263885e-02 + + 3.1992998719215393e-01 -7.8213296830654144e-02 + <_> + + 0 -1 885 3.7803263403475285e-03 + + 5.3678415715694427e-02 -5.0315982103347778e-01 + <_> + + 0 -1 1027 -3.6906298249959946e-02 + + -6.3056147098541260e-01 3.8218058645725250e-02 + <_> + + 0 -1 923 4.6968068927526474e-03 + + -1.1338837444782257e-01 2.6388064026832581e-01 + <_> + + 0 -1 708 -1.1566210538148880e-02 + + 1.6388712823390961e-01 -1.6043519973754883e-01 + <_> + + 0 -1 489 3.1895786523818970e-03 + + 6.0215596109628677e-02 -4.7157511115074158e-01 + <_> + + 0 -1 50 -2.5480750948190689e-02 + + -5.5096846818923950e-01 3.9257630705833435e-02 + <_> + + 0 -1 480 3.9267786778509617e-03 + + 6.1174295842647552e-02 -4.1686600446701050e-01 + <_> + + 0 -1 874 4.2923549190163612e-03 + + -6.9901801645755768e-02 3.6233785748481750e-01 + <_> + + 0 -1 929 1.5720827504992485e-03 + + -9.2891335487365723e-02 2.6970732212066650e-01 + <_> + + 0 -1 937 4.2968937195837498e-03 + + 4.5402236282825470e-02 -6.1771476268768311e-01 + <_> + + 0 -1 223 5.8442405425012112e-03 + + 3.4459017217159271e-02 -6.2251347303390503e-01 + <_> + + 0 -1 663 2.6888614520430565e-03 + + 3.6230482161045074e-02 -5.7353609800338745e-01 + <_> + + 0 -1 424 4.4175283983349800e-03 + + -6.4959764480590820e-02 3.7311050295829773e-01 + <_> + + 0 -1 138 1.4900951646268368e-03 + + -1.0781793296337128e-01 2.0226408541202545e-01 + <_> + + 0 -1 373 2.4665119126439095e-03 + + 5.7804334908723831e-02 -4.1689205169677734e-01 + <_> + + 0 -1 441 9.3985523562878370e-04 + + -1.4865192770957947e-01 1.3861793279647827e-01 + <_> + + 0 -1 132 -5.3606871515512466e-03 + + 1.8524695932865143e-01 -1.1567704379558563e-01 + <_> + + 0 -1 636 -4.6638157218694687e-03 + + 1.6163532435894012e-01 -1.3586524128913879e-01 + <_> + + 0 -1 120 3.7256032228469849e-03 + + 5.2170656621456146e-02 -4.2538973689079285e-01 + <_> + + 0 -1 106 -8.9184641838073730e-03 + + -5.0052535533905029e-01 4.7540370374917984e-02 + <_> + + 0 -1 474 5.6020710617303848e-03 + + 3.4621786326169968e-02 -5.4071390628814697e-01 + <_> + + 0 -1 475 -3.7551699206233025e-03 + + -3.9268767833709717e-01 5.2867397665977478e-02 + <_> + + 0 -1 567 4.0759481489658356e-03 + + 3.7209436297416687e-02 -4.7708320617675781e-01 + <_> + + 0 -1 413 4.1836635209619999e-03 + + -5.8815345168113708e-02 3.6573976278305054e-01 + <_> + + 0 -1 477 -9.3902507796883583e-04 + + 1.9424098730087280e-01 -1.1125016957521439e-01 + <_> + + 0 -1 985 -9.9178254604339600e-03 + + -5.9317117929458618e-01 3.3418238162994385e-02 + <_> + + 0 -1 646 3.3355036284774542e-03 + + -8.7399490177631378e-02 2.4422888457775116e-01 + <_> + + 0 -1 646 -3.4440397284924984e-03 + + 2.9363137483596802e-01 -7.5259201228618622e-02 + <_> + + 0 -1 42 2.1378418896347284e-03 + + 5.6551665067672729e-02 -3.9630606770515442e-01 + <_> + + 0 -1 1005 -4.5215697027742863e-03 + + 1.6443158686161041e-01 -1.1997994035482407e-01 + <_> + + 0 -1 47 -1.2263706885278225e-03 + + -2.6839572191238403e-01 7.8797832131385803e-02 + <_> + + 0 -1 926 -7.3856199160218239e-03 + + -7.5282222032546997e-01 2.3323338478803635e-02 + <_> + + 0 -1 1044 1.1934632435441017e-02 + + 3.9068166166543961e-02 -4.3301787972450256e-01 + <_> + + 0 -1 826 -4.2066089808940887e-03 + + 3.1933805346488953e-01 -6.1786398291587830e-02 + <_> + + 0 -1 779 -1.5679887728765607e-03 + + 2.1744215488433838e-01 -9.4651907682418823e-02 + <_> + + 0 -1 78 2.5083343498408794e-03 + + 5.7137917727231979e-02 -3.3361336588859558e-01 + <_> + + 0 -1 660 3.6224797368049622e-03 + + 3.1345754861831665e-02 -5.7247912883758545e-01 + <_> + + 0 -1 870 -7.7814143151044846e-03 + + 2.9652404785156250e-01 -6.6501826047897339e-02 + <_> + + 0 -1 800 -4.1631370550021529e-04 + + 2.2159980237483978e-01 -1.0610108822584152e-01 + <_> + + 0 -1 596 4.7841453924775124e-03 + + 3.3327136188745499e-02 -5.7043993473052979e-01 + <_> + + 0 -1 347 1.2740758247673512e-03 + + -7.9592645168304443e-02 2.4728350341320038e-01 + <_> + + 0 -1 59 -2.0162630826234818e-02 + + -7.0677626132965088e-01 2.7118822559714317e-02 + <_> + + 0 -1 165 -2.5762226432561874e-02 + + -5.9367066621780396e-01 2.7015525847673416e-02 + <_> + + 0 -1 255 -1.1241633910685778e-03 + + 2.9121127724647522e-01 -6.5690472722053528e-02 + <_> + + 0 -1 818 2.9669383540749550e-02 + + 3.4585461020469666e-02 -5.4837781190872192e-01 + <_> + + 0 -1 501 -6.3295168802142143e-03 + + 2.3453639447689056e-01 -8.5172846913337708e-02 + <_> + + 0 -1 1046 4.0143523365259171e-03 + + 3.5306803882122040e-02 -5.4817456007003784e-01 + <_> + + 0 -1 949 -2.4633856955915689e-03 + + 1.6164709627628326e-01 -1.1111633479595184e-01 + <_> + + 0 -1 38 -2.6468174532055855e-02 + + 2.5775042176246643e-01 -7.2721429169178009e-02 + <_> + + 0 -1 1047 -2.5992670562118292e-03 + + -3.1405648589134216e-01 5.9779226779937744e-02 + <_> + + 0 -1 809 -2.2960878908634186e-02 + + 2.8405818343162537e-01 -6.8080194294452667e-02 + <_> + + 0 -1 437 -1.6940593719482422e-02 + + 3.0056476593017578e-01 -6.7668616771697998e-02 + <_> + + 0 -1 528 1.7171052750200033e-03 + + -6.5253980457782745e-02 2.9430890083312988e-01 + <_> + + 0 -1 142 -5.2873874083161354e-03 + + -4.5413893461227417e-01 4.3044254183769226e-02 + <_> + + 0 -1 14 -1.8073642626404762e-02 + + -3.4945023059844971e-01 5.2509855479001999e-02 + <_> + + 0 -1 627 -2.0803229417651892e-03 + + -4.0171647071838379e-01 4.5229051262140274e-02 + <_> + + 0 -1 918 -1.1218651343369856e-04 + + 1.2830497324466705e-01 -1.4649079740047455e-01 + <_> + + 0 -1 84 -6.6526420414447784e-03 + + -3.4429419040679932e-01 5.4524090141057968e-02 + <_> + + 0 -1 162 -4.1576132178306580e-02 + + -5.5132204294204712e-01 3.2239176332950592e-02 + <_> + + 0 -1 659 -3.2582432031631470e-03 + + 2.1904261410236359e-01 -9.0739406645298004e-02 + <_> + + 0 -1 711 -4.4706808403134346e-03 + + 2.2556288540363312e-01 -9.5258384943008423e-02 + <_> + + 0 -1 177 -6.5750535577535629e-03 + + -4.8511472344398499e-01 4.1734144091606140e-02 + <_> + + 0 -1 251 -3.7532784044742584e-02 + + 2.0968079566955566e-01 -8.8354945182800293e-02 + <_> + + 0 -1 530 -1.2600638438016176e-03 + + 2.2111406922340393e-01 -9.0988010168075562e-02 + <_> + + 0 -1 28 -2.3967802524566650e-02 + + -6.2524855136871338e-01 3.0603738501667976e-02 + <_> + + 0 -1 225 -3.1747903674840927e-02 + + -6.2007570266723633e-01 2.5801742449402809e-02 + + <_> + 84 + -1.3265128135681152e+00 + + <_> + + 0 -1 801 -2.4247136898338795e-03 + + 4.3507692217826843e-01 -1.1363404244184494e-01 + <_> + + 0 -1 239 3.6287805996835232e-03 + + -1.5781879425048828e-01 3.3899685740470886e-01 + <_> + + 0 -1 591 -4.2556263506412506e-03 + + 2.2901295125484467e-01 -2.0403152704238892e-01 + <_> + + 0 -1 847 1.6322638839483261e-03 + + -1.9230945408344269e-01 2.0004445314407349e-01 + <_> + + 0 -1 338 1.4746835455298424e-02 + + -1.2184409052133560e-01 3.9130899310112000e-01 + <_> + + 0 -1 192 -1.5139304101467133e-02 + + 2.6918080449104309e-01 -1.4086124300956726e-01 + <_> + + 0 -1 21 -7.4753491207957268e-03 + + 2.1792158484458923e-01 -1.6056208312511444e-01 + <_> + + 0 -1 287 2.3232740350067616e-03 + + -1.6489887237548828e-01 1.7108000814914703e-01 + <_> + + 0 -1 899 -2.7532558888196945e-03 + + -5.3275841474533081e-01 5.2368167787790298e-02 + <_> + + 0 -1 896 -3.9793960750102997e-03 + + 3.4057796001434326e-01 -8.0085732042789459e-02 + <_> + + 0 -1 608 7.1728855371475220e-02 + + -7.2147607803344727e-02 4.0667375922203064e-01 + <_> + + 0 -1 883 -5.3792679682374001e-04 + + 1.7865169048309326e-01 -1.4902706444263458e-01 + <_> + + 0 -1 248 6.0019297525286674e-03 + + 7.1029536426067352e-02 -3.9921376109123230e-01 + <_> + + 0 -1 369 6.9427289068698883e-02 + + -9.5279395580291748e-02 2.6865223050117493e-01 + <_> + + 0 -1 130 -8.8401548564434052e-03 + + -5.3491175174713135e-01 5.0447739660739899e-02 + <_> + + 0 -1 699 -1.4551014639437199e-02 + + 1.9883459806442261e-01 -1.1586152762174606e-01 + <_> + + 0 -1 754 -1.7498439410701394e-03 + + 2.2214990854263306e-01 -9.8238572478294373e-02 + <_> + + 0 -1 246 -2.1636944264173508e-02 + + 2.8814041614532471e-01 -8.2750618457794189e-02 + <_> + + 0 -1 833 1.2786949053406715e-02 + + -8.7337315082550049e-02 2.6530647277832031e-01 + <_> + + 0 -1 57 -8.7271071970462799e-03 + + -5.3538525104522705e-01 5.0595279783010483e-02 + <_> + + 0 -1 1039 3.3185956999659538e-03 + + 4.5733701437711716e-02 -4.4758048653602600e-01 + <_> + + 0 -1 795 -1.2216938193887472e-03 + + 1.5257745981216431e-01 -1.4963941276073456e-01 + <_> + + 0 -1 562 3.9857804775238037e-02 + + -8.5655666887760162e-02 2.6823255419731140e-01 + <_> + + 0 -1 764 2.4454984813928604e-03 + + 4.6102020889520645e-02 -5.0574064254760742e-01 + <_> + + 0 -1 98 -4.2114150524139404e-01 + + 6.9476419687271118e-01 -3.2907195389270782e-02 + <_> + + 0 -1 558 2.3470625281333923e-02 + + -8.6790844798088074e-02 2.2723633050918579e-01 + <_> + + 0 -1 253 -1.1454307474195957e-02 + + 2.5413584709167480e-01 -8.8991768658161163e-02 + <_> + + 0 -1 624 5.0260839052498341e-03 + + 3.8961157202720642e-02 -5.9463697671890259e-01 + <_> + + 0 -1 873 1.6196466749534011e-03 + + -9.0231269598007202e-02 2.6204809546470642e-01 + <_> + + 0 -1 408 8.1676244735717773e-02 + + -8.0785289406776428e-02 2.5112318992614746e-01 + <_> + + 0 -1 483 -5.4313270375132561e-03 + + 1.6463221609592438e-01 -1.3186016678810120e-01 + <_> + + 0 -1 291 5.7006161659955978e-03 + + -1.3998855650424957e-01 1.4326113462448120e-01 + <_> + + 0 -1 221 -7.5926873832941055e-03 + + -5.5559343099594116e-01 3.7072587758302689e-02 + <_> + + 0 -1 618 7.5261802412569523e-03 + + 2.8434989973902702e-02 -5.8689045906066895e-01 + <_> + + 0 -1 869 -6.3516031950712204e-03 + + 1.4447389543056488e-01 -1.4542055130004883e-01 + <_> + + 0 -1 980 -7.6800247188657522e-04 + + 1.8556322157382965e-01 -1.0404425859451294e-01 + <_> + + 0 -1 941 -4.4167470186948776e-03 + + -7.0306748151779175e-01 3.0874395743012428e-02 + <_> + + 0 -1 1010 3.3405693247914314e-03 + + -6.6534630954265594e-02 3.4018290042877197e-01 + <_> + + 0 -1 114 1.1457607150077820e-02 + + 3.3658623695373535e-02 -6.1056423187255859e-01 + <_> + + 0 -1 1000 -1.8547235522419214e-03 + + -7.4722522497177124e-01 2.2372998297214508e-02 + <_> + + 0 -1 9 -1.9720013439655304e-01 + + -5.9932583570480347e-01 2.9283462092280388e-02 + <_> + + 0 -1 544 -2.6251156814396381e-03 + + -3.0683135986328125e-01 5.5391944944858551e-02 + <_> + + 0 -1 17 -2.7104711532592773e-01 + + -6.4121168851852417e-01 2.6428909972310066e-02 + <_> + + 0 -1 349 1.0233232751488686e-02 + + 4.5153360813856125e-02 -3.6883556842803955e-01 + <_> + + 0 -1 363 4.0971953421831131e-03 + + 4.1385501623153687e-02 -4.3035930395126343e-01 + <_> + + 0 -1 464 -8.8650803081691265e-04 + + 1.6314724087715149e-01 -1.1271495372056961e-01 + <_> + + 0 -1 721 -4.1144760325551033e-03 + + -5.5176359415054321e-01 3.3540870994329453e-02 + <_> + + 0 -1 940 -9.8663510289043188e-04 + + 2.1676342189311981e-01 -8.5408315062522888e-02 + <_> + + 0 -1 428 6.0831783339381218e-03 + + -8.7310679256916046e-02 2.3208071291446686e-01 + <_> + + 0 -1 789 -1.4624604955315590e-02 + + -5.9713214635848999e-01 3.0128041282296181e-02 + <_> + + 0 -1 787 1.3654056005179882e-02 + + 2.4816744029521942e-02 -6.2301605939865112e-01 + <_> + + 0 -1 820 4.2229411192238331e-03 + + -7.3886208236217499e-02 2.4938605725765228e-01 + <_> + + 0 -1 168 1.3268929906189442e-03 + + 4.0760166943073273e-02 -4.3510803580284119e-01 + <_> + + 0 -1 275 -9.6903974190354347e-04 + + 2.2486831247806549e-01 -7.8642837703227997e-02 + <_> + + 0 -1 274 1.0329007636755705e-03 + + -7.3648050427436829e-02 2.6808246970176697e-01 + <_> + + 0 -1 474 -4.2711962014436722e-03 + + -4.0931078791618347e-01 4.7851666808128357e-02 + <_> + + 0 -1 983 -3.7627927958965302e-03 + + -5.0520634651184082e-01 3.0405685305595398e-02 + <_> + + 0 -1 979 -1.7928264569491148e-03 + + 3.3886525034904480e-01 -5.3929597139358521e-02 + <_> + + 0 -1 148 3.9475625380873680e-03 + + 3.4511350095272064e-02 -5.2250456809997559e-01 + <_> + + 0 -1 827 -4.4537894427776337e-03 + + 2.2575919330120087e-01 -7.4650920927524567e-02 + <_> + + 0 -1 774 -2.9974281787872314e-02 + + -6.0629475116729736e-01 3.4456655383110046e-02 + <_> + + 0 -1 123 2.6775486767292023e-02 + + -8.8883727788925171e-02 2.0147153735160828e-01 + <_> + + 0 -1 302 -4.4971965253353119e-03 + + -5.3158396482467651e-01 3.3491309732198715e-02 + <_> + + 0 -1 620 -1.5196309424936771e-02 + + 2.8140705823898315e-01 -6.4074374735355377e-02 + <_> + + 0 -1 560 -2.1833679638803005e-03 + + 2.1953551471233368e-01 -8.5029341280460358e-02 + <_> + + 0 -1 317 -5.4325433447957039e-03 + + -4.8182886838912964e-01 3.8184959441423416e-02 + <_> + + 0 -1 463 -3.9055421948432922e-03 + + -3.5678783059120178e-01 4.5511916279792786e-02 + <_> + + 0 -1 1017 -5.0043486990034580e-03 + + -3.5324424505233765e-01 4.9539435654878616e-02 + <_> + + 0 -1 595 4.2052613571286201e-03 + + -7.6765090227127075e-02 2.4410718679428101e-01 + <_> + + 0 -1 642 -2.9198043048381805e-03 + + 2.8657916188240051e-01 -9.1479435563087463e-02 + <_> + + 0 -1 116 1.4442477375268936e-02 + + 2.2604020312428474e-02 -7.7516084909439087e-01 + <_> + + 0 -1 956 1.0879908688366413e-02 + + -8.9434660971164703e-02 1.8898591399192810e-01 + <_> + + 0 -1 707 1.2304648756980896e-01 + + 2.9145279899239540e-02 -5.6789475679397583e-01 + <_> + + 0 -1 301 5.4486069828271866e-02 + + -8.0465197563171387e-02 2.1073351800441742e-01 + <_> + + 0 -1 37 -1.0112209245562553e-02 + + 2.5688818097114563e-01 -7.3113977909088135e-02 + <_> + + 0 -1 145 -4.3551158159971237e-03 + + -4.0537205338478088e-01 5.1149621605873108e-02 + <_> + + 0 -1 377 2.8712721541523933e-03 + + -8.9186541736125946e-02 2.0391693711280823e-01 + <_> + + 0 -1 220 2.4744076654314995e-02 + + 3.1359996646642685e-02 -5.9586691856384277e-01 + <_> + + 0 -1 19 6.0209888033568859e-03 + + -8.2612000405788422e-02 2.1787849068641663e-01 + <_> + + 0 -1 852 6.0595902614295483e-03 + + 4.7610606998205185e-02 -3.5010379552841187e-01 + <_> + + 0 -1 324 -2.1957855671644211e-02 + + 2.2477181255817413e-01 -7.5377546250820160e-02 + <_> + + 0 -1 385 -3.9967135526239872e-03 + + 4.3043723702430725e-01 -3.9885677397251129e-02 + <_> + + 0 -1 745 -2.0381226204335690e-03 + + -5.8131587505340576e-01 3.2071832567453384e-02 + <_> + + 0 -1 337 3.8902673404663801e-03 + + -6.0279250144958496e-02 2.9424437880516052e-01 + + <_> + 82 + -1.2607949972152710e+00 + + <_> + + 0 -1 798 -1.9003680208697915e-03 + + 4.8600798845291138e-01 -7.5834542512893677e-02 + <_> + + 0 -1 238 1.5605278313159943e-03 + + -1.9763922691345215e-01 2.5329649448394775e-01 + <_> + + 0 -1 584 -4.8138713464140892e-03 + + 3.5302931070327759e-01 -1.2585695087909698e-01 + <_> + + 0 -1 870 5.7447804138064384e-03 + + -1.5453046560287476e-01 3.5572248697280884e-01 + <_> + + 0 -1 806 3.2787662930786610e-03 + + -1.8419209122657776e-01 1.6216333210468292e-01 + <_> + + 0 -1 423 2.8142044320702553e-03 + + -9.4009101390838623e-02 2.7667456865310669e-01 + <_> + + 0 -1 259 1.8096582498401403e-03 + + -8.9050479233264923e-02 2.9622453451156616e-01 + <_> + + 0 -1 988 7.2106244042515755e-03 + + -1.0854976624250412e-01 2.2157947719097137e-01 + <_> + + 0 -1 342 1.3368867337703705e-02 + + 5.8126326650381088e-02 -3.8564166426658630e-01 + <_> + + 0 -1 276 1.6755410470068455e-03 + + -6.9541916251182556e-02 3.6275833845138550e-01 + <_> + + 0 -1 198 -4.5782830566167831e-03 + + -5.6317430734634399e-01 3.9351724088191986e-02 + <_> + + 0 -1 729 3.6364984698593616e-03 + + -1.5140864253044128e-01 1.4790520071983337e-01 + <_> + + 0 -1 928 -1.1279541999101639e-02 + + -4.8907181620597839e-01 5.1109701395034790e-02 + <_> + + 0 -1 867 -1.2224027886986732e-02 + + -6.0496371984481812e-01 3.5609807819128036e-02 + <_> + + 0 -1 769 -2.8662174940109253e-02 + + 2.4556699395179749e-01 -9.9369116127490997e-02 + <_> + + 0 -1 496 6.7924216389656067e-02 + + -7.8038521111011505e-02 3.3691942691802979e-01 + <_> + + 0 -1 962 2.2719642147421837e-03 + + 5.8022607117891312e-02 -4.7124773263931274e-01 + <_> + + 0 -1 210 8.5627539083361626e-03 + + 3.4671626985073090e-02 -4.6883812546730042e-01 + <_> + + 0 -1 362 1.1866856366395950e-03 + + -8.0339640378952026e-02 2.5030750036239624e-01 + <_> + + 0 -1 979 8.1023329403251410e-04 + + -8.0605715513229370e-02 2.5741192698478699e-01 + <_> + + 0 -1 281 -4.0647285059094429e-03 + + -5.0938653945922852e-01 4.0403041988611221e-02 + <_> + + 0 -1 309 -1.9617568701505661e-02 + + -5.4703706502914429e-01 3.5078343003988266e-02 + <_> + + 0 -1 233 6.9989012554287910e-03 + + 2.6246270164847374e-02 -6.0453557968139648e-01 + <_> + + 0 -1 450 -6.2460554763674736e-03 + + 2.3062629997730255e-01 -8.3763726055622101e-02 + <_> + + 0 -1 529 7.5731135439127684e-04 + + -9.5188923180103302e-02 2.3367822170257568e-01 + <_> + + 0 -1 462 -3.2256892882287502e-03 + + 2.1003848314285278e-01 -1.2173316627740860e-01 + <_> + + 0 -1 941 -2.8797222767025232e-03 + + -4.8621371388435364e-01 4.3998546898365021e-02 + <_> + + 0 -1 740 5.9399371966719627e-03 + + 2.7645273134112358e-02 -6.2591820955276489e-01 + <_> + + 0 -1 742 -5.4768389090895653e-03 + + 2.5695452094078064e-01 -8.1276804208755493e-02 + <_> + + 0 -1 107 -2.2785080596804619e-02 + + -6.7479509115219116e-01 2.9845010489225388e-02 + <_> + + 0 -1 240 -6.0453559271991253e-03 + + -4.5132589340209961e-01 4.0413774549961090e-02 + <_> + + 0 -1 216 5.9022027999162674e-03 + + 4.6321801841259003e-02 -3.9377251267433167e-01 + <_> + + 0 -1 775 -1.1740738991647959e-03 + + 2.2063454985618591e-01 -8.9038714766502380e-02 + <_> + + 0 -1 835 -3.7963264621794224e-03 + + 1.7901860177516937e-01 -1.0518371313810349e-01 + <_> + + 0 -1 871 2.4132090620696545e-03 + + -9.3182116746902466e-02 2.9489630460739136e-01 + <_> + + 0 -1 543 4.5318575575947762e-04 + + -1.4386458694934845e-01 1.3717848062515259e-01 + <_> + + 0 -1 1029 1.8930386751890182e-02 + + 3.3168405294418335e-02 -5.5337232351303101e-01 + <_> + + 0 -1 652 -2.6878318749368191e-03 + + -5.4439735412597656e-01 3.1048862263560295e-02 + <_> + + 0 -1 672 -3.9407592266798019e-03 + + -6.5507227182388306e-01 2.4424355477094650e-02 + <_> + + 0 -1 599 2.1629813127219677e-03 + + -1.0160741209983826e-01 1.8277852237224579e-01 + <_> + + 0 -1 222 -2.9370808042585850e-03 + + -4.7847637534141541e-01 3.8538910448551178e-02 + <_> + + 0 -1 6 3.8221649825572968e-02 + + -7.6206430792808533e-02 2.3375664651393890e-01 + <_> + + 0 -1 393 -3.1483019702136517e-03 + + 2.5192636251449585e-01 -7.3695883154869080e-02 + <_> + + 0 -1 613 -4.5907422900199890e-03 + + -6.2766075134277344e-01 2.8896089643239975e-02 + <_> + + 0 -1 26 -9.5378428697586060e-02 + + -7.4559724330902100e-01 2.1207747980952263e-02 + <_> + + 0 -1 639 2.0872952882200480e-03 + + -8.7810918688774109e-02 2.0629811286926270e-01 + <_> + + 0 -1 635 -6.9244997575879097e-03 + + 1.8590562045574188e-01 -9.8790608346462250e-02 + <_> + + 0 -1 590 2.4594084825366735e-03 + + -1.0049589723348618e-01 2.2963477671146393e-01 + <_> + + 0 -1 1021 -5.2931695245206356e-03 + + -4.5924744009971619e-01 4.3104480952024460e-02 + <_> + + 0 -1 994 4.8847724683582783e-03 + + 4.6008609235286713e-02 -4.4277390837669373e-01 + <_> + + 0 -1 454 1.4400177169591188e-03 + + -5.9334080666303635e-02 3.0132320523262024e-01 + <_> + + 0 -1 156 -8.6052305996417999e-03 + + 1.9737368822097778e-01 -8.9747570455074310e-02 + <_> + + 0 -1 193 -6.1248587444424629e-03 + + -4.5141929388046265e-01 3.8760874420404434e-02 + <_> + + 0 -1 464 -1.8148655071854591e-03 + + 2.2768247127532959e-01 -8.2637414336204529e-02 + <_> + + 0 -1 330 -8.5119507275521755e-04 + + 1.9616322219371796e-01 -1.0013028979301453e-01 + <_> + + 0 -1 417 1.4472046867012978e-02 + + -8.8336527347564697e-02 1.9660694897174835e-01 + <_> + + 0 -1 628 1.4135142788290977e-02 + + -6.4112767577171326e-02 3.1887489557266235e-01 + <_> + + 0 -1 390 4.8004039563238621e-03 + + 4.8681098967790604e-02 -4.6234726905822754e-01 + <_> + + 0 -1 279 -3.3503584563732147e-02 + + 2.5094386935234070e-01 -8.0808885395526886e-02 + <_> + + 0 -1 943 2.4153569247573614e-03 + + -7.2777584195137024e-02 2.6076248288154602e-01 + <_> + + 0 -1 34 -1.3153228908777237e-02 + + 2.3979008197784424e-01 -7.6283767819404602e-02 + <_> + + 0 -1 718 -8.5048296023160219e-04 + + -3.2108953595161438e-01 5.7150222361087799e-02 + <_> + + 0 -1 511 2.0031477324664593e-03 + + -7.5618073344230652e-02 2.3024985194206238e-01 + <_> + + 0 -1 505 -3.9609652012586594e-03 + + -4.3856775760650635e-01 3.7756573408842087e-02 + <_> + + 0 -1 311 5.9846425428986549e-03 + + 3.5378426313400269e-02 -4.7760033607482910e-01 + <_> + + 0 -1 83 2.0205255597829819e-02 + + -8.0130979418754578e-02 2.2919151186943054e-01 + <_> + + 0 -1 927 -2.7492402587085962e-03 + + 2.1395626664161682e-01 -7.6452419161796570e-02 + <_> + + 0 -1 506 -8.3101191557943821e-04 + + 1.6961804032325745e-01 -9.9106967449188232e-02 + <_> + + 0 -1 604 -1.8657972104847431e-03 + + -3.8131290674209595e-01 4.6056091785430908e-02 + <_> + + 0 -1 74 2.0824437960982323e-03 + + 6.4966239035129547e-02 -2.3824627697467804e-01 + <_> + + 0 -1 70 -4.4267112389206886e-03 + + -3.5809823870658875e-01 4.6749643981456757e-02 + <_> + + 0 -1 211 1.3552411692216992e-03 + + -1.2307690829038620e-01 1.3934792578220367e-01 + <_> + + 0 -1 213 -4.4114869087934494e-03 + + 2.6617470383644104e-01 -7.4502207338809967e-02 + <_> + + 0 -1 432 5.2309304010123014e-04 + + -1.0876630991697311e-01 1.5687976777553558e-01 + <_> + + 0 -1 976 6.4505764748901129e-04 + + -8.0842182040214539e-02 2.0263716578483582e-01 + <_> + + 0 -1 975 2.0405012182891369e-03 + + -6.2390543520450592e-02 3.3067914843559265e-01 + <_> + + 0 -1 888 1.9838459789752960e-02 + + 2.3488542065024376e-02 -8.1695795059204102e-01 + <_> + + 0 -1 953 2.3998366668820381e-03 + + 4.1017178446054459e-02 -3.7197592854499817e-01 + <_> + + 0 -1 664 -1.1092903092503548e-02 + + -5.5750596523284912e-01 2.9520254582166672e-02 + <_> + + 0 -1 981 1.4876715838909149e-02 + + -6.5797492861747742e-02 2.5957426428794861e-01 + <_> + + 0 -1 621 -3.0385032296180725e-02 + + 2.2640630602836609e-01 -7.6991938054561615e-02 + <_> + + 0 -1 666 1.2216348201036453e-02 + + -7.0106968283653259e-02 2.4013392627239227e-01 + + <_> + 94 + -1.2798616886138916e+00 + + <_> + + 0 -1 801 -3.8322431501001120e-03 + + 4.8065602779388428e-01 -4.9388073384761810e-02 + <_> + + 0 -1 966 2.5449637323617935e-03 + + -1.7564620077610016e-01 2.5865191221237183e-01 + <_> + + 0 -1 448 -5.4743299260735512e-03 + + 4.9321442842483521e-01 -7.0596724748611450e-02 + <_> + + 0 -1 294 1.5188493765890598e-02 + + -1.8555639684200287e-01 1.5278494358062744e-01 + <_> + + 0 -1 954 7.5815798481926322e-04 + + -1.5043407678604126e-01 1.8612807989120483e-01 + <_> + + 0 -1 963 -3.4232349134981632e-03 + + -4.5882478356361389e-01 4.3279532343149185e-02 + <_> + + 0 -1 842 2.4103666655719280e-03 + + -8.4217190742492676e-02 2.6687353849411011e-01 + <_> + + 0 -1 340 -2.3144368082284927e-02 + + 2.9155749082565308e-01 -9.9449791014194489e-02 + <_> + + 0 -1 419 -4.2331898584961891e-03 + + -3.7696760892868042e-01 8.0511704087257385e-02 + <_> + + 0 -1 282 4.9294121563434601e-03 + + -1.3016121089458466e-01 1.8470372259616852e-01 + <_> + + 0 -1 481 -2.7466980100143701e-05 + + 1.4074377715587616e-01 -1.7928679287433624e-01 + <_> + + 0 -1 724 2.2430901881307364e-03 + + -1.4674974977970123e-01 1.5197925269603729e-01 + <_> + + 0 -1 849 7.5493026524782181e-03 + + 2.4894557893276215e-02 -6.5740859508514404e-01 + <_> + + 0 -1 245 -3.3066330943256617e-03 + + 1.8501703441143036e-01 -1.1837758123874664e-01 + <_> + + 0 -1 345 6.9540860131382942e-03 + + -7.3770649731159210e-02 2.9017251729965210e-01 + <_> + + 0 -1 790 -8.6210696026682854e-03 + + 2.0990766584873199e-01 -1.0644201189279556e-01 + <_> + + 0 -1 978 -6.0504255816340446e-04 + + 2.2373022139072418e-01 -9.6104651689529419e-02 + <_> + + 0 -1 46 -4.5433510094881058e-03 + + -5.4173427820205688e-01 4.7511249780654907e-02 + <_> + + 0 -1 694 -2.2248399909585714e-03 + + -4.6854707598686218e-01 3.8701556622982025e-02 + <_> + + 0 -1 10 -5.3389102220535278e-02 + + 2.9293462634086609e-01 -7.2517670691013336e-02 + <_> + + 0 -1 13 4.6098522841930389e-02 + + -1.0042577981948853e-01 2.3779328167438507e-01 + <_> + + 0 -1 243 7.7845109626650810e-03 + + 3.7205196917057037e-02 -4.9194374680519104e-01 + <_> + + 0 -1 182 6.0175172984600067e-03 + + 4.4034618884325027e-02 -4.3780878186225891e-01 + <_> + + 0 -1 876 4.8966710455715656e-03 + + -1.0375351458787918e-01 1.9480220973491669e-01 + <_> + + 0 -1 494 -3.1284091528505087e-03 + + 2.3669239878654480e-01 -9.6020378172397614e-02 + <_> + + 0 -1 190 -1.3859109021723270e-03 + + 2.8487151861190796e-01 -7.2190955281257629e-02 + <_> + + 0 -1 191 2.6260318700224161e-03 + + -8.5511997342109680e-02 3.0152606964111328e-01 + <_> + + 0 -1 65 1.7782470583915710e-01 + + -6.4100205898284912e-02 3.3825826644897461e-01 + <_> + + 0 -1 50 1.7538113519549370e-02 + + 5.9994459152221680e-02 -3.5529783368110657e-01 + <_> + + 0 -1 946 -3.2135979272425175e-03 + + 1.3668337464332581e-01 -1.3979049026966095e-01 + <_> + + 0 -1 461 6.1371903866529465e-03 + + -6.2439329922199249e-02 3.0614212155342102e-01 + <_> + + 0 -1 467 -4.6563488431274891e-03 + + -4.3073609471321106e-01 4.9068968743085861e-02 + <_> + + 0 -1 668 -4.0680947713553905e-03 + + -4.6810126304626465e-01 3.7441805005073547e-02 + <_> + + 0 -1 696 1.4199400320649147e-03 + + -8.7975829839706421e-02 2.1591611206531525e-01 + <_> + + 0 -1 851 3.5254685208201408e-03 + + 4.6650484204292297e-02 -4.3687531352043152e-01 + <_> + + 0 -1 487 1.8623860552906990e-02 + + -7.6216101646423340e-02 2.3812168836593628e-01 + <_> + + 0 -1 314 -2.6926528662443161e-02 + + -6.7117422819137573e-01 2.9464269056916237e-02 + <_> + + 0 -1 632 2.2593191824853420e-03 + + 2.8521748259663582e-02 -5.4787307977676392e-01 + <_> + + 0 -1 919 1.7519816174171865e-04 + + -1.6111046075820923e-01 1.0367503762245178e-01 + <_> + + 0 -1 493 1.0614154860377312e-02 + + 4.5461904257535934e-02 -3.8087964057922363e-01 + <_> + + 0 -1 20 -4.4702589511871338e-03 + + 1.4304992556571960e-01 -1.3372300565242767e-01 + <_> + + 0 -1 557 6.2367701902985573e-03 + + -7.7783808112144470e-02 2.1545551717281342e-01 + <_> + + 0 -1 76 4.6502514742314816e-03 + + 4.6132039278745651e-02 -3.7130251526832581e-01 + <_> + + 0 -1 544 -4.3315230868756771e-03 + + -4.1549521684646606e-01 3.8484618067741394e-02 + <_> + + 0 -1 764 -1.6567837446928024e-03 + + -3.4637498855590820e-01 4.6623144298791885e-02 + <_> + + 0 -1 415 4.7653233632445335e-03 + + -5.0808548927307129e-02 3.4609997272491455e-01 + <_> + + 0 -1 413 -3.2579647377133369e-03 + + 2.6948198676109314e-01 -8.5287831723690033e-02 + <_> + + 0 -1 614 2.3307730443775654e-03 + + -7.4774339795112610e-02 2.3053503036499023e-01 + <_> + + 0 -1 176 -2.7928136289119720e-02 + + 1.9429244101047516e-01 -8.7820984423160553e-02 + <_> + + 0 -1 366 -9.8205050453543663e-03 + + -5.9664642810821533e-01 3.1795132905244827e-02 + <_> + + 0 -1 767 4.9811266362667084e-03 + + -1.1911241710186005e-01 1.5268225967884064e-01 + <_> + + 0 -1 508 -2.4869772605597973e-03 + + -3.8041505217552185e-01 4.4293139129877090e-02 + <_> + + 0 -1 780 5.4475376382470131e-03 + + -4.6219147741794586e-02 3.9531415700912476e-01 + <_> + + 0 -1 277 -2.1438062191009521e-02 + + -5.2191144227981567e-01 3.4259662032127380e-02 + <_> + + 0 -1 566 -4.1901203803718090e-03 + + -5.2377271652221680e-01 2.8632357716560364e-02 + <_> + + 0 -1 262 -4.7237933613359928e-03 + + 1.8694585561752319e-01 -8.3333678543567657e-02 + <_> + + 0 -1 845 1.2320578098297119e-03 + + -9.6744544804096222e-02 1.8287587165832520e-01 + <_> + + 0 -1 617 2.0271677523851395e-02 + + -6.4628154039382935e-02 2.7641129493713379e-01 + <_> + + 0 -1 375 -1.0729704797267914e-01 + + 4.3015307188034058e-01 -3.8674801588058472e-02 + <_> + + 0 -1 166 -4.0820333361625671e-01 + + 5.0520670413970947e-01 -3.0450601130723953e-02 + <_> + + 0 -1 305 4.4355981051921844e-02 + + -9.2204704880714417e-02 1.7342080175876617e-01 + <_> + + 0 -1 879 -1.0999260703101754e-03 + + 2.0996508002281189e-01 -7.7222190797328949e-02 + <_> + + 0 -1 325 -3.2928451895713806e-02 + + 2.7598264813423157e-01 -6.4115919172763824e-02 + <_> + + 0 -1 52 2.3981094360351562e-02 + + 2.5229524821043015e-02 -6.9560426473617554e-01 + <_> + + 0 -1 961 4.1703339666128159e-03 + + 2.9712976887822151e-02 -4.8132696747779846e-01 + <_> + + 0 -1 776 -1.4920771354809403e-03 + + 1.6165184974670410e-01 -9.6420668065547943e-02 + <_> + + 0 -1 652 1.8172110430896282e-03 + + 4.2247310280799866e-02 -3.5703054070472717e-01 + <_> + + 0 -1 739 -2.5937356986105442e-03 + + 2.2665317356586456e-01 -6.9081544876098633e-02 + <_> + + 0 -1 706 -2.4995308369398117e-02 + + -6.3855916261672974e-01 2.8458235785365105e-02 + <_> + + 0 -1 909 1.2001263909041882e-02 + + 1.4999576844274998e-02 -7.8175085783004761e-01 + <_> + + 0 -1 640 2.2153530735522509e-03 + + -8.8839285075664520e-02 1.8819671869277954e-01 + <_> + + 0 -1 179 2.7237991162110120e-05 + + -1.4949426054954529e-01 9.8739065229892731e-02 + <_> + + 0 -1 91 -2.6735704392194748e-02 + + -4.5522138476371765e-01 3.2516691833734512e-02 + <_> + + 0 -1 644 -2.3417242337018251e-03 + + -3.1453001499176025e-01 4.7598775476217270e-02 + <_> + + 0 -1 72 4.7831580042839050e-02 + + 2.1954061463475227e-02 -6.1162966489791870e-01 + <_> + + 0 -1 160 -5.7228151708841324e-03 + + -6.3381904363632202e-01 2.0299639552831650e-02 + <_> + + 0 -1 163 3.4780064597725868e-03 + + 3.1021401286125183e-02 -4.2342424392700195e-01 + <_> + + 0 -1 385 -5.4140854626893997e-03 + + 4.7739461064338684e-01 -3.4031655639410019e-02 + <_> + + 0 -1 383 1.5283382963389158e-03 + + -9.6935935318470001e-02 1.9429819285869598e-01 + <_> + + 0 -1 428 -8.6789112538099289e-03 + + 2.4826894700527191e-01 -6.0082063078880310e-02 + <_> + + 0 -1 901 3.0333681497722864e-03 + + -7.4087560176849365e-02 2.6165533065795898e-01 + <_> + + 0 -1 684 6.5222466364502907e-03 + + 3.0176062136888504e-02 -5.5570882558822632e-01 + <_> + + 0 -1 902 5.9719551354646683e-03 + + 2.3057831451296806e-02 -5.7078248262405396e-01 + <_> + + 0 -1 155 -1.3977952767163515e-03 + + 1.5342144668102264e-01 -9.8401337862014771e-02 + <_> + + 0 -1 897 5.9919534251093864e-03 + + -3.9796624332666397e-02 3.5881185531616211e-01 + <_> + + 0 -1 354 2.6286500506103039e-03 + + -9.3140766024589539e-02 1.6334943473339081e-01 + <_> + + 0 -1 296 -4.4777179136872292e-03 + + -4.8081240057945251e-01 3.2935630530118942e-02 + <_> + + 0 -1 333 5.2724601700901985e-03 + + 3.0787551775574684e-02 -4.5133110880851746e-01 + <_> + + 0 -1 1049 -3.2540475949645042e-03 + + -4.7695344686508179e-01 2.8554188087582588e-02 + <_> + + 0 -1 736 1.8083681166172028e-01 + + 2.7366345748305321e-02 -4.9431446194648743e-01 + <_> + + 0 -1 431 2.7535988483577967e-03 + + 1.9968675449490547e-02 -6.4471620321273804e-01 + <_> + + 0 -1 15 -1.4123708009719849e-02 + + -5.2748751640319824e-01 2.4596616625785828e-02 + <_> + + 0 -1 421 -3.2076485455036163e-02 + + -7.2171974182128906e-01 1.6940405592322350e-02 + <_> + + 0 -1 434 -3.2569766044616699e-02 + + 2.2400286793708801e-01 -6.3403561711311340e-02 + + <_> + 100 + -1.2990239858627319e+00 + + <_> + + 0 -1 728 1.1235726065933704e-02 + + -1.2534695863723755e-01 3.9147180318832397e-01 + <_> + + 0 -1 922 5.0947451964020729e-03 + + -1.2666413187980652e-01 4.0618515014648438e-01 + <_> + + 0 -1 891 -1.5323986299335957e-03 + + 2.8940162062644958e-01 -1.4350101351737976e-01 + <_> + + 0 -1 284 3.7766513414680958e-03 + + -1.9189934432506561e-01 1.4756591618061066e-01 + <_> + + 0 -1 514 4.8757870681583881e-03 + + -1.2341982126235962e-01 2.3298588395118713e-01 + <_> + + 0 -1 344 3.1278211623430252e-02 + + -7.6286941766738892e-02 3.4027433395385742e-01 + <_> + + 0 -1 63 6.3753505237400532e-03 + + 7.3992513120174408e-02 -3.2609656453132629e-01 + <_> + + 0 -1 936 -9.8742637783288956e-04 + + 2.4873960018157959e-01 -9.0153135359287262e-02 + <_> + + 0 -1 217 -3.0144110321998596e-02 + + -5.1088541746139526e-01 5.0071869045495987e-02 + <_> + + 0 -1 268 4.7727730125188828e-03 + + 5.1353454589843750e-02 -4.1142973303794861e-01 + <_> + + 0 -1 420 6.4554966986179352e-02 + + 4.5133572071790695e-02 -4.8264691233634949e-01 + <_> + + 0 -1 744 8.0438675358891487e-03 + + -6.3803412020206451e-02 3.0405151844024658e-01 + <_> + + 0 -1 1051 1.0576066561043262e-03 + + 4.9984093755483627e-02 -3.3949175477027893e-01 + <_> + + 0 -1 938 6.8522170186042786e-03 + + 3.5091523081064224e-02 -6.7847234010696411e-01 + <_> + + 0 -1 860 -1.7977621406316757e-02 + + -3.7503832578659058e-01 4.0370170027017593e-02 + <_> + + 0 -1 748 -2.9955487698316574e-02 + + -4.2023807764053345e-01 4.2222321033477783e-02 + <_> + + 0 -1 14 2.0934976637363434e-02 + + 4.3809924274682999e-02 -4.1159108281135559e-01 + <_> + + 0 -1 499 -1.0348223149776459e-03 + + 1.7594149708747864e-01 -1.0171056538820267e-01 + <_> + + 0 -1 15 1.1026043444871902e-02 + + 3.7518307566642761e-02 -4.9795153737068176e-01 + <_> + + 0 -1 201 4.1434396989643574e-03 + + -7.7400334179401398e-02 2.3505100607872009e-01 + <_> + + 0 -1 423 -1.4838734641671181e-03 + + 2.9909220337867737e-01 -9.2648021876811981e-02 + <_> + + 0 -1 1025 4.0641101077198982e-03 + + 3.8187902420759201e-02 -5.9566622972488403e-01 + <_> + + 0 -1 108 -2.6055248454213142e-03 + + 1.4647382497787476e-01 -1.1769902706146240e-01 + <_> + + 0 -1 834 -1.8873009830713272e-02 + + 2.0791313052177429e-01 -9.1127894818782806e-02 + <_> + + 0 -1 960 1.0428125038743019e-02 + + 4.3083548545837402e-02 -4.1407048702239990e-01 + <_> + + 0 -1 460 1.9560819491744041e-03 + + -6.5898597240447998e-02 2.6488196849822998e-01 + <_> + + 0 -1 402 6.1143590137362480e-03 + + 4.7718580812215805e-02 -4.3339842557907104e-01 + <_> + + 0 -1 411 3.9817169308662415e-03 + + 2.8663935139775276e-02 -5.4472506046295166e-01 + <_> + + 0 -1 497 -9.0858177281916142e-04 + + 1.2656490504741669e-01 -1.3804104924201965e-01 + <_> + + 0 -1 548 -5.1833119243383408e-02 + + 2.9838389158248901e-01 -6.4876683056354523e-02 + <_> + + 0 -1 550 -6.1461031436920166e-02 + + 2.2751982510089874e-01 -7.7075794339179993e-02 + <_> + + 0 -1 771 -3.8890805444680154e-04 + + 1.4823918044567108e-01 -1.2443733215332031e-01 + <_> + + 0 -1 819 6.3632195815443993e-03 + + 3.3928975462913513e-02 -5.5825293064117432e-01 + <_> + + 0 -1 929 2.3877150379121304e-03 + + -6.0555700212717056e-02 2.9875907301902771e-01 + <_> + + 0 -1 718 2.1584378555417061e-03 + + 2.6707226410508156e-02 -6.5327596664428711e-01 + <_> + + 0 -1 972 1.3073299778625369e-03 + + -6.5057143568992615e-02 2.8509995341300964e-01 + <_> + + 0 -1 1023 2.7173646230949089e-05 + + -1.4736446738243103e-01 1.1435943096876144e-01 + <_> + + 0 -1 630 2.5558518245816231e-03 + + 2.2957315668463707e-02 -6.1825275421142578e-01 + <_> + + 0 -1 435 4.4789682142436504e-03 + + 3.6877695471048355e-02 -4.1827708482742310e-01 + <_> + + 0 -1 335 -4.0298998355865479e-02 + + -6.8164646625518799e-01 2.1755648776888847e-02 + <_> + + 0 -1 782 -3.2729938626289368e-02 + + -5.4164266586303711e-01 2.6013873517513275e-02 + <_> + + 0 -1 1011 -1.6982981469482183e-03 + + 3.5175332427024841e-01 -4.7216285020112991e-02 + <_> + + 0 -1 331 3.6859638057649136e-03 + + 4.9838334321975708e-02 -3.0565607547760010e-01 + <_> + + 0 -1 235 1.8905990291386843e-03 + + 2.3341298103332520e-02 -6.6700172424316406e-01 + <_> + + 0 -1 714 4.9954187124967575e-03 + + 2.5513354688882828e-02 -5.4635345935821533e-01 + <_> + + 0 -1 336 -5.5998284369707108e-03 + + 2.9532432556152344e-01 -5.9350244700908661e-02 + <_> + + 0 -1 1008 -1.0907559189945459e-03 + + 1.8265166878700256e-01 -9.8137028515338898e-02 + <_> + + 0 -1 975 -7.4323470471426845e-04 + + 1.9020494818687439e-01 -8.7386451661586761e-02 + <_> + + 0 -1 914 2.7787161525338888e-03 + + 3.2241951674222946e-02 -4.8055323958396912e-01 + <_> + + 0 -1 153 2.4344769772142172e-03 + + 4.6477138996124268e-02 -2.9923307895660400e-01 + <_> + + 0 -1 293 2.8132982552051544e-03 + + -9.0026579797267914e-02 1.6738441586494446e-01 + <_> + + 0 -1 73 3.2191604375839233e-02 + + -6.3697919249534607e-02 2.8380525112152100e-01 + <_> + + 0 -1 656 -1.8642821814864874e-03 + + 2.0616722106933594e-01 -7.4722714722156525e-02 + <_> + + 0 -1 657 4.0091956034302711e-03 + + -7.1015752851963043e-02 2.5589218735694885e-01 + <_> + + 0 -1 150 -5.1108514890074730e-03 + + -4.8940917849540710e-01 3.4555420279502869e-02 + <_> + + 0 -1 600 -1.9523575901985168e-02 + + 3.1921747326850891e-01 -5.1439035683870316e-02 + <_> + + 0 -1 298 -1.4431261457502842e-02 + + 1.4213174581527710e-01 -1.1113181710243225e-01 + <_> + + 0 -1 732 4.5302580110728741e-04 + + -1.0926237702369690e-01 1.4363190531730652e-01 + <_> + + 0 -1 78 -5.4108840413391590e-03 + + -4.6926099061965942e-01 3.1095381826162338e-02 + <_> + + 0 -1 259 1.6963672824203968e-03 + + -6.7337587475776672e-02 2.2115154564380646e-01 + <_> + + 0 -1 190 1.8719944637268782e-03 + + -5.8433420956134796e-02 2.7830049395561218e-01 + <_> + + 0 -1 1014 -8.3780642598867416e-03 + + -4.6290600299835205e-01 3.3701810985803604e-02 + <_> + + 0 -1 510 1.0720299184322357e-01 + + 2.6600774377584457e-02 -5.0957643985748291e-01 + <_> + + 0 -1 670 -1.5523867914453149e-03 + + -5.7974040508270264e-01 2.2188233211636543e-02 + <_> + + 0 -1 649 -1.0537400841712952e-02 + + -4.3835061788558960e-01 2.9434528201818466e-02 + <_> + + 0 -1 1038 3.1337797641754150e-02 + + 2.0445786416530609e-02 -6.3010692596435547e-01 + <_> + + 0 -1 1004 -5.1124744117259979e-02 + + -6.7282766103744507e-01 1.8230145797133446e-02 + <_> + + 0 -1 362 -6.0091790510341525e-04 + + 2.0237097144126892e-01 -7.2557553648948669e-02 + <_> + + 0 -1 409 1.6933252336457372e-03 + + -5.9000160545110703e-02 2.4010565876960754e-01 + <_> + + 0 -1 18 5.7134744711220264e-03 + + 2.9386352747678757e-02 -5.1309728622436523e-01 + <_> + + 0 -1 429 -9.6922749653458595e-03 + + -5.4907989501953125e-01 2.3704739287495613e-02 + <_> + + 0 -1 308 -1.2504560872912407e-02 + + -6.1863696575164795e-01 1.9876839593052864e-02 + <_> + + 0 -1 382 -9.1812955215573311e-03 + + -4.7697570919990540e-01 2.5203671306371689e-02 + <_> + + 0 -1 570 2.8069302439689636e-02 + + -5.5565606802701950e-02 2.5318285822868347e-01 + <_> + + 0 -1 573 4.6324366703629494e-03 + + 2.5273589417338371e-02 -5.9603255987167358e-01 + <_> + + 0 -1 784 2.9409723356366158e-03 + + -5.1576137542724609e-02 2.9322555661201477e-01 + <_> + + 0 -1 159 -1.6009721904993057e-02 + + 2.9389014840126038e-01 -4.7874812036752701e-02 + <_> + + 0 -1 355 -2.0468614995479584e-02 + + 1.4383009076118469e-01 -1.0160042345523834e-01 + <_> + + 0 -1 868 2.3338340222835541e-02 + + -5.7301126420497894e-02 2.9121819138526917e-01 + <_> + + 0 -1 921 -2.1875634789466858e-02 + + -6.4106851816177368e-01 2.4203805252909660e-02 + <_> + + 0 -1 427 1.1228370480239391e-02 + + -5.2143514156341553e-02 2.8465506434440613e-01 + <_> + + 0 -1 197 -4.3659657239913940e-03 + + -6.0558545589447021e-01 2.5440702214837074e-02 + <_> + + 0 -1 824 1.1577639961615205e-03 + + -8.9793093502521515e-02 1.6500258445739746e-01 + <_> + + 0 -1 781 1.1090341955423355e-02 + + 2.4472476914525032e-02 -6.1380225419998169e-01 + <_> + + 0 -1 1015 4.7660744749009609e-03 + + 4.1726417839527130e-02 -3.2548862695693970e-01 + <_> + + 0 -1 864 2.4865168597898446e-05 + + -1.2436556816101074e-01 1.1702288687229156e-01 + <_> + + 0 -1 823 -7.6379198580980301e-03 + + -4.9008071422576904e-01 2.9381709173321724e-02 + <_> + + 0 -1 445 -3.2750256359577179e-03 + + 1.7950019240379333e-01 -8.0592408776283264e-02 + <_> + + 0 -1 448 1.3944536913186312e-03 + + -8.0001771450042725e-02 2.2785140573978424e-01 + <_> + + 0 -1 444 1.9776031840592623e-03 + + 3.4109916538000107e-02 -4.8504865169525146e-01 + <_> + + 0 -1 39 -3.9329148828983307e-02 + + -6.8790251016616821e-01 1.7370922490954399e-02 + <_> + + 0 -1 645 -2.8447234071791172e-03 + + 2.3028372228145599e-01 -6.6618286073207855e-02 + <_> + + 0 -1 232 3.2375190407037735e-02 + + -7.5743824243545532e-02 1.7864570021629333e-01 + <_> + + 0 -1 5 5.1314428448677063e-02 + + -5.3142681717872620e-02 2.8643575310707092e-01 + <_> + + 0 -1 79 4.6999715268611908e-03 + + 3.5749543458223343e-02 -4.0437424182891846e-01 + <_> + + 0 -1 173 -2.0850417204201221e-03 + + -3.0815458297729492e-01 4.2763352394104004e-02 + <_> + + 0 -1 455 -9.1223767958581448e-04 + + 2.1245715022087097e-01 -6.7729450762271881e-02 + <_> + + 0 -1 690 -2.2479293693322688e-04 + + 1.3159312307834625e-01 -1.0141336172819138e-01 + <_> + + 0 -1 974 3.1234124675393105e-02 + + -8.9100256562232971e-02 1.5734429657459259e-01 + <_> + + 0 -1 465 -1.5079543227329850e-03 + + 3.2412421703338623e-01 -4.4387526810169220e-02 + + <_> + 100 + -1.2500010728836060e+00 + + <_> + + 0 -1 803 -5.5631361901760101e-03 + + 4.5343571901321411e-01 -5.2330773323774338e-02 + <_> + + 0 -1 426 4.1911248117685318e-03 + + -1.2266161292791367e-01 3.6830583214759827e-01 + <_> + + 0 -1 424 -1.8559540621936321e-03 + + 2.4044598639011383e-01 -1.5207393467426300e-01 + <_> + + 0 -1 532 -1.1846812441945076e-02 + + 2.7016878128051758e-01 -1.1934488266706467e-01 + <_> + + 0 -1 180 1.0401019826531410e-03 + + -2.3527304828166962e-01 9.5964968204498291e-02 + <_> + + 0 -1 462 9.3873767182230949e-03 + + -5.6923847645521164e-02 4.2236638069152832e-01 + <_> + + 0 -1 13 9.0843521058559418e-02 + + -6.3625380396842957e-02 3.8295668363571167e-01 + <_> + + 0 -1 439 -1.6221515834331512e-03 + + 1.8148291110992432e-01 -1.3424767553806305e-01 + <_> + + 0 -1 875 -1.8008962273597717e-02 + + 2.7346464991569519e-01 -7.6283894479274750e-02 + <_> + + 0 -1 278 8.6509017273783684e-03 + + 5.8148156851530075e-02 -5.2620184421539307e-01 + <_> + + 0 -1 726 2.8817038983106613e-03 + + 2.6940831914544106e-02 -4.7911167144775391e-01 + <_> + + 0 -1 263 -6.1017833650112152e-03 + + 1.7878855764865875e-01 -1.2378337979316711e-01 + <_> + + 0 -1 403 -5.9294269885867834e-04 + + -2.7179723978042603e-01 8.0951526761054993e-02 + <_> + + 0 -1 996 3.1696190126240253e-04 + + -1.7311862111091614e-01 1.0296358913183212e-01 + <_> + + 0 -1 519 6.6280784085392952e-03 + + -5.8870136737823486e-02 2.9477587342262268e-01 + <_> + + 0 -1 916 -4.5112203806638718e-03 + + -5.9672296047210693e-01 2.7053238824009895e-02 + <_> + + 0 -1 679 -4.3381296098232269e-02 + + -4.2040801048278809e-01 4.0890187025070190e-02 + <_> + + 0 -1 813 2.0323593635112047e-03 + + 5.5178079754114151e-02 -3.0439695715904236e-01 + <_> + + 0 -1 973 1.8127080984413624e-03 + + -8.2048252224922180e-02 2.1907366812229156e-01 + <_> + + 0 -1 359 -6.6424394026398659e-03 + + -4.7840338945388794e-01 4.4878169894218445e-02 + <_> + + 0 -1 903 -8.5755460895597935e-04 + + 1.3301849365234375e-01 -1.2699788808822632e-01 + <_> + + 0 -1 904 3.4769098274409771e-03 + + -7.1578972041606903e-02 2.5448271632194519e-01 + <_> + + 0 -1 950 -1.8520625308156013e-03 + + 1.5127970278263092e-01 -1.2349219620227814e-01 + <_> + + 0 -1 777 5.4582338780164719e-03 + + 3.5001352429389954e-02 -4.8021456599235535e-01 + <_> + + 0 -1 894 -6.4206691458821297e-03 + + -5.6509351730346680e-01 2.6883032172918320e-02 + <_> + + 0 -1 895 8.2498416304588318e-03 + + 4.3442543596029282e-02 -3.7965279817581177e-01 + <_> + + 0 -1 825 3.0813394114375114e-03 + + -5.6544844061136246e-02 3.2101437449455261e-01 + <_> + + 0 -1 865 2.8121876530349255e-03 + + -7.1444042026996613e-02 2.8035575151443481e-01 + <_> + + 0 -1 418 -1.1791236698627472e-02 + + 2.0067863166332245e-01 -1.0047248005867004e-01 + <_> + + 0 -1 476 1.4931729529052973e-03 + + -6.6428750753402710e-02 2.6187655329704285e-01 + <_> + + 0 -1 364 -2.8772680088877678e-03 + + -4.5838123559951782e-01 4.2477916926145554e-02 + <_> + + 0 -1 592 -4.5857336372137070e-03 + + 1.2718579173088074e-01 -1.3642288744449615e-01 + <_> + + 0 -1 585 -1.3770985417068005e-02 + + -6.4000308513641357e-01 2.7297915890812874e-02 + <_> + + 0 -1 746 -3.6472730338573456e-02 + + -5.1465278863906860e-01 3.1265191733837128e-02 + <_> + + 0 -1 378 1.0626764036715031e-02 + + 2.4199636653065681e-02 -6.3441967964172363e-01 + <_> + + 0 -1 509 -3.6817211657762527e-03 + + -4.4575414061546326e-01 3.1119547784328461e-02 + <_> + + 0 -1 856 -3.4752404317259789e-03 + + 1.4008119702339172e-01 -1.0539831966161728e-01 + <_> + + 0 -1 815 -4.7973562031984329e-03 + + 2.8762820363044739e-01 -6.0662355273962021e-02 + <_> + + 0 -1 773 6.4153699204325676e-03 + + -1.1230263859033585e-01 1.4087037742137909e-01 + <_> + + 0 -1 814 -1.0156400967389345e-03 + + -3.3441004157066345e-01 4.3477565050125122e-02 + <_> + + 0 -1 968 3.3057793043553829e-03 + + 1.9609324634075165e-02 -7.0060092210769653e-01 + <_> + + 0 -1 100 -5.3275022655725479e-03 + + 2.4580952525138855e-01 -6.0118518769741058e-02 + <_> + + 0 -1 469 1.5886269975453615e-03 + + -7.7446170151233673e-02 1.9878011941909790e-01 + <_> + + 0 -1 520 4.7287968918681145e-03 + + 3.0098341405391693e-02 -5.0950014591217041e-01 + <_> + + 0 -1 741 -1.9788878853432834e-04 + + 1.5142950415611267e-01 -9.6688762307167053e-02 + <_> + + 0 -1 389 -4.9208370037376881e-03 + + -4.5343187451362610e-01 3.7627156823873520e-02 + <_> + + 0 -1 361 4.5094583183526993e-02 + + -8.5510566830635071e-02 1.7849470674991608e-01 + <_> + + 0 -1 944 1.4799998607486486e-03 + + -6.4638271927833557e-02 2.3496921360492706e-01 + <_> + + 0 -1 517 1.0061380267143250e-01 + + -3.0139762908220291e-02 4.9012109637260437e-01 + <_> + + 0 -1 688 -5.2844230085611343e-03 + + 1.7104546725749969e-01 -8.7710574269294739e-02 + <_> + + 0 -1 626 -8.3214940968900919e-04 + + -2.6654696464538574e-01 5.3875535726547241e-02 + <_> + + 0 -1 190 -8.8889291509985924e-04 + + 1.8824113905429840e-01 -8.0119885504245758e-02 + <_> + + 0 -1 191 2.2177316714078188e-03 + + -6.9703146815299988e-02 2.0391084253787994e-01 + <_> + + 0 -1 674 -1.1522162239998579e-03 + + -3.6508113145828247e-01 3.9048090577125549e-02 + <_> + + 0 -1 1036 -1.0836161673069000e-02 + + -5.8106678724288940e-01 2.1713526919484138e-02 + <_> + + 0 -1 82 -1.6731536388397217e-01 + + -4.7344669699668884e-01 2.6662701740860939e-02 + <_> + + 0 -1 515 -9.5267388969659805e-03 + + 2.7732986211776733e-01 -5.6512769311666489e-02 + <_> + + 0 -1 329 6.6450019367039204e-03 + + 2.9381312429904938e-02 -5.3565382957458496e-01 + <_> + + 0 -1 104 -2.1554589271545410e-02 + + -6.2839144468307495e-01 1.8782904371619225e-02 + <_> + + 0 -1 892 1.4288825332187116e-04 + + -1.2763719260692596e-01 1.0616952925920486e-01 + <_> + + 0 -1 319 1.8068919889628887e-03 + + 4.2757544666528702e-02 -3.2102146744728088e-01 + <_> + + 0 -1 979 1.2280542869120836e-03 + + -5.7478122413158417e-02 2.5948432087898254e-01 + <_> + + 0 -1 89 2.6250675320625305e-02 + + -9.5928788185119629e-02 1.4502045512199402e-01 + <_> + + 0 -1 336 1.8192850984632969e-03 + + -6.8028703331947327e-02 2.3167446255683899e-01 + <_> + + 0 -1 44 -4.8545510508120060e-03 + + -4.3374514579772949e-01 3.6196250468492508e-02 + <_> + + 0 -1 762 2.8766903560608625e-03 + + 3.8431353867053986e-02 -3.3900904655456543e-01 + <_> + + 0 -1 793 4.4511677697300911e-03 + + -4.8704307526350021e-02 2.9764902591705322e-01 + <_> + + 0 -1 545 -9.9098179489374161e-03 + + 2.5863200426101685e-01 -5.7418409734964371e-02 + <_> + + 0 -1 2 -2.6503708213567734e-03 + + 1.3571591675281525e-01 -1.1608450859785080e-01 + <_> + + 0 -1 1 -3.0543167144060135e-02 + + 2.8910955786705017e-01 -5.1689133048057556e-02 + <_> + + 0 -1 698 -2.6757145300507545e-02 + + 1.8446540832519531e-01 -7.7666454017162323e-02 + <_> + + 0 -1 131 -2.2985447198152542e-02 + + -3.5471677780151367e-01 4.1345477104187012e-02 + <_> + + 0 -1 536 9.5467511564493179e-03 + + -5.5719308555126190e-02 2.4589607119560242e-01 + <_> + + 0 -1 730 2.6181992143392563e-03 + + -1.0256808251142502e-01 1.3319683074951172e-01 + <_> + + 0 -1 1031 -3.5491142421960831e-02 + + -5.9519535303115845e-01 2.2935084998607635e-02 + <_> + + 0 -1 703 1.5474080573767424e-03 + + -8.4649838507175446e-02 1.6198579967021942e-01 + <_> + + 0 -1 861 -3.4878745209425688e-03 + + -5.0121647119522095e-01 2.6359066367149353e-02 + <_> + + 0 -1 601 3.6612942349165678e-03 + + -7.2178244590759277e-02 1.8415448069572449e-01 + <_> + + 0 -1 692 -2.1762652322649956e-03 + + 2.1102276444435120e-01 -6.4692504703998566e-02 + <_> + + 0 -1 66 -6.9864131510257721e-03 + + -4.3104550242424011e-01 3.3448409289121628e-02 + <_> + + 0 -1 64 4.7067347913980484e-03 + + 4.7681909054517746e-02 -3.1132212281227112e-01 + <_> + + 0 -1 1054 -7.0012239739298820e-03 + + -3.4665238857269287e-01 3.6263268440961838e-02 + <_> + + 0 -1 36 1.0144514963030815e-02 + + 3.3140499144792557e-02 -3.7149414420127869e-01 + <_> + + 0 -1 927 2.5893552228808403e-03 + + -5.6186988949775696e-02 2.3859155178070068e-01 + <_> + + 0 -1 877 -3.8091647438704967e-03 + + 1.8803173303604126e-01 -9.0667806565761566e-02 + <_> + + 0 -1 559 -2.5004068017005920e-01 + + -5.7437247037887573e-01 2.3015361279249191e-02 + <_> + + 0 -1 651 -8.5459719412028790e-04 + + -3.0019384622573853e-01 4.1898671537637711e-02 + <_> + + 0 -1 556 -1.5604835003614426e-02 + + -5.8520871400833130e-01 2.1410541608929634e-02 + <_> + + 0 -1 654 -1.9794562458992004e-01 + + -6.7963910102844238e-01 1.6488522291183472e-02 + <_> + + 0 -1 896 -1.9824346527457237e-03 + + 1.4493939280509949e-01 -8.7999224662780762e-02 + <_> + + 0 -1 582 -2.1158650517463684e-02 + + -6.4664304256439209e-01 2.4590896442532539e-02 + <_> + + 0 -1 837 -9.3553803162649274e-04 + + 1.8229192495346069e-01 -7.2682343423366547e-02 + <_> + + 0 -1 610 -1.1120189446955919e-03 + + 1.5188181400299072e-01 -8.6225852370262146e-02 + <_> + + 0 -1 316 1.1543033272027969e-01 + + -4.7091111540794373e-02 3.5574361681938171e-01 + <_> + + 0 -1 568 -5.2959467284381390e-03 + + 2.0496748387813568e-01 -6.1289250850677490e-02 + <_> + + 0 -1 310 -2.6194794103503227e-02 + + 1.7320305109024048e-01 -1.1094193905591965e-01 + <_> + + 0 -1 167 1.4183738268911839e-02 + + -9.7011148929595947e-02 1.4372280240058899e-01 + <_> + + 0 -1 1032 -3.6340979859232903e-03 + + -4.0951785445213318e-01 3.0991807579994202e-02 + <_> + + 0 -1 1028 1.4448106288909912e-02 + + -6.1627220362424850e-02 2.0916682481765747e-01 + <_> + + 0 -1 982 -1.1399465613067150e-02 + + 1.8926219642162323e-01 -8.7004892528057098e-02 + + <_> + 100 + -1.2953979969024658e+00 + + <_> + + 0 -1 725 1.6048721969127655e-02 + + -9.5187164843082428e-02 3.7635341286659241e-01 + <_> + + 0 -1 239 4.1785854846239090e-03 + + -1.4184002578258514e-01 3.1887301802635193e-01 + <_> + + 0 -1 526 -6.7659835331141949e-03 + + 3.7005490064620972e-01 -8.9318118989467621e-02 + <_> + + 0 -1 186 1.4478694647550583e-02 + + -1.3418816030025482e-01 2.8370034694671631e-01 + <_> + + 0 -1 411 -1.8653089646250010e-03 + + -3.5015934705734253e-01 6.9187328219413757e-02 + <_> + + 0 -1 901 3.7634610198438168e-03 + + -7.7612839639186859e-02 3.0384179949760437e-01 + <_> + + 0 -1 353 8.9913085103034973e-03 + + 6.0584690421819687e-02 -4.7271341085433960e-01 + <_> + + 0 -1 121 -3.0867164023220539e-03 + + 1.6870087385177612e-01 -1.3231597840785980e-01 + <_> + + 0 -1 388 -4.0246914140880108e-03 + + -4.1840493679046631e-01 6.4627721905708313e-02 + <_> + + 0 -1 896 4.8679644241929054e-03 + + -5.6233335286378860e-02 4.2156839370727539e-01 + <_> + + 0 -1 480 5.5472417734563351e-03 + + 3.7891130894422531e-02 -5.1408857107162476e-01 + <_> + + 0 -1 1003 6.5884483046829700e-04 + + -1.6457377374172211e-01 1.1204792559146881e-01 + <_> + + 0 -1 1050 -1.0980388615280390e-03 + + -3.3544427156448364e-01 4.6025454998016357e-02 + <_> + + 0 -1 583 -2.8328509069979191e-03 + + 2.3426958918571472e-01 -7.2758100926876068e-02 + <_> + + 0 -1 56 1.5504788607358932e-03 + + 6.2664858996868134e-02 -2.5632002949714661e-01 + <_> + + 0 -1 348 -6.2153179896995425e-04 + + 1.7485393583774567e-01 -9.9982917308807373e-02 + <_> + + 0 -1 675 -1.4540781266987324e-02 + + -4.4969236850738525e-01 3.7324137985706329e-02 + <_> + + 0 -1 792 -1.6624422278255224e-03 + + 1.4047256112098694e-01 -1.1892398446798325e-01 + <_> + + 0 -1 893 1.6246617306023836e-03 + + 6.1172962188720703e-02 -2.7449882030487061e-01 + <_> + + 0 -1 87 -1.1364535987377167e-01 + + -4.3175131082534790e-01 3.8861453533172607e-02 + <_> + + 0 -1 29 6.3355863094329834e-03 + + 4.3615639209747314e-02 -3.7530297040939331e-01 + <_> + + 0 -1 88 -7.9950205981731415e-03 + + -5.6157833337783813e-01 2.7148496359586716e-02 + <_> + + 0 -1 825 -6.0972268693149090e-03 + + 4.7499263286590576e-01 -3.5678520798683167e-02 + <_> + + 0 -1 933 1.3845593202859163e-03 + + -1.1575383692979813e-01 1.3405258953571320e-01 + <_> + + 0 -1 351 8.5432223975658417e-02 + + -5.6930482387542725e-02 3.1373351812362671e-01 + <_> + + 0 -1 661 -1.2029780447483063e-01 + + -4.7989824414253235e-01 3.8594469428062439e-02 + <_> + + 0 -1 829 -8.3766942843794823e-03 + + -2.0806340873241425e-01 7.6934777200222015e-02 + <_> + + 0 -1 673 -4.6590538695454597e-03 + + -5.0349289178848267e-01 3.0419014394283295e-02 + <_> + + 0 -1 453 -3.2761119306087494e-02 + + 3.2354715466499329e-01 -5.6276485323905945e-02 + <_> + + 0 -1 783 8.3009023219347000e-03 + + -8.3831317722797394e-02 2.3335608839988708e-01 + <_> + + 0 -1 848 5.7156109251081944e-03 + + -8.6484365165233612e-02 1.8363620340824127e-01 + <_> + + 0 -1 518 -1.0080671310424805e-01 + + 3.8774350285530090e-01 -4.0828518569469452e-02 + <_> + + 0 -1 14 -2.5552421808242798e-02 + + -5.0166463851928711e-01 3.8269419223070145e-02 + <_> + + 0 -1 23 -6.1748407781124115e-02 + + -3.5811841487884521e-01 4.6544160693883896e-02 + <_> + + 0 -1 702 -1.2269845232367516e-02 + + 2.0786920189857483e-01 -7.8518457710742950e-02 + <_> + + 0 -1 11 2.8048269450664520e-02 + + -5.6248739361763000e-02 2.8977242112159729e-01 + <_> + + 0 -1 523 -7.2269486263394356e-03 + + -7.2842431068420410e-01 2.3379294201731682e-02 + <_> + + 0 -1 952 4.7771912068128586e-03 + + 2.3226773366332054e-02 -5.6412339210510254e-01 + <_> + + 0 -1 276 2.8181755915284157e-03 + + -3.3893339335918427e-02 4.3989458680152893e-01 + <_> + + 0 -1 194 -8.4437360055744648e-04 + + 1.9623728096485138e-01 -7.8485630452632904e-02 + <_> + + 0 -1 407 -4.3037505820393562e-03 + + -3.6311796307563782e-01 4.0526941418647766e-02 + <_> + + 0 -1 105 4.9789976328611374e-03 + + 4.8658054322004318e-02 -3.1162264943122864e-01 + <_> + + 0 -1 1041 -5.0353109836578369e-03 + + -5.5396872758865356e-01 2.3420164361596107e-02 + <_> + + 0 -1 837 -1.3716940302401781e-03 + + 2.2532704472541809e-01 -6.2741614878177643e-02 + <_> + + 0 -1 910 3.3456790260970592e-03 + + 3.8516163825988770e-02 -3.6224716901779175e-01 + <_> + + 0 -1 476 1.9023896893486381e-03 + + -5.4677281528711319e-02 2.5294607877731323e-01 + <_> + + 0 -1 1037 -1.4274399727582932e-03 + + -3.7934723496437073e-01 3.8707002997398376e-02 + <_> + + 0 -1 512 1.1010284069925547e-03 + + -9.5659099519252777e-02 1.4958517253398895e-01 + <_> + + 0 -1 219 -4.4154529459774494e-03 + + -5.1156622171401978e-01 2.5640288367867470e-02 + <_> + + 0 -1 448 3.7023271434009075e-03 + + -4.3221119791269302e-02 3.2581970095634460e-01 + <_> + + 0 -1 237 -5.4480084218084812e-03 + + -4.7611567378044128e-01 3.5773757845163345e-02 + <_> + + 0 -1 313 -3.1974539160728455e-04 + + 1.1916244029998779e-01 -1.1832383275032043e-01 + <_> + + 0 -1 381 -2.8494147583842278e-02 + + -6.5004557371139526e-01 2.0599177107214928e-02 + <_> + + 0 -1 941 -2.7449331246316433e-03 + + -3.9275056123733521e-01 3.3223718404769897e-02 + <_> + + 0 -1 937 4.1362000629305840e-03 + + 2.7191400527954102e-02 -4.7952741384506226e-01 + <_> + + 0 -1 638 3.3568721264600754e-03 + + -6.0983922332525253e-02 2.2964073717594147e-01 + <_> + + 0 -1 571 -5.7129040360450745e-03 + + -5.9052920341491699e-01 2.3388050496578217e-02 + <_> + + 0 -1 477 -1.1567326728254557e-03 + + 1.5093772113323212e-01 -9.1553181409835815e-02 + <_> + + 0 -1 143 -8.9379055425524712e-03 + + -3.5481104254722595e-01 3.6294396966695786e-02 + <_> + + 0 -1 811 3.6097350530326366e-03 + + 3.2780081033706665e-02 -3.8517734408378601e-01 + <_> + + 0 -1 975 2.0727193914353848e-03 + + -5.3627125918865204e-02 2.5666573643684387e-01 + <_> + + 0 -1 977 -1.8177125602960587e-03 + + 2.0363596081733704e-01 -7.0555560290813446e-02 + <_> + + 0 -1 932 -3.3223466016352177e-03 + + -4.8926571011543274e-01 2.8675178065896034e-02 + <_> + + 0 -1 553 -4.4222660362720490e-03 + + -4.0920063853263855e-01 3.0863059684634209e-02 + <_> + + 0 -1 705 -7.8024319373071194e-04 + + 1.2166435271501541e-01 -1.0897941887378693e-01 + <_> + + 0 -1 850 7.9855127260088921e-03 + + 2.5865448638796806e-02 -4.8917418718338013e-01 + <_> + + 0 -1 99 -2.7752606911235489e-05 + + 1.1611134558916092e-01 -1.1225233227014542e-01 + <_> + + 0 -1 641 3.0770362354815006e-03 + + -6.4753420650959015e-02 1.9632078707218170e-01 + <_> + + 0 -1 593 -2.1007210016250610e-03 + + 1.9681814312934875e-01 -9.4167068600654602e-02 + <_> + + 0 -1 112 -6.1383144930005074e-03 + + -3.9225277304649353e-01 3.5275831818580627e-02 + <_> + + 0 -1 119 1.1184177361428738e-02 + + 2.9410628601908684e-02 -4.3673589825630188e-01 + <_> + + 0 -1 1007 1.0432782582938671e-03 + + -6.7393802106380463e-02 1.9237922132015228e-01 + <_> + + 0 -1 931 8.5366604616865516e-04 + + -8.4067851305007935e-02 1.6720806062221527e-01 + <_> + + 0 -1 55 -3.3059090375900269e-02 + + 2.6451063156127930e-01 -5.2662543952465057e-02 + <_> + + 0 -1 161 -8.7435375899076462e-03 + + -3.0780994892120361e-01 4.8419766128063202e-02 + <_> + + 0 -1 907 -1.1587596964091063e-03 + + 1.4863640069961548e-01 -9.4251774251461029e-02 + <_> + + 0 -1 295 -2.2717786952853203e-02 + + -4.2414310574531555e-01 3.5150803625583649e-02 + <_> + + 0 -1 810 -8.4660220891237259e-03 + + 2.5765278935432434e-01 -5.4796367883682251e-02 + <_> + + 0 -1 492 -1.4943551504984498e-03 + + -2.7729934453964233e-01 4.9375709146261215e-02 + <_> + + 0 -1 0 -7.5480109080672264e-04 + + 1.2197802960872650e-01 -1.0845532268285751e-01 + <_> + + 0 -1 853 2.9903287068009377e-03 + + -8.4785357117652893e-02 1.5424512326717377e-01 + <_> + + 0 -1 1040 1.7600806895643473e-03 + + 7.0044547319412231e-02 -1.9795240461826324e-01 + <_> + + 0 -1 154 1.2243577279150486e-02 + + -7.8472696244716644e-02 1.7095038294792175e-01 + <_> + + 0 -1 80 -2.7739753946661949e-02 + + 2.0475350320339203e-01 -6.9862313568592072e-02 + <_> + + 0 -1 300 -6.4486754126846790e-03 + + -3.7651637196540833e-01 3.3540505915880203e-02 + <_> + + 0 -1 341 -1.3427068479359150e-02 + + 1.5320046246051788e-01 -8.3272159099578857e-02 + <_> + + 0 -1 360 8.2654636353254318e-03 + + -8.1395141780376434e-02 1.9696740806102753e-01 + <_> + + 0 -1 616 3.0615129508078098e-03 + + -5.8534789830446243e-02 2.1799990534782410e-01 + <_> + + 0 -1 616 -1.4359520282596350e-03 + + 1.8553669750690460e-01 -7.9428143799304962e-02 + <_> + + 0 -1 488 2.8793164528906345e-03 + + 3.7499722093343735e-02 -3.5483118891716003e-01 + <_> + + 0 -1 631 -9.0899681672453880e-03 + + -5.9031629562377930e-01 2.0012531429529190e-02 + <_> + + 0 -1 896 1.6797243151813745e-03 + + -6.8868115544319153e-02 1.8992543220520020e-01 + <_> + + 0 -1 581 -1.1759581044316292e-02 + + 3.6288693547248840e-01 -3.3578243106603622e-02 + <_> + + 0 -1 749 3.8305222988128662e-03 + + -6.6793553531169891e-02 1.9304293394088745e-01 + <_> + + 0 -1 1018 1.2506111524999142e-03 + + -8.1618689000606537e-02 1.5481384098529816e-01 + <_> + + 0 -1 379 -1.6119323670864105e-02 + + 1.4024992287158966e-01 -9.3965478241443634e-02 + <_> + + 0 -1 576 -7.2789913974702358e-04 + + 1.9554650783538818e-01 -7.2329640388488770e-02 + <_> + + 0 -1 178 1.4888901496306062e-03 + + 3.3372651785612106e-02 -4.0691211819648743e-01 + <_> + + 0 -1 984 -4.9822013825178146e-03 + + -3.3125448226928711e-01 3.6899805068969727e-02 + <_> + + 0 -1 1053 9.4443336129188538e-03 + + 3.1763385981321335e-02 -3.7651473283767700e-01 + + <_> + 100 + -1.3101767301559448e+00 + + <_> + + 0 -1 535 -1.2652185745537281e-02 + + 4.0350878238677979e-01 -8.6829073727130890e-02 + <_> + + 0 -1 386 4.8778904601931572e-03 + + -9.1208808124065399e-02 4.8882400989532471e-01 + <_> + + 0 -1 875 -2.4099014699459076e-02 + + 3.6089360713958740e-01 -1.1495783179998398e-01 + <_> + + 0 -1 955 1.7244052141904831e-03 + + -1.5974776446819305e-01 1.6197346150875092e-01 + <_> + + 0 -1 478 -3.6334272008389235e-03 + + 2.7575418353080750e-01 -9.4314105808734894e-02 + <_> + + 0 -1 874 -3.4076566807925701e-03 + + 2.2806543111801147e-01 -1.1266379803419113e-01 + <_> + + 0 -1 343 8.8951038196682930e-03 + + -6.6720969974994659e-02 3.3090111613273621e-01 + <_> + + 0 -1 886 -2.4365000426769257e-03 + + -4.6264356374740601e-01 5.9559248387813568e-02 + <_> + + 0 -1 134 1.6330357640981674e-02 + + 6.1187297105789185e-02 -4.2252638936042786e-01 + <_> + + 0 -1 92 8.4438512567430735e-04 + + -1.6640183329582214e-01 1.1608948558568954e-01 + <_> + + 0 -1 841 2.9493896290659904e-03 + + -9.1952294111251831e-02 2.0670032501220703e-01 + <_> + + 0 -1 40 3.4696407616138458e-02 + + -8.0334044992923737e-02 2.8779104351997375e-01 + <_> + + 0 -1 893 -3.3343117684125900e-03 + + -5.9474521875381470e-01 3.6547001451253891e-02 + <_> + + 0 -1 761 9.3975086929276586e-04 + + -1.5703736245632172e-01 1.1884722858667374e-01 + <_> + + 0 -1 174 -3.4337402321398258e-03 + + -5.6122291088104248e-01 3.2535579055547714e-02 + <_> + + 0 -1 1010 2.6463428512215614e-03 + + -7.0756055414676666e-02 2.5195503234863281e-01 + <_> + + 0 -1 334 -5.4167490452528000e-04 + + 1.2782673537731171e-01 -1.3642209768295288e-01 + <_> + + 0 -1 219 2.6469756849110126e-03 + + 4.3448049575090408e-02 -4.2012536525726318e-01 + <_> + + 0 -1 467 -3.8945327978581190e-03 + + -3.4613665938377380e-01 4.6863511204719543e-02 + <_> + + 0 -1 258 1.0849055834114552e-03 + + -7.2841711342334747e-02 2.2674085199832916e-01 + <_> + + 0 -1 258 -9.8655023612082005e-04 + + 2.5967630743980408e-01 -8.0196425318717957e-02 + <_> + + 0 -1 204 4.3801497668027878e-03 + + 2.8548270463943481e-02 -6.2486541271209717e-01 + <_> + + 0 -1 554 3.1944573856890202e-04 + + -1.4062304794788361e-01 1.1761485785245895e-01 + <_> + + 0 -1 300 6.6440929658710957e-03 + + 3.2654736191034317e-02 -4.6211913228034973e-01 + <_> + + 0 -1 42 7.0357543881982565e-04 + + 7.5751155614852905e-02 -1.9804775714874268e-01 + <_> + + 0 -1 446 5.4024737328290939e-03 + + -6.1951220035552979e-02 2.4502439796924591e-01 + <_> + + 0 -1 502 7.2796619497239590e-03 + + -5.9379905462265015e-02 2.5588110089302063e-01 + <_> + + 0 -1 169 -1.5059831552207470e-02 + + -6.6548824310302734e-01 2.2492453455924988e-02 + <_> + + 0 -1 270 -4.6248016878962517e-03 + + -3.4483894705772400e-01 4.2247168719768524e-02 + <_> + + 0 -1 290 1.4736279845237732e-03 + + 3.3624436706304550e-02 -4.1066497564315796e-01 + <_> + + 0 -1 110 4.0667224675416946e-03 + + -8.6238399147987366e-02 1.6550070047378540e-01 + <_> + + 0 -1 113 -1.2728295987471938e-03 + + 1.9737298786640167e-01 -9.5425128936767578e-02 + <_> + + 0 -1 957 -1.5297440811991692e-02 + + -5.9287589788436890e-01 2.3890895769000053e-02 + <_> + + 0 -1 969 -2.9415758326649666e-03 + + -4.8744291067123413e-01 2.8945079073309898e-02 + <_> + + 0 -1 840 9.3173712957650423e-04 + + -8.9065223932266235e-02 1.6721877455711365e-01 + <_> + + 0 -1 791 2.1161064505577087e-03 + + -5.8501452207565308e-02 2.7767315506935120e-01 + <_> + + 0 -1 579 -3.7564497906714678e-03 + + 2.6502594351768494e-01 -5.3400754928588867e-02 + <_> + + 0 -1 224 1.9215289503335953e-02 + + 3.6197379231452942e-02 -3.9996260404586792e-01 + <_> + + 0 -1 276 -5.8480387087911367e-04 + + 1.7670612037181854e-01 -8.0434471368789673e-02 + <_> + + 0 -1 62 1.7193648964166641e-02 + + 2.1810308098793030e-02 -6.6349571943283081e-01 + <_> + + 0 -1 394 -1.5182361006736755e-02 + + 2.4825552105903625e-01 -6.3092373311519623e-02 + <_> + + 0 -1 712 3.0793007463216782e-03 + + 2.4977168068289757e-02 -5.3303867578506470e-01 + <_> + + 0 -1 410 -2.4421955458819866e-03 + + -3.6828973889350891e-01 3.3543743193149567e-02 + <_> + + 0 -1 1011 7.0760864764451981e-04 + + -7.0839107036590576e-02 1.9299270212650299e-01 + <_> + + 0 -1 280 -2.9198618140071630e-03 + + -4.2773759365081787e-01 3.4788779914379120e-02 + <_> + + 0 -1 77 4.9937088042497635e-03 + + 3.5642433911561966e-02 -3.7421676516532898e-01 + <_> + + 0 -1 701 3.1980490311980247e-03 + + -6.5103210508823395e-02 2.1381905674934387e-01 + <_> + + 0 -1 320 -1.1253832839429379e-02 + + 1.9790579378604889e-01 -7.1859836578369141e-02 + <_> + + 0 -1 496 -3.6279223859310150e-02 + + 1.7960831522941589e-01 -9.7373597323894501e-02 + <_> + + 0 -1 606 2.5160997174680233e-03 + + 4.7910790890455246e-02 -2.7035105228424072e-01 + <_> + + 0 -1 597 1.2429051566869020e-03 + + -7.8723609447479248e-02 1.7209371924400330e-01 + <_> + + 0 -1 600 -1.6120750457048416e-02 + + 2.6868200302124023e-01 -5.0688084214925766e-02 + <_> + + 0 -1 676 1.9487962126731873e-03 + + 4.2773328721523285e-02 -3.2401460409164429e-01 + <_> + + 0 -1 371 7.1887858211994171e-04 + + -9.3979224562644958e-02 1.4450067281723022e-01 + <_> + + 0 -1 315 2.4896476417779922e-02 + + 3.0655095353722572e-02 -4.5330229401588440e-01 + <_> + + 0 -1 1026 -3.9382722228765488e-02 + + -7.5473642349243164e-01 1.4460344798862934e-02 + <_> + + 0 -1 16 1.6916246712207794e-01 + + 1.8219815567135811e-02 -6.0212779045104980e-01 + <_> + + 0 -1 327 2.6912155590252951e-05 + + -1.3110430538654327e-01 1.0080647468566895e-01 + <_> + + 0 -1 720 -1.1350987479090691e-03 + + -3.5285457968711853e-01 3.5424951463937759e-02 + <_> + + 0 -1 275 -5.3854554425925016e-04 + + 1.6519539058208466e-01 -8.5205554962158203e-02 + <_> + + 0 -1 1006 -7.9703063238412142e-04 + + 1.2170238047838211e-01 -1.1191177368164062e-01 + <_> + + 0 -1 1055 6.4357938244938850e-03 + + 2.3892326280474663e-02 -5.2907115221023560e-01 + <_> + + 0 -1 184 3.5384115763008595e-03 + + 1.5895446762442589e-02 -7.3063355684280396e-01 + <_> + + 0 -1 503 -5.9715351089835167e-03 + + -4.9897637963294983e-01 2.2720154374837875e-02 + <_> + + 0 -1 500 -1.3486531376838684e-01 + + 4.7622504830360413e-01 -3.0212458223104477e-02 + <_> + + 0 -1 824 1.5813487116247416e-03 + + -6.4366899430751801e-02 1.9106543064117432e-01 + <_> + + 0 -1 438 1.2239011703059077e-03 + + 3.5654775798320770e-02 -3.6865225434303284e-01 + <_> + + 0 -1 871 1.5586249064654112e-03 + + -7.6894849538803101e-02 1.7627324163913727e-01 + <_> + + 0 -1 807 8.1224087625741959e-03 + + -9.0349502861499786e-02 1.4695085585117340e-01 + <_> + + 0 -1 693 -1.1717316228896379e-03 + + -4.2172068357467651e-01 3.2626960426568985e-02 + <_> + + 0 -1 863 3.1573872547596693e-03 + + 1.6080003231763840e-02 -7.3708915710449219e-01 + <_> + + 0 -1 328 -6.0417165514081717e-04 + + 1.3188406825065613e-01 -1.0221557319164276e-01 + <_> + + 0 -1 870 5.9989960864186287e-03 + + -5.6194521486759186e-02 2.4262723326683044e-01 + <_> + + 0 -1 285 9.2063043266534805e-03 + + -7.4052155017852783e-02 1.9847218692302704e-01 + <_> + + 0 -1 759 5.9181386604905128e-03 + + 2.7928760275244713e-02 -5.3380137681961060e-01 + <_> + + 0 -1 637 2.2121241781860590e-03 + + -7.4788182973861694e-02 1.9799898564815521e-01 + <_> + + 0 -1 634 1.5453733503818512e-03 + + -8.1615962088108063e-02 1.7845135927200317e-01 + <_> + + 0 -1 48 -2.7309993747621775e-03 + + -2.9415401816368103e-01 4.8099983483552933e-02 + <_> + + 0 -1 288 1.5755122527480125e-02 + + -8.2719191908836365e-02 1.5387716889381409e-01 + <_> + + 0 -1 358 -5.5120363831520081e-02 + + -2.7076271176338196e-01 5.2753895521163940e-02 + <_> + + 0 -1 188 2.9593750834465027e-01 + + -2.5313137099146843e-02 5.3404790163040161e-01 + <_> + + 0 -1 755 -1.1218986473977566e-03 + + 1.1400944739580154e-01 -1.1270149052143097e-01 + <_> + + 0 -1 12 -3.7802509963512421e-02 + + 3.1571185588836670e-01 -4.9672659486532211e-02 + <_> + + 0 -1 122 7.6384171843528748e-03 + + -1.0544487833976746e-01 1.6579298675060272e-01 + <_> + + 0 -1 586 6.8679507821798325e-03 + + -6.0160953551530838e-02 2.2640766203403473e-01 + <_> + + 0 -1 443 5.1510091871023178e-02 + + 2.6919802650809288e-02 -5.1188707351684570e-01 + <_> + + 0 -1 997 -1.7317479476332664e-02 + + 2.8218811750411987e-01 -4.4739942997694016e-02 + <_> + + 0 -1 430 8.3876429125666618e-03 + + -5.7016383856534958e-02 2.2617760300636292e-01 + <_> + + 0 -1 625 9.2909142374992371e-02 + + 3.1283479183912277e-02 -4.9390810728073120e-01 + <_> + + 0 -1 457 4.8232711851596832e-03 + + 2.4896934628486633e-02 -4.5571261644363403e-01 + <_> + + 0 -1 484 2.3969253525137901e-03 + + 2.3365976288914680e-02 -4.8319596052169800e-01 + <_> + + 0 -1 599 -3.8546645082533360e-03 + + 2.0274488627910614e-01 -5.8264043182134628e-02 + <_> + + 0 -1 647 -1.2048919452354312e-03 + + -3.4361392259597778e-01 3.4746967256069183e-02 + <_> + + 0 -1 734 -1.6053356230258942e-02 + + 1.8685258924961090e-01 -6.7979305982589722e-02 + <_> + + 0 -1 1045 -2.1703056991100311e-02 + + -5.0804340839385986e-01 2.5113353505730629e-02 + <_> + + 0 -1 541 -1.9719875417649746e-03 + + -2.7325069904327393e-01 4.3638698756694794e-02 + <_> + + 0 -1 465 -1.3189280871301889e-03 + + 2.5198838114738464e-01 -4.8170279711484909e-02 + <_> + + 0 -1 465 1.3257672544568777e-03 + + -6.6290155053138733e-02 2.6572498679161072e-01 + <_> + + 0 -1 1024 -2.5993511080741882e-03 + + -7.1209841966629028e-01 1.9255550578236580e-02 + <_> + + 0 -1 926 4.0416182018816471e-03 + + 2.4820772930979729e-02 -4.3810126185417175e-01 + + <_> + + <_> + 0 0 2 4 -1. + <_> + 0 2 2 2 2. + 0 + <_> + + <_> + 0 0 6 14 -1. + <_> + 0 0 3 7 2. + <_> + 3 7 3 7 2. + 0 + <_> + + <_> + 0 0 8 1 -1. + <_> + 4 0 4 1 2. + 0 + <_> + + <_> + 0 0 8 2 -1. + <_> + 4 0 4 2 2. + 0 + <_> + + <_> + 0 0 8 6 -1. + <_> + 0 0 4 3 2. + <_> + 4 3 4 3 2. + 0 + <_> + + <_> + 0 0 8 12 -1. + <_> + 0 0 4 6 2. + <_> + 4 6 4 6 2. + 0 + <_> + + <_> + 0 0 8 14 -1. + <_> + 0 0 4 7 2. + <_> + 4 7 4 7 2. + 0 + <_> + + <_> + 0 0 10 6 -1. + <_> + 0 0 5 3 2. + <_> + 5 3 5 3 2. + 0 + <_> + + <_> + 0 0 10 8 -1. + <_> + 0 0 5 4 2. + <_> + 5 4 5 4 2. + 0 + <_> + + <_> + 0 0 18 13 -1. + <_> + 6 0 6 13 3. + 0 + <_> + + <_> + 0 0 14 10 -1. + <_> + 0 0 7 5 2. + <_> + 7 5 7 5 2. + 0 + <_> + + <_> + 0 0 24 1 -1. + <_> + 8 0 8 1 3. + 0 + <_> + + <_> + 0 0 16 6 -1. + <_> + 0 0 8 3 2. + <_> + 8 3 8 3 2. + 0 + <_> + + <_> + 0 0 16 10 -1. + <_> + 0 0 8 5 2. + <_> + 8 5 8 5 2. + 0 + <_> + + <_> + 0 0 24 1 -1. + <_> + 12 0 12 1 2. + 0 + <_> + + <_> + 0 0 24 2 -1. + <_> + 0 0 12 1 2. + <_> + 12 1 12 1 2. + 0 + <_> + + <_> + 0 0 12 12 -1. + <_> + 0 6 12 6 2. + 0 + <_> + + <_> + 0 0 15 18 -1. + <_> + 0 6 15 6 3. + 0 + <_> + + <_> + 0 1 1 6 -1. + <_> + 0 3 1 2 3. + 0 + <_> + + <_> + 0 1 4 6 -1. + <_> + 2 1 2 6 2. + 0 + <_> + + <_> + 0 1 15 1 -1. + <_> + 5 1 5 1 3. + 0 + <_> + + <_> + 0 1 10 2 -1. + <_> + 5 1 5 2 2. + 0 + <_> + + <_> + 0 2 24 2 -1. + <_> + 0 2 12 1 2. + <_> + 12 3 12 1 2. + 0 + <_> + + <_> + 0 2 24 10 -1. + <_> + 0 2 12 5 2. + <_> + 12 7 12 5 2. + 0 + <_> + + <_> + 0 3 7 3 -1. + <_> + 0 4 7 1 3. + 0 + <_> + + <_> + 0 3 24 2 -1. + <_> + 0 3 12 1 2. + <_> + 12 4 12 1 2. + 0 + <_> + + <_> + 0 4 6 12 -1. + <_> + 0 8 6 4 3. + 0 + <_> + + <_> + 0 4 24 6 -1. + <_> + 0 6 24 2 3. + 0 + <_> + + <_> + 0 5 2 9 -1. + <_> + 0 8 2 3 3. + 0 + <_> + + <_> + 0 5 24 2 -1. + <_> + 0 5 12 1 2. + <_> + 12 6 12 1 2. + 0 + <_> + + <_> + 0 6 6 3 -1. + <_> + 0 7 6 1 3. + 0 + <_> + + <_> + 0 6 24 2 -1. + <_> + 0 6 12 1 2. + <_> + 12 7 12 1 2. + 0 + <_> + + <_> + 0 6 22 3 -1. + <_> + 0 7 22 1 3. + 0 + <_> + + <_> + 0 6 24 9 -1. + <_> + 0 9 24 3 3. + 0 + <_> + + <_> + 0 7 16 1 -1. + <_> + 8 7 8 1 2. + 0 + <_> + + <_> + 0 7 24 3 -1. + <_> + 8 7 8 3 3. + 0 + <_> + + <_> + 0 7 24 2 -1. + <_> + 0 7 12 1 2. + <_> + 12 8 12 1 2. + 0 + <_> + + <_> + 0 8 4 6 -1. + <_> + 2 8 2 6 2. + 0 + <_> + + <_> + 0 8 6 15 -1. + <_> + 3 8 3 15 2. + 0 + <_> + + <_> + 0 8 4 9 -1. + <_> + 0 11 4 3 3. + 0 + <_> + + <_> + 0 8 24 1 -1. + <_> + 8 8 8 1 3. + 0 + <_> + + <_> + 0 8 24 4 -1. + <_> + 0 8 12 2 2. + <_> + 12 10 12 2 2. + 0 + <_> + + <_> + 0 9 2 3 -1. + <_> + 0 10 2 1 3. + 0 + <_> + + <_> + 0 9 2 9 -1. + <_> + 0 12 2 3 3. + 0 + <_> + + <_> + 0 9 5 3 -1. + <_> + 0 10 5 1 3. + 0 + <_> + + <_> + 0 9 5 6 -1. + <_> + 0 11 5 2 3. + 0 + <_> + + <_> + 0 9 7 2 -1. + <_> + 0 10 7 1 2. + 0 + <_> + + <_> + 0 9 8 2 -1. + <_> + 0 10 8 1 2. + 0 + <_> + + <_> + 0 9 10 2 -1. + <_> + 0 10 10 1 2. + 0 + <_> + + <_> + 0 9 22 2 -1. + <_> + 0 9 11 1 2. + <_> + 11 10 11 1 2. + 0 + <_> + + <_> + 0 9 24 4 -1. + <_> + 0 9 12 2 2. + <_> + 12 11 12 2 2. + 0 + <_> + + <_> + 0 9 24 15 -1. + <_> + 12 9 12 15 2. + 0 + <_> + + <_> + 0 9 15 3 -1. + <_> + 0 10 15 1 3. + 0 + <_> + + <_> + 0 10 2 3 -1. + <_> + 0 11 2 1 3. + 0 + <_> + + <_> + 0 10 6 1 -1. + <_> + 3 10 3 1 2. + 0 + <_> + + <_> + 0 10 6 14 -1. + <_> + 3 10 3 14 2. + 0 + <_> + + <_> + 0 10 4 3 -1. + <_> + 0 11 4 1 3. + 0 + <_> + + <_> + 0 10 24 2 -1. + <_> + 0 10 12 1 2. + <_> + 12 11 12 1 2. + 0 + <_> + + <_> + 0 10 24 4 -1. + <_> + 0 10 12 2 2. + <_> + 12 12 12 2 2. + 0 + <_> + + <_> + 0 10 13 3 -1. + <_> + 0 11 13 1 3. + 0 + <_> + + <_> + 0 11 2 3 -1. + <_> + 0 12 2 1 3. + 0 + <_> + + <_> + 0 11 6 8 -1. + <_> + 0 11 3 4 2. + <_> + 3 15 3 4 2. + 0 + <_> + + <_> + 0 11 10 3 -1. + <_> + 0 12 10 1 3. + 0 + <_> + + <_> + 0 11 24 2 -1. + <_> + 0 11 12 1 2. + <_> + 12 12 12 1 2. + 0 + <_> + + <_> + 0 12 3 10 -1. + <_> + 1 12 1 10 3. + 0 + <_> + + <_> + 0 12 22 10 -1. + <_> + 11 12 11 10 2. + 0 + <_> + + <_> + 0 13 3 9 -1. + <_> + 1 13 1 9 3. + 0 + <_> + + <_> + 0 13 12 10 -1. + <_> + 6 13 6 10 2. + 0 + <_> + + <_> + 0 13 24 10 -1. + <_> + 12 13 12 10 2. + 0 + <_> + + <_> + 0 14 24 2 -1. + <_> + 0 14 12 1 2. + <_> + 12 15 12 1 2. + 0 + <_> + + <_> + 0 15 3 8 -1. + <_> + 1 15 1 8 3. + 0 + <_> + + <_> + 0 15 12 8 -1. + <_> + 0 15 6 4 2. + <_> + 6 19 6 4 2. + 0 + <_> + + <_> + 0 15 10 6 -1. + <_> + 0 17 10 2 3. + 0 + <_> + + <_> + 0 16 12 8 -1. + <_> + 0 16 6 4 2. + <_> + 6 20 6 4 2. + 0 + <_> + + <_> + 0 17 3 7 -1. + <_> + 1 17 1 7 3. + 0 + <_> + + <_> + 0 18 6 3 -1. + <_> + 0 19 6 1 3. + 0 + <_> + + <_> + 0 19 6 3 -1. + <_> + 0 20 6 1 3. + 0 + <_> + + <_> + 0 20 6 3 -1. + <_> + 0 21 6 1 3. + 0 + <_> + + <_> + 0 21 4 3 -1. + <_> + 0 22 4 1 3. + 0 + <_> + + <_> + 0 21 5 3 -1. + <_> + 0 22 5 1 3. + 0 + <_> + + <_> + 0 22 22 2 -1. + <_> + 11 22 11 2 2. + 0 + <_> + + <_> + 1 0 6 1 -1. + <_> + 4 0 3 1 2. + 0 + <_> + + <_> + 1 0 15 13 -1. + <_> + 6 0 5 13 3. + 0 + <_> + + <_> + 1 0 12 6 -1. + <_> + 1 0 6 3 2. + <_> + 7 3 6 3 2. + 0 + <_> + + <_> + 1 1 22 2 -1. + <_> + 1 1 11 1 2. + <_> + 12 2 11 1 2. + 0 + <_> + + <_> + 1 2 23 9 -1. + <_> + 1 5 23 3 3. + 0 + <_> + + <_> + 1 3 4 3 -1. + <_> + 1 4 4 1 3. + 0 + <_> + + <_> + 1 3 12 18 -1. + <_> + 5 3 4 18 3. + 0 + <_> + + <_> + 1 4 8 3 -1. + <_> + 1 5 8 1 3. + 0 + <_> + + <_> + 1 4 23 6 -1. + <_> + 1 6 23 2 3. + 0 + <_> + + <_> + 1 6 6 4 -1. + <_> + 1 6 3 2 2. + <_> + 4 8 3 2 2. + 0 + <_> + + <_> + 1 6 3 9 -1. + <_> + 1 9 3 3 3. + 0 + <_> + + <_> + 1 6 4 3 -1. + <_> + 1 7 4 1 3. + 0 + <_> + + <_> + 1 6 22 2 -1. + <_> + 1 6 11 1 2. + <_> + 12 7 11 1 2. + 0 + <_> + + <_> + 1 6 12 8 -1. + <_> + 1 10 12 4 2. + 0 + <_> + + <_> + 1 7 8 4 -1. + <_> + 1 7 4 2 2. + <_> + 5 9 4 2 2. + 0 + <_> + + <_> + 1 7 20 4 -1. + <_> + 1 7 10 2 2. + <_> + 11 9 10 2 2. + 0 + <_> + + <_> + 1 7 22 6 -1. + <_> + 1 7 11 3 2. + <_> + 12 10 11 3 2. + 0 + <_> + + <_> + 1 7 22 14 -1. + <_> + 12 7 11 14 2. + 0 + <_> + + <_> + 1 8 1 2 -1. + <_> + 1 9 1 1 2. + 0 + <_> + + <_> + 1 8 8 2 -1. + <_> + 1 8 4 1 2. + <_> + 5 9 4 1 2. + 0 + <_> + + <_> + 1 8 7 4 -1. + <_> + 1 10 7 2 2. + 0 + <_> + + <_> + 1 8 22 4 -1. + <_> + 1 8 11 2 2. + <_> + 12 10 11 2 2. + 0 + <_> + + <_> + 1 9 4 3 -1. + <_> + 3 9 2 3 2. + 0 + <_> + + <_> + 1 9 4 6 -1. + <_> + 1 11 4 2 3. + 0 + <_> + + <_> + 1 9 20 2 -1. + <_> + 1 9 10 1 2. + <_> + 11 10 10 1 2. + 0 + <_> + + <_> + 1 10 3 13 -1. + <_> + 2 10 1 13 3. + 0 + <_> + + <_> + 1 10 4 6 -1. + <_> + 1 12 4 2 3. + 0 + <_> + + <_> + 1 10 8 3 -1. + <_> + 1 11 8 1 3. + 0 + <_> + + <_> + 1 10 20 2 -1. + <_> + 1 10 10 1 2. + <_> + 11 11 10 1 2. + 0 + <_> + + <_> + 1 11 6 2 -1. + <_> + 4 11 3 2 2. + 0 + <_> + + <_> + 1 11 22 2 -1. + <_> + 1 11 11 1 2. + <_> + 12 12 11 1 2. + 0 + <_> + + <_> + 1 12 3 8 -1. + <_> + 2 12 1 8 3. + 0 + <_> + + <_> + 1 12 4 1 -1. + <_> + 3 12 2 1 2. + 0 + <_> + + <_> + 1 12 20 2 -1. + <_> + 1 12 10 1 2. + <_> + 11 13 10 1 2. + 0 + <_> + + <_> + 1 13 3 8 -1. + <_> + 2 13 1 8 3. + 0 + <_> + + <_> + 1 13 9 3 -1. + <_> + 1 14 9 1 3. + 0 + <_> + + <_> + 1 13 21 8 -1. + <_> + 1 17 21 4 2. + 0 + <_> + + <_> + 1 15 8 2 -1. + <_> + 5 15 4 2 2. + 0 + <_> + + <_> + 1 17 22 2 -1. + <_> + 1 17 11 1 2. + <_> + 12 18 11 1 2. + 0 + <_> + + <_> + 1 18 3 6 -1. + <_> + 2 18 1 6 3. + 0 + <_> + + <_> + 2 0 6 1 -1. + <_> + 5 0 3 1 2. + 0 + <_> + + <_> + 2 0 8 6 -1. + <_> + 2 0 4 3 2. + <_> + 6 3 4 3 2. + 0 + <_> + + <_> + 2 0 12 5 -1. + <_> + 8 0 6 5 2. + 0 + <_> + + <_> + 2 3 20 2 -1. + <_> + 2 3 10 1 2. + <_> + 12 4 10 1 2. + 0 + <_> + + <_> + 2 4 3 3 -1. + <_> + 2 5 3 1 3. + 0 + <_> + + <_> + 2 4 20 2 -1. + <_> + 2 4 10 1 2. + <_> + 12 5 10 1 2. + 0 + <_> + + <_> + 2 5 1 3 -1. + <_> + 2 6 1 1 3. + 0 + <_> + + <_> + 2 5 2 3 -1. + <_> + 2 6 2 1 3. + 0 + <_> + + <_> + 2 5 20 2 -1. + <_> + 2 5 10 1 2. + <_> + 12 6 10 1 2. + 0 + <_> + + <_> + 2 6 22 2 -1. + <_> + 2 6 11 1 2. + <_> + 13 7 11 1 2. + 0 + <_> + + <_> + 2 6 22 4 -1. + <_> + 2 6 11 2 2. + <_> + 13 8 11 2 2. + 0 + <_> + + <_> + 2 7 15 3 -1. + <_> + 2 8 15 1 3. + 0 + <_> + + <_> + 2 8 8 3 -1. + <_> + 2 9 8 1 3. + 0 + <_> + + <_> + 2 8 20 4 -1. + <_> + 2 8 10 2 2. + <_> + 12 10 10 2 2. + 0 + <_> + + <_> + 2 9 20 8 -1. + <_> + 2 9 10 4 2. + <_> + 12 13 10 4 2. + 0 + <_> + + <_> + 2 9 22 2 -1. + <_> + 2 9 11 1 2. + <_> + 13 10 11 1 2. + 0 + <_> + + <_> + 2 9 19 3 -1. + <_> + 2 10 19 1 3. + 0 + <_> + + <_> + 2 10 4 1 -1. + <_> + 4 10 2 1 2. + 0 + <_> + + <_> + 2 10 22 2 -1. + <_> + 2 10 11 1 2. + <_> + 13 11 11 1 2. + 0 + <_> + + <_> + 2 10 22 14 -1. + <_> + 13 10 11 14 2. + 0 + <_> + + <_> + 2 10 20 12 -1. + <_> + 2 16 20 6 2. + 0 + <_> + + <_> + 2 11 3 5 -1. + <_> + 3 11 1 5 3. + 0 + <_> + + <_> + 2 11 20 2 -1. + <_> + 2 11 10 1 2. + <_> + 12 12 10 1 2. + 0 + <_> + + <_> + 2 11 22 2 -1. + <_> + 2 11 11 1 2. + <_> + 13 12 11 1 2. + 0 + <_> + + <_> + 2 12 3 5 -1. + <_> + 3 12 1 5 3. + 0 + <_> + + <_> + 2 12 3 9 -1. + <_> + 3 12 1 9 3. + 0 + <_> + + <_> + 2 12 3 11 -1. + <_> + 3 12 1 11 3. + 0 + <_> + + <_> + 2 14 3 3 -1. + <_> + 3 14 1 3 3. + 0 + <_> + + <_> + 2 14 8 8 -1. + <_> + 2 14 4 4 2. + <_> + 6 18 4 4 2. + 0 + <_> + + <_> + 2 17 3 5 -1. + <_> + 3 17 1 5 3. + 0 + <_> + + <_> + 2 17 3 6 -1. + <_> + 3 17 1 6 3. + 0 + <_> + + <_> + 2 17 21 4 -1. + <_> + 9 17 7 4 3. + 0 + <_> + + <_> + 2 18 3 5 -1. + <_> + 3 18 1 5 3. + 0 + <_> + + <_> + 2 18 10 4 -1. + <_> + 7 18 5 4 2. + 0 + <_> + + <_> + 2 20 6 2 -1. + <_> + 5 20 3 2 2. + 0 + <_> + + <_> + 2 21 12 2 -1. + <_> + 8 21 6 2 2. + 0 + <_> + + <_> + 3 0 3 5 -1. + <_> + 4 0 1 5 3. + 0 + <_> + + <_> + 3 0 9 22 -1. + <_> + 6 0 3 22 3. + 0 + <_> + + <_> + 3 0 12 4 -1. + <_> + 3 0 6 2 2. + <_> + 9 2 6 2 2. + 0 + <_> + + <_> + 3 1 3 3 -1. + <_> + 4 1 1 3 3. + 0 + <_> + + <_> + 3 1 3 20 -1. + <_> + 4 1 1 20 3. + 0 + <_> + + <_> + 3 1 6 20 -1. + <_> + 5 1 2 20 3. + 0 + <_> + + <_> + 3 2 3 3 -1. + <_> + 4 2 1 3 3. + 0 + <_> + + <_> + 3 3 3 3 -1. + <_> + 4 3 1 3 3. + 0 + <_> + + <_> + 3 3 3 9 -1. + <_> + 3 6 3 3 3. + 0 + <_> + + <_> + 3 3 20 19 -1. + <_> + 13 3 10 19 2. + 0 + <_> + + <_> + 3 3 19 4 -1. + <_> + 3 5 19 2 2. + 0 + <_> + + <_> + 3 4 1 3 -1. + <_> + 3 5 1 1 3. + 0 + <_> + + <_> + 3 4 6 3 -1. + <_> + 5 4 2 3 3. + 0 + <_> + + <_> + 3 4 18 2 -1. + <_> + 3 4 9 1 2. + <_> + 12 5 9 1 2. + 0 + <_> + + <_> + 3 4 16 6 -1. + <_> + 3 6 16 2 3. + 0 + <_> + + <_> + 3 5 3 1 -1. + <_> + 4 5 1 1 3. + 0 + <_> + + <_> + 3 5 3 2 -1. + <_> + 4 5 1 2 3. + 0 + <_> + + <_> + 3 5 2 3 -1. + <_> + 3 6 2 1 3. + 0 + <_> + + <_> + 3 5 10 3 -1. + <_> + 8 5 5 3 2. + 0 + <_> + + <_> + 3 5 18 3 -1. + <_> + 9 5 6 3 3. + 0 + <_> + + <_> + 3 5 18 2 -1. + <_> + 3 5 9 1 2. + <_> + 12 6 9 1 2. + 0 + <_> + + <_> + 3 6 2 1 -1. + <_> + 4 6 1 1 2. + 0 + <_> + + <_> + 3 6 1 3 -1. + <_> + 3 7 1 1 3. + 0 + <_> + + <_> + 3 6 3 3 -1. + <_> + 3 7 3 1 3. + 0 + <_> + + <_> + 3 6 6 6 -1. + <_> + 3 8 6 2 3. + 0 + <_> + + <_> + 3 6 18 2 -1. + <_> + 3 6 9 1 2. + <_> + 12 7 9 1 2. + 0 + <_> + + <_> + 3 6 17 6 -1. + <_> + 3 8 17 2 3. + 0 + <_> + + <_> + 3 7 3 1 -1. + <_> + 4 7 1 1 3. + 0 + <_> + + <_> + 3 7 4 2 -1. + <_> + 3 8 4 1 2. + 0 + <_> + + <_> + 3 7 6 6 -1. + <_> + 3 9 6 2 3. + 0 + <_> + + <_> + 3 7 18 4 -1. + <_> + 3 7 9 2 2. + <_> + 12 9 9 2 2. + 0 + <_> + + <_> + 3 7 20 11 -1. + <_> + 13 7 10 11 2. + 0 + <_> + + <_> + 3 7 17 6 -1. + <_> + 3 9 17 2 3. + 0 + <_> + + <_> + 3 9 3 1 -1. + <_> + 4 9 1 1 3. + 0 + <_> + + <_> + 3 9 3 2 -1. + <_> + 4 9 1 2 3. + 0 + <_> + + <_> + 3 9 9 2 -1. + <_> + 6 9 3 2 3. + 0 + <_> + + <_> + 3 9 18 2 -1. + <_> + 3 9 9 1 2. + <_> + 12 10 9 1 2. + 0 + <_> + + <_> + 3 10 3 1 -1. + <_> + 4 10 1 1 3. + 0 + <_> + + <_> + 3 10 3 13 -1. + <_> + 4 10 1 13 3. + 0 + <_> + + <_> + 3 10 6 2 -1. + <_> + 3 11 6 1 2. + 0 + <_> + + <_> + 3 11 3 2 -1. + <_> + 4 11 1 2 3. + 0 + <_> + + <_> + 3 11 3 3 -1. + <_> + 4 11 1 3 3. + 0 + <_> + + <_> + 3 11 3 5 -1. + <_> + 4 11 1 5 3. + 0 + <_> + + <_> + 3 11 3 13 -1. + <_> + 4 11 1 13 3. + 0 + <_> + + <_> + 3 11 6 2 -1. + <_> + 3 11 3 1 2. + <_> + 6 12 3 1 2. + 0 + <_> + + <_> + 3 11 3 4 -1. + <_> + 3 13 3 2 2. + 0 + <_> + + <_> + 3 11 4 8 -1. + <_> + 3 15 4 4 2. + 0 + <_> + + <_> + 3 12 3 3 -1. + <_> + 4 12 1 3 3. + 0 + <_> + + <_> + 3 12 3 6 -1. + <_> + 3 15 3 3 2. + 0 + <_> + + <_> + 3 12 9 7 -1. + <_> + 6 12 3 7 3. + 0 + <_> + + <_> + 3 12 4 8 -1. + <_> + 3 16 4 4 2. + 0 + <_> + + <_> + 3 12 8 8 -1. + <_> + 3 16 8 4 2. + 0 + <_> + + <_> + 3 12 19 6 -1. + <_> + 3 15 19 3 2. + 0 + <_> + + <_> + 3 13 18 2 -1. + <_> + 3 13 9 1 2. + <_> + 12 14 9 1 2. + 0 + <_> + + <_> + 3 15 4 2 -1. + <_> + 5 15 2 2 2. + 0 + <_> + + <_> + 3 15 4 3 -1. + <_> + 5 15 2 3 2. + 0 + <_> + + <_> + 3 15 6 2 -1. + <_> + 6 15 3 2 2. + 0 + <_> + + <_> + 3 16 8 8 -1. + <_> + 3 16 4 4 2. + <_> + 7 20 4 4 2. + 0 + <_> + + <_> + 3 20 3 4 -1. + <_> + 4 20 1 4 3. + 0 + <_> + + <_> + 4 1 3 8 -1. + <_> + 5 1 1 8 3. + 0 + <_> + + <_> + 4 1 3 12 -1. + <_> + 4 5 3 4 3. + 0 + <_> + + <_> + 4 1 15 10 -1. + <_> + 4 6 15 5 2. + 0 + <_> + + <_> + 4 2 3 3 -1. + <_> + 5 2 1 3 3. + 0 + <_> + + <_> + 4 2 6 5 -1. + <_> + 6 2 2 5 3. + 0 + <_> + + <_> + 4 2 16 2 -1. + <_> + 4 2 8 1 2. + <_> + 12 3 8 1 2. + 0 + <_> + + <_> + 4 3 3 2 -1. + <_> + 5 3 1 2 3. + 0 + <_> + + <_> + 4 3 6 1 -1. + <_> + 6 3 2 1 3. + 0 + <_> + + <_> + 4 3 6 5 -1. + <_> + 6 3 2 5 3. + 0 + <_> + + <_> + 4 3 9 3 -1. + <_> + 7 3 3 3 3. + 0 + <_> + + <_> + 4 3 16 2 -1. + <_> + 4 3 8 1 2. + <_> + 12 4 8 1 2. + 0 + <_> + + <_> + 4 3 16 8 -1. + <_> + 4 3 8 4 2. + <_> + 12 7 8 4 2. + 0 + <_> + + <_> + 4 3 17 8 -1. + <_> + 4 7 17 4 2. + 0 + <_> + + <_> + 4 4 1 4 -1. + <_> + 4 6 1 2 2. + 0 + <_> + + <_> + 4 4 16 2 -1. + <_> + 4 4 8 1 2. + <_> + 12 5 8 1 2. + 0 + <_> + + <_> + 4 4 16 10 -1. + <_> + 4 4 8 5 2. + <_> + 12 9 8 5 2. + 0 + <_> + + <_> + 4 4 20 6 -1. + <_> + 4 6 20 2 3. + 0 + <_> + + <_> + 4 5 16 2 -1. + <_> + 4 5 8 1 2. + <_> + 12 6 8 1 2. + 0 + <_> + + <_> + 4 5 16 9 -1. + <_> + 4 8 16 3 3. + 0 + <_> + + <_> + 4 6 2 2 -1. + <_> + 4 6 1 1 2. + <_> + 5 7 1 1 2. + 0 + <_> + + <_> + 4 6 2 2 -1. + <_> + 4 7 2 1 2. + 0 + <_> + + <_> + 4 6 6 1 -1. + <_> + 6 6 2 1 3. + 0 + <_> + + <_> + 4 6 2 3 -1. + <_> + 4 7 2 1 3. + 0 + <_> + + <_> + 4 6 3 3 -1. + <_> + 4 7 3 1 3. + 0 + <_> + + <_> + 4 6 16 2 -1. + <_> + 4 6 8 1 2. + <_> + 12 7 8 1 2. + 0 + <_> + + <_> + 4 6 15 6 -1. + <_> + 4 8 15 2 3. + 0 + <_> + + <_> + 4 7 2 3 -1. + <_> + 4 8 2 1 3. + 0 + <_> + + <_> + 4 7 4 3 -1. + <_> + 6 7 2 3 2. + 0 + <_> + + <_> + 4 7 4 3 -1. + <_> + 4 8 4 1 3. + 0 + <_> + + <_> + 4 7 5 3 -1. + <_> + 4 8 5 1 3. + 0 + <_> + + <_> + 4 7 5 6 -1. + <_> + 4 9 5 2 3. + 0 + <_> + + <_> + 4 7 7 3 -1. + <_> + 4 8 7 1 3. + 0 + <_> + + <_> + 4 7 18 2 -1. + <_> + 4 7 9 1 2. + <_> + 13 8 9 1 2. + 0 + <_> + + <_> + 4 7 18 4 -1. + <_> + 4 7 9 2 2. + <_> + 13 9 9 2 2. + 0 + <_> + + <_> + 4 7 16 3 -1. + <_> + 4 8 16 1 3. + 0 + <_> + + <_> + 4 7 16 6 -1. + <_> + 4 9 16 2 3. + 0 + <_> + + <_> + 4 7 17 2 -1. + <_> + 4 8 17 1 2. + 0 + <_> + + <_> + 4 7 17 3 -1. + <_> + 4 8 17 1 3. + 0 + <_> + + <_> + 4 7 17 6 -1. + <_> + 4 9 17 2 3. + 0 + <_> + + <_> + 4 8 2 2 -1. + <_> + 4 8 1 1 2. + <_> + 5 9 1 1 2. + 0 + <_> + + <_> + 4 8 16 2 -1. + <_> + 4 8 8 1 2. + <_> + 12 9 8 1 2. + 0 + <_> + + <_> + 4 8 18 4 -1. + <_> + 4 8 9 2 2. + <_> + 13 10 9 2 2. + 0 + <_> + + <_> + 4 9 2 1 -1. + <_> + 5 9 1 1 2. + 0 + <_> + + <_> + 4 9 3 1 -1. + <_> + 5 9 1 1 3. + 0 + <_> + + <_> + 4 9 2 2 -1. + <_> + 4 9 1 1 2. + <_> + 5 10 1 1 2. + 0 + <_> + + <_> + 4 9 2 2 -1. + <_> + 5 9 1 2 2. + 0 + <_> + + <_> + 4 9 6 1 -1. + <_> + 6 9 2 1 3. + 0 + <_> + + <_> + 4 9 2 9 -1. + <_> + 4 12 2 3 3. + 0 + <_> + + <_> + 4 9 15 1 -1. + <_> + 9 9 5 1 3. + 0 + <_> + + <_> + 4 9 5 3 -1. + <_> + 4 10 5 1 3. + 0 + <_> + + <_> + 4 9 15 2 -1. + <_> + 9 9 5 2 3. + 0 + <_> + + <_> + 4 9 15 3 -1. + <_> + 9 9 5 3 3. + 0 + <_> + + <_> + 4 9 16 2 -1. + <_> + 4 9 8 1 2. + <_> + 12 10 8 1 2. + 0 + <_> + + <_> + 4 9 16 6 -1. + <_> + 4 9 8 3 2. + <_> + 12 12 8 3 2. + 0 + <_> + + <_> + 4 9 18 2 -1. + <_> + 4 9 9 1 2. + <_> + 13 10 9 1 2. + 0 + <_> + + <_> + 4 9 20 2 -1. + <_> + 4 9 10 1 2. + <_> + 14 10 10 1 2. + 0 + <_> + + <_> + 4 9 17 9 -1. + <_> + 4 12 17 3 3. + 0 + <_> + + <_> + 4 9 18 3 -1. + <_> + 4 10 18 1 3. + 0 + <_> + + <_> + 4 10 2 1 -1. + <_> + 5 10 1 1 2. + 0 + <_> + + <_> + 4 10 3 1 -1. + <_> + 5 10 1 1 3. + 0 + <_> + + <_> + 4 10 2 2 -1. + <_> + 4 10 1 1 2. + <_> + 5 11 1 1 2. + 0 + <_> + + <_> + 4 10 6 3 -1. + <_> + 7 10 3 3 2. + 0 + <_> + + <_> + 4 10 18 2 -1. + <_> + 4 10 9 1 2. + <_> + 13 11 9 1 2. + 0 + <_> + + <_> + 4 10 17 6 -1. + <_> + 4 12 17 2 3. + 0 + <_> + + <_> + 4 11 3 2 -1. + <_> + 5 11 1 2 3. + 0 + <_> + + <_> + 4 11 3 3 -1. + <_> + 5 11 1 3 3. + 0 + <_> + + <_> + 4 11 1 8 -1. + <_> + 4 15 1 4 2. + 0 + <_> + + <_> + 4 11 3 6 -1. + <_> + 5 11 1 6 3. + 0 + <_> + + <_> + 4 11 6 3 -1. + <_> + 6 11 2 3 3. + 0 + <_> + + <_> + 4 11 15 2 -1. + <_> + 4 12 15 1 2. + 0 + <_> + + <_> + 4 12 3 1 -1. + <_> + 5 12 1 1 3. + 0 + <_> + + <_> + 4 12 4 4 -1. + <_> + 6 12 2 4 2. + 0 + <_> + + <_> + 4 12 3 8 -1. + <_> + 4 16 3 4 2. + 0 + <_> + + <_> + 4 12 17 12 -1. + <_> + 4 16 17 4 3. + 0 + <_> + + <_> + 4 13 3 1 -1. + <_> + 5 13 1 1 3. + 0 + <_> + + <_> + 4 13 3 9 -1. + <_> + 4 16 3 3 3. + 0 + <_> + + <_> + 4 14 4 2 -1. + <_> + 6 14 2 2 2. + 0 + <_> + + <_> + 4 15 4 2 -1. + <_> + 6 15 2 2 2. + 0 + <_> + + <_> + 4 15 9 4 -1. + <_> + 7 15 3 4 3. + 0 + <_> + + <_> + 4 15 16 4 -1. + <_> + 4 15 8 2 2. + <_> + 12 17 8 2 2. + 0 + <_> + + <_> + 4 18 3 5 -1. + <_> + 5 18 1 5 3. + 0 + <_> + + <_> + 4 18 3 6 -1. + <_> + 5 18 1 6 3. + 0 + <_> + + <_> + 4 18 15 5 -1. + <_> + 9 18 5 5 3. + 0 + <_> + + <_> + 4 18 9 6 -1. + <_> + 4 21 9 3 2. + 0 + <_> + + <_> + 5 1 14 2 -1. + <_> + 5 1 7 1 2. + <_> + 12 2 7 1 2. + 0 + <_> + + <_> + 5 1 11 8 -1. + <_> + 5 5 11 4 2. + 0 + <_> + + <_> + 5 2 3 3 -1. + <_> + 6 2 1 3 3. + 0 + <_> + + <_> + 5 2 6 2 -1. + <_> + 7 2 2 2 3. + 0 + <_> + + <_> + 5 2 14 2 -1. + <_> + 5 2 7 1 2. + <_> + 12 3 7 1 2. + 0 + <_> + + <_> + 5 2 14 8 -1. + <_> + 5 6 14 4 2. + 0 + <_> + + <_> + 5 2 16 10 -1. + <_> + 5 7 16 5 2. + 0 + <_> + + <_> + 5 3 6 1 -1. + <_> + 7 3 2 1 3. + 0 + <_> + + <_> + 5 3 6 2 -1. + <_> + 7 3 2 2 3. + 0 + <_> + + <_> + 5 3 4 10 -1. + <_> + 5 3 2 5 2. + <_> + 7 8 2 5 2. + 0 + <_> + + <_> + 5 3 9 12 -1. + <_> + 8 3 3 12 3. + 0 + <_> + + <_> + 5 3 14 2 -1. + <_> + 5 3 7 1 2. + <_> + 12 4 7 1 2. + 0 + <_> + + <_> + 5 3 15 8 -1. + <_> + 5 7 15 4 2. + 0 + <_> + + <_> + 5 4 2 4 -1. + <_> + 5 4 1 2 2. + <_> + 6 6 1 2 2. + 0 + <_> + + <_> + 5 4 6 4 -1. + <_> + 7 4 2 4 3. + 0 + <_> + + <_> + 5 4 4 12 -1. + <_> + 7 4 2 12 2. + 0 + <_> + + <_> + 5 4 12 8 -1. + <_> + 9 4 4 8 3. + 0 + <_> + + <_> + 5 4 14 2 -1. + <_> + 5 4 7 1 2. + <_> + 12 5 7 1 2. + 0 + <_> + + <_> + 5 5 2 2 -1. + <_> + 5 5 1 1 2. + <_> + 6 6 1 1 2. + 0 + <_> + + <_> + 5 5 2 4 -1. + <_> + 5 5 1 2 2. + <_> + 6 7 1 2 2. + 0 + <_> + + <_> + 5 5 6 6 -1. + <_> + 5 7 6 2 3. + 0 + <_> + + <_> + 5 5 14 2 -1. + <_> + 5 5 7 1 2. + <_> + 12 6 7 1 2. + 0 + <_> + + <_> + 5 5 16 2 -1. + <_> + 5 5 8 1 2. + <_> + 13 6 8 1 2. + 0 + <_> + + <_> + 5 5 13 6 -1. + <_> + 5 7 13 2 3. + 0 + <_> + + <_> + 5 5 14 6 -1. + <_> + 5 7 14 2 3. + 0 + <_> + + <_> + 5 5 15 6 -1. + <_> + 5 7 15 2 3. + 0 + <_> + + <_> + 5 5 15 9 -1. + <_> + 5 8 15 3 3. + 0 + <_> + + <_> + 5 6 1 2 -1. + <_> + 5 7 1 1 2. + 0 + <_> + + <_> + 5 6 2 4 -1. + <_> + 5 6 1 2 2. + <_> + 6 8 1 2 2. + 0 + <_> + + <_> + 5 6 6 1 -1. + <_> + 7 6 2 1 3. + 0 + <_> + + <_> + 5 6 4 3 -1. + <_> + 5 7 4 1 3. + 0 + <_> + + <_> + 5 6 14 2 -1. + <_> + 5 6 7 1 2. + <_> + 12 7 7 1 2. + 0 + <_> + + <_> + 5 7 2 2 -1. + <_> + 6 7 1 2 2. + 0 + <_> + + <_> + 5 7 2 6 -1. + <_> + 5 7 1 3 2. + <_> + 6 10 1 3 2. + 0 + <_> + + <_> + 5 7 4 1 -1. + <_> + 7 7 2 1 2. + 0 + <_> + + <_> + 5 7 6 5 -1. + <_> + 7 7 2 5 3. + 0 + <_> + + <_> + 5 7 3 2 -1. + <_> + 5 8 3 1 2. + 0 + <_> + + <_> + 5 7 3 3 -1. + <_> + 5 8 3 1 3. + 0 + <_> + + <_> + 5 7 3 6 -1. + <_> + 5 9 3 2 3. + 0 + <_> + + <_> + 5 7 4 3 -1. + <_> + 5 8 4 1 3. + 0 + <_> + + <_> + 5 7 4 6 -1. + <_> + 5 9 4 2 3. + 0 + <_> + + <_> + 5 7 5 6 -1. + <_> + 5 9 5 2 3. + 0 + <_> + + <_> + 5 7 14 4 -1. + <_> + 5 7 7 2 2. + <_> + 12 9 7 2 2. + 0 + <_> + + <_> + 5 7 14 2 -1. + <_> + 5 8 14 1 2. + 0 + <_> + + <_> + 5 7 14 4 -1. + <_> + 5 9 14 2 2. + 0 + <_> + + <_> + 5 7 15 2 -1. + <_> + 5 8 15 1 2. + 0 + <_> + + <_> + 5 7 15 6 -1. + <_> + 5 9 15 2 3. + 0 + <_> + + <_> + 5 8 1 3 -1. + <_> + 5 9 1 1 3. + 0 + <_> + + <_> + 5 8 2 2 -1. + <_> + 5 8 1 1 2. + <_> + 6 9 1 1 2. + 0 + <_> + + <_> + 5 8 4 5 -1. + <_> + 7 8 2 5 2. + 0 + <_> + + <_> + 5 8 12 4 -1. + <_> + 9 8 4 4 3. + 0 + <_> + + <_> + 5 8 15 3 -1. + <_> + 10 8 5 3 3. + 0 + <_> + + <_> + 5 8 14 4 -1. + <_> + 5 8 7 2 2. + <_> + 12 10 7 2 2. + 0 + <_> + + <_> + 5 9 4 4 -1. + <_> + 7 9 2 4 2. + 0 + <_> + + <_> + 5 9 4 3 -1. + <_> + 5 10 4 1 3. + 0 + <_> + + <_> + 5 9 8 8 -1. + <_> + 5 9 4 4 2. + <_> + 9 13 4 4 2. + 0 + <_> + + <_> + 5 9 15 2 -1. + <_> + 10 9 5 2 3. + 0 + <_> + + <_> + 5 9 14 2 -1. + <_> + 5 9 7 1 2. + <_> + 12 10 7 1 2. + 0 + <_> + + <_> + 5 9 14 12 -1. + <_> + 5 9 7 6 2. + <_> + 12 15 7 6 2. + 0 + <_> + + <_> + 5 9 18 2 -1. + <_> + 5 9 9 1 2. + <_> + 14 10 9 1 2. + 0 + <_> + + <_> + 5 9 13 3 -1. + <_> + 5 10 13 1 3. + 0 + <_> + + <_> + 5 9 15 6 -1. + <_> + 5 12 15 3 2. + 0 + <_> + + <_> + 5 10 2 2 -1. + <_> + 5 10 1 1 2. + <_> + 6 11 1 1 2. + 0 + <_> + + <_> + 5 10 3 3 -1. + <_> + 6 10 1 3 3. + 0 + <_> + + <_> + 5 11 3 2 -1. + <_> + 6 11 1 2 3. + 0 + <_> + + <_> + 5 11 3 3 -1. + <_> + 6 11 1 3 3. + 0 + <_> + + <_> + 5 11 3 13 -1. + <_> + 6 11 1 13 3. + 0 + <_> + + <_> + 5 11 14 2 -1. + <_> + 5 12 14 1 2. + 0 + <_> + + <_> + 5 12 1 6 -1. + <_> + 5 15 1 3 2. + 0 + <_> + + <_> + 5 13 15 8 -1. + <_> + 5 17 15 4 2. + 0 + <_> + + <_> + 5 14 3 3 -1. + <_> + 5 15 3 1 3. + 0 + <_> + + <_> + 5 15 2 2 -1. + <_> + 6 15 1 2 2. + 0 + <_> + + <_> + 5 19 3 5 -1. + <_> + 6 19 1 5 3. + 0 + <_> + + <_> + 5 21 3 3 -1. + <_> + 6 21 1 3 3. + 0 + <_> + + <_> + 6 0 1 6 -1. + <_> + 6 3 1 3 2. + 0 + <_> + + <_> + 6 0 11 10 -1. + <_> + 6 5 11 5 2. + 0 + <_> + + <_> + 6 1 6 12 -1. + <_> + 8 1 2 12 3. + 0 + <_> + + <_> + 6 2 3 6 -1. + <_> + 7 2 1 6 3. + 0 + <_> + + <_> + 6 2 6 2 -1. + <_> + 8 2 2 2 3. + 0 + <_> + + <_> + 6 2 6 10 -1. + <_> + 8 2 2 10 3. + 0 + <_> + + <_> + 6 2 12 4 -1. + <_> + 6 4 12 2 2. + 0 + <_> + + <_> + 6 3 6 4 -1. + <_> + 8 3 2 4 3. + 0 + <_> + + <_> + 6 3 9 1 -1. + <_> + 9 3 3 1 3. + 0 + <_> + + <_> + 6 4 3 3 -1. + <_> + 7 4 1 3 3. + 0 + <_> + + <_> + 6 4 6 4 -1. + <_> + 8 4 2 4 3. + 0 + <_> + + <_> + 6 5 3 2 -1. + <_> + 7 5 1 2 3. + 0 + <_> + + <_> + 6 5 3 3 -1. + <_> + 7 5 1 3 3. + 0 + <_> + + <_> + 6 5 2 9 -1. + <_> + 6 8 2 3 3. + 0 + <_> + + <_> + 6 5 12 2 -1. + <_> + 6 5 6 1 2. + <_> + 12 6 6 1 2. + 0 + <_> + + <_> + 6 6 4 1 -1. + <_> + 8 6 2 1 2. + 0 + <_> + + <_> + 6 6 12 2 -1. + <_> + 6 6 6 1 2. + <_> + 12 7 6 1 2. + 0 + <_> + + <_> + 6 7 1 6 -1. + <_> + 6 9 1 2 3. + 0 + <_> + + <_> + 6 7 2 2 -1. + <_> + 6 8 2 1 2. + 0 + <_> + + <_> + 6 7 2 3 -1. + <_> + 6 8 2 1 3. + 0 + <_> + + <_> + 6 7 2 6 -1. + <_> + 6 9 2 2 3. + 0 + <_> + + <_> + 6 7 3 6 -1. + <_> + 6 9 3 2 3. + 0 + <_> + + <_> + 6 7 12 2 -1. + <_> + 6 7 6 1 2. + <_> + 12 8 6 1 2. + 0 + <_> + + <_> + 6 7 8 12 -1. + <_> + 6 13 8 6 2. + 0 + <_> + + <_> + 6 7 12 15 -1. + <_> + 6 12 12 5 3. + 0 + <_> + + <_> + 6 8 2 6 -1. + <_> + 6 11 2 3 2. + 0 + <_> + + <_> + 6 8 3 2 -1. + <_> + 6 9 3 1 2. + 0 + <_> + + <_> + 6 8 12 3 -1. + <_> + 10 8 4 3 3. + 0 + <_> + + <_> + 6 8 12 2 -1. + <_> + 6 8 6 1 2. + <_> + 12 9 6 1 2. + 0 + <_> + + <_> + 6 9 2 2 -1. + <_> + 6 10 2 1 2. + 0 + <_> + + <_> + 6 9 2 3 -1. + <_> + 6 10 2 1 3. + 0 + <_> + + <_> + 6 9 6 1 -1. + <_> + 9 9 3 1 2. + 0 + <_> + + <_> + 6 9 3 3 -1. + <_> + 6 10 3 1 3. + 0 + <_> + + <_> + 6 9 12 2 -1. + <_> + 6 9 6 1 2. + <_> + 12 10 6 1 2. + 0 + <_> + + <_> + 6 9 13 12 -1. + <_> + 6 13 13 4 3. + 0 + <_> + + <_> + 6 10 1 3 -1. + <_> + 6 11 1 1 3. + 0 + <_> + + <_> + 6 10 2 2 -1. + <_> + 7 10 1 2 2. + 0 + <_> + + <_> + 6 10 2 3 -1. + <_> + 7 10 1 3 2. + 0 + <_> + + <_> + 6 10 3 14 -1. + <_> + 7 10 1 14 3. + 0 + <_> + + <_> + 6 10 2 3 -1. + <_> + 6 11 2 1 3. + 0 + <_> + + <_> + 6 10 6 3 -1. + <_> + 8 10 2 3 3. + 0 + <_> + + <_> + 6 10 3 3 -1. + <_> + 6 11 3 1 3. + 0 + <_> + + <_> + 6 10 9 5 -1. + <_> + 9 10 3 5 3. + 0 + <_> + + <_> + 6 10 12 1 -1. + <_> + 10 10 4 1 3. + 0 + <_> + + <_> + 6 10 8 4 -1. + <_> + 6 10 4 2 2. + <_> + 10 12 4 2 2. + 0 + <_> + + <_> + 6 10 12 2 -1. + <_> + 6 10 6 1 2. + <_> + 12 11 6 1 2. + 0 + <_> + + <_> + 6 10 12 12 -1. + <_> + 6 10 6 6 2. + <_> + 12 16 6 6 2. + 0 + <_> + + <_> + 6 10 18 1 -1. + <_> + 15 10 9 1 2. + 0 + <_> + + <_> + 6 10 13 3 -1. + <_> + 6 11 13 1 3. + 0 + <_> + + <_> + 6 11 2 2 -1. + <_> + 6 12 2 1 2. + 0 + <_> + + <_> + 6 11 2 3 -1. + <_> + 6 12 2 1 3. + 0 + <_> + + <_> + 6 11 3 2 -1. + <_> + 6 12 3 1 2. + 0 + <_> + + <_> + 6 11 3 3 -1. + <_> + 6 12 3 1 3. + 0 + <_> + + <_> + 6 11 12 3 -1. + <_> + 6 12 12 1 3. + 0 + <_> + + <_> + 6 11 13 3 -1. + <_> + 6 12 13 1 3. + 0 + <_> + + <_> + 6 12 14 2 -1. + <_> + 6 12 7 1 2. + <_> + 13 13 7 1 2. + 0 + <_> + + <_> + 6 12 13 2 -1. + <_> + 6 13 13 1 2. + 0 + <_> + + <_> + 6 14 1 3 -1. + <_> + 6 15 1 1 3. + 0 + <_> + + <_> + 6 14 2 2 -1. + <_> + 7 14 1 2 2. + 0 + <_> + + <_> + 6 15 2 3 -1. + <_> + 6 16 2 1 3. + 0 + <_> + + <_> + 6 17 10 6 -1. + <_> + 6 20 10 3 2. + 0 + <_> + + <_> + 6 18 3 6 -1. + <_> + 7 18 1 6 3. + 0 + <_> + + <_> + 6 19 3 5 -1. + <_> + 7 19 1 5 3. + 0 + <_> + + <_> + 6 20 9 4 -1. + <_> + 6 22 9 2 2. + 0 + <_> + + <_> + 6 23 3 1 -1. + <_> + 7 23 1 1 3. + 0 + <_> + + <_> + 7 0 2 8 -1. + <_> + 7 0 1 4 2. + <_> + 8 4 1 4 2. + 0 + <_> + + <_> + 7 0 10 1 -1. + <_> + 12 0 5 1 2. + 0 + <_> + + <_> + 7 1 2 4 -1. + <_> + 7 3 2 2 2. + 0 + <_> + + <_> + 7 1 10 1 -1. + <_> + 12 1 5 1 2. + 0 + <_> + + <_> + 7 2 4 21 -1. + <_> + 9 2 2 21 2. + 0 + <_> + + <_> + 7 3 1 3 -1. + <_> + 7 4 1 1 3. + 0 + <_> + + <_> + 7 3 3 5 -1. + <_> + 8 3 1 5 3. + 0 + <_> + + <_> + 7 4 3 10 -1. + <_> + 8 4 1 10 3. + 0 + <_> + + <_> + 7 5 2 2 -1. + <_> + 8 5 1 2 2. + 0 + <_> + + <_> + 7 5 3 2 -1. + <_> + 8 5 1 2 3. + 0 + <_> + + <_> + 7 5 3 3 -1. + <_> + 8 5 1 3 3. + 0 + <_> + + <_> + 7 5 3 6 -1. + <_> + 8 5 1 6 3. + 0 + <_> + + <_> + 7 5 2 7 -1. + <_> + 8 5 1 7 2. + 0 + <_> + + <_> + 7 5 2 6 -1. + <_> + 7 7 2 2 3. + 0 + <_> + + <_> + 7 5 11 6 -1. + <_> + 7 7 11 2 3. + 0 + <_> + + <_> + 7 6 3 1 -1. + <_> + 8 6 1 1 3. + 0 + <_> + + <_> + 7 6 1 3 -1. + <_> + 7 7 1 1 3. + 0 + <_> + + <_> + 7 6 4 6 -1. + <_> + 9 6 2 6 2. + 0 + <_> + + <_> + 7 6 10 2 -1. + <_> + 7 6 5 1 2. + <_> + 12 7 5 1 2. + 0 + <_> + + <_> + 7 6 12 2 -1. + <_> + 7 6 6 1 2. + <_> + 13 7 6 1 2. + 0 + <_> + + <_> + 7 7 1 2 -1. + <_> + 7 8 1 1 2. + 0 + <_> + + <_> + 7 7 1 3 -1. + <_> + 7 8 1 1 3. + 0 + <_> + + <_> + 7 7 1 6 -1. + <_> + 7 9 1 2 3. + 0 + <_> + + <_> + 7 7 2 4 -1. + <_> + 7 9 2 2 2. + 0 + <_> + + <_> + 7 7 10 2 -1. + <_> + 7 7 5 1 2. + <_> + 12 8 5 1 2. + 0 + <_> + + <_> + 7 8 1 3 -1. + <_> + 7 9 1 1 3. + 0 + <_> + + <_> + 7 8 2 2 -1. + <_> + 7 8 1 1 2. + <_> + 8 9 1 1 2. + 0 + <_> + + <_> + 7 8 2 4 -1. + <_> + 7 8 1 2 2. + <_> + 8 10 1 2 2. + 0 + <_> + + <_> + 7 8 10 2 -1. + <_> + 7 8 5 1 2. + <_> + 12 9 5 1 2. + 0 + <_> + + <_> + 7 9 1 2 -1. + <_> + 7 10 1 1 2. + 0 + <_> + + <_> + 7 9 1 3 -1. + <_> + 7 10 1 1 3. + 0 + <_> + + <_> + 7 9 3 3 -1. + <_> + 8 9 1 3 3. + 0 + <_> + + <_> + 7 9 4 6 -1. + <_> + 7 9 2 3 2. + <_> + 9 12 2 3 2. + 0 + <_> + + <_> + 7 9 6 10 -1. + <_> + 7 9 3 5 2. + <_> + 10 14 3 5 2. + 0 + <_> + + <_> + 7 9 12 2 -1. + <_> + 11 9 4 2 3. + 0 + <_> + + <_> + 7 9 10 2 -1. + <_> + 7 9 5 1 2. + <_> + 12 10 5 1 2. + 0 + <_> + + <_> + 7 9 12 2 -1. + <_> + 7 9 6 1 2. + <_> + 13 10 6 1 2. + 0 + <_> + + <_> + 7 10 3 1 -1. + <_> + 8 10 1 1 3. + 0 + <_> + + <_> + 7 10 1 3 -1. + <_> + 7 11 1 1 3. + 0 + <_> + + <_> + 7 10 2 3 -1. + <_> + 7 11 2 1 3. + 0 + <_> + + <_> + 7 10 6 4 -1. + <_> + 9 10 2 4 3. + 0 + <_> + + <_> + 7 10 10 2 -1. + <_> + 7 10 5 1 2. + <_> + 12 11 5 1 2. + 0 + <_> + + <_> + 7 11 2 1 -1. + <_> + 8 11 1 1 2. + 0 + <_> + + <_> + 7 11 2 2 -1. + <_> + 7 12 2 1 2. + 0 + <_> + + <_> + 7 11 6 4 -1. + <_> + 9 11 2 4 3. + 0 + <_> + + <_> + 7 14 1 3 -1. + <_> + 7 15 1 1 3. + 0 + <_> + + <_> + 7 16 10 8 -1. + <_> + 7 20 10 4 2. + 0 + <_> + + <_> + 7 18 3 6 -1. + <_> + 8 18 1 6 3. + 0 + <_> + + <_> + 7 18 9 6 -1. + <_> + 7 20 9 2 3. + 0 + <_> + + <_> + 7 19 3 3 -1. + <_> + 8 19 1 3 3. + 0 + <_> + + <_> + 7 20 3 4 -1. + <_> + 8 20 1 4 3. + 0 + <_> + + <_> + 7 20 7 4 -1. + <_> + 7 22 7 2 2. + 0 + <_> + + <_> + 7 20 11 4 -1. + <_> + 7 22 11 2 2. + 0 + <_> + + <_> + 7 22 3 2 -1. + <_> + 8 22 1 2 3. + 0 + <_> + + <_> + 8 0 8 2 -1. + <_> + 12 0 4 2 2. + 0 + <_> + + <_> + 8 0 8 2 -1. + <_> + 8 1 8 1 2. + 0 + <_> + + <_> + 8 0 8 10 -1. + <_> + 8 5 8 5 2. + 0 + <_> + + <_> + 8 0 16 10 -1. + <_> + 8 0 8 5 2. + <_> + 16 5 8 5 2. + 0 + <_> + + <_> + 8 0 10 3 -1. + <_> + 8 1 10 1 3. + 0 + <_> + + <_> + 8 1 8 1 -1. + <_> + 12 1 4 1 2. + 0 + <_> + + <_> + 8 2 3 2 -1. + <_> + 9 2 1 2 3. + 0 + <_> + + <_> + 8 2 8 20 -1. + <_> + 12 2 4 20 2. + 0 + <_> + + <_> + 8 3 3 8 -1. + <_> + 9 3 1 8 3. + 0 + <_> + + <_> + 8 3 3 9 -1. + <_> + 9 3 1 9 3. + 0 + <_> + + <_> + 8 3 6 1 -1. + <_> + 11 3 3 1 2. + 0 + <_> + + <_> + 8 3 4 3 -1. + <_> + 8 4 4 1 3. + 0 + <_> + + <_> + 8 3 8 2 -1. + <_> + 8 3 4 1 2. + <_> + 12 4 4 1 2. + 0 + <_> + + <_> + 8 4 3 2 -1. + <_> + 9 4 1 2 3. + 0 + <_> + + <_> + 8 4 2 8 -1. + <_> + 9 4 1 8 2. + 0 + <_> + + <_> + 8 4 3 3 -1. + <_> + 8 5 3 1 3. + 0 + <_> + + <_> + 8 4 8 2 -1. + <_> + 8 4 4 1 2. + <_> + 12 5 4 1 2. + 0 + <_> + + <_> + 8 4 7 15 -1. + <_> + 8 9 7 5 3. + 0 + <_> + + <_> + 8 5 3 2 -1. + <_> + 9 5 1 2 3. + 0 + <_> + + <_> + 8 5 2 3 -1. + <_> + 9 5 1 3 2. + 0 + <_> + + <_> + 8 5 3 5 -1. + <_> + 9 5 1 5 3. + 0 + <_> + + <_> + 8 5 2 6 -1. + <_> + 9 5 1 6 2. + 0 + <_> + + <_> + 8 5 3 7 -1. + <_> + 9 5 1 7 3. + 0 + <_> + + <_> + 8 5 4 3 -1. + <_> + 8 6 4 1 3. + 0 + <_> + + <_> + 8 5 8 12 -1. + <_> + 12 5 4 12 2. + 0 + <_> + + <_> + 8 5 8 19 -1. + <_> + 12 5 4 19 2. + 0 + <_> + + <_> + 8 6 3 5 -1. + <_> + 9 6 1 5 3. + 0 + <_> + + <_> + 8 6 10 2 -1. + <_> + 8 6 5 1 2. + <_> + 13 7 5 1 2. + 0 + <_> + + <_> + 8 8 2 2 -1. + <_> + 8 8 1 1 2. + <_> + 9 9 1 1 2. + 0 + <_> + + <_> + 8 8 1 6 -1. + <_> + 8 10 1 2 3. + 0 + <_> + + <_> + 8 8 3 3 -1. + <_> + 8 9 3 1 3. + 0 + <_> + + <_> + 8 9 1 3 -1. + <_> + 8 10 1 1 3. + 0 + <_> + + <_> + 8 9 3 2 -1. + <_> + 9 9 1 2 3. + 0 + <_> + + <_> + 8 9 2 6 -1. + <_> + 8 9 1 3 2. + <_> + 9 12 1 3 2. + 0 + <_> + + <_> + 8 10 2 1 -1. + <_> + 9 10 1 1 2. + 0 + <_> + + <_> + 8 10 3 1 -1. + <_> + 9 10 1 1 3. + 0 + <_> + + <_> + 8 10 2 2 -1. + <_> + 8 10 1 1 2. + <_> + 9 11 1 1 2. + 0 + <_> + + <_> + 8 10 2 2 -1. + <_> + 9 10 1 2 2. + 0 + <_> + + <_> + 8 10 3 2 -1. + <_> + 9 10 1 2 3. + 0 + <_> + + <_> + 8 10 4 8 -1. + <_> + 8 10 2 4 2. + <_> + 10 14 2 4 2. + 0 + <_> + + <_> + 8 10 8 2 -1. + <_> + 8 10 4 1 2. + <_> + 12 11 4 1 2. + 0 + <_> + + <_> + 8 11 2 2 -1. + <_> + 8 11 1 1 2. + <_> + 9 12 1 1 2. + 0 + <_> + + <_> + 8 11 4 8 -1. + <_> + 8 11 2 4 2. + <_> + 10 15 2 4 2. + 0 + <_> + + <_> + 8 11 4 10 -1. + <_> + 8 11 2 5 2. + <_> + 10 16 2 5 2. + 0 + <_> + + <_> + 8 13 9 10 -1. + <_> + 8 18 9 5 2. + 0 + <_> + + <_> + 8 15 4 4 -1. + <_> + 10 15 2 4 2. + 0 + <_> + + <_> + 8 16 9 3 -1. + <_> + 11 16 3 3 3. + 0 + <_> + + <_> + 8 19 3 5 -1. + <_> + 9 19 1 5 3. + 0 + <_> + + <_> + 8 20 3 3 -1. + <_> + 9 20 1 3 3. + 0 + <_> + + <_> + 9 0 1 2 -1. + <_> + 9 1 1 1 2. + 0 + <_> + + <_> + 9 0 2 4 -1. + <_> + 10 0 1 4 2. + 0 + <_> + + <_> + 9 0 6 1 -1. + <_> + 12 0 3 1 2. + 0 + <_> + + <_> + 9 0 5 4 -1. + <_> + 9 2 5 2 2. + 0 + <_> + + <_> + 9 0 6 10 -1. + <_> + 9 5 6 5 2. + 0 + <_> + + <_> + 9 0 14 8 -1. + <_> + 9 0 7 4 2. + <_> + 16 4 7 4 2. + 0 + <_> + + <_> + 9 0 7 10 -1. + <_> + 9 5 7 5 2. + 0 + <_> + + <_> + 9 0 14 10 -1. + <_> + 9 0 7 5 2. + <_> + 16 5 7 5 2. + 0 + <_> + + <_> + 9 0 14 12 -1. + <_> + 9 0 7 6 2. + <_> + 16 6 7 6 2. + 0 + <_> + + <_> + 9 1 3 12 -1. + <_> + 10 1 1 12 3. + 0 + <_> + + <_> + 9 1 4 15 -1. + <_> + 11 1 2 15 2. + 0 + <_> + + <_> + 9 1 6 1 -1. + <_> + 12 1 3 1 2. + 0 + <_> + + <_> + 9 2 2 2 -1. + <_> + 10 2 1 2 2. + 0 + <_> + + <_> + 9 2 6 18 -1. + <_> + 12 2 3 18 2. + 0 + <_> + + <_> + 9 2 15 3 -1. + <_> + 9 3 15 1 3. + 0 + <_> + + <_> + 9 3 3 9 -1. + <_> + 10 3 1 9 3. + 0 + <_> + + <_> + 9 3 8 6 -1. + <_> + 9 6 8 3 2. + 0 + <_> + + <_> + 9 3 15 15 -1. + <_> + 9 8 15 5 3. + 0 + <_> + + <_> + 9 4 3 4 -1. + <_> + 10 4 1 4 3. + 0 + <_> + + <_> + 9 4 6 2 -1. + <_> + 9 4 3 1 2. + <_> + 12 5 3 1 2. + 0 + <_> + + <_> + 9 4 14 5 -1. + <_> + 16 4 7 5 2. + 0 + <_> + + <_> + 9 5 2 5 -1. + <_> + 10 5 1 5 2. + 0 + <_> + + <_> + 9 5 3 6 -1. + <_> + 10 5 1 6 3. + 0 + <_> + + <_> + 9 5 4 15 -1. + <_> + 11 5 2 15 2. + 0 + <_> + + <_> + 9 5 3 3 -1. + <_> + 9 6 3 1 3. + 0 + <_> + + <_> + 9 5 4 3 -1. + <_> + 9 6 4 1 3. + 0 + <_> + + <_> + 9 6 4 4 -1. + <_> + 11 6 2 4 2. + 0 + <_> + + <_> + 9 6 3 3 -1. + <_> + 9 7 3 1 3. + 0 + <_> + + <_> + 9 6 6 7 -1. + <_> + 12 6 3 7 2. + 0 + <_> + + <_> + 9 6 4 3 -1. + <_> + 9 7 4 1 3. + 0 + <_> + + <_> + 9 6 15 10 -1. + <_> + 9 11 15 5 2. + 0 + <_> + + <_> + 9 7 6 2 -1. + <_> + 9 7 3 1 2. + <_> + 12 8 3 1 2. + 0 + <_> + + <_> + 9 8 3 3 -1. + <_> + 9 9 3 1 3. + 0 + <_> + + <_> + 9 8 7 10 -1. + <_> + 9 13 7 5 2. + 0 + <_> + + <_> + 9 9 2 2 -1. + <_> + 10 9 1 2 2. + 0 + <_> + + <_> + 9 9 3 3 -1. + <_> + 9 10 3 1 3. + 0 + <_> + + <_> + 9 9 9 6 -1. + <_> + 12 9 3 6 3. + 0 + <_> + + <_> + 9 10 2 4 -1. + <_> + 9 10 1 2 2. + <_> + 10 12 1 2 2. + 0 + <_> + + <_> + 9 10 6 2 -1. + <_> + 9 10 3 1 2. + <_> + 12 11 3 1 2. + 0 + <_> + + <_> + 9 10 8 1 -1. + <_> + 13 10 4 1 2. + 0 + <_> + + <_> + 9 10 15 3 -1. + <_> + 9 11 15 1 3. + 0 + <_> + + <_> + 9 11 2 4 -1. + <_> + 9 11 1 2 2. + <_> + 10 13 1 2 2. + 0 + <_> + + <_> + 9 11 2 6 -1. + <_> + 9 11 1 3 2. + <_> + 10 14 1 3 2. + 0 + <_> + + <_> + 9 13 2 11 -1. + <_> + 10 13 1 11 2. + 0 + <_> + + <_> + 9 14 6 3 -1. + <_> + 11 14 2 3 3. + 0 + <_> + + <_> + 9 16 4 3 -1. + <_> + 11 16 2 3 2. + 0 + <_> + + <_> + 9 16 6 4 -1. + <_> + 11 16 2 4 3. + 0 + <_> + + <_> + 9 16 6 8 -1. + <_> + 11 16 2 8 3. + 0 + <_> + + <_> + 9 16 6 3 -1. + <_> + 9 17 6 1 3. + 0 + <_> + + <_> + 9 17 6 2 -1. + <_> + 11 17 2 2 3. + 0 + <_> + + <_> + 9 17 6 7 -1. + <_> + 11 17 2 7 3. + 0 + <_> + + <_> + 9 18 5 3 -1. + <_> + 9 19 5 1 3. + 0 + <_> + + <_> + 9 19 3 5 -1. + <_> + 10 19 1 5 3. + 0 + <_> + + <_> + 9 19 7 3 -1. + <_> + 9 20 7 1 3. + 0 + <_> + + <_> + 9 20 3 4 -1. + <_> + 10 20 1 4 3. + 0 + <_> + + <_> + 9 20 3 2 -1. + <_> + 9 21 3 1 2. + 0 + <_> + + <_> + 9 20 5 3 -1. + <_> + 9 21 5 1 3. + 0 + <_> + + <_> + 9 20 6 3 -1. + <_> + 9 21 6 1 3. + 0 + <_> + + <_> + 9 20 6 4 -1. + <_> + 9 22 6 2 2. + 0 + <_> + + <_> + 9 20 7 3 -1. + <_> + 9 21 7 1 3. + 0 + <_> + + <_> + 9 20 8 4 -1. + <_> + 9 22 8 2 2. + 0 + <_> + + <_> + 9 21 3 2 -1. + <_> + 10 21 1 2 3. + 0 + <_> + + <_> + 9 22 3 2 -1. + <_> + 10 22 1 2 3. + 0 + <_> + + <_> + 10 0 1 6 -1. + <_> + 10 3 1 3 2. + 0 + <_> + + <_> + 10 0 6 1 -1. + <_> + 13 0 3 1 2. + 0 + <_> + + <_> + 10 0 4 8 -1. + <_> + 10 4 4 4 2. + 0 + <_> + + <_> + 10 0 14 10 -1. + <_> + 10 0 7 5 2. + <_> + 17 5 7 5 2. + 0 + <_> + + <_> + 10 1 4 2 -1. + <_> + 10 1 2 1 2. + <_> + 12 2 2 1 2. + 0 + <_> + + <_> + 10 2 1 6 -1. + <_> + 10 5 1 3 2. + 0 + <_> + + <_> + 10 3 6 1 -1. + <_> + 13 3 3 1 2. + 0 + <_> + + <_> + 10 3 9 1 -1. + <_> + 13 3 3 1 3. + 0 + <_> + + <_> + 10 3 3 3 -1. + <_> + 10 4 3 1 3. + 0 + <_> + + <_> + 10 4 3 3 -1. + <_> + 11 4 1 3 3. + 0 + <_> + + <_> + 10 4 2 8 -1. + <_> + 11 4 1 8 2. + 0 + <_> + + <_> + 10 5 3 3 -1. + <_> + 11 5 1 3 3. + 0 + <_> + + <_> + 10 5 4 11 -1. + <_> + 12 5 2 11 2. + 0 + <_> + + <_> + 10 6 6 3 -1. + <_> + 10 7 6 1 3. + 0 + <_> + + <_> + 10 7 2 3 -1. + <_> + 10 8 2 1 3. + 0 + <_> + + <_> + 10 7 4 7 -1. + <_> + 12 7 2 7 2. + 0 + <_> + + <_> + 10 7 9 6 -1. + <_> + 13 7 3 6 3. + 0 + <_> + + <_> + 10 7 4 3 -1. + <_> + 10 8 4 1 3. + 0 + <_> + + <_> + 10 8 2 3 -1. + <_> + 10 9 2 1 3. + 0 + <_> + + <_> + 10 8 4 2 -1. + <_> + 10 9 4 1 2. + 0 + <_> + + <_> + 10 8 8 10 -1. + <_> + 10 13 8 5 2. + 0 + <_> + + <_> + 10 9 1 3 -1. + <_> + 10 10 1 1 3. + 0 + <_> + + <_> + 10 9 2 3 -1. + <_> + 10 10 2 1 3. + 0 + <_> + + <_> + 10 9 6 4 -1. + <_> + 13 9 3 4 2. + 0 + <_> + + <_> + 10 10 14 3 -1. + <_> + 10 11 14 1 3. + 0 + <_> + + <_> + 10 11 1 3 -1. + <_> + 10 12 1 1 3. + 0 + <_> + + <_> + 10 11 4 3 -1. + <_> + 10 12 4 1 3. + 0 + <_> + + <_> + 10 12 1 3 -1. + <_> + 10 13 1 1 3. + 0 + <_> + + <_> + 10 12 2 8 -1. + <_> + 10 12 1 4 2. + <_> + 11 16 1 4 2. + 0 + <_> + + <_> + 10 15 4 3 -1. + <_> + 10 16 4 1 3. + 0 + <_> + + <_> + 10 15 6 6 -1. + <_> + 10 17 6 2 3. + 0 + <_> + + <_> + 10 16 6 8 -1. + <_> + 10 16 3 4 2. + <_> + 13 20 3 4 2. + 0 + <_> + + <_> + 10 16 4 2 -1. + <_> + 10 17 4 1 2. + 0 + <_> + + <_> + 10 16 4 3 -1. + <_> + 10 17 4 1 3. + 0 + <_> + + <_> + 10 17 4 3 -1. + <_> + 10 18 4 1 3. + 0 + <_> + + <_> + 10 17 5 3 -1. + <_> + 10 18 5 1 3. + 0 + <_> + + <_> + 10 18 5 3 -1. + <_> + 10 19 5 1 3. + 0 + <_> + + <_> + 10 19 5 3 -1. + <_> + 10 20 5 1 3. + 0 + <_> + + <_> + 10 20 3 3 -1. + <_> + 11 20 1 3 3. + 0 + <_> + + <_> + 10 20 3 4 -1. + <_> + 11 20 1 4 3. + 0 + <_> + + <_> + 10 20 4 3 -1. + <_> + 10 21 4 1 3. + 0 + <_> + + <_> + 10 20 5 3 -1. + <_> + 10 21 5 1 3. + 0 + <_> + + <_> + 10 21 3 1 -1. + <_> + 11 21 1 1 3. + 0 + <_> + + <_> + 10 21 3 3 -1. + <_> + 11 21 1 3 3. + 0 + <_> + + <_> + 10 21 6 3 -1. + <_> + 12 21 2 3 3. + 0 + <_> + + <_> + 10 21 5 2 -1. + <_> + 10 22 5 1 2. + 0 + <_> + + <_> + 10 22 3 1 -1. + <_> + 11 22 1 1 3. + 0 + <_> + + <_> + 10 22 3 2 -1. + <_> + 11 22 1 2 3. + 0 + <_> + + <_> + 11 0 2 12 -1. + <_> + 11 4 2 4 3. + 0 + <_> + + <_> + 11 0 12 19 -1. + <_> + 15 0 4 19 3. + 0 + <_> + + <_> + 11 2 4 20 -1. + <_> + 13 2 2 20 2. + 0 + <_> + + <_> + 11 3 3 3 -1. + <_> + 12 3 1 3 3. + 0 + <_> + + <_> + 11 3 3 5 -1. + <_> + 12 3 1 5 3. + 0 + <_> + + <_> + 11 3 3 6 -1. + <_> + 12 3 1 6 3. + 0 + <_> + + <_> + 11 3 3 7 -1. + <_> + 12 3 1 7 3. + 0 + <_> + + <_> + 11 3 2 3 -1. + <_> + 11 4 2 1 3. + 0 + <_> + + <_> + 11 3 12 14 -1. + <_> + 15 3 4 14 3. + 0 + <_> + + <_> + 11 4 3 5 -1. + <_> + 12 4 1 5 3. + 0 + <_> + + <_> + 11 4 2 3 -1. + <_> + 11 5 2 1 3. + 0 + <_> + + <_> + 11 4 9 1 -1. + <_> + 14 4 3 1 3. + 0 + <_> + + <_> + 11 4 3 3 -1. + <_> + 11 5 3 1 3. + 0 + <_> + + <_> + 11 5 8 4 -1. + <_> + 11 7 8 2 2. + 0 + <_> + + <_> + 11 6 2 3 -1. + <_> + 11 7 2 1 3. + 0 + <_> + + <_> + 11 6 4 3 -1. + <_> + 11 7 4 1 3. + 0 + <_> + + <_> + 11 7 1 3 -1. + <_> + 11 8 1 1 3. + 0 + <_> + + <_> + 11 7 2 2 -1. + <_> + 11 7 1 1 2. + <_> + 12 8 1 1 2. + 0 + <_> + + <_> + 11 7 2 3 -1. + <_> + 11 8 2 1 3. + 0 + <_> + + <_> + 11 7 4 2 -1. + <_> + 11 7 2 1 2. + <_> + 13 8 2 1 2. + 0 + <_> + + <_> + 11 7 4 3 -1. + <_> + 11 8 4 1 3. + 0 + <_> + + <_> + 11 8 1 3 -1. + <_> + 11 9 1 1 3. + 0 + <_> + + <_> + 11 8 1 10 -1. + <_> + 11 13 1 5 2. + 0 + <_> + + <_> + 11 8 2 3 -1. + <_> + 11 9 2 1 3. + 0 + <_> + + <_> + 11 8 3 3 -1. + <_> + 11 9 3 1 3. + 0 + <_> + + <_> + 11 8 8 8 -1. + <_> + 11 8 4 4 2. + <_> + 15 12 4 4 2. + 0 + <_> + + <_> + 11 8 7 10 -1. + <_> + 11 13 7 5 2. + 0 + <_> + + <_> + 11 9 6 6 -1. + <_> + 13 9 2 6 3. + 0 + <_> + + <_> + 11 9 4 3 -1. + <_> + 11 10 4 1 3. + 0 + <_> + + <_> + 11 10 6 4 -1. + <_> + 13 10 2 4 3. + 0 + <_> + + <_> + 11 10 6 8 -1. + <_> + 11 10 3 4 2. + <_> + 14 14 3 4 2. + 0 + <_> + + <_> + 11 10 4 3 -1. + <_> + 11 11 4 1 3. + 0 + <_> + + <_> + 11 10 5 3 -1. + <_> + 11 11 5 1 3. + 0 + <_> + + <_> + 11 11 1 3 -1. + <_> + 11 12 1 1 3. + 0 + <_> + + <_> + 11 11 10 10 -1. + <_> + 11 11 5 5 2. + <_> + 16 16 5 5 2. + 0 + <_> + + <_> + 11 13 6 2 -1. + <_> + 13 13 2 2 3. + 0 + <_> + + <_> + 11 14 2 9 -1. + <_> + 11 17 2 3 3. + 0 + <_> + + <_> + 11 15 1 2 -1. + <_> + 11 16 1 1 2. + 0 + <_> + + <_> + 11 20 3 4 -1. + <_> + 12 20 1 4 3. + 0 + <_> + + <_> + 11 20 3 3 -1. + <_> + 11 21 3 1 3. + 0 + <_> + + <_> + 11 21 2 1 -1. + <_> + 12 21 1 1 2. + 0 + <_> + + <_> + 11 21 3 2 -1. + <_> + 12 21 1 2 3. + 0 + <_> + + <_> + 11 21 2 3 -1. + <_> + 12 21 1 3 2. + 0 + <_> + + <_> + 11 21 3 2 -1. + <_> + 11 22 3 1 2. + 0 + <_> + + <_> + 11 23 3 1 -1. + <_> + 12 23 1 1 3. + 0 + <_> + + <_> + 12 0 8 12 -1. + <_> + 12 0 4 6 2. + <_> + 16 6 4 6 2. + 0 + <_> + + <_> + 12 0 12 6 -1. + <_> + 12 0 6 3 2. + <_> + 18 3 6 3 2. + 0 + <_> + + <_> + 12 1 1 3 -1. + <_> + 12 2 1 1 3. + 0 + <_> + + <_> + 12 1 2 7 -1. + <_> + 13 1 1 7 2. + 0 + <_> + + <_> + 12 1 12 4 -1. + <_> + 12 1 6 2 2. + <_> + 18 3 6 2 2. + 0 + <_> + + <_> + 12 2 3 3 -1. + <_> + 13 2 1 3 3. + 0 + <_> + + <_> + 12 2 3 7 -1. + <_> + 13 2 1 7 3. + 0 + <_> + + <_> + 12 2 6 1 -1. + <_> + 14 2 2 1 3. + 0 + <_> + + <_> + 12 2 6 4 -1. + <_> + 14 2 2 4 3. + 0 + <_> + + <_> + 12 2 6 18 -1. + <_> + 12 8 6 6 3. + 0 + <_> + + <_> + 12 3 6 11 -1. + <_> + 14 3 2 11 3. + 0 + <_> + + <_> + 12 3 9 3 -1. + <_> + 15 3 3 3 3. + 0 + <_> + + <_> + 12 3 12 3 -1. + <_> + 12 4 12 1 3. + 0 + <_> + + <_> + 12 4 2 12 -1. + <_> + 13 4 1 12 2. + 0 + <_> + + <_> + 12 4 2 3 -1. + <_> + 12 5 2 1 3. + 0 + <_> + + <_> + 12 5 3 5 -1. + <_> + 13 5 1 5 3. + 0 + <_> + + <_> + 12 5 4 3 -1. + <_> + 12 6 4 1 3. + 0 + <_> + + <_> + 12 6 1 3 -1. + <_> + 12 7 1 1 3. + 0 + <_> + + <_> + 12 6 2 3 -1. + <_> + 12 7 2 1 3. + 0 + <_> + + <_> + 12 6 8 4 -1. + <_> + 12 6 4 2 2. + <_> + 16 8 4 2 2. + 0 + <_> + + <_> + 12 7 1 3 -1. + <_> + 12 8 1 1 3. + 0 + <_> + + <_> + 12 7 2 3 -1. + <_> + 12 8 2 1 3. + 0 + <_> + + <_> + 12 8 1 3 -1. + <_> + 12 9 1 1 3. + 0 + <_> + + <_> + 12 8 3 3 -1. + <_> + 12 9 3 1 3. + 0 + <_> + + <_> + 12 8 4 3 -1. + <_> + 12 9 4 1 3. + 0 + <_> + + <_> + 12 9 1 3 -1. + <_> + 12 10 1 1 3. + 0 + <_> + + <_> + 12 10 2 12 -1. + <_> + 12 10 1 6 2. + <_> + 13 16 1 6 2. + 0 + <_> + + <_> + 12 10 4 10 -1. + <_> + 12 10 2 5 2. + <_> + 14 15 2 5 2. + 0 + <_> + + <_> + 12 11 2 3 -1. + <_> + 12 12 2 1 3. + 0 + <_> + + <_> + 12 11 4 4 -1. + <_> + 14 11 2 4 2. + 0 + <_> + + <_> + 12 11 4 8 -1. + <_> + 12 11 2 4 2. + <_> + 14 15 2 4 2. + 0 + <_> + + <_> + 12 15 6 5 -1. + <_> + 14 15 2 5 3. + 0 + <_> + + <_> + 12 15 10 4 -1. + <_> + 12 15 5 2 2. + <_> + 17 17 5 2 2. + 0 + <_> + + <_> + 12 16 4 3 -1. + <_> + 14 16 2 3 2. + 0 + <_> + + <_> + 12 17 3 3 -1. + <_> + 13 17 1 3 3. + 0 + <_> + + <_> + 12 17 8 6 -1. + <_> + 12 17 4 3 2. + <_> + 16 20 4 3 2. + 0 + <_> + + <_> + 12 18 12 6 -1. + <_> + 12 18 6 3 2. + <_> + 18 21 6 3 2. + 0 + <_> + + <_> + 12 21 3 3 -1. + <_> + 13 21 1 3 3. + 0 + <_> + + <_> + 13 0 11 14 -1. + <_> + 13 7 11 7 2. + 0 + <_> + + <_> + 13 2 2 3 -1. + <_> + 14 2 1 3 2. + 0 + <_> + + <_> + 13 3 1 4 -1. + <_> + 13 5 1 2 2. + 0 + <_> + + <_> + 13 3 3 3 -1. + <_> + 14 3 1 3 3. + 0 + <_> + + <_> + 13 3 6 1 -1. + <_> + 15 3 2 1 3. + 0 + <_> + + <_> + 13 4 1 2 -1. + <_> + 13 5 1 1 2. + 0 + <_> + + <_> + 13 4 3 7 -1. + <_> + 14 4 1 7 3. + 0 + <_> + + <_> + 13 4 3 8 -1. + <_> + 14 4 1 8 3. + 0 + <_> + + <_> + 13 5 3 6 -1. + <_> + 14 5 1 6 3. + 0 + <_> + + <_> + 13 6 1 3 -1. + <_> + 13 7 1 1 3. + 0 + <_> + + <_> + 13 7 6 6 -1. + <_> + 15 7 2 6 3. + 0 + <_> + + <_> + 13 7 3 3 -1. + <_> + 13 8 3 1 3. + 0 + <_> + + <_> + 13 8 6 8 -1. + <_> + 15 8 2 8 3. + 0 + <_> + + <_> + 13 9 3 4 -1. + <_> + 14 9 1 4 3. + 0 + <_> + + <_> + 13 9 4 3 -1. + <_> + 15 9 2 3 2. + 0 + <_> + + <_> + 13 9 6 4 -1. + <_> + 15 9 2 4 3. + 0 + <_> + + <_> + 13 9 9 2 -1. + <_> + 16 9 3 2 3. + 0 + <_> + + <_> + 13 9 9 2 -1. + <_> + 13 10 9 1 2. + 0 + <_> + + <_> + 13 10 3 2 -1. + <_> + 14 10 1 2 3. + 0 + <_> + + <_> + 13 10 4 1 -1. + <_> + 15 10 2 1 2. + 0 + <_> + + <_> + 13 10 4 4 -1. + <_> + 13 10 2 2 2. + <_> + 15 12 2 2 2. + 0 + <_> + + <_> + 13 11 2 3 -1. + <_> + 13 12 2 1 3. + 0 + <_> + + <_> + 13 11 3 3 -1. + <_> + 13 12 3 1 3. + 0 + <_> + + <_> + 13 12 3 3 -1. + <_> + 13 13 3 1 3. + 0 + <_> + + <_> + 13 13 2 6 -1. + <_> + 13 13 1 3 2. + <_> + 14 16 1 3 2. + 0 + <_> + + <_> + 13 15 2 5 -1. + <_> + 14 15 1 5 2. + 0 + <_> + + <_> + 13 19 3 3 -1. + <_> + 14 19 1 3 3. + 0 + <_> + + <_> + 13 20 3 3 -1. + <_> + 14 20 1 3 3. + 0 + <_> + + <_> + 13 22 3 2 -1. + <_> + 14 22 1 2 3. + 0 + <_> + + <_> + 14 0 1 10 -1. + <_> + 14 5 1 5 2. + 0 + <_> + + <_> + 14 0 2 7 -1. + <_> + 15 0 1 7 2. + 0 + <_> + + <_> + 14 0 2 22 -1. + <_> + 14 0 1 11 2. + <_> + 15 11 1 11 2. + 0 + <_> + + <_> + 14 0 10 6 -1. + <_> + 14 0 5 3 2. + <_> + 19 3 5 3 2. + 0 + <_> + + <_> + 14 0 10 8 -1. + <_> + 14 0 5 4 2. + <_> + 19 4 5 4 2. + 0 + <_> + + <_> + 14 0 10 12 -1. + <_> + 14 0 5 6 2. + <_> + 19 6 5 6 2. + 0 + <_> + + <_> + 14 1 2 2 -1. + <_> + 15 1 1 2 2. + 0 + <_> + + <_> + 14 1 4 4 -1. + <_> + 14 3 4 2 2. + 0 + <_> + + <_> + 14 1 10 2 -1. + <_> + 19 1 5 2 2. + 0 + <_> + + <_> + 14 2 6 7 -1. + <_> + 16 2 2 7 3. + 0 + <_> + + <_> + 14 3 2 4 -1. + <_> + 14 3 1 2 2. + <_> + 15 5 1 2 2. + 0 + <_> + + <_> + 14 4 3 3 -1. + <_> + 15 4 1 3 3. + 0 + <_> + + <_> + 14 4 6 1 -1. + <_> + 16 4 2 1 3. + 0 + <_> + + <_> + 14 4 3 3 -1. + <_> + 14 5 3 1 3. + 0 + <_> + + <_> + 14 5 3 2 -1. + <_> + 15 5 1 2 3. + 0 + <_> + + <_> + 14 5 3 3 -1. + <_> + 15 5 1 3 3. + 0 + <_> + + <_> + 14 5 4 2 -1. + <_> + 16 5 2 2 2. + 0 + <_> + + <_> + 14 5 3 10 -1. + <_> + 14 10 3 5 2. + 0 + <_> + + <_> + 14 5 4 6 -1. + <_> + 14 7 4 2 3. + 0 + <_> + + <_> + 14 6 3 2 -1. + <_> + 15 6 1 2 3. + 0 + <_> + + <_> + 14 6 3 4 -1. + <_> + 15 6 1 4 3. + 0 + <_> + + <_> + 14 6 2 6 -1. + <_> + 15 6 1 6 2. + 0 + <_> + + <_> + 14 6 6 2 -1. + <_> + 16 6 2 2 3. + 0 + <_> + + <_> + 14 6 6 17 -1. + <_> + 16 6 2 17 3. + 0 + <_> + + <_> + 14 8 2 13 -1. + <_> + 15 8 1 13 2. + 0 + <_> + + <_> + 14 8 4 6 -1. + <_> + 14 10 4 2 3. + 0 + <_> + + <_> + 14 9 2 2 -1. + <_> + 15 9 1 2 2. + 0 + <_> + + <_> + 14 9 3 2 -1. + <_> + 15 9 1 2 3. + 0 + <_> + + <_> + 14 9 2 4 -1. + <_> + 14 9 1 2 2. + <_> + 15 11 1 2 2. + 0 + <_> + + <_> + 14 9 2 3 -1. + <_> + 15 9 1 3 2. + 0 + <_> + + <_> + 14 9 4 1 -1. + <_> + 16 9 2 1 2. + 0 + <_> + + <_> + 14 9 6 1 -1. + <_> + 16 9 2 1 3. + 0 + <_> + + <_> + 14 9 9 9 -1. + <_> + 14 12 9 3 3. + 0 + <_> + + <_> + 14 10 2 1 -1. + <_> + 15 10 1 1 2. + 0 + <_> + + <_> + 14 10 3 1 -1. + <_> + 15 10 1 1 3. + 0 + <_> + + <_> + 14 10 2 2 -1. + <_> + 14 10 1 1 2. + <_> + 15 11 1 1 2. + 0 + <_> + + <_> + 14 10 2 2 -1. + <_> + 15 10 1 2 2. + 0 + <_> + + <_> + 14 10 3 2 -1. + <_> + 15 10 1 2 3. + 0 + <_> + + <_> + 14 10 3 3 -1. + <_> + 15 10 1 3 3. + 0 + <_> + + <_> + 14 10 2 6 -1. + <_> + 14 10 1 3 2. + <_> + 15 13 1 3 2. + 0 + <_> + + <_> + 14 12 6 2 -1. + <_> + 16 12 2 2 3. + 0 + <_> + + <_> + 14 12 6 5 -1. + <_> + 16 12 2 5 3. + 0 + <_> + + <_> + 14 14 8 6 -1. + <_> + 14 14 4 3 2. + <_> + 18 17 4 3 2. + 0 + <_> + + <_> + 14 14 10 10 -1. + <_> + 14 14 5 5 2. + <_> + 19 19 5 5 2. + 0 + <_> + + <_> + 14 16 10 8 -1. + <_> + 14 16 5 4 2. + <_> + 19 20 5 4 2. + 0 + <_> + + <_> + 14 18 8 4 -1. + <_> + 14 18 4 2 2. + <_> + 18 20 4 2 2. + 0 + <_> + + <_> + 14 19 3 4 -1. + <_> + 15 19 1 4 3. + 0 + <_> + + <_> + 14 19 3 5 -1. + <_> + 15 19 1 5 3. + 0 + <_> + + <_> + 14 20 3 4 -1. + <_> + 15 20 1 4 3. + 0 + <_> + + <_> + 14 23 3 1 -1. + <_> + 15 23 1 1 3. + 0 + <_> + + <_> + 15 0 8 1 -1. + <_> + 19 0 4 1 2. + 0 + <_> + + <_> + 15 0 8 2 -1. + <_> + 19 0 4 2 2. + 0 + <_> + + <_> + 15 2 2 10 -1. + <_> + 16 2 1 10 2. + 0 + <_> + + <_> + 15 2 6 7 -1. + <_> + 17 2 2 7 3. + 0 + <_> + + <_> + 15 2 5 3 -1. + <_> + 15 3 5 1 3. + 0 + <_> + + <_> + 15 4 2 6 -1. + <_> + 16 4 1 6 2. + 0 + <_> + + <_> + 15 4 2 8 -1. + <_> + 16 4 1 8 2. + 0 + <_> + + <_> + 15 4 6 8 -1. + <_> + 18 4 3 8 2. + 0 + <_> + + <_> + 15 4 8 3 -1. + <_> + 15 5 8 1 3. + 0 + <_> + + <_> + 15 5 2 2 -1. + <_> + 16 5 1 2 2. + 0 + <_> + + <_> + 15 5 3 2 -1. + <_> + 16 5 1 2 3. + 0 + <_> + + <_> + 15 5 3 3 -1. + <_> + 16 5 1 3 3. + 0 + <_> + + <_> + 15 5 3 6 -1. + <_> + 16 5 1 6 3. + 0 + <_> + + <_> + 15 6 3 18 -1. + <_> + 15 12 3 6 3. + 0 + <_> + + <_> + 15 6 6 7 -1. + <_> + 18 6 3 7 2. + 0 + <_> + + <_> + 15 6 8 4 -1. + <_> + 15 6 4 2 2. + <_> + 19 8 4 2 2. + 0 + <_> + + <_> + 15 7 3 6 -1. + <_> + 15 9 3 2 3. + 0 + <_> + + <_> + 15 7 5 4 -1. + <_> + 15 9 5 2 2. + 0 + <_> + + <_> + 15 7 5 6 -1. + <_> + 15 9 5 2 3. + 0 + <_> + + <_> + 15 7 6 6 -1. + <_> + 15 9 6 2 3. + 0 + <_> + + <_> + 15 7 7 3 -1. + <_> + 15 8 7 1 3. + 0 + <_> + + <_> + 15 7 9 6 -1. + <_> + 15 9 9 2 3. + 0 + <_> + + <_> + 15 8 2 2 -1. + <_> + 15 8 1 1 2. + <_> + 16 9 1 1 2. + 0 + <_> + + <_> + 15 8 2 4 -1. + <_> + 15 8 1 2 2. + <_> + 16 10 1 2 2. + 0 + <_> + + <_> + 15 8 1 12 -1. + <_> + 15 14 1 6 2. + 0 + <_> + + <_> + 15 9 2 2 -1. + <_> + 15 9 1 1 2. + <_> + 16 10 1 1 2. + 0 + <_> + + <_> + 15 9 3 4 -1. + <_> + 16 9 1 4 3. + 0 + <_> + + <_> + 15 9 2 3 -1. + <_> + 15 10 2 1 3. + 0 + <_> + + <_> + 15 9 7 3 -1. + <_> + 15 10 7 1 3. + 0 + <_> + + <_> + 15 10 2 1 -1. + <_> + 16 10 1 1 2. + 0 + <_> + + <_> + 15 10 3 1 -1. + <_> + 16 10 1 1 3. + 0 + <_> + + <_> + 15 10 3 4 -1. + <_> + 16 10 1 4 3. + 0 + <_> + + <_> + 15 10 3 5 -1. + <_> + 16 10 1 5 3. + 0 + <_> + + <_> + 15 12 4 8 -1. + <_> + 15 12 2 4 2. + <_> + 17 16 2 4 2. + 0 + <_> + + <_> + 15 15 4 3 -1. + <_> + 15 16 4 1 3. + 0 + <_> + + <_> + 15 16 5 3 -1. + <_> + 15 17 5 1 3. + 0 + <_> + + <_> + 15 19 3 4 -1. + <_> + 16 19 1 4 3. + 0 + <_> + + <_> + 15 19 9 3 -1. + <_> + 15 20 9 1 3. + 0 + <_> + + <_> + 15 20 6 3 -1. + <_> + 18 20 3 3 2. + 0 + <_> + + <_> + 16 0 8 1 -1. + <_> + 20 0 4 1 2. + 0 + <_> + + <_> + 16 0 8 2 -1. + <_> + 20 0 4 2 2. + 0 + <_> + + <_> + 16 0 8 4 -1. + <_> + 16 0 4 2 2. + <_> + 20 2 4 2 2. + 0 + <_> + + <_> + 16 0 8 6 -1. + <_> + 16 0 4 3 2. + <_> + 20 3 4 3 2. + 0 + <_> + + <_> + 16 0 8 8 -1. + <_> + 16 0 4 4 2. + <_> + 20 4 4 4 2. + 0 + <_> + + <_> + 16 0 8 12 -1. + <_> + 16 0 4 6 2. + <_> + 20 6 4 6 2. + 0 + <_> + + <_> + 16 1 4 13 -1. + <_> + 18 1 2 13 2. + 0 + <_> + + <_> + 16 2 3 2 -1. + <_> + 17 2 1 2 3. + 0 + <_> + + <_> + 16 3 2 3 -1. + <_> + 16 4 2 1 3. + 0 + <_> + + <_> + 16 4 1 3 -1. + <_> + 16 5 1 1 3. + 0 + <_> + + <_> + 16 4 2 2 -1. + <_> + 16 4 1 1 2. + <_> + 17 5 1 1 2. + 0 + <_> + + <_> + 16 5 2 3 -1. + <_> + 17 5 1 3 2. + 0 + <_> + + <_> + 16 6 2 9 -1. + <_> + 16 9 2 3 3. + 0 + <_> + + <_> + 16 6 4 4 -1. + <_> + 18 6 2 4 2. + 0 + <_> + + <_> + 16 6 3 9 -1. + <_> + 16 9 3 3 3. + 0 + <_> + + <_> + 16 6 7 6 -1. + <_> + 16 8 7 2 3. + 0 + <_> + + <_> + 16 7 1 6 -1. + <_> + 16 9 1 2 3. + 0 + <_> + + <_> + 16 7 2 3 -1. + <_> + 16 8 2 1 3. + 0 + <_> + + <_> + 16 7 2 6 -1. + <_> + 16 9 2 2 3. + 0 + <_> + + <_> + 16 7 3 2 -1. + <_> + 16 8 3 1 2. + 0 + <_> + + <_> + 16 7 3 3 -1. + <_> + 16 8 3 1 3. + 0 + <_> + + <_> + 16 7 3 6 -1. + <_> + 16 9 3 2 3. + 0 + <_> + + <_> + 16 7 6 4 -1. + <_> + 16 7 3 2 2. + <_> + 19 9 3 2 2. + 0 + <_> + + <_> + 16 7 4 3 -1. + <_> + 16 8 4 1 3. + 0 + <_> + + <_> + 16 7 4 6 -1. + <_> + 16 9 4 2 3. + 0 + <_> + + <_> + 16 8 1 2 -1. + <_> + 16 9 1 1 2. + 0 + <_> + + <_> + 16 8 2 2 -1. + <_> + 16 8 1 1 2. + <_> + 17 9 1 1 2. + 0 + <_> + + <_> + 16 8 2 2 -1. + <_> + 16 9 2 1 2. + 0 + <_> + + <_> + 16 8 8 2 -1. + <_> + 16 8 4 1 2. + <_> + 20 9 4 1 2. + 0 + <_> + + <_> + 16 9 3 1 -1. + <_> + 17 9 1 1 3. + 0 + <_> + + <_> + 16 9 1 3 -1. + <_> + 16 10 1 1 3. + 0 + <_> + + <_> + 16 9 2 3 -1. + <_> + 17 9 1 3 2. + 0 + <_> + + <_> + 16 9 4 1 -1. + <_> + 18 9 2 1 2. + 0 + <_> + + <_> + 16 9 2 2 -1. + <_> + 16 10 2 1 2. + 0 + <_> + + <_> + 16 9 4 4 -1. + <_> + 18 9 2 4 2. + 0 + <_> + + <_> + 16 9 6 6 -1. + <_> + 16 9 3 3 2. + <_> + 19 12 3 3 2. + 0 + <_> + + <_> + 16 10 1 2 -1. + <_> + 16 11 1 1 2. + 0 + <_> + + <_> + 16 10 1 3 -1. + <_> + 16 11 1 1 3. + 0 + <_> + + <_> + 16 10 2 2 -1. + <_> + 16 10 1 1 2. + <_> + 17 11 1 1 2. + 0 + <_> + + <_> + 16 10 2 2 -1. + <_> + 17 10 1 2 2. + 0 + <_> + + <_> + 16 10 2 5 -1. + <_> + 17 10 1 5 2. + 0 + <_> + + <_> + 16 10 3 13 -1. + <_> + 17 10 1 13 3. + 0 + <_> + + <_> + 16 10 2 3 -1. + <_> + 16 11 2 1 3. + 0 + <_> + + <_> + 16 10 3 3 -1. + <_> + 16 11 3 1 3. + 0 + <_> + + <_> + 16 11 1 2 -1. + <_> + 16 12 1 1 2. + 0 + <_> + + <_> + 16 11 3 2 -1. + <_> + 17 11 1 2 3. + 0 + <_> + + <_> + 16 11 2 2 -1. + <_> + 16 12 2 1 2. + 0 + <_> + + <_> + 16 11 2 3 -1. + <_> + 16 12 2 1 3. + 0 + <_> + + <_> + 16 13 3 3 -1. + <_> + 16 14 3 1 3. + 0 + <_> + + <_> + 16 14 4 1 -1. + <_> + 18 14 2 1 2. + 0 + <_> + + <_> + 16 15 4 3 -1. + <_> + 18 15 2 3 2. + 0 + <_> + + <_> + 16 15 6 2 -1. + <_> + 19 15 3 2 2. + 0 + <_> + + <_> + 16 15 8 3 -1. + <_> + 20 15 4 3 2. + 0 + <_> + + <_> + 16 16 4 1 -1. + <_> + 18 16 2 1 2. + 0 + <_> + + <_> + 16 17 3 7 -1. + <_> + 17 17 1 7 3. + 0 + <_> + + <_> + 16 17 6 3 -1. + <_> + 16 18 6 1 3. + 0 + <_> + + <_> + 16 19 3 4 -1. + <_> + 17 19 1 4 3. + 0 + <_> + + <_> + 17 0 6 1 -1. + <_> + 20 0 3 1 2. + 0 + <_> + + <_> + 17 2 1 4 -1. + <_> + 17 4 1 2 2. + 0 + <_> + + <_> + 17 3 3 1 -1. + <_> + 18 3 1 1 3. + 0 + <_> + + <_> + 17 3 3 2 -1. + <_> + 18 3 1 2 3. + 0 + <_> + + <_> + 17 3 2 8 -1. + <_> + 17 3 1 4 2. + <_> + 18 7 1 4 2. + 0 + <_> + + <_> + 17 3 3 3 -1. + <_> + 17 4 3 1 3. + 0 + <_> + + <_> + 17 4 1 3 -1. + <_> + 17 5 1 1 3. + 0 + <_> + + <_> + 17 4 2 2 -1. + <_> + 18 4 1 2 2. + 0 + <_> + + <_> + 17 4 2 6 -1. + <_> + 17 4 1 3 2. + <_> + 18 7 1 3 2. + 0 + <_> + + <_> + 17 6 1 6 -1. + <_> + 17 8 1 2 3. + 0 + <_> + + <_> + 17 6 4 8 -1. + <_> + 17 6 2 4 2. + <_> + 19 10 2 4 2. + 0 + <_> + + <_> + 17 6 3 3 -1. + <_> + 17 7 3 1 3. + 0 + <_> + + <_> + 17 6 5 3 -1. + <_> + 17 7 5 1 3. + 0 + <_> + + <_> + 17 7 1 3 -1. + <_> + 17 8 1 1 3. + 0 + <_> + + <_> + 17 7 1 6 -1. + <_> + 17 9 1 2 3. + 0 + <_> + + <_> + 17 7 2 6 -1. + <_> + 17 7 1 3 2. + <_> + 18 10 1 3 2. + 0 + <_> + + <_> + 17 7 2 3 -1. + <_> + 17 8 2 1 3. + 0 + <_> + + <_> + 17 8 6 4 -1. + <_> + 17 10 6 2 2. + 0 + <_> + + <_> + 17 9 3 1 -1. + <_> + 18 9 1 1 3. + 0 + <_> + + <_> + 17 9 2 6 -1. + <_> + 17 9 1 3 2. + <_> + 18 12 1 3 2. + 0 + <_> + + <_> + 17 9 4 2 -1. + <_> + 17 9 2 1 2. + <_> + 19 10 2 1 2. + 0 + <_> + + <_> + 17 9 3 2 -1. + <_> + 17 10 3 1 2. + 0 + <_> + + <_> + 17 9 5 3 -1. + <_> + 17 10 5 1 3. + 0 + <_> + + <_> + 17 9 7 2 -1. + <_> + 17 10 7 1 2. + 0 + <_> + + <_> + 17 10 1 3 -1. + <_> + 17 11 1 1 3. + 0 + <_> + + <_> + 17 10 2 2 -1. + <_> + 17 10 1 1 2. + <_> + 18 11 1 1 2. + 0 + <_> + + <_> + 17 10 2 4 -1. + <_> + 18 10 1 4 2. + 0 + <_> + + <_> + 17 10 3 4 -1. + <_> + 18 10 1 4 3. + 0 + <_> + + <_> + 17 10 4 2 -1. + <_> + 17 10 2 1 2. + <_> + 19 11 2 1 2. + 0 + <_> + + <_> + 17 11 1 3 -1. + <_> + 17 12 1 1 3. + 0 + <_> + + <_> + 17 11 3 2 -1. + <_> + 18 11 1 2 3. + 0 + <_> + + <_> + 17 11 3 3 -1. + <_> + 18 11 1 3 3. + 0 + <_> + + <_> + 17 11 2 2 -1. + <_> + 17 12 2 1 2. + 0 + <_> + + <_> + 17 11 4 2 -1. + <_> + 17 11 2 1 2. + <_> + 19 12 2 1 2. + 0 + <_> + + <_> + 17 12 3 2 -1. + <_> + 18 12 1 2 3. + 0 + <_> + + <_> + 17 13 4 5 -1. + <_> + 19 13 2 5 2. + 0 + <_> + + <_> + 17 14 2 3 -1. + <_> + 17 15 2 1 3. + 0 + <_> + + <_> + 17 14 4 2 -1. + <_> + 19 14 2 2 2. + 0 + <_> + + <_> + 17 15 4 2 -1. + <_> + 19 15 2 2 2. + 0 + <_> + + <_> + 17 16 4 3 -1. + <_> + 19 16 2 3 2. + 0 + <_> + + <_> + 17 17 3 7 -1. + <_> + 18 17 1 7 3. + 0 + <_> + + <_> + 17 19 3 4 -1. + <_> + 18 19 1 4 3. + 0 + <_> + + <_> + 17 21 3 3 -1. + <_> + 18 21 1 3 3. + 0 + <_> + + <_> + 18 0 4 1 -1. + <_> + 20 0 2 1 2. + 0 + <_> + + <_> + 18 0 6 1 -1. + <_> + 21 0 3 1 2. + 0 + <_> + + <_> + 18 0 6 4 -1. + <_> + 21 0 3 4 2. + 0 + <_> + + <_> + 18 1 1 12 -1. + <_> + 18 5 1 4 3. + 0 + <_> + + <_> + 18 2 3 3 -1. + <_> + 19 2 1 3 3. + 0 + <_> + + <_> + 18 3 3 2 -1. + <_> + 19 3 1 2 3. + 0 + <_> + + <_> + 18 3 1 9 -1. + <_> + 18 6 1 3 3. + 0 + <_> + + <_> + 18 3 3 4 -1. + <_> + 19 3 1 4 3. + 0 + <_> + + <_> + 18 4 3 2 -1. + <_> + 19 4 1 2 3. + 0 + <_> + + <_> + 18 4 3 4 -1. + <_> + 19 4 1 4 3. + 0 + <_> + + <_> + 18 5 6 15 -1. + <_> + 21 5 3 15 2. + 0 + <_> + + <_> + 18 6 2 3 -1. + <_> + 18 7 2 1 3. + 0 + <_> + + <_> + 18 6 3 3 -1. + <_> + 18 7 3 1 3. + 0 + <_> + + <_> + 18 6 4 3 -1. + <_> + 18 7 4 1 3. + 0 + <_> + + <_> + 18 7 3 1 -1. + <_> + 19 7 1 1 3. + 0 + <_> + + <_> + 18 7 2 2 -1. + <_> + 19 7 1 2 2. + 0 + <_> + + <_> + 18 7 3 2 -1. + <_> + 18 8 3 1 2. + 0 + <_> + + <_> + 18 8 1 3 -1. + <_> + 18 9 1 1 3. + 0 + <_> + + <_> + 18 8 2 2 -1. + <_> + 18 8 1 1 2. + <_> + 19 9 1 1 2. + 0 + <_> + + <_> + 18 8 2 3 -1. + <_> + 18 9 2 1 3. + 0 + <_> + + <_> + 18 8 3 14 -1. + <_> + 18 15 3 7 2. + 0 + <_> + + <_> + 18 9 3 1 -1. + <_> + 19 9 1 1 3. + 0 + <_> + + <_> + 18 9 2 2 -1. + <_> + 18 9 1 1 2. + <_> + 19 10 1 1 2. + 0 + <_> + + <_> + 18 9 3 2 -1. + <_> + 19 9 1 2 3. + 0 + <_> + + <_> + 18 10 2 1 -1. + <_> + 19 10 1 1 2. + 0 + <_> + + <_> + 18 10 2 2 -1. + <_> + 18 10 1 1 2. + <_> + 19 11 1 1 2. + 0 + <_> + + <_> + 18 10 2 2 -1. + <_> + 18 11 2 1 2. + 0 + <_> + + <_> + 18 10 6 4 -1. + <_> + 21 10 3 4 2. + 0 + <_> + + <_> + 18 10 6 5 -1. + <_> + 21 10 3 5 2. + 0 + <_> + + <_> + 18 11 3 2 -1. + <_> + 19 11 1 2 3. + 0 + <_> + + <_> + 18 11 3 6 -1. + <_> + 19 11 1 6 3. + 0 + <_> + + <_> + 18 11 3 9 -1. + <_> + 19 11 1 9 3. + 0 + <_> + + <_> + 18 11 3 8 -1. + <_> + 18 15 3 4 2. + 0 + <_> + + <_> + 18 12 3 4 -1. + <_> + 19 12 1 4 3. + 0 + <_> + + <_> + 18 12 2 6 -1. + <_> + 18 15 2 3 2. + 0 + <_> + + <_> + 18 12 6 2 -1. + <_> + 21 12 3 2 2. + 0 + <_> + + <_> + 18 12 3 12 -1. + <_> + 18 16 3 4 3. + 0 + <_> + + <_> + 18 13 3 1 -1. + <_> + 19 13 1 1 3. + 0 + <_> + + <_> + 18 14 6 6 -1. + <_> + 21 14 3 6 2. + 0 + <_> + + <_> + 18 20 3 4 -1. + <_> + 19 20 1 4 3. + 0 + <_> + + <_> + 18 20 6 3 -1. + <_> + 18 21 6 1 3. + 0 + <_> + + <_> + 19 2 2 4 -1. + <_> + 19 2 1 2 2. + <_> + 20 4 1 2 2. + 0 + <_> + + <_> + 19 4 1 4 -1. + <_> + 19 6 1 2 2. + 0 + <_> + + <_> + 19 4 1 20 -1. + <_> + 19 14 1 10 2. + 0 + <_> + + <_> + 19 4 2 4 -1. + <_> + 19 6 2 2 2. + 0 + <_> + + <_> + 19 4 4 3 -1. + <_> + 19 5 4 1 3. + 0 + <_> + + <_> + 19 5 2 2 -1. + <_> + 19 5 1 1 2. + <_> + 20 6 1 1 2. + 0 + <_> + + <_> + 19 6 1 3 -1. + <_> + 19 7 1 1 3. + 0 + <_> + + <_> + 19 6 2 3 -1. + <_> + 19 7 2 1 3. + 0 + <_> + + <_> + 19 6 5 3 -1. + <_> + 19 7 5 1 3. + 0 + <_> + + <_> + 19 6 5 9 -1. + <_> + 19 9 5 3 3. + 0 + <_> + + <_> + 19 7 1 12 -1. + <_> + 19 11 1 4 3. + 0 + <_> + + <_> + 19 7 2 3 -1. + <_> + 19 8 2 1 3. + 0 + <_> + + <_> + 19 8 1 3 -1. + <_> + 19 9 1 1 3. + 0 + <_> + + <_> + 19 8 2 3 -1. + <_> + 20 8 1 3 2. + 0 + <_> + + <_> + 19 9 2 1 -1. + <_> + 20 9 1 1 2. + 0 + <_> + + <_> + 19 9 3 2 -1. + <_> + 20 9 1 2 3. + 0 + <_> + + <_> + 19 10 2 2 -1. + <_> + 19 10 1 1 2. + <_> + 20 11 1 1 2. + 0 + <_> + + <_> + 19 10 4 1 -1. + <_> + 21 10 2 1 2. + 0 + <_> + + <_> + 19 11 3 7 -1. + <_> + 20 11 1 7 3. + 0 + <_> + + <_> + 19 11 3 10 -1. + <_> + 20 11 1 10 3. + 0 + <_> + + <_> + 19 11 3 11 -1. + <_> + 20 11 1 11 3. + 0 + <_> + + <_> + 19 11 3 13 -1. + <_> + 20 11 1 13 3. + 0 + <_> + + <_> + 19 14 3 10 -1. + <_> + 20 14 1 10 3. + 0 + <_> + + <_> + 19 15 3 2 -1. + <_> + 19 16 3 1 2. + 0 + <_> + + <_> + 19 18 3 3 -1. + <_> + 20 18 1 3 3. + 0 + <_> + + <_> + 19 18 3 6 -1. + <_> + 20 18 1 6 3. + 0 + <_> + + <_> + 19 20 5 3 -1. + <_> + 19 21 5 1 3. + 0 + <_> + + <_> + 20 4 1 3 -1. + <_> + 20 5 1 1 3. + 0 + <_> + + <_> + 20 5 1 2 -1. + <_> + 20 6 1 1 2. + 0 + <_> + + <_> + 20 5 1 3 -1. + <_> + 20 6 1 1 3. + 0 + <_> + + <_> + 20 5 2 3 -1. + <_> + 20 6 2 1 3. + 0 + <_> + + <_> + 20 5 3 9 -1. + <_> + 20 8 3 3 3. + 0 + <_> + + <_> + 20 6 4 9 -1. + <_> + 20 9 4 3 3. + 0 + <_> + + <_> + 20 8 4 16 -1. + <_> + 22 8 2 16 2. + 0 + <_> + + <_> + 20 9 4 6 -1. + <_> + 20 11 4 2 3. + 0 + <_> + + <_> + 20 10 3 10 -1. + <_> + 21 10 1 10 3. + 0 + <_> + + <_> + 20 10 3 9 -1. + <_> + 20 13 3 3 3. + 0 + <_> + + <_> + 20 16 3 3 -1. + <_> + 21 16 1 3 3. + 0 + <_> + + <_> + 20 17 3 7 -1. + <_> + 21 17 1 7 3. + 0 + <_> + + <_> + 20 17 4 6 -1. + <_> + 20 19 4 2 3. + 0 + <_> + + <_> + 20 18 3 3 -1. + <_> + 21 18 1 3 3. + 0 + <_> + + <_> + 21 1 2 4 -1. + <_> + 21 3 2 2 2. + 0 + <_> + + <_> + 21 5 1 3 -1. + <_> + 21 6 1 1 3. + 0 + <_> + + <_> + 21 6 3 9 -1. + <_> + 21 9 3 3 3. + 0 + <_> + + <_> + 21 10 3 3 -1. + <_> + 21 11 3 1 3. + 0 + <_> + + <_> + 21 13 3 7 -1. + <_> + 22 13 1 7 3. + 0 + <_> + + <_> + 21 16 3 3 -1. + <_> + 22 16 1 3 3. + 0 + <_> + + <_> + 21 16 3 7 -1. + <_> + 22 16 1 7 3. + 0 + <_> + + <_> + 21 17 3 5 -1. + <_> + 22 17 1 5 3. + 0 + <_> + + <_> + 21 17 3 6 -1. + <_> + 21 19 3 2 3. + 0 + <_> + + <_> + 21 17 3 6 -1. + <_> + 21 20 3 3 2. + 0 + <_> + + <_> + 21 19 3 3 -1. + <_> + 22 19 1 3 3. + 0 + <_> + + <_> + 21 19 3 5 -1. + <_> + 22 19 1 5 3. + 0 + <_> + + <_> + 22 10 2 3 -1. + <_> + 22 11 2 1 3. + 0 + <_> + + <_> + 22 11 2 3 -1. + <_> + 22 12 2 1 3. + 0 + <_> + + <_> + 23 7 1 3 -1. + <_> + 23 8 1 1 3. + 0 + <_> + + <_> + 23 9 1 3 -1. + <_> + 23 10 1 1 3. + 0 + <_> + + <_> + 23 10 1 3 -1. + <_> + 23 11 1 1 3. + 0 + <_> + + <_> + 23 14 1 9 -1. + <_> + 23 17 1 3 3. + 0 + <_> + + <_> + 23 15 1 9 -1. + <_> + 23 18 1 3 3. + 0 + <_> + + <_> + 23 18 1 6 -1. + <_> + 23 20 1 2 3. + 0 + diff --git a/venv/lib/python3.11/site-packages/cv2/data/haarcascade_frontalcatface_extended.xml b/venv/lib/python3.11/site-packages/cv2/data/haarcascade_frontalcatface_extended.xml new file mode 100644 index 0000000000000000000000000000000000000000..892d5cb1a14d8dbb41c03e1cf207268ffa80b834 --- /dev/null +++ b/venv/lib/python3.11/site-packages/cv2/data/haarcascade_frontalcatface_extended.xml @@ -0,0 +1,13394 @@ + + + + + BOOST + HAAR + 24 + 24 + + GAB + 9.9500000476837158e-01 + 5.0000000000000000e-01 + 9.4999999999999996e-01 + 1 + 100 + + 0 + 1 + ALL + 20 + + + <_> + 13 + -1.4294912815093994e+00 + + <_> + + 0 -1 394 -1.5126220881938934e-02 + + 7.5887596607208252e-01 -3.4230688214302063e-01 + <_> + + 0 -1 737 3.9337221533060074e-03 + + -3.3288389444351196e-01 5.2361363172531128e-01 + <_> + + 0 -1 757 -1.5044892206788063e-02 + + 5.5565774440765381e-01 -2.2505992650985718e-01 + <_> + + 0 -1 450 -1.5777055174112320e-02 + + 7.2692525386810303e-01 -1.6206762194633484e-01 + <_> + + 0 -1 443 3.0781796202063560e-02 + + -1.8173390626907349e-01 7.3483395576477051e-01 + <_> + + 0 -1 220 1.8483418971300125e-02 + + -1.8690711259841919e-01 5.0116515159606934e-01 + <_> + + 0 -1 681 1.3474167324602604e-02 + + -1.5681208670139313e-01 5.8611637353897095e-01 + <_> + + 0 -1 554 5.3415738046169281e-02 + + -1.6418528556823730e-01 6.8128466606140137e-01 + <_> + + 0 -1 741 5.4243900813162327e-03 + + -1.8231739103794098e-01 4.6716138720512390e-01 + <_> + + 0 -1 336 1.7689792439341545e-02 + + -1.3713267445564270e-01 6.0434049367904663e-01 + <_> + + 0 -1 187 2.2149257711134851e-04 + + -2.7738124132156372e-01 2.8165665268898010e-01 + <_> + + 0 -1 288 -2.8517641127109528e-02 + + 5.5257320404052734e-01 -1.2970162928104401e-01 + <_> + + 0 -1 369 4.3854981660842896e-02 + + -1.9231440126895905e-01 4.2093500494956970e-01 + + <_> + 27 + -1.5509251356124878e+00 + + <_> + + 0 -1 337 2.4014184251427650e-02 + + -2.1038578450679779e-01 7.3892170190811157e-01 + <_> + + 0 -1 475 -5.5319909006357193e-03 + + 4.4344031810760498e-01 -2.8907662630081177e-01 + <_> + + 0 -1 4 2.7481060475111008e-02 + + -1.9128543138504028e-01 5.1661676168441772e-01 + <_> + + 0 -1 457 -1.1628001928329468e-02 + + 5.1978123188018799e-01 -1.7051684856414795e-01 + <_> + + 0 -1 393 1.5159824397414923e-03 + + -2.9784303903579712e-01 3.9050224423408508e-01 + <_> + + 0 -1 901 1.3662670738995075e-02 + + -1.4316783845424652e-01 4.4111710786819458e-01 + <_> + + 0 -1 780 -3.6911026109009981e-03 + + 3.2185173034667969e-01 -2.3853960633277893e-01 + <_> + + 0 -1 769 3.3176485449075699e-02 + + -7.4603199958801270e-02 7.5860917568206787e-01 + <_> + + 0 -1 317 -5.7046953588724136e-03 + + -7.5004047155380249e-01 1.0240622609853745e-01 + <_> + + 0 -1 73 7.9660946503281593e-03 + + 9.8882928490638733e-02 -7.3491615056991577e-01 + <_> + + 0 -1 739 3.0965393409132957e-02 + + -1.6046196222305298e-01 4.5570060610771179e-01 + <_> + + 0 -1 612 -4.0078125894069672e-03 + + -7.1539020538330078e-01 6.9276176393032074e-02 + <_> + + 0 -1 647 -8.2283765077590942e-03 + + 3.2576236128807068e-01 -1.8509653210639954e-01 + <_> + + 0 -1 170 3.4253271296620369e-03 + + 1.0964145511388779e-01 -5.8205413818359375e-01 + <_> + + 0 -1 434 9.0980646200478077e-04 + + -2.0425215363502502e-01 2.7488732337951660e-01 + <_> + + 0 -1 427 5.9772443026304245e-02 + + -1.3786207139492035e-01 4.0762668848037720e-01 + <_> + + 0 -1 209 -4.1712004691362381e-02 + + 4.9409377574920654e-01 -1.1713714897632599e-01 + <_> + + 0 -1 248 -3.0311278998851776e-02 + + 5.1191121339797974e-01 -1.0507214814424515e-01 + <_> + + 0 -1 339 -6.5785087645053864e-03 + + -7.6472043991088867e-01 8.0923363566398621e-02 + <_> + + 0 -1 37 1.1685060337185860e-02 + + 5.0379037857055664e-02 -7.9744982719421387e-01 + <_> + + 0 -1 423 6.5714016556739807e-02 + + -1.1398456245660782e-01 4.9489131569862366e-01 + <_> + + 0 -1 755 9.7422497346997261e-03 + + -1.4347794651985168e-01 3.6561754345893860e-01 + <_> + + 0 -1 870 4.9857441335916519e-03 + + 7.9834438860416412e-02 -7.2391557693481445e-01 + <_> + + 0 -1 735 -1.1547822505235672e-03 + + 4.1867440938949585e-01 -1.2869183719158173e-01 + <_> + + 0 -1 519 -4.4658007100224495e-03 + + -6.7933702468872070e-01 8.2867160439491272e-02 + <_> + + 0 -1 862 3.6325352266430855e-03 + + 6.6807270050048828e-02 -6.0182958841323853e-01 + <_> + + 0 -1 127 7.4123376980423927e-03 + + -1.5108695626258850e-01 3.2046884298324585e-01 + + <_> + 26 + -1.3890913724899292e+00 + + <_> + + 0 -1 619 1.7836617305874825e-02 + + -2.1508488059043884e-01 6.6796410083770752e-01 + <_> + + 0 -1 457 -8.5781915113329887e-03 + + 5.0962758064270020e-01 -2.2129471600055695e-01 + <_> + + 0 -1 165 3.1586211174726486e-02 + + -2.1485456824302673e-01 4.2591696977615356e-01 + <_> + + 0 -1 518 2.5690056383609772e-02 + + -1.5910078585147858e-01 6.7842948436737061e-01 + <_> + + 0 -1 768 -2.2857591509819031e-02 + + 5.7221925258636475e-01 -1.3710150122642517e-01 + <_> + + 0 -1 741 4.7176675871014595e-03 + + -2.3617559671401978e-01 3.9870622754096985e-01 + <_> + + 0 -1 615 -2.3281413596123457e-03 + + -7.0095318555831909e-01 1.3746888935565948e-01 + <_> + + 0 -1 139 1.0266102617606521e-03 + + -2.6873087882995605e-01 2.6495781540870667e-01 + <_> + + 0 -1 2 -7.6808528974652290e-03 + + 3.6925876140594482e-01 -2.1339643001556396e-01 + <_> + + 0 -1 454 6.4357556402683258e-02 + + -1.1779088526964188e-01 5.5030888319015503e-01 + <_> + + 0 -1 296 8.9486092329025269e-02 + + -1.4395782351493835e-01 5.3468054533004761e-01 + <_> + + 0 -1 253 -5.6334878318011761e-03 + + -6.5704786777496338e-01 1.3971389830112457e-01 + <_> + + 0 -1 834 -8.0200601369142532e-03 + + 3.6956611275672913e-01 -1.8284171819686890e-01 + <_> + + 0 -1 732 8.3984360098838806e-03 + + -1.3507588207721710e-01 4.4903004169464111e-01 + <_> + + 0 -1 246 -5.7764705270528793e-03 + + -6.5459579229354858e-01 1.1050829291343689e-01 + <_> + + 0 -1 630 3.9896301925182343e-02 + + -1.5822732448577881e-01 3.6069712042808533e-01 + <_> + + 0 -1 11 -6.8376958370208740e-02 + + 6.2642019987106323e-01 -8.3647280931472778e-02 + <_> + + 0 -1 696 -2.7075063437223434e-02 + + 4.0549215674400330e-01 -1.4247153699398041e-01 + <_> + + 0 -1 933 6.8107023835182190e-03 + + 7.7754773199558258e-02 -6.4665120840072632e-01 + <_> + + 0 -1 131 3.6659452598541975e-03 + + 7.9356946051120758e-02 -5.4679936170578003e-01 + <_> + + 0 -1 182 2.3308303207159042e-02 + + -1.4383231103420258e-01 3.4179633855819702e-01 + <_> + + 0 -1 389 -3.2547116279602051e-02 + + 3.6395668983459473e-01 -1.2551946938037872e-01 + <_> + + 0 -1 471 1.6501296311616898e-02 + + -1.0674661397933960e-01 4.2714300751686096e-01 + <_> + + 0 -1 616 -2.9296698048710823e-03 + + -5.7476091384887695e-01 8.5429534316062927e-02 + <_> + + 0 -1 828 1.3306898763403296e-03 + + -1.2303277105093002e-01 3.7224721908569336e-01 + <_> + + 0 -1 18 9.8933260887861252e-03 + + 6.7675270140171051e-02 -6.7935848236083984e-01 + + <_> + 31 + -1.4026626348495483e+00 + + <_> + + 0 -1 876 -1.4927964657545090e-02 + + 6.3834953308105469e-01 -1.8698258697986603e-01 + <_> + + 0 -1 467 -1.1759694665670395e-02 + + 5.0763273239135742e-01 -2.0944127440452576e-01 + <_> + + 0 -1 775 1.1289508081972599e-02 + + -1.4533838629722595e-01 5.3039866685867310e-01 + <_> + + 0 -1 335 1.3691024854779243e-02 + + -1.3143934309482574e-01 5.9853446483612061e-01 + <_> + + 0 -1 399 -8.6051290854811668e-03 + + 3.1604155898094177e-01 -2.2497664391994476e-01 + <_> + + 0 -1 898 1.1611104011535645e-02 + + -1.7180299758911133e-01 3.6340636014938354e-01 + <_> + + 0 -1 919 5.4911419283598661e-04 + + -2.0625770092010498e-01 3.0243906378746033e-01 + <_> + + 0 -1 448 -1.1997690424323082e-02 + + 6.7541980743408203e-01 -1.0784135758876801e-01 + <_> + + 0 -1 610 -2.0809918642044067e-03 + + -5.7404327392578125e-01 1.1769672483205795e-01 + <_> + + 0 -1 277 6.8656861782073975e-02 + + -1.4633083343505859e-01 4.1269731521606445e-01 + <_> + + 0 -1 215 -4.5645810663700104e-02 + + 5.4341620206832886e-01 -1.1726979166269302e-01 + <_> + + 0 -1 890 -1.8052812665700912e-02 + + 3.6646232008934021e-01 -1.3256482779979706e-01 + <_> + + 0 -1 897 9.2329997569322586e-03 + + 9.1808989644050598e-02 -6.4987671375274658e-01 + <_> + + 0 -1 142 -2.9587259050458670e-03 + + 2.4805040657520294e-01 -2.0830279588699341e-01 + <_> + + 0 -1 151 -7.1467030793428421e-03 + + -6.6564339399337769e-01 8.8065519928932190e-02 + <_> + + 0 -1 756 -5.7738199830055237e-03 + + 2.4252247810363770e-01 -2.1394193172454834e-01 + <_> + + 0 -1 207 6.4636822789907455e-03 + + 8.4821723401546478e-02 -6.4125812053680420e-01 + <_> + + 0 -1 527 -2.8782974928617477e-02 + + 3.5874211788177490e-01 -1.4370997250080109e-01 + <_> + + 0 -1 715 -1.8174832221120596e-03 + + 3.7480926513671875e-01 -1.2761794030666351e-01 + <_> + + 0 -1 590 -1.9234847277402878e-03 + + -5.6678783893585205e-01 9.0299606323242188e-02 + <_> + + 0 -1 588 2.8048637323081493e-03 + + 8.5870750248432159e-02 -5.8541411161422729e-01 + <_> + + 0 -1 178 7.0693701505661011e-02 + + -1.2318307906389236e-01 3.9827430248260498e-01 + <_> + + 0 -1 554 6.2659628689289093e-02 + + -9.1229990124702454e-02 5.0639665126800537e-01 + <_> + + 0 -1 321 -3.7420655135065317e-03 + + 3.5059738159179688e-01 -1.2444343417882919e-01 + <_> + + 0 -1 273 6.8388320505619049e-03 + + -1.0419095307588577e-01 4.5085826516151428e-01 + <_> + + 0 -1 76 7.1193519979715347e-03 + + 9.1205865144729614e-02 -5.2279585599899292e-01 + <_> + + 0 -1 791 -9.8787562455981970e-04 + + 2.8105542063713074e-01 -1.5169830620288849e-01 + <_> + + 0 -1 639 1.8099821172654629e-03 + + 6.5428622066974640e-02 -6.9196063280105591e-01 + <_> + + 0 -1 726 -6.0212425887584686e-03 + + -6.2636482715606689e-01 5.1543414592742920e-02 + <_> + + 0 -1 818 5.1644006744027138e-03 + + 6.3040286302566528e-02 -6.3455927371978760e-01 + <_> + + 0 -1 205 9.4506526365876198e-03 + + -1.3443979620933533e-01 3.1506177783012390e-01 + + <_> + 38 + -1.4621645212173462e+00 + + <_> + + 0 -1 383 -1.5925668179988861e-02 + + 6.2127149105072021e-01 -1.8520653247833252e-01 + <_> + + 0 -1 648 1.0260052047669888e-02 + + -2.4736632406711578e-01 4.2336893081665039e-01 + <_> + + 0 -1 3 5.7025998830795288e-03 + + -2.3670144379138947e-01 3.3228391408920288e-01 + <_> + + 0 -1 264 9.3164276331663132e-03 + + -1.7946784198284149e-01 4.6311038732528687e-01 + <_> + + 0 -1 830 -5.0438079051673412e-03 + + 4.4613519310951233e-01 -1.6072992980480194e-01 + <_> + + 0 -1 793 2.8381291776895523e-03 + + -1.8486896157264709e-01 3.5892590880393982e-01 + <_> + + 0 -1 455 6.7377656698226929e-02 + + -1.7760114371776581e-01 3.9539518952369690e-01 + <_> + + 0 -1 44 -8.7916189804673195e-03 + + -5.9182339906692505e-01 1.1145308613777161e-01 + <_> + + 0 -1 874 1.3353329151868820e-02 + + -1.1993711441755295e-01 4.8862439393997192e-01 + <_> + + 0 -1 324 -1.0008489713072777e-02 + + 4.1768664121627808e-01 -1.2453128397464752e-01 + <_> + + 0 -1 795 -1.4410717412829399e-03 + + 3.4100320935249329e-01 -1.6849595308303833e-01 + <_> + + 0 -1 123 1.1647527664899826e-01 + + -9.7596585750579834e-02 4.2289251089096069e-01 + <_> + + 0 -1 301 -9.8112244158983231e-03 + + 2.6155915856361389e-01 -2.0234876871109009e-01 + <_> + + 0 -1 425 6.3042029738426208e-02 + + -1.2662252783775330e-01 3.6811619997024536e-01 + <_> + + 0 -1 553 -1.7675247043371201e-02 + + 4.1690909862518311e-01 -1.1987055838108063e-01 + <_> + + 0 -1 105 4.0485346689820290e-03 + + 7.0249855518341064e-02 -7.3556905984878540e-01 + <_> + + 0 -1 675 8.2748252898454666e-03 + + -1.6168670356273651e-01 2.8835350275039673e-01 + <_> + + 0 -1 313 -5.0843162462115288e-03 + + -5.8562570810317993e-01 8.9675068855285645e-02 + <_> + + 0 -1 249 6.0826279222965240e-03 + + 4.7766357660293579e-02 -6.8612217903137207e-01 + <_> + + 0 -1 48 8.5826087743043900e-03 + + -1.6963686048984528e-01 2.6875671744346619e-01 + <_> + + 0 -1 38 2.4908576160669327e-02 + + 8.5034154355525970e-02 -5.7059210538864136e-01 + <_> + + 0 -1 879 2.0448346622288227e-03 + + -1.8642950057983398e-01 2.3178242146968842e-01 + <_> + + 0 -1 16 2.4130716919898987e-02 + + -1.2823060154914856e-01 3.4394741058349609e-01 + <_> + + 0 -1 154 -4.7494415193796158e-03 + + -7.1827727556228638e-01 6.8053275346755981e-02 + <_> + + 0 -1 199 -1.7751917243003845e-02 + + -5.5972510576248169e-01 5.2141726016998291e-02 + <_> + + 0 -1 339 5.5826390162110329e-03 + + 4.8266090452671051e-02 -5.9813541173934937e-01 + <_> + + 0 -1 387 1.4416726771742105e-03 + + -9.2707693576812744e-02 4.1495534777641296e-01 + <_> + + 0 -1 192 -2.1779362577944994e-03 + + 2.7112621068954468e-01 -1.5071788430213928e-01 + <_> + + 0 -1 607 3.0656920280307531e-03 + + 6.0340058058500290e-02 -6.5465551614761353e-01 + <_> + + 0 -1 469 1.9947460293769836e-01 + + -9.5098674297332764e-02 3.9016976952552795e-01 + <_> + + 0 -1 857 -2.0255323499441147e-02 + + 4.3044877052307129e-01 -8.8302992284297943e-02 + <_> + + 0 -1 446 5.4685659706592560e-03 + + -8.7241113185882568e-02 3.9513549208641052e-01 + <_> + + 0 -1 463 -1.0883151553571224e-03 + + 2.9802373051643372e-01 -1.3696449995040894e-01 + <_> + + 0 -1 655 -5.0911568105220795e-03 + + -6.2439930438995361e-01 6.2544539570808411e-02 + <_> + + 0 -1 221 -5.2395770326256752e-03 + + -6.9036418199539185e-01 4.5142117887735367e-02 + <_> + + 0 -1 955 4.0486194193363190e-02 + + -7.5753845274448395e-02 5.2426725625991821e-01 + <_> + + 0 -1 300 4.1610337793827057e-03 + + 6.6071115434169769e-02 -5.8079534769058228e-01 + <_> + + 0 -1 272 -6.4253048039972782e-03 + + 3.0481830239295959e-01 -1.1435022950172424e-01 + + <_> + 44 + -1.4235107898712158e+00 + + <_> + + 0 -1 716 -2.2738082334399223e-03 + + 5.9519726037979126e-01 -1.6779936850070953e-01 + <_> + + 0 -1 457 -1.2204157188534737e-02 + + 4.6985983848571777e-01 -1.7339397966861725e-01 + <_> + + 0 -1 754 3.1242824625223875e-03 + + -2.2488421201705933e-01 3.4029743075370789e-01 + <_> + + 0 -1 777 -3.9868438616394997e-03 + + 3.8314539194107056e-01 -1.8952924013137817e-01 + <_> + + 0 -1 538 -5.4737669415771961e-03 + + 2.4583901464939117e-01 -2.3114782571792603e-01 + <_> + + 0 -1 453 1.5154287219047546e-02 + + -1.0675037652254105e-01 5.8347207307815552e-01 + <_> + + 0 -1 397 -1.4294658321887255e-03 + + 3.8292840123176575e-01 -1.2911921739578247e-01 + <_> + + 0 -1 750 -7.4405185878276825e-03 + + 2.8356546163558960e-01 -1.7810684442520142e-01 + <_> + + 0 -1 786 -4.0357224643230438e-03 + + 2.6303085684776306e-01 -1.6862161457538605e-01 + <_> + + 0 -1 618 -5.8342106640338898e-03 + + 3.2040205597877502e-01 -1.4103877544403076e-01 + <_> + + 0 -1 161 1.7279960215091705e-02 + + -1.7433850467205048e-01 2.7985212206840515e-01 + <_> + + 0 -1 292 2.2125110030174255e-02 + + -1.1797516793012619e-01 4.0373948216438293e-01 + <_> + + 0 -1 958 -4.4059187173843384e-02 + + 5.2820503711700439e-01 -7.0916719734668732e-02 + <_> + + 0 -1 194 -3.8316637277603149e-02 + + 3.8833045959472656e-01 -1.0811555385589600e-01 + <_> + + 0 -1 178 4.5704744756221771e-02 + + -1.7566929757595062e-01 3.4665411710739136e-01 + <_> + + 0 -1 434 1.1523386929184198e-03 + + -1.7257389426231384e-01 2.5989890098571777e-01 + <_> + + 0 -1 121 -1.0491746477782726e-02 + + -6.1285555362701416e-01 7.1230083703994751e-02 + <_> + + 0 -1 395 -4.5014433562755585e-03 + + -5.7712453603744507e-01 5.8887075632810593e-02 + <_> + + 0 -1 950 -3.7281280383467674e-03 + + -6.7359894514083862e-01 5.2957162261009216e-02 + <_> + + 0 -1 331 3.4461893141269684e-02 + + -1.0375578701496124e-01 3.7974634766578674e-01 + <_> + + 0 -1 462 -1.3906960375607014e-03 + + 3.9171192049980164e-01 -1.0048408061265945e-01 + <_> + + 0 -1 85 1.6332454979419708e-02 + + 8.6256101727485657e-02 -4.5887523889541626e-01 + <_> + + 0 -1 356 -6.0738036409020424e-03 + + -5.2265202999114990e-01 6.5308839082717896e-02 + <_> + + 0 -1 486 -3.3630726393312216e-03 + + -5.6505429744720459e-01 5.5844355374574661e-02 + <_> + + 0 -1 418 -1.5329496003687382e-02 + + 3.4475114941596985e-01 -1.0086353123188019e-01 + <_> + + 0 -1 587 -9.0496204793453217e-03 + + 2.9553902149200439e-01 -1.1406829208135605e-01 + <_> + + 0 -1 794 -3.1109917908906937e-03 + + -4.4897687435150146e-01 7.3615357279777527e-02 + <_> + + 0 -1 939 3.3499556593596935e-03 + + 5.4718658328056335e-02 -5.4810231924057007e-01 + <_> + + 0 -1 188 1.8374501960352063e-03 + + -1.3522666692733765e-01 2.4655479192733765e-01 + <_> + + 0 -1 908 2.6134990621358156e-03 + + 6.6369861364364624e-02 -4.7342041134834290e-01 + <_> + + 0 -1 65 -7.4155852198600769e-03 + + 2.0866124331951141e-01 -1.5775154531002045e-01 + <_> + + 0 -1 515 3.9352793246507645e-03 + + 5.1660846918821335e-02 -6.2589824199676514e-01 + <_> + + 0 -1 735 -1.0450070258229971e-03 + + 3.3525371551513672e-01 -1.0084854811429977e-01 + <_> + + 0 -1 784 1.2639444321393967e-03 + + -1.2103077769279480e-01 2.7691018581390381e-01 + <_> + + 0 -1 479 7.7577251940965652e-03 + + 4.6813234686851501e-02 -7.3385792970657349e-01 + <_> + + 0 -1 18 -1.0632604360580444e-02 + + -7.1024382114410400e-01 3.3777639269828796e-02 + <_> + + 0 -1 183 1.8631946295499802e-02 + + -1.4613701403141022e-01 2.1491082012653351e-01 + <_> + + 0 -1 608 4.9128942191600800e-03 + + 5.3445268422365189e-02 -6.3314527273178101e-01 + <_> + + 0 -1 473 -9.8230186849832535e-03 + + 2.6917773485183716e-01 -1.1376978456974030e-01 + <_> + + 0 -1 910 -3.0754944309592247e-03 + + -5.0787961483001709e-01 6.1582125723361969e-02 + <_> + + 0 -1 659 -6.7374799400568008e-03 + + 2.3871047794818878e-01 -1.2552142143249512e-01 + <_> + + 0 -1 507 -1.1759715154767036e-02 + + 3.3646693825721741e-01 -9.4460532069206238e-02 + <_> + + 0 -1 318 -4.1377237066626549e-03 + + -5.0522220134735107e-01 6.2668189406394958e-02 + <_> + + 0 -1 320 1.7267453949898481e-03 + + -8.0607026815414429e-02 3.8304185867309570e-01 + + <_> + 47 + -1.4313566684722900e+00 + + <_> + + 0 -1 882 -1.1920252814888954e-02 + + 5.6617152690887451e-01 -1.5811842679977417e-01 + <_> + + 0 -1 568 -4.3085627257823944e-03 + + 4.4759327173233032e-01 -1.6846470534801483e-01 + <_> + + 0 -1 883 1.1177745182067156e-03 + + -1.5351393818855286e-01 4.3508940935134888e-01 + <_> + + 0 -1 798 3.5418532788753510e-02 + + -1.2973460555076599e-01 3.6943939328193665e-01 + <_> + + 0 -1 393 2.2405586205422878e-03 + + -1.8800468742847443e-01 3.2498928904533386e-01 + <_> + + 0 -1 265 -1.7982896417379379e-02 + + 4.5607218146324158e-01 -1.0459473729133606e-01 + <_> + + 0 -1 152 -4.9088716506958008e-02 + + 3.4279289841651917e-01 -1.5114119648933411e-01 + <_> + + 0 -1 275 7.1780886501073837e-03 + + 6.3825756311416626e-02 -6.2449872493743896e-01 + <_> + + 0 -1 849 3.9123920723795891e-03 + + 7.1502417325973511e-02 -6.3956946134567261e-01 + <_> + + 0 -1 689 -4.1980943642556667e-03 + + 2.1998657286167145e-01 -1.9890366494655609e-01 + <_> + + 0 -1 660 -4.5476644299924374e-03 + + 2.1866278350353241e-01 -1.9852560758590698e-01 + <_> + + 0 -1 944 -4.4158436357975006e-03 + + 2.3959043622016907e-01 -1.7090958356857300e-01 + <_> + + 0 -1 281 -4.7058244235813618e-03 + + -5.1537507772445679e-01 9.0310461819171906e-02 + <_> + + 0 -1 116 -8.7488889694213867e-03 + + 2.2937677800655365e-01 -1.8315380811691284e-01 + <_> + + 0 -1 645 -3.1655649654567242e-03 + + -7.3091191053390503e-01 6.5193220973014832e-02 + <_> + + 0 -1 267 6.4696683548390865e-03 + + -1.1077737808227539e-01 3.7207809090614319e-01 + <_> + + 0 -1 615 2.2985613904893398e-03 + + 7.7800542116165161e-02 -5.1104581356048584e-01 + <_> + + 0 -1 359 4.5809363946318626e-03 + + 5.7778771966695786e-02 -5.7898092269897461e-01 + <_> + + 0 -1 188 1.1279166210442781e-03 + + -1.7981146275997162e-01 1.9939005374908447e-01 + <_> + + 0 -1 347 -1.2820301577448845e-02 + + 5.1867282390594482e-01 -6.9989629089832306e-02 + <_> + + 0 -1 810 4.4866472482681274e-02 + + -1.4253044128417969e-01 3.0062338709831238e-01 + <_> + + 0 -1 412 -3.5413210280239582e-03 + + -5.7618641853332520e-01 6.0328345745801926e-02 + <_> + + 0 -1 362 -7.4678594246506691e-03 + + -5.0187259912490845e-01 6.1294022947549820e-02 + <_> + + 0 -1 678 1.8058011308312416e-02 + + 5.3603217005729675e-02 -5.8919399976730347e-01 + <_> + + 0 -1 935 -6.8098572082817554e-03 + + -5.4100829362869263e-01 5.5898215621709824e-02 + <_> + + 0 -1 307 3.6491458304226398e-03 + + 4.7378763556480408e-02 -5.9323132038116455e-01 + <_> + + 0 -1 284 1.4524955768138170e-03 + + -8.8994570076465607e-02 3.8729071617126465e-01 + <_> + + 0 -1 219 -6.2408884987235069e-03 + + -6.6442847251892090e-01 5.1082015037536621e-02 + <_> + + 0 -1 744 -9.9360430613160133e-04 + + 3.2972389459609985e-01 -1.0494423657655716e-01 + <_> + + 0 -1 285 3.9777760393917561e-03 + + 5.4083213210105896e-02 -6.2114214897155762e-01 + <_> + + 0 -1 380 -1.4884659089148045e-02 + + 2.4066454172134399e-01 -1.2317410856485367e-01 + <_> + + 0 -1 436 3.3154981210827827e-03 + + -1.1744727939367294e-01 2.9429042339324951e-01 + <_> + + 0 -1 976 -4.7508114948868752e-03 + + -4.5763325691223145e-01 6.7066885530948639e-02 + <_> + + 0 -1 779 -1.1973761022090912e-02 + + 2.5750914216041565e-01 -1.1354148387908936e-01 + <_> + + 0 -1 740 4.9072699621319771e-03 + + -1.1266437917947769e-01 3.0022394657135010e-01 + <_> + + 0 -1 56 6.5630510449409485e-02 + + -1.0180503129959106e-01 3.0517497658729553e-01 + <_> + + 0 -1 354 -2.3393325507640839e-02 + + 3.2443770766258240e-01 -9.5363102853298187e-02 + <_> + + 0 -1 834 -3.8902116939425468e-03 + + 2.0148487389087677e-01 -1.4944279193878174e-01 + <_> + + 0 -1 185 -2.5926973670721054e-02 + + -4.4917497038841248e-01 6.9752328097820282e-02 + <_> + + 0 -1 173 -7.1825529448688030e-03 + + -5.6838059425354004e-01 4.9584377557039261e-02 + <_> + + 0 -1 548 -9.9399685859680176e-03 + + 3.0747908353805542e-01 -1.1064232140779495e-01 + <_> + + 0 -1 978 -3.6286246031522751e-03 + + -6.0276371240615845e-01 5.2405584603548050e-02 + <_> + + 0 -1 820 1.5756220091134310e-03 + + -1.1615782976150513e-01 2.6717522740364075e-01 + <_> + + 0 -1 426 3.5662509500980377e-02 + + -1.0885569453239441e-01 2.9044550657272339e-01 + <_> + + 0 -1 554 5.3282946348190308e-02 + + -8.1855505704879761e-02 4.0298762917518616e-01 + <_> + + 0 -1 988 3.3901704009622335e-03 + + 5.5047694593667984e-02 -5.4021596908569336e-01 + <_> + + 0 -1 384 1.3204356655478477e-03 + + -9.4643965363502502e-02 3.0430349707603455e-01 + + <_> + 48 + -1.3744181394577026e+00 + + <_> + + 0 -1 788 3.9594387635588646e-03 + + -1.5454453229904175e-01 4.9922767281532288e-01 + <_> + + 0 -1 467 -1.6322813928127289e-02 + + 4.2537182569503784e-01 -1.5276345610618591e-01 + <_> + + 0 -1 746 1.6230947803705931e-03 + + -2.2640861570835114e-01 2.5220483541488647e-01 + <_> + + 0 -1 115 -6.0441931709647179e-03 + + 2.2711095213890076e-01 -2.1762822568416595e-01 + <_> + + 0 -1 6 1.1688062921166420e-02 + + -1.6991630196571350e-01 2.8343129158020020e-01 + <_> + + 0 -1 624 -3.1942571513354778e-03 + + -6.2475329637527466e-01 7.3184341192245483e-02 + <_> + + 0 -1 11 -7.6569117605686188e-02 + + 5.5236744880676270e-01 -7.7832877635955811e-02 + <_> + + 0 -1 306 1.8717286875471473e-03 + + 8.4293909370899200e-02 -5.2716743946075439e-01 + <_> + + 0 -1 351 3.5880310460925102e-03 + + -1.2907223403453827e-01 3.3967444300651550e-01 + <_> + + 0 -1 176 -5.7136151008307934e-03 + + -5.9208476543426514e-01 7.7793844044208527e-02 + <_> + + 0 -1 150 -1.9309867173433304e-02 + + 2.5386241078376770e-01 -1.7397734522819519e-01 + <_> + + 0 -1 327 -2.4289516732096672e-03 + + 3.2221227884292603e-01 -1.2751287221908569e-01 + <_> + + 0 -1 25 -8.5500031709671021e-02 + + -7.7962499856948853e-01 5.0715133547782898e-02 + <_> + + 0 -1 770 5.7447291910648346e-03 + + -1.1523491144180298e-01 3.6400210857391357e-01 + <_> + + 0 -1 781 5.8936916291713715e-02 + + -8.7829843163490295e-02 4.1893997788429260e-01 + <_> + + 0 -1 984 -4.1379006579518318e-03 + + -6.3083720207214355e-01 6.4935714006423950e-02 + <_> + + 0 -1 565 -4.6407114714384079e-03 + + -6.5650087594985962e-01 5.4394256323575974e-02 + <_> + + 0 -1 877 1.5865347813814878e-03 + + -1.7255148291587830e-01 2.3248092830181122e-01 + <_> + + 0 -1 624 2.8971401043236256e-03 + + 6.0526229441165924e-02 -5.4368048906326294e-01 + <_> + + 0 -1 773 1.5737174544483423e-03 + + -1.1744406074285507e-01 3.0534917116165161e-01 + <_> + + 0 -1 609 1.6838097944855690e-03 + + 6.6153712570667267e-02 -5.9224641323089600e-01 + <_> + + 0 -1 912 3.2287575304508209e-03 + + 5.2678912878036499e-02 -5.7474386692047119e-01 + <_> + + 0 -1 850 -3.1512752175331116e-03 + + 3.7773844599723816e-01 -8.7322145700454712e-02 + <_> + + 0 -1 894 8.2073279190808535e-04 + + -1.0513201355934143e-01 3.4025487303733826e-01 + <_> + + 0 -1 603 2.8983387164771557e-03 + + 5.1720291376113892e-02 -6.5431916713714600e-01 + <_> + + 0 -1 852 -5.7246205396950245e-03 + + -7.8483843803405762e-01 3.5195719450712204e-02 + <_> + + 0 -1 44 -1.1572695337235928e-02 + + -6.7286187410354614e-01 3.5210411995649338e-02 + <_> + + 0 -1 80 -1.4562263153493404e-02 + + 2.4655815958976746e-01 -1.2278749793767929e-01 + <_> + + 0 -1 269 7.8490225132554770e-04 + + -1.4652141928672791e-01 3.0276218056678772e-01 + <_> + + 0 -1 725 -1.4289810787886381e-03 + + 1.8906314671039581e-01 -1.5791040658950806e-01 + <_> + + 0 -1 108 -9.4615388661623001e-03 + + -6.9036215543746948e-01 3.9911076426506042e-02 + <_> + + 0 -1 21 2.3225568234920502e-02 + + 5.0278317183256149e-02 -5.2323836088180542e-01 + <_> + + 0 -1 959 1.4046948403120041e-02 + + -7.9005211591720581e-02 4.0158179402351379e-01 + <_> + + 0 -1 126 3.7851710803806782e-03 + + -1.3530673086643219e-01 2.1973098814487457e-01 + <_> + + 0 -1 142 -3.6725951358675957e-03 + + 1.9924460351467133e-01 -1.5001934766769409e-01 + <_> + + 0 -1 963 -3.1669549643993378e-03 + + -4.2041611671447754e-01 7.4019186198711395e-02 + <_> + + 0 -1 695 -1.3667810708284378e-02 + + 2.5204744935035706e-01 -1.2807497382164001e-01 + <_> + + 0 -1 214 -3.5862527787685394e-02 + + 3.2997950911521912e-01 -8.9863941073417664e-02 + <_> + + 0 -1 946 -6.2667285092175007e-03 + + -5.5024039745330811e-01 5.7369034737348557e-02 + <_> + + 0 -1 438 -6.4383493736386299e-03 + + 3.3817592263221741e-01 -9.3247875571250916e-02 + <_> + + 0 -1 439 5.4173925891518593e-03 + + -1.0427469760179520e-01 2.9482829570770264e-01 + <_> + + 0 -1 400 -1.5132453292608261e-02 + + 3.2000914216041565e-01 -9.8272062838077545e-02 + <_> + + 0 -1 606 -1.2513613328337669e-02 + + 2.8962445259094238e-01 -1.2084391713142395e-01 + <_> + + 0 -1 91 -9.8966564983129501e-03 + + -5.8358079195022583e-01 5.1291342824697495e-02 + <_> + + 0 -1 932 1.3835988938808441e-02 + + -9.0702146291732788e-02 3.2527267932891846e-01 + <_> + + 0 -1 92 3.6492943763732910e-03 + + 8.4720104932785034e-02 -3.4649613499641418e-01 + <_> + + 0 -1 478 -1.3878188095986843e-02 + + 2.9309025406837463e-01 -9.6585884690284729e-02 + <_> + + 0 -1 580 2.8816664125770330e-03 + + -1.0839603841304779e-01 2.5134062767028809e-01 + + <_> + 57 + -1.3757541179656982e+00 + + <_> + + 0 -1 742 -4.1507836431264877e-03 + + 4.7857573628425598e-01 -1.5079282224178314e-01 + <_> + + 0 -1 539 -4.2431484907865524e-03 + + 2.7976706624031067e-01 -2.1182695031166077e-01 + <_> + + 0 -1 422 7.2727665305137634e-02 + + -1.1322361230850220e-01 4.6931907534599304e-01 + <_> + + 0 -1 120 7.3349894955754280e-03 + + -2.2507375478744507e-01 2.3486614227294922e-01 + <_> + + 0 -1 79 -1.3757663965225220e-01 + + 5.5153369903564453e-01 -8.4895148873329163e-02 + <_> + + 0 -1 592 6.8098353222012520e-04 + + -1.7585472762584686e-01 2.2849111258983612e-01 + <_> + + 0 -1 110 2.7579340338706970e-01 + + -1.1671220511198044e-01 3.2674804329872131e-01 + <_> + + 0 -1 921 5.4910051403567195e-04 + + -2.0603717863559723e-01 1.8896938860416412e-01 + <_> + + 0 -1 155 -5.5065844208002090e-03 + + -5.7701790332794189e-01 6.9212622940540314e-02 + <_> + + 0 -1 824 -8.3996364846825600e-03 + + 4.6683028340339661e-01 -7.4202880263328552e-02 + <_> + + 0 -1 843 -1.1010931339114904e-03 + + 1.9711431860923767e-01 -1.7736457288265228e-01 + <_> + + 0 -1 217 -4.4837296009063721e-03 + + -6.0108631849288940e-01 4.9327563494443893e-02 + <_> + + 0 -1 211 2.5086081586778164e-03 + + 6.9480538368225098e-02 -4.8671180009841919e-01 + <_> + + 0 -1 201 1.5808893367648125e-03 + + -1.0519328713417053e-01 3.2050549983978271e-01 + <_> + + 0 -1 210 1.4971228083595634e-03 + + -8.4364958107471466e-02 4.3016371130943298e-01 + <_> + + 0 -1 343 -2.6089220773428679e-03 + + -4.2146065831184387e-01 8.8990658521652222e-02 + <_> + + 0 -1 42 -7.7147269621491432e-03 + + -6.6330111026763916e-01 5.0671890377998352e-02 + <_> + + 0 -1 85 -1.7141735181212425e-02 + + -4.8750495910644531e-01 5.6981299072504044e-02 + <_> + + 0 -1 146 1.3850606046617031e-02 + + 7.4964463710784912e-02 -4.4079580903053284e-01 + <_> + + 0 -1 341 -1.4932476915419102e-03 + + 3.1057041883468628e-01 -1.0369800031185150e-01 + <_> + + 0 -1 382 -8.3094676956534386e-03 + + 2.2514784336090088e-01 -1.4621259272098541e-01 + <_> + + 0 -1 462 -7.2969077154994011e-04 + + 2.6934301853179932e-01 -1.2512375414371490e-01 + <_> + + 0 -1 430 -1.3652374967932701e-02 + + -4.9215099215507507e-01 7.3141731321811676e-02 + <_> + + 0 -1 20 9.4011947512626648e-03 + + 4.1364993900060654e-02 -6.5001028776168823e-01 + <_> + + 0 -1 657 4.0921592153608799e-03 + + 4.0478449314832687e-02 -5.9830683469772339e-01 + <_> + + 0 -1 847 1.5591707779094577e-03 + + -9.3049824237823486e-02 3.1007137894630432e-01 + <_> + + 0 -1 973 3.4408085048198700e-03 + + 4.7337688505649567e-02 -6.5880972146987915e-01 + <_> + + 0 -1 847 -1.3411687687039375e-03 + + 2.8307750821113586e-01 -1.0693576931953430e-01 + <_> + + 0 -1 534 -5.7181939482688904e-03 + + -4.7754487395286560e-01 6.3519261777400970e-02 + <_> + + 0 -1 374 -5.0096530467271805e-03 + + -6.1091655492782593e-01 3.9555240422487259e-02 + <_> + + 0 -1 1 -4.1508115828037262e-03 + + 2.1694649755954742e-01 -1.3193054497241974e-01 + <_> + + 0 -1 844 -1.6968715935945511e-02 + + 2.7644789218902588e-01 -1.0202119499444962e-01 + <_> + + 0 -1 103 1.0276203043758869e-02 + + -9.0598084032535553e-02 2.9703584313392639e-01 + <_> + + 0 -1 350 -1.8649294506758451e-03 + + 2.8791305422782898e-01 -9.2735975980758667e-02 + <_> + + 0 -1 942 3.3354205079376698e-03 + + 5.3746312856674194e-02 -5.0940161943435669e-01 + <_> + + 0 -1 396 -1.4105688314884901e-03 + + 2.4489782750606537e-01 -1.1008579283952713e-01 + <_> + + 0 -1 611 2.3928448557853699e-02 + + 5.2839644253253937e-02 -4.9896511435508728e-01 + <_> + + 0 -1 807 -3.8580424152314663e-03 + + -4.8197838664054871e-01 5.3767576813697815e-02 + <_> + + 0 -1 679 -3.0590491369366646e-03 + + -5.2978992462158203e-01 4.6741079539060593e-02 + <_> + + 0 -1 468 -2.9391471762210131e-03 + + -3.4711557626724243e-01 6.9464050233364105e-02 + <_> + + 0 -1 667 -7.0184348151087761e-03 + + 3.1962895393371582e-01 -8.3362981677055359e-02 + <_> + + 0 -1 664 1.0384586639702320e-03 + + -1.0797444730997086e-01 2.4896475672721863e-01 + <_> + + 0 -1 628 -8.0418614670634270e-03 + + -7.3527222871780396e-01 3.6740459501743317e-02 + <_> + + 0 -1 193 -3.1738542020320892e-02 + + 2.6166516542434692e-01 -1.0992183536291122e-01 + <_> + + 0 -1 194 3.6780342459678650e-02 + + -8.7741106748580933e-02 3.7106978893280029e-01 + <_> + + 0 -1 494 -6.4193591475486755e-02 + + 3.1807181239128113e-01 -8.8648937642574310e-02 + <_> + + 0 -1 46 3.4801474213600159e-01 + + -5.5967021733522415e-02 5.3631168603897095e-01 + <_> + + 0 -1 490 7.5712919235229492e-02 + + -5.9786085039377213e-02 4.1973164677619934e-01 + <_> + + 0 -1 983 7.8374873846769333e-03 + + -6.8252839148044586e-02 3.9001336693763733e-01 + <_> + + 0 -1 867 3.3967243507504463e-03 + + 5.7270396500825882e-02 -4.7492286562919617e-01 + <_> + + 0 -1 158 3.2095968723297119e-02 + + 3.0982470139861107e-02 -7.2973543405532837e-01 + <_> + + 0 -1 939 4.1734268888831139e-03 + + 3.0397623777389526e-02 -6.8009066581726074e-01 + <_> + + 0 -1 545 3.2336891163140535e-03 + + -9.4194613397121429e-02 2.5351443886756897e-01 + <_> + + 0 -1 55 -3.8070861250162125e-02 + + 2.7447724342346191e-01 -8.3862110972404480e-02 + <_> + + 0 -1 358 4.6657784841954708e-03 + + 3.7179920822381973e-02 -6.7654901742935181e-01 + <_> + + 0 -1 247 -3.9379103109240532e-03 + + -5.9923279285430908e-01 3.2963614910840988e-02 + <_> + + 0 -1 699 -4.8031057231128216e-03 + + 2.2248022258281708e-01 -1.0560184717178345e-01 + + <_> + 55 + -1.3843152523040771e+00 + + <_> + + 0 -1 456 6.7532630637288094e-03 + + -1.5934121608734131e-01 5.1630091667175293e-01 + <_> + + 0 -1 685 1.6582473181188107e-03 + + -1.4192129671573639e-01 4.6970281004905701e-01 + <_> + + 0 -1 741 8.5381623357534409e-03 + + -1.4064009487628937e-01 4.3454051017761230e-01 + <_> + + 0 -1 711 -5.8347072452306747e-02 + + 4.8053690791130066e-01 -1.1435888707637787e-01 + <_> + + 0 -1 200 7.5503322295844555e-04 + + -1.6613751649856567e-01 3.5059270262718201e-01 + <_> + + 0 -1 463 -1.6263198340311646e-03 + + 3.3983412384986877e-01 -1.2952369451522827e-01 + <_> + + 0 -1 982 -4.9476943910121918e-02 + + 5.1085108518600464e-01 -7.6757252216339111e-02 + <_> + + 0 -1 148 1.5736839268356562e-03 + + -9.8503805696964264e-02 4.2097148299217224e-01 + <_> + + 0 -1 970 2.8940830379724503e-03 + + 8.0476768314838409e-02 -5.9272909164428711e-01 + <_> + + 0 -1 470 -8.5198890883475542e-04 + + 2.7713751792907715e-01 -1.2991340458393097e-01 + <_> + + 0 -1 513 -3.2718123402446508e-03 + + 3.1215441226959229e-01 -1.2980756163597107e-01 + <_> + + 0 -1 244 6.0219354927539825e-03 + + 7.2135269641876221e-02 -5.9813290834426880e-01 + <_> + + 0 -1 81 2.3065296933054924e-02 + + 7.1330830454826355e-02 -5.3722465038299561e-01 + <_> + + 0 -1 187 2.7176631192560308e-05 + + -2.6853099465370178e-01 1.4315985143184662e-01 + <_> + + 0 -1 401 5.4575498215854168e-03 + + 5.5034745484590530e-02 -5.7176333665847778e-01 + <_> + + 0 -1 391 2.5911496777553111e-05 + + -2.3133303225040436e-01 1.4060766994953156e-01 + <_> + + 0 -1 12 2.1752633154392242e-02 + + 5.9929180890321732e-02 -5.0224888324737549e-01 + <_> + + 0 -1 860 3.5099866800010204e-03 + + 4.7387380152940750e-02 -5.8126205205917358e-01 + <_> + + 0 -1 755 8.6558861657977104e-03 + + -1.3651072978973389e-01 2.2407715022563934e-01 + <_> + + 0 -1 990 3.0432851053774357e-03 + + 5.7905938476324081e-02 -5.5585581064224243e-01 + <_> + + 0 -1 240 3.4083288628607988e-03 + + 4.6358574181795120e-02 -5.6204903125762939e-01 + <_> + + 0 -1 241 -4.1327420622110367e-03 + + -4.3748503923416138e-01 6.6312022507190704e-02 + <_> + + 0 -1 887 5.4382300004363060e-04 + + -1.2188895046710968e-01 2.6694831252098083e-01 + <_> + + 0 -1 886 2.0359107293188572e-03 + + -6.9375663995742798e-02 4.1734528541564941e-01 + <_> + + 0 -1 894 5.6087510893121362e-04 + + -1.2235503643751144e-01 2.9018589854240417e-01 + <_> + + 0 -1 957 5.4084453731775284e-03 + + 5.1494579762220383e-02 -6.3784217834472656e-01 + <_> + + 0 -1 99 1.9748538732528687e-02 + + -7.0414997637271881e-02 4.8995351791381836e-01 + <_> + + 0 -1 147 -2.0231239497661591e-02 + + -5.9452813863754272e-01 5.5317912250757217e-02 + <_> + + 0 -1 763 -8.5184378549456596e-03 + + -4.9081006646156311e-01 5.1023125648498535e-02 + <_> + + 0 -1 952 6.4936149865388870e-03 + + -8.6577519774436951e-02 3.6036944389343262e-01 + <_> + + 0 -1 30 -4.0995404124259949e-02 + + 4.0132537484169006e-01 -7.1912504732608795e-02 + <_> + + 0 -1 501 3.1340471468865871e-03 + + -1.2547470629215240e-01 2.2158138453960419e-01 + <_> + + 0 -1 184 -1.9882351160049438e-02 + + -7.1213179826736450e-01 4.2412471026182175e-02 + <_> + + 0 -1 559 2.0461969077587128e-02 + + -1.0324169695377350e-01 2.9102885723114014e-01 + <_> + + 0 -1 686 -1.2761610560119152e-03 + + 2.3810100555419922e-01 -1.1509060114622116e-01 + <_> + + 0 -1 549 -3.3783772960305214e-03 + + -5.6838840246200562e-01 5.6331343948841095e-02 + <_> + + 0 -1 302 5.0912564620375633e-03 + + 4.7987211495637894e-02 -4.7997272014617920e-01 + <_> + + 0 -1 508 -4.1752815246582031e-02 + + -5.9290748834609985e-01 4.2219188064336777e-02 + <_> + + 0 -1 263 -1.3672109693288803e-02 + + 2.7416154742240906e-01 -9.8633147776126862e-02 + <_> + + 0 -1 329 4.5463615097105503e-03 + + -9.5323033630847931e-02 3.3586710691452026e-01 + <_> + + 0 -1 472 -1.1957241222262383e-02 + + 1.6140049695968628e-01 -1.6837921738624573e-01 + <_> + + 0 -1 95 -2.4866103194653988e-03 + + -3.8348227739334106e-01 6.6880211234092712e-02 + <_> + + 0 -1 130 3.3222150523215532e-03 + + 4.9669362604618073e-02 -5.2419567108154297e-01 + <_> + + 0 -1 767 1.2700627557933331e-03 + + -1.0981336981058121e-01 2.4314954876899719e-01 + <_> + + 0 -1 643 -4.0526064112782478e-03 + + -5.4617625474929810e-01 4.6236973255872726e-02 + <_> + + 0 -1 889 -1.7611857037991285e-03 + + 2.0527404546737671e-01 -1.1924317479133606e-01 + <_> + + 0 -1 832 -2.8845192864537239e-03 + + 2.0061042904853821e-01 -1.4499643445014954e-01 + <_> + + 0 -1 969 -9.4242449849843979e-03 + + -7.2513866424560547e-01 3.4894362092018127e-02 + <_> + + 0 -1 972 3.7029895465821028e-03 + + 5.5003125220537186e-02 -4.1173446178436279e-01 + <_> + + 0 -1 785 -8.4825151134282351e-04 + + 2.6719486713409424e-01 -9.9083028733730316e-02 + <_> + + 0 -1 54 1.5727356076240540e-02 + + -1.2551975250244141e-01 2.0588764548301697e-01 + <_> + + 0 -1 106 5.9068910777568817e-03 + + 6.0179408639669418e-02 -4.1827461123466492e-01 + <_> + + 0 -1 27 -3.9538964629173279e-02 + + 3.4726879000663757e-01 -7.4968926608562469e-02 + <_> + + 0 -1 10 4.7501657158136368e-02 + + -7.6978117227554321e-02 3.5068345069885254e-01 + <_> + + 0 -1 259 -5.9454172151163220e-04 + + 1.6073931753635406e-01 -1.5279982984066010e-01 + + <_> + 58 + -1.2862224578857422e+00 + + <_> + + 0 -1 882 -1.3625519350171089e-02 + + 5.0128185749053955e-01 -1.1663150042295456e-01 + <_> + + 0 -1 375 -2.2920668125152588e-03 + + 3.9538189768791199e-01 -1.3872602581977844e-01 + <_> + + 0 -1 792 1.0770710650831461e-03 + + -1.7133137583732605e-01 3.1510788202285767e-01 + <_> + + 0 -1 452 -1.2591466307640076e-02 + + 3.9579889178276062e-01 -1.4279782772064209e-01 + <_> + + 0 -1 460 -4.7927081584930420e-02 + + -4.9305588006973267e-01 5.6685980409383774e-02 + <_> + + 0 -1 474 -2.5895023718476295e-03 + + 1.6586430370807648e-01 -2.2577352821826935e-01 + <_> + + 0 -1 112 9.8585948348045349e-02 + + -7.2541341185569763e-02 5.3971153497695923e-01 + <_> + + 0 -1 521 7.2299325838685036e-03 + + 7.2869211435317993e-02 -6.0541796684265137e-01 + <_> + + 0 -1 202 -6.0262705665081739e-04 + + 2.7961328625679016e-01 -1.3374039530754089e-01 + <_> + + 0 -1 253 5.3171166218817234e-03 + + 6.1562143266201019e-02 -5.3435516357421875e-01 + <_> + + 0 -1 109 -7.3790093883872032e-03 + + -5.8770626783370972e-01 5.2599798887968063e-02 + <_> + + 0 -1 179 2.2994203027337790e-04 + + -2.2165967524051666e-01 1.6663813591003418e-01 + <_> + + 0 -1 366 -2.7968082576990128e-03 + + -4.5023602247238159e-01 6.7983791232109070e-02 + <_> + + 0 -1 949 -4.4262632727622986e-03 + + -5.4457426071166992e-01 5.3928002715110779e-02 + <_> + + 0 -1 431 -6.1236601322889328e-03 + + 2.9386061429977417e-01 -1.0868654400110245e-01 + <_> + + 0 -1 364 6.1672870069742203e-03 + + 6.7409984767436981e-02 -4.2896196246147156e-01 + <_> + + 0 -1 335 1.5454929322004318e-02 + + -9.3371987342834473e-02 3.2237896323204041e-01 + <_> + + 0 -1 285 -5.5358107201755047e-03 + + -6.3797932863235474e-01 4.7232467681169510e-02 + <_> + + 0 -1 210 -5.8793288189917803e-04 + + 2.6480975747108459e-01 -1.1852940917015076e-01 + <_> + + 0 -1 203 1.2575921136885881e-03 + + -1.2490244954824448e-01 2.8103300929069519e-01 + <_> + + 0 -1 41 3.3034523949027061e-03 + + 6.2105692923069000e-02 -4.5968556404113770e-01 + <_> + + 0 -1 45 -2.6582641527056694e-02 + + -5.0849837064743042e-01 5.3966015577316284e-02 + <_> + + 0 -1 49 2.7427850291132927e-02 + + 5.2529457956552505e-02 -5.3614085912704468e-01 + <_> + + 0 -1 39 -2.1938718855381012e-03 + + -5.6713318824768066e-01 4.6497207134962082e-02 + <_> + + 0 -1 926 8.5861550178378820e-04 + + -1.1162154376506805e-01 2.8105884790420532e-01 + <_> + + 0 -1 886 -8.4925384726375341e-04 + + 3.1280112266540527e-01 -1.2138028442859650e-01 + <_> + + 0 -1 956 2.9905270785093307e-03 + + 6.1607286334037781e-02 -5.1581907272338867e-01 + <_> + + 0 -1 968 5.8231391012668610e-03 + + 4.7376025468111038e-02 -5.1492005586624146e-01 + <_> + + 0 -1 480 4.2811138555407524e-03 + + 3.2761037349700928e-02 -6.7820072174072266e-01 + <_> + + 0 -1 915 9.5272483304142952e-04 + + -1.5452747046947479e-01 1.7837351560592651e-01 + <_> + + 0 -1 270 -2.7698231860995293e-04 + + 1.8924367427825928e-01 -1.3868112862110138e-01 + <_> + + 0 -1 370 3.0586202628910542e-03 + + 5.3298473358154297e-02 -4.7908756136894226e-01 + <_> + + 0 -1 639 2.0293965935707092e-03 + + 3.1667634844779968e-02 -6.7199909687042236e-01 + <_> + + 0 -1 639 -1.8073513638228178e-03 + + -6.4894622564315796e-01 3.3469315618276596e-02 + <_> + + 0 -1 320 -1.1197938583791256e-03 + + 2.2734998166561127e-01 -1.1382233351469040e-01 + <_> + + 0 -1 828 1.2703117681667209e-03 + + -9.7680233418941498e-02 2.9997348785400391e-01 + <_> + + 0 -1 835 -1.8036495894193649e-03 + + 2.3566392064094543e-01 -1.1566326767206192e-01 + <_> + + 0 -1 222 2.3318463936448097e-03 + + 5.5787801742553711e-02 -4.4648987054824829e-01 + <_> + + 0 -1 111 1.8485619220882654e-03 + + -1.0420991480350494e-01 2.4521166086196899e-01 + <_> + + 0 -1 101 8.2633290439844131e-03 + + 5.3129263222217560e-02 -4.8460647463798523e-01 + <_> + + 0 -1 760 2.7392050469643436e-05 + + -1.7487643659114838e-01 1.3620604574680328e-01 + <_> + + 0 -1 352 2.6163433212786913e-03 + + -9.9586494266986847e-02 2.4075058102607727e-01 + <_> + + 0 -1 94 3.6149267107248306e-03 + + 4.2312353849411011e-02 -5.5195075273513794e-01 + <_> + + 0 -1 403 1.4812931418418884e-02 + + -6.7619144916534424e-02 3.7573158740997314e-01 + <_> + + 0 -1 814 -2.8877586591988802e-03 + + -5.3493702411651611e-01 5.1065266132354736e-02 + <_> + + 0 -1 930 3.5591312916949391e-04 + + -1.2231220304965973e-01 1.9974029064178467e-01 + <_> + + 0 -1 36 -1.0347569361329079e-02 + + -6.3408315181732178e-01 4.0167611092329025e-02 + <_> + + 0 -1 34 -4.4028884731233120e-03 + + -5.1359844207763672e-01 4.3052427470684052e-02 + <_> + + 0 -1 856 -1.6173283802345395e-03 + + 1.4859439432621002e-01 -1.4985026419162750e-01 + <_> + + 0 -1 996 -3.1839800067245960e-03 + + -4.1493499279022217e-01 6.0393124818801880e-02 + <_> + + 0 -1 960 -7.9784039407968521e-03 + + 2.8296649456024170e-01 -8.6312569677829742e-02 + <_> + + 0 -1 797 2.8750954661518335e-03 + + -6.7822508513927460e-02 3.2967612147331238e-01 + <_> + + 0 -1 992 -1.1433581821620464e-03 + + -3.4375748038291931e-01 6.8774074316024780e-02 + <_> + + 0 -1 668 1.7783213406801224e-03 + + -8.8273152709007263e-02 2.6904863119125366e-01 + <_> + + 0 -1 670 -6.3564153388142586e-03 + + 3.4165042638778687e-01 -7.6342806220054626e-02 + <_> + + 0 -1 712 5.8753319084644318e-02 + + 3.6884155124425888e-02 -7.0002478361129761e-01 + <_> + + 0 -1 345 -1.2118986342102289e-03 + + 1.8067996203899384e-01 -1.2888990342617035e-01 + <_> + + 0 -1 268 -3.4786794334650040e-02 + + 2.8380703926086426e-01 -1.0494612902402878e-01 + + <_> + 61 + -1.3526766300201416e+00 + + <_> + + 0 -1 875 9.3241240829229355e-03 + + -1.1945860832929611e-01 4.8265087604522705e-01 + <_> + + 0 -1 573 -4.0869116783142090e-03 + + 2.7903670072555542e-01 -2.3448269069194794e-01 + <_> + + 0 -1 676 8.3140000700950623e-02 + + -8.5437655448913574e-02 5.4905670881271362e-01 + <_> + + 0 -1 802 2.6708254590630531e-03 + + -1.6097296774387360e-01 3.5868695378303528e-01 + <_> + + 0 -1 75 2.2817514836788177e-03 + + -1.6324259340763092e-01 2.3956388235092163e-01 + <_> + + 0 -1 745 6.7889376077800989e-04 + + -2.5205141305923462e-01 1.6190616786479950e-01 + <_> + + 0 -1 811 3.1512721907347441e-03 + + -1.3325424492359161e-01 2.7017220854759216e-01 + <_> + + 0 -1 53 5.7821646332740784e-02 + + -6.7158013582229614e-02 4.1875806450843811e-01 + <_> + + 0 -1 442 2.8442896902561188e-02 + + 5.5711831897497177e-02 -5.8136337995529175e-01 + <_> + + 0 -1 644 -1.7370734130963683e-03 + + -6.7132610082626343e-01 3.2464105635881424e-02 + <_> + + 0 -1 324 -1.9680276513099670e-02 + + 3.9044600725173950e-01 -8.8745564222335815e-02 + <_> + + 0 -1 224 1.0001409798860550e-02 + + -1.5947268903255463e-01 2.7087828516960144e-01 + <_> + + 0 -1 644 1.2495646951720119e-03 + + 8.3702936768531799e-02 -4.6324184536933899e-01 + <_> + + 0 -1 144 3.0510198324918747e-02 + + -1.0709584504365921e-01 3.2648065686225891e-01 + <_> + + 0 -1 995 -3.7916197907179594e-03 + + -6.1073684692382812e-01 4.7788143157958984e-02 + <_> + + 0 -1 880 8.5655774455517530e-04 + + -2.0807541906833649e-01 1.5517778694629669e-01 + <_> + + 0 -1 986 -3.2812850549817085e-03 + + -5.8795136213302612e-01 4.5926980674266815e-02 + <_> + + 0 -1 499 3.6125673796050251e-04 + + -1.6806155443191528e-01 1.7441834509372711e-01 + <_> + + 0 -1 591 -1.2282358948141336e-03 + + -4.7641313076019287e-01 5.6790668517351151e-02 + <_> + + 0 -1 411 9.3263220041990280e-03 + + -7.4045926332473755e-02 3.7817317247390747e-01 + <_> + + 0 -1 591 7.4745330493897200e-04 + + 8.0762349069118500e-02 -3.5692575573921204e-01 + <_> + + 0 -1 900 7.4315653182566166e-03 + + -8.5764542222023010e-02 3.2155406475067139e-01 + <_> + + 0 -1 776 2.7057509869337082e-02 + + 6.9296583533287048e-02 -4.2836430668830872e-01 + <_> + + 0 -1 504 3.9283365011215210e-02 + + -1.0806435346603394e-01 2.9007008671760559e-01 + <_> + + 0 -1 23 -3.4139624238014221e-01 + + 5.0227731466293335e-01 -6.3795588910579681e-02 + <_> + + 0 -1 502 -1.8172953277826309e-02 + + 2.7207729220390320e-01 -1.0322675853967667e-01 + <_> + + 0 -1 509 1.5265008434653282e-02 + + -1.0788526386022568e-01 2.4405729770660400e-01 + <_> + + 0 -1 465 -1.4973650686442852e-03 + + 2.8644701838493347e-01 -1.0436929017305374e-01 + <_> + + 0 -1 674 2.1207414101809263e-03 + + 4.5713264495134354e-02 -6.6571021080017090e-01 + <_> + + 0 -1 254 1.3393461704254150e-02 + + -8.4284797310829163e-02 3.6480179429054260e-01 + <_> + + 0 -1 560 9.7873376216739416e-04 + + -1.2960052490234375e-01 2.2095513343811035e-01 + <_> + + 0 -1 747 -4.9731796607375145e-03 + + 2.7467787265777588e-01 -1.0236363112926483e-01 + <_> + + 0 -1 294 -7.9883169382810593e-03 + + -5.3638678789138794e-01 5.3369920700788498e-02 + <_> + + 0 -1 413 2.3855306208133698e-03 + + 5.4967612028121948e-02 -4.2117682099342346e-01 + <_> + + 0 -1 899 -3.0849636532366276e-03 + + 2.6192533969879150e-01 -9.4207443296909332e-02 + <_> + + 0 -1 653 4.3416069820523262e-03 + + -1.5543100237846375e-01 1.6663897037506104e-01 + <_> + + 0 -1 451 3.8728015497326851e-03 + + 4.9280565232038498e-02 -4.9337747693061829e-01 + <_> + + 0 -1 563 1.8099667504429817e-03 + + 4.2697191238403320e-02 -5.2748012542724609e-01 + <_> + + 0 -1 157 -3.3727339468896389e-03 + + 2.0491680502891541e-01 -1.2846539914608002e-01 + <_> + + 0 -1 344 3.1393815297633410e-03 + + -7.3090612888336182e-02 3.4941059350967407e-01 + <_> + + 0 -1 851 3.2568261958658695e-03 + + 4.5729346573352814e-02 -5.7302659749984741e-01 + <_> + + 0 -1 853 -2.0513155031949282e-03 + + -5.4655516147613525e-01 3.8907390087842941e-02 + <_> + + 0 -1 656 -2.7090720832347870e-03 + + -5.2781039476394653e-01 3.8093525916337967e-02 + <_> + + 0 -1 738 -3.6282267421483994e-02 + + -5.8760797977447510e-01 3.4759882837533951e-02 + <_> + + 0 -1 558 3.7925848737359047e-03 + + -8.5966393351554871e-02 2.6226586103439331e-01 + <_> + + 0 -1 991 -3.7565450184047222e-03 + + -5.7828390598297119e-01 3.9440535008907318e-02 + <_> + + 0 -1 906 -7.8137982636690140e-03 + + 3.5042202472686768e-01 -6.6597603261470795e-02 + <_> + + 0 -1 904 -3.1100357882678509e-03 + + 1.8389418721199036e-01 -1.4107073843479156e-01 + <_> + + 0 -1 449 9.1797057539224625e-03 + + -6.2711343169212341e-02 3.4819519519805908e-01 + <_> + + 0 -1 255 -2.9698751866817474e-02 + + 2.8956320881843567e-01 -8.5679493844509125e-02 + <_> + + 0 -1 720 7.9502481967210770e-03 + + 3.9165180176496506e-02 -6.0753583908081055e-01 + <_> + + 0 -1 621 2.2064188960939646e-03 + + 3.5431943833827972e-02 -5.5480444431304932e-01 + <_> + + 0 -1 175 -3.1044434756040573e-02 + + -6.2628567218780518e-01 3.1049268320202827e-02 + <_> + + 0 -1 0 -1.3199620880186558e-03 + + 1.5564316511154175e-01 -1.3879336416721344e-01 + <_> + + 0 -1 397 -9.6068280981853604e-04 + + 1.9332279264926910e-01 -1.1179215461015701e-01 + <_> + + 0 -1 43 7.4608568102121353e-03 + + 5.7219974696636200e-02 -4.2135125398635864e-01 + <_> + + 0 -1 293 -4.3320422992110252e-03 + + -6.8079024553298950e-01 2.9504306614398956e-02 + <_> + + 0 -1 274 -6.5548438578844070e-03 + + 2.9043409228324890e-01 -8.7089523673057556e-02 + <_> + + 0 -1 204 4.2611984536051750e-03 + + -8.5929870605468750e-02 3.1930494308471680e-01 + <_> + + 0 -1 635 -7.2978977113962173e-03 + + 1.4620631933212280e-01 -1.7617914080619812e-01 + <_> + + 0 -1 225 -2.2543172817677259e-03 + + -5.9305733442306519e-01 3.9764832705259323e-02 + + <_> + 70 + -1.3067549467086792e+00 + + <_> + + 0 -1 742 -5.6160744279623032e-03 + + 4.7913768887519836e-01 -9.8717339336872101e-02 + <_> + + 0 -1 536 -5.6263338774442673e-03 + + 2.8639736771583557e-01 -1.7997759580612183e-01 + <_> + + 0 -1 795 -1.6268140170723200e-03 + + 3.0874463915824890e-01 -1.3907180726528168e-01 + <_> + + 0 -1 802 -1.3920383062213659e-03 + + 3.2034638524055481e-01 -1.3876211643218994e-01 + <_> + + 0 -1 826 3.4234612248837948e-03 + + -1.0860712081193924e-01 3.2174232602119446e-01 + <_> + + 0 -1 525 4.3767906725406647e-02 + + -1.3255064189434052e-01 3.7021124362945557e-01 + <_> + + 0 -1 401 -4.4696494005620480e-03 + + -4.5687621831893921e-01 8.2243621349334717e-02 + <_> + + 0 -1 332 -7.1945399977266788e-03 + + -6.4334297180175781e-01 4.5623987913131714e-02 + <_> + + 0 -1 273 6.5287351608276367e-03 + + -8.9336074888706207e-02 3.3727860450744629e-01 + <_> + + 0 -1 771 2.8297028038650751e-03 + + -1.0177894681692123e-01 3.5831856727600098e-01 + <_> + + 0 -1 925 1.1526069603860378e-02 + + 7.5238041579723358e-02 -4.8319393396377563e-01 + <_> + + 0 -1 207 4.7937319613993168e-03 + + 5.7682428508996964e-02 -4.7086900472640991e-01 + <_> + + 0 -1 395 -3.6777029745280743e-03 + + -4.2743790149688721e-01 7.4363298714160919e-02 + <_> + + 0 -1 839 -8.0760312266647816e-04 + + 1.4320656657218933e-01 -1.9929704070091248e-01 + <_> + + 0 -1 233 3.7253312766551971e-03 + + 5.2736207842826843e-02 -5.2105212211608887e-01 + <_> + + 0 -1 416 -2.3560712113976479e-02 + + 4.0658730268478394e-01 -7.3024936020374298e-02 + <_> + + 0 -1 311 -4.5593185350298882e-03 + + -6.3590377569198608e-01 3.5127460956573486e-02 + <_> + + 0 -1 551 -2.4863984435796738e-03 + + -4.5599257946014404e-01 5.3035512566566467e-02 + <_> + + 0 -1 424 -2.6802124921232462e-03 + + 1.9116453826427460e-01 -1.3404799997806549e-01 + <_> + + 0 -1 11 -7.7647715806961060e-02 + + 4.1297465562820435e-01 -6.3970938324928284e-02 + <_> + + 0 -1 566 2.3329094983637333e-03 + + -1.2160944193601608e-01 2.3117628693580627e-01 + <_> + + 0 -1 5 -6.6609308123588562e-03 + + 2.2600707411766052e-01 -1.2069495767354965e-01 + <_> + + 0 -1 133 -5.0821684300899506e-02 + + 3.2217630743980408e-01 -7.6335281133651733e-02 + <_> + + 0 -1 537 -7.0379404351115227e-03 + + 1.8399104475975037e-01 -1.4812190830707550e-01 + <_> + + 0 -1 134 -3.3276520669460297e-02 + + -6.0358065366744995e-01 3.5330448299646378e-02 + <_> + + 0 -1 392 7.5909225270152092e-03 + + 3.1779482960700989e-02 -6.4767998456954956e-01 + <_> + + 0 -1 613 -5.6639023125171661e-02 + + -4.6455994248390198e-01 4.6072337776422501e-02 + <_> + + 0 -1 124 3.7777128163725138e-03 + + 5.7451672852039337e-02 -3.7793967127799988e-01 + <_> + + 0 -1 271 8.9145395904779434e-03 + + -7.5942978262901306e-02 3.1487807631492615e-01 + <_> + + 0 -1 841 -1.4818884432315826e-02 + + 2.7122247219085693e-01 -9.8314434289932251e-02 + <_> + + 0 -1 381 -5.5922558531165123e-03 + + -6.4762401580810547e-01 4.1314963251352310e-02 + <_> + + 0 -1 595 3.1491921981796622e-04 + + -1.4864055812358856e-01 1.4411780238151550e-01 + <_> + + 0 -1 136 -5.7063563726842403e-03 + + -4.6024248003959656e-01 4.7999884933233261e-02 + <_> + + 0 -1 210 -1.2257394846528769e-03 + + 3.2288366556167603e-01 -7.0425607264041901e-02 + <_> + + 0 -1 775 -1.6291948035359383e-02 + + 2.7573275566101074e-01 -8.3055868744850159e-02 + <_> + + 0 -1 156 -8.1639690324664116e-04 + + 1.7044979333877563e-01 -1.4129574596881866e-01 + <_> + + 0 -1 975 5.1114819943904877e-03 + + 3.3882420510053635e-02 -6.9941717386245728e-01 + <_> + + 0 -1 977 -2.8371806256473064e-03 + + -3.7707236409187317e-01 5.7759616523981094e-02 + <_> + + 0 -1 772 5.3479857742786407e-03 + + 4.1541736572980881e-02 -4.8687714338302612e-01 + <_> + + 0 -1 735 1.1360908392816782e-03 + + -7.8717894852161407e-02 2.9692038893699646e-01 + <_> + + 0 -1 947 1.4100213302299380e-03 + + 4.3843001127243042e-02 -5.1339787244796753e-01 + <_> + + 0 -1 387 8.7079760851338506e-04 + + -9.8695866763591766e-02 2.2730629146099091e-01 + <_> + + 0 -1 211 -5.4065873846411705e-03 + + -6.3011974096298218e-01 3.7802927196025848e-02 + <_> + + 0 -1 816 -1.6894804313778877e-02 + + -5.0091201066970825e-01 3.5215172916650772e-02 + <_> + + 0 -1 766 1.4164673630148172e-03 + + -8.8441111147403717e-02 2.4102251231670380e-01 + <_> + + 0 -1 704 -1.1464871931821108e-03 + + 1.9273723661899567e-01 -1.1090471595525742e-01 + <_> + + 0 -1 861 -3.2706123311072588e-03 + + -4.5202803611755371e-01 4.7059688717126846e-02 + <_> + + 0 -1 70 1.1416582390666008e-02 + + 2.6714416220784187e-02 -6.9660711288452148e-01 + <_> + + 0 -1 310 2.7643535286188126e-03 + + 4.7252438962459564e-02 -3.9458727836608887e-01 + <_> + + 0 -1 435 2.4567130021750927e-03 + + -7.5188823044300079e-02 2.9944056272506714e-01 + <_> + + 0 -1 441 -7.3516201227903366e-03 + + 2.8476437926292419e-01 -9.2367134988307953e-02 + <_> + + 0 -1 662 -4.3670929968357086e-02 + + -6.8588620424270630e-01 3.3353023231029510e-02 + <_> + + 0 -1 138 -6.4992159605026245e-02 + + -7.9678738117218018e-01 2.0331909880042076e-02 + <_> + + 0 -1 286 -1.1700032278895378e-02 + + -6.1183351278305054e-01 2.7328895404934883e-02 + <_> + + 0 -1 589 3.0743866227567196e-03 + + -7.7295452356338501e-02 2.6685911417007446e-01 + <_> + + 0 -1 584 -1.5546076931059361e-02 + + -5.5246621370315552e-01 4.0912687778472900e-02 + <_> + + 0 -1 40 6.5568592399358749e-03 + + -1.0432150214910507e-01 1.9379787147045135e-01 + <_> + + 0 -1 29 -8.0047458410263062e-02 + + 3.9228948950767517e-01 -5.2565738558769226e-02 + <_> + + 0 -1 227 1.5684183686971664e-02 + + -1.1151826381683350e-01 1.8633136153221130e-01 + <_> + + 0 -1 546 2.3603178560733795e-03 + + -1.0219112038612366e-01 2.0333246886730194e-01 + <_> + + 0 -1 585 -3.5169085022062063e-03 + + 2.7427124977111816e-01 -8.6362943053245544e-02 + <_> + + 0 -1 476 9.4871241599321365e-03 + + 3.5626750439405441e-02 -6.2631088495254517e-01 + <_> + + 0 -1 629 -9.3261618167161942e-03 + + -7.1806514263153076e-01 2.4241568520665169e-02 + <_> + + 0 -1 666 -6.3302312046289444e-03 + + 2.1094995737075806e-01 -9.2475786805152893e-02 + <_> + + 0 -1 598 -2.8244811110198498e-03 + + 2.6596403121948242e-01 -8.0099694430828094e-02 + <_> + + 0 -1 145 -1.1591307818889618e-02 + + 2.3619163036346436e-01 -8.5169024765491486e-02 + <_> + + 0 -1 117 2.1401243284344673e-03 + + -1.0995808988809586e-01 2.1230246126651764e-01 + <_> + + 0 -1 562 4.2046746239066124e-03 + + 3.6688093096017838e-02 -6.1654287576675415e-01 + <_> + + 0 -1 605 1.1085141450166702e-03 + + -8.0656312406063080e-02 2.7754181623458862e-01 + <_> + + 0 -1 829 -8.2805287092924118e-03 + + -6.5883606672286987e-01 3.6048211157321930e-02 + + <_> + 70 + -1.2368309497833252e+00 + + <_> + + 0 -1 716 -3.3105849288403988e-03 + + 5.0566112995147705e-01 -8.2956805825233459e-02 + <_> + + 0 -1 190 4.5855166390538216e-03 + + -1.3226345181465149e-01 3.9034894108772278e-01 + <_> + + 0 -1 576 -2.6665716432034969e-03 + + 2.7508354187011719e-01 -1.3807572424411774e-01 + <_> + + 0 -1 734 1.8106825649738312e-02 + + -1.2738862633705139e-01 3.5449108481407166e-01 + <_> + + 0 -1 830 -5.7813120074570179e-03 + + 2.7463605999946594e-01 -1.2951526045799255e-01 + <_> + + 0 -1 379 8.9321136474609375e-03 + + 4.8491790890693665e-02 -5.8104276657104492e-01 + <_> + + 0 -1 17 6.2806839123368263e-03 + + -1.3215491175651550e-01 2.1852293610572815e-01 + <_> + + 0 -1 9 -4.3670572340488434e-02 + + 3.8786840438842773e-01 -7.4191503226757050e-02 + <_> + + 0 -1 554 -6.2309622764587402e-02 + + 3.3408007025718689e-01 -8.7087221443653107e-02 + <_> + + 0 -1 686 -3.2859744969755411e-03 + + 3.3486780524253845e-01 -8.9008949697017670e-02 + <_> + + 0 -1 346 -3.9627305231988430e-03 + + 2.6155433058738708e-01 -9.5614455640316010e-02 + <_> + + 0 -1 434 1.0877416934818029e-03 + + -1.4199735224246979e-01 1.8414285778999329e-01 + <_> + + 0 -1 249 5.4819821380078793e-03 + + 7.4260123074054718e-02 -5.6989872455596924e-01 + <_> + + 0 -1 916 4.9011572264134884e-04 + + -1.9576059281826019e-01 1.3506270945072174e-01 + <_> + + 0 -1 911 -7.7052684500813484e-03 + + -5.0443643331527710e-01 6.1383318156003952e-02 + <_> + + 0 -1 164 4.8691947013139725e-03 + + 4.3469026684761047e-02 -5.2802342176437378e-01 + <_> + + 0 -1 344 2.4673391599208117e-03 + + -8.9178681373596191e-02 3.0606627464294434e-01 + <_> + + 0 -1 172 -3.6682826466858387e-03 + + -6.5514552593231201e-01 4.7427203506231308e-02 + <_> + + 0 -1 365 2.5194899644702673e-03 + + 4.9365170300006866e-02 -4.0812951326370239e-01 + <_> + + 0 -1 531 5.8970693498849869e-03 + + 3.5579398274421692e-02 -6.4191317558288574e-01 + <_> + + 0 -1 842 1.7767311073839664e-03 + + -8.6629316210746765e-02 2.7705979347229004e-01 + <_> + + 0 -1 885 4.0457276627421379e-03 + + 5.6002113968133926e-02 -4.7005215287208557e-01 + <_> + + 0 -1 522 3.2862280495464802e-03 + + -1.2930884957313538e-01 2.0613414049148560e-01 + <_> + + 0 -1 322 1.4660503948107362e-03 + + -9.9395424127578735e-02 3.3950179815292358e-01 + <_> + + 0 -1 266 1.9015703350305557e-02 + + 6.0197159647941589e-02 -5.1893943548202515e-01 + <_> + + 0 -1 102 -7.1178808808326721e-02 + + -4.3668299913406372e-01 4.7340013086795807e-02 + <_> + + 0 -1 795 -4.6305771684274077e-04 + + 1.4736598730087280e-01 -1.5406486392021179e-01 + <_> + + 0 -1 298 -4.7644632868468761e-03 + + -5.0336647033691406e-01 4.4053792953491211e-02 + <_> + + 0 -1 761 -8.5318256169557571e-03 + + -5.9967356920242310e-01 3.2567754387855530e-02 + <_> + + 0 -1 713 -2.7496295515447855e-03 + + 1.3502316176891327e-01 -1.6025592386722565e-01 + <_> + + 0 -1 607 4.2666587978601456e-03 + + 2.5802688673138618e-02 -7.8170543909072876e-01 + <_> + + 0 -1 216 -2.9856398701667786e-02 + + 2.4982222914695740e-01 -8.8180385529994965e-02 + <_> + + 0 -1 226 2.2136634215712547e-03 + + -1.4314906299114227e-01 1.6945528984069824e-01 + <_> + + 0 -1 640 1.6336794942617416e-02 + + 4.6008959412574768e-02 -4.9338266253471375e-01 + <_> + + 0 -1 459 7.9861842095851898e-03 + + -1.1460029333829880e-01 1.9282819330692291e-01 + <_> + + 0 -1 650 -1.7455726629123092e-03 + + 1.7520657181739807e-01 -1.2269173562526703e-01 + <_> + + 0 -1 124 -6.2451506964862347e-03 + + -4.5638361573219299e-01 4.8106320202350616e-02 + <_> + + 0 -1 406 8.5668899118900299e-03 + + -8.0403454601764679e-02 3.0411326885223389e-01 + <_> + + 0 -1 974 8.6863581091165543e-03 + + 3.4176670014858246e-02 -7.3028022050857544e-01 + <_> + + 0 -1 36 1.0814646258950233e-02 + + 2.5131458416581154e-02 -6.7325627803802490e-01 + <_> + + 0 -1 709 4.4222913682460785e-02 + + 3.9326712489128113e-02 -5.1067680120468140e-01 + <_> + + 0 -1 903 3.7128489930182695e-03 + + -1.3248492777347565e-01 1.6692358255386353e-01 + <_> + + 0 -1 129 -4.6475054696202278e-03 + + 1.7683532834053040e-01 -1.2570241093635559e-01 + <_> + + 0 -1 291 4.2433524504303932e-03 + + 3.6985948681831360e-02 -5.8369445800781250e-01 + <_> + + 0 -1 315 -5.1774000748991966e-03 + + 5.1487326622009277e-01 -4.1473735123872757e-02 + <_> + + 0 -1 855 4.2645614594221115e-03 + + 3.7253957241773605e-02 -5.7676959037780762e-01 + <_> + + 0 -1 83 4.8632645048201084e-03 + + -6.7035257816314697e-02 3.1131938099861145e-01 + <_> + + 0 -1 250 2.6089766994118690e-02 + + -8.2920446991920471e-02 3.0445784330368042e-01 + <_> + + 0 -1 625 -1.9001008477061987e-03 + + -4.3419414758682251e-01 4.6812325716018677e-02 + <_> + + 0 -1 891 -6.0952613130211830e-03 + + -5.1850622892379761e-01 3.6754775792360306e-02 + <_> + + 0 -1 564 1.2120242230594158e-02 + + -7.4773810803890228e-02 2.6738941669464111e-01 + <_> + + 0 -1 817 -1.8978580832481384e-02 + + 2.5657230615615845e-01 -8.0304212868213654e-02 + <_> + + 0 -1 338 4.3438978493213654e-02 + + -6.2818735837936401e-02 3.2261833548545837e-01 + <_> + + 0 -1 773 9.4384723342955112e-04 + + -9.8582215607166290e-02 2.2370135784149170e-01 + <_> + + 0 -1 519 -4.1803726926445961e-03 + + -4.9802374839782715e-01 4.3809909373521805e-02 + <_> + + 0 -1 195 -9.7246468067169189e-03 + + 2.2823798656463623e-01 -9.8547600209712982e-02 + <_> + + 0 -1 658 2.7193846181035042e-03 + + -9.1188244521617889e-02 2.2684387862682343e-01 + <_> + + 0 -1 174 6.2224082648754120e-03 + + 3.2258503139019012e-02 -6.0108250379562378e-01 + <_> + + 0 -1 77 -4.8602908849716187e-01 + + 6.3337916135787964e-01 -3.3006772398948669e-02 + <_> + + 0 -1 550 -5.3604291751980782e-03 + + 2.9434949159622192e-01 -6.1312302947044373e-02 + <_> + + 0 -1 541 5.5021280422806740e-03 + + 4.1839476674795151e-02 -4.5681878924369812e-01 + <_> + + 0 -1 326 -1.3823953922837973e-03 + + 1.6067574918270111e-01 -1.1796293407678604e-01 + <_> + + 0 -1 514 2.0954519510269165e-02 + + -5.7253565639257431e-02 3.3830171823501587e-01 + <_> + + 0 -1 409 7.4234008789062500e-03 + + -7.4798591434955597e-02 2.6430690288543701e-01 + <_> + + 0 -1 578 2.1767318248748779e-03 + + -8.0530151724815369e-02 2.5947657227516174e-01 + <_> + + 0 -1 623 1.8930230289697647e-03 + + -8.1788897514343262e-02 2.2988820075988770e-01 + <_> + + 0 -1 533 6.9275917485356331e-03 + + 2.6962997391819954e-02 -7.6910203695297241e-01 + <_> + + 0 -1 334 6.7140227183699608e-03 + + 2.3244854062795639e-02 -6.8406605720520020e-01 + <_> + + 0 -1 632 -3.4494437277317047e-02 + + -6.5257686376571655e-01 2.4584138765931129e-02 + <_> + + 0 -1 787 1.9636256620287895e-03 + + -9.1118760406970978e-02 2.0629465579986572e-01 + + <_> + 80 + -1.3304495811462402e+00 + + <_> + + 0 -1 572 -9.1053368523716927e-03 + + 4.8031216859817505e-01 -9.3147851526737213e-02 + <_> + + 0 -1 715 -2.1384856663644314e-03 + + 3.4027156233787537e-01 -1.4834050834178925e-01 + <_> + + 0 -1 953 1.2453617528080940e-02 + + -8.0359503626823425e-02 4.7585478425025940e-01 + <_> + + 0 -1 198 5.0965799018740654e-03 + + -1.6364066302776337e-01 2.9590085148811340e-01 + <_> + + 0 -1 477 -3.1894792336970568e-03 + + 1.7039565742015839e-01 -2.1295401453971863e-01 + <_> + + 0 -1 314 -1.4799979981034994e-03 + + -4.1050529479980469e-01 5.3783610463142395e-02 + <_> + + 0 -1 66 6.0710287652909756e-03 + + -1.5162153542041779e-01 1.8406888842582703e-01 + <_> + + 0 -1 401 4.3081510812044144e-03 + + 5.0293717533349991e-02 -4.6324169635772705e-01 + <_> + + 0 -1 970 1.8933035898953676e-03 + + 6.5655551850795746e-02 -3.9198148250579834e-01 + <_> + + 0 -1 782 -1.6021143645048141e-02 + + 2.2748421132564545e-01 -1.0609938949346542e-01 + <_> + + 0 -1 928 -8.9298677630722523e-04 + + 3.1164079904556274e-01 -1.1380065232515335e-01 + <_> + + 0 -1 888 -1.4284942299127579e-03 + + 2.7966943383216858e-01 -9.6580952405929565e-02 + <_> + + 0 -1 822 2.5015190243721008e-02 + + 4.2534209787845612e-02 -6.2623745203018188e-01 + <_> + + 0 -1 583 -2.8645459096878767e-03 + + -4.1426309943199158e-01 5.1780503243207932e-02 + <_> + + 0 -1 902 3.2044243998825550e-03 + + -1.1883606761693954e-01 1.9546063244342804e-01 + <_> + + 0 -1 319 -1.0433372110128403e-02 + + 2.6159819960594177e-01 -9.3164652585983276e-02 + <_> + + 0 -1 287 -9.7299478948116302e-03 + + -4.9464005231857300e-01 5.0998747348785400e-02 + <_> + + 0 -1 206 -2.1688457578420639e-02 + + 5.6923902034759521e-01 -4.9958106130361557e-02 + <_> + + 0 -1 38 -2.9492072761058807e-02 + + -6.1336356401443481e-01 4.7003138810396194e-02 + <_> + + 0 -1 35 -2.4866596795618534e-03 + + -3.9986124634742737e-01 5.7781789451837540e-02 + <_> + + 0 -1 965 4.0488247759640217e-03 + + 4.6429801732301712e-02 -4.4500553607940674e-01 + <_> + + 0 -1 735 -9.3909690622240305e-04 + + 2.4617424607276917e-01 -9.0848781168460846e-02 + <_> + + 0 -1 989 -5.2673118188977242e-03 + + -6.4129960536956787e-01 3.5207435488700867e-02 + <_> + + 0 -1 806 -6.1755320057272911e-03 + + 1.7039734125137329e-01 -1.3195209205150604e-01 + <_> + + 0 -1 201 1.5832348726689816e-03 + + -9.2635877430438995e-02 2.5755262374877930e-01 + <_> + + 0 -1 914 2.8633023612201214e-03 + + 5.0923369824886322e-02 -4.6171438694000244e-01 + <_> + + 0 -1 12 -2.3722708225250244e-02 + + -4.5609694719314575e-01 4.3677136301994324e-02 + <_> + + 0 -1 419 5.8846692554652691e-03 + + 5.1512561738491058e-02 -4.4899132847785950e-01 + <_> + + 0 -1 201 -8.2513026427477598e-04 + + 2.4914309382438660e-01 -8.9795768260955811e-02 + <_> + + 0 -1 690 -2.9888928402215242e-03 + + -4.0133482217788696e-01 5.5449619889259338e-02 + <_> + + 0 -1 237 1.8384978175163269e-02 + + 4.9513496458530426e-02 -4.2024865746498108e-01 + <_> + + 0 -1 947 -2.4238843470811844e-03 + + -6.7325645685195923e-01 2.8972415253520012e-02 + <_> + + 0 -1 724 8.1563717685639858e-04 + + -1.4400914311408997e-01 1.5184181928634644e-01 + <_> + + 0 -1 315 2.1788734011352062e-03 + + -8.2650899887084961e-02 2.5927037000656128e-01 + <_> + + 0 -1 376 3.7263201083987951e-03 + + -6.3213117420673370e-02 3.8062268495559692e-01 + <_> + + 0 -1 631 3.0819473322480917e-03 + + 3.9066124707460403e-02 -6.2055569887161255e-01 + <_> + + 0 -1 691 2.7417289093136787e-03 + + 3.2166294753551483e-02 -5.6402361392974854e-01 + <_> + + 0 -1 581 -3.8205389864742756e-03 + + 2.5668358802795410e-01 -7.9121366143226624e-02 + <_> + + 0 -1 61 -1.2516178190708160e-02 + + -7.0402121543884277e-01 3.2493114471435547e-02 + <_> + + 0 -1 60 4.6941628679633141e-03 + + 4.7352086752653122e-02 -4.0129581093788147e-01 + <_> + + 0 -1 483 5.0501096993684769e-03 + + -1.0563907027244568e-01 2.3647888004779816e-01 + <_> + + 0 -1 497 1.5111428685486317e-02 + + -6.7443214356899261e-02 2.7579694986343384e-01 + <_> + + 0 -1 423 7.4835181236267090e-02 + + -6.2918186187744141e-02 3.6493194103240967e-01 + <_> + + 0 -1 498 1.3086002320051193e-02 + + 2.9699811711907387e-02 -7.4420636892318726e-01 + <_> + + 0 -1 778 -5.4838880896568298e-03 + + 2.2497597336769104e-01 -8.8018722832202911e-02 + <_> + + 0 -1 261 3.3699360210448503e-03 + + -6.9213069975376129e-02 2.9263094067573547e-01 + <_> + + 0 -1 118 7.7881952747702599e-03 + + 5.8034870773553848e-02 -3.9803403615951538e-01 + <_> + + 0 -1 421 -1.9298251718282700e-02 + + 2.1273820102214813e-01 -9.6075013279914856e-02 + <_> + + 0 -1 440 1.3059679418802261e-02 + + 4.0989801287651062e-02 -4.9787399172782898e-01 + <_> + + 0 -1 510 -2.2303011268377304e-02 + + -6.5915608406066895e-01 2.7258813381195068e-02 + <_> + + 0 -1 260 -5.2872681990265846e-03 + + 2.9461637139320374e-01 -6.9564543664455414e-02 + <_> + + 0 -1 464 6.0780980857089162e-04 + + -9.5468334853649139e-02 2.0951601862907410e-01 + <_> + + 0 -1 444 4.8917778767645359e-03 + + 3.9317954331636429e-02 -5.3803342580795288e-01 + <_> + + 0 -1 238 -1.0402110219001770e-01 + + 5.4199391603469849e-01 -3.9763871580362320e-02 + <_> + + 0 -1 687 3.8908584974706173e-03 + + 3.8185238838195801e-02 -5.3280067443847656e-01 + <_> + + 0 -1 353 8.0125425010919571e-03 + + -7.8310973942279816e-02 2.4926608800888062e-01 + <_> + + 0 -1 954 -3.4356187097728252e-03 + + 2.3415692150592804e-01 -9.2279240489006042e-02 + <_> + + 0 -1 896 -5.2030328661203384e-03 + + -5.0255048274993896e-01 4.4738721102476120e-02 + <_> + + 0 -1 555 -5.5568795651197433e-03 + + 2.8329169750213623e-01 -7.0860259234905243e-02 + <_> + + 0 -1 627 -7.6205702498555183e-03 + + 2.5350978970527649e-01 -7.2612494230270386e-02 + <_> + + 0 -1 309 2.7379104495048523e-01 + + -5.6398060172796249e-02 3.6085364222526550e-01 + <_> + + 0 -1 622 7.3067229241132736e-03 + + -6.2759615480899811e-02 3.1996127963066101e-01 + <_> + + 0 -1 415 3.2574313227087259e-03 + + 4.1181974112987518e-02 -4.9355933070182800e-01 + <_> + + 0 -1 57 -1.2764024734497070e-01 + + 2.5147503614425659e-01 -7.5440123677253723e-02 + <_> + + 0 -1 530 -3.2227888703346252e-02 + + 3.9548832178115845e-01 -4.7284111380577087e-02 + <_> + + 0 -1 764 2.3350853472948074e-02 + + -7.2977773845195770e-02 2.5172060728073120e-01 + <_> + + 0 -1 26 2.7610745746642351e-05 + + -1.3625738024711609e-01 1.3250400125980377e-01 + <_> + + 0 -1 808 6.9611091166734695e-03 + + 2.9794082045555115e-02 -5.8855760097503662e-01 + <_> + + 0 -1 210 -9.9057564511895180e-04 + + 2.5895762443542480e-01 -7.1211874485015869e-02 + <_> + + 0 -1 218 -3.7965672090649605e-03 + + -6.4451014995574951e-01 3.5450231283903122e-02 + <_> + + 0 -1 346 3.9518065750598907e-03 + + -6.3615679740905762e-02 3.0333930253982544e-01 + <_> + + 0 -1 282 -5.4976264946162701e-03 + + -4.3285435438156128e-01 4.7526597976684570e-02 + <_> + + 0 -1 721 7.1266246959567070e-03 + + -6.6810697317123413e-02 2.8491511940956116e-01 + <_> + + 0 -1 912 -3.0366722494363785e-03 + + -4.3046197295188904e-01 4.4313102960586548e-02 + <_> + + 0 -1 714 -1.7097850795835257e-03 + + 2.5873449444770813e-01 -7.3857538402080536e-02 + <_> + + 0 -1 702 -4.4310283847153187e-03 + + 2.1451152861118317e-01 -8.7626561522483826e-02 + <_> + + 0 -1 47 -3.9760642684996128e-03 + + -4.6889033913612366e-01 3.8441929966211319e-02 + <_> + + 0 -1 683 -2.9741778969764709e-02 + + -5.5860131978988647e-01 3.0309556052088737e-02 + <_> + + 0 -1 13 1.3289751112461090e-01 + + 2.8634676709771156e-02 -5.6014162302017212e-01 + <_> + + 0 -1 386 -1.1272695846855640e-03 + + 1.7104774713516235e-01 -1.0818520933389664e-01 + + <_> + 83 + -1.2789946794509888e+00 + + <_> + + 0 -1 649 1.3820428401231766e-02 + + -1.0330537706613541e-01 4.5001628994941711e-01 + <_> + + 0 -1 834 -1.0161036625504494e-02 + + 3.2188063859939575e-01 -1.5805941820144653e-01 + <_> + + 0 -1 398 -3.8372592534869909e-03 + + 3.2943242788314819e-01 -1.1501405388116837e-01 + <_> + + 0 -1 769 3.4624878317117691e-02 + + -9.8698168992996216e-02 5.4050970077514648e-01 + <_> + + 0 -1 437 5.7967011816799641e-03 + + -1.1608023941516876e-01 2.8170758485794067e-01 + <_> + + 0 -1 754 4.7825248911976814e-03 + + -1.3033217191696167e-01 2.4669390916824341e-01 + <_> + + 0 -1 74 7.1141775697469711e-04 + + -2.0435671508312225e-01 1.1761441081762314e-01 + <_> + + 0 -1 22 -2.9168082401156425e-02 + + -6.2692928314208984e-01 5.5113222450017929e-02 + <_> + + 0 -1 796 2.1553519181907177e-03 + + 5.3858544677495956e-02 -4.2096143960952759e-01 + <_> + + 0 -1 894 -2.1254396997392178e-03 + + 4.2603659629821777e-01 -5.0405498594045639e-02 + <_> + + 0 -1 894 8.4234733367338777e-04 + + -9.3583315610885620e-02 2.6316204667091370e-01 + <_> + + 0 -1 948 -1.6576268244534731e-03 + + -3.5802370309829712e-01 6.8603202700614929e-02 + <_> + + 0 -1 554 6.5620511770248413e-02 + + -6.4758449792861938e-02 3.8339248299598694e-01 + <_> + + 0 -1 361 -1.8485928885638714e-03 + + 1.7337062954902649e-01 -1.3676019012928009e-01 + <_> + + 0 -1 305 -1.8170465528964996e-01 + + 4.0350264310836792e-01 -5.3196940571069717e-02 + <_> + + 0 -1 848 -3.4317909739911556e-03 + + -5.2157330513000488e-01 4.6489212661981583e-02 + <_> + + 0 -1 800 -2.7482535224407911e-03 + + -5.1078474521636963e-01 4.3557438999414444e-02 + <_> + + 0 -1 731 -4.7894287854433060e-03 + + 3.4981805086135864e-01 -6.5036587417125702e-02 + <_> + + 0 -1 706 -3.3211666159331799e-03 + + 2.1143883466720581e-01 -1.1754662543535233e-01 + <_> + + 0 -1 677 3.5642951726913452e-02 + + 3.7131600081920624e-02 -6.2165355682373047e-01 + <_> + + 0 -1 481 -3.1561930663883686e-03 + + -4.2197883129119873e-01 4.7645546495914459e-02 + <_> + + 0 -1 872 5.2224877290427685e-03 + + -1.0117106884717941e-01 2.1957167983055115e-01 + <_> + + 0 -1 140 2.5758458301424980e-02 + + -9.6981137990951538e-02 3.0423089861869812e-01 + <_> + + 0 -1 567 2.8883803170174360e-03 + + 4.4947806745767593e-02 -5.5540132522583008e-01 + <_> + + 0 -1 484 2.6014349423348904e-03 + + 4.5947834849357605e-02 -4.1711980104446411e-01 + <_> + + 0 -1 257 -7.8792509157210588e-04 + + 1.5732656419277191e-01 -1.2769798934459686e-01 + <_> + + 0 -1 252 4.2199464514851570e-03 + + -9.4008974730968475e-02 2.6868444681167603e-01 + <_> + + 0 -1 571 -2.4246796965599060e-03 + + -4.9610009789466858e-01 4.6141009777784348e-02 + <_> + + 0 -1 465 -1.8996626604348421e-03 + + 2.6260954141616821e-01 -8.5721127688884735e-02 + <_> + + 0 -1 945 1.8048105994239450e-03 + + 7.1231566369533539e-02 -3.2751160860061646e-01 + <_> + + 0 -1 249 -5.6593962945044041e-03 + + -5.0264769792556763e-01 4.0275387465953827e-02 + <_> + + 0 -1 940 -3.4701074473559856e-03 + + -4.9033272266387939e-01 3.6995064467191696e-02 + <_> + + 0 -1 766 1.1992279905825853e-03 + + -9.3982182443141937e-02 2.2527951002120972e-01 + <_> + + 0 -1 528 -3.3614276908338070e-03 + + 1.5591301023960114e-01 -1.3875743746757507e-01 + <_> + + 0 -1 758 9.2923380434513092e-03 + + 2.8368480503559113e-02 -6.3946157693862915e-01 + <_> + + 0 -1 98 -1.6806223988533020e-01 + + -6.3519150018692017e-01 2.4432161822915077e-02 + <_> + + 0 -1 614 -1.5483988681808114e-03 + + -4.9389392137527466e-01 3.4452050924301147e-02 + <_> + + 0 -1 961 7.9401559196412563e-04 + + -1.6395612061023712e-01 1.1427336186170578e-01 + <_> + + 0 -1 245 -5.3670424968004227e-03 + + -5.4615026712417603e-01 3.2274313271045685e-02 + <_> + + 0 -1 923 -5.1019818056374788e-04 + + 1.4040225744247437e-01 -1.2673649191856384e-01 + <_> + + 0 -1 846 -9.6546392887830734e-04 + + 2.3117446899414062e-01 -7.7826015651226044e-02 + <_> + + 0 -1 994 -9.7423873376101255e-04 + + -4.0673121809959412e-01 4.6749390661716461e-02 + <_> + + 0 -1 970 -4.7841384075582027e-03 + + -5.0288796424865723e-01 3.4186109900474548e-02 + <_> + + 0 -1 89 6.8537802435457706e-03 + + 5.0501946359872818e-02 -3.5414797067642212e-01 + <_> + + 0 -1 651 4.1695050895214081e-03 + + -6.8471699953079224e-02 2.8334242105484009e-01 + <_> + + 0 -1 391 2.6521178369875997e-05 + + -1.7646598815917969e-01 1.0057727992534637e-01 + <_> + + 0 -1 674 -1.8193974392488599e-03 + + -5.2059328556060791e-01 3.4266594797372818e-02 + <_> + + 0 -1 284 1.1680822353810072e-03 + + -7.5169444084167480e-02 2.3740953207015991e-01 + <_> + + 0 -1 284 -5.8111123507842422e-04 + + 2.4673853814601898e-01 -8.9036554098129272e-02 + <_> + + 0 -1 789 5.5753946304321289e-02 + + -4.8898559063673019e-02 3.7110447883605957e-01 + <_> + + 0 -1 388 -6.0947462916374207e-03 + + -4.8019152879714966e-01 3.6990296095609665e-02 + <_> + + 0 -1 988 3.3249799162149429e-03 + + 3.2017692923545837e-02 -4.8544195294380188e-01 + <_> + + 0 -1 586 -1.1994136497378349e-02 + + 2.7767661213874817e-01 -6.2677264213562012e-02 + <_> + + 0 -1 940 1.9462420605123043e-03 + + 5.7167824357748032e-02 -3.2460683584213257e-01 + <_> + + 0 -1 482 -3.5742400214076042e-03 + + 2.1856486797332764e-01 -7.7333562076091766e-02 + <_> + + 0 -1 543 3.4013153053820133e-03 + + -9.4114005565643311e-02 2.3269242048263550e-01 + <_> + + 0 -1 859 6.4494553953409195e-03 + + 3.4765381366014481e-02 -5.1627504825592041e-01 + <_> + + 0 -1 163 -1.2767435982823372e-02 + + 2.5566741824150085e-01 -6.7411571741104126e-02 + <_> + + 0 -1 230 2.2043818607926369e-03 + + -1.3278621435165405e-01 1.7942063510417938e-01 + <_> + + 0 -1 229 -4.0757502429187298e-03 + + -3.8042715191841125e-01 4.4863421469926834e-02 + <_> + + 0 -1 730 2.2066584788262844e-03 + + -7.0331946015357971e-02 2.5572371482849121e-01 + <_> + + 0 -1 700 2.2714279592037201e-02 + + 4.1653785854578018e-02 -4.4101753830909729e-01 + <_> + + 0 -1 749 -1.1373223736882210e-02 + + 3.2443967461585999e-01 -5.8059785515069962e-02 + <_> + + 0 -1 835 1.8165379296988249e-03 + + -7.2351627051830292e-02 2.2953742742538452e-01 + <_> + + 0 -1 235 -2.8745923191308975e-03 + + -3.9090758562088013e-01 4.6148840337991714e-02 + <_> + + 0 -1 673 -5.7676057331264019e-03 + + 2.4503223598003387e-01 -7.2128646075725555e-02 + <_> + + 0 -1 177 1.2852130457758904e-02 + + -1.1143829673528671e-01 1.6758553683757782e-01 + <_> + + 0 -1 141 -4.2651765048503876e-02 + + 2.3846423625946045e-01 -7.9255387187004089e-02 + <_> + + 0 -1 24 -6.8766735494136810e-03 + + -3.9145267009735107e-01 5.2240811288356781e-02 + <_> + + 0 -1 15 -1.5351611375808716e-01 + + -5.4598790407180786e-01 2.9950620606541634e-02 + <_> + + 0 -1 280 -1.7586871981620789e-02 + + 2.4160921573638916e-01 -7.7404774725437164e-02 + <_> + + 0 -1 557 2.8469474054872990e-03 + + -7.1562752127647400e-02 2.3895153403282166e-01 + <_> + + 0 -1 493 -2.6379337534308434e-02 + + 2.7370086312294006e-01 -6.5483018755912781e-02 + <_> + + 0 -1 759 -6.6346197854727507e-04 + + 1.7174075543880463e-01 -1.0841262340545654e-01 + <_> + + 0 -1 736 1.4637422282248735e-03 + + -1.1365657299757004e-01 1.6123561561107635e-01 + <_> + + 0 -1 569 -1.3798776781186461e-03 + + 2.3192690312862396e-01 -7.5626462697982788e-02 + <_> + + 0 -1 516 -6.8256547674536705e-03 + + 2.4984428286552429e-01 -7.2457753121852875e-02 + <_> + + 0 -1 312 -9.0181883424520493e-03 + + 2.0358866453170776e-01 -9.5499873161315918e-02 + <_> + + 0 -1 218 3.1383798923343420e-03 + + 4.0804021060466766e-02 -4.9618390202522278e-01 + <_> + + 0 -1 171 -1.8526764586567879e-02 + + 2.2743205726146698e-01 -8.6628310382366180e-02 + <_> + + 0 -1 594 -2.2562327794730663e-03 + + -3.2850387692451477e-01 5.9250634163618088e-02 + <_> + + 0 -1 432 -4.1183121502399445e-03 + + -5.0281947851181030e-01 3.2455049455165863e-02 + <_> + + 0 -1 96 4.8136096447706223e-03 + + 3.1708184629678726e-02 -4.9248033761978149e-01 + + <_> + 90 + -1.2794928550720215e+00 + + <_> + + 0 -1 568 -4.7569684684276581e-03 + + 4.4339472055435181e-01 -1.0486443340778351e-01 + <_> + + 0 -1 795 -2.5423073675483465e-03 + + 3.9922216534614563e-01 -1.0431514680385590e-01 + <_> + + 0 -1 649 1.1162508279085159e-02 + + -1.5686489641666412e-01 2.3129878938198090e-01 + <_> + + 0 -1 847 1.7287035007029772e-03 + + -1.5123696625232697e-01 2.9676723480224609e-01 + <_> + + 0 -1 265 2.5025676935911179e-02 + + -5.1661748439073563e-02 4.8509848117828369e-01 + <_> + + 0 -1 78 1.2561861425638199e-02 + + -1.1817755550146103e-01 2.6937758922576904e-01 + <_> + + 0 -1 812 4.6598571352660656e-03 + + -1.3565555214881897e-01 2.1206009387969971e-01 + <_> + + 0 -1 434 7.4310216587036848e-04 + + -1.7020516097545624e-01 1.5990819036960602e-01 + <_> + + 0 -1 231 1.0259399190545082e-02 + + -1.4796857535839081e-01 1.8798792362213135e-01 + <_> + + 0 -1 278 -1.2777388095855713e-02 + + -5.4041445255279541e-01 4.8501875251531601e-02 + <_> + + 0 -1 489 -1.1427352204918861e-02 + + -5.1071381568908691e-01 4.8088576644659042e-02 + <_> + + 0 -1 819 2.8340169592411257e-05 + + -2.0961570739746094e-01 1.0582420229911804e-01 + <_> + + 0 -1 325 -6.4714960753917694e-03 + + -5.0862830877304077e-01 4.8812258988618851e-02 + <_> + + 0 -1 367 1.3540303334593773e-02 + + 2.7134107425808907e-02 -7.1317195892333984e-01 + <_> + + 0 -1 210 1.8916794797405601e-03 + + -6.2187314033508301e-02 3.6233416199684143e-01 + <_> + + 0 -1 51 1.0457850992679596e-02 + + 4.0487006306648254e-02 -5.3173840045928955e-01 + <_> + + 0 -1 893 -9.0822251513600349e-04 + + 2.0090451836585999e-01 -1.0807146877050400e-01 + <_> + + 0 -1 535 -1.9299473613500595e-02 + + -6.4914399385452271e-01 4.0790289640426636e-02 + <_> + + 0 -1 663 -8.2283990923315287e-04 + + 1.5708251297473907e-01 -1.3143004477024078e-01 + <_> + + 0 -1 523 3.7520762998610735e-03 + + 3.8761712610721588e-02 -4.9775493144989014e-01 + <_> + + 0 -1 762 8.2424264401197433e-03 + + 3.6369498819112778e-02 -5.1153117418289185e-01 + <_> + + 0 -1 805 -1.1945937294512987e-03 + + 1.3862735033035278e-01 -1.3917639851570129e-01 + <_> + + 0 -1 985 -1.0589268989861012e-02 + + 3.2981950044631958e-01 -7.6042778789997101e-02 + <_> + + 0 -1 128 2.6780981570482254e-02 + + 4.6954374760389328e-02 -4.5390221476554871e-01 + <_> + + 0 -1 705 5.2458671852946281e-03 + + -4.7804936766624451e-02 4.0361502766609192e-01 + <_> + + 0 -1 729 1.0518019553273916e-03 + + -1.0052871704101562e-01 1.9928459823131561e-01 + <_> + + 0 -1 407 3.9210864342749119e-03 + + 3.6381114274263382e-02 -5.4954099655151367e-01 + <_> + + 0 -1 873 -1.5182888135313988e-02 + + 2.8286656737327576e-01 -7.6106920838356018e-02 + <_> + + 0 -1 279 2.7552489191293716e-03 + + -1.2027227133512497e-01 2.0814672112464905e-01 + <_> + + 0 -1 869 1.3051946647465229e-02 + + 3.6561664193868637e-02 -6.8296074867248535e-01 + <_> + + 0 -1 849 4.4104140251874924e-03 + + 2.9448021203279495e-02 -5.9994471073150635e-01 + <_> + + 0 -1 799 2.3885946720838547e-03 + + 3.9816807955503464e-02 -4.6116915345191956e-01 + <_> + + 0 -1 551 2.3683100007474422e-03 + + 4.9801617860794067e-02 -3.9546611905097961e-01 + <_> + + 0 -1 707 -4.1178334504365921e-03 + + 1.6903834044933319e-01 -1.1102814227342606e-01 + <_> + + 0 -1 466 -2.7111368253827095e-03 + + 2.0166625082492828e-01 -9.3054622411727905e-02 + <_> + + 0 -1 360 -2.4442467838525772e-03 + + 1.3419428467750549e-01 -1.4021472632884979e-01 + <_> + + 0 -1 104 -6.9398069754242897e-03 + + -4.7041961550712585e-01 3.8327444344758987e-02 + <_> + + 0 -1 14 -7.5376339256763458e-02 + + 3.5196593403816223e-01 -5.8293107897043228e-02 + <_> + + 0 -1 270 -7.3061959119513631e-04 + + 2.0563322305679321e-01 -9.7862586379051208e-02 + <_> + + 0 -1 339 -4.4864090159535408e-03 + + -4.3219071626663208e-01 4.6815373003482819e-02 + <_> + + 0 -1 679 -3.3369990997016430e-03 + + -5.7968968152999878e-01 3.2250367105007172e-02 + <_> + + 0 -1 636 -5.7756435126066208e-03 + + -6.3823670148849487e-01 2.6716385036706924e-02 + <_> + + 0 -1 352 3.8174313958734274e-03 + + -7.8204549849033356e-02 2.4104152619838715e-01 + <_> + + 0 -1 414 3.9163082838058472e-03 + + 4.0961768478155136e-02 -4.2656800150871277e-01 + <_> + + 0 -1 670 -3.7615487817674875e-03 + + 2.0846015214920044e-01 -8.6097449064254761e-02 + <_> + + 0 -1 371 -9.5803234726190567e-03 + + -7.0837384462356567e-01 2.8397833928465843e-02 + <_> + + 0 -1 93 1.4632595703005791e-02 + + 1.8669826909899712e-02 -7.4236363172531128e-01 + <_> + + 0 -1 234 5.3799869492650032e-03 + + 3.0915707349777222e-02 -4.7074958682060242e-01 + <_> + + 0 -1 701 -2.4318110663443804e-03 + + 3.0304560065269470e-01 -5.6169599294662476e-02 + <_> + + 0 -1 641 3.8594864308834076e-02 + + 2.5472542271018028e-02 -6.8472218513488770e-01 + <_> + + 0 -1 125 1.6673290729522705e-01 + + -5.9959251433610916e-02 2.9591250419616699e-01 + <_> + + 0 -1 854 -5.0129964947700500e-03 + + 1.9718486070632935e-01 -9.4902090728282928e-02 + <_> + + 0 -1 960 -9.3115903437137604e-03 + + 2.8306549787521362e-01 -6.8168632686138153e-02 + <_> + + 0 -1 804 -2.7176579460501671e-03 + + 2.4883794784545898e-01 -7.3830418288707733e-02 + <_> + + 0 -1 787 6.9358374457806349e-04 + + -1.2474948167800903e-01 1.6316886246204376e-01 + <_> + + 0 -1 783 1.3523821253329515e-03 + + -7.3475763201713562e-02 3.0120497941970825e-01 + <_> + + 0 -1 532 -2.6339504867792130e-02 + + 4.7823980450630188e-01 -3.9222836494445801e-02 + <_> + + 0 -1 866 3.3510509878396988e-02 + + -3.8013227283954620e-02 4.1955846548080444e-01 + <_> + + 0 -1 694 -2.8097369067836553e-05 + + 1.2249568104743958e-01 -1.4184975624084473e-01 + <_> + + 0 -1 988 -4.0141213685274124e-03 + + -4.5551317930221558e-01 3.6903131753206253e-02 + <_> + + 0 -1 934 5.7984986342489719e-03 + + 3.9383981376886368e-02 -4.0305584669113159e-01 + <_> + + 0 -1 753 7.5392555445432663e-03 + + -9.3996182084083557e-02 1.8520636856555939e-01 + <_> + + 0 -1 943 4.5007485896348953e-03 + + 4.2565450072288513e-02 -4.0628531575202942e-01 + <_> + + 0 -1 500 5.0333794206380844e-03 + + -6.7051678895950317e-02 2.5224363803863525e-01 + <_> + + 0 -1 511 8.7359821191057563e-04 + + -9.5469102263450623e-02 1.7292767763137817e-01 + <_> + + 0 -1 771 3.0778967775404453e-03 + + -6.1908006668090820e-02 2.5266119837760925e-01 + <_> + + 0 -1 835 -2.2874618880450726e-03 + + 1.9187310338020325e-01 -8.5145145654678345e-02 + <_> + + 0 -1 634 4.0947222150862217e-03 + + 3.0908439308404922e-02 -5.5290663242340088e-01 + <_> + + 0 -1 488 2.1358881145715714e-02 + + 4.0033571422100067e-02 -3.8174301385879517e-01 + <_> + + 0 -1 159 -4.5840246602892876e-03 + + -5.2027910947799683e-01 3.0034648254513741e-02 + <_> + + 0 -1 232 9.8655056208372116e-03 + + 2.1588459610939026e-02 -6.3089925050735474e-01 + <_> + + 0 -1 223 2.5678081437945366e-03 + + -1.1046713590621948e-01 1.4713281393051147e-01 + <_> + + 0 -1 688 -2.6078277733176947e-03 + + 2.7103677392005920e-01 -5.9257075190544128e-02 + <_> + + 0 -1 355 2.6908484287559986e-03 + + 2.7514556422829628e-02 -6.3733005523681641e-01 + <_> + + 0 -1 715 -1.3983637327328324e-03 + + 1.5699537098407745e-01 -1.0462216287851334e-01 + <_> + + 0 -1 433 1.0498151183128357e-01 + + 3.0471364036202431e-02 -4.9990084767341614e-01 + <_> + + 0 -1 491 -1.4592260122299194e-01 + + 3.2007977366447449e-01 -5.2097231149673462e-02 + <_> + + 0 -1 825 7.8754723072052002e-03 + + -6.7778728902339935e-02 2.8044930100440979e-01 + <_> + + 0 -1 262 -5.3792521357536316e-03 + + 2.1354769170284271e-01 -8.2902953028678894e-02 + <_> + + 0 -1 420 -1.0021779686212540e-02 + + 2.5685080885887146e-01 -7.3165819048881531e-02 + <_> + + 0 -1 1 -4.2762188240885735e-03 + + 1.7162682116031647e-01 -9.7696490585803986e-02 + <_> + + 0 -1 67 1.0965526103973389e-02 + + -7.5053967535495758e-02 2.3615135252475739e-01 + <_> + + 0 -1 328 -4.4276113621890545e-03 + + 2.5747051835060120e-01 -6.3898853957653046e-02 + <_> + + 0 -1 276 -8.6840223520994186e-03 + + -4.7478455305099487e-01 3.6790292710065842e-02 + <_> + + 0 -1 938 2.8339526616036892e-03 + + 4.0944386273622513e-02 -3.6514538526535034e-01 + <_> + + 0 -1 790 7.6391562819480896e-02 + + -4.9489263445138931e-02 3.4142583608627319e-01 + <_> + + 0 -1 148 1.9103729864582419e-03 + + -5.6329321116209030e-02 2.9177185893058777e-01 + <_> + + 0 -1 304 5.2499733865261078e-02 + + 2.8848636895418167e-02 -5.9306102991104126e-01 + <_> + + 0 -1 956 -5.0793914124369621e-03 + + -5.0588577985763550e-01 2.8303196653723717e-02 + <_> + + 0 -1 967 -7.1491668932139874e-03 + + -6.2660187482833862e-01 2.3113224655389786e-02 + + <_> + 88 + -1.2153301239013672e+00 + + <_> + + 0 -1 803 3.5730558447539806e-03 + + -4.2218949645757675e-02 5.5067819356918335e-01 + <_> + + 0 -1 520 1.0531613603234291e-02 + + -1.0848262906074524e-01 4.2079353332519531e-01 + <_> + + 0 -1 570 -2.8240748215466738e-03 + + 1.5155430138111115e-01 -2.2742147743701935e-01 + <_> + + 0 -1 384 -1.6008135862648487e-03 + + 2.9879093170166016e-01 -1.0573560744524002e-01 + <_> + + 0 -1 90 -1.2082614004611969e-02 + + 2.5803449749946594e-01 -1.1197961121797562e-01 + <_> + + 0 -1 746 9.8490377422422171e-04 + + -1.8312133848667145e-01 1.3942104578018188e-01 + <_> + + 0 -1 347 1.3184763491153717e-02 + + -1.0306112468242645e-01 2.5403776764869690e-01 + <_> + + 0 -1 143 2.5388993322849274e-02 + + 6.4101323485374451e-02 -4.2444714903831482e-01 + <_> + + 0 -1 196 7.8083951957523823e-03 + + -7.8133262693881989e-02 3.2170715928077698e-01 + <_> + + 0 -1 921 1.2125947978347540e-03 + + -1.4831624925136566e-01 1.6055701673030853e-01 + <_> + + 0 -1 920 -5.7722916826605797e-03 + + -6.2254351377487183e-01 4.7926213592290878e-02 + <_> + + 0 -1 987 -6.7740413360297680e-03 + + -6.4991837739944458e-01 1.9058052450418472e-02 + <_> + + 0 -1 291 -2.8847754001617432e-03 + + -5.1574712991714478e-01 4.2939033359289169e-02 + <_> + + 0 -1 922 -5.1092512905597687e-02 + + -7.1794927120208740e-01 3.0500946566462517e-02 + <_> + + 0 -1 303 -3.0863287393003702e-03 + + -5.1027435064315796e-01 3.7360988557338715e-02 + <_> + + 0 -1 593 -3.1833123648539186e-04 + + 1.1626140773296356e-01 -1.7245446145534515e-01 + <_> + + 0 -1 210 1.2636608444154263e-03 + + -7.4942886829376221e-02 2.7081242203712463e-01 + <_> + + 0 -1 693 -2.7436314150691032e-02 + + -5.7718968391418457e-01 3.3168055117130280e-02 + <_> + + 0 -1 342 -1.8837231909856200e-03 + + -3.0960574746131897e-01 6.1044581234455109e-02 + <_> + + 0 -1 797 3.2289433293044567e-03 + + -6.8203814327716827e-02 2.9658797383308411e-01 + <_> + + 0 -1 503 -3.6236688029021025e-03 + + -4.9605649709701538e-01 4.2492914944887161e-02 + <_> + + 0 -1 135 -1.3776571722701192e-03 + + 1.3447758555412292e-01 -1.3678476214408875e-01 + <_> + + 0 -1 579 2.9051192104816437e-03 + + -1.2944447994232178e-01 1.4306847751140594e-01 + <_> + + 0 -1 722 4.4553354382514954e-03 + + 3.8421813398599625e-02 -4.5035859942436218e-01 + <_> + + 0 -1 622 1.0964765213429928e-02 + + -4.8769049346446991e-02 3.9813303947448730e-01 + <_> + + 0 -1 682 2.8863823972642422e-03 + + 5.1313977688550949e-02 -3.6272794008255005e-01 + <_> + + 0 -1 283 8.8652484118938446e-03 + + -9.4886533915996552e-02 2.1068450808525085e-01 + <_> + + 0 -1 333 -1.9646657630801201e-02 + + 2.2927023470401764e-01 -1.0384474694728851e-01 + <_> + + 0 -1 684 -2.3328745737671852e-03 + + -3.0931735038757324e-01 6.4516365528106689e-02 + <_> + + 0 -1 8 -4.0204055607318878e-02 + + 2.7381995320320129e-01 -7.6448827981948853e-02 + <_> + + 0 -1 100 1.9051276147365570e-02 + + 4.9466736614704132e-02 -3.6089882254600525e-01 + <_> + + 0 -1 936 1.1553505435585976e-02 + + -7.4454858899116516e-02 2.5223839282989502e-01 + <_> + + 0 -1 76 6.0810474678874016e-03 + + 4.9583721905946732e-02 -3.6660569906234741e-01 + <_> + + 0 -1 212 5.4147411137819290e-03 + + 3.2274514436721802e-02 -4.9895319342613220e-01 + <_> + + 0 -1 544 4.6544210053980350e-03 + + 2.5989409536123276e-02 -6.1053085327148438e-01 + <_> + + 0 -1 166 2.4446439929306507e-03 + + -1.2073440849781036e-01 1.4529803395271301e-01 + <_> + + 0 -1 698 4.6318914974108338e-04 + + -1.0553400218486786e-01 1.7337696254253387e-01 + <_> + + 0 -1 642 -3.7485856562852859e-02 + + -4.0581890940666199e-01 4.1759915649890900e-02 + <_> + + 0 -1 529 -2.0438145846128464e-02 + + 2.9171264171600342e-01 -6.6287793219089508e-02 + <_> + + 0 -1 524 -3.8345486391335726e-03 + + 1.5750087797641754e-01 -1.2569475173950195e-01 + <_> + + 0 -1 884 8.8059913832694292e-04 + + -1.0610871762037277e-01 1.7642241716384888e-01 + <_> + + 0 -1 33 2.0514219067990780e-03 + + 3.4303460270166397e-02 -5.5235451459884644e-01 + <_> + + 0 -1 851 -3.5282317548990250e-03 + + -5.3414058685302734e-01 3.0512372031807899e-02 + <_> + + 0 -1 506 6.1051873490214348e-03 + + -8.4812760353088379e-02 1.9969700276851654e-01 + <_> + + 0 -1 137 -6.4141638576984406e-03 + + -4.0772309899330139e-01 4.3864764273166656e-02 + <_> + + 0 -1 823 1.7272554337978363e-02 + + 2.1965105086565018e-02 -6.9809681177139282e-01 + <_> + + 0 -1 512 -1.9691141787916422e-03 + + 1.8511210381984711e-01 -9.0554594993591309e-02 + <_> + + 0 -1 59 -5.5513512343168259e-03 + + -4.2040807008743286e-01 4.0062893182039261e-02 + <_> + + 0 -1 626 -1.1905157566070557e-01 + + -6.4312189817428589e-01 2.3472266271710396e-02 + <_> + + 0 -1 290 4.0823101997375488e-02 + + -7.3068141937255859e-02 2.4851579964160919e-01 + <_> + + 0 -1 119 -8.1011475995182991e-03 + + 2.2747313976287842e-01 -7.5412914156913757e-02 + <_> + + 0 -1 87 4.7750310041010380e-03 + + -7.8901365399360657e-02 2.3182301223278046e-01 + <_> + + 0 -1 404 -2.7586806565523148e-02 + + -6.4926701784133911e-01 2.5375340133905411e-02 + <_> + + 0 -1 907 4.3069543316960335e-03 + + 2.4360222741961479e-02 -5.7372909784317017e-01 + <_> + + 0 -1 385 -6.1931653181090951e-04 + + 2.2557340562343597e-01 -7.5787223875522614e-02 + <_> + + 0 -1 50 -1.1459679901599884e-01 + + 3.0668416619300842e-01 -5.2840072661638260e-02 + <_> + + 0 -1 239 3.1560026109218597e-02 + + -9.5666781067848206e-02 1.7659574747085571e-01 + <_> + + 0 -1 871 1.5142546035349369e-03 + + -9.2694908380508423e-02 2.0833927392959595e-01 + <_> + + 0 -1 731 4.7312509268522263e-03 + + -4.9851816147565842e-02 3.4422698616981506e-01 + <_> + + 0 -1 253 -5.9051956050097942e-03 + + -4.6798244118690491e-01 3.6009732633829117e-02 + <_> + + 0 -1 703 3.3569703809916973e-03 + + -5.1445800811052322e-02 3.3950069546699524e-01 + <_> + + 0 -1 966 -1.1821147799491882e-01 + + 4.6877983212471008e-01 -3.2708466053009033e-02 + <_> + + 0 -1 363 -8.8651233818382025e-04 + + 1.5177871286869049e-01 -1.0880727320909500e-01 + <_> + + 0 -1 680 -2.5330238044261932e-02 + + 1.7184022068977356e-01 -9.8979160189628601e-02 + <_> + + 0 -1 770 5.5901473388075829e-03 + + -7.1004293859004974e-02 2.7359166741371155e-01 + <_> + + 0 -1 189 1.2344302609562874e-02 + + 3.2738436013460159e-02 -5.2876019477844238e-01 + <_> + + 0 -1 348 -7.4871592223644257e-03 + + -5.1955360174179077e-01 2.7597136795520782e-02 + <_> + + 0 -1 646 -2.6753707788884640e-03 + + -4.7180628776550293e-01 3.1411368399858475e-02 + <_> + + 0 -1 168 -3.2419776543974876e-03 + + 1.5980260074138641e-01 -9.5776490867137909e-02 + <_> + + 0 -1 169 8.8083129376173019e-03 + + -8.2104682922363281e-02 2.0850872993469238e-01 + <_> + + 0 -1 58 2.7282098308205605e-03 + + 6.1908718198537827e-02 -2.6338595151901245e-01 + <_> + + 0 -1 671 5.0587565638124943e-03 + + -8.2083821296691895e-02 1.9557759165763855e-01 + <_> + + 0 -1 708 -2.1199107170104980e-02 + + -5.0425887107849121e-01 3.0914928764104843e-02 + <_> + + 0 -1 723 3.4958114847540855e-03 + + -8.2294017076492310e-02 1.9164223968982697e-01 + <_> + + 0 -1 842 1.5914414543658495e-03 + + -6.9352962076663971e-02 2.1474194526672363e-01 + <_> + + 0 -1 193 -5.0045788288116455e-02 + + 2.4582423269748688e-01 -6.2959901988506317e-02 + <_> + + 0 -1 19 -4.1983526200056076e-02 + + -6.3210010528564453e-01 2.5985429063439369e-02 + <_> + + 0 -1 402 -6.9432961754500866e-04 + + 2.2444137930870056e-01 -7.0591680705547333e-02 + <_> + + 0 -1 540 6.0177911072969437e-03 + + 3.7622205913066864e-02 -4.1375440359115601e-01 + <_> + + 0 -1 492 4.7936867922544479e-03 + + -9.0203136205673218e-02 1.7498855292797089e-01 + <_> + + 0 -1 390 -4.7484524548053741e-03 + + -3.9998278021812439e-01 3.8966752588748932e-02 + <_> + + 0 -1 620 -7.7324017882347107e-02 + + -4.8634868860244751e-01 2.9687402769923210e-02 + <_> + + 0 -1 417 1.1184449307620525e-02 + + -4.9598570913076401e-02 3.2780852913856506e-01 + <_> + + 0 -1 132 -1.0921864770352840e-02 + + 1.7756749689579010e-01 -8.5219532251358032e-02 + <_> + + 0 -1 357 4.5135535299777985e-02 + + 2.8995228931307793e-02 -5.3758519887924194e-01 + <_> + + 0 -1 341 -1.1866749264299870e-03 + + 1.8304300308227539e-01 -8.5605643689632416e-02 + <_> + + 0 -1 609 2.0626676268875599e-03 + + 2.5438303127884865e-02 -5.9883767366409302e-01 + <_> + + 0 -1 251 2.7453177608549595e-05 + + -1.3831512629985809e-01 1.0590004175901413e-01 + + <_> + 98 + -1.2823635339736938e+00 + + <_> + + 0 -1 840 -8.7535101920366287e-03 + + 3.7845414876937866e-01 -1.2724789977073669e-01 + <_> + + 0 -1 376 -5.7867290452122688e-03 + + 4.6451708674430847e-01 -1.0028645396232605e-01 + <_> + + 0 -1 467 -1.5636831521987915e-02 + + 2.7137696743011475e-01 -1.3237486779689789e-01 + <_> + + 0 -1 743 7.9419813118875027e-04 + + -2.2457434237003326e-01 1.8765783309936523e-01 + <_> + + 0 -1 511 9.8101666662842035e-04 + + -1.1674020439386368e-01 2.3788549005985260e-01 + <_> + + 0 -1 148 -1.1779682245105505e-03 + + 2.5913080573081970e-01 -8.3949849009513855e-02 + <_> + + 0 -1 330 9.6748135983943939e-03 + + -8.3296068012714386e-02 3.4700453281402588e-01 + <_> + + 0 -1 307 2.9431451112031937e-03 + + 4.6826824545860291e-02 -5.1865130662918091e-01 + <_> + + 0 -1 918 -1.0496248723939061e-03 + + -2.9976195096969604e-01 6.9594070315361023e-02 + <_> + + 0 -1 697 -1.6385620459914207e-02 + + 2.1480703353881836e-01 -9.7807772457599640e-02 + <_> + + 0 -1 910 4.9830954521894455e-03 + + 2.2837642580270767e-02 -7.7743059396743774e-01 + <_> + + 0 -1 796 -3.1421617604792118e-03 + + -5.6898134946823120e-01 3.6988433450460434e-02 + <_> + + 0 -1 901 1.6069117933511734e-02 + + -1.0548119246959686e-01 1.9650301337242126e-01 + <_> + + 0 -1 751 1.5043821185827255e-02 + + -1.0749972611665726e-01 2.0178599655628204e-01 + <_> + + 0 -1 295 6.8444460630416870e-03 + + 5.0306834280490875e-02 -4.3162798881530762e-01 + <_> + + 0 -1 827 1.1850953102111816e-02 + + 3.2905589789152145e-02 -5.1617246866226196e-01 + <_> + + 0 -1 831 2.1246306598186493e-02 + + -6.3726536929607391e-02 3.0544599890708923e-01 + <_> + + 0 -1 256 1.1852337047457695e-02 + + -8.9553833007812500e-02 2.9359081387519836e-01 + <_> + + 0 -1 323 -2.5085010565817356e-03 + + 2.2805334627628326e-01 -9.5263637602329254e-02 + <_> + + 0 -1 752 7.5797801837325096e-03 + + 3.8756053894758224e-02 -5.7552194595336914e-01 + <_> + + 0 -1 86 5.4980744607746601e-03 + + 4.6144284307956696e-02 -3.6506399512290955e-01 + <_> + + 0 -1 208 -3.0190458055585623e-03 + + -2.9709556698799133e-01 7.5851216912269592e-02 + <_> + + 0 -1 552 -7.0441095158457756e-03 + + 1.6086654365062714e-01 -1.1914677917957306e-01 + <_> + + 0 -1 364 -6.9178184494376183e-03 + + -4.1069602966308594e-01 4.4916272163391113e-02 + <_> + + 0 -1 351 5.0740875303745270e-03 + + -7.4677795171737671e-02 2.4945564568042755e-01 + <_> + + 0 -1 121 -1.0403880849480629e-02 + + -5.3336864709854126e-01 3.9480298757553101e-02 + <_> + + 0 -1 323 2.3738082963973284e-03 + + -7.8084513545036316e-02 2.3774850368499756e-01 + <_> + + 0 -1 391 2.7033074729843065e-05 + + -1.8558554351329803e-01 9.6640095114707947e-02 + <_> + + 0 -1 167 2.9049259610474110e-03 + + 4.6409133821725845e-02 -3.9720407128334045e-01 + <_> + + 0 -1 181 -5.6298477575182915e-03 + + -4.5908093452453613e-01 3.7730857729911804e-02 + <_> + + 0 -1 638 5.0751655362546444e-03 + + 2.3507807403802872e-02 -6.4602053165435791e-01 + <_> + + 0 -1 909 -7.5826002284884453e-04 + + 1.2444372475147247e-01 -1.3639765977859497e-01 + <_> + + 0 -1 11 -9.7201213240623474e-02 + + 3.9986947178840637e-01 -4.4366274029016495e-02 + <_> + + 0 -1 496 -2.3840454220771790e-01 + + -5.3094118833541870e-01 3.8410611450672150e-02 + <_> + + 0 -1 114 -1.3428549282252789e-02 + + 2.2794343531131744e-01 -7.7827021479606628e-02 + <_> + + 0 -1 64 -5.0623202696442604e-04 + + 1.5778008103370667e-01 -1.2732668220996857e-01 + <_> + + 0 -1 931 -8.6578715126961470e-04 + + 1.4809772372245789e-01 -1.1785575747489929e-01 + <_> + + 0 -1 544 -2.7892580255866051e-03 + + -4.2324438691139221e-01 4.1194166988134384e-02 + <_> + + 0 -1 654 2.9110969044268131e-03 + + -1.2145258486270905e-01 1.4758351445198059e-01 + <_> + + 0 -1 122 -1.7908504605293274e-01 + + 4.0684828162193298e-01 -4.6298943459987640e-02 + <_> + + 0 -1 894 4.2685694643296301e-04 + + -9.4548642635345459e-02 1.8615303933620453e-01 + <_> + + 0 -1 72 1.9871112704277039e-01 + + -5.6818448007106781e-02 3.2197028398513794e-01 + <_> + + 0 -1 892 1.2496551498770714e-03 + + -7.0664338767528534e-02 2.5729593634605408e-01 + <_> + + 0 -1 447 1.6119793057441711e-02 + + -5.0713617354631424e-02 3.9684635400772095e-01 + <_> + + 0 -1 964 -2.5047704111784697e-03 + + -3.5733562707901001e-01 4.9460943788290024e-02 + <_> + + 0 -1 672 5.2866833284497261e-03 + + 3.2510578632354736e-02 -4.4326359033584595e-01 + <_> + + 0 -1 633 -3.4677600488066673e-03 + + 2.3254001140594482e-01 -7.3516972362995148e-02 + <_> + + 0 -1 600 -3.3557973802089691e-03 + + 2.3221854865550995e-01 -6.9719336926937103e-02 + <_> + + 0 -1 801 -6.3276281580328941e-03 + + -4.0112924575805664e-01 4.3525256216526031e-02 + <_> + + 0 -1 218 -4.3456726707518101e-03 + + -6.8020933866500854e-01 1.9806224852800369e-02 + <_> + + 0 -1 604 6.2400596216320992e-03 + + 1.8352568149566650e-02 -7.0223194360733032e-01 + <_> + + 0 -1 979 3.3795731142163277e-03 + + 4.3487045913934708e-02 -3.0831974744796753e-01 + <_> + + 0 -1 937 1.3499217107892036e-02 + + -4.4923197478055954e-02 3.2624542713165283e-01 + <_> + + 0 -1 408 -1.0585743002593517e-03 + + 1.6033367812633514e-01 -9.8465800285339355e-02 + <_> + + 0 -1 405 -5.3765797056257725e-03 + + 2.6544988155364990e-01 -6.7050188779830933e-02 + <_> + + 0 -1 980 -2.4880110286176205e-03 + + -2.9397118091583252e-01 5.4097402840852737e-02 + <_> + + 0 -1 505 -2.1792344748973846e-02 + + -7.2506862878799438e-01 1.9187789410352707e-02 + <_> + + 0 -1 714 4.7056311741471291e-03 + + -5.2215453237295151e-02 3.1615570187568665e-01 + <_> + + 0 -1 669 -4.2645912617444992e-03 + + 2.3567616939544678e-01 -6.8938009440898895e-02 + <_> + + 0 -1 774 5.8556320145726204e-03 + + 4.2000979185104370e-02 -4.6045160293579102e-01 + <_> + + 0 -1 926 1.3632343616336584e-03 + + -6.5663956105709076e-02 2.3397234082221985e-01 + <_> + + 0 -1 895 -6.0495175421237946e-03 + + -4.3943586945533752e-01 3.6742802709341049e-02 + <_> + + 0 -1 308 6.7223357036709785e-03 + + 1.9922675564885139e-02 -6.8767511844635010e-01 + <_> + + 0 -1 917 -5.1960002630949020e-02 + + -7.5993520021438599e-01 1.5627101063728333e-02 + <_> + + 0 -1 542 3.3762669190764427e-03 + + -7.7943108975887299e-02 1.9545321166515350e-01 + <_> + + 0 -1 582 -1.8302195239812136e-03 + + 1.9154363870620728e-01 -9.4946600496768951e-02 + <_> + + 0 -1 71 -4.3824277818202972e-03 + + -5.3172159194946289e-01 2.8438575565814972e-02 + <_> + + 0 -1 107 4.8605538904666901e-03 + + 1.8084224313497543e-02 -7.0419138669967651e-01 + <_> + + 0 -1 289 -5.0755832344293594e-03 + + 1.3961549103260040e-01 -1.0557857155799866e-01 + <_> + + 0 -1 349 9.0303886681795120e-03 + + -5.6681722402572632e-02 3.0537691712379456e-01 + <_> + + 0 -1 52 1.7635107040405273e-01 + + -3.5581633448600769e-02 3.9358299970626831e-01 + <_> + + 0 -1 728 1.1068049352616072e-03 + + -9.6729792654514313e-02 1.6677951812744141e-01 + <_> + + 0 -1 162 1.1059102602303028e-02 + + 2.9283966869115829e-02 -5.1121145486831665e-01 + <_> + + 0 -1 236 -5.0462923943996429e-02 + + -4.2722624540328979e-01 3.1082244589924812e-02 + <_> + + 0 -1 316 -3.8071773014962673e-03 + + 2.9747742414474487e-01 -5.1289469003677368e-02 + <_> + + 0 -1 373 -1.5183673240244389e-03 + + 1.8215130269527435e-01 -1.0301912575960159e-01 + <_> + + 0 -1 258 2.1069757640361786e-02 + + 2.4503789842128754e-02 -5.8991265296936035e-01 + <_> + + 0 -1 68 6.6435593180358410e-03 + + 4.3313629925251007e-02 -3.1504327058792114e-01 + <_> + + 0 -1 574 -8.2504414021968842e-03 + + -4.7998124361038208e-01 3.0433293431997299e-02 + <_> + + 0 -1 617 -1.0892231017351151e-02 + + 3.1449675559997559e-01 -5.2475348114967346e-02 + <_> + + 0 -1 213 8.1554818898439407e-03 + + 3.9224579930305481e-02 -3.8470247387886047e-01 + <_> + + 0 -1 838 -5.4475883953273296e-03 + + -6.5578418970108032e-01 2.0117431879043579e-02 + <_> + + 0 -1 487 -2.6005427935160697e-04 + + 1.4328984916210175e-01 -9.8999619483947754e-02 + <_> + + 0 -1 461 1.3821206521242857e-03 + + -5.2590593695640564e-02 2.7557003498077393e-01 + <_> + + 0 -1 445 -1.1740636080503464e-02 + + 2.7564841508865356e-01 -5.9799015522003174e-02 + <_> + + 0 -1 941 2.7866149321198463e-03 + + 5.0002526491880417e-02 -3.5232934355735779e-01 + <_> + + 0 -1 962 6.6179647110402584e-03 + + -6.3348092138767242e-02 2.3150660097599030e-01 + <_> + + 0 -1 297 -1.3244405854493380e-03 + + -2.6642721891403198e-01 5.5936500430107117e-02 + <_> + + 0 -1 485 1.1830568313598633e-02 + + -6.9061063230037689e-02 2.1172530949115753e-01 + <_> + + 0 -1 644 2.5925931986421347e-03 + + 1.9716180860996246e-02 -7.7208590507507324e-01 + <_> + + 0 -1 748 -2.8010653331875801e-03 + + 1.3846111297607422e-01 -9.7015053033828735e-02 + <_> + + 0 -1 144 -4.7637272626161575e-02 + + 2.1245625615119934e-01 -7.0445045828819275e-02 + <_> + + 0 -1 197 1.3677144888788462e-03 + + -8.5676178336143494e-02 1.9613882899284363e-01 + <_> + + 0 -1 556 -1.3261453807353973e-01 + + 4.3639957904815674e-01 -3.4653130918741226e-02 + <_> + + 0 -1 69 7.1225965023040771e-01 + + 1.9474601373076439e-02 -8.7232232093811035e-01 + <_> + + 0 -1 149 -5.9057516045868397e-03 + + -3.7135502696037292e-01 3.5206548869609833e-02 + <_> + + 0 -1 971 3.5532126203179359e-03 + + -6.6334858536720276e-02 2.3531165719032288e-01 + <_> + + 0 -1 31 -1.9724387675523758e-02 + + 2.5173032283782959e-01 -5.7575348764657974e-02 + + <_> + 100 + -1.3067311048507690e+00 + + <_> + + 0 -1 458 8.1832958385348320e-03 + + -1.1180391162633896e-01 3.9526882767677307e-01 + <_> + + 0 -1 717 -5.5650249123573303e-03 + + 3.3437621593475342e-01 -1.2654128670692444e-01 + <_> + + 0 -1 577 8.1406952813267708e-04 + + -1.7086146771907806e-01 1.8384252488613129e-01 + <_> + + 0 -1 113 -2.0645279437303543e-03 + + 1.7057111859321594e-01 -1.7103828489780426e-01 + <_> + + 0 -1 864 1.9037863239645958e-03 + + -1.6791534423828125e-01 1.5749432146549225e-01 + <_> + + 0 -1 242 1.1136581189930439e-02 + + 4.0173061192035675e-02 -3.7364640831947327e-01 + <_> + + 0 -1 228 5.6379067245870829e-04 + + -1.6792711615562439e-01 1.4207355678081512e-01 + <_> + + 0 -1 797 -3.3720356877893209e-03 + + 2.5698736310005188e-01 -7.5178287923336029e-02 + <_> + + 0 -1 710 -1.7311582341790199e-02 + + -5.2065086364746094e-01 4.7350786626338959e-02 + <_> + + 0 -1 845 -3.3407085575163364e-03 + + -4.5184752345085144e-01 3.2597322016954422e-02 + <_> + + 0 -1 661 -3.4317255020141602e-02 + + 2.5700893998146057e-01 -8.3455510437488556e-02 + <_> + + 0 -1 423 -6.8267658352851868e-02 + + 2.8288829326629639e-01 -7.8631594777107239e-02 + <_> + + 0 -1 951 2.8722581191686913e-05 + + -1.8466357886791229e-01 1.1576397716999054e-01 + <_> + + 0 -1 267 9.9579263478517532e-03 + + -6.3400641083717346e-02 3.6796927452087402e-01 + <_> + + 0 -1 733 -1.8424488604068756e-02 + + 2.4584248661994934e-01 -9.4283707439899445e-02 + <_> + + 0 -1 837 6.8876314908266068e-03 + + -9.9725127220153809e-02 2.8111982345581055e-01 + <_> + + 0 -1 657 -2.2637452930212021e-03 + + -4.1033151745796204e-01 6.1188895255327225e-02 + <_> + + 0 -1 191 -8.5531552031170577e-05 + + 1.1543370783329010e-01 -1.6276736557483673e-01 + <_> + + 0 -1 32 3.3203132450580597e-02 + + 4.8811107873916626e-02 -3.7535405158996582e-01 + <_> + + 0 -1 929 5.1993243396282196e-03 + + 3.9811953902244568e-02 -4.8758861422538757e-01 + <_> + + 0 -1 365 4.8818998038768768e-03 + + 2.4118293076753616e-02 -6.7809182405471802e-01 + <_> + + 0 -1 82 -7.2956003248691559e-02 + + 1.8825025856494904e-01 -9.5193333923816681e-02 + <_> + + 0 -1 836 9.4123989343643188e-02 + + -7.2761356830596924e-02 2.7999758720397949e-01 + <_> + + 0 -1 718 1.0472428984940052e-03 + + -7.4624419212341309e-02 2.4220877885818481e-01 + <_> + + 0 -1 446 8.0979522317647934e-03 + + -5.4950036108493805e-02 3.0833497643470764e-01 + <_> + + 0 -1 463 -2.8517602477222681e-03 + + 3.2442548871040344e-01 -7.1306072175502777e-02 + <_> + + 0 -1 63 3.7457090802490711e-03 + + 5.7812750339508057e-02 -3.3119776844978333e-01 + <_> + + 0 -1 217 -3.9520347490906715e-03 + + -4.3750977516174316e-01 3.9293695241212845e-02 + <_> + + 0 -1 865 -5.8175362646579742e-03 + + 2.0937338471412659e-01 -8.1724949181079865e-02 + <_> + + 0 -1 878 7.8594256192445755e-03 + + 4.8747915774583817e-02 -4.1596582531929016e-01 + <_> + + 0 -1 913 -6.7130924435332417e-04 + + 1.4715777337551117e-01 -1.2916122376918793e-01 + <_> + + 0 -1 62 -4.2964564636349678e-03 + + -3.5870963335037231e-01 4.8831127583980560e-02 + <_> + + 0 -1 868 -3.8814521394670010e-03 + + -4.7464737296104431e-01 3.4466378390789032e-02 + <_> + + 0 -1 950 -1.8017216352745891e-03 + + -3.5517925024032593e-01 4.9101348966360092e-02 + <_> + + 0 -1 813 7.7566690742969513e-03 + + 2.7035165578126907e-02 -5.5951416492462158e-01 + <_> + + 0 -1 886 1.9125882536172867e-03 + + -6.3309118151664734e-02 2.5223699212074280e-01 + <_> + + 0 -1 886 -9.9804997444152832e-04 + + 2.4349449574947357e-01 -8.9007876813411713e-02 + <_> + + 0 -1 97 -7.5093598570674658e-04 + + 1.3702079653739929e-01 -1.2293258309364319e-01 + <_> + + 0 -1 7 1.0788314975798130e-02 + + -7.3592424392700195e-02 2.3694764077663422e-01 + <_> + + 0 -1 428 -1.2814668007194996e-03 + + 1.7014959454536438e-01 -9.3263216316699982e-02 + <_> + + 0 -1 851 3.5997035447508097e-03 + + 2.4880735203623772e-02 -5.7666695117950439e-01 + <_> + + 0 -1 410 5.9913634322583675e-03 + + -6.6571407020092010e-02 2.3750782012939453e-01 + <_> + + 0 -1 299 3.7381309084594250e-03 + + 3.7266705185174942e-02 -4.3619966506958008e-01 + <_> + + 0 -1 372 8.8815446943044662e-03 + + 3.0544634908437729e-02 -4.6924960613250732e-01 + <_> + + 0 -1 243 -3.1860180199146271e-02 + + -4.8059463500976562e-01 3.1165035441517830e-02 + <_> + + 0 -1 881 -5.4914336651563644e-03 + + 1.7584608495235443e-01 -9.0091012418270111e-02 + <_> + + 0 -1 821 -1.2325609102845192e-02 + + 3.4678825736045837e-01 -5.6969922035932541e-02 + <_> + + 0 -1 281 5.8694169856607914e-03 + + 3.9381653070449829e-02 -4.6237498521804810e-01 + <_> + + 0 -1 207 -5.0925426185131073e-03 + + -4.0191245079040527e-01 4.1170045733451843e-02 + <_> + + 0 -1 636 4.5132841914892197e-03 + + 2.7933681383728981e-02 -4.8419687151908875e-01 + <_> + + 0 -1 665 2.2130757570266724e-02 + + 2.1358741447329521e-02 -6.0434627532958984e-01 + <_> + + 0 -1 597 -1.8624030053615570e-03 + + 1.9556084275245667e-01 -7.8905813395977020e-02 + <_> + + 0 -1 599 3.2466566190123558e-03 + + -8.3141714334487915e-02 2.5859814882278442e-01 + <_> + + 0 -1 575 1.9641252234578133e-02 + + 2.1901637315750122e-02 -7.2247391939163208e-01 + <_> + + 0 -1 271 1.2722628191113472e-02 + + -4.9173772335052490e-02 3.1656193733215332e-01 + <_> + + 0 -1 210 -3.9457585080526769e-04 + + 1.7969387769699097e-01 -1.0087045282125473e-01 + <_> + + 0 -1 88 -3.0111533123999834e-04 + + 1.2916654348373413e-01 -1.5019074082374573e-01 + <_> + + 0 -1 84 -4.1901473887264729e-03 + + 1.6727919876575470e-01 -9.4101771712303162e-02 + <_> + + 0 -1 186 -2.9096096754074097e-02 + + 2.4397623538970947e-01 -6.5033406019210815e-02 + <_> + + 0 -1 815 -3.0687432736158371e-02 + + -5.3695982694625854e-01 3.6870311945676804e-02 + <_> + + 0 -1 596 8.9634142816066742e-02 + + -4.5044522732496262e-02 3.7668040394783020e-01 + <_> + + 0 -1 765 -1.8486939370632172e-02 + + -4.5869186520576477e-01 3.6696173250675201e-02 + <_> + + 0 -1 561 -2.0481455139815807e-03 + + 1.9705456495285034e-01 -8.1085532903671265e-02 + <_> + + 0 -1 160 7.9915560781955719e-03 + + 2.6794398203492165e-02 -6.0658437013626099e-01 + <_> + + 0 -1 368 -4.5167207717895508e-03 + + -3.5664665699005127e-01 4.1606105864048004e-02 + <_> + + 0 -1 429 -8.8896900415420532e-03 + + -5.6794744729995728e-01 2.4264462292194366e-02 + <_> + + 0 -1 601 -2.7863893657922745e-02 + + -6.6293621063232422e-01 1.7915287986397743e-02 + <_> + + 0 -1 153 1.9837494473904371e-03 + + -5.5686347186565399e-02 2.7396288514137268e-01 + <_> + + 0 -1 624 -2.9144049622118473e-03 + + -4.3623712658882141e-01 3.1940482556819916e-02 + <_> + + 0 -1 924 -1.1720246402546763e-03 + + 1.5299941599369049e-01 -8.8886320590972900e-02 + <_> + + 0 -1 927 2.1249109413474798e-03 + + -7.1360021829605103e-02 2.0698173344135284e-01 + <_> + + 0 -1 602 4.6013649553060532e-03 + + 2.5328675284981728e-02 -5.1310408115386963e-01 + <_> + + 0 -1 644 -9.4112986698746681e-04 + + -2.9404127597808838e-01 4.4868268072605133e-02 + <_> + + 0 -1 719 5.2681900560855865e-03 + + -6.4163528382778168e-02 2.2999708354473114e-01 + <_> + + 0 -1 652 1.4232876710593700e-03 + + -7.8037962317466736e-02 1.9061613082885742e-01 + <_> + + 0 -1 858 -1.0191567242145538e-02 + + -5.7409489154815674e-01 2.2581731900572777e-02 + <_> + + 0 -1 547 -4.9564028158783913e-03 + + 2.4646909534931183e-01 -5.9094201773405075e-02 + <_> + + 0 -1 545 2.2057720925658941e-03 + + -9.8776444792747498e-02 1.9191808998584747e-01 + <_> + + 0 -1 809 -4.7279503196477890e-03 + + -2.9638877511024475e-01 4.7132529318332672e-02 + <_> + + 0 -1 905 1.8900397699326277e-03 + + -1.2390431761741638e-01 1.2199163436889648e-01 + <_> + + 0 -1 692 -3.9616838330402970e-04 + + -2.0177872478961945e-01 6.7829817533493042e-02 + <_> + + 0 -1 378 1.5198520850390196e-03 + + -5.0418090075254440e-02 2.8014704585075378e-01 + <_> + + 0 -1 377 -3.0729006975889206e-03 + + 1.6384753584861755e-01 -9.6394442021846771e-02 + <_> + + 0 -1 637 3.3707641065120697e-02 + + 3.3062599599361420e-02 -4.3530252575874329e-01 + <_> + + 0 -1 993 -2.7547087520360947e-03 + + -6.2498420476913452e-01 2.0407166332006454e-02 + <_> + + 0 -1 993 1.0800797026604414e-03 + + 4.3235320597887039e-02 -3.1784874200820923e-01 + <_> + + 0 -1 981 -2.4060246068984270e-03 + + 1.3923163712024689e-01 -9.8239123821258545e-02 + <_> + + 0 -1 727 4.6191983856260777e-03 + + 2.3523205891251564e-02 -6.0865134000778198e-01 + <_> + + 0 -1 284 2.1874131634831429e-03 + + -4.4655255973339081e-02 3.2406413555145264e-01 + <_> + + 0 -1 137 7.9257078468799591e-03 + + 2.8643675148487091e-02 -5.0231784582138062e-01 + <_> + + 0 -1 340 9.6561573445796967e-03 + + -6.7481219768524170e-02 2.0780794322490692e-01 + <_> + + 0 -1 180 -4.3771188706159592e-02 + + 2.0091144740581512e-01 -8.7350860238075256e-02 + <_> + + 0 -1 28 -3.9570517838001251e-02 + + -6.9823634624481201e-01 2.2996466606855392e-02 + <_> + + 0 -1 517 -7.4827047064900398e-03 + + -3.2485857605934143e-01 4.2747449129819870e-02 + <_> + + 0 -1 863 -9.5894857076928020e-04 + + 1.3692225515842438e-01 -1.0624063760042191e-01 + <_> + + 0 -1 495 -5.6482471525669098e-02 + + 2.7130955457687378e-01 -5.5133864283561707e-02 + <_> + + 0 -1 526 -5.5641448125243187e-03 + + -6.5910613536834717e-01 2.6108600199222565e-02 + <_> + + 0 -1 833 4.5432001352310181e-03 + + -1.0277131199836731e-01 1.4715240895748138e-01 + <_> + + 0 -1 804 -1.9441416952759027e-03 + + 1.7929133772850037e-01 -7.8247167170047760e-02 + <_> + + 0 -1 615 1.5584268840029836e-03 + + 5.2101351320743561e-02 -2.7727204561233521e-01 + + <_> + + <_> + 0 0 6 1 -1. + <_> + 3 0 3 1 2. + 0 + <_> + + <_> + 0 0 8 1 -1. + <_> + 4 0 4 1 2. + 0 + <_> + + <_> + 0 0 8 2 -1. + <_> + 4 0 4 2 2. + 0 + <_> + + <_> + 0 0 8 6 -1. + <_> + 0 0 4 3 2. + <_> + 4 3 4 3 2. + 0 + <_> + + <_> + 0 0 8 12 -1. + <_> + 0 0 4 6 2. + <_> + 4 6 4 6 2. + 0 + <_> + + <_> + 0 0 10 1 -1. + <_> + 5 0 5 1 2. + 0 + <_> + + <_> + 0 0 10 6 -1. + <_> + 0 0 5 3 2. + <_> + 5 3 5 3 2. + 0 + <_> + + <_> + 0 0 24 1 -1. + <_> + 6 0 12 1 2. + 0 + <_> + + <_> + 0 0 24 2 -1. + <_> + 6 0 12 2 2. + 0 + <_> + + <_> + 0 0 14 8 -1. + <_> + 0 0 7 4 2. + <_> + 7 4 7 4 2. + 0 + <_> + + <_> + 0 0 16 8 -1. + <_> + 0 0 8 4 2. + <_> + 8 4 8 4 2. + 0 + <_> + + <_> + 0 0 16 10 -1. + <_> + 0 0 8 5 2. + <_> + 8 5 8 5 2. + 0 + <_> + + <_> + 0 0 24 1 -1. + <_> + 12 0 12 1 2. + 0 + <_> + + <_> + 0 0 13 10 -1. + <_> + 0 5 13 5 2. + 0 + <_> + + <_> + 0 1 16 10 -1. + <_> + 0 1 8 5 2. + <_> + 8 6 8 5 2. + 0 + <_> + + <_> + 0 1 13 15 -1. + <_> + 0 6 13 5 3. + 0 + <_> + + <_> + 0 2 8 12 -1. + <_> + 0 2 4 6 2. + <_> + 4 8 4 6 2. + 0 + <_> + + <_> + 0 2 10 4 -1. + <_> + 0 2 5 2 2. + <_> + 5 4 5 2 2. + 0 + <_> + + <_> + 0 4 24 2 -1. + <_> + 0 4 12 1 2. + <_> + 12 5 12 1 2. + 0 + <_> + + <_> + 0 5 4 9 -1. + <_> + 0 8 4 3 3. + 0 + <_> + + <_> + 0 5 24 2 -1. + <_> + 0 5 12 1 2. + <_> + 12 6 12 1 2. + 0 + <_> + + <_> + 0 5 24 4 -1. + <_> + 0 5 12 2 2. + <_> + 12 7 12 2 2. + 0 + <_> + + <_> + 0 6 5 8 -1. + <_> + 0 8 5 4 2. + 0 + <_> + + <_> + 0 6 22 17 -1. + <_> + 11 6 11 17 2. + 0 + <_> + + <_> + 0 6 24 2 -1. + <_> + 0 6 12 1 2. + <_> + 12 7 12 1 2. + 0 + <_> + + <_> + 0 6 14 8 -1. + <_> + 0 10 14 4 2. + 0 + <_> + + <_> + 0 7 2 3 -1. + <_> + 0 8 2 1 3. + 0 + <_> + + <_> + 0 7 6 16 -1. + <_> + 3 7 3 16 2. + 0 + <_> + + <_> + 0 7 4 9 -1. + <_> + 0 10 4 3 3. + 0 + <_> + + <_> + 0 7 8 17 -1. + <_> + 4 7 4 17 2. + 0 + <_> + + <_> + 0 7 24 2 -1. + <_> + 6 7 12 2 2. + 0 + <_> + + <_> + 0 8 4 16 -1. + <_> + 2 8 2 16 2. + 0 + <_> + + <_> + 0 8 24 6 -1. + <_> + 0 8 12 3 2. + <_> + 12 11 12 3 2. + 0 + <_> + + <_> + 0 9 1 3 -1. + <_> + 0 10 1 1 3. + 0 + <_> + + <_> + 0 9 7 2 -1. + <_> + 0 10 7 1 2. + 0 + <_> + + <_> + 0 9 8 2 -1. + <_> + 0 10 8 1 2. + 0 + <_> + + <_> + 0 9 22 2 -1. + <_> + 0 9 11 1 2. + <_> + 11 10 11 1 2. + 0 + <_> + + <_> + 0 9 24 2 -1. + <_> + 0 9 12 1 2. + <_> + 12 10 12 1 2. + 0 + <_> + + <_> + 0 9 24 4 -1. + <_> + 0 9 12 2 2. + <_> + 12 11 12 2 2. + 0 + <_> + + <_> + 0 10 2 2 -1. + <_> + 0 11 2 1 2. + 0 + <_> + + <_> + 0 10 4 10 -1. + <_> + 2 10 2 10 2. + 0 + <_> + + <_> + 0 10 4 3 -1. + <_> + 0 11 4 1 3. + 0 + <_> + + <_> + 0 10 5 3 -1. + <_> + 0 11 5 1 3. + 0 + <_> + + <_> + 0 10 22 2 -1. + <_> + 0 10 11 1 2. + <_> + 11 11 11 1 2. + 0 + <_> + + <_> + 0 10 24 2 -1. + <_> + 0 10 12 1 2. + <_> + 12 11 12 1 2. + 0 + <_> + + <_> + 0 10 24 4 -1. + <_> + 0 10 12 2 2. + <_> + 12 12 12 2 2. + 0 + <_> + + <_> + 0 10 24 14 -1. + <_> + 12 10 12 14 2. + 0 + <_> + + <_> + 0 11 3 3 -1. + <_> + 0 12 3 1 3. + 0 + <_> + + <_> + 0 11 6 8 -1. + <_> + 0 11 3 4 2. + <_> + 3 15 3 4 2. + 0 + <_> + + <_> + 0 11 24 4 -1. + <_> + 0 11 12 2 2. + <_> + 12 13 12 2 2. + 0 + <_> + + <_> + 0 12 18 7 -1. + <_> + 9 12 9 7 2. + 0 + <_> + + <_> + 0 12 22 2 -1. + <_> + 0 12 11 1 2. + <_> + 11 13 11 1 2. + 0 + <_> + + <_> + 0 12 24 6 -1. + <_> + 12 12 12 6 2. + 0 + <_> + + <_> + 0 13 24 3 -1. + <_> + 6 13 12 3 2. + 0 + <_> + + <_> + 0 14 8 7 -1. + <_> + 4 14 4 7 2. + 0 + <_> + + <_> + 0 14 12 10 -1. + <_> + 0 14 6 5 2. + <_> + 6 19 6 5 2. + 0 + <_> + + <_> + 0 14 18 8 -1. + <_> + 6 14 6 8 3. + 0 + <_> + + <_> + 0 14 20 10 -1. + <_> + 10 14 10 10 2. + 0 + <_> + + <_> + 0 15 3 8 -1. + <_> + 1 15 1 8 3. + 0 + <_> + + <_> + 0 16 3 7 -1. + <_> + 1 16 1 7 3. + 0 + <_> + + <_> + 0 19 6 3 -1. + <_> + 0 20 6 1 3. + 0 + <_> + + <_> + 0 19 9 3 -1. + <_> + 0 20 9 1 3. + 0 + <_> + + <_> + 0 21 6 3 -1. + <_> + 0 22 6 1 3. + 0 + <_> + + <_> + 0 21 7 3 -1. + <_> + 0 22 7 1 3. + 0 + <_> + + <_> + 1 0 1 4 -1. + <_> + 1 2 1 2 2. + 0 + <_> + + <_> + 1 0 12 3 -1. + <_> + 4 0 6 3 2. + 0 + <_> + + <_> + 1 0 8 6 -1. + <_> + 1 0 4 3 2. + <_> + 5 3 4 3 2. + 0 + <_> + + <_> + 1 0 8 4 -1. + <_> + 5 0 4 4 2. + 0 + <_> + + <_> + 1 0 22 2 -1. + <_> + 1 0 11 1 2. + <_> + 12 1 11 1 2. + 0 + <_> + + <_> + 1 3 21 15 -1. + <_> + 8 8 7 5 9. + 0 + <_> + + <_> + 1 3 11 3 -1. + <_> + 1 4 11 1 3. + 0 + <_> + + <_> + 1 5 3 3 -1. + <_> + 1 6 3 1 3. + 0 + <_> + + <_> + 1 5 21 6 -1. + <_> + 8 7 7 2 9. + 0 + <_> + + <_> + 1 5 22 2 -1. + <_> + 1 5 11 1 2. + <_> + 12 6 11 1 2. + 0 + <_> + + <_> + 1 6 4 3 -1. + <_> + 1 7 4 1 3. + 0 + <_> + + <_> + 1 6 5 3 -1. + <_> + 1 7 5 1 3. + 0 + <_> + + <_> + 1 6 22 2 -1. + <_> + 1 6 11 1 2. + <_> + 12 7 11 1 2. + 0 + <_> + + <_> + 1 6 22 17 -1. + <_> + 12 6 11 17 2. + 0 + <_> + + <_> + 1 6 20 3 -1. + <_> + 1 7 20 1 3. + 0 + <_> + + <_> + 1 7 12 6 -1. + <_> + 5 9 4 2 9. + 0 + <_> + + <_> + 1 7 8 6 -1. + <_> + 1 9 8 2 3. + 0 + <_> + + <_> + 1 7 20 4 -1. + <_> + 1 7 10 2 2. + <_> + 11 9 10 2 2. + 0 + <_> + + <_> + 1 7 22 12 -1. + <_> + 1 11 22 4 3. + 0 + <_> + + <_> + 1 8 8 2 -1. + <_> + 1 8 4 1 2. + <_> + 5 9 4 1 2. + 0 + <_> + + <_> + 1 8 9 3 -1. + <_> + 1 9 9 1 3. + 0 + <_> + + <_> + 1 8 22 4 -1. + <_> + 1 8 11 2 2. + <_> + 12 10 11 2 2. + 0 + <_> + + <_> + 1 9 20 2 -1. + <_> + 1 9 10 1 2. + <_> + 11 10 10 1 2. + 0 + <_> + + <_> + 1 10 4 3 -1. + <_> + 3 10 2 3 2. + 0 + <_> + + <_> + 1 10 4 4 -1. + <_> + 1 11 4 2 2. + 0 + <_> + + <_> + 1 10 22 2 -1. + <_> + 1 10 11 1 2. + <_> + 12 11 11 1 2. + 0 + <_> + + <_> + 1 10 21 4 -1. + <_> + 1 11 21 2 2. + 0 + <_> + + <_> + 1 11 3 13 -1. + <_> + 2 11 1 13 3. + 0 + <_> + + <_> + 1 13 3 10 -1. + <_> + 2 13 1 10 3. + 0 + <_> + + <_> + 1 14 22 2 -1. + <_> + 1 14 11 1 2. + <_> + 12 15 11 1 2. + 0 + <_> + + <_> + 1 16 3 1 -1. + <_> + 2 17 1 1 3. + 1 + <_> + + <_> + 1 17 4 1 -1. + <_> + 2 18 2 1 2. + 1 + <_> + + <_> + 1 19 4 1 -1. + <_> + 2 20 2 1 2. + 1 + <_> + + <_> + 2 0 4 1 -1. + <_> + 4 0 2 1 2. + 0 + <_> + + <_> + 2 0 12 14 -1. + <_> + 6 0 4 14 3. + 0 + <_> + + <_> + 2 0 20 1 -1. + <_> + 7 0 10 1 2. + 0 + <_> + + <_> + 2 0 22 1 -1. + <_> + 13 0 11 1 2. + 0 + <_> + + <_> + 2 2 22 2 -1. + <_> + 2 2 11 1 2. + <_> + 13 3 11 1 2. + 0 + <_> + + <_> + 2 2 22 10 -1. + <_> + 2 2 11 5 2. + <_> + 13 7 11 5 2. + 0 + <_> + + <_> + 2 3 20 1 -1. + <_> + 7 3 10 1 2. + 0 + <_> + + <_> + 2 3 20 2 -1. + <_> + 2 3 10 1 2. + <_> + 12 4 10 1 2. + 0 + <_> + + <_> + 2 4 3 3 -1. + <_> + 2 5 3 1 3. + 0 + <_> + + <_> + 2 4 20 2 -1. + <_> + 2 4 10 1 2. + <_> + 12 5 10 1 2. + 0 + <_> + + <_> + 2 5 2 3 -1. + <_> + 2 6 2 1 3. + 0 + <_> + + <_> + 2 5 20 2 -1. + <_> + 2 5 10 1 2. + <_> + 12 6 10 1 2. + 0 + <_> + + <_> + 2 6 20 2 -1. + <_> + 2 6 10 1 2. + <_> + 12 7 10 1 2. + 0 + <_> + + <_> + 2 6 21 18 -1. + <_> + 2 15 21 9 2. + 0 + <_> + + <_> + 2 7 6 2 -1. + <_> + 2 7 3 1 2. + <_> + 5 8 3 1 2. + 0 + <_> + + <_> + 2 7 9 6 -1. + <_> + 5 9 3 2 9. + 0 + <_> + + <_> + 2 7 7 3 -1. + <_> + 2 8 7 1 3. + 0 + <_> + + <_> + 2 7 18 2 -1. + <_> + 2 8 18 1 2. + 0 + <_> + + <_> + 2 7 18 3 -1. + <_> + 2 8 18 1 3. + 0 + <_> + + <_> + 2 7 21 4 -1. + <_> + 2 8 21 2 2. + 0 + <_> + + <_> + 2 8 4 2 -1. + <_> + 4 8 2 2 2. + 0 + <_> + + <_> + 2 8 22 2 -1. + <_> + 2 8 11 1 2. + <_> + 13 9 11 1 2. + 0 + <_> + + <_> + 2 9 7 2 -1. + <_> + 2 9 7 1 2. + 1 + <_> + + <_> + 2 9 20 3 -1. + <_> + 2 10 20 1 3. + 0 + <_> + + <_> + 2 11 22 2 -1. + <_> + 2 11 11 1 2. + <_> + 13 12 11 1 2. + 0 + <_> + + <_> + 2 12 22 7 -1. + <_> + 13 12 11 7 2. + 0 + <_> + + <_> + 2 12 19 10 -1. + <_> + 2 17 19 5 2. + 0 + <_> + + <_> + 2 13 3 8 -1. + <_> + 3 13 1 8 3. + 0 + <_> + + <_> + 2 13 20 10 -1. + <_> + 12 13 10 10 2. + 0 + <_> + + <_> + 2 15 6 2 -1. + <_> + 5 15 3 2 2. + 0 + <_> + + <_> + 2 15 6 3 -1. + <_> + 5 15 3 3 2. + 0 + <_> + + <_> + 2 15 20 4 -1. + <_> + 2 15 10 2 2. + <_> + 12 17 10 2 2. + 0 + <_> + + <_> + 2 16 6 6 -1. + <_> + 2 16 3 3 2. + <_> + 5 19 3 3 2. + 0 + <_> + + <_> + 2 17 3 1 -1. + <_> + 3 18 1 1 3. + 1 + <_> + + <_> + 2 18 3 5 -1. + <_> + 3 18 1 5 3. + 0 + <_> + + <_> + 2 21 12 3 -1. + <_> + 8 21 6 3 2. + 0 + <_> + + <_> + 3 2 20 1 -1. + <_> + 3 2 10 1 2. + 1 + <_> + + <_> + 3 3 8 6 -1. + <_> + 5 3 4 6 2. + 0 + <_> + + <_> + 3 4 6 4 -1. + <_> + 3 4 3 2 2. + <_> + 6 6 3 2 2. + 0 + <_> + + <_> + 3 4 18 2 -1. + <_> + 3 4 9 1 2. + <_> + 12 5 9 1 2. + 0 + <_> + + <_> + 3 5 20 2 -1. + <_> + 3 5 10 1 2. + <_> + 13 6 10 1 2. + 0 + <_> + + <_> + 3 5 20 6 -1. + <_> + 3 5 10 3 2. + <_> + 13 8 10 3 2. + 0 + <_> + + <_> + 3 6 3 3 -1. + <_> + 3 7 3 1 3. + 0 + <_> + + <_> + 3 6 16 8 -1. + <_> + 3 8 16 4 2. + 0 + <_> + + <_> + 3 6 19 6 -1. + <_> + 3 8 19 2 3. + 0 + <_> + + <_> + 3 7 5 4 -1. + <_> + 3 8 5 2 2. + 0 + <_> + + <_> + 3 7 18 6 -1. + <_> + 3 7 9 3 2. + <_> + 12 10 9 3 2. + 0 + <_> + + <_> + 3 7 17 6 -1. + <_> + 3 9 17 2 3. + 0 + <_> + + <_> + 3 7 19 2 -1. + <_> + 3 8 19 1 2. + 0 + <_> + + <_> + 3 8 18 4 -1. + <_> + 3 8 9 2 2. + <_> + 12 10 9 2 2. + 0 + <_> + + <_> + 3 8 20 4 -1. + <_> + 3 8 10 2 2. + <_> + 13 10 10 2 2. + 0 + <_> + + <_> + 3 9 3 1 -1. + <_> + 4 9 1 1 3. + 0 + <_> + + <_> + 3 9 3 3 -1. + <_> + 4 10 1 3 3. + 1 + <_> + + <_> + 3 9 8 9 -1. + <_> + 3 12 8 3 3. + 0 + <_> + + <_> + 3 9 20 2 -1. + <_> + 3 9 10 1 2. + <_> + 13 10 10 1 2. + 0 + <_> + + <_> + 3 9 19 9 -1. + <_> + 3 12 19 3 3. + 0 + <_> + + <_> + 3 10 3 1 -1. + <_> + 4 10 1 1 3. + 0 + <_> + + <_> + 3 10 3 1 -1. + <_> + 4 11 1 1 3. + 1 + <_> + + <_> + 3 10 3 2 -1. + <_> + 4 11 1 2 3. + 1 + <_> + + <_> + 3 10 2 4 -1. + <_> + 3 11 2 2 2. + 0 + <_> + + <_> + 3 10 8 3 -1. + <_> + 3 11 8 1 3. + 0 + <_> + + <_> + 3 10 18 4 -1. + <_> + 3 10 9 2 2. + <_> + 12 12 9 2 2. + 0 + <_> + + <_> + 3 11 3 1 -1. + <_> + 4 12 1 1 3. + 1 + <_> + + <_> + 3 11 3 8 -1. + <_> + 4 11 1 8 3. + 0 + <_> + + <_> + 3 11 4 8 -1. + <_> + 3 15 4 4 2. + 0 + <_> + + <_> + 3 11 18 2 -1. + <_> + 3 11 9 1 2. + <_> + 12 12 9 1 2. + 0 + <_> + + <_> + 3 11 10 2 -1. + <_> + 3 11 10 1 2. + 1 + <_> + + <_> + 3 12 3 2 -1. + <_> + 4 13 1 2 3. + 1 + <_> + + <_> + 3 12 8 12 -1. + <_> + 3 16 8 4 3. + 0 + <_> + + <_> + 3 15 4 3 -1. + <_> + 5 15 2 3 2. + 0 + <_> + + <_> + 3 16 3 1 -1. + <_> + 4 17 1 1 3. + 1 + <_> + + <_> + 3 16 6 4 -1. + <_> + 3 16 3 2 2. + <_> + 6 18 3 2 2. + 0 + <_> + + <_> + 3 16 8 6 -1. + <_> + 3 16 4 3 2. + <_> + 7 19 4 3 2. + 0 + <_> + + <_> + 3 20 3 4 -1. + <_> + 4 20 1 4 3. + 0 + <_> + + <_> + 4 0 6 4 -1. + <_> + 6 2 2 4 3. + 1 + <_> + + <_> + 4 2 3 2 -1. + <_> + 5 2 1 2 3. + 0 + <_> + + <_> + 4 2 16 2 -1. + <_> + 4 2 8 1 2. + <_> + 12 3 8 1 2. + 0 + <_> + + <_> + 4 3 6 1 -1. + <_> + 6 3 2 1 3. + 0 + <_> + + <_> + 4 3 9 3 -1. + <_> + 7 3 3 3 3. + 0 + <_> + + <_> + 4 3 16 2 -1. + <_> + 4 3 8 1 2. + <_> + 12 4 8 1 2. + 0 + <_> + + <_> + 4 3 9 6 -1. + <_> + 4 6 9 3 2. + 0 + <_> + + <_> + 4 3 16 8 -1. + <_> + 4 7 16 4 2. + 0 + <_> + + <_> + 4 4 1 4 -1. + <_> + 4 6 1 2 2. + 0 + <_> + + <_> + 4 4 9 4 -1. + <_> + 7 7 3 4 3. + 1 + <_> + + <_> + 4 4 16 2 -1. + <_> + 4 4 8 1 2. + <_> + 12 5 8 1 2. + 0 + <_> + + <_> + 4 4 18 6 -1. + <_> + 4 6 18 2 3. + 0 + <_> + + <_> + 4 4 20 6 -1. + <_> + 4 6 20 2 3. + 0 + <_> + + <_> + 4 5 4 5 -1. + <_> + 6 5 2 5 2. + 0 + <_> + + <_> + 4 5 16 6 -1. + <_> + 4 5 8 3 2. + <_> + 12 8 8 3 2. + 0 + <_> + + <_> + 4 5 15 6 -1. + <_> + 4 7 15 2 3. + 0 + <_> + + <_> + 4 6 1 3 -1. + <_> + 4 7 1 1 3. + 0 + <_> + + <_> + 4 6 2 3 -1. + <_> + 4 7 2 1 3. + 0 + <_> + + <_> + 4 6 6 2 -1. + <_> + 6 6 2 2 3. + 0 + <_> + + <_> + 4 6 3 3 -1. + <_> + 4 7 3 1 3. + 0 + <_> + + <_> + 4 6 6 2 -1. + <_> + 4 6 3 1 2. + <_> + 7 7 3 1 2. + 0 + <_> + + <_> + 4 7 4 3 -1. + <_> + 4 8 4 1 3. + 0 + <_> + + <_> + 4 7 15 6 -1. + <_> + 4 9 15 2 3. + 0 + <_> + + <_> + 4 7 16 6 -1. + <_> + 4 9 16 2 3. + 0 + <_> + + <_> + 4 7 17 3 -1. + <_> + 4 8 17 1 3. + 0 + <_> + + <_> + 4 8 3 3 -1. + <_> + 5 9 1 1 9. + 0 + <_> + + <_> + 4 8 2 3 -1. + <_> + 4 9 2 1 3. + 0 + <_> + + <_> + 4 8 5 4 -1. + <_> + 4 9 5 2 2. + 0 + <_> + + <_> + 4 8 18 4 -1. + <_> + 4 8 9 2 2. + <_> + 13 10 9 2 2. + 0 + <_> + + <_> + 4 9 2 1 -1. + <_> + 5 9 1 1 2. + 0 + <_> + + <_> + 4 9 3 1 -1. + <_> + 5 9 1 1 3. + 0 + <_> + + <_> + 4 9 2 2 -1. + <_> + 4 9 1 1 2. + <_> + 5 10 1 1 2. + 0 + <_> + + <_> + 4 9 2 4 -1. + <_> + 4 9 1 2 2. + <_> + 5 11 1 2 2. + 0 + <_> + + <_> + 4 9 3 2 -1. + <_> + 4 9 3 1 2. + 1 + <_> + + <_> + 4 9 6 6 -1. + <_> + 4 9 3 3 2. + <_> + 7 12 3 3 2. + 0 + <_> + + <_> + 4 9 16 1 -1. + <_> + 8 9 8 1 2. + 0 + <_> + + <_> + 4 9 16 2 -1. + <_> + 4 9 8 1 2. + <_> + 12 10 8 1 2. + 0 + <_> + + <_> + 4 9 18 2 -1. + <_> + 4 9 9 1 2. + <_> + 13 10 9 1 2. + 0 + <_> + + <_> + 4 9 11 4 -1. + <_> + 4 9 11 2 2. + 1 + <_> + + <_> + 4 10 2 2 -1. + <_> + 4 10 1 1 2. + <_> + 5 11 1 1 2. + 0 + <_> + + <_> + 4 10 3 1 -1. + <_> + 5 11 1 1 3. + 1 + <_> + + <_> + 4 10 3 2 -1. + <_> + 5 11 1 2 3. + 1 + <_> + + <_> + 4 10 3 14 -1. + <_> + 5 10 1 14 3. + 0 + <_> + + <_> + 4 10 9 4 -1. + <_> + 4 10 9 2 2. + 1 + <_> + + <_> + 4 10 10 4 -1. + <_> + 4 10 10 2 2. + 1 + <_> + + <_> + 4 10 16 6 -1. + <_> + 4 12 16 2 3. + 0 + <_> + + <_> + 4 11 3 1 -1. + <_> + 5 12 1 1 3. + 1 + <_> + + <_> + 4 11 3 2 -1. + <_> + 5 11 1 2 3. + 0 + <_> + + <_> + 4 11 3 4 -1. + <_> + 5 11 1 4 3. + 0 + <_> + + <_> + 4 11 3 10 -1. + <_> + 4 16 3 5 2. + 0 + <_> + + <_> + 4 12 3 1 -1. + <_> + 5 13 1 1 3. + 1 + <_> + + <_> + 4 12 3 2 -1. + <_> + 5 12 1 2 3. + 0 + <_> + + <_> + 4 12 1 6 -1. + <_> + 4 15 1 3 2. + 0 + <_> + + <_> + 4 12 2 8 -1. + <_> + 4 16 2 4 2. + 0 + <_> + + <_> + 4 13 3 1 -1. + <_> + 5 13 1 1 3. + 0 + <_> + + <_> + 4 13 4 3 -1. + <_> + 6 13 2 3 2. + 0 + <_> + + <_> + 4 13 9 5 -1. + <_> + 7 13 3 5 3. + 0 + <_> + + <_> + 4 14 4 1 -1. + <_> + 6 14 2 1 2. + 0 + <_> + + <_> + 4 15 3 2 -1. + <_> + 5 16 1 2 3. + 1 + <_> + + <_> + 4 15 4 3 -1. + <_> + 6 15 2 3 2. + 0 + <_> + + <_> + 4 15 9 4 -1. + <_> + 7 15 3 4 3. + 0 + <_> + + <_> + 4 15 4 4 -1. + <_> + 4 16 4 2 2. + 0 + <_> + + <_> + 4 17 3 1 -1. + <_> + 5 18 1 1 3. + 1 + <_> + + <_> + 4 18 3 6 -1. + <_> + 5 18 1 6 3. + 0 + <_> + + <_> + 4 20 3 4 -1. + <_> + 5 20 1 4 3. + 0 + <_> + + <_> + 5 0 6 18 -1. + <_> + 7 0 2 18 3. + 0 + <_> + + <_> + 5 2 4 12 -1. + <_> + 7 2 2 12 2. + 0 + <_> + + <_> + 5 2 14 2 -1. + <_> + 5 2 7 2 2. + 1 + <_> + + <_> + 5 2 15 6 -1. + <_> + 5 5 15 3 2. + 0 + <_> + + <_> + 5 3 1 3 -1. + <_> + 4 4 1 1 3. + 1 + <_> + + <_> + 5 3 2 3 -1. + <_> + 4 4 2 1 3. + 1 + <_> + + <_> + 5 3 4 9 -1. + <_> + 7 3 2 9 2. + 0 + <_> + + <_> + 5 3 9 3 -1. + <_> + 8 4 3 1 9. + 0 + <_> + + <_> + 5 3 14 2 -1. + <_> + 5 3 7 1 2. + <_> + 12 4 7 1 2. + 0 + <_> + + <_> + 5 4 2 3 -1. + <_> + 4 5 2 1 3. + 1 + <_> + + <_> + 5 4 16 2 -1. + <_> + 5 4 8 1 2. + <_> + 13 5 8 1 2. + 0 + <_> + + <_> + 5 5 1 3 -1. + <_> + 4 6 1 1 3. + 1 + <_> + + <_> + 5 5 4 9 -1. + <_> + 5 8 4 3 3. + 0 + <_> + + <_> + 5 5 14 2 -1. + <_> + 5 5 7 1 2. + <_> + 12 6 7 1 2. + 0 + <_> + + <_> + 5 5 15 6 -1. + <_> + 5 7 15 2 3. + 0 + <_> + + <_> + 5 6 1 2 -1. + <_> + 5 7 1 1 2. + 0 + <_> + + <_> + 5 6 4 4 -1. + <_> + 5 7 4 2 2. + 0 + <_> + + <_> + 5 6 14 2 -1. + <_> + 5 6 7 1 2. + <_> + 12 7 7 1 2. + 0 + <_> + + <_> + 5 6 14 4 -1. + <_> + 5 7 14 2 2. + 0 + <_> + + <_> + 5 6 14 6 -1. + <_> + 5 8 14 2 3. + 0 + <_> + + <_> + 5 6 15 4 -1. + <_> + 5 7 15 2 2. + 0 + <_> + + <_> + 5 7 1 3 -1. + <_> + 5 8 1 1 3. + 0 + <_> + + <_> + 5 7 4 15 -1. + <_> + 6 7 2 15 2. + 0 + <_> + + <_> + 5 7 4 1 -1. + <_> + 7 7 2 1 2. + 0 + <_> + + <_> + 5 7 3 2 -1. + <_> + 5 8 3 1 2. + 0 + <_> + + <_> + 5 7 3 3 -1. + <_> + 5 8 3 1 3. + 0 + <_> + + <_> + 5 7 3 4 -1. + <_> + 5 8 3 2 2. + 0 + <_> + + <_> + 5 7 3 6 -1. + <_> + 5 9 3 2 3. + 0 + <_> + + <_> + 5 7 4 4 -1. + <_> + 5 9 4 2 2. + 0 + <_> + + <_> + 5 7 4 6 -1. + <_> + 5 9 4 2 3. + 0 + <_> + + <_> + 5 7 16 4 -1. + <_> + 5 7 8 2 2. + <_> + 13 9 8 2 2. + 0 + <_> + + <_> + 5 7 14 2 -1. + <_> + 5 8 14 1 2. + 0 + <_> + + <_> + 5 7 16 6 -1. + <_> + 5 9 16 2 3. + 0 + <_> + + <_> + 5 8 1 3 -1. + <_> + 5 9 1 1 3. + 0 + <_> + + <_> + 5 8 2 2 -1. + <_> + 5 8 1 1 2. + <_> + 6 9 1 1 2. + 0 + <_> + + <_> + 5 8 3 3 -1. + <_> + 4 9 3 1 3. + 1 + <_> + + <_> + 5 8 3 4 -1. + <_> + 4 9 3 2 2. + 1 + <_> + + <_> + 5 8 4 4 -1. + <_> + 5 9 4 2 2. + 0 + <_> + + <_> + 5 8 4 3 -1. + <_> + 4 9 4 1 3. + 1 + <_> + + <_> + 5 8 14 2 -1. + <_> + 5 8 7 1 2. + <_> + 12 9 7 1 2. + 0 + <_> + + <_> + 5 8 16 2 -1. + <_> + 5 8 8 1 2. + <_> + 13 9 8 1 2. + 0 + <_> + + <_> + 5 8 13 16 -1. + <_> + 5 12 13 8 2. + 0 + <_> + + <_> + 5 9 4 4 -1. + <_> + 7 9 2 4 2. + 0 + <_> + + <_> + 5 9 4 3 -1. + <_> + 5 10 4 1 3. + 0 + <_> + + <_> + 5 9 4 4 -1. + <_> + 5 9 4 2 2. + 1 + <_> + + <_> + 5 9 14 2 -1. + <_> + 5 9 7 1 2. + <_> + 12 10 7 1 2. + 0 + <_> + + <_> + 5 9 16 2 -1. + <_> + 5 9 8 1 2. + <_> + 13 10 8 1 2. + 0 + <_> + + <_> + 5 9 15 3 -1. + <_> + 5 10 15 1 3. + 0 + <_> + + <_> + 5 10 2 2 -1. + <_> + 5 10 1 1 2. + <_> + 6 11 1 1 2. + 0 + <_> + + <_> + 5 10 3 1 -1. + <_> + 6 11 1 1 3. + 1 + <_> + + <_> + 5 10 3 14 -1. + <_> + 6 10 1 14 3. + 0 + <_> + + <_> + 5 10 4 3 -1. + <_> + 7 10 2 3 2. + 0 + <_> + + <_> + 5 10 12 4 -1. + <_> + 9 10 4 4 3. + 0 + <_> + + <_> + 5 10 14 3 -1. + <_> + 5 11 14 1 3. + 0 + <_> + + <_> + 5 10 16 8 -1. + <_> + 5 12 16 4 2. + 0 + <_> + + <_> + 5 11 3 2 -1. + <_> + 6 11 1 2 3. + 0 + <_> + + <_> + 5 11 9 4 -1. + <_> + 5 11 9 2 2. + 1 + <_> + + <_> + 5 12 3 2 -1. + <_> + 6 12 1 2 3. + 0 + <_> + + <_> + 5 12 14 2 -1. + <_> + 5 12 7 1 2. + <_> + 12 13 7 1 2. + 0 + <_> + + <_> + 5 13 14 2 -1. + <_> + 5 13 7 1 2. + <_> + 12 14 7 1 2. + 0 + <_> + + <_> + 5 13 14 10 -1. + <_> + 5 18 14 5 2. + 0 + <_> + + <_> + 5 15 4 1 -1. + <_> + 6 16 2 1 2. + 1 + <_> + + <_> + 5 15 3 2 -1. + <_> + 6 16 1 2 3. + 1 + <_> + + <_> + 5 19 3 4 -1. + <_> + 6 19 1 4 3. + 0 + <_> + + <_> + 5 20 3 4 -1. + <_> + 6 20 1 4 3. + 0 + <_> + + <_> + 6 1 6 11 -1. + <_> + 8 1 2 11 3. + 0 + <_> + + <_> + 6 1 12 2 -1. + <_> + 6 1 6 1 2. + <_> + 12 2 6 1 2. + 0 + <_> + + <_> + 6 2 1 3 -1. + <_> + 5 3 1 1 3. + 1 + <_> + + <_> + 6 2 4 6 -1. + <_> + 6 2 4 3 2. + 1 + <_> + + <_> + 6 2 12 6 -1. + <_> + 6 2 6 6 2. + 1 + <_> + + <_> + 6 3 1 2 -1. + <_> + 6 3 1 1 2. + 1 + <_> + + <_> + 6 3 1 3 -1. + <_> + 5 4 1 1 3. + 1 + <_> + + <_> + 6 3 6 1 -1. + <_> + 8 3 2 1 3. + 0 + <_> + + <_> + 6 3 18 21 -1. + <_> + 15 3 9 21 2. + 0 + <_> + + <_> + 6 4 1 3 -1. + <_> + 5 5 1 1 3. + 1 + <_> + + <_> + 6 4 4 3 -1. + <_> + 6 5 4 1 3. + 0 + <_> + + <_> + 6 4 5 4 -1. + <_> + 5 5 5 2 2. + 1 + <_> + + <_> + 6 4 6 3 -1. + <_> + 6 5 6 1 3. + 0 + <_> + + <_> + 6 5 1 3 -1. + <_> + 5 6 1 1 3. + 1 + <_> + + <_> + 6 5 3 2 -1. + <_> + 7 5 1 2 3. + 0 + <_> + + <_> + 6 5 3 3 -1. + <_> + 7 5 1 3 3. + 0 + <_> + + <_> + 6 5 12 2 -1. + <_> + 6 5 6 1 2. + <_> + 12 6 6 1 2. + 0 + <_> + + <_> + 6 6 10 2 -1. + <_> + 6 6 5 1 2. + <_> + 11 7 5 1 2. + 0 + <_> + + <_> + 6 6 5 3 -1. + <_> + 5 7 5 1 3. + 1 + <_> + + <_> + 6 7 1 3 -1. + <_> + 6 8 1 1 3. + 0 + <_> + + <_> + 6 7 1 6 -1. + <_> + 6 9 1 2 3. + 0 + <_> + + <_> + 6 7 2 2 -1. + <_> + 6 8 2 1 2. + 0 + <_> + + <_> + 6 7 2 3 -1. + <_> + 6 8 2 1 3. + 0 + <_> + + <_> + 6 7 3 6 -1. + <_> + 6 9 3 2 3. + 0 + <_> + + <_> + 6 7 12 2 -1. + <_> + 6 7 6 1 2. + <_> + 12 8 6 1 2. + 0 + <_> + + <_> + 6 8 3 1 -1. + <_> + 7 9 1 1 3. + 1 + <_> + + <_> + 6 8 2 3 -1. + <_> + 6 9 2 1 3. + 0 + <_> + + <_> + 6 8 2 3 -1. + <_> + 5 9 2 1 3. + 1 + <_> + + <_> + 6 8 3 4 -1. + <_> + 6 9 3 2 2. + 0 + <_> + + <_> + 6 8 3 3 -1. + <_> + 5 9 3 1 3. + 1 + <_> + + <_> + 6 8 12 3 -1. + <_> + 9 8 6 3 2. + 0 + <_> + + <_> + 6 8 12 2 -1. + <_> + 6 8 6 1 2. + <_> + 12 9 6 1 2. + 0 + <_> + + <_> + 6 8 13 6 -1. + <_> + 6 10 13 2 3. + 0 + <_> + + <_> + 6 9 2 2 -1. + <_> + 6 9 1 2 2. + 1 + <_> + + <_> + 6 9 12 1 -1. + <_> + 9 9 6 1 2. + 0 + <_> + + <_> + 6 9 12 2 -1. + <_> + 9 9 6 2 2. + 0 + <_> + + <_> + 6 9 12 3 -1. + <_> + 9 9 6 3 2. + 0 + <_> + + <_> + 6 9 12 2 -1. + <_> + 10 9 4 2 3. + 0 + <_> + + <_> + 6 9 12 2 -1. + <_> + 6 9 6 1 2. + <_> + 12 10 6 1 2. + 0 + <_> + + <_> + 6 9 12 3 -1. + <_> + 6 10 12 1 3. + 0 + <_> + + <_> + 6 10 1 3 -1. + <_> + 6 11 1 1 3. + 0 + <_> + + <_> + 6 10 2 3 -1. + <_> + 7 10 1 3 2. + 0 + <_> + + <_> + 6 10 2 4 -1. + <_> + 7 10 1 4 2. + 0 + <_> + + <_> + 6 10 2 3 -1. + <_> + 6 11 2 1 3. + 0 + <_> + + <_> + 6 10 2 4 -1. + <_> + 6 11 2 2 2. + 0 + <_> + + <_> + 6 10 3 3 -1. + <_> + 6 11 3 1 3. + 0 + <_> + + <_> + 6 10 12 1 -1. + <_> + 9 10 6 1 2. + 0 + <_> + + <_> + 6 10 12 2 -1. + <_> + 6 10 6 1 2. + <_> + 12 11 6 1 2. + 0 + <_> + + <_> + 6 10 13 3 -1. + <_> + 6 11 13 1 3. + 0 + <_> + + <_> + 6 11 2 3 -1. + <_> + 6 12 2 1 3. + 0 + <_> + + <_> + 6 11 3 2 -1. + <_> + 6 12 3 1 2. + 0 + <_> + + <_> + 6 11 3 3 -1. + <_> + 6 12 3 1 3. + 0 + <_> + + <_> + 6 11 13 3 -1. + <_> + 6 12 13 1 3. + 0 + <_> + + <_> + 6 13 7 4 -1. + <_> + 6 13 7 2 2. + 1 + <_> + + <_> + 6 14 1 3 -1. + <_> + 6 15 1 1 3. + 0 + <_> + + <_> + 6 15 3 4 -1. + <_> + 7 16 1 4 3. + 1 + <_> + + <_> + 6 15 6 3 -1. + <_> + 6 15 3 3 2. + 1 + <_> + + <_> + 6 18 3 1 -1. + <_> + 7 19 1 1 3. + 1 + <_> + + <_> + 6 19 3 5 -1. + <_> + 7 19 1 5 3. + 0 + <_> + + <_> + 7 0 3 4 -1. + <_> + 7 0 3 2 2. + 1 + <_> + + <_> + 7 0 4 2 -1. + <_> + 7 0 4 1 2. + 1 + <_> + + <_> + 7 0 10 1 -1. + <_> + 12 0 5 1 2. + 0 + <_> + + <_> + 7 1 2 6 -1. + <_> + 7 1 1 3 2. + <_> + 8 4 1 3 2. + 0 + <_> + + <_> + 7 1 10 1 -1. + <_> + 12 1 5 1 2. + 0 + <_> + + <_> + 7 2 1 3 -1. + <_> + 6 3 1 1 3. + 1 + <_> + + <_> + 7 2 1 4 -1. + <_> + 6 3 1 2 2. + 1 + <_> + + <_> + 7 2 3 4 -1. + <_> + 6 3 3 2 2. + 1 + <_> + + <_> + 7 2 6 3 -1. + <_> + 7 3 6 1 3. + 0 + <_> + + <_> + 7 2 13 10 -1. + <_> + 7 7 13 5 2. + 0 + <_> + + <_> + 7 3 1 3 -1. + <_> + 6 4 1 1 3. + 1 + <_> + + <_> + 7 3 2 4 -1. + <_> + 6 4 2 2 2. + 1 + <_> + + <_> + 7 3 4 2 -1. + <_> + 7 3 4 1 2. + 1 + <_> + + <_> + 7 4 3 3 -1. + <_> + 8 4 1 3 3. + 0 + <_> + + <_> + 7 4 10 2 -1. + <_> + 7 4 5 1 2. + <_> + 12 5 5 1 2. + 0 + <_> + + <_> + 7 5 3 2 -1. + <_> + 8 5 1 2 3. + 0 + <_> + + <_> + 7 5 3 3 -1. + <_> + 8 5 1 3 3. + 0 + <_> + + <_> + 7 5 3 5 -1. + <_> + 8 5 1 5 3. + 0 + <_> + + <_> + 7 6 3 1 -1. + <_> + 8 6 1 1 3. + 0 + <_> + + <_> + 7 6 1 4 -1. + <_> + 7 6 1 2 2. + 1 + <_> + + <_> + 7 6 6 10 -1. + <_> + 9 6 2 10 3. + 0 + <_> + + <_> + 7 6 10 2 -1. + <_> + 7 6 5 1 2. + <_> + 12 7 5 1 2. + 0 + <_> + + <_> + 7 6 5 3 -1. + <_> + 6 7 5 1 3. + 1 + <_> + + <_> + 7 6 8 4 -1. + <_> + 6 7 8 2 2. + 1 + <_> + + <_> + 7 7 1 3 -1. + <_> + 7 8 1 1 3. + 0 + <_> + + <_> + 7 7 2 2 -1. + <_> + 7 7 1 1 2. + <_> + 8 8 1 1 2. + 0 + <_> + + <_> + 7 8 1 3 -1. + <_> + 7 9 1 1 3. + 0 + <_> + + <_> + 7 8 2 2 -1. + <_> + 7 8 1 1 2. + <_> + 8 9 1 1 2. + 0 + <_> + + <_> + 7 8 2 2 -1. + <_> + 7 8 1 2 2. + 1 + <_> + + <_> + 7 8 12 7 -1. + <_> + 11 8 4 7 3. + 0 + <_> + + <_> + 7 8 10 2 -1. + <_> + 7 8 5 1 2. + <_> + 12 9 5 1 2. + 0 + <_> + + <_> + 7 9 1 2 -1. + <_> + 7 10 1 1 2. + 0 + <_> + + <_> + 7 9 2 3 -1. + <_> + 7 9 1 3 2. + 1 + <_> + + <_> + 7 9 2 3 -1. + <_> + 7 10 2 1 3. + 0 + <_> + + <_> + 7 9 6 10 -1. + <_> + 7 9 3 5 2. + <_> + 10 14 3 5 2. + 0 + <_> + + <_> + 7 9 10 2 -1. + <_> + 7 9 5 1 2. + <_> + 12 10 5 1 2. + 0 + <_> + + <_> + 7 10 3 1 -1. + <_> + 8 10 1 1 3. + 0 + <_> + + <_> + 7 10 1 3 -1. + <_> + 7 11 1 1 3. + 0 + <_> + + <_> + 7 10 2 3 -1. + <_> + 7 11 2 1 3. + 0 + <_> + + <_> + 7 10 6 5 -1. + <_> + 9 10 2 5 3. + 0 + <_> + + <_> + 7 10 9 4 -1. + <_> + 10 10 3 4 3. + 0 + <_> + + <_> + 7 10 10 2 -1. + <_> + 7 10 5 1 2. + <_> + 12 11 5 1 2. + 0 + <_> + + <_> + 7 11 1 2 -1. + <_> + 7 12 1 1 2. + 0 + <_> + + <_> + 7 15 5 4 -1. + <_> + 6 16 5 2 2. + 1 + <_> + + <_> + 7 16 6 2 -1. + <_> + 9 18 2 2 3. + 1 + <_> + + <_> + 7 16 4 2 -1. + <_> + 7 16 4 1 2. + 1 + <_> + + <_> + 7 16 4 4 -1. + <_> + 6 17 4 2 2. + 1 + <_> + + <_> + 7 17 3 1 -1. + <_> + 8 18 1 1 3. + 1 + <_> + + <_> + 7 17 1 4 -1. + <_> + 7 19 1 2 2. + 0 + <_> + + <_> + 7 17 3 6 -1. + <_> + 7 20 3 3 2. + 0 + <_> + + <_> + 7 17 4 3 -1. + <_> + 6 18 4 1 3. + 1 + <_> + + <_> + 7 17 5 2 -1. + <_> + 7 17 5 1 2. + 1 + <_> + + <_> + 7 18 3 1 -1. + <_> + 8 19 1 1 3. + 1 + <_> + + <_> + 7 19 3 1 -1. + <_> + 8 20 1 1 3. + 1 + <_> + + <_> + 7 19 3 5 -1. + <_> + 8 19 1 5 3. + 0 + <_> + + <_> + 7 20 3 1 -1. + <_> + 8 21 1 1 3. + 1 + <_> + + <_> + 7 20 9 4 -1. + <_> + 7 22 9 2 2. + 0 + <_> + + <_> + 7 20 10 4 -1. + <_> + 7 21 10 2 2. + 0 + <_> + + <_> + 7 20 10 4 -1. + <_> + 7 22 10 2 2. + 0 + <_> + + <_> + 8 0 8 1 -1. + <_> + 12 0 4 1 2. + 0 + <_> + + <_> + 8 0 7 4 -1. + <_> + 8 2 7 2 2. + 0 + <_> + + <_> + 8 0 16 6 -1. + <_> + 8 0 8 3 2. + <_> + 16 3 8 3 2. + 0 + <_> + + <_> + 8 0 8 10 -1. + <_> + 8 5 8 5 2. + 0 + <_> + + <_> + 8 0 16 10 -1. + <_> + 8 0 8 5 2. + <_> + 16 5 8 5 2. + 0 + <_> + + <_> + 8 0 9 4 -1. + <_> + 8 1 9 2 2. + 0 + <_> + + <_> + 8 0 9 10 -1. + <_> + 8 5 9 5 2. + 0 + <_> + + <_> + 8 1 8 8 -1. + <_> + 8 5 8 4 2. + 0 + <_> + + <_> + 8 1 12 10 -1. + <_> + 8 6 12 5 2. + 0 + <_> + + <_> + 8 2 3 3 -1. + <_> + 9 2 1 3 3. + 0 + <_> + + <_> + 8 2 2 4 -1. + <_> + 7 3 2 2 2. + 1 + <_> + + <_> + 8 2 2 6 -1. + <_> + 6 4 2 2 3. + 1 + <_> + + <_> + 8 3 3 8 -1. + <_> + 9 3 1 8 3. + 0 + <_> + + <_> + 8 4 8 2 -1. + <_> + 8 4 4 1 2. + <_> + 12 5 4 1 2. + 0 + <_> + + <_> + 8 4 7 15 -1. + <_> + 8 9 7 5 3. + 0 + <_> + + <_> + 8 5 2 1 -1. + <_> + 8 5 1 1 2. + 1 + <_> + + <_> + 8 5 3 2 -1. + <_> + 9 5 1 2 3. + 0 + <_> + + <_> + 8 5 2 5 -1. + <_> + 9 5 1 5 2. + 0 + <_> + + <_> + 8 5 2 6 -1. + <_> + 9 5 1 6 2. + 0 + <_> + + <_> + 8 5 3 6 -1. + <_> + 9 5 1 6 3. + 0 + <_> + + <_> + 8 5 2 7 -1. + <_> + 9 5 1 7 2. + 0 + <_> + + <_> + 8 5 3 7 -1. + <_> + 9 6 1 7 3. + 1 + <_> + + <_> + 8 5 3 8 -1. + <_> + 9 5 1 8 3. + 0 + <_> + + <_> + 8 5 3 6 -1. + <_> + 8 5 3 3 2. + 1 + <_> + + <_> + 8 5 4 6 -1. + <_> + 6 7 4 2 3. + 1 + <_> + + <_> + 8 5 10 2 -1. + <_> + 8 5 5 1 2. + <_> + 13 6 5 1 2. + 0 + <_> + + <_> + 8 5 5 3 -1. + <_> + 7 6 5 1 3. + 1 + <_> + + <_> + 8 6 3 6 -1. + <_> + 9 6 1 6 3. + 0 + <_> + + <_> + 8 6 3 4 -1. + <_> + 7 7 3 2 2. + 1 + <_> + + <_> + 8 6 4 2 -1. + <_> + 8 6 4 1 2. + 1 + <_> + + <_> + 8 6 4 3 -1. + <_> + 7 7 4 1 3. + 1 + <_> + + <_> + 8 6 4 4 -1. + <_> + 7 7 4 2 2. + 1 + <_> + + <_> + 8 6 10 2 -1. + <_> + 8 6 5 1 2. + <_> + 13 7 5 1 2. + 0 + <_> + + <_> + 8 7 3 3 -1. + <_> + 7 8 3 1 3. + 1 + <_> + + <_> + 8 7 3 4 -1. + <_> + 7 8 3 2 2. + 1 + <_> + + <_> + 8 7 9 5 -1. + <_> + 11 10 3 5 3. + 1 + <_> + + <_> + 8 7 9 8 -1. + <_> + 11 10 3 8 3. + 1 + <_> + + <_> + 8 7 4 2 -1. + <_> + 8 7 4 1 2. + 1 + <_> + + <_> + 8 7 4 3 -1. + <_> + 7 8 4 1 3. + 1 + <_> + + <_> + 8 7 5 2 -1. + <_> + 8 7 5 1 2. + 1 + <_> + + <_> + 8 7 8 2 -1. + <_> + 8 7 8 1 2. + 1 + <_> + + <_> + 8 7 10 12 -1. + <_> + 8 13 10 6 2. + 0 + <_> + + <_> + 8 8 2 2 -1. + <_> + 8 8 1 1 2. + <_> + 9 9 1 1 2. + 0 + <_> + + <_> + 8 10 2 1 -1. + <_> + 9 10 1 1 2. + 0 + <_> + + <_> + 8 10 3 1 -1. + <_> + 9 10 1 1 3. + 0 + <_> + + <_> + 8 10 2 2 -1. + <_> + 8 10 1 1 2. + <_> + 9 11 1 1 2. + 0 + <_> + + <_> + 8 10 2 2 -1. + <_> + 9 10 1 2 2. + 0 + <_> + + <_> + 8 10 3 2 -1. + <_> + 9 10 1 2 3. + 0 + <_> + + <_> + 8 10 4 8 -1. + <_> + 8 10 2 4 2. + <_> + 10 14 2 4 2. + 0 + <_> + + <_> + 8 10 8 2 -1. + <_> + 8 10 4 1 2. + <_> + 12 11 4 1 2. + 0 + <_> + + <_> + 8 10 15 12 -1. + <_> + 13 14 5 4 9. + 0 + <_> + + <_> + 8 11 2 2 -1. + <_> + 8 11 1 1 2. + <_> + 9 12 1 1 2. + 0 + <_> + + <_> + 8 13 9 3 -1. + <_> + 11 13 3 3 3. + 0 + <_> + + <_> + 8 15 9 6 -1. + <_> + 11 15 3 6 3. + 0 + <_> + + <_> + 8 15 8 6 -1. + <_> + 8 17 8 2 3. + 0 + <_> + + <_> + 8 16 8 2 -1. + <_> + 10 16 4 2 2. + 0 + <_> + + <_> + 8 16 8 3 -1. + <_> + 10 16 4 3 2. + 0 + <_> + + <_> + 8 17 3 3 -1. + <_> + 9 18 1 3 3. + 1 + <_> + + <_> + 8 17 8 3 -1. + <_> + 10 17 4 3 2. + 0 + <_> + + <_> + 8 17 9 6 -1. + <_> + 8 19 9 2 3. + 0 + <_> + + <_> + 8 18 3 6 -1. + <_> + 9 18 1 6 3. + 0 + <_> + + <_> + 8 19 3 1 -1. + <_> + 9 20 1 1 3. + 1 + <_> + + <_> + 8 19 3 4 -1. + <_> + 9 19 1 4 3. + 0 + <_> + + <_> + 8 19 7 3 -1. + <_> + 8 20 7 1 3. + 0 + <_> + + <_> + 8 19 9 4 -1. + <_> + 8 20 9 2 2. + 0 + <_> + + <_> + 8 20 3 3 -1. + <_> + 9 20 1 3 3. + 0 + <_> + + <_> + 8 20 16 4 -1. + <_> + 8 20 8 2 2. + <_> + 16 22 8 2 2. + 0 + <_> + + <_> + 8 21 3 3 -1. + <_> + 9 21 1 3 3. + 0 + <_> + + <_> + 9 0 1 2 -1. + <_> + 9 1 1 1 2. + 0 + <_> + + <_> + 9 0 3 6 -1. + <_> + 7 2 3 2 3. + 1 + <_> + + <_> + 9 0 6 3 -1. + <_> + 12 0 3 3 2. + 0 + <_> + + <_> + 9 0 6 9 -1. + <_> + 9 0 3 9 2. + 1 + <_> + + <_> + 9 0 8 9 -1. + <_> + 9 0 4 9 2. + 1 + <_> + + <_> + 9 0 5 4 -1. + <_> + 9 2 5 2 2. + 0 + <_> + + <_> + 9 0 5 8 -1. + <_> + 9 4 5 4 2. + 0 + <_> + + <_> + 9 0 14 12 -1. + <_> + 9 0 7 6 2. + <_> + 16 6 7 6 2. + 0 + <_> + + <_> + 9 0 8 10 -1. + <_> + 9 5 8 5 2. + 0 + <_> + + <_> + 9 0 15 18 -1. + <_> + 9 6 15 6 3. + 0 + <_> + + <_> + 9 1 2 8 -1. + <_> + 9 5 2 4 2. + 0 + <_> + + <_> + 9 1 3 4 -1. + <_> + 8 2 3 2 2. + 1 + <_> + + <_> + 9 2 2 2 -1. + <_> + 10 2 1 2 2. + 0 + <_> + + <_> + 9 2 1 6 -1. + <_> + 9 5 1 3 2. + 0 + <_> + + <_> + 9 2 3 10 -1. + <_> + 10 2 1 10 3. + 0 + <_> + + <_> + 9 2 8 4 -1. + <_> + 11 4 4 4 2. + 1 + <_> + + <_> + 9 2 6 2 -1. + <_> + 9 2 3 1 2. + <_> + 12 3 3 1 2. + 0 + <_> + + <_> + 9 2 7 8 -1. + <_> + 9 6 7 4 2. + 0 + <_> + + <_> + 9 3 3 7 -1. + <_> + 10 4 1 7 3. + 1 + <_> + + <_> + 9 3 3 12 -1. + <_> + 10 3 1 12 3. + 0 + <_> + + <_> + 9 3 6 7 -1. + <_> + 11 3 2 7 3. + 0 + <_> + + <_> + 9 3 12 3 -1. + <_> + 13 4 4 1 9. + 0 + <_> + + <_> + 9 3 11 4 -1. + <_> + 8 4 11 2 2. + 1 + <_> + + <_> + 9 4 3 8 -1. + <_> + 10 5 1 8 3. + 1 + <_> + + <_> + 9 5 2 1 -1. + <_> + 9 5 1 1 2. + 1 + <_> + + <_> + 9 5 3 4 -1. + <_> + 10 5 1 4 3. + 0 + <_> + + <_> + 9 5 3 6 -1. + <_> + 10 5 1 6 3. + 0 + <_> + + <_> + 9 5 6 4 -1. + <_> + 11 5 2 4 3. + 0 + <_> + + <_> + 9 5 3 3 -1. + <_> + 9 6 3 1 3. + 0 + <_> + + <_> + 9 5 4 3 -1. + <_> + 8 6 4 1 3. + 1 + <_> + + <_> + 9 6 3 2 -1. + <_> + 10 7 1 2 3. + 1 + <_> + + <_> + 9 6 2 6 -1. + <_> + 7 8 2 2 3. + 1 + <_> + + <_> + 9 6 4 3 -1. + <_> + 9 7 4 1 3. + 0 + <_> + + <_> + 9 6 4 3 -1. + <_> + 8 7 4 1 3. + 1 + <_> + + <_> + 9 7 2 3 -1. + <_> + 9 7 1 3 2. + 1 + <_> + + <_> + 9 7 2 2 -1. + <_> + 9 7 2 1 2. + 1 + <_> + + <_> + 9 7 6 2 -1. + <_> + 9 7 3 1 2. + <_> + 12 8 3 1 2. + 0 + <_> + + <_> + 9 8 2 3 -1. + <_> + 8 9 2 1 3. + 1 + <_> + + <_> + 9 8 6 5 -1. + <_> + 11 10 2 5 3. + 1 + <_> + + <_> + 9 8 3 3 -1. + <_> + 9 9 3 1 3. + 0 + <_> + + <_> + 9 8 9 9 -1. + <_> + 12 8 3 9 3. + 0 + <_> + + <_> + 9 9 2 12 -1. + <_> + 9 9 1 6 2. + <_> + 10 15 1 6 2. + 0 + <_> + + <_> + 9 9 6 3 -1. + <_> + 11 11 2 3 3. + 1 + <_> + + <_> + 9 9 6 4 -1. + <_> + 11 11 2 4 3. + 1 + <_> + + <_> + 9 9 3 3 -1. + <_> + 9 10 3 1 3. + 0 + <_> + + <_> + 9 9 6 4 -1. + <_> + 12 9 3 4 2. + 0 + <_> + + <_> + 9 10 3 3 -1. + <_> + 9 11 3 1 3. + 0 + <_> + + <_> + 9 10 5 3 -1. + <_> + 9 11 5 1 3. + 0 + <_> + + <_> + 9 10 14 3 -1. + <_> + 9 11 14 1 3. + 0 + <_> + + <_> + 9 13 4 6 -1. + <_> + 9 13 2 3 2. + <_> + 11 16 2 3 2. + 0 + <_> + + <_> + 9 13 9 4 -1. + <_> + 12 13 3 4 3. + 0 + <_> + + <_> + 9 16 6 5 -1. + <_> + 11 16 2 5 3. + 0 + <_> + + <_> + 9 17 6 2 -1. + <_> + 11 17 2 2 3. + 0 + <_> + + <_> + 9 18 3 3 -1. + <_> + 10 19 1 3 3. + 1 + <_> + + <_> + 9 19 3 2 -1. + <_> + 10 20 1 2 3. + 1 + <_> + + <_> + 9 19 6 3 -1. + <_> + 9 20 6 1 3. + 0 + <_> + + <_> + 9 19 7 3 -1. + <_> + 9 20 7 1 3. + 0 + <_> + + <_> + 9 20 3 3 -1. + <_> + 10 20 1 3 3. + 0 + <_> + + <_> + 9 20 5 3 -1. + <_> + 9 21 5 1 3. + 0 + <_> + + <_> + 9 20 6 3 -1. + <_> + 9 21 6 1 3. + 0 + <_> + + <_> + 9 20 7 3 -1. + <_> + 9 21 7 1 3. + 0 + <_> + + <_> + 9 20 7 4 -1. + <_> + 9 22 7 2 2. + 0 + <_> + + <_> + 9 21 3 3 -1. + <_> + 10 21 1 3 3. + 0 + <_> + + <_> + 9 21 8 2 -1. + <_> + 9 22 8 1 2. + 0 + <_> + + <_> + 10 0 4 1 -1. + <_> + 12 0 2 1 2. + 0 + <_> + + <_> + 10 0 3 12 -1. + <_> + 10 4 3 4 3. + 0 + <_> + + <_> + 10 0 4 8 -1. + <_> + 10 4 4 4 2. + 0 + <_> + + <_> + 10 0 14 10 -1. + <_> + 10 0 7 5 2. + <_> + 17 5 7 5 2. + 0 + <_> + + <_> + 10 2 4 6 -1. + <_> + 11 2 2 6 2. + 0 + <_> + + <_> + 10 2 6 10 -1. + <_> + 10 2 3 10 2. + 1 + <_> + + <_> + 10 3 2 5 -1. + <_> + 11 3 1 5 2. + 0 + <_> + + <_> + 10 4 3 5 -1. + <_> + 11 4 1 5 3. + 0 + <_> + + <_> + 10 4 4 19 -1. + <_> + 12 4 2 19 2. + 0 + <_> + + <_> + 10 5 1 2 -1. + <_> + 10 5 1 1 2. + 1 + <_> + + <_> + 10 5 4 3 -1. + <_> + 11 5 2 3 2. + 0 + <_> + + <_> + 10 5 3 3 -1. + <_> + 10 6 3 1 3. + 0 + <_> + + <_> + 10 6 1 3 -1. + <_> + 10 7 1 1 3. + 0 + <_> + + <_> + 10 6 4 6 -1. + <_> + 12 6 2 6 2. + 0 + <_> + + <_> + 10 7 4 3 -1. + <_> + 10 8 4 1 3. + 0 + <_> + + <_> + 10 8 1 2 -1. + <_> + 10 8 1 1 2. + 1 + <_> + + <_> + 10 8 2 2 -1. + <_> + 10 9 2 1 2. + 0 + <_> + + <_> + 10 9 1 3 -1. + <_> + 9 10 1 1 3. + 1 + <_> + + <_> + 10 9 2 3 -1. + <_> + 11 9 1 3 2. + 0 + <_> + + <_> + 10 9 2 12 -1. + <_> + 10 9 1 6 2. + <_> + 11 15 1 6 2. + 0 + <_> + + <_> + 10 9 2 3 -1. + <_> + 10 10 2 1 3. + 0 + <_> + + <_> + 10 9 2 3 -1. + <_> + 9 10 2 1 3. + 1 + <_> + + <_> + 10 10 3 3 -1. + <_> + 9 11 3 1 3. + 1 + <_> + + <_> + 10 11 5 3 -1. + <_> + 10 12 5 1 3. + 0 + <_> + + <_> + 10 12 14 3 -1. + <_> + 10 13 14 1 3. + 0 + <_> + + <_> + 10 17 4 2 -1. + <_> + 11 17 2 2 2. + 0 + <_> + + <_> + 10 17 2 6 -1. + <_> + 10 17 1 3 2. + <_> + 11 20 1 3 2. + 0 + <_> + + <_> + 10 17 3 3 -1. + <_> + 10 18 3 1 3. + 0 + <_> + + <_> + 10 17 6 2 -1. + <_> + 13 17 3 2 2. + 0 + <_> + + <_> + 10 18 5 4 -1. + <_> + 10 19 5 2 2. + 0 + <_> + + <_> + 10 19 5 4 -1. + <_> + 10 20 5 2 2. + 0 + <_> + + <_> + 10 19 6 3 -1. + <_> + 10 20 6 1 3. + 0 + <_> + + <_> + 10 20 3 4 -1. + <_> + 11 20 1 4 3. + 0 + <_> + + <_> + 10 20 6 4 -1. + <_> + 12 20 2 4 3. + 0 + <_> + + <_> + 10 20 5 4 -1. + <_> + 10 21 5 2 2. + 0 + <_> + + <_> + 10 20 5 4 -1. + <_> + 10 22 5 2 2. + 0 + <_> + + <_> + 10 20 14 4 -1. + <_> + 10 20 7 2 2. + <_> + 17 22 7 2 2. + 0 + <_> + + <_> + 10 21 3 3 -1. + <_> + 11 21 1 3 3. + 0 + <_> + + <_> + 10 21 5 2 -1. + <_> + 10 22 5 1 2. + 0 + <_> + + <_> + 10 22 3 2 -1. + <_> + 11 22 1 2 3. + 0 + <_> + + <_> + 10 23 3 1 -1. + <_> + 11 23 1 1 3. + 0 + <_> + + <_> + 11 0 1 2 -1. + <_> + 11 0 1 1 2. + 1 + <_> + + <_> + 11 0 1 4 -1. + <_> + 10 1 1 2 2. + 1 + <_> + + <_> + 11 0 4 1 -1. + <_> + 13 0 2 1 2. + 0 + <_> + + <_> + 11 1 1 2 -1. + <_> + 11 1 1 1 2. + 1 + <_> + + <_> + 11 2 8 9 -1. + <_> + 13 4 4 9 2. + 1 + <_> + + <_> + 11 3 3 3 -1. + <_> + 12 3 1 3 3. + 0 + <_> + + <_> + 11 3 3 4 -1. + <_> + 12 3 1 4 3. + 0 + <_> + + <_> + 11 4 3 4 -1. + <_> + 12 4 1 4 3. + 0 + <_> + + <_> + 11 4 3 5 -1. + <_> + 12 4 1 5 3. + 0 + <_> + + <_> + 11 4 3 7 -1. + <_> + 12 5 1 7 3. + 1 + <_> + + <_> + 11 4 4 1 -1. + <_> + 13 4 2 1 2. + 0 + <_> + + <_> + 11 4 2 3 -1. + <_> + 11 5 2 1 3. + 0 + <_> + + <_> + 11 4 4 3 -1. + <_> + 11 5 4 1 3. + 0 + <_> + + <_> + 11 5 3 1 -1. + <_> + 12 5 1 1 3. + 0 + <_> + + <_> + 11 5 4 11 -1. + <_> + 13 5 2 11 2. + 0 + <_> + + <_> + 11 6 2 3 -1. + <_> + 11 7 2 1 3. + 0 + <_> + + <_> + 11 6 4 3 -1. + <_> + 11 7 4 1 3. + 0 + <_> + + <_> + 11 7 1 3 -1. + <_> + 11 8 1 1 3. + 0 + <_> + + <_> + 11 7 2 3 -1. + <_> + 11 8 2 1 3. + 0 + <_> + + <_> + 11 7 2 6 -1. + <_> + 11 7 2 3 2. + 1 + <_> + + <_> + 11 7 3 3 -1. + <_> + 11 8 3 1 3. + 0 + <_> + + <_> + 11 7 3 8 -1. + <_> + 11 7 3 4 2. + 1 + <_> + + <_> + 11 8 1 3 -1. + <_> + 11 9 1 1 3. + 0 + <_> + + <_> + 11 8 2 3 -1. + <_> + 11 9 2 1 3. + 0 + <_> + + <_> + 11 9 3 3 -1. + <_> + 11 10 3 1 3. + 0 + <_> + + <_> + 11 10 4 5 -1. + <_> + 12 11 2 5 2. + 1 + <_> + + <_> + 11 10 6 3 -1. + <_> + 13 10 2 3 3. + 0 + <_> + + <_> + 11 10 6 8 -1. + <_> + 11 10 3 4 2. + <_> + 14 14 3 4 2. + 0 + <_> + + <_> + 11 10 8 6 -1. + <_> + 9 12 8 2 3. + 1 + <_> + + <_> + 11 11 1 3 -1. + <_> + 11 12 1 1 3. + 0 + <_> + + <_> + 11 14 3 3 -1. + <_> + 10 15 3 1 3. + 1 + <_> + + <_> + 11 16 3 3 -1. + <_> + 11 17 3 1 3. + 0 + <_> + + <_> + 11 21 3 3 -1. + <_> + 12 21 1 3 3. + 0 + <_> + + <_> + 11 22 3 2 -1. + <_> + 12 22 1 2 3. + 0 + <_> + + <_> + 12 0 9 17 -1. + <_> + 15 0 3 17 3. + 0 + <_> + + <_> + 12 2 2 14 -1. + <_> + 13 2 1 14 2. + 0 + <_> + + <_> + 12 3 6 1 -1. + <_> + 14 3 2 1 3. + 0 + <_> + + <_> + 12 3 8 3 -1. + <_> + 12 4 8 1 3. + 0 + <_> + + <_> + 12 3 12 6 -1. + <_> + 10 5 12 2 3. + 1 + <_> + + <_> + 12 4 2 3 -1. + <_> + 12 5 2 1 3. + 0 + <_> + + <_> + 12 4 9 3 -1. + <_> + 15 5 3 1 9. + 0 + <_> + + <_> + 12 5 3 5 -1. + <_> + 13 5 1 5 3. + 0 + <_> + + <_> + 12 5 3 3 -1. + <_> + 12 6 3 1 3. + 0 + <_> + + <_> + 12 5 9 8 -1. + <_> + 15 5 3 8 3. + 0 + <_> + + <_> + 12 5 4 3 -1. + <_> + 12 6 4 1 3. + 0 + <_> + + <_> + 12 6 2 8 -1. + <_> + 12 6 2 4 2. + 1 + <_> + + <_> + 12 6 3 3 -1. + <_> + 12 7 3 1 3. + 0 + <_> + + <_> + 12 7 1 3 -1. + <_> + 12 8 1 1 3. + 0 + <_> + + <_> + 12 7 1 8 -1. + <_> + 12 7 1 4 2. + 1 + <_> + + <_> + 12 7 2 6 -1. + <_> + 12 7 2 3 2. + 1 + <_> + + <_> + 12 7 2 8 -1. + <_> + 12 7 2 4 2. + 1 + <_> + + <_> + 12 7 3 3 -1. + <_> + 12 8 3 1 3. + 0 + <_> + + <_> + 12 8 1 3 -1. + <_> + 12 9 1 1 3. + 0 + <_> + + <_> + 12 8 2 3 -1. + <_> + 12 9 2 1 3. + 0 + <_> + + <_> + 12 9 2 3 -1. + <_> + 12 10 2 1 3. + 0 + <_> + + <_> + 12 10 6 4 -1. + <_> + 14 10 2 4 3. + 0 + <_> + + <_> + 12 10 4 10 -1. + <_> + 12 10 2 5 2. + <_> + 14 15 2 5 2. + 0 + <_> + + <_> + 12 11 4 8 -1. + <_> + 12 11 2 4 2. + <_> + 14 15 2 4 2. + 0 + <_> + + <_> + 12 13 4 3 -1. + <_> + 13 13 2 3 2. + 0 + <_> + + <_> + 12 14 3 2 -1. + <_> + 13 15 1 2 3. + 1 + <_> + + <_> + 12 15 2 4 -1. + <_> + 12 15 1 2 2. + <_> + 13 17 1 2 2. + 0 + <_> + + <_> + 12 15 4 5 -1. + <_> + 14 15 2 5 2. + 0 + <_> + + <_> + 12 16 6 2 -1. + <_> + 14 16 2 2 3. + 0 + <_> + + <_> + 12 19 3 5 -1. + <_> + 13 19 1 5 3. + 0 + <_> + + <_> + 12 21 3 2 -1. + <_> + 13 21 1 2 3. + 0 + <_> + + <_> + 12 21 3 3 -1. + <_> + 13 21 1 3 3. + 0 + <_> + + <_> + 13 0 2 10 -1. + <_> + 13 0 1 5 2. + <_> + 14 5 1 5 2. + 0 + <_> + + <_> + 13 0 4 12 -1. + <_> + 14 0 2 12 2. + 0 + <_> + + <_> + 13 0 6 10 -1. + <_> + 15 0 2 10 3. + 0 + <_> + + <_> + 13 0 11 8 -1. + <_> + 11 2 11 4 2. + 1 + <_> + + <_> + 13 1 6 8 -1. + <_> + 15 1 2 8 3. + 0 + <_> + + <_> + 13 2 4 2 -1. + <_> + 14 2 2 2 2. + 0 + <_> + + <_> + 13 3 2 4 -1. + <_> + 13 3 1 2 2. + <_> + 14 5 1 2 2. + 0 + <_> + + <_> + 13 3 6 3 -1. + <_> + 15 4 2 1 9. + 0 + <_> + + <_> + 13 4 4 7 -1. + <_> + 14 4 2 7 2. + 0 + <_> + + <_> + 13 4 3 8 -1. + <_> + 14 4 1 8 3. + 0 + <_> + + <_> + 13 5 3 2 -1. + <_> + 14 5 1 2 3. + 0 + <_> + + <_> + 13 5 3 5 -1. + <_> + 14 5 1 5 3. + 0 + <_> + + <_> + 13 5 3 6 -1. + <_> + 14 5 1 6 3. + 0 + <_> + + <_> + 13 5 3 8 -1. + <_> + 14 5 1 8 3. + 0 + <_> + + <_> + 13 5 6 1 -1. + <_> + 15 5 2 1 3. + 0 + <_> + + <_> + 13 6 7 4 -1. + <_> + 13 7 7 2 2. + 0 + <_> + + <_> + 13 7 1 3 -1. + <_> + 13 8 1 1 3. + 0 + <_> + + <_> + 13 7 4 8 -1. + <_> + 13 7 2 4 2. + <_> + 15 11 2 4 2. + 0 + <_> + + <_> + 13 7 9 6 -1. + <_> + 16 9 3 2 9. + 0 + <_> + + <_> + 13 7 6 2 -1. + <_> + 13 7 3 2 2. + 1 + <_> + + <_> + 13 7 8 1 -1. + <_> + 13 7 4 1 2. + 1 + <_> + + <_> + 13 8 2 3 -1. + <_> + 13 9 2 1 3. + 0 + <_> + + <_> + 13 8 9 3 -1. + <_> + 16 9 3 1 9. + 0 + <_> + + <_> + 13 8 6 8 -1. + <_> + 13 8 3 4 2. + <_> + 16 12 3 4 2. + 0 + <_> + + <_> + 13 9 2 3 -1. + <_> + 13 10 2 1 3. + 0 + <_> + + <_> + 13 9 6 4 -1. + <_> + 15 9 2 4 3. + 0 + <_> + + <_> + 13 9 10 2 -1. + <_> + 13 10 10 1 2. + 0 + <_> + + <_> + 13 10 3 1 -1. + <_> + 14 10 1 1 3. + 0 + <_> + + <_> + 13 10 3 2 -1. + <_> + 14 10 1 2 3. + 0 + <_> + + <_> + 13 11 2 3 -1. + <_> + 13 12 2 1 3. + 0 + <_> + + <_> + 13 13 2 6 -1. + <_> + 13 13 1 3 2. + <_> + 14 16 1 3 2. + 0 + <_> + + <_> + 13 13 4 6 -1. + <_> + 14 14 2 6 2. + 1 + <_> + + <_> + 13 20 3 4 -1. + <_> + 14 20 1 4 3. + 0 + <_> + + <_> + 13 22 3 2 -1. + <_> + 14 22 1 2 3. + 0 + <_> + + <_> + 13 23 3 1 -1. + <_> + 14 23 1 1 3. + 0 + <_> + + <_> + 14 0 3 11 -1. + <_> + 15 1 1 11 3. + 1 + <_> + + <_> + 14 0 2 3 -1. + <_> + 14 1 2 1 3. + 0 + <_> + + <_> + 14 0 10 6 -1. + <_> + 14 0 5 3 2. + <_> + 19 3 5 3 2. + 0 + <_> + + <_> + 14 0 10 10 -1. + <_> + 14 0 5 5 2. + <_> + 19 5 5 5 2. + 0 + <_> + + <_> + 14 1 10 6 -1. + <_> + 14 1 5 3 2. + <_> + 19 4 5 3 2. + 0 + <_> + + <_> + 14 2 1 2 -1. + <_> + 14 2 1 1 2. + 1 + <_> + + <_> + 14 2 3 8 -1. + <_> + 15 2 1 8 3. + 0 + <_> + + <_> + 14 2 6 7 -1. + <_> + 16 2 2 7 3. + 0 + <_> + + <_> + 14 3 2 4 -1. + <_> + 14 3 1 2 2. + <_> + 15 5 1 2 2. + 0 + <_> + + <_> + 14 3 2 7 -1. + <_> + 15 3 1 7 2. + 0 + <_> + + <_> + 14 5 3 2 -1. + <_> + 15 5 1 2 3. + 0 + <_> + + <_> + 14 5 2 3 -1. + <_> + 15 5 1 3 2. + 0 + <_> + + <_> + 14 5 3 3 -1. + <_> + 15 5 1 3 3. + 0 + <_> + + <_> + 14 5 3 5 -1. + <_> + 15 5 1 5 3. + 0 + <_> + + <_> + 14 5 2 7 -1. + <_> + 15 5 1 7 2. + 0 + <_> + + <_> + 14 5 6 4 -1. + <_> + 16 5 2 4 3. + 0 + <_> + + <_> + 14 6 6 3 -1. + <_> + 14 6 3 3 2. + 1 + <_> + + <_> + 14 7 4 16 -1. + <_> + 15 7 2 16 2. + 0 + <_> + + <_> + 14 7 6 6 -1. + <_> + 16 9 2 2 9. + 0 + <_> + + <_> + 14 7 6 16 -1. + <_> + 16 7 2 16 3. + 0 + <_> + + <_> + 14 7 9 4 -1. + <_> + 14 8 9 2 2. + 0 + <_> + + <_> + 14 9 2 4 -1. + <_> + 14 9 1 2 2. + <_> + 15 11 1 2 2. + 0 + <_> + + <_> + 14 10 3 1 -1. + <_> + 15 10 1 1 3. + 0 + <_> + + <_> + 14 10 2 2 -1. + <_> + 15 10 1 2 2. + 0 + <_> + + <_> + 14 10 3 3 -1. + <_> + 15 10 1 3 3. + 0 + <_> + + <_> + 14 12 2 1 -1. + <_> + 15 12 1 1 2. + 0 + <_> + + <_> + 14 14 3 4 -1. + <_> + 15 15 1 4 3. + 1 + <_> + + <_> + 14 14 5 3 -1. + <_> + 14 15 5 1 3. + 0 + <_> + + <_> + 14 15 3 3 -1. + <_> + 15 16 1 3 3. + 1 + <_> + + <_> + 14 19 3 5 -1. + <_> + 15 19 1 5 3. + 0 + <_> + + <_> + 14 21 10 1 -1. + <_> + 19 21 5 1 2. + 0 + <_> + + <_> + 15 0 2 2 -1. + <_> + 15 0 1 2 2. + 1 + <_> + + <_> + 15 0 4 2 -1. + <_> + 16 1 2 2 2. + 1 + <_> + + <_> + 15 3 6 3 -1. + <_> + 15 4 6 1 3. + 0 + <_> + + <_> + 15 4 2 3 -1. + <_> + 15 5 2 1 3. + 0 + <_> + + <_> + 15 5 2 1 -1. + <_> + 15 5 1 1 2. + 1 + <_> + + <_> + 15 5 2 2 -1. + <_> + 16 5 1 2 2. + 0 + <_> + + <_> + 15 5 3 2 -1. + <_> + 16 5 1 2 3. + 0 + <_> + + <_> + 15 5 3 3 -1. + <_> + 16 5 1 3 3. + 0 + <_> + + <_> + 15 7 4 4 -1. + <_> + 15 9 4 2 2. + 0 + <_> + + <_> + 15 7 4 6 -1. + <_> + 15 9 4 2 3. + 0 + <_> + + <_> + 15 7 5 6 -1. + <_> + 15 9 5 2 3. + 0 + <_> + + <_> + 15 8 2 2 -1. + <_> + 15 8 1 1 2. + <_> + 16 9 1 1 2. + 0 + <_> + + <_> + 15 8 2 1 -1. + <_> + 15 8 1 1 2. + 1 + <_> + + <_> + 15 8 1 12 -1. + <_> + 15 14 1 6 2. + 0 + <_> + + <_> + 15 8 6 2 -1. + <_> + 15 8 3 2 2. + 1 + <_> + + <_> + 15 8 3 16 -1. + <_> + 15 12 3 8 2. + 0 + <_> + + <_> + 15 8 5 4 -1. + <_> + 15 9 5 2 2. + 0 + <_> + + <_> + 15 9 3 3 -1. + <_> + 16 10 1 1 9. + 0 + <_> + + <_> + 15 9 3 1 -1. + <_> + 16 10 1 1 3. + 1 + <_> + + <_> + 15 10 3 1 -1. + <_> + 16 10 1 1 3. + 0 + <_> + + <_> + 15 10 2 2 -1. + <_> + 15 10 1 1 2. + <_> + 16 11 1 1 2. + 0 + <_> + + <_> + 15 10 2 2 -1. + <_> + 16 10 1 2 2. + 0 + <_> + + <_> + 15 10 3 5 -1. + <_> + 16 10 1 5 3. + 0 + <_> + + <_> + 15 10 3 4 -1. + <_> + 14 11 3 2 2. + 1 + <_> + + <_> + 15 10 5 4 -1. + <_> + 15 11 5 2 2. + 0 + <_> + + <_> + 15 10 5 4 -1. + <_> + 14 11 5 2 2. + 1 + <_> + + <_> + 15 15 8 3 -1. + <_> + 19 15 4 3 2. + 0 + <_> + + <_> + 15 15 8 8 -1. + <_> + 15 15 4 4 2. + <_> + 19 19 4 4 2. + 0 + <_> + + <_> + 15 16 5 3 -1. + <_> + 15 17 5 1 3. + 0 + <_> + + <_> + 15 18 8 6 -1. + <_> + 15 18 4 3 2. + <_> + 19 21 4 3 2. + 0 + <_> + + <_> + 16 0 8 1 -1. + <_> + 20 0 4 1 2. + 0 + <_> + + <_> + 16 0 8 2 -1. + <_> + 20 0 4 2 2. + 0 + <_> + + <_> + 16 0 8 6 -1. + <_> + 16 0 4 3 2. + <_> + 20 3 4 3 2. + 0 + <_> + + <_> + 16 0 8 8 -1. + <_> + 16 0 4 4 2. + <_> + 20 4 4 4 2. + 0 + <_> + + <_> + 16 1 3 3 -1. + <_> + 17 2 1 1 9. + 0 + <_> + + <_> + 16 1 2 1 -1. + <_> + 16 1 1 1 2. + 1 + <_> + + <_> + 16 2 1 2 -1. + <_> + 16 3 1 1 2. + 0 + <_> + + <_> + 16 2 3 3 -1. + <_> + 17 3 1 1 9. + 0 + <_> + + <_> + 16 2 4 2 -1. + <_> + 17 3 2 2 2. + 1 + <_> + + <_> + 16 2 6 1 -1. + <_> + 18 4 2 1 3. + 1 + <_> + + <_> + 16 3 4 12 -1. + <_> + 17 4 2 12 2. + 1 + <_> + + <_> + 16 4 6 3 -1. + <_> + 15 5 6 1 3. + 1 + <_> + + <_> + 16 5 1 2 -1. + <_> + 16 5 1 1 2. + 1 + <_> + + <_> + 16 5 3 2 -1. + <_> + 17 5 1 2 3. + 0 + <_> + + <_> + 16 5 3 9 -1. + <_> + 16 8 3 3 3. + 0 + <_> + + <_> + 16 6 6 2 -1. + <_> + 18 8 2 2 3. + 1 + <_> + + <_> + 16 7 1 6 -1. + <_> + 16 9 1 2 3. + 0 + <_> + + <_> + 16 7 2 3 -1. + <_> + 16 8 2 1 3. + 0 + <_> + + <_> + 16 7 2 2 -1. + <_> + 16 7 2 1 2. + 1 + <_> + + <_> + 16 7 3 2 -1. + <_> + 16 8 3 1 2. + 0 + <_> + + <_> + 16 7 3 2 -1. + <_> + 16 7 3 1 2. + 1 + <_> + + <_> + 16 7 3 6 -1. + <_> + 16 9 3 2 3. + 0 + <_> + + <_> + 16 7 6 4 -1. + <_> + 16 7 3 4 2. + 1 + <_> + + <_> + 16 7 4 3 -1. + <_> + 16 8 4 1 3. + 0 + <_> + + <_> + 16 7 5 3 -1. + <_> + 16 8 5 1 3. + 0 + <_> + + <_> + 16 7 5 6 -1. + <_> + 16 9 5 2 3. + 0 + <_> + + <_> + 16 7 6 4 -1. + <_> + 16 8 6 2 2. + 0 + <_> + + <_> + 16 7 7 8 -1. + <_> + 14 9 7 4 2. + 1 + <_> + + <_> + 16 7 8 6 -1. + <_> + 16 9 8 2 3. + 0 + <_> + + <_> + 16 8 1 2 -1. + <_> + 16 9 1 1 2. + 0 + <_> + + <_> + 16 8 1 4 -1. + <_> + 16 9 1 2 2. + 0 + <_> + + <_> + 16 8 2 2 -1. + <_> + 16 8 1 1 2. + <_> + 17 9 1 1 2. + 0 + <_> + + <_> + 16 8 3 3 -1. + <_> + 17 9 1 1 9. + 0 + <_> + + <_> + 16 8 2 1 -1. + <_> + 16 8 1 1 2. + 1 + <_> + + <_> + 16 8 2 2 -1. + <_> + 16 8 1 2 2. + 1 + <_> + + <_> + 16 8 5 6 -1. + <_> + 14 10 5 2 3. + 1 + <_> + + <_> + 16 8 7 8 -1. + <_> + 14 10 7 4 2. + 1 + <_> + + <_> + 16 9 3 1 -1. + <_> + 17 9 1 1 3. + 0 + <_> + + <_> + 16 9 1 3 -1. + <_> + 16 10 1 1 3. + 0 + <_> + + <_> + 16 9 5 3 -1. + <_> + 16 10 5 1 3. + 0 + <_> + + <_> + 16 9 8 2 -1. + <_> + 16 10 8 1 2. + 0 + <_> + + <_> + 16 10 1 3 -1. + <_> + 16 11 1 1 3. + 0 + <_> + + <_> + 16 10 2 2 -1. + <_> + 17 10 1 2 2. + 0 + <_> + + <_> + 16 10 2 3 -1. + <_> + 16 11 2 1 3. + 0 + <_> + + <_> + 16 10 6 6 -1. + <_> + 14 12 6 2 3. + 1 + <_> + + <_> + 16 11 3 1 -1. + <_> + 17 11 1 1 3. + 0 + <_> + + <_> + 16 11 3 2 -1. + <_> + 17 11 1 2 3. + 0 + <_> + + <_> + 16 11 3 13 -1. + <_> + 17 11 1 13 3. + 0 + <_> + + <_> + 16 11 2 2 -1. + <_> + 16 12 2 1 2. + 0 + <_> + + <_> + 16 11 2 3 -1. + <_> + 16 12 2 1 3. + 0 + <_> + + <_> + 16 11 3 3 -1. + <_> + 16 12 3 1 3. + 0 + <_> + + <_> + 16 14 4 2 -1. + <_> + 18 14 2 2 2. + 0 + <_> + + <_> + 16 14 6 3 -1. + <_> + 19 14 3 3 2. + 0 + <_> + + <_> + 16 19 3 5 -1. + <_> + 17 19 1 5 3. + 0 + <_> + + <_> + 16 19 2 3 -1. + <_> + 15 20 2 1 3. + 1 + <_> + + <_> + 16 19 8 3 -1. + <_> + 16 20 8 1 3. + 0 + <_> + + <_> + 17 0 6 15 -1. + <_> + 19 2 2 15 3. + 1 + <_> + + <_> + 17 0 6 1 -1. + <_> + 20 0 3 1 2. + 0 + <_> + + <_> + 17 0 6 2 -1. + <_> + 20 0 3 2 2. + 0 + <_> + + <_> + 17 2 3 3 -1. + <_> + 18 3 1 1 9. + 0 + <_> + + <_> + 17 3 3 2 -1. + <_> + 18 3 1 2 3. + 0 + <_> + + <_> + 17 3 3 9 -1. + <_> + 18 6 1 3 9. + 0 + <_> + + <_> + 17 3 6 2 -1. + <_> + 19 5 2 2 3. + 1 + <_> + + <_> + 17 3 3 8 -1. + <_> + 15 5 3 4 2. + 1 + <_> + + <_> + 17 3 5 3 -1. + <_> + 17 4 5 1 3. + 0 + <_> + + <_> + 17 4 2 6 -1. + <_> + 17 4 1 3 2. + <_> + 18 7 1 3 2. + 0 + <_> + + <_> + 17 5 1 2 -1. + <_> + 17 5 1 1 2. + 1 + <_> + + <_> + 17 5 3 4 -1. + <_> + 18 6 1 4 3. + 1 + <_> + + <_> + 17 5 6 2 -1. + <_> + 17 5 3 2 2. + 1 + <_> + + <_> + 17 5 7 3 -1. + <_> + 16 6 7 1 3. + 1 + <_> + + <_> + 17 6 2 3 -1. + <_> + 17 6 1 3 2. + 1 + <_> + + <_> + 17 6 3 4 -1. + <_> + 18 7 1 4 3. + 1 + <_> + + <_> + 17 6 3 3 -1. + <_> + 17 7 3 1 3. + 0 + <_> + + <_> + 17 6 6 1 -1. + <_> + 17 6 3 1 2. + 1 + <_> + + <_> + 17 7 1 3 -1. + <_> + 17 8 1 1 3. + 0 + <_> + + <_> + 17 7 1 3 -1. + <_> + 16 8 1 1 3. + 1 + <_> + + <_> + 17 7 1 6 -1. + <_> + 17 9 1 2 3. + 0 + <_> + + <_> + 17 7 3 6 -1. + <_> + 18 9 1 2 9. + 0 + <_> + + <_> + 17 7 3 2 -1. + <_> + 18 8 1 2 3. + 1 + <_> + + <_> + 17 7 2 3 -1. + <_> + 17 7 1 3 2. + 1 + <_> + + <_> + 17 7 3 3 -1. + <_> + 18 8 1 3 3. + 1 + <_> + + <_> + 17 7 2 3 -1. + <_> + 17 8 2 1 3. + 0 + <_> + + <_> + 17 7 6 9 -1. + <_> + 14 10 6 3 3. + 1 + <_> + + <_> + 17 8 3 3 -1. + <_> + 18 9 1 1 9. + 0 + <_> + + <_> + 17 8 2 4 -1. + <_> + 17 8 1 2 2. + <_> + 18 10 1 2 2. + 0 + <_> + + <_> + 17 8 2 8 -1. + <_> + 17 8 1 4 2. + <_> + 18 12 1 4 2. + 0 + <_> + + <_> + 17 8 3 4 -1. + <_> + 18 9 1 4 3. + 1 + <_> + + <_> + 17 8 4 6 -1. + <_> + 15 10 4 2 3. + 1 + <_> + + <_> + 17 9 3 1 -1. + <_> + 18 9 1 1 3. + 0 + <_> + + <_> + 17 9 2 6 -1. + <_> + 17 9 1 3 2. + <_> + 18 12 1 3 2. + 0 + <_> + + <_> + 17 9 6 10 -1. + <_> + 17 9 3 5 2. + <_> + 20 14 3 5 2. + 0 + <_> + + <_> + 17 9 7 2 -1. + <_> + 17 10 7 1 2. + 0 + <_> + + <_> + 17 10 3 1 -1. + <_> + 18 10 1 1 3. + 0 + <_> + + <_> + 17 10 1 3 -1. + <_> + 17 11 1 1 3. + 0 + <_> + + <_> + 17 10 2 3 -1. + <_> + 18 10 1 3 2. + 0 + <_> + + <_> + 17 10 2 4 -1. + <_> + 18 10 1 4 2. + 0 + <_> + + <_> + 17 10 4 2 -1. + <_> + 17 10 2 1 2. + <_> + 19 11 2 1 2. + 0 + <_> + + <_> + 17 11 3 2 -1. + <_> + 18 11 1 2 3. + 0 + <_> + + <_> + 17 11 3 3 -1. + <_> + 18 11 1 3 3. + 0 + <_> + + <_> + 17 12 3 1 -1. + <_> + 18 12 1 1 3. + 0 + <_> + + <_> + 17 12 6 2 -1. + <_> + 20 12 3 2 2. + 0 + <_> + + <_> + 17 15 2 3 -1. + <_> + 17 16 2 1 3. + 0 + <_> + + <_> + 17 15 4 3 -1. + <_> + 19 15 2 3 2. + 0 + <_> + + <_> + 17 15 4 4 -1. + <_> + 17 15 2 4 2. + 1 + <_> + + <_> + 17 18 2 4 -1. + <_> + 16 19 2 2 2. + 1 + <_> + + <_> + 17 18 5 3 -1. + <_> + 17 19 5 1 3. + 0 + <_> + + <_> + 17 19 1 3 -1. + <_> + 16 20 1 1 3. + 1 + <_> + + <_> + 17 20 1 3 -1. + <_> + 16 21 1 1 3. + 1 + <_> + + <_> + 17 20 3 4 -1. + <_> + 18 20 1 4 3. + 0 + <_> + + <_> + 18 0 2 2 -1. + <_> + 18 0 1 2 2. + 1 + <_> + + <_> + 18 0 6 1 -1. + <_> + 21 0 3 1 2. + 0 + <_> + + <_> + 18 0 6 5 -1. + <_> + 21 0 3 5 2. + 0 + <_> + + <_> + 18 0 6 12 -1. + <_> + 18 0 3 6 2. + <_> + 21 6 3 6 2. + 0 + <_> + + <_> + 18 2 3 1 -1. + <_> + 19 3 1 1 3. + 1 + <_> + + <_> + 18 2 4 1 -1. + <_> + 19 3 2 1 2. + 1 + <_> + + <_> + 18 2 4 3 -1. + <_> + 19 3 2 3 2. + 1 + <_> + + <_> + 18 4 4 3 -1. + <_> + 18 5 4 1 3. + 0 + <_> + + <_> + 18 5 1 2 -1. + <_> + 18 5 1 1 2. + 1 + <_> + + <_> + 18 6 2 3 -1. + <_> + 18 6 1 3 2. + 1 + <_> + + <_> + 18 6 4 3 -1. + <_> + 19 7 2 3 2. + 1 + <_> + + <_> + 18 6 4 4 -1. + <_> + 19 7 2 4 2. + 1 + <_> + + <_> + 18 6 2 5 -1. + <_> + 18 6 1 5 2. + 1 + <_> + + <_> + 18 6 4 6 -1. + <_> + 19 7 2 6 2. + 1 + <_> + + <_> + 18 6 2 3 -1. + <_> + 18 7 2 1 3. + 0 + <_> + + <_> + 18 6 4 1 -1. + <_> + 18 6 2 1 2. + 1 + <_> + + <_> + 18 6 5 3 -1. + <_> + 18 7 5 1 3. + 0 + <_> + + <_> + 18 6 6 3 -1. + <_> + 18 7 6 1 3. + 0 + <_> + + <_> + 18 7 3 2 -1. + <_> + 19 8 1 2 3. + 1 + <_> + + <_> + 18 7 3 5 -1. + <_> + 19 8 1 5 3. + 1 + <_> + + <_> + 18 8 1 3 -1. + <_> + 18 9 1 1 3. + 0 + <_> + + <_> + 18 8 2 3 -1. + <_> + 18 9 2 1 3. + 0 + <_> + + <_> + 18 8 2 2 -1. + <_> + 18 8 2 1 2. + 1 + <_> + + <_> + 18 9 3 1 -1. + <_> + 19 9 1 1 3. + 0 + <_> + + <_> + 18 9 2 2 -1. + <_> + 18 9 1 1 2. + <_> + 19 10 1 1 2. + 0 + <_> + + <_> + 18 9 3 2 -1. + <_> + 19 9 1 2 3. + 0 + <_> + + <_> + 18 9 2 4 -1. + <_> + 18 11 2 2 2. + 0 + <_> + + <_> + 18 9 6 9 -1. + <_> + 21 9 3 9 2. + 0 + <_> + + <_> + 18 9 6 3 -1. + <_> + 18 10 6 1 3. + 0 + <_> + + <_> + 18 10 2 1 -1. + <_> + 19 10 1 1 2. + 0 + <_> + + <_> + 18 10 1 3 -1. + <_> + 18 11 1 1 3. + 0 + <_> + + <_> + 18 10 2 2 -1. + <_> + 18 10 1 1 2. + <_> + 19 11 1 1 2. + 0 + <_> + + <_> + 18 10 6 2 -1. + <_> + 18 11 6 1 2. + 0 + <_> + + <_> + 18 11 3 4 -1. + <_> + 19 11 1 4 3. + 0 + <_> + + <_> + 18 11 3 13 -1. + <_> + 19 11 1 13 3. + 0 + <_> + + <_> + 18 11 2 8 -1. + <_> + 18 15 2 4 2. + 0 + <_> + + <_> + 18 11 6 1 -1. + <_> + 21 11 3 1 2. + 0 + <_> + + <_> + 18 12 6 2 -1. + <_> + 21 12 3 2 2. + 0 + <_> + + <_> + 18 12 3 8 -1. + <_> + 18 16 3 4 2. + 0 + <_> + + <_> + 18 13 2 4 -1. + <_> + 18 15 2 2 2. + 0 + <_> + + <_> + 18 14 4 4 -1. + <_> + 18 16 4 2 2. + 0 + <_> + + <_> + 18 15 4 5 -1. + <_> + 20 15 2 5 2. + 0 + <_> + + <_> + 18 16 2 4 -1. + <_> + 18 16 2 2 2. + 1 + <_> + + <_> + 18 17 2 5 -1. + <_> + 18 17 1 5 2. + 1 + <_> + + <_> + 18 18 1 3 -1. + <_> + 17 19 1 1 3. + 1 + <_> + + <_> + 18 20 1 3 -1. + <_> + 17 21 1 1 3. + 1 + <_> + + <_> + 19 0 2 3 -1. + <_> + 19 0 1 3 2. + 1 + <_> + + <_> + 19 2 3 1 -1. + <_> + 20 3 1 1 3. + 1 + <_> + + <_> + 19 2 4 3 -1. + <_> + 20 3 2 3 2. + 1 + <_> + + <_> + 19 3 3 1 -1. + <_> + 20 4 1 1 3. + 1 + <_> + + <_> + 19 4 1 2 -1. + <_> + 19 4 1 1 2. + 1 + <_> + + <_> + 19 4 3 1 -1. + <_> + 20 5 1 1 3. + 1 + <_> + + <_> + 19 4 1 3 -1. + <_> + 18 5 1 1 3. + 1 + <_> + + <_> + 19 4 1 4 -1. + <_> + 19 6 1 2 2. + 0 + <_> + + <_> + 19 4 5 9 -1. + <_> + 19 7 5 3 3. + 0 + <_> + + <_> + 19 5 3 1 -1. + <_> + 20 6 1 1 3. + 1 + <_> + + <_> + 19 6 1 3 -1. + <_> + 19 7 1 1 3. + 0 + <_> + + <_> + 19 6 1 3 -1. + <_> + 18 7 1 1 3. + 1 + <_> + + <_> + 19 6 2 3 -1. + <_> + 19 7 2 1 3. + 0 + <_> + + <_> + 19 6 5 9 -1. + <_> + 19 9 5 3 3. + 0 + <_> + + <_> + 19 7 1 3 -1. + <_> + 19 8 1 1 3. + 0 + <_> + + <_> + 19 7 3 4 -1. + <_> + 20 7 1 4 3. + 0 + <_> + + <_> + 19 7 2 4 -1. + <_> + 19 7 2 2 2. + 1 + <_> + + <_> + 19 8 1 3 -1. + <_> + 19 9 1 1 3. + 0 + <_> + + <_> + 19 8 3 3 -1. + <_> + 20 8 1 3 3. + 0 + <_> + + <_> + 19 9 2 1 -1. + <_> + 20 9 1 1 2. + 0 + <_> + + <_> + 19 9 2 2 -1. + <_> + 19 9 2 1 2. + 1 + <_> + + <_> + 19 10 2 2 -1. + <_> + 19 10 1 1 2. + <_> + 20 11 1 1 2. + 0 + <_> + + <_> + 19 10 3 4 -1. + <_> + 19 11 3 2 2. + 0 + <_> + + <_> + 19 12 4 8 -1. + <_> + 20 13 2 8 2. + 1 + <_> + + <_> + 19 12 3 10 -1. + <_> + 20 12 1 10 3. + 0 + <_> + + <_> + 19 12 3 12 -1. + <_> + 20 12 1 12 3. + 0 + <_> + + <_> + 19 13 3 9 -1. + <_> + 20 13 1 9 3. + 0 + <_> + + <_> + 19 14 4 6 -1. + <_> + 20 15 2 6 2. + 1 + <_> + + <_> + 19 15 3 6 -1. + <_> + 20 16 1 6 3. + 1 + <_> + + <_> + 19 17 1 3 -1. + <_> + 18 18 1 1 3. + 1 + <_> + + <_> + 19 18 1 3 -1. + <_> + 18 19 1 1 3. + 1 + <_> + + <_> + 19 19 1 3 -1. + <_> + 18 20 1 1 3. + 1 + <_> + + <_> + 19 19 1 4 -1. + <_> + 18 20 1 2 2. + 1 + <_> + + <_> + 19 20 1 3 -1. + <_> + 18 21 1 1 3. + 1 + <_> + + <_> + 19 21 5 3 -1. + <_> + 19 22 5 1 3. + 0 + <_> + + <_> + 20 0 4 4 -1. + <_> + 19 1 4 2 2. + 1 + <_> + + <_> + 20 3 3 1 -1. + <_> + 21 4 1 1 3. + 1 + <_> + + <_> + 20 3 3 2 -1. + <_> + 21 4 1 2 3. + 1 + <_> + + <_> + 20 4 1 3 -1. + <_> + 20 5 1 1 3. + 0 + <_> + + <_> + 20 4 3 1 -1. + <_> + 21 5 1 1 3. + 1 + <_> + + <_> + 20 4 3 2 -1. + <_> + 21 5 1 2 3. + 1 + <_> + + <_> + 20 5 3 1 -1. + <_> + 21 6 1 1 3. + 1 + <_> + + <_> + 20 6 4 3 -1. + <_> + 20 7 4 1 3. + 0 + <_> + + <_> + 20 8 3 2 -1. + <_> + 21 9 1 2 3. + 1 + <_> + + <_> + 20 8 3 3 -1. + <_> + 21 9 1 3 3. + 1 + <_> + + <_> + 20 9 3 2 -1. + <_> + 21 10 1 2 3. + 1 + <_> + + <_> + 20 9 4 10 -1. + <_> + 20 9 2 10 2. + 1 + <_> + + <_> + 20 10 1 3 -1. + <_> + 19 11 1 1 3. + 1 + <_> + + <_> + 20 10 2 2 -1. + <_> + 20 10 2 1 2. + 1 + <_> + + <_> + 20 11 4 9 -1. + <_> + 20 11 2 9 2. + 1 + <_> + + <_> + 20 14 4 6 -1. + <_> + 21 15 2 6 2. + 1 + <_> + + <_> + 20 14 2 7 -1. + <_> + 20 14 1 7 2. + 1 + <_> + + <_> + 20 15 3 4 -1. + <_> + 19 16 3 2 2. + 1 + <_> + + <_> + 20 16 4 4 -1. + <_> + 21 17 2 4 2. + 1 + <_> + + <_> + 20 17 3 5 -1. + <_> + 21 17 1 5 3. + 0 + <_> + + <_> + 20 20 1 3 -1. + <_> + 19 21 1 1 3. + 1 + <_> + + <_> + 20 20 4 3 -1. + <_> + 20 21 4 1 3. + 0 + <_> + + <_> + 21 1 2 16 -1. + <_> + 21 1 2 8 2. + 1 + <_> + + <_> + 21 1 3 4 -1. + <_> + 21 2 3 2 2. + 0 + <_> + + <_> + 21 3 3 2 -1. + <_> + 22 4 1 2 3. + 1 + <_> + + <_> + 21 4 3 3 -1. + <_> + 22 5 1 3 3. + 1 + <_> + + <_> + 21 10 1 3 -1. + <_> + 20 11 1 1 3. + 1 + <_> + + <_> + 21 10 2 2 -1. + <_> + 21 10 1 2 2. + 1 + <_> + + <_> + 21 10 3 4 -1. + <_> + 21 11 3 2 2. + 0 + <_> + + <_> + 21 11 1 2 -1. + <_> + 21 11 1 1 2. + 1 + <_> + + <_> + 21 15 2 3 -1. + <_> + 20 16 2 1 3. + 1 + <_> + + <_> + 21 16 1 3 -1. + <_> + 20 17 1 1 3. + 1 + <_> + + <_> + 21 16 3 8 -1. + <_> + 22 16 1 8 3. + 0 + <_> + + <_> + 21 16 2 3 -1. + <_> + 20 17 2 1 3. + 1 + <_> + + <_> + 21 17 1 3 -1. + <_> + 20 18 1 1 3. + 1 + <_> + + <_> + 21 17 3 7 -1. + <_> + 22 17 1 7 3. + 0 + <_> + + <_> + 21 19 3 5 -1. + <_> + 22 19 1 5 3. + 0 + <_> + + <_> + 22 1 2 4 -1. + <_> + 21 2 2 2 2. + 1 + <_> + + <_> + 22 2 1 16 -1. + <_> + 22 2 1 8 2. + 1 + <_> + + <_> + 22 9 2 4 -1. + <_> + 22 9 1 4 2. + 1 + <_> + + <_> + 22 10 1 3 -1. + <_> + 21 11 1 1 3. + 1 + <_> + + <_> + 22 10 2 7 -1. + <_> + 22 10 1 7 2. + 1 + <_> + + <_> + 22 10 2 3 -1. + <_> + 22 11 2 1 3. + 0 + <_> + + <_> + 22 10 2 3 -1. + <_> + 21 11 2 1 3. + 1 + <_> + + <_> + 22 11 1 3 -1. + <_> + 21 12 1 1 3. + 1 + <_> + + <_> + 22 12 1 3 -1. + <_> + 21 13 1 1 3. + 1 + <_> + + <_> + 22 13 1 3 -1. + <_> + 21 14 1 1 3. + 1 + <_> + + <_> + 22 16 1 3 -1. + <_> + 21 17 1 1 3. + 1 + <_> + + <_> + 23 7 1 3 -1. + <_> + 23 8 1 1 3. + 0 + <_> + + <_> + 23 10 1 3 -1. + <_> + 23 11 1 1 3. + 0 + <_> + + <_> + 23 11 1 2 -1. + <_> + 23 12 1 1 2. + 0 + <_> + + <_> + 23 11 1 3 -1. + <_> + 22 12 1 1 3. + 1 + <_> + + <_> + 23 15 1 4 -1. + <_> + 22 16 1 2 2. + 1 + diff --git a/venv/lib/python3.11/site-packages/cv2/data/haarcascade_frontalface_alt.xml b/venv/lib/python3.11/site-packages/cv2/data/haarcascade_frontalface_alt.xml new file mode 100644 index 0000000000000000000000000000000000000000..ade4b2121a68e6967cc558f4393dc8d828cee60e --- /dev/null +++ b/venv/lib/python3.11/site-packages/cv2/data/haarcascade_frontalface_alt.xml @@ -0,0 +1,24350 @@ + + + +BOOST + HAAR + 20 + 20 + + 213 + + 0 + 22 + + <_> + 3 + 8.2268941402435303e-01 + + <_> + + 0 -1 0 4.0141958743333817e-03 + + 3.3794190734624863e-02 8.3781069517135620e-01 + <_> + + 0 -1 1 1.5151339583098888e-02 + + 1.5141320228576660e-01 7.4888122081756592e-01 + <_> + + 0 -1 2 4.2109931819140911e-03 + + 9.0049281716346741e-02 6.3748198747634888e-01 + <_> + 16 + 6.9566087722778320e+00 + + <_> + + 0 -1 3 1.6227109590545297e-03 + + 6.9308586418628693e-02 7.1109461784362793e-01 + <_> + + 0 -1 4 2.2906649392098188e-03 + + 1.7958030104637146e-01 6.6686922311782837e-01 + <_> + + 0 -1 5 5.0025708042085171e-03 + + 1.6936729848384857e-01 6.5540069341659546e-01 + <_> + + 0 -1 6 7.9659894108772278e-03 + + 5.8663320541381836e-01 9.1414518654346466e-02 + <_> + + 0 -1 7 -3.5227010957896709e-03 + + 1.4131669700145721e-01 6.0318958759307861e-01 + <_> + + 0 -1 8 3.6667689681053162e-02 + + 3.6756721138954163e-01 7.9203182458877563e-01 + <_> + + 0 -1 9 9.3361474573612213e-03 + + 6.1613857746124268e-01 2.0885099470615387e-01 + <_> + + 0 -1 10 8.6961314082145691e-03 + + 2.8362309932708740e-01 6.3602739572525024e-01 + <_> + + 0 -1 11 1.1488880263641477e-03 + + 2.2235809266567230e-01 5.8007007837295532e-01 + <_> + + 0 -1 12 -2.1484689787030220e-03 + + 2.4064640700817108e-01 5.7870548963546753e-01 + <_> + + 0 -1 13 2.1219060290604830e-03 + + 5.5596548318862915e-01 1.3622370362281799e-01 + <_> + + 0 -1 14 -9.3949146568775177e-02 + + 8.5027372837066650e-01 4.7177401185035706e-01 + <_> + + 0 -1 15 1.3777789426967502e-03 + + 5.9936738014221191e-01 2.8345298767089844e-01 + <_> + + 0 -1 16 7.3063157498836517e-02 + + 4.3418860435485840e-01 7.0600342750549316e-01 + <_> + + 0 -1 17 3.6767389974556863e-04 + + 3.0278879404067993e-01 6.0515749454498291e-01 + <_> + + 0 -1 18 -6.0479710809886456e-03 + + 1.7984339594841003e-01 5.6752568483352661e-01 + <_> + 21 + 9.4985427856445312e+00 + + <_> + + 0 -1 19 -1.6510689631104469e-02 + + 6.6442251205444336e-01 1.4248579740524292e-01 + <_> + + 0 -1 20 2.7052499353885651e-03 + + 6.3253521919250488e-01 1.2884770333766937e-01 + <_> + + 0 -1 21 2.8069869149476290e-03 + + 1.2402880191802979e-01 6.1931931972503662e-01 + <_> + + 0 -1 22 -1.5402400167658925e-03 + + 1.4321430027484894e-01 5.6700158119201660e-01 + <_> + + 0 -1 23 -5.6386279175058007e-04 + + 1.6574330627918243e-01 5.9052079916000366e-01 + <_> + + 0 -1 24 1.9253729842603207e-03 + + 2.6955071091651917e-01 5.7388240098953247e-01 + <_> + + 0 -1 25 -5.0214841030538082e-03 + + 1.8935389816761017e-01 5.7827740907669067e-01 + <_> + + 0 -1 26 2.6365420781075954e-03 + + 2.3093290627002716e-01 5.6954258680343628e-01 + <_> + + 0 -1 27 -1.5127769438549876e-03 + + 2.7596020698547363e-01 5.9566420316696167e-01 + <_> + + 0 -1 28 -1.0157439857721329e-02 + + 1.7325380444526672e-01 5.5220472812652588e-01 + <_> + + 0 -1 29 -1.1953660286962986e-02 + + 1.3394099473953247e-01 5.5590140819549561e-01 + <_> + + 0 -1 30 4.8859491944313049e-03 + + 3.6287039518356323e-01 6.1888492107391357e-01 + <_> + + 0 -1 31 -8.0132916569709778e-02 + + 9.1211050748825073e-02 5.4759448766708374e-01 + <_> + + 0 -1 32 1.0643280111253262e-03 + + 3.7151429057121277e-01 5.7113999128341675e-01 + <_> + + 0 -1 33 -1.3419450260698795e-03 + + 5.9533137083053589e-01 3.3180978894233704e-01 + <_> + + 0 -1 34 -5.4601140320301056e-02 + + 1.8440659344196320e-01 5.6028461456298828e-01 + <_> + + 0 -1 35 2.9071690514683723e-03 + + 3.5942441225051880e-01 6.1317151784896851e-01 + <_> + + 0 -1 36 7.4718717951327562e-04 + + 5.9943532943725586e-01 3.4595629572868347e-01 + <_> + + 0 -1 37 4.3013808317482471e-03 + + 4.1726520657539368e-01 6.9908452033996582e-01 + <_> + + 0 -1 38 4.5017572119832039e-03 + + 4.5097151398658752e-01 7.8014570474624634e-01 + <_> + + 0 -1 39 2.4138500913977623e-02 + + 5.4382127523422241e-01 1.3198269903659821e-01 + <_> + 39 + 1.8412969589233398e+01 + + <_> + + 0 -1 40 1.9212230108678341e-03 + + 1.4152669906616211e-01 6.1998707056045532e-01 + <_> + + 0 -1 41 -1.2748669541906565e-04 + + 6.1910742521286011e-01 1.8849289417266846e-01 + <_> + + 0 -1 42 5.1409931620582938e-04 + + 1.4873969554901123e-01 5.8579277992248535e-01 + <_> + + 0 -1 43 4.1878609918057919e-03 + + 2.7469098567962646e-01 6.3592398166656494e-01 + <_> + + 0 -1 44 5.1015717908740044e-03 + + 5.8708512783050537e-01 2.1756289899349213e-01 + <_> + + 0 -1 45 -2.1448440384119749e-03 + + 5.8809447288513184e-01 2.9795908927917480e-01 + <_> + + 0 -1 46 -2.8977119363844395e-03 + + 2.3733270168304443e-01 5.8766472339630127e-01 + <_> + + 0 -1 47 -2.1610679104924202e-02 + + 1.2206549942493439e-01 5.1942020654678345e-01 + <_> + + 0 -1 48 -4.6299318782985210e-03 + + 2.6312309503555298e-01 5.8174091577529907e-01 + <_> + + 0 -1 49 5.9393711853772402e-04 + + 3.6386200785636902e-01 5.6985449790954590e-01 + <_> + + 0 -1 50 5.3878661245107651e-02 + + 4.3035310506820679e-01 7.5593662261962891e-01 + <_> + + 0 -1 51 1.8887349870055914e-03 + + 2.1226030588150024e-01 5.6134271621704102e-01 + <_> + + 0 -1 52 -2.3635339457541704e-03 + + 5.6318491697311401e-01 2.6427671313285828e-01 + <_> + + 0 -1 53 2.4017799645662308e-02 + + 5.7971078157424927e-01 2.7517059445381165e-01 + <_> + + 0 -1 54 2.0543030404951423e-04 + + 2.7052420377731323e-01 5.7525688409805298e-01 + <_> + + 0 -1 55 8.4790197433903813e-04 + + 5.4356247186660767e-01 2.3348769545555115e-01 + <_> + + 0 -1 56 1.4091329649090767e-03 + + 5.3194248676300049e-01 2.0631550252437592e-01 + <_> + + 0 -1 57 1.4642629539594054e-03 + + 5.4189807176589966e-01 3.0688610672950745e-01 + <_> + + 0 -1 58 1.6352549428120255e-03 + + 3.6953729391098022e-01 6.1128681898117065e-01 + <_> + + 0 -1 59 8.3172752056270838e-04 + + 3.5650369524955750e-01 6.0252362489700317e-01 + <_> + + 0 -1 60 -2.0998890977352858e-03 + + 1.9139820337295532e-01 5.3628271818161011e-01 + <_> + + 0 -1 61 -7.4213981861248612e-04 + + 3.8355550169944763e-01 5.5293101072311401e-01 + <_> + + 0 -1 62 3.2655049581080675e-03 + + 4.3128961324691772e-01 7.1018958091735840e-01 + <_> + + 0 -1 63 8.9134991867467761e-04 + + 3.9848309755325317e-01 6.3919639587402344e-01 + <_> + + 0 -1 64 -1.5284179709851742e-02 + + 2.3667329549789429e-01 5.4337137937545776e-01 + <_> + + 0 -1 65 4.8381411470472813e-03 + + 5.8175009489059448e-01 3.2391890883445740e-01 + <_> + + 0 -1 66 -9.1093179071322083e-04 + + 5.5405938625335693e-01 2.9118689894676208e-01 + <_> + + 0 -1 67 -6.1275060288608074e-03 + + 1.7752550542354584e-01 5.1966291666030884e-01 + <_> + + 0 -1 68 -4.4576259097084403e-04 + + 3.0241701006889343e-01 5.5335938930511475e-01 + <_> + + 0 -1 69 2.2646540775895119e-02 + + 4.4149309396743774e-01 6.9753772020339966e-01 + <_> + + 0 -1 70 -1.8804960418492556e-03 + + 2.7913948893547058e-01 5.4979521036148071e-01 + <_> + + 0 -1 71 7.0889107882976532e-03 + + 5.2631992101669312e-01 2.3855470120906830e-01 + <_> + + 0 -1 72 1.7318050377070904e-03 + + 4.3193790316581726e-01 6.9836008548736572e-01 + <_> + + 0 -1 73 -6.8482700735330582e-03 + + 3.0820429325103760e-01 5.3909200429916382e-01 + <_> + + 0 -1 74 -1.5062530110299122e-05 + + 5.5219221115112305e-01 3.1203660368919373e-01 + <_> + + 0 -1 75 2.9475569725036621e-02 + + 5.4013228416442871e-01 1.7706030607223511e-01 + <_> + + 0 -1 76 8.1387329846620560e-03 + + 5.1786178350448608e-01 1.2110190093517303e-01 + <_> + + 0 -1 77 2.0942950621247292e-02 + + 5.2902942895889282e-01 3.3112218976020813e-01 + <_> + + 0 -1 78 -9.5665529370307922e-03 + + 7.4719941616058350e-01 4.4519689679145813e-01 + <_> + 33 + 1.5324139595031738e+01 + + <_> + + 0 -1 79 -2.8206960996612906e-04 + + 2.0640860497951508e-01 6.0767322778701782e-01 + <_> + + 0 -1 80 1.6790600493550301e-03 + + 5.8519971370697021e-01 1.2553839385509491e-01 + <_> + + 0 -1 81 6.9827912375330925e-04 + + 9.4018429517745972e-02 5.7289612293243408e-01 + <_> + + 0 -1 82 7.8959012171253562e-04 + + 1.7819879949092865e-01 5.6943088769912720e-01 + <_> + + 0 -1 83 -2.8560499195009470e-03 + + 1.6383990645408630e-01 5.7886648178100586e-01 + <_> + + 0 -1 84 -3.8122469559311867e-03 + + 2.0854400098323822e-01 5.5085647106170654e-01 + <_> + + 0 -1 85 1.5896620461717248e-03 + + 5.7027608156204224e-01 1.8572150170803070e-01 + <_> + + 0 -1 86 1.0078339837491512e-02 + + 5.1169431209564209e-01 2.1897700428962708e-01 + <_> + + 0 -1 87 -6.3526302576065063e-02 + + 7.1313798427581787e-01 4.0438130497932434e-01 + <_> + + 0 -1 88 -9.1031491756439209e-03 + + 2.5671818852424622e-01 5.4639732837677002e-01 + <_> + + 0 -1 89 -2.4035000242292881e-03 + + 1.7006659507751465e-01 5.5909740924835205e-01 + <_> + + 0 -1 90 1.5226360410451889e-03 + + 5.4105567932128906e-01 2.6190540194511414e-01 + <_> + + 0 -1 91 1.7997439950704575e-02 + + 3.7324368953704834e-01 6.5352207422256470e-01 + <_> + + 0 -1 92 -6.4538191072642803e-03 + + 2.6264819502830505e-01 5.5374461412429810e-01 + <_> + + 0 -1 93 -1.1880760081112385e-02 + + 2.0037539303302765e-01 5.5447459220886230e-01 + <_> + + 0 -1 94 1.2713660253211856e-03 + + 5.5919027328491211e-01 3.0319759249687195e-01 + <_> + + 0 -1 95 1.1376109905540943e-03 + + 2.7304071187973022e-01 5.6465089321136475e-01 + <_> + + 0 -1 96 -4.2651998810470104e-03 + + 1.4059090614318848e-01 5.4618209600448608e-01 + <_> + + 0 -1 97 -2.9602861031889915e-03 + + 1.7950350046157837e-01 5.4592901468276978e-01 + <_> + + 0 -1 98 -8.8448226451873779e-03 + + 5.7367831468582153e-01 2.8092199563980103e-01 + <_> + + 0 -1 99 -6.6430689767003059e-03 + + 2.3706759512424469e-01 5.5038261413574219e-01 + <_> + + 0 -1 100 3.9997808635234833e-03 + + 5.6081998348236084e-01 3.3042821288108826e-01 + <_> + + 0 -1 101 -4.1221720166504383e-03 + + 1.6401059925556183e-01 5.3789931535720825e-01 + <_> + + 0 -1 102 1.5624909661710262e-02 + + 5.2276492118835449e-01 2.2886039316654205e-01 + <_> + + 0 -1 103 -1.0356419719755650e-02 + + 7.0161938667297363e-01 4.2529278993606567e-01 + <_> + + 0 -1 104 -8.7960809469223022e-03 + + 2.7673470973968506e-01 5.3558301925659180e-01 + <_> + + 0 -1 105 1.6226939857006073e-01 + + 4.3422400951385498e-01 7.4425792694091797e-01 + <_> + + 0 -1 106 4.5542530715465546e-03 + + 5.7264858484268188e-01 2.5821250677108765e-01 + <_> + + 0 -1 107 -2.1309209987521172e-03 + + 2.1068480610847473e-01 5.3610187768936157e-01 + <_> + + 0 -1 108 -1.3208420015871525e-02 + + 7.5937908887863159e-01 4.5524680614471436e-01 + <_> + + 0 -1 109 -6.5996676683425903e-02 + + 1.2524759769439697e-01 5.3440397977828979e-01 + <_> + + 0 -1 110 7.9142656177282333e-03 + + 3.3153840899467468e-01 5.6010431051254272e-01 + <_> + + 0 -1 111 2.0894279703497887e-02 + + 5.5060499906539917e-01 2.7688381075859070e-01 + <_> + 44 + 2.1010639190673828e+01 + + <_> + + 0 -1 112 1.1961159761995077e-03 + + 1.7626909911632538e-01 6.1562412977218628e-01 + <_> + + 0 -1 113 -1.8679830245673656e-03 + + 6.1181068420410156e-01 1.8323999643325806e-01 + <_> + + 0 -1 114 -1.9579799845814705e-04 + + 9.9044263362884521e-02 5.7238161563873291e-01 + <_> + + 0 -1 115 -8.0255657667294145e-04 + + 5.5798798799514771e-01 2.3772829771041870e-01 + <_> + + 0 -1 116 -2.4510810617357492e-03 + + 2.2314579784870148e-01 5.8589351177215576e-01 + <_> + + 0 -1 117 5.0361850298941135e-04 + + 2.6539939641952515e-01 5.7941037416458130e-01 + <_> + + 0 -1 118 4.0293349884450436e-03 + + 5.8038270473480225e-01 2.4848650395870209e-01 + <_> + + 0 -1 119 -1.4451709575951099e-02 + + 1.8303519487380981e-01 5.4842048883438110e-01 + <_> + + 0 -1 120 2.0380979403853416e-03 + + 3.3635589480400085e-01 6.0510927438735962e-01 + <_> + + 0 -1 121 -1.6155190533027053e-03 + + 2.2866420447826385e-01 5.4412460327148438e-01 + <_> + + 0 -1 122 3.3458340913057327e-03 + + 5.6259131431579590e-01 2.3923380672931671e-01 + <_> + + 0 -1 123 1.6379579901695251e-03 + + 3.9069938659667969e-01 5.9646219015121460e-01 + <_> + + 0 -1 124 3.0251210555434227e-02 + + 5.2484822273254395e-01 1.5757469832897186e-01 + <_> + + 0 -1 125 3.7251990288496017e-02 + + 4.1943109035491943e-01 6.7484188079833984e-01 + <_> + + 0 -1 126 -2.5109790265560150e-02 + + 1.8825499713420868e-01 5.4734510183334351e-01 + <_> + + 0 -1 127 -5.3099058568477631e-03 + + 1.3399730622768402e-01 5.2271109819412231e-01 + <_> + + 0 -1 128 1.2086479691788554e-03 + + 3.7620881199836731e-01 6.1096358299255371e-01 + <_> + + 0 -1 129 -2.1907679736614227e-02 + + 2.6631429791450500e-01 5.4040068387985229e-01 + <_> + + 0 -1 130 5.4116579703986645e-03 + + 5.3635787963867188e-01 2.2322730720043182e-01 + <_> + + 0 -1 131 6.9946326315402985e-02 + + 5.3582328557968140e-01 2.4536980688571930e-01 + <_> + + 0 -1 132 3.4520021290518343e-04 + + 2.4096719920635223e-01 5.3769302368164062e-01 + <_> + + 0 -1 133 1.2627709656953812e-03 + + 5.4258567094802856e-01 3.1556931138038635e-01 + <_> + + 0 -1 134 2.2719509899616241e-02 + + 4.1584059596061707e-01 6.5978652238845825e-01 + <_> + + 0 -1 135 -1.8111000536009669e-03 + + 2.8112530708312988e-01 5.5052447319030762e-01 + <_> + + 0 -1 136 3.3469670452177525e-03 + + 5.2600282430648804e-01 1.8914650380611420e-01 + <_> + + 0 -1 137 4.0791751234792173e-04 + + 5.6735092401504517e-01 3.3442100882530212e-01 + <_> + + 0 -1 138 1.2734799645841122e-02 + + 5.3435921669006348e-01 2.3956120014190674e-01 + <_> + + 0 -1 139 -7.3119727894663811e-03 + + 6.0108900070190430e-01 4.0222078561782837e-01 + <_> + + 0 -1 140 -5.6948751211166382e-02 + + 8.1991511583328247e-01 4.5431908965110779e-01 + <_> + + 0 -1 141 -5.0116591155529022e-03 + + 2.2002810239791870e-01 5.3577107191085815e-01 + <_> + + 0 -1 142 6.0334368608891964e-03 + + 4.4130811095237732e-01 7.1817511320114136e-01 + <_> + + 0 -1 143 3.9437441155314445e-03 + + 5.4788607358932495e-01 2.7917331457138062e-01 + <_> + + 0 -1 144 -3.6591119132936001e-03 + + 6.3578677177429199e-01 3.9897239208221436e-01 + <_> + + 0 -1 145 -3.8456181064248085e-03 + + 3.4936860203742981e-01 5.3006649017333984e-01 + <_> + + 0 -1 146 -7.1926261298358440e-03 + + 1.1196149885654449e-01 5.2296727895736694e-01 + <_> + + 0 -1 147 -5.2798941731452942e-02 + + 2.3871029913425446e-01 5.4534512758255005e-01 + <_> + + 0 -1 148 -7.9537667334079742e-03 + + 7.5869178771972656e-01 4.4393768906593323e-01 + <_> + + 0 -1 149 -2.7344180271029472e-03 + + 2.5654768943786621e-01 5.4893219470977783e-01 + <_> + + 0 -1 150 -1.8507939530536532e-03 + + 6.7343479394912720e-01 4.2524749040603638e-01 + <_> + + 0 -1 151 1.5918919816613197e-02 + + 5.4883527755737305e-01 2.2926619648933411e-01 + <_> + + 0 -1 152 -1.2687679845839739e-03 + + 6.1043310165405273e-01 4.0223899483680725e-01 + <_> + + 0 -1 153 6.2883910723030567e-03 + + 5.3108531236648560e-01 1.5361930429935455e-01 + <_> + + 0 -1 154 -6.2259892001748085e-03 + + 1.7291119694709778e-01 5.2416062355041504e-01 + <_> + + 0 -1 155 -1.2132599949836731e-02 + + 6.5977597236633301e-01 4.3251821398735046e-01 + <_> + 50 + 2.3918790817260742e+01 + + <_> + + 0 -1 156 -3.9184908382594585e-03 + + 6.1034351587295532e-01 1.4693309366703033e-01 + <_> + + 0 -1 157 1.5971299726516008e-03 + + 2.6323631405830383e-01 5.8964669704437256e-01 + <_> + + 0 -1 158 1.7780110239982605e-02 + + 5.8728742599487305e-01 1.7603619396686554e-01 + <_> + + 0 -1 159 6.5334769897162914e-04 + + 1.5678019821643829e-01 5.5960661172866821e-01 + <_> + + 0 -1 160 -2.8353091329336166e-04 + + 1.9131539762020111e-01 5.7320362329483032e-01 + <_> + + 0 -1 161 1.6104689566418529e-03 + + 2.9149138927459717e-01 5.6230807304382324e-01 + <_> + + 0 -1 162 -9.7750619053840637e-02 + + 1.9434769451618195e-01 5.6482332944869995e-01 + <_> + + 0 -1 163 5.5182358482852578e-04 + + 3.1346169114112854e-01 5.5046397447586060e-01 + <_> + + 0 -1 164 -1.2858220376074314e-02 + + 2.5364819169044495e-01 5.7601428031921387e-01 + <_> + + 0 -1 165 4.1530239395797253e-03 + + 5.7677221298217773e-01 3.6597740650177002e-01 + <_> + + 0 -1 166 1.7092459602281451e-03 + + 2.8431910276412964e-01 5.9189391136169434e-01 + <_> + + 0 -1 167 7.5217359699308872e-03 + + 4.0524271130561829e-01 6.1831092834472656e-01 + <_> + + 0 -1 168 2.2479810286313295e-03 + + 5.7837551832199097e-01 3.1354010105133057e-01 + <_> + + 0 -1 169 5.2006211131811142e-02 + + 5.5413120985031128e-01 1.9166369736194611e-01 + <_> + + 0 -1 170 1.2085529975593090e-02 + + 4.0326559543609619e-01 6.6445910930633545e-01 + <_> + + 0 -1 171 1.4687820112158079e-05 + + 3.5359779000282288e-01 5.7093828916549683e-01 + <_> + + 0 -1 172 7.1395188570022583e-06 + + 3.0374449491500854e-01 5.6102699041366577e-01 + <_> + + 0 -1 173 -4.6001640148460865e-03 + + 7.1810871362686157e-01 4.5803260803222656e-01 + <_> + + 0 -1 174 2.0058949012309313e-03 + + 5.6219518184661865e-01 2.9536840319633484e-01 + <_> + + 0 -1 175 4.5050270855426788e-03 + + 4.6153879165649414e-01 7.6190179586410522e-01 + <_> + + 0 -1 176 1.1746830306947231e-02 + + 5.3438371419906616e-01 1.7725290358066559e-01 + <_> + + 0 -1 177 -5.8316338807344437e-02 + + 1.6862459480762482e-01 5.3407722711563110e-01 + <_> + + 0 -1 178 2.3629379575140774e-04 + + 3.7920561432838440e-01 6.0268038511276245e-01 + <_> + + 0 -1 179 -7.8156180679798126e-03 + + 1.5128670632839203e-01 5.3243237733840942e-01 + <_> + + 0 -1 180 -1.0876160115003586e-02 + + 2.0818220078945160e-01 5.3199452161788940e-01 + <_> + + 0 -1 181 -2.7745519764721394e-03 + + 4.0982469916343689e-01 5.2103281021118164e-01 + <_> + + 0 -1 182 -7.8276381827890873e-04 + + 5.6932741403579712e-01 3.4788420796394348e-01 + <_> + + 0 -1 183 1.3870409689843655e-02 + + 5.3267508745193481e-01 2.2576980292797089e-01 + <_> + + 0 -1 184 -2.3674910888075829e-02 + + 1.5513050556182861e-01 5.2007079124450684e-01 + <_> + + 0 -1 185 -1.4879409718560055e-05 + + 5.5005669593811035e-01 3.8201761245727539e-01 + <_> + + 0 -1 186 3.6190641112625599e-03 + + 4.2386838793754578e-01 6.6397482156753540e-01 + <_> + + 0 -1 187 -1.9817110151052475e-02 + + 2.1500380337238312e-01 5.3823578357696533e-01 + <_> + + 0 -1 188 -3.8154039066284895e-03 + + 6.6757112741470337e-01 4.2152971029281616e-01 + <_> + + 0 -1 189 -4.9775829538702965e-03 + + 2.2672890126705170e-01 5.3863281011581421e-01 + <_> + + 0 -1 190 2.2441020701080561e-03 + + 4.3086910247802734e-01 6.8557357788085938e-01 + <_> + + 0 -1 191 1.2282459996640682e-02 + + 5.8366149663925171e-01 3.4674790501594543e-01 + <_> + + 0 -1 192 -2.8548699337989092e-03 + + 7.0169448852539062e-01 4.3114539980888367e-01 + <_> + + 0 -1 193 -3.7875669077038765e-03 + + 2.8953450918197632e-01 5.2249461412429810e-01 + <_> + + 0 -1 194 -1.2201230274513364e-03 + + 2.9755708575248718e-01 5.4816448688507080e-01 + <_> + + 0 -1 195 1.0160599835216999e-02 + + 4.8888179659843445e-01 8.1826978921890259e-01 + <_> + + 0 -1 196 -1.6174569725990295e-02 + + 1.4814929664134979e-01 5.2399927377700806e-01 + <_> + + 0 -1 197 1.9292460754513741e-02 + + 4.7863098978996277e-01 7.3781907558441162e-01 + <_> + + 0 -1 198 -3.2479539513587952e-03 + + 7.3742228746414185e-01 4.4706439971923828e-01 + <_> + + 0 -1 199 -9.3803480267524719e-03 + + 3.4891548752784729e-01 5.5379962921142578e-01 + <_> + + 0 -1 200 -1.2606129981577396e-02 + + 2.3796869814395905e-01 5.3154432773590088e-01 + <_> + + 0 -1 201 -2.5621930137276649e-02 + + 1.9646880030632019e-01 5.1387697458267212e-01 + <_> + + 0 -1 202 -7.5741496402770281e-05 + + 5.5905228853225708e-01 3.3658531308174133e-01 + <_> + + 0 -1 203 -8.9210882782936096e-02 + + 6.3404656946659088e-02 5.1626348495483398e-01 + <_> + + 0 -1 204 -2.7670480776578188e-03 + + 7.3234677314758301e-01 4.4907060265541077e-01 + <_> + + 0 -1 205 2.7152578695677221e-04 + + 4.1148349642753601e-01 5.9855180978775024e-01 + <_> + 51 + 2.4527879714965820e+01 + + <_> + + 0 -1 206 1.4786219689995050e-03 + + 2.6635450124740601e-01 6.6433167457580566e-01 + <_> + + 0 -1 207 -1.8741659587249160e-03 + + 6.1438488960266113e-01 2.5185129046440125e-01 + <_> + + 0 -1 208 -1.7151009524241090e-03 + + 5.7663410902023315e-01 2.3974630236625671e-01 + <_> + + 0 -1 209 -1.8939269939437509e-03 + + 5.6820458173751831e-01 2.5291448831558228e-01 + <_> + + 0 -1 210 -5.3006052039563656e-03 + + 1.6406759619712830e-01 5.5560797452926636e-01 + <_> + + 0 -1 211 -4.6662531793117523e-02 + + 6.1231541633605957e-01 4.7628301382064819e-01 + <_> + + 0 -1 212 -7.9431332414969802e-04 + + 5.7078588008880615e-01 2.8394040465354919e-01 + <_> + + 0 -1 213 1.4891670085489750e-02 + + 4.0896728634834290e-01 6.0063672065734863e-01 + <_> + + 0 -1 214 -1.2046529445797205e-03 + + 5.7124507427215576e-01 2.7052891254425049e-01 + <_> + + 0 -1 215 6.0619381256401539e-03 + + 5.2625042200088501e-01 3.2622259855270386e-01 + <_> + + 0 -1 216 -2.5286648888140917e-03 + + 6.8538308143615723e-01 4.1992568969726562e-01 + <_> + + 0 -1 217 -5.9010218828916550e-03 + + 3.2662820816040039e-01 5.4348129034042358e-01 + <_> + + 0 -1 218 5.6702760048210621e-03 + + 5.4684108495712280e-01 2.3190039396286011e-01 + <_> + + 0 -1 219 -3.0304100364446640e-03 + + 5.5706679821014404e-01 2.7082380652427673e-01 + <_> + + 0 -1 220 2.9803649522364140e-03 + + 3.7005689740180969e-01 5.8906257152557373e-01 + <_> + + 0 -1 221 -7.5840510427951813e-02 + + 2.1400700509548187e-01 5.4199481010437012e-01 + <_> + + 0 -1 222 1.9262539222836494e-02 + + 5.5267721414566040e-01 2.7265900373458862e-01 + <_> + + 0 -1 223 1.8888259364757687e-04 + + 3.9580118656158447e-01 6.0172098875045776e-01 + <_> + + 0 -1 224 2.9369549825787544e-02 + + 5.2413737773895264e-01 1.4357580244541168e-01 + <_> + + 0 -1 225 1.0417619487270713e-03 + + 3.3854091167449951e-01 5.9299832582473755e-01 + <_> + + 0 -1 226 2.6125640142709017e-03 + + 5.4853779077529907e-01 3.0215978622436523e-01 + <_> + + 0 -1 227 9.6977467183023691e-04 + + 3.3752760291099548e-01 5.5320328474044800e-01 + <_> + + 0 -1 228 5.9512659208849072e-04 + + 5.6317430734634399e-01 3.3593991398811340e-01 + <_> + + 0 -1 229 -1.0156559944152832e-01 + + 6.3735038042068481e-02 5.2304250001907349e-01 + <_> + + 0 -1 230 3.6156699061393738e-02 + + 5.1369631290435791e-01 1.0295289754867554e-01 + <_> + + 0 -1 231 3.4624140243977308e-03 + + 3.8793200254440308e-01 5.5582892894744873e-01 + <_> + + 0 -1 232 1.9554980099201202e-02 + + 5.2500867843627930e-01 1.8758599460124969e-01 + <_> + + 0 -1 233 -2.3121440317481756e-03 + + 6.6720288991928101e-01 4.6796411275863647e-01 + <_> + + 0 -1 234 -1.8605289515107870e-03 + + 7.1633791923522949e-01 4.3346709012985229e-01 + <_> + + 0 -1 235 -9.4026362057775259e-04 + + 3.0213609337806702e-01 5.6502032279968262e-01 + <_> + + 0 -1 236 -5.2418331615626812e-03 + + 1.8200090527534485e-01 5.2502560615539551e-01 + <_> + + 0 -1 237 1.1729019752237946e-04 + + 3.3891880512237549e-01 5.4459732770919800e-01 + <_> + + 0 -1 238 1.1878840159624815e-03 + + 4.0853491425514221e-01 6.2535631656646729e-01 + <_> + + 0 -1 239 -1.0881359688937664e-02 + + 3.3783990144729614e-01 5.7000827789306641e-01 + <_> + + 0 -1 240 1.7354859737679362e-03 + + 4.2046359181404114e-01 6.5230387449264526e-01 + <_> + + 0 -1 241 -6.5119052305817604e-03 + + 2.5952160358428955e-01 5.4281437397003174e-01 + <_> + + 0 -1 242 -1.2136430013924837e-03 + + 6.1651438474655151e-01 3.9778938889503479e-01 + <_> + + 0 -1 243 -1.0354240424931049e-02 + + 1.6280280053615570e-01 5.2195048332214355e-01 + <_> + + 0 -1 244 5.5858830455690622e-04 + + 3.1996509432792664e-01 5.5035740137100220e-01 + <_> + + 0 -1 245 1.5299649909138680e-02 + + 4.1039940714836121e-01 6.1223882436752319e-01 + <_> + + 0 -1 246 -2.1588210016489029e-02 + + 1.0349129885435104e-01 5.1973849534988403e-01 + <_> + + 0 -1 247 -1.2834629416465759e-01 + + 8.4938651323318481e-01 4.8931029438972473e-01 + <_> + + 0 -1 248 -2.2927189711481333e-03 + + 3.1301578879356384e-01 5.4715752601623535e-01 + <_> + + 0 -1 249 7.9915106296539307e-02 + + 4.8563209176063538e-01 6.0739892721176147e-01 + <_> + + 0 -1 250 -7.9441092908382416e-02 + + 8.3946740627288818e-01 4.6245330572128296e-01 + <_> + + 0 -1 251 -5.2800010889768600e-03 + + 1.8816959857940674e-01 5.3066980838775635e-01 + <_> + + 0 -1 252 1.0463109938427806e-03 + + 5.2712291479110718e-01 2.5830659270286560e-01 + <_> + + 0 -1 253 2.6317298761568964e-04 + + 4.2353048920631409e-01 5.7354408502578735e-01 + <_> + + 0 -1 254 -3.6173160187900066e-03 + + 6.9343960285186768e-01 4.4954448938369751e-01 + <_> + + 0 -1 255 1.1421879753470421e-02 + + 5.9009212255477905e-01 4.1381931304931641e-01 + <_> + + 0 -1 256 -1.9963278900831938e-03 + + 6.4663827419281006e-01 4.3272399902343750e-01 + <_> + 56 + 2.7153350830078125e+01 + + <_> + + 0 -1 257 -9.9691245704889297e-03 + + 6.1423242092132568e-01 2.4822120368480682e-01 + <_> + + 0 -1 258 7.3073059320449829e-04 + + 5.7049518823623657e-01 2.3219659924507141e-01 + <_> + + 0 -1 259 6.4045301405712962e-04 + + 2.1122519671916962e-01 5.8149331808090210e-01 + <_> + + 0 -1 260 4.5424019917845726e-03 + + 2.9504820704460144e-01 5.8663117885589600e-01 + <_> + + 0 -1 261 9.2477443104144186e-05 + + 2.9909908771514893e-01 5.7913267612457275e-01 + <_> + + 0 -1 262 -8.6603146046400070e-03 + + 2.8130298852920532e-01 5.6355422735214233e-01 + <_> + + 0 -1 263 8.0515816807746887e-03 + + 3.5353690385818481e-01 6.0547572374343872e-01 + <_> + + 0 -1 264 4.3835240649059415e-04 + + 5.5965322256088257e-01 2.7315109968185425e-01 + <_> + + 0 -1 265 -9.8168973636347800e-05 + + 5.9780317544937134e-01 3.6385610699653625e-01 + <_> + + 0 -1 266 -1.1298790341243148e-03 + + 2.7552521228790283e-01 5.4327291250228882e-01 + <_> + + 0 -1 267 6.4356150105595589e-03 + + 4.3056419491767883e-01 7.0698332786560059e-01 + <_> + + 0 -1 268 -5.6829329580068588e-02 + + 2.4952429533004761e-01 5.2949970960617065e-01 + <_> + + 0 -1 269 4.0668169967830181e-03 + + 5.4785531759262085e-01 2.4977239966392517e-01 + <_> + + 0 -1 270 4.8164798499783501e-05 + + 3.9386010169982910e-01 5.7063561677932739e-01 + <_> + + 0 -1 271 6.1795017682015896e-03 + + 4.4076061248779297e-01 7.3947668075561523e-01 + <_> + + 0 -1 272 6.4985752105712891e-03 + + 5.4452431201934814e-01 2.4791529774665833e-01 + <_> + + 0 -1 273 -1.0211090557277203e-03 + + 2.5447669625282288e-01 5.3389710187911987e-01 + <_> + + 0 -1 274 -5.4247528314590454e-03 + + 2.7188581228256226e-01 5.3240692615509033e-01 + <_> + + 0 -1 275 -1.0559899965301156e-03 + + 3.1782880425453186e-01 5.5345088243484497e-01 + <_> + + 0 -1 276 6.6465808777138591e-04 + + 4.2842191457748413e-01 6.5581941604614258e-01 + <_> + + 0 -1 277 -2.7524109464138746e-04 + + 5.9028607606887817e-01 3.8102629780769348e-01 + <_> + + 0 -1 278 4.2293202131986618e-03 + + 3.8164898753166199e-01 5.7093858718872070e-01 + <_> + + 0 -1 279 -3.2868210691958666e-03 + + 1.7477439343929291e-01 5.2595442533493042e-01 + <_> + + 0 -1 280 1.5611879643984139e-04 + + 3.6017221212387085e-01 5.7256120443344116e-01 + <_> + + 0 -1 281 -7.3621381488919724e-06 + + 5.4018580913543701e-01 3.0444970726966858e-01 + <_> + + 0 -1 282 -1.4767250046133995e-02 + + 3.2207700610160828e-01 5.5734348297119141e-01 + <_> + + 0 -1 283 2.4489590898156166e-02 + + 4.3015280365943909e-01 6.5188127756118774e-01 + <_> + + 0 -1 284 -3.7652091123163700e-04 + + 3.5645830631256104e-01 5.5982369184494019e-01 + <_> + + 0 -1 285 7.3657688517414499e-06 + + 3.4907829761505127e-01 5.5618977546691895e-01 + <_> + + 0 -1 286 -1.5099939890205860e-02 + + 1.7762720584869385e-01 5.3352999687194824e-01 + <_> + + 0 -1 287 -3.8316650316119194e-03 + + 6.1496877670288086e-01 4.2213940620422363e-01 + <_> + + 0 -1 288 1.6925400123000145e-02 + + 5.4130148887634277e-01 2.1665850281715393e-01 + <_> + + 0 -1 289 -3.0477850232273340e-03 + + 6.4494907855987549e-01 4.3546178936958313e-01 + <_> + + 0 -1 290 3.2140589319169521e-03 + + 5.4001551866531372e-01 3.5232171416282654e-01 + <_> + + 0 -1 291 -4.0023201145231724e-03 + + 2.7745240926742554e-01 5.3384172916412354e-01 + <_> + + 0 -1 292 7.4182129465043545e-03 + + 5.6767392158508301e-01 3.7028178572654724e-01 + <_> + + 0 -1 293 -8.8764587417244911e-03 + + 7.7492219209671021e-01 4.5836889743804932e-01 + <_> + + 0 -1 294 2.7311739977449179e-03 + + 5.3387218713760376e-01 3.9966610074043274e-01 + <_> + + 0 -1 295 -2.5082379579544067e-03 + + 5.6119632720947266e-01 3.7774989008903503e-01 + <_> + + 0 -1 296 -8.0541074275970459e-03 + + 2.9152289032936096e-01 5.1791828870773315e-01 + <_> + + 0 -1 297 -9.7938813269138336e-04 + + 5.5364328622817993e-01 3.7001928687095642e-01 + <_> + + 0 -1 298 -5.8745909482240677e-03 + + 3.7543910741806030e-01 5.6793761253356934e-01 + <_> + + 0 -1 299 -4.4936719350516796e-03 + + 7.0196992158889771e-01 4.4809499382972717e-01 + <_> + + 0 -1 300 -5.4389229044318199e-03 + + 2.3103649914264679e-01 5.3133869171142578e-01 + <_> + + 0 -1 301 -7.5094640487805009e-04 + + 5.8648687601089478e-01 4.1293430328369141e-01 + <_> + + 0 -1 302 1.4528800420521293e-05 + + 3.7324070930480957e-01 5.6196212768554688e-01 + <_> + + 0 -1 303 4.0758069604635239e-02 + + 5.3120911121368408e-01 2.7205219864845276e-01 + <_> + + 0 -1 304 6.6505931317806244e-03 + + 4.7100159525871277e-01 6.6934937238693237e-01 + <_> + + 0 -1 305 4.5759351924061775e-03 + + 5.1678192615509033e-01 1.6372759640216827e-01 + <_> + + 0 -1 306 6.5269311890006065e-03 + + 5.3976088762283325e-01 2.9385319352149963e-01 + <_> + + 0 -1 307 -1.3660379685461521e-02 + + 7.0864880084991455e-01 4.5322000980377197e-01 + <_> + + 0 -1 308 2.7358869090676308e-02 + + 5.2064812183380127e-01 3.5892319679260254e-01 + <_> + + 0 -1 309 6.2197551596909761e-04 + + 3.5070759057998657e-01 5.4411232471466064e-01 + <_> + + 0 -1 310 -3.3077080734074116e-03 + + 5.8595228195190430e-01 4.0248918533325195e-01 + <_> + + 0 -1 311 -1.0631109587848186e-02 + + 6.7432671785354614e-01 4.4226029515266418e-01 + <_> + + 0 -1 312 1.9441649317741394e-02 + + 5.2827161550521851e-01 1.7979049682617188e-01 + <_> + 71 + 3.4554111480712891e+01 + + <_> + + 0 -1 313 -5.5052167735993862e-03 + + 5.9147310256958008e-01 2.6265591382980347e-01 + <_> + + 0 -1 314 1.9562279339879751e-03 + + 2.3125819861888885e-01 5.7416272163391113e-01 + <_> + + 0 -1 315 -8.8924784213304520e-03 + + 1.6565300524234772e-01 5.6266540288925171e-01 + <_> + + 0 -1 316 8.3638377487659454e-02 + + 5.4234498739242554e-01 1.9572949409484863e-01 + <_> + + 0 -1 317 1.2282270472496748e-03 + + 3.4179040789604187e-01 5.9925037622451782e-01 + <_> + + 0 -1 318 5.7629169896245003e-03 + + 3.7195819616317749e-01 6.0799038410186768e-01 + <_> + + 0 -1 319 -1.6417410224676132e-03 + + 2.5774860382080078e-01 5.5769157409667969e-01 + <_> + + 0 -1 320 3.4113149158656597e-03 + + 2.9507490992546082e-01 5.5141717195510864e-01 + <_> + + 0 -1 321 -1.1069320142269135e-02 + + 7.5693589448928833e-01 4.4770789146423340e-01 + <_> + + 0 -1 322 3.4865971654653549e-02 + + 5.5837088823318481e-01 2.6696211099624634e-01 + <_> + + 0 -1 323 6.5701099811121821e-04 + + 5.6273132562637329e-01 2.9888901114463806e-01 + <_> + + 0 -1 324 -2.4339130148291588e-02 + + 2.7711850404739380e-01 5.1088631153106689e-01 + <_> + + 0 -1 325 5.9435202274471521e-04 + + 5.5806517601013184e-01 3.1203418970108032e-01 + <_> + + 0 -1 326 2.2971509024500847e-03 + + 3.3302500844001770e-01 5.6790757179260254e-01 + <_> + + 0 -1 327 -3.7801829166710377e-03 + + 2.9905349016189575e-01 5.3448081016540527e-01 + <_> + + 0 -1 328 -1.3420669734477997e-01 + + 1.4638589322566986e-01 5.3925681114196777e-01 + <_> + + 0 -1 329 7.5224548345431685e-04 + + 3.7469539046287537e-01 5.6927347183227539e-01 + <_> + + 0 -1 330 -4.0545541793107986e-02 + + 2.7547478675842285e-01 5.4842978715896606e-01 + <_> + + 0 -1 331 1.2572970008477569e-03 + + 3.7445840239524841e-01 5.7560759782791138e-01 + <_> + + 0 -1 332 -7.4249948374927044e-03 + + 7.5138592720031738e-01 4.7282311320304871e-01 + <_> + + 0 -1 333 5.0908129196614027e-04 + + 5.4048967361450195e-01 2.9323211312294006e-01 + <_> + + 0 -1 334 -1.2808450264856219e-03 + + 6.1697798967361450e-01 4.2733490467071533e-01 + <_> + + 0 -1 335 -1.8348860321566463e-03 + + 2.0484960079193115e-01 5.2064722776412964e-01 + <_> + + 0 -1 336 2.7484869584441185e-02 + + 5.2529847621917725e-01 1.6755220293998718e-01 + <_> + + 0 -1 337 2.2372419480234385e-03 + + 5.2677828073501587e-01 2.7776581048965454e-01 + <_> + + 0 -1 338 -8.8635291904211044e-03 + + 6.9545578956604004e-01 4.8120489716529846e-01 + <_> + + 0 -1 339 4.1753971017897129e-03 + + 4.2918878793716431e-01 6.3491958379745483e-01 + <_> + + 0 -1 340 -1.7098189564421773e-03 + + 2.9305368661880493e-01 5.3612488508224487e-01 + <_> + + 0 -1 341 6.5328548662364483e-03 + + 4.4953250885009766e-01 7.4096941947937012e-01 + <_> + + 0 -1 342 -9.5372907817363739e-03 + + 3.1491199135780334e-01 5.4165017604827881e-01 + <_> + + 0 -1 343 2.5310989469289780e-02 + + 5.1218920946121216e-01 1.3117079436779022e-01 + <_> + + 0 -1 344 3.6460969597101212e-02 + + 5.1759117841720581e-01 2.5913399457931519e-01 + <_> + + 0 -1 345 2.0854329690337181e-02 + + 5.1371401548385620e-01 1.5823160111904144e-01 + <_> + + 0 -1 346 -8.7207747856155038e-04 + + 5.5743098258972168e-01 4.3989789485931396e-01 + <_> + + 0 -1 347 -1.5227000403683633e-05 + + 5.5489408969879150e-01 3.7080699205398560e-01 + <_> + + 0 -1 348 -8.4316509310156107e-04 + + 3.3874198794364929e-01 5.5542111396789551e-01 + <_> + + 0 -1 349 3.6037859972566366e-03 + + 5.3580617904663086e-01 3.4111711382865906e-01 + <_> + + 0 -1 350 -6.8057891912758350e-03 + + 6.1252027750015259e-01 4.3458628654479980e-01 + <_> + + 0 -1 351 -4.7021660953760147e-02 + + 2.3581659793853760e-01 5.1937389373779297e-01 + <_> + + 0 -1 352 -3.6954108625650406e-02 + + 7.3231112957000732e-01 4.7609439492225647e-01 + <_> + + 0 -1 353 1.0439479956403375e-03 + + 5.4194551706314087e-01 3.4113308787345886e-01 + <_> + + 0 -1 354 -2.1050689974799752e-04 + + 2.8216940164566040e-01 5.5549472570419312e-01 + <_> + + 0 -1 355 -8.0831587314605713e-02 + + 9.1299301385879517e-01 4.6974349021911621e-01 + <_> + + 0 -1 356 -3.6579059087671340e-04 + + 6.0226702690124512e-01 3.9782929420471191e-01 + <_> + + 0 -1 357 -1.2545920617412776e-04 + + 5.6132131814956665e-01 3.8455399870872498e-01 + <_> + + 0 -1 358 -6.8786486983299255e-02 + + 2.2616119682788849e-01 5.3004968166351318e-01 + <_> + + 0 -1 359 1.2415789999067783e-02 + + 4.0756919980049133e-01 5.8288121223449707e-01 + <_> + + 0 -1 360 -4.7174817882478237e-03 + + 2.8272539377212524e-01 5.2677577733993530e-01 + <_> + + 0 -1 361 3.8136858493089676e-02 + + 5.0747412443161011e-01 1.0236159712076187e-01 + <_> + + 0 -1 362 -2.8168049175292253e-03 + + 6.1690068244934082e-01 4.3596929311752319e-01 + <_> + + 0 -1 363 8.1303603947162628e-03 + + 4.5244330167770386e-01 7.6060950756072998e-01 + <_> + + 0 -1 364 6.0056019574403763e-03 + + 5.2404087781906128e-01 1.8597120046615601e-01 + <_> + + 0 -1 365 1.9139319658279419e-02 + + 5.2093791961669922e-01 2.3320719599723816e-01 + <_> + + 0 -1 366 1.6445759683847427e-02 + + 5.4507029056549072e-01 3.2642349600791931e-01 + <_> + + 0 -1 367 -3.7356890738010406e-02 + + 6.9990468025207520e-01 4.5332419872283936e-01 + <_> + + 0 -1 368 -1.9727900624275208e-02 + + 2.6536649465560913e-01 5.4128098487854004e-01 + <_> + + 0 -1 369 6.6972579807043076e-03 + + 4.4805660843849182e-01 7.1386522054672241e-01 + <_> + + 0 -1 370 7.4457528535276651e-04 + + 4.2313501238822937e-01 5.4713201522827148e-01 + <_> + + 0 -1 371 1.1790640419349074e-03 + + 5.3417021036148071e-01 3.1304550170898438e-01 + <_> + + 0 -1 372 3.4980610013008118e-02 + + 5.1186597347259521e-01 3.4305301308631897e-01 + <_> + + 0 -1 373 5.6859792675822973e-04 + + 3.5321870446205139e-01 5.4686397314071655e-01 + <_> + + 0 -1 374 -1.1340649798512459e-02 + + 2.8423538804054260e-01 5.3487008810043335e-01 + <_> + + 0 -1 375 -6.6228108480572701e-03 + + 6.8836402893066406e-01 4.4926649332046509e-01 + <_> + + 0 -1 376 -8.0160330981016159e-03 + + 1.7098939418792725e-01 5.2243089675903320e-01 + <_> + + 0 -1 377 1.4206819469109178e-03 + + 5.2908462285995483e-01 2.9933831095695496e-01 + <_> + + 0 -1 378 -2.7801711112260818e-03 + + 6.4988541603088379e-01 4.4604998826980591e-01 + <_> + + 0 -1 379 -1.4747589593753219e-03 + + 3.2604381442070007e-01 5.3881132602691650e-01 + <_> + + 0 -1 380 -2.3830339312553406e-02 + + 7.5289410352706909e-01 4.8012199997901917e-01 + <_> + + 0 -1 381 6.9369790144264698e-03 + + 5.3351658582687378e-01 3.2614278793334961e-01 + <_> + + 0 -1 382 8.2806255668401718e-03 + + 4.5803940296173096e-01 5.7378298044204712e-01 + <_> + + 0 -1 383 -1.0439500212669373e-02 + + 2.5923201441764832e-01 5.2338278293609619e-01 + <_> + 80 + 3.9107288360595703e+01 + + <_> + + 0 -1 384 7.2006587870419025e-03 + + 3.2588860392570496e-01 6.8498080968856812e-01 + <_> + + 0 -1 385 -2.8593589086085558e-03 + + 5.8388811349868774e-01 2.5378298759460449e-01 + <_> + + 0 -1 386 6.8580528022721410e-04 + + 5.7080817222595215e-01 2.8124240040779114e-01 + <_> + + 0 -1 387 7.9580191522836685e-03 + + 2.5010511279106140e-01 5.5442607402801514e-01 + <_> + + 0 -1 388 -1.2124150525778532e-03 + + 2.3853680491447449e-01 5.4333502054214478e-01 + <_> + + 0 -1 389 7.9426132142543793e-03 + + 3.9550709724426270e-01 6.2207579612731934e-01 + <_> + + 0 -1 390 2.4630590341985226e-03 + + 5.6397080421447754e-01 2.9923579096794128e-01 + <_> + + 0 -1 391 -6.0396599583327770e-03 + + 2.1865129470825195e-01 5.4116767644882202e-01 + <_> + + 0 -1 392 -1.2988339876756072e-03 + + 2.3507060110569000e-01 5.3645849227905273e-01 + <_> + + 0 -1 393 2.2299369447864592e-04 + + 3.8041129708290100e-01 5.7296061515808105e-01 + <_> + + 0 -1 394 1.4654280385002494e-03 + + 2.5101679563522339e-01 5.2582687139511108e-01 + <_> + + 0 -1 395 -8.1210042117163539e-04 + + 5.9928238391876221e-01 3.8511589169502258e-01 + <_> + + 0 -1 396 -1.3836020370945334e-03 + + 5.6813961267471313e-01 3.6365869641304016e-01 + <_> + + 0 -1 397 -2.7936449274420738e-02 + + 1.4913170039653778e-01 5.3775602579116821e-01 + <_> + + 0 -1 398 -4.6919551095925272e-04 + + 3.6924299597740173e-01 5.5724847316741943e-01 + <_> + + 0 -1 399 -4.9829659983515739e-03 + + 6.7585092782974243e-01 4.5325040817260742e-01 + <_> + + 0 -1 400 1.8815309740602970e-03 + + 5.3680229187011719e-01 2.9325398802757263e-01 + <_> + + 0 -1 401 -1.9067550078034401e-02 + + 1.6493770480155945e-01 5.3300672769546509e-01 + <_> + + 0 -1 402 -4.6906559728085995e-03 + + 1.9639259576797485e-01 5.1193618774414062e-01 + <_> + + 0 -1 403 5.9777139686048031e-03 + + 4.6711719036102295e-01 7.0083981752395630e-01 + <_> + + 0 -1 404 -3.3303130418062210e-02 + + 1.1554169654846191e-01 5.1041620969772339e-01 + <_> + + 0 -1 405 9.0744107961654663e-02 + + 5.1496601104736328e-01 1.3061730563640594e-01 + <_> + + 0 -1 406 9.3555898638442159e-04 + + 3.6054810881614685e-01 5.4398590326309204e-01 + <_> + + 0 -1 407 1.4901650138199329e-02 + + 4.8862120509147644e-01 7.6875698566436768e-01 + <_> + + 0 -1 408 6.1594118596985936e-04 + + 5.3568130731582642e-01 3.2409390807151794e-01 + <_> + + 0 -1 409 -5.0670988857746124e-02 + + 1.8486219644546509e-01 5.2304041385650635e-01 + <_> + + 0 -1 410 6.8665749859064817e-04 + + 3.8405799865722656e-01 5.5179458856582642e-01 + <_> + + 0 -1 411 8.3712432533502579e-03 + + 4.2885640263557434e-01 6.1317539215087891e-01 + <_> + + 0 -1 412 -1.2953069526702166e-03 + + 2.9136741161346436e-01 5.2807378768920898e-01 + <_> + + 0 -1 413 -4.1941680014133453e-02 + + 7.5547999143600464e-01 4.8560309410095215e-01 + <_> + + 0 -1 414 -2.3529380559921265e-02 + + 2.8382799029350281e-01 5.2560812234878540e-01 + <_> + + 0 -1 415 4.0857449173927307e-02 + + 4.8709350824356079e-01 6.2772971391677856e-01 + <_> + + 0 -1 416 -2.5406869128346443e-02 + + 7.0997077226638794e-01 4.5750290155410767e-01 + <_> + + 0 -1 417 -4.1415440500713885e-04 + + 4.0308868885040283e-01 5.4694122076034546e-01 + <_> + + 0 -1 418 2.1824119612574577e-02 + + 4.5020240545272827e-01 6.7687010765075684e-01 + <_> + + 0 -1 419 1.4114039950072765e-02 + + 5.4428607225418091e-01 3.7917000055313110e-01 + <_> + + 0 -1 420 6.7214590671937913e-05 + + 4.2004638910293579e-01 5.8734762668609619e-01 + <_> + + 0 -1 421 -7.9417638480663300e-03 + + 3.7925618886947632e-01 5.5852657556533813e-01 + <_> + + 0 -1 422 -7.2144409641623497e-03 + + 7.2531038522720337e-01 4.6035489439964294e-01 + <_> + + 0 -1 423 2.5817339774221182e-03 + + 4.6933019161224365e-01 5.9002387523651123e-01 + <_> + + 0 -1 424 1.3409319519996643e-01 + + 5.1492130756378174e-01 1.8088449537754059e-01 + <_> + + 0 -1 425 2.2962710354477167e-03 + + 5.3997439146041870e-01 3.7178671360015869e-01 + <_> + + 0 -1 426 -2.1575849968940020e-03 + + 2.4084959924221039e-01 5.1488637924194336e-01 + <_> + + 0 -1 427 -4.9196188338100910e-03 + + 6.5735882520675659e-01 4.7387400269508362e-01 + <_> + + 0 -1 428 1.6267469618469477e-03 + + 4.1928219795227051e-01 6.3031142950057983e-01 + <_> + + 0 -1 429 3.3413388882763684e-04 + + 5.5402982234954834e-01 3.7021011114120483e-01 + <_> + + 0 -1 430 -2.6698080822825432e-02 + + 1.7109179496765137e-01 5.1014107465744019e-01 + <_> + + 0 -1 431 -3.0561879277229309e-02 + + 1.9042180478572845e-01 5.1687937974929810e-01 + <_> + + 0 -1 432 2.8511548880487680e-03 + + 4.4475069642066956e-01 6.3138538599014282e-01 + <_> + + 0 -1 433 -3.6211479455232620e-02 + + 2.4907270073890686e-01 5.3773492574691772e-01 + <_> + + 0 -1 434 -2.4115189444273710e-03 + + 5.3812432289123535e-01 3.6642369627952576e-01 + <_> + + 0 -1 435 -7.7253201743587852e-04 + + 5.5302321910858154e-01 3.5415500402450562e-01 + <_> + + 0 -1 436 2.9481729143299162e-04 + + 4.1326990723609924e-01 5.6672430038452148e-01 + <_> + + 0 -1 437 -6.2334560789167881e-03 + + 9.8787233233451843e-02 5.1986688375473022e-01 + <_> + + 0 -1 438 -2.6274729520082474e-02 + + 9.1127492487430573e-02 5.0281071662902832e-01 + <_> + + 0 -1 439 5.3212260827422142e-03 + + 4.7266489267349243e-01 6.2227207422256470e-01 + <_> + + 0 -1 440 -4.1129058226943016e-03 + + 2.1574570238590240e-01 5.1378047466278076e-01 + <_> + + 0 -1 441 3.2457809429615736e-03 + + 5.4107707738876343e-01 3.7217769026756287e-01 + <_> + + 0 -1 442 -1.6359709203243256e-02 + + 7.7878749370574951e-01 4.6852919459342957e-01 + <_> + + 0 -1 443 3.2166109303943813e-04 + + 5.4789870977401733e-01 4.2403739690780640e-01 + <_> + + 0 -1 444 6.4452440710738301e-04 + + 5.3305608034133911e-01 3.5013249516487122e-01 + <_> + + 0 -1 445 -7.8909732401371002e-03 + + 6.9235211610794067e-01 4.7265690565109253e-01 + <_> + + 0 -1 446 4.8336211591959000e-02 + + 5.0559002161026001e-01 7.5749203562736511e-02 + <_> + + 0 -1 447 -7.5178127735853195e-04 + + 3.7837418913841248e-01 5.5385738611221313e-01 + <_> + + 0 -1 448 -2.4953910615295172e-03 + + 3.0816510319709778e-01 5.3596121072769165e-01 + <_> + + 0 -1 449 -2.2385010961443186e-03 + + 6.6339588165283203e-01 4.6493428945541382e-01 + <_> + + 0 -1 450 -1.7988430336117744e-03 + + 6.5968447923660278e-01 4.3471878767013550e-01 + <_> + + 0 -1 451 8.7860915809869766e-03 + + 5.2318328619003296e-01 2.3155799508094788e-01 + <_> + + 0 -1 452 3.6715380847454071e-03 + + 5.2042502164840698e-01 2.9773768782615662e-01 + <_> + + 0 -1 453 -3.5336449742317200e-02 + + 7.2388780117034912e-01 4.8615050315856934e-01 + <_> + + 0 -1 454 -6.9189240457490087e-04 + + 3.1050220131874084e-01 5.2298247814178467e-01 + <_> + + 0 -1 455 -3.3946109469980001e-03 + + 3.1389680504798889e-01 5.2101737260818481e-01 + <_> + + 0 -1 456 9.8569283727556467e-04 + + 4.5365801453590393e-01 6.5850979089736938e-01 + <_> + + 0 -1 457 -5.0163101404905319e-02 + + 1.8044540286064148e-01 5.1989167928695679e-01 + <_> + + 0 -1 458 -2.2367259953171015e-03 + + 7.2557020187377930e-01 4.6513590216636658e-01 + <_> + + 0 -1 459 7.4326287722215056e-04 + + 4.4129210710525513e-01 5.8985459804534912e-01 + <_> + + 0 -1 460 -9.3485182151198387e-04 + + 3.5000529885292053e-01 5.3660178184509277e-01 + <_> + + 0 -1 461 1.7497939988970757e-02 + + 4.9121949076652527e-01 8.3152848482131958e-01 + <_> + + 0 -1 462 -1.5200000489130616e-03 + + 3.5702759027481079e-01 5.3705602884292603e-01 + <_> + + 0 -1 463 7.8003940870985389e-04 + + 4.3537721037864685e-01 5.9673351049423218e-01 + <_> + 103 + 5.0610481262207031e+01 + + <_> + + 0 -1 464 -9.9945552647113800e-03 + + 6.1625832319259644e-01 3.0545330047607422e-01 + <_> + + 0 -1 465 -1.1085229925811291e-03 + + 5.8182948827743530e-01 3.1555780768394470e-01 + <_> + + 0 -1 466 1.0364380432292819e-03 + + 2.5520521402359009e-01 5.6929117441177368e-01 + <_> + + 0 -1 467 6.8211311008781195e-04 + + 3.6850899457931519e-01 5.9349310398101807e-01 + <_> + + 0 -1 468 -6.8057340104132891e-04 + + 2.3323920369148254e-01 5.4747921228408813e-01 + <_> + + 0 -1 469 2.6068789884448051e-04 + + 3.2574570178985596e-01 5.6675457954406738e-01 + <_> + + 0 -1 470 5.1607372006401420e-04 + + 3.7447169423103333e-01 5.8454728126525879e-01 + <_> + + 0 -1 471 8.5007521556690335e-04 + + 3.4203711152076721e-01 5.5228072404861450e-01 + <_> + + 0 -1 472 -1.8607829697430134e-03 + + 2.8044199943542480e-01 5.3754240274429321e-01 + <_> + + 0 -1 473 -1.5033970121294260e-03 + + 2.5790509581565857e-01 5.4989522695541382e-01 + <_> + + 0 -1 474 2.3478909861296415e-03 + + 4.1751560568809509e-01 6.3137108087539673e-01 + <_> + + 0 -1 475 -2.8880240279249847e-04 + + 5.8651697635650635e-01 4.0526661276817322e-01 + <_> + + 0 -1 476 8.9405477046966553e-03 + + 5.2111411094665527e-01 2.3186540603637695e-01 + <_> + + 0 -1 477 -1.9327739253640175e-02 + + 2.7534329891204834e-01 5.2415257692337036e-01 + <_> + + 0 -1 478 -2.0202060113660991e-04 + + 5.7229787111282349e-01 3.6771959066390991e-01 + <_> + + 0 -1 479 2.1179069299250841e-03 + + 4.4661080837249756e-01 5.5424308776855469e-01 + <_> + + 0 -1 480 -1.7743760254234076e-03 + + 2.8132531046867371e-01 5.3009599447250366e-01 + <_> + + 0 -1 481 4.2234458960592747e-03 + + 4.3997099995613098e-01 5.7954281568527222e-01 + <_> + + 0 -1 482 -1.4375220052897930e-02 + + 2.9811179637908936e-01 5.2920591831207275e-01 + <_> + + 0 -1 483 -1.5349180437624454e-02 + + 7.7052152156829834e-01 4.7481718659400940e-01 + <_> + + 0 -1 484 1.5152279956964776e-05 + + 3.7188440561294556e-01 5.5768972635269165e-01 + <_> + + 0 -1 485 -9.1293919831514359e-03 + + 3.6151960492134094e-01 5.2867668867111206e-01 + <_> + + 0 -1 486 2.2512159775942564e-03 + + 5.3647047281265259e-01 3.4862980246543884e-01 + <_> + + 0 -1 487 -4.9696918576955795e-03 + + 6.9276517629623413e-01 4.6768361330032349e-01 + <_> + + 0 -1 488 -1.2829010374844074e-02 + + 7.7121537923812866e-01 4.6607351303100586e-01 + <_> + + 0 -1 489 -9.3660065904259682e-03 + + 3.3749839663505554e-01 5.3512877225875854e-01 + <_> + + 0 -1 490 3.2452319283038378e-03 + + 5.3251898288726807e-01 3.2896101474761963e-01 + <_> + + 0 -1 491 -1.1723560281097889e-02 + + 6.8376529216766357e-01 4.7543001174926758e-01 + <_> + + 0 -1 492 2.9257940695970319e-05 + + 3.5720878839492798e-01 5.3605020046234131e-01 + <_> + + 0 -1 493 -2.2244219508138485e-05 + + 5.5414271354675293e-01 3.5520640015602112e-01 + <_> + + 0 -1 494 5.0881509669125080e-03 + + 5.0708442926406860e-01 1.2564620375633240e-01 + <_> + + 0 -1 495 2.7429679408669472e-02 + + 5.2695602178573608e-01 1.6258180141448975e-01 + <_> + + 0 -1 496 -6.4142867922782898e-03 + + 7.1455889940261841e-01 4.5841971039772034e-01 + <_> + + 0 -1 497 3.3479959238320589e-03 + + 5.3986120223999023e-01 3.4946969151496887e-01 + <_> + + 0 -1 498 -8.2635492086410522e-02 + + 2.4391929805278778e-01 5.1602262258529663e-01 + <_> + + 0 -1 499 1.0261740535497665e-03 + + 3.8868919014930725e-01 5.7679080963134766e-01 + <_> + + 0 -1 500 -1.6307090409100056e-03 + + 3.3894580602645874e-01 5.3477007150650024e-01 + <_> + + 0 -1 501 2.4546680506318808e-03 + + 4.6014139056205750e-01 6.3872468471527100e-01 + <_> + + 0 -1 502 -9.9476519972085953e-04 + + 5.7698792219161987e-01 4.1203960776329041e-01 + <_> + + 0 -1 503 1.5409190207719803e-02 + + 4.8787090182304382e-01 7.0898222923278809e-01 + <_> + + 0 -1 504 1.1784400558099151e-03 + + 5.2635532617568970e-01 2.8952449560165405e-01 + <_> + + 0 -1 505 -2.7701919898390770e-02 + + 1.4988289773464203e-01 5.2196067571640015e-01 + <_> + + 0 -1 506 -2.9505399987101555e-02 + + 2.4893319234251976e-02 4.9998161196708679e-01 + <_> + + 0 -1 507 4.5159430010244250e-04 + + 5.4646229743957520e-01 4.0296629071235657e-01 + <_> + + 0 -1 508 7.1772639639675617e-03 + + 4.2710569500923157e-01 5.8662968873977661e-01 + <_> + + 0 -1 509 -7.4182048439979553e-02 + + 6.8741792440414429e-01 4.9190279841423035e-01 + <_> + + 0 -1 510 -1.7254160717129707e-02 + + 3.3706760406494141e-01 5.3487390279769897e-01 + <_> + + 0 -1 511 1.4851559884846210e-02 + + 4.6267929673194885e-01 6.1299049854278564e-01 + <_> + + 0 -1 512 1.0002000257372856e-02 + + 5.3461229801177979e-01 3.4234538674354553e-01 + <_> + + 0 -1 513 2.0138120744377375e-03 + + 4.6438300609588623e-01 5.8243042230606079e-01 + <_> + + 0 -1 514 1.5135470312088728e-03 + + 5.1963961124420166e-01 2.8561499714851379e-01 + <_> + + 0 -1 515 3.1381431035697460e-03 + + 4.8381629586219788e-01 5.9585297107696533e-01 + <_> + + 0 -1 516 -5.1450440660119057e-03 + + 8.9203029870986938e-01 4.7414121031761169e-01 + <_> + + 0 -1 517 -4.4736708514392376e-03 + + 2.0339429378509521e-01 5.3372788429260254e-01 + <_> + + 0 -1 518 1.9628470763564110e-03 + + 4.5716339349746704e-01 6.7258632183074951e-01 + <_> + + 0 -1 519 5.4260450415313244e-03 + + 5.2711081504821777e-01 2.8456708788871765e-01 + <_> + + 0 -1 520 4.9611460417509079e-04 + + 4.1383129358291626e-01 5.7185977697372437e-01 + <_> + + 0 -1 521 9.3728788197040558e-03 + + 5.2251511812210083e-01 2.8048470616340637e-01 + <_> + + 0 -1 522 6.0500897234305739e-04 + + 5.2367687225341797e-01 3.3145239949226379e-01 + <_> + + 0 -1 523 5.6792551185935736e-04 + + 4.5310598611831665e-01 6.2769711017608643e-01 + <_> + + 0 -1 524 2.4644339457154274e-02 + + 5.1308518648147583e-01 2.0171439647674561e-01 + <_> + + 0 -1 525 -1.0290450416505337e-02 + + 7.7865952253341675e-01 4.8766410350799561e-01 + <_> + + 0 -1 526 2.0629419013857841e-03 + + 4.2885988950729370e-01 5.8812642097473145e-01 + <_> + + 0 -1 527 -5.0519481301307678e-03 + + 3.5239779949188232e-01 5.2860087156295776e-01 + <_> + + 0 -1 528 -5.7692620903253555e-03 + + 6.8410861492156982e-01 4.5880940556526184e-01 + <_> + + 0 -1 529 -4.5789941214025021e-04 + + 3.5655200481414795e-01 5.4859781265258789e-01 + <_> + + 0 -1 530 -7.5918837683275342e-04 + + 3.3687931299209595e-01 5.2541971206665039e-01 + <_> + + 0 -1 531 -1.7737259622663260e-03 + + 3.4221610426902771e-01 5.4540151357650757e-01 + <_> + + 0 -1 532 -8.5610467940568924e-03 + + 6.5336120128631592e-01 4.4858568906784058e-01 + <_> + + 0 -1 533 1.7277270089834929e-03 + + 5.3075802326202393e-01 3.9253529906272888e-01 + <_> + + 0 -1 534 -2.8199609369039536e-02 + + 6.8574589490890503e-01 4.5885840058326721e-01 + <_> + + 0 -1 535 -1.7781109781935811e-03 + + 4.0378510951995850e-01 5.3698569536209106e-01 + <_> + + 0 -1 536 3.3177141449414194e-04 + + 5.3997987508773804e-01 3.7057501077651978e-01 + <_> + + 0 -1 537 2.6385399978607893e-03 + + 4.6654370427131653e-01 6.4527308940887451e-01 + <_> + + 0 -1 538 -2.1183069329708815e-03 + + 5.9147810935974121e-01 4.0646770596504211e-01 + <_> + + 0 -1 539 -1.4773289673030376e-02 + + 3.6420381069183350e-01 5.2947628498077393e-01 + <_> + + 0 -1 540 -1.6815440729260445e-02 + + 2.6642319560050964e-01 5.1449728012084961e-01 + <_> + + 0 -1 541 -6.3370140269398689e-03 + + 6.7795312404632568e-01 4.8520979285240173e-01 + <_> + + 0 -1 542 -4.4560048991115764e-05 + + 5.6139647960662842e-01 4.1530540585517883e-01 + <_> + + 0 -1 543 -1.0240620467811823e-03 + + 5.9644782543182373e-01 4.5663040876388550e-01 + <_> + + 0 -1 544 -2.3161689750850201e-03 + + 2.9761150479316711e-01 5.1881599426269531e-01 + <_> + + 0 -1 545 5.3217571973800659e-01 + + 5.1878392696380615e-01 2.2026319801807404e-01 + <_> + + 0 -1 546 -1.6643050312995911e-01 + + 1.8660229444503784e-01 5.0603431463241577e-01 + <_> + + 0 -1 547 1.1253529787063599e-01 + + 5.2121251821517944e-01 1.1850229650735855e-01 + <_> + + 0 -1 548 9.3046864494681358e-03 + + 4.5899370312690735e-01 6.8261492252349854e-01 + <_> + + 0 -1 549 -4.6255099587142467e-03 + + 3.0799409747123718e-01 5.2250087261199951e-01 + <_> + + 0 -1 550 -1.1116469651460648e-01 + + 2.1010440587997437e-01 5.0808018445968628e-01 + <_> + + 0 -1 551 -1.0888439603149891e-02 + + 5.7653552293777466e-01 4.7904640436172485e-01 + <_> + + 0 -1 552 5.8564301580190659e-03 + + 5.0651001930236816e-01 1.5635989606380463e-01 + <_> + + 0 -1 553 5.4854389280080795e-02 + + 4.9669149518013000e-01 7.2305107116699219e-01 + <_> + + 0 -1 554 -1.1197339743375778e-02 + + 2.1949790418148041e-01 5.0987982749938965e-01 + <_> + + 0 -1 555 4.4069071300327778e-03 + + 4.7784018516540527e-01 6.7709028720855713e-01 + <_> + + 0 -1 556 -6.3665293157100677e-02 + + 1.9363629817962646e-01 5.0810241699218750e-01 + <_> + + 0 -1 557 -9.8081491887569427e-03 + + 5.9990632534027100e-01 4.8103410005569458e-01 + <_> + + 0 -1 558 -2.1717099007219076e-03 + + 3.3383339643478394e-01 5.2354729175567627e-01 + <_> + + 0 -1 559 -1.3315520249307156e-02 + + 6.6170698404312134e-01 4.9192130565643311e-01 + <_> + + 0 -1 560 2.5442079640924931e-03 + + 4.4887441396713257e-01 6.0821849107742310e-01 + <_> + + 0 -1 561 1.2037839740514755e-02 + + 5.4093921184539795e-01 3.2924321293830872e-01 + <_> + + 0 -1 562 -2.0701050758361816e-02 + + 6.8191200494766235e-01 4.5949959754943848e-01 + <_> + + 0 -1 563 2.7608279138803482e-02 + + 4.6307921409606934e-01 5.7672828435897827e-01 + <_> + + 0 -1 564 1.2370620388537645e-03 + + 5.1653790473937988e-01 2.6350161433219910e-01 + <_> + + 0 -1 565 -3.7669338285923004e-02 + + 2.5363931059837341e-01 5.2789801359176636e-01 + <_> + + 0 -1 566 -1.8057259730994701e-03 + + 3.9851561188697815e-01 5.5175000429153442e-01 + <_> + 111 + 5.4620071411132812e+01 + + <_> + + 0 -1 567 4.4299028813838959e-03 + + 2.8910180926322937e-01 6.3352262973785400e-01 + <_> + + 0 -1 568 -2.3813319858163595e-03 + + 6.2117892503738403e-01 3.4774878621101379e-01 + <_> + + 0 -1 569 2.2915711160749197e-03 + + 2.2544120252132416e-01 5.5821180343627930e-01 + <_> + + 0 -1 570 9.9457940086722374e-04 + + 3.7117108702659607e-01 5.9300708770751953e-01 + <_> + + 0 -1 571 7.7164667891338468e-04 + + 5.6517201662063599e-01 3.3479958772659302e-01 + <_> + + 0 -1 572 -1.1386410333216190e-03 + + 3.0691260099411011e-01 5.5086308717727661e-01 + <_> + + 0 -1 573 -1.6403039626311511e-04 + + 5.7628279924392700e-01 3.6990478634834290e-01 + <_> + + 0 -1 574 2.9793529392918572e-05 + + 2.6442441344261169e-01 5.4379111528396606e-01 + <_> + + 0 -1 575 8.5774902254343033e-03 + + 5.0511389970779419e-01 1.7957249283790588e-01 + <_> + + 0 -1 576 -2.6032689493149519e-04 + + 5.8269691467285156e-01 4.4468268752098083e-01 + <_> + + 0 -1 577 -6.1404630541801453e-03 + + 3.1138521432876587e-01 5.3469717502593994e-01 + <_> + + 0 -1 578 -2.3086950182914734e-02 + + 3.2779461145401001e-01 5.3311979770660400e-01 + <_> + + 0 -1 579 -1.4243650250136852e-02 + + 7.3817098140716553e-01 4.5880630612373352e-01 + <_> + + 0 -1 580 1.9487129524350166e-02 + + 5.2566307783126831e-01 2.2744719684123993e-01 + <_> + + 0 -1 581 -9.6681108698248863e-04 + + 5.5112308263778687e-01 3.8150069117546082e-01 + <_> + + 0 -1 582 3.1474709976464510e-03 + + 5.4256367683410645e-01 2.5437268614768982e-01 + <_> + + 0 -1 583 -1.8026070029009134e-04 + + 5.3801918029785156e-01 3.4063041210174561e-01 + <_> + + 0 -1 584 -6.0266260989010334e-03 + + 3.0358019471168518e-01 5.4205721616744995e-01 + <_> + + 0 -1 585 4.4462960795499384e-04 + + 3.9909970760345459e-01 5.6601101160049438e-01 + <_> + + 0 -1 586 2.2609760053455830e-03 + + 5.5628067255020142e-01 3.9406880736351013e-01 + <_> + + 0 -1 587 5.1133058965206146e-02 + + 4.6096539497375488e-01 7.1185618638992310e-01 + <_> + + 0 -1 588 -1.7786309123039246e-02 + + 2.3161660134792328e-01 5.3221440315246582e-01 + <_> + + 0 -1 589 -4.9679628573358059e-03 + + 2.3307719826698303e-01 5.1220291852951050e-01 + <_> + + 0 -1 590 2.0667689386755228e-03 + + 4.6574440598487854e-01 6.4554882049560547e-01 + <_> + + 0 -1 591 7.4413768015801907e-03 + + 5.1543921232223511e-01 2.3616339266300201e-01 + <_> + + 0 -1 592 -3.6277279723435640e-03 + + 6.2197732925415039e-01 4.4766610860824585e-01 + <_> + + 0 -1 593 -5.3530759178102016e-03 + + 1.8373550474643707e-01 5.1022082567214966e-01 + <_> + + 0 -1 594 1.4530919492244720e-01 + + 5.1459872722625732e-01 1.5359309315681458e-01 + <_> + + 0 -1 595 2.4394490756094456e-03 + + 5.3436601161956787e-01 3.6246618628501892e-01 + <_> + + 0 -1 596 -3.1283390708267689e-03 + + 6.2150079011917114e-01 4.8455920815467834e-01 + <_> + + 0 -1 597 1.7940260004252195e-03 + + 4.2992618680000305e-01 5.8241981267929077e-01 + <_> + + 0 -1 598 3.6253821104764938e-02 + + 5.2603340148925781e-01 1.4394679665565491e-01 + <_> + + 0 -1 599 -5.1746722310781479e-03 + + 3.5065388679504395e-01 5.2870452404022217e-01 + <_> + + 0 -1 600 6.5383297624066472e-04 + + 4.8096409440040588e-01 6.1220401525497437e-01 + <_> + + 0 -1 601 -2.6480229571461678e-02 + + 1.1393620073795319e-01 5.0455862283706665e-01 + <_> + + 0 -1 602 -3.0440660193562508e-03 + + 6.3520950078964233e-01 4.7947341203689575e-01 + <_> + + 0 -1 603 3.6993520334362984e-03 + + 5.1311182975769043e-01 2.4985109269618988e-01 + <_> + + 0 -1 604 -3.6762931267730892e-04 + + 5.4213947057723999e-01 3.7095320224761963e-01 + <_> + + 0 -1 605 -4.1382260620594025e-02 + + 1.8949599564075470e-01 5.0816917419433594e-01 + <_> + + 0 -1 606 -1.0532729793339968e-03 + + 6.4543670415878296e-01 4.7836089134216309e-01 + <_> + + 0 -1 607 -2.1648600231856108e-03 + + 6.2150311470031738e-01 4.4998261332511902e-01 + <_> + + 0 -1 608 -5.6747748749330640e-04 + + 3.7126109004020691e-01 5.4193347692489624e-01 + <_> + + 0 -1 609 1.7375840246677399e-01 + + 5.0236439704895020e-01 1.2157420068979263e-01 + <_> + + 0 -1 610 -2.9049699660390615e-03 + + 3.2402679324150085e-01 5.3818839788436890e-01 + <_> + + 0 -1 611 1.2299539521336555e-03 + + 4.1655078530311584e-01 5.7034862041473389e-01 + <_> + + 0 -1 612 -5.4329237900674343e-04 + + 3.8540428876876831e-01 5.5475491285324097e-01 + <_> + + 0 -1 613 -8.3297258242964745e-03 + + 2.2044940292835236e-01 5.0970828533172607e-01 + <_> + + 0 -1 614 -1.0417630255687982e-04 + + 5.6070661544799805e-01 4.3030360341072083e-01 + <_> + + 0 -1 615 3.1204700469970703e-02 + + 4.6216571331024170e-01 6.9820040464401245e-01 + <_> + + 0 -1 616 7.8943502157926559e-03 + + 5.2695941925048828e-01 2.2690680623054504e-01 + <_> + + 0 -1 617 -4.3645310215651989e-03 + + 6.3592231273651123e-01 4.5379561185836792e-01 + <_> + + 0 -1 618 7.6793059706687927e-03 + + 5.2747678756713867e-01 2.7404838800430298e-01 + <_> + + 0 -1 619 -2.5431139394640923e-02 + + 2.0385199785232544e-01 5.0717329978942871e-01 + <_> + + 0 -1 620 8.2000601105391979e-04 + + 4.5874550938606262e-01 6.1198681592941284e-01 + <_> + + 0 -1 621 2.9284600168466568e-03 + + 5.0712740421295166e-01 2.0282049477100372e-01 + <_> + + 0 -1 622 4.5256470912136137e-05 + + 4.8121041059494019e-01 5.4308217763900757e-01 + <_> + + 0 -1 623 1.3158309739083052e-03 + + 4.6258139610290527e-01 6.7793232202529907e-01 + <_> + + 0 -1 624 1.5870389761403203e-03 + + 5.3862917423248291e-01 3.4314650297164917e-01 + <_> + + 0 -1 625 -2.1539660170674324e-02 + + 2.5942500680685043e-02 5.0032228231430054e-01 + <_> + + 0 -1 626 1.4334480278193951e-02 + + 5.2028447389602661e-01 1.5906329452991486e-01 + <_> + + 0 -1 627 -8.3881383761763573e-03 + + 7.2824811935424805e-01 4.6480441093444824e-01 + <_> + + 0 -1 628 9.1906841844320297e-03 + + 5.5623567104339600e-01 3.9231911301612854e-01 + <_> + + 0 -1 629 -5.8453059755265713e-03 + + 6.8033927679061890e-01 4.6291279792785645e-01 + <_> + + 0 -1 630 -5.4707799106836319e-02 + + 2.5616711378097534e-01 5.2061259746551514e-01 + <_> + + 0 -1 631 9.1142775490880013e-03 + + 5.1896202564239502e-01 3.0538770556449890e-01 + <_> + + 0 -1 632 -1.5575000084936619e-02 + + 1.2950749695301056e-01 5.1690948009490967e-01 + <_> + + 0 -1 633 -1.2050600344082341e-04 + + 5.7350981235504150e-01 4.2308250069618225e-01 + <_> + + 0 -1 634 1.2273970060050488e-03 + + 5.2898782491683960e-01 4.0797919034957886e-01 + <_> + + 0 -1 635 -1.2186600361019373e-03 + + 6.5756398439407349e-01 4.5744091272354126e-01 + <_> + + 0 -1 636 -3.3256649039685726e-03 + + 3.6280471086502075e-01 5.1950198411941528e-01 + <_> + + 0 -1 637 -1.3288309797644615e-02 + + 1.2842659652233124e-01 5.0434887409210205e-01 + <_> + + 0 -1 638 -3.3839771058410406e-03 + + 6.2922400236129761e-01 4.7575059533119202e-01 + <_> + + 0 -1 639 -2.1954220533370972e-01 + + 1.4877319335937500e-01 5.0650137662887573e-01 + <_> + + 0 -1 640 4.9111708067357540e-03 + + 4.2561021447181702e-01 5.6658387184143066e-01 + <_> + + 0 -1 641 -1.8744950648397207e-04 + + 4.0041440725326538e-01 5.5868571996688843e-01 + <_> + + 0 -1 642 -5.2178641781210899e-03 + + 6.0091161727905273e-01 4.8127061128616333e-01 + <_> + + 0 -1 643 -1.1111519997939467e-03 + + 3.5149338841438293e-01 5.2870899438858032e-01 + <_> + + 0 -1 644 4.4036400504410267e-03 + + 4.6422758698463440e-01 5.9240859746932983e-01 + <_> + + 0 -1 645 1.2299499660730362e-01 + + 5.0255292654037476e-01 6.9152481853961945e-02 + <_> + + 0 -1 646 -1.2313510291278362e-02 + + 5.8845919370651245e-01 4.9340128898620605e-01 + <_> + + 0 -1 647 4.1471039876341820e-03 + + 4.3722391128540039e-01 5.8934777975082397e-01 + <_> + + 0 -1 648 -3.5502649843692780e-03 + + 4.3275511264801025e-01 5.3962701559066772e-01 + <_> + + 0 -1 649 -1.9224269315600395e-02 + + 1.9131340086460114e-01 5.0683307647705078e-01 + <_> + + 0 -1 650 1.4395059552043676e-03 + + 5.3081780672073364e-01 4.2435330152511597e-01 + <_> + + 0 -1 651 -6.7751999013125896e-03 + + 6.3653957843780518e-01 4.5400860905647278e-01 + <_> + + 0 -1 652 7.0119630545377731e-03 + + 5.1898342370986938e-01 3.0261999368667603e-01 + <_> + + 0 -1 653 5.4014651104807854e-03 + + 5.1050621271133423e-01 2.5576829910278320e-01 + <_> + + 0 -1 654 9.0274988906458020e-04 + + 4.6969148516654968e-01 5.8618277311325073e-01 + <_> + + 0 -1 655 1.1474450118839741e-02 + + 5.0536459684371948e-01 1.5271779894828796e-01 + <_> + + 0 -1 656 -6.7023430019617081e-03 + + 6.5089809894561768e-01 4.8906040191650391e-01 + <_> + + 0 -1 657 -2.0462959073483944e-03 + + 6.2418168783187866e-01 4.5146000385284424e-01 + <_> + + 0 -1 658 -9.9951568990945816e-03 + + 3.4327811002731323e-01 5.4009538888931274e-01 + <_> + + 0 -1 659 -3.5700708627700806e-02 + + 1.8780590593814850e-01 5.0740778446197510e-01 + <_> + + 0 -1 660 4.5584561303257942e-04 + + 3.8052770495414734e-01 5.4025697708129883e-01 + <_> + + 0 -1 661 -5.4260600358247757e-02 + + 6.8437147140502930e-01 4.5950970053672791e-01 + <_> + + 0 -1 662 6.0600461438298225e-03 + + 5.5029052495956421e-01 4.5005279779434204e-01 + <_> + + 0 -1 663 -6.4791832119226456e-03 + + 3.3688580989837646e-01 5.3107571601867676e-01 + <_> + + 0 -1 664 -1.4939469983801246e-03 + + 6.4876401424407959e-01 4.7561758756637573e-01 + <_> + + 0 -1 665 1.4610530342906713e-05 + + 4.0345790982246399e-01 5.4510641098022461e-01 + <_> + + 0 -1 666 -7.2321938350796700e-03 + + 6.3868737220764160e-01 4.8247399926185608e-01 + <_> + + 0 -1 667 -4.0645818226039410e-03 + + 2.9864218831062317e-01 5.1573359966278076e-01 + <_> + + 0 -1 668 3.0463080853223801e-02 + + 5.0221997499465942e-01 7.1599560976028442e-01 + <_> + + 0 -1 669 -8.0544911324977875e-03 + + 6.4924520254135132e-01 4.6192750334739685e-01 + <_> + + 0 -1 670 3.9505138993263245e-02 + + 5.1505708694458008e-01 2.4506139755249023e-01 + <_> + + 0 -1 671 8.4530208259820938e-03 + + 4.5736691355705261e-01 6.3940370082855225e-01 + <_> + + 0 -1 672 -1.1688120430335402e-03 + + 3.8655120134353638e-01 5.4836612939834595e-01 + <_> + + 0 -1 673 2.8070670086890459e-03 + + 5.1285791397094727e-01 2.7014800906181335e-01 + <_> + + 0 -1 674 4.7365209320560098e-04 + + 4.0515819191932678e-01 5.3874611854553223e-01 + <_> + + 0 -1 675 1.1741080321371555e-02 + + 5.2959501743316650e-01 3.7194138765335083e-01 + <_> + + 0 -1 676 3.1833238899707794e-03 + + 4.7894069552421570e-01 6.8951261043548584e-01 + <_> + + 0 -1 677 7.0241501089185476e-04 + + 5.3844892978668213e-01 3.9180809259414673e-01 + <_> + 102 + 5.0169731140136719e+01 + + <_> + + 0 -1 678 1.7059929668903351e-02 + + 3.9485278725624084e-01 7.1425348520278931e-01 + <_> + + 0 -1 679 2.1840840578079224e-02 + + 3.3703160285949707e-01 6.0900169610977173e-01 + <_> + + 0 -1 680 2.4520049919374287e-04 + + 3.5005760192871094e-01 5.9879022836685181e-01 + <_> + + 0 -1 681 8.3272606134414673e-03 + + 3.2675281167030334e-01 5.6972408294677734e-01 + <_> + + 0 -1 682 5.7148298947140574e-04 + + 3.0445998907089233e-01 5.5316567420959473e-01 + <_> + + 0 -1 683 6.7373987985774875e-04 + + 3.6500120162963867e-01 5.6726312637329102e-01 + <_> + + 0 -1 684 3.4681590477703139e-05 + + 3.3135411143302917e-01 5.3887271881103516e-01 + <_> + + 0 -1 685 -5.8563398197293282e-03 + + 2.6979428529739380e-01 5.4987788200378418e-01 + <_> + + 0 -1 686 8.5102273151278496e-03 + + 5.2693581581115723e-01 2.7628791332244873e-01 + <_> + + 0 -1 687 -6.9817207753658295e-02 + + 2.9096031188964844e-01 5.2592468261718750e-01 + <_> + + 0 -1 688 -8.6113670840859413e-04 + + 5.8925771713256836e-01 4.0736979246139526e-01 + <_> + + 0 -1 689 9.7149249631911516e-04 + + 3.5235640406608582e-01 5.4158622026443481e-01 + <_> + + 0 -1 690 -1.4727490452060010e-05 + + 5.4230177402496338e-01 3.5031560063362122e-01 + <_> + + 0 -1 691 4.8420291393995285e-02 + + 5.1939457654953003e-01 3.4111958742141724e-01 + <_> + + 0 -1 692 1.3257140526548028e-03 + + 3.1577691435813904e-01 5.3353762626647949e-01 + <_> + + 0 -1 693 1.4922149603080470e-05 + + 4.4512999057769775e-01 5.5365538597106934e-01 + <_> + + 0 -1 694 -2.7173398993909359e-03 + + 3.0317419767379761e-01 5.2480888366699219e-01 + <_> + + 0 -1 695 2.9219500720500946e-03 + + 4.7814530134201050e-01 6.6060417890548706e-01 + <_> + + 0 -1 696 -1.9804988987743855e-03 + + 3.1863081455230713e-01 5.2876251935958862e-01 + <_> + + 0 -1 697 -4.0012109093368053e-03 + + 6.4135968685150146e-01 4.7499281167984009e-01 + <_> + + 0 -1 698 -4.3491991236805916e-03 + + 1.5074980258941650e-01 5.0989967584609985e-01 + <_> + + 0 -1 699 1.3490889687091112e-03 + + 4.3161588907241821e-01 5.8811670541763306e-01 + <_> + + 0 -1 700 1.8597070127725601e-02 + + 4.7355538606643677e-01 9.0897941589355469e-01 + <_> + + 0 -1 701 -1.8562379991635680e-03 + + 3.5531890392303467e-01 5.5778372287750244e-01 + <_> + + 0 -1 702 2.2940430790185928e-03 + + 4.5000949501991272e-01 6.5808779001235962e-01 + <_> + + 0 -1 703 2.9982850537635386e-04 + + 5.6292420625686646e-01 3.9758789539337158e-01 + <_> + + 0 -1 704 3.5455459728837013e-03 + + 5.3815472126007080e-01 3.6054858565330505e-01 + <_> + + 0 -1 705 9.6104722470045090e-03 + + 5.2559971809387207e-01 1.7967459559440613e-01 + <_> + + 0 -1 706 -6.2783220782876015e-03 + + 2.2728569805622101e-01 5.1140302419662476e-01 + <_> + + 0 -1 707 3.4598479978740215e-03 + + 4.6263080835342407e-01 6.6082191467285156e-01 + <_> + + 0 -1 708 -1.3112019514665008e-03 + + 6.3175398111343384e-01 4.4368579983711243e-01 + <_> + + 0 -1 709 2.6876179035753012e-03 + + 5.4211097955703735e-01 4.0540221333503723e-01 + <_> + + 0 -1 710 3.9118169806897640e-03 + + 5.3584778308868408e-01 3.2734549045562744e-01 + <_> + + 0 -1 711 -1.4206450432538986e-02 + + 7.7935767173767090e-01 4.9757811427116394e-01 + <_> + + 0 -1 712 7.1705528534948826e-04 + + 5.2973198890686035e-01 3.5609039664268494e-01 + <_> + + 0 -1 713 1.6635019565001130e-03 + + 4.6780940890312195e-01 5.8164817094802856e-01 + <_> + + 0 -1 714 3.3686188980937004e-03 + + 5.2767342329025269e-01 3.4464201331138611e-01 + <_> + + 0 -1 715 1.2799530290067196e-02 + + 4.8346799612045288e-01 7.4721592664718628e-01 + <_> + + 0 -1 716 3.3901201095432043e-03 + + 4.5118591189384460e-01 6.4017212390899658e-01 + <_> + + 0 -1 717 4.7070779837667942e-03 + + 5.3356587886810303e-01 3.5552209615707397e-01 + <_> + + 0 -1 718 1.4819339849054813e-03 + + 4.2507070302963257e-01 5.7727241516113281e-01 + <_> + + 0 -1 719 -6.9995759986341000e-03 + + 3.0033200979232788e-01 5.2929002046585083e-01 + <_> + + 0 -1 720 1.5939010307192802e-02 + + 5.0673192739486694e-01 1.6755819320678711e-01 + <_> + + 0 -1 721 7.6377349905669689e-03 + + 4.7950699925422668e-01 7.0856010913848877e-01 + <_> + + 0 -1 722 6.7334040068089962e-03 + + 5.1331132650375366e-01 2.1624700725078583e-01 + <_> + + 0 -1 723 -1.2858809903264046e-02 + + 1.9388419389724731e-01 5.2513718605041504e-01 + <_> + + 0 -1 724 -6.2270800117403269e-04 + + 5.6865382194519043e-01 4.1978681087493896e-01 + <_> + + 0 -1 725 -5.2651681471616030e-04 + + 4.2241689562797546e-01 5.4296958446502686e-01 + <_> + + 0 -1 726 1.1075099930167198e-02 + + 5.1137751340866089e-01 2.5145179033279419e-01 + <_> + + 0 -1 727 -3.6728251725435257e-02 + + 7.1946620941162109e-01 4.8496189713478088e-01 + <_> + + 0 -1 728 -2.8207109426148236e-04 + + 3.8402619957923889e-01 5.3944462537765503e-01 + <_> + + 0 -1 729 -2.7489690110087395e-03 + + 5.9370887279510498e-01 4.5691820979118347e-01 + <_> + + 0 -1 730 1.0047519579529762e-02 + + 5.1385760307312012e-01 2.8022980690002441e-01 + <_> + + 0 -1 731 -8.1497840583324432e-03 + + 6.0900372266769409e-01 4.6361210942268372e-01 + <_> + + 0 -1 732 -6.8833888508379459e-03 + + 3.4586110711097717e-01 5.2546602487564087e-01 + <_> + + 0 -1 733 -1.4039360394235700e-05 + + 5.6931042671203613e-01 4.0820831060409546e-01 + <_> + + 0 -1 734 1.5498419525101781e-03 + + 4.3505370616912842e-01 5.8065170049667358e-01 + <_> + + 0 -1 735 -6.7841499112546444e-03 + + 1.4688730239868164e-01 5.1827752590179443e-01 + <_> + + 0 -1 736 2.1705629478674382e-04 + + 5.2935242652893066e-01 3.4561741352081299e-01 + <_> + + 0 -1 737 3.1198898795992136e-04 + + 4.6524509787559509e-01 5.9424138069152832e-01 + <_> + + 0 -1 738 5.4507530294358730e-03 + + 4.6535089612007141e-01 7.0248460769653320e-01 + <_> + + 0 -1 739 -2.5818689027801156e-04 + + 5.4972952604293823e-01 3.7689670920372009e-01 + <_> + + 0 -1 740 -1.7442539334297180e-02 + + 3.9190879464149475e-01 5.4574978351593018e-01 + <_> + + 0 -1 741 -4.5343529433012009e-02 + + 1.6313570737838745e-01 5.1549088954925537e-01 + <_> + + 0 -1 742 1.9190689781680703e-03 + + 5.1458978652954102e-01 2.7918958663940430e-01 + <_> + + 0 -1 743 -6.0177869163453579e-03 + + 6.5176361799240112e-01 4.7563329339027405e-01 + <_> + + 0 -1 744 -4.0720738470554352e-03 + + 5.5146527290344238e-01 4.0926858782768250e-01 + <_> + + 0 -1 745 3.9855059003457427e-04 + + 3.1652408838272095e-01 5.2855509519577026e-01 + <_> + + 0 -1 746 -6.5418570302426815e-03 + + 6.8533778190612793e-01 4.6528089046478271e-01 + <_> + + 0 -1 747 3.4845089539885521e-03 + + 5.4845881462097168e-01 4.5027598738670349e-01 + <_> + + 0 -1 748 -1.3696780428290367e-02 + + 6.3957798480987549e-01 4.5725551247596741e-01 + <_> + + 0 -1 749 -1.7347140237689018e-02 + + 2.7510729432106018e-01 5.1816147565841675e-01 + <_> + + 0 -1 750 -4.0885428898036480e-03 + + 3.3256360888481140e-01 5.1949840784072876e-01 + <_> + + 0 -1 751 -9.4687901437282562e-03 + + 5.9422808885574341e-01 4.8518198728561401e-01 + <_> + + 0 -1 752 1.7084840219467878e-03 + + 4.1671109199523926e-01 5.5198061466217041e-01 + <_> + + 0 -1 753 9.4809094443917274e-03 + + 5.4338949918746948e-01 4.2085149884223938e-01 + <_> + + 0 -1 754 -4.7389650717377663e-03 + + 6.4071899652481079e-01 4.5606550574302673e-01 + <_> + + 0 -1 755 6.5761050209403038e-03 + + 5.2145552635192871e-01 2.2582270205020905e-01 + <_> + + 0 -1 756 -2.1690549328923225e-03 + + 3.1515279412269592e-01 5.1567047834396362e-01 + <_> + + 0 -1 757 1.4660170301795006e-02 + + 4.8708370327949524e-01 6.6899412870407104e-01 + <_> + + 0 -1 758 1.7231999663636088e-04 + + 3.5697489976882935e-01 5.2510780096054077e-01 + <_> + + 0 -1 759 -2.1803760901093483e-02 + + 8.8259208202362061e-01 4.9663299322128296e-01 + <_> + + 0 -1 760 -9.4736106693744659e-02 + + 1.4461620151996613e-01 5.0611138343811035e-01 + <_> + + 0 -1 761 5.5825551971793175e-03 + + 5.3964787721633911e-01 4.2380660772323608e-01 + <_> + + 0 -1 762 1.9517090404406190e-03 + + 4.1704109311103821e-01 5.4977869987487793e-01 + <_> + + 0 -1 763 1.2149900197982788e-02 + + 4.6983671188354492e-01 5.6642740964889526e-01 + <_> + + 0 -1 764 -7.5169620104134083e-03 + + 6.2677729129791260e-01 4.4631358981132507e-01 + <_> + + 0 -1 765 -7.1667909622192383e-02 + + 3.0970111489295959e-01 5.2210032939910889e-01 + <_> + + 0 -1 766 -8.8292419910430908e-02 + + 8.1123888492584229e-02 5.0063651800155640e-01 + <_> + + 0 -1 767 3.1063079833984375e-02 + + 5.1555037498474121e-01 1.2822559475898743e-01 + <_> + + 0 -1 768 4.6621840447187424e-02 + + 4.6997779607772827e-01 7.3639607429504395e-01 + <_> + + 0 -1 769 -1.2189489789307117e-02 + + 3.9205300807952881e-01 5.5189967155456543e-01 + <_> + + 0 -1 770 1.3016110286116600e-02 + + 5.2606582641601562e-01 3.6851361393928528e-01 + <_> + + 0 -1 771 -3.4952899441123009e-03 + + 6.3392949104309082e-01 4.7162809967994690e-01 + <_> + + 0 -1 772 -4.4015039748046547e-05 + + 5.3330272436141968e-01 3.7761849164962769e-01 + <_> + + 0 -1 773 -1.0966490209102631e-01 + + 1.7653420567512512e-01 5.1983469724655151e-01 + <_> + + 0 -1 774 -9.0279558207839727e-04 + + 5.3241598606109619e-01 3.8389080762863159e-01 + <_> + + 0 -1 775 7.1126641705632210e-04 + + 4.6479299664497375e-01 5.7552242279052734e-01 + <_> + + 0 -1 776 -3.1250279862433672e-03 + + 3.2367089390754700e-01 5.1667708158493042e-01 + <_> + + 0 -1 777 2.4144679773598909e-03 + + 4.7874391078948975e-01 6.4597177505493164e-01 + <_> + + 0 -1 778 4.4391240226104856e-04 + + 4.4093081355094910e-01 6.0102558135986328e-01 + <_> + + 0 -1 779 -2.2611189342569560e-04 + + 4.0381139516830444e-01 5.4932558536529541e-01 + <_> + 135 + 6.6669120788574219e+01 + + <_> + + 0 -1 780 -4.6901289373636246e-02 + + 6.6001719236373901e-01 3.7438011169433594e-01 + <_> + + 0 -1 781 -1.4568349579349160e-03 + + 5.7839912176132202e-01 3.4377971291542053e-01 + <_> + + 0 -1 782 5.5598369799554348e-03 + + 3.6222669482231140e-01 5.9082162380218506e-01 + <_> + + 0 -1 783 7.3170487303286791e-04 + + 5.5004191398620605e-01 2.8735581040382385e-01 + <_> + + 0 -1 784 1.3318009441718459e-03 + + 2.6731699705123901e-01 5.4310190677642822e-01 + <_> + + 0 -1 785 2.4347059661522508e-04 + + 3.8550278544425964e-01 5.7413887977600098e-01 + <_> + + 0 -1 786 -3.0512469820678234e-03 + + 5.5032098293304443e-01 3.4628450870513916e-01 + <_> + + 0 -1 787 -6.8657199153676629e-04 + + 3.2912218570709229e-01 5.4295092821121216e-01 + <_> + + 0 -1 788 1.4668200165033340e-03 + + 3.5883820056915283e-01 5.3518110513687134e-01 + <_> + + 0 -1 789 3.2021870720200241e-04 + + 4.2968419194221497e-01 5.7002341747283936e-01 + <_> + + 0 -1 790 7.4122188379988074e-04 + + 5.2821648120880127e-01 3.3668708801269531e-01 + <_> + + 0 -1 791 3.8330298848450184e-03 + + 4.5595678687095642e-01 6.2573361396789551e-01 + <_> + + 0 -1 792 -1.5456439927220345e-02 + + 2.3501169681549072e-01 5.1294529438018799e-01 + <_> + + 0 -1 793 2.6796779129654169e-03 + + 5.3294152021408081e-01 4.1550621390342712e-01 + <_> + + 0 -1 794 2.8296569362282753e-03 + + 4.2730879783630371e-01 5.8045381307601929e-01 + <_> + + 0 -1 795 -3.9444249123334885e-03 + + 2.9126119613647461e-01 5.2026861906051636e-01 + <_> + + 0 -1 796 2.7179559692740440e-03 + + 5.3076881170272827e-01 3.5856771469116211e-01 + <_> + + 0 -1 797 5.9077627956867218e-03 + + 4.7037750482559204e-01 5.9415858983993530e-01 + <_> + + 0 -1 798 -4.2240349575877190e-03 + + 2.1415670216083527e-01 5.0887960195541382e-01 + <_> + + 0 -1 799 4.0725888684391975e-03 + + 4.7664138674736023e-01 6.8410611152648926e-01 + <_> + + 0 -1 800 1.0149530135095119e-02 + + 5.3607988357543945e-01 3.7484970688819885e-01 + <_> + + 0 -1 801 -1.8864999583456665e-04 + + 5.7201302051544189e-01 3.8538050651550293e-01 + <_> + + 0 -1 802 -4.8864358104765415e-03 + + 3.6931228637695312e-01 5.3409588336944580e-01 + <_> + + 0 -1 803 2.6158479973673820e-02 + + 4.9623748660087585e-01 6.0599899291992188e-01 + <_> + + 0 -1 804 4.8560759751126170e-04 + + 4.4389459490776062e-01 6.0124689340591431e-01 + <_> + + 0 -1 805 1.1268709786236286e-02 + + 5.2442502975463867e-01 1.8403880298137665e-01 + <_> + + 0 -1 806 -2.8114619199186563e-03 + + 6.0602837800979614e-01 4.4098970293998718e-01 + <_> + + 0 -1 807 -5.6112729944288731e-03 + + 3.8911709189414978e-01 5.5892372131347656e-01 + <_> + + 0 -1 808 8.5680093616247177e-03 + + 5.0693458318710327e-01 2.0626190304756165e-01 + <_> + + 0 -1 809 -3.8172779022715986e-04 + + 5.8822017908096313e-01 4.1926109790802002e-01 + <_> + + 0 -1 810 -1.7680290329735726e-04 + + 5.5336058139801025e-01 4.0033689141273499e-01 + <_> + + 0 -1 811 6.5112537704408169e-03 + + 3.3101469278335571e-01 5.4441910982131958e-01 + <_> + + 0 -1 812 -6.5948683186434209e-05 + + 5.4338318109512329e-01 3.9449059963226318e-01 + <_> + + 0 -1 813 6.9939051754772663e-03 + + 5.6003582477569580e-01 4.1927140951156616e-01 + <_> + + 0 -1 814 -4.6744439750909805e-03 + + 6.6854667663574219e-01 4.6049609780311584e-01 + <_> + + 0 -1 815 1.1589850299060345e-02 + + 5.3571212291717529e-01 2.9268300533294678e-01 + <_> + + 0 -1 816 1.3007840141654015e-02 + + 4.6798178553581238e-01 7.3074632883071899e-01 + <_> + + 0 -1 817 -1.1008579749614000e-03 + + 3.9375010132789612e-01 5.4150652885437012e-01 + <_> + + 0 -1 818 6.0472649056464434e-04 + + 4.2423760890960693e-01 5.6040412187576294e-01 + <_> + + 0 -1 819 -1.4494840055704117e-02 + + 3.6312100291252136e-01 5.2931827306747437e-01 + <_> + + 0 -1 820 -5.3056948818266392e-03 + + 6.8604522943496704e-01 4.6218210458755493e-01 + <_> + + 0 -1 821 -8.1829127157106996e-04 + + 3.9440968632698059e-01 5.4204392433166504e-01 + <_> + + 0 -1 822 -1.9077520817518234e-02 + + 1.9626219570636749e-01 5.0378918647766113e-01 + <_> + + 0 -1 823 3.5549470339901745e-04 + + 4.0862590074539185e-01 5.6139731407165527e-01 + <_> + + 0 -1 824 1.9679730758070946e-03 + + 4.4891211390495300e-01 5.9261232614517212e-01 + <_> + + 0 -1 825 6.9189141504466534e-03 + + 5.3359258174896240e-01 3.7283858656883240e-01 + <_> + + 0 -1 826 2.9872779268771410e-03 + + 5.1113212108612061e-01 2.9756438732147217e-01 + <_> + + 0 -1 827 -6.2264618463814259e-03 + + 5.5414897203445435e-01 4.8245379328727722e-01 + <_> + + 0 -1 828 1.3353300280869007e-02 + + 4.5864239335060120e-01 6.4147979021072388e-01 + <_> + + 0 -1 829 3.3505238592624664e-02 + + 5.3924250602722168e-01 3.4299948811531067e-01 + <_> + + 0 -1 830 -2.5294460356235504e-03 + + 1.7037139832973480e-01 5.0133150815963745e-01 + <_> + + 0 -1 831 -1.2801629491150379e-03 + + 5.3054618835449219e-01 4.6974050998687744e-01 + <_> + + 0 -1 832 7.0687388069927692e-03 + + 4.6155458688735962e-01 6.4365047216415405e-01 + <_> + + 0 -1 833 9.6880499040707946e-04 + + 4.8335990309715271e-01 6.0438942909240723e-01 + <_> + + 0 -1 834 3.9647659286856651e-03 + + 5.1876372098922729e-01 3.2318168878555298e-01 + <_> + + 0 -1 835 -2.2057730704545975e-02 + + 4.0792569518089294e-01 5.2009809017181396e-01 + <_> + + 0 -1 836 -6.6906312713399529e-04 + + 5.3316092491149902e-01 3.8156008720397949e-01 + <_> + + 0 -1 837 -6.7009328631684184e-04 + + 5.6554222106933594e-01 4.6889019012451172e-01 + <_> + + 0 -1 838 7.4284552829340100e-04 + + 4.5343810319900513e-01 6.2874001264572144e-01 + <_> + + 0 -1 839 2.2227810695767403e-03 + + 5.3506332635879517e-01 3.3036559820175171e-01 + <_> + + 0 -1 840 -5.4130521602928638e-03 + + 1.1136870086193085e-01 5.0054347515106201e-01 + <_> + + 0 -1 841 -1.4520040167553816e-05 + + 5.6287378072738647e-01 4.3251338601112366e-01 + <_> + + 0 -1 842 2.3369169502984732e-04 + + 4.1658350825309753e-01 5.4477912187576294e-01 + <_> + + 0 -1 843 4.2894547805190086e-03 + + 4.8603910207748413e-01 6.7786490917205811e-01 + <_> + + 0 -1 844 5.9103150852024555e-03 + + 5.2623051404953003e-01 3.6121138930320740e-01 + <_> + + 0 -1 845 1.2900539673864841e-02 + + 5.3193771839141846e-01 3.2502880692481995e-01 + <_> + + 0 -1 846 4.6982979401946068e-03 + + 4.6182450652122498e-01 6.6659259796142578e-01 + <_> + + 0 -1 847 1.0439859703183174e-02 + + 5.5056709051132202e-01 3.8836041092872620e-01 + <_> + + 0 -1 848 3.0443191062659025e-03 + + 4.6978530287742615e-01 7.3018449544906616e-01 + <_> + + 0 -1 849 -6.1593751888722181e-04 + + 3.8308390974998474e-01 5.4649841785430908e-01 + <_> + + 0 -1 850 -3.4247159492224455e-03 + + 2.5663000345230103e-01 5.0895309448242188e-01 + <_> + + 0 -1 851 -9.3538565561175346e-03 + + 6.4699661731719971e-01 4.9407958984375000e-01 + <_> + + 0 -1 852 5.2338998764753342e-02 + + 4.7459828853607178e-01 7.8787708282470703e-01 + <_> + + 0 -1 853 3.5765620414167643e-03 + + 5.3066647052764893e-01 2.7484980225563049e-01 + <_> + + 0 -1 854 7.1555317845195532e-04 + + 5.4131257534027100e-01 4.0419089794158936e-01 + <_> + + 0 -1 855 -1.0516679845750332e-02 + + 6.1585122346878052e-01 4.8152831196784973e-01 + <_> + + 0 -1 856 7.7347927726805210e-03 + + 4.6958059072494507e-01 7.0289808511734009e-01 + <_> + + 0 -1 857 -4.3226778507232666e-03 + + 2.8495660424232483e-01 5.3046840429306030e-01 + <_> + + 0 -1 858 -2.5534399319440126e-03 + + 7.0569849014282227e-01 4.6888920664787292e-01 + <_> + + 0 -1 859 1.0268510231981054e-04 + + 3.9029321074485779e-01 5.5734640359878540e-01 + <_> + + 0 -1 860 7.1395188570022583e-06 + + 3.6842319369316101e-01 5.2639877796173096e-01 + <_> + + 0 -1 861 -1.6711989883333445e-03 + + 3.8491758704185486e-01 5.3872710466384888e-01 + <_> + + 0 -1 862 4.9260449595749378e-03 + + 4.7297719120979309e-01 7.4472510814666748e-01 + <_> + + 0 -1 863 4.3908702209591866e-03 + + 4.8091810941696167e-01 5.5919218063354492e-01 + <_> + + 0 -1 864 -1.7793629318475723e-02 + + 6.9036781787872314e-01 4.6769270300865173e-01 + <_> + + 0 -1 865 2.0469669252634048e-03 + + 5.3706902265548706e-01 3.3081620931625366e-01 + <_> + + 0 -1 866 2.9891489073634148e-02 + + 5.1398652791976929e-01 3.3090591430664062e-01 + <_> + + 0 -1 867 1.5494900289922953e-03 + + 4.6602371335029602e-01 6.0783427953720093e-01 + <_> + + 0 -1 868 1.4956969534978271e-03 + + 4.4048359990119934e-01 5.8639198541641235e-01 + <_> + + 0 -1 869 9.5885928021743894e-04 + + 5.4359710216522217e-01 4.2085230350494385e-01 + <_> + + 0 -1 870 4.9643701640889049e-04 + + 5.3705781698226929e-01 4.0006220340728760e-01 + <_> + + 0 -1 871 -2.7280810754746199e-03 + + 5.6594127416610718e-01 4.2596429586410522e-01 + <_> + + 0 -1 872 2.3026480339467525e-03 + + 5.1616579294204712e-01 3.3508691191673279e-01 + <_> + + 0 -1 873 2.5151631236076355e-01 + + 4.8696619272232056e-01 7.1473097801208496e-01 + <_> + + 0 -1 874 -4.6328022144734859e-03 + + 2.7274489402770996e-01 5.0837898254394531e-01 + <_> + + 0 -1 875 -4.0434490889310837e-02 + + 6.8514388799667358e-01 5.0217670202255249e-01 + <_> + + 0 -1 876 1.4972220014897175e-05 + + 4.2844650149345398e-01 5.5225551128387451e-01 + <_> + + 0 -1 877 -2.4050309730228037e-04 + + 4.2261189222335815e-01 5.3900748491287231e-01 + <_> + + 0 -1 878 2.3657839745283127e-02 + + 4.7446319460868835e-01 7.5043660402297974e-01 + <_> + + 0 -1 879 -8.1449104472994804e-03 + + 4.2450588941574097e-01 5.5383628606796265e-01 + <_> + + 0 -1 880 -3.6992130335420370e-03 + + 5.9523570537567139e-01 4.5297130942344666e-01 + <_> + + 0 -1 881 -6.7718601785600185e-03 + + 4.1377940773963928e-01 5.4733997583389282e-01 + <_> + + 0 -1 882 4.2669530957937241e-03 + + 4.4841149449348450e-01 5.7979941368103027e-01 + <_> + + 0 -1 883 1.7791989957913756e-03 + + 5.6248587369918823e-01 4.4324448704719543e-01 + <_> + + 0 -1 884 1.6774770338088274e-03 + + 4.6377518773078918e-01 6.3642418384552002e-01 + <_> + + 0 -1 885 1.1732629500329494e-03 + + 4.5445030927658081e-01 5.9144157171249390e-01 + <_> + + 0 -1 886 8.6998171173036098e-04 + + 5.3347527980804443e-01 3.8859179615974426e-01 + <_> + + 0 -1 887 7.6378340600058436e-04 + + 5.3985852003097534e-01 3.7449419498443604e-01 + <_> + + 0 -1 888 1.5684569370932877e-04 + + 4.3178731203079224e-01 5.6146162748336792e-01 + <_> + + 0 -1 889 -2.1511370316147804e-02 + + 1.7859250307083130e-01 5.1855427026748657e-01 + <_> + + 0 -1 890 1.3081369979772717e-04 + + 4.3424990773200989e-01 5.6828498840332031e-01 + <_> + + 0 -1 891 2.1992040798068047e-02 + + 5.1617169380187988e-01 2.3793940246105194e-01 + <_> + + 0 -1 892 -8.0136500764638186e-04 + + 5.9867632389068604e-01 4.4664269685745239e-01 + <_> + + 0 -1 893 -8.2736099138855934e-03 + + 4.1082179546356201e-01 5.2510571479797363e-01 + <_> + + 0 -1 894 3.6831789184361696e-03 + + 5.1738142967224121e-01 3.3975180983543396e-01 + <_> + + 0 -1 895 -7.9525681212544441e-03 + + 6.8889832496643066e-01 4.8459240794181824e-01 + <_> + + 0 -1 896 1.5382299898192286e-03 + + 5.1785671710968018e-01 3.4541139006614685e-01 + <_> + + 0 -1 897 -1.4043530449271202e-02 + + 1.6784210503101349e-01 5.1886677742004395e-01 + <_> + + 0 -1 898 1.4315890148282051e-03 + + 4.3682569265365601e-01 5.6557738780975342e-01 + <_> + + 0 -1 899 -3.4014228731393814e-02 + + 7.8022962808609009e-01 4.9592170119285583e-01 + <_> + + 0 -1 900 -1.2027299962937832e-02 + + 1.5851010382175446e-01 5.0322318077087402e-01 + <_> + + 0 -1 901 1.3316619396209717e-01 + + 5.1633048057556152e-01 2.7551281452178955e-01 + <_> + + 0 -1 902 -1.5221949433907866e-03 + + 3.7283179163932800e-01 5.2145522832870483e-01 + <_> + + 0 -1 903 -9.3929271679371595e-04 + + 5.8383792638778687e-01 4.5111650228500366e-01 + <_> + + 0 -1 904 2.7719739824533463e-02 + + 4.7282868623733521e-01 7.3315447568893433e-01 + <_> + + 0 -1 905 3.1030150130391121e-03 + + 5.3022021055221558e-01 4.1015630960464478e-01 + <_> + + 0 -1 906 7.7861219644546509e-02 + + 4.9983340501785278e-01 1.2729619443416595e-01 + <_> + + 0 -1 907 -1.5854939818382263e-02 + + 5.0833359360694885e-02 5.1656562089920044e-01 + <_> + + 0 -1 908 -4.9725300632417202e-03 + + 6.7981338500976562e-01 4.6842318773269653e-01 + <_> + + 0 -1 909 -9.7676506265997887e-04 + + 6.0107719898223877e-01 4.7889319062232971e-01 + <_> + + 0 -1 910 -2.4647710379213095e-03 + + 3.3933979272842407e-01 5.2205038070678711e-01 + <_> + + 0 -1 911 -6.7937700077891350e-03 + + 4.3651369214057922e-01 5.2396631240844727e-01 + <_> + + 0 -1 912 3.2608021050691605e-02 + + 5.0527238845825195e-01 2.4252149462699890e-01 + <_> + + 0 -1 913 -5.8514421107247472e-04 + + 5.7339739799499512e-01 4.7585740685462952e-01 + <_> + + 0 -1 914 -2.9632600024342537e-02 + + 3.8922891020774841e-01 5.2635979652404785e-01 + <_> + 137 + 6.7698921203613281e+01 + + <_> + + 0 -1 915 4.6550851315259933e-02 + + 3.2769501209259033e-01 6.2405228614807129e-01 + <_> + + 0 -1 916 7.9537127166986465e-03 + + 4.2564851045608521e-01 6.9429391622543335e-01 + <_> + + 0 -1 917 6.8221561377868056e-04 + + 3.7114870548248291e-01 5.9007328748703003e-01 + <_> + + 0 -1 918 -1.9348249770700932e-04 + + 2.0411339402198792e-01 5.3005450963973999e-01 + <_> + + 0 -1 919 -2.6710508973337710e-04 + + 5.4161262512207031e-01 3.1031790375709534e-01 + <_> + + 0 -1 920 2.7818060480058193e-03 + + 5.2778327465057373e-01 3.4670698642730713e-01 + <_> + + 0 -1 921 -4.6779078547842801e-04 + + 5.3082311153411865e-01 3.2944920659065247e-01 + <_> + + 0 -1 922 -3.0335160772665404e-05 + + 5.7738727331161499e-01 3.8520970940589905e-01 + <_> + + 0 -1 923 7.8038009814918041e-04 + + 4.3174389004707336e-01 6.1500579118728638e-01 + <_> + + 0 -1 924 -4.2553851380944252e-03 + + 2.9339039325714111e-01 5.3242927789688110e-01 + <_> + + 0 -1 925 -2.4735610350035131e-04 + + 5.4688447713851929e-01 3.8430300354957581e-01 + <_> + + 0 -1 926 -1.4724259381182492e-04 + + 4.2815428972244263e-01 5.7555872201919556e-01 + <_> + + 0 -1 927 1.1864770203828812e-03 + + 3.7473011016845703e-01 5.4714661836624146e-01 + <_> + + 0 -1 928 2.3936580400913954e-03 + + 4.5377838611602783e-01 6.1115288734436035e-01 + <_> + + 0 -1 929 -1.5390539774671197e-03 + + 2.9713419079780579e-01 5.1895380020141602e-01 + <_> + + 0 -1 930 -7.1968790143728256e-03 + + 6.6990667581558228e-01 4.7264769673347473e-01 + <_> + + 0 -1 931 -4.1499789222143590e-04 + + 3.3849540352821350e-01 5.2603179216384888e-01 + <_> + + 0 -1 932 4.4359830208122730e-03 + + 5.3991222381591797e-01 3.9201408624649048e-01 + <_> + + 0 -1 933 2.6606200262904167e-03 + + 4.4825780391693115e-01 6.1196178197860718e-01 + <_> + + 0 -1 934 -1.5287200221791863e-03 + + 3.7112379074096680e-01 5.3402662277221680e-01 + <_> + + 0 -1 935 -4.7397250309586525e-03 + + 6.0310882329940796e-01 4.4551450014114380e-01 + <_> + + 0 -1 936 -1.4829129911959171e-02 + + 2.8387540578842163e-01 5.3418618440628052e-01 + <_> + + 0 -1 937 9.2275557108223438e-04 + + 5.2095472812652588e-01 3.3616539835929871e-01 + <_> + + 0 -1 938 8.3529807627201080e-02 + + 5.1199698448181152e-01 8.1164449453353882e-02 + <_> + + 0 -1 939 -7.5633148662745953e-04 + + 3.3171200752258301e-01 5.1898312568664551e-01 + <_> + + 0 -1 940 9.8403859883546829e-03 + + 5.2475982904434204e-01 2.3349590599536896e-01 + <_> + + 0 -1 941 -1.5953830443322659e-03 + + 5.7500940561294556e-01 4.2956221103668213e-01 + <_> + + 0 -1 942 3.4766020689858124e-05 + + 4.3424451351165771e-01 5.5640292167663574e-01 + <_> + + 0 -1 943 2.9862910509109497e-02 + + 4.5791471004486084e-01 6.5791881084442139e-01 + <_> + + 0 -1 944 1.1325590312480927e-02 + + 5.2743119001388550e-01 3.6738881468772888e-01 + <_> + + 0 -1 945 -8.7828645482659340e-03 + + 7.1003687381744385e-01 4.6421670913696289e-01 + <_> + + 0 -1 946 4.3639959767460823e-03 + + 5.2792161703109741e-01 2.7058771252632141e-01 + <_> + + 0 -1 947 4.1804728098213673e-03 + + 5.0725251436233521e-01 2.4490830302238464e-01 + <_> + + 0 -1 948 -4.5668511302210391e-04 + + 4.2831051349639893e-01 5.5486911535263062e-01 + <_> + + 0 -1 949 -3.7140368949621916e-03 + + 5.5193877220153809e-01 4.1036531329154968e-01 + <_> + + 0 -1 950 -2.5304289534687996e-02 + + 6.8670022487640381e-01 4.8698890209197998e-01 + <_> + + 0 -1 951 -3.4454080741852522e-04 + + 3.7288740277290344e-01 5.2876931428909302e-01 + <_> + + 0 -1 952 -8.3935231668874621e-04 + + 6.0601520538330078e-01 4.6160620450973511e-01 + <_> + + 0 -1 953 1.7280049622058868e-02 + + 5.0496357679367065e-01 1.8198239803314209e-01 + <_> + + 0 -1 954 -6.3595077954232693e-03 + + 1.6312399506568909e-01 5.2327787876129150e-01 + <_> + + 0 -1 955 1.0298109846189618e-03 + + 4.4632780551910400e-01 6.1765491962432861e-01 + <_> + + 0 -1 956 1.0117109632119536e-03 + + 5.4733848571777344e-01 4.3006989359855652e-01 + <_> + + 0 -1 957 -1.0308800265192986e-02 + + 1.1669850349426270e-01 5.0008672475814819e-01 + <_> + + 0 -1 958 5.4682018235325813e-03 + + 4.7692871093750000e-01 6.7192137241363525e-01 + <_> + + 0 -1 959 -9.1696460731327534e-04 + + 3.4710898995399475e-01 5.1781648397445679e-01 + <_> + + 0 -1 960 2.3922820109874010e-03 + + 4.7852361202239990e-01 6.2163108587265015e-01 + <_> + + 0 -1 961 -7.5573818758130074e-03 + + 5.8147960901260376e-01 4.4100850820541382e-01 + <_> + + 0 -1 962 -7.7024032361805439e-04 + + 3.8780000805854797e-01 5.4657220840454102e-01 + <_> + + 0 -1 963 -8.7125990539789200e-03 + + 1.6600510478019714e-01 4.9958360195159912e-01 + <_> + + 0 -1 964 -1.0306320153176785e-02 + + 4.0933910012245178e-01 5.2742338180541992e-01 + <_> + + 0 -1 965 -2.0940979011356831e-03 + + 6.2061947584152222e-01 4.5722800493240356e-01 + <_> + + 0 -1 966 6.8099051713943481e-03 + + 5.5677592754364014e-01 4.1556000709533691e-01 + <_> + + 0 -1 967 -1.0746059706434608e-03 + + 5.6389278173446655e-01 4.3530249595642090e-01 + <_> + + 0 -1 968 2.1550289820879698e-03 + + 4.8262658715248108e-01 6.7497581243515015e-01 + <_> + + 0 -1 969 3.1742319464683533e-02 + + 5.0483798980712891e-01 1.8832489848136902e-01 + <_> + + 0 -1 970 -7.8382723033428192e-02 + + 2.3695489764213562e-01 5.2601581811904907e-01 + <_> + + 0 -1 971 5.7415119372308254e-03 + + 5.0488287210464478e-01 2.7764698863029480e-01 + <_> + + 0 -1 972 -2.9014600440859795e-03 + + 6.2386047840118408e-01 4.6933171153068542e-01 + <_> + + 0 -1 973 -2.6427931152284145e-03 + + 3.3141419291496277e-01 5.1697772741317749e-01 + <_> + + 0 -1 974 -1.0949660092592239e-01 + + 2.3800450563430786e-01 5.1834410429000854e-01 + <_> + + 0 -1 975 7.4075913289561868e-05 + + 4.0696358680725098e-01 5.3621500730514526e-01 + <_> + + 0 -1 976 -5.0593802006915212e-04 + + 5.5067062377929688e-01 4.3745940923690796e-01 + <_> + + 0 -1 977 -8.2131777890026569e-04 + + 5.5257099866867065e-01 4.2093759775161743e-01 + <_> + + 0 -1 978 -6.0276539443293586e-05 + + 5.4554748535156250e-01 4.7482660412788391e-01 + <_> + + 0 -1 979 6.8065142259001732e-03 + + 5.1579958200454712e-01 3.4245771169662476e-01 + <_> + + 0 -1 980 1.7202789895236492e-03 + + 5.0132077932357788e-01 6.3312637805938721e-01 + <_> + + 0 -1 981 -1.3016929733566940e-04 + + 5.5397182703018188e-01 4.2268699407577515e-01 + <_> + + 0 -1 982 -4.8016388900578022e-03 + + 4.4250950217247009e-01 5.4307800531387329e-01 + <_> + + 0 -1 983 -2.5399310979992151e-03 + + 7.1457821130752563e-01 4.6976050734519958e-01 + <_> + + 0 -1 984 -1.4278929447755218e-03 + + 4.0704450011253357e-01 5.3996050357818604e-01 + <_> + + 0 -1 985 -2.5142550468444824e-02 + + 7.8846907615661621e-01 4.7473520040512085e-01 + <_> + + 0 -1 986 -3.8899609353393316e-03 + + 4.2961919307708740e-01 5.5771100521087646e-01 + <_> + + 0 -1 987 4.3947459198534489e-03 + + 4.6931621432304382e-01 7.0239442586898804e-01 + <_> + + 0 -1 988 2.4678420275449753e-02 + + 5.2423220872879028e-01 3.8125100731849670e-01 + <_> + + 0 -1 989 3.8047678768634796e-02 + + 5.0117397308349609e-01 1.6878280043601990e-01 + <_> + + 0 -1 990 7.9424865543842316e-03 + + 4.8285821080207825e-01 6.3695681095123291e-01 + <_> + + 0 -1 991 -1.5110049862414598e-03 + + 5.9064859151840210e-01 4.4876679778099060e-01 + <_> + + 0 -1 992 6.4201741479337215e-03 + + 5.2410978078842163e-01 2.9905700683593750e-01 + <_> + + 0 -1 993 -2.9802159406244755e-03 + + 3.0414658784866333e-01 5.0784897804260254e-01 + <_> + + 0 -1 994 -7.4580078944563866e-04 + + 4.1281390190124512e-01 5.2568262815475464e-01 + <_> + + 0 -1 995 -1.0470950044691563e-02 + + 5.8083951473236084e-01 4.4942960143089294e-01 + <_> + + 0 -1 996 9.3369204550981522e-03 + + 5.2465528249740601e-01 2.6589488983154297e-01 + <_> + + 0 -1 997 2.7936900034546852e-02 + + 4.6749550104141235e-01 7.0872569084167480e-01 + <_> + + 0 -1 998 7.4277678504586220e-03 + + 5.4094868898391724e-01 3.7585180997848511e-01 + <_> + + 0 -1 999 -2.3584509268403053e-02 + + 3.7586399912834167e-01 5.2385509014129639e-01 + <_> + + 0 -1 1000 1.1452640173956752e-03 + + 4.3295788764953613e-01 5.8042472600936890e-01 + <_> + + 0 -1 1001 -4.3468660442158580e-04 + + 5.2806180715560913e-01 3.8730698823928833e-01 + <_> + + 0 -1 1002 1.0648540221154690e-02 + + 4.9021130800247192e-01 5.6812518835067749e-01 + <_> + + 0 -1 1003 -3.9418050437234342e-04 + + 5.5708801746368408e-01 4.3182510137557983e-01 + <_> + + 0 -1 1004 -1.3270479394122958e-04 + + 5.6584399938583374e-01 4.3435549736022949e-01 + <_> + + 0 -1 1005 -2.0125510636717081e-03 + + 6.0567390918731689e-01 4.5375239849090576e-01 + <_> + + 0 -1 1006 2.4854319635778666e-03 + + 5.3904771804809570e-01 4.1380101442337036e-01 + <_> + + 0 -1 1007 1.8237880431115627e-03 + + 4.3548288941383362e-01 5.7171887159347534e-01 + <_> + + 0 -1 1008 -1.6656659543514252e-02 + + 3.0109131336212158e-01 5.2161228656768799e-01 + <_> + + 0 -1 1009 8.0349558265879750e-04 + + 5.3001511096954346e-01 3.8183969259262085e-01 + <_> + + 0 -1 1010 3.4170378930866718e-03 + + 5.3280287981033325e-01 4.2414000630378723e-01 + <_> + + 0 -1 1011 -3.6222729249857366e-04 + + 5.4917281866073608e-01 4.1869771480560303e-01 + <_> + + 0 -1 1012 -1.1630020290613174e-01 + + 1.4407220482826233e-01 5.2264511585235596e-01 + <_> + + 0 -1 1013 -1.4695010147988796e-02 + + 7.7477252483367920e-01 4.7157171368598938e-01 + <_> + + 0 -1 1014 2.1972130052745342e-03 + + 5.3554338216781616e-01 3.3156448602676392e-01 + <_> + + 0 -1 1015 -4.6965209185145795e-04 + + 5.7672351598739624e-01 4.4581368565559387e-01 + <_> + + 0 -1 1016 6.5144998952746391e-03 + + 5.2156740427017212e-01 3.6478888988494873e-01 + <_> + + 0 -1 1017 2.1300060674548149e-02 + + 4.9942049384117126e-01 1.5679509937763214e-01 + <_> + + 0 -1 1018 3.1881409231573343e-03 + + 4.7422000765800476e-01 6.2872701883316040e-01 + <_> + + 0 -1 1019 9.0019777417182922e-04 + + 5.3479540348052979e-01 3.9437520503997803e-01 + <_> + + 0 -1 1020 -5.1772277802228928e-03 + + 6.7271918058395386e-01 5.0131380558013916e-01 + <_> + + 0 -1 1021 -4.3764649890363216e-03 + + 3.1066751480102539e-01 5.1287931203842163e-01 + <_> + + 0 -1 1022 2.6299960445612669e-03 + + 4.8863101005554199e-01 5.7552158832550049e-01 + <_> + + 0 -1 1023 -2.0458688959479332e-03 + + 6.0257941484451294e-01 4.5580768585205078e-01 + <_> + + 0 -1 1024 6.9482706487178802e-02 + + 5.2407479286193848e-01 2.1852590143680573e-01 + <_> + + 0 -1 1025 2.4048939347267151e-02 + + 5.0118672847747803e-01 2.0906220376491547e-01 + <_> + + 0 -1 1026 3.1095340382307768e-03 + + 4.8667120933532715e-01 7.1085482835769653e-01 + <_> + + 0 -1 1027 -1.2503260513767600e-03 + + 3.4078910946846008e-01 5.1561951637268066e-01 + <_> + + 0 -1 1028 -1.0281190043315291e-03 + + 5.5755722522735596e-01 4.4394320249557495e-01 + <_> + + 0 -1 1029 -8.8893622159957886e-03 + + 6.4020007848739624e-01 4.6204420924186707e-01 + <_> + + 0 -1 1030 -6.1094801640138030e-04 + + 3.7664419412612915e-01 5.4488998651504517e-01 + <_> + + 0 -1 1031 -5.7686357758939266e-03 + + 3.3186489343643188e-01 5.1336771249771118e-01 + <_> + + 0 -1 1032 1.8506490159779787e-03 + + 4.9035701155662537e-01 6.4069348573684692e-01 + <_> + + 0 -1 1033 -9.9799469113349915e-02 + + 1.5360510349273682e-01 5.0155621767044067e-01 + <_> + + 0 -1 1034 -3.5128349065780640e-01 + + 5.8823131024837494e-02 5.1743787527084351e-01 + <_> + + 0 -1 1035 -4.5244570821523666e-02 + + 6.9614887237548828e-01 4.6778729557991028e-01 + <_> + + 0 -1 1036 7.1481578052043915e-02 + + 5.1679861545562744e-01 1.0380929708480835e-01 + <_> + + 0 -1 1037 2.1895780228078365e-03 + + 4.2730781435966492e-01 5.5320608615875244e-01 + <_> + + 0 -1 1038 -5.9242651332169771e-04 + + 4.6389439702033997e-01 5.2763891220092773e-01 + <_> + + 0 -1 1039 1.6788389766588807e-03 + + 5.3016489744186401e-01 3.9320349693298340e-01 + <_> + + 0 -1 1040 -2.2163488902151585e-03 + + 5.6306940317153931e-01 4.7570338845252991e-01 + <_> + + 0 -1 1041 1.1568699846975505e-04 + + 4.3075358867645264e-01 5.5357027053833008e-01 + <_> + + 0 -1 1042 -7.2017288766801357e-03 + + 1.4448820054531097e-01 5.1930642127990723e-01 + <_> + + 0 -1 1043 8.9081272017210722e-04 + + 4.3844321370124817e-01 5.5936211347579956e-01 + <_> + + 0 -1 1044 1.9605009583756328e-04 + + 5.3404158353805542e-01 4.7059568762779236e-01 + <_> + + 0 -1 1045 5.2022142335772514e-04 + + 5.2138561010360718e-01 3.8100790977478027e-01 + <_> + + 0 -1 1046 9.4588572392240167e-04 + + 4.7694149613380432e-01 6.1307388544082642e-01 + <_> + + 0 -1 1047 9.1698471806012094e-05 + + 4.2450091242790222e-01 5.4293632507324219e-01 + <_> + + 0 -1 1048 2.1833200007677078e-03 + + 5.4577308893203735e-01 4.1910758614540100e-01 + <_> + + 0 -1 1049 -8.6039671441540122e-04 + + 5.7645887136459351e-01 4.4716599583625793e-01 + <_> + + 0 -1 1050 -1.3236239552497864e-02 + + 6.3728231191635132e-01 4.6950098872184753e-01 + <_> + + 0 -1 1051 4.3376701069064438e-04 + + 5.3178739547729492e-01 3.9458298683166504e-01 + <_> + 140 + 6.9229873657226562e+01 + + <_> + + 0 -1 1052 -2.4847149848937988e-02 + + 6.5555167198181152e-01 3.8733118772506714e-01 + <_> + + 0 -1 1053 6.1348611488938332e-03 + + 3.7480720877647400e-01 5.9739977121353149e-01 + <_> + + 0 -1 1054 6.4498498104512691e-03 + + 5.4254919290542603e-01 2.5488111376762390e-01 + <_> + + 0 -1 1055 6.3491211039945483e-04 + + 2.4624420702457428e-01 5.3872537612915039e-01 + <_> + + 0 -1 1056 1.4023890253156424e-03 + + 5.5943220853805542e-01 3.5286578536033630e-01 + <_> + + 0 -1 1057 3.0044000595808029e-04 + + 3.9585039019584656e-01 5.7659381628036499e-01 + <_> + + 0 -1 1058 1.0042409849120304e-04 + + 3.6989969015121460e-01 5.5349981784820557e-01 + <_> + + 0 -1 1059 -5.0841490738093853e-03 + + 3.7110909819602966e-01 5.5478000640869141e-01 + <_> + + 0 -1 1060 -1.9537260755896568e-02 + + 7.4927550554275513e-01 4.5792970061302185e-01 + <_> + + 0 -1 1061 -7.4532740654831287e-06 + + 5.6497871875762939e-01 3.9040699601173401e-01 + <_> + + 0 -1 1062 -3.6079459823668003e-03 + + 3.3810880780220032e-01 5.2678012847900391e-01 + <_> + + 0 -1 1063 2.0697501022368670e-03 + + 5.5192911624908447e-01 3.7143889069557190e-01 + <_> + + 0 -1 1064 -4.6463840408250690e-04 + + 5.6082147359848022e-01 4.1135668754577637e-01 + <_> + + 0 -1 1065 7.5490452582016587e-04 + + 3.5592061281204224e-01 5.3293561935424805e-01 + <_> + + 0 -1 1066 -9.8322238773107529e-04 + + 5.4147958755493164e-01 3.7632051110267639e-01 + <_> + + 0 -1 1067 -1.9940640777349472e-02 + + 6.3479030132293701e-01 4.7052991390228271e-01 + <_> + + 0 -1 1068 3.7680300883948803e-03 + + 3.9134898781776428e-01 5.5637162923812866e-01 + <_> + + 0 -1 1069 -9.4528505578637123e-03 + + 2.5548928976058960e-01 5.2151167392730713e-01 + <_> + + 0 -1 1070 2.9560849070549011e-03 + + 5.1746791601181030e-01 3.0639201402664185e-01 + <_> + + 0 -1 1071 9.1078737750649452e-03 + + 5.3884482383728027e-01 2.8859630227088928e-01 + <_> + + 0 -1 1072 1.8219229532405734e-03 + + 4.3360430002212524e-01 5.8521968126296997e-01 + <_> + + 0 -1 1073 1.4688739553093910e-02 + + 5.2873617410659790e-01 2.8700059652328491e-01 + <_> + + 0 -1 1074 -1.4387990348041058e-02 + + 7.0194488763809204e-01 4.6473708748817444e-01 + <_> + + 0 -1 1075 -1.8986649811267853e-02 + + 2.9865521192550659e-01 5.2470117807388306e-01 + <_> + + 0 -1 1076 1.1527639580890536e-03 + + 4.3234738707542419e-01 5.9316617250442505e-01 + <_> + + 0 -1 1077 1.0933670215308666e-02 + + 5.2868640422821045e-01 3.1303191184997559e-01 + <_> + + 0 -1 1078 -1.4932730235159397e-02 + + 2.6584190130233765e-01 5.0840771198272705e-01 + <_> + + 0 -1 1079 -2.9970539617352188e-04 + + 5.4635268449783325e-01 3.7407240271568298e-01 + <_> + + 0 -1 1080 4.1677621193230152e-03 + + 4.7034969925880432e-01 7.4357217550277710e-01 + <_> + + 0 -1 1081 -6.3905320130288601e-03 + + 2.0692589879035950e-01 5.2805382013320923e-01 + <_> + + 0 -1 1082 4.5029609464108944e-03 + + 5.1826488971710205e-01 3.4835430979728699e-01 + <_> + + 0 -1 1083 -9.2040365561842918e-03 + + 6.8037772178649902e-01 4.9323600530624390e-01 + <_> + + 0 -1 1084 8.1327259540557861e-02 + + 5.0583988428115845e-01 2.2530519962310791e-01 + <_> + + 0 -1 1085 -1.5079280734062195e-01 + + 2.9634249210357666e-01 5.2646797895431519e-01 + <_> + + 0 -1 1086 3.3179009333252907e-03 + + 4.6554958820343018e-01 7.0729321241378784e-01 + <_> + + 0 -1 1087 7.7402801252901554e-04 + + 4.7803479433059692e-01 5.6682378053665161e-01 + <_> + + 0 -1 1088 6.8199541419744492e-04 + + 4.2869961261749268e-01 5.7221567630767822e-01 + <_> + + 0 -1 1089 5.3671570494771004e-03 + + 5.2993071079254150e-01 3.1146219372749329e-01 + <_> + + 0 -1 1090 9.7018666565418243e-05 + + 3.6746388673782349e-01 5.2694618701934814e-01 + <_> + + 0 -1 1091 -1.2534089386463165e-01 + + 2.3514920473098755e-01 5.2457910776138306e-01 + <_> + + 0 -1 1092 -5.2516269497573376e-03 + + 7.1159368753433228e-01 4.6937671303749084e-01 + <_> + + 0 -1 1093 -7.8342109918594360e-03 + + 4.4626510143280029e-01 5.4090857505798340e-01 + <_> + + 0 -1 1094 -1.1310069821774960e-03 + + 5.9456187486648560e-01 4.4176620244979858e-01 + <_> + + 0 -1 1095 1.7601120052859187e-03 + + 5.3532499074935913e-01 3.9734530448913574e-01 + <_> + + 0 -1 1096 -8.1581249833106995e-04 + + 3.7602680921554565e-01 5.2647268772125244e-01 + <_> + + 0 -1 1097 -3.8687589112669230e-03 + + 6.3099128007888794e-01 4.7498199343681335e-01 + <_> + + 0 -1 1098 1.5207129763439298e-03 + + 5.2301818132400513e-01 3.3612239360809326e-01 + <_> + + 0 -1 1099 5.4586738348007202e-01 + + 5.1671397686004639e-01 1.1726350337266922e-01 + <_> + + 0 -1 1100 1.5650190412998199e-02 + + 4.9794390797615051e-01 1.3932949304580688e-01 + <_> + + 0 -1 1101 -1.1731860227882862e-02 + + 7.1296507120132446e-01 4.9211961030960083e-01 + <_> + + 0 -1 1102 -6.1765122227370739e-03 + + 2.2881029546260834e-01 5.0497019290924072e-01 + <_> + + 0 -1 1103 2.2457661107182503e-03 + + 4.6324339509010315e-01 6.0487258434295654e-01 + <_> + + 0 -1 1104 -5.1915869116783142e-03 + + 6.4674210548400879e-01 4.6021929383277893e-01 + <_> + + 0 -1 1105 -2.3827880620956421e-02 + + 1.4820009469985962e-01 5.2260792255401611e-01 + <_> + + 0 -1 1106 1.0284580057486892e-03 + + 5.1354891061782837e-01 3.3759570121765137e-01 + <_> + + 0 -1 1107 -1.0078850202262402e-02 + + 2.7405610680580139e-01 5.3035670518875122e-01 + <_> + + 0 -1 1108 2.6168930344283581e-03 + + 5.3326708078384399e-01 3.9724540710449219e-01 + <_> + + 0 -1 1109 5.4385367548093200e-04 + + 5.3656041622161865e-01 4.0634119510650635e-01 + <_> + + 0 -1 1110 5.3510512225329876e-03 + + 4.6537590026855469e-01 6.8890458345413208e-01 + <_> + + 0 -1 1111 -1.5274790348485112e-03 + + 5.4495012760162354e-01 3.6247238516807556e-01 + <_> + + 0 -1 1112 -8.0624416470527649e-02 + + 1.6560870409011841e-01 5.0002872943878174e-01 + <_> + + 0 -1 1113 2.2192029282450676e-02 + + 5.1327311992645264e-01 2.0028080046176910e-01 + <_> + + 0 -1 1114 7.3100631125271320e-03 + + 4.6179479360580444e-01 6.3665360212326050e-01 + <_> + + 0 -1 1115 -6.4063072204589844e-03 + + 5.9162509441375732e-01 4.8678609728813171e-01 + <_> + + 0 -1 1116 -7.6415040530264378e-04 + + 3.8884091377258301e-01 5.3157979249954224e-01 + <_> + + 0 -1 1117 7.6734489994123578e-04 + + 4.1590648889541626e-01 5.6052798032760620e-01 + <_> + + 0 -1 1118 6.1474501853808761e-04 + + 3.0890220403671265e-01 5.1201480627059937e-01 + <_> + + 0 -1 1119 -5.0105270929634571e-03 + + 3.9721998572349548e-01 5.2073061466217041e-01 + <_> + + 0 -1 1120 -8.6909132078289986e-03 + + 6.2574082612991333e-01 4.6085759997367859e-01 + <_> + + 0 -1 1121 -1.6391459852457047e-02 + + 2.0852099359035492e-01 5.2422660589218140e-01 + <_> + + 0 -1 1122 4.0973909199237823e-04 + + 5.2224272489547729e-01 3.7803208827972412e-01 + <_> + + 0 -1 1123 -2.5242289993911982e-03 + + 5.8039271831512451e-01 4.6118900179862976e-01 + <_> + + 0 -1 1124 5.0945312250405550e-04 + + 4.4012719392776489e-01 5.8460158109664917e-01 + <_> + + 0 -1 1125 1.9656419754028320e-03 + + 5.3223252296447754e-01 4.1845908761024475e-01 + <_> + + 0 -1 1126 5.6298897834494710e-04 + + 3.7418448925018311e-01 5.2345657348632812e-01 + <_> + + 0 -1 1127 -6.7946797935292125e-04 + + 4.6310418844223022e-01 5.3564780950546265e-01 + <_> + + 0 -1 1128 7.2856349870562553e-03 + + 5.0446701049804688e-01 2.3775640130043030e-01 + <_> + + 0 -1 1129 -1.7459489405155182e-02 + + 7.2891211509704590e-01 5.0504350662231445e-01 + <_> + + 0 -1 1130 -2.5421749800443649e-02 + + 6.6671347618103027e-01 4.6781000494956970e-01 + <_> + + 0 -1 1131 -1.5647639520466328e-03 + + 4.3917590379714966e-01 5.3236269950866699e-01 + <_> + + 0 -1 1132 1.1444360017776489e-02 + + 4.3464401364326477e-01 5.6800121068954468e-01 + <_> + + 0 -1 1133 -6.7352550104260445e-04 + + 4.4771409034729004e-01 5.2968120574951172e-01 + <_> + + 0 -1 1134 9.3194209039211273e-03 + + 4.7402000427246094e-01 7.4626070261001587e-01 + <_> + + 0 -1 1135 1.3328490604180843e-04 + + 5.3650617599487305e-01 4.7521349787712097e-01 + <_> + + 0 -1 1136 -7.8815799206495285e-03 + + 1.7522190511226654e-01 5.0152552127838135e-01 + <_> + + 0 -1 1137 -5.7985680177807808e-03 + + 7.2712367773056030e-01 4.8962008953094482e-01 + <_> + + 0 -1 1138 -3.8922499516047537e-04 + + 4.0039089322090149e-01 5.3449410200119019e-01 + <_> + + 0 -1 1139 -1.9288610201328993e-03 + + 5.6056129932403564e-01 4.8039558529853821e-01 + <_> + + 0 -1 1140 8.4214154630899429e-03 + + 4.7532469034194946e-01 7.6236087083816528e-01 + <_> + + 0 -1 1141 8.1655876711010933e-03 + + 5.3932619094848633e-01 4.1916438937187195e-01 + <_> + + 0 -1 1142 4.8280550981871784e-04 + + 4.2408001422882080e-01 5.3998219966888428e-01 + <_> + + 0 -1 1143 -2.7186630759388208e-03 + + 4.2445999383926392e-01 5.4249238967895508e-01 + <_> + + 0 -1 1144 -1.2507230043411255e-02 + + 5.8958417177200317e-01 4.5504111051559448e-01 + <_> + + 0 -1 1145 -2.4286519736051559e-02 + + 2.6471349596977234e-01 5.1891797780990601e-01 + <_> + + 0 -1 1146 -2.9676330741494894e-03 + + 7.3476827144622803e-01 4.7497498989105225e-01 + <_> + + 0 -1 1147 -1.2528999708592892e-02 + + 2.7560499310493469e-01 5.1775997877120972e-01 + <_> + + 0 -1 1148 -1.0104000102728605e-03 + + 3.5105609893798828e-01 5.1447242498397827e-01 + <_> + + 0 -1 1149 -2.1348530426621437e-03 + + 5.6379258632659912e-01 4.6673199534416199e-01 + <_> + + 0 -1 1150 1.9564259797334671e-02 + + 4.6145731210708618e-01 6.1376398801803589e-01 + <_> + + 0 -1 1151 -9.7146347165107727e-02 + + 2.9983788728713989e-01 5.1935559511184692e-01 + <_> + + 0 -1 1152 4.5014568604528904e-03 + + 5.0778847932815552e-01 3.0457559227943420e-01 + <_> + + 0 -1 1153 6.3706971704959869e-03 + + 4.8610189557075500e-01 6.8875008821487427e-01 + <_> + + 0 -1 1154 -9.0721528977155685e-03 + + 1.6733959317207336e-01 5.0175631046295166e-01 + <_> + + 0 -1 1155 -5.3537208586931229e-03 + + 2.6927569508552551e-01 5.2426332235336304e-01 + <_> + + 0 -1 1156 -1.0932840406894684e-02 + + 7.1838641166687012e-01 4.7360289096832275e-01 + <_> + + 0 -1 1157 8.2356072962284088e-03 + + 5.2239668369293213e-01 2.3898629844188690e-01 + <_> + + 0 -1 1158 -1.0038160253316164e-03 + + 5.7193559408187866e-01 4.4339430332183838e-01 + <_> + + 0 -1 1159 4.0859128348529339e-03 + + 5.4728418588638306e-01 4.1488361358642578e-01 + <_> + + 0 -1 1160 1.5485419332981110e-01 + + 4.9738121032714844e-01 6.1061598360538483e-02 + <_> + + 0 -1 1161 2.0897459762636572e-04 + + 4.7091740369796753e-01 5.4238891601562500e-01 + <_> + + 0 -1 1162 3.3316991175524890e-04 + + 4.0896269679069519e-01 5.3009921312332153e-01 + <_> + + 0 -1 1163 -1.0813400149345398e-02 + + 6.1043697595596313e-01 4.9573341012001038e-01 + <_> + + 0 -1 1164 4.5656010508537292e-02 + + 5.0696891546249390e-01 2.8666600584983826e-01 + <_> + + 0 -1 1165 1.2569549726322293e-03 + + 4.8469170928001404e-01 6.3181710243225098e-01 + <_> + + 0 -1 1166 -1.2015070021152496e-01 + + 6.0526140034198761e-02 4.9809598922729492e-01 + <_> + + 0 -1 1167 -1.0533799650147557e-04 + + 5.3631097078323364e-01 4.7080421447753906e-01 + <_> + + 0 -1 1168 -2.0703190565109253e-01 + + 5.9660330414772034e-02 4.9790981411933899e-01 + <_> + + 0 -1 1169 1.2909180077258497e-04 + + 4.7129771113395691e-01 5.3779977560043335e-01 + <_> + + 0 -1 1170 3.8818528992123902e-04 + + 4.3635380268096924e-01 5.5341911315917969e-01 + <_> + + 0 -1 1171 -2.9243610333651304e-03 + + 5.8111858367919922e-01 4.8252159357070923e-01 + <_> + + 0 -1 1172 8.3882332546636462e-04 + + 5.3117001056671143e-01 4.0381389856338501e-01 + <_> + + 0 -1 1173 -1.9061550265178084e-03 + + 3.7707018852233887e-01 5.2600151300430298e-01 + <_> + + 0 -1 1174 8.9514348655939102e-03 + + 4.7661679983139038e-01 7.6821839809417725e-01 + <_> + + 0 -1 1175 1.3083459809422493e-02 + + 5.2644628286361694e-01 3.0622220039367676e-01 + <_> + + 0 -1 1176 -2.1159330010414124e-01 + + 6.7371982336044312e-01 4.6958100795745850e-01 + <_> + + 0 -1 1177 3.1493250280618668e-03 + + 5.6448352336883545e-01 4.3869531154632568e-01 + <_> + + 0 -1 1178 3.9754100725986063e-04 + + 4.5260611176490784e-01 5.8956301212310791e-01 + <_> + + 0 -1 1179 -1.3814480043947697e-03 + + 6.0705822706222534e-01 4.9424138665199280e-01 + <_> + + 0 -1 1180 -5.8122188784182072e-04 + + 5.9982132911682129e-01 4.5082521438598633e-01 + <_> + + 0 -1 1181 -2.3905329871922731e-03 + + 4.2055889964103699e-01 5.2238482236862183e-01 + <_> + + 0 -1 1182 2.7268929407000542e-02 + + 5.2064472436904907e-01 3.5633018612861633e-01 + <_> + + 0 -1 1183 -3.7658358924090862e-03 + + 3.1447041034698486e-01 5.2188140153884888e-01 + <_> + + 0 -1 1184 -1.4903489500284195e-03 + + 3.3801960945129395e-01 5.1244372129440308e-01 + <_> + + 0 -1 1185 -1.7428230494260788e-02 + + 5.8299607038497925e-01 4.9197259545326233e-01 + <_> + + 0 -1 1186 -1.5278030186891556e-02 + + 6.1631447076797485e-01 4.6178871393203735e-01 + <_> + + 0 -1 1187 3.1995609402656555e-02 + + 5.1663571596145630e-01 1.7127640545368195e-01 + <_> + + 0 -1 1188 -3.8256710395216942e-03 + + 3.4080120921134949e-01 5.1313877105712891e-01 + <_> + + 0 -1 1189 -8.5186436772346497e-03 + + 6.1055189371109009e-01 4.9979418516159058e-01 + <_> + + 0 -1 1190 9.0641621500253677e-04 + + 4.3272709846496582e-01 5.5823111534118652e-01 + <_> + + 0 -1 1191 1.0344849899411201e-02 + + 4.8556530475616455e-01 5.4524201154708862e-01 + <_> + 160 + 7.9249076843261719e+01 + + <_> + + 0 -1 1192 7.8981826081871986e-03 + + 3.3325248956680298e-01 5.9464621543884277e-01 + <_> + + 0 -1 1193 1.6170160379260778e-03 + + 3.4906411170959473e-01 5.5778688192367554e-01 + <_> + + 0 -1 1194 -5.5449741194024682e-04 + + 5.5425661802291870e-01 3.2915300130844116e-01 + <_> + + 0 -1 1195 1.5428980113938451e-03 + + 3.6125791072845459e-01 5.5459791421890259e-01 + <_> + + 0 -1 1196 -1.0329450014978647e-03 + + 3.5301390290260315e-01 5.5761402845382690e-01 + <_> + + 0 -1 1197 7.7698158565908670e-04 + + 3.9167788624763489e-01 5.6453210115432739e-01 + <_> + + 0 -1 1198 1.4320300519466400e-01 + + 4.6674820780754089e-01 7.0236331224441528e-01 + <_> + + 0 -1 1199 -7.3866490274667740e-03 + + 3.0736848711967468e-01 5.2892577648162842e-01 + <_> + + 0 -1 1200 -6.2936742324382067e-04 + + 5.6221181154251099e-01 4.0370491147041321e-01 + <_> + + 0 -1 1201 7.8893528552725911e-04 + + 5.2676612138748169e-01 3.5578748583793640e-01 + <_> + + 0 -1 1202 -1.2228050269186497e-02 + + 6.6683208942413330e-01 4.6255499124526978e-01 + <_> + + 0 -1 1203 3.5420239437371492e-03 + + 5.5214381217956543e-01 3.8696730136871338e-01 + <_> + + 0 -1 1204 -1.0585320414975286e-03 + + 3.6286780238151550e-01 5.3209269046783447e-01 + <_> + + 0 -1 1205 1.4935660146875307e-05 + + 4.6324449777603149e-01 5.3633230924606323e-01 + <_> + + 0 -1 1206 5.2537708543241024e-03 + + 5.1322317123413086e-01 3.2657089829444885e-01 + <_> + + 0 -1 1207 -8.2338023930788040e-03 + + 6.6936898231506348e-01 4.7741401195526123e-01 + <_> + + 0 -1 1208 2.1866810129722580e-05 + + 4.0538620948791504e-01 5.4579311609268188e-01 + <_> + + 0 -1 1209 -3.8150229956954718e-03 + + 6.4549958705902100e-01 4.7931781411170959e-01 + <_> + + 0 -1 1210 1.1105879675596952e-03 + + 5.2704071998596191e-01 3.5296788811683655e-01 + <_> + + 0 -1 1211 -5.7707689702510834e-03 + + 3.8035470247268677e-01 5.3529578447341919e-01 + <_> + + 0 -1 1212 -3.0158339068293571e-03 + + 5.3394031524658203e-01 3.8871330022811890e-01 + <_> + + 0 -1 1213 -8.5453689098358154e-04 + + 3.5646161437034607e-01 5.2736037969589233e-01 + <_> + + 0 -1 1214 1.1050510220229626e-02 + + 4.6719071269035339e-01 6.8497377634048462e-01 + <_> + + 0 -1 1215 4.2605839669704437e-02 + + 5.1514732837677002e-01 7.0220090448856354e-02 + <_> + + 0 -1 1216 -3.0781750101596117e-03 + + 3.0416610836982727e-01 5.1526021957397461e-01 + <_> + + 0 -1 1217 -5.4815728217363358e-03 + + 6.4302957057952881e-01 4.8972299695014954e-01 + <_> + + 0 -1 1218 3.1881860923022032e-03 + + 5.3074932098388672e-01 3.8262099027633667e-01 + <_> + + 0 -1 1219 3.5947180003859103e-04 + + 4.6500471234321594e-01 5.4219049215316772e-01 + <_> + + 0 -1 1220 -4.0705031715333462e-03 + + 2.8496798872947693e-01 5.0791162252426147e-01 + <_> + + 0 -1 1221 -1.4594170264899731e-02 + + 2.9716458916664124e-01 5.1284617185592651e-01 + <_> + + 0 -1 1222 -1.1947689927183092e-04 + + 5.6310981512069702e-01 4.3430820107460022e-01 + <_> + + 0 -1 1223 -6.9344649091362953e-04 + + 4.4035780429840088e-01 5.3599590063095093e-01 + <_> + + 0 -1 1224 1.4834799912932795e-05 + + 3.4210088849067688e-01 5.1646977663040161e-01 + <_> + + 0 -1 1225 9.0296985581517220e-03 + + 4.6393430233001709e-01 6.1140751838684082e-01 + <_> + + 0 -1 1226 -8.0640818923711777e-03 + + 2.8201588988304138e-01 5.0754940509796143e-01 + <_> + + 0 -1 1227 2.6062119752168655e-02 + + 5.2089059352874756e-01 2.6887780427932739e-01 + <_> + + 0 -1 1228 1.7314659431576729e-02 + + 4.6637138724327087e-01 6.7385399341583252e-01 + <_> + + 0 -1 1229 2.2666640579700470e-02 + + 5.2093499898910522e-01 2.2127239406108856e-01 + <_> + + 0 -1 1230 -2.1965929772704840e-03 + + 6.0631012916564941e-01 4.5381900668144226e-01 + <_> + + 0 -1 1231 -9.5282476395368576e-03 + + 4.6352049708366394e-01 5.2474308013916016e-01 + <_> + + 0 -1 1232 8.0943619832396507e-03 + + 5.2894401550292969e-01 3.9138820767402649e-01 + <_> + + 0 -1 1233 -7.2877332568168640e-02 + + 7.7520018815994263e-01 4.9902349710464478e-01 + <_> + + 0 -1 1234 -6.9009521976113319e-03 + + 2.4280390143394470e-01 5.0480902194976807e-01 + <_> + + 0 -1 1235 -1.1308239772915840e-02 + + 5.7343649864196777e-01 4.8423761129379272e-01 + <_> + + 0 -1 1236 5.9613201767206192e-02 + + 5.0298362970352173e-01 2.5249770283699036e-01 + <_> + + 0 -1 1237 -2.8624620754271746e-03 + + 6.0730451345443726e-01 4.8984599113464355e-01 + <_> + + 0 -1 1238 4.4781449250876904e-03 + + 5.0152891874313354e-01 2.2203169763088226e-01 + <_> + + 0 -1 1239 -1.7513240454718471e-03 + + 6.6144287586212158e-01 4.9338689446449280e-01 + <_> + + 0 -1 1240 4.0163420140743256e-02 + + 5.1808780431747437e-01 3.7410449981689453e-01 + <_> + + 0 -1 1241 3.4768949262797832e-04 + + 4.7204169631004333e-01 5.8180320262908936e-01 + <_> + + 0 -1 1242 2.6551650371402502e-03 + + 3.8050109148025513e-01 5.2213358879089355e-01 + <_> + + 0 -1 1243 -8.7706279009580612e-03 + + 2.9441660642623901e-01 5.2312952280044556e-01 + <_> + + 0 -1 1244 -5.5122091434895992e-03 + + 7.3461771011352539e-01 4.7228169441223145e-01 + <_> + + 0 -1 1245 6.8672042107209563e-04 + + 5.4528760910034180e-01 4.2424130439758301e-01 + <_> + + 0 -1 1246 5.6019669864326715e-04 + + 4.3988621234893799e-01 5.6012850999832153e-01 + <_> + + 0 -1 1247 2.4143769405782223e-03 + + 4.7416868805885315e-01 6.1366218328475952e-01 + <_> + + 0 -1 1248 -1.5680900542065501e-03 + + 6.0445529222488403e-01 4.5164099335670471e-01 + <_> + + 0 -1 1249 -3.6827491130679846e-03 + + 2.4524590373039246e-01 5.2949821949005127e-01 + <_> + + 0 -1 1250 -2.9409190756268799e-04 + + 3.7328380346298218e-01 5.2514511346817017e-01 + <_> + + 0 -1 1251 4.2847759323194623e-04 + + 5.4988098144531250e-01 4.0655350685119629e-01 + <_> + + 0 -1 1252 -4.8817070201039314e-03 + + 2.1399089694023132e-01 4.9999570846557617e-01 + <_> + + 0 -1 1253 2.7272020815871656e-04 + + 4.6502870321273804e-01 5.8134287595748901e-01 + <_> + + 0 -1 1254 2.0947199664078653e-04 + + 4.3874868750572205e-01 5.5727928876876831e-01 + <_> + + 0 -1 1255 4.8501189798116684e-02 + + 5.2449727058410645e-01 3.2128891348838806e-01 + <_> + + 0 -1 1256 -4.5166411437094212e-03 + + 6.0568130016326904e-01 4.5458820462226868e-01 + <_> + + 0 -1 1257 -1.2291680090129375e-02 + + 2.0409290492534637e-01 5.1522141695022583e-01 + <_> + + 0 -1 1258 4.8549679922871292e-04 + + 5.2376049757003784e-01 3.7395030260086060e-01 + <_> + + 0 -1 1259 3.0556049197912216e-02 + + 4.9605339765548706e-01 5.9382462501525879e-01 + <_> + + 0 -1 1260 -1.5105320198927075e-04 + + 5.3513038158416748e-01 4.1452041268348694e-01 + <_> + + 0 -1 1261 2.4937440175563097e-03 + + 4.6933668851852417e-01 5.5149412155151367e-01 + <_> + + 0 -1 1262 -1.2382130138576031e-02 + + 6.7913967370986938e-01 4.6816679835319519e-01 + <_> + + 0 -1 1263 -5.1333461888134480e-03 + + 3.6087390780448914e-01 5.2291601896286011e-01 + <_> + + 0 -1 1264 5.1919277757406235e-04 + + 5.3000730276107788e-01 3.6336138844490051e-01 + <_> + + 0 -1 1265 1.5060420334339142e-01 + + 5.1573169231414795e-01 2.2117820382118225e-01 + <_> + + 0 -1 1266 7.7144149690866470e-03 + + 4.4104969501495361e-01 5.7766091823577881e-01 + <_> + + 0 -1 1267 9.4443522393703461e-03 + + 5.4018551111221313e-01 3.7566500902175903e-01 + <_> + + 0 -1 1268 2.5006249779835343e-04 + + 4.3682709336280823e-01 5.6073749065399170e-01 + <_> + + 0 -1 1269 -3.3077150583267212e-03 + + 4.2447990179061890e-01 5.5182307958602905e-01 + <_> + + 0 -1 1270 7.4048910755664110e-04 + + 4.4969621300697327e-01 5.9005767107009888e-01 + <_> + + 0 -1 1271 4.4092051684856415e-02 + + 5.2934932708740234e-01 3.1563550233840942e-01 + <_> + + 0 -1 1272 3.3639909233897924e-03 + + 4.4832968711853027e-01 5.8486622571945190e-01 + <_> + + 0 -1 1273 -3.9760079234838486e-03 + + 4.5595070719718933e-01 5.4836392402648926e-01 + <_> + + 0 -1 1274 2.7716930489987135e-03 + + 5.3417861461639404e-01 3.7924841046333313e-01 + <_> + + 0 -1 1275 -2.4123019829858094e-04 + + 5.6671887636184692e-01 4.5769730210304260e-01 + <_> + + 0 -1 1276 4.9425667384639382e-04 + + 4.4212448596954346e-01 5.6287872791290283e-01 + <_> + + 0 -1 1277 -3.8876468897797167e-04 + + 4.2883709073066711e-01 5.3910630941390991e-01 + <_> + + 0 -1 1278 -5.0048898905515671e-02 + + 6.8995130062103271e-01 4.7037428617477417e-01 + <_> + + 0 -1 1279 -3.6635480821132660e-02 + + 2.2177790105342865e-01 5.1918262243270874e-01 + <_> + + 0 -1 1280 2.4273579474538565e-03 + + 5.1362240314483643e-01 3.4973978996276855e-01 + <_> + + 0 -1 1281 1.9558030180633068e-03 + + 4.8261928558349609e-01 6.4083808660507202e-01 + <_> + + 0 -1 1282 -1.7494610510766506e-03 + + 3.9228358864784241e-01 5.2726852893829346e-01 + <_> + + 0 -1 1283 1.3955079950392246e-02 + + 5.0782018899917603e-01 8.4165048599243164e-01 + <_> + + 0 -1 1284 -2.1896739781368524e-04 + + 5.5204898118972778e-01 4.3142348527908325e-01 + <_> + + 0 -1 1285 -1.5131309628486633e-03 + + 3.9346051216125488e-01 5.3825712203979492e-01 + <_> + + 0 -1 1286 -4.3622800149023533e-03 + + 7.3706287145614624e-01 4.7364759445190430e-01 + <_> + + 0 -1 1287 6.5160587430000305e-02 + + 5.1592797040939331e-01 3.2815951108932495e-01 + <_> + + 0 -1 1288 -2.3567399475723505e-03 + + 3.6728268861770630e-01 5.1728862524032593e-01 + <_> + + 0 -1 1289 1.5146659687161446e-02 + + 5.0314939022064209e-01 6.6876041889190674e-01 + <_> + + 0 -1 1290 -2.2850960493087769e-02 + + 6.7675197124481201e-01 4.7095969319343567e-01 + <_> + + 0 -1 1291 4.8867650330066681e-03 + + 5.2579981088638306e-01 4.0598788857460022e-01 + <_> + + 0 -1 1292 1.7619599821045995e-03 + + 4.6962729096412659e-01 6.6882789134979248e-01 + <_> + + 0 -1 1293 -1.2942519970238209e-03 + + 4.3207129836082458e-01 5.3442817926406860e-01 + <_> + + 0 -1 1294 1.0929949581623077e-02 + + 4.9977061152458191e-01 1.6374860703945160e-01 + <_> + + 0 -1 1295 2.9958489903947338e-05 + + 4.2824178934097290e-01 5.6332242488861084e-01 + <_> + + 0 -1 1296 -6.5884361974895000e-03 + + 6.7721211910247803e-01 4.7005268931388855e-01 + <_> + + 0 -1 1297 3.2527779694646597e-03 + + 5.3133970499038696e-01 4.5361489057540894e-01 + <_> + + 0 -1 1298 -4.0435739792883396e-03 + + 5.6600618362426758e-01 4.4133889675140381e-01 + <_> + + 0 -1 1299 -1.2523540062829852e-03 + + 3.7319138646125793e-01 5.3564518690109253e-01 + <_> + + 0 -1 1300 1.9246719602961093e-04 + + 5.1899862289428711e-01 3.7388110160827637e-01 + <_> + + 0 -1 1301 -3.8589671254158020e-02 + + 2.9563739895820618e-01 5.1888108253479004e-01 + <_> + + 0 -1 1302 1.5489870565943420e-04 + + 4.3471351265907288e-01 5.5095332860946655e-01 + <_> + + 0 -1 1303 -3.3763848245143890e-02 + + 3.2303300499916077e-01 5.1954758167266846e-01 + <_> + + 0 -1 1304 -8.2657067105174065e-03 + + 5.9754890203475952e-01 4.5521140098571777e-01 + <_> + + 0 -1 1305 1.4481440302915871e-05 + + 4.7456780076026917e-01 5.4974269866943359e-01 + <_> + + 0 -1 1306 1.4951299817766994e-05 + + 4.3244731426239014e-01 5.4806441068649292e-01 + <_> + + 0 -1 1307 -1.8741799518465996e-02 + + 1.5800529718399048e-01 5.1785331964492798e-01 + <_> + + 0 -1 1308 1.7572239739820361e-03 + + 4.5176368951797485e-01 5.7737642526626587e-01 + <_> + + 0 -1 1309 -3.1391119118779898e-03 + + 4.1496479511260986e-01 5.4608422517776489e-01 + <_> + + 0 -1 1310 6.6656779381446540e-05 + + 4.0390908718109131e-01 5.2930849790573120e-01 + <_> + + 0 -1 1311 6.7743421532213688e-03 + + 4.7676518559455872e-01 6.1219561100006104e-01 + <_> + + 0 -1 1312 -7.3868161998689175e-03 + + 3.5862588882446289e-01 5.1872807741165161e-01 + <_> + + 0 -1 1313 1.4040930196642876e-02 + + 4.7121399641036987e-01 5.5761557817459106e-01 + <_> + + 0 -1 1314 -5.5258329957723618e-03 + + 2.6610270142555237e-01 5.0392812490463257e-01 + <_> + + 0 -1 1315 3.8684239983558655e-01 + + 5.1443397998809814e-01 2.5258991122245789e-01 + <_> + + 0 -1 1316 1.1459240340627730e-04 + + 4.2849949002265930e-01 5.4233711957931519e-01 + <_> + + 0 -1 1317 -1.8467569723725319e-02 + + 3.8858351111412048e-01 5.2130621671676636e-01 + <_> + + 0 -1 1318 -4.5907011372037232e-04 + + 5.4125630855560303e-01 4.2359098792076111e-01 + <_> + + 0 -1 1319 1.2527540093287826e-03 + + 4.8993051052093506e-01 6.6240912675857544e-01 + <_> + + 0 -1 1320 1.4910609461367130e-03 + + 5.2867782115936279e-01 4.0400519967079163e-01 + <_> + + 0 -1 1321 -7.5435562757775187e-04 + + 6.0329902172088623e-01 4.7951200604438782e-01 + <_> + + 0 -1 1322 -6.9478838704526424e-03 + + 4.0844011306762695e-01 5.3735041618347168e-01 + <_> + + 0 -1 1323 2.8092920547351241e-04 + + 4.8460629582405090e-01 5.7593822479248047e-01 + <_> + + 0 -1 1324 9.6073717577382922e-04 + + 5.1647412776947021e-01 3.5549798607826233e-01 + <_> + + 0 -1 1325 -2.6883929967880249e-04 + + 5.6775820255279541e-01 4.7317659854888916e-01 + <_> + + 0 -1 1326 2.1599370520561934e-03 + + 4.7314870357513428e-01 7.0705670118331909e-01 + <_> + + 0 -1 1327 5.6235301308333874e-03 + + 5.2402430772781372e-01 2.7817919850349426e-01 + <_> + + 0 -1 1328 -5.0243991427123547e-03 + + 2.8370139002799988e-01 5.0623041391372681e-01 + <_> + + 0 -1 1329 -9.7611639648675919e-03 + + 7.4007177352905273e-01 4.9345690011978149e-01 + <_> + + 0 -1 1330 4.1515100747346878e-03 + + 5.1191312074661255e-01 3.4070080518722534e-01 + <_> + + 0 -1 1331 6.2465080991387367e-03 + + 4.9237880110740662e-01 6.5790587663650513e-01 + <_> + + 0 -1 1332 -7.0597478188574314e-03 + + 2.4347110092639923e-01 5.0328421592712402e-01 + <_> + + 0 -1 1333 -2.0587709732353687e-03 + + 5.9003108739852905e-01 4.6950870752334595e-01 + <_> + + 0 -1 1334 -2.4146060459315777e-03 + + 3.6473178863525391e-01 5.1892018318176270e-01 + <_> + + 0 -1 1335 -1.4817609917372465e-03 + + 6.0349482297897339e-01 4.9401280283927917e-01 + <_> + + 0 -1 1336 -6.3016400672495365e-03 + + 5.8189898729324341e-01 4.5604279637336731e-01 + <_> + + 0 -1 1337 3.4763428848236799e-03 + + 5.2174758911132812e-01 3.4839931130409241e-01 + <_> + + 0 -1 1338 -2.2250870242714882e-02 + + 2.3607000708580017e-01 5.0320827960968018e-01 + <_> + + 0 -1 1339 -3.0612550675868988e-02 + + 6.4991867542266846e-01 4.9149191379547119e-01 + <_> + + 0 -1 1340 1.3057479634881020e-02 + + 4.4133231043815613e-01 5.6837642192840576e-01 + <_> + + 0 -1 1341 -6.0095742810517550e-04 + + 4.3597310781478882e-01 5.3334832191467285e-01 + <_> + + 0 -1 1342 -4.1514250915497541e-04 + + 5.5040627717971802e-01 4.3260601162910461e-01 + <_> + + 0 -1 1343 -1.3776290230453014e-02 + + 4.0641129016876221e-01 5.2015489339828491e-01 + <_> + + 0 -1 1344 -3.2296508550643921e-02 + + 4.7351971268653870e-02 4.9771949648857117e-01 + <_> + + 0 -1 1345 5.3556978702545166e-02 + + 4.8817330598831177e-01 6.6669392585754395e-01 + <_> + + 0 -1 1346 8.1889545544981956e-03 + + 5.4000371694564819e-01 4.2408201098442078e-01 + <_> + + 0 -1 1347 2.1055320394225419e-04 + + 4.8020479083061218e-01 5.5638527870178223e-01 + <_> + + 0 -1 1348 -2.4382730480283499e-03 + + 7.3877930641174316e-01 4.7736850380897522e-01 + <_> + + 0 -1 1349 3.2835570164024830e-03 + + 5.2885460853576660e-01 3.1712919473648071e-01 + <_> + + 0 -1 1350 2.3729570675641298e-03 + + 4.7508129477500916e-01 7.0601707696914673e-01 + <_> + + 0 -1 1351 -1.4541699783876538e-03 + + 3.8117301464080811e-01 5.3307390213012695e-01 + <_> + 177 + 8.7696029663085938e+01 + + <_> + + 0 -1 1352 5.5755238980054855e-02 + + 4.0191569924354553e-01 6.8060368299484253e-01 + <_> + + 0 -1 1353 2.4730248842388391e-03 + + 3.3511489629745483e-01 5.9657198190689087e-01 + <_> + + 0 -1 1354 -3.5031698644161224e-04 + + 5.5577081441879272e-01 3.4822869300842285e-01 + <_> + + 0 -1 1355 5.4167630150914192e-04 + + 4.2608588933944702e-01 5.6933808326721191e-01 + <_> + + 0 -1 1356 7.7193678589537740e-04 + + 3.4942400455474854e-01 5.4336887598037720e-01 + <_> + + 0 -1 1357 -1.5999219613149762e-03 + + 4.0284991264343262e-01 5.4843592643737793e-01 + <_> + + 0 -1 1358 -1.1832080053864047e-04 + + 3.8069018721580505e-01 5.4254651069641113e-01 + <_> + + 0 -1 1359 3.2909031142480671e-04 + + 2.6201000809669495e-01 5.4295217990875244e-01 + <_> + + 0 -1 1360 2.9518108931370080e-04 + + 3.7997689843177795e-01 5.3992640972137451e-01 + <_> + + 0 -1 1361 9.0466710389591753e-05 + + 4.4336450099945068e-01 5.4402261972427368e-01 + <_> + + 0 -1 1362 1.5007190086180344e-05 + + 3.7196549773216248e-01 5.4091197252273560e-01 + <_> + + 0 -1 1363 1.3935610651969910e-01 + + 5.5253958702087402e-01 4.4790428876876831e-01 + <_> + + 0 -1 1364 1.6461990308016539e-03 + + 4.2645010352134705e-01 5.7721698284149170e-01 + <_> + + 0 -1 1365 4.9984431825578213e-04 + + 4.3595260381698608e-01 5.6858712434768677e-01 + <_> + + 0 -1 1366 -1.0971280280500650e-03 + + 3.3901369571685791e-01 5.2054089307785034e-01 + <_> + + 0 -1 1367 6.6919892560690641e-04 + + 4.5574560761451721e-01 5.9806597232818604e-01 + <_> + + 0 -1 1368 8.6471042595803738e-04 + + 5.1348412036895752e-01 2.9440331459045410e-01 + <_> + + 0 -1 1369 -2.7182599296793342e-04 + + 3.9065781235694885e-01 5.3771811723709106e-01 + <_> + + 0 -1 1370 3.0249499104684219e-05 + + 3.6796098947525024e-01 5.2256888151168823e-01 + <_> + + 0 -1 1371 -8.5225896909832954e-03 + + 7.2931021451950073e-01 4.8923650383949280e-01 + <_> + + 0 -1 1372 1.6705560265108943e-03 + + 4.3453249335289001e-01 5.6961381435394287e-01 + <_> + + 0 -1 1373 -7.1433838456869125e-03 + + 2.5912800431251526e-01 5.2256238460540771e-01 + <_> + + 0 -1 1374 -1.6319369897246361e-02 + + 6.9222790002822876e-01 4.6515759825706482e-01 + <_> + + 0 -1 1375 4.8034260980784893e-03 + + 5.3522628545761108e-01 3.2863029837608337e-01 + <_> + + 0 -1 1376 -7.5421929359436035e-03 + + 2.0405440032482147e-01 5.0345462560653687e-01 + <_> + + 0 -1 1377 -1.4363110065460205e-02 + + 6.8048888444900513e-01 4.8890590667724609e-01 + <_> + + 0 -1 1378 8.9063588529825211e-04 + + 5.3106957674026489e-01 3.8954809308052063e-01 + <_> + + 0 -1 1379 -4.4060191139578819e-03 + + 5.7415628433227539e-01 4.3724268674850464e-01 + <_> + + 0 -1 1380 -1.8862540309783071e-04 + + 2.8317859768867493e-01 5.0982052087783813e-01 + <_> + + 0 -1 1381 -3.7979281041771173e-03 + + 3.3725079894065857e-01 5.2465802431106567e-01 + <_> + + 0 -1 1382 1.4627049677073956e-04 + + 5.3066742420196533e-01 3.9117100834846497e-01 + <_> + + 0 -1 1383 -4.9164638767251745e-05 + + 5.4624962806701660e-01 3.9427208900451660e-01 + <_> + + 0 -1 1384 -3.3582501113414764e-02 + + 2.1578240394592285e-01 5.0482118129730225e-01 + <_> + + 0 -1 1385 -3.5339309833943844e-03 + + 6.4653122425079346e-01 4.8726969957351685e-01 + <_> + + 0 -1 1386 5.0144111737608910e-03 + + 4.6176680922508240e-01 6.2480747699737549e-01 + <_> + + 0 -1 1387 1.8817370757460594e-02 + + 5.2206891775131226e-01 2.0000520348548889e-01 + <_> + + 0 -1 1388 -1.3434339780360460e-03 + + 4.0145379304885864e-01 5.3016197681427002e-01 + <_> + + 0 -1 1389 1.7557960236445069e-03 + + 4.7940391302108765e-01 5.6531697511672974e-01 + <_> + + 0 -1 1390 -9.5637463033199310e-02 + + 2.0341950654983521e-01 5.0067067146301270e-01 + <_> + + 0 -1 1391 -2.2241229191422462e-02 + + 7.6724731922149658e-01 5.0463402271270752e-01 + <_> + + 0 -1 1392 -1.5575819648802280e-02 + + 7.4903422594070435e-01 4.7558510303497314e-01 + <_> + + 0 -1 1393 5.3599118255078793e-03 + + 5.3653037548065186e-01 4.0046709775924683e-01 + <_> + + 0 -1 1394 -2.1763499826192856e-02 + + 7.4015498161315918e-02 4.9641749262809753e-01 + <_> + + 0 -1 1395 -1.6561590135097504e-01 + + 2.8591030836105347e-01 5.2180862426757812e-01 + <_> + + 0 -1 1396 1.6461320046801120e-04 + + 4.1916158795356750e-01 5.3807932138442993e-01 + <_> + + 0 -1 1397 -8.9077502489089966e-03 + + 6.2731927633285522e-01 4.8774048686027527e-01 + <_> + + 0 -1 1398 8.6346449097618461e-04 + + 5.1599407196044922e-01 3.6710259318351746e-01 + <_> + + 0 -1 1399 -1.3751760125160217e-03 + + 5.8843767642974854e-01 4.5790839195251465e-01 + <_> + + 0 -1 1400 -1.4081239933148026e-03 + + 3.5605099797248840e-01 5.1399451494216919e-01 + <_> + + 0 -1 1401 -3.9342888630926609e-03 + + 5.9942889213562012e-01 4.6642720699310303e-01 + <_> + + 0 -1 1402 -3.1966928392648697e-02 + + 3.3454620838165283e-01 5.1441830396652222e-01 + <_> + + 0 -1 1403 -1.5089280168467667e-05 + + 5.5826562643051147e-01 4.4140571355819702e-01 + <_> + + 0 -1 1404 5.1994470413774252e-04 + + 4.6236801147460938e-01 6.1689937114715576e-01 + <_> + + 0 -1 1405 -3.4220460802316666e-03 + + 6.5570747852325439e-01 4.9748051166534424e-01 + <_> + + 0 -1 1406 1.7723299970384687e-04 + + 5.2695018053054810e-01 3.9019080996513367e-01 + <_> + + 0 -1 1407 1.5716759953647852e-03 + + 4.6333730220794678e-01 5.7904577255249023e-01 + <_> + + 0 -1 1408 -8.9041329920291901e-03 + + 2.6896080374717712e-01 5.0535911321640015e-01 + <_> + + 0 -1 1409 4.0677518700249493e-04 + + 5.4566031694412231e-01 4.3298989534378052e-01 + <_> + + 0 -1 1410 6.7604780197143555e-03 + + 4.6489939093589783e-01 6.6897618770599365e-01 + <_> + + 0 -1 1411 2.9100088868290186e-03 + + 5.3097039461135864e-01 3.3778399229049683e-01 + <_> + + 0 -1 1412 1.3885459629818797e-03 + + 4.0747389197349548e-01 5.3491330146789551e-01 + <_> + + 0 -1 1413 -7.6764263212680817e-02 + + 1.9921760261058807e-01 5.2282422780990601e-01 + <_> + + 0 -1 1414 -2.2688310127705336e-04 + + 5.4385018348693848e-01 4.2530721426010132e-01 + <_> + + 0 -1 1415 -6.3094152137637138e-03 + + 4.2591789364814758e-01 5.3789097070693970e-01 + <_> + + 0 -1 1416 -1.1007279902696609e-01 + + 6.9041568040847778e-01 4.7217491269111633e-01 + <_> + + 0 -1 1417 2.8619659133255482e-04 + + 4.5249149203300476e-01 5.5483061075210571e-01 + <_> + + 0 -1 1418 2.9425329557852820e-05 + + 5.3703737258911133e-01 4.2364639043807983e-01 + <_> + + 0 -1 1419 -2.4886570870876312e-02 + + 6.4235579967498779e-01 4.9693039059638977e-01 + <_> + + 0 -1 1420 3.3148851245641708e-02 + + 4.9884751439094543e-01 1.6138119995594025e-01 + <_> + + 0 -1 1421 7.8491691965609789e-04 + + 5.4160261154174805e-01 4.2230090498924255e-01 + <_> + + 0 -1 1422 4.7087189741432667e-03 + + 4.5763289928436279e-01 6.0275578498840332e-01 + <_> + + 0 -1 1423 2.4144479539245367e-03 + + 5.3089731931686401e-01 4.4224989414215088e-01 + <_> + + 0 -1 1424 1.9523180089890957e-03 + + 4.7056341171264648e-01 6.6633248329162598e-01 + <_> + + 0 -1 1425 1.3031980488449335e-03 + + 4.4061261415481567e-01 5.5269622802734375e-01 + <_> + + 0 -1 1426 4.4735497795045376e-03 + + 5.1290237903594971e-01 3.3014988899230957e-01 + <_> + + 0 -1 1427 -2.6652868837118149e-03 + + 3.1354710459709167e-01 5.1750361919403076e-01 + <_> + + 0 -1 1428 1.3666770246345550e-04 + + 4.1193708777427673e-01 5.3068768978118896e-01 + <_> + + 0 -1 1429 -1.7126450315117836e-02 + + 6.1778062582015991e-01 4.8365789651870728e-01 + <_> + + 0 -1 1430 -2.6601430727168918e-04 + + 3.6543309688568115e-01 5.1697367429733276e-01 + <_> + + 0 -1 1431 -2.2932380437850952e-02 + + 3.4909150004386902e-01 5.1639920473098755e-01 + <_> + + 0 -1 1432 2.3316550068557262e-03 + + 5.1662999391555786e-01 3.7093898653984070e-01 + <_> + + 0 -1 1433 1.6925660893321037e-02 + + 5.0147360563278198e-01 8.0539882183074951e-01 + <_> + + 0 -1 1434 -8.9858826249837875e-03 + + 6.4707887172698975e-01 4.6570208668708801e-01 + <_> + + 0 -1 1435 -1.1874699965119362e-02 + + 3.2463788986206055e-01 5.2587550878524780e-01 + <_> + + 0 -1 1436 1.9350569345988333e-04 + + 5.1919418573379517e-01 3.8396438956260681e-01 + <_> + + 0 -1 1437 5.8713490143418312e-03 + + 4.9181339144706726e-01 6.1870431900024414e-01 + <_> + + 0 -1 1438 -2.4838790297508240e-01 + + 1.8368029594421387e-01 4.9881500005722046e-01 + <_> + + 0 -1 1439 1.2256000190973282e-02 + + 5.2270537614822388e-01 3.6320298910140991e-01 + <_> + + 0 -1 1440 8.3990179700776935e-04 + + 4.4902500510215759e-01 5.7741481065750122e-01 + <_> + + 0 -1 1441 2.5407369248569012e-03 + + 4.8047870397567749e-01 5.8582991361618042e-01 + <_> + + 0 -1 1442 -1.4822429977357388e-02 + + 2.5210499763488770e-01 5.0235372781753540e-01 + <_> + + 0 -1 1443 -5.7973959483206272e-03 + + 5.9966957569122314e-01 4.8537150025367737e-01 + <_> + + 0 -1 1444 7.2662148158997297e-04 + + 5.1537168025970459e-01 3.6717799305915833e-01 + <_> + + 0 -1 1445 -1.7232580110430717e-02 + + 6.6217190027236938e-01 4.9946561455726624e-01 + <_> + + 0 -1 1446 7.8624086454510689e-03 + + 4.6333950757980347e-01 6.2561017274856567e-01 + <_> + + 0 -1 1447 -4.7343620099127293e-03 + + 3.6155730485916138e-01 5.2818852663040161e-01 + <_> + + 0 -1 1448 8.3048478700220585e-04 + + 4.4428890943527222e-01 5.5509579181671143e-01 + <_> + + 0 -1 1449 7.6602199114859104e-03 + + 5.1629352569580078e-01 2.6133549213409424e-01 + <_> + + 0 -1 1450 -4.1048377752304077e-03 + + 2.7896320819854736e-01 5.0190317630767822e-01 + <_> + + 0 -1 1451 4.8512578941881657e-03 + + 4.9689841270446777e-01 5.6616681814193726e-01 + <_> + + 0 -1 1452 9.9896453320980072e-04 + + 4.4456079602241516e-01 5.5518132448196411e-01 + <_> + + 0 -1 1453 -2.7023631334304810e-01 + + 2.9388209804892540e-02 5.1513141393661499e-01 + <_> + + 0 -1 1454 -1.3090680353343487e-02 + + 5.6993997097015381e-01 4.4474598765373230e-01 + <_> + + 0 -1 1455 -9.4342790544033051e-03 + + 4.3054661154747009e-01 5.4878950119018555e-01 + <_> + + 0 -1 1456 -1.5482039889320731e-03 + + 3.6803171038627625e-01 5.1280808448791504e-01 + <_> + + 0 -1 1457 5.3746132180094719e-03 + + 4.8389169573783875e-01 6.1015558242797852e-01 + <_> + + 0 -1 1458 1.5786769799888134e-03 + + 5.3252232074737549e-01 4.1185480356216431e-01 + <_> + + 0 -1 1459 3.6856050137430429e-03 + + 4.8109480738639832e-01 6.2523031234741211e-01 + <_> + + 0 -1 1460 9.3887019902467728e-03 + + 5.2002298831939697e-01 3.6294108629226685e-01 + <_> + + 0 -1 1461 1.2792630121111870e-02 + + 4.9617099761962891e-01 6.7380160093307495e-01 + <_> + + 0 -1 1462 -3.3661040943115950e-03 + + 4.0602791309356689e-01 5.2835988998413086e-01 + <_> + + 0 -1 1463 3.9771420415490866e-04 + + 4.6741139888763428e-01 5.9007751941680908e-01 + <_> + + 0 -1 1464 1.4868030557408929e-03 + + 4.5191168785095215e-01 6.0820537805557251e-01 + <_> + + 0 -1 1465 -8.8686749339103699e-02 + + 2.8078991174697876e-01 5.1809918880462646e-01 + <_> + + 0 -1 1466 -7.4296112870797515e-05 + + 5.2955842018127441e-01 4.0876251459121704e-01 + <_> + + 0 -1 1467 -1.4932939848222304e-05 + + 5.4614001512527466e-01 4.5385429263114929e-01 + <_> + + 0 -1 1468 5.9162238612771034e-03 + + 5.3291612863540649e-01 4.1921341419219971e-01 + <_> + + 0 -1 1469 1.1141640134155750e-03 + + 4.5120179653167725e-01 5.7062172889709473e-01 + <_> + + 0 -1 1470 8.9249362645205110e-05 + + 4.5778059959411621e-01 5.8976382017135620e-01 + <_> + + 0 -1 1471 2.5319510605186224e-03 + + 5.2996039390563965e-01 3.3576390147209167e-01 + <_> + + 0 -1 1472 1.2426200322806835e-02 + + 4.9590590596199036e-01 1.3466019928455353e-01 + <_> + + 0 -1 1473 2.8335750102996826e-02 + + 5.1170790195465088e-01 6.1043637106195092e-04 + <_> + + 0 -1 1474 6.6165882162749767e-03 + + 4.7363498806953430e-01 7.0116281509399414e-01 + <_> + + 0 -1 1475 8.0468766391277313e-03 + + 5.2164179086685181e-01 3.2828199863433838e-01 + <_> + + 0 -1 1476 -1.1193980462849140e-03 + + 5.8098608255386353e-01 4.5637390017509460e-01 + <_> + + 0 -1 1477 1.3277590274810791e-02 + + 5.3983622789382935e-01 4.1039010882377625e-01 + <_> + + 0 -1 1478 4.8794739996083081e-04 + + 4.2492860555648804e-01 5.4105907678604126e-01 + <_> + + 0 -1 1479 1.1243170127272606e-02 + + 5.2699637413024902e-01 3.4382158517837524e-01 + <_> + + 0 -1 1480 -8.9896668214350939e-04 + + 5.6330758333206177e-01 4.4566130638122559e-01 + <_> + + 0 -1 1481 6.6677159629762173e-03 + + 5.3128892183303833e-01 4.3626791238784790e-01 + <_> + + 0 -1 1482 2.8947299346327782e-02 + + 4.7017949819564819e-01 6.5757977962493896e-01 + <_> + + 0 -1 1483 -2.3400049656629562e-02 + + 0. 5.1373988389968872e-01 + <_> + + 0 -1 1484 -8.9117050170898438e-02 + + 2.3745279759168625e-02 4.9424308538436890e-01 + <_> + + 0 -1 1485 -1.4054600149393082e-02 + + 3.1273230910301208e-01 5.1175111532211304e-01 + <_> + + 0 -1 1486 8.1239398568868637e-03 + + 5.0090491771697998e-01 2.5200259685516357e-01 + <_> + + 0 -1 1487 -4.9964650534093380e-03 + + 6.3871437311172485e-01 4.9278119206428528e-01 + <_> + + 0 -1 1488 3.1253970228135586e-03 + + 5.1368498802185059e-01 3.6804521083831787e-01 + <_> + + 0 -1 1489 6.7669642157852650e-03 + + 5.5098438262939453e-01 4.3636319041252136e-01 + <_> + + 0 -1 1490 -2.3711440153419971e-03 + + 6.1623352766036987e-01 4.5869469642639160e-01 + <_> + + 0 -1 1491 -5.3522791713476181e-03 + + 6.1854577064514160e-01 4.9204909801483154e-01 + <_> + + 0 -1 1492 -1.5968859195709229e-02 + + 1.3826179504394531e-01 4.9832528829574585e-01 + <_> + + 0 -1 1493 4.7676060348749161e-03 + + 4.6880578994750977e-01 5.4900461435317993e-01 + <_> + + 0 -1 1494 -2.4714691098779440e-03 + + 2.3685149848461151e-01 5.0039529800415039e-01 + <_> + + 0 -1 1495 -7.1033788844943047e-04 + + 5.8563941717147827e-01 4.7215330600738525e-01 + <_> + + 0 -1 1496 -1.4117559790611267e-01 + + 8.6900062859058380e-02 4.9615910649299622e-01 + <_> + + 0 -1 1497 1.0651809722185135e-01 + + 5.1388370990753174e-01 1.7410050332546234e-01 + <_> + + 0 -1 1498 -5.2744749933481216e-02 + + 7.3536360263824463e-01 4.7728818655014038e-01 + <_> + + 0 -1 1499 -4.7431760467588902e-03 + + 3.8844060897827148e-01 5.2927017211914062e-01 + <_> + + 0 -1 1500 9.9676765967160463e-04 + + 5.2234929800033569e-01 4.0034240484237671e-01 + <_> + + 0 -1 1501 8.0284131690859795e-03 + + 4.9591061472892761e-01 7.2129642963409424e-01 + <_> + + 0 -1 1502 8.6025858763605356e-04 + + 4.4448840618133545e-01 5.5384761095046997e-01 + <_> + + 0 -1 1503 9.3191501218825579e-04 + + 5.3983712196350098e-01 4.1632440686225891e-01 + <_> + + 0 -1 1504 -2.5082060601562262e-03 + + 5.8542650938034058e-01 4.5625001192092896e-01 + <_> + + 0 -1 1505 -2.1378761157393456e-03 + + 4.6080690622329712e-01 5.2802592515945435e-01 + <_> + + 0 -1 1506 -2.1546049974858761e-03 + + 3.7911269068717957e-01 5.2559971809387207e-01 + <_> + + 0 -1 1507 -7.6214009895920753e-03 + + 5.9986090660095215e-01 4.9520739912986755e-01 + <_> + + 0 -1 1508 2.2055360022932291e-03 + + 4.4842061400413513e-01 5.5885308980941772e-01 + <_> + + 0 -1 1509 1.2586950324475765e-03 + + 5.4507470130920410e-01 4.4238409399986267e-01 + <_> + + 0 -1 1510 -5.0926720723509789e-03 + + 4.1182750463485718e-01 5.2630358934402466e-01 + <_> + + 0 -1 1511 -2.5095739401876926e-03 + + 5.7879078388214111e-01 4.9984949827194214e-01 + <_> + + 0 -1 1512 -7.7327556908130646e-02 + + 8.3978658914566040e-01 4.8111200332641602e-01 + <_> + + 0 -1 1513 -4.1485819965600967e-02 + + 2.4086110293865204e-01 5.1769930124282837e-01 + <_> + + 0 -1 1514 1.0355669655837119e-04 + + 4.3553608655929565e-01 5.4170542955398560e-01 + <_> + + 0 -1 1515 1.3255809899419546e-03 + + 5.4539710283279419e-01 4.8940950632095337e-01 + <_> + + 0 -1 1516 -8.0598732456564903e-03 + + 5.7710242271423340e-01 4.5779189467430115e-01 + <_> + + 0 -1 1517 1.9058620557188988e-02 + + 5.1698678731918335e-01 3.4004750847816467e-01 + <_> + + 0 -1 1518 -3.5057891160249710e-02 + + 2.2032439708709717e-01 5.0005030632019043e-01 + <_> + + 0 -1 1519 5.7296059094369411e-03 + + 5.0434082746505737e-01 6.5975707769393921e-01 + <_> + + 0 -1 1520 -1.1648329906165600e-02 + + 2.1862849593162537e-01 4.9966529011726379e-01 + <_> + + 0 -1 1521 1.4544479781761765e-03 + + 5.0076818466186523e-01 5.5037277936935425e-01 + <_> + + 0 -1 1522 -2.5030909455381334e-04 + + 4.1298410296440125e-01 5.2416700124740601e-01 + <_> + + 0 -1 1523 -8.2907272735610604e-04 + + 5.4128682613372803e-01 4.9744960665702820e-01 + <_> + + 0 -1 1524 1.0862209601327777e-03 + + 4.6055299043655396e-01 5.8792287111282349e-01 + <_> + + 0 -1 1525 2.0000500080641359e-04 + + 5.2788549661636353e-01 4.7052091360092163e-01 + <_> + + 0 -1 1526 2.9212920926511288e-03 + + 5.1296097040176392e-01 3.7555369734764099e-01 + <_> + + 0 -1 1527 2.5387400761246681e-02 + + 4.8226919770240784e-01 5.7907682657241821e-01 + <_> + + 0 -1 1528 -3.1968469265848398e-03 + + 5.2483952045440674e-01 3.9628401398658752e-01 + <_> + 182 + 9.0253349304199219e+01 + + <_> + + 0 -1 1529 5.8031738735735416e-03 + + 3.4989839792251587e-01 5.9619832038879395e-01 + <_> + + 0 -1 1530 -9.0003069490194321e-03 + + 6.8166369199752808e-01 4.4785520434379578e-01 + <_> + + 0 -1 1531 -1.1549659539014101e-03 + + 5.5857062339782715e-01 3.5782510042190552e-01 + <_> + + 0 -1 1532 -1.1069850297644734e-03 + + 5.3650361299514771e-01 3.0504280328750610e-01 + <_> + + 0 -1 1533 1.0308309720130637e-04 + + 3.6390951275825500e-01 5.3446358442306519e-01 + <_> + + 0 -1 1534 -5.0984839908778667e-03 + + 2.8591570258140564e-01 5.5042648315429688e-01 + <_> + + 0 -1 1535 8.2572200335562229e-04 + + 5.2365237474441528e-01 3.4760418534278870e-01 + <_> + + 0 -1 1536 9.9783325567841530e-03 + + 4.7503221035003662e-01 6.2196469306945801e-01 + <_> + + 0 -1 1537 -3.7402529269456863e-02 + + 3.3433759212493896e-01 5.2780628204345703e-01 + <_> + + 0 -1 1538 4.8548257909715176e-03 + + 5.1921808719635010e-01 3.7004441022872925e-01 + <_> + + 0 -1 1539 -1.8664470408111811e-03 + + 2.9298439621925354e-01 5.0919449329376221e-01 + <_> + + 0 -1 1540 1.6888890415430069e-02 + + 3.6868458986282349e-01 5.4312258958816528e-01 + <_> + + 0 -1 1541 -5.8372621424496174e-03 + + 3.6321839690208435e-01 5.2213358879089355e-01 + <_> + + 0 -1 1542 -1.4713739510625601e-03 + + 5.8706837892532349e-01 4.7006508708000183e-01 + <_> + + 0 -1 1543 -1.1522950371727347e-03 + + 3.1958949565887451e-01 5.1409542560577393e-01 + <_> + + 0 -1 1544 -4.2560300789773464e-03 + + 6.3018590211868286e-01 4.8149210214614868e-01 + <_> + + 0 -1 1545 -6.7378291860222816e-03 + + 1.9770480692386627e-01 5.0258082151412964e-01 + <_> + + 0 -1 1546 1.1382670141756535e-02 + + 4.9541321396827698e-01 6.8670457601547241e-01 + <_> + + 0 -1 1547 5.1794708706438541e-03 + + 5.1644277572631836e-01 3.3506479859352112e-01 + <_> + + 0 -1 1548 -1.1743789911270142e-01 + + 2.3152460157871246e-01 5.2344137430191040e-01 + <_> + + 0 -1 1549 2.8703449293971062e-02 + + 4.6642971038818359e-01 6.7225211858749390e-01 + <_> + + 0 -1 1550 4.8231030814349651e-03 + + 5.2208751440048218e-01 2.7235329151153564e-01 + <_> + + 0 -1 1551 2.6798530016094446e-03 + + 5.0792771577835083e-01 2.9069489240646362e-01 + <_> + + 0 -1 1552 8.0504082143306732e-03 + + 4.8859509825706482e-01 6.3950210809707642e-01 + <_> + + 0 -1 1553 4.8054959625005722e-03 + + 5.1972568035125732e-01 3.6566638946533203e-01 + <_> + + 0 -1 1554 -2.2420159075409174e-03 + + 6.1534678936004639e-01 4.7637018561363220e-01 + <_> + + 0 -1 1555 -1.3757710345089436e-02 + + 2.6373448967933655e-01 5.0309032201766968e-01 + <_> + + 0 -1 1556 -1.0338299721479416e-01 + + 2.2875219583511353e-01 5.1824611425399780e-01 + <_> + + 0 -1 1557 -9.4432085752487183e-03 + + 6.9533038139343262e-01 4.6949490904808044e-01 + <_> + + 0 -1 1558 8.0271181650459766e-04 + + 5.4506552219390869e-01 4.2687839269638062e-01 + <_> + + 0 -1 1559 -4.1945669800043106e-03 + + 6.0913878679275513e-01 4.5716428756713867e-01 + <_> + + 0 -1 1560 1.0942210443317890e-02 + + 5.2410632371902466e-01 3.2845470309257507e-01 + <_> + + 0 -1 1561 -5.7841069065034389e-04 + + 5.3879290819168091e-01 4.1793689131736755e-01 + <_> + + 0 -1 1562 -2.0888620056211948e-03 + + 4.2926910519599915e-01 5.3017157316207886e-01 + <_> + + 0 -1 1563 3.2383969519287348e-03 + + 3.7923479080200195e-01 5.2207440137863159e-01 + <_> + + 0 -1 1564 4.9075027927756310e-03 + + 5.2372831106185913e-01 4.1267579793930054e-01 + <_> + + 0 -1 1565 -3.2277941703796387e-02 + + 1.9476559758186340e-01 4.9945020675659180e-01 + <_> + + 0 -1 1566 -8.9711230248212814e-03 + + 6.0112851858139038e-01 4.9290320277214050e-01 + <_> + + 0 -1 1567 1.5321089886128902e-02 + + 5.0097537040710449e-01 2.0398220419883728e-01 + <_> + + 0 -1 1568 2.0855569746345282e-03 + + 4.8621898889541626e-01 5.7216948270797729e-01 + <_> + + 0 -1 1569 5.0615021027624607e-03 + + 5.0002187490463257e-01 1.8018059432506561e-01 + <_> + + 0 -1 1570 -3.7174751050770283e-03 + + 5.5301171541213989e-01 4.8975929617881775e-01 + <_> + + 0 -1 1571 -1.2170500122010708e-02 + + 4.1786059737205505e-01 5.3837239742279053e-01 + <_> + + 0 -1 1572 4.6248398721218109e-03 + + 4.9971699714660645e-01 5.7613271474838257e-01 + <_> + + 0 -1 1573 -2.1040429419372231e-04 + + 5.3318071365356445e-01 4.0976810455322266e-01 + <_> + + 0 -1 1574 -1.4641780406236649e-02 + + 5.7559251785278320e-01 5.0517761707305908e-01 + <_> + + 0 -1 1575 3.3199489116668701e-03 + + 4.5769768953323364e-01 6.0318058729171753e-01 + <_> + + 0 -1 1576 3.7236879579722881e-03 + + 4.3803969025611877e-01 5.4158830642700195e-01 + <_> + + 0 -1 1577 8.2951161311939359e-04 + + 5.1630318164825439e-01 3.7022191286087036e-01 + <_> + + 0 -1 1578 -1.1408490128815174e-02 + + 6.0729467868804932e-01 4.8625651001930237e-01 + <_> + + 0 -1 1579 -4.5320121571421623e-03 + + 3.2924759387969971e-01 5.0889629125595093e-01 + <_> + + 0 -1 1580 5.1276017911732197e-03 + + 4.8297679424285889e-01 6.1227089166641235e-01 + <_> + + 0 -1 1581 9.8583158105611801e-03 + + 4.6606799960136414e-01 6.5561771392822266e-01 + <_> + + 0 -1 1582 3.6985918879508972e-02 + + 5.2048492431640625e-01 1.6904720664024353e-01 + <_> + + 0 -1 1583 4.6491161920130253e-03 + + 5.1673221588134766e-01 3.7252250313758850e-01 + <_> + + 0 -1 1584 -4.2664702050387859e-03 + + 6.4064931869506836e-01 4.9873429536819458e-01 + <_> + + 0 -1 1585 -4.7956590424291790e-04 + + 5.8972930908203125e-01 4.4648739695549011e-01 + <_> + + 0 -1 1586 3.6827160511165857e-03 + + 5.4415607452392578e-01 3.4726628661155701e-01 + <_> + + 0 -1 1587 -1.0059880092740059e-02 + + 2.1431629359722137e-01 5.0048297643661499e-01 + <_> + + 0 -1 1588 -3.0361840617842972e-04 + + 5.3864240646362305e-01 4.5903238654136658e-01 + <_> + + 0 -1 1589 -1.4545479789376259e-03 + + 5.7511842250823975e-01 4.4970950484275818e-01 + <_> + + 0 -1 1590 1.6515209572389722e-03 + + 5.4219377040863037e-01 4.2385208606719971e-01 + <_> + + 0 -1 1591 -7.8468639403581619e-03 + + 4.0779209136962891e-01 5.2581572532653809e-01 + <_> + + 0 -1 1592 -5.1259850151836872e-03 + + 4.2292758822441101e-01 5.4794532060623169e-01 + <_> + + 0 -1 1593 -3.6890961229801178e-02 + + 6.5963757038116455e-01 4.6746781468391418e-01 + <_> + + 0 -1 1594 2.4035639944486320e-04 + + 4.2511358857154846e-01 5.5732029676437378e-01 + <_> + + 0 -1 1595 -1.5150169929256663e-05 + + 5.2592468261718750e-01 4.0741148591041565e-01 + <_> + + 0 -1 1596 2.2108471021056175e-03 + + 4.6717229485511780e-01 5.8863520622253418e-01 + <_> + + 0 -1 1597 -1.1568620102480054e-03 + + 5.7110661268234253e-01 4.4871619343757629e-01 + <_> + + 0 -1 1598 4.9996292218565941e-03 + + 5.2641981840133667e-01 2.8983271121978760e-01 + <_> + + 0 -1 1599 -1.4656189596280456e-03 + + 3.8917380571365356e-01 5.1978719234466553e-01 + <_> + + 0 -1 1600 -1.1975039960816503e-03 + + 5.7958728075027466e-01 4.9279558658599854e-01 + <_> + + 0 -1 1601 -4.4954330660402775e-03 + + 2.3776030540466309e-01 5.0125551223754883e-01 + <_> + + 0 -1 1602 1.4997160178609192e-04 + + 4.8766261339187622e-01 5.6176078319549561e-01 + <_> + + 0 -1 1603 2.6391509454697371e-03 + + 5.1680880784988403e-01 3.7655091285705566e-01 + <_> + + 0 -1 1604 -2.9368131072260439e-04 + + 5.4466491937637329e-01 4.8746308684349060e-01 + <_> + + 0 -1 1605 1.4211760135367513e-03 + + 4.6878978610038757e-01 6.6913318634033203e-01 + <_> + + 0 -1 1606 7.9427637159824371e-02 + + 5.1934438943862915e-01 2.7329459786415100e-01 + <_> + + 0 -1 1607 7.9937502741813660e-02 + + 4.9717310070991516e-01 1.7820839583873749e-01 + <_> + + 0 -1 1608 1.1089259758591652e-02 + + 5.1659947633743286e-01 3.2094758749008179e-01 + <_> + + 0 -1 1609 1.6560709627810866e-04 + + 4.0584719181060791e-01 5.3072762489318848e-01 + <_> + + 0 -1 1610 -5.3354292176663876e-03 + + 3.4450569748878479e-01 5.1581299304962158e-01 + <_> + + 0 -1 1611 1.1287260567769408e-03 + + 4.5948630571365356e-01 6.0755330324172974e-01 + <_> + + 0 -1 1612 -2.1969219669699669e-02 + + 1.6804009675979614e-01 5.2285957336425781e-01 + <_> + + 0 -1 1613 -2.1775320055894554e-04 + + 3.8615968823432922e-01 5.2156728506088257e-01 + <_> + + 0 -1 1614 2.0200149447191507e-04 + + 5.5179792642593384e-01 4.3630391359329224e-01 + <_> + + 0 -1 1615 -2.1733149886131287e-02 + + 7.9994601011276245e-01 4.7898510098457336e-01 + <_> + + 0 -1 1616 -8.4399932529777288e-04 + + 4.0859758853912354e-01 5.3747731447219849e-01 + <_> + + 0 -1 1617 -4.3895249837078154e-04 + + 5.4704052209854126e-01 4.3661430478096008e-01 + <_> + + 0 -1 1618 1.5092400135472417e-03 + + 4.9889969825744629e-01 5.8421492576599121e-01 + <_> + + 0 -1 1619 -3.5547839943319559e-03 + + 6.7536902427673340e-01 4.7210058569908142e-01 + <_> + + 0 -1 1620 4.8191400128416717e-04 + + 5.4158538579940796e-01 4.3571090698242188e-01 + <_> + + 0 -1 1621 -6.0264398343861103e-03 + + 2.2585099935531616e-01 4.9918809533119202e-01 + <_> + + 0 -1 1622 -1.1668140068650246e-02 + + 6.2565547227859497e-01 4.9274989962577820e-01 + <_> + + 0 -1 1623 -2.8718370012938976e-03 + + 3.9477849006652832e-01 5.2458018064498901e-01 + <_> + + 0 -1 1624 1.7051169648766518e-02 + + 4.7525110840797424e-01 5.7942241430282593e-01 + <_> + + 0 -1 1625 -1.3352080248296261e-02 + + 6.0411047935485840e-01 4.5445358753204346e-01 + <_> + + 0 -1 1626 -3.9301801007241011e-04 + + 4.2582759261131287e-01 5.5449050664901733e-01 + <_> + + 0 -1 1627 3.0483349692076445e-03 + + 5.2334201335906982e-01 3.7802729010581970e-01 + <_> + + 0 -1 1628 -4.3579288758337498e-03 + + 6.3718891143798828e-01 4.8386740684509277e-01 + <_> + + 0 -1 1629 5.6661018170416355e-03 + + 5.3747057914733887e-01 4.1636660695075989e-01 + <_> + + 0 -1 1630 6.0677339206449687e-05 + + 4.6387958526611328e-01 5.3116250038146973e-01 + <_> + + 0 -1 1631 3.6738160997629166e-02 + + 4.6886560320854187e-01 6.4665240049362183e-01 + <_> + + 0 -1 1632 8.6528137326240540e-03 + + 5.2043187618255615e-01 2.1886579692363739e-01 + <_> + + 0 -1 1633 -1.5371359884738922e-01 + + 1.6303719580173492e-01 4.9588400125503540e-01 + <_> + + 0 -1 1634 -4.1560421232134104e-04 + + 5.7744592428207397e-01 4.6964588761329651e-01 + <_> + + 0 -1 1635 -1.2640169588848948e-03 + + 3.9771759510040283e-01 5.2171981334686279e-01 + <_> + + 0 -1 1636 -3.5473341122269630e-03 + + 6.0465282201766968e-01 4.8083150386810303e-01 + <_> + + 0 -1 1637 3.0019069527043030e-05 + + 3.9967238903045654e-01 5.2282011508941650e-01 + <_> + + 0 -1 1638 1.3113019522279501e-03 + + 4.7121581435203552e-01 5.7659977674484253e-01 + <_> + + 0 -1 1639 -1.3374709524214268e-03 + + 4.1095849871635437e-01 5.2531701326370239e-01 + <_> + + 0 -1 1640 2.0876709371805191e-02 + + 5.2029937505722046e-01 1.7579819262027740e-01 + <_> + + 0 -1 1641 -7.5497948564589024e-03 + + 6.5666097402572632e-01 4.6949750185012817e-01 + <_> + + 0 -1 1642 2.4188550189137459e-02 + + 5.1286739110946655e-01 3.3702209591865540e-01 + <_> + + 0 -1 1643 -2.9358828905969858e-03 + + 6.5807867050170898e-01 4.6945410966873169e-01 + <_> + + 0 -1 1644 5.7557929307222366e-02 + + 5.1464450359344482e-01 2.7752599120140076e-01 + <_> + + 0 -1 1645 -1.1343370424583554e-03 + + 3.8366019725799561e-01 5.1926672458648682e-01 + <_> + + 0 -1 1646 1.6816999763250351e-02 + + 5.0855928659439087e-01 6.1772608757019043e-01 + <_> + + 0 -1 1647 5.0535178743302822e-03 + + 5.1387631893157959e-01 3.6847919225692749e-01 + <_> + + 0 -1 1648 -4.5874710194766521e-03 + + 5.9896552562713623e-01 4.8352020978927612e-01 + <_> + + 0 -1 1649 1.6882460331544280e-03 + + 4.5094868540763855e-01 5.7230567932128906e-01 + <_> + + 0 -1 1650 -1.6554000321775675e-03 + + 3.4967708587646484e-01 5.2433192729949951e-01 + <_> + + 0 -1 1651 -1.9373800605535507e-02 + + 1.1205369979143143e-01 4.9687129259109497e-01 + <_> + + 0 -1 1652 1.0374450124800205e-02 + + 5.1481968164443970e-01 4.3952131271362305e-01 + <_> + + 0 -1 1653 1.4973050565458834e-04 + + 4.0849998593330383e-01 5.2698868513107300e-01 + <_> + + 0 -1 1654 -4.2981930077075958e-02 + + 6.3941049575805664e-01 5.0185042619705200e-01 + <_> + + 0 -1 1655 8.3065936341881752e-03 + + 4.7075539827346802e-01 6.6983532905578613e-01 + <_> + + 0 -1 1656 -4.1285790503025055e-03 + + 4.5413690805435181e-01 5.3236472606658936e-01 + <_> + + 0 -1 1657 1.7399420030415058e-03 + + 4.3339619040489197e-01 5.4398661851882935e-01 + <_> + + 0 -1 1658 1.1739750334527344e-04 + + 4.5796871185302734e-01 5.5434262752532959e-01 + <_> + + 0 -1 1659 1.8585780344437808e-04 + + 4.3246439099311829e-01 5.4267549514770508e-01 + <_> + + 0 -1 1660 5.5587692186236382e-03 + + 5.2572208642959595e-01 3.5506111383438110e-01 + <_> + + 0 -1 1661 -7.9851560294628143e-03 + + 6.0430181026458740e-01 4.6306359767913818e-01 + <_> + + 0 -1 1662 6.0594122624024749e-04 + + 4.5982548594474792e-01 5.5331951379776001e-01 + <_> + + 0 -1 1663 -2.2983040253166109e-04 + + 4.1307520866394043e-01 5.3224611282348633e-01 + <_> + + 0 -1 1664 4.3740210821852088e-04 + + 4.0430399775505066e-01 5.4092890024185181e-01 + <_> + + 0 -1 1665 2.9482020181603730e-04 + + 4.4949638843536377e-01 5.6288522481918335e-01 + <_> + + 0 -1 1666 1.0312659665942192e-02 + + 5.1775109767913818e-01 2.7043169736862183e-01 + <_> + + 0 -1 1667 -7.7241109684109688e-03 + + 1.9880190491676331e-01 4.9805539846420288e-01 + <_> + + 0 -1 1668 -4.6797208487987518e-03 + + 6.6447502374649048e-01 5.0182962417602539e-01 + <_> + + 0 -1 1669 -5.0755459815263748e-03 + + 3.8983049988746643e-01 5.1852691173553467e-01 + <_> + + 0 -1 1670 2.2479740437120199e-03 + + 4.8018088936805725e-01 5.6603360176086426e-01 + <_> + + 0 -1 1671 8.3327008178457618e-04 + + 5.2109199762344360e-01 3.9571881294250488e-01 + <_> + + 0 -1 1672 -4.1279330849647522e-02 + + 6.1545419692993164e-01 5.0070542097091675e-01 + <_> + + 0 -1 1673 -5.0930189900100231e-04 + + 3.9759421348571777e-01 5.2284038066864014e-01 + <_> + + 0 -1 1674 1.2568780221045017e-03 + + 4.9791380763053894e-01 5.9391832351684570e-01 + <_> + + 0 -1 1675 8.0048497766256332e-03 + + 4.9844971299171448e-01 1.6333660483360291e-01 + <_> + + 0 -1 1676 -1.1879300000146031e-03 + + 5.9049648046493530e-01 4.9426248669624329e-01 + <_> + + 0 -1 1677 6.1948952497914433e-04 + + 4.1995579004287720e-01 5.3287261724472046e-01 + <_> + + 0 -1 1678 6.6829859279096127e-03 + + 5.4186028242111206e-01 4.9058890342712402e-01 + <_> + + 0 -1 1679 -3.7062340416014194e-03 + + 3.7259390950202942e-01 5.1380002498626709e-01 + <_> + + 0 -1 1680 -3.9739411324262619e-02 + + 6.4789611101150513e-01 5.0503468513488770e-01 + <_> + + 0 -1 1681 1.4085009461268783e-03 + + 4.6823391318321228e-01 6.3778841495513916e-01 + <_> + + 0 -1 1682 3.9322688826359808e-04 + + 5.4585301876068115e-01 4.1504821181297302e-01 + <_> + + 0 -1 1683 -1.8979819724336267e-03 + + 3.6901599168777466e-01 5.1497042179107666e-01 + <_> + + 0 -1 1684 -1.3970440253615379e-02 + + 6.0505628585815430e-01 4.8113578557968140e-01 + <_> + + 0 -1 1685 -1.0100819915533066e-01 + + 2.0170800387859344e-01 4.9923619627952576e-01 + <_> + + 0 -1 1686 -1.7346920445561409e-02 + + 5.7131487131118774e-01 4.8994860053062439e-01 + <_> + + 0 -1 1687 1.5619759506080300e-04 + + 4.2153888940811157e-01 5.3926420211791992e-01 + <_> + + 0 -1 1688 1.3438929617404938e-01 + + 5.1361519098281860e-01 3.7676128745079041e-01 + <_> + + 0 -1 1689 -2.4582240730524063e-02 + + 7.0273578166961670e-01 4.7479069232940674e-01 + <_> + + 0 -1 1690 -3.8553720805794001e-03 + + 4.3174090981483459e-01 5.4277169704437256e-01 + <_> + + 0 -1 1691 -2.3165249731391668e-03 + + 5.9426987171173096e-01 4.6186479926109314e-01 + <_> + + 0 -1 1692 -4.8518120311200619e-03 + + 6.1915689706802368e-01 4.8848950862884521e-01 + <_> + + 0 -1 1693 2.4699938949197531e-03 + + 5.2566647529602051e-01 4.0171998739242554e-01 + <_> + + 0 -1 1694 4.5496959239244461e-02 + + 5.2378678321838379e-01 2.6857739686965942e-01 + <_> + + 0 -1 1695 -2.0319599658250809e-02 + + 2.1304459869861603e-01 4.9797388911247253e-01 + <_> + + 0 -1 1696 2.6994998916052282e-04 + + 4.8140418529510498e-01 5.5431222915649414e-01 + <_> + + 0 -1 1697 -1.8232699949294329e-03 + + 6.4825797080993652e-01 4.7099891304969788e-01 + <_> + + 0 -1 1698 -6.3015790656208992e-03 + + 4.5819279551506042e-01 5.3062361478805542e-01 + <_> + + 0 -1 1699 -2.4139499873854220e-04 + + 5.2320867776870728e-01 4.0517631173133850e-01 + <_> + + 0 -1 1700 -1.0330369696021080e-03 + + 5.5562019348144531e-01 4.7891938686370850e-01 + <_> + + 0 -1 1701 1.8041160365100950e-04 + + 5.2294427156448364e-01 4.0118101239204407e-01 + <_> + + 0 -1 1702 -6.1407860368490219e-02 + + 6.2986820936203003e-01 5.0107032060623169e-01 + <_> + + 0 -1 1703 -6.9543913006782532e-02 + + 7.2282809019088745e-01 4.7731840610504150e-01 + <_> + + 0 -1 1704 -7.0542663335800171e-02 + + 2.2695130109786987e-01 5.1825290918350220e-01 + <_> + + 0 -1 1705 2.4423799477517605e-03 + + 5.2370971441268921e-01 4.0981510281562805e-01 + <_> + + 0 -1 1706 1.5494349645450711e-03 + + 4.7737509012222290e-01 5.4680430889129639e-01 + <_> + + 0 -1 1707 -2.3914219811558723e-02 + + 7.1469759941101074e-01 4.7838249802589417e-01 + <_> + + 0 -1 1708 -1.2453690171241760e-02 + + 2.6352968811988831e-01 5.2411228418350220e-01 + <_> + + 0 -1 1709 -2.0760179904755205e-04 + + 3.6237570643424988e-01 5.1136088371276855e-01 + <_> + + 0 -1 1710 2.9781080229440704e-05 + + 4.7059321403503418e-01 5.4328018426895142e-01 + <_> + 211 + 1.0474919891357422e+02 + + <_> + + 0 -1 1711 1.1772749945521355e-02 + + 3.8605189323425293e-01 6.4211672544479370e-01 + <_> + + 0 -1 1712 2.7037570253014565e-02 + + 4.3856549263000488e-01 6.7540389299392700e-01 + <_> + + 0 -1 1713 -3.6419500247575343e-05 + + 5.4871010780334473e-01 3.4233158826828003e-01 + <_> + + 0 -1 1714 1.9995409529656172e-03 + + 3.2305321097373962e-01 5.4003179073333740e-01 + <_> + + 0 -1 1715 4.5278300531208515e-03 + + 5.0916397571563721e-01 2.9350438714027405e-01 + <_> + + 0 -1 1716 4.7890920541249216e-04 + + 4.1781538724899292e-01 5.3440642356872559e-01 + <_> + + 0 -1 1717 1.1720920447260141e-03 + + 2.8991821408271790e-01 5.1320707798004150e-01 + <_> + + 0 -1 1718 9.5305702416226268e-04 + + 4.2801249027252197e-01 5.5608451366424561e-01 + <_> + + 0 -1 1719 1.5099150004971307e-05 + + 4.0448719263076782e-01 5.4047602415084839e-01 + <_> + + 0 -1 1720 -6.0817901976406574e-04 + + 4.2717689275741577e-01 5.5034661293029785e-01 + <_> + + 0 -1 1721 3.3224520739167929e-03 + + 3.9627239108085632e-01 5.3697347640991211e-01 + <_> + + 0 -1 1722 -1.1037490330636501e-03 + + 4.7271779179573059e-01 5.2377498149871826e-01 + <_> + + 0 -1 1723 -1.4350269921123981e-03 + + 5.6030082702636719e-01 4.2235091328620911e-01 + <_> + + 0 -1 1724 2.0767399109899998e-03 + + 5.2259171009063721e-01 4.7327259182929993e-01 + <_> + + 0 -1 1725 -1.6412809782195836e-04 + + 3.9990758895874023e-01 5.4327398538589478e-01 + <_> + + 0 -1 1726 8.8302437216043472e-03 + + 4.6783858537673950e-01 6.0273271799087524e-01 + <_> + + 0 -1 1727 -1.0552070103585720e-02 + + 3.4939670562744141e-01 5.2139747142791748e-01 + <_> + + 0 -1 1728 -2.2731600329279900e-03 + + 6.1858189105987549e-01 4.7490629553794861e-01 + <_> + + 0 -1 1729 -8.4786332445219159e-04 + + 5.2853411436080933e-01 3.8434821367263794e-01 + <_> + + 0 -1 1730 1.2081359745934606e-03 + + 5.3606408834457397e-01 3.4473359584808350e-01 + <_> + + 0 -1 1731 2.6512730401009321e-03 + + 4.5582920312881470e-01 6.1939620971679688e-01 + <_> + + 0 -1 1732 -1.1012479662895203e-03 + + 3.6802300810813904e-01 5.3276282548904419e-01 + <_> + + 0 -1 1733 4.9561518244445324e-04 + + 3.9605951309204102e-01 5.2749407291412354e-01 + <_> + + 0 -1 1734 -4.3901771306991577e-02 + + 7.0204448699951172e-01 4.9928390979766846e-01 + <_> + + 0 -1 1735 3.4690350294113159e-02 + + 5.0491642951965332e-01 2.7666029334068298e-01 + <_> + + 0 -1 1736 -2.7442190330475569e-03 + + 2.6726329326629639e-01 5.2749711275100708e-01 + <_> + + 0 -1 1737 3.3316588960587978e-03 + + 4.5794829726219177e-01 6.0011017322540283e-01 + <_> + + 0 -1 1738 -2.0044570788741112e-02 + + 3.1715941429138184e-01 5.2357178926467896e-01 + <_> + + 0 -1 1739 1.3492030557245016e-03 + + 5.2653628587722778e-01 4.0343248844146729e-01 + <_> + + 0 -1 1740 2.9702018946409225e-03 + + 5.3324568271636963e-01 4.5719841122627258e-01 + <_> + + 0 -1 1741 6.3039981760084629e-03 + + 4.5933109521865845e-01 6.0346359014511108e-01 + <_> + + 0 -1 1742 -1.2936590239405632e-02 + + 4.4379639625549316e-01 5.3729712963104248e-01 + <_> + + 0 -1 1743 4.0148729458451271e-03 + + 4.6803238987922668e-01 6.4378339052200317e-01 + <_> + + 0 -1 1744 -2.6401679497212172e-03 + + 3.7096318602561951e-01 5.3143328428268433e-01 + <_> + + 0 -1 1745 1.3918439857661724e-02 + + 4.7235551476478577e-01 7.1308088302612305e-01 + <_> + + 0 -1 1746 -4.5087869511917233e-04 + + 4.4923940300941467e-01 5.3704041242599487e-01 + <_> + + 0 -1 1747 2.5384349282830954e-04 + + 4.4068640470504761e-01 5.5144029855728149e-01 + <_> + + 0 -1 1748 2.2710000630468130e-03 + + 4.6824169158935547e-01 5.9679841995239258e-01 + <_> + + 0 -1 1749 2.4120779708027840e-03 + + 5.0793921947479248e-01 3.0185988545417786e-01 + <_> + + 0 -1 1750 -3.6025670851813629e-05 + + 5.6010371446609497e-01 4.4710969924926758e-01 + <_> + + 0 -1 1751 -7.4905529618263245e-03 + + 2.2075350582599640e-01 4.9899441003799438e-01 + <_> + + 0 -1 1752 -1.7513120546936989e-02 + + 6.5312159061431885e-01 5.0176489353179932e-01 + <_> + + 0 -1 1753 1.4281630516052246e-01 + + 4.9679630994796753e-01 1.4820620417594910e-01 + <_> + + 0 -1 1754 5.5345268920063972e-03 + + 4.8989468812942505e-01 5.9542238712310791e-01 + <_> + + 0 -1 1755 -9.6323591424152255e-04 + + 3.9271169900894165e-01 5.1960742473602295e-01 + <_> + + 0 -1 1756 -2.0370010752230883e-03 + + 5.6133252382278442e-01 4.8848581314086914e-01 + <_> + + 0 -1 1757 1.6614829655736685e-03 + + 4.4728800654411316e-01 5.5788809061050415e-01 + <_> + + 0 -1 1758 -3.1188090797513723e-03 + + 3.8405328989028931e-01 5.3974777460098267e-01 + <_> + + 0 -1 1759 -6.4000617712736130e-03 + + 5.8439838886260986e-01 4.5332181453704834e-01 + <_> + + 0 -1 1760 3.1319601112045348e-04 + + 5.4392218589782715e-01 4.2347279191017151e-01 + <_> + + 0 -1 1761 -1.8222099170088768e-02 + + 1.2884649634361267e-01 4.9584048986434937e-01 + <_> + + 0 -1 1762 8.7969247251749039e-03 + + 4.9512979388237000e-01 7.1534800529479980e-01 + <_> + + 0 -1 1763 -4.2395070195198059e-03 + + 3.9465999603271484e-01 5.1949369907379150e-01 + <_> + + 0 -1 1764 9.7086271271109581e-03 + + 4.8975038528442383e-01 6.0649001598358154e-01 + <_> + + 0 -1 1765 -3.9934171363711357e-03 + + 3.2454401254653931e-01 5.0608289241790771e-01 + <_> + + 0 -1 1766 -1.6785059124231339e-02 + + 1.5819530189037323e-01 5.2037787437438965e-01 + <_> + + 0 -1 1767 1.8272090703248978e-02 + + 4.6809351444244385e-01 6.6269791126251221e-01 + <_> + + 0 -1 1768 5.6872838176786900e-03 + + 5.2116978168487549e-01 3.5121849179267883e-01 + <_> + + 0 -1 1769 -1.0739039862528443e-03 + + 5.7683861255645752e-01 4.5298451185226440e-01 + <_> + + 0 -1 1770 -3.7093870341777802e-03 + + 4.5077630877494812e-01 5.3135812282562256e-01 + <_> + + 0 -1 1771 -2.1110709349159151e-04 + + 5.4608201980590820e-01 4.3333768844604492e-01 + <_> + + 0 -1 1772 1.0670139454305172e-03 + + 5.3718560934066772e-01 4.0783908963203430e-01 + <_> + + 0 -1 1773 3.5943021066486835e-03 + + 4.4712871313095093e-01 5.6438362598419189e-01 + <_> + + 0 -1 1774 -5.1776031032204628e-03 + + 4.4993931055068970e-01 5.2803301811218262e-01 + <_> + + 0 -1 1775 -2.5414369883947074e-04 + + 5.5161732435226440e-01 4.4077080488204956e-01 + <_> + + 0 -1 1776 6.3522560521960258e-03 + + 5.1941901445388794e-01 2.4652279913425446e-01 + <_> + + 0 -1 1777 -4.4205080484971404e-04 + + 3.8307058811187744e-01 5.1396822929382324e-01 + <_> + + 0 -1 1778 7.4488727841526270e-04 + + 4.8910909891128540e-01 5.9747868776321411e-01 + <_> + + 0 -1 1779 -3.5116379149258137e-03 + + 7.4136817455291748e-01 4.7687649726867676e-01 + <_> + + 0 -1 1780 -1.2540910392999649e-02 + + 3.6488190293312073e-01 5.2528268098831177e-01 + <_> + + 0 -1 1781 9.4931852072477341e-03 + + 5.1004928350448608e-01 3.6295869946479797e-01 + <_> + + 0 -1 1782 1.2961150147020817e-02 + + 5.2324420213699341e-01 4.3335610628128052e-01 + <_> + + 0 -1 1783 4.7209449112415314e-03 + + 4.6481490135192871e-01 6.3310527801513672e-01 + <_> + + 0 -1 1784 -2.3119079414755106e-03 + + 5.9303098917007446e-01 4.5310580730438232e-01 + <_> + + 0 -1 1785 -2.8262299019843340e-03 + + 3.8704779744148254e-01 5.2571010589599609e-01 + <_> + + 0 -1 1786 -1.4311339473351836e-03 + + 5.5225032567977905e-01 4.5618548989295959e-01 + <_> + + 0 -1 1787 1.9378310535103083e-03 + + 4.5462208986282349e-01 5.7369667291641235e-01 + <_> + + 0 -1 1788 2.6343559147790074e-04 + + 5.3457391262054443e-01 4.5718750357627869e-01 + <_> + + 0 -1 1789 7.8257522545754910e-04 + + 3.9678159356117249e-01 5.2201879024505615e-01 + <_> + + 0 -1 1790 -1.9550440832972527e-02 + + 2.8296428918838501e-01 5.2435082197189331e-01 + <_> + + 0 -1 1791 4.3914958951063454e-04 + + 4.5900669693946838e-01 5.8990901708602905e-01 + <_> + + 0 -1 1792 2.1452000364661217e-02 + + 5.2314108610153198e-01 2.8553789854049683e-01 + <_> + + 0 -1 1793 5.8973580598831177e-04 + + 4.3972569704055786e-01 5.5064219236373901e-01 + <_> + + 0 -1 1794 -2.6157610118389130e-02 + + 3.1350791454315186e-01 5.1891750097274780e-01 + <_> + + 0 -1 1795 -1.3959860429167747e-02 + + 3.2132729887962341e-01 5.0407177209854126e-01 + <_> + + 0 -1 1796 -6.3699018210172653e-03 + + 6.3875448703765869e-01 4.8495069146156311e-01 + <_> + + 0 -1 1797 -8.5613820701837540e-03 + + 2.7591320872306824e-01 5.0320190191268921e-01 + <_> + + 0 -1 1798 9.6622901037335396e-04 + + 4.6856409311294556e-01 5.8348792791366577e-01 + <_> + + 0 -1 1799 7.6550268568098545e-04 + + 5.1752072572708130e-01 3.8964220881462097e-01 + <_> + + 0 -1 1800 -8.1833340227603912e-03 + + 2.0691369473934174e-01 5.2081221342086792e-01 + <_> + + 0 -1 1801 -9.3976939097046852e-03 + + 6.1340910196304321e-01 4.6412229537963867e-01 + <_> + + 0 -1 1802 4.8028980381786823e-03 + + 5.4541081190109253e-01 4.3952199816703796e-01 + <_> + + 0 -1 1803 -3.5680569708347321e-03 + + 6.3444852828979492e-01 4.6810939908027649e-01 + <_> + + 0 -1 1804 4.0733120404183865e-03 + + 5.2926832437515259e-01 4.0156200528144836e-01 + <_> + + 0 -1 1805 1.2568129459396005e-03 + + 4.3929880857467651e-01 5.4528248310089111e-01 + <_> + + 0 -1 1806 -2.9065010603517294e-03 + + 5.8988320827484131e-01 4.8633798956871033e-01 + <_> + + 0 -1 1807 -2.4409340694546700e-03 + + 4.0693649649620056e-01 5.2474218606948853e-01 + <_> + + 0 -1 1808 2.4830700829625130e-02 + + 5.1827257871627808e-01 3.6825248599052429e-01 + <_> + + 0 -1 1809 -4.8854008316993713e-02 + + 1.3075779378414154e-01 4.9612811207771301e-01 + <_> + + 0 -1 1810 -1.6110379947349429e-03 + + 6.4210057258605957e-01 4.8726621270179749e-01 + <_> + + 0 -1 1811 -9.7009479999542236e-02 + + 4.7769349068403244e-02 4.9509888887405396e-01 + <_> + + 0 -1 1812 1.1209240183234215e-03 + + 4.6162670850753784e-01 5.3547459840774536e-01 + <_> + + 0 -1 1813 -1.3064090162515640e-03 + + 6.2618541717529297e-01 4.6388059854507446e-01 + <_> + + 0 -1 1814 4.5771620352752507e-04 + + 5.3844177722930908e-01 4.6466401219367981e-01 + <_> + + 0 -1 1815 -6.3149951165542006e-04 + + 3.8040471076965332e-01 5.1302570104598999e-01 + <_> + + 0 -1 1816 1.4505970466416329e-04 + + 4.5543101429939270e-01 5.6644618511199951e-01 + <_> + + 0 -1 1817 -1.6474550589919090e-02 + + 6.5969580411911011e-01 4.7158598899841309e-01 + <_> + + 0 -1 1818 1.3369579799473286e-02 + + 5.1954662799835205e-01 3.0359649658203125e-01 + <_> + + 0 -1 1819 1.0271780047332868e-04 + + 5.2291762828826904e-01 4.1070660948753357e-01 + <_> + + 0 -1 1820 -5.5311559699475765e-03 + + 6.3528877496719360e-01 4.9609071016311646e-01 + <_> + + 0 -1 1821 -2.6187049224972725e-03 + + 3.8245460391044617e-01 5.1409840583801270e-01 + <_> + + 0 -1 1822 5.0834268331527710e-03 + + 4.9504399299621582e-01 6.2208187580108643e-01 + <_> + + 0 -1 1823 7.9818159341812134e-02 + + 4.9523359537124634e-01 1.3224759697914124e-01 + <_> + + 0 -1 1824 -9.9226586520671844e-02 + + 7.5427287817001343e-01 5.0084167718887329e-01 + <_> + + 0 -1 1825 -6.5174017800018191e-04 + + 3.6993029713630676e-01 5.1301211118698120e-01 + <_> + + 0 -1 1826 -1.8996849656105042e-02 + + 6.6891789436340332e-01 4.9212029576301575e-01 + <_> + + 0 -1 1827 1.7346899956464767e-02 + + 4.9833008646965027e-01 1.8591980636119843e-01 + <_> + + 0 -1 1828 5.5082101607695222e-04 + + 4.5744240283966064e-01 5.5221217870712280e-01 + <_> + + 0 -1 1829 2.0056050270795822e-03 + + 5.1317447423934937e-01 3.8564699888229370e-01 + <_> + + 0 -1 1830 -7.7688191086053848e-03 + + 4.3617001175880432e-01 5.4343092441558838e-01 + <_> + + 0 -1 1831 5.0878278911113739e-02 + + 4.6827208995819092e-01 6.8406397104263306e-01 + <_> + + 0 -1 1832 -2.2901780903339386e-03 + + 4.3292450904846191e-01 5.3060990571975708e-01 + <_> + + 0 -1 1833 -1.5715380141045898e-04 + + 5.3700572252273560e-01 4.3781641125679016e-01 + <_> + + 0 -1 1834 1.0519240051507950e-01 + + 5.1372742652893066e-01 6.7361466586589813e-02 + <_> + + 0 -1 1835 2.7198919560760260e-03 + + 4.1120609641075134e-01 5.2556651830673218e-01 + <_> + + 0 -1 1836 4.8337779939174652e-02 + + 5.4046237468719482e-01 4.4389671087265015e-01 + <_> + + 0 -1 1837 9.5703761326149106e-04 + + 4.3559691309928894e-01 5.3995108604431152e-01 + <_> + + 0 -1 1838 -2.5371259078383446e-02 + + 5.9951752424240112e-01 5.0310248136520386e-01 + <_> + + 0 -1 1839 5.2457951009273529e-02 + + 4.9502879381179810e-01 1.3983510434627533e-01 + <_> + + 0 -1 1840 -1.2365629896521568e-02 + + 6.3972991704940796e-01 4.9641060829162598e-01 + <_> + + 0 -1 1841 -1.4589719474315643e-01 + + 1.0016699880361557e-01 4.9463221430778503e-01 + <_> + + 0 -1 1842 -1.5908600762486458e-02 + + 3.3123299479484558e-01 5.2083408832550049e-01 + <_> + + 0 -1 1843 3.9486068999394774e-04 + + 4.4063639640808105e-01 5.4261028766632080e-01 + <_> + + 0 -1 1844 -5.2454001270234585e-03 + + 2.7995899319648743e-01 5.1899671554565430e-01 + <_> + + 0 -1 1845 -5.0421799533069134e-03 + + 6.9875800609588623e-01 4.7521421313285828e-01 + <_> + + 0 -1 1846 2.9812189750373363e-03 + + 4.9832889437675476e-01 6.3074797391891479e-01 + <_> + + 0 -1 1847 -7.2884308174252510e-03 + + 2.9823330044746399e-01 5.0268697738647461e-01 + <_> + + 0 -1 1848 1.5094350092113018e-03 + + 5.3084421157836914e-01 3.8329708576202393e-01 + <_> + + 0 -1 1849 -9.3340799212455750e-03 + + 2.0379640161991119e-01 4.9698171019554138e-01 + <_> + + 0 -1 1850 2.8667140752077103e-02 + + 5.0256967544555664e-01 6.9280272722244263e-01 + <_> + + 0 -1 1851 1.7019680142402649e-01 + + 4.9600529670715332e-01 1.4764429628849030e-01 + <_> + + 0 -1 1852 -3.2614478841423988e-03 + + 5.6030637025833130e-01 4.8260560631752014e-01 + <_> + + 0 -1 1853 5.5769277969375253e-04 + + 5.2055621147155762e-01 4.1296330094337463e-01 + <_> + + 0 -1 1854 3.6258339881896973e-01 + + 5.2216529846191406e-01 3.7686121463775635e-01 + <_> + + 0 -1 1855 -1.1615130119025707e-02 + + 6.0226827859878540e-01 4.6374899148941040e-01 + <_> + + 0 -1 1856 -4.0795197710394859e-03 + + 4.0704470872879028e-01 5.3374791145324707e-01 + <_> + + 0 -1 1857 5.7204300537705421e-04 + + 4.6018350124359131e-01 5.9003931283950806e-01 + <_> + + 0 -1 1858 6.7543348995968699e-04 + + 5.3982520103454590e-01 4.3454289436340332e-01 + <_> + + 0 -1 1859 6.3295697327703238e-04 + + 5.2015632390975952e-01 4.0513589978218079e-01 + <_> + + 0 -1 1860 1.2435320531949401e-03 + + 4.6423879265785217e-01 5.5474412441253662e-01 + <_> + + 0 -1 1861 -4.7363857738673687e-03 + + 6.1985671520233154e-01 4.6725520491600037e-01 + <_> + + 0 -1 1862 -6.4658462069928646e-03 + + 6.8373328447341919e-01 5.0190007686614990e-01 + <_> + + 0 -1 1863 3.5017321351915598e-04 + + 4.3448030948638916e-01 5.3636229038238525e-01 + <_> + + 0 -1 1864 1.5754920605104417e-04 + + 4.7600790858268738e-01 5.7320207357406616e-01 + <_> + + 0 -1 1865 9.9774366244673729e-03 + + 5.0909858942031860e-01 3.6350399255752563e-01 + <_> + + 0 -1 1866 -4.1464529931545258e-04 + + 5.5700647830963135e-01 4.5938020944595337e-01 + <_> + + 0 -1 1867 -3.5888899583369493e-04 + + 5.3568458557128906e-01 4.3391349911689758e-01 + <_> + + 0 -1 1868 4.0463250479660928e-04 + + 4.4398030638694763e-01 5.4367768764495850e-01 + <_> + + 0 -1 1869 -8.2184787606820464e-04 + + 4.0422949194908142e-01 5.1762992143630981e-01 + <_> + + 0 -1 1870 5.9467419050633907e-03 + + 4.9276518821716309e-01 5.6337797641754150e-01 + <_> + + 0 -1 1871 -2.1753389388322830e-02 + + 8.0062937736511230e-01 4.8008409142494202e-01 + <_> + + 0 -1 1872 -1.4540379866957664e-02 + + 3.9460548758506775e-01 5.1822227239608765e-01 + <_> + + 0 -1 1873 -4.0510769933462143e-02 + + 2.1324990317225456e-02 4.9357929825782776e-01 + <_> + + 0 -1 1874 -5.8458268176764250e-04 + + 4.0127959847450256e-01 5.3140252828598022e-01 + <_> + + 0 -1 1875 5.5151800625026226e-03 + + 4.6424189209938049e-01 5.8962607383728027e-01 + <_> + + 0 -1 1876 -6.0626221820712090e-03 + + 6.5021592378616333e-01 5.0164777040481567e-01 + <_> + + 0 -1 1877 9.4535842537879944e-02 + + 5.2647089958190918e-01 4.1268271207809448e-01 + <_> + + 0 -1 1878 4.7315051779150963e-03 + + 4.8791998624801636e-01 5.8924478292465210e-01 + <_> + + 0 -1 1879 -5.2571471314877272e-04 + + 3.9172801375389099e-01 5.1894128322601318e-01 + <_> + + 0 -1 1880 -2.5464049540460110e-03 + + 5.8375990390777588e-01 4.9857059121131897e-01 + <_> + + 0 -1 1881 -2.6075689122080803e-02 + + 1.2619839608669281e-01 4.9558219313621521e-01 + <_> + + 0 -1 1882 -5.4779709316790104e-03 + + 5.7225137948989868e-01 5.0102657079696655e-01 + <_> + + 0 -1 1883 5.1337741315364838e-03 + + 5.2732622623443604e-01 4.2263761162757874e-01 + <_> + + 0 -1 1884 4.7944980906322598e-04 + + 4.4500669836997986e-01 5.8195871114730835e-01 + <_> + + 0 -1 1885 -2.1114079281687737e-03 + + 5.7576531171798706e-01 4.5117148756980896e-01 + <_> + + 0 -1 1886 -1.3179990462958813e-02 + + 1.8843810260295868e-01 5.1607340574264526e-01 + <_> + + 0 -1 1887 -4.7968099825084209e-03 + + 6.5897899866104126e-01 4.7361189126968384e-01 + <_> + + 0 -1 1888 6.7483168095350266e-03 + + 5.2594298124313354e-01 3.3563950657844543e-01 + <_> + + 0 -1 1889 1.4623369788751006e-03 + + 5.3552711009979248e-01 4.2640921473503113e-01 + <_> + + 0 -1 1890 4.7645159065723419e-03 + + 5.0344067811965942e-01 5.7868278026580811e-01 + <_> + + 0 -1 1891 6.8066660314798355e-03 + + 4.7566050291061401e-01 6.6778290271759033e-01 + <_> + + 0 -1 1892 3.6608621012419462e-03 + + 5.3696119785308838e-01 4.3115469813346863e-01 + <_> + + 0 -1 1893 2.1449640393257141e-02 + + 4.9686419963836670e-01 1.8888160586357117e-01 + <_> + + 0 -1 1894 4.1678901761770248e-03 + + 4.9307331442832947e-01 5.8153688907623291e-01 + <_> + + 0 -1 1895 8.6467564105987549e-03 + + 5.2052050828933716e-01 4.1325950622558594e-01 + <_> + + 0 -1 1896 -3.6114078829996288e-04 + + 5.4835551977157593e-01 4.8009279370307922e-01 + <_> + + 0 -1 1897 1.0808729566633701e-03 + + 4.6899020671844482e-01 6.0414212942123413e-01 + <_> + + 0 -1 1898 5.7719959877431393e-03 + + 5.1711422204971313e-01 3.0532771348953247e-01 + <_> + + 0 -1 1899 1.5720770461484790e-03 + + 5.2199780941009521e-01 4.1788038611412048e-01 + <_> + + 0 -1 1900 -1.9307859474793077e-03 + + 5.8603698015213013e-01 4.8129200935363770e-01 + <_> + + 0 -1 1901 -7.8926272690296173e-03 + + 1.7492769658565521e-01 4.9717339873313904e-01 + <_> + + 0 -1 1902 -2.2224679123610258e-03 + + 4.3425890803337097e-01 5.2128481864929199e-01 + <_> + + 0 -1 1903 1.9011989934369922e-03 + + 4.7651869058609009e-01 6.8920552730560303e-01 + <_> + + 0 -1 1904 2.7576119173318148e-03 + + 5.2621912956237793e-01 4.3374860286712646e-01 + <_> + + 0 -1 1905 5.1787449046969414e-03 + + 4.8040691018104553e-01 7.8437292575836182e-01 + <_> + + 0 -1 1906 -9.0273341629654169e-04 + + 4.1208469867706299e-01 5.3534239530563354e-01 + <_> + + 0 -1 1907 5.1797959022223949e-03 + + 4.7403728961944580e-01 6.4259600639343262e-01 + <_> + + 0 -1 1908 -1.0114000178873539e-02 + + 2.4687920510768890e-01 5.1750177145004272e-01 + <_> + + 0 -1 1909 -1.8617060035467148e-02 + + 5.7562941312789917e-01 4.6289789676666260e-01 + <_> + + 0 -1 1910 5.9225959703326225e-03 + + 5.1696258783340454e-01 3.2142710685729980e-01 + <_> + + 0 -1 1911 -6.2945079989731312e-03 + + 3.8720148801803589e-01 5.1416367292404175e-01 + <_> + + 0 -1 1912 6.5353019163012505e-03 + + 4.8530489206314087e-01 6.3104897737503052e-01 + <_> + + 0 -1 1913 1.0878399480134249e-03 + + 5.1173150539398193e-01 3.7232589721679688e-01 + <_> + + 0 -1 1914 -2.2542240098118782e-02 + + 5.6927400827407837e-01 4.8871129751205444e-01 + <_> + + 0 -1 1915 -3.0065660830587149e-03 + + 2.5560128688812256e-01 5.0039929151535034e-01 + <_> + + 0 -1 1916 7.4741272255778313e-03 + + 4.8108729720115662e-01 5.6759268045425415e-01 + <_> + + 0 -1 1917 2.6162320747971535e-02 + + 4.9711948633193970e-01 1.7772370576858521e-01 + <_> + + 0 -1 1918 9.4352738233283162e-04 + + 4.9400109052658081e-01 5.4912507534027100e-01 + <_> + + 0 -1 1919 3.3363241702318192e-02 + + 5.0076121091842651e-01 2.7907240390777588e-01 + <_> + + 0 -1 1920 -1.5118650160729885e-02 + + 7.0595788955688477e-01 4.9730318784713745e-01 + <_> + + 0 -1 1921 9.8648946732282639e-04 + + 5.1286202669143677e-01 3.7767618894577026e-01 + <_> + 213 + 1.0576110076904297e+02 + + <_> + + 0 -1 1922 -9.5150798559188843e-02 + + 6.4707571268081665e-01 4.0172868967056274e-01 + <_> + + 0 -1 1923 6.2702340073883533e-03 + + 3.9998221397399902e-01 5.7464492321014404e-01 + <_> + + 0 -1 1924 3.0018089455552399e-04 + + 3.5587701201438904e-01 5.5388098955154419e-01 + <_> + + 0 -1 1925 1.1757409665733576e-03 + + 4.2565348744392395e-01 5.3826177120208740e-01 + <_> + + 0 -1 1926 4.4235268433112651e-05 + + 3.6829081177711487e-01 5.5899268388748169e-01 + <_> + + 0 -1 1927 -2.9936920327600092e-05 + + 5.4524701833724976e-01 4.0203678607940674e-01 + <_> + + 0 -1 1928 3.0073199886828661e-03 + + 5.2390581369400024e-01 3.3178439736366272e-01 + <_> + + 0 -1 1929 -1.0513889603316784e-02 + + 4.3206891417503357e-01 5.3079837560653687e-01 + <_> + + 0 -1 1930 8.3476826548576355e-03 + + 4.5046371221542358e-01 6.4532989263534546e-01 + <_> + + 0 -1 1931 -3.1492270063608885e-03 + + 4.3134251236915588e-01 5.3705251216888428e-01 + <_> + + 0 -1 1932 -1.4435649973165710e-05 + + 5.3266030550003052e-01 3.8179719448089600e-01 + <_> + + 0 -1 1933 -4.2855090578086674e-04 + + 4.3051639199256897e-01 5.3820097446441650e-01 + <_> + + 0 -1 1934 1.5062429883982986e-04 + + 4.2359709739685059e-01 5.5449652671813965e-01 + <_> + + 0 -1 1935 7.1559831500053406e-02 + + 5.3030598163604736e-01 2.6788029074668884e-01 + <_> + + 0 -1 1936 8.4095180500298738e-04 + + 3.5571089386940002e-01 5.2054339647293091e-01 + <_> + + 0 -1 1937 6.2986500561237335e-02 + + 5.2253627777099609e-01 2.8613761067390442e-01 + <_> + + 0 -1 1938 -3.3798629883676767e-03 + + 3.6241859197616577e-01 5.2016979455947876e-01 + <_> + + 0 -1 1939 -1.1810739670181647e-04 + + 5.4744768142700195e-01 3.9598938822746277e-01 + <_> + + 0 -1 1940 -5.4505601292476058e-04 + + 3.7404221296310425e-01 5.2157157659530640e-01 + <_> + + 0 -1 1941 -1.8454910023137927e-03 + + 5.8930522203445435e-01 4.5844489336013794e-01 + <_> + + 0 -1 1942 -4.3832371011376381e-04 + + 4.0845820307731628e-01 5.3853511810302734e-01 + <_> + + 0 -1 1943 -2.4000830017030239e-03 + + 3.7774550914764404e-01 5.2935802936553955e-01 + <_> + + 0 -1 1944 -9.8795741796493530e-02 + + 2.9636120796203613e-01 5.0700891017913818e-01 + <_> + + 0 -1 1945 3.1798239797353745e-03 + + 4.8776328563690186e-01 6.7264437675476074e-01 + <_> + + 0 -1 1946 3.2406419632025063e-04 + + 4.3669110536575317e-01 5.5611097812652588e-01 + <_> + + 0 -1 1947 -3.2547250390052795e-02 + + 3.1281578540802002e-01 5.3086161613464355e-01 + <_> + + 0 -1 1948 -7.7561130747199059e-03 + + 6.5602248907089233e-01 4.6398720145225525e-01 + <_> + + 0 -1 1949 1.6027249395847321e-02 + + 5.1726800203323364e-01 3.1418979167938232e-01 + <_> + + 0 -1 1950 7.1002350523485802e-06 + + 4.0844461321830750e-01 5.3362947702407837e-01 + <_> + + 0 -1 1951 7.3422808200120926e-03 + + 4.9669221043586731e-01 6.6034650802612305e-01 + <_> + + 0 -1 1952 -1.6970280557870865e-03 + + 5.9082370996475220e-01 4.5001828670501709e-01 + <_> + + 0 -1 1953 2.4118260480463505e-03 + + 5.3151607513427734e-01 3.5997208952903748e-01 + <_> + + 0 -1 1954 -5.5300937965512276e-03 + + 2.3340409994125366e-01 4.9968141317367554e-01 + <_> + + 0 -1 1955 -2.6478730142116547e-03 + + 5.8809357881546021e-01 4.6847340464591980e-01 + <_> + + 0 -1 1956 1.1295629665255547e-02 + + 4.9837771058082581e-01 1.8845909833908081e-01 + <_> + + 0 -1 1957 -6.6952878842130303e-04 + + 5.8721381425857544e-01 4.7990199923515320e-01 + <_> + + 0 -1 1958 1.4410680159926414e-03 + + 5.1311892271041870e-01 3.5010111331939697e-01 + <_> + + 0 -1 1959 2.4637870956212282e-03 + + 5.3393721580505371e-01 4.1176390647888184e-01 + <_> + + 0 -1 1960 3.3114518737420440e-04 + + 4.3133831024169922e-01 5.3982460498809814e-01 + <_> + + 0 -1 1961 -3.3557269722223282e-02 + + 2.6753368973731995e-01 5.1791548728942871e-01 + <_> + + 0 -1 1962 1.8539419397711754e-02 + + 4.9738699197769165e-01 2.3171770572662354e-01 + <_> + + 0 -1 1963 -2.9698139405809343e-04 + + 5.5297082662582397e-01 4.6436640620231628e-01 + <_> + + 0 -1 1964 -4.5577259152196348e-04 + + 5.6295841932296753e-01 4.4691911339759827e-01 + <_> + + 0 -1 1965 -1.0158980265259743e-02 + + 6.7062127590179443e-01 4.9259188771247864e-01 + <_> + + 0 -1 1966 -2.2413829356082715e-05 + + 5.2394217252731323e-01 3.9129018783569336e-01 + <_> + + 0 -1 1967 7.2034963523037732e-05 + + 4.7994381189346313e-01 5.5017888545989990e-01 + <_> + + 0 -1 1968 -6.9267209619283676e-03 + + 6.9300097227096558e-01 4.6980848908424377e-01 + <_> + + 0 -1 1969 -7.6997838914394379e-03 + + 4.0996238589286804e-01 5.4808831214904785e-01 + <_> + + 0 -1 1970 -7.3130549862980843e-03 + + 3.2834759354591370e-01 5.0578862428665161e-01 + <_> + + 0 -1 1971 1.9650589674711227e-03 + + 4.9780470132827759e-01 6.3982498645782471e-01 + <_> + + 0 -1 1972 7.1647600270807743e-03 + + 4.6611601114273071e-01 6.2221372127532959e-01 + <_> + + 0 -1 1973 -2.4078639224171638e-02 + + 2.3346449434757233e-01 5.2221620082855225e-01 + <_> + + 0 -1 1974 -2.1027969196438789e-02 + + 1.1836539953947067e-01 4.9382260441780090e-01 + <_> + + 0 -1 1975 3.6017020465806127e-04 + + 5.3250199556350708e-01 4.1167110204696655e-01 + <_> + + 0 -1 1976 -1.7219729721546173e-02 + + 6.2787622213363647e-01 4.6642690896987915e-01 + <_> + + 0 -1 1977 -7.8672142699360847e-03 + + 3.4034150838851929e-01 5.2497369050979614e-01 + <_> + + 0 -1 1978 -4.4777389848604798e-04 + + 3.6104118824005127e-01 5.0862592458724976e-01 + <_> + + 0 -1 1979 5.5486010387539864e-03 + + 4.8842659592628479e-01 6.2034982442855835e-01 + <_> + + 0 -1 1980 -6.9461148232221603e-03 + + 2.6259300112724304e-01 5.0110971927642822e-01 + <_> + + 0 -1 1981 1.3569870498031378e-04 + + 4.3407949805259705e-01 5.6283122301101685e-01 + <_> + + 0 -1 1982 -4.5880250632762909e-02 + + 6.5079987049102783e-01 4.6962749958038330e-01 + <_> + + 0 -1 1983 -2.1582560613751411e-02 + + 3.8265028595924377e-01 5.2876168489456177e-01 + <_> + + 0 -1 1984 -2.0209539681673050e-02 + + 3.2333680987358093e-01 5.0744771957397461e-01 + <_> + + 0 -1 1985 5.8496710844337940e-03 + + 5.1776039600372314e-01 4.4896709918975830e-01 + <_> + + 0 -1 1986 -5.7476379879517481e-05 + + 4.0208509564399719e-01 5.2463638782501221e-01 + <_> + + 0 -1 1987 -1.1513100471347570e-03 + + 6.3150721788406372e-01 4.9051541090011597e-01 + <_> + + 0 -1 1988 1.9862831104546785e-03 + + 4.7024598717689514e-01 6.4971512556076050e-01 + <_> + + 0 -1 1989 -5.2719512023031712e-03 + + 3.6503839492797852e-01 5.2276527881622314e-01 + <_> + + 0 -1 1990 1.2662699446082115e-03 + + 5.1661008596420288e-01 3.8776180148124695e-01 + <_> + + 0 -1 1991 -6.2919440679252148e-03 + + 7.3758941888809204e-01 5.0238478183746338e-01 + <_> + + 0 -1 1992 6.7360111279413104e-04 + + 4.4232261180877686e-01 5.4955857992172241e-01 + <_> + + 0 -1 1993 -1.0523450328037143e-03 + + 5.9763962030410767e-01 4.8595830798149109e-01 + <_> + + 0 -1 1994 -4.4216238893568516e-04 + + 5.9559392929077148e-01 4.3989309668540955e-01 + <_> + + 0 -1 1995 1.1747940443456173e-03 + + 5.3498882055282593e-01 4.6050581336021423e-01 + <_> + + 0 -1 1996 5.2457437850534916e-03 + + 5.0491911172866821e-01 2.9415771365165710e-01 + <_> + + 0 -1 1997 -2.4539720267057419e-02 + + 2.5501778721809387e-01 5.2185869216918945e-01 + <_> + + 0 -1 1998 7.3793041519820690e-04 + + 4.4248610734939575e-01 5.4908162355422974e-01 + <_> + + 0 -1 1999 1.4233799884095788e-03 + + 5.3195142745971680e-01 4.0813559293746948e-01 + <_> + + 0 -1 2000 -2.4149110540747643e-03 + + 4.0876591205596924e-01 5.2389502525329590e-01 + <_> + + 0 -1 2001 -1.2165299849584699e-03 + + 5.6745791435241699e-01 4.9080529808998108e-01 + <_> + + 0 -1 2002 -1.2438809499144554e-03 + + 4.1294258832931519e-01 5.2561181783676147e-01 + <_> + + 0 -1 2003 6.1942739412188530e-03 + + 5.0601941347122192e-01 7.3136532306671143e-01 + <_> + + 0 -1 2004 -1.6607169527560472e-03 + + 5.9796321392059326e-01 4.5963698625564575e-01 + <_> + + 0 -1 2005 -2.7316259220242500e-02 + + 4.1743651032447815e-01 5.3088420629501343e-01 + <_> + + 0 -1 2006 -1.5845570014789701e-03 + + 5.6158047914505005e-01 4.5194861292839050e-01 + <_> + + 0 -1 2007 -1.5514739789068699e-03 + + 4.0761870145797729e-01 5.3607851266860962e-01 + <_> + + 0 -1 2008 3.8446558755822480e-04 + + 4.3472939729690552e-01 5.4304420948028564e-01 + <_> + + 0 -1 2009 -1.4672259800136089e-02 + + 1.6593049466609955e-01 5.1460939645767212e-01 + <_> + + 0 -1 2010 8.1608882173895836e-03 + + 4.9618190526962280e-01 1.8847459554672241e-01 + <_> + + 0 -1 2011 1.1121659772470593e-03 + + 4.8682639002799988e-01 6.0938161611557007e-01 + <_> + + 0 -1 2012 -7.2603770531713963e-03 + + 6.2843251228332520e-01 4.6903759241104126e-01 + <_> + + 0 -1 2013 -2.4046430189628154e-04 + + 5.5750000476837158e-01 4.0460440516471863e-01 + <_> + + 0 -1 2014 -2.3348190006799996e-04 + + 4.1157621145248413e-01 5.2528482675552368e-01 + <_> + + 0 -1 2015 5.5736480280756950e-03 + + 4.7300729155540466e-01 5.6901007890701294e-01 + <_> + + 0 -1 2016 3.0623769387602806e-02 + + 4.9718868732452393e-01 1.7400950193405151e-01 + <_> + + 0 -1 2017 9.2074798885732889e-04 + + 5.3721177577972412e-01 4.3548721075057983e-01 + <_> + + 0 -1 2018 -4.3550739064812660e-05 + + 5.3668838739395142e-01 4.3473169207572937e-01 + <_> + + 0 -1 2019 -6.6452710889279842e-03 + + 3.4355181455612183e-01 5.1605331897735596e-01 + <_> + + 0 -1 2020 4.3221998959779739e-02 + + 4.7667920589447021e-01 7.2936528921127319e-01 + <_> + + 0 -1 2021 2.2331769578158855e-03 + + 5.0293159484863281e-01 5.6331712007522583e-01 + <_> + + 0 -1 2022 3.1829739455133677e-03 + + 4.0160921216011047e-01 5.1921367645263672e-01 + <_> + + 0 -1 2023 -1.8027749320026487e-04 + + 4.0883159637451172e-01 5.4179197549819946e-01 + <_> + + 0 -1 2024 -5.2934689447283745e-03 + + 4.0756770968437195e-01 5.2435618638992310e-01 + <_> + + 0 -1 2025 1.2750959722325206e-03 + + 4.9132829904556274e-01 6.3870108127593994e-01 + <_> + + 0 -1 2026 4.3385322205722332e-03 + + 5.0316721200942993e-01 2.9473468661308289e-01 + <_> + + 0 -1 2027 8.5250744596123695e-03 + + 4.9497890472412109e-01 6.3088691234588623e-01 + <_> + + 0 -1 2028 -9.4266352243721485e-04 + + 5.3283667564392090e-01 4.2856499552726746e-01 + <_> + + 0 -1 2029 1.3609660090878606e-03 + + 4.9915251135826111e-01 5.9415012598037720e-01 + <_> + + 0 -1 2030 4.4782509212382138e-04 + + 4.5735040307044983e-01 5.8544808626174927e-01 + <_> + + 0 -1 2031 1.3360050506889820e-03 + + 4.6043589711189270e-01 5.8490520715713501e-01 + <_> + + 0 -1 2032 -6.0967548051849008e-04 + + 3.9693889021873474e-01 5.2294230461120605e-01 + <_> + + 0 -1 2033 -2.3656780831515789e-03 + + 5.8083200454711914e-01 4.8983570933341980e-01 + <_> + + 0 -1 2034 1.0734340175986290e-03 + + 4.3512108922004700e-01 5.4700392484664917e-01 + <_> + + 0 -1 2035 2.1923359017819166e-03 + + 5.3550601005554199e-01 3.8429039716720581e-01 + <_> + + 0 -1 2036 5.4968618787825108e-03 + + 5.0181388854980469e-01 2.8271919488906860e-01 + <_> + + 0 -1 2037 -7.5368821620941162e-02 + + 1.2250760197639465e-01 5.1488268375396729e-01 + <_> + + 0 -1 2038 2.5134470313787460e-02 + + 4.7317668795585632e-01 7.0254462957382202e-01 + <_> + + 0 -1 2039 -2.9358599931583740e-05 + + 5.4305320978164673e-01 4.6560868620872498e-01 + <_> + + 0 -1 2040 -5.8355910005047917e-04 + + 4.0310400724411011e-01 5.1901197433471680e-01 + <_> + + 0 -1 2041 -2.6639450807124376e-03 + + 4.3081268668174744e-01 5.1617711782455444e-01 + <_> + + 0 -1 2042 -1.3804089976474643e-03 + + 6.2198299169540405e-01 4.6955159306526184e-01 + <_> + + 0 -1 2043 1.2313219485804439e-03 + + 5.3793638944625854e-01 4.4258311390876770e-01 + <_> + + 0 -1 2044 -1.4644179827882908e-05 + + 5.2816402912139893e-01 4.2225030064582825e-01 + <_> + + 0 -1 2045 -1.2818809598684311e-02 + + 2.5820928812026978e-01 5.1799327135086060e-01 + <_> + + 0 -1 2046 2.2852189838886261e-02 + + 4.7786930203437805e-01 7.6092642545700073e-01 + <_> + + 0 -1 2047 8.2305970136076212e-04 + + 5.3409922122955322e-01 4.6717241406440735e-01 + <_> + + 0 -1 2048 1.2770120054483414e-02 + + 4.9657610058784485e-01 1.4723660051822662e-01 + <_> + + 0 -1 2049 -5.0051510334014893e-02 + + 6.4149940013885498e-01 5.0165921449661255e-01 + <_> + + 0 -1 2050 1.5775270760059357e-02 + + 4.5223200321197510e-01 5.6853622198104858e-01 + <_> + + 0 -1 2051 -1.8501620739698410e-02 + + 2.7647489309310913e-01 5.1379591226577759e-01 + <_> + + 0 -1 2052 2.4626250378787518e-03 + + 5.1419419050216675e-01 3.7954080104827881e-01 + <_> + + 0 -1 2053 6.2916167080402374e-02 + + 5.0606489181518555e-01 6.5804338455200195e-01 + <_> + + 0 -1 2054 -2.1648500478477217e-05 + + 5.1953881978988647e-01 4.0198868513107300e-01 + <_> + + 0 -1 2055 2.1180990152060986e-03 + + 4.9623650312423706e-01 5.9544587135314941e-01 + <_> + + 0 -1 2056 -1.6634890809655190e-02 + + 3.7579330801963806e-01 5.1754468679428101e-01 + <_> + + 0 -1 2057 -2.8899470344185829e-03 + + 6.6240137815475464e-01 5.0571787357330322e-01 + <_> + + 0 -1 2058 7.6783262193202972e-02 + + 4.7957968711853027e-01 8.0477148294448853e-01 + <_> + + 0 -1 2059 3.9170677773654461e-03 + + 4.9378821253776550e-01 5.7199418544769287e-01 + <_> + + 0 -1 2060 -7.2670601308345795e-02 + + 5.3894560784101486e-02 4.9439039826393127e-01 + <_> + + 0 -1 2061 5.4039502143859863e-01 + + 5.1297742128372192e-01 1.1433389782905579e-01 + <_> + + 0 -1 2062 2.9510019812732935e-03 + + 4.5283439755439758e-01 5.6985741853713989e-01 + <_> + + 0 -1 2063 3.4508369863033295e-03 + + 5.3577268123626709e-01 4.2187309265136719e-01 + <_> + + 0 -1 2064 -4.2077939724549651e-04 + + 5.9161728620529175e-01 4.6379259228706360e-01 + <_> + + 0 -1 2065 3.3051050268113613e-03 + + 5.2733850479125977e-01 4.3820428848266602e-01 + <_> + + 0 -1 2066 4.7735060798004270e-04 + + 4.0465280413627625e-01 5.1818847656250000e-01 + <_> + + 0 -1 2067 -2.5928510352969170e-02 + + 7.4522358179092407e-01 5.0893861055374146e-01 + <_> + + 0 -1 2068 -2.9729790985584259e-03 + + 3.2954359054565430e-01 5.0587952136993408e-01 + <_> + + 0 -1 2069 5.8508329093456268e-03 + + 4.8571440577507019e-01 5.7930248975753784e-01 + <_> + + 0 -1 2070 -4.5967519283294678e-02 + + 4.3127310276031494e-01 5.3806531429290771e-01 + <_> + + 0 -1 2071 1.5585960447788239e-01 + + 5.1961702108383179e-01 1.6847139596939087e-01 + <_> + + 0 -1 2072 1.5164829790592194e-02 + + 4.7357571125030518e-01 6.7350268363952637e-01 + <_> + + 0 -1 2073 -1.0604249546304345e-03 + + 5.8229267597198486e-01 4.7757029533386230e-01 + <_> + + 0 -1 2074 6.6476291976869106e-03 + + 4.9991989135742188e-01 2.3195350170135498e-01 + <_> + + 0 -1 2075 -1.2231130152940750e-02 + + 4.7508931159973145e-01 5.2629822492599487e-01 + <_> + + 0 -1 2076 5.6528882123529911e-03 + + 5.0697678327560425e-01 3.5618188977241516e-01 + <_> + + 0 -1 2077 1.2977829901501536e-03 + + 4.8756939172744751e-01 5.6190627813339233e-01 + <_> + + 0 -1 2078 1.0781589895486832e-02 + + 4.7507700324058533e-01 6.7823082208633423e-01 + <_> + + 0 -1 2079 2.8654779307544231e-03 + + 5.3054618835449219e-01 4.2907360196113586e-01 + <_> + + 0 -1 2080 2.8663428965955973e-03 + + 4.5184791088104248e-01 5.5393511056900024e-01 + <_> + + 0 -1 2081 -5.1983320154249668e-03 + + 4.1491198539733887e-01 5.4341888427734375e-01 + <_> + + 0 -1 2082 5.3739990107715130e-03 + + 4.7178968787193298e-01 6.5076571702957153e-01 + <_> + + 0 -1 2083 -1.4641529880464077e-02 + + 2.1721640229225159e-01 5.1617771387100220e-01 + <_> + + 0 -1 2084 -1.5042580344015732e-05 + + 5.3373837471008301e-01 4.2988368868827820e-01 + <_> + + 0 -1 2085 -1.1875660129589960e-04 + + 4.6045941114425659e-01 5.5824470520019531e-01 + <_> + + 0 -1 2086 1.6995530575513840e-02 + + 4.9458950757980347e-01 7.3880076408386230e-02 + <_> + + 0 -1 2087 -3.5095941275358200e-02 + + 7.0055091381072998e-01 4.9775910377502441e-01 + <_> + + 0 -1 2088 2.4217350874096155e-03 + + 4.4662651419639587e-01 5.4776942729949951e-01 + <_> + + 0 -1 2089 -9.6340337768197060e-04 + + 4.7140988707542419e-01 5.3133380413055420e-01 + <_> + + 0 -1 2090 1.6391130338888615e-04 + + 4.3315461277961731e-01 5.3422421216964722e-01 + <_> + + 0 -1 2091 -2.1141460165381432e-02 + + 2.6447001099586487e-01 5.2044987678527832e-01 + <_> + + 0 -1 2092 8.7775202700868249e-04 + + 5.2083498239517212e-01 4.1527429223060608e-01 + <_> + + 0 -1 2093 -2.7943920344114304e-02 + + 6.3441252708435059e-01 5.0188118219375610e-01 + <_> + + 0 -1 2094 6.7297378554940224e-03 + + 5.0504380464553833e-01 3.5008639097213745e-01 + <_> + + 0 -1 2095 2.3281039670109749e-02 + + 4.9663180112838745e-01 6.9686770439147949e-01 + <_> + + 0 -1 2096 -1.1644979938864708e-02 + + 3.3002600073814392e-01 5.0496298074722290e-01 + <_> + + 0 -1 2097 1.5764309093356133e-02 + + 4.9915981292724609e-01 7.3211538791656494e-01 + <_> + + 0 -1 2098 -1.3611479662358761e-03 + + 3.9117351174354553e-01 5.1606708765029907e-01 + <_> + + 0 -1 2099 -8.1522337859496474e-04 + + 5.6289112567901611e-01 4.9497190117835999e-01 + <_> + + 0 -1 2100 -6.0066272271797061e-04 + + 5.8535951375961304e-01 4.5505958795547485e-01 + <_> + + 0 -1 2101 4.9715518252924085e-04 + + 4.2714700102806091e-01 5.4435992240905762e-01 + <_> + + 0 -1 2102 2.3475370835512877e-03 + + 5.1431107521057129e-01 3.8876569271087646e-01 + <_> + + 0 -1 2103 -8.9261569082736969e-03 + + 6.0445022583007812e-01 4.9717208743095398e-01 + <_> + + 0 -1 2104 -1.3919910416007042e-02 + + 2.5831609964370728e-01 5.0003677606582642e-01 + <_> + + 0 -1 2105 1.0209949687123299e-03 + + 4.8573741316795349e-01 5.5603581666946411e-01 + <_> + + 0 -1 2106 -2.7441629208624363e-03 + + 5.9368848800659180e-01 4.6457770466804504e-01 + <_> + + 0 -1 2107 -1.6200130805373192e-02 + + 3.1630149483680725e-01 5.1934951543807983e-01 + <_> + + 0 -1 2108 4.3331980705261230e-03 + + 5.0612241029739380e-01 3.4588789939880371e-01 + <_> + + 0 -1 2109 5.8497930876910686e-04 + + 4.7790178656578064e-01 5.8701777458190918e-01 + <_> + + 0 -1 2110 -2.2466450463980436e-03 + + 4.2978510260581970e-01 5.3747731447219849e-01 + <_> + + 0 -1 2111 2.3146099410951138e-03 + + 5.4386717081069946e-01 4.6409699320793152e-01 + <_> + + 0 -1 2112 8.7679121643304825e-03 + + 4.7268930077552795e-01 6.7717897891998291e-01 + <_> + + 0 -1 2113 -2.2448020172305405e-04 + + 4.2291730642318726e-01 5.4280489683151245e-01 + <_> + + 0 -1 2114 -7.4336021207273006e-03 + + 6.0988807678222656e-01 4.6836739778518677e-01 + <_> + + 0 -1 2115 -2.3189240600913763e-03 + + 5.6894367933273315e-01 4.4242420792579651e-01 + <_> + + 0 -1 2116 -2.1042178850620985e-03 + + 3.7622210383415222e-01 5.1870870590209961e-01 + <_> + + 0 -1 2117 4.6034841216169298e-04 + + 4.6994051337242126e-01 5.7712072134017944e-01 + <_> + + 0 -1 2118 1.0547629790380597e-03 + + 4.4652169942855835e-01 5.6017017364501953e-01 + <_> + + 0 -1 2119 8.7148818420246243e-04 + + 5.4498052597045898e-01 3.9147090911865234e-01 + <_> + + 0 -1 2120 3.3364820410497487e-04 + + 4.5640090107917786e-01 5.6457388401031494e-01 + <_> + + 0 -1 2121 -1.4853250468149781e-03 + + 5.7473778724670410e-01 4.6927788853645325e-01 + <_> + + 0 -1 2122 3.0251620337367058e-03 + + 5.1661968231201172e-01 3.7628141045570374e-01 + <_> + + 0 -1 2123 5.0280741415917873e-03 + + 5.0021117925643921e-01 6.1515271663665771e-01 + <_> + + 0 -1 2124 -5.8164511574432254e-04 + + 5.3945982456207275e-01 4.3907511234283447e-01 + <_> + + 0 -1 2125 4.5141529291868210e-02 + + 5.1883268356323242e-01 2.0630359649658203e-01 + <_> + + 0 -1 2126 -1.0795620037242770e-03 + + 3.9046850800514221e-01 5.1379072666168213e-01 + <_> + + 0 -1 2127 1.5995999274309725e-04 + + 4.8953229188919067e-01 5.4275041818618774e-01 + <_> + + 0 -1 2128 -1.9359270110726357e-02 + + 6.9752287864685059e-01 4.7735071182250977e-01 + <_> + + 0 -1 2129 2.0725509524345398e-01 + + 5.2336359024047852e-01 3.0349919199943542e-01 + <_> + + 0 -1 2130 -4.1953290929086506e-04 + + 5.4193967580795288e-01 4.4601860642433167e-01 + <_> + + 0 -1 2131 2.2582069505006075e-03 + + 4.8157641291618347e-01 6.0274088382720947e-01 + <_> + + 0 -1 2132 -6.7811207845807076e-03 + + 3.9802789688110352e-01 5.1833057403564453e-01 + <_> + + 0 -1 2133 1.1154309846460819e-02 + + 5.4312318563461304e-01 4.1887599229812622e-01 + <_> + + 0 -1 2134 4.3162431567907333e-02 + + 4.7382280230522156e-01 6.5229612588882446e-01 + + <_> + + <_> + 3 7 14 4 -1. + <_> + 3 9 14 2 2. + <_> + + <_> + 1 2 18 4 -1. + <_> + 7 2 6 4 3. + <_> + + <_> + 1 7 15 9 -1. + <_> + 1 10 15 3 3. + <_> + + <_> + 5 6 2 6 -1. + <_> + 5 9 2 3 2. + <_> + + <_> + 7 5 6 3 -1. + <_> + 9 5 2 3 3. + <_> + + <_> + 4 0 12 9 -1. + <_> + 4 3 12 3 3. + <_> + + <_> + 6 9 10 8 -1. + <_> + 6 13 10 4 2. + <_> + + <_> + 3 6 14 8 -1. + <_> + 3 10 14 4 2. + <_> + + <_> + 14 1 6 10 -1. + <_> + 14 1 3 10 2. + <_> + + <_> + 7 8 5 12 -1. + <_> + 7 12 5 4 3. + <_> + + <_> + 1 1 18 3 -1. + <_> + 7 1 6 3 3. + <_> + + <_> + 1 8 17 2 -1. + <_> + 1 9 17 1 2. + <_> + + <_> + 16 6 4 2 -1. + <_> + 16 7 4 1 2. + <_> + + <_> + 5 17 2 2 -1. + <_> + 5 18 2 1 2. + <_> + + <_> + 14 2 6 12 -1. + <_> + 14 2 3 12 2. + <_> + + <_> + 4 0 4 12 -1. + <_> + 4 0 2 6 2. + <_> + 6 6 2 6 2. + <_> + + <_> + 2 11 18 8 -1. + <_> + 8 11 6 8 3. + <_> + + <_> + 5 7 10 2 -1. + <_> + 5 8 10 1 2. + <_> + + <_> + 15 11 5 3 -1. + <_> + 15 12 5 1 3. + <_> + + <_> + 5 3 10 9 -1. + <_> + 5 6 10 3 3. + <_> + + <_> + 9 4 2 14 -1. + <_> + 9 11 2 7 2. + <_> + + <_> + 3 5 4 12 -1. + <_> + 3 9 4 4 3. + <_> + + <_> + 4 5 12 5 -1. + <_> + 8 5 4 5 3. + <_> + + <_> + 5 6 10 8 -1. + <_> + 5 10 10 4 2. + <_> + + <_> + 8 0 6 9 -1. + <_> + 8 3 6 3 3. + <_> + + <_> + 9 12 1 8 -1. + <_> + 9 16 1 4 2. + <_> + + <_> + 0 7 20 6 -1. + <_> + 0 9 20 2 3. + <_> + + <_> + 7 0 6 17 -1. + <_> + 9 0 2 17 3. + <_> + + <_> + 9 0 6 4 -1. + <_> + 11 0 2 4 3. + <_> + + <_> + 5 1 6 4 -1. + <_> + 7 1 2 4 3. + <_> + + <_> + 12 1 6 16 -1. + <_> + 14 1 2 16 3. + <_> + + <_> + 0 5 18 8 -1. + <_> + 0 5 9 4 2. + <_> + 9 9 9 4 2. + <_> + + <_> + 8 15 10 4 -1. + <_> + 13 15 5 2 2. + <_> + 8 17 5 2 2. + <_> + + <_> + 3 1 4 8 -1. + <_> + 3 1 2 4 2. + <_> + 5 5 2 4 2. + <_> + + <_> + 3 6 14 10 -1. + <_> + 10 6 7 5 2. + <_> + 3 11 7 5 2. + <_> + + <_> + 2 1 6 16 -1. + <_> + 4 1 2 16 3. + <_> + + <_> + 0 18 20 2 -1. + <_> + 0 19 20 1 2. + <_> + + <_> + 8 13 4 3 -1. + <_> + 8 14 4 1 3. + <_> + + <_> + 9 14 2 3 -1. + <_> + 9 15 2 1 3. + <_> + + <_> + 0 12 9 6 -1. + <_> + 0 14 9 2 3. + <_> + + <_> + 5 7 3 4 -1. + <_> + 5 9 3 2 2. + <_> + + <_> + 9 3 2 16 -1. + <_> + 9 11 2 8 2. + <_> + + <_> + 3 6 13 8 -1. + <_> + 3 10 13 4 2. + <_> + + <_> + 12 3 8 2 -1. + <_> + 12 3 4 2 2. + <_> + + <_> + 8 8 4 12 -1. + <_> + 8 12 4 4 3. + <_> + + <_> + 11 3 8 6 -1. + <_> + 15 3 4 3 2. + <_> + 11 6 4 3 2. + <_> + + <_> + 7 1 6 19 -1. + <_> + 9 1 2 19 3. + <_> + + <_> + 9 0 6 4 -1. + <_> + 11 0 2 4 3. + <_> + + <_> + 3 1 9 3 -1. + <_> + 6 1 3 3 3. + <_> + + <_> + 8 15 10 4 -1. + <_> + 13 15 5 2 2. + <_> + 8 17 5 2 2. + <_> + + <_> + 0 3 6 10 -1. + <_> + 3 3 3 10 2. + <_> + + <_> + 3 4 15 15 -1. + <_> + 3 9 15 5 3. + <_> + + <_> + 6 5 8 6 -1. + <_> + 6 7 8 2 3. + <_> + + <_> + 4 4 12 10 -1. + <_> + 10 4 6 5 2. + <_> + 4 9 6 5 2. + <_> + + <_> + 6 4 4 4 -1. + <_> + 8 4 2 4 2. + <_> + + <_> + 15 11 1 2 -1. + <_> + 15 12 1 1 2. + <_> + + <_> + 3 11 2 2 -1. + <_> + 3 12 2 1 2. + <_> + + <_> + 16 11 1 3 -1. + <_> + 16 12 1 1 3. + <_> + + <_> + 3 15 6 4 -1. + <_> + 3 15 3 2 2. + <_> + 6 17 3 2 2. + <_> + + <_> + 6 7 8 2 -1. + <_> + 6 8 8 1 2. + <_> + + <_> + 3 11 1 3 -1. + <_> + 3 12 1 1 3. + <_> + + <_> + 6 0 12 2 -1. + <_> + 6 1 12 1 2. + <_> + + <_> + 9 14 2 3 -1. + <_> + 9 15 2 1 3. + <_> + + <_> + 7 15 6 2 -1. + <_> + 7 16 6 1 2. + <_> + + <_> + 0 5 4 6 -1. + <_> + 0 7 4 2 3. + <_> + + <_> + 4 12 12 2 -1. + <_> + 8 12 4 2 3. + <_> + + <_> + 6 3 1 9 -1. + <_> + 6 6 1 3 3. + <_> + + <_> + 10 17 3 2 -1. + <_> + 11 17 1 2 3. + <_> + + <_> + 9 9 2 2 -1. + <_> + 9 10 2 1 2. + <_> + + <_> + 7 6 6 4 -1. + <_> + 9 6 2 4 3. + <_> + + <_> + 7 17 3 2 -1. + <_> + 8 17 1 2 3. + <_> + + <_> + 10 17 3 3 -1. + <_> + 11 17 1 3 3. + <_> + + <_> + 8 12 3 2 -1. + <_> + 8 13 3 1 2. + <_> + + <_> + 9 3 6 2 -1. + <_> + 11 3 2 2 3. + <_> + + <_> + 3 11 14 4 -1. + <_> + 3 13 14 2 2. + <_> + + <_> + 1 10 18 4 -1. + <_> + 10 10 9 2 2. + <_> + 1 12 9 2 2. + <_> + + <_> + 0 10 3 3 -1. + <_> + 0 11 3 1 3. + <_> + + <_> + 9 1 6 6 -1. + <_> + 11 1 2 6 3. + <_> + + <_> + 8 7 3 6 -1. + <_> + 9 7 1 6 3. + <_> + + <_> + 1 0 18 9 -1. + <_> + 1 3 18 3 3. + <_> + + <_> + 12 10 2 6 -1. + <_> + 12 13 2 3 2. + <_> + + <_> + 0 5 19 8 -1. + <_> + 0 9 19 4 2. + <_> + + <_> + 7 0 6 9 -1. + <_> + 9 0 2 9 3. + <_> + + <_> + 5 3 6 1 -1. + <_> + 7 3 2 1 3. + <_> + + <_> + 11 3 6 1 -1. + <_> + 13 3 2 1 3. + <_> + + <_> + 5 10 4 6 -1. + <_> + 5 13 4 3 2. + <_> + + <_> + 11 3 6 1 -1. + <_> + 13 3 2 1 3. + <_> + + <_> + 4 4 12 6 -1. + <_> + 4 6 12 2 3. + <_> + + <_> + 15 12 2 6 -1. + <_> + 15 14 2 2 3. + <_> + + <_> + 9 3 2 2 -1. + <_> + 10 3 1 2 2. + <_> + + <_> + 9 3 3 1 -1. + <_> + 10 3 1 1 3. + <_> + + <_> + 1 1 4 14 -1. + <_> + 3 1 2 14 2. + <_> + + <_> + 9 0 4 4 -1. + <_> + 11 0 2 2 2. + <_> + 9 2 2 2 2. + <_> + + <_> + 7 5 1 14 -1. + <_> + 7 12 1 7 2. + <_> + + <_> + 19 0 1 4 -1. + <_> + 19 2 1 2 2. + <_> + + <_> + 5 5 6 4 -1. + <_> + 8 5 3 4 2. + <_> + + <_> + 9 18 3 2 -1. + <_> + 10 18 1 2 3. + <_> + + <_> + 8 18 3 2 -1. + <_> + 9 18 1 2 3. + <_> + + <_> + 4 5 12 6 -1. + <_> + 4 7 12 2 3. + <_> + + <_> + 3 12 2 6 -1. + <_> + 3 14 2 2 3. + <_> + + <_> + 10 8 2 12 -1. + <_> + 10 12 2 4 3. + <_> + + <_> + 7 18 3 2 -1. + <_> + 8 18 1 2 3. + <_> + + <_> + 9 0 6 2 -1. + <_> + 11 0 2 2 3. + <_> + + <_> + 5 11 9 3 -1. + <_> + 5 12 9 1 3. + <_> + + <_> + 9 0 6 2 -1. + <_> + 11 0 2 2 3. + <_> + + <_> + 1 1 18 5 -1. + <_> + 7 1 6 5 3. + <_> + + <_> + 8 0 4 4 -1. + <_> + 10 0 2 2 2. + <_> + 8 2 2 2 2. + <_> + + <_> + 3 12 1 3 -1. + <_> + 3 13 1 1 3. + <_> + + <_> + 8 14 5 3 -1. + <_> + 8 15 5 1 3. + <_> + + <_> + 5 4 10 12 -1. + <_> + 5 4 5 6 2. + <_> + 10 10 5 6 2. + <_> + + <_> + 9 6 9 12 -1. + <_> + 9 10 9 4 3. + <_> + + <_> + 2 2 12 14 -1. + <_> + 2 2 6 7 2. + <_> + 8 9 6 7 2. + <_> + + <_> + 4 7 12 2 -1. + <_> + 8 7 4 2 3. + <_> + + <_> + 7 4 6 4 -1. + <_> + 7 6 6 2 2. + <_> + + <_> + 4 5 11 8 -1. + <_> + 4 9 11 4 2. + <_> + + <_> + 3 10 16 4 -1. + <_> + 3 12 16 2 2. + <_> + + <_> + 0 0 16 2 -1. + <_> + 0 1 16 1 2. + <_> + + <_> + 7 5 6 2 -1. + <_> + 9 5 2 2 3. + <_> + + <_> + 3 2 6 10 -1. + <_> + 3 2 3 5 2. + <_> + 6 7 3 5 2. + <_> + + <_> + 10 5 8 15 -1. + <_> + 10 10 8 5 3. + <_> + + <_> + 3 14 8 6 -1. + <_> + 3 14 4 3 2. + <_> + 7 17 4 3 2. + <_> + + <_> + 14 2 2 2 -1. + <_> + 14 3 2 1 2. + <_> + + <_> + 1 10 7 6 -1. + <_> + 1 13 7 3 2. + <_> + + <_> + 15 4 4 3 -1. + <_> + 15 4 2 3 2. + <_> + + <_> + 2 9 14 6 -1. + <_> + 2 9 7 3 2. + <_> + 9 12 7 3 2. + <_> + + <_> + 5 7 10 4 -1. + <_> + 5 9 10 2 2. + <_> + + <_> + 6 9 8 8 -1. + <_> + 6 9 4 4 2. + <_> + 10 13 4 4 2. + <_> + + <_> + 14 1 3 2 -1. + <_> + 14 2 3 1 2. + <_> + + <_> + 1 4 4 2 -1. + <_> + 3 4 2 2 2. + <_> + + <_> + 11 10 2 8 -1. + <_> + 11 14 2 4 2. + <_> + + <_> + 0 0 5 3 -1. + <_> + 0 1 5 1 3. + <_> + + <_> + 2 5 18 8 -1. + <_> + 11 5 9 4 2. + <_> + 2 9 9 4 2. + <_> + + <_> + 6 6 1 6 -1. + <_> + 6 9 1 3 2. + <_> + + <_> + 19 1 1 3 -1. + <_> + 19 2 1 1 3. + <_> + + <_> + 7 6 6 6 -1. + <_> + 9 6 2 6 3. + <_> + + <_> + 19 1 1 3 -1. + <_> + 19 2 1 1 3. + <_> + + <_> + 3 13 2 3 -1. + <_> + 3 14 2 1 3. + <_> + + <_> + 8 4 8 12 -1. + <_> + 12 4 4 6 2. + <_> + 8 10 4 6 2. + <_> + + <_> + 5 2 6 3 -1. + <_> + 7 2 2 3 3. + <_> + + <_> + 6 1 9 10 -1. + <_> + 6 6 9 5 2. + <_> + + <_> + 0 4 6 12 -1. + <_> + 2 4 2 12 3. + <_> + + <_> + 15 13 2 3 -1. + <_> + 15 14 2 1 3. + <_> + + <_> + 7 14 5 3 -1. + <_> + 7 15 5 1 3. + <_> + + <_> + 15 13 3 3 -1. + <_> + 15 14 3 1 3. + <_> + + <_> + 6 14 8 3 -1. + <_> + 6 15 8 1 3. + <_> + + <_> + 15 13 3 3 -1. + <_> + 15 14 3 1 3. + <_> + + <_> + 2 13 3 3 -1. + <_> + 2 14 3 1 3. + <_> + + <_> + 4 7 12 12 -1. + <_> + 10 7 6 6 2. + <_> + 4 13 6 6 2. + <_> + + <_> + 9 7 2 6 -1. + <_> + 10 7 1 6 2. + <_> + + <_> + 8 9 5 2 -1. + <_> + 8 10 5 1 2. + <_> + + <_> + 8 6 3 4 -1. + <_> + 9 6 1 4 3. + <_> + + <_> + 9 6 2 8 -1. + <_> + 9 10 2 4 2. + <_> + + <_> + 7 7 3 6 -1. + <_> + 8 7 1 6 3. + <_> + + <_> + 11 3 3 3 -1. + <_> + 12 3 1 3 3. + <_> + + <_> + 5 4 6 1 -1. + <_> + 7 4 2 1 3. + <_> + + <_> + 5 6 10 3 -1. + <_> + 5 7 10 1 3. + <_> + + <_> + 7 3 6 9 -1. + <_> + 7 6 6 3 3. + <_> + + <_> + 6 7 9 1 -1. + <_> + 9 7 3 1 3. + <_> + + <_> + 2 8 16 8 -1. + <_> + 2 12 16 4 2. + <_> + + <_> + 14 6 2 6 -1. + <_> + 14 9 2 3 2. + <_> + + <_> + 1 5 6 15 -1. + <_> + 1 10 6 5 3. + <_> + + <_> + 10 0 6 9 -1. + <_> + 10 3 6 3 3. + <_> + + <_> + 6 6 7 14 -1. + <_> + 6 13 7 7 2. + <_> + + <_> + 13 7 3 6 -1. + <_> + 13 9 3 2 3. + <_> + + <_> + 1 8 15 4 -1. + <_> + 6 8 5 4 3. + <_> + + <_> + 11 2 3 10 -1. + <_> + 11 7 3 5 2. + <_> + + <_> + 3 7 4 6 -1. + <_> + 3 9 4 2 3. + <_> + + <_> + 13 3 6 10 -1. + <_> + 15 3 2 10 3. + <_> + + <_> + 5 7 8 10 -1. + <_> + 5 7 4 5 2. + <_> + 9 12 4 5 2. + <_> + + <_> + 4 4 12 12 -1. + <_> + 10 4 6 6 2. + <_> + 4 10 6 6 2. + <_> + + <_> + 1 4 6 9 -1. + <_> + 3 4 2 9 3. + <_> + + <_> + 11 3 2 5 -1. + <_> + 11 3 1 5 2. + <_> + + <_> + 7 3 2 5 -1. + <_> + 8 3 1 5 2. + <_> + + <_> + 10 14 2 3 -1. + <_> + 10 15 2 1 3. + <_> + + <_> + 5 12 6 2 -1. + <_> + 8 12 3 2 2. + <_> + + <_> + 9 14 2 3 -1. + <_> + 9 15 2 1 3. + <_> + + <_> + 4 11 12 6 -1. + <_> + 4 14 12 3 2. + <_> + + <_> + 11 11 5 9 -1. + <_> + 11 14 5 3 3. + <_> + + <_> + 6 15 3 2 -1. + <_> + 6 16 3 1 2. + <_> + + <_> + 11 0 3 5 -1. + <_> + 12 0 1 5 3. + <_> + + <_> + 5 5 6 7 -1. + <_> + 8 5 3 7 2. + <_> + + <_> + 13 0 1 9 -1. + <_> + 13 3 1 3 3. + <_> + + <_> + 3 2 4 8 -1. + <_> + 3 2 2 4 2. + <_> + 5 6 2 4 2. + <_> + + <_> + 13 12 4 6 -1. + <_> + 13 14 4 2 3. + <_> + + <_> + 3 12 4 6 -1. + <_> + 3 14 4 2 3. + <_> + + <_> + 13 11 3 4 -1. + <_> + 13 13 3 2 2. + <_> + + <_> + 4 4 4 3 -1. + <_> + 4 5 4 1 3. + <_> + + <_> + 7 5 11 8 -1. + <_> + 7 9 11 4 2. + <_> + + <_> + 7 8 3 4 -1. + <_> + 8 8 1 4 3. + <_> + + <_> + 9 1 6 1 -1. + <_> + 11 1 2 1 3. + <_> + + <_> + 5 5 3 3 -1. + <_> + 5 6 3 1 3. + <_> + + <_> + 0 9 20 6 -1. + <_> + 10 9 10 3 2. + <_> + 0 12 10 3 2. + <_> + + <_> + 8 6 3 5 -1. + <_> + 9 6 1 5 3. + <_> + + <_> + 11 0 1 3 -1. + <_> + 11 1 1 1 3. + <_> + + <_> + 4 2 4 2 -1. + <_> + 4 3 4 1 2. + <_> + + <_> + 12 6 4 3 -1. + <_> + 12 7 4 1 3. + <_> + + <_> + 5 0 6 4 -1. + <_> + 7 0 2 4 3. + <_> + + <_> + 9 7 3 8 -1. + <_> + 10 7 1 8 3. + <_> + + <_> + 9 7 2 2 -1. + <_> + 10 7 1 2 2. + <_> + + <_> + 6 7 14 4 -1. + <_> + 13 7 7 2 2. + <_> + 6 9 7 2 2. + <_> + + <_> + 0 5 3 6 -1. + <_> + 0 7 3 2 3. + <_> + + <_> + 13 11 3 4 -1. + <_> + 13 13 3 2 2. + <_> + + <_> + 4 11 3 4 -1. + <_> + 4 13 3 2 2. + <_> + + <_> + 5 9 12 8 -1. + <_> + 11 9 6 4 2. + <_> + 5 13 6 4 2. + <_> + + <_> + 9 12 1 3 -1. + <_> + 9 13 1 1 3. + <_> + + <_> + 10 15 2 4 -1. + <_> + 10 17 2 2 2. + <_> + + <_> + 7 7 6 1 -1. + <_> + 9 7 2 1 3. + <_> + + <_> + 12 3 6 6 -1. + <_> + 15 3 3 3 2. + <_> + 12 6 3 3 2. + <_> + + <_> + 0 4 10 6 -1. + <_> + 0 6 10 2 3. + <_> + + <_> + 8 3 8 14 -1. + <_> + 12 3 4 7 2. + <_> + 8 10 4 7 2. + <_> + + <_> + 4 4 7 15 -1. + <_> + 4 9 7 5 3. + <_> + + <_> + 12 2 6 8 -1. + <_> + 15 2 3 4 2. + <_> + 12 6 3 4 2. + <_> + + <_> + 2 2 6 8 -1. + <_> + 2 2 3 4 2. + <_> + 5 6 3 4 2. + <_> + + <_> + 2 13 18 7 -1. + <_> + 8 13 6 7 3. + <_> + + <_> + 4 3 8 14 -1. + <_> + 4 3 4 7 2. + <_> + 8 10 4 7 2. + <_> + + <_> + 18 1 2 6 -1. + <_> + 18 3 2 2 3. + <_> + + <_> + 9 11 2 3 -1. + <_> + 9 12 2 1 3. + <_> + + <_> + 18 1 2 6 -1. + <_> + 18 3 2 2 3. + <_> + + <_> + 0 1 2 6 -1. + <_> + 0 3 2 2 3. + <_> + + <_> + 1 5 18 6 -1. + <_> + 1 7 18 2 3. + <_> + + <_> + 0 2 6 7 -1. + <_> + 3 2 3 7 2. + <_> + + <_> + 7 3 6 14 -1. + <_> + 7 10 6 7 2. + <_> + + <_> + 3 7 13 10 -1. + <_> + 3 12 13 5 2. + <_> + + <_> + 11 15 2 2 -1. + <_> + 11 16 2 1 2. + <_> + + <_> + 2 11 16 4 -1. + <_> + 2 11 8 2 2. + <_> + 10 13 8 2 2. + <_> + + <_> + 13 7 6 4 -1. + <_> + 16 7 3 2 2. + <_> + 13 9 3 2 2. + <_> + + <_> + 6 10 3 9 -1. + <_> + 6 13 3 3 3. + <_> + + <_> + 14 6 1 6 -1. + <_> + 14 9 1 3 2. + <_> + + <_> + 5 10 4 1 -1. + <_> + 7 10 2 1 2. + <_> + + <_> + 3 8 15 5 -1. + <_> + 8 8 5 5 3. + <_> + + <_> + 1 6 5 4 -1. + <_> + 1 8 5 2 2. + <_> + + <_> + 3 1 17 6 -1. + <_> + 3 3 17 2 3. + <_> + + <_> + 6 7 8 2 -1. + <_> + 10 7 4 2 2. + <_> + + <_> + 9 7 3 2 -1. + <_> + 10 7 1 2 3. + <_> + + <_> + 8 7 3 2 -1. + <_> + 9 7 1 2 3. + <_> + + <_> + 8 9 4 2 -1. + <_> + 8 10 4 1 2. + <_> + + <_> + 8 8 4 3 -1. + <_> + 8 9 4 1 3. + <_> + + <_> + 9 5 6 4 -1. + <_> + 9 5 3 4 2. + <_> + + <_> + 8 13 4 3 -1. + <_> + 8 14 4 1 3. + <_> + + <_> + 4 7 12 6 -1. + <_> + 10 7 6 3 2. + <_> + 4 10 6 3 2. + <_> + + <_> + 8 14 4 3 -1. + <_> + 8 15 4 1 3. + <_> + + <_> + 9 7 3 3 -1. + <_> + 9 8 3 1 3. + <_> + + <_> + 7 4 3 8 -1. + <_> + 8 4 1 8 3. + <_> + + <_> + 10 0 3 6 -1. + <_> + 11 0 1 6 3. + <_> + + <_> + 6 3 4 8 -1. + <_> + 8 3 2 8 2. + <_> + + <_> + 14 3 6 13 -1. + <_> + 14 3 3 13 2. + <_> + + <_> + 8 13 3 6 -1. + <_> + 8 16 3 3 2. + <_> + + <_> + 14 3 6 13 -1. + <_> + 14 3 3 13 2. + <_> + + <_> + 0 7 10 4 -1. + <_> + 0 7 5 2 2. + <_> + 5 9 5 2 2. + <_> + + <_> + 14 3 6 13 -1. + <_> + 14 3 3 13 2. + <_> + + <_> + 0 3 6 13 -1. + <_> + 3 3 3 13 2. + <_> + + <_> + 9 1 4 1 -1. + <_> + 9 1 2 1 2. + <_> + + <_> + 8 0 2 1 -1. + <_> + 9 0 1 1 2. + <_> + + <_> + 10 16 4 4 -1. + <_> + 12 16 2 2 2. + <_> + 10 18 2 2 2. + <_> + + <_> + 9 6 2 3 -1. + <_> + 10 6 1 3 2. + <_> + + <_> + 4 5 12 2 -1. + <_> + 8 5 4 2 3. + <_> + + <_> + 8 7 3 5 -1. + <_> + 9 7 1 5 3. + <_> + + <_> + 6 4 8 6 -1. + <_> + 6 6 8 2 3. + <_> + + <_> + 9 5 2 12 -1. + <_> + 9 11 2 6 2. + <_> + + <_> + 4 6 6 8 -1. + <_> + 4 10 6 4 2. + <_> + + <_> + 12 2 8 5 -1. + <_> + 12 2 4 5 2. + <_> + + <_> + 0 8 18 3 -1. + <_> + 0 9 18 1 3. + <_> + + <_> + 8 12 4 8 -1. + <_> + 8 16 4 4 2. + <_> + + <_> + 0 2 8 5 -1. + <_> + 4 2 4 5 2. + <_> + + <_> + 13 11 3 4 -1. + <_> + 13 13 3 2 2. + <_> + + <_> + 5 11 6 1 -1. + <_> + 7 11 2 1 3. + <_> + + <_> + 11 3 3 1 -1. + <_> + 12 3 1 1 3. + <_> + + <_> + 7 13 5 3 -1. + <_> + 7 14 5 1 3. + <_> + + <_> + 11 11 7 6 -1. + <_> + 11 14 7 3 2. + <_> + + <_> + 2 11 7 6 -1. + <_> + 2 14 7 3 2. + <_> + + <_> + 12 14 2 6 -1. + <_> + 12 16 2 2 3. + <_> + + <_> + 8 14 3 3 -1. + <_> + 8 15 3 1 3. + <_> + + <_> + 11 0 3 5 -1. + <_> + 12 0 1 5 3. + <_> + + <_> + 6 1 4 9 -1. + <_> + 8 1 2 9 2. + <_> + + <_> + 10 3 6 1 -1. + <_> + 12 3 2 1 3. + <_> + + <_> + 8 8 3 4 -1. + <_> + 8 10 3 2 2. + <_> + + <_> + 8 12 4 2 -1. + <_> + 8 13 4 1 2. + <_> + + <_> + 5 18 4 2 -1. + <_> + 5 19 4 1 2. + <_> + + <_> + 2 1 18 6 -1. + <_> + 2 3 18 2 3. + <_> + + <_> + 6 0 3 2 -1. + <_> + 7 0 1 2 3. + <_> + + <_> + 13 8 6 2 -1. + <_> + 16 8 3 1 2. + <_> + 13 9 3 1 2. + <_> + + <_> + 6 10 3 6 -1. + <_> + 6 13 3 3 2. + <_> + + <_> + 0 13 20 4 -1. + <_> + 10 13 10 2 2. + <_> + 0 15 10 2 2. + <_> + + <_> + 7 7 6 5 -1. + <_> + 9 7 2 5 3. + <_> + + <_> + 11 0 2 2 -1. + <_> + 11 1 2 1 2. + <_> + + <_> + 1 8 6 2 -1. + <_> + 1 8 3 1 2. + <_> + 4 9 3 1 2. + <_> + + <_> + 0 2 20 2 -1. + <_> + 10 2 10 1 2. + <_> + 0 3 10 1 2. + <_> + + <_> + 7 14 5 3 -1. + <_> + 7 15 5 1 3. + <_> + + <_> + 7 13 6 6 -1. + <_> + 10 13 3 3 2. + <_> + 7 16 3 3 2. + <_> + + <_> + 9 12 2 3 -1. + <_> + 9 13 2 1 3. + <_> + + <_> + 16 11 1 6 -1. + <_> + 16 13 1 2 3. + <_> + + <_> + 3 11 1 6 -1. + <_> + 3 13 1 2 3. + <_> + + <_> + 4 4 14 12 -1. + <_> + 11 4 7 6 2. + <_> + 4 10 7 6 2. + <_> + + <_> + 5 4 3 3 -1. + <_> + 5 5 3 1 3. + <_> + + <_> + 12 3 3 3 -1. + <_> + 13 3 1 3 3. + <_> + + <_> + 6 6 8 3 -1. + <_> + 6 7 8 1 3. + <_> + + <_> + 12 3 3 3 -1. + <_> + 13 3 1 3 3. + <_> + + <_> + 3 1 4 10 -1. + <_> + 3 1 2 5 2. + <_> + 5 6 2 5 2. + <_> + + <_> + 5 7 10 2 -1. + <_> + 5 7 5 2 2. + <_> + + <_> + 8 7 3 3 -1. + <_> + 9 7 1 3 3. + <_> + + <_> + 15 12 2 3 -1. + <_> + 15 13 2 1 3. + <_> + + <_> + 7 8 3 4 -1. + <_> + 8 8 1 4 3. + <_> + + <_> + 13 4 1 12 -1. + <_> + 13 10 1 6 2. + <_> + + <_> + 4 5 12 12 -1. + <_> + 4 5 6 6 2. + <_> + 10 11 6 6 2. + <_> + + <_> + 7 14 7 3 -1. + <_> + 7 15 7 1 3. + <_> + + <_> + 3 12 2 3 -1. + <_> + 3 13 2 1 3. + <_> + + <_> + 3 2 14 2 -1. + <_> + 10 2 7 1 2. + <_> + 3 3 7 1 2. + <_> + + <_> + 0 1 3 10 -1. + <_> + 1 1 1 10 3. + <_> + + <_> + 9 0 6 5 -1. + <_> + 11 0 2 5 3. + <_> + + <_> + 5 7 6 2 -1. + <_> + 8 7 3 2 2. + <_> + + <_> + 7 1 6 10 -1. + <_> + 7 6 6 5 2. + <_> + + <_> + 1 1 18 3 -1. + <_> + 7 1 6 3 3. + <_> + + <_> + 16 3 3 6 -1. + <_> + 16 5 3 2 3. + <_> + + <_> + 6 3 7 6 -1. + <_> + 6 6 7 3 2. + <_> + + <_> + 4 7 12 2 -1. + <_> + 8 7 4 2 3. + <_> + + <_> + 0 4 17 10 -1. + <_> + 0 9 17 5 2. + <_> + + <_> + 3 4 15 16 -1. + <_> + 3 12 15 8 2. + <_> + + <_> + 7 15 6 4 -1. + <_> + 7 17 6 2 2. + <_> + + <_> + 15 2 4 9 -1. + <_> + 15 2 2 9 2. + <_> + + <_> + 2 3 3 2 -1. + <_> + 2 4 3 1 2. + <_> + + <_> + 13 6 7 9 -1. + <_> + 13 9 7 3 3. + <_> + + <_> + 8 11 4 3 -1. + <_> + 8 12 4 1 3. + <_> + + <_> + 0 2 20 6 -1. + <_> + 10 2 10 3 2. + <_> + 0 5 10 3 2. + <_> + + <_> + 3 2 6 10 -1. + <_> + 3 2 3 5 2. + <_> + 6 7 3 5 2. + <_> + + <_> + 13 10 3 4 -1. + <_> + 13 12 3 2 2. + <_> + + <_> + 4 10 3 4 -1. + <_> + 4 12 3 2 2. + <_> + + <_> + 7 5 6 3 -1. + <_> + 9 5 2 3 3. + <_> + + <_> + 7 6 6 8 -1. + <_> + 7 10 6 4 2. + <_> + + <_> + 0 11 20 6 -1. + <_> + 0 14 20 3 2. + <_> + + <_> + 4 13 4 6 -1. + <_> + 4 13 2 3 2. + <_> + 6 16 2 3 2. + <_> + + <_> + 6 0 8 12 -1. + <_> + 10 0 4 6 2. + <_> + 6 6 4 6 2. + <_> + + <_> + 2 0 15 2 -1. + <_> + 2 1 15 1 2. + <_> + + <_> + 9 12 2 3 -1. + <_> + 9 13 2 1 3. + <_> + + <_> + 3 12 1 2 -1. + <_> + 3 13 1 1 2. + <_> + + <_> + 9 11 2 3 -1. + <_> + 9 12 2 1 3. + <_> + + <_> + 7 3 3 1 -1. + <_> + 8 3 1 1 3. + <_> + + <_> + 17 7 3 6 -1. + <_> + 17 9 3 2 3. + <_> + + <_> + 7 2 3 2 -1. + <_> + 8 2 1 2 3. + <_> + + <_> + 11 4 5 3 -1. + <_> + 11 5 5 1 3. + <_> + + <_> + 4 4 5 3 -1. + <_> + 4 5 5 1 3. + <_> + + <_> + 19 3 1 2 -1. + <_> + 19 4 1 1 2. + <_> + + <_> + 5 5 4 3 -1. + <_> + 5 6 4 1 3. + <_> + + <_> + 17 7 3 6 -1. + <_> + 17 9 3 2 3. + <_> + + <_> + 0 7 3 6 -1. + <_> + 0 9 3 2 3. + <_> + + <_> + 14 2 6 9 -1. + <_> + 14 5 6 3 3. + <_> + + <_> + 0 4 5 6 -1. + <_> + 0 6 5 2 3. + <_> + + <_> + 10 5 6 2 -1. + <_> + 12 5 2 2 3. + <_> + + <_> + 4 5 6 2 -1. + <_> + 6 5 2 2 3. + <_> + + <_> + 8 1 4 6 -1. + <_> + 8 3 4 2 3. + <_> + + <_> + 0 2 3 6 -1. + <_> + 0 4 3 2 3. + <_> + + <_> + 6 6 8 3 -1. + <_> + 6 7 8 1 3. + <_> + + <_> + 0 1 5 9 -1. + <_> + 0 4 5 3 3. + <_> + + <_> + 16 0 4 15 -1. + <_> + 16 0 2 15 2. + <_> + + <_> + 1 10 3 2 -1. + <_> + 1 11 3 1 2. + <_> + + <_> + 14 4 1 10 -1. + <_> + 14 9 1 5 2. + <_> + + <_> + 0 1 4 12 -1. + <_> + 2 1 2 12 2. + <_> + + <_> + 11 11 4 2 -1. + <_> + 11 11 2 2 2. + <_> + + <_> + 5 11 4 2 -1. + <_> + 7 11 2 2 2. + <_> + + <_> + 3 8 15 5 -1. + <_> + 8 8 5 5 3. + <_> + + <_> + 0 0 6 10 -1. + <_> + 3 0 3 10 2. + <_> + + <_> + 11 4 3 2 -1. + <_> + 12 4 1 2 3. + <_> + + <_> + 8 12 3 8 -1. + <_> + 8 16 3 4 2. + <_> + + <_> + 8 14 5 3 -1. + <_> + 8 15 5 1 3. + <_> + + <_> + 7 14 4 3 -1. + <_> + 7 15 4 1 3. + <_> + + <_> + 11 4 3 2 -1. + <_> + 12 4 1 2 3. + <_> + + <_> + 3 15 14 4 -1. + <_> + 3 15 7 2 2. + <_> + 10 17 7 2 2. + <_> + + <_> + 2 2 16 4 -1. + <_> + 10 2 8 2 2. + <_> + 2 4 8 2 2. + <_> + + <_> + 0 8 6 12 -1. + <_> + 3 8 3 12 2. + <_> + + <_> + 5 7 10 2 -1. + <_> + 5 7 5 2 2. + <_> + + <_> + 9 7 2 5 -1. + <_> + 10 7 1 5 2. + <_> + + <_> + 13 7 6 4 -1. + <_> + 16 7 3 2 2. + <_> + 13 9 3 2 2. + <_> + + <_> + 0 13 8 2 -1. + <_> + 0 14 8 1 2. + <_> + + <_> + 13 7 6 4 -1. + <_> + 16 7 3 2 2. + <_> + 13 9 3 2 2. + <_> + + <_> + 1 7 6 4 -1. + <_> + 1 7 3 2 2. + <_> + 4 9 3 2 2. + <_> + + <_> + 12 6 1 12 -1. + <_> + 12 12 1 6 2. + <_> + + <_> + 9 5 2 6 -1. + <_> + 10 5 1 6 2. + <_> + + <_> + 14 12 2 3 -1. + <_> + 14 13 2 1 3. + <_> + + <_> + 4 12 2 3 -1. + <_> + 4 13 2 1 3. + <_> + + <_> + 8 12 4 3 -1. + <_> + 8 13 4 1 3. + <_> + + <_> + 5 2 2 4 -1. + <_> + 5 2 1 2 2. + <_> + 6 4 1 2 2. + <_> + + <_> + 5 5 11 3 -1. + <_> + 5 6 11 1 3. + <_> + + <_> + 7 6 4 12 -1. + <_> + 7 12 4 6 2. + <_> + + <_> + 12 13 8 5 -1. + <_> + 12 13 4 5 2. + <_> + + <_> + 7 6 1 12 -1. + <_> + 7 12 1 6 2. + <_> + + <_> + 1 2 6 3 -1. + <_> + 4 2 3 3 2. + <_> + + <_> + 9 5 6 10 -1. + <_> + 12 5 3 5 2. + <_> + 9 10 3 5 2. + <_> + + <_> + 5 5 8 12 -1. + <_> + 5 5 4 6 2. + <_> + 9 11 4 6 2. + <_> + + <_> + 0 7 20 6 -1. + <_> + 0 9 20 2 3. + <_> + + <_> + 4 2 2 2 -1. + <_> + 4 3 2 1 2. + <_> + + <_> + 4 18 12 2 -1. + <_> + 8 18 4 2 3. + <_> + + <_> + 7 4 4 16 -1. + <_> + 7 12 4 8 2. + <_> + + <_> + 7 6 7 8 -1. + <_> + 7 10 7 4 2. + <_> + + <_> + 6 3 3 1 -1. + <_> + 7 3 1 1 3. + <_> + + <_> + 11 15 2 4 -1. + <_> + 11 17 2 2 2. + <_> + + <_> + 3 5 4 8 -1. + <_> + 3 9 4 4 2. + <_> + + <_> + 7 1 6 12 -1. + <_> + 7 7 6 6 2. + <_> + + <_> + 4 6 6 2 -1. + <_> + 6 6 2 2 3. + <_> + + <_> + 16 4 4 6 -1. + <_> + 16 6 4 2 3. + <_> + + <_> + 3 3 5 2 -1. + <_> + 3 4 5 1 2. + <_> + + <_> + 9 11 2 3 -1. + <_> + 9 12 2 1 3. + <_> + + <_> + 2 16 4 2 -1. + <_> + 2 17 4 1 2. + <_> + + <_> + 7 13 6 6 -1. + <_> + 10 13 3 3 2. + <_> + 7 16 3 3 2. + <_> + + <_> + 7 0 3 4 -1. + <_> + 8 0 1 4 3. + <_> + + <_> + 8 15 4 3 -1. + <_> + 8 16 4 1 3. + <_> + + <_> + 0 4 4 6 -1. + <_> + 0 6 4 2 3. + <_> + + <_> + 5 6 12 3 -1. + <_> + 9 6 4 3 3. + <_> + + <_> + 7 6 6 14 -1. + <_> + 9 6 2 14 3. + <_> + + <_> + 9 7 3 3 -1. + <_> + 10 7 1 3 3. + <_> + + <_> + 6 12 2 4 -1. + <_> + 6 14 2 2 2. + <_> + + <_> + 10 12 7 6 -1. + <_> + 10 14 7 2 3. + <_> + + <_> + 1 0 15 2 -1. + <_> + 1 1 15 1 2. + <_> + + <_> + 14 0 6 6 -1. + <_> + 14 0 3 6 2. + <_> + + <_> + 5 3 3 1 -1. + <_> + 6 3 1 1 3. + <_> + + <_> + 14 0 6 6 -1. + <_> + 14 0 3 6 2. + <_> + + <_> + 0 3 20 10 -1. + <_> + 0 8 20 5 2. + <_> + + <_> + 14 0 6 6 -1. + <_> + 14 0 3 6 2. + <_> + + <_> + 0 0 6 6 -1. + <_> + 3 0 3 6 2. + <_> + + <_> + 19 15 1 2 -1. + <_> + 19 16 1 1 2. + <_> + + <_> + 0 2 4 8 -1. + <_> + 2 2 2 8 2. + <_> + + <_> + 2 1 18 4 -1. + <_> + 11 1 9 2 2. + <_> + 2 3 9 2 2. + <_> + + <_> + 8 12 1 2 -1. + <_> + 8 13 1 1 2. + <_> + + <_> + 5 2 10 6 -1. + <_> + 10 2 5 3 2. + <_> + 5 5 5 3 2. + <_> + + <_> + 9 7 2 4 -1. + <_> + 10 7 1 4 2. + <_> + + <_> + 9 7 3 3 -1. + <_> + 10 7 1 3 3. + <_> + + <_> + 4 5 12 8 -1. + <_> + 8 5 4 8 3. + <_> + + <_> + 15 15 4 3 -1. + <_> + 15 16 4 1 3. + <_> + + <_> + 8 18 3 1 -1. + <_> + 9 18 1 1 3. + <_> + + <_> + 9 13 4 3 -1. + <_> + 9 14 4 1 3. + <_> + + <_> + 7 13 4 3 -1. + <_> + 7 14 4 1 3. + <_> + + <_> + 19 15 1 2 -1. + <_> + 19 16 1 1 2. + <_> + + <_> + 0 15 8 4 -1. + <_> + 0 17 8 2 2. + <_> + + <_> + 9 3 6 4 -1. + <_> + 11 3 2 4 3. + <_> + + <_> + 8 14 4 3 -1. + <_> + 8 15 4 1 3. + <_> + + <_> + 3 14 14 6 -1. + <_> + 3 16 14 2 3. + <_> + + <_> + 6 3 6 6 -1. + <_> + 6 6 6 3 2. + <_> + + <_> + 5 11 10 6 -1. + <_> + 5 14 10 3 2. + <_> + + <_> + 3 10 3 4 -1. + <_> + 4 10 1 4 3. + <_> + + <_> + 13 9 2 2 -1. + <_> + 13 9 1 2 2. + <_> + + <_> + 5 3 6 4 -1. + <_> + 7 3 2 4 3. + <_> + + <_> + 9 7 3 3 -1. + <_> + 10 7 1 3 3. + <_> + + <_> + 2 12 2 3 -1. + <_> + 2 13 2 1 3. + <_> + + <_> + 9 8 3 12 -1. + <_> + 9 12 3 4 3. + <_> + + <_> + 3 14 4 6 -1. + <_> + 3 14 2 3 2. + <_> + 5 17 2 3 2. + <_> + + <_> + 16 15 2 2 -1. + <_> + 16 16 2 1 2. + <_> + + <_> + 2 15 2 2 -1. + <_> + 2 16 2 1 2. + <_> + + <_> + 8 12 4 3 -1. + <_> + 8 13 4 1 3. + <_> + + <_> + 0 7 20 1 -1. + <_> + 10 7 10 1 2. + <_> + + <_> + 7 6 8 3 -1. + <_> + 7 6 4 3 2. + <_> + + <_> + 5 7 8 2 -1. + <_> + 9 7 4 2 2. + <_> + + <_> + 9 7 3 5 -1. + <_> + 10 7 1 5 3. + <_> + + <_> + 8 7 3 5 -1. + <_> + 9 7 1 5 3. + <_> + + <_> + 11 1 3 5 -1. + <_> + 12 1 1 5 3. + <_> + + <_> + 6 2 3 6 -1. + <_> + 7 2 1 6 3. + <_> + + <_> + 14 14 6 5 -1. + <_> + 14 14 3 5 2. + <_> + + <_> + 9 8 2 2 -1. + <_> + 9 9 2 1 2. + <_> + + <_> + 10 7 1 3 -1. + <_> + 10 8 1 1 3. + <_> + + <_> + 6 6 2 2 -1. + <_> + 6 6 1 1 2. + <_> + 7 7 1 1 2. + <_> + + <_> + 2 11 18 4 -1. + <_> + 11 11 9 2 2. + <_> + 2 13 9 2 2. + <_> + + <_> + 6 6 2 2 -1. + <_> + 6 6 1 1 2. + <_> + 7 7 1 1 2. + <_> + + <_> + 0 15 20 2 -1. + <_> + 0 16 20 1 2. + <_> + + <_> + 4 14 2 3 -1. + <_> + 4 15 2 1 3. + <_> + + <_> + 8 14 4 3 -1. + <_> + 8 15 4 1 3. + <_> + + <_> + 8 7 2 3 -1. + <_> + 8 8 2 1 3. + <_> + + <_> + 9 10 2 3 -1. + <_> + 9 11 2 1 3. + <_> + + <_> + 5 4 10 4 -1. + <_> + 5 6 10 2 2. + <_> + + <_> + 9 7 6 4 -1. + <_> + 12 7 3 2 2. + <_> + 9 9 3 2 2. + <_> + + <_> + 4 7 3 6 -1. + <_> + 4 9 3 2 3. + <_> + + <_> + 11 15 4 4 -1. + <_> + 13 15 2 2 2. + <_> + 11 17 2 2 2. + <_> + + <_> + 7 8 4 2 -1. + <_> + 7 9 4 1 2. + <_> + + <_> + 13 1 4 3 -1. + <_> + 13 1 2 3 2. + <_> + + <_> + 5 15 4 4 -1. + <_> + 5 15 2 2 2. + <_> + 7 17 2 2 2. + <_> + + <_> + 9 5 4 7 -1. + <_> + 9 5 2 7 2. + <_> + + <_> + 5 6 8 3 -1. + <_> + 9 6 4 3 2. + <_> + + <_> + 9 9 2 2 -1. + <_> + 9 10 2 1 2. + <_> + + <_> + 7 15 5 3 -1. + <_> + 7 16 5 1 3. + <_> + + <_> + 11 10 4 3 -1. + <_> + 11 10 2 3 2. + <_> + + <_> + 6 9 8 10 -1. + <_> + 6 14 8 5 2. + <_> + + <_> + 10 11 6 2 -1. + <_> + 10 11 3 2 2. + <_> + + <_> + 4 11 6 2 -1. + <_> + 7 11 3 2 2. + <_> + + <_> + 11 3 8 1 -1. + <_> + 11 3 4 1 2. + <_> + + <_> + 6 3 3 2 -1. + <_> + 7 3 1 2 3. + <_> + + <_> + 14 5 6 5 -1. + <_> + 14 5 3 5 2. + <_> + + <_> + 7 5 2 12 -1. + <_> + 7 11 2 6 2. + <_> + + <_> + 8 11 4 3 -1. + <_> + 8 12 4 1 3. + <_> + + <_> + 4 1 2 3 -1. + <_> + 5 1 1 3 2. + <_> + + <_> + 18 3 2 6 -1. + <_> + 18 5 2 2 3. + <_> + + <_> + 0 3 2 6 -1. + <_> + 0 5 2 2 3. + <_> + + <_> + 9 12 2 3 -1. + <_> + 9 13 2 1 3. + <_> + + <_> + 7 13 4 3 -1. + <_> + 7 14 4 1 3. + <_> + + <_> + 18 0 2 6 -1. + <_> + 18 2 2 2 3. + <_> + + <_> + 0 0 2 6 -1. + <_> + 0 2 2 2 3. + <_> + + <_> + 8 14 6 3 -1. + <_> + 8 15 6 1 3. + <_> + + <_> + 7 4 2 4 -1. + <_> + 8 4 1 4 2. + <_> + + <_> + 8 5 4 6 -1. + <_> + 8 7 4 2 3. + <_> + + <_> + 6 4 2 2 -1. + <_> + 7 4 1 2 2. + <_> + + <_> + 3 14 14 4 -1. + <_> + 10 14 7 2 2. + <_> + 3 16 7 2 2. + <_> + + <_> + 6 15 6 2 -1. + <_> + 6 15 3 1 2. + <_> + 9 16 3 1 2. + <_> + + <_> + 14 15 6 2 -1. + <_> + 14 16 6 1 2. + <_> + + <_> + 2 12 12 8 -1. + <_> + 2 16 12 4 2. + <_> + + <_> + 7 7 7 2 -1. + <_> + 7 8 7 1 2. + <_> + + <_> + 0 2 18 2 -1. + <_> + 0 3 18 1 2. + <_> + + <_> + 9 6 2 5 -1. + <_> + 9 6 1 5 2. + <_> + + <_> + 7 5 3 8 -1. + <_> + 8 5 1 8 3. + <_> + + <_> + 9 6 3 4 -1. + <_> + 10 6 1 4 3. + <_> + + <_> + 4 13 3 2 -1. + <_> + 4 14 3 1 2. + <_> + + <_> + 9 4 6 3 -1. + <_> + 11 4 2 3 3. + <_> + + <_> + 5 4 6 3 -1. + <_> + 7 4 2 3 3. + <_> + + <_> + 14 11 5 2 -1. + <_> + 14 12 5 1 2. + <_> + + <_> + 1 2 6 9 -1. + <_> + 3 2 2 9 3. + <_> + + <_> + 14 6 6 13 -1. + <_> + 14 6 3 13 2. + <_> + + <_> + 3 6 14 8 -1. + <_> + 3 6 7 4 2. + <_> + 10 10 7 4 2. + <_> + + <_> + 16 0 4 11 -1. + <_> + 16 0 2 11 2. + <_> + + <_> + 3 4 12 12 -1. + <_> + 3 4 6 6 2. + <_> + 9 10 6 6 2. + <_> + + <_> + 11 4 5 3 -1. + <_> + 11 5 5 1 3. + <_> + + <_> + 4 11 4 2 -1. + <_> + 4 12 4 1 2. + <_> + + <_> + 10 7 2 2 -1. + <_> + 10 7 1 2 2. + <_> + + <_> + 8 7 2 2 -1. + <_> + 9 7 1 2 2. + <_> + + <_> + 9 17 3 2 -1. + <_> + 10 17 1 2 3. + <_> + + <_> + 5 6 3 3 -1. + <_> + 5 7 3 1 3. + <_> + + <_> + 10 0 3 3 -1. + <_> + 11 0 1 3 3. + <_> + + <_> + 5 6 6 2 -1. + <_> + 5 6 3 1 2. + <_> + 8 7 3 1 2. + <_> + + <_> + 12 16 4 3 -1. + <_> + 12 17 4 1 3. + <_> + + <_> + 3 12 3 2 -1. + <_> + 3 13 3 1 2. + <_> + + <_> + 9 12 3 2 -1. + <_> + 9 13 3 1 2. + <_> + + <_> + 1 11 16 4 -1. + <_> + 1 11 8 2 2. + <_> + 9 13 8 2 2. + <_> + + <_> + 12 4 3 3 -1. + <_> + 12 5 3 1 3. + <_> + + <_> + 4 4 5 3 -1. + <_> + 4 5 5 1 3. + <_> + + <_> + 12 16 4 3 -1. + <_> + 12 17 4 1 3. + <_> + + <_> + 5 4 3 3 -1. + <_> + 5 5 3 1 3. + <_> + + <_> + 9 0 2 2 -1. + <_> + 9 1 2 1 2. + <_> + + <_> + 8 9 4 2 -1. + <_> + 8 10 4 1 2. + <_> + + <_> + 8 8 4 3 -1. + <_> + 8 9 4 1 3. + <_> + + <_> + 0 13 6 3 -1. + <_> + 2 13 2 3 3. + <_> + + <_> + 16 14 3 2 -1. + <_> + 16 15 3 1 2. + <_> + + <_> + 1 18 18 2 -1. + <_> + 7 18 6 2 3. + <_> + + <_> + 16 14 3 2 -1. + <_> + 16 15 3 1 2. + <_> + + <_> + 1 14 3 2 -1. + <_> + 1 15 3 1 2. + <_> + + <_> + 7 14 6 3 -1. + <_> + 7 15 6 1 3. + <_> + + <_> + 5 14 8 3 -1. + <_> + 5 15 8 1 3. + <_> + + <_> + 10 6 4 14 -1. + <_> + 10 6 2 14 2. + <_> + + <_> + 6 6 4 14 -1. + <_> + 8 6 2 14 2. + <_> + + <_> + 13 5 2 3 -1. + <_> + 13 6 2 1 3. + <_> + + <_> + 7 16 6 1 -1. + <_> + 9 16 2 1 3. + <_> + + <_> + 9 12 3 3 -1. + <_> + 9 13 3 1 3. + <_> + + <_> + 7 0 3 3 -1. + <_> + 8 0 1 3 3. + <_> + + <_> + 4 0 16 18 -1. + <_> + 4 9 16 9 2. + <_> + + <_> + 1 1 16 14 -1. + <_> + 1 8 16 7 2. + <_> + + <_> + 3 9 15 4 -1. + <_> + 8 9 5 4 3. + <_> + + <_> + 6 12 7 3 -1. + <_> + 6 13 7 1 3. + <_> + + <_> + 14 15 2 3 -1. + <_> + 14 16 2 1 3. + <_> + + <_> + 2 3 16 14 -1. + <_> + 2 3 8 7 2. + <_> + 10 10 8 7 2. + <_> + + <_> + 16 2 4 18 -1. + <_> + 18 2 2 9 2. + <_> + 16 11 2 9 2. + <_> + + <_> + 4 15 2 3 -1. + <_> + 4 16 2 1 3. + <_> + + <_> + 16 2 4 18 -1. + <_> + 18 2 2 9 2. + <_> + 16 11 2 9 2. + <_> + + <_> + 1 1 8 3 -1. + <_> + 1 2 8 1 3. + <_> + + <_> + 8 11 4 3 -1. + <_> + 8 12 4 1 3. + <_> + + <_> + 5 11 5 9 -1. + <_> + 5 14 5 3 3. + <_> + + <_> + 16 0 4 11 -1. + <_> + 16 0 2 11 2. + <_> + + <_> + 7 0 6 1 -1. + <_> + 9 0 2 1 3. + <_> + + <_> + 16 3 3 7 -1. + <_> + 17 3 1 7 3. + <_> + + <_> + 1 3 3 7 -1. + <_> + 2 3 1 7 3. + <_> + + <_> + 7 8 6 12 -1. + <_> + 7 12 6 4 3. + <_> + + <_> + 0 0 4 11 -1. + <_> + 2 0 2 11 2. + <_> + + <_> + 14 0 6 20 -1. + <_> + 14 0 3 20 2. + <_> + + <_> + 0 3 1 2 -1. + <_> + 0 4 1 1 2. + <_> + + <_> + 5 5 10 8 -1. + <_> + 10 5 5 4 2. + <_> + 5 9 5 4 2. + <_> + + <_> + 4 7 12 4 -1. + <_> + 4 7 6 2 2. + <_> + 10 9 6 2 2. + <_> + + <_> + 2 1 6 4 -1. + <_> + 5 1 3 4 2. + <_> + + <_> + 9 7 6 4 -1. + <_> + 12 7 3 2 2. + <_> + 9 9 3 2 2. + <_> + + <_> + 5 6 2 6 -1. + <_> + 5 9 2 3 2. + <_> + + <_> + 9 16 6 4 -1. + <_> + 12 16 3 2 2. + <_> + 9 18 3 2 2. + <_> + + <_> + 9 4 2 12 -1. + <_> + 9 10 2 6 2. + <_> + + <_> + 7 1 6 18 -1. + <_> + 9 1 2 18 3. + <_> + + <_> + 4 12 12 2 -1. + <_> + 8 12 4 2 3. + <_> + + <_> + 8 8 6 2 -1. + <_> + 8 9 6 1 2. + <_> + + <_> + 8 0 3 6 -1. + <_> + 9 0 1 6 3. + <_> + + <_> + 11 18 3 2 -1. + <_> + 11 19 3 1 2. + <_> + + <_> + 1 1 17 4 -1. + <_> + 1 3 17 2 2. + <_> + + <_> + 11 8 4 12 -1. + <_> + 11 8 2 12 2. + <_> + + <_> + 8 14 4 3 -1. + <_> + 8 15 4 1 3. + <_> + + <_> + 12 3 2 17 -1. + <_> + 12 3 1 17 2. + <_> + + <_> + 4 7 6 1 -1. + <_> + 6 7 2 1 3. + <_> + + <_> + 18 3 2 3 -1. + <_> + 18 4 2 1 3. + <_> + + <_> + 8 4 3 4 -1. + <_> + 8 6 3 2 2. + <_> + + <_> + 4 5 12 10 -1. + <_> + 4 10 12 5 2. + <_> + + <_> + 5 18 4 2 -1. + <_> + 7 18 2 2 2. + <_> + + <_> + 17 2 3 6 -1. + <_> + 17 4 3 2 3. + <_> + + <_> + 7 7 6 6 -1. + <_> + 9 7 2 6 3. + <_> + + <_> + 17 2 3 6 -1. + <_> + 17 4 3 2 3. + <_> + + <_> + 8 0 3 4 -1. + <_> + 9 0 1 4 3. + <_> + + <_> + 9 14 2 3 -1. + <_> + 9 15 2 1 3. + <_> + + <_> + 0 12 6 3 -1. + <_> + 0 13 6 1 3. + <_> + + <_> + 8 14 4 3 -1. + <_> + 8 15 4 1 3. + <_> + + <_> + 3 12 2 3 -1. + <_> + 3 13 2 1 3. + <_> + + <_> + 5 6 12 7 -1. + <_> + 9 6 4 7 3. + <_> + + <_> + 0 2 3 6 -1. + <_> + 0 4 3 2 3. + <_> + + <_> + 14 6 1 3 -1. + <_> + 14 7 1 1 3. + <_> + + <_> + 2 0 3 14 -1. + <_> + 3 0 1 14 3. + <_> + + <_> + 12 14 5 6 -1. + <_> + 12 16 5 2 3. + <_> + + <_> + 4 14 5 6 -1. + <_> + 4 16 5 2 3. + <_> + + <_> + 11 10 2 2 -1. + <_> + 12 10 1 1 2. + <_> + 11 11 1 1 2. + <_> + + <_> + 5 0 3 14 -1. + <_> + 6 0 1 14 3. + <_> + + <_> + 10 15 2 3 -1. + <_> + 10 16 2 1 3. + <_> + + <_> + 0 2 2 3 -1. + <_> + 0 3 2 1 3. + <_> + + <_> + 5 11 12 6 -1. + <_> + 5 14 12 3 2. + <_> + + <_> + 6 11 3 9 -1. + <_> + 6 14 3 3 3. + <_> + + <_> + 11 10 2 2 -1. + <_> + 12 10 1 1 2. + <_> + 11 11 1 1 2. + <_> + + <_> + 5 6 1 3 -1. + <_> + 5 7 1 1 3. + <_> + + <_> + 4 9 13 3 -1. + <_> + 4 10 13 1 3. + <_> + + <_> + 1 7 15 6 -1. + <_> + 6 7 5 6 3. + <_> + + <_> + 4 5 12 6 -1. + <_> + 8 5 4 6 3. + <_> + + <_> + 8 10 4 3 -1. + <_> + 8 11 4 1 3. + <_> + + <_> + 15 14 1 3 -1. + <_> + 15 15 1 1 3. + <_> + + <_> + 1 11 5 3 -1. + <_> + 1 12 5 1 3. + <_> + + <_> + 7 1 7 12 -1. + <_> + 7 7 7 6 2. + <_> + + <_> + 0 1 6 10 -1. + <_> + 0 1 3 5 2. + <_> + 3 6 3 5 2. + <_> + + <_> + 16 1 4 3 -1. + <_> + 16 2 4 1 3. + <_> + + <_> + 5 5 2 3 -1. + <_> + 5 6 2 1 3. + <_> + + <_> + 12 2 3 5 -1. + <_> + 13 2 1 5 3. + <_> + + <_> + 0 3 4 6 -1. + <_> + 0 5 4 2 3. + <_> + + <_> + 8 12 4 2 -1. + <_> + 8 13 4 1 2. + <_> + + <_> + 8 18 3 1 -1. + <_> + 9 18 1 1 3. + <_> + + <_> + 11 10 2 2 -1. + <_> + 12 10 1 1 2. + <_> + 11 11 1 1 2. + <_> + + <_> + 7 10 2 2 -1. + <_> + 7 10 1 1 2. + <_> + 8 11 1 1 2. + <_> + + <_> + 11 11 4 4 -1. + <_> + 11 13 4 2 2. + <_> + + <_> + 8 12 3 8 -1. + <_> + 9 12 1 8 3. + <_> + + <_> + 13 0 6 3 -1. + <_> + 13 1 6 1 3. + <_> + + <_> + 8 8 3 4 -1. + <_> + 9 8 1 4 3. + <_> + + <_> + 5 7 10 10 -1. + <_> + 10 7 5 5 2. + <_> + 5 12 5 5 2. + <_> + + <_> + 3 18 8 2 -1. + <_> + 3 18 4 1 2. + <_> + 7 19 4 1 2. + <_> + + <_> + 10 2 6 8 -1. + <_> + 12 2 2 8 3. + <_> + + <_> + 4 2 6 8 -1. + <_> + 6 2 2 8 3. + <_> + + <_> + 11 0 3 7 -1. + <_> + 12 0 1 7 3. + <_> + + <_> + 7 11 2 1 -1. + <_> + 8 11 1 1 2. + <_> + + <_> + 15 14 1 3 -1. + <_> + 15 15 1 1 3. + <_> + + <_> + 7 15 2 2 -1. + <_> + 7 15 1 1 2. + <_> + 8 16 1 1 2. + <_> + + <_> + 15 14 1 3 -1. + <_> + 15 15 1 1 3. + <_> + + <_> + 6 0 3 7 -1. + <_> + 7 0 1 7 3. + <_> + + <_> + 18 1 2 7 -1. + <_> + 18 1 1 7 2. + <_> + + <_> + 2 0 8 20 -1. + <_> + 2 10 8 10 2. + <_> + + <_> + 3 0 15 6 -1. + <_> + 3 2 15 2 3. + <_> + + <_> + 4 3 12 2 -1. + <_> + 4 4 12 1 2. + <_> + + <_> + 16 0 4 5 -1. + <_> + 16 0 2 5 2. + <_> + + <_> + 7 0 3 4 -1. + <_> + 8 0 1 4 3. + <_> + + <_> + 16 0 4 5 -1. + <_> + 16 0 2 5 2. + <_> + + <_> + 1 7 6 13 -1. + <_> + 3 7 2 13 3. + <_> + + <_> + 16 0 4 5 -1. + <_> + 16 0 2 5 2. + <_> + + <_> + 0 0 4 5 -1. + <_> + 2 0 2 5 2. + <_> + + <_> + 14 12 3 6 -1. + <_> + 14 14 3 2 3. + <_> + + <_> + 3 12 3 6 -1. + <_> + 3 14 3 2 3. + <_> + + <_> + 16 1 4 3 -1. + <_> + 16 2 4 1 3. + <_> + + <_> + 8 7 2 10 -1. + <_> + 8 7 1 5 2. + <_> + 9 12 1 5 2. + <_> + + <_> + 11 11 4 4 -1. + <_> + 11 13 4 2 2. + <_> + + <_> + 0 1 4 3 -1. + <_> + 0 2 4 1 3. + <_> + + <_> + 13 4 1 3 -1. + <_> + 13 5 1 1 3. + <_> + + <_> + 7 15 3 5 -1. + <_> + 8 15 1 5 3. + <_> + + <_> + 9 7 3 5 -1. + <_> + 10 7 1 5 3. + <_> + + <_> + 8 7 3 5 -1. + <_> + 9 7 1 5 3. + <_> + + <_> + 10 6 4 14 -1. + <_> + 10 6 2 14 2. + <_> + + <_> + 0 5 5 6 -1. + <_> + 0 7 5 2 3. + <_> + + <_> + 9 5 6 4 -1. + <_> + 9 5 3 4 2. + <_> + + <_> + 0 0 18 10 -1. + <_> + 6 0 6 10 3. + <_> + + <_> + 10 6 4 14 -1. + <_> + 10 6 2 14 2. + <_> + + <_> + 6 6 4 14 -1. + <_> + 8 6 2 14 2. + <_> + + <_> + 13 4 1 3 -1. + <_> + 13 5 1 1 3. + <_> + + <_> + 5 1 2 3 -1. + <_> + 6 1 1 3 2. + <_> + + <_> + 18 1 2 18 -1. + <_> + 19 1 1 9 2. + <_> + 18 10 1 9 2. + <_> + + <_> + 2 1 4 3 -1. + <_> + 2 2 4 1 3. + <_> + + <_> + 18 1 2 18 -1. + <_> + 19 1 1 9 2. + <_> + 18 10 1 9 2. + <_> + + <_> + 1 14 4 6 -1. + <_> + 1 14 2 3 2. + <_> + 3 17 2 3 2. + <_> + + <_> + 10 11 7 6 -1. + <_> + 10 13 7 2 3. + <_> + + <_> + 0 10 6 10 -1. + <_> + 0 10 3 5 2. + <_> + 3 15 3 5 2. + <_> + + <_> + 11 0 3 4 -1. + <_> + 12 0 1 4 3. + <_> + + <_> + 5 10 5 6 -1. + <_> + 5 13 5 3 2. + <_> + + <_> + 14 6 1 8 -1. + <_> + 14 10 1 4 2. + <_> + + <_> + 1 7 18 6 -1. + <_> + 1 7 9 3 2. + <_> + 10 10 9 3 2. + <_> + + <_> + 9 7 2 2 -1. + <_> + 9 7 1 2 2. + <_> + + <_> + 5 9 4 5 -1. + <_> + 7 9 2 5 2. + <_> + + <_> + 7 6 6 3 -1. + <_> + 9 6 2 3 3. + <_> + + <_> + 1 0 18 4 -1. + <_> + 7 0 6 4 3. + <_> + + <_> + 7 15 2 4 -1. + <_> + 7 17 2 2 2. + <_> + + <_> + 1 0 19 9 -1. + <_> + 1 3 19 3 3. + <_> + + <_> + 3 7 3 6 -1. + <_> + 3 9 3 2 3. + <_> + + <_> + 13 7 4 4 -1. + <_> + 15 7 2 2 2. + <_> + 13 9 2 2 2. + <_> + + <_> + 3 7 4 4 -1. + <_> + 3 7 2 2 2. + <_> + 5 9 2 2 2. + <_> + + <_> + 9 6 10 8 -1. + <_> + 9 10 10 4 2. + <_> + + <_> + 3 8 14 12 -1. + <_> + 3 14 14 6 2. + <_> + + <_> + 6 5 10 12 -1. + <_> + 11 5 5 6 2. + <_> + 6 11 5 6 2. + <_> + + <_> + 9 11 2 3 -1. + <_> + 9 12 2 1 3. + <_> + + <_> + 9 5 6 5 -1. + <_> + 9 5 3 5 2. + <_> + + <_> + 9 4 2 4 -1. + <_> + 9 6 2 2 2. + <_> + + <_> + 9 5 6 5 -1. + <_> + 9 5 3 5 2. + <_> + + <_> + 5 5 6 5 -1. + <_> + 8 5 3 5 2. + <_> + + <_> + 11 2 6 1 -1. + <_> + 13 2 2 1 3. + <_> + + <_> + 3 2 6 1 -1. + <_> + 5 2 2 1 3. + <_> + + <_> + 13 5 2 3 -1. + <_> + 13 6 2 1 3. + <_> + + <_> + 0 10 1 4 -1. + <_> + 0 12 1 2 2. + <_> + + <_> + 13 5 2 3 -1. + <_> + 13 6 2 1 3. + <_> + + <_> + 8 18 3 2 -1. + <_> + 9 18 1 2 3. + <_> + + <_> + 6 15 9 2 -1. + <_> + 6 16 9 1 2. + <_> + + <_> + 8 14 4 3 -1. + <_> + 8 15 4 1 3. + <_> + + <_> + 18 4 2 4 -1. + <_> + 18 6 2 2 2. + <_> + + <_> + 5 5 2 3 -1. + <_> + 5 6 2 1 3. + <_> + + <_> + 15 16 3 2 -1. + <_> + 15 17 3 1 2. + <_> + + <_> + 0 0 3 9 -1. + <_> + 0 3 3 3 3. + <_> + + <_> + 9 7 3 3 -1. + <_> + 9 8 3 1 3. + <_> + + <_> + 8 7 3 3 -1. + <_> + 8 8 3 1 3. + <_> + + <_> + 9 5 2 6 -1. + <_> + 9 5 1 6 2. + <_> + + <_> + 8 6 3 4 -1. + <_> + 9 6 1 4 3. + <_> + + <_> + 7 6 8 12 -1. + <_> + 11 6 4 6 2. + <_> + 7 12 4 6 2. + <_> + + <_> + 5 6 8 12 -1. + <_> + 5 6 4 6 2. + <_> + 9 12 4 6 2. + <_> + + <_> + 12 4 3 3 -1. + <_> + 12 5 3 1 3. + <_> + + <_> + 2 16 3 2 -1. + <_> + 2 17 3 1 2. + <_> + + <_> + 12 4 3 3 -1. + <_> + 12 5 3 1 3. + <_> + + <_> + 2 12 6 6 -1. + <_> + 2 14 6 2 3. + <_> + + <_> + 7 13 6 3 -1. + <_> + 7 14 6 1 3. + <_> + + <_> + 6 14 6 3 -1. + <_> + 6 15 6 1 3. + <_> + + <_> + 14 15 5 3 -1. + <_> + 14 16 5 1 3. + <_> + + <_> + 5 4 3 3 -1. + <_> + 5 5 3 1 3. + <_> + + <_> + 14 15 5 3 -1. + <_> + 14 16 5 1 3. + <_> + + <_> + 5 3 6 2 -1. + <_> + 7 3 2 2 3. + <_> + + <_> + 8 15 4 3 -1. + <_> + 8 16 4 1 3. + <_> + + <_> + 1 15 5 3 -1. + <_> + 1 16 5 1 3. + <_> + + <_> + 8 13 4 6 -1. + <_> + 10 13 2 3 2. + <_> + 8 16 2 3 2. + <_> + + <_> + 7 8 3 3 -1. + <_> + 8 8 1 3 3. + <_> + + <_> + 12 0 5 4 -1. + <_> + 12 2 5 2 2. + <_> + + <_> + 0 2 20 2 -1. + <_> + 0 2 10 1 2. + <_> + 10 3 10 1 2. + <_> + + <_> + 1 0 18 4 -1. + <_> + 7 0 6 4 3. + <_> + + <_> + 4 3 6 1 -1. + <_> + 6 3 2 1 3. + <_> + + <_> + 4 18 13 2 -1. + <_> + 4 19 13 1 2. + <_> + + <_> + 2 10 3 6 -1. + <_> + 2 12 3 2 3. + <_> + + <_> + 14 12 6 8 -1. + <_> + 17 12 3 4 2. + <_> + 14 16 3 4 2. + <_> + + <_> + 4 13 10 6 -1. + <_> + 4 13 5 3 2. + <_> + 9 16 5 3 2. + <_> + + <_> + 14 12 1 2 -1. + <_> + 14 13 1 1 2. + <_> + + <_> + 8 13 4 3 -1. + <_> + 8 14 4 1 3. + <_> + + <_> + 14 12 2 2 -1. + <_> + 14 13 2 1 2. + <_> + + <_> + 4 12 2 2 -1. + <_> + 4 13 2 1 2. + <_> + + <_> + 8 12 9 2 -1. + <_> + 8 13 9 1 2. + <_> + + <_> + 9 14 2 3 -1. + <_> + 9 15 2 1 3. + <_> + + <_> + 11 10 3 6 -1. + <_> + 11 13 3 3 2. + <_> + + <_> + 5 6 9 12 -1. + <_> + 5 12 9 6 2. + <_> + + <_> + 11 10 3 6 -1. + <_> + 11 13 3 3 2. + <_> + + <_> + 6 10 3 6 -1. + <_> + 6 13 3 3 2. + <_> + + <_> + 5 4 11 3 -1. + <_> + 5 5 11 1 3. + <_> + + <_> + 7 1 5 10 -1. + <_> + 7 6 5 5 2. + <_> + + <_> + 2 8 18 2 -1. + <_> + 2 9 18 1 2. + <_> + + <_> + 7 17 5 3 -1. + <_> + 7 18 5 1 3. + <_> + + <_> + 5 9 12 1 -1. + <_> + 9 9 4 1 3. + <_> + + <_> + 0 14 6 6 -1. + <_> + 0 14 3 3 2. + <_> + 3 17 3 3 2. + <_> + + <_> + 5 9 12 1 -1. + <_> + 9 9 4 1 3. + <_> + + <_> + 3 9 12 1 -1. + <_> + 7 9 4 1 3. + <_> + + <_> + 14 10 6 7 -1. + <_> + 14 10 3 7 2. + <_> + + <_> + 1 0 16 2 -1. + <_> + 1 1 16 1 2. + <_> + + <_> + 10 9 10 9 -1. + <_> + 10 12 10 3 3. + <_> + + <_> + 0 1 10 2 -1. + <_> + 5 1 5 2 2. + <_> + + <_> + 17 3 2 3 -1. + <_> + 17 4 2 1 3. + <_> + + <_> + 1 3 2 3 -1. + <_> + 1 4 2 1 3. + <_> + + <_> + 9 7 3 6 -1. + <_> + 10 7 1 6 3. + <_> + + <_> + 6 5 4 3 -1. + <_> + 8 5 2 3 2. + <_> + + <_> + 7 5 6 6 -1. + <_> + 9 5 2 6 3. + <_> + + <_> + 3 4 12 12 -1. + <_> + 3 4 6 6 2. + <_> + 9 10 6 6 2. + <_> + + <_> + 9 2 6 15 -1. + <_> + 11 2 2 15 3. + <_> + + <_> + 2 2 6 17 -1. + <_> + 4 2 2 17 3. + <_> + + <_> + 14 10 6 7 -1. + <_> + 14 10 3 7 2. + <_> + + <_> + 0 10 6 7 -1. + <_> + 3 10 3 7 2. + <_> + + <_> + 9 2 6 15 -1. + <_> + 11 2 2 15 3. + <_> + + <_> + 5 2 6 15 -1. + <_> + 7 2 2 15 3. + <_> + + <_> + 17 9 3 6 -1. + <_> + 17 11 3 2 3. + <_> + + <_> + 6 7 6 6 -1. + <_> + 8 7 2 6 3. + <_> + + <_> + 1 10 18 6 -1. + <_> + 10 10 9 3 2. + <_> + 1 13 9 3 2. + <_> + + <_> + 0 9 10 9 -1. + <_> + 0 12 10 3 3. + <_> + + <_> + 8 15 4 3 -1. + <_> + 8 16 4 1 3. + <_> + + <_> + 5 12 3 4 -1. + <_> + 5 14 3 2 2. + <_> + + <_> + 3 3 16 12 -1. + <_> + 3 9 16 6 2. + <_> + + <_> + 1 1 12 12 -1. + <_> + 1 1 6 6 2. + <_> + 7 7 6 6 2. + <_> + + <_> + 10 4 2 4 -1. + <_> + 11 4 1 2 2. + <_> + 10 6 1 2 2. + <_> + + <_> + 0 9 10 2 -1. + <_> + 0 9 5 1 2. + <_> + 5 10 5 1 2. + <_> + + <_> + 9 11 3 3 -1. + <_> + 9 12 3 1 3. + <_> + + <_> + 3 12 9 2 -1. + <_> + 3 13 9 1 2. + <_> + + <_> + 9 9 2 2 -1. + <_> + 9 10 2 1 2. + <_> + + <_> + 3 4 13 6 -1. + <_> + 3 6 13 2 3. + <_> + + <_> + 9 7 6 4 -1. + <_> + 12 7 3 2 2. + <_> + 9 9 3 2 2. + <_> + + <_> + 1 0 6 8 -1. + <_> + 4 0 3 8 2. + <_> + + <_> + 9 5 2 12 -1. + <_> + 9 11 2 6 2. + <_> + + <_> + 4 4 3 10 -1. + <_> + 4 9 3 5 2. + <_> + + <_> + 6 17 8 3 -1. + <_> + 6 18 8 1 3. + <_> + + <_> + 0 5 10 6 -1. + <_> + 0 7 10 2 3. + <_> + + <_> + 13 2 3 2 -1. + <_> + 13 3 3 1 2. + <_> + + <_> + 7 5 4 5 -1. + <_> + 9 5 2 5 2. + <_> + + <_> + 12 14 3 6 -1. + <_> + 12 16 3 2 3. + <_> + + <_> + 1 11 8 2 -1. + <_> + 1 12 8 1 2. + <_> + + <_> + 7 13 6 3 -1. + <_> + 7 14 6 1 3. + <_> + + <_> + 0 5 3 6 -1. + <_> + 0 7 3 2 3. + <_> + + <_> + 13 2 3 2 -1. + <_> + 13 3 3 1 2. + <_> + + <_> + 4 14 4 6 -1. + <_> + 4 14 2 3 2. + <_> + 6 17 2 3 2. + <_> + + <_> + 13 2 3 2 -1. + <_> + 13 3 3 1 2. + <_> + + <_> + 8 2 4 12 -1. + <_> + 8 6 4 4 3. + <_> + + <_> + 14 0 6 8 -1. + <_> + 17 0 3 4 2. + <_> + 14 4 3 4 2. + <_> + + <_> + 7 17 3 2 -1. + <_> + 8 17 1 2 3. + <_> + + <_> + 8 12 4 2 -1. + <_> + 8 13 4 1 2. + <_> + + <_> + 6 0 8 12 -1. + <_> + 6 0 4 6 2. + <_> + 10 6 4 6 2. + <_> + + <_> + 14 0 2 10 -1. + <_> + 15 0 1 5 2. + <_> + 14 5 1 5 2. + <_> + + <_> + 5 3 8 6 -1. + <_> + 5 3 4 3 2. + <_> + 9 6 4 3 2. + <_> + + <_> + 14 0 6 10 -1. + <_> + 17 0 3 5 2. + <_> + 14 5 3 5 2. + <_> + + <_> + 9 14 1 2 -1. + <_> + 9 15 1 1 2. + <_> + + <_> + 15 10 4 3 -1. + <_> + 15 11 4 1 3. + <_> + + <_> + 8 14 2 3 -1. + <_> + 8 15 2 1 3. + <_> + + <_> + 3 13 14 4 -1. + <_> + 10 13 7 2 2. + <_> + 3 15 7 2 2. + <_> + + <_> + 1 10 4 3 -1. + <_> + 1 11 4 1 3. + <_> + + <_> + 9 11 6 1 -1. + <_> + 11 11 2 1 3. + <_> + + <_> + 5 11 6 1 -1. + <_> + 7 11 2 1 3. + <_> + + <_> + 3 5 16 15 -1. + <_> + 3 10 16 5 3. + <_> + + <_> + 6 12 4 2 -1. + <_> + 8 12 2 2 2. + <_> + + <_> + 4 4 12 10 -1. + <_> + 10 4 6 5 2. + <_> + 4 9 6 5 2. + <_> + + <_> + 8 6 3 4 -1. + <_> + 9 6 1 4 3. + <_> + + <_> + 8 12 4 8 -1. + <_> + 10 12 2 4 2. + <_> + 8 16 2 4 2. + <_> + + <_> + 8 14 4 3 -1. + <_> + 8 15 4 1 3. + <_> + + <_> + 12 2 3 2 -1. + <_> + 13 2 1 2 3. + <_> + + <_> + 8 15 3 2 -1. + <_> + 8 16 3 1 2. + <_> + + <_> + 6 0 9 14 -1. + <_> + 9 0 3 14 3. + <_> + + <_> + 9 6 2 3 -1. + <_> + 10 6 1 3 2. + <_> + + <_> + 10 8 2 3 -1. + <_> + 10 9 2 1 3. + <_> + + <_> + 0 9 4 6 -1. + <_> + 0 11 4 2 3. + <_> + + <_> + 6 0 8 2 -1. + <_> + 6 1 8 1 2. + <_> + + <_> + 6 14 7 3 -1. + <_> + 6 15 7 1 3. + <_> + + <_> + 8 10 8 9 -1. + <_> + 8 13 8 3 3. + <_> + + <_> + 5 2 3 2 -1. + <_> + 6 2 1 2 3. + <_> + + <_> + 14 1 6 8 -1. + <_> + 17 1 3 4 2. + <_> + 14 5 3 4 2. + <_> + + <_> + 0 1 6 8 -1. + <_> + 0 1 3 4 2. + <_> + 3 5 3 4 2. + <_> + + <_> + 1 2 18 6 -1. + <_> + 10 2 9 3 2. + <_> + 1 5 9 3 2. + <_> + + <_> + 9 3 2 1 -1. + <_> + 10 3 1 1 2. + <_> + + <_> + 13 2 4 6 -1. + <_> + 15 2 2 3 2. + <_> + 13 5 2 3 2. + <_> + + <_> + 5 4 3 3 -1. + <_> + 5 5 3 1 3. + <_> + + <_> + 13 5 1 3 -1. + <_> + 13 6 1 1 3. + <_> + + <_> + 2 16 5 3 -1. + <_> + 2 17 5 1 3. + <_> + + <_> + 13 2 4 6 -1. + <_> + 15 2 2 3 2. + <_> + 13 5 2 3 2. + <_> + + <_> + 3 2 4 6 -1. + <_> + 3 2 2 3 2. + <_> + 5 5 2 3 2. + <_> + + <_> + 13 5 1 2 -1. + <_> + 13 6 1 1 2. + <_> + + <_> + 5 5 2 2 -1. + <_> + 5 6 2 1 2. + <_> + + <_> + 13 9 2 2 -1. + <_> + 13 9 1 2 2. + <_> + + <_> + 5 9 2 2 -1. + <_> + 6 9 1 2 2. + <_> + + <_> + 13 17 3 2 -1. + <_> + 13 18 3 1 2. + <_> + + <_> + 6 16 4 4 -1. + <_> + 6 16 2 2 2. + <_> + 8 18 2 2 2. + <_> + + <_> + 9 16 2 3 -1. + <_> + 9 17 2 1 3. + <_> + + <_> + 0 13 9 6 -1. + <_> + 0 15 9 2 3. + <_> + + <_> + 9 14 2 6 -1. + <_> + 9 17 2 3 2. + <_> + + <_> + 9 15 2 3 -1. + <_> + 9 16 2 1 3. + <_> + + <_> + 1 10 18 6 -1. + <_> + 1 12 18 2 3. + <_> + + <_> + 8 11 4 2 -1. + <_> + 8 12 4 1 2. + <_> + + <_> + 7 9 6 2 -1. + <_> + 7 10 6 1 2. + <_> + + <_> + 8 8 2 3 -1. + <_> + 8 9 2 1 3. + <_> + + <_> + 17 5 3 4 -1. + <_> + 18 5 1 4 3. + <_> + + <_> + 1 19 18 1 -1. + <_> + 7 19 6 1 3. + <_> + + <_> + 9 0 3 2 -1. + <_> + 10 0 1 2 3. + <_> + + <_> + 1 8 1 6 -1. + <_> + 1 10 1 2 3. + <_> + + <_> + 12 17 8 3 -1. + <_> + 12 17 4 3 2. + <_> + + <_> + 0 5 3 4 -1. + <_> + 1 5 1 4 3. + <_> + + <_> + 9 7 2 3 -1. + <_> + 9 8 2 1 3. + <_> + + <_> + 7 11 2 2 -1. + <_> + 7 11 1 1 2. + <_> + 8 12 1 1 2. + <_> + + <_> + 11 3 2 5 -1. + <_> + 11 3 1 5 2. + <_> + + <_> + 7 3 2 5 -1. + <_> + 8 3 1 5 2. + <_> + + <_> + 15 13 2 3 -1. + <_> + 15 14 2 1 3. + <_> + + <_> + 5 6 2 3 -1. + <_> + 5 7 2 1 3. + <_> + + <_> + 4 19 15 1 -1. + <_> + 9 19 5 1 3. + <_> + + <_> + 1 19 15 1 -1. + <_> + 6 19 5 1 3. + <_> + + <_> + 15 13 2 3 -1. + <_> + 15 14 2 1 3. + <_> + + <_> + 5 0 4 15 -1. + <_> + 7 0 2 15 2. + <_> + + <_> + 9 6 2 5 -1. + <_> + 9 6 1 5 2. + <_> + + <_> + 9 5 2 7 -1. + <_> + 10 5 1 7 2. + <_> + + <_> + 16 11 3 3 -1. + <_> + 16 12 3 1 3. + <_> + + <_> + 1 11 3 3 -1. + <_> + 1 12 3 1 3. + <_> + + <_> + 6 6 8 3 -1. + <_> + 6 7 8 1 3. + <_> + + <_> + 0 15 6 2 -1. + <_> + 0 16 6 1 2. + <_> + + <_> + 1 0 18 6 -1. + <_> + 7 0 6 6 3. + <_> + + <_> + 6 0 3 4 -1. + <_> + 7 0 1 4 3. + <_> + + <_> + 14 10 4 10 -1. + <_> + 16 10 2 5 2. + <_> + 14 15 2 5 2. + <_> + + <_> + 3 2 3 2 -1. + <_> + 4 2 1 2 3. + <_> + + <_> + 11 2 2 2 -1. + <_> + 11 3 2 1 2. + <_> + + <_> + 2 10 4 10 -1. + <_> + 2 10 2 5 2. + <_> + 4 15 2 5 2. + <_> + + <_> + 0 13 20 6 -1. + <_> + 10 13 10 3 2. + <_> + 0 16 10 3 2. + <_> + + <_> + 0 5 2 15 -1. + <_> + 1 5 1 15 2. + <_> + + <_> + 1 7 18 4 -1. + <_> + 10 7 9 2 2. + <_> + 1 9 9 2 2. + <_> + + <_> + 0 0 2 17 -1. + <_> + 1 0 1 17 2. + <_> + + <_> + 2 6 16 6 -1. + <_> + 10 6 8 3 2. + <_> + 2 9 8 3 2. + <_> + + <_> + 8 14 1 3 -1. + <_> + 8 15 1 1 3. + <_> + + <_> + 8 15 4 2 -1. + <_> + 8 16 4 1 2. + <_> + + <_> + 5 2 8 2 -1. + <_> + 5 2 4 1 2. + <_> + 9 3 4 1 2. + <_> + + <_> + 6 11 8 6 -1. + <_> + 6 14 8 3 2. + <_> + + <_> + 9 13 2 2 -1. + <_> + 9 14 2 1 2. + <_> + + <_> + 18 4 2 6 -1. + <_> + 18 6 2 2 3. + <_> + + <_> + 9 12 2 2 -1. + <_> + 9 13 2 1 2. + <_> + + <_> + 18 4 2 6 -1. + <_> + 18 6 2 2 3. + <_> + + <_> + 9 13 1 3 -1. + <_> + 9 14 1 1 3. + <_> + + <_> + 18 4 2 6 -1. + <_> + 18 6 2 2 3. + <_> + + <_> + 0 4 2 6 -1. + <_> + 0 6 2 2 3. + <_> + + <_> + 9 12 3 3 -1. + <_> + 9 13 3 1 3. + <_> + + <_> + 3 13 2 3 -1. + <_> + 3 14 2 1 3. + <_> + + <_> + 13 13 4 3 -1. + <_> + 13 14 4 1 3. + <_> + + <_> + 5 4 3 3 -1. + <_> + 5 5 3 1 3. + <_> + + <_> + 5 2 10 6 -1. + <_> + 5 4 10 2 3. + <_> + + <_> + 3 13 4 3 -1. + <_> + 3 14 4 1 3. + <_> + + <_> + 3 7 15 5 -1. + <_> + 8 7 5 5 3. + <_> + + <_> + 3 7 12 2 -1. + <_> + 7 7 4 2 3. + <_> + + <_> + 10 3 3 9 -1. + <_> + 11 3 1 9 3. + <_> + + <_> + 8 6 4 6 -1. + <_> + 10 6 2 6 2. + <_> + + <_> + 9 7 4 3 -1. + <_> + 9 8 4 1 3. + <_> + + <_> + 0 9 4 9 -1. + <_> + 2 9 2 9 2. + <_> + + <_> + 9 13 3 5 -1. + <_> + 10 13 1 5 3. + <_> + + <_> + 7 7 6 3 -1. + <_> + 9 7 2 3 3. + <_> + + <_> + 9 7 3 5 -1. + <_> + 10 7 1 5 3. + <_> + + <_> + 5 7 8 2 -1. + <_> + 9 7 4 2 2. + <_> + + <_> + 5 9 12 2 -1. + <_> + 9 9 4 2 3. + <_> + + <_> + 5 6 10 3 -1. + <_> + 10 6 5 3 2. + <_> + + <_> + 10 12 3 1 -1. + <_> + 11 12 1 1 3. + <_> + + <_> + 0 1 11 15 -1. + <_> + 0 6 11 5 3. + <_> + + <_> + 1 0 18 6 -1. + <_> + 7 0 6 6 3. + <_> + + <_> + 7 7 6 1 -1. + <_> + 9 7 2 1 3. + <_> + + <_> + 5 16 6 4 -1. + <_> + 5 16 3 2 2. + <_> + 8 18 3 2 2. + <_> + + <_> + 6 5 9 8 -1. + <_> + 6 9 9 4 2. + <_> + + <_> + 5 10 2 6 -1. + <_> + 5 13 2 3 2. + <_> + + <_> + 7 6 8 10 -1. + <_> + 11 6 4 5 2. + <_> + 7 11 4 5 2. + <_> + + <_> + 5 6 8 10 -1. + <_> + 5 6 4 5 2. + <_> + 9 11 4 5 2. + <_> + + <_> + 9 5 2 2 -1. + <_> + 9 6 2 1 2. + <_> + + <_> + 5 12 8 2 -1. + <_> + 5 13 8 1 2. + <_> + + <_> + 10 2 8 2 -1. + <_> + 10 3 8 1 2. + <_> + + <_> + 4 0 2 10 -1. + <_> + 4 0 1 5 2. + <_> + 5 5 1 5 2. + <_> + + <_> + 9 10 2 2 -1. + <_> + 9 11 2 1 2. + <_> + + <_> + 2 8 15 3 -1. + <_> + 2 9 15 1 3. + <_> + + <_> + 8 13 4 3 -1. + <_> + 8 14 4 1 3. + <_> + + <_> + 7 2 3 2 -1. + <_> + 8 2 1 2 3. + <_> + + <_> + 7 13 6 3 -1. + <_> + 7 14 6 1 3. + <_> + + <_> + 9 9 2 2 -1. + <_> + 9 10 2 1 2. + <_> + + <_> + 17 2 3 6 -1. + <_> + 17 4 3 2 3. + <_> + + <_> + 1 5 3 4 -1. + <_> + 2 5 1 4 3. + <_> + + <_> + 14 8 4 6 -1. + <_> + 14 10 4 2 3. + <_> + + <_> + 1 4 3 8 -1. + <_> + 2 4 1 8 3. + <_> + + <_> + 8 13 4 6 -1. + <_> + 8 16 4 3 2. + <_> + + <_> + 3 14 2 2 -1. + <_> + 3 15 2 1 2. + <_> + + <_> + 14 8 4 6 -1. + <_> + 14 10 4 2 3. + <_> + + <_> + 2 8 4 6 -1. + <_> + 2 10 4 2 3. + <_> + + <_> + 10 14 1 6 -1. + <_> + 10 17 1 3 2. + <_> + + <_> + 7 5 3 6 -1. + <_> + 8 5 1 6 3. + <_> + + <_> + 11 2 2 6 -1. + <_> + 12 2 1 3 2. + <_> + 11 5 1 3 2. + <_> + + <_> + 6 6 6 5 -1. + <_> + 8 6 2 5 3. + <_> + + <_> + 17 1 3 6 -1. + <_> + 17 3 3 2 3. + <_> + + <_> + 8 7 3 5 -1. + <_> + 9 7 1 5 3. + <_> + + <_> + 9 18 3 2 -1. + <_> + 10 18 1 2 3. + <_> + + <_> + 8 18 3 2 -1. + <_> + 9 18 1 2 3. + <_> + + <_> + 12 3 5 2 -1. + <_> + 12 4 5 1 2. + <_> + + <_> + 7 1 5 12 -1. + <_> + 7 7 5 6 2. + <_> + + <_> + 1 0 18 4 -1. + <_> + 7 0 6 4 3. + <_> + + <_> + 4 2 2 2 -1. + <_> + 4 3 2 1 2. + <_> + + <_> + 11 14 4 2 -1. + <_> + 13 14 2 1 2. + <_> + 11 15 2 1 2. + <_> + + <_> + 0 2 3 6 -1. + <_> + 0 4 3 2 3. + <_> + + <_> + 9 7 2 3 -1. + <_> + 9 8 2 1 3. + <_> + + <_> + 5 5 1 3 -1. + <_> + 5 6 1 1 3. + <_> + + <_> + 10 10 6 1 -1. + <_> + 10 10 3 1 2. + <_> + + <_> + 4 10 6 1 -1. + <_> + 7 10 3 1 2. + <_> + + <_> + 9 17 3 3 -1. + <_> + 9 18 3 1 3. + <_> + + <_> + 4 14 1 3 -1. + <_> + 4 15 1 1 3. + <_> + + <_> + 12 5 3 3 -1. + <_> + 12 6 3 1 3. + <_> + + <_> + 4 5 12 3 -1. + <_> + 4 6 12 1 3. + <_> + + <_> + 9 8 2 3 -1. + <_> + 9 9 2 1 3. + <_> + + <_> + 4 9 3 3 -1. + <_> + 5 9 1 3 3. + <_> + + <_> + 6 0 9 17 -1. + <_> + 9 0 3 17 3. + <_> + + <_> + 9 12 1 3 -1. + <_> + 9 13 1 1 3. + <_> + + <_> + 9 5 2 15 -1. + <_> + 9 10 2 5 3. + <_> + + <_> + 8 14 2 3 -1. + <_> + 8 15 2 1 3. + <_> + + <_> + 10 14 1 3 -1. + <_> + 10 15 1 1 3. + <_> + + <_> + 7 1 6 5 -1. + <_> + 9 1 2 5 3. + <_> + + <_> + 0 0 20 2 -1. + <_> + 0 0 10 2 2. + <_> + + <_> + 2 13 5 3 -1. + <_> + 2 14 5 1 3. + <_> + + <_> + 9 11 2 3 -1. + <_> + 9 12 2 1 3. + <_> + + <_> + 2 5 9 15 -1. + <_> + 2 10 9 5 3. + <_> + + <_> + 5 0 12 10 -1. + <_> + 11 0 6 5 2. + <_> + 5 5 6 5 2. + <_> + + <_> + 5 1 2 3 -1. + <_> + 6 1 1 3 2. + <_> + + <_> + 10 7 6 1 -1. + <_> + 12 7 2 1 3. + <_> + + <_> + 3 1 2 10 -1. + <_> + 3 1 1 5 2. + <_> + 4 6 1 5 2. + <_> + + <_> + 13 7 2 1 -1. + <_> + 13 7 1 1 2. + <_> + + <_> + 4 13 4 6 -1. + <_> + 4 15 4 2 3. + <_> + + <_> + 13 7 2 1 -1. + <_> + 13 7 1 1 2. + <_> + + <_> + 5 7 2 1 -1. + <_> + 6 7 1 1 2. + <_> + + <_> + 2 12 18 4 -1. + <_> + 11 12 9 2 2. + <_> + 2 14 9 2 2. + <_> + + <_> + 5 7 2 2 -1. + <_> + 5 7 1 1 2. + <_> + 6 8 1 1 2. + <_> + + <_> + 16 3 4 2 -1. + <_> + 16 4 4 1 2. + <_> + + <_> + 0 2 2 18 -1. + <_> + 0 2 1 9 2. + <_> + 1 11 1 9 2. + <_> + + <_> + 1 2 18 4 -1. + <_> + 10 2 9 2 2. + <_> + 1 4 9 2 2. + <_> + + <_> + 9 14 1 3 -1. + <_> + 9 15 1 1 3. + <_> + + <_> + 2 12 18 4 -1. + <_> + 11 12 9 2 2. + <_> + 2 14 9 2 2. + <_> + + <_> + 0 12 18 4 -1. + <_> + 0 12 9 2 2. + <_> + 9 14 9 2 2. + <_> + + <_> + 11 4 5 3 -1. + <_> + 11 5 5 1 3. + <_> + + <_> + 6 4 7 3 -1. + <_> + 6 5 7 1 3. + <_> + + <_> + 13 17 3 3 -1. + <_> + 13 18 3 1 3. + <_> + + <_> + 8 1 3 4 -1. + <_> + 9 1 1 4 3. + <_> + + <_> + 11 4 2 4 -1. + <_> + 11 4 1 4 2. + <_> + + <_> + 0 17 9 3 -1. + <_> + 3 17 3 3 3. + <_> + + <_> + 11 0 2 8 -1. + <_> + 12 0 1 4 2. + <_> + 11 4 1 4 2. + <_> + + <_> + 0 8 6 12 -1. + <_> + 0 8 3 6 2. + <_> + 3 14 3 6 2. + <_> + + <_> + 10 7 4 12 -1. + <_> + 10 13 4 6 2. + <_> + + <_> + 5 3 8 14 -1. + <_> + 5 10 8 7 2. + <_> + + <_> + 14 10 6 1 -1. + <_> + 14 10 3 1 2. + <_> + + <_> + 0 4 10 4 -1. + <_> + 0 6 10 2 2. + <_> + + <_> + 10 0 5 8 -1. + <_> + 10 4 5 4 2. + <_> + + <_> + 8 1 4 8 -1. + <_> + 8 1 2 4 2. + <_> + 10 5 2 4 2. + <_> + + <_> + 9 11 6 1 -1. + <_> + 11 11 2 1 3. + <_> + + <_> + 8 9 3 4 -1. + <_> + 9 9 1 4 3. + <_> + + <_> + 18 4 2 6 -1. + <_> + 18 6 2 2 3. + <_> + + <_> + 8 8 3 4 -1. + <_> + 9 8 1 4 3. + <_> + + <_> + 7 1 13 3 -1. + <_> + 7 2 13 1 3. + <_> + + <_> + 7 13 6 1 -1. + <_> + 9 13 2 1 3. + <_> + + <_> + 12 11 3 6 -1. + <_> + 12 13 3 2 3. + <_> + + <_> + 5 11 6 1 -1. + <_> + 7 11 2 1 3. + <_> + + <_> + 1 4 18 10 -1. + <_> + 10 4 9 5 2. + <_> + 1 9 9 5 2. + <_> + + <_> + 8 6 4 9 -1. + <_> + 8 9 4 3 3. + <_> + + <_> + 8 6 4 3 -1. + <_> + 8 7 4 1 3. + <_> + + <_> + 8 7 3 3 -1. + <_> + 9 7 1 3 3. + <_> + + <_> + 14 15 4 3 -1. + <_> + 14 16 4 1 3. + <_> + + <_> + 5 10 3 10 -1. + <_> + 6 10 1 10 3. + <_> + + <_> + 8 15 4 3 -1. + <_> + 8 16 4 1 3. + <_> + + <_> + 0 8 1 6 -1. + <_> + 0 10 1 2 3. + <_> + + <_> + 10 15 1 3 -1. + <_> + 10 16 1 1 3. + <_> + + <_> + 2 15 4 3 -1. + <_> + 2 16 4 1 3. + <_> + + <_> + 18 3 2 8 -1. + <_> + 19 3 1 4 2. + <_> + 18 7 1 4 2. + <_> + + <_> + 0 3 2 8 -1. + <_> + 0 3 1 4 2. + <_> + 1 7 1 4 2. + <_> + + <_> + 3 7 14 10 -1. + <_> + 10 7 7 5 2. + <_> + 3 12 7 5 2. + <_> + + <_> + 0 7 19 3 -1. + <_> + 0 8 19 1 3. + <_> + + <_> + 12 6 3 3 -1. + <_> + 12 7 3 1 3. + <_> + + <_> + 0 6 1 3 -1. + <_> + 0 7 1 1 3. + <_> + + <_> + 12 6 3 3 -1. + <_> + 12 7 3 1 3. + <_> + + <_> + 5 6 3 3 -1. + <_> + 5 7 3 1 3. + <_> + + <_> + 8 2 4 2 -1. + <_> + 8 3 4 1 2. + <_> + + <_> + 6 3 4 12 -1. + <_> + 8 3 2 12 2. + <_> + + <_> + 13 6 2 3 -1. + <_> + 13 7 2 1 3. + <_> + + <_> + 0 10 20 4 -1. + <_> + 0 12 20 2 2. + <_> + + <_> + 2 0 17 14 -1. + <_> + 2 7 17 7 2. + <_> + + <_> + 0 0 6 10 -1. + <_> + 0 0 3 5 2. + <_> + 3 5 3 5 2. + <_> + + <_> + 14 6 6 4 -1. + <_> + 14 6 3 4 2. + <_> + + <_> + 0 6 6 4 -1. + <_> + 3 6 3 4 2. + <_> + + <_> + 13 2 7 2 -1. + <_> + 13 3 7 1 2. + <_> + + <_> + 0 2 7 2 -1. + <_> + 0 3 7 1 2. + <_> + + <_> + 6 11 14 2 -1. + <_> + 13 11 7 1 2. + <_> + 6 12 7 1 2. + <_> + + <_> + 8 5 2 2 -1. + <_> + 8 5 1 1 2. + <_> + 9 6 1 1 2. + <_> + + <_> + 13 9 2 3 -1. + <_> + 13 9 1 3 2. + <_> + + <_> + 1 1 3 12 -1. + <_> + 2 1 1 12 3. + <_> + + <_> + 17 4 1 3 -1. + <_> + 17 5 1 1 3. + <_> + + <_> + 2 4 1 3 -1. + <_> + 2 5 1 1 3. + <_> + + <_> + 14 5 1 3 -1. + <_> + 14 6 1 1 3. + <_> + + <_> + 7 16 2 3 -1. + <_> + 7 17 2 1 3. + <_> + + <_> + 8 13 4 6 -1. + <_> + 10 13 2 3 2. + <_> + 8 16 2 3 2. + <_> + + <_> + 5 5 1 3 -1. + <_> + 5 6 1 1 3. + <_> + + <_> + 16 0 4 20 -1. + <_> + 16 0 2 20 2. + <_> + + <_> + 5 1 2 6 -1. + <_> + 5 1 1 3 2. + <_> + 6 4 1 3 2. + <_> + + <_> + 5 4 10 4 -1. + <_> + 5 6 10 2 2. + <_> + + <_> + 15 2 4 12 -1. + <_> + 15 2 2 12 2. + <_> + + <_> + 7 6 4 12 -1. + <_> + 7 12 4 6 2. + <_> + + <_> + 14 5 1 8 -1. + <_> + 14 9 1 4 2. + <_> + + <_> + 1 4 14 10 -1. + <_> + 1 4 7 5 2. + <_> + 8 9 7 5 2. + <_> + + <_> + 11 6 6 14 -1. + <_> + 14 6 3 7 2. + <_> + 11 13 3 7 2. + <_> + + <_> + 3 6 6 14 -1. + <_> + 3 6 3 7 2. + <_> + 6 13 3 7 2. + <_> + + <_> + 4 9 15 2 -1. + <_> + 9 9 5 2 3. + <_> + + <_> + 7 14 6 3 -1. + <_> + 7 15 6 1 3. + <_> + + <_> + 6 3 14 4 -1. + <_> + 13 3 7 2 2. + <_> + 6 5 7 2 2. + <_> + + <_> + 1 9 15 2 -1. + <_> + 6 9 5 2 3. + <_> + + <_> + 6 11 8 9 -1. + <_> + 6 14 8 3 3. + <_> + + <_> + 7 4 3 8 -1. + <_> + 8 4 1 8 3. + <_> + + <_> + 14 6 2 6 -1. + <_> + 14 9 2 3 2. + <_> + + <_> + 5 7 6 4 -1. + <_> + 5 7 3 2 2. + <_> + 8 9 3 2 2. + <_> + + <_> + 1 1 18 19 -1. + <_> + 7 1 6 19 3. + <_> + + <_> + 1 2 6 5 -1. + <_> + 4 2 3 5 2. + <_> + + <_> + 12 17 6 2 -1. + <_> + 12 18 6 1 2. + <_> + + <_> + 2 17 6 2 -1. + <_> + 2 18 6 1 2. + <_> + + <_> + 17 3 3 6 -1. + <_> + 17 5 3 2 3. + <_> + + <_> + 8 17 3 3 -1. + <_> + 8 18 3 1 3. + <_> + + <_> + 10 13 2 6 -1. + <_> + 10 16 2 3 2. + <_> + + <_> + 7 13 6 3 -1. + <_> + 7 14 6 1 3. + <_> + + <_> + 17 3 3 6 -1. + <_> + 17 5 3 2 3. + <_> + + <_> + 8 13 2 3 -1. + <_> + 8 14 2 1 3. + <_> + + <_> + 9 3 6 2 -1. + <_> + 11 3 2 2 3. + <_> + + <_> + 0 3 3 6 -1. + <_> + 0 5 3 2 3. + <_> + + <_> + 8 5 4 6 -1. + <_> + 8 7 4 2 3. + <_> + + <_> + 5 5 3 2 -1. + <_> + 5 6 3 1 2. + <_> + + <_> + 10 1 3 4 -1. + <_> + 11 1 1 4 3. + <_> + + <_> + 1 2 5 9 -1. + <_> + 1 5 5 3 3. + <_> + + <_> + 13 6 2 3 -1. + <_> + 13 7 2 1 3. + <_> + + <_> + 0 6 14 3 -1. + <_> + 7 6 7 3 2. + <_> + + <_> + 2 11 18 8 -1. + <_> + 2 15 18 4 2. + <_> + + <_> + 5 6 2 3 -1. + <_> + 5 7 2 1 3. + <_> + + <_> + 10 6 4 2 -1. + <_> + 12 6 2 1 2. + <_> + 10 7 2 1 2. + <_> + + <_> + 6 6 4 2 -1. + <_> + 6 6 2 1 2. + <_> + 8 7 2 1 2. + <_> + + <_> + 10 1 3 4 -1. + <_> + 11 1 1 4 3. + <_> + + <_> + 7 1 2 7 -1. + <_> + 8 1 1 7 2. + <_> + + <_> + 4 2 15 14 -1. + <_> + 4 9 15 7 2. + <_> + + <_> + 8 7 3 2 -1. + <_> + 9 7 1 2 3. + <_> + + <_> + 2 3 18 4 -1. + <_> + 11 3 9 2 2. + <_> + 2 5 9 2 2. + <_> + + <_> + 9 7 2 2 -1. + <_> + 10 7 1 2 2. + <_> + + <_> + 13 9 2 3 -1. + <_> + 13 9 1 3 2. + <_> + + <_> + 5 2 6 2 -1. + <_> + 7 2 2 2 3. + <_> + + <_> + 9 5 2 7 -1. + <_> + 9 5 1 7 2. + <_> + + <_> + 5 9 2 3 -1. + <_> + 6 9 1 3 2. + <_> + + <_> + 6 0 14 18 -1. + <_> + 6 9 14 9 2. + <_> + + <_> + 2 16 6 3 -1. + <_> + 2 17 6 1 3. + <_> + + <_> + 9 7 3 6 -1. + <_> + 10 7 1 6 3. + <_> + + <_> + 7 8 4 3 -1. + <_> + 7 9 4 1 3. + <_> + + <_> + 7 12 6 3 -1. + <_> + 7 13 6 1 3. + <_> + + <_> + 9 12 2 3 -1. + <_> + 9 13 2 1 3. + <_> + + <_> + 7 12 6 2 -1. + <_> + 9 12 2 2 3. + <_> + + <_> + 5 11 4 6 -1. + <_> + 5 14 4 3 2. + <_> + + <_> + 11 12 7 2 -1. + <_> + 11 13 7 1 2. + <_> + + <_> + 6 10 8 6 -1. + <_> + 6 10 4 3 2. + <_> + 10 13 4 3 2. + <_> + + <_> + 11 10 3 4 -1. + <_> + 11 12 3 2 2. + <_> + + <_> + 9 16 2 3 -1. + <_> + 9 17 2 1 3. + <_> + + <_> + 13 3 1 9 -1. + <_> + 13 6 1 3 3. + <_> + + <_> + 1 13 14 6 -1. + <_> + 1 15 14 2 3. + <_> + + <_> + 13 6 1 6 -1. + <_> + 13 9 1 3 2. + <_> + + <_> + 0 4 3 8 -1. + <_> + 1 4 1 8 3. + <_> + + <_> + 18 0 2 18 -1. + <_> + 18 0 1 18 2. + <_> + + <_> + 2 3 6 2 -1. + <_> + 2 4 6 1 2. + <_> + + <_> + 9 0 8 6 -1. + <_> + 9 2 8 2 3. + <_> + + <_> + 6 6 1 6 -1. + <_> + 6 9 1 3 2. + <_> + + <_> + 14 8 6 3 -1. + <_> + 14 9 6 1 3. + <_> + + <_> + 0 0 2 18 -1. + <_> + 1 0 1 18 2. + <_> + + <_> + 1 18 18 2 -1. + <_> + 10 18 9 1 2. + <_> + 1 19 9 1 2. + <_> + + <_> + 3 15 2 2 -1. + <_> + 3 16 2 1 2. + <_> + + <_> + 8 14 5 3 -1. + <_> + 8 15 5 1 3. + <_> + + <_> + 8 14 2 3 -1. + <_> + 8 15 2 1 3. + <_> + + <_> + 12 3 3 3 -1. + <_> + 13 3 1 3 3. + <_> + + <_> + 7 5 6 2 -1. + <_> + 9 5 2 2 3. + <_> + + <_> + 15 5 5 2 -1. + <_> + 15 6 5 1 2. + <_> + + <_> + 0 5 5 2 -1. + <_> + 0 6 5 1 2. + <_> + + <_> + 17 14 1 6 -1. + <_> + 17 17 1 3 2. + <_> + + <_> + 2 9 9 3 -1. + <_> + 5 9 3 3 3. + <_> + + <_> + 12 3 3 3 -1. + <_> + 13 3 1 3 3. + <_> + + <_> + 0 0 4 18 -1. + <_> + 2 0 2 18 2. + <_> + + <_> + 17 6 1 3 -1. + <_> + 17 7 1 1 3. + <_> + + <_> + 2 14 1 6 -1. + <_> + 2 17 1 3 2. + <_> + + <_> + 19 8 1 2 -1. + <_> + 19 9 1 1 2. + <_> + + <_> + 5 3 3 3 -1. + <_> + 6 3 1 3 3. + <_> + + <_> + 9 16 2 3 -1. + <_> + 9 17 2 1 3. + <_> + + <_> + 2 6 1 3 -1. + <_> + 2 7 1 1 3. + <_> + + <_> + 12 4 8 2 -1. + <_> + 16 4 4 1 2. + <_> + 12 5 4 1 2. + <_> + + <_> + 0 4 8 2 -1. + <_> + 0 4 4 1 2. + <_> + 4 5 4 1 2. + <_> + + <_> + 2 16 18 4 -1. + <_> + 2 18 18 2 2. + <_> + + <_> + 7 15 2 4 -1. + <_> + 7 17 2 2 2. + <_> + + <_> + 4 0 14 3 -1. + <_> + 4 1 14 1 3. + <_> + + <_> + 0 0 4 20 -1. + <_> + 2 0 2 20 2. + <_> + + <_> + 12 4 4 8 -1. + <_> + 14 4 2 4 2. + <_> + 12 8 2 4 2. + <_> + + <_> + 6 7 2 2 -1. + <_> + 6 7 1 1 2. + <_> + 7 8 1 1 2. + <_> + + <_> + 10 6 2 3 -1. + <_> + 10 7 2 1 3. + <_> + + <_> + 8 7 3 2 -1. + <_> + 8 8 3 1 2. + <_> + + <_> + 8 2 6 12 -1. + <_> + 8 8 6 6 2. + <_> + + <_> + 4 0 11 12 -1. + <_> + 4 4 11 4 3. + <_> + + <_> + 14 9 6 11 -1. + <_> + 16 9 2 11 3. + <_> + + <_> + 0 14 4 3 -1. + <_> + 0 15 4 1 3. + <_> + + <_> + 9 10 2 3 -1. + <_> + 9 11 2 1 3. + <_> + + <_> + 5 11 3 2 -1. + <_> + 5 12 3 1 2. + <_> + + <_> + 9 15 3 3 -1. + <_> + 10 15 1 3 3. + <_> + + <_> + 8 8 3 4 -1. + <_> + 9 8 1 4 3. + <_> + + <_> + 9 15 3 3 -1. + <_> + 10 15 1 3 3. + <_> + + <_> + 7 7 3 2 -1. + <_> + 8 7 1 2 3. + <_> + + <_> + 2 10 16 4 -1. + <_> + 10 10 8 2 2. + <_> + 2 12 8 2 2. + <_> + + <_> + 2 3 4 17 -1. + <_> + 4 3 2 17 2. + <_> + + <_> + 15 13 2 7 -1. + <_> + 15 13 1 7 2. + <_> + + <_> + 2 2 6 1 -1. + <_> + 5 2 3 1 2. + <_> + + <_> + 5 2 12 4 -1. + <_> + 9 2 4 4 3. + <_> + + <_> + 6 0 8 12 -1. + <_> + 6 0 4 6 2. + <_> + 10 6 4 6 2. + <_> + + <_> + 13 7 2 2 -1. + <_> + 14 7 1 1 2. + <_> + 13 8 1 1 2. + <_> + + <_> + 0 12 20 6 -1. + <_> + 0 14 20 2 3. + <_> + + <_> + 14 7 2 3 -1. + <_> + 14 7 1 3 2. + <_> + + <_> + 0 8 9 12 -1. + <_> + 3 8 3 12 3. + <_> + + <_> + 3 0 16 2 -1. + <_> + 3 0 8 2 2. + <_> + + <_> + 6 15 3 3 -1. + <_> + 6 16 3 1 3. + <_> + + <_> + 8 15 6 3 -1. + <_> + 8 16 6 1 3. + <_> + + <_> + 0 10 1 6 -1. + <_> + 0 12 1 2 3. + <_> + + <_> + 10 9 4 3 -1. + <_> + 10 10 4 1 3. + <_> + + <_> + 9 15 2 3 -1. + <_> + 9 16 2 1 3. + <_> + + <_> + 5 7 10 1 -1. + <_> + 5 7 5 1 2. + <_> + + <_> + 4 0 12 19 -1. + <_> + 10 0 6 19 2. + <_> + + <_> + 0 6 20 6 -1. + <_> + 10 6 10 3 2. + <_> + 0 9 10 3 2. + <_> + + <_> + 3 6 2 2 -1. + <_> + 3 6 1 1 2. + <_> + 4 7 1 1 2. + <_> + + <_> + 15 6 2 2 -1. + <_> + 16 6 1 1 2. + <_> + 15 7 1 1 2. + <_> + + <_> + 3 6 2 2 -1. + <_> + 3 6 1 1 2. + <_> + 4 7 1 1 2. + <_> + + <_> + 14 4 1 12 -1. + <_> + 14 10 1 6 2. + <_> + + <_> + 2 5 16 10 -1. + <_> + 2 5 8 5 2. + <_> + 10 10 8 5 2. + <_> + + <_> + 9 17 3 2 -1. + <_> + 10 17 1 2 3. + <_> + + <_> + 1 4 2 2 -1. + <_> + 1 5 2 1 2. + <_> + + <_> + 5 0 15 5 -1. + <_> + 10 0 5 5 3. + <_> + + <_> + 0 0 15 5 -1. + <_> + 5 0 5 5 3. + <_> + + <_> + 11 2 2 17 -1. + <_> + 11 2 1 17 2. + <_> + + <_> + 7 2 2 17 -1. + <_> + 8 2 1 17 2. + <_> + + <_> + 15 11 2 9 -1. + <_> + 15 11 1 9 2. + <_> + + <_> + 3 11 2 9 -1. + <_> + 4 11 1 9 2. + <_> + + <_> + 5 16 14 4 -1. + <_> + 5 16 7 4 2. + <_> + + <_> + 1 4 18 1 -1. + <_> + 7 4 6 1 3. + <_> + + <_> + 13 7 6 4 -1. + <_> + 16 7 3 2 2. + <_> + 13 9 3 2 2. + <_> + + <_> + 9 8 2 12 -1. + <_> + 9 12 2 4 3. + <_> + + <_> + 12 1 6 6 -1. + <_> + 12 3 6 2 3. + <_> + + <_> + 5 2 6 6 -1. + <_> + 5 2 3 3 2. + <_> + 8 5 3 3 2. + <_> + + <_> + 9 16 6 4 -1. + <_> + 12 16 3 2 2. + <_> + 9 18 3 2 2. + <_> + + <_> + 1 2 18 3 -1. + <_> + 7 2 6 3 3. + <_> + + <_> + 7 4 9 10 -1. + <_> + 7 9 9 5 2. + <_> + + <_> + 5 9 4 4 -1. + <_> + 7 9 2 4 2. + <_> + + <_> + 11 10 3 6 -1. + <_> + 11 13 3 3 2. + <_> + + <_> + 7 11 5 3 -1. + <_> + 7 12 5 1 3. + <_> + + <_> + 7 11 6 6 -1. + <_> + 10 11 3 3 2. + <_> + 7 14 3 3 2. + <_> + + <_> + 0 0 10 9 -1. + <_> + 0 3 10 3 3. + <_> + + <_> + 13 14 1 6 -1. + <_> + 13 16 1 2 3. + <_> + + <_> + 0 2 3 6 -1. + <_> + 0 4 3 2 3. + <_> + + <_> + 8 14 4 3 -1. + <_> + 8 15 4 1 3. + <_> + + <_> + 6 14 1 6 -1. + <_> + 6 16 1 2 3. + <_> + + <_> + 9 15 2 3 -1. + <_> + 9 16 2 1 3. + <_> + + <_> + 6 4 3 3 -1. + <_> + 7 4 1 3 3. + <_> + + <_> + 9 0 11 3 -1. + <_> + 9 1 11 1 3. + <_> + + <_> + 0 6 20 3 -1. + <_> + 0 7 20 1 3. + <_> + + <_> + 10 1 1 2 -1. + <_> + 10 2 1 1 2. + <_> + + <_> + 9 6 2 6 -1. + <_> + 10 6 1 6 2. + <_> + + <_> + 5 8 12 1 -1. + <_> + 9 8 4 1 3. + <_> + + <_> + 3 8 12 1 -1. + <_> + 7 8 4 1 3. + <_> + + <_> + 9 7 3 5 -1. + <_> + 10 7 1 5 3. + <_> + + <_> + 3 9 6 2 -1. + <_> + 6 9 3 2 2. + <_> + + <_> + 12 9 3 3 -1. + <_> + 12 10 3 1 3. + <_> + + <_> + 7 0 6 1 -1. + <_> + 9 0 2 1 3. + <_> + + <_> + 12 9 3 3 -1. + <_> + 12 10 3 1 3. + <_> + + <_> + 7 10 2 1 -1. + <_> + 8 10 1 1 2. + <_> + + <_> + 6 4 9 13 -1. + <_> + 9 4 3 13 3. + <_> + + <_> + 6 8 4 2 -1. + <_> + 6 9 4 1 2. + <_> + + <_> + 16 2 4 6 -1. + <_> + 16 2 2 6 2. + <_> + + <_> + 0 17 6 3 -1. + <_> + 0 18 6 1 3. + <_> + + <_> + 10 10 3 10 -1. + <_> + 10 15 3 5 2. + <_> + + <_> + 8 7 3 5 -1. + <_> + 9 7 1 5 3. + <_> + + <_> + 10 4 4 3 -1. + <_> + 10 4 2 3 2. + <_> + + <_> + 8 4 3 8 -1. + <_> + 9 4 1 8 3. + <_> + + <_> + 6 6 9 13 -1. + <_> + 9 6 3 13 3. + <_> + + <_> + 6 0 8 12 -1. + <_> + 6 0 4 6 2. + <_> + 10 6 4 6 2. + <_> + + <_> + 14 2 6 8 -1. + <_> + 16 2 2 8 3. + <_> + + <_> + 6 0 3 6 -1. + <_> + 7 0 1 6 3. + <_> + + <_> + 14 2 6 8 -1. + <_> + 16 2 2 8 3. + <_> + + <_> + 0 5 6 6 -1. + <_> + 0 8 6 3 2. + <_> + + <_> + 9 12 6 2 -1. + <_> + 12 12 3 1 2. + <_> + 9 13 3 1 2. + <_> + + <_> + 8 17 3 2 -1. + <_> + 9 17 1 2 3. + <_> + + <_> + 11 6 2 2 -1. + <_> + 12 6 1 1 2. + <_> + 11 7 1 1 2. + <_> + + <_> + 1 9 18 2 -1. + <_> + 7 9 6 2 3. + <_> + + <_> + 11 6 2 2 -1. + <_> + 12 6 1 1 2. + <_> + 11 7 1 1 2. + <_> + + <_> + 3 4 12 8 -1. + <_> + 7 4 4 8 3. + <_> + + <_> + 13 11 5 3 -1. + <_> + 13 12 5 1 3. + <_> + + <_> + 9 10 2 3 -1. + <_> + 9 11 2 1 3. + <_> + + <_> + 14 7 2 3 -1. + <_> + 14 7 1 3 2. + <_> + + <_> + 5 4 1 3 -1. + <_> + 5 5 1 1 3. + <_> + + <_> + 13 4 2 3 -1. + <_> + 13 5 2 1 3. + <_> + + <_> + 5 4 2 3 -1. + <_> + 5 5 2 1 3. + <_> + + <_> + 9 8 2 3 -1. + <_> + 9 9 2 1 3. + <_> + + <_> + 8 9 2 2 -1. + <_> + 8 10 2 1 2. + <_> + + <_> + 15 14 1 4 -1. + <_> + 15 16 1 2 2. + <_> + + <_> + 3 12 2 2 -1. + <_> + 3 13 2 1 2. + <_> + + <_> + 12 15 2 2 -1. + <_> + 13 15 1 1 2. + <_> + 12 16 1 1 2. + <_> + + <_> + 9 13 2 2 -1. + <_> + 9 14 2 1 2. + <_> + + <_> + 4 11 14 9 -1. + <_> + 4 14 14 3 3. + <_> + + <_> + 7 13 4 3 -1. + <_> + 7 14 4 1 3. + <_> + + <_> + 15 14 1 4 -1. + <_> + 15 16 1 2 2. + <_> + + <_> + 4 14 1 4 -1. + <_> + 4 16 1 2 2. + <_> + + <_> + 14 0 6 13 -1. + <_> + 16 0 2 13 3. + <_> + + <_> + 4 1 2 12 -1. + <_> + 4 1 1 6 2. + <_> + 5 7 1 6 2. + <_> + + <_> + 11 14 6 6 -1. + <_> + 14 14 3 3 2. + <_> + 11 17 3 3 2. + <_> + + <_> + 3 14 6 6 -1. + <_> + 3 14 3 3 2. + <_> + 6 17 3 3 2. + <_> + + <_> + 14 17 3 2 -1. + <_> + 14 18 3 1 2. + <_> + + <_> + 3 17 3 2 -1. + <_> + 3 18 3 1 2. + <_> + + <_> + 14 0 6 13 -1. + <_> + 16 0 2 13 3. + <_> + + <_> + 0 0 6 13 -1. + <_> + 2 0 2 13 3. + <_> + + <_> + 10 10 7 6 -1. + <_> + 10 12 7 2 3. + <_> + + <_> + 6 15 2 2 -1. + <_> + 6 15 1 1 2. + <_> + 7 16 1 1 2. + <_> + + <_> + 6 11 8 6 -1. + <_> + 10 11 4 3 2. + <_> + 6 14 4 3 2. + <_> + + <_> + 7 6 2 2 -1. + <_> + 7 6 1 1 2. + <_> + 8 7 1 1 2. + <_> + + <_> + 2 2 16 6 -1. + <_> + 10 2 8 3 2. + <_> + 2 5 8 3 2. + <_> + + <_> + 5 4 3 3 -1. + <_> + 5 5 3 1 3. + <_> + + <_> + 11 7 3 10 -1. + <_> + 11 12 3 5 2. + <_> + + <_> + 6 7 3 10 -1. + <_> + 6 12 3 5 2. + <_> + + <_> + 10 7 3 2 -1. + <_> + 11 7 1 2 3. + <_> + + <_> + 8 12 4 2 -1. + <_> + 8 13 4 1 2. + <_> + + <_> + 10 1 1 3 -1. + <_> + 10 2 1 1 3. + <_> + + <_> + 1 2 4 18 -1. + <_> + 1 2 2 9 2. + <_> + 3 11 2 9 2. + <_> + + <_> + 12 4 4 12 -1. + <_> + 12 10 4 6 2. + <_> + + <_> + 0 0 1 6 -1. + <_> + 0 2 1 2 3. + <_> + + <_> + 9 11 2 3 -1. + <_> + 9 12 2 1 3. + <_> + + <_> + 8 7 4 3 -1. + <_> + 8 8 4 1 3. + <_> + + <_> + 10 7 3 2 -1. + <_> + 11 7 1 2 3. + <_> + + <_> + 7 7 3 2 -1. + <_> + 8 7 1 2 3. + <_> + + <_> + 9 4 6 1 -1. + <_> + 11 4 2 1 3. + <_> + + <_> + 8 7 2 3 -1. + <_> + 9 7 1 3 2. + <_> + + <_> + 12 7 8 6 -1. + <_> + 16 7 4 3 2. + <_> + 12 10 4 3 2. + <_> + + <_> + 0 7 8 6 -1. + <_> + 0 7 4 3 2. + <_> + 4 10 4 3 2. + <_> + + <_> + 18 2 2 10 -1. + <_> + 19 2 1 5 2. + <_> + 18 7 1 5 2. + <_> + + <_> + 0 2 6 4 -1. + <_> + 3 2 3 4 2. + <_> + + <_> + 9 4 6 1 -1. + <_> + 11 4 2 1 3. + <_> + + <_> + 7 15 2 2 -1. + <_> + 7 15 1 1 2. + <_> + 8 16 1 1 2. + <_> + + <_> + 11 13 1 6 -1. + <_> + 11 16 1 3 2. + <_> + + <_> + 8 13 1 6 -1. + <_> + 8 16 1 3 2. + <_> + + <_> + 14 3 2 1 -1. + <_> + 14 3 1 1 2. + <_> + + <_> + 8 15 2 3 -1. + <_> + 8 16 2 1 3. + <_> + + <_> + 12 15 7 4 -1. + <_> + 12 17 7 2 2. + <_> + + <_> + 4 14 12 3 -1. + <_> + 4 15 12 1 3. + <_> + + <_> + 10 3 3 2 -1. + <_> + 11 3 1 2 3. + <_> + + <_> + 4 12 2 2 -1. + <_> + 4 13 2 1 2. + <_> + + <_> + 10 11 4 6 -1. + <_> + 10 14 4 3 2. + <_> + + <_> + 7 13 2 2 -1. + <_> + 7 13 1 1 2. + <_> + 8 14 1 1 2. + <_> + + <_> + 4 11 14 4 -1. + <_> + 11 11 7 2 2. + <_> + 4 13 7 2 2. + <_> + + <_> + 1 18 18 2 -1. + <_> + 7 18 6 2 3. + <_> + + <_> + 11 18 2 2 -1. + <_> + 12 18 1 1 2. + <_> + 11 19 1 1 2. + <_> + + <_> + 7 18 2 2 -1. + <_> + 7 18 1 1 2. + <_> + 8 19 1 1 2. + <_> + + <_> + 12 18 8 2 -1. + <_> + 12 19 8 1 2. + <_> + + <_> + 7 14 6 2 -1. + <_> + 7 15 6 1 2. + <_> + + <_> + 8 12 4 8 -1. + <_> + 10 12 2 4 2. + <_> + 8 16 2 4 2. + <_> + + <_> + 4 9 3 3 -1. + <_> + 4 10 3 1 3. + <_> + + <_> + 7 10 6 2 -1. + <_> + 9 10 2 2 3. + <_> + + <_> + 5 0 4 15 -1. + <_> + 7 0 2 15 2. + <_> + + <_> + 8 6 12 14 -1. + <_> + 12 6 4 14 3. + <_> + + <_> + 5 16 3 3 -1. + <_> + 5 17 3 1 3. + <_> + + <_> + 8 1 12 19 -1. + <_> + 12 1 4 19 3. + <_> + + <_> + 3 0 3 2 -1. + <_> + 3 1 3 1 2. + <_> + + <_> + 10 12 4 5 -1. + <_> + 10 12 2 5 2. + <_> + + <_> + 6 12 4 5 -1. + <_> + 8 12 2 5 2. + <_> + + <_> + 11 11 2 2 -1. + <_> + 12 11 1 1 2. + <_> + 11 12 1 1 2. + <_> + + <_> + 0 2 3 6 -1. + <_> + 0 4 3 2 3. + <_> + + <_> + 11 11 2 2 -1. + <_> + 12 11 1 1 2. + <_> + 11 12 1 1 2. + <_> + + <_> + 7 6 4 10 -1. + <_> + 7 11 4 5 2. + <_> + + <_> + 11 11 2 2 -1. + <_> + 12 11 1 1 2. + <_> + 11 12 1 1 2. + <_> + + <_> + 2 13 5 2 -1. + <_> + 2 14 5 1 2. + <_> + + <_> + 11 11 2 2 -1. + <_> + 12 11 1 1 2. + <_> + 11 12 1 1 2. + <_> + + <_> + 7 11 2 2 -1. + <_> + 7 11 1 1 2. + <_> + 8 12 1 1 2. + <_> + + <_> + 14 13 3 3 -1. + <_> + 14 14 3 1 3. + <_> + + <_> + 3 13 3 3 -1. + <_> + 3 14 3 1 3. + <_> + + <_> + 9 14 2 3 -1. + <_> + 9 15 2 1 3. + <_> + + <_> + 8 7 3 3 -1. + <_> + 8 8 3 1 3. + <_> + + <_> + 13 5 3 3 -1. + <_> + 13 6 3 1 3. + <_> + + <_> + 0 9 5 3 -1. + <_> + 0 10 5 1 3. + <_> + + <_> + 13 5 3 3 -1. + <_> + 13 6 3 1 3. + <_> + + <_> + 9 12 2 8 -1. + <_> + 9 12 1 4 2. + <_> + 10 16 1 4 2. + <_> + + <_> + 11 7 2 2 -1. + <_> + 12 7 1 1 2. + <_> + 11 8 1 1 2. + <_> + + <_> + 0 16 6 4 -1. + <_> + 3 16 3 4 2. + <_> + + <_> + 10 6 2 3 -1. + <_> + 10 7 2 1 3. + <_> + + <_> + 9 5 2 6 -1. + <_> + 9 7 2 2 3. + <_> + + <_> + 12 15 8 4 -1. + <_> + 12 15 4 4 2. + <_> + + <_> + 0 14 8 6 -1. + <_> + 4 14 4 6 2. + <_> + + <_> + 9 0 3 2 -1. + <_> + 10 0 1 2 3. + <_> + + <_> + 4 15 4 2 -1. + <_> + 6 15 2 2 2. + <_> + + <_> + 12 7 3 13 -1. + <_> + 13 7 1 13 3. + <_> + + <_> + 5 7 3 13 -1. + <_> + 6 7 1 13 3. + <_> + + <_> + 9 6 3 9 -1. + <_> + 9 9 3 3 3. + <_> + + <_> + 4 4 7 12 -1. + <_> + 4 10 7 6 2. + <_> + + <_> + 12 12 2 2 -1. + <_> + 13 12 1 1 2. + <_> + 12 13 1 1 2. + <_> + + <_> + 6 12 2 2 -1. + <_> + 6 12 1 1 2. + <_> + 7 13 1 1 2. + <_> + + <_> + 8 9 4 2 -1. + <_> + 10 9 2 1 2. + <_> + 8 10 2 1 2. + <_> + + <_> + 3 6 2 2 -1. + <_> + 3 6 1 1 2. + <_> + 4 7 1 1 2. + <_> + + <_> + 16 6 3 2 -1. + <_> + 16 7 3 1 2. + <_> + + <_> + 0 7 19 4 -1. + <_> + 0 9 19 2 2. + <_> + + <_> + 10 2 10 1 -1. + <_> + 10 2 5 1 2. + <_> + + <_> + 9 4 2 12 -1. + <_> + 9 10 2 6 2. + <_> + + <_> + 12 18 4 1 -1. + <_> + 12 18 2 1 2. + <_> + + <_> + 1 7 6 4 -1. + <_> + 1 7 3 2 2. + <_> + 4 9 3 2 2. + <_> + + <_> + 12 0 6 13 -1. + <_> + 14 0 2 13 3. + <_> + + <_> + 2 0 6 13 -1. + <_> + 4 0 2 13 3. + <_> + + <_> + 10 5 8 8 -1. + <_> + 10 9 8 4 2. + <_> + + <_> + 8 3 2 5 -1. + <_> + 9 3 1 5 2. + <_> + + <_> + 8 4 9 1 -1. + <_> + 11 4 3 1 3. + <_> + + <_> + 3 4 9 1 -1. + <_> + 6 4 3 1 3. + <_> + + <_> + 1 0 18 10 -1. + <_> + 7 0 6 10 3. + <_> + + <_> + 7 17 5 3 -1. + <_> + 7 18 5 1 3. + <_> + + <_> + 7 11 6 1 -1. + <_> + 9 11 2 1 3. + <_> + + <_> + 2 2 3 2 -1. + <_> + 2 3 3 1 2. + <_> + + <_> + 8 12 4 2 -1. + <_> + 8 13 4 1 2. + <_> + + <_> + 6 10 3 6 -1. + <_> + 6 13 3 3 2. + <_> + + <_> + 11 4 2 4 -1. + <_> + 11 4 1 4 2. + <_> + + <_> + 7 4 2 4 -1. + <_> + 8 4 1 4 2. + <_> + + <_> + 9 6 2 4 -1. + <_> + 9 6 1 4 2. + <_> + + <_> + 6 13 8 3 -1. + <_> + 6 14 8 1 3. + <_> + + <_> + 9 15 3 4 -1. + <_> + 10 15 1 4 3. + <_> + + <_> + 9 2 2 17 -1. + <_> + 10 2 1 17 2. + <_> + + <_> + 7 0 6 1 -1. + <_> + 9 0 2 1 3. + <_> + + <_> + 8 15 3 4 -1. + <_> + 9 15 1 4 3. + <_> + + <_> + 7 13 7 3 -1. + <_> + 7 14 7 1 3. + <_> + + <_> + 8 16 3 3 -1. + <_> + 9 16 1 3 3. + <_> + + <_> + 6 2 8 10 -1. + <_> + 6 7 8 5 2. + <_> + + <_> + 2 5 8 8 -1. + <_> + 2 9 8 4 2. + <_> + + <_> + 14 16 2 2 -1. + <_> + 14 17 2 1 2. + <_> + + <_> + 4 16 2 2 -1. + <_> + 4 17 2 1 2. + <_> + + <_> + 10 11 4 6 -1. + <_> + 10 14 4 3 2. + <_> + + <_> + 6 11 4 6 -1. + <_> + 6 14 4 3 2. + <_> + + <_> + 10 14 1 3 -1. + <_> + 10 15 1 1 3. + <_> + + <_> + 8 14 4 3 -1. + <_> + 8 15 4 1 3. + <_> + + <_> + 10 0 4 6 -1. + <_> + 12 0 2 3 2. + <_> + 10 3 2 3 2. + <_> + + <_> + 0 3 20 2 -1. + <_> + 0 4 20 1 2. + <_> + + <_> + 12 0 8 2 -1. + <_> + 16 0 4 1 2. + <_> + 12 1 4 1 2. + <_> + + <_> + 2 12 10 8 -1. + <_> + 2 16 10 4 2. + <_> + + <_> + 17 7 2 10 -1. + <_> + 18 7 1 5 2. + <_> + 17 12 1 5 2. + <_> + + <_> + 1 7 2 10 -1. + <_> + 1 7 1 5 2. + <_> + 2 12 1 5 2. + <_> + + <_> + 15 10 3 6 -1. + <_> + 15 12 3 2 3. + <_> + + <_> + 4 4 6 2 -1. + <_> + 6 4 2 2 3. + <_> + + <_> + 0 5 20 6 -1. + <_> + 0 7 20 2 3. + <_> + + <_> + 0 0 8 2 -1. + <_> + 0 0 4 1 2. + <_> + 4 1 4 1 2. + <_> + + <_> + 1 0 18 4 -1. + <_> + 7 0 6 4 3. + <_> + + <_> + 1 13 6 2 -1. + <_> + 1 14 6 1 2. + <_> + + <_> + 10 8 3 4 -1. + <_> + 11 8 1 4 3. + <_> + + <_> + 6 1 6 1 -1. + <_> + 8 1 2 1 3. + <_> + + <_> + 8 14 4 3 -1. + <_> + 8 15 4 1 3. + <_> + + <_> + 1 6 18 2 -1. + <_> + 10 6 9 2 2. + <_> + + <_> + 15 11 1 2 -1. + <_> + 15 12 1 1 2. + <_> + + <_> + 6 5 1 2 -1. + <_> + 6 6 1 1 2. + <_> + + <_> + 13 4 1 3 -1. + <_> + 13 5 1 1 3. + <_> + + <_> + 2 15 1 2 -1. + <_> + 2 16 1 1 2. + <_> + + <_> + 12 4 4 3 -1. + <_> + 12 5 4 1 3. + <_> + + <_> + 0 0 7 3 -1. + <_> + 0 1 7 1 3. + <_> + + <_> + 9 12 6 2 -1. + <_> + 9 12 3 2 2. + <_> + + <_> + 5 4 2 3 -1. + <_> + 5 5 2 1 3. + <_> + + <_> + 18 4 2 3 -1. + <_> + 18 5 2 1 3. + <_> + + <_> + 3 0 8 6 -1. + <_> + 3 2 8 2 3. + <_> + + <_> + 0 2 20 6 -1. + <_> + 10 2 10 3 2. + <_> + 0 5 10 3 2. + <_> + + <_> + 4 7 2 4 -1. + <_> + 5 7 1 4 2. + <_> + + <_> + 3 10 15 2 -1. + <_> + 8 10 5 2 3. + <_> + + <_> + 3 0 12 11 -1. + <_> + 9 0 6 11 2. + <_> + + <_> + 13 0 2 6 -1. + <_> + 13 0 1 6 2. + <_> + + <_> + 0 19 2 1 -1. + <_> + 1 19 1 1 2. + <_> + + <_> + 16 10 4 10 -1. + <_> + 18 10 2 5 2. + <_> + 16 15 2 5 2. + <_> + + <_> + 4 8 10 3 -1. + <_> + 4 9 10 1 3. + <_> + + <_> + 14 12 3 3 -1. + <_> + 14 13 3 1 3. + <_> + + <_> + 0 10 4 10 -1. + <_> + 0 10 2 5 2. + <_> + 2 15 2 5 2. + <_> + + <_> + 18 3 2 6 -1. + <_> + 18 5 2 2 3. + <_> + + <_> + 6 6 1 3 -1. + <_> + 6 7 1 1 3. + <_> + + <_> + 7 7 7 2 -1. + <_> + 7 8 7 1 2. + <_> + + <_> + 0 3 2 6 -1. + <_> + 0 5 2 2 3. + <_> + + <_> + 11 1 3 1 -1. + <_> + 12 1 1 1 3. + <_> + + <_> + 5 0 2 6 -1. + <_> + 6 0 1 6 2. + <_> + + <_> + 1 1 18 14 -1. + <_> + 7 1 6 14 3. + <_> + + <_> + 4 6 8 3 -1. + <_> + 8 6 4 3 2. + <_> + + <_> + 9 12 6 2 -1. + <_> + 9 12 3 2 2. + <_> + + <_> + 5 12 6 2 -1. + <_> + 8 12 3 2 2. + <_> + + <_> + 10 7 3 5 -1. + <_> + 11 7 1 5 3. + <_> + + <_> + 7 7 3 5 -1. + <_> + 8 7 1 5 3. + <_> + + <_> + 13 0 3 10 -1. + <_> + 14 0 1 10 3. + <_> + + <_> + 4 11 3 2 -1. + <_> + 4 12 3 1 2. + <_> + + <_> + 17 3 3 6 -1. + <_> + 18 3 1 6 3. + <_> + + <_> + 1 8 18 10 -1. + <_> + 1 13 18 5 2. + <_> + + <_> + 13 0 3 10 -1. + <_> + 14 0 1 10 3. + <_> + + <_> + 9 14 2 3 -1. + <_> + 9 15 2 1 3. + <_> + + <_> + 16 3 3 7 -1. + <_> + 17 3 1 7 3. + <_> + + <_> + 4 0 3 10 -1. + <_> + 5 0 1 10 3. + <_> + + <_> + 16 3 3 7 -1. + <_> + 17 3 1 7 3. + <_> + + <_> + 0 9 1 2 -1. + <_> + 0 10 1 1 2. + <_> + + <_> + 18 1 2 10 -1. + <_> + 18 1 1 10 2. + <_> + + <_> + 0 1 2 10 -1. + <_> + 1 1 1 10 2. + <_> + + <_> + 10 16 3 4 -1. + <_> + 11 16 1 4 3. + <_> + + <_> + 2 8 3 3 -1. + <_> + 3 8 1 3 3. + <_> + + <_> + 11 0 2 6 -1. + <_> + 12 0 1 3 2. + <_> + 11 3 1 3 2. + <_> + + <_> + 7 0 2 6 -1. + <_> + 7 0 1 3 2. + <_> + 8 3 1 3 2. + <_> + + <_> + 16 3 3 7 -1. + <_> + 17 3 1 7 3. + <_> + + <_> + 1 3 3 7 -1. + <_> + 2 3 1 7 3. + <_> + + <_> + 14 1 6 16 -1. + <_> + 16 1 2 16 3. + <_> + + <_> + 0 1 6 16 -1. + <_> + 2 1 2 16 3. + <_> + + <_> + 2 0 16 8 -1. + <_> + 10 0 8 4 2. + <_> + 2 4 8 4 2. + <_> + + <_> + 6 8 5 3 -1. + <_> + 6 9 5 1 3. + <_> + + <_> + 9 7 3 3 -1. + <_> + 10 7 1 3 3. + <_> + + <_> + 8 8 4 3 -1. + <_> + 8 9 4 1 3. + <_> + + <_> + 9 6 2 4 -1. + <_> + 9 6 1 4 2. + <_> + + <_> + 0 7 15 1 -1. + <_> + 5 7 5 1 3. + <_> + + <_> + 8 2 7 9 -1. + <_> + 8 5 7 3 3. + <_> + + <_> + 1 7 16 4 -1. + <_> + 1 7 8 2 2. + <_> + 9 9 8 2 2. + <_> + + <_> + 6 12 8 2 -1. + <_> + 6 13 8 1 2. + <_> + + <_> + 8 11 3 3 -1. + <_> + 8 12 3 1 3. + <_> + + <_> + 4 5 14 10 -1. + <_> + 11 5 7 5 2. + <_> + 4 10 7 5 2. + <_> + + <_> + 4 12 3 2 -1. + <_> + 4 13 3 1 2. + <_> + + <_> + 9 11 6 1 -1. + <_> + 11 11 2 1 3. + <_> + + <_> + 4 9 7 6 -1. + <_> + 4 11 7 2 3. + <_> + + <_> + 7 10 6 3 -1. + <_> + 7 11 6 1 3. + <_> + + <_> + 9 11 2 2 -1. + <_> + 9 12 2 1 2. + <_> + + <_> + 0 5 20 6 -1. + <_> + 0 7 20 2 3. + <_> + + <_> + 6 4 6 1 -1. + <_> + 8 4 2 1 3. + <_> + + <_> + 9 11 6 1 -1. + <_> + 11 11 2 1 3. + <_> + + <_> + 5 11 6 1 -1. + <_> + 7 11 2 1 3. + <_> + + <_> + 10 16 3 4 -1. + <_> + 11 16 1 4 3. + <_> + + <_> + 8 7 3 3 -1. + <_> + 9 7 1 3 3. + <_> + + <_> + 2 12 16 8 -1. + <_> + 2 16 16 4 2. + <_> + + <_> + 0 15 15 2 -1. + <_> + 0 16 15 1 2. + <_> + + <_> + 15 4 5 6 -1. + <_> + 15 6 5 2 3. + <_> + + <_> + 9 5 2 4 -1. + <_> + 10 5 1 4 2. + <_> + + <_> + 8 10 9 6 -1. + <_> + 8 12 9 2 3. + <_> + + <_> + 2 19 15 1 -1. + <_> + 7 19 5 1 3. + <_> + + <_> + 10 16 3 4 -1. + <_> + 11 16 1 4 3. + <_> + + <_> + 0 15 20 4 -1. + <_> + 0 17 20 2 2. + <_> + + <_> + 10 16 3 4 -1. + <_> + 11 16 1 4 3. + <_> + + <_> + 7 16 3 4 -1. + <_> + 8 16 1 4 3. + <_> + + <_> + 9 16 3 3 -1. + <_> + 9 17 3 1 3. + <_> + + <_> + 8 11 4 6 -1. + <_> + 8 14 4 3 2. + <_> + + <_> + 9 6 2 12 -1. + <_> + 9 10 2 4 3. + <_> + + <_> + 8 17 4 3 -1. + <_> + 8 18 4 1 3. + <_> + + <_> + 9 18 8 2 -1. + <_> + 13 18 4 1 2. + <_> + 9 19 4 1 2. + <_> + + <_> + 1 18 8 2 -1. + <_> + 1 19 8 1 2. + <_> + + <_> + 13 5 6 15 -1. + <_> + 15 5 2 15 3. + <_> + + <_> + 9 8 2 2 -1. + <_> + 9 9 2 1 2. + <_> + + <_> + 9 5 2 3 -1. + <_> + 9 5 1 3 2. + <_> + + <_> + 1 5 6 15 -1. + <_> + 3 5 2 15 3. + <_> + + <_> + 4 1 14 8 -1. + <_> + 11 1 7 4 2. + <_> + 4 5 7 4 2. + <_> + + <_> + 2 4 4 16 -1. + <_> + 2 4 2 8 2. + <_> + 4 12 2 8 2. + <_> + + <_> + 12 4 3 12 -1. + <_> + 12 10 3 6 2. + <_> + + <_> + 4 5 10 12 -1. + <_> + 4 5 5 6 2. + <_> + 9 11 5 6 2. + <_> + + <_> + 9 14 2 3 -1. + <_> + 9 15 2 1 3. + <_> + + <_> + 5 4 2 3 -1. + <_> + 5 5 2 1 3. + <_> + + <_> + 12 2 4 10 -1. + <_> + 14 2 2 5 2. + <_> + 12 7 2 5 2. + <_> + + <_> + 6 4 7 3 -1. + <_> + 6 5 7 1 3. + <_> + + <_> + 2 0 18 2 -1. + <_> + 11 0 9 1 2. + <_> + 2 1 9 1 2. + <_> + + <_> + 0 0 18 2 -1. + <_> + 0 0 9 1 2. + <_> + 9 1 9 1 2. + <_> + + <_> + 13 13 4 6 -1. + <_> + 15 13 2 3 2. + <_> + 13 16 2 3 2. + <_> + + <_> + 3 13 4 6 -1. + <_> + 3 13 2 3 2. + <_> + 5 16 2 3 2. + <_> + + <_> + 10 12 2 6 -1. + <_> + 10 15 2 3 2. + <_> + + <_> + 5 9 10 10 -1. + <_> + 5 9 5 5 2. + <_> + 10 14 5 5 2. + <_> + + <_> + 11 4 4 2 -1. + <_> + 13 4 2 1 2. + <_> + 11 5 2 1 2. + <_> + + <_> + 7 12 6 8 -1. + <_> + 10 12 3 8 2. + <_> + + <_> + 12 2 4 10 -1. + <_> + 14 2 2 5 2. + <_> + 12 7 2 5 2. + <_> + + <_> + 8 11 2 1 -1. + <_> + 9 11 1 1 2. + <_> + + <_> + 10 5 1 12 -1. + <_> + 10 9 1 4 3. + <_> + + <_> + 0 11 6 9 -1. + <_> + 3 11 3 9 2. + <_> + + <_> + 12 2 4 10 -1. + <_> + 14 2 2 5 2. + <_> + 12 7 2 5 2. + <_> + + <_> + 4 2 4 10 -1. + <_> + 4 2 2 5 2. + <_> + 6 7 2 5 2. + <_> + + <_> + 11 4 4 2 -1. + <_> + 13 4 2 1 2. + <_> + 11 5 2 1 2. + <_> + + <_> + 0 14 6 3 -1. + <_> + 0 15 6 1 3. + <_> + + <_> + 11 4 4 2 -1. + <_> + 13 4 2 1 2. + <_> + 11 5 2 1 2. + <_> + + <_> + 6 1 3 2 -1. + <_> + 7 1 1 2 3. + <_> + + <_> + 11 4 4 2 -1. + <_> + 13 4 2 1 2. + <_> + 11 5 2 1 2. + <_> + + <_> + 5 4 4 2 -1. + <_> + 5 4 2 1 2. + <_> + 7 5 2 1 2. + <_> + + <_> + 13 0 2 12 -1. + <_> + 14 0 1 6 2. + <_> + 13 6 1 6 2. + <_> + + <_> + 6 0 3 10 -1. + <_> + 7 0 1 10 3. + <_> + + <_> + 3 0 17 8 -1. + <_> + 3 4 17 4 2. + <_> + + <_> + 0 4 20 4 -1. + <_> + 0 6 20 2 2. + <_> + + <_> + 0 3 8 2 -1. + <_> + 4 3 4 2 2. + <_> + + <_> + 8 11 4 3 -1. + <_> + 8 12 4 1 3. + <_> + + <_> + 5 7 6 4 -1. + <_> + 5 7 3 2 2. + <_> + 8 9 3 2 2. + <_> + + <_> + 8 3 4 9 -1. + <_> + 8 6 4 3 3. + <_> + + <_> + 8 15 1 4 -1. + <_> + 8 17 1 2 2. + <_> + + <_> + 4 5 12 7 -1. + <_> + 8 5 4 7 3. + <_> + + <_> + 4 2 4 10 -1. + <_> + 4 2 2 5 2. + <_> + 6 7 2 5 2. + <_> + + <_> + 3 0 17 2 -1. + <_> + 3 1 17 1 2. + <_> + + <_> + 2 2 16 15 -1. + <_> + 2 7 16 5 3. + <_> + + <_> + 15 2 5 2 -1. + <_> + 15 3 5 1 2. + <_> + + <_> + 9 3 2 2 -1. + <_> + 10 3 1 2 2. + <_> + + <_> + 4 5 16 15 -1. + <_> + 4 10 16 5 3. + <_> + + <_> + 7 13 5 6 -1. + <_> + 7 16 5 3 2. + <_> + + <_> + 10 7 3 2 -1. + <_> + 11 7 1 2 3. + <_> + + <_> + 8 3 3 1 -1. + <_> + 9 3 1 1 3. + <_> + + <_> + 9 16 3 3 -1. + <_> + 9 17 3 1 3. + <_> + + <_> + 0 2 5 2 -1. + <_> + 0 3 5 1 2. + <_> + + <_> + 12 5 4 3 -1. + <_> + 12 6 4 1 3. + <_> + + <_> + 1 7 12 1 -1. + <_> + 5 7 4 1 3. + <_> + + <_> + 7 5 6 14 -1. + <_> + 7 12 6 7 2. + <_> + + <_> + 0 0 8 10 -1. + <_> + 0 0 4 5 2. + <_> + 4 5 4 5 2. + <_> + + <_> + 9 1 3 2 -1. + <_> + 10 1 1 2 3. + <_> + + <_> + 8 1 3 2 -1. + <_> + 9 1 1 2 3. + <_> + + <_> + 12 4 3 3 -1. + <_> + 12 5 3 1 3. + <_> + + <_> + 7 4 6 16 -1. + <_> + 7 12 6 8 2. + <_> + + <_> + 12 4 3 3 -1. + <_> + 12 5 3 1 3. + <_> + + <_> + 2 3 2 6 -1. + <_> + 2 5 2 2 3. + <_> + + <_> + 14 2 6 9 -1. + <_> + 14 5 6 3 3. + <_> + + <_> + 5 4 3 3 -1. + <_> + 5 5 3 1 3. + <_> + + <_> + 9 17 3 2 -1. + <_> + 10 17 1 2 3. + <_> + + <_> + 5 5 2 3 -1. + <_> + 5 6 2 1 3. + <_> + + <_> + 13 11 3 6 -1. + <_> + 13 13 3 2 3. + <_> + + <_> + 3 14 2 6 -1. + <_> + 3 17 2 3 2. + <_> + + <_> + 14 3 6 2 -1. + <_> + 14 4 6 1 2. + <_> + + <_> + 0 8 16 2 -1. + <_> + 0 9 16 1 2. + <_> + + <_> + 14 3 6 2 -1. + <_> + 14 4 6 1 2. + <_> + + <_> + 0 0 5 6 -1. + <_> + 0 2 5 2 3. + <_> + + <_> + 12 5 4 3 -1. + <_> + 12 6 4 1 3. + <_> + + <_> + 4 11 3 6 -1. + <_> + 4 13 3 2 3. + <_> + + <_> + 12 5 4 3 -1. + <_> + 12 6 4 1 3. + <_> + + <_> + 9 5 1 3 -1. + <_> + 9 6 1 1 3. + <_> + + <_> + 12 5 4 3 -1. + <_> + 12 6 4 1 3. + <_> + + <_> + 6 6 8 12 -1. + <_> + 6 12 8 6 2. + <_> + + <_> + 12 5 4 3 -1. + <_> + 12 6 4 1 3. + <_> + + <_> + 5 12 9 2 -1. + <_> + 8 12 3 2 3. + <_> + + <_> + 12 5 4 3 -1. + <_> + 12 6 4 1 3. + <_> + + <_> + 4 5 4 3 -1. + <_> + 4 6 4 1 3. + <_> + + <_> + 6 6 9 2 -1. + <_> + 9 6 3 2 3. + <_> + + <_> + 4 11 1 3 -1. + <_> + 4 12 1 1 3. + <_> + + <_> + 14 12 6 6 -1. + <_> + 14 12 3 6 2. + <_> + + <_> + 7 0 3 7 -1. + <_> + 8 0 1 7 3. + <_> + + <_> + 9 8 3 3 -1. + <_> + 10 8 1 3 3. + <_> + + <_> + 8 8 3 3 -1. + <_> + 9 8 1 3 3. + <_> + + <_> + 5 10 11 3 -1. + <_> + 5 11 11 1 3. + <_> + + <_> + 5 7 10 1 -1. + <_> + 10 7 5 1 2. + <_> + + <_> + 9 7 3 2 -1. + <_> + 10 7 1 2 3. + <_> + + <_> + 8 7 3 2 -1. + <_> + 9 7 1 2 3. + <_> + + <_> + 11 9 4 2 -1. + <_> + 11 9 2 2 2. + <_> + + <_> + 5 9 4 2 -1. + <_> + 7 9 2 2 2. + <_> + + <_> + 14 10 2 4 -1. + <_> + 14 12 2 2 2. + <_> + + <_> + 7 7 3 2 -1. + <_> + 8 7 1 2 3. + <_> + + <_> + 14 17 6 3 -1. + <_> + 14 18 6 1 3. + <_> + + <_> + 4 5 12 12 -1. + <_> + 4 5 6 6 2. + <_> + 10 11 6 6 2. + <_> + + <_> + 6 9 8 8 -1. + <_> + 10 9 4 4 2. + <_> + 6 13 4 4 2. + <_> + + <_> + 0 4 15 4 -1. + <_> + 5 4 5 4 3. + <_> + + <_> + 13 2 4 1 -1. + <_> + 13 2 2 1 2. + <_> + + <_> + 4 12 2 2 -1. + <_> + 4 13 2 1 2. + <_> + + <_> + 8 13 4 3 -1. + <_> + 8 14 4 1 3. + <_> + + <_> + 9 13 2 3 -1. + <_> + 9 14 2 1 3. + <_> + + <_> + 13 11 2 3 -1. + <_> + 13 12 2 1 3. + <_> + + <_> + 7 12 4 4 -1. + <_> + 7 12 2 2 2. + <_> + 9 14 2 2 2. + <_> + + <_> + 10 11 2 2 -1. + <_> + 11 11 1 1 2. + <_> + 10 12 1 1 2. + <_> + + <_> + 8 17 3 2 -1. + <_> + 9 17 1 2 3. + <_> + + <_> + 10 11 2 2 -1. + <_> + 11 11 1 1 2. + <_> + 10 12 1 1 2. + <_> + + <_> + 0 17 6 3 -1. + <_> + 0 18 6 1 3. + <_> + + <_> + 10 11 2 2 -1. + <_> + 11 11 1 1 2. + <_> + 10 12 1 1 2. + <_> + + <_> + 8 11 2 2 -1. + <_> + 8 11 1 1 2. + <_> + 9 12 1 1 2. + <_> + + <_> + 12 5 8 4 -1. + <_> + 12 5 4 4 2. + <_> + + <_> + 0 5 8 4 -1. + <_> + 4 5 4 4 2. + <_> + + <_> + 13 2 4 1 -1. + <_> + 13 2 2 1 2. + <_> + + <_> + 3 2 4 1 -1. + <_> + 5 2 2 1 2. + <_> + + <_> + 10 0 4 2 -1. + <_> + 12 0 2 1 2. + <_> + 10 1 2 1 2. + <_> + + <_> + 7 12 3 1 -1. + <_> + 8 12 1 1 3. + <_> + + <_> + 8 11 4 8 -1. + <_> + 10 11 2 4 2. + <_> + 8 15 2 4 2. + <_> + + <_> + 9 9 2 2 -1. + <_> + 9 10 2 1 2. + <_> + + <_> + 3 18 15 2 -1. + <_> + 3 19 15 1 2. + <_> + + <_> + 2 6 2 12 -1. + <_> + 2 6 1 6 2. + <_> + 3 12 1 6 2. + <_> + + <_> + 9 8 2 3 -1. + <_> + 9 9 2 1 3. + <_> + + <_> + 7 10 3 2 -1. + <_> + 8 10 1 2 3. + <_> + + <_> + 11 11 3 1 -1. + <_> + 12 11 1 1 3. + <_> + + <_> + 6 11 3 1 -1. + <_> + 7 11 1 1 3. + <_> + + <_> + 9 2 4 2 -1. + <_> + 11 2 2 1 2. + <_> + 9 3 2 1 2. + <_> + + <_> + 4 12 2 3 -1. + <_> + 4 13 2 1 3. + <_> + + <_> + 2 1 18 3 -1. + <_> + 8 1 6 3 3. + <_> + + <_> + 5 1 4 14 -1. + <_> + 7 1 2 14 2. + <_> + + <_> + 8 16 12 3 -1. + <_> + 8 16 6 3 2. + <_> + + <_> + 1 17 18 3 -1. + <_> + 7 17 6 3 3. + <_> + + <_> + 9 14 2 6 -1. + <_> + 9 17 2 3 2. + <_> + + <_> + 9 12 1 8 -1. + <_> + 9 16 1 4 2. + <_> + + <_> + 9 14 2 3 -1. + <_> + 9 15 2 1 3. + <_> + + <_> + 9 6 2 12 -1. + <_> + 9 10 2 4 3. + <_> + + <_> + 12 9 3 3 -1. + <_> + 12 10 3 1 3. + <_> + + <_> + 0 1 4 8 -1. + <_> + 2 1 2 8 2. + <_> + + <_> + 9 1 6 2 -1. + <_> + 12 1 3 1 2. + <_> + 9 2 3 1 2. + <_> + + <_> + 1 3 12 14 -1. + <_> + 1 10 12 7 2. + <_> + + <_> + 8 12 4 2 -1. + <_> + 10 12 2 1 2. + <_> + 8 13 2 1 2. + <_> + + <_> + 1 9 10 2 -1. + <_> + 1 9 5 1 2. + <_> + 6 10 5 1 2. + <_> + + <_> + 8 15 4 3 -1. + <_> + 8 16 4 1 3. + <_> + + <_> + 6 8 8 3 -1. + <_> + 6 9 8 1 3. + <_> + + <_> + 9 15 5 3 -1. + <_> + 9 16 5 1 3. + <_> + + <_> + 8 7 4 3 -1. + <_> + 8 8 4 1 3. + <_> + + <_> + 7 7 6 2 -1. + <_> + 7 8 6 1 2. + <_> + + <_> + 5 7 8 2 -1. + <_> + 5 7 4 1 2. + <_> + 9 8 4 1 2. + <_> + + <_> + 12 9 3 3 -1. + <_> + 12 10 3 1 3. + <_> + + <_> + 4 7 4 2 -1. + <_> + 4 8 4 1 2. + <_> + + <_> + 14 2 6 9 -1. + <_> + 14 5 6 3 3. + <_> + + <_> + 4 9 3 3 -1. + <_> + 5 9 1 3 3. + <_> + + <_> + 12 9 3 3 -1. + <_> + 12 10 3 1 3. + <_> + + <_> + 0 2 6 9 -1. + <_> + 0 5 6 3 3. + <_> + + <_> + 17 3 3 6 -1. + <_> + 18 3 1 6 3. + <_> + + <_> + 0 3 3 6 -1. + <_> + 1 3 1 6 3. + <_> + + <_> + 17 14 1 2 -1. + <_> + 17 15 1 1 2. + <_> + + <_> + 4 9 4 3 -1. + <_> + 6 9 2 3 2. + <_> + + <_> + 12 9 3 3 -1. + <_> + 12 10 3 1 3. + <_> + + <_> + 5 9 3 3 -1. + <_> + 5 10 3 1 3. + <_> + + <_> + 9 5 6 8 -1. + <_> + 12 5 3 4 2. + <_> + 9 9 3 4 2. + <_> + + <_> + 5 5 6 8 -1. + <_> + 5 5 3 4 2. + <_> + 8 9 3 4 2. + <_> + + <_> + 16 1 4 6 -1. + <_> + 16 4 4 3 2. + <_> + + <_> + 1 0 6 20 -1. + <_> + 3 0 2 20 3. + <_> + + <_> + 12 11 3 2 -1. + <_> + 13 11 1 2 3. + <_> + + <_> + 5 11 3 2 -1. + <_> + 6 11 1 2 3. + <_> + + <_> + 9 4 6 1 -1. + <_> + 11 4 2 1 3. + <_> + + <_> + 0 0 8 3 -1. + <_> + 4 0 4 3 2. + <_> + + <_> + 15 0 2 5 -1. + <_> + 15 0 1 5 2. + <_> + + <_> + 4 1 3 2 -1. + <_> + 5 1 1 2 3. + <_> + + <_> + 7 0 6 15 -1. + <_> + 9 0 2 15 3. + <_> + + <_> + 6 11 3 1 -1. + <_> + 7 11 1 1 3. + <_> + + <_> + 12 0 3 4 -1. + <_> + 13 0 1 4 3. + <_> + + <_> + 5 4 6 1 -1. + <_> + 7 4 2 1 3. + <_> + + <_> + 12 7 3 2 -1. + <_> + 12 8 3 1 2. + <_> + + <_> + 0 1 4 6 -1. + <_> + 0 4 4 3 2. + <_> + + <_> + 12 7 3 2 -1. + <_> + 12 8 3 1 2. + <_> + + <_> + 2 16 3 3 -1. + <_> + 2 17 3 1 3. + <_> + + <_> + 13 8 6 10 -1. + <_> + 16 8 3 5 2. + <_> + 13 13 3 5 2. + <_> + + <_> + 0 9 5 2 -1. + <_> + 0 10 5 1 2. + <_> + + <_> + 12 11 2 2 -1. + <_> + 13 11 1 1 2. + <_> + 12 12 1 1 2. + <_> + + <_> + 3 15 3 3 -1. + <_> + 3 16 3 1 3. + <_> + + <_> + 12 7 3 2 -1. + <_> + 12 8 3 1 2. + <_> + + <_> + 5 7 3 2 -1. + <_> + 5 8 3 1 2. + <_> + + <_> + 9 5 9 9 -1. + <_> + 9 8 9 3 3. + <_> + + <_> + 5 0 3 7 -1. + <_> + 6 0 1 7 3. + <_> + + <_> + 5 2 12 5 -1. + <_> + 9 2 4 5 3. + <_> + + <_> + 6 11 2 2 -1. + <_> + 6 11 1 1 2. + <_> + 7 12 1 1 2. + <_> + + <_> + 15 15 3 2 -1. + <_> + 15 16 3 1 2. + <_> + + <_> + 2 15 3 2 -1. + <_> + 2 16 3 1 2. + <_> + + <_> + 14 12 6 8 -1. + <_> + 17 12 3 4 2. + <_> + 14 16 3 4 2. + <_> + + <_> + 2 8 15 6 -1. + <_> + 7 8 5 6 3. + <_> + + <_> + 2 2 18 17 -1. + <_> + 8 2 6 17 3. + <_> + + <_> + 5 1 4 1 -1. + <_> + 7 1 2 1 2. + <_> + + <_> + 5 2 12 5 -1. + <_> + 9 2 4 5 3. + <_> + + <_> + 3 2 12 5 -1. + <_> + 7 2 4 5 3. + <_> + + <_> + 4 9 12 4 -1. + <_> + 10 9 6 2 2. + <_> + 4 11 6 2 2. + <_> + + <_> + 5 15 6 2 -1. + <_> + 5 15 3 1 2. + <_> + 8 16 3 1 2. + <_> + + <_> + 10 14 2 3 -1. + <_> + 10 15 2 1 3. + <_> + + <_> + 0 13 20 2 -1. + <_> + 0 13 10 1 2. + <_> + 10 14 10 1 2. + <_> + + <_> + 4 9 12 8 -1. + <_> + 10 9 6 4 2. + <_> + 4 13 6 4 2. + <_> + + <_> + 8 13 3 6 -1. + <_> + 8 16 3 3 2. + <_> + + <_> + 10 12 2 2 -1. + <_> + 10 13 2 1 2. + <_> + + <_> + 9 12 2 2 -1. + <_> + 9 12 1 1 2. + <_> + 10 13 1 1 2. + <_> + + <_> + 4 11 14 4 -1. + <_> + 11 11 7 2 2. + <_> + 4 13 7 2 2. + <_> + + <_> + 8 5 4 2 -1. + <_> + 8 6 4 1 2. + <_> + + <_> + 10 10 6 3 -1. + <_> + 12 10 2 3 3. + <_> + + <_> + 2 14 1 2 -1. + <_> + 2 15 1 1 2. + <_> + + <_> + 13 8 6 12 -1. + <_> + 16 8 3 6 2. + <_> + 13 14 3 6 2. + <_> + + <_> + 1 8 6 12 -1. + <_> + 1 8 3 6 2. + <_> + 4 14 3 6 2. + <_> + + <_> + 10 0 6 10 -1. + <_> + 12 0 2 10 3. + <_> + + <_> + 5 11 8 4 -1. + <_> + 5 11 4 2 2. + <_> + 9 13 4 2 2. + <_> + + <_> + 10 16 8 4 -1. + <_> + 14 16 4 2 2. + <_> + 10 18 4 2 2. + <_> + + <_> + 7 7 6 6 -1. + <_> + 9 7 2 6 3. + <_> + + <_> + 10 2 4 10 -1. + <_> + 10 2 2 10 2. + <_> + + <_> + 6 1 4 9 -1. + <_> + 8 1 2 9 2. + <_> + + <_> + 12 19 2 1 -1. + <_> + 12 19 1 1 2. + <_> + + <_> + 1 2 4 9 -1. + <_> + 3 2 2 9 2. + <_> + + <_> + 7 5 6 4 -1. + <_> + 9 5 2 4 3. + <_> + + <_> + 9 4 2 4 -1. + <_> + 9 6 2 2 2. + <_> + + <_> + 14 5 2 8 -1. + <_> + 14 9 2 4 2. + <_> + + <_> + 7 6 5 12 -1. + <_> + 7 12 5 6 2. + <_> + + <_> + 14 6 2 6 -1. + <_> + 14 9 2 3 2. + <_> + + <_> + 4 6 2 6 -1. + <_> + 4 9 2 3 2. + <_> + + <_> + 8 15 10 4 -1. + <_> + 13 15 5 2 2. + <_> + 8 17 5 2 2. + <_> + + <_> + 6 18 2 2 -1. + <_> + 7 18 1 2 2. + <_> + + <_> + 11 3 6 2 -1. + <_> + 11 4 6 1 2. + <_> + + <_> + 2 0 16 6 -1. + <_> + 2 2 16 2 3. + <_> + + <_> + 11 3 6 2 -1. + <_> + 11 4 6 1 2. + <_> + + <_> + 4 11 10 3 -1. + <_> + 4 12 10 1 3. + <_> + + <_> + 11 3 6 2 -1. + <_> + 11 4 6 1 2. + <_> + + <_> + 3 3 6 2 -1. + <_> + 3 4 6 1 2. + <_> + + <_> + 16 0 4 7 -1. + <_> + 16 0 2 7 2. + <_> + + <_> + 0 14 9 6 -1. + <_> + 0 16 9 2 3. + <_> + + <_> + 9 16 3 3 -1. + <_> + 9 17 3 1 3. + <_> + + <_> + 4 6 6 2 -1. + <_> + 6 6 2 2 3. + <_> + + <_> + 15 11 1 3 -1. + <_> + 15 12 1 1 3. + <_> + + <_> + 5 5 2 3 -1. + <_> + 5 6 2 1 3. + <_> + + <_> + 10 9 2 2 -1. + <_> + 10 10 2 1 2. + <_> + + <_> + 3 1 4 3 -1. + <_> + 5 1 2 3 2. + <_> + + <_> + 16 0 4 7 -1. + <_> + 16 0 2 7 2. + <_> + + <_> + 0 0 20 1 -1. + <_> + 10 0 10 1 2. + <_> + + <_> + 15 11 1 3 -1. + <_> + 15 12 1 1 3. + <_> + + <_> + 0 4 3 4 -1. + <_> + 1 4 1 4 3. + <_> + + <_> + 16 3 3 6 -1. + <_> + 16 5 3 2 3. + <_> + + <_> + 1 3 3 6 -1. + <_> + 1 5 3 2 3. + <_> + + <_> + 6 2 12 6 -1. + <_> + 12 2 6 3 2. + <_> + 6 5 6 3 2. + <_> + + <_> + 8 10 4 3 -1. + <_> + 8 11 4 1 3. + <_> + + <_> + 4 2 14 6 -1. + <_> + 11 2 7 3 2. + <_> + 4 5 7 3 2. + <_> + + <_> + 9 11 2 3 -1. + <_> + 9 12 2 1 3. + <_> + + <_> + 15 13 2 3 -1. + <_> + 15 14 2 1 3. + <_> + + <_> + 8 12 4 3 -1. + <_> + 8 13 4 1 3. + <_> + + <_> + 15 11 1 3 -1. + <_> + 15 12 1 1 3. + <_> + + <_> + 7 13 5 2 -1. + <_> + 7 14 5 1 2. + <_> + + <_> + 7 12 6 3 -1. + <_> + 7 13 6 1 3. + <_> + + <_> + 5 11 4 4 -1. + <_> + 5 13 4 2 2. + <_> + + <_> + 11 4 3 3 -1. + <_> + 12 4 1 3 3. + <_> + + <_> + 6 4 3 3 -1. + <_> + 7 4 1 3 3. + <_> + + <_> + 16 5 3 6 -1. + <_> + 17 5 1 6 3. + <_> + + <_> + 3 6 12 7 -1. + <_> + 7 6 4 7 3. + <_> + + <_> + 16 5 3 6 -1. + <_> + 17 5 1 6 3. + <_> + + <_> + 3 13 2 3 -1. + <_> + 3 14 2 1 3. + <_> + + <_> + 16 5 3 6 -1. + <_> + 17 5 1 6 3. + <_> + + <_> + 1 5 3 6 -1. + <_> + 2 5 1 6 3. + <_> + + <_> + 1 9 18 1 -1. + <_> + 7 9 6 1 3. + <_> + + <_> + 0 9 8 7 -1. + <_> + 4 9 4 7 2. + <_> + + <_> + 12 11 8 2 -1. + <_> + 12 12 8 1 2. + <_> + + <_> + 0 11 8 2 -1. + <_> + 0 12 8 1 2. + <_> + + <_> + 9 13 2 3 -1. + <_> + 9 14 2 1 3. + <_> + + <_> + 4 10 12 4 -1. + <_> + 4 10 6 2 2. + <_> + 10 12 6 2 2. + <_> + + <_> + 9 3 3 7 -1. + <_> + 10 3 1 7 3. + <_> + + <_> + 7 2 3 5 -1. + <_> + 8 2 1 5 3. + <_> + + <_> + 9 12 4 6 -1. + <_> + 11 12 2 3 2. + <_> + 9 15 2 3 2. + <_> + + <_> + 8 7 3 6 -1. + <_> + 9 7 1 6 3. + <_> + + <_> + 15 4 4 2 -1. + <_> + 15 5 4 1 2. + <_> + + <_> + 8 7 3 3 -1. + <_> + 9 7 1 3 3. + <_> + + <_> + 14 2 6 4 -1. + <_> + 14 4 6 2 2. + <_> + + <_> + 7 16 6 1 -1. + <_> + 9 16 2 1 3. + <_> + + <_> + 15 13 2 3 -1. + <_> + 15 14 2 1 3. + <_> + + <_> + 8 7 3 10 -1. + <_> + 9 7 1 10 3. + <_> + + <_> + 11 10 2 6 -1. + <_> + 11 12 2 2 3. + <_> + + <_> + 6 10 4 1 -1. + <_> + 8 10 2 1 2. + <_> + + <_> + 10 9 2 2 -1. + <_> + 10 10 2 1 2. + <_> + + <_> + 8 9 2 2 -1. + <_> + 8 10 2 1 2. + <_> + + <_> + 12 7 2 2 -1. + <_> + 13 7 1 1 2. + <_> + 12 8 1 1 2. + <_> + + <_> + 5 7 2 2 -1. + <_> + 5 7 1 1 2. + <_> + 6 8 1 1 2. + <_> + + <_> + 13 0 3 14 -1. + <_> + 14 0 1 14 3. + <_> + + <_> + 4 0 3 14 -1. + <_> + 5 0 1 14 3. + <_> + + <_> + 13 4 3 14 -1. + <_> + 14 4 1 14 3. + <_> + + <_> + 9 14 2 3 -1. + <_> + 9 15 2 1 3. + <_> + + <_> + 8 14 4 3 -1. + <_> + 8 15 4 1 3. + <_> + + <_> + 4 2 3 16 -1. + <_> + 5 2 1 16 3. + <_> + + <_> + 7 2 8 10 -1. + <_> + 7 7 8 5 2. + <_> + + <_> + 6 14 7 3 -1. + <_> + 6 15 7 1 3. + <_> + + <_> + 9 2 10 12 -1. + <_> + 14 2 5 6 2. + <_> + 9 8 5 6 2. + <_> + + <_> + 6 7 8 2 -1. + <_> + 6 8 8 1 2. + <_> + + <_> + 8 13 4 6 -1. + <_> + 8 16 4 3 2. + <_> + + <_> + 6 6 1 3 -1. + <_> + 6 7 1 1 3. + <_> + + <_> + 16 2 4 6 -1. + <_> + 16 4 4 2 3. + <_> + + <_> + 6 6 4 2 -1. + <_> + 6 6 2 1 2. + <_> + 8 7 2 1 2. + <_> + + <_> + 16 2 4 6 -1. + <_> + 16 4 4 2 3. + <_> + + <_> + 0 2 4 6 -1. + <_> + 0 4 4 2 3. + <_> + + <_> + 9 6 2 6 -1. + <_> + 9 6 1 6 2. + <_> + + <_> + 3 4 6 10 -1. + <_> + 3 9 6 5 2. + <_> + + <_> + 9 5 2 6 -1. + <_> + 9 5 1 6 2. + <_> + + <_> + 3 13 2 3 -1. + <_> + 3 14 2 1 3. + <_> + + <_> + 13 13 3 2 -1. + <_> + 13 14 3 1 2. + <_> + + <_> + 2 16 10 4 -1. + <_> + 2 16 5 2 2. + <_> + 7 18 5 2 2. + <_> + + <_> + 5 6 10 6 -1. + <_> + 10 6 5 3 2. + <_> + 5 9 5 3 2. + <_> + + <_> + 7 14 1 3 -1. + <_> + 7 15 1 1 3. + <_> + + <_> + 14 16 6 3 -1. + <_> + 14 17 6 1 3. + <_> + + <_> + 5 4 3 3 -1. + <_> + 5 5 3 1 3. + <_> + + <_> + 7 4 10 3 -1. + <_> + 7 5 10 1 3. + <_> + + <_> + 0 4 5 4 -1. + <_> + 0 6 5 2 2. + <_> + + <_> + 13 11 3 9 -1. + <_> + 13 14 3 3 3. + <_> + + <_> + 4 11 3 9 -1. + <_> + 4 14 3 3 3. + <_> + + <_> + 9 7 2 1 -1. + <_> + 9 7 1 1 2. + <_> + + <_> + 5 0 6 17 -1. + <_> + 7 0 2 17 3. + <_> + + <_> + 10 3 6 3 -1. + <_> + 10 3 3 3 2. + <_> + + <_> + 2 2 15 4 -1. + <_> + 7 2 5 4 3. + <_> + + <_> + 8 2 8 2 -1. + <_> + 12 2 4 1 2. + <_> + 8 3 4 1 2. + <_> + + <_> + 8 1 3 6 -1. + <_> + 8 3 3 2 3. + <_> + + <_> + 9 17 2 2 -1. + <_> + 9 18 2 1 2. + <_> + + <_> + 0 0 2 14 -1. + <_> + 1 0 1 14 2. + <_> + + <_> + 12 0 7 3 -1. + <_> + 12 1 7 1 3. + <_> + + <_> + 1 14 1 2 -1. + <_> + 1 15 1 1 2. + <_> + + <_> + 14 12 2 8 -1. + <_> + 15 12 1 4 2. + <_> + 14 16 1 4 2. + <_> + + <_> + 1 0 7 3 -1. + <_> + 1 1 7 1 3. + <_> + + <_> + 14 12 2 8 -1. + <_> + 15 12 1 4 2. + <_> + 14 16 1 4 2. + <_> + + <_> + 6 0 8 12 -1. + <_> + 6 0 4 6 2. + <_> + 10 6 4 6 2. + <_> + + <_> + 6 1 8 9 -1. + <_> + 6 4 8 3 3. + <_> + + <_> + 5 2 2 2 -1. + <_> + 5 3 2 1 2. + <_> + + <_> + 13 14 6 6 -1. + <_> + 16 14 3 3 2. + <_> + 13 17 3 3 2. + <_> + + <_> + 0 17 20 2 -1. + <_> + 0 17 10 1 2. + <_> + 10 18 10 1 2. + <_> + + <_> + 10 3 2 6 -1. + <_> + 11 3 1 3 2. + <_> + 10 6 1 3 2. + <_> + + <_> + 5 12 6 2 -1. + <_> + 8 12 3 2 2. + <_> + + <_> + 10 7 6 13 -1. + <_> + 10 7 3 13 2. + <_> + + <_> + 5 15 10 5 -1. + <_> + 10 15 5 5 2. + <_> + + <_> + 10 4 4 10 -1. + <_> + 10 4 2 10 2. + <_> + + <_> + 5 7 2 1 -1. + <_> + 6 7 1 1 2. + <_> + + <_> + 10 3 6 7 -1. + <_> + 10 3 3 7 2. + <_> + + <_> + 4 3 6 7 -1. + <_> + 7 3 3 7 2. + <_> + + <_> + 1 7 18 5 -1. + <_> + 7 7 6 5 3. + <_> + + <_> + 3 17 4 3 -1. + <_> + 5 17 2 3 2. + <_> + + <_> + 8 14 12 6 -1. + <_> + 14 14 6 3 2. + <_> + 8 17 6 3 2. + <_> + + <_> + 0 13 20 4 -1. + <_> + 0 13 10 2 2. + <_> + 10 15 10 2 2. + <_> + + <_> + 4 5 14 2 -1. + <_> + 11 5 7 1 2. + <_> + 4 6 7 1 2. + <_> + + <_> + 1 2 10 12 -1. + <_> + 1 2 5 6 2. + <_> + 6 8 5 6 2. + <_> + + <_> + 6 1 14 3 -1. + <_> + 6 2 14 1 3. + <_> + + <_> + 8 16 2 3 -1. + <_> + 8 17 2 1 3. + <_> + + <_> + 9 17 3 2 -1. + <_> + 10 17 1 2 3. + <_> + + <_> + 5 15 4 2 -1. + <_> + 5 15 2 1 2. + <_> + 7 16 2 1 2. + <_> + + <_> + 10 15 1 3 -1. + <_> + 10 16 1 1 3. + <_> + + <_> + 8 16 4 4 -1. + <_> + 8 16 2 2 2. + <_> + 10 18 2 2 2. + <_> + + <_> + 6 11 8 6 -1. + <_> + 6 14 8 3 2. + <_> + + <_> + 2 13 5 2 -1. + <_> + 2 14 5 1 2. + <_> + + <_> + 13 14 6 6 -1. + <_> + 16 14 3 3 2. + <_> + 13 17 3 3 2. + <_> + + <_> + 1 9 18 4 -1. + <_> + 7 9 6 4 3. + <_> + + <_> + 13 14 6 6 -1. + <_> + 16 14 3 3 2. + <_> + 13 17 3 3 2. + <_> + + <_> + 0 2 1 6 -1. + <_> + 0 4 1 2 3. + <_> + + <_> + 5 0 15 20 -1. + <_> + 5 10 15 10 2. + <_> + + <_> + 1 14 6 6 -1. + <_> + 1 14 3 3 2. + <_> + 4 17 3 3 2. + <_> + + <_> + 8 14 4 6 -1. + <_> + 10 14 2 3 2. + <_> + 8 17 2 3 2. + <_> + + <_> + 7 11 2 1 -1. + <_> + 8 11 1 1 2. + <_> + + <_> + 9 17 3 2 -1. + <_> + 10 17 1 2 3. + <_> + + <_> + 8 17 3 2 -1. + <_> + 9 17 1 2 3. + <_> + + <_> + 12 14 4 6 -1. + <_> + 14 14 2 3 2. + <_> + 12 17 2 3 2. + <_> + + <_> + 4 14 4 6 -1. + <_> + 4 14 2 3 2. + <_> + 6 17 2 3 2. + <_> + + <_> + 13 14 2 6 -1. + <_> + 14 14 1 3 2. + <_> + 13 17 1 3 2. + <_> + + <_> + 5 14 2 6 -1. + <_> + 5 14 1 3 2. + <_> + 6 17 1 3 2. + <_> + + <_> + 7 0 6 12 -1. + <_> + 7 4 6 4 3. + <_> + + <_> + 0 7 12 2 -1. + <_> + 4 7 4 2 3. + <_> + + <_> + 10 3 3 13 -1. + <_> + 11 3 1 13 3. + <_> + + <_> + 7 3 3 13 -1. + <_> + 8 3 1 13 3. + <_> + + <_> + 10 8 6 3 -1. + <_> + 10 9 6 1 3. + <_> + + <_> + 3 11 3 2 -1. + <_> + 4 11 1 2 3. + <_> + + <_> + 13 12 6 8 -1. + <_> + 16 12 3 4 2. + <_> + 13 16 3 4 2. + <_> + + <_> + 7 6 6 5 -1. + <_> + 9 6 2 5 3. + <_> + + <_> + 17 11 2 7 -1. + <_> + 17 11 1 7 2. + <_> + + <_> + 3 13 8 2 -1. + <_> + 7 13 4 2 2. + <_> + + <_> + 6 9 8 3 -1. + <_> + 6 10 8 1 3. + <_> + + <_> + 4 3 4 3 -1. + <_> + 4 4 4 1 3. + <_> + + <_> + 11 3 4 3 -1. + <_> + 11 4 4 1 3. + <_> + + <_> + 1 4 17 12 -1. + <_> + 1 8 17 4 3. + <_> + + <_> + 11 3 4 3 -1. + <_> + 11 4 4 1 3. + <_> + + <_> + 4 8 6 3 -1. + <_> + 4 9 6 1 3. + <_> + + <_> + 12 3 5 3 -1. + <_> + 12 4 5 1 3. + <_> + + <_> + 1 11 2 7 -1. + <_> + 2 11 1 7 2. + <_> + + <_> + 15 12 2 8 -1. + <_> + 16 12 1 4 2. + <_> + 15 16 1 4 2. + <_> + + <_> + 4 8 11 3 -1. + <_> + 4 9 11 1 3. + <_> + + <_> + 9 13 6 2 -1. + <_> + 12 13 3 1 2. + <_> + 9 14 3 1 2. + <_> + + <_> + 6 13 4 3 -1. + <_> + 6 14 4 1 3. + <_> + + <_> + 9 12 3 3 -1. + <_> + 10 12 1 3 3. + <_> + + <_> + 5 3 3 3 -1. + <_> + 5 4 3 1 3. + <_> + + <_> + 9 4 2 3 -1. + <_> + 9 5 2 1 3. + <_> + + <_> + 0 2 16 3 -1. + <_> + 0 3 16 1 3. + <_> + + <_> + 15 12 2 8 -1. + <_> + 16 12 1 4 2. + <_> + 15 16 1 4 2. + <_> + + <_> + 3 12 2 8 -1. + <_> + 3 12 1 4 2. + <_> + 4 16 1 4 2. + <_> + + <_> + 14 13 3 6 -1. + <_> + 14 15 3 2 3. + <_> + + <_> + 3 13 3 6 -1. + <_> + 3 15 3 2 3. + <_> + + <_> + 6 5 10 2 -1. + <_> + 11 5 5 1 2. + <_> + 6 6 5 1 2. + <_> + + <_> + 2 14 14 6 -1. + <_> + 2 17 14 3 2. + <_> + + <_> + 10 14 1 3 -1. + <_> + 10 15 1 1 3. + <_> + + <_> + 4 16 2 2 -1. + <_> + 4 16 1 1 2. + <_> + 5 17 1 1 2. + <_> + + <_> + 10 6 2 3 -1. + <_> + 10 7 2 1 3. + <_> + + <_> + 0 17 20 2 -1. + <_> + 0 17 10 1 2. + <_> + 10 18 10 1 2. + <_> + + <_> + 13 6 1 3 -1. + <_> + 13 7 1 1 3. + <_> + + <_> + 8 13 3 2 -1. + <_> + 9 13 1 2 3. + <_> + + <_> + 12 2 3 3 -1. + <_> + 13 2 1 3 3. + <_> + + <_> + 3 18 2 2 -1. + <_> + 3 18 1 1 2. + <_> + 4 19 1 1 2. + <_> + + <_> + 9 16 3 4 -1. + <_> + 10 16 1 4 3. + <_> + + <_> + 6 6 1 3 -1. + <_> + 6 7 1 1 3. + <_> + + <_> + 13 1 5 2 -1. + <_> + 13 2 5 1 2. + <_> + + <_> + 7 14 6 2 -1. + <_> + 7 14 3 1 2. + <_> + 10 15 3 1 2. + <_> + + <_> + 11 3 3 4 -1. + <_> + 12 3 1 4 3. + <_> + + <_> + 1 13 12 6 -1. + <_> + 5 13 4 6 3. + <_> + + <_> + 14 11 5 2 -1. + <_> + 14 12 5 1 2. + <_> + + <_> + 2 15 14 4 -1. + <_> + 2 15 7 2 2. + <_> + 9 17 7 2 2. + <_> + + <_> + 3 7 14 2 -1. + <_> + 10 7 7 1 2. + <_> + 3 8 7 1 2. + <_> + + <_> + 1 11 4 2 -1. + <_> + 1 12 4 1 2. + <_> + + <_> + 14 0 6 14 -1. + <_> + 16 0 2 14 3. + <_> + + <_> + 4 11 1 3 -1. + <_> + 4 12 1 1 3. + <_> + + <_> + 14 0 6 14 -1. + <_> + 16 0 2 14 3. + <_> + + <_> + 1 10 3 7 -1. + <_> + 2 10 1 7 3. + <_> + + <_> + 8 12 9 2 -1. + <_> + 8 13 9 1 2. + <_> + + <_> + 0 6 20 1 -1. + <_> + 10 6 10 1 2. + <_> + + <_> + 8 4 4 4 -1. + <_> + 8 4 2 4 2. + <_> + + <_> + 0 0 2 2 -1. + <_> + 0 1 2 1 2. + <_> + + <_> + 5 3 10 9 -1. + <_> + 5 6 10 3 3. + <_> + + <_> + 15 2 4 10 -1. + <_> + 15 2 2 10 2. + <_> + + <_> + 8 2 2 7 -1. + <_> + 9 2 1 7 2. + <_> + + <_> + 7 4 12 1 -1. + <_> + 11 4 4 1 3. + <_> + + <_> + 3 4 9 1 -1. + <_> + 6 4 3 1 3. + <_> + + <_> + 15 10 1 4 -1. + <_> + 15 12 1 2 2. + <_> + + <_> + 4 10 6 4 -1. + <_> + 7 10 3 4 2. + <_> + + <_> + 15 9 1 6 -1. + <_> + 15 12 1 3 2. + <_> + + <_> + 7 17 6 3 -1. + <_> + 7 18 6 1 3. + <_> + + <_> + 14 3 2 16 -1. + <_> + 15 3 1 8 2. + <_> + 14 11 1 8 2. + <_> + + <_> + 4 9 1 6 -1. + <_> + 4 12 1 3 2. + <_> + + <_> + 12 1 5 2 -1. + <_> + 12 2 5 1 2. + <_> + + <_> + 6 18 4 2 -1. + <_> + 6 18 2 1 2. + <_> + 8 19 2 1 2. + <_> + + <_> + 2 4 16 10 -1. + <_> + 10 4 8 5 2. + <_> + 2 9 8 5 2. + <_> + + <_> + 6 5 1 10 -1. + <_> + 6 10 1 5 2. + <_> + + <_> + 4 8 15 2 -1. + <_> + 9 8 5 2 3. + <_> + + <_> + 1 8 15 2 -1. + <_> + 6 8 5 2 3. + <_> + + <_> + 9 5 3 6 -1. + <_> + 9 7 3 2 3. + <_> + + <_> + 5 7 8 2 -1. + <_> + 9 7 4 2 2. + <_> + + <_> + 9 11 2 3 -1. + <_> + 9 12 2 1 3. + <_> + + <_> + 1 0 16 3 -1. + <_> + 1 1 16 1 3. + <_> + + <_> + 11 2 7 2 -1. + <_> + 11 3 7 1 2. + <_> + + <_> + 5 1 10 18 -1. + <_> + 5 7 10 6 3. + <_> + + <_> + 17 4 3 2 -1. + <_> + 18 4 1 2 3. + <_> + + <_> + 8 13 1 3 -1. + <_> + 8 14 1 1 3. + <_> + + <_> + 3 14 14 6 -1. + <_> + 3 16 14 2 3. + <_> + + <_> + 0 2 3 4 -1. + <_> + 1 2 1 4 3. + <_> + + <_> + 12 1 5 2 -1. + <_> + 12 2 5 1 2. + <_> + + <_> + 3 1 5 2 -1. + <_> + 3 2 5 1 2. + <_> + + <_> + 10 13 2 3 -1. + <_> + 10 14 2 1 3. + <_> + + <_> + 8 13 2 3 -1. + <_> + 8 14 2 1 3. + <_> + + <_> + 14 12 2 3 -1. + <_> + 14 13 2 1 3. + <_> + + <_> + 7 2 2 3 -1. + <_> + 7 3 2 1 3. + <_> + + <_> + 5 6 10 4 -1. + <_> + 10 6 5 2 2. + <_> + 5 8 5 2 2. + <_> + + <_> + 9 13 1 6 -1. + <_> + 9 16 1 3 2. + <_> + + <_> + 10 12 2 2 -1. + <_> + 11 12 1 1 2. + <_> + 10 13 1 1 2. + <_> + + <_> + 4 12 2 3 -1. + <_> + 4 13 2 1 3. + <_> + + <_> + 14 4 6 6 -1. + <_> + 14 6 6 2 3. + <_> + + <_> + 8 17 2 3 -1. + <_> + 8 18 2 1 3. + <_> + + <_> + 16 4 4 6 -1. + <_> + 16 6 4 2 3. + <_> + + <_> + 0 4 4 6 -1. + <_> + 0 6 4 2 3. + <_> + + <_> + 14 6 2 3 -1. + <_> + 14 6 1 3 2. + <_> + + <_> + 4 9 8 1 -1. + <_> + 8 9 4 1 2. + <_> + + <_> + 8 12 4 3 -1. + <_> + 8 13 4 1 3. + <_> + + <_> + 5 12 10 6 -1. + <_> + 5 14 10 2 3. + <_> + + <_> + 11 12 1 2 -1. + <_> + 11 13 1 1 2. + <_> + + <_> + 8 15 4 2 -1. + <_> + 8 16 4 1 2. + <_> + + <_> + 6 9 8 8 -1. + <_> + 10 9 4 4 2. + <_> + 6 13 4 4 2. + <_> + + <_> + 7 12 4 6 -1. + <_> + 7 12 2 3 2. + <_> + 9 15 2 3 2. + <_> + + <_> + 10 11 3 1 -1. + <_> + 11 11 1 1 3. + <_> + + <_> + 9 7 2 10 -1. + <_> + 9 7 1 5 2. + <_> + 10 12 1 5 2. + <_> + + <_> + 8 0 6 6 -1. + <_> + 10 0 2 6 3. + <_> + + <_> + 3 11 2 6 -1. + <_> + 3 13 2 2 3. + <_> + + <_> + 16 12 1 2 -1. + <_> + 16 13 1 1 2. + <_> + + <_> + 1 14 6 6 -1. + <_> + 1 14 3 3 2. + <_> + 4 17 3 3 2. + <_> + + <_> + 13 1 3 6 -1. + <_> + 14 1 1 6 3. + <_> + + <_> + 8 8 2 2 -1. + <_> + 8 9 2 1 2. + <_> + + <_> + 9 9 3 3 -1. + <_> + 10 9 1 3 3. + <_> + + <_> + 8 7 3 3 -1. + <_> + 8 8 3 1 3. + <_> + + <_> + 14 0 2 3 -1. + <_> + 14 0 1 3 2. + <_> + + <_> + 1 0 18 9 -1. + <_> + 7 0 6 9 3. + <_> + + <_> + 11 5 4 15 -1. + <_> + 11 5 2 15 2. + <_> + + <_> + 5 5 4 15 -1. + <_> + 7 5 2 15 2. + <_> + + <_> + 14 0 2 3 -1. + <_> + 14 0 1 3 2. + <_> + + <_> + 4 0 2 3 -1. + <_> + 5 0 1 3 2. + <_> + + <_> + 11 12 2 2 -1. + <_> + 12 12 1 1 2. + <_> + 11 13 1 1 2. + <_> + + <_> + 7 12 2 2 -1. + <_> + 7 12 1 1 2. + <_> + 8 13 1 1 2. + <_> + + <_> + 12 0 3 4 -1. + <_> + 13 0 1 4 3. + <_> + + <_> + 4 11 3 3 -1. + <_> + 4 12 3 1 3. + <_> + + <_> + 12 7 4 2 -1. + <_> + 12 8 4 1 2. + <_> + + <_> + 8 10 3 2 -1. + <_> + 9 10 1 2 3. + <_> + + <_> + 9 9 3 2 -1. + <_> + 10 9 1 2 3. + <_> + + <_> + 8 9 3 2 -1. + <_> + 9 9 1 2 3. + <_> + + <_> + 12 0 3 4 -1. + <_> + 13 0 1 4 3. + <_> + + <_> + 5 0 3 4 -1. + <_> + 6 0 1 4 3. + <_> + + <_> + 4 14 12 4 -1. + <_> + 10 14 6 2 2. + <_> + 4 16 6 2 2. + <_> + + <_> + 8 13 2 3 -1. + <_> + 8 14 2 1 3. + <_> + + <_> + 10 10 3 8 -1. + <_> + 10 14 3 4 2. + <_> + + <_> + 8 10 4 8 -1. + <_> + 8 10 2 4 2. + <_> + 10 14 2 4 2. + <_> + + <_> + 10 8 3 1 -1. + <_> + 11 8 1 1 3. + <_> + + <_> + 9 12 1 6 -1. + <_> + 9 15 1 3 2. + <_> + + <_> + 10 8 3 1 -1. + <_> + 11 8 1 1 3. + <_> + + <_> + 7 8 3 1 -1. + <_> + 8 8 1 1 3. + <_> + + <_> + 5 2 15 14 -1. + <_> + 5 9 15 7 2. + <_> + + <_> + 2 1 2 10 -1. + <_> + 2 1 1 5 2. + <_> + 3 6 1 5 2. + <_> + + <_> + 14 14 2 3 -1. + <_> + 14 15 2 1 3. + <_> + + <_> + 2 7 3 3 -1. + <_> + 3 7 1 3 3. + <_> + + <_> + 17 4 3 3 -1. + <_> + 17 5 3 1 3. + <_> + + <_> + 0 4 3 3 -1. + <_> + 0 5 3 1 3. + <_> + + <_> + 13 5 6 2 -1. + <_> + 16 5 3 1 2. + <_> + 13 6 3 1 2. + <_> + + <_> + 4 19 12 1 -1. + <_> + 8 19 4 1 3. + <_> + + <_> + 12 12 2 4 -1. + <_> + 12 14 2 2 2. + <_> + + <_> + 3 15 1 3 -1. + <_> + 3 16 1 1 3. + <_> + + <_> + 11 16 6 4 -1. + <_> + 11 16 3 4 2. + <_> + + <_> + 2 10 3 10 -1. + <_> + 3 10 1 10 3. + <_> + + <_> + 12 8 2 4 -1. + <_> + 12 8 1 4 2. + <_> + + <_> + 6 8 2 4 -1. + <_> + 7 8 1 4 2. + <_> + + <_> + 10 14 2 3 -1. + <_> + 10 14 1 3 2. + <_> + + <_> + 5 1 10 3 -1. + <_> + 10 1 5 3 2. + <_> + + <_> + 10 7 3 2 -1. + <_> + 11 7 1 2 3. + <_> + + <_> + 5 6 9 2 -1. + <_> + 8 6 3 2 3. + <_> + + <_> + 9 8 2 2 -1. + <_> + 9 9 2 1 2. + <_> + + <_> + 2 11 16 6 -1. + <_> + 2 11 8 3 2. + <_> + 10 14 8 3 2. + <_> + + <_> + 12 7 2 2 -1. + <_> + 13 7 1 1 2. + <_> + 12 8 1 1 2. + <_> + + <_> + 9 5 2 3 -1. + <_> + 9 6 2 1 3. + <_> + + <_> + 9 7 3 2 -1. + <_> + 10 7 1 2 3. + <_> + + <_> + 5 1 8 12 -1. + <_> + 5 7 8 6 2. + <_> + + <_> + 13 5 2 2 -1. + <_> + 13 6 2 1 2. + <_> + + <_> + 5 5 2 2 -1. + <_> + 5 6 2 1 2. + <_> + + <_> + 12 4 3 3 -1. + <_> + 12 5 3 1 3. + <_> + + <_> + 4 14 2 3 -1. + <_> + 4 15 2 1 3. + <_> + + <_> + 12 4 3 3 -1. + <_> + 12 5 3 1 3. + <_> + + <_> + 5 4 3 3 -1. + <_> + 5 5 3 1 3. + <_> + + <_> + 9 14 2 6 -1. + <_> + 10 14 1 3 2. + <_> + 9 17 1 3 2. + <_> + + <_> + 8 14 3 2 -1. + <_> + 9 14 1 2 3. + <_> + + <_> + 9 5 6 6 -1. + <_> + 11 5 2 6 3. + <_> + + <_> + 5 5 6 6 -1. + <_> + 7 5 2 6 3. + <_> + + <_> + 13 13 1 2 -1. + <_> + 13 14 1 1 2. + <_> + + <_> + 0 2 10 2 -1. + <_> + 0 3 10 1 2. + <_> + + <_> + 13 13 1 2 -1. + <_> + 13 14 1 1 2. + <_> + + <_> + 5 7 2 2 -1. + <_> + 5 7 1 1 2. + <_> + 6 8 1 1 2. + <_> + + <_> + 13 5 2 7 -1. + <_> + 13 5 1 7 2. + <_> + + <_> + 6 13 1 2 -1. + <_> + 6 14 1 1 2. + <_> + + <_> + 11 0 3 7 -1. + <_> + 12 0 1 7 3. + <_> + + <_> + 0 3 2 16 -1. + <_> + 0 3 1 8 2. + <_> + 1 11 1 8 2. + <_> + + <_> + 11 0 3 7 -1. + <_> + 12 0 1 7 3. + <_> + + <_> + 6 0 3 7 -1. + <_> + 7 0 1 7 3. + <_> + + <_> + 11 16 8 4 -1. + <_> + 11 16 4 4 2. + <_> + + <_> + 1 16 8 4 -1. + <_> + 5 16 4 4 2. + <_> + + <_> + 13 5 2 7 -1. + <_> + 13 5 1 7 2. + <_> + + <_> + 5 5 2 7 -1. + <_> + 6 5 1 7 2. + <_> + + <_> + 18 6 2 14 -1. + <_> + 18 13 2 7 2. + <_> + + <_> + 6 10 3 4 -1. + <_> + 6 12 3 2 2. + <_> + + <_> + 14 7 1 2 -1. + <_> + 14 8 1 1 2. + <_> + + <_> + 0 1 18 6 -1. + <_> + 0 1 9 3 2. + <_> + 9 4 9 3 2. + <_> + + <_> + 14 7 1 2 -1. + <_> + 14 8 1 1 2. + <_> + + <_> + 0 6 2 14 -1. + <_> + 0 13 2 7 2. + <_> + + <_> + 17 0 3 12 -1. + <_> + 18 0 1 12 3. + <_> + + <_> + 0 6 18 3 -1. + <_> + 0 7 18 1 3. + <_> + + <_> + 6 0 14 16 -1. + <_> + 6 8 14 8 2. + <_> + + <_> + 0 0 3 12 -1. + <_> + 1 0 1 12 3. + <_> + + <_> + 13 0 3 7 -1. + <_> + 14 0 1 7 3. + <_> + + <_> + 5 7 1 2 -1. + <_> + 5 8 1 1 2. + <_> + + <_> + 14 4 6 6 -1. + <_> + 14 6 6 2 3. + <_> + + <_> + 5 7 7 2 -1. + <_> + 5 8 7 1 2. + <_> + + <_> + 8 6 6 9 -1. + <_> + 8 9 6 3 3. + <_> + + <_> + 5 4 6 1 -1. + <_> + 7 4 2 1 3. + <_> + + <_> + 13 0 6 4 -1. + <_> + 16 0 3 2 2. + <_> + 13 2 3 2 2. + <_> + + <_> + 1 2 18 12 -1. + <_> + 1 6 18 4 3. + <_> + + <_> + 3 2 17 12 -1. + <_> + 3 6 17 4 3. + <_> + + <_> + 5 14 7 3 -1. + <_> + 5 15 7 1 3. + <_> + + <_> + 10 14 1 3 -1. + <_> + 10 15 1 1 3. + <_> + + <_> + 3 14 3 3 -1. + <_> + 3 15 3 1 3. + <_> + + <_> + 14 4 6 6 -1. + <_> + 14 6 6 2 3. + <_> + + <_> + 0 4 6 6 -1. + <_> + 0 6 6 2 3. + <_> + + <_> + 12 5 4 3 -1. + <_> + 12 6 4 1 3. + <_> + + <_> + 4 5 4 3 -1. + <_> + 4 6 4 1 3. + <_> + + <_> + 18 0 2 6 -1. + <_> + 18 2 2 2 3. + <_> + + <_> + 8 1 4 9 -1. + <_> + 10 1 2 9 2. + <_> + + <_> + 6 6 8 2 -1. + <_> + 6 6 4 2 2. + <_> + + <_> + 6 5 4 2 -1. + <_> + 6 5 2 1 2. + <_> + 8 6 2 1 2. + <_> + + <_> + 10 5 2 3 -1. + <_> + 10 6 2 1 3. + <_> + + <_> + 9 5 1 3 -1. + <_> + 9 6 1 1 3. + <_> + + <_> + 9 10 2 2 -1. + <_> + 9 11 2 1 2. + <_> + + <_> + 0 8 4 3 -1. + <_> + 0 9 4 1 3. + <_> + + <_> + 6 0 8 6 -1. + <_> + 6 3 8 3 2. + <_> + + <_> + 1 0 6 4 -1. + <_> + 1 0 3 2 2. + <_> + 4 2 3 2 2. + <_> + + <_> + 13 0 3 7 -1. + <_> + 14 0 1 7 3. + <_> + + <_> + 9 16 2 2 -1. + <_> + 9 17 2 1 2. + <_> + + <_> + 11 4 6 10 -1. + <_> + 11 9 6 5 2. + <_> + + <_> + 0 10 19 2 -1. + <_> + 0 11 19 1 2. + <_> + + <_> + 9 5 8 9 -1. + <_> + 9 8 8 3 3. + <_> + + <_> + 4 0 3 7 -1. + <_> + 5 0 1 7 3. + <_> + + <_> + 8 6 4 12 -1. + <_> + 10 6 2 6 2. + <_> + 8 12 2 6 2. + <_> + + <_> + 0 2 6 4 -1. + <_> + 0 4 6 2 2. + <_> + + <_> + 8 15 4 3 -1. + <_> + 8 16 4 1 3. + <_> + + <_> + 8 0 3 7 -1. + <_> + 9 0 1 7 3. + <_> + + <_> + 9 5 3 4 -1. + <_> + 10 5 1 4 3. + <_> + + <_> + 8 5 3 4 -1. + <_> + 9 5 1 4 3. + <_> + + <_> + 7 6 6 1 -1. + <_> + 9 6 2 1 3. + <_> + + <_> + 7 14 4 4 -1. + <_> + 7 14 2 2 2. + <_> + 9 16 2 2 2. + <_> + + <_> + 13 14 4 6 -1. + <_> + 15 14 2 3 2. + <_> + 13 17 2 3 2. + <_> + + <_> + 7 8 1 8 -1. + <_> + 7 12 1 4 2. + <_> + + <_> + 16 0 2 8 -1. + <_> + 17 0 1 4 2. + <_> + 16 4 1 4 2. + <_> + + <_> + 2 0 2 8 -1. + <_> + 2 0 1 4 2. + <_> + 3 4 1 4 2. + <_> + + <_> + 6 1 14 3 -1. + <_> + 6 2 14 1 3. + <_> + + <_> + 7 9 3 10 -1. + <_> + 7 14 3 5 2. + <_> + + <_> + 9 14 2 2 -1. + <_> + 9 15 2 1 2. + <_> + + <_> + 7 7 6 8 -1. + <_> + 7 11 6 4 2. + <_> + + <_> + 9 7 3 6 -1. + <_> + 9 10 3 3 2. + <_> + + <_> + 7 13 3 3 -1. + <_> + 7 14 3 1 3. + <_> + + <_> + 9 9 2 2 -1. + <_> + 9 10 2 1 2. + <_> + + <_> + 0 1 18 2 -1. + <_> + 6 1 6 2 3. + <_> + + <_> + 7 1 6 14 -1. + <_> + 7 8 6 7 2. + <_> + + <_> + 1 9 18 1 -1. + <_> + 7 9 6 1 3. + <_> + + <_> + 9 7 2 2 -1. + <_> + 9 7 1 2 2. + <_> + + <_> + 9 3 2 9 -1. + <_> + 10 3 1 9 2. + <_> + + <_> + 18 14 2 3 -1. + <_> + 18 15 2 1 3. + <_> + + <_> + 7 11 3 1 -1. + <_> + 8 11 1 1 3. + <_> + + <_> + 10 8 3 4 -1. + <_> + 11 8 1 4 3. + <_> + + <_> + 7 14 3 6 -1. + <_> + 8 14 1 6 3. + <_> + + <_> + 10 8 3 4 -1. + <_> + 11 8 1 4 3. + <_> + + <_> + 7 8 3 4 -1. + <_> + 8 8 1 4 3. + <_> + + <_> + 7 9 6 9 -1. + <_> + 7 12 6 3 3. + <_> + + <_> + 0 14 2 3 -1. + <_> + 0 15 2 1 3. + <_> + + <_> + 11 12 1 2 -1. + <_> + 11 13 1 1 2. + <_> + + <_> + 4 3 8 3 -1. + <_> + 8 3 4 3 2. + <_> + + <_> + 0 4 20 6 -1. + <_> + 0 4 10 6 2. + <_> + + <_> + 9 14 1 3 -1. + <_> + 9 15 1 1 3. + <_> + + <_> + 8 14 4 3 -1. + <_> + 8 15 4 1 3. + <_> + + <_> + 0 15 14 4 -1. + <_> + 0 17 14 2 2. + <_> + + <_> + 1 14 18 6 -1. + <_> + 1 17 18 3 2. + <_> + + <_> + 0 0 10 6 -1. + <_> + 0 0 5 3 2. + <_> + 5 3 5 3 2. + diff --git a/venv/lib/python3.11/site-packages/cv2/data/haarcascade_frontalface_alt2.xml b/venv/lib/python3.11/site-packages/cv2/data/haarcascade_frontalface_alt2.xml new file mode 100644 index 0000000000000000000000000000000000000000..b49cf5df3b0c561c9b3887d5e63a93b813847e18 --- /dev/null +++ b/venv/lib/python3.11/site-packages/cv2/data/haarcascade_frontalface_alt2.xml @@ -0,0 +1,20719 @@ + + + +BOOST + HAAR + 20 + 20 + + 109 + + 0 + 20 + + <_> + 3 + 3.5069230198860168e-01 + + <_> + + 0 1 0 4.3272329494357109e-03 -1 -2 1 1.3076160103082657e-02 + + 3.8381900638341904e-02 8.9652568101882935e-01 + 2.6293140649795532e-01 + <_> + + 0 1 2 5.2434601821005344e-04 -1 -2 3 4.4573000632226467e-03 + + 1.0216630250215530e-01 1.2384019792079926e-01 + 6.9103831052780151e-01 + <_> + + 1 0 4 -9.2708261217921972e-04 -1 -2 5 3.3989109215326607e-04 + + 1.9536970555782318e-01 2.1014410257339478e-01 + 8.2586747407913208e-01 + <_> + 9 + 3.4721779823303223e+00 + + <_> + + 0 1 6 2.3025739938020706e-03 -1 -2 7 4.4174338690936565e-03 + + 1.0183759778738022e-01 8.2190579175949097e-01 + 1.9565549492835999e-01 + <_> + + 0 1 8 2.2203210741281509e-02 -1 -2 9 -1.7283110355492681e-04 + + 2.2054070234298706e-01 7.3263257741928101e-02 + 5.9314841032028198e-01 + <_> + + 0 1 10 4.3567270040512085e-03 -1 -2 11 + -2.6032889727503061e-03 + + 1.8441149592399597e-01 4.0322139859199524e-01 + 8.0665212869644165e-01 + <_> + + 0 1 12 1.7309630056843162e-03 -1 -2 13 + -7.8146401792764664e-03 + + 2.5483280420303345e-01 6.0570698976516724e-01 + 2.7790638804435730e-01 + <_> + + 0 1 14 -8.7343417108058929e-03 -1 -2 15 + 9.4522320432588458e-04 + + 2.8899800777435303e-01 7.6165872812271118e-01 + 3.4956431388854980e-01 + <_> + + 1 0 16 4.9414858222007751e-02 -1 -2 17 + 4.4891750440001488e-03 + + 8.1516528129577637e-01 2.8087830543518066e-01 + 6.0277748107910156e-01 + <_> + + 1 0 18 6.0313619673252106e-02 -1 -2 19 + -1.0762850288301706e-03 + + 7.6075017452239990e-01 4.4440358877182007e-01 + 1.4373120665550232e-01 + <_> + + 1 0 20 -9.5083238556981087e-03 -1 -2 21 + 7.6601309701800346e-03 + + 5.3181701898574829e-01 5.4110521078109741e-01 + 2.1806870400905609e-01 + <_> + + 1 0 22 7.6467678882181644e-03 -1 -2 23 + -8.4662932204082608e-04 + + 1.1589600145816803e-01 2.3406790196895599e-01 + 5.9903818368911743e-01 + <_> + 14 + 5.9844889640808105e+00 + + <_> + + 1 0 24 -4.8506218008697033e-03 -1 -2 25 + -4.6141650527715683e-03 + + 1.8054960668087006e-01 2.1778939664363861e-01 + 8.0182367563247681e-01 + <_> + + 0 1 26 -2.4301309604197741e-03 -1 -2 27 + 4.1787960799410939e-04 + + 1.1413549631834030e-01 1.2030939757823944e-01 + 6.1085307598114014e-01 + <_> + + 0 1 28 1.0010929545387626e-03 -1 -2 29 + 1.0577100329101086e-03 + + 2.0799599587917328e-01 3.3020541071891785e-01 + 7.5110942125320435e-01 + <_> + + 1 0 30 1.2376549420878291e-03 -1 -2 31 + 3.5315038985572755e-04 + + 2.7682220935821533e-01 1.6682930290699005e-01 + 5.8294767141342163e-01 + <_> + + 0 1 32 -1.1953660286962986e-02 -1 -2 33 + 1.4182999730110168e-03 + + 1.5087880194187164e-01 4.3912279605865479e-01 + 7.6465952396392822e-01 + <_> + + 1 0 34 3.4642980899661779e-03 -1 -2 35 + -1.4948950149118900e-02 + + 2.6515561342239380e-01 2.2980530560016632e-01 + 5.4421657323837280e-01 + <_> + + 1 0 36 -1.0506849503144622e-03 -1 -2 37 + -4.0782918222248554e-03 + + 3.6228439211845398e-01 2.6012599468231201e-01 + 7.2336578369140625e-01 + <_> + + 0 1 38 5.4242828628048301e-04 -1 -2 39 + -7.3204059153795242e-03 + + 3.8496789336204529e-01 2.9655128717422485e-01 + 5.4803091287612915e-01 + <_> + + 0 1 40 1.1421289527788758e-03 -1 -2 41 + 1.1783400550484657e-03 + + 4.1047701239585876e-01 7.2390240430831909e-01 + 2.7872839570045471e-01 + <_> + + 0 1 42 4.4077109545469284e-02 -1 -2 43 + 3.7900090683251619e-03 + + 5.6405162811279297e-01 5.9475481510162354e-01 + 3.3120200037956238e-01 + <_> + + 0 1 44 -2.4291418958455324e-03 -1 -2 45 + 9.4262324273586273e-03 + + 6.6032320261001587e-01 4.6806651353836060e-01 + 2.0643380284309387e-01 + <_> + + 0 1 46 8.0630257725715637e-03 -1 -2 47 + 5.2240812219679356e-03 + + 5.2988511323928833e-01 5.2816027402877808e-01 + 1.9095499813556671e-01 + <_> + + 0 1 48 -7.0630568079650402e-03 -1 -2 49 + 5.6897541508078575e-03 + + 1.3806459307670593e-01 5.4906368255615234e-01 + 1.2602810561656952e-01 + <_> + + 0 1 50 1.2472929665818810e-03 -1 -2 51 + 4.9543488770723343e-02 + + 2.3726630210876465e-01 5.2401661872863770e-01 + 1.7692160606384277e-01 + <_> + 19 + 8.5117864608764648e+00 + + <_> + + 1 0 52 -4.9326149746775627e-03 -1 -2 53 + 2.7918140403926373e-05 + + 1.9980649650096893e-01 2.2993800044059753e-01 + 7.3932111263275146e-01 + <_> + + 1 0 54 3.0876200180500746e-03 -1 -2 55 + 7.4669660534709692e-06 + + 1.5338400006294250e-01 2.0368589460849762e-01 + 5.8549159765243530e-01 + <_> + + 0 1 56 1.8739729421213269e-03 -1 -2 57 + 9.3380251200869679e-04 + + 2.0498959720134735e-01 3.2341998815536499e-01 + 7.3230141401290894e-01 + <_> + + 0 1 58 1.9151850137859583e-03 -1 -2 59 + -5.9683797881007195e-03 + + 3.0451491475105286e-01 2.9321339726448059e-01 + 5.6212961673736572e-01 + <_> + + 0 1 60 -7.2115601506084204e-04 -1 -2 61 + -5.9663117863237858e-03 + + 3.6580368876457214e-01 2.7121558785438538e-01 + 7.2263348102569580e-01 + <_> + + 0 1 62 3.0874179676175117e-02 -1 -2 63 + -1.1099710129201412e-02 + + 4.4198378920555115e-01 3.6129769682884216e-01 + 5.2514511346817017e-01 + <_> + + 0 1 64 2.1164179779589176e-03 -1 -2 65 + -9.4317439943552017e-03 + + 3.6286169290542603e-01 1.6010950505733490e-01 + 7.0522767305374146e-01 + <_> + + 0 1 66 -3.5266019403934479e-03 -1 -2 67 + -1.6907559474930167e-03 + + 1.3012880086898804e-01 1.7863239347934723e-01 + 5.5215299129486084e-01 + <_> + + 0 1 68 4.6470930101349950e-04 -1 -2 69 + -1.0215570218861103e-02 + + 3.4873831272125244e-01 2.6739910244941711e-01 + 6.6679191589355469e-01 + <_> + + 1 0 70 1.2634709710255265e-03 -1 -2 71 + -1.1875299736857414e-02 + + 3.4378638863563538e-01 5.9953361749649048e-01 + 3.4977179765701294e-01 + <_> + + 0 1 72 -1.0732339695096016e-02 -1 -2 73 + 7.1836481802165508e-03 + + 2.1504899859428406e-01 6.2714362144470215e-01 + 2.5195419788360596e-01 + <_> + + 0 1 74 -2.8340889140963554e-02 -1 -2 75 + -4.5813230099156499e-04 + + 8.2411892712116241e-02 5.9100568294525146e-01 + 3.7052011489868164e-01 + <_> + + 1 0 76 4.2940340936183929e-03 -1 -2 77 + 1.0751079767942429e-02 + + 1.5947279334068298e-01 5.9804809093475342e-01 + 2.8325080871582031e-01 + <_> + + 1 0 78 2.2465119138360023e-02 -1 -2 79 + -5.7988539338111877e-02 + + 7.8770911693572998e-01 1.5557409822940826e-01 + 5.2396571636199951e-01 + <_> + + 1 0 80 7.2110891342163086e-03 -1 -2 81 + -4.8367571085691452e-02 + + 6.6203659772872925e-01 1.4247199892997742e-01 + 4.4298338890075684e-01 + <_> + + 0 1 82 -1.4418059960007668e-02 -1 -2 83 + -2.3156389594078064e-02 + + 1.5885409712791443e-01 2.3757989704608917e-01 + 5.2171349525451660e-01 + <_> + + 1 0 84 7.6985340565443039e-03 -1 -2 85 + -5.6248619221150875e-03 + + 1.9417250156402588e-01 6.2784057855606079e-01 + 3.7460449337959290e-01 + <_> + + 1 0 86 -7.2936748620122671e-04 -1 -2 87 + 6.1783898854628205e-04 + + 3.8409221172332764e-01 3.1064930558204651e-01 + 5.5378472805023193e-01 + <_> + + 1 0 88 -4.5803939428878948e-05 -1 -2 89 + -1.4719359569426160e-05 + + 3.4444490075111389e-01 2.7295520901679993e-01 + 6.4289510250091553e-01 + <_> + 19 + 8.4680156707763672e+00 + + <_> + + 0 1 90 -1.3469370314851403e-03 -1 -2 91 + -2.4774789344519377e-03 + + 1.6570860147476196e-01 2.2738510370254517e-01 + 6.9893497228622437e-01 + <_> + + 0 1 92 5.2632777951657772e-03 -1 -2 93 + 4.9075339920818806e-03 + + 1.5120740234851837e-01 5.5644702911376953e-01 + 1.6054420173168182e-01 + <_> + + 0 1 94 -2.3254349362105131e-03 -1 -2 95 + -1.4665479538962245e-03 + + 1.8802590668201447e-01 3.1224989891052246e-01 + 7.1653962135314941e-01 + <_> + + 1 0 96 -1.2311690300703049e-01 -1 -2 97 + 2.2108340635895729e-03 + + 3.8595831394195557e-01 2.4552939832210541e-01 + 5.6957101821899414e-01 + <_> + + 0 1 98 2.0661531016230583e-03 -1 -2 99 + 3.6130280932411551e-04 + + 2.7165201306343079e-01 2.2933620214462280e-01 + 7.2086298465728760e-01 + <_> + + 1 0 100 7.9957872629165649e-02 -1 -2 101 + 2.6064720004796982e-03 + + 7.8336209058761597e-01 5.5452322959899902e-01 + 2.5506898760795593e-01 + <_> + + 1 0 102 6.5699010156095028e-03 -1 -2 103 + 1.6259610420092940e-03 + + 1.8193900585174561e-01 3.5298758745193481e-01 + 6.5528190135955811e-01 + <_> + + 0 1 104 3.6204981151968241e-03 -1 -2 105 + -4.4391951523721218e-03 + + 5.4623097181320190e-01 1.3598430156707764e-01 + 5.4158151149749756e-01 + <_> + + 0 1 106 -9.0540945529937744e-03 -1 -2 107 + -4.6067481162026525e-04 + + 1.1151199787855148e-01 5.8467197418212891e-01 + 2.5983488559722900e-01 + <_> + + 0 1 108 -5.6621041148900986e-03 -1 -2 109 + 5.1165837794542313e-03 + + 1.6105690598487854e-01 5.3766787052154541e-01 + 1.7394550144672394e-01 + <_> + + 0 1 110 -2.1362339612096548e-03 -1 -2 111 + -5.4809921421110630e-03 + + 1.9020730257034302e-01 3.2720080018043518e-01 + 6.3648408651351929e-01 + <_> + + 0 1 112 -8.1061907112598419e-03 -1 -2 113 + 6.0048708692193031e-03 + + 6.9148528575897217e-01 4.3273261189460754e-01 + 6.9638431072235107e-01 + <_> + + 0 1 114 -8.7028548121452332e-02 -1 -2 115 + -4.7809639945626259e-03 + + 8.5941338539123535e-01 9.7394466400146484e-02 + 4.5870301127433777e-01 + <_> + + 0 1 116 -2.2166660055518150e-03 -1 -2 117 + 1.3642730191349983e-03 + + 2.5546258687973022e-01 3.3190909028053284e-01 + 5.9641027450561523e-01 + <_> + + 0 1 118 -9.0077864006161690e-03 -1 -2 119 + -1.5494120307266712e-02 + + 2.6665949821472168e-01 1.8481859564781189e-01 + 6.2459707260131836e-01 + <_> + + 1 0 120 -4.2165028862655163e-03 -1 -2 121 + 4.3249759823083878e-02 + + 5.3799271583557129e-01 5.1830291748046875e-01 + 2.1704199910163879e-01 + <_> + + 1 0 122 2.8786511393263936e-04 -1 -2 123 + 1.2373150093480945e-03 + + 2.6133841276168823e-01 2.7865320444107056e-01 + 5.9089881181716919e-01 + <_> + + 1 0 124 1.9528300035744905e-03 -1 -2 125 + -1.4947060262784362e-03 + + 2.6128691434860229e-01 5.9154129028320312e-01 + 3.4557819366455078e-01 + <_> + + 1 0 126 3.5878680646419525e-03 -1 -2 127 + -2.5938691105693579e-03 + + 1.5870520472526550e-01 1.2704110145568848e-01 + 5.9794288873672485e-01 + <_> + 27 + 1.2578499794006348e+01 + + <_> + + 0 1 128 3.5810680128633976e-03 -1 -2 129 + -2.8552350122481585e-03 + + 1.9951049983501434e-01 7.3730701208114624e-01 + 2.9217371344566345e-01 + <_> + + 0 1 130 1.9758539274334908e-03 -1 -2 131 + 3.2583118882030249e-03 + + 1.9564199447631836e-01 5.6920468807220459e-01 + 1.8390649557113647e-01 + <_> + + 0 1 132 2.3711679386906326e-04 -1 -2 133 + 2.5942500215023756e-03 + + 2.1716670691967010e-01 2.7199891209602356e-01 + 7.1502441167831421e-01 + <_> + + 0 1 134 -2.5032449513673782e-02 -1 -2 135 + 6.3087949529290199e-03 + + 1.8251839280128479e-01 5.6998378038406372e-01 + 3.5098528861999512e-01 + <_> + + 1 0 136 -3.2494920305907726e-03 -1 -2 137 + -1.4885730110108852e-02 + + 4.0239268541336060e-01 3.6040958762168884e-01 + 7.2919952869415283e-01 + <_> + + 1 0 138 8.0623216927051544e-03 -1 -2 139 + 2.7405679225921631e-02 + + 6.4914900064468384e-01 5.5189931392669678e-01 + 2.6596811413764954e-01 + <_> + + 1 0 140 3.4368600696325302e-02 -1 -2 141 + -2.7292970567941666e-02 + + 6.7125129699707031e-01 1.6913780570030212e-01 + 4.3262779712677002e-01 + <_> + + 0 1 142 7.4452121043577790e-04 -1 -2 143 + 7.0336280623450875e-04 + + 3.4051001071929932e-01 5.5167931318283081e-01 + 3.3113878965377808e-01 + <_> + + 0 1 144 -1.2275460362434387e-01 -1 -2 145 + 3.2559928949922323e-03 + + 1.6753150522708893e-01 3.6157518625259399e-01 + 6.4207828044891357e-01 + <_> + + 0 1 146 -3.2090399414300919e-02 -1 -2 147 + 3.2957999501377344e-03 + + 2.9210790991783142e-01 5.6130319833755493e-01 + 3.3578601479530334e-01 + <_> + + 0 1 148 -3.2273170072585344e-03 -1 -2 149 + 1.1171669466421008e-03 + + 6.9706428050994873e-01 3.5411500930786133e-01 + 6.1440062522888184e-01 + <_> + + 1 0 150 -1.7279950901865959e-02 -1 -2 151 + 1.1741200461983681e-02 + + 5.5371809005737305e-01 5.3419572114944458e-01 + 2.7571049332618713e-01 + <_> + + 1 0 152 4.6405228786170483e-03 -1 -2 153 + -1.6913030296564102e-02 + + 2.4895210564136505e-01 1.7119289934635162e-01 + 5.5239528417587280e-01 + <_> + + 1 0 154 1.0060169734060764e-02 -1 -2 155 + -6.0715491417795420e-04 + + 8.2734507322311401e-01 3.7793910503387451e-01 + 5.4762518405914307e-01 + <_> + + 1 0 156 -1.0865400545299053e-03 -1 -2 157 + 8.9362077414989471e-03 + + 3.2965409755706787e-01 6.0628837347030640e-01 + 2.4342200160026550e-01 + <_> + + 1 0 158 -2.6372660067863762e-04 -1 -2 159 + 1.3110050000250340e-02 + + 3.8140949606895447e-01 5.5176162719726562e-01 + 3.7268930673599243e-01 + <_> + + 0 1 160 -2.9806280508637428e-03 -1 -2 161 + -4.1619571857154369e-03 + + 1.2296640127897263e-01 7.2522747516632080e-01 + 4.9734550714492798e-01 + <_> + + 0 1 162 3.3842328935861588e-02 -1 -2 163 + -1.2564560165628791e-03 + + 5.3483128547668457e-01 5.8519148826599121e-01 + 4.3841668963432312e-01 + <_> + + 0 1 164 -1.9635230302810669e-02 -1 -2 165 + -9.9625496659427881e-04 + + 2.2978340089321136e-01 6.2959378957748413e-01 + 4.1315990686416626e-01 + <_> + + 0 1 166 -2.3127110674977303e-02 -1 -2 167 + 2.3525709286332130e-02 + + 1.6954590380191803e-01 5.1741302013397217e-01 + 5.9519391506910324e-02 + <_> + + 0 1 168 -1.9356520846486092e-02 -1 -2 169 + -4.1787112131714821e-03 + + 1.3572479784488678e-01 2.9966288805007935e-01 + 5.7916951179504395e-01 + <_> + + 1 0 170 3.1488779932260513e-03 -1 -2 171 + 7.3972279205918312e-03 + + 6.5925890207290649e-01 5.3071719408035278e-01 + 3.7951210141181946e-01 + <_> + + 0 1 172 7.1955118983169086e-06 -1 -2 173 + 4.7114409506320953e-02 + + 3.1283149123191833e-01 5.5378931760787964e-01 + 1.0273090004920959e-01 + <_> + + 0 1 174 7.2878710925579071e-03 -1 -2 175 + -6.1887511983513832e-03 + + 4.6608591079711914e-01 7.1588581800460815e-01 + 4.7244489192962646e-01 + <_> + + 1 0 176 2.9757320880889893e-03 -1 -2 177 + -1.8449809867888689e-03 + + 5.9345688670873642e-02 7.0273017883300781e-01 + 4.7187310457229614e-01 + <_> + + 0 1 178 1.0239540279144421e-04 -1 -2 179 + 2.4277009069919586e-03 + + 5.8947342634201050e-01 4.8623558878898621e-01 + 5.2475881576538086e-01 + <_> + + 0 1 180 -6.4751312136650085e-02 -1 -2 181 + 3.9380151429213583e-04 + + 6.9174712896347046e-01 4.6696171164512634e-01 + 2.3824059963226318e-01 + <_> + 31 + 1.4546750068664551e+01 + + <_> + + 0 1 182 1.4397440245375037e-03 -1 -2 183 + -5.4068560712039471e-04 + + 2.7734708786010742e-01 7.4271547794342041e-01 + 2.4797350168228149e-01 + <_> + + 1 0 184 -7.1237959673453588e-06 -1 -2 185 + -2.3661039303988218e-03 + + 2.1995030343532562e-01 5.8899897336959839e-01 + 2.5957161188125610e-01 + <_> + + 0 1 186 1.7343269428238273e-03 -1 -2 187 + 1.5874590026214719e-03 + + 1.8601259589195251e-01 4.1518709063529968e-01 + 7.1034741401672363e-01 + <_> + + 1 0 188 3.7285638973116875e-03 -1 -2 189 + -1.2883819639682770e-01 + + 2.5279670953750610e-01 1.3930009305477142e-01 + 5.2545148134231567e-01 + <_> + + 1 0 190 7.9412180930376053e-03 -1 -2 191 + -1.2661729939281940e-02 + + 2.4877290427684784e-01 2.7107000350952148e-01 + 6.6188377141952515e-01 + <_> + + 0 1 192 3.0146789868013002e-05 -1 -2 193 + -1.6330160200595856e-02 + + 3.8128259778022766e-01 2.3264320194721222e-01 + 5.2630108594894409e-01 + <_> + + 0 1 194 1.4622770322603174e-05 -1 -2 195 + -2.0858660340309143e-02 + + 4.2933320999145508e-01 1.6004039347171783e-01 + 6.7823147773742676e-01 + <_> + + 1 0 196 2.8194559272378683e-03 -1 -2 197 + 3.7899368908256292e-03 + + 6.6792941093444824e-01 4.5877051353454590e-01 + 7.1762388944625854e-01 + <_> + + 1 0 198 3.5344641655683517e-02 -1 -2 199 + -1.1571600334718823e-03 + + 1.8640750646591187e-01 5.5382597446441650e-01 + 3.1504508852958679e-01 + <_> + + 0 1 200 -5.8742752298712730e-03 -1 -2 201 + -1.5201780115603469e-05 + + 2.8287911415100098e-01 5.8702242374420166e-01 + 3.7048238515853882e-01 + <_> + + 1 0 202 -2.2681879636365920e-04 -1 -2 203 + 3.7845689803361893e-03 + + 4.2189309000968933e-01 6.6670012474060059e-01 + 2.4611820280551910e-01 + <_> + + 1 0 204 -8.5295992903411388e-05 -1 -2 205 + -4.4394891709089279e-02 + + 3.5575878620147705e-01 1.6655470430850983e-01 + 5.2348488569259644e-01 + <_> + + 0 1 206 1.0126030538231134e-03 -1 -2 207 + -7.6327780261635780e-03 + + 2.8846129775047302e-01 2.9693400859832764e-01 + 6.0801112651824951e-01 + <_> + + 0 1 208 4.0330411866307259e-03 -1 -2 209 + 1.3676689565181732e-01 + + 4.5363900065422058e-01 5.1772642135620117e-01 + 1.4491820335388184e-01 + <_> + + 0 1 210 -5.0060478970408440e-03 -1 -2 211 + -1.2475839816033840e-02 + + 7.6169097423553467e-01 2.1597060561180115e-01 + 5.4601877927780151e-01 + <_> + + 1 0 212 -9.4012258341535926e-04 -1 -2 213 + -1.2191980145871639e-02 + + 3.9262959361076355e-01 3.4788811206817627e-01 + 5.5426627397537231e-01 + <_> + + 0 1 214 -5.4959481349214911e-04 -1 -2 215 + -2.1802430273965001e-04 + + 6.0642760992050171e-01 5.6974071264266968e-01 + 1.7797139286994934e-01 + <_> + + 0 1 216 6.9115799851715565e-03 -1 -2 217 + -9.7631698008626699e-04 + + 5.3793722391128540e-01 3.3278390765190125e-01 + 5.4615312814712524e-01 + <_> + + 0 1 218 -8.7870173156261444e-03 -1 -2 219 + -1.6761029837653041e-03 + + 2.1161609888076782e-01 6.6358232498168945e-01 + 4.3658590316772461e-01 + <_> + + 1 0 220 -5.5694948881864548e-02 -1 -2 221 + -1.9844379276037216e-02 + + 5.3874248266220093e-01 1.6028049588203430e-01 + 5.3304588794708252e-01 + <_> + + 0 1 222 -7.4751611100509763e-04 -1 -2 223 + 2.3032890632748604e-02 + + 2.9174768924713135e-01 5.6081241369247437e-01 + 1.9979810714721680e-01 + <_> + + 1 0 224 -3.0700280331075191e-03 -1 -2 225 + -1.1636839481070638e-03 + + 3.9383140206336975e-01 5.7574361562728882e-01 + 4.2394569516181946e-01 + <_> + + 1 0 226 2.2464339435100555e-01 -1 -2 227 + 1.4412109740078449e-03 + + 7.6765531301498413e-01 5.3538662195205688e-01 + 2.5147768855094910e-01 + <_> + + 0 1 228 -3.0011249706149101e-02 -1 -2 229 + -5.3078960627317429e-02 + + 2.3649039864540100e-01 2.3858639597892761e-01 + 5.4146647453308105e-01 + <_> + + 1 0 230 2.0800929050892591e-03 -1 -2 231 + -4.0738182142376900e-03 + + 6.5116149187088013e-01 6.0304141044616699e-01 + 3.5877010226249695e-01 + <_> + + 1 0 232 -1.9529370591044426e-02 -1 -2 233 + -5.3309470415115356e-02 + + 5.4235929250717163e-01 2.3609539866447449e-01 + 5.4017579555511475e-01 + <_> + + 0 1 234 -3.4849561750888824e-02 -1 -2 235 + -1.2658450007438660e-01 + + 2.8369858860969543e-01 1.8135160207748413e-01 + 5.4210460186004639e-01 + <_> + + 0 1 236 7.3325118137290701e-06 -1 -2 237 + -1.1843870393931866e-02 + + 3.9803659915924072e-01 2.6163849234580994e-01 + 5.2377301454544067e-01 + <_> + + 0 1 238 -4.8470678739249706e-03 -1 -2 239 + 8.1693977117538452e-03 + + 2.4381080269813538e-01 5.3271460533142090e-01 + 8.1903767585754395e-01 + <_> + + 1 0 240 -6.4716790802776814e-03 -1 -2 241 + -1.5188479665084742e-05 + + 4.6796938776969910e-01 5.5639117956161499e-01 + 4.3675860762596130e-01 + <_> + + 1 0 242 3.0696711037307978e-03 -1 -2 243 + -1.6296720423270017e-04 + + 6.6643488407135010e-01 5.5946111679077148e-01 + 3.0427119135856628e-01 + <_> + 39 + 1.8572250366210938e+01 + + <_> + + 1 0 244 -9.8275858908891678e-03 -1 -2 245 + -4.1693858802318573e-03 + + 2.1160189807415009e-01 6.9246852397918701e-01 + 3.0437770485877991e-01 + <_> + + 0 1 246 3.5341319744475186e-04 -1 -2 247 + 4.8054549843072891e-03 + + 3.1832858920097351e-01 5.4565590620040894e-01 + 2.5222688913345337e-01 + <_> + + 0 1 248 2.1071180526632816e-04 -1 -2 249 + -2.8318869881331921e-03 + + 2.9026180505752563e-01 3.1304559111595154e-01 + 6.8849372863769531e-01 + <_> + + 1 0 250 -7.5633679443853907e-06 -1 -2 251 + -8.2888139877468348e-04 + + 2.9624658823013306e-01 3.0996260046958923e-01 + 5.7525151968002319e-01 + <_> + + 0 1 252 1.6209259629249573e-03 -1 -2 253 + 9.1338958591222763e-03 + + 3.9931958913803101e-01 4.8273721337318420e-01 + 7.5378328561782837e-01 + <_> + + 0 1 254 -4.1212290525436401e-03 -1 -2 255 + -2.5447290390729904e-03 + + 2.6169270277023315e-01 3.1087028980255127e-01 + 5.4912358522415161e-01 + <_> + + 0 1 256 -6.2652782071381807e-04 -1 -2 257 + -3.6596331483451650e-05 + + 3.2396918535232544e-01 6.5174108743667603e-01 + 4.1789120435714722e-01 + <_> + + 1 0 258 1.3882719911634922e-02 -1 -2 259 + 1.0493700392544270e-03 + + 6.7712038755416870e-01 4.1595110297203064e-01 + 5.6528919935226440e-01 + <_> + + 1 0 260 1.8215360119938850e-02 -1 -2 261 + -1.1334580369293690e-02 + + 7.6896011829376221e-01 2.8733238577842712e-01 + 4.9889329075813293e-01 + <_> + + 1 0 262 -4.1097560897469521e-03 -1 -2 263 + 4.2612891411408782e-04 + + 5.4630082845687866e-01 3.6312350630760193e-01 + 5.5125522613525391e-01 + <_> + + 1 0 264 6.0301548801362514e-03 -1 -2 265 + 3.3587709185667336e-04 + + 1.1437670141458511e-01 2.8910788893699646e-01 + 5.4473417997360229e-01 + <_> + + 1 0 266 6.2279507983475924e-04 -1 -2 267 + -2.5837119668722153e-02 + + 3.0234318971633911e-01 2.1670059859752655e-01 + 5.2781528234481812e-01 + <_> + + 1 0 268 2.1774910390377045e-02 -1 -2 269 + 1.7682299949228764e-03 + + 3.2548341155052185e-01 5.2630507946014404e-01 + 7.5263291597366333e-01 + <_> + + 0 1 270 -1.3793810270726681e-02 -1 -2 271 + -5.0852829590439796e-03 + + 7.4103301763534546e-01 6.8366098403930664e-01 + 4.5790711045265198e-01 + <_> + + 1 0 272 6.1795017682015896e-03 -1 -2 273 + 1.0030319914221764e-02 + + 7.4499362707138062e-01 4.8607799410820007e-01 + 2.3614570498466492e-01 + <_> + + 0 1 274 -6.4201927743852139e-03 -1 -2 275 + -5.6961281225085258e-03 + + 1.4673270285129547e-01 2.3478199541568756e-01 + 5.3233772516250610e-01 + <_> + + 0 1 276 -7.1498160250484943e-03 -1 -2 277 + 2.4450740311294794e-03 + + 1.4770570397377014e-01 3.4985339641571045e-01 + 5.8035618066787720e-01 + <_> + + 1 0 278 -3.7503410130739212e-02 -1 -2 279 + 4.7799441381357610e-04 + + 5.2595508098602295e-01 4.3628829717636108e-01 + 6.2089228630065918e-01 + <_> + + 0 1 280 -7.0806080475449562e-03 -1 -2 281 + 3.2818000763654709e-02 + + 2.0394609868526459e-01 5.1983588933944702e-01 + 1.3711960613727570e-01 + <_> + + 1 0 282 6.5188988810405135e-04 -1 -2 283 + 4.6485587954521179e-03 + + 6.3234299421310425e-01 4.7201630473136902e-01 + 6.5670871734619141e-01 + <_> + + 0 1 284 -1.9827929791063070e-03 -1 -2 285 + -1.6011310508474708e-03 + + 6.0530602931976318e-01 5.0905191898345947e-01 + 3.1169331073760986e-01 + <_> + + 0 1 286 -3.0539939180016518e-03 -1 -2 287 + 4.3212040327489376e-04 + + 3.4298041462898254e-01 3.8384029269218445e-01 + 5.7755982875823975e-01 + <_> + + 0 1 288 -2.7452120557427406e-02 -1 -2 289 + 9.3099439982324839e-04 + + 2.1434690058231354e-01 5.9529662132263184e-01 + 3.7601581215858459e-01 + <_> + + 0 1 290 6.7144189961254597e-03 -1 -2 291 + -3.3701690845191479e-03 + + 5.6926268339157104e-01 5.7843041419982910e-01 + 3.9742821455001831e-01 + <_> + + 0 1 292 -1.8903959542512894e-02 -1 -2 293 + -6.5850871615111828e-03 + + 1.8188929557800293e-01 6.8491101264953613e-01 + 4.3515840172767639e-01 + <_> + + 1 0 294 5.8810501359403133e-03 -1 -2 295 + 8.0092082498595119e-04 + + 2.7266609668731689e-01 4.2364311218261719e-01 + 5.8446758985519409e-01 + <_> + + 1 0 296 1.8510579830035567e-03 -1 -2 297 + 6.3273650594055653e-03 + + 3.3713209629058838e-01 5.2702218294143677e-01 + 8.0536508560180664e-01 + <_> + + 0 1 298 -3.3820930402725935e-03 -1 -2 299 + -1.9292969955131412e-03 + + 2.8660181164741516e-01 5.8889460563659668e-01 + 3.8957870006561279e-01 + <_> + + 1 0 300 1.4995220117270947e-02 -1 -2 301 + -2.6330750435590744e-02 + + 2.1778169274330139e-01 1.7753170430660248e-01 + 5.6714701652526855e-01 + <_> + + 1 0 302 -4.1734222322702408e-03 -1 -2 303 + 2.7268350124359131e-02 + + 4.6529620885848999e-01 4.7683110833168030e-01 + 5.6952387094497681e-01 + <_> + + 1 0 304 9.8880263976752758e-04 -1 -2 305 + -1.0528849670663476e-03 + + 3.3974018692970276e-01 6.2500411272048950e-01 + 4.2884120345115662e-01 + <_> + + 0 1 306 5.2288072183728218e-03 -1 -2 307 + 3.0395459383726120e-02 + + 5.3477621078491211e-01 4.1155189275741577e-01 + 5.6607538461685181e-01 + <_> + + 0 1 308 -7.9113930463790894e-02 -1 -2 309 + 1.8231669440865517e-02 + + 7.8813230991363525e-01 3.6043399572372437e-01 + 5.5695050954818726e-01 + <_> + + 0 1 310 5.2288072183728218e-03 -1 -2 311 + 4.3922828626818955e-04 + + 5.4166442155838013e-01 5.5071568489074707e-01 + 3.8822770118713379e-01 + <_> + + 0 1 312 -8.6501962505280972e-04 -1 -2 313 + 1.0326979681849480e-03 + + 3.1858509778976440e-01 5.5783641338348389e-01 + 3.2192459702491760e-01 + <_> + + 0 1 314 -7.2997747920453548e-03 -1 -2 315 + -9.3629042385146022e-04 + + 7.0732331275939941e-01 5.5580157041549683e-01 + 4.6138420701026917e-01 + <_> + + 0 1 316 -6.0483231209218502e-03 -1 -2 317 + 6.7529221996665001e-03 + + 6.8692898750305176e-01 4.8703178763389587e-01 + 2.6503708958625793e-01 + <_> + + 0 1 318 5.3078029304742813e-02 -1 -2 319 + -1.0225810110569000e-03 + + 5.2815151214599609e-01 6.0858821868896484e-01 + 4.3048679828643799e-01 + <_> + + 1 0 320 3.1270649284124374e-02 -1 -2 321 + -6.3522169366478920e-03 + + 5.4458320140838623e-01 5.3283357620239258e-01 + 2.3643240332603455e-01 + <_> + 45 + 2.1578119277954102e+01 + + <_> + + 1 0 322 -6.2215630896389484e-03 -1 -2 323 + 2.1097389981150627e-03 + + 2.6255810260772705e-01 1.5649929642677307e-01 + 6.7928832769393921e-01 + <_> + + 0 1 324 1.0845859535038471e-02 -1 -2 325 + 6.4230401767417789e-04 + + 3.4858089685440063e-01 3.6982551217079163e-01 + 5.9216582775115967e-01 + <_> + + 1 0 326 7.3311722371727228e-04 -1 -2 327 + 1.0134200565516949e-03 + + 3.0070841312408447e-01 3.6249229311943054e-01 + 7.0724260807037354e-01 + <_> + + 0 1 328 1.1093559674918652e-02 -1 -2 329 + -7.9127531498670578e-03 + + 4.4167020916938782e-01 3.0287081003189087e-01 + 5.4173761606216431e-01 + <_> + + 0 1 330 1.2905309908092022e-02 -1 -2 331 + -4.2430912144482136e-03 + + 4.3745040893554688e-01 4.4015899300575256e-01 + 7.5651907920837402e-01 + <_> + + 0 1 332 -2.1304309484548867e-04 -1 -2 333 + -2.2308640182018280e-03 + + 2.3107869923114777e-01 3.5681959986686707e-01 + 5.7499992847442627e-01 + <_> + + 0 1 334 2.6400520000606775e-03 -1 -2 335 + 7.5101032853126526e-02 + + 3.5936889052391052e-01 6.3635677099227905e-01 + 2.3270289599895477e-01 + <_> + + 0 1 336 -7.7012968249619007e-03 -1 -2 337 + 1.5588370151817799e-03 + + 7.0746237039566040e-01 5.7002371549606323e-01 + 3.5904508829116821e-01 + <_> + + 0 1 338 -4.7687938786111772e-04 -1 -2 339 + 8.4234727546572685e-04 + + 2.8054410219192505e-01 4.1254189610481262e-01 + 6.1779958009719849e-01 + <_> + + 1 0 340 -1.2825109995901585e-02 -1 -2 341 + -6.5156567143276334e-04 + + 5.4030781984329224e-01 5.6336438655853271e-01 + 3.3565390110015869e-01 + <_> + + 0 1 342 -1.2006159871816635e-02 -1 -2 343 + 1.3213419588282704e-03 + + 7.1095108985900879e-01 4.9038508534431458e-01 + 2.8245830535888672e-01 + <_> + + 0 1 344 -2.0307440310716629e-02 -1 -2 345 + 4.0180929936468601e-03 + + 1.8913699686527252e-01 5.3779661655426025e-01 + 3.1194949150085449e-01 + <_> + + 1 0 346 4.5315311290323734e-03 -1 -2 347 + -4.4381739571690559e-03 + + 7.2067582607269287e-01 1.8546679615974426e-01 + 4.9817329645156860e-01 + <_> + + 1 0 348 1.5692010056227446e-03 -1 -2 349 + -4.9516442231833935e-03 + + 2.6382741332054138e-01 6.8710672855377197e-01 + 4.7146868705749512e-01 + <_> + + 0 1 350 -2.7429679408669472e-02 -1 -2 351 + 1.4181969454512000e-03 + + 1.5482850372791290e-01 4.3768429756164551e-01 + 6.3273680210113525e-01 + <_> + + 0 1 352 -1.3078940100967884e-02 -1 -2 353 + -3.5092779435217381e-03 + + 3.1668141484260559e-01 6.1997437477111816e-01 + 4.3796870112419128e-01 + <_> + + 1 0 354 1.8920730799436569e-02 -1 -2 355 + 2.1683350205421448e-03 + + 1.4707140624523163e-01 5.8094590902328491e-01 + 3.4319490194320679e-01 + <_> + + 0 1 356 1.6401590546593070e-03 -1 -2 357 + 1.4005920093040913e-04 + + 3.9594578742980957e-01 3.2400250434875488e-01 + 5.6466472148895264e-01 + <_> + + 1 0 358 -3.3137591090053320e-03 -1 -2 359 + -2.9459029901772738e-03 + + 4.2745280265808105e-01 3.3416679501533508e-01 + 6.6279602050781250e-01 + <_> + + 0 1 360 1.3612229668069631e-04 -1 -2 361 + 6.0512032359838486e-04 + + 4.0469279885292053e-01 5.4840582609176636e-01 + 3.5699409246444702e-01 + <_> + + 0 1 362 -1.7513990402221680e-02 -1 -2 363 + -1.8735030665993690e-02 + + 1.8241509795188904e-01 7.9718202352523804e-01 + 5.0685691833496094e-01 + <_> + + 1 0 364 1.2065649963915348e-02 -1 -2 365 + -2.6544178836047649e-03 + + 2.1670070290565491e-01 6.5841788053512573e-01 + 4.6282431483268738e-01 + <_> + + 1 0 366 1.4501289697363973e-03 -1 -2 367 + 1.0954019613564014e-02 + + 2.0902520418167114e-01 5.1123052835464478e-01 + 7.7845758199691772e-01 + <_> + + 0 1 368 1.5771709382534027e-02 -1 -2 369 + -1.4252689667046070e-02 + + 5.1323592662811279e-01 1.7424149811267853e-01 + 5.2671480178833008e-01 + <_> + + 0 1 370 3.0411860279855318e-05 -1 -2 371 + 2.3486299440264702e-02 + + 3.4184479713439941e-01 5.6312650442123413e-01 + 2.0063939690589905e-01 + <_> + + 1 0 372 5.2205449901521206e-03 -1 -2 373 + -2.5812430307269096e-02 + + 6.2496489286422729e-01 3.2032281160354614e-01 + 5.1993298530578613e-01 + <_> + + 0 1 374 -1.9526650430634618e-03 -1 -2 375 + -8.1470049917697906e-03 + + 6.1407059431076050e-01 6.5928959846496582e-01 + 3.7111249566078186e-01 + <_> + + 1 0 376 3.2962448894977570e-03 -1 -2 377 + -1.3961310032755136e-03 + + 2.9521119594573975e-01 3.3208039402961731e-01 + 5.5284148454666138e-01 + <_> + + 0 1 378 -4.1055441834032536e-03 -1 -2 379 + -1.0888779535889626e-02 + + 1.7105500400066376e-01 3.3594349026679993e-01 + 5.6749051809310913e-01 + <_> + + 1 0 380 -7.6768421567976475e-03 -1 -2 381 + -9.7729787230491638e-03 + + 4.7732418775558472e-01 8.0810451507568359e-01 + 4.8458281159400940e-01 + <_> + + 1 0 382 6.0439710505306721e-03 -1 -2 383 + -4.6134641161188483e-04 + + 6.7840021848678589e-01 5.5146390199661255e-01 + 3.6423599720001221e-01 + <_> + + 1 0 384 5.7992361485958099e-02 -1 -2 385 + 5.9384980704635382e-04 + + 1.2544350326061249e-01 4.4248789548873901e-01 + 5.7284617424011230e-01 + <_> + + 0 1 386 -6.2353480607271194e-03 -1 -2 387 + -1.2784929946064949e-02 + + 2.8050419688224792e-01 1.9509120285511017e-01 + 5.6529247760772705e-01 + <_> + + 1 0 388 4.1973669431172311e-04 -1 -2 389 + 8.0646801507100463e-04 + + 6.1664837598800659e-01 4.5265799760818481e-01 + 5.9444868564605713e-01 + <_> + + 1 0 390 -1.6339010326191783e-03 -1 -2 391 + -4.8299999907612801e-03 + + 4.0869420766830444e-01 2.7935269474983215e-01 + 6.4449352025985718e-01 + <_> + + 1 0 392 -6.3992068171501160e-03 -1 -2 393 + 1.0819199681282043e-01 + + 5.6716561317443848e-01 5.3118121623992920e-01 + 2.6143568754196167e-01 + <_> + + 1 0 394 6.5056560561060905e-04 -1 -2 395 + 2.0611250773072243e-02 + + 2.9967740178108215e-01 4.4899430871009827e-01 + 6.8882799148559570e-01 + <_> + + 1 0 396 -2.5129050016403198e-02 -1 -2 397 + 1.7922939732670784e-03 + + 5.1968640089035034e-01 3.4669959545135498e-01 + 5.5335879325866699e-01 + <_> + + 1 0 398 1.5626220265403390e-03 -1 -2 399 + -6.1898730928078294e-04 + + 3.0814400315284729e-01 2.6938709616661072e-01 + 5.5444890260696411e-01 + <_> + + 0 1 400 4.8111421056091785e-03 -1 -2 401 + 2.2484229411929846e-03 + + 5.5878478288650513e-01 4.6721130609512329e-01 + 6.0908252000808716e-01 + <_> + + 0 1 402 -3.0147239565849304e-02 -1 -2 403 + 2.7548679709434509e-01 + + 9.0275919437408447e-01 4.7198349237442017e-01 + 2.1969200670719147e-01 + <_> + + 1 0 404 3.6894630175083876e-03 -1 -2 405 + 7.2957701049745083e-03 + + 6.2730091810226440e-01 4.8392179608345032e-01 + 6.9090622663497925e-01 + <_> + + 0 1 406 -5.6211069226264954e-02 -1 -2 407 + -2.6478560175746679e-03 + + 1.7384879291057587e-01 6.3041448593139648e-01 + 4.4743019342422485e-01 + <_> + + 1 0 408 -1.4534000074490905e-03 -1 -2 409 + 2.8540920466184616e-03 + + 5.3025382757186890e-01 5.3383970260620117e-01 + 3.7968829274177551e-01 + <_> + + 1 0 410 5.8243022067472339e-04 -1 -2 411 + 9.2509482055902481e-04 + + 3.2698369026184082e-01 4.5548120141029358e-01 + 6.3583481311798096e-01 + <_> + 47 + 2.2585290908813477e+01 + + <_> + + 0 1 412 1.9806440919637680e-02 -1 -2 413 + 7.0395611692219973e-04 + + 2.8097251057624817e-01 3.1198260188102722e-01 + 7.0903062820434570e-01 + <_> + + 0 1 414 2.5563780218362808e-03 -1 -2 415 + 1.0824160417541862e-03 + + 2.9819479584693909e-01 3.0205601453781128e-01 + 5.8088111877441406e-01 + <_> + + 1 0 416 -9.2893769033253193e-04 -1 -2 417 + -1.8009729683399200e-02 + + 3.7381029129028320e-01 2.1631260216236115e-01 + 6.6192537546157837e-01 + <_> + + 1 0 418 2.3500190582126379e-03 -1 -2 419 + 8.1822491483762860e-04 + + 2.9104039072990417e-01 5.5786228179931641e-01 + 3.3666279911994934e-01 + <_> + + 0 1 420 6.2095321482047439e-04 -1 -2 421 + 9.6780969761312008e-04 + + 4.0724259614944458e-01 6.8595957756042480e-01 + 3.1054618954658508e-01 + <_> + + 1 0 422 4.8000211245380342e-04 -1 -2 423 + 9.0538640506565571e-05 + + 3.3373329043388367e-01 3.3709588646888733e-01 + 5.4512107372283936e-01 + <_> + + 0 1 424 -4.3914798647165298e-02 -1 -2 425 + -5.6501338258385658e-03 + + 2.6256701350212097e-01 6.0504627227783203e-01 + 3.2324150204658508e-01 + <_> + + 1 0 426 3.8661491125822067e-03 -1 -2 427 + -6.3069426687434316e-05 + + 3.2626131176948547e-01 5.8173078298568726e-01 + 4.1643899679183960e-01 + <_> + + 1 0 428 5.2533738315105438e-02 -1 -2 429 + 1.3818660518154502e-03 + + 7.0953989028930664e-01 5.2928757667541504e-01 + 2.5413888692855835e-01 + <_> + + 1 0 430 -8.9264067355543375e-04 -1 -2 431 + 8.5579507052898407e-02 + + 4.0853410959243774e-01 5.2632361650466919e-01 + 3.0032029747962952e-01 + <_> + + 1 0 432 -1.8343339615967125e-04 -1 -2 433 + -9.7924815490841866e-03 + + 4.0292051434516907e-01 3.5213199257850647e-01 + 6.6640049219131470e-01 + <_> + + 0 1 434 1.4428620226681232e-02 -1 -2 435 + -4.5687001198530197e-02 + + 4.5935660600662231e-01 1.4747560024261475e-01 + 5.1786321401596069e-01 + <_> + + 0 1 436 -2.5763090234249830e-03 -1 -2 437 + -3.8301859050989151e-02 + + 1.8372780084609985e-01 8.0826580524444580e-01 + 5.1666879653930664e-01 + <_> + + 0 1 438 2.8978290501981974e-03 -1 -2 439 + -2.5165060069411993e-03 + + 4.7980138659477234e-01 3.3462959527969360e-01 + 5.4444491863250732e-01 + <_> + + 0 1 440 5.6281982688233256e-04 -1 -2 441 + 3.6684391088783741e-03 + + 3.5890269279479980e-01 5.9831297397613525e-01 + 2.9839640855789185e-01 + <_> + + 1 0 442 2.1319789811968803e-03 -1 -2 443 + 7.6037310063838959e-03 + + 6.1632239818572998e-01 5.2171301841735840e-01 + 2.0541590452194214e-01 + <_> + + 1 0 444 -1.1668079969240353e-04 -1 -2 445 + 3.1659509986639023e-03 + + 3.4466689825057983e-01 5.5974847078323364e-01 + 2.6737868785858154e-01 + <_> + + 0 1 446 -2.2569499909877777e-02 -1 -2 447 + 2.7129601221531630e-04 + + 6.9002681970596313e-01 4.4866389036178589e-01 + 5.5087852478027344e-01 + <_> + + 0 1 448 -1.5434459783136845e-02 -1 -2 449 + -8.4861656650900841e-03 + + 2.0483230054378510e-01 1.2549529969692230e-01 + 5.0603562593460083e-01 + <_> + + 0 1 450 -1.1807470023632050e-01 -1 -2 451 + -1.2300079688429832e-03 + + 6.7633062601089478e-02 5.6607007980346680e-01 + 4.2922011017799377e-01 + <_> + + 0 1 452 -7.0290351286530495e-03 -1 -2 453 + 8.9325206354260445e-03 + + 7.1364039182662964e-01 4.3388760089874268e-01 + 7.0608752965927124e-01 + <_> + + 1 0 454 -4.7735981643199921e-02 -1 -2 455 + -4.4155579060316086e-02 + + 5.2686852216720581e-01 2.5805801153182983e-01 + 5.4069608449935913e-01 + <_> + + 0 1 456 -2.5983480736613274e-02 -1 -2 457 + -4.7885831445455551e-03 + + 1.9050540030002594e-01 2.5518929958343506e-01 + 5.3390771150588989e-01 + <_> + + 0 1 458 6.7423451691865921e-03 -1 -2 459 + 1.1654750443994999e-02 + + 4.6933099627494812e-01 5.2619642019271851e-01 + 3.1454348564147949e-01 + <_> + + 0 1 460 -5.6982729583978653e-03 -1 -2 461 + -7.2983349673449993e-03 + + 1.7568530142307281e-01 7.7747297286987305e-01 + 5.1242929697036743e-01 + <_> + + 0 1 462 7.9091778025031090e-03 -1 -2 463 + -1.5874979726504534e-04 + + 5.2845597267150879e-01 3.8878020644187927e-01 + 5.5011737346649170e-01 + <_> + + 0 1 464 -6.2235877849161625e-03 -1 -2 465 + 1.3308860361576080e-03 + + 2.4898290634155273e-01 4.2621460556983948e-01 + 5.9350621700286865e-01 + <_> + + 1 0 466 5.2055278792977333e-03 -1 -2 467 + 1.4065169729292393e-02 + + 2.5452229380607605e-01 4.8519900441169739e-01 + 7.0214188098907471e-01 + <_> + + 0 1 468 -6.7384149879217148e-03 -1 -2 469 + 3.3406780567020178e-03 + + 7.1432709693908691e-01 5.1757252216339111e-01 + 2.8086438775062561e-01 + <_> + + 1 0 470 -1.1880699545145035e-02 -1 -2 471 + 1.4226379571482539e-03 + + 5.1732218265533447e-01 4.5028659701347351e-01 + 5.7956951856613159e-01 + <_> + + 1 0 472 2.9858129564672709e-03 -1 -2 473 + -2.0481580868363380e-03 + + 1.9151160120964050e-01 6.5024322271347046e-01 + 4.5593151450157166e-01 + <_> + + 0 1 474 1.7122729914262891e-03 -1 -2 475 + -1.6980869695544243e-02 + + 5.3762471675872803e-01 7.0562332868576050e-01 + 4.9146059155464172e-01 + <_> + + 0 1 476 -1.1290470138192177e-03 -1 -2 477 + 2.8620059601962566e-03 + + 2.6787060499191284e-01 4.4108539819717407e-01 + 6.3683199882507324e-01 + <_> + + 0 1 478 -3.8065758999437094e-03 -1 -2 479 + 5.9090270660817623e-03 + + 2.7635639905929565e-01 4.8673018813133240e-01 + 6.7287760972976685e-01 + <_> + + 0 1 480 1.1004370171576738e-03 -1 -2 481 + -2.3396299220621586e-03 + + 4.0705141425132751e-01 2.6049488782882690e-01 + 6.1548602581024170e-01 + <_> + + 0 1 482 -3.6068160552531481e-03 -1 -2 483 + 4.0831189602613449e-02 + + 5.7319998741149902e-01 4.9733769893646240e-01 + 7.3870068788528442e-01 + <_> + + 0 1 484 -7.1082250215113163e-03 -1 -2 485 + -9.3759730225428939e-04 + + 6.9847512245178223e-01 2.6911678910255432e-01 + 4.7417798638343811e-01 + <_> + + 0 1 486 -1.6740820137783885e-03 -1 -2 487 + 8.8287703692913055e-02 + + 3.5510140657424927e-01 5.2446138858795166e-01 + 2.0966500043869019e-01 + <_> + + 0 1 488 8.2009629113599658e-04 -1 -2 489 + -7.6624617213383317e-04 + + 4.1310968995094299e-01 4.6202930808067322e-01 + 6.7754101753234863e-01 + <_> + + 1 0 490 6.5769668435677886e-04 -1 -2 491 + -2.1304790861904621e-03 + + 5.6282752752304077e-01 5.5768597126007080e-01 + 4.5776501297950745e-01 + <_> + + 1 0 492 -3.7317050737328827e-04 -1 -2 493 + -1.1172230355441570e-02 + + 4.9592560529708862e-01 5.6256359815597534e-01 + 2.0471079647541046e-01 + <_> + + 1 0 494 4.3435219675302505e-02 -1 -2 495 + 9.6736161503940821e-04 + + 2.2421480715274811e-01 4.5333439111709595e-01 + 6.1999320983886719e-01 + <_> + + 0 1 496 -3.1452889088541269e-03 -1 -2 497 + 1.5233129961416125e-03 + + 6.6627562046051025e-01 5.0079882144927979e-01 + 2.3849929869174957e-01 + <_> + + 1 0 498 2.0854279864579439e-03 -1 -2 499 + 3.6098200827836990e-02 + + 3.7535008788108826e-01 5.1771712303161621e-01 + 1.6344930231571198e-01 + <_> + + 1 0 500 1.6179570229724050e-03 -1 -2 501 + -6.2132300809025764e-04 + + 2.5873818993568420e-01 6.2995338439941406e-01 + 4.6587899327278137e-01 + <_> + + 1 0 502 7.1878539165481925e-04 -1 -2 503 + -3.9339520037174225e-02 + + 3.3540761470794678e-01 2.1541289985179901e-01 + 5.2357137203216553e-01 + <_> + + 0 1 504 -1.0988829890266061e-03 -1 -2 505 + 2.1191420964896679e-03 + + 6.4688968658447266e-01 2.8930890560150146e-01 + 5.2548158168792725e-01 + <_> + 53 + 2.5609300613403320e+01 + + <_> + + 0 1 506 5.2359891124069691e-03 -1 -2 507 + -2.2169889416545630e-03 + + 3.2997110486030579e-01 7.0415931940078735e-01 + 3.2354658842086792e-01 + <_> + + 1 0 508 -8.2303592935204506e-03 -1 -2 509 + -8.2303592935204506e-03 + + 4.9611708521842957e-01 7.1280431747436523e-01 + 4.9611708521842957e-01 + <_> + + 0 1 510 4.5343261444941163e-04 -1 -2 511 + -4.1777061414904892e-04 + + 3.2084721326828003e-01 6.6139167547225952e-01 + 3.5513329505920410e-01 + <_> + + 0 1 512 2.7823769487440586e-03 -1 -2 513 + -6.0361868236213923e-05 + + 3.7101349234580994e-01 5.7463937997817993e-01 + 3.8948801159858704e-01 + <_> + + 1 0 514 3.5061789676547050e-03 -1 -2 515 + 1.7013119941111654e-04 + + 3.0541029572486877e-01 2.8855779767036438e-01 + 6.4877450466156006e-01 + <_> + + 1 0 516 -2.3378930054605007e-03 -1 -2 517 + -2.1369170863181353e-03 + + 3.1744310259819031e-01 3.8209199905395508e-01 + 5.2328932285308838e-01 + <_> + + 0 1 518 1.0250400518998504e-03 -1 -2 519 + -4.4726220949087292e-05 + + 3.6227950453758240e-01 6.5389591455459595e-01 + 4.0036809444427490e-01 + <_> + + 1 0 520 5.7102291611954570e-04 -1 -2 521 + 5.7743012439459562e-04 + + 3.8931730389595032e-01 5.6145328283309937e-01 + 3.6876440048217773e-01 + <_> + + 1 0 522 7.9692091094329953e-04 -1 -2 523 + 3.5945948911830783e-04 + + 6.4430278539657593e-01 3.3808529376983643e-01 + 5.8246481418609619e-01 + <_> + + 1 0 524 4.3973900028504431e-04 -1 -2 525 + -8.9061429025605321e-04 + + 3.9387670159339905e-01 3.4279710054397583e-01 + 5.5156987905502319e-01 + <_> + + 1 0 526 5.4110242053866386e-03 -1 -2 527 + -8.5764907998964190e-04 + + 3.8035380840301514e-01 6.4395052194595337e-01 + 4.1683459281921387e-01 + <_> + + 0 1 528 -2.2000649943947792e-02 -1 -2 529 + -7.8731682151556015e-03 + + 6.6546010971069336e-01 4.1827228665351868e-01 + 5.6047242879867554e-01 + <_> + + 0 1 530 -2.7444459497928619e-02 -1 -2 531 + 1.9792269449681044e-03 + + 6.5868628025054932e-01 3.2449120283126831e-01 + 4.8828700184822083e-01 + <_> + + 0 1 532 -5.6783691979944706e-03 -1 -2 533 + 1.5057219570735469e-05 + + 2.2290790081024170e-01 4.1072851419448853e-01 + 5.7475912570953369e-01 + <_> + + 0 1 534 -5.4136710241436958e-03 -1 -2 535 + 5.3679239936172962e-03 + + 2.0657970011234283e-01 4.9264231324195862e-01 + 7.1394848823547363e-01 + <_> + + 0 1 536 -3.1426660716533661e-03 -1 -2 537 + 1.0907390154898167e-02 + + 6.7800867557525635e-01 5.2149301767349243e-01 + 1.1439959704875946e-01 + <_> + + 1 0 538 5.8436761610209942e-03 -1 -2 539 + 9.0507230197545141e-05 + + 1.9375260174274445e-01 3.8125771284103394e-01 + 5.5141878128051758e-01 + <_> + + 0 1 540 -1.6345789656043053e-02 -1 -2 541 + 1.5987500082701445e-03 + + 2.4740239977836609e-01 4.8177829384803772e-01 + 5.9230798482894897e-01 + <_> + + 0 1 542 -4.0257978253066540e-03 -1 -2 543 + -6.7750471644103527e-03 + + 7.5082087516784668e-01 2.8798109292984009e-01 + 5.1996952295303345e-01 + <_> + + 0 1 544 -3.2470689620822668e-03 -1 -2 545 + 1.5409620245918632e-03 + + 3.0449101328849792e-01 4.0634828805923462e-01 + 5.6765627861022949e-01 + <_> + + 0 1 546 -1.2858119793236256e-02 -1 -2 547 + -1.4824670506641269e-04 + + 9.6717558801174164e-02 4.5378330349922180e-01 + 6.1153751611709595e-01 + <_> + + 1 0 548 -9.0210810303688049e-03 -1 -2 549 + -2.8795029968023300e-02 + + 4.8077508807182312e-01 3.4037950634956360e-01 + 5.2555292844772339e-01 + <_> + + 1 0 550 9.0210810303688049e-03 -1 -2 551 + 7.4121179059147835e-03 + + 7.5058358907699585e-01 5.4554468393325806e-01 + 3.2260689139366150e-01 + <_> + + 0 1 552 -3.7217529024928808e-03 -1 -2 553 + 1.9865889847278595e-01 + + 2.3118489980697632e-01 5.2710479497909546e-01 + 1.4699299633502960e-01 + <_> + + 0 1 554 1.5208719560177997e-05 -1 -2 555 + -3.9089918136596680e-03 + + 3.6781388521194458e-01 7.1319299936294556e-01 + 4.9938669800758362e-01 + <_> + + 0 1 556 2.5106288958340883e-03 -1 -2 557 + 2.3921660613268614e-04 + + 5.3120541572570801e-01 4.6893781423568726e-01 + 5.7140219211578369e-01 + <_> + + 1 0 558 6.9443131797015667e-03 -1 -2 559 + 1.2065629707649350e-03 + + 6.9487977027893066e-01 4.0045049786567688e-01 + 5.8748817443847656e-01 + <_> + + 0 1 560 2.5106288958340883e-03 -1 -2 561 + 1.7514040227979422e-03 + + 5.3295719623565674e-01 5.5458492040634155e-01 + 3.4495818614959717e-01 + <_> + + 0 1 562 -4.1978210210800171e-03 -1 -2 563 + 1.3092850567772985e-03 + + 1.2171830236911774e-01 5.3750497102737427e-01 + 3.4156250953674316e-01 + <_> + + 0 1 564 6.7396182566881180e-04 -1 -2 565 + -1.0530710220336914e-02 + + 4.1951790452003479e-01 3.4607538580894470e-01 + 5.1558601856231689e-01 + <_> + + 0 1 566 -4.0672299265861511e-01 -1 -2 567 + -2.6314549148082733e-02 + + 5.8065678924322128e-02 1.4734490215778351e-01 + 5.5593782663345337e-01 + <_> + + 1 0 568 2.2557149641215801e-03 -1 -2 569 + 1.2154860422015190e-02 + + 5.4777151346206665e-01 4.2077910900115967e-01 + 5.6218808889389038e-01 + <_> + + 0 1 570 -1.8436539918184280e-02 -1 -2 571 + 5.3676147945225239e-04 + + 6.4471471309661865e-01 2.7651271224021912e-01 + 4.8885959386825562e-01 + <_> + + 1 0 572 -2.6265541091561317e-03 -1 -2 573 + -5.1119807176291943e-04 + + 5.2646911144256592e-01 5.7853102684020996e-01 + 4.2911028861999512e-01 + <_> + + 1 0 574 4.1454841266386211e-04 -1 -2 575 + -5.5028748465701938e-04 + + 3.4554108977317810e-01 6.0269188880920410e-01 + 4.1438931226730347e-01 + <_> + + 0 1 576 -1.0347720235586166e-03 -1 -2 577 + -3.3966631162911654e-03 + + 6.0952937602996826e-01 6.1082822084426880e-01 + 4.7077208757400513e-01 + <_> + + 1 0 578 3.1795909162610769e-03 -1 -2 579 + -1.6528950072824955e-04 + + 3.2443669438362122e-01 3.8307571411132812e-01 + 5.7343262434005737e-01 + <_> + + 1 0 580 8.3725210279226303e-03 -1 -2 581 + -2.5799809955060482e-03 + + 6.6109192371368408e-01 6.1393070220947266e-01 + 4.6861499547958374e-01 + <_> + + 1 0 582 9.0194388758391142e-04 -1 -2 583 + 3.6952210939489305e-04 + + 3.5200220346450806e-01 2.5787541270256042e-01 + 5.4672420024871826e-01 + <_> + + 0 1 584 9.9746137857437134e-04 -1 -2 585 + -3.6688039544969797e-03 + + 4.8201468586921692e-01 5.7101500034332275e-01 + 4.8319110274314880e-01 + <_> + + 0 1 586 -8.9501030743122101e-04 -1 -2 587 + 5.1904921419918537e-03 + + 6.1336791515350342e-01 4.9285829067230225e-01 + 2.5813090801239014e-01 + <_> + + 0 1 588 4.2274440056644380e-04 -1 -2 589 + 8.5176713764667511e-03 + + 4.4711241126060486e-01 5.1610249280929565e-01 + 3.3165338635444641e-01 + <_> + + 0 1 590 -3.6623608320951462e-02 -1 -2 591 + -4.1103712283074856e-03 + + 9.2606216669082642e-02 8.5221147537231445e-01 + 5.1379078626632690e-01 + <_> + + 1 0 592 -6.6017331555485725e-03 -1 -2 593 + 2.5578640401363373e-02 + + 5.4590600728988647e-01 5.2193528413772583e-01 + 1.9271859526634216e-01 + <_> + + 1 0 594 1.1447439901530743e-02 -1 -2 595 + 7.2427501436322927e-04 + + 1.9160020351409912e-01 5.2315711975097656e-01 + 3.5353401303291321e-01 + <_> + + 1 0 596 9.7127500921487808e-03 -1 -2 597 + -1.1337569914758205e-02 + + 6.4641010761260986e-01 7.3830378055572510e-01 + 4.9647438526153564e-01 + <_> + + 0 1 598 -8.1453882157802582e-03 -1 -2 599 + -8.5570756345987320e-03 + + 3.6117058992385864e-01 3.4219071269035339e-01 + 5.9435117244720459e-01 + <_> + + 0 1 600 2.2993308957666159e-03 -1 -2 601 + 3.8430930580943823e-03 + + 4.5501041412353516e-01 4.7168621420860291e-01 + 6.6561907529830933e-01 + <_> + + 1 0 602 -9.9116540513932705e-04 -1 -2 603 + 2.5496469810605049e-02 + + 4.5927169919013977e-01 6.5634012222290039e-01 + 1.2588350474834442e-01 + <_> + + 1 0 604 -1.5748359262943268e-02 -1 -2 605 + -1.8046120181679726e-02 + + 5.2395021915435791e-01 8.0158519744873047e-01 + 5.0079578161239624e-01 + <_> + + 1 0 606 1.0323390364646912e-02 -1 -2 607 + 1.6452240524813533e-03 + + 2.2748200595378876e-01 4.3519461154937744e-01 + 5.8676278591156006e-01 + <_> + + 0 1 608 1.5881149098277092e-02 -1 -2 609 + 1.0586519725620747e-02 + + 4.4650518894195557e-01 4.5444580912590027e-01 + 5.7071107625961304e-01 + <_> + + 0 1 610 -2.1531689912080765e-02 -1 -2 611 + 5.2480469457805157e-03 + + 6.5276437997817993e-01 3.4447279572486877e-01 + 5.3246361017227173e-01 + <_> + 67 + 3.2647129058837891e+01 + + <_> + + 0 1 612 1.8219340126961470e-03 -1 -2 613 + 8.1313941627740860e-03 + + 3.1087881326675415e-01 3.1332370638847351e-01 + 6.6458672285079956e-01 + <_> + + 0 1 614 1.7055979697033763e-03 -1 -2 615 + -7.4483548814896494e-05 + + 2.6401311159133911e-01 5.6472051143646240e-01 + 3.4853729605674744e-01 + <_> + + 1 0 616 3.8342390325851738e-04 -1 -2 617 + 3.1868910882622004e-03 + + 3.1406548619270325e-01 6.4891988039016724e-01 + 3.8877290487289429e-01 + <_> + + 1 0 618 1.6044320166110992e-01 -1 -2 619 + -6.7285560071468353e-03 + + 7.2165298461914062e-01 1.6531379520893097e-01 + 5.1398259401321411e-01 + <_> + + 0 1 620 7.2638481469766703e-06 -1 -2 621 + 5.5551197146996856e-04 + + 3.1406199932098389e-01 5.9936988353729248e-01 + 3.3173981308937073e-01 + <_> + + 0 1 622 -1.0822320356965065e-02 -1 -2 623 + -4.5834020711481571e-03 + + 2.6529380679130554e-01 1.8495689332485199e-01 + 5.3139579296112061e-01 + <_> + + 1 0 624 -3.0205070506781340e-03 -1 -2 625 + 7.7864617109298706e-02 + + 4.0400999784469604e-01 6.1581897735595703e-01 + 1.7864869534969330e-01 + <_> + + 0 1 626 2.6494380086660385e-02 -1 -2 627 + 3.6912109702825546e-02 + + 4.5110899209976196e-01 4.5282199978828430e-01 + 5.9722828865051270e-01 + <_> + + 1 0 628 5.7857790961861610e-03 -1 -2 629 + 9.3849771656095982e-04 + + 2.5338920950889587e-01 3.4104120731353760e-01 + 5.9236437082290649e-01 + <_> + + 0 1 630 -1.1003199964761734e-02 -1 -2 631 + -1.1737640015780926e-03 + + 6.9580441713333130e-01 3.8510841131210327e-01 + 5.4081892967224121e-01 + <_> + + 0 1 632 -3.6596669815480709e-03 -1 -2 633 + -2.4822750128805637e-03 + + 2.0093089342117310e-01 6.2953931093215942e-01 + 4.3950408697128296e-01 + <_> + + 0 1 634 -4.4606071896851063e-03 -1 -2 635 + -3.5969649907201529e-03 + + 2.4052999913692474e-01 5.4501742124557495e-01 + 3.7823578715324402e-01 + <_> + + 0 1 636 -3.6222559865564108e-03 -1 -2 637 + 1.2059339787811041e-03 + + 3.0338969826698303e-01 4.6337789297103882e-01 + 6.3359522819519043e-01 + <_> + + 1 0 638 4.3124938383698463e-03 -1 -2 639 + -4.4961250387132168e-03 + + 6.5988260507583618e-01 6.6216969490051270e-01 + 4.7552469372749329e-01 + <_> + + 0 1 640 -1.3860689941793680e-03 -1 -2 641 + -5.1588460337370634e-04 + + 2.8012010455131531e-01 3.8294890522956848e-01 + 5.6236267089843750e-01 + <_> + + 0 1 642 7.0330002927221358e-05 -1 -2 643 + -2.0976549421902746e-04 + + 4.5363429188728333e-01 5.6081390380859375e-01 + 4.2657798528671265e-01 + <_> + + 1 0 644 1.3642259873449802e-03 -1 -2 645 + 1.5483660390600562e-03 + + 2.6370918750762939e-01 4.1707509756088257e-01 + 5.9329879283905029e-01 + <_> + + 0 1 646 1.9179609417915344e-01 -1 -2 647 + -4.4776909053325653e-03 + + 5.2567642927169800e-01 6.6326218843460083e-01 + 4.8925888538360596e-01 + <_> + + 0 1 648 -1.2649179995059967e-01 -1 -2 649 + 6.5253327193204314e-05 + + 1.4997789263725281e-01 4.2333200573921204e-01 + 5.7560402154922485e-01 + <_> + + 0 1 650 4.1856421157717705e-03 -1 -2 651 + 2.7478230185806751e-04 + + 5.2888268232345581e-01 4.5240178704261780e-01 + 5.6041252613067627e-01 + <_> + + 0 1 652 -2.2906810045242310e-03 -1 -2 653 + 1.6744500026106834e-03 + + 5.5782741308212280e-01 3.3230578899383545e-01 + 5.5587881803512573e-01 + <_> + + 1 0 654 1.2349759927019477e-03 -1 -2 655 + -8.7158754467964172e-03 + + 3.6539471149444580e-01 1.9245339930057526e-01 + 5.3136497735977173e-01 + <_> + + 1 0 656 4.6613621525466442e-03 -1 -2 657 + -8.5815992206335068e-03 + + 2.0277309417724609e-01 7.6360601186752319e-01 + 5.1408261060714722e-01 + <_> + + 0 1 658 1.4352120459079742e-02 -1 -2 659 + -7.7948719263076782e-03 + + 5.2529758214950562e-01 2.6329371333122253e-01 + 5.3286892175674438e-01 + <_> + + 0 1 660 -3.4155680332332850e-03 -1 -2 661 + -4.2639090679585934e-03 + + 2.4160879850387573e-01 3.9365449547767639e-01 + 5.4787421226501465e-01 + <_> + + 0 1 662 8.7177697569131851e-03 -1 -2 663 + -3.2232629600912333e-03 + + 4.7881990671157837e-01 3.6316120624542236e-01 + 5.2883160114288330e-01 + <_> + + 0 1 664 -4.2188368737697601e-02 -1 -2 665 + 1.9875749945640564e-02 + + 6.9311392307281494e-01 4.5201000571250916e-01 + 6.8550550937652588e-01 + <_> + + 1 0 666 -3.1134510412812233e-02 -1 -2 667 + 5.7032387703657150e-03 + + 5.3004240989685059e-01 5.6068921089172363e-01 + 4.2306229472160339e-01 + <_> + + 1 0 668 5.2733682096004486e-03 -1 -2 669 + -3.1231069006025791e-03 + + 3.2472288608551025e-01 1.9856959581375122e-01 + 5.3498727083206177e-01 + <_> + + 0 1 670 4.6453849063254893e-04 -1 -2 671 + 3.0355889350175858e-02 + + 4.2075088620185852e-01 5.1534587144851685e-01 + 3.1181010603904724e-01 + <_> + + 0 1 672 -4.2992769740521908e-03 -1 -2 673 + 1.9509199773892760e-04 + + 3.2745069265365601e-01 5.9530782699584961e-01 + 4.2255210876464844e-01 + <_> + + 0 1 674 -7.7784480527043343e-03 -1 -2 675 + 1.6917599365115166e-02 + + 7.2111797332763672e-01 4.9365919828414917e-01 + 7.0302772521972656e-01 + <_> + + 0 1 676 -5.1948569715023041e-02 -1 -2 677 + -5.4751220159232616e-03 + + 1.4255349338054657e-01 6.0593318939208984e-01 + 4.3939951062202454e-01 + <_> + + 0 1 678 1.5210839592327829e-05 -1 -2 679 + 1.0235579684376717e-03 + + 4.4888499379158020e-01 4.2565500736236572e-01 + 5.7954382896423340e-01 + <_> + + 0 1 680 -1.0427719826111570e-04 -1 -2 681 + 8.7853781878948212e-03 + + 4.2460399866104126e-01 4.9580091238021851e-01 + 6.7594307661056519e-01 + <_> + + 0 1 682 3.4012699034065008e-03 -1 -2 683 + 5.8582378551363945e-04 + + 5.4234808683395386e-01 3.6365428566932678e-01 + 5.4643487930297852e-01 + <_> + + 0 1 684 -2.2973360028117895e-03 -1 -2 685 + -1.4330189675092697e-02 + + 2.5488188862800598e-01 6.5876567363739014e-01 + 4.5328021049499512e-01 + <_> + + 0 1 686 9.8565965890884399e-04 -1 -2 687 + -4.6640761196613312e-02 + + 3.8227710127830505e-01 3.0773219466209412e-01 + 5.2441328763961792e-01 + <_> + + 0 1 688 -1.1907300353050232e-01 -1 -2 689 + 1.9333280622959137e-02 + + 1.0338629782199860e-01 5.5547451972961426e-01 + 3.2213169336318970e-01 + <_> + + 0 1 690 3.1427849084138870e-02 -1 -2 691 + 2.0082130504306406e-04 + + 4.6823790669441223e-01 5.3730702400207520e-01 + 3.8006669282913208e-01 + <_> + + 0 1 692 -6.2584900297224522e-03 -1 -2 693 + 8.2861045375466347e-03 + + 1.7992070317268372e-01 5.0950688123703003e-01 + 7.5446051359176636e-01 + <_> + + 0 1 694 2.0529709290713072e-03 -1 -2 695 + 3.2524869311600924e-03 + + 5.6286448240280151e-01 4.8016890883445740e-01 + 5.8021020889282227e-01 + <_> + + 0 1 696 -3.1884901225566864e-02 -1 -2 697 + 1.8379340181127191e-03 + + 1.7427450418472290e-01 3.4665969014167786e-01 + 5.1071548461914062e-01 + <_> + + 1 0 698 -4.8512680223211646e-04 -1 -2 699 + -2.5407879147678614e-03 + + 5.3260862827301025e-01 6.3427752256393433e-01 + 4.9926930665969849e-01 + <_> + + 0 1 700 -5.1559060811996460e-03 -1 -2 701 + -4.4968750327825546e-02 + + 3.4334290027618408e-01 1.8681369721889496e-01 + 5.2154648303985596e-01 + <_> + + 1 0 702 5.8984281495213509e-03 -1 -2 703 + 3.2763120252639055e-03 + + 6.2293052673339844e-01 4.9357721209526062e-01 + 7.2179448604583740e-01 + <_> + + 1 0 704 -1.0161520185647532e-04 -1 -2 705 + -1.6290300118271261e-04 + + 5.0079762935638428e-01 6.0241490602493286e-01 + 2.3295080661773682e-01 + <_> + + 0 1 706 9.0541364625096321e-03 -1 -2 707 + 3.5398490726947784e-02 + + 4.5104169845581055e-01 5.1419967412948608e-01 + 2.8602918982505798e-01 + <_> + + 0 1 708 5.6469351984560490e-03 -1 -2 709 + -2.4807190056890249e-03 + + 4.7049251198768616e-01 4.1798511147499084e-01 + 6.7266470193862915e-01 + <_> + + 0 1 710 -4.1088787838816643e-03 -1 -2 711 + -2.0714469719678164e-03 + + 5.8098018169403076e-01 6.0747838020324707e-01 + 4.5240598917007446e-01 + <_> + + 0 1 712 -2.8939060866832733e-03 -1 -2 713 + 1.3467279495671391e-03 + + 3.3835199475288391e-01 5.6969100236892700e-01 + 3.9708450436592102e-01 + <_> + + 0 1 714 -9.0779133141040802e-02 -1 -2 715 + -8.3171762526035309e-02 + + 1.5027019381523132e-01 7.5736707448959351e-01 + 4.9364370107650757e-01 + <_> + + 0 1 716 -1.4107000315561891e-03 -1 -2 717 + 5.5668760091066360e-02 + + 3.3909329771995544e-01 5.0250971317291260e-01 + 7.4220830202102661e-01 + <_> + + 0 1 718 5.7701539248228073e-02 -1 -2 719 + -4.2503291368484497e-01 + + 5.1973718404769897e-01 9.7346916794776917e-02 + 5.1857399940490723e-01 + <_> + + 0 1 720 -4.4380719191394746e-04 -1 -2 721 + 1.7924769781529903e-04 + + 3.6493501067161560e-01 5.6192791461944580e-01 + 3.7602970004081726e-01 + <_> + + 1 0 722 5.0382469780743122e-03 -1 -2 723 + 1.5191170386970043e-02 + + 6.3284450769424438e-01 4.9360820651054382e-01 + 7.4265247583389282e-01 + <_> + + 0 1 724 -1.2300389818847179e-02 -1 -2 725 + 1.5168030513450503e-03 + + 1.3893499970436096e-01 5.0919622182846069e-01 + 3.4826481342315674e-01 + <_> + + 1 0 726 9.5754547510296106e-04 -1 -2 727 + -1.8962200731039047e-02 + + 6.0363167524337769e-01 2.3191730678081512e-01 + 5.1166528463363647e-01 + <_> + + 0 1 728 -2.2272260859608650e-02 -1 -2 729 + -2.5145230814814568e-02 + + 6.5550220012664795e-01 1.3260710239410400e-01 + 4.6740341186523438e-01 + <_> + + 0 1 730 1.9533900544047356e-02 -1 -2 731 + -1.1231349781155586e-03 + + 5.1820272207260132e-01 6.3182431459426880e-01 + 4.8255190253257751e-01 + <_> + + 0 1 732 -1.4861139934509993e-03 -1 -2 733 + 3.5002888762392104e-04 + + 2.9186710715293884e-01 5.6213712692260742e-01 + 4.2492130398750305e-01 + <_> + + 1 0 734 -1.1231349781155586e-03 -1 -2 735 + 1.0409739799797535e-02 + + 4.8137450218200684e-01 5.1840060949325562e-01 + 2.0512230694293976e-01 + <_> + + 0 1 736 -8.7832562625408173e-02 -1 -2 737 + 1.6584879485890269e-03 + + 1.1799219995737076e-01 4.9878111481666565e-01 + 6.9737559556961060e-01 + <_> + + 1 0 738 -2.3008750285953283e-03 -1 -2 739 + 3.3026169985532761e-02 + + 5.3398311138153076e-01 5.0332891941070557e-01 + 6.8519067764282227e-01 + <_> + + 0 1 740 -1.3585069682449102e-03 -1 -2 741 + 7.8067491995170712e-04 + + 3.0028221011161804e-01 4.5930838584899902e-01 + 6.4400452375411987e-01 + <_> + + 1 0 742 -1.8025759607553482e-02 -1 -2 743 + 1.2354910140857100e-03 + + 5.3112912178039551e-01 4.7291061282157898e-01 + 5.7214611768722534e-01 + <_> + + 0 1 744 -9.2583027435466647e-04 -1 -2 745 + 8.0123997759073973e-04 + + 3.6623328924179077e-01 5.3619897365570068e-01 + 3.0086329579353333e-01 + <_> + 63 + 3.0672130584716797e+01 + + <_> + + 0 1 746 2.4914839304983616e-03 -1 -2 747 + -5.0488598644733429e-02 + + 3.4223890304565430e-01 7.7034580707550049e-01 + 4.5163908600807190e-01 + <_> + + 1 0 748 -7.7838351717218757e-04 -1 -2 749 + 2.3572890495415777e-04 + + 3.2563421130180359e-01 3.4065559506416321e-01 + 5.8970272541046143e-01 + <_> + + 0 1 750 4.5575071126222610e-03 -1 -2 751 + 8.1241987645626068e-03 + + 4.3065789341926575e-01 7.1495872735977173e-01 + 4.3456849455833435e-01 + <_> + + 0 1 752 -4.4612158671952784e-04 -1 -2 753 + -2.8972938889637589e-04 + + 3.2959741353988647e-01 5.8456200361251831e-01 + 3.5266879200935364e-01 + <_> + + 0 1 754 7.1604831646254752e-06 -1 -2 755 + -3.8497708737850189e-04 + + 4.0819549560546875e-01 4.2031130194664001e-01 + 6.6341269016265869e-01 + <_> + + 0 1 756 1.9489860278554261e-04 -1 -2 757 + -1.7083849757909775e-02 + + 3.9424669742584229e-01 2.2940720617771149e-01 + 5.2389609813690186e-01 + <_> + + 0 1 758 8.3513697609305382e-04 -1 -2 759 + 7.5499608647078276e-04 + + 3.0260318517684937e-01 6.0321962833404541e-01 + 3.4124588966369629e-01 + <_> + + 1 0 760 8.0216713249683380e-03 -1 -2 761 + -3.8930509239435196e-02 + + 7.3062407970428467e-01 3.5993251204490662e-01 + 5.2343809604644775e-01 + <_> + + 1 0 762 -7.0348767621908337e-05 -1 -2 763 + -8.5350573062896729e-03 + + 3.4937581419944763e-01 2.7461090683937073e-01 + 5.6265860795974731e-01 + <_> + + 0 1 764 1.0854450054466724e-02 -1 -2 765 + 4.5329501153901219e-04 + + 5.2822262048721313e-01 4.5220491290092468e-01 + 6.0543018579483032e-01 + <_> + + 0 1 766 1.8117150466423482e-04 -1 -2 767 + 4.6641560038551688e-04 + + 3.3068621158599854e-01 1.4550000429153442e-01 + 5.3849279880523682e-01 + <_> + + 1 0 768 -8.4854792803525925e-03 -1 -2 769 + -1.8934309482574463e-02 + + 4.8141559958457947e-01 3.5637411475181580e-01 + 5.4051452875137329e-01 + <_> + + 1 0 770 4.9814549274742603e-03 -1 -2 771 + 3.4286780282855034e-03 + + 6.9577431678771973e-01 5.0508928298950195e-01 + 2.3169949650764465e-01 + <_> + + 1 0 772 4.4203791185282171e-04 -1 -2 773 + 2.3822550429031253e-04 + + 6.0185819864273071e-01 4.7550821304321289e-01 + 5.5852377414703369e-01 + <_> + + 0 1 774 -6.4261639490723610e-03 -1 -2 775 + 9.9637769162654877e-03 + + 2.2824659943580627e-01 4.0405881404876709e-01 + 5.6501698493957520e-01 + <_> + + 0 1 776 1.3654050417244434e-02 -1 -2 777 + -9.9892877042293549e-03 + + 5.2677392959594727e-01 6.7940497398376465e-01 + 4.7970339655876160e-01 + <_> + + 1 0 778 3.6558631807565689e-02 -1 -2 779 + 4.8999379941960797e-05 + + 8.8425733149051666e-02 4.0207880735397339e-01 + 5.4573321342468262e-01 + <_> + + 0 1 780 1.3654050417244434e-02 -1 -2 781 + 1.8802779959514737e-03 + + 5.2676129341125488e-01 4.8060521483421326e-01 + 6.3943648338317871e-01 + <_> + + 0 1 782 -1.3654050417244434e-02 -1 -2 783 + 1.2778700329363346e-03 + + 1.7248100042343140e-01 4.4798240065574646e-01 + 6.3100087642669678e-01 + <_> + + 1 0 784 9.8843395244330168e-04 -1 -2 785 + 1.4511500012304168e-05 + + 5.9481692314147949e-01 4.8541748523712158e-01 + 5.3093612194061279e-01 + <_> + + 0 1 786 -2.2775429533794522e-04 -1 -2 787 + -1.4753740280866623e-02 + + 3.1836318969726562e-01 3.0849760770797729e-01 + 5.3520262241363525e-01 + <_> + + 0 1 788 -3.4148250706493855e-03 -1 -2 789 + 7.5806681998074055e-03 + + 6.1153268814086914e-01 4.9516460299491882e-01 + 7.0613312721252441e-01 + <_> + + 1 0 790 -5.7734688743948936e-03 -1 -2 791 + 7.4033669079653919e-05 + + 3.7542209029197693e-01 4.1155171394348145e-01 + 5.8894449472427368e-01 + <_> + + 0 1 792 -8.2278084009885788e-03 -1 -2 793 + 5.3380909375846386e-03 + + 9.5610566437244415e-02 5.3005087375640869e-01 + 3.9618980884552002e-01 + <_> + + 0 1 794 -2.7049109339714050e-03 -1 -2 795 + 7.7341338619589806e-03 + + 6.4818692207336426e-01 5.1104402542114258e-01 + 3.1215190887451172e-01 + <_> + + 0 1 796 1.0886609554290771e-02 -1 -2 797 + 1.1038660071790218e-02 + + 4.8014289140701294e-01 5.4297101497650146e-01 + 4.1623631119728088e-01 + <_> + + 0 1 798 -1.0054199956357479e-02 -1 -2 799 + 7.7072880230844021e-03 + + 7.3293352127075195e-01 5.3568720817565918e-01 + 3.4555470943450928e-01 + <_> + + 0 1 800 -5.8278098003938794e-04 -1 -2 801 + -2.5739220436662436e-03 + + 3.6550220847129822e-01 3.7767601013183594e-01 + 5.3917747735977173e-01 + <_> + + 0 1 802 -7.0167761296033859e-03 -1 -2 803 + -1.7727289814502001e-03 + + 4.0393048524856567e-01 6.9504439830780029e-01 + 4.9811169505119324e-01 + <_> + + 1 0 804 -1.6318289563059807e-02 -1 -2 805 + -1.1663000099360943e-02 + + 5.2967327833175659e-01 5.8426398038864136e-01 + 4.7895029187202454e-01 + <_> + + 1 0 806 2.5881489273160696e-03 -1 -2 807 + -3.7328999023884535e-03 + + 6.0921788215637207e-01 6.7217427492141724e-01 + 4.0668940544128418e-01 + <_> + + 0 1 808 -1.4355930034071207e-03 -1 -2 809 + 1.8340899841859937e-03 + + 3.5850879549980164e-01 5.3711581230163574e-01 + 4.0335071086883545e-01 + <_> + + 1 0 810 1.2280289828777313e-01 -1 -2 811 + 5.0228700041770935e-02 + + 1.5475720167160034e-01 5.4338437318801880e-01 + 8.4292672574520111e-02 + <_> + + 1 0 812 -2.1437000483274460e-02 -1 -2 813 + -3.1009620055556297e-02 + + 4.8600539565086365e-01 1.8330100178718567e-01 + 5.2075541019439697e-01 + <_> + + 0 1 814 -1.2973720207810402e-02 -1 -2 815 + 1.5818020328879356e-03 + + 7.0482409000396729e-01 4.1705870628356934e-01 + 5.8651638031005859e-01 + <_> + + 1 0 816 -9.7806248813867569e-03 -1 -2 817 + 1.1735740117728710e-03 + + 5.3079181909561157e-01 5.5224531888961792e-01 + 3.5071650147438049e-01 + <_> + + 1 0 818 1.4651629608124495e-03 -1 -2 819 + 2.3532148916274309e-03 + + 3.0426511168479919e-01 5.3393232822418213e-01 + 2.8062361478805542e-01 + <_> + + 0 1 820 -6.1809681355953217e-03 -1 -2 821 + 6.5688649192452431e-04 + + 6.4101332426071167e-01 5.6208711862564087e-01 + 4.3903189897537231e-01 + <_> + + 1 0 822 2.6228010654449463e-02 -1 -2 823 + -1.7958110198378563e-02 + + 6.4455568790435791e-01 2.0027139782905579e-01 + 4.6246650815010071e-01 + <_> + + 1 0 824 -7.6468721963465214e-03 -1 -2 825 + -2.7482809964567423e-03 + + 5.2632009983062744e-01 5.8739811182022095e-01 + 4.8366001248359680e-01 + <_> + + 1 0 826 1.3851850293576717e-02 -1 -2 827 + 2.6369190309196711e-03 + + 1.5661309659481049e-01 4.2701789736747742e-01 + 5.8066600561141968e-01 + <_> + + 0 1 828 -3.1513599678874016e-03 -1 -2 829 + -1.4788460248382762e-05 + + 6.2158662080764771e-01 5.5766427516937256e-01 + 4.1220021247863770e-01 + <_> + + 0 1 830 -7.3676988482475281e-02 -1 -2 831 + -3.0912780202925205e-03 + + 1.5367099642753601e-01 6.3442689180374146e-01 + 4.5074120163917542e-01 + <_> + + 0 1 832 7.9240966588258743e-03 -1 -2 833 + 8.5778040811419487e-03 + + 5.4579752683639526e-01 5.4016572237014771e-01 + 3.8907998800277710e-01 + <_> + + 1 0 834 5.5403169244527817e-03 -1 -2 835 + -1.1886510037584230e-04 + + 3.5556110739707947e-01 5.8367502689361572e-01 + 4.2743161320686340e-01 + <_> + + 0 1 836 -1.8408369272947311e-02 -1 -2 837 + -2.3490579333156347e-03 + + 5.8604401350021362e-01 4.4989579916000366e-01 + 5.4981988668441772e-01 + <_> + + 1 0 838 -7.6157399453222752e-03 -1 -2 839 + -3.3190969843417406e-03 + + 4.1009929776191711e-01 6.7013788223266602e-01 + 4.3530011177062988e-01 + <_> + + 1 0 840 -9.4642979092895985e-04 -1 -2 841 + 8.7858550250530243e-03 + + 5.3911769390106201e-01 5.5040502548217773e-01 + 3.9909350872039795e-01 + <_> + + 1 0 842 1.6395459533669055e-04 -1 -2 843 + -2.3508940357714891e-03 + + 3.5929331183433533e-01 4.0341728925704956e-01 + 5.8060771226882935e-01 + <_> + + 1 0 844 7.5449963333085179e-05 -1 -2 845 + 2.7018489316105843e-02 + + 5.4123848676681519e-01 4.9449229240417480e-01 + 5.5894362926483154e-01 + <_> + + 1 0 846 8.4561208495870233e-04 -1 -2 847 + -1.1687109945341945e-03 + + 5.8092182874679565e-01 4.7469571232795715e-01 + 2.8458958864212036e-01 + <_> + + 1 0 848 2.2897500544786453e-02 -1 -2 849 + 7.0879262685775757e-01 + + 2.4144110083580017e-01 5.1957648992538452e-01 + 1.0300920158624649e-01 + <_> + + 1 0 850 3.7483830004930496e-02 -1 -2 851 + 1.2827500468119979e-03 + + 1.8146389722824097e-01 4.2460718750953674e-01 + 5.7079732418060303e-01 + <_> + + 0 1 852 -5.1718312315642834e-03 -1 -2 853 + 2.7545939665287733e-03 + + 6.1433231830596924e-01 5.2056711912155151e-01 + 4.2204418778419495e-01 + <_> + + 0 1 854 -3.6072919610887766e-03 -1 -2 855 + -2.5258748792111874e-04 + + 3.1825920939445496e-01 5.7104682922363281e-01 + 4.2260938882827759e-01 + <_> + + 1 0 856 -7.0514748804271221e-03 -1 -2 857 + -5.4323761723935604e-03 + + 5.1628297567367554e-01 2.6662889122962952e-01 + 5.2146798372268677e-01 + <_> + + 1 0 858 -1.4652940080850385e-05 -1 -2 859 + -1.8556920113041997e-03 + + 3.9817610383033752e-01 3.3227631449699402e-01 + 5.7058340311050415e-01 + <_> + + 1 0 860 4.7609540633857250e-03 -1 -2 861 + 1.5676260227337480e-03 + + 6.6365581750869751e-01 5.5055677890777588e-01 + 4.4206619262695312e-01 + <_> + + 1 0 862 5.4239919409155846e-03 -1 -2 863 + -6.4692399464547634e-03 + + 5.9599381685256958e-01 5.3695940971374512e-01 + 3.7443399429321289e-01 + <_> + + 0 1 864 -7.8038539504632354e-04 -1 -2 865 + 4.5086450874805450e-02 + + 4.1035950183868408e-01 5.1775068044662476e-01 + 1.8781000375747681e-01 + <_> + + 0 1 866 -5.1405387930572033e-03 -1 -2 867 + -2.1236129105091095e-02 + + 2.3528920114040375e-01 1.7087510228157043e-01 + 5.4249739646911621e-01 + <_> + + 0 1 868 -2.3763340432196856e-03 -1 -2 869 + 5.4122589528560638e-02 + + 5.8365309238433838e-01 5.1174330711364746e-01 + 1.8659310042858124e-01 + <_> + + 0 1 870 -5.3492980077862740e-04 -1 -2 871 + -5.8454048121348023e-04 + + 5.1086932420730591e-01 4.7754910588264465e-01 + 2.4398539960384369e-01 + <_> + 71 + 3.4677078247070312e+01 + + <_> + + 0 1 872 3.0031939968466759e-03 -1 -2 873 + 6.9161207647994161e-04 + + 3.3496499061584473e-01 4.5183679461479187e-01 + 7.2893542051315308e-01 + <_> + + 0 1 874 1.1212790384888649e-02 -1 -2 875 + -7.6108198845759034e-04 + + 2.9508009552955627e-01 5.6690549850463867e-01 + 2.8308510780334473e-01 + <_> + + 0 1 876 1.1984579759882763e-04 -1 -2 877 + -1.9725349557120353e-04 + + 4.0905779600143433e-01 6.9514942169189453e-01 + 4.6378681063652039e-01 + <_> + + 1 0 878 -5.5180420167744160e-03 -1 -2 879 + 1.2148249661549926e-03 + + 3.1676751375198364e-01 3.3167061209678650e-01 + 5.3963977098464966e-01 + <_> + + 0 1 880 -4.2497441172599792e-03 -1 -2 881 + -9.4915721565485001e-03 + + 2.6005738973617554e-01 7.4842947721481323e-01 + 5.0731921195983887e-01 + <_> + + 1 0 882 6.5378600265830755e-04 -1 -2 883 + -4.9741100519895554e-04 + + 3.9520108699798584e-01 5.8802747726440430e-01 + 3.5521200299263000e-01 + <_> + + 0 1 884 -4.3079249560832977e-02 -1 -2 885 + -5.1999092102050781e-04 + + 2.4348780512809753e-01 3.1955629587173462e-01 + 5.5854547023773193e-01 + <_> + + 1 0 886 -4.5451628975570202e-03 -1 -2 887 + -7.9610403627157211e-03 + + 4.8452898859977722e-01 3.8011810183525085e-01 + 5.3585118055343628e-01 + <_> + + 1 0 888 -3.1919340835884213e-04 -1 -2 889 + -1.9223889335989952e-02 + + 4.3563291430473328e-01 2.6130661368370056e-01 + 6.1554962396621704e-01 + <_> + + 0 1 890 -1.3076990144327283e-03 -1 -2 891 + 1.9825039431452751e-02 + + 5.9420621395111084e-01 4.9454280734062195e-01 + 7.3848551511764526e-01 + <_> + + 0 1 892 -2.2013280540704727e-03 -1 -2 893 + -7.8596705570816994e-03 + + 2.2144819796085358e-01 3.6009770631790161e-01 + 5.2985501289367676e-01 + <_> + + 1 0 894 1.4142199652269483e-03 -1 -2 895 + -1.1232759803533554e-02 + + 5.7765662670135498e-01 6.9344568252563477e-01 + 4.8272070288658142e-01 + <_> + + 1 0 896 2.9746301006525755e-03 -1 -2 897 + 5.3283828310668468e-04 + + 3.2166770100593567e-01 3.9625000953674316e-01 + 5.6803637742996216e-01 + <_> + + 1 0 898 1.0105259716510773e-02 -1 -2 899 + -1.1653699912130833e-02 + + 7.5674182176589966e-01 6.5235567092895508e-01 + 5.0270539522171021e-01 + <_> + + 0 1 900 -7.0609981194138527e-03 -1 -2 901 + 2.2343141026794910e-03 + + 2.5387701392173767e-01 4.3872770667076111e-01 + 6.1776322126388550e-01 + <_> + + 1 0 902 -2.9802279546856880e-02 -1 -2 903 + 1.1611840454861522e-03 + + 5.2011400461196899e-01 4.6479099988937378e-01 + 6.1842548847198486e-01 + <_> + + 1 0 904 9.4824447296559811e-04 -1 -2 905 + 4.1284630424343050e-04 + + 3.0409941077232361e-01 4.5188081264495850e-01 + 6.2457829713821411e-01 + <_> + + 0 1 906 -3.1203540042042732e-02 -1 -2 907 + 2.7652881108224392e-03 + + 2.7889358997344971e-01 4.6985000371932983e-01 + 6.5024542808532715e-01 + <_> + + 1 0 908 2.5644779205322266e-02 -1 -2 909 + -7.5331530533730984e-03 + + 1.8051710724830627e-01 3.2080689072608948e-01 + 5.5220228433609009e-01 + <_> + + 1 0 910 3.2047149725258350e-03 -1 -2 911 + -2.4282479716930538e-04 + + 6.4369338750839233e-01 5.6767052412033081e-01 + 4.5091038942337036e-01 + <_> + + 0 1 912 -6.1979342717677355e-04 -1 -2 913 + -8.0101029016077518e-04 + + 3.1221461296081543e-01 2.9651939868927002e-01 + 5.2304947376251221e-01 + <_> + + 1 0 914 -9.1816839994862676e-04 -1 -2 915 + 1.2239529751241207e-03 + + 5.4647117853164673e-01 4.6185028553009033e-01 + 5.6795489788055420e-01 + <_> + + 0 1 916 -6.8743730662390590e-04 -1 -2 917 + -1.8252469599246979e-03 + + 5.4308801889419556e-01 5.4336231946945190e-01 + 3.3852210640907288e-01 + <_> + + 1 0 918 -7.4570789001882076e-03 -1 -2 919 + 5.3775748237967491e-03 + + 5.2655947208404541e-01 4.8572158813476562e-01 + 6.8151241540908813e-01 + <_> + + 1 0 920 3.7602309603244066e-03 -1 -2 921 + 8.7752222316339612e-04 + + 2.8321608901023865e-01 3.9668309688568115e-01 + 5.5124807357788086e-01 + <_> + + 1 0 922 5.5084479972720146e-03 -1 -2 923 + -7.5949047459289432e-04 + + 6.7846202850341797e-01 3.9065030217170715e-01 + 5.4572027921676636e-01 + <_> + + 1 0 924 1.6352660022675991e-03 -1 -2 925 + -1.2750849418807775e-04 + + 3.6402040719985962e-01 5.8297240734100342e-01 + 4.1949799656867981e-01 + <_> + + 0 1 926 2.2067610174417496e-02 -1 -2 927 + -1.9203789532184601e-02 + + 4.6067029237747192e-01 3.2614830136299133e-01 + 5.2360808849334717e-01 + <_> + + 0 1 928 -1.2998109683394432e-02 -1 -2 929 + -3.1332690268754959e-03 + + 7.0221120119094849e-01 2.8704708814620972e-01 + 5.0764769315719604e-01 + <_> + + 1 0 930 -5.2937557920813560e-03 -1 -2 931 + 2.1857069805264473e-03 + + 4.7095209360122681e-01 4.7082918882369995e-01 + 6.1698418855667114e-01 + <_> + + 0 1 932 -4.5750709250569344e-03 -1 -2 933 + -4.5152138918638229e-02 + + 3.1142529845237732e-01 1.8514350056648254e-01 + 5.5048149824142456e-01 + <_> + + 1 0 934 -2.7783559635281563e-03 -1 -2 935 + -2.5752480141818523e-03 + + 4.9373480677604675e-01 6.1529481410980225e-01 + 4.7354999184608459e-01 + <_> + + 1 0 936 1.1614130344241858e-03 -1 -2 937 + 2.3350189439952374e-03 + + 6.5105718374252319e-01 4.0883418917655945e-01 + 5.6841522455215454e-01 + <_> + + 1 0 938 3.8499289657920599e-03 -1 -2 939 + 2.4529630318284035e-03 + + 3.0258288979530334e-01 5.2325028181076050e-01 + 2.0176209509372711e-01 + <_> + + 1 0 940 3.6731390282511711e-03 -1 -2 941 + 2.1937100682407618e-03 + + 6.4284259080886841e-01 4.3288651108741760e-01 + 6.4205098152160645e-01 + <_> + + 1 0 942 -6.4666871912777424e-03 -1 -2 943 + -5.7186251506209373e-03 + + 5.2540659904479980e-01 2.4909840524196625e-01 + 5.2876192331314087e-01 + <_> + + 1 0 944 9.9941878579556942e-04 -1 -2 945 + -7.8276498243212700e-04 + + 3.3297958970069885e-01 3.5983449220657349e-01 + 5.4983407258987427e-01 + <_> + + 0 1 946 4.3231188319623470e-03 -1 -2 947 + 4.0838290005922318e-03 + + 4.8187050223350525e-01 5.2663302421569824e-01 + 3.1057891249656677e-01 + <_> + + 1 0 948 3.0515898833982646e-04 -1 -2 949 + 1.2640280183404684e-03 + + 3.9952918887138367e-01 3.2284379005432129e-01 + 5.8192151784896851e-01 + <_> + + 0 1 950 -1.0152660310268402e-02 -1 -2 951 + -2.6863690000027418e-03 + + 8.0260711908340454e-01 3.8756170868873596e-01 + 5.4665708541870117e-01 + <_> + + 1 0 952 -9.0515613555908203e-03 -1 -2 953 + -6.3204211182892323e-03 + + 4.3720579147338867e-01 1.1265510320663452e-01 + 6.3954162597656250e-01 + <_> + + 0 1 954 2.6117300149053335e-03 -1 -2 955 + 1.4339019544422626e-02 + + 5.4239892959594727e-01 4.9792730808258057e-01 + 6.0422360897064209e-01 + <_> + + 1 0 956 2.8452780097723007e-03 -1 -2 957 + 1.4783289771003183e-05 + + 3.4910920262336731e-01 4.1950678825378418e-01 + 5.7759660482406616e-01 + <_> + + 0 1 958 8.1814555451273918e-03 -1 -2 959 + 6.6321990452706814e-03 + + 4.8859870433807373e-01 5.4444682598114014e-01 + 4.4209951162338257e-01 + <_> + + 0 1 960 -2.2483461070805788e-03 -1 -2 961 + 1.2374560348689556e-02 + + 6.6997921466827393e-01 4.4786059856414795e-01 + 6.5648937225341797e-01 + <_> + + 1 0 962 -6.6516688093543053e-03 -1 -2 963 + -8.5750613361597061e-03 + + 5.5118787288665771e-01 4.0174451470375061e-01 + 5.4055362939834595e-01 + <_> + + 1 0 964 6.5078441984951496e-03 -1 -2 965 + 2.8675209730863571e-02 + + 2.2943930327892303e-01 5.1779001951217651e-01 + 3.5677561163902283e-01 + <_> + + 0 1 966 7.0673860609531403e-03 -1 -2 967 + 1.2367829913273454e-03 + + 5.5646997690200806e-01 3.6276981234550476e-01 + 5.5724138021469116e-01 + <_> + + 1 0 968 7.4818679131567478e-03 -1 -2 969 + 4.7109839506447315e-03 + + 6.7849111557006836e-01 4.1212528944015503e-01 + 6.0722357034683228e-01 + <_> + + 1 0 970 -6.9405790418386459e-03 -1 -2 971 + 3.3302098512649536e-02 + + 5.4597669839859009e-01 5.2767068147659302e-01 + 2.3749159276485443e-01 + <_> + + 1 0 972 3.6104630678892136e-02 -1 -2 973 + 1.9674649462103844e-02 + + 7.2492793202400208e-02 4.6263459324836731e-01 + 8.2089632749557495e-01 + <_> + + 0 1 974 3.4766150638461113e-03 -1 -2 975 + 1.3987369602546096e-03 + + 5.2087318897247314e-01 5.4844141006469727e-01 + 4.2300349473953247e-01 + <_> + + 1 0 976 4.0974249131977558e-03 -1 -2 977 + 2.6973790954798460e-03 + + 2.7805531024932861e-01 5.4038310050964355e-01 + 3.7909889221191406e-01 + <_> + + 1 0 978 -5.6591699831187725e-03 -1 -2 979 + 3.9460969856008887e-04 + + 4.7983360290527344e-01 3.7669500708580017e-01 + 5.4292291402816772e-01 + <_> + + 1 0 980 2.1750570740550756e-03 -1 -2 981 + 1.4614439569413662e-03 + + 6.2071627378463745e-01 3.3579450845718384e-01 + 5.1426321268081665e-01 + <_> + + 1 0 982 -5.3006567759439349e-04 -1 -2 983 + 1.4869309961795807e-01 + + 5.3446400165557861e-01 5.1596081256866455e-01 + 2.5618231296539307e-01 + <_> + + 1 0 984 -5.8816498494707048e-05 -1 -2 985 + -1.6275369562208652e-03 + + 5.1230919361114502e-01 6.0176461935043335e-01 + 3.1093719601631165e-01 + <_> + + 0 1 986 -1.2881809845566750e-02 -1 -2 987 + 9.4982917653396726e-04 + + 2.7122870087623596e-01 5.4424422979354858e-01 + 4.0288880467414856e-01 + <_> + + 1 0 988 -1.2315999716520309e-02 -1 -2 989 + 9.0286601334810257e-03 + + 4.7360658645629883e-01 7.4514347314834595e-01 + 3.4879919886589050e-01 + <_> + + 0 1 990 -8.6876116693019867e-02 -1 -2 991 + -1.5107560102478601e-05 + + 2.2903330624103546e-01 5.5178898572921753e-01 + 4.3931490182876587e-01 + <_> + + 0 1 992 -1.7457660287618637e-02 -1 -2 993 + -2.5219470262527466e-03 + + 9.0167902410030365e-02 6.2335401773452759e-01 + 4.7894591093063354e-01 + <_> + + 0 1 994 1.0656520025804639e-03 -1 -2 995 + -4.2540300637483597e-03 + + 5.4896962642669678e-01 5.5798089504241943e-01 + 4.3758779764175415e-01 + <_> + + 0 1 996 -9.0349102392792702e-03 -1 -2 997 + -1.5230999561026692e-03 + + 3.5791561007499695e-01 5.6136602163314819e-01 + 3.9390438795089722e-01 + <_> + + 1 0 998 2.8441150207072496e-03 -1 -2 999 + -3.2824429217725992e-03 + + 3.9015549421310425e-01 4.5286190509796143e-01 + 5.4413431882858276e-01 + <_> + + 1 0 1000 3.2161718991119415e-05 -1 -2 1001 + 3.0118400900391862e-05 + + 5.8031117916107178e-01 3.3368501067161560e-01 + 5.5048561096191406e-01 + <_> + + 0 1 1002 -5.6150099262595177e-03 -1 -2 1003 + -1.7389209941029549e-02 + + 6.1247891187667847e-01 8.7271630764007568e-02 + 5.2045881748199463e-01 + <_> + + 0 1 1004 -4.4361080654198304e-05 -1 -2 1005 + 1.0354899859521538e-04 + + 3.9353290200233459e-01 5.9188538789749146e-01 + 4.1196140646934509e-01 + <_> + + 0 1 1006 1.5939630102366209e-03 -1 -2 1007 + 2.5440789759159088e-03 + + 4.8396238684654236e-01 4.7873649001121521e-01 + 6.3606631755828857e-01 + <_> + + 0 1 1008 1.5083180187502876e-05 -1 -2 1009 + -9.9282202427275479e-05 + + 4.2311170697212219e-01 4.2745891213417053e-01 + 6.0940480232238770e-01 + <_> + + 1 0 1010 5.5371708003804088e-04 -1 -2 1011 + 1.9186759600415826e-03 + + 4.2719879746437073e-01 4.4971078634262085e-01 + 5.5491220951080322e-01 + <_> + + 1 0 1012 -5.0764222396537662e-04 -1 -2 1013 + 1.7236480489373207e-03 + + 5.4771959781646729e-01 2.8829228878021240e-01 + 5.6151270866394043e-01 + <_> + 75 + 3.6726501464843750e+01 + + <_> + + 0 1 1014 1.3092169538140297e-02 -1 -2 1015 + 4.1446479735895991e-04 + + 3.3388701081275940e-01 3.0993521213531494e-01 + 6.6774922609329224e-01 + <_> + + 0 1 1016 2.1835729479789734e-02 -1 -2 1017 + 4.8323940485715866e-02 + + 4.3690490722656250e-01 4.3017241358757019e-01 + 6.1538851261138916e-01 + <_> + + 0 1 1018 1.6091950237751007e-03 -1 -2 1019 + 1.3469760306179523e-03 + + 3.3873260021209717e-01 6.2487137317657471e-01 + 3.5941308736801147e-01 + <_> + + 0 1 1020 1.7729059618432075e-04 -1 -2 1021 + 3.6743620876222849e-04 + + 3.8684248924255371e-01 4.4093450903892517e-01 + 5.4764741659164429e-01 + <_> + + 0 1 1022 -1.2352119665592909e-03 -1 -2 1023 + 1.1705530341714621e-03 + + 3.2601711153984070e-01 4.1113489866256714e-01 + 6.0881638526916504e-01 + <_> + + 1 0 1024 -2.9695429475395940e-05 -1 -2 1025 + 2.7050738572143018e-04 + + 4.2694228887557983e-01 4.3064668774604797e-01 + 5.8105140924453735e-01 + <_> + + 1 0 1026 -7.9626210208516568e-05 -1 -2 1027 + 3.3152441028505564e-04 + + 3.6691430211067200e-01 4.6106639504432678e-01 + 6.2905901670455933e-01 + <_> + + 1 0 1028 -5.2305828779935837e-02 -1 -2 1029 + 2.6880469173192978e-02 + + 5.3286898136138916e-01 5.2132612466812134e-01 + 3.2312199473381042e-01 + <_> + + 1 0 1030 -2.4203000066336244e-04 -1 -2 1031 + -1.6424639616161585e-03 + + 3.5685700178146362e-01 3.4406611323356628e-01 + 5.6256049871444702e-01 + <_> + + 1 0 1032 -2.6830288697965443e-04 -1 -2 1033 + -2.2649629972875118e-03 + + 4.5611730217933655e-01 5.3213518857955933e-01 + 3.6741548776626587e-01 + <_> + + 1 0 1034 1.5627209097146988e-02 -1 -2 1035 + 1.6211320459842682e-01 + + 2.0293539762496948e-01 5.5630332231521606e-01 + 2.6188498735427856e-01 + <_> + + 0 1 1036 -3.7391691002994776e-03 -1 -2 1037 + -2.0878419745713472e-03 + + 6.0621947050094604e-01 5.9507638216018677e-01 + 4.5451170206069946e-01 + <_> + + 1 0 1038 2.3334210272878408e-03 -1 -2 1039 + 6.5116386394947767e-05 + + 6.4355242252349854e-01 3.5207340121269226e-01 + 5.1797789335250854e-01 + <_> + + 0 1 1040 7.4625718407332897e-03 -1 -2 1041 + -2.2032689303159714e-02 + + 5.3266882896423340e-01 3.4919810295104980e-01 + 5.4292368888854980e-01 + <_> + + 0 1 1042 -8.3081610500812531e-03 -1 -2 1043 + -4.3259368976578116e-04 + + 2.0840230584144592e-01 3.9652720093727112e-01 + 5.4254537820816040e-01 + <_> + + 1 0 1044 -3.2209228724241257e-02 -1 -2 1045 + -9.0424838708713651e-04 + + 5.3064119815826416e-01 5.4503858089447021e-01 + 4.2566969990730286e-01 + <_> + + 1 0 1046 2.2727500181645155e-03 -1 -2 1047 + 5.9820008464157581e-03 + + 5.9686112403869629e-01 4.7581401467323303e-01 + 3.1509441137313843e-01 + <_> + + 1 0 1048 -5.8856618124991655e-04 -1 -2 1049 + -8.8227191008627415e-04 + + 4.8477488756179810e-01 5.4263162612915039e-01 + 4.3383410573005676e-01 + <_> + + 1 0 1050 -7.4473457061685622e-05 -1 -2 1051 + 3.9148979703895748e-04 + + 4.2875099182128906e-01 6.3451850414276123e-01 + 4.1018518805503845e-01 + <_> + + 1 0 1052 -3.6939629353582859e-03 -1 -2 1053 + -1.1207849718630314e-02 + + 4.8491048812866211e-01 4.1463369131088257e-01 + 5.4712641239166260e-01 + <_> + + 0 1 1054 -1.0337409563362598e-02 -1 -2 1055 + 3.6883640568703413e-03 + + 2.8771838545799255e-01 5.1019018888473511e-01 + 7.2169512510299683e-01 + <_> + + 1 0 1056 -3.8984280545264482e-03 -1 -2 1057 + -5.9986729174852371e-03 + + 5.2761822938919067e-01 6.6184598207473755e-01 + 4.8416310548782349e-01 + <_> + + 1 0 1058 4.5043681748211384e-03 -1 -2 1059 + 1.7799530178308487e-02 + + 1.8741579353809357e-01 4.6169349551200867e-01 + 7.0889657735824585e-01 + <_> + + 0 1 1060 -1.8462570384144783e-02 -1 -2 1061 + 1.4931300029275008e-05 + + 3.0019798874855042e-01 4.5618081092834473e-01 + 5.6107878684997559e-01 + <_> + + 0 1 1062 -8.6021229624748230e-02 -1 -2 1063 + -6.0818758356617764e-05 + + 2.3417009413242340e-01 5.6722861528396606e-01 + 4.1999641060829163e-01 + <_> + + 1 0 1064 1.2670679716393352e-03 -1 -2 1065 + 1.3699879636988044e-03 + + 6.2074822187423706e-01 5.3949588537216187e-01 + 3.8238629698753357e-01 + <_> + + 1 0 1066 3.3162781037390232e-03 -1 -2 1067 + -1.4532039640471339e-03 + + 7.0616811513900757e-01 3.0655130743980408e-01 + 4.8273730278015137e-01 + <_> + + 1 0 1068 -7.1492061018943787e-02 -1 -2 1069 + 1.9857978913933039e-03 + + 5.1931220293045044e-01 4.6424350142478943e-01 + 5.8076947927474976e-01 + <_> + + 1 0 1070 6.2516499310731888e-03 -1 -2 1071 + 2.7005500160157681e-03 + + 2.9498139023780823e-01 4.5858868956565857e-01 + 6.0223537683486938e-01 + <_> + + 0 1 1072 1.1130389757454395e-02 -1 -2 1073 + 1.5092849731445312e-02 + + 4.3578410148620605e-01 4.5615398883819580e-01 + 6.1190617084503174e-01 + <_> + + 0 1 1074 -2.7943300083279610e-02 -1 -2 1075 + 4.4036991312168539e-05 + + 6.5371441841125488e-01 3.4747231006622314e-01 + 5.3369677066802979e-01 + <_> + + 0 1 1076 -1.2232770211994648e-02 -1 -2 1077 + -6.8591412855312228e-04 + + 3.7316760420799255e-01 5.7172292470932007e-01 + 4.7933790087699890e-01 + <_> + + 0 1 1078 -3.8992990739643574e-03 -1 -2 1079 + 4.9113907152786851e-04 + + 4.0564361214637756e-01 6.1740481853485107e-01 + 4.4717541337013245e-01 + <_> + + 1 0 1080 8.2117747515439987e-03 -1 -2 1081 + -4.5564480125904083e-02 + + 6.1796981096267700e-01 2.2854949533939362e-01 + 5.2495658397674561e-01 + <_> + + 0 1 1082 -5.3631910122931004e-03 -1 -2 1083 + -1.2274970300495625e-02 + + 1.7849500477313995e-01 7.2619527578353882e-01 + 4.5503988862037659e-01 + <_> + + 0 1 1084 5.4185991175472736e-03 -1 -2 1085 + 8.1846961984410882e-04 + + 5.2529907226562500e-01 5.4452222585678101e-01 + 3.2722181081771851e-01 + <_> + + 1 0 1086 4.1358140297234058e-03 -1 -2 1087 + 3.9578010910190642e-04 + + 7.0138317346572876e-01 4.9659439921379089e-01 + 3.2955980300903320e-01 + <_> + + 0 1 1088 4.6887691132724285e-03 -1 -2 1089 + -1.8255440518260002e-02 + + 5.3626418113708496e-01 6.4961087703704834e-01 + 4.7571370005607605e-01 + <_> + + 0 1 1090 -6.2736468389630318e-03 -1 -2 1091 + 2.4320168886333704e-03 + + 2.3437410593032837e-01 4.6201181411743164e-01 + 6.8984192609786987e-01 + <_> + + 0 1 1092 -4.9617629498243332e-02 -1 -2 1093 + 1.1701210169121623e-03 + + 2.1007199585437775e-01 4.6215289831161499e-01 + 5.7971358299255371e-01 + <_> + + 0 1 1094 -4.5237291604280472e-02 -1 -2 1095 + 4.7563421539962292e-03 + + 2.1182620525360107e-01 4.8846149444580078e-01 + 6.8724989891052246e-01 + <_> + + 1 0 1096 -1.4835969544947147e-02 -1 -2 1097 + 7.7436608262360096e-04 + + 5.2751058340072632e-01 4.1723209619522095e-01 + 5.4911398887634277e-01 + <_> + + 1 0 1098 1.4835969544947147e-02 -1 -2 1099 + -8.0892542609944940e-04 + + 2.1248769760131836e-01 5.4952150583267212e-01 + 4.2077958583831787e-01 + <_> + + 0 1 1100 7.7517668250948191e-04 -1 -2 1101 + -6.7618978209793568e-03 + + 3.3219420909881592e-01 2.2129580378532410e-01 + 5.2326530218124390e-01 + <_> + + 0 1 1102 -4.0135860443115234e-02 -1 -2 1103 + -3.3651469275355339e-03 + + 1.1017960309982300e-01 3.8101008534431458e-01 + 5.6172919273376465e-01 + <_> + + 1 0 1104 7.4713007779791951e-04 -1 -2 1105 + -4.2727389372885227e-03 + + 5.7950568199157715e-01 6.3922691345214844e-01 + 4.7114381194114685e-01 + <_> + + 1 0 1106 3.6202510818839073e-03 -1 -2 1107 + 4.7307618660852313e-04 + + 3.4098839759826660e-01 3.6593028903007507e-01 + 5.3881710767745972e-01 + <_> + + 1 0 1108 3.3094909042119980e-02 -1 -2 1109 + -1.1544119566679001e-02 + + 7.1703857183456421e-01 6.3868182897567749e-01 + 4.6813040971755981e-01 + <_> + + 0 1 1110 -7.4234469793736935e-03 -1 -2 1111 + -4.2252950370311737e-03 + + 3.2637009024620056e-01 5.7678192853927612e-01 + 4.3464180827140808e-01 + <_> + + 0 1 1112 1.8133109435439110e-02 -1 -2 1113 + 7.0903049781918526e-03 + + 4.6978279948234558e-01 4.4373890757560730e-01 + 6.0616689920425415e-01 + <_> + + 0 1 1114 -1.3272940181195736e-02 -1 -2 1115 + 1.4632199599873275e-04 + + 6.5585112571716309e-01 3.3763539791107178e-01 + 5.0916552543640137e-01 + <_> + + 0 1 1116 -3.5790191031992435e-03 -1 -2 1117 + -4.6997101162560284e-04 + + 2.9478839039802551e-01 5.5569821596145630e-01 + 4.6654561161994934e-01 + <_> + + 0 1 1118 -4.8179440200328827e-02 -1 -2 1119 + -9.2581362696364522e-04 + + 7.3383557796478271e-01 3.5438719391822815e-01 + 5.2851498126983643e-01 + <_> + + 0 1 1120 -1.4780730009078979e-02 -1 -2 1121 + -1.0027450323104858e-01 + + 1.9444419443607330e-01 9.9049292504787445e-02 + 5.1398539543151855e-01 + <_> + + 0 1 1122 -9.3848101096227765e-04 -1 -2 1123 + -2.8861360624432564e-03 + + 5.8271098136901855e-01 3.4414279460906982e-01 + 5.1488387584686279e-01 + <_> + + 1 0 1124 -4.3682761490345001e-02 -1 -2 1125 + 2.6115700602531433e-03 + + 5.2079981565475464e-01 4.8355031013488770e-01 + 6.3222199678421021e-01 + <_> + + 1 0 1126 4.3682761490345001e-02 -1 -2 1127 + 1.7179530113935471e-03 + + 1.3645380735397339e-01 4.5373201370239258e-01 + 6.0667508840560913e-01 + <_> + + 1 0 1128 -3.3964909613132477e-02 -1 -2 1129 + -1.0993590112775564e-03 + + 4.9683749675750732e-01 5.8316808938980103e-01 + 4.6882399916648865e-01 + <_> + + 1 0 1130 5.4301079362630844e-02 -1 -2 1131 + 1.0993590112775564e-03 + + 7.5682890415191650e-01 4.3301481008529663e-01 + 5.7684689760208130e-01 + <_> + + 1 0 1132 -1.4954120160837192e-05 -1 -2 1133 + 3.1415868550539017e-02 + + 4.4432818889617920e-01 5.2744728326797485e-01 + 3.0378559231758118e-01 + <_> + + 1 0 1134 1.0831849649548531e-02 -1 -2 1135 + 8.6545711383223534e-04 + + 3.5817208886146545e-01 5.9375840425491333e-01 + 4.2946299910545349e-01 + <_> + + 1 0 1136 2.2743160370737314e-03 -1 -2 1137 + 3.9340821094810963e-03 + + 5.9545767307281494e-01 4.7922229766845703e-01 + 5.8561331033706665e-01 + <_> + + 1 0 1138 8.1451907753944397e-03 -1 -2 1139 + -5.2763288840651512e-03 + + 3.5734778642654419e-01 4.0260228514671326e-01 + 5.7647430896759033e-01 + <_> + + 1 0 1140 -8.3787851035594940e-03 -1 -2 1141 + 1.5621910570189357e-03 + + 4.9813330173492432e-01 4.7365880012512207e-01 + 5.5836081504821777e-01 + <_> + + 1 0 1142 3.2318739686161280e-03 -1 -2 1143 + 6.6804019734263420e-03 + + 6.1674368381500244e-01 4.1314241290092468e-01 + 6.2806951999664307e-01 + <_> + + 0 1 1144 -3.3396480139344931e-03 -1 -2 1145 + -2.0933480560779572e-01 + + 3.4463581442832947e-01 1.0386580228805542e-01 + 5.2044892311096191e-01 + <_> + + 1 0 1146 6.3805822283029556e-03 -1 -2 1147 + -6.0137799009680748e-03 + + 2.1674020588397980e-01 6.7383992671966553e-01 + 4.8966509103775024e-01 + <_> + + 1 0 1148 -8.1756077706813812e-03 -1 -2 1149 + 6.3951779156923294e-04 + + 5.1779150962829590e-01 4.8196458816528320e-01 + 5.4644381999969482e-01 + <_> + + 1 0 1150 1.0127760469913483e-03 -1 -2 1151 + 4.9784599104896188e-04 + + 3.4235960245132446e-01 4.4884610176086426e-01 + 5.9126710891723633e-01 + <_> + + 1 0 1152 1.3596490316558629e-04 -1 -2 1153 + 1.3571660034358501e-02 + + 5.5688631534576416e-01 5.1610678434371948e-01 + 1.7130009829998016e-01 + <_> + + 1 0 1154 3.0259079721872695e-05 -1 -2 1155 + -3.2625840976834297e-03 + + 4.9162039160728455e-01 6.4046627283096313e-01 + 2.8590849041938782e-01 + <_> + + 1 0 1156 -1.9217010412830859e-04 -1 -2 1157 + 2.1993879228830338e-02 + + 5.4592829942703247e-01 4.7157138586044312e-01 + 5.6900751590728760e-01 + <_> + + 1 0 1158 7.8907777788117528e-04 -1 -2 1159 + 5.0893891602754593e-04 + + 3.2798269391059875e-01 4.3020078539848328e-01 + 5.6960451602935791e-01 + <_> + + 1 0 1160 1.1662710312521085e-04 -1 -2 1161 + 8.0604078248143196e-03 + + 5.3872352838516235e-01 5.0214231014251709e-01 + 5.9653222560882568e-01 + <_> + + 1 0 1162 9.5925969071686268e-04 -1 -2 1163 + -1.9526129588484764e-02 + + 3.4734940528869629e-01 6.4755451679229736e-01 + 4.6437820792198181e-01 + <_> + 78 + 3.8236038208007812e+01 + + <_> + + 0 1 1164 4.1242439299821854e-02 -1 -2 1165 + 1.5626709908246994e-02 + + 3.3933150768280029e-01 5.1041001081466675e-01 + 7.7728152275085449e-01 + <_> + + 0 1 1166 2.9947189614176750e-04 -1 -2 1167 + -1.0037609608843923e-03 + + 3.6646738648414612e-01 5.4056507349014282e-01 + 3.9262050390243530e-01 + <_> + + 0 1 1168 6.8128242855891585e-04 -1 -2 1169 + 1.3098999625071883e-04 + + 4.2515191435813904e-01 4.1351449489593506e-01 + 6.9257462024688721e-01 + <_> + + 1 0 1170 3.1696720980107784e-03 -1 -2 1171 + -2.0587369799613953e-03 + + 3.4558731317520142e-01 2.2341939806938171e-01 + 5.2861189842224121e-01 + <_> + + 1 0 1172 -4.6395038953050971e-04 -1 -2 1173 + 3.5089480224996805e-03 + + 4.2065200209617615e-01 6.5029817819595337e-01 + 4.1175979375839233e-01 + <_> + + 1 0 1174 -2.3975980002433062e-03 -1 -2 1175 + 1.0901279747486115e-03 + + 3.6733010411262512e-01 2.9062381386756897e-01 + 5.4451119899749756e-01 + <_> + + 0 1 1176 -1.6524370585102588e-04 -1 -2 1177 + -4.1602319106459618e-04 + + 4.2335158586502075e-01 3.8863611221313477e-01 + 6.2691658735275269e-01 + <_> + + 0 1 1178 -2.3739910102449358e-04 -1 -2 1179 + 2.4739760905504227e-02 + + 5.5244511365890503e-01 4.9600958824157715e-01 + 5.3734910488128662e-01 + <_> + + 0 1 1180 -1.5342839993536472e-02 -1 -2 1181 + 1.1540469713509083e-02 + + 6.8494051694869995e-01 4.0372350811958313e-01 + 6.7869400978088379e-01 + <_> + + 1 0 1182 6.4230621792376041e-03 -1 -2 1183 + 1.2977809645235538e-02 + + 3.8146761059761047e-01 5.5270588397979736e-01 + 3.7449559569358826e-01 + <_> + + 0 1 1184 1.1063399724662304e-03 -1 -2 1185 + 1.3743690215051174e-03 + + 3.5209289193153381e-01 5.6419032812118530e-01 + 3.0750259757041931e-01 + <_> + + 0 1 1186 1.6233779489994049e-02 -1 -2 1187 + -8.1519351806491613e-04 + + 4.8888280987739563e-01 5.4563212394714355e-01 + 4.7435501217842102e-01 + <_> + + 0 1 1188 -9.0782493352890015e-02 -1 -2 1189 + 1.1665210127830505e-02 + + 2.9252481460571289e-01 4.6884548664093018e-01 + 6.2303477525711060e-01 + <_> + + 0 1 1190 -2.3286409676074982e-02 -1 -2 1191 + 2.1559339947998524e-03 + + 6.8958431482315063e-01 5.3558021783828735e-01 + 3.4234660863876343e-01 + <_> + + 0 1 1192 -4.3167220428586006e-03 -1 -2 1193 + 1.5610599657520652e-03 + + 5.9370762109756470e-01 4.7086599469184875e-01 + 2.7369970083236694e-01 + <_> + + 0 1 1194 1.4076639898121357e-02 -1 -2 1195 + 7.1018589660525322e-03 + + 5.2871561050415039e-01 5.3361928462982178e-01 + 3.2248139381408691e-01 + <_> + + 0 1 1196 -4.8221647739410400e-03 -1 -2 1197 + -5.3852899000048637e-03 + + 2.9839101433753967e-01 5.6239992380142212e-01 + 4.2959120869636536e-01 + <_> + + 1 0 1198 7.3483278974890709e-03 -1 -2 1199 + -3.5707519855350256e-03 + + 6.8139612674713135e-01 5.8579689264297485e-01 + 4.6034291386604309e-01 + <_> + + 1 0 1200 2.3340100888162851e-03 -1 -2 1201 + 4.7432780265808105e-03 + + 2.7448511123657227e-01 5.0475269556045532e-01 + 2.3627419769763947e-01 + <_> + + 0 1 1202 6.5055489540100098e-03 -1 -2 1203 + 1.2589249759912491e-02 + + 5.2422481775283813e-01 4.8236909508705139e-01 + 6.7525368928909302e-01 + <_> + + 0 1 1204 -6.3358368352055550e-03 -1 -2 1205 + -5.7639651931822300e-03 + + 1.7346349358558655e-01 6.3543808460235596e-01 + 4.5874750614166260e-01 + <_> + + 0 1 1206 1.3599749654531479e-03 -1 -2 1207 + 2.8404260054230690e-02 + + 4.5803809165954590e-01 5.1763808727264404e-01 + 1.2043850123882294e-01 + <_> + + 0 1 1208 -9.2958156019449234e-03 -1 -2 1209 + -1.1800320353358984e-03 + + 2.3379570245742798e-01 3.9028140902519226e-01 + 5.6529301404953003e-01 + <_> + + 0 1 1210 -2.0948140881955624e-03 -1 -2 1211 + 4.1679958812892437e-03 + + 5.5120289325714111e-01 5.4559761285781860e-01 + 4.7989490628242493e-01 + <_> + + 1 0 1212 5.4458891972899437e-03 -1 -2 1213 + -1.2766510481014848e-03 + + 6.1270868778228760e-01 5.3171318769454956e-01 + 3.8509321212768555e-01 + <_> + + 0 1 1214 5.9404270723462105e-04 -1 -2 1215 + 4.2309608310461044e-02 + + 5.4464370012283325e-01 5.2346438169479370e-01 + 2.2130440175533295e-01 + <_> + + 0 1 1216 5.6189671158790588e-03 -1 -2 1217 + 7.2401198558509350e-03 + + 4.9161979556083679e-01 1.4714759588241577e-01 + 4.8528939485549927e-01 + <_> + + 0 1 1218 -4.5610670931637287e-03 -1 -2 1219 + 4.5506159949582070e-05 + + 2.7737739682197571e-01 4.6264618635177612e-01 + 5.7680791616439819e-01 + <_> + + 0 1 1220 -6.1903791502118111e-03 -1 -2 1221 + 8.1186462193727493e-04 + + 1.6442899405956268e-01 4.7785910964012146e-01 + 6.2618649005889893e-01 + <_> + + 0 1 1222 1.3779809698462486e-02 -1 -2 1223 + 1.1290319962427020e-03 + + 5.2573078870773315e-01 5.4980480670928955e-01 + 3.9831069111824036e-01 + <_> + + 0 1 1224 -1.0610350000206381e-04 -1 -2 1225 + 1.6695790691301227e-04 + + 4.0335190296173096e-01 4.1493400931358337e-01 + 5.7953411340713501e-01 + <_> + + 1 0 1226 1.1290319962427020e-03 -1 -2 1227 + -1.2019349634647369e-01 + + 3.9341148734092712e-01 7.3400482535362244e-02 + 5.2025860548019409e-01 + <_> + + 0 1 1228 -1.5230740420520306e-02 -1 -2 1229 + 3.5759829916059971e-03 + + 3.7495058774948120e-01 5.0781500339508057e-01 + 6.6060662269592285e-01 + <_> + + 0 1 1230 1.3479460030794144e-02 -1 -2 1231 + -2.1162950433790684e-03 + + 4.5477110147476196e-01 3.3110061287879944e-01 + 5.3842592239379883e-01 + <_> + + 0 1 1232 -1.7877709120512009e-02 -1 -2 1233 + 1.0931970318779349e-03 + + 6.5132528543472290e-01 5.2647650241851807e-01 + 3.4569910168647766e-01 + <_> + + 0 1 1234 -3.0553159303963184e-03 -1 -2 1235 + 3.6365049891173840e-03 + + 6.2686139345169067e-01 5.3992128372192383e-01 + 4.3453970551490784e-01 + <_> + + 0 1 1236 9.7896481747739017e-05 -1 -2 1237 + -3.2714448752813041e-04 + + 3.8356059789657593e-01 3.3376678824424744e-01 + 5.5391657352447510e-01 + <_> + + 1 0 1238 4.3425030889920890e-04 -1 -2 1239 + 1.4005579985678196e-02 + + 5.7882702350616455e-01 5.2750778198242188e-01 + 2.7011251449584961e-01 + <_> + + 0 1 1240 -9.2654931358993053e-04 -1 -2 1241 + 3.9504268206655979e-03 + + 5.8522802591323853e-01 4.7283369302749634e-01 + 3.3139181137084961e-01 + <_> + + 1 0 1242 -5.8086868375539780e-04 -1 -2 1243 + -1.2018020264804363e-02 + + 4.2588108777999878e-01 5.6097871065139771e-01 + 4.8951920866966248e-01 + <_> + + 0 1 1244 -1.4521540701389313e-01 -1 -2 1245 + -6.6049019806087017e-03 + + 4.3894480913877487e-02 4.2291709780693054e-01 + 5.6162929534912109e-01 + <_> + + 1 0 1246 -3.4909751266241074e-02 -1 -2 1247 + 3.7478420417755842e-03 + + 4.7881281375885010e-01 4.8002821207046509e-01 + 5.8013892173767090e-01 + <_> + + 1 0 1248 3.3038031309843063e-02 -1 -2 1249 + 3.6872599739581347e-03 + + 7.0781761407852173e-01 4.4496241211891174e-01 + 5.9577310085296631e-01 + <_> + + 0 1 1250 -4.5311939902603626e-03 -1 -2 1251 + 4.1058510541915894e-03 + + 4.1770470142364502e-01 5.3729480504989624e-01 + 3.7369269132614136e-01 + <_> + + 0 1 1252 -8.7599847465753555e-03 -1 -2 1253 + -2.3003309965133667e-02 + + 6.6588079929351807e-01 2.6479220390319824e-01 + 5.1018178462982178e-01 + <_> + + 0 1 1254 5.3664818406105042e-03 -1 -2 1255 + 3.8971770554780960e-02 + + 4.5486348867416382e-01 5.1570618152618408e-01 + 3.4364390373229980e-01 + <_> + + 0 1 1256 -2.7767190709710121e-02 -1 -2 1257 + -9.8894089460372925e-03 + + 2.3543910682201385e-01 6.8877410888671875e-01 + 5.1110517978668213e-01 + <_> + + 0 1 1258 -3.2073140610009432e-03 -1 -2 1259 + -6.7484978353604674e-04 + + 5.4388678073883057e-01 5.4511487483978271e-01 + 4.8313531279563904e-01 + <_> + + 0 1 1260 -5.1947520114481449e-03 -1 -2 1261 + -2.6169899501837790e-04 + + 2.1134190261363983e-01 5.2736818790435791e-01 + 3.9925870299339294e-01 + <_> + + 0 1 1262 2.2421479225158691e-03 -1 -2 1263 + -1.2139769969508052e-03 + + 4.6882608532905579e-01 5.5042350292205811e-01 + 4.3848711252212524e-01 + <_> + + 0 1 1264 -2.9469770379364491e-03 -1 -2 1265 + -3.9291830034926534e-04 + + 3.8928470015525818e-01 6.0017228126525879e-01 + 4.5616629719734192e-01 + <_> + + 1 0 1266 6.2550729513168335e-01 -1 -2 1267 + 9.7744520753622055e-03 + + 6.8125613033771515e-02 4.8130258917808533e-01 + 5.6206572055816650e-01 + <_> + + 1 0 1268 9.4378247857093811e-02 -1 -2 1269 + -1.9560910295695066e-03 + + 6.6632293164730072e-02 3.5882329940795898e-01 + 5.2954071760177612e-01 + <_> + + 0 1 1270 9.0652769431471825e-03 -1 -2 1271 + 4.2138071148656309e-04 + + 4.8226881027221680e-01 4.6703329682350159e-01 + 5.6831127405166626e-01 + <_> + + 1 0 1272 -4.4220191193744540e-04 -1 -2 1273 + -4.7313501127064228e-03 + + 5.3607952594757080e-01 6.1372458934783936e-01 + 3.1880891323089600e-01 + <_> + + 0 1 1274 1.5395509544759989e-03 -1 -2 1275 + 2.4315000046044588e-03 + + 4.4877201318740845e-01 4.8941668868064880e-01 + 6.7166537046432495e-01 + <_> + + 0 1 1276 -1.5581619925796986e-02 -1 -2 1277 + 1.0816920548677444e-03 + + 3.3367419242858887e-01 4.7182199358940125e-01 + 5.9606271982192993e-01 + <_> + + 0 1 1278 -2.2197659127414227e-03 -1 -2 1279 + -9.3048671260476112e-04 + + 3.5885548591613770e-01 6.2187129259109497e-01 + 4.8173001408576965e-01 + <_> + + 0 1 1280 -4.7418707981705666e-03 -1 -2 1281 + -6.2950369901955128e-03 + + 2.5500270724296570e-01 6.7280787229537964e-01 + 5.0510638952255249e-01 + <_> + + 0 1 1282 3.5216049291193485e-03 -1 -2 1283 + -2.4289379362016916e-03 + + 5.4019099473953247e-01 5.4194617271423340e-01 + 4.3471428751945496e-01 + <_> + + 0 1 1284 -2.5261470582336187e-03 -1 -2 1285 + -1.4817339833825827e-03 + + 6.9706249237060547e-01 3.2634168863296509e-01 + 4.9178731441497803e-01 + <_> + + 0 1 1286 -2.2474530339241028e-01 -1 -2 1287 + 2.8342509176582098e-03 + + 7.2937291115522385e-03 4.5792299509048462e-01 + 5.3798812627792358e-01 + <_> + + 0 1 1288 -2.0821610465645790e-02 -1 -2 1289 + 1.4896340144332498e-04 + + 6.0240888595581055e-01 3.3361440896987915e-01 + 4.9628159403800964e-01 + <_> + + 0 1 1290 -3.3524499740451574e-03 -1 -2 1291 + -3.7279881536960602e-02 + + 3.5587510466575623e-01 1.6985629498958588e-01 + 5.2089858055114746e-01 + <_> + + 1 0 1292 1.3896770542487502e-04 -1 -2 1293 + -3.1912620761431754e-04 + + 5.5906862020492554e-01 5.8487337827682495e-01 + 3.7958368659019470e-01 + <_> + + 1 0 1294 5.4003461264073849e-04 -1 -2 1295 + 3.8956850767135620e-03 + + 5.6702882051467896e-01 5.1826947927474976e-01 + 3.3277091383934021e-01 + <_> + + 1 0 1296 1.6084529925137758e-03 -1 -2 1297 + -5.7474587811157107e-04 + + 5.4104858636856079e-01 6.0226422548294067e-01 + 3.6446440219879150e-01 + <_> + + 1 0 1298 1.3435039669275284e-02 -1 -2 1299 + 2.1368139423429966e-03 + + 3.4412819147109985e-01 5.2924340963363647e-01 + 2.7470758557319641e-01 + <_> + + 1 0 1300 1.4157629571855068e-02 -1 -2 1301 + 5.3884391672909260e-03 + + 8.0278682708740234e-01 5.2223151922225952e-01 + 3.5867279767990112e-01 + <_> + + 0 1 1302 8.8013410568237305e-03 -1 -2 1303 + 3.8858849438838661e-04 + + 4.9003869295120239e-01 4.6810561418533325e-01 + 5.7219529151916504e-01 + <_> + + 0 1 1304 -2.2143588867038488e-03 -1 -2 1305 + -8.4642972797155380e-03 + + 5.3888058662414551e-01 6.6755378246307373e-01 + 3.4484419226646423e-01 + <_> + + 1 0 1306 1.5044390223920345e-02 -1 -2 1307 + 7.6346402056515217e-03 + + 9.2396140098571777e-01 4.8848968744277954e-01 + 6.3060528039932251e-01 + <_> + + 1 0 1308 3.3895121305249631e-04 -1 -2 1309 + 2.1157610171940178e-04 + + 3.9974310994148254e-01 5.6639820337295532e-01 + 3.9729809761047363e-01 + <_> + + 1 0 1310 -2.7514949440956116e-02 -1 -2 1311 + 5.1603060215711594e-02 + + 5.2010637521743774e-01 5.1407301425933838e-01 + 1.2451309710741043e-01 + <_> + + 1 0 1312 3.7510651163756847e-03 -1 -2 1313 + -2.1457639522850513e-03 + + 3.8020950555801392e-01 3.3094480633735657e-01 + 5.4745388031005859e-01 + <_> + + 1 0 1314 -5.8178009930998087e-04 -1 -2 1315 + -9.3638541875407100e-04 + + 4.8926019668579102e-01 5.9373992681503296e-01 + 4.6646690368652344e-01 + <_> + + 1 0 1316 4.1667491197586060e-02 -1 -2 1317 + -6.7763780243694782e-03 + + 7.0213532447814941e-01 3.2227510213851929e-01 + 5.0683951377868652e-01 + <_> + + 1 0 1318 -2.9170580673962831e-03 -1 -2 1319 + 3.2789530814625323e-04 + + 4.7177010774612427e-01 4.5093831419944763e-01 + 5.6511628627777100e-01 + <_> + 91 + 4.4682968139648438e+01 + + <_> + + 0 1 1320 1.1729800142347813e-02 -1 -2 1321 + 1.1712179984897375e-03 + + 3.8052248954772949e-01 3.1400179862976074e-01 + 6.8581461906433105e-01 + <_> + + 1 0 1322 9.3555096536874771e-03 -1 -2 1323 + 1.6570610459893942e-03 + + 6.8346732854843140e-01 2.9924729466438293e-01 + 5.4756778478622437e-01 + <_> + + 1 0 1324 -1.3387809740379453e-03 -1 -2 1325 + 1.7580550047568977e-04 + + 2.9414069652557373e-01 3.8969779014587402e-01 + 5.8729708194732666e-01 + <_> + + 0 1 1326 -2.9473248869180679e-03 -1 -2 1327 + 8.3220899105072021e-03 + + 3.5765719413757324e-01 5.2324008941650391e-01 + 3.2310879230499268e-01 + <_> + + 1 0 1328 7.4366689659655094e-03 -1 -2 1329 + -2.1322889369912446e-04 + + 6.7156732082366943e-01 5.4705417156219482e-01 + 3.8633960485458374e-01 + <_> + + 0 1 1330 -7.8024631366133690e-03 -1 -2 1331 + 5.6611228501424193e-04 + + 2.7714601159095764e-01 4.6891361474990845e-01 + 5.8519637584686279e-01 + <_> + + 0 1 1332 -9.2346500605344772e-03 -1 -2 1333 + -1.4676499631605111e-05 + + 2.7043971419334412e-01 5.6225502490997314e-01 + 3.5793170332908630e-01 + <_> + + 0 1 1334 9.7007937729358673e-03 -1 -2 1335 + -3.5320650786161423e-03 + + 4.1738718748092651e-01 4.1950130462646484e-01 + 5.5494689941406250e-01 + <_> + + 1 0 1336 2.1616410464048386e-02 -1 -2 1337 + 3.4567608963698149e-03 + + 2.8573909401893616e-01 6.0245329141616821e-01 + 4.3775078654289246e-01 + <_> + + 0 1 1338 2.2914320230484009e-02 -1 -2 1339 + 3.4328910987824202e-03 + + 4.6893501281738281e-01 4.6646049618721008e-01 + 5.7625621557235718e-01 + <_> + + 0 1 1340 -8.6510833352804184e-03 -1 -2 1341 + 1.4510039472952485e-03 + + 6.3817399740219116e-01 3.7114879488945007e-01 + 5.5307507514953613e-01 + <_> + + 0 1 1342 7.8191719949245453e-03 -1 -2 1343 + 2.0798550394829363e-04 + + 5.2643620967864990e-01 3.7305128574371338e-01 + 5.4457312822341919e-01 + <_> + + 0 1 1344 -3.9962218143045902e-03 -1 -2 1345 + -1.5010139577498194e-05 + + 2.4381700158119202e-01 5.3246712684631348e-01 + 3.6829888820648193e-01 + <_> + + 0 1 1346 -4.2428788729012012e-03 -1 -2 1347 + 9.1374982148408890e-03 + + 6.4814740419387817e-01 4.8961588740348816e-01 + 6.5588432550430298e-01 + <_> + + 1 0 1348 8.8254585862159729e-03 -1 -2 1349 + 9.4092212384566665e-04 + + 3.6138701438903809e-01 5.5028957128524780e-01 + 3.6325180530548096e-01 + <_> + + 0 1 1350 -1.2503350153565407e-02 -1 -2 1351 + 8.6759645491838455e-03 + + 2.2611320018768311e-01 4.9878901243209839e-01 + 6.8471962213516235e-01 + <_> + + 0 1 1352 -1.0416760109364986e-02 -1 -2 1353 + 2.7432460337877274e-03 + + 2.4462990462779999e-01 3.5115250945091248e-01 + 5.3998267650604248e-01 + <_> + + 0 1 1354 -4.2385691776871681e-03 -1 -2 1355 + 1.8325870856642723e-02 + + 6.8236732482910156e-01 4.8915800452232361e-01 + 7.1356189250946045e-01 + <_> + + 0 1 1356 -2.4334540590643883e-02 -1 -2 1357 + 4.6469361404888332e-04 + + 3.5225218534469604e-01 4.0498688817024231e-01 + 5.5158257484436035e-01 + <_> + + 1 0 1358 3.4260009415447712e-03 -1 -2 1359 + -2.5827318895608187e-03 + + 4.1267699003219604e-01 2.8994289040565491e-01 + 5.3864318132400513e-01 + <_> + + 1 0 1360 1.0545699624344707e-03 -1 -2 1361 + -9.1257691383361816e-04 + + 3.7713441252708435e-01 5.8273869752883911e-01 + 4.2675569653511047e-01 + <_> + + 0 1 1362 2.6589010376483202e-03 -1 -2 1363 + 4.8598358407616615e-03 + + 4.6881249547004700e-01 4.8539221286773682e-01 + 6.1636447906494141e-01 + <_> + + 1 0 1364 8.0638676881790161e-03 -1 -2 1365 + -7.5898370705544949e-03 + + 1.7491950094699860e-01 6.8261897563934326e-01 + 4.8940700292587280e-01 + <_> + + 0 1 1366 3.6368070868775249e-04 -1 -2 1367 + 6.2594950199127197e-02 + + 4.6145960688591003e-01 5.1830172538757324e-01 + 2.6866960525512695e-01 + <_> + + 0 1 1368 -4.9753207713365555e-03 -1 -2 1369 + -2.0880119409412146e-03 + + 1.7584669589996338e-01 6.3693821430206299e-01 + 4.9300441145896912e-01 + <_> + + 1 0 1370 9.5644511748105288e-04 -1 -2 1371 + -3.1721461564302444e-02 + + 4.1393989324569702e-01 6.0455572605133057e-01 + 4.8163640499114990e-01 + <_> + + 0 1 1372 1.2898689601570368e-03 -1 -2 1373 + 9.8405163735151291e-03 + + 5.4508107900619507e-01 2.9240009188652039e-01 + 6.6996061801910400e-01 + <_> + + 1 0 1374 1.2237089686095715e-03 -1 -2 1375 + -8.4232585504651070e-03 + + 6.2828367948532104e-01 5.9865701198577881e-01 + 4.8525801301002502e-01 + <_> + + 0 1 1376 -7.2726322105154395e-04 -1 -2 1377 + 4.6842931769788265e-03 + + 3.3400490880012512e-01 5.1689237356185913e-01 + 2.6794800162315369e-01 + <_> + + 0 1 1378 -1.0379579616710544e-03 -1 -2 1379 + 9.1342730447649956e-03 + + 5.9257918596267700e-01 5.4377281665802002e-01 + 4.3468001484870911e-01 + <_> + + 0 1 1380 1.4971119817346334e-03 -1 -2 1381 + 1.5762320253998041e-03 + + 4.1295009851455688e-01 4.5228740572929382e-01 + 6.5562921762466431e-01 + <_> + + 0 1 1382 8.7496247142553329e-03 -1 -2 1383 + -8.5103599121794105e-04 + + 4.5320340991020203e-01 3.7859839200973511e-01 + 5.4169750213623047e-01 + <_> + + 0 1 1384 -1.7325570806860924e-02 -1 -2 1385 + -8.3266440778970718e-03 + + 6.8842482566833496e-01 3.0913260579109192e-01 + 5.2436548471450806e-01 + <_> + + 0 1 1386 1.5157909729168750e-05 -1 -2 1387 + 1.8041470320895314e-03 + + 4.7657939791679382e-01 4.7253859043121338e-01 + 5.7165551185607910e-01 + <_> + + 1 0 1388 3.0691560823470354e-03 -1 -2 1389 + -5.2225510444259271e-05 + + 2.1433599293231964e-01 5.6532102823257446e-01 + 4.3851110339164734e-01 + <_> + + 1 0 1390 1.0072169970953837e-04 -1 -2 1391 + 1.3573700562119484e-04 + + 5.9247761964797974e-01 4.5734488964080811e-01 + 5.7693827152252197e-01 + <_> + + 1 0 1392 9.2137878527864814e-04 -1 -2 1393 + 3.0316581251099706e-04 + + 5.9926092624664307e-01 3.6100810766220093e-01 + 5.0493258237838745e-01 + <_> + + 1 0 1394 3.9582479745149612e-02 -1 -2 1395 + 4.7519680112600327e-02 + + 1.5384890139102936e-01 5.2161407470703125e-01 + 1.4283910393714905e-01 + <_> + + 1 0 1396 1.8871759995818138e-02 -1 -2 1397 + -3.9876459049992263e-04 + + 2.8255069255828857e-01 4.0350168943405151e-01 + 5.4377931356430054e-01 + <_> + + 0 1 1398 4.6556600136682391e-04 -1 -2 1399 + 6.7090610973536968e-03 + + 4.6689969301223755e-01 5.3313547372817993e-01 + 4.1365718841552734e-01 + <_> + + 0 1 1400 -1.8931160448119044e-03 -1 -2 1401 + -1.3056949712336063e-02 + + 7.1551632881164551e-01 3.1178998947143555e-01 + 5.2084398269653320e-01 + <_> + + 1 0 1402 -1.9484119547996670e-04 -1 -2 1403 + 1.5093220099515747e-05 + + 4.6376588940620422e-01 4.5616531372070312e-01 + 5.4452341794967651e-01 + <_> + + 1 0 1404 -7.1617960202274844e-06 -1 -2 1405 + 3.0164679628796875e-04 + + 4.1931080818176270e-01 5.9662377834320068e-01 + 4.1005000472068787e-01 + <_> + + 0 1 1406 4.4195181690156460e-03 -1 -2 1407 + -7.3984181508421898e-03 + + 4.8450559377670288e-01 6.2068462371826172e-01 + 4.9312090873718262e-01 + <_> + + 1 0 1408 -7.8031201846897602e-03 -1 -2 1409 + -1.0731429792940617e-02 + + 5.2824628353118896e-01 9.1048341989517212e-01 + 3.4559220075607300e-01 + <_> + + 0 1 1410 1.4246780192479491e-03 -1 -2 1411 + -8.2717568147927523e-05 + + 4.7085541486740112e-01 5.6516230106353760e-01 + 4.7310239076614380e-01 + <_> + + 1 0 1412 4.4803409837186337e-03 -1 -2 1413 + 3.0789140146225691e-03 + + 6.1758869886398315e-01 5.1395332813262939e-01 + 3.4230878949165344e-01 + <_> + + 1 0 1414 -1.1310289846733212e-03 -1 -2 1415 + -1.0410690447315574e-03 + + 4.9182820320129395e-01 5.9420871734619141e-01 + 4.9230429530143738e-01 + <_> + + 1 0 1416 1.1648540385067463e-03 -1 -2 1417 + 9.0057362103834748e-04 + + 6.4052718877792358e-01 4.5043969154357910e-01 + 6.1920768022537231e-01 + <_> + + 0 1 1418 6.8781538866460323e-03 -1 -2 1419 + -3.5283900797367096e-02 + + 5.3748130798339844e-01 2.2471010684967041e-01 + 5.2171707153320312e-01 + <_> + + 0 1 1420 -1.3320200378075242e-03 -1 -2 1421 + -2.3177571129053831e-03 + + 2.5547030568122864e-01 3.7925159931182861e-01 + 5.2432268857955933e-01 + <_> + + 0 1 1422 2.1332940377760679e-04 -1 -2 1423 + 1.3467900454998016e-02 + + 3.8603371381759644e-01 5.3806877136230469e-01 + 4.1783639788627625e-01 + <_> + + 0 1 1424 -1.2829169863834977e-03 -1 -2 1425 + 5.1571638323366642e-04 + + 6.1336231231689453e-01 4.0285378694534302e-01 + 5.5368518829345703e-01 + <_> + + 0 1 1426 3.9254198782145977e-03 -1 -2 1427 + -3.3780589699745178e-02 + + 5.2799212932586670e-01 2.3346750438213348e-01 + 5.1759117841720581e-01 + <_> + + 0 1 1428 -3.7853721529245377e-02 -1 -2 1429 + -4.0752900531515479e-04 + + 1.0748530179262161e-01 5.3459298610687256e-01 + 4.1989380121231079e-01 + <_> + + 0 1 1430 -3.1193809118121862e-03 -1 -2 1431 + -1.5714969485998154e-02 + + 3.8558250665664673e-01 3.3351901173591614e-01 + 5.2632021903991699e-01 + <_> + + 0 1 1432 -7.8525702701881528e-04 -1 -2 1433 + -2.8750501223839819e-04 + + 5.8603972196578979e-01 5.4377847909927368e-01 + 3.7161049246788025e-01 + <_> + + 1 0 1434 2.8016859665513039e-02 -1 -2 1435 + -1.9018839811906219e-03 + + 3.3307549357414246e-01 5.3665977716445923e-01 + 4.6937939524650574e-01 + <_> + + 1 0 1436 2.0647559314966202e-02 -1 -2 1437 + 4.3002571910619736e-03 + + 1.0069560259580612e-01 4.8160359263420105e-01 + 6.2156772613525391e-01 + <_> + + 0 1 1438 1.3459140434861183e-02 -1 -2 1439 + -1.0320040397346020e-02 + + 5.4619538784027100e-01 4.5784530043601990e-01 + 5.4193097352981567e-01 + <_> + + 1 0 1440 3.1990748643875122e-01 -1 -2 1441 + 9.2198798665776849e-04 + + 2.0080469548702240e-01 5.1932811737060547e-01 + 3.9121940732002258e-01 + <_> + + 0 1 1442 4.1852539288811386e-04 -1 -2 1443 + 3.5891108564101160e-04 + + 4.2997440695762634e-01 4.3445029854774475e-01 + 5.5319738388061523e-01 + <_> + + 0 1 1444 -2.0992439985275269e-01 -1 -2 1445 + -4.9328152090311050e-03 + + 1.0757210105657578e-01 5.7627969980239868e-01 + 4.5746439695358276e-01 + <_> + + 1 0 1446 2.3409130517393351e-03 -1 -2 1447 + 4.7120270319283009e-03 + + 7.4768078327178955e-01 5.2617651224136353e-01 + 4.5055508613586426e-01 + <_> + + 0 1 1448 2.8713190928101540e-02 -1 -2 1449 + -2.6156550738960505e-03 + + 4.4071030616760254e-01 4.2442709207534790e-01 + 6.8929767608642578e-01 + <_> + + 0 1 1450 -1.3558969832956791e-02 -1 -2 1451 + -3.0331799644045532e-04 + + 1.2522679567337036e-01 4.0777918696403503e-01 + 5.4428178071975708e-01 + <_> + + 0 1 1452 -5.5601762142032385e-04 -1 -2 1453 + 2.4025330785661936e-03 + + 5.3780037164688110e-01 3.1665799021720886e-01 + 5.2857381105422974e-01 + <_> + + 1 0 1454 -3.4089901018887758e-03 -1 -2 1455 + 8.0019602319225669e-04 + + 4.9052149057388306e-01 4.5227360725402832e-01 + 5.5806142091751099e-01 + <_> + + 1 0 1456 2.1901070140302181e-03 -1 -2 1457 + 3.3745369873940945e-03 + + 6.6126817464828491e-01 5.1077651977539062e-01 + 3.3869299292564392e-01 + <_> + + 1 0 1458 8.0019602319225669e-04 -1 -2 1459 + 1.7346069216728210e-02 + + 5.7075601816177368e-01 5.0160211324691772e-01 + 6.3064599037170410e-01 + <_> + + 0 1 1460 -1.9568449351936579e-03 -1 -2 1461 + -1.1229019612073898e-02 + + 3.0178061127662659e-01 6.2938511371612549e-01 + 4.5204889774322510e-01 + <_> + + 0 1 1462 -2.6608388870954514e-03 -1 -2 1463 + -1.1615100316703320e-02 + + 3.3440071344375610e-01 2.8253790736198425e-01 + 5.1509708166122437e-01 + <_> + + 0 1 1464 -9.5248602330684662e-02 -1 -2 1465 + 7.3701781220734119e-03 + + 1.3982650637626648e-01 5.2939987182617188e-01 + 2.3317280411720276e-01 + <_> + + 1 0 1466 -1.4953900128602982e-02 -1 -2 1467 + 5.7038792874664068e-04 + + 4.9404659867286682e-01 5.4665708541870117e-01 + 4.6267679333686829e-01 + <_> + + 1 0 1468 5.8516198769211769e-03 -1 -2 1469 + 2.1150549582671374e-04 + + 6.2700408697128296e-01 5.5081409215927124e-01 + 4.0618729591369629e-01 + <_> + + 1 0 1470 -6.9679190346505493e-06 -1 -2 1471 + -7.9677387839183211e-04 + + 4.0965679287910461e-01 5.6155568361282349e-01 + 4.6668860316276550e-01 + <_> + + 1 0 1472 1.9459480419754982e-02 -1 -2 1473 + -1.1160830035805702e-02 + + 2.3114809393882751e-01 3.0870118737220764e-01 + 5.5146622657775879e-01 + <_> + + 1 0 1474 1.4056149870157242e-02 -1 -2 1475 + -3.2958350493572652e-04 + + 7.0050561428070068e-01 5.7974857091903687e-01 + 4.6916508674621582e-01 + <_> + + 0 1 1476 -5.4636420682072639e-03 -1 -2 1477 + 5.8881669247057289e-05 + + 5.9285950660705566e-01 3.7413978576660156e-01 + 5.1701688766479492e-01 + <_> + + 0 1 1478 6.6343429498374462e-03 -1 -2 1479 + 4.5263409614562988e-02 + + 5.4149878025054932e-01 5.1803272962570190e-01 + 1.5296840667724609e-01 + <_> + + 0 1 1480 -8.0646127462387085e-03 -1 -2 1481 + 4.7389548853971064e-04 + + 2.5154680013656616e-01 5.1219987869262695e-01 + 3.7259489297866821e-01 + <_> + + 1 0 1482 1.4877359717502259e-05 -1 -2 1483 + 2.4321159347891808e-02 + + 5.5324357748031616e-01 4.9607661366462708e-01 + 5.9833151102066040e-01 + <_> + + 0 1 1484 6.9931396865285933e-05 -1 -2 1485 + 2.6287760119885206e-03 + + 4.1639530658721924e-01 5.8801448345184326e-01 + 3.3996629714965820e-01 + <_> + + 1 0 1486 3.8190539926290512e-03 -1 -2 1487 + -2.5989150628447533e-02 + + 7.8466212749481201e-01 3.2881140708923340e-01 + 5.1550877094268799e-01 + <_> + + 0 1 1488 1.2062400346621871e-03 -1 -2 1489 + -1.5557400183752179e-03 + + 4.5960599184036255e-01 3.1269869208335876e-01 + 7.1833992004394531e-01 + <_> + + 1 0 1490 -2.2691930644214153e-03 -1 -2 1491 + 2.3287249496206641e-04 + + 5.2740061283111572e-01 4.8786661028862000e-01 + 5.6151527166366577e-01 + <_> + + 1 0 1492 -5.5999699980020523e-03 -1 -2 1493 + -1.0496189817786217e-02 + + 5.1608121395111084e-01 5.7016140222549438e-01 + 3.2048508524894714e-01 + <_> + + 0 1 1494 -1.4814930182183161e-05 -1 -2 1495 + -6.4287078566849232e-04 + + 5.5388379096984863e-01 5.3494292497634888e-01 + 4.4721511006355286e-01 + <_> + + 0 1 1496 -1.8891949730459601e-04 -1 -2 1497 + -9.0413521975278854e-03 + + 5.0128370523452759e-01 2.5629359483718872e-01 + 4.5033830404281616e-01 + <_> + + 1 0 1498 7.9534705728292465e-03 -1 -2 1499 + -2.7908999472856522e-03 + + 2.6304998993873596e-01 5.7565087080001831e-01 + 4.8548638820648193e-01 + <_> + + 1 0 1500 3.2857100013643503e-03 -1 -2 1501 + 7.7063008211553097e-04 + + 4.0847519040107727e-01 4.0733560919761658e-01 + 5.9202408790588379e-01 + <_> + 97 + 4.7763450622558594e+01 + + <_> + + 0 1 1502 6.3021942973136902e-02 -1 -2 1503 + -2.8374609537422657e-03 + + 3.4193828701972961e-01 6.8295639753341675e-01 + 4.4045230746269226e-01 + <_> + + 0 1 1504 4.6461950987577438e-02 -1 -2 1505 + 2.9152540490031242e-02 + + 4.3917450308799744e-01 4.6010631322860718e-01 + 6.3579368591308594e-01 + <_> + + 1 0 1506 -1.4000290320836939e-05 -1 -2 1507 + -1.2757079675793648e-03 + + 3.7300100922584534e-01 3.0938240885734558e-01 + 5.9013700485229492e-01 + <_> + + 0 1 1508 1.3596529606729746e-03 -1 -2 1509 + 1.7991929780691862e-04 + + 4.3375650048255920e-01 4.2175039649009705e-01 + 5.8468478918075562e-01 + <_> + + 1 0 1510 -1.4166639630275313e-05 -1 -2 1511 + 6.0252390539972112e-05 + + 4.0846911072731018e-01 5.0872868299484253e-01 + 7.2771841287612915e-01 + <_> + + 1 0 1512 6.4320368692278862e-03 -1 -2 1513 + 4.6682319953106344e-04 + + 2.9679030179977417e-01 4.1104629635810852e-01 + 5.5812197923660278e-01 + <_> + + 0 1 1514 5.7436279021203518e-03 -1 -2 1515 + 3.2019240316003561e-03 + + 4.2873099446296692e-01 4.2661958932876587e-01 + 6.4440459012985229e-01 + <_> + + 1 0 1516 -5.7637941790744662e-04 -1 -2 1517 + -3.7901920732110739e-03 + + 4.0848249197006226e-01 3.1819209456443787e-01 + 5.2306932210922241e-01 + <_> + + 1 0 1518 4.8914109356701374e-03 -1 -2 1519 + 4.6459292061626911e-03 + + 3.5483568906784058e-01 5.6105977296829224e-01 + 2.6938489079475403e-01 + <_> + + 0 1 1520 -6.8799369037151337e-03 -1 -2 1521 + -1.8147470429539680e-02 + + 6.2354081869125366e-01 2.8619819879531860e-01 + 5.2268481254577637e-01 + <_> + + 1 0 1522 1.1409220314817503e-04 -1 -2 1523 + -5.4334272863343358e-04 + + 3.2578331232070923e-01 3.8829690217971802e-01 + 5.3411662578582764e-01 + <_> + + 0 1 1524 -2.7602489572018385e-03 -1 -2 1525 + -1.9730569329112768e-03 + + 6.3539659976959229e-01 5.8807611465454102e-01 + 4.5930901169776917e-01 + <_> + + 1 0 1526 2.4565239436924458e-03 -1 -2 1527 + 1.9392010290175676e-04 + + 3.1340101361274719e-01 5.2771317958831787e-01 + 3.6041069030761719e-01 + <_> + + 0 1 1528 7.8643016517162323e-02 -1 -2 1529 + 6.5276869572699070e-03 + + 5.2903419733047485e-01 4.6544799208641052e-01 + 6.0449051856994629e-01 + <_> + + 0 1 1530 -7.8716799616813660e-02 -1 -2 1531 + 5.7298499159514904e-03 + + 2.5411269068717957e-01 4.3669191002845764e-01 + 5.8228862285614014e-01 + <_> + + 1 0 1532 6.2386557692661881e-04 -1 -2 1533 + -8.5267230868339539e-02 + + 5.4726922512054443e-01 1.4616079628467560e-01 + 5.1818108558654785e-01 + <_> + + 1 0 1534 4.0981110185384750e-02 -1 -2 1535 + 7.7135749161243439e-03 + + 1.2701350450515747e-01 4.8326849937438965e-01 + 2.2235789895057678e-01 + <_> + + 0 1 1536 -6.8663940764963627e-03 -1 -2 1537 + 1.4559639617800713e-02 + + 5.9189289808273315e-01 4.7615069150924683e-01 + 5.7272237539291382e-01 + <_> + + 0 1 1538 -1.0064310394227505e-02 -1 -2 1539 + 3.6274080630391836e-03 + + 3.6367309093475342e-01 5.2717310190200806e-01 + 2.7405250072479248e-01 + <_> + + 0 1 1540 -2.3421540390700102e-03 -1 -2 1541 + -2.4686409160494804e-02 + + 5.4977840185165405e-01 6.0598951578140259e-01 + 4.9603140354156494e-01 + <_> + + 1 0 1542 1.9456120207905769e-04 -1 -2 1543 + 3.1714211218059063e-04 + + 3.7694650888442993e-01 4.0623620152473450e-01 + 5.6682151556015015e-01 + <_> + + 0 1 1544 2.0793990697711706e-03 -1 -2 1545 + 1.7982709687203169e-03 + + 4.6186569333076477e-01 4.8675051331520081e-01 + 6.5184497833251953e-01 + <_> + + 0 1 1546 -2.2287059982772917e-04 -1 -2 1547 + 3.2623921288177371e-04 + + 5.6775957345962524e-01 3.7107339501380920e-01 + 5.6766051054000854e-01 + <_> + + 0 1 1548 -6.6792681813240051e-02 -1 -2 1549 + -1.4869889710098505e-03 + + 2.5115218758583069e-01 3.8867509365081787e-01 + 5.2622538805007935e-01 + <_> + + 0 1 1550 -5.0454870797693729e-03 -1 -2 1551 + -4.8297587782144547e-03 + + 6.5574729442596436e-01 5.9341061115264893e-01 + 4.2859220504760742e-01 + <_> + + 1 0 1552 -1.0722599690780044e-03 -1 -2 1553 + 8.7901195511221886e-03 + + 5.4260587692260742e-01 5.3513032197952271e-01 + 4.8342779278755188e-01 + <_> + + 0 1 1554 -7.1750381030142307e-03 -1 -2 1555 + 1.1251230025663972e-03 + + 2.0671689510345459e-01 5.1122522354125977e-01 + 3.4687140583992004e-01 + <_> + + 0 1 1556 1.0634710080921650e-02 -1 -2 1557 + -1.1763219721615314e-02 + + 4.4790080189704895e-01 6.2539017200469971e-01 + 4.9689871072769165e-01 + <_> + + 1 0 1558 9.2324063181877136e-02 -1 -2 1559 + 1.8991080578416586e-03 + + 2.0313039422035217e-01 5.6187218427658081e-01 + 4.0465721487998962e-01 + <_> + + 1 0 1560 -1.0510340332984924e-02 -1 -2 1561 + -7.4531312566250563e-04 + + 4.9432641267776489e-01 5.6134277582168579e-01 + 3.8453319668769836e-01 + <_> + + 1 0 1562 8.0041000619530678e-03 -1 -2 1563 + 5.8110528625547886e-03 + + 7.7598422765731812e-01 4.6247330307960510e-01 + 6.2862771749496460e-01 + <_> + + 0 1 1564 -2.7918580919504166e-02 -1 -2 1565 + 2.1739399526268244e-03 + + 2.4093140661716461e-01 5.3455048799514771e-01 + 3.5079580545425415e-01 + <_> + + 0 1 1566 -4.0639587678015232e-03 -1 -2 1567 + 6.0017139185220003e-04 + + 6.6471010446548462e-01 4.9985098838806152e-01 + 3.0221650004386902e-01 + <_> + + 1 0 1568 1.9214770291000605e-03 -1 -2 1569 + -1.3860830105841160e-02 + + 5.9191507101058960e-01 6.3517677783966064e-01 + 4.9933108687400818e-01 + <_> + + 1 0 1570 2.3006850853562355e-02 -1 -2 1571 + -1.3857929734513164e-03 + + 1.9023360311985016e-01 5.2533692121505737e-01 + 3.9858600497245789e-01 + <_> + + 0 1 1572 1.2637410545721650e-03 -1 -2 1573 + -1.4675210230052471e-02 + + 4.6661040186882019e-01 3.8231649994850159e-01 + 5.3266328573226929e-01 + <_> + + 0 1 1574 -2.9535070061683655e-03 -1 -2 1575 + -1.7189770005643368e-03 + + 7.0636558532714844e-01 3.8134628534317017e-01 + 5.2467352151870728e-01 + <_> + + 1 0 1576 -4.2484089499339461e-04 -1 -2 1577 + -8.5248658433556557e-04 + + 4.7916388511657715e-01 4.4912180304527283e-01 + 5.3709012269973755e-01 + <_> + + 1 0 1578 8.9034568518400192e-03 -1 -2 1579 + 1.4895649655954912e-05 + + 2.0764739811420441e-01 4.4476351141929626e-01 + 5.6671631336212158e-01 + <_> + + 0 1 1580 -4.7091601300053298e-04 -1 -2 1581 + 4.3084810022264719e-04 + + 5.4650712013244629e-01 5.4932618141174316e-01 + 4.5807081460952759e-01 + <_> + + 0 1 1582 -6.3893961487337947e-04 -1 -2 1583 + -7.3733746830839664e-05 + + 5.5015718936920166e-01 5.0857907533645630e-01 + 3.3056980371475220e-01 + <_> + + 0 1 1584 -8.8991485536098480e-03 -1 -2 1585 + -1.0253350250422955e-02 + + 4.2764690518379211e-01 1.1232180148363113e-01 + 5.1527231931686401e-01 + <_> + + 0 1 1586 -5.9637490659952164e-02 -1 -2 1587 + 2.1707199513912201e-02 + + 7.3867720365524292e-01 4.9962919950485229e-01 + 1.3394139707088470e-01 + <_> + + 0 1 1588 9.9107045680284500e-03 -1 -2 1589 + -1.0998300276696682e-02 + + 4.6790120005607605e-01 6.9286561012268066e-01 + 5.0120681524276733e-01 + <_> + + 1 0 1590 7.4608891736716032e-04 -1 -2 1591 + 2.9539171373471618e-04 + + 5.8335822820663452e-01 3.8263911008834839e-01 + 5.5663508176803589e-01 + <_> + + 1 0 1592 5.0054129213094711e-02 -1 -2 1593 + -7.2330660186707973e-03 + + 3.0027210712432861e-01 5.9080427885055542e-01 + 5.0008708238601685e-01 + <_> + + 0 1 1594 -2.6863380335271358e-03 -1 -2 1595 + -1.0195849463343620e-03 + + 3.9750349521636963e-01 3.6976858973503113e-01 + 5.7561928033828735e-01 + <_> + + 0 1 1596 -2.0204920321702957e-02 -1 -2 1597 + 2.1340379025787115e-03 + + 6.3752681016921997e-01 5.3632658720016479e-01 + 4.4331708550453186e-01 + <_> + + 0 1 1598 -1.8348889425396919e-03 -1 -2 1599 + -5.9489468112587929e-03 + + 5.8289992809295654e-01 2.6806709170341492e-01 + 4.6428859233856201e-01 + <_> + + 0 1 1600 -2.3030120064504445e-04 -1 -2 1601 + 5.0581009127199650e-03 + + 5.4753202199935913e-01 5.3208339214324951e-01 + 4.6464928984642029e-01 + <_> + + 0 1 1602 -5.1950011402368546e-04 -1 -2 1603 + -6.8620947422459722e-04 + + 5.2327448129653931e-01 4.9350860714912415e-01 + 3.1031179428100586e-01 + <_> + + 0 1 1604 -7.4936267919838428e-03 -1 -2 1605 + -1.5682930126786232e-02 + + 2.8830468654632568e-01 3.6403131484985352e-01 + 5.3687548637390137e-01 + <_> + + 0 1 1606 -3.2649750355631113e-03 -1 -2 1607 + 3.8463930832222104e-04 + + 6.4686310291290283e-01 5.2596598863601685e-01 + 3.8314279913902283e-01 + <_> + + 1 0 1608 4.4492390006780624e-03 -1 -2 1609 + 2.3118320852518082e-02 + + 2.0868189632892609e-01 4.9785330891609192e-01 + 5.9612572193145752e-01 + <_> + + 1 0 1610 2.0835159812122583e-03 -1 -2 1611 + 1.1513150529935956e-03 + + 5.7464218139648438e-01 3.5868450999259949e-01 + 5.3634738922119141e-01 + <_> + + 1 0 1612 3.6104708909988403e-02 -1 -2 1613 + 3.6256198654882610e-04 + + 2.8331369161605835e-01 5.4777222871780396e-01 + 4.1105321049690247e-01 + <_> + + 0 1 1614 -3.4635469783097506e-03 -1 -2 1615 + -2.8796829283237457e-03 + + 5.9903860092163086e-01 5.7252532243728638e-01 + 4.1495120525360107e-01 + <_> + + 1 0 1616 -8.1119500100612640e-03 -1 -2 1617 + 4.5932079665362835e-03 + + 5.3963518142700195e-01 5.3797042369842529e-01 + 3.8913029432296753e-01 + <_> + + 1 0 1618 7.0014740340411663e-03 -1 -2 1619 + 8.0169539432972670e-04 + + 3.7146711349487305e-01 5.5295670032501221e-01 + 3.7558048963546753e-01 + <_> + + 1 0 1620 -8.6652329191565514e-03 -1 -2 1621 + -2.7315050829201937e-03 + + 5.0257730484008789e-01 5.8503222465515137e-01 + 4.6175739169120789e-01 + <_> + + 1 0 1622 1.3301590224727988e-03 -1 -2 1623 + -4.2648240923881531e-03 + + 5.9377008676528931e-01 5.6453680992126465e-01 + 3.9376249909400940e-01 + <_> + + 0 1 1624 6.3251499086618423e-03 -1 -2 1625 + -3.0753740575164557e-03 + + 5.1821058988571167e-01 3.0074161291122437e-01 + 5.1964038610458374e-01 + <_> + + 0 1 1626 -7.3622138006612659e-04 -1 -2 1627 + 3.0082479497650638e-05 + + 3.6975800991058350e-01 4.3275931477546692e-01 + 5.7158088684082031e-01 + <_> + + 0 1 1628 -3.8722730241715908e-03 -1 -2 1629 + 6.2879058532416821e-04 + + 3.4737130999565125e-01 5.4382592439651489e-01 + 4.4539061188697815e-01 + <_> + + 1 0 1630 1.3411579420790076e-03 -1 -2 1631 + -8.3681922405958176e-03 + + 6.5117138624191284e-01 1.4432950317859650e-01 + 4.8881998658180237e-01 + <_> + + 1 0 1632 9.3305751215666533e-04 -1 -2 1633 + -1.0746510233730078e-03 + + 3.9511090517044067e-01 3.9102658629417419e-01 + 5.3495037555694580e-01 + <_> + + 0 1 1634 -1.8610050901770592e-02 -1 -2 1635 + 1.3651419430971146e-03 + + 1.2757439911365509e-01 5.0382888317108154e-01 + 6.9513040781021118e-01 + <_> + + 0 1 1636 7.3744421824812889e-03 -1 -2 1637 + 8.4163323044776917e-03 + + 5.2534431219100952e-01 5.0112438201904297e-01 + 7.3113328218460083e-01 + <_> + + 0 1 1638 5.1413988694548607e-03 -1 -2 1639 + 4.5847031287848949e-03 + + 4.9535360932350159e-01 2.5355559587478638e-01 + 6.4624428749084473e-01 + <_> + + 1 0 1640 2.8565239161252975e-02 -1 -2 1641 + 4.3958800961263478e-04 + + 2.3307220637798309e-01 4.7022441029548645e-01 + 5.5445492267608643e-01 + <_> + + 1 0 1642 3.1459458172321320e-02 -1 -2 1643 + 5.6011630222201347e-03 + + 3.3689688891172409e-02 4.7871211171150208e-01 + 6.3383519649505615e-01 + <_> + + 0 1 1644 7.1835669223219156e-04 -1 -2 1645 + -5.5303089320659637e-03 + + 5.4314869642257690e-01 4.1058328747749329e-01 + 5.4039907455444336e-01 + <_> + + 1 0 1646 1.4129279879853129e-03 -1 -2 1647 + 2.5530709535814822e-04 + + 3.1055399775505066e-01 4.2544719576835632e-01 + 5.4471540451049805e-01 + <_> + + 1 0 1648 3.1966410460881889e-04 -1 -2 1649 + 5.0411392003297806e-03 + + 6.1183619499206543e-01 5.2900421619415283e-01 + 4.2247870564460754e-01 + <_> + + 0 1 1650 7.7617880888283253e-03 -1 -2 1651 + 2.9374631121754646e-03 + + 4.3153458833694458e-01 6.6292631626129150e-01 + 3.0289649963378906e-01 + <_> + + 1 0 1652 -1.6497720498591661e-03 -1 -2 1653 + -5.8834417723119259e-03 + + 5.4918527603149414e-01 3.1885540485382080e-01 + 5.1842892169952393e-01 + <_> + + 1 0 1654 8.7459187489002943e-04 -1 -2 1655 + -1.5308779664337635e-02 + + 3.3288308978080750e-01 3.9236080646514893e-01 + 5.2351391315460205e-01 + <_> + + 1 0 1656 3.2292451709508896e-02 -1 -2 1657 + -4.3842519517056644e-04 + + 5.9776467084884644e-01 4.5416879653930664e-01 + 5.3694289922714233e-01 + <_> + + 1 0 1658 1.5429529594257474e-03 -1 -2 1659 + -2.4733028840273619e-03 + + 6.3181412220001221e-01 3.4906330704689026e-01 + 4.7590249776840210e-01 + <_> + + 1 0 1660 2.0994939841330051e-03 -1 -2 1661 + -5.7541108690202236e-03 + + 5.8871978521347046e-01 5.9613317251205444e-01 + 4.8419830203056335e-01 + <_> + + 0 1 1662 -1.0233130306005478e-02 -1 -2 1663 + 2.2554509341716766e-01 + + 1.7054040729999542e-01 4.7793799638748169e-01 + 9.7879663109779358e-02 + <_> + + 1 0 1664 2.9666559770703316e-02 -1 -2 1665 + -2.8518449980765581e-03 + + 5.8222240209579468e-01 5.4596269130706787e-01 + 4.6100661158561707e-01 + <_> + + 1 0 1666 9.7465328872203827e-04 -1 -2 1667 + 1.4044740055396687e-05 + + 3.6703228950500488e-01 4.3023860454559326e-01 + 5.6917107105255127e-01 + <_> + + 0 1 1668 -1.7579430714249611e-02 -1 -2 1669 + -5.2381679415702820e-02 + + 6.9173210859298706e-01 7.1100401878356934e-01 + 5.0601547956466675e-01 + <_> + + 0 1 1670 -1.1242110282182693e-02 -1 -2 1671 + -3.6728400737047195e-03 + + 8.7691891193389893e-01 6.5191918611526489e-01 + 4.5460689067840576e-01 + <_> + + 0 1 1672 3.5082760732620955e-03 -1 -2 1673 + 6.1679710634052753e-03 + + 5.3298658132553101e-01 5.2204591035842896e-01 + 2.9535189270973206e-01 + <_> + + 1 0 1674 -9.7009900491684675e-04 -1 -2 1675 + -1.0957010090351105e-02 + + 5.0486332178115845e-01 5.8373582363128662e-01 + 3.0200859904289246e-01 + <_> + + 0 1 1676 -8.3272513002157211e-03 -1 -2 1677 + 2.9798380637657829e-05 + + 3.1580638885498047e-01 4.3863898515701294e-01 + 5.4432111978530884e-01 + <_> + + 1 0 1678 2.8244039276614785e-04 -1 -2 1679 + -8.1364117795601487e-04 + + 5.6253957748413086e-01 5.2811980247497559e-01 + 3.4014078974723816e-01 + <_> + + 1 0 1680 1.8008040497079492e-03 -1 -2 1681 + -6.9944779388606548e-03 + + 3.4716591238975525e-01 4.4816970825195312e-01 + 5.3857702016830444e-01 + <_> + + 0 1 1682 4.5625398342963308e-05 -1 -2 1683 + -7.3189922841265798e-04 + + 4.4925129413604736e-01 4.1673120856285095e-01 + 6.0211020708084106e-01 + <_> + + 0 1 1684 -2.9980219551362097e-04 -1 -2 1685 + -2.9060940505587496e-05 + + 4.1484281420707703e-01 5.5920898914337158e-01 + 4.0732109546661377e-01 + <_> + + 0 1 1686 -5.9742690064013004e-04 -1 -2 1687 + 1.4831830048933625e-04 + + 6.0889142751693726e-01 5.2983051538467407e-01 + 3.7619501352310181e-01 + <_> + + 1 0 1688 -2.9441029764711857e-03 -1 -2 1689 + 1.3741210103034973e-01 + + 4.7160848975181580e-01 5.1013368368148804e-01 + 4.6746801584959030e-02 + <_> + + 0 1 1690 -8.8414177298545837e-02 -1 -2 1691 + 7.0610277354717255e-02 + + 1.1818689852952957e-01 5.1190632581710815e-01 + 7.7784419059753418e-01 + <_> + + 0 1 1692 -7.7188978902995586e-03 -1 -2 1693 + 1.5115399844944477e-02 + + 1.8741349875926971e-01 4.9800279736518860e-01 + 7.0058178901672363e-01 + <_> + + 0 1 1694 1.0671879863366485e-03 -1 -2 1695 + 7.0487911580130458e-04 + + 4.4822388887405396e-01 6.2657529115676880e-01 + 4.4026550650596619e-01 + <_> + 90 + 4.4251281738281250e+01 + + <_> + + 1 0 1696 -9.8690733313560486e-02 -1 -2 1697 + 6.2373418360948563e-02 + + 3.9994749426841736e-01 5.2477848529815674e-01 + 8.1935757398605347e-01 + <_> + + 0 1 1698 1.9496519817039371e-03 -1 -2 1699 + -8.9139147894456983e-04 + + 3.5298168659210205e-01 5.8527278900146484e-01 + 3.2459780573844910e-01 + <_> + + 0 1 1700 -5.5150408297777176e-04 -1 -2 1701 + -1.1721949558705091e-03 + + 3.8928169012069702e-01 4.3350520730018616e-01 + 6.5206241607666016e-01 + <_> + + 1 0 1702 -7.4480642797425389e-04 -1 -2 1703 + -2.6264840271323919e-03 + + 4.0411350131034851e-01 5.6249821186065674e-01 + 3.9675250649452209e-01 + <_> + + 0 1 1704 -3.9712688885629177e-04 -1 -2 1705 + 3.5984949208796024e-03 + + 3.8561120629310608e-01 5.9978890419006348e-01 + 4.2416140437126160e-01 + <_> + + 1 0 1706 5.3080618381500244e-03 -1 -2 1707 + 9.6319877775385976e-04 + + 6.6601687669754028e-01 4.4813790917396545e-01 + 5.5834877490997314e-01 + <_> + + 0 1 1708 5.0776469288393855e-04 -1 -2 1709 + 3.6223160568624735e-03 + + 3.5354590415954590e-01 3.4098070859909058e-01 + 5.4206877946853638e-01 + <_> + + 0 1 1710 -6.2061410397291183e-02 -1 -2 1711 + 6.4387189922854304e-04 + + 1.9340839982032776e-01 4.0836268663406372e-01 + 5.4902219772338867e-01 + <_> + + 1 0 1712 2.6239909231662750e-02 -1 -2 1713 + 8.1940297968685627e-04 + + 2.2857080399990082e-01 4.6486678719520569e-01 + 6.0173559188842773e-01 + <_> + + 1 0 1714 2.3833119485061616e-04 -1 -2 1715 + -1.5869759954512119e-03 + + 3.5980388522148132e-01 4.2596510052680969e-01 + 5.4764348268508911e-01 + <_> + + 0 1 1716 -6.7263417877256870e-03 -1 -2 1717 + 1.1006110347807407e-02 + + 6.5072381496429443e-01 5.1494097709655762e-01 + 3.3629849553108215e-01 + <_> + + 1 0 1718 7.1445819921791553e-03 -1 -2 1719 + -4.7233798541128635e-03 + + 2.6729300618171692e-01 5.6521821022033691e-01 + 4.2981448769569397e-01 + <_> + + 1 0 1720 9.8437406122684479e-03 -1 -2 1721 + 1.5124640412977897e-05 + + 1.1518859863281250e-01 4.3735980987548828e-01 + 5.6121289730072021e-01 + <_> + + 0 1 1722 3.9908871054649353e-02 -1 -2 1723 + 5.3903679363429546e-03 + + 5.2046489715576172e-01 4.8134678602218628e-01 + 6.3612091541290283e-01 + <_> + + 0 1 1724 -3.9908871054649353e-02 -1 -2 1725 + 5.3903679363429546e-03 + + 1.5068709850311279e-01 4.5816949009895325e-01 + 6.2002408504486084e-01 + <_> + + 1 0 1726 6.7005190066993237e-03 -1 -2 1727 + -1.2623789720237255e-02 + + 3.4322351217269897e-01 3.0882269144058228e-01 + 5.2267378568649292e-01 + <_> + + 1 0 1728 1.1806610040366650e-02 -1 -2 1729 + -3.4257229417562485e-03 + + 7.1879392862319946e-01 3.1208148598670959e-01 + 5.0658440589904785e-01 + <_> + + 0 1 1730 3.9385299896821380e-04 -1 -2 1731 + 3.4388188272714615e-02 + + 4.7545841336250305e-01 5.2616578340530396e-01 + 3.3501741290092468e-01 + <_> + + 0 1 1732 -7.5009986758232117e-02 -1 -2 1733 + 4.9022492021322250e-04 + + 1.7134809494018555e-01 4.7258019447326660e-01 + 5.9564691781997681e-01 + <_> + + 0 1 1734 -8.5525289177894592e-03 -1 -2 1735 + 1.3135520566720515e-04 + + 6.5582227706909180e-01 4.8354008793830872e-01 + 5.5869138240814209e-01 + <_> + + 1 0 1736 4.7948658466339111e-03 -1 -2 1737 + 2.0124691072851419e-03 + + 2.6457059383392334e-01 3.6579450964927673e-01 + 5.1247721910476685e-01 + <_> + + 0 1 1738 -1.1785479635000229e-01 -1 -2 1739 + 1.5575019642710686e-03 + + 2.3856540024280548e-01 5.4904741048812866e-01 + 4.2747479677200317e-01 + <_> + + 0 1 1740 -1.5573759563267231e-02 -1 -2 1741 + -2.1854790393263102e-03 + + 6.9389009475708008e-01 3.6459881067276001e-01 + 5.0925260782241821e-01 + <_> + + 0 1 1742 2.9272339306771755e-03 -1 -2 1743 + 6.4663668163120747e-03 + + 4.6858081221580505e-01 4.9734100699424744e-01 + 7.7260971069335938e-01 + <_> + + 0 1 1744 -7.6140360906720161e-03 -1 -2 1745 + 4.1512572206556797e-03 + + 6.8774658441543579e-01 4.7885251045227051e-01 + 6.9216579198837280e-01 + <_> + + 0 1 1746 2.7711640577763319e-03 -1 -2 1747 + -1.2836109846830368e-02 + + 5.4818397760391235e-01 3.8001629710197449e-01 + 5.2044928073883057e-01 + <_> + + 0 1 1748 -2.4380050599575043e-03 -1 -2 1749 + 2.1713329479098320e-03 + + 2.5824350118637085e-01 4.9611631035804749e-01 + 3.2152029871940613e-01 + <_> + + 1 0 1750 6.2800728483125567e-04 -1 -2 1751 + -9.7982389852404594e-03 + + 5.4604238271713257e-01 6.0465437173843384e-01 + 4.9399220943450928e-01 + <_> + + 1 0 1752 7.3543828912079334e-03 -1 -2 1753 + -1.4665040187537670e-02 + + 5.2910941839218140e-01 5.4461228847503662e-01 + 3.5673621296882629e-01 + <_> + + 0 1 1754 3.0244510620832443e-02 -1 -2 1755 + -5.6660208851099014e-02 + + 5.5183291435241699e-01 6.9309788942337036e-01 + 5.0933879613876343e-01 + <_> + + 0 1 1756 -5.6967479176819324e-03 -1 -2 1757 + 3.0806770548224449e-02 + + 3.2015261054039001e-01 4.9892461299896240e-01 + 2.2770540416240692e-01 + <_> + + 0 1 1758 2.2748769260942936e-03 -1 -2 1759 + 2.0436900667846203e-03 + + 4.8109310865402222e-01 5.2838671207427979e-01 + 3.2559248805046082e-01 + <_> + + 0 1 1760 -8.6277956143021584e-03 -1 -2 1761 + 6.5113382879644632e-04 + + 6.2665361166000366e-01 5.0971370935440063e-01 + 3.1919100880622864e-01 + <_> + + 0 1 1762 8.8188261725008488e-04 -1 -2 1763 + -1.4594909735023975e-02 + + 4.5495858788490295e-01 2.6450389623641968e-01 + 5.1538681983947754e-01 + <_> + + 0 1 1764 -1.2304580304771662e-03 -1 -2 1765 + -2.1867299801670015e-04 + + 6.1975848674774170e-01 5.4691988229751587e-01 + 4.2068558931350708e-01 + <_> + + 0 1 1766 -1.0909959673881531e-03 -1 -2 1767 + 3.5210378700867295e-04 + + 4.1407600045204163e-01 5.4766088724136353e-01 + 4.1550210118293762e-01 + <_> + + 0 1 1768 -7.2563779540359974e-03 -1 -2 1769 + 1.4701850013807416e-03 + + 7.1604692935943604e-01 5.2408081293106079e-01 + 3.7296628952026367e-01 + <_> + + 0 1 1770 1.1472719779703766e-04 -1 -2 1771 + 3.0506469774991274e-03 + + 4.0337988734245300e-01 5.2639859914779663e-01 + 3.5600930452346802e-01 + <_> + + 0 1 1772 2.6269949739798903e-04 -1 -2 1773 + -3.6365550477057695e-03 + + 4.5697999000549316e-01 3.0425709486007690e-01 + 5.8682537078857422e-01 + <_> + + 1 0 1774 -8.4893293678760529e-03 -1 -2 1775 + 5.8107408694922924e-03 + + 4.9141570925712585e-01 4.9185299873352051e-01 + 6.2669628858566284e-01 + <_> + + 1 0 1776 7.5583951547741890e-04 -1 -2 1777 + -2.2017690353095531e-03 + + 5.6332361698150635e-01 5.5539160966873169e-01 + 3.8276460766792297e-01 + <_> + + 0 1 1778 2.7908938936889172e-03 -1 -2 1779 + -1.8228569533675909e-03 + + 5.4986977577209473e-01 4.3822830915451050e-01 + 5.4240328073501587e-01 + <_> + + 0 1 1780 -7.2495508939027786e-03 -1 -2 1781 + -6.8744522286579013e-04 + + 2.8881219029426575e-01 3.4726551175117493e-01 + 5.0763708353042603e-01 + <_> + + 0 1 1782 2.5174440816044807e-03 -1 -2 1783 + -1.0151379741728306e-02 + + 4.6612051129341125e-01 3.7447750568389893e-01 + 5.2940011024475098e-01 + <_> + + 1 0 1784 -4.1399952024221420e-03 -1 -2 1785 + -4.7078551724553108e-03 + + 4.6604850888252258e-01 4.1750618815422058e-01 + 6.9163060188293457e-01 + <_> + + 1 0 1786 4.1981041431427002e-02 -1 -2 1787 + -1.4272999949753284e-02 + + 2.0182150602340698e-01 7.5111979246139526e-01 + 5.0320839881896973e-01 + <_> + + 1 0 1788 4.0869521908462048e-03 -1 -2 1789 + 1.7606799956411123e-03 + + 2.5045138597488403e-01 3.3014011383056641e-01 + 5.2183371782302856e-01 + <_> + + 0 1 1790 1.2550549581646919e-04 -1 -2 1791 + -2.9503209516406059e-03 + + 4.6144428849220276e-01 4.6199500560760498e-01 + 5.2470302581787109e-01 + <_> + + 0 1 1792 -1.1312420247122645e-03 -1 -2 1793 + -1.6983180539682508e-03 + + 6.3143682479858398e-01 3.4013068675994873e-01 + 5.0555270910263062e-01 + <_> + + 1 0 1794 -1.1457820422947407e-02 -1 -2 1795 + -8.4962565451860428e-03 + + 4.9399960041046143e-01 2.9654508829116821e-01 + 5.1943677663803101e-01 + <_> + + 1 0 1796 1.1919089592993259e-02 -1 -2 1797 + 6.4416420646011829e-03 + + 7.8869980573654175e-01 5.1069867610931396e-01 + 2.9671460390090942e-01 + <_> + + 0 1 1798 -8.7857811013236642e-04 -1 -2 1799 + -2.0312711130827665e-03 + + 5.7143712043762207e-01 4.4812008738517761e-01 + 5.3849118947982788e-01 + <_> + + 0 1 1800 -1.5262430533766747e-03 -1 -2 1801 + 4.2860880494117737e-03 + + 6.1935687065124512e-01 4.3398851156234741e-01 + 7.6972991228103638e-01 + <_> + + 1 0 1802 3.5010920837521553e-03 -1 -2 1803 + 1.2587670236825943e-02 + + 3.1713891029357910e-01 5.2466988563537598e-01 + 4.2412081360816956e-01 + <_> + + 0 1 1804 2.6207490009255707e-04 -1 -2 1805 + 4.4701730075757951e-05 + + 4.2318999767303467e-01 4.1741389036178589e-01 + 5.9196037054061890e-01 + <_> + + 0 1 1806 7.8084698179736733e-04 -1 -2 1807 + 8.8851212058216333e-04 + + 4.2773890495300293e-01 3.7201610207557678e-01 + 5.2268189191818237e-01 + <_> + + 0 1 1808 2.3369069676846266e-03 -1 -2 1809 + 1.6688359901309013e-03 + + 5.4780668020248413e-01 3.6286789178848267e-01 + 6.1500048637390137e-01 + <_> + + 0 1 1810 3.0844469438306987e-04 -1 -2 1811 + 3.4617560449987650e-03 + + 4.7470751404762268e-01 4.5801380276679993e-01 + 5.5856817960739136e-01 + <_> + + 0 1 1812 1.8961310386657715e-02 -1 -2 1813 + 1.7347310483455658e-01 + + 5.2988010644912720e-01 3.6983850598335266e-01 + 8.4986197948455811e-01 + <_> + + 1 0 1814 2.0020549709443003e-04 -1 -2 1815 + 1.0967060225084424e-03 + + 5.5656617879867554e-01 4.7957131266593933e-01 + 6.2862598896026611e-01 + <_> + + 0 1 1816 1.5107099898159504e-04 -1 -2 1817 + -3.4463501069694757e-03 + + 4.0524059534072876e-01 6.1730152368545532e-01 + 4.4142639636993408e-01 + <_> + + 1 0 1818 8.5176620632410049e-03 -1 -2 1819 + -3.5812109708786011e-02 + + 3.5705709457397461e-01 3.1513288617134094e-01 + 5.2527028322219849e-01 + <_> + + 0 1 1820 -2.1155400201678276e-02 -1 -2 1821 + 8.9890940580517054e-04 + + 6.1247211694717407e-01 5.1699757575988770e-01 + 3.5962718725204468e-01 + <_> + + 1 0 1822 -1.5613760333508253e-03 -1 -2 1823 + 6.7120860330760479e-04 + + 4.9149879813194275e-01 4.5462110638618469e-01 + 5.3958117961883545e-01 + <_> + + 0 1 1824 -2.1597029641270638e-02 -1 -2 1825 + -2.4947229772806168e-02 + + 1.9031339883804321e-01 6.9740772247314453e-01 + 4.9677160382270813e-01 + <_> + + 0 1 1826 1.8725979607552290e-03 -1 -2 1827 + 6.3912719488143921e-03 + + 4.7489479184150696e-01 5.1801782846450806e-01 + 2.9243218898773193e-01 + <_> + + 0 1 1828 -9.1552399098873138e-03 -1 -2 1829 + 2.1715660113841295e-03 + + 7.6658701896667480e-01 5.2155512571334839e-01 + 3.3657190203666687e-01 + <_> + + 1 0 1830 1.2330369791015983e-03 -1 -2 1831 + -4.0785901364870369e-04 + + 6.2609577178955078e-01 4.5335099101066589e-01 + 5.3864890336990356e-01 + <_> + + 0 1 1832 4.6437609125860035e-04 -1 -2 1833 + -1.1600199650274590e-04 + + 4.1034960746765137e-01 5.8303910493850708e-01 + 4.3041059374809265e-01 + <_> + + 0 1 1834 -1.2718720361590385e-02 -1 -2 1835 + 8.9431880041956902e-05 + + 2.1325829625129700e-01 4.8728910088539124e-01 + 5.4589152336120605e-01 + <_> + + 0 1 1836 -3.3913689549081028e-04 -1 -2 1837 + -1.8026340752840042e-02 + + 3.9743649959564209e-01 7.5685507059097290e-01 + 5.0456118583679199e-01 + <_> + + 1 0 1838 6.9179181009531021e-03 -1 -2 1839 + -1.1839679791592062e-04 + + 3.9662998914718628e-01 4.1980829834938049e-01 + 5.4358041286468506e-01 + <_> + + 0 1 1840 -3.9474181830883026e-03 -1 -2 1841 + 6.0050919273635373e-05 + + 6.3694578409194946e-01 5.2695667743682861e-01 + 3.8122430443763733e-01 + <_> + + 1 0 1842 9.1423643752932549e-03 -1 -2 1843 + 2.1305440168362111e-04 + + 4.1567629575729370e-01 3.5235330462455750e-01 + 5.3494542837142944e-01 + <_> + + 1 0 1844 -2.0855850016232580e-04 -1 -2 1845 + 1.3130389852449298e-03 + + 4.4033220410346985e-01 6.0581612586975098e-01 + 4.4682189822196960e-01 + <_> + + 1 0 1846 -2.9134768992662430e-03 -1 -2 1847 + 2.9645769391208887e-03 + + 4.8257058858871460e-01 4.8359981179237366e-01 + 6.0392779111862183e-01 + <_> + + 1 0 1848 1.7772549763321877e-03 -1 -2 1849 + -7.7136349864304066e-03 + + 6.8718272447586060e-01 2.8422209620475769e-01 + 5.1454281806945801e-01 + <_> + + 1 0 1850 5.1027478184551001e-04 -1 -2 1851 + 1.7460630042478442e-03 + + 6.0244262218475342e-01 4.7566100955009460e-01 + 5.7211542129516602e-01 + <_> + + 1 0 1852 3.8068278809078038e-04 -1 -2 1853 + 2.8228890150785446e-03 + + 4.9310690164566040e-01 3.3116981387138367e-01 + 6.2275981903076172e-01 + <_> + + 1 0 1854 -5.3000478073954582e-03 -1 -2 1855 + 4.4951299059903249e-05 + + 5.2320927381515503e-01 3.9952319860458374e-01 + 5.3147977590560913e-01 + <_> + + 0 1 1856 3.2752458937466145e-03 -1 -2 1857 + -2.8162579983472824e-03 + + 4.4816198945045471e-01 3.9079719781875610e-01 + 6.6716408729553223e-01 + <_> + + 0 1 1858 1.4112279750406742e-03 -1 -2 1859 + 8.3062034100294113e-03 + + 5.3570109605789185e-01 4.7709658741950989e-01 + 5.5700999498367310e-01 + <_> + + 0 1 1860 2.2164839319884777e-03 -1 -2 1861 + -4.9868631176650524e-03 + + 4.9471241235733032e-01 5.2413070201873779e-01 + 2.5126549601554871e-01 + <_> + + 1 0 1862 -3.6664260551333427e-03 -1 -2 1863 + -1.0581229813396931e-02 + + 4.6195539832115173e-01 6.3017189502716064e-01 + 4.9730318784713745e-01 + <_> + + 1 0 1864 7.3366491124033928e-03 -1 -2 1865 + -3.9318940252996981e-04 + + 2.8709700703620911e-01 4.2528051137924194e-01 + 5.5792468786239624e-01 + <_> + + 0 1 1866 -8.1375334411859512e-03 -1 -2 1867 + 2.4809150490909815e-03 + + 5.7473158836364746e-01 5.2033740282058716e-01 + 3.9035668969154358e-01 + <_> + + 1 0 1868 8.8749779388308525e-04 -1 -2 1869 + -4.2194919660687447e-04 + + 5.5343210697174072e-01 5.3380441665649414e-01 + 3.9258408546447754e-01 + <_> + + 0 1 1870 -7.9790111631155014e-03 -1 -2 1871 + 1.1439629597589374e-03 + + 4.1443160176277161e-01 4.7013729810714722e-01 + 5.2817362546920776e-01 + <_> + + 1 0 1872 7.5542130507528782e-03 -1 -2 1873 + 1.0288399644196033e-03 + + 2.5272560119628906e-01 5.6051462888717651e-01 + 4.2978560924530029e-01 + <_> + + 1 0 1874 -1.7234670231118798e-03 -1 -2 1875 + 5.7586699724197388e-01 + + 4.8396828770637512e-01 5.1105028390884399e-01 + 8.0489329993724823e-02 + <_> + 109 + 5.3755569458007812e+01 + + <_> + + 0 1 1876 6.6640521399676800e-03 -1 -2 1877 + 8.9905522763729095e-03 + + 3.8289201259613037e-01 4.8584291338920593e-01 + 7.3549592494964600e-01 + <_> + + 1 0 1878 5.7154200039803982e-03 -1 -2 1879 + 1.1257929727435112e-03 + + 6.7232239246368408e-01 4.4295778870582581e-01 + 6.0707777738571167e-01 + <_> + + 1 0 1880 -9.1789010912179947e-04 -1 -2 1881 + -1.0492859873920679e-03 + + 3.0763450264930725e-01 5.5936437845230103e-01 + 3.6510229110717773e-01 + <_> + + 0 1 1882 3.5453929740469903e-05 -1 -2 1883 + 2.9015709878876805e-04 + + 4.2779681086540222e-01 4.5835450291633606e-01 + 5.2846831083297729e-01 + <_> + + 1 0 1884 1.6071660502348095e-04 -1 -2 1885 + -5.2961107576265931e-04 + + 3.7981921434402466e-01 3.8504371047019958e-01 + 5.9396880865097046e-01 + <_> + + 0 1 1886 2.6682569296099246e-04 -1 -2 1887 + -1.3492540165316314e-04 + + 4.1230249404907227e-01 5.7605999708175659e-01 + 4.2376458644866943e-01 + <_> + + 0 1 1888 -1.0841679759323597e-02 -1 -2 1889 + 1.2077829800546169e-02 + + 3.9299210906028748e-01 5.7619231939315796e-01 + 2.7804449200630188e-01 + <_> + + 0 1 1890 2.2128869313746691e-03 -1 -2 1891 + -1.5266190283000469e-02 + + 4.7945070266723633e-01 7.4055880308151245e-02 + 5.1535779237747192e-01 + <_> + + 1 0 1892 6.7929533543065190e-05 -1 -2 1893 + 1.7633590323384851e-04 + + 5.8587378263473511e-01 3.5676109790802002e-01 + 5.5989629030227661e-01 + <_> + + 1 0 1894 8.1311381654813886e-04 -1 -2 1895 + 3.2630451023578644e-03 + + 5.3468507528305054e-01 4.7825369238853455e-01 + 5.4567539691925049e-01 + <_> + + 0 1 1896 -3.9503918960690498e-03 -1 -2 1897 + -3.9864578866399825e-04 + + 2.8318119049072266e-01 5.4852157831192017e-01 + 4.1596978902816772e-01 + <_> + + 0 1 1898 -1.1432520113885403e-02 -1 -2 1899 + 5.3339172154664993e-03 + + 5.6391012668609619e-01 4.5969840884208679e-01 + 5.9312427043914795e-01 + <_> + + 1 0 1900 8.3193257451057434e-03 -1 -2 1901 + -4.2479918920435011e-04 + + 3.2306200265884399e-01 3.7952938675880432e-01 + 5.4086112976074219e-01 + <_> + + 0 1 1902 -1.1189430207014084e-01 -1 -2 1903 + -7.5553781352937222e-03 + + 1.1322979629039764e-01 6.3393700122833252e-01 + 4.8387709259986877e-01 + <_> + + 0 1 1904 -7.0337029173970222e-03 -1 -2 1905 + -1.4833680354058743e-02 + + 5.6652551889419556e-01 6.7514181137084961e-01 + 4.1409450769424438e-01 + <_> + + 1 0 1906 8.7506724521517754e-03 -1 -2 1907 + 1.6645010327920318e-03 + + 3.5612589120864868e-01 5.3472799062728882e-01 + 3.6497798562049866e-01 + <_> + + 1 0 1908 9.4900820404291153e-03 -1 -2 1909 + 1.1133110383525491e-03 + + 2.7546560764312744e-01 4.2259928584098816e-01 + 5.6291788816452026e-01 + <_> + + 0 1 1910 9.4940755516290665e-03 -1 -2 1911 + -1.5396620146930218e-03 + + 4.9060368537902832e-01 4.0070518851280212e-01 + 5.3807091712951660e-01 + <_> + + 1 0 1912 1.3434959948062897e-01 -1 -2 1913 + -9.4940755516290665e-03 + + 2.2146719694137573e-01 7.3531562089920044e-01 + 5.0050330162048340e-01 + <_> + + 1 0 1914 2.0011790096759796e-02 -1 -2 1915 + -1.8875009845942259e-03 + + 3.3279061317443848e-01 3.9152890443801880e-01 + 5.4018497467041016e-01 + <_> + + 1 0 1916 7.1842782199382782e-03 -1 -2 1917 + 1.6976969782263041e-03 + + 7.1766048669815063e-01 4.5269781351089478e-01 + 6.0769128799438477e-01 + <_> + + 1 0 1918 4.9219978973269463e-03 -1 -2 1919 + 1.1803199537098408e-02 + + 2.5698339939117432e-01 4.9996379017829895e-01 + 5.9582281112670898e-01 + <_> + + 0 1 1920 -9.7703449428081512e-03 -1 -2 1921 + 2.1174899302423000e-03 + + 3.4590938687324524e-01 4.5151269435882568e-01 + 5.8297157287597656e-01 + <_> + + 0 1 1922 9.4801411032676697e-03 -1 -2 1923 + -2.6078789960592985e-03 + + 4.8073920607566833e-01 3.4622168540954590e-01 + 5.2015948295593262e-01 + <_> + + 0 1 1924 -5.7252747938036919e-03 -1 -2 1925 + -8.2325618714094162e-03 + + 6.5998530387878418e-01 2.8218281269073486e-01 + 5.1252847909927368e-01 + <_> + + 0 1 1926 8.9571950957179070e-04 -1 -2 1927 + -1.5021569561213255e-04 + + 4.8838189244270325e-01 4.8299181461334229e-01 + 5.4287171363830566e-01 + <_> + + 0 1 1928 4.8489659093320370e-04 -1 -2 1929 + -9.6192650496959686e-02 + + 4.4345989823341370e-01 2.2566360235214233e-01 + 5.9562277793884277e-01 + <_> + + 0 1 1930 -1.1053519556298852e-03 -1 -2 1931 + -1.0215040296316147e-01 + + 4.5272240042686462e-01 2.8443491458892822e-01 + 5.1864528656005859e-01 + <_> + + 1 0 1932 3.0147889629006386e-03 -1 -2 1933 + 7.6131648384034634e-03 + + 3.8089990615844727e-01 5.7186990976333618e-01 + 4.2625638842582703e-01 + <_> + + 1 0 1934 1.5197630273178220e-03 -1 -2 1935 + -1.4197279699146748e-02 + + 5.9427189826965332e-01 7.7311038970947266e-01 + 4.9976539611816406e-01 + <_> + + 0 1 1936 -1.3818879611790180e-02 -1 -2 1937 + -5.0701329018920660e-04 + + 6.6811382770538330e-01 3.3056080341339111e-01 + 4.7499749064445496e-01 + <_> + + 0 1 1938 -9.3537531793117523e-03 -1 -2 1939 + -9.4771059229969978e-03 + + 2.8609329462051392e-01 6.1888831853866577e-01 + 4.8421001434326172e-01 + <_> + + 1 0 1940 1.6923650400713086e-03 -1 -2 1941 + 5.8652542065829039e-04 + + 6.0702490806579590e-01 3.7826898694038391e-01 + 5.3681969642639160e-01 + <_> + + 0 1 1942 -2.5826620403677225e-03 -1 -2 1943 + -2.7307639829814434e-03 + + 3.6902099847793579e-01 3.8571149110794067e-01 + 5.3181087970733643e-01 + <_> + + 1 0 1944 2.1871570497751236e-02 -1 -2 1945 + -1.5010299648565706e-05 + + 2.3270089924335480e-01 5.5607229471206665e-01 + 4.3014100193977356e-01 + <_> + + 1 0 1946 5.3583700209856033e-03 -1 -2 1947 + 5.0057549960911274e-03 + + 6.7676377296447754e-01 5.1949042081832886e-01 + 3.6128538846969604e-01 + <_> + + 0 1 1948 -1.9030070398002863e-03 -1 -2 1949 + -7.8506693243980408e-03 + + 3.2378450036048889e-01 1.1948519945144653e-01 + 4.9917238950729370e-01 + <_> + + 1 0 1950 -2.7093670796602964e-03 -1 -2 1951 + 1.4138079714030027e-03 + + 4.8549601435661316e-01 4.8723229765892029e-01 + 5.9035778045654297e-01 + <_> + + 1 0 1952 9.0300198644399643e-03 -1 -2 1953 + -9.7925681620836258e-04 + + 6.5473157167434692e-01 5.8492732048034668e-01 + 4.5542308688163757e-01 + <_> + + 1 0 1954 1.3984439428895712e-03 -1 -2 1955 + 8.3372107474133372e-04 + + 4.0646260976791382e-01 5.3995430469512939e-01 + 4.1528099775314331e-01 + <_> + + 1 0 1956 1.0551059618592262e-02 -1 -2 1957 + 8.8344102550763637e-05 + + 1.7966809868812561e-01 4.2518630623817444e-01 + 5.4135227203369141e-01 + <_> + + 1 0 1958 -4.1022308170795441e-02 -1 -2 1959 + 7.5065628625452518e-03 + + 5.2281248569488525e-01 4.8537430167198181e-01 + 6.0934442281723022e-01 + <_> + + 1 0 1960 4.1022308170795441e-02 -1 -2 1961 + -5.3961377125233412e-04 + + 2.2050240635871887e-01 5.6927317380905151e-01 + 4.4687569141387939e-01 + <_> + + 0 1 1962 -6.8696036934852600e-02 -1 -2 1963 + -1.8447940237820148e-03 + + 1.4833140373229980e-01 6.2112838029861450e-01 + 4.9666011333465576e-01 + <_> + + 0 1 1964 -6.0959919355809689e-03 -1 -2 1965 + -4.2068301700055599e-03 + + 2.2946719825267792e-01 6.4070910215377808e-01 + 4.7485628724098206e-01 + <_> + + 1 0 1966 -7.1332789957523346e-04 -1 -2 1967 + 1.1756779998540878e-01 + + 5.3549361228942871e-01 5.1369780302047729e-01 + 1.0595739819109440e-02 + <_> + + 0 1 1968 5.9354289987822995e-05 -1 -2 1969 + -6.3173691742122173e-03 + + 3.7118038535118103e-01 1.7120739817619324e-01 + 5.0617581605911255e-01 + <_> + + 1 0 1970 1.4941499568521976e-02 -1 -2 1971 + -2.0789399277418852e-03 + + 6.7291188240051270e-01 4.4106459617614746e-01 + 5.4440277814865112e-01 + <_> + + 0 1 1972 -7.0736219640821218e-04 -1 -2 1973 + -3.1247111037373543e-03 + + 5.5689108371734619e-01 5.0238692760467529e-01 + 3.5624051094055176e-01 + <_> + + 1 0 1974 -7.8919378574937582e-04 -1 -2 1975 + 1.0179580189287663e-02 + + 5.4567861557006836e-01 5.5451387166976929e-01 + 4.6223109960556030e-01 + <_> + + 1 0 1976 -2.7506109327077866e-03 -1 -2 1977 + 1.0601329617202282e-02 + + 4.9425360560417175e-01 2.9612338542938232e-01 + 5.9643387794494629e-01 + <_> + + 0 1 1978 5.1466780714690685e-03 -1 -2 1979 + 7.6321147382259369e-02 + + 5.4952287673950195e-01 5.1739591360092163e-01 + 2.9402169585227966e-01 + <_> + + 0 1 1980 -1.5027689514681697e-03 -1 -2 1981 + 1.2266670353710651e-02 + + 3.1062999367713928e-01 4.6511501073837280e-01 + 6.8466138839721680e-01 + <_> + + 1 0 1982 -3.1118579208850861e-02 -1 -2 1983 + 2.8905589133501053e-02 + + 5.2260571718215942e-01 5.1822441816329956e-01 + 2.7054280042648315e-01 + <_> + + 1 0 1984 4.7598380595445633e-02 -1 -2 1985 + 3.0808549374341965e-02 + + 1.1095120012760162e-01 4.9386250972747803e-01 + 1.4041109383106232e-01 + <_> + + 1 0 1986 -2.1277810446918011e-04 -1 -2 1987 + 7.8969962894916534e-02 + + 4.3923568725585938e-01 5.2165520191192627e-01 + 2.2941139340400696e-01 + <_> + + 0 1 1988 -1.0257950052618980e-02 -1 -2 1989 + 1.2604889925569296e-03 + + 6.1766529083251953e-01 5.2362227439880371e-01 + 3.3289659023284912e-01 + <_> + + 1 0 1990 -3.3490460366010666e-02 -1 -2 1991 + -5.9202767442911863e-04 + + 4.8661869764328003e-01 4.1164070367813110e-01 + 5.3956401348114014e-01 + <_> + + 1 0 1992 3.0320750738610514e-05 -1 -2 1993 + -5.4369680583477020e-04 + + 5.6107360124588013e-01 5.6213891506195068e-01 + 3.4612038731575012e-01 + <_> + + 1 0 1994 -3.3490460366010666e-02 -1 -2 1995 + -5.9202767442911863e-04 + + 4.8967620730400085e-01 4.3054041266441345e-01 + 5.3407138586044312e-01 + <_> + + 0 1 1996 2.0550889894366264e-03 -1 -2 1997 + -4.4353571720421314e-03 + + 5.5449998378753662e-01 6.0385400056838989e-01 + 3.7465929985046387e-01 + <_> + + 1 0 1998 -8.4170423448085785e-02 -1 -2 1999 + 6.7419027909636497e-03 + + 5.0073480606079102e-01 5.2980971336364746e-01 + 4.7161450982093811e-01 + <_> + + 1 0 2000 1.0278150439262390e-02 -1 -2 2001 + 5.8800862170755863e-03 + + 6.2693750858306885e-01 5.1548278331756592e-01 + 3.8130408525466919e-01 + <_> + + 1 0 2002 -6.9679190346505493e-06 -1 -2 2003 + 8.2419527461752295e-04 + + 4.4402399659156799e-01 4.6975341439247131e-01 + 5.4855042695999146e-01 + <_> + + 0 1 2004 -5.5268318392336369e-03 -1 -2 2005 + 9.6128671430051327e-04 + + 5.5136048793792725e-01 3.6186391115188599e-01 + 5.8384567499160767e-01 + <_> + + 1 0 2006 2.4810510221868753e-03 -1 -2 2007 + -1.0480589699000120e-03 + + 2.5232228636741638e-01 4.1172578930854797e-01 + 5.3929960727691650e-01 + <_> + + 0 1 2008 -6.1287907883524895e-03 -1 -2 2009 + 1.1682329932227731e-04 + + 6.7263299226760864e-01 5.0411927700042725e-01 + 3.6077290773391724e-01 + <_> + + 0 1 2010 -3.9909478276968002e-02 -1 -2 2011 + 1.5859459526836872e-03 + + 1.5637390315532684e-01 4.8919808864593506e-01 + 5.7798451185226440e-01 + <_> + + 0 1 2012 -2.2690229117870331e-02 -1 -2 2013 + 2.0916070789098740e-03 + + 2.1868790686130524e-01 4.7715771198272705e-01 + 6.0992312431335449e-01 + <_> + + 0 1 2014 -2.4715419858694077e-02 -1 -2 2015 + -1.3419450260698795e-02 + + 3.4639969468116760e-01 3.6306929588317871e-01 + 5.2521961927413940e-01 + <_> + + 0 1 2016 -6.0629472136497498e-03 -1 -2 2017 + -2.0921030081808567e-03 + + 6.6663217544555664e-01 3.3995470404624939e-01 + 5.0356978178024292e-01 + <_> + + 0 1 2018 2.5961859151721001e-02 -1 -2 2019 + 1.7908669542521238e-04 + + 5.0368028879165649e-01 5.4185307025909424e-01 + 4.3189769983291626e-01 + <_> + + 0 1 2020 -3.1546850223094225e-03 -1 -2 2021 + -1.1397759662941098e-03 + + 7.2210252285003662e-01 3.3209729194641113e-01 + 5.0244337320327759e-01 + <_> + + 0 1 2022 -4.7840211540460587e-02 -1 -2 2023 + 4.1577088995836675e-04 + + 1.9387650489807129e-01 4.8021888732910156e-01 + 5.7307147979736328e-01 + <_> + + 0 1 2024 -4.4247039477340877e-04 -1 -2 2025 + 1.4479350065812469e-03 + + 4.2625150084495544e-01 5.7191711664199829e-01 + 4.0641531348228455e-01 + <_> + + 0 1 2026 1.5701510012149811e-02 -1 -2 2027 + 2.7805729769170284e-04 + + 4.9957260489463806e-01 5.2892869710922241e-01 + 4.5817288756370544e-01 + <_> + + 0 1 2028 -2.9010509606450796e-03 -1 -2 2029 + 2.0830519497394562e-04 + + 6.0121482610702515e-01 5.0579768419265747e-01 + 3.5994321107864380e-01 + <_> + + 1 0 2030 -5.1530029624700546e-02 -1 -2 2031 + 1.7163449956569821e-04 + + 4.9917969107627869e-01 4.6754699945449829e-01 + 5.3747731447219849e-01 + <_> + + 1 0 2032 2.3614279925823212e-02 -1 -2 2033 + -5.6427798699587584e-04 + + 6.5864789485931396e-01 3.8532960414886475e-01 + 5.1960402727127075e-01 + <_> + + 1 0 2034 6.6903959959745407e-03 -1 -2 2035 + -4.8789530992507935e-03 + + 6.0042357444763184e-01 3.2932278513908386e-01 + 5.2452367544174194e-01 + <_> + + 0 1 2036 -6.8537332117557526e-03 -1 -2 2037 + 9.9893810693174601e-04 + + 2.5659140944480896e-01 4.6154940128326416e-01 + 5.9424322843551636e-01 + <_> + + 0 1 2038 -1.3354700058698654e-04 -1 -2 2039 + 1.0165109997615218e-03 + + 5.4873758554458618e-01 4.5783591270446777e-01 + 5.4269278049468994e-01 + <_> + + 1 0 2040 9.1216771397739649e-04 -1 -2 2041 + 1.0080259526148438e-03 + + 3.9394611120223999e-01 4.0497899055480957e-01 + 5.5207037925720215e-01 + <_> + + 1 0 2042 -1.3102490629535168e-04 -1 -2 2043 + 5.5228749988600612e-04 + + 4.8790889978408813e-01 4.8449438810348511e-01 + 5.5128258466720581e-01 + <_> + + 1 0 2044 -1.2130969844292849e-04 -1 -2 2045 + -1.5112989785848185e-05 + + 4.3679711222648621e-01 6.4259552955627441e-01 + 4.8818269371986389e-01 + <_> + + 1 0 2046 -4.0125829400494695e-04 -1 -2 2047 + -6.5766851184889674e-04 + + 5.3720992803573608e-01 5.8345532417297363e-01 + 4.8690780997276306e-01 + <_> + + 1 0 2048 6.2220421386882663e-04 -1 -2 2049 + 1.4663359615951777e-03 + + 3.8246369361877441e-01 4.8134881258010864e-01 + 6.9667392969131470e-01 + <_> + + 0 1 2050 -4.9547709524631500e-02 -1 -2 2051 + 1.3017569435760379e-03 + + 5.3927659988403320e-02 5.3374558687210083e-01 + 4.1607481241226196e-01 + <_> + + 0 1 2052 -4.4914530590176582e-03 -1 -2 2053 + 1.6592369647696614e-03 + + 5.9974372386932373e-01 3.7271851301193237e-01 + 5.1156342029571533e-01 + <_> + + 0 1 2054 6.4695458859205246e-03 -1 -2 2055 + 4.9810269847512245e-03 + + 5.2520352602005005e-01 5.2567178010940552e-01 + 3.9344060420989990e-01 + <_> + + 0 1 2056 -3.8536980748176575e-02 -1 -2 2057 + -2.8275650739669800e-01 + + 2.0619249343872070e-01 6.1883211135864258e-02 + 4.9250578880310059e-01 + <_> + + 0 1 2058 -9.0301828458905220e-03 -1 -2 2059 + -4.3866269290447235e-02 + + 3.1575900316238403e-01 2.0336820185184479e-01 + 5.1647698879241943e-01 + <_> + + 0 1 2060 -4.5701069757342339e-03 -1 -2 2061 + -2.3362410720437765e-03 + + 6.6111832857131958e-01 2.8077891469001770e-01 + 4.9628761410713196e-01 + <_> + + 0 1 2062 5.3960331715643406e-03 -1 -2 2063 + -2.6297608856111765e-03 + + 5.1463878154754639e-01 6.2844878435134888e-01 + 4.9555888772010803e-01 + <_> + + 0 1 2064 -3.8577478844672441e-03 -1 -2 2065 + 1.3963800156489015e-03 + + 1.4867480099201202e-01 4.7013381123542786e-01 + 6.3209718465805054e-01 + <_> + + 1 0 2066 -8.8699469342827797e-03 -1 -2 2067 + -7.0626288652420044e-04 + + 5.2868181467056274e-01 4.6483701467514038e-01 + 5.3332102298736572e-01 + <_> + + 0 1 2068 4.2645810171961784e-03 -1 -2 2069 + 6.1572100967168808e-02 + + 5.0848782062530518e-01 3.6296251416206360e-01 + 8.7571567296981812e-01 + <_> + + 1 0 2070 -4.5381980016827583e-03 -1 -2 2071 + -4.0877899155020714e-03 + + 4.8566961288452148e-01 4.5841160416603088e-01 + 5.4202407598495483e-01 + <_> + + 1 0 2072 6.4308601431548595e-03 -1 -2 2073 + 7.0455260574817657e-03 + + 2.7073028683662415e-01 5.0574868917465210e-01 + 7.0265239477157593e-01 + <_> + + 1 0 2074 -2.3246440105140209e-03 -1 -2 2075 + 6.0276601288933307e-05 + + 4.8272788524627686e-01 4.2472490668296814e-01 + 5.5087631940841675e-01 + <_> + + 1 0 2076 1.8084559589624405e-02 -1 -2 2077 + 8.4693520329892635e-04 + + 8.1048011779785156e-01 5.1546192169189453e-01 + 3.5143798589706421e-01 + <_> + + 1 0 2078 -2.6931039988994598e-02 -1 -2 2079 + -4.2346641421318054e-03 + + 4.8868888616561890e-01 4.6223780512809753e-01 + 5.3824782371520996e-01 + <_> + + 1 0 2080 2.6947110891342163e-02 -1 -2 2081 + 4.6446882188320160e-03 + + 6.3665962219238281e-01 5.3685069084167480e-01 + 3.7654298543930054e-01 + <_> + + 0 1 2082 -6.9577661342918873e-03 -1 -2 2083 + 8.7609712500125170e-04 + + 4.2346870899200439e-01 4.6724060177803040e-01 + 5.3506839275360107e-01 + <_> + + 1 0 2084 1.6103329835459590e-03 -1 -2 2085 + -1.2848590267822146e-03 + + 5.7327628135681152e-01 5.4817992448806763e-01 + 3.7845930457115173e-01 + <_> + + 0 1 2086 1.0243539698421955e-02 -1 -2 2087 + 2.6889349101111293e-04 + + 5.1559072732925415e-01 5.3531897068023682e-01 + 4.3871539831161499e-01 + <_> + + 0 1 2088 3.7903659977018833e-03 -1 -2 2089 + -2.9369680210947990e-02 + + 5.0320029258728027e-01 5.8735388517379761e-01 + 2.2154450416564941e-01 + <_> + + 1 0 2090 6.0743088833987713e-03 -1 -2 2091 + -1.2710720300674438e-02 + + 5.4170298576354980e-01 6.0565119981765747e-01 + 4.9851819872856140e-01 + <_> + + 0 1 2092 -5.9445449151098728e-03 -1 -2 2093 + -2.8927479870617390e-03 + + 3.3520698547363281e-01 6.9292408227920532e-01 + 4.7782200574874878e-01 + + <_> + + <_> + 2 7 16 4 -1. + <_> + 2 9 16 2 2. + <_> + + <_> + 8 4 3 14 -1. + <_> + 8 11 3 7 2. + <_> + + <_> + 13 6 1 6 -1. + <_> + 13 9 1 3 2. + <_> + + <_> + 4 2 12 8 -1. + <_> + 8 2 4 8 3. + <_> + + <_> + 6 3 1 9 -1. + <_> + 6 6 1 3 3. + <_> + + <_> + 3 7 14 9 -1. + <_> + 3 10 14 3 3. + <_> + + <_> + 4 7 4 4 -1. + <_> + 4 9 4 2 2. + <_> + + <_> + 9 4 2 16 -1. + <_> + 9 12 2 8 2. + <_> + + <_> + 1 1 18 5 -1. + <_> + 7 1 6 5 3. + <_> + + <_> + 4 5 13 8 -1. + <_> + 4 9 13 4 2. + <_> + + <_> + 1 7 16 9 -1. + <_> + 1 10 16 3 3. + <_> + + <_> + 2 0 15 4 -1. + <_> + 2 2 15 2 2. + <_> + + <_> + 7 5 6 4 -1. + <_> + 9 5 2 4 3. + <_> + + <_> + 6 3 8 9 -1. + <_> + 6 6 8 3 3. + <_> + + <_> + 8 12 3 8 -1. + <_> + 8 16 3 4 2. + <_> + + <_> + 3 16 2 2 -1. + <_> + 3 17 2 1 2. + <_> + + <_> + 14 1 6 12 -1. + <_> + 14 1 3 12 2. + <_> + + <_> + 4 4 12 6 -1. + <_> + 8 4 4 6 3. + <_> + + <_> + 0 2 6 15 -1. + <_> + 3 2 3 15 2. + <_> + + <_> + 5 4 9 6 -1. + <_> + 5 6 9 2 3. + <_> + + <_> + 13 11 6 3 -1. + <_> + 13 12 6 1 3. + <_> + + <_> + 12 12 6 4 -1. + <_> + 12 14 6 2 2. + <_> + + <_> + 1 11 6 3 -1. + <_> + 1 12 6 1 3. + <_> + + <_> + 2 5 5 8 -1. + <_> + 2 9 5 4 2. + <_> + + <_> + 5 4 10 4 -1. + <_> + 5 6 10 2 2. + <_> + + <_> + 2 4 16 12 -1. + <_> + 2 8 16 4 3. + <_> + + <_> + 4 5 12 6 -1. + <_> + 8 5 4 6 3. + <_> + + <_> + 13 7 2 9 -1. + <_> + 13 10 2 3 3. + <_> + + <_> + 5 7 2 9 -1. + <_> + 5 10 2 3 3. + <_> + + <_> + 7 1 6 8 -1. + <_> + 9 1 2 8 3. + <_> + + <_> + 12 0 4 12 -1. + <_> + 14 0 2 6 2. + <_> + 12 6 2 6 2. + <_> + + <_> + 5 8 10 2 -1. + <_> + 5 9 10 1 2. + <_> + + <_> + 5 1 6 4 -1. + <_> + 7 1 2 4 3. + <_> + + <_> + 0 3 9 12 -1. + <_> + 3 3 3 12 3. + <_> + + <_> + 9 8 3 12 -1. + <_> + 9 12 3 4 3. + <_> + + <_> + 0 5 20 15 -1. + <_> + 0 10 20 5 3. + <_> + + <_> + 2 2 6 8 -1. + <_> + 2 2 3 4 2. + <_> + 5 6 3 4 2. + <_> + + <_> + 2 1 6 2 -1. + <_> + 2 2 6 1 2. + <_> + + <_> + 10 15 6 4 -1. + <_> + 13 15 3 2 2. + <_> + 10 17 3 2 2. + <_> + + <_> + 12 14 2 6 -1. + <_> + 12 16 2 2 3. + <_> + + <_> + 5 15 4 4 -1. + <_> + 5 15 2 2 2. + <_> + 7 17 2 2 2. + <_> + + <_> + 7 18 1 2 -1. + <_> + 7 19 1 1 2. + <_> + + <_> + 4 5 12 10 -1. + <_> + 10 5 6 5 2. + <_> + 4 10 6 5 2. + <_> + + <_> + 7 4 8 12 -1. + <_> + 11 4 4 6 2. + <_> + 7 10 4 6 2. + <_> + + <_> + 9 11 2 3 -1. + <_> + 9 12 2 1 3. + <_> + + <_> + 3 3 12 12 -1. + <_> + 3 3 6 6 2. + <_> + 9 9 6 6 2. + <_> + + <_> + 15 11 5 3 -1. + <_> + 15 12 5 1 3. + <_> + + <_> + 10 18 3 2 -1. + <_> + 11 18 1 2 3. + <_> + + <_> + 0 11 5 3 -1. + <_> + 0 12 5 1 3. + <_> + + <_> + 7 18 3 2 -1. + <_> + 8 18 1 2 3. + <_> + + <_> + 2 8 16 2 -1. + <_> + 2 9 16 1 2. + <_> + + <_> + 9 6 5 12 -1. + <_> + 9 12 5 6 2. + <_> + + <_> + 6 3 8 6 -1. + <_> + 6 6 8 3 2. + <_> + + <_> + 4 7 12 2 -1. + <_> + 8 7 4 2 3. + <_> + + <_> + 10 9 6 8 -1. + <_> + 10 13 6 4 2. + <_> + + <_> + 12 5 3 10 -1. + <_> + 12 10 3 5 2. + <_> + + <_> + 4 6 3 9 -1. + <_> + 4 9 3 3 3. + <_> + + <_> + 7 4 6 4 -1. + <_> + 9 4 2 4 3. + <_> + + <_> + 12 3 8 3 -1. + <_> + 12 3 4 3 2. + <_> + + <_> + 15 0 3 6 -1. + <_> + 15 3 3 3 2. + <_> + + <_> + 2 12 10 8 -1. + <_> + 2 12 5 4 2. + <_> + 7 16 5 4 2. + <_> + + <_> + 5 5 6 8 -1. + <_> + 5 9 6 4 2. + <_> + + <_> + 12 3 8 3 -1. + <_> + 12 3 4 3 2. + <_> + + <_> + 15 0 3 6 -1. + <_> + 15 3 3 3 2. + <_> + + <_> + 0 3 8 3 -1. + <_> + 4 3 4 3 2. + <_> + + <_> + 2 1 4 4 -1. + <_> + 2 3 4 2 2. + <_> + + <_> + 10 2 3 2 -1. + <_> + 11 2 1 2 3. + <_> + + <_> + 10 3 3 1 -1. + <_> + 11 3 1 1 3. + <_> + + <_> + 7 15 3 4 -1. + <_> + 7 17 3 2 2. + <_> + + <_> + 4 13 3 6 -1. + <_> + 4 15 3 2 3. + <_> + + <_> + 10 5 1 14 -1. + <_> + 10 12 1 7 2. + <_> + + <_> + 5 4 10 6 -1. + <_> + 5 6 10 2 3. + <_> + + <_> + 5 0 6 3 -1. + <_> + 7 0 2 3 3. + <_> + + <_> + 6 0 3 5 -1. + <_> + 7 0 1 5 3. + <_> + + <_> + 7 15 6 5 -1. + <_> + 9 15 2 5 3. + <_> + + <_> + 9 10 2 6 -1. + <_> + 9 12 2 2 3. + <_> + + <_> + 8 17 3 2 -1. + <_> + 9 17 1 2 3. + <_> + + <_> + 1 12 7 6 -1. + <_> + 1 14 7 2 3. + <_> + + <_> + 9 6 3 7 -1. + <_> + 10 6 1 7 3. + <_> + + <_> + 16 3 4 9 -1. + <_> + 16 6 4 3 3. + <_> + + <_> + 8 6 3 7 -1. + <_> + 9 6 1 7 3. + <_> + + <_> + 0 5 18 8 -1. + <_> + 0 5 9 4 2. + <_> + 9 9 9 4 2. + <_> + + <_> + 13 5 2 10 -1. + <_> + 13 10 2 5 2. + <_> + + <_> + 12 10 2 6 -1. + <_> + 12 13 2 3 2. + <_> + + <_> + 7 0 3 5 -1. + <_> + 8 0 1 5 3. + <_> + + <_> + 6 5 8 6 -1. + <_> + 6 7 8 2 3. + <_> + + <_> + 10 3 6 14 -1. + <_> + 13 3 3 7 2. + <_> + 10 10 3 7 2. + <_> + + <_> + 13 5 1 8 -1. + <_> + 13 9 1 4 2. + <_> + + <_> + 4 3 6 14 -1. + <_> + 4 3 3 7 2. + <_> + 7 10 3 7 2. + <_> + + <_> + 6 5 1 8 -1. + <_> + 6 9 1 4 2. + <_> + + <_> + 8 1 1 6 -1. + <_> + 8 3 1 2 3. + <_> + + <_> + 2 0 15 2 -1. + <_> + 2 1 15 1 2. + <_> + + <_> + 0 7 20 6 -1. + <_> + 0 9 20 2 3. + <_> + + <_> + 10 10 6 8 -1. + <_> + 10 14 6 4 2. + <_> + + <_> + 7 1 3 2 -1. + <_> + 8 1 1 2 3. + <_> + + <_> + 8 1 2 2 -1. + <_> + 9 1 1 2 2. + <_> + + <_> + 4 3 12 9 -1. + <_> + 4 6 12 3 3. + <_> + + <_> + 6 5 9 5 -1. + <_> + 9 5 3 5 3. + <_> + + <_> + 5 5 9 5 -1. + <_> + 8 5 3 5 3. + <_> + + <_> + 4 6 6 12 -1. + <_> + 4 10 6 4 3. + <_> + + <_> + 13 0 6 18 -1. + <_> + 13 0 3 18 2. + <_> + + <_> + 10 8 1 12 -1. + <_> + 10 12 1 4 3. + <_> + + <_> + 3 2 6 10 -1. + <_> + 3 2 3 5 2. + <_> + 6 7 3 5 2. + <_> + + <_> + 1 2 4 6 -1. + <_> + 3 2 2 6 2. + <_> + + <_> + 9 18 3 2 -1. + <_> + 10 18 1 2 3. + <_> + + <_> + 10 18 3 2 -1. + <_> + 11 18 1 2 3. + <_> + + <_> + 2 8 2 6 -1. + <_> + 2 10 2 2 3. + <_> + + <_> + 7 5 6 6 -1. + <_> + 7 7 6 2 3. + <_> + + <_> + 7 19 6 1 -1. + <_> + 9 19 2 1 3. + <_> + + <_> + 10 18 3 2 -1. + <_> + 11 18 1 2 3. + <_> + + <_> + 8 3 3 1 -1. + <_> + 9 3 1 1 3. + <_> + + <_> + 2 2 16 2 -1. + <_> + 2 2 8 1 2. + <_> + 10 3 8 1 2. + <_> + + <_> + 8 11 5 3 -1. + <_> + 8 12 5 1 3. + <_> + + <_> + 7 13 6 3 -1. + <_> + 7 14 6 1 3. + <_> + + <_> + 0 1 6 15 -1. + <_> + 2 1 2 15 3. + <_> + + <_> + 2 12 2 3 -1. + <_> + 2 13 2 1 3. + <_> + + <_> + 16 13 1 3 -1. + <_> + 16 14 1 1 3. + <_> + + <_> + 13 7 6 4 -1. + <_> + 16 7 3 2 2. + <_> + 13 9 3 2 2. + <_> + + <_> + 7 13 3 6 -1. + <_> + 7 16 3 3 2. + <_> + + <_> + 7 5 1 14 -1. + <_> + 7 12 1 7 2. + <_> + + <_> + 15 12 2 3 -1. + <_> + 15 13 2 1 3. + <_> + + <_> + 10 5 3 14 -1. + <_> + 10 12 3 7 2. + <_> + + <_> + 6 10 2 6 -1. + <_> + 6 13 2 3 2. + <_> + + <_> + 6 5 1 8 -1. + <_> + 6 9 1 4 2. + <_> + + <_> + 13 11 2 1 -1. + <_> + 13 11 1 1 2. + <_> + + <_> + 12 1 6 10 -1. + <_> + 15 1 3 5 2. + <_> + 12 6 3 5 2. + <_> + + <_> + 3 12 2 3 -1. + <_> + 3 13 2 1 3. + <_> + + <_> + 9 18 2 1 -1. + <_> + 10 18 1 1 2. + <_> + + <_> + 1 0 17 9 -1. + <_> + 1 3 17 3 3. + <_> + + <_> + 1 2 8 8 -1. + <_> + 1 2 4 4 2. + <_> + 5 6 4 4 2. + <_> + + <_> + 9 5 6 4 -1. + <_> + 9 5 3 4 2. + <_> + + <_> + 10 9 7 10 -1. + <_> + 10 14 7 5 2. + <_> + + <_> + 5 5 6 4 -1. + <_> + 8 5 3 4 2. + <_> + + <_> + 0 7 20 6 -1. + <_> + 0 9 20 2 3. + <_> + + <_> + 6 5 9 10 -1. + <_> + 6 10 9 5 2. + <_> + + <_> + 8 4 4 12 -1. + <_> + 8 10 4 6 2. + <_> + + <_> + 6 6 8 3 -1. + <_> + 6 7 8 1 3. + <_> + + <_> + 3 13 10 6 -1. + <_> + 3 13 5 3 2. + <_> + 8 16 5 3 2. + <_> + + <_> + 15 1 4 11 -1. + <_> + 15 1 2 11 2. + <_> + + <_> + 5 7 10 10 -1. + <_> + 10 7 5 5 2. + <_> + 5 12 5 5 2. + <_> + + <_> + 1 1 4 11 -1. + <_> + 3 1 2 11 2. + <_> + + <_> + 1 5 8 12 -1. + <_> + 1 11 8 6 2. + <_> + + <_> + 13 7 6 4 -1. + <_> + 16 7 3 2 2. + <_> + 13 9 3 2 2. + <_> + + <_> + 11 10 7 4 -1. + <_> + 11 12 7 2 2. + <_> + + <_> + 0 4 20 12 -1. + <_> + 0 4 10 6 2. + <_> + 10 10 10 6 2. + <_> + + <_> + 1 5 6 15 -1. + <_> + 1 10 6 5 3. + <_> + + <_> + 11 10 3 8 -1. + <_> + 11 14 3 4 2. + <_> + + <_> + 11 12 7 6 -1. + <_> + 11 14 7 2 3. + <_> + + <_> + 9 11 2 3 -1. + <_> + 9 12 2 1 3. + <_> + + <_> + 8 13 4 3 -1. + <_> + 8 14 4 1 3. + <_> + + <_> + 3 14 14 4 -1. + <_> + 10 14 7 2 2. + <_> + 3 16 7 2 2. + <_> + + <_> + 18 7 2 4 -1. + <_> + 18 9 2 2 2. + <_> + + <_> + 3 12 6 6 -1. + <_> + 3 14 6 2 3. + <_> + + <_> + 0 4 3 6 -1. + <_> + 0 6 3 2 3. + <_> + + <_> + 9 14 3 3 -1. + <_> + 9 15 3 1 3. + <_> + + <_> + 10 7 10 4 -1. + <_> + 15 7 5 2 2. + <_> + 10 9 5 2 2. + <_> + + <_> + 7 2 6 8 -1. + <_> + 7 6 6 4 2. + <_> + + <_> + 6 3 6 2 -1. + <_> + 8 3 2 2 3. + <_> + + <_> + 10 6 3 5 -1. + <_> + 11 6 1 5 3. + <_> + + <_> + 9 0 6 19 -1. + <_> + 11 0 2 19 3. + <_> + + <_> + 3 12 1 2 -1. + <_> + 3 13 1 1 2. + <_> + + <_> + 7 14 5 3 -1. + <_> + 7 15 5 1 3. + <_> + + <_> + 2 1 18 4 -1. + <_> + 11 1 9 2 2. + <_> + 2 3 9 2 2. + <_> + + <_> + 10 5 3 8 -1. + <_> + 11 5 1 8 3. + <_> + + <_> + 0 1 18 4 -1. + <_> + 0 1 9 2 2. + <_> + 9 3 9 2 2. + <_> + + <_> + 7 5 3 8 -1. + <_> + 8 5 1 8 3. + <_> + + <_> + 9 5 2 6 -1. + <_> + 9 7 2 2 3. + <_> + + <_> + 10 8 5 2 -1. + <_> + 10 9 5 1 2. + <_> + + <_> + 2 10 15 1 -1. + <_> + 7 10 5 1 3. + <_> + + <_> + 2 7 2 6 -1. + <_> + 2 9 2 2 3. + <_> + + <_> + 9 14 3 3 -1. + <_> + 9 15 3 1 3. + <_> + + <_> + 9 7 4 10 -1. + <_> + 9 12 4 5 2. + <_> + + <_> + 0 8 8 2 -1. + <_> + 0 8 4 1 2. + <_> + 4 9 4 1 2. + <_> + + <_> + 5 9 10 8 -1. + <_> + 5 9 5 4 2. + <_> + 10 13 5 4 2. + <_> + + <_> + 9 7 2 4 -1. + <_> + 9 7 1 4 2. + <_> + + <_> + 9 6 3 4 -1. + <_> + 10 6 1 4 3. + <_> + + <_> + 8 3 2 1 -1. + <_> + 9 3 1 1 2. + <_> + + <_> + 8 6 3 4 -1. + <_> + 9 6 1 4 3. + <_> + + <_> + 12 0 4 14 -1. + <_> + 14 0 2 7 2. + <_> + 12 7 2 7 2. + <_> + + <_> + 12 5 6 9 -1. + <_> + 12 5 3 9 2. + <_> + + <_> + 0 2 6 16 -1. + <_> + 3 2 3 16 2. + <_> + + <_> + 1 12 4 2 -1. + <_> + 1 13 4 1 2. + <_> + + <_> + 7 7 6 1 -1. + <_> + 9 7 2 1 3. + <_> + + <_> + 8 3 4 9 -1. + <_> + 8 6 4 3 3. + <_> + + <_> + 12 10 4 6 -1. + <_> + 12 13 4 3 2. + <_> + + <_> + 8 1 8 16 -1. + <_> + 12 1 4 8 2. + <_> + 8 9 4 8 2. + <_> + + <_> + 4 6 3 6 -1. + <_> + 4 9 3 3 2. + <_> + + <_> + 1 3 6 2 -1. + <_> + 4 3 3 2 2. + <_> + + <_> + 9 8 3 12 -1. + <_> + 9 12 3 4 3. + <_> + + <_> + 10 9 7 10 -1. + <_> + 10 14 7 5 2. + <_> + + <_> + 3 9 7 10 -1. + <_> + 3 14 7 5 2. + <_> + + <_> + 7 5 1 14 -1. + <_> + 7 12 1 7 2. + <_> + + <_> + 13 14 1 6 -1. + <_> + 13 16 1 2 3. + <_> + + <_> + 14 12 3 6 -1. + <_> + 14 14 3 2 3. + <_> + + <_> + 6 14 1 6 -1. + <_> + 6 16 1 2 3. + <_> + + <_> + 3 12 3 6 -1. + <_> + 3 14 3 2 3. + <_> + + <_> + 8 13 5 3 -1. + <_> + 8 14 5 1 3. + <_> + + <_> + 9 14 2 3 -1. + <_> + 9 15 2 1 3. + <_> + + <_> + 5 1 10 8 -1. + <_> + 5 1 5 4 2. + <_> + 10 5 5 4 2. + <_> + + <_> + 6 4 5 4 -1. + <_> + 6 6 5 2 2. + <_> + + <_> + 1 10 18 1 -1. + <_> + 7 10 6 1 3. + <_> + + <_> + 11 10 4 3 -1. + <_> + 11 10 2 3 2. + <_> + + <_> + 5 11 6 1 -1. + <_> + 7 11 2 1 3. + <_> + + <_> + 3 13 2 3 -1. + <_> + 3 14 2 1 3. + <_> + + <_> + 12 12 3 4 -1. + <_> + 12 14 3 2 2. + <_> + + <_> + 11 10 5 6 -1. + <_> + 11 12 5 2 3. + <_> + + <_> + 0 8 16 2 -1. + <_> + 0 9 16 1 2. + <_> + + <_> + 2 1 3 4 -1. + <_> + 2 3 3 2 2. + <_> + + <_> + 9 7 3 3 -1. + <_> + 10 7 1 3 3. + <_> + + <_> + 5 6 12 6 -1. + <_> + 9 6 4 6 3. + <_> + + <_> + 8 7 3 3 -1. + <_> + 9 7 1 3 3. + <_> + + <_> + 3 6 12 6 -1. + <_> + 7 6 4 6 3. + <_> + + <_> + 10 5 6 5 -1. + <_> + 12 5 2 5 3. + <_> + + <_> + 5 7 10 2 -1. + <_> + 5 7 5 2 2. + <_> + + <_> + 4 5 6 5 -1. + <_> + 6 5 2 5 3. + <_> + + <_> + 9 3 2 10 -1. + <_> + 9 8 2 5 2. + <_> + + <_> + 3 1 16 2 -1. + <_> + 11 1 8 1 2. + <_> + 3 2 8 1 2. + <_> + + <_> + 9 9 3 2 -1. + <_> + 9 10 3 1 2. + <_> + + <_> + 1 1 16 2 -1. + <_> + 1 1 8 1 2. + <_> + 9 2 8 1 2. + <_> + + <_> + 8 14 1 3 -1. + <_> + 8 15 1 1 3. + <_> + + <_> + 4 5 12 10 -1. + <_> + 10 5 6 5 2. + <_> + 4 10 6 5 2. + <_> + + <_> + 7 13 6 6 -1. + <_> + 10 13 3 3 2. + <_> + 7 16 3 3 2. + <_> + + <_> + 8 9 3 2 -1. + <_> + 8 10 3 1 2. + <_> + + <_> + 7 2 6 4 -1. + <_> + 9 2 2 4 3. + <_> + + <_> + 6 6 9 3 -1. + <_> + 6 7 9 1 3. + <_> + + <_> + 10 7 6 1 -1. + <_> + 12 7 2 1 3. + <_> + + <_> + 0 0 18 6 -1. + <_> + 6 0 6 6 3. + <_> + + <_> + 6 10 2 6 -1. + <_> + 6 13 2 3 2. + <_> + + <_> + 11 12 3 6 -1. + <_> + 11 15 3 3 2. + <_> + + <_> + 4 4 12 12 -1. + <_> + 10 4 6 6 2. + <_> + 4 10 6 6 2. + <_> + + <_> + 1 2 3 6 -1. + <_> + 2 2 1 6 3. + <_> + + <_> + 1 5 3 7 -1. + <_> + 2 5 1 7 3. + <_> + + <_> + 4 13 12 4 -1. + <_> + 10 13 6 2 2. + <_> + 4 15 6 2 2. + <_> + + <_> + 3 3 17 12 -1. + <_> + 3 9 17 6 2. + <_> + + <_> + 3 3 14 12 -1. + <_> + 3 3 7 6 2. + <_> + 10 9 7 6 2. + <_> + + <_> + 2 11 16 9 -1. + <_> + 2 14 16 3 3. + <_> + + <_> + 9 14 3 6 -1. + <_> + 9 17 3 3 2. + <_> + + <_> + 8 14 4 6 -1. + <_> + 10 14 2 3 2. + <_> + 8 17 2 3 2. + <_> + + <_> + 6 2 6 1 -1. + <_> + 8 2 2 1 3. + <_> + + <_> + 9 5 2 5 -1. + <_> + 10 5 1 5 2. + <_> + + <_> + 9 8 3 5 -1. + <_> + 10 8 1 5 3. + <_> + + <_> + 9 12 6 1 -1. + <_> + 9 12 3 1 2. + <_> + + <_> + 8 8 3 5 -1. + <_> + 9 8 1 5 3. + <_> + + <_> + 6 10 4 3 -1. + <_> + 8 10 2 3 2. + <_> + + <_> + 0 4 20 6 -1. + <_> + 0 6 20 2 3. + <_> + + <_> + 1 3 8 6 -1. + <_> + 1 3 4 3 2. + <_> + 5 6 4 3 2. + <_> + + <_> + 7 15 6 4 -1. + <_> + 7 17 6 2 2. + <_> + + <_> + 3 10 14 10 -1. + <_> + 3 15 14 5 2. + <_> + + <_> + 6 4 4 4 -1. + <_> + 8 4 2 4 2. + <_> + + <_> + 0 4 20 10 -1. + <_> + 0 9 20 5 2. + <_> + + <_> + 9 4 2 14 -1. + <_> + 9 11 2 7 2. + <_> + + <_> + 2 0 16 4 -1. + <_> + 2 2 16 2 2. + <_> + + <_> + 4 12 6 8 -1. + <_> + 4 12 3 4 2. + <_> + 7 16 3 4 2. + <_> + + <_> + 0 5 6 7 -1. + <_> + 3 5 3 7 2. + <_> + + <_> + 10 7 10 4 -1. + <_> + 15 7 5 2 2. + <_> + 10 9 5 2 2. + <_> + + <_> + 5 8 12 1 -1. + <_> + 9 8 4 1 3. + <_> + + <_> + 9 9 2 2 -1. + <_> + 9 10 2 1 2. + <_> + + <_> + 9 4 2 4 -1. + <_> + 9 6 2 2 2. + <_> + + <_> + 9 6 3 6 -1. + <_> + 10 6 1 6 3. + <_> + + <_> + 12 7 6 4 -1. + <_> + 15 7 3 2 2. + <_> + 12 9 3 2 2. + <_> + + <_> + 8 6 3 6 -1. + <_> + 9 6 1 6 3. + <_> + + <_> + 1 6 18 6 -1. + <_> + 1 6 9 3 2. + <_> + 10 9 9 3 2. + <_> + + <_> + 9 1 3 3 -1. + <_> + 10 1 1 3 3. + <_> + + <_> + 10 8 5 2 -1. + <_> + 10 9 5 1 2. + <_> + + <_> + 8 1 3 3 -1. + <_> + 9 1 1 3 3. + <_> + + <_> + 5 8 5 2 -1. + <_> + 5 9 5 1 2. + <_> + + <_> + 8 6 8 8 -1. + <_> + 12 6 4 4 2. + <_> + 8 10 4 4 2. + <_> + + <_> + 5 7 10 2 -1. + <_> + 5 7 5 2 2. + <_> + + <_> + 4 5 12 10 -1. + <_> + 4 5 6 5 2. + <_> + 10 10 6 5 2. + <_> + + <_> + 5 5 2 3 -1. + <_> + 5 6 2 1 3. + <_> + + <_> + 7 14 6 3 -1. + <_> + 7 15 6 1 3. + <_> + + <_> + 9 14 3 3 -1. + <_> + 9 15 3 1 3. + <_> + + <_> + 8 14 3 3 -1. + <_> + 8 15 3 1 3. + <_> + + <_> + 1 10 8 9 -1. + <_> + 1 13 8 3 3. + <_> + + <_> + 9 7 2 3 -1. + <_> + 9 8 2 1 3. + <_> + + <_> + 12 3 3 3 -1. + <_> + 13 3 1 3 3. + <_> + + <_> + 5 3 3 3 -1. + <_> + 6 3 1 3 3. + <_> + + <_> + 5 6 2 12 -1. + <_> + 5 10 2 4 3. + <_> + + <_> + 1 11 18 4 -1. + <_> + 10 11 9 2 2. + <_> + 1 13 9 2 2. + <_> + + <_> + 7 12 6 2 -1. + <_> + 7 13 6 1 2. + <_> + + <_> + 6 0 3 6 -1. + <_> + 7 0 1 6 3. + <_> + + <_> + 0 11 18 4 -1. + <_> + 0 11 9 2 2. + <_> + 9 13 9 2 2. + <_> + + <_> + 7 12 6 2 -1. + <_> + 7 13 6 1 2. + <_> + + <_> + 9 12 3 3 -1. + <_> + 9 13 3 1 3. + <_> + + <_> + 9 12 2 3 -1. + <_> + 9 13 2 1 3. + <_> + + <_> + 8 11 4 3 -1. + <_> + 8 12 4 1 3. + <_> + + <_> + 13 3 4 2 -1. + <_> + 13 4 4 1 2. + <_> + + <_> + 4 0 12 2 -1. + <_> + 4 1 12 1 2. + <_> + + <_> + 6 9 8 8 -1. + <_> + 6 9 4 4 2. + <_> + 10 13 4 4 2. + <_> + + <_> + 1 11 6 2 -1. + <_> + 1 12 6 1 2. + <_> + + <_> + 2 5 18 8 -1. + <_> + 11 5 9 4 2. + <_> + 2 9 9 4 2. + <_> + + <_> + 7 1 6 10 -1. + <_> + 7 6 6 5 2. + <_> + + <_> + 0 3 3 6 -1. + <_> + 0 5 3 2 3. + <_> + + <_> + 4 5 4 3 -1. + <_> + 4 6 4 1 3. + <_> + + <_> + 19 3 1 6 -1. + <_> + 19 5 1 2 3. + <_> + + <_> + 6 15 8 2 -1. + <_> + 6 16 8 1 2. + <_> + + <_> + 0 3 1 6 -1. + <_> + 0 5 1 2 3. + <_> + + <_> + 5 5 3 3 -1. + <_> + 5 6 3 1 3. + <_> + + <_> + 8 8 4 3 -1. + <_> + 8 9 4 1 3. + <_> + + <_> + 10 6 6 3 -1. + <_> + 12 6 2 3 3. + <_> + + <_> + 8 13 2 6 -1. + <_> + 8 16 2 3 2. + <_> + + <_> + 9 11 2 8 -1. + <_> + 9 15 2 4 2. + <_> + + <_> + 10 6 6 3 -1. + <_> + 12 6 2 3 3. + <_> + + <_> + 5 15 15 5 -1. + <_> + 10 15 5 5 3. + <_> + + <_> + 2 14 2 2 -1. + <_> + 2 15 2 1 2. + <_> + + <_> + 4 7 6 2 -1. + <_> + 6 7 2 2 3. + <_> + + <_> + 8 3 6 1 -1. + <_> + 10 3 2 1 3. + <_> + + <_> + 1 0 18 12 -1. + <_> + 7 0 6 12 3. + <_> + + <_> + 0 14 8 6 -1. + <_> + 4 14 4 6 2. + <_> + + <_> + 0 15 15 5 -1. + <_> + 5 15 5 5 3. + <_> + + <_> + 8 3 6 1 -1. + <_> + 10 3 2 1 3. + <_> + + <_> + 11 11 3 6 -1. + <_> + 11 14 3 3 2. + <_> + + <_> + 6 3 6 1 -1. + <_> + 8 3 2 1 3. + <_> + + <_> + 6 11 3 6 -1. + <_> + 6 14 3 3 2. + <_> + + <_> + 9 6 3 4 -1. + <_> + 10 6 1 4 3. + <_> + + <_> + 12 10 4 7 -1. + <_> + 12 10 2 7 2. + <_> + + <_> + 8 6 3 4 -1. + <_> + 9 6 1 4 3. + <_> + + <_> + 4 6 4 7 -1. + <_> + 6 6 2 7 2. + <_> + + <_> + 10 3 4 12 -1. + <_> + 10 3 2 12 2. + <_> + + <_> + 10 8 3 4 -1. + <_> + 11 8 1 4 3. + <_> + + <_> + 1 0 18 14 -1. + <_> + 7 0 6 14 3. + <_> + + <_> + 2 8 6 11 -1. + <_> + 5 8 3 11 2. + <_> + + <_> + 1 4 15 4 -1. + <_> + 1 6 15 2 2. + <_> + + <_> + 5 5 10 8 -1. + <_> + 5 9 10 4 2. + <_> + + <_> + 14 2 6 8 -1. + <_> + 14 2 3 8 2. + <_> + + <_> + 11 6 6 14 -1. + <_> + 14 6 3 7 2. + <_> + 11 13 3 7 2. + <_> + + <_> + 9 5 2 12 -1. + <_> + 9 11 2 6 2. + <_> + + <_> + 3 7 4 6 -1. + <_> + 3 9 4 2 3. + <_> + + <_> + 14 3 6 6 -1. + <_> + 14 3 3 6 2. + <_> + + <_> + 15 2 4 4 -1. + <_> + 15 4 4 2 2. + <_> + + <_> + 0 2 6 7 -1. + <_> + 3 2 3 7 2. + <_> + + <_> + 3 6 6 14 -1. + <_> + 3 6 3 7 2. + <_> + 6 13 3 7 2. + <_> + + <_> + 4 6 16 8 -1. + <_> + 4 10 16 4 2. + <_> + + <_> + 10 12 2 8 -1. + <_> + 10 16 2 4 2. + <_> + + <_> + 7 0 6 20 -1. + <_> + 9 0 2 20 3. + <_> + + <_> + 1 7 16 12 -1. + <_> + 1 7 8 6 2. + <_> + 9 13 8 6 2. + <_> + + <_> + 9 11 3 3 -1. + <_> + 9 12 3 1 3. + <_> + + <_> + 11 9 4 5 -1. + <_> + 11 9 2 5 2. + <_> + + <_> + 3 3 1 2 -1. + <_> + 3 4 1 1 2. + <_> + + <_> + 7 17 5 3 -1. + <_> + 7 18 5 1 3. + <_> + + <_> + 8 12 4 8 -1. + <_> + 10 12 2 4 2. + <_> + 8 16 2 4 2. + <_> + + <_> + 7 4 10 12 -1. + <_> + 12 4 5 6 2. + <_> + 7 10 5 6 2. + <_> + + <_> + 8 14 4 3 -1. + <_> + 8 15 4 1 3. + <_> + + <_> + 5 9 4 5 -1. + <_> + 7 9 2 5 2. + <_> + + <_> + 9 9 8 2 -1. + <_> + 9 9 4 2 2. + <_> + + <_> + 14 15 5 2 -1. + <_> + 14 16 5 1 2. + <_> + + <_> + 9 14 2 3 -1. + <_> + 9 15 2 1 3. + <_> + + <_> + 1 7 8 4 -1. + <_> + 1 7 4 2 2. + <_> + 5 9 4 2 2. + <_> + + <_> + 19 3 1 2 -1. + <_> + 19 4 1 1 2. + <_> + + <_> + 9 12 2 3 -1. + <_> + 9 13 2 1 3. + <_> + + <_> + 3 14 14 4 -1. + <_> + 3 14 7 2 2. + <_> + 10 16 7 2 2. + <_> + + <_> + 5 0 10 2 -1. + <_> + 5 1 10 1 2. + <_> + + <_> + 11 14 4 6 -1. + <_> + 11 16 4 2 3. + <_> + + <_> + 7 14 6 3 -1. + <_> + 7 15 6 1 3. + <_> + + <_> + 7 13 6 6 -1. + <_> + 7 13 3 3 2. + <_> + 10 16 3 3 2. + <_> + + <_> + 0 2 1 6 -1. + <_> + 0 4 1 2 3. + <_> + + <_> + 6 7 8 2 -1. + <_> + 6 8 8 1 2. + <_> + + <_> + 9 7 6 1 -1. + <_> + 9 7 3 1 2. + <_> + + <_> + 7 1 6 10 -1. + <_> + 7 6 6 5 2. + <_> + + <_> + 0 2 6 2 -1. + <_> + 0 3 6 1 2. + <_> + + <_> + 11 4 2 4 -1. + <_> + 11 4 1 4 2. + <_> + + <_> + 11 10 3 6 -1. + <_> + 11 13 3 3 2. + <_> + + <_> + 3 9 8 2 -1. + <_> + 7 9 4 2 2. + <_> + + <_> + 0 0 4 6 -1. + <_> + 2 0 2 6 2. + <_> + + <_> + 7 0 6 2 -1. + <_> + 9 0 2 2 3. + <_> + + <_> + 9 15 2 3 -1. + <_> + 9 16 2 1 3. + <_> + + <_> + 3 12 1 2 -1. + <_> + 3 13 1 1 2. + <_> + + <_> + 4 5 11 3 -1. + <_> + 4 6 11 1 3. + <_> + + <_> + 11 4 2 4 -1. + <_> + 11 4 1 4 2. + <_> + + <_> + 8 3 6 3 -1. + <_> + 10 3 2 3 3. + <_> + + <_> + 7 4 2 4 -1. + <_> + 8 4 1 4 2. + <_> + + <_> + 6 3 6 3 -1. + <_> + 8 3 2 3 3. + <_> + + <_> + 11 4 4 3 -1. + <_> + 11 5 4 1 3. + <_> + + <_> + 11 8 2 8 -1. + <_> + 11 12 2 4 2. + <_> + + <_> + 8 7 3 5 -1. + <_> + 9 7 1 5 3. + <_> + + <_> + 9 7 2 5 -1. + <_> + 10 7 1 5 2. + <_> + + <_> + 14 11 1 6 -1. + <_> + 14 13 1 2 3. + <_> + + <_> + 8 8 4 3 -1. + <_> + 8 9 4 1 3. + <_> + + <_> + 0 3 2 2 -1. + <_> + 0 4 2 1 2. + <_> + + <_> + 4 14 5 6 -1. + <_> + 4 16 5 2 3. + <_> + + <_> + 11 4 4 3 -1. + <_> + 11 5 4 1 3. + <_> + + <_> + 12 4 3 3 -1. + <_> + 12 5 3 1 3. + <_> + + <_> + 5 4 4 3 -1. + <_> + 5 5 4 1 3. + <_> + + <_> + 5 15 4 2 -1. + <_> + 7 15 2 2 2. + <_> + + <_> + 15 1 5 9 -1. + <_> + 15 4 5 3 3. + <_> + + <_> + 9 10 3 3 -1. + <_> + 9 11 3 1 3. + <_> + + <_> + 1 6 2 6 -1. + <_> + 1 8 2 2 3. + <_> + + <_> + 2 4 8 15 -1. + <_> + 2 9 8 5 3. + <_> + + <_> + 9 12 3 2 -1. + <_> + 9 13 3 1 2. + <_> + + <_> + 9 12 3 3 -1. + <_> + 9 13 3 1 3. + <_> + + <_> + 7 6 3 5 -1. + <_> + 8 6 1 5 3. + <_> + + <_> + 5 3 6 2 -1. + <_> + 7 3 2 2 3. + <_> + + <_> + 6 1 8 10 -1. + <_> + 10 1 4 5 2. + <_> + 6 6 4 5 2. + <_> + + <_> + 0 0 20 10 -1. + <_> + 10 0 10 5 2. + <_> + 0 5 10 5 2. + <_> + + <_> + 6 3 3 1 -1. + <_> + 7 3 1 1 3. + <_> + + <_> + 0 2 6 8 -1. + <_> + 2 2 2 8 3. + <_> + + <_> + 11 10 3 4 -1. + <_> + 11 12 3 2 2. + <_> + + <_> + 12 6 3 8 -1. + <_> + 12 10 3 4 2. + <_> + + <_> + 6 10 3 4 -1. + <_> + 6 12 3 2 2. + <_> + + <_> + 5 6 3 8 -1. + <_> + 5 10 3 4 2. + <_> + + <_> + 2 6 18 6 -1. + <_> + 11 6 9 3 2. + <_> + 2 9 9 3 2. + <_> + + <_> + 7 14 7 3 -1. + <_> + 7 15 7 1 3. + <_> + + <_> + 0 0 2 12 -1. + <_> + 1 0 1 12 2. + <_> + + <_> + 1 2 18 16 -1. + <_> + 1 10 18 8 2. + <_> + + <_> + 9 13 5 3 -1. + <_> + 9 14 5 1 3. + <_> + + <_> + 8 13 4 3 -1. + <_> + 8 14 4 1 3. + <_> + + <_> + 0 6 18 6 -1. + <_> + 0 6 9 3 2. + <_> + 9 9 9 3 2. + <_> + + <_> + 7 13 6 3 -1. + <_> + 7 14 6 1 3. + <_> + + <_> + 17 4 1 3 -1. + <_> + 17 5 1 1 3. + <_> + + <_> + 12 11 1 9 -1. + <_> + 12 14 1 3 3. + <_> + + <_> + 2 4 1 3 -1. + <_> + 2 5 1 1 3. + <_> + + <_> + 5 4 2 3 -1. + <_> + 5 5 2 1 3. + <_> + + <_> + 1 2 18 3 -1. + <_> + 7 2 6 3 3. + <_> + + <_> + 0 1 20 6 -1. + <_> + 0 3 20 2 3. + <_> + + <_> + 7 5 6 3 -1. + <_> + 9 5 2 3 3. + <_> + + <_> + 13 7 6 4 -1. + <_> + 16 7 3 2 2. + <_> + 13 9 3 2 2. + <_> + + <_> + 3 1 4 10 -1. + <_> + 3 1 2 5 2. + <_> + 5 6 2 5 2. + <_> + + <_> + 0 4 19 10 -1. + <_> + 0 9 19 5 2. + <_> + + <_> + 9 8 3 12 -1. + <_> + 9 12 3 4 3. + <_> + + <_> + 11 18 5 2 -1. + <_> + 11 19 5 1 2. + <_> + + <_> + 5 16 6 4 -1. + <_> + 5 16 3 2 2. + <_> + 8 18 3 2 2. + <_> + + <_> + 5 18 3 2 -1. + <_> + 5 19 3 1 2. + <_> + + <_> + 13 11 3 2 -1. + <_> + 13 12 3 1 2. + <_> + + <_> + 8 5 8 4 -1. + <_> + 8 5 4 4 2. + <_> + + <_> + 1 2 18 6 -1. + <_> + 1 2 9 3 2. + <_> + 10 5 9 3 2. + <_> + + <_> + 3 5 14 6 -1. + <_> + 3 7 14 2 3. + <_> + + <_> + 18 1 2 6 -1. + <_> + 18 3 2 2 3. + <_> + + <_> + 9 11 6 1 -1. + <_> + 11 11 2 1 3. + <_> + + <_> + 0 2 6 11 -1. + <_> + 3 2 3 11 2. + <_> + + <_> + 4 12 2 3 -1. + <_> + 4 13 2 1 3. + <_> + + <_> + 6 12 9 2 -1. + <_> + 9 12 3 2 3. + <_> + + <_> + 9 4 6 15 -1. + <_> + 9 4 3 15 2. + <_> + + <_> + 5 11 6 1 -1. + <_> + 7 11 2 1 3. + <_> + + <_> + 5 4 6 15 -1. + <_> + 8 4 3 15 2. + <_> + + <_> + 14 12 6 7 -1. + <_> + 14 12 3 7 2. + <_> + + <_> + 18 3 2 9 -1. + <_> + 18 6 2 3 3. + <_> + + <_> + 8 1 3 1 -1. + <_> + 9 1 1 1 3. + <_> + + <_> + 0 12 6 7 -1. + <_> + 3 12 3 7 2. + <_> + + <_> + 13 7 6 4 -1. + <_> + 16 7 3 2 2. + <_> + 13 9 3 2 2. + <_> + + <_> + 8 0 10 2 -1. + <_> + 8 1 10 1 2. + <_> + + <_> + 1 7 6 4 -1. + <_> + 1 7 3 2 2. + <_> + 4 9 3 2 2. + <_> + + <_> + 1 2 3 3 -1. + <_> + 1 3 3 1 3. + <_> + + <_> + 9 13 4 3 -1. + <_> + 9 14 4 1 3. + <_> + + <_> + 12 13 7 2 -1. + <_> + 12 14 7 1 2. + <_> + + <_> + 5 12 9 2 -1. + <_> + 8 12 3 2 3. + <_> + + <_> + 6 10 4 8 -1. + <_> + 6 14 4 4 2. + <_> + + <_> + 1 0 18 4 -1. + <_> + 7 0 6 4 3. + <_> + + <_> + 12 0 5 2 -1. + <_> + 12 1 5 1 2. + <_> + + <_> + 7 7 1 12 -1. + <_> + 7 13 1 6 2. + <_> + + <_> + 6 2 3 4 -1. + <_> + 7 2 1 4 3. + <_> + + <_> + 0 13 20 6 -1. + <_> + 0 15 20 2 3. + <_> + + <_> + 8 5 12 2 -1. + <_> + 14 5 6 1 2. + <_> + 8 6 6 1 2. + <_> + + <_> + 8 14 2 3 -1. + <_> + 8 15 2 1 3. + <_> + + <_> + 8 14 4 3 -1. + <_> + 8 15 4 1 3. + <_> + + <_> + 12 13 7 6 -1. + <_> + 12 15 7 2 3. + <_> + + <_> + 6 0 8 12 -1. + <_> + 10 0 4 6 2. + <_> + 6 6 4 6 2. + <_> + + <_> + 0 15 9 4 -1. + <_> + 0 17 9 2 2. + <_> + + <_> + 9 0 2 5 -1. + <_> + 10 0 1 5 2. + <_> + + <_> + 9 5 2 6 -1. + <_> + 9 5 1 6 2. + <_> + + <_> + 17 2 3 6 -1. + <_> + 17 4 3 2 3. + <_> + + <_> + 3 11 2 3 -1. + <_> + 3 12 2 1 3. + <_> + + <_> + 7 13 3 3 -1. + <_> + 7 14 3 1 3. + <_> + + <_> + 14 12 5 3 -1. + <_> + 14 13 5 1 3. + <_> + + <_> + 4 8 14 3 -1. + <_> + 4 9 14 1 3. + <_> + + <_> + 1 12 5 3 -1. + <_> + 1 13 5 1 3. + <_> + + <_> + 1 15 12 2 -1. + <_> + 1 15 6 1 2. + <_> + 7 16 6 1 2. + <_> + + <_> + 12 11 4 2 -1. + <_> + 12 12 4 1 2. + <_> + + <_> + 9 8 3 5 -1. + <_> + 10 8 1 5 3. + <_> + + <_> + 9 5 2 6 -1. + <_> + 10 5 1 6 2. + <_> + + <_> + 0 2 3 6 -1. + <_> + 0 4 3 2 3. + <_> + + <_> + 12 11 4 2 -1. + <_> + 12 12 4 1 2. + <_> + + <_> + 9 7 3 5 -1. + <_> + 10 7 1 5 3. + <_> + + <_> + 4 11 4 2 -1. + <_> + 4 12 4 1 2. + <_> + + <_> + 8 8 3 5 -1. + <_> + 9 8 1 5 3. + <_> + + <_> + 9 3 3 1 -1. + <_> + 10 3 1 1 3. + <_> + + <_> + 16 5 3 8 -1. + <_> + 17 5 1 8 3. + <_> + + <_> + 8 3 3 1 -1. + <_> + 9 3 1 1 3. + <_> + + <_> + 1 5 3 8 -1. + <_> + 2 5 1 8 3. + <_> + + <_> + 10 1 3 3 -1. + <_> + 11 1 1 3 3. + <_> + + <_> + 17 5 2 4 -1. + <_> + 17 5 1 4 2. + <_> + + <_> + 2 8 14 3 -1. + <_> + 2 9 14 1 3. + <_> + + <_> + 9 7 1 3 -1. + <_> + 9 8 1 1 3. + <_> + + <_> + 6 1 8 10 -1. + <_> + 6 6 8 5 2. + <_> + + <_> + 13 0 6 8 -1. + <_> + 16 0 3 4 2. + <_> + 13 4 3 4 2. + <_> + + <_> + 1 5 2 4 -1. + <_> + 2 5 1 4 2. + <_> + + <_> + 4 2 12 2 -1. + <_> + 4 3 12 1 2. + <_> + + <_> + 8 8 4 4 -1. + <_> + 8 10 4 2 2. + <_> + + <_> + 5 6 12 4 -1. + <_> + 9 6 4 4 3. + <_> + + <_> + 1 2 8 1 -1. + <_> + 5 2 4 1 2. + <_> + + <_> + 1 1 6 10 -1. + <_> + 3 1 2 10 3. + <_> + + <_> + 8 6 8 2 -1. + <_> + 8 6 4 2 2. + <_> + + <_> + 10 7 6 6 -1. + <_> + 12 7 2 6 3. + <_> + + <_> + 4 6 8 2 -1. + <_> + 8 6 4 2 2. + <_> + + <_> + 4 7 6 6 -1. + <_> + 6 7 2 6 3. + <_> + + <_> + 3 14 16 4 -1. + <_> + 3 16 16 2 2. + <_> + + <_> + 8 12 4 2 -1. + <_> + 8 13 4 1 2. + <_> + + <_> + 8 12 3 3 -1. + <_> + 8 13 3 1 3. + <_> + + <_> + 5 12 6 1 -1. + <_> + 8 12 3 1 2. + <_> + + <_> + 18 10 2 3 -1. + <_> + 18 11 2 1 3. + <_> + + <_> + 16 8 4 6 -1. + <_> + 16 10 4 2 3. + <_> + + <_> + 8 3 2 1 -1. + <_> + 9 3 1 1 2. + <_> + + <_> + 7 1 3 9 -1. + <_> + 8 1 1 9 3. + <_> + + <_> + 5 11 11 6 -1. + <_> + 5 14 11 3 2. + <_> + + <_> + 12 2 3 14 -1. + <_> + 12 9 3 7 2. + <_> + + <_> + 8 7 3 3 -1. + <_> + 9 7 1 3 3. + <_> + + <_> + 3 5 12 5 -1. + <_> + 7 5 4 5 3. + <_> + + <_> + 1 2 6 3 -1. + <_> + 4 2 3 3 2. + <_> + + <_> + 5 5 6 10 -1. + <_> + 5 5 3 5 2. + <_> + 8 10 3 5 2. + <_> + + <_> + 16 18 2 2 -1. + <_> + 16 18 1 2 2. + <_> + + <_> + 16 18 2 2 -1. + <_> + 16 18 1 2 2. + <_> + + <_> + 8 4 2 5 -1. + <_> + 9 4 1 5 2. + <_> + + <_> + 8 4 1 4 -1. + <_> + 8 6 1 2 2. + <_> + + <_> + 7 15 12 4 -1. + <_> + 13 15 6 2 2. + <_> + 7 17 6 2 2. + <_> + + <_> + 11 18 6 2 -1. + <_> + 11 19 6 1 2. + <_> + + <_> + 7 7 4 10 -1. + <_> + 7 12 4 5 2. + <_> + + <_> + 5 6 10 8 -1. + <_> + 5 10 10 4 2. + <_> + + <_> + 11 1 6 12 -1. + <_> + 14 1 3 6 2. + <_> + 11 7 3 6 2. + <_> + + <_> + 5 8 12 1 -1. + <_> + 9 8 4 1 3. + <_> + + <_> + 4 7 3 6 -1. + <_> + 4 9 3 2 3. + <_> + + <_> + 4 11 3 4 -1. + <_> + 4 13 3 2 2. + <_> + + <_> + 14 16 2 2 -1. + <_> + 14 17 2 1 2. + <_> + + <_> + 15 15 2 2 -1. + <_> + 15 16 2 1 2. + <_> + + <_> + 7 12 6 2 -1. + <_> + 7 13 6 1 2. + <_> + + <_> + 8 13 4 2 -1. + <_> + 8 14 4 1 2. + <_> + + <_> + 11 1 6 12 -1. + <_> + 14 1 3 6 2. + <_> + 11 7 3 6 2. + <_> + + <_> + 12 2 4 2 -1. + <_> + 12 3 4 1 2. + <_> + + <_> + 3 10 12 6 -1. + <_> + 3 10 6 3 2. + <_> + 9 13 6 3 2. + <_> + + <_> + 3 1 6 12 -1. + <_> + 3 1 3 6 2. + <_> + 6 7 3 6 2. + <_> + + <_> + 16 6 4 14 -1. + <_> + 18 6 2 7 2. + <_> + 16 13 2 7 2. + <_> + + <_> + 5 1 10 8 -1. + <_> + 10 1 5 4 2. + <_> + 5 5 5 4 2. + <_> + + <_> + 0 6 4 14 -1. + <_> + 0 6 2 7 2. + <_> + 2 13 2 7 2. + <_> + + <_> + 1 15 12 4 -1. + <_> + 1 15 6 2 2. + <_> + 7 17 6 2 2. + <_> + + <_> + 10 17 3 3 -1. + <_> + 11 17 1 3 3. + <_> + + <_> + 11 2 2 6 -1. + <_> + 12 2 1 3 2. + <_> + 11 5 1 3 2. + <_> + + <_> + 7 17 3 3 -1. + <_> + 8 17 1 3 3. + <_> + + <_> + 8 15 4 3 -1. + <_> + 8 16 4 1 3. + <_> + + <_> + 10 15 4 2 -1. + <_> + 12 15 2 1 2. + <_> + 10 16 2 1 2. + <_> + + <_> + 13 13 4 3 -1. + <_> + 13 14 4 1 3. + <_> + + <_> + 3 13 4 3 -1. + <_> + 3 14 4 1 3. + <_> + + <_> + 7 2 2 6 -1. + <_> + 7 2 1 3 2. + <_> + 8 5 1 3 2. + <_> + + <_> + 2 1 16 3 -1. + <_> + 2 2 16 1 3. + <_> + + <_> + 10 15 4 2 -1. + <_> + 12 15 2 1 2. + <_> + 10 16 2 1 2. + <_> + + <_> + 6 15 4 2 -1. + <_> + 6 15 2 1 2. + <_> + 8 16 2 1 2. + <_> + + <_> + 3 0 13 3 -1. + <_> + 3 1 13 1 3. + <_> + + <_> + 0 9 20 3 -1. + <_> + 0 10 20 1 3. + <_> + + <_> + 6 7 9 2 -1. + <_> + 6 8 9 1 2. + <_> + + <_> + 8 14 3 6 -1. + <_> + 9 14 1 6 3. + <_> + + <_> + 9 10 2 2 -1. + <_> + 9 11 2 1 2. + <_> + + <_> + 9 7 2 5 -1. + <_> + 9 7 1 5 2. + <_> + + <_> + 5 6 10 3 -1. + <_> + 5 6 5 3 2. + <_> + + <_> + 9 7 2 5 -1. + <_> + 10 7 1 5 2. + <_> + + <_> + 5 6 10 3 -1. + <_> + 10 6 5 3 2. + <_> + + <_> + 13 9 2 2 -1. + <_> + 13 9 1 2 2. + <_> + + <_> + 4 3 12 11 -1. + <_> + 8 3 4 11 3. + <_> + + <_> + 7 1 2 7 -1. + <_> + 8 1 1 7 2. + <_> + + <_> + 7 4 3 8 -1. + <_> + 8 4 1 8 3. + <_> + + <_> + 13 9 2 2 -1. + <_> + 13 9 1 2 2. + <_> + + <_> + 11 6 2 2 -1. + <_> + 12 6 1 1 2. + <_> + 11 7 1 1 2. + <_> + + <_> + 5 4 2 3 -1. + <_> + 5 5 2 1 3. + <_> + + <_> + 6 5 1 3 -1. + <_> + 6 6 1 1 3. + <_> + + <_> + 13 9 2 2 -1. + <_> + 13 9 1 2 2. + <_> + + <_> + 16 14 3 3 -1. + <_> + 16 15 3 1 3. + <_> + + <_> + 5 9 2 2 -1. + <_> + 6 9 1 2 2. + <_> + + <_> + 1 14 3 3 -1. + <_> + 1 15 3 1 3. + <_> + + <_> + 13 1 1 6 -1. + <_> + 13 3 1 2 3. + <_> + + <_> + 13 3 7 2 -1. + <_> + 13 4 7 1 2. + <_> + + <_> + 0 6 20 14 -1. + <_> + 0 13 20 7 2. + <_> + + <_> + 0 4 3 6 -1. + <_> + 0 6 3 2 3. + <_> + + <_> + 10 1 9 6 -1. + <_> + 10 3 9 2 3. + <_> + + <_> + 8 0 12 5 -1. + <_> + 8 0 6 5 2. + <_> + + <_> + 0 0 18 5 -1. + <_> + 6 0 6 5 3. + <_> + + <_> + 1 1 9 6 -1. + <_> + 1 3 9 2 3. + <_> + + <_> + 15 15 2 2 -1. + <_> + 15 16 2 1 2. + <_> + + <_> + 13 16 3 4 -1. + <_> + 13 18 3 2 2. + <_> + + <_> + 3 15 2 2 -1. + <_> + 3 16 2 1 2. + <_> + + <_> + 4 16 3 4 -1. + <_> + 4 18 3 2 2. + <_> + + <_> + 11 14 1 3 -1. + <_> + 11 15 1 1 3. + <_> + + <_> + 9 13 5 3 -1. + <_> + 9 14 5 1 3. + <_> + + <_> + 0 0 3 6 -1. + <_> + 0 2 3 2 3. + <_> + + <_> + 4 1 6 3 -1. + <_> + 6 1 2 3 3. + <_> + + <_> + 9 13 4 3 -1. + <_> + 9 14 4 1 3. + <_> + + <_> + 8 15 5 3 -1. + <_> + 8 16 5 1 3. + <_> + + <_> + 8 3 3 2 -1. + <_> + 9 3 1 2 3. + <_> + + <_> + 1 8 18 2 -1. + <_> + 1 9 18 1 2. + <_> + + <_> + 11 14 1 3 -1. + <_> + 11 15 1 1 3. + <_> + + <_> + 8 13 6 3 -1. + <_> + 8 14 6 1 3. + <_> + + <_> + 8 14 1 3 -1. + <_> + 8 15 1 1 3. + <_> + + <_> + 4 13 12 4 -1. + <_> + 4 13 6 2 2. + <_> + 10 15 6 2 2. + <_> + + <_> + 10 7 2 2 -1. + <_> + 10 7 1 2 2. + <_> + + <_> + 13 4 2 8 -1. + <_> + 14 4 1 4 2. + <_> + 13 8 1 4 2. + <_> + + <_> + 0 5 4 6 -1. + <_> + 0 7 4 2 3. + <_> + + <_> + 8 7 2 2 -1. + <_> + 9 7 1 2 2. + <_> + + <_> + 13 0 3 7 -1. + <_> + 14 0 1 7 3. + <_> + + <_> + 11 2 2 14 -1. + <_> + 11 2 1 14 2. + <_> + + <_> + 4 0 3 7 -1. + <_> + 5 0 1 7 3. + <_> + + <_> + 5 5 8 12 -1. + <_> + 5 5 4 6 2. + <_> + 9 11 4 6 2. + <_> + + <_> + 11 4 6 3 -1. + <_> + 11 5 6 1 3. + <_> + + <_> + 12 3 4 3 -1. + <_> + 12 4 4 1 3. + <_> + + <_> + 5 5 10 12 -1. + <_> + 5 5 5 6 2. + <_> + 10 11 5 6 2. + <_> + + <_> + 3 6 12 3 -1. + <_> + 9 6 6 3 2. + <_> + + <_> + 9 6 2 7 -1. + <_> + 9 6 1 7 2. + <_> + + <_> + 9 5 2 4 -1. + <_> + 9 5 1 4 2. + <_> + + <_> + 8 7 3 3 -1. + <_> + 9 7 1 3 3. + <_> + + <_> + 5 1 6 4 -1. + <_> + 7 1 2 4 3. + <_> + + <_> + 13 16 7 3 -1. + <_> + 13 17 7 1 3. + <_> + + <_> + 12 4 3 3 -1. + <_> + 12 5 3 1 3. + <_> + + <_> + 0 16 7 3 -1. + <_> + 0 17 7 1 3. + <_> + + <_> + 5 4 3 3 -1. + <_> + 5 5 3 1 3. + <_> + + <_> + 12 9 8 10 -1. + <_> + 12 9 4 10 2. + <_> + + <_> + 8 10 12 5 -1. + <_> + 12 10 4 5 3. + <_> + + <_> + 0 9 8 10 -1. + <_> + 4 9 4 10 2. + <_> + + <_> + 0 10 12 5 -1. + <_> + 4 10 4 5 3. + <_> + + <_> + 2 3 6 2 -1. + <_> + 5 3 3 2 2. + <_> + + <_> + 0 0 17 9 -1. + <_> + 0 3 17 3 3. + <_> + + <_> + 4 7 12 2 -1. + <_> + 8 7 4 2 3. + <_> + + <_> + 10 4 6 4 -1. + <_> + 12 4 2 4 3. + <_> + + <_> + 0 10 20 4 -1. + <_> + 0 12 20 2 2. + <_> + + <_> + 4 3 6 5 -1. + <_> + 6 3 2 5 3. + <_> + + <_> + 1 1 18 4 -1. + <_> + 7 1 6 4 3. + <_> + + <_> + 13 9 2 3 -1. + <_> + 13 9 1 3 2. + <_> + + <_> + 6 15 7 4 -1. + <_> + 6 17 7 2 2. + <_> + + <_> + 3 17 4 2 -1. + <_> + 3 18 4 1 2. + <_> + + <_> + 9 4 8 10 -1. + <_> + 9 9 8 5 2. + <_> + + <_> + 9 17 3 2 -1. + <_> + 10 17 1 2 3. + <_> + + <_> + 8 2 4 8 -1. + <_> + 8 6 4 4 2. + <_> + + <_> + 3 4 14 12 -1. + <_> + 3 4 7 6 2. + <_> + 10 10 7 6 2. + <_> + + <_> + 7 7 6 4 -1. + <_> + 9 7 2 4 3. + <_> + + <_> + 6 7 9 4 -1. + <_> + 6 9 9 2 2. + <_> + + <_> + 2 10 3 3 -1. + <_> + 2 11 3 1 3. + <_> + + <_> + 4 6 2 9 -1. + <_> + 4 9 2 3 3. + <_> + + <_> + 9 11 3 3 -1. + <_> + 9 12 3 1 3. + <_> + + <_> + 3 1 15 2 -1. + <_> + 3 2 15 1 2. + <_> + + <_> + 9 8 2 3 -1. + <_> + 9 9 2 1 3. + <_> + + <_> + 9 6 2 5 -1. + <_> + 10 6 1 5 2. + <_> + + <_> + 9 7 2 3 -1. + <_> + 9 8 2 1 3. + <_> + + <_> + 4 10 12 10 -1. + <_> + 4 15 12 5 2. + <_> + + <_> + 0 10 4 2 -1. + <_> + 0 11 4 1 2. + <_> + + <_> + 5 15 9 2 -1. + <_> + 5 16 9 1 2. + <_> + + <_> + 8 14 6 3 -1. + <_> + 8 15 6 1 3. + <_> + + <_> + 8 16 4 3 -1. + <_> + 8 17 4 1 3. + <_> + + <_> + 8 9 4 2 -1. + <_> + 8 10 4 1 2. + <_> + + <_> + 3 3 14 2 -1. + <_> + 3 4 14 1 2. + <_> + + <_> + 11 12 1 2 -1. + <_> + 11 13 1 1 2. + <_> + + <_> + 4 12 12 1 -1. + <_> + 8 12 4 1 3. + <_> + + <_> + 0 2 1 2 -1. + <_> + 0 3 1 1 2. + <_> + + <_> + 7 4 4 6 -1. + <_> + 9 4 2 6 2. + <_> + + <_> + 0 2 20 14 -1. + <_> + 10 2 10 7 2. + <_> + 0 9 10 7 2. + <_> + + <_> + 14 6 1 3 -1. + <_> + 14 7 1 1 3. + <_> + + <_> + 0 4 20 12 -1. + <_> + 0 4 10 6 2. + <_> + 10 10 10 6 2. + <_> + + <_> + 8 12 1 2 -1. + <_> + 8 13 1 1 2. + <_> + + <_> + 9 18 3 2 -1. + <_> + 10 18 1 2 3. + <_> + + <_> + 9 17 6 2 -1. + <_> + 11 17 2 2 3. + <_> + + <_> + 5 6 2 3 -1. + <_> + 5 7 2 1 3. + <_> + + <_> + 5 4 3 3 -1. + <_> + 5 5 3 1 3. + <_> + + <_> + 14 15 3 2 -1. + <_> + 14 16 3 1 2. + <_> + + <_> + 11 3 3 4 -1. + <_> + 12 3 1 4 3. + <_> + + <_> + 3 15 3 2 -1. + <_> + 3 16 3 1 2. + <_> + + <_> + 9 12 2 3 -1. + <_> + 9 13 2 1 3. + <_> + + <_> + 9 13 3 7 -1. + <_> + 10 13 1 7 3. + <_> + + <_> + 12 12 5 3 -1. + <_> + 12 13 5 1 3. + <_> + + <_> + 8 18 3 2 -1. + <_> + 9 18 1 2 3. + <_> + + <_> + 4 7 12 4 -1. + <_> + 4 7 6 2 2. + <_> + 10 9 6 2 2. + <_> + + <_> + 6 19 14 1 -1. + <_> + 6 19 7 1 2. + <_> + + <_> + 16 14 3 2 -1. + <_> + 16 15 3 1 2. + <_> + + <_> + 1 0 6 10 -1. + <_> + 1 0 3 5 2. + <_> + 4 5 3 5 2. + <_> + + <_> + 1 0 4 10 -1. + <_> + 1 0 2 5 2. + <_> + 3 5 2 5 2. + <_> + + <_> + 15 3 5 6 -1. + <_> + 15 5 5 2 3. + <_> + + <_> + 9 5 2 15 -1. + <_> + 9 10 2 5 3. + <_> + + <_> + 0 3 5 6 -1. + <_> + 0 5 5 2 3. + <_> + + <_> + 6 0 3 2 -1. + <_> + 7 0 1 2 3. + <_> + + <_> + 12 8 8 2 -1. + <_> + 16 8 4 1 2. + <_> + 12 9 4 1 2. + <_> + + <_> + 5 8 12 1 -1. + <_> + 9 8 4 1 3. + <_> + + <_> + 3 13 3 3 -1. + <_> + 3 14 3 1 3. + <_> + + <_> + 5 13 3 2 -1. + <_> + 5 14 3 1 2. + <_> + + <_> + 9 15 3 3 -1. + <_> + 9 16 3 1 3. + <_> + + <_> + 7 15 7 3 -1. + <_> + 7 16 7 1 3. + <_> + + <_> + 3 14 11 6 -1. + <_> + 3 16 11 2 3. + <_> + + <_> + 0 19 14 1 -1. + <_> + 7 19 7 1 2. + <_> + + <_> + 9 17 6 2 -1. + <_> + 11 17 2 2 3. + <_> + + <_> + 12 11 6 2 -1. + <_> + 14 11 2 2 3. + <_> + + <_> + 5 17 6 2 -1. + <_> + 7 17 2 2 3. + <_> + + <_> + 0 1 9 10 -1. + <_> + 3 1 3 10 3. + <_> + + <_> + 10 1 3 3 -1. + <_> + 11 1 1 3 3. + <_> + + <_> + 9 5 6 4 -1. + <_> + 9 5 3 4 2. + <_> + + <_> + 7 1 3 3 -1. + <_> + 8 1 1 3 3. + <_> + + <_> + 0 4 4 11 -1. + <_> + 2 4 2 11 2. + <_> + + <_> + 9 5 6 4 -1. + <_> + 9 5 3 4 2. + <_> + + <_> + 6 0 8 10 -1. + <_> + 10 0 4 5 2. + <_> + 6 5 4 5 2. + <_> + + <_> + 6 6 5 14 -1. + <_> + 6 13 5 7 2. + <_> + + <_> + 8 5 4 14 -1. + <_> + 8 12 4 7 2. + <_> + + <_> + 7 7 6 5 -1. + <_> + 9 7 2 5 3. + <_> + + <_> + 9 3 3 9 -1. + <_> + 9 6 3 3 3. + <_> + + <_> + 8 1 3 3 -1. + <_> + 9 1 1 3 3. + <_> + + <_> + 9 6 2 4 -1. + <_> + 10 6 1 4 2. + <_> + + <_> + 10 8 6 9 -1. + <_> + 10 8 3 9 2. + <_> + + <_> + 16 4 3 8 -1. + <_> + 17 4 1 8 3. + <_> + + <_> + 5 9 10 6 -1. + <_> + 5 9 5 3 2. + <_> + 10 12 5 3 2. + <_> + + <_> + 5 5 6 4 -1. + <_> + 8 5 3 4 2. + <_> + + <_> + 9 8 4 2 -1. + <_> + 9 9 4 1 2. + <_> + + <_> + 11 7 2 2 -1. + <_> + 11 7 1 2 2. + <_> + + <_> + 8 12 4 8 -1. + <_> + 8 12 2 4 2. + <_> + 10 16 2 4 2. + <_> + + <_> + 0 1 4 9 -1. + <_> + 0 4 4 3 3. + <_> + + <_> + 9 10 3 3 -1. + <_> + 9 11 3 1 3. + <_> + + <_> + 8 11 4 2 -1. + <_> + 8 12 4 1 2. + <_> + + <_> + 7 8 4 2 -1. + <_> + 7 9 4 1 2. + <_> + + <_> + 7 8 6 1 -1. + <_> + 9 8 2 1 3. + <_> + + <_> + 16 0 4 9 -1. + <_> + 16 0 2 9 2. + <_> + + <_> + 16 0 3 6 -1. + <_> + 16 3 3 3 2. + <_> + + <_> + 0 0 4 9 -1. + <_> + 2 0 2 9 2. + <_> + + <_> + 1 0 3 6 -1. + <_> + 1 3 3 3 2. + <_> + + <_> + 9 7 6 9 -1. + <_> + 11 7 2 9 3. + <_> + + <_> + 10 6 3 6 -1. + <_> + 11 6 1 6 3. + <_> + + <_> + 1 2 18 2 -1. + <_> + 1 2 9 1 2. + <_> + 10 3 9 1 2. + <_> + + <_> + 5 8 6 8 -1. + <_> + 7 8 2 8 3. + <_> + + <_> + 9 0 6 16 -1. + <_> + 11 0 2 16 3. + <_> + + <_> + 14 1 6 18 -1. + <_> + 17 1 3 9 2. + <_> + 14 10 3 9 2. + <_> + + <_> + 2 9 2 3 -1. + <_> + 2 10 2 1 3. + <_> + + <_> + 0 1 6 18 -1. + <_> + 0 1 3 9 2. + <_> + 3 10 3 9 2. + <_> + + <_> + 11 8 4 12 -1. + <_> + 11 8 2 12 2. + <_> + + <_> + 2 1 18 18 -1. + <_> + 2 10 18 9 2. + <_> + + <_> + 6 3 3 1 -1. + <_> + 7 3 1 1 3. + <_> + + <_> + 4 12 2 2 -1. + <_> + 4 13 2 1 2. + <_> + + <_> + 8 13 5 3 -1. + <_> + 8 14 5 1 3. + <_> + + <_> + 8 14 4 3 -1. + <_> + 8 15 4 1 3. + <_> + + <_> + 3 12 5 3 -1. + <_> + 3 13 5 1 3. + <_> + + <_> + 6 3 3 4 -1. + <_> + 7 3 1 4 3. + <_> + + <_> + 11 10 2 2 -1. + <_> + 12 10 1 1 2. + <_> + 11 11 1 1 2. + <_> + + <_> + 5 8 12 1 -1. + <_> + 9 8 4 1 3. + <_> + + <_> + 8 4 4 8 -1. + <_> + 10 4 2 8 2. + <_> + + <_> + 6 6 8 5 -1. + <_> + 10 6 4 5 2. + <_> + + <_> + 10 4 6 4 -1. + <_> + 12 4 2 4 3. + <_> + + <_> + 12 7 2 2 -1. + <_> + 13 7 1 1 2. + <_> + 12 8 1 1 2. + <_> + + <_> + 3 5 10 8 -1. + <_> + 3 9 10 4 2. + <_> + + <_> + 7 1 2 12 -1. + <_> + 7 7 2 6 2. + <_> + + <_> + 12 7 2 2 -1. + <_> + 13 7 1 1 2. + <_> + 12 8 1 1 2. + <_> + + <_> + 11 13 1 6 -1. + <_> + 11 16 1 3 2. + <_> + + <_> + 5 1 6 15 -1. + <_> + 7 1 2 15 3. + <_> + + <_> + 6 7 2 2 -1. + <_> + 6 7 1 1 2. + <_> + 7 8 1 1 2. + <_> + + <_> + 17 5 2 2 -1. + <_> + 17 6 2 1 2. + <_> + + <_> + 10 3 4 10 -1. + <_> + 12 3 2 5 2. + <_> + 10 8 2 5 2. + <_> + + <_> + 1 5 2 2 -1. + <_> + 1 6 2 1 2. + <_> + + <_> + 7 10 2 2 -1. + <_> + 7 10 1 1 2. + <_> + 8 11 1 1 2. + <_> + + <_> + 3 12 14 4 -1. + <_> + 10 12 7 2 2. + <_> + 3 14 7 2 2. + <_> + + <_> + 9 15 3 2 -1. + <_> + 9 16 3 1 2. + <_> + + <_> + 1 13 3 3 -1. + <_> + 1 14 3 1 3. + <_> + + <_> + 0 3 1 2 -1. + <_> + 0 4 1 1 2. + <_> + + <_> + 7 7 6 1 -1. + <_> + 9 7 2 1 3. + <_> + + <_> + 0 4 16 6 -1. + <_> + 0 6 16 2 3. + <_> + + <_> + 9 3 2 14 -1. + <_> + 9 10 2 7 2. + <_> + + <_> + 12 0 4 3 -1. + <_> + 12 0 2 3 2. + <_> + + <_> + 4 18 12 2 -1. + <_> + 8 18 4 2 3. + <_> + + <_> + 4 10 12 4 -1. + <_> + 8 10 4 4 3. + <_> + + <_> + 9 9 2 2 -1. + <_> + 9 10 2 1 2. + <_> + + <_> + 14 1 2 8 -1. + <_> + 15 1 1 4 2. + <_> + 14 5 1 4 2. + <_> + + <_> + 3 4 9 1 -1. + <_> + 6 4 3 1 3. + <_> + + <_> + 3 3 4 2 -1. + <_> + 3 4 4 1 2. + <_> + + <_> + 11 15 2 4 -1. + <_> + 11 17 2 2 2. + <_> + + <_> + 14 13 2 6 -1. + <_> + 14 15 2 2 3. + <_> + + <_> + 6 6 1 6 -1. + <_> + 6 9 1 3 2. + <_> + + <_> + 6 10 8 8 -1. + <_> + 6 14 8 4 2. + <_> + + <_> + 8 13 4 3 -1. + <_> + 8 14 4 1 3. + <_> + + <_> + 10 11 4 8 -1. + <_> + 10 15 4 4 2. + <_> + + <_> + 5 11 6 1 -1. + <_> + 7 11 2 1 3. + <_> + + <_> + 5 4 6 10 -1. + <_> + 8 4 3 10 2. + <_> + + <_> + 14 2 6 3 -1. + <_> + 14 3 6 1 3. + <_> + + <_> + 9 12 3 2 -1. + <_> + 9 13 3 1 2. + <_> + + <_> + 8 1 4 6 -1. + <_> + 8 3 4 2 3. + <_> + + <_> + 3 5 13 8 -1. + <_> + 3 9 13 4 2. + <_> + + <_> + 12 5 5 3 -1. + <_> + 12 6 5 1 3. + <_> + + <_> + 5 14 15 6 -1. + <_> + 5 16 15 2 3. + <_> + + <_> + 3 5 5 3 -1. + <_> + 3 6 5 1 3. + <_> + + <_> + 9 14 2 6 -1. + <_> + 9 14 1 3 2. + <_> + 10 17 1 3 2. + <_> + + <_> + 9 12 3 2 -1. + <_> + 9 13 3 1 2. + <_> + + <_> + 9 13 3 2 -1. + <_> + 9 14 3 1 2. + <_> + + <_> + 0 2 6 3 -1. + <_> + 0 3 6 1 3. + <_> + + <_> + 0 1 9 11 -1. + <_> + 3 1 3 11 3. + <_> + + <_> + 8 13 4 6 -1. + <_> + 10 13 2 3 2. + <_> + 8 16 2 3 2. + <_> + + <_> + 7 13 6 3 -1. + <_> + 7 14 6 1 3. + <_> + + <_> + 3 12 14 4 -1. + <_> + 3 12 7 2 2. + <_> + 10 14 7 2 2. + <_> + + <_> + 7 14 1 4 -1. + <_> + 7 16 1 2 2. + <_> + + <_> + 8 13 4 6 -1. + <_> + 10 13 2 3 2. + <_> + 8 16 2 3 2. + <_> + + <_> + 10 14 1 3 -1. + <_> + 10 15 1 1 3. + <_> + + <_> + 8 13 4 6 -1. + <_> + 8 13 2 3 2. + <_> + 10 16 2 3 2. + <_> + + <_> + 9 14 1 3 -1. + <_> + 9 15 1 1 3. + <_> + + <_> + 10 15 2 3 -1. + <_> + 10 16 2 1 3. + <_> + + <_> + 11 16 1 2 -1. + <_> + 11 17 1 1 2. + <_> + + <_> + 9 0 2 2 -1. + <_> + 9 1 2 1 2. + <_> + + <_> + 0 1 5 8 -1. + <_> + 0 5 5 4 2. + <_> + + <_> + 10 14 2 3 -1. + <_> + 10 15 2 1 3. + <_> + + <_> + 10 13 2 3 -1. + <_> + 10 14 2 1 3. + <_> + + <_> + 0 3 16 6 -1. + <_> + 0 6 16 3 2. + <_> + + <_> + 4 1 2 2 -1. + <_> + 5 1 1 2 2. + <_> + + <_> + 9 7 2 3 -1. + <_> + 9 8 2 1 3. + <_> + + <_> + 10 8 2 12 -1. + <_> + 10 12 2 4 3. + <_> + + <_> + 9 7 2 2 -1. + <_> + 10 7 1 2 2. + <_> + + <_> + 5 0 6 8 -1. + <_> + 7 0 2 8 3. + <_> + + <_> + 9 7 3 6 -1. + <_> + 10 7 1 6 3. + <_> + + <_> + 8 12 10 8 -1. + <_> + 8 16 10 4 2. + <_> + + <_> + 8 7 3 6 -1. + <_> + 9 7 1 6 3. + <_> + + <_> + 4 7 12 2 -1. + <_> + 10 7 6 2 2. + <_> + + <_> + 8 6 8 3 -1. + <_> + 8 6 4 3 2. + <_> + + <_> + 16 15 3 3 -1. + <_> + 16 16 3 1 3. + <_> + + <_> + 4 6 12 3 -1. + <_> + 10 6 6 3 2. + <_> + + <_> + 7 8 3 5 -1. + <_> + 8 8 1 5 3. + <_> + + <_> + 0 10 20 2 -1. + <_> + 10 10 10 1 2. + <_> + 0 11 10 1 2. + <_> + + <_> + 11 16 9 4 -1. + <_> + 14 16 3 4 3. + <_> + + <_> + 0 5 3 4 -1. + <_> + 1 5 1 4 3. + <_> + + <_> + 8 15 4 2 -1. + <_> + 8 15 2 1 2. + <_> + 10 16 2 1 2. + <_> + + <_> + 1 8 19 3 -1. + <_> + 1 9 19 1 3. + <_> + + <_> + 15 16 3 3 -1. + <_> + 15 17 3 1 3. + <_> + + <_> + 0 4 20 10 -1. + <_> + 0 4 10 5 2. + <_> + 10 9 10 5 2. + <_> + + <_> + 2 14 7 6 -1. + <_> + 2 16 7 2 3. + <_> + + <_> + 8 6 6 6 -1. + <_> + 10 6 2 6 3. + <_> + + <_> + 16 4 4 6 -1. + <_> + 16 6 4 2 3. + <_> + + <_> + 7 13 6 3 -1. + <_> + 7 14 6 1 3. + <_> + + <_> + 7 13 4 3 -1. + <_> + 7 14 4 1 3. + <_> + + <_> + 13 13 6 2 -1. + <_> + 13 14 6 1 2. + <_> + + <_> + 14 12 2 3 -1. + <_> + 14 13 2 1 3. + <_> + + <_> + 1 13 6 2 -1. + <_> + 1 14 6 1 2. + <_> + + <_> + 4 12 2 3 -1. + <_> + 4 13 2 1 3. + <_> + + <_> + 17 4 3 5 -1. + <_> + 18 4 1 5 3. + <_> + + <_> + 5 5 14 8 -1. + <_> + 12 5 7 4 2. + <_> + 5 9 7 4 2. + <_> + + <_> + 6 8 6 5 -1. + <_> + 8 8 2 5 3. + <_> + + <_> + 0 4 4 6 -1. + <_> + 0 6 4 2 3. + <_> + + <_> + 9 1 3 6 -1. + <_> + 10 1 1 6 3. + <_> + + <_> + 10 4 6 3 -1. + <_> + 10 5 6 1 3. + <_> + + <_> + 8 1 3 6 -1. + <_> + 9 1 1 6 3. + <_> + + <_> + 4 4 6 3 -1. + <_> + 4 5 6 1 3. + <_> + + <_> + 12 4 3 3 -1. + <_> + 12 5 3 1 3. + <_> + + <_> + 12 11 4 2 -1. + <_> + 12 12 4 1 2. + <_> + + <_> + 0 2 20 6 -1. + <_> + 0 2 10 3 2. + <_> + 10 5 10 3 2. + <_> + + <_> + 5 4 3 3 -1. + <_> + 5 5 3 1 3. + <_> + + <_> + 2 10 16 4 -1. + <_> + 10 10 8 2 2. + <_> + 2 12 8 2 2. + <_> + + <_> + 3 10 16 6 -1. + <_> + 11 10 8 3 2. + <_> + 3 13 8 3 2. + <_> + + <_> + 1 10 16 6 -1. + <_> + 1 10 8 3 2. + <_> + 9 13 8 3 2. + <_> + + <_> + 4 7 2 4 -1. + <_> + 5 7 1 4 2. + <_> + + <_> + 11 16 9 4 -1. + <_> + 14 16 3 4 3. + <_> + + <_> + 3 16 14 4 -1. + <_> + 10 16 7 2 2. + <_> + 3 18 7 2 2. + <_> + + <_> + 0 16 9 4 -1. + <_> + 3 16 3 4 3. + <_> + + <_> + 1 14 6 6 -1. + <_> + 1 14 3 3 2. + <_> + 4 17 3 3 2. + <_> + + <_> + 9 0 2 1 -1. + <_> + 9 0 1 1 2. + <_> + + <_> + 6 7 8 10 -1. + <_> + 10 7 4 5 2. + <_> + 6 12 4 5 2. + <_> + + <_> + 2 15 1 2 -1. + <_> + 2 16 1 1 2. + <_> + + <_> + 0 14 7 6 -1. + <_> + 0 16 7 2 3. + <_> + + <_> + 7 8 6 2 -1. + <_> + 7 9 6 1 2. + <_> + + <_> + 9 2 2 15 -1. + <_> + 9 7 2 5 3. + <_> + + <_> + 5 6 2 2 -1. + <_> + 5 7 2 1 2. + <_> + + <_> + 6 6 8 3 -1. + <_> + 6 7 8 1 3. + <_> + + <_> + 12 13 5 6 -1. + <_> + 12 15 5 2 3. + <_> + + <_> + 0 0 20 18 -1. + <_> + 0 9 20 9 2. + <_> + + <_> + 5 1 6 6 -1. + <_> + 7 1 2 6 3. + <_> + + <_> + 5 1 4 9 -1. + <_> + 7 1 2 9 2. + <_> + + <_> + 1 19 18 1 -1. + <_> + 7 19 6 1 3. + <_> + + <_> + 14 16 5 2 -1. + <_> + 14 17 5 1 2. + <_> + + <_> + 0 5 15 10 -1. + <_> + 0 10 15 5 2. + <_> + + <_> + 7 15 4 2 -1. + <_> + 7 15 2 1 2. + <_> + 9 16 2 1 2. + <_> + + <_> + 14 11 2 2 -1. + <_> + 14 12 2 1 2. + <_> + + <_> + 9 8 3 3 -1. + <_> + 9 9 3 1 3. + <_> + + <_> + 4 11 2 2 -1. + <_> + 4 12 2 1 2. + <_> + + <_> + 8 8 3 3 -1. + <_> + 8 9 3 1 3. + <_> + + <_> + 9 10 2 3 -1. + <_> + 9 11 2 1 3. + <_> + + <_> + 8 8 4 3 -1. + <_> + 8 9 4 1 3. + <_> + + <_> + 1 9 4 10 -1. + <_> + 1 9 2 5 2. + <_> + 3 14 2 5 2. + <_> + + <_> + 0 12 6 8 -1. + <_> + 2 12 2 8 3. + <_> + + <_> + 9 1 4 2 -1. + <_> + 11 1 2 1 2. + <_> + 9 2 2 1 2. + <_> + + <_> + 12 13 7 6 -1. + <_> + 12 15 7 2 3. + <_> + + <_> + 7 0 2 3 -1. + <_> + 7 1 2 1 3. + <_> + + <_> + 7 14 6 3 -1. + <_> + 9 14 2 3 3. + <_> + + <_> + 9 6 6 4 -1. + <_> + 11 6 2 4 3. + <_> + + <_> + 8 10 8 3 -1. + <_> + 8 10 4 3 2. + <_> + + <_> + 6 10 4 3 -1. + <_> + 8 10 2 3 2. + <_> + + <_> + 6 8 3 5 -1. + <_> + 7 8 1 5 3. + <_> + + <_> + 0 4 8 1 -1. + <_> + 4 4 4 1 2. + <_> + + <_> + 8 2 2 6 -1. + <_> + 8 2 1 3 2. + <_> + 9 5 1 3 2. + <_> + + <_> + 0 7 20 6 -1. + <_> + 0 9 20 2 3. + <_> + + <_> + 12 10 3 6 -1. + <_> + 12 13 3 3 2. + <_> + + <_> + 8 15 1 4 -1. + <_> + 8 17 1 2 2. + <_> + + <_> + 5 16 2 4 -1. + <_> + 5 18 2 2 2. + <_> + + <_> + 6 2 8 12 -1. + <_> + 6 6 8 4 3. + <_> + + <_> + 4 7 12 2 -1. + <_> + 8 7 4 2 3. + <_> + + <_> + 7 0 6 1 -1. + <_> + 9 0 2 1 3. + <_> + + <_> + 8 11 3 3 -1. + <_> + 8 12 3 1 3. + <_> + + <_> + 12 11 3 6 -1. + <_> + 12 14 3 3 2. + <_> + + <_> + 11 2 6 10 -1. + <_> + 14 2 3 5 2. + <_> + 11 7 3 5 2. + <_> + + <_> + 5 7 10 12 -1. + <_> + 5 7 5 6 2. + <_> + 10 13 5 6 2. + <_> + + <_> + 4 4 2 10 -1. + <_> + 4 9 2 5 2. + <_> + + <_> + 9 7 2 3 -1. + <_> + 9 7 1 3 2. + <_> + + <_> + 11 9 6 2 -1. + <_> + 11 9 3 2 2. + <_> + + <_> + 4 7 2 2 -1. + <_> + 5 7 1 2 2. + <_> + + <_> + 0 2 4 6 -1. + <_> + 0 4 4 2 3. + <_> + + <_> + 10 7 3 4 -1. + <_> + 11 7 1 4 3. + <_> + + <_> + 9 7 3 5 -1. + <_> + 10 7 1 5 3. + <_> + + <_> + 9 1 1 3 -1. + <_> + 9 2 1 1 3. + <_> + + <_> + 0 6 16 6 -1. + <_> + 0 6 8 3 2. + <_> + 8 9 8 3 2. + <_> + + <_> + 10 15 3 3 -1. + <_> + 10 16 3 1 3. + <_> + + <_> + 9 14 4 3 -1. + <_> + 9 15 4 1 3. + <_> + + <_> + 3 2 6 10 -1. + <_> + 3 2 3 5 2. + <_> + 6 7 3 5 2. + <_> + + <_> + 3 0 14 2 -1. + <_> + 3 1 14 1 2. + <_> + + <_> + 9 14 3 3 -1. + <_> + 9 15 3 1 3. + <_> + + <_> + 10 15 3 3 -1. + <_> + 10 16 3 1 3. + <_> + + <_> + 9 13 2 6 -1. + <_> + 9 16 2 3 2. + <_> + + <_> + 7 13 6 3 -1. + <_> + 7 14 6 1 3. + <_> + + <_> + 12 11 3 6 -1. + <_> + 12 14 3 3 2. + <_> + + <_> + 8 12 5 2 -1. + <_> + 8 13 5 1 2. + <_> + + <_> + 5 11 3 6 -1. + <_> + 5 14 3 3 2. + <_> + + <_> + 8 12 3 2 -1. + <_> + 8 13 3 1 2. + <_> + + <_> + 11 13 7 6 -1. + <_> + 11 15 7 2 3. + <_> + + <_> + 7 14 6 3 -1. + <_> + 7 15 6 1 3. + <_> + + <_> + 3 13 14 4 -1. + <_> + 3 13 7 2 2. + <_> + 10 15 7 2 2. + <_> + + <_> + 8 14 4 6 -1. + <_> + 8 14 2 3 2. + <_> + 10 17 2 3 2. + <_> + + <_> + 8 15 4 3 -1. + <_> + 8 16 4 1 3. + <_> + + <_> + 7 16 6 2 -1. + <_> + 9 16 2 2 3. + <_> + + <_> + 7 7 6 2 -1. + <_> + 7 8 6 1 2. + <_> + + <_> + 3 9 13 3 -1. + <_> + 3 10 13 1 3. + <_> + + <_> + 9 8 3 4 -1. + <_> + 9 10 3 2 2. + <_> + + <_> + 8 10 4 3 -1. + <_> + 8 11 4 1 3. + <_> + + <_> + 7 7 3 4 -1. + <_> + 8 7 1 4 3. + <_> + + <_> + 8 7 3 5 -1. + <_> + 9 7 1 5 3. + <_> + + <_> + 12 3 3 4 -1. + <_> + 13 3 1 4 3. + <_> + + <_> + 9 7 2 3 -1. + <_> + 9 7 1 3 2. + <_> + + <_> + 5 3 3 4 -1. + <_> + 6 3 1 4 3. + <_> + + <_> + 3 7 12 1 -1. + <_> + 7 7 4 1 3. + <_> + + <_> + 12 5 3 3 -1. + <_> + 12 6 3 1 3. + <_> + + <_> + 11 2 6 2 -1. + <_> + 11 3 6 1 2. + <_> + + <_> + 3 2 14 2 -1. + <_> + 3 2 7 1 2. + <_> + 10 3 7 1 2. + <_> + + <_> + 6 1 7 14 -1. + <_> + 6 8 7 7 2. + <_> + + <_> + 8 0 12 5 -1. + <_> + 8 0 6 5 2. + <_> + + <_> + 1 9 18 1 -1. + <_> + 7 9 6 1 3. + <_> + + <_> + 0 0 10 5 -1. + <_> + 5 0 5 5 2. + <_> + + <_> + 2 5 8 15 -1. + <_> + 2 10 8 5 3. + <_> + + <_> + 12 5 3 3 -1. + <_> + 12 6 3 1 3. + <_> + + <_> + 13 4 2 3 -1. + <_> + 13 5 2 1 3. + <_> + + <_> + 2 15 4 3 -1. + <_> + 2 16 4 1 3. + <_> + + <_> + 5 6 10 3 -1. + <_> + 10 6 5 3 2. + <_> + + <_> + 11 6 2 2 -1. + <_> + 12 6 1 1 2. + <_> + 11 7 1 1 2. + <_> + + <_> + 12 4 4 3 -1. + <_> + 12 5 4 1 3. + <_> + + <_> + 7 6 2 2 -1. + <_> + 7 6 1 1 2. + <_> + 8 7 1 1 2. + <_> + + <_> + 4 4 4 3 -1. + <_> + 4 5 4 1 3. + <_> + + <_> + 11 4 3 3 -1. + <_> + 12 4 1 3 3. + <_> + + <_> + 9 3 2 1 -1. + <_> + 9 3 1 1 2. + <_> + + <_> + 4 5 5 3 -1. + <_> + 4 6 5 1 3. + <_> + + <_> + 4 6 4 3 -1. + <_> + 4 7 4 1 3. + <_> + + <_> + 11 4 3 3 -1. + <_> + 12 4 1 3 3. + <_> + + <_> + 8 8 4 3 -1. + <_> + 8 9 4 1 3. + <_> + + <_> + 6 4 3 3 -1. + <_> + 7 4 1 3 3. + <_> + + <_> + 4 14 1 3 -1. + <_> + 4 15 1 1 3. + <_> + + <_> + 9 7 2 3 -1. + <_> + 9 7 1 3 2. + <_> + + <_> + 17 0 3 2 -1. + <_> + 17 1 3 1 2. + <_> + + <_> + 8 10 2 9 -1. + <_> + 8 13 2 3 3. + <_> + + <_> + 0 8 18 2 -1. + <_> + 0 9 18 1 2. + <_> + + <_> + 9 15 2 3 -1. + <_> + 9 16 2 1 3. + <_> + + <_> + 8 7 4 3 -1. + <_> + 8 8 4 1 3. + <_> + + <_> + 1 14 6 6 -1. + <_> + 1 14 3 3 2. + <_> + 4 17 3 3 2. + <_> + + <_> + 0 18 6 2 -1. + <_> + 0 19 6 1 2. + <_> + + <_> + 12 9 4 3 -1. + <_> + 12 9 2 3 2. + <_> + + <_> + 9 8 3 8 -1. + <_> + 10 8 1 8 3. + <_> + + <_> + 4 9 4 3 -1. + <_> + 6 9 2 3 2. + <_> + + <_> + 4 18 6 1 -1. + <_> + 6 18 2 1 3. + <_> + + <_> + 9 7 3 2 -1. + <_> + 10 7 1 2 3. + <_> + + <_> + 6 7 8 12 -1. + <_> + 10 7 4 6 2. + <_> + 6 13 4 6 2. + <_> + + <_> + 8 7 3 2 -1. + <_> + 9 7 1 2 3. + <_> + + <_> + 8 7 3 6 -1. + <_> + 9 7 1 6 3. + <_> + + <_> + 3 16 14 4 -1. + <_> + 10 16 7 2 2. + <_> + 3 18 7 2 2. + <_> + + <_> + 1 14 18 4 -1. + <_> + 10 14 9 2 2. + <_> + 1 16 9 2 2. + <_> + + <_> + 8 7 3 3 -1. + <_> + 8 8 3 1 3. + <_> + + <_> + 0 4 20 12 -1. + <_> + 0 4 10 6 2. + <_> + 10 10 10 6 2. + <_> + + <_> + 5 5 10 12 -1. + <_> + 10 5 5 6 2. + <_> + 5 11 5 6 2. + <_> + + <_> + 10 2 4 7 -1. + <_> + 10 2 2 7 2. + <_> + + <_> + 8 11 4 3 -1. + <_> + 8 12 4 1 3. + <_> + + <_> + 8 12 3 3 -1. + <_> + 8 13 3 1 3. + <_> + + <_> + 13 13 5 6 -1. + <_> + 13 15 5 2 3. + <_> + + <_> + 7 0 6 6 -1. + <_> + 9 0 2 6 3. + <_> + + <_> + 2 13 5 6 -1. + <_> + 2 15 5 2 3. + <_> + + <_> + 0 4 2 12 -1. + <_> + 0 4 1 6 2. + <_> + 1 10 1 6 2. + <_> + + <_> + 9 19 3 1 -1. + <_> + 10 19 1 1 3. + <_> + + <_> + 18 0 2 6 -1. + <_> + 18 2 2 2 3. + <_> + + <_> + 0 3 1 6 -1. + <_> + 0 5 1 2 3. + <_> + + <_> + 0 0 3 6 -1. + <_> + 0 2 3 2 3. + <_> + + <_> + 17 2 3 7 -1. + <_> + 18 2 1 7 3. + <_> + + <_> + 10 3 4 7 -1. + <_> + 10 3 2 7 2. + <_> + + <_> + 0 2 3 7 -1. + <_> + 1 2 1 7 3. + <_> + + <_> + 6 2 4 8 -1. + <_> + 8 2 2 8 2. + <_> + + <_> + 13 0 1 4 -1. + <_> + 13 2 1 2 2. + <_> + + <_> + 5 1 12 5 -1. + <_> + 9 1 4 5 3. + <_> + + <_> + 6 0 1 4 -1. + <_> + 6 2 1 2 2. + <_> + + <_> + 3 1 12 5 -1. + <_> + 7 1 4 5 3. + <_> + + <_> + 9 12 3 8 -1. + <_> + 10 12 1 8 3. + <_> + + <_> + 7 13 6 1 -1. + <_> + 9 13 2 1 3. + <_> + + <_> + 7 14 6 3 -1. + <_> + 7 15 6 1 3. + <_> + + <_> + 5 16 7 3 -1. + <_> + 5 17 7 1 3. + <_> + + <_> + 0 12 20 6 -1. + <_> + 0 14 20 2 3. + <_> + + <_> + 4 18 14 2 -1. + <_> + 4 19 14 1 2. + <_> + + <_> + 8 12 3 8 -1. + <_> + 9 12 1 8 3. + <_> + + <_> + 7 13 3 3 -1. + <_> + 7 14 3 1 3. + <_> + + <_> + 5 5 12 10 -1. + <_> + 11 5 6 5 2. + <_> + 5 10 6 5 2. + <_> + + <_> + 8 1 5 10 -1. + <_> + 8 6 5 5 2. + <_> + + <_> + 5 4 9 12 -1. + <_> + 5 10 9 6 2. + <_> + + <_> + 7 13 6 6 -1. + <_> + 7 15 6 2 3. + <_> + + <_> + 8 4 5 16 -1. + <_> + 8 12 5 8 2. + <_> + + <_> + 8 12 4 6 -1. + <_> + 8 15 4 3 2. + <_> + + <_> + 7 13 2 2 -1. + <_> + 7 13 1 1 2. + <_> + 8 14 1 1 2. + <_> + + <_> + 7 12 2 2 -1. + <_> + 7 12 1 1 2. + <_> + 8 13 1 1 2. + <_> + + <_> + 18 0 2 14 -1. + <_> + 18 0 1 14 2. + <_> + + <_> + 12 11 7 2 -1. + <_> + 12 12 7 1 2. + <_> + + <_> + 1 18 1 2 -1. + <_> + 1 19 1 1 2. + <_> + + <_> + 2 18 1 2 -1. + <_> + 2 19 1 1 2. + <_> + + <_> + 9 7 2 1 -1. + <_> + 9 7 1 1 2. + <_> + + <_> + 9 6 2 3 -1. + <_> + 9 6 1 3 2. + <_> + + <_> + 3 1 2 2 -1. + <_> + 4 1 1 2 2. + <_> + + <_> + 3 0 3 2 -1. + <_> + 3 1 3 1 2. + <_> + + <_> + 12 10 3 4 -1. + <_> + 12 12 3 2 2. + <_> + + <_> + 7 7 8 2 -1. + <_> + 7 8 8 1 2. + <_> + + <_> + 8 8 3 4 -1. + <_> + 8 10 3 2 2. + <_> + + <_> + 7 12 6 3 -1. + <_> + 7 13 6 1 3. + <_> + + <_> + 0 2 10 3 -1. + <_> + 5 2 5 3 2. + <_> + + <_> + 0 1 20 6 -1. + <_> + 0 3 20 2 3. + <_> + + <_> + 7 6 6 3 -1. + <_> + 9 6 2 3 3. + <_> + + <_> + 3 7 14 4 -1. + <_> + 3 9 14 2 2. + <_> + + <_> + 5 7 3 6 -1. + <_> + 5 9 3 2 3. + <_> + + <_> + 8 8 3 12 -1. + <_> + 8 12 3 4 3. + <_> + + <_> + 9 17 6 2 -1. + <_> + 12 17 3 1 2. + <_> + 9 18 3 1 2. + <_> + + <_> + 10 17 4 3 -1. + <_> + 10 18 4 1 3. + <_> + + <_> + 4 2 4 2 -1. + <_> + 4 3 4 1 2. + <_> + + <_> + 7 3 6 14 -1. + <_> + 9 3 2 14 3. + <_> + + <_> + 15 13 1 6 -1. + <_> + 15 16 1 3 2. + <_> + + <_> + 13 14 2 6 -1. + <_> + 13 16 2 2 3. + <_> + + <_> + 4 11 5 6 -1. + <_> + 4 14 5 3 2. + <_> + + <_> + 4 17 4 2 -1. + <_> + 6 17 2 2 2. + <_> + + <_> + 0 6 20 2 -1. + <_> + 0 6 10 2 2. + <_> + + <_> + 6 5 10 12 -1. + <_> + 11 5 5 6 2. + <_> + 6 11 5 6 2. + <_> + + <_> + 4 0 2 12 -1. + <_> + 4 0 1 6 2. + <_> + 5 6 1 6 2. + <_> + + <_> + 4 1 6 2 -1. + <_> + 6 1 2 2 3. + <_> + + <_> + 13 7 2 1 -1. + <_> + 13 7 1 1 2. + <_> + + <_> + 5 5 15 6 -1. + <_> + 5 7 15 2 3. + <_> + + <_> + 1 10 18 2 -1. + <_> + 1 10 9 1 2. + <_> + 10 11 9 1 2. + <_> + + <_> + 1 6 15 7 -1. + <_> + 6 6 5 7 3. + <_> + + <_> + 8 14 4 3 -1. + <_> + 8 15 4 1 3. + <_> + + <_> + 9 14 3 3 -1. + <_> + 9 15 3 1 3. + <_> + + <_> + 8 14 4 3 -1. + <_> + 8 15 4 1 3. + <_> + + <_> + 8 13 3 2 -1. + <_> + 8 14 3 1 2. + <_> + + <_> + 15 14 5 3 -1. + <_> + 15 15 5 1 3. + <_> + + <_> + 0 14 20 1 -1. + <_> + 0 14 10 1 2. + <_> + + <_> + 0 14 6 3 -1. + <_> + 0 15 6 1 3. + <_> + + <_> + 5 3 4 2 -1. + <_> + 5 4 4 1 2. + <_> + + <_> + 0 6 20 1 -1. + <_> + 0 6 10 1 2. + <_> + + <_> + 6 3 10 14 -1. + <_> + 11 3 5 7 2. + <_> + 6 10 5 7 2. + <_> + + <_> + 8 12 4 2 -1. + <_> + 8 13 4 1 2. + <_> + + <_> + 6 3 8 6 -1. + <_> + 6 3 4 3 2. + <_> + 10 6 4 3 2. + <_> + + <_> + 13 7 2 1 -1. + <_> + 13 7 1 1 2. + <_> + + <_> + 6 3 10 14 -1. + <_> + 11 3 5 7 2. + <_> + 6 10 5 7 2. + <_> + + <_> + 5 7 2 1 -1. + <_> + 6 7 1 1 2. + <_> + + <_> + 4 3 10 14 -1. + <_> + 4 3 5 7 2. + <_> + 9 10 5 7 2. + <_> + + <_> + 9 7 2 2 -1. + <_> + 9 7 1 2 2. + <_> + + <_> + 0 3 20 1 -1. + <_> + 0 3 10 1 2. + <_> + + <_> + 2 1 10 3 -1. + <_> + 2 2 10 1 3. + <_> + + <_> + 9 7 2 2 -1. + <_> + 10 7 1 2 2. + <_> + + <_> + 9 17 3 2 -1. + <_> + 10 17 1 2 3. + <_> + + <_> + 9 7 3 6 -1. + <_> + 10 7 1 6 3. + <_> + + <_> + 8 17 3 2 -1. + <_> + 9 17 1 2 3. + <_> + + <_> + 8 7 3 6 -1. + <_> + 9 7 1 6 3. + <_> + + <_> + 16 3 4 6 -1. + <_> + 16 5 4 2 3. + <_> + + <_> + 15 6 2 12 -1. + <_> + 16 6 1 6 2. + <_> + 15 12 1 6 2. + <_> + + <_> + 1 4 18 10 -1. + <_> + 1 4 9 5 2. + <_> + 10 9 9 5 2. + <_> + + <_> + 9 4 2 4 -1. + <_> + 9 6 2 2 2. + <_> + + <_> + 12 5 3 2 -1. + <_> + 12 6 3 1 2. + <_> + + <_> + 5 12 10 4 -1. + <_> + 5 14 10 2 2. + <_> + + <_> + 5 5 3 2 -1. + <_> + 5 6 3 1 2. + <_> + + <_> + 4 6 12 6 -1. + <_> + 8 6 4 6 3. + <_> + + <_> + 14 4 6 6 -1. + <_> + 14 6 6 2 3. + <_> + + <_> + 16 0 4 6 -1. + <_> + 18 0 2 3 2. + <_> + 16 3 2 3 2. + <_> + + <_> + 0 4 6 6 -1. + <_> + 0 6 6 2 3. + <_> + + <_> + 0 0 4 6 -1. + <_> + 0 0 2 3 2. + <_> + 2 3 2 3 2. + <_> + + <_> + 12 0 8 5 -1. + <_> + 12 0 4 5 2. + <_> + + <_> + 16 0 4 17 -1. + <_> + 16 0 2 17 2. + <_> + + <_> + 1 0 18 20 -1. + <_> + 7 0 6 20 3. + <_> + + <_> + 6 0 2 5 -1. + <_> + 7 0 1 5 2. + <_> + + <_> + 0 6 20 1 -1. + <_> + 0 6 10 1 2. + <_> + + <_> + 8 7 6 4 -1. + <_> + 10 7 2 4 3. + <_> + + <_> + 1 1 16 4 -1. + <_> + 1 1 8 2 2. + <_> + 9 3 8 2 2. + <_> + + <_> + 7 2 4 2 -1. + <_> + 7 2 2 1 2. + <_> + 9 3 2 1 2. + <_> + + <_> + 7 4 9 3 -1. + <_> + 7 5 9 1 3. + <_> + + <_> + 10 4 5 12 -1. + <_> + 10 10 5 6 2. + <_> + + <_> + 3 12 2 3 -1. + <_> + 3 13 2 1 3. + <_> + + <_> + 8 8 3 5 -1. + <_> + 9 8 1 5 3. + <_> + + <_> + 13 9 2 3 -1. + <_> + 13 9 1 3 2. + <_> + + <_> + 15 11 2 2 -1. + <_> + 15 12 2 1 2. + <_> + + <_> + 5 6 2 3 -1. + <_> + 5 7 2 1 3. + <_> + + <_> + 2 11 6 2 -1. + <_> + 2 12 6 1 2. + <_> + + <_> + 15 11 4 3 -1. + <_> + 15 12 4 1 3. + <_> + + <_> + 16 0 4 17 -1. + <_> + 16 0 2 17 2. + <_> + + <_> + 1 11 4 3 -1. + <_> + 1 12 4 1 3. + <_> + + <_> + 9 11 1 3 -1. + <_> + 9 12 1 1 3. + <_> + + <_> + 10 9 6 7 -1. + <_> + 10 9 3 7 2. + <_> + + <_> + 8 15 4 2 -1. + <_> + 8 16 4 1 2. + <_> + + <_> + 4 9 6 7 -1. + <_> + 7 9 3 7 2. + <_> + + <_> + 9 14 2 3 -1. + <_> + 9 15 2 1 3. + <_> + + <_> + 0 2 20 2 -1. + <_> + 10 2 10 1 2. + <_> + 0 3 10 1 2. + <_> + + <_> + 6 7 8 2 -1. + <_> + 6 8 8 1 2. + <_> + + <_> + 0 2 20 2 -1. + <_> + 0 2 10 1 2. + <_> + 10 3 10 1 2. + <_> + + <_> + 3 1 2 10 -1. + <_> + 3 1 1 5 2. + <_> + 4 6 1 5 2. + <_> + + <_> + 13 4 1 10 -1. + <_> + 13 9 1 5 2. + <_> + + <_> + 9 8 4 3 -1. + <_> + 9 9 4 1 3. + <_> + + <_> + 2 11 16 4 -1. + <_> + 2 11 8 2 2. + <_> + 10 13 8 2 2. + <_> + + <_> + 5 1 3 5 -1. + <_> + 6 1 1 5 3. + <_> + + <_> + 9 10 2 3 -1. + <_> + 9 11 2 1 3. + <_> + + <_> + 9 11 2 2 -1. + <_> + 9 12 2 1 2. + <_> + + <_> + 0 10 20 2 -1. + <_> + 0 11 20 1 2. + <_> + + <_> + 1 7 6 4 -1. + <_> + 1 7 3 2 2. + <_> + 4 9 3 2 2. + <_> + + <_> + 12 0 8 8 -1. + <_> + 16 0 4 4 2. + <_> + 12 4 4 4 2. + <_> + + <_> + 14 1 6 4 -1. + <_> + 16 1 2 4 3. + <_> + + <_> + 6 3 2 14 -1. + <_> + 6 10 2 7 2. + <_> + + <_> + 6 1 7 12 -1. + <_> + 6 7 7 6 2. + <_> + + <_> + 5 0 15 5 -1. + <_> + 10 0 5 5 3. + <_> + + <_> + 15 0 4 10 -1. + <_> + 15 0 2 10 2. + <_> + + <_> + 1 0 18 3 -1. + <_> + 7 0 6 3 3. + <_> + + <_> + 0 0 17 2 -1. + <_> + 0 1 17 1 2. + <_> + + <_> + 10 0 3 3 -1. + <_> + 11 0 1 3 3. + <_> + + <_> + 10 0 3 12 -1. + <_> + 11 0 1 12 3. + <_> + + <_> + 1 3 4 16 -1. + <_> + 1 3 2 8 2. + <_> + 3 11 2 8 2. + <_> + + <_> + 7 0 3 3 -1. + <_> + 8 0 1 3 3. + <_> + + <_> + 9 13 2 6 -1. + <_> + 9 16 2 3 2. + <_> + + <_> + 9 0 6 13 -1. + <_> + 11 0 2 13 3. + <_> + + <_> + 7 7 3 2 -1. + <_> + 8 7 1 2 3. + <_> + + <_> + 8 2 1 12 -1. + <_> + 8 6 1 4 3. + <_> + + <_> + 4 10 12 6 -1. + <_> + 10 10 6 3 2. + <_> + 4 13 6 3 2. + <_> + + <_> + 13 5 2 3 -1. + <_> + 13 6 2 1 3. + <_> + + <_> + 4 10 12 6 -1. + <_> + 4 10 6 3 2. + <_> + 10 13 6 3 2. + <_> + + <_> + 5 5 2 3 -1. + <_> + 5 6 2 1 3. + <_> + + <_> + 8 6 6 7 -1. + <_> + 10 6 2 7 3. + <_> + + <_> + 9 6 2 4 -1. + <_> + 9 6 1 4 2. + <_> + + <_> + 6 6 6 7 -1. + <_> + 8 6 2 7 3. + <_> + + <_> + 9 6 2 4 -1. + <_> + 10 6 1 4 2. + <_> + + <_> + 12 9 2 3 -1. + <_> + 12 9 1 3 2. + <_> + + <_> + 0 6 20 1 -1. + <_> + 0 6 10 1 2. + <_> + + <_> + 5 7 10 2 -1. + <_> + 10 7 5 2 2. + <_> + + <_> + 1 16 4 3 -1. + <_> + 1 17 4 1 3. + <_> + + <_> + 12 4 3 3 -1. + <_> + 12 5 3 1 3. + <_> + + <_> + 10 3 5 3 -1. + <_> + 10 4 5 1 3. + <_> + + <_> + 3 9 14 8 -1. + <_> + 3 9 7 4 2. + <_> + 10 13 7 4 2. + <_> + + <_> + 6 8 8 10 -1. + <_> + 6 8 4 5 2. + <_> + 10 13 4 5 2. + <_> + + <_> + 12 4 3 3 -1. + <_> + 12 5 3 1 3. + <_> + + <_> + 10 3 5 3 -1. + <_> + 10 4 5 1 3. + <_> + + <_> + 5 4 3 3 -1. + <_> + 5 5 3 1 3. + <_> + + <_> + 5 3 5 3 -1. + <_> + 5 4 5 1 3. + <_> + + <_> + 13 16 2 3 -1. + <_> + 13 17 2 1 3. + <_> + + <_> + 0 5 20 6 -1. + <_> + 0 7 20 2 3. + <_> + + <_> + 3 14 3 3 -1. + <_> + 3 15 3 1 3. + <_> + + <_> + 7 15 5 3 -1. + <_> + 7 16 5 1 3. + <_> + + <_> + 12 9 2 3 -1. + <_> + 12 9 1 3 2. + <_> + + <_> + 15 13 2 6 -1. + <_> + 15 13 1 6 2. + <_> + + <_> + 6 9 2 3 -1. + <_> + 7 9 1 3 2. + <_> + + <_> + 3 13 2 6 -1. + <_> + 4 13 1 6 2. + <_> + + <_> + 11 4 2 4 -1. + <_> + 11 4 1 4 2. + <_> + + <_> + 13 4 2 5 -1. + <_> + 13 4 1 5 2. + <_> + + <_> + 7 4 2 4 -1. + <_> + 8 4 1 4 2. + <_> + + <_> + 5 4 2 5 -1. + <_> + 6 4 1 5 2. + <_> + + <_> + 19 6 1 2 -1. + <_> + 19 7 1 1 2. + <_> + + <_> + 12 7 8 13 -1. + <_> + 12 7 4 13 2. + <_> + + <_> + 0 6 1 2 -1. + <_> + 0 7 1 1 2. + <_> + + <_> + 6 15 4 3 -1. + <_> + 6 16 4 1 3. + <_> + + <_> + 11 8 2 2 -1. + <_> + 11 9 2 1 2. + <_> + + <_> + 11 7 2 4 -1. + <_> + 11 7 1 4 2. + <_> + + <_> + 4 13 2 3 -1. + <_> + 4 14 2 1 3. + <_> + + <_> + 0 17 18 3 -1. + <_> + 6 17 6 3 3. + <_> + + <_> + 1 0 18 5 -1. + <_> + 7 0 6 5 3. + <_> + + <_> + 5 7 3 4 -1. + <_> + 5 9 3 2 2. + <_> + + <_> + 10 6 2 2 -1. + <_> + 10 6 1 2 2. + <_> + + <_> + 6 4 14 4 -1. + <_> + 13 4 7 2 2. + <_> + 6 6 7 2 2. + <_> + + <_> + 5 16 6 4 -1. + <_> + 5 16 3 2 2. + <_> + 8 18 3 2 2. + <_> + + <_> + 7 15 2 4 -1. + <_> + 7 17 2 2 2. + <_> + + <_> + 8 5 5 14 -1. + <_> + 8 12 5 7 2. + <_> + + <_> + 9 9 2 2 -1. + <_> + 9 10 2 1 2. + <_> + + <_> + 7 5 3 7 -1. + <_> + 8 5 1 7 3. + <_> + + <_> + 0 0 3 9 -1. + <_> + 0 3 3 3 3. + <_> + + <_> + 8 6 8 8 -1. + <_> + 12 6 4 4 2. + <_> + 8 10 4 4 2. + <_> + + <_> + 4 8 13 2 -1. + <_> + 4 9 13 1 2. + <_> + + <_> + 4 3 6 1 -1. + <_> + 6 3 2 1 3. + <_> + + <_> + 9 1 2 6 -1. + <_> + 9 3 2 2 3. + <_> + + <_> + 10 5 6 4 -1. + <_> + 12 5 2 4 3. + <_> + + <_> + 9 5 2 12 -1. + <_> + 9 9 2 4 3. + <_> + + <_> + 8 14 4 3 -1. + <_> + 8 15 4 1 3. + <_> + + <_> + 8 12 4 3 -1. + <_> + 8 13 4 1 3. + <_> + + <_> + 10 3 6 7 -1. + <_> + 12 3 2 7 3. + <_> + + <_> + 3 10 16 6 -1. + <_> + 3 12 16 2 3. + <_> + + <_> + 5 5 3 10 -1. + <_> + 5 10 3 5 2. + <_> + + <_> + 6 10 3 6 -1. + <_> + 6 13 3 3 2. + <_> + + <_> + 17 2 2 12 -1. + <_> + 17 2 1 12 2. + <_> + + <_> + 16 6 2 14 -1. + <_> + 16 13 2 7 2. + <_> + + <_> + 3 11 12 9 -1. + <_> + 3 14 12 3 3. + <_> + + <_> + 0 2 4 12 -1. + <_> + 2 2 2 12 2. + <_> + + <_> + 18 0 2 18 -1. + <_> + 18 0 1 18 2. + <_> + + <_> + 16 12 3 2 -1. + <_> + 16 13 3 1 2. + <_> + + <_> + 0 2 2 15 -1. + <_> + 1 2 1 15 2. + <_> + + <_> + 1 10 2 4 -1. + <_> + 1 12 2 2 2. + <_> + + <_> + 11 1 2 18 -1. + <_> + 11 1 1 18 2. + <_> + + <_> + 3 2 14 2 -1. + <_> + 10 2 7 1 2. + <_> + 3 3 7 1 2. + <_> + + <_> + 7 1 2 18 -1. + <_> + 8 1 1 18 2. + <_> + + <_> + 6 1 8 12 -1. + <_> + 6 7 8 6 2. + <_> + + <_> + 8 14 4 3 -1. + <_> + 8 15 4 1 3. + <_> + + <_> + 7 14 6 3 -1. + <_> + 7 15 6 1 3. + <_> + + <_> + 0 13 5 2 -1. + <_> + 0 14 5 1 2. + <_> + + <_> + 9 0 2 6 -1. + <_> + 9 0 1 3 2. + <_> + 10 3 1 3 2. + <_> + + <_> + 9 0 2 6 -1. + <_> + 10 0 1 3 2. + <_> + 9 3 1 3 2. + <_> + + <_> + 9 7 3 6 -1. + <_> + 10 7 1 6 3. + <_> + + <_> + 9 0 2 6 -1. + <_> + 9 0 1 3 2. + <_> + 10 3 1 3 2. + <_> + + <_> + 8 7 3 6 -1. + <_> + 9 7 1 6 3. + <_> + + <_> + 9 6 2 6 -1. + <_> + 9 6 1 6 2. + <_> + + <_> + 9 4 4 3 -1. + <_> + 9 4 2 3 2. + <_> + + <_> + 0 4 4 3 -1. + <_> + 0 5 4 1 3. + <_> + + <_> + 8 7 4 2 -1. + <_> + 8 8 4 1 2. + <_> + + <_> + 10 6 6 3 -1. + <_> + 12 6 2 3 3. + <_> + + <_> + 9 6 3 12 -1. + <_> + 9 10 3 4 3. + <_> + + <_> + 5 4 2 3 -1. + <_> + 5 5 2 1 3. + <_> + + <_> + 5 6 1 3 -1. + <_> + 5 7 1 1 3. + <_> + + <_> + 9 17 3 2 -1. + <_> + 10 17 1 2 3. + <_> + + <_> + 0 7 20 2 -1. + <_> + 0 8 20 1 2. + <_> + + <_> + 4 3 6 7 -1. + <_> + 6 3 2 7 3. + <_> + + <_> + 5 10 6 10 -1. + <_> + 5 10 3 5 2. + <_> + 8 15 3 5 2. + <_> + + <_> + 9 17 3 2 -1. + <_> + 10 17 1 2 3. + <_> + + <_> + 9 10 2 2 -1. + <_> + 9 11 2 1 2. + <_> + + <_> + 8 17 3 2 -1. + <_> + 9 17 1 2 3. + <_> + + <_> + 5 6 1 3 -1. + <_> + 5 7 1 1 3. + <_> + + <_> + 0 1 20 2 -1. + <_> + 10 1 10 1 2. + <_> + 0 2 10 1 2. + <_> + + <_> + 14 2 6 9 -1. + <_> + 14 5 6 3 3. + <_> + + <_> + 5 3 3 2 -1. + <_> + 5 4 3 1 2. + <_> + + <_> + 5 4 4 2 -1. + <_> + 7 4 2 2 2. + <_> + + <_> + 14 2 6 9 -1. + <_> + 14 5 6 3 3. + <_> + + <_> + 0 12 20 6 -1. + <_> + 0 14 20 2 3. + <_> + + <_> + 2 2 16 4 -1. + <_> + 2 2 8 2 2. + <_> + 10 4 8 2 2. + <_> + + <_> + 7 12 5 3 -1. + <_> + 7 13 5 1 3. + <_> + + <_> + 14 9 6 10 -1. + <_> + 14 9 3 10 2. + <_> + + <_> + 16 6 3 2 -1. + <_> + 16 7 3 1 2. + <_> + + <_> + 0 9 6 10 -1. + <_> + 3 9 3 10 2. + <_> + + <_> + 0 16 5 2 -1. + <_> + 0 17 5 1 2. + <_> + + <_> + 9 12 2 3 -1. + <_> + 9 13 2 1 3. + <_> + + <_> + 9 7 2 12 -1. + <_> + 9 11 2 4 3. + <_> + + <_> + 3 2 6 2 -1. + <_> + 5 2 2 2 3. + <_> + + <_> + 4 1 1 2 -1. + <_> + 4 2 1 1 2. + <_> + + <_> + 11 15 1 2 -1. + <_> + 11 16 1 1 2. + <_> + + <_> + 3 1 16 2 -1. + <_> + 11 1 8 1 2. + <_> + 3 2 8 1 2. + <_> + + <_> + 3 6 2 2 -1. + <_> + 3 6 1 1 2. + <_> + 4 7 1 1 2. + <_> + + <_> + 5 11 10 6 -1. + <_> + 5 11 5 3 2. + <_> + 10 14 5 3 2. + <_> + + <_> + 10 11 4 6 -1. + <_> + 10 14 4 3 2. + <_> + + <_> + 14 9 6 11 -1. + <_> + 16 9 2 11 3. + <_> + + <_> + 0 9 6 11 -1. + <_> + 2 9 2 11 3. + <_> + + <_> + 2 11 16 6 -1. + <_> + 2 11 8 3 2. + <_> + 10 14 8 3 2. + <_> + + <_> + 12 0 8 10 -1. + <_> + 16 0 4 5 2. + <_> + 12 5 4 5 2. + <_> + + <_> + 14 2 6 4 -1. + <_> + 16 2 2 4 3. + <_> + + <_> + 0 0 8 10 -1. + <_> + 0 0 4 5 2. + <_> + 4 5 4 5 2. + <_> + + <_> + 0 2 6 4 -1. + <_> + 2 2 2 4 3. + <_> + + <_> + 4 9 15 2 -1. + <_> + 9 9 5 2 3. + <_> + + <_> + 12 3 4 8 -1. + <_> + 14 3 2 4 2. + <_> + 12 7 2 4 2. + <_> + + <_> + 9 2 2 9 -1. + <_> + 10 2 1 9 2. + <_> + + <_> + 0 2 20 1 -1. + <_> + 10 2 10 1 2. + <_> + + <_> + 16 1 4 5 -1. + <_> + 16 1 2 5 2. + <_> + + <_> + 16 0 4 6 -1. + <_> + 16 3 4 3 2. + <_> + + <_> + 4 3 6 4 -1. + <_> + 6 3 2 4 3. + <_> + + <_> + 0 0 18 5 -1. + <_> + 6 0 6 5 3. + <_> + + <_> + 6 2 12 14 -1. + <_> + 12 2 6 7 2. + <_> + 6 9 6 7 2. + <_> + + <_> + 11 8 3 5 -1. + <_> + 12 8 1 5 3. + <_> + + <_> + 5 12 2 2 -1. + <_> + 5 13 2 1 2. + <_> + + <_> + 5 10 4 3 -1. + <_> + 7 10 2 3 2. + <_> + + <_> + 4 9 15 2 -1. + <_> + 9 9 5 2 3. + <_> + + <_> + 10 7 6 2 -1. + <_> + 12 7 2 2 3. + <_> + + <_> + 1 9 15 2 -1. + <_> + 6 9 5 2 3. + <_> + + <_> + 5 0 2 10 -1. + <_> + 5 0 1 5 2. + <_> + 6 5 1 5 2. + <_> + + <_> + 0 0 20 14 -1. + <_> + 0 7 20 7 2. + <_> + + <_> + 12 7 8 4 -1. + <_> + 12 7 4 4 2. + <_> + + <_> + 0 7 8 4 -1. + <_> + 4 7 4 4 2. + <_> + + <_> + 8 1 3 3 -1. + <_> + 9 1 1 3 3. + <_> + + <_> + 9 7 3 4 -1. + <_> + 10 7 1 4 3. + <_> + + <_> + 9 9 3 1 -1. + <_> + 10 9 1 1 3. + <_> + + <_> + 8 9 3 2 -1. + <_> + 8 10 3 1 2. + <_> + + <_> + 8 4 2 8 -1. + <_> + 8 4 1 4 2. + <_> + 9 8 1 4 2. + <_> + + <_> + 5 8 12 3 -1. + <_> + 5 9 12 1 3. + <_> + + <_> + 11 14 1 3 -1. + <_> + 11 15 1 1 3. + <_> + + <_> + 6 10 3 6 -1. + <_> + 6 12 3 2 3. + <_> + + <_> + 4 17 8 3 -1. + <_> + 4 18 8 1 3. + <_> + + <_> + 17 6 2 3 -1. + <_> + 17 7 2 1 3. + <_> + + <_> + 9 12 2 2 -1. + <_> + 10 12 1 1 2. + <_> + 9 13 1 1 2. + <_> + + <_> + 9 13 2 4 -1. + <_> + 9 13 1 2 2. + <_> + 10 15 1 2 2. + <_> + + <_> + 9 11 2 3 -1. + <_> + 9 12 2 1 3. + <_> + + <_> + 5 5 12 10 -1. + <_> + 11 5 6 5 2. + <_> + 5 10 6 5 2. + <_> + + <_> + 6 3 12 12 -1. + <_> + 12 3 6 6 2. + <_> + 6 9 6 6 2. + <_> + + <_> + 5 7 2 2 -1. + <_> + 5 7 1 1 2. + <_> + 6 8 1 1 2. + <_> + + <_> + 4 3 3 2 -1. + <_> + 5 3 1 2 3. + <_> + + <_> + 6 2 12 14 -1. + <_> + 12 2 6 7 2. + <_> + 6 9 6 7 2. + <_> + + <_> + 5 2 12 3 -1. + <_> + 9 2 4 3 3. + <_> + + <_> + 1 1 18 17 -1. + <_> + 7 1 6 17 3. + <_> + + <_> + 0 9 10 1 -1. + <_> + 5 9 5 1 2. + <_> + + <_> + 16 8 4 3 -1. + <_> + 16 9 4 1 3. + <_> + + <_> + 7 13 6 6 -1. + <_> + 7 16 6 3 2. + <_> + + <_> + 6 14 1 6 -1. + <_> + 6 16 1 2 3. + <_> + + <_> + 6 17 4 2 -1. + <_> + 6 18 4 1 2. + <_> + + <_> + 10 18 6 2 -1. + <_> + 13 18 3 1 2. + <_> + 10 19 3 1 2. + <_> + + <_> + 16 8 1 3 -1. + <_> + 16 9 1 1 3. + <_> + + <_> + 8 13 4 3 -1. + <_> + 8 14 4 1 3. + <_> + + <_> + 9 15 1 2 -1. + <_> + 9 16 1 1 2. + <_> + + <_> + 13 0 3 12 -1. + <_> + 14 0 1 12 3. + <_> + + <_> + 15 11 1 3 -1. + <_> + 15 12 1 1 3. + <_> + + <_> + 8 15 3 3 -1. + <_> + 8 16 3 1 3. + <_> + + <_> + 4 0 3 12 -1. + <_> + 5 0 1 12 3. + <_> + + <_> + 9 7 3 3 -1. + <_> + 10 7 1 3 3. + <_> + + <_> + 9 9 3 1 -1. + <_> + 10 9 1 1 3. + <_> + + <_> + 2 2 12 14 -1. + <_> + 2 2 6 7 2. + <_> + 8 9 6 7 2. + <_> + + <_> + 4 2 12 3 -1. + <_> + 8 2 4 3 3. + <_> + + <_> + 18 18 2 2 -1. + <_> + 18 18 1 2 2. + <_> + + <_> + 17 2 3 8 -1. + <_> + 18 2 1 8 3. + <_> + + <_> + 0 18 2 2 -1. + <_> + 1 18 1 2 2. + <_> + + <_> + 6 11 2 6 -1. + <_> + 6 14 2 3 2. + <_> + + <_> + 13 10 5 6 -1. + <_> + 13 12 5 2 3. + <_> + + <_> + 5 8 15 3 -1. + <_> + 5 9 15 1 3. + <_> + + <_> + 2 10 5 6 -1. + <_> + 2 12 5 2 3. + <_> + + <_> + 0 8 15 3 -1. + <_> + 0 9 15 1 3. + <_> + + <_> + 16 2 3 1 -1. + <_> + 17 2 1 1 3. + <_> + + <_> + 17 4 3 2 -1. + <_> + 18 4 1 2 3. + <_> + + <_> + 0 8 8 12 -1. + <_> + 0 8 4 6 2. + <_> + 4 14 4 6 2. + <_> + + <_> + 1 7 8 6 -1. + <_> + 1 7 4 3 2. + <_> + 5 10 4 3 2. + <_> + + <_> + 14 1 6 2 -1. + <_> + 16 1 2 2 3. + <_> + + <_> + 15 0 4 4 -1. + <_> + 17 0 2 2 2. + <_> + 15 2 2 2 2. + <_> + + <_> + 1 1 4 11 -1. + <_> + 3 1 2 11 2. + <_> + + <_> + 5 5 1 8 -1. + <_> + 5 9 1 4 2. + <_> + + <_> + 7 7 6 1 -1. + <_> + 9 7 2 1 3. + <_> + + <_> + 4 7 12 2 -1. + <_> + 8 7 4 2 3. + <_> + + <_> + 8 4 4 4 -1. + <_> + 8 6 4 2 2. + <_> + + <_> + 2 4 9 1 -1. + <_> + 5 4 3 1 3. + <_> + + <_> + 9 12 2 8 -1. + <_> + 9 16 2 4 2. + <_> + + <_> + 3 8 14 12 -1. + <_> + 3 14 14 6 2. + <_> + + <_> + 6 13 7 3 -1. + <_> + 6 14 7 1 3. + <_> + + <_> + 5 9 6 3 -1. + <_> + 7 9 2 3 3. + <_> + + <_> + 12 1 6 3 -1. + <_> + 12 2 6 1 3. + <_> + + <_> + 8 12 6 2 -1. + <_> + 8 13 6 1 2. + <_> + + <_> + 0 2 18 2 -1. + <_> + 0 2 9 1 2. + <_> + 9 3 9 1 2. + <_> + + <_> + 6 10 3 6 -1. + <_> + 6 13 3 3 2. + <_> + + <_> + 14 0 6 6 -1. + <_> + 14 0 3 6 2. + <_> + + <_> + 15 0 5 8 -1. + <_> + 15 4 5 4 2. + <_> + + <_> + 7 16 6 4 -1. + <_> + 9 16 2 4 3. + <_> + + <_> + 2 11 14 4 -1. + <_> + 2 11 7 2 2. + <_> + 9 13 7 2 2. + <_> + + <_> + 14 10 6 10 -1. + <_> + 14 10 3 10 2. + <_> + + <_> + 9 8 10 12 -1. + <_> + 14 8 5 6 2. + <_> + 9 14 5 6 2. + <_> + + <_> + 0 10 6 10 -1. + <_> + 3 10 3 10 2. + <_> + + <_> + 1 8 10 12 -1. + <_> + 1 8 5 6 2. + <_> + 6 14 5 6 2. + <_> + + <_> + 9 3 6 1 -1. + <_> + 11 3 2 1 3. + <_> + + <_> + 7 4 6 3 -1. + <_> + 9 4 2 3 3. + <_> + + <_> + 5 3 6 1 -1. + <_> + 7 3 2 1 3. + <_> + + <_> + 4 5 6 3 -1. + <_> + 6 5 2 3 3. + <_> + + <_> + 9 16 3 3 -1. + <_> + 9 17 3 1 3. + <_> + + <_> + 8 14 6 3 -1. + <_> + 8 15 6 1 3. + <_> + + <_> + 6 0 8 12 -1. + <_> + 6 0 4 6 2. + <_> + 10 6 4 6 2. + <_> + + <_> + 4 12 2 3 -1. + <_> + 4 13 2 1 3. + <_> + + <_> + 12 16 6 3 -1. + <_> + 12 17 6 1 3. + <_> + + <_> + 7 12 7 2 -1. + <_> + 7 13 7 1 2. + <_> + + <_> + 2 16 6 3 -1. + <_> + 2 17 6 1 3. + <_> + + <_> + 0 7 16 6 -1. + <_> + 0 10 16 3 2. + <_> + + <_> + 9 7 3 3 -1. + <_> + 10 7 1 3 3. + <_> + + <_> + 9 7 3 5 -1. + <_> + 10 7 1 5 3. + <_> + + <_> + 0 5 20 10 -1. + <_> + 0 5 10 5 2. + <_> + 10 10 10 5 2. + <_> + + <_> + 3 1 4 2 -1. + <_> + 5 1 2 2 2. + <_> + + <_> + 7 6 8 10 -1. + <_> + 11 6 4 5 2. + <_> + 7 11 4 5 2. + <_> + + <_> + 17 6 3 2 -1. + <_> + 17 7 3 1 2. + <_> + + <_> + 5 6 8 10 -1. + <_> + 5 6 4 5 2. + <_> + 9 11 4 5 2. + <_> + + <_> + 5 12 10 6 -1. + <_> + 5 14 10 2 3. + <_> + + <_> + 9 7 3 3 -1. + <_> + 10 7 1 3 3. + <_> + + <_> + 10 3 2 6 -1. + <_> + 11 3 1 3 2. + <_> + 10 6 1 3 2. + <_> + + <_> + 0 4 3 3 -1. + <_> + 0 5 3 1 3. + <_> + + <_> + 3 16 8 4 -1. + <_> + 3 16 4 2 2. + <_> + 7 18 4 2 2. + <_> + + <_> + 8 13 5 2 -1. + <_> + 8 14 5 1 2. + <_> + + <_> + 8 7 4 12 -1. + <_> + 8 11 4 4 3. + <_> + + <_> + 5 9 2 2 -1. + <_> + 6 9 1 2 2. + <_> + + <_> + 9 15 2 3 -1. + <_> + 9 16 2 1 3. + <_> + + <_> + 13 9 2 3 -1. + <_> + 13 9 1 3 2. + <_> + + <_> + 14 0 6 17 -1. + <_> + 16 0 2 17 3. + <_> + + <_> + 5 10 2 2 -1. + <_> + 6 10 1 2 2. + <_> + + <_> + 2 9 9 1 -1. + <_> + 5 9 3 1 3. + <_> + + <_> + 9 11 2 3 -1. + <_> + 9 12 2 1 3. + <_> + + <_> + 7 11 6 3 -1. + <_> + 7 12 6 1 3. + <_> + + <_> + 0 6 3 2 -1. + <_> + 0 7 3 1 2. + <_> + + <_> + 7 0 6 1 -1. + <_> + 9 0 2 1 3. + <_> + + <_> + 9 16 3 3 -1. + <_> + 9 17 3 1 3. + <_> + + <_> + 2 13 17 6 -1. + <_> + 2 16 17 3 2. + <_> + + <_> + 1 3 3 7 -1. + <_> + 2 3 1 7 3. + <_> + + <_> + 1 1 6 4 -1. + <_> + 3 1 2 4 3. + <_> + + <_> + 14 1 6 5 -1. + <_> + 14 1 3 5 2. + <_> + + <_> + 13 2 3 2 -1. + <_> + 13 3 3 1 2. + <_> + + <_> + 0 1 6 5 -1. + <_> + 3 1 3 5 2. + <_> + + <_> + 2 3 2 6 -1. + <_> + 2 5 2 2 3. + <_> + + <_> + 9 10 3 2 -1. + <_> + 9 11 3 1 2. + <_> + + <_> + 8 13 4 3 -1. + <_> + 8 14 4 1 3. + <_> + + <_> + 6 3 3 1 -1. + <_> + 7 3 1 1 3. + <_> + + <_> + 8 2 3 12 -1. + <_> + 8 6 3 4 3. + <_> + + <_> + 11 12 1 2 -1. + <_> + 11 13 1 1 2. + <_> + + <_> + 11 12 2 2 -1. + <_> + 12 12 1 1 2. + <_> + 11 13 1 1 2. + <_> + + <_> + 5 5 2 2 -1. + <_> + 5 6 2 1 2. + <_> + + <_> + 5 4 1 3 -1. + <_> + 5 5 1 1 3. + <_> + + <_> + 3 11 16 4 -1. + <_> + 11 11 8 2 2. + <_> + 3 13 8 2 2. + <_> + + <_> + 0 10 20 3 -1. + <_> + 0 11 20 1 3. + <_> + + <_> + 1 11 16 4 -1. + <_> + 1 11 8 2 2. + <_> + 9 13 8 2 2. + <_> + + <_> + 4 2 4 2 -1. + <_> + 4 3 4 1 2. + <_> + + <_> + 12 6 2 2 -1. + <_> + 13 6 1 1 2. + <_> + 12 7 1 1 2. + <_> + + <_> + 12 11 6 6 -1. + <_> + 12 13 6 2 3. + <_> + + <_> + 6 6 2 2 -1. + <_> + 6 6 1 1 2. + <_> + 7 7 1 1 2. + <_> + + <_> + 6 4 4 16 -1. + <_> + 8 4 2 16 2. + <_> + + <_> + 11 18 3 2 -1. + <_> + 11 19 3 1 2. + <_> + + <_> + 9 17 6 2 -1. + <_> + 12 17 3 1 2. + <_> + 9 18 3 1 2. + <_> + + <_> + 2 13 5 2 -1. + <_> + 2 14 5 1 2. + <_> + + <_> + 3 15 2 2 -1. + <_> + 3 16 2 1 2. + <_> + + <_> + 9 7 3 3 -1. + <_> + 10 7 1 3 3. + <_> + + <_> + 9 6 2 6 -1. + <_> + 9 6 1 6 2. + <_> + + <_> + 1 14 7 6 -1. + <_> + 1 16 7 2 3. + <_> + + <_> + 8 1 2 11 -1. + <_> + 9 1 1 11 2. + <_> + + <_> + 9 7 2 4 -1. + <_> + 9 7 1 4 2. + <_> + + <_> + 11 10 2 1 -1. + <_> + 11 10 1 1 2. + <_> + + <_> + 0 3 3 9 -1. + <_> + 1 3 1 9 3. + <_> + + <_> + 0 3 3 6 -1. + <_> + 0 5 3 2 3. + <_> + + <_> + 11 15 2 2 -1. + <_> + 12 15 1 1 2. + <_> + 11 16 1 1 2. + <_> + + <_> + 11 14 2 2 -1. + <_> + 12 14 1 1 2. + <_> + 11 15 1 1 2. + <_> + + <_> + 7 15 2 2 -1. + <_> + 7 15 1 1 2. + <_> + 8 16 1 1 2. + <_> + + <_> + 7 14 2 2 -1. + <_> + 7 14 1 1 2. + <_> + 8 15 1 1 2. + <_> + + <_> + 8 13 4 6 -1. + <_> + 10 13 2 3 2. + <_> + 8 16 2 3 2. + <_> + + <_> + 2 14 16 4 -1. + <_> + 10 14 8 2 2. + <_> + 2 16 8 2 2. + <_> + + <_> + 9 8 2 2 -1. + <_> + 9 9 2 1 2. + <_> + + <_> + 7 7 5 3 -1. + <_> + 7 8 5 1 3. + <_> + + <_> + 7 5 6 2 -1. + <_> + 9 5 2 2 3. + <_> + + <_> + 9 1 6 18 -1. + <_> + 11 1 2 18 3. + <_> + + <_> + 8 6 3 4 -1. + <_> + 9 6 1 4 3. + <_> + + <_> + 8 5 2 4 -1. + <_> + 8 5 1 2 2. + <_> + 9 7 1 2 2. + <_> + + <_> + 9 13 2 6 -1. + <_> + 10 13 1 3 2. + <_> + 9 16 1 3 2. + <_> + + <_> + 11 0 3 18 -1. + <_> + 12 0 1 18 3. + <_> + + <_> + 6 0 3 18 -1. + <_> + 7 0 1 18 3. + <_> + + <_> + 5 15 4 2 -1. + <_> + 7 15 2 2 2. + <_> + + <_> + 1 9 18 1 -1. + <_> + 7 9 6 1 3. + <_> + + <_> + 0 0 20 3 -1. + <_> + 0 1 20 1 3. + <_> + + <_> + 9 6 2 4 -1. + <_> + 10 6 1 4 2. + <_> + + <_> + 6 10 6 2 -1. + <_> + 8 10 2 2 3. + <_> + + <_> + 0 7 20 1 -1. + <_> + 0 7 10 1 2. + <_> + + <_> + 11 3 5 4 -1. + <_> + 11 5 5 2 2. + <_> + + <_> + 5 7 10 1 -1. + <_> + 10 7 5 1 2. + <_> + + <_> + 8 10 3 3 -1. + <_> + 8 11 3 1 3. + <_> + + <_> + 2 0 16 8 -1. + <_> + 10 0 8 4 2. + <_> + 2 4 8 4 2. + <_> + + <_> + 11 0 9 10 -1. + <_> + 11 5 9 5 2. + <_> + + <_> + 0 2 8 18 -1. + <_> + 4 2 4 18 2. + <_> + + <_> + 0 0 2 6 -1. + <_> + 0 2 2 2 3. + <_> + + <_> + 6 0 9 2 -1. + <_> + 6 1 9 1 2. + <_> + + <_> + 4 1 12 2 -1. + <_> + 4 2 12 1 2. + <_> + + <_> + 2 1 16 14 -1. + <_> + 2 8 16 7 2. + <_> + + <_> + 5 1 8 12 -1. + <_> + 5 7 8 6 2. + <_> + + <_> + 9 11 2 2 -1. + <_> + 9 12 2 1 2. + <_> + + <_> + 9 10 5 6 -1. + <_> + 9 12 5 2 3. + <_> + + <_> + 3 0 13 8 -1. + <_> + 3 4 13 4 2. + <_> + + <_> + 6 7 5 8 -1. + <_> + 6 11 5 4 2. + <_> + + <_> + 9 5 2 3 -1. + <_> + 9 6 2 1 3. + <_> + + <_> + 6 8 8 3 -1. + <_> + 6 9 8 1 3. + <_> + + <_> + 2 2 7 6 -1. + <_> + 2 5 7 3 2. + <_> + + <_> + 2 1 14 4 -1. + <_> + 2 1 7 2 2. + <_> + 9 3 7 2 2. + <_> + + <_> + 11 14 1 3 -1. + <_> + 11 15 1 1 3. + <_> + + <_> + 6 15 8 2 -1. + <_> + 6 16 8 1 2. + <_> + + <_> + 8 14 1 3 -1. + <_> + 8 15 1 1 3. + <_> + + <_> + 8 11 2 8 -1. + <_> + 8 15 2 4 2. + <_> + + <_> + 6 15 8 2 -1. + <_> + 6 16 8 1 2. + <_> + + <_> + 7 16 8 3 -1. + <_> + 7 17 8 1 3. + <_> + + <_> + 0 16 2 2 -1. + <_> + 0 17 2 1 2. + <_> + + <_> + 1 16 8 4 -1. + <_> + 1 16 4 2 2. + <_> + 5 18 4 2 2. + <_> + + <_> + 2 9 16 3 -1. + <_> + 2 10 16 1 3. + <_> + + <_> + 13 11 2 4 -1. + <_> + 13 11 1 4 2. + <_> + + <_> + 0 13 16 6 -1. + <_> + 0 15 16 2 3. + <_> + + <_> + 5 11 2 4 -1. + <_> + 6 11 1 4 2. + <_> + + <_> + 18 2 2 18 -1. + <_> + 19 2 1 9 2. + <_> + 18 11 1 9 2. + <_> + + <_> + 19 7 1 9 -1. + <_> + 19 10 1 3 3. + <_> + + <_> + 0 2 2 18 -1. + <_> + 0 2 1 9 2. + <_> + 1 11 1 9 2. + <_> + + <_> + 0 7 1 9 -1. + <_> + 0 10 1 3 3. + <_> + + <_> + 14 12 2 2 -1. + <_> + 14 13 2 1 2. + <_> + + <_> + 11 14 2 3 -1. + <_> + 11 15 2 1 3. + <_> + + <_> + 7 8 6 2 -1. + <_> + 7 9 6 1 2. + <_> + + <_> + 7 12 4 6 -1. + <_> + 7 12 2 3 2. + <_> + 9 15 2 3 2. + <_> + + <_> + 8 13 5 3 -1. + <_> + 8 14 5 1 3. + <_> + + <_> + 12 14 2 2 -1. + <_> + 13 14 1 1 2. + <_> + 12 15 1 1 2. + <_> + + <_> + 7 13 6 3 -1. + <_> + 7 14 6 1 3. + <_> + + <_> + 7 13 5 2 -1. + <_> + 7 14 5 1 2. + <_> + + <_> + 2 10 16 4 -1. + <_> + 10 10 8 2 2. + <_> + 2 12 8 2 2. + <_> + + <_> + 7 0 6 6 -1. + <_> + 9 0 2 6 3. + <_> + + <_> + 7 1 6 3 -1. + <_> + 7 2 6 1 3. + <_> + + <_> + 0 12 6 2 -1. + <_> + 0 13 6 1 2. + <_> + + <_> + 6 3 11 2 -1. + <_> + 6 4 11 1 2. + <_> + + <_> + 12 0 8 6 -1. + <_> + 16 0 4 3 2. + <_> + 12 3 4 3 2. + <_> + + <_> + 8 12 1 2 -1. + <_> + 8 13 1 1 2. + <_> + + <_> + 8 8 1 12 -1. + <_> + 8 12 1 4 3. + <_> + + <_> + 11 11 2 2 -1. + <_> + 12 11 1 1 2. + <_> + 11 12 1 1 2. + <_> + + <_> + 12 7 3 13 -1. + <_> + 13 7 1 13 3. + <_> + + <_> + 7 11 2 2 -1. + <_> + 7 11 1 1 2. + <_> + 8 12 1 1 2. + <_> + + <_> + 3 13 1 3 -1. + <_> + 3 14 1 1 3. + <_> + + <_> + 10 18 3 2 -1. + <_> + 11 18 1 2 3. + <_> + + <_> + 11 11 2 1 -1. + <_> + 11 11 1 1 2. + <_> + + <_> + 1 10 5 9 -1. + <_> + 1 13 5 3 3. + <_> + + <_> + 4 8 6 4 -1. + <_> + 6 8 2 4 3. + <_> + + <_> + 13 12 1 4 -1. + <_> + 13 14 1 2 2. + <_> + + <_> + 11 3 4 14 -1. + <_> + 13 3 2 7 2. + <_> + 11 10 2 7 2. + <_> + + <_> + 6 12 1 4 -1. + <_> + 6 14 1 2 2. + <_> + + <_> + 5 3 4 14 -1. + <_> + 5 3 2 7 2. + <_> + 7 10 2 7 2. + <_> + + <_> + 10 18 3 2 -1. + <_> + 11 18 1 2 3. + <_> + + <_> + 9 12 3 3 -1. + <_> + 9 13 3 1 3. + <_> + + <_> + 2 2 12 6 -1. + <_> + 2 2 6 3 2. + <_> + 8 5 6 3 2. + <_> + + <_> + 6 6 6 2 -1. + <_> + 9 6 3 2 2. + <_> + + <_> + 1 0 18 12 -1. + <_> + 7 0 6 12 3. + <_> + + <_> + 5 7 6 4 -1. + <_> + 5 7 3 2 2. + <_> + 8 9 3 2 2. + <_> + + <_> + 5 7 10 4 -1. + <_> + 5 9 10 2 2. + <_> + + <_> + 7 7 6 4 -1. + <_> + 9 7 2 4 3. + <_> + + <_> + 9 5 2 2 -1. + <_> + 9 6 2 1 2. + <_> + + <_> + 9 9 2 2 -1. + <_> + 9 10 2 1 2. + <_> + + <_> + 6 17 8 3 -1. + <_> + 6 18 8 1 3. + <_> + + <_> + 9 17 6 2 -1. + <_> + 12 17 3 1 2. + <_> + 9 18 3 1 2. + <_> + + <_> + 4 12 2 2 -1. + <_> + 4 13 2 1 2. + <_> + + <_> + 3 12 9 2 -1. + <_> + 3 13 9 1 2. + <_> + + <_> + 8 3 6 1 -1. + <_> + 10 3 2 1 3. + <_> + + <_> + 9 3 4 6 -1. + <_> + 11 3 2 3 2. + <_> + 9 6 2 3 2. + <_> + + <_> + 0 3 6 5 -1. + <_> + 3 3 3 5 2. + <_> + + <_> + 2 0 2 18 -1. + <_> + 2 6 2 6 3. + <_> + + <_> + 14 2 4 9 -1. + <_> + 14 5 4 3 3. + <_> + + <_> + 10 18 3 2 -1. + <_> + 11 18 1 2 3. + <_> + + <_> + 2 2 4 9 -1. + <_> + 2 5 4 3 3. + <_> + + <_> + 7 18 3 2 -1. + <_> + 8 18 1 2 3. + <_> + + <_> + 10 14 3 3 -1. + <_> + 10 15 3 1 3. + <_> + + <_> + 10 12 2 6 -1. + <_> + 10 15 2 3 2. + <_> + + <_> + 7 5 3 6 -1. + <_> + 7 7 3 2 3. + <_> + + <_> + 3 3 6 2 -1. + <_> + 3 4 6 1 2. + <_> + + <_> + 8 4 7 3 -1. + <_> + 8 5 7 1 3. + <_> + + <_> + 13 6 2 3 -1. + <_> + 13 7 2 1 3. + <_> + + <_> + 8 8 2 12 -1. + <_> + 8 12 2 4 3. + <_> + + <_> + 5 4 8 14 -1. + <_> + 5 4 4 7 2. + <_> + 9 11 4 7 2. + <_> + + <_> + 0 1 20 8 -1. + <_> + 10 1 10 4 2. + <_> + 0 5 10 4 2. + <_> + + <_> + 4 0 12 2 -1. + <_> + 4 1 12 1 2. + <_> + + <_> + 0 1 20 8 -1. + <_> + 0 1 10 4 2. + <_> + 10 5 10 4 2. + <_> + + <_> + 4 0 12 2 -1. + <_> + 4 1 12 1 2. + <_> + + <_> + 9 5 6 3 -1. + <_> + 9 5 3 3 2. + <_> + + <_> + 8 13 10 6 -1. + <_> + 8 15 10 2 3. + <_> + + <_> + 5 5 6 3 -1. + <_> + 8 5 3 3 2. + <_> + + <_> + 6 3 6 1 -1. + <_> + 8 3 2 1 3. + <_> + + <_> + 11 18 9 2 -1. + <_> + 14 18 3 2 3. + <_> + + <_> + 13 11 6 7 -1. + <_> + 13 11 3 7 2. + <_> + + <_> + 4 6 12 10 -1. + <_> + 4 6 6 5 2. + <_> + 10 11 6 5 2. + <_> + + <_> + 8 17 3 3 -1. + <_> + 9 17 1 3 3. + <_> + + <_> + 11 18 9 2 -1. + <_> + 14 18 3 2 3. + <_> + + <_> + 13 11 6 8 -1. + <_> + 13 11 3 8 2. + <_> + + <_> + 4 16 2 2 -1. + <_> + 4 17 2 1 2. + <_> + + <_> + 7 15 4 4 -1. + <_> + 7 17 4 2 2. + <_> + + <_> + 12 4 3 3 -1. + <_> + 12 5 3 1 3. + <_> + + <_> + 13 6 2 3 -1. + <_> + 13 7 2 1 3. + <_> + + <_> + 5 11 6 1 -1. + <_> + 7 11 2 1 3. + <_> + + <_> + 7 10 3 1 -1. + <_> + 8 10 1 1 3. + <_> + + <_> + 0 12 20 4 -1. + <_> + 0 14 20 2 2. + <_> + + <_> + 10 2 3 2 -1. + <_> + 10 3 3 1 2. + <_> + + <_> + 5 4 3 3 -1. + <_> + 5 5 3 1 3. + <_> + + <_> + 5 5 4 3 -1. + <_> + 5 6 4 1 3. + <_> + + <_> + 8 8 4 3 -1. + <_> + 8 9 4 1 3. + <_> + + <_> + 10 4 2 12 -1. + <_> + 10 8 2 4 3. + <_> + + <_> + 0 3 4 3 -1. + <_> + 0 4 4 1 3. + <_> + + <_> + 1 3 2 3 -1. + <_> + 1 4 2 1 3. + <_> + + <_> + 16 1 4 11 -1. + <_> + 16 1 2 11 2. + <_> + + <_> + 18 2 2 16 -1. + <_> + 19 2 1 8 2. + <_> + 18 10 1 8 2. + <_> + + <_> + 1 8 6 12 -1. + <_> + 3 8 2 12 3. + <_> + + <_> + 7 2 6 2 -1. + <_> + 7 2 3 1 2. + <_> + 10 3 3 1 2. + <_> + + <_> + 12 4 8 2 -1. + <_> + 16 4 4 1 2. + <_> + 12 5 4 1 2. + <_> + + <_> + 10 6 6 2 -1. + <_> + 12 6 2 2 3. + <_> + + <_> + 0 4 8 2 -1. + <_> + 0 4 4 1 2. + <_> + 4 5 4 1 2. + <_> + + <_> + 1 3 3 5 -1. + <_> + 2 3 1 5 3. + <_> + + <_> + 16 3 4 6 -1. + <_> + 16 5 4 2 3. + <_> + + <_> + 8 6 4 3 -1. + <_> + 8 7 4 1 3. + <_> + + <_> + 8 14 1 3 -1. + <_> + 8 15 1 1 3. + <_> + + <_> + 4 11 1 2 -1. + <_> + 4 12 1 1 2. + <_> + + <_> + 8 14 6 3 -1. + <_> + 8 15 6 1 3. + <_> + + <_> + 7 15 7 3 -1. + <_> + 7 16 7 1 3. + <_> + + <_> + 9 12 2 8 -1. + <_> + 9 16 2 4 2. + <_> + + <_> + 4 6 6 2 -1. + <_> + 6 6 2 2 3. + <_> + + <_> + 12 7 4 2 -1. + <_> + 12 8 4 1 2. + <_> + + <_> + 5 3 13 10 -1. + <_> + 5 8 13 5 2. + <_> + + <_> + 4 7 4 2 -1. + <_> + 4 8 4 1 2. + <_> + + <_> + 0 8 16 2 -1. + <_> + 0 8 8 1 2. + <_> + 8 9 8 1 2. + <_> + + <_> + 11 8 2 5 -1. + <_> + 11 8 1 5 2. + <_> + + <_> + 10 0 6 13 -1. + <_> + 10 0 3 13 2. + <_> + + <_> + 1 6 4 2 -1. + <_> + 1 7 4 1 2. + <_> + + <_> + 4 3 2 1 -1. + <_> + 5 3 1 1 2. + <_> + + <_> + 11 8 2 5 -1. + <_> + 11 8 1 5 2. + <_> + + <_> + 12 10 4 8 -1. + <_> + 12 10 2 8 2. + <_> + + <_> + 7 8 2 5 -1. + <_> + 8 8 1 5 2. + <_> + + <_> + 4 10 4 8 -1. + <_> + 6 10 2 8 2. + <_> + + <_> + 6 7 9 12 -1. + <_> + 9 7 3 12 3. + <_> + + <_> + 11 13 2 3 -1. + <_> + 11 13 1 3 2. + <_> + + <_> + 7 10 6 10 -1. + <_> + 10 10 3 10 2. + <_> + + <_> + 8 11 4 8 -1. + <_> + 8 11 2 4 2. + <_> + 10 15 2 4 2. + <_> + + <_> + 16 1 4 11 -1. + <_> + 16 1 2 11 2. + <_> + + <_> + 18 2 2 4 -1. + <_> + 18 2 1 4 2. + <_> + + <_> + 5 6 6 2 -1. + <_> + 5 6 3 1 2. + <_> + 8 7 3 1 2. + <_> + + <_> + 5 4 1 3 -1. + <_> + 5 5 1 1 3. + <_> + + <_> + 11 1 4 14 -1. + <_> + 11 1 2 14 2. + <_> + + <_> + 4 2 12 3 -1. + <_> + 8 2 4 3 3. + <_> + + <_> + 5 1 4 14 -1. + <_> + 7 1 2 14 2. + <_> + + <_> + 7 3 6 2 -1. + <_> + 9 3 2 2 3. + <_> + + <_> + 2 0 18 4 -1. + <_> + 8 0 6 4 3. + <_> + + <_> + 9 5 2 10 -1. + <_> + 9 10 2 5 2. + <_> + + <_> + 8 6 3 4 -1. + <_> + 9 6 1 4 3. + <_> + + <_> + 5 5 9 11 -1. + <_> + 8 5 3 11 3. + <_> + + <_> + 10 6 3 5 -1. + <_> + 11 6 1 5 3. + <_> + + <_> + 8 9 6 5 -1. + <_> + 8 9 3 5 2. + <_> + + <_> + 7 6 3 5 -1. + <_> + 8 6 1 5 3. + <_> + + <_> + 6 10 6 3 -1. + <_> + 9 10 3 3 2. + <_> + + <_> + 10 0 3 7 -1. + <_> + 11 0 1 7 3. + <_> + + <_> + 0 3 20 12 -1. + <_> + 0 9 20 6 2. + <_> + + <_> + 9 7 2 2 -1. + <_> + 10 7 1 2 2. + <_> + + <_> + 5 9 4 1 -1. + <_> + 7 9 2 1 2. + <_> + + <_> + 13 13 3 2 -1. + <_> + 13 14 3 1 2. + <_> + + <_> + 16 9 4 6 -1. + <_> + 16 9 2 6 2. + <_> + + <_> + 7 15 6 3 -1. + <_> + 7 16 6 1 3. + <_> + + <_> + 6 16 7 3 -1. + <_> + 6 17 7 1 3. + <_> + + <_> + 11 14 9 6 -1. + <_> + 11 16 9 2 3. + <_> + + <_> + 19 14 1 3 -1. + <_> + 19 15 1 1 3. + <_> + + <_> + 0 9 6 6 -1. + <_> + 3 9 3 6 2. + <_> + + <_> + 0 19 9 1 -1. + <_> + 3 19 3 1 3. + <_> + + <_> + 11 14 9 6 -1. + <_> + 11 16 9 2 3. + <_> + + <_> + 12 12 6 6 -1. + <_> + 12 14 6 2 3. + <_> + + <_> + 1 14 8 6 -1. + <_> + 1 16 8 2 3. + <_> + + <_> + 8 1 3 2 -1. + <_> + 9 1 1 2 3. + <_> + + <_> + 18 2 2 4 -1. + <_> + 18 2 1 4 2. + <_> + + <_> + 14 0 6 3 -1. + <_> + 16 0 2 3 3. + <_> + + <_> + 0 2 2 4 -1. + <_> + 1 2 1 4 2. + <_> + + <_> + 0 0 6 3 -1. + <_> + 2 0 2 3 3. + <_> + + <_> + 9 0 3 2 -1. + <_> + 10 0 1 2 3. + <_> + + <_> + 12 1 2 2 -1. + <_> + 12 1 1 2 2. + <_> + + <_> + 8 0 3 2 -1. + <_> + 9 0 1 2 3. + <_> + + <_> + 6 1 2 2 -1. + <_> + 7 1 1 2 2. + <_> + + <_> + 10 8 2 3 -1. + <_> + 10 9 2 1 3. + <_> + + <_> + 13 15 6 2 -1. + <_> + 13 16 6 1 2. + <_> + + <_> + 8 12 2 2 -1. + <_> + 8 12 1 1 2. + <_> + 9 13 1 1 2. + <_> + + <_> + 8 15 3 5 -1. + <_> + 9 15 1 5 3. + <_> + + <_> + 8 6 4 12 -1. + <_> + 8 12 4 6 2. + <_> + + <_> + 7 6 7 8 -1. + <_> + 7 10 7 4 2. + <_> + + <_> + 0 11 8 2 -1. + <_> + 0 12 8 1 2. + <_> + + <_> + 8 11 2 2 -1. + <_> + 8 11 1 1 2. + <_> + 9 12 1 1 2. + <_> + + <_> + 7 7 12 1 -1. + <_> + 11 7 4 1 3. + <_> + + <_> + 10 8 3 2 -1. + <_> + 11 8 1 2 3. + <_> + + <_> + 1 7 12 1 -1. + <_> + 5 7 4 1 3. + <_> + + <_> + 6 5 8 2 -1. + <_> + 6 5 4 1 2. + <_> + 10 6 4 1 2. + <_> + + <_> + 9 10 3 10 -1. + <_> + 10 10 1 10 3. + <_> + + <_> + 16 0 2 4 -1. + <_> + 16 0 1 4 2. + <_> + + <_> + 8 10 3 10 -1. + <_> + 9 10 1 10 3. + <_> + + <_> + 9 10 2 3 -1. + <_> + 9 11 2 1 3. + <_> + + <_> + 8 9 4 2 -1. + <_> + 10 9 2 1 2. + <_> + 8 10 2 1 2. + <_> + + <_> + 12 14 7 6 -1. + <_> + 12 16 7 2 3. + <_> + + <_> + 6 1 3 1 -1. + <_> + 7 1 1 1 3. + <_> + + <_> + 2 0 2 4 -1. + <_> + 3 0 1 4 2. + <_> + + <_> + 11 11 2 2 -1. + <_> + 12 11 1 1 2. + <_> + 11 12 1 1 2. + <_> + + <_> + 12 12 6 6 -1. + <_> + 12 14 6 2 3. + <_> + + <_> + 1 0 6 10 -1. + <_> + 1 0 3 5 2. + <_> + 4 5 3 5 2. + <_> + + <_> + 3 0 2 9 -1. + <_> + 3 3 2 3 3. + <_> + + <_> + 14 13 3 2 -1. + <_> + 14 14 3 1 2. + <_> + + <_> + 15 2 3 2 -1. + <_> + 15 3 3 1 2. + <_> + + <_> + 2 13 5 2 -1. + <_> + 2 14 5 1 2. + <_> + + <_> + 3 4 12 10 -1. + <_> + 3 4 6 5 2. + <_> + 9 9 6 5 2. + <_> + + <_> + 5 1 14 6 -1. + <_> + 5 3 14 2 3. + <_> + + <_> + 15 3 3 2 -1. + <_> + 15 4 3 1 2. + <_> + + <_> + 7 11 2 2 -1. + <_> + 7 11 1 1 2. + <_> + 8 12 1 1 2. + <_> + + <_> + 2 14 6 6 -1. + <_> + 2 16 6 2 3. + <_> + + <_> + 6 13 8 3 -1. + <_> + 6 14 8 1 3. + <_> + + <_> + 1 19 18 1 -1. + <_> + 7 19 6 1 3. + <_> + + <_> + 8 12 1 6 -1. + <_> + 8 15 1 3 2. + <_> + + <_> + 0 0 14 15 -1. + <_> + 0 5 14 5 3. + <_> + + <_> + 3 0 16 8 -1. + <_> + 3 4 16 4 2. + <_> + + <_> + 6 1 8 12 -1. + <_> + 6 7 8 6 2. + <_> + + <_> + 5 3 3 3 -1. + <_> + 6 3 1 3 3. + <_> + + <_> + 5 1 3 4 -1. + <_> + 6 1 1 4 3. + <_> + + <_> + 15 14 4 6 -1. + <_> + 17 14 2 3 2. + <_> + 15 17 2 3 2. + <_> + + <_> + 12 11 6 8 -1. + <_> + 15 11 3 4 2. + <_> + 12 15 3 4 2. + <_> + + <_> + 8 7 2 4 -1. + <_> + 9 7 1 4 2. + <_> + + <_> + 6 11 3 1 -1. + <_> + 7 11 1 1 3. + <_> + + <_> + 12 3 2 14 -1. + <_> + 12 3 1 14 2. + <_> + + <_> + 12 11 6 2 -1. + <_> + 15 11 3 1 2. + <_> + 12 12 3 1 2. + <_> + + <_> + 0 2 5 2 -1. + <_> + 0 3 5 1 2. + <_> + + <_> + 0 0 15 1 -1. + <_> + 5 0 5 1 3. + <_> + + <_> + 12 11 6 2 -1. + <_> + 15 11 3 1 2. + <_> + 12 12 3 1 2. + <_> + + <_> + 10 5 2 2 -1. + <_> + 10 5 1 2 2. + <_> + + <_> + 9 7 2 2 -1. + <_> + 10 7 1 2 2. + <_> + + <_> + 9 0 2 10 -1. + <_> + 9 0 1 5 2. + <_> + 10 5 1 5 2. + <_> + + <_> + 18 14 2 2 -1. + <_> + 18 15 2 1 2. + <_> + + <_> + 13 11 4 9 -1. + <_> + 13 14 4 3 3. + <_> + + <_> + 8 13 2 2 -1. + <_> + 8 13 1 1 2. + <_> + 9 14 1 1 2. + <_> + + <_> + 7 8 4 3 -1. + <_> + 7 9 4 1 3. + <_> + + <_> + 8 9 4 2 -1. + <_> + 8 10 4 1 2. + <_> + + <_> + 13 12 4 2 -1. + <_> + 13 13 4 1 2. + <_> + + <_> + 6 14 2 2 -1. + <_> + 6 14 1 1 2. + <_> + 7 15 1 1 2. + <_> + + <_> + 0 14 2 2 -1. + <_> + 0 15 2 1 2. + <_> + + <_> + 7 13 6 3 -1. + <_> + 7 14 6 1 3. + <_> + + <_> + 7 9 10 6 -1. + <_> + 7 11 10 2 3. + <_> + + <_> + 2 9 12 4 -1. + <_> + 6 9 4 4 3. + <_> + + <_> + 7 9 6 11 -1. + <_> + 10 9 3 11 2. + <_> + + <_> + 9 7 2 3 -1. + <_> + 9 8 2 1 3. + <_> + + <_> + 9 14 4 3 -1. + <_> + 9 15 4 1 3. + <_> + + <_> + 2 3 3 17 -1. + <_> + 3 3 1 17 3. + <_> + + <_> + 0 11 6 3 -1. + <_> + 0 12 6 1 3. + <_> + + <_> + 4 3 11 9 -1. + <_> + 4 6 11 3 3. + <_> + + <_> + 0 2 6 11 -1. + <_> + 3 2 3 11 2. + <_> + + <_> + 13 0 4 5 -1. + <_> + 13 0 2 5 2. + <_> + + <_> + 9 7 6 4 -1. + <_> + 12 7 3 2 2. + <_> + 9 9 3 2 2. + <_> + + <_> + 5 7 8 2 -1. + <_> + 9 7 4 2 2. + <_> + + <_> + 1 8 15 1 -1. + <_> + 6 8 5 1 3. + <_> + + <_> + 4 12 12 2 -1. + <_> + 8 12 4 2 3. + <_> + + <_> + 13 0 4 10 -1. + <_> + 15 0 2 5 2. + <_> + 13 5 2 5 2. + <_> + + <_> + 9 9 2 2 -1. + <_> + 9 10 2 1 2. + <_> + + <_> + 3 9 6 2 -1. + <_> + 6 9 3 2 2. + <_> + + <_> + 8 17 4 3 -1. + <_> + 8 18 4 1 3. + <_> + + <_> + 8 3 9 2 -1. + <_> + 11 3 3 2 3. + <_> + + <_> + 3 3 9 2 -1. + <_> + 6 3 3 2 3. + <_> + + <_> + 5 0 9 14 -1. + <_> + 8 0 3 14 3. + <_> + + <_> + 7 3 7 10 -1. + <_> + 7 8 7 5 2. + <_> + + <_> + 4 8 13 3 -1. + <_> + 4 9 13 1 3. + <_> + + <_> + 3 12 14 4 -1. + <_> + 3 12 7 2 2. + <_> + 10 14 7 2 2. + <_> + + <_> + 8 12 4 2 -1. + <_> + 8 13 4 1 2. + <_> + + <_> + 6 10 9 8 -1. + <_> + 6 14 9 4 2. + <_> + + <_> + 9 12 2 8 -1. + <_> + 9 16 2 4 2. + <_> + + <_> + 8 12 3 3 -1. + <_> + 8 13 3 1 3. + <_> + + <_> + 5 5 4 10 -1. + <_> + 7 5 2 10 2. + <_> + + <_> + 14 15 3 3 -1. + <_> + 14 16 3 1 3. + <_> + + <_> + 4 6 13 3 -1. + <_> + 4 7 13 1 3. + <_> + + <_> + 3 15 3 3 -1. + <_> + 3 16 3 1 3. + <_> + + <_> + 3 9 4 2 -1. + <_> + 3 9 2 1 2. + <_> + 5 10 2 1 2. + <_> + + <_> + 0 11 20 4 -1. + <_> + 10 11 10 2 2. + <_> + 0 13 10 2 2. + <_> + + <_> + 8 15 4 3 -1. + <_> + 8 16 4 1 3. + <_> + + <_> + 0 11 20 4 -1. + <_> + 0 11 10 2 2. + <_> + 10 13 10 2 2. + <_> + + <_> + 8 15 4 3 -1. + <_> + 8 16 4 1 3. + <_> + + <_> + 10 13 1 6 -1. + <_> + 10 16 1 3 2. + <_> + + <_> + 2 1 18 2 -1. + <_> + 11 1 9 1 2. + <_> + 2 2 9 1 2. + <_> + + <_> + 8 14 3 3 -1. + <_> + 8 15 3 1 3. + <_> + + <_> + 4 1 6 1 -1. + <_> + 6 1 2 1 3. + <_> + + <_> + 11 13 1 3 -1. + <_> + 11 14 1 1 3. + <_> + + <_> + 13 5 2 12 -1. + <_> + 13 11 2 6 2. + <_> + + <_> + 1 14 18 6 -1. + <_> + 1 16 18 2 3. + <_> + + <_> + 8 13 1 3 -1. + <_> + 8 14 1 1 3. + <_> + + <_> + 7 13 6 3 -1. + <_> + 7 14 6 1 3. + <_> + + <_> + 9 10 3 2 -1. + <_> + 9 11 3 1 2. + <_> + + <_> + 5 1 3 3 -1. + <_> + 6 1 1 3 3. + <_> + + <_> + 5 5 6 5 -1. + <_> + 8 5 3 5 2. + <_> + + <_> + 7 5 6 14 -1. + <_> + 7 12 6 7 2. + <_> + + <_> + 7 16 6 2 -1. + <_> + 9 16 2 2 3. + <_> + + <_> + 0 2 2 12 -1. + <_> + 1 2 1 12 2. + <_> + + <_> + 1 0 5 3 -1. + <_> + 1 1 5 1 3. + <_> + + <_> + 12 4 3 3 -1. + <_> + 12 5 3 1 3. + <_> + + <_> + 12 6 3 3 -1. + <_> + 12 7 3 1 3. + <_> + + <_> + 5 4 3 3 -1. + <_> + 5 5 3 1 3. + <_> + + <_> + 5 6 3 3 -1. + <_> + 5 7 3 1 3. + <_> + + <_> + 8 12 4 8 -1. + <_> + 10 12 2 4 2. + <_> + 8 16 2 4 2. + <_> + + <_> + 2 17 18 2 -1. + <_> + 11 17 9 1 2. + <_> + 2 18 9 1 2. + <_> + + <_> + 9 3 2 2 -1. + <_> + 9 4 2 1 2. + <_> + + <_> + 8 5 4 6 -1. + <_> + 8 7 4 2 3. + <_> + + <_> + 9 0 8 6 -1. + <_> + 9 2 8 2 3. + <_> + + <_> + 1 0 18 4 -1. + <_> + 7 0 6 4 3. + <_> + + <_> + 0 0 4 8 -1. + <_> + 2 0 2 8 2. + <_> + + <_> + 0 4 6 9 -1. + <_> + 2 4 2 9 3. + <_> + + <_> + 1 4 18 2 -1. + <_> + 7 4 6 2 3. + <_> + + <_> + 8 16 12 4 -1. + <_> + 14 16 6 2 2. + <_> + 8 18 6 2 2. + <_> + + <_> + 0 0 18 2 -1. + <_> + 0 0 9 1 2. + <_> + 9 1 9 1 2. + <_> + + <_> + 3 0 3 18 -1. + <_> + 4 0 1 18 3. + <_> + + <_> + 14 9 4 7 -1. + <_> + 14 9 2 7 2. + <_> + + <_> + 15 14 2 2 -1. + <_> + 15 15 2 1 2. + <_> + + <_> + 2 9 4 7 -1. + <_> + 4 9 2 7 2. + <_> + + <_> + 3 14 2 2 -1. + <_> + 3 15 2 1 2. + <_> + + <_> + 11 0 6 6 -1. + <_> + 11 2 6 2 3. + <_> + + <_> + 14 0 2 6 -1. + <_> + 15 0 1 3 2. + <_> + 14 3 1 3 2. + <_> + + <_> + 7 11 2 2 -1. + <_> + 7 11 1 1 2. + <_> + 8 12 1 1 2. + <_> + + <_> + 7 10 2 2 -1. + <_> + 8 10 1 2 2. + <_> + + <_> + 9 14 2 6 -1. + <_> + 9 17 2 3 2. + <_> + + <_> + 12 18 4 2 -1. + <_> + 12 19 4 1 2. + <_> + + <_> + 8 17 4 3 -1. + <_> + 8 18 4 1 3. + <_> + + <_> + 2 18 8 2 -1. + <_> + 2 19 8 1 2. + <_> + + <_> + 2 9 16 3 -1. + <_> + 2 10 16 1 3. + <_> + + <_> + 9 9 2 2 -1. + <_> + 9 10 2 1 2. + <_> + + <_> + 5 14 2 4 -1. + <_> + 5 14 1 2 2. + <_> + 6 16 1 2 2. + <_> + + <_> + 8 9 4 2 -1. + <_> + 8 9 2 1 2. + <_> + 10 10 2 1 2. + <_> + + <_> + 9 5 2 5 -1. + <_> + 9 5 1 5 2. + <_> + + <_> + 9 9 3 2 -1. + <_> + 10 9 1 2 3. + <_> + + <_> + 8 9 3 2 -1. + <_> + 9 9 1 2 3. + <_> + + <_> + 8 8 3 6 -1. + <_> + 9 8 1 6 3. + <_> + + <_> + 8 12 4 8 -1. + <_> + 10 12 2 4 2. + <_> + 8 16 2 4 2. + <_> + + <_> + 2 17 16 2 -1. + <_> + 10 17 8 1 2. + <_> + 2 18 8 1 2. + <_> + + <_> + 8 12 3 8 -1. + <_> + 9 12 1 8 3. + <_> + + <_> + 3 10 1 3 -1. + <_> + 3 11 1 1 3. + <_> + + <_> + 9 14 10 6 -1. + <_> + 14 14 5 3 2. + <_> + 9 17 5 3 2. + <_> + + <_> + 14 13 3 6 -1. + <_> + 14 15 3 2 3. + <_> + + <_> + 1 19 18 1 -1. + <_> + 7 19 6 1 3. + <_> + + <_> + 2 10 15 2 -1. + <_> + 7 10 5 2 3. + <_> + + <_> + 4 17 16 3 -1. + <_> + 4 18 16 1 3. + <_> + + <_> + 8 6 4 9 -1. + <_> + 8 9 4 3 3. + <_> + + <_> + 9 16 2 4 -1. + <_> + 9 16 1 2 2. + <_> + 10 18 1 2 2. + <_> + + <_> + 5 5 10 8 -1. + <_> + 5 9 10 4 2. + <_> + + <_> + 13 1 4 2 -1. + <_> + 13 1 2 2 2. + <_> + + <_> + 14 0 3 6 -1. + <_> + 14 2 3 2 3. + <_> + + <_> + 6 7 2 2 -1. + <_> + 6 7 1 1 2. + <_> + 7 8 1 1 2. + <_> + + <_> + 7 1 6 1 -1. + <_> + 9 1 2 1 3. + <_> + + <_> + 9 11 3 3 -1. + <_> + 9 12 3 1 3. + <_> + + <_> + 12 9 3 3 -1. + <_> + 13 9 1 3 3. + <_> + + <_> + 8 11 3 3 -1. + <_> + 8 12 3 1 3. + <_> + + <_> + 5 9 3 3 -1. + <_> + 6 9 1 3 3. + <_> + + <_> + 10 11 1 3 -1. + <_> + 10 12 1 1 3. + <_> + + <_> + 7 9 6 4 -1. + <_> + 10 9 3 2 2. + <_> + 7 11 3 2 2. + <_> + + <_> + 4 7 2 2 -1. + <_> + 4 7 1 1 2. + <_> + 5 8 1 1 2. + <_> + + <_> + 5 7 3 1 -1. + <_> + 6 7 1 1 3. + <_> + + <_> + 18 3 2 3 -1. + <_> + 18 4 2 1 3. + <_> + + <_> + 13 1 4 2 -1. + <_> + 13 1 2 2 2. + <_> + + <_> + 3 1 4 2 -1. + <_> + 5 1 2 2 2. + <_> + + <_> + 3 0 5 2 -1. + <_> + 3 1 5 1 2. + <_> + + <_> + 14 7 6 4 -1. + <_> + 17 7 3 2 2. + <_> + 14 9 3 2 2. + <_> + + <_> + 4 8 16 2 -1. + <_> + 4 9 16 1 2. + <_> + + <_> + 2 11 5 6 -1. + <_> + 2 13 5 2 3. + <_> + + <_> + 5 16 2 4 -1. + <_> + 5 16 1 2 2. + <_> + 6 18 1 2 2. + <_> + + <_> + 15 6 2 12 -1. + <_> + 16 6 1 6 2. + <_> + 15 12 1 6 2. + <_> + + <_> + 13 3 6 16 -1. + <_> + 15 3 2 16 3. + <_> + + <_> + 4 5 12 12 -1. + <_> + 4 5 6 6 2. + <_> + 10 11 6 6 2. + <_> + + <_> + 5 1 10 13 -1. + <_> + 10 1 5 13 2. + <_> + + <_> + 11 5 2 2 -1. + <_> + 12 5 1 1 2. + <_> + 11 6 1 1 2. + <_> + + <_> + 13 5 1 3 -1. + <_> + 13 6 1 1 3. + <_> + + <_> + 7 4 2 4 -1. + <_> + 7 4 1 2 2. + <_> + 8 6 1 2 2. + <_> + + <_> + 7 5 6 4 -1. + <_> + 10 5 3 4 2. + <_> + + <_> + 12 4 4 6 -1. + <_> + 14 4 2 3 2. + <_> + 12 7 2 3 2. + <_> + + <_> + 12 11 7 6 -1. + <_> + 12 13 7 2 3. + <_> + + <_> + 5 6 6 6 -1. + <_> + 7 6 2 6 3. + <_> + + <_> + 9 8 2 2 -1. + <_> + 9 9 2 1 2. + <_> + + <_> + 15 6 2 2 -1. + <_> + 16 6 1 1 2. + <_> + 15 7 1 1 2. + <_> + + <_> + 14 7 4 4 -1. + <_> + 16 7 2 2 2. + <_> + 14 9 2 2 2. + <_> + + <_> + 5 5 6 2 -1. + <_> + 7 5 2 2 3. + <_> + + <_> + 1 19 18 1 -1. + <_> + 7 19 6 1 3. + <_> + + <_> + 12 3 3 3 -1. + <_> + 12 4 3 1 3. + <_> + + <_> + 16 0 2 3 -1. + <_> + 16 1 2 1 3. + <_> + + <_> + 5 3 3 3 -1. + <_> + 5 4 3 1 3. + <_> + + <_> + 2 0 2 3 -1. + <_> + 2 1 2 1 3. + <_> + + <_> + 15 6 2 2 -1. + <_> + 16 6 1 1 2. + <_> + 15 7 1 1 2. + <_> + + <_> + 10 13 1 6 -1. + <_> + 10 16 1 3 2. + <_> + + <_> + 0 7 10 2 -1. + <_> + 0 7 5 1 2. + <_> + 5 8 5 1 2. + <_> + + <_> + 3 10 6 2 -1. + <_> + 3 11 6 1 2. + <_> + + <_> + 12 18 4 2 -1. + <_> + 12 19 4 1 2. + <_> + + <_> + 12 18 2 2 -1. + <_> + 13 18 1 1 2. + <_> + 12 19 1 1 2. + <_> + + <_> + 6 19 2 1 -1. + <_> + 7 19 1 1 2. + <_> + + <_> + 0 4 2 16 -1. + <_> + 0 4 1 8 2. + <_> + 1 12 1 8 2. + <_> + + <_> + 16 1 4 9 -1. + <_> + 16 4 4 3 3. + <_> + + <_> + 10 2 1 2 -1. + <_> + 10 3 1 1 2. + <_> + + <_> + 4 14 4 6 -1. + <_> + 4 14 2 3 2. + <_> + 6 17 2 3 2. + <_> + + <_> + 4 15 1 4 -1. + <_> + 4 17 1 2 2. + <_> + + <_> + 0 2 20 4 -1. + <_> + 10 2 10 2 2. + <_> + 0 4 10 2 2. + <_> + + <_> + 14 5 2 8 -1. + <_> + 14 9 2 4 2. + <_> + + <_> + 5 12 4 5 -1. + <_> + 7 12 2 5 2. + <_> + + <_> + 0 13 9 6 -1. + <_> + 0 15 9 2 3. + <_> + + <_> + 9 14 11 3 -1. + <_> + 9 15 11 1 3. + <_> + + <_> + 7 14 7 3 -1. + <_> + 7 15 7 1 3. + <_> + + <_> + 3 6 2 2 -1. + <_> + 3 6 1 1 2. + <_> + 4 7 1 1 2. + <_> + + <_> + 6 7 2 7 -1. + <_> + 7 7 1 7 2. + <_> + + <_> + 14 5 1 3 -1. + <_> + 14 6 1 1 3. + <_> + + <_> + 13 4 4 3 -1. + <_> + 13 5 4 1 3. + <_> + + <_> + 2 7 4 4 -1. + <_> + 2 7 2 2 2. + <_> + 4 9 2 2 2. + <_> + + <_> + 2 9 13 6 -1. + <_> + 2 12 13 3 2. + <_> + + <_> + 10 1 3 4 -1. + <_> + 11 1 1 4 3. + <_> + + <_> + 9 8 5 2 -1. + <_> + 9 9 5 1 2. + <_> + + <_> + 0 14 11 3 -1. + <_> + 0 15 11 1 3. + <_> + + <_> + 8 11 2 8 -1. + <_> + 8 15 2 4 2. + <_> + + <_> + 5 11 10 6 -1. + <_> + 5 14 10 3 2. + <_> + + <_> + 5 13 15 5 -1. + <_> + 10 13 5 5 3. + <_> + + <_> + 8 10 1 10 -1. + <_> + 8 15 1 5 2. + <_> + + <_> + 4 14 6 2 -1. + <_> + 6 14 2 2 3. + <_> + + <_> + 7 14 7 3 -1. + <_> + 7 15 7 1 3. + <_> + + <_> + 7 16 9 3 -1. + <_> + 7 17 9 1 3. + <_> + + <_> + 8 7 3 3 -1. + <_> + 8 8 3 1 3. + <_> + + <_> + 3 5 1 6 -1. + <_> + 3 8 1 3 2. + <_> + + <_> + 6 5 11 2 -1. + <_> + 6 6 11 1 2. + <_> + + <_> + 9 0 3 2 -1. + <_> + 10 0 1 2 3. + <_> + + <_> + 5 5 1 3 -1. + <_> + 5 6 1 1 3. + <_> + + <_> + 8 7 3 2 -1. + <_> + 9 7 1 2 3. + <_> + + <_> + 5 2 10 6 -1. + <_> + 10 2 5 3 2. + <_> + 5 5 5 3 2. + <_> + + <_> + 8 4 6 4 -1. + <_> + 8 4 3 4 2. + <_> + + <_> + 8 16 3 4 -1. + <_> + 9 16 1 4 3. + <_> + + <_> + 9 13 2 6 -1. + <_> + 9 13 1 3 2. + <_> + 10 16 1 3 2. + <_> + + <_> + 9 8 3 1 -1. + <_> + 10 8 1 1 3. + <_> + + <_> + 2 5 18 15 -1. + <_> + 2 10 18 5 3. + <_> + + <_> + 1 3 6 2 -1. + <_> + 4 3 3 2 2. + <_> + + <_> + 7 6 6 2 -1. + <_> + 9 6 2 2 3. + <_> + + <_> + 8 17 4 3 -1. + <_> + 8 18 4 1 3. + <_> + + <_> + 10 13 2 3 -1. + <_> + 10 14 2 1 3. + <_> + + <_> + 0 10 20 4 -1. + <_> + 0 12 20 2 2. + <_> + + <_> + 5 7 6 4 -1. + <_> + 5 7 3 2 2. + <_> + 8 9 3 2 2. + <_> + + <_> + 11 12 1 2 -1. + <_> + 11 13 1 1 2. + <_> + + <_> + 10 10 2 3 -1. + <_> + 10 11 2 1 3. + <_> + + <_> + 9 5 2 2 -1. + <_> + 9 6 2 1 2. + <_> + + <_> + 4 4 1 10 -1. + <_> + 4 9 1 5 2. + <_> + + <_> + 11 18 4 2 -1. + <_> + 11 18 2 2 2. + <_> + + <_> + 12 18 3 2 -1. + <_> + 12 19 3 1 2. + <_> + + <_> + 0 6 16 6 -1. + <_> + 0 6 8 3 2. + <_> + 8 9 8 3 2. + <_> + + <_> + 7 6 4 12 -1. + <_> + 7 12 4 6 2. + <_> + + <_> + 11 18 4 2 -1. + <_> + 11 18 2 2 2. + <_> + + <_> + 12 18 3 2 -1. + <_> + 12 19 3 1 2. + <_> + + <_> + 8 12 1 2 -1. + <_> + 8 13 1 1 2. + <_> + + <_> + 8 13 1 3 -1. + <_> + 8 14 1 1 3. + <_> + + <_> + 11 18 4 2 -1. + <_> + 11 18 2 2 2. + <_> + + <_> + 14 12 4 6 -1. + <_> + 14 12 2 6 2. + <_> + + <_> + 6 0 3 4 -1. + <_> + 7 0 1 4 3. + <_> + + <_> + 4 0 2 8 -1. + <_> + 4 0 1 4 2. + <_> + 5 4 1 4 2. + <_> + + <_> + 11 17 9 3 -1. + <_> + 14 17 3 3 3. + <_> + + <_> + 16 2 4 5 -1. + <_> + 16 2 2 5 2. + <_> + + <_> + 0 2 5 9 -1. + <_> + 0 5 5 3 3. + <_> + + <_> + 7 2 3 2 -1. + <_> + 8 2 1 2 3. + <_> + + <_> + 11 17 9 3 -1. + <_> + 14 17 3 3 3. + <_> + + <_> + 16 2 4 5 -1. + <_> + 16 2 2 5 2. + <_> + + <_> + 0 17 9 3 -1. + <_> + 3 17 3 3 3. + <_> + + <_> + 0 2 4 5 -1. + <_> + 2 2 2 5 2. + <_> + + <_> + 5 11 10 9 -1. + <_> + 5 14 10 3 3. + <_> + + <_> + 9 6 3 3 -1. + <_> + 9 7 3 1 3. + <_> + + <_> + 3 17 5 3 -1. + <_> + 3 18 5 1 3. + <_> + + <_> + 7 5 4 7 -1. + <_> + 9 5 2 7 2. + <_> + + <_> + 9 8 2 5 -1. + <_> + 9 8 1 5 2. + <_> + + <_> + 2 2 18 2 -1. + <_> + 2 3 18 1 2. + <_> + + <_> + 2 8 15 6 -1. + <_> + 7 8 5 6 3. + <_> + + <_> + 9 8 2 5 -1. + <_> + 10 8 1 5 2. + <_> + + <_> + 12 10 4 6 -1. + <_> + 12 12 4 2 3. + <_> + + <_> + 14 3 6 2 -1. + <_> + 14 4 6 1 2. + <_> + + <_> + 5 5 2 3 -1. + <_> + 5 6 2 1 3. + <_> + + <_> + 4 6 3 3 -1. + <_> + 4 7 3 1 3. + <_> + + <_> + 14 12 3 3 -1. + <_> + 14 13 3 1 3. + <_> + + <_> + 6 12 11 3 -1. + <_> + 6 13 11 1 3. + <_> + + <_> + 1 2 3 6 -1. + <_> + 1 4 3 2 3. + <_> + + <_> + 1 0 4 7 -1. + <_> + 3 0 2 7 2. + <_> + + <_> + 9 8 3 4 -1. + <_> + 10 8 1 4 3. + <_> + + <_> + 10 9 2 2 -1. + <_> + 10 10 2 1 2. + <_> + + <_> + 8 8 3 4 -1. + <_> + 9 8 1 4 3. + <_> + + <_> + 4 4 10 10 -1. + <_> + 4 9 10 5 2. + <_> + + <_> + 9 10 3 2 -1. + <_> + 10 10 1 2 3. + <_> + + <_> + 9 10 3 2 -1. + <_> + 9 11 3 1 2. + <_> + + <_> + 8 10 3 2 -1. + <_> + 9 10 1 2 3. + <_> + + <_> + 2 4 14 12 -1. + <_> + 2 4 7 6 2. + <_> + 9 10 7 6 2. + <_> + + <_> + 10 12 1 6 -1. + <_> + 10 15 1 3 2. + <_> + + <_> + 7 3 8 16 -1. + <_> + 11 3 4 8 2. + <_> + 7 11 4 8 2. + <_> + + <_> + 5 6 8 10 -1. + <_> + 5 6 4 5 2. + <_> + 9 11 4 5 2. + <_> + + <_> + 6 2 8 8 -1. + <_> + 6 2 4 4 2. + <_> + 10 6 4 4 2. + <_> + + <_> + 10 5 4 2 -1. + <_> + 12 5 2 1 2. + <_> + 10 6 2 1 2. + <_> + + <_> + 12 4 3 3 -1. + <_> + 12 5 3 1 3. + <_> + + <_> + 4 19 12 1 -1. + <_> + 8 19 4 1 3. + <_> + + <_> + 8 2 3 1 -1. + <_> + 9 2 1 1 3. + <_> + + <_> + 13 17 4 3 -1. + <_> + 13 18 4 1 3. + <_> + + <_> + 7 14 6 3 -1. + <_> + 7 15 6 1 3. + <_> + + <_> + 9 14 2 3 -1. + <_> + 9 15 2 1 3. + <_> + + <_> + 7 15 6 3 -1. + <_> + 7 16 6 1 3. + <_> + + <_> + 10 18 3 2 -1. + <_> + 11 18 1 2 3. + <_> + + <_> + 14 12 2 3 -1. + <_> + 14 13 2 1 3. + <_> + + <_> + 4 10 4 6 -1. + <_> + 4 12 4 2 3. + <_> + + <_> + 4 13 3 2 -1. + <_> + 4 14 3 1 2. + <_> + + <_> + 9 16 2 3 -1. + <_> + 9 17 2 1 3. + <_> + + <_> + 10 18 3 2 -1. + <_> + 11 18 1 2 3. + <_> + + <_> + 7 18 3 2 -1. + <_> + 8 18 1 2 3. + <_> + + <_> + 1 10 4 2 -1. + <_> + 1 11 4 1 2. + <_> + + <_> + 12 4 6 3 -1. + <_> + 12 5 6 1 3. + <_> + + <_> + 14 4 1 3 -1. + <_> + 14 5 1 1 3. + <_> + + <_> + 2 4 6 3 -1. + <_> + 2 5 6 1 3. + <_> + + <_> + 5 4 1 3 -1. + <_> + 5 5 1 1 3. + <_> + + <_> + 14 12 3 3 -1. + <_> + 14 13 3 1 3. + <_> + + <_> + 15 12 2 3 -1. + <_> + 15 13 2 1 3. + <_> + + <_> + 3 16 4 3 -1. + <_> + 3 17 4 1 3. + <_> + + <_> + 8 0 4 2 -1. + <_> + 8 1 4 1 2. + <_> + + <_> + 0 0 20 1 -1. + <_> + 0 0 10 1 2. + <_> + + <_> + 9 7 3 4 -1. + <_> + 10 7 1 4 3. + <_> + + <_> + 0 0 20 1 -1. + <_> + 10 0 10 1 2. + <_> + + <_> + 8 7 3 4 -1. + <_> + 9 7 1 4 3. + <_> + + <_> + 1 6 19 3 -1. + <_> + 1 7 19 1 3. + <_> + + <_> + 12 7 4 2 -1. + <_> + 12 8 4 1 2. + <_> + + <_> + 7 8 3 3 -1. + <_> + 7 9 3 1 3. + <_> + + <_> + 7 7 3 3 -1. + <_> + 8 7 1 3 3. + <_> + + <_> + 2 9 16 3 -1. + <_> + 2 10 16 1 3. + <_> + + <_> + 9 4 2 12 -1. + <_> + 9 8 2 4 3. + <_> + + <_> + 7 3 2 5 -1. + <_> + 8 3 1 5 2. + <_> + + <_> + 9 7 2 3 -1. + <_> + 9 8 2 1 3. + <_> + + <_> + 9 14 4 3 -1. + <_> + 9 15 4 1 3. + <_> + + <_> + 7 8 6 4 -1. + <_> + 10 8 3 2 2. + <_> + 7 10 3 2 2. + <_> + + <_> + 9 7 2 2 -1. + <_> + 10 7 1 2 2. + <_> + + <_> + 5 5 6 6 -1. + <_> + 7 5 2 6 3. + <_> + + <_> + 9 1 3 6 -1. + <_> + 10 1 1 6 3. + <_> + + <_> + 4 5 12 2 -1. + <_> + 8 5 4 2 3. + <_> + + <_> + 4 2 6 4 -1. + <_> + 6 2 2 4 3. + <_> + + <_> + 4 7 8 2 -1. + <_> + 4 8 8 1 2. + <_> + + <_> + 3 6 14 6 -1. + <_> + 10 6 7 3 2. + <_> + 3 9 7 3 2. + <_> + + <_> + 3 6 14 3 -1. + <_> + 3 6 7 3 2. + <_> + + <_> + 0 5 2 2 -1. + <_> + 0 6 2 1 2. + <_> + + <_> + 8 13 4 3 -1. + <_> + 8 14 4 1 3. + <_> + + <_> + 13 0 3 20 -1. + <_> + 14 0 1 20 3. + <_> + + <_> + 10 8 10 3 -1. + <_> + 10 9 10 1 3. + <_> + + <_> + 4 0 3 20 -1. + <_> + 5 0 1 20 3. + <_> + + <_> + 0 8 10 3 -1. + <_> + 0 9 10 1 3. + <_> + + <_> + 12 5 3 4 -1. + <_> + 13 5 1 4 3. + <_> + + <_> + 6 7 12 4 -1. + <_> + 10 7 4 4 3. + <_> + + <_> + 1 14 6 6 -1. + <_> + 1 14 3 3 2. + <_> + 4 17 3 3 2. + <_> + + <_> + 1 17 6 2 -1. + <_> + 1 18 6 1 2. + <_> + + <_> + 14 8 6 12 -1. + <_> + 17 8 3 6 2. + <_> + 14 14 3 6 2. + <_> + + <_> + 18 5 2 2 -1. + <_> + 18 6 2 1 2. + <_> + + <_> + 3 16 4 2 -1. + <_> + 3 16 2 1 2. + <_> + 5 17 2 1 2. + <_> + + <_> + 2 16 6 2 -1. + <_> + 4 16 2 2 3. + <_> + + <_> + 14 8 6 12 -1. + <_> + 17 8 3 6 2. + <_> + 14 14 3 6 2. + <_> + + <_> + 18 5 2 2 -1. + <_> + 18 6 2 1 2. + <_> + + <_> + 5 16 9 2 -1. + <_> + 8 16 3 2 3. + <_> + + <_> + 3 14 6 6 -1. + <_> + 3 14 3 3 2. + <_> + 6 17 3 3 2. + <_> + + <_> + 14 8 6 12 -1. + <_> + 17 8 3 6 2. + <_> + 14 14 3 6 2. + <_> + + <_> + 11 7 2 12 -1. + <_> + 11 11 2 4 3. + <_> + + <_> + 0 8 6 12 -1. + <_> + 0 8 3 6 2. + <_> + 3 14 3 6 2. + <_> + + <_> + 7 7 2 12 -1. + <_> + 7 11 2 4 3. + <_> + + <_> + 14 12 1 2 -1. + <_> + 14 13 1 1 2. + <_> + + <_> + 12 13 8 1 -1. + <_> + 12 13 4 1 2. + <_> + + <_> + 0 3 16 6 -1. + <_> + 0 6 16 3 2. + <_> + + <_> + 1 4 8 2 -1. + <_> + 1 4 4 1 2. + <_> + 5 5 4 1 2. + <_> + + <_> + 14 12 1 2 -1. + <_> + 14 13 1 1 2. + <_> + + <_> + 15 12 2 3 -1. + <_> + 15 13 2 1 3. + <_> + + <_> + 8 16 3 3 -1. + <_> + 8 17 3 1 3. + <_> + + <_> + 5 12 1 2 -1. + <_> + 5 13 1 1 2. + <_> + + <_> + 13 4 3 15 -1. + <_> + 14 4 1 15 3. + <_> + + <_> + 17 3 2 6 -1. + <_> + 18 3 1 3 2. + <_> + 17 6 1 3 2. + <_> + + <_> + 4 4 3 15 -1. + <_> + 5 4 1 15 3. + <_> + + <_> + 1 3 2 6 -1. + <_> + 1 3 1 3 2. + <_> + 2 6 1 3 2. + <_> + + <_> + 7 15 12 4 -1. + <_> + 7 17 12 2 2. + <_> + + <_> + 1 0 19 3 -1. + <_> + 1 1 19 1 3. + <_> + + <_> + 3 17 10 2 -1. + <_> + 3 17 5 1 2. + <_> + 8 18 5 1 2. + <_> + + <_> + 2 5 10 15 -1. + <_> + 2 10 10 5 3. + <_> + + <_> + 13 8 3 4 -1. + <_> + 13 10 3 2 2. + <_> + + <_> + 19 13 1 2 -1. + <_> + 19 14 1 1 2. + <_> + + <_> + 4 8 3 4 -1. + <_> + 4 10 3 2 2. + <_> + + <_> + 0 13 1 2 -1. + <_> + 0 14 1 1 2. + <_> + + <_> + 12 7 2 12 -1. + <_> + 12 13 2 6 2. + <_> + + <_> + 14 7 2 2 -1. + <_> + 15 7 1 1 2. + <_> + 14 8 1 1 2. + <_> + + <_> + 5 3 8 2 -1. + <_> + 5 4 8 1 2. + <_> + + <_> + 0 2 2 6 -1. + <_> + 0 4 2 2 3. + <_> + + <_> + 18 2 2 12 -1. + <_> + 19 2 1 6 2. + <_> + 18 8 1 6 2. + <_> + + <_> + 18 1 1 2 -1. + <_> + 18 2 1 1 2. + <_> + + <_> + 0 2 2 12 -1. + <_> + 0 2 1 6 2. + <_> + 1 8 1 6 2. + <_> + + <_> + 1 1 1 2 -1. + <_> + 1 2 1 1 2. + <_> + + <_> + 16 4 4 14 -1. + <_> + 18 4 2 7 2. + <_> + 16 11 2 7 2. + <_> + + <_> + 10 14 1 6 -1. + <_> + 10 17 1 3 2. + <_> + + <_> + 0 4 4 14 -1. + <_> + 0 4 2 7 2. + <_> + 2 11 2 7 2. + <_> + + <_> + 9 14 1 6 -1. + <_> + 9 17 1 3 2. + <_> + + <_> + 9 14 4 3 -1. + <_> + 9 15 4 1 3. + <_> + + <_> + 4 7 12 2 -1. + <_> + 8 7 4 2 3. + <_> + + <_> + 0 8 4 3 -1. + <_> + 0 9 4 1 3. + <_> + + <_> + 4 7 2 2 -1. + <_> + 4 7 1 1 2. + <_> + 5 8 1 1 2. + <_> + + <_> + 13 7 2 1 -1. + <_> + 13 7 1 1 2. + <_> + + <_> + 11 4 4 5 -1. + <_> + 11 4 2 5 2. + <_> + + <_> + 4 8 3 3 -1. + <_> + 5 8 1 3 3. + <_> + + <_> + 0 3 8 1 -1. + <_> + 4 3 4 1 2. + <_> + + <_> + 13 7 2 1 -1. + <_> + 13 7 1 1 2. + <_> + + <_> + 14 7 3 2 -1. + <_> + 15 7 1 2 3. + <_> + + <_> + 5 7 2 1 -1. + <_> + 6 7 1 1 2. + <_> + + <_> + 3 7 3 2 -1. + <_> + 4 7 1 2 3. + <_> + + <_> + 18 5 2 2 -1. + <_> + 18 6 2 1 2. + <_> + + <_> + 12 14 2 2 -1. + <_> + 13 14 1 1 2. + <_> + 12 15 1 1 2. + <_> + + <_> + 0 5 2 2 -1. + <_> + 0 6 2 1 2. + <_> + + <_> + 6 14 2 2 -1. + <_> + 6 14 1 1 2. + <_> + 7 15 1 1 2. + <_> + + <_> + 7 12 6 5 -1. + <_> + 9 12 2 5 3. + <_> + + <_> + 12 17 5 2 -1. + <_> + 12 18 5 1 2. + <_> + + <_> + 1 11 6 3 -1. + <_> + 4 11 3 3 2. + <_> + + <_> + 1 9 6 3 -1. + <_> + 4 9 3 3 2. + <_> + + <_> + 12 7 2 12 -1. + <_> + 12 13 2 6 2. + <_> + + <_> + 8 7 5 3 -1. + <_> + 8 8 5 1 3. + <_> + + <_> + 6 7 2 12 -1. + <_> + 6 13 2 6 2. + <_> + + <_> + 1 2 9 18 -1. + <_> + 4 2 3 18 3. + <_> + + <_> + 12 17 5 2 -1. + <_> + 12 18 5 1 2. + <_> + + <_> + 4 7 12 2 -1. + <_> + 4 7 6 2 2. + <_> + + <_> + 6 7 6 1 -1. + <_> + 8 7 2 1 3. + <_> + + <_> + 7 3 3 2 -1. + <_> + 8 3 1 2 3. + <_> + + <_> + 9 4 3 1 -1. + <_> + 10 4 1 1 3. + <_> + + <_> + 11 11 3 1 -1. + <_> + 12 11 1 1 3. + <_> + + <_> + 8 4 3 1 -1. + <_> + 9 4 1 1 3. + <_> + + <_> + 6 11 3 1 -1. + <_> + 7 11 1 1 3. + <_> + + <_> + 12 13 6 6 -1. + <_> + 12 15 6 2 3. + <_> + + <_> + 14 13 1 6 -1. + <_> + 14 15 1 2 3. + <_> + + <_> + 2 13 6 6 -1. + <_> + 2 15 6 2 3. + <_> + + <_> + 1 5 18 1 -1. + <_> + 7 5 6 1 3. + <_> + + <_> + 4 7 12 2 -1. + <_> + 10 7 6 1 2. + <_> + 4 8 6 1 2. + <_> + + <_> + 6 1 8 10 -1. + <_> + 10 1 4 5 2. + <_> + 6 6 4 5 2. + <_> + + <_> + 3 13 4 3 -1. + <_> + 3 14 4 1 3. + <_> + + <_> + 6 13 4 3 -1. + <_> + 6 14 4 1 3. + <_> + + <_> + 9 14 4 3 -1. + <_> + 9 15 4 1 3. + <_> + + <_> + 12 9 2 3 -1. + <_> + 12 10 2 1 3. + <_> + + <_> + 7 14 4 3 -1. + <_> + 7 15 4 1 3. + <_> + + <_> + 9 0 2 1 -1. + <_> + 10 0 1 1 2. + <_> + + <_> + 5 0 10 5 -1. + <_> + 5 0 5 5 2. + <_> + + <_> + 6 6 8 7 -1. + <_> + 6 6 4 7 2. + <_> + + <_> + 5 0 10 5 -1. + <_> + 10 0 5 5 2. + <_> + + <_> + 6 6 8 7 -1. + <_> + 10 6 4 7 2. + <_> + + <_> + 5 9 10 8 -1. + <_> + 10 9 5 4 2. + <_> + 5 13 5 4 2. + <_> + + <_> + 10 0 4 10 -1. + <_> + 12 0 2 5 2. + <_> + 10 5 2 5 2. + <_> + + <_> + 1 4 8 3 -1. + <_> + 1 5 8 1 3. + <_> + + <_> + 4 4 8 3 -1. + <_> + 4 5 8 1 3. + <_> + + <_> + 9 7 4 3 -1. + <_> + 9 8 4 1 3. + <_> + + <_> + 12 8 3 12 -1. + <_> + 12 14 3 6 2. + <_> + + <_> + 7 7 4 3 -1. + <_> + 7 8 4 1 3. + <_> + + <_> + 5 8 3 12 -1. + <_> + 5 14 3 6 2. + <_> + + <_> + 10 0 7 6 -1. + <_> + 10 2 7 2 3. + <_> + + <_> + 2 1 18 1 -1. + <_> + 8 1 6 1 3. + <_> + + <_> + 5 0 3 8 -1. + <_> + 6 0 1 8 3. + <_> + + <_> + 4 7 4 2 -1. + <_> + 4 8 4 1 2. + diff --git a/venv/lib/python3.11/site-packages/cv2/data/haarcascade_frontalface_alt_tree.xml b/venv/lib/python3.11/site-packages/cv2/data/haarcascade_frontalface_alt_tree.xml new file mode 100644 index 0000000000000000000000000000000000000000..e0420a274333613f57ef8c2661b26780afdde6de --- /dev/null +++ b/venv/lib/python3.11/site-packages/cv2/data/haarcascade_frontalface_alt_tree.xml @@ -0,0 +1,96484 @@ + + + +BOOST + HAAR + 20 + 20 + + 406 + + 0 + 47 + + <_> + 3 + -1.3442519903182983e+00 + + <_> + + 0 -1 0 3.7895569112151861e-03 + + -9.2945802211761475e-01 6.4119851589202881e-01 + <_> + + 0 -1 1 1.2098110280930996e-02 + + -7.1810090541839600e-01 4.7141009569168091e-01 + <_> + + 0 -1 2 1.2138449819758534e-03 + + -7.2831612825393677e-01 3.0330690741539001e-01 + <_> + 9 + -1.6378560066223145e+00 + + <_> + + 0 -1 3 8.7510552257299423e-03 + + -8.5947072505950928e-01 3.6881381273269653e-01 + <_> + + 0 -1 4 2.1986700594425201e-02 + + -6.0180151462554932e-01 3.2897830009460449e-01 + <_> + + 0 -1 5 6.4913398819044232e-04 + + -7.9431951045989990e-01 2.5493299961090088e-01 + <_> + + 0 -1 6 -1.0192029876634479e-03 + + 2.2729329764842987e-01 -6.3627982139587402e-01 + <_> + + 0 -1 7 1.3674780493602157e-03 + + -6.0014182329177856e-01 2.4118369817733765e-01 + <_> + + 0 -1 8 1.0245250305160880e-03 + + -5.8542472124099731e-01 1.2550109624862671e-01 + <_> + + 0 -1 9 1.8465859815478325e-02 + + 1.9563560187816620e-01 -6.7630231380462646e-01 + <_> + + 0 -1 10 4.0901508182287216e-03 + + -4.4916498661041260e-01 2.6677688956260681e-01 + <_> + + 0 -1 11 1.1358099989593029e-02 + + 1.8783229589462280e-01 -6.1379361152648926e-01 + <_> + 16 + -1.7317579984664917e+00 + + <_> + + 0 -1 12 -1.1588949710130692e-02 + + 3.4567040205001831e-01 -7.6478981971740723e-01 + <_> + + 0 -1 13 5.1809530705213547e-03 + + 2.4104920029640198e-01 -6.9623559713363647e-01 + <_> + + 0 -1 14 2.1468549966812134e-03 + + -8.0553662776947021e-01 1.9838610291481018e-01 + <_> + + 0 -1 15 -3.6556499544531107e-03 + + -7.1833139657974243e-01 1.2305679917335510e-01 + <_> + + 0 -1 16 -1.9701640121638775e-03 + + 2.2777689993381500e-01 -4.7520169615745544e-01 + <_> + + 0 -1 17 -3.3645539078861475e-03 + + -4.6095049381256104e-01 2.0394650101661682e-01 + <_> + + 0 -1 18 -7.4126059189438820e-05 + + 1.8213239312171936e-01 -4.7829270362854004e-01 + <_> + + 0 -1 19 -1.7571110278367996e-02 + + -7.1737551689147949e-01 1.1311130225658417e-01 + <_> + + 0 -1 20 6.3840472139418125e-03 + + -4.0205681324005127e-01 2.0730289816856384e-01 + <_> + + 0 -1 21 -1.4723399654030800e-02 + + -6.7558771371841431e-01 6.8973086774349213e-02 + <_> + + 0 -1 22 -5.2889222279191017e-03 + + -6.2105172872543335e-01 1.3349360227584839e-01 + <_> + + 0 -1 23 2.7743630111217499e-02 + + 1.1760850250720978e-01 -5.4641121625900269e-01 + <_> + + 0 -1 24 3.9427559822797775e-02 + + -2.1134279668331146e-01 3.9452999830245972e-01 + <_> + + 0 -1 25 8.6949411779642105e-03 + + 1.2580950558185577e-01 -4.7989100217819214e-01 + <_> + + 0 -1 26 2.8245279099792242e-03 + + 1.9653140008449554e-01 -4.0256679058074951e-01 + <_> + + 0 -1 27 -2.8915189206600189e-02 + + -8.0616527795791626e-01 8.1882260739803314e-02 + <_> + 29 + -1.9308480024337769e+00 + + <_> + + 0 -1 28 8.0171944573521614e-03 + + -6.8981552124023438e-01 2.4136860668659210e-01 + <_> + + 0 -1 29 -2.4478728882968426e-03 + + 2.1353200078010559e-01 -6.4146691560745239e-01 + <_> + + 0 -1 30 1.7917619552463293e-03 + + -6.1445468664169312e-01 1.9236929714679718e-01 + <_> + + 0 -1 31 4.3905500206165016e-04 + + -7.5360429286956787e-01 1.5696890652179718e-01 + <_> + + 0 -1 32 -3.6769549478776753e-04 + + 1.7380510270595551e-01 -5.8404499292373657e-01 + <_> + + 0 -1 33 -4.2802388779819012e-03 + + -6.6968989372253418e-01 1.1289729923009872e-01 + <_> + + 0 -1 34 3.5238768905401230e-03 + + 1.2501940131187439e-01 -7.3299217224121094e-01 + <_> + + 0 -1 35 7.9299701610580087e-04 + + -4.4966199994087219e-01 2.1590930223464966e-01 + <_> + + 0 -1 36 4.4371088733896613e-04 + + -3.8909769058227539e-01 2.1181149780750275e-01 + <_> + + 0 -1 37 -2.7145470958203077e-03 + + -4.6716868877410889e-01 1.5038399398326874e-01 + <_> + + 0 -1 38 -6.9272058317437768e-04 + + -5.8596551418304443e-01 1.1714380234479904e-01 + <_> + + 0 -1 39 4.9261808395385742e-02 + + -1.3800150156021118e-01 4.9366238713264465e-01 + <_> + + 0 -1 40 -2.2837519645690918e-02 + + -6.3743507862091064e-01 1.2324090301990509e-01 + <_> + + 0 -1 41 4.8372112214565277e-03 + + -1.2391629815101624e-01 1.0620889812707901e-01 + <_> + + 0 -1 42 1.0256259702146053e-02 + + -1.8767049908638000e-01 2.9824170470237732e-01 + <_> + + 0 -1 43 1.0618680156767368e-02 + + 1.0612460225820541e-01 -3.3244881033897400e-01 + <_> + + 0 -1 44 2.4113139137625694e-02 + + 8.7200611829757690e-02 -6.6846621036529541e-01 + <_> + + 0 -1 45 -3.6754710599780083e-03 + + 1.1043280363082886e-01 -4.4581958651542664e-01 + <_> + + 0 -1 46 -3.8996201008558273e-02 + + -7.0228111743927002e-01 8.1809490919113159e-02 + <_> + + 0 -1 47 1.5777100343257189e-03 + + 1.5954199433326721e-01 -3.2860770821571350e-01 + <_> + + 0 -1 48 9.1089410707354546e-03 + + 1.0326369851827621e-01 -4.4402560591697693e-01 + <_> + + 0 -1 49 -1.7051609233021736e-02 + + -5.5853348970413208e-01 6.2711499631404877e-02 + <_> + + 0 -1 50 1.3652660418301821e-03 + + -5.3934460878372192e-01 7.0839896798133850e-02 + <_> + + 0 -1 51 -1.1186149902641773e-02 + + -4.7260180115699768e-01 8.1019416451454163e-02 + <_> + + 0 -1 52 -1.1705270037055016e-02 + + 2.4750089645385742e-01 -1.7778989672660828e-01 + <_> + + 0 -1 53 -9.7736932337284088e-02 + + -5.6177508831024170e-01 8.0921821296215057e-02 + <_> + + 0 -1 54 -8.5228063166141510e-02 + + -5.2233248949050903e-01 7.2821393609046936e-02 + <_> + + 0 -1 55 -3.6733459681272507e-02 + + 4.3623578548431396e-01 -9.9339507520198822e-02 + <_> + + 0 -1 56 -3.6704430822283030e-03 + + 1.4834220707416534e-01 -2.7119669318199158e-01 + <_> + 36 + -2.0711259841918945e+00 + + <_> + + 0 -1 57 -1.1610370129346848e-03 + + -5.6377887725830078e-01 2.3568780720233917e-01 + <_> + + 0 -1 58 1.1830299627035856e-03 + + 1.5724280476570129e-01 -6.7728179693222046e-01 + <_> + + 0 -1 59 -2.1273950114846230e-03 + + -6.6150152683258057e-01 1.4943139255046844e-01 + <_> + + 0 -1 60 -1.1893469840288162e-01 + + 5.3225821256637573e-01 -2.2968369722366333e-01 + <_> + + 0 -1 61 -1.3624870218336582e-02 + + -6.0635501146316528e-01 1.7001089453697205e-01 + <_> + + 0 -1 62 -6.3198682619258761e-04 + + -6.8972241878509521e-01 1.1584629863500595e-01 + <_> + + 0 -1 63 -4.4108428992331028e-03 + + -6.2967002391815186e-01 1.2430600076913834e-01 + <_> + + 0 -1 64 -2.2982239723205566e-02 + + -5.0497251749038696e-01 1.6636120155453682e-02 + <_> + + 0 -1 65 -2.3721898905932903e-03 + + -6.2462240457534790e-01 1.3793750107288361e-01 + <_> + + 0 -1 66 8.7364763021469116e-03 + + 1.3996620476245880e-01 -5.4822951555252075e-01 + <_> + + 0 -1 67 6.7737072706222534e-02 + + -1.9172480702400208e-01 5.4700487852096558e-01 + <_> + + 0 -1 68 -4.0138149634003639e-03 + + -5.5429118871688843e-01 1.4517059922218323e-01 + <_> + + 0 -1 69 1.2857170077040792e-04 + + -5.1031237840652466e-01 1.1023940145969391e-01 + <_> + + 0 -1 70 -3.9688948541879654e-02 + + -6.1830729246139526e-01 9.6676096320152283e-02 + <_> + + 0 -1 71 -1.6646150033921003e-03 + + 1.6449889540672302e-01 -3.7186318635940552e-01 + <_> + + 0 -1 72 5.3499247878789902e-03 + + 1.1145050078630447e-01 -3.7441021203994751e-01 + <_> + + 0 -1 73 -2.2904010489583015e-02 + + -5.8097589015960693e-01 1.1077260226011276e-01 + <_> + + 0 -1 74 1.0703450068831444e-02 + + 4.4733259826898575e-02 -5.8116632699966431e-01 + <_> + + 0 -1 75 -4.2331559234298766e-04 + + -5.4423791170120239e-01 8.7089292705059052e-02 + <_> + + 0 -1 76 1.5554429963231087e-02 + + 5.6884340941905975e-02 -3.7645170092582703e-01 + <_> + + 0 -1 77 -2.0539449527859688e-02 + + -3.8714569807052612e-01 1.1833839863538742e-01 + <_> + + 0 -1 78 -3.1234358903020620e-03 + + 8.3635427057743073e-02 -1.9862389564514160e-01 + <_> + + 0 -1 79 2.3932829499244690e-02 + + 7.9600542783737183e-02 -6.5370100736618042e-01 + <_> + + 0 -1 80 8.3920456469058990e-02 + + -1.0653129965066910e-01 4.8772820830345154e-01 + <_> + + 0 -1 81 1.6003159806132317e-02 + + 8.3643212914466858e-02 -5.9207731485366821e-01 + <_> + + 0 -1 82 5.8071441017091274e-03 + + 8.7997503578662872e-02 -3.3279138803482056e-01 + <_> + + 0 -1 83 -8.1104427576065063e-02 + + 6.3775187730789185e-01 -6.7692361772060394e-02 + <_> + + 0 -1 84 4.5403029769659042e-02 + + -5.1510389894247055e-02 3.0225670337677002e-01 + <_> + + 0 -1 85 1.3877229765057564e-02 + + 9.9967628717422485e-02 -4.6520909667015076e-01 + <_> + + 0 -1 86 3.4590709954500198e-02 + + -9.7614437341690063e-02 3.4678751230239868e-01 + <_> + + 0 -1 87 1.5704549849033356e-02 + + 7.6344117522239685e-02 -5.3356319665908813e-01 + <_> + + 0 -1 88 -1.0420549660921097e-01 + + 6.1890971660614014e-01 -4.4259760528802872e-02 + <_> + + 0 -1 89 1.3443189859390259e-01 + + -5.9853021055459976e-02 6.3635712862014771e-01 + <_> + + 0 -1 90 -2.5646309368312359e-03 + + -5.3600472211837769e-01 7.3116026818752289e-02 + <_> + + 0 -1 91 1.8647089600563049e-02 + + 6.9856151938438416e-02 -5.6878322362899780e-01 + <_> + + 0 -1 92 1.5159539878368378e-02 + + 1.8206339329481125e-02 -2.7663159370422363e-01 + <_> + 7 + -2.1360809803009033e+00 + + <_> + + 0 -1 93 1.4778429269790649e-01 + + -8.9933121204376221e-01 5.7035928964614868e-01 + <_> + + 0 -1 94 2.9984670877456665e-01 + + -6.5394151210784912e-01 3.5054451227188110e-01 + <_> + + 0 -1 95 -7.9061716794967651e-02 + + 4.4085291028022766e-01 -6.5087568759918213e-01 + <_> + + 0 -1 96 5.8428961783647537e-02 + + -4.2665359377861023e-01 5.8410567045211792e-01 + <_> + + 0 -1 97 -1.4664280228316784e-02 + + 3.2435241341590881e-01 -5.9659618139266968e-01 + <_> + + 0 -1 98 3.9517199993133545e-01 + + -7.5798347592353821e-02 4.8659950494766235e-01 + <_> + + 0 -1 99 1.1040589958429337e-01 + + -8.4556102752685547e-01 2.1374569833278656e-01 + <_> + 50 + -1.8755869865417480e+00 + + <_> + + 0 -1 100 3.7777079269289970e-03 + + 1.8744400143623352e-01 -6.5354061126708984e-01 + <_> + + 0 -1 101 5.3003188222646713e-03 + + 9.3951843678951263e-02 -5.6917887926101685e-01 + <_> + + 0 -1 102 -5.5426009930670261e-03 + + 1.6031709313392639e-01 -5.1822239160537720e-01 + <_> + + 0 -1 103 -9.1971885412931442e-03 + + -5.7420462369918823e-01 1.4791400730609894e-01 + <_> + + 0 -1 104 5.3701602155342698e-04 + + -7.0449697971343994e-01 1.0752149671316147e-01 + <_> + + 0 -1 105 -2.2125479299575090e-03 + + -5.0877428054809570e-01 1.1367189884185791e-01 + <_> + + 0 -1 106 1.1675730347633362e-02 + + 8.4258683025836945e-02 -6.7384701967239380e-01 + <_> + + 0 -1 107 -2.0404369570314884e-03 + + 1.6251119971275330e-01 -4.1435649991035461e-01 + <_> + + 0 -1 108 -7.6540438458323479e-03 + + -4.2833179235458374e-01 1.3060709834098816e-01 + <_> + + 0 -1 109 2.9370479285717010e-02 + + 5.4651051759719849e-02 -3.4795379638671875e-01 + <_> + + 0 -1 110 -9.5828901976346970e-03 + + -4.8620718717575073e-01 1.1706890165805817e-01 + <_> + + 0 -1 111 6.0666278004646301e-03 + + -3.6553880572319031e-01 8.7813600897789001e-02 + <_> + + 0 -1 112 1.7992249922826886e-03 + + 1.6035990417003632e-01 -3.0859109759330750e-01 + <_> + + 0 -1 113 -1.0092309676110744e-02 + + -3.9505869150161743e-01 1.1514779925346375e-01 + <_> + + 0 -1 114 2.5171819142997265e-03 + + -3.0043110251426697e-01 1.8256050348281860e-01 + <_> + + 0 -1 115 -1.7089240252971649e-02 + + -5.2173590660095215e-01 9.7457267343997955e-02 + <_> + + 0 -1 116 -5.5856268852949142e-02 + + 5.3540021181106567e-01 -8.9221552014350891e-02 + <_> + + 0 -1 117 -2.3930610623210669e-03 + + -4.7012439370155334e-01 8.6141407489776611e-02 + <_> + + 0 -1 118 3.6918919067829847e-03 + + -2.7755591273307800e-01 1.5186099708080292e-01 + <_> + + 0 -1 119 2.1945969201624393e-03 + + -1.6867069900035858e-01 1.1952520161867142e-01 + <_> + + 0 -1 120 2.9675459954887629e-03 + + -3.8940680027008057e-01 1.0388910025358200e-01 + <_> + + 0 -1 121 1.9976729527115822e-03 + + 9.1141343116760254e-02 -4.1050049662590027e-01 + <_> + + 0 -1 122 -2.0369699224829674e-02 + + -5.9968769550323486e-01 6.9301806390285492e-02 + <_> + + 0 -1 123 2.3318571038544178e-03 + + 6.1892550438642502e-02 -3.2886800169944763e-01 + <_> + + 0 -1 124 -4.2863588780164719e-02 + + -7.3844969272613525e-01 5.7071659713983536e-02 + <_> + + 0 -1 125 1.1471749749034643e-03 + + -5.1379621028900146e-01 7.1196496486663818e-02 + <_> + + 0 -1 126 -1.3735669665038586e-02 + + -5.3785508871078491e-01 6.5542042255401611e-02 + <_> + + 0 -1 127 4.7165591269731522e-02 + + 4.5389361679553986e-02 -6.8944799900054932e-01 + <_> + + 0 -1 128 -1.1204879730939865e-02 + + 1.6932639479637146e-01 -2.3061719536781311e-01 + <_> + + 0 -1 129 -1.5478420257568359e-01 + + -7.7705371379852295e-01 1.2142470106482506e-02 + <_> + + 0 -1 130 5.8086342178285122e-03 + + 1.1318100243806839e-01 -3.3206319808959961e-01 + <_> + + 0 -1 131 -2.8529569506645203e-02 + + -5.6747281551361084e-01 4.8734560608863831e-02 + <_> + + 0 -1 132 -3.8758948445320129e-02 + + 5.9423100948333740e-01 -7.5139336287975311e-02 + <_> + + 0 -1 133 3.1037809327244759e-02 + + 5.1973540335893631e-02 -5.8552652597427368e-01 + <_> + + 0 -1 134 7.4786080404010136e-06 + + -2.7623200416564941e-01 1.4088490605354309e-01 + <_> + + 0 -1 135 3.1000260263681412e-02 + + 3.1331729143857956e-02 -5.6860172748565674e-01 + <_> + + 0 -1 136 -4.9860659986734390e-02 + + -8.2924622297286987e-01 3.8801580667495728e-02 + <_> + + 0 -1 137 -4.2323280125856400e-02 + + -4.3062108755111694e-01 1.6579480841755867e-02 + <_> + + 0 -1 138 9.1987219639122486e-04 + + -2.1154449880123138e-01 1.5517529845237732e-01 + <_> + + 0 -1 139 2.0559869706630707e-01 + + -6.2403179705142975e-02 3.2229611277580261e-01 + <_> + + 0 -1 140 2.9118418693542480e-01 + + 3.9228469133377075e-02 -9.4128221273422241e-01 + <_> + + 0 -1 141 7.8337509185075760e-03 + + -1.4806599915027618e-01 1.7849209904670715e-01 + <_> + + 0 -1 142 1.1393319815397263e-02 + + 7.7987723052501678e-02 -4.2424258589744568e-01 + <_> + + 0 -1 143 -9.1807022690773010e-02 + + 3.3689481019973755e-01 -5.6174129247665405e-02 + <_> + + 0 -1 144 -1.6038250178098679e-02 + + -2.4954010546207428e-01 1.4570869505405426e-01 + <_> + + 0 -1 145 5.4830290377140045e-02 + + -1.5496000647544861e-01 2.0329600572586060e-01 + <_> + + 0 -1 146 2.4449700489640236e-02 + + 6.0974378138780594e-02 -6.3072341680526733e-01 + <_> + + 0 -1 147 2.9260670766234398e-02 + + 4.6833608299493790e-02 -3.7985381484031677e-01 + <_> + + 0 -1 148 3.9965552277863026e-03 + + -1.6927300393581390e-01 1.9100320339202881e-01 + <_> + + 0 -1 149 -6.9938853383064270e-02 + + 5.4655587673187256e-01 -5.4965749382972717e-02 + <_> + 25 + -1.9646480083465576e+00 + + <_> + + 0 -1 150 4.5835621654987335e-02 + + -4.9982848763465881e-01 4.0961080789566040e-01 + <_> + + 0 -1 151 2.6363100856542587e-02 + + -3.9193201065063477e-01 5.1567757129669189e-01 + <_> + + 0 -1 152 1.5189830213785172e-02 + + -5.2216362953186035e-01 3.1368219852447510e-01 + <_> + + 0 -1 153 -2.0805280655622482e-02 + + 3.7614479660987854e-01 -4.7375538945198059e-01 + <_> + + 0 -1 154 -7.4902721680700779e-03 + + 1.6283489763736725e-01 -7.0384472608566284e-01 + <_> + + 0 -1 155 2.7719369530677795e-01 + + -1.6404120624065399e-01 3.3481580018997192e-01 + <_> + + 0 -1 156 6.4188443124294281e-02 + + -8.0176621675491333e-01 1.2763829529285431e-01 + <_> + + 0 -1 157 4.0668170899152756e-02 + + -3.3386930823326111e-01 2.8456181287765503e-01 + <_> + + 0 -1 158 7.4888020753860474e-03 + + -3.7188920378684998e-01 2.5932261347770691e-01 + <_> + + 0 -1 159 6.4942672848701477e-02 + + 1.0372909903526306e-01 -7.1671068668365479e-01 + <_> + + 0 -1 160 -2.1149769891053438e-03 + + -7.5683927536010742e-01 7.9019591212272644e-02 + <_> + + 0 -1 161 -4.8293141298927367e-04 + + -4.9852079153060913e-01 8.1111326813697815e-02 + <_> + + 0 -1 162 1.3996459543704987e-01 + + 8.7497599422931671e-02 -7.6389372348785400e-01 + <_> + + 0 -1 163 5.2211988717317581e-02 + + 3.1640481203794479e-02 -5.3281372785568237e-01 + <_> + + 0 -1 164 3.0680459458380938e-03 + + -6.2458527088165283e-01 1.3869540393352509e-01 + <_> + + 0 -1 165 5.0478860735893250e-02 + + 7.9063497483730316e-02 -7.4017041921615601e-01 + <_> + + 0 -1 166 -8.5122063755989075e-03 + + -4.9971660971641541e-01 1.1132259666919708e-01 + <_> + + 0 -1 167 7.0091806352138519e-02 + + 9.7081907093524933e-02 -6.1879187822341919e-01 + <_> + + 0 -1 168 -2.7261190116405487e-03 + + 9.7546629607677460e-02 -5.7760041952133179e-01 + <_> + + 0 -1 169 1.0676559992134571e-02 + + -2.9058128595352173e-01 1.8426120281219482e-01 + <_> + + 0 -1 170 6.3848652644082904e-04 + + 1.3869750499725342e-01 -4.2546540498733521e-01 + <_> + + 0 -1 171 -4.7957260161638260e-02 + + -7.3249137401580811e-01 4.1188109666109085e-02 + <_> + + 0 -1 172 1.7140049487352371e-02 + + -3.1973451375961304e-01 1.6840089857578278e-01 + <_> + + 0 -1 173 7.8544542193412781e-02 + + 5.0053231418132782e-02 -7.1410048007965088e-01 + <_> + + 0 -1 174 -1.1342849582433701e-02 + + -3.8810971379280090e-01 1.2976409494876862e-01 + <_> + 53 + -2.1222629547119141e+00 + + <_> + + 0 -1 175 -8.6751781054772437e-05 + + 2.5179910659790039e-01 -6.7723119258880615e-01 + <_> + + 0 -1 176 2.0550179481506348e-01 + + 2.0217150449752808e-02 -3.3618199825286865e-01 + <_> + + 0 -1 177 1.3893260061740875e-01 + + 1.0678269714117050e-01 -8.6710119247436523e-01 + <_> + + 0 -1 178 2.6432450395077467e-03 + + -4.1057088971138000e-01 2.5603920221328735e-01 + <_> + + 0 -1 179 -1.6145260306075215e-03 + + 1.7448160052299500e-01 -5.0290131568908691e-01 + <_> + + 0 -1 180 -4.6492749825119972e-03 + + -8.3960932493209839e-01 1.0409969836473465e-01 + <_> + + 0 -1 181 -5.5983918718993664e-03 + + -5.2673357725143433e-01 1.2114489823579788e-01 + <_> + + 0 -1 182 2.1482799202203751e-03 + + 8.6831927299499512e-02 -5.2384740114212036e-01 + <_> + + 0 -1 183 -2.2942349314689636e-03 + + 1.5666730701923370e-01 -3.9387580752372742e-01 + <_> + + 0 -1 184 -1.0809659725055099e-03 + + 9.4777546823024750e-02 -5.7967597246170044e-01 + <_> + + 0 -1 185 -1.8739879131317139e-02 + + -4.3780770897865295e-01 1.2754319608211517e-01 + <_> + + 0 -1 186 -2.0956669468432665e-03 + + 2.1275860071182251e-01 -1.7645539343357086e-01 + <_> + + 0 -1 187 -6.1370119452476501e-02 + + -6.7007988691329956e-01 8.5291177034378052e-02 + <_> + + 0 -1 188 -4.5074969530105591e-02 + + -4.7614151239395142e-01 3.8384389132261276e-02 + <_> + + 0 -1 189 4.5961341820657253e-03 + + 9.0776696801185608e-02 -5.3642177581787109e-01 + <_> + + 0 -1 190 -5.6205179542303085e-02 + + -4.4128128886222839e-01 2.6340639218688011e-02 + <_> + + 0 -1 191 -1.7070030793547630e-02 + + 3.1962528824806213e-01 -1.5699079632759094e-01 + <_> + + 0 -1 192 1.3778540305793285e-02 + + -4.1468238830566406e-01 1.0832040011882782e-01 + <_> + + 0 -1 193 5.6932470761239529e-03 + + 1.0973270237445831e-01 -4.1420969367027283e-01 + <_> + + 0 -1 194 1.1573060182854533e-03 + + -4.6996459364891052e-01 1.4088229835033417e-01 + <_> + + 0 -1 195 -4.3259391532046720e-05 + + -5.9117478132247925e-01 7.2208836674690247e-02 + <_> + + 0 -1 196 -1.4467669825535268e-04 + + 1.4340500533580780e-01 -2.0809020102024078e-01 + <_> + + 0 -1 197 -3.0667539685964584e-02 + + -6.4181727170944214e-01 7.6316222548484802e-02 + <_> + + 0 -1 198 6.4002368599176407e-03 + + -1.5426200628280640e-01 2.0618820190429688e-01 + <_> + + 0 -1 199 2.7318780776113272e-03 + + -1.8429130315780640e-01 2.2046269476413727e-01 + <_> + + 0 -1 200 -4.1759859770536423e-02 + + 5.1284658908843994e-01 -4.3097220361232758e-02 + <_> + + 0 -1 201 -3.0174419283866882e-02 + + -3.6134809255599976e-01 1.1633390188217163e-01 + <_> + + 0 -1 202 6.8081771023571491e-03 + + -2.5953280925750732e-01 1.4927390217781067e-01 + <_> + + 0 -1 203 4.3430369347333908e-02 + + 6.8601243197917938e-02 -5.8221191167831421e-01 + <_> + + 0 -1 204 2.1121300756931305e-02 + + -8.5372917354106903e-02 8.0498583614826202e-02 + <_> + + 0 -1 205 9.9840283393859863e-02 + + 5.3292520344257355e-02 -7.1819657087326050e-01 + <_> + + 0 -1 206 5.6953770108520985e-03 + + -8.8976107537746429e-02 1.3483940064907074e-01 + <_> + + 0 -1 207 -5.9984568506479263e-02 + + 6.8324291706085205e-01 -5.1916271448135376e-02 + <_> + + 0 -1 208 5.9353262186050415e-03 + + 1.0305190086364746e-01 -2.5361439585685730e-01 + <_> + + 0 -1 209 -7.4867930379696190e-05 + + 1.3340729475021362e-01 -2.9323559999465942e-01 + <_> + + 0 -1 210 -2.5437519070692360e-04 + + 1.5335780382156372e-01 -1.9387570023536682e-01 + <_> + + 0 -1 211 7.7576987678185105e-04 + + -3.1155571341514587e-01 1.0632509738206863e-01 + <_> + + 0 -1 212 5.4478500038385391e-02 + + 2.6277480646967888e-02 -6.6687411069869995e-01 + <_> + + 0 -1 213 1.2692850083112717e-02 + + 9.3613043427467346e-02 -3.9152190089225769e-01 + <_> + + 0 -1 214 -3.0766960233449936e-02 + + -5.9238088130950928e-01 4.8314999788999557e-02 + <_> + + 0 -1 215 -1.9366150721907616e-02 + + 4.3661609292030334e-01 -8.8672943413257599e-02 + <_> + + 0 -1 216 -2.8705620206892490e-03 + + 1.5244780480861664e-01 -1.3861170411109924e-01 + <_> + + 0 -1 217 4.0003698319196701e-02 + + 5.8748051524162292e-02 -6.9119709730148315e-01 + <_> + + 0 -1 218 -8.1130467355251312e-02 + + -7.8684318065643311e-01 2.0421498920768499e-03 + <_> + + 0 -1 219 -2.1017501130700111e-03 + + 1.9100449979305267e-01 -1.9659680128097534e-01 + <_> + + 0 -1 220 8.6481617763638496e-03 + + 8.8689289987087250e-02 -3.7414151430130005e-01 + <_> + + 0 -1 221 -5.2429020404815674e-02 + + -7.2615998983383179e-01 3.9465688169002533e-02 + <_> + + 0 -1 222 3.4464800264686346e-03 + + -1.1640899628400803e-01 2.7386268973350525e-01 + <_> + + 0 -1 223 -7.0581152103841305e-03 + + -3.6283940076828003e-01 9.2023678123950958e-02 + <_> + + 0 -1 224 -5.7412259280681610e-02 + + -8.8839381933212280e-01 2.6647759601473808e-02 + <_> + + 0 -1 225 3.3479030244052410e-03 + + -1.4884050190448761e-01 1.8366430699825287e-01 + <_> + + 0 -1 226 -5.3958419710397720e-02 + + 3.8098138570785522e-01 -4.4046580791473389e-02 + <_> + + 0 -1 227 -2.5719689205288887e-02 + + 3.2570821046829224e-01 -1.0078220069408417e-01 + <_> + 44 + -2.1038460731506348e+00 + + <_> + + 0 -1 228 1.2441220134496689e-01 + + -3.8573729991912842e-01 3.9273661375045776e-01 + <_> + + 0 -1 229 3.7802878767251968e-02 + + -4.7028678655624390e-01 3.5786831378936768e-01 + <_> + + 0 -1 230 3.0441429466009140e-02 + + -3.9460399746894836e-01 3.2518500089645386e-01 + <_> + + 0 -1 231 3.9223438943736255e-04 + + -4.5166510343551636e-01 1.9672380387783051e-01 + <_> + + 0 -1 232 3.9077710360288620e-02 + + -2.1073329448699951e-01 4.3864768743515015e-01 + <_> + + 0 -1 233 -8.9118082541972399e-05 + + 1.5196959674358368e-01 -5.9563517570495605e-01 + <_> + + 0 -1 234 8.8415127247571945e-03 + + -4.9292489886283875e-01 1.7406579852104187e-01 + <_> + + 0 -1 235 1.3666059821844101e-02 + + 9.2861749231815338e-02 -5.5182307958602905e-01 + <_> + + 0 -1 236 -6.1203300952911377e-02 + + -6.7985290288925171e-01 1.0049080103635788e-01 + <_> + + 0 -1 237 5.7719892356544733e-04 + + -5.8301997184753418e-01 1.1089629679918289e-01 + <_> + + 0 -1 238 2.8370460495352745e-04 + + -5.9793341159820557e-01 9.3898378312587738e-02 + <_> + + 0 -1 239 1.7665980383753777e-02 + + -2.2015470266342163e-01 3.4533089399337769e-01 + <_> + + 0 -1 240 2.5697330012917519e-02 + + -3.6195701360702515e-01 1.6877350211143494e-01 + <_> + + 0 -1 241 -4.0316689759492874e-02 + + 2.2964400053024292e-01 -2.9301440715789795e-01 + <_> + + 0 -1 242 4.6522719785571098e-03 + + -5.8995968103408813e-01 1.0466910153627396e-01 + <_> + + 0 -1 243 -1.3406000100076199e-02 + + -3.9572098851203918e-01 8.3528116345405579e-02 + <_> + + 0 -1 244 3.6127280443906784e-02 + + 9.4165802001953125e-02 -5.4097181558609009e-01 + <_> + + 0 -1 245 2.2792080417275429e-03 + + 1.2819069623947144e-01 -3.6514538526535034e-01 + <_> + + 0 -1 246 1.4454070478677750e-03 + + -2.3281599581241608e-01 1.9829919934272766e-01 + <_> + + 0 -1 247 5.7482529431581497e-02 + + 7.5042396783828735e-02 -5.7704979181289673e-01 + <_> + + 0 -1 248 3.3360819797962904e-03 + + 8.8012017309665680e-02 -4.6779251098632812e-01 + <_> + + 0 -1 249 3.7225749343633652e-02 + + 3.2155111432075500e-02 -6.6346621513366699e-01 + <_> + + 0 -1 250 1.6612760722637177e-02 + + 9.1689839959144592e-02 -5.2128171920776367e-01 + <_> + + 0 -1 251 2.0543249323964119e-02 + + -2.8753378987312317e-01 1.4261309802532196e-01 + <_> + + 0 -1 252 -1.5633470320608467e-04 + + 2.0246730744838715e-01 -2.2424469888210297e-01 + <_> + + 0 -1 253 1.2188810110092163e-01 + + -1.6461309790611267e-01 1.7583920061588287e-01 + <_> + + 0 -1 254 4.6413440257310867e-02 + + -6.8978017568588257e-01 6.4349927008152008e-02 + <_> + + 0 -1 255 1.4946439862251282e-01 + + 3.9805840700864792e-02 -7.0177328586578369e-01 + <_> + + 0 -1 256 1.4346869662404060e-02 + + 9.2628777027130127e-02 -4.6314170956611633e-01 + <_> + + 0 -1 257 3.6158718168735504e-02 + + 6.4412936568260193e-02 -6.5277212858200073e-01 + <_> + + 0 -1 258 -5.5098228156566620e-02 + + -6.1021989583969116e-01 6.6034287214279175e-02 + <_> + + 0 -1 259 -3.2978600356727839e-03 + + 8.6579866707324982e-02 -2.1844820678234100e-01 + <_> + + 0 -1 260 4.1257790289819241e-03 + + -4.4980299472808838e-01 9.3251250684261322e-02 + <_> + + 0 -1 261 3.3465269953012466e-02 + + 1.4524499885737896e-02 -4.0200001001358032e-01 + <_> + + 0 -1 262 -2.2584630176424980e-02 + + -6.0067617893218994e-01 6.4416721463203430e-02 + <_> + + 0 -1 263 -7.1505038067698479e-03 + + 6.7139469087123871e-02 -1.2947300076484680e-01 + <_> + + 0 -1 264 -5.1440041512250900e-02 + + -4.8466479778289795e-01 8.2093752920627594e-02 + <_> + + 0 -1 265 -1.9100949168205261e-02 + + -3.5394379496574402e-01 1.0851690173149109e-01 + <_> + + 0 -1 266 6.9468282163143158e-03 + + 1.5407569706439972e-01 -2.3040190339088440e-01 + <_> + + 0 -1 267 -2.3886600509285927e-02 + + 4.9007979035377502e-01 -5.9650428593158722e-02 + <_> + + 0 -1 268 -1.3964619720354676e-03 + + -3.3704701066017151e-01 1.1569459736347198e-01 + <_> + + 0 -1 269 2.6320600882172585e-02 + + -3.9132680743932724e-02 3.7615358829498291e-01 + <_> + + 0 -1 270 5.0336541607975960e-03 + + -3.5457020998001099e-01 1.0786720365285873e-01 + <_> + + 0 -1 271 -1.1523960158228874e-02 + + 3.5148641467094421e-01 -1.1373709887266159e-01 + <_> + 72 + -1.9109580516815186e+00 + + <_> + + 0 -1 272 -5.6698019616305828e-03 + + 2.5299090147018433e-01 -5.5377197265625000e-01 + <_> + + 0 -1 273 1.2186550302430987e-03 + + 9.1723538935184479e-02 -6.5661650896072388e-01 + <_> + + 0 -1 274 3.1903409399092197e-03 + + 1.2116809934377670e-01 -5.4405361413955688e-01 + <_> + + 0 -1 275 -1.2117680162191391e-02 + + -6.8211251497268677e-01 1.1178220063447952e-01 + <_> + + 0 -1 276 2.2634069900959730e-03 + + -5.6313961744308472e-01 9.9629260599613190e-02 + <_> + + 0 -1 277 2.2871519904583693e-03 + + -5.0227242708206177e-01 1.1288029700517654e-01 + <_> + + 0 -1 278 -7.4018500745296478e-03 + + -5.0622308254241943e-01 1.0325270146131516e-01 + <_> + + 0 -1 279 6.5725757740437984e-03 + + 3.1603671610355377e-02 -4.5879349112510681e-01 + <_> + + 0 -1 280 -1.7237069085240364e-02 + + -3.6556100845336914e-01 1.4122049510478973e-01 + <_> + + 0 -1 281 -1.7646619817242026e-03 + + 1.8962210416793823e-01 -3.4349760413169861e-01 + <_> + + 0 -1 282 2.6085950434207916e-02 + + 8.7369233369827271e-02 -5.3332161903381348e-01 + <_> + + 0 -1 283 8.5357967764139175e-03 + + -3.7360730767250061e-01 1.4508520066738129e-01 + <_> + + 0 -1 284 -6.2934341840445995e-03 + + -4.5775079727172852e-01 1.0016269981861115e-01 + <_> + + 0 -1 285 9.7081549465656281e-02 + + 3.3761640079319477e-03 -8.4679859876632690e-01 + <_> + + 0 -1 286 -9.9455721676349640e-02 + + 7.7892357110977173e-01 -5.4456088691949844e-02 + <_> + + 0 -1 287 3.9128549396991730e-02 + + 3.9479929953813553e-02 -4.6620211005210876e-01 + <_> + + 0 -1 288 6.8423762917518616e-02 + + 4.8163410276174545e-02 -8.1910741329193115e-01 + <_> + + 0 -1 289 -1.7304550856351852e-02 + + -4.6001830697059631e-01 2.1781340241432190e-02 + <_> + + 0 -1 290 4.5203989429865032e-05 + + 1.5590970218181610e-01 -2.5734600424766541e-01 + <_> + + 0 -1 291 -5.3720749914646149e-02 + + -7.3984587192535400e-01 2.3658139631152153e-02 + <_> + + 0 -1 292 -2.1576840663328767e-04 + + 1.1803720146417618e-01 -3.5380458831787109e-01 + <_> + + 0 -1 293 1.2613219441846013e-03 + + -1.8313080072402954e-01 1.6306960582733154e-01 + <_> + + 0 -1 294 2.2714029997587204e-02 + + -9.5647342503070831e-02 3.8062781095504761e-01 + <_> + + 0 -1 295 2.0958330482244492e-02 + + 6.1185598373413086e-02 -5.2644938230514526e-01 + <_> + + 0 -1 296 1.5458449721336365e-02 + + 6.4466789364814758e-02 -4.7441288828849792e-01 + <_> + + 0 -1 297 -5.0828810781240463e-03 + + 1.0018830001354218e-01 -3.6397251486778259e-01 + <_> + + 0 -1 298 1.1842510430142283e-03 + + -2.0603519678115845e-01 1.7129589617252350e-01 + <_> + + 0 -1 299 5.0187770277261734e-02 + + -7.0924967527389526e-02 1.0435319691896439e-01 + <_> + + 0 -1 300 1.7535200715065002e-01 + + 3.7766210734844208e-02 -8.0802738666534424e-01 + <_> + + 0 -1 301 -6.8425558507442474e-02 + + -5.0214898586273193e-01 5.4671119898557663e-02 + <_> + + 0 -1 302 2.2496099118143320e-03 + + -2.8013509511947632e-01 1.0950099676847458e-01 + <_> + + 0 -1 303 8.5355632007122040e-02 + + 3.3376980572938919e-02 -7.3676842451095581e-01 + <_> + + 0 -1 304 -2.8825979679822922e-02 + + -4.8528099060058594e-01 4.9596078693866730e-02 + <_> + + 0 -1 305 -1.3562700478360057e-03 + + 1.8493090569972992e-01 -1.6541489958763123e-01 + <_> + + 0 -1 306 1.5731659950688481e-03 + + 9.0431816875934601e-02 -3.0193880200386047e-01 + <_> + + 0 -1 307 -5.2912188693881035e-03 + + -4.3963611125946045e-01 4.6880699694156647e-02 + <_> + + 0 -1 308 4.2200140655040741e-02 + + -7.5348012149333954e-02 3.7712809443473816e-01 + <_> + + 0 -1 309 3.1030770391225815e-02 + + 6.6053368151187897e-02 -4.7378420829772949e-01 + <_> + + 0 -1 310 8.0451928079128265e-03 + + -7.7326983213424683e-02 3.4898889064788818e-01 + <_> + + 0 -1 311 2.3791180923581123e-02 + + 4.8629928380250931e-02 -5.8155477046966553e-01 + <_> + + 0 -1 312 -2.6884680613875389e-02 + + 7.3852258920669556e-01 -4.0025118738412857e-02 + <_> + + 0 -1 313 -1.7013859469443560e-03 + + 1.4116409420967102e-01 -1.8305079638957977e-01 + <_> + + 0 -1 314 -3.2258979976177216e-02 + + -6.4598697423934937e-01 4.1774179786443710e-02 + <_> + + 0 -1 315 -9.1719552874565125e-02 + + 6.3651692867279053e-01 -4.4406279921531677e-02 + <_> + + 0 -1 316 1.1253220029175282e-02 + + -1.0398969799280167e-01 2.4386499822139740e-01 + <_> + + 0 -1 317 9.1702006757259369e-03 + + -1.0142300277948380e-01 1.7325720191001892e-01 + <_> + + 0 -1 318 -3.7584431469440460e-02 + + -6.5999048948287964e-01 3.5357259213924408e-02 + <_> + + 0 -1 319 1.4904039562679827e-04 + + -1.2504950165748596e-01 1.0161379724740982e-01 + <_> + + 0 -1 320 5.6240631965920329e-04 + + -2.1511219441890717e-01 1.0537440329790115e-01 + <_> + + 0 -1 321 -1.7314270138740540e-02 + + -1.6798290610313416e-01 6.1207499355077744e-02 + <_> + + 0 -1 322 -1.5429870225489140e-02 + + 2.5674480199813843e-01 -9.7193486988544464e-02 + <_> + + 0 -1 323 -1.5612079761922359e-02 + + -3.5797500610351562e-01 6.9260068237781525e-02 + <_> + + 0 -1 324 7.4424187187105417e-04 + + -1.5740460157394409e-01 1.4921070635318756e-01 + <_> + + 0 -1 325 7.9008340835571289e-02 + + 3.5924728959798813e-02 -6.4907592535018921e-01 + <_> + + 0 -1 326 -3.3477540127933025e-03 + + -2.5794708728790283e-01 8.1626862287521362e-02 + <_> + + 0 -1 327 3.5589419305324554e-02 + + -4.6870049089193344e-02 5.3945267200469971e-01 + <_> + + 0 -1 328 7.6168961822986603e-04 + + 8.0409869551658630e-02 -2.8045970201492310e-01 + <_> + + 0 -1 329 9.6126887947320938e-03 + + 9.2715777456760406e-02 -2.2755210101604462e-01 + <_> + + 0 -1 330 3.4582789987325668e-02 + + -9.5495507121086121e-02 2.8116491436958313e-01 + <_> + + 0 -1 331 -8.2031842321157455e-03 + + -3.3162289857864380e-01 4.0629711002111435e-02 + <_> + + 0 -1 332 2.5540109723806381e-02 + + 7.0458933711051941e-02 -3.2799351215362549e-01 + <_> + + 0 -1 333 -3.1389920040965080e-03 + + 1.2529349327087402e-01 -6.0766801238059998e-02 + <_> + + 0 -1 334 4.5892409980297089e-03 + + -9.5335446298122406e-02 2.4738679826259613e-01 + <_> + + 0 -1 335 -2.3260030895471573e-02 + + -2.3823159933090210e-01 3.3502969890832901e-02 + <_> + + 0 -1 336 1.7964519793167710e-03 + + 8.9843861758708954e-02 -2.8049159049987793e-01 + <_> + + 0 -1 337 -1.0952910035848618e-01 + + -4.6206548810005188e-01 7.4333418160676956e-03 + <_> + + 0 -1 338 6.8442770279943943e-03 + + 7.3520109057426453e-02 -3.6190700531005859e-01 + <_> + + 0 -1 339 -7.3719851672649384e-02 + + 4.1131800413131714e-01 -6.8293057382106781e-02 + <_> + + 0 -1 340 9.4485012814402580e-03 + + -1.2132299691438675e-01 2.1491959691047668e-01 + <_> + + 0 -1 341 -7.4686057865619659e-02 + + 2.4292010068893433e-01 -3.8520719856023788e-02 + <_> + + 0 -1 342 -1.8958229571580887e-02 + + -3.7263819575309753e-01 6.8381950259208679e-02 + <_> + + 0 -1 343 -8.3170487778261304e-04 + + 9.5785446465015411e-02 -1.0169020295143127e-01 + <_> + 54 + -2.0048389434814453e+00 + + <_> + + 0 -1 344 1.5233230590820312e-01 + + -3.1805351376533508e-01 4.7039988636970520e-01 + <_> + + 0 -1 345 8.8482722640037537e-03 + + -3.6134269833564758e-01 2.7332958579063416e-01 + <_> + + 0 -1 346 2.9788410291075706e-02 + + -2.8059279918670654e-01 3.6270239949226379e-01 + <_> + + 0 -1 347 5.2725639194250107e-02 + + -1.9320569932460785e-01 3.5507258772850037e-01 + <_> + + 0 -1 348 2.6077419519424438e-02 + + -3.7120199203491211e-01 2.7038440108299255e-01 + <_> + + 0 -1 349 -4.4878520071506500e-02 + + 2.9119300842285156e-01 -3.5178241133689880e-01 + <_> + + 0 -1 350 -9.3984341947361827e-04 + + -6.0143661499023438e-01 1.1815790086984634e-01 + <_> + + 0 -1 351 3.1817350536584854e-03 + + -6.1632722616195679e-01 1.0581470280885696e-01 + <_> + + 0 -1 352 -6.2214181525632739e-04 + + 1.1701049655675888e-01 -6.1873781681060791e-01 + <_> + + 0 -1 353 5.4993429221212864e-03 + + 7.1740642189979553e-02 -3.2122710347175598e-01 + <_> + + 0 -1 354 7.0621701888740063e-03 + + -3.0814599990844727e-01 1.8299129605293274e-01 + <_> + + 0 -1 355 -3.4492298960685730e-02 + + -3.6952570080757141e-01 1.1142779886722565e-01 + <_> + + 0 -1 356 -5.3783431649208069e-02 + + -6.6689962148666382e-01 8.4863640367984772e-02 + <_> + + 0 -1 357 -2.0194910466670990e-02 + + -4.2300069332122803e-01 5.6325469166040421e-02 + <_> + + 0 -1 358 -7.6839578105136752e-04 + + 1.3547450304031372e-01 -3.5696288943290710e-01 + <_> + + 0 -1 359 6.6877179779112339e-03 + + -3.4379830956459045e-01 1.3302099704742432e-01 + <_> + + 0 -1 360 1.1147409677505493e-01 + + -4.9523550271987915e-01 9.7303003072738647e-02 + <_> + + 0 -1 361 -8.5021732375025749e-03 + + -5.1778990030288696e-01 6.7188903689384460e-02 + <_> + + 0 -1 362 -1.8897019326686859e-02 + + -4.7064769268035889e-01 9.0873777866363525e-02 + <_> + + 0 -1 363 5.7387170381844044e-03 + + -1.4860689640045166e-01 3.0976840853691101e-01 + <_> + + 0 -1 364 3.2604049891233444e-02 + + 7.8677706420421600e-02 -5.4713827371597290e-01 + <_> + + 0 -1 365 1.8975350030814297e-05 + + -2.4359850585460663e-01 9.8908931016921997e-02 + <_> + + 0 -1 366 -1.9267159514129162e-03 + + -5.0522977113723755e-01 7.5119331479072571e-02 + <_> + + 0 -1 367 -7.7145430259406567e-03 + + -2.5014960765838623e-01 1.0211499780416489e-01 + <_> + + 0 -1 368 -1.8806649371981621e-02 + + -4.3269169330596924e-01 1.1147680133581161e-01 + <_> + + 0 -1 369 2.9912199825048447e-02 + + 4.6748448163270950e-02 -5.8818292617797852e-01 + <_> + + 0 -1 370 -7.4260600376874208e-04 + + 1.8389309942722321e-01 -2.0138260722160339e-01 + <_> + + 0 -1 371 4.0662181563675404e-03 + + -4.4948458671569824e-01 8.6881376802921295e-02 + <_> + + 0 -1 372 1.8681669607758522e-02 + + -1.7103520035743713e-01 2.2931230068206787e-01 + <_> + + 0 -1 373 4.6580690890550613e-02 + + 4.3874379247426987e-02 -6.6704601049423218e-01 + <_> + + 0 -1 374 -1.5030739828944206e-02 + + -7.6569449901580811e-01 4.2524490505456924e-02 + <_> + + 0 -1 375 6.3602820038795471e-02 + + 3.3629488199949265e-02 -8.6777329444885254e-01 + <_> + + 0 -1 376 -3.3613100647926331e-02 + + -6.7464047670364380e-01 4.5196920633316040e-02 + <_> + + 0 -1 377 -4.4314529746770859e-02 + + -4.7056430578231812e-01 2.0987950265407562e-02 + <_> + + 0 -1 378 2.9175819829106331e-02 + + 5.6036490947008133e-02 -6.5745961666107178e-01 + <_> + + 0 -1 379 8.4737781435251236e-03 + + -1.2312129884958267e-01 3.6037188768386841e-01 + <_> + + 0 -1 380 -2.6930740103125572e-02 + + -6.5255117416381836e-01 6.0726620256900787e-02 + <_> + + 0 -1 381 3.7930138409137726e-02 + + -1.5491360425949097e-01 2.1770450472831726e-01 + <_> + + 0 -1 382 1.6430050134658813e-02 + + -2.5250691175460815e-01 1.5458230674266815e-01 + <_> + + 0 -1 383 5.1079809665679932e-02 + + 3.0773499980568886e-02 -6.4929312467575073e-01 + <_> + + 0 -1 384 1.6663300339132547e-03 + + -3.7425559759140015e-01 8.1392176449298859e-02 + <_> + + 0 -1 385 -9.0896980836987495e-03 + + 1.7854049801826477e-01 -7.6578080654144287e-02 + <_> + + 0 -1 386 2.0629199221730232e-02 + + 7.2373263537883759e-02 -4.2050579190254211e-01 + <_> + + 0 -1 387 8.2410024479031563e-03 + + 3.2896678894758224e-02 -3.7325268983840942e-01 + <_> + + 0 -1 388 -4.6126499772071838e-02 + + -3.7356421351432800e-01 7.7336780726909637e-02 + <_> + + 0 -1 389 -8.3484929054975510e-03 + + 1.8690130114555359e-01 -1.5126839280128479e-01 + <_> + + 0 -1 390 -4.7689080238342285e-02 + + -4.0730020403862000e-01 8.7598368525505066e-02 + <_> + + 0 -1 391 -5.0166220171377063e-04 + + 1.2036769837141037e-01 -2.4717660248279572e-01 + <_> + + 0 -1 392 2.1794239728478715e-05 + + -2.9800811409950256e-01 1.2065000087022781e-01 + <_> + + 0 -1 393 -7.0597290992736816e-02 + + -6.8116611242294312e-01 6.4198948442935944e-02 + <_> + + 0 -1 394 -6.4999358728528023e-03 + + 2.6219159364700317e-01 -1.4015009999275208e-01 + <_> + + 0 -1 395 5.3664338774979115e-03 + + -3.4273180365562439e-01 9.2048570513725281e-02 + <_> + + 0 -1 396 -1.3341950252652168e-02 + + 4.0258079767227173e-01 -7.2052307426929474e-02 + <_> + + 0 -1 397 1.2243090197443962e-02 + + -8.2426831126213074e-02 3.8369199633598328e-01 + <_> + 100 + -1.8743180036544800e+00 + + <_> + + 0 -1 398 -2.8617910575121641e-03 + + 2.1443170309066772e-01 -5.1532137393951416e-01 + <_> + + 0 -1 399 1.9125089747831225e-03 + + 1.4483030140399933e-01 -6.1175411939620972e-01 + <_> + + 0 -1 400 4.8059499822556973e-03 + + -4.4235628843307495e-01 1.3466580212116241e-01 + <_> + + 0 -1 401 -9.5777623355388641e-02 + + -4.8914781212806702e-01 1.3169640302658081e-01 + <_> + + 0 -1 402 -8.9395968243479729e-03 + + 1.4790549874305725e-01 -4.6696281433105469e-01 + <_> + + 0 -1 403 8.1128235906362534e-03 + + 5.0671331584453583e-02 -4.0227508544921875e-01 + <_> + + 0 -1 404 2.2638900554738939e-04 + + -5.0928252935409546e-01 8.2113206386566162e-02 + <_> + + 0 -1 405 -6.1516009736806154e-04 + + -3.8136801123619080e-01 1.0157950222492218e-01 + <_> + + 0 -1 406 -3.2050691079348326e-03 + + -5.8352458477020264e-01 6.2385398894548416e-02 + <_> + + 0 -1 407 5.4250762332230806e-04 + + -2.5548499822616577e-01 1.4832200109958649e-01 + <_> + + 0 -1 408 1.0713520459830761e-03 + + -3.5334318876266479e-01 1.1791589856147766e-01 + <_> + + 0 -1 409 -1.7755989683791995e-03 + + -3.4087279438972473e-01 9.4740107655525208e-02 + <_> + + 0 -1 410 -9.3014203011989594e-02 + + 7.4685460329055786e-01 -5.2443340420722961e-02 + <_> + + 0 -1 411 -1.4192130416631699e-02 + + -3.1433999538421631e-01 9.0452186763286591e-02 + <_> + + 0 -1 412 -5.3375191055238247e-04 + + 1.4119710028171539e-01 -2.0296710729598999e-01 + <_> + + 0 -1 413 9.4844609498977661e-02 + + 1.4625679701566696e-02 -6.2215209007263184e-01 + <_> + + 0 -1 414 1.1853160103783011e-03 + + -2.5984010100364685e-01 1.2153120338916779e-01 + <_> + + 0 -1 415 -2.4541220627725124e-03 + + 7.1894593536853790e-02 -3.9803519845008850e-01 + <_> + + 0 -1 416 6.8703000433743000e-03 + + 6.8626098334789276e-02 -3.8565808534622192e-01 + <_> + + 0 -1 417 -6.0411270707845688e-02 + + -4.8482391238212585e-01 2.0706020295619965e-02 + <_> + + 0 -1 418 -4.6826168545521796e-04 + + 9.5856241881847382e-02 -3.1230351328849792e-01 + <_> + + 0 -1 419 -3.3507338957861066e-04 + + 7.8128658235073090e-02 -9.4751000404357910e-02 + <_> + + 0 -1 420 3.6313060671091080e-02 + + 4.4824421405792236e-02 -6.3693147897720337e-01 + <_> + + 0 -1 421 3.8052719901315868e-04 + + -2.1931269764900208e-01 1.1780519783496857e-01 + <_> + + 0 -1 422 -5.0964631140232086e-02 + + 5.5783379077911377e-01 -4.3869689106941223e-02 + <_> + + 0 -1 423 -7.6198756694793701e-02 + + 6.7789608240127563e-01 -1.7935890704393387e-02 + <_> + + 0 -1 424 -1.2677020393311977e-02 + + -6.0731011629104614e-01 4.9086190760135651e-02 + <_> + + 0 -1 425 -3.6766629200428724e-03 + + 1.5226639807224274e-01 -1.9953680038452148e-01 + <_> + + 0 -1 426 -3.8846738636493683e-02 + + -7.7045238018035889e-01 3.3732470124959946e-02 + <_> + + 0 -1 427 9.4217229634523392e-03 + + -6.9929488003253937e-02 1.3669140636920929e-01 + <_> + + 0 -1 428 7.3391180485486984e-03 + + -1.2133339792490005e-01 2.1175499260425568e-01 + <_> + + 0 -1 429 1.2211379595100880e-02 + + 6.7636847496032715e-02 -4.3353718519210815e-01 + <_> + + 0 -1 430 -9.3064550310373306e-03 + + -3.4682491421699524e-01 6.4062312245368958e-02 + <_> + + 0 -1 431 5.2111309021711349e-02 + + -3.4146990627050400e-02 3.8904741406440735e-01 + <_> + + 0 -1 432 -4.3582019861787558e-04 + + 1.3956509530544281e-01 -1.8289420008659363e-01 + <_> + + 0 -1 433 -1.0575359687209129e-02 + + -2.7782461047172546e-01 8.5667066276073456e-02 + <_> + + 0 -1 434 1.4794029993936419e-03 + + -2.3154720664024353e-01 1.1765889823436737e-01 + <_> + + 0 -1 435 9.4746891409158707e-03 + + -1.3345280289649963e-01 1.8066969513893127e-01 + <_> + + 0 -1 436 8.3355188369750977e-02 + + 3.3563960343599319e-02 -7.2860741615295410e-01 + <_> + + 0 -1 437 -6.6629007458686829e-02 + + 3.8058251142501831e-01 -3.3490750938653946e-02 + <_> + + 0 -1 438 5.0287488847970963e-03 + + -1.1418010294437408e-01 2.1534989774227142e-01 + <_> + + 0 -1 439 5.1222002506256104e-01 + + 7.6377480290830135e-03 -6.5067559480667114e-01 + <_> + + 0 -1 440 1.2300059944391251e-01 + + 3.8879081606864929e-02 -5.9420442581176758e-01 + <_> + + 0 -1 441 -1.1227129725739360e-03 + + 1.0235410183668137e-01 -1.1207509785890579e-01 + <_> + + 0 -1 442 -6.2220949679613113e-02 + + -5.1173472404479980e-01 4.1879799216985703e-02 + <_> + + 0 -1 443 -2.6323389261960983e-02 + + 3.4005990624427795e-01 -5.0624471157789230e-02 + <_> + + 0 -1 444 -1.8875019624829292e-02 + + -5.4550838470458984e-01 4.1524920612573624e-02 + <_> + + 0 -1 445 -3.4034788608551025e-01 + + -9.1541802883148193e-01 1.6561320051550865e-02 + <_> + + 0 -1 446 -8.0456008436158299e-04 + + 1.4270770549774170e-01 -1.2901450693607330e-01 + <_> + + 0 -1 447 -3.9579509757459164e-03 + + -3.3408370614051819e-01 5.8637548238039017e-02 + <_> + + 0 -1 448 1.8336549401283264e-02 + + -4.5632220804691315e-02 5.2696329355239868e-01 + <_> + + 0 -1 449 -5.7686101645231247e-02 + + -5.7604360580444336e-01 3.9550099521875381e-02 + <_> + + 0 -1 450 -8.6881890892982483e-03 + + 2.0929679274559021e-01 -1.0309000313282013e-01 + <_> + + 0 -1 451 2.0318549871444702e-01 + + 9.4080818817019463e-03 -9.9389547109603882e-01 + <_> + + 0 -1 452 2.0097799599170685e-02 + + 5.6577399373054504e-02 -3.7819018959999084e-01 + <_> + + 0 -1 453 1.3217139989137650e-02 + + -7.4322126805782318e-02 1.7874650657176971e-01 + <_> + + 0 -1 454 -9.1346688568592072e-03 + + -4.9356880784034729e-01 3.7799369543790817e-02 + <_> + + 0 -1 455 8.7239191634580493e-04 + + -1.3848680257797241e-01 1.1516919732093811e-01 + <_> + + 0 -1 456 -3.4609009162522852e-04 + + -1.6371829807758331e-01 1.1949790269136429e-01 + <_> + + 0 -1 457 -9.8570866975933313e-04 + + -5.4642897844314575e-01 4.4689279049634933e-02 + <_> + + 0 -1 458 1.0218559764325619e-02 + + -1.1570169776678085e-01 1.6723839938640594e-01 + <_> + + 0 -1 459 2.6702679693698883e-02 + + 4.3922040611505508e-02 -4.5120438933372498e-01 + <_> + + 0 -1 460 -2.0299260504543781e-03 + + 1.1932279914617538e-01 -1.6979490220546722e-01 + <_> + + 0 -1 461 -8.8023602962493896e-02 + + -8.0279791355133057e-01 9.4295190647244453e-03 + <_> + + 0 -1 462 -1.3109110295772552e-02 + + -3.0865308642387390e-01 6.0802049934864044e-02 + <_> + + 0 -1 463 -9.9501870572566986e-03 + + 1.8400619924068451e-01 -4.6465478837490082e-02 + <_> + + 0 -1 464 -3.4293539356440306e-03 + + 2.6682999730110168e-01 -9.9338643252849579e-02 + <_> + + 0 -1 465 5.4729141294956207e-02 + + 2.8731130063533783e-02 -7.7745848894119263e-01 + <_> + + 0 -1 466 7.2012972086668015e-03 + + 4.4892478734254837e-02 -3.8289341330528259e-01 + <_> + + 0 -1 467 4.2047120630741119e-02 + + -2.2562339901924133e-02 4.0646651387214661e-01 + <_> + + 0 -1 468 4.4444389641284943e-03 + + 9.1204106807708740e-02 -1.8748210370540619e-01 + <_> + + 0 -1 469 2.8441840782761574e-02 + + 4.0668040513992310e-02 -4.0552121400833130e-01 + <_> + + 0 -1 470 -1.5141829848289490e-02 + + 2.4799869954586029e-01 -8.3607338368892670e-02 + <_> + + 0 -1 471 3.9388090372085571e-02 + + 2.4279279634356499e-02 -7.6827299594879150e-01 + <_> + + 0 -1 472 6.1649468261748552e-04 + + -1.7249910533428192e-01 1.0311610251665115e-01 + <_> + + 0 -1 473 2.6001650840044022e-02 + + 2.2825349122285843e-02 -7.7545452117919922e-01 + <_> + + 0 -1 474 1.4940380351617932e-03 + + -1.1028409749269485e-01 1.6966749727725983e-01 + <_> + + 0 -1 475 -1.3777149841189384e-02 + + -3.8424721360206604e-01 3.0320269986987114e-02 + <_> + + 0 -1 476 9.9619822576642036e-03 + + -5.3764659911394119e-02 3.7887129187583923e-01 + <_> + + 0 -1 477 3.2952039036899805e-03 + + 9.4384163618087769e-02 -3.2762721180915833e-01 + <_> + + 0 -1 478 5.7747410610318184e-03 + + 5.7114940136671066e-02 -3.0719769001007080e-01 + <_> + + 0 -1 479 -4.8392590135335922e-02 + + 1.7021059989929199e-01 -8.7045513093471527e-02 + <_> + + 0 -1 480 5.6376052089035511e-04 + + -9.3816302716732025e-02 2.0642310380935669e-01 + <_> + + 0 -1 481 -2.3873809725046158e-02 + + -3.0082350969314575e-01 1.7477719113230705e-02 + <_> + + 0 -1 482 -1.0526900179684162e-02 + + -3.4418928623199463e-01 5.7995639741420746e-02 + <_> + + 0 -1 483 2.2288670763373375e-02 + + -5.7179849594831467e-02 1.9739510118961334e-01 + <_> + + 0 -1 484 -1.4589070342481136e-02 + + -4.5168799161911011e-01 4.1490409523248672e-02 + <_> + + 0 -1 485 -4.6936370432376862e-02 + + 2.0457950234413147e-01 -5.1769189536571503e-02 + <_> + + 0 -1 486 5.3777720313519239e-04 + + -3.9481449127197266e-01 4.5076690614223480e-02 + <_> + + 0 -1 487 -2.2181039676070213e-03 + + -2.4575619399547577e-01 1.0261219739913940e-01 + <_> + + 0 -1 488 3.5076549649238586e-01 + + 1.9791129976511002e-02 -9.5161467790603638e-01 + <_> + + 0 -1 489 -2.6712059974670410e-02 + + 2.2393140196800232e-01 -4.5580100268125534e-02 + <_> + + 0 -1 490 -3.9627091027796268e-03 + + -2.4207019805908203e-01 7.6588593423366547e-02 + <_> + + 0 -1 491 -4.7878702171146870e-03 + + 1.2655270099639893e-01 -1.1964710056781769e-01 + <_> + + 0 -1 492 7.1042939089238644e-03 + + -9.2130422592163086e-02 2.1519139409065247e-01 + <_> + + 0 -1 493 -2.2581929442822002e-05 + + 6.0634609311819077e-02 -1.5848989784717560e-01 + <_> + + 0 -1 494 -7.8060641884803772e-02 + + 3.4822109341621399e-01 -5.3173709660768509e-02 + <_> + + 0 -1 495 2.7555850148200989e-01 + + 7.4112107977271080e-03 -1.0000040531158447e+00 + <_> + + 0 -1 496 1.9652329385280609e-01 + + 2.0131109282374382e-02 -8.5326671600341797e-01 + <_> + + 0 -1 497 -1.6801860183477402e-03 + + 7.7082179486751556e-02 -2.2620369493961334e-01 + <_> + 71 + -1.9982930421829224e+00 + + <_> + + 0 -1 498 -1.8814710900187492e-02 + + 3.7744289636611938e-01 -4.0770640969276428e-01 + <_> + + 0 -1 499 -2.3191049695014954e-02 + + 3.4049031138420105e-01 -3.6144611239433289e-01 + <_> + + 0 -1 500 3.1333088874816895e-02 + + -4.3613511323928833e-01 1.9668689370155334e-01 + <_> + + 0 -1 501 -1.1318700388073921e-02 + + 1.1685170233249664e-01 -5.6359791755676270e-01 + <_> + + 0 -1 502 -3.1084290822036564e-04 + + -4.3396338820457458e-01 1.4264069497585297e-01 + <_> + + 0 -1 503 8.7350063025951385e-02 + + -1.9952809810638428e-01 3.3043611049652100e-01 + <_> + + 0 -1 504 -2.9018519446253777e-02 + + 3.2315209507942200e-01 -2.1707040071487427e-01 + <_> + + 0 -1 505 5.9860680252313614e-02 + + -1.8764750659465790e-01 2.7651038765907288e-01 + <_> + + 0 -1 506 -2.9682170599699020e-02 + + -4.6436330676078796e-01 1.1129009723663330e-01 + <_> + + 0 -1 507 -2.2648361045867205e-03 + + -2.7163028717041016e-01 8.6916759610176086e-02 + <_> + + 0 -1 508 -1.6869819955900311e-03 + + 1.7998990416526794e-01 -2.7152928709983826e-01 + <_> + + 0 -1 509 1.0256370296701789e-03 + + -4.3248209357261658e-01 1.0256689786911011e-01 + <_> + + 0 -1 510 -3.1762920320034027e-02 + + -6.4419168233871460e-01 6.7505106329917908e-02 + <_> + + 0 -1 511 -8.5913296788930893e-03 + + -3.7672510743141174e-01 7.2900757193565369e-02 + <_> + + 0 -1 512 -2.1636451128870249e-03 + + -4.2209509015083313e-01 1.0724630206823349e-01 + <_> + + 0 -1 513 6.0111237689852715e-04 + + 6.1302110552787781e-02 -3.8004979491233826e-01 + <_> + + 0 -1 514 -6.1244412790983915e-05 + + 7.4765786528587341e-02 -5.2644491195678711e-01 + <_> + + 0 -1 515 -2.3666430264711380e-02 + + -5.6801301240921021e-01 3.6377541720867157e-02 + <_> + + 0 -1 516 -1.4256609603762627e-02 + + -5.3446692228317261e-01 6.2768869102001190e-02 + <_> + + 0 -1 517 -1.5713909640908241e-02 + + 3.1898561120033264e-01 -1.1541239917278290e-01 + <_> + + 0 -1 518 -5.9286020696163177e-02 + + -5.7135957479476929e-01 8.1775680184364319e-02 + <_> + + 0 -1 519 -4.4122908264398575e-02 + + -7.0591008663177490e-01 2.0833099260926247e-02 + <_> + + 0 -1 520 -7.2728260420262814e-04 + + 1.0819850116968155e-01 -3.8077458739280701e-01 + <_> + + 0 -1 521 -6.6653728485107422e-02 + + -6.0824638605117798e-01 4.3248821049928665e-02 + <_> + + 0 -1 522 2.3679709993302822e-03 + + -2.9793098568916321e-01 1.2091939896345139e-01 + <_> + + 0 -1 523 3.3566180616617203e-02 + + 3.6464620381593704e-02 -5.5766987800598145e-01 + <_> + + 0 -1 524 -5.3138811141252518e-02 + + -5.6245392560958862e-01 6.5296277403831482e-02 + <_> + + 0 -1 525 -2.9401908977888525e-04 + + -5.8417952060699463e-01 5.0005510449409485e-02 + <_> + + 0 -1 526 -4.8085048911161721e-04 + + 1.4018669724464417e-01 -2.4792720377445221e-01 + <_> + + 0 -1 527 4.7777060419321060e-02 + + 5.5672798305749893e-02 -5.9540742635726929e-01 + <_> + + 0 -1 528 3.3423870801925659e-02 + + -1.4370389282703400e-01 2.3300980031490326e-01 + <_> + + 0 -1 529 2.0432810485363007e-01 + + 4.5327048748731613e-02 -7.4164307117462158e-01 + <_> + + 0 -1 530 1.4106060564517975e-01 + + -3.9674291014671326e-01 8.1692866981029510e-02 + <_> + + 0 -1 531 1.0005939839174971e-04 + + -2.2317939996719360e-01 1.3917629420757294e-01 + <_> + + 0 -1 532 6.0689389705657959e-02 + + 3.4324988722801208e-02 -8.2796847820281982e-01 + <_> + + 0 -1 533 -3.6456179805099964e-03 + + 1.5286439657211304e-01 -1.4005979895591736e-01 + <_> + + 0 -1 534 3.1945340335369110e-02 + + 6.5343692898750305e-02 -4.4296088814735413e-01 + <_> + + 0 -1 535 2.3428380489349365e-02 + + 2.5527309626340866e-02 -6.3270658254623413e-01 + <_> + + 0 -1 536 4.6067949384450912e-02 + + 4.3579101562500000e-02 -6.4929872751235962e-01 + <_> + + 0 -1 537 -5.8055151253938675e-02 + + -6.3957542181015015e-01 1.4028750360012054e-02 + <_> + + 0 -1 538 3.8783740252256393e-02 + + 5.1233518868684769e-02 -5.4144388437271118e-01 + <_> + + 0 -1 539 -1.2765520252287388e-02 + + 2.7082890272140503e-01 -9.1927766799926758e-02 + <_> + + 0 -1 540 -3.1400551088154316e-03 + + -3.4679821133613586e-01 8.3973668515682220e-02 + <_> + + 0 -1 541 -1.9719999283552170e-02 + + -2.0476959645748138e-01 6.3232198357582092e-02 + <_> + + 0 -1 542 3.2241051085293293e-03 + + 9.6259713172912598e-02 -2.8098219633102417e-01 + <_> + + 0 -1 543 -5.9271860867738724e-02 + + -2.6686909794807434e-01 3.2907258719205856e-02 + <_> + + 0 -1 544 1.5636639669537544e-02 + + 6.9188073277473450e-02 -4.1761711239814758e-01 + <_> + + 0 -1 545 -8.8900122791528702e-03 + + 1.9603550434112549e-01 -1.1249750107526779e-01 + <_> + + 0 -1 546 2.4458909407258034e-02 + + 5.6988969445228577e-02 -5.1025021076202393e-01 + <_> + + 0 -1 547 1.0101319849491119e-01 + + 9.4210049137473106e-03 -3.6691328883171082e-01 + <_> + + 0 -1 548 9.0739831328392029e-02 + + 5.3999878466129303e-02 -5.1181477308273315e-01 + <_> + + 0 -1 549 -4.9557868391275406e-02 + + -6.2467038631439209e-01 4.0988270193338394e-02 + <_> + + 0 -1 550 2.6558348536491394e-01 + + -8.6136549711227417e-02 3.2438439130783081e-01 + <_> + + 0 -1 551 1.8632459687069058e-03 + + -5.4563361406326294e-01 5.8684051036834717e-02 + <_> + + 0 -1 552 1.1804940178990364e-02 + + -2.0603899657726288e-01 1.4167340099811554e-01 + <_> + + 0 -1 553 6.8137067137286067e-04 + + -2.0806470513343811e-01 9.2627376317977905e-02 + <_> + + 0 -1 554 5.7278381427749991e-04 + + -4.3170881271362305e-01 6.3360363245010376e-02 + <_> + + 0 -1 555 -1.1041999794542789e-02 + + 1.8144379556179047e-01 -4.1707839816808701e-02 + <_> + + 0 -1 556 9.5696747303009033e-03 + + -1.2098339945077896e-01 2.1607619524002075e-01 + <_> + + 0 -1 557 7.4274197220802307e-02 + + 2.6399549096822739e-02 -7.7601867914199829e-01 + <_> + + 0 -1 558 -2.5815829634666443e-02 + + 5.3497368097305298e-01 -5.2025150507688522e-02 + <_> + + 0 -1 559 -6.3314691185951233e-02 + + 5.1900321245193481e-01 -1.9329590722918510e-02 + <_> + + 0 -1 560 -6.6432490944862366e-02 + + 7.2140932083129883e-01 -3.2882031053304672e-02 + <_> + + 0 -1 561 -7.5749039649963379e-02 + + 4.1485249996185303e-01 -5.5451728403568268e-02 + <_> + + 0 -1 562 -2.0296040922403336e-02 + + -3.3250689506530762e-01 8.2397893071174622e-02 + <_> + + 0 -1 563 2.2172650322318077e-02 + + -1.4419150352478027e-01 1.7280860245227814e-01 + <_> + + 0 -1 564 4.2085880413651466e-03 + + -3.0237489938735962e-01 8.6699083447456360e-02 + <_> + + 0 -1 565 6.8267330527305603e-02 + + 8.7291244417428970e-03 -3.6955729126930237e-01 + <_> + + 0 -1 566 5.1220320165157318e-03 + + -2.0824980735778809e-01 1.4530059695243835e-01 + <_> + + 0 -1 567 -5.3114328533411026e-02 + + -5.5142301321029663e-01 4.3421190232038498e-02 + <_> + + 0 -1 568 -4.9739979207515717e-02 + + 4.4077101349830627e-01 -6.4349673688411713e-02 + <_> + 94 + -1.8377989530563354e+00 + + <_> + + 0 -1 569 -3.3883380820043385e-04 + + 1.8997849524021149e-01 -4.6184849739074707e-01 + <_> + + 0 -1 570 -1.5632030554115772e-03 + + 1.9381409883499146e-01 -4.3518841266632080e-01 + <_> + + 0 -1 571 1.5552520053461194e-03 + + -4.7420310974121094e-01 1.2137629836797714e-01 + <_> + + 0 -1 572 -3.1417120248079300e-02 + + -3.9096689224243164e-01 1.0951930284500122e-01 + <_> + + 0 -1 573 -3.2835190650075674e-03 + + 1.6428950428962708e-01 -3.2751929759979248e-01 + <_> + + 0 -1 574 5.8749080635607243e-03 + + 7.6225973665714264e-02 -4.3470710515975952e-01 + <_> + + 0 -1 575 4.4846539385616779e-03 + + 1.2197560071945190e-01 -4.4872379302978516e-01 + <_> + + 0 -1 576 1.9835829734802246e-03 + + -6.2911021709442139e-01 1.0122530162334442e-01 + <_> + + 0 -1 577 1.2609469704329967e-02 + + 1.0438250005245209e-01 -3.5015499591827393e-01 + <_> + + 0 -1 578 -4.7475768951699138e-04 + + 1.1008159816265106e-01 -3.0429539084434509e-01 + <_> + + 0 -1 579 3.2356760930269957e-03 + + -2.7057901024818420e-01 1.2746180593967438e-01 + <_> + + 0 -1 580 9.9898613989353180e-03 + + 6.3906982541084290e-02 -4.7118431329727173e-01 + <_> + + 0 -1 581 5.6069239508360624e-04 + + -3.1783330440521240e-01 1.0404340177774429e-01 + <_> + + 0 -1 582 -5.7694699615240097e-02 + + -5.1342570781707764e-01 2.6394980028271675e-02 + <_> + + 0 -1 583 5.5947788059711456e-03 + + 7.6774753630161285e-02 -4.3374261260032654e-01 + <_> + + 0 -1 584 -3.8770840037614107e-03 + + 1.3988199830055237e-01 -2.0221559703350067e-01 + <_> + + 0 -1 585 -4.7874201089143753e-02 + + -4.7928389906883240e-01 6.8043030798435211e-02 + <_> + + 0 -1 586 2.5817550718784332e-02 + + -4.5524198561906815e-02 3.9452901482582092e-01 + <_> + + 0 -1 587 1.6696650709491223e-04 + + -3.0880719423294067e-01 1.0875239968299866e-01 + <_> + + 0 -1 588 9.8888948559761047e-04 + + 6.8699032068252563e-02 -4.1813009977340698e-01 + <_> + + 0 -1 589 -3.4260770771652460e-03 + + -2.8929701447486877e-01 1.1479649692773819e-01 + <_> + + 0 -1 590 6.6044367849826813e-02 + + 1.6809269785881042e-02 -3.3534801006317139e-01 + <_> + + 0 -1 591 2.8318059630692005e-03 + + -3.9482170343399048e-01 8.5598722100257874e-02 + <_> + + 0 -1 592 4.2680549621582031e-01 + + 5.0977780483663082e-03 -5.9331178665161133e-01 + <_> + + 0 -1 593 1.1960650235414505e-01 + + 2.7437770739197731e-02 -7.6616281270980835e-01 + <_> + + 0 -1 594 1.9571319222450256e-02 + + -1.1966180056333542e-01 2.3962239921092987e-01 + <_> + + 0 -1 595 -1.7432469874620438e-02 + + -5.8530348539352417e-01 5.6400340050458908e-02 + <_> + + 0 -1 596 -1.1196629703044891e-01 + + -6.7248320579528809e-01 2.9150659218430519e-02 + <_> + + 0 -1 597 -4.5747519470751286e-03 + + -4.7730261087417603e-01 5.6612998247146606e-02 + <_> + + 0 -1 598 -5.1501519046723843e-03 + + 1.1510629951953888e-01 -1.0732329636812210e-01 + <_> + + 0 -1 599 2.9034249484539032e-02 + + -5.3368709981441498e-02 6.4226460456848145e-01 + <_> + + 0 -1 600 -1.8050910439342260e-03 + + 1.2795349955558777e-01 -1.2329389899969101e-01 + <_> + + 0 -1 601 -2.4374839849770069e-03 + + -3.5312348604202271e-01 8.7703153491020203e-02 + <_> + + 0 -1 602 -1.9070079550147057e-02 + + -4.0662440657615662e-01 4.3273188173770905e-02 + <_> + + 0 -1 603 -5.0454240292310715e-02 + + -8.1198102235794067e-01 2.8289109468460083e-02 + <_> + + 0 -1 604 1.6544000245630741e-03 + + -1.6964040696620941e-01 1.2194740027189255e-01 + <_> + + 0 -1 605 -4.6791311353445053e-02 + + 4.0614441037178040e-01 -6.1174858361482620e-02 + <_> + + 0 -1 606 -5.5953849107027054e-02 + + -8.2662910223007202e-01 2.7774749323725700e-02 + <_> + + 0 -1 607 1.4469559537246823e-03 + + -1.4953869581222534e-01 1.5966990590095520e-01 + <_> + + 0 -1 608 -1.2529050000011921e-02 + + -4.2504650354385376e-01 2.1658079698681831e-02 + <_> + + 0 -1 609 1.1086500016972423e-03 + + -3.6006990075111389e-01 6.4415097236633301e-02 + <_> + + 0 -1 610 3.9361778646707535e-02 + + 8.2419048994779587e-03 -7.5303071737289429e-01 + <_> + + 0 -1 611 1.8823929131031036e-02 + + 4.4821120798587799e-02 -5.0604110956192017e-01 + <_> + + 0 -1 612 -3.2083000987768173e-02 + + 3.1431311368942261e-01 -3.9181869477033615e-02 + <_> + + 0 -1 613 -3.1081929802894592e-02 + + -7.6903742551803589e-01 3.0742960050702095e-02 + <_> + + 0 -1 614 2.3218210786581039e-02 + + -5.7748749852180481e-02 2.8955349326133728e-01 + <_> + + 0 -1 615 -1.1492100311443210e-03 + + 1.1501409858465195e-01 -1.9310690462589264e-01 + <_> + + 0 -1 616 -1.6593940556049347e-02 + + -4.2298540472984314e-01 4.3738979846239090e-02 + <_> + + 0 -1 617 -1.0146570391952991e-02 + + 2.5579848885536194e-01 -9.1966241598129272e-02 + <_> + + 0 -1 618 -1.3054019771516323e-02 + + 1.8339529633522034e-01 -4.0160831063985825e-02 + <_> + + 0 -1 619 3.7463540211319923e-03 + + -1.2586769461631775e-01 2.2247019410133362e-01 + <_> + + 0 -1 620 -4.8463590443134308e-02 + + -5.8155900239944458e-01 2.9713390395045280e-02 + <_> + + 0 -1 621 6.4649381674826145e-03 + + 9.3169108033180237e-02 -2.9046580195426941e-01 + <_> + + 0 -1 622 1.5607809647917747e-02 + + 4.7331970185041428e-02 -4.4805559515953064e-01 + <_> + + 0 -1 623 -5.8314641937613487e-03 + + 9.8941758275032043e-02 -2.2056859731674194e-01 + <_> + + 0 -1 624 7.3607802391052246e-02 + + 1.6780460253357887e-02 -5.4953122138977051e-01 + <_> + + 0 -1 625 -6.4223129302263260e-03 + + -2.9647961258888245e-01 7.3539912700653076e-02 + <_> + + 0 -1 626 2.2267029635258950e-05 + + -3.4211820363998413e-01 4.1858270764350891e-02 + <_> + + 0 -1 627 3.7273630499839783e-02 + + 2.7458079159259796e-02 -7.8551971912384033e-01 + <_> + + 0 -1 628 4.2738770134747028e-03 + + -8.2514517009258270e-02 1.0404880344867706e-01 + <_> + + 0 -1 629 1.1906049912795424e-03 + + -1.6300439834594727e-01 1.5300649404525757e-01 + <_> + + 0 -1 630 8.7800435721874237e-03 + + -9.2885948717594147e-02 1.3147510588169098e-01 + <_> + + 0 -1 631 2.4151368997991085e-03 + + 4.7598559409379959e-02 -4.4829669594764709e-01 + <_> + + 0 -1 632 -2.7428340166807175e-02 + + 1.9811069965362549e-01 -5.5979698896408081e-02 + <_> + + 0 -1 633 -1.4117059763520956e-03 + + -2.1138970553874969e-01 1.0409740358591080e-01 + <_> + + 0 -1 634 -2.0210200548171997e-01 + + -7.7120232582092285e-01 7.0582218468189240e-03 + <_> + + 0 -1 635 -4.1451320052146912e-02 + + 2.8295141458511353e-01 -7.1323528885841370e-02 + <_> + + 0 -1 636 4.8561887815594673e-03 + + 8.6693897843360901e-02 -2.3541820049285889e-01 + <_> + + 0 -1 637 -4.4662880100077018e-05 + + 1.3257139921188354e-01 -2.0168599486351013e-01 + <_> + + 0 -1 638 3.7671580910682678e-02 + + -7.4952289462089539e-02 3.3843380212783813e-01 + <_> + + 0 -1 639 7.4343256652355194e-02 + + 3.2905030995607376e-02 -7.3536777496337891e-01 + <_> + + 0 -1 640 -1.0186419822275639e-02 + + -3.1277081370353699e-01 4.4163990765810013e-02 + <_> + + 0 -1 641 -2.4506879970431328e-02 + + -6.1346518993377686e-01 2.9692139476537704e-02 + <_> + + 0 -1 642 -3.8238149136304855e-02 + + 3.5583540797233582e-01 -4.8388618975877762e-02 + <_> + + 0 -1 643 1.7983660101890564e-01 + + 1.9501589238643646e-02 -9.8485881090164185e-01 + <_> + + 0 -1 644 8.4765878273174167e-04 + + -2.7960330247879028e-01 7.8323036432266235e-02 + <_> + + 0 -1 645 3.7178809288889170e-03 + + 7.2525441646575928e-02 -2.4067409336566925e-01 + <_> + + 0 -1 646 -9.0932317078113556e-02 + + -7.1539151668548584e-01 8.8080493733286858e-03 + <_> + + 0 -1 647 -8.0087810754776001e-02 + + -6.7830717563629150e-01 2.4904320016503334e-02 + <_> + + 0 -1 648 7.6924148015677929e-03 + + -5.0967499613761902e-02 1.1952529847621918e-01 + <_> + + 0 -1 649 4.1485231369733810e-02 + + -4.9493920058012009e-02 3.5386860370635986e-01 + <_> + + 0 -1 650 3.4051608294248581e-02 + + 4.2200978845357895e-02 -5.0110721588134766e-01 + <_> + + 0 -1 651 -2.6235830038785934e-02 + + 4.4934839010238647e-01 -4.1851200163364410e-02 + <_> + + 0 -1 652 -5.1373958587646484e-02 + + -9.5942801237106323e-01 1.7192790284752846e-02 + <_> + + 0 -1 653 -2.6742739602923393e-02 + + -6.5632241964340210e-01 2.1778080612421036e-02 + <_> + + 0 -1 654 -1.3730529462918639e-03 + + -1.8638509511947632e-01 4.1139349341392517e-02 + <_> + + 0 -1 655 1.0963230160996318e-03 + + -1.4219370484352112e-01 1.3832019269466400e-01 + <_> + + 0 -1 656 -4.5011811889708042e-03 + + -1.8468600511550903e-01 9.1024190187454224e-02 + <_> + + 0 -1 657 4.4253250234760344e-04 + + -1.2736940383911133e-01 1.3655360043048859e-01 + <_> + + 0 -1 658 3.0500710010528564e-02 + + -5.8146148920059204e-02 2.4189910292625427e-01 + <_> + + 0 -1 659 -1.1691919714212418e-01 + + -5.5466407537460327e-01 3.0249029397964478e-02 + <_> + + 0 -1 660 -9.5684931147843599e-04 + + 5.1899868994951248e-02 -1.4152799546718597e-01 + <_> + + 0 -1 661 1.3096149777993560e-03 + + -1.4248229563236237e-01 1.2227780371904373e-01 + <_> + + 0 -1 662 3.4988880157470703e-02 + + 2.7653129771351814e-02 -6.1738812923431396e-01 + <_> + 82 + -1.9031070470809937e+00 + + <_> + + 0 -1 663 1.6489429771900177e-01 + + -2.5657209753990173e-01 4.1277718544006348e-01 + <_> + + 0 -1 664 2.0584860816597939e-02 + + -5.2442210912704468e-01 1.4910830557346344e-01 + <_> + + 0 -1 665 8.8764587417244911e-04 + + 1.3334700465202332e-01 -5.2259522676467896e-01 + <_> + + 0 -1 666 -1.3320889556780457e-03 + + -3.6568748950958252e-01 2.0482279360294342e-01 + <_> + + 0 -1 667 7.7916197478771210e-02 + + -2.1557159721851349e-01 3.1069579720497131e-01 + <_> + + 0 -1 668 2.4321360979229212e-03 + + -4.4742551445960999e-01 1.0638339817523956e-01 + <_> + + 0 -1 669 -5.8699389919638634e-03 + + -3.8800778985023499e-01 1.4410589635372162e-01 + <_> + + 0 -1 670 6.9754302501678467e-02 + + 1.3224910013377666e-02 -8.0096632242202759e-01 + <_> + + 0 -1 671 3.8338101003319025e-03 + + -4.3139308691024780e-01 1.4253990352153778e-01 + <_> + + 0 -1 672 -1.5829030424356461e-02 + + 3.0954799056053162e-01 -1.2232720106840134e-01 + <_> + + 0 -1 673 6.6198296844959259e-02 + + -2.0558249950408936e-01 1.9531220197677612e-01 + <_> + + 0 -1 674 1.7639519646763802e-02 + + 1.0770589858293533e-01 -4.3488320708274841e-01 + <_> + + 0 -1 675 -1.1082629673182964e-02 + + -3.6149570345878601e-01 1.1327210068702698e-01 + <_> + + 0 -1 676 -3.6515299230813980e-02 + + -4.3912211060523987e-01 5.5279448628425598e-02 + <_> + + 0 -1 677 -3.3373299986124039e-02 + + -5.6869208812713623e-01 8.4043957293033600e-02 + <_> + + 0 -1 678 8.1395559012889862e-02 + + -1.4235010743141174e-01 2.8748288750648499e-01 + <_> + + 0 -1 679 -4.3892292305827141e-03 + + -3.4859830141067505e-01 1.1650340259075165e-01 + <_> + + 0 -1 680 -6.3558202236890793e-03 + + -3.3823049068450928e-01 1.1005490273237228e-01 + <_> + + 0 -1 681 2.0912459120154381e-02 + + 7.8197829425334930e-02 -4.6337550878524780e-01 + <_> + + 0 -1 682 1.1600360274314880e-01 + + -2.0528669655323029e-01 1.5923389792442322e-01 + <_> + + 0 -1 683 1.6316600143909454e-02 + + -1.0633999854326248e-01 3.3453521132469177e-01 + <_> + + 0 -1 684 -2.8488141298294067e-01 + + 5.1638001203536987e-01 -3.9357859641313553e-03 + <_> + + 0 -1 685 2.4155430495738983e-02 + + -7.1670228242874146e-01 5.0031550228595734e-02 + <_> + + 0 -1 686 1.1413260363042355e-02 + + 5.9236031025648117e-02 -3.8141900300979614e-01 + <_> + + 0 -1 687 -2.4304199963808060e-02 + + 4.3475851416587830e-01 -8.6574159562587738e-02 + <_> + + 0 -1 688 -1.5267609851434827e-03 + + -6.4307600259780884e-01 5.1642779260873795e-02 + <_> + + 0 -1 689 1.0073349811136723e-02 + + 7.5743027031421661e-02 -4.2902961373329163e-01 + <_> + + 0 -1 690 -8.1224881112575531e-02 + + -4.0827330946922302e-01 5.5444631725549698e-02 + <_> + + 0 -1 691 1.5149010345339775e-02 + + 5.3084861487150192e-02 -5.4495412111282349e-01 + <_> + + 0 -1 692 -5.3490739315748215e-02 + + -4.7422149777412415e-01 3.9420779794454575e-02 + <_> + + 0 -1 693 -4.0884271264076233e-02 + + -8.8557797670364380e-01 3.2042708247900009e-02 + <_> + + 0 -1 694 -4.2768509592860937e-04 + + -3.0554470419883728e-01 5.1432881504297256e-02 + <_> + + 0 -1 695 1.8441269174218178e-02 + + 8.0688089132308960e-02 -3.5884049534797668e-01 + <_> + + 0 -1 696 -4.7630790621042252e-02 + + -4.6131908893585205e-01 6.0592770576477051e-02 + <_> + + 0 -1 697 8.2442145794630051e-03 + + 8.9793607592582703e-02 -3.7605780363082886e-01 + <_> + + 0 -1 698 1.0003759711980820e-01 + + -8.3760380744934082e-02 3.9221811294555664e-01 + <_> + + 0 -1 699 -2.8420550748705864e-02 + + -6.9483548402786255e-01 4.9100410193204880e-02 + <_> + + 0 -1 700 5.6485999375581741e-02 + + 4.4795661233365536e-03 -7.5373399257659912e-01 + <_> + + 0 -1 701 1.0085420217365026e-03 + + -3.7881261110305786e-01 7.8376993536949158e-02 + <_> + + 0 -1 702 -1.2643639929592609e-03 + + 7.5486026704311371e-02 -3.1015640497207642e-01 + <_> + + 0 -1 703 1.4146340079605579e-02 + + -8.1805020570755005e-02 3.7313848733901978e-01 + <_> + + 0 -1 704 -3.1549399718642235e-03 + + -2.1241660416126251e-01 8.9129790663719177e-02 + <_> + + 0 -1 705 1.4796239556744695e-03 + + -2.1479040384292603e-01 1.3543279469013214e-01 + <_> + + 0 -1 706 -3.1343609094619751e-02 + + -5.8114588260650635e-01 4.8576328903436661e-02 + <_> + + 0 -1 707 -7.6149761676788330e-02 + + -5.3774517774581909e-01 4.8339068889617920e-02 + <_> + + 0 -1 708 -6.1668939888477325e-02 + + -8.4525662660598755e-01 1.7448999278713018e-04 + <_> + + 0 -1 709 -2.7084920555353165e-02 + + -5.0659137964248657e-01 4.7709420323371887e-02 + <_> + + 0 -1 710 -2.4240929633378983e-02 + + -3.8534450531005859e-01 5.0300780683755875e-02 + <_> + + 0 -1 711 4.1979398578405380e-02 + + -1.0378009825944901e-01 2.6236268877983093e-01 + <_> + + 0 -1 712 2.3717690259218216e-02 + + 5.6897271424531937e-02 -2.8959441184997559e-01 + <_> + + 0 -1 713 -1.8669789656996727e-02 + + -3.9924529194831848e-01 7.3442213237285614e-02 + <_> + + 0 -1 714 -1.4987000264227390e-02 + + -3.2296919822692871e-01 4.1676748543977737e-02 + <_> + + 0 -1 715 8.7209865450859070e-03 + + 1.3521389663219452e-01 -1.8224580585956573e-01 + <_> + + 0 -1 716 -1.2239219620823860e-02 + + 1.5540809929370880e-01 -1.5208069980144501e-01 + <_> + + 0 -1 717 -4.8744980245828629e-02 + + -3.6606758832931519e-01 6.3152566552162170e-02 + <_> + + 0 -1 718 -3.8249569479376078e-03 + + 8.3472989499568939e-02 -2.4186329543590546e-01 + <_> + + 0 -1 719 1.5581659972667694e-01 + + 3.1953960657119751e-02 -6.7813181877136230e-01 + <_> + + 0 -1 720 6.8241581320762634e-02 + + 1.5478439629077911e-02 -4.2029750347137451e-01 + <_> + + 0 -1 721 -9.5974646508693695e-02 + + -9.5647841691970825e-01 2.1444590762257576e-02 + <_> + + 0 -1 722 -1.2618429958820343e-02 + + -5.0544857978820801e-01 3.0875260010361671e-02 + <_> + + 0 -1 723 7.2727642953395844e-02 + + 4.7215349972248077e-02 -4.5075151324272156e-01 + <_> + + 0 -1 724 2.9923219233751297e-02 + + -8.1444352865219116e-02 3.1656229496002197e-01 + <_> + + 0 -1 725 1.9138090312480927e-02 + + 6.8187400698661804e-02 -3.4876790642738342e-01 + <_> + + 0 -1 726 -3.4314721822738647e-02 + + -5.5220371484756470e-01 3.7325009703636169e-02 + <_> + + 0 -1 727 5.2559198811650276e-03 + + 6.4786978065967560e-02 -3.6363509297370911e-01 + <_> + + 0 -1 728 1.4092399738729000e-02 + + -4.8704359680414200e-02 2.7677831053733826e-01 + <_> + + 0 -1 729 -9.0101473033428192e-03 + + 2.3452599346637726e-01 -1.3140350580215454e-01 + <_> + + 0 -1 730 9.6720218658447266e-02 + + 2.6661360636353493e-02 -7.7422797679901123e-01 + <_> + + 0 -1 731 8.5365071892738342e-02 + + 2.3529909551143646e-02 -7.0710861682891846e-01 + <_> + + 0 -1 732 2.4384429678320885e-02 + + -6.2648482620716095e-02 3.7251880764961243e-01 + <_> + + 0 -1 733 3.6380778998136520e-02 + + 4.3358739465475082e-02 -6.0222417116165161e-01 + <_> + + 0 -1 734 -5.3780268877744675e-02 + + -3.3441001176834106e-01 3.5700578242540359e-02 + <_> + + 0 -1 735 -1.4787100255489349e-02 + + 2.9136168956756592e-01 -7.4075296521186829e-02 + <_> + + 0 -1 736 1.2491010129451752e-03 + + 4.1654240339994431e-02 -9.3758836388587952e-02 + <_> + + 0 -1 737 -2.7572909370064735e-02 + + -3.1398218870162964e-01 7.2411999106407166e-02 + <_> + + 0 -1 738 -7.8866451978683472e-02 + + 6.0655838251113892e-01 -2.3838050663471222e-02 + <_> + + 0 -1 739 -6.9339312613010406e-02 + + 7.1137732267379761e-01 -2.9814269393682480e-02 + <_> + + 0 -1 740 9.4372592866420746e-02 + + 3.3579438924789429e-02 -5.9774041175842285e-01 + <_> + + 0 -1 741 -2.6048649102449417e-02 + + -4.0574911236763000e-01 5.5603530257940292e-02 + <_> + + 0 -1 742 -7.3630206286907196e-02 + + -6.0780352354049683e-01 2.5251649320125580e-02 + <_> + + 0 -1 743 -1.8610449507832527e-02 + + 2.4013559520244598e-01 -9.5389783382415771e-02 + <_> + + 0 -1 744 1.3329629600048065e-01 + + -6.9742381572723389e-02 1.3323000073432922e-01 + <_> + 112 + -1.6909840106964111e+00 + + <_> + + 0 -1 745 -4.1724857874214649e-03 + + 1.9310890138149261e-01 -4.9630740284919739e-01 + <_> + + 0 -1 746 9.6606701845303178e-04 + + -5.4340302944183350e-01 1.2434119731187820e-01 + <_> + + 0 -1 747 1.0261629940941930e-03 + + -4.6321579813957214e-01 1.1160290241241455e-01 + <_> + + 0 -1 748 3.6368470173329115e-03 + + 8.2918949425220490e-02 -3.6662510037422180e-01 + <_> + + 0 -1 749 -2.8364539612084627e-03 + + -6.7365992069244385e-01 6.5546013414859772e-02 + <_> + + 0 -1 750 -1.0111520532518625e-03 + + 1.4055189490318298e-01 -3.5270330309867859e-01 + <_> + + 0 -1 751 -2.5434889830648899e-03 + + 1.4191180467605591e-01 -2.8350821137428284e-01 + <_> + + 0 -1 752 3.3014779910445213e-03 + + 4.6553891152143478e-02 -4.8537290096282959e-01 + <_> + + 0 -1 753 -1.1802930384874344e-02 + + -3.7958830595016479e-01 9.2071913182735443e-02 + <_> + + 0 -1 754 -1.3293370138853788e-03 + + 1.7311429977416992e-01 -1.6890439391136169e-01 + <_> + + 0 -1 755 1.4958450198173523e-01 + + 3.7626601755619049e-02 -8.0016881227493286e-01 + <_> + + 0 -1 756 1.6352189704775810e-03 + + -2.0858129858970642e-01 1.5985429286956787e-01 + <_> + + 0 -1 757 1.5483440365642309e-03 + + -1.7578269541263580e-01 1.7560100555419922e-01 + <_> + + 0 -1 758 -3.5674259066581726e-02 + + -4.6057531237602234e-01 4.3983791023492813e-02 + <_> + + 0 -1 759 -1.4558699913322926e-02 + + -3.3587411046028137e-01 8.3965480327606201e-02 + <_> + + 0 -1 760 5.2891410887241364e-03 + + -3.5635179281234741e-01 9.4101972877979279e-02 + <_> + + 0 -1 761 -9.8066125065088272e-04 + + -4.4301840662956238e-01 6.4368210732936859e-02 + <_> + + 0 -1 762 -4.0704999119043350e-02 + + -5.9700322151184082e-01 1.7846770584583282e-02 + <_> + + 0 -1 763 2.9682040214538574e-02 + + 3.8127020001411438e-02 -6.6795140504837036e-01 + <_> + + 0 -1 764 -1.7841320368461311e-04 + + 7.4118576943874359e-02 -3.2121241092681885e-01 + <_> + + 0 -1 765 1.0050840210169554e-03 + + -2.0642249286174774e-01 1.2194109708070755e-01 + <_> + + 0 -1 766 -1.6711819916963577e-03 + + -2.6586419343948364e-01 7.1882687509059906e-02 + <_> + + 0 -1 767 -6.9955319166183472e-02 + + 5.0097060203552246e-01 -5.2172549068927765e-02 + <_> + + 0 -1 768 8.3406828343868256e-03 + + -6.9546110928058624e-02 1.6949440538883209e-01 + <_> + + 0 -1 769 1.5483159571886063e-02 + + -9.5865622162818909e-02 2.8736731410026550e-01 + <_> + + 0 -1 770 -4.2621988803148270e-02 + + -2.5160768628120422e-01 1.1381790041923523e-01 + <_> + + 0 -1 771 3.6459038965404034e-03 + + 7.0138469338417053e-02 -4.0376278758049011e-01 + <_> + + 0 -1 772 -1.8889949424192309e-03 + + 1.4695550501346588e-01 -1.7879849672317505e-01 + <_> + + 0 -1 773 -3.4749018959701061e-03 + + -2.4985860288143158e-01 1.0349679738283157e-01 + <_> + + 0 -1 774 -3.7792209535837173e-02 + + -6.5756058692932129e-01 2.3007599636912346e-02 + <_> + + 0 -1 775 -4.0167139377444983e-04 + + 1.4987960457801819e-01 -1.4527609944343567e-01 + <_> + + 0 -1 776 3.4890990704298019e-02 + + -4.5207828283309937e-02 5.1295852661132812e-01 + <_> + + 0 -1 777 -9.5964537467807531e-04 + + 1.4688290655612946e-01 -1.7244540154933929e-01 + <_> + + 0 -1 778 -9.6461333334445953e-02 + + -7.1814310550689697e-01 3.2587919384241104e-02 + <_> + + 0 -1 779 -1.1924919672310352e-03 + + 1.3805310428142548e-01 -1.4162309467792511e-01 + <_> + + 0 -1 780 -1.6420070081949234e-02 + + -4.1954740881919861e-01 4.3040689080953598e-02 + <_> + + 0 -1 781 -6.1112269759178162e-02 + + 3.7761390209197998e-01 -5.6264769285917282e-02 + <_> + + 0 -1 782 -3.1682170927524567e-02 + + 2.1038809418678284e-01 -5.4475009441375732e-02 + <_> + + 0 -1 783 -7.4058552272617817e-03 + + -1.8709950149059296e-01 1.0876149684190750e-01 + <_> + + 0 -1 784 -2.8892440604977310e-04 + + 6.9734372198581696e-02 -2.4516759812831879e-01 + <_> + + 0 -1 785 -7.9921782016754150e-03 + + -2.4069899320602417e-01 8.8012270629405975e-02 + <_> + + 0 -1 786 -6.4670671708881855e-03 + + 2.0819950103759766e-01 -6.9062210619449615e-02 + <_> + + 0 -1 787 -5.3345328196883202e-03 + + 3.2469388842582703e-01 -7.4058808386325836e-02 + <_> + + 0 -1 788 -6.7914440296590328e-03 + + -1.7014460265636444e-01 3.7378448992967606e-02 + <_> + + 0 -1 789 1.6337619721889496e-01 + + 1.9682100042700768e-02 -9.1652041673660278e-01 + <_> + + 0 -1 790 1.1759659647941589e-01 + + 8.8446342851966619e-04 -7.8050827980041504e-01 + <_> + + 0 -1 791 -1.1682280153036118e-01 + + -9.6009898185729980e-01 1.7070280387997627e-02 + <_> + + 0 -1 792 4.6899251639842987e-02 + + 4.7891899943351746e-02 -3.2044771313667297e-01 + <_> + + 0 -1 793 -4.0058898739516735e-03 + + 1.1414390057325363e-01 -1.5711469948291779e-01 + <_> + + 0 -1 794 -4.4986438297200948e-05 + + 2.9008099436759949e-01 -4.2413331568241119e-02 + <_> + + 0 -1 795 2.1421080455183983e-03 + + -3.3137580752372742e-01 5.3943689912557602e-02 + <_> + + 0 -1 796 -7.1408763527870178e-02 + + -8.8519471883773804e-01 9.3488330021500587e-03 + <_> + + 0 -1 797 -1.3733670115470886e-01 + + -8.3241897821426392e-01 1.7800329253077507e-02 + <_> + + 0 -1 798 6.1765720602124929e-04 + + -1.9419220089912415e-01 6.8034619092941284e-02 + <_> + + 0 -1 799 -6.7170798778533936e-02 + + -5.7243210077285767e-01 3.0333630740642548e-02 + <_> + + 0 -1 800 2.4611391127109528e-03 + + -1.0570179671049118e-01 1.8801900744438171e-01 + <_> + + 0 -1 801 5.0573959015309811e-03 + + -6.5921753644943237e-02 2.9868951439857483e-01 + <_> + + 0 -1 802 1.4213779941201210e-02 + + 6.3767880201339722e-02 -2.1217249333858490e-01 + <_> + + 0 -1 803 -2.0629619248211384e-03 + + -2.6714050769805908e-01 7.6817572116851807e-02 + <_> + + 0 -1 804 3.3787779510021210e-02 + + 2.1774150431156158e-02 -7.4938130378723145e-01 + <_> + + 0 -1 805 -2.7371870353817940e-02 + + 3.2008060812950134e-01 -5.9622511267662048e-02 + <_> + + 0 -1 806 2.8310349211096764e-02 + + 4.4150609523057938e-02 -4.4278699159622192e-01 + <_> + + 0 -1 807 3.7205279804766178e-03 + + -1.3136489689350128e-01 1.5447700023651123e-01 + <_> + + 0 -1 808 2.3320990148931742e-03 + + -1.0849229991436005e-01 2.2682890295982361e-01 + <_> + + 0 -1 809 7.6775359921157360e-03 + + 4.9520388245582581e-02 -3.8854768872261047e-01 + <_> + + 0 -1 810 -2.9863099916838109e-04 + + -1.9632560014724731e-01 8.3448931574821472e-02 + <_> + + 0 -1 811 6.1346050351858139e-03 + + 5.1433250308036804e-02 -3.0831611156463623e-01 + <_> + + 0 -1 812 3.1090779229998589e-02 + + 2.4180799722671509e-02 -6.0184460878372192e-01 + <_> + + 0 -1 813 2.9320400953292847e-01 + + 1.1811030097305775e-02 -9.6253931522369385e-01 + <_> + + 0 -1 814 -6.6321907797828317e-04 + + 1.0245270282030106e-01 -1.4200760424137115e-01 + <_> + + 0 -1 815 4.4736359268426895e-02 + + -1.1238799989223480e-01 1.7392039299011230e-01 + <_> + + 0 -1 816 -1.5153390355408192e-02 + + -1.6100360453128815e-01 3.1116949394345284e-02 + <_> + + 0 -1 817 -1.1029309825971723e-03 + + 1.2128510326147079e-01 -1.6182290017604828e-01 + <_> + + 0 -1 818 -2.8973959852010012e-03 + + 1.0827620327472687e-01 -5.3621310740709305e-02 + <_> + + 0 -1 819 -9.5785204321146011e-03 + + -1.6808320581912994e-01 8.5053622722625732e-02 + <_> + + 0 -1 820 9.9092386662960052e-02 + + -1.5469879843294621e-02 4.1138508915901184e-01 + <_> + + 0 -1 821 3.7229780107736588e-02 + + -5.2865970879793167e-02 3.1804299354553223e-01 + <_> + + 0 -1 822 -2.4716049432754517e-02 + + -4.0339410305023193e-01 2.9964840039610863e-02 + <_> + + 0 -1 823 -9.8965302109718323e-02 + + 5.8510482311248779e-01 -2.6924170553684235e-02 + <_> + + 0 -1 824 -9.6337851136922836e-03 + + -1.7467470467090607e-01 7.5126871466636658e-02 + <_> + + 0 -1 825 1.0483879595994949e-03 + + -1.3728469610214233e-01 1.0684580355882645e-01 + <_> + + 0 -1 826 4.2523849755525589e-02 + + 1.6578629612922668e-02 -5.6332737207412720e-01 + <_> + + 0 -1 827 -3.0866260640323162e-03 + + 7.5264893472194672e-02 -1.9476540386676788e-01 + <_> + + 0 -1 828 2.8643399477005005e-02 + + -6.7578136920928955e-02 2.5766220688819885e-01 + <_> + + 0 -1 829 -1.0627339594066143e-02 + + -2.2384619712829590e-01 7.2172448039054871e-02 + <_> + + 0 -1 830 4.6080970205366611e-03 + + 5.0876080989837646e-02 -1.4076329767704010e-01 + <_> + + 0 -1 831 2.9914160259068012e-03 + + -9.7337983548641205e-02 1.7665959894657135e-01 + <_> + + 0 -1 832 -7.7902628108859062e-03 + + -9.8008237779140472e-02 3.7403069436550140e-02 + <_> + + 0 -1 833 -6.1339238891378045e-04 + + 9.9036023020744324e-02 -1.6265949606895447e-01 + <_> + + 0 -1 834 -1.0234319604933262e-02 + + 2.3654979467391968e-01 -3.7817131727933884e-02 + <_> + + 0 -1 835 -1.1867409572005272e-02 + + -8.5035067796707153e-01 1.9063299521803856e-02 + <_> + + 0 -1 836 4.1437768377363682e-03 + + 8.7878346443176270e-02 -9.4404630362987518e-02 + <_> + + 0 -1 837 -5.1355729810893536e-03 + + -3.5699799656867981e-01 4.1546490043401718e-02 + <_> + + 0 -1 838 -1.5296200290322304e-03 + + 7.7694572508335114e-02 -4.3186578899621964e-02 + <_> + + 0 -1 839 -2.7581020258367062e-03 + + 1.9065889716148376e-01 -8.0679900944232941e-02 + <_> + + 0 -1 840 2.8375169634819031e-01 + + 6.2291761860251427e-03 -8.8578152656555176e-01 + <_> + + 0 -1 841 -2.4612499773502350e-01 + + -7.0548111200332642e-01 2.1798960864543915e-02 + <_> + + 0 -1 842 -3.9965631440281868e-03 + + -1.9710969924926758e-01 8.0300606787204742e-02 + <_> + + 0 -1 843 -8.4951231256127357e-03 + + 2.1296609938144684e-01 -8.2974627614021301e-02 + <_> + + 0 -1 844 4.7206480056047440e-02 + + 9.7466083243489265e-03 -7.0066297054290771e-01 + <_> + + 0 -1 845 3.7802560254931450e-03 + + 7.7478893101215363e-02 -2.3372000455856323e-01 + <_> + + 0 -1 846 4.4631671160459518e-02 + + -2.1464770659804344e-02 3.2136338949203491e-01 + <_> + + 0 -1 847 6.8157288478687406e-04 + + 1.2177070230245590e-01 -1.2063200026750565e-01 + <_> + + 0 -1 848 -6.9712452590465546e-02 + + -9.4828051328659058e-01 1.2017440050840378e-02 + <_> + + 0 -1 849 -4.8821792006492615e-03 + + -2.1774840354919434e-01 7.7113322913646698e-02 + <_> + + 0 -1 850 3.4387600608170033e-03 + + -1.8093569576740265e-01 9.3595556914806366e-02 + <_> + + 0 -1 851 -2.5215700268745422e-02 + + -5.5714958906173706e-01 2.7420820668339729e-02 + <_> + + 0 -1 852 7.4309771880507469e-03 + + -4.6630490571260452e-02 2.1024890244007111e-01 + <_> + + 0 -1 853 -1.5789959579706192e-02 + + -3.3443140983581543e-01 4.6291690319776535e-02 + <_> + + 0 -1 854 3.5080160014331341e-03 + + -6.4612612128257751e-02 2.2737669944763184e-01 + <_> + + 0 -1 855 4.4291261583566666e-02 + + 2.2642729803919792e-02 -7.0683121681213379e-01 + <_> + + 0 -1 856 1.9108189269900322e-02 + + -3.5893321037292480e-02 1.4613699913024902e-01 + <_> + 99 + -1.8724700212478638e+00 + + <_> + + 0 -1 857 -1.6636669635772705e-02 + + 2.5966519117355347e-01 -4.1162249445915222e-01 + <_> + + 0 -1 858 2.9865810647606850e-02 + + -3.3182668685913086e-01 2.0545999705791473e-01 + <_> + + 0 -1 859 9.1892024502158165e-03 + + -3.4481799602508545e-01 1.8148690462112427e-01 + <_> + + 0 -1 860 2.8450509998947382e-03 + + -3.2904830574989319e-01 9.4392292201519012e-02 + <_> + + 0 -1 861 3.4257639199495316e-02 + + -3.2212799787521362e-01 1.7332050204277039e-01 + <_> + + 0 -1 862 3.4367710351943970e-02 + + -3.2593810558319092e-01 1.7473269999027252e-01 + <_> + + 0 -1 863 9.0881884098052979e-03 + + 1.0527010262012482e-01 -4.8131370544433594e-01 + <_> + + 0 -1 864 -5.0939731299877167e-03 + + 1.7374989390373230e-01 -2.7883121371269226e-01 + <_> + + 0 -1 865 1.1773620499297976e-03 + + -4.2217200994491577e-01 1.0231760144233704e-01 + <_> + + 0 -1 866 3.6797609180212021e-02 + + 1.1229369789361954e-01 -3.8409191370010376e-01 + <_> + + 0 -1 867 -7.2484882548451424e-04 + + -4.4795128703117371e-01 8.5079587996006012e-02 + <_> + + 0 -1 868 1.2603210285305977e-02 + + 6.0475040227174759e-02 -3.5327509045600891e-01 + <_> + + 0 -1 869 5.1925552543252707e-04 + + -3.1916388869285583e-01 1.1903370171785355e-01 + <_> + + 0 -1 870 -1.3244180008769035e-02 + + 2.1975730359554291e-01 -9.5025591552257538e-02 + <_> + + 0 -1 871 -2.7882310096174479e-03 + + -2.7294808626174927e-01 1.2419769912958145e-01 + <_> + + 0 -1 872 2.6591470465064049e-02 + + 6.0452010482549667e-02 -3.9637029170989990e-01 + <_> + + 0 -1 873 1.2505210004746914e-02 + + 7.8631103038787842e-02 -4.0303888916969299e-01 + <_> + + 0 -1 874 -1.3857340440154076e-02 + + 2.5759750604629517e-01 -1.0351459681987762e-01 + <_> + + 0 -1 875 7.2099752724170685e-02 + + -5.5193781852722168e-01 6.0020800679922104e-02 + <_> + + 0 -1 876 -9.8338630050420761e-04 + + -3.1915199756622314e-01 8.7977647781372070e-02 + <_> + + 0 -1 877 -5.8390170335769653e-02 + + -5.5988979339599609e-01 5.2990190684795380e-02 + <_> + + 0 -1 878 4.2504342272877693e-03 + + -2.8897258639335632e-01 9.2816516757011414e-02 + <_> + + 0 -1 879 -3.2332520931959152e-02 + + -4.8713520169258118e-01 6.0787629336118698e-02 + <_> + + 0 -1 880 4.7365639358758926e-02 + + -1.0111550241708755e-01 3.2597780227661133e-01 + <_> + + 0 -1 881 -3.8943330291658640e-03 + + 1.9173160195350647e-01 -1.6729380190372467e-01 + <_> + + 0 -1 882 5.7729199528694153e-02 + + 3.6343291401863098e-02 -7.3161131143569946e-01 + <_> + + 0 -1 883 -1.8925540149211884e-02 + + 3.2471498847007751e-01 -8.6188063025474548e-02 + <_> + + 0 -1 884 -3.9679601788520813e-02 + + -4.1826680302619934e-01 5.3354211151599884e-02 + <_> + + 0 -1 885 -2.0733650773763657e-02 + + -4.1205188632011414e-01 6.3596852123737335e-02 + <_> + + 0 -1 886 1.5387910604476929e-01 + + 1.9954150542616844e-02 -5.7643288373947144e-01 + <_> + + 0 -1 887 1.2131260335445404e-01 + + 4.4516459107398987e-02 -5.9093242883682251e-01 + <_> + + 0 -1 888 2.7478559786686674e-05 + + -4.0688499808311462e-01 5.2828099578619003e-02 + <_> + + 0 -1 889 8.8893681764602661e-02 + + 5.1985241472721100e-02 -5.0228989124298096e-01 + <_> + + 0 -1 890 2.8169099241495132e-03 + + 6.7726433277130127e-02 -1.3582049310207367e-01 + <_> + + 0 -1 891 -1.7215269326698035e-04 + + 8.9616917073726654e-02 -2.9589369893074036e-01 + <_> + + 0 -1 892 -3.1830620020627975e-02 + + -5.6433600187301636e-01 2.2822249680757523e-02 + <_> + + 0 -1 893 -6.3334330916404724e-02 + + -8.2371699810028076e-01 2.7576120570302010e-02 + <_> + + 0 -1 894 -6.9032818078994751e-02 + + -6.9788217544555664e-01 3.3770920708775520e-03 + <_> + + 0 -1 895 2.1021519787609577e-03 + + -2.7244049310684204e-01 8.6922891438007355e-02 + <_> + + 0 -1 896 3.4065779298543930e-02 + + 1.7670579254627228e-02 -4.3001320958137512e-01 + <_> + + 0 -1 897 8.1215314567089081e-03 + + -1.5942670404911041e-01 1.6256070137023926e-01 + <_> + + 0 -1 898 -1.6329119680449367e-03 + + 4.2009588330984116e-02 -3.2923451066017151e-01 + <_> + + 0 -1 899 -3.9110329002141953e-02 + + -6.0666251182556152e-01 4.1248850524425507e-02 + <_> + + 0 -1 900 -2.3188870400190353e-02 + + -5.5365419387817383e-01 1.7315510660409927e-02 + <_> + + 0 -1 901 -6.2944158911705017e-02 + + -5.3853708505630493e-01 4.1758351027965546e-02 + <_> + + 0 -1 902 -8.5414372384548187e-02 + + -9.3122452497482300e-01 -9.1123272432014346e-04 + <_> + + 0 -1 903 -4.1963338851928711e-02 + + -5.6720697879791260e-01 3.9175700396299362e-02 + <_> + + 0 -1 904 1.1165619827806950e-02 + + -6.7815810441970825e-02 2.9003840684890747e-01 + <_> + + 0 -1 905 -1.3730769976973534e-02 + + 3.2328099012374878e-01 -1.0592839866876602e-01 + <_> + + 0 -1 906 -7.5793050229549408e-02 + + 5.5545729398727417e-01 -3.2934208866208792e-03 + <_> + + 0 -1 907 2.7008100878447294e-03 + + 1.5311180055141449e-01 -1.6604180634021759e-01 + <_> + + 0 -1 908 1.0164660401642323e-02 + + 7.6404631137847900e-02 -2.8745749592781067e-01 + <_> + + 0 -1 909 -5.9808149933815002e-02 + + -7.3486739397048950e-01 3.0370820313692093e-02 + <_> + + 0 -1 910 9.6447616815567017e-02 + + 2.6198839768767357e-02 -6.6001427173614502e-01 + <_> + + 0 -1 911 3.2350219786167145e-02 + + 4.1407719254493713e-02 -4.7442498803138733e-01 + <_> + + 0 -1 912 2.3717279732227325e-01 + + -9.5941081643104553e-02 2.4070499837398529e-01 + <_> + + 0 -1 913 -4.0942471474409103e-02 + + -4.0582120418548584e-01 6.4327560365200043e-02 + <_> + + 0 -1 914 -3.4409161657094955e-02 + + -7.4849551916122437e-01 2.2520760074257851e-02 + <_> + + 0 -1 915 1.3847379386425018e-01 + + 2.8472309932112694e-02 -7.0612120628356934e-01 + <_> + + 0 -1 916 4.6567160636186600e-02 + + -4.1168119758367538e-02 6.9962567090988159e-01 + <_> + + 0 -1 917 -3.0492639169096947e-02 + + -6.5116977691650391e-01 3.9995279163122177e-02 + <_> + + 0 -1 918 8.6345896124839783e-03 + + -1.1207970231771469e-01 7.7241696417331696e-02 + <_> + + 0 -1 919 3.1845968216657639e-02 + + -1.1552079766988754e-01 1.7539389431476593e-01 + <_> + + 0 -1 920 1.7124590277671814e-01 + + 5.0687979906797409e-02 -4.7042238712310791e-01 + <_> + + 0 -1 921 5.2879499271512032e-03 + + 6.5041497349739075e-02 -2.8894019126892090e-01 + <_> + + 0 -1 922 1.0060779750347137e-02 + + 6.3689216971397400e-02 -2.6081889867782593e-01 + <_> + + 0 -1 923 3.3330768346786499e-02 + + 3.4809298813343048e-02 -5.7845467329025269e-01 + <_> + + 0 -1 924 -5.2802279591560364e-02 + + -6.8521040678024292e-01 1.7583779990673065e-02 + <_> + + 0 -1 925 -1.5452199615538120e-02 + + 3.1395891308784485e-01 -7.7611543238162994e-02 + <_> + + 0 -1 926 -6.5528601408004761e-04 + + 5.6181360036134720e-02 -1.5184390544891357e-01 + <_> + + 0 -1 927 3.7062149494886398e-02 + + 2.8928549960255623e-02 -7.0487600564956665e-01 + <_> + + 0 -1 928 -5.7728089392185211e-02 + + -4.3192410469055176e-01 9.2153800651431084e-03 + <_> + + 0 -1 929 -2.2813139948993921e-03 + + 1.0200300067663193e-01 -2.1657040715217590e-01 + <_> + + 0 -1 930 2.6513230055570602e-02 + + -8.3650946617126465e-02 3.0740359425544739e-01 + <_> + + 0 -1 931 7.3622196912765503e-02 + + 3.0683049932122231e-02 -7.1910232305526733e-01 + <_> + + 0 -1 932 -1.3022350147366524e-02 + + -3.6386561393737793e-01 2.5367209687829018e-02 + <_> + + 0 -1 933 -1.3319820165634155e-02 + + -5.1884061098098755e-01 3.5935029387474060e-02 + <_> + + 0 -1 934 2.3190369829535484e-03 + + -6.1515200883150101e-02 7.1100451052188873e-02 + <_> + + 0 -1 935 -2.1372830495238304e-02 + + -5.0247579813003540e-01 3.9844810962677002e-02 + <_> + + 0 -1 936 2.4474589154124260e-02 + + -4.7960858792066574e-02 2.6931110024452209e-01 + <_> + + 0 -1 937 -1.0679869912564754e-02 + + 3.1474280357360840e-01 -8.4758952260017395e-02 + <_> + + 0 -1 938 4.8961799591779709e-02 + + 2.7358099818229675e-02 -3.8229361176490784e-01 + <_> + + 0 -1 939 3.2376348972320557e-02 + + -4.7090999782085419e-02 4.5985230803489685e-01 + <_> + + 0 -1 940 -1.0995220392942429e-02 + + -1.8544240295886993e-01 3.6006979644298553e-02 + <_> + + 0 -1 941 1.7626030743122101e-01 + + 2.4375159293413162e-02 -7.7686601877212524e-01 + <_> + + 0 -1 942 7.9778492450714111e-02 + + 3.3787339925765991e-03 -7.2928887605667114e-01 + <_> + + 0 -1 943 -1.1329210363328457e-02 + + -4.6397671103477478e-01 3.9380829781293869e-02 + <_> + + 0 -1 944 6.3431300222873688e-02 + + -9.7074061632156372e-02 1.0118869692087173e-01 + <_> + + 0 -1 945 -1.2691849842667580e-02 + + 2.8142300248146057e-01 -7.2105713188648224e-02 + <_> + + 0 -1 946 -7.8238412737846375e-02 + + 5.7400637865066528e-01 -1.8400549888610840e-02 + <_> + + 0 -1 947 3.9532519876956940e-02 + + 4.3154988437891006e-02 -5.2327841520309448e-01 + <_> + + 0 -1 948 1.5355779789388180e-02 + + -4.7316178679466248e-02 4.6925771236419678e-01 + <_> + + 0 -1 949 -6.4018620178103447e-03 + + 1.3297230005264282e-01 -1.4365619421005249e-01 + <_> + + 0 -1 950 -1.0567340254783630e-01 + + 2.0206320285797119e-01 -1.4406460337340832e-02 + <_> + + 0 -1 951 2.8163839131593704e-02 + + 7.1180991828441620e-02 -3.1034231185913086e-01 + <_> + + 0 -1 952 1.1702980101108551e-01 + + 1.1619930155575275e-02 -7.1530961990356445e-01 + <_> + + 0 -1 953 -3.8921568542718887e-02 + + 2.4412679672241211e-01 -8.2244850695133209e-02 + <_> + + 0 -1 954 -2.8435489162802696e-02 + + -3.6785170435905457e-01 3.8488820195198059e-02 + <_> + + 0 -1 955 -3.6393549293279648e-02 + + 5.2206730842590332e-01 -4.7079380601644516e-02 + <_> + 139 + -1.7121059894561768e+00 + + <_> + + 0 -1 956 -2.1428510546684265e-02 + + 1.9014079868793488e-01 -5.0612741708755493e-01 + <_> + + 0 -1 957 2.0596129819750786e-02 + + -2.9283228516578674e-01 2.4655179679393768e-01 + <_> + + 0 -1 958 2.7893469668924809e-03 + + 1.1085920035839081e-01 -4.6909829974174500e-01 + <_> + + 0 -1 959 4.4722640886902809e-03 + + -2.8250780701637268e-01 1.4564670622348785e-01 + <_> + + 0 -1 960 -1.0463190264999866e-03 + + -2.6603269577026367e-01 1.2815919518470764e-01 + <_> + + 0 -1 961 1.5831940108910203e-03 + + -6.3467299938201904e-01 7.1003831923007965e-02 + <_> + + 0 -1 962 -7.3153319135599304e-06 + + 1.0248930007219315e-01 -3.4815961122512817e-01 + <_> + + 0 -1 963 5.4208859801292419e-03 + + 5.9830531477928162e-02 -3.1387779116630554e-01 + <_> + + 0 -1 964 1.2645759852603078e-03 + + -2.2709150612354279e-01 1.3160009682178497e-01 + <_> + + 0 -1 965 3.0235300073400140e-05 + + -2.6413309574127197e-01 2.8918080031871796e-02 + <_> + + 0 -1 966 1.5345469582825899e-03 + + -4.0711951255798340e-01 6.9787837564945221e-02 + <_> + + 0 -1 967 6.8222070112824440e-03 + + -1.5069720149040222e-01 2.1888419985771179e-01 + <_> + + 0 -1 968 -9.8558319732546806e-03 + + -3.5441368818283081e-01 8.6026392877101898e-02 + <_> + + 0 -1 969 -2.9890429228544235e-02 + + 2.2117440402507782e-01 -2.8611009940505028e-02 + <_> + + 0 -1 970 -2.6285760104656219e-03 + + 9.8204180598258972e-02 -2.7149739861488342e-01 + <_> + + 0 -1 971 3.2039839425124228e-04 + + -9.8540462553501129e-02 1.8785539269447327e-01 + <_> + + 0 -1 972 1.1079469695687294e-03 + + 6.4034536480903625e-02 -4.3082669377326965e-01 + <_> + + 0 -1 973 -9.1538369655609131e-02 + + -5.2440929412841797e-01 1.2250489555299282e-02 + <_> + + 0 -1 974 4.3205898255109787e-02 + + 9.6655867993831635e-02 -2.6809310913085938e-01 + <_> + + 0 -1 975 9.1920839622616768e-04 + + -1.3260160386562347e-01 1.2358319759368896e-01 + <_> + + 0 -1 976 8.9521165937185287e-03 + + 8.6445420980453491e-02 -2.3219430446624756e-01 + <_> + + 0 -1 977 5.6190020404756069e-03 + + -6.0304049402475357e-02 1.5070669353008270e-01 + <_> + + 0 -1 978 3.7380240391939878e-03 + + -1.8652540445327759e-01 1.3011780381202698e-01 + <_> + + 0 -1 979 -4.4416960328817368e-02 + + 1.9036759436130524e-01 -1.7527159303426743e-02 + <_> + + 0 -1 980 1.9832739606499672e-02 + + -5.3527630865573883e-02 4.0238130092620850e-01 + <_> + + 0 -1 981 1.2155610136687756e-02 + + 9.1288566589355469e-02 -2.6862761378288269e-01 + <_> + + 0 -1 982 5.0532341003417969e-02 + + 3.1295180320739746e-02 -6.2836539745330811e-01 + <_> + + 0 -1 983 -1.7635909607633948e-03 + + 5.6185219436883926e-02 -2.1861009299755096e-01 + <_> + + 0 -1 984 4.9412921071052551e-03 + + 5.5915899574756622e-02 -3.5954388976097107e-01 + <_> + + 0 -1 985 -1.1536119878292084e-01 + + -5.3168737888336182e-01 7.9654296860098839e-03 + <_> + + 0 -1 986 -2.0473708864301443e-03 + + 7.9633012413978577e-02 -2.5389900803565979e-01 + <_> + + 0 -1 987 4.7814860008656979e-03 + + -9.4149880111217499e-02 1.1631009727716446e-01 + <_> + + 0 -1 988 2.1274939179420471e-02 + + -4.7486610710620880e-02 3.7564519047737122e-01 + <_> + + 0 -1 989 5.1177050918340683e-03 + + 7.4936643242835999e-02 -2.6105350255966187e-01 + <_> + + 0 -1 990 -1.3952000066637993e-02 + + 2.3960170149803162e-01 -9.6836768090724945e-02 + <_> + + 0 -1 991 -1.3828179799020290e-02 + + -3.9605268836021423e-01 5.8639749884605408e-02 + <_> + + 0 -1 992 -4.7117020934820175e-02 + + -5.5717539787292480e-01 3.1678650528192520e-02 + <_> + + 0 -1 993 1.0515590198338032e-02 + + -4.3930530548095703e-02 8.5277959704399109e-02 + <_> + + 0 -1 994 4.0591089054942131e-03 + + -1.0774219781160355e-01 1.6283099353313446e-01 + <_> + + 0 -1 995 -3.0376210808753967e-02 + + 2.0997379720211029e-01 -9.9417790770530701e-02 + <_> + + 0 -1 996 -6.6932791378349066e-04 + + -3.4863340854644775e-01 5.9148021042346954e-02 + <_> + + 0 -1 997 -1.4665089547634125e-02 + + -4.3786540627479553e-01 2.8008179739117622e-02 + <_> + + 0 -1 998 -3.5847770050168037e-03 + + 9.6611537039279938e-02 -1.7948310077190399e-01 + <_> + + 0 -1 999 -5.5043050087988377e-03 + + -3.3546659350395203e-01 7.5057849287986755e-02 + <_> + + 0 -1 1000 1.0141800157725811e-03 + + -1.8602859973907471e-01 8.6880050599575043e-02 + <_> + + 0 -1 1001 1.4642399735748768e-02 + + 2.6652090251445770e-02 -2.6002681255340576e-01 + <_> + + 0 -1 1002 -5.8538499288260937e-03 + + -1.4993189275264740e-01 1.2684640288352966e-01 + <_> + + 0 -1 1003 -5.3472168743610382e-02 + + 5.2131122350692749e-01 -2.0375749096274376e-02 + <_> + + 0 -1 1004 -7.6695926487445831e-02 + + 4.5817071199417114e-01 -3.4876950085163116e-02 + <_> + + 0 -1 1005 -5.9094227617606521e-04 + + 1.1570499837398529e-01 -1.2966969609260559e-01 + <_> + + 0 -1 1006 -4.3543361127376556e-02 + + -8.2132732868194580e-01 2.0535599440336227e-02 + <_> + + 0 -1 1007 5.0691701471805573e-02 + + -3.6280639469623566e-02 4.0212449431419373e-01 + <_> + + 0 -1 1008 1.3124669902026653e-02 + + -8.3614267408847809e-02 2.0441520214080811e-01 + <_> + + 0 -1 1009 3.5445049405097961e-01 + + 1.4580509625375271e-02 -5.6883698701858521e-01 + <_> + + 0 -1 1010 -2.1929910406470299e-02 + + 1.6368280351161957e-01 -1.0018540173768997e-01 + <_> + + 0 -1 1011 3.8168739527463913e-02 + + 3.5331390798091888e-02 -5.3782612085342407e-01 + <_> + + 0 -1 1012 6.3126571476459503e-03 + + 5.6145761162042618e-02 -2.8158029913902283e-01 + <_> + + 0 -1 1013 -4.3002668768167496e-02 + + -6.4804542064666748e-01 1.7478020861744881e-02 + <_> + + 0 -1 1014 2.4681850336492062e-03 + + -1.1719709634780884e-01 1.3693059980869293e-01 + <_> + + 0 -1 1015 4.5261289924383163e-02 + + 1.5927750617265701e-02 -7.1915590763092041e-01 + <_> + + 0 -1 1016 -4.2067110538482666e-02 + + -6.4201879501342773e-01 2.0196499302983284e-02 + <_> + + 0 -1 1017 3.9601750904694200e-04 + + -3.1774568557739258e-01 7.6843477785587311e-02 + <_> + + 0 -1 1018 -1.2469319626688957e-02 + + 1.9531419873237610e-01 -7.8799232840538025e-02 + <_> + + 0 -1 1019 7.9188523814082146e-03 + + 5.6721080094575882e-02 -2.6906439661979675e-01 + <_> + + 0 -1 1020 -6.2929331324994564e-03 + + 1.5688340365886688e-01 -9.9287010729312897e-02 + <_> + + 0 -1 1021 2.2974120453000069e-02 + + -6.6930226981639862e-02 2.4427099525928497e-01 + <_> + + 0 -1 1022 -9.1710267588496208e-03 + + -2.9078531265258789e-01 5.9312019497156143e-02 + <_> + + 0 -1 1023 -9.5892272889614105e-02 + + -6.3700878620147705e-01 1.3278760015964508e-02 + <_> + + 0 -1 1024 5.6696119718253613e-03 + + 5.6131001561880112e-02 -2.9535120725631714e-01 + <_> + + 0 -1 1025 -1.3495329767465591e-02 + + 2.0205779373645782e-01 -6.3128583133220673e-02 + <_> + + 0 -1 1026 1.6108239069581032e-02 + + 4.5092061161994934e-02 -3.6163818836212158e-01 + <_> + + 0 -1 1027 1.1768710101023316e-03 + + -1.9879919290542603e-01 1.3078540563583374e-01 + <_> + + 0 -1 1028 1.4128970215097070e-03 + + -2.0856089890003204e-01 8.1473708152770996e-02 + <_> + + 0 -1 1029 -4.3028060346841812e-02 + + -2.8687548637390137e-01 2.9704660177230835e-02 + <_> + + 0 -1 1030 -1.0961409658193588e-02 + + 4.8846191167831421e-01 -3.5002779215574265e-02 + <_> + + 0 -1 1031 -4.5575079275295138e-04 + + 1.0644569993019104e-01 -1.0506340116262436e-01 + <_> + + 0 -1 1032 -5.0013329833745956e-02 + + -8.2039457559585571e-01 1.8604470416903496e-02 + <_> + + 0 -1 1033 -4.6841200441122055e-02 + + -8.6972111463546753e-01 3.9388639852404594e-03 + <_> + + 0 -1 1034 -8.0362131120637059e-04 + + 1.4196899533271790e-01 -1.2184119969606400e-01 + <_> + + 0 -1 1035 1.9802400842308998e-02 + + 4.0857948362827301e-02 -3.6116421222686768e-01 + <_> + + 0 -1 1036 2.1874029189348221e-02 + + -5.8230601251125336e-02 2.4490930140018463e-01 + <_> + + 0 -1 1037 3.2371848821640015e-02 + + 2.6172259822487831e-02 -4.0803569555282593e-01 + <_> + + 0 -1 1038 -7.0319771766662598e-03 + + -2.5175130367279053e-01 6.0090810060501099e-02 + <_> + + 0 -1 1039 2.6019799988716841e-03 + + -7.0827886462211609e-02 2.0735129714012146e-01 + <_> + + 0 -1 1040 -3.1531439162790775e-03 + + 1.7268289625644684e-01 -1.1326900124549866e-01 + <_> + + 0 -1 1041 5.8357551693916321e-02 + + 1.4668770134449005e-02 -9.2907238006591797e-01 + <_> + + 0 -1 1042 3.6941959988325834e-03 + + 6.6812008619308472e-02 -2.0454549789428711e-01 + <_> + + 0 -1 1043 1.8183739855885506e-02 + + -3.5921659320592880e-02 2.3765130341053009e-01 + <_> + + 0 -1 1044 -4.4514648616313934e-03 + + -1.8156670033931732e-01 8.0072969198226929e-02 + <_> + + 0 -1 1045 3.5554010421037674e-02 + + 1.1413309723138809e-02 -3.9503180980682373e-01 + <_> + + 0 -1 1046 1.6067499294877052e-02 + + -4.9147009849548340e-02 3.0306708812713623e-01 + <_> + + 0 -1 1047 3.6372188478708267e-02 + + 2.3675160482525826e-02 -6.8069261312484741e-01 + <_> + + 0 -1 1048 -7.4834008701145649e-03 + + 2.4146680533885956e-01 -5.8301728218793869e-02 + <_> + + 0 -1 1049 -7.2762509807944298e-03 + + -2.2373069822788239e-01 5.0284590572118759e-02 + <_> + + 0 -1 1050 -4.7946218401193619e-03 + + -2.1922710537910461e-01 6.6698201000690460e-02 + <_> + + 0 -1 1051 -1.3066439889371395e-02 + + 2.2604539990425110e-01 -3.7037428468465805e-02 + <_> + + 0 -1 1052 2.3257338907569647e-03 + + -8.1509239971637726e-02 2.3270750045776367e-01 + <_> + + 0 -1 1053 -1.1436239816248417e-02 + + 6.7732691764831543e-02 -3.3069651573896408e-02 + <_> + + 0 -1 1054 6.7957569845020771e-03 + + 9.3188859522342682e-02 -1.8542419373989105e-01 + <_> + + 0 -1 1055 -5.2705928683280945e-02 + + 4.0707829594612122e-01 -2.5846559554338455e-02 + <_> + + 0 -1 1056 1.2774269282817841e-01 + + 1.7207339406013489e-02 -8.8952672481536865e-01 + <_> + + 0 -1 1057 -2.7999880909919739e-01 + + -9.1963422298431396e-01 2.5054879370145500e-04 + <_> + + 0 -1 1058 1.2669020332396030e-02 + + -7.3152393102645874e-02 2.0872280001640320e-01 + <_> + + 0 -1 1059 -1.5894599258899689e-02 + + 1.1266420036554337e-01 -4.0140561759471893e-02 + <_> + + 0 -1 1060 5.3938169032335281e-02 + + 3.0137389898300171e-02 -5.0454300642013550e-01 + <_> + + 0 -1 1061 7.3805922875180840e-04 + + -3.5923779010772705e-01 3.3418480306863785e-02 + <_> + + 0 -1 1062 4.7065159305930138e-03 + + 4.4195190072059631e-01 -3.9396088570356369e-02 + <_> + + 0 -1 1063 3.0945870094001293e-03 + + -7.1224376559257507e-02 1.2306260317564011e-01 + <_> + + 0 -1 1064 -3.2640039920806885e-02 + + -4.4644719362258911e-01 3.4509830176830292e-02 + <_> + + 0 -1 1065 -7.8390557318925858e-03 + + -9.9895596504211426e-02 3.3491879701614380e-02 + <_> + + 0 -1 1066 7.6504289172589779e-03 + + 5.5107340216636658e-02 -2.4002109467983246e-01 + <_> + + 0 -1 1067 3.8153179921209812e-03 + + -5.7143520563840866e-02 1.7120680212974548e-01 + <_> + + 0 -1 1068 1.4295349828898907e-02 + + -5.5747661739587784e-02 2.6719009876251221e-01 + <_> + + 0 -1 1069 -1.8241480574943125e-04 + + 4.7362379729747772e-02 -2.1473219990730286e-01 + <_> + + 0 -1 1070 -3.1916480511426926e-02 + + -1.4398300647735596e-01 9.2526309192180634e-02 + <_> + + 0 -1 1071 -7.6755490154027939e-03 + + 1.2513080239295959e-01 -5.2855581045150757e-02 + <_> + + 0 -1 1072 1.4152109622955322e-02 + + -5.8198999613523483e-02 2.4444380402565002e-01 + <_> + + 0 -1 1073 -1.6701059415936470e-02 + + -3.0269339680671692e-01 2.5713469833135605e-02 + <_> + + 0 -1 1074 3.5869849380105734e-03 + + -1.1999790370464325e-01 1.2468840181827545e-01 + <_> + + 0 -1 1075 3.7683059927076101e-03 + + 5.0271350890398026e-02 -2.0477029681205750e-01 + <_> + + 0 -1 1076 9.9043175578117371e-04 + + -8.5413850843906403e-02 1.6316239535808563e-01 + <_> + + 0 -1 1077 9.3151312321424484e-03 + + 9.4177378341555595e-03 -3.5209101438522339e-01 + <_> + + 0 -1 1078 -1.5002860163804144e-04 + + 8.3480976521968842e-02 -1.7047779262065887e-01 + <_> + + 0 -1 1079 8.7790598627179861e-04 + + -1.1054719984531403e-01 1.1750820279121399e-01 + <_> + + 0 -1 1080 -3.7630271166563034e-02 + + 5.0325840711593628e-01 -2.6165060698986053e-02 + <_> + + 0 -1 1081 5.6488867849111557e-03 + + 7.4713237583637238e-02 -1.4058519899845123e-01 + <_> + + 0 -1 1082 -1.4621330192312598e-03 + + 6.7465327680110931e-02 -2.0143230259418488e-01 + <_> + + 0 -1 1083 5.3189881145954132e-03 + + -3.5997938364744186e-02 3.7376481294631958e-01 + <_> + + 0 -1 1084 2.1019520238041878e-02 + + 2.7063809335231781e-02 -5.0199657678604126e-01 + <_> + + 0 -1 1085 -1.1328969895839691e-01 + + -7.4395442008972168e-01 1.3778089545667171e-02 + <_> + + 0 -1 1086 -6.1144838109612465e-03 + + 1.4044840633869171e-01 -8.7939672172069550e-02 + <_> + + 0 -1 1087 -7.7648349106311798e-03 + + -1.4341640472412109e-01 4.3061099946498871e-02 + <_> + + 0 -1 1088 -9.1335996985435486e-02 + + -6.3246071338653564e-01 2.0902950316667557e-02 + <_> + + 0 -1 1089 -1.6339610517024994e-01 + + -7.7071088552474976e-01 1.3627690263092518e-02 + <_> + + 0 -1 1090 5.3004521131515503e-01 + + 1.2292830273509026e-02 -7.9708522558212280e-01 + <_> + + 0 -1 1091 -3.0609068926423788e-03 + + 5.7478528469800949e-02 -8.8626816868782043e-02 + <_> + + 0 -1 1092 1.3204859569668770e-03 + + -1.0473939776420593e-01 1.2416320294141769e-01 + <_> + + 0 -1 1093 -6.6045127809047699e-02 + + -7.0403701066970825e-01 7.2672651149332523e-03 + <_> + + 0 -1 1094 5.2080051973462105e-03 + + 7.3289416730403900e-02 -1.6105780005455017e-01 + <_> + 106 + -1.8098859786987305e+00 + + <_> + + 0 -1 1095 -2.4040700867772102e-02 + + 2.4318559467792511e-01 -3.8189288973808289e-01 + <_> + + 0 -1 1096 2.6374191045761108e-01 + + -2.5091141462326050e-01 2.7231940627098083e-01 + <_> + + 0 -1 1097 3.3161949831992388e-03 + + -2.8115370869636536e-01 2.2977580130100250e-01 + <_> + + 0 -1 1098 2.5751669891178608e-03 + + -6.4815878868103027e-01 8.3049327135086060e-02 + <_> + + 0 -1 1099 1.2843149714171886e-02 + + -5.4388070106506348e-01 8.6304552853107452e-02 + <_> + + 0 -1 1100 1.3005360029637814e-02 + + -2.6411589980125427e-01 2.2107879817485809e-01 + <_> + + 0 -1 1101 2.6304060593247414e-02 + + -2.2276160120964050e-01 2.2458629310131073e-01 + <_> + + 0 -1 1102 -6.8887993693351746e-02 + + 4.4677790999412537e-01 -1.8398750573396683e-02 + <_> + + 0 -1 1103 1.5864400193095207e-02 + + -3.3532321453094482e-01 1.6380620002746582e-01 + <_> + + 0 -1 1104 -7.1481592021882534e-03 + + -3.5999459028244019e-01 1.0679650306701660e-01 + <_> + + 0 -1 1105 -1.2002130039036274e-02 + + -3.7498581409454346e-01 9.6759349107742310e-02 + <_> + + 0 -1 1106 -2.6663220487535000e-03 + + -3.8941639661788940e-01 5.9776391834020615e-02 + <_> + + 0 -1 1107 5.2618351764976978e-04 + + -3.0557510256767273e-01 1.0778070241212845e-01 + <_> + + 0 -1 1108 -4.0705721825361252e-02 + + -5.8572947978973389e-01 4.0660858154296875e-02 + <_> + + 0 -1 1109 -8.7929163128137589e-03 + + 2.3699410259723663e-01 -1.3827539980411530e-01 + <_> + + 0 -1 1110 -2.2475840523838997e-03 + + -3.5475319623947144e-01 8.9079782366752625e-02 + <_> + + 0 -1 1111 5.8501982130110264e-03 + + 9.1695636510848999e-02 -3.3329799771308899e-01 + <_> + + 0 -1 1112 -3.9623910561203957e-03 + + -1.9845740497112274e-01 1.2363869696855545e-01 + <_> + + 0 -1 1113 -1.7685770289972425e-03 + + 7.3684811592102051e-02 -4.5862528681755066e-01 + <_> + + 0 -1 1114 6.3303880393505096e-02 + + 4.8690151423215866e-02 -5.7301318645477295e-01 + <_> + + 0 -1 1115 7.9875197261571884e-03 + + -8.1072300672531128e-01 2.7054410427808762e-02 + <_> + + 0 -1 1116 -1.3520400039851665e-02 + + 1.6274809837341309e-01 -1.6841860115528107e-01 + <_> + + 0 -1 1117 4.8139609396457672e-02 + + 4.5234218239784241e-02 -5.7300239801406860e-01 + <_> + + 0 -1 1118 5.0355647690594196e-03 + + 6.5225511789321899e-02 -2.5856611132621765e-01 + <_> + + 0 -1 1119 1.9625260028988123e-04 + + 1.4221550524234772e-01 -1.8481519818305969e-01 + <_> + + 0 -1 1120 2.5747891049832106e-03 + + -3.5904300212860107e-01 7.5663506984710693e-02 + <_> + + 0 -1 1121 -4.0524629876017570e-03 + + -2.1212129294872284e-01 1.1840210109949112e-01 + <_> + + 0 -1 1122 5.6920260190963745e-02 + + -4.3657299131155014e-02 3.8774600625038147e-01 + <_> + + 0 -1 1123 3.7986990064382553e-02 + + -8.1706330180168152e-02 3.9529800415039062e-01 + <_> + + 0 -1 1124 -2.2731529548764229e-02 + + -3.4693419933319092e-01 6.8438567221164703e-02 + <_> + + 0 -1 1125 9.9069473799318075e-04 + + -3.6681869626045227e-01 6.1036650091409683e-02 + <_> + + 0 -1 1126 -4.3086782097816467e-03 + + 1.4361980557441711e-01 -9.6160076558589935e-02 + <_> + + 0 -1 1127 -2.5202209129929543e-02 + + -4.6109348535537720e-01 5.9420660138130188e-02 + <_> + + 0 -1 1128 -3.3597718924283981e-02 + + -4.7127521038055420e-01 9.6356319263577461e-03 + <_> + + 0 -1 1129 -4.6891071833670139e-03 + + 1.9676209986209869e-01 -1.1853359639644623e-01 + <_> + + 0 -1 1130 2.4549920111894608e-02 + + -4.5542590320110321e-02 2.8717058897018433e-01 + <_> + + 0 -1 1131 -1.8802500562742352e-03 + + -2.9892438650131226e-01 8.0199889838695526e-02 + <_> + + 0 -1 1132 2.0160999894142151e-01 + + 3.0502580106258392e-02 -4.8414209485054016e-01 + <_> + + 0 -1 1133 -6.9803953170776367e-02 + + -6.2382811307907104e-01 3.5180661827325821e-02 + <_> + + 0 -1 1134 9.1318902559578419e-04 + + -1.9935069978237152e-01 6.8270348012447357e-02 + <_> + + 0 -1 1135 1.4578959904611111e-02 + + 1.0063359886407852e-01 -2.5353130698204041e-01 + <_> + + 0 -1 1136 5.0130348652601242e-02 + + 5.7192109525203705e-02 -4.1628059744834900e-01 + <_> + + 0 -1 1137 -1.8048109486699104e-02 + + -4.4572651386260986e-01 5.0399489700794220e-02 + <_> + + 0 -1 1138 1.4818160235881805e-01 + + 1.6779610887169838e-02 -4.5810478925704956e-01 + <_> + + 0 -1 1139 -2.6285950094461441e-02 + + 3.5442620515823364e-01 -6.1184428632259369e-02 + <_> + + 0 -1 1140 -1.8414109945297241e-02 + + -3.2132109999656677e-01 7.6148152351379395e-02 + <_> + + 0 -1 1141 6.1610070988535881e-03 + + 8.7946079671382904e-02 -2.5913208723068237e-01 + <_> + + 0 -1 1142 -2.5900160893797874e-02 + + 3.0681431293487549e-01 -6.5600410103797913e-02 + <_> + + 0 -1 1143 1.5014899894595146e-02 + + -5.6076969951391220e-02 3.8661429286003113e-01 + <_> + + 0 -1 1144 -4.3112158775329590e-02 + + 5.5926108360290527e-01 -3.9232630282640457e-02 + <_> + + 0 -1 1145 -2.1485170349478722e-02 + + -4.6384871006011963e-01 4.8264618963003159e-02 + <_> + + 0 -1 1146 -2.5131789967417717e-02 + + -4.8091739416122437e-01 4.1346170008182526e-02 + <_> + + 0 -1 1147 4.1451459401287138e-04 + + 4.4691830873489380e-02 -4.2174011468887329e-01 + <_> + + 0 -1 1148 1.0218570008873940e-02 + + 5.3744480013847351e-02 -1.9395479559898376e-01 + <_> + + 0 -1 1149 -2.0342700183391571e-02 + + 2.9722499847412109e-01 -7.1297563612461090e-02 + <_> + + 0 -1 1150 -3.0666049569845200e-02 + + -3.9920780062675476e-01 4.5510981231927872e-02 + <_> + + 0 -1 1151 -3.2767441123723984e-02 + + -5.0248539447784424e-01 4.4888608157634735e-02 + <_> + + 0 -1 1152 -5.4365001618862152e-02 + + -4.7751170396804810e-01 4.1882470250129700e-02 + <_> + + 0 -1 1153 -2.9916359111666679e-02 + + 3.5793611407279968e-01 -6.1831939965486526e-02 + <_> + + 0 -1 1154 1.0144179686903954e-02 + + -1.5790919959545135e-01 5.7373359799385071e-02 + <_> + + 0 -1 1155 1.5639010071754456e-01 + + 3.2949700951576233e-02 -6.4462232589721680e-01 + <_> + + 0 -1 1156 5.4447978734970093e-02 + + -4.1508059948682785e-02 1.2866689264774323e-01 + <_> + + 0 -1 1157 -3.9772719144821167e-02 + + -6.8962317705154419e-01 2.9046570882201195e-02 + <_> + + 0 -1 1158 6.9650667719542980e-03 + + -9.4761677086353302e-02 1.8257130682468414e-01 + <_> + + 0 -1 1159 -5.1617428660392761e-02 + + -4.4907289743423462e-01 4.3913140892982483e-02 + <_> + + 0 -1 1160 -2.6814609766006470e-02 + + -2.2568839788436890e-01 5.4928071796894073e-02 + <_> + + 0 -1 1161 1.3181920163333416e-02 + + 8.0101907253265381e-02 -2.8673300147056580e-01 + <_> + + 0 -1 1162 1.4241590164601803e-02 + + -8.4264412522315979e-02 2.1000739932060242e-01 + <_> + + 0 -1 1163 3.1410539522767067e-03 + + 1.3257560133934021e-01 -1.5610539913177490e-01 + <_> + + 0 -1 1164 1.0995150357484818e-01 + + 1.2388270348310471e-02 -4.0302368998527527e-01 + <_> + + 0 -1 1165 1.7845850437879562e-02 + + 5.2870228886604309e-02 -3.7930241227149963e-01 + <_> + + 0 -1 1166 1.0851990431547165e-02 + + -5.4071258753538132e-02 3.5186240077018738e-01 + <_> + + 0 -1 1167 -2.5958200916647911e-02 + + 4.1978350281715393e-01 -4.0477428585290909e-02 + <_> + + 0 -1 1168 4.0990379638969898e-03 + + 5.0911288708448410e-02 -3.5974949598312378e-01 + <_> + + 0 -1 1169 1.4909840188920498e-02 + + -6.1437230557203293e-02 2.8947550058364868e-01 + <_> + + 0 -1 1170 4.0265037678182125e-03 + + 1.0686399787664413e-01 -1.2979680299758911e-01 + <_> + + 0 -1 1171 3.9495688676834106e-01 + + -2.8920559212565422e-02 6.3535267114639282e-01 + <_> + + 0 -1 1172 1.2874379754066467e-02 + + -1.1910410225391388e-01 1.2068430334329605e-01 + <_> + + 0 -1 1173 -4.8598181456327438e-02 + + 4.6885690093040466e-01 -4.2797289788722992e-02 + <_> + + 0 -1 1174 1.5357979573309422e-03 + + -3.0882269144058228e-01 6.3154831528663635e-02 + <_> + + 0 -1 1175 3.5379750188440084e-03 + + 1.0132449865341187e-01 -1.7726400494575500e-01 + <_> + + 0 -1 1176 -1.9441220909357071e-02 + + 2.3254390060901642e-01 -5.3732268512248993e-02 + <_> + + 0 -1 1177 2.5940369814634323e-03 + + -3.5682299733161926e-01 5.0598859786987305e-02 + <_> + + 0 -1 1178 5.9910379350185394e-02 + + -2.4030869826674461e-02 1.7003220319747925e-01 + <_> + + 0 -1 1179 -1.1181759648025036e-02 + + 3.4869500994682312e-01 -6.2812417745590210e-02 + <_> + + 0 -1 1180 4.9201812362298369e-04 + + -1.2642909586429596e-01 3.6503899842500687e-02 + <_> + + 0 -1 1181 6.7902177572250366e-02 + + -4.2887088656425476e-01 4.6336911618709564e-02 + <_> + + 0 -1 1182 1.5728829428553581e-02 + + -6.3028946518898010e-02 1.6275769472122192e-01 + <_> + + 0 -1 1183 -1.4824390411376953e-02 + + -5.3391677141189575e-01 3.2132621854543686e-02 + <_> + + 0 -1 1184 -1.9706260412931442e-02 + + 2.5455629825592041e-01 -3.0816650018095970e-02 + <_> + + 0 -1 1185 9.6607124432921410e-03 + + 9.2674352228641510e-02 -1.7940239608287811e-01 + <_> + + 0 -1 1186 -4.9929421395063400e-02 + + 2.6743340492248535e-01 -2.5595119222998619e-02 + <_> + + 0 -1 1187 7.3459640145301819e-02 + + -5.8698959648609161e-02 2.8898829221725464e-01 + <_> + + 0 -1 1188 -8.6538150208070874e-04 + + -1.4318460226058960e-01 6.5386183559894562e-02 + <_> + + 0 -1 1189 -1.0462219826877117e-02 + + -3.2498508691787720e-01 5.4955318570137024e-02 + <_> + + 0 -1 1190 -6.3478751108050346e-03 + + -1.0396370291709900e-01 4.0321409702301025e-02 + <_> + + 0 -1 1191 1.1406400054693222e-01 + + 2.6192039251327515e-02 -6.6177910566329956e-01 + <_> + + 0 -1 1192 -2.6893770322203636e-02 + + -3.5338699817657471e-01 1.9753590226173401e-02 + <_> + + 0 -1 1193 8.0600962042808533e-02 + + 2.8878480195999146e-02 -5.4975187778472900e-01 + <_> + + 0 -1 1194 -7.4676960706710815e-02 + + -3.4416058659553528e-01 2.6990719139575958e-02 + <_> + + 0 -1 1195 -7.7004089951515198e-02 + + 4.0045699477195740e-01 -4.5340269804000854e-02 + <_> + + 0 -1 1196 -8.6920477449893951e-02 + + -3.4687021374702454e-01 3.9195980876684189e-02 + <_> + + 0 -1 1197 -4.3200692161917686e-03 + + 7.5932569801807404e-02 -2.3720650374889374e-01 + <_> + + 0 -1 1198 -3.4127760678529739e-02 + + -4.1994720697402954e-01 4.3633870780467987e-02 + <_> + + 0 -1 1199 2.1845370531082153e-02 + + -5.8681700378656387e-02 3.2972678542137146e-01 + <_> + + 0 -1 1200 1.0037229955196381e-01 + + 4.2507208883762360e-02 -4.3366080522537231e-01 + <_> + 157 + -1.5512030124664307e+00 + + <_> + + 0 -1 1201 -2.8922120109200478e-03 + + 1.4381329715251923e-01 -4.0896520018577576e-01 + <_> + + 0 -1 1202 -3.2057950738817453e-03 + + -3.3472418785095215e-01 1.2834690511226654e-01 + <_> + + 0 -1 1203 -1.4795559764024802e-05 + + 1.0139170289039612e-01 -4.4680911302566528e-01 + <_> + + 0 -1 1204 3.7529919063672423e-04 + + -2.8604930639266968e-01 1.5357840061187744e-01 + <_> + + 0 -1 1205 4.9170467536896467e-04 + + -2.8404960036277771e-01 1.3163900375366211e-01 + <_> + + 0 -1 1206 1.6417380422353745e-02 + + 7.9901106655597687e-02 -2.8092819452285767e-01 + <_> + + 0 -1 1207 1.0119860060513020e-02 + + 1.0026869922876358e-01 -4.0932568907737732e-01 + <_> + + 0 -1 1208 -6.5251751802861691e-03 + + -3.3101710677146912e-01 9.6044629812240601e-02 + <_> + + 0 -1 1209 6.1215078458189964e-03 + + -3.5483101010322571e-01 8.4309920668601990e-02 + <_> + + 0 -1 1210 2.5817379355430603e-03 + + 8.3384357392787933e-02 -2.8031709790229797e-01 + <_> + + 0 -1 1211 -1.3406439684331417e-03 + + 1.5083800256252289e-01 -1.4946520328521729e-01 + <_> + + 0 -1 1212 3.3681320492178202e-03 + + 4.2112700641155243e-02 -2.2309710085391998e-01 + <_> + + 0 -1 1213 2.8937528841197491e-03 + + 8.2953810691833496e-02 -2.9152309894561768e-01 + <_> + + 0 -1 1214 3.3696501050144434e-03 + + 4.8548549413681030e-02 -1.9542780518531799e-01 + <_> + + 0 -1 1215 -7.1538880467414856e-02 + + 5.2008682489395142e-01 -4.2644441127777100e-02 + <_> + + 0 -1 1216 7.6072360388934612e-03 + + -8.5208661854267120e-02 1.1523310095071793e-01 + <_> + + 0 -1 1217 1.9313229713588953e-03 + + 8.9357398450374603e-02 -2.3614349961280823e-01 + <_> + + 0 -1 1218 9.0475968318060040e-04 + + -7.7408589422702789e-02 1.6829580068588257e-01 + <_> + + 0 -1 1219 1.1103670112788677e-02 + + -9.5963977277278900e-02 2.0391720533370972e-01 + <_> + + 0 -1 1220 -3.1021970789879560e-03 + + -3.8605719804763794e-01 4.6329721808433533e-02 + <_> + + 0 -1 1221 1.1446890421211720e-03 + + -2.8306689858436584e-01 5.8978211134672165e-02 + <_> + + 0 -1 1222 7.7077788300812244e-03 + + 1.0474249720573425e-01 -1.7146070301532745e-01 + <_> + + 0 -1 1223 4.9893710762262344e-02 + + -6.4692601561546326e-02 3.0140951275825500e-01 + <_> + + 0 -1 1224 -1.4937819913029671e-02 + + -2.7854371070861816e-01 7.0895470678806305e-02 + <_> + + 0 -1 1225 -2.5303829461336136e-03 + + 1.2108519673347473e-01 -1.4635290205478668e-01 + <_> + + 0 -1 1226 2.8611259534955025e-02 + + -5.0357531756162643e-02 4.0651878714561462e-01 + <_> + + 0 -1 1227 3.6244060844182968e-02 + + 4.4577218592166901e-02 -5.6234288215637207e-01 + <_> + + 0 -1 1228 -3.0544339679181576e-03 + + 1.1526989936828613e-01 -2.7371090650558472e-01 + <_> + + 0 -1 1229 -1.3101019430905581e-03 + + -2.6798000931739807e-01 5.9726651757955551e-02 + <_> + + 0 -1 1230 1.0702989529818296e-03 + + -1.5439410507678986e-01 1.1206989735364914e-01 + <_> + + 0 -1 1231 -2.3467160761356354e-02 + + -6.2424921989440918e-01 2.6010479778051376e-02 + <_> + + 0 -1 1232 -2.2787749767303467e-02 + + 1.7903989553451538e-01 -6.8230852484703064e-02 + <_> + + 0 -1 1233 7.5017688795924187e-03 + + 5.2637178450822830e-02 -3.3333471417427063e-01 + <_> + + 0 -1 1234 1.3881090097129345e-02 + + 6.5118886530399323e-02 -2.4152719974517822e-01 + <_> + + 0 -1 1235 -8.7769115343689919e-03 + + 1.9925190508365631e-01 -8.8063232600688934e-02 + <_> + + 0 -1 1236 2.6523560285568237e-02 + + 4.6574778854846954e-02 -3.6550509929656982e-01 + <_> + + 0 -1 1237 7.2263809852302074e-03 + + -1.0806850343942642e-01 1.5131799876689911e-01 + <_> + + 0 -1 1238 2.3426050320267677e-03 + + -1.5072929859161377e-01 9.9945023655891418e-02 + <_> + + 0 -1 1239 -2.8811080483137630e-05 + + 6.1413038522005081e-02 -2.4344439804553986e-01 + <_> + + 0 -1 1240 -1.3911900110542774e-02 + + -3.1010839343070984e-01 2.4895850569009781e-02 + <_> + + 0 -1 1241 2.4768780916929245e-02 + + 2.3218030110001564e-02 -6.5071028470993042e-01 + <_> + + 0 -1 1242 -6.0916407965123653e-03 + + 5.9768490493297577e-02 -2.5360348820686340e-01 + <_> + + 0 -1 1243 -9.7264908254146576e-03 + + -2.5584441423416138e-01 5.5554620921611786e-02 + <_> + + 0 -1 1244 9.7499042749404907e-02 + + 5.3867488168179989e-03 -7.3567670583724976e-01 + <_> + + 0 -1 1245 3.0411418993026018e-03 + + -1.3759210705757141e-01 1.2143649905920029e-01 + <_> + + 0 -1 1246 2.7967148926109076e-03 + + 1.8048660457134247e-01 -8.4527000784873962e-02 + <_> + + 0 -1 1247 1.0707279667258263e-02 + + -4.3970860540866852e-02 3.1042009592056274e-01 + <_> + + 0 -1 1248 1.7561139538884163e-03 + + 5.1866840571165085e-02 -2.2768710553646088e-01 + <_> + + 0 -1 1249 -3.0384738929569721e-03 + + 7.1652042865753174e-01 -2.2465929388999939e-02 + <_> + + 0 -1 1250 -9.4161480665206909e-02 + + -7.9338562488555908e-01 1.3117490336298943e-02 + <_> + + 0 -1 1251 -2.3869009688496590e-02 + + 4.9338179826736450e-01 -3.2169021666049957e-02 + <_> + + 0 -1 1252 -3.9958588778972626e-02 + + -1.8914769589900970e-01 2.8500700369477272e-02 + <_> + + 0 -1 1253 6.9391070865094662e-03 + + 3.9777211844921112e-02 -3.9105901122093201e-01 + <_> + + 0 -1 1254 -3.3596780151128769e-02 + + -5.6830072402954102e-01 2.1618509665131569e-02 + <_> + + 0 -1 1255 -1.4079840481281281e-01 + + -7.9014372825622559e-01 1.4884609729051590e-02 + <_> + + 0 -1 1256 -5.7346289977431297e-03 + + -1.5512639284133911e-01 4.2879570275545120e-02 + <_> + + 0 -1 1257 -5.2841830998659134e-02 + + 3.0823838710784912e-01 -5.0709690898656845e-02 + <_> + + 0 -1 1258 1.5207099728286266e-02 + + -2.5789769366383553e-02 3.3292320370674133e-01 + <_> + + 0 -1 1259 -5.8392022037878633e-04 + + 8.8900387287139893e-02 -1.6297949850559235e-01 + <_> + + 0 -1 1260 -3.3715530298650265e-03 + + -1.7890229821205139e-01 7.5376607477664948e-02 + <_> + + 0 -1 1261 -1.2047060299664736e-03 + + 1.0491970181465149e-01 -1.2970739603042603e-01 + <_> + + 0 -1 1262 5.5276479572057724e-02 + + -4.3197508901357651e-02 3.7212029099464417e-01 + <_> + + 0 -1 1263 3.9330609142780304e-02 + + 3.0416399240493774e-02 -4.9076101183891296e-01 + <_> + + 0 -1 1264 -9.7229599487036467e-04 + + -2.1895459294319153e-01 3.9032708853483200e-02 + <_> + + 0 -1 1265 -5.6048069149255753e-02 + + 4.1632568836212158e-01 -3.3747311681509018e-02 + <_> + + 0 -1 1266 7.1376740932464600e-02 + + 1.2129209935665131e-02 -6.4814078807830811e-01 + <_> + + 0 -1 1267 1.4940260443836451e-03 + + -2.1393610537052155e-01 8.4887221455574036e-02 + <_> + + 0 -1 1268 -3.2299170270562172e-03 + + 9.0792432427406311e-02 -9.5816053450107574e-02 + <_> + + 0 -1 1269 4.2182870209217072e-02 + + -6.6914401948451996e-02 2.5217619538307190e-01 + <_> + + 0 -1 1270 -6.5001910552382469e-03 + + -1.2149559706449509e-01 3.7367988377809525e-02 + <_> + + 0 -1 1271 1.9457129761576653e-02 + + 5.0163779407739639e-02 -2.8700378537178040e-01 + <_> + + 0 -1 1272 3.7291388958692551e-02 + + 2.9608439654111862e-02 -5.7222497463226318e-01 + <_> + + 0 -1 1273 -2.5571519508957863e-02 + + 4.3941849470138550e-01 -3.6532308906316757e-02 + <_> + + 0 -1 1274 -7.9122912138700485e-03 + + -2.9618510603904724e-01 3.5483270883560181e-02 + <_> + + 0 -1 1275 3.0267490074038506e-03 + + -1.2113779783248901e-01 1.1271420121192932e-01 + <_> + + 0 -1 1276 -2.1035820245742798e-02 + + 2.9206061363220215e-01 -3.1001489609479904e-02 + <_> + + 0 -1 1277 -1.2911420315504074e-02 + + -5.4194331169128418e-01 2.6756240054965019e-02 + <_> + + 0 -1 1278 5.5096071213483810e-02 + + 8.4169982001185417e-03 -6.2873458862304688e-01 + <_> + + 0 -1 1279 -6.3893562182784081e-03 + + -2.0784839987754822e-01 6.0436788946390152e-02 + <_> + + 0 -1 1280 1.0858760215342045e-02 + + -7.8497253358364105e-02 1.2957990169525146e-01 + <_> + + 0 -1 1281 -1.5859620645642281e-02 + + 1.5772910416126251e-01 -1.0143510252237320e-01 + <_> + + 0 -1 1282 1.5203879773616791e-01 + + 2.1721320226788521e-02 -3.1713140010833740e-01 + <_> + + 0 -1 1283 1.7942039296030998e-02 + + -8.4816932678222656e-02 1.7697300016880035e-01 + <_> + + 0 -1 1284 8.8212518021464348e-03 + + 5.1800601184368134e-02 -2.1443609893321991e-01 + <_> + + 0 -1 1285 1.5715289860963821e-02 + + 4.2525820434093475e-02 -3.2278341054916382e-01 + <_> + + 0 -1 1286 -2.4744209367781878e-03 + + 1.0828550159931183e-01 -1.2953069806098938e-01 + <_> + + 0 -1 1287 1.2597530148923397e-02 + + -6.0251701623201370e-02 2.7512151002883911e-01 + <_> + + 0 -1 1288 -1.0955630568787456e-03 + + -5.4244071245193481e-01 2.8166439384222031e-02 + <_> + + 0 -1 1289 -1.4035019557923079e-03 + + -2.3625169694423676e-01 6.1887249350547791e-02 + <_> + + 0 -1 1290 -7.7294543385505676e-02 + + -5.2141982316970825e-01 1.1844149790704250e-02 + <_> + + 0 -1 1291 -7.5442157685756683e-02 + + -7.1588802337646484e-01 1.7151419073343277e-02 + <_> + + 0 -1 1292 -6.5148338675498962e-02 + + 2.4099840223789215e-01 -5.0278738141059875e-02 + <_> + + 0 -1 1293 -1.0481229983270168e-03 + + 6.5461628139019012e-02 -1.9198420643806458e-01 + <_> + + 0 -1 1294 2.0919230300933123e-03 + + 4.8702161759138107e-02 -2.0062549412250519e-01 + <_> + + 0 -1 1295 -4.2849369347095490e-02 + + -4.6154209971427917e-01 2.9137039557099342e-02 + <_> + + 0 -1 1296 -4.5563629828393459e-03 + + 1.3732179999351501e-01 -7.3871016502380371e-02 + <_> + + 0 -1 1297 6.7648440599441528e-03 + + -6.3866026699542999e-02 2.7578699588775635e-01 + <_> + + 0 -1 1298 4.2252071201801300e-02 + + 1.3583010062575340e-02 -6.2714421749114990e-01 + <_> + + 0 -1 1299 -3.5438220947980881e-02 + + -5.2436131238937378e-01 2.1047530695796013e-02 + <_> + + 0 -1 1300 -5.3693209774792194e-03 + + 1.8366709351539612e-01 -6.6432453691959381e-02 + <_> + + 0 -1 1301 1.3521539513021708e-03 + + 5.8834321796894073e-02 -2.2455100715160370e-01 + <_> + + 0 -1 1302 -3.2204028218984604e-02 + + -4.8017048835754395e-01 9.2976661399006844e-03 + <_> + + 0 -1 1303 4.0550291305407882e-04 + + -8.5948407649993896e-02 2.0100370049476624e-01 + <_> + + 0 -1 1304 -3.8419410120695829e-03 + + 2.0595569908618927e-01 -6.6863708198070526e-02 + <_> + + 0 -1 1305 -4.5518199913203716e-03 + + -2.2908920049667358e-01 5.8954399079084396e-02 + <_> + + 0 -1 1306 -4.9340371042490005e-02 + + -3.8995718955993652e-01 1.6714079305529594e-02 + <_> + + 0 -1 1307 8.6456492543220520e-02 + + -3.2278828322887421e-02 3.6371639370918274e-01 + <_> + + 0 -1 1308 5.1636258140206337e-03 + + -1.7399039864540100e-01 5.6017149239778519e-02 + <_> + + 0 -1 1309 3.5364869982004166e-03 + + -7.9630948603153229e-02 1.6313460469245911e-01 + <_> + + 0 -1 1310 -4.3170839548110962e-02 + + -3.7036859989166260e-01 1.9841130822896957e-02 + <_> + + 0 -1 1311 6.1772209592163563e-03 + + 5.9052169322967529e-02 -2.3701970279216766e-01 + <_> + + 0 -1 1312 -2.2244770079851151e-02 + + 2.5762718915939331e-01 -2.2968450561165810e-02 + <_> + + 0 -1 1313 5.0163730978965759e-02 + + 1.7468400299549103e-02 -6.8128740787506104e-01 + <_> + + 0 -1 1314 -3.0043811420910060e-04 + + 5.5781401693820953e-02 -1.2685780227184296e-01 + <_> + + 0 -1 1315 1.9783550500869751e-01 + + 1.2211419641971588e-02 -8.6064267158508301e-01 + <_> + + 0 -1 1316 6.5362468361854553e-02 + + 4.1287927888333797e-03 -6.2948238849639893e-01 + <_> + + 0 -1 1317 -1.8684990704059601e-02 + + -2.4377359449863434e-01 4.3232489377260208e-02 + <_> + + 0 -1 1318 -7.5593511573970318e-03 + + 1.7254440486431122e-01 -1.6871780157089233e-02 + <_> + + 0 -1 1319 1.4699660241603851e-03 + + -1.5561489760875702e-01 6.9231852889060974e-02 + <_> + + 0 -1 1320 1.1925940215587616e-01 + + -2.6341190561652184e-02 4.4847229123115540e-01 + <_> + + 0 -1 1321 1.3763479888439178e-02 + + 3.1852710992097855e-02 -3.8184550404548645e-01 + <_> + + 0 -1 1322 1.2966440059244633e-02 + + -3.9391368627548218e-02 1.9092699885368347e-01 + <_> + + 0 -1 1323 -1.1041419580578804e-02 + + -2.7309378981590271e-01 4.7777820378541946e-02 + <_> + + 0 -1 1324 6.8364411592483521e-01 + + 9.6240043640136719e-03 -9.7447502613067627e-01 + <_> + + 0 -1 1325 -2.4255160242319107e-03 + + -2.5439569354057312e-01 4.0732551366090775e-02 + <_> + + 0 -1 1326 6.4529682276770473e-04 + + -1.3824179768562317e-01 7.4660047888755798e-02 + <_> + + 0 -1 1327 -2.2386180236935616e-02 + + 3.9404779672622681e-01 -4.2591951787471771e-02 + <_> + + 0 -1 1328 -6.4325161278247833e-02 + + -9.6853357553482056e-01 5.4289568215608597e-03 + <_> + + 0 -1 1329 4.0803711861371994e-02 + + 1.4779980294406414e-02 -7.5445967912673950e-01 + <_> + + 0 -1 1330 -2.4066439364105463e-03 + + 7.6213918626308441e-02 -8.1325337290763855e-02 + <_> + + 0 -1 1331 -4.9865059554576874e-02 + + -7.8447979688644409e-01 1.5130150131881237e-02 + <_> + + 0 -1 1332 -8.9749991893768311e-02 + + -9.0076518058776855e-01 4.0898341685533524e-03 + <_> + + 0 -1 1333 2.1489290520548820e-03 + + -7.7873408794403076e-02 1.4538989961147308e-01 + <_> + + 0 -1 1334 1.8653910374268889e-03 + + -5.1264639943838120e-02 1.4514209330081940e-01 + <_> + + 0 -1 1335 5.4189950227737427e-02 + + 1.6740569844841957e-02 -7.2964847087860107e-01 + <_> + + 0 -1 1336 -3.7668810691684484e-03 + + 1.5345999598503113e-01 -5.9867210686206818e-02 + <_> + + 0 -1 1337 -1.5151940286159515e-01 + + -8.2612198591232300e-01 1.4488279819488525e-02 + <_> + + 0 -1 1338 1.0246659629046917e-02 + + -6.3145689666271210e-02 1.8994790315628052e-01 + <_> + + 0 -1 1339 1.0578270070254803e-02 + + 5.9726748615503311e-02 -1.9162079691886902e-01 + <_> + + 0 -1 1340 1.5032970346510410e-02 + + -7.3868520557880402e-02 1.5511709451675415e-01 + <_> + + 0 -1 1341 -4.2136289179325104e-02 + + -6.8733322620391846e-01 1.6604630276560783e-02 + <_> + + 0 -1 1342 1.8628799589350820e-03 + + -1.5732850134372711e-01 7.5714908540248871e-02 + <_> + + 0 -1 1343 2.4659639224410057e-02 + + 9.7081139683723450e-02 -1.6045799851417542e-01 + <_> + + 0 -1 1344 1.9145730137825012e-01 + + 7.1056559681892395e-03 -7.5537341833114624e-01 + <_> + + 0 -1 1345 -3.0167160555720329e-02 + + 1.7002609372138977e-01 -8.6163826286792755e-02 + <_> + + 0 -1 1346 9.2923697084188461e-03 + + 4.3352611362934113e-02 -1.9533480703830719e-01 + <_> + + 0 -1 1347 -1.9069829722866416e-03 + + 8.2421518862247467e-02 -1.4644089341163635e-01 + <_> + + 0 -1 1348 3.1027841032482684e-04 + + -1.1879319697618484e-01 9.4635762274265289e-02 + <_> + + 0 -1 1349 4.4492271263152361e-04 + + -1.5645760297775269e-01 6.8512812256813049e-02 + <_> + + 0 -1 1350 -1.2095469981431961e-02 + + -9.0144127607345581e-02 3.0050620436668396e-02 + <_> + + 0 -1 1351 -2.0358909387141466e-03 + + 1.3586470484733582e-01 -7.2631262242794037e-02 + <_> + + 0 -1 1352 -9.3594277277588844e-03 + + 1.1376120150089264e-01 -3.9632719010114670e-02 + <_> + + 0 -1 1353 4.2418478988111019e-03 + + -8.1519439816474915e-02 1.5766209363937378e-01 + <_> + + 0 -1 1354 -5.9963759034872055e-02 + + -2.3273150622844696e-01 2.0836880430579185e-02 + <_> + + 0 -1 1355 4.6651167795062065e-03 + + 1.3135330379009247e-01 -1.2394910305738449e-01 + <_> + + 0 -1 1356 6.2358117429539561e-04 + + -1.2920179963111877e-01 6.5220557153224945e-02 + <_> + + 0 -1 1357 2.0561330020427704e-03 + + -6.2910877168178558e-02 1.6288000345230103e-01 + <_> + 127 + -1.7598799467086792e+00 + + <_> + + 0 -1 1358 1.1216440051794052e-01 + + -2.9065090417861938e-01 3.1510210037231445e-01 + <_> + + 0 -1 1359 2.7850609272718430e-02 + + -3.9972350001335144e-01 1.7894990742206573e-01 + <_> + + 0 -1 1360 4.0804240852594376e-02 + + -2.4171060323715210e-01 2.2376739978790283e-01 + <_> + + 0 -1 1361 1.3134710025042295e-03 + + -4.2230761051177979e-01 6.9066837430000305e-02 + <_> + + 0 -1 1362 3.9736120961606503e-03 + + -5.5243992805480957e-01 1.0362079739570618e-01 + <_> + + 0 -1 1363 -9.7877913503907621e-05 + + 7.0300459861755371e-02 -4.1970318555831909e-01 + <_> + + 0 -1 1364 6.2921550124883652e-03 + + -3.0629968643188477e-01 1.3072040677070618e-01 + <_> + + 0 -1 1365 -8.7216142565011978e-03 + + -4.1267630457878113e-01 7.2738148272037506e-02 + <_> + + 0 -1 1366 -5.8611109852790833e-02 + + 1.9491520524024963e-01 -1.9737449288368225e-01 + <_> + + 0 -1 1367 -4.6104468405246735e-02 + + -2.6274758577346802e-01 2.4362189695239067e-02 + <_> + + 0 -1 1368 -5.2685278933495283e-04 + + 7.9876311123371124e-02 -4.4358581304550171e-01 + <_> + + 0 -1 1369 -2.5521939620375633e-02 + + -4.4183689355850220e-01 1.0705660097301006e-02 + <_> + + 0 -1 1370 -6.8350387737154961e-03 + + -3.9501190185546875e-01 7.8441992402076721e-02 + <_> + + 0 -1 1371 6.1055209487676620e-02 + + 3.5330320242792368e-03 -6.0677450895309448e-01 + <_> + + 0 -1 1372 4.7110877931118011e-03 + + -1.9310380518436432e-01 1.5259410440921783e-01 + <_> + + 0 -1 1373 3.7552498281002045e-02 + + 6.9572687149047852e-02 -4.1588190197944641e-01 + <_> + + 0 -1 1374 4.0887430310249329e-02 + + -1.3596929609775543e-01 2.4894300103187561e-01 + <_> + + 0 -1 1375 2.6306639483664185e-05 + + -2.5603210926055908e-01 1.1001589894294739e-01 + <_> + + 0 -1 1376 9.4716809689998627e-03 + + -2.2197020053863525e-01 1.3640490174293518e-01 + <_> + + 0 -1 1377 3.4596489276736975e-03 + + 1.5568970143795013e-01 -1.8454350531101227e-01 + <_> + + 0 -1 1378 -8.1670414656400681e-03 + + -3.7346610426902771e-01 8.2206420600414276e-02 + <_> + + 0 -1 1379 4.7045178711414337e-02 + + 1.2655580416321754e-02 -6.9167500734329224e-01 + <_> + + 0 -1 1380 -1.9954189192503691e-03 + + -4.2871651053428650e-01 6.0119848698377609e-02 + <_> + + 0 -1 1381 -3.2797679305076599e-02 + + -5.8513718843460083e-01 3.9739210158586502e-02 + <_> + + 0 -1 1382 4.3516121804714203e-02 + + 3.6311239004135132e-02 -5.8556967973709106e-01 + <_> + + 0 -1 1383 -1.3213600032031536e-02 + + 2.1160380542278290e-01 -8.9618362486362457e-02 + <_> + + 0 -1 1384 -3.8574080914258957e-02 + + -5.9375947713851929e-01 3.7297870963811874e-02 + <_> + + 0 -1 1385 -1.5351839363574982e-01 + + 4.4116440415382385e-01 -5.9058368206024170e-02 + <_> + + 0 -1 1386 -1.4133240096271038e-02 + + -3.4045210480690002e-01 6.6277496516704559e-02 + <_> + + 0 -1 1387 1.4061010442674160e-02 + + 1.1312460154294968e-01 -1.9001239538192749e-01 + <_> + + 0 -1 1388 3.5457469522953033e-02 + + 3.7297818809747696e-02 -5.3568178415298462e-01 + <_> + + 0 -1 1389 -1.2931039556860924e-02 + + -2.8593328595161438e-01 5.8341801166534424e-02 + <_> + + 0 -1 1390 -1.1986999772489071e-02 + + -4.0216270089149475e-01 4.7841191291809082e-02 + <_> + + 0 -1 1391 -1.3723289594054222e-02 + + 2.0238439738750458e-01 -8.9290492236614227e-02 + <_> + + 0 -1 1392 1.5990810468792915e-02 + + -6.1742551624774933e-02 3.9387008547782898e-01 + <_> + + 0 -1 1393 -1.4505759812891483e-02 + + -3.5829049348831177e-01 4.3789908289909363e-02 + <_> + + 0 -1 1394 3.1443528831005096e-02 + + -6.7374527454376221e-02 2.8779721260070801e-01 + <_> + + 0 -1 1395 3.4287340939044952e-02 + + 5.6390259414911270e-02 -3.3407160639762878e-01 + <_> + + 0 -1 1396 8.8674569269642234e-05 + + -2.8655600547790527e-01 7.0318557322025299e-02 + <_> + + 0 -1 1397 1.8266469240188599e-02 + + -5.2221570163965225e-02 1.7026390135288239e-01 + <_> + + 0 -1 1398 6.1769630759954453e-02 + + -6.8800583481788635e-02 2.7483311295509338e-01 + <_> + + 0 -1 1399 -2.3383310064673424e-02 + + -2.7845630049705505e-01 2.4131359532475471e-02 + <_> + + 0 -1 1400 -1.1182860285043716e-01 + + 4.5687168836593628e-01 -4.3217949569225311e-02 + <_> + + 0 -1 1401 -6.4386896789073944e-02 + + -3.4228751063346863e-01 6.4063712954521179e-02 + <_> + + 0 -1 1402 2.1763430535793304e-01 + + -6.0564499348402023e-02 3.6352708935737610e-01 + <_> + + 0 -1 1403 -4.9456087872385979e-03 + + -1.6526390612125397e-01 4.6035580337047577e-02 + <_> + + 0 -1 1404 -1.2704910477623343e-03 + + -2.5035798549652100e-01 8.2336440682411194e-02 + <_> + + 0 -1 1405 2.6536729186773300e-02 + + -1.3919049501419067e-01 1.9524000585079193e-01 + <_> + + 0 -1 1406 -2.0027440041303635e-02 + + -3.7472829222679138e-01 5.3981021046638489e-02 + <_> + + 0 -1 1407 -6.1987549066543579e-02 + + -1.4436429738998413e-01 1.5863290056586266e-02 + <_> + + 0 -1 1408 2.3037059232592583e-02 + + 3.8429230451583862e-02 -4.8479309678077698e-01 + <_> + + 0 -1 1409 5.7958271354436874e-02 + + 2.0750140771269798e-02 -7.6776617765426636e-01 + <_> + + 0 -1 1410 5.4419268853962421e-03 + + 7.2074413299560547e-02 -2.4254220724105835e-01 + <_> + + 0 -1 1411 7.2400430217385292e-03 + + -8.2432948052883148e-02 1.8463499844074249e-01 + <_> + + 0 -1 1412 1.4847779646515846e-02 + + 5.6245408952236176e-02 -3.6297059059143066e-01 + <_> + + 0 -1 1413 1.2084879912436008e-02 + + -6.3536256551742554e-02 2.8614228963851929e-01 + <_> + + 0 -1 1414 8.0831356346607208e-02 + + 4.7143958508968353e-02 -4.9968090653419495e-01 + <_> + + 0 -1 1415 1.9218639936298132e-03 + + -4.0469148755073547e-01 2.2093040868639946e-02 + <_> + + 0 -1 1416 -1.4179679565131664e-02 + + -1.8520280718803406e-01 8.6823917925357819e-02 + <_> + + 0 -1 1417 -2.9600440029753372e-05 + + 7.4054829776287079e-02 -1.9331359863281250e-01 + <_> + + 0 -1 1418 1.7121590208262205e-03 + + -4.9954649806022644e-01 3.8273740559816360e-02 + <_> + + 0 -1 1419 -1.3207949697971344e-01 + + 5.2964788675308228e-01 -1.0363499633967876e-02 + <_> + + 0 -1 1420 3.6922071129083633e-02 + + 1.9587470218539238e-02 -8.8954067230224609e-01 + <_> + + 0 -1 1421 -7.3079409048659727e-06 + + 6.4993053674697876e-02 -1.7331290245056152e-01 + <_> + + 0 -1 1422 -3.5222709178924561e-02 + + -3.6849930882453918e-01 5.0565738230943680e-02 + <_> + + 0 -1 1423 -5.5531110614538193e-02 + + 3.1555691361427307e-01 -4.5015729963779449e-02 + <_> + + 0 -1 1424 1.8762869760394096e-02 + + -1.9359070062637329e-01 7.9093530774116516e-02 + <_> + + 0 -1 1425 2.4971760809421539e-02 + + -8.1862196326255798e-02 2.1014890074729919e-01 + <_> + + 0 -1 1426 -2.0817129407078028e-03 + + -1.7723660171031952e-01 9.1757282614707947e-02 + <_> + + 0 -1 1427 -1.1499860137701035e-01 + + 5.0862562656402588e-01 -1.8267450854182243e-02 + <_> + + 0 -1 1428 3.2068958878517151e-01 + + 2.1651009097695351e-02 -7.6685470342636108e-01 + <_> + + 0 -1 1429 -8.1451296806335449e-02 + + -4.6331760287284851e-01 2.9383579269051552e-02 + <_> + + 0 -1 1430 -1.5007940120995045e-02 + + -3.9308649301528931e-01 3.6867558956146240e-02 + <_> + + 0 -1 1431 2.3795820772647858e-02 + + -3.2482311129570007e-02 1.6764250397682190e-01 + <_> + + 0 -1 1432 -8.8508807122707367e-02 + + 7.2103458642959595e-01 -2.1140210330486298e-02 + <_> + + 0 -1 1433 4.5011121779680252e-02 + + -2.5326130911707878e-02 2.8062760829925537e-01 + <_> + + 0 -1 1434 1.9286990165710449e-02 + + 6.5771162509918213e-02 -2.5697788596153259e-01 + <_> + + 0 -1 1435 2.2137619554996490e-02 + + 3.9154991507530212e-02 -1.9145630300045013e-01 + <_> + + 0 -1 1436 2.9847979545593262e-02 + + -1.2521019577980042e-01 1.4867870509624481e-01 + <_> + + 0 -1 1437 -6.8392023444175720e-02 + + 2.6023870706558228e-01 -4.7525301575660706e-02 + <_> + + 0 -1 1438 6.8003371357917786e-02 + + -4.5898560434579849e-02 4.0107101202011108e-01 + <_> + + 0 -1 1439 5.6098159402608871e-02 + + 2.3277789354324341e-02 -8.4457129240036011e-01 + <_> + + 0 -1 1440 -1.3024089857935905e-02 + + -3.8348990678787231e-01 3.8314189761877060e-02 + <_> + + 0 -1 1441 1.2594680301845074e-02 + + -6.7616842687129974e-02 2.9852440953254700e-01 + <_> + + 0 -1 1442 -4.9063879996538162e-02 + + -5.5862659215927124e-01 2.8511619195342064e-02 + <_> + + 0 -1 1443 -1.5734169632196426e-02 + + 2.5611931085586548e-01 -5.9407141059637070e-02 + <_> + + 0 -1 1444 1.4674849808216095e-02 + + -6.3001021742820740e-02 2.7854999899864197e-01 + <_> + + 0 -1 1445 2.5068029761314392e-02 + + -7.8861348330974579e-02 1.0577370226383209e-01 + <_> + + 0 -1 1446 7.4170758016407490e-03 + + -3.5775899887084961e-01 4.8707701265811920e-02 + <_> + + 0 -1 1447 -7.7149281278252602e-03 + + -1.8049560487270355e-01 9.7531601786613464e-02 + <_> + + 0 -1 1448 4.9982070922851562e-02 + + 2.1009320393204689e-02 -7.6537537574768066e-01 + <_> + + 0 -1 1449 -1.6759630292654037e-02 + + -5.9045380353927612e-01 2.6948049664497375e-02 + <_> + + 0 -1 1450 3.7632828950881958e-01 + + 2.1989850327372551e-02 -6.1461311578750610e-01 + <_> + + 0 -1 1451 5.2720829844474792e-02 + + -3.9074160158634186e-02 2.6600670814514160e-01 + <_> + + 0 -1 1452 2.6270199567079544e-02 + + -9.3863986432552338e-02 2.2280269861221313e-01 + <_> + + 0 -1 1453 -2.5664661079645157e-03 + + -1.8621809780597687e-01 9.8519712686538696e-02 + <_> + + 0 -1 1454 5.3800269961357117e-03 + + 1.2816059589385986e-01 -1.3671700656414032e-01 + <_> + + 0 -1 1455 2.5200050324201584e-02 + + 3.0875589698553085e-02 -2.9681420326232910e-01 + <_> + + 0 -1 1456 2.5444060564041138e-02 + + 4.3978411704301834e-02 -4.0505328774452209e-01 + <_> + + 0 -1 1457 -2.4715809151530266e-02 + + -5.8492290973663330e-01 2.3179760202765465e-02 + <_> + + 0 -1 1458 -1.6159649938344955e-02 + + -3.1950500607490540e-01 4.4603530317544937e-02 + <_> + + 0 -1 1459 6.5401610918343067e-03 + + -5.8575991541147232e-02 7.4016787111759186e-02 + <_> + + 0 -1 1460 -4.3940648436546326e-02 + + -7.7211838960647583e-01 1.9352979958057404e-02 + <_> + + 0 -1 1461 -4.5612620306201279e-04 + + 3.0397420749068260e-02 -2.6982998847961426e-01 + <_> + + 0 -1 1462 2.8633379843086004e-03 + + -1.6874340176582336e-01 8.8886268436908722e-02 + <_> + + 0 -1 1463 -5.9488460421562195e-02 + + -3.4058949351310730e-01 2.4625880643725395e-02 + <_> + + 0 -1 1464 3.0714470893144608e-02 + + 3.1796399503946304e-02 -4.1572770476341248e-01 + <_> + + 0 -1 1465 -2.2330379113554955e-02 + + 1.2896050512790680e-01 -2.4232570081949234e-02 + <_> + + 0 -1 1466 2.3971609771251678e-02 + + -7.6858058571815491e-02 2.0360720157623291e-01 + <_> + + 0 -1 1467 -6.0696780681610107e-02 + + -7.2060132026672363e-01 1.1617880314588547e-02 + <_> + + 0 -1 1468 -6.8362243473529816e-02 + + 3.5825181007385254e-01 -4.4807899743318558e-02 + <_> + + 0 -1 1469 1.3451039791107178e-01 + + 2.6008069515228271e-02 -2.5077620148658752e-01 + <_> + + 0 -1 1470 1.3341170549392700e-01 + + 4.7138180583715439e-02 -3.9661580324172974e-01 + <_> + + 0 -1 1471 2.0524330437183380e-02 + + 4.3894171714782715e-02 -2.8501969575881958e-01 + <_> + + 0 -1 1472 4.1543610394001007e-02 + + 2.5452220812439919e-02 -5.9377658367156982e-01 + <_> + + 0 -1 1473 -7.1573443710803986e-02 + + -7.8743761777877808e-01 1.3979320414364338e-02 + <_> + + 0 -1 1474 6.6264629364013672e-02 + + 2.2939130663871765e-02 -5.4304981231689453e-01 + <_> + + 0 -1 1475 4.4609569013118744e-03 + + 5.0688140094280243e-02 -2.0599000155925751e-01 + <_> + + 0 -1 1476 1.4859540387988091e-02 + + -7.3408462107181549e-02 1.9902250170707703e-01 + <_> + + 0 -1 1477 -3.9625339210033417e-02 + + -5.3522932529449463e-01 9.3211038038134575e-03 + <_> + + 0 -1 1478 -9.6143726259469986e-03 + + 2.7664861083030701e-01 -6.3087522983551025e-02 + <_> + + 0 -1 1479 5.4589830338954926e-02 + + 2.4962859228253365e-02 -5.8171188831329346e-01 + <_> + + 0 -1 1480 1.3770899735391140e-02 + + -2.2891749441623688e-01 6.9963671267032623e-02 + <_> + + 0 -1 1481 8.6862340569496155e-02 + + 2.4058010429143906e-02 -5.8642482757568359e-01 + <_> + + 0 -1 1482 -2.2433010861277580e-02 + + -9.2169362306594849e-01 1.3281799852848053e-02 + <_> + + 0 -1 1483 -7.3779597878456116e-02 + + 3.8463789224624634e-01 -8.5962712764739990e-03 + <_> + + 0 -1 1484 2.9300490859895945e-04 + + -1.7170579731464386e-01 8.8520109653472900e-02 + <_> + 178 + -1.5360039472579956e+00 + + <_> + + 0 -1 1485 5.3288340568542480e-03 + + -2.6616770029067993e-01 1.7760449647903442e-01 + <_> + + 0 -1 1486 -4.0987450629472733e-03 + + 1.2358420342206955e-01 -3.0805110931396484e-01 + <_> + + 0 -1 1487 -5.5853058584034443e-03 + + -5.0533992052078247e-01 6.2050119042396545e-02 + <_> + + 0 -1 1488 -5.1797390915453434e-04 + + 6.9178067147731781e-02 -3.4831359982490540e-01 + <_> + + 0 -1 1489 5.3605018183588982e-03 + + 6.5158672630786896e-02 -4.6262231469154358e-01 + <_> + + 0 -1 1490 3.0114270746707916e-02 + + -6.4132362604141235e-02 7.1070060133934021e-02 + <_> + + 0 -1 1491 8.9014291763305664e-02 + + 4.2987130582332611e-02 -6.0177898406982422e-01 + <_> + + 0 -1 1492 1.5248140553012490e-03 + + -3.3071789145469666e-01 7.1408301591873169e-02 + <_> + + 0 -1 1493 1.8556410213932395e-03 + + -3.4727120399475098e-01 7.0630677044391632e-02 + <_> + + 0 -1 1494 -1.6151620075106621e-02 + + -2.5611770153045654e-01 7.1255698800086975e-02 + <_> + + 0 -1 1495 -3.1278008827939630e-04 + + 7.3420330882072449e-02 -2.9594621062278748e-01 + <_> + + 0 -1 1496 -6.0263078921707347e-05 + + 6.6566191613674164e-02 -2.1802450716495514e-01 + <_> + + 0 -1 1497 7.6520902803167701e-04 + + 7.5537197291851044e-02 -3.7677881121635437e-01 + <_> + + 0 -1 1498 -6.9589070975780487e-02 + + 3.9810648560523987e-01 -2.5841819122433662e-02 + <_> + + 0 -1 1499 -9.8529577255249023e-02 + + 6.7321968078613281e-01 -3.3925469964742661e-02 + <_> + + 0 -1 1500 4.9950059503316879e-02 + + 6.1660569161176682e-02 -3.7851110100746155e-01 + <_> + + 0 -1 1501 3.9009240572340786e-04 + + -9.6428610384464264e-02 2.1700200438499451e-01 + <_> + + 0 -1 1502 -7.1598717477172613e-04 + + -1.8358109891414642e-01 1.0587400197982788e-01 + <_> + + 0 -1 1503 3.8064830005168915e-03 + + -1.7527610063552856e-01 1.1430399864912033e-01 + <_> + + 0 -1 1504 6.5288757905364037e-03 + + 6.7994527518749237e-02 -3.0726119875907898e-01 + <_> + + 0 -1 1505 2.2182099055498838e-03 + + -2.7935230731964111e-01 5.8790720999240875e-02 + <_> + + 0 -1 1506 1.7800349451135844e-04 + + 9.9489107728004456e-02 -2.6616880297660828e-01 + <_> + + 0 -1 1507 -3.2656680792570114e-02 + + 5.8734762668609619e-01 -2.6545880362391472e-02 + <_> + + 0 -1 1508 2.6773350313305855e-02 + + 3.6414410918951035e-02 -3.7188830971717834e-01 + <_> + + 0 -1 1509 1.2780309654772282e-02 + + -8.4540523588657379e-02 1.7853260040283203e-01 + <_> + + 0 -1 1510 5.5374070070683956e-03 + + -1.0892049968242645e-01 1.4403919875621796e-01 + <_> + + 0 -1 1511 -7.1258977986872196e-03 + + 1.9850020110607147e-01 -8.3359397947788239e-02 + <_> + + 0 -1 1512 8.0109452828764915e-03 + + 4.8844348639249802e-02 -2.8590029478073120e-01 + <_> + + 0 -1 1513 -2.7231130748987198e-02 + + -6.8558162450790405e-01 2.1877769380807877e-02 + <_> + + 0 -1 1514 -2.0928949117660522e-02 + + -2.0820230245590210e-01 2.6585230603814125e-02 + <_> + + 0 -1 1515 3.9801741950213909e-03 + + 6.7004777491092682e-02 -2.3015810549259186e-01 + <_> + + 0 -1 1516 2.1598068997263908e-03 + + -9.3109019100666046e-02 1.7235539853572845e-01 + <_> + + 0 -1 1517 9.9411439150571823e-03 + + -4.4999819248914719e-02 3.1830498576164246e-01 + <_> + + 0 -1 1518 -1.7938859760761261e-02 + + -2.1515959501266479e-01 7.2462916374206543e-02 + <_> + + 0 -1 1519 -1.5030350368760992e-05 + + 9.1437973082065582e-02 -1.6706299781799316e-01 + <_> + + 0 -1 1520 4.2446260340511799e-03 + + 6.4810760319232941e-02 -1.0556270182132721e-01 + <_> + + 0 -1 1521 7.4575991675374098e-06 + + -2.6309689879417419e-01 5.6588400155305862e-02 + <_> + + 0 -1 1522 -1.0457210242748260e-02 + + 1.6078880429267883e-01 -7.2708033025264740e-02 + <_> + + 0 -1 1523 -1.2225599493831396e-03 + + 1.1558330059051514e-01 -1.2233489751815796e-01 + <_> + + 0 -1 1524 1.6061630100011826e-02 + + 2.8201790526509285e-02 -5.0996178388595581e-01 + <_> + + 0 -1 1525 -1.6162030398845673e-02 + + -3.3857521414756775e-01 3.5924781113862991e-02 + <_> + + 0 -1 1526 7.2181350551545620e-03 + + -7.2706200182437897e-02 1.0624659806489944e-01 + <_> + + 0 -1 1527 -1.0416660457849503e-02 + + 1.6205810010433197e-01 -9.4567760825157166e-02 + <_> + + 0 -1 1528 1.3946600258350372e-02 + + 5.4169639945030212e-02 -3.2068040966987610e-01 + <_> + + 0 -1 1529 1.2734119780361652e-02 + + -8.6066111922264099e-02 1.9648639857769012e-01 + <_> + + 0 -1 1530 -2.7858370915055275e-02 + + -2.8409239649772644e-01 2.6706550270318985e-02 + <_> + + 0 -1 1531 -9.8931521177291870e-02 + + 5.8457607030868530e-01 -2.1955510601401329e-02 + <_> + + 0 -1 1532 2.3434299509972334e-03 + + 9.6475467085838318e-02 -1.2095340341329575e-01 + <_> + + 0 -1 1533 -2.3025700356811285e-03 + + 7.3297969996929169e-02 -2.2309069335460663e-01 + <_> + + 0 -1 1534 3.0791079625487328e-02 + + 1.1463879607617855e-02 -2.4034079909324646e-01 + <_> + + 0 -1 1535 -8.4339501336216927e-03 + + 2.9611539840698242e-01 -4.2663689702749252e-02 + <_> + + 0 -1 1536 -3.4617669880390167e-03 + + -2.1257869899272919e-01 4.2709458619356155e-02 + <_> + + 0 -1 1537 -3.3371929079294205e-02 + + 3.5299271345138550e-01 -3.5570569336414337e-02 + <_> + + 0 -1 1538 -3.7238128483295441e-02 + + -5.9177130460739136e-01 2.6775840669870377e-02 + <_> + + 0 -1 1539 -2.0860069990158081e-01 + + -5.7595241069793701e-01 1.9763559103012085e-02 + <_> + + 0 -1 1540 -6.8279817700386047e-02 + + 3.4582608938217163e-01 -3.7861179560422897e-02 + <_> + + 0 -1 1541 1.1600320227444172e-02 + + 5.7685580104589462e-02 -2.6008209586143494e-01 + <_> + + 0 -1 1542 -6.7218959331512451e-02 + + -4.5048278570175171e-01 1.2495189905166626e-02 + <_> + + 0 -1 1543 -5.1632397808134556e-03 + + 1.6146700084209442e-01 -7.6975770294666290e-02 + <_> + + 0 -1 1544 4.0113311260938644e-02 + + 1.3131230138242245e-02 -4.5731449127197266e-01 + <_> + + 0 -1 1545 3.7837740033864975e-02 + + 2.3001920431852341e-02 -5.3636288642883301e-01 + <_> + + 0 -1 1546 2.6023429818451405e-03 + + -6.1007440090179443e-02 1.7084220051765442e-01 + <_> + + 0 -1 1547 -7.1841642260551453e-02 + + -5.8330380916595459e-01 2.0075250416994095e-02 + <_> + + 0 -1 1548 -8.2885712618008256e-04 + + 5.3465340286493301e-02 -1.9092260301113129e-01 + <_> + + 0 -1 1549 -8.1979477545246482e-04 + + -2.3775930702686310e-01 4.5844908803701401e-02 + <_> + + 0 -1 1550 1.0474859736859798e-02 + + -4.0103420615196228e-02 2.4948400259017944e-01 + <_> + + 0 -1 1551 -6.3726361840963364e-03 + + -1.7087849974632263e-01 7.2894603013992310e-02 + <_> + + 0 -1 1552 -3.6113489419221878e-02 + + -3.6879929900169373e-01 1.8331730738282204e-02 + <_> + + 0 -1 1553 5.4730800911784172e-04 + + 7.2073057293891907e-02 -1.8893779814243317e-01 + <_> + + 0 -1 1554 1.7547659575939178e-02 + + -9.4452597200870514e-02 1.3311000168323517e-01 + <_> + + 0 -1 1555 6.3078789971768856e-03 + + 7.6223470270633698e-02 -1.6668230295181274e-01 + <_> + + 0 -1 1556 2.5120719801634550e-03 + + 5.0375527143478394e-01 -2.2624349221587181e-02 + <_> + + 0 -1 1557 4.5274170115590096e-03 + + -1.3446590304374695e-01 9.9167577922344208e-02 + <_> + + 0 -1 1558 -1.4772829308640212e-04 + + 3.9675179868936539e-02 -6.0015488415956497e-02 + <_> + + 0 -1 1559 1.4728739857673645e-02 + + 3.9208918809890747e-02 -3.0560019612312317e-01 + <_> + + 0 -1 1560 -5.6161261163651943e-03 + + -1.0845050215721130e-01 4.7754660248756409e-02 + <_> + + 0 -1 1561 -9.8265614360570908e-03 + + 1.6729339957237244e-01 -7.6756693422794342e-02 + <_> + + 0 -1 1562 1.7972329631447792e-02 + + -5.9147968888282776e-02 1.2773279845714569e-01 + <_> + + 0 -1 1563 1.1233139783143997e-02 + + -9.2626020312309265e-02 1.5735739469528198e-01 + <_> + + 0 -1 1564 1.3678249670192599e-03 + + -5.6156760454177856e-01 2.1800750866532326e-02 + <_> + + 0 -1 1565 -4.1535100899636745e-03 + + -2.6951169967651367e-01 4.1213478893041611e-02 + <_> + + 0 -1 1566 -6.7194692790508270e-02 + + 5.6008362770080566e-01 -2.0973740145564079e-02 + <_> + + 0 -1 1567 -8.0572411417961121e-02 + + -7.5846642255783081e-01 1.6614310443401337e-02 + <_> + + 0 -1 1568 -9.7504993900656700e-03 + + 2.2781279683113098e-01 -4.0246330201625824e-02 + <_> + + 0 -1 1569 5.6034037843346596e-03 + + -7.5519852340221405e-02 1.6372010111808777e-01 + <_> + + 0 -1 1570 -1.0232060216367245e-02 + + -3.5803198814392090e-01 4.6331088989973068e-02 + <_> + + 0 -1 1571 2.8616760391741991e-03 + + 6.7746236920356750e-02 -1.6429120302200317e-01 + <_> + + 0 -1 1572 7.7214869670569897e-03 + + 3.4494820982217789e-02 -1.7762580513954163e-01 + <_> + + 0 -1 1573 -7.0147789083421230e-03 + + 1.7282240092754364e-01 -6.5176323056221008e-02 + <_> + + 0 -1 1574 5.0470869988203049e-02 + + -2.7071960270404816e-02 3.5509440302848816e-01 + <_> + + 0 -1 1575 -5.7124681770801544e-03 + + -1.5901079773902893e-01 7.9559110105037689e-02 + <_> + + 0 -1 1576 8.7470682337880135e-03 + + 3.7789858877658844e-02 -1.9156649708747864e-01 + <_> + + 0 -1 1577 2.0058929920196533e-02 + + 2.7415299788117409e-02 -3.8070109486579895e-01 + <_> + + 0 -1 1578 -1.8094859551638365e-03 + + 1.0538379848003387e-01 -1.4996549487113953e-01 + <_> + + 0 -1 1579 -7.3339277878403664e-03 + + 2.9203268885612488e-01 -6.1218190938234329e-02 + <_> + + 0 -1 1580 4.4179419055581093e-03 + + 1.8868620693683624e-01 -5.8132741600275040e-02 + <_> + + 0 -1 1581 -1.3543309643864632e-02 + + -4.9409559369087219e-01 2.2855930030345917e-02 + <_> + + 0 -1 1582 3.6197271198034286e-02 + + -2.6089120656251907e-02 3.0890250205993652e-01 + <_> + + 0 -1 1583 -1.1831840127706528e-01 + + -5.9094661474227905e-01 1.8215280026197433e-02 + <_> + + 0 -1 1584 7.5656071305274963e-02 + + -3.5965580493211746e-02 3.0386120080947876e-01 + <_> + + 0 -1 1585 -1.3134519569575787e-02 + + -2.6306131482124329e-01 4.2262919247150421e-02 + <_> + + 0 -1 1586 1.8981160596013069e-02 + + -2.6483630761504173e-02 1.9371989369392395e-01 + <_> + + 0 -1 1587 -4.6003229916095734e-02 + + 4.0513500571250916e-01 -2.4454200640320778e-02 + <_> + + 0 -1 1588 -1.3232730329036713e-02 + + -2.9721269011497498e-01 4.7959219664335251e-02 + <_> + + 0 -1 1589 1.9586850702762604e-01 + + 1.0540399700403214e-02 -8.6647927761077881e-01 + <_> + + 0 -1 1590 9.6459556370973587e-03 + + -7.1334943175315857e-02 1.1469510197639465e-01 + <_> + + 0 -1 1591 -3.9044579025357962e-03 + + 1.0740319639444351e-01 -9.8514996469020844e-02 + <_> + + 0 -1 1592 1.6896370798349380e-02 + + -7.6805070042610168e-02 1.9533200562000275e-01 + <_> + + 0 -1 1593 -5.5025662295520306e-03 + + 5.0643190741539001e-02 -2.0898430049419403e-01 + <_> + + 0 -1 1594 -1.9621569663286209e-02 + + -2.9651358723640442e-01 3.2955050468444824e-02 + <_> + + 0 -1 1595 7.7158107887953520e-04 + + 4.6017099171876907e-02 -1.9982999563217163e-01 + <_> + + 0 -1 1596 -1.1102840304374695e-01 + + 5.7578712701797485e-01 -1.7741529271006584e-02 + <_> + + 0 -1 1597 1.4945500297471881e-03 + + 4.7335729002952576e-02 -2.0898909866809845e-01 + <_> + + 0 -1 1598 5.0667919218540192e-02 + + -1.8657619133591652e-02 3.4070459008216858e-01 + <_> + + 0 -1 1599 1.6073169186711311e-02 + + -3.6449488252401352e-02 2.6568078994750977e-01 + <_> + + 0 -1 1600 -2.6536740362644196e-02 + + -3.6141690611839294e-01 2.9734270647168159e-02 + <_> + + 0 -1 1601 -5.2550169639289379e-03 + + -1.3104499876499176e-01 8.2153528928756714e-02 + <_> + + 0 -1 1602 -1.6678560525178909e-02 + + 3.1324890255928040e-01 -4.5052528381347656e-02 + <_> + + 0 -1 1603 3.4808400087058544e-03 + + 8.2945778965950012e-02 -1.5753500163555145e-01 + <_> + + 0 -1 1604 -8.0889053642749786e-02 + + -6.4314198493957520e-01 7.1740332059562206e-03 + <_> + + 0 -1 1605 -5.4260632023215294e-03 + + 1.3533130288124084e-01 -1.0547909885644913e-01 + <_> + + 0 -1 1606 1.6630839556455612e-02 + + 4.1602101176977158e-02 -2.6668208837509155e-01 + <_> + + 0 -1 1607 1.7991060158237815e-03 + + 5.9531088918447495e-02 -1.8355309963226318e-01 + <_> + + 0 -1 1608 2.7219969779253006e-02 + + -2.6586830615997314e-02 2.2722280025482178e-01 + <_> + + 0 -1 1609 -9.6450755372643471e-03 + + -2.1428169310092926e-01 4.9515731632709503e-02 + <_> + + 0 -1 1610 8.3123803138732910e-02 + + -4.2176891118288040e-02 3.0793419480323792e-01 + <_> + + 0 -1 1611 1.4406450092792511e-02 + + -2.9500020667910576e-02 3.2144379615783691e-01 + <_> + + 0 -1 1612 4.7938730567693710e-03 + + 5.1244091242551804e-02 -1.0931850224733353e-01 + <_> + + 0 -1 1613 -2.8978011105209589e-03 + + -1.4344370365142822e-01 6.6597223281860352e-02 + <_> + + 0 -1 1614 -4.5887690037488937e-02 + + 1.8003830313682556e-01 -1.5642790123820305e-02 + <_> + + 0 -1 1615 -5.4717700928449631e-02 + + -3.5110801458358765e-01 3.0438890680670738e-02 + <_> + + 0 -1 1616 -1.9787369295954704e-02 + + 9.3385331332683563e-02 -4.9382571130990982e-02 + <_> + + 0 -1 1617 2.5110379792749882e-03 + + -6.6672600805759430e-02 1.4406199753284454e-01 + <_> + + 0 -1 1618 5.3660150617361069e-02 + + 1.4468840323388577e-02 -6.7007470130920410e-01 + <_> + + 0 -1 1619 -8.1825470551848412e-03 + + 1.1510120332241058e-01 -8.0932617187500000e-02 + <_> + + 0 -1 1620 -3.5225939936935902e-03 + + -1.4181140065193176e-01 6.1330620199441910e-02 + <_> + + 0 -1 1621 2.8271550312638283e-02 + + -2.8353890404105186e-02 3.7045130133628845e-01 + <_> + + 0 -1 1622 -6.4923018217086792e-02 + + -4.6481159329414368e-01 2.2807259112596512e-02 + <_> + + 0 -1 1623 -3.5065850615501404e-01 + + -8.2529050111770630e-01 1.1031460016965866e-02 + <_> + + 0 -1 1624 5.1821782253682613e-03 + + 3.6583270877599716e-02 -2.4567179381847382e-01 + <_> + + 0 -1 1625 9.2609220882877707e-04 + + -6.1898738145828247e-02 1.9307570159435272e-01 + <_> + + 0 -1 1626 2.5952830910682678e-03 + + 4.3015718460083008e-02 -1.9770270586013794e-01 + <_> + + 0 -1 1627 3.4880579914897680e-03 + + -6.8296536803245544e-02 1.5725280344486237e-01 + <_> + + 0 -1 1628 2.4002529680728912e-03 + + -6.8618178367614746e-02 6.8551987409591675e-02 + <_> + + 0 -1 1629 1.2020230060443282e-03 + + -1.2073139846324921e-01 9.5026522874832153e-02 + <_> + + 0 -1 1630 -2.0470360293984413e-02 + + -1.2891639769077301e-01 7.9386599361896515e-02 + <_> + + 0 -1 1631 -5.9516180306673050e-02 + + 2.4869689345359802e-01 -4.9729160964488983e-02 + <_> + + 0 -1 1632 -1.0568950325250626e-02 + + -1.8583840131759644e-01 2.0700320601463318e-02 + <_> + + 0 -1 1633 -1.4192920178174973e-02 + + -3.8137429952621460e-01 2.9879279434680939e-02 + <_> + + 0 -1 1634 -2.4968578945845366e-03 + + 9.1516681015491486e-02 -5.0178311765193939e-02 + <_> + + 0 -1 1635 1.7714010027702898e-04 + + -1.1470019817352295e-01 9.9245697259902954e-02 + <_> + + 0 -1 1636 7.8318670392036438e-02 + + 3.6057420074939728e-03 -9.9996072053909302e-01 + <_> + + 0 -1 1637 1.5502399764955044e-03 + + -1.2888610363006592e-01 7.9822011291980743e-02 + <_> + + 0 -1 1638 -6.6678877919912338e-03 + + -8.8244557380676270e-02 2.8102599084377289e-02 + <_> + + 0 -1 1639 -4.0497239679098129e-03 + + -1.4427180588245392e-01 8.7126396596431732e-02 + <_> + + 0 -1 1640 -3.5481531172990799e-02 + + -4.4681170582771301e-01 1.4808270148932934e-02 + <_> + + 0 -1 1641 -1.2597720138728619e-02 + + 8.9324191212654114e-02 -1.2518140673637390e-01 + <_> + + 0 -1 1642 7.4662449769675732e-03 + + 7.4888199567794800e-02 -1.3587780296802521e-01 + <_> + + 0 -1 1643 -6.7536987364292145e-02 + + 2.3416820168495178e-01 -4.0952268987894058e-02 + <_> + + 0 -1 1644 8.2704171538352966e-02 + + 7.6422439888119698e-03 -8.5177552700042725e-01 + <_> + + 0 -1 1645 -7.1595138870179653e-03 + + -1.8738010525703430e-01 5.5288419127464294e-02 + <_> + + 0 -1 1646 -1.0481069795787334e-02 + + 1.8271109461784363e-01 -5.9641968458890915e-02 + <_> + + 0 -1 1647 4.5238467864692211e-03 + + -8.3817601203918457e-02 1.4822180569171906e-01 + <_> + + 0 -1 1648 -2.6731120306067169e-04 + + -2.0896770060062408e-01 4.5835729688405991e-02 + <_> + + 0 -1 1649 3.3838581293821335e-02 + + 4.2582869529724121e-02 -2.1883819997310638e-01 + <_> + + 0 -1 1650 2.2287720348685980e-03 + + -1.3284230232238770e-01 8.1795319914817810e-02 + <_> + + 0 -1 1651 -5.4200361482799053e-03 + + -1.3896510004997253e-01 7.1154713630676270e-02 + <_> + + 0 -1 1652 -4.9642968922853470e-02 + + 4.8901641368865967e-01 -1.1556959711015224e-02 + <_> + + 0 -1 1653 3.3323399256914854e-03 + + 5.1426161080598831e-02 -1.8269440531730652e-01 + <_> + + 0 -1 1654 2.4343939498066902e-02 + + -3.1839560717344284e-02 1.2758859992027283e-01 + <_> + + 0 -1 1655 -2.3774489760398865e-02 + + 3.2773551344871521e-01 -2.7216760441660881e-02 + <_> + + 0 -1 1656 3.6809889134019613e-03 + + 5.2922040224075317e-02 -1.2880720198154449e-01 + <_> + + 0 -1 1657 -3.2609070185571909e-03 + + -1.4948120713233948e-01 6.5733537077903748e-02 + <_> + + 0 -1 1658 1.0793889872729778e-02 + + -3.2969951629638672e-02 3.2955420017242432e-01 + <_> + + 0 -1 1659 5.4287910461425781e-04 + + -1.0678680241107941e-01 9.8564229905605316e-02 + <_> + + 0 -1 1660 1.1902759782969952e-02 + + 3.5682920366525650e-02 -3.1317448616027832e-01 + <_> + + 0 -1 1661 2.4277849588543177e-03 + + -6.2080658972263336e-02 1.7598509788513184e-01 + <_> + + 0 -1 1662 -4.4930889271199703e-03 + + 1.1790850013494492e-01 -1.0593199729919434e-01 + <_> + 143 + -1.7262409925460815e+00 + + <_> + + 0 -1 1663 -2.0656470209360123e-02 + + 2.5365149974822998e-01 -3.1044611334800720e-01 + <_> + + 0 -1 1664 -3.6518350243568420e-02 + + 2.4484130740165710e-01 -2.3221190273761749e-01 + <_> + + 0 -1 1665 4.9312350153923035e-01 + + -1.6275240480899811e-01 2.8116190433502197e-01 + <_> + + 0 -1 1666 2.0970099285477772e-05 + + -3.0840009450912476e-01 1.7317549884319305e-01 + <_> + + 0 -1 1667 1.3082929886877537e-02 + + -2.5983220338821411e-01 1.5675869584083557e-01 + <_> + + 0 -1 1668 -4.3061940232291818e-04 + + 7.8543603420257568e-02 -3.9016070961952209e-01 + <_> + + 0 -1 1669 -1.6367400065064430e-02 + + -4.3000039458274841e-01 7.4141636490821838e-02 + <_> + + 0 -1 1670 3.6269389092922211e-02 + + -1.7073200643062592e-01 1.8045969307422638e-01 + <_> + + 0 -1 1671 1.2340269982814789e-02 + + 8.8775381445884705e-02 -3.4402659535408020e-01 + <_> + + 0 -1 1672 -7.3516286909580231e-02 + + -4.1623479127883911e-01 -2.9528199229389429e-03 + <_> + + 0 -1 1673 4.6191830188035965e-04 + + 6.5629899501800537e-02 -4.1018250584602356e-01 + <_> + + 0 -1 1674 -1.4744039624929428e-02 + + 2.2775030136108398e-01 -7.9184867441654205e-02 + <_> + + 0 -1 1675 4.2559150606393814e-03 + + -2.4004960060119629e-01 1.1321090161800385e-01 + <_> + + 0 -1 1676 -3.6180280148983002e-03 + + -2.7612069249153137e-01 1.0118050128221512e-01 + <_> + + 0 -1 1677 4.6012919396162033e-02 + + 4.5763589441776276e-02 -5.4713648557662964e-01 + <_> + + 0 -1 1678 -1.6181809827685356e-02 + + 1.9489669799804688e-01 -7.3955342173576355e-02 + <_> + + 0 -1 1679 -2.3682719984208234e-05 + + 1.1729680001735687e-01 -1.9396829605102539e-01 + <_> + + 0 -1 1680 -2.1599140018224716e-03 + + -4.5654550194740295e-01 4.2699530720710754e-02 + <_> + + 0 -1 1681 -7.9827345907688141e-03 + + -5.4107201099395752e-01 4.0036130696535110e-02 + <_> + + 0 -1 1682 -8.1530469469726086e-04 + + -2.0640519261360168e-01 6.6795073449611664e-02 + <_> + + 0 -1 1683 -4.7501060180366039e-03 + + -3.6572128534317017e-01 7.5665749609470367e-02 + <_> + + 0 -1 1684 -3.4870140254497528e-02 + + -8.0093812942504883e-01 2.2356539964675903e-02 + <_> + + 0 -1 1685 -1.9949559122323990e-02 + + -3.9110630750656128e-01 4.6844650059938431e-02 + <_> + + 0 -1 1686 -5.9008211828768253e-03 + + 9.0756498277187347e-02 -1.7600280046463013e-01 + <_> + + 0 -1 1687 -1.4019970549270511e-03 + + -2.9260930418968201e-01 6.4894109964370728e-02 + <_> + + 0 -1 1688 -2.2886939346790314e-02 + + -4.8391869664192200e-01 5.0514958798885345e-02 + <_> + + 0 -1 1689 -1.0039290413260460e-02 + + 2.6921668648719788e-01 -7.5274370610713959e-02 + <_> + + 0 -1 1690 1.6729189082980156e-02 + + -7.3217533528804779e-02 2.2045159339904785e-01 + <_> + + 0 -1 1691 -2.0423909649252892e-02 + + -4.5161980390548706e-01 4.5858111232519150e-02 + <_> + + 0 -1 1692 -3.5104680806398392e-02 + + -5.5169981718063354e-01 2.3118300363421440e-02 + <_> + + 0 -1 1693 1.0697999969124794e-02 + + 3.3516589552164078e-02 -5.2482652664184570e-01 + <_> + + 0 -1 1694 -3.8978241384029388e-02 + + -6.2331187725067139e-01 2.6838419958949089e-02 + <_> + + 0 -1 1695 4.8226700164377689e-03 + + -1.1215549707412720e-01 1.5613789856433868e-01 + <_> + + 0 -1 1696 3.6878231167793274e-01 + + 1.9857980310916901e-02 -6.1260747909545898e-01 + <_> + + 0 -1 1697 -7.7059920877218246e-03 + + -3.7371110916137695e-01 4.3724238872528076e-02 + <_> + + 0 -1 1698 -6.6843323409557343e-02 + + -5.0772088766098022e-01 2.4401089176535606e-02 + <_> + + 0 -1 1699 3.7273049354553223e-02 + + 3.6522880196571350e-02 -4.3735611438751221e-01 + <_> + + 0 -1 1700 -3.3105209469795227e-02 + + -3.4438988566398621e-01 3.2440148293972015e-02 + <_> + + 0 -1 1701 5.3402669727802277e-03 + + 9.2385761439800262e-02 -1.7823779582977295e-01 + <_> + + 0 -1 1702 2.1542439237236977e-02 + + -1.9848670065402985e-01 5.1953200250864029e-02 + <_> + + 0 -1 1703 3.3289310336112976e-01 + + -6.0750268399715424e-02 2.8925099968910217e-01 + <_> + + 0 -1 1704 -6.6301261540502310e-04 + + 3.3636718988418579e-02 -2.8510418534278870e-01 + <_> + + 0 -1 1705 4.6686761081218719e-02 + + -4.9883669614791870e-01 3.3776078373193741e-02 + <_> + + 0 -1 1706 -2.2452229168266058e-03 + + -1.9685390591621399e-01 9.5161177217960358e-02 + <_> + + 0 -1 1707 -1.1499020271003246e-02 + + -3.2423889636993408e-01 5.2468359470367432e-02 + <_> + + 0 -1 1708 1.3134529814124107e-02 + + -6.7538492381572723e-02 2.7605938911437988e-01 + <_> + + 0 -1 1709 -1.5978980809450150e-02 + + 3.1496050953865051e-01 -7.6657392084598541e-02 + <_> + + 0 -1 1710 2.4199750274419785e-02 + + 5.5836521089076996e-02 -3.6609899997711182e-01 + <_> + + 0 -1 1711 4.0229028090834618e-03 + + -1.3053479790687561e-01 1.3470110297203064e-01 + <_> + + 0 -1 1712 -1.4172590337693691e-02 + + -8.8616542518138885e-02 5.5053278803825378e-02 + <_> + + 0 -1 1713 1.8967399373650551e-02 + + 5.1348548382520676e-02 -3.1439921259880066e-01 + <_> + + 0 -1 1714 2.6502970606088638e-02 + + -1.1065970361232758e-01 8.8080927729606628e-02 + <_> + + 0 -1 1715 -3.9654489606618881e-02 + + -5.0742971897125244e-01 3.2999441027641296e-02 + <_> + + 0 -1 1716 -8.9988503605127335e-03 + + 1.2830139696598053e-01 -7.3064133524894714e-02 + <_> + + 0 -1 1717 7.4613288044929504e-02 + + 3.1729809939861298e-02 -5.3899657726287842e-01 + <_> + + 0 -1 1718 3.3414870500564575e-02 + + -6.1130590736865997e-02 2.4669900536537170e-01 + <_> + + 0 -1 1719 9.6071150619536638e-04 + + 1.2528179585933685e-01 -1.4304199814796448e-01 + <_> + + 0 -1 1720 -8.6224973201751709e-03 + + -2.2081799805164337e-01 4.7569438815116882e-02 + <_> + + 0 -1 1721 3.9893008768558502e-02 + + -5.1774360239505768e-02 3.1735679507255554e-01 + <_> + + 0 -1 1722 8.5388116538524628e-02 + + -3.5584390163421631e-02 4.1974198818206787e-01 + <_> + + 0 -1 1723 6.3205747865140438e-03 + + 6.9412536919116974e-02 -2.9979988932609558e-01 + <_> + + 0 -1 1724 -5.8932311832904816e-02 + + -4.6194219589233398e-01 2.2290540859103203e-02 + <_> + + 0 -1 1725 -1.0054419748485088e-02 + + 2.3649129271507263e-01 -6.6811926662921906e-02 + <_> + + 0 -1 1726 -2.5194720365107059e-05 + + 7.8815452754497528e-02 -1.1585489660501480e-01 + <_> + + 0 -1 1727 -5.9346649795770645e-02 + + -5.8799749612808228e-01 3.0486419796943665e-02 + <_> + + 0 -1 1728 2.0421659573912621e-02 + + 3.9184041321277618e-02 -2.6986798644065857e-01 + <_> + + 0 -1 1729 -4.0381640195846558e-02 + + -6.1601102352142334e-01 2.5353100150823593e-02 + <_> + + 0 -1 1730 1.7877650260925293e-01 + + -5.7135760784149170e-02 1.7361579835414886e-01 + <_> + + 0 -1 1731 -2.2120740264654160e-02 + + -3.7697589397430420e-01 4.2690049856901169e-02 + <_> + + 0 -1 1732 1.1585020273923874e-01 + + 9.8102567717432976e-03 -6.1380887031555176e-01 + <_> + + 0 -1 1733 9.7944810986518860e-02 + + 3.6329559981822968e-02 -4.5240780711174011e-01 + <_> + + 0 -1 1734 -2.9123030602931976e-02 + + -6.5607357025146484e-01 8.4500880911946297e-03 + <_> + + 0 -1 1735 -1.3053599745035172e-02 + + -3.4685650467872620e-01 4.6511679887771606e-02 + <_> + + 0 -1 1736 1.3451489619910717e-02 + + 3.4420430660247803e-02 -1.0168869793415070e-01 + <_> + + 0 -1 1737 -2.3957140743732452e-02 + + -8.4189480543136597e-01 1.9317319616675377e-02 + <_> + + 0 -1 1738 -1.3450190424919128e-01 + + 3.9132338762283325e-01 -2.1901259198784828e-02 + <_> + + 0 -1 1739 -1.0342430323362350e-01 + + 6.0790222883224487e-01 -2.5869879871606827e-02 + <_> + + 0 -1 1740 -4.1464429348707199e-02 + + -3.9631319046020508e-01 3.7771981209516525e-02 + <_> + + 0 -1 1741 -3.4945748746395111e-02 + + -4.5746931433677673e-01 3.2913569360971451e-02 + <_> + + 0 -1 1742 1.4289909973740578e-02 + + -5.0757531076669693e-02 3.1772908568382263e-01 + <_> + + 0 -1 1743 -5.4311589337885380e-03 + + 2.4708689749240875e-01 -7.8526623547077179e-02 + <_> + + 0 -1 1744 2.6972589548677206e-03 + + -3.4061861038208008e-01 5.0948519259691238e-02 + <_> + + 0 -1 1745 -4.3831961229443550e-03 + + 8.0095797777175903e-02 -2.0902189612388611e-01 + <_> + + 0 -1 1746 -1.5958329662680626e-02 + + -2.4625590443611145e-01 5.8348231017589569e-02 + <_> + + 0 -1 1747 4.5252371579408646e-02 + + 4.1630141437053680e-02 -3.5550931096076965e-01 + <_> + + 0 -1 1748 -1.8278149887919426e-02 + + 3.0804929137229919e-01 -4.7184839844703674e-02 + <_> + + 0 -1 1749 2.5277629494667053e-02 + + 2.9698649421334267e-02 -5.3776097297668457e-01 + <_> + + 0 -1 1750 7.2078350931406021e-03 + + -1.2820510566234589e-01 1.1753190308809280e-01 + <_> + + 0 -1 1751 -1.4014700055122375e-01 + + -4.5020869374275208e-01 3.2753791660070419e-02 + <_> + + 0 -1 1752 -4.5832369476556778e-02 + + -4.2000839114189148e-01 2.4114929139614105e-02 + <_> + + 0 -1 1753 -4.3976899236440659e-02 + + -4.5973241329193115e-01 3.3604741096496582e-02 + <_> + + 0 -1 1754 -1.0124820284545422e-02 + + 1.6260810196399689e-01 -6.6449157893657684e-02 + <_> + + 0 -1 1755 -1.3071260182186961e-03 + + 1.1608310043811798e-01 -1.3168659806251526e-01 + <_> + + 0 -1 1756 4.5284889638423920e-02 + + 3.5751760005950928e-02 -4.4795739650726318e-01 + <_> + + 0 -1 1757 -2.0851079374551773e-02 + + 2.4665319919586182e-01 -6.5854541957378387e-02 + <_> + + 0 -1 1758 2.6742550544440746e-03 + + 5.1683109253644943e-02 -1.3699389994144440e-01 + <_> + + 0 -1 1759 1.3148089637979865e-03 + + 7.7798873186111450e-02 -2.1064509451389313e-01 + <_> + + 0 -1 1760 -1.8174739554524422e-02 + + 1.7355039715766907e-01 -7.2417192161083221e-02 + <_> + + 0 -1 1761 1.4314319938421249e-02 + + 8.1756986677646637e-02 -1.7111450433731079e-01 + <_> + + 0 -1 1762 -1.6486430540680885e-02 + + 2.2809509932994843e-01 -6.5906368196010590e-02 + <_> + + 0 -1 1763 3.0756060034036636e-02 + + 3.8717139512300491e-02 -4.0505141019821167e-01 + <_> + + 0 -1 1764 2.6106089353561401e-02 + + 3.0850199982523918e-02 -2.7759250998497009e-01 + <_> + + 0 -1 1765 8.0401107668876648e-02 + + 2.9792500659823418e-02 -4.4742569327354431e-01 + <_> + + 0 -1 1766 -1.8350789323449135e-02 + + 1.1515419930219650e-01 -2.8744319453835487e-02 + <_> + + 0 -1 1767 3.4827049821615219e-02 + + 2.8738139197230339e-02 -4.8401808738708496e-01 + <_> + + 0 -1 1768 -8.8250182569026947e-02 + + -4.2635539174079895e-01 3.0173489823937416e-02 + <_> + + 0 -1 1769 1.4836989343166351e-01 + + 2.2089749574661255e-02 -5.5364227294921875e-01 + <_> + + 0 -1 1770 -1.8949609249830246e-02 + + -2.3020160198211670e-01 3.9267301559448242e-02 + <_> + + 0 -1 1771 -5.6775949895381927e-02 + + 3.5013529658317566e-01 -4.0862828493118286e-02 + <_> + + 0 -1 1772 6.2286540865898132e-02 + + 2.2344540804624557e-02 -7.1082341670989990e-01 + <_> + + 0 -1 1773 -3.8629550486803055e-02 + + -3.2933491468429565e-01 3.8508068770170212e-02 + <_> + + 0 -1 1774 2.8154330328106880e-02 + + -7.3690913617610931e-02 1.8824370205402374e-01 + <_> + + 0 -1 1775 -1.0570179671049118e-02 + + -2.7806881070137024e-01 4.7679189592599869e-02 + <_> + + 0 -1 1776 5.6604571640491486e-02 + + 2.4767610430717468e-01 -5.6830938905477524e-02 + <_> + + 0 -1 1777 -2.8522670269012451e-01 + + 5.2345401048660278e-01 -2.3652829229831696e-02 + <_> + + 0 -1 1778 3.4807138144969940e-02 + + 2.4819910526275635e-02 -4.3205270171165466e-01 + <_> + + 0 -1 1779 -2.3218799382448196e-02 + + 2.9929161071777344e-01 -4.4712670147418976e-02 + <_> + + 0 -1 1780 -6.3094392418861389e-02 + + 3.3279260993003845e-01 -1.6075499355792999e-02 + <_> + + 0 -1 1781 3.0182430148124695e-01 + + -7.5196906924247742e-02 1.9139809906482697e-01 + <_> + + 0 -1 1782 2.3077869787812233e-02 + + 3.6844979971647263e-02 -2.8761258721351624e-01 + <_> + + 0 -1 1783 1.0964149981737137e-01 + + 3.7548121064901352e-02 -4.1763558983802795e-01 + <_> + + 0 -1 1784 2.9672039672732353e-02 + + -7.8409820795059204e-02 1.3064210116863251e-01 + <_> + + 0 -1 1785 6.3356538303196430e-03 + + 6.7014321684837341e-02 -2.0481500029563904e-01 + <_> + + 0 -1 1786 -1.9940949976444244e-02 + + 8.4663636982440948e-02 -4.2069409042596817e-02 + <_> + + 0 -1 1787 -4.7988001257181168e-02 + + -6.1099517345428467e-01 2.2842260077595711e-02 + <_> + + 0 -1 1788 4.8280019313097000e-02 + + 7.4727279134094715e-03 -7.5153297185897827e-01 + <_> + + 0 -1 1789 -2.5825301418080926e-04 + + 3.5517089068889618e-02 -3.2686069607734680e-01 + <_> + + 0 -1 1790 -4.8175308853387833e-02 + + -5.8099460601806641e-01 1.9760759547352791e-02 + <_> + + 0 -1 1791 -2.8606340289115906e-02 + + 3.2096970081329346e-01 -4.0734320878982544e-02 + <_> + + 0 -1 1792 -4.3328531086444855e-02 + + -3.3021429181098938e-01 3.1527239829301834e-02 + <_> + + 0 -1 1793 2.2753410041332245e-02 + + 3.7327829748392105e-02 -3.6291739344596863e-01 + <_> + + 0 -1 1794 1.8975350030814297e-05 + + -1.1503349989652634e-01 4.1816640645265579e-02 + <_> + + 0 -1 1795 1.8077540397644043e-01 + + -5.5751871317625046e-02 2.2424830496311188e-01 + <_> + + 0 -1 1796 -1.2539149820804596e-01 + + -8.8098400831222534e-01 3.8788339588791132e-03 + <_> + + 0 -1 1797 -8.0908974632620811e-03 + + 2.6210701465606689e-01 -5.3706649690866470e-02 + <_> + + 0 -1 1798 9.9102966487407684e-03 + + -1.2978099286556244e-01 8.3635807037353516e-02 + <_> + + 0 -1 1799 2.4792920798063278e-02 + + -1.4584439992904663e-01 9.2305660247802734e-02 + <_> + + 0 -1 1800 4.5074880123138428e-02 + + -7.2375498712062836e-02 2.6057431101799011e-01 + <_> + + 0 -1 1801 -7.9205513000488281e-02 + + -6.2073522806167603e-01 2.1323349326848984e-02 + <_> + + 0 -1 1802 -4.4725250452756882e-02 + + -6.4248198270797729e-01 9.5317112281918526e-03 + <_> + + 0 -1 1803 -3.4065779298543930e-02 + + 3.0759710073471069e-01 -4.2296990752220154e-02 + <_> + + 0 -1 1804 -2.9756739735603333e-02 + + 2.5211650133132935e-01 -3.1183030456304550e-02 + <_> + + 0 -1 1805 -3.2026950269937515e-02 + + -5.5300801992416382e-01 2.8021570295095444e-02 + <_> + 193 + -1.4976780414581299e+00 + + <_> + + 0 -1 1806 2.8652619570493698e-02 + + -2.1822139620780945e-01 2.2675579786300659e-01 + <_> + + 0 -1 1807 4.3320041149854660e-03 + + -2.8597879409790039e-01 1.0589209944009781e-01 + <_> + + 0 -1 1808 5.6604119017720222e-03 + + 8.8295452296733856e-02 -3.8920480012893677e-01 + <_> + + 0 -1 1809 2.4440148845314980e-03 + + -3.5482680797576904e-01 9.9362373352050781e-02 + <_> + + 0 -1 1810 2.2643520496785641e-03 + + -2.8858441114425659e-01 8.8367857038974762e-02 + <_> + + 0 -1 1811 5.3952648304402828e-03 + + 8.5537381470203400e-02 -3.0366399884223938e-01 + <_> + + 0 -1 1812 -7.2699488373473287e-04 + + 7.4840240180492401e-02 -3.4039780497550964e-01 + <_> + + 0 -1 1813 -9.7503658616915345e-04 + + 1.2008629739284515e-01 -2.5634410977363586e-01 + <_> + + 0 -1 1814 4.0540988557040691e-03 + + 6.7266032099723816e-02 -3.5701939463615417e-01 + <_> + + 0 -1 1815 2.5258921086788177e-03 + + -4.1966471076011658e-01 5.5665798485279083e-02 + <_> + + 0 -1 1816 -1.2021360453218222e-03 + + 1.0004480183124542e-01 -2.1932320296764374e-01 + <_> + + 0 -1 1817 7.7549100387841463e-04 + + -1.3562729954719543e-01 1.1973659694194794e-01 + <_> + + 0 -1 1818 -5.0699848681688309e-02 + + 4.5418289303779602e-01 -3.9030350744724274e-02 + <_> + + 0 -1 1819 1.3364490121603012e-02 + + 1.1166039854288101e-01 -1.7938789725303650e-01 + <_> + + 0 -1 1820 -1.5418980270624161e-02 + + -3.5180059075355530e-01 4.7354999929666519e-02 + <_> + + 0 -1 1821 -4.2981099337339401e-02 + + 3.9232799410820007e-01 -4.5337028801441193e-02 + <_> + + 0 -1 1822 6.2867929227650166e-03 + + 6.4331822097301483e-02 -2.2239510715007782e-01 + <_> + + 0 -1 1823 -3.5951940808445215e-03 + + 9.5404297113418579e-02 -1.5338289737701416e-01 + <_> + + 0 -1 1824 -7.6760917901992798e-02 + + -6.5099817514419556e-01 1.7283650115132332e-02 + <_> + + 0 -1 1825 4.6225200640037656e-04 + + -4.3415609002113342e-01 2.5241859257221222e-02 + <_> + + 0 -1 1826 7.5868278509005904e-04 + + -1.4624330401420593e-01 9.6319071948528290e-02 + <_> + + 0 -1 1827 -5.0252641085535288e-04 + + 1.3584020733833313e-01 -2.3181040585041046e-01 + <_> + + 0 -1 1828 9.7315143793821335e-03 + + -8.5155591368675232e-02 2.0156989991664886e-01 + <_> + + 0 -1 1829 -2.6432229205965996e-02 + + -3.7002518773078918e-01 2.4616630747914314e-02 + <_> + + 0 -1 1830 -4.4683468877337873e-04 + + 1.0048960149288177e-01 -1.8588609993457794e-01 + <_> + + 0 -1 1831 1.9872789271175861e-03 + + 5.3223919123411179e-02 -3.1603801250457764e-01 + <_> + + 0 -1 1832 3.1368629424832761e-04 + + -1.3213190436363220e-01 9.5771767199039459e-02 + <_> + + 0 -1 1833 5.9834700077772141e-03 + + -7.5681813061237335e-02 1.5230950713157654e-01 + <_> + + 0 -1 1834 -5.0965389236807823e-03 + + -1.8477819859981537e-01 7.6022140681743622e-02 + <_> + + 0 -1 1835 -1.9187610596418381e-02 + + 2.1431809663772583e-01 -4.9764219671487808e-02 + <_> + + 0 -1 1836 2.3320479318499565e-02 + + -4.8689320683479309e-02 2.6578998565673828e-01 + <_> + + 0 -1 1837 -6.9449091097339988e-04 + + -1.5433350205421448e-01 8.7410651147365570e-02 + <_> + + 0 -1 1838 4.8893648199737072e-03 + + 5.1342789083719254e-02 -2.6165360212326050e-01 + <_> + + 0 -1 1839 -2.7428869158029556e-02 + + -3.7972038984298706e-01 3.1821161508560181e-02 + <_> + + 0 -1 1840 -1.7734549939632416e-02 + + 1.9976620376110077e-01 -6.2318049371242523e-02 + <_> + + 0 -1 1841 1.5148259699344635e-01 + + 7.4510741978883743e-03 -5.8031332492828369e-01 + <_> + + 0 -1 1842 1.5324390260502696e-03 + + -1.2510550022125244e-01 1.0431899875402451e-01 + <_> + + 0 -1 1843 -1.2310810387134552e-02 + + -2.3539729416370392e-01 5.3646210581064224e-02 + <_> + + 0 -1 1844 -1.1210800148546696e-02 + + 1.0759239643812180e-01 -1.2055230140686035e-01 + <_> + + 0 -1 1845 2.7532500680536032e-03 + + -6.6479906439781189e-02 1.7321150004863739e-01 + <_> + + 0 -1 1846 -8.4678819403052330e-03 + + -3.1850680708885193e-01 4.2280819267034531e-02 + <_> + + 0 -1 1847 -7.3283319361507893e-03 + + -1.6369259357452393e-01 3.1772349029779434e-02 + <_> + + 0 -1 1848 4.7156549990177155e-02 + + -6.1667099595069885e-02 1.7410990595817566e-01 + <_> + + 0 -1 1849 8.2125868648290634e-03 + + 6.7069798707962036e-02 -2.2030070424079895e-01 + <_> + + 0 -1 1850 7.6550841331481934e-03 + + 6.1422310769557953e-02 -1.9357620179653168e-01 + <_> + + 0 -1 1851 -4.5372851192951202e-02 + + -4.7565659880638123e-01 2.2869469597935677e-02 + <_> + + 0 -1 1852 3.7434820551425219e-03 + + -9.0940922498703003e-02 1.3841210305690765e-01 + <_> + + 0 -1 1853 2.3490150924772024e-03 + + 6.3291497528553009e-02 -1.5506389737129211e-01 + <_> + + 0 -1 1854 -2.4149749428033829e-02 + + 3.4588441252708435e-01 -3.1525820493698120e-02 + <_> + + 0 -1 1855 1.4878350310027599e-02 + + 2.4215059354901314e-02 -3.2387629151344299e-01 + <_> + + 0 -1 1856 2.9843160882592201e-02 + + -2.7817690744996071e-02 4.0939471125602722e-01 + <_> + + 0 -1 1857 7.1600051596760750e-03 + + -4.6596240252256393e-02 7.4547067284584045e-02 + <_> + + 0 -1 1858 5.6267209351062775e-02 + + 2.9551850631833076e-02 -4.0098059177398682e-01 + <_> + + 0 -1 1859 -4.5356149785220623e-03 + + 8.1820577383041382e-02 -1.0619299858808517e-01 + <_> + + 0 -1 1860 -1.3697359710931778e-02 + + -1.9359089434146881e-01 7.0917747914791107e-02 + <_> + + 0 -1 1861 -1.5458730049431324e-03 + + -2.1987679600715637e-01 2.8396489098668098e-02 + <_> + + 0 -1 1862 2.9332858975976706e-03 + + -7.6153233647346497e-02 1.6460180282592773e-01 + <_> + + 0 -1 1863 3.4973609726876020e-03 + + -6.8196080625057220e-02 1.6717350482940674e-01 + <_> + + 0 -1 1864 -1.8307069316506386e-02 + + -1.8867099285125732e-01 6.9932736456394196e-02 + <_> + + 0 -1 1865 -1.7092080414295197e-01 + + -5.0067770481109619e-01 7.8164357692003250e-03 + <_> + + 0 -1 1866 4.1620130650699139e-03 + + 5.5900041013956070e-02 -2.2972549498081207e-01 + <_> + + 0 -1 1867 -1.9724309444427490e-02 + + 3.2998558878898621e-01 -3.6602400243282318e-02 + <_> + + 0 -1 1868 5.3331600502133369e-03 + + -1.4134259521961212e-01 8.8277637958526611e-02 + <_> + + 0 -1 1869 -4.2182218283414841e-02 + + -6.6718780994415283e-01 1.5770509839057922e-02 + <_> + + 0 -1 1870 -5.2826730534434319e-03 + + 1.7025630176067352e-01 -6.8491317331790924e-02 + <_> + + 0 -1 1871 -2.3227441124618053e-03 + + 7.2378590703010559e-02 -1.0066709667444229e-01 + <_> + + 0 -1 1872 -1.6239390242844820e-03 + + -2.2501319646835327e-01 5.5898498743772507e-02 + <_> + + 0 -1 1873 5.6083410978317261e-02 + + 1.3646169565618038e-02 -4.9306789040565491e-01 + <_> + + 0 -1 1874 -3.0199930071830750e-02 + + 2.3070830106735229e-01 -5.3645938634872437e-02 + <_> + + 0 -1 1875 1.9157670438289642e-02 + + 3.6830320954322815e-02 -3.9522978663444519e-01 + <_> + + 0 -1 1876 3.5853029694408178e-03 + + -6.1893220990896225e-02 1.7583209276199341e-01 + <_> + + 0 -1 1877 -2.8775330632925034e-02 + + -3.1838440895080566e-01 2.3103740066289902e-02 + <_> + + 0 -1 1878 2.5611401069909334e-03 + + -1.0484419763088226e-01 9.7152568399906158e-02 + <_> + + 0 -1 1879 -3.1554490327835083e-02 + + 2.9366511106491089e-01 -2.4189069867134094e-02 + <_> + + 0 -1 1880 -7.3520588921383023e-04 + + 9.7711041569709778e-02 -1.5248039364814758e-01 + <_> + + 0 -1 1881 -4.7993879765272141e-02 + + -9.4587820768356323e-01 9.0406481176614761e-03 + <_> + + 0 -1 1882 5.2936570718884468e-03 + + 3.3320371061563492e-02 -3.1268939375877380e-01 + <_> + + 0 -1 1883 1.6903249546885490e-02 + + -2.4132709950208664e-02 2.8483408689498901e-01 + <_> + + 0 -1 1884 -7.0723611861467361e-03 + + -1.7524200677871704e-01 7.2713881731033325e-02 + <_> + + 0 -1 1885 6.4191617071628571e-02 + + -2.0969670265913010e-02 3.5402628779411316e-01 + <_> + + 0 -1 1886 2.9694940894842148e-03 + + -7.5086936354637146e-02 1.4321349561214447e-01 + <_> + + 0 -1 1887 -2.0105259492993355e-02 + + 6.0784012079238892e-01 -1.8104499205946922e-02 + <_> + + 0 -1 1888 -1.3169869780540466e-02 + + -5.4678368568420410e-01 2.4742240086197853e-02 + <_> + + 0 -1 1889 -1.4226729981601238e-02 + + -4.6722590923309326e-01 3.1489629298448563e-02 + <_> + + 0 -1 1890 3.7746191024780273e-02 + + -3.8495831191539764e-02 3.5333481431007385e-01 + <_> + + 0 -1 1891 -3.8704369217157364e-03 + + 1.4984290301799774e-01 -5.6549768894910812e-02 + <_> + + 0 -1 1892 -1.1565440334379673e-02 + + -1.5227930247783661e-01 7.6062962412834167e-02 + <_> + + 0 -1 1893 -8.8854476809501648e-02 + + -7.2967928647994995e-01 4.8231678083539009e-03 + <_> + + 0 -1 1894 -2.0447981078177691e-03 + + 1.4148180186748505e-01 -8.3200357854366302e-02 + <_> + + 0 -1 1895 -1.1762860231101513e-02 + + -4.0200519561767578e-01 2.6679439470171928e-02 + <_> + + 0 -1 1896 -1.7539029940962791e-02 + + -3.7316259741783142e-01 3.0171979218721390e-02 + <_> + + 0 -1 1897 3.8314110133796930e-03 + + -9.3409948050975800e-02 7.9503498971462250e-02 + <_> + + 0 -1 1898 -1.4472359791398048e-02 + + 3.4333580732345581e-01 -4.3657060712575912e-02 + <_> + + 0 -1 1899 -2.6516690850257874e-02 + + -4.8230230808258057e-01 1.6811650246381760e-02 + <_> + + 0 -1 1900 -3.3194791525602341e-02 + + -4.3580260872840881e-01 2.2644890472292900e-02 + <_> + + 0 -1 1901 4.4987560249865055e-03 + + -3.2281540334224701e-02 8.9946307241916656e-02 + <_> + + 0 -1 1902 3.6823831032961607e-03 + + -6.8755462765693665e-02 1.4339810609817505e-01 + <_> + + 0 -1 1903 -1.1184140294790268e-01 + + -7.7756762504577637e-01 5.2246451377868652e-03 + <_> + + 0 -1 1904 -7.3255039751529694e-02 + + -5.5630749464035034e-01 1.9127149134874344e-02 + <_> + + 0 -1 1905 2.9855769127607346e-02 + + 2.1178830415010452e-02 -4.0850040316581726e-01 + <_> + + 0 -1 1906 -7.3472231626510620e-02 + + 8.2820487022399902e-01 -1.2452909722924232e-02 + <_> + + 0 -1 1907 -7.2046648710966110e-04 + + 9.9630527198314667e-02 -9.5278859138488770e-02 + <_> + + 0 -1 1908 -3.8003330701030791e-04 + + 1.0231109708547592e-01 -1.0351389646530151e-01 + <_> + + 0 -1 1909 -4.5453108847141266e-02 + + -6.4885061979293823e-01 1.1966000311076641e-02 + <_> + + 0 -1 1910 -5.1456969231367111e-04 + + -1.5083299577236176e-01 6.6544473171234131e-02 + <_> + + 0 -1 1911 2.7949180454015732e-02 + + 1.7186399549245834e-02 -3.7501189112663269e-01 + <_> + + 0 -1 1912 6.3039876520633698e-02 + + -4.3821588158607483e-02 2.4789440631866455e-01 + <_> + + 0 -1 1913 -2.2690258920192719e-03 + + 7.4712008237838745e-02 -1.1131580173969269e-01 + <_> + + 0 -1 1914 -3.8063840474933386e-03 + + -1.5530909597873688e-01 6.5264508128166199e-02 + <_> + + 0 -1 1915 3.7190090864896774e-02 + + -2.9698630794882774e-02 2.3071870207786560e-01 + <_> + + 0 -1 1916 2.1895840764045715e-02 + + 1.5778519213199615e-02 -6.3006269931793213e-01 + <_> + + 0 -1 1917 -3.1993988901376724e-02 + + 2.6250898838043213e-01 -2.4627109989523888e-02 + <_> + + 0 -1 1918 -1.6778679564595222e-02 + + -4.2436981201171875e-01 2.2607849910855293e-02 + <_> + + 0 -1 1919 5.2477661520242691e-02 + + -1.6188420355319977e-02 3.1766140460968018e-01 + <_> + + 0 -1 1920 1.0443729907274246e-01 + + 1.1290200054645538e-02 -8.6021018028259277e-01 + <_> + + 0 -1 1921 -6.5574781037867069e-03 + + 1.2225849926471710e-01 -5.6091431528329849e-02 + <_> + + 0 -1 1922 1.6797389835119247e-02 + + 3.5811539739370346e-02 -3.1163010001182556e-01 + <_> + + 0 -1 1923 5.0427159294486046e-03 + + -5.0439529120922089e-02 6.3930332660675049e-02 + <_> + + 0 -1 1924 -3.4571789205074310e-02 + + -5.6278371810913086e-01 1.6692740842700005e-02 + <_> + + 0 -1 1925 3.7999521009624004e-03 + + -6.8566747009754181e-02 9.6017867326736450e-02 + <_> + + 0 -1 1926 -1.1995599605143070e-02 + + 1.3819910585880280e-01 -7.1510016918182373e-02 + <_> + + 0 -1 1927 1.1098429560661316e-02 + + 5.3506620228290558e-02 -1.0482089966535568e-01 + <_> + + 0 -1 1928 -1.2905290722846985e-01 + + -6.7262178659439087e-01 1.5195850282907486e-02 + <_> + + 0 -1 1929 6.3130040653049946e-03 + + -6.1030130833387375e-02 1.0355649888515472e-01 + <_> + + 0 -1 1930 4.0955888107419014e-03 + + 7.0534646511077881e-02 -1.4484269917011261e-01 + <_> + + 0 -1 1931 -1.0530550032854080e-02 + + 9.8569639027118683e-02 -3.7973210215568542e-02 + <_> + + 0 -1 1932 3.6035990342497826e-03 + + 5.1277790218591690e-02 -1.8671560287475586e-01 + <_> + + 0 -1 1933 1.1999369598925114e-03 + + -6.3231408596038818e-02 1.0446310043334961e-01 + <_> + + 0 -1 1934 -1.9585370318964124e-04 + + 8.6044862866401672e-02 -1.1856850236654282e-01 + <_> + + 0 -1 1935 -1.2213560193777084e-01 + + -8.8419800996780396e-01 6.3145011663436890e-03 + <_> + + 0 -1 1936 -7.7650691382586956e-03 + + 1.3725960254669189e-01 -8.0412857234477997e-02 + <_> + + 0 -1 1937 1.5734319388866425e-01 + + 1.2743320316076279e-02 -6.5401297807693481e-01 + <_> + + 0 -1 1938 -7.6066371984779835e-03 + + -1.3797719776630402e-01 7.6062493026256561e-02 + <_> + + 0 -1 1939 -4.3096300214529037e-03 + + 1.1195199936628342e-01 -3.2390709966421127e-02 + <_> + + 0 -1 1940 -3.2239840365946293e-03 + + 2.1420599520206451e-01 -5.8244630694389343e-02 + <_> + + 0 -1 1941 8.3754826337099075e-03 + + 4.7615598887205124e-02 -2.4216049909591675e-01 + <_> + + 0 -1 1942 3.0904430896043777e-03 + + -9.0418681502342224e-02 9.9244832992553711e-02 + <_> + + 0 -1 1943 9.8243616521358490e-03 + + -4.4643919914960861e-02 1.0423039644956589e-01 + <_> + + 0 -1 1944 -3.2808810938149691e-03 + + -1.9123159348964691e-01 6.3141517341136932e-02 + <_> + + 0 -1 1945 3.6370379384607077e-03 + + 3.6944739520549774e-02 -1.1988619714975357e-01 + <_> + + 0 -1 1946 7.8952945768833160e-03 + + -7.1313530206680298e-02 1.6107399761676788e-01 + <_> + + 0 -1 1947 -3.3853040076792240e-03 + + -1.1704929918050766e-01 2.5579249486327171e-02 + <_> + + 0 -1 1948 -2.6786550879478455e-03 + + -1.7064009606838226e-01 6.0627460479736328e-02 + <_> + + 0 -1 1949 -4.5887688174843788e-03 + + 3.4779790788888931e-02 -6.8817831575870514e-02 + <_> + + 0 -1 1950 -6.1642300337553024e-02 + + 5.1108109951019287e-01 -1.9752239808440208e-02 + <_> + + 0 -1 1951 2.5235159322619438e-02 + + 2.0203070715069771e-02 -3.4359911084175110e-01 + <_> + + 0 -1 1952 -2.1312809549272060e-03 + + 5.4698210209608078e-02 -1.6512370109558105e-01 + <_> + + 0 -1 1953 -8.2598842680454254e-02 + + 3.3804669976234436e-01 -2.8026569634675980e-02 + <_> + + 0 -1 1954 -5.6678601540625095e-03 + + -3.3786231279373169e-01 2.9727049171924591e-02 + <_> + + 0 -1 1955 -9.3317396938800812e-02 + + -6.7238032817840576e-01 2.0025020930916071e-03 + <_> + + 0 -1 1956 9.2052231775596738e-04 + + -1.3974259793758392e-01 6.3175596296787262e-02 + <_> + + 0 -1 1957 5.1411538152024150e-04 + + -8.1585250794887543e-02 5.9324279427528381e-02 + <_> + + 0 -1 1958 -6.7130490206182003e-03 + + -1.6645990312099457e-01 6.1560809612274170e-02 + <_> + + 0 -1 1959 3.1578689813613892e-03 + + -1.0710070282220840e-01 6.6695116460323334e-02 + <_> + + 0 -1 1960 1.2202030047774315e-02 + + -2.4845300242304802e-02 4.2458030581474304e-01 + <_> + + 0 -1 1961 -2.8585169464349747e-02 + + 2.3526839911937714e-01 -2.1121440455317497e-02 + <_> + + 0 -1 1962 2.3390499409288168e-03 + + 6.4441107213497162e-02 -1.4063580334186554e-01 + <_> + + 0 -1 1963 3.5900938510894775e-01 + + 1.2122919782996178e-02 -7.3121142387390137e-01 + <_> + + 0 -1 1964 7.6048658229410648e-03 + + -4.0700931102037430e-02 2.3581039905548096e-01 + <_> + + 0 -1 1965 4.4263368472456932e-03 + + 5.3039629012346268e-02 -1.5912020206451416e-01 + <_> + + 0 -1 1966 8.5811351891607046e-04 + + -8.5265956819057465e-02 1.0489220172166824e-01 + <_> + + 0 -1 1967 -4.2959367856383324e-03 + + -1.2851840257644653e-01 6.2752753496170044e-02 + <_> + + 0 -1 1968 4.4881720095872879e-03 + + 6.4671441912651062e-02 -1.8789650499820709e-01 + <_> + + 0 -1 1969 -4.9869619309902191e-02 + + 2.1496759355068207e-01 -3.5577021539211273e-02 + <_> + + 0 -1 1970 -1.1942230165004730e-01 + + -6.7953938245773315e-01 1.5091570094227791e-02 + <_> + + 0 -1 1971 6.2965508550405502e-04 + + -9.2145420610904694e-02 6.1806648969650269e-02 + <_> + + 0 -1 1972 2.9381969943642616e-03 + + 1.7903240025043488e-01 -4.9355998635292053e-02 + <_> + + 0 -1 1973 -2.2860679775476456e-02 + + 2.0976249873638153e-01 -3.1370889395475388e-02 + <_> + + 0 -1 1974 4.3369621038436890e-02 + + 1.8286330625414848e-02 -5.1288998126983643e-01 + <_> + + 0 -1 1975 1.9932509958744049e-01 + + 6.7204708466306329e-04 -8.9769357442855835e-01 + <_> + + 0 -1 1976 8.0751203000545502e-02 + + -2.0869649946689606e-02 4.3768700957298279e-01 + <_> + + 0 -1 1977 1.5349129680544138e-03 + + 3.6761760711669922e-02 -2.2203999757766724e-01 + <_> + + 0 -1 1978 -3.6580949090421200e-03 + + -1.5471710264682770e-01 6.7229896783828735e-02 + <_> + + 0 -1 1979 2.4743290618062019e-02 + + -5.5474709719419479e-02 1.7429579794406891e-01 + <_> + + 0 -1 1980 -1.6451500356197357e-02 + + 1.8817320466041565e-01 -5.5719010531902313e-02 + <_> + + 0 -1 1981 -8.4505761042237282e-03 + + -3.2943668961524963e-01 2.2743720561265945e-02 + <_> + + 0 -1 1982 2.9369179159402847e-02 + + 1.5479310415685177e-02 -5.9099632501602173e-01 + <_> + + 0 -1 1983 1.0524799674749374e-01 + + 2.1177560556679964e-03 -4.9212720990180969e-01 + <_> + + 0 -1 1984 -2.7816150337457657e-02 + + 3.6421439051628113e-01 -2.5163119658827782e-02 + <_> + + 0 -1 1985 5.3339339792728424e-03 + + -4.8402350395917892e-02 3.9851561188697815e-02 + <_> + + 0 -1 1986 1.1682730168104172e-02 + + 2.4898340925574303e-02 -3.5719999670982361e-01 + <_> + + 0 -1 1987 8.9094992727041245e-03 + + 4.6579260379076004e-02 -1.5088100731372833e-01 + <_> + + 0 -1 1988 7.3203681968152523e-03 + + 7.0891879498958588e-02 -1.3278549909591675e-01 + <_> + + 0 -1 1989 -2.0311130210757256e-02 + + 1.7783379554748535e-01 -3.7538051605224609e-02 + <_> + + 0 -1 1990 1.3689160114154220e-03 + + -1.2096449732780457e-01 7.8017823398113251e-02 + <_> + + 0 -1 1991 7.6994091272354126e-02 + + -8.7762605398893356e-03 3.2993561029434204e-01 + <_> + + 0 -1 1992 8.8949268683791161e-03 + + -5.5553250014781952e-02 1.6372109949588776e-01 + <_> + + 0 -1 1993 -1.8518440425395966e-02 + + -1.4479570090770721e-01 3.0250260606408119e-02 + <_> + + 0 -1 1994 -4.0174879133701324e-02 + + -2.4990509450435638e-01 4.0788788348436356e-02 + <_> + + 0 -1 1995 6.5176486968994141e-02 + + -1.4393090270459652e-02 3.7707069516181946e-01 + <_> + + 0 -1 1996 -1.4845930039882660e-02 + + 2.7375608682632446e-01 -3.3898409456014633e-02 + <_> + + 0 -1 1997 -6.1434650421142578e-01 + + -6.9167751073837280e-01 4.0905540809035301e-03 + <_> + + 0 -1 1998 1.4119890332221985e-01 + + 1.6643870621919632e-02 -5.8944582939147949e-01 + <_> + 157 + -1.5337220430374146e+00 + + <_> + + 0 -1 1999 2.1962670609354973e-02 + + -3.0903491377830505e-01 2.1529789268970490e-01 + <_> + + 0 -1 2000 5.1272530108690262e-02 + + -2.2286629676818848e-01 2.9869711399078369e-01 + <_> + + 0 -1 2001 4.1870009154081345e-02 + + -2.7849119901657104e-01 2.0416070520877838e-01 + <_> + + 0 -1 2002 6.7551871761679649e-03 + + -2.1988549828529358e-01 7.3887020349502563e-02 + <_> + + 0 -1 2003 1.7311690375208855e-02 + + -3.4227430820465088e-01 1.3190160691738129e-01 + <_> + + 0 -1 2004 1.5399109572172165e-02 + + -2.3149499297142029e-01 1.8828059732913971e-01 + <_> + + 0 -1 2005 -1.0792730376124382e-02 + + -3.0813691020011902e-01 1.1191529780626297e-01 + <_> + + 0 -1 2006 8.5879449034109712e-04 + + 7.2238206863403320e-02 -4.4624349474906921e-01 + <_> + + 0 -1 2007 9.2791311908513308e-04 + + -2.9247429966926575e-01 9.3132883310317993e-02 + <_> + + 0 -1 2008 -8.5785696282982826e-03 + + 2.0642790198326111e-01 -1.1203339695930481e-01 + <_> + + 0 -1 2009 -1.8951490521430969e-02 + + -3.9317628741264343e-01 6.7260466516017914e-02 + <_> + + 0 -1 2010 3.4939948469400406e-02 + + 2.8045989573001862e-02 -5.7410031557083130e-01 + <_> + + 0 -1 2011 -4.2870659381151199e-02 + + -5.9856891632080078e-01 3.4607890993356705e-02 + <_> + + 0 -1 2012 5.4958608234301209e-04 + + -4.1193041205406189e-01 6.7322418093681335e-02 + <_> + + 0 -1 2013 2.2494920995086432e-03 + + 1.3482889533042908e-01 -1.9777689874172211e-01 + <_> + + 0 -1 2014 -9.2442613095045090e-03 + + -1.7850719392299652e-01 7.6734513044357300e-02 + <_> + + 0 -1 2015 1.2210760032758117e-03 + + -3.4616300463676453e-01 7.5431950390338898e-02 + <_> + + 0 -1 2016 1.3654090464115143e-02 + + 7.7861636877059937e-02 -4.3963378667831421e-01 + <_> + + 0 -1 2017 1.7332829535007477e-02 + + 4.8317600041627884e-02 -4.1461798548698425e-01 + <_> + + 0 -1 2018 -1.6807779669761658e-02 + + 2.3211599886417389e-01 -8.2342058420181274e-02 + <_> + + 0 -1 2019 3.2203171402215958e-02 + + 3.4065268933773041e-02 -5.9796607494354248e-01 + <_> + + 0 -1 2020 1.6777820885181427e-02 + + -5.9402968734502792e-02 1.6782909631729126e-01 + <_> + + 0 -1 2021 1.3074859976768494e-02 + + -1.0592609643936157e-01 2.3796890676021576e-01 + <_> + + 0 -1 2022 9.4082832336425781e-02 + + 1.0573189705610275e-02 -5.3249269723892212e-01 + <_> + + 0 -1 2023 -7.6036658138036728e-03 + + -2.3031429946422577e-01 1.0104469954967499e-01 + <_> + + 0 -1 2024 8.2368071889504790e-04 + + 4.6598970890045166e-02 -1.0087580233812332e-01 + <_> + + 0 -1 2025 -7.6875449158251286e-03 + + -2.6123398542404175e-01 7.3543973267078400e-02 + <_> + + 0 -1 2026 -3.3729180693626404e-02 + + 2.1907149255275726e-01 -2.1958939731121063e-02 + <_> + + 0 -1 2027 1.3204690068960190e-02 + + -1.4203189313411713e-01 1.5107029676437378e-01 + <_> + + 0 -1 2028 8.5354369366541505e-04 + + -2.4303670227527618e-01 8.3283171057701111e-02 + <_> + + 0 -1 2029 -1.4071330428123474e-02 + + -3.6977100372314453e-01 5.5142328143119812e-02 + <_> + + 0 -1 2030 -1.1115919798612595e-02 + + -4.6575489640235901e-01 2.7285559102892876e-02 + <_> + + 0 -1 2031 1.3858900405466557e-02 + + -9.1722346842288971e-02 1.9947899878025055e-01 + <_> + + 0 -1 2032 8.5548251867294312e-02 + + 2.6189789175987244e-02 -3.6603820323944092e-01 + <_> + + 0 -1 2033 -1.9484929740428925e-02 + + 1.7259980738162994e-01 -8.9445300400257111e-02 + <_> + + 0 -1 2034 2.1631179377436638e-02 + + -5.6183289736509323e-02 6.7707277834415436e-02 + <_> + + 0 -1 2035 1.9267840310931206e-02 + + 5.5609680712223053e-02 -2.9480481147766113e-01 + <_> + + 0 -1 2036 1.1855900287628174e-02 + + 6.8580061197280884e-02 -2.7094689011573792e-01 + <_> + + 0 -1 2037 1.7135039670392871e-03 + + -1.5590840578079224e-01 9.4477489590644836e-02 + <_> + + 0 -1 2038 6.2993362545967102e-02 + + 2.9042679816484451e-02 -2.5151410698890686e-01 + <_> + + 0 -1 2039 1.7328880727291107e-02 + + -4.3562661856412888e-02 3.4017661213874817e-01 + <_> + + 0 -1 2040 2.4053089320659637e-02 + + 3.7450179457664490e-02 -2.8990021347999573e-01 + <_> + + 0 -1 2041 2.1294029429554939e-02 + + 4.8889711499214172e-02 -3.6390760540962219e-01 + <_> + + 0 -1 2042 9.2860676348209381e-02 + + -3.6604419350624084e-02 3.2365238666534424e-01 + <_> + + 0 -1 2043 2.1167730446904898e-03 + + 8.7506070733070374e-02 -1.8339939415454865e-01 + <_> + + 0 -1 2044 -8.7125040590763092e-02 + + -4.6162751317024231e-01 3.1342040747404099e-02 + <_> + + 0 -1 2045 1.9298809766769409e-01 + + 2.9041619971394539e-02 -4.4543629884719849e-01 + <_> + + 0 -1 2046 -2.4475890313624404e-05 + + 5.9352759271860123e-02 -2.0239880681037903e-01 + <_> + + 0 -1 2047 -3.4894149750471115e-02 + + -4.5676550269126892e-01 3.5249751061201096e-02 + <_> + + 0 -1 2048 1.9192209839820862e-01 + + -4.0733739733695984e-02 1.5444849431514740e-01 + <_> + + 0 -1 2049 -2.3085139691829681e-02 + + 7.1740321815013885e-02 -2.0493650436401367e-01 + <_> + + 0 -1 2050 2.9535569250583649e-02 + + 4.0762118995189667e-02 -3.6926439404487610e-01 + <_> + + 0 -1 2051 -3.6492519080638885e-02 + + -5.4941332340240479e-01 2.5431329384446144e-02 + <_> + + 0 -1 2052 4.0696229785680771e-02 + + 1.0515309870243073e-02 -4.9906229972839355e-01 + <_> + + 0 -1 2053 -3.6384560167789459e-02 + + -2.4736070632934570e-01 5.3187850862741470e-02 + <_> + + 0 -1 2054 3.7000048905611038e-02 + + -4.6731691807508469e-02 3.0095300078392029e-01 + <_> + + 0 -1 2055 3.7872981280088425e-02 + + 4.5600850135087967e-02 -3.3789730072021484e-01 + <_> + + 0 -1 2056 -1.6164340078830719e-02 + + 1.9655610620975494e-01 -5.6567810475826263e-02 + <_> + + 0 -1 2057 2.4253420531749725e-01 + + 3.7772599607706070e-02 -3.6190840601921082e-01 + <_> + + 0 -1 2058 -1.7429869621992111e-02 + + 7.8519687056541443e-02 -1.9835950806736946e-02 + <_> + + 0 -1 2059 1.4150669798254967e-02 + + -1.5143400430679321e-01 1.2028410285711288e-01 + <_> + + 0 -1 2060 6.3771687448024750e-02 + + 6.8969810381531715e-03 -8.0511492490768433e-01 + <_> + + 0 -1 2061 1.1273720301687717e-03 + + -2.6931971311569214e-01 5.2550218999385834e-02 + <_> + + 0 -1 2062 -3.8293499499559402e-02 + + 2.0563830435276031e-01 -2.1474370732903481e-02 + <_> + + 0 -1 2063 5.0103109329938889e-02 + + 2.3352440446615219e-02 -5.4645192623138428e-01 + <_> + + 0 -1 2064 -4.0057931095361710e-02 + + 2.4553330242633820e-01 -3.3474709838628769e-02 + <_> + + 0 -1 2065 1.8415290862321854e-02 + + -7.5977481901645660e-02 1.8510019779205322e-01 + <_> + + 0 -1 2066 1.0548150166869164e-02 + + 6.6050186753273010e-02 -6.4367741346359253e-02 + <_> + + 0 -1 2067 7.3007687926292419e-02 + + -2.6471909135580063e-02 4.6508520841598511e-01 + <_> + + 0 -1 2068 -3.4658040851354599e-02 + + 2.7848151326179504e-01 -4.6662889420986176e-02 + <_> + + 0 -1 2069 1.6924630850553513e-02 + + 1.1554700136184692e-01 -1.1504360288381577e-01 + <_> + + 0 -1 2070 -7.4245870113372803e-02 + + -4.3072721362113953e-01 1.6461249440908432e-02 + <_> + + 0 -1 2071 -7.3406308889389038e-02 + + -5.6626558303833008e-01 2.3453989997506142e-02 + <_> + + 0 -1 2072 1.2397419661283493e-01 + + -5.4616708308458328e-02 1.0024350136518478e-01 + <_> + + 0 -1 2073 -1.6235560178756714e-02 + + -1.9912120699882507e-01 6.8537697196006775e-02 + <_> + + 0 -1 2074 -3.0137969180941582e-02 + + -3.3398950099945068e-01 2.2806070744991302e-02 + <_> + + 0 -1 2075 -8.1836536526679993e-02 + + 4.0628650784492493e-01 -3.7828210741281509e-02 + <_> + + 0 -1 2076 5.2240878343582153e-01 + + 1.8094440922141075e-02 -4.3477010726928711e-01 + <_> + + 0 -1 2077 1.4845579862594604e-02 + + -7.0279222726821899e-01 1.9977509975433350e-02 + <_> + + 0 -1 2078 -5.5507790297269821e-02 + + 5.1214778423309326e-01 -2.8097610920667648e-02 + <_> + + 0 -1 2079 -2.7078049257397652e-02 + + 3.0834761261940002e-01 -4.0676809847354889e-02 + <_> + + 0 -1 2080 -2.4416339583694935e-03 + + -1.2054579704999924e-01 5.9857279062271118e-02 + <_> + + 0 -1 2081 1.5043720602989197e-01 + + -6.0036379843950272e-02 2.2021989524364471e-01 + <_> + + 0 -1 2082 -4.1030261665582657e-02 + + -3.3254709839820862e-01 2.5029130280017853e-02 + <_> + + 0 -1 2083 1.4609499834477901e-02 + + 5.1357660442590714e-02 -2.8190329670906067e-01 + <_> + + 0 -1 2084 1.2588420510292053e-01 + + 6.7158509045839310e-03 -4.9155730009078979e-01 + <_> + + 0 -1 2085 -3.7784978747367859e-02 + + 5.1675951480865479e-01 -2.7236010879278183e-02 + <_> + + 0 -1 2086 -1.8090210855007172e-02 + + -3.5778409242630005e-01 3.5485059022903442e-02 + <_> + + 0 -1 2087 -3.9881139993667603e-02 + + -4.8079541325569153e-01 2.7166770771145821e-02 + <_> + + 0 -1 2088 7.3324372060596943e-03 + + -5.3297691047191620e-02 1.1757290363311768e-01 + <_> + + 0 -1 2089 -6.9262558827176690e-04 + + -1.4501209557056427e-01 9.2885218560695648e-02 + <_> + + 0 -1 2090 -8.2166977226734161e-02 + + 2.3127609491348267e-01 -5.6990649551153183e-02 + <_> + + 0 -1 2091 3.8556379731744528e-03 + + 9.5330670475959778e-02 -1.5586289763450623e-01 + <_> + + 0 -1 2092 -7.4245668947696686e-03 + + -2.7692940831184387e-01 3.5343449562788010e-02 + <_> + + 0 -1 2093 2.2808350622653961e-02 + + 4.6904660761356354e-02 -3.3659911155700684e-01 + <_> + + 0 -1 2094 8.2916222512722015e-02 + + 2.8655149508267641e-03 -5.2691662311553955e-01 + <_> + + 0 -1 2095 -5.2402060478925705e-02 + + -6.9835901260375977e-01 1.8587840721011162e-02 + <_> + + 0 -1 2096 1.5193739905953407e-02 + + -6.0126390308141708e-02 2.5917008519172668e-01 + <_> + + 0 -1 2097 -1.4240809716284275e-02 + + 2.7056190371513367e-01 -6.4629502594470978e-02 + <_> + + 0 -1 2098 -3.2158840913325548e-03 + + -9.3549117445945740e-02 2.8090029954910278e-02 + <_> + + 0 -1 2099 4.7198659740388393e-03 + + -1.8783959746360779e-01 7.1021787822246552e-02 + <_> + + 0 -1 2100 -2.5415599346160889e-02 + + -3.3236810564994812e-01 4.0915489196777344e-02 + <_> + + 0 -1 2101 4.2758490890264511e-02 + + 2.6150930672883987e-02 -5.1128530502319336e-01 + <_> + + 0 -1 2102 4.2231049388647079e-02 + + -2.1398520097136497e-02 1.7453899979591370e-01 + <_> + + 0 -1 2103 -2.0674670115113258e-02 + + 2.5898760557174683e-01 -5.6440889835357666e-02 + <_> + + 0 -1 2104 2.8976969420909882e-02 + + -2.0763730630278587e-02 9.6909962594509125e-02 + <_> + + 0 -1 2105 3.4173950552940369e-03 + + 9.3572951853275299e-02 -1.5996080636978149e-01 + <_> + + 0 -1 2106 6.7922919988632202e-02 + + 1.6243519261479378e-02 -7.4624717235565186e-01 + <_> + + 0 -1 2107 -9.0270619839429855e-03 + + 3.3382698893547058e-01 -3.8774389773607254e-02 + <_> + + 0 -1 2108 -2.8317999094724655e-02 + + -3.6276119947433472e-01 2.3800129070878029e-02 + <_> + + 0 -1 2109 -1.5302050160244107e-03 + + -1.8413589894771576e-01 7.0150263607501984e-02 + <_> + + 0 -1 2110 8.4196459501981735e-03 + + 9.0586692094802856e-02 -6.1134628951549530e-02 + <_> + + 0 -1 2111 4.4346109032630920e-02 + + 6.1388049274682999e-02 -2.1231949329376221e-01 + <_> + + 0 -1 2112 2.5921100750565529e-02 + + -3.5028610378503799e-02 2.2107489407062531e-01 + <_> + + 0 -1 2113 -6.0503371059894562e-03 + + -3.2179000973701477e-01 3.9333820343017578e-02 + <_> + + 0 -1 2114 -2.5171019136905670e-02 + + 6.9517672061920166e-01 -1.8360199406743050e-02 + <_> + + 0 -1 2115 -5.2073050290346146e-02 + + -7.4727028608322144e-01 1.9030340015888214e-02 + <_> + + 0 -1 2116 -1.3639439828693867e-02 + + -6.2003239989280701e-02 4.1589640080928802e-02 + <_> + + 0 -1 2117 -3.8377299904823303e-02 + + 3.8518410921096802e-01 -3.1509511172771454e-02 + <_> + + 0 -1 2118 -1.4677719771862030e-01 + + -6.0099261999130249e-01 1.0989420115947723e-02 + <_> + + 0 -1 2119 2.0508460700511932e-02 + + 5.6464750319719315e-02 -2.5149369239807129e-01 + <_> + + 0 -1 2120 2.3784590885043144e-02 + + 5.8459620922803879e-02 -2.2233340144157410e-01 + <_> + + 0 -1 2121 1.8658170476555824e-02 + + -7.3706217110157013e-02 1.8556639552116394e-01 + <_> + + 0 -1 2122 -2.6653500273823738e-02 + + 2.1061730384826660e-01 -6.8629503250122070e-02 + <_> + + 0 -1 2123 -7.5975798070430756e-02 + + -4.8535370826721191e-01 2.7239590883255005e-02 + <_> + + 0 -1 2124 5.3205721080303192e-02 + + 5.1950141787528992e-03 -4.7940468788146973e-01 + <_> + + 0 -1 2125 4.1206479072570801e-02 + + 1.9166460260748863e-02 -6.4439648389816284e-01 + <_> + + 0 -1 2126 2.2624490782618523e-02 + + 1.7490459606051445e-02 -2.0645530521869659e-01 + <_> + + 0 -1 2127 2.1147429943084717e-02 + + -3.2944951206445694e-02 3.5154509544372559e-01 + <_> + + 0 -1 2128 1.3374770060181618e-02 + + 4.0784850716590881e-02 -1.9725930690765381e-01 + <_> + + 0 -1 2129 4.2831092141568661e-03 + + -8.5159152746200562e-02 1.4025710523128510e-01 + <_> + + 0 -1 2130 6.3718900084495544e-02 + + -4.9198199994862080e-03 4.5491519570350647e-01 + <_> + + 0 -1 2131 1.2082169763743877e-02 + + 5.3176809102296829e-02 -2.6156601309776306e-01 + <_> + + 0 -1 2132 1.8195409327745438e-02 + + -3.8999419659376144e-02 3.3412361145019531e-01 + <_> + + 0 -1 2133 2.8948329389095306e-02 + + 3.9750248193740845e-02 -3.4182530641555786e-01 + <_> + + 0 -1 2134 -9.3633607029914856e-02 + + -9.4571298360824585e-01 3.0850030016154051e-03 + <_> + + 0 -1 2135 3.4850560128688812e-02 + + 3.1342729926109314e-02 -3.5700461268424988e-01 + <_> + + 0 -1 2136 1.2895749509334564e-01 + + -3.9653491228818893e-02 3.7412929534912109e-01 + <_> + + 0 -1 2137 2.3297289386391640e-02 + + 2.5941710919141769e-02 -4.7231191396713257e-01 + <_> + + 0 -1 2138 1.5667669475078583e-02 + + -8.1445790827274323e-02 1.5750789642333984e-01 + <_> + + 0 -1 2139 1.1425570119172335e-03 + + 6.3901476562023163e-02 -2.0547799766063690e-01 + <_> + + 0 -1 2140 -5.5744551122188568e-02 + + -3.4481841325759888e-01 1.1300710029900074e-02 + <_> + + 0 -1 2141 -9.2509537935256958e-02 + + 8.9074200391769409e-01 -1.5398530289530754e-02 + <_> + + 0 -1 2142 -5.5660872021690011e-04 + + 8.7056189775466919e-02 -5.1321998238563538e-02 + <_> + + 0 -1 2143 -1.4538520015776157e-02 + + -4.5140060782432556e-01 2.8146119788289070e-02 + <_> + + 0 -1 2144 -3.7515729665756226e-02 + + -7.3286539316177368e-01 6.7265569232404232e-03 + <_> + + 0 -1 2145 -1.5516959829255939e-03 + + 9.1213479638099670e-02 -1.3395330309867859e-01 + <_> + + 0 -1 2146 -9.5461420714855194e-02 + + -9.5529359579086304e-01 2.3820339702069759e-03 + <_> + + 0 -1 2147 -1.2917599640786648e-02 + + 2.7040511369705200e-01 -4.6904701739549637e-02 + <_> + + 0 -1 2148 7.9802395775914192e-03 + + 5.5390980094671249e-02 -2.0667399466037750e-01 + <_> + + 0 -1 2149 6.6025177948176861e-03 + + 6.6448308527469635e-02 -1.9922210276126862e-01 + <_> + + 0 -1 2150 1.7824679613113403e-02 + + -1.4532490074634552e-01 8.9904323220252991e-02 + <_> + + 0 -1 2151 -2.3261539638042450e-02 + + 4.8062869906425476e-01 -2.7084289118647575e-02 + <_> + + 0 -1 2152 -5.3659449331462383e-03 + + -1.9143599271774292e-01 7.0398069918155670e-02 + <_> + + 0 -1 2153 -2.0775340497493744e-02 + + 1.6774240136146545e-01 -8.9455418288707733e-02 + <_> + + 0 -1 2154 6.2107890844345093e-02 + + 1.2815490365028381e-02 -6.4452892541885376e-01 + <_> + + 0 -1 2155 -4.4327871873974800e-03 + + 1.3405950367450714e-01 -1.0231850296258926e-01 + <_> + 210 + -1.4604519605636597e+00 + + <_> + + 0 -1 2156 -4.6693067997694016e-03 + + 1.4297600090503693e-01 -3.5293748974800110e-01 + <_> + + 0 -1 2157 -5.8510829694569111e-04 + + -2.2447289526462555e-01 7.3556646704673767e-02 + <_> + + 0 -1 2158 -3.4788011107593775e-03 + + 1.0603249818086624e-01 -2.5625610351562500e-01 + <_> + + 0 -1 2159 6.2952568987384439e-04 + + 4.1076458990573883e-02 -3.6061421036720276e-01 + <_> + + 0 -1 2160 2.1010650380048901e-04 + + -2.4425220489501953e-01 1.0942090302705765e-01 + <_> + + 0 -1 2161 -2.6671579107642174e-03 + + 8.4581501781940460e-02 -2.7449008822441101e-01 + <_> + + 0 -1 2162 7.1533219888806343e-03 + + -1.2603819370269775e-01 2.0079800486564636e-01 + <_> + + 0 -1 2163 -2.3616119287908077e-03 + + 1.6627199947834015e-01 -1.3186289370059967e-01 + <_> + + 0 -1 2164 3.9599660784006119e-02 + + 5.5119238793849945e-02 -3.4003400802612305e-01 + <_> + + 0 -1 2165 1.9385309424251318e-03 + + -2.0686650276184082e-01 1.0400419682264328e-01 + <_> + + 0 -1 2166 4.3686539866030216e-03 + + 6.4766593277454376e-02 -2.7426311373710632e-01 + <_> + + 0 -1 2167 -3.9834968629293144e-04 + + 5.2820999175310135e-02 -2.2684779763221741e-01 + <_> + + 0 -1 2168 -5.2277399227023125e-03 + + -2.5515750050544739e-01 7.6405368745326996e-02 + <_> + + 0 -1 2169 -1.0445619933307171e-02 + + 1.3513970375061035e-01 -5.0032071769237518e-02 + <_> + + 0 -1 2170 -2.0478919614106417e-03 + + -2.7669870853424072e-01 5.4732039570808411e-02 + <_> + + 0 -1 2171 9.1795288026332855e-03 + + -1.2642470002174377e-01 1.9979229569435120e-01 + <_> + + 0 -1 2172 9.4128772616386414e-04 + + -4.0286481380462646e-01 3.8918491452932358e-02 + <_> + + 0 -1 2173 -4.0410319343209267e-03 + + -2.0108319818973541e-01 5.1456429064273834e-02 + <_> + + 0 -1 2174 -1.2742569670081139e-02 + + 2.2716869413852692e-01 -6.8204790353775024e-02 + <_> + + 0 -1 2175 -4.6246009878814220e-03 + + -2.5854289531707764e-01 7.8878343105316162e-02 + <_> + + 0 -1 2176 -6.4845927990972996e-03 + + -3.1391140818595886e-01 7.1605153381824493e-02 + <_> + + 0 -1 2177 -4.8291690647602081e-02 + + 2.5488480925559998e-01 -2.1891580894589424e-02 + <_> + + 0 -1 2178 8.4315962158143520e-04 + + -1.6529269516468048e-01 8.9575611054897308e-02 + <_> + + 0 -1 2179 -1.0773389786481857e-01 + + -6.0115939378738403e-01 3.3779250225052238e-04 + <_> + + 0 -1 2180 -4.5969419181346893e-02 + + 3.6489740014076233e-01 -3.9942290633916855e-02 + <_> + + 0 -1 2181 -1.6649639233946800e-02 + + -1.1858119815587997e-01 1.0585139691829681e-01 + <_> + + 0 -1 2182 -1.4521550387144089e-02 + + -3.7954211235046387e-01 3.4867148846387863e-02 + <_> + + 0 -1 2183 1.3591590104624629e-03 + + -2.3180609941482544e-01 5.0401471555233002e-02 + <_> + + 0 -1 2184 -5.8343587443232536e-04 + + -2.8496581315994263e-01 4.0894281119108200e-02 + <_> + + 0 -1 2185 7.9833306372165680e-03 + + -3.6992359906435013e-02 1.6985300183296204e-01 + <_> + + 0 -1 2186 9.9762203171849251e-04 + + 6.4871042966842651e-02 -1.8648339807987213e-01 + <_> + + 0 -1 2187 -4.6869087964296341e-03 + + 7.6987423002719879e-02 -8.1482626497745514e-02 + <_> + + 0 -1 2188 3.0047740787267685e-02 + + -2.9839929193258286e-02 4.3676841259002686e-01 + <_> + + 0 -1 2189 1.8069539219141006e-02 + + 2.7509700506925583e-02 -4.2724269628524780e-01 + <_> + + 0 -1 2190 -1.5088430047035217e-01 + + -6.7918521165847778e-01 1.8012860789895058e-02 + <_> + + 0 -1 2191 -2.5836290791630745e-02 + + 2.5797989964485168e-01 -3.5906858742237091e-02 + <_> + + 0 -1 2192 1.8183529376983643e-02 + + 3.5895019769668579e-02 -3.7197691202163696e-01 + <_> + + 0 -1 2193 6.3127309083938599e-02 + + -7.3392972350120544e-02 1.2563429772853851e-01 + <_> + + 0 -1 2194 -6.6507689189165831e-04 + + 8.5442617535591125e-02 -1.5228550136089325e-01 + <_> + + 0 -1 2195 1.0104980319738388e-02 + + 3.4569118171930313e-02 -2.2657699882984161e-01 + <_> + + 0 -1 2196 -1.2355949729681015e-02 + + 1.5785010159015656e-01 -7.4710778892040253e-02 + <_> + + 0 -1 2197 1.5728179365396500e-02 + + 6.8844422698020935e-02 -1.6961769759654999e-01 + <_> + + 0 -1 2198 1.5084549886523746e-05 + + -1.3695539534091949e-01 9.0837597846984863e-02 + <_> + + 0 -1 2199 2.9634479433298111e-02 + + 4.9822349101305008e-02 -2.6809689402580261e-01 + <_> + + 0 -1 2200 2.8015200048685074e-02 + + -8.1799760460853577e-02 1.7842799425125122e-01 + <_> + + 0 -1 2201 2.3299450986087322e-03 + + 6.9535210728645325e-02 -1.8205040693283081e-01 + <_> + + 0 -1 2202 1.3453120365738869e-02 + + -7.0231497287750244e-02 1.8492579460144043e-01 + <_> + + 0 -1 2203 1.4049040153622627e-02 + + 7.6328299939632416e-02 -1.7219689488410950e-01 + <_> + + 0 -1 2204 -1.4648989774286747e-02 + + 3.4281060099601746e-01 -4.3134819716215134e-02 + <_> + + 0 -1 2205 1.4879769878461957e-04 + + -2.7614209055900574e-01 7.3140732944011688e-02 + <_> + + 0 -1 2206 -6.8892319686710835e-03 + + -1.8386749923229218e-01 6.5872021019458771e-02 + <_> + + 0 -1 2207 1.2898260029032826e-03 + + -1.1688020080327988e-01 1.1173330247402191e-01 + <_> + + 0 -1 2208 -2.5763860321603715e-04 + + 8.9391976594924927e-02 -1.4183540642261505e-01 + <_> + + 0 -1 2209 1.3652349822223186e-02 + + 2.5085829198360443e-02 -1.7959770560264587e-01 + <_> + + 0 -1 2210 -5.7484027929604053e-03 + + 1.6128179430961609e-01 -7.9023167490959167e-02 + <_> + + 0 -1 2211 -1.1682719923555851e-02 + + -1.8493950366973877e-01 4.5419961214065552e-02 + <_> + + 0 -1 2212 2.7498970739543438e-03 + + -6.5800942480564117e-02 1.9426700472831726e-01 + <_> + + 0 -1 2213 -1.1797569459304214e-03 + + 5.3563870489597321e-02 -5.5225171148777008e-02 + <_> + + 0 -1 2214 -3.7005849182605743e-02 + + -5.1369887590408325e-01 2.4779239669442177e-02 + <_> + + 0 -1 2215 2.3432020097970963e-02 + + 1.4517559669911861e-02 -3.2621389627456665e-01 + <_> + + 0 -1 2216 -2.4803660809993744e-02 + + 4.1374489665031433e-01 -3.1516589224338531e-02 + <_> + + 0 -1 2217 -9.1133005917072296e-03 + + -2.3262369632720947e-01 6.5307170152664185e-02 + <_> + + 0 -1 2218 -7.2223007678985596e-02 + + 3.1365010142326355e-01 -4.0287811309099197e-02 + <_> + + 0 -1 2219 6.4163007773458958e-03 + + 4.4151920825242996e-02 -1.4439010620117188e-01 + <_> + + 0 -1 2220 5.4361939430236816e-02 + + -4.9821659922599792e-02 2.6239651441574097e-01 + <_> + + 0 -1 2221 -5.9238062240183353e-03 + + 7.4054516851902008e-02 -7.2215773165225983e-02 + <_> + + 0 -1 2222 -3.4175089094787836e-03 + + -3.0714958906173706e-01 3.9461899548768997e-02 + <_> + + 0 -1 2223 1.1367879807949066e-02 + + -4.8698928207159042e-02 1.0077890008687973e-01 + <_> + + 0 -1 2224 2.3361030034720898e-03 + + 4.9539480358362198e-02 -2.3815050721168518e-01 + <_> + + 0 -1 2225 -7.2044372791424394e-04 + + 9.6084482967853546e-02 -9.8123528063297272e-02 + <_> + + 0 -1 2226 -3.4777939436025918e-04 + + 1.0546120256185532e-01 -1.0600890219211578e-01 + <_> + + 0 -1 2227 -6.6456091590225697e-03 + + -1.7471200227737427e-01 4.7264128923416138e-02 + <_> + + 0 -1 2228 4.4261440634727478e-02 + + -4.0742669254541397e-02 2.8637731075286865e-01 + <_> + + 0 -1 2229 3.4959740936756134e-02 + + 1.3479149900376797e-02 -4.4233149290084839e-01 + <_> + + 0 -1 2230 -2.5971820577979088e-02 + + -4.6334660053253174e-01 2.5301979854702950e-02 + <_> + + 0 -1 2231 1.8818200333043933e-03 + + -7.2344467043876648e-02 1.5579940378665924e-01 + <_> + + 0 -1 2232 3.2623678445816040e-02 + + 1.8171060830354691e-02 -6.3472539186477661e-01 + <_> + + 0 -1 2233 1.5041300095617771e-02 + + -5.3582038730382919e-02 1.8320439755916595e-01 + <_> + + 0 -1 2234 -5.5875489488244057e-03 + + 1.5442819893360138e-01 -6.9521442055702209e-02 + <_> + + 0 -1 2235 3.9029030594974756e-03 + + 7.2893843054771423e-02 -1.3542290031909943e-01 + <_> + + 0 -1 2236 4.5964889228343964e-02 + + 2.1482560783624649e-02 -5.4532879590988159e-01 + <_> + + 0 -1 2237 -7.4338473379611969e-02 + + -7.1795612573623657e-01 3.5341270267963409e-03 + <_> + + 0 -1 2238 2.0902850665152073e-03 + + 4.3308760970830917e-02 -2.5078159570693970e-01 + <_> + + 0 -1 2239 -7.5608417391777039e-02 + + 2.7488818764686584e-01 -3.4967329353094101e-02 + <_> + + 0 -1 2240 5.1200888119637966e-03 + + 4.7384329140186310e-02 -2.6794269680976868e-01 + <_> + + 0 -1 2241 -2.0140670239925385e-02 + + 7.2039432823657990e-02 -4.4537059962749481e-02 + <_> + + 0 -1 2242 2.6719279587268829e-02 + + -6.0671631246805191e-02 2.4019980430603027e-01 + <_> + + 0 -1 2243 -2.3299809545278549e-03 + + -1.4848700165748596e-01 6.3779368996620178e-02 + <_> + + 0 -1 2244 1.4248250052332878e-02 + + 3.9471931755542755e-02 -2.7790299057960510e-01 + <_> + + 0 -1 2245 -6.8691447377204895e-02 + + 3.1307551264762878e-01 -2.2111769765615463e-02 + <_> + + 0 -1 2246 -6.5213128924369812e-02 + + 3.6191588640213013e-01 -3.1089780852198601e-02 + <_> + + 0 -1 2247 -1.4469860121607780e-02 + + -1.9942939281463623e-01 2.6489760726690292e-02 + <_> + + 0 -1 2248 -9.4575136899948120e-03 + + -2.9698899388313293e-01 3.6693658679723740e-02 + <_> + + 0 -1 2249 -1.8222700059413910e-01 + + -4.0887731313705444e-01 7.3904348537325859e-03 + <_> + + 0 -1 2250 -2.3991869390010834e-01 + + -9.5519691705703735e-01 1.0895749554038048e-02 + <_> + + 0 -1 2251 -1.4964600093662739e-02 + + 1.3325509428977966e-01 -6.4146116375923157e-02 + <_> + + 0 -1 2252 1.1056339740753174e-01 + + -2.1147079765796661e-02 5.2262008190155029e-01 + <_> + + 0 -1 2253 -1.1857460252940655e-02 + + -2.6103261113166809e-01 2.4917129427194595e-02 + <_> + + 0 -1 2254 1.7032399773597717e-02 + + -4.2655009776353836e-02 2.4324589967727661e-01 + <_> + + 0 -1 2255 -6.6315201111137867e-03 + + -2.7996608614921570e-01 4.7972209751605988e-02 + <_> + + 0 -1 2256 -1.3527619885280728e-03 + + -1.7117640376091003e-01 6.8423986434936523e-02 + <_> + + 0 -1 2257 5.8159399777650833e-02 + + 1.4452300034463406e-02 -3.6640700697898865e-01 + <_> + + 0 -1 2258 9.6522513777017593e-03 + + 6.4102686941623688e-02 -1.9386090338230133e-01 + <_> + + 0 -1 2259 4.6681659296154976e-03 + + -6.4305387437343597e-02 1.2191460281610489e-01 + <_> + + 0 -1 2260 4.8228199593722820e-03 + + 4.2306859046220779e-02 -2.5486230850219727e-01 + <_> + + 0 -1 2261 7.2615491226315498e-03 + + -4.4169031083583832e-02 1.9888080656528473e-01 + <_> + + 0 -1 2262 2.7650638949126005e-03 + + 5.6748721748590469e-02 -1.8802900612354279e-01 + <_> + + 0 -1 2263 -1.2599739711731672e-03 + + 2.9681721329689026e-01 -3.0795339494943619e-02 + <_> + + 0 -1 2264 -1.4079749584197998e-02 + + 1.2790699303150177e-01 -7.7078782021999359e-02 + <_> + + 0 -1 2265 4.1978028602898121e-03 + + -3.2651171088218689e-02 4.4282011687755585e-02 + <_> + + 0 -1 2266 7.4891891563311219e-04 + + -1.1801239848136902e-01 1.0196279734373093e-01 + <_> + + 0 -1 2267 3.9699498564004898e-02 + + 1.6263889148831367e-02 -3.2391819357872009e-01 + <_> + + 0 -1 2268 2.9685199260711670e-03 + + 5.0729360431432724e-02 -2.2522340714931488e-01 + <_> + + 0 -1 2269 3.0207540839910507e-03 + + -6.4312063157558441e-02 6.3618481159210205e-02 + <_> + + 0 -1 2270 -1.0064570233225822e-03 + + -2.2469790279865265e-01 4.3256420642137527e-02 + <_> + + 0 -1 2271 1.6607339493930340e-03 + + -5.8126531541347504e-02 5.9540931135416031e-02 + <_> + + 0 -1 2272 4.9640638753771782e-03 + + -4.8804368823766708e-02 1.8437810242176056e-01 + <_> + + 0 -1 2273 1.7194069921970367e-01 + + 3.6377978976815939e-03 -1.0000029802322388e+00 + <_> + + 0 -1 2274 -2.0992290228605270e-03 + + 1.1951360106468201e-01 -8.8613957166671753e-02 + <_> + + 0 -1 2275 -4.0529989637434483e-03 + + -2.0199899375438690e-01 5.3564589470624924e-02 + <_> + + 0 -1 2276 1.5536800492554903e-03 + + -9.6797212958335876e-02 9.5135137438774109e-02 + <_> + + 0 -1 2277 2.2837040014564991e-03 + + -4.5535419136285782e-02 1.4682759344577789e-01 + <_> + + 0 -1 2278 -1.0094629600644112e-02 + + -1.8853099644184113e-01 4.8864368349313736e-02 + <_> + + 0 -1 2279 -7.0200799964368343e-03 + + 1.4628750085830688e-01 -4.2158648371696472e-02 + <_> + + 0 -1 2280 3.4074939321726561e-03 + + -7.7149718999862671e-02 1.3702009618282318e-01 + <_> + + 0 -1 2281 3.9907437749207020e-03 + + -6.4178831875324249e-02 8.5484616458415985e-02 + <_> + + 0 -1 2282 2.0611559972167015e-02 + + 3.7988938391208649e-02 -2.9359170794487000e-01 + <_> + + 0 -1 2283 -1.9768020138144493e-03 + + 6.0499001294374466e-02 -1.6910280287265778e-01 + <_> + + 0 -1 2284 -2.4783300235867500e-02 + + -5.5052608251571655e-01 1.5831759199500084e-02 + <_> + + 0 -1 2285 -1.5710920095443726e-02 + + 1.9716830551624298e-01 -3.1884010881185532e-02 + <_> + + 0 -1 2286 1.0070169810205698e-03 + + 4.6532750129699707e-02 -2.1853099763393402e-01 + <_> + + 0 -1 2287 -3.7466569337993860e-03 + + -2.5379389524459839e-01 3.9463929831981659e-02 + <_> + + 0 -1 2288 4.5849520713090897e-02 + + 1.3636340387165546e-02 -6.2976127862930298e-01 + <_> + + 0 -1 2289 -1.1040110141038895e-02 + + 2.4939639866352081e-01 -3.8895469158887863e-02 + <_> + + 0 -1 2290 -4.2415689677000046e-03 + + -2.1564769744873047e-01 4.5613430440425873e-02 + <_> + + 0 -1 2291 -3.1175611075013876e-03 + + 1.0641460120677948e-01 -1.2268310040235519e-01 + <_> + + 0 -1 2292 -2.3725910577923059e-03 + + 2.0573639869689941e-01 -6.6338561475276947e-02 + <_> + + 0 -1 2293 -3.6906299646943808e-03 + + -1.5802620351314545e-01 6.6760621964931488e-02 + <_> + + 0 -1 2294 1.0908120311796665e-03 + + -1.7830020189285278e-01 5.7181321084499359e-02 + <_> + + 0 -1 2295 -1.3929420150816441e-02 + + -1.4185859262943268e-01 5.8131370693445206e-02 + <_> + + 0 -1 2296 -2.8283370658755302e-02 + + 2.6451000571250916e-01 -4.5332599431276321e-02 + <_> + + 0 -1 2297 -3.9213709533214569e-04 + + 7.6039716601371765e-02 -8.4666326642036438e-02 + <_> + + 0 -1 2298 -2.0424809772521257e-03 + + -1.6393850743770599e-01 5.7595171034336090e-02 + <_> + + 0 -1 2299 -6.0634050518274307e-02 + + 2.4343550205230713e-01 -1.3630810193717480e-02 + <_> + + 0 -1 2300 5.5472988635301590e-02 + + 1.2274630367755890e-02 -7.6161897182464600e-01 + <_> + + 0 -1 2301 2.6451710611581802e-02 + + -1.6103159636259079e-02 1.4696520566940308e-01 + <_> + + 0 -1 2302 -6.5615847706794739e-02 + + -6.6936880350112915e-01 1.2788389809429646e-02 + <_> + + 0 -1 2303 -2.9287360608577728e-02 + + 3.8422039151191711e-01 -2.0979570224881172e-02 + <_> + + 0 -1 2304 -8.7814256548881531e-02 + + -5.5386292934417725e-01 1.6540929675102234e-02 + <_> + + 0 -1 2305 4.0213011205196381e-02 + + 5.5229798890650272e-03 -1.5169410407543182e-01 + <_> + + 0 -1 2306 7.5501110404729843e-03 + + -5.3081061691045761e-02 1.6791249811649323e-01 + <_> + + 0 -1 2307 7.5557199306786060e-03 + + 4.9213249236345291e-02 -1.8097420036792755e-01 + <_> + + 0 -1 2308 4.2264759540557861e-02 + + 9.8954448476433754e-03 -8.7265938520431519e-01 + <_> + + 0 -1 2309 -1.5821179375052452e-02 + + -4.9515271186828613e-01 1.0424910113215446e-02 + <_> + + 0 -1 2310 4.4557699002325535e-03 + + -5.2823610603809357e-02 1.7409110069274902e-01 + <_> + + 0 -1 2311 -6.3567152246832848e-03 + + 1.0278800129890442e-01 -9.4062283635139465e-02 + <_> + + 0 -1 2312 2.1308339200913906e-03 + + -5.7343449443578720e-02 1.5747800469398499e-01 + <_> + + 0 -1 2313 6.4157308079302311e-03 + + 4.1112188249826431e-02 -2.6482531428337097e-01 + <_> + + 0 -1 2314 -1.0572739690542221e-01 + + -9.2719399929046631e-01 8.6396038532257080e-03 + <_> + + 0 -1 2315 6.1298489570617676e-02 + + 1.1242480017244816e-02 -5.2976250648498535e-01 + <_> + + 0 -1 2316 1.0018650442361832e-02 + + -6.1801191419363022e-02 1.5441860258579254e-01 + <_> + + 0 -1 2317 2.3613891098648310e-03 + + -3.9282340556383133e-02 8.8061779737472534e-02 + <_> + + 0 -1 2318 -4.7975129564292729e-04 + + -1.0663200169801712e-01 8.3887517452239990e-02 + <_> + + 0 -1 2319 7.3982410132884979e-02 + + 4.7058681957423687e-03 -6.0129082202911377e-01 + <_> + + 0 -1 2320 6.3821911811828613e-02 + + 1.1372390203177929e-02 -7.4044847488403320e-01 + <_> + + 0 -1 2321 4.6818208647891879e-04 + + -7.6545506715774536e-02 5.3563810884952545e-02 + <_> + + 0 -1 2322 4.3877989053726196e-01 + + 1.2420959770679474e-02 -6.8776041269302368e-01 + <_> + + 0 -1 2323 2.8831470757722855e-02 + + 1.5150110237300396e-02 -1.3229629397392273e-01 + <_> + + 0 -1 2324 6.7726813256740570e-02 + + -1.8901329487562180e-02 4.8799818754196167e-01 + <_> + + 0 -1 2325 9.5125466585159302e-02 + + 1.2518660165369511e-02 -7.4607741832733154e-01 + <_> + + 0 -1 2326 3.4629011061042547e-03 + + -6.4396522939205170e-02 1.3450330495834351e-01 + <_> + + 0 -1 2327 -1.0220340453088284e-02 + + -1.2102399766445160e-01 3.5081598907709122e-02 + <_> + + 0 -1 2328 -2.5227791070938110e-01 + + 5.3186398744583130e-01 -1.7373610287904739e-02 + <_> + + 0 -1 2329 4.7006108798086643e-03 + + 2.6264479383826256e-02 -1.6305670142173767e-01 + <_> + + 0 -1 2330 8.0487072467803955e-02 + + -1.1193430051207542e-02 7.3598998785018921e-01 + <_> + + 0 -1 2331 -3.8025099784135818e-03 + + -1.1756920069456100e-01 6.4899243414402008e-02 + <_> + + 0 -1 2332 -5.1970399916172028e-02 + + 2.1764869987964630e-01 -4.6299580484628677e-02 + <_> + + 0 -1 2333 -1.2381119653582573e-02 + + -1.3483320176601410e-01 7.0956252515316010e-02 + <_> + + 0 -1 2334 4.6567008830606937e-03 + + 8.4818847477436066e-02 -1.0850810259580612e-01 + <_> + + 0 -1 2335 2.4520549923181534e-02 + + -5.6512400507926941e-02 2.0845490694046021e-01 + <_> + + 0 -1 2336 -6.0728159733116627e-03 + + 1.0253319889307022e-01 -1.0739710181951523e-01 + <_> + + 0 -1 2337 1.3803950278088450e-03 + + -1.2355019897222519e-01 3.8523931056261063e-02 + <_> + + 0 -1 2338 8.3129312843084335e-03 + + 5.0441969186067581e-02 -1.7901860177516937e-01 + <_> + + 0 -1 2339 6.8436772562563419e-04 + + -6.1334688216447830e-02 4.9543838948011398e-02 + <_> + + 0 -1 2340 7.1589440107345581e-02 + + 1.1258729733526707e-02 -7.2902548313140869e-01 + <_> + + 0 -1 2341 -3.9251110865734518e-04 + + -2.9022648930549622e-01 1.3908719643950462e-02 + <_> + + 0 -1 2342 -1.6948020085692406e-02 + + 1.4616020023822784e-01 -5.6298948824405670e-02 + <_> + + 0 -1 2343 2.3180670104920864e-03 + + 2.0289139449596405e-01 -4.3649390339851379e-02 + <_> + + 0 -1 2344 7.9764174297451973e-03 + + -4.8768021166324615e-02 1.8070909380912781e-01 + <_> + + 0 -1 2345 -1.1533150449395180e-02 + + -1.4238800108432770e-01 5.6691840291023254e-02 + <_> + + 0 -1 2346 -5.4723728680983186e-04 + + -2.3844610154628754e-01 3.2061301171779633e-02 + <_> + + 0 -1 2347 -1.1751300189644098e-03 + + 2.5394979864358902e-02 -8.9872613549232483e-02 + <_> + + 0 -1 2348 1.3655239716172218e-02 + + -2.7230219915509224e-02 3.3419778943061829e-01 + <_> + + 0 -1 2349 4.1803810745477676e-03 + + 2.6914540678262711e-02 -1.2557040154933929e-01 + <_> + + 0 -1 2350 3.1565671088173985e-04 + + 6.2177520245313644e-02 -1.3345809280872345e-01 + <_> + + 0 -1 2351 7.4048307724297047e-03 + + 3.1548298895359039e-02 -2.8247129917144775e-01 + <_> + + 0 -1 2352 -1.3977429829537868e-02 + + 1.2342610210180283e-01 -8.0493018031120300e-02 + <_> + + 0 -1 2353 -1.4240520074963570e-02 + + -2.3979499936103821e-01 1.8016669899225235e-02 + <_> + + 0 -1 2354 -2.2901569306850433e-01 + + -4.2895668745040894e-01 2.0032370463013649e-02 + <_> + + 0 -1 2355 2.6522560045123100e-02 + + -2.9899509623646736e-02 3.1195539236068726e-01 + <_> + + 0 -1 2356 5.0723659805953503e-03 + + 6.2117800116539001e-02 -1.5442310273647308e-01 + <_> + + 0 -1 2357 2.2340700961649418e-03 + + 3.0717259272933006e-02 -1.4656220376491547e-01 + <_> + + 0 -1 2358 -4.6348381787538528e-02 + + -6.7844080924987793e-01 1.2258620001375675e-02 + <_> + + 0 -1 2359 -3.0467000324279070e-03 + + 1.0547509789466858e-01 -5.4426789283752441e-02 + <_> + + 0 -1 2360 7.0065702311694622e-03 + + -5.2537959069013596e-02 2.4259300529956818e-01 + <_> + + 0 -1 2361 -2.7783720288425684e-03 + + -1.0732100158929825e-01 7.4064619839191437e-02 + <_> + + 0 -1 2362 -4.2294961167499423e-04 + + 6.8151466548442841e-02 -1.4117160439491272e-01 + <_> + + 0 -1 2363 -8.7614007294178009e-02 + + -6.5271192789077759e-01 3.3460480626672506e-03 + <_> + + 0 -1 2364 1.2552930042147636e-02 + + 3.3235169947147369e-02 -2.6571980118751526e-01 + <_> + + 0 -1 2365 -2.1863510832190514e-02 + + 1.5599909424781799e-01 -3.7561919540166855e-02 + <_> + 189 + -1.6477719545364380e+00 + + <_> + + 0 -1 2366 1.9715659320354462e-02 + + -4.0786159038543701e-01 1.6317300498485565e-01 + <_> + + 0 -1 2367 4.9977540969848633e-02 + + -2.5753161311149597e-01 2.3471170663833618e-01 + <_> + + 0 -1 2368 3.4774339292198420e-04 + + -2.7148011326789856e-01 1.5202049911022186e-01 + <_> + + 0 -1 2369 8.2787703722715378e-03 + + 8.6229562759399414e-02 -4.2272651195526123e-01 + <_> + + 0 -1 2370 1.2891810387372971e-02 + + -2.7589491009712219e-01 9.9677331745624542e-02 + <_> + + 0 -1 2371 -5.2444688044488430e-03 + + 1.4687310159206390e-01 -1.8090559542179108e-01 + <_> + + 0 -1 2372 4.7363140038214624e-04 + + 1.1544570326805115e-01 -2.3242090642452240e-01 + <_> + + 0 -1 2373 1.0767930187284946e-02 + + -2.3256160318851471e-01 5.7885929942131042e-02 + <_> + + 0 -1 2374 -2.0576089154928923e-03 + + -4.0554818511009216e-01 6.1086129397153854e-02 + <_> + + 0 -1 2375 1.2648279964923859e-01 + + 2.5926080998033285e-03 -6.0955828428268433e-01 + <_> + + 0 -1 2376 2.2029090672731400e-02 + + -2.3835970461368561e-01 1.1523839831352234e-01 + <_> + + 0 -1 2377 8.6279091192409396e-04 + + -2.4382559955120087e-01 4.8174999654293060e-02 + <_> + + 0 -1 2378 6.1232252046465874e-03 + + -3.3293130993843079e-01 7.3860548436641693e-02 + <_> + + 0 -1 2379 1.8321570241823792e-03 + + 7.4964806437492371e-02 -3.6050680279731750e-01 + <_> + + 0 -1 2380 1.3176959939301014e-02 + + 7.8650407493114471e-02 -3.0009350180625916e-01 + <_> + + 0 -1 2381 -1.5092800371348858e-02 + + -4.5663359761238098e-01 4.5359719544649124e-02 + <_> + + 0 -1 2382 -3.9765550754964352e-03 + + -3.7404119968414307e-01 5.7276591658592224e-02 + <_> + + 0 -1 2383 -1.2558099813759327e-02 + + 1.8079389631748199e-01 -9.0798392891883850e-02 + <_> + + 0 -1 2384 1.1346530169248581e-02 + + 6.7842416465282440e-02 -3.3354648947715759e-01 + <_> + + 0 -1 2385 3.0938379932194948e-03 + + -6.4362257719039917e-02 1.6250990331172943e-01 + <_> + + 0 -1 2386 -7.9837916418910027e-03 + + -2.8237259387969971e-01 6.4243227243423462e-02 + <_> + + 0 -1 2387 5.3257539868354797e-02 + + -1.1842279881238937e-01 1.5403720736503601e-01 + <_> + + 0 -1 2388 -3.2308440655469894e-02 + + -3.8174659013748169e-01 4.6444781124591827e-02 + <_> + + 0 -1 2389 7.4837519787251949e-03 + + 1.0087630152702332e-01 -1.7848369479179382e-01 + <_> + + 0 -1 2390 1.4075540006160736e-02 + + -1.3612699508666992e-01 1.2589199841022491e-01 + <_> + + 0 -1 2391 1.1945860460400581e-02 + + -4.6452131122350693e-02 3.1823348999023438e-01 + <_> + + 0 -1 2392 4.9774140119552612e-02 + + 3.7373390048742294e-02 -4.3919241428375244e-01 + <_> + + 0 -1 2393 1.1070669861510396e-03 + + 3.3163610845804214e-02 -1.8855419754981995e-01 + <_> + + 0 -1 2394 -2.8594989329576492e-02 + + -3.6906918883323669e-01 4.1930228471755981e-02 + <_> + + 0 -1 2395 -7.6013091020286083e-03 + + 5.2191480994224548e-02 -2.4689050018787384e-01 + <_> + + 0 -1 2396 1.3114510476589203e-01 + + -5.7957381010055542e-02 2.7318599820137024e-01 + <_> + + 0 -1 2397 -7.4186350502714049e-06 + + 1.1802060157060623e-01 -1.0745350271463394e-01 + <_> + + 0 -1 2398 3.1472120434045792e-02 + + -7.1733877062797546e-02 2.5617578625679016e-01 + <_> + + 0 -1 2399 3.8700491189956665e-02 + + 4.2863689363002777e-02 -6.0855817794799805e-01 + <_> + + 0 -1 2400 -3.9322520606219769e-03 + + -2.2127309441566467e-01 6.5617948770523071e-02 + <_> + + 0 -1 2401 2.3144779726862907e-02 + + -6.8200387060642242e-02 1.6107009351253510e-01 + <_> + + 0 -1 2402 4.4043041765689850e-02 + + -5.4092731326818466e-02 2.7009010314941406e-01 + <_> + + 0 -1 2403 1.6363389790058136e-02 + + -6.7165039479732513e-02 1.4292019605636597e-01 + <_> + + 0 -1 2404 4.0575690567493439e-02 + + 2.7095599099993706e-02 -5.1922810077667236e-01 + <_> + + 0 -1 2405 -8.1591978669166565e-02 + + 3.6290401220321655e-01 -5.0641149282455444e-02 + <_> + + 0 -1 2406 9.6564572304487228e-03 + + -6.5868496894836426e-02 2.0459869503974915e-01 + <_> + + 0 -1 2407 4.3875370174646378e-02 + + 2.8287120163440704e-02 -4.7316759824752808e-01 + <_> + + 0 -1 2408 -5.3375590592622757e-02 + + -6.3912391662597656e-01 1.9213579595088959e-02 + <_> + + 0 -1 2409 -4.2789369821548462e-02 + + 3.7414470314979553e-01 -3.6020539700984955e-02 + <_> + + 0 -1 2410 -1.4193350449204445e-02 + + -3.0562171339988708e-01 5.1724649965763092e-02 + <_> + + 0 -1 2411 -5.2947051823139191e-02 + + 2.2203849256038666e-01 -2.7123190462589264e-02 + <_> + + 0 -1 2412 3.0441719293594360e-01 + + 2.8107000514864922e-02 -5.1486051082611084e-01 + <_> + + 0 -1 2413 9.6917577087879181e-02 + + 7.5603500008583069e-03 -5.4642218351364136e-01 + <_> + + 0 -1 2414 4.5469900942407548e-04 + + -2.2257779538631439e-01 5.9663061052560806e-02 + <_> + + 0 -1 2415 6.4785419963300228e-03 + + 7.0507273077964783e-02 -8.6525917053222656e-02 + <_> + + 0 -1 2416 9.5442440360784531e-03 + + 1.1858390271663666e-01 -1.2846529483795166e-01 + <_> + + 0 -1 2417 1.0664040222764015e-02 + + 6.0251180082559586e-02 -2.3454129695892334e-01 + <_> + + 0 -1 2418 -5.9601400047540665e-02 + + -4.9083110690116882e-01 3.1179970130324364e-02 + <_> + + 0 -1 2419 -1.4810609631240368e-02 + + 1.7928470671176910e-01 -5.3788300603628159e-02 + <_> + + 0 -1 2420 2.4988459423184395e-02 + + 4.5585051178932190e-02 -3.1542968750000000e-01 + <_> + + 0 -1 2421 3.7159871309995651e-02 + + -2.5552989915013313e-02 1.2824480235576630e-01 + <_> + + 0 -1 2422 -3.6023799329996109e-02 + + 3.0338558554649353e-01 -5.0723869353532791e-02 + <_> + + 0 -1 2423 -4.0073681622743607e-02 + + -3.5327419638633728e-01 2.5542749091982841e-02 + <_> + + 0 -1 2424 1.0118799656629562e-01 + + 1.4954050071537495e-02 -8.5275518894195557e-01 + <_> + + 0 -1 2425 1.2551939487457275e-01 + + -5.5777598172426224e-02 3.5162329673767090e-02 + <_> + + 0 -1 2426 -1.0094200260937214e-02 + + -7.9517722129821777e-01 1.6658289358019829e-02 + <_> + + 0 -1 2427 2.7957880869507790e-02 + + 3.0823230743408203e-02 -2.9073038697242737e-01 + <_> + + 0 -1 2428 3.6360241472721100e-02 + + 2.7960959821939468e-02 -4.7691631317138672e-01 + <_> + + 0 -1 2429 -9.9100463092327118e-02 + + -3.0804800987243652e-01 4.2725458741188049e-02 + <_> + + 0 -1 2430 -5.8572040870785713e-04 + + 5.9227660298347473e-02 -2.3531119525432587e-01 + <_> + + 0 -1 2431 -5.1202569156885147e-02 + + -5.2199620008468628e-01 1.4952239580452442e-02 + <_> + + 0 -1 2432 -6.7564798519015312e-03 + + 1.4085020124912262e-01 -9.0452179312705994e-02 + <_> + + 0 -1 2433 -4.8959780484437943e-02 + + -6.6878128051757812e-01 2.0590359345078468e-02 + <_> + + 0 -1 2434 1.4971289783716202e-04 + + -1.8641050159931183e-01 6.5254852175712585e-02 + <_> + + 0 -1 2435 -3.4409679472446442e-02 + + -6.5235960483551025e-01 1.4693650417029858e-02 + <_> + + 0 -1 2436 6.4725689589977264e-02 + + 1.2329719960689545e-02 -8.4077721834182739e-01 + <_> + + 0 -1 2437 1.7888710135594010e-03 + + -3.3088308572769165e-01 2.3944050073623657e-02 + <_> + + 0 -1 2438 7.4999839067459106e-02 + + 2.6347629725933075e-02 -4.4841340184211731e-01 + <_> + + 0 -1 2439 -1.3695800304412842e-01 + + -5.7192331552505493e-01 1.2316530337557197e-03 + <_> + + 0 -1 2440 8.7679617106914520e-02 + + 9.1852411627769470e-02 -1.4714670181274414e-01 + <_> + + 0 -1 2441 -1.4691170305013657e-02 + + -2.7389299869537354e-01 5.5910948663949966e-02 + <_> + + 0 -1 2442 1.8059760332107544e-01 + + 1.8475739285349846e-02 -6.2247991561889648e-01 + <_> + + 0 -1 2443 -6.9349152036011219e-03 + + -1.6723890602588654e-01 4.2348120361566544e-02 + <_> + + 0 -1 2444 -4.5395728200674057e-02 + + 5.6401878595352173e-01 -2.0763039588928223e-02 + <_> + + 0 -1 2445 -3.7714779376983643e-02 + + -4.9726399779319763e-01 1.3457749970257282e-02 + <_> + + 0 -1 2446 -6.6780918277800083e-03 + + 1.5654189884662628e-01 -7.9254247248172760e-02 + <_> + + 0 -1 2447 -3.5693418234586716e-02 + + 3.2214561104774475e-01 -2.7933960780501366e-02 + <_> + + 0 -1 2448 2.0231369417160749e-03 + + -2.0472900569438934e-01 6.0136921703815460e-02 + <_> + + 0 -1 2449 7.7706989832222462e-03 + + -6.2275718897581100e-02 1.3619600236415863e-01 + <_> + + 0 -1 2450 -2.3846060037612915e-02 + + -6.4280962944030762e-01 1.9216870889067650e-02 + <_> + + 0 -1 2451 3.8112789392471313e-02 + + 1.6926249489188194e-02 -3.2001879811286926e-01 + <_> + + 0 -1 2452 -8.1509854644536972e-03 + + -1.8527400493621826e-01 6.7431643605232239e-02 + <_> + + 0 -1 2453 3.0041670799255371e-01 + + -3.4997869282960892e-02 3.7719568610191345e-01 + <_> + + 0 -1 2454 3.2188769546337426e-04 + + -4.3860068917274475e-01 3.1008180230855942e-02 + <_> + + 0 -1 2455 9.9805131554603577e-02 + + 2.1043010056018829e-02 -2.4182139337062836e-01 + <_> + + 0 -1 2456 -1.3132029771804810e-01 + + -6.0744529962539673e-01 1.9127229228615761e-02 + <_> + + 0 -1 2457 -4.4457878917455673e-02 + + -2.8207719326019287e-01 1.6199590638279915e-02 + <_> + + 0 -1 2458 -5.3282459266483784e-03 + + 1.9118839502334595e-01 -6.4483523368835449e-02 + <_> + + 0 -1 2459 4.0367528796195984e-02 + + 1.6362620517611504e-02 -5.5463272333145142e-01 + <_> + + 0 -1 2460 -8.7769925594329834e-03 + + -3.8903188705444336e-01 3.1277969479560852e-02 + <_> + + 0 -1 2461 -1.5031780116260052e-02 + + 4.4966968894004822e-01 -1.8708650022745132e-02 + <_> + + 0 -1 2462 -3.2085120677947998e-02 + + 2.2872669994831085e-01 -5.2647799253463745e-02 + <_> + + 0 -1 2463 1.7735429573804140e-03 + + 1.0644569993019104e-01 -1.1970230191946030e-01 + <_> + + 0 -1 2464 5.9195980429649353e-02 + + -6.4485557377338409e-02 1.8440729379653931e-01 + <_> + + 0 -1 2465 1.1976130306720734e-02 + + -4.6655338257551193e-02 2.2750610113143921e-01 + <_> + + 0 -1 2466 -7.3619361501187086e-04 + + 6.4427956938743591e-02 -1.9669359922409058e-01 + <_> + + 0 -1 2467 1.1274980008602142e-01 + + -3.2603729516267776e-02 2.6165801286697388e-01 + <_> + + 0 -1 2468 -2.9639130458235741e-02 + + -2.4286089837551117e-01 5.2550770342350006e-02 + <_> + + 0 -1 2469 -4.8972599208354950e-02 + + 2.9013419151306152e-01 -3.9936609566211700e-02 + <_> + + 0 -1 2470 -2.0732060074806213e-03 + + 6.6728956997394562e-02 -1.8385919928550720e-01 + <_> + + 0 -1 2471 1.8652489781379700e-01 + + 2.5788070634007454e-02 -3.0477121472358704e-01 + <_> + + 0 -1 2472 -6.4846210181713104e-02 + + 5.8964151144027710e-01 -2.1531870588660240e-02 + <_> + + 0 -1 2473 5.9668030589818954e-02 + + 9.0434495359659195e-03 -8.9928478002548218e-01 + <_> + + 0 -1 2474 -2.2810790687799454e-02 + + -5.5689752101898193e-01 2.1036420017480850e-02 + <_> + + 0 -1 2475 -4.3924558907747269e-02 + + -7.7569800615310669e-01 1.3244120404124260e-02 + <_> + + 0 -1 2476 -8.1411283463239670e-03 + + -1.6145749390125275e-01 6.3869751989841461e-02 + <_> + + 0 -1 2477 -1.7681140452623367e-02 + + -1.7088229954242706e-01 4.4323820620775223e-02 + <_> + + 0 -1 2478 3.5615780949592590e-01 + + 1.3911530375480652e-02 -8.2366949319839478e-01 + <_> + + 0 -1 2479 8.9791387319564819e-02 + + -3.3068671822547913e-02 3.9501950144767761e-01 + <_> + + 0 -1 2480 -5.1039960235357285e-02 + + -4.9687319993972778e-01 2.4911910295486450e-02 + <_> + + 0 -1 2481 4.4502970576286316e-01 + + 1.3085749931633472e-02 -7.1374338865280151e-01 + <_> + + 0 -1 2482 -3.1571299768984318e-03 + + -2.3235230147838593e-01 4.5422729104757309e-02 + <_> + + 0 -1 2483 2.2295509278774261e-01 + + 2.5272920727729797e-02 -4.5817920565605164e-01 + <_> + + 0 -1 2484 8.1787049770355225e-02 + + -5.6966669857501984e-02 2.0633119344711304e-01 + <_> + + 0 -1 2485 1.2290639802813530e-02 + + 1.0433530062437057e-01 -1.4129990339279175e-01 + <_> + + 0 -1 2486 3.2738980371505022e-03 + + -1.9929160177707672e-01 5.7900499552488327e-02 + <_> + + 0 -1 2487 3.1915940344333649e-03 + + -2.8649568557739258e-01 3.8445938378572464e-02 + <_> + + 0 -1 2488 -6.9429136812686920e-02 + + 3.9995300769805908e-01 -2.9228420928120613e-02 + <_> + + 0 -1 2489 3.0896291136741638e-01 + + 4.5684990473091602e-03 -9.7593581676483154e-01 + <_> + + 0 -1 2490 6.0547169297933578e-02 + + -1.7227350175380707e-01 7.3367759585380554e-02 + <_> + + 0 -1 2491 8.0296747386455536e-02 + + 1.2790890410542488e-02 -2.9636448621749878e-01 + <_> + + 0 -1 2492 9.8309047520160675e-02 + + 1.7421530559659004e-02 -7.3428112268447876e-01 + <_> + + 0 -1 2493 -6.0651078820228577e-02 + + -8.9268088340759277e-01 9.2950398102402687e-03 + <_> + + 0 -1 2494 -1.1067830026149750e-02 + + 3.6940470337867737e-01 -3.2281860709190369e-02 + <_> + + 0 -1 2495 -1.7252689227461815e-02 + + 2.0163689553737640e-01 -3.0649609863758087e-02 + <_> + + 0 -1 2496 1.1417149752378464e-01 + + -7.2567440569400787e-02 1.4580799639225006e-01 + <_> + + 0 -1 2497 -1.1878489749506116e-04 + + 6.6703669726848602e-02 -1.2044110149145126e-01 + <_> + + 0 -1 2498 4.2538821697235107e-02 + + 1.4235669374465942e-01 -9.3128196895122528e-02 + <_> + + 0 -1 2499 4.6220790594816208e-02 + + -4.5348118990659714e-02 2.6667690277099609e-01 + <_> + + 0 -1 2500 -1.2598860263824463e-01 + + -6.2195998430252075e-01 1.9361790269613266e-02 + <_> + + 0 -1 2501 1.4336410164833069e-01 + + 1.5602460131049156e-02 -3.4269729256629944e-01 + <_> + + 0 -1 2502 1.4853400178253651e-02 + + -1.9399890303611755e-01 5.9365049004554749e-02 + <_> + + 0 -1 2503 2.9607299715280533e-02 + + 2.9370859265327454e-02 -1.1840560287237167e-01 + <_> + + 0 -1 2504 4.5151200145483017e-02 + + -3.1025370582938194e-02 4.2335650324821472e-01 + <_> + + 0 -1 2505 1.7347050830721855e-02 + + 5.2468661218881607e-02 -1.7071889340877533e-01 + <_> + + 0 -1 2506 4.8696789890527725e-02 + + 1.3757590204477310e-02 -7.3853892087936401e-01 + <_> + + 0 -1 2507 -2.5120940059423447e-02 + + -2.6077219843864441e-01 3.6249000579118729e-02 + <_> + + 0 -1 2508 -1.4412039890885353e-02 + + 1.8435400724411011e-01 -5.5376049131155014e-02 + <_> + + 0 -1 2509 1.6011130064725876e-02 + + -3.3822190016508102e-02 9.8490990698337555e-02 + <_> + + 0 -1 2510 -6.3778877258300781e-02 + + 3.9596658945083618e-01 -2.6605289429426193e-02 + <_> + + 0 -1 2511 -1.2431790120899677e-02 + + -2.7103281021118164e-01 5.1153909415006638e-02 + <_> + + 0 -1 2512 1.5430289506912231e-01 + + -2.9742069542407990e-02 3.6223879456520081e-01 + <_> + + 0 -1 2513 6.8953618407249451e-02 + + 1.4560540206730366e-02 -7.1308761835098267e-01 + <_> + + 0 -1 2514 2.6809390634298325e-02 + + 3.0903020873665810e-02 -3.1453761458396912e-01 + <_> + + 0 -1 2515 -5.4339639842510223e-02 + + -5.7081592082977295e-01 6.3606691546738148e-03 + <_> + + 0 -1 2516 -7.4291341006755829e-03 + + -2.1167820692062378e-01 5.4728411138057709e-02 + <_> + + 0 -1 2517 1.5004719607532024e-02 + + -1.3576979935169220e-01 3.6672618240118027e-02 + <_> + + 0 -1 2518 2.3438859730958939e-02 + + -6.2095177173614502e-01 1.7451370134949684e-02 + <_> + + 0 -1 2519 2.1869429945945740e-01 + + -2.5175819173455238e-02 2.4256730079650879e-01 + <_> + + 0 -1 2520 7.2554901242256165e-02 + + 3.0378310009837151e-02 -3.5316839814186096e-01 + <_> + + 0 -1 2521 -6.0775190591812134e-02 + + 6.1231142282485962e-01 -2.9397750273346901e-02 + <_> + + 0 -1 2522 1.0405359789729118e-02 + + -4.8925351351499557e-02 2.0042200386524200e-01 + <_> + + 0 -1 2523 -4.4559161178767681e-03 + + -1.8175999820232391e-01 5.1460109651088715e-02 + <_> + + 0 -1 2524 5.3141661919653416e-03 + + 1.0836429893970490e-01 -1.1464370042085648e-01 + <_> + + 0 -1 2525 2.8129909187555313e-02 + + 4.8452459275722504e-02 -1.0588149726390839e-01 + <_> + + 0 -1 2526 -1.0029030032455921e-02 + + -2.8854200243949890e-01 4.6509381383657455e-02 + <_> + + 0 -1 2527 4.1623760014772415e-02 + + -5.2424181252717972e-02 2.4638059735298157e-01 + <_> + + 0 -1 2528 1.7407029867172241e-02 + + -5.9511799365282059e-02 2.2489009797573090e-01 + <_> + + 0 -1 2529 -9.1012917459011078e-02 + + 3.8434851169586182e-01 -2.6776079088449478e-02 + <_> + + 0 -1 2530 -5.5964559316635132e-02 + + 3.3512559533119202e-01 -3.7086669355630875e-02 + <_> + + 0 -1 2531 -2.3191609978675842e-01 + + -7.9937142133712769e-01 1.6157710924744606e-02 + <_> + + 0 -1 2532 1.5095779672265053e-02 + + 1.9562739878892899e-02 -4.7588780522346497e-01 + <_> + + 0 -1 2533 -6.3537202775478363e-02 + + 5.5103862285614014e-01 -9.9191991612315178e-03 + <_> + + 0 -1 2534 5.0780471414327621e-02 + + -5.0766121596097946e-02 1.9856730103492737e-01 + <_> + + 0 -1 2535 3.3435709774494171e-02 + + 1.7100030556321144e-02 -3.9106050133705139e-01 + <_> + + 0 -1 2536 2.7236310765147209e-02 + + 1.9491130486130714e-02 -4.9955821037292480e-01 + <_> + + 0 -1 2537 3.6144461482763290e-02 + + 1.9712809473276138e-02 -4.7714808583259583e-01 + <_> + + 0 -1 2538 -3.7110898643732071e-02 + + -7.1080970764160156e-01 1.3297240249812603e-02 + <_> + + 0 -1 2539 -1.6986919799819589e-03 + + -1.1454039812088013e-01 5.3833190351724625e-02 + <_> + + 0 -1 2540 7.0956937270238996e-04 + + -1.1852429807186127e-01 8.6146153509616852e-02 + <_> + + 0 -1 2541 -3.9854459464550018e-02 + + -2.1784169971942902e-01 7.9314615577459335e-03 + <_> + + 0 -1 2542 -2.6265300810337067e-02 + + 5.1828277111053467e-01 -1.9502539187669754e-02 + <_> + + 0 -1 2543 1.5767179429531097e-03 + + -9.0025149285793304e-02 4.3614149093627930e-02 + <_> + + 0 -1 2544 8.4500849246978760e-02 + + 1.9108800217509270e-02 -5.8049428462982178e-01 + <_> + + 0 -1 2545 5.8061029762029648e-02 + + 5.1128780469298363e-03 -3.6629718542098999e-01 + <_> + + 0 -1 2546 -8.6446420755237341e-04 + + 9.8551221191883087e-02 -9.9286876618862152e-02 + <_> + + 0 -1 2547 -1.6358779743313789e-02 + + -2.2353939712047577e-01 4.5100010931491852e-02 + <_> + + 0 -1 2548 1.2069500051438808e-02 + + -3.0885580927133560e-02 3.5933670401573181e-01 + <_> + + 0 -1 2549 6.4932592213153839e-02 + + 8.9946594089269638e-03 -6.5505272150039673e-01 + <_> + + 0 -1 2550 -1.6384720802307129e-02 + + 1.8374380469322205e-01 -5.8319728821516037e-02 + <_> + + 0 -1 2551 3.6467831581830978e-02 + + 3.3053800463676453e-02 -3.1176608800888062e-01 + <_> + + 0 -1 2552 -4.8026088625192642e-03 + + -1.3096930086612701e-01 8.8815420866012573e-02 + <_> + + 0 -1 2553 -9.7134411334991455e-03 + + 1.2485890090465546e-01 -4.5851919800043106e-02 + <_> + + 0 -1 2554 -3.6871319753117859e-04 + + 1.0798580199480057e-01 -1.0795330256223679e-01 + <_> + 248 + -1.3472950458526611e+00 + + <_> + + 0 -1 2555 4.8573319800198078e-03 + + -2.2165919840335846e-01 2.0661990344524384e-01 + <_> + + 0 -1 2556 -9.0601091505959630e-04 + + 9.2684216797351837e-02 -3.4692689776420593e-01 + <_> + + 0 -1 2557 3.8109601009637117e-03 + + -4.7693979740142822e-01 7.2208866477012634e-02 + <_> + + 0 -1 2558 -1.9349349895492196e-03 + + -2.3474289476871490e-01 1.0308369994163513e-01 + <_> + + 0 -1 2559 4.6932199038565159e-03 + + -2.1755599975585938e-01 1.0297770053148270e-01 + <_> + + 0 -1 2560 -4.5681721530854702e-03 + + -3.2979539036750793e-01 6.2108699232339859e-02 + <_> + + 0 -1 2561 2.0976159721612930e-03 + + -2.7585551142692566e-01 7.4447788298130035e-02 + <_> + + 0 -1 2562 -2.3434460163116455e-02 + + -2.4517090618610382e-01 2.0888300612568855e-02 + <_> + + 0 -1 2563 -7.5489659793674946e-03 + + -2.3539499938488007e-01 8.0594792962074280e-02 + <_> + + 0 -1 2564 -1.3637889642268419e-03 + + 1.2462289631366730e-01 -1.4383980631828308e-01 + <_> + + 0 -1 2565 2.0881770178675652e-02 + + -2.5486978888511658e-01 7.0480130612850189e-02 + <_> + + 0 -1 2566 -1.6712560318410397e-03 + + -1.4747080206871033e-01 9.3597747385501862e-02 + <_> + + 0 -1 2567 -5.8552708476781845e-02 + + 3.7929660081863403e-01 -3.7892241030931473e-02 + <_> + + 0 -1 2568 -4.7591641545295715e-02 + + 3.4769389033317566e-01 -2.9484409838914871e-02 + <_> + + 0 -1 2569 5.7788072153925896e-03 + + 4.1627179831266403e-02 -3.8012310862541199e-01 + <_> + + 0 -1 2570 6.1923051252961159e-03 + + -7.9854242503643036e-02 1.4662300050258636e-01 + <_> + + 0 -1 2571 8.6211357265710831e-03 + + -7.9052597284317017e-02 1.9707180559635162e-01 + <_> + + 0 -1 2572 3.8787689805030823e-01 + + 9.9500510841608047e-03 -5.4955279827117920e-01 + <_> + + 0 -1 2573 1.2184830009937286e-01 + + 2.1560879424214363e-02 -7.1182191371917725e-01 + <_> + + 0 -1 2574 5.6779510341584682e-03 + + 5.0778731703758240e-02 -1.9817540049552917e-01 + <_> + + 0 -1 2575 -3.2407268881797791e-02 + + -6.5776360034942627e-01 1.8930230289697647e-02 + <_> + + 0 -1 2576 2.3834649473428726e-03 + + 3.5910621285438538e-02 -1.9386079907417297e-01 + <_> + + 0 -1 2577 4.4861159403808415e-04 + + 6.3049189746379852e-02 -2.3067280650138855e-01 + <_> + + 0 -1 2578 2.8381360694766045e-02 + + 1.3798769563436508e-02 -2.0287990570068359e-01 + <_> + + 0 -1 2579 -2.7084869798272848e-03 + + -1.6455270349979401e-01 8.1182733178138733e-02 + <_> + + 0 -1 2580 -1.3218579813838005e-02 + + 1.2929069995880127e-01 -4.9410581588745117e-02 + <_> + + 0 -1 2581 1.8623949727043509e-03 + + -2.7398198843002319e-01 4.5746099203824997e-02 + <_> + + 0 -1 2582 -6.6727721132338047e-03 + + -1.5167540311813354e-01 5.5587619543075562e-02 + <_> + + 0 -1 2583 1.9492399878799915e-03 + + -8.5547126829624176e-02 1.3712610304355621e-01 + <_> + + 0 -1 2584 -7.0978812873363495e-02 + + -7.7429318428039551e-01 5.5506629869341850e-03 + <_> + + 0 -1 2585 5.7003321126103401e-03 + + 6.0299661010503769e-02 -2.3000110685825348e-01 + <_> + + 0 -1 2586 6.6310778260231018e-02 + + -8.5690699517726898e-02 1.5169920027256012e-01 + <_> + + 0 -1 2587 -8.5291899740695953e-03 + + 1.4297589659690857e-01 -9.1805547475814819e-02 + <_> + + 0 -1 2588 5.1141469739377499e-03 + + 4.6917989850044250e-02 -1.3319849967956543e-01 + <_> + + 0 -1 2589 1.9523530500009656e-03 + + -1.4177489280700684e-01 1.0524170100688934e-01 + <_> + + 0 -1 2590 1.9558310508728027e-01 + + 1.4478860422968864e-02 -7.9985427856445312e-01 + <_> + + 0 -1 2591 5.3029200062155724e-03 + + 3.7237700074911118e-02 -2.6131349802017212e-01 + <_> + + 0 -1 2592 6.4814360812306404e-03 + + -4.9092698842287064e-02 2.5681778788566589e-01 + <_> + + 0 -1 2593 -6.1802868731319904e-03 + + -2.1317920088768005e-01 6.1390031129121780e-02 + <_> + + 0 -1 2594 1.9895739387720823e-03 + + -7.1335382759571075e-02 1.3002429902553558e-01 + <_> + + 0 -1 2595 -4.2928531183861196e-04 + + 7.2383478283882141e-02 -1.5643799304962158e-01 + <_> + + 0 -1 2596 -4.5690318802371621e-04 + + 7.5732357800006866e-02 -1.0932859778404236e-01 + <_> + + 0 -1 2597 -1.3333739340305328e-01 + + -5.4889208078384399e-01 1.9494550302624702e-02 + <_> + + 0 -1 2598 8.2705507520586252e-04 + + -1.8739989399909973e-01 5.7498261332511902e-02 + <_> + + 0 -1 2599 -1.6954699531197548e-03 + + -1.4100700616836548e-01 8.6548388004302979e-02 + <_> + + 0 -1 2600 9.8944529891014099e-03 + + 1.7898159101605415e-02 -3.1395688652992249e-01 + <_> + + 0 -1 2601 6.0766572132706642e-03 + + -1.3120110332965851e-01 9.1578528285026550e-02 + <_> + + 0 -1 2602 -3.5680279135704041e-02 + + -3.8880988955497742e-01 1.1377809569239616e-02 + <_> + + 0 -1 2603 8.7540567619726062e-04 + + 5.3022928535938263e-02 -2.1509949862957001e-01 + <_> + + 0 -1 2604 1.9438719609752297e-03 + + -8.1035703420639038e-02 1.3382309675216675e-01 + <_> + + 0 -1 2605 5.6398138403892517e-02 + + 1.4857930131256580e-02 -6.9551151990890503e-01 + <_> + + 0 -1 2606 -1.0274930391460657e-03 + + -1.9196349382400513e-01 4.7596029937267303e-02 + <_> + + 0 -1 2607 -3.3568819053471088e-03 + + 1.0466050356626511e-01 -1.0170979797840118e-01 + <_> + + 0 -1 2608 1.1734040081501007e-01 + + -4.6565439552068710e-02 2.0878739655017853e-01 + <_> + + 0 -1 2609 8.8005866855382919e-03 + + 9.1754652559757233e-02 -1.2221500277519226e-01 + <_> + + 0 -1 2610 2.4095149710774422e-03 + + -3.6752160638570786e-02 2.3443439602851868e-01 + <_> + + 0 -1 2611 -2.8434590785764158e-04 + + -1.9996729493141174e-01 4.7353159636259079e-02 + <_> + + 0 -1 2612 1.7623709514737129e-02 + + -2.2765519097447395e-02 2.5646668672561646e-01 + <_> + + 0 -1 2613 1.4121740125119686e-02 + + 2.2659989073872566e-02 -4.2449080944061279e-01 + <_> + + 0 -1 2614 -1.5290649607777596e-02 + + 2.4445760250091553e-01 -4.3145630508661270e-02 + <_> + + 0 -1 2615 -2.5426879525184631e-02 + + 4.1280931234359741e-01 -2.5002820417284966e-02 + <_> + + 0 -1 2616 8.7438793852925301e-03 + + 4.1931539773941040e-02 -1.2433040142059326e-01 + <_> + + 0 -1 2617 4.1642960160970688e-02 + + 2.1535869687795639e-02 -4.9062231183052063e-01 + <_> + + 0 -1 2618 7.0692330598831177e-02 + + -2.4307090789079666e-02 3.3606329560279846e-01 + <_> + + 0 -1 2619 -7.7690348029136658e-02 + + -7.3883998394012451e-01 1.3576829805970192e-02 + <_> + + 0 -1 2620 3.7781539140269160e-04 + + -9.6697732806205750e-02 9.4690509140491486e-02 + <_> + + 0 -1 2621 -1.1192850070074201e-03 + + -2.1631820499897003e-01 4.4235199689865112e-02 + <_> + + 0 -1 2622 5.9772249311208725e-02 + + -3.2024260610342026e-02 3.0602660775184631e-01 + <_> + + 0 -1 2623 -1.5417120419442654e-02 + + -3.4087839722633362e-01 2.8097979724407196e-02 + <_> + + 0 -1 2624 -6.3111339695751667e-03 + + 1.5327680110931396e-01 -4.7901459038257599e-02 + <_> + + 0 -1 2625 -1.8826499581336975e-02 + + -1.5269599854946136e-01 6.0955628752708435e-02 + <_> + + 0 -1 2626 -3.9223838597536087e-02 + + 2.6624131202697754e-01 -7.6400930993258953e-03 + <_> + + 0 -1 2627 -4.8653159290552139e-02 + + -4.5488500595092773e-01 1.9853049889206886e-02 + <_> + + 0 -1 2628 6.7260518670082092e-02 + + 1.0999150108546019e-03 -7.5273478031158447e-01 + <_> + + 0 -1 2629 1.2728190049529076e-03 + + -7.8121297061443329e-02 1.1816550046205521e-01 + <_> + + 0 -1 2630 -9.4147026538848877e-02 + + -5.2153587341308594e-01 1.4973170123994350e-02 + <_> + + 0 -1 2631 -4.7454461455345154e-02 + + 2.6547148823738098e-01 -3.0587410554289818e-02 + <_> + + 0 -1 2632 -5.6014367146417499e-04 + + -1.0506449639797211e-01 6.0161281377077103e-02 + <_> + + 0 -1 2633 -2.9601220740005374e-04 + + 6.2257450073957443e-02 -1.3126540184020996e-01 + <_> + + 0 -1 2634 -2.0918490365147591e-02 + + -2.0831510424613953e-01 2.6843119412660599e-02 + <_> + + 0 -1 2635 -7.2696260176599026e-03 + + -1.6227640211582184e-01 6.1937049031257629e-02 + <_> + + 0 -1 2636 7.2555372025817633e-04 + + -1.0315939784049988e-01 6.8040877580642700e-02 + <_> + + 0 -1 2637 2.0828839391469955e-02 + + -4.4557690620422363e-02 2.2167469561100006e-01 + <_> + + 0 -1 2638 8.7201192975044250e-02 + + 9.5432223752140999e-03 -5.8706420660018921e-01 + <_> + + 0 -1 2639 4.1596628725528717e-02 + + -3.0774539336562157e-02 2.8809019923210144e-01 + <_> + + 0 -1 2640 -2.6154879480600357e-02 + + -5.9353542327880859e-01 1.4388410374522209e-02 + <_> + + 0 -1 2641 2.7175429463386536e-01 + + 1.3717720285058022e-02 -5.4619067907333374e-01 + <_> + + 0 -1 2642 2.1811699494719505e-02 + + -1.6798110678792000e-02 2.9062330722808838e-01 + <_> + + 0 -1 2643 -1.9965929910540581e-02 + + -4.3052119016647339e-01 1.8917759880423546e-02 + <_> + + 0 -1 2644 -1.1561929713934660e-03 + + 8.8031537830829620e-02 -1.9590209424495697e-01 + <_> + + 0 -1 2645 -1.6627550357952714e-03 + + 8.9111559092998505e-02 -9.0959653258323669e-02 + <_> + + 0 -1 2646 -1.7325150547549129e-03 + + -1.1540830135345459e-01 5.3636670112609863e-02 + <_> + + 0 -1 2647 -3.9231408387422562e-02 + + 6.2471270561218262e-01 -1.3666920363903046e-02 + <_> + + 0 -1 2648 1.0423580184578896e-02 + + 2.4711130186915398e-02 -1.6751749813556671e-01 + <_> + + 0 -1 2649 2.2725639864802361e-03 + + -5.5126778781414032e-02 1.4781460165977478e-01 + <_> + + 0 -1 2650 -3.9644641801714897e-03 + + 1.1337990313768387e-01 -6.8672053515911102e-02 + <_> + + 0 -1 2651 4.0544760413467884e-03 + + 4.0180210024118423e-02 -2.3837350308895111e-01 + <_> + + 0 -1 2652 2.0538640674203634e-03 + + 3.2863691449165344e-02 -1.2495829910039902e-01 + <_> + + 0 -1 2653 2.9705381020903587e-03 + + 4.1810061782598495e-02 -2.0539659261703491e-01 + <_> + + 0 -1 2654 -8.3381328731775284e-03 + + 9.2258736491203308e-02 -3.8435179740190506e-02 + <_> + + 0 -1 2655 1.5640279743820429e-03 + + -9.6661567687988281e-02 8.5594817996025085e-02 + <_> + + 0 -1 2656 -3.7052970379590988e-02 + + -7.7915471792221069e-01 1.0418290272355080e-02 + <_> + + 0 -1 2657 -1.0109930299222469e-02 + + 1.2499059736728668e-01 -6.4437836408615112e-02 + <_> + + 0 -1 2658 -7.9335980117321014e-02 + + 7.0784372091293335e-01 -3.1601081136614084e-03 + <_> + + 0 -1 2659 -2.5811919476836920e-03 + + -1.6802759468555450e-01 6.7257612943649292e-02 + <_> + + 0 -1 2660 1.8863540142774582e-02 + + -5.2749298512935638e-02 1.4578150212764740e-01 + <_> + + 0 -1 2661 6.1697891214862466e-04 + + -9.6527166664600372e-02 9.3077242374420166e-02 + <_> + + 0 -1 2662 -9.9242655560374260e-03 + + 1.2164440006017685e-01 -2.6439830660820007e-02 + <_> + + 0 -1 2663 -4.7382008284330368e-02 + + -3.7194240093231201e-01 2.4884449318051338e-02 + <_> + + 0 -1 2664 3.8585590664297342e-03 + + -4.2420830577611923e-02 1.1997900158166885e-01 + <_> + + 0 -1 2665 2.3721279576420784e-03 + + -7.2769053280353546e-02 1.3027629256248474e-01 + <_> + + 0 -1 2666 -3.1968571245670319e-02 + + -4.7088149189949036e-01 1.8863039091229439e-02 + <_> + + 0 -1 2667 -7.2849751450121403e-04 + + 2.8128319978713989e-01 -3.0785139650106430e-02 + <_> + + 0 -1 2668 -1.2096880003809929e-02 + + -7.0163071155548096e-01 1.3336709700524807e-02 + <_> + + 0 -1 2669 -1.7658369615674019e-02 + + 1.9193160533905029e-01 -4.7951001673936844e-02 + <_> + + 0 -1 2670 -1.0974059812724590e-02 + + -2.7307328581809998e-01 2.8784489259123802e-02 + <_> + + 0 -1 2671 -1.8560180440545082e-02 + + -4.4306761026382446e-01 2.0472019910812378e-02 + <_> + + 0 -1 2672 1.3861100189387798e-02 + + -3.7471339106559753e-02 1.0929849743843079e-01 + <_> + + 0 -1 2673 5.6243170052766800e-02 + + 1.3322129845619202e-02 -6.1972159147262573e-01 + <_> + + 0 -1 2674 -1.3746799901127815e-02 + + 1.8980909883975983e-01 -4.3810151517391205e-02 + <_> + + 0 -1 2675 -2.0494889758992940e-04 + + -1.4809520542621613e-01 5.9458550065755844e-02 + <_> + + 0 -1 2676 1.1416030116379261e-02 + + 4.5111801475286484e-02 -1.7277219891548157e-01 + <_> + + 0 -1 2677 4.1169788688421249e-02 + + -2.3442840203642845e-02 3.3413231372833252e-01 + <_> + + 0 -1 2678 -9.6223354339599609e-03 + + -1.6086310148239136e-01 3.3183149993419647e-02 + <_> + + 0 -1 2679 1.5951909590512514e-03 + + -6.3590511679649353e-02 1.3396669924259186e-01 + <_> + + 0 -1 2680 -6.3169049099087715e-03 + + -1.6365319490432739e-01 5.1552049815654755e-02 + <_> + + 0 -1 2681 4.6467378735542297e-02 + + -2.5627709925174713e-02 3.8097569346427917e-01 + <_> + + 0 -1 2682 9.1598592698574066e-02 + + 4.2748241685330868e-03 -5.9740132093429565e-01 + <_> + + 0 -1 2683 -1.0416290024295449e-03 + + -1.4733889698982239e-01 5.5105950683355331e-02 + <_> + + 0 -1 2684 -2.3334469646215439e-02 + + 9.2266462743282318e-02 -5.3653880953788757e-02 + <_> + + 0 -1 2685 -6.3067381270229816e-03 + + -1.6974699497222900e-01 6.0046479105949402e-02 + <_> + + 0 -1 2686 5.2549671381711960e-03 + + -8.8989406824111938e-02 4.7306548804044724e-02 + <_> + + 0 -1 2687 -1.0699460282921791e-02 + + -1.5823520720005035e-01 5.1100831478834152e-02 + <_> + + 0 -1 2688 -5.4387808777391911e-03 + + 1.2524560093879700e-01 -3.9472699165344238e-02 + <_> + + 0 -1 2689 3.4613600000739098e-03 + + -6.8892680108547211e-02 1.7920389771461487e-01 + <_> + + 0 -1 2690 -1.7894359305500984e-02 + + -9.4599656760692596e-02 6.2322728335857391e-02 + <_> + + 0 -1 2691 -2.1147909760475159e-01 + + -8.6275768280029297e-01 9.4653964042663574e-03 + <_> + + 0 -1 2692 1.4149859780445695e-03 + + -8.6214788258075714e-02 4.0635921061038971e-02 + <_> + + 0 -1 2693 -1.5357299707829952e-03 + + 9.9525436758995056e-02 -7.7558159828186035e-02 + <_> + + 0 -1 2694 2.8714749496430159e-03 + + -6.3778772950172424e-02 1.1251030117273331e-01 + <_> + + 0 -1 2695 1.8400069326162338e-02 + + 2.3700669407844543e-02 -3.5953688621520996e-01 + <_> + + 0 -1 2696 -7.3078006505966187e-02 + + -8.3836638927459717e-01 2.1687510889023542e-03 + <_> + + 0 -1 2697 9.8323542624711990e-03 + + -5.3899969905614853e-02 1.6186970472335815e-01 + <_> + + 0 -1 2698 2.2987959906458855e-02 + + 1.5955159440636635e-02 -3.3074310421943665e-01 + <_> + + 0 -1 2699 -5.4363980889320374e-03 + + -1.3372650742530823e-01 5.8162450790405273e-02 + <_> + + 0 -1 2700 1.0177739895880222e-02 + + -5.7901948690414429e-02 4.0789060294628143e-02 + <_> + + 0 -1 2701 -5.1690369844436646e-02 + + 4.7881290316581726e-01 -2.0051179453730583e-02 + <_> + + 0 -1 2702 -4.6395331621170044e-02 + + 3.5422900319099426e-01 -1.6692889854311943e-02 + <_> + + 0 -1 2703 4.0920148603618145e-04 + + -5.8872789144515991e-02 1.3617689907550812e-01 + <_> + + 0 -1 2704 3.0743801034986973e-03 + + 3.1892731785774231e-02 -2.9396781325340271e-01 + <_> + + 0 -1 2705 1.3438959419727325e-01 + + 1.5018840320408344e-02 -5.1557308435440063e-01 + <_> + + 0 -1 2706 -4.4954590499401093e-02 + + -6.5404319763183594e-01 5.8901738375425339e-03 + <_> + + 0 -1 2707 -4.1479051113128662e-02 + + -5.6925541162490845e-01 1.3012220151722431e-02 + <_> + + 0 -1 2708 2.9117099940776825e-02 + + -1.9148029386997223e-02 1.8318380415439606e-01 + <_> + + 0 -1 2709 5.1073249429464340e-02 + + 1.5260309912264347e-02 -4.9480628967285156e-01 + <_> + + 0 -1 2710 7.0886377943679690e-04 + + 8.7698653340339661e-02 -7.3333673179149628e-02 + <_> + + 0 -1 2711 1.1835389770567417e-02 + + -3.9189878851175308e-02 2.0834849774837494e-01 + <_> + + 0 -1 2712 -4.2260489426553249e-03 + + -1.8733769655227661e-01 7.4666850268840790e-02 + <_> + + 0 -1 2713 3.4847799688577652e-02 + + -3.0572960153222084e-02 2.6511108875274658e-01 + <_> + + 0 -1 2714 1.2932980433106422e-02 + + 2.2224349901080132e-02 -2.3204100131988525e-01 + <_> + + 0 -1 2715 -3.4806900657713413e-03 + + 6.0548238456249237e-02 -1.3034850358963013e-01 + <_> + + 0 -1 2716 1.7225079238414764e-02 + + -6.7219920456409454e-03 1.1128149926662445e-01 + <_> + + 0 -1 2717 -2.4316289927810431e-03 + + -1.8720659613609314e-01 4.1284140199422836e-02 + <_> + + 0 -1 2718 -1.1786689981818199e-02 + + 1.5917420387268066e-01 -3.0763400718569756e-02 + <_> + + 0 -1 2719 -5.3132520988583565e-03 + + -1.3786070048809052e-01 5.4246630519628525e-02 + <_> + + 0 -1 2720 -2.0012039691209793e-02 + + 2.9359638690948486e-01 -2.6866350322961807e-02 + <_> + + 0 -1 2721 2.0955558866262436e-03 + + 6.7963063716888428e-02 -1.2520860135555267e-01 + <_> + + 0 -1 2722 -3.9648640900850296e-02 + + -5.8195388317108154e-01 1.3146690092980862e-02 + <_> + + 0 -1 2723 -3.4485850483179092e-02 + + 4.5559158921241760e-01 -1.8659429624676704e-02 + <_> + + 0 -1 2724 -4.4569540768861771e-02 + + -9.2067569494247437e-01 5.3931041620671749e-03 + <_> + + 0 -1 2725 -1.1394550092518330e-03 + + -2.1932439506053925e-01 3.6249380558729172e-02 + <_> + + 0 -1 2726 -3.7044081836938858e-02 + + 1.6192549467086792e-01 -4.7661919146776199e-02 + <_> + + 0 -1 2727 1.9300490617752075e-02 + + -5.4432831704616547e-02 1.4432109892368317e-01 + <_> + + 0 -1 2728 -1.4382150257006288e-03 + + -6.7343980073928833e-02 4.2511381208896637e-02 + <_> + + 0 -1 2729 3.8761008530855179e-02 + + 1.4171930029988289e-02 -5.3382647037506104e-01 + <_> + + 0 -1 2730 -1.5265800058841705e-01 + + -9.1533327102661133e-01 2.1413750946521759e-03 + <_> + + 0 -1 2731 -8.4089813753962517e-03 + + 1.7705249786376953e-01 -4.3753430247306824e-02 + <_> + + 0 -1 2732 -1.6673170030117035e-01 + + -5.6390452384948730e-01 7.5904577970504761e-03 + <_> + + 0 -1 2733 -7.3619261384010315e-03 + + -1.9691839814186096e-01 3.9698500186204910e-02 + <_> + + 0 -1 2734 -9.9920090287923813e-03 + + -1.3419510424137115e-01 6.3489198684692383e-02 + <_> + + 0 -1 2735 -2.2656610235571861e-03 + + 7.9676061868667603e-02 -1.0685960203409195e-01 + <_> + + 0 -1 2736 -1.3868820667266846e-01 + + -4.7306931018829346e-01 1.5354130417108536e-02 + <_> + + 0 -1 2737 -1.3284240663051605e-01 + + -8.7984371185302734e-01 7.0595988072454929e-03 + <_> + + 0 -1 2738 -2.4882299825549126e-02 + + 1.3333520293235779e-01 -4.0933601558208466e-02 + <_> + + 0 -1 2739 -6.6814320161938667e-03 + + -1.0295540094375610e-01 7.4870042502880096e-02 + <_> + + 0 -1 2740 6.0326699167490005e-02 + + 1.3355839997529984e-02 -3.7602999806404114e-01 + <_> + + 0 -1 2741 -8.5582301020622253e-02 + + 2.1200770139694214e-01 -3.8742028176784515e-02 + <_> + + 0 -1 2742 -1.2076400220394135e-02 + + -8.2457520067691803e-02 6.7780442535877228e-02 + <_> + + 0 -1 2743 2.0311089232563972e-02 + + -1.1817990243434906e-01 6.4830578863620758e-02 + <_> + + 0 -1 2744 -3.9900741539895535e-03 + + -1.5723599493503571e-01 5.3033929318189621e-02 + <_> + + 0 -1 2745 -1.4961370034143329e-03 + + 2.4392129480838776e-01 -3.1170839443802834e-02 + <_> + + 0 -1 2746 1.8568099767435342e-04 + + -1.9409550726413727e-01 4.5490209013223648e-02 + <_> + + 0 -1 2747 1.4796480536460876e-01 + + 6.2650348991155624e-03 -9.9987298250198364e-01 + <_> + + 0 -1 2748 1.6918669641017914e-01 + + 4.2962608858942986e-04 -3.5496100783348083e-01 + <_> + + 0 -1 2749 -1.9380000594537705e-04 + + -1.3056799769401550e-01 5.4877169430255890e-02 + <_> + + 0 -1 2750 -6.2729098135605454e-04 + + 4.1053570806980133e-02 -8.3174988627433777e-02 + <_> + + 0 -1 2751 -2.6877908967435360e-03 + + 1.5513989329338074e-01 -5.5573899298906326e-02 + <_> + + 0 -1 2752 -7.6885253190994263e-02 + + -6.1440211534500122e-01 3.2789220567792654e-03 + <_> + + 0 -1 2753 -1.6956549370661378e-04 + + 6.0934148728847504e-02 -1.4717090129852295e-01 + <_> + + 0 -1 2754 3.7390850484371185e-02 + + 8.8595114648342133e-03 -2.3843410611152649e-01 + <_> + + 0 -1 2755 -3.7611280567944050e-03 + + -1.1896059662103653e-01 5.4526679217815399e-02 + <_> + + 0 -1 2756 -7.5538672506809235e-02 + + 1. -2.8170819859951735e-03 + <_> + + 0 -1 2757 5.1163119496777654e-04 + + -1.1333829909563065e-01 6.8293251097202301e-02 + <_> + + 0 -1 2758 -5.4373521357774734e-02 + + 5.6772488355636597e-01 -5.5303489789366722e-03 + <_> + + 0 -1 2759 -1.2200759723782539e-02 + + 2.6310768723487854e-01 -3.5334069281816483e-02 + <_> + + 0 -1 2760 6.5340757369995117e-02 + + 8.2145677879452705e-03 -9.7914510965347290e-01 + <_> + + 0 -1 2761 -9.7028106451034546e-02 + + -7.5845307111740112e-01 6.8704010918736458e-03 + <_> + + 0 -1 2762 -4.9768280237913132e-02 + + -8.0786317586898804e-01 1.3162019895389676e-03 + <_> + + 0 -1 2763 -2.9802118660882115e-04 + + 8.5099622607231140e-02 -9.1054826974868774e-02 + <_> + + 0 -1 2764 1.0124569758772850e-02 + + -8.9172579348087311e-02 7.7402189373970032e-02 + <_> + + 0 -1 2765 8.1574246287345886e-03 + + -6.4016029238700867e-02 1.2462829798460007e-01 + <_> + + 0 -1 2766 -1.2093920260667801e-02 + + -1.8433560431003571e-01 4.9659188836812973e-02 + <_> + + 0 -1 2767 -1.1906909756362438e-02 + + 2.6277810335159302e-01 -2.9921159148216248e-02 + <_> + + 0 -1 2768 -8.1438422203063965e-02 + + -6.4389252662658691e-01 1.7232710495591164e-02 + <_> + + 0 -1 2769 1.4961180277168751e-03 + + -1.2228660285472870e-01 5.7763870805501938e-02 + <_> + + 0 -1 2770 -2.2651249542832375e-02 + + -1.1090759932994843e-01 7.0385642349720001e-02 + <_> + + 0 -1 2771 -2.3789770901203156e-02 + + 2.9644450545310974e-01 -2.5997739285230637e-02 + <_> + + 0 -1 2772 1.4299990143626928e-03 + + -8.9716851711273193e-02 5.6030821055173874e-02 + <_> + + 0 -1 2773 -4.1593458503484726e-02 + + -5.8160471916198730e-01 1.1599930003285408e-02 + <_> + + 0 -1 2774 -2.5586199481040239e-03 + + 6.2241408973932266e-02 -1.1328329890966415e-01 + <_> + + 0 -1 2775 -1.0252290219068527e-01 + + -8.5185718536376953e-01 8.2774916663765907e-03 + <_> + + 0 -1 2776 -3.1799520365893841e-03 + + -1.3918060064315796e-01 5.3719218820333481e-02 + <_> + + 0 -1 2777 -3.9835860952734947e-03 + + 1.5531490743160248e-01 -5.3399000316858292e-02 + <_> + + 0 -1 2778 1.0895960032939911e-02 + + 3.9084900170564651e-02 -2.1268959343433380e-01 + <_> + + 0 -1 2779 1.7865100875496864e-02 + + -2.5146210566163063e-02 3.3581560850143433e-01 + <_> + + 0 -1 2780 5.5075511336326599e-03 + + 2.3314310237765312e-02 -9.3666307628154755e-02 + <_> + + 0 -1 2781 2.0092551130801439e-03 + + 5.7231310755014420e-02 -1.4091749489307404e-01 + <_> + + 0 -1 2782 -1.2218699790537357e-02 + + 1.9243550300598145e-01 -2.4631109088659286e-02 + <_> + + 0 -1 2783 1.8039119895547628e-03 + + 5.5793199688196182e-02 -1.2940339744091034e-01 + <_> + + 0 -1 2784 2.2159840911626816e-02 + + -9.0001197531819344e-03 5.2156221866607666e-01 + <_> + + 0 -1 2785 -3.5827290266752243e-02 + + -6.2905979156494141e-01 1.1712389998137951e-02 + <_> + + 0 -1 2786 8.9478418231010437e-03 + + -3.7455581128597260e-02 1.0906309634447098e-01 + <_> + + 0 -1 2787 -1.2861900031566620e-01 + + -3.9527180790901184e-01 1.8151529133319855e-02 + <_> + + 0 -1 2788 1.8464029999449849e-03 + + -3.3952530473470688e-02 9.6596188843250275e-02 + <_> + + 0 -1 2789 2.8246780857443810e-03 + + -6.2633261084556580e-02 1.1198879778385162e-01 + <_> + + 0 -1 2790 6.9075852632522583e-02 + + 1.3590560294687748e-02 -5.2598261833190918e-01 + <_> + + 0 -1 2791 -8.0794151872396469e-03 + + 1.3081569969654083e-01 -5.0100728869438171e-02 + <_> + + 0 -1 2792 -3.7193649914115667e-03 + + -1.4887580275535583e-01 5.1823489367961884e-02 + <_> + + 0 -1 2793 2.0610638894140720e-03 + + -6.5545938909053802e-02 1.1345130205154419e-01 + <_> + + 0 -1 2794 -6.0795281082391739e-02 + + -7.8219258785247803e-01 4.5540397986769676e-03 + <_> + + 0 -1 2795 -7.3096780106425285e-03 + + -1.9586810469627380e-01 3.5591870546340942e-02 + <_> + + 0 -1 2796 -2.3796008899807930e-03 + + 4.3329920619726181e-02 -6.0119420289993286e-02 + <_> + + 0 -1 2797 -3.7874478846788406e-02 + + 1.6700419783592224e-01 -4.1082471609115601e-02 + <_> + + 0 -1 2798 -1.1011550202965736e-02 + + -7.9715803265571594e-02 3.2247040420770645e-02 + <_> + + 0 -1 2799 -1.5278880018740892e-03 + + 9.7541913390159607e-02 -9.4694830477237701e-02 + <_> + + 0 -1 2800 3.7144418805837631e-02 + + -4.4054100289940834e-03 4.4159731268882751e-01 + <_> + + 0 -1 2801 -4.9948949366807938e-02 + + -8.0400061607360840e-01 9.0302517637610435e-03 + <_> + + 0 -1 2802 -1.8558859825134277e-02 + + 1.8556900322437286e-01 -2.6648480445146561e-02 + <_> + 208 + -1.5900419950485229e+00 + + <_> + + 0 -1 2803 5.9106469154357910e-02 + + -1.9395799934864044e-01 2.7272081375122070e-01 + <_> + + 0 -1 2804 2.6784019544720650e-02 + + -4.2093229293823242e-01 1.2330240011215210e-01 + <_> + + 0 -1 2805 8.6407009512186050e-03 + + -3.0236870050430298e-01 1.3153509795665741e-01 + <_> + + 0 -1 2806 -1.1792869772762060e-03 + + 8.2713536918163300e-02 -3.5140541195869446e-01 + <_> + + 0 -1 2807 -2.2481461055576801e-03 + + -5.1323968172073364e-01 5.4614610970020294e-02 + <_> + + 0 -1 2808 5.7527530007064342e-03 + + -1.9243009388446808e-01 1.3872030377388000e-01 + <_> + + 0 -1 2809 1.0034020058810711e-02 + + 6.0773681849241257e-02 -3.1631371378898621e-01 + <_> + + 0 -1 2810 -3.2057110220193863e-03 + + 1.3471069931983948e-01 -1.6333019733428955e-01 + <_> + + 0 -1 2811 1.3803630135953426e-02 + + 7.4590288102626801e-02 -2.7751418948173523e-01 + <_> + + 0 -1 2812 -1.9213010370731354e-01 + + 2.6890340447425842e-01 -6.6552907228469849e-02 + <_> + + 0 -1 2813 -7.0279821753501892e-02 + + -3.2870158553123474e-01 4.9912039190530777e-02 + <_> + + 0 -1 2814 3.1519670039415359e-02 + + 3.5865701735019684e-02 -5.0489199161529541e-01 + <_> + + 0 -1 2815 -1.1164420284330845e-02 + + -2.7422958612442017e-01 7.3949173092842102e-02 + <_> + + 0 -1 2816 6.1416681855916977e-03 + + -8.7944798171520233e-02 1.5492740273475647e-01 + <_> + + 0 -1 2817 2.5183141231536865e-01 + + -9.3605853617191315e-02 1.8827579915523529e-01 + <_> + + 0 -1 2818 -1.9524399191141129e-02 + + -2.8733500838279724e-01 4.9147769808769226e-02 + <_> + + 0 -1 2819 -2.1689489483833313e-02 + + -3.3415651321411133e-01 4.8450991511344910e-02 + <_> + + 0 -1 2820 3.4099910408258438e-02 + + -1.4776800572872162e-01 1.1322359740734100e-01 + <_> + + 0 -1 2821 -2.0377550274133682e-02 + + -2.9778409004211426e-01 5.6795541197061539e-02 + <_> + + 0 -1 2822 2.3986540734767914e-02 + + -5.5139839649200439e-02 3.5672488808631897e-01 + <_> + + 0 -1 2823 -1.4578890055418015e-02 + + -3.3595868945121765e-01 4.9776330590248108e-02 + <_> + + 0 -1 2824 -5.4530607303604484e-04 + + 1.4906319975852966e-01 -1.2674619257450104e-01 + <_> + + 0 -1 2825 3.0076410621404648e-03 + + -3.8654258847236633e-01 3.7338510155677795e-02 + <_> + + 0 -1 2826 6.1654142336919904e-04 + + 7.0350617170333862e-02 -2.7769538760185242e-01 + <_> + + 0 -1 2827 5.1461078226566315e-02 + + 2.7613859623670578e-02 -4.9107590317726135e-01 + <_> + + 0 -1 2828 5.5607639253139496e-02 + + 2.7626939117908478e-02 -2.9615479707717896e-01 + <_> + + 0 -1 2829 2.9709029942750931e-02 + + 6.5961636602878571e-02 -2.0508719980716705e-01 + <_> + + 0 -1 2830 3.4046828746795654e-02 + + -3.8902580738067627e-02 2.4681000411510468e-01 + <_> + + 0 -1 2831 2.4807849898934364e-02 + + 3.5015519708395004e-02 -4.1401639580726624e-01 + <_> + + 0 -1 2832 4.0748160332441330e-02 + + 4.2967729270458221e-02 -3.2043859362602234e-01 + <_> + + 0 -1 2833 1.0664659552276134e-02 + + 5.6952890008687973e-02 -2.4745999276638031e-01 + <_> + + 0 -1 2834 -6.3090369105339050e-02 + + 1.6899240016937256e-01 -1.8692910671234131e-02 + <_> + + 0 -1 2835 3.4371189773082733e-02 + + -4.7546751797199249e-02 3.2781639695167542e-01 + <_> + + 0 -1 2836 -1.2518119812011719e-01 + + -5.6282979249954224e-01 1.3721459545195103e-02 + <_> + + 0 -1 2837 -2.2273709997534752e-02 + + 2.8452938795089722e-01 -4.7334741801023483e-02 + <_> + + 0 -1 2838 3.1560619827359915e-03 + + 6.7093066871166229e-02 -1.5777610242366791e-01 + <_> + + 0 -1 2839 -8.5235182195901871e-03 + + -4.5404490828514099e-01 3.0238900333642960e-02 + <_> + + 0 -1 2840 9.4529008492827415e-03 + + -5.5023040622472763e-02 1.4025360345840454e-01 + <_> + + 0 -1 2841 -1.5268090181052685e-02 + + -4.1039389371871948e-01 3.3160910010337830e-02 + <_> + + 0 -1 2842 1.0665830224752426e-02 + + -1.1716780066490173e-01 9.5943398773670197e-02 + <_> + + 0 -1 2843 -1.8211569637060165e-02 + + -2.4850100278854370e-01 6.7713633179664612e-02 + <_> + + 0 -1 2844 2.9094598721712828e-04 + + 4.9981009215116501e-02 -2.2298039495944977e-01 + <_> + + 0 -1 2845 1.2524049961939454e-03 + + -2.3567390441894531e-01 6.0058139264583588e-02 + <_> + + 0 -1 2846 -1.0200130194425583e-01 + + 4.6817669272422791e-01 -1.4046870172023773e-02 + <_> + + 0 -1 2847 -5.3803320974111557e-02 + + -3.8875138759613037e-01 3.8533151149749756e-02 + <_> + + 0 -1 2848 3.5919819027185440e-02 + + 1.7687749117612839e-02 -6.3149172067642212e-01 + <_> + + 0 -1 2849 -9.9846003577113152e-03 + + 2.3914399743080139e-01 -5.8490000665187836e-02 + <_> + + 0 -1 2850 2.2157909348607063e-02 + + -4.4814221560955048e-02 1.9423240423202515e-01 + <_> + + 0 -1 2851 -1.4240739867091179e-02 + + -3.7670499086380005e-01 3.4929048269987106e-02 + <_> + + 0 -1 2852 -5.9150479733943939e-02 + + 1.6816680133342743e-01 -3.5232000052928925e-02 + <_> + + 0 -1 2853 3.6074228584766388e-02 + + 2.2868489846587181e-02 -5.7828897237777710e-01 + <_> + + 0 -1 2854 5.7692300528287888e-02 + + -2.1003179252147675e-02 3.0750969052314758e-01 + <_> + + 0 -1 2855 -5.6619398295879364e-02 + + 2.3383679986000061e-01 -5.5003248155117035e-02 + <_> + + 0 -1 2856 -1.0697569698095322e-02 + + -1.3236419856548309e-01 9.1536827385425568e-02 + <_> + + 0 -1 2857 4.2940411367453635e-04 + + 5.2362058311700821e-02 -2.3470179736614227e-01 + <_> + + 0 -1 2858 3.9490307681262493e-03 + + 5.8583620935678482e-02 -8.2533597946166992e-02 + <_> + + 0 -1 2859 2.9810430482029915e-02 + + 7.1684047579765320e-02 -1.6931280493736267e-01 + <_> + + 0 -1 2860 -1.1462910100817680e-02 + + -2.6410359144210815e-01 4.4687580317258835e-02 + <_> + + 0 -1 2861 2.2996390238404274e-02 + + 3.2992180436849594e-02 -3.4358990192413330e-01 + <_> + + 0 -1 2862 -5.6792609393596649e-02 + + -7.5760507583618164e-01 2.4003670550882816e-03 + <_> + + 0 -1 2863 -4.4709402136504650e-03 + + 1.6277609765529633e-01 -6.8193063139915466e-02 + <_> + + 0 -1 2864 -1.2394989840686321e-02 + + -4.3603330850601196e-01 2.8416140004992485e-02 + <_> + + 0 -1 2865 2.9185590147972107e-01 + + -3.3300530165433884e-02 3.9866968989372253e-01 + <_> + + 0 -1 2866 3.3633329439908266e-03 + + -1.0972090065479279e-01 5.6931249797344208e-02 + <_> + + 0 -1 2867 -3.5175260156393051e-02 + + -5.7213717699050903e-01 2.0903490483760834e-02 + <_> + + 0 -1 2868 -1.2044839560985565e-02 + + 9.1090522706508636e-02 -1.1947949975728989e-01 + <_> + + 0 -1 2869 6.5466752275824547e-03 + + 2.2512340545654297e-01 -5.8309450745582581e-02 + <_> + + 0 -1 2870 -3.3635019790381193e-03 + + 8.3123452961444855e-02 -1.6144299507141113e-01 + <_> + + 0 -1 2871 -2.3451250046491623e-02 + + 2.5118809938430786e-01 -4.8030331730842590e-02 + <_> + + 0 -1 2872 1.9356099888682365e-02 + + 5.8134589344263077e-02 -2.0791250467300415e-01 + <_> + + 0 -1 2873 -8.9994952082633972e-02 + + -7.5068491697311401e-01 1.4169859699904919e-02 + <_> + + 0 -1 2874 1.2888260185718536e-02 + + 3.3752571791410446e-02 -2.5715011358261108e-01 + <_> + + 0 -1 2875 1.8961170688271523e-02 + + 3.4717381000518799e-02 -3.6027848720550537e-01 + <_> + + 0 -1 2876 -2.0835550501942635e-02 + + 5.7851308584213257e-01 -2.2111309692263603e-02 + <_> + + 0 -1 2877 1.0018779896199703e-02 + + -3.9775848388671875e-02 2.6814839243888855e-01 + <_> + + 0 -1 2878 -8.7516820058226585e-03 + + 1.1257819831371307e-01 -4.8538278788328171e-02 + <_> + + 0 -1 2879 -6.2366750091314316e-02 + + -6.6089111566543579e-01 1.6852140426635742e-02 + <_> + + 0 -1 2880 -1.9582180306315422e-02 + + -2.1182540059089661e-01 3.5702988505363464e-02 + <_> + + 0 -1 2881 2.2675599902868271e-03 + + 6.1212919652462006e-02 -2.0048849284648895e-01 + <_> + + 0 -1 2882 -4.6558458358049393e-02 + + -5.6454938650131226e-01 9.2866625636816025e-03 + <_> + + 0 -1 2883 -7.7152079902589321e-03 + + 1.5039919316768646e-01 -8.3328150212764740e-02 + <_> + + 0 -1 2884 4.1551668196916580e-02 + + 2.6247739791870117e-02 -3.2347521185874939e-01 + <_> + + 0 -1 2885 -2.1789079532027245e-02 + + -3.2375821471214294e-01 3.1726188957691193e-02 + <_> + + 0 -1 2886 1.9698198884725571e-03 + + -9.2564247548580170e-02 1.0823410004377365e-01 + <_> + + 0 -1 2887 -5.2744988352060318e-03 + + -1.3990330696105957e-01 7.7120877802371979e-02 + <_> + + 0 -1 2888 5.6007660925388336e-02 + + -1.0328499972820282e-01 1.1455559730529785e-01 + <_> + + 0 -1 2889 2.2741030156612396e-01 + + 1.6028450801968575e-02 -6.8145108222961426e-01 + <_> + + 0 -1 2890 5.1362380385398865e-02 + + -2.3025810718536377e-02 1.5446029603481293e-01 + <_> + + 0 -1 2891 -1.3017069548368454e-02 + + -3.2606399059295654e-01 3.2892610877752304e-02 + <_> + + 0 -1 2892 1.5782029926776886e-01 + + -3.9765262044966221e-03 7.7765262126922607e-01 + <_> + + 0 -1 2893 -9.9805086851119995e-02 + + 6.8609541654586792e-01 -1.4648180454969406e-02 + <_> + + 0 -1 2894 3.7506350874900818e-01 + + 1.4925800263881683e-02 -8.3105468750000000e-01 + <_> + + 0 -1 2895 -7.9828302841633558e-04 + + -2.0161899924278259e-01 4.7897689044475555e-02 + <_> + + 0 -1 2896 -2.1241609752178192e-01 + + -3.4409451484680176e-01 1.0950430296361446e-02 + <_> + + 0 -1 2897 3.9451681077480316e-02 + + 1.3966959901154041e-02 -7.2163110971450806e-01 + <_> + + 0 -1 2898 -2.9185509309172630e-02 + + -2.7462458610534668e-01 3.5496920347213745e-02 + <_> + + 0 -1 2899 2.7055600658059120e-02 + + -4.6995740383863449e-02 2.9289430379867554e-01 + <_> + + 0 -1 2900 -2.6052350178360939e-02 + + 2.0752039551734924e-01 -3.6353081464767456e-02 + <_> + + 0 -1 2901 5.7216219604015350e-02 + + 1.8895739689469337e-02 -5.7143908739089966e-01 + <_> + + 0 -1 2902 -1.7151840031147003e-02 + + -3.3009570837020874e-01 3.8528628647327423e-02 + <_> + + 0 -1 2903 -1.2304399907588959e-01 + + -7.8316390514373779e-01 1.1679390445351601e-02 + <_> + + 0 -1 2904 5.6786160916090012e-02 + + 1.1063819751143456e-02 -5.3526097536087036e-01 + <_> + + 0 -1 2905 1.1942840367555618e-01 + + 9.5137851312756538e-03 -9.0637218952178955e-01 + <_> + + 0 -1 2906 6.7707143723964691e-02 + + -3.9227519184350967e-02 2.8176560997962952e-01 + <_> + + 0 -1 2907 -5.4918881505727768e-02 + + -6.2061691284179688e-01 1.6072269529104233e-02 + <_> + + 0 -1 2908 9.2878006398677826e-03 + + -5.0339490175247192e-02 1.9040100276470184e-01 + <_> + + 0 -1 2909 -1.3141489587724209e-02 + + 1.8629829585552216e-01 -7.5528547167778015e-02 + <_> + + 0 -1 2910 2.9876120970584452e-04 + + -1.6163469851016998e-01 5.3589500486850739e-02 + <_> + + 0 -1 2911 1.0153599828481674e-01 + + 1.8458279967308044e-01 -6.2570616602897644e-02 + <_> + + 0 -1 2912 2.7205729484558105e-01 + + 1.3762479647994041e-02 -4.9364060163497925e-01 + <_> + + 0 -1 2913 5.8730211108922958e-02 + + -2.3933680355548859e-01 7.9166807234287262e-02 + <_> + + 0 -1 2914 1.9694259390234947e-02 + + 3.7195280194282532e-02 -2.6109260320663452e-01 + <_> + + 0 -1 2915 -1.0566900164121762e-04 + + 6.7052997648715973e-02 -1.6515819728374481e-01 + <_> + + 0 -1 2916 -1.9761279225349426e-02 + + 8.6443692445755005e-02 -6.8657971918582916e-02 + <_> + + 0 -1 2917 5.3168509155511856e-02 + + 2.9767790809273720e-02 -3.5225778818130493e-01 + <_> + + 0 -1 2918 2.6071069762110710e-02 + + 2.5216359645128250e-02 -1.4159369468688965e-01 + <_> + + 0 -1 2919 -2.8720689937472343e-02 + + 3.5941401124000549e-01 -2.9199620708823204e-02 + <_> + + 0 -1 2920 1.2989250011742115e-02 + + 4.0009770542383194e-02 -1.9973039627075195e-01 + <_> + + 0 -1 2921 -5.8176040649414062e-02 + + 2.9345899820327759e-01 -4.3967530131340027e-02 + <_> + + 0 -1 2922 2.8285140171647072e-02 + + 3.7457428872585297e-02 -3.1361749768257141e-01 + <_> + + 0 -1 2923 4.2701218277215958e-02 + + -2.0987769588828087e-02 5.0845777988433838e-01 + <_> + + 0 -1 2924 2.4763600900769234e-02 + + -1.1869250237941742e-01 9.4457350671291351e-02 + <_> + + 0 -1 2925 -2.8076129965484142e-03 + + -2.3249779641628265e-01 4.5222718268632889e-02 + <_> + + 0 -1 2926 -7.5583919882774353e-02 + + -4.5907029509544373e-01 1.2932280078530312e-02 + <_> + + 0 -1 2927 8.3796821534633636e-02 + + -1.5801630914211273e-02 6.8670481443405151e-01 + <_> + + 0 -1 2928 -3.7072401493787766e-02 + + 5.4146029055118561e-02 -4.2207449674606323e-02 + <_> + + 0 -1 2929 2.4691069498658180e-02 + + 2.6097679510712624e-02 -3.7760400772094727e-01 + <_> + + 0 -1 2930 -2.7743929997086525e-02 + + -7.8631508350372314e-01 4.7534159384667873e-03 + <_> + + 0 -1 2931 1.9119970500469208e-02 + + 2.6497760787606239e-02 -3.6489969491958618e-01 + <_> + + 0 -1 2932 3.3773269969969988e-03 + + 3.1966090202331543e-02 -3.2346761226654053e-01 + <_> + + 0 -1 2933 1.9876819103956223e-02 + + -3.5128418356180191e-02 2.9078298807144165e-01 + <_> + + 0 -1 2934 1.0035640001296997e-01 + + 1.4607840217649937e-02 -5.2812242507934570e-01 + <_> + + 0 -1 2935 -1.6163289546966553e-02 + + -1.0158140212297440e-01 1.1796499788761139e-01 + <_> + + 0 -1 2936 1.0253380052745342e-02 + + 3.6024410277605057e-02 -1.6520780324935913e-01 + <_> + + 0 -1 2937 9.0665705502033234e-03 + + -3.4731701016426086e-02 3.7327200174331665e-01 + <_> + + 0 -1 2938 3.0124900862574577e-02 + + 5.1758479326963425e-02 -2.3582160472869873e-01 + <_> + + 0 -1 2939 -6.6870311275124550e-03 + + 4.3394241482019424e-02 -2.5202989578247070e-01 + <_> + + 0 -1 2940 -2.0257479045540094e-03 + + -1.2479010224342346e-01 3.9309531450271606e-02 + <_> + + 0 -1 2941 2.3254070430994034e-02 + + -4.7446910291910172e-02 2.3287700116634369e-01 + <_> + + 0 -1 2942 2.3867199197411537e-02 + + -2.7421670034527779e-02 1.4630970358848572e-01 + <_> + + 0 -1 2943 -4.0523000061511993e-02 + + -4.0472960472106934e-01 3.0415959656238556e-02 + <_> + + 0 -1 2944 1.9958209991455078e-01 + + 2.2049469873309135e-02 -4.6558481454849243e-01 + <_> + + 0 -1 2945 -1.2990590184926987e-02 + + -1.7970620095729828e-01 5.8874938637018204e-02 + <_> + + 0 -1 2946 2.5623949244618416e-02 + + 9.9402610212564468e-03 -2.6575279235839844e-01 + <_> + + 0 -1 2947 -3.2004870474338531e-02 + + 2.5087380409240723e-01 -4.6291470527648926e-02 + <_> + + 0 -1 2948 1.8758419901132584e-02 + + -2.2038230672478676e-02 9.4407431781291962e-02 + <_> + + 0 -1 2949 4.5425668358802795e-02 + + 2.3371569812297821e-02 -4.8393398523330688e-01 + <_> + + 0 -1 2950 1.5670580789446831e-02 + + -5.5109858512878418e-02 1.9907830655574799e-01 + <_> + + 0 -1 2951 5.1336981356143951e-02 + + 2.6425419375300407e-02 -4.4082790613174438e-01 + <_> + + 0 -1 2952 4.0884170681238174e-02 + + 2.0071209967136383e-01 -3.4887779504060745e-02 + <_> + + 0 -1 2953 6.9165557622909546e-02 + + -2.9303310438990593e-02 3.4936821460723877e-01 + <_> + + 0 -1 2954 4.7967158257961273e-02 + + -2.4416960775852203e-02 2.7018651366233826e-01 + <_> + + 0 -1 2955 4.4068440794944763e-02 + + -4.0497269481420517e-02 2.4382269382476807e-01 + <_> + + 0 -1 2956 -1.0287550091743469e-01 + + 7.1105289459228516e-01 -9.9055245518684387e-03 + <_> + + 0 -1 2957 2.2407740354537964e-01 + + -5.4946999996900558e-02 1.9853439927101135e-01 + <_> + + 0 -1 2958 -9.6570551395416260e-03 + + -2.5050228834152222e-01 3.7410989403724670e-02 + <_> + + 0 -1 2959 7.9199701547622681e-02 + + -2.2147569805383682e-02 4.8771071434020996e-01 + <_> + + 0 -1 2960 4.5983199030160904e-02 + + 8.2229733467102051e-02 -3.9335750043392181e-02 + <_> + + 0 -1 2961 4.2670449614524841e-01 + + 1.7132800072431564e-02 -5.3996258974075317e-01 + <_> + + 0 -1 2962 1.5413990616798401e-01 + + 1.1902350001037121e-02 -6.8533718585968018e-01 + <_> + + 0 -1 2963 -1.7699889838695526e-01 + + -6.3113832473754883e-01 1.2545200064778328e-02 + <_> + + 0 -1 2964 -2.3769829422235489e-02 + + -1.4281429350376129e-01 1.4284349977970123e-02 + <_> + + 0 -1 2965 -8.3290286362171173e-02 + + 3.6433398723602295e-01 -2.5287430733442307e-02 + <_> + + 0 -1 2966 -3.0276349280029535e-03 + + -1.7501260340213776e-01 3.5528600215911865e-02 + <_> + + 0 -1 2967 9.3518232461065054e-04 + + -3.4317269921302795e-01 2.8196020051836967e-02 + <_> + + 0 -1 2968 8.6792530491948128e-03 + + 9.1854788362979889e-02 -1.1349800229072571e-01 + <_> + + 0 -1 2969 -4.3289531022310257e-03 + + 7.6560527086257935e-02 -1.2850379943847656e-01 + <_> + + 0 -1 2970 6.1485089361667633e-02 + + 4.0065501816570759e-03 -4.2798730731010437e-01 + <_> + + 0 -1 2971 -2.3108569905161858e-02 + + -3.2999789714813232e-01 3.1228100880980492e-02 + <_> + + 0 -1 2972 -6.3490739557892084e-04 + + 5.3318761289119720e-02 -6.0307938605546951e-02 + <_> + + 0 -1 2973 -4.1278889402747154e-03 + + 1.5029670298099518e-01 -8.9805796742439270e-02 + <_> + + 0 -1 2974 1.5408970415592194e-01 + + -2.3309229873120785e-03 9.6946477890014648e-01 + <_> + + 0 -1 2975 1.8083740025758743e-02 + + -4.6674519777297974e-02 2.1941949427127838e-01 + <_> + + 0 -1 2976 -6.0022968798875809e-02 + + 3.7283098697662354e-01 -1.3637940399348736e-02 + <_> + + 0 -1 2977 -1.6025049984455109e-01 + + 3.9442360401153564e-01 -2.4808609858155251e-02 + <_> + + 0 -1 2978 -2.3220200091600418e-02 + + -2.8352069854736328e-01 3.8456469774246216e-02 + <_> + + 0 -1 2979 3.2353829592466354e-02 + + 3.0197540298104286e-02 -3.5371699929237366e-01 + <_> + + 0 -1 2980 -1.2930749915540218e-02 + + -1.8275280296802521e-01 4.0219429880380630e-02 + <_> + + 0 -1 2981 -2.9022840317338705e-03 + + 5.7583440095186234e-02 -1.8175080418586731e-01 + <_> + + 0 -1 2982 3.7042409181594849e-02 + + 2.3471569642424583e-02 -3.7222048640251160e-01 + <_> + + 0 -1 2983 -1.4371460676193237e-01 + + -6.7353278398513794e-01 1.3768459670245647e-02 + <_> + + 0 -1 2984 -1.0714099742472172e-02 + + 2.3074600100517273e-01 -5.9898581355810165e-02 + <_> + + 0 -1 2985 1.1370699852705002e-02 + + -5.5859100073575974e-02 2.1604159474372864e-01 + <_> + + 0 -1 2986 -3.3829350024461746e-02 + + -3.2868561148643494e-01 1.6743719577789307e-02 + <_> + + 0 -1 2987 3.6406058818101883e-02 + + 2.3512810468673706e-02 -4.7999539971351624e-01 + <_> + + 0 -1 2988 -3.9853308349847794e-02 + + 3.0388408899307251e-01 -2.2388210520148277e-02 + <_> + + 0 -1 2989 2.3857640102505684e-02 + + -4.3960139155387878e-02 2.5021830201148987e-01 + <_> + + 0 -1 2990 -8.6149327456951141e-02 + + -9.2641222476959229e-01 1.0180849581956863e-02 + <_> + + 0 -1 2991 -2.7360459789633751e-02 + + -4.5331078767776489e-01 1.8517250195145607e-02 + <_> + + 0 -1 2992 4.6891667880117893e-03 + + 1.4983110129833221e-02 -9.8690867424011230e-02 + <_> + + 0 -1 2993 3.6140959709882736e-02 + + 2.1240329369902611e-02 -4.2275610566139221e-01 + <_> + + 0 -1 2994 1.0714419931173325e-01 + + -4.1592169553041458e-02 2.4880869686603546e-01 + <_> + + 0 -1 2995 -1.2024450115859509e-02 + + -1.8906030058860779e-01 5.5290900170803070e-02 + <_> + + 0 -1 2996 2.1671090275049210e-02 + + -3.7164088338613510e-02 2.9896330833435059e-01 + <_> + + 0 -1 2997 -3.3205719664692879e-03 + + -9.1837689280509949e-02 1.1810839921236038e-01 + <_> + + 0 -1 2998 -8.4256403148174286e-02 + + -5.4935282468795776e-01 4.6934271231293678e-03 + <_> + + 0 -1 2999 -2.7107410132884979e-03 + + 5.2301179617643356e-02 -2.1932560205459595e-01 + <_> + + 0 -1 3000 -1.9661630503833294e-03 + + 6.9522850215435028e-02 -1.2369599938392639e-01 + <_> + + 0 -1 3001 1.0835859924554825e-01 + + -1.6028439626097679e-02 6.7538297176361084e-01 + <_> + + 0 -1 3002 -4.0661569684743881e-02 + + 2.8239870071411133e-01 -1.8643079325556755e-02 + <_> + + 0 -1 3003 9.4869043678045273e-03 + + -1.4204730093479156e-01 7.4218176305294037e-02 + <_> + + 0 -1 3004 -8.1196203827857971e-03 + + 1.2733109295368195e-01 -7.5325429439544678e-02 + <_> + + 0 -1 3005 -3.6718908697366714e-02 + + 2.5209701061248779e-01 -3.8642361760139465e-02 + <_> + + 0 -1 3006 4.2515851557254791e-02 + + 3.4613508731126785e-02 -3.1406149268150330e-01 + <_> + + 0 -1 3007 -1.6484249383211136e-02 + + -3.4622931480407715e-01 2.6470340788364410e-02 + <_> + + 0 -1 3008 1.8608599901199341e-02 + + 3.1125839799642563e-02 -2.3837919533252716e-01 + <_> + + 0 -1 3009 -1.0872060433030128e-02 + + 2.3061220347881317e-01 -4.3469380587339401e-02 + <_> + + 0 -1 3010 -4.0728081017732620e-02 + + 1.3258880376815796e-01 -3.8833290338516235e-02 + <_> + 240 + -1.3404430150985718e+00 + + <_> + + 0 -1 3011 2.7802670374512672e-02 + + -1.8535159528255463e-01 2.3777860403060913e-01 + <_> + + 0 -1 3012 1.6392730176448822e-03 + + -2.6787629723548889e-01 1.1733309924602509e-01 + <_> + + 0 -1 3013 -3.0419689137488604e-03 + + 1.9552859663963318e-01 -1.3240019977092743e-01 + <_> + + 0 -1 3014 -2.7744288672693074e-04 + + 6.0701820999383926e-02 -3.0465421080589294e-01 + <_> + + 0 -1 3015 -2.7942769229412079e-03 + + -2.5370940566062927e-01 7.6147846877574921e-02 + <_> + + 0 -1 3016 7.4005699716508389e-03 + + 6.5623492002487183e-02 -3.0128520727157593e-01 + <_> + + 0 -1 3017 1.1316470336169004e-03 + + -1.3232930004596710e-01 1.3622519373893738e-01 + <_> + + 0 -1 3018 -8.7306648492813110e-03 + + -1.0246229916810989e-01 1.0649880394339561e-02 + <_> + + 0 -1 3019 -6.4327879808843136e-03 + + -2.1301789581775665e-01 7.7425397932529449e-02 + <_> + + 0 -1 3020 -1.3303949963301420e-03 + + 9.6234247088432312e-02 -1.7086009681224823e-01 + <_> + + 0 -1 3021 -2.3770590778440237e-03 + + 1.1657089740037918e-01 -1.5135769546031952e-01 + <_> + + 0 -1 3022 -5.3865360096096992e-03 + + -1.6851960122585297e-01 4.4324558228254318e-02 + <_> + + 0 -1 3023 -5.6973858736455441e-03 + + -2.4702399969100952e-01 7.7735342085361481e-02 + <_> + + 0 -1 3024 4.5654520392417908e-02 + + -1.6687670722603798e-02 1.4222119748592377e-01 + <_> + + 0 -1 3025 -1.4929420103726443e-05 + + -3.2725390791893005e-01 4.8142101615667343e-02 + <_> + + 0 -1 3026 -1.7635900294408202e-03 + + 7.0115849375724792e-02 -1.6864499077200890e-02 + <_> + + 0 -1 3027 1.9133860478177667e-03 + + -1.9570820033550262e-01 9.0169131755828857e-02 + <_> + + 0 -1 3028 -1.9309469498693943e-03 + + 1.1824289709329605e-01 -1.2146709859371185e-01 + <_> + + 0 -1 3029 9.7775761969387531e-04 + + 1.1657200008630753e-01 -1.2770849466323853e-01 + <_> + + 0 -1 3030 -5.2643800154328346e-03 + + 1.9958360493183136e-01 -6.2928676605224609e-02 + <_> + + 0 -1 3031 -2.2730689961463213e-03 + + -2.1804699301719666e-01 6.6565290093421936e-02 + <_> + + 0 -1 3032 -3.5128789022564888e-03 + + 8.1114247441291809e-02 -1.4230330288410187e-01 + <_> + + 0 -1 3033 2.8102330397814512e-03 + + 6.0884710401296616e-02 -2.2008429467678070e-01 + <_> + + 0 -1 3034 -2.3211359977722168e-02 + + 2.3182259500026703e-01 -3.4014280885457993e-02 + <_> + + 0 -1 3035 -8.7068388238549232e-03 + + -2.0691269636154175e-01 6.8004116415977478e-02 + <_> + + 0 -1 3036 7.0584798231720924e-03 + + -1.0500799864530563e-01 1.2610189616680145e-01 + <_> + + 0 -1 3037 -6.8878240883350372e-02 + + 4.2687618732452393e-01 -3.1305618584156036e-02 + <_> + + 0 -1 3038 -1.2785149738192558e-02 + + -2.0268030464649200e-01 3.2005790621042252e-02 + <_> + + 0 -1 3039 -4.2242300696671009e-03 + + -2.1619689464569092e-01 7.5660832226276398e-02 + <_> + + 0 -1 3040 -4.1660640388727188e-02 + + 3.5601380467414856e-01 -3.6500900983810425e-02 + <_> + + 0 -1 3041 1.4983239583671093e-02 + + 3.3663559705018997e-02 -4.3016681075096130e-01 + <_> + + 0 -1 3042 1.8940219888463616e-03 + + -7.7785640954971313e-02 1.4130039513111115e-01 + <_> + + 0 -1 3043 -1.0271830251440406e-03 + + 6.1292048543691635e-02 -1.8569129705429077e-01 + <_> + + 0 -1 3044 -1.0491760447621346e-02 + + -2.1280039846897125e-01 4.6641569584608078e-02 + <_> + + 0 -1 3045 4.1263508610427380e-03 + + -6.3113473355770111e-02 2.1683399379253387e-01 + <_> + + 0 -1 3046 2.1284529939293861e-02 + + -1.9541380926966667e-02 4.0555500984191895e-01 + <_> + + 0 -1 3047 6.0370927676558495e-03 + + 6.1322800815105438e-02 -1.7558750510215759e-01 + <_> + + 0 -1 3048 2.8550080023705959e-03 + + -3.7402968853712082e-02 8.6794376373291016e-02 + <_> + + 0 -1 3049 -3.0839299783110619e-02 + + 4.5826399326324463e-01 -2.2824319079518318e-02 + <_> + + 0 -1 3050 -1.2664640322327614e-02 + + -1.5179179608821869e-01 3.8325909525156021e-02 + <_> + + 0 -1 3051 8.4788333624601364e-03 + + -7.9164452850818634e-02 1.3821309804916382e-01 + <_> + + 0 -1 3052 -9.0271160006523132e-03 + + 2.0483429729938507e-01 -5.8428239077329636e-02 + <_> + + 0 -1 3053 -5.3999028168618679e-03 + + -1.9563870131969452e-01 6.2881819903850555e-02 + <_> + + 0 -1 3054 4.8698568716645241e-03 + + 4.7269448637962341e-02 -2.0357230305671692e-01 + <_> + + 0 -1 3055 -5.6715728715062141e-03 + + 1.6232620179653168e-01 -7.2473183274269104e-02 + <_> + + 0 -1 3056 -6.3621107256039977e-04 + + -1.7648829519748688e-01 6.1553929001092911e-02 + <_> + + 0 -1 3057 -5.7404721155762672e-03 + + -2.3773890733718872e-01 4.8493091017007828e-02 + <_> + + 0 -1 3058 2.3313059937208891e-03 + + -9.8087467253208160e-02 7.6705731451511383e-02 + <_> + + 0 -1 3059 2.6579289697110653e-03 + + -1.0429590195417404e-01 1.3275440037250519e-01 + <_> + + 0 -1 3060 -1.2426489964127541e-02 + + -1.7686119675636292e-01 7.8797861933708191e-02 + <_> + + 0 -1 3061 3.7596069741994143e-03 + + 5.8028500527143478e-02 -2.0235699415206909e-01 + <_> + + 0 -1 3062 -1.3941819779574871e-02 + + 2.9365628957748413e-01 -3.1069029122591019e-02 + <_> + + 0 -1 3063 2.4605529382824898e-02 + + -4.9767840653657913e-02 2.0446600019931793e-01 + <_> + + 0 -1 3064 1.1572279781103134e-01 + + 5.7542040012776852e-03 -5.5789208412170410e-01 + <_> + + 0 -1 3065 1.4880299568176270e-03 + + -1.2870499491691589e-01 8.6191363632678986e-02 + <_> + + 0 -1 3066 -1.0085869580507278e-02 + + -1.8718029558658600e-01 2.7143789455294609e-02 + <_> + + 0 -1 3067 -4.0125781670212746e-03 + + -1.4843569695949554e-01 6.1482351273298264e-02 + <_> + + 0 -1 3068 4.5241288840770721e-02 + + -2.2187199443578720e-02 4.9022749066352844e-01 + <_> + + 0 -1 3069 -5.4588477360084653e-04 + + 1.0740750283002853e-01 -9.4784751534461975e-02 + <_> + + 0 -1 3070 1.0822109878063202e-02 + + -1.1820139735937119e-01 8.4009647369384766e-02 + <_> + + 0 -1 3071 6.4339267555624247e-04 + + -1.1072149872779846e-01 8.4126397967338562e-02 + <_> + + 0 -1 3072 9.3544989824295044e-02 + + 6.1726439744234085e-03 -3.8121530413627625e-01 + <_> + + 0 -1 3073 -3.9214221760630608e-03 + + 1.2969920039176941e-01 -7.5530029833316803e-02 + <_> + + 0 -1 3074 -4.5141312293708324e-03 + + -2.1222509443759918e-01 5.0941351801156998e-02 + <_> + + 0 -1 3075 5.1563870161771774e-02 + + 1.1215999722480774e-02 -8.4125047922134399e-01 + <_> + + 0 -1 3076 -3.7086829543113708e-02 + + -3.3443790674209595e-01 1.2198350392282009e-02 + <_> + + 0 -1 3077 -1.5274320030584931e-03 + + 1.7022849619388580e-01 -5.3171109408140182e-02 + <_> + + 0 -1 3078 -3.3183719497174025e-03 + + 1.4972689747810364e-01 -3.9522700011730194e-02 + <_> + + 0 -1 3079 -1.0695139877498150e-02 + + -2.0767690241336823e-01 4.8223540186882019e-02 + <_> + + 0 -1 3080 8.0909933894872665e-03 + + -5.5572569370269775e-02 8.1361941993236542e-02 + <_> + + 0 -1 3081 8.9193560415878892e-04 + + -1.4888229966163635e-01 5.6974019855260849e-02 + <_> + + 0 -1 3082 2.1180939802434295e-04 + + -1.8776890635490417e-01 4.5087080448865891e-02 + <_> + + 0 -1 3083 6.8865409120917320e-03 + + -7.4651539325714111e-02 1.1806459724903107e-01 + <_> + + 0 -1 3084 3.8009819388389587e-01 + + 9.6241412684321404e-03 -5.0257128477096558e-01 + <_> + + 0 -1 3085 9.4844900071620941e-02 + + 2.0284110680222511e-02 -3.9478880167007446e-01 + <_> + + 0 -1 3086 -1.1133160296594724e-04 + + 5.3717028349637985e-02 -1.5433239936828613e-01 + <_> + + 0 -1 3087 3.5911630839109421e-02 + + -2.4374049156904221e-02 3.5077759623527527e-01 + <_> + + 0 -1 3088 -2.9291780665516853e-02 + + -4.9002739787101746e-01 2.1694840863347054e-02 + <_> + + 0 -1 3089 -2.4277189746499062e-02 + + -5.0206911563873291e-01 1.5807420015335083e-02 + <_> + + 0 -1 3090 1.2620110064744949e-02 + + -4.8637848347425461e-02 2.1370050311088562e-01 + <_> + + 0 -1 3091 -4.1045118123292923e-03 + + -1.6757939755916595e-01 6.2675923109054565e-02 + <_> + + 0 -1 3092 -2.3477169871330261e-01 + + 6.2205511331558228e-01 -1.3949319720268250e-02 + <_> + + 0 -1 3093 -6.7914247512817383e-02 + + -9.7014141082763672e-01 1.0490460321307182e-02 + <_> + + 0 -1 3094 1.4207609929144382e-03 + + -6.0801118612289429e-02 1.3500739634037018e-01 + <_> + + 0 -1 3095 -5.0894408486783504e-03 + + -1.6992169618606567e-01 5.0795670598745346e-02 + <_> + + 0 -1 3096 -1.9226800650358200e-02 + + 9.8861172795295715e-02 -3.3686220645904541e-02 + <_> + + 0 -1 3097 1.0590540245175362e-02 + + 5.9616900980472565e-02 -1.6495449841022491e-01 + <_> + + 0 -1 3098 3.3726880792528391e-03 + + -3.8652341812849045e-02 5.5400568991899490e-02 + <_> + + 0 -1 3099 -8.9012801647186279e-02 + + 4.0750509500503540e-01 -2.4150330573320389e-02 + <_> + + 0 -1 3100 -2.3359079658985138e-01 + + -7.2641909122467041e-01 6.5185138955712318e-03 + <_> + + 0 -1 3101 -2.2732259333133698e-01 + + -8.9977008104324341e-01 9.1146891936659813e-03 + <_> + + 0 -1 3102 -2.9601769521832466e-02 + + -4.3270850181579590e-01 1.6021190211176872e-02 + <_> + + 0 -1 3103 -6.9494689814746380e-03 + + 1.5218999981880188e-01 -6.1896830797195435e-02 + <_> + + 0 -1 3104 -1.9150479929521680e-03 + + 7.2570547461509705e-02 -1.3121089339256287e-01 + <_> + + 0 -1 3105 8.5106380283832550e-03 + + -5.7326089590787888e-02 1.5743100643157959e-01 + <_> + + 0 -1 3106 -2.4363139644265175e-02 + + 9.5700822770595551e-02 -5.8364428579807281e-02 + <_> + + 0 -1 3107 -2.2522659972310066e-02 + + -4.6943131089210510e-01 2.0241359248757362e-02 + <_> + + 0 -1 3108 -4.4660381972789764e-03 + + 7.6211109757423401e-02 -8.1844657659530640e-02 + <_> + + 0 -1 3109 -4.2101819999516010e-03 + + -2.2083589434623718e-01 4.7010198235511780e-02 + <_> + + 0 -1 3110 5.7130381464958191e-03 + + -6.2254000455141068e-02 5.2705820649862289e-02 + <_> + + 0 -1 3111 -5.6021669879555702e-03 + + -1.8985760211944580e-01 5.0114821642637253e-02 + <_> + + 0 -1 3112 -2.2042069584131241e-02 + + 8.7683752179145813e-02 -2.4777179583907127e-02 + <_> + + 0 -1 3113 -2.1817081142216921e-03 + + 1.6766600310802460e-01 -6.6771760582923889e-02 + <_> + + 0 -1 3114 2.4545300751924515e-02 + + 4.9205120652914047e-02 -2.2503720223903656e-01 + <_> + + 0 -1 3115 -2.4728688877075911e-03 + + 1.3539670407772064e-01 -6.2330130487680435e-02 + <_> + + 0 -1 3116 2.3717728909105062e-03 + + 5.7926058769226074e-02 -1.3325250148773193e-01 + <_> + + 0 -1 3117 -3.8999661803245544e-02 + + 2.9875481128692627e-01 -3.0257239937782288e-02 + <_> + + 0 -1 3118 -1.7835620092228055e-03 + + 9.2680282890796661e-02 -7.4350588023662567e-02 + <_> + + 0 -1 3119 1.9984450191259384e-02 + + 2.2409349679946899e-02 -4.1501939296722412e-01 + <_> + + 0 -1 3120 4.1170548647642136e-03 + + 5.3432278335094452e-02 -1.5092259645462036e-01 + <_> + + 0 -1 3121 4.3995600193738937e-02 + + 1.1389889754354954e-02 -6.6494518518447876e-01 + <_> + + 0 -1 3122 -3.5350578837096691e-03 + + 1.1005590111017227e-01 -7.6377056539058685e-02 + <_> + + 0 -1 3123 1.4632029924541712e-03 + + -5.6962151080369949e-02 1.3184599578380585e-01 + <_> + + 0 -1 3124 -4.9925539642572403e-03 + + -1.4675070345401764e-01 5.5129978805780411e-02 + <_> + + 0 -1 3125 -7.8646428883075714e-02 + + -5.2768182754516602e-01 1.3662739656865597e-02 + <_> + + 0 -1 3126 -4.3559111654758453e-03 + + 9.1798119246959686e-02 -5.7598169893026352e-02 + <_> + + 0 -1 3127 8.2531487569212914e-03 + + -6.5613977611064911e-02 1.3083070516586304e-01 + <_> + + 0 -1 3128 -3.5033349413424730e-03 + + -1.2742599844932556e-01 6.0875169932842255e-02 + <_> + + 0 -1 3129 3.9662471972405910e-03 + + -5.5715151131153107e-02 1.4783249795436859e-01 + <_> + + 0 -1 3130 -1.0260219685733318e-02 + + -1.3472290337085724e-01 4.4514350593090057e-02 + <_> + + 0 -1 3131 3.6724930396303535e-04 + + -1.3727700710296631e-01 6.1179649084806442e-02 + <_> + + 0 -1 3132 1.9500199705362320e-02 + + -5.9033330529928207e-02 1.5589320659637451e-01 + <_> + + 0 -1 3133 1.4041420072317123e-02 + + 2.2140439599752426e-02 -4.2831090092658997e-01 + <_> + + 0 -1 3134 3.8459740579128265e-02 + + 1.6875730827450752e-02 -5.2425742149353027e-01 + <_> + + 0 -1 3135 -2.5901539251208305e-02 + + 2.5163099169731140e-01 -3.2579511404037476e-02 + <_> + + 0 -1 3136 2.8264479711651802e-02 + + 2.1297719329595566e-02 -2.3978309333324432e-01 + <_> + + 0 -1 3137 -5.3067881613969803e-02 + + 7.6594692468643188e-01 -1.0163240134716034e-02 + <_> + + 0 -1 3138 1.6842440236359835e-03 + + 4.0168728679418564e-02 -2.1810980141162872e-01 + <_> + + 0 -1 3139 6.5255112713202834e-04 + + -3.2155249267816544e-02 2.6028048992156982e-01 + <_> + + 0 -1 3140 -1.5381099283695221e-01 + + -7.9570180177688599e-01 9.9420538172125816e-03 + <_> + + 0 -1 3141 -1.7530319746583700e-04 + + 6.1257161200046539e-02 -1.1830890178680420e-01 + <_> + + 0 -1 3142 1.1829809518530965e-03 + + -8.2589529454708099e-02 5.8234758675098419e-02 + <_> + + 0 -1 3143 1.4753890223801136e-02 + + 4.6728778630495071e-02 -1.9874340295791626e-01 + <_> + + 0 -1 3144 1.0592579841613770e-02 + + -5.7157158851623535e-02 1.2261729687452316e-01 + <_> + + 0 -1 3145 -4.6638969331979752e-02 + + 3.9221999049186707e-01 -1.8770450726151466e-02 + <_> + + 0 -1 3146 -2.2761020809412003e-03 + + -1.9819819927215576e-01 3.2669950276613235e-02 + <_> + + 0 -1 3147 -8.9252636826131493e-05 + + -1.7795699834823608e-01 4.5088160783052444e-02 + <_> + + 0 -1 3148 -4.8888921737670898e-03 + + 3.7973329424858093e-01 -2.5622500106692314e-02 + <_> + + 0 -1 3149 -4.7039450146257877e-03 + + -1.4075440168380737e-01 5.1885869354009628e-02 + <_> + + 0 -1 3150 6.8887867964804173e-03 + + -6.0707900673151016e-02 6.7318782210350037e-02 + <_> + + 0 -1 3151 9.4449967145919800e-02 + + -4.3975159525871277e-02 1.6885830461978912e-01 + <_> + + 0 -1 3152 5.1520671695470810e-02 + + 3.8239071145653725e-03 -6.3077712059020996e-01 + <_> + + 0 -1 3153 6.3957129605114460e-03 + + 4.4094309210777283e-02 -1.8156020343303680e-01 + <_> + + 0 -1 3154 -4.9659270793199539e-02 + + 1.1174239963293076e-01 -5.5821210145950317e-02 + <_> + + 0 -1 3155 -6.9081829860806465e-03 + + -1.4038950204849243e-01 5.9535760432481766e-02 + <_> + + 0 -1 3156 9.2546567320823669e-03 + + -3.3587910234928131e-02 5.8593101799488068e-02 + <_> + + 0 -1 3157 5.0454521551728249e-03 + + 5.3777661174535751e-02 -1.3626030087471008e-01 + <_> + + 0 -1 3158 -3.3333420753479004e-02 + + 2.4641269445419312e-01 -3.1888678669929504e-02 + <_> + + 0 -1 3159 6.1201080679893494e-02 + + 2.0013030618429184e-02 -3.9326569437980652e-01 + <_> + + 0 -1 3160 -1.0175120085477829e-02 + + 7.5324602425098419e-02 -3.9622548967599869e-02 + <_> + + 0 -1 3161 1.0271370410919189e-02 + + -5.2234519273042679e-02 1.7939470708370209e-01 + <_> + + 0 -1 3162 -5.1337860524654388e-02 + + -3.1097239255905151e-01 2.1656470373272896e-02 + <_> + + 0 -1 3163 2.3615739773958921e-03 + + -6.4843319356441498e-02 1.1771979928016663e-01 + <_> + + 0 -1 3164 -2.7691819705069065e-03 + + 1.4682589471340179e-01 -5.7794518768787384e-02 + <_> + + 0 -1 3165 2.1457809954881668e-02 + + 2.5269350036978722e-02 -3.3404821157455444e-01 + <_> + + 0 -1 3166 -5.9619098901748657e-03 + + 9.9241338670253754e-02 -3.5371959209442139e-02 + <_> + + 0 -1 3167 7.5217390060424805e-01 + + 7.7095897868275642e-03 -8.6434108018875122e-01 + <_> + + 0 -1 3168 -9.2514551943168044e-04 + + 3.8251910358667374e-02 -7.5597628951072693e-02 + <_> + + 0 -1 3169 4.0818289853632450e-03 + + 6.6699139773845673e-02 -1.1289499700069427e-01 + <_> + + 0 -1 3170 1.6256010159850121e-02 + + -1.8782900646328926e-02 1.8875749409198761e-01 + <_> + + 0 -1 3171 -9.3405954539775848e-03 + + -1.6462349891662598e-01 4.6859718859195709e-02 + <_> + + 0 -1 3172 -3.8136378861963749e-04 + + 6.0498170554637909e-02 -1.0089360177516937e-01 + <_> + + 0 -1 3173 -2.3470960557460785e-02 + + 1.8546760082244873e-01 -3.9577301591634750e-02 + <_> + + 0 -1 3174 -7.8684352338314056e-02 + + -6.0540008544921875e-01 1.3162979856133461e-02 + <_> + + 0 -1 3175 1.0616140067577362e-01 + + 9.4080185517668724e-03 -7.2416877746582031e-01 + <_> + + 0 -1 3176 -6.9211378693580627e-02 + + -9.2819648981094360e-01 5.4140980355441570e-03 + <_> + + 0 -1 3177 -4.3828289955854416e-02 + + 5.4933768510818481e-01 -1.5516829676926136e-02 + <_> + + 0 -1 3178 5.6881271302700043e-03 + + 3.7328861653804779e-02 -1.2019480019807816e-01 + <_> + + 0 -1 3179 3.6933881044387817e-01 + + -9.9545158445835114e-03 8.1607538461685181e-01 + <_> + + 0 -1 3180 -1.0447519831359386e-02 + + 1.4190499484539032e-01 -4.9798399209976196e-02 + <_> + + 0 -1 3181 1.5151320025324821e-02 + + 2.2705320268869400e-02 -3.4523698687553406e-01 + <_> + + 0 -1 3182 1.2503850460052490e-01 + + -2.7150910347700119e-02 3.0379050970077515e-01 + <_> + + 0 -1 3183 -9.1995187103748322e-03 + + -1.7020559310913086e-01 4.4314298778772354e-02 + <_> + + 0 -1 3184 7.1795531548559666e-03 + + -7.8971788287162781e-02 6.3919156789779663e-02 + <_> + + 0 -1 3185 -1.8217830359935760e-01 + + -9.7598892450332642e-01 7.1003441698849201e-03 + <_> + + 0 -1 3186 1.5047369743115269e-05 + + -9.8960377275943756e-02 3.9371099323034286e-02 + <_> + + 0 -1 3187 -3.8763400167226791e-02 + + -5.9095138311386108e-01 1.0429039597511292e-02 + <_> + + 0 -1 3188 -4.3799880892038345e-02 + + 2.5290209054946899e-01 -9.5704924315214157e-03 + <_> + + 0 -1 3189 -5.6705519556999207e-02 + + -7.2466772794723511e-01 9.0332692489027977e-03 + <_> + + 0 -1 3190 7.5183928012847900e-02 + + -6.7565650679171085e-03 7.3075437545776367e-01 + <_> + + 0 -1 3191 -6.4183590002357960e-03 + + 8.5421830415725708e-02 -7.6056882739067078e-02 + <_> + + 0 -1 3192 1.3349299551919103e-03 + + 6.9977663457393646e-02 -9.2187918722629547e-02 + <_> + + 0 -1 3193 2.8028399683535099e-03 + + -5.0953198224306107e-02 1.2934680283069611e-01 + <_> + + 0 -1 3194 -6.4196899533271790e-02 + + -6.1751341819763184e-01 8.7323756888508797e-03 + <_> + + 0 -1 3195 1.7879910301417112e-03 + + -5.9445429593324661e-02 1.1325009912252426e-01 + <_> + + 0 -1 3196 2.3370790295302868e-03 + + 2.2643320262432098e-02 -1.7427070438861847e-01 + <_> + + 0 -1 3197 2.1500359289348125e-03 + + -5.1846258342266083e-02 1.5027989447116852e-01 + <_> + + 0 -1 3198 -2.9744949191808701e-02 + + -1.7235560715198517e-01 1.6160540282726288e-02 + <_> + + 0 -1 3199 -2.9182229191064835e-03 + + -1.1646019667387009e-01 5.3380940109491348e-02 + <_> + + 0 -1 3200 -5.2581899799406528e-03 + + -8.4262102842330933e-02 3.6880351603031158e-02 + <_> + + 0 -1 3201 2.0302489399909973e-02 + + -5.3297229111194611e-02 1.6949890553951263e-01 + <_> + + 0 -1 3202 3.1120770145207644e-03 + + 4.4630430638790131e-02 -1.4054660499095917e-01 + <_> + + 0 -1 3203 -7.7524736523628235e-02 + + -6.5038281679153442e-01 1.0468889959156513e-02 + <_> + + 0 -1 3204 2.0978450775146484e-02 + + -3.0001569539308548e-02 1.9233350455760956e-01 + <_> + + 0 -1 3205 2.0581670105457306e-03 + + 5.1535431295633316e-02 -1.3114020228385925e-01 + <_> + + 0 -1 3206 -7.8407032415270805e-03 + + -1.3882939517498016e-01 5.0657931715250015e-02 + <_> + + 0 -1 3207 -7.1894749999046326e-02 + + 2.1866980195045471e-01 -3.3615190535783768e-02 + <_> + + 0 -1 3208 1.4218500256538391e-01 + + 1.2880220077931881e-02 -5.8853518962860107e-01 + <_> + + 0 -1 3209 4.4800378382205963e-03 + + -5.5522039532661438e-02 1.1976230144500732e-01 + <_> + + 0 -1 3210 -9.4673000276088715e-03 + + -1.2036380171775818e-01 3.0232360586524010e-02 + <_> + + 0 -1 3211 -1.2275399640202522e-03 + + 8.3563826978206635e-02 -8.7046720087528229e-02 + <_> + + 0 -1 3212 -6.2556960619986057e-03 + + 6.9355137646198273e-02 -3.5146340727806091e-02 + <_> + + 0 -1 3213 6.4953900873661041e-02 + + -1.9296510145068169e-02 3.4898158907890320e-01 + <_> + + 0 -1 3214 -3.2067541033029556e-03 + + -1.5205690264701843e-01 5.5897928774356842e-02 + <_> + + 0 -1 3215 -4.8260089010000229e-02 + + -6.0309630632400513e-01 1.0463859885931015e-02 + <_> + + 0 -1 3216 -4.2638331651687622e-03 + + -1.5278290212154388e-01 1.8424319103360176e-02 + <_> + + 0 -1 3217 4.9363691359758377e-02 + + -2.5442009791731834e-02 3.9227759838104248e-01 + <_> + + 0 -1 3218 2.3624610621482134e-03 + + 3.8519620895385742e-01 -1.7071360722184181e-02 + <_> + + 0 -1 3219 2.5921489577740431e-03 + + -1.5459729731082916e-01 4.3975789099931717e-02 + <_> + + 0 -1 3220 1.1510170064866543e-02 + + 6.0740210115909576e-02 -9.8671890795230865e-02 + <_> + + 0 -1 3221 3.9182868786156178e-03 + + 2.6165749877691269e-02 -2.9697629809379578e-01 + <_> + + 0 -1 3222 7.3265641927719116e-02 + + 5.5715530179440975e-03 -3.0474159121513367e-01 + <_> + + 0 -1 3223 -4.8912810161709785e-03 + + 1.2753780186176300e-01 -6.6236838698387146e-02 + <_> + + 0 -1 3224 -1.3187030330300331e-02 + + -2.0257690548896790e-01 3.0369829386472702e-02 + <_> + + 0 -1 3225 1.8196239834651351e-03 + + 4.9198139458894730e-02 -1.3782709836959839e-01 + <_> + + 0 -1 3226 -1.0299400426447392e-02 + + 1.3534359633922577e-01 -2.9193470254540443e-02 + <_> + + 0 -1 3227 1.7157079279422760e-01 + + -9.5548974350094795e-03 7.1399718523025513e-01 + <_> + + 0 -1 3228 -3.4571110736578703e-03 + + 6.1094630509614944e-02 -7.6816998422145844e-02 + <_> + + 0 -1 3229 3.3349241130053997e-04 + + -1.8768610060214996e-01 3.9411719888448715e-02 + <_> + + 0 -1 3230 5.6019209325313568e-02 + + 8.5914824157953262e-03 -7.3577058315277100e-01 + <_> + + 0 -1 3231 6.2299368437379599e-04 + + -9.4062000513076782e-02 6.7965887486934662e-02 + <_> + + 0 -1 3232 -1.4288679696619511e-02 + + 2.4144929647445679e-01 -2.7025459334254265e-02 + <_> + + 0 -1 3233 -9.9114552140235901e-03 + + -1.5346029400825500e-01 5.3243361413478851e-02 + <_> + + 0 -1 3234 -7.0727966725826263e-02 + + -7.1243101358413696e-01 7.4889077804982662e-03 + <_> + + 0 -1 3235 1.6112169250845909e-02 + + -3.5437509417533875e-02 2.2026020288467407e-01 + <_> + + 0 -1 3236 2.9938609804958105e-03 + + 1.1530820280313492e-02 -9.2017240822315216e-02 + <_> + + 0 -1 3237 1.4030840247869492e-03 + + 5.4302141070365906e-02 -1.1777610331773758e-01 + <_> + + 0 -1 3238 -8.9894913136959076e-02 + + -6.7658591270446777e-01 1.5741019742563367e-03 + <_> + + 0 -1 3239 2.7459259144961834e-03 + + 2.9860800132155418e-02 -2.2091430425643921e-01 + <_> + + 0 -1 3240 2.2225940600037575e-02 + + -4.6592909842729568e-02 8.0418691039085388e-02 + <_> + + 0 -1 3241 4.4512529857456684e-03 + + 1.0706499963998795e-01 -6.5101496875286102e-02 + <_> + + 0 -1 3242 -2.1191150881350040e-03 + + 3.9871860295534134e-02 -5.2555959671735764e-02 + <_> + + 0 -1 3243 1.0229589790105820e-01 + + 1.3386270031332970e-02 -4.5546561479568481e-01 + <_> + + 0 -1 3244 -6.8260570988059044e-03 + + 1.2695349752902985e-01 -5.9704031795263290e-02 + <_> + + 0 -1 3245 -5.6890580803155899e-02 + + 4.0180799365043640e-01 -1.6048269346356392e-02 + <_> + + 0 -1 3246 -1.8590029329061508e-02 + + -4.0374109148979187e-01 1.3502580113708973e-02 + <_> + + 0 -1 3247 3.3882200717926025e-02 + + 7.8824451193213463e-03 -7.9268622398376465e-01 + <_> + + 0 -1 3248 1.8759339582175016e-03 + + -3.4521240741014481e-02 1.8177880346775055e-01 + <_> + + 0 -1 3249 1.5652549918740988e-03 + + 4.8419889062643051e-02 -1.5185169875621796e-01 + <_> + + 0 -1 3250 3.9563868194818497e-03 + + -4.2162090539932251e-02 7.8943721950054169e-02 + <_> + 199 + -1.4275209903717041e+00 + + <_> + + 0 -1 3251 8.8487491011619568e-02 + + -2.2935929894447327e-01 2.4001109600067139e-01 + <_> + + 0 -1 3252 4.3344359844923019e-02 + + -1.9927449524402618e-01 2.0298740267753601e-01 + <_> + + 0 -1 3253 1.5985079109668732e-02 + + -1.9890889525413513e-01 1.9233879446983337e-01 + <_> + + 0 -1 3254 9.8411232233047485e-02 + + -9.4830892980098724e-02 2.4474050104618073e-01 + <_> + + 0 -1 3255 1.0079979896545410e-02 + + -4.8000910878181458e-01 5.9808451682329178e-02 + <_> + + 0 -1 3256 6.2629938125610352e-02 + + -1.5902659296989441e-01 1.5163069963455200e-01 + <_> + + 0 -1 3257 1.3623869977891445e-02 + + -2.7451339364051819e-01 9.0433366596698761e-02 + <_> + + 0 -1 3258 -3.8067731074988842e-03 + + -2.9342180490493774e-01 7.3020830750465393e-02 + <_> + + 0 -1 3259 -1.4649610035121441e-02 + + 2.6059079170227051e-01 -9.5248378813266754e-02 + <_> + + 0 -1 3260 -4.9288192531093955e-04 + + 5.9352219104766846e-02 -2.8081470727920532e-01 + <_> + + 0 -1 3261 -5.1220930181443691e-03 + + -2.4218030273914337e-01 8.1701509654521942e-02 + <_> + + 0 -1 3262 3.3120220177806914e-04 + + -4.0093910694122314e-01 3.4026090055704117e-02 + <_> + + 0 -1 3263 -7.4724480509757996e-04 + + 6.0560788959264755e-02 -2.9127869009971619e-01 + <_> + + 0 -1 3264 4.8829670995473862e-02 + + -7.2298422455787659e-02 2.6132971048355103e-01 + <_> + + 0 -1 3265 2.6994010433554649e-02 + + 9.5457129180431366e-02 -2.6758649945259094e-01 + <_> + + 0 -1 3266 -2.1151660475879908e-03 + + -2.5773069262504578e-01 5.3247869014739990e-02 + <_> + + 0 -1 3267 2.2652999177807942e-05 + + -3.0092310905456543e-01 5.9096790850162506e-02 + <_> + + 0 -1 3268 1.1034930124878883e-02 + + -7.4277937412261963e-02 1.9048790633678436e-01 + <_> + + 0 -1 3269 -1.0275219567120075e-02 + + -3.2835999131202698e-01 4.9218688160181046e-02 + <_> + + 0 -1 3270 -8.3319991827011108e-03 + + -2.9651468992233276e-01 3.9428789168596268e-02 + <_> + + 0 -1 3271 5.0808671861886978e-02 + + -4.7661241143941879e-02 3.7404251098632812e-01 + <_> + + 0 -1 3272 -1.2126479996368289e-03 + + -1.2148889899253845e-01 6.5059438347816467e-02 + <_> + + 0 -1 3273 4.1254470124840736e-03 + + -1.4912040531635284e-01 1.1146119982004166e-01 + <_> + + 0 -1 3274 -1.8284359946846962e-02 + + -2.8573518991470337e-01 5.9268131852149963e-02 + <_> + + 0 -1 3275 1.4156280457973480e-01 + + -3.4436151385307312e-02 4.6374419331550598e-01 + <_> + + 0 -1 3276 -3.6982420831918716e-02 + + -5.0853198766708374e-01 2.5087080895900726e-02 + <_> + + 0 -1 3277 5.0303530879318714e-03 + + 9.4626903533935547e-02 -1.6120310127735138e-01 + <_> + + 0 -1 3278 -4.6149080991744995e-01 + + 4.5096570253372192e-01 -3.1209290027618408e-02 + <_> + + 0 -1 3279 -1.9794689491391182e-02 + + -4.1046530008316040e-01 3.8790289312601089e-02 + <_> + + 0 -1 3280 -2.3872030898928642e-02 + + -1.5252740681171417e-01 9.2825219035148621e-03 + <_> + + 0 -1 3281 1.8736299825832248e-03 + + -1.9186599552631378e-01 6.9048486649990082e-02 + <_> + + 0 -1 3282 5.8244299143552780e-02 + + -2.2612230852246284e-02 2.1975080668926239e-01 + <_> + + 0 -1 3283 1.5281150117516518e-02 + + 5.6379750370979309e-02 -2.4171100556850433e-01 + <_> + + 0 -1 3284 1.3347120583057404e-01 + + -4.1846349835395813e-02 1.3641799986362457e-01 + <_> + + 0 -1 3285 -1.8359240144491196e-02 + + 1.3650700449943542e-01 -1.0537090152502060e-01 + <_> + + 0 -1 3286 -1.1236529797315598e-02 + + -2.1045160293579102e-01 6.1872761696577072e-02 + <_> + + 0 -1 3287 -7.2013743221759796e-02 + + -3.8488849997520447e-01 3.6731179803609848e-02 + <_> + + 0 -1 3288 -1.9893420860171318e-02 + + 1.9913719594478607e-01 -5.4470948874950409e-02 + <_> + + 0 -1 3289 -8.1342989578843117e-03 + + -2.7529388666152954e-01 4.7152820974588394e-02 + <_> + + 0 -1 3290 -1.3614459894597530e-02 + + 1.9248710572719574e-01 -6.0025930404663086e-02 + <_> + + 0 -1 3291 -6.4553669653832912e-03 + + -2.1480080485343933e-01 6.2654919922351837e-02 + <_> + + 0 -1 3292 -7.2288706898689270e-02 + + -5.3200727701187134e-01 2.2132480517029762e-02 + <_> + + 0 -1 3293 -7.0425979793071747e-02 + + -3.2588490843772888e-01 3.7150900810956955e-02 + <_> + + 0 -1 3294 -1.2219670228660107e-02 + + -6.5945722162723541e-02 2.8728110715746880e-02 + <_> + + 0 -1 3295 6.9816941395401955e-03 + + -2.8508388996124268e-01 4.2512468993663788e-02 + <_> + + 0 -1 3296 -2.1437550894916058e-03 + + -1.0019320249557495e-01 7.1198999881744385e-02 + <_> + + 0 -1 3297 -1.5813990030437708e-03 + + -1.2926709651947021e-01 9.5332272350788116e-02 + <_> + + 0 -1 3298 2.1735160771640949e-05 + + -1.9246159493923187e-01 5.3724698722362518e-02 + <_> + + 0 -1 3299 -1.0075280070304871e-01 + + 5.8181059360504150e-01 -2.1155519410967827e-02 + <_> + + 0 -1 3300 8.0153037561103702e-04 + + -1.6752170026302338e-01 6.1912689357995987e-02 + <_> + + 0 -1 3301 -1.3424370437860489e-02 + + 1.7007820308208466e-01 -6.5821729600429535e-02 + <_> + + 0 -1 3302 2.5006510317325592e-02 + + 3.1838789582252502e-02 -3.5664460062980652e-01 + <_> + + 0 -1 3303 -2.3061310872435570e-02 + + -5.3446078300476074e-01 2.0500430837273598e-02 + <_> + + 0 -1 3304 -8.1409228732809424e-04 + + 7.3716811835765839e-02 -9.8385728895664215e-02 + <_> + + 0 -1 3305 -1.3083440251648426e-02 + + 2.3585100471973419e-01 -4.7893758863210678e-02 + <_> + + 0 -1 3306 1.0480909608304501e-02 + + -6.7725770175457001e-02 1.1783230304718018e-01 + <_> + + 0 -1 3307 -4.3198268860578537e-02 + + -4.3816858530044556e-01 2.5101570412516594e-02 + <_> + + 0 -1 3308 -3.2453269232064486e-03 + + -2.2451759874820709e-01 4.3056890368461609e-02 + <_> + + 0 -1 3309 -1.6294110100716352e-03 + + -2.3388780653476715e-01 4.5073401182889938e-02 + <_> + + 0 -1 3310 -3.2911408692598343e-02 + + 2.1012680232524872e-01 -2.1296700462698936e-02 + <_> + + 0 -1 3311 1.4785619896429125e-05 + + -7.0854157209396362e-02 1.4696949720382690e-01 + <_> + + 0 -1 3312 -6.0208540409803391e-02 + + -5.2135831117630005e-01 1.9577400758862495e-02 + <_> + + 0 -1 3313 1.1327289976179600e-03 + + 4.4817470014095306e-02 -2.4390450119972229e-01 + <_> + + 0 -1 3314 8.3639882504940033e-03 + + -5.6976079940795898e-02 1.1684290319681168e-01 + <_> + + 0 -1 3315 1.4313389547169209e-02 + + 4.7445211559534073e-02 -2.2202989459037781e-01 + <_> + + 0 -1 3316 -1.1530060321092606e-01 + + 8.6662977933883667e-01 -4.2397230863571167e-03 + <_> + + 0 -1 3317 -2.0798090845346451e-02 + + 2.8666529059410095e-01 -4.0919508785009384e-02 + <_> + + 0 -1 3318 -1.8268700689077377e-02 + + 1.3087140023708344e-01 -4.5348200947046280e-02 + <_> + + 0 -1 3319 -2.5494489073753357e-01 + + -3.2410839200019836e-01 4.0496330708265305e-02 + <_> + + 0 -1 3320 -2.1786570549011230e-02 + + 3.3126661181449890e-01 -3.7021800875663757e-02 + <_> + + 0 -1 3321 4.2743898928165436e-02 + + 3.2316859811544418e-02 -3.5259619355201721e-01 + <_> + + 0 -1 3322 3.4730590879917145e-02 + + 3.4049548208713531e-02 -2.1393370628356934e-01 + <_> + + 0 -1 3323 -8.8458160462323576e-05 + + -3.1134480237960815e-01 3.9364520460367203e-02 + <_> + + 0 -1 3324 2.2288469970226288e-01 + + -8.7889749556779861e-03 8.6566871404647827e-01 + <_> + + 0 -1 3325 2.7045139670372009e-01 + + -5.2694901823997498e-02 1.8746510148048401e-01 + <_> + + 0 -1 3326 -2.4789940565824509e-02 + + 2.7650299668312073e-01 -2.7306249365210533e-02 + <_> + + 0 -1 3327 -3.5731170326471329e-02 + + 4.1157469153404236e-01 -2.2886089980602264e-02 + <_> + + 0 -1 3328 4.7842580825090408e-02 + + 2.2989360615611076e-02 -4.1287249326705933e-01 + <_> + + 0 -1 3329 -3.1846091151237488e-02 + + 3.8073039054870605e-01 -2.9582230374217033e-02 + <_> + + 0 -1 3330 -6.9219218567013741e-03 + + -1.3741379976272583e-01 4.8710118979215622e-02 + <_> + + 0 -1 3331 4.1339758783578873e-02 + + 4.4119630008935928e-02 -2.3561610281467438e-01 + <_> + + 0 -1 3332 -3.4157071262598038e-02 + + -2.4877929687500000e-01 1.1872059665620327e-02 + <_> + + 0 -1 3333 -1.2198990210890770e-02 + + -2.1426199376583099e-01 5.1533300429582596e-02 + <_> + + 0 -1 3334 -7.9321218654513359e-03 + + 8.1553332507610321e-02 -6.9921717047691345e-02 + <_> + + 0 -1 3335 -4.2665388435125351e-02 + + -5.0616562366485596e-01 1.9237969070672989e-02 + <_> + + 0 -1 3336 3.5445880144834518e-02 + + -1.6394840553402901e-02 1.7057849466800690e-01 + <_> + + 0 -1 3337 4.5686280727386475e-01 + + 1.9264170899987221e-02 -5.4413592815399170e-01 + <_> + + 0 -1 3338 3.1118420884013176e-02 + + -3.0776979401707649e-02 1.3581100106239319e-01 + <_> + + 0 -1 3339 -1.6103679314255714e-02 + + 2.1244280040264130e-01 -4.8341780900955200e-02 + <_> + + 0 -1 3340 5.7916441000998020e-03 + + -7.3984377086162567e-02 3.5749029368162155e-02 + <_> + + 0 -1 3341 -6.5660297870635986e-02 + + 2.6183378696441650e-01 -4.1004821658134460e-02 + <_> + + 0 -1 3342 8.1464983522891998e-02 + + 1.2928999960422516e-02 -3.5362771153450012e-01 + <_> + + 0 -1 3343 1.2561170384287834e-02 + + -1.9108769297599792e-01 6.9965943694114685e-02 + <_> + + 0 -1 3344 7.8783802688121796e-02 + + -5.4801939986646175e-03 3.9217329025268555e-01 + <_> + + 0 -1 3345 3.3984828740358353e-02 + + 8.4328763186931610e-02 -1.2477640062570572e-01 + <_> + + 0 -1 3346 1.7718339338898659e-02 + + 4.4793829321861267e-02 -1.9760879874229431e-01 + <_> + + 0 -1 3347 -9.8835285753011703e-03 + + -1.5149329602718353e-01 6.7348048090934753e-02 + <_> + + 0 -1 3348 2.3850230500102043e-02 + + -3.3219821751117706e-02 1.6131630539894104e-01 + <_> + + 0 -1 3349 -3.9590701460838318e-02 + + 3.9903929829597473e-01 -2.8885990381240845e-02 + <_> + + 0 -1 3350 3.4961920231580734e-02 + + 2.2103229537606239e-02 -5.2885407209396362e-01 + <_> + + 0 -1 3351 9.4825841486454010e-02 + + 9.5985615625977516e-03 -8.2035672664642334e-01 + <_> + + 0 -1 3352 -1.0215540230274200e-01 + + -2.0551559329032898e-01 3.0388559680432081e-03 + <_> + + 0 -1 3353 -9.3128867447376251e-03 + + 3.6827068775892258e-02 -2.4656419456005096e-01 + <_> + + 0 -1 3354 -5.4135788232088089e-03 + + -2.3878090083599091e-01 4.1015189141035080e-02 + <_> + + 0 -1 3355 -2.6281980797648430e-02 + + 2.7853861451148987e-01 -3.6868080496788025e-02 + <_> + + 0 -1 3356 -9.9223516881465912e-03 + + -2.5322121381759644e-01 3.3522550016641617e-02 + <_> + + 0 -1 3357 -1.7109709978103638e-01 + + -2.9404911398887634e-01 3.2432679086923599e-02 + <_> + + 0 -1 3358 -8.7599586695432663e-03 + + 6.8787500262260437e-02 -1.0647170245647430e-01 + <_> + + 0 -1 3359 1.2942530214786530e-01 + + 1.3241300359368324e-02 -6.8923670053482056e-01 + <_> + + 0 -1 3360 -4.7723919153213501e-02 + + 2.2214810550212860e-01 -2.8517080470919609e-02 + <_> + + 0 -1 3361 1.0812310129404068e-01 + + 1.1902020312845707e-02 -7.7915120124816895e-01 + <_> + + 0 -1 3362 -2.7494689449667931e-02 + + -3.0192640423774719e-01 2.8540210798382759e-02 + <_> + + 0 -1 3363 -4.9534138292074203e-02 + + -3.0015140771865845e-01 3.1750950962305069e-02 + <_> + + 0 -1 3364 -1.0358350351452827e-02 + + 1.2287119776010513e-01 -3.9123039692640305e-02 + <_> + + 0 -1 3365 -3.2705869525671005e-02 + + -3.3354911208152771e-01 2.7965290471911430e-02 + <_> + + 0 -1 3366 -1.3580479659140110e-02 + + 1.1192899942398071e-01 -4.9471028149127960e-02 + <_> + + 0 -1 3367 5.5075851269066334e-03 + + -1.3118129968643188e-01 6.9403477013111115e-02 + <_> + + 0 -1 3368 7.5508110225200653e-02 + + -2.9019629582762718e-02 3.9413800835609436e-01 + <_> + + 0 -1 3369 5.6811410933732986e-02 + + 2.6788659393787384e-02 -4.1989549994468689e-01 + <_> + + 0 -1 3370 5.0004580989480019e-03 + + 4.6239160001277924e-02 -6.7620649933815002e-02 + <_> + + 0 -1 3371 1.9717490300536156e-02 + + -6.0402508825063705e-02 1.6632139682769775e-01 + <_> + + 0 -1 3372 -6.4729452133178711e-02 + + -5.2484118938446045e-01 2.7922600507736206e-02 + <_> + + 0 -1 3373 -3.0683130025863647e-02 + + 2.1945460140705109e-01 -4.8111628741025925e-02 + <_> + + 0 -1 3374 8.1467535346746445e-03 + + 6.0279220342636108e-02 -1.1600890010595322e-01 + <_> + + 0 -1 3375 7.9492190852761269e-03 + + 8.3563491702079773e-02 -1.6053000092506409e-01 + <_> + + 0 -1 3376 -2.2406199946999550e-02 + + 2.8271418809890747e-01 -2.8184479102492332e-02 + <_> + + 0 -1 3377 8.2993790507316589e-02 + + 1.0475059971213341e-02 -9.6875292062759399e-01 + <_> + + 0 -1 3378 -7.0176632143557072e-03 + + -1.3753229379653931e-01 6.8205498158931732e-02 + <_> + + 0 -1 3379 -9.7560193389654160e-03 + + -1.3707080483436584e-01 7.2890587151050568e-02 + <_> + + 0 -1 3380 -5.2217379212379456e-02 + + -6.4300441741943359e-01 1.4492220245301723e-02 + <_> + + 0 -1 3381 -7.8029942233115435e-04 + + -2.6479271054267883e-01 3.3517841249704361e-02 + <_> + + 0 -1 3382 3.7919931113719940e-02 + + -8.4846787154674530e-02 1.1260589957237244e-01 + <_> + + 0 -1 3383 3.0561289750039577e-03 + + 4.8086941242218018e-02 -1.9009250402450562e-01 + <_> + + 0 -1 3384 6.5862268209457397e-02 + + -5.2452040836215019e-03 9.1280621290206909e-01 + <_> + + 0 -1 3385 1.5568210184574127e-01 + + 2.0884050056338310e-02 -4.9580439925193787e-01 + <_> + + 0 -1 3386 -1.9058469915762544e-03 + + 1.8305900692939758e-01 -4.9756310880184174e-02 + <_> + + 0 -1 3387 -9.8356999456882477e-02 + + 4.8020449280738831e-01 -2.0384309813380241e-02 + <_> + + 0 -1 3388 4.2754490859806538e-03 + + 4.0095929056406021e-02 -1.4071129262447357e-01 + <_> + + 0 -1 3389 -1.4033010229468346e-02 + + -2.0791560411453247e-01 5.2576299756765366e-02 + <_> + + 0 -1 3390 8.0179408192634583e-02 + + -2.5790559127926826e-02 3.7651219964027405e-01 + <_> + + 0 -1 3391 1.8175759911537170e-01 + + 1.1428649537265301e-02 -8.3382111787796021e-01 + <_> + + 0 -1 3392 -1.9141690805554390e-02 + + -5.0522857904434204e-01 1.2605519965291023e-02 + <_> + + 0 -1 3393 -5.1260828971862793e-02 + + 5.8292531967163086e-01 -1.6109749674797058e-02 + <_> + + 0 -1 3394 6.4478136599063873e-02 + + 1.0237329639494419e-02 -6.0302352905273438e-01 + <_> + + 0 -1 3395 3.1238300725817680e-02 + + 2.0845850929617882e-02 -3.9785829186439514e-01 + <_> + + 0 -1 3396 -5.0772321410477161e-03 + + 1.2331540137529373e-01 -3.5224981606006622e-02 + <_> + + 0 -1 3397 -1.9385579507797956e-03 + + 1.5726689994335175e-01 -7.3316320776939392e-02 + <_> + + 0 -1 3398 2.4099789559841156e-02 + + -1.1178609728813171e-01 1.0738980025053024e-01 + <_> + + 0 -1 3399 -8.8700000196695328e-03 + + -3.6048200726509094e-01 2.7034249156713486e-02 + <_> + + 0 -1 3400 -3.7424121052026749e-02 + + -3.5229408740997314e-01 1.6786530613899231e-02 + <_> + + 0 -1 3401 -2.0067069679498672e-02 + + -2.7460938692092896e-01 3.9532590657472610e-02 + <_> + + 0 -1 3402 6.5169870853424072e-02 + + 1.1402159929275513e-02 -2.4819959700107574e-01 + <_> + + 0 -1 3403 3.8157470524311066e-02 + + 4.6323310583829880e-02 -2.0989510416984558e-01 + <_> + + 0 -1 3404 1.1075180023908615e-02 + + 3.4411158412694931e-02 -5.1256500184535980e-02 + <_> + + 0 -1 3405 1.1583480238914490e-01 + + 4.2282830923795700e-02 -2.1705499291419983e-01 + <_> + + 0 -1 3406 -4.6720780432224274e-02 + + 2.3093520104885101e-01 -8.3234477788209915e-03 + <_> + + 0 -1 3407 1.2567450106143951e-01 + + -4.9882501363754272e-02 2.1018449962139130e-01 + <_> + + 0 -1 3408 1.8088010256178677e-04 + + -1.1836589872837067e-01 8.4278896450996399e-02 + <_> + + 0 -1 3409 1.0470690205693245e-02 + + -8.6210608482360840e-02 1.1760850250720978e-01 + <_> + + 0 -1 3410 5.8065719902515411e-02 + + 1.5582700259983540e-02 -7.4217921495437622e-01 + <_> + + 0 -1 3411 2.2783069871366024e-03 + + -1.9151380658149719e-01 4.7990638762712479e-02 + <_> + + 0 -1 3412 -6.9596558809280396e-02 + + -7.3241692781448364e-01 1.1130559723824263e-03 + <_> + + 0 -1 3413 5.8907870203256607e-02 + + 1.6878390684723854e-02 -5.4400408267974854e-01 + <_> + + 0 -1 3414 -8.0658823251724243e-02 + + 2.9922959208488464e-01 -1.8570570275187492e-02 + <_> + + 0 -1 3415 1.7686929553747177e-02 + + 4.2936161160469055e-02 -2.2591550648212433e-01 + <_> + + 0 -1 3416 -1.6319070011377335e-02 + + 1.8889640271663666e-01 -4.7047398984432220e-02 + <_> + + 0 -1 3417 -3.9527568966150284e-02 + + -3.2657331228256226e-01 2.8762219473719597e-02 + <_> + + 0 -1 3418 1.9769819919019938e-03 + + -8.8217496871948242e-02 5.7402729988098145e-02 + <_> + + 0 -1 3419 -3.0272029340267181e-02 + + -5.1177912950515747e-01 1.7359249293804169e-02 + <_> + + 0 -1 3420 5.3786419332027435e-02 + + 1.2071570381522179e-02 -4.0201959013938904e-01 + <_> + + 0 -1 3421 -9.4136483967304230e-03 + + 2.4728150665760040e-01 -3.6734741181135178e-02 + <_> + + 0 -1 3422 -5.9014528989791870e-02 + + -1.3277289271354675e-01 1.5220739878714085e-02 + <_> + + 0 -1 3423 8.9417606592178345e-02 + + -2.5917148590087891e-01 3.7563629448413849e-02 + <_> + + 0 -1 3424 -8.7996140122413635e-02 + + 4.9200880527496338e-01 -2.1210839971899986e-02 + <_> + + 0 -1 3425 -5.0747569650411606e-02 + + -4.8567768931388855e-01 2.0005319267511368e-02 + <_> + + 0 -1 3426 -3.8918260484933853e-02 + + -8.9558547735214233e-01 7.8960238024592400e-03 + <_> + + 0 -1 3427 2.0968139171600342e-02 + + -5.4431710392236710e-02 1.6123360395431519e-01 + <_> + + 0 -1 3428 -3.2103069126605988e-02 + + -3.6822700500488281e-01 1.9163349643349648e-02 + <_> + + 0 -1 3429 5.5592609569430351e-03 + + 7.8368440270423889e-02 -1.1842489987611771e-01 + <_> + + 0 -1 3430 5.9554249048233032e-02 + + -5.2290938794612885e-02 3.6194879561662674e-02 + <_> + + 0 -1 3431 -1.0973160155117512e-02 + + 1.5855990350246429e-01 -5.5804491043090820e-02 + <_> + + 0 -1 3432 -1.1934650130569935e-02 + + -2.5717508792877197e-01 3.2829850912094116e-02 + <_> + + 0 -1 3433 6.0441631823778152e-02 + + -3.8720801472663879e-02 2.2971870005130768e-01 + <_> + + 0 -1 3434 -8.2118069985881448e-04 + + 6.9738790392875671e-02 -1.5992000699043274e-01 + <_> + + 0 -1 3435 2.0469389855861664e-02 + + -8.4349267184734344e-02 1.0139500349760056e-01 + <_> + + 0 -1 3436 -7.6305761933326721e-02 + + 8.3174228668212891e-01 -5.0806580111384392e-03 + <_> + + 0 -1 3437 6.0551889240741730e-02 + + -3.7971161305904388e-02 2.1850149333477020e-01 + <_> + + 0 -1 3438 -4.1085779666900635e-03 + + -1.1496649682521820e-01 3.6647479981184006e-02 + <_> + + 0 -1 3439 1.2399969622492790e-02 + + 6.2838301062583923e-02 -1.4144660532474518e-01 + <_> + + 0 -1 3440 -7.1455702185630798e-02 + + -4.2673790454864502e-01 1.3947109691798687e-02 + <_> + + 0 -1 3441 3.3709030598402023e-02 + + -1.2713599950075150e-02 7.4775099754333496e-01 + <_> + + 0 -1 3442 3.4742768853902817e-02 + + 2.0969500765204430e-02 -1.4630280435085297e-01 + <_> + + 0 -1 3443 -4.3705299496650696e-02 + + 1.8064750730991364e-01 -5.2335180342197418e-02 + <_> + + 0 -1 3444 8.4926873445510864e-02 + + 6.9014527834951878e-03 -2.6073959469795227e-01 + <_> + + 0 -1 3445 -1.7119079828262329e-02 + + -1.4590080082416534e-01 6.7484676837921143e-02 + <_> + + 0 -1 3446 3.3630719780921936e-01 + + 7.8989071771502495e-03 -8.3852928876876831e-01 + <_> + + 0 -1 3447 1.2371230125427246e-01 + + -2.5482710450887680e-02 3.9098039269447327e-01 + <_> + + 0 -1 3448 -1.1195900291204453e-01 + + -3.8317111134529114e-01 6.0780011117458344e-03 + <_> + + 0 -1 3449 -1.0881890356540680e-01 + + -7.1362990140914917e-01 1.2700069695711136e-02 + <_> + 268 + -1.3290590047836304e+00 + + <_> + + 0 -1 3450 9.6844611689448357e-03 + + -1.9455039501190186e-01 2.0048019289970398e-01 + <_> + + 0 -1 3451 -6.6196201369166374e-03 + + 9.2211641371250153e-02 -3.4824401140213013e-01 + <_> + + 0 -1 3452 5.6163137778639793e-03 + + 6.6767610609531403e-02 -4.1172260046005249e-01 + <_> + + 0 -1 3453 -1.6882510390132666e-03 + + 7.2629712522029877e-02 -2.0694479346275330e-01 + <_> + + 0 -1 3454 -2.9599820263683796e-03 + + -2.0635899901390076e-01 7.7335417270660400e-02 + <_> + + 0 -1 3455 1.7798959743231535e-03 + + -3.2149469852447510e-01 6.4107127487659454e-02 + <_> + + 0 -1 3456 -4.0264189010486007e-04 + + 7.9512253403663635e-02 -2.4051089584827423e-01 + <_> + + 0 -1 3457 -5.0024548545479774e-04 + + 8.6675606667995453e-02 -2.0504170656204224e-01 + <_> + + 0 -1 3458 -2.0284270867705345e-03 + + 1.4322499930858612e-01 -1.2220569700002670e-01 + <_> + + 0 -1 3459 6.0648359358310699e-03 + + 3.7860579788684845e-02 -2.4375459551811218e-01 + <_> + + 0 -1 3460 9.6257496625185013e-03 + + 5.7141840457916260e-02 -2.8827920556068420e-01 + <_> + + 0 -1 3461 2.5888499803841114e-03 + + -1.8906019628047943e-01 8.6430206894874573e-02 + <_> + + 0 -1 3462 2.9090950265526772e-03 + + -8.3108469843864441e-02 1.7618839442729950e-01 + <_> + + 0 -1 3463 2.2233440540730953e-03 + + 2.0150169730186462e-02 -2.4882750213146210e-01 + <_> + + 0 -1 3464 -9.8997671157121658e-03 + + -2.0639769732952118e-01 6.0985010117292404e-02 + <_> + + 0 -1 3465 1.9689390435814857e-02 + + -3.4452438354492188e-02 2.0069779455661774e-01 + <_> + + 0 -1 3466 2.1106770262122154e-02 + + 4.3886858969926834e-02 -2.6610890030860901e-01 + <_> + + 0 -1 3467 -7.2028310969471931e-03 + + 1.7015519738197327e-01 -5.4639339447021484e-02 + <_> + + 0 -1 3468 4.0647671557962894e-03 + + 5.2182808518409729e-02 -2.1304030716419220e-01 + <_> + + 0 -1 3469 -2.8419198933988810e-03 + + 5.3180210292339325e-02 -1.7669560015201569e-01 + <_> + + 0 -1 3470 -4.9461819231510162e-02 + + 3.7221330404281616e-01 -3.3969849348068237e-02 + <_> + + 0 -1 3471 4.3024159967899323e-02 + + 3.1251549720764160e-02 -3.1831890344619751e-01 + <_> + + 0 -1 3472 -7.0111698005348444e-04 + + -2.0340210199356079e-01 5.8964170515537262e-02 + <_> + + 0 -1 3473 5.7489587925374508e-04 + + -9.4937190413475037e-02 1.0538189858198166e-01 + <_> + + 0 -1 3474 -1.4911209291312844e-04 + + 6.8423688411712646e-02 -1.8207779526710510e-01 + <_> + + 0 -1 3475 8.7993890047073364e-03 + + 3.3866070210933685e-02 -1.1625579744577408e-01 + <_> + + 0 -1 3476 -8.7150773033499718e-03 + + 1.8041290342807770e-01 -6.5721526741981506e-02 + <_> + + 0 -1 3477 -1.3727629557251930e-02 + + -1.3337810337543488e-01 3.5966601222753525e-02 + <_> + + 0 -1 3478 -2.3620850406587124e-03 + + -1.9088070094585419e-01 6.1849810183048248e-02 + <_> + + 0 -1 3479 1.7863539978861809e-03 + + -8.3071537315845490e-02 9.8926126956939697e-02 + <_> + + 0 -1 3480 -9.4514712691307068e-03 + + -1.8024919927120209e-01 6.0146760195493698e-02 + <_> + + 0 -1 3481 4.8195280134677887e-02 + + -2.6617299765348434e-02 3.0134469270706177e-01 + <_> + + 0 -1 3482 -1.2248229468241334e-03 + + -2.3560139536857605e-01 4.5572910457849503e-02 + <_> + + 0 -1 3483 -4.2851101607084274e-02 + + 1.6086329519748688e-01 -2.3455940186977386e-02 + <_> + + 0 -1 3484 3.4798709675669670e-03 + + 7.6882630586624146e-02 -1.3299170136451721e-01 + <_> + + 0 -1 3485 -3.9859190583229065e-03 + + 4.3115191161632538e-02 -2.3132759332656860e-01 + <_> + + 0 -1 3486 4.3139848858118057e-02 + + -3.6780070513486862e-02 2.3883450031280518e-01 + <_> + + 0 -1 3487 -1.7436629161238670e-02 + + -1.4046260714530945e-01 5.9077050536870956e-02 + <_> + + 0 -1 3488 -7.5254887342453003e-02 + + 3.6328521370887756e-01 -3.1380280852317810e-02 + <_> + + 0 -1 3489 6.0125540941953659e-02 + + 8.2496693357825279e-03 -2.3485200107097626e-01 + <_> + + 0 -1 3490 1.2755369534716010e-03 + + -1.2268169969320297e-01 9.0071536600589752e-02 + <_> + + 0 -1 3491 -1.3465109514072537e-03 + + -1.4554239809513092e-01 7.0761166512966156e-02 + <_> + + 0 -1 3492 2.3758469149470329e-02 + + -5.1834989339113235e-02 1.7583900690078735e-01 + <_> + + 0 -1 3493 2.2376580163836479e-03 + + 9.1763339936733246e-02 -1.1206050217151642e-01 + <_> + + 0 -1 3494 3.8662939332425594e-03 + + 6.2390189617872238e-02 -1.5142339468002319e-01 + <_> + + 0 -1 3495 7.6868042349815369e-02 + + -2.7640199288725853e-02 3.7636131048202515e-01 + <_> + + 0 -1 3496 1.6617199406027794e-02 + + 3.3067818731069565e-02 -3.0950650572776794e-01 + <_> + + 0 -1 3497 -4.6145029366016388e-02 + + 1.0798139870166779e-01 -5.8277439326047897e-02 + <_> + + 0 -1 3498 9.8206609487533569e-02 + + 1.7502160742878914e-02 -5.0861918926239014e-01 + <_> + + 0 -1 3499 4.7838049940764904e-03 + + -1.0207810252904892e-01 5.7796850800514221e-02 + <_> + + 0 -1 3500 2.0467689260840416e-02 + + -2.0362010225653648e-02 4.5001450181007385e-01 + <_> + + 0 -1 3501 1.5141700394451618e-02 + + 2.8140379115939140e-02 -8.5130028426647186e-02 + <_> + + 0 -1 3502 5.2229189313948154e-03 + + -5.7789258658885956e-02 1.5580329298973083e-01 + <_> + + 0 -1 3503 1.8871299922466278e-02 + + 2.7053799480199814e-02 -1.2046360224485397e-01 + <_> + + 0 -1 3504 4.5608580112457275e-03 + + -7.9567588865756989e-02 1.1571010202169418e-01 + <_> + + 0 -1 3505 -1.2172549962997437e-02 + + -1.6149179637432098e-01 2.4571539834141731e-02 + <_> + + 0 -1 3506 -1.6468809545040131e-01 + + -6.5712791681289673e-01 1.2428689748048782e-02 + <_> + + 0 -1 3507 1.8241419456899166e-03 + + -9.1526739299297333e-02 8.7851390242576599e-02 + <_> + + 0 -1 3508 -5.4591207299381495e-04 + + -1.2581209838390350e-01 6.6968381404876709e-02 + <_> + + 0 -1 3509 2.1177160087972879e-03 + + 1.4261330664157867e-01 -6.1729468405246735e-02 + <_> + + 0 -1 3510 1.1853260220959783e-03 + + -9.1425627470016479e-02 9.2089362442493439e-02 + <_> + + 0 -1 3511 7.9899299889802933e-03 + + -6.3119217753410339e-02 1.5446299314498901e-01 + <_> + + 0 -1 3512 4.5044990256428719e-03 + + 4.0920298546552658e-02 -2.2475910186767578e-01 + <_> + + 0 -1 3513 7.4563547968864441e-03 + + -3.9540700614452362e-02 2.4208679795265198e-01 + <_> + + 0 -1 3514 6.3897971995174885e-03 + + 5.2900739014148712e-02 -1.7378969490528107e-01 + <_> + + 0 -1 3515 -5.9052068740129471e-02 + + -4.7957658767700195e-01 8.3919316530227661e-03 + <_> + + 0 -1 3516 -5.3746208548545837e-02 + + -5.0854432582855225e-01 1.6880670562386513e-02 + <_> + + 0 -1 3517 -9.1852366924285889e-02 + + 1.9466249644756317e-01 -1.1129629798233509e-02 + <_> + + 0 -1 3518 1.5038819611072540e-01 + + -2.0112350583076477e-02 4.4738510251045227e-01 + <_> + + 0 -1 3519 -2.1317429840564728e-02 + + 2.9676139354705811e-01 -2.8231840580701828e-02 + <_> + + 0 -1 3520 1.2711419723927975e-02 + + 3.3570941537618637e-02 -2.8972589969635010e-01 + <_> + + 0 -1 3521 -9.3287907540798187e-02 + + 6.4380300045013428e-01 -1.4923879876732826e-02 + <_> + + 0 -1 3522 -4.5716729946434498e-03 + + -2.6994249224662781e-01 3.3246111124753952e-02 + <_> + + 0 -1 3523 -3.4010890522040427e-04 + + 8.1715546548366547e-02 -1.0642260313034058e-01 + <_> + + 0 -1 3524 -2.6096890214830637e-03 + + 1.8403419852256775e-01 -6.4724236726760864e-02 + <_> + + 0 -1 3525 4.6332611236721277e-04 + + -1.4283409714698792e-01 4.2033299803733826e-02 + <_> + + 0 -1 3526 1.4095300436019897e-01 + + 9.4516919925808907e-03 -7.7727228403091431e-01 + <_> + + 0 -1 3527 2.0406199619174004e-03 + + -6.6505432128906250e-02 1.1805409938097000e-01 + <_> + + 0 -1 3528 -2.2302009165287018e-02 + + -1.0419870167970657e-01 8.9387677609920502e-02 + <_> + + 0 -1 3529 3.9168349467217922e-03 + + 2.5769380852580070e-02 -1.6625499725341797e-01 + <_> + + 0 -1 3530 6.1153857968747616e-03 + + -6.2531687319278717e-02 1.4075349271297455e-01 + <_> + + 0 -1 3531 -2.9564529540948570e-05 + + 4.6978309750556946e-02 -1.0862989723682404e-01 + <_> + + 0 -1 3532 1.4300559996627271e-04 + + -1.0005149990320206e-01 8.0335728824138641e-02 + <_> + + 0 -1 3533 1.1430789716541767e-02 + + 2.3201359435915947e-02 -3.1366908550262451e-01 + <_> + + 0 -1 3534 -1.3724610209465027e-02 + + 1.2814410030841827e-01 -6.1290029436349869e-02 + <_> + + 0 -1 3535 -4.5548770576715469e-02 + + -4.7528308629989624e-01 1.3631340116262436e-02 + <_> + + 0 -1 3536 7.6914107194170356e-04 + + -8.9416027069091797e-02 9.6091486513614655e-02 + <_> + + 0 -1 3537 6.3840910792350769e-02 + + 1.6064060851931572e-02 -3.8221898674964905e-01 + <_> + + 0 -1 3538 -7.2662779130041599e-03 + + -2.1940490603446960e-01 3.8170509040355682e-02 + <_> + + 0 -1 3539 -1.2828599661588669e-02 + + 1.4705429971218109e-01 -5.5832669138908386e-02 + <_> + + 0 -1 3540 -9.1467969119548798e-02 + + -7.9265332221984863e-01 1.0404639877378941e-02 + <_> + + 0 -1 3541 -2.7164160273969173e-03 + + -1.7725169658660889e-01 5.6455809623003006e-02 + <_> + + 0 -1 3542 -1.0097579658031464e-01 + + -5.9372657537460327e-01 1.3162240386009216e-02 + <_> + + 0 -1 3543 -3.7983559072017670e-02 + + -1.5072999894618988e-01 1.9557390362024307e-02 + <_> + + 0 -1 3544 5.3728191414847970e-04 + + 5.2257049828767776e-02 -1.7996260523796082e-01 + <_> + + 0 -1 3545 1.2443910352885723e-02 + + -2.8953019529581070e-02 2.5448489189147949e-01 + <_> + + 0 -1 3546 -1.8171280622482300e-02 + + 3.2203981280326843e-01 -3.1395100057125092e-02 + <_> + + 0 -1 3547 -3.0619159340858459e-02 + + -1.2817279994487762e-01 6.0485020279884338e-02 + <_> + + 0 -1 3548 2.8726200107485056e-03 + + -1.4807400107383728e-01 5.3796000778675079e-02 + <_> + + 0 -1 3549 -2.8772678971290588e-01 + + -8.3234447240829468e-01 3.6127590574324131e-03 + <_> + + 0 -1 3550 4.1057071089744568e-01 + + 8.3212452009320259e-03 -8.2476407289505005e-01 + <_> + + 0 -1 3551 1.6370510682463646e-02 + + -2.4849100038409233e-02 1.6309140622615814e-01 + <_> + + 0 -1 3552 5.3615570068359375e-02 + + 1.8034080043435097e-02 -4.6126970648765564e-01 + <_> + + 0 -1 3553 -1.0296109830960631e-03 + + 3.8824349641799927e-02 -7.3625981807708740e-02 + <_> + + 0 -1 3554 -6.3063339330255985e-03 + + 1.3288870453834534e-01 -5.5812060832977295e-02 + <_> + + 0 -1 3555 6.8714357912540436e-03 + + 6.9562442600727081e-02 -1.1383140087127686e-01 + <_> + + 0 -1 3556 -8.3098851609975100e-04 + + 1.0002700239419937e-01 -8.5704028606414795e-02 + <_> + + 0 -1 3557 1.3288210146129131e-02 + + 4.2606260627508163e-02 -1.1729510128498077e-01 + <_> + + 0 -1 3558 1.7035039141774178e-02 + + -4.2757850140333176e-02 2.2400109469890594e-01 + <_> + + 0 -1 3559 3.2128300517797470e-02 + + 1.5296909958124161e-02 -5.3317558765411377e-01 + <_> + + 0 -1 3560 1.1440330184996128e-02 + + -5.8955609798431396e-02 1.2842489778995514e-01 + <_> + + 0 -1 3561 2.5446009822189808e-03 + + 4.6037770807743073e-02 -1.4760190248489380e-01 + <_> + + 0 -1 3562 -3.5062368959188461e-02 + + -3.4721338748931885e-01 2.4020459502935410e-02 + <_> + + 0 -1 3563 4.6889069490134716e-03 + + -8.2460209727287292e-02 7.6254382729530334e-02 + <_> + + 0 -1 3564 -1.5067459571582731e-05 + + 5.8223988860845566e-02 -1.3496190309524536e-01 + <_> + + 0 -1 3565 -6.5259548136964440e-04 + + 3.6780450493097305e-02 -7.0881396532058716e-02 + <_> + + 0 -1 3566 4.5456850784830749e-04 + + 5.9895541518926620e-02 -1.4553959667682648e-01 + <_> + + 0 -1 3567 -1.0570470243692398e-01 + + 1.3766160607337952e-01 -2.2337099537253380e-02 + <_> + + 0 -1 3568 -4.6019242145121098e-03 + + -3.3811721205711365e-01 2.2578509524464607e-02 + <_> + + 0 -1 3569 5.5374279618263245e-03 + + -4.1250869631767273e-02 9.4750680029392242e-02 + <_> + + 0 -1 3570 -2.7569069061428308e-03 + + 1.7380860447883606e-01 -4.5417640358209610e-02 + <_> + + 0 -1 3571 4.1876680916175246e-04 + + -5.5233258754014969e-02 5.8342628180980682e-02 + <_> + + 0 -1 3572 -2.4587850202806294e-04 + + -8.9373029768466949e-02 8.1158749759197235e-02 + <_> + + 0 -1 3573 -7.4991412460803986e-02 + + -5.9057062864303589e-01 6.7846179008483887e-03 + <_> + + 0 -1 3574 1.7898950027301908e-03 + + 5.2262220531702042e-02 -1.5884269773960114e-01 + <_> + + 0 -1 3575 -3.2704160548746586e-03 + + 1.1216899752616882e-01 -6.2488421797752380e-02 + <_> + + 0 -1 3576 -1.7803650349378586e-02 + + -4.5739078521728516e-01 1.6650289297103882e-02 + <_> + + 0 -1 3577 -3.3537930250167847e-01 + + -8.2564651966094971e-01 7.1495971642434597e-03 + <_> + + 0 -1 3578 1.1451829969882965e-01 + + -1.8937719985842705e-02 4.1076439619064331e-01 + <_> + + 0 -1 3579 6.5141052007675171e-02 + + 1.1196400038897991e-02 -7.6225310564041138e-01 + <_> + + 0 -1 3580 -1.8442489206790924e-02 + + 1.4006440341472626e-01 -5.1568318158388138e-02 + <_> + + 0 -1 3581 2.0362680777907372e-02 + + 2.7635680511593819e-02 -2.2622610628604889e-01 + <_> + + 0 -1 3582 -5.4255980066955090e-03 + + -1.4688220620155334e-01 5.1294069737195969e-02 + <_> + + 0 -1 3583 -1.4608480036258698e-02 + + 2.8014749288558960e-01 -3.2668899744749069e-02 + <_> + + 0 -1 3584 1.2462410377338529e-03 + + -2.0888839662075043e-01 3.3212959766387939e-02 + <_> + + 0 -1 3585 -5.1487259566783905e-02 + + 1.9872699677944183e-01 -1.0376259684562683e-02 + <_> + + 0 -1 3586 -1.4138059690594673e-02 + + -1.6193750500679016e-01 4.6604789793491364e-02 + <_> + + 0 -1 3587 -8.3356946706771851e-03 + + 1.6429559886455536e-01 -4.2695630341768265e-02 + <_> + + 0 -1 3588 9.5129031687974930e-03 + + 4.4999569654464722e-02 -1.5971189737319946e-01 + <_> + + 0 -1 3589 -7.0411129854619503e-03 + + 7.0638000965118408e-01 -9.1527765616774559e-03 + <_> + + 0 -1 3590 -4.0637628990225494e-04 + + 7.0747792720794678e-02 -1.0194250196218491e-01 + <_> + + 0 -1 3591 4.2529408819973469e-03 + + 3.1937479972839355e-02 -1.0357219725847244e-01 + <_> + + 0 -1 3592 -1.9221140246372670e-04 + + 1.0241460055112839e-01 -8.9996367692947388e-02 + <_> + + 0 -1 3593 -1.3621139805763960e-03 + + -1.8157319724559784e-01 2.3933520540595055e-02 + <_> + + 0 -1 3594 -9.3250330537557602e-03 + + 1.5883359313011169e-01 -4.5317139476537704e-02 + <_> + + 0 -1 3595 -3.4641081094741821e-01 + + -3.5901129245758057e-01 9.8646534606814384e-03 + <_> + + 0 -1 3596 1.7026960849761963e-02 + + -5.9731051325798035e-02 1.2576000392436981e-01 + <_> + + 0 -1 3597 -3.9226989611051977e-04 + + 6.4828976988792419e-02 -9.2051766812801361e-02 + <_> + + 0 -1 3598 7.0719248615205288e-03 + + 3.7144500762224197e-02 -1.9167420268058777e-01 + <_> + + 0 -1 3599 2.9001249931752682e-03 + + -6.2633208930492401e-02 5.3248930722475052e-02 + <_> + + 0 -1 3600 -2.4164669215679169e-02 + + 3.0798891186714172e-01 -2.6505900546908379e-02 + <_> + + 0 -1 3601 -7.5509406626224518e-02 + + -6.1827278137207031e-01 7.8803002834320068e-03 + <_> + + 0 -1 3602 -2.6605799212120473e-04 + + 6.9619670510292053e-02 -9.9268868565559387e-02 + <_> + + 0 -1 3603 2.3389840498566628e-03 + + 4.2269691824913025e-02 -1.6290849447250366e-01 + <_> + + 0 -1 3604 -1.2518429430201650e-03 + + 9.0814828872680664e-02 -7.9618006944656372e-02 + <_> + + 0 -1 3605 -1.9330839859321713e-03 + + 7.6956093311309814e-02 -6.5234251320362091e-02 + <_> + + 0 -1 3606 2.3863440379500389e-02 + + -7.7985651791095734e-02 9.7926571965217590e-02 + <_> + + 0 -1 3607 -5.1995079964399338e-02 + + -2.0676060020923615e-01 1.2264530174434185e-02 + <_> + + 0 -1 3608 -9.4953901134431362e-04 + + 7.2090931236743927e-02 -1.2452449649572372e-01 + <_> + + 0 -1 3609 -9.0458765625953674e-03 + + -1.0756769776344299e-01 2.6017999276518822e-02 + <_> + + 0 -1 3610 3.2019101083278656e-02 + + -4.4689521193504333e-02 1.6712300479412079e-01 + <_> + + 0 -1 3611 -7.1996808983385563e-03 + + -1.2065560370683670e-01 5.3329549729824066e-02 + <_> + + 0 -1 3612 9.7247883677482605e-02 + + -2.0059280097484589e-02 4.1321530938148499e-01 + <_> + + 0 -1 3613 1.7411670414730906e-03 + + 2.5265200063586235e-02 -1.1400379985570908e-01 + <_> + + 0 -1 3614 -1.5694150328636169e-01 + + -9.6121889352798462e-01 7.4661090038716793e-03 + <_> + + 0 -1 3615 -2.0573820918798447e-02 + + 1.3207539916038513e-01 -5.3688809275627136e-02 + <_> + + 0 -1 3616 2.0626350305974483e-03 + + 3.7869140505790710e-02 -2.0333750545978546e-01 + <_> + + 0 -1 3617 1.2381599843502045e-01 + + 2.3662589956074953e-03 -4.8794668912887573e-01 + <_> + + 0 -1 3618 3.1255739741027355e-03 + + -6.4476020634174347e-02 1.5053239464759827e-01 + <_> + + 0 -1 3619 1.8766360357403755e-02 + + 1.2639230117201805e-02 -1.9121849536895752e-01 + <_> + + 0 -1 3620 -8.6109619587659836e-03 + + -1.1916559934616089e-01 6.6547170281410217e-02 + <_> + + 0 -1 3621 1.4604110270738602e-02 + + -2.1980939432978630e-02 2.6832428574562073e-01 + <_> + + 0 -1 3622 1.8387939780950546e-03 + + -1.1506830155849457e-01 6.0840509831905365e-02 + <_> + + 0 -1 3623 -5.7930707931518555e-01 + + -1. 3.7629920989274979e-03 + <_> + + 0 -1 3624 1.8690739572048187e-01 + + 6.2871198169887066e-03 -9.2426669597625732e-01 + <_> + + 0 -1 3625 1.8341749906539917e-02 + + 1.7516769468784332e-02 -1.6519400477409363e-01 + <_> + + 0 -1 3626 -1.4776510186493397e-02 + + 2.5068140029907227e-01 -2.6199640706181526e-02 + <_> + + 0 -1 3627 4.4032301753759384e-02 + + 1.1479279957711697e-02 -6.4663171768188477e-01 + <_> + + 0 -1 3628 3.5362939815968275e-03 + + 4.8670079559087753e-02 -1.3171669840812683e-01 + <_> + + 0 -1 3629 -4.5765978284180164e-03 + + 1.2401209771633148e-01 -5.3882170468568802e-02 + <_> + + 0 -1 3630 3.0529699288308620e-03 + + -5.2538860589265823e-02 1.2860049307346344e-01 + <_> + + 0 -1 3631 -1.1333939619362354e-02 + + -1.6732269525527954e-01 1.2890639714896679e-02 + <_> + + 0 -1 3632 2.7712888550013304e-04 + + 6.5776027739048004e-02 -9.4573900103569031e-02 + <_> + + 0 -1 3633 5.4571928922086954e-04 + + -5.9766601771116257e-02 1.3265900313854218e-01 + <_> + + 0 -1 3634 6.2958751805126667e-03 + + 2.8854750096797943e-02 -2.4328909814357758e-01 + <_> + + 0 -1 3635 1.5611880226060748e-03 + + -5.6346539407968521e-02 8.0620631575584412e-02 + <_> + + 0 -1 3636 1.0501279681921005e-01 + + -1.4052099548280239e-02 5.5927920341491699e-01 + <_> + + 0 -1 3637 3.6907300353050232e-02 + + 1.5443010255694389e-02 -2.0881450176239014e-01 + <_> + + 0 -1 3638 -4.0569249540567398e-02 + + 1.5851789712905884e-01 -4.3176181614398956e-02 + <_> + + 0 -1 3639 -7.2549749165773392e-03 + + -2.6104170083999634e-01 1.7242910340428352e-02 + <_> + + 0 -1 3640 4.5905262231826782e-03 + + -3.8419000804424286e-02 1.7464800179004669e-01 + <_> + + 0 -1 3641 -4.2836060747504234e-03 + + -1.2006240338087082e-01 4.1917610913515091e-02 + <_> + + 0 -1 3642 -1.0835780203342438e-01 + + 5.4927551746368408e-01 -1.2255569919943810e-02 + <_> + + 0 -1 3643 6.4851208589971066e-03 + + 4.4952411204576492e-02 -1.6583940386772156e-01 + <_> + + 0 -1 3644 -2.3725129663944244e-02 + + 5.7158672809600830e-01 -1.2361500412225723e-02 + <_> + + 0 -1 3645 -3.0070519074797630e-02 + + -3.0609959363937378e-01 1.1695429682731628e-02 + <_> + + 0 -1 3646 -7.9774633049964905e-03 + + -1.8185980618000031e-01 3.6925770342350006e-02 + <_> + + 0 -1 3647 -1.7213199287652969e-02 + + 1.2317930161952972e-01 -3.6632679402828217e-02 + <_> + + 0 -1 3648 -1.4119789702817798e-03 + + -5.0499087572097778e-01 1.3695210218429565e-02 + <_> + + 0 -1 3649 2.9909020289778709e-02 + + -2.3535439744591713e-02 1.4312979578971863e-01 + <_> + + 0 -1 3650 -1.1660479940474033e-02 + + -1.7822280526161194e-01 4.0250599384307861e-02 + <_> + + 0 -1 3651 -8.9040184393525124e-03 + + 3.5567161440849304e-01 -2.4783140048384666e-02 + <_> + + 0 -1 3652 -1.1394720058888197e-03 + + -1.4268599450588226e-01 4.9102801829576492e-02 + <_> + + 0 -1 3653 2.9107509180903435e-03 + + -5.4471809417009354e-02 1.3025890290737152e-01 + <_> + + 0 -1 3654 1.7640810459852219e-02 + + 2.0184019580483437e-02 -4.1954588890075684e-01 + <_> + + 0 -1 3655 5.0001900643110275e-02 + + 1.1975940316915512e-02 -5.1889878511428833e-01 + <_> + + 0 -1 3656 2.7523660100996494e-03 + + -6.0628410428762436e-02 1.1169119924306870e-01 + <_> + + 0 -1 3657 -3.1753338873386383e-02 + + -2.2611990571022034e-01 1.5267389826476574e-02 + <_> + + 0 -1 3658 -1.2823809869587421e-02 + + 2.3027139902114868e-01 -2.9404800385236740e-02 + <_> + + 0 -1 3659 5.2626157412305474e-04 + + -1.5677809715270996e-01 4.9938481301069260e-02 + <_> + + 0 -1 3660 1.2779150158166885e-02 + + -5.8851849287748337e-02 1.2255299836397171e-01 + <_> + + 0 -1 3661 7.7667668461799622e-02 + + 4.6644411049783230e-03 -5.0614321231842041e-01 + <_> + + 0 -1 3662 -5.2286800928413868e-03 + + -1.8939809501171112e-01 4.4714428484439850e-02 + <_> + + 0 -1 3663 8.4478305652737617e-03 + + 3.9108898490667343e-02 -1.4809159934520721e-01 + <_> + + 0 -1 3664 5.5970861576497555e-03 + + 5.4664470255374908e-02 -1.4698089659214020e-01 + <_> + + 0 -1 3665 1.6882989555597305e-02 + + -4.6449739485979080e-02 1.4121970534324646e-01 + <_> + + 0 -1 3666 -6.1205658130347729e-04 + + -1.3906019926071167e-01 5.2586868405342102e-02 + <_> + + 0 -1 3667 -3.6216019652783871e-03 + + 5.3345881402492523e-02 -3.8361679762601852e-02 + <_> + + 0 -1 3668 -1.4149090275168419e-03 + + 2.0082549750804901e-01 -3.5985361784696579e-02 + <_> + + 0 -1 3669 2.4758750805631280e-04 + + -1.8205779790878296e-01 1.5915339812636375e-02 + <_> + + 0 -1 3670 1.3457840681076050e-01 + + 9.7890906035900116e-03 -7.2879707813262939e-01 + <_> + + 0 -1 3671 1.1352010071277618e-02 + + -3.5553149878978729e-02 6.3222207129001617e-02 + <_> + + 0 -1 3672 -7.9044885933399200e-03 + + 9.0774089097976685e-02 -9.8796442151069641e-02 + <_> + + 0 -1 3673 7.9050168395042419e-02 + + 4.7087217681109905e-03 -6.0529369115829468e-01 + <_> + + 0 -1 3674 8.9114397997036576e-04 + + -9.0216107666492462e-02 8.4293842315673828e-02 + <_> + + 0 -1 3675 4.1404040530323982e-03 + + 6.0314171016216278e-02 -1.2171939760446548e-01 + <_> + + 0 -1 3676 -9.2683091759681702e-02 + + 6.7853301763534546e-01 -1.0615170001983643e-02 + <_> + + 0 -1 3677 4.2872380465269089e-02 + + 7.3283850215375423e-03 -5.2321487665176392e-01 + <_> + + 0 -1 3678 -3.0652560293674469e-02 + + -6.5578341484069824e-01 9.7402445971965790e-03 + <_> + + 0 -1 3679 7.5054399669170380e-02 + + -1.1660519987344742e-02 3.7559139728546143e-01 + <_> + + 0 -1 3680 9.3033112585544586e-02 + + 7.4912221170961857e-03 -8.1748551130294800e-01 + <_> + + 0 -1 3681 -4.0522208437323570e-03 + + 3.6431130766868591e-01 -1.8015889450907707e-02 + <_> + + 0 -1 3682 1.0411429684609175e-03 + + -1.9623729586601257e-01 3.4336969256401062e-02 + <_> + + 0 -1 3683 4.0790800005197525e-02 + + 1.7464859411120415e-02 -3.8497269153594971e-01 + <_> + + 0 -1 3684 -1.8009789346251637e-04 + + 5.2157621830701828e-02 -1.2038189917802811e-01 + <_> + + 0 -1 3685 -3.5496380180120468e-02 + + 2.1371629834175110e-01 -9.4601595774292946e-03 + <_> + + 0 -1 3686 -1.2321450049057603e-03 + + -1.2999939918518066e-01 4.8752531409263611e-02 + <_> + + 0 -1 3687 -6.6326446831226349e-02 + + -5.0795209407806396e-01 5.8305650018155575e-03 + <_> + + 0 -1 3688 -2.7689670678228140e-03 + + 1.2596920132637024e-01 -5.5794779211282730e-02 + <_> + + 0 -1 3689 3.9610429666936398e-03 + + -8.4471739828586578e-02 6.2092550098896027e-02 + <_> + + 0 -1 3690 -7.5474479235708714e-03 + + -2.0992270112037659e-01 3.1419910490512848e-02 + <_> + + 0 -1 3691 -3.2456999178975821e-03 + + 5.6223601102828979e-02 -3.6774989217519760e-02 + <_> + + 0 -1 3692 -5.0519341602921486e-03 + + 9.4136670231819153e-02 -8.0893777310848236e-02 + <_> + + 0 -1 3693 2.1375959739089012e-02 + + 4.9529589712619781e-02 -4.7989148646593094e-02 + <_> + + 0 -1 3694 -1.6724619269371033e-01 + + -9.3551367521286011e-01 7.4155409820377827e-03 + <_> + + 0 -1 3695 6.4946119673550129e-03 + + -3.6735821515321732e-02 1.0955040156841278e-01 + <_> + + 0 -1 3696 -5.5810972116887569e-03 + + -1.2764470279216766e-01 5.8691799640655518e-02 + <_> + + 0 -1 3697 -7.0414197398349643e-04 + + 3.9361558854579926e-02 -7.4844732880592346e-02 + <_> + + 0 -1 3698 -7.3160971514880657e-03 + + 2.1767179667949677e-01 -3.8703199476003647e-02 + <_> + + 0 -1 3699 -5.4676099680364132e-03 + + -5.3973350673913956e-02 5.5032800883054733e-02 + <_> + + 0 -1 3700 4.3309312313795090e-03 + + 5.7104710489511490e-02 -1.2603929638862610e-01 + <_> + + 0 -1 3701 2.8189779259264469e-03 + + -3.9729248732328415e-02 9.2701591551303864e-02 + <_> + + 0 -1 3702 -4.7759278677403927e-03 + + -1.2856410443782806e-01 6.1216689646244049e-02 + <_> + + 0 -1 3703 6.3424631953239441e-02 + + -4.8541268333792686e-03 5.9883451461791992e-01 + <_> + + 0 -1 3704 -3.5035109613090754e-03 + + 1.0191550105810165e-01 -9.8801277577877045e-02 + <_> + + 0 -1 3705 -4.1303951293230057e-03 + + 1.0890380293130875e-01 -3.8225919008255005e-02 + <_> + + 0 -1 3706 -2.2271529305726290e-03 + + -1.3501960039138794e-01 5.1316611468791962e-02 + <_> + + 0 -1 3707 -1.0730850044637918e-03 + + 5.1526721566915512e-02 -7.4171036481857300e-02 + <_> + + 0 -1 3708 -7.7973678708076477e-04 + + 7.0857577025890350e-02 -1.1204849928617477e-01 + <_> + + 0 -1 3709 -5.5701348930597305e-02 + + 3.9836230874061584e-01 -5.2183559164404869e-03 + <_> + + 0 -1 3710 1.0608229786157608e-02 + + -3.2323788851499557e-02 2.1950970590114594e-01 + <_> + + 0 -1 3711 -9.8208207637071609e-03 + + -1.6507670283317566e-01 4.2444411665201187e-02 + <_> + + 0 -1 3712 1.4465330168604851e-03 + + -7.8392669558525085e-02 8.1393733620643616e-02 + <_> + + 0 -1 3713 -4.4582188129425049e-03 + + -9.2314578592777252e-02 3.8734171539545059e-02 + <_> + + 0 -1 3714 5.6474958546459675e-03 + + 3.9651289582252502e-02 -1.7495639622211456e-01 + <_> + + 0 -1 3715 4.2097918689250946e-02 + + -1.1850739829242229e-02 1.2762710452079773e-01 + <_> + + 0 -1 3716 6.9958101958036423e-03 + + -4.7668740153312683e-02 1.4204859733581543e-01 + <_> + + 0 -1 3717 3.8686778396368027e-02 + + 1.3582780025899410e-02 -4.7315898537635803e-01 + <_> + 238 + -1.4597640037536621e+00 + + <_> + + 0 -1 3718 3.5009320825338364e-02 + + -2.7020230889320374e-01 2.0429250597953796e-01 + <_> + + 0 -1 3719 -3.6780539900064468e-02 + + 1.5254889428615570e-01 -2.6741871237754822e-01 + <_> + + 0 -1 3720 5.6993318721652031e-03 + + 1.6803050041198730e-01 -2.3068240284919739e-01 + <_> + + 0 -1 3721 7.5601637363433838e-02 + + -1.5271709859371185e-01 1.9510839879512787e-01 + <_> + + 0 -1 3722 -1.7248390242457390e-02 + + 2.9379200935363770e-01 -9.8869532346725464e-02 + <_> + + 0 -1 3723 2.8574180323630571e-03 + + -1.9790470600128174e-01 8.3361737430095673e-02 + <_> + + 0 -1 3724 3.1029269099235535e-02 + + -2.1582309901714325e-01 1.1695130169391632e-01 + <_> + + 0 -1 3725 -7.1099428460001945e-03 + + -2.5206819176673889e-01 3.6116510629653931e-02 + <_> + + 0 -1 3726 4.5894421637058258e-03 + + -2.9707619547843933e-01 1.0743969678878784e-01 + <_> + + 0 -1 3727 -7.0509258657693863e-03 + + -4.5635029673576355e-01 4.1864778846502304e-02 + <_> + + 0 -1 3728 6.6762260394170880e-04 + + -1.7432719469070435e-01 1.2306489795446396e-01 + <_> + + 0 -1 3729 -3.6481819115579128e-03 + + -4.0347629785537720e-01 4.9114771187305450e-02 + <_> + + 0 -1 3730 2.2194240242242813e-02 + + 6.1241529881954193e-02 -3.4557360410690308e-01 + <_> + + 0 -1 3731 -1.1259679449722171e-03 + + 5.2013769745826721e-02 -2.8461641073226929e-01 + <_> + + 0 -1 3732 -1.5913739800453186e-02 + + -2.7667850255966187e-01 7.5852021574974060e-02 + <_> + + 0 -1 3733 5.7643437758088112e-03 + + -2.7182090282440186e-01 6.6790662705898285e-02 + <_> + + 0 -1 3734 -4.2196471244096756e-02 + + 1.5786080062389374e-01 -1.0557679831981659e-01 + <_> + + 0 -1 3735 -1.8624680116772652e-02 + + -2.5504299998283386e-01 4.7586869448423386e-02 + <_> + + 0 -1 3736 -9.5020089065656066e-04 + + 4.9903839826583862e-02 -2.9068550467491150e-01 + <_> + + 0 -1 3737 2.0823240280151367e-02 + + 2.6825139299035072e-02 -2.0558500289916992e-01 + <_> + + 0 -1 3738 -1.3118459843099117e-02 + + -2.2395209968090057e-01 6.9013498723506927e-02 + <_> + + 0 -1 3739 -8.6902417242527008e-03 + + 1.9493189454078674e-01 -3.7850689142942429e-02 + <_> + + 0 -1 3740 4.5589819550514221e-02 + + 2.5170389562845230e-02 -5.7766669988632202e-01 + <_> + + 0 -1 3741 -4.8458490520715714e-02 + + 9.5191553235054016e-02 -1.4320190250873566e-01 + <_> + + 0 -1 3742 -7.2761103510856628e-02 + + -6.5967410802841187e-01 2.1175239235162735e-02 + <_> + + 0 -1 3743 -5.3840368986129761e-02 + + -3.6426779627799988e-01 2.4827929213643074e-02 + <_> + + 0 -1 3744 2.3190240608528256e-04 + + -1.4767690002918243e-01 8.3764038980007172e-02 + <_> + + 0 -1 3745 -3.4166979603469372e-03 + + -1.7865709960460663e-01 6.0721088200807571e-02 + <_> + + 0 -1 3746 4.9744218587875366e-02 + + 1.8918199464678764e-02 -6.6629868745803833e-01 + <_> + + 0 -1 3747 6.6813439130783081e-02 + + -2.8286559507250786e-02 1.7401529848575592e-01 + <_> + + 0 -1 3748 3.1445559114217758e-02 + + 5.2556060254573822e-02 -3.0884549021720886e-01 + <_> + + 0 -1 3749 3.9593618363142014e-02 + + -6.4875252544879913e-02 2.5706759095191956e-01 + <_> + + 0 -1 3750 1.8663380295038223e-02 + + -5.9568431228399277e-02 2.1532599627971649e-01 + <_> + + 0 -1 3751 4.0150571614503860e-02 + + 1.9589129835367203e-02 -3.5392150282859802e-01 + <_> + + 0 -1 3752 -1.8263690173625946e-02 + + -3.1224039196968079e-01 4.1845381259918213e-02 + <_> + + 0 -1 3753 -2.2579960525035858e-02 + + -1.4898709952831268e-01 1.7757140100002289e-02 + <_> + + 0 -1 3754 8.5281759500503540e-02 + + 2.4866759777069092e-02 -5.2197951078414917e-01 + <_> + + 0 -1 3755 4.9491669051349163e-03 + + 4.0433339774608612e-02 -1.1230610311031342e-01 + <_> + + 0 -1 3756 -2.7419520542025566e-02 + + -4.1119968891143799e-01 3.0549079179763794e-02 + <_> + + 0 -1 3757 3.8277640938758850e-02 + + 1.2211250141263008e-02 -8.1860828399658203e-01 + <_> + + 0 -1 3758 -2.1632280200719833e-02 + + 2.2030480206012726e-01 -5.5459130555391312e-02 + <_> + + 0 -1 3759 -2.4522699415683746e-01 + + 4.1013330221176147e-01 -2.7000149711966515e-02 + <_> + + 0 -1 3760 3.9314631372690201e-02 + + -3.1242560595273972e-02 3.6714181303977966e-01 + <_> + + 0 -1 3761 1.3630360364913940e-02 + + -1.3902300596237183e-01 9.5946237444877625e-02 + <_> + + 0 -1 3762 -6.7042862065136433e-03 + + 7.8772000968456268e-02 -1.4522729814052582e-01 + <_> + + 0 -1 3763 2.3312810808420181e-02 + + 2.2815790027379990e-02 -4.4990560412406921e-01 + <_> + + 0 -1 3764 3.0621029436588287e-02 + + -6.9781273603439331e-02 1.5422509610652924e-01 + <_> + + 0 -1 3765 5.2047189325094223e-02 + + -1.7720200121402740e-02 4.4397410750389099e-01 + <_> + + 0 -1 3766 2.0850539207458496e-02 + + -5.2309051156044006e-02 2.0608800649642944e-01 + <_> + + 0 -1 3767 8.2694664597511292e-03 + + 7.7132821083068848e-02 -1.9474139809608459e-01 + <_> + + 0 -1 3768 5.5706288665533066e-02 + + 3.3715151250362396e-02 -3.5783401131629944e-01 + <_> + + 0 -1 3769 -2.5406919419765472e-02 + + -2.1424999833106995e-01 5.3813599050045013e-02 + <_> + + 0 -1 3770 3.7127479445189238e-03 + + 5.7478290051221848e-02 -1.7734010517597198e-01 + <_> + + 0 -1 3771 9.8399087786674500e-02 + + -3.5304271150380373e-03 7.7086448669433594e-01 + <_> + + 0 -1 3772 -7.0944158360362053e-03 + + -1.3782690465450287e-01 7.0290572941303253e-02 + <_> + + 0 -1 3773 -7.8213073313236237e-02 + + 4.6844071149826050e-01 -4.8642340116202831e-03 + <_> + + 0 -1 3774 3.0407020822167397e-02 + + -2.8489479795098305e-02 3.4157308936119080e-01 + <_> + + 0 -1 3775 1.7667879583314061e-03 + + -1.4614230394363403e-01 2.3572970181703568e-02 + <_> + + 0 -1 3776 7.1991011500358582e-02 + + -3.5075180232524872e-02 2.8865718841552734e-01 + <_> + + 0 -1 3777 5.0020869821310043e-02 + + 2.4096360430121422e-02 -3.3890551328659058e-01 + <_> + + 0 -1 3778 -1.7998270690441132e-02 + + 2.9191690683364868e-01 -4.1259169578552246e-02 + <_> + + 0 -1 3779 -8.6585222743451595e-04 + + -1.2248259782791138e-01 5.9690121561288834e-02 + <_> + + 0 -1 3780 5.7470470666885376e-02 + + 2.1541740745306015e-02 -4.7508370876312256e-01 + <_> + + 0 -1 3781 -1.6517810523509979e-02 + + 1.6598740220069885e-01 -3.9656970649957657e-02 + <_> + + 0 -1 3782 2.1703030914068222e-02 + + -3.8327228277921677e-02 3.3476251363754272e-01 + <_> + + 0 -1 3783 -6.1237839981913567e-03 + + -1.4342689514160156e-01 2.6313329115509987e-02 + <_> + + 0 -1 3784 -1.0893509723246098e-02 + + -7.9468882083892822e-01 1.2403479777276516e-02 + <_> + + 0 -1 3785 -3.8589738309383392e-02 + + 3.3763501048088074e-01 -1.8747940659523010e-02 + <_> + + 0 -1 3786 1.3378040166571736e-03 + + -3.6288881301879883e-01 2.9460189864039421e-02 + <_> + + 0 -1 3787 2.7590300305746496e-04 + + 7.6419189572334290e-02 -8.6953632533550262e-02 + <_> + + 0 -1 3788 7.9552736133337021e-03 + + 5.2696179598569870e-02 -1.9200770556926727e-01 + <_> + + 0 -1 3789 -1.2174629606306553e-02 + + 8.4013037383556366e-02 -2.1740090101957321e-02 + <_> + + 0 -1 3790 -1.6361070796847343e-02 + + -2.5493758916854858e-01 3.8582589477300644e-02 + <_> + + 0 -1 3791 -3.4992128610610962e-02 + + 2.5760510563850403e-01 -1.5727080404758453e-02 + <_> + + 0 -1 3792 -7.6113208197057247e-03 + + 1.9114670157432556e-01 -5.2980780601501465e-02 + <_> + + 0 -1 3793 5.0110749900341034e-02 + + 2.4265250191092491e-02 -5.1509189605712891e-01 + <_> + + 0 -1 3794 -9.1486647725105286e-03 + + -3.3170440793037415e-01 2.6774439960718155e-02 + <_> + + 0 -1 3795 8.3293259143829346e-02 + + 4.2860410176217556e-03 -3.0381551384925842e-01 + <_> + + 0 -1 3796 -1.9334359094500542e-02 + + 3.8916379213333130e-01 -2.4908309802412987e-02 + <_> + + 0 -1 3797 -7.2061046957969666e-02 + + 4.1184291243553162e-01 -2.5687059387564659e-02 + <_> + + 0 -1 3798 2.2506359964609146e-02 + + -2.1196739375591278e-01 5.3825020790100098e-02 + <_> + + 0 -1 3799 5.5772401392459869e-02 + + -2.3104140534996986e-02 9.1578252613544464e-02 + <_> + + 0 -1 3800 -2.6210390031337738e-02 + + 3.3509409427642822e-01 -3.4225810319185257e-02 + <_> + + 0 -1 3801 -4.6085331588983536e-02 + + -5.3006750345230103e-01 1.9083080813288689e-02 + <_> + + 0 -1 3802 -3.2998260110616684e-02 + + 3.0701389908790588e-01 -3.1638059765100479e-02 + <_> + + 0 -1 3803 1.0677659884095192e-02 + + 3.8186781108379364e-02 -2.0256699621677399e-01 + <_> + + 0 -1 3804 3.7972650025039911e-03 + + 7.8951433300971985e-02 -1.3040140271186829e-01 + <_> + + 0 -1 3805 -2.4965009652078152e-03 + + -1.9799210131168365e-01 3.0743129551410675e-02 + <_> + + 0 -1 3806 1.4203139580786228e-02 + + -4.5443460345268250e-02 2.1806409955024719e-01 + <_> + + 0 -1 3807 7.7012999099679291e-05 + + -2.5858289003372192e-01 4.2508359998464584e-02 + <_> + + 0 -1 3808 2.3724909406155348e-03 + + -1.5815889835357666e-01 6.1494071036577225e-02 + <_> + + 0 -1 3809 -8.4086082875728607e-02 + + -9.3704527616500854e-01 8.3687662845477462e-04 + <_> + + 0 -1 3810 -2.2892290726304054e-02 + + 4.2960539460182190e-01 -2.7215819805860519e-02 + <_> + + 0 -1 3811 -1.1238969862461090e-01 + + -2.0607289671897888e-01 1.7798800021409988e-02 + <_> + + 0 -1 3812 6.8175032734870911e-02 + + -4.2019781470298767e-01 2.5051090866327286e-02 + <_> + + 0 -1 3813 -1.0620189830660820e-02 + + -2.1870230138301849e-01 2.4231420829892159e-02 + <_> + + 0 -1 3814 2.9390859417617321e-03 + + 8.8470183312892914e-02 -1.1958040297031403e-01 + <_> + + 0 -1 3815 5.6766260415315628e-02 + + -5.8820329606533051e-02 1.7845800518989563e-01 + <_> + + 0 -1 3816 -7.3099520523101091e-04 + + 3.0122080445289612e-01 -3.4890830516815186e-02 + <_> + + 0 -1 3817 3.4174978733062744e-02 + + 1.9614150747656822e-02 -1.7419980466365814e-01 + <_> + + 0 -1 3818 3.3152099698781967e-02 + + 2.9344469308853149e-02 -3.5163739323616028e-01 + <_> + + 0 -1 3819 1.7158590257167816e-02 + + -4.7744009643793106e-02 2.0690310001373291e-01 + <_> + + 0 -1 3820 -3.3270310610532761e-02 + + -3.6818051338195801e-01 3.0547879636287689e-02 + <_> + + 0 -1 3821 -7.5228337664157152e-04 + + -1.0068210214376450e-01 3.7446059286594391e-02 + <_> + + 0 -1 3822 -5.7363631203770638e-03 + + -2.9704639315605164e-01 3.0889809131622314e-02 + <_> + + 0 -1 3823 3.4203678369522095e-02 + + 3.2694388180971146e-02 -1.9386410713195801e-01 + <_> + + 0 -1 3824 1.1759670078754425e-01 + + 2.8010509908199310e-02 -3.4469729661941528e-01 + <_> + + 0 -1 3825 3.5684760659933090e-02 + + 1.4612049795687199e-02 -3.2323908805847168e-01 + <_> + + 0 -1 3826 -1.4562480151653290e-01 + + -4.3703469634056091e-01 2.0697519183158875e-02 + <_> + + 0 -1 3827 8.0413380637764931e-03 + + 1.8440550193190575e-02 -3.2272771000862122e-01 + <_> + + 0 -1 3828 5.3446288220584393e-03 + + 5.0503399223089218e-02 -1.8428540229797363e-01 + <_> + + 0 -1 3829 8.6473226547241211e-02 + + 6.2484769150614738e-03 -9.3612897396087646e-01 + <_> + + 0 -1 3830 6.6168710589408875e-02 + + -5.9868391603231430e-02 1.5810599923133850e-01 + <_> + + 0 -1 3831 2.8978990390896797e-02 + + 2.8844339773058891e-02 -2.8269919753074646e-01 + <_> + + 0 -1 3832 1.8636519089341164e-02 + + -5.1709290593862534e-02 1.7777459323406219e-01 + <_> + + 0 -1 3833 -2.6881769299507141e-02 + + 7.3635026812553406e-02 -3.6229219287633896e-02 + <_> + + 0 -1 3834 -1.3696019537746906e-02 + + 1.8215629458427429e-01 -5.9880878776311874e-02 + <_> + + 0 -1 3835 -4.1931979358196259e-03 + + -9.3321792781352997e-02 2.7901070192456245e-02 + <_> + + 0 -1 3836 2.2784220054745674e-02 + + 3.0631329864263535e-02 -2.8531938791275024e-01 + <_> + + 0 -1 3837 -8.3819748833775520e-03 + + -2.3251660168170929e-01 5.0801441073417664e-02 + <_> + + 0 -1 3838 -6.4928620122373104e-03 + + 1.1060830205678940e-01 -8.3281010389328003e-02 + <_> + + 0 -1 3839 5.5866848677396774e-02 + + 2.3439039289951324e-01 -4.5191779732704163e-02 + <_> + + 0 -1 3840 -1.0926710441708565e-02 + + 2.0532840490341187e-01 -5.0775919109582901e-02 + <_> + + 0 -1 3841 1.7515379935503006e-02 + + 3.6728449165821075e-02 -3.0638590455055237e-01 + <_> + + 0 -1 3842 1.4543980360031128e-02 + + 4.4784490019083023e-02 -2.0757840573787689e-01 + <_> + + 0 -1 3843 1.7274370184168220e-03 + + 2.3706600069999695e-02 -1.8639369308948517e-01 + <_> + + 0 -1 3844 2.0160499960184097e-02 + + 4.1744660586118698e-02 -2.1943749487400055e-01 + <_> + + 0 -1 3845 -5.5732231587171555e-02 + + -3.7666681408882141e-01 7.3045571334660053e-03 + <_> + + 0 -1 3846 -4.2138090357184410e-03 + + 1.1314260214567184e-01 -8.4451928734779358e-02 + <_> + + 0 -1 3847 -5.7113498449325562e-02 + + -4.1903460025787354e-01 4.2158551514148712e-03 + <_> + + 0 -1 3848 -3.3385161310434341e-02 + + -3.9007860422134399e-01 2.5290969759225845e-02 + <_> + + 0 -1 3849 -8.5305999964475632e-03 + + 5.3572379052639008e-02 -1.2238460034132004e-01 + <_> + + 0 -1 3850 -1.5144890174269676e-02 + + 4.5743760466575623e-01 -2.5002999231219292e-02 + <_> + + 0 -1 3851 7.5857941992580891e-03 + + 2.6268539950251579e-02 -9.8890319466590881e-02 + <_> + + 0 -1 3852 -6.4347468316555023e-02 + + 2.2607059776782990e-01 -4.1821580380201340e-02 + <_> + + 0 -1 3853 6.5772183239459991e-02 + + 2.4147959426045418e-02 -4.0227779746055603e-01 + <_> + + 0 -1 3854 -1.0496930032968521e-01 + + -4.6343261003494263e-01 1.9134109839797020e-02 + <_> + + 0 -1 3855 9.6320390701293945e-02 + + 8.7147848680615425e-03 -3.5269328951835632e-01 + <_> + + 0 -1 3856 1.6651069745421410e-02 + + -2.3842410743236542e-01 3.8928661495447159e-02 + <_> + + 0 -1 3857 5.8829918503761292e-02 + + -1.6538100317120552e-02 3.3465591073036194e-01 + <_> + + 0 -1 3858 5.2411198616027832e-02 + + -1.9688919186592102e-02 4.6966078877449036e-01 + <_> + + 0 -1 3859 1.2325269635766745e-03 + + -1.2056189775466919e-01 5.0563529133796692e-02 + <_> + + 0 -1 3860 -2.4530949071049690e-02 + + -3.9168059825897217e-01 2.3108620196580887e-02 + <_> + + 0 -1 3861 3.5507690161466599e-02 + + 2.0499339327216148e-02 -3.6233830451965332e-01 + <_> + + 0 -1 3862 -1.5282739885151386e-02 + + -2.4604129791259766e-01 3.4749999642372131e-02 + <_> + + 0 -1 3863 6.0466449707746506e-02 + + -5.5071748793125153e-02 2.0428660511970520e-01 + <_> + + 0 -1 3864 6.5809831023216248e-02 + + -7.1466080844402313e-02 1.2002970278263092e-01 + <_> + + 0 -1 3865 -7.9543672502040863e-02 + + 4.9044218659400940e-01 -7.8059309162199497e-03 + <_> + + 0 -1 3866 7.1057200431823730e-02 + + 4.4219430536031723e-02 -2.1077010035514832e-01 + <_> + + 0 -1 3867 1.2412209762260318e-03 + + 9.9759846925735474e-02 -7.4065141379833221e-02 + <_> + + 0 -1 3868 4.3900560587644577e-02 + + 2.0245339721441269e-02 -4.7800138592720032e-01 + <_> + + 0 -1 3869 1.3814829289913177e-01 + + -3.4169729799032211e-02 2.0662400126457214e-01 + <_> + + 0 -1 3870 6.4026713371276855e-02 + + 1.7396930605173111e-02 -5.7749879360198975e-01 + <_> + + 0 -1 3871 -1.2456770054996014e-02 + + -1.6710869967937469e-01 1.2106380425393581e-02 + <_> + + 0 -1 3872 3.7183608859777451e-02 + + -1.9024299457669258e-02 4.4476169347763062e-01 + <_> + + 0 -1 3873 -3.4905251115560532e-02 + + -1.4648060500621796e-01 2.0895779132843018e-02 + <_> + + 0 -1 3874 6.1689559370279312e-02 + + 1.2428649701178074e-02 -7.1737641096115112e-01 + <_> + + 0 -1 3875 -2.7358489111065865e-02 + + -2.4311469495296478e-01 2.6138730347156525e-02 + <_> + + 0 -1 3876 6.3740741461515427e-03 + + -8.2593016326427460e-02 1.1356580257415771e-01 + <_> + + 0 -1 3877 -1.0299839824438095e-01 + + 4.5398610830307007e-01 -1.6315529122948647e-02 + <_> + + 0 -1 3878 -1.4695020392537117e-02 + + -1.8050310015678406e-01 4.8061780631542206e-02 + <_> + + 0 -1 3879 6.0288330132607371e-05 + + -9.8974503576755524e-02 3.8105670362710953e-02 + <_> + + 0 -1 3880 -1.3763650320470333e-02 + + 4.5689401030540466e-01 -2.0808599889278412e-02 + <_> + + 0 -1 3881 5.1598600111901760e-03 + + 2.8479820117354393e-02 -1.9778659939765930e-01 + <_> + + 0 -1 3882 6.6321617923676968e-03 + + -6.1560358852148056e-02 1.4045900106430054e-01 + <_> + + 0 -1 3883 -1.1073590256273746e-02 + + 1.1272329837083817e-01 -3.8423039019107819e-02 + <_> + + 0 -1 3884 7.3836948722600937e-03 + + 2.4575280025601387e-02 -3.3994451165199280e-01 + <_> + + 0 -1 3885 -1.9277689978480339e-02 + + 1.5732249617576599e-01 -5.8382220566272736e-02 + <_> + + 0 -1 3886 -2.6209199801087379e-02 + + -3.2575431466102600e-01 3.5296149551868439e-02 + <_> + + 0 -1 3887 1.3872079551219940e-02 + + 2.7504689991474152e-02 -2.0510050654411316e-01 + <_> + + 0 -1 3888 2.5171930901706219e-03 + + 6.9805637001991272e-02 -1.1518660187721252e-01 + <_> + + 0 -1 3889 6.7753292620182037e-02 + + -3.7268139421939850e-02 2.3363080620765686e-01 + <_> + + 0 -1 3890 -2.4352179840207100e-02 + + -2.1191249787807465e-01 4.2971581220626831e-02 + <_> + + 0 -1 3891 -1.5085450373589993e-02 + + 1.4743280410766602e-01 -3.8589131087064743e-02 + <_> + + 0 -1 3892 3.0052060261368752e-02 + + 4.3882489204406738e-02 -2.0401340723037720e-01 + <_> + + 0 -1 3893 -7.9878583550453186e-02 + + 7.1355827152729034e-02 -3.5806309431791306e-02 + <_> + + 0 -1 3894 -4.9845650792121887e-02 + + 2.8991028666496277e-01 -2.9193209484219551e-02 + <_> + + 0 -1 3895 6.0983549803495407e-02 + + 1.1078090406954288e-02 -8.0549037456512451e-01 + <_> + + 0 -1 3896 -2.4187229573726654e-02 + + 2.0816670358181000e-01 -4.0332991629838943e-02 + <_> + + 0 -1 3897 2.9581909999251366e-02 + + 1.7189880833029747e-02 -3.0174249410629272e-01 + <_> + + 0 -1 3898 -9.6158936619758606e-02 + + -3.6115181446075439e-01 2.1451879292726517e-02 + <_> + + 0 -1 3899 1.1087789898738265e-03 + + 6.0711268335580826e-02 -1.2995730340480804e-01 + <_> + + 0 -1 3900 3.6577019840478897e-02 + + -1.5757689252495766e-02 6.1568331718444824e-01 + <_> + + 0 -1 3901 8.9887566864490509e-02 + + 7.5012152083218098e-03 -8.4639918804168701e-01 + <_> + + 0 -1 3902 5.2048689685761929e-03 + + -5.0408910959959030e-02 1.5618799626827240e-01 + <_> + + 0 -1 3903 3.4727361053228378e-02 + + 2.1034790202975273e-02 -2.1834190189838409e-01 + <_> + + 0 -1 3904 -5.4695051163434982e-02 + + -8.3126282691955566e-01 8.9029762893915176e-03 + <_> + + 0 -1 3905 1.5987730026245117e-01 + + 8.5425339639186859e-03 -6.9280862808227539e-01 + <_> + + 0 -1 3906 -3.8558691740036011e-02 + + -2.7078241109848022e-01 2.7025369927287102e-02 + <_> + + 0 -1 3907 -7.1866370737552643e-02 + + -3.9044618606567383e-01 1.0923280380666256e-02 + <_> + + 0 -1 3908 1.9590340554714203e-01 + + 1.3423370197415352e-02 -5.4260522127151489e-01 + <_> + + 0 -1 3909 -2.2330079227685928e-02 + + -1.7275239527225494e-01 2.9058510437607765e-02 + <_> + + 0 -1 3910 5.1018559932708740e-01 + + 1.1418639682233334e-02 -6.7876529693603516e-01 + <_> + + 0 -1 3911 -1.1239909566938877e-02 + + 1.1462499946355820e-01 -5.6867629289627075e-02 + <_> + + 0 -1 3912 1.7486160621047020e-02 + + 5.2641868591308594e-02 -1.6195179522037506e-01 + <_> + + 0 -1 3913 -1.4517609961330891e-03 + + -1.0877469927072525e-01 5.6960400193929672e-02 + <_> + + 0 -1 3914 3.7016559392213821e-02 + + 1.7460089176893234e-02 -4.6505320072174072e-01 + <_> + + 0 -1 3915 -8.6366441100835800e-03 + + 7.3076270520687103e-02 -1.0616590082645416e-01 + <_> + + 0 -1 3916 1.9361129961907864e-03 + + -1.4585369825363159e-01 5.9394489973783493e-02 + <_> + + 0 -1 3917 -2.3119550198316574e-02 + + -9.4876237213611603e-02 3.0387479811906815e-02 + <_> + + 0 -1 3918 6.3178739510476589e-03 + + -1.0537099838256836e-01 7.7892847359180450e-02 + <_> + + 0 -1 3919 1.0961949825286865e-02 + + -6.6041983664035797e-02 1.0566339641809464e-01 + <_> + + 0 -1 3920 -4.2129520326852798e-02 + + 2.4344080686569214e-01 -5.1573678851127625e-02 + <_> + + 0 -1 3921 4.5132819563150406e-02 + + 1.0772050358355045e-02 -7.6156777143478394e-01 + <_> + + 0 -1 3922 9.4924736768007278e-03 + + 4.5273378491401672e-02 -1.8770030140876770e-01 + <_> + + 0 -1 3923 -1.1573860049247742e-01 + + 4.4831728935241699e-01 -8.6225848644971848e-03 + <_> + + 0 -1 3924 1.5801179688423872e-03 + + -1.0931409895420074e-01 7.9391218721866608e-02 + <_> + + 0 -1 3925 -4.4442281126976013e-02 + + 3.3827048540115356e-01 -2.6649719104170799e-02 + <_> + + 0 -1 3926 -6.5993092954158783e-02 + + -5.3106492757797241e-01 1.7543010413646698e-02 + <_> + + 0 -1 3927 -1.0968820191919804e-02 + + -1.6612820327281952e-01 4.9488350749015808e-02 + <_> + + 0 -1 3928 3.8149021565914154e-02 + + -4.1509900242090225e-02 2.0616669952869415e-01 + <_> + + 0 -1 3929 4.0625538676977158e-03 + + 4.8925049602985382e-02 -8.4866181015968323e-02 + <_> + + 0 -1 3930 3.2693019602447748e-03 + + -1.1883019655942917e-01 8.6803138256072998e-02 + <_> + + 0 -1 3931 -1.2488859938457608e-03 + + -1.4354729652404785e-01 2.1422969177365303e-02 + <_> + + 0 -1 3932 -1.7064889892935753e-02 + + -5.2316349744796753e-01 1.6529040411114693e-02 + <_> + + 0 -1 3933 -2.3354699835181236e-02 + + -1.9698520004749298e-01 2.1972300484776497e-02 + <_> + + 0 -1 3934 2.7899529784917831e-02 + + 3.8033228367567062e-02 -2.2323200106620789e-01 + <_> + + 0 -1 3935 -6.7869402468204498e-02 + + -4.2076128721237183e-01 1.0559639893472195e-02 + <_> + + 0 -1 3936 5.7542059570550919e-02 + + -4.2111430317163467e-02 2.3515710234642029e-01 + <_> + + 0 -1 3937 -2.1877309679985046e-01 + + 6.9553351402282715e-01 -9.9031934514641762e-03 + <_> + + 0 -1 3938 3.7776291370391846e-01 + + -2.4721829220652580e-02 3.0367389321327209e-01 + <_> + + 0 -1 3939 4.1029900312423706e-02 + + 2.1999280899763107e-02 -2.4707089364528656e-01 + <_> + + 0 -1 3940 2.5587070733308792e-02 + + 4.2045179754495621e-02 -2.2333100438117981e-01 + <_> + + 0 -1 3941 6.7200772464275360e-02 + + -1.6648389399051666e-02 2.4265660345554352e-01 + <_> + + 0 -1 3942 2.8230389580130577e-02 + + 2.9572259634733200e-02 -3.0128848552703857e-01 + <_> + + 0 -1 3943 2.4588680267333984e-01 + + 1.9440819742158055e-03 -4.2153918743133545e-01 + <_> + + 0 -1 3944 -9.5752447843551636e-02 + + -6.4711397886276245e-01 1.3180449604988098e-02 + <_> + + 0 -1 3945 -1.0596579872071743e-02 + + -2.0484970510005951e-01 2.8054440394043922e-02 + <_> + + 0 -1 3946 6.7103967070579529e-02 + + 2.9053989797830582e-02 -2.6770511269569397e-01 + <_> + + 0 -1 3947 -7.9280838370323181e-02 + + 2.1911109983921051e-01 -1.5684010460972786e-02 + <_> + + 0 -1 3948 -4.0710358880460262e-03 + + 2.2031579911708832e-01 -4.0581289678812027e-02 + <_> + + 0 -1 3949 3.7690360099077225e-02 + + -1.2946240603923798e-01 6.1921589076519012e-02 + <_> + + 0 -1 3950 1.8453929573297501e-02 + + -3.2800889015197754e-01 2.9745969921350479e-02 + <_> + + 0 -1 3951 1.5218369662761688e-01 + + 1.1928870342671871e-02 -4.3678689002990723e-01 + <_> + + 0 -1 3952 1.0948959738016129e-01 + + 2.4663779884576797e-02 -3.1567180156707764e-01 + <_> + + 0 -1 3953 -4.4906709343194962e-02 + + 2.3082759976387024e-01 -2.2163389250636101e-02 + <_> + + 0 -1 3954 1.4668619632720947e-01 + + 1.8490659072995186e-02 -4.6669480204582214e-01 + <_> + + 0 -1 3955 -4.0597580373287201e-02 + + 2.0691379904747009e-01 -4.1412089020013809e-02 + <_> + 293 + -1.3393770456314087e+00 + + <_> + + 0 -1 3956 2.5723339058458805e-03 + + -2.4097059667110443e-01 1.5659730136394501e-01 + <_> + + 0 -1 3957 5.7603712193667889e-03 + + -4.3601021170616150e-01 8.0516032874584198e-02 + <_> + + 0 -1 3958 -1.0138600319623947e-01 + + 3.9704030752182007e-01 -6.5761536359786987e-02 + <_> + + 0 -1 3959 1.3221249682828784e-03 + + -4.2382979393005371e-01 2.8659680858254433e-02 + <_> + + 0 -1 3960 5.4164527682587504e-04 + + 6.7418687045574188e-02 -3.1019261479377747e-01 + <_> + + 0 -1 3961 2.4447739124298096e-03 + + 1.3928419910371304e-02 -2.4488939344882965e-01 + <_> + + 0 -1 3962 1.4049450401216745e-03 + + -1.5040999650955200e-01 1.2638579308986664e-01 + <_> + + 0 -1 3963 1.1241709580644965e-03 + + -2.7436348795890808e-01 7.1175657212734222e-02 + <_> + + 0 -1 3964 -1.3413740089163184e-03 + + -3.7685438990592957e-01 5.0038158893585205e-02 + <_> + + 0 -1 3965 4.1714560240507126e-02 + + 1.1733000166714191e-02 -5.4509437084197998e-01 + <_> + + 0 -1 3966 2.1810019388794899e-03 + + -2.0847110450267792e-01 8.4929227828979492e-02 + <_> + + 0 -1 3967 1.9655700773000717e-02 + + 2.9568189755082130e-02 -2.4840490520000458e-01 + <_> + + 0 -1 3968 4.9905799096450210e-04 + + -1.7222259938716888e-01 9.3910522758960724e-02 + <_> + + 0 -1 3969 3.3110571093857288e-03 + + 7.9480826854705811e-02 -1.8249939382076263e-01 + <_> + + 0 -1 3970 3.4921199548989534e-03 + + 6.0159709304571152e-02 -2.3041090369224548e-01 + <_> + + 0 -1 3971 1.3379369629547000e-03 + + -7.8347019851207733e-02 1.5814539790153503e-01 + <_> + + 0 -1 3972 -3.4234288614243269e-04 + + -1.5121580660343170e-01 9.5998182892799377e-02 + <_> + + 0 -1 3973 -7.2008459828794003e-03 + + 1.0716210305690765e-01 -1.2086699903011322e-01 + <_> + + 0 -1 3974 -3.3037480898201466e-03 + + -1.9142769277095795e-01 7.1347109973430634e-02 + <_> + + 0 -1 3975 -8.1909723579883575e-02 + + -8.5086518526077271e-01 6.6832960583269596e-03 + <_> + + 0 -1 3976 -5.2563002100214362e-04 + + 7.1854703128337860e-02 -2.3162660002708435e-01 + <_> + + 0 -1 3977 -2.1477319300174713e-02 + + 2.2399149835109711e-01 -3.2982278615236282e-02 + <_> + + 0 -1 3978 -5.6700430810451508e-02 + + 5.1475530862808228e-01 -2.3378230631351471e-02 + <_> + + 0 -1 3979 1.8419699743390083e-02 + + 1.8853360787034035e-02 -4.4701090455055237e-01 + <_> + + 0 -1 3980 -8.8926553726196289e-03 + + 1.8497599661350250e-01 -6.6978506743907928e-02 + <_> + + 0 -1 3981 1.2642369605600834e-02 + + 8.6571149528026581e-02 -1.4233930408954620e-01 + <_> + + 0 -1 3982 8.0502573400735855e-03 + + -7.7052421867847443e-02 2.1340900659561157e-01 + <_> + + 0 -1 3983 -6.9165248423814774e-03 + + -1.7848269641399384e-01 5.6415598839521408e-02 + <_> + + 0 -1 3984 -1.4194440096616745e-02 + + 1.8763299286365509e-01 -6.7588217556476593e-02 + <_> + + 0 -1 3985 3.5530389286577702e-03 + + 3.8925249129533768e-02 -1.4981240034103394e-01 + <_> + + 0 -1 3986 4.8001301474869251e-03 + + 4.4963311403989792e-02 -2.4595139920711517e-01 + <_> + + 0 -1 3987 9.0420730412006378e-03 + + -5.3614400327205658e-02 1.3824699819087982e-01 + <_> + + 0 -1 3988 4.3342178687453270e-03 + + -8.6166441440582275e-02 1.2793409824371338e-01 + <_> + + 0 -1 3989 1.2264699675142765e-02 + + 3.6203060299158096e-02 -3.7494099140167236e-01 + <_> + + 0 -1 3990 4.9155529588460922e-02 + + -9.1319262981414795e-02 1.2587989866733551e-01 + <_> + + 0 -1 3991 -5.8642931981012225e-04 + + 9.3702591955661774e-02 -1.0736119747161865e-01 + <_> + + 0 -1 3992 3.2971050590276718e-02 + + 2.7238529175519943e-02 -4.5005699992179871e-01 + <_> + + 0 -1 3993 1.6174600459635258e-03 + + 3.2863009721040726e-02 -1.4241309463977814e-01 + <_> + + 0 -1 3994 1.0178020456805825e-03 + + 6.9898538291454315e-02 -1.7507210373878479e-01 + <_> + + 0 -1 3995 3.4081579651683569e-03 + + -7.7970616519451141e-02 5.8423690497875214e-02 + <_> + + 0 -1 3996 -6.9078300148248672e-03 + + 1.1711090058088303e-01 -9.5380999147891998e-02 + <_> + + 0 -1 3997 -7.8317627776414156e-04 + + 6.3730940222740173e-02 -8.8190883398056030e-02 + <_> + + 0 -1 3998 -1.3578870333731174e-02 + + -2.7168250083923340e-01 3.9688158780336380e-02 + <_> + + 0 -1 3999 -8.0021530389785767e-02 + + 6.0115522146224976e-01 -2.4968839716166258e-03 + <_> + + 0 -1 4000 -1.7085570143535733e-03 + + 1.0888680070638657e-01 -1.0520359873771667e-01 + <_> + + 0 -1 4001 8.5700387135148048e-03 + + -4.1784621775150299e-02 1.4857980608940125e-01 + <_> + + 0 -1 4002 1.5518560074269772e-02 + + 2.1855160593986511e-02 -4.5708781480789185e-01 + <_> + + 0 -1 4003 -1.5739940572530031e-03 + + 5.0655461847782135e-02 -6.9658473134040833e-02 + <_> + + 0 -1 4004 -1.0979890357702971e-03 + + 7.9917587339878082e-02 -1.1895059794187546e-01 + <_> + + 0 -1 4005 -2.6248019188642502e-02 + + 7.0614987611770630e-01 -1.3660780154168606e-02 + <_> + + 0 -1 4006 -1.0281460359692574e-02 + + -1.8412110209465027e-01 6.6442340612411499e-02 + <_> + + 0 -1 4007 -3.6530280485749245e-03 + + 1.2995550036430359e-01 -5.8351561427116394e-02 + <_> + + 0 -1 4008 7.8363716602325439e-03 + + 2.7073230594396591e-02 -3.3601909875869751e-01 + <_> + + 0 -1 4009 -1.5283710323274136e-02 + + 2.5562399625778198e-01 -3.5940971225500107e-02 + <_> + + 0 -1 4010 -6.7279259674251080e-03 + + 2.4661159515380859e-01 -4.8673499375581741e-02 + <_> + + 0 -1 4011 1.7807850241661072e-01 + + 6.0471030883491039e-03 -7.2566151618957520e-01 + <_> + + 0 -1 4012 -1.0486179962754250e-03 + + -1.9335940480232239e-01 5.0940699875354767e-02 + <_> + + 0 -1 4013 8.9163314551115036e-03 + + 3.3024791628122330e-02 -1.6986289620399475e-01 + <_> + + 0 -1 4014 4.0643039392307401e-04 + + -1.3117119669914246e-01 6.6818282008171082e-02 + <_> + + 0 -1 4015 -4.7499048709869385e-01 + + -4.0152749419212341e-01 6.3146720640361309e-03 + <_> + + 0 -1 4016 1.0430049896240234e-01 + + 2.4024970829486847e-02 -3.2695800065994263e-01 + <_> + + 0 -1 4017 -5.1650121808052063e-02 + + 1.6934829950332642e-01 -1.5539200045168400e-02 + <_> + + 0 -1 4018 4.0506269782781601e-02 + + -2.2082980722188950e-02 3.9694729447364807e-01 + <_> + + 0 -1 4019 2.4179749190807343e-02 + + 2.1926779299974442e-02 -4.3460670113563538e-01 + <_> + + 0 -1 4020 -3.0531319789588451e-03 + + -1.4108030498027802e-01 5.6175179779529572e-02 + <_> + + 0 -1 4021 -1.7123650759458542e-02 + + -6.3341897726058960e-01 9.8466947674751282e-03 + <_> + + 0 -1 4022 4.1705969721078873e-02 + + 1.0977629572153091e-02 -6.7681282758712769e-01 + <_> + + 0 -1 4023 4.3895491398870945e-03 + + -5.7781290262937546e-02 1.5501640737056732e-01 + <_> + + 0 -1 4024 -4.4786250218749046e-03 + + -1.6706019639968872e-01 4.6572938561439514e-02 + <_> + + 0 -1 4025 4.8733421135693789e-04 + + -1.5037140250205994e-01 4.6920441091060638e-02 + <_> + + 0 -1 4026 1.5530640259385109e-02 + + 2.2556010633707047e-02 -3.2370451092720032e-01 + <_> + + 0 -1 4027 4.5443180948495865e-02 + + -9.8806591704487801e-03 6.0815322399139404e-01 + <_> + + 0 -1 4028 -7.7960297465324402e-02 + + 4.0743818879127502e-01 -1.8391529098153114e-02 + <_> + + 0 -1 4029 -4.5014719944447279e-04 + + -3.8319730758666992e-01 1.3420820236206055e-02 + <_> + + 0 -1 4030 -2.1852780133485794e-02 + + -4.4697651267051697e-01 1.5379330143332481e-02 + <_> + + 0 -1 4031 -6.3410878181457520e-02 + + 3.9926728606224060e-01 -2.2168820723891258e-02 + <_> + + 0 -1 4032 -6.6417120397090912e-03 + + -1.4594499766826630e-01 5.1541730761528015e-02 + <_> + + 0 -1 4033 2.0355410873889923e-02 + + -2.3113679140806198e-02 1.8792650103569031e-01 + <_> + + 0 -1 4034 9.2754261568188667e-03 + + -5.5808931589126587e-02 1.3504269719123840e-01 + <_> + + 0 -1 4035 -6.4075283706188202e-02 + + 2.6259770989418030e-01 -3.1913250684738159e-02 + <_> + + 0 -1 4036 5.7537898421287537e-02 + + 3.4703690558671951e-02 -2.7203989028930664e-01 + <_> + + 0 -1 4037 -1.3369999825954437e-02 + + -1.0251790285110474e-01 2.0719829946756363e-02 + <_> + + 0 -1 4038 2.9637520201504230e-03 + + -5.7579819113016129e-02 1.3346299529075623e-01 + <_> + + 0 -1 4039 -4.7313207760453224e-03 + + -1.4229220151901245e-01 5.3106248378753662e-02 + <_> + + 0 -1 4040 1.2967540323734283e-01 + + -2.1926470100879669e-02 3.3583769202232361e-01 + <_> + + 0 -1 4041 -2.8757948894053698e-03 + + 7.4970930814743042e-02 -1.0183060169219971e-01 + <_> + + 0 -1 4042 -1.3546359725296497e-02 + + -1.5313720703125000e-01 5.2247390151023865e-02 + <_> + + 0 -1 4043 6.3532173633575439e-02 + + 9.1543495655059814e-03 -7.4869108200073242e-01 + <_> + + 0 -1 4044 -1.0261409915983677e-02 + + 1.2742519378662109e-01 -5.6786071509122849e-02 + <_> + + 0 -1 4045 -4.3331928551197052e-02 + + -6.1829072237014771e-01 8.0406935885548592e-03 + <_> + + 0 -1 4046 4.0195342153310776e-03 + + -5.4130308330059052e-02 1.4864480495452881e-01 + <_> + + 0 -1 4047 6.7003332078456879e-03 + + 3.7507299333810806e-02 -1.9986230134963989e-01 + <_> + + 0 -1 4048 -1.1208239942789078e-02 + + -1.4704710245132446e-01 5.7189401239156723e-02 + <_> + + 0 -1 4049 -3.7890970706939697e-03 + + 1.5529400110244751e-01 -3.7930488586425781e-02 + <_> + + 0 -1 4050 -1.1098479852080345e-02 + + 1.7850440740585327e-01 -4.5689649879932404e-02 + <_> + + 0 -1 4051 -7.3761218227446079e-03 + + -1.0891640186309814e-01 7.4425593018531799e-02 + <_> + + 0 -1 4052 -3.2149269245564938e-03 + + 9.0641707181930542e-02 -9.4377033412456512e-02 + <_> + + 0 -1 4053 -3.5010059364140034e-03 + + -1.3498190045356750e-01 6.6652722656726837e-02 + <_> + + 0 -1 4054 -1.4920319699740503e-05 + + -1.0505480319261551e-01 8.4583170711994171e-02 + <_> + + 0 -1 4055 9.5882397145032883e-03 + + 1.9421499222517014e-02 -2.4732840061187744e-01 + <_> + + 0 -1 4056 5.7274959981441498e-02 + + 8.1852423027157784e-03 -7.9508548974990845e-01 + <_> + + 0 -1 4057 2.4549640715122223e-02 + + -1.5515980310738087e-02 4.8995479941368103e-01 + <_> + + 0 -1 4058 -4.6792559325695038e-02 + + -8.4720087051391602e-01 9.0526090934872627e-03 + <_> + + 0 -1 4059 3.1038739252835512e-03 + + -5.3271029144525528e-02 7.8815557062625885e-02 + <_> + + 0 -1 4060 -3.4241031855344772e-02 + + -4.8161220550537109e-01 1.3654340058565140e-02 + <_> + + 0 -1 4061 4.4056270271539688e-03 + + -4.9280438572168350e-02 7.8709162771701813e-02 + <_> + + 0 -1 4062 2.3878510110080242e-03 + + -7.6887659728527069e-02 8.4614582359790802e-02 + <_> + + 0 -1 4063 -1.1621230281889439e-02 + + -2.3086050152778625e-01 2.2584810853004456e-02 + <_> + + 0 -1 4064 2.5225759018212557e-03 + + -5.0813131034374237e-02 1.3810400664806366e-01 + <_> + + 0 -1 4065 1.3507470488548279e-01 + + 7.5730998069047928e-03 -4.7955051064491272e-01 + <_> + + 0 -1 4066 -2.2317951079457998e-03 + + -9.0258792042732239e-02 8.3118766546249390e-02 + <_> + + 0 -1 4067 -3.0061710625886917e-02 + + -5.1799142360687256e-01 1.2881710194051266e-02 + <_> + + 0 -1 4068 -4.5464351773262024e-02 + + 2.0660980045795441e-01 -3.4860398620367050e-02 + <_> + + 0 -1 4069 -9.2374589294195175e-03 + + -1.4695020020008087e-01 3.1320258975028992e-02 + <_> + + 0 -1 4070 6.0185948386788368e-03 + + 6.3885621726512909e-02 -1.1779619753360748e-01 + <_> + + 0 -1 4071 -1.0322810150682926e-02 + + 1.7958350479602814e-01 -4.6830028295516968e-02 + <_> + + 0 -1 4072 -1.7961780540645123e-03 + + -1.1374049633741379e-01 6.1730381101369858e-02 + <_> + + 0 -1 4073 7.1363700553774834e-03 + + 3.3574521541595459e-02 -1.5472589433193207e-01 + <_> + + 0 -1 4074 6.9487772881984711e-02 + + -5.9162009507417679e-02 1.3841110467910767e-01 + <_> + + 0 -1 4075 -3.8321871310472488e-02 + + 1.5628719329833984e-01 -3.1815651804208755e-02 + <_> + + 0 -1 4076 3.9706169627606869e-03 + + 5.1252529025077820e-02 -1.7615999281406403e-01 + <_> + + 0 -1 4077 -3.9275288581848145e-03 + + 7.8947998583316803e-02 -5.1486730575561523e-02 + <_> + + 0 -1 4078 1.9882800988852978e-03 + + -5.0474651157855988e-02 1.3366329669952393e-01 + <_> + + 0 -1 4079 -1.6472870483994484e-03 + + 4.9180198460817337e-02 -5.3437490016222000e-02 + <_> + + 0 -1 4080 -1.1580109596252441e-02 + + -1.3224309682846069e-01 5.8321509510278702e-02 + <_> + + 0 -1 4081 4.3496791273355484e-02 + + -2.3527380079030991e-02 1.2179140001535416e-01 + <_> + + 0 -1 4082 1.8956169951707125e-03 + + 5.6072939187288284e-02 -1.1997289955615997e-01 + <_> + + 0 -1 4083 2.4906420148909092e-03 + + -1.2799920141696930e-01 3.5218570381402969e-02 + <_> + + 0 -1 4084 -6.0253150761127472e-02 + + -7.8707909584045410e-01 7.7965850941836834e-03 + <_> + + 0 -1 4085 -1.5306809917092323e-02 + + -1.2276060134172440e-01 4.2537391185760498e-02 + <_> + + 0 -1 4086 3.6899570841342211e-04 + + -1.2192569673061371e-01 5.9650231152772903e-02 + <_> + + 0 -1 4087 3.0398070812225342e-03 + + -6.3023842871189117e-02 5.0918091088533401e-02 + <_> + + 0 -1 4088 -3.5760499304160476e-04 + + -7.6859332621097565e-02 8.6624316871166229e-02 + <_> + + 0 -1 4089 -2.7939230203628540e-03 + + 1.3074369728565216e-01 -4.6912711113691330e-02 + <_> + + 0 -1 4090 4.2060539126396179e-03 + + -5.3119719028472900e-02 1.2866240739822388e-01 + <_> + + 0 -1 4091 5.1448699086904526e-02 + + 1.1080370284616947e-02 -4.1434210538864136e-01 + <_> + + 0 -1 4092 3.2859880477190018e-02 + + 1.7495309934020042e-02 -3.7538790702819824e-01 + <_> + + 0 -1 4093 -4.8408061265945435e-02 + + 1.7011879384517670e-01 -2.3726450279355049e-02 + <_> + + 0 -1 4094 1.4061340130865574e-02 + + 2.5981390848755836e-02 -2.7635771036148071e-01 + <_> + + 0 -1 4095 5.2196439355611801e-02 + + -9.5534622669219971e-03 1.0973469913005829e-01 + <_> + + 0 -1 4096 4.4780261814594269e-02 + + -2.7032930403947830e-02 2.7434709668159485e-01 + <_> + + 0 -1 4097 -3.7703409325331450e-03 + + -1.4412869513034821e-01 5.2342470735311508e-02 + <_> + + 0 -1 4098 -4.1479258798062801e-03 + + -1.3706830143928528e-01 4.9621090292930603e-02 + <_> + + 0 -1 4099 1.4685150235891342e-02 + + -4.9949668347835541e-02 1.3658650219440460e-01 + <_> + + 0 -1 4100 1.0325849987566471e-02 + + 8.3659462630748749e-02 -1.0378009825944901e-01 + <_> + + 0 -1 4101 -1.7972270143218338e-04 + + -8.6658917367458344e-02 2.2592369467020035e-02 + <_> + + 0 -1 4102 2.0081000402569771e-02 + + -1.9589949399232864e-02 3.4358739852905273e-01 + <_> + + 0 -1 4103 -2.2905580699443817e-02 + + -4.2482820153236389e-01 1.5416770242154598e-02 + <_> + + 0 -1 4104 -5.5506028234958649e-02 + + 7.3143810033798218e-01 -9.4347409904003143e-03 + <_> + + 0 -1 4105 -1.7899540252983570e-03 + + -8.1951782107353210e-02 3.5823788493871689e-02 + <_> + + 0 -1 4106 -8.0740358680486679e-04 + + 8.6620979011058807e-02 -7.8758612275123596e-02 + <_> + + 0 -1 4107 2.4445019662380219e-02 + + -2.2004250437021255e-02 9.4158843159675598e-02 + <_> + + 0 -1 4108 -7.5640110298991203e-03 + + 1.2011729925870895e-01 -7.2349771857261658e-02 + <_> + + 0 -1 4109 2.3397218901664019e-03 + + -8.1034347414970398e-02 9.8173618316650391e-02 + <_> + + 0 -1 4110 -3.1817611306905746e-02 + + -3.5730469226837158e-01 1.9601309671998024e-02 + <_> + + 0 -1 4111 1.0028080083429813e-02 + + -2.4160459637641907e-02 3.1340339779853821e-01 + <_> + + 0 -1 4112 9.0504523541312665e-05 + + 5.8050628751516342e-02 -1.1760439723730087e-01 + <_> + + 0 -1 4113 -2.1010750904679298e-02 + + -2.0346039533615112e-01 3.4145411103963852e-02 + <_> + + 0 -1 4114 -7.1200268575921655e-04 + + 6.3303150236606598e-02 -1.0497389733791351e-01 + <_> + + 0 -1 4115 -7.6272932346910238e-04 + + -7.4432566761970520e-02 3.4912228584289551e-02 + <_> + + 0 -1 4116 -5.8506328612565994e-02 + + 5.5758380889892578e-01 -1.2666489928960800e-02 + <_> + + 0 -1 4117 2.4057500995695591e-03 + + 4.4605068862438202e-02 -1.1581590026617050e-01 + <_> + + 0 -1 4118 -1.9729519262909889e-02 + + -4.7550109028816223e-01 1.5548559837043285e-02 + <_> + + 0 -1 4119 -2.2645130753517151e-02 + + 1.1828950047492981e-01 -2.2170929238200188e-02 + <_> + + 0 -1 4120 -1.3123790267854929e-03 + + 5.0635538995265961e-02 -1.3423310220241547e-01 + <_> + + 0 -1 4121 -5.9856739826500416e-03 + + 5.4273821413516998e-02 -6.9639056921005249e-02 + <_> + + 0 -1 4122 5.2245449274778366e-02 + + -1.8341360613703728e-02 4.1689381003379822e-01 + <_> + + 0 -1 4123 -4.6837949194014072e-03 + + -1.2121260166168213e-01 3.9187919348478317e-02 + <_> + + 0 -1 4124 -1.5208399854600430e-02 + + -9.6487842500209808e-02 6.5325021743774414e-02 + <_> + + 0 -1 4125 -5.7328920811414719e-03 + + 2.1023470163345337e-01 -3.1721260398626328e-02 + <_> + + 0 -1 4126 -3.7612610030919313e-03 + + 1.0085880011320114e-01 -6.1392951756715775e-02 + <_> + + 0 -1 4127 -1.0980520397424698e-02 + + -1.8342439830303192e-01 1.7121249809861183e-02 + <_> + + 0 -1 4128 2.7213071007281542e-03 + + -5.8404140174388885e-02 1.0729049891233444e-01 + <_> + + 0 -1 4129 -1.8969269469380379e-02 + + 7.4764728546142578e-02 -3.4056201577186584e-02 + <_> + + 0 -1 4130 -7.1104627568274736e-04 + + -1.4749570190906525e-01 5.2447158843278885e-02 + <_> + + 0 -1 4131 9.4774961471557617e-03 + + -2.5232490152120590e-02 1.0677599906921387e-01 + <_> + + 0 -1 4132 1.0275880247354507e-01 + + 1.0039360262453556e-02 -6.4630568027496338e-01 + <_> + + 0 -1 4133 -1.1228179931640625e-01 + + -5.7247608900070190e-01 6.3971187919378281e-03 + <_> + + 0 -1 4134 -2.5683579966425896e-02 + + -3.2004079222679138e-01 1.7239449545741081e-02 + <_> + + 0 -1 4135 2.5494299829006195e-02 + + -2.2127779200673103e-02 1.1838120222091675e-01 + <_> + + 0 -1 4136 -3.0458789318799973e-02 + + -5.8747881650924683e-01 9.8222652450203896e-03 + <_> + + 0 -1 4137 -2.7816120535135269e-02 + + 3.6785709857940674e-01 -1.2260340154170990e-02 + <_> + + 0 -1 4138 -1.2768269516527653e-03 + + 2.4150429666042328e-01 -2.4503409862518311e-02 + <_> + + 0 -1 4139 -7.6435826718807220e-02 + + -6.3471722602844238e-01 2.7080429717898369e-03 + <_> + + 0 -1 4140 3.7574430461972952e-04 + + -1.3316820561885834e-01 4.6189591288566589e-02 + <_> + + 0 -1 4141 1.3193810358643532e-02 + + 2.6501480489969254e-02 -6.8515978753566742e-02 + <_> + + 0 -1 4142 -6.3689619302749634e-02 + + 4.1126638650894165e-01 -1.5647120773792267e-02 + <_> + + 0 -1 4143 -8.0426287604495883e-04 + + -9.4006098806858063e-02 3.1002070754766464e-02 + <_> + + 0 -1 4144 8.2476891111582518e-04 + + -1.5928819775581360e-01 3.7096790969371796e-02 + <_> + + 0 -1 4145 4.8443409614264965e-03 + + -2.5698879733681679e-02 1.5079009532928467e-01 + <_> + + 0 -1 4146 2.2941319271922112e-02 + + 2.2941149771213531e-02 -2.7759069204330444e-01 + <_> + + 0 -1 4147 5.6285588070750237e-03 + + 2.0121619105339050e-02 -6.3584417104721069e-02 + <_> + + 0 -1 4148 -8.1927451537922025e-04 + + 5.5934138596057892e-02 -1.0776060074567795e-01 + <_> + + 0 -1 4149 5.1910132169723511e-03 + + -2.6781970635056496e-02 5.5094171315431595e-02 + <_> + + 0 -1 4150 -2.0220499485731125e-02 + + -1.2501780688762665e-01 5.9274829924106598e-02 + <_> + + 0 -1 4151 -3.6798599176108837e-03 + + 6.0474321246147156e-02 -5.9632349759340286e-02 + <_> + + 0 -1 4152 1.0483860038220882e-02 + + -5.3652260452508926e-02 1.2906110286712646e-01 + <_> + + 0 -1 4153 1.7904460430145264e-02 + + 1.4318290166556835e-02 -2.7349731326103210e-01 + <_> + + 0 -1 4154 3.3693820238113403e-01 + + -8.6311781778931618e-03 7.3288571834564209e-01 + <_> + + 0 -1 4155 -1.0807479918003082e-01 + + -5.0707489252090454e-01 6.7152627743780613e-03 + <_> + + 0 -1 4156 -1.2219610065221786e-01 + + -7.9352718591690063e-01 7.4890498071908951e-03 + <_> + + 0 -1 4157 -3.7357630208134651e-03 + + -1.5436430275440216e-01 1.9933359697461128e-02 + <_> + + 0 -1 4158 4.7283530235290527e-02 + + -3.2180741429328918e-02 2.2332429885864258e-01 + <_> + + 0 -1 4159 -4.8949089832603931e-03 + + -1.4440849423408508e-01 2.7687419205904007e-02 + <_> + + 0 -1 4160 -4.6767960302531719e-03 + + 4.2589519172906876e-02 -1.3181249797344208e-01 + <_> + + 0 -1 4161 -4.0526568889617920e-02 + + 1.5155360102653503e-01 -1.3137400150299072e-02 + <_> + + 0 -1 4162 5.1309340633451939e-03 + + -4.2436398565769196e-02 1.9428129494190216e-01 + <_> + + 0 -1 4163 4.9947341904044151e-03 + + 2.0656300708651543e-02 -1.8332560360431671e-01 + <_> + + 0 -1 4164 -1.0946449823677540e-02 + + -1.1576370149850845e-01 6.1964198946952820e-02 + <_> + + 0 -1 4165 -6.7135482095181942e-03 + + 1.5796749293804169e-01 -3.5399619489908218e-02 + <_> + + 0 -1 4166 -3.0990630388259888e-02 + + -1.7271049320697784e-01 3.7916570901870728e-02 + <_> + + 0 -1 4167 -2.7503890451043844e-03 + + 4.1495159268379211e-02 -5.5152788758277893e-02 + <_> + + 0 -1 4168 -2.4700429290533066e-02 + + 2.9076111316680908e-01 -2.0552640780806541e-02 + <_> + + 0 -1 4169 -1.7607269808650017e-02 + + -9.8671503365039825e-02 3.2800450921058655e-02 + <_> + + 0 -1 4170 8.7928329594433308e-04 + + 3.6442421376705170e-02 -1.7518040537834167e-01 + <_> + + 0 -1 4171 6.9036949425935745e-03 + + 2.1444270387291908e-02 -1.1997299641370773e-01 + <_> + + 0 -1 4172 -2.2592858877032995e-03 + + 9.5944248139858246e-02 -8.1264480948448181e-02 + <_> + + 0 -1 4173 1.5885939821600914e-02 + + -3.1494110822677612e-02 8.7531946599483490e-02 + <_> + + 0 -1 4174 1.9379710778594017e-02 + + -3.5075489431619644e-02 1.6199189424514771e-01 + <_> + + 0 -1 4175 -2.3565329611301422e-02 + + 9.9367812275886536e-02 -5.0409961491823196e-02 + <_> + + 0 -1 4176 -6.2582190148532391e-03 + + -1.5962609648704529e-01 5.6871950626373291e-02 + <_> + + 0 -1 4177 1.0289040394127369e-02 + + 3.2422259449958801e-02 -1.1825840175151825e-01 + <_> + + 0 -1 4178 -5.8485912159085274e-03 + + 1.9107459485530853e-01 -3.7084739655256271e-02 + <_> + + 0 -1 4179 -8.5805162787437439e-02 + + -4.0877249836921692e-01 1.2781100347638130e-02 + <_> + + 0 -1 4180 -2.4852859787642956e-03 + + -1.0116399824619293e-01 5.6311480700969696e-02 + <_> + + 0 -1 4181 -7.1535720489919186e-03 + + -4.4118609279394150e-02 2.2217169404029846e-02 + <_> + + 0 -1 4182 1.2644700473174453e-03 + + 6.5305598080158234e-02 -1.2273000180721283e-01 + <_> + + 0 -1 4183 3.9825689047574997e-02 + + -5.0402980297803879e-02 1.4424259960651398e-01 + <_> + + 0 -1 4184 1.3322670012712479e-02 + + 2.3235419392585754e-01 -2.8198169544339180e-02 + <_> + + 0 -1 4185 2.1017350256443024e-02 + + -1.9653260707855225e-02 1.0432569682598114e-01 + <_> + + 0 -1 4186 2.4515210092067719e-01 + + 8.4479590877890587e-03 -7.4833422899246216e-01 + <_> + + 0 -1 4187 4.3030278757214546e-03 + + 3.1172480434179306e-02 -9.4183586537837982e-02 + <_> + + 0 -1 4188 2.2224480286240578e-02 + + -3.9602920413017273e-02 1.5614870190620422e-01 + <_> + + 0 -1 4189 -8.5019748657941818e-03 + + -1.0852319747209549e-01 2.8045600280165672e-02 + <_> + + 0 -1 4190 1.0845540091395378e-02 + + -6.5594159066677094e-02 1.0217399895191193e-01 + <_> + + 0 -1 4191 1.7696369905024767e-03 + + 7.5369141995906830e-02 -9.5298826694488525e-02 + <_> + + 0 -1 4192 1.0289049893617630e-01 + + -1.1767229996621609e-02 4.8167210817337036e-01 + <_> + + 0 -1 4193 -3.5074170678853989e-02 + + -2.6299050450325012e-01 1.0002779774367809e-02 + <_> + + 0 -1 4194 3.8302998989820480e-02 + + 1.0883949697017670e-02 -5.8092927932739258e-01 + <_> + + 0 -1 4195 1.2183119542896748e-02 + + 3.1098999083042145e-02 -5.4257929325103760e-02 + <_> + + 0 -1 4196 2.0388139411807060e-02 + + -3.7379540503025055e-02 1.8725450336933136e-01 + <_> + + 0 -1 4197 6.5857400186359882e-03 + + -4.4194780290126801e-02 6.0033790767192841e-02 + <_> + + 0 -1 4198 5.8739529922604561e-03 + + 3.9219710975885391e-02 -1.5857939422130585e-01 + <_> + + 0 -1 4199 -7.8279033303260803e-02 + + 2.1789179742336273e-01 -1.0094420053064823e-02 + <_> + + 0 -1 4200 1.5336579643189907e-02 + + -3.1219519674777985e-02 2.2452400624752045e-01 + <_> + + 0 -1 4201 1.4171670190989971e-03 + + -1.6625450551509857e-01 2.7684109285473824e-02 + <_> + + 0 -1 4202 -3.4021309111267328e-03 + + -2.8452378511428833e-01 2.2661060094833374e-02 + <_> + + 0 -1 4203 -1.9340340048074722e-02 + + 5.2300518751144409e-01 -5.0734821707010269e-03 + <_> + + 0 -1 4204 -1.6514319926500320e-02 + + 7.0619380474090576e-01 -8.2714930176734924e-03 + <_> + + 0 -1 4205 -6.4589809626340866e-03 + + -1.2104330211877823e-01 3.8718421012163162e-02 + <_> + + 0 -1 4206 -4.3003219179809093e-03 + + -1.2103659659624100e-01 5.5335890501737595e-02 + <_> + + 0 -1 4207 1.0784200392663479e-02 + + -3.8975819945335388e-02 1.9870519638061523e-01 + <_> + + 0 -1 4208 -1.1527650058269501e-03 + + 9.3596100807189941e-02 -6.4248889684677124e-02 + <_> + + 0 -1 4209 -4.2101260274648666e-02 + + -3.0032190680503845e-01 1.5909299254417419e-02 + <_> + + 0 -1 4210 3.0202090274542570e-03 + + -6.5310478210449219e-02 9.4754762947559357e-02 + <_> + + 0 -1 4211 2.9999990016222000e-02 + + 1.7673229798674583e-02 -2.2457149624824524e-01 + <_> + + 0 -1 4212 -1.3678170507773757e-03 + + 1.3394910097122192e-01 -5.0086550414562225e-02 + <_> + + 0 -1 4213 -2.3151950910687447e-02 + + -1.8310110270977020e-01 1.9103579223155975e-02 + <_> + + 0 -1 4214 6.3826322555541992e-02 + + 7.5651248916983604e-03 -8.3116590976715088e-01 + <_> + + 0 -1 4215 -1.4831620454788208e-01 + + -1. 3.4445689525455236e-03 + <_> + + 0 -1 4216 1.3207890151534230e-04 + + 5.1135819405317307e-02 -1.1863200366497040e-01 + <_> + + 0 -1 4217 6.6078707575798035e-02 + + 7.1528651751577854e-03 -4.2906388640403748e-01 + <_> + + 0 -1 4218 6.1758249066770077e-03 + + -5.9010580182075500e-02 1.0781309753656387e-01 + <_> + + 0 -1 4219 -3.3506110310554504e-02 + + -3.7636739015579224e-01 1.7037799581885338e-02 + <_> + + 0 -1 4220 -9.7032980993390083e-03 + + 1.3820339739322662e-01 -4.3922200798988342e-02 + <_> + + 0 -1 4221 -7.2475131601095200e-03 + + -2.2192749381065369e-01 1.2801939621567726e-02 + <_> + + 0 -1 4222 -5.3309328854084015e-02 + + -4.5594760775566101e-01 1.2495010159909725e-02 + <_> + + 0 -1 4223 1.0387069545686245e-02 + + -5.1624130457639694e-02 1.2236239761114120e-01 + <_> + + 0 -1 4224 6.7208573222160339e-02 + + 3.1655121594667435e-02 -2.1086180210113525e-01 + <_> + + 0 -1 4225 -1.5143319964408875e-02 + + 1.7224070429801941e-01 -2.9209939762949944e-02 + <_> + + 0 -1 4226 -3.9284970611333847e-02 + + -4.8226779699325562e-01 1.4366200193762779e-02 + <_> + + 0 -1 4227 -5.1000402309000492e-03 + + 1.3700410723686218e-01 -4.3541591614484787e-02 + <_> + + 0 -1 4228 4.7284159809350967e-03 + + 6.5495520830154419e-02 -1.2913839519023895e-01 + <_> + + 0 -1 4229 -1.1877629905939102e-02 + + 2.0146130025386810e-01 -2.3640049621462822e-02 + <_> + + 0 -1 4230 -4.5396368950605392e-03 + + -1.6872450709342957e-01 4.4881179928779602e-02 + <_> + + 0 -1 4231 -8.0548608675599098e-03 + + 6.5916322171688080e-02 -4.5184228569269180e-02 + <_> + + 0 -1 4232 -4.3037731200456619e-02 + + 1.2817430496215820e-01 -6.3021719455718994e-02 + <_> + + 0 -1 4233 1.0952279716730118e-01 + + 6.0560060665011406e-03 -5.1614511013031006e-01 + <_> + + 0 -1 4234 -7.0019549457356334e-04 + + -1.2845410406589508e-01 4.9936100840568542e-02 + <_> + + 0 -1 4235 -2.9595570595120080e-05 + + 6.7076332867145538e-02 -9.0397119522094727e-02 + <_> + + 0 -1 4236 1.7749640345573425e-01 + + -7.6472861692309380e-03 8.9716571569442749e-01 + <_> + + 0 -1 4237 -5.5364448577165604e-02 + + -6.5513938665390015e-01 6.7208600230515003e-03 + <_> + + 0 -1 4238 -5.1461409777402878e-02 + + -6.5337532758712769e-01 8.9703118428587914e-03 + <_> + + 0 -1 4239 -2.6581719517707825e-02 + + -2.8116428852081299e-01 1.7766090109944344e-02 + <_> + + 0 -1 4240 -6.9034337997436523e-02 + + 9.2583978176116943e-01 -6.2460578046739101e-03 + <_> + + 0 -1 4241 -3.0205730348825455e-02 + + 2.3784290254116058e-01 -1.6295459121465683e-02 + <_> + + 0 -1 4242 -9.1226873919367790e-03 + + -1.4569890499114990e-01 4.5654390007257462e-02 + <_> + + 0 -1 4243 -2.1233780682086945e-01 + + 1.6472199559211731e-01 -1.4758829958736897e-02 + <_> + + 0 -1 4244 -2.6254689320921898e-02 + + 3.0381628870964050e-01 -2.0108530297875404e-02 + <_> + + 0 -1 4245 3.0262209475040436e-03 + + -1.5298280119895935e-01 2.6878539472818375e-02 + <_> + + 0 -1 4246 8.3838596940040588e-02 + + 1.0042349807918072e-02 -5.9345102310180664e-01 + <_> + + 0 -1 4247 1.8845759332180023e-02 + + -4.5260541141033173e-02 8.4220200777053833e-02 + <_> + + 0 -1 4248 -4.8671411350369453e-03 + + -1.1234840005636215e-01 5.6676398962736130e-02 + <_> + 243 + -1.4994510412216187e+00 + + <_> + + 0 -1 4249 1.1900869756937027e-01 + + -2.0186680555343628e-01 2.4417600035667419e-01 + <_> + + 0 -1 4250 2.1277489140629768e-02 + + -2.3454399406909943e-01 1.6303069889545441e-01 + <_> + + 0 -1 4251 3.7066950462758541e-03 + + -2.0559909939765930e-01 1.4982059597969055e-01 + <_> + + 0 -1 4252 3.2929550856351852e-02 + + 7.8803077340126038e-02 -3.3688440918922424e-01 + <_> + + 0 -1 4253 2.5057960301637650e-02 + + -1.5932090580463409e-01 1.6405050456523895e-01 + <_> + + 0 -1 4254 6.5863109193742275e-04 + + -2.7804228663444519e-01 8.3028919994831085e-02 + <_> + + 0 -1 4255 -6.6210910677909851e-02 + + -3.6402150988578796e-01 6.0067348182201385e-02 + <_> + + 0 -1 4256 4.2186300270259380e-03 + + -1.8551510572433472e-01 1.2828220427036285e-01 + <_> + + 0 -1 4257 1.7119459807872772e-03 + + -2.1572509407997131e-01 8.6879499256610870e-02 + <_> + + 0 -1 4258 -2.1390480920672417e-02 + + 1.1124739795923233e-01 -1.4486509561538696e-01 + <_> + + 0 -1 4259 5.5712480098009109e-03 + + 6.2546879053115845e-02 -3.1598201394081116e-01 + <_> + + 0 -1 4260 4.5709838159382343e-03 + + -2.3647899925708771e-01 3.8399569690227509e-02 + <_> + + 0 -1 4261 -1.7086030915379524e-02 + + 2.0653559267520905e-01 -8.6405612528324127e-02 + <_> + + 0 -1 4262 -3.0640950426459312e-02 + + 4.1523000597953796e-01 -2.5601850822567940e-02 + <_> + + 0 -1 4263 2.5803469121456146e-02 + + 4.0156230330467224e-02 -3.7444010376930237e-01 + <_> + + 0 -1 4264 2.6425920426845551e-02 + + 4.2625781148672104e-02 -4.1888910531997681e-01 + <_> + + 0 -1 4265 -1.1849730275571346e-02 + + -3.0619880557060242e-01 5.1505949348211288e-02 + <_> + + 0 -1 4266 -1.6269849613308907e-02 + + -1.9878490269184113e-01 4.2683240026235580e-02 + <_> + + 0 -1 4267 -2.4036159738898277e-02 + + -3.3211991190910339e-01 4.6091418713331223e-02 + <_> + + 0 -1 4268 7.3583971243351698e-04 + + -2.0677410066127777e-01 5.7418260723352432e-02 + <_> + + 0 -1 4269 -2.0423160865902901e-02 + + -2.6922059059143066e-01 4.4893719255924225e-02 + <_> + + 0 -1 4270 1.9533000886440277e-03 + + 4.3481849133968353e-02 -1.4295850694179535e-01 + <_> + + 0 -1 4271 3.3202540129423141e-02 + + 6.1112720519304276e-02 -2.0773139595985413e-01 + <_> + + 0 -1 4272 2.1049549803137779e-02 + + -5.5196329951286316e-02 1.7273330688476562e-01 + <_> + + 0 -1 4273 -4.2487941682338715e-03 + + -3.1202110648155212e-01 3.5714551806449890e-02 + <_> + + 0 -1 4274 1.4544890262186527e-02 + + -1.2891520559787750e-01 1.0874609649181366e-01 + <_> + + 0 -1 4275 4.4858800247311592e-03 + + 5.0264850258827209e-02 -2.2729620337486267e-01 + <_> + + 0 -1 4276 -7.2019517421722412e-02 + + -5.0357151031494141e-01 2.4909170344471931e-02 + <_> + + 0 -1 4277 7.4088312685489655e-02 + + -2.6110179722309113e-02 4.6904951333999634e-01 + <_> + + 0 -1 4278 -1.9376210868358612e-02 + + -8.7742328643798828e-02 5.2696809172630310e-02 + <_> + + 0 -1 4279 -1.5192059800028801e-02 + + -1.6470350325107574e-01 7.4841916561126709e-02 + <_> + + 0 -1 4280 6.7975218407809734e-03 + + -1.2512689828872681e-01 8.2092992961406708e-02 + <_> + + 0 -1 4281 -1.9816169515252113e-03 + + 6.1259880661964417e-02 -1.9138810038566589e-01 + <_> + + 0 -1 4282 -4.0343839675188065e-02 + + -3.4634640812873840e-01 3.3814091235399246e-02 + <_> + + 0 -1 4283 -9.7851715981960297e-03 + + 2.4771960079669952e-01 -5.1031429320573807e-02 + <_> + + 0 -1 4284 1.3061050325632095e-02 + + -5.9378169476985931e-02 1.4298720657825470e-01 + <_> + + 0 -1 4285 1.2519969604909420e-02 + + -1.0087440162897110e-01 2.0617449283599854e-01 + <_> + + 0 -1 4286 6.1620049178600311e-02 + + 1.0850620456039906e-02 -4.9976751208305359e-01 + <_> + + 0 -1 4287 1.5351610258221626e-02 + + 3.0459180474281311e-02 -4.0248531103134155e-01 + <_> + + 0 -1 4288 6.7390319891273975e-03 + + -1.5230870246887207e-01 3.4763731062412262e-02 + <_> + + 0 -1 4289 2.7166040614247322e-02 + + 3.2465178519487381e-02 -3.7905651330947876e-01 + <_> + + 0 -1 4290 -4.9443650990724564e-02 + + -4.1042488813400269e-01 1.5265700407326221e-02 + <_> + + 0 -1 4291 3.2999709248542786e-02 + + 2.8922239318490028e-02 -4.3119680881500244e-01 + <_> + + 0 -1 4292 3.7604149430990219e-02 + + 2.0920699462294579e-02 -3.5471540689468384e-01 + <_> + + 0 -1 4293 1.7311640083789825e-02 + + -1.5490870177745819e-01 7.3543228209018707e-02 + <_> + + 0 -1 4294 -1.7037079669535160e-03 + + -9.5346920192241669e-02 5.1517289131879807e-02 + <_> + + 0 -1 4295 -1.5008790418505669e-02 + + 2.1057499945163727e-01 -5.2197169512510300e-02 + <_> + + 0 -1 4296 -4.1283361613750458e-02 + + -4.8727679252624512e-01 1.6686370596289635e-02 + <_> + + 0 -1 4297 -1.7190299928188324e-02 + + 2.3070749640464783e-01 -5.7094439864158630e-02 + <_> + + 0 -1 4298 3.9707008749246597e-02 + + 1.7016230151057243e-02 -3.8233861327171326e-01 + <_> + + 0 -1 4299 4.7051470726728439e-02 + + 4.2239248752593994e-02 -2.8050369024276733e-01 + <_> + + 0 -1 4300 -1.1948949657380581e-02 + + -2.3056490719318390e-01 2.6532189920544624e-02 + <_> + + 0 -1 4301 -7.9857409000396729e-02 + + -8.4963917732238770e-01 1.2582180090248585e-02 + <_> + + 0 -1 4302 2.5627639144659042e-02 + + 2.3311240598559380e-02 -2.4923819303512573e-01 + <_> + + 0 -1 4303 -3.1094370409846306e-02 + + -2.3769870400428772e-01 4.6116128563880920e-02 + <_> + + 0 -1 4304 4.6573221683502197e-02 + + 2.8770290315151215e-02 -5.3739601373672485e-01 + <_> + + 0 -1 4305 -5.4066929966211319e-02 + + 2.7794760465621948e-01 -4.7770768404006958e-02 + <_> + + 0 -1 4306 1.8918470013886690e-03 + + -9.8254829645156860e-02 4.7856420278549194e-02 + <_> + + 0 -1 4307 3.3229328691959381e-02 + + -5.2595350891351700e-02 2.3564100265502930e-01 + <_> + + 0 -1 4308 1.1775200255215168e-03 + + -2.3401489853858948e-01 2.6142070069909096e-02 + <_> + + 0 -1 4309 1.9482020288705826e-03 + + -1.5223619341850281e-01 7.8751467168331146e-02 + <_> + + 0 -1 4310 5.5945508182048798e-02 + + 1.1540699750185013e-02 -1.9889539480209351e-01 + <_> + + 0 -1 4311 2.9455369338393211e-02 + + 3.3315770328044891e-02 -3.2850489020347595e-01 + <_> + + 0 -1 4312 4.0880320593714714e-03 + + -8.6178407073020935e-02 7.9575799405574799e-02 + <_> + + 0 -1 4313 -5.9127728454768658e-03 + + -1.7738300561904907e-01 6.0648940503597260e-02 + <_> + + 0 -1 4314 -6.2419679015874863e-02 + + 2.4396699666976929e-01 -3.3243889920413494e-03 + <_> + + 0 -1 4315 -3.7195120006799698e-02 + + 2.6807048916816711e-01 -3.9979271590709686e-02 + <_> + + 0 -1 4316 -1.4324760437011719e-01 + + 2.9332828521728516e-01 -2.6897290721535683e-02 + <_> + + 0 -1 4317 -4.2845219373703003e-02 + + -2.5283750891685486e-01 4.1232049465179443e-02 + <_> + + 0 -1 4318 1.1560089886188507e-01 + + -1.4965849928557873e-02 2.4187250435352325e-01 + <_> + + 0 -1 4319 5.0169471651315689e-02 + + 8.8590547442436218e-02 -1.2442570179700851e-01 + <_> + + 0 -1 4320 1.0200110077857971e-01 + + 1.2396319769322872e-02 -3.6982178688049316e-01 + <_> + + 0 -1 4321 -5.2397060208022594e-03 + + -2.5912949442863464e-01 4.0550298988819122e-02 + <_> + + 0 -1 4322 -1.9227810204029083e-02 + + 2.0064230263233185e-01 -6.5223582088947296e-02 + <_> + + 0 -1 4323 -1.1133120395243168e-02 + + -4.6262189745903015e-01 2.4428030475974083e-02 + <_> + + 0 -1 4324 9.7551010549068451e-02 + + 1.2901189737021923e-02 -7.4022471904754639e-01 + <_> + + 0 -1 4325 4.6071741729974747e-02 + + 1.8453989177942276e-02 -4.8419821262359619e-01 + <_> + + 0 -1 4326 -8.3533532917499542e-02 + + -8.8434767723083496e-01 1.6764779575169086e-03 + <_> + + 0 -1 4327 6.0535832308232784e-03 + + -1.5865640342235565e-01 6.7758671939373016e-02 + <_> + + 0 -1 4328 -1.3178240042179823e-03 + + -8.7943129241466522e-02 6.6591359674930573e-02 + <_> + + 0 -1 4329 -2.0939730107784271e-02 + + 2.3358969390392303e-01 -5.2145671099424362e-02 + <_> + + 0 -1 4330 -8.8145419955253601e-02 + + 4.8081308603286743e-01 -1.1917640455067158e-02 + <_> + + 0 -1 4331 1.6344599425792694e-02 + + -5.3838059306144714e-02 2.2349910438060760e-01 + <_> + + 0 -1 4332 -2.2833999991416931e-01 + + 3.6013820767402649e-01 -1.8727909773588181e-02 + <_> + + 0 -1 4333 8.4737362340092659e-03 + + -5.6207131594419479e-02 1.6089470684528351e-01 + <_> + + 0 -1 4334 -9.8505034111440182e-04 + + 1.0108830034732819e-01 -1.0455229878425598e-01 + <_> + + 0 -1 4335 4.9648447893559933e-03 + + -7.9359367489814758e-02 1.3140240311622620e-01 + <_> + + 0 -1 4336 -1.3171610422432423e-02 + + -1.2099819630384445e-01 3.7730131298303604e-02 + <_> + + 0 -1 4337 8.2112876698374748e-03 + + -5.3597409278154373e-02 2.2156579792499542e-01 + <_> + + 0 -1 4338 -4.8930559307336807e-02 + + -3.9349249005317688e-01 1.9850309938192368e-02 + <_> + + 0 -1 4339 7.4527352117002010e-03 + + 5.8218438178300858e-02 -2.5317558646202087e-01 + <_> + + 0 -1 4340 7.7388651669025421e-02 + + -5.7724680751562119e-02 2.0154540240764618e-01 + <_> + + 0 -1 4341 4.9968929961323738e-03 + + 8.9260630309581757e-02 -1.3082459568977356e-01 + <_> + + 0 -1 4342 -4.0977269411087036e-02 + + -1.7190429568290710e-01 2.2051449865102768e-02 + <_> + + 0 -1 4343 3.0041709542274475e-03 + + 4.5379869639873505e-02 -2.4130369722843170e-01 + <_> + + 0 -1 4344 1.5435700118541718e-01 + + -3.2916471362113953e-02 3.2090398669242859e-01 + <_> + + 0 -1 4345 1.5153509564697742e-02 + + 5.3576458245515823e-02 -1.6273179650306702e-01 + <_> + + 0 -1 4346 9.5209293067455292e-02 + + 1.3132530264556408e-02 -4.3389630317687988e-01 + <_> + + 0 -1 4347 -2.2066019475460052e-02 + + 1.8358850479125977e-01 -5.3995680063962936e-02 + <_> + + 0 -1 4348 -4.0623430162668228e-02 + + -4.5687249302864075e-01 1.1119400151073933e-02 + <_> + + 0 -1 4349 -2.1428579930216074e-03 + + 9.5221467316150665e-02 -1.0431689769029617e-01 + <_> + + 0 -1 4350 -9.6598910167813301e-03 + + -2.8121781349182129e-01 3.1387180089950562e-02 + <_> + + 0 -1 4351 -1.7860020697116852e-01 + + 4.6675390005111694e-01 -2.2296290844678879e-02 + <_> + + 0 -1 4352 -2.0536049269139767e-03 + + -8.8460110127925873e-02 2.5863479822874069e-02 + <_> + + 0 -1 4353 -4.6333461068570614e-03 + + 6.0720779001712799e-02 -1.6562700271606445e-01 + <_> + + 0 -1 4354 4.6847991645336151e-02 + + -4.0696758776903152e-02 1.0598970204591751e-01 + <_> + + 0 -1 4355 -9.0538233518600464e-02 + + -6.3367050886154175e-01 1.6277700662612915e-02 + <_> + + 0 -1 4356 -6.6260926425457001e-02 + + -2.8792759776115417e-01 6.1133177950978279e-03 + <_> + + 0 -1 4357 2.4731729179620743e-02 + + 4.0057931095361710e-02 -2.3272530734539032e-01 + <_> + + 0 -1 4358 -1.3736580312252045e-01 + + 4.7250029444694519e-01 -8.2997139543294907e-03 + <_> + + 0 -1 4359 -6.3414901494979858e-02 + + 4.3039301037788391e-01 -2.1049000322818756e-02 + <_> + + 0 -1 4360 -3.3071819692850113e-02 + + -1.1073499917984009e-01 3.3718731254339218e-02 + <_> + + 0 -1 4361 1.0934790223836899e-01 + + 1.3508499599993229e-02 -6.5502017736434937e-01 + <_> + + 0 -1 4362 1.5925880521535873e-02 + + 3.3672690391540527e-02 -7.0779062807559967e-02 + <_> + + 0 -1 4363 -7.4891438707709312e-03 + + -2.6472839713096619e-01 3.8183860480785370e-02 + <_> + + 0 -1 4364 9.8611623980104923e-04 + + -1.6149909794330597e-01 2.9475390911102295e-02 + <_> + + 0 -1 4365 2.5206479430198669e-01 + + -3.2382488250732422e-02 3.1068611145019531e-01 + <_> + + 0 -1 4366 -2.8892729431390762e-02 + + -4.9116641283035278e-01 1.4923149719834328e-02 + <_> + + 0 -1 4367 -5.5389881134033203e-02 + + 5.7543408870697021e-01 -1.8582839518785477e-02 + <_> + + 0 -1 4368 3.1414598226547241e-02 + + 2.0720759406685829e-02 -9.4729647040367126e-02 + <_> + + 0 -1 4369 2.8307519387453794e-03 + + -2.2519350051879883e-01 4.1564159095287323e-02 + <_> + + 0 -1 4370 -3.3751260489225388e-02 + + -1.6646580398082733e-01 7.2693623602390289e-02 + <_> + + 0 -1 4371 -3.8290288299322128e-02 + + 7.9213732481002808e-01 -1.1434529908001423e-02 + <_> + + 0 -1 4372 -1.7989480867981911e-02 + + 1.1361669749021530e-01 -4.4032510370016098e-02 + <_> + + 0 -1 4373 1.8146529793739319e-02 + + 3.4219540655612946e-02 -2.5041630864143372e-01 + <_> + + 0 -1 4374 -6.9133192300796509e-02 + + -2.9793199896812439e-01 4.9929767847061157e-03 + <_> + + 0 -1 4375 1.2525920569896698e-01 + + 1.0709079913794994e-02 -7.6342308521270752e-01 + <_> + + 0 -1 4376 3.7683561444282532e-02 + + -3.4866910427808762e-02 1.9532379508018494e-01 + <_> + + 0 -1 4377 -7.6676071621477604e-03 + + 1.7114819586277008e-01 -5.1101781427860260e-02 + <_> + + 0 -1 4378 3.5654550883919001e-03 + + -6.9071911275386810e-02 6.5724693238735199e-02 + <_> + + 0 -1 4379 -1.8968600779771805e-02 + + -4.0976929664611816e-01 2.0560229197144508e-02 + <_> + + 0 -1 4380 -2.0211370661854744e-02 + + 3.3508920669555664e-01 -2.7907410636544228e-02 + <_> + + 0 -1 4381 -1.9064599648118019e-02 + + 1.9361929595470428e-01 -4.8648219555616379e-02 + <_> + + 0 -1 4382 1.0313340276479721e-01 + + 1.9382460042834282e-02 -1.1198680102825165e-01 + <_> + + 0 -1 4383 9.8863355815410614e-03 + + -2.4043160676956177e-01 4.4305600225925446e-02 + <_> + + 0 -1 4384 4.3293699622154236e-02 + + 1.0728780180215836e-02 -6.4660537242889404e-01 + <_> + + 0 -1 4385 6.1878331005573273e-02 + + 1.0291899554431438e-02 -7.2967112064361572e-01 + <_> + + 0 -1 4386 9.7703160718083382e-03 + + 3.1311180442571640e-02 -1.5605080127716064e-01 + <_> + + 0 -1 4387 -8.3175063133239746e-02 + + -3.3045348525047302e-01 2.3997390642762184e-02 + <_> + + 0 -1 4388 -3.1724658608436584e-01 + + 5.4760771989822388e-01 -1.7853379249572754e-02 + <_> + + 0 -1 4389 6.7434520460665226e-03 + + -6.6969439387321472e-02 1.2657959759235382e-01 + <_> + + 0 -1 4390 4.0886890143156052e-02 + + 4.3191551230847836e-03 -2.2032399475574493e-01 + <_> + + 0 -1 4391 6.4959921874105930e-03 + + 5.4097741842269897e-02 -1.5504899621009827e-01 + <_> + + 0 -1 4392 -3.2832350581884384e-02 + + 3.0770578980445862e-01 -2.4346910417079926e-02 + <_> + + 0 -1 4393 -1.6127960756421089e-02 + + -1.0477919876575470e-01 9.1267466545104980e-02 + <_> + + 0 -1 4394 3.4646671265363693e-02 + + 1.4030230231583118e-02 -1.8207600712776184e-01 + <_> + + 0 -1 4395 -3.3005408942699432e-02 + + 3.8698929548263550e-01 -2.1859629079699516e-02 + <_> + + 0 -1 4396 -4.3908338993787766e-02 + + -3.0621778964996338e-01 2.2774800658226013e-02 + <_> + + 0 -1 4397 2.4842899292707443e-02 + + 3.2077241688966751e-02 -2.5279021263122559e-01 + <_> + + 0 -1 4398 1.0331260040402412e-02 + + -6.0551200062036514e-02 1.2119130045175552e-01 + <_> + + 0 -1 4399 -6.7832246422767639e-02 + + -5.5833387374877930e-01 1.5336999669671059e-02 + <_> + + 0 -1 4400 3.4947868436574936e-02 + + 1.1647179722785950e-02 -2.5563651323318481e-01 + <_> + + 0 -1 4401 -2.5261789560317993e-02 + + 3.2832020521163940e-01 -2.3357210680842400e-02 + <_> + + 0 -1 4402 7.5701558962464333e-03 + + 7.1183882653713226e-02 -8.3878181874752045e-02 + <_> + + 0 -1 4403 1.1809100210666656e-01 + + -4.1809991002082825e-02 2.2083349525928497e-01 + <_> + + 0 -1 4404 3.6332231014966965e-02 + + 1.7415270209312439e-01 -5.1788080483675003e-02 + <_> + + 0 -1 4405 1.3216850347816944e-02 + + -4.7699850797653198e-01 1.8878389149904251e-02 + <_> + + 0 -1 4406 1.4325110241770744e-02 + + 2.1834760904312134e-02 -1.3961690664291382e-01 + <_> + + 0 -1 4407 1.3779220171272755e-03 + + -2.0156779885292053e-01 3.9925381541252136e-02 + <_> + + 0 -1 4408 1.4492850005626678e-01 + + -3.3947311341762543e-02 1.4805939793586731e-01 + <_> + + 0 -1 4409 2.0336720347404480e-01 + + -2.8280159458518028e-02 3.0469599366188049e-01 + <_> + + 0 -1 4410 -3.0550520867109299e-02 + + 1.5751589834690094e-01 -3.4339658915996552e-02 + <_> + + 0 -1 4411 -1.1067859828472137e-02 + + 2.4688349664211273e-01 -3.7554491311311722e-02 + <_> + + 0 -1 4412 2.5981210172176361e-02 + + 2.1994030103087425e-02 -1.4765749871730804e-01 + <_> + + 0 -1 4413 -4.8331938683986664e-02 + + -2.5580298900604248e-01 3.2857868820428848e-02 + <_> + + 0 -1 4414 1.5268280170857906e-02 + + 6.2162041664123535e-02 -5.1811810582876205e-02 + <_> + + 0 -1 4415 -2.4390730261802673e-01 + + 5.0339847803115845e-01 -1.6864169389009476e-02 + <_> + + 0 -1 4416 -3.2398870680481195e-03 + + -1.3850170373916626e-01 6.3738316297531128e-02 + <_> + + 0 -1 4417 6.1450928449630737e-02 + + -5.6962829083204269e-02 1.4706780016422272e-01 + <_> + + 0 -1 4418 4.3161489069461823e-02 + + 2.3441100493073463e-02 -2.6922780275344849e-01 + <_> + + 0 -1 4419 -1.1370860040187836e-02 + + -2.6135998964309692e-01 3.3624760806560516e-02 + <_> + + 0 -1 4420 -1.5418549999594688e-02 + + 2.2153179347515106e-01 -4.0866490453481674e-02 + <_> + + 0 -1 4421 4.5487228780984879e-02 + + -3.1598750501871109e-02 2.5687301158905029e-01 + <_> + + 0 -1 4422 -1.5879619866609573e-02 + + -2.9981338977813721e-01 2.7006199583411217e-02 + <_> + + 0 -1 4423 5.7012498378753662e-02 + + 1.5179580077528954e-02 -5.2078807353973389e-01 + <_> + + 0 -1 4424 -1.5038490295410156e-01 + + 2.5164321064949036e-01 -4.0796510875225067e-02 + <_> + + 0 -1 4425 -4.2246039956808090e-02 + + -4.8303580284118652e-01 1.9222039729356766e-02 + <_> + + 0 -1 4426 -7.4928469955921173e-02 + + -9.5458990335464478e-01 4.4229729101061821e-03 + <_> + + 0 -1 4427 -2.1251840516924858e-02 + + 3.1850698590278625e-01 -2.8021970763802528e-02 + <_> + + 0 -1 4428 5.3983781486749649e-02 + + 2.7037480846047401e-02 -3.4430688619613647e-01 + <_> + + 0 -1 4429 3.3572580665349960e-02 + + -7.6545879244804382e-02 1.4255550503730774e-01 + <_> + + 0 -1 4430 -6.7975879646837711e-03 + + 1.7748320102691650e-01 -4.3155338615179062e-02 + <_> + + 0 -1 4431 -1.3311849907040596e-03 + + 1.5498100221157074e-01 -7.6261833310127258e-02 + <_> + + 0 -1 4432 3.9364699274301529e-02 + + 3.6991588771343231e-02 -2.4243550002574921e-01 + <_> + + 0 -1 4433 -6.8364520557224751e-03 + + 1.0743640363216400e-01 -9.3058176338672638e-02 + <_> + + 0 -1 4434 1.6118010506033897e-02 + + -3.5690911114215851e-02 2.4185790121555328e-01 + <_> + + 0 -1 4435 -7.0620089769363403e-02 + + 6.3363391160964966e-01 -1.2438289821147919e-02 + <_> + + 0 -1 4436 4.4361630082130432e-01 + + -3.7221789360046387e-02 1.1892700195312500e-01 + <_> + + 0 -1 4437 -8.1899233162403107e-02 + + 3.4853339195251465e-01 -2.5211019441485405e-02 + <_> + + 0 -1 4438 -8.2997446879744530e-03 + + -3.0899089574813843e-01 2.5778239592909813e-02 + <_> + + 0 -1 4439 -2.9730390757322311e-02 + + -3.0759811401367188e-01 2.5530820712447166e-02 + <_> + + 0 -1 4440 -2.6014490053057671e-02 + + -1.2162390351295471e-01 1.8338350579142570e-02 + <_> + + 0 -1 4441 4.5121149742044508e-04 + + -5.4737848043441772e-01 1.3564749620854855e-02 + <_> + + 0 -1 4442 1.8679940700531006e-01 + + 7.8039847314357758e-02 -5.8137271553277969e-02 + <_> + + 0 -1 4443 3.1894310377538204e-03 + + -2.4976019561290741e-01 3.0865840613842010e-02 + <_> + + 0 -1 4444 -2.9449069872498512e-02 + + 1.0489200055599213e-01 -4.8869129270315170e-02 + <_> + + 0 -1 4445 2.9614970088005066e-02 + + -2.2261720150709152e-02 3.4992438554763794e-01 + <_> + + 0 -1 4446 3.9882060140371323e-02 + + 9.6727507188916206e-03 -6.7914432287216187e-01 + <_> + + 0 -1 4447 -2.4404419586062431e-02 + + -2.6743829250335693e-01 3.0360370874404907e-02 + <_> + + 0 -1 4448 4.3481849133968353e-02 + + -2.3372199386358261e-02 2.1356420218944550e-01 + <_> + + 0 -1 4449 -4.8128370195627213e-02 + + -3.6890029907226562e-01 2.2832820191979408e-02 + <_> + + 0 -1 4450 -1.3142440002411604e-03 + + 5.6764688342809677e-02 -1.3795310258865356e-01 + <_> + + 0 -1 4451 2.1767991129308939e-03 + + 8.2446262240409851e-02 -1.0511689633131027e-01 + <_> + + 0 -1 4452 -2.7471050620079041e-02 + + 9.6438340842723846e-02 -5.1520779728889465e-02 + <_> + + 0 -1 4453 5.2003171294927597e-02 + + -2.3240759968757629e-02 3.5900598764419556e-01 + <_> + + 0 -1 4454 2.9681740328669548e-02 + + 1.4641559682786465e-02 -2.1500889956951141e-01 + <_> + + 0 -1 4455 -4.7545950859785080e-02 + + -3.8834908604621887e-01 2.2062640637159348e-02 + <_> + + 0 -1 4456 -9.6900813281536102e-02 + + -4.3412810564041138e-01 6.4087379723787308e-03 + <_> + + 0 -1 4457 -3.8218989968299866e-01 + + -9.0176671743392944e-01 7.9825157299637794e-03 + <_> + + 0 -1 4458 -3.4389309585094452e-02 + + -3.1850269436836243e-01 9.1135511174798012e-03 + <_> + + 0 -1 4459 3.9068788290023804e-02 + + 2.8420960530638695e-02 -2.6570749282836914e-01 + <_> + + 0 -1 4460 1.0031700134277344e-01 + + -1.6155399382114410e-02 1.2212689965963364e-01 + <_> + + 0 -1 4461 -1.0857210308313370e-01 + + 3.7742871046066284e-01 -2.4014420807361603e-02 + <_> + + 0 -1 4462 -4.3303978600306436e-05 + + 2.0308060571551323e-02 -1.3060510158538818e-01 + <_> + + 0 -1 4463 -3.8757279515266418e-02 + + -1.5826420485973358e-01 4.9129229038953781e-02 + <_> + + 0 -1 4464 6.8668089807033539e-02 + + 5.5041261948645115e-03 -7.2222518920898438e-01 + <_> + + 0 -1 4465 -4.4268090277910233e-03 + + 8.2263059914112091e-02 -1.0354729741811752e-01 + <_> + + 0 -1 4466 -3.1016240245662630e-04 + + 9.0432256460189819e-02 -1.0348629951477051e-01 + <_> + + 0 -1 4467 3.7703070789575577e-02 + + 6.0126338154077530e-02 -1.6111390292644501e-01 + <_> + + 0 -1 4468 4.1672129184007645e-02 + + 8.5145309567451477e-03 -2.4217429757118225e-01 + <_> + + 0 -1 4469 -6.6434321925044060e-03 + + -2.7172479033470154e-01 3.1463291496038437e-02 + <_> + + 0 -1 4470 -4.0658649057149887e-02 + + -1.1673620343208313e-01 1.4849590137600899e-02 + <_> + + 0 -1 4471 -3.0082110315561295e-03 + + 4.0028568357229233e-02 -2.3079049587249756e-01 + <_> + + 0 -1 4472 -4.4187769293785095e-02 + + -1.7888109385967255e-01 1.7313620075583458e-02 + <_> + + 0 -1 4473 -1.1813719756901264e-02 + + 1.5633359551429749e-01 -5.4751630872488022e-02 + <_> + + 0 -1 4474 -2.4433450400829315e-01 + + 4.0716889500617981e-01 -3.8216509856283665e-03 + <_> + + 0 -1 4475 4.7230181097984314e-01 + + -5.5454619228839874e-02 1.6410639882087708e-01 + <_> + + 0 -1 4476 1.7955109942704439e-03 + + 9.5228001475334167e-02 -1.2934769690036774e-01 + <_> + + 0 -1 4477 -5.0934039056301117e-02 + + 2.2153440117835999e-01 -3.7975560873746872e-02 + <_> + + 0 -1 4478 -5.9531718492507935e-02 + + -4.2974939942359924e-01 1.3196409679949284e-02 + <_> + + 0 -1 4479 -3.5149399191141129e-02 + + -2.1232509613037109e-01 3.6872539669275284e-02 + <_> + + 0 -1 4480 -8.2134327385574579e-04 + + 7.4890241026878357e-02 -6.9701731204986572e-02 + <_> + + 0 -1 4481 6.3945869915187359e-03 + + 8.0602109432220459e-02 -1.0488619655370712e-01 + <_> + + 0 -1 4482 6.3735827803611755e-02 + + 1.1988660320639610e-02 -5.9508371353149414e-01 + <_> + + 0 -1 4483 6.6942021250724792e-02 + + 1.0711859911680222e-02 -7.0240277051925659e-01 + <_> + + 0 -1 4484 3.5445358604192734e-02 + + 8.8395569473505020e-03 -2.0588539540767670e-01 + <_> + + 0 -1 4485 8.2025423645973206e-02 + + 1.1511360295116901e-02 -6.7081338167190552e-01 + <_> + + 0 -1 4486 -1.2151840329170227e-01 + + 3.9124768972396851e-01 -6.0432488098740578e-03 + <_> + + 0 -1 4487 1.3732859492301941e-01 + + -1.6136020421981812e-02 4.6182548999786377e-01 + <_> + + 0 -1 4488 -1.6075259447097778e-01 + + -1. 2.4232869036495686e-03 + <_> + + 0 -1 4489 6.3080438412725925e-03 + + 4.3026689440011978e-02 -1.9072249531745911e-01 + <_> + + 0 -1 4490 -8.5772968828678131e-02 + + -5.3327548503875732e-01 1.4197999611496925e-02 + <_> + + 0 -1 4491 5.5853448808193207e-02 + + 4.0535259991884232e-02 -2.0816819369792938e-01 + <_> + 350 + -1.3171190023422241e+00 + + <_> + + 0 -1 4492 -1.1009960435330868e-02 + + 1.6106800734996796e-01 -2.3270499706268311e-01 + <_> + + 0 -1 4493 5.6892321445047855e-03 + + -2.2233660519123077e-01 1.2257739901542664e-01 + <_> + + 0 -1 4494 4.3932348489761353e-03 + + -1.5293380618095398e-01 1.5888489782810211e-01 + <_> + + 0 -1 4495 -5.0024059601128101e-04 + + 6.1716180294752121e-02 -2.3175540566444397e-01 + <_> + + 0 -1 4496 4.2015648796223104e-04 + + -3.0259498953819275e-01 6.1093948781490326e-02 + <_> + + 0 -1 4497 -4.2626978829503059e-03 + + -2.4387679994106293e-01 6.9513782858848572e-02 + <_> + + 0 -1 4498 6.5330968936905265e-04 + + -3.7112379074096680e-01 4.6169780194759369e-02 + <_> + + 0 -1 4499 -1.0163539648056030e-01 + + 4.5089960098266602e-01 -1.4424510300159454e-02 + <_> + + 0 -1 4500 -1.3200199464336038e-03 + + 7.5765132904052734e-02 -1.9461849331855774e-01 + <_> + + 0 -1 4501 -9.8261423408985138e-03 + + -2.7440890669822693e-01 5.2373219281435013e-02 + <_> + + 0 -1 4502 -6.6574551165103912e-02 + + 4.2804849147796631e-01 -3.2640948891639709e-02 + <_> + + 0 -1 4503 -9.1772843152284622e-03 + + -2.5876390933990479e-01 6.1596788465976715e-02 + <_> + + 0 -1 4504 -2.5353950913995504e-03 + + 1.1473689973354340e-01 -1.0097979754209518e-01 + <_> + + 0 -1 4505 4.9194418825209141e-03 + + 4.0027469396591187e-02 -1.6378170251846313e-01 + <_> + + 0 -1 4506 -1.6810640227049589e-03 + + -1.3706670701503754e-01 8.0321729183197021e-02 + <_> + + 0 -1 4507 2.1476070396602154e-03 + + -2.3408600687980652e-01 4.3113950639963150e-02 + <_> + + 0 -1 4508 -3.3502440899610519e-02 + + -2.4204289913177490e-01 4.9100209027528763e-02 + <_> + + 0 -1 4509 1.4241789281368256e-01 + + -2.8680980205535889e-02 4.7807058691978455e-01 + <_> + + 0 -1 4510 5.8733951300382614e-04 + + -2.1685610711574554e-01 4.8530109226703644e-02 + <_> + + 0 -1 4511 -1.2295519700273871e-03 + + 9.3180246651172638e-02 -1.0158210247755051e-01 + <_> + + 0 -1 4512 1.1210669763386250e-02 + + 3.6210179328918457e-02 -2.3106449842453003e-01 + <_> + + 0 -1 4513 -2.5235990062355995e-02 + + 8.5747621953487396e-02 -5.4415158927440643e-02 + <_> + + 0 -1 4514 -1.0014030151069164e-02 + + -1.9362440705299377e-01 5.0274729728698730e-02 + <_> + + 0 -1 4515 -4.5554949901998043e-03 + + 8.8674992322921753e-02 -1.4237509667873383e-01 + <_> + + 0 -1 4516 -9.5264799892902374e-03 + + 2.6754239201545715e-01 -3.7632450461387634e-02 + <_> + + 0 -1 4517 2.3753349669277668e-03 + + 3.9261918514966965e-02 -1.4199909567832947e-01 + <_> + + 0 -1 4518 1.2389000039547682e-03 + + 6.8643912672996521e-02 -1.8060870468616486e-01 + <_> + + 0 -1 4519 -1.5835729427635670e-03 + + -1.3684159517288208e-01 5.7875689119100571e-02 + <_> + + 0 -1 4520 6.5202586352825165e-02 + + -3.4448388963937759e-02 2.5318139791488647e-01 + <_> + + 0 -1 4521 6.6306376538705081e-05 + + -8.4601633250713348e-02 9.1657586395740509e-02 + <_> + + 0 -1 4522 1.5117590010049753e-05 + + -9.3343816697597504e-02 1.1079390347003937e-01 + <_> + + 0 -1 4523 -2.2637350484728813e-03 + + -1.9531199336051941e-01 3.8263510912656784e-02 + <_> + + 0 -1 4524 6.5463641658425331e-04 + + 4.7860879451036453e-02 -1.6354900598526001e-01 + <_> + + 0 -1 4525 5.0345290452241898e-02 + + -1.5618369914591312e-02 5.2660512924194336e-01 + <_> + + 0 -1 4526 8.5375197231769562e-03 + + 3.3894728869199753e-02 -2.7040940523147583e-01 + <_> + + 0 -1 4527 -6.1621618270874023e-01 + + -9.3156081438064575e-01 2.6866910047829151e-03 + <_> + + 0 -1 4528 -2.6742840185761452e-02 + + 1.2415560334920883e-01 -8.1576861441135406e-02 + <_> + + 0 -1 4529 -1.4756740070879459e-02 + + -4.4224148988723755e-01 2.4418739601969719e-02 + <_> + + 0 -1 4530 1.2045809999108315e-02 + + -8.4552876651287079e-02 9.2735297977924347e-02 + <_> + + 0 -1 4531 -4.0131900459527969e-02 + + -2.5734719634056091e-01 1.0692110285162926e-02 + <_> + + 0 -1 4532 -1.0760580189526081e-03 + + 2.8027180582284927e-02 -2.6805961132049561e-01 + <_> + + 0 -1 4533 7.7456878498196602e-03 + + -3.6401689052581787e-02 2.6165041327476501e-01 + <_> + + 0 -1 4534 1.3539849780499935e-02 + + 2.8945919126272202e-02 -2.8003379702568054e-01 + <_> + + 0 -1 4535 -1.2464780360460281e-02 + + -3.6258488893508911e-01 1.3006039895117283e-02 + <_> + + 0 -1 4536 3.5297829657793045e-02 + + 1.2918749824166298e-02 -5.6460797786712646e-01 + <_> + + 0 -1 4537 -5.5710550397634506e-02 + + 1.2794859707355499e-01 -3.8257118314504623e-02 + <_> + + 0 -1 4538 -4.5230439864099026e-03 + + -9.9410563707351685e-02 7.8997522592544556e-02 + <_> + + 0 -1 4539 2.9874469619244337e-03 + + -4.8509139567613602e-02 1.1298680305480957e-01 + <_> + + 0 -1 4540 -6.3613310456275940e-02 + + -6.6647279262542725e-01 1.1221170425415039e-02 + <_> + + 0 -1 4541 1.3244490139186382e-02 + + -6.1976868659257889e-02 1.3122899830341339e-01 + <_> + + 0 -1 4542 -3.6382430698722601e-04 + + 4.3054241687059402e-02 -1.6996359825134277e-01 + <_> + + 0 -1 4543 -2.1500189602375031e-01 + + -4.6784079074859619e-01 1.2286320328712463e-02 + <_> + + 0 -1 4544 6.0248938389122486e-03 + + -5.1475919783115387e-02 1.5234859287738800e-01 + <_> + + 0 -1 4545 4.3000571429729462e-02 + + 3.8120739627629519e-03 -7.5349187850952148e-01 + <_> + + 0 -1 4546 8.5592586547136307e-03 + + 2.4470439180731773e-02 -3.2796609401702881e-01 + <_> + + 0 -1 4547 2.9510160675272346e-04 + + -7.6456926763057709e-02 6.8010047078132629e-02 + <_> + + 0 -1 4548 9.9761411547660828e-04 + + -8.4680661559104919e-02 9.6316136419773102e-02 + <_> + + 0 -1 4549 5.0175599753856659e-03 + + -3.9048101752996445e-02 1.0983789712190628e-01 + <_> + + 0 -1 4550 5.5693010799586773e-03 + + 4.0719300508499146e-02 -1.8395960330963135e-01 + <_> + + 0 -1 4551 1.0486049577593803e-03 + + -4.4622048735618591e-02 7.0918112993240356e-02 + <_> + + 0 -1 4552 3.2043100800365210e-03 + + -5.8839108794927597e-02 1.2777310609817505e-01 + <_> + + 0 -1 4553 -1.0644660145044327e-01 + + 4.3339949846267700e-01 -1.2449969537556171e-02 + <_> + + 0 -1 4554 -8.9908082736656070e-04 + + -1.1510500311851501e-01 6.3306562602519989e-02 + <_> + + 0 -1 4555 2.9652470257133245e-03 + + -3.1290680170059204e-02 7.2845660150051117e-02 + <_> + + 0 -1 4556 8.9800870046019554e-04 + + -8.6840502917766571e-02 1.0022729635238647e-01 + <_> + + 0 -1 4557 -2.1874029189348221e-02 + + 7.6143169403076172e-01 -4.5735938474535942e-03 + <_> + + 0 -1 4558 1.4919589739292860e-03 + + 8.2724168896675110e-02 -9.6837893128395081e-02 + <_> + + 0 -1 4559 -2.4136069696396589e-03 + + 6.2480941414833069e-02 -5.0549559295177460e-02 + <_> + + 0 -1 4560 1.2893830426037312e-02 + + -3.3901989459991455e-02 2.8036591410636902e-01 + <_> + + 0 -1 4561 -1.9992720335721970e-03 + + -1.7152810096740723e-01 4.0084149688482285e-02 + <_> + + 0 -1 4562 1.3713949592784047e-03 + + -1.2216719985008240e-01 6.2122181057929993e-02 + <_> + + 0 -1 4563 -8.9740045368671417e-03 + + -1.7094230651855469e-01 4.4032000005245209e-02 + <_> + + 0 -1 4564 -2.9300691094249487e-03 + + 1.2364040315151215e-01 -6.3765726983547211e-02 + <_> + + 0 -1 4565 -8.0555928871035576e-03 + + 1.1552560329437256e-01 -4.4458869844675064e-02 + <_> + + 0 -1 4566 6.4662001095712185e-03 + + 7.5147427618503571e-02 -1.1281009763479233e-01 + <_> + + 0 -1 4567 -1.9541789591312408e-01 + + -8.6494231224060059e-01 3.1826570630073547e-03 + <_> + + 0 -1 4568 -1.5740759670734406e-01 + + -7.2405809164047241e-01 9.4235781580209732e-03 + <_> + + 0 -1 4569 -3.1526461243629456e-02 + + -3.8218951225280762e-01 1.6386790201067924e-02 + <_> + + 0 -1 4570 5.0439048558473587e-02 + + -2.7623040601611137e-02 2.7306279540061951e-01 + <_> + + 0 -1 4571 -5.5078428704291582e-04 + + 4.9623548984527588e-02 -5.4462801665067673e-02 + <_> + + 0 -1 4572 1.5047970227897167e-03 + + -6.2058940529823303e-02 1.2204010039567947e-01 + <_> + + 0 -1 4573 -4.5796841382980347e-02 + + -9.3314772844314575e-01 6.8162381649017334e-03 + <_> + + 0 -1 4574 -9.3235643580555916e-03 + + -2.7436700463294983e-01 2.7820749208331108e-02 + <_> + + 0 -1 4575 1.0689129680395126e-01 + + 4.7212988138198853e-03 -4.4037041068077087e-01 + <_> + + 0 -1 4576 1.1234519770368934e-03 + + -1.4162249863147736e-01 4.7511368989944458e-02 + <_> + + 0 -1 4577 6.7312899045646191e-03 + + -4.5881479978561401e-02 1.1342740058898926e-01 + <_> + + 0 -1 4578 4.1264150291681290e-02 + + 1.1406780220568180e-02 -6.2894171476364136e-01 + <_> + + 0 -1 4579 -7.3788799345493317e-02 + + -4.1924831271171570e-01 7.9344836995005608e-03 + <_> + + 0 -1 4580 -3.2669529318809509e-02 + + 2.2224910557270050e-01 -3.0845979228615761e-02 + <_> + + 0 -1 4581 -5.9001590125262737e-03 + + -1.5003520250320435e-01 4.5819710940122604e-02 + <_> + + 0 -1 4582 -7.4141867458820343e-02 + + 5.6236612796783447e-01 -1.1184119619429111e-02 + <_> + + 0 -1 4583 -1.7110589891672134e-02 + + -3.0888330936431885e-01 1.7340350896120071e-02 + <_> + + 0 -1 4584 2.4508470669388771e-03 + + -5.7074081152677536e-02 1.1306890100240707e-01 + <_> + + 0 -1 4585 -2.1157979965209961e-02 + + 2.0264630019664764e-01 -1.4705169945955276e-02 + <_> + + 0 -1 4586 7.1819419972598553e-03 + + 2.9788199812173843e-02 -2.2308370471000671e-01 + <_> + + 0 -1 4587 5.0557879731059074e-03 + + -2.6257280260324478e-02 1.2028290331363678e-01 + <_> + + 0 -1 4588 1.2610659934580326e-02 + + 2.5965299457311630e-02 -2.5755238533020020e-01 + <_> + + 0 -1 4589 3.0165250791469589e-05 + + -1.1994919925928116e-01 2.8916500508785248e-02 + <_> + + 0 -1 4590 -1.3415860012173653e-03 + + 2.0592840015888214e-01 -3.2803039997816086e-02 + <_> + + 0 -1 4591 5.9342157328501344e-04 + + 4.9788691103458405e-02 -7.0998527109622955e-02 + <_> + + 0 -1 4592 -1.5428929589688778e-02 + + 3.2733771204948425e-01 -2.0239489153027534e-02 + <_> + + 0 -1 4593 -1.1928460298804566e-04 + + 2.6405010372400284e-02 -1.4666070044040680e-01 + <_> + + 0 -1 4594 -2.1726880222558975e-02 + + -4.4014349579811096e-01 1.4264649711549282e-02 + <_> + + 0 -1 4595 -3.0710769817233086e-02 + + 1.3549150526523590e-01 -1.7586210742592812e-02 + <_> + + 0 -1 4596 4.3861479498445988e-03 + + 5.4423790425062180e-02 -1.1234579980373383e-01 + <_> + + 0 -1 4597 4.7966800630092621e-03 + + -4.3494079262018204e-02 1.3108870387077332e-01 + <_> + + 0 -1 4598 2.2497470490634441e-03 + + 5.9489808976650238e-02 -1.0955479741096497e-01 + <_> + + 0 -1 4599 4.3578739278018475e-03 + + 5.9186179190874100e-02 -1.3026049733161926e-01 + <_> + + 0 -1 4600 2.0433720201253891e-03 + + -5.1625490188598633e-02 1.3787810504436493e-01 + <_> + + 0 -1 4601 -2.0268680527806282e-03 + + 8.8105127215385437e-02 -8.5867561399936676e-02 + <_> + + 0 -1 4602 -6.5703789005056024e-04 + + 7.1044988930225372e-02 -9.0751543641090393e-02 + <_> + + 0 -1 4603 4.4309969991445541e-02 + + -1.1522290296852589e-02 2.2733740508556366e-01 + <_> + + 0 -1 4604 4.6578957699239254e-03 + + -4.6123549342155457e-02 1.5277029573917389e-01 + <_> + + 0 -1 4605 -4.0960058569908142e-02 + + -5.5988901853561401e-01 1.2064740061759949e-02 + <_> + + 0 -1 4606 -6.7416871897876263e-03 + + 1.0484070330858231e-01 -6.5152801573276520e-02 + <_> + + 0 -1 4607 -2.9713090043514967e-04 + + 3.2221201807260513e-02 -8.4709979593753815e-02 + <_> + + 0 -1 4608 -8.0926045775413513e-03 + + -1.6476640105247498e-01 4.5700121670961380e-02 + <_> + + 0 -1 4609 4.0710348635911942e-02 + + 1.0099260136485100e-02 -1.0893329977989197e-01 + <_> + + 0 -1 4610 -1.1402929667383432e-03 + + -1.9269819557666779e-01 4.4590830802917480e-02 + <_> + + 0 -1 4611 -2.0306430757045746e-02 + + 6.8668061494827271e-01 -9.8533723503351212e-03 + <_> + + 0 -1 4612 4.8631370067596436e-02 + + 1.1991590261459351e-02 -6.4770907163619995e-01 + <_> + + 0 -1 4613 -5.4414950311183929e-02 + + 3.4730699658393860e-01 -1.1940590105950832e-02 + <_> + + 0 -1 4614 -5.9532530605792999e-02 + + 3.6410269141197205e-01 -1.6050819307565689e-02 + <_> + + 0 -1 4615 -3.5089451819658279e-02 + + -1.9252899289131165e-01 2.3598629981279373e-02 + <_> + + 0 -1 4616 5.7658711448311806e-03 + + -4.6293850988149643e-02 1.5287970006465912e-01 + <_> + + 0 -1 4617 -2.3687579669058323e-03 + + 5.7345230132341385e-02 -8.8195472955703735e-02 + <_> + + 0 -1 4618 -2.7341600507497787e-03 + + -2.3896160721778870e-01 2.5761809200048447e-02 + <_> + + 0 -1 4619 -9.1599775478243828e-03 + + 1.0037499666213989e-01 -2.6731979101896286e-02 + <_> + + 0 -1 4620 -5.0623171031475067e-02 + + 4.6908378601074219e-01 -1.3880429789423943e-02 + <_> + + 0 -1 4621 -4.3487590737640858e-03 + + -1.4812940359115601e-01 5.2115358412265778e-02 + <_> + + 0 -1 4622 4.0859800577163696e-01 + + 1.5454529784619808e-02 -4.6494269371032715e-01 + <_> + + 0 -1 4623 5.3104009479284286e-02 + + 7.8609427437186241e-03 -5.3555142879486084e-01 + <_> + + 0 -1 4624 -4.1035288013517857e-03 + + -1.3777880370616913e-01 4.6847809106111526e-02 + <_> + + 0 -1 4625 -2.7622529305517673e-03 + + 5.2303940057754517e-02 -9.4970837235450745e-02 + <_> + + 0 -1 4626 9.3903020024299622e-03 + + -2.3493729531764984e-02 3.6259791254997253e-01 + <_> + + 0 -1 4627 2.3771630600094795e-02 + + 8.0746166408061981e-02 -8.2893602550029755e-02 + <_> + + 0 -1 4628 2.8008709196001291e-03 + + -2.6595699787139893e-01 2.8534680604934692e-02 + <_> + + 0 -1 4629 -6.3013769686222076e-03 + + 8.0481633543968201e-02 -2.9016179963946342e-02 + <_> + + 0 -1 4630 -5.1433448679745197e-03 + + -1.1473509669303894e-01 5.8448631316423416e-02 + <_> + + 0 -1 4631 1.0679479455575347e-03 + + -3.1661890447139740e-02 5.4522778838872910e-02 + <_> + + 0 -1 4632 1.5213950537145138e-03 + + -6.2172550708055496e-02 9.7601316869258881e-02 + <_> + + 0 -1 4633 -3.3779911696910858e-02 + + -4.9582698941230774e-01 1.2093319557607174e-02 + <_> + + 0 -1 4634 -1.0505370050668716e-01 + + -9.8738801479339600e-01 5.1499558612704277e-03 + <_> + + 0 -1 4635 1.9685840234160423e-02 + + -5.6189429014921188e-02 9.1260537505149841e-02 + <_> + + 0 -1 4636 6.6470399498939514e-02 + + 1.4097889885306358e-02 -4.5731648802757263e-01 + <_> + + 0 -1 4637 -1.5898099169135094e-02 + + -2.3317760229110718e-01 1.1369620449841022e-02 + <_> + + 0 -1 4638 4.0450799278914928e-03 + + 4.3345049023628235e-02 -1.5908020734786987e-01 + <_> + + 0 -1 4639 -3.3486548811197281e-02 + + 1.3086590170860291e-01 -3.4327559173107147e-02 + <_> + + 0 -1 4640 2.1458480507135391e-02 + + -5.0213351845741272e-02 1.1467009782791138e-01 + <_> + + 0 -1 4641 1.1672739684581757e-01 + + -3.4590030554682016e-03 4.4156730175018311e-01 + <_> + + 0 -1 4642 -5.0386278890073299e-03 + + -1.3995400071144104e-01 4.0854398161172867e-02 + <_> + + 0 -1 4643 3.7261120975017548e-02 + + -1.6399189829826355e-02 2.3627850413322449e-01 + <_> + + 0 -1 4644 -1.7991460859775543e-02 + + -5.6703627109527588e-01 1.0185079649090767e-02 + <_> + + 0 -1 4645 1.0748039931058884e-01 + + 1.8287489656358957e-03 -7.8705781698226929e-01 + <_> + + 0 -1 4646 -2.1439619362354279e-02 + + 1.8347090482711792e-01 -3.2410789281129837e-02 + <_> + + 0 -1 4647 6.8095367169007659e-04 + + 4.1675068438053131e-02 -8.9301638305187225e-02 + <_> + + 0 -1 4648 -6.8581351079046726e-03 + + -1.4511869847774506e-01 5.1585499197244644e-02 + <_> + + 0 -1 4649 1.5318280458450317e-01 + + 3.1881679315119982e-03 -4.4190090894699097e-01 + <_> + + 0 -1 4650 2.2777369245886803e-02 + + -4.3234121054410934e-02 1.7477220296859741e-01 + <_> + + 0 -1 4651 6.6160550341010094e-03 + + 4.3140821158885956e-02 -1.7188510298728943e-01 + <_> + + 0 -1 4652 -8.8224448263645172e-03 + + 1.3203169405460358e-01 -4.7509200870990753e-02 + <_> + + 0 -1 4653 -5.1209977827966213e-03 + + -1.8979160487651825e-01 5.7657308876514435e-02 + <_> + + 0 -1 4654 -1.0311880148947239e-02 + + 3.2286819815635681e-01 -1.9725019112229347e-02 + <_> + + 0 -1 4655 -2.5065759196877480e-02 + + -3.6572399735450745e-01 1.8344869837164879e-02 + <_> + + 0 -1 4656 -1.4318429864943027e-02 + + 1.5795469284057617e-01 -3.8276918232440948e-02 + <_> + + 0 -1 4657 -5.7383939623832703e-02 + + -3.6835289001464844e-01 1.6900209710001945e-02 + <_> + + 0 -1 4658 -4.3680299073457718e-02 + + 4.4766798615455627e-01 -1.3710459694266319e-02 + <_> + + 0 -1 4659 -2.4289099872112274e-01 + + -7.5490927696228027e-01 8.9195184409618378e-03 + <_> + + 0 -1 4660 3.8089449517428875e-03 + + -6.2916718423366547e-02 9.4282902777194977e-02 + <_> + + 0 -1 4661 8.9389752247370780e-05 + + -1.1253400146961212e-01 9.9447913467884064e-02 + <_> + + 0 -1 4662 2.7378369122743607e-03 + + 7.4880510568618774e-02 -9.9257610738277435e-02 + <_> + + 0 -1 4663 2.3680560290813446e-02 + + 1.2105870060622692e-02 -1.1780750006437302e-01 + <_> + + 0 -1 4664 -4.6060070395469666e-02 + + 3.9799740910530090e-01 -1.7129369080066681e-02 + <_> + + 0 -1 4665 2.1130219101905823e-03 + + -6.0906849801540375e-02 4.9974281340837479e-02 + <_> + + 0 -1 4666 1.4753149822354317e-02 + + 1.6629729419946671e-02 -3.7806668877601624e-01 + <_> + + 0 -1 4667 3.5430908203125000e-02 + + -2.3844370618462563e-02 2.6354551315307617e-01 + <_> + + 0 -1 4668 -5.0745099782943726e-02 + + -2.3141309618949890e-01 2.8320349752902985e-02 + <_> + + 0 -1 4669 8.9874058961868286e-02 + + -1.0191249661147594e-02 2.6277700066566467e-01 + <_> + + 0 -1 4670 -2.7411670889705420e-03 + + -1.3828440010547638e-01 4.6966280788183212e-02 + <_> + + 0 -1 4671 8.7385937571525574e-02 + + 1.7351199639961123e-03 -8.0810409784317017e-01 + <_> + + 0 -1 4672 -2.9055110644549131e-03 + + 6.6193267703056335e-02 -9.5981188118457794e-02 + <_> + + 0 -1 4673 -5.1255577802658081e-01 + + -1. 8.6886010831221938e-04 + <_> + + 0 -1 4674 -1.3281259685754776e-02 + + 1.0134270042181015e-01 -6.4344279468059540e-02 + <_> + + 0 -1 4675 5.3660940378904343e-02 + + 3.2843649387359619e-03 -8.0011987686157227e-01 + <_> + + 0 -1 4676 3.9290629327297211e-02 + + 9.0429633855819702e-03 -6.7074328660964966e-01 + <_> + + 0 -1 4677 6.5197132527828217e-02 + + 4.4964649714529514e-03 -9.7931307554244995e-01 + <_> + + 0 -1 4678 3.2505281269550323e-02 + + -1.2679249979555607e-02 4.9774479866027832e-01 + <_> + + 0 -1 4679 -6.5749078989028931e-02 + + -3.7844368815422058e-01 5.9391320683062077e-03 + <_> + + 0 -1 4680 -6.0045070946216583e-02 + + -3.9957770705223083e-01 1.4155699871480465e-02 + <_> + + 0 -1 4681 -4.6631351113319397e-02 + + 1.6843810677528381e-01 -3.7634961307048798e-02 + <_> + + 0 -1 4682 1.8095660198014230e-04 + + -1.0198330134153366e-01 7.2940513491630554e-02 + <_> + + 0 -1 4683 -3.7607289850711823e-03 + + 4.5154098421335220e-02 -5.4370220750570297e-02 + <_> + + 0 -1 4684 -5.0964287947863340e-04 + + 1.6106060147285461e-01 -5.4398071020841599e-02 + <_> + + 0 -1 4685 -1.6095000319182873e-03 + + -2.1058610081672668e-01 3.0864259228110313e-02 + <_> + + 0 -1 4686 -5.4673491977155209e-03 + + 1.9076080620288849e-01 -3.2738618552684784e-02 + <_> + + 0 -1 4687 4.1697090491652489e-03 + + 2.0009849220514297e-02 -6.8173840641975403e-02 + <_> + + 0 -1 4688 3.2709140796214342e-03 + + -1.1110019683837891e-01 5.8211889117956161e-02 + <_> + + 0 -1 4689 -5.1663857884705067e-03 + + -8.5210792720317841e-02 3.3905100077390671e-02 + <_> + + 0 -1 4690 -1.2914719991385937e-02 + + -1.3726939260959625e-01 4.8348769545555115e-02 + <_> + + 0 -1 4691 -3.8130749017000198e-03 + + -1.1084940284490585e-01 3.2373629510402679e-02 + <_> + + 0 -1 4692 -5.7762481272220612e-02 + + 2.1701450645923615e-01 -2.9828049242496490e-02 + <_> + + 0 -1 4693 -2.2619909141212702e-03 + + 3.5641018301248550e-02 -5.5289078503847122e-02 + <_> + + 0 -1 4694 5.2979849278926849e-02 + + 7.7050398103892803e-03 -7.2121208906173706e-01 + <_> + + 0 -1 4695 -3.3839911222457886e-01 + + -9.4540262222290039e-01 4.5049181208014488e-03 + <_> + + 0 -1 4696 5.2918092114850879e-04 + + 4.1633930057287216e-02 -1.3283179700374603e-01 + <_> + + 0 -1 4697 2.8239609673619270e-03 + + 1.3815909624099731e-01 -1.1371930129826069e-02 + <_> + + 0 -1 4698 -2.1569489035755396e-03 + + 6.3553653657436371e-02 -8.4683336317539215e-02 + <_> + + 0 -1 4699 4.1426848620176315e-03 + + 4.1431330144405365e-02 -9.1413199901580811e-02 + <_> + + 0 -1 4700 -1.1016559787094593e-02 + + 8.0382406711578369e-02 -8.3978570997714996e-02 + <_> + + 0 -1 4701 -6.5561989322304726e-03 + + -1.3563759624958038e-01 3.4514341503381729e-02 + <_> + + 0 -1 4702 -2.2384698968380690e-03 + + -1.2900340557098389e-01 6.0718830674886703e-02 + <_> + + 0 -1 4703 -1.2789719738066196e-02 + + 2.6254388689994812e-01 -2.5295289233326912e-02 + <_> + + 0 -1 4704 -1.1028759926557541e-01 + + -4.0324538946151733e-01 1.3996849767863750e-02 + <_> + + 0 -1 4705 2.9025289695709944e-03 + + -6.0133900493383408e-02 4.0657509118318558e-02 + <_> + + 0 -1 4706 1.3041580095887184e-03 + + -1.1271840333938599e-01 5.3001549094915390e-02 + <_> + + 0 -1 4707 4.8518911004066467e-02 + + 9.9352700635790825e-03 -3.3844459056854248e-01 + <_> + + 0 -1 4708 -5.0848070532083511e-03 + + -1.3072639703750610e-01 4.7106929123401642e-02 + <_> + + 0 -1 4709 5.7023460976779461e-03 + + -5.2840489894151688e-02 1.2418749928474426e-01 + <_> + + 0 -1 4710 -2.7858179528266191e-03 + + -9.6685640513896942e-02 6.6828437149524689e-02 + <_> + + 0 -1 4711 -3.0082210432738066e-03 + + 7.1778140962123871e-02 -3.8511540740728378e-02 + <_> + + 0 -1 4712 6.9350451231002808e-03 + + -5.7932149618864059e-02 1.0691670328378677e-01 + <_> + + 0 -1 4713 -4.7064341604709625e-02 + + 1.0284499824047089e-01 -2.7998289093375206e-02 + <_> + + 0 -1 4714 -8.2645736634731293e-02 + + -8.5849452018737793e-01 6.3560227863490582e-03 + <_> + + 0 -1 4715 8.9476434513926506e-03 + + -3.9904471486806870e-02 6.6897280514240265e-02 + <_> + + 0 -1 4716 3.0593979358673096e-01 + + 7.2277039289474487e-03 -7.9749721288681030e-01 + <_> + + 0 -1 4717 -5.8336472138762474e-03 + + -1.9526490569114685e-01 2.4196550250053406e-02 + <_> + + 0 -1 4718 -5.3784619085490704e-03 + + 7.1967631578445435e-02 -9.1547563672065735e-02 + <_> + + 0 -1 4719 9.2504899948835373e-03 + + 3.6146361380815506e-02 -7.4494920670986176e-02 + <_> + + 0 -1 4720 3.7581291049718857e-02 + + -2.0222729071974754e-02 3.3224269747734070e-01 + <_> + + 0 -1 4721 -4.6818740665912628e-02 + + -5.0513672828674316e-01 1.2870309874415398e-02 + <_> + + 0 -1 4722 3.3507939428091049e-02 + + -1.8688799813389778e-02 3.0542388558387756e-01 + <_> + + 0 -1 4723 6.8437248468399048e-02 + + -6.2482542125508189e-04 8.3963787555694580e-01 + <_> + + 0 -1 4724 1.0151940397918224e-02 + + 2.5653729215264320e-02 -2.1830080449581146e-01 + <_> + + 0 -1 4725 -1.3866250216960907e-01 + + 5.7341670989990234e-01 -6.0921781696379185e-03 + <_> + + 0 -1 4726 -1.1214310070499778e-03 + + 7.0692487061023712e-02 -8.2995750010013580e-02 + <_> + + 0 -1 4727 1.4782310463488102e-03 + + -3.5161279141902924e-02 5.8569159358739853e-02 + <_> + + 0 -1 4728 -2.3407500702887774e-03 + + 1.2667399644851685e-01 -7.7700607478618622e-02 + <_> + + 0 -1 4729 4.3265568092465401e-03 + + 3.1229879707098007e-02 -1.1680649966001511e-01 + <_> + + 0 -1 4730 -3.2252248376607895e-02 + + -5.4395800828933716e-01 1.0386509820818901e-02 + <_> + + 0 -1 4731 -7.1836792631074786e-04 + + -6.3850082457065582e-02 4.8989679664373398e-02 + <_> + + 0 -1 4732 1.1035969946533442e-03 + + -7.1095839142799377e-02 8.3087973296642303e-02 + <_> + + 0 -1 4733 -1.0265519842505455e-02 + + 1.1647050082683563e-01 -2.8178630396723747e-02 + <_> + + 0 -1 4734 7.2632037103176117e-02 + + 7.5578331016004086e-03 -7.1635490655899048e-01 + <_> + + 0 -1 4735 1.2232369929552078e-01 + + -3.9898478426039219e-03 6.0708892345428467e-01 + <_> + + 0 -1 4736 -1.4398260414600372e-01 + + 8.5836321115493774e-01 -5.8769038878381252e-03 + <_> + + 0 -1 4737 5.9525449760258198e-03 + + 2.1712759509682655e-02 -1.5896700322628021e-01 + <_> + + 0 -1 4738 -1.3158279471099377e-03 + + 8.3239771425724030e-02 -7.1944266557693481e-02 + <_> + + 0 -1 4739 -3.5782668739557266e-02 + + -3.1888490915298462e-01 6.7262151278555393e-03 + <_> + + 0 -1 4740 1.4122560387477279e-03 + + -6.9247573614120483e-02 8.8037729263305664e-02 + <_> + + 0 -1 4741 -1.6188029199838638e-02 + + -6.0439001768827438e-02 6.7530423402786255e-02 + <_> + + 0 -1 4742 -2.8433150146156549e-03 + + 6.4466439187526703e-02 -1.0504409670829773e-01 + <_> + + 0 -1 4743 -1.5944750048220158e-03 + + -5.1919359713792801e-02 5.3710401058197021e-02 + <_> + + 0 -1 4744 1.8808269500732422e-01 + + -8.1325937062501907e-03 7.0354807376861572e-01 + <_> + + 0 -1 4745 -3.3552229404449463e-02 + + -3.1318250298500061e-01 2.4297190830111504e-02 + <_> + + 0 -1 4746 -1.5341060236096382e-02 + + 2.3687170445919037e-01 -2.8020450845360756e-02 + <_> + + 0 -1 4747 -1.3534810394048691e-02 + + -3.1544640660285950e-01 2.3011740297079086e-02 + <_> + + 0 -1 4748 3.2969659660011530e-03 + + 3.2923359423875809e-02 -1.5933570265769958e-01 + <_> + + 0 -1 4749 -4.4846888631582260e-02 + + 1.2876190245151520e-01 -1.7795780673623085e-02 + <_> + + 0 -1 4750 5.1291137933731079e-03 + + 3.2709009945392609e-02 -1.7871360480785370e-01 + <_> + + 0 -1 4751 1.1287770466879010e-03 + + -7.6234400272369385e-02 7.1267232298851013e-02 + <_> + + 0 -1 4752 1.2759109959006310e-02 + + -5.1268041133880615e-02 1.2901780009269714e-01 + <_> + + 0 -1 4753 5.3586461581289768e-04 + + 6.6144347190856934e-02 -6.8021528422832489e-02 + <_> + + 0 -1 4754 5.8012880617752671e-04 + + 7.5946256518363953e-02 -7.2426833212375641e-02 + <_> + + 0 -1 4755 9.8113536834716797e-02 + + 4.4115697965025902e-03 -5.7646822929382324e-01 + <_> + + 0 -1 4756 3.2547891139984131e-01 + + -2.8849789872765541e-02 2.3245050013065338e-01 + <_> + + 0 -1 4757 1.6109529882669449e-02 + + 2.6149509474635124e-02 -2.2507910430431366e-01 + <_> + + 0 -1 4758 1.6630800440907478e-02 + + -5.6001648306846619e-02 1.0011140257120132e-01 + <_> + + 0 -1 4759 1.2567469850182533e-02 + + 1.1760590225458145e-01 -2.5833690539002419e-02 + <_> + + 0 -1 4760 2.4531960487365723e-02 + + 2.1979559212923050e-02 -2.4158330261707306e-01 + <_> + + 0 -1 4761 5.1343659870326519e-03 + + -1.3964179903268814e-02 1.0398290306329727e-01 + <_> + + 0 -1 4762 -1.1144300224259496e-03 + + -8.1608608365058899e-02 6.4991973340511322e-02 + <_> + + 0 -1 4763 -6.8641006946563721e-02 + + 3.7113350629806519e-01 -1.7774619162082672e-02 + <_> + + 0 -1 4764 8.8211498223245144e-04 + + -8.4080681204795837e-02 6.2524639070034027e-02 + <_> + + 0 -1 4765 1.0471940040588379e-03 + + 6.9488562643527985e-02 -8.3000160753726959e-02 + <_> + + 0 -1 4766 1.6197249293327332e-02 + + 1.6007730737328529e-02 -3.4216699004173279e-01 + <_> + + 0 -1 4767 -2.2690620273351669e-02 + + 1.3959160447120667e-01 -4.2305570095777512e-02 + <_> + + 0 -1 4768 -4.1030000895261765e-02 + + -3.4669420123100281e-01 1.7233539372682571e-02 + <_> + + 0 -1 4769 8.5194930434226990e-02 + + -8.8493460789322853e-03 6.0639351606369019e-01 + <_> + + 0 -1 4770 3.9775099605321884e-02 + + 6.5457229502499104e-03 -9.3794268369674683e-01 + <_> + + 0 -1 4771 -1.8673250451683998e-02 + + 8.4701649844646454e-02 -2.1742990240454674e-02 + <_> + + 0 -1 4772 -1.1632209643721581e-02 + + -1.6503639519214630e-01 3.2852791249752045e-02 + <_> + + 0 -1 4773 -2.1068679634481668e-03 + + 2.5774169713258743e-02 -1.0540559887886047e-01 + <_> + + 0 -1 4774 -1.0474229929968715e-03 + + 5.3470570594072342e-02 -1.0844449698925018e-01 + <_> + + 0 -1 4775 6.6169992089271545e-02 + + 2.6304489001631737e-03 -4.3908849358558655e-01 + <_> + + 0 -1 4776 -1.2816500384360552e-03 + + -8.8744208216667175e-02 6.7286081612110138e-02 + <_> + + 0 -1 4777 -1.2601809576153755e-02 + + 2.3047180473804474e-01 -1.4204639941453934e-02 + <_> + + 0 -1 4778 3.1882619950920343e-03 + + -6.0790609568357468e-02 9.3256607651710510e-02 + <_> + + 0 -1 4779 -4.4821877963840961e-03 + + -7.4911139905452728e-02 3.5563640296459198e-02 + <_> + + 0 -1 4780 1.3803370529785752e-03 + + -6.5355330705642700e-02 8.9660577476024628e-02 + <_> + + 0 -1 4781 9.3855522572994232e-03 + + 2.2601179778575897e-02 -1.6038919985294342e-01 + <_> + + 0 -1 4782 -3.3057469408959150e-03 + + -9.3390651047229767e-02 5.6599788367748260e-02 + <_> + + 0 -1 4783 -1.4823249541223049e-02 + + 6.3946582376956940e-02 -3.7617258727550507e-02 + <_> + + 0 -1 4784 -2.4304309859871864e-02 + + 1.1825300008058548e-01 -5.3607080131769180e-02 + <_> + + 0 -1 4785 -2.6398031041026115e-03 + + -7.8462429344654083e-02 4.7125939279794693e-02 + <_> + + 0 -1 4786 -6.6844499669969082e-03 + + -1.4298090338706970e-01 5.4876580834388733e-02 + <_> + + 0 -1 4787 -1.8713249592110515e-03 + + 6.5964557230472565e-02 -5.9726029634475708e-02 + <_> + + 0 -1 4788 -5.0526339560747147e-02 + + 5.2933692932128906e-01 -1.0625099763274193e-02 + <_> + + 0 -1 4789 -7.1036286652088165e-02 + + -3.3027708530426025e-01 5.6759058497846127e-03 + <_> + + 0 -1 4790 -5.4212540388107300e-02 + + 3.7536340951919556e-01 -1.6479549929499626e-02 + <_> + + 0 -1 4791 1.4903850387781858e-04 + + -5.2896250039339066e-02 1.0646480321884155e-01 + <_> + + 0 -1 4792 1.0254220105707645e-03 + + -5.1714900881052017e-02 1.0771189630031586e-01 + <_> + + 0 -1 4793 7.6022921130061150e-03 + + 2.4376839399337769e-02 -1.2493179738521576e-01 + <_> + + 0 -1 4794 6.8572920281440020e-04 + + 7.1341581642627716e-02 -7.6490812003612518e-02 + <_> + + 0 -1 4795 -1.3697240501642227e-03 + + -1.5173940360546112e-01 3.9827719330787659e-02 + <_> + + 0 -1 4796 -2.4336120113730431e-03 + + 6.5315209329128265e-02 -7.9230897128582001e-02 + <_> + + 0 -1 4797 -1.4390869997441769e-02 + + -2.3706260323524475e-01 1.6740530729293823e-02 + <_> + + 0 -1 4798 7.8907981514930725e-02 + + -4.2810469865798950e-02 1.4248989522457123e-01 + <_> + + 0 -1 4799 1.0681129992008209e-01 + + 3.4115819726139307e-03 -7.7656471729278564e-01 + <_> + + 0 -1 4800 5.1377359777688980e-02 + + 1.0703410021960735e-02 -5.3400570154190063e-01 + <_> + + 0 -1 4801 -8.6883217096328735e-02 + + 1. -3.0740019865334034e-03 + <_> + + 0 -1 4802 -2.4080339353531599e-03 + + -1.0685530304908752e-01 4.9721568822860718e-02 + <_> + + 0 -1 4803 -1.5590289607644081e-02 + + 1.0636159777641296e-01 -2.4414319545030594e-02 + <_> + + 0 -1 4804 2.3770150728523731e-03 + + 3.9840381592512131e-02 -1.4689840376377106e-01 + <_> + + 0 -1 4805 -9.0648621320724487e-02 + + 1.8861660361289978e-01 -1.2951680459082127e-02 + <_> + + 0 -1 4806 4.4955732300877571e-03 + + -2.6563400402665138e-02 2.3943750560283661e-01 + <_> + + 0 -1 4807 -6.4725756645202637e-02 + + -5.4622077941894531e-01 9.2595359310507774e-03 + <_> + + 0 -1 4808 2.1703580394387245e-02 + + -8.8741881772875786e-03 6.4019817113876343e-01 + <_> + + 0 -1 4809 6.1110239475965500e-02 + + 9.5075201243162155e-03 -4.3702909350395203e-01 + <_> + + 0 -1 4810 2.0086880773305893e-02 + + 2.2985199466347694e-02 -2.2840890288352966e-01 + <_> + + 0 -1 4811 4.1216641664505005e-02 + + -1.4420590363442898e-02 1.3452969491481781e-01 + <_> + + 0 -1 4812 -2.3712279275059700e-02 + + -2.9533639550209045e-01 1.8435720354318619e-02 + <_> + + 0 -1 4813 -6.8324371241033077e-03 + + 1.2094250321388245e-01 -4.3016240000724792e-02 + <_> + + 0 -1 4814 1.0880210250616074e-01 + + -1.0228149592876434e-02 5.2824842929840088e-01 + <_> + + 0 -1 4815 9.8231732845306396e-03 + + 4.1886411607265472e-02 -1.3665479421615601e-01 + <_> + + 0 -1 4816 -1.5005770139396191e-02 + + 1.8148930370807648e-01 -3.0691139400005341e-02 + <_> + + 0 -1 4817 -4.4110611081123352e-01 + + -1. 1.4937899541109800e-03 + <_> + + 0 -1 4818 -3.4122800827026367e-01 + + -4.9184858798980713e-01 1.0096929967403412e-02 + <_> + + 0 -1 4819 9.3225948512554169e-03 + + -2.2894829511642456e-02 7.0796586573123932e-02 + <_> + + 0 -1 4820 7.3594371788203716e-03 + + 1.3842869549989700e-02 -3.6142700910568237e-01 + <_> + + 0 -1 4821 -8.4109082818031311e-02 + + -6.2284982204437256e-01 7.3129259981215000e-03 + <_> + + 0 -1 4822 1.0704870335757732e-02 + + -4.2617131024599075e-02 1.1360719799995422e-01 + <_> + + 0 -1 4823 1.1478140018880367e-02 + + 3.6586448550224304e-02 -9.6474952995777130e-02 + <_> + + 0 -1 4824 1.6416399739682674e-03 + + -9.8777309060096741e-02 5.5158369243144989e-02 + <_> + + 0 -1 4825 -1.5731199528090656e-04 + + -6.1207920312881470e-02 5.6053601205348969e-02 + <_> + + 0 -1 4826 4.1953278705477715e-03 + + 5.0657391548156738e-02 -1.0238680243492126e-01 + <_> + + 0 -1 4827 -1.6238249838352203e-02 + + 1.1267519742250443e-01 -1.3786830008029938e-02 + <_> + + 0 -1 4828 3.2428819686174393e-02 + + -2.5513019412755966e-02 2.3171940445899963e-01 + <_> + + 0 -1 4829 -8.3901472389698029e-03 + + -6.2842369079589844e-02 2.3776959627866745e-02 + <_> + + 0 -1 4830 4.9057020805776119e-03 + + 5.7676758617162704e-02 -1.2715479731559753e-01 + <_> + + 0 -1 4831 1.4458860270678997e-02 + + -5.0932768732309341e-02 6.2239319086074829e-02 + <_> + + 0 -1 4832 1.2484519928693771e-01 + + -1.1612229980528355e-02 4.9361020326614380e-01 + <_> + + 0 -1 4833 4.8587709665298462e-01 + + 4.8130601644515991e-03 -5.5395811796188354e-01 + <_> + + 0 -1 4834 1.6886210441589355e-01 + + 7.8053288161754608e-03 -7.3394978046417236e-01 + <_> + + 0 -1 4835 -2.1220340568106622e-04 + + 3.1656648963689804e-02 -1.0314700007438660e-01 + <_> + + 0 -1 4836 1.9249629694968462e-03 + + 5.5135779082775116e-02 -1.0309369862079620e-01 + <_> + + 0 -1 4837 -2.8178339824080467e-02 + + 1.1637330055236816e-01 -3.4630060195922852e-02 + <_> + + 0 -1 4838 -1.4069500379264355e-02 + + -1.4737719297409058e-01 4.4723790138959885e-02 + <_> + + 0 -1 4839 -1.2483589816838503e-03 + + -1.1185120046138763e-01 6.8806178867816925e-02 + <_> + + 0 -1 4840 5.3278112318366766e-04 + + -9.3908883631229401e-02 6.7072838544845581e-02 + <_> + + 0 -1 4841 1.1722769588232040e-02 + + -1.9012469798326492e-02 1.8834389746189117e-01 + <_> + 249 + -1.4526200294494629e+00 + + <_> + + 0 -1 4842 5.8254651725292206e-02 + + -2.3232789337635040e-01 2.1454159915447235e-01 + <_> + + 0 -1 4843 3.4433450549840927e-02 + + -2.6520681381225586e-01 1.3274359703063965e-01 + <_> + + 0 -1 4844 1.4937009662389755e-02 + + -2.3927900195121765e-01 1.5786519646644592e-01 + <_> + + 0 -1 4845 3.1153639778494835e-02 + + -1.5004000067710876e-01 1.6116039454936981e-01 + <_> + + 0 -1 4846 2.6988480240106583e-03 + + -2.3409889638423920e-01 9.9983781576156616e-02 + <_> + + 0 -1 4847 9.2046073405072093e-05 + + -2.9268169403076172e-01 4.7872740775346756e-02 + <_> + + 0 -1 4848 5.0020251364912838e-05 + + -3.6815708875656128e-01 5.8189608156681061e-02 + <_> + + 0 -1 4849 -1.4902159571647644e-02 + + -3.8818851113319397e-01 2.6158519089221954e-02 + <_> + + 0 -1 4850 2.0448720082640648e-02 + + 6.0846891254186630e-02 -3.0645281076431274e-01 + <_> + + 0 -1 4851 6.2656581576447934e-05 + + -1.7161040008068085e-01 1.0800299793481827e-01 + <_> + + 0 -1 4852 -7.0627559907734394e-03 + + -2.3428949713706970e-01 7.6327130198478699e-02 + <_> + + 0 -1 4853 -2.9078179504722357e-03 + + -2.1010600030422211e-01 7.8605473041534424e-02 + <_> + + 0 -1 4854 -3.6554310470819473e-02 + + 1.7013889551162720e-01 -1.2837870419025421e-01 + <_> + + 0 -1 4855 -1.3991629704833031e-02 + + -1.5198560059070587e-01 3.1168300658464432e-02 + <_> + + 0 -1 4856 7.4681073427200317e-02 + + 3.6079999059438705e-02 -4.6322378516197205e-01 + <_> + + 0 -1 4857 -1.0407929867506027e-01 + + -3.1802299618721008e-01 2.0612560212612152e-02 + <_> + + 0 -1 4858 1.2444700114428997e-02 + + 7.7818617224693298e-02 -1.6825589537620544e-01 + <_> + + 0 -1 4859 3.4679330885410309e-02 + + 3.2584380358457565e-02 -2.6884159445762634e-01 + <_> + + 0 -1 4860 -2.9028469696640968e-02 + + -4.4522678852081299e-01 2.9661040753126144e-02 + <_> + + 0 -1 4861 2.3345749650616199e-04 + + -1.3071049749851227e-01 6.1756659299135208e-02 + <_> + + 0 -1 4862 3.6993178725242615e-01 + + 1.7400909215211868e-02 -7.0418548583984375e-01 + <_> + + 0 -1 4863 -2.1505730226635933e-02 + + -2.4095299839973450e-01 2.8891649097204208e-02 + <_> + + 0 -1 4864 5.4181810468435287e-02 + + -8.4053620696067810e-02 1.3876989483833313e-01 + <_> + + 0 -1 4865 -3.2677378505468369e-02 + + -2.9904881119728088e-01 2.8195250779390335e-02 + <_> + + 0 -1 4866 1.1804300360381603e-02 + + 4.9124121665954590e-02 -2.5538289546966553e-01 + <_> + + 0 -1 4867 -9.5703108236193657e-03 + + 1.1865220218896866e-01 -7.9305157065391541e-02 + <_> + + 0 -1 4868 -8.5534068057313561e-04 + + -9.0315766632556915e-02 1.2984269857406616e-01 + <_> + + 0 -1 4869 7.1445330977439880e-02 + + 1.4396210201084614e-02 -5.3161299228668213e-01 + <_> + + 0 -1 4870 6.1263251118361950e-03 + + -2.4559390544891357e-01 4.8353280872106552e-02 + <_> + + 0 -1 4871 -4.8277149908244610e-03 + + -2.3828850686550140e-01 7.5664043426513672e-02 + <_> + + 0 -1 4872 -2.6015359908342361e-03 + + 4.5826680958271027e-02 -2.4928370118141174e-01 + <_> + + 0 -1 4873 -4.7515620826743543e-04 + + 3.8604840636253357e-02 -1.3118830323219299e-01 + <_> + + 0 -1 4874 -5.4591469466686249e-02 + + 5.5260437726974487e-01 -1.9622489809989929e-02 + <_> + + 0 -1 4875 5.3931411355733871e-02 + + -4.8285599797964096e-02 2.2110609710216522e-01 + <_> + + 0 -1 4876 -9.1672148555517197e-03 + + -2.5744551420211792e-01 4.0833171457052231e-02 + <_> + + 0 -1 4877 -2.9818129260092974e-03 + + -7.5891457498073578e-02 6.0899209231138229e-02 + <_> + + 0 -1 4878 7.4697382748126984e-02 + + 3.6657888442277908e-02 -2.6946181058883667e-01 + <_> + + 0 -1 4879 -2.7006270363926888e-02 + + 1.8391659855842590e-01 -5.5832479149103165e-02 + <_> + + 0 -1 4880 -6.0810879804193974e-03 + + -3.2777228951454163e-01 3.5269659012556076e-02 + <_> + + 0 -1 4881 3.8182068616151810e-02 + + -5.6075371801853180e-02 2.1839509904384613e-01 + <_> + + 0 -1 4882 9.5723047852516174e-03 + + 8.4293976426124573e-02 -1.1767770349979401e-01 + <_> + + 0 -1 4883 7.8028216958045959e-02 + + 5.6959469802677631e-03 -8.1442731618881226e-01 + <_> + + 0 -1 4884 -3.2862029969692230e-02 + + -4.7212830185890198e-01 1.9418969750404358e-02 + <_> + + 0 -1 4885 4.2359679937362671e-02 + + -1.7929280176758766e-02 3.1368249654769897e-01 + <_> + + 0 -1 4886 -2.1030420437455177e-02 + + 1.4199249446392059e-01 -6.7171506583690643e-02 + <_> + + 0 -1 4887 -4.6487968415021896e-02 + + -3.0455109477043152e-01 3.1824499368667603e-02 + <_> + + 0 -1 4888 -8.5280627012252808e-02 + + 2.4725529551506042e-01 -4.0726520121097565e-02 + <_> + + 0 -1 4889 4.7598700039088726e-03 + + -6.4076490700244904e-02 1.0103560239076614e-01 + <_> + + 0 -1 4890 6.0733199119567871e-02 + + -8.8772647082805634e-02 1.1654719710350037e-01 + <_> + + 0 -1 4891 5.4770488291978836e-02 + + 2.2390449419617653e-02 -4.9855118989944458e-01 + <_> + + 0 -1 4892 -3.7478970625670627e-05 + + 6.2433928251266479e-02 -1.6515359282493591e-01 + <_> + + 0 -1 4893 -2.3898750543594360e-02 + + -1.9021050631999969e-01 1.4979549683630466e-02 + <_> + + 0 -1 4894 -1.8465859815478325e-02 + + 2.3008669912815094e-01 -4.5363288372755051e-02 + <_> + + 0 -1 4895 -3.8619639817625284e-03 + + -1.1168369650840759e-01 7.9550966620445251e-02 + <_> + + 0 -1 4896 6.0682989656925201e-02 + + 2.5401040911674500e-02 -4.1787821054458618e-01 + <_> + + 0 -1 4897 -6.1235381290316582e-03 + + -2.4201570451259613e-01 1.9984690472483635e-02 + <_> + + 0 -1 4898 -2.7558460831642151e-02 + + -4.5678210258483887e-01 2.0328069105744362e-02 + <_> + + 0 -1 4899 2.4938629940152168e-02 + + -3.8399018347263336e-02 1.3205289840698242e-01 + <_> + + 0 -1 4900 -4.7081429511308670e-02 + + 3.1839731335639954e-01 -3.2127480953931808e-02 + <_> + + 0 -1 4901 6.2321990728378296e-02 + + 1.7846960574388504e-02 -5.0114768743515015e-01 + <_> + + 0 -1 4902 -5.5789871839806437e-04 + + 1.0673029720783234e-01 -9.0454310178756714e-02 + <_> + + 0 -1 4903 -2.0528730005025864e-02 + + 2.2777000069618225e-01 -4.6683758497238159e-02 + <_> + + 0 -1 4904 1.4043749542906880e-03 + + -2.0688509941101074e-01 6.7320853471755981e-02 + <_> + + 0 -1 4905 3.1474549323320389e-02 + + 2.5873050093650818e-02 -3.1385809183120728e-01 + <_> + + 0 -1 4906 -3.1364340335130692e-02 + + -3.5079669952392578e-01 2.4890480563044548e-02 + <_> + + 0 -1 4907 -1.0076019912958145e-01 + + -2.2738389670848846e-01 1.0731879621744156e-02 + <_> + + 0 -1 4908 1.4409960247576237e-02 + + 2.4001860618591309e-01 -3.8389049470424652e-02 + <_> + + 0 -1 4909 5.6410171091556549e-02 + + -4.0667269378900528e-02 1.9880810379981995e-01 + <_> + + 0 -1 4910 -1.4310100115835667e-02 + + -2.2484239935874939e-01 5.1415968686342239e-02 + <_> + + 0 -1 4911 3.8093481212854385e-02 + + 1.0602000169456005e-02 -6.5031349658966064e-01 + <_> + + 0 -1 4912 7.3483381420373917e-03 + + 3.7624299526214600e-02 -2.3660179972648621e-01 + <_> + + 0 -1 4913 1.5990389883518219e-01 + + -3.1958691775798798e-02 7.8257188200950623e-02 + <_> + + 0 -1 4914 7.5298376381397247e-02 + + -2.2225739434361458e-02 4.7734829783439636e-01 + <_> + + 0 -1 4915 1.0515630245208740e-02 + + 2.4979539215564728e-02 -4.3517309427261353e-01 + <_> + + 0 -1 4916 1.1720249801874161e-01 + + -3.7235978990793228e-02 2.6529499888420105e-01 + <_> + + 0 -1 4917 1.5799700122443028e-05 + + -1.0837449878454208e-01 7.2809703648090363e-02 + <_> + + 0 -1 4918 1.2115119956433773e-02 + + 6.5032199025154114e-02 -1.4378160238265991e-01 + <_> + + 0 -1 4919 -1.7766270786523819e-02 + + 1.0095430165529251e-01 -2.4499140679836273e-02 + <_> + + 0 -1 4920 4.2227920144796371e-02 + + -3.6625079810619354e-02 2.8341490030288696e-01 + <_> + + 0 -1 4921 2.4346679449081421e-02 + + 2.4560010060667992e-02 -1.9787840545177460e-01 + <_> + + 0 -1 4922 3.1748838722705841e-02 + + 2.9603859409689903e-02 -3.0412709712982178e-01 + <_> + + 0 -1 4923 -5.2616238594055176e-02 + + 1.7751359939575195e-01 -3.1825721263885498e-02 + <_> + + 0 -1 4924 -5.4358910769224167e-02 + + 2.2886650264263153e-01 -4.0221411734819412e-02 + <_> + + 0 -1 4925 1.1845750268548727e-03 + + 6.1528120189905167e-02 -1.2204740196466446e-01 + <_> + + 0 -1 4926 -3.6325298249721527e-02 + + -2.9528170824050903e-01 3.3452831208705902e-02 + <_> + + 0 -1 4927 1.5100809931755066e-01 + + -2.5661900639533997e-02 3.8788089156150818e-01 + <_> + + 0 -1 4928 2.8278939425945282e-02 + + -3.5951491445302963e-02 2.5251358747482300e-01 + <_> + + 0 -1 4929 -8.3803251385688782e-02 + + -7.2599482536315918e-01 4.1993269696831703e-03 + <_> + + 0 -1 4930 -2.9865629039704800e-04 + + 5.5302988737821579e-02 -1.6678869724273682e-01 + <_> + + 0 -1 4931 -1.6872739419341087e-02 + + -1.9040539860725403e-01 5.2307758480310440e-02 + <_> + + 0 -1 4932 -5.9451311826705933e-02 + + -4.7634351253509521e-01 2.0981209352612495e-02 + <_> + + 0 -1 4933 -1.8378829583525658e-02 + + 6.6858462989330292e-02 -6.0389090329408646e-02 + <_> + + 0 -1 4934 4.8198848962783813e-02 + + 4.2580351233482361e-02 -2.6010730862617493e-01 + <_> + + 0 -1 4935 -4.3217130005359650e-02 + + -2.5067010521888733e-01 1.7225300893187523e-02 + <_> + + 0 -1 4936 -6.3647949136793613e-03 + + -1.6788710653781891e-01 6.8857319653034210e-02 + <_> + + 0 -1 4937 2.4770569801330566e-01 + + -3.3154450356960297e-02 1.4794079959392548e-01 + <_> + + 0 -1 4938 -1.1216869950294495e-01 + + 5.1129728555679321e-01 -1.7360100522637367e-02 + <_> + + 0 -1 4939 3.6601010710000992e-02 + + -4.3869979679584503e-02 1.9755239784717560e-01 + <_> + + 0 -1 4940 -7.2332553565502167e-02 + + -8.2932412624359131e-01 1.1810120195150375e-02 + <_> + + 0 -1 4941 7.7837951481342316e-02 + + 2.4520579725503922e-02 -2.7260521054267883e-01 + <_> + + 0 -1 4942 7.2094596922397614e-02 + + 3.7606250494718552e-02 -2.7291780710220337e-01 + <_> + + 0 -1 4943 -8.7373353540897369e-02 + + -9.5344787836074829e-01 3.2734218984842300e-03 + <_> + + 0 -1 4944 -3.6240059882402420e-02 + + -3.2300001382827759e-01 2.6389310136437416e-02 + <_> + + 0 -1 4945 -8.7862694635987282e-03 + + -1.4808210730552673e-01 4.6761561185121536e-02 + <_> + + 0 -1 4946 6.5432381816208363e-03 + + 6.0071479529142380e-02 -1.5036399662494659e-01 + <_> + + 0 -1 4947 2.7910009957849979e-03 + + -7.9585656523704529e-02 6.4064942300319672e-02 + <_> + + 0 -1 4948 2.9471930116415024e-02 + + 3.6904528737068176e-02 -2.7659609913825989e-01 + <_> + + 0 -1 4949 -4.4924151152372360e-02 + + 3.5313630104064941e-01 -2.7219140902161598e-02 + <_> + + 0 -1 4950 7.8969523310661316e-02 + + 1.0873800143599510e-02 -9.3217527866363525e-01 + <_> + + 0 -1 4951 -3.1053030863404274e-02 + + 2.4087889492511749e-01 -2.7155969291925430e-02 + <_> + + 0 -1 4952 5.0429090857505798e-02 + + -5.4164800792932510e-02 2.0343920588493347e-01 + <_> + + 0 -1 4953 -3.7637658417224884e-02 + + 3.2998979091644287e-01 -3.4573089331388474e-02 + <_> + + 0 -1 4954 -1.7269999952986836e-03 + + -1.2339779734611511e-01 7.5958393514156342e-02 + <_> + + 0 -1 4955 1.2604339979588985e-02 + + 3.6150000989437103e-02 -2.1591770648956299e-01 + <_> + + 0 -1 4956 1.1010640300810337e-02 + + -1.4330290257930756e-01 6.3043266534805298e-02 + <_> + + 0 -1 4957 1.3539699837565422e-02 + + -7.8418523073196411e-02 1.8389409780502319e-01 + <_> + + 0 -1 4958 -3.8949768990278244e-02 + + 3.4183630347251892e-01 -2.9505429789423943e-02 + <_> + + 0 -1 4959 -4.9093078821897507e-02 + + -3.6278200149536133e-01 1.7093619331717491e-02 + <_> + + 0 -1 4960 4.2306110262870789e-03 + + 5.8190550655126572e-02 -1.8383790552616119e-01 + <_> + + 0 -1 4961 8.9376904070377350e-03 + + -5.1576498895883560e-02 1.9376990199089050e-01 + <_> + + 0 -1 4962 4.0846280753612518e-02 + + 1.3241729699075222e-02 -7.0892220735549927e-01 + <_> + + 0 -1 4963 -3.6945961415767670e-02 + + -3.4456318616867065e-01 7.1702878922224045e-03 + <_> + + 0 -1 4964 -1.2924180366098881e-02 + + -1.9354179501533508e-01 4.8157788813114166e-02 + <_> + + 0 -1 4965 3.3079650253057480e-02 + + -5.1704820245504379e-02 1.3492329418659210e-01 + <_> + + 0 -1 4966 2.2233519703149796e-02 + + 5.2919991314411163e-02 -1.7628639936447144e-01 + <_> + + 0 -1 4967 -1.4483500272035599e-02 + + 1.5105240046977997e-01 -3.9817798882722855e-02 + <_> + + 0 -1 4968 1.5934909880161285e-01 + + -3.3422928303480148e-02 2.8085818886756897e-01 + <_> + + 0 -1 4969 1.2470430135726929e-01 + + 1.1225829832255840e-02 -4.5520108938217163e-01 + <_> + + 0 -1 4970 7.0243299007415771e-02 + + 2.6213169097900391e-02 -3.4778589010238647e-01 + <_> + + 0 -1 4971 6.1747688055038452e-01 + + 9.0320473536849022e-03 -5.5216097831726074e-01 + <_> + + 0 -1 4972 7.7007927000522614e-02 + + 9.3850009143352509e-03 -6.9495117664337158e-01 + <_> + + 0 -1 4973 4.2874120175838470e-02 + + -3.3166319131851196e-02 1.3550239801406860e-01 + <_> + + 0 -1 4974 -2.4558259174227715e-02 + + 3.8989260792732239e-01 -2.0506320521235466e-02 + <_> + + 0 -1 4975 1.0723150335252285e-02 + + -5.1526758819818497e-02 8.9461207389831543e-02 + <_> + + 0 -1 4976 3.8331970572471619e-02 + + -3.9952859282493591e-02 1.8591549992561340e-01 + <_> + + 0 -1 4977 1.2556019425392151e-01 + + 5.1561538130044937e-03 -8.4782391786575317e-01 + <_> + + 0 -1 4978 1.1590070277452469e-01 + + 9.7828712314367294e-03 -7.6437431573867798e-01 + <_> + + 0 -1 4979 -1.5016060322523117e-02 + + -1.8328569829463959e-01 3.2125338912010193e-02 + <_> + + 0 -1 4980 -4.1521931998431683e-03 + + 9.8160982131958008e-02 -8.2769006490707397e-02 + <_> + + 0 -1 4981 1.4998050173744559e-03 + + 4.1228689253330231e-02 -8.4460526704788208e-02 + <_> + + 0 -1 4982 3.8117531687021255e-02 + + 1.9691960886120796e-02 -3.9931151270866394e-01 + <_> + + 0 -1 4983 9.4391452148556709e-04 + + -1.9674700498580933e-01 5.6476209312677383e-02 + <_> + + 0 -1 4984 2.4907960323616862e-04 + + 9.2797473073005676e-02 -1.0708689689636230e-01 + <_> + + 0 -1 4985 2.5447670370340347e-02 + + -2.5304390117526054e-02 1.0032439976930618e-01 + <_> + + 0 -1 4986 -2.8884090483188629e-02 + + -1.7259830236434937e-01 4.9671061336994171e-02 + <_> + + 0 -1 4987 1.2102840095758438e-01 + + -5.5194748565554619e-03 9.5438259840011597e-01 + <_> + + 0 -1 4988 -7.9245921224355698e-03 + + 6.4903482794761658e-02 -1.2671549618244171e-01 + <_> + + 0 -1 4989 -6.5536066889762878e-02 + + -3.7892189621925354e-01 1.6463089734315872e-02 + <_> + + 0 -1 4990 -1.6883460804820061e-02 + + 5.8534818887710571e-01 -1.4671769924461842e-02 + <_> + + 0 -1 4991 6.7252418957650661e-03 + + 2.7604229748249054e-02 -3.4817421436309814e-01 + <_> + + 0 -1 4992 -6.3783898949623108e-02 + + -3.9567160606384277e-01 1.9867889583110809e-02 + <_> + + 0 -1 4993 1.8600550293922424e-01 + + -4.5898579061031342e-02 7.3586076498031616e-02 + <_> + + 0 -1 4994 4.9724031239748001e-02 + + -2.0517630502581596e-02 4.3107840418815613e-01 + <_> + + 0 -1 4995 1.5011380426585674e-02 + + 4.0192149579524994e-02 -1.0242489725351334e-01 + <_> + + 0 -1 4996 -1.5085030347108841e-02 + + 2.3888920247554779e-01 -3.5642918199300766e-02 + <_> + + 0 -1 4997 -1.2931490316987038e-02 + + -3.6863088607788086e-01 1.7377890646457672e-02 + <_> + + 0 -1 4998 -1.3186899945139885e-02 + + -4.3170270323753357e-01 1.7947910353541374e-02 + <_> + + 0 -1 4999 -6.6814959049224854e-02 + + 4.1336119174957275e-01 -2.0904310047626495e-02 + <_> + + 0 -1 5000 4.4064331799745560e-02 + + -3.8615190982818604e-01 2.1414510905742645e-02 + <_> + + 0 -1 5001 4.1341730952262878e-01 + + 1.0130990296602249e-02 -4.7053098678588867e-01 + <_> + + 0 -1 5002 2.4443659931421280e-02 + + 9.3184120953083038e-02 -8.6774162948131561e-02 + <_> + + 0 -1 5003 1.5779680013656616e-01 + + 4.8137311823666096e-03 -5.8746212720870972e-01 + <_> + + 0 -1 5004 -2.0141510292887688e-02 + + 2.2643919289112091e-01 -4.6824630349874496e-02 + <_> + + 0 -1 5005 3.8796770386397839e-03 + + -7.7155217528343201e-02 3.6106169223785400e-02 + <_> + + 0 -1 5006 1.5064960345625877e-02 + + -5.6656859815120697e-02 1.4758649468421936e-01 + <_> + + 0 -1 5007 1.2925310060381889e-02 + + 3.5308018326759338e-02 -1.1645320057868958e-01 + <_> + + 0 -1 5008 -1.4788310043513775e-02 + + -1.1459939926862717e-01 7.5000070035457611e-02 + <_> + + 0 -1 5009 -2.0497168879956007e-03 + + 4.2067401111125946e-02 -7.0409573614597321e-02 + <_> + + 0 -1 5010 8.9428946375846863e-03 + + 5.3989838808774948e-02 -1.5380840003490448e-01 + <_> + + 0 -1 5011 1.0064999759197235e-01 + + -2.9709249734878540e-02 3.1293758749961853e-01 + <_> + + 0 -1 5012 -4.6580079942941666e-02 + + -7.2227877378463745e-01 1.3004340231418610e-02 + <_> + + 0 -1 5013 -3.8618590682744980e-02 + + 3.3867758512496948e-01 -2.1726610139012337e-02 + <_> + + 0 -1 5014 8.5657741874456406e-03 + + 7.0621289312839508e-02 -1.3055880367755890e-01 + <_> + + 0 -1 5015 -1.0986299812793732e-01 + + 3.7974509596824646e-01 -5.1755867898464203e-03 + <_> + + 0 -1 5016 3.0184251070022583e-01 + + -2.4274839088320732e-02 3.6632651090621948e-01 + <_> + + 0 -1 5017 -5.3246088325977325e-02 + + -5.5290502309799194e-01 6.2071220017969608e-03 + <_> + + 0 -1 5018 3.6629870533943176e-02 + + 2.3161249235272408e-02 -3.5514861345291138e-01 + <_> + + 0 -1 5019 6.9993197917938232e-02 + + 8.9623704552650452e-03 -8.2245421409606934e-01 + <_> + + 0 -1 5020 -8.7623577564954758e-03 + + -2.8028720617294312e-01 2.6217460632324219e-02 + <_> + + 0 -1 5021 1.5275989659130573e-02 + + -5.0123069435358047e-02 1.5774080157279968e-01 + <_> + + 0 -1 5022 1.8836189806461334e-01 + + 1.1483459733426571e-02 -7.4004447460174561e-01 + <_> + + 0 -1 5023 -1.4518629759550095e-02 + + 8.2921922206878662e-02 -5.2536141127347946e-02 + <_> + + 0 -1 5024 1.9221989437937737e-02 + + 4.0790341794490814e-02 -2.0889760553836823e-01 + <_> + + 0 -1 5025 -3.1274989247322083e-02 + + 8.0864340066909790e-01 -1.0754980146884918e-02 + <_> + + 0 -1 5026 -4.9813431687653065e-03 + + -1.9617860019207001e-01 4.1330069303512573e-02 + <_> + + 0 -1 5027 3.7296909838914871e-02 + + 3.0313879251480103e-02 -2.7336311340332031e-01 + <_> + + 0 -1 5028 -1.9014550372958183e-02 + + 1.3439440727233887e-01 -6.0782499611377716e-02 + <_> + + 0 -1 5029 -7.9229613766074181e-03 + + -7.9689770936965942e-02 4.0497440844774246e-02 + <_> + + 0 -1 5030 9.6371799707412720e-02 + + -2.5576870888471603e-02 3.2440510392189026e-01 + <_> + + 0 -1 5031 -1.7210310325026512e-02 + + 2.9772299528121948e-01 -3.0994139611721039e-02 + <_> + + 0 -1 5032 1.0736179538071156e-02 + + -7.0299342274665833e-02 1.2448900192975998e-01 + <_> + + 0 -1 5033 -4.0398869663476944e-02 + + -6.4470887184143066e-01 6.9025149568915367e-03 + <_> + + 0 -1 5034 -3.1870428472757339e-02 + + -5.3339338302612305e-01 1.5221790410578251e-02 + <_> + + 0 -1 5035 3.6518078297376633e-02 + + -7.7875651419162750e-02 1.4458900690078735e-01 + <_> + + 0 -1 5036 1.2330260127782822e-01 + + 1.7689300701022148e-02 -5.1895797252655029e-01 + <_> + + 0 -1 5037 1.0086199641227722e-01 + + 6.6002830862998962e-03 -5.5289500951766968e-01 + <_> + + 0 -1 5038 1.0026770085096359e-01 + + 1.0175090283155441e-02 -7.1554392576217651e-01 + <_> + + 0 -1 5039 3.6956761032342911e-02 + + 2.2131860256195068e-02 -3.1452280282974243e-01 + <_> + + 0 -1 5040 8.5017476230859756e-03 + + 4.9146678298711777e-02 -1.5193499624729156e-01 + <_> + + 0 -1 5041 5.3833048790693283e-02 + + 2.5698679964989424e-03 -5.0750207901000977e-01 + <_> + + 0 -1 5042 4.8958938568830490e-02 + + 9.2353876680135727e-03 -7.9371142387390137e-01 + <_> + + 0 -1 5043 4.0810879319906235e-02 + + -4.6270430088043213e-02 1.9726410508155823e-01 + <_> + + 0 -1 5044 -3.3165120985358953e-03 + + -2.1495009958744049e-01 3.8868401199579239e-02 + <_> + + 0 -1 5045 4.8434760537929833e-04 + + -1.7870649695396423e-01 5.7129681110382080e-02 + <_> + + 0 -1 5046 7.9494096338748932e-02 + + -2.2463550791144371e-02 3.6770978569984436e-01 + <_> + + 0 -1 5047 -8.8844364508986473e-03 + + -3.3796560764312744e-01 2.5869650766253471e-02 + <_> + + 0 -1 5048 -1.0575620457530022e-02 + + 1.2438619881868362e-01 -6.8147383630275726e-02 + <_> + + 0 -1 5049 7.3358109220862389e-03 + + -4.3375171720981598e-02 1.5483480691909790e-01 + <_> + + 0 -1 5050 4.2306821793317795e-02 + + 1.0016439855098724e-01 -8.8011689484119415e-02 + <_> + + 0 -1 5051 7.1759216487407684e-02 + + -8.9269876480102539e-03 2.3254199326038361e-01 + <_> + + 0 -1 5052 -2.2478280588984489e-02 + + -5.4057407379150391e-01 1.4396119862794876e-02 + <_> + + 0 -1 5053 -2.5606580078601837e-02 + + -4.3508179485797882e-02 6.4285047352313995e-02 + <_> + + 0 -1 5054 2.5733409449458122e-02 + + 2.3084849119186401e-02 -3.4278741478919983e-01 + <_> + + 0 -1 5055 -7.0163339376449585e-02 + + 4.0744331479072571e-01 -1.1836090125143528e-02 + <_> + + 0 -1 5056 -1.2527329847216606e-02 + + 9.1184526681900024e-02 -8.7035633623600006e-02 + <_> + + 0 -1 5057 5.9983458369970322e-02 + + 3.6528799682855606e-03 -8.0261522531509399e-01 + <_> + + 0 -1 5058 -5.2271911408752203e-04 + + 6.9573827087879181e-02 -1.2091639637947083e-01 + <_> + + 0 -1 5059 -2.0996539294719696e-01 + + -4.6747279167175293e-01 9.4682360067963600e-03 + <_> + + 0 -1 5060 -1.8358640372753143e-02 + + 1.4919880032539368e-01 -5.7198900729417801e-02 + <_> + + 0 -1 5061 -1.3342049904167652e-02 + + 1.4447879791259766e-01 -2.2494640201330185e-02 + <_> + + 0 -1 5062 -3.0613059177994728e-02 + + -3.3590090274810791e-01 2.4433709681034088e-02 + <_> + + 0 -1 5063 -1.9018750637769699e-02 + + 1.5518119931221008e-01 -2.5613630190491676e-02 + <_> + + 0 -1 5064 -4.5201808214187622e-02 + + 4.8730811476707458e-01 -1.7641659826040268e-02 + <_> + + 0 -1 5065 6.3432596623897552e-02 + + -5.1946818828582764e-02 1.2361440062522888e-01 + <_> + + 0 -1 5066 3.4017860889434814e-03 + + -1.7030030488967896e-01 5.4143410176038742e-02 + <_> + + 0 -1 5067 -8.5307076573371887e-02 + + -7.1878427267074585e-01 1.0392259806394577e-02 + <_> + + 0 -1 5068 -5.3066499531269073e-02 + + 5.2359157800674438e-01 -1.8369760364294052e-02 + <_> + + 0 -1 5069 -2.8319370001554489e-02 + + -1.1979889869689941e-01 5.8951549232006073e-02 + <_> + + 0 -1 5070 -8.7353803217411041e-02 + + 2.7089080214500427e-01 -2.9345329850912094e-02 + <_> + + 0 -1 5071 2.7152231335639954e-01 + + -1.1648589745163918e-02 5.5842977762222290e-01 + <_> + + 0 -1 5072 1.9388480111956596e-02 + + 5.0895590335130692e-02 -1.7962279915809631e-01 + <_> + + 0 -1 5073 2.1159179508686066e-02 + + -4.8424899578094482e-02 9.5020256936550140e-02 + <_> + + 0 -1 5074 1.2039250135421753e-01 + + 9.2587787657976151e-03 -8.7804621458053589e-01 + <_> + + 0 -1 5075 5.0090719014406204e-02 + + -2.1926950663328171e-02 2.0202030241489410e-01 + <_> + + 0 -1 5076 -5.5227670818567276e-03 + + 2.1560280025005341e-01 -3.6554779857397079e-02 + <_> + + 0 -1 5077 2.7551440522074699e-02 + + -3.2782018184661865e-02 1.6503919661045074e-01 + <_> + + 0 -1 5078 -2.5543190538883209e-02 + + -3.6424461007118225e-01 2.1275209262967110e-02 + <_> + + 0 -1 5079 -2.6791828870773315e-01 + + 4.8525270819664001e-01 -4.7535290941596031e-03 + <_> + + 0 -1 5080 -1.6798110306262970e-01 + + 3.9280641078948975e-01 -1.9414989277720451e-02 + <_> + + 0 -1 5081 4.5900348573923111e-02 + + -3.6706160753965378e-02 2.0677609741687775e-01 + <_> + + 0 -1 5082 3.6797890788875520e-04 + + -8.7039902806282043e-02 9.2830970883369446e-02 + <_> + + 0 -1 5083 -9.9194556474685669e-02 + + -3.6096671223640442e-01 2.1962769329547882e-02 + <_> + + 0 -1 5084 8.0924080975819379e-05 + + -7.9007692635059357e-02 9.5904067158699036e-02 + <_> + + 0 -1 5085 7.0894961245357990e-03 + + 3.7076078355312347e-02 -5.0917111337184906e-02 + <_> + + 0 -1 5086 -1.2181960046291351e-03 + + 4.9094028770923615e-02 -1.5975970029830933e-01 + <_> + + 0 -1 5087 -9.2138662934303284e-02 + + 5.5284732580184937e-01 -1.3595860451459885e-02 + <_> + + 0 -1 5088 6.2209279276430607e-03 + + 4.6889189630746841e-02 -1.8105800449848175e-01 + <_> + + 0 -1 5089 6.5014839172363281e-02 + + 9.4407051801681519e-03 -5.1224017143249512e-01 + <_> + + 0 -1 5090 5.4055921733379364e-02 + + 1.6289059072732925e-02 -4.2684501409530640e-01 + <_> + 368 + -1.3073990345001221e+00 + + <_> + + 0 -1 5091 3.7594079971313477e-02 + + -1.5953080356121063e-01 2.4245350062847137e-01 + <_> + + 0 -1 5092 4.0349629707634449e-03 + + -2.5617128610610962e-01 8.0420561134815216e-02 + <_> + + 0 -1 5093 2.1681638900190592e-03 + + -2.8089070320129395e-01 7.0903629064559937e-02 + <_> + + 0 -1 5094 -7.4014628808072302e-06 + + 4.9326181411743164e-02 -1.9688490033149719e-01 + <_> + + 0 -1 5095 -2.2384349722415209e-03 + + 6.8618856370449066e-02 -2.1775339543819427e-01 + <_> + + 0 -1 5096 2.9939650557935238e-03 + + -2.4257700145244598e-01 2.9716130346059799e-02 + <_> + + 0 -1 5097 4.5135850086808205e-03 + + 8.9443869888782501e-02 -1.9461549818515778e-01 + <_> + + 0 -1 5098 3.8457550108432770e-03 + + 5.0935801118612289e-02 -2.7721929550170898e-01 + <_> + + 0 -1 5099 4.0572669240646064e-04 + + -8.5517741739749908e-02 1.6446280479431152e-01 + <_> + + 0 -1 5100 -7.0624578256683890e-06 + + 7.8454487025737762e-02 -1.2395980209112167e-01 + <_> + + 0 -1 5101 -2.8428720543161035e-04 + + 1.0774250328540802e-01 -1.2222009897232056e-01 + <_> + + 0 -1 5102 7.3404680006206036e-03 + + 4.7837160527706146e-02 -2.4441170692443848e-01 + <_> + + 0 -1 5103 3.6235509905964136e-03 + + -3.1533789634704590e-01 3.5066880285739899e-02 + <_> + + 0 -1 5104 -1.5671759610995650e-03 + + -1.7147080600261688e-01 6.5121836960315704e-02 + <_> + + 0 -1 5105 4.2834067717194557e-03 + + -1.3190010190010071e-01 9.2709146440029144e-02 + <_> + + 0 -1 5106 -8.9772082865238190e-03 + + 1.2469480186700821e-01 -2.8118500486016273e-02 + <_> + + 0 -1 5107 5.5919871665537357e-03 + + 4.8671621829271317e-02 -2.2460219264030457e-01 + <_> + + 0 -1 5108 1.1782390065491199e-02 + + 3.1041109934449196e-02 -2.9882109165191650e-01 + <_> + + 0 -1 5109 -5.5568912066519260e-03 + + 1.3689100742340088e-01 -7.7152192592620850e-02 + <_> + + 0 -1 5110 1.7162049189209938e-02 + + -4.0298670530319214e-02 1.1232800036668777e-01 + <_> + + 0 -1 5111 3.5631000064313412e-03 + + 5.6056100875139236e-02 -1.9608840346336365e-01 + <_> + + 0 -1 5112 2.2586699575185776e-02 + + 1.1250300332903862e-02 -5.0490778684616089e-01 + <_> + + 0 -1 5113 2.6307879015803337e-03 + + 4.1528269648551941e-02 -2.2185860574245453e-01 + <_> + + 0 -1 5114 -1.0008380049839616e-03 + + 5.9657059609889984e-02 -1.5395790338516235e-01 + <_> + + 0 -1 5115 -7.1316999383270741e-03 + + 1.0590689629316330e-01 -8.9700952172279358e-02 + <_> + + 0 -1 5116 -6.1685360968112946e-02 + + 1.2677849829196930e-01 -2.2709969431161880e-02 + <_> + + 0 -1 5117 1.3120709918439388e-02 + + -6.3731230795383453e-02 1.5842080116271973e-01 + <_> + + 0 -1 5118 3.2676599919795990e-02 + + 2.5724250823259354e-02 -3.3406201004981995e-01 + <_> + + 0 -1 5119 1.8886770308017731e-01 + + -1.7100410535931587e-02 5.3700131177902222e-01 + <_> + + 0 -1 5120 -1.6522880468983203e-04 + + 5.4908581078052521e-02 -1.1608000099658966e-01 + <_> + + 0 -1 5121 -1.4789770357310772e-03 + + 7.7602192759513855e-02 -1.0971190035343170e-01 + <_> + + 0 -1 5122 -1.2441210448741913e-02 + + -1.4090730249881744e-01 6.8732522428035736e-02 + <_> + + 0 -1 5123 1.9457910209894180e-02 + + -3.7276178598403931e-02 2.6319879293441772e-01 + <_> + + 0 -1 5124 -2.9123809654265642e-03 + + -1.8960340321063995e-01 2.9360920190811157e-02 + <_> + + 0 -1 5125 -2.3870699107646942e-02 + + 2.5528749823570251e-01 -3.1279411166906357e-02 + <_> + + 0 -1 5126 -2.6912079192698002e-03 + + -1.4431649446487427e-01 4.8498779535293579e-02 + <_> + + 0 -1 5127 -1.7636029515415430e-03 + + -1.3328640162944794e-01 5.4250828921794891e-02 + <_> + + 0 -1 5128 -1.8844179809093475e-02 + + 1.1653099954128265e-01 -3.8028150796890259e-02 + <_> + + 0 -1 5129 3.8752850145101547e-02 + + -3.6811299622058868e-02 2.1002089977264404e-01 + <_> + + 0 -1 5130 9.4316434115171432e-03 + + 5.7964589446783066e-02 -1.8342800438404083e-01 + <_> + + 0 -1 5131 -1.1705379933118820e-02 + + 1.7905050516128540e-01 -4.9799650907516479e-02 + <_> + + 0 -1 5132 -4.4072889722883701e-03 + + -1.9810500741004944e-01 4.4608719646930695e-02 + <_> + + 0 -1 5133 -4.7192219644784927e-03 + + -1.8307499587535858e-01 4.2252171784639359e-02 + <_> + + 0 -1 5134 -4.5182029716670513e-03 + + 9.5572151243686676e-02 -6.0799460858106613e-02 + <_> + + 0 -1 5135 -5.4851798340678215e-03 + + -1.7556129395961761e-01 4.0092539042234421e-02 + <_> + + 0 -1 5136 -9.9079031497240067e-04 + + -1.3978339731693268e-01 4.8252910375595093e-02 + <_> + + 0 -1 5137 -5.0425329245626926e-03 + + -8.8625833392143250e-02 7.9794026911258698e-02 + <_> + + 0 -1 5138 -6.3926707953214645e-03 + + 3.5854909569025040e-02 -8.5030712187290192e-02 + <_> + + 0 -1 5139 -1.1408809572458267e-02 + + 7.7756106853485107e-02 -1.0200379788875580e-01 + <_> + + 0 -1 5140 5.9286449104547501e-02 + + 6.4652841538190842e-03 -4.9082350730895996e-01 + <_> + + 0 -1 5141 -5.7389298453927040e-03 + + -1.6221189498901367e-01 5.9541791677474976e-02 + <_> + + 0 -1 5142 4.4626160524785519e-03 + + -2.4659389629960060e-02 2.8509560227394104e-01 + <_> + + 0 -1 5143 -7.4683688580989838e-04 + + 5.5159430950880051e-02 -1.4510269463062286e-01 + <_> + + 0 -1 5144 7.5665451586246490e-03 + + -3.0510440468788147e-02 9.2685796320438385e-02 + <_> + + 0 -1 5145 8.1203378736972809e-02 + + 8.3315223455429077e-03 -8.8626891374588013e-01 + <_> + + 0 -1 5146 2.5454829446971416e-03 + + -5.4131258279085159e-02 1.6551689803600311e-01 + <_> + + 0 -1 5147 5.6319180876016617e-02 + + 1.5744749456644058e-02 -4.6605950593948364e-01 + <_> + + 0 -1 5148 -2.7670960873365402e-02 + + 2.7910009026527405e-01 -2.1267570555210114e-02 + <_> + + 0 -1 5149 5.7495549321174622e-02 + + 1.3765430077910423e-02 -5.6881892681121826e-01 + <_> + + 0 -1 5150 1.1847530258819461e-03 + + 6.3452966511249542e-02 -1.6044929623603821e-01 + <_> + + 0 -1 5151 4.2551690712571144e-03 + + 6.3017703592777252e-02 -1.3584609329700470e-01 + <_> + + 0 -1 5152 -2.1190859377384186e-02 + + 1.9623500108718872e-01 -2.8249129652976990e-02 + <_> + + 0 -1 5153 8.3922911435365677e-03 + + -6.2064249068498611e-02 1.1225070059299469e-01 + <_> + + 0 -1 5154 -3.5534579306840897e-02 + + 1.8565779924392700e-01 -2.1027710288763046e-02 + <_> + + 0 -1 5155 -9.2783384025096893e-03 + + -1.6255140304565430e-01 5.3493771702051163e-02 + <_> + + 0 -1 5156 -7.4480189941823483e-03 + + 5.6045979261398315e-02 -2.7357129380106926e-02 + <_> + + 0 -1 5157 3.4573610872030258e-02 + + 2.7872329577803612e-02 -2.5443691015243530e-01 + <_> + + 0 -1 5158 1.0644230060279369e-02 + + -2.5041149929165840e-02 1.2895500659942627e-01 + <_> + + 0 -1 5159 -6.9164121523499489e-03 + + 5.5145461112260818e-02 -1.4286629855632782e-01 + <_> + + 0 -1 5160 4.0446728467941284e-02 + + 4.3409019708633423e-03 -3.0095139145851135e-01 + <_> + + 0 -1 5161 -2.1182280033826828e-02 + + 2.3987750709056854e-01 -3.0267970636487007e-02 + <_> + + 0 -1 5162 -1.8278649076819420e-02 + + -2.8024369478225708e-01 2.0352259278297424e-02 + <_> + + 0 -1 5163 -6.0500060208141804e-03 + + -1.5138089656829834e-01 4.5843418687582016e-02 + <_> + + 0 -1 5164 -7.4632540345191956e-03 + + 7.3087826371192932e-02 -3.9645120501518250e-02 + <_> + + 0 -1 5165 -3.1640689820051193e-02 + + 3.8544759154319763e-01 -1.8987689167261124e-02 + <_> + + 0 -1 5166 -4.9488719552755356e-02 + + -3.7455439567565918e-01 4.6011591330170631e-03 + <_> + + 0 -1 5167 -2.4384791031479836e-03 + + -1.0864440351724625e-01 7.0171296596527100e-02 + <_> + + 0 -1 5168 7.4253929778933525e-03 + + -4.4223289936780930e-02 7.5678370893001556e-02 + <_> + + 0 -1 5169 -5.3592741489410400e-02 + + 1.9981780648231506e-01 -3.8047380745410919e-02 + <_> + + 0 -1 5170 -2.1555580198764801e-02 + + -5.2737689018249512e-01 7.7934260480105877e-03 + <_> + + 0 -1 5171 4.1731819510459900e-03 + + 3.8742069154977798e-02 -1.6946560144424438e-01 + <_> + + 0 -1 5172 4.1882280260324478e-02 + + -1.1853899806737900e-02 2.9235321283340454e-01 + <_> + + 0 -1 5173 -2.2035069763660431e-02 + + -1.3629269599914551e-01 4.7323219478130341e-02 + <_> + + 0 -1 5174 1.6916249878704548e-03 + + -4.9461908638477325e-02 7.4048481881618500e-02 + <_> + + 0 -1 5175 -1.9994638860225677e-03 + + 9.3016393482685089e-02 -7.5230561196804047e-02 + <_> + + 0 -1 5176 -8.7527623400092125e-03 + + 8.4076300263404846e-02 -3.7777189165353775e-02 + <_> + + 0 -1 5177 2.8121439740061760e-02 + + 3.8471631705760956e-02 -1.9039680063724518e-01 + <_> + + 0 -1 5178 2.4713769555091858e-02 + + -1.1225669644773006e-02 1.3408440351486206e-01 + <_> + + 0 -1 5179 2.1718820556998253e-02 + + -1.7361419275403023e-02 3.4876769781112671e-01 + <_> + + 0 -1 5180 -4.3202299624681473e-02 + + -5.1877439022064209e-01 1.2914709746837616e-02 + <_> + + 0 -1 5181 -1.6658119857311249e-03 + + -3.0727219581604004e-01 1.9104089587926865e-02 + <_> + + 0 -1 5182 -3.2269109040498734e-02 + + 3.1825730204582214e-01 -6.1126789078116417e-03 + <_> + + 0 -1 5183 -9.6689872443675995e-03 + + 3.3182978630065918e-01 -1.8409479409456253e-02 + <_> + + 0 -1 5184 1.7683519981801510e-03 + + 3.1587228178977966e-02 -1.1481689661741257e-01 + <_> + + 0 -1 5185 3.4618038684129715e-02 + + -1.8013959750533104e-02 3.4668689966201782e-01 + <_> + + 0 -1 5186 -9.3643896281719208e-02 + + -5.1143682003021240e-01 1.4282460324466228e-02 + <_> + + 0 -1 5187 4.3095857836306095e-03 + + 2.4471389129757881e-02 -2.3517690598964691e-01 + <_> + + 0 -1 5188 6.6311933100223541e-02 + + -1.5711139887571335e-02 2.4676759541034698e-01 + <_> + + 0 -1 5189 -9.2896772548556328e-03 + + -1.3924039900302887e-01 4.8822149634361267e-02 + <_> + + 0 -1 5190 -3.3214599825441837e-03 + + 1.3379609584808350e-01 -3.6818679422140121e-02 + <_> + + 0 -1 5191 4.0180981159210205e-02 + + -1.2793520465493202e-02 5.2580958604812622e-01 + <_> + + 0 -1 5192 8.7590962648391724e-02 + + 1.2522599659860134e-02 -5.5810731649398804e-01 + <_> + + 0 -1 5193 3.5475298762321472e-02 + + 2.3128280416131020e-02 -2.7402919530868530e-01 + <_> + + 0 -1 5194 5.2033789455890656e-02 + + -6.1640930362045765e-03 1.9052730500698090e-01 + <_> + + 0 -1 5195 -1.3046549260616302e-01 + + 2.5712540745735168e-01 -2.3529190570116043e-02 + <_> + + 0 -1 5196 2.8882310725748539e-03 + + -6.0755409300327301e-02 6.0243420302867889e-02 + <_> + + 0 -1 5197 1.5083160251379013e-02 + + 2.1192179992794991e-02 -2.8479540348052979e-01 + <_> + + 0 -1 5198 8.0875161802396178e-04 + + -8.5497900843620300e-02 5.4305519908666611e-02 + <_> + + 0 -1 5199 1.4947880059480667e-02 + + -5.7983450591564178e-02 1.0115720331668854e-01 + <_> + + 0 -1 5200 -4.5683588832616806e-02 + + -3.9345711469650269e-01 1.7556620761752129e-02 + <_> + + 0 -1 5201 -9.4226107466965914e-04 + + 1.3064099848270416e-01 -5.1675319671630859e-02 + <_> + + 0 -1 5202 -2.8342329896986485e-03 + + 1.5992760658264160e-01 -3.4787811338901520e-02 + <_> + + 0 -1 5203 -1.8812920898199081e-02 + + -2.9807311296463013e-01 2.2536030039191246e-02 + <_> + + 0 -1 5204 1.9601570442318916e-02 + + 1.3461099937558174e-02 -1.6885930299758911e-01 + <_> + + 0 -1 5205 -6.4929589629173279e-02 + + -7.1198761463165283e-01 8.5184276103973389e-03 + <_> + + 0 -1 5206 -1.4283999800682068e-02 + + -7.8602321445941925e-02 4.2226359248161316e-02 + <_> + + 0 -1 5207 2.5105919688940048e-02 + + -2.9744949191808701e-02 2.2586929798126221e-01 + <_> + + 0 -1 5208 3.8459669798612595e-02 + + 1.7592959105968475e-02 -3.4457311034202576e-01 + <_> + + 0 -1 5209 2.9701360035687685e-03 + + -5.2914209663867950e-02 1.1567460000514984e-01 + <_> + + 0 -1 5210 -3.5584170836955309e-03 + + 1.2957760691642761e-01 -6.1714299023151398e-02 + <_> + + 0 -1 5211 5.5475500412285328e-03 + + 4.9168299883604050e-02 -1.2925429642200470e-01 + <_> + + 0 -1 5212 7.1379862725734711e-02 + + -1.1528199538588524e-02 3.2423359155654907e-01 + <_> + + 0 -1 5213 -1.1731989681720734e-01 + + -9.0184438228607178e-01 6.3025541603565216e-03 + <_> + + 0 -1 5214 2.2931929677724838e-02 + + -1.1425419710576534e-02 4.1168990731239319e-01 + <_> + + 0 -1 5215 3.6658400204032660e-03 + + 2.8030570596456528e-02 -2.0567989349365234e-01 + <_> + + 0 -1 5216 -7.0796072483062744e-02 + + -2.1817129850387573e-01 1.2820649892091751e-02 + <_> + + 0 -1 5217 6.7239440977573395e-03 + + -4.2305160313844681e-02 1.4150319993495941e-01 + <_> + + 0 -1 5218 -2.0242671016603708e-03 + + 9.1976962983608246e-02 -4.6815071254968643e-02 + <_> + + 0 -1 5219 2.3123170249164104e-03 + + -7.1074202656745911e-02 9.8617300391197205e-02 + <_> + + 0 -1 5220 2.7525359764695168e-03 + + -5.0785668194293976e-02 7.5282126665115356e-02 + <_> + + 0 -1 5221 -3.4460208844393492e-03 + + 9.6368476748466492e-02 -7.8051783144474030e-02 + <_> + + 0 -1 5222 -1.1416469700634480e-02 + + -1.1313349753618240e-01 7.5080856680870056e-02 + <_> + + 0 -1 5223 3.0283999876701273e-05 + + -1.3886189460754395e-01 4.3761149048805237e-02 + <_> + + 0 -1 5224 -1.4150349888950586e-03 + + 3.7164621055126190e-02 -1.1095599830150604e-01 + <_> + + 0 -1 5225 -1.9245060393586755e-03 + + 7.0604592561721802e-02 -9.4269059598445892e-02 + <_> + + 0 -1 5226 3.0031649395823479e-02 + + -5.1407739520072937e-02 1.6337560117244720e-01 + <_> + + 0 -1 5227 -2.5132829323410988e-03 + + -1.4933520555496216e-01 5.1749840378761292e-02 + <_> + + 0 -1 5228 1.9437290029600263e-04 + + -4.8553969711065292e-02 1.0562740266323090e-01 + <_> + + 0 -1 5229 2.9679399449378252e-03 + + 3.6664169281721115e-02 -1.5650020539760590e-01 + <_> + + 0 -1 5230 3.2629880588501692e-03 + + 4.2934000492095947e-02 -1.4514559507369995e-01 + <_> + + 0 -1 5231 2.9959511011838913e-03 + + -6.3821822404861450e-02 9.3514777719974518e-02 + <_> + + 0 -1 5232 -1.5483190305531025e-02 + + -2.0184549689292908e-01 3.1191380694508553e-02 + <_> + + 0 -1 5233 -2.3956559598445892e-02 + + 3.6116409301757812e-01 -2.4698240682482719e-02 + <_> + + 0 -1 5234 -1.7136270180344582e-02 + + -2.6252090930938721e-01 2.4616269394755363e-02 + <_> + + 0 -1 5235 -6.2233610078692436e-03 + + 1.1059129983186722e-01 -5.7947199791669846e-02 + <_> + + 0 -1 5236 2.9878519475460052e-02 + + 7.8794546425342560e-03 -2.8504589200019836e-01 + <_> + + 0 -1 5237 -9.6910241991281509e-03 + + -1.5696419775485992e-01 3.8263391703367233e-02 + <_> + + 0 -1 5238 -1.2825420498847961e-01 + + 2.8350758552551270e-01 -2.7224350720643997e-02 + <_> + + 0 -1 5239 -3.9670959813520312e-04 + + -1.3316330313682556e-01 5.3896941244602203e-02 + <_> + + 0 -1 5240 -8.2217011367902160e-04 + + -1.3680179417133331e-01 7.7957339584827423e-02 + <_> + + 0 -1 5241 7.4795359978452325e-05 + + -9.0496443212032318e-02 6.8528160452842712e-02 + <_> + + 0 -1 5242 9.3816556036472321e-03 + + -9.9184580147266388e-02 6.4078651368618011e-02 + <_> + + 0 -1 5243 -6.6485297866165638e-03 + + 1.4783580601215363e-01 -4.6988330781459808e-02 + <_> + + 0 -1 5244 -5.5821631103754044e-03 + + -1.3562120497226715e-01 5.5308390408754349e-02 + <_> + + 0 -1 5245 -3.0224759131669998e-02 + + 3.4760668873786926e-01 -1.6698839142918587e-02 + <_> + + 0 -1 5246 -2.7506949380040169e-02 + + 2.8031051158905029e-01 -1.0123490355908871e-02 + <_> + + 0 -1 5247 1.5043930150568485e-02 + + 1.5279079787433147e-02 -3.9506959915161133e-01 + <_> + + 0 -1 5248 9.2139653861522675e-03 + + 2.6678409427404404e-02 -1.4255590736865997e-01 + <_> + + 0 -1 5249 6.3955582678318024e-02 + + 6.2569188885390759e-03 -8.8076668977737427e-01 + <_> + + 0 -1 5250 3.0171850085025653e-05 + + -1.1047919839620590e-01 5.1936849951744080e-02 + <_> + + 0 -1 5251 -5.1049161702394485e-03 + + 2.1350729465484619e-01 -2.7889270335435867e-02 + <_> + + 0 -1 5252 -9.1436346992850304e-03 + + -1.9197109341621399e-01 3.0341459438204765e-02 + <_> + + 0 -1 5253 -7.6746046543121338e-02 + + -7.2468912601470947e-01 7.1879802271723747e-03 + <_> + + 0 -1 5254 4.8780560493469238e-02 + + -2.1447779610753059e-02 3.0364468693733215e-01 + <_> + + 0 -1 5255 4.2551410198211670e-01 + + 6.3504311256110668e-03 -9.4783991575241089e-01 + <_> + + 0 -1 5256 2.2590209264308214e-03 + + 1.8893169239163399e-02 -1.9443869590759277e-01 + <_> + + 0 -1 5257 -3.8309961091727018e-03 + + -1.2813219428062439e-01 4.7748729586601257e-02 + <_> + + 0 -1 5258 7.5495108030736446e-03 + + -6.7982822656631470e-02 7.6470799744129181e-02 + <_> + + 0 -1 5259 1.4784730039536953e-02 + + -3.4885041415691376e-02 1.7936830222606659e-01 + <_> + + 0 -1 5260 5.6762639433145523e-02 + + 1.2816789560019970e-02 -4.8105829954147339e-01 + <_> + + 0 -1 5261 -2.5854599662125111e-03 + + 1.2653970718383789e-01 -4.7761850059032440e-02 + <_> + + 0 -1 5262 -5.5542518384754658e-03 + + 7.2126902639865875e-02 -3.8657661527395248e-02 + <_> + + 0 -1 5263 2.6672501116991043e-03 + + -6.1485260725021362e-02 1.2647840380668640e-01 + <_> + + 0 -1 5264 -2.2879959642887115e-01 + + -4.8435351252555847e-01 4.5618140138685703e-03 + <_> + + 0 -1 5265 3.7851329892873764e-02 + + 1.8769560381770134e-02 -3.0806949734687805e-01 + <_> + + 0 -1 5266 2.4275709874927998e-03 + + -7.1589171886444092e-02 8.1694543361663818e-02 + <_> + + 0 -1 5267 -7.9000797122716904e-03 + + -1.2589320540428162e-01 4.7421310096979141e-02 + <_> + + 0 -1 5268 -6.7925411276519299e-03 + + 6.1758730560541153e-02 -5.3803559392690659e-02 + <_> + + 0 -1 5269 -1.7522360384464264e-01 + + 3.3726111054420471e-01 -1.7961960285902023e-02 + <_> + + 0 -1 5270 6.6033959388732910e-02 + + 4.4206557795405388e-03 -5.5819147825241089e-01 + <_> + + 0 -1 5271 5.1699979230761528e-03 + + 5.3349301218986511e-02 -1.2245289981365204e-01 + <_> + + 0 -1 5272 1.2047989666461945e-01 + + -6.9788158871233463e-03 7.9341912269592285e-01 + <_> + + 0 -1 5273 -4.2617730796337128e-03 + + 7.8014120459556580e-02 -6.8260386586189270e-02 + <_> + + 0 -1 5274 3.0685370787978172e-02 + + 9.3320813030004501e-03 -2.7420249581336975e-01 + <_> + + 0 -1 5275 -6.8651121109724045e-03 + + -1.3084979355335236e-01 4.7273408621549606e-02 + <_> + + 0 -1 5276 -3.9284229278564453e-03 + + 1.1553719639778137e-01 -5.5044289678335190e-02 + <_> + + 0 -1 5277 -4.2112590745091438e-03 + + 1.3730779290199280e-01 -5.2514389157295227e-02 + <_> + + 0 -1 5278 -7.6999869197607040e-03 + + -3.4011191129684448e-01 1.7478680238127708e-02 + <_> + + 0 -1 5279 -1.1867909692227840e-02 + + 2.5731179118156433e-01 -2.5691770017147064e-02 + <_> + + 0 -1 5280 5.3619472309947014e-03 + + 1.1936780065298080e-02 -2.8930050134658813e-01 + <_> + + 0 -1 5281 -2.3130229674279690e-03 + + -1.0821309685707092e-01 5.3640749305486679e-02 + <_> + + 0 -1 5282 -2.2222870588302612e-01 + + 3.1654310226440430e-01 -1.4542319811880589e-02 + <_> + + 0 -1 5283 6.2593920156359673e-03 + + 3.7795171141624451e-02 -1.5100699663162231e-01 + <_> + + 0 -1 5284 3.4754760563373566e-03 + + -6.3047468662261963e-02 8.5025683045387268e-02 + <_> + + 0 -1 5285 -2.8249478782527149e-04 + + -1.1442869901657104e-01 5.6041400879621506e-02 + <_> + + 0 -1 5286 4.8107700422406197e-04 + + -9.6898466348648071e-02 2.8347050771117210e-02 + <_> + + 0 -1 5287 2.4178959429264069e-02 + + -2.1033059805631638e-02 2.5629448890686035e-01 + <_> + + 0 -1 5288 2.9526960104703903e-02 + + 1.6122579574584961e-02 -3.4472090005874634e-01 + <_> + + 0 -1 5289 -3.0501780565828085e-03 + + -1.3633529841899872e-01 4.0983788669109344e-02 + <_> + + 0 -1 5290 1.0082300286740065e-03 + + -6.0927029699087143e-02 4.0717199444770813e-02 + <_> + + 0 -1 5291 -3.0384280253201723e-03 + + 6.1883278191089630e-02 -9.7887121140956879e-02 + <_> + + 0 -1 5292 3.2816259190440178e-03 + + -4.7950621694326401e-02 6.2675401568412781e-02 + <_> + + 0 -1 5293 1.3182610273361206e-02 + + 2.2476239502429962e-01 -2.5649169459939003e-02 + <_> + + 0 -1 5294 -2.3278119042515755e-03 + + 7.3735602200031281e-02 -5.1023889333009720e-02 + <_> + + 0 -1 5295 -1.0695509612560272e-02 + + -7.5625538825988770e-01 7.3301601223647594e-03 + <_> + + 0 -1 5296 7.8046746551990509e-02 + + 1.8139410531148314e-03 -6.2067931890487671e-01 + <_> + + 0 -1 5297 5.6678339838981628e-02 + + 6.2128840945661068e-03 -7.8200930356979370e-01 + <_> + + 0 -1 5298 7.2442921809852123e-03 + + -4.8852469772100449e-02 1.0644549876451492e-01 + <_> + + 0 -1 5299 -6.6754333674907684e-02 + + -6.4796060323715210e-01 8.7654050439596176e-03 + <_> + + 0 -1 5300 -3.4662630409002304e-02 + + 3.3293959498405457e-01 -1.7286069691181183e-02 + <_> + + 0 -1 5301 -1.5084750019013882e-02 + + -1.2696580588817596e-01 4.5507699251174927e-02 + <_> + + 0 -1 5302 -2.3421730846166611e-02 + + -2.5279340147972107e-01 1.5818970277905464e-02 + <_> + + 0 -1 5303 2.5689320638775826e-02 + + -3.7194628268480301e-02 1.6223169863224030e-01 + <_> + + 0 -1 5304 6.3883140683174133e-03 + + 3.0617009848356247e-02 -1.3695000112056732e-01 + <_> + + 0 -1 5305 -1.0519590228796005e-01 + + -8.4453481435775757e-01 6.6635669209063053e-03 + <_> + + 0 -1 5306 1.8773669376969337e-02 + + 4.6610347926616669e-03 -1.7115519940853119e-01 + <_> + + 0 -1 5307 -1.3318320270627737e-03 + + 6.5780423581600189e-02 -8.7241567671298981e-02 + <_> + + 0 -1 5308 -2.1417330205440521e-01 + + 4.7866639494895935e-01 -3.0801231041550636e-03 + <_> + + 0 -1 5309 -5.5097872018814087e-01 + + -6.3633698225021362e-01 8.8994754478335381e-03 + <_> + + 0 -1 5310 -3.3415539655834436e-03 + + 1.2846040725708008e-01 -3.2317079603672028e-02 + <_> + + 0 -1 5311 1.0858159512281418e-03 + + -1.1438050121068954e-01 4.7090869396924973e-02 + <_> + + 0 -1 5312 4.2784498073160648e-03 + + 4.3842699378728867e-02 -8.0856688320636749e-02 + <_> + + 0 -1 5313 -2.0054390188306570e-03 + + 1.0532370209693909e-01 -5.0866328179836273e-02 + <_> + + 0 -1 5314 -3.4336079843342304e-03 + + -7.9986043274402618e-02 4.2570270597934723e-02 + <_> + + 0 -1 5315 -1.2204749509692192e-03 + + 4.1162941604852676e-02 -1.3378110527992249e-01 + <_> + + 0 -1 5316 -1.3440379500389099e-01 + + -5.2044588327407837e-01 2.9635489918291569e-03 + <_> + + 0 -1 5317 1.4581819996237755e-02 + + -1.9067969173192978e-02 4.0065661072731018e-01 + <_> + + 0 -1 5318 -2.8450360987335443e-03 + + -5.8998711407184601e-02 3.1797751784324646e-02 + <_> + + 0 -1 5319 4.8618339933454990e-03 + + 3.9754759520292282e-02 -1.4741879701614380e-01 + <_> + + 0 -1 5320 5.6295008398592472e-03 + + -4.2094878852367401e-02 4.1394129395484924e-02 + <_> + + 0 -1 5321 -4.5936359092593193e-03 + + 2.0751099288463593e-01 -2.7909379452466965e-02 + <_> + + 0 -1 5322 -3.0693739652633667e-02 + + -3.4029048681259155e-01 5.0333337858319283e-03 + <_> + + 0 -1 5323 3.1476689036935568e-04 + + -8.8118873536586761e-02 6.3354291021823883e-02 + <_> + + 0 -1 5324 -3.4313879441469908e-03 + + 5.9088770300149918e-02 -6.7773580551147461e-02 + <_> + + 0 -1 5325 -3.4075058647431433e-04 + + -9.8268762230873108e-02 5.8783698827028275e-02 + <_> + + 0 -1 5326 -3.7829359062016010e-03 + + 1.7841720581054688e-01 -4.6912178397178650e-02 + <_> + + 0 -1 5327 -4.6322058886289597e-02 + + -1.6307410597801208e-01 3.9191931486129761e-02 + <_> + + 0 -1 5328 1.8471380695700645e-02 + + 1.5975039452314377e-02 -2.8808701038360596e-01 + <_> + + 0 -1 5329 9.0416809543967247e-03 + + -3.1815830618143082e-02 1.6392929852008820e-01 + <_> + + 0 -1 5330 -3.1387940049171448e-02 + + 1.5696319937705994e-01 -1.5333149582147598e-02 + <_> + + 0 -1 5331 -7.5614887464325875e-05 + + 7.4591353535652161e-02 -8.4359541535377502e-02 + <_> + + 0 -1 5332 -2.3939300328493118e-02 + + -1.1604589968919754e-01 3.0868789181113243e-02 + <_> + + 0 -1 5333 2.2537580225616693e-03 + + 4.0261909365653992e-02 -1.6604030132293701e-01 + <_> + + 0 -1 5334 -5.3389810025691986e-02 + + 1.0318890213966370e-01 -2.0877240225672722e-02 + <_> + + 0 -1 5335 5.6420508772134781e-03 + + -4.6839520335197449e-02 1.1634089797735214e-01 + <_> + + 0 -1 5336 4.2355400510132313e-03 + + 2.5631250813603401e-02 -9.3193583190441132e-02 + <_> + + 0 -1 5337 -2.1929260343313217e-02 + + -3.5141220688819885e-01 1.5704020857810974e-02 + <_> + + 0 -1 5338 1.3050789944827557e-02 + + -7.6834131032228470e-03 1.3095930218696594e-01 + <_> + + 0 -1 5339 2.2426109760999680e-02 + + 6.3964631408452988e-03 -8.0513131618499756e-01 + <_> + + 0 -1 5340 -8.8755652308464050e-02 + + 3.9323249459266663e-01 -1.0365420021116734e-02 + <_> + + 0 -1 5341 1.1768270283937454e-02 + + -7.5270563364028931e-02 7.1183227002620697e-02 + <_> + + 0 -1 5342 2.1221570670604706e-02 + + 2.4082770571112633e-02 -1.6292670369148254e-01 + <_> + + 0 -1 5343 -5.2887611091136932e-02 + + 3.3231079578399658e-01 -1.5548040159046650e-02 + <_> + + 0 -1 5344 2.5847768783569336e-01 + + 9.5278248190879822e-03 -6.3773447275161743e-01 + <_> + + 0 -1 5345 -2.8695159126073122e-03 + + -9.8719991743564606e-02 5.5244650691747665e-02 + <_> + + 0 -1 5346 1.2492690235376358e-01 + + 1.9365450134500861e-03 -9.9999272823333740e-01 + <_> + + 0 -1 5347 4.3900720775127411e-02 + + -1.6385570168495178e-02 3.7183851003646851e-01 + <_> + + 0 -1 5348 5.2520469762384892e-03 + + 4.7758270055055618e-02 -1.3461829721927643e-01 + <_> + + 0 -1 5349 -2.0031959284096956e-03 + + 8.3587102591991425e-02 -6.7750580608844757e-02 + <_> + + 0 -1 5350 4.4535310007631779e-03 + + -8.9202463626861572e-02 4.6748258173465729e-02 + <_> + + 0 -1 5351 1.5174630284309387e-01 + + 5.6481529027223587e-03 -8.2450437545776367e-01 + <_> + + 0 -1 5352 -6.1992209404706955e-02 + + -4.3334591388702393e-01 5.3922580555081367e-03 + <_> + + 0 -1 5353 -9.3085348606109619e-02 + + 5.2169102430343628e-01 -9.9382782354950905e-03 + <_> + + 0 -1 5354 -4.9394429661333561e-03 + + -2.0004139840602875e-01 2.7710979804396629e-02 + <_> + + 0 -1 5355 -1.3681269483640790e-03 + + 8.5065416991710663e-02 -7.4542969465255737e-02 + <_> + + 0 -1 5356 -2.7988219517283142e-04 + + -7.6987631618976593e-02 6.8912938237190247e-02 + <_> + + 0 -1 5357 -3.2129848841577768e-03 + + 1.5940999984741211e-01 -3.4221589565277100e-02 + <_> + + 0 -1 5358 3.9533369243144989e-02 + + 3.1095379963517189e-03 -8.5460907220840454e-01 + <_> + + 0 -1 5359 2.0442719105631113e-03 + + -6.4074553549289703e-02 7.8644759953022003e-02 + <_> + + 0 -1 5360 -2.0770760253071785e-02 + + -3.1129410862922668e-01 4.3864948675036430e-03 + <_> + + 0 -1 5361 -4.7200381755828857e-02 + + 1.0526890307664871e-01 -5.1456131041049957e-02 + <_> + + 0 -1 5362 1.3096869923174381e-02 + + 9.9430568516254425e-03 -1.4253680408000946e-01 + <_> + + 0 -1 5363 -1.0935390368103981e-02 + + -1.6756610572338104e-01 3.5863548517227173e-02 + <_> + + 0 -1 5364 -1.6354349255561829e-01 + + -8.2129329442977905e-01 1.9741130527108908e-03 + <_> + + 0 -1 5365 3.8668718189001083e-02 + + -1.1329679749906063e-02 4.7532460093498230e-01 + <_> + + 0 -1 5366 6.0949958860874176e-02 + + 1.1516530066728592e-02 -5.7472079992294312e-01 + <_> + + 0 -1 5367 -1.2101690284907818e-02 + + 1.5505610406398773e-01 -3.2629158347845078e-02 + <_> + + 0 -1 5368 -1.0064270347356796e-02 + + -9.2389531433582306e-02 3.2318059355020523e-02 + <_> + + 0 -1 5369 -5.8900681324303150e-03 + + -2.6503130793571472e-01 1.9127139821648598e-02 + <_> + + 0 -1 5370 -3.1361039727926254e-02 + + 5.6730771064758301e-01 -9.6010044217109680e-03 + <_> + + 0 -1 5371 -4.7777321189641953e-02 + + 5.9038662910461426e-01 -7.4091539718210697e-03 + <_> + + 0 -1 5372 -1.0792270302772522e-02 + + -1.2814930081367493e-01 4.0264949202537537e-02 + <_> + + 0 -1 5373 -1.4374120160937309e-02 + + 2.0772540569305420e-01 -2.9854990541934967e-02 + <_> + + 0 -1 5374 5.2079811692237854e-02 + + -3.8335260469466448e-03 7.5818628072738647e-01 + <_> + + 0 -1 5375 6.1354418285191059e-03 + + 3.0476450920104980e-02 -1.7281690239906311e-01 + <_> + + 0 -1 5376 -3.0654598958790302e-03 + + 5.8025300502777100e-02 -7.9617038369178772e-02 + <_> + + 0 -1 5377 5.7721929624676704e-03 + + -3.6747518926858902e-02 1.6319790482521057e-01 + <_> + + 0 -1 5378 2.7028471231460571e-01 + + -3.9847781881690025e-03 4.9476540088653564e-01 + <_> + + 0 -1 5379 -1.5034529566764832e-01 + + -5.2624911069869995e-01 1.0567910037934780e-02 + <_> + + 0 -1 5380 7.6101601123809814e-02 + + -2.3525250144302845e-03 9.1819989681243896e-01 + <_> + + 0 -1 5381 -5.5953811854124069e-02 + + -7.8321272134780884e-01 6.8363421596586704e-03 + <_> + + 0 -1 5382 -2.4320950731635094e-02 + + 2.2739610075950623e-01 -1.1622290126979351e-02 + <_> + + 0 -1 5383 1.6274319961667061e-02 + + 1.4024170115590096e-02 -3.4222239255905151e-01 + <_> + + 0 -1 5384 7.7015208080410957e-04 + + -4.4768709689378738e-02 5.7412229478359222e-02 + <_> + + 0 -1 5385 1.3995269546285272e-03 + + -6.0614239424467087e-02 8.4398999810218811e-02 + <_> + + 0 -1 5386 -2.0544769242405891e-02 + + -1.8160410225391388e-01 2.0795119926333427e-02 + <_> + + 0 -1 5387 -3.6872550845146179e-02 + + 2.6817229390144348e-01 -1.9921269267797470e-02 + <_> + + 0 -1 5388 -2.5466610677540302e-03 + + -1.3361929357051849e-01 1.9191939383745193e-02 + <_> + + 0 -1 5389 3.3513590693473816e-02 + + 9.8206587135791779e-03 -5.2659887075424194e-01 + <_> + + 0 -1 5390 -5.5437661707401276e-02 + + 4.5292490720748901e-01 -9.3475803732872009e-03 + <_> + + 0 -1 5391 -5.3564338013529778e-03 + + -1.4787580072879791e-01 3.3617950975894928e-02 + <_> + + 0 -1 5392 1.1551200412213802e-02 + + -3.2851058989763260e-02 6.3716597855091095e-02 + <_> + + 0 -1 5393 7.2917826473712921e-02 + + -1.6388719901442528e-02 3.1580808758735657e-01 + <_> + + 0 -1 5394 -8.9563012123107910e-02 + + 7.5366562604904175e-01 -2.0717559382319450e-03 + <_> + + 0 -1 5395 -2.2225419525057077e-03 + + -9.2733852565288544e-02 6.0395851731300354e-02 + <_> + + 0 -1 5396 -1.7847110331058502e-01 + + 4.7988530993461609e-01 -1.0481510311365128e-02 + <_> + + 0 -1 5397 6.7723011597990990e-03 + + 5.2660830318927765e-02 -1.0471290349960327e-01 + <_> + + 0 -1 5398 2.8399130329489708e-02 + + -2.2862000390887260e-02 2.5348138809204102e-01 + <_> + + 0 -1 5399 -7.0053818635642529e-03 + + -1.3017000257968903e-01 4.3448921293020248e-02 + <_> + + 0 -1 5400 -5.1440461538732052e-03 + + -1.4800100028514862e-01 4.5171629637479782e-02 + <_> + + 0 -1 5401 -1.1269059963524342e-02 + + 1.1185359954833984e-01 -5.4867088794708252e-02 + <_> + + 0 -1 5402 2.2866109386086464e-02 + + -1.5563690103590488e-02 2.1705490350723267e-01 + <_> + + 0 -1 5403 5.1559228450059891e-02 + + 1.0421809740364552e-02 -5.3233247995376587e-01 + <_> + + 0 -1 5404 1.8902059644460678e-02 + + -3.0878869816660881e-02 5.5574499070644379e-02 + <_> + + 0 -1 5405 5.5700382217764854e-03 + + 5.3661361336708069e-02 -9.4876497983932495e-02 + <_> + + 0 -1 5406 -2.3021729663014412e-02 + + 1.2766240537166595e-01 -2.2307910025119781e-02 + <_> + + 0 -1 5407 7.1334750391542912e-03 + + 3.1089689582586288e-02 -1.6293430328369141e-01 + <_> + + 0 -1 5408 -2.9335260391235352e-02 + + 1.0503090173006058e-01 -2.6008550077676773e-02 + <_> + + 0 -1 5409 4.6253278851509094e-02 + + 7.8362170606851578e-03 -6.6226661205291748e-01 + <_> + + 0 -1 5410 3.9622580516152084e-04 + + -9.4567127525806427e-02 2.6796899735927582e-02 + <_> + + 0 -1 5411 -1.1323750019073486e-02 + + 7.4313652515411377e-01 -6.7432140931487083e-03 + <_> + + 0 -1 5412 -1.7217209935188293e-01 + + -7.1483498811721802e-01 8.1747565418481827e-03 + <_> + + 0 -1 5413 1.8156579462811351e-03 + + 4.8135720193386078e-02 -1.0678470134735107e-01 + <_> + + 0 -1 5414 5.8022491633892059e-02 + + -7.4218288064002991e-03 3.8226440548896790e-01 + <_> + + 0 -1 5415 1.4357370091602206e-03 + + -2.2542880475521088e-01 2.1576719358563423e-02 + <_> + + 0 -1 5416 5.5960440076887608e-03 + + 2.5731930136680603e-01 -2.1246509626507759e-02 + <_> + + 0 -1 5417 2.5314849335700274e-03 + + -3.6227720975875854e-01 1.5138260088860989e-02 + <_> + + 0 -1 5418 -4.2207110673189163e-03 + + -4.6638991683721542e-02 2.6125539094209671e-02 + <_> + + 0 -1 5419 -5.4260431788861752e-03 + + 1.0110379755496979e-01 -5.2066121250391006e-02 + <_> + + 0 -1 5420 1.6170790186151862e-03 + + -4.1680540889501572e-02 9.6459351480007172e-02 + <_> + + 0 -1 5421 -3.2414530869573355e-03 + + -1.2638680636882782e-01 3.9169210940599442e-02 + <_> + + 0 -1 5422 4.5421482063829899e-03 + + -2.9149880632758141e-02 6.9948889315128326e-02 + <_> + + 0 -1 5423 5.3024510852992535e-03 + + -7.9129062592983246e-02 6.1111859977245331e-02 + <_> + + 0 -1 5424 -4.6412080526351929e-02 + + 3.1127449870109558e-01 -6.2580788508057594e-03 + <_> + + 0 -1 5425 -6.2991487793624401e-03 + + -8.3928130567073822e-02 6.6761530935764313e-02 + <_> + + 0 -1 5426 7.9948090016841888e-02 + + 2.6887101121246815e-03 -5.6553709506988525e-01 + <_> + + 0 -1 5427 9.9693494848906994e-04 + + -7.2051003575325012e-02 9.2260897159576416e-02 + <_> + + 0 -1 5428 -2.1847949828952551e-03 + + 8.3864517509937286e-02 -6.6099606454372406e-02 + <_> + + 0 -1 5429 -1.5286840498447418e-01 + + 6.1705768108367920e-01 -8.1674018874764442e-03 + <_> + + 0 -1 5430 1.7121130600571632e-02 + + 2.6676440611481667e-02 -1.4158309996128082e-01 + <_> + + 0 -1 5431 1.8799189710989594e-03 + + -7.7865563333034515e-02 6.7955218255519867e-02 + <_> + + 0 -1 5432 5.5029629729688168e-03 + + -7.9979859292507172e-02 6.4055956900119781e-02 + <_> + + 0 -1 5433 2.7474550530314445e-02 + + 6.0482721775770187e-02 -8.8957548141479492e-02 + <_> + + 0 -1 5434 2.7708879113197327e-01 + + 4.4098719954490662e-03 -1.0000040531158447e+00 + <_> + + 0 -1 5435 -4.9538668245077133e-03 + + 1.4720940589904785e-01 -3.5671569406986237e-02 + <_> + + 0 -1 5436 4.7095369547605515e-02 + + -6.0950522311031818e-03 2.4319580197334290e-01 + <_> + + 0 -1 5437 -3.1939700711518526e-03 + + -1.3417580723762512e-01 3.9335511624813080e-02 + <_> + + 0 -1 5438 3.5586568992584944e-03 + + 2.1399470046162605e-02 -4.3609801679849625e-02 + <_> + + 0 -1 5439 -1.0028639808297157e-02 + + 1.6288889944553375e-01 -3.1448449939489365e-02 + <_> + + 0 -1 5440 -2.9802629724144936e-03 + + -7.0220857858657837e-02 3.7910789251327515e-02 + <_> + + 0 -1 5441 1.7347529530525208e-02 + + 1.1053959839046001e-02 -4.5107790827751160e-01 + <_> + + 0 -1 5442 -4.4207129627466202e-02 + + 1.4115320146083832e-01 -6.2362072058022022e-03 + <_> + + 0 -1 5443 -3.2249989453703165e-03 + + -1.0305760055780411e-01 4.9647849053144455e-02 + <_> + + 0 -1 5444 7.5196991674602032e-03 + + -2.8604390099644661e-02 9.8367802798748016e-02 + <_> + + 0 -1 5445 -6.1209458857774734e-02 + + 2.2113859653472900e-01 -2.9835490509867668e-02 + <_> + + 0 -1 5446 2.0107250660657883e-02 + + 1.6412479802966118e-02 -1.2316829711198807e-01 + <_> + + 0 -1 5447 -1.6578679904341698e-02 + + -2.3395630717277527e-01 3.0250690877437592e-02 + <_> + + 0 -1 5448 -6.0900870710611343e-02 + + 3.1688570976257324e-01 -1.8433200195431709e-02 + <_> + + 0 -1 5449 4.2772209271788597e-03 + + -4.3859448283910751e-02 1.2858760356903076e-01 + <_> + + 0 -1 5450 6.6130697727203369e-02 + + 2.0941190421581268e-02 -2.0549100637435913e-01 + <_> + + 0 -1 5451 2.5896991137415171e-03 + + -8.2597322762012482e-02 7.7048726379871368e-02 + <_> + + 0 -1 5452 -1.7113700509071350e-02 + + -9.9560201168060303e-02 2.0174279808998108e-02 + <_> + + 0 -1 5453 6.2078679911792278e-03 + + -1.5074240043759346e-02 3.5393691062927246e-01 + <_> + + 0 -1 5454 -3.3676949143409729e-01 + + -4.9838671088218689e-01 7.4067250825464725e-03 + <_> + + 0 -1 5455 5.0239380449056625e-02 + + -1.8589239567518234e-02 2.8223350644111633e-01 + <_> + + 0 -1 5456 1.1036300100386143e-02 + + 2.9623959213495255e-02 -2.0078790187835693e-01 + <_> + + 0 -1 5457 6.0965020209550858e-02 + + -1.1036460287868977e-02 5.0334519147872925e-01 + <_> + + 0 -1 5458 1.5966590493917465e-02 + + 1.3941870070993900e-02 -2.4742470681667328e-01 + <_> + 243 + -1.4138590097427368e+00 + + <_> + + 0 -1 5459 -3.8829419761896133e-02 + + 3.1823828816413879e-01 -1.4062009751796722e-01 + <_> + + 0 -1 5460 -6.7771300673484802e-02 + + 2.0526969432830811e-01 -1.7867469787597656e-01 + <_> + + 0 -1 5461 9.3152940273284912e-02 + + -1.3293810188770294e-01 2.3252120614051819e-01 + <_> + + 0 -1 5462 -6.0846367850899696e-03 + + 1.9817650318145752e-01 -1.5535140037536621e-01 + <_> + + 0 -1 5463 -1.7230149358510971e-02 + + 2.5784310698509216e-01 -9.0387366712093353e-02 + <_> + + 0 -1 5464 4.1907798498868942e-02 + + 6.2066148966550827e-02 -3.2303139567375183e-01 + <_> + + 0 -1 5465 -3.4084350336343050e-03 + + -3.1667909026145935e-01 6.0275040566921234e-02 + <_> + + 0 -1 5466 3.4909289330244064e-02 + + -1.2456309795379639e-01 1.6099859774112701e-01 + <_> + + 0 -1 5467 1.1676900088787079e-02 + + -1.8025660514831543e-01 1.2234430015087128e-01 + <_> + + 0 -1 5468 -1.2773449998348951e-03 + + -2.4735580384731293e-01 6.2129739671945572e-02 + <_> + + 0 -1 5469 1.6917299479246140e-02 + + 6.9671042263507843e-02 -2.5292581319808960e-01 + <_> + + 0 -1 5470 2.5656640529632568e-02 + + 2.6212580502033234e-02 -1.6348999738693237e-01 + <_> + + 0 -1 5471 1.9884048961102962e-03 + + -3.1018510460853577e-01 5.0259251147508621e-02 + <_> + + 0 -1 5472 4.2548488825559616e-02 + + 1.7065819352865219e-02 -4.7830620408058167e-01 + <_> + + 0 -1 5473 6.0466718859970570e-03 + + -2.2118049860000610e-01 7.2842411696910858e-02 + <_> + + 0 -1 5474 -8.0229081213474274e-03 + + -1.4530059695243835e-01 4.9906261265277863e-02 + <_> + + 0 -1 5475 3.7937261164188385e-02 + + -3.4007780253887177e-02 4.3715330958366394e-01 + <_> + + 0 -1 5476 -5.2960298955440521e-02 + + -2.8856590390205383e-01 1.8457209691405296e-02 + <_> + + 0 -1 5477 7.5578060932457447e-03 + + -2.3534600436687469e-01 6.0302570462226868e-02 + <_> + + 0 -1 5478 -1.5554980374872684e-02 + + -2.6567730307579041e-01 5.5279370397329330e-02 + <_> + + 0 -1 5479 3.4035260323435068e-03 + + 4.6175889670848846e-02 -3.3651891350746155e-01 + <_> + + 0 -1 5480 -1.9370270892977715e-02 + + 1.9603839516639709e-01 -8.0186828970909119e-02 + <_> + + 0 -1 5481 2.1719569340348244e-02 + + 4.1932079941034317e-02 -3.4327590465545654e-01 + <_> + + 0 -1 5482 -3.8787510129623115e-04 + + -2.5382238626480103e-01 4.5200780034065247e-02 + <_> + + 0 -1 5483 3.3794559538364410e-02 + + -6.4901560544967651e-02 2.1238659322261810e-01 + <_> + + 0 -1 5484 -9.1701336205005646e-03 + + -2.3874589800834656e-01 4.0796380490064621e-02 + <_> + + 0 -1 5485 -1.3741330476477742e-03 + + -1.6430020332336426e-01 8.1496283411979675e-02 + <_> + + 0 -1 5486 -1.2352719902992249e-02 + + 1.6805070638656616e-01 -5.7883970439434052e-02 + <_> + + 0 -1 5487 -1.1177700012922287e-02 + + -1.9775860011577606e-01 6.3408702611923218e-02 + <_> + + 0 -1 5488 2.5044390931725502e-03 + + -1.2900459766387939e-01 5.8973610401153564e-02 + <_> + + 0 -1 5489 2.1939110010862350e-03 + + 1.4937159419059753e-01 -7.9897291958332062e-02 + <_> + + 0 -1 5490 -4.6443499624729156e-02 + + -4.4332349300384521e-01 2.0691359415650368e-02 + <_> + + 0 -1 5491 -3.8867309689521790e-02 + + -5.3450870513916016e-01 2.1435650065541267e-02 + <_> + + 0 -1 5492 -2.0838780328631401e-03 + + 5.3876239806413651e-02 -1.6674530506134033e-01 + <_> + + 0 -1 5493 -1.7784969881176949e-02 + + 2.5898349285125732e-01 -6.5794423222541809e-02 + <_> + + 0 -1 5494 -9.9478460848331451e-02 + + -7.2332090139389038e-01 6.1601991765201092e-03 + <_> + + 0 -1 5495 -2.5733250658959150e-03 + + 7.2027653455734253e-02 -1.7522309720516205e-01 + <_> + + 0 -1 5496 6.9977439939975739e-02 + + -3.0238330364227295e-02 3.9809378981590271e-01 + <_> + + 0 -1 5497 -1.0880780406296253e-02 + + -3.0606269836425781e-01 4.5210558921098709e-02 + <_> + + 0 -1 5498 4.8081401735544205e-02 + + 4.3911099433898926e-02 -2.5686219334602356e-01 + <_> + + 0 -1 5499 7.9688243567943573e-02 + + -3.3741600811481476e-02 3.6532700061798096e-01 + <_> + + 0 -1 5500 -1.5404020436108112e-02 + + -1.7731459438800812e-01 2.3800730705261230e-02 + <_> + + 0 -1 5501 -3.6643899977207184e-02 + + -6.3931107521057129e-01 1.7518630251288414e-02 + <_> + + 0 -1 5502 -1.3072500005364418e-02 + + -2.4119360744953156e-01 5.8876950293779373e-02 + <_> + + 0 -1 5503 -2.5379280559718609e-03 + + -2.0509210228919983e-01 5.8915760368108749e-02 + <_> + + 0 -1 5504 4.7491278499364853e-02 + + 2.2842779755592346e-02 -3.9453479647636414e-01 + <_> + + 0 -1 5505 -2.1489640697836876e-02 + + -3.1091120839118958e-01 3.8020871579647064e-02 + <_> + + 0 -1 5506 1.3841330073773861e-02 + + -5.6039519608020782e-02 2.1308979392051697e-01 + <_> + + 0 -1 5507 4.9399589188396931e-03 + + -1.8838630616664886e-01 6.2171839177608490e-02 + <_> + + 0 -1 5508 1.3483439572155476e-02 + + 3.6875329911708832e-02 -2.4952369928359985e-01 + <_> + + 0 -1 5509 -8.4225656464695930e-03 + + 7.1501091122627258e-02 -1.3996620476245880e-01 + <_> + + 0 -1 5510 -4.3786991387605667e-02 + + 2.0128419995307922e-01 -5.3744260221719742e-02 + <_> + + 0 -1 5511 -1.0068439878523350e-02 + + -1.6707019507884979e-01 6.1345089226961136e-02 + <_> + + 0 -1 5512 2.4383061099797487e-03 + + -1.2105459719896317e-01 4.9807701259851456e-02 + <_> + + 0 -1 5513 3.2083820551633835e-03 + + -5.6045360863208771e-02 1.7955709993839264e-01 + <_> + + 0 -1 5514 -2.0389519631862640e-02 + + -3.1983590126037598e-01 3.4141618758440018e-02 + <_> + + 0 -1 5515 -2.2914420813322067e-02 + + -3.9454650878906250e-01 2.3838970810174942e-02 + <_> + + 0 -1 5516 1.8566900864243507e-02 + + 3.8432560861110687e-02 -2.2991999983787537e-01 + <_> + + 0 -1 5517 -1.0277030058205128e-02 + + 2.2557449340820312e-01 -4.9223229289054871e-02 + <_> + + 0 -1 5518 -9.7914133220911026e-03 + + 1.9327880442142487e-01 -3.6139059811830521e-02 + <_> + + 0 -1 5519 1.2699839659035206e-02 + + 5.6297991424798965e-02 -2.0981599390506744e-01 + <_> + + 0 -1 5520 3.9867468178272247e-02 + + 9.4982674345374107e-03 -4.7686201333999634e-01 + <_> + + 0 -1 5521 3.3704519271850586e-02 + + 1.8848460167646408e-02 -5.3707981109619141e-01 + <_> + + 0 -1 5522 -3.3695269376039505e-02 + + -2.7003350853919983e-01 3.8956340402364731e-02 + <_> + + 0 -1 5523 2.3961249738931656e-02 + + -9.5000430941581726e-02 1.0282819718122482e-01 + <_> + + 0 -1 5524 8.2990229129791260e-02 + + 3.7828568369150162e-02 -3.0267751216888428e-01 + <_> + + 0 -1 5525 1.6537210345268250e-01 + + 2.3912150412797928e-02 -4.1214409470558167e-01 + <_> + + 0 -1 5526 1.8202569335699081e-02 + + 2.6127459481358528e-02 -6.9227010011672974e-02 + <_> + + 0 -1 5527 -4.5322380959987640e-02 + + -4.4437649846076965e-01 2.1279569715261459e-02 + <_> + + 0 -1 5528 4.7620609402656555e-02 + + -3.4070000052452087e-02 2.1065680682659149e-01 + <_> + + 0 -1 5529 1.0596530046314001e-03 + + 9.8347820341587067e-02 -9.2732593417167664e-02 + <_> + + 0 -1 5530 3.2028049230575562e-02 + + 2.3833949118852615e-02 -4.3276590108871460e-01 + <_> + + 0 -1 5531 -1.3764370232820511e-02 + + -4.1726619005203247e-01 2.1883359178900719e-02 + <_> + + 0 -1 5532 3.6652158945798874e-02 + + -2.6851410046219826e-02 1.0051230341196060e-01 + <_> + + 0 -1 5533 -1.5507760457694530e-02 + + 4.8519268631935120e-01 -2.4900710210204124e-02 + <_> + + 0 -1 5534 7.1460101753473282e-03 + + 5.7906471192836761e-02 -5.1613971590995789e-02 + <_> + + 0 -1 5535 2.4280229583382607e-02 + + -3.7341829389333725e-02 2.9201799631118774e-01 + <_> + + 0 -1 5536 -8.3522319793701172e-02 + + 3.7447971105575562e-01 -3.4602559171617031e-03 + <_> + + 0 -1 5537 3.1485721468925476e-02 + + 2.4092009291052818e-02 -3.9594879746437073e-01 + <_> + + 0 -1 5538 9.4820279628038406e-03 + + -7.3714673519134521e-02 1.3066330552101135e-01 + <_> + + 0 -1 5539 4.0116958320140839e-02 + + 3.0453719198703766e-02 -3.0641159415245056e-01 + <_> + + 0 -1 5540 -5.2815478295087814e-02 + + 4.5792409777641296e-01 -2.3906230926513672e-02 + <_> + + 0 -1 5541 4.6821571886539459e-03 + + -8.8395930826663971e-02 1.2858130037784576e-01 + <_> + + 0 -1 5542 -1.3448280096054077e-01 + + -2.7471750974655151e-01 1.5970310196280479e-02 + <_> + + 0 -1 5543 5.4646627977490425e-03 + + -2.1628439426422119e-01 4.3035320937633514e-02 + <_> + + 0 -1 5544 -3.5996358841657639e-02 + + -4.8524090647697449e-01 1.0563749819993973e-02 + <_> + + 0 -1 5545 2.5235998630523682e-01 + + 9.3745701014995575e-03 -8.8613390922546387e-01 + <_> + + 0 -1 5546 -2.5067269802093506e-02 + + -2.2364640235900879e-01 3.7146601825952530e-02 + <_> + + 0 -1 5547 -1.4150329865515232e-02 + + 3.7856650352478027e-01 -2.7817489579319954e-02 + <_> + + 0 -1 5548 1.0049570351839066e-01 + + 1.1244839988648891e-02 -7.1869522333145142e-01 + <_> + + 0 -1 5549 1.9989080727100372e-02 + + 2.6056809350848198e-02 -3.2147800922393799e-01 + <_> + + 0 -1 5550 -4.9160558730363846e-02 + + -2.3164880275726318e-01 1.6317559406161308e-02 + <_> + + 0 -1 5551 2.2118790075182915e-02 + + -5.0569478422403336e-02 1.7572580277919769e-01 + <_> + + 0 -1 5552 -7.6390360482037067e-03 + + 2.2264319658279419e-01 -4.3685391545295715e-02 + <_> + + 0 -1 5553 -1.6813250258564949e-03 + + 5.5582441389560699e-02 -1.7739319801330566e-01 + <_> + + 0 -1 5554 -1.6619000583887100e-02 + + -2.7812969684600830e-01 1.9737830385565758e-02 + <_> + + 0 -1 5555 -3.2801620662212372e-02 + + -2.3325189948081970e-01 3.6663819104433060e-02 + <_> + + 0 -1 5556 2.4526590108871460e-01 + + -2.9738940298557281e-02 3.1338408589363098e-01 + <_> + + 0 -1 5557 -1.7271770164370537e-02 + + 5.2818918228149414e-01 -1.4151779934763908e-02 + <_> + + 0 -1 5558 2.0111909136176109e-02 + + 2.7173580601811409e-02 -8.3122722804546356e-02 + <_> + + 0 -1 5559 1.6076749190688133e-02 + + 5.6346639990806580e-02 -1.5893140435218811e-01 + <_> + + 0 -1 5560 -1.0179769992828369e-01 + + 6.0448008775711060e-01 -7.6062050648033619e-03 + <_> + + 0 -1 5561 -4.4865649193525314e-02 + + 3.3077031373977661e-01 -2.5329189375042915e-02 + <_> + + 0 -1 5562 2.7094980701804161e-02 + + -6.9251723587512970e-02 1.5350599586963654e-01 + <_> + + 0 -1 5563 -3.7675891071557999e-02 + + -3.1949838995933533e-01 2.9909679666161537e-02 + <_> + + 0 -1 5564 -8.2310457946732640e-04 + + 6.0612969100475311e-02 -1.0531579703092575e-01 + <_> + + 0 -1 5565 5.5686049163341522e-02 + + -4.0920350700616837e-02 2.2959649562835693e-01 + <_> + + 0 -1 5566 -1.6866069927345961e-04 + + -7.7643588185310364e-02 2.9549270868301392e-02 + <_> + + 0 -1 5567 -2.3873209953308105e-02 + + 2.7944079041481018e-01 -3.1888458877801895e-02 + <_> + + 0 -1 5568 -1.5003600157797337e-02 + + 2.5077390670776367e-01 -4.5932788401842117e-02 + <_> + + 0 -1 5569 -1.4522319659590721e-02 + + -1.6453540325164795e-01 5.5180910974740982e-02 + <_> + + 0 -1 5570 -7.4650160968303680e-03 + + -1.2690469622612000e-01 7.1543112397193909e-02 + <_> + + 0 -1 5571 5.4984640330076218e-02 + + -1.3730799779295921e-02 6.5119642019271851e-01 + <_> + + 0 -1 5572 -8.8030762970447540e-02 + + 2.5416490435600281e-01 -1.2233870103955269e-02 + <_> + + 0 -1 5573 -3.6195501685142517e-02 + + -4.4917309284210205e-01 2.1093770861625671e-02 + <_> + + 0 -1 5574 3.7063211202621460e-02 + + -6.6644148901104927e-03 2.4940170347690582e-01 + <_> + + 0 -1 5575 -1.0568380355834961e-02 + + -4.1061571240425110e-01 2.1398089826107025e-02 + <_> + + 0 -1 5576 1.2662780284881592e-01 + + 5.2506178617477417e-03 -3.3240249752998352e-01 + <_> + + 0 -1 5577 -8.7341770995408297e-04 + + 3.2687219977378845e-01 -2.7704829350113869e-02 + <_> + + 0 -1 5578 -1.0967969428747892e-03 + + -2.7710831165313721e-01 3.6352828145027161e-02 + <_> + + 0 -1 5579 -7.9738020896911621e-02 + + -5.8329159021377563e-01 1.4061779715120792e-02 + <_> + + 0 -1 5580 -3.8278030697256327e-03 + + 3.5459451377391815e-02 -1.3996809720993042e-01 + <_> + + 0 -1 5581 2.0333999767899513e-02 + + -2.1421350538730621e-02 5.1610380411148071e-01 + <_> + + 0 -1 5582 7.5564032886177301e-04 + + -1.0803470015525818e-01 3.3538289368152618e-02 + <_> + + 0 -1 5583 1.7855849862098694e-01 + + 9.4842249527573586e-03 -8.1858187913894653e-01 + <_> + + 0 -1 5584 -3.4745071083307266e-02 + + -5.8172190189361572e-01 1.1315549723803997e-02 + <_> + + 0 -1 5585 5.1304209046065807e-03 + + -1.0659860074520111e-01 7.4440896511077881e-02 + <_> + + 0 -1 5586 -3.3936198800802231e-02 + + -4.5997759699821472e-01 1.5264419838786125e-02 + <_> + + 0 -1 5587 -1.0171560570597649e-03 + + 1.0301309823989868e-01 -8.9842960238456726e-02 + <_> + + 0 -1 5588 6.3489019870758057e-02 + + 6.8669100292026997e-03 -7.6022517681121826e-01 + <_> + + 0 -1 5589 2.4077939987182617e-01 + + -2.1571479737758636e-02 4.1113030910491943e-01 + <_> + + 0 -1 5590 -5.1963441073894501e-02 + + -2.8517320752143860e-01 4.0943060070276260e-02 + <_> + + 0 -1 5591 3.6408171057701111e-02 + + -5.0460960716009140e-02 1.6671819984912872e-01 + <_> + + 0 -1 5592 9.6712149679660797e-03 + + -4.8915110528469086e-02 1.8224430084228516e-01 + <_> + + 0 -1 5593 2.2268150001764297e-02 + + 6.1390981078147888e-02 -1.5445849299430847e-01 + <_> + + 0 -1 5594 -7.0929281413555145e-02 + + 5.0010168552398682e-01 -3.9896317757666111e-03 + <_> + + 0 -1 5595 2.0806699467357248e-04 + + -1.4475630223751068e-01 6.3607528805732727e-02 + <_> + + 0 -1 5596 -9.2365043237805367e-03 + + -2.1817289292812347e-01 3.8856260478496552e-02 + <_> + + 0 -1 5597 2.2781990468502045e-02 + + 2.0108619704842567e-02 -3.8452360033988953e-01 + <_> + + 0 -1 5598 -7.0844120346009731e-03 + + -4.8885490745306015e-02 4.6367339789867401e-02 + <_> + + 0 -1 5599 -8.4006279706954956e-02 + + 3.5921669006347656e-01 -2.2461889311671257e-02 + <_> + + 0 -1 5600 -7.0446580648422241e-02 + + -8.8395321369171143e-01 2.9730550013482571e-03 + <_> + + 0 -1 5601 4.8899810761213303e-02 + + 2.3936219513416290e-02 -3.6770141124725342e-01 + <_> + + 0 -1 5602 2.9677329584956169e-02 + + 1.6608120873570442e-02 -2.2972689568996429e-01 + <_> + + 0 -1 5603 2.5721399579197168e-03 + + -3.2572209835052490e-01 2.4146009236574173e-02 + <_> + + 0 -1 5604 1.6117929480969906e-03 + + 2.9355300590395927e-02 -3.7541579455137253e-02 + <_> + + 0 -1 5605 1.7546640709042549e-02 + + -5.0879240036010742e-02 1.5283130109310150e-01 + <_> + + 0 -1 5606 -4.6326398849487305e-02 + + -2.2843320667743683e-01 1.4442530460655689e-02 + <_> + + 0 -1 5607 -3.3205670118331909e-01 + + 7.4457818269729614e-01 -1.0856879875063896e-02 + <_> + + 0 -1 5608 -4.2317830026149750e-02 + + -1.4666019380092621e-01 5.7799231261014938e-02 + <_> + + 0 -1 5609 3.2436659093946218e-03 + + 5.4021451622247696e-02 -1.7029410600662231e-01 + <_> + + 0 -1 5610 -2.0900890231132507e-02 + + -4.0789291262626648e-01 2.5334810838103294e-02 + <_> + + 0 -1 5611 2.0325010642409325e-02 + + 3.3015929162502289e-02 -2.4503390491008759e-01 + <_> + + 0 -1 5612 -4.6341929584741592e-02 + + 1.5976649522781372e-01 -4.1177939623594284e-02 + <_> + + 0 -1 5613 -3.4356329590082169e-02 + + 1.6021409630775452e-01 -6.2500953674316406e-02 + <_> + + 0 -1 5614 2.4465970695018768e-02 + + -3.7487599998712540e-02 2.2807280719280243e-01 + <_> + + 0 -1 5615 -1.8139539286494255e-02 + + -1.5909589827060699e-01 6.0539811849594116e-02 + <_> + + 0 -1 5616 6.4394161105155945e-02 + + 6.6441670060157776e-03 -7.4860227108001709e-01 + <_> + + 0 -1 5617 9.6367759397253394e-04 + + -9.0620808303356171e-02 9.4118133187294006e-02 + <_> + + 0 -1 5618 2.0024490356445312e-01 + + 5.9731658548116684e-03 -8.2521688938140869e-01 + <_> + + 0 -1 5619 -6.3498668372631073e-02 + + -6.9635838270187378e-01 9.3487137928605080e-03 + <_> + + 0 -1 5620 -1.9232399761676788e-02 + + 1.1236680299043655e-01 -2.9199739918112755e-02 + <_> + + 0 -1 5621 2.5418749451637268e-01 + + 1.3959039933979511e-02 -5.1584947109222412e-01 + <_> + + 0 -1 5622 1.0437460243701935e-01 + + -2.7743030339479446e-02 2.7373430132865906e-01 + <_> + + 0 -1 5623 8.5034370422363281e-03 + + 5.4144650697708130e-02 -1.3029509782791138e-01 + <_> + + 0 -1 5624 5.2647730335593224e-03 + + -4.8077501356601715e-02 1.0371380299329758e-01 + <_> + + 0 -1 5625 -2.4193519726395607e-02 + + 1.9932989776134491e-01 -3.7111040204763412e-02 + <_> + + 0 -1 5626 -4.6968772076070309e-03 + + -6.5797090530395508e-02 3.3837348222732544e-02 + <_> + + 0 -1 5627 -2.3464579135179520e-02 + + -2.6043030619621277e-01 3.0933089554309845e-02 + <_> + + 0 -1 5628 -2.9029840603470802e-02 + + 2.0683619379997253e-01 -2.7628650888800621e-02 + <_> + + 0 -1 5629 7.9100236296653748e-02 + + 7.7356752008199692e-03 -9.1816711425781250e-01 + <_> + + 0 -1 5630 6.2152887694537640e-03 + + -7.3988027870655060e-02 8.7727412581443787e-02 + <_> + + 0 -1 5631 -6.7013278603553772e-02 + + 3.7628298997879028e-01 -2.0892709493637085e-02 + <_> + + 0 -1 5632 -7.9359989613294601e-03 + + -8.9532703161239624e-02 6.6559307277202606e-02 + <_> + + 0 -1 5633 1.3035970041528344e-03 + + -6.6657140851020813e-02 1.1399099975824356e-01 + <_> + + 0 -1 5634 -1.1964319646358490e-01 + + -6.0656189918518066e-01 7.3508038185536861e-03 + <_> + + 0 -1 5635 -2.2869240492582321e-03 + + 7.3336817324161530e-02 -1.1889570206403732e-01 + <_> + + 0 -1 5636 -1.1462569981813431e-01 + + 2.9288530349731445e-01 -6.7763519473373890e-03 + <_> + + 0 -1 5637 4.8477489501237869e-02 + + -1.7062950879335403e-02 4.2953211069107056e-01 + <_> + + 0 -1 5638 -1.3129960279911757e-03 + + -7.4319638311862946e-02 6.2149789184331894e-02 + <_> + + 0 -1 5639 -6.6344782710075378e-02 + + -5.8945667743682861e-01 1.3225819915533066e-02 + <_> + + 0 -1 5640 -4.6543189091607928e-04 + + 5.7886548340320587e-02 -6.4295299351215363e-02 + <_> + + 0 -1 5641 -1.3286540284752846e-02 + + 1.4123329520225525e-01 -6.1506468802690506e-02 + <_> + + 0 -1 5642 7.3928399942815304e-03 + + -7.2719991207122803e-02 4.2179141193628311e-02 + <_> + + 0 -1 5643 -4.7434169799089432e-02 + + 3.2672271132469177e-01 -2.9001530259847641e-02 + <_> + + 0 -1 5644 1.3546790182590485e-01 + + 1.0393570177257061e-02 -4.5354479551315308e-01 + <_> + + 0 -1 5645 -2.5216810405254364e-02 + + -1.9075979292392731e-01 4.1522741317749023e-02 + <_> + + 0 -1 5646 -4.9431398510932922e-02 + + -9.4192171096801758e-01 3.5473550669848919e-03 + <_> + + 0 -1 5647 -4.8375181853771210e-02 + + -8.3028668165206909e-01 7.2369067929685116e-03 + <_> + + 0 -1 5648 -1.4348509721457958e-02 + + -2.1860499680042267e-01 3.1486429274082184e-02 + <_> + + 0 -1 5649 -5.5373171344399452e-03 + + -2.1521030366420746e-01 4.4235888868570328e-02 + <_> + + 0 -1 5650 2.1771800518035889e-01 + + -5.0501842051744461e-03 4.9025520682334900e-01 + <_> + + 0 -1 5651 1.7441399395465851e-01 + + -9.7074145451188087e-03 7.4196231365203857e-01 + <_> + + 0 -1 5652 8.8840499520301819e-02 + + -5.8005251921713352e-03 3.3403220772743225e-01 + <_> + + 0 -1 5653 -3.8012791424989700e-02 + + 5.0677591562271118e-01 -1.3809430412948132e-02 + <_> + + 0 -1 5654 -6.3611388206481934e-02 + + -5.6696820259094238e-01 7.9266652464866638e-03 + <_> + + 0 -1 5655 9.8358482122421265e-02 + + 3.4634899348020554e-02 -1.9651760160923004e-01 + <_> + + 0 -1 5656 2.2929610684514046e-02 + + -4.4682640582323074e-02 6.0062419623136520e-02 + <_> + + 0 -1 5657 -3.9763651788234711e-02 + + -2.8310349583625793e-01 2.6087069883942604e-02 + <_> + + 0 -1 5658 1.1215689778327942e-01 + + -4.3225709348917007e-02 1.5505640208721161e-01 + <_> + + 0 -1 5659 -1.4957940578460693e-01 + + 4.1476088762283325e-01 -2.5112669914960861e-02 + <_> + + 0 -1 5660 1.4239370357245207e-03 + + -2.2813330590724945e-01 2.2414619103074074e-02 + <_> + + 0 -1 5661 -1.1346139945089817e-02 + + -2.6083931326866150e-01 2.6456480845808983e-02 + <_> + + 0 -1 5662 -9.0518407523632050e-02 + + 6.0067182779312134e-01 -1.2559159658849239e-02 + <_> + + 0 -1 5663 3.6097481846809387e-02 + + 1.9451009109616280e-02 -4.0998241305351257e-01 + <_> + + 0 -1 5664 -2.5657469406723976e-02 + + 2.3453080654144287e-01 -3.2354518771171570e-02 + <_> + + 0 -1 5665 -9.2462729662656784e-03 + + 1.4458569884300232e-01 -5.7280141860246658e-02 + <_> + + 0 -1 5666 6.1006739735603333e-02 + + 1.9963319599628448e-01 -3.5018790513277054e-02 + <_> + + 0 -1 5667 -2.2736669052392244e-03 + + -2.7180460095405579e-01 3.5324309021234512e-02 + <_> + + 0 -1 5668 -1.1173350363969803e-01 + + 2.6010888814926147e-01 -8.4183625876903534e-03 + <_> + + 0 -1 5669 1.4601589739322662e-01 + + -4.3707858771085739e-02 1.9343809783458710e-01 + <_> + + 0 -1 5670 -3.9008598774671555e-02 + + -2.4021549522876740e-01 1.9324809312820435e-02 + <_> + + 0 -1 5671 -3.2065149396657944e-02 + + -1.4616030454635620e-01 5.0410438328981400e-02 + <_> + + 0 -1 5672 -3.9755292236804962e-03 + + 8.6786061525344849e-02 -7.5101003050804138e-02 + <_> + + 0 -1 5673 -2.2264609113335609e-02 + + -1.7820209264755249e-01 4.2221881449222565e-02 + <_> + + 0 -1 5674 -6.0096651315689087e-02 + + 3.3062270283699036e-01 -1.3347219675779343e-02 + <_> + + 0 -1 5675 -8.3170406520366669e-02 + + 6.9863271713256836e-01 -1.1014309711754322e-02 + <_> + + 0 -1 5676 -7.7182397246360779e-02 + + -2.5630331039428711e-01 8.8049499318003654e-03 + <_> + + 0 -1 5677 6.8902172148227692e-02 + + 1.0996440425515175e-02 -6.3520067930221558e-01 + <_> + + 0 -1 5678 -5.0353281199932098e-02 + + 2.2927890717983246e-01 -3.2763719558715820e-02 + <_> + + 0 -1 5679 2.4320879019796848e-03 + + -1.3213059306144714e-01 7.1088582277297974e-02 + <_> + + 0 -1 5680 -1.4196460135281086e-02 + + 7.1845069527626038e-02 -4.5263659209012985e-02 + <_> + + 0 -1 5681 -4.5774779282510281e-03 + + -2.5832280516624451e-01 2.9419040307402611e-02 + <_> + + 0 -1 5682 -1.4008210273459554e-03 + + 4.4636521488428116e-02 -1.2310150265693665e-01 + <_> + + 0 -1 5683 3.5062711685895920e-02 + + -1.8722500652074814e-02 4.5533668994903564e-01 + <_> + + 0 -1 5684 3.9364919066429138e-02 + + -3.8776830770075321e-03 4.8229390382766724e-01 + <_> + + 0 -1 5685 2.9430290684103966e-02 + + -5.6632690131664276e-02 1.3604450225830078e-01 + <_> + + 0 -1 5686 7.9320840537548065e-02 + + -4.0827351622283459e-03 9.9998551607131958e-01 + <_> + + 0 -1 5687 4.2696330696344376e-02 + + 2.3583339527249336e-02 -3.7798878550529480e-01 + <_> + + 0 -1 5688 2.5937719270586967e-02 + + 5.0283338874578476e-02 -6.7249342799186707e-02 + <_> + + 0 -1 5689 2.7053659781813622e-02 + + 1.0406839847564697e-01 -1.0069710016250610e-01 + <_> + + 0 -1 5690 3.0322301387786865e-01 + + -5.1615409553050995e-02 1.2398669868707657e-01 + <_> + + 0 -1 5691 7.4373193085193634e-02 + + -2.9979649931192398e-02 2.5944980978965759e-01 + <_> + + 0 -1 5692 4.6059768646955490e-02 + + 6.1678960919380188e-03 -7.0887911319732666e-01 + <_> + + 0 -1 5693 3.6883510649204254e-02 + + 1.5985019505023956e-02 -4.4436019659042358e-01 + <_> + + 0 -1 5694 1.3493379950523376e-01 + + 8.8313389569520950e-03 -7.3426938056945801e-01 + <_> + + 0 -1 5695 1.4799199998378754e-01 + + 6.9719799794256687e-03 -8.2078450918197632e-01 + <_> + + 0 -1 5696 3.9690379053354263e-02 + + -1.8247799947857857e-02 2.6955920457839966e-01 + <_> + + 0 -1 5697 -5.3511280566453934e-02 + + 2.0000250637531281e-01 -3.9136700332164764e-02 + <_> + + 0 -1 5698 6.3795700669288635e-02 + + 1.1616130359470844e-02 -2.5315120816230774e-01 + <_> + + 0 -1 5699 -8.1078916788101196e-02 + + -7.7582788467407227e-01 9.7084697335958481e-03 + <_> + + 0 -1 5700 -4.8272658139467239e-02 + + -3.0734309554100037e-01 1.1298010125756264e-02 + <_> + + 0 -1 5701 4.3912570923566818e-02 + + -3.9403300732374191e-02 1.9216950237751007e-01 + <_> + 394 + -1.2940989732742310e+00 + + <_> + + 0 -1 5702 1.9188739359378815e-02 + + -2.1150399744510651e-01 1.3286529481410980e-01 + <_> + + 0 -1 5703 -8.1222038716077805e-03 + + 9.2491082847118378e-02 -1.7585119605064392e-01 + <_> + + 0 -1 5704 1.5851219650357962e-03 + + -2.8565698862075806e-01 6.6710568964481354e-02 + <_> + + 0 -1 5705 -4.3140850029885769e-03 + + -1.3885229825973511e-01 5.2694689482450485e-02 + <_> + + 0 -1 5706 -1.7131429631263018e-03 + + 1.3135610520839691e-01 -1.3149109482765198e-01 + <_> + + 0 -1 5707 6.8447366356849670e-02 + + 9.3052154406905174e-03 -2.5063261389732361e-01 + <_> + + 0 -1 5708 -2.4445978924632072e-03 + + -1.7205530405044556e-01 9.8322823643684387e-02 + <_> + + 0 -1 5709 1.0310600046068430e-03 + + 2.3039160296320915e-02 -2.7527621388435364e-01 + <_> + + 0 -1 5710 7.4603251414373517e-04 + + -2.3276780545711517e-01 5.2693009376525879e-02 + <_> + + 0 -1 5711 -6.6399492789059877e-04 + + 6.8990781903266907e-02 -8.4687709808349609e-02 + <_> + + 0 -1 5712 -4.0997468749992549e-04 + + 1.0501380264759064e-01 -1.0819009691476822e-01 + <_> + + 0 -1 5713 -1.8094549886882305e-03 + + -1.8178839981555939e-01 4.4184140861034393e-02 + <_> + + 0 -1 5714 9.3385757645592093e-04 + + -1.4622689783573151e-01 7.2726443409919739e-02 + <_> + + 0 -1 5715 -3.8197741378098726e-04 + + 2.4009939283132553e-02 -1.7295800149440765e-01 + <_> + + 0 -1 5716 -1.4950280310586095e-03 + + -1.9403380155563354e-01 4.8807919025421143e-02 + <_> + + 0 -1 5717 -1.0159100405871868e-02 + + 1.9173899292945862e-01 -5.2749071270227432e-02 + <_> + + 0 -1 5718 5.9903519286308438e-05 + + -1.0791549831628799e-01 9.0988166630268097e-02 + <_> + + 0 -1 5719 -3.1967550516128540e-02 + + 4.1109889745712280e-01 -2.2650640457868576e-02 + <_> + + 0 -1 5720 1.4343270100653172e-02 + + 2.4315539747476578e-02 -4.2680150270462036e-01 + <_> + + 0 -1 5721 1.1039529927074909e-02 + + -6.2717013061046600e-02 1.1330530047416687e-01 + <_> + + 0 -1 5722 -8.4228850901126862e-03 + + -2.1369309723377228e-01 4.2059201747179031e-02 + <_> + + 0 -1 5723 -2.0549839362502098e-02 + + 1.5161630511283875e-01 -2.4594139307737350e-02 + <_> + + 0 -1 5724 -6.5411031246185303e-03 + + 1.4883629977703094e-01 -6.1179339885711670e-02 + <_> + + 0 -1 5725 -1.3324400410056114e-02 + + -2.0791970193386078e-01 4.8333309590816498e-02 + <_> + + 0 -1 5726 7.0111267268657684e-02 + + -2.6863219216465950e-02 3.6322259902954102e-01 + <_> + + 0 -1 5727 -2.6973750209435821e-04 + + 6.0876660048961639e-02 -1.1272370070219040e-01 + <_> + + 0 -1 5728 -1.3509000418707728e-03 + + -1.8552079796791077e-01 5.2154958248138428e-02 + <_> + + 0 -1 5729 -2.8083190321922302e-02 + + 3.5111880302429199e-01 -2.3596329614520073e-02 + <_> + + 0 -1 5730 -1.0003290139138699e-02 + + -2.9058480262756348e-01 3.2125689089298248e-02 + <_> + + 0 -1 5731 -1.6111029544845223e-03 + + 9.8113670945167542e-02 -5.2203711122274399e-02 + <_> + + 0 -1 5732 -1.8411900848150253e-02 + + -1.8082669377326965e-01 5.4536700248718262e-02 + <_> + + 0 -1 5733 -7.1738816797733307e-02 + + -7.6654988527297974e-01 3.3518690615892410e-03 + <_> + + 0 -1 5734 -2.7943260502070189e-03 + + 1.5871369838714600e-01 -6.4271800220012665e-02 + <_> + + 0 -1 5735 -1.6874749958515167e-01 + + -6.9956189393997192e-01 4.8861699178814888e-03 + <_> + + 0 -1 5736 -1.2672400334849954e-03 + + 3.1616039574146271e-02 -2.4953269958496094e-01 + <_> + + 0 -1 5737 2.0807750523090363e-02 + + 1.7053410410881042e-02 -2.4331410229206085e-01 + <_> + + 0 -1 5738 -1.5869849594309926e-03 + + 9.3171089887619019e-02 -8.1361927092075348e-02 + <_> + + 0 -1 5739 -1.0014690458774567e-02 + + -2.7789619565010071e-01 2.6569239795207977e-02 + <_> + + 0 -1 5740 -5.7948171161115170e-03 + + -2.2287739813327789e-01 3.5975661128759384e-02 + <_> + + 0 -1 5741 2.7189950924366713e-03 + + -9.0631909668445587e-02 5.6820400059223175e-02 + <_> + + 0 -1 5742 3.8845159113407135e-02 + + 1.2280859984457493e-02 -5.8521348237991333e-01 + <_> + + 0 -1 5743 -1.4158680103719234e-02 + + 1.8153870105743408e-01 -3.1109429895877838e-02 + <_> + + 0 -1 5744 -1.8278600275516510e-01 + + -9.0013808012008667e-01 7.6544750481843948e-03 + <_> + + 0 -1 5745 2.7588419616222382e-02 + + -1.2460039928555489e-02 2.0069369673728943e-01 + <_> + + 0 -1 5746 -1.4784430153667927e-02 + + -8.9910492300987244e-02 8.1648677587509155e-02 + <_> + + 0 -1 5747 1.1625719815492630e-01 + + 2.3692469112575054e-03 -9.9998068809509277e-01 + <_> + + 0 -1 5748 3.5341090988367796e-03 + + -6.1760541051626205e-02 1.3490639626979828e-01 + <_> + + 0 -1 5749 5.1878788508474827e-03 + + 1.8745860084891319e-02 -1.7449170351028442e-01 + <_> + + 0 -1 5750 7.9457357525825500e-02 + + -2.3402990773320198e-02 3.3502200245857239e-01 + <_> + + 0 -1 5751 2.7684379369020462e-02 + + 2.3663910105824471e-02 -3.3256360888481140e-01 + <_> + + 0 -1 5752 -4.4806320220232010e-03 + + -1.4658750593662262e-01 4.7376811504364014e-02 + <_> + + 0 -1 5753 5.6939688511192799e-03 + + -5.6776121258735657e-02 6.7580856382846832e-02 + <_> + + 0 -1 5754 7.7299480326473713e-03 + + -3.1156649813055992e-02 2.3102590441703796e-01 + <_> + + 0 -1 5755 3.9786100387573242e-03 + + -5.6882441043853760e-02 1.3271529972553253e-01 + <_> + + 0 -1 5756 -1.1275880038738251e-02 + + -2.0938649773597717e-01 3.5291459411382675e-02 + <_> + + 0 -1 5757 -2.4308220017701387e-03 + + -2.0176360011100769e-01 3.4513931721448898e-02 + <_> + + 0 -1 5758 5.7369591668248177e-03 + + -5.5607158690690994e-02 1.1532089859247208e-01 + <_> + + 0 -1 5759 4.6170800924301147e-03 + + -5.6083500385284424e-02 8.1762917339801788e-02 + <_> + + 0 -1 5760 -4.7089671716094017e-03 + + -1.3351219892501831e-01 5.6296080350875854e-02 + <_> + + 0 -1 5761 -3.2688070088624954e-02 + + 2.7922388911247253e-01 -1.0867659933865070e-02 + <_> + + 0 -1 5762 8.8686197996139526e-02 + + 1.8268220126628876e-02 -3.5637390613555908e-01 + <_> + + 0 -1 5763 4.5751677826046944e-03 + + -5.1558461040258408e-02 6.3948810100555420e-02 + <_> + + 0 -1 5764 4.9765850417315960e-03 + + -5.4684590548276901e-02 1.1907110363245010e-01 + <_> + + 0 -1 5765 -6.4881290309131145e-03 + + -9.9121123552322388e-02 2.6508849114179611e-02 + <_> + + 0 -1 5766 2.4523450993001461e-03 + + -9.5045946538448334e-02 6.6802926361560822e-02 + <_> + + 0 -1 5767 7.0354789495468140e-03 + + 1.0705590248107910e-01 -6.2395099550485611e-02 + <_> + + 0 -1 5768 4.2746789753437042e-02 + + -1.6092179343104362e-02 4.3256199359893799e-01 + <_> + + 0 -1 5769 -4.5301730278879404e-04 + + 3.6420568823814392e-02 -9.9322892725467682e-02 + <_> + + 0 -1 5770 -5.2631930448114872e-03 + + -1.1416749656200409e-01 5.7260219007730484e-02 + <_> + + 0 -1 5771 1.0581909446045756e-03 + + 3.3220488578081131e-02 -1.1831220239400864e-01 + <_> + + 0 -1 5772 2.5088949128985405e-02 + + -6.0655020177364349e-02 1.2601740658283234e-01 + <_> + + 0 -1 5773 2.4252159893512726e-01 + + 2.2060840856283903e-03 -1.0000120401382446e+00 + <_> + + 0 -1 5774 -1.4393079280853271e-01 + + 3.7419798970222473e-01 -2.2252110764384270e-02 + <_> + + 0 -1 5775 -6.0972762294113636e-03 + + -1.1038099974393845e-01 4.5996960252523422e-02 + <_> + + 0 -1 5776 6.1375470831990242e-03 + + 3.8307808339595795e-02 -1.8086770176887512e-01 + <_> + + 0 -1 5777 -3.6617079749703407e-03 + + 3.8439918309450150e-02 -6.2540791928768158e-02 + <_> + + 0 -1 5778 -1.5854850411415100e-01 + + 3.4469398856163025e-01 -1.9837500527501106e-02 + <_> + + 0 -1 5779 6.7219287157058716e-02 + + 9.5165139064192772e-03 -5.0206458568572998e-01 + <_> + + 0 -1 5780 2.2499680053442717e-03 + + -1.3063929975032806e-01 6.4832933247089386e-02 + <_> + + 0 -1 5781 8.4626786410808563e-02 + + 5.9339799918234348e-03 -4.1516590118408203e-01 + <_> + + 0 -1 5782 -9.5411221263930202e-04 + + -9.3790747225284576e-02 7.5486607849597931e-02 + <_> + + 0 -1 5783 -7.6813949272036552e-03 + + -1.4821960031986237e-01 2.9010580852627754e-02 + <_> + + 0 -1 5784 -2.5593319907784462e-02 + + 1.4859579503536224e-01 -4.7195930033922195e-02 + <_> + + 0 -1 5785 2.1508369594812393e-02 + + 2.3782620206475258e-02 -9.6659287810325623e-02 + <_> + + 0 -1 5786 3.4463100135326385e-02 + + -3.7410069257020950e-02 2.2015300393104553e-01 + <_> + + 0 -1 5787 -3.7860300391912460e-02 + + -5.0047469139099121e-01 1.4059869572520256e-02 + <_> + + 0 -1 5788 1.2028450146317482e-03 + + -6.5087057650089264e-02 8.9583486318588257e-02 + <_> + + 0 -1 5789 1.6753520816564560e-02 + + 4.9179811030626297e-03 -4.3030908703804016e-01 + <_> + + 0 -1 5790 1.6640779795125127e-03 + + 4.0807429701089859e-02 -1.4469960331916809e-01 + <_> + + 0 -1 5791 3.4473428968340158e-03 + + -3.9910178631544113e-02 1.5272960066795349e-01 + <_> + + 0 -1 5792 8.9918142184615135e-03 + + 7.1071267127990723e-02 -8.6169913411140442e-02 + <_> + + 0 -1 5793 8.3185202674940228e-04 + + -2.5739189982414246e-01 1.7941089347004890e-02 + <_> + + 0 -1 5794 -6.8142730742692947e-03 + + 1.3823160529136658e-01 -5.3994540125131607e-02 + <_> + + 0 -1 5795 2.9746210202574730e-03 + + -4.1550260037183762e-02 3.9839770644903183e-02 + <_> + + 0 -1 5796 2.5836620479822159e-03 + + -7.0656493306159973e-02 9.5045506954193115e-02 + <_> + + 0 -1 5797 2.7143809711560607e-04 + + 5.8070071041584015e-02 -1.2781760096549988e-01 + <_> + + 0 -1 5798 3.5418298840522766e-01 + + 5.4909070022404194e-03 -9.7960698604583740e-01 + <_> + + 0 -1 5799 2.5318650528788567e-02 + + -1.4410969801247120e-02 2.6219129562377930e-01 + <_> + + 0 -1 5800 -2.2658439411316067e-04 + + 5.2997849881649017e-02 -1.1629349738359451e-01 + <_> + + 0 -1 5801 6.8859090097248554e-03 + + 1.6437310725450516e-02 -2.0349490642547607e-01 + <_> + + 0 -1 5802 1.1607459746301174e-02 + + -3.6651011556386948e-02 1.5184010565280914e-01 + <_> + + 0 -1 5803 -4.8253959976136684e-03 + + -2.3476150631904602e-01 3.7914011627435684e-02 + <_> + + 0 -1 5804 2.5656020734459162e-03 + + 3.5185638815164566e-02 -1.8540710210800171e-01 + <_> + + 0 -1 5805 1.2601399421691895e-01 + + -9.8542850464582443e-03 2.5520691275596619e-01 + <_> + + 0 -1 5806 2.7164958883076906e-03 + + -2.1748440340161324e-02 2.5467529892921448e-01 + <_> + + 0 -1 5807 3.2356029748916626e-01 + + 8.8657345622777939e-03 -7.0383572578430176e-01 + <_> + + 0 -1 5808 -8.4016058826819062e-04 + + 3.6831360310316086e-02 -1.4953260123729706e-01 + <_> + + 0 -1 5809 3.3291990403085947e-03 + + 4.8185840249061584e-02 -1.2290470302104950e-01 + <_> + + 0 -1 5810 2.1130539476871490e-01 + + 6.5245870500802994e-03 -8.8293862342834473e-01 + <_> + + 0 -1 5811 5.0388509407639503e-03 + + -6.7079946398735046e-02 3.7849709391593933e-02 + <_> + + 0 -1 5812 -2.7862399816513062e-02 + + 3.3469489216804504e-01 -1.8816500902175903e-02 + <_> + + 0 -1 5813 3.8636629469692707e-03 + + 4.3644730001688004e-02 -1.7481489479541779e-01 + <_> + + 0 -1 5814 1.0480300337076187e-01 + + -1.5737529844045639e-02 4.2094239592552185e-01 + <_> + + 0 -1 5815 -3.4130848944187164e-03 + + -1.0835570096969604e-01 4.3717790395021439e-02 + <_> + + 0 -1 5816 -4.6396970748901367e-02 + + -7.5680077075958252e-01 8.6701400578022003e-03 + <_> + + 0 -1 5817 5.3708078339695930e-03 + + -4.1797801852226257e-02 1.4824719727039337e-01 + <_> + + 0 -1 5818 -6.1126388609409332e-03 + + 1.8673719465732574e-01 -4.3387491255998611e-02 + <_> + + 0 -1 5819 4.2509321123361588e-02 + + 1.1690679937601089e-02 -4.3740659952163696e-01 + <_> + + 0 -1 5820 1.0473020374774933e-02 + + 4.3143630027770996e-02 -1.5654399991035461e-01 + <_> + + 0 -1 5821 -4.7223959118127823e-02 + + -7.4483537673950195e-01 3.4918629098683596e-03 + <_> + + 0 -1 5822 5.3090360015630722e-02 + + 1.0408150032162666e-02 -5.3499448299407959e-01 + <_> + + 0 -1 5823 -7.0432561915367842e-04 + + 3.3384170383214951e-02 -7.3706030845642090e-02 + <_> + + 0 -1 5824 7.5942431576550007e-03 + + -2.9107049107551575e-02 1.9468860328197479e-01 + <_> + + 0 -1 5825 2.2676989436149597e-02 + + 3.3803820610046387e-02 -2.7627611160278320e-01 + <_> + + 0 -1 5826 6.6533521749079227e-03 + + -2.6578240096569061e-02 2.4283319711685181e-01 + <_> + + 0 -1 5827 3.7712270859628916e-03 + + 2.6554299518465996e-02 -6.4952917397022247e-02 + <_> + + 0 -1 5828 -2.0740530453622341e-03 + + -1.7968970537185669e-01 3.1532160937786102e-02 + <_> + + 0 -1 5829 -1.5632519498467445e-03 + + 5.3109679371118546e-02 -8.7415628135204315e-02 + <_> + + 0 -1 5830 1.2540889903903008e-02 + + -3.4136459231376648e-02 2.2097539901733398e-01 + <_> + + 0 -1 5831 -3.2660199794918299e-03 + + -5.5261608213186264e-02 3.2669559121131897e-02 + <_> + + 0 -1 5832 -8.2185603678226471e-03 + + -1.4478379487991333e-01 5.5743928998708725e-02 + <_> + + 0 -1 5833 -5.5811040103435516e-02 + + 1.7237940430641174e-01 -1.4456519857048988e-02 + <_> + + 0 -1 5834 -1.4723159372806549e-01 + + -8.1392312049865723e-01 7.4356291443109512e-03 + <_> + + 0 -1 5835 -5.8468529023230076e-03 + + -6.9043442606925964e-02 1.9456790760159492e-02 + <_> + + 0 -1 5836 1.9462220370769501e-02 + + -3.5472229123115540e-02 1.6666300594806671e-01 + <_> + + 0 -1 5837 5.8353468775749207e-02 + + 3.0551329255104065e-03 -3.9289128780364990e-01 + <_> + + 0 -1 5838 4.3785829097032547e-02 + + 1.3574630022048950e-02 -4.6152359247207642e-01 + <_> + + 0 -1 5839 -5.1904350519180298e-02 + + 6.3802438974380493e-01 -9.6664745360612869e-03 + <_> + + 0 -1 5840 -7.7811058145016432e-04 + + -9.9303223192691803e-02 5.6094601750373840e-02 + <_> + + 0 -1 5841 4.9657518975436687e-03 + + 4.1419368237257004e-02 -1.1274819821119308e-01 + <_> + + 0 -1 5842 -5.4516079835593700e-03 + + 1.7399060726165771e-01 -4.1147731244564056e-02 + <_> + + 0 -1 5843 5.0428751856088638e-03 + + -4.1255220770835876e-02 1.3794229924678802e-01 + <_> + + 0 -1 5844 -1.6985220136120915e-03 + + -2.2874790430068970e-01 2.5274980813264847e-02 + <_> + + 0 -1 5845 8.2764238119125366e-02 + + 3.3066510222852230e-03 -6.9113439321517944e-01 + <_> + + 0 -1 5846 3.9285849779844284e-03 + + -7.9043358564376831e-02 6.6218852996826172e-02 + <_> + + 0 -1 5847 -3.0601240694522858e-02 + + -2.6517450809478760e-01 1.6467850655317307e-02 + <_> + + 0 -1 5848 -1.9941160455346107e-02 + + 1.5431809425354004e-01 -3.6100689321756363e-02 + <_> + + 0 -1 5849 8.0520063638687134e-02 + + 1.7015919089317322e-02 -3.3448880910873413e-01 + <_> + + 0 -1 5850 7.0323847234249115e-02 + + 1.7122440040111542e-02 -3.3302140235900879e-01 + <_> + + 0 -1 5851 -5.2850939333438873e-02 + + 6.2421400099992752e-02 -1.4690199866890907e-02 + <_> + + 0 -1 5852 -7.1594159817323089e-04 + + -1.1335150152444839e-01 5.2260790020227432e-02 + <_> + + 0 -1 5853 2.1469970047473907e-01 + + 9.9299731664359570e-04 -9.9997580051422119e-01 + <_> + + 0 -1 5854 8.7042592465877533e-02 + + -1.2329760007560253e-02 5.0260668992996216e-01 + <_> + + 0 -1 5855 -5.8731262106448412e-04 + + -9.9346466362476349e-02 5.1705610007047653e-02 + <_> + + 0 -1 5856 -4.4215220957994461e-02 + + -3.9368900656700134e-01 1.3920850120484829e-02 + <_> + + 0 -1 5857 -8.7676227092742920e-02 + + 3.0157440900802612e-01 -6.8702381104230881e-03 + <_> + + 0 -1 5858 -4.8453990370035172e-02 + + 2.5477871298789978e-01 -2.2457750514149666e-02 + <_> + + 0 -1 5859 -2.1567570511251688e-03 + + -1.3562899827957153e-01 3.1725399196147919e-02 + <_> + + 0 -1 5860 3.9050900377333164e-03 + + 4.9100890755653381e-02 -1.1861059814691544e-01 + <_> + + 0 -1 5861 -3.9808028377592564e-03 + + 4.8333909362554550e-02 -5.5897079408168793e-02 + <_> + + 0 -1 5862 2.9744929634034634e-03 + + -6.4802452921867371e-02 9.3583501875400543e-02 + <_> + + 0 -1 5863 2.5875229388475418e-02 + + 1.8487609922885895e-02 -3.3436349034309387e-01 + <_> + + 0 -1 5864 -1.9373580580577254e-03 + + 2.2000649571418762e-01 -2.5404980406165123e-02 + <_> + + 0 -1 5865 -2.0171629264950752e-02 + + -7.8228309750556946e-02 4.5462790876626968e-02 + <_> + + 0 -1 5866 -2.6088140904903412e-02 + + 1.7637069523334503e-01 -4.5097298920154572e-02 + <_> + + 0 -1 5867 -2.6868300512433052e-02 + + -3.2656419277191162e-01 1.7994230613112450e-02 + <_> + + 0 -1 5868 -7.0211151614785194e-04 + + 3.9671998471021652e-02 -1.4533540606498718e-01 + <_> + + 0 -1 5869 8.3507681265473366e-03 + + -2.3051729425787926e-02 1.8850760161876678e-01 + <_> + + 0 -1 5870 4.6823569573462009e-03 + + 2.9996560886502266e-02 -2.0701029896736145e-01 + <_> + + 0 -1 5871 3.3109660726040602e-03 + + 5.6536730378866196e-02 -1.6835589706897736e-01 + <_> + + 0 -1 5872 7.6425541192293167e-03 + + -4.1423950344324112e-02 1.2557519972324371e-01 + <_> + + 0 -1 5873 -2.4713110178709030e-03 + + 7.2156153619289398e-02 -1.0767730325460434e-01 + <_> + + 0 -1 5874 -9.9495360627770424e-03 + + -1.8187619745731354e-01 3.3567231148481369e-02 + <_> + + 0 -1 5875 1.9820800516754389e-03 + + -5.6488718837499619e-02 1.0741490125656128e-01 + <_> + + 0 -1 5876 2.3254439234733582e-02 + + -1.6543349251151085e-02 3.6466678977012634e-01 + <_> + + 0 -1 5877 -5.4177921265363693e-02 + + -1. 3.3418419770896435e-03 + <_> + + 0 -1 5878 6.1567849479615688e-04 + + 4.0159329771995544e-02 -1.6460220515727997e-01 + <_> + + 0 -1 5879 -4.2699510231614113e-03 + + -5.6978620588779449e-02 4.4480901211500168e-02 + <_> + + 0 -1 5880 1.9749389030039310e-03 + + 5.9283681213855743e-02 -1.0791260004043579e-01 + <_> + + 0 -1 5881 -5.8583128266036510e-03 + + 1.3734050095081329e-01 -3.4231521189212799e-02 + <_> + + 0 -1 5882 -7.2995189111679792e-04 + + -1.0075060278177261e-01 5.4733160883188248e-02 + <_> + + 0 -1 5883 -2.9930740594863892e-02 + + 6.3882559537887573e-02 -4.1027020663022995e-02 + <_> + + 0 -1 5884 -5.1738750189542770e-02 + + -7.2713458538055420e-01 7.4993381276726723e-03 + <_> + + 0 -1 5885 2.4021189659833908e-02 + + 7.8491801396012306e-03 -5.5794471502304077e-01 + <_> + + 0 -1 5886 -3.7574321031570435e-03 + + -1.6086879372596741e-01 3.1015990301966667e-02 + <_> + + 0 -1 5887 -6.2635682523250580e-02 + + 9.0577863156795502e-02 -2.9033770784735680e-02 + <_> + + 0 -1 5888 1.9363429397344589e-02 + + -4.9920588731765747e-02 1.2835779786109924e-01 + <_> + + 0 -1 5889 -3.5072889178991318e-02 + + 2.1391840279102325e-01 -8.8168960064649582e-03 + <_> + + 0 -1 5890 -1.3243310153484344e-02 + + 2.3349699378013611e-01 -2.3088019341230392e-02 + <_> + + 0 -1 5891 -3.1290829181671143e-02 + + -6.9495099782943726e-01 9.3020889908075333e-03 + <_> + + 0 -1 5892 7.2391419671475887e-03 + + 2.8485849499702454e-02 -1.8310770392417908e-01 + <_> + + 0 -1 5893 6.6785318776965141e-03 + + -4.9132950603961945e-02 5.4181691259145737e-02 + <_> + + 0 -1 5894 -3.6825571209192276e-02 + + 3.3120208978652954e-01 -2.1359929814934731e-02 + <_> + + 0 -1 5895 -4.5507341623306274e-02 + + -1.2893490493297577e-01 4.9545988440513611e-02 + <_> + + 0 -1 5896 7.7639957889914513e-03 + + -3.6255620419979095e-02 1.5321409702301025e-01 + <_> + + 0 -1 5897 6.0417611151933670e-02 + + 4.5740022324025631e-03 -6.7541092634201050e-01 + <_> + + 0 -1 5898 2.4624960497021675e-03 + + 5.3674161434173584e-02 -1.1326540261507034e-01 + <_> + + 0 -1 5899 7.3594506829977036e-05 + + -3.5648930817842484e-02 2.5458969175815582e-02 + <_> + + 0 -1 5900 -4.0958370082080364e-03 + + 1.5562909841537476e-01 -3.9390601217746735e-02 + <_> + + 0 -1 5901 2.8689370083156973e-05 + + -8.4823302924633026e-02 3.8254238665103912e-02 + <_> + + 0 -1 5902 -4.6220528893172741e-03 + + -1.8994529545307159e-01 3.3508758991956711e-02 + <_> + + 0 -1 5903 -8.5343196988105774e-03 + + 1.1212539672851562e-01 -3.3968489617109299e-02 + <_> + + 0 -1 5904 -5.8803848922252655e-02 + + -5.1244312524795532e-01 1.0789549909532070e-02 + <_> + + 0 -1 5905 6.0719929635524750e-02 + + -1.2555030174553394e-02 2.2509759664535522e-01 + <_> + + 0 -1 5906 1.1038020020350814e-03 + + -9.6294492483139038e-02 5.6727480143308640e-02 + <_> + + 0 -1 5907 -3.8484560791403055e-03 + + 4.0573459118604660e-02 -2.5326859205961227e-02 + <_> + + 0 -1 5908 -1.0771050117909908e-02 + + 8.8735632598400116e-02 -5.5628679692745209e-02 + <_> + + 0 -1 5909 1.2016809545457363e-02 + + 2.3566279560327530e-02 -2.4590580165386200e-01 + <_> + + 0 -1 5910 -1.1656560236588120e-03 + + -3.7417300045490265e-02 1.6503289341926575e-01 + <_> + + 0 -1 5911 3.2137628644704819e-02 + + 1.4245970174670219e-02 -2.6480850577354431e-01 + <_> + + 0 -1 5912 2.3331670090556145e-02 + + -3.5288721323013306e-02 1.8447829782962799e-01 + <_> + + 0 -1 5913 -1.2685320340096951e-02 + + -1.1757309734821320e-01 1.6436910256743431e-02 + <_> + + 0 -1 5914 7.3903938755393028e-05 + + -1.0271479934453964e-01 7.4301436543464661e-02 + <_> + + 0 -1 5915 -1.0925470292568207e-01 + + -8.3165317773818970e-01 5.6438110768795013e-03 + <_> + + 0 -1 5916 -1.3324350118637085e-01 + + 7.7729821205139160e-01 -8.3403270691633224e-03 + <_> + + 0 -1 5917 8.9381448924541473e-04 + + -5.9524301439523697e-02 4.1173089295625687e-02 + <_> + + 0 -1 5918 1.0318649932742119e-02 + + 1.5926430001854897e-02 -3.1637790799140930e-01 + <_> + + 0 -1 5919 -5.2297548390924931e-03 + + -7.1166560053825378e-02 3.3489290624856949e-02 + <_> + + 0 -1 5920 1.6409620642662048e-02 + + -2.6454120874404907e-02 1.9589969515800476e-01 + <_> + + 0 -1 5921 1.4068709686398506e-02 + + -3.9364140480756760e-02 1.3977420330047607e-01 + <_> + + 0 -1 5922 6.6486410796642303e-03 + + 6.4070828258991241e-02 -1.0493399947881699e-01 + <_> + + 0 -1 5923 -1.8030619248747826e-02 + + 8.3942912518978119e-02 -1.3399159535765648e-02 + <_> + + 0 -1 5924 -4.4034369289875031e-02 + + -5.5825459957122803e-01 9.7633162513375282e-03 + <_> + + 0 -1 5925 -8.0966893583536148e-03 + + -2.0489789545536041e-01 2.6520200073719025e-02 + <_> + + 0 -1 5926 5.0180461257696152e-03 + + -1.1661209911108017e-01 4.5791670680046082e-02 + <_> + + 0 -1 5927 -1.7064629122614861e-02 + + 2.6282730698585510e-01 -2.0390639081597328e-02 + <_> + + 0 -1 5928 7.1850173175334930e-02 + + -6.9503681734204292e-03 6.7032539844512939e-01 + <_> + + 0 -1 5929 -5.6914370507001877e-02 + + -1.3477900624275208e-01 1.8399080261588097e-02 + <_> + + 0 -1 5930 -3.2365729566663504e-03 + + 6.9673851132392883e-02 -7.2314530611038208e-02 + <_> + + 0 -1 5931 4.1818909347057343e-02 + + 1.1151459999382496e-02 -5.1680111885070801e-01 + <_> + + 0 -1 5932 -6.1106588691473007e-03 + + -1.3163940608501434e-01 4.3796509504318237e-02 + <_> + + 0 -1 5933 -3.5560909658670425e-02 + + 6.8005502223968506e-02 -3.6331020295619965e-02 + <_> + + 0 -1 5934 6.8789169192314148e-02 + + 1.4698959887027740e-02 -3.8212299346923828e-01 + <_> + + 0 -1 5935 -7.8313373029232025e-02 + + 2.0296069979667664e-01 -8.6810020729899406e-03 + <_> + + 0 -1 5936 3.9626220241189003e-03 + + -3.5797890275716782e-02 1.3905510306358337e-01 + <_> + + 0 -1 5937 -3.3874038606882095e-02 + + -2.2253429889678955e-01 7.5455638580024242e-03 + <_> + + 0 -1 5938 -6.4755856990814209e-02 + + 4.7521549463272095e-01 -1.0970680043101311e-02 + <_> + + 0 -1 5939 2.6647940278053284e-02 + + 1.5445309691131115e-02 -2.6785778999328613e-01 + <_> + + 0 -1 5940 -3.0731109902262688e-02 + + -4.7668689489364624e-01 9.6429884433746338e-03 + <_> + + 0 -1 5941 -2.4022700265049934e-02 + + -1.0633960366249084e-01 1.2849040329456329e-02 + <_> + + 0 -1 5942 -1.3036349555477500e-03 + + 7.3524177074432373e-02 -6.8074919283390045e-02 + <_> + + 0 -1 5943 -9.8344050347805023e-03 + + -1.1843550205230713e-01 4.2866699397563934e-02 + <_> + + 0 -1 5944 8.7102197110652924e-02 + + -4.0088258683681488e-02 1.7804540693759918e-01 + <_> + + 0 -1 5945 2.0411569625139236e-02 + + 1.6849989071488380e-02 -3.8953658938407898e-01 + <_> + + 0 -1 5946 9.5875263214111328e-02 + + 5.9905550442636013e-03 -8.1525659561157227e-01 + <_> + + 0 -1 5947 6.4893220551311970e-03 + + -2.4039229378104210e-02 5.3871169686317444e-02 + <_> + + 0 -1 5948 -9.6279237186536193e-04 + + 9.4299189746379852e-02 -6.4436018466949463e-02 + <_> + + 0 -1 5949 -3.7659960798919201e-04 + + -6.2296878546476364e-02 4.1251849383115768e-02 + <_> + + 0 -1 5950 6.5272641368210316e-03 + + 5.1325131207704544e-02 -1.3037790358066559e-01 + <_> + + 0 -1 5951 2.1429110318422318e-02 + + -1.1989659629762173e-02 2.6280459761619568e-01 + <_> + + 0 -1 5952 -5.0938720814883709e-03 + + 6.3418947160243988e-02 -9.0566337108612061e-02 + <_> + + 0 -1 5953 -2.5309680495411158e-03 + + 6.0297761112451553e-02 -2.5049470365047455e-02 + <_> + + 0 -1 5954 -1.5915350522845984e-03 + + -1.2171190232038498e-01 3.7737991660833359e-02 + <_> + + 0 -1 5955 -3.4030709415674210e-02 + + 4.6413430571556091e-01 -3.5409750416874886e-03 + <_> + + 0 -1 5956 5.1074200309813023e-03 + + 3.9823830127716064e-02 -1.2645539641380310e-01 + <_> + + 0 -1 5957 -9.6449116244912148e-03 + + 3.3464258909225464e-01 -6.6040740348398685e-03 + <_> + + 0 -1 5958 1.1422860436141491e-02 + + -3.6080420017242432e-02 1.3714550435543060e-01 + <_> + + 0 -1 5959 -5.1042139530181885e-03 + + -9.3986809253692627e-02 2.8844779357314110e-02 + <_> + + 0 -1 5960 -2.6332271099090576e-01 + + 4.9980929493904114e-01 -1.0173249989748001e-02 + <_> + + 0 -1 5961 -2.4556639790534973e-01 + + -8.1778347492218018e-01 6.9596339017152786e-03 + <_> + + 0 -1 5962 -2.1419329941272736e-01 + + -5.1040518283843994e-01 9.4540230929851532e-03 + <_> + + 0 -1 5963 -1.4363219961524010e-02 + + -9.1000981628894806e-02 2.4646669626235962e-02 + <_> + + 0 -1 5964 -1.2388969771564007e-03 + + 1.1544570326805115e-01 -4.9565620720386505e-02 + <_> + + 0 -1 5965 2.1015120670199394e-02 + + -1.7765879631042480e-02 1.9577859342098236e-01 + <_> + + 0 -1 5966 -4.1783051565289497e-03 + + -1.1172860115766525e-01 4.4625449925661087e-02 + <_> + + 0 -1 5967 2.0896939095109701e-03 + + -3.3988729119300842e-02 6.5539501607418060e-02 + <_> + + 0 -1 5968 1.6410060226917267e-02 + + -2.0373269915580750e-02 2.5331538915634155e-01 + <_> + + 0 -1 5969 -6.4266882836818695e-02 + + -6.5880149602890015e-01 3.4550630953162909e-03 + <_> + + 0 -1 5970 6.8898178869858384e-04 + + 6.7643247544765472e-02 -8.7556242942810059e-02 + <_> + + 0 -1 5971 5.6662331335246563e-03 + + 3.0638309195637703e-02 -1.1895540356636047e-01 + <_> + + 0 -1 5972 -4.3778121471405029e-02 + + -2.8309130668640137e-01 1.7713630571961403e-02 + <_> + + 0 -1 5973 3.4748481120914221e-03 + + -9.5787122845649719e-02 4.2630400508642197e-02 + <_> + + 0 -1 5974 -1.1673940345644951e-02 + + -1.0502570122480392e-01 5.0903890281915665e-02 + <_> + + 0 -1 5975 -3.4004659391939640e-03 + + 1.0470719635486603e-01 -4.0939141064882278e-02 + <_> + + 0 -1 5976 2.7091780211776495e-03 + + -6.0524601489305496e-02 1.3978950679302216e-01 + <_> + + 0 -1 5977 -1.7439300194382668e-02 + + -3.2391169667243958e-01 1.4630249701440334e-02 + <_> + + 0 -1 5978 -1.2598330155014992e-02 + + -2.0682629942893982e-01 2.5501869618892670e-02 + <_> + + 0 -1 5979 1.8755869939923286e-02 + + -4.7925960272550583e-02 1.0864380002021790e-01 + <_> + + 0 -1 5980 -4.2074159719049931e-03 + + -8.2077808678150177e-02 6.3647769391536713e-02 + <_> + + 0 -1 5981 -1.6427719674538821e-04 + + 1.0120390355587006e-01 -3.4067928791046143e-02 + <_> + + 0 -1 5982 4.3847691267728806e-02 + + 6.0980222187936306e-03 -8.3685982227325439e-01 + <_> + + 0 -1 5983 -3.9284680038690567e-02 + + 2.8250560164451599e-01 -2.2389259189367294e-02 + <_> + + 0 -1 5984 3.8550909608602524e-02 + + 1.5570489689707756e-02 -3.3978620171546936e-01 + <_> + + 0 -1 5985 -6.9177031517028809e-02 + + 1.2258320301771164e-01 -1.7850179225206375e-02 + <_> + + 0 -1 5986 -1.9251030171290040e-03 + + -1.0687749832868576e-01 4.6379510313272476e-02 + <_> + + 0 -1 5987 -8.6635202169418335e-03 + + 9.6412748098373413e-02 -1.7563249915838242e-02 + <_> + + 0 -1 5988 1.3393509387969971e-01 + + 6.3692941330373287e-03 -7.0170587301254272e-01 + <_> + + 0 -1 5989 4.1082348674535751e-02 + + -1.1077569797635078e-02 1.3463750481605530e-01 + <_> + + 0 -1 5990 1.4911450445652008e-01 + + 9.5263421535491943e-03 -5.0872552394866943e-01 + <_> + + 0 -1 5991 -5.2500818856060505e-03 + + 7.0025578141212463e-02 -4.2880270630121231e-02 + <_> + + 0 -1 5992 2.2823570296168327e-02 + + -4.1884049773216248e-02 1.1770319938659668e-01 + <_> + + 0 -1 5993 -8.5306530818343163e-03 + + 6.1222139745950699e-02 -2.4944549426436424e-02 + <_> + + 0 -1 5994 1.1971729807555676e-02 + + 3.9662770926952362e-02 -1.6267740726470947e-01 + <_> + + 0 -1 5995 -3.8938269019126892e-02 + + 2.5743520259857178e-01 -1.6356239095330238e-02 + <_> + + 0 -1 5996 -2.1706389263272285e-02 + + -3.1998679041862488e-01 1.7135290428996086e-02 + <_> + + 0 -1 5997 6.6900630481541157e-03 + + 2.6101849973201752e-02 -1.0980729758739471e-01 + <_> + + 0 -1 5998 -7.2270832955837250e-02 + + 1.9431130588054657e-01 -2.6044359430670738e-02 + <_> + + 0 -1 5999 -6.7073688842356205e-03 + + -1.7747850716114044e-01 4.5862998813390732e-02 + <_> + + 0 -1 6000 5.5019360035657883e-02 + + -8.3471573889255524e-03 6.0511541366577148e-01 + <_> + + 0 -1 6001 1.3142649829387665e-01 + + -5.7535418309271336e-03 2.9167538881301880e-01 + <_> + + 0 -1 6002 -1.6564460238441825e-03 + + 7.0003032684326172e-02 -6.2690876424312592e-02 + <_> + + 0 -1 6003 1.5445409715175629e-01 + + 6.1896732077002525e-03 -7.4323302507400513e-01 + <_> + + 0 -1 6004 -5.0357519648969173e-03 + + -1.1333289742469788e-01 3.8741771131753922e-02 + <_> + + 0 -1 6005 2.2772569209337234e-03 + + -1.1340530216693878e-01 2.1319400519132614e-02 + <_> + + 0 -1 6006 3.3173530828207731e-03 + + 4.4273331761360168e-02 -1.0459829866886139e-01 + <_> + + 0 -1 6007 -2.9692800715565681e-02 + + 9.2483766376972198e-02 -2.3342609405517578e-02 + <_> + + 0 -1 6008 6.2937840819358826e-02 + + -1.2998280115425587e-02 3.8887938857078552e-01 + <_> + + 0 -1 6009 3.6641359329223633e-03 + + 3.2099820673465729e-02 -3.9647988975048065e-02 + <_> + + 0 -1 6010 4.4782999902963638e-03 + + -4.5701328665018082e-02 1.0697010159492493e-01 + <_> + + 0 -1 6011 1.8147319788113236e-03 + + -3.2871820032596588e-02 1.0647939890623093e-01 + <_> + + 0 -1 6012 4.8941639252007008e-03 + + 2.7911009266972542e-02 -2.1725590527057648e-01 + <_> + + 0 -1 6013 -4.4425828382372856e-03 + + -1.3470150530338287e-01 1.0781410150229931e-02 + <_> + + 0 -1 6014 -2.5493400171399117e-02 + + 6.8371468782424927e-01 -7.7452720142900944e-03 + <_> + + 0 -1 6015 2.7835449203848839e-02 + + 2.4144299328327179e-02 -1.5170599520206451e-01 + <_> + + 0 -1 6016 7.5548859313130379e-03 + + -4.7643400728702545e-02 1.1925770342350006e-01 + <_> + + 0 -1 6017 1.0329609736800194e-02 + + 1.8646810203790665e-02 -1.6122570633888245e-01 + <_> + + 0 -1 6018 -1.2393389828503132e-02 + + 6.0304921865463257e-01 -7.7566630207002163e-03 + <_> + + 0 -1 6019 1.3833769597113132e-02 + + -2.7617299929261208e-02 5.1266878843307495e-02 + <_> + + 0 -1 6020 -2.5669319555163383e-02 + + 2.3801359534263611e-01 -2.3971909657120705e-02 + <_> + + 0 -1 6021 -5.2043660543859005e-03 + + -1.0721790045499802e-01 2.6645049452781677e-02 + <_> + + 0 -1 6022 3.4628969151526690e-03 + + 5.4313410073518753e-02 -1.3458320498466492e-01 + <_> + + 0 -1 6023 -1.9220679998397827e-02 + + 7.2996392846107483e-02 -4.0652111172676086e-02 + <_> + + 0 -1 6024 -2.5009829550981522e-03 + + -7.7671296894550323e-02 5.9096541255712509e-02 + <_> + + 0 -1 6025 -8.5285156965255737e-03 + + 4.9050811678171158e-02 -6.4078353345394135e-02 + <_> + + 0 -1 6026 4.3327538296580315e-03 + + 2.5221010670065880e-02 -1.9358980655670166e-01 + <_> + + 0 -1 6027 3.6595970392227173e-02 + + -1.6262590885162354e-02 1.5651239454746246e-01 + <_> + + 0 -1 6028 -1.1795730097219348e-03 + + -7.2468072175979614e-02 7.0449486374855042e-02 + <_> + + 0 -1 6029 -1.3975829817354679e-02 + + -1.1789470165967941e-01 2.1292049437761307e-02 + <_> + + 0 -1 6030 -1.3828700175508857e-03 + + 7.9283542931079865e-02 -9.5104120671749115e-02 + <_> + + 0 -1 6031 -2.9435830656439066e-03 + + 7.0368431508541107e-02 -3.3217910677194595e-02 + <_> + + 0 -1 6032 9.5262555405497551e-03 + + -2.9733620584011078e-02 1.6670459508895874e-01 + <_> + + 0 -1 6033 -9.0114273130893707e-02 + + -1.6625370085239410e-01 8.6199166253209114e-03 + <_> + + 0 -1 6034 -1.2089919764548540e-03 + + 8.1083856523036957e-02 -7.3029123246669769e-02 + <_> + + 0 -1 6035 -1.4199960231781006e-01 + + -1. 2.2284830920398235e-03 + <_> + + 0 -1 6036 8.0690719187259674e-03 + + 4.7412220388650894e-02 -1.0178930312395096e-01 + <_> + + 0 -1 6037 -4.7410889528691769e-03 + + 1.2051119655370712e-01 -4.9957480281591415e-02 + <_> + + 0 -1 6038 -1.6977200284600258e-03 + + -2.4171440303325653e-01 1.9534369930624962e-02 + <_> + + 0 -1 6039 -2.8892089612782001e-03 + + 2.5727990269660950e-01 -1.1625059880316257e-02 + <_> + + 0 -1 6040 -1.5177440363913774e-03 + + -9.8784193396568298e-02 4.6706128865480423e-02 + <_> + + 0 -1 6041 1.4197319746017456e-01 + + -2.5096370372921228e-03 7.5450611114501953e-01 + <_> + + 0 -1 6042 9.7517937421798706e-02 + + -6.9059049710631371e-03 6.5184432268142700e-01 + <_> + + 0 -1 6043 1.3567379675805569e-02 + + -7.6325193047523499e-02 8.8054582476615906e-02 + <_> + + 0 -1 6044 8.0981463193893433e-02 + + 1.5558109618723392e-02 -3.4601628780364990e-01 + <_> + + 0 -1 6045 -4.7192731872200966e-03 + + 8.1620022654533386e-02 -4.6072289347648621e-02 + <_> + + 0 -1 6046 2.0368969999253750e-03 + + -4.4817630201578140e-02 1.2861390411853790e-01 + <_> + + 0 -1 6047 -1.7878509825095534e-03 + + 4.3731331825256348e-02 -4.4995948672294617e-02 + <_> + + 0 -1 6048 -7.1685528382658958e-03 + + -1.3597999513149261e-01 3.8796991109848022e-02 + <_> + + 0 -1 6049 -6.7460887134075165e-02 + + -2.9265740513801575e-01 3.5135280340909958e-03 + <_> + + 0 -1 6050 -1.5598500147461891e-02 + + 2.3105660080909729e-01 -2.2405069321393967e-02 + <_> + + 0 -1 6051 -2.1026479080319405e-02 + + -1.5283830463886261e-01 3.1531449407339096e-02 + <_> + + 0 -1 6052 -1.0558360069990158e-01 + + -6.8366038799285889e-01 6.8997950293123722e-03 + <_> + + 0 -1 6053 -3.6966579500585794e-03 + + 3.4315150231122971e-02 -4.8922799527645111e-02 + <_> + + 0 -1 6054 -6.0826627304777503e-04 + + -5.2638430148363113e-02 8.9546948671340942e-02 + <_> + + 0 -1 6055 -2.8936540707945824e-02 + + 4.1818480938673019e-02 -1.3818169943988323e-02 + <_> + + 0 -1 6056 -5.8082528412342072e-03 + + 6.7874796688556671e-02 -8.5578799247741699e-02 + <_> + + 0 -1 6057 -4.6095378696918488e-02 + + -1.2584780156612396e-01 2.0466970279812813e-02 + <_> + + 0 -1 6058 5.2972920238971710e-02 + + -1.2453259900212288e-02 3.4565049409866333e-01 + <_> + + 0 -1 6059 4.9351599067449570e-02 + + 1.0901239700615406e-02 -4.8506981134414673e-01 + <_> + + 0 -1 6060 4.4377800077199936e-02 + + 9.9294837564229965e-03 -4.3877899646759033e-01 + <_> + + 0 -1 6061 -1.1464890092611313e-01 + + 2.6874598860740662e-01 -9.2000560835003853e-03 + <_> + + 0 -1 6062 1.6887830197811127e-01 + + 5.7101310230791569e-03 -8.5972881317138672e-01 + <_> + + 0 -1 6063 5.1198098808526993e-02 + + -8.5723921656608582e-03 1.3395169377326965e-01 + <_> + + 0 -1 6064 -3.0789880547672510e-03 + + -1.0338760167360306e-01 4.3459478765726089e-02 + <_> + + 0 -1 6065 4.7223128378391266e-02 + + 8.1934239715337753e-03 -4.3803408741950989e-01 + <_> + + 0 -1 6066 -7.6270569115877151e-03 + + 1.8713890016078949e-01 -2.4660250172019005e-02 + <_> + + 0 -1 6067 5.4106907919049263e-03 + + 4.1099831461906433e-02 -7.8868232667446136e-02 + <_> + + 0 -1 6068 -1.4900229871273041e-03 + + -2.0115040242671967e-01 3.1898159533739090e-02 + <_> + + 0 -1 6069 -8.3831608295440674e-02 + + 5.8017939329147339e-01 -5.2973427809774876e-03 + <_> + + 0 -1 6070 6.2233800999820232e-03 + + -3.9786059409379959e-02 1.2283950299024582e-01 + <_> + + 0 -1 6071 1.1475080251693726e-01 + + -1.1975419707596302e-02 2.1586710214614868e-01 + <_> + + 0 -1 6072 -1.5253260498866439e-03 + + 1.3804529607295990e-01 -3.9941880851984024e-02 + <_> + + 0 -1 6073 -5.2878521382808685e-03 + + -1.2790650129318237e-01 3.2893560826778412e-02 + <_> + + 0 -1 6074 8.9670647867023945e-04 + + -1.2481059879064560e-01 4.4544249773025513e-02 + <_> + + 0 -1 6075 3.8421660661697388e-02 + + 7.7155791223049164e-03 -6.5575468540191650e-01 + <_> + + 0 -1 6076 -9.3785318313166499e-04 + + 5.5608510971069336e-02 -8.9876912534236908e-02 + <_> + + 0 -1 6077 1.9965849351137877e-03 + + -2.5297610089182854e-02 1.9413180649280548e-01 + <_> + + 0 -1 6078 4.5782068627886474e-04 + + 3.9089199155569077e-02 -1.2908570468425751e-01 + <_> + + 0 -1 6079 3.8373940624296665e-03 + + -2.8748869895935059e-02 1.9429750740528107e-01 + <_> + + 0 -1 6080 3.7142829387448728e-04 + + 3.8272358477115631e-02 -1.3759189844131470e-01 + <_> + + 0 -1 6081 7.5116259977221489e-03 + + -1.4461129903793335e-02 1.2656949460506439e-01 + <_> + + 0 -1 6082 -5.0362840294837952e-02 + + 3.5183578729629517e-01 -1.4051860198378563e-02 + <_> + + 0 -1 6083 3.9921641349792480e-02 + + 2.7280429378151894e-02 -1.9958199560642242e-01 + <_> + + 0 -1 6084 2.2605259716510773e-01 + + -6.8001961335539818e-03 7.3006898164749146e-01 + <_> + + 0 -1 6085 1.1081779748201370e-01 + + 4.3370737694203854e-03 -8.6829161643981934e-01 + <_> + + 0 -1 6086 -9.7494889050722122e-03 + + -6.3740663230419159e-02 8.4537997841835022e-02 + <_> + + 0 -1 6087 -2.2887689992785454e-03 + + 9.9654018878936768e-02 -4.1565418243408203e-02 + <_> + + 0 -1 6088 2.0008319988846779e-03 + + -5.5650699883699417e-02 1.0709869861602783e-01 + <_> + + 0 -1 6089 -1.5160050243139267e-02 + + -1.4098760485649109e-01 3.8741599768400192e-02 + <_> + + 0 -1 6090 -6.3132969662547112e-03 + + -1. 4.4605308212339878e-03 + <_> + + 0 -1 6091 -1.3970009982585907e-02 + + 1.2481089681386948e-01 -2.1425830200314522e-02 + <_> + + 0 -1 6092 -4.4321279972791672e-02 + + -5.3340071439743042e-01 1.0165239684283733e-02 + <_> + + 0 -1 6093 1.4885979471728206e-03 + + -4.8868600279092789e-02 3.6077901721000671e-02 + <_> + + 0 -1 6094 6.5139681100845337e-02 + + 7.6331058517098427e-03 -5.8781641721725464e-01 + <_> + + 0 -1 6095 -2.0741410553455353e-02 + + -2.9658278822898865e-01 1.8622800707817078e-02 + <_> + 394 + -1.2940989732742310e+00 + + <_> + + 0 -1 6096 1.9188739359378815e-02 + + -2.1150399744510651e-01 1.3286529481410980e-01 + <_> + + 0 -1 6097 -8.1222038716077805e-03 + + 9.2491082847118378e-02 -1.7585119605064392e-01 + <_> + + 0 -1 6098 1.5851219650357962e-03 + + -2.8565698862075806e-01 6.6710568964481354e-02 + <_> + + 0 -1 6099 -4.3140850029885769e-03 + + -1.3885229825973511e-01 5.2694689482450485e-02 + <_> + + 0 -1 6100 -1.7131429631263018e-03 + + 1.3135610520839691e-01 -1.3149109482765198e-01 + <_> + + 0 -1 6101 6.8447366356849670e-02 + + 9.3052154406905174e-03 -2.5063261389732361e-01 + <_> + + 0 -1 6102 -2.4445978924632072e-03 + + -1.7205530405044556e-01 9.8322823643684387e-02 + <_> + + 0 -1 6103 1.0310600046068430e-03 + + 2.3039160296320915e-02 -2.7527621388435364e-01 + <_> + + 0 -1 6104 7.4603251414373517e-04 + + -2.3276780545711517e-01 5.2693009376525879e-02 + <_> + + 0 -1 6105 -6.6399492789059877e-04 + + 6.8990781903266907e-02 -8.4687709808349609e-02 + <_> + + 0 -1 6106 -4.0997468749992549e-04 + + 1.0501380264759064e-01 -1.0819009691476822e-01 + <_> + + 0 -1 6107 -1.8094549886882305e-03 + + -1.8178839981555939e-01 4.4184140861034393e-02 + <_> + + 0 -1 6108 9.3385757645592093e-04 + + -1.4622689783573151e-01 7.2726443409919739e-02 + <_> + + 0 -1 6109 -3.8197741378098726e-04 + + 2.4009939283132553e-02 -1.7295800149440765e-01 + <_> + + 0 -1 6110 -1.4950280310586095e-03 + + -1.9403380155563354e-01 4.8807919025421143e-02 + <_> + + 0 -1 6111 -1.0159100405871868e-02 + + 1.9173899292945862e-01 -5.2749071270227432e-02 + <_> + + 0 -1 6112 5.9903519286308438e-05 + + -1.0791549831628799e-01 9.0988166630268097e-02 + <_> + + 0 -1 6113 -3.1967550516128540e-02 + + 4.1109889745712280e-01 -2.2650640457868576e-02 + <_> + + 0 -1 6114 1.4343270100653172e-02 + + 2.4315539747476578e-02 -4.2680150270462036e-01 + <_> + + 0 -1 6115 1.1039529927074909e-02 + + -6.2717013061046600e-02 1.1330530047416687e-01 + <_> + + 0 -1 6116 -8.4228850901126862e-03 + + -2.1369309723377228e-01 4.2059201747179031e-02 + <_> + + 0 -1 6117 -2.0549839362502098e-02 + + 1.5161630511283875e-01 -2.4594139307737350e-02 + <_> + + 0 -1 6118 -6.5411031246185303e-03 + + 1.4883629977703094e-01 -6.1179339885711670e-02 + <_> + + 0 -1 6119 -1.3324400410056114e-02 + + -2.0791970193386078e-01 4.8333309590816498e-02 + <_> + + 0 -1 6120 7.0111267268657684e-02 + + -2.6863219216465950e-02 3.6322259902954102e-01 + <_> + + 0 -1 6121 -2.6973750209435821e-04 + + 6.0876660048961639e-02 -1.1272370070219040e-01 + <_> + + 0 -1 6122 -1.3509000418707728e-03 + + -1.8552079796791077e-01 5.2154958248138428e-02 + <_> + + 0 -1 6123 -2.8083190321922302e-02 + + 3.5111880302429199e-01 -2.3596329614520073e-02 + <_> + + 0 -1 6124 -1.0003290139138699e-02 + + -2.9058480262756348e-01 3.2125689089298248e-02 + <_> + + 0 -1 6125 -1.6111029544845223e-03 + + 9.8113670945167542e-02 -5.2203711122274399e-02 + <_> + + 0 -1 6126 -1.8411900848150253e-02 + + -1.8082669377326965e-01 5.4536700248718262e-02 + <_> + + 0 -1 6127 -7.1738816797733307e-02 + + -7.6654988527297974e-01 3.3518690615892410e-03 + <_> + + 0 -1 6128 -2.7943260502070189e-03 + + 1.5871369838714600e-01 -6.4271800220012665e-02 + <_> + + 0 -1 6129 -1.6874749958515167e-01 + + -6.9956189393997192e-01 4.8861699178814888e-03 + <_> + + 0 -1 6130 -1.2672400334849954e-03 + + 3.1616039574146271e-02 -2.4953269958496094e-01 + <_> + + 0 -1 6131 2.0807750523090363e-02 + + 1.7053410410881042e-02 -2.4331410229206085e-01 + <_> + + 0 -1 6132 -1.5869849594309926e-03 + + 9.3171089887619019e-02 -8.1361927092075348e-02 + <_> + + 0 -1 6133 -1.0014690458774567e-02 + + -2.7789619565010071e-01 2.6569239795207977e-02 + <_> + + 0 -1 6134 -5.7948171161115170e-03 + + -2.2287739813327789e-01 3.5975661128759384e-02 + <_> + + 0 -1 6135 2.7189950924366713e-03 + + -9.0631909668445587e-02 5.6820400059223175e-02 + <_> + + 0 -1 6136 3.8845159113407135e-02 + + 1.2280859984457493e-02 -5.8521348237991333e-01 + <_> + + 0 -1 6137 -1.4158680103719234e-02 + + 1.8153870105743408e-01 -3.1109429895877838e-02 + <_> + + 0 -1 6138 -1.8278600275516510e-01 + + -9.0013808012008667e-01 7.6544750481843948e-03 + <_> + + 0 -1 6139 2.7588419616222382e-02 + + -1.2460039928555489e-02 2.0069369673728943e-01 + <_> + + 0 -1 6140 -1.4784430153667927e-02 + + -8.9910492300987244e-02 8.1648677587509155e-02 + <_> + + 0 -1 6141 1.1625719815492630e-01 + + 2.3692469112575054e-03 -9.9998068809509277e-01 + <_> + + 0 -1 6142 3.5341090988367796e-03 + + -6.1760541051626205e-02 1.3490639626979828e-01 + <_> + + 0 -1 6143 5.1878788508474827e-03 + + 1.8745860084891319e-02 -1.7449170351028442e-01 + <_> + + 0 -1 6144 7.9457357525825500e-02 + + -2.3402990773320198e-02 3.3502200245857239e-01 + <_> + + 0 -1 6145 2.7684379369020462e-02 + + 2.3663910105824471e-02 -3.3256360888481140e-01 + <_> + + 0 -1 6146 -4.4806320220232010e-03 + + -1.4658750593662262e-01 4.7376811504364014e-02 + <_> + + 0 -1 6147 5.6939688511192799e-03 + + -5.6776121258735657e-02 6.7580856382846832e-02 + <_> + + 0 -1 6148 7.7299480326473713e-03 + + -3.1156649813055992e-02 2.3102590441703796e-01 + <_> + + 0 -1 6149 3.9786100387573242e-03 + + -5.6882441043853760e-02 1.3271529972553253e-01 + <_> + + 0 -1 6150 -1.1275880038738251e-02 + + -2.0938649773597717e-01 3.5291459411382675e-02 + <_> + + 0 -1 6151 -2.4308220017701387e-03 + + -2.0176360011100769e-01 3.4513931721448898e-02 + <_> + + 0 -1 6152 5.7369591668248177e-03 + + -5.5607158690690994e-02 1.1532089859247208e-01 + <_> + + 0 -1 6153 4.6170800924301147e-03 + + -5.6083500385284424e-02 8.1762917339801788e-02 + <_> + + 0 -1 6154 -4.7089671716094017e-03 + + -1.3351219892501831e-01 5.6296080350875854e-02 + <_> + + 0 -1 6155 -3.2688070088624954e-02 + + 2.7922388911247253e-01 -1.0867659933865070e-02 + <_> + + 0 -1 6156 8.8686197996139526e-02 + + 1.8268220126628876e-02 -3.5637390613555908e-01 + <_> + + 0 -1 6157 4.5751677826046944e-03 + + -5.1558461040258408e-02 6.3948810100555420e-02 + <_> + + 0 -1 6158 4.9765850417315960e-03 + + -5.4684590548276901e-02 1.1907110363245010e-01 + <_> + + 0 -1 6159 -6.4881290309131145e-03 + + -9.9121123552322388e-02 2.6508849114179611e-02 + <_> + + 0 -1 6160 2.4523450993001461e-03 + + -9.5045946538448334e-02 6.6802926361560822e-02 + <_> + + 0 -1 6161 7.0354789495468140e-03 + + 1.0705590248107910e-01 -6.2395099550485611e-02 + <_> + + 0 -1 6162 4.2746789753437042e-02 + + -1.6092179343104362e-02 4.3256199359893799e-01 + <_> + + 0 -1 6163 -4.5301730278879404e-04 + + 3.6420568823814392e-02 -9.9322892725467682e-02 + <_> + + 0 -1 6164 -5.2631930448114872e-03 + + -1.1416749656200409e-01 5.7260219007730484e-02 + <_> + + 0 -1 6165 1.0581909446045756e-03 + + 3.3220488578081131e-02 -1.1831220239400864e-01 + <_> + + 0 -1 6166 2.5088949128985405e-02 + + -6.0655020177364349e-02 1.2601740658283234e-01 + <_> + + 0 -1 6167 2.4252159893512726e-01 + + 2.2060840856283903e-03 -1.0000120401382446e+00 + <_> + + 0 -1 6168 -1.4393079280853271e-01 + + 3.7419798970222473e-01 -2.2252110764384270e-02 + <_> + + 0 -1 6169 -6.0972762294113636e-03 + + -1.1038099974393845e-01 4.5996960252523422e-02 + <_> + + 0 -1 6170 6.1375470831990242e-03 + + 3.8307808339595795e-02 -1.8086770176887512e-01 + <_> + + 0 -1 6171 -3.6617079749703407e-03 + + 3.8439918309450150e-02 -6.2540791928768158e-02 + <_> + + 0 -1 6172 -1.5854850411415100e-01 + + 3.4469398856163025e-01 -1.9837500527501106e-02 + <_> + + 0 -1 6173 6.7219287157058716e-02 + + 9.5165139064192772e-03 -5.0206458568572998e-01 + <_> + + 0 -1 6174 2.2499680053442717e-03 + + -1.3063929975032806e-01 6.4832933247089386e-02 + <_> + + 0 -1 6175 8.4626786410808563e-02 + + 5.9339799918234348e-03 -4.1516590118408203e-01 + <_> + + 0 -1 6176 -9.5411221263930202e-04 + + -9.3790747225284576e-02 7.5486607849597931e-02 + <_> + + 0 -1 6177 -7.6813949272036552e-03 + + -1.4821960031986237e-01 2.9010580852627754e-02 + <_> + + 0 -1 6178 -2.5593319907784462e-02 + + 1.4859579503536224e-01 -4.7195930033922195e-02 + <_> + + 0 -1 6179 2.1508369594812393e-02 + + 2.3782620206475258e-02 -9.6659287810325623e-02 + <_> + + 0 -1 6180 3.4463100135326385e-02 + + -3.7410069257020950e-02 2.2015300393104553e-01 + <_> + + 0 -1 6181 -3.7860300391912460e-02 + + -5.0047469139099121e-01 1.4059869572520256e-02 + <_> + + 0 -1 6182 1.2028450146317482e-03 + + -6.5087057650089264e-02 8.9583486318588257e-02 + <_> + + 0 -1 6183 1.6753520816564560e-02 + + 4.9179811030626297e-03 -4.3030908703804016e-01 + <_> + + 0 -1 6184 1.6640779795125127e-03 + + 4.0807429701089859e-02 -1.4469960331916809e-01 + <_> + + 0 -1 6185 3.4473428968340158e-03 + + -3.9910178631544113e-02 1.5272960066795349e-01 + <_> + + 0 -1 6186 8.9918142184615135e-03 + + 7.1071267127990723e-02 -8.6169913411140442e-02 + <_> + + 0 -1 6187 8.3185202674940228e-04 + + -2.5739189982414246e-01 1.7941089347004890e-02 + <_> + + 0 -1 6188 -6.8142730742692947e-03 + + 1.3823160529136658e-01 -5.3994540125131607e-02 + <_> + + 0 -1 6189 2.9746210202574730e-03 + + -4.1550260037183762e-02 3.9839770644903183e-02 + <_> + + 0 -1 6190 2.5836620479822159e-03 + + -7.0656493306159973e-02 9.5045506954193115e-02 + <_> + + 0 -1 6191 2.7143809711560607e-04 + + 5.8070071041584015e-02 -1.2781760096549988e-01 + <_> + + 0 -1 6192 3.5418298840522766e-01 + + 5.4909070022404194e-03 -9.7960698604583740e-01 + <_> + + 0 -1 6193 2.5318650528788567e-02 + + -1.4410969801247120e-02 2.6219129562377930e-01 + <_> + + 0 -1 6194 -2.2658439411316067e-04 + + 5.2997849881649017e-02 -1.1629349738359451e-01 + <_> + + 0 -1 6195 6.8859090097248554e-03 + + 1.6437310725450516e-02 -2.0349490642547607e-01 + <_> + + 0 -1 6196 1.1607459746301174e-02 + + -3.6651011556386948e-02 1.5184010565280914e-01 + <_> + + 0 -1 6197 -4.8253959976136684e-03 + + -2.3476150631904602e-01 3.7914011627435684e-02 + <_> + + 0 -1 6198 2.5656020734459162e-03 + + 3.5185638815164566e-02 -1.8540710210800171e-01 + <_> + + 0 -1 6199 1.2601399421691895e-01 + + -9.8542850464582443e-03 2.5520691275596619e-01 + <_> + + 0 -1 6200 2.7164958883076906e-03 + + -2.1748440340161324e-02 2.5467529892921448e-01 + <_> + + 0 -1 6201 3.2356029748916626e-01 + + 8.8657345622777939e-03 -7.0383572578430176e-01 + <_> + + 0 -1 6202 -8.4016058826819062e-04 + + 3.6831360310316086e-02 -1.4953260123729706e-01 + <_> + + 0 -1 6203 3.3291990403085947e-03 + + 4.8185840249061584e-02 -1.2290470302104950e-01 + <_> + + 0 -1 6204 2.1130539476871490e-01 + + 6.5245870500802994e-03 -8.8293862342834473e-01 + <_> + + 0 -1 6205 5.0388509407639503e-03 + + -6.7079946398735046e-02 3.7849709391593933e-02 + <_> + + 0 -1 6206 -2.7862399816513062e-02 + + 3.3469489216804504e-01 -1.8816500902175903e-02 + <_> + + 0 -1 6207 3.8636629469692707e-03 + + 4.3644730001688004e-02 -1.7481489479541779e-01 + <_> + + 0 -1 6208 1.0480300337076187e-01 + + -1.5737529844045639e-02 4.2094239592552185e-01 + <_> + + 0 -1 6209 -3.4130848944187164e-03 + + -1.0835570096969604e-01 4.3717790395021439e-02 + <_> + + 0 -1 6210 -4.6396970748901367e-02 + + -7.5680077075958252e-01 8.6701400578022003e-03 + <_> + + 0 -1 6211 5.3708078339695930e-03 + + -4.1797801852226257e-02 1.4824719727039337e-01 + <_> + + 0 -1 6212 -6.1126388609409332e-03 + + 1.8673719465732574e-01 -4.3387491255998611e-02 + <_> + + 0 -1 6213 4.2509321123361588e-02 + + 1.1690679937601089e-02 -4.3740659952163696e-01 + <_> + + 0 -1 6214 1.0473020374774933e-02 + + 4.3143630027770996e-02 -1.5654399991035461e-01 + <_> + + 0 -1 6215 -4.7223959118127823e-02 + + -7.4483537673950195e-01 3.4918629098683596e-03 + <_> + + 0 -1 6216 5.3090360015630722e-02 + + 1.0408150032162666e-02 -5.3499448299407959e-01 + <_> + + 0 -1 6217 -7.0432561915367842e-04 + + 3.3384170383214951e-02 -7.3706030845642090e-02 + <_> + + 0 -1 6218 7.5942431576550007e-03 + + -2.9107049107551575e-02 1.9468860328197479e-01 + <_> + + 0 -1 6219 2.2676989436149597e-02 + + 3.3803820610046387e-02 -2.7627611160278320e-01 + <_> + + 0 -1 6220 6.6533521749079227e-03 + + -2.6578240096569061e-02 2.4283319711685181e-01 + <_> + + 0 -1 6221 3.7712270859628916e-03 + + 2.6554299518465996e-02 -6.4952917397022247e-02 + <_> + + 0 -1 6222 -2.0740530453622341e-03 + + -1.7968970537185669e-01 3.1532160937786102e-02 + <_> + + 0 -1 6223 -1.5632519498467445e-03 + + 5.3109679371118546e-02 -8.7415628135204315e-02 + <_> + + 0 -1 6224 1.2540889903903008e-02 + + -3.4136459231376648e-02 2.2097539901733398e-01 + <_> + + 0 -1 6225 -3.2660199794918299e-03 + + -5.5261608213186264e-02 3.2669559121131897e-02 + <_> + + 0 -1 6226 -8.2185603678226471e-03 + + -1.4478379487991333e-01 5.5743928998708725e-02 + <_> + + 0 -1 6227 -5.5811040103435516e-02 + + 1.7237940430641174e-01 -1.4456519857048988e-02 + <_> + + 0 -1 6228 -1.4723159372806549e-01 + + -8.1392312049865723e-01 7.4356291443109512e-03 + <_> + + 0 -1 6229 -5.8468529023230076e-03 + + -6.9043442606925964e-02 1.9456790760159492e-02 + <_> + + 0 -1 6230 1.9462220370769501e-02 + + -3.5472229123115540e-02 1.6666300594806671e-01 + <_> + + 0 -1 6231 5.8353468775749207e-02 + + 3.0551329255104065e-03 -3.9289128780364990e-01 + <_> + + 0 -1 6232 4.3785829097032547e-02 + + 1.3574630022048950e-02 -4.6152359247207642e-01 + <_> + + 0 -1 6233 -5.1904350519180298e-02 + + 6.3802438974380493e-01 -9.6664745360612869e-03 + <_> + + 0 -1 6234 -7.7811058145016432e-04 + + -9.9303223192691803e-02 5.6094601750373840e-02 + <_> + + 0 -1 6235 4.9657518975436687e-03 + + 4.1419368237257004e-02 -1.1274819821119308e-01 + <_> + + 0 -1 6236 -5.4516079835593700e-03 + + 1.7399060726165771e-01 -4.1147731244564056e-02 + <_> + + 0 -1 6237 5.0428751856088638e-03 + + -4.1255220770835876e-02 1.3794229924678802e-01 + <_> + + 0 -1 6238 -1.6985220136120915e-03 + + -2.2874790430068970e-01 2.5274980813264847e-02 + <_> + + 0 -1 6239 8.2764238119125366e-02 + + 3.3066510222852230e-03 -6.9113439321517944e-01 + <_> + + 0 -1 6240 3.9285849779844284e-03 + + -7.9043358564376831e-02 6.6218852996826172e-02 + <_> + + 0 -1 6241 -3.0601240694522858e-02 + + -2.6517450809478760e-01 1.6467850655317307e-02 + <_> + + 0 -1 6242 -1.9941160455346107e-02 + + 1.5431809425354004e-01 -3.6100689321756363e-02 + <_> + + 0 -1 6243 8.0520063638687134e-02 + + 1.7015919089317322e-02 -3.3448880910873413e-01 + <_> + + 0 -1 6244 7.0323847234249115e-02 + + 1.7122440040111542e-02 -3.3302140235900879e-01 + <_> + + 0 -1 6245 -5.2850939333438873e-02 + + 6.2421400099992752e-02 -1.4690199866890907e-02 + <_> + + 0 -1 6246 -7.1594159817323089e-04 + + -1.1335150152444839e-01 5.2260790020227432e-02 + <_> + + 0 -1 6247 2.1469970047473907e-01 + + 9.9299731664359570e-04 -9.9997580051422119e-01 + <_> + + 0 -1 6248 8.7042592465877533e-02 + + -1.2329760007560253e-02 5.0260668992996216e-01 + <_> + + 0 -1 6249 -5.8731262106448412e-04 + + -9.9346466362476349e-02 5.1705610007047653e-02 + <_> + + 0 -1 6250 -4.4215220957994461e-02 + + -3.9368900656700134e-01 1.3920850120484829e-02 + <_> + + 0 -1 6251 -8.7676227092742920e-02 + + 3.0157440900802612e-01 -6.8702381104230881e-03 + <_> + + 0 -1 6252 -4.8453990370035172e-02 + + 2.5477871298789978e-01 -2.2457750514149666e-02 + <_> + + 0 -1 6253 -2.1567570511251688e-03 + + -1.3562899827957153e-01 3.1725399196147919e-02 + <_> + + 0 -1 6254 3.9050900377333164e-03 + + 4.9100890755653381e-02 -1.1861059814691544e-01 + <_> + + 0 -1 6255 -3.9808028377592564e-03 + + 4.8333909362554550e-02 -5.5897079408168793e-02 + <_> + + 0 -1 6256 2.9744929634034634e-03 + + -6.4802452921867371e-02 9.3583501875400543e-02 + <_> + + 0 -1 6257 2.5875229388475418e-02 + + 1.8487609922885895e-02 -3.3436349034309387e-01 + <_> + + 0 -1 6258 -1.9373580580577254e-03 + + 2.2000649571418762e-01 -2.5404980406165123e-02 + <_> + + 0 -1 6259 -2.0171629264950752e-02 + + -7.8228309750556946e-02 4.5462790876626968e-02 + <_> + + 0 -1 6260 -2.6088140904903412e-02 + + 1.7637069523334503e-01 -4.5097298920154572e-02 + <_> + + 0 -1 6261 -2.6868300512433052e-02 + + -3.2656419277191162e-01 1.7994230613112450e-02 + <_> + + 0 -1 6262 -7.0211151614785194e-04 + + 3.9671998471021652e-02 -1.4533540606498718e-01 + <_> + + 0 -1 6263 8.3507681265473366e-03 + + -2.3051729425787926e-02 1.8850760161876678e-01 + <_> + + 0 -1 6264 4.6823569573462009e-03 + + 2.9996560886502266e-02 -2.0701029896736145e-01 + <_> + + 0 -1 6265 3.3109660726040602e-03 + + 5.6536730378866196e-02 -1.6835589706897736e-01 + <_> + + 0 -1 6266 7.6425541192293167e-03 + + -4.1423950344324112e-02 1.2557519972324371e-01 + <_> + + 0 -1 6267 -2.4713110178709030e-03 + + 7.2156153619289398e-02 -1.0767730325460434e-01 + <_> + + 0 -1 6268 -9.9495360627770424e-03 + + -1.8187619745731354e-01 3.3567231148481369e-02 + <_> + + 0 -1 6269 1.9820800516754389e-03 + + -5.6488718837499619e-02 1.0741490125656128e-01 + <_> + + 0 -1 6270 2.3254439234733582e-02 + + -1.6543349251151085e-02 3.6466678977012634e-01 + <_> + + 0 -1 6271 -5.4177921265363693e-02 + + -1. 3.3418419770896435e-03 + <_> + + 0 -1 6272 6.1567849479615688e-04 + + 4.0159329771995544e-02 -1.6460220515727997e-01 + <_> + + 0 -1 6273 -4.2699510231614113e-03 + + -5.6978620588779449e-02 4.4480901211500168e-02 + <_> + + 0 -1 6274 1.9749389030039310e-03 + + 5.9283681213855743e-02 -1.0791260004043579e-01 + <_> + + 0 -1 6275 -5.8583128266036510e-03 + + 1.3734050095081329e-01 -3.4231521189212799e-02 + <_> + + 0 -1 6276 -7.2995189111679792e-04 + + -1.0075060278177261e-01 5.4733160883188248e-02 + <_> + + 0 -1 6277 -2.9930740594863892e-02 + + 6.3882559537887573e-02 -4.1027020663022995e-02 + <_> + + 0 -1 6278 -5.1738750189542770e-02 + + -7.2713458538055420e-01 7.4993381276726723e-03 + <_> + + 0 -1 6279 2.4021189659833908e-02 + + 7.8491801396012306e-03 -5.5794471502304077e-01 + <_> + + 0 -1 6280 -3.7574321031570435e-03 + + -1.6086879372596741e-01 3.1015990301966667e-02 + <_> + + 0 -1 6281 -6.2635682523250580e-02 + + 9.0577863156795502e-02 -2.9033770784735680e-02 + <_> + + 0 -1 6282 1.9363429397344589e-02 + + -4.9920588731765747e-02 1.2835779786109924e-01 + <_> + + 0 -1 6283 -3.5072889178991318e-02 + + 2.1391840279102325e-01 -8.8168960064649582e-03 + <_> + + 0 -1 6284 -1.3243310153484344e-02 + + 2.3349699378013611e-01 -2.3088019341230392e-02 + <_> + + 0 -1 6285 -3.1290829181671143e-02 + + -6.9495099782943726e-01 9.3020889908075333e-03 + <_> + + 0 -1 6286 7.2391419671475887e-03 + + 2.8485849499702454e-02 -1.8310770392417908e-01 + <_> + + 0 -1 6287 6.6785318776965141e-03 + + -4.9132950603961945e-02 5.4181691259145737e-02 + <_> + + 0 -1 6288 -3.6825571209192276e-02 + + 3.3120208978652954e-01 -2.1359929814934731e-02 + <_> + + 0 -1 6289 -4.5507341623306274e-02 + + -1.2893490493297577e-01 4.9545988440513611e-02 + <_> + + 0 -1 6290 7.7639957889914513e-03 + + -3.6255620419979095e-02 1.5321409702301025e-01 + <_> + + 0 -1 6291 6.0417611151933670e-02 + + 4.5740022324025631e-03 -6.7541092634201050e-01 + <_> + + 0 -1 6292 2.4624960497021675e-03 + + 5.3674161434173584e-02 -1.1326540261507034e-01 + <_> + + 0 -1 6293 7.3594506829977036e-05 + + -3.5648930817842484e-02 2.5458969175815582e-02 + <_> + + 0 -1 6294 -4.0958370082080364e-03 + + 1.5562909841537476e-01 -3.9390601217746735e-02 + <_> + + 0 -1 6295 2.8689370083156973e-05 + + -8.4823302924633026e-02 3.8254238665103912e-02 + <_> + + 0 -1 6296 -4.6220528893172741e-03 + + -1.8994529545307159e-01 3.3508758991956711e-02 + <_> + + 0 -1 6297 -8.5343196988105774e-03 + + 1.1212539672851562e-01 -3.3968489617109299e-02 + <_> + + 0 -1 6298 -5.8803848922252655e-02 + + -5.1244312524795532e-01 1.0789549909532070e-02 + <_> + + 0 -1 6299 6.0719929635524750e-02 + + -1.2555030174553394e-02 2.2509759664535522e-01 + <_> + + 0 -1 6300 1.1038020020350814e-03 + + -9.6294492483139038e-02 5.6727480143308640e-02 + <_> + + 0 -1 6301 -3.8484560791403055e-03 + + 4.0573459118604660e-02 -2.5326859205961227e-02 + <_> + + 0 -1 6302 -1.0771050117909908e-02 + + 8.8735632598400116e-02 -5.5628679692745209e-02 + <_> + + 0 -1 6303 1.2016809545457363e-02 + + 2.3566279560327530e-02 -2.4590580165386200e-01 + <_> + + 0 -1 6304 -1.1656560236588120e-03 + + -3.7417300045490265e-02 1.6503289341926575e-01 + <_> + + 0 -1 6305 3.2137628644704819e-02 + + 1.4245970174670219e-02 -2.6480850577354431e-01 + <_> + + 0 -1 6306 2.3331670090556145e-02 + + -3.5288721323013306e-02 1.8447829782962799e-01 + <_> + + 0 -1 6307 -1.2685320340096951e-02 + + -1.1757309734821320e-01 1.6436910256743431e-02 + <_> + + 0 -1 6308 7.3903938755393028e-05 + + -1.0271479934453964e-01 7.4301436543464661e-02 + <_> + + 0 -1 6309 -1.0925470292568207e-01 + + -8.3165317773818970e-01 5.6438110768795013e-03 + <_> + + 0 -1 6310 -1.3324350118637085e-01 + + 7.7729821205139160e-01 -8.3403270691633224e-03 + <_> + + 0 -1 6311 8.9381448924541473e-04 + + -5.9524301439523697e-02 4.1173089295625687e-02 + <_> + + 0 -1 6312 1.0318649932742119e-02 + + 1.5926430001854897e-02 -3.1637790799140930e-01 + <_> + + 0 -1 6313 -5.2297548390924931e-03 + + -7.1166560053825378e-02 3.3489290624856949e-02 + <_> + + 0 -1 6314 1.6409620642662048e-02 + + -2.6454120874404907e-02 1.9589969515800476e-01 + <_> + + 0 -1 6315 1.4068709686398506e-02 + + -3.9364140480756760e-02 1.3977420330047607e-01 + <_> + + 0 -1 6316 6.6486410796642303e-03 + + 6.4070828258991241e-02 -1.0493399947881699e-01 + <_> + + 0 -1 6317 -1.8030619248747826e-02 + + 8.3942912518978119e-02 -1.3399159535765648e-02 + <_> + + 0 -1 6318 -4.4034369289875031e-02 + + -5.5825459957122803e-01 9.7633162513375282e-03 + <_> + + 0 -1 6319 -8.0966893583536148e-03 + + -2.0489789545536041e-01 2.6520200073719025e-02 + <_> + + 0 -1 6320 5.0180461257696152e-03 + + -1.1661209911108017e-01 4.5791670680046082e-02 + <_> + + 0 -1 6321 -1.7064629122614861e-02 + + 2.6282730698585510e-01 -2.0390639081597328e-02 + <_> + + 0 -1 6322 7.1850173175334930e-02 + + -6.9503681734204292e-03 6.7032539844512939e-01 + <_> + + 0 -1 6323 -5.6914370507001877e-02 + + -1.3477900624275208e-01 1.8399080261588097e-02 + <_> + + 0 -1 6324 -3.2365729566663504e-03 + + 6.9673851132392883e-02 -7.2314530611038208e-02 + <_> + + 0 -1 6325 4.1818909347057343e-02 + + 1.1151459999382496e-02 -5.1680111885070801e-01 + <_> + + 0 -1 6326 -6.1106588691473007e-03 + + -1.3163940608501434e-01 4.3796509504318237e-02 + <_> + + 0 -1 6327 -3.5560909658670425e-02 + + 6.8005502223968506e-02 -3.6331020295619965e-02 + <_> + + 0 -1 6328 6.8789169192314148e-02 + + 1.4698959887027740e-02 -3.8212299346923828e-01 + <_> + + 0 -1 6329 -7.8313373029232025e-02 + + 2.0296069979667664e-01 -8.6810020729899406e-03 + <_> + + 0 -1 6330 3.9626220241189003e-03 + + -3.5797890275716782e-02 1.3905510306358337e-01 + <_> + + 0 -1 6331 -3.3874038606882095e-02 + + -2.2253429889678955e-01 7.5455638580024242e-03 + <_> + + 0 -1 6332 -6.4755856990814209e-02 + + 4.7521549463272095e-01 -1.0970680043101311e-02 + <_> + + 0 -1 6333 2.6647940278053284e-02 + + 1.5445309691131115e-02 -2.6785778999328613e-01 + <_> + + 0 -1 6334 -3.0731109902262688e-02 + + -4.7668689489364624e-01 9.6429884433746338e-03 + <_> + + 0 -1 6335 -2.4022700265049934e-02 + + -1.0633960366249084e-01 1.2849040329456329e-02 + <_> + + 0 -1 6336 -1.3036349555477500e-03 + + 7.3524177074432373e-02 -6.8074919283390045e-02 + <_> + + 0 -1 6337 -9.8344050347805023e-03 + + -1.1843550205230713e-01 4.2866699397563934e-02 + <_> + + 0 -1 6338 8.7102197110652924e-02 + + -4.0088258683681488e-02 1.7804540693759918e-01 + <_> + + 0 -1 6339 2.0411569625139236e-02 + + 1.6849989071488380e-02 -3.8953658938407898e-01 + <_> + + 0 -1 6340 9.5875263214111328e-02 + + 5.9905550442636013e-03 -8.1525659561157227e-01 + <_> + + 0 -1 6341 6.4893220551311970e-03 + + -2.4039229378104210e-02 5.3871169686317444e-02 + <_> + + 0 -1 6342 -9.6279237186536193e-04 + + 9.4299189746379852e-02 -6.4436018466949463e-02 + <_> + + 0 -1 6343 -3.7659960798919201e-04 + + -6.2296878546476364e-02 4.1251849383115768e-02 + <_> + + 0 -1 6344 6.5272641368210316e-03 + + 5.1325131207704544e-02 -1.3037790358066559e-01 + <_> + + 0 -1 6345 2.1429110318422318e-02 + + -1.1989659629762173e-02 2.6280459761619568e-01 + <_> + + 0 -1 6346 -5.0938720814883709e-03 + + 6.3418947160243988e-02 -9.0566337108612061e-02 + <_> + + 0 -1 6347 -2.5309680495411158e-03 + + 6.0297761112451553e-02 -2.5049470365047455e-02 + <_> + + 0 -1 6348 -1.5915350522845984e-03 + + -1.2171190232038498e-01 3.7737991660833359e-02 + <_> + + 0 -1 6349 -3.4030709415674210e-02 + + 4.6413430571556091e-01 -3.5409750416874886e-03 + <_> + + 0 -1 6350 5.1074200309813023e-03 + + 3.9823830127716064e-02 -1.2645539641380310e-01 + <_> + + 0 -1 6351 -9.6449116244912148e-03 + + 3.3464258909225464e-01 -6.6040740348398685e-03 + <_> + + 0 -1 6352 1.1422860436141491e-02 + + -3.6080420017242432e-02 1.3714550435543060e-01 + <_> + + 0 -1 6353 -5.1042139530181885e-03 + + -9.3986809253692627e-02 2.8844779357314110e-02 + <_> + + 0 -1 6354 -2.6332271099090576e-01 + + 4.9980929493904114e-01 -1.0173249989748001e-02 + <_> + + 0 -1 6355 -2.4556639790534973e-01 + + -8.1778347492218018e-01 6.9596339017152786e-03 + <_> + + 0 -1 6356 -2.1419329941272736e-01 + + -5.1040518283843994e-01 9.4540230929851532e-03 + <_> + + 0 -1 6357 -1.4363219961524010e-02 + + -9.1000981628894806e-02 2.4646669626235962e-02 + <_> + + 0 -1 6358 -1.2388969771564007e-03 + + 1.1544570326805115e-01 -4.9565620720386505e-02 + <_> + + 0 -1 6359 2.1015120670199394e-02 + + -1.7765879631042480e-02 1.9577859342098236e-01 + <_> + + 0 -1 6360 -4.1783051565289497e-03 + + -1.1172860115766525e-01 4.4625449925661087e-02 + <_> + + 0 -1 6361 2.0896939095109701e-03 + + -3.3988729119300842e-02 6.5539501607418060e-02 + <_> + + 0 -1 6362 1.6410060226917267e-02 + + -2.0373269915580750e-02 2.5331538915634155e-01 + <_> + + 0 -1 6363 -6.4266882836818695e-02 + + -6.5880149602890015e-01 3.4550630953162909e-03 + <_> + + 0 -1 6364 6.8898178869858384e-04 + + 6.7643247544765472e-02 -8.7556242942810059e-02 + <_> + + 0 -1 6365 5.6662331335246563e-03 + + 3.0638309195637703e-02 -1.1895540356636047e-01 + <_> + + 0 -1 6366 -4.3778121471405029e-02 + + -2.8309130668640137e-01 1.7713630571961403e-02 + <_> + + 0 -1 6367 3.4748481120914221e-03 + + -9.5787122845649719e-02 4.2630400508642197e-02 + <_> + + 0 -1 6368 -1.1673940345644951e-02 + + -1.0502570122480392e-01 5.0903890281915665e-02 + <_> + + 0 -1 6369 -3.4004659391939640e-03 + + 1.0470719635486603e-01 -4.0939141064882278e-02 + <_> + + 0 -1 6370 2.7091780211776495e-03 + + -6.0524601489305496e-02 1.3978950679302216e-01 + <_> + + 0 -1 6371 -1.7439300194382668e-02 + + -3.2391169667243958e-01 1.4630249701440334e-02 + <_> + + 0 -1 6372 -1.2598330155014992e-02 + + -2.0682629942893982e-01 2.5501869618892670e-02 + <_> + + 0 -1 6373 1.8755869939923286e-02 + + -4.7925960272550583e-02 1.0864380002021790e-01 + <_> + + 0 -1 6374 -4.2074159719049931e-03 + + -8.2077808678150177e-02 6.3647769391536713e-02 + <_> + + 0 -1 6375 -1.6427719674538821e-04 + + 1.0120390355587006e-01 -3.4067928791046143e-02 + <_> + + 0 -1 6376 4.3847691267728806e-02 + + 6.0980222187936306e-03 -8.3685982227325439e-01 + <_> + + 0 -1 6377 -3.9284680038690567e-02 + + 2.8250560164451599e-01 -2.2389259189367294e-02 + <_> + + 0 -1 6378 3.8550909608602524e-02 + + 1.5570489689707756e-02 -3.3978620171546936e-01 + <_> + + 0 -1 6379 -6.9177031517028809e-02 + + 1.2258320301771164e-01 -1.7850179225206375e-02 + <_> + + 0 -1 6380 -1.9251030171290040e-03 + + -1.0687749832868576e-01 4.6379510313272476e-02 + <_> + + 0 -1 6381 -8.6635202169418335e-03 + + 9.6412748098373413e-02 -1.7563249915838242e-02 + <_> + + 0 -1 6382 1.3393509387969971e-01 + + 6.3692941330373287e-03 -7.0170587301254272e-01 + <_> + + 0 -1 6383 4.1082348674535751e-02 + + -1.1077569797635078e-02 1.3463750481605530e-01 + <_> + + 0 -1 6384 1.4911450445652008e-01 + + 9.5263421535491943e-03 -5.0872552394866943e-01 + <_> + + 0 -1 6385 -5.2500818856060505e-03 + + 7.0025578141212463e-02 -4.2880270630121231e-02 + <_> + + 0 -1 6386 2.2823570296168327e-02 + + -4.1884049773216248e-02 1.1770319938659668e-01 + <_> + + 0 -1 6387 -8.5306530818343163e-03 + + 6.1222139745950699e-02 -2.4944549426436424e-02 + <_> + + 0 -1 6388 1.1971729807555676e-02 + + 3.9662770926952362e-02 -1.6267740726470947e-01 + <_> + + 0 -1 6389 -3.8938269019126892e-02 + + 2.5743520259857178e-01 -1.6356239095330238e-02 + <_> + + 0 -1 6390 -2.1706389263272285e-02 + + -3.1998679041862488e-01 1.7135290428996086e-02 + <_> + + 0 -1 6391 6.6900630481541157e-03 + + 2.6101849973201752e-02 -1.0980729758739471e-01 + <_> + + 0 -1 6392 -7.2270832955837250e-02 + + 1.9431130588054657e-01 -2.6044359430670738e-02 + <_> + + 0 -1 6393 -6.7073688842356205e-03 + + -1.7747850716114044e-01 4.5862998813390732e-02 + <_> + + 0 -1 6394 5.5019360035657883e-02 + + -8.3471573889255524e-03 6.0511541366577148e-01 + <_> + + 0 -1 6395 1.3142649829387665e-01 + + -5.7535418309271336e-03 2.9167538881301880e-01 + <_> + + 0 -1 6396 -1.6564460238441825e-03 + + 7.0003032684326172e-02 -6.2690876424312592e-02 + <_> + + 0 -1 6397 1.5445409715175629e-01 + + 6.1896732077002525e-03 -7.4323302507400513e-01 + <_> + + 0 -1 6398 -5.0357519648969173e-03 + + -1.1333289742469788e-01 3.8741771131753922e-02 + <_> + + 0 -1 6399 2.2772569209337234e-03 + + -1.1340530216693878e-01 2.1319400519132614e-02 + <_> + + 0 -1 6400 3.3173530828207731e-03 + + 4.4273331761360168e-02 -1.0459829866886139e-01 + <_> + + 0 -1 6401 -2.9692800715565681e-02 + + 9.2483766376972198e-02 -2.3342609405517578e-02 + <_> + + 0 -1 6402 6.2937840819358826e-02 + + -1.2998280115425587e-02 3.8887938857078552e-01 + <_> + + 0 -1 6403 3.6641359329223633e-03 + + 3.2099820673465729e-02 -3.9647988975048065e-02 + <_> + + 0 -1 6404 4.4782999902963638e-03 + + -4.5701328665018082e-02 1.0697010159492493e-01 + <_> + + 0 -1 6405 1.8147319788113236e-03 + + -3.2871820032596588e-02 1.0647939890623093e-01 + <_> + + 0 -1 6406 4.8941639252007008e-03 + + 2.7911009266972542e-02 -2.1725590527057648e-01 + <_> + + 0 -1 6407 -4.4425828382372856e-03 + + -1.3470150530338287e-01 1.0781410150229931e-02 + <_> + + 0 -1 6408 -2.5493400171399117e-02 + + 6.8371468782424927e-01 -7.7452720142900944e-03 + <_> + + 0 -1 6409 2.7835449203848839e-02 + + 2.4144299328327179e-02 -1.5170599520206451e-01 + <_> + + 0 -1 6410 7.5548859313130379e-03 + + -4.7643400728702545e-02 1.1925770342350006e-01 + <_> + + 0 -1 6411 1.0329609736800194e-02 + + 1.8646810203790665e-02 -1.6122570633888245e-01 + <_> + + 0 -1 6412 -1.2393389828503132e-02 + + 6.0304921865463257e-01 -7.7566630207002163e-03 + <_> + + 0 -1 6413 1.3833769597113132e-02 + + -2.7617299929261208e-02 5.1266878843307495e-02 + <_> + + 0 -1 6414 -2.5669319555163383e-02 + + 2.3801359534263611e-01 -2.3971909657120705e-02 + <_> + + 0 -1 6415 -5.2043660543859005e-03 + + -1.0721790045499802e-01 2.6645049452781677e-02 + <_> + + 0 -1 6416 3.4628969151526690e-03 + + 5.4313410073518753e-02 -1.3458320498466492e-01 + <_> + + 0 -1 6417 -1.9220679998397827e-02 + + 7.2996392846107483e-02 -4.0652111172676086e-02 + <_> + + 0 -1 6418 -2.5009829550981522e-03 + + -7.7671296894550323e-02 5.9096541255712509e-02 + <_> + + 0 -1 6419 -8.5285156965255737e-03 + + 4.9050811678171158e-02 -6.4078353345394135e-02 + <_> + + 0 -1 6420 4.3327538296580315e-03 + + 2.5221010670065880e-02 -1.9358980655670166e-01 + <_> + + 0 -1 6421 3.6595970392227173e-02 + + -1.6262590885162354e-02 1.5651239454746246e-01 + <_> + + 0 -1 6422 -1.1795730097219348e-03 + + -7.2468072175979614e-02 7.0449486374855042e-02 + <_> + + 0 -1 6423 -1.3975829817354679e-02 + + -1.1789470165967941e-01 2.1292049437761307e-02 + <_> + + 0 -1 6424 -1.3828700175508857e-03 + + 7.9283542931079865e-02 -9.5104120671749115e-02 + <_> + + 0 -1 6425 -2.9435830656439066e-03 + + 7.0368431508541107e-02 -3.3217910677194595e-02 + <_> + + 0 -1 6426 9.5262555405497551e-03 + + -2.9733620584011078e-02 1.6670459508895874e-01 + <_> + + 0 -1 6427 -9.0114273130893707e-02 + + -1.6625370085239410e-01 8.6199166253209114e-03 + <_> + + 0 -1 6428 -1.2089919764548540e-03 + + 8.1083856523036957e-02 -7.3029123246669769e-02 + <_> + + 0 -1 6429 -1.4199960231781006e-01 + + -1. 2.2284830920398235e-03 + <_> + + 0 -1 6430 8.0690719187259674e-03 + + 4.7412220388650894e-02 -1.0178930312395096e-01 + <_> + + 0 -1 6431 -4.7410889528691769e-03 + + 1.2051119655370712e-01 -4.9957480281591415e-02 + <_> + + 0 -1 6432 -1.6977200284600258e-03 + + -2.4171440303325653e-01 1.9534369930624962e-02 + <_> + + 0 -1 6433 -2.8892089612782001e-03 + + 2.5727990269660950e-01 -1.1625059880316257e-02 + <_> + + 0 -1 6434 -1.5177440363913774e-03 + + -9.8784193396568298e-02 4.6706128865480423e-02 + <_> + + 0 -1 6435 1.4197319746017456e-01 + + -2.5096370372921228e-03 7.5450611114501953e-01 + <_> + + 0 -1 6436 9.7517937421798706e-02 + + -6.9059049710631371e-03 6.5184432268142700e-01 + <_> + + 0 -1 6437 1.3567379675805569e-02 + + -7.6325193047523499e-02 8.8054582476615906e-02 + <_> + + 0 -1 6438 8.0981463193893433e-02 + + 1.5558109618723392e-02 -3.4601628780364990e-01 + <_> + + 0 -1 6439 -4.7192731872200966e-03 + + 8.1620022654533386e-02 -4.6072289347648621e-02 + <_> + + 0 -1 6440 2.0368969999253750e-03 + + -4.4817630201578140e-02 1.2861390411853790e-01 + <_> + + 0 -1 6441 -1.7878509825095534e-03 + + 4.3731331825256348e-02 -4.4995948672294617e-02 + <_> + + 0 -1 6442 -7.1685528382658958e-03 + + -1.3597999513149261e-01 3.8796991109848022e-02 + <_> + + 0 -1 6443 -6.7460887134075165e-02 + + -2.9265740513801575e-01 3.5135280340909958e-03 + <_> + + 0 -1 6444 -1.5598500147461891e-02 + + 2.3105660080909729e-01 -2.2405069321393967e-02 + <_> + + 0 -1 6445 -2.1026479080319405e-02 + + -1.5283830463886261e-01 3.1531449407339096e-02 + <_> + + 0 -1 6446 -1.0558360069990158e-01 + + -6.8366038799285889e-01 6.8997950293123722e-03 + <_> + + 0 -1 6447 -3.6966579500585794e-03 + + 3.4315150231122971e-02 -4.8922799527645111e-02 + <_> + + 0 -1 6448 -6.0826627304777503e-04 + + -5.2638430148363113e-02 8.9546948671340942e-02 + <_> + + 0 -1 6449 -2.8936540707945824e-02 + + 4.1818480938673019e-02 -1.3818169943988323e-02 + <_> + + 0 -1 6450 -5.8082528412342072e-03 + + 6.7874796688556671e-02 -8.5578799247741699e-02 + <_> + + 0 -1 6451 -4.6095378696918488e-02 + + -1.2584780156612396e-01 2.0466970279812813e-02 + <_> + + 0 -1 6452 5.2972920238971710e-02 + + -1.2453259900212288e-02 3.4565049409866333e-01 + <_> + + 0 -1 6453 4.9351599067449570e-02 + + 1.0901239700615406e-02 -4.8506981134414673e-01 + <_> + + 0 -1 6454 4.4377800077199936e-02 + + 9.9294837564229965e-03 -4.3877899646759033e-01 + <_> + + 0 -1 6455 -1.1464890092611313e-01 + + 2.6874598860740662e-01 -9.2000560835003853e-03 + <_> + + 0 -1 6456 1.6887830197811127e-01 + + 5.7101310230791569e-03 -8.5972881317138672e-01 + <_> + + 0 -1 6457 5.1198098808526993e-02 + + -8.5723921656608582e-03 1.3395169377326965e-01 + <_> + + 0 -1 6458 -3.0789880547672510e-03 + + -1.0338760167360306e-01 4.3459478765726089e-02 + <_> + + 0 -1 6459 4.7223128378391266e-02 + + 8.1934239715337753e-03 -4.3803408741950989e-01 + <_> + + 0 -1 6460 -7.6270569115877151e-03 + + 1.8713890016078949e-01 -2.4660250172019005e-02 + <_> + + 0 -1 6461 5.4106907919049263e-03 + + 4.1099831461906433e-02 -7.8868232667446136e-02 + <_> + + 0 -1 6462 -1.4900229871273041e-03 + + -2.0115040242671967e-01 3.1898159533739090e-02 + <_> + + 0 -1 6463 -8.3831608295440674e-02 + + 5.8017939329147339e-01 -5.2973427809774876e-03 + <_> + + 0 -1 6464 6.2233800999820232e-03 + + -3.9786059409379959e-02 1.2283950299024582e-01 + <_> + + 0 -1 6465 1.1475080251693726e-01 + + -1.1975419707596302e-02 2.1586710214614868e-01 + <_> + + 0 -1 6466 -1.5253260498866439e-03 + + 1.3804529607295990e-01 -3.9941880851984024e-02 + <_> + + 0 -1 6467 -5.2878521382808685e-03 + + -1.2790650129318237e-01 3.2893560826778412e-02 + <_> + + 0 -1 6468 8.9670647867023945e-04 + + -1.2481059879064560e-01 4.4544249773025513e-02 + <_> + + 0 -1 6469 3.8421660661697388e-02 + + 7.7155791223049164e-03 -6.5575468540191650e-01 + <_> + + 0 -1 6470 -9.3785318313166499e-04 + + 5.5608510971069336e-02 -8.9876912534236908e-02 + <_> + + 0 -1 6471 1.9965849351137877e-03 + + -2.5297610089182854e-02 1.9413180649280548e-01 + <_> + + 0 -1 6472 4.5782068627886474e-04 + + 3.9089199155569077e-02 -1.2908570468425751e-01 + <_> + + 0 -1 6473 3.8373940624296665e-03 + + -2.8748869895935059e-02 1.9429750740528107e-01 + <_> + + 0 -1 6474 3.7142829387448728e-04 + + 3.8272358477115631e-02 -1.3759189844131470e-01 + <_> + + 0 -1 6475 7.5116259977221489e-03 + + -1.4461129903793335e-02 1.2656949460506439e-01 + <_> + + 0 -1 6476 -5.0362840294837952e-02 + + 3.5183578729629517e-01 -1.4051860198378563e-02 + <_> + + 0 -1 6477 3.9921641349792480e-02 + + 2.7280429378151894e-02 -1.9958199560642242e-01 + <_> + + 0 -1 6478 2.2605259716510773e-01 + + -6.8001961335539818e-03 7.3006898164749146e-01 + <_> + + 0 -1 6479 1.1081779748201370e-01 + + 4.3370737694203854e-03 -8.6829161643981934e-01 + <_> + + 0 -1 6480 -9.7494889050722122e-03 + + -6.3740663230419159e-02 8.4537997841835022e-02 + <_> + + 0 -1 6481 -2.2887689992785454e-03 + + 9.9654018878936768e-02 -4.1565418243408203e-02 + <_> + + 0 -1 6482 2.0008319988846779e-03 + + -5.5650699883699417e-02 1.0709869861602783e-01 + <_> + + 0 -1 6483 -1.5160050243139267e-02 + + -1.4098760485649109e-01 3.8741599768400192e-02 + <_> + + 0 -1 6484 -6.3132969662547112e-03 + + -1. 4.4605308212339878e-03 + <_> + + 0 -1 6485 -1.3970009982585907e-02 + + 1.2481089681386948e-01 -2.1425830200314522e-02 + <_> + + 0 -1 6486 -4.4321279972791672e-02 + + -5.3340071439743042e-01 1.0165239684283733e-02 + <_> + + 0 -1 6487 1.4885979471728206e-03 + + -4.8868600279092789e-02 3.6077901721000671e-02 + <_> + + 0 -1 6488 6.5139681100845337e-02 + + 7.6331058517098427e-03 -5.8781641721725464e-01 + <_> + + 0 -1 6489 -2.0741410553455353e-02 + + -2.9658278822898865e-01 1.8622800707817078e-02 + <_> + 396 + -1.2181390523910522e+00 + + <_> + + 0 -1 6490 1.3575689867138863e-02 + + -1.4249590039253235e-01 2.3337620496749878e-01 + <_> + + 0 -1 6491 -7.5882389210164547e-03 + + 8.6464479565620422e-02 -2.3954319953918457e-01 + <_> + + 0 -1 6492 4.2986529879271984e-03 + + 5.0282090902328491e-02 -3.5250121355056763e-01 + <_> + + 0 -1 6493 -1.9793119281530380e-02 + + -1.6827470064163208e-01 4.3712720274925232e-02 + <_> + + 0 -1 6494 6.6613829694688320e-03 + + -2.0371539890766144e-01 7.1225747466087341e-02 + <_> + + 0 -1 6495 3.2715050037950277e-03 + + 5.4536718875169754e-02 -2.2428829967975616e-01 + <_> + + 0 -1 6496 -3.6143321543931961e-02 + + 5.5044889450073242e-01 -2.3597210645675659e-02 + <_> + + 0 -1 6497 3.1145319808274508e-03 + + 2.2049430757761002e-02 -3.0109429359436035e-01 + <_> + + 0 -1 6498 8.9540961198508739e-04 + + -1.2279850244522095e-01 1.0751420259475708e-01 + <_> + + 0 -1 6499 8.0573331797495484e-04 + + -8.7587781250476837e-02 5.4632049053907394e-02 + <_> + + 0 -1 6500 -6.5726130269467831e-03 + + -1.5649870038032532e-01 7.6560758054256439e-02 + <_> + + 0 -1 6501 2.2269350010901690e-03 + + 2.9490780085325241e-02 -5.9210199862718582e-02 + <_> + + 0 -1 6502 6.2076752074062824e-03 + + 7.5727343559265137e-02 -1.7675329744815826e-01 + <_> + + 0 -1 6503 6.0021011158823967e-03 + + -7.8353807330131531e-02 1.4492890238761902e-01 + <_> + + 0 -1 6504 1.1996340006589890e-02 + + 2.8644030913710594e-02 -3.1982469558715820e-01 + <_> + + 0 -1 6505 6.7174229770898819e-03 + + -1.0739900171756744e-01 1.3106329739093781e-01 + <_> + + 0 -1 6506 5.7567027397453785e-04 + + -6.4126797020435333e-02 1.6293540596961975e-01 + <_> + + 0 -1 6507 3.9552329108119011e-03 + + 3.7347421050071716e-02 -1.5253570675849915e-01 + <_> + + 0 -1 6508 1.5598450554534793e-03 + + -9.8687313497066498e-02 9.8718203604221344e-02 + <_> + + 0 -1 6509 -8.4324590861797333e-03 + + 2.0905649662017822e-01 -6.0484018176794052e-02 + <_> + + 0 -1 6510 8.7580326944589615e-03 + + 5.0603430718183517e-02 -2.1845470368862152e-01 + <_> + + 0 -1 6511 -1.1965750157833099e-01 + + 2.6711589097976685e-01 -7.4574039317667484e-03 + <_> + + 0 -1 6512 2.0653149113059044e-03 + + 3.5194810479879379e-02 -2.5230750441551208e-01 + <_> + + 0 -1 6513 -5.7491107145324349e-04 + + 8.2424223423004150e-02 -1.0830479860305786e-01 + <_> + + 0 -1 6514 -6.7591401748359203e-03 + + -1.3704189658164978e-01 7.0154368877410889e-02 + <_> + + 0 -1 6515 1.8210740759968758e-02 + + -2.5407770648598671e-02 1.0123729705810547e-01 + <_> + + 0 -1 6516 -8.8006846606731415e-02 + + 3.6638718843460083e-01 -3.0893180519342422e-02 + <_> + + 0 -1 6517 -4.4944360852241516e-03 + + -1.5753810107707977e-01 6.0070630162954330e-02 + <_> + + 0 -1 6518 -6.3741360791027546e-03 + + 2.1189889311790466e-01 -3.9567999541759491e-02 + <_> + + 0 -1 6519 -3.1097440049052238e-02 + + -5.9965521097183228e-01 9.9493442103266716e-03 + <_> + + 0 -1 6520 5.8496380224823952e-03 + + 2.8244689106941223e-02 -2.9778000712394714e-01 + <_> + + 0 -1 6521 -2.2763800807297230e-03 + + 1.0270419716835022e-01 -7.3711991310119629e-02 + <_> + + 0 -1 6522 3.9103049784898758e-03 + + 5.2445668727159500e-02 -2.0123919844627380e-01 + <_> + + 0 -1 6523 2.8906730003654957e-03 + + -2.1692280471324921e-01 3.7294570356607437e-02 + <_> + + 0 -1 6524 4.5904931612312794e-03 + + -8.1276580691337585e-02 1.1013159900903702e-01 + <_> + + 0 -1 6525 -3.4245800226926804e-02 + + -1.1541730165481567e-01 1.4384049922227859e-02 + <_> + + 0 -1 6526 -1.7881620442494750e-04 + + 6.2885977327823639e-02 -1.3267129659652710e-01 + <_> + + 0 -1 6527 -4.0114559233188629e-03 + + -1.8961720168590546e-01 3.6701768636703491e-02 + <_> + + 0 -1 6528 3.1429999507963657e-03 + + -4.9915120005607605e-02 1.7299769818782806e-01 + <_> + + 0 -1 6529 7.8082352876663208e-02 + + 4.7195390798151493e-03 -3.4015879034996033e-01 + <_> + + 0 -1 6530 2.0370949804782867e-01 + + -2.1733140572905540e-02 3.7422651052474976e-01 + <_> + + 0 -1 6531 9.7424820065498352e-02 + + -6.8117439514026046e-04 4.9639159440994263e-01 + <_> + + 0 -1 6532 -2.6366419624537230e-03 + + -1.8532100319862366e-01 4.3768830597400665e-02 + <_> + + 0 -1 6533 4.1020149365067482e-04 + + 2.7802910655736923e-02 -8.7706968188285828e-02 + <_> + + 0 -1 6534 -5.9666559100151062e-02 + + -5.6872707605361938e-01 1.3388640247285366e-02 + <_> + + 0 -1 6535 -5.1892381161451340e-03 + + 5.0499498844146729e-02 -1.4465869963169098e-01 + <_> + + 0 -1 6536 1.0377140343189240e-01 + + -1.8952060490846634e-02 4.1107979416847229e-01 + <_> + + 0 -1 6537 -1.4075759798288345e-02 + + -2.0367360115051270e-01 3.2513279467821121e-02 + <_> + + 0 -1 6538 -6.8877148441970348e-03 + + 1.2401729822158813e-01 -7.6617129147052765e-02 + <_> + + 0 -1 6539 2.9345849528908730e-02 + + 8.4471162408590317e-03 -3.4656980633735657e-01 + <_> + + 0 -1 6540 -8.3123557269573212e-03 + + -1.9180110096931458e-01 3.8585629314184189e-02 + <_> + + 0 -1 6541 6.4493268728256226e-02 + + -2.7158880606293678e-02 3.0217999219894409e-01 + <_> + + 0 -1 6542 8.0413377145305276e-04 + + -1.0444170236587524e-01 6.4721979200839996e-02 + <_> + + 0 -1 6543 -6.5569980069994926e-03 + + -1.0658600181341171e-01 2.5238489732146263e-02 + <_> + + 0 -1 6544 -3.8326930254697800e-02 + + -6.8506389856338501e-01 9.6486946567893028e-03 + <_> + + 0 -1 6545 -4.0327329188585281e-02 + + 1.9759850203990936e-01 -2.5184169411659241e-02 + <_> + + 0 -1 6546 6.1981407925486565e-03 + + 4.6415790915489197e-02 -1.7171670496463776e-01 + <_> + + 0 -1 6547 3.7465501576662064e-02 + + -1.5010279603302479e-02 8.6962252855300903e-02 + <_> + + 0 -1 6548 -6.0584479942917824e-03 + + 6.9242753088474274e-02 -9.4594202935695648e-02 + <_> + + 0 -1 6549 -1.4991699717938900e-02 + + -1.4969819784164429e-01 4.6579450368881226e-02 + <_> + + 0 -1 6550 6.4760357141494751e-02 + + -2.6089169085025787e-02 2.7072009444236755e-01 + <_> + + 0 -1 6551 5.9020328521728516e-01 + + 3.9715780876576900e-03 -6.3918071985244751e-01 + <_> + + 0 -1 6552 7.3892213404178619e-02 + + -6.2506332993507385e-02 1.3100719451904297e-01 + <_> + + 0 -1 6553 4.3928170204162598e-01 + + 5.0452877767384052e-03 -3.7628439068794250e-01 + <_> + + 0 -1 6554 1.0192040354013443e-01 + + 2.2053290158510208e-02 -3.3408200740814209e-01 + <_> + + 0 -1 6555 1.1084219813346863e-01 + + 1.6215540468692780e-02 -3.4900701045989990e-01 + <_> + + 0 -1 6556 5.5628088302910328e-03 + + -5.2196711301803589e-02 1.1796370148658752e-01 + <_> + + 0 -1 6557 -6.3897081417962909e-04 + + -1.5659700334072113e-01 4.4744450598955154e-02 + <_> + + 0 -1 6558 -3.5426639951765537e-03 + + 1.4490570127964020e-01 -4.2518708854913712e-02 + <_> + + 0 -1 6559 -3.3016160130500793e-02 + + -3.6942940950393677e-01 7.6470980420708656e-03 + <_> + + 0 -1 6560 9.6050858497619629e-02 + + 6.5154801122844219e-03 -8.7827038764953613e-01 + <_> + + 0 -1 6561 -4.9572009593248367e-02 + + -4.2723020911216736e-01 3.1567770056426525e-03 + <_> + + 0 -1 6562 2.5885479408316314e-04 + + -1.5689669549465179e-01 3.8051828742027283e-02 + <_> + + 0 -1 6563 -1.5898289857432246e-03 + + -1.8845720589160919e-01 2.4630049243569374e-02 + <_> + + 0 -1 6564 -1.3463890354614705e-04 + + 1.4452700316905975e-01 -4.4172260910272598e-02 + <_> + + 0 -1 6565 1.1674249544739723e-02 + + -2.5676380842924118e-02 1.9527709484100342e-01 + <_> + + 0 -1 6566 -2.3507000878453255e-02 + + -3.2271888852119446e-01 1.8514839932322502e-02 + <_> + + 0 -1 6567 3.1225800514221191e-02 + + -1.9622299820184708e-02 1.4570100605487823e-01 + <_> + + 0 -1 6568 8.0607319250702858e-04 + + 4.4379990547895432e-02 -1.3635620474815369e-01 + <_> + + 0 -1 6569 -2.6445880532264709e-01 + + 4.1771200299263000e-01 -6.3821650110185146e-03 + <_> + + 0 -1 6570 3.5479381680488586e-02 + + -2.2758480161428452e-02 2.6946100592613220e-01 + <_> + + 0 -1 6571 -3.8137599825859070e-02 + + -3.6719909310340881e-01 1.8722059205174446e-02 + <_> + + 0 -1 6572 3.9108810015022755e-03 + + -1.8176819384098053e-01 3.9054948836565018e-02 + <_> + + 0 -1 6573 4.1834539733827114e-03 + + 4.8676248639822006e-02 -1.3558860123157501e-01 + <_> + + 0 -1 6574 -4.6641420572996140e-02 + + -5.8741682767868042e-01 9.8590552806854248e-03 + <_> + + 0 -1 6575 1.1950139887630939e-02 + + -2.5506049394607544e-02 2.7971199154853821e-01 + <_> + + 0 -1 6576 -6.3585072755813599e-02 + + -7.0940697193145752e-01 8.8691459968686104e-03 + <_> + + 0 -1 6577 9.7221415489912033e-03 + + -2.7885029092431068e-02 5.4626680910587311e-02 + <_> + + 0 -1 6578 -1.6111459583044052e-02 + + -6.8265482783317566e-02 8.0932967364788055e-02 + <_> + + 0 -1 6579 -7.9950511455535889e-02 + + 2.0425680279731750e-01 -3.4306850284337997e-02 + <_> + + 0 -1 6580 3.1421340536326170e-03 + + 4.2196881026029587e-02 -1.5366910398006439e-01 + <_> + + 0 -1 6581 2.9253180400701240e-05 + + -7.6382257044315338e-02 3.1748879700899124e-02 + <_> + + 0 -1 6582 -5.4587088525295258e-02 + + -6.4891487360000610e-01 9.1545386239886284e-03 + <_> + + 0 -1 6583 -2.1083420142531395e-02 + + 1.9058999419212341e-01 -2.4686640128493309e-02 + <_> + + 0 -1 6584 3.9170900708995759e-04 + + -1.0570889711380005e-01 5.2946768701076508e-02 + <_> + + 0 -1 6585 2.2588829696178436e-01 + + 2.3077470250427723e-03 -9.2606049776077271e-01 + <_> + + 0 -1 6586 -1.8899979069828987e-02 + + 1.4503970742225647e-01 -3.8506619632244110e-02 + <_> + + 0 -1 6587 -8.7533425539731979e-03 + + 8.3958826959133148e-02 -3.7479098886251450e-02 + <_> + + 0 -1 6588 -2.0821259915828705e-01 + + -6.7948538064956665e-01 9.8609952256083488e-03 + <_> + + 0 -1 6589 1.6270060092210770e-02 + + 1.4115580357611179e-02 -1.8218359351158142e-01 + <_> + + 0 -1 6590 3.0145489145070314e-03 + + 5.2013739943504333e-02 -1.1450190097093582e-01 + <_> + + 0 -1 6591 1.8547449260950089e-02 + + -2.5681620463728905e-02 1.6456380486488342e-01 + <_> + + 0 -1 6592 4.2732958681881428e-03 + + -5.9573240578174591e-02 1.0390280187129974e-01 + <_> + + 0 -1 6593 -2.8249630704522133e-02 + + -7.8161589801311493e-02 2.9064230620861053e-02 + <_> + + 0 -1 6594 -1.5538600273430347e-02 + + -1.4481380581855774e-01 3.8434058427810669e-02 + <_> + + 0 -1 6595 3.8620950654149055e-03 + + -3.8745380938053131e-02 9.8183527588844299e-02 + <_> + + 0 -1 6596 1.5253369696438313e-02 + + 1.7946500331163406e-02 -3.0948030948638916e-01 + <_> + + 0 -1 6597 -4.2140888981521130e-03 + + 5.7521570473909378e-02 -2.7782430872321129e-02 + <_> + + 0 -1 6598 -2.1610679104924202e-03 + + 1.0617449879646301e-01 -5.9411250054836273e-02 + <_> + + 0 -1 6599 -1.8687519477680326e-03 + + -1.2807689607143402e-01 4.7781638801097870e-02 + <_> + + 0 -1 6600 -6.2083022203296423e-04 + + 1.1725349724292755e-01 -4.7861199826002121e-02 + <_> + + 0 -1 6601 -2.5575871113687754e-03 + + 5.7900648564100266e-02 -8.4036856889724731e-02 + <_> + + 0 -1 6602 4.1207410395145416e-03 + + 5.4239779710769653e-02 -1.2611140310764313e-01 + <_> + + 0 -1 6603 1.7525779083371162e-02 + + 2.8792750090360641e-02 -1.9793170690536499e-01 + <_> + + 0 -1 6604 -1.9012490287423134e-02 + + 1.1444319784641266e-01 -6.6813051700592041e-02 + <_> + + 0 -1 6605 9.5198452472686768e-03 + + -3.9105638861656189e-02 8.8588982820510864e-02 + <_> + + 0 -1 6606 7.7857482247054577e-03 + + 4.7903850674629211e-02 -1.1941280215978622e-01 + <_> + + 0 -1 6607 -2.5355129037052393e-03 + + 6.1377499252557755e-02 -5.1576390862464905e-02 + <_> + + 0 -1 6608 1.3886679708957672e-01 + + 7.1258218958973885e-03 -7.5076061487197876e-01 + <_> + + 0 -1 6609 -3.0958889983594418e-03 + + 7.3432266712188721e-02 -4.0409181267023087e-02 + <_> + + 0 -1 6610 4.7118910588324070e-03 + + 2.2374270483851433e-02 -2.3885080218315125e-01 + <_> + + 0 -1 6611 6.3587618060410023e-03 + + 5.3684379905462265e-02 -1.3398240506649017e-01 + <_> + + 0 -1 6612 6.8367011845111847e-02 + + -3.6103919148445129e-02 1.7410080134868622e-01 + <_> + + 0 -1 6613 -3.2802459318190813e-03 + + -1.4603079855442047e-01 4.8215139657258987e-02 + <_> + + 0 -1 6614 -6.6430270671844482e-02 + + 4.6738991141319275e-01 -1.3140380382537842e-02 + <_> + + 0 -1 6615 -4.2274069041013718e-02 + + -6.3253331184387207e-01 1.0359439998865128e-02 + <_> + + 0 -1 6616 -1.0691370116546750e-03 + + -1.1469829827547073e-01 4.5048121362924576e-02 + <_> + + 0 -1 6617 5.4235469549894333e-02 + + -1.9809609279036522e-02 3.1430730223655701e-01 + <_> + + 0 -1 6618 -7.2852471930673346e-06 + + 5.8051250874996185e-02 -1.0246170312166214e-01 + <_> + + 0 -1 6619 2.0893309265375137e-02 + + 1.5608809888362885e-02 -2.1545739471912384e-01 + <_> + + 0 -1 6620 -5.3765181452035904e-02 + + 2.0559239387512207e-01 -3.2525919377803802e-02 + <_> + + 0 -1 6621 -1.5972670167684555e-02 + + -1.7119890451431274e-01 1.4773829840123653e-02 + <_> + + 0 -1 6622 -1.4591409824788570e-02 + + -2.3046019673347473e-01 2.3345010355114937e-02 + <_> + + 0 -1 6623 2.4016639217734337e-03 + + -2.8272429481148720e-02 9.5124237239360809e-02 + <_> + + 0 -1 6624 -2.0430689677596092e-02 + + 4.0655559301376343e-01 -1.6212539747357368e-02 + <_> + + 0 -1 6625 8.1926792860031128e-02 + + 8.7937163189053535e-03 -4.0210300683975220e-01 + <_> + + 0 -1 6626 -1.2892849743366241e-02 + + -1.1946929991245270e-01 4.5022130012512207e-02 + <_> + + 0 -1 6627 9.4712682068347931e-02 + + -1.0760080069303513e-02 2.1693980693817139e-01 + <_> + + 0 -1 6628 4.0901689790189266e-03 + + -8.4592603147029877e-02 7.0457696914672852e-02 + <_> + + 0 -1 6629 -1.2496539950370789e-01 + + 2.8276950120925903e-01 -4.2760102078318596e-03 + <_> + + 0 -1 6630 1.5758169814944267e-02 + + -4.8926588147878647e-02 1.2380229681730270e-01 + <_> + + 0 -1 6631 -5.2818129770457745e-03 + + 6.1836440116167068e-02 -3.6712940782308578e-02 + <_> + + 0 -1 6632 8.6735859513282776e-03 + + -4.7372240573167801e-02 1.5809150040149689e-01 + <_> + + 0 -1 6633 -5.2273580804467201e-03 + + -1.1694569885730743e-01 2.9156440868973732e-02 + <_> + + 0 -1 6634 6.1831828206777573e-02 + + 8.0447606742382050e-03 -6.8530529737472534e-01 + <_> + + 0 -1 6635 6.6815607249736786e-02 + + -8.4813889116048813e-03 1.4523769915103912e-01 + <_> + + 0 -1 6636 -1.0062000155448914e-01 + + 7.4605828523635864e-01 -6.8016690202057362e-03 + <_> + + 0 -1 6637 -1.4751539565622807e-02 + + -1.4893519878387451e-01 3.9579190313816071e-02 + <_> + + 0 -1 6638 3.4616589546203613e-02 + + -2.0749099552631378e-02 2.8549820184707642e-01 + <_> + + 0 -1 6639 -1.2966389954090118e-01 + + -5.5446487665176392e-01 4.6082548797130585e-03 + <_> + + 0 -1 6640 7.4035510420799255e-02 + + 5.3174998611211777e-03 -8.4149527549743652e-01 + <_> + + 0 -1 6641 1.0177110135555267e-01 + + -7.6451660133898258e-03 3.5442221164703369e-01 + <_> + + 0 -1 6642 8.9658737182617188e-02 + + -9.3901483342051506e-03 5.0577938556671143e-01 + <_> + + 0 -1 6643 -1.6180740296840668e-01 + + -6.5451782941818237e-01 8.7116202339529991e-03 + <_> + + 0 -1 6644 1.8784119747579098e-03 + + 5.2064418792724609e-02 -9.0741947293281555e-02 + <_> + + 0 -1 6645 1.9505689851939678e-03 + + -5.4091621190309525e-02 3.5506200045347214e-02 + <_> + + 0 -1 6646 -6.0789179988205433e-03 + + 1.2238519638776779e-01 -4.6803738921880722e-02 + <_> + + 0 -1 6647 -2.2403250634670258e-01 + + -7.7728492021560669e-01 2.3639709688723087e-03 + <_> + + 0 -1 6648 -1.3039590418338776e-01 + + -2.7692648768424988e-01 2.1548289805650711e-02 + <_> + + 0 -1 6649 7.2587423026561737e-02 + + 1.0621299967169762e-02 -1.6270780563354492e-01 + <_> + + 0 -1 6650 7.3180042207241058e-02 + + -1.7519259825348854e-02 3.3697870373725891e-01 + <_> + + 0 -1 6651 -3.4525979310274124e-02 + + -5.3538697957992554e-01 1.0397709906101227e-02 + <_> + + 0 -1 6652 2.3753559216856956e-03 + + 5.1910828799009323e-02 -9.6959516406059265e-02 + <_> + + 0 -1 6653 -6.8947779946029186e-03 + + 8.2409977912902832e-02 -2.3098999634385109e-02 + <_> + + 0 -1 6654 -9.4773292541503906e-02 + + -7.0510691404342651e-01 7.7322297729551792e-03 + <_> + + 0 -1 6655 5.6327427737414837e-03 + + 1.7960680648684502e-02 -7.2307042777538300e-02 + <_> + + 0 -1 6656 6.6090249456465244e-03 + + -3.6701079457998276e-02 1.3706339895725250e-01 + <_> + + 0 -1 6657 -2.4978399276733398e-02 + + -1.6281390190124512e-01 7.6992698013782501e-03 + <_> + + 0 -1 6658 -6.0882410034537315e-03 + + 1.0555619746446609e-01 -4.8507411032915115e-02 + <_> + + 0 -1 6659 6.1161588877439499e-02 + + 1.1127579491585493e-03 -5.6657880544662476e-01 + <_> + + 0 -1 6660 -3.8722809404134750e-02 + + -5.9797358512878418e-01 8.4153199568390846e-03 + <_> + + 0 -1 6661 6.2335198745131493e-03 + + 3.1563021242618561e-02 -1.8769240379333496e-01 + <_> + + 0 -1 6662 1.6939510405063629e-01 + + -1.7183739691972733e-02 3.1440049409866333e-01 + <_> + + 0 -1 6663 8.5851341485977173e-02 + + 5.7081878185272217e-03 -4.9966809153556824e-01 + <_> + + 0 -1 6664 -2.0315010100603104e-02 + + -1.2359900027513504e-01 4.4704839587211609e-02 + <_> + + 0 -1 6665 -4.0276069194078445e-03 + + 4.7957219183444977e-02 -9.7137056291103363e-02 + <_> + + 0 -1 6666 -3.9274509996175766e-02 + + 1.8804270029067993e-01 -2.9754199087619781e-02 + <_> + + 0 -1 6667 -2.1163629367947578e-02 + + -1.5724900364875793e-01 3.9636529982089996e-02 + <_> + + 0 -1 6668 4.0783579461276531e-03 + + -4.7562818974256516e-02 1.0976249724626541e-01 + <_> + + 0 -1 6669 1.0180410463362932e-03 + + -6.6306091845035553e-02 9.8773077130317688e-02 + <_> + + 0 -1 6670 2.8516049496829510e-03 + + -5.1101740449666977e-02 9.6994958817958832e-02 + <_> + + 0 -1 6671 4.8373742029070854e-03 + + 4.0866550058126450e-02 -1.2480360269546509e-01 + <_> + + 0 -1 6672 -3.4715479705482721e-04 + + 4.1778691112995148e-02 -1.2574540078639984e-01 + <_> + + 0 -1 6673 -6.3760261982679367e-03 + + 1.5754230320453644e-01 -4.1692778468132019e-02 + <_> + + 0 -1 6674 -1.2534069828689098e-02 + + -1.3565440475940704e-01 4.1295569390058517e-02 + <_> + + 0 -1 6675 -2.3321550339460373e-02 + + 1.2518349289894104e-01 -1.3427260331809521e-02 + <_> + + 0 -1 6676 2.1691620349884033e-03 + + 1.4331200718879700e-01 -3.5120349377393723e-02 + <_> + + 0 -1 6677 -5.0005540251731873e-02 + + 2.1500219404697418e-01 -2.7628419920802116e-02 + <_> + + 0 -1 6678 1.3818169943988323e-02 + + 2.2208500653505325e-02 -2.6048558950424194e-01 + <_> + + 0 -1 6679 -1.1389379948377609e-01 + + -2.6434680819511414e-01 5.8247619308531284e-03 + <_> + + 0 -1 6680 1.4204699546098709e-03 + + -7.1546286344528198e-02 7.0379182696342468e-02 + <_> + + 0 -1 6681 1.2329610064625740e-02 + + 2.9475130140781403e-02 -1.9224089384078979e-01 + <_> + + 0 -1 6682 3.4679430536925793e-03 + + -6.1920940876007080e-02 9.0893089771270752e-02 + <_> + + 0 -1 6683 -1.2088479846715927e-01 + + 4.6626859903335571e-01 -2.7361230459064245e-03 + <_> + + 0 -1 6684 -1.5827519819140434e-02 + + -9.5342837274074554e-02 5.5003169924020767e-02 + <_> + + 0 -1 6685 -5.3695850074291229e-03 + + 1.6891020536422729e-01 -4.6700950711965561e-02 + <_> + + 0 -1 6686 5.2695080637931824e-02 + + -5.6889699772000313e-03 9.0487861633300781e-01 + <_> + + 0 -1 6687 -1.1397979687899351e-03 + + 3.4316681325435638e-02 -7.5787901878356934e-02 + <_> + + 0 -1 6688 -2.8946578968316317e-03 + + 7.5482390820980072e-02 -7.6466552913188934e-02 + <_> + + 0 -1 6689 -5.1091420464217663e-03 + + -1.2294950336217880e-01 4.9972750246524811e-02 + <_> + + 0 -1 6690 1.8837359966710210e-03 + + 4.3406400829553604e-02 -1.2572230398654938e-01 + <_> + + 0 -1 6691 1.5422919765114784e-02 + + 1.5831289812922478e-02 -2.0917390286922455e-01 + <_> + + 0 -1 6692 2.1666040644049644e-02 + + -2.4713400751352310e-02 2.4171669781208038e-01 + <_> + + 0 -1 6693 -9.4336412847042084e-02 + + 8.0389547348022461e-01 -2.6913180481642485e-03 + <_> + + 0 -1 6694 -6.0154758393764496e-03 + + -1.3231749832630157e-01 4.9613710492849350e-02 + <_> + + 0 -1 6695 4.3775320053100586e-02 + + 4.5396219938993454e-03 -5.8732748031616211e-01 + <_> + + 0 -1 6696 1.0561950039118528e-03 + + -8.8057562708854675e-02 7.1294106543064117e-02 + <_> + + 0 -1 6697 -1.6394529957324266e-03 + + 9.0810842812061310e-02 -3.7760701030492783e-02 + <_> + + 0 -1 6698 2.6742160320281982e-01 + + 9.4182817265391350e-03 -5.2740138769149780e-01 + <_> + + 0 -1 6699 -2.1629330515861511e-01 + + -6.1128187179565430e-01 5.2118571475148201e-03 + <_> + + 0 -1 6700 -2.6974570751190186e-01 + + -7.3394459486007690e-01 6.0041057877242565e-03 + <_> + + 0 -1 6701 -6.0050850734114647e-03 + + 1.1067090183496475e-01 -2.0614199340343475e-02 + <_> + + 0 -1 6702 4.9247939139604568e-02 + + 1.0287189856171608e-02 -4.9581390619277954e-01 + <_> + + 0 -1 6703 4.9235569313168526e-03 + + 1.4880360104143620e-02 -1.1287470161914825e-01 + <_> + + 0 -1 6704 -8.2946997135877609e-03 + + 5.6476062536239624e-01 -1.0442149825394154e-02 + <_> + + 0 -1 6705 2.3567330092191696e-02 + + -2.9235871043056250e-03 2.4979250133037567e-01 + <_> + + 0 -1 6706 -4.1040919721126556e-02 + + 4.0030491352081299e-01 -1.3312620110809803e-02 + <_> + + 0 -1 6707 -5.3690220229327679e-03 + + -2.9186370968818665e-01 1.6781600192189217e-02 + <_> + + 0 -1 6708 3.6616099532693624e-03 + + -4.7920960932970047e-02 1.0898339748382568e-01 + <_> + + 0 -1 6709 -2.4735789746046066e-02 + + 6.7270919680595398e-02 -1.6207970678806305e-02 + <_> + + 0 -1 6710 8.6064152419567108e-03 + + -6.0250200331211090e-02 1.0674320161342621e-01 + <_> + + 0 -1 6711 -3.3892609179019928e-02 + + -1.9795329868793488e-01 1.9014969468116760e-02 + <_> + + 0 -1 6712 1.0522030293941498e-01 + + 6.0530952177941799e-03 -7.5238007307052612e-01 + <_> + + 0 -1 6713 -5.9583578258752823e-03 + + 9.9094383418560028e-02 -3.5570640116930008e-02 + <_> + + 0 -1 6714 2.7306210249662399e-03 + + -8.8879808783531189e-02 6.4843989908695221e-02 + <_> + + 0 -1 6715 4.3243571417406201e-04 + + 3.2528489828109741e-02 -9.1479070484638214e-02 + <_> + + 0 -1 6716 -5.2608880214393139e-03 + + 1.3896170258522034e-01 -4.0624819695949554e-02 + <_> + + 0 -1 6717 -1.5605129301548004e-01 + + -7.3170071840286255e-01 2.5103189982473850e-03 + <_> + + 0 -1 6718 -1.1245990172028542e-02 + + -1.1834110319614410e-01 5.2261721342802048e-02 + <_> + + 0 -1 6719 -9.2654878972098231e-04 + + 4.3350778520107269e-02 -7.6521359384059906e-02 + <_> + + 0 -1 6720 1.5148459933698177e-03 + + -7.1485839784145355e-02 7.3206916451454163e-02 + <_> + + 0 -1 6721 4.6230577863752842e-03 + + 2.0211879163980484e-02 -4.6565961092710495e-02 + <_> + + 0 -1 6722 1.2555140256881714e-01 + + 9.2135155573487282e-03 -5.4831707477569580e-01 + <_> + + 0 -1 6723 4.0751680731773376e-02 + + -4.5771248638629913e-02 5.6990999728441238e-02 + <_> + + 0 -1 6724 -2.2074349224567413e-02 + + -3.9075499773025513e-01 1.1654710397124290e-02 + <_> + + 0 -1 6725 1.2412919849157333e-01 + + -6.0688108205795288e-03 2.6376709342002869e-01 + <_> + + 0 -1 6726 6.0741119086742401e-03 + + 1.0768520087003708e-01 -5.0139870494604111e-02 + <_> + + 0 -1 6727 -1.4694149792194366e-01 + + -4.3452548980712891e-01 5.5836569517850876e-03 + <_> + + 0 -1 6728 -1.2046460062265396e-01 + + -5.4068279266357422e-01 9.8318615928292274e-03 + <_> + + 0 -1 6729 -9.0990159660577774e-03 + + -1.3625259697437286e-01 9.5357475802302361e-03 + <_> + + 0 -1 6730 1.0966449975967407e-02 + + -3.1344298273324966e-02 1.7068630456924438e-01 + <_> + + 0 -1 6731 -2.1763380616903305e-02 + + 7.3918178677558899e-02 -1.7846420407295227e-02 + <_> + + 0 -1 6732 -4.9578789621591568e-02 + + -5.8034032583236694e-01 1.0063209570944309e-02 + <_> + + 0 -1 6733 -6.6796392202377319e-03 + + -4.7280300408601761e-02 3.8668069988489151e-02 + <_> + + 0 -1 6734 -1.0112039744853973e-03 + + 4.5412030071020126e-02 -1.4603359997272491e-01 + <_> + + 0 -1 6735 2.5813570246100426e-03 + + 3.1112480908632278e-02 -1.0001499950885773e-01 + <_> + + 0 -1 6736 2.0418369676917791e-03 + + 4.8378061503171921e-02 -1.4722709357738495e-01 + <_> + + 0 -1 6737 5.6246068328619003e-02 + + 3.7779449485242367e-03 -6.1013627052307129e-01 + <_> + + 0 -1 6738 -2.6130750775337219e-02 + + 2.6240581274032593e-01 -2.4313600733876228e-02 + <_> + + 0 -1 6739 -1.2151029892265797e-02 + + -5.6114129722118378e-02 2.9739160090684891e-02 + <_> + + 0 -1 6740 -5.1036469638347626e-02 + + 2.7955740690231323e-01 -2.1683510392904282e-02 + <_> + + 0 -1 6741 8.7444618344306946e-02 + + -3.7635879125446081e-03 5.2711361646652222e-01 + <_> + + 0 -1 6742 3.4982790239155293e-03 + + 5.6673228740692139e-02 -9.2554636299610138e-02 + <_> + + 0 -1 6743 9.7861722111701965e-02 + + 3.7442990578711033e-03 -5.4237729310989380e-01 + <_> + + 0 -1 6744 -6.3886200077831745e-03 + + -9.7468167543411255e-02 6.0299299657344818e-02 + <_> + + 0 -1 6745 -1.0128310322761536e-01 + + -6.5173667669296265e-01 3.4321940038353205e-03 + <_> + + 0 -1 6746 -3.9312228560447693e-02 + + 2.6476991176605225e-01 -2.6981310918927193e-02 + <_> + + 0 -1 6747 1.1417990177869797e-01 + + 7.5375889427959919e-03 -6.8553638458251953e-01 + <_> + + 0 -1 6748 8.4078265354037285e-03 + + -3.0973089858889580e-02 1.7200429737567902e-01 + <_> + + 0 -1 6749 -1.5489499783143401e-03 + + 4.6454809606075287e-02 -6.9261766970157623e-02 + <_> + + 0 -1 6750 2.9730569804087281e-04 + + 3.7772700190544128e-02 -1.3767069578170776e-01 + <_> + + 0 -1 6751 2.8460770845413208e-03 + + -4.3182320892810822e-02 9.9634610116481781e-02 + <_> + + 0 -1 6752 4.9144420772790909e-02 + + 5.9465290978550911e-03 -8.2366597652435303e-01 + <_> + + 0 -1 6753 1.0286020115017891e-02 + + 2.8591090813279152e-02 -1.5941999852657318e-01 + <_> + + 0 -1 6754 1.9976280629634857e-02 + + -2.9617030173540115e-02 1.5943069756031036e-01 + <_> + + 0 -1 6755 2.3533409461379051e-02 + + 7.5594270601868629e-03 -2.3041130602359772e-01 + <_> + + 0 -1 6756 -9.0482197701931000e-03 + + -1.2408699840307236e-01 4.1615001857280731e-02 + <_> + + 0 -1 6757 -3.8635660894215107e-03 + + 8.7811216711997986e-02 -4.1511181741952896e-02 + <_> + + 0 -1 6758 -2.7298410423099995e-03 + + 9.4712667167186737e-02 -5.2838958799839020e-02 + <_> + + 0 -1 6759 -4.5442068949341774e-03 + + -1.0748460143804550e-01 1.7744770273566246e-02 + <_> + + 0 -1 6760 2.3271010722965002e-03 + + -8.3826236426830292e-02 5.7210709899663925e-02 + <_> + + 0 -1 6761 -1.2409550137817860e-02 + + 2.3100300133228302e-01 -2.2110419347882271e-02 + <_> + + 0 -1 6762 -4.5268908143043518e-03 + + -1.6244150698184967e-01 3.2564349472522736e-02 + <_> + + 0 -1 6763 -4.4666860048891976e-05 + + 2.4341119825839996e-01 -2.6702800765633583e-02 + <_> + + 0 -1 6764 7.7015289571136236e-04 + + -1.2858650088310242e-01 4.2308151721954346e-02 + <_> + + 0 -1 6765 4.4863048940896988e-02 + + 1.0781999677419662e-02 -3.5814240574836731e-01 + <_> + + 0 -1 6766 3.7869490683078766e-02 + + -1.4966360293328762e-02 3.4195008873939514e-01 + <_> + + 0 -1 6767 -8.3092376589775085e-03 + + -2.7514660358428955e-01 2.0139539614319801e-02 + <_> + + 0 -1 6768 -4.3290119618177414e-02 + + 3.0036559700965881e-01 -1.9493019208312035e-02 + <_> + + 0 -1 6769 -1.0075629688799381e-02 + + -1.2262579798698425e-01 9.1246366500854492e-03 + <_> + + 0 -1 6770 -3.3486529719084501e-03 + + 1.1790259927511215e-01 -4.1050188243389130e-02 + <_> + + 0 -1 6771 -6.4645247766748071e-04 + + -7.8154936432838440e-02 4.6990569680929184e-02 + <_> + + 0 -1 6772 3.5247370600700378e-02 + + 1.0365270078182220e-02 -5.1507127285003662e-01 + <_> + + 0 -1 6773 3.5965928691439331e-04 + + -7.7936813235282898e-02 3.0275240540504456e-02 + <_> + + 0 -1 6774 -1.5898740384727716e-03 + + -1.0594320297241211e-01 5.0036150962114334e-02 + <_> + + 0 -1 6775 -2.1408300846815109e-02 + + 1.1649339646100998e-01 -3.7540700286626816e-02 + <_> + + 0 -1 6776 -2.7612380217760801e-03 + + 3.4751810133457184e-02 -1.3718530535697937e-01 + <_> + + 0 -1 6777 6.4307968132197857e-03 + + -1.3667429797351360e-02 1.4938560128211975e-01 + <_> + + 0 -1 6778 -6.9555612280964851e-03 + + -1.2171459943056107e-01 5.6100189685821533e-02 + <_> + + 0 -1 6779 -2.7654969692230225e-01 + + -8.5077387094497681e-01 3.8885050453245640e-03 + <_> + + 0 -1 6780 4.7567309811711311e-03 + + -6.5594427287578583e-02 7.5947061181068420e-02 + <_> + + 0 -1 6781 8.9218050241470337e-02 + + 6.5016360022127628e-03 -3.2032990455627441e-01 + <_> + + 0 -1 6782 6.7748151719570160e-02 + + -1.1878870427608490e-02 4.4954490661621094e-01 + <_> + + 0 -1 6783 4.5336190611124039e-02 + + 7.4317739345133305e-03 -4.3144878745079041e-01 + <_> + + 0 -1 6784 1.0965850204229355e-02 + + 2.5135010480880737e-02 -2.0359070599079132e-01 + <_> + + 0 -1 6785 -6.5938562154769897e-02 + + 4.5524141192436218e-01 -7.5815711170434952e-03 + <_> + + 0 -1 6786 -4.2270109057426453e-02 + + 3.8470050692558289e-01 -1.1672279797494411e-02 + <_> + + 0 -1 6787 -6.3518402166664600e-03 + + -8.7010167539119720e-02 3.4159921109676361e-02 + <_> + + 0 -1 6788 3.2269880175590515e-02 + + -4.0711440145969391e-02 1.2469469755887985e-01 + <_> + + 0 -1 6789 -3.9068311452865601e-02 + + -1.0403119772672653e-01 6.7032999359071255e-03 + <_> + + 0 -1 6790 -1.0384949855506420e-03 + + 5.8422528207302094e-02 -1.0154890269041061e-01 + <_> + + 0 -1 6791 2.9740650206804276e-02 + + 1.2596059590578079e-02 -1.5170450508594513e-01 + <_> + + 0 -1 6792 5.3193639032542706e-03 + + -4.6843089163303375e-02 1.1005250364542007e-01 + <_> + + 0 -1 6793 -3.2385820522904396e-03 + + -1.0309839993715286e-01 5.0686061382293701e-02 + <_> + + 0 -1 6794 4.2344750836491585e-03 + + -4.9582429230213165e-02 1.2092150002717972e-01 + <_> + + 0 -1 6795 -7.4786663055419922e-02 + + -4.6895131468772888e-01 3.8582859560847282e-03 + <_> + + 0 -1 6796 8.5299033671617508e-03 + + 3.8806159049272537e-02 -1.2022049725055695e-01 + <_> + + 0 -1 6797 -4.8662569373846054e-02 + + 1.6113990545272827e-01 -1.1717130430042744e-02 + <_> + + 0 -1 6798 -1.3677199603989720e-03 + + -8.5303716361522675e-02 5.5394109338521957e-02 + <_> + + 0 -1 6799 -5.8111362159252167e-03 + + 4.7039270401000977e-02 -5.1736868917942047e-02 + <_> + + 0 -1 6800 -3.9951619692146778e-03 + + -7.8167162835597992e-02 6.3919343054294586e-02 + <_> + + 0 -1 6801 3.0817699152976274e-03 + + -6.9289833307266235e-02 2.8242539614439011e-02 + <_> + + 0 -1 6802 -4.6279471367597580e-02 + + -3.4760490059852600e-01 1.3878909870982170e-02 + <_> + + 0 -1 6803 -1.8725780770182610e-02 + + 1.5222269296646118e-01 -1.5724090859293938e-02 + <_> + + 0 -1 6804 -2.1445369347929955e-02 + + -3.5962730646133423e-01 1.2764260172843933e-02 + <_> + + 0 -1 6805 -9.1003477573394775e-02 + + -7.9615950584411621e-01 4.9090441316366196e-03 + <_> + + 0 -1 6806 2.5607119314372540e-03 + + -5.4551690816879272e-02 8.4403410553932190e-02 + <_> + + 0 -1 6807 -1.3662099838256836e-02 + + 9.4987250864505768e-02 -6.2036819756031036e-02 + <_> + + 0 -1 6808 9.2437807470560074e-03 + + 5.3822331130504608e-02 -9.9236510694026947e-02 + <_> + + 0 -1 6809 -1.4612140133976936e-02 + + -1.5248660743236542e-01 4.2905550450086594e-02 + <_> + + 0 -1 6810 -3.9584659039974213e-02 + + 1.5883240103721619e-01 -3.5484429448843002e-02 + <_> + + 0 -1 6811 -6.7460699938237667e-03 + + 1.1749260127544403e-01 -3.7934441119432449e-02 + <_> + + 0 -1 6812 2.0449559669941664e-03 + + 6.1626188457012177e-02 -9.4409346580505371e-02 + <_> + + 0 -1 6813 -1.5146560035645962e-02 + + -3.3887571096420288e-01 6.8320450372993946e-03 + <_> + + 0 -1 6814 -2.0916219800710678e-03 + + -1.4829570055007935e-01 3.3358350396156311e-02 + <_> + + 0 -1 6815 1.3274390250444412e-02 + + -3.8169000297784805e-02 4.6379629522562027e-02 + <_> + + 0 -1 6816 1.2404330074787140e-02 + + -1.8498679623007774e-02 2.7952960133552551e-01 + <_> + + 0 -1 6817 -2.3678259924054146e-02 + + -4.7142859548330307e-02 2.3141339421272278e-02 + <_> + + 0 -1 6818 6.7575983703136444e-02 + + -1.8598400056362152e-02 2.7481150627136230e-01 + <_> + + 0 -1 6819 7.6359122991561890e-02 + + 2.9178129509091377e-02 -2.0572820305824280e-01 + <_> + + 0 -1 6820 -1.0918889939785004e-01 + + 6.2577211856842041e-01 -9.8246810957789421e-03 + <_> + + 0 -1 6821 1.2964319903403521e-03 + + -3.1776499003171921e-02 6.7833930253982544e-02 + <_> + + 0 -1 6822 4.1218679398298264e-02 + + 8.5701625794172287e-03 -5.8379119634628296e-01 + <_> + + 0 -1 6823 -1.8773629562929273e-03 + + 5.3263541311025620e-02 -4.1702788323163986e-02 + <_> + + 0 -1 6824 -2.9402649961411953e-03 + + 8.6931921541690826e-02 -7.1344070136547089e-02 + <_> + + 0 -1 6825 -3.0833749100565910e-02 + + -3.9439570903778076e-01 6.0907239094376564e-03 + <_> + + 0 -1 6826 -3.7960989866405725e-03 + + 7.4150532484054565e-02 -6.1881281435489655e-02 + <_> + + 0 -1 6827 -6.3087488524615765e-03 + + -1.1662469804286957e-01 2.5016760453581810e-02 + <_> + + 0 -1 6828 4.0001370944082737e-03 + + -5.7236731052398682e-02 9.7589701414108276e-02 + <_> + + 0 -1 6829 6.7752957344055176e-02 + + 9.5101362094283104e-03 -3.3777019381523132e-01 + <_> + + 0 -1 6830 -9.2353783547878265e-02 + + 7.9015249013900757e-01 -6.2939748167991638e-03 + <_> + + 0 -1 6831 -2.4050839245319366e-02 + + -1.5585710108280182e-01 1.8099930137395859e-02 + <_> + + 0 -1 6832 3.2272089738398790e-03 + + -4.7936741262674332e-02 1.0735899955034256e-01 + <_> + + 0 -1 6833 -7.2444709949195385e-03 + + 9.6775539219379425e-02 -2.4095900356769562e-02 + <_> + + 0 -1 6834 -1.0888259857892990e-01 + + -8.1255799531936646e-01 6.0875630006194115e-03 + <_> + + 0 -1 6835 -1.4077230356633663e-02 + + -1.3358989357948303e-01 2.5421140715479851e-02 + <_> + + 0 -1 6836 -3.0071370303630829e-02 + + 3.5427039861679077e-01 -1.3553430326282978e-02 + <_> + + 0 -1 6837 3.4985799342393875e-02 + + -3.0686240643262863e-03 4.6311178803443909e-01 + <_> + + 0 -1 6838 1.8354769796133041e-02 + + 1.1218019761145115e-02 -4.6143579483032227e-01 + <_> + + 0 -1 6839 -6.4306408166885376e-02 + + -6.1207151412963867e-01 1.9155009649693966e-03 + <_> + + 0 -1 6840 8.2096129655838013e-02 + + -8.8210906833410263e-03 5.4885977506637573e-01 + <_> + + 0 -1 6841 7.7698810491710901e-04 + + 1.3247950375080109e-01 -3.3915128558874130e-02 + <_> + + 0 -1 6842 6.4568981528282166e-02 + + 6.4043831080198288e-03 -7.7150177955627441e-01 + <_> + + 0 -1 6843 -1.5833489596843719e-02 + + -1.9498950242996216e-01 7.5541301630437374e-03 + <_> + + 0 -1 6844 3.4125618636608124e-02 + + -1.5915289521217346e-02 2.9716441035270691e-01 + <_> + + 0 -1 6845 -1.2615050189197063e-02 + + -2.4650709331035614e-01 2.2699799388647079e-02 + <_> + + 0 -1 6846 1.8272679299116135e-02 + + -4.0593959391117096e-02 1.1693490296602249e-01 + <_> + + 0 -1 6847 -6.6374349407851696e-03 + + -1.4557109773159027e-01 3.5353910177946091e-02 + <_> + + 0 -1 6848 -2.6520919054746628e-03 + + 7.6382592320442200e-02 -6.6688627004623413e-02 + <_> + + 0 -1 6849 2.2452129051089287e-03 + + -8.9759878814220428e-02 5.5091369897127151e-02 + <_> + + 0 -1 6850 -4.4775419519282877e-04 + + 2.1264159679412842e-01 -2.6620639488101006e-02 + <_> + + 0 -1 6851 -1.1115259677171707e-01 + + -4.3139949440956116e-01 4.6484731137752533e-03 + <_> + + 0 -1 6852 -1.1578770354390144e-02 + + -3.5296261310577393e-01 1.2750539928674698e-02 + <_> + + 0 -1 6853 -2.5290170684456825e-02 + + 5.1385980844497681e-01 -6.7363809794187546e-03 + <_> + + 0 -1 6854 -3.2232340425252914e-02 + + -5.7690191268920898e-01 7.7741048298776150e-03 + <_> + + 0 -1 6855 -4.1698799468576908e-03 + + -1.7519310116767883e-01 1.1018699966371059e-02 + <_> + + 0 -1 6856 -2.0664500072598457e-02 + + 2.5821951031684875e-01 -1.7920289188623428e-02 + <_> + + 0 -1 6857 -1.0834420099854469e-03 + + -1.3178519904613495e-01 2.5419749319553375e-02 + <_> + + 0 -1 6858 -9.5458701252937317e-03 + + 4.4964689016342163e-01 -1.1315030045807362e-02 + <_> + + 0 -1 6859 5.3232181817293167e-02 + + 7.4498020112514496e-03 -6.8122059106826782e-01 + <_> + + 0 -1 6860 -1.3852520287036896e-01 + + -6.0117882490158081e-01 6.5434179268777370e-03 + <_> + + 0 -1 6861 1.7173439264297485e-02 + + -2.5120509788393974e-02 8.6516633629798889e-02 + <_> + + 0 -1 6862 3.9947189390659332e-02 + + 5.8647249825298786e-03 -7.4653059244155884e-01 + <_> + + 0 -1 6863 2.0647009834647179e-02 + + -1.0226000100374222e-02 1.7227609455585480e-01 + <_> + + 0 -1 6864 -1.8602909985929728e-03 + + -6.5767973661422729e-02 6.9248490035533905e-02 + <_> + + 0 -1 6865 -3.4106068313121796e-02 + + 1.5908730030059814e-01 -1.3241630047559738e-02 + <_> + + 0 -1 6866 6.3425069674849510e-03 + + 3.5119149833917618e-02 -1.3436080515384674e-01 + <_> + + 0 -1 6867 1.6866199439391494e-03 + + -4.3401770293712616e-02 5.0606630742549896e-02 + <_> + + 0 -1 6868 -3.0595089774578810e-03 + + 5.6976709514856339e-02 -8.1074528396129608e-02 + <_> + + 0 -1 6869 2.7664829976856709e-03 + + 2.0497009158134460e-02 -8.0963827669620514e-02 + <_> + + 0 -1 6870 -3.2909188885241747e-03 + + -1.0803789645433426e-01 4.6237960457801819e-02 + <_> + + 0 -1 6871 1.7244400456547737e-02 + + -2.5127060711383820e-02 2.4591030180454254e-01 + <_> + + 0 -1 6872 9.1161586344242096e-02 + + 1.0174980387091637e-02 -4.6983879804611206e-01 + <_> + + 0 -1 6873 2.5459621101617813e-03 + + -3.0003750696778297e-02 1.4800469577312469e-01 + <_> + + 0 -1 6874 1.7582690343260765e-03 + + 5.4400689899921417e-02 -7.7444270253181458e-02 + <_> + + 0 -1 6875 -1.6833960544317961e-03 + + 8.1838123500347137e-02 -4.3751198798418045e-02 + <_> + + 0 -1 6876 -7.6617579907178879e-04 + + -1.3564400374889374e-01 3.6041948944330215e-02 + <_> + + 0 -1 6877 1.1155450483784080e-03 + + -4.8263888806104660e-02 5.0273448228836060e-02 + <_> + + 0 -1 6878 -2.6005289983004332e-03 + + 8.8793486356735229e-02 -5.4554209113121033e-02 + <_> + + 0 -1 6879 -3.2424980308860540e-03 + + -1.3159190118312836e-01 3.4248508512973785e-02 + <_> + + 0 -1 6880 -1.4817930059507489e-04 + + 3.7875428795814514e-02 -1.2225220352411270e-01 + <_> + + 0 -1 6881 1.1546639725565910e-02 + + 1.5370969660580158e-02 -1.0286240279674530e-01 + <_> + + 0 -1 6882 2.4446300230920315e-03 + + -5.1783051341772079e-02 1.0735079646110535e-01 + <_> + + 0 -1 6883 4.5723789371550083e-03 + + -3.6362100392580032e-02 1.3289859890937805e-01 + <_> + + 0 -1 6884 -1.1938340030610561e-02 + + -1.0882350057363510e-01 4.7698900103569031e-02 + <_> + + 0 -1 6885 -4.1671381331980228e-03 + + 1.1637099832296371e-01 -3.0638780444860458e-02 + <_> + 399 + -1.2330470085144043e+00 + + <_> + + 0 -1 6886 3.3659618347883224e-02 + + -1.5576040744781494e-01 1.9109010696411133e-01 + <_> + + 0 -1 6887 -1.5392389614135027e-03 + + 7.2527736425399780e-02 -2.8808951377868652e-01 + <_> + + 0 -1 6888 1.5648789703845978e-03 + + -1.1329220235347748e-01 1.5057389438152313e-01 + <_> + + 0 -1 6889 5.6565739214420319e-04 + + -4.0502288937568665e-01 3.0235100537538528e-02 + <_> + + 0 -1 6890 -2.9683491447940469e-04 + + -1.2592320144176483e-01 1.0352999716997147e-01 + <_> + + 0 -1 6891 4.3946141377091408e-03 + + -1.0582420229911804e-01 2.3163750767707825e-02 + <_> + + 0 -1 6892 3.2444300595670938e-03 + + 5.0188560038805008e-02 -2.5477260351181030e-01 + <_> + + 0 -1 6893 3.8864749949425459e-03 + + -1.4332659542560577e-01 2.9871070757508278e-02 + <_> + + 0 -1 6894 3.3563380129635334e-03 + + -1.8739770352840424e-01 6.1354521661996841e-02 + <_> + + 0 -1 6895 1.9797699525952339e-02 + + 2.7567919343709946e-02 -7.3189876973628998e-02 + <_> + + 0 -1 6896 3.3829871099442244e-03 + + -2.6915690302848816e-01 4.7561220824718475e-02 + <_> + + 0 -1 6897 5.0223460420966148e-03 + + 4.2572669684886932e-02 -2.0097489655017853e-01 + <_> + + 0 -1 6898 1.4903279952704906e-03 + + -1.0160639882087708e-01 1.1291279643774033e-01 + <_> + + 0 -1 6899 -5.5050072260200977e-03 + + -2.1760410070419312e-01 2.5067379698157310e-02 + <_> + + 0 -1 6900 4.1127130389213562e-03 + + -1.3703300058841705e-01 6.6536687314510345e-02 + <_> + + 0 -1 6901 1.9442260265350342e-02 + + 4.2253911495208740e-02 -1.1731100082397461e-01 + <_> + + 0 -1 6902 -1.9445870071649551e-02 + + 2.8616631031036377e-01 -3.0423089861869812e-02 + <_> + + 0 -1 6903 -1.5500449808314443e-03 + + -1.5157119929790497e-01 6.3723236322402954e-02 + <_> + + 0 -1 6904 -3.2575910445302725e-03 + + 6.1063949018716812e-02 -1.3006690144538879e-01 + <_> + + 0 -1 6905 8.5774611216038465e-04 + + -6.2051288783550262e-02 5.4809290915727615e-02 + <_> + + 0 -1 6906 6.8592262687161565e-04 + + -9.2828713357448578e-02 9.2287853360176086e-02 + <_> + + 0 -1 6907 4.8905659466981888e-02 + + -1.2098040431737900e-02 2.4674870073795319e-01 + <_> + + 0 -1 6908 -4.6415459364652634e-03 + + -1.7103439569473267e-01 5.1900148391723633e-02 + <_> + + 0 -1 6909 -9.9253775551915169e-03 + + 1.6824729740619659e-01 -4.3742731213569641e-02 + <_> + + 0 -1 6910 -7.2820088826119900e-04 + + -1.5762010216712952e-01 4.9283239990472794e-02 + <_> + + 0 -1 6911 7.1829417720437050e-03 + + -7.5083851814270020e-02 1.5677660703659058e-01 + <_> + + 0 -1 6912 7.4819842120632529e-04 + + 9.4303682446479797e-02 -9.4410486519336700e-02 + <_> + + 0 -1 6913 1.3856319710612297e-02 + + 4.2250029742717743e-02 -2.4046279489994049e-01 + <_> + + 0 -1 6914 -5.0514908507466316e-03 + + 2.0170919597148895e-01 -4.4972479343414307e-02 + <_> + + 0 -1 6915 -2.5696419179439545e-03 + + -1.4004689455032349e-01 4.1754510253667831e-02 + <_> + + 0 -1 6916 5.4275751113891602e-02 + + -2.6094799861311913e-02 2.8374740481376648e-01 + <_> + + 0 -1 6917 -3.7299469113349915e-02 + + -5.8281177282333374e-01 1.3501949608325958e-02 + <_> + + 0 -1 6918 3.0674990266561508e-03 + + 5.6224178522825241e-02 -1.1995050311088562e-01 + <_> + + 0 -1 6919 -3.5402809735387564e-03 + + 6.6515468060970306e-02 -1.1834269762039185e-01 + <_> + + 0 -1 6920 4.1401982307434082e-03 + + 2.0988019183278084e-02 -3.1807440519332886e-01 + <_> + + 0 -1 6921 -1.1183559894561768e-02 + + 1.2467139959335327e-01 -4.1797909885644913e-02 + <_> + + 0 -1 6922 1.0800679447129369e-03 + + 4.5548491179943085e-02 -1.5857310593128204e-01 + <_> + + 0 -1 6923 -7.7602718956768513e-03 + + -1.7031720280647278e-01 3.3989530056715012e-02 + <_> + + 0 -1 6924 -3.1192360911518335e-03 + + 9.6817880868911743e-02 -8.6022533476352692e-02 + <_> + + 0 -1 6925 -1.3673380017280579e-02 + + -2.2536599636077881e-01 1.5587169677019119e-02 + <_> + + 0 -1 6926 -2.0611209329217672e-03 + + -1.5269860625267029e-01 5.0227679312229156e-02 + <_> + + 0 -1 6927 2.2635459899902344e-03 + + -4.2889460921287537e-02 7.6818563044071198e-02 + <_> + + 0 -1 6928 -3.4530080854892731e-02 + + 1.2874439358711243e-01 -6.7660316824913025e-02 + <_> + + 0 -1 6929 6.1309239827096462e-03 + + -6.3456058502197266e-02 6.4237646758556366e-02 + <_> + + 0 -1 6930 -1.0171280242502689e-02 + + -2.9192021489143372e-01 2.6645509526133537e-02 + <_> + + 0 -1 6931 -1.3060650229454041e-01 + + -9.6297067403793335e-01 1.5367489540949464e-03 + <_> + + 0 -1 6932 6.8621779792010784e-03 + + -4.7239519655704498e-02 1.5440399944782257e-01 + <_> + + 0 -1 6933 1.2950079981237650e-03 + + -7.1122348308563232e-02 5.8697238564491272e-02 + <_> + + 0 -1 6934 -5.6443549692630768e-03 + + -1.7261339724063873e-01 4.4769309461116791e-02 + <_> + + 0 -1 6935 1.6346110403537750e-01 + + -2.1536830812692642e-02 3.6825808882713318e-01 + <_> + + 0 -1 6936 1.4170600101351738e-02 + + 2.3462019860744476e-02 -3.0498749017715454e-01 + <_> + + 0 -1 6937 -1.0679910331964493e-01 + + 3.1485679745674133e-01 -9.1049326583743095e-03 + <_> + + 0 -1 6938 7.0258649066090584e-03 + + -6.5418191254138947e-02 1.0200239717960358e-01 + <_> + + 0 -1 6939 -4.3358937837183475e-03 + + 1.1601199954748154e-01 -5.5041059851646423e-02 + <_> + + 0 -1 6940 3.5394240170717239e-02 + + 2.7795480564236641e-02 -2.5534549355506897e-01 + <_> + + 0 -1 6941 2.1599680185317993e-02 + + -1.0513960383832455e-02 2.6087591052055359e-01 + <_> + + 0 -1 6942 4.3032150715589523e-03 + + -4.6745400875806808e-02 1.3318620622158051e-01 + <_> + + 0 -1 6943 7.8372862190008163e-03 + + 6.1899811029434204e-02 -1.2405169755220413e-01 + <_> + + 0 -1 6944 -1.6856989823281765e-03 + + -9.5696307718753815e-02 7.7667310833930969e-02 + <_> + + 0 -1 6945 -4.1602249257266521e-03 + + 6.5850533545017242e-02 -7.6837591826915741e-02 + <_> + + 0 -1 6946 -5.0864819437265396e-02 + + 5.2419060468673706e-01 -1.7342429608106613e-02 + <_> + + 0 -1 6947 -6.4477883279323578e-02 + + -4.1972258687019348e-01 1.2231100350618362e-02 + <_> + + 0 -1 6948 -2.4949579965323210e-03 + + 6.4242206513881683e-02 -9.7457312047481537e-02 + <_> + + 0 -1 6949 3.2167730387300253e-03 + + -3.7902288138866425e-02 8.2197092473506927e-02 + <_> + + 0 -1 6950 -2.3393060546368361e-03 + + -1.0608460009098053e-01 7.2004899382591248e-02 + <_> + + 0 -1 6951 -8.0535542219877243e-03 + + -1.0991869866847992e-01 2.5643279775977135e-02 + <_> + + 0 -1 6952 1.5007739886641502e-02 + + -3.1267128884792328e-02 2.0507030189037323e-01 + <_> + + 0 -1 6953 -4.7144708223640919e-03 + + -1.4058899879455566e-01 4.8687249422073364e-02 + <_> + + 0 -1 6954 -2.7188581228256226e-01 + + -7.7086192369461060e-01 8.2119107246398926e-03 + <_> + + 0 -1 6955 -3.7261729594320059e-03 + + 7.8386418521404266e-02 -6.1110321432352066e-02 + <_> + + 0 -1 6956 8.1726117059588432e-03 + + 2.5872390717267990e-02 -2.4203300476074219e-01 + <_> + + 0 -1 6957 -1.5384130179882050e-01 + + -8.3681619167327881e-01 1.0526239639148116e-03 + <_> + + 0 -1 6958 -4.2209690436720848e-03 + + 1.0987819731235504e-01 -6.0973130166530609e-02 + <_> + + 0 -1 6959 3.4641180187463760e-02 + + 5.9377611614763737e-03 -7.3021429777145386e-01 + <_> + + 0 -1 6960 -1.0757029522210360e-03 + + 6.3253231346607208e-02 -9.3954533338546753e-02 + <_> + + 0 -1 6961 6.0506182489916682e-04 + + -7.2633743286132812e-02 5.4847791790962219e-02 + <_> + + 0 -1 6962 -4.9192002043128014e-03 + + -1.4617989957332611e-01 4.9854889512062073e-02 + <_> + + 0 -1 6963 5.8641340583562851e-02 + + -1.4487889595329762e-02 2.1949279308319092e-01 + <_> + + 0 -1 6964 -9.5993638038635254e-02 + + -4.2456990480422974e-01 1.5611169859766960e-02 + <_> + + 0 -1 6965 -1.7546750605106354e-01 + + -5.7154530286788940e-01 2.7310380246490240e-03 + <_> + + 0 -1 6966 5.3192701190710068e-02 + + -2.0759610459208488e-02 3.1531611084938049e-01 + <_> + + 0 -1 6967 -3.0862109735608101e-02 + + -4.0818691253662109e-01 9.1538606211543083e-03 + <_> + + 0 -1 6968 -2.9243549797683954e-03 + + 1.6538919508457184e-01 -3.7048339843750000e-02 + <_> + + 0 -1 6969 7.9757552593946457e-03 + + 4.0010299533605576e-02 -1.0603089630603790e-01 + <_> + + 0 -1 6970 1.0228200256824493e-01 + + 9.6151717007160187e-03 -6.5299248695373535e-01 + <_> + + 0 -1 6971 2.3435470648109913e-03 + + -4.3119609355926514e-02 1.1908730119466782e-01 + <_> + + 0 -1 6972 -3.3627110533416271e-03 + + 1.0518670082092285e-01 -6.9644443690776825e-02 + <_> + + 0 -1 6973 4.9040392041206360e-03 + + 4.8949901014566422e-02 -1.2949359416961670e-01 + <_> + + 0 -1 6974 4.5119290007278323e-05 + + -1.6148559749126434e-01 4.1733540594577789e-02 + <_> + + 0 -1 6975 1.6195859760046005e-02 + + -1.2759320437908173e-02 2.0746350288391113e-01 + <_> + + 0 -1 6976 -6.4254719763994217e-03 + + -1.3736939430236816e-01 4.3490421026945114e-02 + <_> + + 0 -1 6977 -6.6467811120674014e-04 + + 6.6771537065505981e-02 -7.4648462235927582e-02 + <_> + + 0 -1 6978 -2.3743628989905119e-03 + + -1.2377700209617615e-01 5.1728729158639908e-02 + <_> + + 0 -1 6979 -8.3166018128395081e-02 + + 1.5261100232601166e-01 -2.1502759307622910e-02 + <_> + + 0 -1 6980 1.3301270082592964e-03 + + -6.1925448477268219e-02 1.0591439902782440e-01 + <_> + + 0 -1 6981 9.0925350785255432e-02 + + 6.9404938258230686e-03 -5.1022678613662720e-01 + <_> + + 0 -1 6982 5.7555912062525749e-03 + + 5.2849009633064270e-02 -1.0758169740438461e-01 + <_> + + 0 -1 6983 9.3440711498260498e-04 + + -1.0605130344629288e-01 4.7824278473854065e-02 + <_> + + 0 -1 6984 5.2353799343109131e-02 + + -1.6387209296226501e-02 4.2318668961524963e-01 + <_> + + 0 -1 6985 -2.4307209998369217e-02 + + 1.3521690666675568e-01 -1.0088359937071800e-02 + <_> + + 0 -1 6986 -1.3722239993512630e-02 + + -4.9520999193191528e-01 1.1784340254962444e-02 + <_> + + 0 -1 6987 -1.1442030081525445e-03 + + 4.3818730860948563e-02 -6.9104023277759552e-02 + <_> + + 0 -1 6988 -7.8848190605640411e-02 + + 3.5198599100112915e-01 -1.6464689746499062e-02 + <_> + + 0 -1 6989 1.7305529909208417e-03 + + -6.6790081560611725e-02 8.2463577389717102e-02 + <_> + + 0 -1 6990 -1.2928839772939682e-02 + + -8.1002123653888702e-02 8.5223287343978882e-02 + <_> + + 0 -1 6991 8.7096104398369789e-03 + + -5.0021901726722717e-02 1.3493220508098602e-01 + <_> + + 0 -1 6992 -6.3483066856861115e-02 + + -7.7681750059127808e-01 7.0912609808146954e-03 + <_> + + 0 -1 6993 -4.3746097944676876e-03 + + -1.3329389691352844e-01 4.2627040296792984e-02 + <_> + + 0 -1 6994 -4.3985169380903244e-02 + + 1.5131869912147522e-01 -4.0801558643579483e-02 + <_> + + 0 -1 6995 -6.0488767921924591e-03 + + -5.3645741194486618e-02 1.7832729965448380e-02 + <_> + + 0 -1 6996 -5.1487190648913383e-04 + + 6.2102951109409332e-02 -9.5339402556419373e-02 + <_> + + 0 -1 6997 -3.3046479802578688e-03 + + -2.4732820689678192e-01 2.1977340802550316e-02 + <_> + + 0 -1 6998 -3.0949179199524224e-04 + + -3.4656081348657608e-02 1.9599510729312897e-01 + <_> + + 0 -1 6999 -8.3323381841182709e-03 + + 1.7436729371547699e-01 -3.2631549984216690e-02 + <_> + + 0 -1 7000 6.6935829818248749e-03 + + 2.5050759315490723e-02 -2.7362829446792603e-01 + <_> + + 0 -1 7001 1.4068570453673601e-03 + + -2.9797010123729706e-02 6.5752580761909485e-02 + <_> + + 0 -1 7002 4.0725398808717728e-02 + + 1.4967479743063450e-02 -3.7111800909042358e-01 + <_> + + 0 -1 7003 -2.1524120122194290e-02 + + 3.7294471263885498e-01 -1.4142910018563271e-02 + <_> + + 0 -1 7004 4.1689630597829819e-02 + + 8.3227548748254776e-03 -6.6822868585586548e-01 + <_> + + 0 -1 7005 -3.2075429335236549e-03 + + 6.2741018831729889e-02 -1.3061609864234924e-01 + <_> + + 0 -1 7006 2.6418430730700493e-02 + + 6.6760168410837650e-03 -7.5557070970535278e-01 + <_> + + 0 -1 7007 -5.1153838634490967e-02 + + -5.0382971763610840e-01 2.2476969752460718e-03 + <_> + + 0 -1 7008 1.5723450342193246e-03 + + -6.0214620083570480e-02 7.9933151602745056e-02 + <_> + + 0 -1 7009 1.2616170570254326e-03 + + 4.4674988836050034e-02 -8.3830736577510834e-02 + <_> + + 0 -1 7010 -2.8608670458197594e-02 + + -3.0249071121215820e-01 1.6254810616374016e-02 + <_> + + 0 -1 7011 1.4726459980010986e-02 + + -4.9459420144557953e-02 1.1457759886980057e-01 + <_> + + 0 -1 7012 3.5319201648235321e-02 + + 1.1276819743216038e-02 -4.8055538535118103e-01 + <_> + + 0 -1 7013 2.2470189630985260e-01 + + -1.0596769861876965e-02 5.4026299715042114e-01 + <_> + + 0 -1 7014 -7.0188841782510281e-03 + + -1.1836989969015121e-01 5.2995279431343079e-02 + <_> + + 0 -1 7015 -2.9194930568337440e-02 + + 2.8498569130897522e-01 -1.4652130194008350e-02 + <_> + + 0 -1 7016 -1.6918469918891788e-03 + + 6.7731522023677826e-02 -7.4129588901996613e-02 + <_> + + 0 -1 7017 1.3110489584505558e-02 + + -4.0418051183223724e-02 9.6537798643112183e-02 + <_> + + 0 -1 7018 7.5334981374908239e-05 + + -7.3065057396888733e-02 7.1049667894840240e-02 + <_> + + 0 -1 7019 2.9962710104882717e-03 + + 2.4401130154728889e-02 -1.0679820179939270e-01 + <_> + + 0 -1 7020 -4.1236128658056259e-02 + + 2.5446560978889465e-01 -1.9801229238510132e-02 + <_> + + 0 -1 7021 2.2827479988336563e-03 + + -5.9622149914503098e-02 8.6871787905693054e-02 + <_> + + 0 -1 7022 -2.1318379731383175e-04 + + 4.0506061166524887e-02 -1.2357629835605621e-01 + <_> + + 0 -1 7023 4.1725938208401203e-03 + + 4.1674789041280746e-02 -1.3029229640960693e-01 + <_> + + 0 -1 7024 -1.7945859581232071e-02 + + 2.5395989418029785e-01 -2.0783929154276848e-02 + <_> + + 0 -1 7025 -6.0957930982112885e-02 + + -5.9399938583374023e-01 5.6327730417251587e-03 + <_> + + 0 -1 7026 -8.3080737385898829e-04 + + 4.8011310398578644e-02 -1.1289869993925095e-01 + <_> + + 0 -1 7027 2.7037229388952255e-02 + + 2.6524379849433899e-02 -1.7208619415760040e-01 + <_> + + 0 -1 7028 3.7293829955160618e-03 + + -5.0795450806617737e-02 1.1093439906835556e-01 + <_> + + 0 -1 7029 -1.0271129431203008e-03 + + -8.9025869965553284e-02 4.9861740320920944e-02 + <_> + + 0 -1 7030 4.3261310202069581e-04 + + -7.6471529901027679e-02 7.2490736842155457e-02 + <_> + + 0 -1 7031 -8.3997912704944611e-02 + + 4.0178960561752319e-01 -8.4397885948419571e-03 + <_> + + 0 -1 7032 -3.4407388884574175e-03 + + -1.4326460659503937e-01 3.9170410484075546e-02 + <_> + + 0 -1 7033 -2.1418789401650429e-02 + + 1.5835569798946381e-01 -1.3701870106160641e-02 + <_> + + 0 -1 7034 2.4877830874174833e-03 + + -5.6875430047512054e-02 1.0218720138072968e-01 + <_> + + 0 -1 7035 -1.0390300303697586e-03 + + 8.1530712544918060e-02 -4.7183711081743240e-02 + <_> + + 0 -1 7036 4.6788761392235756e-04 + + 7.0995680987834930e-02 -8.8464602828025818e-02 + <_> + + 0 -1 7037 2.7436260133981705e-02 + + 1.5190550126135349e-02 -1.2117669731378555e-01 + <_> + + 0 -1 7038 -5.8917858405038714e-04 + + -8.1471607089042664e-02 6.8480782210826874e-02 + <_> + + 0 -1 7039 7.9439081251621246e-02 + + -7.3907868936657906e-03 1.4902259409427643e-01 + <_> + + 0 -1 7040 -3.5153090953826904e-02 + + 4.1942089796066284e-01 -1.2480289675295353e-02 + <_> + + 0 -1 7041 6.8230971693992615e-02 + + 9.3489149585366249e-03 -2.5965470075607300e-01 + <_> + + 0 -1 7042 8.1733033061027527e-02 + + 1.5513390302658081e-02 -3.2704469561576843e-01 + <_> + + 0 -1 7043 -3.0718350317329168e-03 + + 6.6938467323780060e-02 -4.2225748300552368e-02 + <_> + + 0 -1 7044 5.6301880627870560e-02 + + -2.5680650025606155e-02 2.1728150546550751e-01 + <_> + + 0 -1 7045 2.5166019797325134e-02 + + 2.3228300735354424e-02 -9.2791043221950531e-02 + <_> + + 0 -1 7046 6.5088197588920593e-02 + + 6.8949609994888306e-03 -8.2639491558074951e-01 + <_> + + 0 -1 7047 2.2007930092513561e-03 + + -7.4394248425960541e-02 8.7209381163120270e-02 + <_> + + 0 -1 7048 -8.8553391396999359e-03 + + -1.3203050196170807e-01 3.7658430635929108e-02 + <_> + + 0 -1 7049 6.0942411422729492e-02 + + 1.0197839699685574e-02 -5.4252862930297852e-01 + <_> + + 0 -1 7050 -5.2589550614356995e-04 + + 4.8835718631744385e-01 -1.1828079819679260e-02 + <_> + + 0 -1 7051 1.3005370274186134e-03 + + -3.8898441195487976e-01 1.4226339757442474e-02 + <_> + + 0 -1 7052 -1.6531689465045929e-01 + + 4.0004518628120422e-01 -1.2666770257055759e-02 + <_> + + 0 -1 7053 1.8595480360090733e-03 + + 4.7802660614252090e-02 -1.1368919909000397e-01 + <_> + + 0 -1 7054 1.3065179809927940e-02 + + -3.3714219927787781e-02 1.5762269496917725e-01 + <_> + + 0 -1 7055 3.1612750142812729e-02 + + 7.6767429709434509e-03 -5.9641021490097046e-01 + <_> + + 0 -1 7056 -2.2566620260477066e-02 + + 1.0603710263967514e-01 -4.7383170574903488e-02 + <_> + + 0 -1 7057 6.2679480761289597e-03 + + 3.4595031291246414e-02 -7.7622346580028534e-02 + <_> + + 0 -1 7058 -3.1758081167936325e-02 + + -3.2147431373596191e-01 1.5986470505595207e-02 + <_> + + 0 -1 7059 -2.1477609872817993e-02 + + 2.0527760684490204e-01 -1.8074609339237213e-02 + <_> + + 0 -1 7060 1.8594050779938698e-02 + + 1.6375590115785599e-02 -2.9955211281776428e-01 + <_> + + 0 -1 7061 1.4604429714381695e-02 + + -2.0433440804481506e-02 2.2725510597229004e-01 + <_> + + 0 -1 7062 1.9902919884771109e-03 + + -5.8518249541521072e-02 1.0997360199689865e-01 + <_> + + 0 -1 7063 9.7299525514245033e-03 + + 3.1371861696243286e-02 -4.4369909912347794e-02 + <_> + + 0 -1 7064 -2.3401379585266113e-03 + + 9.6488200128078461e-02 -5.7249929755926132e-02 + <_> + + 0 -1 7065 -1.9590060692280531e-03 + + -1.4031149446964264e-01 1.3546340167522430e-02 + <_> + + 0 -1 7066 8.4066856652498245e-03 + + 6.6289551556110382e-02 -8.0348283052444458e-02 + <_> + + 0 -1 7067 5.2574548870325089e-02 + + -3.6297008395195007e-02 1.4638340473175049e-01 + <_> + + 0 -1 7068 4.1065202094614506e-03 + + 3.0372349545359612e-02 -1.8155770003795624e-01 + <_> + + 0 -1 7069 -4.1818427853286266e-03 + + 5.5590789765119553e-02 -3.7148520350456238e-02 + <_> + + 0 -1 7070 -1.5470250509679317e-03 + + 1.0347150266170502e-01 -4.6374730765819550e-02 + <_> + + 0 -1 7071 -8.2695618038997054e-04 + + -9.3296989798545837e-02 4.3734461069107056e-02 + <_> + + 0 -1 7072 4.1385791264474392e-03 + + -4.4266488403081894e-02 1.0968980193138123e-01 + <_> + + 0 -1 7073 -3.3684119582176208e-02 + + -6.4337152242660522e-01 7.9893283545970917e-03 + <_> + + 0 -1 7074 5.2798818796873093e-02 + + -1.2490300461649895e-02 4.1572460532188416e-01 + <_> + + 0 -1 7075 -2.9699259996414185e-01 + + -1.9598379731178284e-01 9.4300797209143639e-03 + <_> + + 0 -1 7076 1.1196310073137283e-01 + + 1.1162719689309597e-02 -4.6838051080703735e-01 + <_> + + 0 -1 7077 -1.8544310703873634e-02 + + -7.4080787599086761e-02 1.9528210163116455e-02 + <_> + + 0 -1 7078 -1.0937429964542389e-02 + + 8.8206529617309570e-02 -6.2830187380313873e-02 + <_> + + 0 -1 7079 2.7186619117856026e-03 + + 3.0855480581521988e-02 -9.2405863106250763e-02 + <_> + + 0 -1 7080 2.0727319642901421e-02 + + -5.2543301135301590e-02 1.0608410090208054e-01 + <_> + + 0 -1 7081 -2.7961930260062218e-02 + + 2.1735160052776337e-01 -2.1356139332056046e-02 + <_> + + 0 -1 7082 -9.0406360104680061e-03 + + -1.9535389542579651e-01 3.0077420175075531e-02 + <_> + + 0 -1 7083 -1.0906349867582321e-02 + + 1.4888639748096466e-01 -3.1188679859042168e-02 + <_> + + 0 -1 7084 -3.8616119418293238e-03 + + -1.2094800174236298e-01 4.5144081115722656e-02 + <_> + + 0 -1 7085 4.3162601068615913e-03 + + -1.0713649913668633e-02 2.8116491436958313e-01 + <_> + + 0 -1 7086 -1.4098359970375896e-03 + + 6.4685508608818054e-02 -9.9471300840377808e-02 + <_> + + 0 -1 7087 3.2964099664241076e-03 + + 1.4295330643653870e-01 -3.1101010739803314e-02 + <_> + + 0 -1 7088 -2.9802869539707899e-03 + + -2.4578930437564850e-01 2.1760260686278343e-02 + <_> + + 0 -1 7089 6.7178793251514435e-02 + + 3.3457649406045675e-03 -4.5685601234436035e-01 + <_> + + 0 -1 7090 2.9182849451899529e-02 + + -1.7016859725117683e-02 3.3545929193496704e-01 + <_> + + 0 -1 7091 1.7935150535777211e-03 + + 3.0516179278492928e-02 -1.2526740133762360e-01 + <_> + + 0 -1 7092 2.0465679466724396e-02 + + -1.0909980162978172e-02 4.3552139401435852e-01 + <_> + + 0 -1 7093 -2.6115079526789486e-04 + + 3.8759760558605194e-02 -6.4098693430423737e-02 + <_> + + 0 -1 7094 3.7161160726100206e-03 + + 3.7150889635086060e-02 -1.5467320382595062e-01 + <_> + + 0 -1 7095 -7.4094999581575394e-03 + + -8.2704223692417145e-02 6.2809906899929047e-02 + <_> + + 0 -1 7096 1.7094809561967850e-02 + + -4.8347331583499908e-02 9.8770812153816223e-02 + <_> + + 0 -1 7097 -3.0473200604319572e-03 + + -1.0638830065727234e-01 3.0948650091886520e-02 + <_> + + 0 -1 7098 3.4502498805522919e-02 + + 1.0997230187058449e-02 -4.2861738801002502e-01 + <_> + + 0 -1 7099 -2.6834919117391109e-03 + + -1.4986449480056763e-01 3.3157639205455780e-02 + <_> + + 0 -1 7100 9.2392861843109131e-03 + + -3.7733338773250580e-02 1.5778259932994843e-01 + <_> + + 0 -1 7101 8.8205106556415558e-02 + + -1.0704769752919674e-02 3.2353109121322632e-01 + <_> + + 0 -1 7102 7.7868886291980743e-02 + + 1.0804659686982632e-02 -4.4243350625038147e-01 + <_> + + 0 -1 7103 -3.1202291138470173e-03 + + 2.0444509387016296e-01 -2.3976439610123634e-02 + <_> + + 0 -1 7104 2.6000461075454950e-03 + + 4.5765019953250885e-02 -1.0138899832963943e-01 + <_> + + 0 -1 7105 7.0194108411669731e-03 + + 2.5740729644894600e-02 -4.9060840159654617e-02 + <_> + + 0 -1 7106 -2.4108150973916054e-03 + + -1.1837480217218399e-01 4.8649929463863373e-02 + <_> + + 0 -1 7107 4.9886249005794525e-02 + + -1.4449880458414555e-02 2.0894059538841248e-01 + <_> + + 0 -1 7108 -7.2655039839446545e-03 + + 8.9042186737060547e-02 -4.9845550209283829e-02 + <_> + + 0 -1 7109 1.0560270398855209e-02 + + 5.2911709994077682e-02 -1.1509139835834503e-01 + <_> + + 0 -1 7110 5.6417449377477169e-03 + + -6.8672746419906616e-02 7.7489316463470459e-02 + <_> + + 0 -1 7111 4.3234648182988167e-03 + + -7.9207062721252441e-02 5.3491309285163879e-02 + <_> + + 0 -1 7112 1.1184070259332657e-02 + + 7.1656093001365662e-02 -1.0634940117597580e-01 + <_> + + 0 -1 7113 -9.9230423569679260e-02 + + 3.7169519066810608e-01 -6.6843931563198566e-03 + <_> + + 0 -1 7114 -4.4848727993667126e-03 + + 7.5577408075332642e-02 -6.9481082260608673e-02 + <_> + + 0 -1 7115 -1.9104180857539177e-02 + + -1.7291219532489777e-01 1.1360409669578075e-02 + <_> + + 0 -1 7116 -1.7672680551186204e-03 + + 9.2567160725593567e-02 -5.2470050752162933e-02 + <_> + + 0 -1 7117 5.9071529656648636e-02 + + 9.2153968289494514e-03 -2.6687648892402649e-01 + <_> + + 0 -1 7118 -3.4362819045782089e-02 + + -5.7914721965789795e-01 7.9972539097070694e-03 + <_> + + 0 -1 7119 5.6766539812088013e-02 + + 5.8937501162290573e-03 -5.2275192737579346e-01 + <_> + + 0 -1 7120 -1.2173549830913544e-01 + + -5.2229601144790649e-01 7.9296948388218880e-03 + <_> + + 0 -1 7121 3.4274619072675705e-02 + + -1.7069879919290543e-02 1.2958990037441254e-01 + <_> + + 0 -1 7122 -6.7191021516919136e-03 + + 1.1187720298767090e-01 -4.4685728847980499e-02 + <_> + + 0 -1 7123 3.1698260456323624e-02 + + 2.8529319912195206e-02 -1.1617069691419601e-01 + <_> + + 0 -1 7124 -9.5326751470565796e-02 + + 3.6362048983573914e-01 -1.3523319736123085e-02 + <_> + + 0 -1 7125 1.2620569765567780e-01 + + 6.0956259258091450e-03 -8.4947621822357178e-01 + <_> + + 0 -1 7126 -2.7324870228767395e-02 + + -2.9046019911766052e-01 1.4303879812359810e-02 + <_> + + 0 -1 7127 -7.3618680238723755e-02 + + 4.8824289441108704e-01 -1.0269859805703163e-02 + <_> + + 0 -1 7128 5.0417389720678329e-03 + + -8.4770277142524719e-02 5.6035611778497696e-02 + <_> + + 0 -1 7129 2.7569099329411983e-03 + + -4.8269480466842651e-02 3.8525570183992386e-02 + <_> + + 0 -1 7130 2.1967370063066483e-02 + + 8.6190566420555115e-02 -8.0797329545021057e-02 + <_> + + 0 -1 7131 -3.8637530803680420e-01 + + -8.3998018503189087e-01 3.6657860036939383e-03 + <_> + + 0 -1 7132 -4.1083219647407532e-01 + + -9.7182428836822510e-01 3.9403690025210381e-03 + <_> + + 0 -1 7133 -4.1033279150724411e-02 + + 1. -3.3212041016668081e-03 + <_> + + 0 -1 7134 2.4305000901222229e-02 + + 1.8234970048069954e-02 -2.4954320490360260e-01 + <_> + + 0 -1 7135 1.6170740127563477e-03 + + -1.2958160042762756e-01 3.2725200057029724e-02 + <_> + + 0 -1 7136 4.4785268604755402e-02 + + -2.3868849501013756e-02 1.9763439893722534e-01 + <_> + + 0 -1 7137 4.0209591388702393e-02 + + 5.3034191951155663e-03 -6.6284531354904175e-01 + <_> + + 0 -1 7138 3.3616109285503626e-03 + + 3.0226179957389832e-01 -1.6103280708193779e-02 + <_> + + 0 -1 7139 -1.1624400503933430e-03 + + -2.7934190630912781e-01 1.8276169896125793e-02 + <_> + + 0 -1 7140 5.5524259805679321e-02 + + -6.5288958139717579e-03 7.5690442323684692e-01 + <_> + + 0 -1 7141 4.6308599412441254e-03 + + 2.8254630044102669e-02 -9.4945177435874939e-02 + <_> + + 0 -1 7142 2.7387610170990229e-03 + + -4.6980410814285278e-02 9.4511218369007111e-02 + <_> + + 0 -1 7143 2.9127181041985750e-03 + + -2.2264670580625534e-02 7.2091333568096161e-02 + <_> + + 0 -1 7144 -2.3628510534763336e-02 + + -3.9147511124610901e-01 1.2840859591960907e-02 + <_> + + 0 -1 7145 7.1669870521873236e-04 + + 2.0413680002093315e-02 -1.6587799787521362e-01 + <_> + + 0 -1 7146 3.2723631709814072e-02 + + 8.5352789610624313e-03 -5.1838648319244385e-01 + <_> + + 0 -1 7147 5.6393269449472427e-02 + + -2.4937599897384644e-02 1.9025549292564392e-01 + <_> + + 0 -1 7148 2.9392001032829285e-01 + + 5.7944031432271004e-03 -8.5530591011047363e-01 + <_> + + 0 -1 7149 -5.6904228404164314e-03 + + -2.4354919791221619e-01 1.0601679794490337e-02 + <_> + + 0 -1 7150 9.8184328526258469e-03 + + -1.3599770143628120e-02 3.3795401453971863e-01 + <_> + + 0 -1 7151 -3.6970589309930801e-02 + + -5.7309299707412720e-01 1.0090970434248447e-02 + <_> + + 0 -1 7152 1.8607610836625099e-02 + + -1.2938570231199265e-02 4.1123750805854797e-01 + <_> + + 0 -1 7153 -1.5049210051074624e-03 + + -8.4678567945957184e-02 3.3724751323461533e-02 + <_> + + 0 -1 7154 -3.9040379226207733e-02 + + -4.7390699386596680e-01 9.5385275781154633e-03 + <_> + + 0 -1 7155 -3.4379279240965843e-03 + + 1.4112870395183563e-01 -2.2367769852280617e-02 + <_> + + 0 -1 7156 -1.1330900015309453e-03 + + -1.3950189948081970e-01 3.2505869865417480e-02 + <_> + + 0 -1 7157 -6.5370470285415649e-02 + + 1.4801700413227081e-01 -2.2039920091629028e-02 + <_> + + 0 -1 7158 -2.0970970392227173e-01 + + -7.4392271041870117e-01 7.5829490087926388e-03 + <_> + + 0 -1 7159 -5.8827060274779797e-03 + + -6.3253037631511688e-02 2.3363839834928513e-02 + <_> + + 0 -1 7160 -2.9759449884295464e-02 + + 4.8733299970626831e-01 -9.2995148152112961e-03 + <_> + + 0 -1 7161 -5.3064361214637756e-02 + + -3.8064101338386536e-01 5.6431228294968605e-03 + <_> + + 0 -1 7162 6.6667333245277405e-02 + + 4.6323328278958797e-03 -9.1536080837249756e-01 + <_> + + 0 -1 7163 -9.2325232923030853e-02 + + 2.9184600710868835e-01 -7.4540497735142708e-03 + <_> + + 0 -1 7164 8.5644036531448364e-02 + + -1.0288530029356480e-02 4.1251561045646667e-01 + <_> + + 0 -1 7165 2.2969970107078552e-01 + + -4.6802540309727192e-03 3.6509141325950623e-01 + <_> + + 0 -1 7166 8.7508037686347961e-03 + + 7.7816851437091827e-02 -6.3657559454441071e-02 + <_> + + 0 -1 7167 5.7104961015284061e-03 + + -5.9653200209140778e-02 4.2732730507850647e-02 + <_> + + 0 -1 7168 -4.8026451840996742e-03 + + -9.8918512463569641e-02 4.4956978410482407e-02 + <_> + + 0 -1 7169 3.2986800651997328e-03 + + 3.3164538443088531e-02 -1.3477820158004761e-01 + <_> + + 0 -1 7170 -4.0092850103974342e-03 + + 1.3551770150661469e-01 -3.7139780819416046e-02 + <_> + + 0 -1 7171 -7.7049341052770615e-04 + + 2.6690600439906120e-02 -8.4502391517162323e-02 + <_> + + 0 -1 7172 2.3074099794030190e-02 + + -2.6398969814181328e-02 1.8520879745483398e-01 + <_> + + 0 -1 7173 9.9315540865063667e-03 + + 2.1702500060200691e-02 -1.4147830009460449e-01 + <_> + + 0 -1 7174 -4.3977480381727219e-02 + + -5.9306997060775757e-01 7.6594059355556965e-03 + <_> + + 0 -1 7175 -2.1170598920434713e-03 + + 9.6989497542381287e-02 -4.9988958984613419e-02 + <_> + + 0 -1 7176 -1.1178949847817421e-02 + + -1.5058480203151703e-01 3.1385689973831177e-02 + <_> + + 0 -1 7177 -1.1888720327988267e-03 + + 8.7665252387523651e-02 -6.8861946463584900e-02 + <_> + + 0 -1 7178 -1.2205859646201134e-02 + + 8.2670666277408600e-02 -6.5326899290084839e-02 + <_> + + 0 -1 7179 -3.7645969539880753e-02 + + -4.8226159811019897e-01 5.5899759754538536e-03 + <_> + + 0 -1 7180 -1.7758710309863091e-03 + + -9.1606341302394867e-02 5.8380361646413803e-02 + <_> + + 0 -1 7181 -1.1116299778223038e-02 + + 1.4710609614849091e-01 -2.9255999252200127e-02 + <_> + + 0 -1 7182 4.3831788934767246e-04 + + -1.0494749993085861e-01 4.4445890933275223e-02 + <_> + + 0 -1 7183 -9.8695211112499237e-02 + + 2.6521149277687073e-01 -9.5453672111034393e-03 + <_> + + 0 -1 7184 1.1736120097339153e-02 + + 2.8968680649995804e-02 -1.5355010330677032e-01 + <_> + + 0 -1 7185 -3.6601141095161438e-02 + + 2.4063609540462494e-01 -2.2525599226355553e-02 + <_> + + 0 -1 7186 -5.2371289581060410e-02 + + -4.9006670713424683e-01 1.0319559834897518e-02 + <_> + + 0 -1 7187 -3.1134579330682755e-03 + + 6.2287129461765289e-02 -4.5234039425849915e-02 + <_> + + 0 -1 7188 1.0345289483666420e-03 + + -5.6548729538917542e-02 1.1970130354166031e-01 + <_> + + 0 -1 7189 -2.3240610025823116e-03 + + -9.5265246927738190e-02 3.2402478158473969e-02 + <_> + + 0 -1 7190 -2.7458980679512024e-02 + + 2.9548159241676331e-01 -1.6016509383916855e-02 + <_> + + 0 -1 7191 -9.3150883913040161e-03 + + -1.1465849727392197e-01 2.8171680867671967e-02 + <_> + + 0 -1 7192 7.6356199570000172e-03 + + 2.9264479875564575e-02 -1.6166350245475769e-01 + <_> + + 0 -1 7193 1.6107590869069099e-02 + + -3.0923349782824516e-02 1.6677390038967133e-01 + <_> + + 0 -1 7194 6.1460789293050766e-02 + + 8.1282109022140503e-03 -5.4833447933197021e-01 + <_> + + 0 -1 7195 4.3377321213483810e-02 + + -7.7782347798347473e-03 3.5578370094299316e-01 + <_> + + 0 -1 7196 -1.5809480100870132e-02 + + -3.1237179040908813e-01 1.4910760335624218e-02 + <_> + + 0 -1 7197 -4.3263029307126999e-02 + + 4.7393178939819336e-01 -9.4731850549578667e-03 + <_> + + 0 -1 7198 1.0775650152936578e-03 + + -1.0892640054225922e-01 5.0780758261680603e-02 + <_> + + 0 -1 7199 -6.8012787960469723e-03 + + -9.3841306865215302e-02 3.8555730134248734e-02 + <_> + + 0 -1 7200 -3.8845991366542876e-04 + + 6.4071871340274811e-02 -9.3577213585376740e-02 + <_> + + 0 -1 7201 3.8177249953150749e-03 + + -4.7590740025043488e-02 7.1997672319412231e-02 + <_> + + 0 -1 7202 -3.1246189028024673e-03 + + 1.5269869565963745e-01 -4.8789650201797485e-02 + <_> + + 0 -1 7203 6.0980509966611862e-02 + + 8.0068446695804596e-03 -6.7602759599685669e-01 + <_> + + 0 -1 7204 2.1819709800183773e-03 + + -6.8491749465465546e-02 7.5863577425479889e-02 + <_> + + 0 -1 7205 2.4469599593430758e-03 + + -7.4371293187141418e-02 3.2011859118938446e-02 + <_> + + 0 -1 7206 1.4674840494990349e-03 + + -1.1912509799003601e-01 4.6667739748954773e-02 + <_> + + 0 -1 7207 -2.1786419674754143e-03 + + -6.5324276685714722e-02 7.6355278491973877e-02 + <_> + + 0 -1 7208 -2.8284740983508527e-04 + + 5.8292400091886520e-02 -8.7847188115119934e-02 + <_> + + 0 -1 7209 1.4723110012710094e-02 + + 1.9820490479469299e-01 -2.4962980300188065e-02 + <_> + + 0 -1 7210 4.6598021872341633e-03 + + -9.3732737004756927e-02 5.4197840392589569e-02 + <_> + + 0 -1 7211 -6.0316991060972214e-02 + + -6.2958812713623047e-01 6.8706739693880081e-03 + <_> + + 0 -1 7212 -3.6654649302363396e-03 + + 3.6130189895629883e-02 -1.2816099822521210e-01 + <_> + + 0 -1 7213 1.4875479973852634e-02 + + -2.4313909932971001e-02 4.6657409518957138e-02 + <_> + + 0 -1 7214 1.1842879652976990e-01 + + 1.0476130060851574e-02 -5.1786392927169800e-01 + <_> + + 0 -1 7215 1.9809199869632721e-01 + + 1.0157800279557705e-02 -4.1872209310531616e-01 + <_> + + 0 -1 7216 -1.0167530179023743e-01 + + -8.5121291875839233e-01 4.4935508631169796e-03 + <_> + + 0 -1 7217 -3.0325200408697128e-02 + + -3.1803390383720398e-01 6.4301840029656887e-03 + <_> + + 0 -1 7218 3.4531850367784500e-02 + + -1.2561430223286152e-02 3.4778198599815369e-01 + <_> + + 0 -1 7219 -3.5133380442857742e-02 + + 1.1475030332803726e-01 -1.7527149990200996e-02 + <_> + + 0 -1 7220 5.3501729853451252e-03 + + 3.5263419151306152e-02 -1.3867680728435516e-01 + <_> + + 0 -1 7221 3.1209299340844154e-02 + + -2.0925100892782211e-02 1.4748610556125641e-01 + <_> + + 0 -1 7222 -5.5827602045610547e-04 + + -9.5544241368770599e-02 5.6234899908304214e-02 + <_> + + 0 -1 7223 -2.1599860489368439e-01 + + 5.9710198640823364e-01 -3.9994427934288979e-03 + <_> + + 0 -1 7224 7.7018201351165771e-02 + + -1.2182369828224182e-02 3.5995039343833923e-01 + <_> + + 0 -1 7225 -2.5808349251747131e-02 + + -1.9994600117206573e-01 1.6562040895223618e-02 + <_> + + 0 -1 7226 4.0148189291357994e-03 + + 3.8874860852956772e-02 -1.1775989830493927e-01 + <_> + + 0 -1 7227 7.4287859206378926e-06 + + 3.1405460089445114e-02 -4.9142509698867798e-02 + <_> + + 0 -1 7228 -2.8249230235815048e-03 + + -5.5889118462800980e-02 1.1791130155324936e-01 + <_> + + 0 -1 7229 -2.2713130339980125e-02 + + 1.0733339935541153e-01 -4.1647680103778839e-02 + <_> + + 0 -1 7230 -1.0052169673144817e-02 + + -1.4102290570735931e-01 3.7707269191741943e-02 + <_> + + 0 -1 7231 -2.1023969352245331e-01 + + -6.3184642791748047e-01 3.6316630430519581e-03 + <_> + + 0 -1 7232 -1.1812710203230381e-02 + + 1.2123010307550430e-01 -5.0373788923025131e-02 + <_> + + 0 -1 7233 6.3666589558124542e-03 + + 3.0198849737644196e-02 -9.5920257270336151e-02 + <_> + + 0 -1 7234 -1.2146410346031189e-01 + + -6.8696069717407227e-01 6.8671889603137970e-03 + <_> + + 0 -1 7235 2.3568300530314445e-02 + + -1.0376869700849056e-02 2.6333120465278625e-01 + <_> + + 0 -1 7236 -4.9841329455375671e-03 + + 5.2314449101686478e-02 -8.6597919464111328e-02 + <_> + + 0 -1 7237 1.4171230141073465e-03 + + -4.1445188224315643e-02 9.3332767486572266e-02 + <_> + + 0 -1 7238 1.6522710211575031e-03 + + 2.7292339131236076e-02 -1.7193740606307983e-01 + <_> + + 0 -1 7239 -4.2191468179225922e-02 + + 7.7588337659835815e-01 -2.4552440736442804e-03 + <_> + + 0 -1 7240 -1.5193390427157283e-03 + + 2.3297169804573059e-01 -1.9499920308589935e-02 + <_> + + 0 -1 7241 -5.9203859418630600e-03 + + -8.3495929837226868e-02 1.9756000488996506e-02 + <_> + + 0 -1 7242 6.4658280462026596e-03 + + -4.0668301284313202e-02 1.2236029654741287e-01 + <_> + + 0 -1 7243 -4.8110671341419220e-02 + + -3.1629499793052673e-01 1.2694340199232101e-02 + <_> + + 0 -1 7244 5.0246939063072205e-03 + + 3.1356900930404663e-02 -1.9190339744091034e-01 + <_> + + 0 -1 7245 1.1158010363578796e-01 + + -1.4073889702558517e-02 1.7848959565162659e-01 + <_> + + 0 -1 7246 -6.4665876328945160e-02 + + -5.6230849027633667e-01 8.2082729786634445e-03 + <_> + + 0 -1 7247 -5.7942468672990799e-02 + + 7.7341747283935547e-01 -4.3547940440475941e-03 + <_> + + 0 -1 7248 -8.1669846549630165e-03 + + 2.1019349992275238e-01 -2.0802220329642296e-02 + <_> + + 0 -1 7249 2.8506839647889137e-02 + + 8.1413127481937408e-02 -6.2663510441780090e-02 + <_> + + 0 -1 7250 2.4857679381966591e-03 + + -1.5635970234870911e-01 3.5210859030485153e-02 + <_> + + 0 -1 7251 1.9798949360847473e-02 + + 1.1353739537298679e-02 -1.6531160473823547e-01 + <_> + + 0 -1 7252 -2.7027919888496399e-02 + + 2.8912219405174255e-01 -1.6753070056438446e-02 + <_> + + 0 -1 7253 -6.9706928916275501e-03 + + -2.5769388675689697e-01 1.6355020925402641e-02 + <_> + + 0 -1 7254 1.1425119591876864e-03 + + -4.1056800633668900e-02 1.1580900102853775e-01 + <_> + + 0 -1 7255 -1.3041249476373196e-03 + + 5.1082979887723923e-02 -1.1724369972944260e-01 + <_> + + 0 -1 7256 3.7698419764637947e-03 + + 5.8557331562042236e-02 -8.2840107381343842e-02 + <_> + + 0 -1 7257 -4.8689868301153183e-02 + + -3.8769158720970154e-01 8.6165666580200195e-03 + <_> + + 0 -1 7258 -1.1471740156412125e-01 + + 1.3444100320339203e-01 -4.2848691344261169e-02 + <_> + + 0 -1 7259 2.3503519594669342e-02 + + 3.8586359005421400e-03 -4.3615299463272095e-01 + <_> + + 0 -1 7260 -5.9582752874121070e-04 + + 4.2376730591058731e-02 -1.2161590158939362e-01 + <_> + + 0 -1 7261 5.4052029736340046e-03 + + -2.3753000423312187e-02 2.0137269794940948e-01 + <_> + + 0 -1 7262 9.1158300638198853e-03 + + 2.8088169172406197e-02 -1.9667729735374451e-01 + <_> + + 0 -1 7263 3.3211729023605585e-03 + + -5.1258899271488190e-02 4.7993980348110199e-02 + <_> + + 0 -1 7264 1.2975499965250492e-02 + + 1.1851020157337189e-02 -3.9444020390510559e-01 + <_> + + 0 -1 7265 -5.0546238198876381e-03 + + -1.0956159979104996e-01 4.2662780731916428e-02 + <_> + + 0 -1 7266 -7.6824478805065155e-02 + + 7.6269572973251343e-01 -6.6229291260242462e-03 + <_> + + 0 -1 7267 -1.8690669676288962e-03 + + 4.0112659335136414e-02 -7.1398198604583740e-02 + <_> + + 0 -1 7268 -6.0407500714063644e-03 + + 1.2614290416240692e-01 -3.9585150778293610e-02 + <_> + + 0 -1 7269 -4.5013230293989182e-02 + + -2.1871440112590790e-01 6.5213250927627087e-03 + <_> + + 0 -1 7270 3.8492688909173012e-03 + + -9.2213302850723267e-02 6.6925182938575745e-02 + <_> + + 0 -1 7271 -4.3247821740806103e-03 + + 1.4973750710487366e-01 -3.1123559921979904e-02 + <_> + + 0 -1 7272 -2.6776840910315514e-02 + + -1.1432229727506638e-01 5.3090259432792664e-02 + <_> + + 0 -1 7273 2.0645130425691605e-03 + + -3.8483418524265289e-02 7.1507766842842102e-02 + <_> + + 0 -1 7274 5.7206518948078156e-02 + + 1.2463140301406384e-02 -3.9884459972381592e-01 + <_> + + 0 -1 7275 7.7696829102933407e-03 + + -2.4309959262609482e-02 6.1120841652154922e-02 + <_> + + 0 -1 7276 2.8191099409013987e-03 + + 6.2243871390819550e-02 -7.9774282872676849e-02 + <_> + + 0 -1 7277 -5.1747109740972519e-02 + + -2.0475579798221588e-01 9.8433922976255417e-03 + <_> + + 0 -1 7278 4.2840079404413700e-03 + + -3.6799129098653793e-02 1.2380699813365936e-01 + <_> + + 0 -1 7279 -8.0563372466713190e-04 + + -5.3742490708827972e-02 6.8746432662010193e-02 + <_> + + 0 -1 7280 4.6062450855970383e-02 + + 7.3871058411896229e-03 -6.1133211851119995e-01 + <_> + + 0 -1 7281 6.6807270050048828e-02 + + -1.2545309960842133e-02 1.5731689333915710e-01 + <_> + + 0 -1 7282 2.0568699110299349e-03 + + 4.3087389320135117e-02 -1.1062700301408768e-01 + <_> + + 0 -1 7283 2.8760819695889950e-03 + + 2.5800980627536774e-02 -8.4697857499122620e-02 + <_> + + 0 -1 7284 -4.9642049707472324e-03 + + 8.3168722689151764e-02 -5.6750860065221786e-02 + <_> + 385 + -1.1474020481109619e+00 + + <_> + + 0 -1 7285 1.5166849829256535e-02 + + -1.7501029372215271e-01 1.5165300667285919e-01 + <_> + + 0 -1 7286 4.1852002032101154e-03 + + -1.8253259360790253e-01 1.0545530170202255e-01 + <_> + + 0 -1 7287 -2.6159440167248249e-03 + + -2.1517610549926758e-01 7.7460259199142456e-02 + <_> + + 0 -1 7288 2.7645078953355551e-03 + + -1.1506909877061844e-01 6.7771263420581818e-02 + <_> + + 0 -1 7289 -2.7296729967929423e-04 + + 5.5712651461362839e-02 -2.8723669052124023e-01 + <_> + + 0 -1 7290 2.4992981343530118e-04 + + 5.5202499032020569e-02 -1.5191499888896942e-01 + <_> + + 0 -1 7291 1.3287579640746117e-03 + + -1.2567579746246338e-01 9.4094827771186829e-02 + <_> + + 0 -1 7292 -2.4653770960867405e-03 + + 4.9393590539693832e-02 -2.2239279747009277e-01 + <_> + + 0 -1 7293 -3.2979049719870090e-03 + + -1.7367990314960480e-01 6.9391071796417236e-02 + <_> + + 0 -1 7294 -4.9667809158563614e-02 + + 3.2854220271110535e-01 -3.3067218959331512e-02 + <_> + + 0 -1 7295 5.7844468392431736e-03 + + 6.1289519071578979e-02 -1.6873429715633392e-01 + <_> + + 0 -1 7296 2.9754149727523327e-03 + + -2.4017000198364258e-01 5.7906478643417358e-02 + <_> + + 0 -1 7297 2.3769649851601571e-04 + + 1.1141020059585571e-01 -8.6508020758628845e-02 + <_> + + 0 -1 7298 5.4410300217568874e-03 + + -8.9257702231407166e-02 2.8492979705333710e-02 + <_> + + 0 -1 7299 2.5746610481292009e-03 + + 6.0383580625057220e-02 -1.4771540462970734e-01 + <_> + + 0 -1 7300 -1.2155439704656601e-02 + + 1.8026730418205261e-01 -3.5744961351156235e-02 + <_> + + 0 -1 7301 5.5069979280233383e-03 + + 6.1453469097614288e-02 -1.6147279739379883e-01 + <_> + + 0 -1 7302 -3.0918378615751863e-04 + + -9.1295689344406128e-02 6.8111963570117950e-02 + <_> + + 0 -1 7303 -7.7705271542072296e-02 + + 3.3344480395317078e-01 -2.6795169338583946e-02 + <_> + + 0 -1 7304 4.5874878764152527e-02 + + 6.2387371435761452e-03 -2.2738909721374512e-01 + <_> + + 0 -1 7305 3.1658360967412591e-04 + + -1.1297920346260071e-01 9.8602570593357086e-02 + <_> + + 0 -1 7306 -5.2962768822908401e-02 + + -6.0117399692535400e-01 1.0004489682614803e-02 + <_> + + 0 -1 7307 5.3028380498290062e-03 + + 3.6164399236440659e-02 -2.6359859108924866e-01 + <_> + + 0 -1 7308 -2.3473590612411499e-02 + + 1.0663519799709320e-01 -3.0653990805149078e-02 + <_> + + 0 -1 7309 -1.5029460191726685e-03 + + 6.2882840633392334e-02 -1.2285350263118744e-01 + <_> + + 0 -1 7310 -1.2232650071382523e-02 + + -2.3047080636024475e-01 4.0048789232969284e-02 + <_> + + 0 -1 7311 -4.7428268939256668e-02 + + 4.4135141372680664e-01 -1.8873579800128937e-02 + <_> + + 0 -1 7312 3.6379251629114151e-02 + + -1.3020380400121212e-02 1.4685730636119843e-01 + <_> + + 0 -1 7313 3.6343511193990707e-02 + + 3.8788039237260818e-02 -1.9903139770030975e-01 + <_> + + 0 -1 7314 -1.0792929679155350e-01 + + 1.6177520155906677e-01 -6.3546439632773399e-03 + <_> + + 0 -1 7315 -9.5479741692543030e-02 + + 3.7320658564567566e-01 -2.3940289393067360e-02 + <_> + + 0 -1 7316 3.8954298943281174e-02 + + 1.1239799670875072e-02 -3.4794488549232483e-01 + <_> + + 0 -1 7317 -3.2646209001541138e-02 + + -3.1797638535499573e-01 2.1780189126729965e-02 + <_> + + 0 -1 7318 -2.5872089900076389e-03 + + 4.7268610447645187e-02 -1.5624779462814331e-01 + <_> + + 0 -1 7319 1.2979200109839439e-02 + + -2.4394070729613304e-02 3.0341750383377075e-01 + <_> + + 0 -1 7320 -1.7490500584244728e-02 + + 1.1967100203037262e-01 -3.4825209528207779e-02 + <_> + + 0 -1 7321 8.2290060818195343e-03 + + 5.1706299185752869e-02 -1.4124310016632080e-01 + <_> + + 0 -1 7322 8.7701035663485527e-03 + + 1.2139629572629929e-02 -9.3410186469554901e-02 + <_> + + 0 -1 7323 -2.5523800868541002e-03 + + 9.1882079839706421e-02 -7.9693943262100220e-02 + <_> + + 0 -1 7324 1.2640489730983973e-03 + + -4.2868331074714661e-02 9.8469160497188568e-02 + <_> + + 0 -1 7325 -3.8762169424444437e-03 + + 6.4477890729904175e-02 -1.1426970362663269e-01 + <_> + + 0 -1 7326 1.5416350215673447e-03 + + -3.8240168243646622e-02 5.0880789756774902e-02 + <_> + + 0 -1 7327 7.6829752651974559e-04 + + -1.2869219481945038e-01 5.8161370456218719e-02 + <_> + + 0 -1 7328 1.6587260179221630e-03 + + 1.6391919553279877e-01 -4.7164998948574066e-02 + <_> + + 0 -1 7329 1.6514799790456891e-03 + + -5.9221718460321426e-02 1.3165080547332764e-01 + <_> + + 0 -1 7330 -3.8682940066792071e-04 + + 6.4493581652641296e-02 -1.0728739947080612e-01 + <_> + + 0 -1 7331 -3.4595469478517771e-03 + + 8.0743201076984406e-02 -9.2568591237068176e-02 + <_> + + 0 -1 7332 3.5130660980939865e-02 + + 1.5520620159804821e-02 -1.9732579588890076e-01 + <_> + + 0 -1 7333 1.2025350332260132e-01 + + -2.0497029647231102e-02 4.0905651450157166e-01 + <_> + + 0 -1 7334 7.8581331763416529e-04 + + -9.4858787953853607e-02 6.9316640496253967e-02 + <_> + + 0 -1 7335 6.1606317758560181e-03 + + 6.0556668788194656e-02 -1.2436509877443314e-01 + <_> + + 0 -1 7336 1.3351559638977051e-02 + + 1.7634969204664230e-02 -1.4649459719657898e-01 + <_> + + 0 -1 7337 1.9873639568686485e-02 + + -2.4449799209833145e-02 2.7322331070899963e-01 + <_> + + 0 -1 7338 -2.3918889928609133e-03 + + -4.0744900703430176e-02 4.9925319850444794e-02 + <_> + + 0 -1 7339 8.6433859542012215e-03 + + 2.8967950493097305e-02 -2.3661069571971893e-01 + <_> + + 0 -1 7340 -8.8321920484304428e-03 + + 1.2054029852151871e-01 -2.7702990919351578e-02 + <_> + + 0 -1 7341 -4.4150479137897491e-02 + + 5.0038051605224609e-01 -1.2251130305230618e-02 + <_> + + 0 -1 7342 -4.0243011899292469e-03 + + -1.9502529501914978e-01 2.5193009525537491e-02 + <_> + + 0 -1 7343 9.8465122282505035e-03 + + -6.0283869504928589e-02 1.2665469944477081e-01 + <_> + + 0 -1 7344 -2.7608149684965611e-03 + + -8.3926528692245483e-02 6.0102649033069611e-02 + <_> + + 0 -1 7345 3.9076831191778183e-02 + + 1.5327650122344494e-02 -4.3197798728942871e-01 + <_> + + 0 -1 7346 3.8136269431561232e-03 + + -3.1281091272830963e-02 7.7942118048667908e-02 + <_> + + 0 -1 7347 2.7646059170365334e-03 + + 1.7334839329123497e-02 -3.4732720255851746e-01 + <_> + + 0 -1 7348 -3.6096980329602957e-03 + + -8.2286708056926727e-02 2.8170879930257797e-02 + <_> + + 0 -1 7349 3.5445080138742924e-03 + + -1.0557620227336884e-01 6.0050919651985168e-02 + <_> + + 0 -1 7350 1.2985900044441223e-02 + + 1.8597990274429321e-02 -9.4987802207469940e-02 + <_> + + 0 -1 7351 -2.0027540624141693e-02 + + 2.6007258892059326e-01 -2.7079159393906593e-02 + <_> + + 0 -1 7352 -7.2966597974300385e-02 + + -7.6848107576370239e-01 2.3947900626808405e-03 + <_> + + 0 -1 7353 -2.1148719824850559e-03 + + -1.0763320326805115e-01 5.2361391484737396e-02 + <_> + + 0 -1 7354 -7.7667146921157837e-02 + + 1.7822329699993134e-01 -3.1463298946619034e-02 + <_> + + 0 -1 7355 -4.6600410714745522e-03 + + -2.0386479794979095e-01 3.9025411009788513e-02 + <_> + + 0 -1 7356 1.7059499397873878e-02 + + 1.8954740837216377e-02 -1.7260240018367767e-01 + <_> + + 0 -1 7357 4.3174691498279572e-02 + + -3.1685609370470047e-02 2.3346449434757233e-01 + <_> + + 0 -1 7358 -4.8927929997444153e-01 + + -7.1043139696121216e-01 4.6672620810568333e-03 + <_> + + 0 -1 7359 9.1495506465435028e-02 + + 1.6027629375457764e-02 -4.0538018941879272e-01 + <_> + + 0 -1 7360 -4.6843249350786209e-02 + + 6.9358861446380615e-01 -2.0055349450558424e-03 + <_> + + 0 -1 7361 6.0863760299980640e-03 + + -1.5218159556388855e-01 4.0408309549093246e-02 + <_> + + 0 -1 7362 4.3676611036062241e-02 + + 1.2257159687578678e-02 -2.5996598601341248e-01 + <_> + + 0 -1 7363 -4.9580529332160950e-02 + + 6.7571347951889038e-01 -8.0354865640401840e-03 + <_> + + 0 -1 7364 -2.8614638722501695e-04 + + 3.4548770636320114e-02 -6.1849180608987808e-02 + <_> + + 0 -1 7365 -1.1863199993968010e-02 + + -1.2061329931020737e-01 5.1416579633951187e-02 + <_> + + 0 -1 7366 1.4754010364413261e-02 + + -2.4638049304485321e-02 1.5234139561653137e-01 + <_> + + 0 -1 7367 -5.1772277802228928e-03 + + 1.8428930640220642e-01 -4.2200319468975067e-02 + <_> + + 0 -1 7368 -2.0033530890941620e-02 + + -2.0986419916152954e-01 2.3016780614852905e-02 + <_> + + 0 -1 7369 4.1349478997290134e-03 + + 3.8500111550092697e-02 -1.5400919318199158e-01 + <_> + + 0 -1 7370 4.9832498189061880e-04 + + -5.6834470480680466e-02 1.1737540364265442e-01 + <_> + + 0 -1 7371 1.5235079918056726e-03 + + -8.2305751740932465e-02 7.3340758681297302e-02 + <_> + + 0 -1 7372 2.6669060811400414e-02 + + 1.7131920903921127e-02 -3.3337280154228210e-01 + <_> + + 0 -1 7373 -2.5192899629473686e-02 + + 1.8348090350627899e-01 -3.5275999456644058e-02 + <_> + + 0 -1 7374 1.1769080301746726e-03 + + -1.3197030127048492e-01 2.4242419749498367e-02 + <_> + + 0 -1 7375 -6.6034111659973860e-04 + + -1.0725550353527069e-01 5.8605268597602844e-02 + <_> + + 0 -1 7376 4.3386619538068771e-02 + + -1.6498409211635590e-02 3.9293581247329712e-01 + <_> + + 0 -1 7377 -1.1490290053188801e-02 + + -2.6332950592041016e-01 2.4240590631961823e-02 + <_> + + 0 -1 7378 8.5933692753314972e-02 + + -1.6279760748147964e-02 4.1729450225830078e-01 + <_> + + 0 -1 7379 2.0756269805133343e-03 + + 5.2543889731168747e-02 -1.0574310272932053e-01 + <_> + + 0 -1 7380 1.4016899513080716e-03 + + -4.6594541519880295e-02 1.1355359852313995e-01 + <_> + + 0 -1 7381 -3.4351870417594910e-03 + + -1.0806330293416977e-01 5.8778531849384308e-02 + <_> + + 0 -1 7382 -1.8299809889867902e-03 + + 6.0645598918199539e-02 -6.6084399819374084e-02 + <_> + + 0 -1 7383 -3.4186599077656865e-04 + + -1.2682560086250305e-01 4.9244668334722519e-02 + <_> + + 0 -1 7384 1.0616290383040905e-02 + + -5.5619470775127411e-02 1.2270829826593399e-01 + <_> + + 0 -1 7385 3.9490770548582077e-02 + + 8.2882875576615334e-03 -6.6194152832031250e-01 + <_> + + 0 -1 7386 -1.9746040925383568e-02 + + 1.5761069953441620e-01 -9.3961963430047035e-03 + <_> + + 0 -1 7387 4.6383799053728580e-04 + + -2.0127220451831818e-01 2.6706330478191376e-02 + <_> + + 0 -1 7388 5.1521410932764411e-04 + + -8.6019717156887054e-02 6.7131496965885162e-02 + <_> + + 0 -1 7389 -1.1283540166914463e-02 + + -2.2754089534282684e-01 2.2250600159168243e-02 + <_> + + 0 -1 7390 -8.4253363311290741e-03 + + 1.6505259275436401e-01 -5.0438180565834045e-02 + <_> + + 0 -1 7391 3.0604569241404533e-02 + + 2.7500540018081665e-02 -2.0984129607677460e-01 + <_> + + 0 -1 7392 5.0000958144664764e-03 + + -3.8911771029233932e-02 1.1553470045328140e-01 + <_> + + 0 -1 7393 4.1644461452960968e-02 + + -1.4164280146360397e-02 4.4004911184310913e-01 + <_> + + 0 -1 7394 -3.9140251465141773e-03 + + -1.1528140306472778e-01 2.7629520744085312e-02 + <_> + + 0 -1 7395 -2.2060431074351072e-03 + + 7.4794493615627289e-02 -7.5950391590595245e-02 + <_> + + 0 -1 7396 -7.4060507118701935e-02 + + -6.0902571678161621e-01 3.8528270088136196e-03 + <_> + + 0 -1 7397 1.5966329956427217e-03 + + -7.0015199482440948e-02 1.1019259691238403e-01 + <_> + + 0 -1 7398 2.0102860871702433e-03 + + -3.1859181821346283e-02 7.1592740714550018e-02 + <_> + + 0 -1 7399 3.2757699955254793e-03 + + -5.2260760217905045e-02 1.2652389705181122e-01 + <_> + + 0 -1 7400 3.6700100172311068e-03 + + 5.4018720984458923e-02 -4.6530380845069885e-02 + <_> + + 0 -1 7401 -5.7776779867708683e-03 + + -2.2940860688686371e-01 2.4704450741410255e-02 + <_> + + 0 -1 7402 3.7388929631561041e-03 + + -4.8273131251335144e-02 7.6772913336753845e-02 + <_> + + 0 -1 7403 -1.2404560111463070e-02 + + 1.1491999775171280e-01 -4.9308139830827713e-02 + <_> + + 0 -1 7404 9.0428609400987625e-03 + + 4.3013140559196472e-02 -1.4439429342746735e-01 + <_> + + 0 -1 7405 6.1762649565935135e-03 + + -3.9362821727991104e-02 1.6073490679264069e-01 + <_> + + 0 -1 7406 2.1051440387964249e-02 + + 2.4608060717582703e-02 -1.3768480718135834e-01 + <_> + + 0 -1 7407 2.7457328978925943e-03 + + -6.3271999359130859e-02 9.1269433498382568e-02 + <_> + + 0 -1 7408 -1.0777959600090981e-02 + + 9.1245301067829132e-02 -3.0110929161310196e-02 + <_> + + 0 -1 7409 1.6699189320206642e-02 + + 4.3539609760046005e-02 -1.5240140259265900e-01 + <_> + + 0 -1 7410 5.4665589705109596e-03 + + -5.3575031459331512e-02 6.0266200453042984e-02 + <_> + + 0 -1 7411 -3.2001500949263573e-03 + + 1.4220920205116272e-01 -4.0823381394147873e-02 + <_> + + 0 -1 7412 4.7289058566093445e-02 + + 1.5853699296712875e-02 -2.7123591303825378e-01 + <_> + + 0 -1 7413 -1.3604690320789814e-03 + + 4.0636081248521805e-02 -1.4885699748992920e-01 + <_> + + 0 -1 7414 6.2847061781212687e-04 + + 4.1833158582448959e-02 -1.2394890189170837e-01 + <_> + + 0 -1 7415 -3.7036079913377762e-02 + + -3.6944690346717834e-01 1.3664159923791885e-02 + <_> + + 0 -1 7416 -2.2578550502657890e-02 + + 1.1812049895524979e-01 -2.2939860820770264e-02 + <_> + + 0 -1 7417 3.2851321157068014e-03 + + 3.1136950850486755e-01 -1.8856419250369072e-02 + <_> + + 0 -1 7418 -2.0225369930267334e-01 + + -6.2465697526931763e-01 3.9239428006112576e-03 + <_> + + 0 -1 7419 -4.9903858453035355e-03 + + 1.0674989968538284e-01 -6.0000490397214890e-02 + <_> + + 0 -1 7420 -2.2539479658007622e-02 + + -1.9891190528869629e-01 1.8829969689249992e-02 + <_> + + 0 -1 7421 2.6878459379076958e-02 + + -3.1185189262032509e-02 2.0841309428215027e-01 + <_> + + 0 -1 7422 -6.3416860066354275e-03 + + -8.3658866584300995e-02 4.0603660047054291e-02 + <_> + + 0 -1 7423 2.8207020368427038e-03 + + -5.8255858719348907e-02 9.7203142940998077e-02 + <_> + + 0 -1 7424 2.4739980697631836e-02 + + -1.8699239939451218e-02 9.9858507513999939e-02 + <_> + + 0 -1 7425 7.4140671640634537e-03 + + 2.9613019898533821e-02 -1.9177620112895966e-01 + <_> + + 0 -1 7426 -8.3040986210107803e-03 + + 1.2958979606628418e-01 -4.2671140283346176e-02 + <_> + + 0 -1 7427 1.1470559984445572e-03 + + -1.5365119278430939e-01 4.1083239018917084e-02 + <_> + + 0 -1 7428 -1.6470700502395630e-01 + + -4.1437658667564392e-01 1.3509290292859077e-02 + <_> + + 0 -1 7429 2.4328620731830597e-01 + + -1.2499390169978142e-02 4.4623729586601257e-01 + <_> + + 0 -1 7430 2.4545079097151756e-02 + + 2.2270770743489265e-02 -1.0766860097646713e-01 + <_> + + 0 -1 7431 -3.6004021763801575e-02 + + 2.1495530009269714e-01 -2.3298330605030060e-02 + <_> + + 0 -1 7432 1.7012679949402809e-02 + + 2.8566520661115646e-02 -1.3689860701560974e-01 + <_> + + 0 -1 7433 -1.7947000451385975e-03 + + 2.6063710451126099e-02 -1.8060439825057983e-01 + <_> + + 0 -1 7434 -3.4492081403732300e-01 + + -5.9101992845535278e-01 1.3455889420583844e-03 + <_> + + 0 -1 7435 -1.0471549816429615e-02 + + -6.4394369721412659e-02 8.1244252622127533e-02 + <_> + + 0 -1 7436 6.4335219562053680e-02 + + -5.0874471664428711e-02 8.3752527832984924e-02 + <_> + + 0 -1 7437 4.6703450381755829e-02 + + 8.1825926899909973e-03 -6.2220478057861328e-01 + <_> + + 0 -1 7438 6.7396290600299835e-02 + + -4.0585128590464592e-03 3.1115430593490601e-01 + <_> + + 0 -1 7439 -1.8122399342246354e-04 + + 6.3599228858947754e-02 -8.3870701491832733e-02 + <_> + + 0 -1 7440 -4.6783890575170517e-02 + + -4.3748119473457336e-01 3.6999220028519630e-03 + <_> + + 0 -1 7441 1.2537419795989990e-01 + + -7.1869022212922573e-03 6.9267672300338745e-01 + <_> + + 0 -1 7442 3.5549318999983370e-04 + + 3.5804919898509979e-02 -4.1999049484729767e-02 + <_> + + 0 -1 7443 -1.8169870600104332e-02 + + -2.6467940211296082e-01 1.9274869933724403e-02 + <_> + + 0 -1 7444 2.7509370818734169e-02 + + -9.9343024194240570e-03 1.2481729686260223e-01 + <_> + + 0 -1 7445 -3.1984839588403702e-02 + + 2.5694110989570618e-01 -2.6392020285129547e-02 + <_> + + 0 -1 7446 -1.2891650199890137e-02 + + -1.8838110566139221e-01 1.6135750338435173e-02 + <_> + + 0 -1 7447 4.5009091496467590e-02 + + 8.4453048184514046e-03 -5.7920891046524048e-01 + <_> + + 0 -1 7448 3.9589041844010353e-03 + + -4.3672330677509308e-02 1.2087629735469818e-01 + <_> + + 0 -1 7449 2.7181839104741812e-03 + + -4.0779389441013336e-02 1.2974439561367035e-01 + <_> + + 0 -1 7450 -7.5994711369276047e-04 + + 3.2954100519418716e-02 -8.6419321596622467e-02 + <_> + + 0 -1 7451 6.6315899603068829e-03 + + 3.6079831421375275e-02 -1.5763629972934723e-01 + <_> + + 0 -1 7452 -3.6433320492506027e-03 + + -2.9832119122147560e-02 6.2801547348499298e-02 + <_> + + 0 -1 7453 -6.4768336713314056e-02 + + -8.4351742267608643e-01 6.0920589603483677e-03 + <_> + + 0 -1 7454 4.1712251305580139e-01 + + 3.0659181065857410e-03 -4.4269698858261108e-01 + <_> + + 0 -1 7455 1.8854279816150665e-01 + + 4.8159952275454998e-03 -9.5497727394104004e-01 + <_> + + 0 -1 7456 2.3751270025968552e-02 + + -1.2166289612650871e-02 3.0827128887176514e-01 + <_> + + 0 -1 7457 1.8907970516011119e-03 + + -1.2497080117464066e-01 3.7261988967657089e-02 + <_> + + 0 -1 7458 -1.5546990325674415e-03 + + 7.3636576533317566e-02 -4.9398850649595261e-02 + <_> + + 0 -1 7459 -9.2505775392055511e-03 + + 1.2446039915084839e-01 -3.8673549890518188e-02 + <_> + + 0 -1 7460 -9.9219558760523796e-03 + + -1.2231759727001190e-01 2.7252480387687683e-02 + <_> + + 0 -1 7461 -6.7504931939765811e-04 + + 8.0792732536792755e-02 -6.1003699898719788e-02 + <_> + + 0 -1 7462 -1.3286190107464790e-02 + + 1.7295649647712708e-01 -3.0486939474940300e-02 + <_> + + 0 -1 7463 4.3905568309128284e-03 + + 2.9421260580420494e-02 -1.8230539560317993e-01 + <_> + + 0 -1 7464 -1.8879309296607971e-02 + + -5.3837429732084274e-02 2.8330469503998756e-02 + <_> + + 0 -1 7465 -6.9391563534736633e-02 + + 5.4713129997253418e-01 -9.0404544025659561e-03 + <_> + + 0 -1 7466 7.8226983547210693e-02 + + 6.9561759009957314e-03 -1.5992170572280884e-01 + <_> + + 0 -1 7467 -9.5910448580980301e-03 + + 8.3477370440959930e-02 -6.0714289546012878e-02 + <_> + + 0 -1 7468 8.0856353044509888e-02 + + -3.1028070952743292e-03 8.1530278921127319e-01 + <_> + + 0 -1 7469 -6.9029820151627064e-03 + + -6.2625996768474579e-02 7.7994093298912048e-02 + <_> + + 0 -1 7470 3.8219179958105087e-02 + + -9.4691133126616478e-03 4.1828629374504089e-01 + <_> + + 0 -1 7471 -7.2923908010125160e-04 + + 5.4394990205764771e-02 -1.0869490355253220e-01 + <_> + + 0 -1 7472 -1.1224360205233097e-02 + + -2.8774300217628479e-01 1.9332440569996834e-02 + <_> + + 0 -1 7473 -2.3755239322781563e-02 + + 2.9632499814033508e-01 -1.6995029523968697e-02 + <_> + + 0 -1 7474 2.5170940905809402e-02 + + 1.8151640892028809e-02 -6.9211177527904510e-02 + <_> + + 0 -1 7475 8.4619410336017609e-02 + + -1.2618330307304859e-02 4.0188309550285339e-01 + <_> + + 0 -1 7476 -2.8461799956858158e-03 + + -1.6565479338169098e-01 3.5540379583835602e-02 + <_> + + 0 -1 7477 9.9000544287264347e-04 + + -7.0647209882736206e-02 9.2070832848548889e-02 + <_> + + 0 -1 7478 8.5722869262099266e-03 + + -1.6599319875240326e-02 6.0025580227375031e-02 + <_> + + 0 -1 7479 7.7498499304056168e-03 + + 2.5065049529075623e-02 -2.0419560372829437e-01 + <_> + + 0 -1 7480 -5.1633790135383606e-03 + + 5.6465640664100647e-02 -3.9366569370031357e-02 + <_> + + 0 -1 7481 3.4570649731904268e-03 + + -4.8712749034166336e-02 1.1756400018930435e-01 + <_> + + 0 -1 7482 1.5435590175911784e-03 + + -1.2385150045156479e-01 4.7240950167179108e-02 + <_> + + 0 -1 7483 3.9221469312906265e-02 + + 9.7949290648102760e-03 -5.5965268611907959e-01 + <_> + + 0 -1 7484 -4.8019930720329285e-02 + + -2.4514609575271606e-01 1.5544380061328411e-02 + <_> + + 0 -1 7485 1.7867749556899071e-02 + + -2.6458689942955971e-02 1.8536129593849182e-01 + <_> + + 0 -1 7486 -7.8233405947685242e-03 + + -1.2305969744920731e-01 2.1850170567631721e-02 + <_> + + 0 -1 7487 -4.8894518986344337e-03 + + 2.5086471438407898e-01 -1.9914150238037109e-02 + <_> + + 0 -1 7488 1.1090599745512009e-01 + + 2.1982348989695311e-03 -9.6110188961029053e-01 + <_> + + 0 -1 7489 5.3139701485633850e-03 + + -7.0207841694355011e-02 7.4792057275772095e-02 + <_> + + 0 -1 7490 -4.0226429700851440e-03 + + -9.2982061207294464e-02 2.7642169967293739e-02 + <_> + + 0 -1 7491 -9.9820762872695923e-02 + + -8.2527607679367065e-01 5.8367499150335789e-03 + <_> + + 0 -1 7492 3.2612269278615713e-03 + + 3.0481850728392601e-02 -4.8289291560649872e-02 + <_> + + 0 -1 7493 -4.1559059172868729e-02 + + 5.8879297971725464e-01 -8.5169300436973572e-03 + <_> + + 0 -1 7494 5.4297139868140221e-03 + + 1.8141800537705421e-02 -1.3948309421539307e-01 + <_> + + 0 -1 7495 1.6756299883127213e-02 + + 1.2322929687798023e-02 -4.1245520114898682e-01 + <_> + + 0 -1 7496 -1.7563860863447189e-02 + + 1.1385770142078400e-01 -3.0968630686402321e-02 + <_> + + 0 -1 7497 1.8308760598301888e-02 + + -3.5930249840021133e-02 1.4697270095348358e-01 + <_> + + 0 -1 7498 3.5556308925151825e-02 + + 1.0190679691731930e-02 -2.5837650895118713e-01 + <_> + + 0 -1 7499 -5.1635081035783514e-05 + + 4.6089090406894684e-02 -1.1719120293855667e-01 + <_> + + 0 -1 7500 2.5128800189122558e-04 + + -4.0896330028772354e-02 1.0669410228729248e-01 + <_> + + 0 -1 7501 -1.5876770485192537e-03 + + 1.0786730051040649e-01 -4.5890059322118759e-02 + <_> + + 0 -1 7502 -9.5712337642908096e-03 + + -1.5212120115756989e-01 3.7137780338525772e-02 + <_> + + 0 -1 7503 2.8643130790442228e-03 + + 3.6075118929147720e-02 -1.4268599450588226e-01 + <_> + + 0 -1 7504 -5.0454098731279373e-02 + + 1.9622960686683655e-01 -2.8599070385098457e-02 + <_> + + 0 -1 7505 -2.8714470099657774e-03 + + 7.3919989168643951e-02 -8.6024001240730286e-02 + <_> + + 0 -1 7506 4.9587138928472996e-03 + + 9.4060972332954407e-03 -2.4880349636077881e-01 + <_> + + 0 -1 7507 -7.8270390629768372e-02 + + 4.3305158615112305e-01 -1.1123429983854294e-02 + <_> + + 0 -1 7508 -6.4656808972358704e-02 + + -1.9539129734039307e-01 9.3969572335481644e-03 + <_> + + 0 -1 7509 -4.0213608741760254e-01 + + -9.3731278181076050e-01 4.8170168884098530e-03 + <_> + + 0 -1 7510 4.2917151004076004e-02 + + 5.9442862402647734e-04 -7.9430317878723145e-01 + <_> + + 0 -1 7511 2.1517940331250429e-03 + + -2.4127319455146790e-02 2.1096949279308319e-01 + <_> + + 0 -1 7512 9.5514237880706787e-02 + + 3.0073130037635565e-03 -3.0030760169029236e-01 + <_> + + 0 -1 7513 3.5949420183897018e-02 + + 9.1736158356070518e-03 -5.3301852941513062e-01 + <_> + + 0 -1 7514 1.4061479270458221e-01 + + -1.9780038855969906e-03 5.8360362052917480e-01 + <_> + + 0 -1 7515 -1.0000269860029221e-01 + + -4.6577060222625732e-01 1.0447300039231777e-02 + <_> + + 0 -1 7516 -1.6898410022258759e-01 + + 4.7578391432762146e-01 -3.0947721097618341e-03 + <_> + + 0 -1 7517 2.6123190298676491e-02 + + -1.8673470243811607e-02 2.5583058595657349e-01 + <_> + + 0 -1 7518 8.8816967036109418e-05 + + 1.2931160628795624e-01 -2.2033900022506714e-02 + <_> + + 0 -1 7519 -2.5785199832171202e-03 + + 7.7590242028236389e-02 -5.8669801801443100e-02 + <_> + + 0 -1 7520 -5.5829741060733795e-02 + + -5.6296068429946899e-01 8.2240002229809761e-03 + <_> + + 0 -1 7521 -3.5114258527755737e-02 + + -4.1525208950042725e-01 1.0237259790301323e-02 + <_> + + 0 -1 7522 3.0091139487922192e-03 + + -3.2801661640405655e-02 1.1237899959087372e-01 + <_> + + 0 -1 7523 -3.0068641062825918e-03 + + -1.5794169902801514e-01 3.0354220420122147e-02 + <_> + + 0 -1 7524 -2.0059049129486084e-03 + + 1.1346399784088135e-01 -3.3372201025485992e-02 + <_> + + 0 -1 7525 -1.3963360106572509e-03 + + 1.4454230666160583e-01 -5.0115231424570084e-02 + <_> + + 0 -1 7526 -5.4588310420513153e-02 + + -9.6552258729934692e-01 2.6290758978575468e-03 + <_> + + 0 -1 7527 -5.0577907823026180e-03 + + -2.1536730229854584e-01 2.7823869138956070e-02 + <_> + + 0 -1 7528 -7.4430949985980988e-02 + + 5.9244579076766968e-01 -3.5832428839057684e-03 + <_> + + 0 -1 7529 -6.9759570062160492e-02 + + 6.5854609012603760e-01 -7.1275448426604271e-03 + <_> + + 0 -1 7530 3.4715738729573786e-04 + + 4.3214511126279831e-02 -6.5209239721298218e-02 + <_> + + 0 -1 7531 6.5575069747865200e-03 + + 4.1032981127500534e-02 -1.2200939655303955e-01 + <_> + + 0 -1 7532 9.2287212610244751e-02 + + -2.1933389827609062e-02 8.9953176677227020e-02 + <_> + + 0 -1 7533 5.2685599774122238e-02 + + 1.6439350321888924e-02 -2.7847930788993835e-01 + <_> + + 0 -1 7534 7.2394758462905884e-03 + + -3.3217910677194595e-02 9.7244061529636383e-02 + <_> + + 0 -1 7535 -2.2218099329620600e-03 + + 3.5860918462276459e-02 -1.3876199722290039e-01 + <_> + + 0 -1 7536 -2.3309379816055298e-02 + + -2.7913948893547058e-01 1.6362229362130165e-02 + <_> + + 0 -1 7537 1.4036920038051903e-04 + + -4.0096871554851532e-02 1.2379959970712662e-01 + <_> + + 0 -1 7538 5.3702849894762039e-02 + + 1.4607049524784088e-03 -8.6436408758163452e-01 + <_> + + 0 -1 7539 4.1926259291358292e-04 + + -4.9342829734086990e-02 1.0289549827575684e-01 + <_> + + 0 -1 7540 -1.6786300111562014e-03 + + -1.9065080583095551e-01 2.5145059451460838e-02 + <_> + + 0 -1 7541 1.6603240743279457e-02 + + -1.8125709146261215e-02 2.6887449622154236e-01 + <_> + + 0 -1 7542 -2.2621789947152138e-02 + + 1.3145700097084045e-01 -2.5288559496402740e-02 + <_> + + 0 -1 7543 4.4634779915213585e-03 + + 5.6568209081888199e-02 -1.0306429862976074e-01 + <_> + + 0 -1 7544 3.3281201031059027e-03 + + 2.1517809480428696e-02 -1.4086639881134033e-01 + <_> + + 0 -1 7545 -2.5311840698122978e-02 + + 1.1237470060586929e-01 -4.1784498840570450e-02 + <_> + + 0 -1 7546 -2.6119880378246307e-02 + + 1.2703700363636017e-01 -2.3530310019850731e-02 + <_> + + 0 -1 7547 -7.2608642280101776e-02 + + -3.3052888512611389e-01 2.1741159260272980e-02 + <_> + + 0 -1 7548 5.8377808891236782e-03 + + -2.8170680627226830e-02 6.1300031840801239e-02 + <_> + + 0 -1 7549 1.7830949509516358e-03 + + -7.6140716671943665e-02 8.4391303360462189e-02 + <_> + + 0 -1 7550 -1.4502589404582977e-01 + + -2.8886368870735168e-01 9.4371382147073746e-03 + <_> + + 0 -1 7551 -2.4291570298373699e-03 + + -6.3645169138908386e-02 9.0057007968425751e-02 + <_> + + 0 -1 7552 1.0977900028228760e-01 + + -1.4906959841027856e-03 8.9710217714309692e-01 + <_> + + 0 -1 7553 -3.8412429857999086e-03 + + 7.3980011045932770e-02 -6.9378383457660675e-02 + <_> + + 0 -1 7554 3.9507250767201185e-04 + + -7.1166411042213440e-02 6.3150741159915924e-02 + <_> + + 0 -1 7555 -6.6879019141197205e-03 + + -1.4211960136890411e-01 5.1007200032472610e-02 + <_> + + 0 -1 7556 -2.1278159320354462e-01 + + 1.7479549348354340e-01 -1.6866499558091164e-02 + <_> + + 0 -1 7557 4.3913610279560089e-02 + + -7.9228030517697334e-03 5.9994518756866455e-01 + <_> + + 0 -1 7558 3.0486818868666887e-03 + + 2.7880100533366203e-02 -1.4996689558029175e-01 + <_> + + 0 -1 7559 1.7128599574789405e-03 + + -6.1575889587402344e-02 1.0793119668960571e-01 + <_> + + 0 -1 7560 -1.3061589561402798e-02 + + -3.5864189267158508e-01 1.2332689948379993e-02 + <_> + + 0 -1 7561 1.4779239427298307e-03 + + -5.5280618369579315e-02 7.6400339603424072e-02 + <_> + + 0 -1 7562 -7.4117183685302734e-02 + + 3.3055660128593445e-01 -5.4406579583883286e-03 + <_> + + 0 -1 7563 4.1532788425683975e-02 + + 1.2762749567627907e-02 -3.4091010689735413e-01 + <_> + + 0 -1 7564 -1.6474310308694839e-02 + + -1.1935900151729584e-01 3.5997871309518814e-02 + <_> + + 0 -1 7565 -1.3384450227022171e-02 + + 1.4927010238170624e-01 -3.7151250988245010e-02 + <_> + + 0 -1 7566 -4.3293130584061146e-03 + + -1.5257209539413452e-01 2.0008029416203499e-02 + <_> + + 0 -1 7567 3.7254339549690485e-03 + + 3.8249280303716660e-02 -1.3562840223312378e-01 + <_> + + 0 -1 7568 -3.5788780078291893e-03 + + 1.1951140314340591e-01 -5.1356971263885498e-02 + <_> + + 0 -1 7569 9.0936541557312012e-02 + + -9.6294376999139786e-03 5.0582927465438843e-01 + <_> + + 0 -1 7570 -3.1301870476454496e-03 + + 2.4587530642747879e-02 -1.5752519667148590e-01 + <_> + + 0 -1 7571 -3.0295769684016705e-03 + + -9.6669957041740417e-02 4.7402460128068924e-02 + <_> + + 0 -1 7572 -3.1865050550550222e-03 + + 3.5035319626331329e-02 -4.0841709822416306e-02 + <_> + + 0 -1 7573 4.4836260378360748e-02 + + -7.4580628424882889e-03 6.5190207958221436e-01 + <_> + + 0 -1 7574 -6.4811948686838150e-03 + + 1.3163930177688599e-01 -3.6060128360986710e-02 + <_> + + 0 -1 7575 -2.0486880093812943e-03 + + -1.1097510159015656e-01 5.1011908799409866e-02 + <_> + + 0 -1 7576 4.9175620079040527e-02 + + 5.1457029767334461e-03 -8.9148598909378052e-01 + <_> + + 0 -1 7577 8.4772880654782057e-04 + + -9.0741790831089020e-02 4.4853020459413528e-02 + <_> + + 0 -1 7578 -1.6545709222555161e-02 + + 2.5329568982124329e-01 -1.6997080296278000e-02 + <_> + + 0 -1 7579 6.9274050183594227e-03 + + 3.8941461592912674e-02 -1.3961300253868103e-01 + <_> + + 0 -1 7580 -6.5109939314424992e-03 + + 1.5610300004482269e-01 -2.4493880569934845e-02 + <_> + + 0 -1 7581 -4.9708629958331585e-03 + + -9.8298586905002594e-02 5.7903841137886047e-02 + <_> + + 0 -1 7582 1.3074609637260437e-01 + + -2.7071859221905470e-04 1.0000669956207275e+00 + <_> + + 0 -1 7583 -2.6705920696258545e-02 + + -4.2577031254768372e-01 1.0705970227718353e-02 + <_> + + 0 -1 7584 -1.0329060256481171e-01 + + 2.5896188616752625e-01 -1.8414590507745743e-02 + <_> + + 0 -1 7585 -2.0166130736470222e-02 + + -1.1455850303173065e-01 4.0439568459987640e-02 + <_> + + 0 -1 7586 -4.2215920984745026e-03 + + 4.3039258569478989e-02 -4.8735860735177994e-02 + <_> + + 0 -1 7587 -1.0038839653134346e-02 + + 7.1608737111091614e-02 -6.6204607486724854e-02 + <_> + + 0 -1 7588 1.5833059325814247e-02 + + -3.2066859304904938e-02 8.9950896799564362e-02 + <_> + + 0 -1 7589 3.4065160434693098e-03 + + 4.7216009348630905e-02 -1.0898789763450623e-01 + <_> + + 0 -1 7590 -9.8251160234212875e-03 + + 1.0213229805231094e-01 -5.2902109920978546e-02 + <_> + + 0 -1 7591 1.6804629936814308e-02 + + -3.7189990282058716e-02 1.3787649571895599e-01 + <_> + + 0 -1 7592 8.5175316780805588e-03 + + 2.7141440659761429e-02 -1.3569560647010803e-01 + <_> + + 0 -1 7593 -6.3797592883929610e-04 + + 6.9217190146446228e-02 -9.0696737170219421e-02 + <_> + + 0 -1 7594 -9.6052087610587478e-04 + + 2.2472479939460754e-01 -2.4032639339566231e-02 + <_> + + 0 -1 7595 7.2245922638103366e-04 + + -4.6731200069189072e-02 9.6905507147312164e-02 + <_> + + 0 -1 7596 1.0769399814307690e-03 + + 3.8259491324424744e-02 -6.6674157977104187e-02 + <_> + + 0 -1 7597 4.1620191186666489e-02 + + 9.3473913148045540e-03 -4.9046689271926880e-01 + <_> + + 0 -1 7598 -8.1712089013308287e-04 + + 5.2797440439462662e-02 -9.6458092331886292e-02 + <_> + + 0 -1 7599 6.2240879051387310e-03 + + -3.5350788384675980e-02 1.6484160721302032e-01 + <_> + + 0 -1 7600 2.0862540695816278e-03 + + 3.3958710730075836e-02 -1.3114009797573090e-01 + <_> + + 0 -1 7601 4.2804637923836708e-03 + + 3.0104041099548340e-01 -1.6245450824499130e-02 + <_> + + 0 -1 7602 -3.3040030393749475e-04 + + -1.1665459722280502e-01 3.8146208971738815e-02 + <_> + + 0 -1 7603 2.8100309427827597e-03 + + 4.1940510272979736e-02 -1.1180300265550613e-01 + <_> + + 0 -1 7604 1.9832739606499672e-02 + + -1.1701569892466068e-02 2.0122130215167999e-01 + <_> + + 0 -1 7605 7.0879682898521423e-02 + + -1.8197819590568542e-02 2.5429588556289673e-01 + <_> + + 0 -1 7606 -8.3893969655036926e-02 + + -3.8719230890274048e-01 1.1727290228009224e-02 + <_> + + 0 -1 7607 2.8477620333433151e-02 + + 1.3701519928872585e-02 -3.2496619224548340e-01 + <_> + + 0 -1 7608 1.2077310122549534e-02 + + -2.3975890129804611e-02 2.5232788920402527e-01 + <_> + + 0 -1 7609 -7.5613409280776978e-02 + + -6.0866451263427734e-01 8.2847801968455315e-03 + <_> + + 0 -1 7610 -1.7563860863447189e-02 + + 1.0811589658260345e-01 -2.8622759506106377e-02 + <_> + + 0 -1 7611 1.1809109710156918e-02 + + 3.4758269786834717e-02 -1.4444710314273834e-01 + <_> + + 0 -1 7612 3.3459219336509705e-01 + + 3.5104870330542326e-03 -9.1507577896118164e-01 + <_> + + 0 -1 7613 9.8447836935520172e-02 + + -1.0290330275893211e-02 4.7943019866943359e-01 + <_> + + 0 -1 7614 -4.0277838706970215e-02 + + -7.3793828487396240e-01 4.8832078464329243e-03 + <_> + + 0 -1 7615 4.6712718904018402e-03 + + 2.5037309154868126e-02 -1.7003759741783142e-01 + <_> + + 0 -1 7616 1.3958489894866943e-01 + + 1.9962170626968145e-03 -7.1547168493270874e-01 + <_> + + 0 -1 7617 6.9742716848850250e-02 + + -8.4846932440996170e-03 5.5378282070159912e-01 + <_> + + 0 -1 7618 4.0283710695803165e-03 + + -1.6718029975891113e-02 2.3914240300655365e-01 + <_> + + 0 -1 7619 1.0911709628999233e-02 + + 1.5781659632921219e-02 -2.6813709735870361e-01 + <_> + + 0 -1 7620 -6.7120362073183060e-03 + + 1.1087659746408463e-01 -3.1365878880023956e-02 + <_> + + 0 -1 7621 -1.3467820361256599e-02 + + -2.0741519331932068e-01 2.3459080606698990e-02 + <_> + + 0 -1 7622 -2.1431609056890011e-03 + + 7.8274592757225037e-02 -2.7959430590271950e-02 + <_> + + 0 -1 7623 1.5163370408117771e-02 + + 2.1727830171585083e-02 -1.8995440006256104e-01 + <_> + + 0 -1 7624 -1.8551949411630630e-02 + + 1.1164160072803497e-01 -3.0374029651284218e-02 + <_> + + 0 -1 7625 -1.1083459854125977e-01 + + -5.6379908323287964e-01 7.6859779655933380e-03 + <_> + + 0 -1 7626 5.6210728362202644e-03 + + 3.2930258661508560e-02 -1.0337010025978088e-01 + <_> + + 0 -1 7627 3.0593289993703365e-03 + + -6.8871803581714630e-02 6.0389719903469086e-02 + <_> + + 0 -1 7628 -6.9845258258283138e-04 + + 3.8080908358097076e-02 -7.0112928748130798e-02 + <_> + + 0 -1 7629 -1.3236569939181209e-03 + + 7.5004093348979950e-02 -6.3950046896934509e-02 + <_> + + 0 -1 7630 -1.6736539546400309e-03 + + -1.0580399632453918e-01 4.9476388841867447e-02 + <_> + + 0 -1 7631 7.0728380233049393e-03 + + -3.6582119762897491e-02 1.3126540184020996e-01 + <_> + + 0 -1 7632 1.8164990469813347e-03 + + 3.9953831583261490e-02 -5.1589578390121460e-02 + <_> + + 0 -1 7633 4.1909920983016491e-03 + + 4.8665199428796768e-02 -1.0598509758710861e-01 + <_> + + 0 -1 7634 1.1940020322799683e-01 + + -6.7811049520969391e-03 7.4523490667343140e-01 + <_> + + 0 -1 7635 -1.4965030131861567e-03 + + 6.6805936396121979e-02 -6.7798472940921783e-02 + <_> + + 0 -1 7636 -1.1722999811172485e-01 + + -8.7860488891601562e-01 1.8648250261321664e-03 + <_> + + 0 -1 7637 3.2925528939813375e-03 + + 3.5634901374578476e-02 -1.5030789375305176e-01 + <_> + + 0 -1 7638 6.8493567407131195e-02 + + -9.8042488098144531e-03 3.0161941051483154e-01 + <_> + + 0 -1 7639 2.1837449166923761e-03 + + -5.3420849144458771e-02 8.5626326501369476e-02 + <_> + + 0 -1 7640 6.9181360304355621e-03 + + -4.3685518205165863e-02 1.2706759572029114e-01 + <_> + + 0 -1 7641 -1.5878600534051657e-03 + + -1.2640440464019775e-01 3.9026089012622833e-02 + <_> + + 0 -1 7642 3.8289129734039307e-03 + + 3.9025381207466125e-02 -7.9675689339637756e-02 + <_> + + 0 -1 7643 1.2253260239958763e-02 + + -4.4809628278017044e-02 9.7772710025310516e-02 + <_> + + 0 -1 7644 6.4031239598989487e-03 + + 3.3579610288143158e-02 -1.3300299644470215e-01 + <_> + + 0 -1 7645 7.0500532165169716e-03 + + -5.1121409982442856e-02 1.1772400140762329e-01 + <_> + + 0 -1 7646 1.3216730207204819e-02 + + 2.6454009115695953e-02 -1.3190220296382904e-01 + <_> + + 0 -1 7647 6.7367991432547569e-03 + + -1.0153199546039104e-02 4.1570469737052917e-01 + <_> + + 0 -1 7648 2.4951510131359100e-03 + + 1.4631019905209541e-02 -1.6560359299182892e-01 + <_> + + 0 -1 7649 3.8302998989820480e-02 + + 7.2940620593726635e-03 -6.0744607448577881e-01 + <_> + + 0 -1 7650 -1.6491059213876724e-02 + + 1.6788350045681000e-01 -1.5062170103192329e-02 + <_> + + 0 -1 7651 -2.7071639895439148e-02 + + -4.6381551027297974e-01 1.0335059836506844e-02 + <_> + + 0 -1 7652 -5.8714959770441055e-02 + + 1.4860999584197998e-01 -1.6663730144500732e-02 + <_> + + 0 -1 7653 9.2380512505769730e-03 + + 4.3830338865518570e-02 -1.0612689703702927e-01 + <_> + + 0 -1 7654 3.0808299779891968e-03 + + -3.6781489849090576e-02 8.9559197425842285e-02 + <_> + + 0 -1 7655 2.9910521116107702e-03 + + 1.6019189730286598e-02 -2.9177838563919067e-01 + <_> + + 0 -1 7656 4.4786609709262848e-02 + + -6.7814979702234268e-03 3.6695161461830139e-01 + <_> + + 0 -1 7657 -2.9985690489411354e-03 + + -9.0316072106361389e-02 4.8048041760921478e-02 + <_> + + 0 -1 7658 -8.9135952293872833e-03 + + 1.6903600096702576e-01 -2.1880460903048515e-02 + <_> + + 0 -1 7659 -3.9598200470209122e-02 + + -4.4884848594665527e-01 1.0027219541370869e-02 + <_> + + 0 -1 7660 -3.7064809352159500e-02 + + -4.4183561205863953e-01 2.2891450207680464e-03 + <_> + + 0 -1 7661 -9.3376229051500559e-04 + + 7.3633059859275818e-02 -5.8901689946651459e-02 + <_> + + 0 -1 7662 8.0887757241725922e-02 + + -2.4963580071926117e-02 6.0303758829832077e-02 + <_> + + 0 -1 7663 -3.0697569251060486e-02 + + -1.7819009721279144e-01 2.6090290397405624e-02 + <_> + + 0 -1 7664 -1.8495260179042816e-01 + + 3.4901228547096252e-01 -3.8219890557229519e-03 + <_> + + 0 -1 7665 1.1218319647014141e-02 + + -2.6781549677252769e-02 1.7431420087814331e-01 + <_> + + 0 -1 7666 6.2761609442532063e-03 + + 1.4532440342009068e-02 -1.1864569783210754e-01 + <_> + + 0 -1 7667 -8.8509358465671539e-03 + + -1.0515689849853516e-01 5.7655680924654007e-02 + <_> + + 0 -1 7668 -3.8575798273086548e-02 + + 1.5004560351371765e-01 -3.6080200225114822e-02 + <_> + + 0 -1 7669 -5.2720211446285248e-02 + + -4.7556790709495544e-01 1.1126070283353329e-02 + <_> + 392 + -1.1210759878158569e+00 + + <_> + + 0 -1 7670 -3.8506588898599148e-03 + + 1.1209569871425629e-01 -2.7330291271209717e-01 + <_> + + 0 -1 7671 -4.9427259713411331e-02 + + 3.9270120859146118e-01 -3.9871849119663239e-02 + <_> + + 0 -1 7672 1.3538210187107325e-03 + + -1.5965040028095245e-01 1.2521059811115265e-01 + <_> + + 0 -1 7673 3.9328690618276596e-03 + + -3.4043839573860168e-01 4.7437489032745361e-02 + <_> + + 0 -1 7674 2.3011169396340847e-03 + + -2.0827749371528625e-01 7.4891701340675354e-02 + <_> + + 0 -1 7675 5.9128052089363337e-04 + + -2.0842720568180084e-01 3.7798780947923660e-02 + <_> + + 0 -1 7676 1.7478190129622817e-03 + + -1.9635179638862610e-01 6.4582027494907379e-02 + <_> + + 0 -1 7677 5.8316658250987530e-03 + + 3.1582038849592209e-02 -1.9084580242633820e-01 + <_> + + 0 -1 7678 1.2435190146788955e-03 + + -5.3213578462600708e-01 2.2162230685353279e-02 + <_> + + 0 -1 7679 1.6247769817709923e-03 + + -1.3276180624961853e-01 8.0135673284530640e-02 + <_> + + 0 -1 7680 -2.2734089288860559e-03 + + -1.7344699800014496e-01 5.4782990366220474e-02 + <_> + + 0 -1 7681 5.7859059423208237e-02 + + -1.5829589683562517e-03 -6.6367942094802856e-01 + <_> + + 0 -1 7682 5.7728560641407967e-03 + + 3.9815168827772141e-02 -2.2919249534606934e-01 + <_> + + 0 -1 7683 -4.4039610773324966e-02 + + 2.1793280541896820e-01 -2.3534009233117104e-02 + <_> + + 0 -1 7684 3.0226248782128096e-04 + + -8.9419580996036530e-02 1.1042869836091995e-01 + <_> + + 0 -1 7685 -3.4470859915018082e-02 + + -3.6666679382324219e-01 2.7858279645442963e-02 + <_> + + 0 -1 7686 3.2460398972034454e-02 + + 1.5733880922198296e-02 -4.9733749032020569e-01 + <_> + + 0 -1 7687 9.9335552658885717e-04 + + -9.1800943017005920e-02 8.4003977477550507e-02 + <_> + + 0 -1 7688 -2.3473830893635750e-02 + + -4.4375669956207275e-01 1.5148010104894638e-02 + <_> + + 0 -1 7689 -2.9013049788773060e-03 + + 5.4642349481582642e-02 -2.0156529545783997e-01 + <_> + + 0 -1 7690 -6.5832951804623008e-04 + + -1.2285769730806351e-01 5.6707888841629028e-02 + <_> + + 0 -1 7691 2.0407158881425858e-03 + + -1.0899069905281067e-01 5.9933699667453766e-02 + <_> + + 0 -1 7692 -1.3161499984562397e-02 + + 1.4091959595680237e-01 -4.7396201640367508e-02 + <_> + + 0 -1 7693 -4.2273551225662231e-03 + + -1.2498269975185394e-01 5.1124658435583115e-02 + <_> + + 0 -1 7694 7.6580629684031010e-03 + + 3.8773480802774429e-02 -1.8095690011978149e-01 + <_> + + 0 -1 7695 -5.1912548951804638e-03 + + 1.2545259296894073e-01 -4.4012580066919327e-02 + <_> + + 0 -1 7696 1.1874590069055557e-01 + + -1.4801479876041412e-02 4.0071210265159607e-01 + <_> + + 0 -1 7697 4.5105828903615475e-03 + + 5.3336851298809052e-02 -1.5709049999713898e-01 + <_> + + 0 -1 7698 4.5015379786491394e-02 + + -3.3278778195381165e-02 2.0535139739513397e-01 + <_> + + 0 -1 7699 -2.0866969134658575e-03 + + 4.2103528976440430e-02 -1.0361789911985397e-01 + <_> + + 0 -1 7700 -1.3008449459448457e-03 + + 6.4424470067024231e-02 -9.7897060215473175e-02 + <_> + + 0 -1 7701 -1.3591230381280184e-03 + + 7.2987347841262817e-02 -9.4451002776622772e-02 + <_> + + 0 -1 7702 -7.4056759476661682e-03 + + -1.5320360660552979e-01 5.3242001682519913e-02 + <_> + + 0 -1 7703 2.0208859350532293e-03 + + -3.3245529979467392e-02 6.0319710522890091e-02 + <_> + + 0 -1 7704 -1.0342149995267391e-02 + + 8.5510559380054474e-02 -8.3920828998088837e-02 + <_> + + 0 -1 7705 2.4865860119462013e-02 + + 1.2639460153877735e-02 -3.4757199883460999e-01 + <_> + + 0 -1 7706 9.9798657000064850e-02 + + -1.8823970109224319e-02 3.4465000033378601e-01 + <_> + + 0 -1 7707 2.1201390773057938e-02 + + -1.0467799752950668e-01 3.1494509428739548e-02 + <_> + + 0 -1 7708 -5.1909908652305603e-03 + + -1.5792340040206909e-01 5.0269961357116699e-02 + <_> + + 0 -1 7709 6.6961228847503662e-02 + + 3.2651789952069521e-03 -5.6049168109893799e-01 + <_> + + 0 -1 7710 1.1809109710156918e-02 + + -2.8513789176940918e-02 2.1226319670677185e-01 + <_> + + 0 -1 7711 -1.7645660787820816e-02 + + -4.4503360986709595e-01 5.0029670819640160e-03 + <_> + + 0 -1 7712 -6.8918941542506218e-03 + + -4.2199620604515076e-01 1.4813040383160114e-02 + <_> + + 0 -1 7713 2.1675550378859043e-03 + + -1.3125190138816833e-01 6.7140422761440277e-02 + <_> + + 0 -1 7714 -3.3283489756286144e-03 + + -1.0765329748392105e-01 5.3610768169164658e-02 + <_> + + 0 -1 7715 4.8869621008634567e-02 + + 6.4427889883518219e-03 -6.4563280344009399e-01 + <_> + + 0 -1 7716 7.2693959809839725e-03 + + -3.9603620767593384e-02 1.5369640290737152e-01 + <_> + + 0 -1 7717 8.8849991559982300e-02 + + -1.3234400190412998e-02 2.8555288910865784e-01 + <_> + + 0 -1 7718 1.5455950051546097e-02 + + 3.9694100618362427e-02 -1.7206269502639771e-01 + <_> + + 0 -1 7719 -1.3747200369834900e-02 + + 1.0079269856214523e-01 -4.3812029063701630e-02 + <_> + + 0 -1 7720 -2.2805750370025635e-02 + + 1.5014170110225677e-01 -4.3767798691987991e-02 + <_> + + 0 -1 7721 2.3838039487600327e-02 + + 5.3901281207799911e-02 -1.4610290527343750e-01 + <_> + + 0 -1 7722 -1.0181629657745361e-01 + + 3.1905040144920349e-01 -2.0011590793728828e-02 + <_> + + 0 -1 7723 7.1074268780648708e-03 + + 5.6244179606437683e-02 -1.2587560713291168e-01 + <_> + + 0 -1 7724 7.6678092591464520e-04 + + -1.0704190284013748e-01 6.6436298191547394e-02 + <_> + + 0 -1 7725 3.7424071342684329e-04 + + -3.7826299667358398e-02 4.7234989702701569e-02 + <_> + + 0 -1 7726 -2.0078169181942940e-03 + + -9.3316286802291870e-02 6.7641608417034149e-02 + <_> + + 0 -1 7727 3.3469051122665405e-02 + + -2.7926150709390640e-02 2.5293371081352234e-01 + <_> + + 0 -1 7728 -1.5507030300796032e-02 + + -5.5145150423049927e-01 1.2821160256862640e-02 + <_> + + 0 -1 7729 -1.9248709082603455e-02 + + 5.2688628435134888e-02 -3.0364990234375000e-02 + <_> + + 0 -1 7730 -1.7556030303239822e-02 + + -3.3247348666191101e-01 1.8780380487442017e-02 + <_> + + 0 -1 7731 1.9324380904436111e-02 + + -3.2458461821079254e-02 9.4986997544765472e-02 + <_> + + 0 -1 7732 -2.0367160439491272e-02 + + 1.1348400264978409e-01 -5.8434821665287018e-02 + <_> + + 0 -1 7733 5.1770661957561970e-03 + + 4.7030560672283173e-02 -8.4960326552391052e-02 + <_> + + 0 -1 7734 1.9768481142818928e-03 + + -7.0794142782688141e-02 1.0375150293111801e-01 + <_> + + 0 -1 7735 -7.0216279709711671e-04 + + 3.0781729146838188e-02 -1.0170820355415344e-01 + <_> + + 0 -1 7736 -2.4710369762033224e-03 + + 5.1577620208263397e-02 -1.1920809745788574e-01 + <_> + + 0 -1 7737 2.3278540000319481e-02 + + 3.0191570520401001e-02 -9.3937888741493225e-02 + <_> + + 0 -1 7738 1.3673819601535797e-02 + + -2.6758959516882896e-02 2.4014200270175934e-01 + <_> + + 0 -1 7739 -8.3967903628945351e-03 + + -5.0403770059347153e-02 2.2368110716342926e-02 + <_> + + 0 -1 7740 4.7878470271825790e-02 + + -2.3758050054311752e-02 2.6486390829086304e-01 + <_> + + 0 -1 7741 -2.2483520209789276e-02 + + -2.3042780160903931e-01 1.2840679846704006e-02 + <_> + + 0 -1 7742 -1.0883989743888378e-02 + + -1.8380180001258850e-01 3.2639708369970322e-02 + <_> + + 0 -1 7743 -4.4901989400386810e-02 + + 2.4195960164070129e-01 -2.6507280766963959e-02 + <_> + + 0 -1 7744 -8.3042927086353302e-02 + + -8.0491328239440918e-01 7.5420029461383820e-03 + <_> + + 0 -1 7745 -3.7240530364215374e-03 + + -8.0228239297866821e-02 3.1584471464157104e-02 + <_> + + 0 -1 7746 -7.3502189479768276e-03 + + 6.8962231278419495e-02 -9.7391247749328613e-02 + <_> + + 0 -1 7747 5.5313981138169765e-03 + + -3.0180720612406731e-02 6.0174800455570221e-02 + <_> + + 0 -1 7748 1.7293080687522888e-02 + + 4.0732100605964661e-02 -1.5600660443305969e-01 + <_> + + 0 -1 7749 -3.3298740163445473e-03 + + 4.1001088917255402e-02 -7.6909027993679047e-02 + <_> + + 0 -1 7750 -4.9308240413665771e-03 + + 1.7031539976596832e-01 -4.0582239627838135e-02 + <_> + + 0 -1 7751 8.6011141538619995e-03 + + 3.1656920909881592e-02 -1.4050039649009705e-01 + <_> + + 0 -1 7752 1.3674340210855007e-02 + + -2.1845709532499313e-02 3.0128660798072815e-01 + <_> + + 0 -1 7753 -1.1375419795513153e-02 + + -1.5687340497970581e-01 2.8256019577383995e-02 + <_> + + 0 -1 7754 -4.2750681750476360e-03 + + -1.2155970185995102e-01 5.0146799534559250e-02 + <_> + + 0 -1 7755 1.6484759747982025e-02 + + -3.6557890474796295e-02 1.2583729624748230e-01 + <_> + + 0 -1 7756 -3.9056900888681412e-02 + + 2.4053129553794861e-01 -2.6983890682458878e-02 + <_> + + 0 -1 7757 -5.7546719908714294e-03 + + -1.3337680697441101e-01 2.0266020670533180e-02 + <_> + + 0 -1 7758 5.1583289168775082e-03 + + 6.4666390419006348e-02 -1.1428499966859818e-01 + <_> + + 0 -1 7759 -3.0463270377367735e-03 + + 4.5018680393695831e-02 -8.1573590636253357e-02 + <_> + + 0 -1 7760 7.4743861332535744e-03 + + 3.1246710568666458e-02 -1.8929730355739594e-01 + <_> + + 0 -1 7761 1.6480450285598636e-03 + + -2.5895040482282639e-02 1.8652880191802979e-01 + <_> + + 0 -1 7762 4.5184311456978321e-03 + + 5.4803468286991119e-02 -1.0444000363349915e-01 + <_> + + 0 -1 7763 -3.3209871035069227e-03 + + 4.3959401547908783e-02 -8.1240482628345490e-02 + <_> + + 0 -1 7764 5.2665979601442814e-03 + + -4.4853471219539642e-02 1.1343909800052643e-01 + <_> + + 0 -1 7765 -4.7867707908153534e-03 + + 7.6319009065628052e-02 -2.8551170602440834e-02 + <_> + + 0 -1 7766 -4.4710118323564529e-02 + + -3.4795719385147095e-01 1.4928230084478855e-02 + <_> + + 0 -1 7767 4.3861730955541134e-03 + + 7.4540950357913971e-02 -4.6298071742057800e-02 + <_> + + 0 -1 7768 9.2240851372480392e-03 + + -5.8626178652048111e-02 9.8693408071994781e-02 + <_> + + 0 -1 7769 -1.1849260190501809e-03 + + 1.0023140162229538e-01 -5.6729640811681747e-02 + <_> + + 0 -1 7770 -1.8546540290117264e-02 + + -3.8236171007156372e-01 1.5141529962420464e-02 + <_> + + 0 -1 7771 3.4743950236588717e-03 + + 2.6523910462856293e-02 -1.1289829760789871e-01 + <_> + + 0 -1 7772 1.0274019837379456e-01 + + -6.6097700037062168e-03 7.7561777830123901e-01 + <_> + + 0 -1 7773 2.0479390025138855e-01 + + 6.9657550193369389e-03 -3.5988980531692505e-01 + <_> + + 0 -1 7774 1.2094060331583023e-01 + + 1.8174450844526291e-02 -3.3531171083450317e-01 + <_> + + 0 -1 7775 1.2224229983985424e-02 + + -3.1454049050807953e-02 7.9004973173141479e-02 + <_> + + 0 -1 7776 1.5176460146903992e-01 + + -1.0826669633388519e-02 4.5583090186119080e-01 + <_> + + 0 -1 7777 -9.9692150950431824e-02 + + -3.5422179102897644e-01 3.1256359070539474e-03 + <_> + + 0 -1 7778 -6.3465638086199760e-03 + + -1.1098819971084595e-01 5.3735308349132538e-02 + <_> + + 0 -1 7779 -6.7007602192461491e-03 + + 1.8910090625286102e-01 -3.0930159613490105e-02 + <_> + + 0 -1 7780 -1.0101199895143509e-01 + + 2.3763500154018402e-01 -2.2213969379663467e-02 + <_> + + 0 -1 7781 4.6111021190881729e-02 + + -3.7543330341577530e-02 4.8733759671449661e-02 + <_> + + 0 -1 7782 1.4146809279918671e-01 + + 1.1148019693791866e-02 -5.1474362611770630e-01 + <_> + + 0 -1 7783 -1.1394499801099300e-02 + + -7.0824302732944489e-02 3.1759370118379593e-02 + <_> + + 0 -1 7784 3.1667309813201427e-03 + + 4.1177280247211456e-02 -1.4900580048561096e-01 + <_> + + 0 -1 7785 8.9959725737571716e-03 + + -4.1186511516571045e-02 7.2816781699657440e-02 + <_> + + 0 -1 7786 -6.1559271067380905e-02 + + -7.3937642574310303e-01 6.6859079524874687e-03 + <_> + + 0 -1 7787 -3.5607949830591679e-03 + + 1.3260509818792343e-02 -6.1150819063186646e-02 + <_> + + 0 -1 7788 -1.2476339936256409e-01 + + -7.8580498695373535e-01 6.2701301649212837e-03 + <_> + + 0 -1 7789 6.2739187479019165e-01 + + 3.5465341061353683e-03 -7.3363810777664185e-01 + <_> + + 0 -1 7790 3.4219160676002502e-02 + + 8.2031572237610817e-03 -5.3330212831497192e-01 + <_> + + 0 -1 7791 1.0574149928288534e-04 + + -5.0354700535535812e-02 4.7019489109516144e-02 + <_> + + 0 -1 7792 -3.2112289220094681e-02 + + 1.7085300385951996e-01 -3.4734141081571579e-02 + <_> + + 0 -1 7793 -1.6140839084982872e-02 + + -6.4753092825412750e-02 5.6943111121654510e-02 + <_> + + 0 -1 7794 1.9737280905246735e-02 + + -1.8065180629491806e-02 2.6183420419692993e-01 + <_> + + 0 -1 7795 2.7895450592041016e-02 + + 1.7641060054302216e-02 -3.0951151251792908e-01 + <_> + + 0 -1 7796 3.5123159177601337e-03 + + -8.3447068929672241e-02 6.5015971660614014e-02 + <_> + + 0 -1 7797 -4.4775637798011303e-03 + + -1.2423449754714966e-01 4.7061119228601456e-02 + <_> + + 0 -1 7798 -6.1348858289420605e-03 + + 1.0248269885778427e-01 -5.9700958430767059e-02 + <_> + + 0 -1 7799 1.4047959819436073e-02 + + 1.4833379536867142e-02 -1.1229590326547623e-01 + <_> + + 0 -1 7800 1.1907520238310099e-03 + + 4.9986690282821655e-02 -1.1696290224790573e-01 + <_> + + 0 -1 7801 1.7617389559745789e-02 + + -1.7687700688838959e-02 1.5416090190410614e-01 + <_> + + 0 -1 7802 -4.9166870303452015e-03 + + -1.0227180272340775e-01 4.6994391828775406e-02 + <_> + + 0 -1 7803 -3.9010820910334587e-03 + + 1.4229449629783630e-01 -4.5312799513339996e-02 + <_> + + 0 -1 7804 -1.7458139918744564e-03 + + -1.0853090137243271e-01 7.5689561665058136e-02 + <_> + + 0 -1 7805 -1.2748650042340159e-03 + + 2.2384520620107651e-02 -7.5150527060031891e-02 + <_> + + 0 -1 7806 -7.9109556972980499e-02 + + 4.8773929476737976e-01 -9.6941655501723289e-03 + <_> + + 0 -1 7807 -1.4103270135819912e-02 + + -2.3263689875602722e-01 1.5091559849679470e-02 + <_> + + 0 -1 7808 -2.2076119203120470e-03 + + 1.9268399477005005e-01 -2.5429060682654381e-02 + <_> + + 0 -1 7809 3.9626058191061020e-02 + + -1.5630759298801422e-02 1.2270029634237289e-01 + <_> + + 0 -1 7810 -7.8973636846058071e-05 + + -7.3257647454738617e-02 6.5848693251609802e-02 + <_> + + 0 -1 7811 5.1964947488158941e-04 + + -1.1366380006074905e-01 8.1133492290973663e-02 + <_> + + 0 -1 7812 -1.1722079943865538e-03 + + -9.7602643072605133e-02 5.9839569032192230e-02 + <_> + + 0 -1 7813 3.9326730184257030e-03 + + -5.7026151567697525e-02 4.2226128280162811e-02 + <_> + + 0 -1 7814 -8.7386153638362885e-02 + + -3.7896049022674561e-01 1.2869279831647873e-02 + <_> + + 0 -1 7815 -2.1324040368199348e-02 + + 3.0886441469192505e-01 -1.7734240740537643e-02 + <_> + + 0 -1 7816 -2.3385910317301750e-03 + + -1.1322320252656937e-01 4.3914940208196640e-02 + <_> + + 0 -1 7817 1.5183660434558988e-03 + + -1.4337620139122009e-01 3.9441708475351334e-02 + <_> + + 0 -1 7818 -1.1085519939661026e-01 + + 7.4037587642669678e-01 -6.7982021719217300e-03 + <_> + + 0 -1 7819 -1.0009120218455791e-02 + + -3.9203230291604996e-02 3.1749211251735687e-02 + <_> + + 0 -1 7820 -2.0916430279612541e-02 + + 1.8927730619907379e-01 -3.0490230768918991e-02 + <_> + + 0 -1 7821 7.4165337719023228e-03 + + 4.6797450631856918e-02 -1.1113610118627548e-01 + <_> + + 0 -1 7822 3.3599510788917542e-03 + + -4.5254990458488464e-02 1.1508409678936005e-01 + <_> + + 0 -1 7823 -5.7189498329535127e-04 + + -6.3472077250480652e-02 5.2049949765205383e-02 + <_> + + 0 -1 7824 -6.8120293319225311e-02 + + 5.0806027650833130e-01 -9.5091843977570534e-03 + <_> + + 0 -1 7825 2.5180799420922995e-03 + + 5.5305320769548416e-02 -1.4402769505977631e-01 + <_> + + 0 -1 7826 5.6055251508951187e-02 + + -2.3359170183539391e-02 2.1935400366783142e-01 + <_> + + 0 -1 7827 -4.0386710315942764e-02 + + -1.9183440506458282e-01 7.8779058530926704e-03 + <_> + + 0 -1 7828 3.1857648864388466e-03 + + 2.7605779469013214e-02 -2.0084309577941895e-01 + <_> + + 0 -1 7829 2.5159550830721855e-02 + + 1.1265699751675129e-02 -4.3628180027008057e-01 + <_> + + 0 -1 7830 -2.7010419871658087e-03 + + 1.1336500197649002e-01 -4.6904269605875015e-02 + <_> + + 0 -1 7831 -3.0056890100240707e-02 + + -6.2368732690811157e-01 7.3214052245020866e-03 + <_> + + 0 -1 7832 -1.2088020145893097e-01 + + -8.6428368091583252e-01 4.3813590891659260e-03 + <_> + + 0 -1 7833 4.0104859508574009e-03 + + -5.3471650928258896e-02 7.1113802492618561e-02 + <_> + + 0 -1 7834 -2.9688570648431778e-03 + + 1.0076630115509033e-01 -4.9233928322792053e-02 + <_> + + 0 -1 7835 -3.7600689101964235e-03 + + -2.0928700268268585e-01 2.6549680158495903e-02 + <_> + + 0 -1 7836 -1.5982619952410460e-03 + + 6.1070188879966736e-02 -7.9623572528362274e-02 + <_> + + 0 -1 7837 5.4285880178213120e-03 + + 3.9766579866409302e-02 -1.1746849864721298e-01 + <_> + + 0 -1 7838 1.0872900020331144e-03 + + -6.4596228301525116e-02 7.4964426457881927e-02 + <_> + + 0 -1 7839 -2.8442030306905508e-03 + + 1.1738350242376328e-01 -4.0159400552511215e-02 + <_> + + 0 -1 7840 3.5546101629734039e-02 + + 1.2194969691336155e-02 -4.2184820771217346e-01 + <_> + + 0 -1 7841 -4.8542950302362442e-02 + + 3.1292769312858582e-01 -1.2773830443620682e-02 + <_> + + 0 -1 7842 -3.0732100829482079e-02 + + -5.0631237030029297e-01 1.0600729845464230e-02 + <_> + + 0 -1 7843 1.3066929765045643e-02 + + -5.0003118813037872e-02 4.4005930423736572e-02 + <_> + + 0 -1 7844 2.9200640320777893e-01 + + 5.3693680092692375e-03 -8.9039158821105957e-01 + <_> + + 0 -1 7845 -8.7579451501369476e-03 + + 9.6666730940341949e-02 -3.1310658901929855e-02 + <_> + + 0 -1 7846 -2.3599369451403618e-03 + + 4.3046280741691589e-02 -1.0992430150508881e-01 + <_> + + 0 -1 7847 6.9077489897608757e-03 + + -2.9174160212278366e-02 8.9174896478652954e-02 + <_> + + 0 -1 7848 2.0849689841270447e-02 + + 1.2614700198173523e-01 -4.4358100742101669e-02 + <_> + + 0 -1 7849 -5.8846421539783478e-02 + + 2.1661500632762909e-01 -8.7285088375210762e-03 + <_> + + 0 -1 7850 2.5576311163604259e-03 + + -1.1648210138082504e-01 5.4756019264459610e-02 + <_> + + 0 -1 7851 3.8973900955170393e-03 + + 3.5759489983320236e-02 -9.7868561744689941e-02 + <_> + + 0 -1 7852 -1.2494160328060389e-03 + + 9.1347962617874146e-02 -5.7817179709672928e-02 + <_> + + 0 -1 7853 3.4928850363940001e-03 + + 2.0634220913052559e-02 -1.4494930207729340e-01 + <_> + + 0 -1 7854 -1.1378509923815727e-02 + + 2.1203260123729706e-01 -2.4150850251317024e-02 + <_> + + 0 -1 7855 -4.4060450047254562e-02 + + 4.2267361283302307e-01 -4.7765900380909443e-03 + <_> + + 0 -1 7856 -8.3084795624017715e-03 + + -8.4928646683692932e-02 6.0228090733289719e-02 + <_> + + 0 -1 7857 -9.1945994645357132e-03 + + 7.2318702936172485e-02 -2.0472260192036629e-02 + <_> + + 0 -1 7858 6.5575107932090759e-02 + + 5.0813751295208931e-03 -8.9693188667297363e-01 + <_> + + 0 -1 7859 1.8510420620441437e-01 + + 2.2485901135951281e-03 -7.5125169754028320e-01 + <_> + + 0 -1 7860 -1.7608819901943207e-01 + + -7.8969222307205200e-01 5.2678477950394154e-03 + <_> + + 0 -1 7861 9.8349712789058685e-02 + + 2.8081049676984549e-03 -2.5828519463539124e-01 + <_> + + 0 -1 7862 -1.8191979324910790e-04 + + -8.6206100881099701e-02 5.2294798195362091e-02 + <_> + + 0 -1 7863 -5.2928649820387363e-03 + + -5.4600238800048828e-02 2.8304630890488625e-02 + <_> + + 0 -1 7864 1.1537299724295735e-03 + + 4.6684168279170990e-02 -1.1234779655933380e-01 + <_> + + 0 -1 7865 -3.8274680264294147e-03 + + 6.0145508497953415e-02 -8.2371100783348083e-02 + <_> + + 0 -1 7866 -8.6957857012748718e-02 + + -4.8363038897514343e-01 9.2326821759343147e-03 + <_> + + 0 -1 7867 -2.4195960722863674e-03 + + -3.5221140831708908e-02 2.7081709355115891e-02 + <_> + + 0 -1 7868 -4.7905668616294861e-03 + + 5.8955200016498566e-02 -7.8748136758804321e-02 + <_> + + 0 -1 7869 -4.0910490788519382e-03 + + -1.7550939321517944e-01 2.6454729959368706e-02 + <_> + + 0 -1 7870 2.5641750544309616e-03 + + -3.6814831197261810e-02 1.5140229463577271e-01 + <_> + + 0 -1 7871 5.4726968519389629e-03 + + 3.1243579462170601e-02 -9.7890958189964294e-02 + <_> + + 0 -1 7872 -1.0310260113328695e-03 + + -1.2424050271511078e-01 4.0365029126405716e-02 + <_> + + 0 -1 7873 -1.3030169904232025e-01 + + 1.7106169462203979e-01 -6.9856629706919193e-03 + <_> + + 0 -1 7874 3.5753389820456505e-03 + + -2.5437129661440849e-02 2.1967570483684540e-01 + <_> + + 0 -1 7875 8.4238024428486824e-03 + + 2.9582399874925613e-02 -1.7390090227127075e-01 + <_> + + 0 -1 7876 4.1154649108648300e-02 + + -1.3265499845147133e-02 3.6282411217689514e-01 + <_> + + 0 -1 7877 -1.8620759248733521e-02 + + -2.2806780040264130e-01 2.1502569317817688e-02 + <_> + + 0 -1 7878 2.3307619616389275e-02 + + -2.3047760128974915e-02 2.3208670318126678e-01 + <_> + + 0 -1 7879 4.6518299728631973e-02 + + 1.0585400275886059e-02 -4.6076700091362000e-01 + <_> + + 0 -1 7880 -8.3499401807785034e-02 + + 3.7845119833946228e-01 -1.4105740003287792e-02 + <_> + + 0 -1 7881 -9.6897013485431671e-02 + + -3.2995849847793579e-01 6.2883920036256313e-03 + <_> + + 0 -1 7882 6.9753699935972691e-03 + + 2.4593630805611610e-02 -2.1003679931163788e-01 + <_> + + 0 -1 7883 -3.3859949558973312e-02 + + 1.8927900493144989e-01 -8.7296841666102409e-03 + <_> + + 0 -1 7884 1.0354740079492331e-03 + + -6.4493343234062195e-02 8.0192290246486664e-02 + <_> + + 0 -1 7885 3.9950661361217499e-02 + + 2.5073040276765823e-02 -1.1636939644813538e-01 + <_> + + 0 -1 7886 3.0460350681096315e-03 + + -3.3754941076040268e-02 1.3324250280857086e-01 + <_> + + 0 -1 7887 -1.5341850230470300e-03 + + 6.2442861497402191e-02 -5.6061070412397385e-02 + <_> + + 0 -1 7888 2.0531520713120699e-03 + + -8.4790043532848358e-02 5.3408049046993256e-02 + <_> + + 0 -1 7889 2.1295580081641674e-03 + + 4.0650319308042526e-02 -1.1124719679355621e-01 + <_> + + 0 -1 7890 -1.5462029725313187e-02 + + 1.3806979358196259e-01 -3.3944208174943924e-02 + <_> + + 0 -1 7891 -2.7878239750862122e-02 + + -1.0025399923324585e-01 1.3444880023598671e-02 + <_> + + 0 -1 7892 1.7255680635571480e-02 + + 1.5361789613962173e-02 -3.6930799484252930e-01 + <_> + + 0 -1 7893 -1.7870500683784485e-02 + + 5.2870798856019974e-02 -2.5108009576797485e-02 + <_> + + 0 -1 7894 -1.4443919993937016e-02 + + -2.2763819992542267e-01 2.0391609519720078e-02 + <_> + + 0 -1 7895 -8.3497241139411926e-03 + + -8.7055817246437073e-02 3.2707940787076950e-02 + <_> + + 0 -1 7896 2.7514319866895676e-02 + + -2.0628409460186958e-02 2.5977128744125366e-01 + <_> + + 0 -1 7897 1.8610119819641113e-02 + + -8.0523788928985596e-03 1.6925090551376343e-01 + <_> + + 0 -1 7898 -9.5786049962043762e-02 + + -5.0116628408432007e-01 8.7666641920804977e-03 + <_> + + 0 -1 7899 1.2036979943513870e-01 + + 9.8632962908595800e-04 -1.0000280141830444e+00 + <_> + + 0 -1 7900 2.4782579392194748e-02 + + -1.2519709765911102e-02 3.5919609665870667e-01 + <_> + + 0 -1 7901 -5.0353828817605972e-02 + + -3.3340519666671753e-01 6.9066900759935379e-03 + <_> + + 0 -1 7902 3.1298059970140457e-02 + + 1.0963119566440582e-02 -4.0645220875740051e-01 + <_> + + 0 -1 7903 7.4575231410562992e-03 + + -2.1207600831985474e-02 1.3167420029640198e-01 + <_> + + 0 -1 7904 5.5791479535400867e-03 + + -3.4098070114850998e-02 1.2983830273151398e-01 + <_> + + 0 -1 7905 5.9088319540023804e-03 + + -2.6940669864416122e-02 1.6839459538459778e-01 + <_> + + 0 -1 7906 1.7543360590934753e-02 + + 4.2376369237899780e-02 -1.2350399792194366e-01 + <_> + + 0 -1 7907 -9.6103046089410782e-03 + + 5.2223920822143555e-02 -2.5582559406757355e-02 + <_> + + 0 -1 7908 2.0607879851013422e-03 + + 4.0174130350351334e-02 -1.0548079758882523e-01 + <_> + + 0 -1 7909 -5.3874161094427109e-03 + + -6.4995579421520233e-02 2.7807140722870827e-02 + <_> + + 0 -1 7910 1.1102309823036194e-01 + + -4.9670711159706116e-03 8.1718921661376953e-01 + <_> + + 0 -1 7911 -3.7374150007963181e-02 + + -6.2611418962478638e-01 3.0927599873393774e-03 + <_> + + 0 -1 7912 5.0286632031202316e-03 + + 2.4978660047054291e-01 -1.8151100724935532e-02 + <_> + + 0 -1 7913 2.9225579928606749e-03 + + -6.0576818883419037e-02 2.6497339829802513e-02 + <_> + + 0 -1 7914 -5.4296620190143585e-02 + + -5.7990437746047974e-01 6.5989522263407707e-03 + <_> + + 0 -1 7915 1.2996720150113106e-02 + + -2.6128260418772697e-02 9.7030609846115112e-02 + <_> + + 0 -1 7916 3.3001229166984558e-02 + + 1.4960479922592640e-02 -3.2304659485816956e-01 + <_> + + 0 -1 7917 -1.1660449951887131e-01 + + 2.5725141167640686e-01 -1.2625830247998238e-02 + <_> + + 0 -1 7918 7.0706337690353394e-02 + + 7.0192231796681881e-03 -6.9260591268539429e-01 + <_> + + 0 -1 7919 -4.4549949467182159e-02 + + -7.1134221553802490e-01 4.9668429419398308e-03 + <_> + + 0 -1 7920 4.2873818427324295e-02 + + 6.7160711623728275e-03 -5.2660852670669556e-01 + <_> + + 0 -1 7921 2.5025280192494392e-02 + + -1.8445409834384918e-02 7.8793220221996307e-02 + <_> + + 0 -1 7922 2.1663550287485123e-03 + + 3.2540310174226761e-02 -1.3115049898624420e-01 + <_> + + 0 -1 7923 2.5540040805935860e-02 + + -3.4693568944931030e-02 4.1404798626899719e-02 + <_> + + 0 -1 7924 -8.3627507090568542e-02 + + -5.2143442630767822e-01 7.7060810290277004e-03 + <_> + + 0 -1 7925 3.7637550849467516e-03 + + -2.9463630169630051e-02 7.4424192309379578e-02 + <_> + + 0 -1 7926 3.7175719626247883e-03 + + -4.2123001068830490e-02 1.0287009924650192e-01 + <_> + + 0 -1 7927 -5.2892807871103287e-03 + + -1.2348390370607376e-01 3.7152700126171112e-02 + <_> + + 0 -1 7928 -9.1878473758697510e-03 + + 9.0256750583648682e-02 -5.2674051374197006e-02 + <_> + + 0 -1 7929 -5.5448919534683228e-02 + + -5.3639650344848633e-01 2.6584670413285494e-03 + <_> + + 0 -1 7930 6.4754108898341656e-03 + + 5.5367350578308105e-02 -9.2722631990909576e-02 + <_> + + 0 -1 7931 -1.5773440245538950e-03 + + 1.3578939437866211e-01 -4.0911730378866196e-02 + <_> + + 0 -1 7932 -4.9912789836525917e-04 + + -1.4728380739688873e-01 5.3603630512952805e-02 + <_> + + 0 -1 7933 1.5690509974956512e-01 + + -7.8873159363865852e-03 3.7397789955139160e-01 + <_> + + 0 -1 7934 3.6391850560903549e-02 + + 4.9765990115702152e-03 -9.1157531738281250e-01 + <_> + + 0 -1 7935 -9.5625342801213264e-03 + + 1.2767709791660309e-01 -1.4394680038094521e-02 + <_> + + 0 -1 7936 2.4007901083678007e-03 + + -1.3107380270957947e-01 4.4731479138135910e-02 + <_> + + 0 -1 7937 3.2929850276559591e-03 + + 4.0428631007671356e-02 -5.3223561495542526e-02 + <_> + + 0 -1 7938 -3.1314359512180090e-03 + + 3.6826111376285553e-02 -1.2113159894943237e-01 + <_> + + 0 -1 7939 5.2008330821990967e-02 + + 5.9283021837472916e-03 -4.3858841061592102e-01 + <_> + + 0 -1 7940 5.7681259931996465e-04 + + -6.9851770997047424e-02 6.4286291599273682e-02 + <_> + + 0 -1 7941 6.1443001031875610e-03 + + 3.0908059328794479e-02 -1.8229809403419495e-01 + <_> + + 0 -1 7942 3.5959720611572266e-02 + + -4.1680991649627686e-02 1.4244790375232697e-01 + <_> + + 0 -1 7943 -2.1290820091962814e-02 + + -9.6662320196628571e-02 5.5888749659061432e-02 + <_> + + 0 -1 7944 -6.2724511371925473e-04 + + 9.0150557458400726e-02 -6.9430753588676453e-02 + <_> + + 0 -1 7945 -2.5145700201392174e-03 + + -6.9526046514511108e-02 4.5552581548690796e-02 + <_> + + 0 -1 7946 5.7874649763107300e-02 + + -2.5036580860614777e-02 2.0633180439472198e-01 + <_> + + 0 -1 7947 1.5898469835519791e-02 + + -1.7133399844169617e-02 1.1004959791898727e-01 + <_> + + 0 -1 7948 2.7882799506187439e-02 + + 2.7713179588317871e-02 -1.6536410152912140e-01 + <_> + + 0 -1 7949 8.8283112272620201e-03 + + -2.7497250586748123e-02 5.9822890907526016e-02 + <_> + + 0 -1 7950 -1.5679910778999329e-02 + + -2.6984989643096924e-01 1.6398239880800247e-02 + <_> + + 0 -1 7951 4.1906189173460007e-02 + + -8.0525986850261688e-03 3.1556311249732971e-01 + <_> + + 0 -1 7952 -4.1068609803915024e-02 + + 2.5637561082839966e-01 -1.8357910215854645e-02 + <_> + + 0 -1 7953 3.5570110194385052e-03 + + 2.9343830421566963e-02 -1.2668469548225403e-01 + <_> + + 0 -1 7954 -2.1371750626713037e-03 + + 1.2923260033130646e-01 -4.0102209895849228e-02 + <_> + + 0 -1 7955 3.3638089895248413e-02 + + 8.1196166574954987e-03 -4.0394780039787292e-01 + <_> + + 0 -1 7956 1.0182919912040234e-02 + + -4.2566180229187012e-02 1.1843100190162659e-01 + <_> + + 0 -1 7957 -7.0302112726494670e-04 + + 3.8721978664398193e-02 -7.9703420400619507e-02 + <_> + + 0 -1 7958 -2.8552680741995573e-03 + + 9.1274276375770569e-02 -6.1691451817750931e-02 + <_> + + 0 -1 7959 -2.9935541097074747e-03 + + -1.0913450270891190e-01 3.8736950606107712e-02 + <_> + + 0 -1 7960 -5.3608341841027141e-04 + + -4.3252488970756531e-01 1.0958270169794559e-02 + <_> + + 0 -1 7961 5.1431890577077866e-02 + + 4.7060111537575722e-03 -2.6765900850296021e-01 + <_> + + 0 -1 7962 -4.8872891813516617e-02 + + 2.0144729316234589e-01 -2.2844519466161728e-02 + <_> + + 0 -1 7963 -1.6080449521541595e-01 + + -1. 1.9577229395508766e-03 + <_> + + 0 -1 7964 1.8509939312934875e-02 + + 1.7808660864830017e-02 -2.7871158719062805e-01 + <_> + + 0 -1 7965 -4.2106948792934418e-02 + + -6.2493157386779785e-01 7.0520970039069653e-03 + <_> + + 0 -1 7966 -9.7096778452396393e-02 + + -8.4505838155746460e-01 4.4749649241566658e-03 + <_> + + 0 -1 7967 -9.4244757201522589e-04 + + 1.9796760380268097e-01 -2.2733120247721672e-02 + <_> + + 0 -1 7968 -1.8040809780359268e-02 + + -3.3424109220504761e-01 1.3358039781451225e-02 + <_> + + 0 -1 7969 6.3626631163060665e-04 + + -1.0530749708414078e-01 4.4016160070896149e-02 + <_> + + 0 -1 7970 -3.4530549310147762e-03 + + -1.3687069714069366e-01 3.0288280919194221e-02 + <_> + + 0 -1 7971 1.7589809373021126e-02 + + -2.8031280264258385e-02 1.8331700563430786e-01 + <_> + + 0 -1 7972 -1.4289390528574586e-03 + + 6.7616157233715057e-02 -6.4400359988212585e-02 + <_> + + 0 -1 7973 1.4584570191800594e-02 + + -3.2548811286687851e-02 7.7070221304893494e-02 + <_> + + 0 -1 7974 7.4579578638076782e-01 + + 9.1963959857821465e-03 -4.5680120587348938e-01 + <_> + + 0 -1 7975 -1.2285649776458740e-01 + + -6.4423608779907227e-01 2.0847769919782877e-03 + <_> + + 0 -1 7976 -1.1613000184297562e-01 + + -7.9274278879165649e-01 4.9578230828046799e-03 + <_> + + 0 -1 7977 5.5644840002059937e-02 + + -5.7718120515346527e-03 3.0834281444549561e-01 + <_> + + 0 -1 7978 2.0566429942846298e-02 + + -1.5474709682166576e-02 2.8002938628196716e-01 + <_> + + 0 -1 7979 3.8393519935198128e-04 + + 3.4390248358249664e-02 -1.0244189947843552e-01 + <_> + + 0 -1 7980 4.0198508650064468e-03 + + 5.2533138543367386e-02 -1.1492720246315002e-01 + <_> + + 0 -1 7981 -7.4124410748481750e-02 + + -3.0216461420059204e-01 4.2779031209647655e-03 + <_> + + 0 -1 7982 -3.4346429165452719e-03 + + 6.5627492964267731e-02 -6.9991588592529297e-02 + <_> + + 0 -1 7983 -4.3740049004554749e-03 + + -1.2934839725494385e-01 5.1233518868684769e-02 + <_> + + 0 -1 7984 6.9464151747524738e-03 + + -3.2591849565505981e-02 1.5098060667514801e-01 + <_> + + 0 -1 7985 -1.8434170633554459e-02 + + -3.1364220380783081e-01 9.5867328345775604e-03 + <_> + + 0 -1 7986 -3.2201830763369799e-03 + + -1.7494319379329681e-01 3.3579058945178986e-02 + <_> + + 0 -1 7987 -3.2273299992084503e-02 + + 2.4136200547218323e-01 -2.4392010644078255e-02 + <_> + + 0 -1 7988 -4.8193791881203651e-03 + + -1.3610219955444336e-01 4.1156660765409470e-02 + <_> + + 0 -1 7989 -9.8347626626491547e-02 + + -5.3324717283248901e-01 8.8729923591017723e-03 + <_> + + 0 -1 7990 1.9054619595408440e-02 + + -3.2564271241426468e-02 1.6729709506034851e-01 + <_> + + 0 -1 7991 -8.1796169281005859e-02 + + -6.4131242036819458e-01 8.7052602320909500e-03 + <_> + + 0 -1 7992 3.2996949739754200e-03 + + -5.9765439480543137e-02 7.1879856288433075e-02 + <_> + + 0 -1 7993 -7.5977660715579987e-02 + + -5.0415420532226562e-01 5.6795510463416576e-03 + <_> + + 0 -1 7994 3.0508760362863541e-02 + + 1.0317360050976276e-02 -4.3552881479263306e-01 + <_> + + 0 -1 7995 -3.7642959505319595e-02 + + 3.7324428558349609e-01 -1.7276229336857796e-02 + <_> + + 0 -1 7996 -9.9801109172403812e-04 + + -1.4508770406246185e-01 3.0973700806498528e-02 + <_> + + 0 -1 7997 -2.0703389309346676e-03 + + 1.2285920232534409e-01 -2.5285899639129639e-02 + <_> + + 0 -1 7998 7.1816377341747284e-02 + + 7.2997398674488068e-03 -6.2621092796325684e-01 + <_> + + 0 -1 7999 1.6781920194625854e-01 + + -1.0094069875776768e-02 2.2531180083751678e-01 + <_> + + 0 -1 8000 1.5028619964141399e-04 + + -4.9013838171958923e-02 9.5635637640953064e-02 + <_> + + 0 -1 8001 9.5139637589454651e-02 + + -2.3964960128068924e-03 7.8972822427749634e-01 + <_> + + 0 -1 8002 3.8569360040128231e-03 + + 4.0852431207895279e-02 -1.1976979672908783e-01 + <_> + + 0 -1 8003 2.3172760382294655e-02 + + -8.1755416467785835e-03 3.4895899891853333e-01 + <_> + + 0 -1 8004 1.3417989946901798e-02 + + 2.9357729479670525e-02 -1.4476950466632843e-01 + <_> + + 0 -1 8005 -1.4165779948234558e-01 + + 3.4960448741912842e-01 -3.9633908309042454e-03 + <_> + + 0 -1 8006 5.5483141914010048e-03 + + -4.6736769378185272e-02 8.7630823254585266e-02 + <_> + + 0 -1 8007 -4.7431029379367828e-03 + + 6.2899678945541382e-02 -2.6983590796589851e-02 + <_> + + 0 -1 8008 -6.6862776875495911e-02 + + -9.5272868871688843e-01 3.9776111952960491e-03 + <_> + + 0 -1 8009 2.2987840697169304e-02 + + -1.7802899703383446e-02 1.4564949274063110e-01 + <_> + + 0 -1 8010 -2.2234279662370682e-02 + + -9.3360446393489838e-02 5.1537070423364639e-02 + <_> + + 0 -1 8011 1.5045719919726253e-05 + + -3.0237749218940735e-02 2.6654670014977455e-02 + <_> + + 0 -1 8012 -4.7994707711040974e-03 + + 1.0105530172586441e-01 -5.0083991140127182e-02 + <_> + + 0 -1 8013 -2.4227909743785858e-01 + + -6.8399482965469360e-01 2.1470880601555109e-03 + <_> + + 0 -1 8014 4.6939790248870850e-02 + + 8.1193735823035240e-03 -4.7671818733215332e-01 + <_> + + 0 -1 8015 -6.0940280556678772e-02 + + 2.3827329277992249e-01 -9.5430584624409676e-03 + <_> + + 0 -1 8016 2.4104740470647812e-02 + + -1.5799079090356827e-02 2.6727899909019470e-01 + <_> + + 0 -1 8017 -4.6567570418119431e-02 + + -3.1017771363258362e-01 8.3353007212281227e-03 + <_> + + 0 -1 8018 1.8709240248426795e-03 + + -7.2588071227073669e-02 6.5608270466327667e-02 + <_> + + 0 -1 8019 -5.9872400015592575e-03 + + -1.8159690499305725e-01 1.4030029997229576e-02 + <_> + + 0 -1 8020 -7.3103660724882502e-06 + + 4.0913790464401245e-02 -1.0656440258026123e-01 + <_> + + 0 -1 8021 -2.3244550451636314e-02 + + -1.9035540521144867e-01 1.5966059640049934e-02 + <_> + + 0 -1 8022 -1.1853489559143782e-03 + + 5.9956710785627365e-02 -7.6678447425365448e-02 + <_> + + 0 -1 8023 -1.2981820106506348e-01 + + 4.0999498963356018e-01 -5.0850748084485531e-03 + <_> + + 0 -1 8024 -5.1512669771909714e-02 + + -3.0527231097221375e-01 1.4186340384185314e-02 + <_> + + 0 -1 8025 -3.9303461089730263e-03 + + -7.9763479530811310e-02 2.6248890906572342e-02 + <_> + + 0 -1 8026 1.5822829678654671e-02 + + -1.6849309206008911e-02 2.7549791336059570e-01 + <_> + + 0 -1 8027 1.1561570316553116e-01 + + 6.7870649509131908e-03 -1.2709319591522217e-01 + <_> + + 0 -1 8028 1.1260829633101821e-03 + + 8.1908516585826874e-02 -5.8194048702716827e-02 + <_> + + 0 -1 8029 1.5513430349528790e-02 + + -4.2989719659090042e-02 7.8364297747612000e-02 + <_> + + 0 -1 8030 4.6268731355667114e-02 + + 1.1759550310671329e-02 -3.9947330951690674e-01 + <_> + + 0 -1 8031 7.9535972326993942e-03 + + 1.6848539933562279e-02 -8.8599078357219696e-02 + <_> + + 0 -1 8032 -1.8991220742464066e-02 + + 2.4813260138034821e-01 -1.7320850864052773e-02 + <_> + + 0 -1 8033 3.7058200687170029e-03 + + -2.1747030317783356e-02 5.8276090770959854e-02 + <_> + + 0 -1 8034 2.5829279329627752e-03 + + 5.0559278577566147e-02 -9.3193918466567993e-02 + <_> + + 0 -1 8035 -3.1010560691356659e-02 + + 2.2110439836978912e-01 -1.4786499552428722e-02 + <_> + + 0 -1 8036 2.5402549654245377e-03 + + -8.6743600666522980e-02 5.7932410389184952e-02 + <_> + + 0 -1 8037 -8.9100487530231476e-03 + + 5.3846079856157303e-02 -4.5931909233331680e-02 + <_> + + 0 -1 8038 4.0557151660323143e-03 + + 5.9298399835824966e-02 -8.3007253706455231e-02 + <_> + + 0 -1 8039 6.1204940080642700e-02 + + 9.2248879373073578e-03 -2.1082369983196259e-01 + <_> + + 0 -1 8040 7.7630057930946350e-03 + + -7.5927056372165680e-02 5.7865709066390991e-02 + <_> + + 0 -1 8041 1.5921150147914886e-01 + + 8.3040859317407012e-04 -1.0000480413436890e+00 + <_> + + 0 -1 8042 3.9196189492940903e-02 + + 7.1930838748812675e-03 -6.0338622331619263e-01 + <_> + + 0 -1 8043 1.0220289975404739e-01 + + -3.6227719392627478e-03 5.4500752687454224e-01 + <_> + + 0 -1 8044 -1.5064980089664459e-01 + + -7.0450758934020996e-01 6.6995541565120220e-03 + <_> + + 0 -1 8045 1.3819299638271332e-01 + + -1.1153860017657280e-02 1.7932909727096558e-01 + <_> + + 0 -1 8046 -3.8313010009005666e-04 + + -7.2442352771759033e-02 5.7925980538129807e-02 + <_> + + 0 -1 8047 -2.7796919457614422e-03 + + -8.6280398070812225e-02 4.1014600545167923e-02 + <_> + + 0 -1 8048 3.9365138858556747e-02 + + -4.6629320830106735e-02 8.8124006986618042e-02 + <_> + + 0 -1 8049 -6.1933819204568863e-02 + + 7.0118552446365356e-01 -2.5661089457571507e-03 + <_> + + 0 -1 8050 -5.9742941521108150e-03 + + -1.6519010066986084e-01 3.7947021424770355e-02 + <_> + + 0 -1 8051 7.5101079419255257e-03 + + 5.4191488772630692e-02 -7.9166658222675323e-02 + <_> + + 0 -1 8052 -9.7005672752857208e-02 + + -8.8104772567749023e-01 4.8486101441085339e-03 + <_> + + 0 -1 8053 -6.7751510068774223e-03 + + 9.1601163148880005e-02 -4.8942770808935165e-02 + <_> + + 0 -1 8054 -9.2599419876933098e-03 + + -1.3298119604587555e-01 4.1785500943660736e-02 + <_> + + 0 -1 8055 1.5215040184557438e-03 + + 5.2633590996265411e-02 -6.0624439269304276e-02 + <_> + + 0 -1 8056 5.4703168570995331e-03 + + -4.7825179994106293e-02 1.1194570362567902e-01 + <_> + + 0 -1 8057 2.5002110749483109e-02 + + -2.0354969426989555e-02 1.0175590217113495e-01 + <_> + + 0 -1 8058 3.2576780766248703e-02 + + 2.5629660114645958e-02 -1.9484190642833710e-01 + <_> + + 0 -1 8059 -7.7732130885124207e-03 + + 1.2477400153875351e-01 -3.4667998552322388e-02 + <_> + + 0 -1 8060 1.7777189612388611e-02 + + 3.3261820673942566e-02 -1.4155229926109314e-01 + <_> + + 0 -1 8061 1.0459429584443569e-02 + + -4.4039878994226456e-02 6.1871558427810669e-02 + <_> + 406 + -1.1700680255889893e+00 + + <_> + + 0 -1 8062 1.8751189112663269e-02 + + -1.7775079607963562e-01 1.7157439887523651e-01 + <_> + + 0 -1 8063 -2.1875950042158365e-03 + + 7.5339153409004211e-02 -2.5842121243476868e-01 + <_> + + 0 -1 8064 -1.1698690056800842e-01 + + 4.2645370960235596e-01 -3.7121698260307312e-02 + <_> + + 0 -1 8065 3.8377330638468266e-03 + + 3.5092439502477646e-02 -1.5757289528846741e-01 + <_> + + 0 -1 8066 -1.2941210297867656e-03 + + -2.0068730413913727e-01 5.5704809725284576e-02 + <_> + + 0 -1 8067 4.3927300721406937e-03 + + 5.7497099041938782e-02 -1.9302740693092346e-01 + <_> + + 0 -1 8068 -1.5021540457382798e-03 + + 7.2378978133201599e-02 -1.4534910023212433e-01 + <_> + + 0 -1 8069 1.2381949927657843e-03 + + -9.0413779020309448e-02 8.2838788628578186e-02 + <_> + + 0 -1 8070 3.0004729051142931e-03 + + 6.0199409723281860e-02 -1.5556170046329498e-01 + <_> + + 0 -1 8071 4.5666601508855820e-03 + + -7.6936639845371246e-02 1.3762770593166351e-01 + <_> + + 0 -1 8072 9.9231943022459745e-04 + + 4.7918211668729782e-02 -2.0472359657287598e-01 + <_> + + 0 -1 8073 -3.8909649010747671e-03 + + -2.1067039668560028e-01 5.9297189116477966e-02 + <_> + + 0 -1 8074 2.4324860423803329e-03 + + -7.3611870408058167e-02 1.4165569841861725e-01 + <_> + + 0 -1 8075 -3.3090400975197554e-03 + + -1.6489060223102570e-01 4.3310891836881638e-02 + <_> + + 0 -1 8076 5.9596560895442963e-03 + + -2.1388399600982666e-01 4.3472908437252045e-02 + <_> + + 0 -1 8077 9.7754271700978279e-03 + + 2.7664290741086006e-02 -1.9119890034198761e-01 + <_> + + 0 -1 8078 -3.8124300539493561e-02 + + 3.1658840179443359e-01 -2.9972679913043976e-02 + <_> + + 0 -1 8079 1.4401610242202878e-03 + + -1.6602130234241486e-01 6.1300911009311676e-02 + <_> + + 0 -1 8080 7.5199408456683159e-04 + + -1.3568510115146637e-01 5.7345770299434662e-02 + <_> + + 0 -1 8081 2.4780649691820145e-03 + + -7.7258758246898651e-02 5.3781200200319290e-02 + <_> + + 0 -1 8082 9.2068109661340714e-03 + + 7.4349351227283478e-02 -1.3886499404907227e-01 + <_> + + 0 -1 8083 1.7634540796279907e-02 + + -2.6817159727215767e-02 3.4912449121475220e-01 + <_> + + 0 -1 8084 1.0517879854887724e-03 + + 8.3444483578205109e-02 -8.3271436393260956e-02 + <_> + + 0 -1 8085 -7.2119189426302910e-03 + + 1.4149050414562225e-01 -3.0853189527988434e-02 + <_> + + 0 -1 8086 8.1929508596658707e-03 + + 6.4249828457832336e-02 -1.4224460721015930e-01 + <_> + + 0 -1 8087 -5.7932751951739192e-04 + + -6.1768930405378342e-02 3.4835230559110641e-02 + <_> + + 0 -1 8088 4.5172017998993397e-03 + + -7.3925666511058807e-02 9.5347866415977478e-02 + <_> + + 0 -1 8089 2.2280250489711761e-01 + + 2.8079450130462646e-02 -2.6174598932266235e-01 + <_> + + 0 -1 8090 -8.1560667604207993e-04 + + -1.1128710210323334e-01 6.1751261353492737e-02 + <_> + + 0 -1 8091 1.9009260460734367e-02 + + -3.5914849489927292e-02 9.5332697033882141e-02 + <_> + + 0 -1 8092 -1.1708099627867341e-03 + + -1.7809429764747620e-01 3.8471758365631104e-02 + <_> + + 0 -1 8093 -2.7492839843034744e-02 + + 1.5674190223217010e-01 -3.6307450383901596e-02 + <_> + + 0 -1 8094 -5.4139150306582451e-03 + + -1.6014580428600311e-01 4.5228298753499985e-02 + <_> + + 0 -1 8095 1.1325670406222343e-02 + + -5.2679128944873810e-02 1.2411580234766006e-01 + <_> + + 0 -1 8096 -1.3919079303741455e-01 + + -2.8573009371757507e-01 2.5642180815339088e-02 + <_> + + 0 -1 8097 -7.6183810830116272e-02 + + 2.0390880107879639e-01 -1.2701939791440964e-02 + <_> + + 0 -1 8098 1.3947900151833892e-03 + + -1.1320529878139496e-01 5.7419300079345703e-02 + <_> + + 0 -1 8099 4.6532237902283669e-03 + + 5.7795990258455276e-02 -1.0997010022401810e-01 + <_> + + 0 -1 8100 4.5034389942884445e-02 + + -2.8761979192495346e-02 2.2605720162391663e-01 + <_> + + 0 -1 8101 1.6864009201526642e-02 + + 3.6318089812994003e-02 -2.0162770152091980e-01 + <_> + + 0 -1 8102 1.9251279532909393e-01 + + -1.3869989663362503e-02 5.4226338863372803e-01 + <_> + + 0 -1 8103 -1.6758369747549295e-03 + + -1.1462789773941040e-01 4.9984849989414215e-02 + <_> + + 0 -1 8104 -4.5270361006259918e-03 + + 1.1731909960508347e-01 -6.1384700238704681e-02 + <_> + + 0 -1 8105 5.4975082166492939e-03 + + 3.2194830477237701e-02 -1.5348540246486664e-01 + <_> + + 0 -1 8106 3.5562040284276009e-03 + + -6.3937939703464508e-02 1.0787469893693924e-01 + <_> + + 0 -1 8107 2.1489830687642097e-03 + + -5.0976738333702087e-02 2.9315000399947166e-02 + <_> + + 0 -1 8108 -1.0464210063219070e-02 + + 1.9548749923706055e-01 -3.2784409821033478e-02 + <_> + + 0 -1 8109 -2.9779719188809395e-02 + + -3.9286538958549500e-01 1.2266620062291622e-02 + <_> + + 0 -1 8110 9.6993939951062202e-04 + + -1.0772799700498581e-01 6.1684250831604004e-02 + <_> + + 0 -1 8111 -4.0499098598957062e-02 + + -3.6696648597717285e-01 1.1805539950728416e-02 + <_> + + 0 -1 8112 -2.3762779310345650e-03 + + -1.3933740556240082e-01 5.0010170787572861e-02 + <_> + + 0 -1 8113 -5.1528858020901680e-03 + + 9.7424000501632690e-02 -2.3820690810680389e-02 + <_> + + 0 -1 8114 -2.8726980090141296e-02 + + 2.1031719446182251e-01 -3.6088269203901291e-02 + <_> + + 0 -1 8115 1.4215350151062012e-02 + + 3.4664131700992584e-02 -1.5814340114593506e-01 + <_> + + 0 -1 8116 2.0164670422673225e-03 + + 5.0487071275711060e-02 -1.2704199552536011e-01 + <_> + + 0 -1 8117 4.1724709444679320e-04 + + -5.6635189801454544e-02 1.0789140313863754e-01 + <_> + + 0 -1 8118 7.3380130343139172e-03 + + 5.0891719758510590e-02 -1.2210439890623093e-01 + <_> + + 0 -1 8119 -7.5930766761302948e-02 + + 2.2627210617065430e-01 -6.6569480113685131e-03 + <_> + + 0 -1 8120 -4.2873369529843330e-03 + + 7.2104290127754211e-02 -8.0106139183044434e-02 + <_> + + 0 -1 8121 -2.4101670831441879e-02 + + 9.1355301439762115e-02 -3.4591969102621078e-02 + <_> + + 0 -1 8122 1.9936550408601761e-02 + + -3.7764240056276321e-02 1.8896919488906860e-01 + <_> + + 0 -1 8123 5.6939899921417236e-01 + + 3.1492649577558041e-03 -5.9846472740173340e-01 + <_> + + 0 -1 8124 1.0352060198783875e-01 + + 2.3323200643062592e-02 -3.2129231095314026e-01 + <_> + + 0 -1 8125 5.9556990861892700e-02 + + 4.2170342057943344e-03 -3.3442139625549316e-01 + <_> + + 0 -1 8126 -5.0575539469718933e-02 + + -8.4793227910995483e-01 6.6583030857145786e-03 + <_> + + 0 -1 8127 -5.5158971808850765e-03 + + -7.0507496595382690e-02 2.1716769784688950e-02 + <_> + + 0 -1 8128 2.9419310390949249e-02 + + -3.6319408565759659e-02 1.7510940134525299e-01 + <_> + + 0 -1 8129 1.0972440242767334e-02 + + 1.8267199397087097e-02 -1.8641340732574463e-01 + <_> + + 0 -1 8130 -3.8842339999973774e-03 + + -1.0735920071601868e-01 6.0849040746688843e-02 + <_> + + 0 -1 8131 -1.1936859664274380e-04 + + 5.2348621189594269e-02 -1.2701539695262909e-01 + <_> + + 0 -1 8132 -5.0230980850756168e-03 + + 5.2682720124721527e-02 -1.2703679502010345e-01 + <_> + + 0 -1 8133 1.8986819684505463e-01 + + 1.7255579587072134e-03 -3.2701051235198975e-01 + <_> + + 0 -1 8134 -2.4319409858435392e-03 + + 1.3875140249729156e-01 -4.3046601116657257e-02 + <_> + + 0 -1 8135 -2.0888550207018852e-03 + + -1.1241009831428528e-01 3.7676859647035599e-02 + <_> + + 0 -1 8136 4.2116310447454453e-02 + + 8.1929191946983337e-03 -6.8541908264160156e-01 + <_> + + 0 -1 8137 2.7380110695958138e-02 + + 4.4103930704295635e-03 -5.3421849012374878e-01 + <_> + + 0 -1 8138 2.1348569542169571e-02 + + -5.1160380244255066e-02 1.0021480172872543e-01 + <_> + + 0 -1 8139 -1.7236869782209396e-02 + + -3.9995738863945007e-01 2.0257489755749702e-02 + <_> + + 0 -1 8140 7.8617185354232788e-03 + + 2.8996279463171959e-02 -1.8014070391654968e-01 + <_> + + 0 -1 8141 8.1942398101091385e-03 + + -2.5498030707240105e-02 8.4693931043148041e-02 + <_> + + 0 -1 8142 6.2367911450564861e-03 + + 1.8659260123968124e-02 -2.6443660259246826e-01 + <_> + + 0 -1 8143 2.1872919751331210e-04 + + -1.5943029522895813e-01 3.0722649767994881e-02 + <_> + + 0 -1 8144 -6.4004249870777130e-03 + + 2.8331050276756287e-01 -1.9352490082383156e-02 + <_> + + 0 -1 8145 -1.0007199645042419e-01 + + -4.0704050660133362e-01 6.1583020724356174e-03 + <_> + + 0 -1 8146 1.5690149739384651e-02 + + -1.6772339120507240e-02 2.9049569368362427e-01 + <_> + + 0 -1 8147 -7.0421490818262100e-03 + + -6.7985177040100098e-02 3.1130369752645493e-02 + <_> + + 0 -1 8148 -1.5320030041038990e-02 + + 3.6400088667869568e-01 -1.3608699664473534e-02 + <_> + + 0 -1 8149 5.8485660701990128e-02 + + 7.4363988824188709e-03 -7.5599330663681030e-01 + <_> + + 0 -1 8150 -3.5200670827180147e-03 + + -1.3923290371894836e-01 3.7657551467418671e-02 + <_> + + 0 -1 8151 -8.7158178212121129e-04 + + 4.2339839041233063e-02 -5.3530458360910416e-02 + <_> + + 0 -1 8152 2.4548629298806190e-03 + + -4.4667050242424011e-02 1.3785070180892944e-01 + <_> + + 0 -1 8153 -6.1778929084539413e-02 + + -3.5338079929351807e-01 4.5869671739637852e-03 + <_> + + 0 -1 8154 -3.8533521001227200e-04 + + 7.2278007864952087e-02 -1.0433299839496613e-01 + <_> + + 0 -1 8155 7.6227717101573944e-02 + + -1.1004550382494926e-02 5.0025188922882080e-01 + <_> + + 0 -1 8156 -4.4210380874574184e-03 + + -8.6290426552295685e-02 5.8773420751094818e-02 + <_> + + 0 -1 8157 1.5068270266056061e-02 + + -5.8916270732879639e-02 1.0025119781494141e-01 + <_> + + 0 -1 8158 2.5007940828800201e-02 + + 7.6251477003097534e-02 -8.8744960725307465e-02 + <_> + + 0 -1 8159 -7.7328123152256012e-02 + + 2.5363400578498840e-01 -1.5778530389070511e-02 + <_> + + 0 -1 8160 3.5588641185313463e-04 + + 6.2983699142932892e-02 -7.7181987464427948e-02 + <_> + + 0 -1 8161 6.9400526583194733e-02 + + -8.9571140706539154e-03 1.5102629363536835e-01 + <_> + + 0 -1 8162 -1.8577709794044495e-01 + + -6.9518351554870605e-01 7.8398203477263451e-03 + <_> + + 0 -1 8163 -6.6014728508889675e-03 + + -5.6056641042232513e-02 2.4557920172810555e-02 + <_> + + 0 -1 8164 4.0490310639142990e-02 + + -2.0202599465847015e-02 2.7736270427703857e-01 + <_> + + 0 -1 8165 1.6997240018099546e-03 + + -1.1403460055589676e-01 1.9222680479288101e-02 + <_> + + 0 -1 8166 8.4750041365623474e-02 + + 1.8607510253787041e-02 -3.0505430698394775e-01 + <_> + + 0 -1 8167 -1.6975879669189453e-02 + + 1.2357109785079956e-01 -2.9016660526394844e-02 + <_> + + 0 -1 8168 4.6773189678788185e-03 + + -4.5864760875701904e-02 1.1718840152025223e-01 + <_> + + 0 -1 8169 -1.4066020026803017e-02 + + -1.3670490682125092e-01 1.7362629994750023e-02 + <_> + + 0 -1 8170 5.0944689661264420e-02 + + 1.3865640386939049e-02 -3.9529040455818176e-01 + <_> + + 0 -1 8171 9.8265796899795532e-02 + + -1.2339199893176556e-02 3.6408239603042603e-01 + <_> + + 0 -1 8172 1.1730480473488569e-03 + + 6.6400513052940369e-02 -8.2091093063354492e-02 + <_> + + 0 -1 8173 1.0979039967060089e-01 + + 4.6397978439927101e-03 -6.1344558000564575e-01 + <_> + + 0 -1 8174 4.9452850362285972e-04 + + -1.0062679648399353e-01 5.7191990315914154e-02 + <_> + + 0 -1 8175 3.5673558712005615e-01 + + -1.4482989907264709e-02 3.9276111125946045e-01 + <_> + + 0 -1 8176 8.7493062019348145e-03 + + -4.8551220446825027e-02 1.0460250079631805e-01 + <_> + + 0 -1 8177 2.2463349625468254e-02 + + 2.2396000102162361e-02 -1.3587850332260132e-01 + <_> + + 0 -1 8178 1.8538760021328926e-02 + + 3.0029479414224625e-02 -2.0861870050430298e-01 + <_> + + 0 -1 8179 3.4236259758472443e-02 + + -1.0644080117344856e-02 1.6675490140914917e-01 + <_> + + 0 -1 8180 4.0900480002164841e-02 + + -1.2056970037519932e-02 4.3773320317268372e-01 + <_> + + 0 -1 8181 1.0512579977512360e-01 + + -9.4033451750874519e-04 7.8061622381210327e-01 + <_> + + 0 -1 8182 7.4799366295337677e-02 + + 7.8805796802043915e-03 -6.6342961788177490e-01 + <_> + + 0 -1 8183 4.3973559513688087e-05 + + -5.8106150478124619e-02 1.0466519743204117e-01 + <_> + + 0 -1 8184 6.6341059282422066e-03 + + 1.9750369712710381e-02 -2.7033481001853943e-01 + <_> + + 0 -1 8185 6.9901258684694767e-03 + + -3.2210368663072586e-02 5.6677810847759247e-02 + <_> + + 0 -1 8186 -6.9424291141331196e-03 + + 8.3492629230022430e-02 -6.4236722886562347e-02 + <_> + + 0 -1 8187 1.2524950504302979e-01 + + 1.9679870456457138e-03 -8.7889492511749268e-01 + <_> + + 0 -1 8188 -6.0555808246135712e-02 + + -6.5825527906417847e-01 7.3593561537563801e-03 + <_> + + 0 -1 8189 4.2092729359865189e-02 + + 9.0475538745522499e-03 -3.7676310539245605e-01 + <_> + + 0 -1 8190 1.6190059483051300e-02 + + 1.4534840360283852e-02 -3.4089210629463196e-01 + <_> + + 0 -1 8191 -2.6756960898637772e-02 + + 1.6862440109252930e-01 -1.0768949985504150e-02 + <_> + + 0 -1 8192 -5.1163539290428162e-02 + + -9.4068449735641479e-01 4.8503028228878975e-03 + <_> + + 0 -1 8193 -2.9093079268932343e-02 + + 1.3051369786262512e-01 -2.7216060087084770e-02 + <_> + + 0 -1 8194 -1.3433809578418732e-01 + + -5.3713047504425049e-01 1.0605730116367340e-02 + <_> + + 0 -1 8195 -4.0363678708672523e-03 + + -7.8597947955131531e-02 4.5609310269355774e-02 + <_> + + 0 -1 8196 -1.6303880512714386e-01 + + 6.9153147935867310e-01 -6.8249078467488289e-03 + <_> + + 0 -1 8197 5.3527228534221649e-02 + + -8.2422774285078049e-03 2.3649579286575317e-01 + <_> + + 0 -1 8198 9.3209616839885712e-02 + + -7.0793349295854568e-03 6.3985627889633179e-01 + <_> + + 0 -1 8199 -4.1583351790904999e-02 + + -4.0527749061584473e-01 1.1953369714319706e-02 + <_> + + 0 -1 8200 1.5241269767284393e-01 + + -1.6016889363527298e-02 3.7084808945655823e-01 + <_> + + 0 -1 8201 -1.3017480261623859e-02 + + -1.2366600334644318e-01 4.4537510722875595e-02 + <_> + + 0 -1 8202 5.4946541786193848e-02 + + 2.4852929636836052e-02 -2.1955069899559021e-01 + <_> + + 0 -1 8203 3.0320021323859692e-04 + + -1.3367289304733276e-01 4.0226090699434280e-02 + <_> + + 0 -1 8204 1.3891180045902729e-02 + + -2.6901820674538612e-02 1.9647410511970520e-01 + <_> + + 0 -1 8205 1.0848880046978593e-03 + + 3.6422070115804672e-02 -8.3430632948875427e-02 + <_> + + 0 -1 8206 2.3160090204328299e-03 + + -6.1215829104185104e-02 1.1277849972248077e-01 + <_> + + 0 -1 8207 -7.1280319243669510e-03 + + -1.4642429351806641e-01 3.1300168484449387e-02 + <_> + + 0 -1 8208 -3.5769429523497820e-03 + + 1.0159090161323547e-01 -6.0789510607719421e-02 + <_> + + 0 -1 8209 7.6856701634824276e-03 + + 4.2229469865560532e-02 -1.2583130598068237e-01 + <_> + + 0 -1 8210 8.4121264517307281e-03 + + -4.6872619539499283e-02 1.3011389970779419e-01 + <_> + + 0 -1 8211 7.5839929282665253e-02 + + -9.2988023534417152e-03 2.4260810017585754e-01 + <_> + + 0 -1 8212 8.6365960305556655e-04 + + 9.1133847832679749e-02 -6.1323560774326324e-02 + <_> + + 0 -1 8213 -1.0632569901645184e-02 + + -6.7818403244018555e-02 1.9036499783396721e-02 + <_> + + 0 -1 8214 -1.4120140112936497e-02 + + 2.9123929142951965e-01 -1.7482239753007889e-02 + <_> + + 0 -1 8215 2.0944620482623577e-03 + + -1.1744289845228195e-01 5.4129518568515778e-02 + <_> + + 0 -1 8216 4.2378879152238369e-03 + + 3.8495510816574097e-02 -1.4472819864749908e-01 + <_> + + 0 -1 8217 -2.2818730212748051e-03 + + -1.1576230078935623e-01 2.7663499116897583e-02 + <_> + + 0 -1 8218 9.4367301790043712e-04 + + -9.4088926911354065e-02 5.3373821079730988e-02 + <_> + + 0 -1 8219 1.4890190213918686e-02 + + -1.1562420055270195e-02 1.0941980034112930e-01 + <_> + + 0 -1 8220 5.2381302230060101e-03 + + 3.5265430808067322e-02 -1.5212060511112213e-01 + <_> + + 0 -1 8221 1.2663690140470862e-03 + + -3.3352568745613098e-02 7.9812049865722656e-02 + <_> + + 0 -1 8222 -5.3786882199347019e-03 + + 2.0934769511222839e-01 -2.4073069915175438e-02 + <_> + + 0 -1 8223 -1.9063480431213975e-03 + + -2.0774979889392853e-01 2.5406830012798309e-02 + <_> + + 0 -1 8224 3.0771149322390556e-03 + + -5.1940180361270905e-02 1.0475979745388031e-01 + <_> + + 0 -1 8225 9.5619028434157372e-03 + + 3.0633790418505669e-02 -1.0758169740438461e-01 + <_> + + 0 -1 8226 2.0540829747915268e-02 + + -2.2028919309377670e-02 2.3570840060710907e-01 + <_> + + 0 -1 8227 7.0854742079973221e-03 + + -4.7188248485326767e-02 8.4122747182846069e-02 + <_> + + 0 -1 8228 -6.2047559767961502e-03 + + -1.2209820002317429e-01 4.5177329331636429e-02 + <_> + + 0 -1 8229 -2.3474119603633881e-02 + + -2.8770458698272705e-01 1.0876529850065708e-02 + <_> + + 0 -1 8230 9.1368835419416428e-03 + + -3.3426750451326370e-02 2.0680120587348938e-01 + <_> + + 0 -1 8231 1.0512090520933270e-03 + + 4.7006800770759583e-02 -9.5018379390239716e-02 + <_> + + 0 -1 8232 -6.0899247182533145e-04 + + 5.3419198840856552e-02 -1.0444770008325577e-01 + <_> + + 0 -1 8233 -7.4382261373102665e-03 + + -4.8089329153299332e-02 1.9244499504566193e-02 + <_> + + 0 -1 8234 1.9495990127325058e-02 + + -3.0136700719594955e-02 2.0381480455398560e-01 + <_> + + 0 -1 8235 7.7799506485462189e-02 + + 4.2237630113959312e-03 -7.2407877445220947e-01 + <_> + + 0 -1 8236 3.1717489473521709e-03 + + 2.8818940743803978e-02 -1.6305699944496155e-01 + <_> + + 0 -1 8237 -3.9012718945741653e-02 + + -2.9151159524917603e-01 1.1131940409541130e-02 + <_> + + 0 -1 8238 -3.1845991034060717e-03 + + 6.3072219491004944e-02 -7.7291563153266907e-02 + <_> + + 0 -1 8239 1.7876720055937767e-02 + + 5.1196590065956116e-02 -3.7885930389165878e-02 + <_> + + 0 -1 8240 1.2821210548281670e-03 + + -5.7314708828926086e-02 8.7054982781410217e-02 + <_> + + 0 -1 8241 1.0710550099611282e-01 + + -1.5561000443994999e-02 3.1525009870529175e-01 + <_> + + 0 -1 8242 6.9577127695083618e-02 + + 8.9664813131093979e-03 -5.8589607477188110e-01 + <_> + + 0 -1 8243 -4.1071181185543537e-03 + + 9.5472246408462524e-02 -3.5176470875740051e-02 + <_> + + 0 -1 8244 -2.4557299911975861e-03 + + -1.6605280339717865e-01 3.7322919815778732e-02 + <_> + + 0 -1 8245 -2.0908420905470848e-02 + + 1.3989880681037903e-01 -2.9987450689077377e-02 + <_> + + 0 -1 8246 -8.1008402630686760e-03 + + -1.0529220104217529e-01 7.0245787501335144e-02 + <_> + + 0 -1 8247 -2.5671819224953651e-02 + + 4.4254720211029053e-01 -1.1081459932029247e-02 + <_> + + 0 -1 8248 -9.3759642913937569e-03 + + -6.0765031725168228e-02 8.1338323652744293e-02 + <_> + + 0 -1 8249 5.1140699535608292e-02 + + -1.0516249574720860e-02 3.4041538834571838e-01 + <_> + + 0 -1 8250 -4.0337219834327698e-03 + + 8.5099473595619202e-02 -6.3421532511711121e-02 + <_> + + 0 -1 8251 3.3258409239351749e-03 + + -8.4625139832496643e-02 4.7368369996547699e-02 + <_> + + 0 -1 8252 -3.9332117885351181e-03 + + -1.2637099623680115e-01 4.2450599372386932e-02 + <_> + + 0 -1 8253 -4.7937841154634953e-03 + + -4.2527411133050919e-02 2.5126809254288673e-02 + <_> + + 0 -1 8254 2.5972370058298111e-03 + + 4.1884120553731918e-02 -1.4374159276485443e-01 + <_> + + 0 -1 8255 5.2807550877332687e-02 + + -1.2467020191252232e-02 4.0223389863967896e-01 + <_> + + 0 -1 8256 -8.1413555890321732e-03 + + -1.2783770263195038e-01 3.8975879549980164e-02 + <_> + + 0 -1 8257 2.9801739379763603e-02 + + -1.6747390851378441e-02 1.2424229830503464e-01 + <_> + + 0 -1 8258 -8.9907720685005188e-02 + + 3.1418469548225403e-01 -1.8360419198870659e-02 + <_> + + 0 -1 8259 1.7845210433006287e-01 + + 1.0455190204083920e-02 -3.2048919796943665e-01 + <_> + + 0 -1 8260 1.8588220700621605e-02 + + -3.8541439920663834e-02 1.5135329961776733e-01 + <_> + + 0 -1 8261 -4.5074601075612009e-05 + + 5.0462849438190460e-02 -5.6574851274490356e-02 + <_> + + 0 -1 8262 3.8339050952345133e-03 + + 4.7501549124717712e-02 -1.4327140152454376e-01 + <_> + + 0 -1 8263 8.8608250021934509e-02 + + -3.3567149657756090e-03 5.8598208427429199e-01 + <_> + + 0 -1 8264 -7.0611469447612762e-02 + + 6.0292667150497437e-01 -8.3463769406080246e-03 + <_> + + 0 -1 8265 -1.3958199322223663e-01 + + -9.1693513095378876e-02 1.5311989933252335e-02 + <_> + + 0 -1 8266 7.6274941675364971e-03 + + -4.0825009346008301e-02 1.1937720328569412e-01 + <_> + + 0 -1 8267 -7.0419587194919586e-02 + + -6.6531497240066528e-01 2.6815559249371290e-03 + <_> + + 0 -1 8268 2.2952680010348558e-03 + + -7.9496517777442932e-02 5.7034268975257874e-02 + <_> + + 0 -1 8269 3.6756680347025394e-03 + + -2.9180280864238739e-02 5.6333038955926895e-02 + <_> + + 0 -1 8270 4.6072501689195633e-02 + + 1.9100179895758629e-02 -2.9163768887519836e-01 + <_> + + 0 -1 8271 2.1738489158451557e-03 + + -2.6912130415439606e-02 2.0199960470199585e-01 + <_> + + 0 -1 8272 -5.3164511919021606e-03 + + 9.3022979795932770e-02 -7.1548640727996826e-02 + <_> + + 0 -1 8273 -1.1198960244655609e-02 + + -1.0618919879198074e-01 4.8395581543445587e-02 + <_> + + 0 -1 8274 1.7013610340654850e-03 + + -1.3111209869384766e-01 4.3086219578981400e-02 + <_> + + 0 -1 8275 -1.1626269668340683e-02 + + 1.5684530138969421e-01 -2.4698950350284576e-02 + <_> + + 0 -1 8276 9.3881830573081970e-02 + + -1.2058589607477188e-02 3.7941938638687134e-01 + <_> + + 0 -1 8277 1.2041090056300163e-02 + + 2.9569109901785851e-02 -1.3328549265861511e-01 + <_> + + 0 -1 8278 -4.1863098740577698e-03 + + 6.7244023084640503e-02 -7.2228990495204926e-02 + <_> + + 0 -1 8279 8.8373906910419464e-02 + + 7.5915241613984108e-03 -6.2512797117233276e-01 + <_> + + 0 -1 8280 -1.4876410365104675e-02 + + 1.1762090027332306e-01 -4.3840218335390091e-02 + <_> + + 0 -1 8281 1.3433529995381832e-02 + + 1.9615789875388145e-02 -1.1923760175704956e-01 + <_> + + 0 -1 8282 1.5091040730476379e-01 + + -9.9040074273943901e-03 5.6262481212615967e-01 + <_> + + 0 -1 8283 -1.7507839947938919e-02 + + -2.3439739644527435e-01 1.8828360363841057e-02 + <_> + + 0 -1 8284 -1.4707089960575104e-01 + + -7.4530661106109619e-01 7.0233740843832493e-03 + <_> + + 0 -1 8285 3.1485889106988907e-02 + + -3.6193220876157284e-03 6.9215708971023560e-01 + <_> + + 0 -1 8286 -1.6217399388551712e-04 + + 4.6460039913654327e-02 -1.0642550140619278e-01 + <_> + + 0 -1 8287 5.6881760247051716e-04 + + -2.8816150501370430e-02 7.4378728866577148e-02 + <_> + + 0 -1 8288 -1.9876200705766678e-02 + + -2.0997400581836700e-01 2.3018810898065567e-02 + <_> + + 0 -1 8289 -8.7401196360588074e-03 + + 1.7325100302696228e-01 -3.5786859691143036e-02 + <_> + + 0 -1 8290 -5.0579208880662918e-02 + + -5.2024918794631958e-01 9.2388605698943138e-03 + <_> + + 0 -1 8291 9.3982152640819550e-02 + + 3.4048059023916721e-03 -2.9207429289817810e-01 + <_> + + 0 -1 8292 -1.3326539658010006e-02 + + 1.3661830127239227e-01 -3.4405559301376343e-02 + <_> + + 0 -1 8293 -2.2472620010375977e-02 + + -2.5913679599761963e-01 1.1266170069575310e-02 + <_> + + 0 -1 8294 -4.1125040501356125e-02 + + -6.6921561956405640e-01 7.3854308575391769e-03 + <_> + + 0 -1 8295 6.9720767438411713e-02 + + 5.0764488987624645e-03 -2.4747189879417419e-01 + <_> + + 0 -1 8296 2.5198599323630333e-02 + + -1.5660049393773079e-02 2.9408401250839233e-01 + <_> + + 0 -1 8297 4.2568319477140903e-03 + + 3.8112118840217590e-02 -1.2368690222501755e-01 + <_> + + 0 -1 8298 -1.2679009698331356e-02 + + -1.9976189732551575e-01 2.8806639835238457e-02 + <_> + + 0 -1 8299 -1.6080659627914429e-01 + + 1.8710459768772125e-01 -8.2025080919265747e-03 + <_> + + 0 -1 8300 1.2181399762630463e-01 + + -1.0855929926037788e-02 4.5412290096282959e-01 + <_> + + 0 -1 8301 2.8687159065157175e-03 + + -9.8563097417354584e-03 1.9689890742301941e-01 + <_> + + 0 -1 8302 -3.4924471401609480e-04 + + 4.7955259680747986e-02 -1.2549050152301788e-01 + <_> + + 0 -1 8303 4.3789181858301163e-02 + + 5.1197651773691177e-03 -6.6044712066650391e-01 + <_> + + 0 -1 8304 4.9425449222326279e-02 + + 7.9704420641064644e-03 -5.1537191867828369e-01 + <_> + + 0 -1 8305 1.2263789772987366e-02 + + 9.8127601668238640e-03 -1.6274920105934143e-01 + <_> + + 0 -1 8306 -6.7564379423856735e-03 + + -6.6992767155170441e-02 7.8426092863082886e-02 + <_> + + 0 -1 8307 1.9599240273237228e-02 + + -2.4508479982614517e-02 1.7892380058765411e-01 + <_> + + 0 -1 8308 1.3520059874281287e-03 + + -7.5853422284126282e-02 5.7282470166683197e-02 + <_> + + 0 -1 8309 5.1610758528113365e-03 + + 5.0592619925737381e-02 -9.6658922731876373e-02 + <_> + + 0 -1 8310 2.7124589309096336e-02 + + -1.3078499585390091e-02 3.3894819021224976e-01 + <_> + + 0 -1 8311 -7.3659062385559082e-02 + + -9.0775561332702637e-01 5.3760888986289501e-03 + <_> + + 0 -1 8312 -2.7619479224085808e-03 + + 1.3446320593357086e-01 -3.4483309835195541e-02 + <_> + + 0 -1 8313 -1.5638889744877815e-03 + + -1.9992120563983917e-01 1.4003699645400047e-02 + <_> + + 0 -1 8314 4.0559601038694382e-03 + + 5.3183209151029587e-02 -1.0070829838514328e-01 + <_> + + 0 -1 8315 -3.2189621124416590e-03 + + 6.2624312937259674e-02 -3.0276089906692505e-02 + <_> + + 0 -1 8316 4.1666622273623943e-03 + + -9.1761156916618347e-02 5.8400500565767288e-02 + <_> + + 0 -1 8317 2.0393060520291328e-02 + + 4.8048538155853748e-03 -3.8386350870132446e-01 + <_> + + 0 -1 8318 -9.9844802170991898e-03 + + -6.9473296403884888e-02 7.0034191012382507e-02 + <_> + + 0 -1 8319 1.9515320658683777e-02 + + -3.4106500446796417e-02 1.0831409692764282e-01 + <_> + + 0 -1 8320 8.7807718664407730e-03 + + 3.6990050226449966e-02 -1.3089330494403839e-01 + <_> + + 0 -1 8321 1.7314519500359893e-03 + + -4.2123470455408096e-02 8.4982097148895264e-02 + <_> + + 0 -1 8322 -2.6709519326686859e-02 + + 3.2326829433441162e-01 -1.5427160076797009e-02 + <_> + + 0 -1 8323 7.8696580603718758e-03 + + 3.1361158937215805e-02 -1.0568609833717346e-01 + <_> + + 0 -1 8324 3.2152980566024780e-03 + + -6.5161801874637604e-02 7.6189488172531128e-02 + <_> + + 0 -1 8325 -2.3215120658278465e-02 + + 2.2522650659084320e-01 -1.4838770031929016e-02 + <_> + + 0 -1 8326 -4.4935368932783604e-03 + + -1.3131460547447205e-01 4.2855940759181976e-02 + <_> + + 0 -1 8327 -1.1850389651954174e-02 + + 1.4825740456581116e-01 -2.9456850141286850e-02 + <_> + + 0 -1 8328 -9.3039282364770770e-04 + + 7.9329937696456909e-02 -7.5784526765346527e-02 + <_> + + 0 -1 8329 -7.2138011455535889e-04 + + 2.2042410448193550e-02 -2.0893280208110809e-01 + <_> + + 0 -1 8330 1.3078770041465759e-01 + + -1.2214420363306999e-02 4.3224608898162842e-01 + <_> + + 0 -1 8331 2.7863389253616333e-01 + + -7.4468360980972648e-04 9.9999761581420898e-01 + <_> + + 0 -1 8332 -4.0815200656652451e-02 + + -6.1310279369354248e-01 8.2405265420675278e-03 + <_> + + 0 -1 8333 1.5054940013214946e-03 + + -1.8053399398922920e-02 6.5230727195739746e-02 + <_> + + 0 -1 8334 6.5729310736060143e-03 + + 3.0967630445957184e-02 -1.5021359920501709e-01 + <_> + + 0 -1 8335 -1.4033170044422150e-01 + + -4.4641208648681641e-01 5.0997259095311165e-03 + <_> + + 0 -1 8336 -1.2781560420989990e-02 + + 1.2579609453678131e-01 -4.6258769929409027e-02 + <_> + + 0 -1 8337 1.3383819721639156e-02 + + 7.5233832001686096e-02 -2.9858419671654701e-02 + <_> + + 0 -1 8338 9.5225386321544647e-03 + + -4.4135529547929764e-02 1.0822969675064087e-01 + <_> + + 0 -1 8339 -7.2484686970710754e-02 + + -1. 1.3005880173295736e-03 + <_> + + 0 -1 8340 3.6246789386495948e-04 + + -6.6878542304039001e-02 7.3916479945182800e-02 + <_> + + 0 -1 8341 -1.5511980280280113e-02 + + -1.8414540588855743e-01 1.5999039635062218e-02 + <_> + + 0 -1 8342 5.1146611571311951e-02 + + -9.4361994415521622e-03 5.4720860719680786e-01 + <_> + + 0 -1 8343 -8.9448272774461657e-05 + + 3.2970890402793884e-02 -4.5103389769792557e-02 + <_> + + 0 -1 8344 1.0151580208912492e-03 + + 4.8603180795907974e-02 -9.8257049918174744e-02 + <_> + + 0 -1 8345 5.3570970892906189e-02 + + 1.0325700044631958e-02 -1.4304420351982117e-01 + <_> + + 0 -1 8346 1.2302629649639130e-01 + + -5.2219899371266365e-03 8.6903452873229980e-01 + <_> + + 0 -1 8347 -6.0005468549206853e-04 + + 5.3572040051221848e-02 -5.8203268796205521e-02 + <_> + + 0 -1 8348 -4.4715698808431625e-02 + + 4.4988310337066650e-01 -1.0549419559538364e-02 + <_> + + 0 -1 8349 6.3781379722058773e-03 + + 2.6184290647506714e-02 -1.0640030354261398e-01 + <_> + + 0 -1 8350 -5.6618300732225180e-04 + + 5.7264849543571472e-02 -7.7750243246555328e-02 + <_> + + 0 -1 8351 -1.5853339573368430e-04 + + 2.5316949933767319e-02 -5.7189941406250000e-02 + <_> + + 0 -1 8352 -4.9790769815444946e-02 + + -3.7127709388732910e-01 1.3125170022249222e-02 + <_> + + 0 -1 8353 -1.0477020405232906e-02 + + 8.4245949983596802e-02 -3.6731608211994171e-02 + <_> + + 0 -1 8354 -9.0497080236673355e-03 + + -1.6894440352916718e-01 2.8471369296312332e-02 + <_> + + 0 -1 8355 -3.5202078521251678e-02 + + -4.3810841441154480e-01 5.8491500094532967e-03 + <_> + + 0 -1 8356 -2.0730090327560902e-03 + + 9.4890840351581573e-02 -5.3059589117765427e-02 + <_> + + 0 -1 8357 -5.0727208144962788e-03 + + -1.1221739649772644e-01 4.4165991246700287e-02 + <_> + + 0 -1 8358 2.5876651052385569e-03 + + -5.5557820945978165e-02 1.1426319926977158e-01 + <_> + + 0 -1 8359 -2.4757650680840015e-03 + + -4.8213180154561996e-02 3.1529899686574936e-02 + <_> + + 0 -1 8360 -1.2912530452013016e-02 + + 1.1486659944057465e-01 -3.8589760661125183e-02 + <_> + + 0 -1 8361 7.0194348692893982e-02 + + 3.5798270255327225e-03 -7.3008167743682861e-01 + <_> + + 0 -1 8362 -1.2016300112009048e-01 + + -6.7217922210693359e-01 5.8088749647140503e-03 + <_> + + 0 -1 8363 1.3109490275382996e-01 + + 1.5340699814260006e-02 -1.2917870283126831e-01 + <_> + + 0 -1 8364 -1.1350499838590622e-01 + + 4.7297981381416321e-01 -1.0574280284345150e-02 + <_> + + 0 -1 8365 -7.1533523499965668e-02 + + -3.4910291433334351e-01 9.8157208412885666e-03 + <_> + + 0 -1 8366 1.5889670699834824e-02 + + -3.0149290338158607e-02 1.5134809911251068e-01 + <_> + + 0 -1 8367 2.6840370893478394e-01 + + 9.9974423646926880e-03 -1.2243749946355820e-01 + <_> + + 0 -1 8368 -1.4922569692134857e-01 + + -1.5773139894008636e-01 2.7682509273290634e-02 + <_> + + 0 -1 8369 -2.2858489304780960e-02 + + 1.7340719699859619e-01 -2.1124770864844322e-02 + <_> + + 0 -1 8370 -9.0983451809734106e-04 + + 5.5269908159971237e-02 -8.5052981972694397e-02 + <_> + + 0 -1 8371 -1.1462160386145115e-02 + + -1.4397600293159485e-01 1.3809709809720516e-02 + <_> + + 0 -1 8372 8.7118431925773621e-02 + + 6.4688520506024361e-03 -7.2809070348739624e-01 + <_> + + 0 -1 8373 5.3810589015483856e-02 + + -2.8251519426703453e-02 1.3615800440311432e-01 + <_> + + 0 -1 8374 -1.6928049735724926e-03 + + -1.0114800184965134e-01 5.2096601575613022e-02 + <_> + + 0 -1 8375 -1.4526920393109322e-02 + + -1.0613209754228592e-01 2.7218030765652657e-02 + <_> + + 0 -1 8376 -5.9082340449094772e-03 + + 1.1257000267505646e-01 -6.1032701283693314e-02 + <_> + + 0 -1 8377 -2.1421469748020172e-02 + + -1.5464189648628235e-01 1.1853870004415512e-02 + <_> + + 0 -1 8378 8.0171570181846619e-02 + + 5.5826799944043159e-03 -8.2389092445373535e-01 + <_> + + 0 -1 8379 -1.0931739816442132e-03 + + -7.8393906354904175e-02 1.3433099724352360e-02 + <_> + + 0 -1 8380 4.1605130536481738e-04 + + -4.3186139315366745e-02 1.0500840097665787e-01 + <_> + + 0 -1 8381 -2.8376420959830284e-03 + + 7.8960210084915161e-02 -4.2247280478477478e-02 + <_> + + 0 -1 8382 -2.8522519394755363e-02 + + -1.0722970217466354e-01 4.7789189964532852e-02 + <_> + + 0 -1 8383 4.0068081021308899e-01 + + -5.7991011999547482e-03 3.0695509910583496e-01 + <_> + + 0 -1 8384 -8.1703867763280869e-03 + + 1.0851760208606720e-01 -5.6153468787670135e-02 + <_> + + 0 -1 8385 9.3125440180301666e-03 + + -4.4560939073562622e-02 4.3634049594402313e-02 + <_> + + 0 -1 8386 5.8274720795452595e-03 + + 3.1310841441154480e-02 -1.6053420305252075e-01 + <_> + + 0 -1 8387 -2.9063750989735126e-03 + + 3.7148229777812958e-02 -2.7310580015182495e-02 + <_> + + 0 -1 8388 1.6421969980001450e-02 + + -3.1616371124982834e-02 1.6195470094680786e-01 + <_> + + 0 -1 8389 -1.3876060023903847e-02 + + -1.7840880155563354e-01 2.6925239711999893e-02 + <_> + + 0 -1 8390 -2.9935980215668678e-02 + + 2.0069709420204163e-01 -2.7372730895876884e-02 + <_> + + 0 -1 8391 8.1381313502788544e-03 + + 4.0951769798994064e-02 -7.4756972491741180e-02 + <_> + + 0 -1 8392 -5.8591389097273350e-03 + + -1.2337020039558411e-01 3.9641879498958588e-02 + <_> + + 0 -1 8393 7.1592196822166443e-02 + + -1.0293760336935520e-02 2.2391259670257568e-01 + <_> + + 0 -1 8394 5.0111521035432816e-02 + + 2.4072999134659767e-02 -2.1443809568881989e-01 + <_> + + 0 -1 8395 4.2603579349815845e-03 + + -2.3712050169706345e-02 7.3603406548500061e-02 + <_> + + 0 -1 8396 6.5065422095358372e-03 + + -6.7402780055999756e-02 7.6926141977310181e-02 + <_> + + 0 -1 8397 2.0325470250099897e-03 + + -9.9664673209190369e-02 5.7994231581687927e-02 + <_> + + 0 -1 8398 -9.3465158715844154e-03 + + 1.9432920217514038e-01 -3.1387709081172943e-02 + <_> + + 0 -1 8399 9.5768114551901817e-03 + + 2.2594990208745003e-02 -1.6090850532054901e-01 + <_> + + 0 -1 8400 -4.6763911843299866e-02 + + -3.5020270943641663e-01 1.5035149641335011e-02 + <_> + + 0 -1 8401 -5.0164870917797089e-02 + + 1.2763389945030212e-01 -1.1035620234906673e-02 + <_> + + 0 -1 8402 2.3148149251937866e-02 + + -2.4636579677462578e-02 2.0264349877834320e-01 + <_> + + 0 -1 8403 -7.4168562889099121e-02 + + -9.4854289293289185e-01 2.2216918878257275e-03 + <_> + + 0 -1 8404 -2.0698629319667816e-02 + + -2.4585549533367157e-01 2.1370820701122284e-02 + <_> + + 0 -1 8405 -5.8187540620565414e-02 + + 3.0531001091003418e-01 -8.1265745684504509e-03 + <_> + + 0 -1 8406 -5.2451588213443756e-02 + + 5.0567781925201416e-01 -9.7108660265803337e-03 + <_> + + 0 -1 8407 -4.6721640974283218e-02 + + 8.0896109342575073e-01 -1.8908439669758081e-03 + <_> + + 0 -1 8408 -1.0385509580373764e-02 + + -2.8369909524917603e-01 1.9166229292750359e-02 + <_> + + 0 -1 8409 5.4432367905974388e-03 + + 4.1430719196796417e-02 -1.6033279895782471e-01 + <_> + + 0 -1 8410 2.4030160158872604e-02 + + -4.3751548975706100e-02 1.0553020238876343e-01 + <_> + + 0 -1 8411 -2.6430420577526093e-02 + + -8.7448269128799438e-02 2.8769830241799355e-02 + <_> + + 0 -1 8412 4.8743681982159615e-03 + + 3.5032961517572403e-02 -1.5881679952144623e-01 + <_> + + 0 -1 8413 -2.5106489192694426e-03 + + 8.8161677122116089e-02 -3.0205590650439262e-02 + <_> + + 0 -1 8414 -5.2146320231258869e-03 + + -1.1350130289793015e-01 4.2001061141490936e-02 + <_> + + 0 -1 8415 -1.0986009612679482e-02 + + 8.4428779780864716e-02 -3.8272839039564133e-02 + <_> + + 0 -1 8416 -6.0057129710912704e-02 + + -7.9249101877212524e-01 5.2951448597013950e-03 + <_> + + 0 -1 8417 1.3621809892356396e-02 + + -1.7419820651412010e-02 2.1612060070037842e-01 + <_> + + 0 -1 8418 -2.2223800420761108e-02 + + 2.6721641421318054e-01 -2.0207190886139870e-02 + <_> + + 0 -1 8419 5.8124359697103500e-02 + + 6.0539757832884789e-03 -4.0927109122276306e-01 + <_> + + 0 -1 8420 -2.8097970411181450e-02 + + -1.1217900365591049e-01 5.4144639521837234e-02 + <_> + + 0 -1 8421 6.5278373658657074e-02 + + -7.4973162263631821e-03 1.2384270131587982e-01 + <_> + + 0 -1 8422 -2.5233640335500240e-03 + + -1.8224379420280457e-01 2.4537850171327591e-02 + <_> + + 0 -1 8423 1.1478599905967712e-01 + + 1.9617579877376556e-02 -1.1905120313167572e-01 + <_> + + 0 -1 8424 9.6991509199142456e-03 + + -5.3946550935506821e-02 1.1180210113525391e-01 + <_> + + 0 -1 8425 2.9359150677919388e-02 + + -2.3395609110593796e-02 1.8534250557422638e-01 + <_> + + 0 -1 8426 7.8490097075700760e-03 + + 1.6454109549522400e-01 -4.2129490524530411e-02 + <_> + + 0 -1 8427 4.0329899638891220e-03 + + 2.4495590478181839e-02 -6.5955489873886108e-02 + <_> + + 0 -1 8428 2.1471390128135681e-01 + + -1.0462880134582520e-02 4.7438031435012817e-01 + <_> + + 0 -1 8429 -2.2316209506243467e-03 + + 4.9796439707279205e-02 -1.0328280180692673e-01 + <_> + + 0 -1 8430 2.1833330392837524e-02 + + -5.3884848952293396e-02 9.3277551233768463e-02 + <_> + + 0 -1 8431 2.4430779740214348e-02 + + 1.5706099569797516e-02 -2.8244438767433167e-01 + <_> + + 0 -1 8432 1.2532520107924938e-02 + + -3.0983900651335716e-02 1.5599699318408966e-01 + <_> + + 0 -1 8433 7.9741179943084717e-03 + + 2.6650540530681610e-02 -1.3689580559730530e-01 + <_> + + 0 -1 8434 7.9444557428359985e-02 + + 6.4238710328936577e-03 -7.8485661745071411e-01 + <_> + + 0 -1 8435 -1.7925030551850796e-03 + + 3.9645589888095856e-02 -1.1497259885072708e-01 + <_> + + 0 -1 8436 -9.0927572455257177e-04 + + 6.3256889581680298e-02 -7.5250372290611267e-02 + <_> + + 0 -1 8437 -2.6040049269795418e-02 + + 1.4864259958267212e-01 -1.8506240099668503e-02 + <_> + + 0 -1 8438 4.1452320292592049e-03 + + 3.3959619700908661e-02 -1.4355990290641785e-01 + <_> + + 0 -1 8439 5.7123368605971336e-04 + + -6.8550966680049896e-02 6.9944731891155243e-02 + <_> + + 0 -1 8440 -4.9577720463275909e-02 + + 3.9880838990211487e-01 -1.1339910328388214e-02 + <_> + + 0 -1 8441 -1.5334860421717167e-02 + + -8.3445623517036438e-02 3.2276369631290436e-02 + <_> + + 0 -1 8442 -1.7406089231371880e-02 + + 1.3560940325260162e-01 -3.1945578753948212e-02 + <_> + + 0 -1 8443 -2.1422259509563446e-02 + + -1.1050239950418472e-01 2.8536040335893631e-02 + <_> + + 0 -1 8444 1.9694769289344549e-03 + + 4.3834108859300613e-02 -1.0551860183477402e-01 + <_> + + 0 -1 8445 -1.9115379080176353e-02 + + 1.4690290391445160e-01 -1.5405310317873955e-02 + <_> + + 0 -1 8446 4.6963259577751160e-02 + + 8.1654358655214310e-03 -5.8734887838363647e-01 + <_> + + 0 -1 8447 2.0964320003986359e-01 + + 3.1721789855509996e-03 -8.0437898635864258e-01 + <_> + + 0 -1 8448 6.2511406838893890e-02 + + -1.6422789543867111e-02 3.0976039171218872e-01 + <_> + + 0 -1 8449 -1.0126180201768875e-01 + + -6.1639147996902466e-01 7.2699659503996372e-03 + <_> + + 0 -1 8450 3.3980670850723982e-03 + + -1.9664889201521873e-02 2.2541929781436920e-01 + <_> + + 0 -1 8451 -1.7059950157999992e-02 + + -1.7193520441651344e-02 6.9114550948143005e-02 + <_> + + 0 -1 8452 3.7455849815160036e-03 + + 5.1737461239099503e-02 -8.2748822867870331e-02 + <_> + + 0 -1 8453 8.7769806385040283e-02 + + -6.3681108877062798e-03 7.9492002725601196e-02 + <_> + + 0 -1 8454 2.3725361097604036e-03 + + -3.0487439036369324e-01 1.4520769938826561e-02 + <_> + + 0 -1 8455 -1.9282909110188484e-02 + + 1.8806980550289154e-01 -1.3220929540693760e-02 + <_> + + 0 -1 8456 3.8580079562962055e-03 + + 3.3978439867496490e-02 -1.2854169309139252e-01 + <_> + + 0 -1 8457 2.6525680441409349e-03 + + -3.9146900177001953e-02 9.9119357764720917e-02 + <_> + + 0 -1 8458 9.9175602197647095e-02 + + 5.0618657842278481e-03 -8.7370461225509644e-01 + <_> + + 0 -1 8459 -7.0648840628564358e-03 + + 8.5219286382198334e-02 -2.4467790499329567e-02 + <_> + + 0 -1 8460 -5.2547529339790344e-03 + + -1.2158469855785370e-01 3.7228528410196304e-02 + <_> + + 0 -1 8461 5.0068609416484833e-03 + + -3.5557191818952560e-02 7.8515462577342987e-02 + <_> + + 0 -1 8462 -6.8118162453174591e-02 + + -2.6292499899864197e-01 1.8325960263609886e-02 + <_> + + 0 -1 8463 9.3348289374262094e-04 + + -3.0107179656624794e-02 4.4869720935821533e-02 + <_> + + 0 -1 8464 -2.1996269933879375e-03 + + 1.1136700212955475e-01 -6.6201932728290558e-02 + <_> + + 0 -1 8465 -6.6485330462455750e-03 + + -7.8398697078227997e-02 2.0472070202231407e-02 + <_> + + 0 -1 8466 1.4126920141279697e-03 + + -5.2428670227527618e-02 8.9471399784088135e-02 + <_> + + 0 -1 8467 5.1406599581241608e-02 + + -1.4306739903986454e-03 6.3885271549224854e-01 + + <_> + + <_> + 2 7 14 4 -1. + <_> + 2 9 14 2 2. + <_> + + <_> + 1 2 18 4 -1. + <_> + 7 2 6 4 3. + <_> + + <_> + 5 5 9 5 -1. + <_> + 8 5 3 5 3. + <_> + + <_> + 3 6 14 9 -1. + <_> + 3 9 14 3 3. + <_> + + <_> + 1 1 18 5 -1. + <_> + 7 1 6 5 3. + <_> + + <_> + 4 6 12 8 -1. + <_> + 4 10 12 4 2. + <_> + + <_> + 9 5 6 10 -1. + <_> + 12 5 3 5 2. + <_> + 9 10 3 5 2. + <_> + + <_> + 4 0 11 9 -1. + <_> + 4 3 11 3 3. + <_> + + <_> + 12 5 4 8 -1. + <_> + 12 9 4 4 2. + <_> + + <_> + 4 5 10 10 -1. + <_> + 4 5 5 5 2. + <_> + 9 10 5 5 2. + <_> + + <_> + 7 5 6 7 -1. + <_> + 9 5 2 7 3. + <_> + + <_> + 3 8 5 12 -1. + <_> + 3 14 5 6 2. + <_> + + <_> + 5 3 9 9 -1. + <_> + 5 6 9 3 3. + <_> + + <_> + 8 5 4 12 -1. + <_> + 8 11 4 6 2. + <_> + + <_> + 3 6 5 6 -1. + <_> + 3 9 5 3 2. + <_> + + <_> + 4 5 12 5 -1. + <_> + 8 5 4 5 3. + <_> + + <_> + 1 2 8 8 -1. + <_> + 1 2 4 4 2. + <_> + 5 6 4 4 2. + <_> + + <_> + 8 12 10 8 -1. + <_> + 13 12 5 4 2. + <_> + 8 16 5 4 2. + <_> + + <_> + 4 9 3 10 -1. + <_> + 4 14 3 5 2. + <_> + + <_> + 0 4 20 10 -1. + <_> + 0 9 20 5 2. + <_> + + <_> + 3 0 13 9 -1. + <_> + 3 3 13 3 3. + <_> + + <_> + 10 1 4 11 -1. + <_> + 10 1 2 11 2. + <_> + + <_> + 6 1 4 11 -1. + <_> + 8 1 2 11 2. + <_> + + <_> + 4 6 12 8 -1. + <_> + 10 6 6 4 2. + <_> + 4 10 6 4 2. + <_> + + <_> + 4 7 12 4 -1. + <_> + 4 9 12 2 2. + <_> + + <_> + 11 9 4 7 -1. + <_> + 11 9 2 7 2. + <_> + + <_> + 5 9 4 7 -1. + <_> + 7 9 2 7 2. + <_> + + <_> + 9 0 6 7 -1. + <_> + 11 0 2 7 3. + <_> + + <_> + 0 7 20 6 -1. + <_> + 0 9 20 2 3. + <_> + + <_> + 6 3 8 6 -1. + <_> + 6 6 8 3 2. + <_> + + <_> + 7 2 6 7 -1. + <_> + 9 2 2 7 3. + <_> + + <_> + 11 7 5 9 -1. + <_> + 11 10 5 3 3. + <_> + + <_> + 4 6 8 8 -1. + <_> + 4 6 4 4 2. + <_> + 8 10 4 4 2. + <_> + + <_> + 9 5 6 8 -1. + <_> + 9 9 6 4 2. + <_> + + <_> + 4 10 5 6 -1. + <_> + 4 13 5 3 2. + <_> + + <_> + 12 0 6 5 -1. + <_> + 12 0 3 5 2. + <_> + + <_> + 2 14 10 6 -1. + <_> + 2 14 5 3 2. + <_> + 7 17 5 3 2. + <_> + + <_> + 3 2 17 2 -1. + <_> + 3 3 17 1 2. + <_> + + <_> + 5 6 4 8 -1. + <_> + 5 10 4 4 2. + <_> + + <_> + 14 3 6 9 -1. + <_> + 14 3 3 9 2. + <_> + + <_> + 3 0 9 5 -1. + <_> + 6 0 3 5 3. + <_> + + <_> + 15 2 4 9 -1. + <_> + 15 2 2 9 2. + <_> + + <_> + 1 2 4 9 -1. + <_> + 3 2 2 9 2. + <_> + + <_> + 8 8 6 12 -1. + <_> + 8 12 6 4 3. + <_> + + <_> + 2 13 16 4 -1. + <_> + 2 13 8 2 2. + <_> + 10 15 8 2 2. + <_> + + <_> + 6 5 8 6 -1. + <_> + 6 7 8 2 3. + <_> + + <_> + 0 11 8 6 -1. + <_> + 0 13 8 2 3. + <_> + + <_> + 0 18 20 2 -1. + <_> + 0 19 20 1 2. + <_> + + <_> + 1 12 7 6 -1. + <_> + 1 14 7 2 3. + <_> + + <_> + 3 1 17 3 -1. + <_> + 3 2 17 1 3. + <_> + + <_> + 3 6 5 6 -1. + <_> + 3 9 5 3 2. + <_> + + <_> + 4 5 12 7 -1. + <_> + 8 5 4 7 3. + <_> + + <_> + 0 4 14 4 -1. + <_> + 0 4 7 2 2. + <_> + 7 6 7 2 2. + <_> + + <_> + 4 11 12 9 -1. + <_> + 4 14 12 3 3. + <_> + + <_> + 3 2 14 16 -1. + <_> + 3 2 7 8 2. + <_> + 10 10 7 8 2. + <_> + + <_> + 1 0 18 4 -1. + <_> + 7 0 6 4 3. + <_> + + <_> + 3 1 10 16 -1. + <_> + 3 1 5 8 2. + <_> + 8 9 5 8 2. + <_> + + <_> + 1 0 16 2 -1. + <_> + 1 1 16 1 2. + <_> + + <_> + 2 10 16 4 -1. + <_> + 2 12 16 2 2. + <_> + + <_> + 7 0 6 8 -1. + <_> + 9 0 2 8 3. + <_> + + <_> + 5 3 10 9 -1. + <_> + 5 6 10 3 3. + <_> + + <_> + 5 0 6 7 -1. + <_> + 7 0 2 7 3. + <_> + + <_> + 10 6 8 12 -1. + <_> + 10 10 8 4 3. + <_> + + <_> + 2 8 15 3 -1. + <_> + 2 9 15 1 3. + <_> + + <_> + 10 6 9 12 -1. + <_> + 10 10 9 4 3. + <_> + + <_> + 4 6 6 8 -1. + <_> + 4 10 6 4 2. + <_> + + <_> + 9 8 4 12 -1. + <_> + 9 12 4 4 3. + <_> + + <_> + 1 0 6 18 -1. + <_> + 4 0 3 18 2. + <_> + + <_> + 5 2 13 2 -1. + <_> + 5 3 13 1 2. + <_> + + <_> + 5 5 6 5 -1. + <_> + 8 5 3 5 2. + <_> + + <_> + 6 0 8 12 -1. + <_> + 10 0 4 6 2. + <_> + 6 6 4 6 2. + <_> + + <_> + 2 1 6 10 -1. + <_> + 2 1 3 5 2. + <_> + 5 6 3 5 2. + <_> + + <_> + 11 12 7 6 -1. + <_> + 11 14 7 2 3. + <_> + + <_> + 0 12 18 4 -1. + <_> + 0 12 9 2 2. + <_> + 9 14 9 2 2. + <_> + + <_> + 5 5 15 6 -1. + <_> + 5 7 15 2 3. + <_> + + <_> + 2 6 5 9 -1. + <_> + 2 9 5 3 3. + <_> + + <_> + 9 8 10 6 -1. + <_> + 14 8 5 3 2. + <_> + 9 11 5 3 2. + <_> + + <_> + 5 6 10 10 -1. + <_> + 5 6 5 5 2. + <_> + 10 11 5 5 2. + <_> + + <_> + 7 4 12 4 -1. + <_> + 7 6 12 2 2. + <_> + + <_> + 1 10 16 4 -1. + <_> + 1 10 8 2 2. + <_> + 9 12 8 2 2. + <_> + + <_> + 1 17 18 3 -1. + <_> + 7 17 6 3 3. + <_> + + <_> + 6 0 3 17 -1. + <_> + 7 0 1 17 3. + <_> + + <_> + 9 4 4 16 -1. + <_> + 11 4 2 8 2. + <_> + 9 12 2 8 2. + <_> + + <_> + 0 0 4 20 -1. + <_> + 2 0 2 20 2. + <_> + + <_> + 13 2 6 13 -1. + <_> + 15 2 2 13 3. + <_> + + <_> + 6 1 6 18 -1. + <_> + 6 1 3 9 2. + <_> + 9 10 3 9 2. + <_> + + <_> + 15 0 4 13 -1. + <_> + 15 0 2 13 2. + <_> + + <_> + 5 6 3 14 -1. + <_> + 6 6 1 14 3. + <_> + + <_> + 14 2 6 13 -1. + <_> + 14 2 3 13 2. + <_> + + <_> + 1 2 18 3 -1. + <_> + 7 2 6 3 3. + <_> + + <_> + 5 5 11 8 -1. + <_> + 5 9 11 4 2. + <_> + + <_> + 0 0 20 3 -1. + <_> + 0 1 20 1 3. + <_> + + <_> + 11 4 7 4 -1. + <_> + 11 6 7 2 2. + <_> + + <_> + 0 0 10 20 -1. + <_> + 5 0 5 20 2. + <_> + + <_> + 1 0 18 20 -1. + <_> + 7 0 6 20 3. + <_> + + <_> + 5 3 10 9 -1. + <_> + 5 6 10 3 3. + <_> + + <_> + 14 3 6 11 -1. + <_> + 14 3 3 11 2. + <_> + + <_> + 3 9 4 10 -1. + <_> + 3 14 4 5 2. + <_> + + <_> + 8 1 12 19 -1. + <_> + 8 1 6 19 2. + <_> + + <_> + 0 1 12 19 -1. + <_> + 6 1 6 19 2. + <_> + + <_> + 8 4 4 16 -1. + <_> + 8 12 4 8 2. + <_> + + <_> + 9 8 4 12 -1. + <_> + 9 12 4 4 3. + <_> + + <_> + 6 2 8 12 -1. + <_> + 6 6 8 4 3. + <_> + + <_> + 7 7 6 13 -1. + <_> + 9 7 2 13 3. + <_> + + <_> + 0 6 7 6 -1. + <_> + 0 9 7 3 2. + <_> + + <_> + 1 8 19 3 -1. + <_> + 1 9 19 1 3. + <_> + + <_> + 5 0 3 14 -1. + <_> + 6 0 1 14 3. + <_> + + <_> + 10 3 10 6 -1. + <_> + 15 3 5 3 2. + <_> + 10 6 5 3 2. + <_> + + <_> + 5 1 8 8 -1. + <_> + 5 1 4 4 2. + <_> + 9 5 4 4 2. + <_> + + <_> + 6 7 14 4 -1. + <_> + 13 7 7 2 2. + <_> + 6 9 7 2 2. + <_> + + <_> + 0 7 14 4 -1. + <_> + 0 7 7 2 2. + <_> + 7 9 7 2 2. + <_> + + <_> + 10 6 9 12 -1. + <_> + 10 10 9 4 3. + <_> + + <_> + 4 10 8 4 -1. + <_> + 8 10 4 4 2. + <_> + + <_> + 11 14 8 6 -1. + <_> + 11 16 8 2 3. + <_> + + <_> + 2 7 13 2 -1. + <_> + 2 8 13 1 2. + <_> + + <_> + 3 14 14 4 -1. + <_> + 10 14 7 2 2. + <_> + 3 16 7 2 2. + <_> + + <_> + 0 11 6 9 -1. + <_> + 3 11 3 9 2. + <_> + + <_> + 5 9 13 2 -1. + <_> + 5 10 13 1 2. + <_> + + <_> + 3 0 7 9 -1. + <_> + 3 3 7 3 3. + <_> + + <_> + 8 14 10 6 -1. + <_> + 13 14 5 3 2. + <_> + 8 17 5 3 2. + <_> + + <_> + 5 4 9 5 -1. + <_> + 8 4 3 5 3. + <_> + + <_> + 11 10 7 4 -1. + <_> + 11 12 7 2 2. + <_> + + <_> + 2 5 8 15 -1. + <_> + 2 10 8 5 3. + <_> + + <_> + 10 11 5 6 -1. + <_> + 10 14 5 3 2. + <_> + + <_> + 5 11 5 6 -1. + <_> + 5 14 5 3 2. + <_> + + <_> + 4 8 13 2 -1. + <_> + 4 9 13 1 2. + <_> + + <_> + 0 1 13 3 -1. + <_> + 0 2 13 1 3. + <_> + + <_> + 7 0 6 7 -1. + <_> + 9 0 2 7 3. + <_> + + <_> + 0 1 14 12 -1. + <_> + 0 1 7 6 2. + <_> + 7 7 7 6 2. + <_> + + <_> + 10 10 10 9 -1. + <_> + 10 13 10 3 3. + <_> + + <_> + 0 10 10 9 -1. + <_> + 0 13 10 3 3. + <_> + + <_> + 9 0 6 7 -1. + <_> + 11 0 2 7 3. + <_> + + <_> + 8 5 4 10 -1. + <_> + 10 5 2 10 2. + <_> + + <_> + 9 0 6 7 -1. + <_> + 11 0 2 7 3. + <_> + + <_> + 7 1 4 14 -1. + <_> + 9 1 2 14 2. + <_> + + <_> + 13 12 7 6 -1. + <_> + 13 14 7 2 3. + <_> + + <_> + 0 12 7 6 -1. + <_> + 0 14 7 2 3. + <_> + + <_> + 3 8 15 3 -1. + <_> + 8 8 5 3 3. + <_> + + <_> + 6 15 8 4 -1. + <_> + 6 17 8 2 2. + <_> + + <_> + 8 0 12 20 -1. + <_> + 8 0 6 20 2. + <_> + + <_> + 0 0 12 20 -1. + <_> + 6 0 6 20 2. + <_> + + <_> + 15 0 4 11 -1. + <_> + 15 0 2 11 2. + <_> + + <_> + 7 0 4 18 -1. + <_> + 7 0 2 9 2. + <_> + 9 9 2 9 2. + <_> + + <_> + 12 2 8 18 -1. + <_> + 16 2 4 9 2. + <_> + 12 11 4 9 2. + <_> + + <_> + 4 2 12 18 -1. + <_> + 4 2 6 9 2. + <_> + 10 11 6 9 2. + <_> + + <_> + 4 6 12 6 -1. + <_> + 4 9 12 3 2. + <_> + + <_> + 0 9 18 4 -1. + <_> + 0 9 9 2 2. + <_> + 9 11 9 2 2. + <_> + + <_> + 2 0 18 4 -1. + <_> + 11 0 9 2 2. + <_> + 2 2 9 2 2. + <_> + + <_> + 1 0 4 11 -1. + <_> + 3 0 2 11 2. + <_> + + <_> + 16 0 4 15 -1. + <_> + 16 0 2 15 2. + <_> + + <_> + 0 2 6 11 -1. + <_> + 3 2 3 11 2. + <_> + + <_> + 7 5 6 7 -1. + <_> + 9 5 2 7 3. + <_> + + <_> + 2 17 15 3 -1. + <_> + 7 17 5 3 3. + <_> + + <_> + 5 4 10 4 -1. + <_> + 5 6 10 2 2. + <_> + + <_> + 3 9 14 8 -1. + <_> + 3 13 14 4 2. + <_> + + <_> + 8 0 12 20 -1. + <_> + 8 0 6 20 2. + <_> + + <_> + 0 0 12 20 -1. + <_> + 6 0 6 20 2. + <_> + + <_> + 3 7 14 6 -1. + <_> + 3 9 14 2 3. + <_> + + <_> + 3 10 6 8 -1. + <_> + 5 10 2 8 3. + <_> + + <_> + 0 5 20 8 -1. + <_> + 10 5 10 4 2. + <_> + 0 9 10 4 2. + <_> + + <_> + 0 5 16 8 -1. + <_> + 0 9 16 4 2. + <_> + + <_> + 9 4 6 5 -1. + <_> + 9 4 3 5 2. + <_> + + <_> + 2 6 15 5 -1. + <_> + 7 6 5 5 3. + <_> + + <_> + 9 4 6 5 -1. + <_> + 9 4 3 5 2. + <_> + + <_> + 5 4 6 5 -1. + <_> + 8 4 3 5 2. + <_> + + <_> + 6 8 8 12 -1. + <_> + 10 8 4 6 2. + <_> + 6 14 4 6 2. + <_> + + <_> + 1 1 7 4 -1. + <_> + 1 3 7 2 2. + <_> + + <_> + 0 0 20 8 -1. + <_> + 10 0 10 4 2. + <_> + 0 4 10 4 2. + <_> + + <_> + 5 3 5 9 -1. + <_> + 5 6 5 3 3. + <_> + + <_> + 11 3 8 4 -1. + <_> + 11 3 4 4 2. + <_> + + <_> + 1 10 7 4 -1. + <_> + 1 12 7 2 2. + <_> + + <_> + 5 10 12 6 -1. + <_> + 11 10 6 3 2. + <_> + 5 13 6 3 2. + <_> + + <_> + 1 3 8 4 -1. + <_> + 5 3 4 4 2. + <_> + + <_> + 6 0 9 5 -1. + <_> + 9 0 3 5 3. + <_> + + <_> + 8 12 4 8 -1. + <_> + 8 16 4 4 2. + <_> + + <_> + 9 4 2 14 -1. + <_> + 9 11 2 7 2. + <_> + + <_> + 8 1 12 19 -1. + <_> + 8 1 6 19 2. + <_> + + <_> + 0 0 12 20 -1. + <_> + 6 0 6 20 2. + <_> + + <_> + 7 6 6 10 -1. + <_> + 9 6 2 10 3. + <_> + + <_> + 0 3 10 6 -1. + <_> + 0 3 5 3 2. + <_> + 5 6 5 3 2. + <_> + + <_> + 6 5 8 8 -1. + <_> + 6 9 8 4 2. + <_> + + <_> + 7 13 5 6 -1. + <_> + 7 16 5 3 2. + <_> + + <_> + 11 10 4 8 -1. + <_> + 11 14 4 4 2. + <_> + + <_> + 4 6 8 8 -1. + <_> + 4 6 4 4 2. + <_> + 8 10 4 4 2. + <_> + + <_> + 2 5 16 6 -1. + <_> + 2 7 16 2 3. + <_> + + <_> + 5 7 10 12 -1. + <_> + 5 7 5 6 2. + <_> + 10 13 5 6 2. + <_> + + <_> + 6 11 13 3 -1. + <_> + 6 12 13 1 3. + <_> + + <_> + 0 2 5 9 -1. + <_> + 0 5 5 3 3. + <_> + + <_> + 12 11 7 6 -1. + <_> + 12 14 7 3 2. + <_> + + <_> + 0 4 7 6 -1. + <_> + 0 6 7 2 3. + <_> + + <_> + 3 10 16 6 -1. + <_> + 11 10 8 3 2. + <_> + 3 13 8 3 2. + <_> + + <_> + 0 8 6 12 -1. + <_> + 3 8 3 12 2. + <_> + + <_> + 0 5 20 15 -1. + <_> + 0 10 20 5 3. + <_> + + <_> + 1 11 16 4 -1. + <_> + 1 11 8 2 2. + <_> + 9 13 8 2 2. + <_> + + <_> + 9 4 6 5 -1. + <_> + 9 4 3 5 2. + <_> + + <_> + 3 6 5 9 -1. + <_> + 3 9 5 3 3. + <_> + + <_> + 10 10 6 5 -1. + <_> + 10 10 3 5 2. + <_> + + <_> + 4 10 6 5 -1. + <_> + 7 10 3 5 2. + <_> + + <_> + 13 4 6 9 -1. + <_> + 15 4 2 9 3. + <_> + + <_> + 1 4 6 7 -1. + <_> + 3 4 2 7 3. + <_> + + <_> + 16 0 4 8 -1. + <_> + 16 0 2 8 2. + <_> + + <_> + 2 5 12 12 -1. + <_> + 2 11 12 6 2. + <_> + + <_> + 3 1 14 6 -1. + <_> + 3 3 14 2 3. + <_> + + <_> + 0 0 5 9 -1. + <_> + 0 3 5 3 3. + <_> + + <_> + 10 2 10 18 -1. + <_> + 10 2 5 18 2. + <_> + + <_> + 0 3 10 17 -1. + <_> + 5 3 5 17 2. + <_> + + <_> + 16 0 4 8 -1. + <_> + 16 0 2 8 2. + <_> + + <_> + 0 0 4 8 -1. + <_> + 2 0 2 8 2. + <_> + + <_> + 10 10 10 6 -1. + <_> + 10 12 10 2 3. + <_> + + <_> + 5 11 5 9 -1. + <_> + 5 14 5 3 3. + <_> + + <_> + 5 18 13 2 -1. + <_> + 5 19 13 1 2. + <_> + + <_> + 5 4 6 5 -1. + <_> + 8 4 3 5 2. + <_> + + <_> + 5 6 14 2 -1. + <_> + 5 6 7 2 2. + <_> + + <_> + 1 6 14 2 -1. + <_> + 8 6 7 2 2. + <_> + + <_> + 6 10 8 8 -1. + <_> + 10 10 4 4 2. + <_> + 6 14 4 4 2. + <_> + + <_> + 8 5 4 7 -1. + <_> + 10 5 2 7 2. + <_> + + <_> + 9 5 6 7 -1. + <_> + 11 5 2 7 3. + <_> + + <_> + 6 0 6 7 -1. + <_> + 8 0 2 7 3. + <_> + + <_> + 9 5 6 7 -1. + <_> + 11 5 2 7 3. + <_> + + <_> + 5 5 6 7 -1. + <_> + 7 5 2 7 3. + <_> + + <_> + 9 6 4 14 -1. + <_> + 9 13 4 7 2. + <_> + + <_> + 3 7 12 5 -1. + <_> + 7 7 4 5 3. + <_> + + <_> + 3 13 14 3 -1. + <_> + 3 14 14 1 3. + <_> + + <_> + 1 0 16 4 -1. + <_> + 1 2 16 2 2. + <_> + + <_> + 13 11 7 6 -1. + <_> + 13 13 7 2 3. + <_> + + <_> + 0 1 6 8 -1. + <_> + 3 1 3 8 2. + <_> + + <_> + 14 0 6 9 -1. + <_> + 14 0 3 9 2. + <_> + + <_> + 0 0 6 9 -1. + <_> + 3 0 3 9 2. + <_> + + <_> + 1 1 18 4 -1. + <_> + 7 1 6 4 3. + <_> + + <_> + 4 7 12 4 -1. + <_> + 4 9 12 2 2. + <_> + + <_> + 1 9 9 8 -1. + <_> + 4 9 3 8 3. + <_> + + <_> + 2 0 16 2 -1. + <_> + 2 1 16 1 2. + <_> + + <_> + 7 5 6 7 -1. + <_> + 9 5 2 7 3. + <_> + + <_> + 12 10 5 6 -1. + <_> + 12 13 5 3 2. + <_> + + <_> + 1 16 10 3 -1. + <_> + 6 16 5 3 2. + <_> + + <_> + 9 5 3 12 -1. + <_> + 9 11 3 6 2. + <_> + + <_> + 3 4 14 12 -1. + <_> + 3 4 7 6 2. + <_> + 10 10 7 6 2. + <_> + + <_> + 6 6 9 8 -1. + <_> + 6 10 9 4 2. + <_> + + <_> + 0 7 7 4 -1. + <_> + 0 9 7 2 2. + <_> + + <_> + 16 3 4 8 -1. + <_> + 16 3 2 8 2. + <_> + + <_> + 0 3 6 10 -1. + <_> + 3 3 3 10 2. + <_> + + <_> + 5 4 10 6 -1. + <_> + 5 6 10 2 3. + <_> + + <_> + 4 5 12 4 -1. + <_> + 8 5 4 4 3. + <_> + + <_> + 11 14 7 6 -1. + <_> + 11 16 7 2 3. + <_> + + <_> + 6 0 6 7 -1. + <_> + 8 0 2 7 3. + <_> + + <_> + 11 2 6 10 -1. + <_> + 14 2 3 5 2. + <_> + 11 7 3 5 2. + <_> + + <_> + 6 15 7 4 -1. + <_> + 6 17 7 2 2. + <_> + + <_> + 3 14 15 6 -1. + <_> + 3 17 15 3 2. + <_> + + <_> + 0 11 7 4 -1. + <_> + 0 13 7 2 2. + <_> + + <_> + 5 9 12 6 -1. + <_> + 11 9 6 3 2. + <_> + 5 12 6 3 2. + <_> + + <_> + 2 10 14 4 -1. + <_> + 2 10 7 2 2. + <_> + 9 12 7 2 2. + <_> + + <_> + 1 0 19 9 -1. + <_> + 1 3 19 3 3. + <_> + + <_> + 1 11 16 3 -1. + <_> + 1 12 16 1 3. + <_> + + <_> + 10 0 10 20 -1. + <_> + 10 0 5 20 2. + <_> + + <_> + 0 0 12 20 -1. + <_> + 6 0 6 20 2. + <_> + + <_> + 3 6 15 5 -1. + <_> + 8 6 5 5 3. + <_> + + <_> + 4 2 6 7 -1. + <_> + 6 2 2 7 3. + <_> + + <_> + 9 0 6 7 -1. + <_> + 11 0 2 7 3. + <_> + + <_> + 2 11 7 6 -1. + <_> + 2 14 7 3 2. + <_> + + <_> + 12 11 5 6 -1. + <_> + 12 14 5 3 2. + <_> + + <_> + 4 5 3 15 -1. + <_> + 4 10 3 5 3. + <_> + + <_> + 11 2 6 10 -1. + <_> + 14 2 3 5 2. + <_> + 11 7 3 5 2. + <_> + + <_> + 5 0 6 7 -1. + <_> + 7 0 2 7 3. + <_> + + <_> + 7 10 10 9 -1. + <_> + 7 13 10 3 3. + <_> + + <_> + 2 6 16 10 -1. + <_> + 2 6 8 5 2. + <_> + 10 11 8 5 2. + <_> + + <_> + 0 9 20 4 -1. + <_> + 10 9 10 2 2. + <_> + 0 11 10 2 2. + <_> + + <_> + 4 6 4 7 -1. + <_> + 6 6 2 7 2. + <_> + + <_> + 18 0 2 20 -1. + <_> + 18 0 1 20 2. + <_> + + <_> + 3 1 13 2 -1. + <_> + 3 2 13 1 2. + <_> + + <_> + 17 0 3 18 -1. + <_> + 18 0 1 18 3. + <_> + + <_> + 1 7 15 5 -1. + <_> + 6 7 5 5 3. + <_> + + <_> + 9 3 2 15 -1. + <_> + 9 3 1 15 2. + <_> + + <_> + 5 3 10 6 -1. + <_> + 5 6 10 3 2. + <_> + + <_> + 10 9 4 8 -1. + <_> + 10 13 4 4 2. + <_> + + <_> + 7 8 4 12 -1. + <_> + 7 12 4 4 3. + <_> + + <_> + 5 5 15 10 -1. + <_> + 5 10 15 5 2. + <_> + + <_> + 4 7 7 4 -1. + <_> + 4 9 7 2 2. + <_> + + <_> + 4 5 12 4 -1. + <_> + 8 5 4 4 3. + <_> + + <_> + 1 1 7 4 -1. + <_> + 1 3 7 2 2. + <_> + + <_> + 11 9 4 8 -1. + <_> + 11 13 4 4 2. + <_> + + <_> + 4 6 12 12 -1. + <_> + 4 6 6 6 2. + <_> + 10 12 6 6 2. + <_> + + <_> + 11 1 6 10 -1. + <_> + 14 1 3 5 2. + <_> + 11 6 3 5 2. + <_> + + <_> + 1 5 16 12 -1. + <_> + 1 5 8 6 2. + <_> + 9 11 8 6 2. + <_> + + <_> + 4 7 12 6 -1. + <_> + 4 9 12 2 3. + <_> + + <_> + 6 0 6 10 -1. + <_> + 6 0 3 5 2. + <_> + 9 5 3 5 2. + <_> + + <_> + 7 1 12 8 -1. + <_> + 13 1 6 4 2. + <_> + 7 5 6 4 2. + <_> + + <_> + 0 1 4 18 -1. + <_> + 2 1 2 18 2. + <_> + + <_> + 15 9 5 9 -1. + <_> + 15 12 5 3 3. + <_> + + <_> + 0 12 20 6 -1. + <_> + 0 12 10 3 2. + <_> + 10 15 10 3 2. + <_> + + <_> + 10 4 4 15 -1. + <_> + 10 9 4 5 3. + <_> + + <_> + 1 1 12 8 -1. + <_> + 1 1 6 4 2. + <_> + 7 5 6 4 2. + <_> + + <_> + 11 11 5 6 -1. + <_> + 11 14 5 3 2. + <_> + + <_> + 4 11 5 6 -1. + <_> + 4 14 5 3 2. + <_> + + <_> + 4 14 13 6 -1. + <_> + 4 16 13 2 3. + <_> + + <_> + 0 0 6 9 -1. + <_> + 2 0 2 9 3. + <_> + + <_> + 9 0 6 7 -1. + <_> + 11 0 2 7 3. + <_> + + <_> + 5 0 6 7 -1. + <_> + 7 0 2 7 3. + <_> + + <_> + 5 5 10 6 -1. + <_> + 5 7 10 2 3. + <_> + + <_> + 2 0 16 2 -1. + <_> + 2 1 16 1 2. + <_> + + <_> + 8 0 12 20 -1. + <_> + 8 0 6 20 2. + <_> + + <_> + 0 0 12 20 -1. + <_> + 6 0 6 20 2. + <_> + + <_> + 1 2 18 10 -1. + <_> + 10 2 9 5 2. + <_> + 1 7 9 5 2. + <_> + + <_> + 5 4 6 5 -1. + <_> + 8 4 3 5 2. + <_> + + <_> + 5 4 10 14 -1. + <_> + 10 4 5 7 2. + <_> + 5 11 5 7 2. + <_> + + <_> + 0 11 5 6 -1. + <_> + 0 14 5 3 2. + <_> + + <_> + 7 11 13 3 -1. + <_> + 7 12 13 1 3. + <_> + + <_> + 0 11 8 4 -1. + <_> + 0 13 8 2 2. + <_> + + <_> + 5 6 14 8 -1. + <_> + 5 10 14 4 2. + <_> + + <_> + 7 5 6 7 -1. + <_> + 9 5 2 7 3. + <_> + + <_> + 7 0 6 7 -1. + <_> + 9 0 2 7 3. + <_> + + <_> + 1 13 18 3 -1. + <_> + 1 14 18 1 3. + <_> + + <_> + 3 15 14 4 -1. + <_> + 10 15 7 2 2. + <_> + 3 17 7 2 2. + <_> + + <_> + 0 2 2 13 -1. + <_> + 1 2 1 13 2. + <_> + + <_> + 4 9 12 8 -1. + <_> + 8 9 4 8 3. + <_> + + <_> + 4 9 6 5 -1. + <_> + 7 9 3 5 2. + <_> + + <_> + 16 0 4 20 -1. + <_> + 16 0 2 20 2. + <_> + + <_> + 0 0 4 20 -1. + <_> + 2 0 2 20 2. + <_> + + <_> + 16 1 4 19 -1. + <_> + 16 1 2 19 2. + <_> + + <_> + 1 0 16 4 -1. + <_> + 1 0 8 2 2. + <_> + 9 2 8 2 2. + <_> + + <_> + 12 6 4 14 -1. + <_> + 14 6 2 7 2. + <_> + 12 13 2 7 2. + <_> + + <_> + 2 8 15 3 -1. + <_> + 2 9 15 1 3. + <_> + + <_> + 7 6 8 10 -1. + <_> + 11 6 4 5 2. + <_> + 7 11 4 5 2. + <_> + + <_> + 0 0 4 20 -1. + <_> + 2 0 2 20 2. + <_> + + <_> + 5 5 10 3 -1. + <_> + 5 5 5 3 2. + <_> + + <_> + 1 17 14 3 -1. + <_> + 1 18 14 1 3. + <_> + + <_> + 15 6 5 9 -1. + <_> + 15 9 5 3 3. + <_> + + <_> + 7 6 4 10 -1. + <_> + 9 6 2 10 2. + <_> + + <_> + 8 5 4 7 -1. + <_> + 8 5 2 7 2. + <_> + + <_> + 5 4 8 14 -1. + <_> + 5 4 4 7 2. + <_> + 9 11 4 7 2. + <_> + + <_> + 4 6 12 8 -1. + <_> + 10 6 6 4 2. + <_> + 4 10 6 4 2. + <_> + + <_> + 3 2 13 6 -1. + <_> + 3 4 13 2 3. + <_> + + <_> + 10 4 7 10 -1. + <_> + 10 9 7 5 2. + <_> + + <_> + 3 4 14 10 -1. + <_> + 3 4 7 5 2. + <_> + 10 9 7 5 2. + <_> + + <_> + 16 4 3 13 -1. + <_> + 17 4 1 13 3. + <_> + + <_> + 1 4 3 13 -1. + <_> + 2 4 1 13 3. + <_> + + <_> + 11 10 8 6 -1. + <_> + 11 12 8 2 3. + <_> + + <_> + 0 10 9 4 -1. + <_> + 0 12 9 2 2. + <_> + + <_> + 7 8 12 8 -1. + <_> + 13 8 6 4 2. + <_> + 7 12 6 4 2. + <_> + + <_> + 1 8 12 8 -1. + <_> + 1 8 6 4 2. + <_> + 7 12 6 4 2. + <_> + + <_> + 1 0 18 10 -1. + <_> + 7 0 6 10 3. + <_> + + <_> + 0 2 12 12 -1. + <_> + 4 2 4 12 3. + <_> + + <_> + 8 11 12 9 -1. + <_> + 12 11 4 9 3. + <_> + + <_> + 5 10 4 9 -1. + <_> + 7 10 2 9 2. + <_> + + <_> + 10 2 3 10 -1. + <_> + 10 7 3 5 2. + <_> + + <_> + 1 1 18 4 -1. + <_> + 7 1 6 4 3. + <_> + + <_> + 9 12 8 8 -1. + <_> + 13 12 4 4 2. + <_> + 9 16 4 4 2. + <_> + + <_> + 7 5 6 7 -1. + <_> + 9 5 2 7 3. + <_> + + <_> + 10 2 9 15 -1. + <_> + 13 2 3 15 3. + <_> + + <_> + 1 1 9 15 -1. + <_> + 4 1 3 15 3. + <_> + + <_> + 5 4 10 6 -1. + <_> + 5 6 10 2 3. + <_> + + <_> + 5 6 5 8 -1. + <_> + 5 10 5 4 2. + <_> + + <_> + 4 6 12 4 -1. + <_> + 8 6 4 4 3. + <_> + + <_> + 3 9 5 8 -1. + <_> + 3 13 5 4 2. + <_> + + <_> + 11 1 6 12 -1. + <_> + 14 1 3 6 2. + <_> + 11 7 3 6 2. + <_> + + <_> + 3 12 8 8 -1. + <_> + 3 12 4 4 2. + <_> + 7 16 4 4 2. + <_> + + <_> + 15 0 3 15 -1. + <_> + 15 5 3 5 3. + <_> + + <_> + 2 5 14 8 -1. + <_> + 2 5 7 4 2. + <_> + 9 9 7 4 2. + <_> + + <_> + 12 14 7 6 -1. + <_> + 12 16 7 2 3. + <_> + + <_> + 3 1 6 10 -1. + <_> + 3 1 3 5 2. + <_> + 6 6 3 5 2. + <_> + + <_> + 4 8 13 2 -1. + <_> + 4 9 13 1 2. + <_> + + <_> + 0 0 12 20 -1. + <_> + 6 0 6 20 2. + <_> + + <_> + 1 2 19 2 -1. + <_> + 1 3 19 1 2. + <_> + + <_> + 1 14 7 6 -1. + <_> + 1 16 7 2 3. + <_> + + <_> + 5 13 13 3 -1. + <_> + 5 14 13 1 3. + <_> + + <_> + 5 0 6 7 -1. + <_> + 7 0 2 7 3. + <_> + + <_> + 7 0 13 2 -1. + <_> + 7 1 13 1 2. + <_> + + <_> + 6 6 8 12 -1. + <_> + 6 10 8 4 3. + <_> + + <_> + 7 1 8 8 -1. + <_> + 11 1 4 4 2. + <_> + 7 5 4 4 2. + <_> + + <_> + 5 1 8 8 -1. + <_> + 5 1 4 4 2. + <_> + 9 5 4 4 2. + <_> + + <_> + 10 10 8 6 -1. + <_> + 10 12 8 2 3. + <_> + + <_> + 8 2 3 12 -1. + <_> + 8 8 3 6 2. + <_> + + <_> + 12 5 7 8 -1. + <_> + 12 9 7 4 2. + <_> + + <_> + 1 2 6 14 -1. + <_> + 3 2 2 14 3. + <_> + + <_> + 15 1 5 9 -1. + <_> + 15 4 5 3 3. + <_> + + <_> + 1 5 7 8 -1. + <_> + 1 9 7 4 2. + <_> + + <_> + 8 4 4 16 -1. + <_> + 8 12 4 8 2. + <_> + + <_> + 4 0 6 7 -1. + <_> + 6 0 2 7 3. + <_> + + <_> + 11 10 7 6 -1. + <_> + 11 12 7 2 3. + <_> + + <_> + 2 10 7 6 -1. + <_> + 2 12 7 2 3. + <_> + + <_> + 5 12 13 3 -1. + <_> + 5 13 13 1 3. + <_> + + <_> + 1 15 7 4 -1. + <_> + 1 17 7 2 2. + <_> + + <_> + 2 2 17 6 -1. + <_> + 2 4 17 2 3. + <_> + + <_> + 1 15 8 4 -1. + <_> + 5 15 4 4 2. + <_> + + <_> + 10 1 4 8 -1. + <_> + 10 1 2 8 2. + <_> + + <_> + 6 1 4 8 -1. + <_> + 8 1 2 8 2. + <_> + + <_> + 10 3 3 14 -1. + <_> + 11 3 1 14 3. + <_> + + <_> + 0 11 18 4 -1. + <_> + 0 11 9 2 2. + <_> + 9 13 9 2 2. + <_> + + <_> + 11 11 7 4 -1. + <_> + 11 13 7 2 2. + <_> + + <_> + 2 7 12 12 -1. + <_> + 2 7 6 6 2. + <_> + 8 13 6 6 2. + <_> + + <_> + 4 11 13 2 -1. + <_> + 4 12 13 1 2. + <_> + + <_> + 0 4 15 12 -1. + <_> + 0 10 15 6 2. + <_> + + <_> + 5 2 11 8 -1. + <_> + 5 6 11 4 2. + <_> + + <_> + 2 8 13 3 -1. + <_> + 2 9 13 1 3. + <_> + + <_> + 15 3 5 9 -1. + <_> + 15 6 5 3 3. + <_> + + <_> + 7 3 3 13 -1. + <_> + 8 3 1 13 3. + <_> + + <_> + 1 9 18 3 -1. + <_> + 7 9 6 3 3. + <_> + + <_> + 8 1 3 13 -1. + <_> + 9 1 1 13 3. + <_> + + <_> + 9 3 2 13 -1. + <_> + 9 3 1 13 2. + <_> + + <_> + 1 2 8 8 -1. + <_> + 1 2 4 4 2. + <_> + 5 6 4 4 2. + <_> + + <_> + 9 5 3 12 -1. + <_> + 9 11 3 6 2. + <_> + + <_> + 5 4 9 5 -1. + <_> + 8 4 3 5 3. + <_> + + <_> + 0 3 20 16 -1. + <_> + 0 11 20 8 2. + <_> + + <_> + 0 4 16 6 -1. + <_> + 0 6 16 2 3. + <_> + + <_> + 9 6 5 12 -1. + <_> + 9 12 5 6 2. + <_> + + <_> + 5 6 10 8 -1. + <_> + 5 10 10 4 2. + <_> + + <_> + 2 8 16 3 -1. + <_> + 2 9 16 1 3. + <_> + + <_> + 2 9 16 3 -1. + <_> + 2 10 16 1 3. + <_> + + <_> + 7 15 7 4 -1. + <_> + 7 17 7 2 2. + <_> + + <_> + 6 1 7 6 -1. + <_> + 6 3 7 2 3. + <_> + + <_> + 3 10 14 3 -1. + <_> + 3 11 14 1 3. + <_> + + <_> + 1 4 6 16 -1. + <_> + 1 4 3 8 2. + <_> + 4 12 3 8 2. + <_> + + <_> + 1 14 19 6 -1. + <_> + 1 16 19 2 3. + <_> + + <_> + 5 9 4 8 -1. + <_> + 7 9 2 8 2. + <_> + + <_> + 5 7 12 4 -1. + <_> + 9 7 4 4 3. + <_> + + <_> + 3 6 12 4 -1. + <_> + 7 6 4 4 3. + <_> + + <_> + 6 5 8 6 -1. + <_> + 6 7 8 2 3. + <_> + + <_> + 4 0 6 10 -1. + <_> + 6 0 2 10 3. + <_> + + <_> + 11 9 4 8 -1. + <_> + 11 13 4 4 2. + <_> + + <_> + 5 9 4 8 -1. + <_> + 5 13 4 4 2. + <_> + + <_> + 10 0 3 13 -1. + <_> + 11 0 1 13 3. + <_> + + <_> + 6 0 6 7 -1. + <_> + 8 0 2 7 3. + <_> + + <_> + 4 0 13 2 -1. + <_> + 4 1 13 1 2. + <_> + + <_> + 0 0 4 7 -1. + <_> + 2 0 2 7 2. + <_> + + <_> + 14 3 6 7 -1. + <_> + 16 3 2 7 3. + <_> + + <_> + 5 4 5 10 -1. + <_> + 5 9 5 5 2. + <_> + + <_> + 8 1 5 10 -1. + <_> + 8 6 5 5 2. + <_> + + <_> + 5 0 6 7 -1. + <_> + 7 0 2 7 3. + <_> + + <_> + 14 3 6 9 -1. + <_> + 16 3 2 9 3. + <_> + + <_> + 0 3 6 9 -1. + <_> + 2 3 2 9 3. + <_> + + <_> + 1 1 19 3 -1. + <_> + 1 2 19 1 3. + <_> + + <_> + 6 6 4 14 -1. + <_> + 8 6 2 14 2. + <_> + + <_> + 8 5 6 8 -1. + <_> + 10 5 2 8 3. + <_> + + <_> + 4 10 12 4 -1. + <_> + 8 10 4 4 3. + <_> + + <_> + 0 6 20 2 -1. + <_> + 0 6 10 2 2. + <_> + + <_> + 6 4 6 5 -1. + <_> + 9 4 3 5 2. + <_> + + <_> + 13 2 6 11 -1. + <_> + 13 2 3 11 2. + <_> + + <_> + 0 6 5 9 -1. + <_> + 0 9 5 3 3. + <_> + + <_> + 13 2 6 8 -1. + <_> + 13 2 3 8 2. + <_> + + <_> + 1 2 6 8 -1. + <_> + 4 2 3 8 2. + <_> + + <_> + 8 0 12 20 -1. + <_> + 8 0 6 20 2. + <_> + + <_> + 0 0 12 20 -1. + <_> + 6 0 6 20 2. + <_> + + <_> + 7 11 13 3 -1. + <_> + 7 12 13 1 3. + <_> + + <_> + 0 2 20 6 -1. + <_> + 0 2 10 3 2. + <_> + 10 5 10 3 2. + <_> + + <_> + 8 6 6 7 -1. + <_> + 10 6 2 7 3. + <_> + + <_> + 5 0 3 13 -1. + <_> + 6 0 1 13 3. + <_> + + <_> + 0 1 20 10 -1. + <_> + 0 6 20 5 2. + <_> + + <_> + 7 1 3 13 -1. + <_> + 8 1 1 13 3. + <_> + + <_> + 11 0 2 16 -1. + <_> + 11 0 1 16 2. + <_> + + <_> + 0 0 2 13 -1. + <_> + 1 0 1 13 2. + <_> + + <_> + 0 13 20 6 -1. + <_> + 10 13 10 3 2. + <_> + 0 16 10 3 2. + <_> + + <_> + 0 7 4 13 -1. + <_> + 2 7 2 13 2. + <_> + + <_> + 5 10 15 10 -1. + <_> + 5 15 15 5 2. + <_> + + <_> + 0 10 15 10 -1. + <_> + 0 15 15 5 2. + <_> + + <_> + 2 17 18 3 -1. + <_> + 8 17 6 3 3. + <_> + + <_> + 7 0 2 16 -1. + <_> + 8 0 1 16 2. + <_> + + <_> + 6 14 9 4 -1. + <_> + 6 16 9 2 2. + <_> + + <_> + 1 3 15 2 -1. + <_> + 1 4 15 1 2. + <_> + + <_> + 6 5 13 8 -1. + <_> + 6 9 13 4 2. + <_> + + <_> + 4 0 11 6 -1. + <_> + 4 2 11 2 3. + <_> + + <_> + 1 9 18 4 -1. + <_> + 10 9 9 2 2. + <_> + 1 11 9 2 2. + <_> + + <_> + 3 9 6 8 -1. + <_> + 6 9 3 8 2. + <_> + + <_> + 5 8 12 4 -1. + <_> + 9 8 4 4 3. + <_> + + <_> + 3 8 12 4 -1. + <_> + 7 8 4 4 3. + <_> + + <_> + 8 6 6 7 -1. + <_> + 10 6 2 7 3. + <_> + + <_> + 6 6 6 7 -1. + <_> + 8 6 2 7 3. + <_> + + <_> + 7 0 6 7 -1. + <_> + 9 0 2 7 3. + <_> + + <_> + 5 7 8 8 -1. + <_> + 5 7 4 4 2. + <_> + 9 11 4 4 2. + <_> + + <_> + 12 0 8 8 -1. + <_> + 16 0 4 4 2. + <_> + 12 4 4 4 2. + <_> + + <_> + 4 6 12 3 -1. + <_> + 10 6 6 3 2. + <_> + + <_> + 0 0 20 4 -1. + <_> + 10 0 10 2 2. + <_> + 0 2 10 2 2. + <_> + + <_> + 3 6 13 3 -1. + <_> + 3 7 13 1 3. + <_> + + <_> + 11 2 4 7 -1. + <_> + 11 2 2 7 2. + <_> + + <_> + 5 2 4 7 -1. + <_> + 7 2 2 7 2. + <_> + + <_> + 1 16 18 2 -1. + <_> + 1 17 18 1 2. + <_> + + <_> + 0 13 14 3 -1. + <_> + 0 14 14 1 3. + <_> + + <_> + 13 0 3 13 -1. + <_> + 14 0 1 13 3. + <_> + + <_> + 3 14 13 3 -1. + <_> + 3 15 13 1 3. + <_> + + <_> + 11 12 7 6 -1. + <_> + 11 14 7 2 3. + <_> + + <_> + 2 12 7 6 -1. + <_> + 2 14 7 2 3. + <_> + + <_> + 2 10 18 10 -1. + <_> + 8 10 6 10 3. + <_> + + <_> + 0 12 13 2 -1. + <_> + 0 13 13 1 2. + <_> + + <_> + 5 7 14 4 -1. + <_> + 12 7 7 2 2. + <_> + 5 9 7 2 2. + <_> + + <_> + 1 7 14 4 -1. + <_> + 1 7 7 2 2. + <_> + 8 9 7 2 2. + <_> + + <_> + 2 17 18 3 -1. + <_> + 8 17 6 3 3. + <_> + + <_> + 4 0 3 13 -1. + <_> + 5 0 1 13 3. + <_> + + <_> + 9 7 9 9 -1. + <_> + 12 7 3 9 3. + <_> + + <_> + 0 8 15 2 -1. + <_> + 0 9 15 1 2. + <_> + + <_> + 15 4 5 6 -1. + <_> + 15 7 5 3 2. + <_> + + <_> + 4 0 9 18 -1. + <_> + 4 9 9 9 2. + <_> + + <_> + 14 15 6 5 -1. + <_> + 14 15 3 5 2. + <_> + + <_> + 0 4 5 6 -1. + <_> + 0 7 5 3 2. + <_> + + <_> + 9 1 5 10 -1. + <_> + 9 6 5 5 2. + <_> + + <_> + 0 11 6 8 -1. + <_> + 3 11 3 8 2. + <_> + + <_> + 9 7 6 10 -1. + <_> + 12 7 3 5 2. + <_> + 9 12 3 5 2. + <_> + + <_> + 1 5 9 10 -1. + <_> + 4 5 3 10 3. + <_> + + <_> + 6 2 9 16 -1. + <_> + 9 2 3 16 3. + <_> + + <_> + 5 2 9 16 -1. + <_> + 8 2 3 16 3. + <_> + + <_> + 5 10 10 10 -1. + <_> + 5 15 10 5 2. + <_> + + <_> + 5 4 6 10 -1. + <_> + 5 4 3 5 2. + <_> + 8 9 3 5 2. + <_> + + <_> + 11 2 8 8 -1. + <_> + 15 2 4 4 2. + <_> + 11 6 4 4 2. + <_> + + <_> + 0 2 6 10 -1. + <_> + 3 2 3 10 2. + <_> + + <_> + 4 10 13 8 -1. + <_> + 4 14 13 4 2. + <_> + + <_> + 5 6 8 4 -1. + <_> + 9 6 4 4 2. + <_> + + <_> + 1 17 18 3 -1. + <_> + 7 17 6 3 3. + <_> + + <_> + 1 2 8 8 -1. + <_> + 1 2 4 4 2. + <_> + 5 6 4 4 2. + <_> + + <_> + 4 7 12 6 -1. + <_> + 4 9 12 2 3. + <_> + + <_> + 4 5 12 10 -1. + <_> + 4 5 6 5 2. + <_> + 10 10 6 5 2. + <_> + + <_> + 8 12 8 8 -1. + <_> + 12 12 4 4 2. + <_> + 8 16 4 4 2. + <_> + + <_> + 3 14 5 6 -1. + <_> + 3 17 5 3 2. + <_> + + <_> + 7 4 6 8 -1. + <_> + 9 4 2 8 3. + <_> + + <_> + 4 0 6 8 -1. + <_> + 6 0 2 8 3. + <_> + + <_> + 7 0 13 3 -1. + <_> + 7 1 13 1 3. + <_> + + <_> + 3 1 14 2 -1. + <_> + 3 2 14 1 2. + <_> + + <_> + 12 10 5 6 -1. + <_> + 12 13 5 3 2. + <_> + + <_> + 0 5 20 6 -1. + <_> + 0 7 20 2 3. + <_> + + <_> + 13 1 3 18 -1. + <_> + 14 1 1 18 3. + <_> + + <_> + 4 1 3 15 -1. + <_> + 5 1 1 15 3. + <_> + + <_> + 6 14 13 3 -1. + <_> + 6 15 13 1 3. + <_> + + <_> + 0 12 20 4 -1. + <_> + 0 14 20 2 2. + <_> + + <_> + 12 11 7 4 -1. + <_> + 12 13 7 2 2. + <_> + + <_> + 1 11 7 4 -1. + <_> + 1 13 7 2 2. + <_> + + <_> + 15 2 5 9 -1. + <_> + 15 5 5 3 3. + <_> + + <_> + 0 7 20 2 -1. + <_> + 0 8 20 1 2. + <_> + + <_> + 15 2 5 9 -1. + <_> + 15 5 5 3 3. + <_> + + <_> + 0 2 5 9 -1. + <_> + 0 5 5 3 3. + <_> + + <_> + 5 5 10 8 -1. + <_> + 5 9 10 4 2. + <_> + + <_> + 7 1 3 10 -1. + <_> + 7 6 3 5 2. + <_> + + <_> + 7 0 6 7 -1. + <_> + 9 0 2 7 3. + <_> + + <_> + 7 5 6 7 -1. + <_> + 9 5 2 7 3. + <_> + + <_> + 4 9 12 11 -1. + <_> + 8 9 4 11 3. + <_> + + <_> + 1 0 18 20 -1. + <_> + 7 0 6 20 3. + <_> + + <_> + 7 15 7 4 -1. + <_> + 7 17 7 2 2. + <_> + + <_> + 2 15 16 4 -1. + <_> + 2 17 16 2 2. + <_> + + <_> + 5 18 13 2 -1. + <_> + 5 19 13 1 2. + <_> + + <_> + 3 0 6 8 -1. + <_> + 5 0 2 8 3. + <_> + + <_> + 12 0 2 15 -1. + <_> + 12 0 1 15 2. + <_> + + <_> + 5 0 6 7 -1. + <_> + 7 0 2 7 3. + <_> + + <_> + 10 14 9 6 -1. + <_> + 10 16 9 2 3. + <_> + + <_> + 1 14 9 6 -1. + <_> + 1 16 9 2 3. + <_> + + <_> + 5 13 13 3 -1. + <_> + 5 14 13 1 3. + <_> + + <_> + 3 2 13 2 -1. + <_> + 3 3 13 1 2. + <_> + + <_> + 4 6 16 3 -1. + <_> + 4 6 8 3 2. + <_> + + <_> + 0 10 17 2 -1. + <_> + 0 11 17 1 2. + <_> + + <_> + 11 6 6 12 -1. + <_> + 11 12 6 6 2. + <_> + + <_> + 0 10 16 4 -1. + <_> + 0 10 8 2 2. + <_> + 8 12 8 2 2. + <_> + + <_> + 7 14 13 3 -1. + <_> + 7 15 13 1 3. + <_> + + <_> + 3 14 14 4 -1. + <_> + 3 14 7 2 2. + <_> + 10 16 7 2 2. + <_> + + <_> + 6 6 14 3 -1. + <_> + 6 6 7 3 2. + <_> + + <_> + 0 6 14 3 -1. + <_> + 7 6 7 3 2. + <_> + + <_> + 5 8 10 8 -1. + <_> + 10 8 5 4 2. + <_> + 5 12 5 4 2. + <_> + + <_> + 1 2 18 7 -1. + <_> + 7 2 6 7 3. + <_> + + <_> + 12 6 5 6 -1. + <_> + 12 9 5 3 2. + <_> + + <_> + 1 10 4 7 -1. + <_> + 3 10 2 7 2. + <_> + + <_> + 4 0 14 2 -1. + <_> + 4 1 14 1 2. + <_> + + <_> + 0 6 7 9 -1. + <_> + 0 9 7 3 3. + <_> + + <_> + 9 6 3 14 -1. + <_> + 10 6 1 14 3. + <_> + + <_> + 3 4 13 3 -1. + <_> + 3 5 13 1 3. + <_> + + <_> + 13 2 7 6 -1. + <_> + 13 4 7 2 3. + <_> + + <_> + 0 1 18 5 -1. + <_> + 6 1 6 5 3. + <_> + + <_> + 12 10 6 10 -1. + <_> + 15 10 3 5 2. + <_> + 12 15 3 5 2. + <_> + + <_> + 2 10 6 10 -1. + <_> + 2 10 3 5 2. + <_> + 5 15 3 5 2. + <_> + + <_> + 4 3 12 6 -1. + <_> + 4 5 12 2 3. + <_> + + <_> + 0 2 18 4 -1. + <_> + 0 2 9 2 2. + <_> + 9 4 9 2 2. + <_> + + <_> + 7 6 6 10 -1. + <_> + 9 6 2 10 3. + <_> + + <_> + 3 0 6 5 -1. + <_> + 6 0 3 5 2. + <_> + + <_> + 10 10 6 10 -1. + <_> + 13 10 3 5 2. + <_> + 10 15 3 5 2. + <_> + + <_> + 4 10 6 10 -1. + <_> + 4 10 3 5 2. + <_> + 7 15 3 5 2. + <_> + + <_> + 6 0 8 10 -1. + <_> + 10 0 4 5 2. + <_> + 6 5 4 5 2. + <_> + + <_> + 1 0 6 10 -1. + <_> + 1 0 3 5 2. + <_> + 4 5 3 5 2. + <_> + + <_> + 9 3 2 14 -1. + <_> + 9 10 2 7 2. + <_> + + <_> + 12 1 6 10 -1. + <_> + 15 1 3 5 2. + <_> + 12 6 3 5 2. + <_> + + <_> + 4 6 12 4 -1. + <_> + 8 6 4 4 3. + <_> + + <_> + 11 1 9 18 -1. + <_> + 11 10 9 9 2. + <_> + + <_> + 2 1 6 10 -1. + <_> + 2 1 3 5 2. + <_> + 5 6 3 5 2. + <_> + + <_> + 4 10 16 4 -1. + <_> + 12 10 8 2 2. + <_> + 4 12 8 2 2. + <_> + + <_> + 0 10 18 4 -1. + <_> + 0 10 9 2 2. + <_> + 9 12 9 2 2. + <_> + + <_> + 12 5 4 8 -1. + <_> + 12 9 4 4 2. + <_> + + <_> + 0 4 18 10 -1. + <_> + 0 4 9 5 2. + <_> + 9 9 9 5 2. + <_> + + <_> + 2 11 18 2 -1. + <_> + 2 12 18 1 2. + <_> + + <_> + 4 0 5 9 -1. + <_> + 4 3 5 3 3. + <_> + + <_> + 10 2 6 8 -1. + <_> + 12 2 2 8 3. + <_> + + <_> + 1 7 13 2 -1. + <_> + 1 8 13 1 2. + <_> + + <_> + 10 2 6 8 -1. + <_> + 12 2 2 8 3. + <_> + + <_> + 4 2 6 8 -1. + <_> + 6 2 2 8 3. + <_> + + <_> + 8 5 8 8 -1. + <_> + 12 5 4 4 2. + <_> + 8 9 4 4 2. + <_> + + <_> + 0 2 5 9 -1. + <_> + 0 5 5 3 3. + <_> + + <_> + 13 0 6 10 -1. + <_> + 16 0 3 5 2. + <_> + 13 5 3 5 2. + <_> + + <_> + 3 9 13 3 -1. + <_> + 3 10 13 1 3. + <_> + + <_> + 5 11 11 6 -1. + <_> + 5 14 11 3 2. + <_> + + <_> + 1 14 7 6 -1. + <_> + 1 16 7 2 3. + <_> + + <_> + 13 5 4 8 -1. + <_> + 13 9 4 4 2. + <_> + + <_> + 3 5 4 8 -1. + <_> + 3 9 4 4 2. + <_> + + <_> + 10 0 10 20 -1. + <_> + 10 0 5 20 2. + <_> + + <_> + 0 0 10 20 -1. + <_> + 5 0 5 20 2. + <_> + + <_> + 7 6 6 7 -1. + <_> + 9 6 2 7 3. + <_> + + <_> + 0 1 16 3 -1. + <_> + 0 2 16 1 3. + <_> + + <_> + 8 9 6 10 -1. + <_> + 8 14 6 5 2. + <_> + + <_> + 3 8 14 3 -1. + <_> + 3 9 14 1 3. + <_> + + <_> + 13 0 6 10 -1. + <_> + 16 0 3 5 2. + <_> + 13 5 3 5 2. + <_> + + <_> + 1 0 6 10 -1. + <_> + 1 0 3 5 2. + <_> + 4 5 3 5 2. + <_> + + <_> + 7 1 8 12 -1. + <_> + 7 7 8 6 2. + <_> + + <_> + 1 2 17 2 -1. + <_> + 1 3 17 1 2. + <_> + + <_> + 11 0 3 18 -1. + <_> + 12 0 1 18 3. + <_> + + <_> + 0 13 8 6 -1. + <_> + 0 15 8 2 3. + <_> + + <_> + 7 15 7 4 -1. + <_> + 7 17 7 2 2. + <_> + + <_> + 0 6 6 14 -1. + <_> + 0 6 3 7 2. + <_> + 3 13 3 7 2. + <_> + + <_> + 12 11 8 6 -1. + <_> + 12 13 8 2 3. + <_> + + <_> + 2 16 12 4 -1. + <_> + 6 16 4 4 3. + <_> + + <_> + 7 8 13 3 -1. + <_> + 7 9 13 1 3. + <_> + + <_> + 5 6 4 8 -1. + <_> + 5 10 4 4 2. + <_> + + <_> + 3 11 16 4 -1. + <_> + 11 11 8 2 2. + <_> + 3 13 8 2 2. + <_> + + <_> + 1 11 16 4 -1. + <_> + 1 11 8 2 2. + <_> + 9 13 8 2 2. + <_> + + <_> + 16 3 4 8 -1. + <_> + 16 3 2 8 2. + <_> + + <_> + 6 0 3 18 -1. + <_> + 7 0 1 18 3. + <_> + + <_> + 16 3 4 8 -1. + <_> + 16 3 2 8 2. + <_> + + <_> + 4 12 12 4 -1. + <_> + 8 12 4 4 3. + <_> + + <_> + 4 0 16 3 -1. + <_> + 4 1 16 1 3. + <_> + + <_> + 0 3 4 8 -1. + <_> + 2 3 2 8 2. + <_> + + <_> + 16 0 4 7 -1. + <_> + 16 0 2 7 2. + <_> + + <_> + 0 0 4 7 -1. + <_> + 2 0 2 7 2. + <_> + + <_> + 9 6 6 12 -1. + <_> + 9 6 3 12 2. + <_> + + <_> + 0 10 10 6 -1. + <_> + 0 12 10 2 3. + <_> + + <_> + 0 0 20 3 -1. + <_> + 0 1 20 1 3. + <_> + + <_> + 4 10 12 10 -1. + <_> + 4 15 12 5 2. + <_> + + <_> + 10 4 4 16 -1. + <_> + 10 4 2 16 2. + <_> + + <_> + 6 4 4 16 -1. + <_> + 8 4 2 16 2. + <_> + + <_> + 7 8 13 2 -1. + <_> + 7 9 13 1 2. + <_> + + <_> + 0 8 13 2 -1. + <_> + 0 9 13 1 2. + <_> + + <_> + 8 0 9 5 -1. + <_> + 11 0 3 5 3. + <_> + + <_> + 3 0 9 5 -1. + <_> + 6 0 3 5 3. + <_> + + <_> + 14 6 6 10 -1. + <_> + 14 6 3 10 2. + <_> + + <_> + 1 5 17 6 -1. + <_> + 1 7 17 2 3. + <_> + + <_> + 14 6 6 10 -1. + <_> + 14 6 3 10 2. + <_> + + <_> + 0 17 14 3 -1. + <_> + 0 18 14 1 3. + <_> + + <_> + 14 6 6 10 -1. + <_> + 14 6 3 10 2. + <_> + + <_> + 0 6 6 10 -1. + <_> + 3 6 3 10 2. + <_> + + <_> + 10 9 6 5 -1. + <_> + 10 9 3 5 2. + <_> + + <_> + 4 9 6 5 -1. + <_> + 7 9 3 5 2. + <_> + + <_> + 7 6 6 7 -1. + <_> + 9 6 2 7 3. + <_> + + <_> + 2 7 6 13 -1. + <_> + 4 7 2 13 3. + <_> + + <_> + 13 3 3 15 -1. + <_> + 14 3 1 15 3. + <_> + + <_> + 4 3 3 15 -1. + <_> + 5 3 1 15 3. + <_> + + <_> + 3 2 15 5 -1. + <_> + 8 2 5 5 3. + <_> + + <_> + 5 4 9 14 -1. + <_> + 5 11 9 7 2. + <_> + + <_> + 9 4 6 5 -1. + <_> + 9 4 3 5 2. + <_> + + <_> + 4 6 10 12 -1. + <_> + 4 6 5 6 2. + <_> + 9 12 5 6 2. + <_> + + <_> + 5 5 12 10 -1. + <_> + 11 5 6 5 2. + <_> + 5 10 6 5 2. + <_> + + <_> + 3 5 12 10 -1. + <_> + 3 5 6 5 2. + <_> + 9 10 6 5 2. + <_> + + <_> + 12 0 8 12 -1. + <_> + 16 0 4 6 2. + <_> + 12 6 4 6 2. + <_> + + <_> + 6 6 6 7 -1. + <_> + 8 6 2 7 3. + <_> + + <_> + 0 2 20 4 -1. + <_> + 10 2 10 2 2. + <_> + 0 4 10 2 2. + <_> + + <_> + 6 6 6 8 -1. + <_> + 8 6 2 8 3. + <_> + + <_> + 10 0 3 20 -1. + <_> + 11 0 1 20 3. + <_> + + <_> + 7 0 3 20 -1. + <_> + 8 0 1 20 3. + <_> + + <_> + 10 0 2 13 -1. + <_> + 10 0 1 13 2. + <_> + + <_> + 8 0 2 13 -1. + <_> + 9 0 1 13 2. + <_> + + <_> + 0 15 20 4 -1. + <_> + 10 15 10 2 2. + <_> + 0 17 10 2 2. + <_> + + <_> + 2 3 3 13 -1. + <_> + 3 3 1 13 3. + <_> + + <_> + 7 2 7 6 -1. + <_> + 7 4 7 2 3. + <_> + + <_> + 0 2 15 14 -1. + <_> + 0 9 15 7 2. + <_> + + <_> + 12 10 4 8 -1. + <_> + 12 14 4 4 2. + <_> + + <_> + 4 14 12 6 -1. + <_> + 4 16 12 2 3. + <_> + + <_> + 1 13 18 4 -1. + <_> + 10 13 9 2 2. + <_> + 1 15 9 2 2. + <_> + + <_> + 1 1 18 4 -1. + <_> + 7 1 6 4 3. + <_> + + <_> + 5 7 11 4 -1. + <_> + 5 9 11 2 2. + <_> + + <_> + 9 4 2 14 -1. + <_> + 9 11 2 7 2. + <_> + + <_> + 11 6 6 14 -1. + <_> + 14 6 3 7 2. + <_> + 11 13 3 7 2. + <_> + + <_> + 0 2 6 11 -1. + <_> + 3 2 3 11 2. + <_> + + <_> + 9 4 6 5 -1. + <_> + 9 4 3 5 2. + <_> + + <_> + 3 7 6 12 -1. + <_> + 3 7 3 6 2. + <_> + 6 13 3 6 2. + <_> + + <_> + 7 6 10 3 -1. + <_> + 7 6 5 3 2. + <_> + + <_> + 3 6 10 3 -1. + <_> + 8 6 5 3 2. + <_> + + <_> + 6 14 13 3 -1. + <_> + 6 15 13 1 3. + <_> + + <_> + 3 0 14 9 -1. + <_> + 3 3 14 3 3. + <_> + + <_> + 3 1 14 4 -1. + <_> + 10 1 7 2 2. + <_> + 3 3 7 2 2. + <_> + + <_> + 1 14 7 6 -1. + <_> + 1 16 7 2 3. + <_> + + <_> + 6 9 10 10 -1. + <_> + 11 9 5 5 2. + <_> + 6 14 5 5 2. + <_> + + <_> + 4 9 10 10 -1. + <_> + 4 9 5 5 2. + <_> + 9 14 5 5 2. + <_> + + <_> + 5 6 10 6 -1. + <_> + 5 9 10 3 2. + <_> + + <_> + 1 1 7 4 -1. + <_> + 1 3 7 2 2. + <_> + + <_> + 3 0 14 3 -1. + <_> + 3 1 14 1 3. + <_> + + <_> + 6 7 7 10 -1. + <_> + 6 12 7 5 2. + <_> + + <_> + 10 1 10 19 -1. + <_> + 10 1 5 19 2. + <_> + + <_> + 8 6 3 14 -1. + <_> + 9 6 1 14 3. + <_> + + <_> + 10 0 10 20 -1. + <_> + 10 0 5 20 2. + <_> + + <_> + 0 0 10 20 -1. + <_> + 5 0 5 20 2. + <_> + + <_> + 12 0 2 13 -1. + <_> + 12 0 1 13 2. + <_> + + <_> + 6 6 6 7 -1. + <_> + 8 6 2 7 3. + <_> + + <_> + 5 5 12 8 -1. + <_> + 5 9 12 4 2. + <_> + + <_> + 1 14 7 4 -1. + <_> + 1 16 7 2 2. + <_> + + <_> + 7 12 11 8 -1. + <_> + 7 16 11 4 2. + <_> + + <_> + 6 0 2 13 -1. + <_> + 7 0 1 13 2. + <_> + + <_> + 15 1 5 9 -1. + <_> + 15 4 5 3 3. + <_> + + <_> + 5 0 6 7 -1. + <_> + 7 0 2 7 3. + <_> + + <_> + 10 3 4 7 -1. + <_> + 10 3 2 7 2. + <_> + + <_> + 2 15 16 4 -1. + <_> + 2 15 8 2 2. + <_> + 10 17 8 2 2. + <_> + + <_> + 1 1 18 6 -1. + <_> + 10 1 9 3 2. + <_> + 1 4 9 3 2. + <_> + + <_> + 0 2 6 9 -1. + <_> + 0 5 6 3 3. + <_> + + <_> + 3 0 14 6 -1. + <_> + 3 3 14 3 2. + <_> + + <_> + 0 6 10 6 -1. + <_> + 0 6 5 3 2. + <_> + 5 9 5 3 2. + <_> + + <_> + 10 3 4 7 -1. + <_> + 10 3 2 7 2. + <_> + + <_> + 6 3 4 7 -1. + <_> + 8 3 2 7 2. + <_> + + <_> + 4 2 13 12 -1. + <_> + 4 6 13 4 3. + <_> + + <_> + 1 12 13 3 -1. + <_> + 1 13 13 1 3. + <_> + + <_> + 15 4 5 6 -1. + <_> + 15 7 5 3 2. + <_> + + <_> + 3 10 13 3 -1. + <_> + 3 11 13 1 3. + <_> + + <_> + 5 10 10 6 -1. + <_> + 10 10 5 3 2. + <_> + 5 13 5 3 2. + <_> + + <_> + 3 5 12 12 -1. + <_> + 3 5 6 6 2. + <_> + 9 11 6 6 2. + <_> + + <_> + 15 4 5 6 -1. + <_> + 15 7 5 3 2. + <_> + + <_> + 1 3 4 8 -1. + <_> + 1 7 4 4 2. + <_> + + <_> + 10 0 6 7 -1. + <_> + 12 0 2 7 3. + <_> + + <_> + 7 5 6 7 -1. + <_> + 9 5 2 7 3. + <_> + + <_> + 10 0 6 7 -1. + <_> + 12 0 2 7 3. + <_> + + <_> + 4 0 6 7 -1. + <_> + 6 0 2 7 3. + <_> + + <_> + 2 1 18 3 -1. + <_> + 2 2 18 1 3. + <_> + + <_> + 4 11 6 6 -1. + <_> + 7 11 3 6 2. + <_> + + <_> + 4 6 13 3 -1. + <_> + 4 7 13 1 3. + <_> + + <_> + 1 12 18 4 -1. + <_> + 1 14 18 2 2. + <_> + + <_> + 12 10 5 6 -1. + <_> + 12 13 5 3 2. + <_> + + <_> + 0 1 5 14 -1. + <_> + 0 8 5 7 2. + <_> + + <_> + 2 12 18 6 -1. + <_> + 11 12 9 3 2. + <_> + 2 15 9 3 2. + <_> + + <_> + 5 2 6 13 -1. + <_> + 7 2 2 13 3. + <_> + + <_> + 13 8 7 6 -1. + <_> + 13 10 7 2 3. + <_> + + <_> + 2 5 16 10 -1. + <_> + 2 5 8 5 2. + <_> + 10 10 8 5 2. + <_> + + <_> + 14 4 6 7 -1. + <_> + 16 4 2 7 3. + <_> + + <_> + 4 1 6 7 -1. + <_> + 6 1 2 7 3. + <_> + + <_> + 13 10 7 4 -1. + <_> + 13 12 7 2 2. + <_> + + <_> + 0 10 7 4 -1. + <_> + 0 12 7 2 2. + <_> + + <_> + 6 14 14 3 -1. + <_> + 6 15 14 1 3. + <_> + + <_> + 1 14 13 3 -1. + <_> + 1 15 13 1 3. + <_> + + <_> + 2 14 17 6 -1. + <_> + 2 16 17 2 3. + <_> + + <_> + 7 7 5 12 -1. + <_> + 7 11 5 4 3. + <_> + + <_> + 8 6 4 7 -1. + <_> + 8 6 2 7 2. + <_> + + <_> + 7 10 6 10 -1. + <_> + 7 10 3 5 2. + <_> + 10 15 3 5 2. + <_> + + <_> + 15 2 5 9 -1. + <_> + 15 5 5 3 3. + <_> + + <_> + 0 13 15 3 -1. + <_> + 0 14 15 1 3. + <_> + + <_> + 13 12 5 8 -1. + <_> + 13 16 5 4 2. + <_> + + <_> + 0 12 18 6 -1. + <_> + 0 12 9 3 2. + <_> + 9 15 9 3 2. + <_> + + <_> + 12 10 6 10 -1. + <_> + 15 10 3 5 2. + <_> + 12 15 3 5 2. + <_> + + <_> + 2 10 6 10 -1. + <_> + 2 10 3 5 2. + <_> + 5 15 3 5 2. + <_> + + <_> + 4 7 15 3 -1. + <_> + 9 7 5 3 3. + <_> + + <_> + 0 12 7 6 -1. + <_> + 0 14 7 2 3. + <_> + + <_> + 5 7 15 3 -1. + <_> + 10 7 5 3 3. + <_> + + <_> + 2 5 16 3 -1. + <_> + 2 6 16 1 3. + <_> + + <_> + 8 8 12 12 -1. + <_> + 8 8 6 12 2. + <_> + + <_> + 6 3 7 6 -1. + <_> + 6 6 7 3 2. + <_> + + <_> + 9 5 6 5 -1. + <_> + 9 5 3 5 2. + <_> + + <_> + 5 4 6 5 -1. + <_> + 8 4 3 5 2. + <_> + + <_> + 9 8 5 12 -1. + <_> + 9 12 5 4 3. + <_> + + <_> + 6 5 8 8 -1. + <_> + 6 9 8 4 2. + <_> + + <_> + 11 0 6 12 -1. + <_> + 14 0 3 6 2. + <_> + 11 6 3 6 2. + <_> + + <_> + 3 0 6 12 -1. + <_> + 3 0 3 6 2. + <_> + 6 6 3 6 2. + <_> + + <_> + 10 10 4 8 -1. + <_> + 10 14 4 4 2. + <_> + + <_> + 5 9 10 8 -1. + <_> + 5 9 5 4 2. + <_> + 10 13 5 4 2. + <_> + + <_> + 4 11 13 3 -1. + <_> + 4 12 13 1 3. + <_> + + <_> + 0 0 12 20 -1. + <_> + 6 0 6 20 2. + <_> + + <_> + 14 0 4 7 -1. + <_> + 14 0 2 7 2. + <_> + + <_> + 2 0 4 7 -1. + <_> + 4 0 2 7 2. + <_> + + <_> + 6 5 14 6 -1. + <_> + 13 5 7 3 2. + <_> + 6 8 7 3 2. + <_> + + <_> + 0 6 16 6 -1. + <_> + 0 6 8 3 2. + <_> + 8 9 8 3 2. + <_> + + <_> + 12 6 5 9 -1. + <_> + 12 9 5 3 3. + <_> + + <_> + 1 6 9 8 -1. + <_> + 1 10 9 4 2. + <_> + + <_> + 13 10 7 6 -1. + <_> + 13 12 7 2 3. + <_> + + <_> + 0 10 7 6 -1. + <_> + 0 12 7 2 3. + <_> + + <_> + 9 5 2 14 -1. + <_> + 9 12 2 7 2. + <_> + + <_> + 6 15 7 4 -1. + <_> + 6 17 7 2 2. + <_> + + <_> + 1 2 19 2 -1. + <_> + 1 3 19 1 2. + <_> + + <_> + 0 0 4 13 -1. + <_> + 2 0 2 13 2. + <_> + + <_> + 14 1 6 9 -1. + <_> + 16 1 2 9 3. + <_> + + <_> + 0 1 6 9 -1. + <_> + 2 1 2 9 3. + <_> + + <_> + 0 11 20 9 -1. + <_> + 0 14 20 3 3. + <_> + + <_> + 0 11 8 4 -1. + <_> + 0 13 8 2 2. + <_> + + <_> + 9 3 6 10 -1. + <_> + 11 3 2 10 3. + <_> + + <_> + 4 6 10 3 -1. + <_> + 9 6 5 3 2. + <_> + + <_> + 10 9 6 5 -1. + <_> + 10 9 3 5 2. + <_> + + <_> + 5 9 9 5 -1. + <_> + 8 9 3 5 3. + <_> + + <_> + 8 5 4 7 -1. + <_> + 8 5 2 7 2. + <_> + + <_> + 5 3 6 9 -1. + <_> + 7 3 2 9 3. + <_> + + <_> + 1 0 18 8 -1. + <_> + 10 0 9 4 2. + <_> + 1 4 9 4 2. + <_> + + <_> + 3 18 14 2 -1. + <_> + 3 19 14 1 2. + <_> + + <_> + 0 0 20 3 -1. + <_> + 0 1 20 1 3. + <_> + + <_> + 0 4 6 16 -1. + <_> + 0 4 3 8 2. + <_> + 3 12 3 8 2. + <_> + + <_> + 14 6 6 13 -1. + <_> + 14 6 3 13 2. + <_> + + <_> + 6 7 3 12 -1. + <_> + 6 13 3 6 2. + <_> + + <_> + 11 11 5 6 -1. + <_> + 11 14 5 3 2. + <_> + + <_> + 1 8 15 4 -1. + <_> + 6 8 5 4 3. + <_> + + <_> + 8 6 6 7 -1. + <_> + 10 6 2 7 3. + <_> + + <_> + 6 4 6 7 -1. + <_> + 8 4 2 7 3. + <_> + + <_> + 9 0 6 10 -1. + <_> + 12 0 3 5 2. + <_> + 9 5 3 5 2. + <_> + + <_> + 0 0 10 20 -1. + <_> + 5 0 5 20 2. + <_> + + <_> + 15 10 4 10 -1. + <_> + 15 10 2 10 2. + <_> + + <_> + 1 10 4 10 -1. + <_> + 3 10 2 10 2. + <_> + + <_> + 5 0 10 16 -1. + <_> + 10 0 5 8 2. + <_> + 5 8 5 8 2. + <_> + + <_> + 3 6 13 3 -1. + <_> + 3 7 13 1 3. + <_> + + <_> + 8 6 5 9 -1. + <_> + 8 9 5 3 3. + <_> + + <_> + 4 6 6 12 -1. + <_> + 4 10 6 4 3. + <_> + + <_> + 8 13 9 6 -1. + <_> + 8 16 9 3 2. + <_> + + <_> + 0 5 12 6 -1. + <_> + 0 7 12 2 3. + <_> + + <_> + 4 8 13 3 -1. + <_> + 4 9 13 1 3. + <_> + + <_> + 6 6 4 12 -1. + <_> + 6 12 4 6 2. + <_> + + <_> + 4 15 13 3 -1. + <_> + 4 16 13 1 3. + <_> + + <_> + 2 14 13 3 -1. + <_> + 2 15 13 1 3. + <_> + + <_> + 11 1 4 14 -1. + <_> + 11 1 2 14 2. + <_> + + <_> + 3 6 12 4 -1. + <_> + 7 6 4 4 3. + <_> + + <_> + 8 0 4 7 -1. + <_> + 8 0 2 7 2. + <_> + + <_> + 0 0 4 8 -1. + <_> + 2 0 2 8 2. + <_> + + <_> + 2 11 16 9 -1. + <_> + 2 14 16 3 3. + <_> + + <_> + 0 4 6 7 -1. + <_> + 2 4 2 7 3. + <_> + + <_> + 6 13 13 3 -1. + <_> + 6 14 13 1 3. + <_> + + <_> + 0 10 16 4 -1. + <_> + 0 10 8 2 2. + <_> + 8 12 8 2 2. + <_> + + <_> + 3 1 14 2 -1. + <_> + 3 2 14 1 2. + <_> + + <_> + 4 10 5 9 -1. + <_> + 4 13 5 3 3. + <_> + + <_> + 2 14 16 4 -1. + <_> + 10 14 8 2 2. + <_> + 2 16 8 2 2. + <_> + + <_> + 0 0 19 8 -1. + <_> + 0 4 19 4 2. + <_> + + <_> + 10 10 6 5 -1. + <_> + 10 10 3 5 2. + <_> + + <_> + 1 1 18 15 -1. + <_> + 7 1 6 15 3. + <_> + + <_> + 10 10 6 5 -1. + <_> + 10 10 3 5 2. + <_> + + <_> + 4 7 4 8 -1. + <_> + 6 7 2 8 2. + <_> + + <_> + 17 3 3 14 -1. + <_> + 18 3 1 14 3. + <_> + + <_> + 4 6 12 12 -1. + <_> + 4 6 6 6 2. + <_> + 10 12 6 6 2. + <_> + + <_> + 12 6 8 14 -1. + <_> + 16 6 4 7 2. + <_> + 12 13 4 7 2. + <_> + + <_> + 0 6 8 14 -1. + <_> + 0 6 4 7 2. + <_> + 4 13 4 7 2. + <_> + + <_> + 9 0 6 7 -1. + <_> + 11 0 2 7 3. + <_> + + <_> + 2 4 6 16 -1. + <_> + 2 4 3 8 2. + <_> + 5 12 3 8 2. + <_> + + <_> + 14 11 5 9 -1. + <_> + 14 14 5 3 3. + <_> + + <_> + 3 3 14 3 -1. + <_> + 3 4 14 1 3. + <_> + + <_> + 8 0 6 7 -1. + <_> + 10 0 2 7 3. + <_> + + <_> + 5 1 6 16 -1. + <_> + 5 1 3 8 2. + <_> + 8 9 3 8 2. + <_> + + <_> + 7 7 6 10 -1. + <_> + 9 7 2 10 3. + <_> + + <_> + 5 9 4 11 -1. + <_> + 7 9 2 11 2. + <_> + + <_> + 10 9 6 6 -1. + <_> + 10 9 3 6 2. + <_> + + <_> + 0 3 3 14 -1. + <_> + 1 3 1 14 3. + <_> + + <_> + 10 9 6 6 -1. + <_> + 10 9 3 6 2. + <_> + + <_> + 5 10 4 7 -1. + <_> + 7 10 2 7 2. + <_> + + <_> + 18 7 2 13 -1. + <_> + 18 7 1 13 2. + <_> + + <_> + 2 5 16 8 -1. + <_> + 2 9 16 4 2. + <_> + + <_> + 6 2 12 10 -1. + <_> + 6 7 12 5 2. + <_> + + <_> + 0 7 7 6 -1. + <_> + 0 9 7 2 3. + <_> + + <_> + 18 7 2 13 -1. + <_> + 18 7 1 13 2. + <_> + + <_> + 0 7 2 13 -1. + <_> + 1 7 1 13 2. + <_> + + <_> + 12 3 8 12 -1. + <_> + 12 3 4 12 2. + <_> + + <_> + 0 3 8 12 -1. + <_> + 4 3 4 12 2. + <_> + + <_> + 15 3 5 6 -1. + <_> + 15 6 5 3 2. + <_> + + <_> + 1 0 18 4 -1. + <_> + 7 0 6 4 3. + <_> + + <_> + 2 11 18 4 -1. + <_> + 11 11 9 2 2. + <_> + 2 13 9 2 2. + <_> + + <_> + 0 11 18 4 -1. + <_> + 0 11 9 2 2. + <_> + 9 13 9 2 2. + <_> + + <_> + 14 0 6 10 -1. + <_> + 17 0 3 5 2. + <_> + 14 5 3 5 2. + <_> + + <_> + 4 1 9 12 -1. + <_> + 4 7 9 6 2. + <_> + + <_> + 15 3 5 6 -1. + <_> + 15 6 5 3 2. + <_> + + <_> + 0 3 5 6 -1. + <_> + 0 6 5 3 2. + <_> + + <_> + 6 6 8 4 -1. + <_> + 6 8 8 2 2. + <_> + + <_> + 0 9 7 6 -1. + <_> + 0 11 7 2 3. + <_> + + <_> + 6 13 13 3 -1. + <_> + 6 14 13 1 3. + <_> + + <_> + 5 2 4 13 -1. + <_> + 7 2 2 13 2. + <_> + + <_> + 4 14 13 3 -1. + <_> + 4 15 13 1 3. + <_> + + <_> + 0 7 20 2 -1. + <_> + 0 8 20 1 2. + <_> + + <_> + 11 0 9 5 -1. + <_> + 14 0 3 5 3. + <_> + + <_> + 0 3 10 6 -1. + <_> + 0 3 5 3 2. + <_> + 5 6 5 3 2. + <_> + + <_> + 6 4 9 5 -1. + <_> + 9 4 3 5 3. + <_> + + <_> + 3 12 8 8 -1. + <_> + 3 12 4 4 2. + <_> + 7 16 4 4 2. + <_> + + <_> + 4 7 15 3 -1. + <_> + 9 7 5 3 3. + <_> + + <_> + 0 4 6 9 -1. + <_> + 3 4 3 9 2. + <_> + + <_> + 4 7 12 4 -1. + <_> + 4 9 12 2 2. + <_> + + <_> + 7 6 4 12 -1. + <_> + 7 12 4 6 2. + <_> + + <_> + 6 1 8 15 -1. + <_> + 6 6 8 5 3. + <_> + + <_> + 1 7 15 3 -1. + <_> + 6 7 5 3 3. + <_> + + <_> + 4 9 12 5 -1. + <_> + 8 9 4 5 3. + <_> + + <_> + 6 6 8 8 -1. + <_> + 6 10 8 4 2. + <_> + + <_> + 12 12 8 6 -1. + <_> + 12 14 8 2 3. + <_> + + <_> + 2 0 14 2 -1. + <_> + 2 1 14 1 2. + <_> + + <_> + 7 14 13 3 -1. + <_> + 7 15 13 1 3. + <_> + + <_> + 1 3 16 2 -1. + <_> + 1 4 16 1 2. + <_> + + <_> + 15 1 5 9 -1. + <_> + 15 4 5 3 3. + <_> + + <_> + 0 12 8 6 -1. + <_> + 0 14 8 2 3. + <_> + + <_> + 5 11 13 3 -1. + <_> + 5 12 13 1 3. + <_> + + <_> + 0 0 12 20 -1. + <_> + 6 0 6 20 2. + <_> + + <_> + 2 8 17 3 -1. + <_> + 2 9 17 1 3. + <_> + + <_> + 1 1 18 6 -1. + <_> + 1 1 9 3 2. + <_> + 10 4 9 3 2. + <_> + + <_> + 1 1 19 6 -1. + <_> + 1 3 19 2 3. + <_> + + <_> + 4 6 12 6 -1. + <_> + 4 6 6 3 2. + <_> + 10 9 6 3 2. + <_> + + <_> + 7 6 6 7 -1. + <_> + 9 6 2 7 3. + <_> + + <_> + 3 18 13 2 -1. + <_> + 3 19 13 1 2. + <_> + + <_> + 7 0 6 7 -1. + <_> + 9 0 2 7 3. + <_> + + <_> + 8 5 4 7 -1. + <_> + 10 5 2 7 2. + <_> + + <_> + 10 12 8 6 -1. + <_> + 10 14 8 2 3. + <_> + + <_> + 0 0 18 4 -1. + <_> + 0 0 9 2 2. + <_> + 9 2 9 2 2. + <_> + + <_> + 4 6 15 5 -1. + <_> + 9 6 5 5 3. + <_> + + <_> + 0 7 15 4 -1. + <_> + 5 7 5 4 3. + <_> + + <_> + 12 4 4 10 -1. + <_> + 12 9 4 5 2. + <_> + + <_> + 0 6 18 12 -1. + <_> + 0 6 9 6 2. + <_> + 9 12 9 6 2. + <_> + + <_> + 16 5 2 14 -1. + <_> + 16 12 2 7 2. + <_> + + <_> + 2 9 5 6 -1. + <_> + 2 12 5 3 2. + <_> + + <_> + 12 0 3 19 -1. + <_> + 13 0 1 19 3. + <_> + + <_> + 0 10 9 6 -1. + <_> + 0 12 9 2 3. + <_> + + <_> + 11 12 7 6 -1. + <_> + 11 14 7 2 3. + <_> + + <_> + 5 0 4 7 -1. + <_> + 7 0 2 7 2. + <_> + + <_> + 12 0 3 19 -1. + <_> + 13 0 1 19 3. + <_> + + <_> + 0 15 14 4 -1. + <_> + 0 15 7 2 2. + <_> + 7 17 7 2 2. + <_> + + <_> + 4 5 14 6 -1. + <_> + 4 7 14 2 3. + <_> + + <_> + 3 1 6 7 -1. + <_> + 5 1 2 7 3. + <_> + + <_> + 7 1 13 3 -1. + <_> + 7 2 13 1 3. + <_> + + <_> + 0 1 6 9 -1. + <_> + 0 4 6 3 3. + <_> + + <_> + 11 12 7 6 -1. + <_> + 11 14 7 2 3. + <_> + + <_> + 2 12 7 6 -1. + <_> + 2 14 7 2 3. + <_> + + <_> + 7 14 13 3 -1. + <_> + 7 15 13 1 3. + <_> + + <_> + 0 14 13 3 -1. + <_> + 0 15 13 1 3. + <_> + + <_> + 8 9 6 5 -1. + <_> + 8 9 3 5 2. + <_> + + <_> + 6 9 6 5 -1. + <_> + 9 9 3 5 2. + <_> + + <_> + 12 11 7 6 -1. + <_> + 12 13 7 2 3. + <_> + + <_> + 5 8 10 10 -1. + <_> + 5 8 5 5 2. + <_> + 10 13 5 5 2. + <_> + + <_> + 1 5 18 10 -1. + <_> + 10 5 9 5 2. + <_> + 1 10 9 5 2. + <_> + + <_> + 4 0 6 9 -1. + <_> + 6 0 2 9 3. + <_> + + <_> + 1 0 18 6 -1. + <_> + 7 0 6 6 3. + <_> + + <_> + 4 3 5 14 -1. + <_> + 4 10 5 7 2. + <_> + + <_> + 8 0 6 7 -1. + <_> + 10 0 2 7 3. + <_> + + <_> + 0 0 8 10 -1. + <_> + 0 5 8 5 2. + <_> + + <_> + 7 2 6 6 -1. + <_> + 7 5 6 3 2. + <_> + + <_> + 0 0 19 3 -1. + <_> + 0 1 19 1 3. + <_> + + <_> + 8 0 8 6 -1. + <_> + 8 2 8 2 3. + <_> + + <_> + 7 5 6 11 -1. + <_> + 9 5 2 11 3. + <_> + + <_> + 4 3 12 10 -1. + <_> + 8 3 4 10 3. + <_> + + <_> + 0 4 18 4 -1. + <_> + 0 6 18 2 2. + <_> + + <_> + 12 0 2 15 -1. + <_> + 12 0 1 15 2. + <_> + + <_> + 0 13 7 6 -1. + <_> + 0 15 7 2 3. + <_> + + <_> + 12 11 7 6 -1. + <_> + 12 13 7 2 3. + <_> + + <_> + 2 13 13 3 -1. + <_> + 2 14 13 1 3. + <_> + + <_> + 10 4 4 14 -1. + <_> + 12 4 2 7 2. + <_> + 10 11 2 7 2. + <_> + + <_> + 2 10 7 6 -1. + <_> + 2 12 7 2 3. + <_> + + <_> + 10 4 4 14 -1. + <_> + 12 4 2 7 2. + <_> + 10 11 2 7 2. + <_> + + <_> + 6 4 4 14 -1. + <_> + 6 4 2 7 2. + <_> + 8 11 2 7 2. + <_> + + <_> + 14 3 6 7 -1. + <_> + 16 3 2 7 3. + <_> + + <_> + 6 6 8 4 -1. + <_> + 6 8 8 2 2. + <_> + + <_> + 12 0 2 15 -1. + <_> + 12 0 1 15 2. + <_> + + <_> + 6 0 2 15 -1. + <_> + 7 0 1 15 2. + <_> + + <_> + 12 1 3 17 -1. + <_> + 13 1 1 17 3. + <_> + + <_> + 5 1 3 17 -1. + <_> + 6 1 1 17 3. + <_> + + <_> + 9 4 3 13 -1. + <_> + 10 4 1 13 3. + <_> + + <_> + 9 3 2 14 -1. + <_> + 10 3 1 14 2. + <_> + + <_> + 8 0 6 7 -1. + <_> + 10 0 2 7 3. + <_> + + <_> + 8 5 4 7 -1. + <_> + 10 5 2 7 2. + <_> + + <_> + 8 0 6 7 -1. + <_> + 10 0 2 7 3. + <_> + + <_> + 0 5 20 4 -1. + <_> + 10 5 10 4 2. + <_> + + <_> + 13 2 7 6 -1. + <_> + 13 4 7 2 3. + <_> + + <_> + 0 2 19 2 -1. + <_> + 0 3 19 1 2. + <_> + + <_> + 10 9 10 11 -1. + <_> + 10 9 5 11 2. + <_> + + <_> + 1 12 13 3 -1. + <_> + 1 13 13 1 3. + <_> + + <_> + 3 0 15 9 -1. + <_> + 8 0 5 9 3. + <_> + + <_> + 0 1 5 9 -1. + <_> + 0 4 5 3 3. + <_> + + <_> + 3 4 14 2 -1. + <_> + 3 5 14 1 2. + <_> + + <_> + 0 11 6 7 -1. + <_> + 2 11 2 7 3. + <_> + + <_> + 10 9 10 11 -1. + <_> + 10 9 5 11 2. + <_> + + <_> + 3 13 6 7 -1. + <_> + 5 13 2 7 3. + <_> + + <_> + 3 8 15 3 -1. + <_> + 8 8 5 3 3. + <_> + + <_> + 0 1 8 8 -1. + <_> + 0 1 4 4 2. + <_> + 4 5 4 4 2. + <_> + + <_> + 9 8 10 4 -1. + <_> + 9 8 5 4 2. + <_> + + <_> + 0 0 18 6 -1. + <_> + 6 0 6 6 3. + <_> + + <_> + 4 3 12 9 -1. + <_> + 4 6 12 3 3. + <_> + + <_> + 1 1 18 4 -1. + <_> + 7 1 6 4 3. + <_> + + <_> + 8 6 4 10 -1. + <_> + 8 11 4 5 2. + <_> + + <_> + 7 5 6 7 -1. + <_> + 9 5 2 7 3. + <_> + + <_> + 0 3 17 2 -1. + <_> + 0 4 17 1 2. + <_> + + <_> + 12 6 5 6 -1. + <_> + 12 9 5 3 2. + <_> + + <_> + 5 6 8 8 -1. + <_> + 5 6 4 4 2. + <_> + 9 10 4 4 2. + <_> + + <_> + 9 10 7 6 -1. + <_> + 9 12 7 2 3. + <_> + + <_> + 2 14 10 6 -1. + <_> + 2 14 5 3 2. + <_> + 7 17 5 3 2. + <_> + + <_> + 13 6 5 9 -1. + <_> + 13 9 5 3 3. + <_> + + <_> + 2 6 5 9 -1. + <_> + 2 9 5 3 3. + <_> + + <_> + 14 2 6 5 -1. + <_> + 14 2 3 5 2. + <_> + + <_> + 5 6 6 11 -1. + <_> + 8 6 3 11 2. + <_> + + <_> + 14 2 6 5 -1. + <_> + 14 2 3 5 2. + <_> + + <_> + 0 3 10 6 -1. + <_> + 0 3 5 3 2. + <_> + 5 6 5 3 2. + <_> + + <_> + 6 12 13 2 -1. + <_> + 6 13 13 1 2. + <_> + + <_> + 5 11 10 6 -1. + <_> + 5 14 10 3 2. + <_> + + <_> + 12 11 8 8 -1. + <_> + 12 15 8 4 2. + <_> + + <_> + 4 0 12 7 -1. + <_> + 8 0 4 7 3. + <_> + + <_> + 5 15 13 2 -1. + <_> + 5 16 13 1 2. + <_> + + <_> + 0 12 20 6 -1. + <_> + 0 12 10 3 2. + <_> + 10 15 10 3 2. + <_> + + <_> + 14 0 6 10 -1. + <_> + 17 0 3 5 2. + <_> + 14 5 3 5 2. + <_> + + <_> + 4 0 12 6 -1. + <_> + 4 2 12 2 3. + <_> + + <_> + 14 0 6 10 -1. + <_> + 17 0 3 5 2. + <_> + 14 5 3 5 2. + <_> + + <_> + 0 0 6 10 -1. + <_> + 0 0 3 5 2. + <_> + 3 5 3 5 2. + <_> + + <_> + 5 6 10 12 -1. + <_> + 10 6 5 6 2. + <_> + 5 12 5 6 2. + <_> + + <_> + 1 15 15 4 -1. + <_> + 1 17 15 2 2. + <_> + + <_> + 10 5 9 6 -1. + <_> + 10 7 9 2 3. + <_> + + <_> + 4 2 6 7 -1. + <_> + 6 2 2 7 3. + <_> + + <_> + 10 5 10 6 -1. + <_> + 10 7 10 2 3. + <_> + + <_> + 0 5 10 6 -1. + <_> + 0 7 10 2 3. + <_> + + <_> + 8 9 12 4 -1. + <_> + 12 9 4 4 3. + <_> + + <_> + 0 0 4 8 -1. + <_> + 2 0 2 8 2. + <_> + + <_> + 0 1 20 3 -1. + <_> + 0 2 20 1 3. + <_> + + <_> + 0 0 4 17 -1. + <_> + 2 0 2 17 2. + <_> + + <_> + 5 6 12 3 -1. + <_> + 5 6 6 3 2. + <_> + + <_> + 6 7 3 12 -1. + <_> + 6 13 3 6 2. + <_> + + <_> + 14 2 6 5 -1. + <_> + 14 2 3 5 2. + <_> + + <_> + 0 2 6 5 -1. + <_> + 3 2 3 5 2. + <_> + + <_> + 1 3 18 16 -1. + <_> + 7 3 6 16 3. + <_> + + <_> + 4 4 11 10 -1. + <_> + 4 9 11 5 2. + <_> + + <_> + 6 1 13 3 -1. + <_> + 6 2 13 1 3. + <_> + + <_> + 3 4 8 10 -1. + <_> + 3 4 4 5 2. + <_> + 7 9 4 5 2. + <_> + + <_> + 6 7 14 4 -1. + <_> + 13 7 7 2 2. + <_> + 6 9 7 2 2. + <_> + + <_> + 1 1 8 6 -1. + <_> + 1 3 8 2 3. + <_> + + <_> + 15 3 5 9 -1. + <_> + 15 6 5 3 3. + <_> + + <_> + 0 3 5 9 -1. + <_> + 0 6 5 3 3. + <_> + + <_> + 14 6 4 14 -1. + <_> + 16 6 2 7 2. + <_> + 14 13 2 7 2. + <_> + + <_> + 0 1 6 12 -1. + <_> + 2 1 2 12 3. + <_> + + <_> + 10 9 6 5 -1. + <_> + 10 9 3 5 2. + <_> + + <_> + 4 9 6 5 -1. + <_> + 7 9 3 5 2. + <_> + + <_> + 8 5 6 8 -1. + <_> + 10 5 2 8 3. + <_> + + <_> + 0 13 18 7 -1. + <_> + 6 13 6 7 3. + <_> + + <_> + 10 0 10 20 -1. + <_> + 10 0 5 20 2. + <_> + + <_> + 0 9 10 11 -1. + <_> + 5 9 5 11 2. + <_> + + <_> + 7 0 6 7 -1. + <_> + 9 0 2 7 3. + <_> + + <_> + 5 8 10 12 -1. + <_> + 5 14 10 6 2. + <_> + + <_> + 12 13 7 6 -1. + <_> + 12 15 7 2 3. + <_> + + <_> + 1 10 6 7 -1. + <_> + 3 10 2 7 3. + <_> + + <_> + 15 2 5 9 -1. + <_> + 15 5 5 3 3. + <_> + + <_> + 0 7 20 3 -1. + <_> + 0 8 20 1 3. + <_> + + <_> + 10 3 4 7 -1. + <_> + 10 3 2 7 2. + <_> + + <_> + 0 6 6 14 -1. + <_> + 0 6 3 7 2. + <_> + 3 13 3 7 2. + <_> + + <_> + 12 13 7 6 -1. + <_> + 12 15 7 2 3. + <_> + + <_> + 2 1 11 12 -1. + <_> + 2 7 11 6 2. + <_> + + <_> + 5 0 10 8 -1. + <_> + 5 4 10 4 2. + <_> + + <_> + 1 5 8 8 -1. + <_> + 1 5 4 4 2. + <_> + 5 9 4 4 2. + <_> + + <_> + 15 2 5 9 -1. + <_> + 15 5 5 3 3. + <_> + + <_> + 0 2 6 9 -1. + <_> + 0 5 6 3 3. + <_> + + <_> + 16 4 4 16 -1. + <_> + 18 4 2 8 2. + <_> + 16 12 2 8 2. + <_> + + <_> + 0 13 7 6 -1. + <_> + 0 15 7 2 3. + <_> + + <_> + 6 15 14 4 -1. + <_> + 13 15 7 2 2. + <_> + 6 17 7 2 2. + <_> + + <_> + 6 3 4 7 -1. + <_> + 8 3 2 7 2. + <_> + + <_> + 10 11 5 9 -1. + <_> + 10 14 5 3 3. + <_> + + <_> + 7 6 6 7 -1. + <_> + 9 6 2 7 3. + <_> + + <_> + 10 0 3 14 -1. + <_> + 11 0 1 14 3. + <_> + + <_> + 6 13 6 7 -1. + <_> + 8 13 2 7 3. + <_> + + <_> + 10 1 3 13 -1. + <_> + 11 1 1 13 3. + <_> + + <_> + 7 1 3 13 -1. + <_> + 8 1 1 13 3. + <_> + + <_> + 5 14 10 6 -1. + <_> + 10 14 5 3 2. + <_> + 5 17 5 3 2. + <_> + + <_> + 6 8 8 4 -1. + <_> + 6 10 8 2 2. + <_> + + <_> + 11 14 8 6 -1. + <_> + 11 16 8 2 3. + <_> + + <_> + 1 14 8 6 -1. + <_> + 1 16 8 2 3. + <_> + + <_> + 4 14 13 3 -1. + <_> + 4 15 13 1 3. + <_> + + <_> + 1 14 13 3 -1. + <_> + 1 15 13 1 3. + <_> + + <_> + 7 9 13 3 -1. + <_> + 7 10 13 1 3. + <_> + + <_> + 2 2 12 6 -1. + <_> + 2 2 6 3 2. + <_> + 8 5 6 3 2. + <_> + + <_> + 16 4 4 16 -1. + <_> + 18 4 2 8 2. + <_> + 16 12 2 8 2. + <_> + + <_> + 0 8 5 12 -1. + <_> + 0 12 5 4 3. + <_> + + <_> + 10 10 9 6 -1. + <_> + 10 12 9 2 3. + <_> + + <_> + 5 2 6 10 -1. + <_> + 5 2 3 5 2. + <_> + 8 7 3 5 2. + <_> + + <_> + 9 0 6 7 -1. + <_> + 11 0 2 7 3. + <_> + + <_> + 6 5 6 8 -1. + <_> + 8 5 2 8 3. + <_> + + <_> + 11 0 4 14 -1. + <_> + 11 0 2 14 2. + <_> + + <_> + 5 0 4 14 -1. + <_> + 7 0 2 14 2. + <_> + + <_> + 7 14 13 3 -1. + <_> + 7 15 13 1 3. + <_> + + <_> + 0 14 13 3 -1. + <_> + 0 15 13 1 3. + <_> + + <_> + 8 3 12 17 -1. + <_> + 8 3 6 17 2. + <_> + + <_> + 4 6 10 4 -1. + <_> + 9 6 5 4 2. + <_> + + <_> + 16 4 4 16 -1. + <_> + 18 4 2 8 2. + <_> + 16 12 2 8 2. + <_> + + <_> + 0 6 12 14 -1. + <_> + 6 6 6 14 2. + <_> + + <_> + 12 9 8 10 -1. + <_> + 12 9 4 10 2. + <_> + + <_> + 0 9 8 10 -1. + <_> + 4 9 4 10 2. + <_> + + <_> + 13 2 6 18 -1. + <_> + 13 2 3 18 2. + <_> + + <_> + 1 2 6 18 -1. + <_> + 4 2 3 18 2. + <_> + + <_> + 4 8 13 2 -1. + <_> + 4 9 13 1 2. + <_> + + <_> + 0 6 18 9 -1. + <_> + 0 9 18 3 3. + <_> + + <_> + 5 4 15 3 -1. + <_> + 5 5 15 1 3. + <_> + + <_> + 0 3 19 15 -1. + <_> + 0 8 19 5 3. + <_> + + <_> + 10 10 9 6 -1. + <_> + 10 12 9 2 3. + <_> + + <_> + 1 10 9 6 -1. + <_> + 1 12 9 2 3. + <_> + + <_> + 5 12 13 3 -1. + <_> + 5 13 13 1 3. + <_> + + <_> + 0 4 4 16 -1. + <_> + 0 4 2 8 2. + <_> + 2 12 2 8 2. + <_> + + <_> + 10 10 5 6 -1. + <_> + 10 13 5 3 2. + <_> + + <_> + 0 10 20 8 -1. + <_> + 0 14 20 4 2. + <_> + + <_> + 14 0 6 7 -1. + <_> + 16 0 2 7 3. + <_> + + <_> + 0 0 6 7 -1. + <_> + 2 0 2 7 3. + <_> + + <_> + 13 0 3 19 -1. + <_> + 14 0 1 19 3. + <_> + + <_> + 0 2 8 4 -1. + <_> + 4 2 4 4 2. + <_> + + <_> + 12 12 7 6 -1. + <_> + 12 14 7 2 3. + <_> + + <_> + 6 11 7 6 -1. + <_> + 6 13 7 2 3. + <_> + + <_> + 10 10 5 6 -1. + <_> + 10 13 5 3 2. + <_> + + <_> + 3 10 6 9 -1. + <_> + 3 13 6 3 3. + <_> + + <_> + 13 5 4 14 -1. + <_> + 15 5 2 7 2. + <_> + 13 12 2 7 2. + <_> + + <_> + 3 5 10 9 -1. + <_> + 3 8 10 3 3. + <_> + + <_> + 2 15 18 4 -1. + <_> + 2 17 18 2 2. + <_> + + <_> + 0 4 8 6 -1. + <_> + 0 6 8 2 3. + <_> + + <_> + 4 5 13 2 -1. + <_> + 4 6 13 1 2. + <_> + + <_> + 1 12 7 6 -1. + <_> + 1 14 7 2 3. + <_> + + <_> + 0 12 20 6 -1. + <_> + 0 14 20 2 3. + <_> + + <_> + 0 10 6 8 -1. + <_> + 3 10 3 8 2. + <_> + + <_> + 4 8 15 3 -1. + <_> + 9 8 5 3 3. + <_> + + <_> + 1 9 9 6 -1. + <_> + 4 9 3 6 3. + <_> + + <_> + 2 0 16 14 -1. + <_> + 10 0 8 7 2. + <_> + 2 7 8 7 2. + <_> + + <_> + 3 0 14 18 -1. + <_> + 3 9 14 9 2. + <_> + + <_> + 9 7 6 10 -1. + <_> + 12 7 3 5 2. + <_> + 9 12 3 5 2. + <_> + + <_> + 3 4 4 16 -1. + <_> + 3 4 2 8 2. + <_> + 5 12 2 8 2. + <_> + + <_> + 12 14 8 6 -1. + <_> + 12 16 8 2 3. + <_> + + <_> + 0 14 8 6 -1. + <_> + 0 16 8 2 3. + <_> + + <_> + 5 4 10 4 -1. + <_> + 5 6 10 2 2. + <_> + + <_> + 1 0 18 10 -1. + <_> + 7 0 6 10 3. + <_> + + <_> + 6 15 7 4 -1. + <_> + 6 17 7 2 2. + <_> + + <_> + 13 4 3 15 -1. + <_> + 13 9 3 5 3. + <_> + + <_> + 4 4 3 15 -1. + <_> + 4 9 3 5 3. + <_> + + <_> + 14 3 6 5 -1. + <_> + 14 3 3 5 2. + <_> + + <_> + 7 5 6 7 -1. + <_> + 9 5 2 7 3. + <_> + + <_> + 14 2 6 7 -1. + <_> + 14 2 3 7 2. + <_> + + <_> + 0 2 6 7 -1. + <_> + 3 2 3 7 2. + <_> + + <_> + 11 6 8 8 -1. + <_> + 15 6 4 4 2. + <_> + 11 10 4 4 2. + <_> + + <_> + 2 14 7 6 -1. + <_> + 2 16 7 2 3. + <_> + + <_> + 5 9 13 3 -1. + <_> + 5 10 13 1 3. + <_> + + <_> + 0 8 15 3 -1. + <_> + 0 9 15 1 3. + <_> + + <_> + 11 5 4 12 -1. + <_> + 11 11 4 6 2. + <_> + + <_> + 2 11 13 3 -1. + <_> + 2 12 13 1 3. + <_> + + <_> + 2 1 16 2 -1. + <_> + 2 2 16 1 2. + <_> + + <_> + 5 6 8 10 -1. + <_> + 5 6 4 5 2. + <_> + 9 11 4 5 2. + <_> + + <_> + 8 8 10 12 -1. + <_> + 13 8 5 6 2. + <_> + 8 14 5 6 2. + <_> + + <_> + 3 10 6 6 -1. + <_> + 3 13 6 3 2. + <_> + + <_> + 1 5 18 8 -1. + <_> + 10 5 9 4 2. + <_> + 1 9 9 4 2. + <_> + + <_> + 0 0 12 20 -1. + <_> + 6 0 6 20 2. + <_> + + <_> + 4 6 13 3 -1. + <_> + 4 7 13 1 3. + <_> + + <_> + 7 0 6 7 -1. + <_> + 9 0 2 7 3. + <_> + + <_> + 11 2 6 10 -1. + <_> + 14 2 3 5 2. + <_> + 11 7 3 5 2. + <_> + + <_> + 5 9 4 7 -1. + <_> + 7 9 2 7 2. + <_> + + <_> + 1 9 18 3 -1. + <_> + 7 9 6 3 3. + <_> + + <_> + 2 6 8 14 -1. + <_> + 2 6 4 7 2. + <_> + 6 13 4 7 2. + <_> + + <_> + 8 6 6 7 -1. + <_> + 10 6 2 7 3. + <_> + + <_> + 6 6 6 7 -1. + <_> + 8 6 2 7 3. + <_> + + <_> + 11 0 6 7 -1. + <_> + 13 0 2 7 3. + <_> + + <_> + 6 0 4 9 -1. + <_> + 8 0 2 9 2. + <_> + + <_> + 10 0 3 13 -1. + <_> + 11 0 1 13 3. + <_> + + <_> + 3 0 6 7 -1. + <_> + 5 0 2 7 3. + <_> + + <_> + 10 0 3 13 -1. + <_> + 11 0 1 13 3. + <_> + + <_> + 7 0 3 13 -1. + <_> + 8 0 1 13 3. + <_> + + <_> + 9 1 3 13 -1. + <_> + 10 1 1 13 3. + <_> + + <_> + 0 9 13 2 -1. + <_> + 0 10 13 1 2. + <_> + + <_> + 7 3 13 16 -1. + <_> + 7 11 13 8 2. + <_> + + <_> + 0 3 5 9 -1. + <_> + 0 6 5 3 3. + <_> + + <_> + 11 1 7 6 -1. + <_> + 11 3 7 2 3. + <_> + + <_> + 1 1 16 4 -1. + <_> + 1 1 8 2 2. + <_> + 9 3 8 2 2. + <_> + + <_> + 0 2 20 6 -1. + <_> + 10 2 10 3 2. + <_> + 0 5 10 3 2. + <_> + + <_> + 0 4 19 10 -1. + <_> + 0 9 19 5 2. + <_> + + <_> + 4 6 15 5 -1. + <_> + 9 6 5 5 3. + <_> + + <_> + 0 16 14 4 -1. + <_> + 0 16 7 2 2. + <_> + 7 18 7 2 2. + <_> + + <_> + 8 12 4 8 -1. + <_> + 8 16 4 4 2. + <_> + + <_> + 1 12 9 8 -1. + <_> + 1 16 9 4 2. + <_> + + <_> + 3 5 14 3 -1. + <_> + 3 6 14 1 3. + <_> + + <_> + 3 5 13 3 -1. + <_> + 3 6 13 1 3. + <_> + + <_> + 16 0 4 7 -1. + <_> + 16 0 2 7 2. + <_> + + <_> + 3 11 14 4 -1. + <_> + 3 11 7 2 2. + <_> + 10 13 7 2 2. + <_> + + <_> + 3 11 14 4 -1. + <_> + 10 11 7 2 2. + <_> + 3 13 7 2 2. + <_> + + <_> + 2 5 14 6 -1. + <_> + 2 7 14 2 3. + <_> + + <_> + 11 15 9 4 -1. + <_> + 11 17 9 2 2. + <_> + + <_> + 1 14 13 3 -1. + <_> + 1 15 13 1 3. + <_> + + <_> + 12 13 7 6 -1. + <_> + 12 15 7 2 3. + <_> + + <_> + 1 13 7 6 -1. + <_> + 1 15 7 2 3. + <_> + + <_> + 0 16 20 4 -1. + <_> + 0 18 20 2 2. + <_> + + <_> + 0 14 12 6 -1. + <_> + 0 14 6 3 2. + <_> + 6 17 6 3 2. + <_> + + <_> + 4 6 15 5 -1. + <_> + 9 6 5 5 3. + <_> + + <_> + 1 6 15 5 -1. + <_> + 6 6 5 5 3. + <_> + + <_> + 11 5 6 9 -1. + <_> + 11 8 6 3 3. + <_> + + <_> + 5 0 6 8 -1. + <_> + 7 0 2 8 3. + <_> + + <_> + 5 17 13 3 -1. + <_> + 5 18 13 1 3. + <_> + + <_> + 0 2 5 9 -1. + <_> + 0 5 5 3 3. + <_> + + <_> + 15 1 5 9 -1. + <_> + 15 4 5 3 3. + <_> + + <_> + 0 1 5 9 -1. + <_> + 0 4 5 3 3. + <_> + + <_> + 5 3 14 3 -1. + <_> + 5 4 14 1 3. + <_> + + <_> + 6 9 6 5 -1. + <_> + 9 9 3 5 2. + <_> + + <_> + 12 6 8 5 -1. + <_> + 12 6 4 5 2. + <_> + + <_> + 4 0 3 13 -1. + <_> + 5 0 1 13 3. + <_> + + <_> + 4 14 13 2 -1. + <_> + 4 15 13 1 2. + <_> + + <_> + 0 0 4 7 -1. + <_> + 2 0 2 7 2. + <_> + + <_> + 6 9 8 8 -1. + <_> + 6 13 8 4 2. + <_> + + <_> + 3 13 13 3 -1. + <_> + 3 14 13 1 3. + <_> + + <_> + 9 3 3 10 -1. + <_> + 9 8 3 5 2. + <_> + + <_> + 4 0 12 20 -1. + <_> + 10 0 6 20 2. + <_> + + <_> + 13 12 6 6 -1. + <_> + 13 12 3 6 2. + <_> + + <_> + 3 2 12 4 -1. + <_> + 9 2 6 4 2. + <_> + + <_> + 7 0 6 9 -1. + <_> + 9 0 2 9 3. + <_> + + <_> + 6 4 2 13 -1. + <_> + 7 4 1 13 2. + <_> + + <_> + 13 4 4 12 -1. + <_> + 13 4 2 12 2. + <_> + + <_> + 0 9 12 3 -1. + <_> + 6 9 6 3 2. + <_> + + <_> + 13 4 4 12 -1. + <_> + 13 4 2 12 2. + <_> + + <_> + 3 4 4 12 -1. + <_> + 5 4 2 12 2. + <_> + + <_> + 10 0 10 20 -1. + <_> + 10 0 5 20 2. + <_> + + <_> + 0 0 10 20 -1. + <_> + 5 0 5 20 2. + <_> + + <_> + 5 4 13 3 -1. + <_> + 5 5 13 1 3. + <_> + + <_> + 0 8 13 3 -1. + <_> + 0 9 13 1 3. + <_> + + <_> + 7 15 13 3 -1. + <_> + 7 16 13 1 3. + <_> + + <_> + 0 2 18 4 -1. + <_> + 0 2 9 2 2. + <_> + 9 4 9 2 2. + <_> + + <_> + 12 6 8 5 -1. + <_> + 12 6 4 5 2. + <_> + + <_> + 5 0 10 8 -1. + <_> + 5 4 10 4 2. + <_> + + <_> + 9 0 10 6 -1. + <_> + 9 2 10 2 3. + <_> + + <_> + 3 0 14 3 -1. + <_> + 3 1 14 1 3. + <_> + + <_> + 12 6 8 5 -1. + <_> + 12 6 4 5 2. + <_> + + <_> + 0 6 8 5 -1. + <_> + 4 6 4 5 2. + <_> + + <_> + 11 15 7 4 -1. + <_> + 11 17 7 2 2. + <_> + + <_> + 4 2 9 5 -1. + <_> + 7 2 3 5 3. + <_> + + <_> + 14 2 6 9 -1. + <_> + 14 5 6 3 3. + <_> + + <_> + 5 3 10 6 -1. + <_> + 5 5 10 2 3. + <_> + + <_> + 8 4 6 14 -1. + <_> + 8 11 6 7 2. + <_> + + <_> + 1 5 9 6 -1. + <_> + 1 7 9 2 3. + <_> + + <_> + 5 6 10 3 -1. + <_> + 5 6 5 3 2. + <_> + + <_> + 8 3 4 7 -1. + <_> + 10 3 2 7 2. + <_> + + <_> + 0 4 20 12 -1. + <_> + 10 4 10 6 2. + <_> + 0 10 10 6 2. + <_> + + <_> + 5 4 7 4 -1. + <_> + 5 6 7 2 2. + <_> + + <_> + 8 12 4 8 -1. + <_> + 8 16 4 4 2. + <_> + + <_> + 8 6 3 12 -1. + <_> + 8 12 3 6 2. + <_> + + <_> + 3 0 14 2 -1. + <_> + 3 1 14 1 2. + <_> + + <_> + 7 7 6 13 -1. + <_> + 9 7 2 13 3. + <_> + + <_> + 3 4 16 12 -1. + <_> + 11 4 8 6 2. + <_> + 3 10 8 6 2. + <_> + + <_> + 1 4 16 12 -1. + <_> + 1 4 8 6 2. + <_> + 9 10 8 6 2. + <_> + + <_> + 7 5 6 10 -1. + <_> + 7 10 6 5 2. + <_> + + <_> + 3 6 5 9 -1. + <_> + 3 9 5 3 3. + <_> + + <_> + 6 3 14 4 -1. + <_> + 13 3 7 2 2. + <_> + 6 5 7 2 2. + <_> + + <_> + 3 18 13 2 -1. + <_> + 3 19 13 1 2. + <_> + + <_> + 4 10 16 4 -1. + <_> + 12 10 8 2 2. + <_> + 4 12 8 2 2. + <_> + + <_> + 2 10 14 4 -1. + <_> + 2 10 7 2 2. + <_> + 9 12 7 2 2. + <_> + + <_> + 12 12 7 6 -1. + <_> + 12 14 7 2 3. + <_> + + <_> + 0 0 4 11 -1. + <_> + 2 0 2 11 2. + <_> + + <_> + 14 0 6 9 -1. + <_> + 14 0 3 9 2. + <_> + + <_> + 1 12 7 6 -1. + <_> + 1 14 7 2 3. + <_> + + <_> + 6 12 13 2 -1. + <_> + 6 13 13 1 2. + <_> + + <_> + 0 0 6 9 -1. + <_> + 3 0 3 9 2. + <_> + + <_> + 0 9 20 3 -1. + <_> + 0 10 20 1 3. + <_> + + <_> + 5 5 3 10 -1. + <_> + 5 10 3 5 2. + <_> + + <_> + 1 5 18 8 -1. + <_> + 10 5 9 4 2. + <_> + 1 9 9 4 2. + <_> + + <_> + 4 2 10 6 -1. + <_> + 4 4 10 2 3. + <_> + + <_> + 6 0 8 12 -1. + <_> + 10 0 4 6 2. + <_> + 6 6 4 6 2. + <_> + + <_> + 5 6 6 7 -1. + <_> + 7 6 2 7 3. + <_> + + <_> + 8 5 4 7 -1. + <_> + 8 5 2 7 2. + <_> + + <_> + 6 0 6 7 -1. + <_> + 8 0 2 7 3. + <_> + + <_> + 9 4 6 10 -1. + <_> + 12 4 3 5 2. + <_> + 9 9 3 5 2. + <_> + + <_> + 0 8 19 3 -1. + <_> + 0 9 19 1 3. + <_> + + <_> + 1 10 18 3 -1. + <_> + 1 11 18 1 3. + <_> + + <_> + 5 1 3 13 -1. + <_> + 6 1 1 13 3. + <_> + + <_> + 12 11 8 9 -1. + <_> + 12 11 4 9 2. + <_> + + <_> + 5 0 3 20 -1. + <_> + 6 0 1 20 3. + <_> + + <_> + 15 0 5 9 -1. + <_> + 15 3 5 3 3. + <_> + + <_> + 0 1 4 14 -1. + <_> + 2 1 2 14 2. + <_> + + <_> + 0 1 20 4 -1. + <_> + 10 1 10 2 2. + <_> + 0 3 10 2 2. + <_> + + <_> + 0 1 6 12 -1. + <_> + 2 1 2 12 3. + <_> + + <_> + 11 0 6 6 -1. + <_> + 11 0 3 6 2. + <_> + + <_> + 6 10 4 8 -1. + <_> + 6 14 4 4 2. + <_> + + <_> + 7 0 13 3 -1. + <_> + 7 1 13 1 3. + <_> + + <_> + 0 0 13 3 -1. + <_> + 0 1 13 1 3. + <_> + + <_> + 5 5 10 6 -1. + <_> + 5 7 10 2 3. + <_> + + <_> + 4 5 4 14 -1. + <_> + 4 5 2 7 2. + <_> + 6 12 2 7 2. + <_> + + <_> + 11 0 6 6 -1. + <_> + 11 0 3 6 2. + <_> + + <_> + 3 0 6 6 -1. + <_> + 6 0 3 6 2. + <_> + + <_> + 1 0 18 7 -1. + <_> + 7 0 6 7 3. + <_> + + <_> + 2 13 13 3 -1. + <_> + 2 14 13 1 3. + <_> + + <_> + 13 4 7 6 -1. + <_> + 13 6 7 2 3. + <_> + + <_> + 2 6 14 9 -1. + <_> + 2 9 14 3 3. + <_> + + <_> + 13 4 7 6 -1. + <_> + 13 6 7 2 3. + <_> + + <_> + 2 13 13 3 -1. + <_> + 2 14 13 1 3. + <_> + + <_> + 13 4 7 6 -1. + <_> + 13 6 7 2 3. + <_> + + <_> + 0 4 7 6 -1. + <_> + 0 6 7 2 3. + <_> + + <_> + 1 14 18 4 -1. + <_> + 10 14 9 2 2. + <_> + 1 16 9 2 2. + <_> + + <_> + 2 8 15 6 -1. + <_> + 7 8 5 6 3. + <_> + + <_> + 16 2 4 8 -1. + <_> + 16 6 4 4 2. + <_> + + <_> + 0 1 8 8 -1. + <_> + 0 1 4 4 2. + <_> + 4 5 4 4 2. + <_> + + <_> + 7 3 8 4 -1. + <_> + 7 5 8 2 2. + <_> + + <_> + 0 3 14 4 -1. + <_> + 0 3 7 2 2. + <_> + 7 5 7 2 2. + <_> + + <_> + 3 12 14 4 -1. + <_> + 10 12 7 2 2. + <_> + 3 14 7 2 2. + <_> + + <_> + 4 9 8 5 -1. + <_> + 8 9 4 5 2. + <_> + + <_> + 7 6 6 7 -1. + <_> + 9 6 2 7 3. + <_> + + <_> + 7 0 6 7 -1. + <_> + 9 0 2 7 3. + <_> + + <_> + 8 5 8 4 -1. + <_> + 8 5 4 4 2. + <_> + + <_> + 2 2 15 7 -1. + <_> + 7 2 5 7 3. + <_> + + <_> + 8 5 8 4 -1. + <_> + 8 5 4 4 2. + <_> + + <_> + 4 5 8 4 -1. + <_> + 8 5 4 4 2. + <_> + + <_> + 7 1 7 12 -1. + <_> + 7 7 7 6 2. + <_> + + <_> + 4 0 12 10 -1. + <_> + 4 5 12 5 2. + <_> + + <_> + 6 6 14 4 -1. + <_> + 13 6 7 2 2. + <_> + 6 8 7 2 2. + <_> + + <_> + 0 1 5 6 -1. + <_> + 0 4 5 3 2. + <_> + + <_> + 8 0 6 7 -1. + <_> + 10 0 2 7 3. + <_> + + <_> + 6 5 6 7 -1. + <_> + 8 5 2 7 3. + <_> + + <_> + 12 2 2 14 -1. + <_> + 12 2 1 14 2. + <_> + + <_> + 0 15 14 4 -1. + <_> + 0 15 7 2 2. + <_> + 7 17 7 2 2. + <_> + + <_> + 7 14 12 6 -1. + <_> + 13 14 6 3 2. + <_> + 7 17 6 3 2. + <_> + + <_> + 6 2 2 14 -1. + <_> + 7 2 1 14 2. + <_> + + <_> + 6 6 14 4 -1. + <_> + 13 6 7 2 2. + <_> + 6 8 7 2 2. + <_> + + <_> + 0 6 14 4 -1. + <_> + 0 6 7 2 2. + <_> + 7 8 7 2 2. + <_> + + <_> + 12 11 8 9 -1. + <_> + 12 11 4 9 2. + <_> + + <_> + 0 11 8 9 -1. + <_> + 4 11 4 9 2. + <_> + + <_> + 7 1 12 18 -1. + <_> + 11 1 4 18 3. + <_> + + <_> + 1 1 12 18 -1. + <_> + 5 1 4 18 3. + <_> + + <_> + 9 0 6 7 -1. + <_> + 11 0 2 7 3. + <_> + + <_> + 5 0 6 7 -1. + <_> + 7 0 2 7 3. + <_> + + <_> + 8 1 4 10 -1. + <_> + 8 6 4 5 2. + <_> + + <_> + 6 3 7 6 -1. + <_> + 6 5 7 2 3. + <_> + + <_> + 5 5 13 8 -1. + <_> + 5 9 13 4 2. + <_> + + <_> + 1 2 14 2 -1. + <_> + 1 3 14 1 2. + <_> + + <_> + 15 4 5 9 -1. + <_> + 15 7 5 3 3. + <_> + + <_> + 0 4 5 9 -1. + <_> + 0 7 5 3 3. + <_> + + <_> + 7 1 8 8 -1. + <_> + 7 5 8 4 2. + <_> + + <_> + 2 5 12 12 -1. + <_> + 2 5 6 6 2. + <_> + 8 11 6 6 2. + <_> + + <_> + 12 11 8 4 -1. + <_> + 12 13 8 2 2. + <_> + + <_> + 5 7 10 10 -1. + <_> + 5 7 5 5 2. + <_> + 10 12 5 5 2. + <_> + + <_> + 7 14 13 3 -1. + <_> + 7 15 13 1 3. + <_> + + <_> + 2 14 16 3 -1. + <_> + 2 15 16 1 3. + <_> + + <_> + 7 8 13 3 -1. + <_> + 7 9 13 1 3. + <_> + + <_> + 0 13 18 4 -1. + <_> + 0 13 9 2 2. + <_> + 9 15 9 2 2. + <_> + + <_> + 8 5 4 7 -1. + <_> + 8 5 2 7 2. + <_> + + <_> + 0 11 8 4 -1. + <_> + 0 13 8 2 2. + <_> + + <_> + 6 12 13 2 -1. + <_> + 6 13 13 1 2. + <_> + + <_> + 1 12 13 2 -1. + <_> + 1 13 13 1 2. + <_> + + <_> + 8 5 6 7 -1. + <_> + 10 5 2 7 3. + <_> + + <_> + 0 7 14 4 -1. + <_> + 0 7 7 2 2. + <_> + 7 9 7 2 2. + <_> + + <_> + 13 3 7 6 -1. + <_> + 13 5 7 2 3. + <_> + + <_> + 0 4 3 16 -1. + <_> + 0 12 3 8 2. + <_> + + <_> + 13 5 5 15 -1. + <_> + 13 10 5 5 3. + <_> + + <_> + 2 10 6 10 -1. + <_> + 2 10 3 5 2. + <_> + 5 15 3 5 2. + <_> + + <_> + 11 11 9 6 -1. + <_> + 11 13 9 2 3. + <_> + + <_> + 0 11 9 6 -1. + <_> + 0 13 9 2 3. + <_> + + <_> + 7 14 13 3 -1. + <_> + 7 15 13 1 3. + <_> + + <_> + 1 3 18 4 -1. + <_> + 1 3 9 2 2. + <_> + 10 5 9 2 2. + <_> + + <_> + 10 10 10 6 -1. + <_> + 15 10 5 3 2. + <_> + 10 13 5 3 2. + <_> + + <_> + 0 0 12 20 -1. + <_> + 6 0 6 20 2. + <_> + + <_> + 8 4 6 5 -1. + <_> + 8 4 3 5 2. + <_> + + <_> + 3 6 12 7 -1. + <_> + 7 6 4 7 3. + <_> + + <_> + 8 4 6 5 -1. + <_> + 8 4 3 5 2. + <_> + + <_> + 6 4 6 5 -1. + <_> + 9 4 3 5 2. + <_> + + <_> + 7 1 6 19 -1. + <_> + 7 1 3 19 2. + <_> + + <_> + 6 0 3 20 -1. + <_> + 7 0 1 20 3. + <_> + + <_> + 9 1 3 13 -1. + <_> + 10 1 1 13 3. + <_> + + <_> + 5 0 6 7 -1. + <_> + 7 0 2 7 3. + <_> + + <_> + 2 0 18 16 -1. + <_> + 2 8 18 8 2. + <_> + + <_> + 1 5 6 15 -1. + <_> + 1 10 6 5 3. + <_> + + <_> + 7 14 12 6 -1. + <_> + 13 14 6 3 2. + <_> + 7 17 6 3 2. + <_> + + <_> + 1 14 12 6 -1. + <_> + 1 14 6 3 2. + <_> + 7 17 6 3 2. + <_> + + <_> + 6 13 10 6 -1. + <_> + 11 13 5 3 2. + <_> + 6 16 5 3 2. + <_> + + <_> + 0 10 14 3 -1. + <_> + 0 11 14 1 3. + <_> + + <_> + 11 9 6 8 -1. + <_> + 11 9 3 8 2. + <_> + + <_> + 1 13 7 6 -1. + <_> + 1 15 7 2 3. + <_> + + <_> + 9 0 3 12 -1. + <_> + 9 6 3 6 2. + <_> + + <_> + 1 13 13 3 -1. + <_> + 1 14 13 1 3. + <_> + + <_> + 4 14 13 2 -1. + <_> + 4 15 13 1 2. + <_> + + <_> + 6 13 6 7 -1. + <_> + 8 13 2 7 3. + <_> + + <_> + 16 10 4 7 -1. + <_> + 16 10 2 7 2. + <_> + + <_> + 0 6 4 13 -1. + <_> + 2 6 2 13 2. + <_> + + <_> + 1 15 18 3 -1. + <_> + 7 15 6 3 3. + <_> + + <_> + 0 1 16 4 -1. + <_> + 0 1 8 2 2. + <_> + 8 3 8 2 2. + <_> + + <_> + 3 0 14 4 -1. + <_> + 3 2 14 2 2. + <_> + + <_> + 3 13 12 6 -1. + <_> + 3 13 6 3 2. + <_> + 9 16 6 3 2. + <_> + + <_> + 6 8 8 9 -1. + <_> + 6 11 8 3 3. + <_> + + <_> + 0 8 18 9 -1. + <_> + 0 11 18 3 3. + <_> + + <_> + 10 13 10 7 -1. + <_> + 10 13 5 7 2. + <_> + + <_> + 0 13 10 7 -1. + <_> + 5 13 5 7 2. + <_> + + <_> + 12 10 8 6 -1. + <_> + 12 12 8 2 3. + <_> + + <_> + 0 12 17 6 -1. + <_> + 0 15 17 3 2. + <_> + + <_> + 5 14 10 4 -1. + <_> + 5 16 10 2 2. + <_> + + <_> + 1 8 13 3 -1. + <_> + 1 9 13 1 3. + <_> + + <_> + 11 10 9 4 -1. + <_> + 11 12 9 2 2. + <_> + + <_> + 0 2 2 18 -1. + <_> + 1 2 1 18 2. + <_> + + <_> + 14 12 6 7 -1. + <_> + 14 12 3 7 2. + <_> + + <_> + 0 12 6 7 -1. + <_> + 3 12 3 7 2. + <_> + + <_> + 8 2 8 14 -1. + <_> + 8 9 8 7 2. + <_> + + <_> + 4 2 8 14 -1. + <_> + 4 9 8 7 2. + <_> + + <_> + 7 9 13 3 -1. + <_> + 7 10 13 1 3. + <_> + + <_> + 3 5 13 3 -1. + <_> + 3 6 13 1 3. + <_> + + <_> + 1 2 18 3 -1. + <_> + 7 2 6 3 3. + <_> + + <_> + 12 6 5 9 -1. + <_> + 12 9 5 3 3. + <_> + + <_> + 0 4 9 12 -1. + <_> + 3 4 3 12 3. + <_> + + <_> + 9 4 6 5 -1. + <_> + 9 4 3 5 2. + <_> + + <_> + 5 4 6 5 -1. + <_> + 8 4 3 5 2. + <_> + + <_> + 13 9 4 10 -1. + <_> + 13 14 4 5 2. + <_> + + <_> + 3 12 10 8 -1. + <_> + 3 12 5 4 2. + <_> + 8 16 5 4 2. + <_> + + <_> + 12 1 7 4 -1. + <_> + 12 3 7 2 2. + <_> + + <_> + 2 4 12 6 -1. + <_> + 2 6 12 2 3. + <_> + + <_> + 13 10 5 6 -1. + <_> + 13 13 5 3 2. + <_> + + <_> + 2 10 5 6 -1. + <_> + 2 13 5 3 2. + <_> + + <_> + 12 1 7 4 -1. + <_> + 12 3 7 2 2. + <_> + + <_> + 5 5 9 10 -1. + <_> + 5 10 9 5 2. + <_> + + <_> + 12 1 7 4 -1. + <_> + 12 3 7 2 2. + <_> + + <_> + 0 0 17 2 -1. + <_> + 0 1 17 1 2. + <_> + + <_> + 7 0 6 7 -1. + <_> + 9 0 2 7 3. + <_> + + <_> + 7 5 6 7 -1. + <_> + 9 5 2 7 3. + <_> + + <_> + 11 10 6 8 -1. + <_> + 13 10 2 8 3. + <_> + + <_> + 3 10 6 8 -1. + <_> + 5 10 2 8 3. + <_> + + <_> + 5 1 10 12 -1. + <_> + 5 7 10 6 2. + <_> + + <_> + 1 1 7 4 -1. + <_> + 1 3 7 2 2. + <_> + + <_> + 10 10 8 6 -1. + <_> + 10 12 8 2 3. + <_> + + <_> + 0 7 8 6 -1. + <_> + 0 9 8 2 3. + <_> + + <_> + 5 11 10 6 -1. + <_> + 10 11 5 3 2. + <_> + 5 14 5 3 2. + <_> + + <_> + 0 8 20 3 -1. + <_> + 0 9 20 1 3. + <_> + + <_> + 7 11 13 3 -1. + <_> + 7 12 13 1 3. + <_> + + <_> + 2 7 15 5 -1. + <_> + 7 7 5 5 3. + <_> + + <_> + 2 9 16 6 -1. + <_> + 2 9 8 6 2. + <_> + + <_> + 0 4 5 6 -1. + <_> + 0 7 5 3 2. + <_> + + <_> + 4 12 12 5 -1. + <_> + 8 12 4 5 3. + <_> + + <_> + 2 16 16 4 -1. + <_> + 2 16 8 2 2. + <_> + 10 18 8 2 2. + <_> + + <_> + 11 14 7 6 -1. + <_> + 11 16 7 2 3. + <_> + + <_> + 4 0 3 13 -1. + <_> + 5 0 1 13 3. + <_> + + <_> + 6 14 13 3 -1. + <_> + 6 15 13 1 3. + <_> + + <_> + 2 14 13 3 -1. + <_> + 2 15 13 1 3. + <_> + + <_> + 7 1 13 3 -1. + <_> + 7 2 13 1 3. + <_> + + <_> + 0 4 6 7 -1. + <_> + 2 4 2 7 3. + <_> + + <_> + 8 0 6 7 -1. + <_> + 10 0 2 7 3. + <_> + + <_> + 7 0 6 20 -1. + <_> + 9 0 2 20 3. + <_> + + <_> + 9 5 3 13 -1. + <_> + 10 5 1 13 3. + <_> + + <_> + 5 1 10 9 -1. + <_> + 5 4 10 3 3. + <_> + + <_> + 12 5 8 8 -1. + <_> + 16 5 4 4 2. + <_> + 12 9 4 4 2. + <_> + + <_> + 6 0 8 8 -1. + <_> + 6 4 8 4 2. + <_> + + <_> + 8 2 4 12 -1. + <_> + 8 6 4 4 3. + <_> + + <_> + 1 1 18 4 -1. + <_> + 7 1 6 4 3. + <_> + + <_> + 10 6 10 6 -1. + <_> + 15 6 5 3 2. + <_> + 10 9 5 3 2. + <_> + + <_> + 0 6 10 6 -1. + <_> + 0 6 5 3 2. + <_> + 5 9 5 3 2. + <_> + + <_> + 13 2 6 6 -1. + <_> + 13 2 3 6 2. + <_> + + <_> + 4 0 6 7 -1. + <_> + 6 0 2 7 3. + <_> + + <_> + 7 6 10 14 -1. + <_> + 12 6 5 7 2. + <_> + 7 13 5 7 2. + <_> + + <_> + 1 1 18 3 -1. + <_> + 1 2 18 1 3. + <_> + + <_> + 0 9 20 3 -1. + <_> + 0 10 20 1 3. + <_> + + <_> + 2 12 7 6 -1. + <_> + 2 14 7 2 3. + <_> + + <_> + 6 13 13 3 -1. + <_> + 6 14 13 1 3. + <_> + + <_> + 2 15 7 4 -1. + <_> + 2 17 7 2 2. + <_> + + <_> + 9 0 2 13 -1. + <_> + 9 0 1 13 2. + <_> + + <_> + 4 0 9 6 -1. + <_> + 7 0 3 6 3. + <_> + + <_> + 11 6 5 6 -1. + <_> + 11 9 5 3 2. + <_> + + <_> + 3 6 10 14 -1. + <_> + 3 6 5 7 2. + <_> + 8 13 5 7 2. + <_> + + <_> + 6 4 12 12 -1. + <_> + 12 4 6 6 2. + <_> + 6 10 6 6 2. + <_> + + <_> + 4 6 5 6 -1. + <_> + 4 9 5 3 2. + <_> + + <_> + 5 1 14 5 -1. + <_> + 5 1 7 5 2. + <_> + + <_> + 9 4 2 16 -1. + <_> + 9 12 2 8 2. + <_> + + <_> + 13 12 7 4 -1. + <_> + 13 14 7 2 2. + <_> + + <_> + 3 12 5 6 -1. + <_> + 3 15 5 3 2. + <_> + + <_> + 14 10 6 10 -1. + <_> + 17 10 3 5 2. + <_> + 14 15 3 5 2. + <_> + + <_> + 1 3 8 4 -1. + <_> + 5 3 4 4 2. + <_> + + <_> + 9 14 10 6 -1. + <_> + 14 14 5 3 2. + <_> + 9 17 5 3 2. + <_> + + <_> + 3 0 3 13 -1. + <_> + 4 0 1 13 3. + <_> + + <_> + 10 10 10 10 -1. + <_> + 15 10 5 5 2. + <_> + 10 15 5 5 2. + <_> + + <_> + 0 6 8 14 -1. + <_> + 4 6 4 14 2. + <_> + + <_> + 4 3 12 12 -1. + <_> + 10 3 6 6 2. + <_> + 4 9 6 6 2. + <_> + + <_> + 0 1 13 3 -1. + <_> + 0 2 13 1 3. + <_> + + <_> + 9 6 3 13 -1. + <_> + 10 6 1 13 3. + <_> + + <_> + 4 1 10 5 -1. + <_> + 9 1 5 5 2. + <_> + + <_> + 14 0 6 10 -1. + <_> + 17 0 3 5 2. + <_> + 14 5 3 5 2. + <_> + + <_> + 3 2 12 6 -1. + <_> + 3 2 6 3 2. + <_> + 9 5 6 3 2. + <_> + + <_> + 2 2 18 4 -1. + <_> + 11 2 9 2 2. + <_> + 2 4 9 2 2. + <_> + + <_> + 3 2 11 6 -1. + <_> + 3 4 11 2 3. + <_> + + <_> + 12 0 8 12 -1. + <_> + 16 0 4 6 2. + <_> + 12 6 4 6 2. + <_> + + <_> + 0 0 8 12 -1. + <_> + 0 0 4 6 2. + <_> + 4 6 4 6 2. + <_> + + <_> + 7 1 6 10 -1. + <_> + 10 1 3 5 2. + <_> + 7 6 3 5 2. + <_> + + <_> + 0 0 13 3 -1. + <_> + 0 1 13 1 3. + <_> + + <_> + 4 5 13 3 -1. + <_> + 4 6 13 1 3. + <_> + + <_> + 3 12 7 6 -1. + <_> + 3 14 7 2 3. + <_> + + <_> + 7 13 13 3 -1. + <_> + 7 14 13 1 3. + <_> + + <_> + 1 13 13 3 -1. + <_> + 1 14 13 1 3. + <_> + + <_> + 8 1 7 6 -1. + <_> + 8 3 7 2 3. + <_> + + <_> + 0 8 12 7 -1. + <_> + 6 8 6 7 2. + <_> + + <_> + 0 1 20 4 -1. + <_> + 10 1 10 2 2. + <_> + 0 3 10 2 2. + <_> + + <_> + 0 10 20 3 -1. + <_> + 0 11 20 1 3. + <_> + + <_> + 12 1 2 14 -1. + <_> + 12 1 1 14 2. + <_> + + <_> + 1 7 18 10 -1. + <_> + 7 7 6 10 3. + <_> + + <_> + 8 5 6 7 -1. + <_> + 10 5 2 7 3. + <_> + + <_> + 6 5 6 7 -1. + <_> + 8 5 2 7 3. + <_> + + <_> + 14 1 3 14 -1. + <_> + 15 1 1 14 3. + <_> + + <_> + 5 8 6 5 -1. + <_> + 8 8 3 5 2. + <_> + + <_> + 14 1 3 14 -1. + <_> + 15 1 1 14 3. + <_> + + <_> + 3 1 3 14 -1. + <_> + 4 1 1 14 3. + <_> + + <_> + 0 16 20 2 -1. + <_> + 0 17 20 1 2. + <_> + + <_> + 6 6 4 14 -1. + <_> + 8 6 2 14 2. + <_> + + <_> + 9 6 3 13 -1. + <_> + 10 6 1 13 3. + <_> + + <_> + 1 9 7 6 -1. + <_> + 1 11 7 2 3. + <_> + + <_> + 9 3 5 9 -1. + <_> + 9 6 5 3 3. + <_> + + <_> + 2 13 9 6 -1. + <_> + 5 13 3 6 3. + <_> + + <_> + 15 2 5 9 -1. + <_> + 15 5 5 3 3. + <_> + + <_> + 0 2 5 9 -1. + <_> + 0 5 5 3 3. + <_> + + <_> + 9 14 10 6 -1. + <_> + 14 14 5 3 2. + <_> + 9 17 5 3 2. + <_> + + <_> + 1 14 10 6 -1. + <_> + 1 14 5 3 2. + <_> + 6 17 5 3 2. + <_> + + <_> + 11 13 7 6 -1. + <_> + 11 15 7 2 3. + <_> + + <_> + 1 8 8 12 -1. + <_> + 1 8 4 6 2. + <_> + 5 14 4 6 2. + <_> + + <_> + 5 7 15 5 -1. + <_> + 10 7 5 5 3. + <_> + + <_> + 0 7 15 5 -1. + <_> + 5 7 5 5 3. + <_> + + <_> + 12 13 8 6 -1. + <_> + 12 15 8 2 3. + <_> + + <_> + 8 10 4 10 -1. + <_> + 8 15 4 5 2. + <_> + + <_> + 1 6 19 3 -1. + <_> + 1 7 19 1 3. + <_> + + <_> + 7 8 6 9 -1. + <_> + 7 11 6 3 3. + <_> + + <_> + 11 2 8 8 -1. + <_> + 15 2 4 4 2. + <_> + 11 6 4 4 2. + <_> + + <_> + 8 6 3 14 -1. + <_> + 9 6 1 14 3. + <_> + + <_> + 9 2 3 13 -1. + <_> + 10 2 1 13 3. + <_> + + <_> + 8 2 3 13 -1. + <_> + 9 2 1 13 3. + <_> + + <_> + 8 0 6 7 -1. + <_> + 10 0 2 7 3. + <_> + + <_> + 3 2 3 18 -1. + <_> + 3 8 3 6 3. + <_> + + <_> + 1 5 18 10 -1. + <_> + 10 5 9 5 2. + <_> + 1 10 9 5 2. + <_> + + <_> + 6 1 2 13 -1. + <_> + 7 1 1 13 2. + <_> + + <_> + 11 0 8 6 -1. + <_> + 11 2 8 2 3. + <_> + + <_> + 4 0 7 6 -1. + <_> + 4 2 7 2 3. + <_> + + <_> + 0 2 10 3 -1. + <_> + 5 2 5 3 2. + <_> + + <_> + 1 4 19 4 -1. + <_> + 1 6 19 2 2. + <_> + + <_> + 5 7 6 5 -1. + <_> + 8 7 3 5 2. + <_> + + <_> + 11 10 5 6 -1. + <_> + 11 13 5 3 2. + <_> + + <_> + 7 8 4 12 -1. + <_> + 7 12 4 4 3. + <_> + + <_> + 10 1 10 19 -1. + <_> + 10 1 5 19 2. + <_> + + <_> + 0 1 10 19 -1. + <_> + 5 1 5 19 2. + <_> + + <_> + 7 0 6 9 -1. + <_> + 9 0 2 9 3. + <_> + + <_> + 2 7 7 6 -1. + <_> + 2 9 7 2 3. + <_> + + <_> + 10 5 10 12 -1. + <_> + 10 11 10 6 2. + <_> + + <_> + 5 10 4 8 -1. + <_> + 5 14 4 4 2. + <_> + + <_> + 7 5 8 12 -1. + <_> + 11 5 4 6 2. + <_> + 7 11 4 6 2. + <_> + + <_> + 5 5 8 12 -1. + <_> + 5 5 4 6 2. + <_> + 9 11 4 6 2. + <_> + + <_> + 14 1 6 8 -1. + <_> + 16 1 2 8 3. + <_> + + <_> + 0 1 6 9 -1. + <_> + 2 1 2 9 3. + <_> + + <_> + 1 6 18 4 -1. + <_> + 7 6 6 4 3. + <_> + + <_> + 3 12 13 2 -1. + <_> + 3 13 13 1 2. + <_> + + <_> + 3 3 14 2 -1. + <_> + 3 4 14 1 2. + <_> + + <_> + 2 0 13 6 -1. + <_> + 2 2 13 2 3. + <_> + + <_> + 12 11 7 6 -1. + <_> + 12 13 7 2 3. + <_> + + <_> + 3 8 13 2 -1. + <_> + 3 9 13 1 2. + <_> + + <_> + 12 0 4 14 -1. + <_> + 14 0 2 7 2. + <_> + 12 7 2 7 2. + <_> + + <_> + 1 14 13 3 -1. + <_> + 1 15 13 1 3. + <_> + + <_> + 15 1 5 9 -1. + <_> + 15 4 5 3 3. + <_> + + <_> + 1 0 6 12 -1. + <_> + 4 0 3 12 2. + <_> + + <_> + 14 0 6 5 -1. + <_> + 14 0 3 5 2. + <_> + + <_> + 0 0 6 5 -1. + <_> + 3 0 3 5 2. + <_> + + <_> + 5 1 15 3 -1. + <_> + 5 2 15 1 3. + <_> + + <_> + 6 0 6 7 -1. + <_> + 8 0 2 7 3. + <_> + + <_> + 12 11 7 6 -1. + <_> + 12 13 7 2 3. + <_> + + <_> + 1 11 7 6 -1. + <_> + 1 13 7 2 3. + <_> + + <_> + 7 13 13 3 -1. + <_> + 7 14 13 1 3. + <_> + + <_> + 2 14 13 3 -1. + <_> + 2 15 13 1 3. + <_> + + <_> + 0 5 20 10 -1. + <_> + 10 5 10 5 2. + <_> + 0 10 10 5 2. + <_> + + <_> + 4 6 4 7 -1. + <_> + 6 6 2 7 2. + <_> + + <_> + 4 6 14 6 -1. + <_> + 11 6 7 3 2. + <_> + 4 9 7 3 2. + <_> + + <_> + 5 6 6 8 -1. + <_> + 5 10 6 4 2. + <_> + + <_> + 14 10 6 10 -1. + <_> + 14 10 3 10 2. + <_> + + <_> + 2 18 13 2 -1. + <_> + 2 19 13 1 2. + <_> + + <_> + 2 12 16 4 -1. + <_> + 2 14 16 2 2. + <_> + + <_> + 1 6 10 6 -1. + <_> + 1 6 5 3 2. + <_> + 6 9 5 3 2. + <_> + + <_> + 14 10 6 10 -1. + <_> + 14 10 3 10 2. + <_> + + <_> + 0 10 6 10 -1. + <_> + 3 10 3 10 2. + <_> + + <_> + 11 0 6 7 -1. + <_> + 13 0 2 7 3. + <_> + + <_> + 0 0 4 17 -1. + <_> + 2 0 2 17 2. + <_> + + <_> + 11 0 6 7 -1. + <_> + 13 0 2 7 3. + <_> + + <_> + 2 4 6 16 -1. + <_> + 2 4 3 8 2. + <_> + 5 12 3 8 2. + <_> + + <_> + 5 6 10 8 -1. + <_> + 10 6 5 4 2. + <_> + 5 10 5 4 2. + <_> + + <_> + 4 6 8 8 -1. + <_> + 4 6 4 4 2. + <_> + 8 10 4 4 2. + <_> + + <_> + 11 0 6 7 -1. + <_> + 13 0 2 7 3. + <_> + + <_> + 4 2 12 5 -1. + <_> + 8 2 4 5 3. + <_> + + <_> + 11 2 2 18 -1. + <_> + 11 2 1 18 2. + <_> + + <_> + 8 6 4 7 -1. + <_> + 10 6 2 7 2. + <_> + + <_> + 6 9 8 8 -1. + <_> + 10 9 4 4 2. + <_> + 6 13 4 4 2. + <_> + + <_> + 0 5 20 5 -1. + <_> + 10 5 10 5 2. + <_> + + <_> + 4 4 12 4 -1. + <_> + 4 6 12 2 2. + <_> + + <_> + 0 1 5 9 -1. + <_> + 0 4 5 3 3. + <_> + + <_> + 15 1 5 9 -1. + <_> + 15 4 5 3 3. + <_> + + <_> + 0 14 13 3 -1. + <_> + 0 15 13 1 3. + <_> + + <_> + 3 15 16 4 -1. + <_> + 11 15 8 2 2. + <_> + 3 17 8 2 2. + <_> + + <_> + 1 15 16 4 -1. + <_> + 1 15 8 2 2. + <_> + 9 17 8 2 2. + <_> + + <_> + 4 14 13 3 -1. + <_> + 4 15 13 1 3. + <_> + + <_> + 0 1 5 9 -1. + <_> + 0 4 5 3 3. + <_> + + <_> + 6 11 8 9 -1. + <_> + 6 14 8 3 3. + <_> + + <_> + 3 8 14 3 -1. + <_> + 3 9 14 1 3. + <_> + + <_> + 4 15 13 3 -1. + <_> + 4 16 13 1 3. + <_> + + <_> + 0 10 5 9 -1. + <_> + 0 13 5 3 3. + <_> + + <_> + 12 10 8 4 -1. + <_> + 12 12 8 2 2. + <_> + + <_> + 0 10 8 4 -1. + <_> + 0 12 8 2 2. + <_> + + <_> + 5 1 10 6 -1. + <_> + 5 3 10 2 3. + <_> + + <_> + 0 0 7 6 -1. + <_> + 0 2 7 2 3. + <_> + + <_> + 3 6 14 9 -1. + <_> + 3 9 14 3 3. + <_> + + <_> + 7 6 6 10 -1. + <_> + 9 6 2 10 3. + <_> + + <_> + 11 0 6 9 -1. + <_> + 13 0 2 9 3. + <_> + + <_> + 3 0 6 9 -1. + <_> + 5 0 2 9 3. + <_> + + <_> + 11 0 6 7 -1. + <_> + 13 0 2 7 3. + <_> + + <_> + 0 0 4 17 -1. + <_> + 2 0 2 17 2. + <_> + + <_> + 8 0 12 16 -1. + <_> + 12 0 4 16 3. + <_> + + <_> + 0 0 12 16 -1. + <_> + 4 0 4 16 3. + <_> + + <_> + 5 6 10 6 -1. + <_> + 5 9 10 3 2. + <_> + + <_> + 7 4 2 14 -1. + <_> + 8 4 1 14 2. + <_> + + <_> + 16 5 4 14 -1. + <_> + 18 5 2 7 2. + <_> + 16 12 2 7 2. + <_> + + <_> + 4 4 6 8 -1. + <_> + 6 4 2 8 3. + <_> + + <_> + 5 4 14 3 -1. + <_> + 5 5 14 1 3. + <_> + + <_> + 3 4 13 3 -1. + <_> + 3 5 13 1 3. + <_> + + <_> + 7 1 13 3 -1. + <_> + 7 2 13 1 3. + <_> + + <_> + 0 13 9 6 -1. + <_> + 0 15 9 2 3. + <_> + + <_> + 8 10 10 6 -1. + <_> + 8 12 10 2 3. + <_> + + <_> + 8 5 4 7 -1. + <_> + 10 5 2 7 2. + <_> + + <_> + 8 5 6 7 -1. + <_> + 10 5 2 7 3. + <_> + + <_> + 3 0 6 7 -1. + <_> + 5 0 2 7 3. + <_> + + <_> + 13 0 3 19 -1. + <_> + 14 0 1 19 3. + <_> + + <_> + 4 0 3 19 -1. + <_> + 5 0 1 19 3. + <_> + + <_> + 9 5 6 7 -1. + <_> + 11 5 2 7 3. + <_> + + <_> + 6 5 6 7 -1. + <_> + 8 5 2 7 3. + <_> + + <_> + 7 7 6 9 -1. + <_> + 7 10 6 3 3. + <_> + + <_> + 6 4 4 15 -1. + <_> + 6 9 4 5 3. + <_> + + <_> + 14 0 6 7 -1. + <_> + 16 0 2 7 3. + <_> + + <_> + 2 4 14 12 -1. + <_> + 2 4 7 6 2. + <_> + 9 10 7 6 2. + <_> + + <_> + 4 15 12 5 -1. + <_> + 4 15 6 5 2. + <_> + + <_> + 4 6 10 3 -1. + <_> + 9 6 5 3 2. + <_> + + <_> + 16 6 4 14 -1. + <_> + 18 6 2 7 2. + <_> + 16 13 2 7 2. + <_> + + <_> + 0 6 4 14 -1. + <_> + 0 6 2 7 2. + <_> + 2 13 2 7 2. + <_> + + <_> + 11 14 8 6 -1. + <_> + 11 16 8 2 3. + <_> + + <_> + 0 0 12 20 -1. + <_> + 6 0 6 20 2. + <_> + + <_> + 2 17 18 3 -1. + <_> + 8 17 6 3 3. + <_> + + <_> + 7 1 5 12 -1. + <_> + 7 7 5 6 2. + <_> + + <_> + 5 0 10 8 -1. + <_> + 5 4 10 4 2. + <_> + + <_> + 0 1 15 12 -1. + <_> + 0 5 15 4 3. + <_> + + <_> + 7 3 6 10 -1. + <_> + 7 8 6 5 2. + <_> + + <_> + 6 4 4 16 -1. + <_> + 6 4 2 8 2. + <_> + 8 12 2 8 2. + <_> + + <_> + 1 4 18 4 -1. + <_> + 7 4 6 4 3. + <_> + + <_> + 0 3 12 6 -1. + <_> + 0 3 6 3 2. + <_> + 6 6 6 3 2. + <_> + + <_> + 12 1 8 10 -1. + <_> + 16 1 4 5 2. + <_> + 12 6 4 5 2. + <_> + + <_> + 0 1 8 10 -1. + <_> + 0 1 4 5 2. + <_> + 4 6 4 5 2. + <_> + + <_> + 6 12 8 8 -1. + <_> + 10 12 4 4 2. + <_> + 6 16 4 4 2. + <_> + + <_> + 5 8 8 12 -1. + <_> + 5 8 4 6 2. + <_> + 9 14 4 6 2. + <_> + + <_> + 8 5 6 7 -1. + <_> + 10 5 2 7 3. + <_> + + <_> + 3 11 14 6 -1. + <_> + 3 11 7 3 2. + <_> + 10 14 7 3 2. + <_> + + <_> + 9 5 6 7 -1. + <_> + 11 5 2 7 3. + <_> + + <_> + 5 5 6 7 -1. + <_> + 7 5 2 7 3. + <_> + + <_> + 11 4 4 12 -1. + <_> + 11 4 2 12 2. + <_> + + <_> + 7 4 5 14 -1. + <_> + 7 11 5 7 2. + <_> + + <_> + 14 0 6 10 -1. + <_> + 17 0 3 5 2. + <_> + 14 5 3 5 2. + <_> + + <_> + 5 4 4 12 -1. + <_> + 7 4 2 12 2. + <_> + + <_> + 4 11 12 7 -1. + <_> + 4 11 6 7 2. + <_> + + <_> + 1 13 13 3 -1. + <_> + 1 14 13 1 3. + <_> + + <_> + 5 6 12 6 -1. + <_> + 11 6 6 3 2. + <_> + 5 9 6 3 2. + <_> + + <_> + 3 11 14 4 -1. + <_> + 3 11 7 2 2. + <_> + 10 13 7 2 2. + <_> + + <_> + 14 0 6 10 -1. + <_> + 17 0 3 5 2. + <_> + 14 5 3 5 2. + <_> + + <_> + 4 0 12 10 -1. + <_> + 4 0 6 5 2. + <_> + 10 5 6 5 2. + <_> + + <_> + 8 5 12 15 -1. + <_> + 8 5 6 15 2. + <_> + + <_> + 1 12 14 3 -1. + <_> + 1 13 14 1 3. + <_> + + <_> + 7 0 6 7 -1. + <_> + 9 0 2 7 3. + <_> + + <_> + 2 17 16 3 -1. + <_> + 10 17 8 3 2. + <_> + + <_> + 9 0 6 7 -1. + <_> + 11 0 2 7 3. + <_> + + <_> + 7 8 4 9 -1. + <_> + 9 8 2 9 2. + <_> + + <_> + 4 3 12 12 -1. + <_> + 10 3 6 6 2. + <_> + 4 9 6 6 2. + <_> + + <_> + 0 0 6 20 -1. + <_> + 3 0 3 20 2. + <_> + + <_> + 11 12 7 6 -1. + <_> + 11 14 7 2 3. + <_> + + <_> + 3 13 14 2 -1. + <_> + 3 14 14 1 2. + <_> + + <_> + 13 11 7 4 -1. + <_> + 13 13 7 2 2. + <_> + + <_> + 0 0 3 13 -1. + <_> + 1 0 1 13 3. + <_> + + <_> + 13 1 6 12 -1. + <_> + 15 1 2 12 3. + <_> + + <_> + 1 1 6 12 -1. + <_> + 3 1 2 12 3. + <_> + + <_> + 4 8 14 12 -1. + <_> + 4 12 14 4 3. + <_> + + <_> + 0 6 6 12 -1. + <_> + 3 6 3 12 2. + <_> + + <_> + 13 1 3 13 -1. + <_> + 14 1 1 13 3. + <_> + + <_> + 4 1 3 13 -1. + <_> + 5 1 1 13 3. + <_> + + <_> + 16 2 3 14 -1. + <_> + 17 2 1 14 3. + <_> + + <_> + 1 2 3 14 -1. + <_> + 2 2 1 14 3. + <_> + + <_> + 6 9 14 3 -1. + <_> + 6 10 14 1 3. + <_> + + <_> + 0 9 14 3 -1. + <_> + 0 10 14 1 3. + <_> + + <_> + 4 6 14 6 -1. + <_> + 11 6 7 3 2. + <_> + 4 9 7 3 2. + <_> + + <_> + 2 6 14 6 -1. + <_> + 2 6 7 3 2. + <_> + 9 9 7 3 2. + <_> + + <_> + 10 9 6 5 -1. + <_> + 10 9 3 5 2. + <_> + + <_> + 3 1 10 16 -1. + <_> + 3 1 5 8 2. + <_> + 8 9 5 8 2. + <_> + + <_> + 3 7 14 12 -1. + <_> + 10 7 7 6 2. + <_> + 3 13 7 6 2. + <_> + + <_> + 2 2 13 6 -1. + <_> + 2 5 13 3 2. + <_> + + <_> + 14 1 6 6 -1. + <_> + 14 4 6 3 2. + <_> + + <_> + 0 1 6 6 -1. + <_> + 0 4 6 3 2. + <_> + + <_> + 1 0 18 4 -1. + <_> + 7 0 6 4 3. + <_> + + <_> + 2 0 4 14 -1. + <_> + 4 0 2 14 2. + <_> + + <_> + 4 6 12 4 -1. + <_> + 8 6 4 4 3. + <_> + + <_> + 1 8 18 3 -1. + <_> + 7 8 6 3 3. + <_> + + <_> + 4 7 13 2 -1. + <_> + 4 8 13 1 2. + <_> + + <_> + 2 1 16 6 -1. + <_> + 2 1 8 3 2. + <_> + 10 4 8 3 2. + <_> + + <_> + 9 5 7 9 -1. + <_> + 9 8 7 3 3. + <_> + + <_> + 2 9 8 8 -1. + <_> + 2 9 4 4 2. + <_> + 6 13 4 4 2. + <_> + + <_> + 2 17 18 3 -1. + <_> + 8 17 6 3 3. + <_> + + <_> + 1 14 12 6 -1. + <_> + 1 14 6 3 2. + <_> + 7 17 6 3 2. + <_> + + <_> + 13 10 7 6 -1. + <_> + 13 12 7 2 3. + <_> + + <_> + 0 10 7 6 -1. + <_> + 0 12 7 2 3. + <_> + + <_> + 7 14 13 3 -1. + <_> + 7 15 13 1 3. + <_> + + <_> + 1 15 14 2 -1. + <_> + 1 16 14 1 2. + <_> + + <_> + 13 12 7 6 -1. + <_> + 13 14 7 2 3. + <_> + + <_> + 0 14 13 3 -1. + <_> + 0 15 13 1 3. + <_> + + <_> + 7 13 7 6 -1. + <_> + 7 15 7 2 3. + <_> + + <_> + 5 5 6 10 -1. + <_> + 5 5 3 5 2. + <_> + 8 10 3 5 2. + <_> + + <_> + 5 4 10 4 -1. + <_> + 5 6 10 2 2. + <_> + + <_> + 1 0 18 20 -1. + <_> + 7 0 6 20 3. + <_> + + <_> + 7 15 7 4 -1. + <_> + 7 17 7 2 2. + <_> + + <_> + 0 5 9 7 -1. + <_> + 3 5 3 7 3. + <_> + + <_> + 11 9 4 8 -1. + <_> + 11 13 4 4 2. + <_> + + <_> + 0 3 20 10 -1. + <_> + 0 8 20 5 2. + <_> + + <_> + 7 0 6 12 -1. + <_> + 9 0 2 12 3. + <_> + + <_> + 3 16 14 4 -1. + <_> + 3 18 14 2 2. + <_> + + <_> + 11 9 4 8 -1. + <_> + 11 13 4 4 2. + <_> + + <_> + 5 9 4 8 -1. + <_> + 5 13 4 4 2. + <_> + + <_> + 6 11 13 3 -1. + <_> + 6 12 13 1 3. + <_> + + <_> + 0 0 19 6 -1. + <_> + 0 2 19 2 3. + <_> + + <_> + 2 3 16 2 -1. + <_> + 2 4 16 1 2. + <_> + + <_> + 6 0 6 7 -1. + <_> + 8 0 2 7 3. + <_> + + <_> + 7 14 13 3 -1. + <_> + 7 15 13 1 3. + <_> + + <_> + 7 1 3 12 -1. + <_> + 7 7 3 6 2. + <_> + + <_> + 12 4 4 10 -1. + <_> + 12 9 4 5 2. + <_> + + <_> + 0 2 13 2 -1. + <_> + 0 3 13 1 2. + <_> + + <_> + 7 6 8 4 -1. + <_> + 7 6 4 4 2. + <_> + + <_> + 5 6 8 4 -1. + <_> + 9 6 4 4 2. + <_> + + <_> + 3 11 14 4 -1. + <_> + 10 11 7 2 2. + <_> + 3 13 7 2 2. + <_> + + <_> + 3 10 14 4 -1. + <_> + 3 10 7 2 2. + <_> + 10 12 7 2 2. + <_> + + <_> + 6 6 14 3 -1. + <_> + 6 7 14 1 3. + <_> + + <_> + 0 9 20 3 -1. + <_> + 0 10 20 1 3. + <_> + + <_> + 9 0 6 7 -1. + <_> + 11 0 2 7 3. + <_> + + <_> + 9 3 2 13 -1. + <_> + 10 3 1 13 2. + <_> + + <_> + 9 0 3 13 -1. + <_> + 10 0 1 13 3. + <_> + + <_> + 5 0 6 7 -1. + <_> + 7 0 2 7 3. + <_> + + <_> + 12 12 7 4 -1. + <_> + 12 14 7 2 2. + <_> + + <_> + 1 12 7 4 -1. + <_> + 1 14 7 2 2. + <_> + + <_> + 7 10 6 10 -1. + <_> + 10 10 3 5 2. + <_> + 7 15 3 5 2. + <_> + + <_> + 1 17 13 3 -1. + <_> + 1 18 13 1 3. + <_> + + <_> + 4 0 16 9 -1. + <_> + 4 0 8 9 2. + <_> + + <_> + 0 8 13 3 -1. + <_> + 0 9 13 1 3. + <_> + + <_> + 15 2 5 9 -1. + <_> + 15 5 5 3 3. + <_> + + <_> + 0 3 20 4 -1. + <_> + 0 3 10 2 2. + <_> + 10 5 10 2 2. + <_> + + <_> + 12 13 8 6 -1. + <_> + 12 15 8 2 3. + <_> + + <_> + 6 1 2 16 -1. + <_> + 7 1 1 16 2. + <_> + + <_> + 10 0 10 19 -1. + <_> + 10 0 5 19 2. + <_> + + <_> + 2 0 14 18 -1. + <_> + 9 0 7 18 2. + <_> + + <_> + 9 3 5 9 -1. + <_> + 9 6 5 3 3. + <_> + + <_> + 0 0 10 19 -1. + <_> + 5 0 5 19 2. + <_> + + <_> + 14 0 3 14 -1. + <_> + 15 0 1 14 3. + <_> + + <_> + 3 0 3 14 -1. + <_> + 4 0 1 14 3. + <_> + + <_> + 7 13 13 3 -1. + <_> + 7 14 13 1 3. + <_> + + <_> + 3 13 13 3 -1. + <_> + 3 14 13 1 3. + <_> + + <_> + 13 14 7 6 -1. + <_> + 13 16 7 2 3. + <_> + + <_> + 0 10 13 3 -1. + <_> + 0 11 13 1 3. + <_> + + <_> + 12 11 5 9 -1. + <_> + 12 14 5 3 3. + <_> + + <_> + 0 14 7 6 -1. + <_> + 0 16 7 2 3. + <_> + + <_> + 12 5 4 8 -1. + <_> + 12 9 4 4 2. + <_> + + <_> + 0 13 8 6 -1. + <_> + 0 15 8 2 3. + <_> + + <_> + 7 14 13 3 -1. + <_> + 7 15 13 1 3. + <_> + + <_> + 2 5 16 8 -1. + <_> + 2 5 8 4 2. + <_> + 10 9 8 4 2. + <_> + + <_> + 14 3 6 8 -1. + <_> + 16 3 2 8 3. + <_> + + <_> + 8 4 3 10 -1. + <_> + 8 9 3 5 2. + <_> + + <_> + 9 6 4 8 -1. + <_> + 9 10 4 4 2. + <_> + + <_> + 0 4 6 7 -1. + <_> + 2 4 2 7 3. + <_> + + <_> + 5 1 10 6 -1. + <_> + 5 4 10 3 2. + <_> + + <_> + 0 2 6 9 -1. + <_> + 0 5 6 3 3. + <_> + + <_> + 10 4 8 8 -1. + <_> + 14 4 4 4 2. + <_> + 10 8 4 4 2. + <_> + + <_> + 0 15 13 3 -1. + <_> + 0 16 13 1 3. + <_> + + <_> + 10 4 8 8 -1. + <_> + 14 4 4 4 2. + <_> + 10 8 4 4 2. + <_> + + <_> + 2 4 8 8 -1. + <_> + 2 4 4 4 2. + <_> + 6 8 4 4 2. + <_> + + <_> + 13 0 2 20 -1. + <_> + 13 0 1 20 2. + <_> + + <_> + 3 14 7 6 -1. + <_> + 3 16 7 2 3. + <_> + + <_> + 2 2 18 4 -1. + <_> + 8 2 6 4 3. + <_> + + <_> + 6 0 6 10 -1. + <_> + 6 0 3 5 2. + <_> + 9 5 3 5 2. + <_> + + <_> + 4 6 16 3 -1. + <_> + 4 6 8 3 2. + <_> + + <_> + 0 6 16 3 -1. + <_> + 8 6 8 3 2. + <_> + + <_> + 13 0 2 20 -1. + <_> + 13 0 1 20 2. + <_> + + <_> + 2 1 16 3 -1. + <_> + 2 2 16 1 3. + <_> + + <_> + 13 0 2 20 -1. + <_> + 13 0 1 20 2. + <_> + + <_> + 5 0 2 20 -1. + <_> + 6 0 1 20 2. + <_> + + <_> + 5 0 15 8 -1. + <_> + 10 0 5 8 3. + <_> + + <_> + 0 0 15 8 -1. + <_> + 5 0 5 8 3. + <_> + + <_> + 11 3 6 7 -1. + <_> + 13 3 2 7 3. + <_> + + <_> + 3 3 6 7 -1. + <_> + 5 3 2 7 3. + <_> + + <_> + 9 0 2 13 -1. + <_> + 9 0 1 13 2. + <_> + + <_> + 8 4 3 13 -1. + <_> + 9 4 1 13 3. + <_> + + <_> + 4 6 12 4 -1. + <_> + 8 6 4 4 3. + <_> + + <_> + 3 1 6 10 -1. + <_> + 3 1 3 5 2. + <_> + 6 6 3 5 2. + <_> + + <_> + 8 12 4 8 -1. + <_> + 8 16 4 4 2. + <_> + + <_> + 4 6 9 12 -1. + <_> + 4 12 9 6 2. + <_> + + <_> + 4 4 13 3 -1. + <_> + 4 5 13 1 3. + <_> + + <_> + 1 7 18 3 -1. + <_> + 1 8 18 1 3. + <_> + + <_> + 6 7 13 2 -1. + <_> + 6 8 13 1 2. + <_> + + <_> + 6 3 7 16 -1. + <_> + 6 11 7 8 2. + <_> + + <_> + 8 11 6 9 -1. + <_> + 10 11 2 9 3. + <_> + + <_> + 6 11 6 9 -1. + <_> + 8 11 2 9 3. + <_> + + <_> + 10 5 3 13 -1. + <_> + 11 5 1 13 3. + <_> + + <_> + 7 4 3 13 -1. + <_> + 8 4 1 13 3. + <_> + + <_> + 7 13 6 7 -1. + <_> + 9 13 2 7 3. + <_> + + <_> + 0 14 12 6 -1. + <_> + 0 14 6 3 2. + <_> + 6 17 6 3 2. + <_> + + <_> + 14 13 5 6 -1. + <_> + 14 16 5 3 2. + <_> + + <_> + 1 13 5 6 -1. + <_> + 1 16 5 3 2. + <_> + + <_> + 4 5 13 2 -1. + <_> + 4 6 13 1 2. + <_> + + <_> + 0 10 20 6 -1. + <_> + 0 10 10 3 2. + <_> + 10 13 10 3 2. + <_> + + <_> + 8 5 4 14 -1. + <_> + 10 5 2 7 2. + <_> + 8 12 2 7 2. + <_> + + <_> + 6 8 8 8 -1. + <_> + 6 8 4 4 2. + <_> + 10 12 4 4 2. + <_> + + <_> + 13 10 5 9 -1. + <_> + 13 13 5 3 3. + <_> + + <_> + 5 0 10 12 -1. + <_> + 5 0 5 6 2. + <_> + 10 6 5 6 2. + <_> + + <_> + 10 10 6 7 -1. + <_> + 12 10 2 7 3. + <_> + + <_> + 2 10 5 9 -1. + <_> + 2 13 5 3 3. + <_> + + <_> + 0 0 20 2 -1. + <_> + 0 0 10 2 2. + <_> + + <_> + 1 0 4 18 -1. + <_> + 3 0 2 18 2. + <_> + + <_> + 15 2 5 6 -1. + <_> + 15 5 5 3 2. + <_> + + <_> + 2 4 14 6 -1. + <_> + 2 4 7 3 2. + <_> + 9 7 7 3 2. + <_> + + <_> + 15 1 5 9 -1. + <_> + 15 4 5 3 3. + <_> + + <_> + 0 1 5 9 -1. + <_> + 0 4 5 3 3. + <_> + + <_> + 8 14 10 6 -1. + <_> + 13 14 5 3 2. + <_> + 8 17 5 3 2. + <_> + + <_> + 3 3 5 12 -1. + <_> + 3 9 5 6 2. + <_> + + <_> + 2 4 17 15 -1. + <_> + 2 9 17 5 3. + <_> + + <_> + 3 0 13 12 -1. + <_> + 3 4 13 4 3. + <_> + + <_> + 2 17 18 3 -1. + <_> + 2 18 18 1 3. + <_> + + <_> + 0 14 13 3 -1. + <_> + 0 15 13 1 3. + <_> + + <_> + 2 0 18 6 -1. + <_> + 8 0 6 6 3. + <_> + + <_> + 0 0 18 9 -1. + <_> + 6 0 6 9 3. + <_> + + <_> + 10 2 6 7 -1. + <_> + 12 2 2 7 3. + <_> + + <_> + 1 6 15 4 -1. + <_> + 6 6 5 4 3. + <_> + + <_> + 5 1 12 9 -1. + <_> + 5 4 12 3 3. + <_> + + <_> + 6 7 4 12 -1. + <_> + 6 13 4 6 2. + <_> + + <_> + 10 6 6 10 -1. + <_> + 12 6 2 10 3. + <_> + + <_> + 3 12 9 4 -1. + <_> + 3 14 9 2 2. + <_> + + <_> + 7 8 13 3 -1. + <_> + 7 9 13 1 3. + <_> + + <_> + 4 3 5 9 -1. + <_> + 4 6 5 3 3. + <_> + + <_> + 1 7 18 5 -1. + <_> + 7 7 6 5 3. + <_> + + <_> + 6 4 6 8 -1. + <_> + 8 4 2 8 3. + <_> + + <_> + 10 1 6 8 -1. + <_> + 12 1 2 8 3. + <_> + + <_> + 4 2 6 7 -1. + <_> + 6 2 2 7 3. + <_> + + <_> + 7 0 13 2 -1. + <_> + 7 1 13 1 2. + <_> + + <_> + 0 4 18 5 -1. + <_> + 6 4 6 5 3. + <_> + + <_> + 10 5 6 11 -1. + <_> + 12 5 2 11 3. + <_> + + <_> + 3 5 4 11 -1. + <_> + 5 5 2 11 2. + <_> + + <_> + 9 9 9 10 -1. + <_> + 12 9 3 10 3. + <_> + + <_> + 2 9 9 10 -1. + <_> + 5 9 3 10 3. + <_> + + <_> + 7 7 6 9 -1. + <_> + 9 7 2 9 3. + <_> + + <_> + 5 0 6 15 -1. + <_> + 7 0 2 15 3. + <_> + + <_> + 6 12 10 6 -1. + <_> + 11 12 5 3 2. + <_> + 6 15 5 3 2. + <_> + + <_> + 0 17 15 3 -1. + <_> + 5 17 5 3 3. + <_> + + <_> + 11 10 6 10 -1. + <_> + 14 10 3 5 2. + <_> + 11 15 3 5 2. + <_> + + <_> + 4 12 10 6 -1. + <_> + 4 12 5 3 2. + <_> + 9 15 5 3 2. + <_> + + <_> + 0 0 18 5 -1. + <_> + 6 0 6 5 3. + <_> + + <_> + 2 1 18 6 -1. + <_> + 2 3 18 2 3. + <_> + + <_> + 2 10 9 6 -1. + <_> + 2 12 9 2 3. + <_> + + <_> + 9 4 6 5 -1. + <_> + 9 4 3 5 2. + <_> + + <_> + 5 4 6 5 -1. + <_> + 8 4 3 5 2. + <_> + + <_> + 7 12 6 7 -1. + <_> + 9 12 2 7 3. + <_> + + <_> + 4 10 5 6 -1. + <_> + 4 13 5 3 2. + <_> + + <_> + 12 2 6 10 -1. + <_> + 15 2 3 5 2. + <_> + 12 7 3 5 2. + <_> + + <_> + 2 10 14 4 -1. + <_> + 2 10 7 2 2. + <_> + 9 12 7 2 2. + <_> + + <_> + 4 6 12 8 -1. + <_> + 4 10 12 4 2. + <_> + + <_> + 2 2 6 10 -1. + <_> + 2 2 3 5 2. + <_> + 5 7 3 5 2. + <_> + + <_> + 6 15 14 2 -1. + <_> + 6 16 14 1 2. + <_> + + <_> + 0 0 6 5 -1. + <_> + 3 0 3 5 2. + <_> + + <_> + 6 2 9 5 -1. + <_> + 9 2 3 5 3. + <_> + + <_> + 1 14 8 6 -1. + <_> + 1 16 8 2 3. + <_> + + <_> + 15 4 4 16 -1. + <_> + 17 4 2 8 2. + <_> + 15 12 2 8 2. + <_> + + <_> + 5 0 6 7 -1. + <_> + 7 0 2 7 3. + <_> + + <_> + 4 6 13 3 -1. + <_> + 4 7 13 1 3. + <_> + + <_> + 0 2 5 9 -1. + <_> + 0 5 5 3 3. + <_> + + <_> + 2 8 18 2 -1. + <_> + 2 9 18 1 2. + <_> + + <_> + 2 0 14 2 -1. + <_> + 2 1 14 1 2. + <_> + + <_> + 11 10 4 7 -1. + <_> + 11 10 2 7 2. + <_> + + <_> + 4 14 12 6 -1. + <_> + 8 14 4 6 3. + <_> + + <_> + 11 10 4 7 -1. + <_> + 11 10 2 7 2. + <_> + + <_> + 5 10 4 7 -1. + <_> + 7 10 2 7 2. + <_> + + <_> + 9 6 2 14 -1. + <_> + 9 13 2 7 2. + <_> + + <_> + 2 17 15 3 -1. + <_> + 2 18 15 1 3. + <_> + + <_> + 16 1 4 7 -1. + <_> + 16 1 2 7 2. + <_> + + <_> + 5 13 4 7 -1. + <_> + 7 13 2 7 2. + <_> + + <_> + 14 1 6 7 -1. + <_> + 16 1 2 7 3. + <_> + + <_> + 0 1 6 7 -1. + <_> + 2 1 2 7 3. + <_> + + <_> + 4 3 13 2 -1. + <_> + 4 4 13 1 2. + <_> + + <_> + 0 2 6 9 -1. + <_> + 0 5 6 3 3. + <_> + + <_> + 13 11 7 6 -1. + <_> + 13 13 7 2 3. + <_> + + <_> + 0 2 6 14 -1. + <_> + 2 2 2 14 3. + <_> + + <_> + 13 0 6 13 -1. + <_> + 15 0 2 13 3. + <_> + + <_> + 1 0 6 13 -1. + <_> + 3 0 2 13 3. + <_> + + <_> + 0 3 20 4 -1. + <_> + 10 3 10 2 2. + <_> + 0 5 10 2 2. + <_> + + <_> + 0 7 12 11 -1. + <_> + 6 7 6 11 2. + <_> + + <_> + 7 11 7 6 -1. + <_> + 7 13 7 2 3. + <_> + + <_> + 0 6 10 6 -1. + <_> + 0 6 5 3 2. + <_> + 5 9 5 3 2. + <_> + + <_> + 10 7 4 12 -1. + <_> + 10 7 2 12 2. + <_> + + <_> + 4 7 11 4 -1. + <_> + 4 9 11 2 2. + <_> + + <_> + 5 7 10 6 -1. + <_> + 10 7 5 3 2. + <_> + 5 10 5 3 2. + <_> + + <_> + 0 5 18 10 -1. + <_> + 0 5 9 5 2. + <_> + 9 10 9 5 2. + <_> + + <_> + 0 0 20 4 -1. + <_> + 10 0 10 2 2. + <_> + 0 2 10 2 2. + <_> + + <_> + 2 4 13 3 -1. + <_> + 2 5 13 1 3. + <_> + + <_> + 13 11 7 6 -1. + <_> + 13 13 7 2 3. + <_> + + <_> + 2 4 13 2 -1. + <_> + 2 5 13 1 2. + <_> + + <_> + 7 0 13 3 -1. + <_> + 7 1 13 1 3. + <_> + + <_> + 1 0 6 10 -1. + <_> + 1 0 3 5 2. + <_> + 4 5 3 5 2. + <_> + + <_> + 10 6 9 14 -1. + <_> + 13 6 3 14 3. + <_> + + <_> + 1 6 9 14 -1. + <_> + 4 6 3 14 3. + <_> + + <_> + 8 1 5 10 -1. + <_> + 8 6 5 5 2. + <_> + + <_> + 0 3 20 8 -1. + <_> + 0 7 20 4 2. + <_> + + <_> + 4 9 14 2 -1. + <_> + 4 10 14 1 2. + <_> + + <_> + 1 12 13 3 -1. + <_> + 1 13 13 1 3. + <_> + + <_> + 7 13 13 3 -1. + <_> + 7 14 13 1 3. + <_> + + <_> + 3 13 14 6 -1. + <_> + 3 15 14 2 3. + <_> + + <_> + 6 11 13 9 -1. + <_> + 6 14 13 3 3. + <_> + + <_> + 1 11 13 9 -1. + <_> + 1 14 13 3 3. + <_> + + <_> + 8 5 4 7 -1. + <_> + 8 5 2 7 2. + <_> + + <_> + 3 5 12 4 -1. + <_> + 7 5 4 4 3. + <_> + + <_> + 5 6 10 3 -1. + <_> + 5 6 5 3 2. + <_> + + <_> + 0 0 18 4 -1. + <_> + 6 0 6 4 3. + <_> + + <_> + 9 1 4 10 -1. + <_> + 9 6 4 5 2. + <_> + + <_> + 0 2 13 2 -1. + <_> + 0 3 13 1 2. + <_> + + <_> + 7 1 8 8 -1. + <_> + 11 1 4 4 2. + <_> + 7 5 4 4 2. + <_> + + <_> + 5 7 6 12 -1. + <_> + 5 7 3 6 2. + <_> + 8 13 3 6 2. + <_> + + <_> + 10 0 6 7 -1. + <_> + 12 0 2 7 3. + <_> + + <_> + 0 14 20 3 -1. + <_> + 0 15 20 1 3. + <_> + + <_> + 10 0 6 7 -1. + <_> + 12 0 2 7 3. + <_> + + <_> + 3 0 9 5 -1. + <_> + 6 0 3 5 3. + <_> + + <_> + 8 5 6 7 -1. + <_> + 10 5 2 7 3. + <_> + + <_> + 5 6 6 7 -1. + <_> + 7 6 2 7 3. + <_> + + <_> + 9 1 3 19 -1. + <_> + 10 1 1 19 3. + <_> + + <_> + 0 11 7 4 -1. + <_> + 0 13 7 2 2. + <_> + + <_> + 7 13 13 3 -1. + <_> + 7 14 13 1 3. + <_> + + <_> + 0 11 5 6 -1. + <_> + 0 14 5 3 2. + <_> + + <_> + 9 2 10 18 -1. + <_> + 14 2 5 9 2. + <_> + 9 11 5 9 2. + <_> + + <_> + 2 16 8 4 -1. + <_> + 6 16 4 4 2. + <_> + + <_> + 7 4 6 8 -1. + <_> + 9 4 2 8 3. + <_> + + <_> + 7 0 2 19 -1. + <_> + 8 0 1 19 2. + <_> + + <_> + 8 0 6 7 -1. + <_> + 10 0 2 7 3. + <_> + + <_> + 0 0 9 5 -1. + <_> + 3 0 3 5 3. + <_> + + <_> + 18 2 2 18 -1. + <_> + 18 2 1 18 2. + <_> + + <_> + 0 2 5 9 -1. + <_> + 0 5 5 3 3. + <_> + + <_> + 18 2 2 18 -1. + <_> + 18 2 1 18 2. + <_> + + <_> + 0 2 2 18 -1. + <_> + 1 2 1 18 2. + <_> + + <_> + 7 4 7 15 -1. + <_> + 7 9 7 5 3. + <_> + + <_> + 7 13 6 6 -1. + <_> + 7 16 6 3 2. + <_> + + <_> + 8 14 10 6 -1. + <_> + 13 14 5 3 2. + <_> + 8 17 5 3 2. + <_> + + <_> + 2 14 10 6 -1. + <_> + 2 14 5 3 2. + <_> + 7 17 5 3 2. + <_> + + <_> + 7 1 13 3 -1. + <_> + 7 2 13 1 3. + <_> + + <_> + 0 12 7 6 -1. + <_> + 0 14 7 2 3. + <_> + + <_> + 17 0 3 16 -1. + <_> + 18 0 1 16 3. + <_> + + <_> + 0 4 3 14 -1. + <_> + 1 4 1 14 3. + <_> + + <_> + 14 8 6 5 -1. + <_> + 14 8 3 5 2. + <_> + + <_> + 0 8 6 5 -1. + <_> + 3 8 3 5 2. + <_> + + <_> + 1 13 18 4 -1. + <_> + 10 13 9 2 2. + <_> + 1 15 9 2 2. + <_> + + <_> + 7 0 5 9 -1. + <_> + 7 3 5 3 3. + <_> + + <_> + 6 9 9 5 -1. + <_> + 9 9 3 5 3. + <_> + + <_> + 7 3 3 13 -1. + <_> + 8 3 1 13 3. + <_> + + <_> + 9 0 6 7 -1. + <_> + 11 0 2 7 3. + <_> + + <_> + 5 0 6 10 -1. + <_> + 5 0 3 5 2. + <_> + 8 5 3 5 2. + <_> + + <_> + 9 0 6 7 -1. + <_> + 11 0 2 7 3. + <_> + + <_> + 3 0 14 8 -1. + <_> + 3 4 14 4 2. + <_> + + <_> + 8 1 5 10 -1. + <_> + 8 6 5 5 2. + <_> + + <_> + 5 0 6 7 -1. + <_> + 7 0 2 7 3. + <_> + + <_> + 8 5 6 7 -1. + <_> + 10 5 2 7 3. + <_> + + <_> + 2 18 15 2 -1. + <_> + 2 19 15 1 2. + <_> + + <_> + 8 7 6 7 -1. + <_> + 10 7 2 7 3. + <_> + + <_> + 0 1 13 3 -1. + <_> + 0 2 13 1 3. + <_> + + <_> + 13 11 6 6 -1. + <_> + 13 11 3 6 2. + <_> + + <_> + 0 7 12 4 -1. + <_> + 0 9 12 2 2. + <_> + + <_> + 13 11 6 6 -1. + <_> + 13 11 3 6 2. + <_> + + <_> + 5 6 10 3 -1. + <_> + 10 6 5 3 2. + <_> + + <_> + 8 5 6 7 -1. + <_> + 10 5 2 7 3. + <_> + + <_> + 3 16 14 4 -1. + <_> + 3 16 7 2 2. + <_> + 10 18 7 2 2. + <_> + + <_> + 13 11 6 6 -1. + <_> + 13 11 3 6 2. + <_> + + <_> + 0 17 18 3 -1. + <_> + 6 17 6 3 3. + <_> + + <_> + 9 6 6 12 -1. + <_> + 9 6 3 12 2. + <_> + + <_> + 0 8 18 4 -1. + <_> + 6 8 6 4 3. + <_> + + <_> + 14 1 6 10 -1. + <_> + 16 1 2 10 3. + <_> + + <_> + 6 9 8 10 -1. + <_> + 6 9 4 5 2. + <_> + 10 14 4 5 2. + <_> + + <_> + 14 1 6 10 -1. + <_> + 16 1 2 10 3. + <_> + + <_> + 0 12 8 6 -1. + <_> + 0 14 8 2 3. + <_> + + <_> + 5 13 13 3 -1. + <_> + 5 14 13 1 3. + <_> + + <_> + 1 14 5 6 -1. + <_> + 1 17 5 3 2. + <_> + + <_> + 13 11 6 6 -1. + <_> + 13 11 3 6 2. + <_> + + <_> + 1 11 6 6 -1. + <_> + 4 11 3 6 2. + <_> + + <_> + 4 7 15 7 -1. + <_> + 9 7 5 7 3. + <_> + + <_> + 3 6 12 11 -1. + <_> + 7 6 4 11 3. + <_> + + <_> + 8 4 6 7 -1. + <_> + 10 4 2 7 3. + <_> + + <_> + 6 4 6 7 -1. + <_> + 8 4 2 7 3. + <_> + + <_> + 11 2 2 15 -1. + <_> + 11 2 1 15 2. + <_> + + <_> + 0 1 6 10 -1. + <_> + 2 1 2 10 3. + <_> + + <_> + 10 0 10 6 -1. + <_> + 15 0 5 3 2. + <_> + 10 3 5 3 2. + <_> + + <_> + 1 0 15 3 -1. + <_> + 1 1 15 1 3. + <_> + + <_> + 7 0 13 3 -1. + <_> + 7 1 13 1 3. + <_> + + <_> + 0 0 10 6 -1. + <_> + 0 0 5 3 2. + <_> + 5 3 5 3 2. + <_> + + <_> + 9 6 4 12 -1. + <_> + 9 6 2 12 2. + <_> + + <_> + 7 6 4 12 -1. + <_> + 9 6 2 12 2. + <_> + + <_> + 9 0 6 18 -1. + <_> + 12 0 3 9 2. + <_> + 9 9 3 9 2. + <_> + + <_> + 3 9 14 2 -1. + <_> + 10 9 7 2 2. + <_> + + <_> + 13 10 7 6 -1. + <_> + 13 12 7 2 3. + <_> + + <_> + 6 2 4 12 -1. + <_> + 6 6 4 4 3. + <_> + + <_> + 3 1 14 6 -1. + <_> + 3 1 7 6 2. + <_> + + <_> + 0 8 13 3 -1. + <_> + 0 9 13 1 3. + <_> + + <_> + 9 4 7 4 -1. + <_> + 9 6 7 2 2. + <_> + + <_> + 0 9 15 3 -1. + <_> + 0 10 15 1 3. + <_> + + <_> + 7 0 8 8 -1. + <_> + 11 0 4 4 2. + <_> + 7 4 4 4 2. + <_> + + <_> + 0 3 20 4 -1. + <_> + 0 3 10 2 2. + <_> + 10 5 10 2 2. + <_> + + <_> + 10 2 10 3 -1. + <_> + 10 2 5 3 2. + <_> + + <_> + 4 4 7 4 -1. + <_> + 4 6 7 2 2. + <_> + + <_> + 10 2 10 3 -1. + <_> + 10 2 5 3 2. + <_> + + <_> + 2 11 12 6 -1. + <_> + 2 11 6 3 2. + <_> + 8 14 6 3 2. + <_> + + <_> + 0 0 20 10 -1. + <_> + 0 5 20 5 2. + <_> + + <_> + 0 14 13 3 -1. + <_> + 0 15 13 1 3. + <_> + + <_> + 12 13 8 6 -1. + <_> + 12 15 8 2 3. + <_> + + <_> + 0 15 13 3 -1. + <_> + 0 16 13 1 3. + <_> + + <_> + 12 13 8 6 -1. + <_> + 12 15 8 2 3. + <_> + + <_> + 0 13 8 6 -1. + <_> + 0 15 8 2 3. + <_> + + <_> + 12 0 8 12 -1. + <_> + 16 0 4 6 2. + <_> + 12 6 4 6 2. + <_> + + <_> + 7 1 6 14 -1. + <_> + 7 8 6 7 2. + <_> + + <_> + 5 10 13 3 -1. + <_> + 5 11 13 1 3. + <_> + + <_> + 7 7 6 9 -1. + <_> + 7 10 6 3 3. + <_> + + <_> + 5 6 13 3 -1. + <_> + 5 7 13 1 3. + <_> + + <_> + 2 4 8 8 -1. + <_> + 2 4 4 4 2. + <_> + 6 8 4 4 2. + <_> + + <_> + 11 4 8 16 -1. + <_> + 15 4 4 8 2. + <_> + 11 12 4 8 2. + <_> + + <_> + 1 4 8 16 -1. + <_> + 1 4 4 8 2. + <_> + 5 12 4 8 2. + <_> + + <_> + 11 10 4 8 -1. + <_> + 11 14 4 4 2. + <_> + + <_> + 6 10 8 8 -1. + <_> + 6 10 4 4 2. + <_> + 10 14 4 4 2. + <_> + + <_> + 4 0 12 8 -1. + <_> + 4 4 12 4 2. + <_> + + <_> + 5 1 8 6 -1. + <_> + 5 4 8 3 2. + <_> + + <_> + 5 2 15 2 -1. + <_> + 5 3 15 1 2. + <_> + + <_> + 1 11 16 4 -1. + <_> + 1 11 8 2 2. + <_> + 9 13 8 2 2. + <_> + + <_> + 10 2 10 3 -1. + <_> + 10 2 5 3 2. + <_> + + <_> + 1 0 10 6 -1. + <_> + 1 0 5 3 2. + <_> + 6 3 5 3 2. + <_> + + <_> + 10 2 10 3 -1. + <_> + 10 2 5 3 2. + <_> + + <_> + 0 5 7 6 -1. + <_> + 0 7 7 2 3. + <_> + + <_> + 15 0 5 9 -1. + <_> + 15 3 5 3 3. + <_> + + <_> + 1 1 18 8 -1. + <_> + 1 1 9 4 2. + <_> + 10 5 9 4 2. + <_> + + <_> + 16 2 4 18 -1. + <_> + 18 2 2 9 2. + <_> + 16 11 2 9 2. + <_> + + <_> + 0 15 14 4 -1. + <_> + 0 15 7 2 2. + <_> + 7 17 7 2 2. + <_> + + <_> + 16 2 4 18 -1. + <_> + 18 2 2 9 2. + <_> + 16 11 2 9 2. + <_> + + <_> + 0 2 4 18 -1. + <_> + 0 2 2 9 2. + <_> + 2 11 2 9 2. + <_> + + <_> + 10 6 6 11 -1. + <_> + 10 6 3 11 2. + <_> + + <_> + 0 6 20 2 -1. + <_> + 10 6 10 2 2. + <_> + + <_> + 7 14 12 6 -1. + <_> + 13 14 6 3 2. + <_> + 7 17 6 3 2. + <_> + + <_> + 1 14 12 6 -1. + <_> + 1 14 6 3 2. + <_> + 7 17 6 3 2. + <_> + + <_> + 8 0 12 20 -1. + <_> + 8 0 6 20 2. + <_> + + <_> + 0 0 12 20 -1. + <_> + 6 0 6 20 2. + <_> + + <_> + 7 2 6 7 -1. + <_> + 9 2 2 7 3. + <_> + + <_> + 12 2 8 4 -1. + <_> + 12 2 4 4 2. + <_> + + <_> + 4 7 12 4 -1. + <_> + 4 9 12 2 2. + <_> + + <_> + 13 1 6 6 -1. + <_> + 13 1 3 6 2. + <_> + + <_> + 0 3 6 7 -1. + <_> + 3 3 3 7 2. + <_> + + <_> + 8 12 10 8 -1. + <_> + 13 12 5 4 2. + <_> + 8 16 5 4 2. + <_> + + <_> + 2 9 12 10 -1. + <_> + 2 9 6 5 2. + <_> + 8 14 6 5 2. + <_> + + <_> + 6 10 8 8 -1. + <_> + 6 14 8 4 2. + <_> + + <_> + 1 1 8 6 -1. + <_> + 1 3 8 2 3. + <_> + + <_> + 7 11 13 3 -1. + <_> + 7 12 13 1 3. + <_> + + <_> + 0 1 18 4 -1. + <_> + 0 1 9 2 2. + <_> + 9 3 9 2 2. + <_> + + <_> + 10 1 6 8 -1. + <_> + 12 1 2 8 3. + <_> + + <_> + 4 1 6 8 -1. + <_> + 6 1 2 8 3. + <_> + + <_> + 12 5 3 10 -1. + <_> + 12 10 3 5 2. + <_> + + <_> + 7 1 6 16 -1. + <_> + 7 9 6 8 2. + <_> + + <_> + 14 0 5 8 -1. + <_> + 14 4 5 4 2. + <_> + + <_> + 5 5 3 10 -1. + <_> + 5 10 3 5 2. + <_> + + <_> + 13 11 7 6 -1. + <_> + 13 13 7 2 3. + <_> + + <_> + 0 11 7 6 -1. + <_> + 0 13 7 2 3. + <_> + + <_> + 7 14 13 3 -1. + <_> + 7 15 13 1 3. + <_> + + <_> + 3 14 14 4 -1. + <_> + 3 14 7 2 2. + <_> + 10 16 7 2 2. + <_> + + <_> + 9 6 3 13 -1. + <_> + 10 6 1 13 3. + <_> + + <_> + 8 6 3 13 -1. + <_> + 9 6 1 13 3. + <_> + + <_> + 14 0 5 8 -1. + <_> + 14 4 5 4 2. + <_> + + <_> + 1 0 5 8 -1. + <_> + 1 4 5 4 2. + <_> + + <_> + 14 13 6 6 -1. + <_> + 14 16 6 3 2. + <_> + + <_> + 0 0 19 3 -1. + <_> + 0 1 19 1 3. + <_> + + <_> + 10 12 8 8 -1. + <_> + 14 12 4 4 2. + <_> + 10 16 4 4 2. + <_> + + <_> + 2 12 8 8 -1. + <_> + 2 12 4 4 2. + <_> + 6 16 4 4 2. + <_> + + <_> + 3 8 15 3 -1. + <_> + 3 9 15 1 3. + <_> + + <_> + 5 2 4 13 -1. + <_> + 7 2 2 13 2. + <_> + + <_> + 3 9 17 3 -1. + <_> + 3 10 17 1 3. + <_> + + <_> + 2 4 13 3 -1. + <_> + 2 5 13 1 3. + <_> + + <_> + 12 0 6 13 -1. + <_> + 14 0 2 13 3. + <_> + + <_> + 5 5 6 7 -1. + <_> + 7 5 2 7 3. + <_> + + <_> + 9 12 9 6 -1. + <_> + 12 12 3 6 3. + <_> + + <_> + 5 9 10 6 -1. + <_> + 5 9 5 3 2. + <_> + 10 12 5 3 2. + <_> + + <_> + 3 10 14 4 -1. + <_> + 10 10 7 2 2. + <_> + 3 12 7 2 2. + <_> + + <_> + 1 0 8 6 -1. + <_> + 1 2 8 2 3. + <_> + + <_> + 6 0 9 5 -1. + <_> + 9 0 3 5 3. + <_> + + <_> + 0 14 13 3 -1. + <_> + 0 15 13 1 3. + <_> + + <_> + 11 13 9 6 -1. + <_> + 11 15 9 2 3. + <_> + + <_> + 0 13 9 6 -1. + <_> + 0 15 9 2 3. + <_> + + <_> + 4 1 13 6 -1. + <_> + 4 4 13 3 2. + <_> + + <_> + 0 2 20 6 -1. + <_> + 0 5 20 3 2. + <_> + + <_> + 8 2 4 12 -1. + <_> + 8 6 4 4 3. + <_> + + <_> + 2 6 15 8 -1. + <_> + 7 6 5 8 3. + <_> + + <_> + 12 11 8 4 -1. + <_> + 12 13 8 2 2. + <_> + + <_> + 0 11 8 4 -1. + <_> + 0 13 8 2 2. + <_> + + <_> + 2 1 18 4 -1. + <_> + 8 1 6 4 3. + <_> + + <_> + 5 5 10 6 -1. + <_> + 5 7 10 2 3. + <_> + + <_> + 6 10 8 8 -1. + <_> + 10 10 4 4 2. + <_> + 6 14 4 4 2. + <_> + + <_> + 7 0 3 20 -1. + <_> + 8 0 1 20 3. + <_> + + <_> + 7 8 13 3 -1. + <_> + 7 9 13 1 3. + <_> + + <_> + 0 0 20 2 -1. + <_> + 10 0 10 2 2. + <_> + + <_> + 3 4 14 2 -1. + <_> + 3 4 7 2 2. + <_> + + <_> + 0 0 5 9 -1. + <_> + 0 3 5 3 3. + <_> + + <_> + 7 11 13 3 -1. + <_> + 7 12 13 1 3. + <_> + + <_> + 0 6 8 14 -1. + <_> + 4 6 4 14 2. + <_> + + <_> + 9 13 9 5 -1. + <_> + 12 13 3 5 3. + <_> + + <_> + 2 13 9 5 -1. + <_> + 5 13 3 5 3. + <_> + + <_> + 10 1 4 7 -1. + <_> + 10 1 2 7 2. + <_> + + <_> + 6 1 4 7 -1. + <_> + 8 1 2 7 2. + <_> + + <_> + 12 8 6 8 -1. + <_> + 12 8 3 8 2. + <_> + + <_> + 8 12 4 8 -1. + <_> + 8 16 4 4 2. + <_> + + <_> + 11 12 8 8 -1. + <_> + 15 12 4 4 2. + <_> + 11 16 4 4 2. + <_> + + <_> + 1 12 8 8 -1. + <_> + 1 12 4 4 2. + <_> + 5 16 4 4 2. + <_> + + <_> + 12 8 6 5 -1. + <_> + 12 8 3 5 2. + <_> + + <_> + 2 8 6 5 -1. + <_> + 5 8 3 5 2. + <_> + + <_> + 4 5 12 6 -1. + <_> + 10 5 6 3 2. + <_> + 4 8 6 3 2. + <_> + + <_> + 2 9 10 3 -1. + <_> + 7 9 5 3 2. + <_> + + <_> + 10 3 8 8 -1. + <_> + 14 3 4 4 2. + <_> + 10 7 4 4 2. + <_> + + <_> + 2 3 8 8 -1. + <_> + 2 3 4 4 2. + <_> + 6 7 4 4 2. + <_> + + <_> + 2 2 18 3 -1. + <_> + 8 2 6 3 3. + <_> + + <_> + 4 1 8 8 -1. + <_> + 4 1 4 4 2. + <_> + 8 5 4 4 2. + <_> + + <_> + 10 11 4 9 -1. + <_> + 10 11 2 9 2. + <_> + + <_> + 0 13 15 7 -1. + <_> + 5 13 5 7 3. + <_> + + <_> + 10 0 10 20 -1. + <_> + 10 0 5 20 2. + <_> + + <_> + 0 0 10 20 -1. + <_> + 5 0 5 20 2. + <_> + + <_> + 14 0 6 6 -1. + <_> + 14 0 3 6 2. + <_> + + <_> + 6 5 6 7 -1. + <_> + 8 5 2 7 3. + <_> + + <_> + 14 1 3 14 -1. + <_> + 15 1 1 14 3. + <_> + + <_> + 0 2 18 3 -1. + <_> + 6 2 6 3 3. + <_> + + <_> + 10 2 6 7 -1. + <_> + 12 2 2 7 3. + <_> + + <_> + 4 2 6 7 -1. + <_> + 6 2 2 7 3. + <_> + + <_> + 14 0 6 6 -1. + <_> + 14 0 3 6 2. + <_> + + <_> + 0 0 6 6 -1. + <_> + 3 0 3 6 2. + <_> + + <_> + 8 0 6 7 -1. + <_> + 10 0 2 7 3. + <_> + + <_> + 0 4 16 10 -1. + <_> + 0 9 16 5 2. + <_> + + <_> + 6 15 13 3 -1. + <_> + 6 16 13 1 3. + <_> + + <_> + 2 3 13 2 -1. + <_> + 2 4 13 1 2. + <_> + + <_> + 5 0 11 8 -1. + <_> + 5 4 11 4 2. + <_> + + <_> + 1 6 3 10 -1. + <_> + 1 11 3 5 2. + <_> + + <_> + 7 8 13 3 -1. + <_> + 7 9 13 1 3. + <_> + + <_> + 0 8 13 3 -1. + <_> + 0 9 13 1 3. + <_> + + <_> + 14 1 4 7 -1. + <_> + 14 1 2 7 2. + <_> + + <_> + 1 14 8 6 -1. + <_> + 1 16 8 2 3. + <_> + + <_> + 7 13 13 3 -1. + <_> + 7 14 13 1 3. + <_> + + <_> + 1 13 13 3 -1. + <_> + 1 14 13 1 3. + <_> + + <_> + 14 1 4 7 -1. + <_> + 14 1 2 7 2. + <_> + + <_> + 2 1 4 7 -1. + <_> + 4 1 2 7 2. + <_> + + <_> + 8 12 4 8 -1. + <_> + 8 16 4 4 2. + <_> + + <_> + 1 14 9 6 -1. + <_> + 1 16 9 2 3. + <_> + + <_> + 10 9 6 7 -1. + <_> + 12 9 2 7 3. + <_> + + <_> + 4 9 6 7 -1. + <_> + 6 9 2 7 3. + <_> + + <_> + 10 14 10 6 -1. + <_> + 15 14 5 3 2. + <_> + 10 17 5 3 2. + <_> + + <_> + 4 14 12 6 -1. + <_> + 4 17 12 3 2. + <_> + + <_> + 7 13 6 7 -1. + <_> + 9 13 2 7 3. + <_> + + <_> + 1 3 15 4 -1. + <_> + 6 3 5 4 3. + <_> + + <_> + 2 9 18 3 -1. + <_> + 8 9 6 3 3. + <_> + + <_> + 2 8 12 4 -1. + <_> + 6 8 4 4 3. + <_> + + <_> + 12 5 6 11 -1. + <_> + 12 5 3 11 2. + <_> + + <_> + 0 0 20 2 -1. + <_> + 10 0 10 2 2. + <_> + + <_> + 9 0 3 13 -1. + <_> + 10 0 1 13 3. + <_> + + <_> + 3 2 14 2 -1. + <_> + 3 3 14 1 2. + <_> + + <_> + 4 8 12 4 -1. + <_> + 4 10 12 2 2. + <_> + + <_> + 0 0 7 6 -1. + <_> + 0 2 7 2 3. + <_> + + <_> + 11 8 3 10 -1. + <_> + 11 13 3 5 2. + <_> + + <_> + 1 14 10 6 -1. + <_> + 1 14 5 3 2. + <_> + 6 17 5 3 2. + <_> + + <_> + 6 4 12 12 -1. + <_> + 12 4 6 6 2. + <_> + 6 10 6 6 2. + <_> + + <_> + 2 4 12 12 -1. + <_> + 2 4 6 6 2. + <_> + 8 10 6 6 2. + <_> + + <_> + 3 5 14 8 -1. + <_> + 10 5 7 4 2. + <_> + 3 9 7 4 2. + <_> + + <_> + 0 4 6 7 -1. + <_> + 2 4 2 7 3. + <_> + + <_> + 7 13 7 6 -1. + <_> + 7 15 7 2 3. + <_> + + <_> + 2 13 16 6 -1. + <_> + 2 15 16 2 3. + <_> + + <_> + 16 7 3 13 -1. + <_> + 17 7 1 13 3. + <_> + + <_> + 1 7 3 13 -1. + <_> + 2 7 1 13 3. + <_> + + <_> + 11 10 5 9 -1. + <_> + 11 13 5 3 3. + <_> + + <_> + 1 12 13 3 -1. + <_> + 1 13 13 1 3. + <_> + + <_> + 7 2 13 3 -1. + <_> + 7 3 13 1 3. + <_> + + <_> + 1 13 13 3 -1. + <_> + 1 14 13 1 3. + <_> + + <_> + 11 10 5 9 -1. + <_> + 11 13 5 3 3. + <_> + + <_> + 4 10 5 9 -1. + <_> + 4 13 5 3 3. + <_> + + <_> + 4 14 13 3 -1. + <_> + 4 15 13 1 3. + <_> + + <_> + 1 2 18 4 -1. + <_> + 1 2 9 2 2. + <_> + 10 4 9 2 2. + <_> + + <_> + 14 2 6 6 -1. + <_> + 14 5 6 3 2. + <_> + + <_> + 0 2 6 6 -1. + <_> + 0 5 6 3 2. + <_> + + <_> + 4 0 13 6 -1. + <_> + 4 3 13 3 2. + <_> + + <_> + 2 7 13 3 -1. + <_> + 2 8 13 1 3. + <_> + + <_> + 3 7 14 2 -1. + <_> + 3 8 14 1 2. + <_> + + <_> + 3 2 6 10 -1. + <_> + 3 2 3 5 2. + <_> + 6 7 3 5 2. + <_> + + <_> + 11 10 6 8 -1. + <_> + 11 10 3 8 2. + <_> + + <_> + 4 0 8 7 -1. + <_> + 8 0 4 7 2. + <_> + + <_> + 11 10 6 7 -1. + <_> + 11 10 3 7 2. + <_> + + <_> + 6 2 2 18 -1. + <_> + 7 2 1 18 2. + <_> + + <_> + 12 6 3 13 -1. + <_> + 13 6 1 13 3. + <_> + + <_> + 2 18 14 2 -1. + <_> + 2 19 14 1 2. + <_> + + <_> + 11 10 6 7 -1. + <_> + 11 10 3 7 2. + <_> + + <_> + 8 6 3 13 -1. + <_> + 9 6 1 13 3. + <_> + + <_> + 12 4 2 14 -1. + <_> + 12 4 1 14 2. + <_> + + <_> + 6 4 2 14 -1. + <_> + 7 4 1 14 2. + <_> + + <_> + 1 12 18 3 -1. + <_> + 7 12 6 3 3. + <_> + + <_> + 2 8 6 9 -1. + <_> + 5 8 3 9 2. + <_> + + <_> + 11 5 8 8 -1. + <_> + 15 5 4 4 2. + <_> + 11 9 4 4 2. + <_> + + <_> + 5 5 8 8 -1. + <_> + 5 5 4 4 2. + <_> + 9 9 4 4 2. + <_> + + <_> + 9 0 3 20 -1. + <_> + 10 0 1 20 3. + <_> + + <_> + 7 5 3 13 -1. + <_> + 8 5 1 13 3. + <_> + + <_> + 0 3 10 6 -1. + <_> + 0 3 5 3 2. + <_> + 5 6 5 3 2. + <_> + + <_> + 5 7 12 4 -1. + <_> + 9 7 4 4 3. + <_> + + <_> + 5 4 6 10 -1. + <_> + 5 4 3 5 2. + <_> + 8 9 3 5 2. + <_> + + <_> + 10 9 4 8 -1. + <_> + 10 13 4 4 2. + <_> + + <_> + 3 7 12 5 -1. + <_> + 7 7 4 5 3. + <_> + + <_> + 7 2 6 12 -1. + <_> + 7 6 6 4 3. + <_> + + <_> + 0 4 6 8 -1. + <_> + 3 4 3 8 2. + <_> + + <_> + 4 11 13 3 -1. + <_> + 4 12 13 1 3. + <_> + + <_> + 0 9 18 5 -1. + <_> + 6 9 6 5 3. + <_> + + <_> + 5 7 15 2 -1. + <_> + 5 8 15 1 2. + <_> + + <_> + 2 11 14 4 -1. + <_> + 2 11 7 2 2. + <_> + 9 13 7 2 2. + <_> + + <_> + 12 10 5 6 -1. + <_> + 12 13 5 3 2. + <_> + + <_> + 4 10 12 6 -1. + <_> + 4 10 6 3 2. + <_> + 10 13 6 3 2. + <_> + + <_> + 14 8 6 10 -1. + <_> + 14 8 3 10 2. + <_> + + <_> + 0 2 18 2 -1. + <_> + 0 3 18 1 2. + <_> + + <_> + 14 1 6 5 -1. + <_> + 14 1 3 5 2. + <_> + + <_> + 3 8 13 2 -1. + <_> + 3 9 13 1 2. + <_> + + <_> + 7 1 13 3 -1. + <_> + 7 2 13 1 3. + <_> + + <_> + 0 1 6 5 -1. + <_> + 3 1 3 5 2. + <_> + + <_> + 7 1 8 8 -1. + <_> + 11 1 4 4 2. + <_> + 7 5 4 4 2. + <_> + + <_> + 5 1 8 8 -1. + <_> + 5 1 4 4 2. + <_> + 9 5 4 4 2. + <_> + + <_> + 15 4 4 14 -1. + <_> + 17 4 2 7 2. + <_> + 15 11 2 7 2. + <_> + + <_> + 6 15 7 4 -1. + <_> + 6 17 7 2 2. + <_> + + <_> + 15 4 4 14 -1. + <_> + 17 4 2 7 2. + <_> + 15 11 2 7 2. + <_> + + <_> + 1 2 4 18 -1. + <_> + 1 2 2 9 2. + <_> + 3 11 2 9 2. + <_> + + <_> + 3 11 16 9 -1. + <_> + 3 14 16 3 3. + <_> + + <_> + 0 0 17 3 -1. + <_> + 0 1 17 1 3. + <_> + + <_> + 9 5 9 15 -1. + <_> + 9 10 9 5 3. + <_> + + <_> + 0 7 7 9 -1. + <_> + 0 10 7 3 3. + <_> + + <_> + 13 0 6 10 -1. + <_> + 16 0 3 5 2. + <_> + 13 5 3 5 2. + <_> + + <_> + 0 3 14 4 -1. + <_> + 0 3 7 2 2. + <_> + 7 5 7 2 2. + <_> + + <_> + 13 0 6 10 -1. + <_> + 16 0 3 5 2. + <_> + 13 5 3 5 2. + <_> + + <_> + 1 0 6 10 -1. + <_> + 1 0 3 5 2. + <_> + 4 5 3 5 2. + <_> + + <_> + 10 1 6 7 -1. + <_> + 12 1 2 7 3. + <_> + + <_> + 7 4 5 16 -1. + <_> + 7 12 5 8 2. + <_> + + <_> + 8 5 6 8 -1. + <_> + 10 5 2 8 3. + <_> + + <_> + 4 3 6 17 -1. + <_> + 6 3 2 17 3. + <_> + + <_> + 2 0 18 20 -1. + <_> + 8 0 6 20 3. + <_> + + <_> + 5 12 6 6 -1. + <_> + 8 12 3 6 2. + <_> + + <_> + 9 4 5 16 -1. + <_> + 9 12 5 8 2. + <_> + + <_> + 0 7 6 9 -1. + <_> + 3 7 3 9 2. + <_> + + <_> + 15 7 5 9 -1. + <_> + 15 10 5 3 3. + <_> + + <_> + 5 14 10 6 -1. + <_> + 5 16 10 2 3. + <_> + + <_> + 2 14 17 6 -1. + <_> + 2 16 17 2 3. + <_> + + <_> + 3 2 14 6 -1. + <_> + 3 4 14 2 3. + <_> + + <_> + 13 11 7 6 -1. + <_> + 13 13 7 2 3. + <_> + + <_> + 0 0 4 15 -1. + <_> + 2 0 2 15 2. + <_> + + <_> + 1 4 18 10 -1. + <_> + 10 4 9 5 2. + <_> + 1 9 9 5 2. + <_> + + <_> + 0 1 2 13 -1. + <_> + 1 1 1 13 2. + <_> + + <_> + 13 3 3 12 -1. + <_> + 13 9 3 6 2. + <_> + + <_> + 0 2 20 4 -1. + <_> + 0 2 10 2 2. + <_> + 10 4 10 2 2. + <_> + + <_> + 7 9 6 7 -1. + <_> + 9 9 2 7 3. + <_> + + <_> + 4 9 6 5 -1. + <_> + 7 9 3 5 2. + <_> + + <_> + 11 8 4 12 -1. + <_> + 11 8 2 12 2. + <_> + + <_> + 1 14 13 3 -1. + <_> + 1 15 13 1 3. + <_> + + <_> + 11 8 4 12 -1. + <_> + 11 8 2 12 2. + <_> + + <_> + 0 14 13 3 -1. + <_> + 0 15 13 1 3. + <_> + + <_> + 11 8 4 12 -1. + <_> + 11 8 2 12 2. + <_> + + <_> + 5 8 4 12 -1. + <_> + 7 8 2 12 2. + <_> + + <_> + 13 11 7 6 -1. + <_> + 13 13 7 2 3. + <_> + + <_> + 6 6 6 7 -1. + <_> + 8 6 2 7 3. + <_> + + <_> + 7 0 6 14 -1. + <_> + 10 0 3 7 2. + <_> + 7 7 3 7 2. + <_> + + <_> + 5 0 8 8 -1. + <_> + 5 4 8 4 2. + <_> + + <_> + 9 0 6 7 -1. + <_> + 11 0 2 7 3. + <_> + + <_> + 3 0 14 8 -1. + <_> + 3 4 14 4 2. + <_> + + <_> + 9 1 5 10 -1. + <_> + 9 6 5 5 2. + <_> + + <_> + 7 0 2 14 -1. + <_> + 8 0 1 14 2. + <_> + + <_> + 2 15 18 5 -1. + <_> + 8 15 6 5 3. + <_> + + <_> + 1 9 10 6 -1. + <_> + 1 9 5 3 2. + <_> + 6 12 5 3 2. + <_> + + <_> + 10 0 3 13 -1. + <_> + 11 0 1 13 3. + <_> + + <_> + 7 0 3 13 -1. + <_> + 8 0 1 13 3. + <_> + + <_> + 9 0 6 7 -1. + <_> + 11 0 2 7 3. + <_> + + <_> + 0 1 6 11 -1. + <_> + 2 1 2 11 3. + <_> + + <_> + 9 0 6 7 -1. + <_> + 11 0 2 7 3. + <_> + + <_> + 5 0 6 7 -1. + <_> + 7 0 2 7 3. + <_> + + <_> + 7 11 7 6 -1. + <_> + 7 13 7 2 3. + <_> + + <_> + 0 11 7 6 -1. + <_> + 0 13 7 2 3. + <_> + + <_> + 8 6 6 7 -1. + <_> + 10 6 2 7 3. + <_> + + <_> + 8 4 4 8 -1. + <_> + 10 4 2 8 2. + <_> + + <_> + 15 0 5 9 -1. + <_> + 15 3 5 3 3. + <_> + + <_> + 1 9 7 6 -1. + <_> + 1 11 7 2 3. + <_> + + <_> + 11 9 3 10 -1. + <_> + 11 14 3 5 2. + <_> + + <_> + 6 9 3 10 -1. + <_> + 6 14 3 5 2. + <_> + + <_> + 2 2 18 9 -1. + <_> + 8 2 6 9 3. + <_> + + <_> + 3 2 6 10 -1. + <_> + 3 2 3 5 2. + <_> + 6 7 3 5 2. + <_> + + <_> + 2 15 18 5 -1. + <_> + 8 15 6 5 3. + <_> + + <_> + 0 15 18 5 -1. + <_> + 6 15 6 5 3. + <_> + + <_> + 12 0 8 9 -1. + <_> + 12 3 8 3 3. + <_> + + <_> + 7 12 6 8 -1. + <_> + 9 12 2 8 3. + <_> + + <_> + 13 0 6 14 -1. + <_> + 15 0 2 14 3. + <_> + + <_> + 1 0 6 14 -1. + <_> + 3 0 2 14 3. + <_> + + <_> + 9 0 6 7 -1. + <_> + 11 0 2 7 3. + <_> + + <_> + 0 1 13 3 -1. + <_> + 0 2 13 1 3. + <_> + + <_> + 10 7 9 13 -1. + <_> + 13 7 3 13 3. + <_> + + <_> + 1 7 9 13 -1. + <_> + 4 7 3 13 3. + <_> + + <_> + 8 15 12 5 -1. + <_> + 12 15 4 5 3. + <_> + + <_> + 3 14 14 6 -1. + <_> + 10 14 7 6 2. + <_> + + <_> + 5 2 15 3 -1. + <_> + 5 3 15 1 3. + <_> + + <_> + 5 3 10 6 -1. + <_> + 5 5 10 2 3. + <_> + + <_> + 7 4 7 8 -1. + <_> + 7 8 7 4 2. + <_> + + <_> + 0 0 8 9 -1. + <_> + 0 3 8 3 3. + <_> + + <_> + 15 0 5 9 -1. + <_> + 15 3 5 3 3. + <_> + + <_> + 0 0 5 9 -1. + <_> + 0 3 5 3 3. + <_> + + <_> + 7 3 13 3 -1. + <_> + 7 4 13 1 3. + <_> + + <_> + 2 12 7 6 -1. + <_> + 2 14 7 2 3. + <_> + + <_> + 7 13 13 3 -1. + <_> + 7 14 13 1 3. + <_> + + <_> + 4 1 6 7 -1. + <_> + 6 1 2 7 3. + <_> + + <_> + 8 6 5 9 -1. + <_> + 8 9 5 3 3. + <_> + + <_> + 0 8 12 12 -1. + <_> + 4 8 4 12 3. + <_> + + <_> + 9 0 9 5 -1. + <_> + 12 0 3 5 3. + <_> + + <_> + 2 0 9 5 -1. + <_> + 5 0 3 5 3. + <_> + + <_> + 6 4 10 14 -1. + <_> + 11 4 5 7 2. + <_> + 6 11 5 7 2. + <_> + + <_> + 4 4 10 14 -1. + <_> + 4 4 5 7 2. + <_> + 9 11 5 7 2. + <_> + + <_> + 13 9 6 5 -1. + <_> + 13 9 3 5 2. + <_> + + <_> + 3 8 13 3 -1. + <_> + 3 9 13 1 3. + <_> + + <_> + 5 16 14 4 -1. + <_> + 12 16 7 2 2. + <_> + 5 18 7 2 2. + <_> + + <_> + 1 0 6 10 -1. + <_> + 1 0 3 5 2. + <_> + 4 5 3 5 2. + <_> + + <_> + 11 1 5 12 -1. + <_> + 11 7 5 6 2. + <_> + + <_> + 4 1 5 12 -1. + <_> + 4 7 5 6 2. + <_> + + <_> + 8 6 4 8 -1. + <_> + 8 10 4 4 2. + <_> + + <_> + 1 16 14 4 -1. + <_> + 1 16 7 2 2. + <_> + 8 18 7 2 2. + <_> + + <_> + 5 14 13 2 -1. + <_> + 5 15 13 1 2. + <_> + + <_> + 0 9 5 9 -1. + <_> + 0 12 5 3 3. + <_> + + <_> + 13 10 6 5 -1. + <_> + 13 10 3 5 2. + <_> + + <_> + 1 10 6 5 -1. + <_> + 4 10 3 5 2. + <_> + + <_> + 15 7 4 13 -1. + <_> + 15 7 2 13 2. + <_> + + <_> + 1 7 4 13 -1. + <_> + 3 7 2 13 2. + <_> + + <_> + 5 10 10 4 -1. + <_> + 5 12 10 2 2. + <_> + + <_> + 0 2 15 3 -1. + <_> + 0 3 15 1 3. + <_> + + <_> + 7 0 11 6 -1. + <_> + 7 2 11 2 3. + <_> + + <_> + 0 4 7 6 -1. + <_> + 0 6 7 2 3. + <_> + + <_> + 7 0 6 7 -1. + <_> + 9 0 2 7 3. + <_> + + <_> + 0 12 20 4 -1. + <_> + 0 12 10 2 2. + <_> + 10 14 10 2 2. + <_> + + <_> + 4 1 12 5 -1. + <_> + 8 1 4 5 3. + <_> + + <_> + 6 1 2 14 -1. + <_> + 7 1 1 14 2. + <_> + + <_> + 9 5 6 7 -1. + <_> + 11 5 2 7 3. + <_> + + <_> + 6 4 6 8 -1. + <_> + 8 4 2 8 3. + <_> + + <_> + 5 6 10 3 -1. + <_> + 5 6 5 3 2. + <_> + + <_> + 6 3 4 7 -1. + <_> + 8 3 2 7 2. + <_> + + <_> + 15 3 5 9 -1. + <_> + 15 6 5 3 3. + <_> + + <_> + 5 5 6 7 -1. + <_> + 7 5 2 7 3. + <_> + + <_> + 6 9 9 5 -1. + <_> + 9 9 3 5 3. + <_> + + <_> + 0 4 5 6 -1. + <_> + 0 7 5 3 2. + <_> + + <_> + 15 4 4 16 -1. + <_> + 17 4 2 8 2. + <_> + 15 12 2 8 2. + <_> + + <_> + 8 12 4 8 -1. + <_> + 8 16 4 4 2. + <_> + + <_> + 15 4 4 16 -1. + <_> + 17 4 2 8 2. + <_> + 15 12 2 8 2. + <_> + + <_> + 2 16 15 4 -1. + <_> + 2 18 15 2 2. + <_> + + <_> + 17 0 3 13 -1. + <_> + 18 0 1 13 3. + <_> + + <_> + 2 8 15 5 -1. + <_> + 7 8 5 5 3. + <_> + + <_> + 15 4 4 16 -1. + <_> + 17 4 2 8 2. + <_> + 15 12 2 8 2. + <_> + + <_> + 1 4 4 16 -1. + <_> + 1 4 2 8 2. + <_> + 3 12 2 8 2. + <_> + + <_> + 15 1 5 9 -1. + <_> + 15 4 5 3 3. + <_> + + <_> + 6 4 6 10 -1. + <_> + 6 4 3 5 2. + <_> + 9 9 3 5 2. + <_> + + <_> + 1 9 19 3 -1. + <_> + 1 10 19 1 3. + <_> + + <_> + 3 0 14 12 -1. + <_> + 3 4 14 4 3. + <_> + + <_> + 6 3 8 4 -1. + <_> + 6 5 8 2 2. + <_> + + <_> + 0 5 15 3 -1. + <_> + 0 6 15 1 3. + <_> + + <_> + 12 0 2 13 -1. + <_> + 12 0 1 13 2. + <_> + + <_> + 8 4 4 14 -1. + <_> + 10 4 2 14 2. + <_> + + <_> + 7 0 10 6 -1. + <_> + 12 0 5 3 2. + <_> + 7 3 5 3 2. + <_> + + <_> + 1 6 6 7 -1. + <_> + 3 6 2 7 3. + <_> + + <_> + 17 2 3 13 -1. + <_> + 18 2 1 13 3. + <_> + + <_> + 0 0 3 13 -1. + <_> + 1 0 1 13 3. + <_> + + <_> + 6 0 10 6 -1. + <_> + 11 0 5 3 2. + <_> + 6 3 5 3 2. + <_> + + <_> + 4 0 10 6 -1. + <_> + 4 0 5 3 2. + <_> + 9 3 5 3 2. + <_> + + <_> + 6 1 14 2 -1. + <_> + 6 2 14 1 2. + <_> + + <_> + 3 0 12 18 -1. + <_> + 3 9 12 9 2. + <_> + + <_> + 13 7 6 10 -1. + <_> + 13 12 6 5 2. + <_> + + <_> + 1 7 6 10 -1. + <_> + 1 12 6 5 2. + <_> + + <_> + 4 5 12 12 -1. + <_> + 10 5 6 6 2. + <_> + 4 11 6 6 2. + <_> + + <_> + 7 4 6 5 -1. + <_> + 10 4 3 5 2. + <_> + + <_> + 4 8 15 4 -1. + <_> + 9 8 5 4 3. + <_> + + <_> + 4 9 12 11 -1. + <_> + 10 9 6 11 2. + <_> + + <_> + 7 6 8 10 -1. + <_> + 11 6 4 5 2. + <_> + 7 11 4 5 2. + <_> + + <_> + 4 7 6 6 -1. + <_> + 4 10 6 3 2. + <_> + + <_> + 11 10 9 6 -1. + <_> + 11 12 9 2 3. + <_> + + <_> + 6 4 7 6 -1. + <_> + 6 6 7 2 3. + <_> + + <_> + 9 3 2 16 -1. + <_> + 9 11 2 8 2. + <_> + + <_> + 3 2 9 16 -1. + <_> + 3 10 9 8 2. + <_> + + <_> + 5 0 10 10 -1. + <_> + 5 5 10 5 2. + <_> + + <_> + 5 1 6 10 -1. + <_> + 5 6 6 5 2. + <_> + + <_> + 13 3 3 12 -1. + <_> + 13 9 3 6 2. + <_> + + <_> + 0 10 18 6 -1. + <_> + 0 12 18 2 3. + <_> + + <_> + 6 15 14 2 -1. + <_> + 6 16 14 1 2. + <_> + + <_> + 6 7 7 4 -1. + <_> + 6 9 7 2 2. + <_> + + <_> + 6 5 11 8 -1. + <_> + 6 9 11 4 2. + <_> + + <_> + 0 8 8 12 -1. + <_> + 0 8 4 6 2. + <_> + 4 14 4 6 2. + <_> + + <_> + 8 6 5 9 -1. + <_> + 8 9 5 3 3. + <_> + + <_> + 2 6 4 14 -1. + <_> + 2 6 2 7 2. + <_> + 4 13 2 7 2. + <_> + + <_> + 6 10 9 6 -1. + <_> + 9 10 3 6 3. + <_> + + <_> + 2 5 4 8 -1. + <_> + 2 9 4 4 2. + <_> + + <_> + 9 4 8 12 -1. + <_> + 13 4 4 6 2. + <_> + 9 10 4 6 2. + <_> + + <_> + 3 4 8 12 -1. + <_> + 3 4 4 6 2. + <_> + 7 10 4 6 2. + <_> + + <_> + 9 8 10 8 -1. + <_> + 14 8 5 4 2. + <_> + 9 12 5 4 2. + <_> + + <_> + 2 18 15 2 -1. + <_> + 2 19 15 1 2. + <_> + + <_> + 10 11 5 9 -1. + <_> + 10 14 5 3 3. + <_> + + <_> + 0 11 16 4 -1. + <_> + 8 11 8 4 2. + <_> + + <_> + 13 4 3 14 -1. + <_> + 14 4 1 14 3. + <_> + + <_> + 0 11 18 6 -1. + <_> + 9 11 9 6 2. + <_> + + <_> + 8 2 4 8 -1. + <_> + 8 2 2 8 2. + <_> + + <_> + 3 2 12 6 -1. + <_> + 3 2 6 3 2. + <_> + 9 5 6 3 2. + <_> + + <_> + 12 10 8 4 -1. + <_> + 12 12 8 2 2. + <_> + + <_> + 0 10 8 4 -1. + <_> + 0 12 8 2 2. + <_> + + <_> + 6 13 13 3 -1. + <_> + 6 14 13 1 3. + <_> + + <_> + 1 13 13 3 -1. + <_> + 1 14 13 1 3. + <_> + + <_> + 9 0 3 15 -1. + <_> + 9 5 3 5 3. + <_> + + <_> + 2 3 7 4 -1. + <_> + 2 5 7 2 2. + <_> + + <_> + 14 13 4 7 -1. + <_> + 14 13 2 7 2. + <_> + + <_> + 3 3 3 15 -1. + <_> + 4 3 1 15 3. + <_> + + <_> + 2 0 18 7 -1. + <_> + 8 0 6 7 3. + <_> + + <_> + 3 6 5 6 -1. + <_> + 3 9 5 3 2. + <_> + + <_> + 10 2 10 3 -1. + <_> + 10 2 5 3 2. + <_> + + <_> + 6 15 7 4 -1. + <_> + 6 17 7 2 2. + <_> + + <_> + 8 4 4 14 -1. + <_> + 8 11 4 7 2. + <_> + + <_> + 2 16 8 4 -1. + <_> + 6 16 4 4 2. + <_> + + <_> + 9 5 6 7 -1. + <_> + 11 5 2 7 3. + <_> + + <_> + 5 5 6 7 -1. + <_> + 7 5 2 7 3. + <_> + + <_> + 10 3 10 3 -1. + <_> + 10 3 5 3 2. + <_> + + <_> + 5 6 5 8 -1. + <_> + 5 10 5 4 2. + <_> + + <_> + 13 1 6 6 -1. + <_> + 13 1 3 6 2. + <_> + + <_> + 1 1 6 6 -1. + <_> + 4 1 3 6 2. + <_> + + <_> + 8 5 8 4 -1. + <_> + 8 5 4 4 2. + <_> + + <_> + 4 5 8 4 -1. + <_> + 8 5 4 4 2. + <_> + + <_> + 12 10 7 4 -1. + <_> + 12 12 7 2 2. + <_> + + <_> + 3 14 7 6 -1. + <_> + 3 17 7 3 2. + <_> + + <_> + 2 1 16 3 -1. + <_> + 2 2 16 1 3. + <_> + + <_> + 3 2 14 2 -1. + <_> + 3 3 14 1 2. + <_> + + <_> + 7 14 13 3 -1. + <_> + 7 15 13 1 3. + <_> + + <_> + 0 11 7 6 -1. + <_> + 0 13 7 2 3. + <_> + + <_> + 7 12 13 2 -1. + <_> + 7 13 13 1 2. + <_> + + <_> + 1 0 13 3 -1. + <_> + 1 1 13 1 3. + <_> + + <_> + 4 7 12 4 -1. + <_> + 4 9 12 2 2. + <_> + + <_> + 0 10 8 4 -1. + <_> + 0 12 8 2 2. + <_> + + <_> + 2 6 16 8 -1. + <_> + 10 6 8 4 2. + <_> + 2 10 8 4 2. + <_> + + <_> + 2 10 6 7 -1. + <_> + 4 10 2 7 3. + <_> + + <_> + 6 14 13 2 -1. + <_> + 6 15 13 1 2. + <_> + + <_> + 1 11 18 6 -1. + <_> + 1 11 9 3 2. + <_> + 10 14 9 3 2. + <_> + + <_> + 10 9 5 10 -1. + <_> + 10 14 5 5 2. + <_> + + <_> + 7 10 6 10 -1. + <_> + 7 10 3 5 2. + <_> + 10 15 3 5 2. + <_> + + <_> + 6 2 9 12 -1. + <_> + 6 6 9 4 3. + <_> + + <_> + 1 17 18 3 -1. + <_> + 7 17 6 3 3. + <_> + + <_> + 6 9 9 5 -1. + <_> + 9 9 3 5 3. + <_> + + <_> + 6 7 6 5 -1. + <_> + 9 7 3 5 2. + <_> + + <_> + 9 0 6 7 -1. + <_> + 11 0 2 7 3. + <_> + + <_> + 3 3 13 2 -1. + <_> + 3 4 13 1 2. + <_> + + <_> + 14 3 6 13 -1. + <_> + 16 3 2 13 3. + <_> + + <_> + 0 3 6 13 -1. + <_> + 2 3 2 13 3. + <_> + + <_> + 9 9 6 10 -1. + <_> + 12 9 3 5 2. + <_> + 9 14 3 5 2. + <_> + + <_> + 1 11 5 9 -1. + <_> + 1 14 5 3 3. + <_> + + <_> + 12 8 8 12 -1. + <_> + 16 8 4 6 2. + <_> + 12 14 4 6 2. + <_> + + <_> + 0 13 13 3 -1. + <_> + 0 14 13 1 3. + <_> + + <_> + 4 9 12 8 -1. + <_> + 10 9 6 4 2. + <_> + 4 13 6 4 2. + <_> + + <_> + 4 2 6 8 -1. + <_> + 6 2 2 8 3. + <_> + + <_> + 8 2 4 10 -1. + <_> + 8 2 2 10 2. + <_> + + <_> + 5 0 6 7 -1. + <_> + 7 0 2 7 3. + <_> + + <_> + 15 2 4 18 -1. + <_> + 17 2 2 9 2. + <_> + 15 11 2 9 2. + <_> + + <_> + 0 0 20 20 -1. + <_> + 0 0 10 10 2. + <_> + 10 10 10 10 2. + <_> + + <_> + 5 6 14 3 -1. + <_> + 5 6 7 3 2. + <_> + + <_> + 3 7 12 4 -1. + <_> + 7 7 4 4 3. + <_> + + <_> + 11 6 6 5 -1. + <_> + 11 6 3 5 2. + <_> + + <_> + 3 6 6 5 -1. + <_> + 6 6 3 5 2. + <_> + + <_> + 15 2 5 9 -1. + <_> + 15 5 5 3 3. + <_> + + <_> + 0 2 5 9 -1. + <_> + 0 5 5 3 3. + <_> + + <_> + 6 13 14 3 -1. + <_> + 6 14 14 1 3. + <_> + + <_> + 0 1 5 9 -1. + <_> + 0 4 5 3 3. + <_> + + <_> + 11 12 8 8 -1. + <_> + 15 12 4 4 2. + <_> + 11 16 4 4 2. + <_> + + <_> + 1 12 8 8 -1. + <_> + 1 12 4 4 2. + <_> + 5 16 4 4 2. + <_> + + <_> + 10 0 6 8 -1. + <_> + 12 0 2 8 3. + <_> + + <_> + 1 6 14 3 -1. + <_> + 8 6 7 3 2. + <_> + + <_> + 10 1 10 19 -1. + <_> + 10 1 5 19 2. + <_> + + <_> + 0 1 10 19 -1. + <_> + 5 1 5 19 2. + <_> + + <_> + 10 0 6 8 -1. + <_> + 12 0 2 8 3. + <_> + + <_> + 4 0 6 8 -1. + <_> + 6 0 2 8 3. + <_> + + <_> + 1 11 18 6 -1. + <_> + 1 14 18 3 2. + <_> + + <_> + 5 11 5 6 -1. + <_> + 5 14 5 3 2. + <_> + + <_> + 9 12 4 8 -1. + <_> + 9 16 4 4 2. + <_> + + <_> + 0 11 13 3 -1. + <_> + 0 12 13 1 3. + <_> + + <_> + 1 11 18 3 -1. + <_> + 1 12 18 1 3. + <_> + + <_> + 2 1 16 2 -1. + <_> + 2 2 16 1 2. + <_> + + <_> + 8 0 6 7 -1. + <_> + 10 0 2 7 3. + <_> + + <_> + 0 9 19 3 -1. + <_> + 0 10 19 1 3. + <_> + + <_> + 9 7 7 4 -1. + <_> + 9 9 7 2 2. + <_> + + <_> + 0 14 20 6 -1. + <_> + 0 16 20 2 3. + <_> + + <_> + 8 7 12 6 -1. + <_> + 8 7 6 6 2. + <_> + + <_> + 0 7 12 6 -1. + <_> + 6 7 6 6 2. + <_> + + <_> + 11 14 7 6 -1. + <_> + 11 16 7 2 3. + <_> + + <_> + 0 0 7 12 -1. + <_> + 0 6 7 6 2. + <_> + + <_> + 13 7 3 13 -1. + <_> + 14 7 1 13 3. + <_> + + <_> + 3 1 13 6 -1. + <_> + 3 3 13 2 3. + <_> + + <_> + 10 0 3 13 -1. + <_> + 11 0 1 13 3. + <_> + + <_> + 7 0 3 13 -1. + <_> + 8 0 1 13 3. + <_> + + <_> + 8 6 6 7 -1. + <_> + 10 6 2 7 3. + <_> + + <_> + 5 0 4 8 -1. + <_> + 7 0 2 8 2. + <_> + + <_> + 9 2 6 10 -1. + <_> + 12 2 3 5 2. + <_> + 9 7 3 5 2. + <_> + + <_> + 5 1 3 14 -1. + <_> + 6 1 1 14 3. + <_> + + <_> + 11 14 7 6 -1. + <_> + 11 16 7 2 3. + <_> + + <_> + 2 14 7 6 -1. + <_> + 2 16 7 2 3. + <_> + + <_> + 1 2 18 6 -1. + <_> + 7 2 6 6 3. + <_> + + <_> + 4 7 7 4 -1. + <_> + 4 9 7 2 2. + <_> + + <_> + 9 4 10 16 -1. + <_> + 9 12 10 8 2. + <_> + + <_> + 1 3 16 12 -1. + <_> + 1 3 8 6 2. + <_> + 9 9 8 6 2. + <_> + + <_> + 11 3 2 16 -1. + <_> + 11 11 2 8 2. + <_> + + <_> + 8 0 3 13 -1. + <_> + 9 0 1 13 3. + <_> + + <_> + 7 9 13 3 -1. + <_> + 7 10 13 1 3. + <_> + + <_> + 0 9 13 3 -1. + <_> + 0 10 13 1 3. + <_> + + <_> + 7 7 9 6 -1. + <_> + 7 9 9 2 3. + <_> + + <_> + 4 5 6 8 -1. + <_> + 6 5 2 8 3. + <_> + + <_> + 9 4 3 10 -1. + <_> + 9 9 3 5 2. + <_> + + <_> + 8 4 4 12 -1. + <_> + 8 8 4 4 3. + <_> + + <_> + 4 5 15 3 -1. + <_> + 4 6 15 1 3. + <_> + + <_> + 2 4 9 4 -1. + <_> + 2 6 9 2 2. + <_> + + <_> + 8 0 8 10 -1. + <_> + 8 5 8 5 2. + <_> + + <_> + 8 6 3 10 -1. + <_> + 8 11 3 5 2. + <_> + + <_> + 5 7 11 8 -1. + <_> + 5 11 11 4 2. + <_> + + <_> + 1 12 6 6 -1. + <_> + 1 15 6 3 2. + <_> + + <_> + 14 2 5 18 -1. + <_> + 14 8 5 6 3. + <_> + + <_> + 1 2 5 18 -1. + <_> + 1 8 5 6 3. + <_> + + <_> + 13 7 3 13 -1. + <_> + 14 7 1 13 3. + <_> + + <_> + 4 7 3 13 -1. + <_> + 5 7 1 13 3. + <_> + + <_> + 0 6 20 2 -1. + <_> + 0 7 20 1 2. + <_> + + <_> + 2 1 16 4 -1. + <_> + 2 1 8 2 2. + <_> + 10 3 8 2 2. + <_> + + <_> + 6 1 10 6 -1. + <_> + 11 1 5 3 2. + <_> + 6 4 5 3 2. + <_> + + <_> + 0 5 8 15 -1. + <_> + 4 5 4 15 2. + <_> + + <_> + 4 13 12 6 -1. + <_> + 4 13 6 6 2. + <_> + + <_> + 7 0 6 14 -1. + <_> + 7 0 3 7 2. + <_> + 10 7 3 7 2. + <_> + + <_> + 1 10 18 10 -1. + <_> + 7 10 6 10 3. + <_> + + <_> + 0 2 13 2 -1. + <_> + 0 3 13 1 2. + <_> + + <_> + 0 0 20 15 -1. + <_> + 0 5 20 5 3. + <_> + + <_> + 4 0 12 6 -1. + <_> + 4 3 12 3 2. + <_> + + <_> + 6 1 8 4 -1. + <_> + 6 3 8 2 2. + <_> + + <_> + 0 7 7 6 -1. + <_> + 0 9 7 2 3. + <_> + + <_> + 4 6 12 4 -1. + <_> + 8 6 4 4 3. + <_> + + <_> + 0 0 15 7 -1. + <_> + 5 0 5 7 3. + <_> + + <_> + 10 0 10 8 -1. + <_> + 10 0 5 8 2. + <_> + + <_> + 0 0 10 8 -1. + <_> + 5 0 5 8 2. + <_> + + <_> + 5 6 12 4 -1. + <_> + 5 6 6 4 2. + <_> + + <_> + 3 6 12 4 -1. + <_> + 9 6 6 4 2. + <_> + + <_> + 7 13 6 7 -1. + <_> + 9 13 2 7 3. + <_> + + <_> + 2 0 15 9 -1. + <_> + 7 0 5 9 3. + <_> + + <_> + 6 14 13 2 -1. + <_> + 6 15 13 1 2. + <_> + + <_> + 4 0 12 8 -1. + <_> + 8 0 4 8 3. + <_> + + <_> + 12 1 4 14 -1. + <_> + 14 1 2 7 2. + <_> + 12 8 2 7 2. + <_> + + <_> + 0 5 18 3 -1. + <_> + 6 5 6 3 3. + <_> + + <_> + 7 1 7 6 -1. + <_> + 7 4 7 3 2. + <_> + + <_> + 6 6 5 14 -1. + <_> + 6 13 5 7 2. + <_> + + <_> + 4 7 15 5 -1. + <_> + 9 7 5 5 3. + <_> + + <_> + 1 7 15 5 -1. + <_> + 6 7 5 5 3. + <_> + + <_> + 6 9 9 5 -1. + <_> + 9 9 3 5 3. + <_> + + <_> + 7 6 4 7 -1. + <_> + 9 6 2 7 2. + <_> + + <_> + 7 1 10 6 -1. + <_> + 12 1 5 3 2. + <_> + 7 4 5 3 2. + <_> + + <_> + 2 8 13 2 -1. + <_> + 2 9 13 1 2. + <_> + + <_> + 1 2 18 4 -1. + <_> + 10 2 9 2 2. + <_> + 1 4 9 2 2. + <_> + + <_> + 5 8 9 5 -1. + <_> + 8 8 3 5 3. + <_> + + <_> + 15 2 4 18 -1. + <_> + 17 2 2 9 2. + <_> + 15 11 2 9 2. + <_> + + <_> + 1 2 4 18 -1. + <_> + 1 2 2 9 2. + <_> + 3 11 2 9 2. + <_> + + <_> + 10 7 10 6 -1. + <_> + 15 7 5 3 2. + <_> + 10 10 5 3 2. + <_> + + <_> + 1 7 17 6 -1. + <_> + 1 9 17 2 3. + <_> + + <_> + 7 6 7 4 -1. + <_> + 7 8 7 2 2. + <_> + + <_> + 1 8 10 6 -1. + <_> + 1 8 5 3 2. + <_> + 6 11 5 3 2. + <_> + + <_> + 10 7 10 6 -1. + <_> + 15 7 5 3 2. + <_> + 10 10 5 3 2. + <_> + + <_> + 0 7 10 6 -1. + <_> + 0 7 5 3 2. + <_> + 5 10 5 3 2. + <_> + + <_> + 8 1 12 19 -1. + <_> + 8 1 6 19 2. + <_> + + <_> + 0 1 12 19 -1. + <_> + 6 1 6 19 2. + <_> + + <_> + 5 1 12 13 -1. + <_> + 5 1 6 13 2. + <_> + + <_> + 5 1 9 5 -1. + <_> + 8 1 3 5 3. + <_> + + <_> + 16 0 4 8 -1. + <_> + 16 0 2 8 2. + <_> + + <_> + 0 12 13 3 -1. + <_> + 0 13 13 1 3. + <_> + + <_> + 10 0 4 16 -1. + <_> + 10 0 2 16 2. + <_> + + <_> + 4 12 12 5 -1. + <_> + 8 12 4 5 3. + <_> + + <_> + 10 0 4 16 -1. + <_> + 10 0 2 16 2. + <_> + + <_> + 6 0 4 16 -1. + <_> + 8 0 2 16 2. + <_> + + <_> + 6 1 8 7 -1. + <_> + 6 1 4 7 2. + <_> + + <_> + 8 4 4 7 -1. + <_> + 10 4 2 7 2. + <_> + + <_> + 11 8 9 9 -1. + <_> + 14 8 3 9 3. + <_> + + <_> + 0 8 9 9 -1. + <_> + 3 8 3 9 3. + <_> + + <_> + 0 4 20 5 -1. + <_> + 0 4 10 5 2. + <_> + + <_> + 1 12 18 2 -1. + <_> + 1 13 18 1 2. + <_> + + <_> + 11 5 5 9 -1. + <_> + 11 8 5 3 3. + <_> + + <_> + 4 5 5 9 -1. + <_> + 4 8 5 3 3. + <_> + + <_> + 11 2 6 10 -1. + <_> + 14 2 3 5 2. + <_> + 11 7 3 5 2. + <_> + + <_> + 2 10 14 4 -1. + <_> + 2 10 7 2 2. + <_> + 9 12 7 2 2. + <_> + + <_> + 0 11 20 4 -1. + <_> + 10 11 10 2 2. + <_> + 0 13 10 2 2. + <_> + + <_> + 6 0 6 7 -1. + <_> + 8 0 2 7 3. + <_> + + <_> + 14 0 3 15 -1. + <_> + 15 0 1 15 3. + <_> + + <_> + 3 0 3 15 -1. + <_> + 4 0 1 15 3. + <_> + + <_> + 9 12 7 4 -1. + <_> + 9 14 7 2 2. + <_> + + <_> + 5 1 6 5 -1. + <_> + 8 1 3 5 2. + <_> + + <_> + 14 0 4 9 -1. + <_> + 14 0 2 9 2. + <_> + + <_> + 2 0 4 9 -1. + <_> + 4 0 2 9 2. + <_> + + <_> + 9 1 8 8 -1. + <_> + 13 1 4 4 2. + <_> + 9 5 4 4 2. + <_> + + <_> + 7 0 3 13 -1. + <_> + 8 0 1 13 3. + <_> + + <_> + 3 15 14 4 -1. + <_> + 10 15 7 2 2. + <_> + 3 17 7 2 2. + <_> + + <_> + 4 12 7 4 -1. + <_> + 4 14 7 2 2. + <_> + + <_> + 9 12 4 8 -1. + <_> + 9 16 4 4 2. + <_> + + <_> + 1 14 13 3 -1. + <_> + 1 15 13 1 3. + <_> + + <_> + 5 7 10 10 -1. + <_> + 5 12 10 5 2. + <_> + + <_> + 5 7 6 8 -1. + <_> + 5 11 6 4 2. + <_> + + <_> + 7 13 13 3 -1. + <_> + 7 14 13 1 3. + <_> + + <_> + 8 4 3 10 -1. + <_> + 8 9 3 5 2. + <_> + + <_> + 2 0 6 5 -1. + <_> + 5 0 3 5 2. + <_> + + <_> + 8 4 4 14 -1. + <_> + 8 11 4 7 2. + <_> + + <_> + 3 6 5 6 -1. + <_> + 3 9 5 3 2. + <_> + + <_> + 8 12 4 8 -1. + <_> + 8 16 4 4 2. + <_> + + <_> + 1 2 17 6 -1. + <_> + 1 4 17 2 3. + <_> + + <_> + 9 5 6 10 -1. + <_> + 9 5 3 10 2. + <_> + + <_> + 5 4 6 6 -1. + <_> + 8 4 3 6 2. + <_> + + <_> + 5 6 14 6 -1. + <_> + 12 6 7 3 2. + <_> + 5 9 7 3 2. + <_> + + <_> + 1 6 14 6 -1. + <_> + 1 6 7 3 2. + <_> + 8 9 7 3 2. + <_> + + <_> + 4 9 12 5 -1. + <_> + 8 9 4 5 3. + <_> + + <_> + 0 5 20 15 -1. + <_> + 0 10 20 5 3. + <_> + + <_> + 12 5 4 14 -1. + <_> + 14 5 2 7 2. + <_> + 12 12 2 7 2. + <_> + + <_> + 0 0 6 9 -1. + <_> + 2 0 2 9 3. + <_> + + <_> + 16 0 4 8 -1. + <_> + 16 0 2 8 2. + <_> + + <_> + 6 0 3 13 -1. + <_> + 7 0 1 13 3. + <_> + + <_> + 16 0 4 8 -1. + <_> + 16 0 2 8 2. + <_> + + <_> + 0 0 4 8 -1. + <_> + 2 0 2 8 2. + <_> + + <_> + 10 0 10 20 -1. + <_> + 10 0 5 20 2. + <_> + + <_> + 0 0 10 20 -1. + <_> + 5 0 5 20 2. + <_> + + <_> + 11 10 8 6 -1. + <_> + 11 12 8 2 3. + <_> + + <_> + 6 0 3 20 -1. + <_> + 7 0 1 20 3. + <_> + + <_> + 7 5 8 12 -1. + <_> + 11 5 4 6 2. + <_> + 7 11 4 6 2. + <_> + + <_> + 4 5 10 12 -1. + <_> + 4 5 5 6 2. + <_> + 9 11 5 6 2. + <_> + + <_> + 12 5 4 14 -1. + <_> + 14 5 2 7 2. + <_> + 12 12 2 7 2. + <_> + + <_> + 4 5 4 14 -1. + <_> + 4 5 2 7 2. + <_> + 6 12 2 7 2. + <_> + + <_> + 14 10 6 9 -1. + <_> + 14 10 3 9 2. + <_> + + <_> + 3 8 14 2 -1. + <_> + 3 9 14 1 2. + <_> + + <_> + 11 10 8 6 -1. + <_> + 11 12 8 2 3. + <_> + + <_> + 0 15 14 3 -1. + <_> + 0 16 14 1 3. + <_> + + <_> + 11 10 8 6 -1. + <_> + 11 12 8 2 3. + <_> + + <_> + 1 10 8 6 -1. + <_> + 1 12 8 2 3. + <_> + + <_> + 1 0 18 19 -1. + <_> + 7 0 6 19 3. + <_> + + <_> + 0 9 6 10 -1. + <_> + 3 9 3 10 2. + <_> + + <_> + 11 15 9 4 -1. + <_> + 11 17 9 2 2. + <_> + + <_> + 6 15 7 4 -1. + <_> + 6 17 7 2 2. + <_> + + <_> + 4 3 12 10 -1. + <_> + 8 3 4 10 3. + <_> + + <_> + 7 10 3 10 -1. + <_> + 7 15 3 5 2. + <_> + + <_> + 4 14 13 3 -1. + <_> + 4 15 13 1 3. + <_> + + <_> + 0 15 9 4 -1. + <_> + 0 17 9 2 2. + <_> + + <_> + 6 12 14 3 -1. + <_> + 6 13 14 1 3. + <_> + + <_> + 8 2 4 12 -1. + <_> + 8 6 4 4 3. + <_> + + <_> + 11 10 6 6 -1. + <_> + 11 10 3 6 2. + <_> + + <_> + 7 0 5 15 -1. + <_> + 7 5 5 5 3. + <_> + + <_> + 4 7 13 2 -1. + <_> + 4 8 13 1 2. + <_> + + <_> + 2 8 4 12 -1. + <_> + 2 12 4 4 3. + <_> + + <_> + 12 11 7 4 -1. + <_> + 12 13 7 2 2. + <_> + + <_> + 7 5 6 15 -1. + <_> + 9 5 2 15 3. + <_> + + <_> + 12 11 7 4 -1. + <_> + 12 13 7 2 2. + <_> + + <_> + 1 11 7 4 -1. + <_> + 1 13 7 2 2. + <_> + + <_> + 7 13 13 3 -1. + <_> + 7 14 13 1 3. + <_> + + <_> + 6 0 6 7 -1. + <_> + 8 0 2 7 3. + <_> + + <_> + 3 2 14 2 -1. + <_> + 3 3 14 1 2. + <_> + + <_> + 8 1 4 14 -1. + <_> + 8 8 4 7 2. + <_> + + <_> + 2 6 17 6 -1. + <_> + 2 9 17 3 2. + <_> + + <_> + 0 7 5 9 -1. + <_> + 0 10 5 3 3. + <_> + + <_> + 4 5 13 2 -1. + <_> + 4 6 13 1 2. + <_> + + <_> + 2 9 14 2 -1. + <_> + 2 10 14 1 2. + <_> + + <_> + 5 15 13 3 -1. + <_> + 5 16 13 1 3. + <_> + + <_> + 5 0 3 14 -1. + <_> + 6 0 1 14 3. + <_> + + <_> + 8 5 6 7 -1. + <_> + 10 5 2 7 3. + <_> + + <_> + 6 5 6 7 -1. + <_> + 8 5 2 7 3. + <_> + + <_> + 4 0 14 4 -1. + <_> + 11 0 7 2 2. + <_> + 4 2 7 2 2. + <_> + + <_> + 0 1 20 4 -1. + <_> + 0 1 10 2 2. + <_> + 10 3 10 2 2. + <_> + + <_> + 7 0 7 6 -1. + <_> + 7 3 7 3 2. + <_> + + <_> + 5 2 6 10 -1. + <_> + 7 2 2 10 3. + <_> + + <_> + 0 0 20 3 -1. + <_> + 0 1 20 1 3. + <_> + + <_> + 1 8 13 3 -1. + <_> + 1 9 13 1 3. + <_> + + <_> + 7 6 6 7 -1. + <_> + 9 6 2 7 3. + <_> + + <_> + 0 1 20 3 -1. + <_> + 0 2 20 1 3. + <_> + + <_> + 18 3 2 17 -1. + <_> + 18 3 1 17 2. + <_> + + <_> + 0 0 20 10 -1. + <_> + 0 0 10 5 2. + <_> + 10 5 10 5 2. + <_> + + <_> + 4 8 14 4 -1. + <_> + 11 8 7 2 2. + <_> + 4 10 7 2 2. + <_> + + <_> + 0 3 7 6 -1. + <_> + 0 5 7 2 3. + <_> + + <_> + 4 8 14 4 -1. + <_> + 11 8 7 2 2. + <_> + 4 10 7 2 2. + <_> + + <_> + 2 8 14 4 -1. + <_> + 2 8 7 2 2. + <_> + 9 10 7 2 2. + <_> + + <_> + 3 4 16 10 -1. + <_> + 11 4 8 5 2. + <_> + 3 9 8 5 2. + <_> + + <_> + 6 3 8 6 -1. + <_> + 6 5 8 2 3. + <_> + + <_> + 5 3 13 2 -1. + <_> + 5 4 13 1 2. + <_> + + <_> + 4 10 6 7 -1. + <_> + 7 10 3 7 2. + <_> + + <_> + 11 7 4 13 -1. + <_> + 11 7 2 13 2. + <_> + + <_> + 5 7 4 13 -1. + <_> + 7 7 2 13 2. + <_> + + <_> + 5 10 14 3 -1. + <_> + 5 11 14 1 3. + <_> + + <_> + 2 6 3 14 -1. + <_> + 2 13 3 7 2. + <_> + + <_> + 3 9 15 3 -1. + <_> + 8 9 5 3 3. + <_> + + <_> + 2 4 6 16 -1. + <_> + 2 4 3 8 2. + <_> + 5 12 3 8 2. + <_> + + <_> + 12 0 3 13 -1. + <_> + 13 0 1 13 3. + <_> + + <_> + 4 0 8 20 -1. + <_> + 4 10 8 10 2. + <_> + + <_> + 8 2 7 9 -1. + <_> + 8 5 7 3 3. + <_> + + <_> + 5 0 3 13 -1. + <_> + 6 0 1 13 3. + <_> + + <_> + 11 2 6 10 -1. + <_> + 14 2 3 5 2. + <_> + 11 7 3 5 2. + <_> + + <_> + 5 9 6 7 -1. + <_> + 7 9 2 7 3. + <_> + + <_> + 14 0 3 13 -1. + <_> + 15 0 1 13 3. + <_> + + <_> + 7 7 6 7 -1. + <_> + 9 7 2 7 3. + <_> + + <_> + 14 0 3 13 -1. + <_> + 15 0 1 13 3. + <_> + + <_> + 1 14 13 3 -1. + <_> + 1 15 13 1 3. + <_> + + <_> + 7 14 13 3 -1. + <_> + 7 15 13 1 3. + <_> + + <_> + 0 12 9 4 -1. + <_> + 0 14 9 2 2. + <_> + + <_> + 7 7 8 10 -1. + <_> + 11 7 4 5 2. + <_> + 7 12 4 5 2. + <_> + + <_> + 5 7 8 10 -1. + <_> + 5 7 4 5 2. + <_> + 9 12 4 5 2. + <_> + + <_> + 14 15 6 5 -1. + <_> + 14 15 3 5 2. + <_> + + <_> + 3 14 13 6 -1. + <_> + 3 16 13 2 3. + <_> + + <_> + 3 12 14 4 -1. + <_> + 10 12 7 2 2. + <_> + 3 14 7 2 2. + <_> + + <_> + 0 15 6 5 -1. + <_> + 3 15 3 5 2. + <_> + + <_> + 14 0 3 13 -1. + <_> + 15 0 1 13 3. + <_> + + <_> + 3 0 3 13 -1. + <_> + 4 0 1 13 3. + <_> + + <_> + 2 11 18 8 -1. + <_> + 8 11 6 8 3. + <_> + + <_> + 2 3 3 15 -1. + <_> + 3 3 1 15 3. + <_> + + <_> + 16 0 3 13 -1. + <_> + 17 0 1 13 3. + <_> + + <_> + 3 3 6 7 -1. + <_> + 5 3 2 7 3. + <_> + + <_> + 16 0 3 13 -1. + <_> + 17 0 1 13 3. + <_> + + <_> + 1 0 3 13 -1. + <_> + 2 0 1 13 3. + <_> + + <_> + 8 1 4 16 -1. + <_> + 10 1 2 8 2. + <_> + 8 9 2 8 2. + <_> + + <_> + 7 6 5 9 -1. + <_> + 7 9 5 3 3. + <_> + + <_> + 6 5 8 8 -1. + <_> + 6 9 8 4 2. + <_> + + <_> + 0 1 6 5 -1. + <_> + 3 1 3 5 2. + <_> + + <_> + 8 0 6 7 -1. + <_> + 10 0 2 7 3. + <_> + + <_> + 6 0 6 7 -1. + <_> + 8 0 2 7 3. + <_> + + <_> + 11 0 9 7 -1. + <_> + 14 0 3 7 3. + <_> + + <_> + 0 11 12 7 -1. + <_> + 6 11 6 7 2. + <_> + + <_> + 7 5 9 5 -1. + <_> + 10 5 3 5 3. + <_> + + <_> + 2 1 15 2 -1. + <_> + 2 2 15 1 2. + <_> + + <_> + 15 0 5 9 -1. + <_> + 15 3 5 3 3. + <_> + + <_> + 0 0 6 5 -1. + <_> + 3 0 3 5 2. + <_> + + <_> + 6 8 14 4 -1. + <_> + 13 8 7 2 2. + <_> + 6 10 7 2 2. + <_> + + <_> + 9 0 2 13 -1. + <_> + 10 0 1 13 2. + <_> + + <_> + 4 6 12 3 -1. + <_> + 4 6 6 3 2. + <_> + + <_> + 4 2 6 7 -1. + <_> + 7 2 3 7 2. + <_> + + <_> + 9 5 4 11 -1. + <_> + 9 5 2 11 2. + <_> + + <_> + 7 5 4 11 -1. + <_> + 9 5 2 11 2. + <_> + + <_> + 5 12 15 8 -1. + <_> + 10 12 5 8 3. + <_> + + <_> + 5 7 4 9 -1. + <_> + 7 7 2 9 2. + <_> + + <_> + 6 6 10 4 -1. + <_> + 6 8 10 2 2. + <_> + + <_> + 0 4 5 9 -1. + <_> + 0 7 5 3 3. + <_> + + <_> + 7 13 13 3 -1. + <_> + 7 14 13 1 3. + <_> + + <_> + 0 13 13 3 -1. + <_> + 0 14 13 1 3. + <_> + + <_> + 7 8 10 12 -1. + <_> + 7 12 10 4 3. + <_> + + <_> + 2 8 9 12 -1. + <_> + 5 8 3 12 3. + <_> + + <_> + 11 0 9 9 -1. + <_> + 11 3 9 3 3. + <_> + + <_> + 5 9 9 5 -1. + <_> + 8 9 3 5 3. + <_> + + <_> + 9 2 6 10 -1. + <_> + 12 2 3 5 2. + <_> + 9 7 3 5 2. + <_> + + <_> + 0 11 7 6 -1. + <_> + 0 13 7 2 3. + <_> + + <_> + 6 3 10 6 -1. + <_> + 11 3 5 3 2. + <_> + 6 6 5 3 2. + <_> + + <_> + 3 4 14 6 -1. + <_> + 3 4 7 3 2. + <_> + 10 7 7 3 2. + <_> + + <_> + 10 0 6 7 -1. + <_> + 12 0 2 7 3. + <_> + + <_> + 4 0 6 7 -1. + <_> + 6 0 2 7 3. + <_> + + <_> + 5 3 12 6 -1. + <_> + 9 3 4 6 3. + <_> + + <_> + 3 3 12 6 -1. + <_> + 7 3 4 6 3. + <_> + + <_> + 8 4 6 9 -1. + <_> + 10 4 2 9 3. + <_> + + <_> + 2 12 13 2 -1. + <_> + 2 13 13 1 2. + <_> + + <_> + 3 11 14 4 -1. + <_> + 3 13 14 2 2. + <_> + + <_> + 0 0 12 20 -1. + <_> + 6 0 6 20 2. + <_> + + <_> + 6 6 10 3 -1. + <_> + 6 6 5 3 2. + <_> + + <_> + 4 6 10 3 -1. + <_> + 9 6 5 3 2. + <_> + + <_> + 12 0 8 8 -1. + <_> + 16 0 4 4 2. + <_> + 12 4 4 4 2. + <_> + + <_> + 0 0 7 6 -1. + <_> + 0 2 7 2 3. + <_> + + <_> + 3 1 15 12 -1. + <_> + 3 7 15 6 2. + <_> + + <_> + 0 0 10 10 -1. + <_> + 0 0 5 5 2. + <_> + 5 5 5 5 2. + <_> + + <_> + 16 1 4 8 -1. + <_> + 16 5 4 4 2. + <_> + + <_> + 0 14 12 5 -1. + <_> + 4 14 4 5 3. + <_> + + <_> + 11 5 2 15 -1. + <_> + 11 5 1 15 2. + <_> + + <_> + 6 2 7 6 -1. + <_> + 6 5 7 3 2. + <_> + + <_> + 10 2 6 9 -1. + <_> + 10 5 6 3 3. + <_> + + <_> + 7 5 2 15 -1. + <_> + 8 5 1 15 2. + <_> + + <_> + 18 0 2 18 -1. + <_> + 18 0 1 18 2. + <_> + + <_> + 0 8 4 8 -1. + <_> + 0 12 4 4 2. + <_> + + <_> + 8 6 4 7 -1. + <_> + 8 6 2 7 2. + <_> + + <_> + 6 7 8 4 -1. + <_> + 10 7 4 4 2. + <_> + + <_> + 5 9 10 6 -1. + <_> + 10 9 5 3 2. + <_> + 5 12 5 3 2. + <_> + + <_> + 4 7 5 8 -1. + <_> + 4 11 5 4 2. + <_> + + <_> + 13 8 7 6 -1. + <_> + 13 10 7 2 3. + <_> + + <_> + 0 8 7 6 -1. + <_> + 0 10 7 2 3. + <_> + + <_> + 4 0 12 19 -1. + <_> + 4 0 6 19 2. + <_> + + <_> + 0 12 15 8 -1. + <_> + 5 12 5 8 3. + <_> + + <_> + 6 8 14 4 -1. + <_> + 13 8 7 2 2. + <_> + 6 10 7 2 2. + <_> + + <_> + 1 9 13 3 -1. + <_> + 1 10 13 1 3. + <_> + + <_> + 18 0 2 18 -1. + <_> + 18 0 1 18 2. + <_> + + <_> + 0 0 2 18 -1. + <_> + 1 0 1 18 2. + <_> + + <_> + 16 6 4 14 -1. + <_> + 16 6 2 14 2. + <_> + + <_> + 4 0 8 8 -1. + <_> + 4 0 4 4 2. + <_> + 8 4 4 4 2. + <_> + + <_> + 2 0 16 10 -1. + <_> + 10 0 8 5 2. + <_> + 2 5 8 5 2. + <_> + + <_> + 3 10 6 7 -1. + <_> + 6 10 3 7 2. + <_> + + <_> + 1 9 18 5 -1. + <_> + 7 9 6 5 3. + <_> + + <_> + 0 7 4 9 -1. + <_> + 2 7 2 9 2. + <_> + + <_> + 14 0 6 16 -1. + <_> + 14 0 3 16 2. + <_> + + <_> + 0 3 5 9 -1. + <_> + 0 6 5 3 3. + <_> + + <_> + 11 2 9 12 -1. + <_> + 11 6 9 4 3. + <_> + + <_> + 0 2 9 12 -1. + <_> + 0 6 9 4 3. + <_> + + <_> + 8 2 5 12 -1. + <_> + 8 6 5 4 3. + <_> + + <_> + 5 6 9 9 -1. + <_> + 5 9 9 3 3. + <_> + + <_> + 0 17 20 2 -1. + <_> + 0 18 20 1 2. + <_> + + <_> + 7 5 6 7 -1. + <_> + 9 5 2 7 3. + <_> + + <_> + 7 0 6 8 -1. + <_> + 9 0 2 8 3. + <_> + + <_> + 6 5 8 14 -1. + <_> + 6 12 8 7 2. + <_> + + <_> + 11 0 9 9 -1. + <_> + 11 3 9 3 3. + <_> + + <_> + 0 0 9 9 -1. + <_> + 0 3 9 3 3. + <_> + + <_> + 11 0 4 14 -1. + <_> + 13 0 2 7 2. + <_> + 11 7 2 7 2. + <_> + + <_> + 0 1 18 4 -1. + <_> + 6 1 6 4 3. + <_> + + <_> + 11 0 4 14 -1. + <_> + 13 0 2 7 2. + <_> + 11 7 2 7 2. + <_> + + <_> + 4 0 4 14 -1. + <_> + 4 0 2 7 2. + <_> + 6 7 2 7 2. + <_> + + <_> + 6 13 10 6 -1. + <_> + 11 13 5 3 2. + <_> + 6 16 5 3 2. + <_> + + <_> + 1 8 14 4 -1. + <_> + 1 8 7 2 2. + <_> + 8 10 7 2 2. + <_> + + <_> + 11 1 4 9 -1. + <_> + 11 1 2 9 2. + <_> + + <_> + 5 1 4 9 -1. + <_> + 7 1 2 9 2. + <_> + + <_> + 9 0 6 6 -1. + <_> + 9 0 3 6 2. + <_> + + <_> + 5 0 6 6 -1. + <_> + 8 0 3 6 2. + <_> + + <_> + 6 5 8 4 -1. + <_> + 6 5 4 4 2. + <_> + + <_> + 2 9 12 4 -1. + <_> + 6 9 4 4 3. + <_> + + <_> + 10 4 3 14 -1. + <_> + 11 4 1 14 3. + <_> + + <_> + 7 4 3 14 -1. + <_> + 8 4 1 14 3. + <_> + + <_> + 0 0 20 14 -1. + <_> + 0 0 10 14 2. + <_> + + <_> + 2 9 16 10 -1. + <_> + 10 9 8 10 2. + <_> + + <_> + 2 5 16 8 -1. + <_> + 10 5 8 4 2. + <_> + 2 9 8 4 2. + <_> + + <_> + 4 2 10 6 -1. + <_> + 4 4 10 2 3. + <_> + + <_> + 15 2 5 9 -1. + <_> + 15 5 5 3 3. + <_> + + <_> + 0 9 18 3 -1. + <_> + 0 10 18 1 3. + <_> + + <_> + 3 11 14 9 -1. + <_> + 3 14 14 3 3. + <_> + + <_> + 1 14 12 6 -1. + <_> + 1 14 6 3 2. + <_> + 7 17 6 3 2. + <_> + + <_> + 6 15 14 4 -1. + <_> + 13 15 7 2 2. + <_> + 6 17 7 2 2. + <_> + + <_> + 3 13 10 6 -1. + <_> + 3 13 5 3 2. + <_> + 8 16 5 3 2. + <_> + + <_> + 0 6 20 3 -1. + <_> + 0 7 20 1 3. + <_> + + <_> + 0 2 5 9 -1. + <_> + 0 5 5 3 3. + <_> + + <_> + 12 14 7 6 -1. + <_> + 12 16 7 2 3. + <_> + + <_> + 0 15 16 3 -1. + <_> + 0 16 16 1 3. + <_> + + <_> + 2 16 16 4 -1. + <_> + 10 16 8 2 2. + <_> + 2 18 8 2 2. + <_> + + <_> + 1 15 13 3 -1. + <_> + 1 16 13 1 3. + <_> + + <_> + 5 10 12 6 -1. + <_> + 11 10 6 3 2. + <_> + 5 13 6 3 2. + <_> + + <_> + 3 10 12 6 -1. + <_> + 3 10 6 3 2. + <_> + 9 13 6 3 2. + <_> + + <_> + 7 14 10 6 -1. + <_> + 12 14 5 3 2. + <_> + 7 17 5 3 2. + <_> + + <_> + 2 13 7 6 -1. + <_> + 2 15 7 2 3. + <_> + + <_> + 5 14 14 2 -1. + <_> + 5 15 14 1 2. + <_> + + <_> + 1 16 18 3 -1. + <_> + 1 17 18 1 3. + <_> + + <_> + 16 1 4 14 -1. + <_> + 18 1 2 7 2. + <_> + 16 8 2 7 2. + <_> + + <_> + 6 5 8 14 -1. + <_> + 6 12 8 7 2. + <_> + + <_> + 5 14 14 2 -1. + <_> + 5 15 14 1 2. + <_> + + <_> + 4 10 6 8 -1. + <_> + 6 10 2 8 3. + <_> + + <_> + 5 4 10 12 -1. + <_> + 10 4 5 6 2. + <_> + 5 10 5 6 2. + <_> + + <_> + 3 5 13 3 -1. + <_> + 3 6 13 1 3. + <_> + + <_> + 3 13 14 4 -1. + <_> + 10 13 7 2 2. + <_> + 3 15 7 2 2. + <_> + + <_> + 5 9 6 10 -1. + <_> + 5 9 3 5 2. + <_> + 8 14 3 5 2. + <_> + + <_> + 9 7 6 7 -1. + <_> + 9 7 3 7 2. + <_> + + <_> + 5 7 6 7 -1. + <_> + 8 7 3 7 2. + <_> + + <_> + 7 13 8 6 -1. + <_> + 7 15 8 2 3. + <_> + + <_> + 0 0 8 12 -1. + <_> + 0 0 4 6 2. + <_> + 4 6 4 6 2. + <_> + + <_> + 6 8 12 5 -1. + <_> + 10 8 4 5 3. + <_> + + <_> + 5 9 8 5 -1. + <_> + 9 9 4 5 2. + <_> + + <_> + 7 5 13 3 -1. + <_> + 7 6 13 1 3. + <_> + + <_> + 0 5 13 3 -1. + <_> + 0 6 13 1 3. + <_> + + <_> + 4 0 13 6 -1. + <_> + 4 2 13 2 3. + <_> + + <_> + 0 2 8 4 -1. + <_> + 4 2 4 4 2. + <_> + + <_> + 4 7 12 4 -1. + <_> + 4 9 12 2 2. + <_> + + <_> + 2 12 10 8 -1. + <_> + 2 12 5 4 2. + <_> + 7 16 5 4 2. + <_> + + <_> + 9 4 2 14 -1. + <_> + 9 11 2 7 2. + <_> + + <_> + 4 4 3 10 -1. + <_> + 4 9 3 5 2. + <_> + + <_> + 3 0 15 2 -1. + <_> + 3 1 15 1 2. + <_> + + <_> + 0 12 8 6 -1. + <_> + 0 14 8 2 3. + <_> + + <_> + 4 18 13 2 -1. + <_> + 4 19 13 1 2. + <_> + + <_> + 2 12 16 4 -1. + <_> + 2 12 8 2 2. + <_> + 10 14 8 2 2. + <_> + + <_> + 5 3 11 9 -1. + <_> + 5 6 11 3 3. + <_> + + <_> + 0 2 20 10 -1. + <_> + 0 7 20 5 2. + <_> + + <_> + 6 9 8 8 -1. + <_> + 10 9 4 4 2. + <_> + 6 13 4 4 2. + <_> + + <_> + 3 8 6 10 -1. + <_> + 3 8 3 5 2. + <_> + 6 13 3 5 2. + <_> + + <_> + 7 13 13 3 -1. + <_> + 7 14 13 1 3. + <_> + + <_> + 1 0 18 6 -1. + <_> + 7 0 6 6 3. + <_> + + <_> + 11 0 6 7 -1. + <_> + 13 0 2 7 3. + <_> + + <_> + 3 0 6 7 -1. + <_> + 5 0 2 7 3. + <_> + + <_> + 6 5 9 5 -1. + <_> + 9 5 3 5 3. + <_> + + <_> + 1 7 18 4 -1. + <_> + 1 7 9 2 2. + <_> + 10 9 9 2 2. + <_> + + <_> + 8 5 4 7 -1. + <_> + 8 5 2 7 2. + <_> + + <_> + 7 6 5 8 -1. + <_> + 7 10 5 4 2. + <_> + + <_> + 4 9 12 4 -1. + <_> + 8 9 4 4 3. + <_> + + <_> + 4 4 12 8 -1. + <_> + 8 4 4 8 3. + <_> + + <_> + 12 10 7 4 -1. + <_> + 12 12 7 2 2. + <_> + + <_> + 4 0 8 8 -1. + <_> + 4 0 4 4 2. + <_> + 8 4 4 4 2. + <_> + + <_> + 13 8 7 6 -1. + <_> + 13 10 7 2 3. + <_> + + <_> + 1 5 12 4 -1. + <_> + 5 5 4 4 3. + <_> + + <_> + 12 0 8 8 -1. + <_> + 16 0 4 4 2. + <_> + 12 4 4 4 2. + <_> + + <_> + 0 2 5 9 -1. + <_> + 0 5 5 3 3. + <_> + + <_> + 7 0 6 7 -1. + <_> + 9 0 2 7 3. + <_> + + <_> + 1 3 14 4 -1. + <_> + 1 3 7 2 2. + <_> + 8 5 7 2 2. + <_> + + <_> + 12 0 8 8 -1. + <_> + 16 0 4 4 2. + <_> + 12 4 4 4 2. + <_> + + <_> + 0 0 8 8 -1. + <_> + 0 0 4 4 2. + <_> + 4 4 4 4 2. + <_> + + <_> + 7 12 10 8 -1. + <_> + 7 16 10 4 2. + <_> + + <_> + 0 11 13 3 -1. + <_> + 0 12 13 1 3. + <_> + + <_> + 10 12 7 8 -1. + <_> + 10 16 7 4 2. + <_> + + <_> + 1 2 13 2 -1. + <_> + 1 3 13 1 2. + <_> + + <_> + 6 15 13 3 -1. + <_> + 6 16 13 1 3. + <_> + + <_> + 0 1 13 3 -1. + <_> + 0 2 13 1 3. + <_> + + <_> + 8 14 10 6 -1. + <_> + 13 14 5 3 2. + <_> + 8 17 5 3 2. + <_> + + <_> + 0 15 20 4 -1. + <_> + 0 15 10 2 2. + <_> + 10 17 10 2 2. + <_> + + <_> + 4 4 16 4 -1. + <_> + 4 6 16 2 2. + <_> + + <_> + 7 5 6 11 -1. + <_> + 9 5 2 11 3. + <_> + + <_> + 11 10 8 10 -1. + <_> + 15 10 4 5 2. + <_> + 11 15 4 5 2. + <_> + + <_> + 1 4 10 6 -1. + <_> + 1 4 5 3 2. + <_> + 6 7 5 3 2. + <_> + + <_> + 7 7 13 2 -1. + <_> + 7 8 13 1 2. + <_> + + <_> + 8 6 3 13 -1. + <_> + 9 6 1 13 3. + <_> + + <_> + 5 4 13 3 -1. + <_> + 5 5 13 1 3. + <_> + + <_> + 6 0 6 7 -1. + <_> + 8 0 2 7 3. + <_> + + <_> + 12 10 8 10 -1. + <_> + 16 10 4 5 2. + <_> + 12 15 4 5 2. + <_> + + <_> + 0 11 18 4 -1. + <_> + 0 11 9 2 2. + <_> + 9 13 9 2 2. + <_> + + <_> + 12 10 8 10 -1. + <_> + 16 10 4 5 2. + <_> + 12 15 4 5 2. + <_> + + <_> + 0 10 8 10 -1. + <_> + 0 10 4 5 2. + <_> + 4 15 4 5 2. + <_> + + <_> + 7 6 12 14 -1. + <_> + 13 6 6 7 2. + <_> + 7 13 6 7 2. + <_> + + <_> + 1 10 7 4 -1. + <_> + 1 12 7 2 2. + <_> + + <_> + 12 10 4 7 -1. + <_> + 12 10 2 7 2. + <_> + + <_> + 0 0 20 2 -1. + <_> + 10 0 10 2 2. + <_> + + <_> + 0 0 20 3 -1. + <_> + 0 1 20 1 3. + <_> + + <_> + 0 0 20 3 -1. + <_> + 0 1 20 1 3. + <_> + + <_> + 12 10 4 7 -1. + <_> + 12 10 2 7 2. + <_> + + <_> + 4 10 4 7 -1. + <_> + 6 10 2 7 2. + <_> + + <_> + 12 0 2 14 -1. + <_> + 12 0 1 14 2. + <_> + + <_> + 4 2 12 17 -1. + <_> + 10 2 6 17 2. + <_> + + <_> + 12 12 6 7 -1. + <_> + 12 12 3 7 2. + <_> + + <_> + 1 9 10 10 -1. + <_> + 6 9 5 10 2. + <_> + + <_> + 4 6 13 3 -1. + <_> + 4 7 13 1 3. + <_> + + <_> + 7 6 5 9 -1. + <_> + 7 9 5 3 3. + <_> + + <_> + 9 5 4 14 -1. + <_> + 11 5 2 7 2. + <_> + 9 12 2 7 2. + <_> + + <_> + 8 5 4 14 -1. + <_> + 8 5 2 7 2. + <_> + 10 12 2 7 2. + <_> + + <_> + 9 3 6 12 -1. + <_> + 11 3 2 12 3. + <_> + + <_> + 5 3 6 12 -1. + <_> + 7 3 2 12 3. + <_> + + <_> + 4 10 14 4 -1. + <_> + 11 10 7 2 2. + <_> + 4 12 7 2 2. + <_> + + <_> + 2 10 14 4 -1. + <_> + 2 10 7 2 2. + <_> + 9 12 7 2 2. + <_> + + <_> + 7 4 6 7 -1. + <_> + 9 4 2 7 3. + <_> + + <_> + 1 14 13 2 -1. + <_> + 1 15 13 1 2. + <_> + + <_> + 7 14 13 2 -1. + <_> + 7 15 13 1 2. + <_> + + <_> + 4 13 12 4 -1. + <_> + 4 15 12 2 2. + <_> + + <_> + 12 13 7 4 -1. + <_> + 12 15 7 2 2. + <_> + + <_> + 1 13 7 4 -1. + <_> + 1 15 7 2 2. + <_> + + <_> + 10 6 3 14 -1. + <_> + 11 6 1 14 3. + <_> + + <_> + 7 6 3 14 -1. + <_> + 8 6 1 14 3. + <_> + + <_> + 8 13 6 7 -1. + <_> + 10 13 2 7 3. + <_> + + <_> + 2 5 6 10 -1. + <_> + 2 5 3 5 2. + <_> + 5 10 3 5 2. + <_> + + <_> + 15 3 3 16 -1. + <_> + 16 3 1 16 3. + <_> + + <_> + 2 3 3 16 -1. + <_> + 3 3 1 16 3. + <_> + + <_> + 14 0 6 13 -1. + <_> + 14 0 3 13 2. + <_> + + <_> + 0 0 6 13 -1. + <_> + 3 0 3 13 2. + <_> + + <_> + 17 6 3 14 -1. + <_> + 17 13 3 7 2. + <_> + + <_> + 4 0 3 13 -1. + <_> + 5 0 1 13 3. + <_> + + <_> + 17 6 3 14 -1. + <_> + 17 13 3 7 2. + <_> + + <_> + 1 10 10 10 -1. + <_> + 1 10 5 5 2. + <_> + 6 15 5 5 2. + <_> + + <_> + 0 0 20 10 -1. + <_> + 0 5 20 5 2. + <_> + + <_> + 2 8 13 3 -1. + <_> + 2 9 13 1 3. + <_> + + <_> + 7 6 10 14 -1. + <_> + 7 13 10 7 2. + <_> + + <_> + 0 7 13 2 -1. + <_> + 0 8 13 1 2. + <_> + + <_> + 5 6 10 3 -1. + <_> + 5 6 5 3 2. + <_> + + <_> + 8 5 4 7 -1. + <_> + 10 5 2 7 2. + <_> + + <_> + 8 6 6 10 -1. + <_> + 10 6 2 10 3. + <_> + + <_> + 3 13 14 6 -1. + <_> + 3 13 7 3 2. + <_> + 10 16 7 3 2. + <_> + + <_> + 10 1 4 19 -1. + <_> + 10 1 2 19 2. + <_> + + <_> + 1 10 18 6 -1. + <_> + 1 12 18 2 3. + <_> + + <_> + 6 6 10 3 -1. + <_> + 6 6 5 3 2. + <_> + + <_> + 6 1 4 19 -1. + <_> + 8 1 2 19 2. + <_> + + <_> + 7 6 6 7 -1. + <_> + 9 6 2 7 3. + <_> + + <_> + 0 5 20 2 -1. + <_> + 0 6 20 1 2. + <_> + + <_> + 6 14 13 3 -1. + <_> + 6 15 13 1 3. + <_> + + <_> + 0 14 13 3 -1. + <_> + 0 15 13 1 3. + <_> + + <_> + 12 0 4 7 -1. + <_> + 12 0 2 7 2. + <_> + + <_> + 0 2 18 8 -1. + <_> + 6 2 6 8 3. + <_> + + <_> + 10 0 10 9 -1. + <_> + 10 0 5 9 2. + <_> + + <_> + 0 0 10 9 -1. + <_> + 5 0 5 9 2. + <_> + + <_> + 12 13 7 6 -1. + <_> + 12 15 7 2 3. + <_> + + <_> + 1 13 5 6 -1. + <_> + 1 16 5 3 2. + <_> + + <_> + 8 4 6 10 -1. + <_> + 11 4 3 5 2. + <_> + 8 9 3 5 2. + <_> + + <_> + 4 5 12 10 -1. + <_> + 4 5 6 5 2. + <_> + 10 10 6 5 2. + <_> + + <_> + 13 9 5 9 -1. + <_> + 13 12 5 3 3. + <_> + + <_> + 0 0 2 18 -1. + <_> + 1 0 1 18 2. + <_> + + <_> + 13 11 7 6 -1. + <_> + 13 13 7 2 3. + <_> + + <_> + 1 12 18 8 -1. + <_> + 1 12 9 4 2. + <_> + 10 16 9 4 2. + <_> + + <_> + 7 10 6 10 -1. + <_> + 10 10 3 5 2. + <_> + 7 15 3 5 2. + <_> + + <_> + 4 3 10 4 -1. + <_> + 4 5 10 2 2. + <_> + + <_> + 6 1 9 6 -1. + <_> + 6 3 9 2 3. + <_> + + <_> + 5 4 10 10 -1. + <_> + 5 9 10 5 2. + <_> + + <_> + 8 10 5 8 -1. + <_> + 8 14 5 4 2. + <_> + + <_> + 3 8 13 10 -1. + <_> + 3 13 13 5 2. + <_> + + <_> + 12 8 5 12 -1. + <_> + 12 14 5 6 2. + <_> + + <_> + 0 11 7 6 -1. + <_> + 0 13 7 2 3. + <_> + + <_> + 12 0 2 17 -1. + <_> + 12 0 1 17 2. + <_> + + <_> + 6 0 2 17 -1. + <_> + 7 0 1 17 2. + <_> + + <_> + 0 5 20 6 -1. + <_> + 0 7 20 2 3. + <_> + + <_> + 0 1 2 13 -1. + <_> + 1 1 1 13 2. + <_> + + <_> + 12 0 5 15 -1. + <_> + 12 5 5 5 3. + <_> + + <_> + 3 0 5 15 -1. + <_> + 3 5 5 5 3. + <_> + + <_> + 10 3 9 4 -1. + <_> + 10 5 9 2 2. + <_> + + <_> + 3 5 14 2 -1. + <_> + 3 6 14 1 2. + <_> + + <_> + 3 2 14 6 -1. + <_> + 10 2 7 3 2. + <_> + 3 5 7 3 2. + <_> + + <_> + 6 4 8 6 -1. + <_> + 6 6 8 2 3. + <_> + + <_> + 11 3 4 8 -1. + <_> + 11 3 2 8 2. + <_> + + <_> + 8 5 3 13 -1. + <_> + 9 5 1 13 3. + <_> + + <_> + 9 0 3 13 -1. + <_> + 10 0 1 13 3. + <_> + + <_> + 5 3 6 7 -1. + <_> + 7 3 2 7 3. + <_> + + <_> + 2 6 18 5 -1. + <_> + 8 6 6 5 3. + <_> + + <_> + 6 8 8 4 -1. + <_> + 10 8 4 4 2. + <_> + + <_> + 8 4 6 10 -1. + <_> + 11 4 3 5 2. + <_> + 8 9 3 5 2. + <_> + + <_> + 4 5 12 6 -1. + <_> + 4 5 6 3 2. + <_> + 10 8 6 3 2. + <_> + + <_> + 9 2 6 10 -1. + <_> + 12 2 3 5 2. + <_> + 9 7 3 5 2. + <_> + + <_> + 3 12 7 8 -1. + <_> + 3 16 7 4 2. + <_> + + <_> + 8 5 4 7 -1. + <_> + 8 5 2 7 2. + <_> + + <_> + 6 13 6 7 -1. + <_> + 8 13 2 7 3. + <_> + + <_> + 2 6 18 9 -1. + <_> + 2 9 18 3 3. + <_> + + <_> + 1 8 16 2 -1. + <_> + 9 8 8 2 2. + <_> + + <_> + 5 2 11 4 -1. + <_> + 5 4 11 2 2. + <_> + + <_> + 0 12 10 8 -1. + <_> + 0 12 5 4 2. + <_> + 5 16 5 4 2. + <_> + + <_> + 3 1 15 8 -1. + <_> + 8 1 5 8 3. + <_> + + <_> + 2 1 15 8 -1. + <_> + 7 1 5 8 3. + <_> + + <_> + 8 0 6 7 -1. + <_> + 10 0 2 7 3. + <_> + + <_> + 3 4 14 9 -1. + <_> + 3 7 14 3 3. + <_> + + <_> + 4 3 15 5 -1. + <_> + 9 3 5 5 3. + <_> + + <_> + 0 2 20 12 -1. + <_> + 0 8 20 6 2. + <_> + + <_> + 4 1 12 4 -1. + <_> + 8 1 4 4 3. + <_> + + <_> + 0 2 20 12 -1. + <_> + 0 8 20 6 2. + <_> + + <_> + 10 11 4 9 -1. + <_> + 10 11 2 9 2. + <_> + + <_> + 2 1 12 15 -1. + <_> + 6 1 4 15 3. + <_> + + <_> + 10 9 10 3 -1. + <_> + 10 9 5 3 2. + <_> + + <_> + 0 9 10 3 -1. + <_> + 5 9 5 3 2. + <_> + + <_> + 6 1 8 14 -1. + <_> + 6 8 8 7 2. + <_> + + <_> + 6 6 6 12 -1. + <_> + 6 6 3 6 2. + <_> + 9 12 3 6 2. + <_> + + <_> + 10 11 4 9 -1. + <_> + 10 11 2 9 2. + <_> + + <_> + 6 11 4 9 -1. + <_> + 8 11 2 9 2. + <_> + + <_> + 8 9 6 5 -1. + <_> + 8 9 3 5 2. + <_> + + <_> + 6 9 6 5 -1. + <_> + 9 9 3 5 2. + <_> + + <_> + 6 11 9 6 -1. + <_> + 9 11 3 6 3. + <_> + + <_> + 5 2 6 10 -1. + <_> + 5 2 3 5 2. + <_> + 8 7 3 5 2. + <_> + + <_> + 14 0 6 5 -1. + <_> + 14 0 3 5 2. + <_> + + <_> + 0 1 9 18 -1. + <_> + 3 1 3 18 3. + <_> + + <_> + 10 0 6 7 -1. + <_> + 12 0 2 7 3. + <_> + + <_> + 4 0 6 7 -1. + <_> + 6 0 2 7 3. + <_> + + <_> + 11 14 7 6 -1. + <_> + 11 16 7 2 3. + <_> + + <_> + 3 1 6 10 -1. + <_> + 3 1 3 5 2. + <_> + 6 6 3 5 2. + <_> + + <_> + 11 14 7 6 -1. + <_> + 11 16 7 2 3. + <_> + + <_> + 1 3 18 12 -1. + <_> + 1 3 9 6 2. + <_> + 10 9 9 6 2. + <_> + + <_> + 7 15 13 3 -1. + <_> + 7 16 13 1 3. + <_> + + <_> + 1 15 13 3 -1. + <_> + 1 16 13 1 3. + <_> + + <_> + 11 14 7 6 -1. + <_> + 11 16 7 2 3. + <_> + + <_> + 2 14 7 6 -1. + <_> + 2 16 7 2 3. + <_> + + <_> + 6 16 14 4 -1. + <_> + 13 16 7 2 2. + <_> + 6 18 7 2 2. + <_> + + <_> + 0 16 14 4 -1. + <_> + 0 16 7 2 2. + <_> + 7 18 7 2 2. + <_> + + <_> + 10 4 6 8 -1. + <_> + 12 4 2 8 3. + <_> + + <_> + 6 0 3 13 -1. + <_> + 7 0 1 13 3. + <_> + + <_> + 11 9 3 10 -1. + <_> + 11 14 3 5 2. + <_> + + <_> + 1 8 14 3 -1. + <_> + 1 9 14 1 3. + <_> + + <_> + 4 7 12 6 -1. + <_> + 4 9 12 2 3. + <_> + + <_> + 6 8 8 9 -1. + <_> + 6 11 8 3 3. + <_> + + <_> + 4 13 12 4 -1. + <_> + 4 15 12 2 2. + <_> + + <_> + 1 12 18 2 -1. + <_> + 1 13 18 1 2. + <_> + + <_> + 11 9 4 8 -1. + <_> + 11 13 4 4 2. + <_> + + <_> + 5 9 4 8 -1. + <_> + 5 13 4 4 2. + <_> + + <_> + 7 6 10 6 -1. + <_> + 12 6 5 3 2. + <_> + 7 9 5 3 2. + <_> + + <_> + 5 11 9 6 -1. + <_> + 8 11 3 6 3. + <_> + + <_> + 4 3 14 2 -1. + <_> + 4 3 7 2 2. + <_> + + <_> + 2 12 9 6 -1. + <_> + 5 12 3 6 3. + <_> + + <_> + 14 1 6 12 -1. + <_> + 17 1 3 6 2. + <_> + 14 7 3 6 2. + <_> + + <_> + 0 1 6 12 -1. + <_> + 0 1 3 6 2. + <_> + 3 7 3 6 2. + <_> + + <_> + 12 0 8 6 -1. + <_> + 12 2 8 2 3. + <_> + + <_> + 0 16 18 2 -1. + <_> + 0 17 18 1 2. + <_> + + <_> + 5 16 11 4 -1. + <_> + 5 18 11 2 2. + <_> + + <_> + 2 16 13 3 -1. + <_> + 2 17 13 1 3. + <_> + + <_> + 14 9 6 11 -1. + <_> + 16 9 2 11 3. + <_> + + <_> + 1 0 18 4 -1. + <_> + 7 0 6 4 3. + <_> + + <_> + 11 1 8 6 -1. + <_> + 11 3 8 2 3. + <_> + + <_> + 0 11 13 3 -1. + <_> + 0 12 13 1 3. + <_> + + <_> + 10 10 4 8 -1. + <_> + 10 14 4 4 2. + <_> + + <_> + 5 5 9 15 -1. + <_> + 8 5 3 15 3. + <_> + + <_> + 7 13 6 7 -1. + <_> + 9 13 2 7 3. + <_> + + <_> + 0 15 13 2 -1. + <_> + 0 16 13 1 2. + <_> + + <_> + 11 1 8 6 -1. + <_> + 11 3 8 2 3. + <_> + + <_> + 3 0 6 7 -1. + <_> + 5 0 2 7 3. + <_> + + <_> + 9 6 6 7 -1. + <_> + 11 6 2 7 3. + <_> + + <_> + 5 6 6 7 -1. + <_> + 7 6 2 7 3. + <_> + + <_> + 6 11 10 6 -1. + <_> + 11 11 5 3 2. + <_> + 6 14 5 3 2. + <_> + + <_> + 6 10 8 8 -1. + <_> + 6 10 4 4 2. + <_> + 10 14 4 4 2. + <_> + + <_> + 11 1 8 6 -1. + <_> + 11 3 8 2 3. + <_> + + <_> + 4 4 11 10 -1. + <_> + 4 9 11 5 2. + <_> + + <_> + 11 1 8 6 -1. + <_> + 11 3 8 2 3. + <_> + + <_> + 1 1 8 6 -1. + <_> + 1 3 8 2 3. + <_> + + <_> + 8 2 4 12 -1. + <_> + 8 8 4 6 2. + <_> + + <_> + 2 2 16 3 -1. + <_> + 2 3 16 1 3. + <_> + + <_> + 18 1 2 13 -1. + <_> + 18 1 1 13 2. + <_> + + <_> + 0 4 5 6 -1. + <_> + 0 7 5 3 2. + <_> + + <_> + 5 6 13 3 -1. + <_> + 5 7 13 1 3. + <_> + + <_> + 4 1 6 7 -1. + <_> + 6 1 2 7 3. + <_> + + <_> + 14 0 6 5 -1. + <_> + 14 0 3 5 2. + <_> + + <_> + 0 12 7 6 -1. + <_> + 0 14 7 2 3. + <_> + + <_> + 14 0 6 6 -1. + <_> + 14 0 3 6 2. + <_> + + <_> + 0 0 6 6 -1. + <_> + 3 0 3 6 2. + <_> + + <_> + 7 2 8 8 -1. + <_> + 11 2 4 4 2. + <_> + 7 6 4 4 2. + <_> + + <_> + 5 2 8 8 -1. + <_> + 5 2 4 4 2. + <_> + 9 6 4 4 2. + <_> + + <_> + 15 3 4 16 -1. + <_> + 17 3 2 8 2. + <_> + 15 11 2 8 2. + <_> + + <_> + 1 12 7 6 -1. + <_> + 1 14 7 2 3. + <_> + + <_> + 5 13 13 3 -1. + <_> + 5 14 13 1 3. + <_> + + <_> + 4 10 4 8 -1. + <_> + 4 14 4 4 2. + <_> + + <_> + 4 14 13 6 -1. + <_> + 4 16 13 2 3. + <_> + + <_> + 1 14 14 3 -1. + <_> + 1 15 14 1 3. + <_> + + <_> + 18 1 2 13 -1. + <_> + 18 1 1 13 2. + <_> + + <_> + 1 1 18 4 -1. + <_> + 1 1 9 2 2. + <_> + 10 3 9 2 2. + <_> + + <_> + 18 1 2 13 -1. + <_> + 18 1 1 13 2. + <_> + + <_> + 0 1 2 13 -1. + <_> + 1 1 1 13 2. + <_> + + <_> + 2 0 18 2 -1. + <_> + 2 0 9 2 2. + <_> + + <_> + 0 0 6 12 -1. + <_> + 2 0 2 12 3. + <_> + + <_> + 16 0 4 7 -1. + <_> + 16 0 2 7 2. + <_> + + <_> + 0 2 5 6 -1. + <_> + 0 5 5 3 2. + <_> + + <_> + 15 2 5 9 -1. + <_> + 15 5 5 3 3. + <_> + + <_> + 0 0 4 7 -1. + <_> + 2 0 2 7 2. + <_> + + <_> + 7 15 7 4 -1. + <_> + 7 17 7 2 2. + <_> + + <_> + 1 0 13 3 -1. + <_> + 1 1 13 1 3. + <_> + + <_> + 9 0 9 6 -1. + <_> + 9 2 9 2 3. + <_> + + <_> + 0 4 14 3 -1. + <_> + 0 5 14 1 3. + <_> + + <_> + 15 2 5 9 -1. + <_> + 15 5 5 3 3. + <_> + + <_> + 0 2 5 9 -1. + <_> + 0 5 5 3 3. + <_> + + <_> + 5 4 13 3 -1. + <_> + 5 5 13 1 3. + <_> + + <_> + 5 0 8 8 -1. + <_> + 5 4 8 4 2. + <_> + + <_> + 9 0 9 6 -1. + <_> + 9 2 9 2 3. + <_> + + <_> + 2 0 9 6 -1. + <_> + 2 2 9 2 3. + <_> + + <_> + 6 6 14 4 -1. + <_> + 13 6 7 2 2. + <_> + 6 8 7 2 2. + <_> + + <_> + 1 7 16 4 -1. + <_> + 1 7 8 2 2. + <_> + 9 9 8 2 2. + <_> + + <_> + 8 7 4 7 -1. + <_> + 8 7 2 7 2. + <_> + + <_> + 5 9 9 5 -1. + <_> + 8 9 3 5 3. + <_> + + <_> + 4 5 12 4 -1. + <_> + 8 5 4 4 3. + <_> + + <_> + 1 0 6 13 -1. + <_> + 3 0 2 13 3. + <_> + + <_> + 16 7 4 11 -1. + <_> + 16 7 2 11 2. + <_> + + <_> + 0 7 4 11 -1. + <_> + 2 7 2 11 2. + <_> + + <_> + 8 6 4 8 -1. + <_> + 8 10 4 4 2. + <_> + + <_> + 0 10 20 3 -1. + <_> + 0 11 20 1 3. + <_> + + <_> + 11 13 8 6 -1. + <_> + 11 15 8 2 3. + <_> + + <_> + 8 0 3 13 -1. + <_> + 9 0 1 13 3. + <_> + + <_> + 9 6 3 13 -1. + <_> + 10 6 1 13 3. + <_> + + <_> + 7 10 6 10 -1. + <_> + 9 10 2 10 3. + <_> + + <_> + 16 0 4 18 -1. + <_> + 16 0 2 18 2. + <_> + + <_> + 3 8 14 3 -1. + <_> + 3 9 14 1 3. + <_> + + <_> + 4 9 13 3 -1. + <_> + 4 10 13 1 3. + <_> + + <_> + 0 0 4 19 -1. + <_> + 2 0 2 19 2. + <_> + + <_> + 10 0 10 20 -1. + <_> + 10 0 5 20 2. + <_> + + <_> + 0 0 10 20 -1. + <_> + 5 0 5 20 2. + <_> + + <_> + 8 5 10 10 -1. + <_> + 13 5 5 5 2. + <_> + 8 10 5 5 2. + <_> + + <_> + 1 8 6 12 -1. + <_> + 1 8 3 6 2. + <_> + 4 14 3 6 2. + <_> + + <_> + 9 0 6 7 -1. + <_> + 11 0 2 7 3. + <_> + + <_> + 4 1 3 13 -1. + <_> + 5 1 1 13 3. + <_> + + <_> + 4 4 13 3 -1. + <_> + 4 5 13 1 3. + <_> + + <_> + 5 0 6 7 -1. + <_> + 7 0 2 7 3. + <_> + + <_> + 5 1 10 19 -1. + <_> + 5 1 5 19 2. + <_> + + <_> + 1 13 8 6 -1. + <_> + 1 15 8 2 3. + <_> + + <_> + 4 5 13 3 -1. + <_> + 4 6 13 1 3. + <_> + + <_> + 0 6 14 4 -1. + <_> + 0 6 7 2 2. + <_> + 7 8 7 2 2. + <_> + + <_> + 14 3 6 16 -1. + <_> + 17 3 3 8 2. + <_> + 14 11 3 8 2. + <_> + + <_> + 1 4 18 10 -1. + <_> + 1 4 9 5 2. + <_> + 10 9 9 5 2. + <_> + + <_> + 14 2 6 16 -1. + <_> + 17 2 3 8 2. + <_> + 14 10 3 8 2. + <_> + + <_> + 0 2 6 16 -1. + <_> + 0 2 3 8 2. + <_> + 3 10 3 8 2. + <_> + + <_> + 14 8 6 12 -1. + <_> + 14 8 3 12 2. + <_> + + <_> + 0 8 6 12 -1. + <_> + 3 8 3 12 2. + <_> + + <_> + 5 6 10 3 -1. + <_> + 5 6 5 3 2. + <_> + + <_> + 0 0 6 5 -1. + <_> + 3 0 3 5 2. + <_> + + <_> + 8 2 4 8 -1. + <_> + 8 6 4 4 2. + <_> + + <_> + 0 12 8 8 -1. + <_> + 4 12 4 8 2. + <_> + + <_> + 2 4 18 16 -1. + <_> + 8 4 6 16 3. + <_> + + <_> + 5 7 4 7 -1. + <_> + 7 7 2 7 2. + <_> + + <_> + 9 5 6 7 -1. + <_> + 11 5 2 7 3. + <_> + + <_> + 5 6 8 4 -1. + <_> + 9 6 4 4 2. + <_> + + <_> + 7 2 10 4 -1. + <_> + 7 2 5 4 2. + <_> + + <_> + 0 14 8 6 -1. + <_> + 0 16 8 2 3. + <_> + + <_> + 9 5 6 7 -1. + <_> + 11 5 2 7 3. + <_> + + <_> + 6 6 6 7 -1. + <_> + 8 6 2 7 3. + <_> + + <_> + 1 14 18 6 -1. + <_> + 1 16 18 2 3. + <_> + + <_> + 9 0 2 13 -1. + <_> + 10 0 1 13 2. + <_> + + <_> + 1 1 19 3 -1. + <_> + 1 2 19 1 3. + <_> + + <_> + 5 5 6 7 -1. + <_> + 7 5 2 7 3. + <_> + + <_> + 4 18 13 2 -1. + <_> + 4 19 13 1 2. + <_> + + <_> + 0 0 20 3 -1. + <_> + 0 1 20 1 3. + <_> + + <_> + 13 10 7 6 -1. + <_> + 13 12 7 2 3. + <_> + + <_> + 0 10 7 6 -1. + <_> + 0 12 7 2 3. + <_> + + <_> + 4 14 13 3 -1. + <_> + 4 15 13 1 3. + <_> + + <_> + 3 14 13 3 -1. + <_> + 3 15 13 1 3. + <_> + + <_> + 1 15 18 4 -1. + <_> + 10 15 9 2 2. + <_> + 1 17 9 2 2. + <_> + + <_> + 2 10 6 10 -1. + <_> + 4 10 2 10 3. + <_> + + <_> + 11 14 9 6 -1. + <_> + 14 14 3 6 3. + <_> + + <_> + 4 10 12 10 -1. + <_> + 10 10 6 10 2. + <_> + + <_> + 6 6 8 7 -1. + <_> + 6 6 4 7 2. + <_> + + <_> + 8 4 4 7 -1. + <_> + 10 4 2 7 2. + <_> + + <_> + 9 0 3 15 -1. + <_> + 9 5 3 5 3. + <_> + + <_> + 2 7 12 12 -1. + <_> + 2 11 12 4 3. + <_> + + <_> + 4 0 12 6 -1. + <_> + 4 2 12 2 3. + <_> + + <_> + 5 10 9 9 -1. + <_> + 5 13 9 3 3. + <_> + + <_> + 8 0 6 7 -1. + <_> + 10 0 2 7 3. + <_> + + <_> + 0 12 8 8 -1. + <_> + 0 12 4 4 2. + <_> + 4 16 4 4 2. + <_> + + <_> + 14 11 6 9 -1. + <_> + 14 14 6 3 3. + <_> + + <_> + 5 1 7 6 -1. + <_> + 5 3 7 2 3. + <_> + + <_> + 9 5 3 14 -1. + <_> + 9 12 3 7 2. + <_> + + <_> + 8 9 4 8 -1. + <_> + 8 13 4 4 2. + <_> + + <_> + 7 5 6 14 -1. + <_> + 7 12 6 7 2. + <_> + + <_> + 4 9 4 8 -1. + <_> + 6 9 2 8 2. + <_> + + <_> + 12 9 6 9 -1. + <_> + 14 9 2 9 3. + <_> + + <_> + 2 9 6 9 -1. + <_> + 4 9 2 9 3. + <_> + + <_> + 4 16 15 4 -1. + <_> + 9 16 5 4 3. + <_> + + <_> + 3 2 10 4 -1. + <_> + 8 2 5 4 2. + <_> + + <_> + 10 0 4 12 -1. + <_> + 10 0 2 12 2. + <_> + + <_> + 6 0 4 12 -1. + <_> + 8 0 2 12 2. + <_> + + <_> + 7 4 6 7 -1. + <_> + 9 4 2 7 3. + <_> + + <_> + 5 2 3 13 -1. + <_> + 6 2 1 13 3. + <_> + + <_> + 12 5 5 9 -1. + <_> + 12 8 5 3 3. + <_> + + <_> + 5 6 9 12 -1. + <_> + 5 10 9 4 3. + <_> + + <_> + 9 0 4 20 -1. + <_> + 11 0 2 10 2. + <_> + 9 10 2 10 2. + <_> + + <_> + 8 0 4 16 -1. + <_> + 8 0 2 8 2. + <_> + 10 8 2 8 2. + <_> + + <_> + 2 9 18 11 -1. + <_> + 8 9 6 11 3. + <_> + + <_> + 0 11 6 9 -1. + <_> + 0 14 6 3 3. + <_> + + <_> + 13 6 6 12 -1. + <_> + 13 6 3 12 2. + <_> + + <_> + 6 12 8 8 -1. + <_> + 6 12 4 4 2. + <_> + 10 16 4 4 2. + <_> + + <_> + 1 9 18 8 -1. + <_> + 10 9 9 4 2. + <_> + 1 13 9 4 2. + <_> + + <_> + 2 8 12 4 -1. + <_> + 6 8 4 4 3. + <_> + + <_> + 13 6 6 12 -1. + <_> + 13 6 3 12 2. + <_> + + <_> + 1 6 6 12 -1. + <_> + 4 6 3 12 2. + <_> + + <_> + 15 2 5 9 -1. + <_> + 15 5 5 3 3. + <_> + + <_> + 3 15 13 3 -1. + <_> + 3 16 13 1 3. + <_> + + <_> + 7 15 13 3 -1. + <_> + 7 16 13 1 3. + <_> + + <_> + 0 2 5 9 -1. + <_> + 0 5 5 3 3. + <_> + + <_> + 17 0 3 14 -1. + <_> + 18 0 1 14 3. + <_> + + <_> + 0 0 20 16 -1. + <_> + 0 8 20 8 2. + <_> + + <_> + 6 3 14 4 -1. + <_> + 13 3 7 2 2. + <_> + 6 5 7 2 2. + <_> + + <_> + 0 2 20 6 -1. + <_> + 0 2 10 3 2. + <_> + 10 5 10 3 2. + <_> + + <_> + 17 0 3 14 -1. + <_> + 18 0 1 14 3. + <_> + + <_> + 5 9 4 9 -1. + <_> + 7 9 2 9 2. + <_> + + <_> + 11 11 4 7 -1. + <_> + 11 11 2 7 2. + <_> + + <_> + 5 7 6 10 -1. + <_> + 7 7 2 10 3. + <_> + + <_> + 0 7 20 2 -1. + <_> + 0 7 10 2 2. + <_> + + <_> + 3 4 14 12 -1. + <_> + 3 4 7 6 2. + <_> + 10 10 7 6 2. + <_> + + <_> + 7 13 6 7 -1. + <_> + 9 13 2 7 3. + <_> + + <_> + 6 5 6 8 -1. + <_> + 8 5 2 8 3. + <_> + + <_> + 11 5 4 10 -1. + <_> + 11 5 2 10 2. + <_> + + <_> + 1 2 18 14 -1. + <_> + 7 2 6 14 3. + <_> + + <_> + 3 3 14 8 -1. + <_> + 10 3 7 4 2. + <_> + 3 7 7 4 2. + <_> + + <_> + 4 0 6 9 -1. + <_> + 6 0 2 9 3. + <_> + + <_> + 5 9 10 11 -1. + <_> + 5 9 5 11 2. + <_> + + <_> + 5 7 10 8 -1. + <_> + 5 7 5 4 2. + <_> + 10 11 5 4 2. + <_> + + <_> + 16 0 4 16 -1. + <_> + 16 8 4 8 2. + <_> + + <_> + 1 4 18 4 -1. + <_> + 10 4 9 4 2. + <_> + + <_> + 4 10 14 3 -1. + <_> + 4 11 14 1 3. + <_> + + <_> + 5 0 6 7 -1. + <_> + 7 0 2 7 3. + <_> + + <_> + 17 0 3 14 -1. + <_> + 18 0 1 14 3. + <_> + + <_> + 2 12 7 6 -1. + <_> + 2 14 7 2 3. + <_> + + <_> + 13 1 6 10 -1. + <_> + 16 1 3 5 2. + <_> + 13 6 3 5 2. + <_> + + <_> + 1 1 6 10 -1. + <_> + 1 1 3 5 2. + <_> + 4 6 3 5 2. + <_> + + <_> + 3 2 14 3 -1. + <_> + 3 3 14 1 3. + <_> + + <_> + 3 12 13 3 -1. + <_> + 3 13 13 1 3. + <_> + + <_> + 11 4 8 8 -1. + <_> + 15 4 4 4 2. + <_> + 11 8 4 4 2. + <_> + + <_> + 2 13 13 3 -1. + <_> + 2 14 13 1 3. + <_> + + <_> + 11 11 7 4 -1. + <_> + 11 13 7 2 2. + <_> + + <_> + 0 14 14 2 -1. + <_> + 0 15 14 1 2. + <_> + + <_> + 11 4 8 8 -1. + <_> + 15 4 4 4 2. + <_> + 11 8 4 4 2. + <_> + + <_> + 0 9 5 9 -1. + <_> + 0 12 5 3 3. + <_> + + <_> + 13 11 7 6 -1. + <_> + 13 13 7 2 3. + <_> + + <_> + 3 5 5 9 -1. + <_> + 3 8 5 3 3. + <_> + + <_> + 13 11 7 6 -1. + <_> + 13 13 7 2 3. + <_> + + <_> + 0 0 5 9 -1. + <_> + 0 3 5 3 3. + <_> + + <_> + 10 0 10 8 -1. + <_> + 15 0 5 4 2. + <_> + 10 4 5 4 2. + <_> + + <_> + 0 11 7 6 -1. + <_> + 0 13 7 2 3. + <_> + + <_> + 12 11 7 6 -1. + <_> + 12 13 7 2 3. + <_> + + <_> + 0 4 12 9 -1. + <_> + 0 7 12 3 3. + <_> + + <_> + 0 7 20 4 -1. + <_> + 0 9 20 2 2. + <_> + + <_> + 5 2 10 4 -1. + <_> + 10 2 5 4 2. + <_> + + <_> + 11 11 4 7 -1. + <_> + 11 11 2 7 2. + <_> + + <_> + 6 12 4 7 -1. + <_> + 8 12 2 7 2. + <_> + + <_> + 11 13 9 7 -1. + <_> + 14 13 3 7 3. + <_> + + <_> + 4 15 12 5 -1. + <_> + 10 15 6 5 2. + <_> + + <_> + 8 9 4 8 -1. + <_> + 8 9 2 8 2. + <_> + + <_> + 5 11 6 7 -1. + <_> + 7 11 2 7 3. + <_> + + <_> + 8 5 6 7 -1. + <_> + 8 5 3 7 2. + <_> + + <_> + 6 5 6 7 -1. + <_> + 9 5 3 7 2. + <_> + + <_> + 2 6 16 9 -1. + <_> + 2 9 16 3 3. + <_> + + <_> + 3 8 14 2 -1. + <_> + 3 9 14 1 2. + <_> + + <_> + 9 4 3 15 -1. + <_> + 9 9 3 5 3. + <_> + + <_> + 7 10 4 8 -1. + <_> + 7 14 4 4 2. + <_> + + <_> + 16 9 4 11 -1. + <_> + 16 9 2 11 2. + <_> + + <_> + 0 9 4 11 -1. + <_> + 2 9 2 11 2. + <_> + + <_> + 7 3 8 10 -1. + <_> + 7 8 8 5 2. + <_> + + <_> + 4 9 6 5 -1. + <_> + 7 9 3 5 2. + <_> + + <_> + 7 16 8 4 -1. + <_> + 7 16 4 4 2. + <_> + + <_> + 1 0 10 20 -1. + <_> + 1 0 5 10 2. + <_> + 6 10 5 10 2. + <_> + + <_> + 10 1 4 10 -1. + <_> + 10 6 4 5 2. + <_> + + <_> + 4 6 12 4 -1. + <_> + 8 6 4 4 3. + <_> + + <_> + 1 7 18 4 -1. + <_> + 10 7 9 2 2. + <_> + 1 9 9 2 2. + <_> + + <_> + 5 14 10 6 -1. + <_> + 5 16 10 2 3. + <_> + + <_> + 7 12 13 3 -1. + <_> + 7 13 13 1 3. + <_> + + <_> + 2 11 7 6 -1. + <_> + 2 13 7 2 3. + <_> + + <_> + 11 12 5 8 -1. + <_> + 11 16 5 4 2. + <_> + + <_> + 4 12 5 8 -1. + <_> + 4 16 5 4 2. + <_> + + <_> + 10 10 10 4 -1. + <_> + 10 12 10 2 2. + <_> + + <_> + 4 12 9 6 -1. + <_> + 4 15 9 3 2. + <_> + + <_> + 10 10 10 4 -1. + <_> + 10 12 10 2 2. + <_> + + <_> + 0 10 10 4 -1. + <_> + 0 12 10 2 2. + <_> + + <_> + 16 0 4 16 -1. + <_> + 16 8 4 8 2. + <_> + + <_> + 7 4 3 15 -1. + <_> + 7 9 3 5 3. + <_> + + <_> + 9 10 10 6 -1. + <_> + 14 10 5 3 2. + <_> + 9 13 5 3 2. + <_> + + <_> + 3 1 14 14 -1. + <_> + 3 1 7 7 2. + <_> + 10 8 7 7 2. + <_> + + <_> + 16 5 4 14 -1. + <_> + 18 5 2 7 2. + <_> + 16 12 2 7 2. + <_> + + <_> + 0 5 4 14 -1. + <_> + 0 5 2 7 2. + <_> + 2 12 2 7 2. + <_> + + <_> + 5 2 13 3 -1. + <_> + 5 3 13 1 3. + <_> + + <_> + 0 16 17 2 -1. + <_> + 0 17 17 1 2. + <_> + + <_> + 2 9 16 6 -1. + <_> + 2 12 16 3 2. + <_> + + <_> + 1 10 18 2 -1. + <_> + 1 11 18 1 2. + <_> + + <_> + 5 10 13 3 -1. + <_> + 5 11 13 1 3. + <_> + + <_> + 3 0 13 9 -1. + <_> + 3 3 13 3 3. + <_> + + <_> + 6 4 9 5 -1. + <_> + 9 4 3 5 3. + <_> + + <_> + 2 14 10 6 -1. + <_> + 2 14 5 3 2. + <_> + 7 17 5 3 2. + <_> + + <_> + 10 1 10 4 -1. + <_> + 10 1 5 4 2. + <_> + + <_> + 1 3 18 15 -1. + <_> + 1 8 18 5 3. + <_> + + <_> + 14 2 6 12 -1. + <_> + 14 2 3 12 2. + <_> + + <_> + 1 2 6 5 -1. + <_> + 4 2 3 5 2. + <_> + + <_> + 12 5 8 8 -1. + <_> + 16 5 4 4 2. + <_> + 12 9 4 4 2. + <_> + + <_> + 0 11 13 3 -1. + <_> + 0 12 13 1 3. + <_> + + <_> + 12 11 7 4 -1. + <_> + 12 13 7 2 2. + <_> + + <_> + 0 0 17 3 -1. + <_> + 0 1 17 1 3. + <_> + + <_> + 6 5 9 8 -1. + <_> + 6 9 9 4 2. + <_> + + <_> + 1 11 7 4 -1. + <_> + 1 13 7 2 2. + <_> + + <_> + 7 6 6 7 -1. + <_> + 9 6 2 7 3. + <_> + + <_> + 4 9 12 5 -1. + <_> + 8 9 4 5 3. + <_> + + <_> + 4 8 15 3 -1. + <_> + 9 8 5 3 3. + <_> + + <_> + 1 8 15 3 -1. + <_> + 6 8 5 3 3. + <_> + + <_> + 4 13 13 3 -1. + <_> + 4 14 13 1 3. + <_> + + <_> + 0 1 13 3 -1. + <_> + 0 2 13 1 3. + <_> + + <_> + 10 1 7 4 -1. + <_> + 10 3 7 2 2. + <_> + + <_> + 6 6 6 7 -1. + <_> + 8 6 2 7 3. + <_> + + <_> + 10 9 6 10 -1. + <_> + 13 9 3 5 2. + <_> + 10 14 3 5 2. + <_> + + <_> + 0 10 20 5 -1. + <_> + 10 10 10 5 2. + <_> + + <_> + 2 1 16 4 -1. + <_> + 10 1 8 2 2. + <_> + 2 3 8 2 2. + <_> + + <_> + 4 0 12 6 -1. + <_> + 4 3 12 3 2. + <_> + + <_> + 10 9 6 5 -1. + <_> + 10 9 3 5 2. + <_> + + <_> + 4 9 6 5 -1. + <_> + 7 9 3 5 2. + <_> + + <_> + 2 3 16 17 -1. + <_> + 2 3 8 17 2. + <_> + + <_> + 5 0 6 7 -1. + <_> + 7 0 2 7 3. + <_> + + <_> + 12 5 8 8 -1. + <_> + 16 5 4 4 2. + <_> + 12 9 4 4 2. + <_> + + <_> + 0 5 8 8 -1. + <_> + 0 5 4 4 2. + <_> + 4 9 4 4 2. + <_> + + <_> + 18 4 2 16 -1. + <_> + 18 12 2 8 2. + <_> + + <_> + 0 1 5 9 -1. + <_> + 0 4 5 3 3. + <_> + + <_> + 2 0 18 3 -1. + <_> + 8 0 6 3 3. + <_> + + <_> + 2 6 15 3 -1. + <_> + 2 7 15 1 3. + <_> + + <_> + 8 12 4 8 -1. + <_> + 8 16 4 4 2. + <_> + + <_> + 2 12 16 6 -1. + <_> + 2 14 16 2 3. + <_> + + <_> + 7 14 13 3 -1. + <_> + 7 15 13 1 3. + <_> + + <_> + 4 0 3 13 -1. + <_> + 5 0 1 13 3. + <_> + + <_> + 5 13 13 3 -1. + <_> + 5 14 13 1 3. + <_> + + <_> + 3 0 3 13 -1. + <_> + 4 0 1 13 3. + <_> + + <_> + 5 5 10 12 -1. + <_> + 10 5 5 6 2. + <_> + 5 11 5 6 2. + <_> + + <_> + 2 4 14 12 -1. + <_> + 2 4 7 6 2. + <_> + 9 10 7 6 2. + <_> + + <_> + 18 4 2 16 -1. + <_> + 18 12 2 8 2. + <_> + + <_> + 5 4 9 5 -1. + <_> + 8 4 3 5 3. + <_> + + <_> + 15 0 3 15 -1. + <_> + 16 0 1 15 3. + <_> + + <_> + 2 0 3 15 -1. + <_> + 3 0 1 15 3. + <_> + + <_> + 8 6 6 8 -1. + <_> + 8 10 6 4 2. + <_> + + <_> + 1 4 6 16 -1. + <_> + 1 4 3 8 2. + <_> + 4 12 3 8 2. + <_> + + <_> + 3 0 15 2 -1. + <_> + 3 1 15 1 2. + <_> + + <_> + 7 2 6 14 -1. + <_> + 7 2 3 7 2. + <_> + 10 9 3 7 2. + <_> + + <_> + 10 2 6 7 -1. + <_> + 12 2 2 7 3. + <_> + + <_> + 5 1 3 16 -1. + <_> + 6 1 1 16 3. + <_> + + <_> + 6 2 9 10 -1. + <_> + 6 7 9 5 2. + <_> + + <_> + 9 2 2 13 -1. + <_> + 10 2 1 13 2. + <_> + + <_> + 9 0 3 13 -1. + <_> + 10 0 1 13 3. + <_> + + <_> + 2 6 14 6 -1. + <_> + 2 6 7 3 2. + <_> + 9 9 7 3 2. + <_> + + <_> + 7 8 13 3 -1. + <_> + 7 9 13 1 3. + <_> + + <_> + 0 9 20 3 -1. + <_> + 0 10 20 1 3. + <_> + + <_> + 9 5 7 9 -1. + <_> + 9 8 7 3 3. + <_> + + <_> + 3 12 13 2 -1. + <_> + 3 13 13 1 2. + <_> + + <_> + 9 13 8 6 -1. + <_> + 9 15 8 2 3. + <_> + + <_> + 2 12 7 4 -1. + <_> + 2 14 7 2 2. + <_> + + <_> + 6 17 13 3 -1. + <_> + 6 18 13 1 3. + <_> + + <_> + 3 10 7 6 -1. + <_> + 3 12 7 2 3. + <_> + + <_> + 9 5 7 9 -1. + <_> + 9 8 7 3 3. + <_> + + <_> + 4 5 7 9 -1. + <_> + 4 8 7 3 3. + <_> + + <_> + 5 5 13 3 -1. + <_> + 5 6 13 1 3. + <_> + + <_> + 1 2 18 12 -1. + <_> + 1 6 18 4 3. + <_> + + <_> + 4 4 13 3 -1. + <_> + 4 5 13 1 3. + <_> + + <_> + 6 0 6 7 -1. + <_> + 8 0 2 7 3. + <_> + + <_> + 10 2 4 8 -1. + <_> + 10 2 2 8 2. + <_> + + <_> + 6 2 4 8 -1. + <_> + 8 2 2 8 2. + <_> + + <_> + 8 0 12 16 -1. + <_> + 14 0 6 8 2. + <_> + 8 8 6 8 2. + <_> + + <_> + 0 0 18 6 -1. + <_> + 6 0 6 6 3. + <_> + + <_> + 12 0 8 4 -1. + <_> + 12 0 4 4 2. + <_> + + <_> + 0 0 6 7 -1. + <_> + 3 0 3 7 2. + <_> + + <_> + 9 13 6 7 -1. + <_> + 11 13 2 7 3. + <_> + + <_> + 6 4 6 7 -1. + <_> + 8 4 2 7 3. + <_> + + <_> + 11 14 7 6 -1. + <_> + 11 16 7 2 3. + <_> + + <_> + 1 14 17 6 -1. + <_> + 1 16 17 2 3. + <_> + + <_> + 11 14 7 6 -1. + <_> + 11 16 7 2 3. + <_> + + <_> + 2 14 7 6 -1. + <_> + 2 16 7 2 3. + <_> + + <_> + 5 5 13 3 -1. + <_> + 5 6 13 1 3. + <_> + + <_> + 5 13 6 7 -1. + <_> + 7 13 2 7 3. + <_> + + <_> + 12 10 4 7 -1. + <_> + 12 10 2 7 2. + <_> + + <_> + 1 9 18 11 -1. + <_> + 7 9 6 11 3. + <_> + + <_> + 10 10 6 7 -1. + <_> + 12 10 2 7 3. + <_> + + <_> + 4 10 6 7 -1. + <_> + 6 10 2 7 3. + <_> + + <_> + 9 10 9 9 -1. + <_> + 12 10 3 9 3. + <_> + + <_> + 0 10 10 10 -1. + <_> + 0 10 5 5 2. + <_> + 5 15 5 5 2. + <_> + + <_> + 12 15 6 5 -1. + <_> + 12 15 3 5 2. + <_> + + <_> + 1 15 8 5 -1. + <_> + 5 15 4 5 2. + <_> + + <_> + 5 14 14 2 -1. + <_> + 5 14 7 2 2. + <_> + + <_> + 1 14 12 3 -1. + <_> + 7 14 6 3 2. + <_> + + <_> + 13 14 7 6 -1. + <_> + 13 16 7 2 3. + <_> + + <_> + 5 2 8 8 -1. + <_> + 5 2 4 4 2. + <_> + 9 6 4 4 2. + <_> + + <_> + 6 16 14 4 -1. + <_> + 13 16 7 2 2. + <_> + 6 18 7 2 2. + <_> + + <_> + 0 16 14 4 -1. + <_> + 0 16 7 2 2. + <_> + 7 18 7 2 2. + <_> + + <_> + 3 15 14 4 -1. + <_> + 10 15 7 2 2. + <_> + 3 17 7 2 2. + <_> + + <_> + 0 6 20 2 -1. + <_> + 10 6 10 2 2. + <_> + + <_> + 5 3 14 6 -1. + <_> + 12 3 7 3 2. + <_> + 5 6 7 3 2. + <_> + + <_> + 5 5 10 6 -1. + <_> + 5 7 10 2 3. + <_> + + <_> + 0 2 20 2 -1. + <_> + 0 3 20 1 2. + <_> + + <_> + 6 0 8 6 -1. + <_> + 6 3 8 3 2. + <_> + + <_> + 7 3 13 2 -1. + <_> + 7 4 13 1 2. + <_> + + <_> + 0 5 13 14 -1. + <_> + 0 12 13 7 2. + <_> + + <_> + 14 11 4 8 -1. + <_> + 14 15 4 4 2. + <_> + + <_> + 0 0 20 8 -1. + <_> + 0 0 10 4 2. + <_> + 10 4 10 4 2. + <_> + + <_> + 16 1 4 18 -1. + <_> + 18 1 2 9 2. + <_> + 16 10 2 9 2. + <_> + + <_> + 1 10 6 9 -1. + <_> + 3 10 2 9 3. + <_> + + <_> + 7 10 6 10 -1. + <_> + 10 10 3 5 2. + <_> + 7 15 3 5 2. + <_> + + <_> + 4 7 12 12 -1. + <_> + 4 7 6 6 2. + <_> + 10 13 6 6 2. + <_> + + <_> + 7 12 13 3 -1. + <_> + 7 13 13 1 3. + <_> + + <_> + 0 12 7 6 -1. + <_> + 0 14 7 2 3. + <_> + + <_> + 7 14 13 3 -1. + <_> + 7 15 13 1 3. + <_> + + <_> + 0 0 16 6 -1. + <_> + 0 2 16 2 3. + <_> + + <_> + 6 1 8 6 -1. + <_> + 6 4 8 3 2. + <_> + + <_> + 0 0 5 8 -1. + <_> + 0 4 5 4 2. + <_> + + <_> + 9 3 9 5 -1. + <_> + 12 3 3 5 3. + <_> + + <_> + 0 2 6 9 -1. + <_> + 2 2 2 9 3. + <_> + + <_> + 15 2 5 9 -1. + <_> + 15 5 5 3 3. + <_> + + <_> + 4 5 10 6 -1. + <_> + 4 5 5 3 2. + <_> + 9 8 5 3 2. + <_> + + <_> + 7 1 10 6 -1. + <_> + 12 1 5 3 2. + <_> + 7 4 5 3 2. + <_> + + <_> + 0 2 18 4 -1. + <_> + 0 2 9 2 2. + <_> + 9 4 9 2 2. + <_> + + <_> + 17 1 2 17 -1. + <_> + 17 1 1 17 2. + <_> + + <_> + 1 0 2 19 -1. + <_> + 2 0 1 19 2. + <_> + + <_> + 2 9 16 4 -1. + <_> + 10 9 8 2 2. + <_> + 2 11 8 2 2. + <_> + + <_> + 1 6 18 8 -1. + <_> + 1 6 9 4 2. + <_> + 10 10 9 4 2. + <_> + + <_> + 1 8 18 4 -1. + <_> + 7 8 6 4 3. + <_> + + <_> + 5 4 3 10 -1. + <_> + 5 9 3 5 2. + <_> + + <_> + 5 2 10 6 -1. + <_> + 5 4 10 2 3. + <_> + + <_> + 7 7 4 10 -1. + <_> + 7 12 4 5 2. + <_> + + <_> + 8 11 6 6 -1. + <_> + 8 14 6 3 2. + <_> + + <_> + 1 6 15 5 -1. + <_> + 6 6 5 5 3. + <_> + + <_> + 8 5 4 12 -1. + <_> + 8 9 4 4 3. + <_> + + <_> + 1 8 10 12 -1. + <_> + 1 8 5 6 2. + <_> + 6 14 5 6 2. + <_> + + <_> + 14 12 5 6 -1. + <_> + 14 15 5 3 2. + <_> + + <_> + 0 12 18 4 -1. + <_> + 0 12 9 2 2. + <_> + 9 14 9 2 2. + <_> + + <_> + 7 6 6 7 -1. + <_> + 9 6 2 7 3. + <_> + + <_> + 1 3 18 12 -1. + <_> + 1 3 9 6 2. + <_> + 10 9 9 6 2. + <_> + + <_> + 7 8 13 3 -1. + <_> + 7 9 13 1 3. + <_> + + <_> + 5 2 9 6 -1. + <_> + 5 4 9 2 3. + <_> + + <_> + 15 3 2 17 -1. + <_> + 15 3 1 17 2. + <_> + + <_> + 0 8 13 3 -1. + <_> + 0 9 13 1 3. + <_> + + <_> + 9 0 3 13 -1. + <_> + 10 0 1 13 3. + <_> + + <_> + 8 0 3 13 -1. + <_> + 9 0 1 13 3. + <_> + + <_> + 7 5 6 8 -1. + <_> + 9 5 2 8 3. + <_> + + <_> + 3 3 2 17 -1. + <_> + 4 3 1 17 2. + <_> + + <_> + 2 0 18 4 -1. + <_> + 11 0 9 2 2. + <_> + 2 2 9 2 2. + <_> + + <_> + 0 0 18 4 -1. + <_> + 0 0 9 2 2. + <_> + 9 2 9 2 2. + <_> + + <_> + 11 12 6 8 -1. + <_> + 13 12 2 8 3. + <_> + + <_> + 3 12 6 8 -1. + <_> + 5 12 2 8 3. + <_> + + <_> + 7 12 10 6 -1. + <_> + 12 12 5 3 2. + <_> + 7 15 5 3 2. + <_> + + <_> + 5 0 9 14 -1. + <_> + 8 0 3 14 3. + <_> + + <_> + 4 3 15 4 -1. + <_> + 9 3 5 4 3. + <_> + + <_> + 1 3 15 4 -1. + <_> + 6 3 5 4 3. + <_> + + <_> + 13 5 4 14 -1. + <_> + 15 5 2 7 2. + <_> + 13 12 2 7 2. + <_> + + <_> + 3 5 4 14 -1. + <_> + 3 5 2 7 2. + <_> + 5 12 2 7 2. + <_> + + <_> + 11 0 4 7 -1. + <_> + 11 0 2 7 2. + <_> + + <_> + 5 0 4 7 -1. + <_> + 7 0 2 7 2. + <_> + + <_> + 7 12 10 6 -1. + <_> + 12 12 5 3 2. + <_> + 7 15 5 3 2. + <_> + + <_> + 3 12 10 6 -1. + <_> + 3 12 5 3 2. + <_> + 8 15 5 3 2. + <_> + + <_> + 3 4 16 6 -1. + <_> + 11 4 8 3 2. + <_> + 3 7 8 3 2. + <_> + + <_> + 4 1 6 7 -1. + <_> + 6 1 2 7 3. + <_> + + <_> + 6 13 14 3 -1. + <_> + 6 14 14 1 3. + <_> + + <_> + 4 3 6 7 -1. + <_> + 6 3 2 7 3. + <_> + + <_> + 5 10 13 3 -1. + <_> + 5 11 13 1 3. + <_> + + <_> + 0 0 20 3 -1. + <_> + 0 1 20 1 3. + <_> + + <_> + 8 11 6 7 -1. + <_> + 10 11 2 7 3. + <_> + + <_> + 2 4 6 12 -1. + <_> + 5 4 3 12 2. + <_> + + <_> + 10 0 10 18 -1. + <_> + 10 0 5 18 2. + <_> + + <_> + 0 0 10 20 -1. + <_> + 5 0 5 20 2. + <_> + + <_> + 7 10 6 9 -1. + <_> + 7 10 3 9 2. + <_> + + <_> + 6 12 6 8 -1. + <_> + 8 12 2 8 3. + <_> + + <_> + 3 18 14 2 -1. + <_> + 3 19 14 1 2. + <_> + + <_> + 1 6 7 6 -1. + <_> + 1 8 7 2 3. + <_> + + <_> + 13 5 7 4 -1. + <_> + 13 7 7 2 2. + <_> + + <_> + 0 5 7 4 -1. + <_> + 0 7 7 2 2. + <_> + + <_> + 8 5 11 15 -1. + <_> + 8 10 11 5 3. + <_> + + <_> + 3 9 10 9 -1. + <_> + 8 9 5 9 2. + <_> + + <_> + 4 1 13 3 -1. + <_> + 4 2 13 1 3. + <_> + + <_> + 7 0 4 12 -1. + <_> + 7 6 4 6 2. + <_> + + <_> + 8 2 4 8 -1. + <_> + 8 6 4 4 2. + <_> + + <_> + 2 16 16 3 -1. + <_> + 10 16 8 3 2. + <_> + + <_> + 6 7 9 5 -1. + <_> + 9 7 3 5 3. + <_> + + <_> + 5 7 9 5 -1. + <_> + 8 7 3 5 3. + <_> + + <_> + 7 3 13 2 -1. + <_> + 7 4 13 1 2. + <_> + + <_> + 5 5 4 11 -1. + <_> + 7 5 2 11 2. + <_> + + <_> + 9 6 6 10 -1. + <_> + 12 6 3 5 2. + <_> + 9 11 3 5 2. + <_> + + <_> + 5 6 6 10 -1. + <_> + 5 6 3 5 2. + <_> + 8 11 3 5 2. + <_> + + <_> + 4 8 16 8 -1. + <_> + 12 8 8 4 2. + <_> + 4 12 8 4 2. + <_> + + <_> + 0 8 16 8 -1. + <_> + 0 8 8 4 2. + <_> + 8 12 8 4 2. + <_> + + <_> + 9 8 10 10 -1. + <_> + 14 8 5 5 2. + <_> + 9 13 5 5 2. + <_> + + <_> + 1 8 10 10 -1. + <_> + 1 8 5 5 2. + <_> + 6 13 5 5 2. + <_> + + <_> + 11 1 9 16 -1. + <_> + 14 1 3 16 3. + <_> + + <_> + 3 4 6 12 -1. + <_> + 6 4 3 12 2. + <_> + + <_> + 14 12 6 8 -1. + <_> + 16 12 2 8 3. + <_> + + <_> + 0 12 6 8 -1. + <_> + 2 12 2 8 3. + <_> + + <_> + 0 2 10 3 -1. + <_> + 5 2 5 3 2. + <_> + + <_> + 6 4 8 6 -1. + <_> + 6 6 8 2 3. + <_> + + <_> + 7 6 6 12 -1. + <_> + 7 12 6 6 2. + <_> + + <_> + 10 1 4 18 -1. + <_> + 12 1 2 9 2. + <_> + 10 10 2 9 2. + <_> + + <_> + 4 6 4 14 -1. + <_> + 4 6 2 7 2. + <_> + 6 13 2 7 2. + <_> + + <_> + 13 4 3 10 -1. + <_> + 13 9 3 5 2. + <_> + + <_> + 1 3 14 12 -1. + <_> + 1 3 7 6 2. + <_> + 8 9 7 6 2. + <_> + + <_> + 8 2 4 12 -1. + <_> + 8 6 4 4 3. + <_> + + <_> + 0 11 13 3 -1. + <_> + 0 12 13 1 3. + <_> + + <_> + 12 10 5 9 -1. + <_> + 12 13 5 3 3. + <_> + + <_> + 1 14 18 4 -1. + <_> + 1 14 9 2 2. + <_> + 10 16 9 2 2. + <_> + + <_> + 7 6 6 14 -1. + <_> + 9 6 2 14 3. + <_> + + <_> + 0 13 13 3 -1. + <_> + 0 14 13 1 3. + <_> + + <_> + 10 10 4 8 -1. + <_> + 10 14 4 4 2. + <_> + + <_> + 6 8 8 12 -1. + <_> + 6 8 4 6 2. + <_> + 10 14 4 6 2. + <_> + + <_> + 16 0 4 7 -1. + <_> + 16 0 2 7 2. + <_> + + <_> + 0 0 18 2 -1. + <_> + 9 0 9 2 2. + <_> + + <_> + 16 0 4 7 -1. + <_> + 16 0 2 7 2. + <_> + + <_> + 1 11 7 6 -1. + <_> + 1 13 7 2 3. + <_> + + <_> + 9 5 6 10 -1. + <_> + 12 5 3 5 2. + <_> + 9 10 3 5 2. + <_> + + <_> + 0 0 4 7 -1. + <_> + 2 0 2 7 2. + <_> + + <_> + 6 1 9 5 -1. + <_> + 9 1 3 5 3. + <_> + + <_> + 3 2 13 2 -1. + <_> + 3 3 13 1 2. + <_> + + <_> + 4 0 14 3 -1. + <_> + 4 1 14 1 3. + <_> + + <_> + 4 2 6 7 -1. + <_> + 6 2 2 7 3. + <_> + + <_> + 7 1 10 6 -1. + <_> + 12 1 5 3 2. + <_> + 7 4 5 3 2. + <_> + + <_> + 0 0 15 3 -1. + <_> + 5 0 5 3 3. + <_> + + <_> + 4 7 15 5 -1. + <_> + 9 7 5 5 3. + <_> + + <_> + 0 7 6 12 -1. + <_> + 0 11 6 4 3. + <_> + + <_> + 6 17 13 3 -1. + <_> + 6 18 13 1 3. + <_> + + <_> + 1 7 15 5 -1. + <_> + 6 7 5 5 3. + <_> + + <_> + 8 6 6 7 -1. + <_> + 10 6 2 7 3. + <_> + + <_> + 1 8 18 3 -1. + <_> + 1 9 18 1 3. + <_> + + <_> + 14 0 6 11 -1. + <_> + 16 0 2 11 3. + <_> + + <_> + 3 1 12 6 -1. + <_> + 3 1 6 3 2. + <_> + 9 4 6 3 2. + <_> + + <_> + 6 5 8 6 -1. + <_> + 6 7 8 2 3. + <_> + + <_> + 0 0 6 11 -1. + <_> + 2 0 2 11 3. + <_> + + <_> + 8 5 5 12 -1. + <_> + 8 11 5 6 2. + <_> + + <_> + 1 4 6 16 -1. + <_> + 1 4 3 8 2. + <_> + 4 12 3 8 2. + <_> + + <_> + 13 5 6 10 -1. + <_> + 16 5 3 5 2. + <_> + 13 10 3 5 2. + <_> + + <_> + 1 5 6 10 -1. + <_> + 1 5 3 5 2. + <_> + 4 10 3 5 2. + <_> + + <_> + 16 2 4 8 -1. + <_> + 16 6 4 4 2. + <_> + + <_> + 0 17 18 3 -1. + <_> + 6 17 6 3 3. + <_> + + <_> + 6 1 8 16 -1. + <_> + 6 9 8 8 2. + <_> + + <_> + 6 12 6 7 -1. + <_> + 8 12 2 7 3. + <_> + + <_> + 7 1 6 13 -1. + <_> + 7 1 3 13 2. + <_> + + <_> + 5 0 6 7 -1. + <_> + 7 0 2 7 3. + <_> + + <_> + 2 10 18 10 -1. + <_> + 8 10 6 10 3. + <_> + + <_> + 0 0 8 20 -1. + <_> + 4 0 4 20 2. + <_> + + <_> + 10 0 8 6 -1. + <_> + 10 0 4 6 2. + <_> + + <_> + 5 2 8 9 -1. + <_> + 5 5 8 3 3. + <_> + + <_> + 16 2 4 8 -1. + <_> + 16 6 4 4 2. + <_> + + <_> + 3 3 14 2 -1. + <_> + 10 3 7 2 2. + <_> + + <_> + 8 0 9 5 -1. + <_> + 11 0 3 5 3. + <_> + + <_> + 3 3 13 3 -1. + <_> + 3 4 13 1 3. + <_> + + <_> + 16 2 4 8 -1. + <_> + 16 6 4 4 2. + <_> + + <_> + 0 1 11 12 -1. + <_> + 0 7 11 6 2. + <_> + + <_> + 9 0 9 5 -1. + <_> + 12 0 3 5 3. + <_> + + <_> + 3 0 9 5 -1. + <_> + 6 0 3 5 3. + <_> + + <_> + 2 0 18 8 -1. + <_> + 8 0 6 8 3. + <_> + + <_> + 0 15 14 2 -1. + <_> + 0 16 14 1 2. + <_> + + <_> + 10 15 10 3 -1. + <_> + 10 15 5 3 2. + <_> + + <_> + 7 10 3 10 -1. + <_> + 7 15 3 5 2. + <_> + + <_> + 6 14 13 3 -1. + <_> + 6 15 13 1 3. + <_> + + <_> + 4 11 12 6 -1. + <_> + 4 11 6 3 2. + <_> + 10 14 6 3 2. + <_> + + <_> + 3 12 16 6 -1. + <_> + 11 12 8 3 2. + <_> + 3 15 8 3 2. + <_> + + <_> + 1 12 16 6 -1. + <_> + 1 12 8 3 2. + <_> + 9 15 8 3 2. + <_> + + <_> + 4 0 15 6 -1. + <_> + 9 0 5 6 3. + <_> + + <_> + 1 0 15 6 -1. + <_> + 6 0 5 6 3. + <_> + + <_> + 6 14 13 3 -1. + <_> + 6 15 13 1 3. + <_> + + <_> + 0 0 20 3 -1. + <_> + 0 1 20 1 3. + <_> + + <_> + 5 0 10 6 -1. + <_> + 5 3 10 3 2. + <_> + + <_> + 7 0 2 17 -1. + <_> + 8 0 1 17 2. + <_> + + <_> + 10 0 3 13 -1. + <_> + 11 0 1 13 3. + <_> + + <_> + 6 6 6 7 -1. + <_> + 8 6 2 7 3. + <_> + + <_> + 1 9 19 3 -1. + <_> + 1 10 19 1 3. + <_> + + <_> + 6 0 6 18 -1. + <_> + 8 0 2 18 3. + <_> + + <_> + 9 0 2 13 -1. + <_> + 9 0 1 13 2. + <_> + + <_> + 0 10 20 6 -1. + <_> + 0 13 20 3 2. + <_> + + <_> + 10 11 5 9 -1. + <_> + 10 14 5 3 3. + <_> + + <_> + 3 4 13 3 -1. + <_> + 3 5 13 1 3. + <_> + + <_> + 13 11 7 4 -1. + <_> + 13 13 7 2 2. + <_> + + <_> + 3 2 3 14 -1. + <_> + 4 2 1 14 3. + <_> + + <_> + 12 3 2 17 -1. + <_> + 12 3 1 17 2. + <_> + + <_> + 0 9 6 9 -1. + <_> + 3 9 3 9 2. + <_> + + <_> + 11 3 6 10 -1. + <_> + 14 3 3 5 2. + <_> + 11 8 3 5 2. + <_> + + <_> + 2 0 3 13 -1. + <_> + 3 0 1 13 3. + <_> + + <_> + 4 5 16 2 -1. + <_> + 4 5 8 2 2. + <_> + + <_> + 4 1 3 13 -1. + <_> + 5 1 1 13 3. + <_> + + <_> + 14 10 6 10 -1. + <_> + 17 10 3 5 2. + <_> + 14 15 3 5 2. + <_> + + <_> + 0 4 7 6 -1. + <_> + 0 6 7 2 3. + <_> + + <_> + 12 3 2 17 -1. + <_> + 12 3 1 17 2. + <_> + + <_> + 0 15 10 3 -1. + <_> + 5 15 5 3 2. + <_> + + <_> + 10 11 5 9 -1. + <_> + 10 14 5 3 3. + <_> + + <_> + 5 11 5 9 -1. + <_> + 5 14 5 3 3. + <_> + + <_> + 5 13 13 3 -1. + <_> + 5 14 13 1 3. + <_> + + <_> + 2 13 13 3 -1. + <_> + 2 14 13 1 3. + <_> + + <_> + 3 11 16 9 -1. + <_> + 3 14 16 3 3. + <_> + + <_> + 5 4 6 5 -1. + <_> + 8 4 3 5 2. + <_> + + <_> + 10 0 10 16 -1. + <_> + 10 8 10 8 2. + <_> + + <_> + 0 0 10 16 -1. + <_> + 0 8 10 8 2. + <_> + + <_> + 9 5 3 13 -1. + <_> + 10 5 1 13 3. + <_> + + <_> + 6 0 6 10 -1. + <_> + 6 0 3 5 2. + <_> + 9 5 3 5 2. + <_> + + <_> + 11 10 3 10 -1. + <_> + 11 15 3 5 2. + <_> + + <_> + 0 0 4 16 -1. + <_> + 0 0 2 8 2. + <_> + 2 8 2 8 2. + <_> + + <_> + 7 0 6 7 -1. + <_> + 9 0 2 7 3. + <_> + + <_> + 7 0 3 13 -1. + <_> + 8 0 1 13 3. + <_> + + <_> + 6 6 12 6 -1. + <_> + 10 6 4 6 3. + <_> + + <_> + 0 4 4 16 -1. + <_> + 0 4 2 8 2. + <_> + 2 12 2 8 2. + <_> + + <_> + 0 1 20 3 -1. + <_> + 0 2 20 1 3. + <_> + + <_> + 5 0 7 6 -1. + <_> + 5 2 7 2 3. + <_> + + <_> + 11 3 6 10 -1. + <_> + 14 3 3 5 2. + <_> + 11 8 3 5 2. + <_> + + <_> + 3 3 6 10 -1. + <_> + 3 3 3 5 2. + <_> + 6 8 3 5 2. + <_> + + <_> + 7 14 12 6 -1. + <_> + 13 14 6 3 2. + <_> + 7 17 6 3 2. + <_> + + <_> + 6 10 3 10 -1. + <_> + 6 15 3 5 2. + <_> + + <_> + 12 0 4 16 -1. + <_> + 14 0 2 8 2. + <_> + 12 8 2 8 2. + <_> + + <_> + 4 0 4 16 -1. + <_> + 4 0 2 8 2. + <_> + 6 8 2 8 2. + <_> + + <_> + 5 13 15 7 -1. + <_> + 10 13 5 7 3. + <_> + + <_> + 0 7 20 2 -1. + <_> + 0 8 20 1 2. + <_> + + <_> + 2 13 18 5 -1. + <_> + 8 13 6 5 3. + <_> + + <_> + 8 6 3 13 -1. + <_> + 9 6 1 13 3. + <_> + + <_> + 12 7 6 12 -1. + <_> + 15 7 3 6 2. + <_> + 12 13 3 6 2. + <_> + + <_> + 2 7 6 12 -1. + <_> + 2 7 3 6 2. + <_> + 5 13 3 6 2. + <_> + + <_> + 9 8 10 6 -1. + <_> + 14 8 5 3 2. + <_> + 9 11 5 3 2. + <_> + + <_> + 1 8 10 6 -1. + <_> + 1 8 5 3 2. + <_> + 6 11 5 3 2. + <_> + + <_> + 4 13 13 3 -1. + <_> + 4 14 13 1 3. + <_> + + <_> + 7 0 6 7 -1. + <_> + 9 0 2 7 3. + <_> + + <_> + 0 8 20 10 -1. + <_> + 0 13 20 5 2. + <_> + + <_> + 0 13 15 7 -1. + <_> + 5 13 5 7 3. + <_> + + <_> + 7 11 6 9 -1. + <_> + 9 11 2 9 3. + <_> + + <_> + 1 11 9 8 -1. + <_> + 4 11 3 8 3. + <_> + + <_> + 2 13 17 6 -1. + <_> + 2 15 17 2 3. + <_> + + <_> + 0 13 7 6 -1. + <_> + 0 15 7 2 3. + <_> + + <_> + 7 14 12 6 -1. + <_> + 13 14 6 3 2. + <_> + 7 17 6 3 2. + <_> + + <_> + 5 6 4 8 -1. + <_> + 5 10 4 4 2. + <_> + + <_> + 13 8 4 12 -1. + <_> + 13 12 4 4 3. + <_> + + <_> + 4 5 12 12 -1. + <_> + 4 5 6 6 2. + <_> + 10 11 6 6 2. + <_> + + <_> + 5 5 10 6 -1. + <_> + 10 5 5 3 2. + <_> + 5 8 5 3 2. + <_> + + <_> + 3 5 14 8 -1. + <_> + 3 5 7 4 2. + <_> + 10 9 7 4 2. + <_> + + <_> + 5 6 10 9 -1. + <_> + 5 9 10 3 3. + <_> + + <_> + 2 10 14 4 -1. + <_> + 2 10 7 2 2. + <_> + 9 12 7 2 2. + <_> + + <_> + 12 9 8 4 -1. + <_> + 12 11 8 2 2. + <_> + + <_> + 0 9 8 4 -1. + <_> + 0 11 8 2 2. + <_> + + <_> + 8 8 8 4 -1. + <_> + 8 10 8 2 2. + <_> + + <_> + 2 14 13 3 -1. + <_> + 2 15 13 1 3. + <_> + + <_> + 8 2 12 17 -1. + <_> + 12 2 4 17 3. + <_> + + <_> + 0 2 12 17 -1. + <_> + 4 2 4 17 3. + <_> + + <_> + 11 9 6 8 -1. + <_> + 11 9 3 8 2. + <_> + + <_> + 4 0 3 20 -1. + <_> + 5 0 1 20 3. + <_> + + <_> + 5 14 14 6 -1. + <_> + 12 14 7 3 2. + <_> + 5 17 7 3 2. + <_> + + <_> + 0 14 14 6 -1. + <_> + 0 14 7 3 2. + <_> + 7 17 7 3 2. + <_> + + <_> + 9 12 10 6 -1. + <_> + 9 14 10 2 3. + <_> + + <_> + 1 14 5 6 -1. + <_> + 1 17 5 3 2. + <_> + + <_> + 11 0 3 13 -1. + <_> + 12 0 1 13 3. + <_> + + <_> + 6 0 3 13 -1. + <_> + 7 0 1 13 3. + <_> + + <_> + 6 9 9 5 -1. + <_> + 9 9 3 5 3. + <_> + + <_> + 1 4 18 9 -1. + <_> + 7 4 6 9 3. + <_> + + <_> + 11 9 6 8 -1. + <_> + 11 9 3 8 2. + <_> + + <_> + 3 9 6 8 -1. + <_> + 6 9 3 8 2. + <_> + + <_> + 9 7 6 12 -1. + <_> + 9 7 3 12 2. + <_> + + <_> + 3 3 14 12 -1. + <_> + 10 3 7 12 2. + <_> + + <_> + 12 11 8 4 -1. + <_> + 12 13 8 2 2. + <_> + + <_> + 1 0 8 20 -1. + <_> + 1 0 4 10 2. + <_> + 5 10 4 10 2. + <_> + + <_> + 12 11 8 4 -1. + <_> + 12 13 8 2 2. + <_> + + <_> + 0 2 10 5 -1. + <_> + 5 2 5 5 2. + <_> + + <_> + 12 12 8 8 -1. + <_> + 12 12 4 8 2. + <_> + + <_> + 0 11 8 4 -1. + <_> + 0 13 8 2 2. + <_> + + <_> + 15 9 5 10 -1. + <_> + 15 14 5 5 2. + <_> + + <_> + 0 9 5 10 -1. + <_> + 0 14 5 5 2. + <_> + + <_> + 9 12 10 6 -1. + <_> + 9 14 10 2 3. + <_> + + <_> + 1 12 10 6 -1. + <_> + 1 14 10 2 3. + <_> + + <_> + 6 12 13 3 -1. + <_> + 6 13 13 1 3. + <_> + + <_> + 6 8 8 9 -1. + <_> + 6 11 8 3 3. + <_> + + <_> + 10 0 10 20 -1. + <_> + 10 0 5 20 2. + <_> + + <_> + 0 0 10 20 -1. + <_> + 5 0 5 20 2. + <_> + + <_> + 7 8 9 12 -1. + <_> + 7 12 9 4 3. + <_> + + <_> + 1 12 13 3 -1. + <_> + 1 13 13 1 3. + <_> + + <_> + 3 8 14 2 -1. + <_> + 3 9 14 1 2. + <_> + + <_> + 0 13 7 6 -1. + <_> + 0 15 7 2 3. + <_> + + <_> + 5 16 10 4 -1. + <_> + 5 18 10 2 2. + <_> + + <_> + 0 10 6 10 -1. + <_> + 0 10 3 5 2. + <_> + 3 15 3 5 2. + <_> + + <_> + 12 3 2 17 -1. + <_> + 12 3 1 17 2. + <_> + + <_> + 0 11 7 6 -1. + <_> + 0 13 7 2 3. + <_> + + <_> + 7 12 13 2 -1. + <_> + 7 13 13 1 2. + <_> + + <_> + 3 9 10 6 -1. + <_> + 3 9 5 3 2. + <_> + 8 12 5 3 2. + <_> + + <_> + 9 9 6 10 -1. + <_> + 12 9 3 5 2. + <_> + 9 14 3 5 2. + <_> + + <_> + 2 6 16 12 -1. + <_> + 2 6 8 6 2. + <_> + 10 12 8 6 2. + <_> + + <_> + 13 2 7 6 -1. + <_> + 13 4 7 2 3. + <_> + + <_> + 3 4 14 4 -1. + <_> + 3 6 14 2 2. + <_> + + <_> + 7 1 13 2 -1. + <_> + 7 2 13 1 2. + <_> + + <_> + 3 5 13 3 -1. + <_> + 3 6 13 1 3. + <_> + + <_> + 9 0 6 7 -1. + <_> + 11 0 2 7 3. + <_> + + <_> + 2 1 15 6 -1. + <_> + 7 1 5 6 3. + <_> + + <_> + 9 0 6 7 -1. + <_> + 11 0 2 7 3. + <_> + + <_> + 0 10 14 3 -1. + <_> + 0 11 14 1 3. + <_> + + <_> + 9 0 6 7 -1. + <_> + 11 0 2 7 3. + <_> + + <_> + 5 0 6 7 -1. + <_> + 7 0 2 7 3. + <_> + + <_> + 9 6 4 14 -1. + <_> + 11 6 2 7 2. + <_> + 9 13 2 7 2. + <_> + + <_> + 0 8 19 2 -1. + <_> + 0 9 19 1 2. + <_> + + <_> + 8 5 6 7 -1. + <_> + 10 5 2 7 3. + <_> + + <_> + 6 11 6 8 -1. + <_> + 8 11 2 8 3. + <_> + + <_> + 7 6 6 7 -1. + <_> + 9 6 2 7 3. + <_> + + <_> + 7 5 4 11 -1. + <_> + 9 5 2 11 2. + <_> + + <_> + 9 3 2 13 -1. + <_> + 9 3 1 13 2. + <_> + + <_> + 0 3 12 6 -1. + <_> + 0 3 6 3 2. + <_> + 6 6 6 3 2. + <_> + + <_> + 3 6 14 2 -1. + <_> + 3 6 7 2 2. + <_> + + <_> + 4 11 6 7 -1. + <_> + 6 11 2 7 3. + <_> + + <_> + 15 10 5 6 -1. + <_> + 15 13 5 3 2. + <_> + + <_> + 4 1 12 6 -1. + <_> + 8 1 4 6 3. + <_> + + <_> + 10 0 4 8 -1. + <_> + 10 0 2 8 2. + <_> + + <_> + 3 1 12 5 -1. + <_> + 9 1 6 5 2. + <_> + + <_> + 13 2 7 6 -1. + <_> + 13 4 7 2 3. + <_> + + <_> + 0 2 7 6 -1. + <_> + 0 4 7 2 3. + <_> + + <_> + 14 1 6 9 -1. + <_> + 14 4 6 3 3. + <_> + + <_> + 0 1 6 9 -1. + <_> + 0 4 6 3 3. + <_> + + <_> + 6 0 9 8 -1. + <_> + 6 4 9 4 2. + <_> + + <_> + 0 5 8 8 -1. + <_> + 0 5 4 4 2. + <_> + 4 9 4 4 2. + <_> + + <_> + 11 1 4 12 -1. + <_> + 11 7 4 6 2. + <_> + + <_> + 4 5 5 6 -1. + <_> + 4 8 5 3 2. + <_> + + <_> + 7 5 11 8 -1. + <_> + 7 9 11 4 2. + <_> + + <_> + 4 2 12 5 -1. + <_> + 8 2 4 5 3. + <_> + + <_> + 10 12 10 8 -1. + <_> + 10 12 5 8 2. + <_> + + <_> + 0 12 10 8 -1. + <_> + 5 12 5 8 2. + <_> + + <_> + 15 0 4 7 -1. + <_> + 15 0 2 7 2. + <_> + + <_> + 1 0 4 7 -1. + <_> + 3 0 2 7 2. + <_> + + <_> + 0 2 20 4 -1. + <_> + 10 2 10 2 2. + <_> + 0 4 10 2 2. + <_> + + <_> + 1 0 12 9 -1. + <_> + 1 3 12 3 3. + <_> + + <_> + 10 14 9 4 -1. + <_> + 10 16 9 2 2. + <_> + + <_> + 6 0 6 7 -1. + <_> + 8 0 2 7 3. + <_> + + <_> + 8 5 6 7 -1. + <_> + 10 5 2 7 3. + <_> + + <_> + 1 6 11 4 -1. + <_> + 1 8 11 2 2. + <_> + + <_> + 4 8 12 4 -1. + <_> + 4 10 12 2 2. + <_> + + <_> + 4 4 3 10 -1. + <_> + 4 9 3 5 2. + <_> + + <_> + 8 2 4 12 -1. + <_> + 8 6 4 4 3. + <_> + + <_> + 3 9 3 10 -1. + <_> + 3 14 3 5 2. + <_> + + <_> + 18 3 2 17 -1. + <_> + 18 3 1 17 2. + <_> + + <_> + 0 3 13 2 -1. + <_> + 0 4 13 1 2. + <_> + + <_> + 18 3 2 17 -1. + <_> + 18 3 1 17 2. + <_> + + <_> + 0 3 2 17 -1. + <_> + 1 3 1 17 2. + <_> + + <_> + 2 0 18 6 -1. + <_> + 2 2 18 2 3. + <_> + + <_> + 6 5 4 13 -1. + <_> + 8 5 2 13 2. + <_> + + <_> + 7 3 12 16 -1. + <_> + 7 3 6 16 2. + <_> + + <_> + 0 12 16 2 -1. + <_> + 8 12 8 2 2. + <_> + + <_> + 11 6 8 12 -1. + <_> + 11 10 8 4 3. + <_> + + <_> + 0 12 6 7 -1. + <_> + 3 12 3 7 2. + <_> + + <_> + 12 0 8 12 -1. + <_> + 16 0 4 6 2. + <_> + 12 6 4 6 2. + <_> + + <_> + 5 6 10 10 -1. + <_> + 5 6 5 5 2. + <_> + 10 11 5 5 2. + <_> + + <_> + 9 5 6 7 -1. + <_> + 11 5 2 7 3. + <_> + + <_> + 6 5 6 7 -1. + <_> + 8 5 2 7 3. + <_> + + <_> + 10 2 2 18 -1. + <_> + 10 11 2 9 2. + <_> + + <_> + 4 9 12 8 -1. + <_> + 4 9 6 4 2. + <_> + 10 13 6 4 2. + <_> + + <_> + 18 0 2 13 -1. + <_> + 18 0 1 13 2. + <_> + + <_> + 2 8 12 4 -1. + <_> + 6 8 4 4 3. + <_> + + <_> + 9 5 6 7 -1. + <_> + 11 5 2 7 3. + <_> + + <_> + 5 5 6 7 -1. + <_> + 7 5 2 7 3. + <_> + + <_> + 18 0 2 13 -1. + <_> + 18 0 1 13 2. + <_> + + <_> + 6 3 2 17 -1. + <_> + 7 3 1 17 2. + <_> + + <_> + 11 9 4 8 -1. + <_> + 11 9 2 8 2. + <_> + + <_> + 5 9 4 8 -1. + <_> + 7 9 2 8 2. + <_> + + <_> + 18 0 2 13 -1. + <_> + 18 0 1 13 2. + <_> + + <_> + 0 0 2 13 -1. + <_> + 1 0 1 13 2. + <_> + + <_> + 0 6 20 2 -1. + <_> + 0 6 10 2 2. + <_> + + <_> + 0 4 13 3 -1. + <_> + 0 5 13 1 3. + <_> + + <_> + 11 10 8 6 -1. + <_> + 11 12 8 2 3. + <_> + + <_> + 2 10 8 6 -1. + <_> + 2 12 8 2 3. + <_> + + <_> + 5 4 14 8 -1. + <_> + 12 4 7 4 2. + <_> + 5 8 7 4 2. + <_> + + <_> + 4 5 12 6 -1. + <_> + 4 5 6 3 2. + <_> + 10 8 6 3 2. + <_> + + <_> + 6 10 8 8 -1. + <_> + 10 10 4 4 2. + <_> + 6 14 4 4 2. + <_> + + <_> + 5 5 9 5 -1. + <_> + 8 5 3 5 3. + <_> + + <_> + 6 4 8 6 -1. + <_> + 6 6 8 2 3. + <_> + + <_> + 4 9 12 5 -1. + <_> + 8 9 4 5 3. + <_> + + <_> + 10 1 10 4 -1. + <_> + 10 1 5 4 2. + <_> + + <_> + 0 14 13 3 -1. + <_> + 0 15 13 1 3. + <_> + + <_> + 15 0 3 18 -1. + <_> + 15 6 3 6 3. + <_> + + <_> + 1 2 9 15 -1. + <_> + 4 2 3 15 3. + <_> + + <_> + 7 6 8 4 -1. + <_> + 7 6 4 4 2. + <_> + + <_> + 5 5 8 5 -1. + <_> + 9 5 4 5 2. + <_> + + <_> + 4 2 15 2 -1. + <_> + 4 3 15 1 2. + <_> + + <_> + 1 17 13 3 -1. + <_> + 1 18 13 1 3. + <_> + + <_> + 6 6 8 8 -1. + <_> + 6 10 8 4 2. + <_> + + <_> + 4 9 5 9 -1. + <_> + 4 12 5 3 3. + <_> + + <_> + 13 9 4 10 -1. + <_> + 13 14 4 5 2. + <_> + + <_> + 2 9 12 10 -1. + <_> + 2 9 6 5 2. + <_> + 8 14 6 5 2. + <_> + + <_> + 3 7 15 3 -1. + <_> + 8 7 5 3 3. + <_> + + <_> + 1 0 8 12 -1. + <_> + 1 0 4 6 2. + <_> + 5 6 4 6 2. + <_> + + <_> + 13 13 7 6 -1. + <_> + 13 15 7 2 3. + <_> + + <_> + 5 9 5 10 -1. + <_> + 5 14 5 5 2. + <_> + + <_> + 13 13 7 6 -1. + <_> + 13 15 7 2 3. + <_> + + <_> + 0 13 7 6 -1. + <_> + 0 15 7 2 3. + <_> + + <_> + 9 0 3 13 -1. + <_> + 10 0 1 13 3. + <_> + + <_> + 5 0 6 7 -1. + <_> + 7 0 2 7 3. + <_> + + <_> + 0 5 20 6 -1. + <_> + 0 7 20 2 3. + <_> + + <_> + 0 2 5 9 -1. + <_> + 0 5 5 3 3. + <_> + + <_> + 9 3 10 12 -1. + <_> + 9 9 10 6 2. + <_> + + <_> + 1 0 7 6 -1. + <_> + 1 2 7 2 3. + <_> + + <_> + 7 3 13 2 -1. + <_> + 7 4 13 1 2. + <_> + + <_> + 5 9 10 8 -1. + <_> + 5 9 5 4 2. + <_> + 10 13 5 4 2. + <_> + + <_> + 11 5 5 9 -1. + <_> + 11 8 5 3 3. + <_> + + <_> + 6 3 8 8 -1. + <_> + 6 3 4 4 2. + <_> + 10 7 4 4 2. + <_> + + <_> + 8 6 6 7 -1. + <_> + 10 6 2 7 3. + <_> + + <_> + 8 0 3 13 -1. + <_> + 9 0 1 13 3. + <_> + + <_> + 10 0 6 7 -1. + <_> + 12 0 2 7 3. + <_> + + <_> + 4 0 6 7 -1. + <_> + 6 0 2 7 3. + <_> + + <_> + 11 15 9 4 -1. + <_> + 11 17 9 2 2. + <_> + + <_> + 4 9 12 5 -1. + <_> + 8 9 4 5 3. + <_> + + <_> + 12 15 8 4 -1. + <_> + 12 17 8 2 2. + <_> + + <_> + 0 15 8 4 -1. + <_> + 0 17 8 2 2. + <_> + + <_> + 0 11 20 3 -1. + <_> + 0 12 20 1 3. + <_> + + <_> + 0 0 3 16 -1. + <_> + 1 0 1 16 3. + <_> + + <_> + 3 2 14 11 -1. + <_> + 3 2 7 11 2. + <_> + + <_> + 4 2 8 6 -1. + <_> + 4 5 8 3 2. + <_> + + <_> + 3 0 15 6 -1. + <_> + 3 2 15 2 3. + <_> + + <_> + 1 6 13 3 -1. + <_> + 1 7 13 1 3. + <_> + + <_> + 7 1 13 3 -1. + <_> + 7 2 13 1 3. + <_> + + <_> + 1 14 12 6 -1. + <_> + 1 14 6 3 2. + <_> + 7 17 6 3 2. + <_> + + <_> + 15 14 5 6 -1. + <_> + 15 17 5 3 2. + <_> + + <_> + 3 4 13 3 -1. + <_> + 3 5 13 1 3. + <_> + + <_> + 15 1 5 9 -1. + <_> + 15 4 5 3 3. + <_> + + <_> + 0 8 7 6 -1. + <_> + 0 10 7 2 3. + <_> + + <_> + 2 6 16 6 -1. + <_> + 10 6 8 3 2. + <_> + 2 9 8 3 2. + <_> + + <_> + 2 7 3 10 -1. + <_> + 2 12 3 5 2. + <_> + + <_> + 15 14 5 6 -1. + <_> + 15 17 5 3 2. + <_> + + <_> + 5 7 10 6 -1. + <_> + 5 7 5 3 2. + <_> + 10 10 5 3 2. + <_> + + <_> + 15 14 5 6 -1. + <_> + 15 17 5 3 2. + <_> + + <_> + 0 14 5 6 -1. + <_> + 0 17 5 3 2. + <_> + + <_> + 10 5 9 15 -1. + <_> + 10 10 9 5 3. + <_> + + <_> + 5 7 9 5 -1. + <_> + 8 7 3 5 3. + <_> + + <_> + 13 1 7 6 -1. + <_> + 13 3 7 2 3. + <_> + + <_> + 3 4 13 3 -1. + <_> + 3 5 13 1 3. + <_> + + <_> + 13 1 7 6 -1. + <_> + 13 3 7 2 3. + <_> + + <_> + 0 1 7 6 -1. + <_> + 0 3 7 2 3. + <_> + + <_> + 7 13 13 3 -1. + <_> + 7 14 13 1 3. + <_> + + <_> + 0 13 13 3 -1. + <_> + 0 14 13 1 3. + <_> + + <_> + 10 1 10 18 -1. + <_> + 10 1 5 18 2. + <_> + + <_> + 0 1 10 18 -1. + <_> + 5 1 5 18 2. + <_> + + <_> + 2 1 18 5 -1. + <_> + 8 1 6 5 3. + <_> + + <_> + 4 5 4 8 -1. + <_> + 4 9 4 4 2. + <_> + + <_> + 9 3 3 10 -1. + <_> + 9 8 3 5 2. + <_> + + <_> + 2 10 14 4 -1. + <_> + 2 10 7 2 2. + <_> + 9 12 7 2 2. + <_> + + <_> + 9 11 9 5 -1. + <_> + 12 11 3 5 3. + <_> + + <_> + 3 11 14 4 -1. + <_> + 3 11 7 2 2. + <_> + 10 13 7 2 2. + <_> + + <_> + 10 5 8 4 -1. + <_> + 10 5 4 4 2. + <_> + + <_> + 8 3 3 13 -1. + <_> + 9 3 1 13 3. + <_> + + <_> + 8 0 6 7 -1. + <_> + 10 0 2 7 3. + <_> + + <_> + 6 0 2 14 -1. + <_> + 7 0 1 14 2. + <_> + + <_> + 10 5 8 4 -1. + <_> + 10 5 4 4 2. + <_> + + <_> + 0 0 8 4 -1. + <_> + 4 0 4 4 2. + <_> + + <_> + 14 0 6 13 -1. + <_> + 14 0 3 13 2. + <_> + + <_> + 0 1 6 11 -1. + <_> + 3 1 3 11 2. + <_> + + <_> + 9 11 9 5 -1. + <_> + 12 11 3 5 3. + <_> + + <_> + 2 11 9 5 -1. + <_> + 5 11 3 5 3. + <_> + + <_> + 7 12 6 7 -1. + <_> + 9 12 2 7 3. + <_> + + <_> + 0 0 4 15 -1. + <_> + 2 0 2 15 2. + <_> + + <_> + 12 2 2 15 -1. + <_> + 12 2 1 15 2. + <_> + + <_> + 6 2 2 15 -1. + <_> + 7 2 1 15 2. + <_> + + <_> + 6 0 13 2 -1. + <_> + 6 1 13 1 2. + <_> + + <_> + 0 12 13 3 -1. + <_> + 0 13 13 1 3. + <_> + + <_> + 10 3 4 7 -1. + <_> + 10 3 2 7 2. + <_> + + <_> + 5 3 4 7 -1. + <_> + 7 3 2 7 2. + <_> + + <_> + 10 5 8 4 -1. + <_> + 10 5 4 4 2. + <_> + + <_> + 2 5 8 4 -1. + <_> + 6 5 4 4 2. + <_> + + <_> + 8 0 12 20 -1. + <_> + 8 0 6 20 2. + <_> + + <_> + 0 0 12 20 -1. + <_> + 6 0 6 20 2. + <_> + + <_> + 7 3 13 2 -1. + <_> + 7 4 13 1 2. + <_> + + <_> + 8 0 4 15 -1. + <_> + 8 5 4 5 3. + <_> + + <_> + 5 0 11 8 -1. + <_> + 5 4 11 4 2. + <_> + + <_> + 2 3 8 14 -1. + <_> + 6 3 4 14 2. + <_> + + <_> + 15 1 5 6 -1. + <_> + 15 4 5 3 2. + <_> + + <_> + 0 1 5 6 -1. + <_> + 0 4 5 3 2. + <_> + + <_> + 8 4 4 7 -1. + <_> + 8 4 2 7 2. + <_> + + <_> + 5 6 10 3 -1. + <_> + 10 6 5 3 2. + <_> + + <_> + 14 0 2 19 -1. + <_> + 14 0 1 19 2. + <_> + + <_> + 4 0 2 19 -1. + <_> + 5 0 1 19 2. + <_> + + <_> + 11 13 6 7 -1. + <_> + 13 13 2 7 3. + <_> + + <_> + 1 8 18 3 -1. + <_> + 7 8 6 3 3. + <_> + + <_> + 8 7 5 8 -1. + <_> + 8 11 5 4 2. + <_> + + <_> + 6 2 8 16 -1. + <_> + 6 10 8 8 2. + <_> + + <_> + 8 3 6 9 -1. + <_> + 8 6 6 3 3. + <_> + + <_> + 2 16 7 4 -1. + <_> + 2 18 7 2 2. + <_> + + <_> + 8 7 7 4 -1. + <_> + 8 9 7 2 2. + <_> + + <_> + 7 4 5 12 -1. + <_> + 7 8 5 4 3. + <_> + + <_> + 13 14 7 6 -1. + <_> + 13 16 7 2 3. + <_> + + <_> + 3 6 14 4 -1. + <_> + 3 6 7 2 2. + <_> + 10 8 7 2 2. + <_> + + <_> + 8 4 6 10 -1. + <_> + 11 4 3 5 2. + <_> + 8 9 3 5 2. + <_> + + <_> + 7 4 6 10 -1. + <_> + 7 4 3 5 2. + <_> + 10 9 3 5 2. + <_> + + <_> + 7 3 13 2 -1. + <_> + 7 4 13 1 2. + <_> + + <_> + 0 14 7 6 -1. + <_> + 0 16 7 2 3. + <_> + + <_> + 13 0 3 15 -1. + <_> + 14 0 1 15 3. + <_> + + <_> + 0 14 14 3 -1. + <_> + 0 15 14 1 3. + <_> + + <_> + 1 4 18 15 -1. + <_> + 1 9 18 5 3. + <_> + + <_> + 0 15 13 3 -1. + <_> + 0 16 13 1 3. + <_> + + <_> + 13 11 7 6 -1. + <_> + 13 13 7 2 3. + <_> + + <_> + 4 0 3 14 -1. + <_> + 5 0 1 14 3. + <_> + + <_> + 12 10 5 6 -1. + <_> + 12 13 5 3 2. + <_> + + <_> + 1 15 18 4 -1. + <_> + 1 15 9 2 2. + <_> + 10 17 9 2 2. + <_> + + <_> + 10 13 8 6 -1. + <_> + 10 15 8 2 3. + <_> + + <_> + 7 0 3 13 -1. + <_> + 8 0 1 13 3. + <_> + + <_> + 12 13 7 6 -1. + <_> + 12 15 7 2 3. + <_> + + <_> + 1 13 7 6 -1. + <_> + 1 15 7 2 3. + <_> + + <_> + 8 0 10 18 -1. + <_> + 13 0 5 9 2. + <_> + 8 9 5 9 2. + <_> + + <_> + 0 3 18 3 -1. + <_> + 6 3 6 3 3. + <_> + + <_> + 10 4 10 6 -1. + <_> + 15 4 5 3 2. + <_> + 10 7 5 3 2. + <_> + + <_> + 2 8 16 4 -1. + <_> + 10 8 8 4 2. + <_> + + <_> + 4 4 12 12 -1. + <_> + 10 4 6 6 2. + <_> + 4 10 6 6 2. + <_> + + <_> + 1 0 18 3 -1. + <_> + 10 0 9 3 2. + <_> + + <_> + 11 4 4 10 -1. + <_> + 11 9 4 5 2. + <_> + + <_> + 2 4 5 15 -1. + <_> + 2 9 5 5 3. + <_> + + <_> + 17 6 2 14 -1. + <_> + 17 13 2 7 2. + <_> + + <_> + 1 6 2 14 -1. + <_> + 1 13 2 7 2. + <_> + + <_> + 10 6 10 6 -1. + <_> + 15 6 5 3 2. + <_> + 10 9 5 3 2. + <_> + + <_> + 0 6 10 6 -1. + <_> + 0 6 5 3 2. + <_> + 5 9 5 3 2. + <_> + + <_> + 2 10 18 3 -1. + <_> + 2 11 18 1 3. + <_> + + <_> + 0 2 7 4 -1. + <_> + 0 4 7 2 2. + <_> + + <_> + 2 0 16 6 -1. + <_> + 2 2 16 2 3. + <_> + + <_> + 2 17 15 3 -1. + <_> + 7 17 5 3 3. + <_> + + <_> + 12 13 6 7 -1. + <_> + 12 13 3 7 2. + <_> + + <_> + 2 13 6 7 -1. + <_> + 5 13 3 7 2. + <_> + + <_> + 14 2 2 13 -1. + <_> + 14 2 1 13 2. + <_> + + <_> + 7 12 4 8 -1. + <_> + 7 16 4 4 2. + <_> + + <_> + 2 17 18 3 -1. + <_> + 8 17 6 3 3. + <_> + + <_> + 5 15 6 5 -1. + <_> + 8 15 3 5 2. + <_> + + <_> + 14 2 2 13 -1. + <_> + 14 2 1 13 2. + <_> + + <_> + 4 2 2 13 -1. + <_> + 5 2 1 13 2. + <_> + + <_> + 10 0 6 9 -1. + <_> + 12 0 2 9 3. + <_> + + <_> + 4 0 6 9 -1. + <_> + 6 0 2 9 3. + <_> + + <_> + 13 11 7 4 -1. + <_> + 13 13 7 2 2. + <_> + + <_> + 0 10 13 3 -1. + <_> + 0 11 13 1 3. + <_> + + <_> + 6 7 9 12 -1. + <_> + 6 11 9 4 3. + <_> + + <_> + 2 2 14 4 -1. + <_> + 2 2 7 2 2. + <_> + 9 4 7 2 2. + <_> + + <_> + 10 0 2 13 -1. + <_> + 10 0 1 13 2. + <_> + + <_> + 8 0 2 13 -1. + <_> + 9 0 1 13 2. + <_> + + <_> + 13 11 7 4 -1. + <_> + 13 13 7 2 2. + <_> + + <_> + 6 11 7 6 -1. + <_> + 6 13 7 2 3. + <_> + + <_> + 7 13 13 3 -1. + <_> + 7 14 13 1 3. + <_> + + <_> + 0 11 7 4 -1. + <_> + 0 13 7 2 2. + <_> + + <_> + 4 12 12 6 -1. + <_> + 8 12 4 6 3. + <_> + + <_> + 5 6 6 10 -1. + <_> + 8 6 3 10 2. + <_> + + <_> + 7 1 13 3 -1. + <_> + 7 2 13 1 3. + <_> + + <_> + 2 2 14 6 -1. + <_> + 2 2 7 3 2. + <_> + 9 5 7 3 2. + <_> + + <_> + 5 0 10 7 -1. + <_> + 5 0 5 7 2. + <_> + + <_> + 6 6 8 5 -1. + <_> + 10 6 4 5 2. + <_> + + <_> + 8 6 6 7 -1. + <_> + 10 6 2 7 3. + <_> + + <_> + 6 0 6 7 -1. + <_> + 8 0 2 7 3. + <_> + + <_> + 8 0 10 18 -1. + <_> + 13 0 5 9 2. + <_> + 8 9 5 9 2. + <_> + + <_> + 2 5 14 6 -1. + <_> + 2 5 7 3 2. + <_> + 9 8 7 3 2. + <_> + + <_> + 7 1 6 10 -1. + <_> + 10 1 3 5 2. + <_> + 7 6 3 5 2. + <_> + + <_> + 0 16 14 4 -1. + <_> + 0 16 7 2 2. + <_> + 7 18 7 2 2. + <_> + + <_> + 9 9 10 6 -1. + <_> + 14 9 5 3 2. + <_> + 9 12 5 3 2. + <_> + + <_> + 2 8 6 10 -1. + <_> + 2 13 6 5 2. + <_> + + <_> + 1 10 19 2 -1. + <_> + 1 11 19 1 2. + <_> + + <_> + 4 9 12 6 -1. + <_> + 4 12 12 3 2. + <_> + + <_> + 9 7 4 12 -1. + <_> + 9 11 4 4 3. + <_> + + <_> + 0 11 13 3 -1. + <_> + 0 12 13 1 3. + <_> + + <_> + 10 14 7 6 -1. + <_> + 10 16 7 2 3. + <_> + + <_> + 3 14 7 6 -1. + <_> + 3 16 7 2 3. + <_> + + <_> + 15 5 4 15 -1. + <_> + 15 5 2 15 2. + <_> + + <_> + 0 3 17 10 -1. + <_> + 0 8 17 5 2. + <_> + + <_> + 15 1 5 9 -1. + <_> + 15 4 5 3 3. + <_> + + <_> + 0 0 20 4 -1. + <_> + 10 0 10 4 2. + <_> + + <_> + 6 1 10 6 -1. + <_> + 11 1 5 3 2. + <_> + 6 4 5 3 2. + <_> + + <_> + 0 9 18 11 -1. + <_> + 6 9 6 11 3. + <_> + + <_> + 4 14 13 3 -1. + <_> + 4 15 13 1 3. + <_> + + <_> + 0 10 20 6 -1. + <_> + 0 12 20 2 3. + <_> + + <_> + 10 9 6 10 -1. + <_> + 13 9 3 5 2. + <_> + 10 14 3 5 2. + <_> + + <_> + 7 10 6 10 -1. + <_> + 7 10 3 5 2. + <_> + 10 15 3 5 2. + <_> + + <_> + 6 1 8 15 -1. + <_> + 6 6 8 5 3. + <_> + + <_> + 0 8 18 3 -1. + <_> + 0 9 18 1 3. + <_> + + <_> + 15 1 5 9 -1. + <_> + 15 4 5 3 3. + <_> + + <_> + 3 10 6 10 -1. + <_> + 3 10 3 5 2. + <_> + 6 15 3 5 2. + <_> + + <_> + 11 8 8 12 -1. + <_> + 15 8 4 6 2. + <_> + 11 14 4 6 2. + <_> + + <_> + 1 8 8 12 -1. + <_> + 1 8 4 6 2. + <_> + 5 14 4 6 2. + <_> + + <_> + 13 7 3 13 -1. + <_> + 14 7 1 13 3. + <_> + + <_> + 6 11 5 9 -1. + <_> + 6 14 5 3 3. + <_> + + <_> + 7 14 12 5 -1. + <_> + 7 14 6 5 2. + <_> + + <_> + 2 0 4 8 -1. + <_> + 2 4 4 4 2. + <_> + + <_> + 5 0 10 6 -1. + <_> + 5 3 10 3 2. + <_> + + <_> + 0 1 5 9 -1. + <_> + 0 4 5 3 3. + <_> + + <_> + 6 9 8 8 -1. + <_> + 10 9 4 4 2. + <_> + 6 13 4 4 2. + <_> + + <_> + 6 6 6 7 -1. + <_> + 8 6 2 7 3. + <_> + + <_> + 13 5 2 13 -1. + <_> + 13 5 1 13 2. + <_> + + <_> + 5 9 6 10 -1. + <_> + 5 9 3 5 2. + <_> + 8 14 3 5 2. + <_> + + <_> + 2 9 18 3 -1. + <_> + 8 9 6 3 3. + <_> + + <_> + 5 5 2 13 -1. + <_> + 6 5 1 13 2. + <_> + + <_> + 11 10 4 10 -1. + <_> + 11 10 2 10 2. + <_> + + <_> + 5 10 4 10 -1. + <_> + 7 10 2 10 2. + <_> + + <_> + 9 5 6 7 -1. + <_> + 11 5 2 7 3. + <_> + + <_> + 7 6 6 7 -1. + <_> + 9 6 2 7 3. + <_> + + <_> + 4 2 15 14 -1. + <_> + 9 2 5 14 3. + <_> + + <_> + 1 2 15 14 -1. + <_> + 6 2 5 14 3. + <_> + + <_> + 11 0 6 9 -1. + <_> + 13 0 2 9 3. + <_> + + <_> + 3 0 6 9 -1. + <_> + 5 0 2 9 3. + <_> + + <_> + 8 6 6 7 -1. + <_> + 10 6 2 7 3. + <_> + + <_> + 1 3 10 8 -1. + <_> + 1 3 5 4 2. + <_> + 6 7 5 4 2. + <_> + + <_> + 5 13 14 6 -1. + <_> + 5 13 7 6 2. + <_> + + <_> + 1 13 14 6 -1. + <_> + 8 13 7 6 2. + <_> + + <_> + 7 2 13 3 -1. + <_> + 7 3 13 1 3. + <_> + + <_> + 0 7 20 2 -1. + <_> + 10 7 10 2 2. + <_> + + <_> + 5 0 15 6 -1. + <_> + 10 0 5 6 3. + <_> + + <_> + 0 0 15 6 -1. + <_> + 5 0 5 6 3. + <_> + + <_> + 12 1 8 13 -1. + <_> + 12 1 4 13 2. + <_> + + <_> + 0 1 8 13 -1. + <_> + 4 1 4 13 2. + <_> + + <_> + 15 0 4 18 -1. + <_> + 15 0 2 18 2. + <_> + + <_> + 4 0 12 4 -1. + <_> + 8 0 4 4 3. + <_> + + <_> + 15 0 4 18 -1. + <_> + 15 0 2 18 2. + <_> + + <_> + 1 0 4 18 -1. + <_> + 3 0 2 18 2. + <_> + + <_> + 4 12 12 6 -1. + <_> + 8 12 4 6 3. + <_> + + <_> + 2 0 6 5 -1. + <_> + 5 0 3 5 2. + <_> + + <_> + 12 5 4 12 -1. + <_> + 12 9 4 4 3. + <_> + + <_> + 4 4 11 6 -1. + <_> + 4 6 11 2 3. + <_> + + <_> + 11 6 5 6 -1. + <_> + 11 9 5 3 2. + <_> + + <_> + 5 6 8 8 -1. + <_> + 5 6 4 4 2. + <_> + 9 10 4 4 2. + <_> + + <_> + 10 9 4 8 -1. + <_> + 10 13 4 4 2. + <_> + + <_> + 6 14 8 4 -1. + <_> + 6 16 8 2 2. + <_> + + <_> + 10 2 4 7 -1. + <_> + 10 2 2 7 2. + <_> + + <_> + 1 9 13 2 -1. + <_> + 1 10 13 1 2. + <_> + + <_> + 10 2 4 7 -1. + <_> + 10 2 2 7 2. + <_> + + <_> + 6 2 4 7 -1. + <_> + 8 2 2 7 2. + <_> + + <_> + 9 5 7 14 -1. + <_> + 9 12 7 7 2. + <_> + + <_> + 0 0 17 2 -1. + <_> + 0 1 17 1 2. + <_> + + <_> + 5 9 10 8 -1. + <_> + 10 9 5 4 2. + <_> + 5 13 5 4 2. + <_> + + <_> + 3 10 8 6 -1. + <_> + 3 12 8 2 3. + <_> + + <_> + 7 11 7 6 -1. + <_> + 7 13 7 2 3. + <_> + + <_> + 3 3 13 2 -1. + <_> + 3 4 13 1 2. + <_> + + <_> + 10 2 5 6 -1. + <_> + 10 5 5 3 2. + <_> + + <_> + 6 5 2 14 -1. + <_> + 6 12 2 7 2. + <_> + + <_> + 12 9 4 8 -1. + <_> + 12 13 4 4 2. + <_> + + <_> + 4 9 4 8 -1. + <_> + 4 13 4 4 2. + <_> + + <_> + 14 0 6 5 -1. + <_> + 14 0 3 5 2. + <_> + + <_> + 1 4 4 14 -1. + <_> + 1 4 2 7 2. + <_> + 3 11 2 7 2. + <_> + + <_> + 11 0 3 20 -1. + <_> + 12 0 1 20 3. + <_> + + <_> + 0 0 6 5 -1. + <_> + 3 0 3 5 2. + <_> + + <_> + 6 2 9 5 -1. + <_> + 9 2 3 5 3. + <_> + + <_> + 0 0 4 7 -1. + <_> + 2 0 2 7 2. + <_> + + <_> + 11 0 3 20 -1. + <_> + 12 0 1 20 3. + <_> + + <_> + 0 0 4 14 -1. + <_> + 2 0 2 14 2. + <_> + + <_> + 11 0 3 20 -1. + <_> + 12 0 1 20 3. + <_> + + <_> + 6 0 3 20 -1. + <_> + 7 0 1 20 3. + <_> + + <_> + 14 2 6 7 -1. + <_> + 16 2 2 7 3. + <_> + + <_> + 0 2 6 7 -1. + <_> + 2 2 2 7 3. + <_> + + <_> + 13 0 3 13 -1. + <_> + 14 0 1 13 3. + <_> + + <_> + 1 1 18 14 -1. + <_> + 7 1 6 14 3. + <_> + + <_> + 10 1 3 13 -1. + <_> + 11 1 1 13 3. + <_> + + <_> + 6 0 6 7 -1. + <_> + 8 0 2 7 3. + <_> + + <_> + 4 10 16 4 -1. + <_> + 12 10 8 2 2. + <_> + 4 12 8 2 2. + <_> + + <_> + 0 10 18 4 -1. + <_> + 0 10 9 2 2. + <_> + 9 12 9 2 2. + <_> + + <_> + 8 14 10 6 -1. + <_> + 13 14 5 3 2. + <_> + 8 17 5 3 2. + <_> + + <_> + 1 4 14 6 -1. + <_> + 1 4 7 3 2. + <_> + 8 7 7 3 2. + <_> + + <_> + 11 2 3 10 -1. + <_> + 11 7 3 5 2. + <_> + + <_> + 5 3 9 10 -1. + <_> + 5 8 9 5 2. + <_> + + <_> + 11 2 3 10 -1. + <_> + 11 7 3 5 2. + <_> + + <_> + 6 2 3 10 -1. + <_> + 6 7 3 5 2. + <_> + + <_> + 12 0 8 8 -1. + <_> + 16 0 4 4 2. + <_> + 12 4 4 4 2. + <_> + + <_> + 5 0 3 20 -1. + <_> + 6 0 1 20 3. + <_> + + <_> + 11 10 4 8 -1. + <_> + 11 10 2 8 2. + <_> + + <_> + 5 10 4 8 -1. + <_> + 7 10 2 8 2. + <_> + + <_> + 7 6 6 7 -1. + <_> + 9 6 2 7 3. + <_> + + <_> + 4 7 12 8 -1. + <_> + 8 7 4 8 3. + <_> + + <_> + 6 13 13 3 -1. + <_> + 6 14 13 1 3. + <_> + + <_> + 0 11 8 4 -1. + <_> + 0 13 8 2 2. + <_> + + <_> + 8 5 6 7 -1. + <_> + 10 5 2 7 3. + <_> + + <_> + 6 5 6 7 -1. + <_> + 8 5 2 7 3. + <_> + + <_> + 3 0 16 10 -1. + <_> + 11 0 8 5 2. + <_> + 3 5 8 5 2. + <_> + + <_> + 0 2 18 2 -1. + <_> + 0 3 18 1 2. + <_> + + <_> + 9 0 6 7 -1. + <_> + 11 0 2 7 3. + <_> + + <_> + 8 0 2 13 -1. + <_> + 9 0 1 13 2. + <_> + + <_> + 8 0 12 20 -1. + <_> + 8 0 6 20 2. + <_> + + <_> + 0 0 12 20 -1. + <_> + 6 0 6 20 2. + <_> + + <_> + 12 0 8 8 -1. + <_> + 16 0 4 4 2. + <_> + 12 4 4 4 2. + <_> + + <_> + 0 0 8 8 -1. + <_> + 0 0 4 4 2. + <_> + 4 4 4 4 2. + <_> + + <_> + 3 15 14 4 -1. + <_> + 10 15 7 2 2. + <_> + 3 17 7 2 2. + <_> + + <_> + 4 1 8 8 -1. + <_> + 4 1 4 4 2. + <_> + 8 5 4 4 2. + <_> + + <_> + 7 9 13 3 -1. + <_> + 7 10 13 1 3. + <_> + + <_> + 0 9 13 3 -1. + <_> + 0 10 13 1 3. + <_> + + <_> + 7 13 13 3 -1. + <_> + 7 14 13 1 3. + <_> + + <_> + 0 14 8 6 -1. + <_> + 0 16 8 2 3. + <_> + + <_> + 6 7 13 2 -1. + <_> + 6 8 13 1 2. + <_> + + <_> + 4 11 5 9 -1. + <_> + 4 14 5 3 3. + <_> + + <_> + 7 11 7 6 -1. + <_> + 7 13 7 2 3. + <_> + + <_> + 0 1 6 7 -1. + <_> + 2 1 2 7 3. + <_> + + <_> + 5 8 13 2 -1. + <_> + 5 9 13 1 2. + <_> + + <_> + 0 7 14 4 -1. + <_> + 0 7 7 2 2. + <_> + 7 9 7 2 2. + <_> + + <_> + 15 4 4 16 -1. + <_> + 17 4 2 8 2. + <_> + 15 12 2 8 2. + <_> + + <_> + 0 12 7 6 -1. + <_> + 0 14 7 2 3. + <_> + + <_> + 14 7 6 12 -1. + <_> + 17 7 3 6 2. + <_> + 14 13 3 6 2. + <_> + + <_> + 3 16 12 4 -1. + <_> + 7 16 4 4 3. + <_> + + <_> + 2 17 18 3 -1. + <_> + 8 17 6 3 3. + <_> + + <_> + 2 7 15 5 -1. + <_> + 7 7 5 5 3. + <_> + + <_> + 10 2 4 15 -1. + <_> + 10 7 4 5 3. + <_> + + <_> + 1 12 13 3 -1. + <_> + 1 13 13 1 3. + <_> + + <_> + 7 0 6 12 -1. + <_> + 10 0 3 6 2. + <_> + 7 6 3 6 2. + <_> + + <_> + 4 3 12 10 -1. + <_> + 8 3 4 10 3. + <_> + + <_> + 8 1 4 10 -1. + <_> + 8 6 4 5 2. + <_> + + <_> + 0 3 20 8 -1. + <_> + 0 7 20 4 2. + <_> + + <_> + 7 0 6 7 -1. + <_> + 9 0 2 7 3. + <_> + + <_> + 0 7 6 12 -1. + <_> + 0 7 3 6 2. + <_> + 3 13 3 6 2. + <_> + + <_> + 12 5 2 14 -1. + <_> + 12 12 2 7 2. + <_> + + <_> + 0 10 6 10 -1. + <_> + 0 10 3 5 2. + <_> + 3 15 3 5 2. + <_> + + <_> + 15 2 5 9 -1. + <_> + 15 5 5 3 3. + <_> + + <_> + 2 0 16 8 -1. + <_> + 2 0 8 4 2. + <_> + 10 4 8 4 2. + <_> + + <_> + 9 5 7 9 -1. + <_> + 9 8 7 3 3. + <_> + + <_> + 0 12 8 8 -1. + <_> + 0 12 4 4 2. + <_> + 4 16 4 4 2. + <_> + + <_> + 15 2 5 9 -1. + <_> + 15 5 5 3 3. + <_> + + <_> + 0 10 16 4 -1. + <_> + 0 10 8 2 2. + <_> + 8 12 8 2 2. + <_> + + <_> + 0 2 20 4 -1. + <_> + 10 2 10 2 2. + <_> + 0 4 10 2 2. + <_> + + <_> + 3 5 4 14 -1. + <_> + 3 5 2 7 2. + <_> + 5 12 2 7 2. + <_> + + <_> + 5 10 11 9 -1. + <_> + 5 13 11 3 3. + <_> + + <_> + 2 9 4 9 -1. + <_> + 4 9 2 9 2. + <_> + + <_> + 3 14 14 3 -1. + <_> + 3 15 14 1 3. + <_> + + <_> + 3 4 4 15 -1. + <_> + 3 9 4 5 3. + <_> + + <_> + 7 4 13 3 -1. + <_> + 7 5 13 1 3. + <_> + + <_> + 5 0 6 7 -1. + <_> + 7 0 2 7 3. + <_> + + <_> + 11 0 9 7 -1. + <_> + 14 0 3 7 3. + <_> + + <_> + 1 10 6 7 -1. + <_> + 3 10 2 7 3. + <_> + + <_> + 13 0 3 17 -1. + <_> + 14 0 1 17 3. + <_> + + <_> + 9 4 2 13 -1. + <_> + 10 4 1 13 2. + <_> + + <_> + 6 6 12 9 -1. + <_> + 10 6 4 9 3. + <_> + + <_> + 2 6 12 9 -1. + <_> + 6 6 4 9 3. + <_> + + <_> + 3 14 14 4 -1. + <_> + 10 14 7 2 2. + <_> + 3 16 7 2 2. + <_> + + <_> + 3 3 13 4 -1. + <_> + 3 5 13 2 2. + <_> + + <_> + 10 14 10 6 -1. + <_> + 10 16 10 2 3. + <_> + + <_> + 0 14 11 6 -1. + <_> + 0 16 11 2 3. + <_> + + <_> + 1 0 18 4 -1. + <_> + 7 0 6 4 3. + <_> + + <_> + 4 0 3 17 -1. + <_> + 5 0 1 17 3. + <_> + + <_> + 13 3 3 17 -1. + <_> + 14 3 1 17 3. + <_> + + <_> + 1 0 18 9 -1. + <_> + 7 0 6 9 3. + <_> + + <_> + 9 7 9 6 -1. + <_> + 12 7 3 6 3. + <_> + + <_> + 4 3 3 17 -1. + <_> + 5 3 1 17 3. + <_> + + <_> + 6 14 14 3 -1. + <_> + 6 15 14 1 3. + <_> + + <_> + 2 14 13 3 -1. + <_> + 2 15 13 1 3. + <_> + + <_> + 5 14 15 3 -1. + <_> + 5 15 15 1 3. + <_> + + <_> + 0 2 5 9 -1. + <_> + 0 5 5 3 3. + <_> + + <_> + 7 7 9 6 -1. + <_> + 7 10 9 3 2. + <_> + + <_> + 8 5 3 10 -1. + <_> + 8 10 3 5 2. + <_> + + <_> + 5 8 14 2 -1. + <_> + 5 9 14 1 2. + <_> + + <_> + 0 6 13 3 -1. + <_> + 0 7 13 1 3. + <_> + + <_> + 3 13 17 6 -1. + <_> + 3 15 17 2 3. + <_> + + <_> + 6 15 8 4 -1. + <_> + 6 17 8 2 2. + <_> + + <_> + 6 7 14 2 -1. + <_> + 6 8 14 1 2. + <_> + + <_> + 6 7 6 8 -1. + <_> + 6 11 6 4 2. + <_> + + <_> + 5 4 13 3 -1. + <_> + 5 5 13 1 3. + <_> + + <_> + 0 0 6 10 -1. + <_> + 0 0 3 5 2. + <_> + 3 5 3 5 2. + <_> + + <_> + 8 5 12 4 -1. + <_> + 12 5 4 4 3. + <_> + + <_> + 6 5 2 14 -1. + <_> + 6 12 2 7 2. + <_> + + <_> + 11 0 9 7 -1. + <_> + 14 0 3 7 3. + <_> + + <_> + 0 5 12 4 -1. + <_> + 4 5 4 4 3. + <_> + + <_> + 11 0 9 7 -1. + <_> + 14 0 3 7 3. + <_> + + <_> + 0 0 9 7 -1. + <_> + 3 0 3 7 3. + <_> + + <_> + 2 13 16 4 -1. + <_> + 10 13 8 2 2. + <_> + 2 15 8 2 2. + <_> + + <_> + 0 10 7 6 -1. + <_> + 0 12 7 2 3. + <_> + + <_> + 5 0 10 8 -1. + <_> + 5 4 10 4 2. + <_> + + <_> + 5 2 10 14 -1. + <_> + 5 9 10 7 2. + <_> + + <_> + 7 7 13 2 -1. + <_> + 7 8 13 1 2. + <_> + + <_> + 1 13 13 3 -1. + <_> + 1 14 13 1 3. + <_> + + <_> + 4 0 13 3 -1. + <_> + 4 1 13 1 3. + <_> + + <_> + 5 0 10 4 -1. + <_> + 5 2 10 2 2. + <_> + + <_> + 7 1 13 3 -1. + <_> + 7 2 13 1 3. + <_> + + <_> + 0 0 18 3 -1. + <_> + 9 0 9 3 2. + <_> + + <_> + 2 17 18 3 -1. + <_> + 8 17 6 3 3. + <_> + + <_> + 0 17 18 3 -1. + <_> + 6 17 6 3 3. + <_> + + <_> + 11 16 8 4 -1. + <_> + 11 16 4 4 2. + <_> + + <_> + 0 3 18 15 -1. + <_> + 0 8 18 5 3. + <_> + + <_> + 2 9 16 8 -1. + <_> + 2 13 16 4 2. + <_> + + <_> + 0 10 7 4 -1. + <_> + 0 12 7 2 2. + <_> + + <_> + 4 5 12 12 -1. + <_> + 10 5 6 6 2. + <_> + 4 11 6 6 2. + <_> + + <_> + 5 12 9 5 -1. + <_> + 8 12 3 5 3. + <_> + + <_> + 18 0 2 16 -1. + <_> + 18 8 2 8 2. + <_> + + <_> + 0 0 2 16 -1. + <_> + 0 8 2 8 2. + <_> + + <_> + 7 1 13 3 -1. + <_> + 7 2 13 1 3. + <_> + + <_> + 0 1 13 3 -1. + <_> + 0 2 13 1 3. + <_> + + <_> + 14 7 6 10 -1. + <_> + 17 7 3 5 2. + <_> + 14 12 3 5 2. + <_> + + <_> + 0 2 12 6 -1. + <_> + 0 2 6 3 2. + <_> + 6 5 6 3 2. + <_> + + <_> + 10 0 10 10 -1. + <_> + 15 0 5 5 2. + <_> + 10 5 5 5 2. + <_> + + <_> + 0 0 10 10 -1. + <_> + 0 0 5 5 2. + <_> + 5 5 5 5 2. + <_> + + <_> + 2 7 18 4 -1. + <_> + 11 7 9 2 2. + <_> + 2 9 9 2 2. + <_> + + <_> + 5 3 6 14 -1. + <_> + 5 3 3 7 2. + <_> + 8 10 3 7 2. + <_> + + <_> + 9 2 3 13 -1. + <_> + 10 2 1 13 3. + <_> + + <_> + 0 7 6 10 -1. + <_> + 0 7 3 5 2. + <_> + 3 12 3 5 2. + <_> + + <_> + 13 4 3 13 -1. + <_> + 14 4 1 13 3. + <_> + + <_> + 1 16 8 4 -1. + <_> + 5 16 4 4 2. + <_> + + <_> + 5 15 15 5 -1. + <_> + 10 15 5 5 3. + <_> + + <_> + 7 3 4 13 -1. + <_> + 9 3 2 13 2. + <_> + + <_> + 7 4 13 3 -1. + <_> + 7 5 13 1 3. + <_> + + <_> + 2 0 16 8 -1. + <_> + 2 0 8 4 2. + <_> + 10 4 8 4 2. + <_> + + <_> + 13 7 6 11 -1. + <_> + 15 7 2 11 3. + <_> + + <_> + 7 9 6 10 -1. + <_> + 7 9 3 5 2. + <_> + 10 14 3 5 2. + <_> + + <_> + 7 5 9 8 -1. + <_> + 10 5 3 8 3. + <_> + + <_> + 4 5 3 13 -1. + <_> + 5 5 1 13 3. + <_> + + <_> + 10 4 6 12 -1. + <_> + 10 8 6 4 3. + <_> + + <_> + 7 4 6 7 -1. + <_> + 9 4 2 7 3. + <_> + + <_> + 5 6 12 4 -1. + <_> + 9 6 4 4 3. + <_> + + <_> + 3 6 12 4 -1. + <_> + 7 6 4 4 3. + <_> + + <_> + 16 4 4 8 -1. + <_> + 16 8 4 4 2. + <_> + + <_> + 4 5 9 8 -1. + <_> + 7 5 3 8 3. + <_> + + <_> + 16 4 4 8 -1. + <_> + 16 8 4 4 2. + <_> + + <_> + 4 5 8 15 -1. + <_> + 4 10 8 5 3. + <_> + + <_> + 5 14 13 2 -1. + <_> + 5 15 13 1 2. + <_> + + <_> + 1 7 4 13 -1. + <_> + 3 7 2 13 2. + <_> + + <_> + 11 9 6 8 -1. + <_> + 11 9 3 8 2. + <_> + + <_> + 3 9 6 8 -1. + <_> + 6 9 3 8 2. + <_> + + <_> + 8 1 9 15 -1. + <_> + 11 1 3 15 3. + <_> + + <_> + 3 1 9 15 -1. + <_> + 6 1 3 15 3. + <_> + + <_> + 9 7 9 6 -1. + <_> + 12 7 3 6 3. + <_> + + <_> + 0 5 6 7 -1. + <_> + 2 5 2 7 3. + <_> + + <_> + 11 2 2 16 -1. + <_> + 11 2 1 16 2. + <_> + + <_> + 1 1 18 10 -1. + <_> + 7 1 6 10 3. + <_> + + <_> + 10 8 10 8 -1. + <_> + 15 8 5 4 2. + <_> + 10 12 5 4 2. + <_> + + <_> + 0 8 10 8 -1. + <_> + 0 8 5 4 2. + <_> + 5 12 5 4 2. + <_> + + <_> + 11 2 2 16 -1. + <_> + 11 2 1 16 2. + <_> + + <_> + 3 9 12 11 -1. + <_> + 9 9 6 11 2. + <_> + + <_> + 6 7 10 3 -1. + <_> + 6 7 5 3 2. + <_> + + <_> + 3 1 10 16 -1. + <_> + 3 1 5 8 2. + <_> + 8 9 5 8 2. + <_> + + <_> + 8 3 8 10 -1. + <_> + 12 3 4 5 2. + <_> + 8 8 4 5 2. + <_> + + <_> + 4 3 8 10 -1. + <_> + 4 3 4 5 2. + <_> + 8 8 4 5 2. + <_> + + <_> + 10 11 9 6 -1. + <_> + 10 14 9 3 2. + <_> + + <_> + 1 11 9 6 -1. + <_> + 1 14 9 3 2. + <_> + + <_> + 6 16 14 4 -1. + <_> + 13 16 7 2 2. + <_> + 6 18 7 2 2. + <_> + + <_> + 1 0 9 18 -1. + <_> + 1 6 9 6 3. + <_> + + <_> + 8 3 12 4 -1. + <_> + 8 5 12 2 2. + <_> + + <_> + 1 5 7 9 -1. + <_> + 1 8 7 3 3. + <_> + + <_> + 13 4 7 6 -1. + <_> + 13 6 7 2 3. + <_> + + <_> + 0 4 7 6 -1. + <_> + 0 6 7 2 3. + <_> + + <_> + 9 2 6 7 -1. + <_> + 11 2 2 7 3. + <_> + + <_> + 5 2 6 7 -1. + <_> + 7 2 2 7 3. + <_> + + <_> + 4 16 15 4 -1. + <_> + 9 16 5 4 3. + <_> + + <_> + 0 17 15 3 -1. + <_> + 5 17 5 3 3. + <_> + + <_> + 2 2 18 18 -1. + <_> + 8 2 6 18 3. + <_> + + <_> + 5 4 4 16 -1. + <_> + 7 4 2 16 2. + <_> + + <_> + 6 9 9 6 -1. + <_> + 9 9 3 6 3. + <_> + + <_> + 1 14 10 6 -1. + <_> + 1 14 5 3 2. + <_> + 6 17 5 3 2. + <_> + + <_> + 6 7 12 5 -1. + <_> + 10 7 4 5 3. + <_> + + <_> + 0 10 5 9 -1. + <_> + 0 13 5 3 3. + <_> + + <_> + 13 10 6 9 -1. + <_> + 13 13 6 3 3. + <_> + + <_> + 1 10 6 9 -1. + <_> + 1 13 6 3 3. + <_> + + <_> + 5 7 10 4 -1. + <_> + 5 9 10 2 2. + <_> + + <_> + 1 5 18 12 -1. + <_> + 1 9 18 4 3. + <_> + + <_> + 8 14 10 6 -1. + <_> + 13 14 5 3 2. + <_> + 8 17 5 3 2. + <_> + + <_> + 2 4 13 14 -1. + <_> + 2 11 13 7 2. + <_> + + <_> + 10 8 6 6 -1. + <_> + 10 8 3 6 2. + <_> + + <_> + 2 1 16 8 -1. + <_> + 2 5 16 4 2. + <_> + + <_> + 10 8 6 6 -1. + <_> + 10 8 3 6 2. + <_> + + <_> + 4 0 11 6 -1. + <_> + 4 2 11 2 3. + <_> + + <_> + 2 2 16 2 -1. + <_> + 2 3 16 1 2. + <_> + + <_> + 4 15 12 5 -1. + <_> + 10 15 6 5 2. + <_> + + <_> + 10 8 6 6 -1. + <_> + 10 8 3 6 2. + <_> + + <_> + 0 14 12 4 -1. + <_> + 6 14 6 4 2. + <_> + + <_> + 12 7 6 6 -1. + <_> + 12 10 6 3 2. + <_> + + <_> + 1 5 6 14 -1. + <_> + 1 5 3 7 2. + <_> + 4 12 3 7 2. + <_> + + <_> + 10 2 9 13 -1. + <_> + 13 2 3 13 3. + <_> + + <_> + 4 8 6 6 -1. + <_> + 7 8 3 6 2. + <_> + + <_> + 12 5 6 9 -1. + <_> + 12 5 3 9 2. + <_> + + <_> + 2 5 6 9 -1. + <_> + 5 5 3 9 2. + <_> + + <_> + 5 8 15 2 -1. + <_> + 5 9 15 1 2. + <_> + + <_> + 2 9 16 3 -1. + <_> + 2 10 16 1 3. + <_> + + <_> + 12 7 5 6 -1. + <_> + 12 10 5 3 2. + <_> + + <_> + 3 7 5 6 -1. + <_> + 3 10 5 3 2. + <_> + + <_> + 15 9 5 9 -1. + <_> + 15 12 5 3 3. + <_> + + <_> + 0 13 20 4 -1. + <_> + 0 13 10 2 2. + <_> + 10 15 10 2 2. + <_> + + <_> + 5 10 13 3 -1. + <_> + 5 11 13 1 3. + <_> + + <_> + 2 12 10 6 -1. + <_> + 2 12 5 3 2. + <_> + 7 15 5 3 2. + <_> + + <_> + 9 10 3 10 -1. + <_> + 9 15 3 5 2. + <_> + + <_> + 8 2 3 13 -1. + <_> + 9 2 1 13 3. + <_> + + <_> + 15 9 5 9 -1. + <_> + 15 12 5 3 3. + <_> + + <_> + 8 2 3 13 -1. + <_> + 9 2 1 13 3. + <_> + + <_> + 15 9 5 9 -1. + <_> + 15 12 5 3 3. + <_> + + <_> + 1 6 3 13 -1. + <_> + 2 6 1 13 3. + <_> + + <_> + 10 4 6 16 -1. + <_> + 12 4 2 16 3. + <_> + + <_> + 4 4 6 16 -1. + <_> + 6 4 2 16 3. + <_> + + <_> + 7 15 9 5 -1. + <_> + 10 15 3 5 3. + <_> + + <_> + 4 16 12 4 -1. + <_> + 8 16 4 4 3. + <_> + + <_> + 5 3 10 6 -1. + <_> + 10 3 5 3 2. + <_> + 5 6 5 3 2. + <_> + + <_> + 3 5 13 3 -1. + <_> + 3 6 13 1 3. + <_> + + <_> + 6 2 14 2 -1. + <_> + 6 3 14 1 2. + <_> + + <_> + 3 11 8 4 -1. + <_> + 7 11 4 4 2. + <_> + + <_> + 4 2 12 4 -1. + <_> + 4 2 6 4 2. + <_> + + <_> + 0 2 6 15 -1. + <_> + 0 7 6 5 3. + <_> + + <_> + 3 0 17 6 -1. + <_> + 3 2 17 2 3. + <_> + + <_> + 0 4 7 4 -1. + <_> + 0 6 7 2 2. + <_> + + <_> + 3 9 14 2 -1. + <_> + 3 9 7 2 2. + <_> + + <_> + 4 7 10 3 -1. + <_> + 9 7 5 3 2. + <_> + + <_> + 4 4 13 3 -1. + <_> + 4 5 13 1 3. + <_> + + <_> + 4 6 10 3 -1. + <_> + 9 6 5 3 2. + <_> + + <_> + 4 12 16 8 -1. + <_> + 4 12 8 8 2. + <_> + + <_> + 0 12 16 8 -1. + <_> + 8 12 8 8 2. + <_> + + <_> + 14 9 6 10 -1. + <_> + 16 9 2 10 3. + <_> + + <_> + 2 7 11 12 -1. + <_> + 2 11 11 4 3. + <_> + + <_> + 9 3 3 12 -1. + <_> + 9 9 3 6 2. + <_> + + <_> + 2 1 6 15 -1. + <_> + 2 6 6 5 3. + <_> + + <_> + 17 7 2 13 -1. + <_> + 17 7 1 13 2. + <_> + + <_> + 1 7 2 13 -1. + <_> + 2 7 1 13 2. + <_> + + <_> + 0 1 20 4 -1. + <_> + 10 1 10 2 2. + <_> + 0 3 10 2 2. + <_> + + <_> + 6 1 7 6 -1. + <_> + 6 3 7 2 3. + <_> + + <_> + 8 6 6 7 -1. + <_> + 10 6 2 7 3. + <_> + + <_> + 5 10 6 6 -1. + <_> + 8 10 3 6 2. + <_> + + <_> + 8 0 12 20 -1. + <_> + 12 0 4 20 3. + <_> + + <_> + 6 7 6 8 -1. + <_> + 8 7 2 8 3. + <_> + + <_> + 12 5 4 8 -1. + <_> + 12 9 4 4 2. + <_> + + <_> + 5 2 9 5 -1. + <_> + 8 2 3 5 3. + <_> + + <_> + 8 10 12 9 -1. + <_> + 12 10 4 9 3. + <_> + + <_> + 4 15 9 5 -1. + <_> + 7 15 3 5 3. + <_> + + <_> + 1 1 18 3 -1. + <_> + 7 1 6 3 3. + <_> + + <_> + 12 7 8 4 -1. + <_> + 12 9 8 2 2. + <_> + + <_> + 6 15 7 4 -1. + <_> + 6 17 7 2 2. + <_> + + <_> + 3 4 15 16 -1. + <_> + 3 12 15 8 2. + <_> + + <_> + 0 7 8 4 -1. + <_> + 0 9 8 2 2. + <_> + + <_> + 7 6 6 9 -1. + <_> + 9 6 2 9 3. + <_> + + <_> + 4 11 8 9 -1. + <_> + 4 14 8 3 3. + <_> + + <_> + 11 3 9 8 -1. + <_> + 14 3 3 8 3. + <_> + + <_> + 0 4 9 8 -1. + <_> + 3 4 3 8 3. + <_> + + <_> + 9 4 6 10 -1. + <_> + 12 4 3 5 2. + <_> + 9 9 3 5 2. + <_> + + <_> + 0 4 20 4 -1. + <_> + 0 6 20 2 2. + <_> + + <_> + 2 9 18 3 -1. + <_> + 8 9 6 3 3. + <_> + + <_> + 3 14 13 3 -1. + <_> + 3 15 13 1 3. + <_> + + <_> + 6 13 13 3 -1. + <_> + 6 14 13 1 3. + <_> + + <_> + 6 10 8 8 -1. + <_> + 6 10 4 4 2. + <_> + 10 14 4 4 2. + <_> + + <_> + 6 9 8 8 -1. + <_> + 10 9 4 4 2. + <_> + 6 13 4 4 2. + <_> + + <_> + 0 7 10 6 -1. + <_> + 0 7 5 3 2. + <_> + 5 10 5 3 2. + <_> + + <_> + 7 1 8 8 -1. + <_> + 11 1 4 4 2. + <_> + 7 5 4 4 2. + <_> + + <_> + 5 1 8 8 -1. + <_> + 5 1 4 4 2. + <_> + 9 5 4 4 2. + <_> + + <_> + 10 0 8 4 -1. + <_> + 10 2 8 2 2. + <_> + + <_> + 0 13 7 6 -1. + <_> + 0 15 7 2 3. + <_> + + <_> + 15 11 5 6 -1. + <_> + 15 14 5 3 2. + <_> + + <_> + 1 6 18 8 -1. + <_> + 1 6 9 4 2. + <_> + 10 10 9 4 2. + <_> + + <_> + 4 3 13 3 -1. + <_> + 4 4 13 1 3. + <_> + + <_> + 1 9 13 2 -1. + <_> + 1 10 13 1 2. + <_> + + <_> + 9 12 8 8 -1. + <_> + 13 12 4 4 2. + <_> + 9 16 4 4 2. + <_> + + <_> + 0 11 5 6 -1. + <_> + 0 14 5 3 2. + <_> + + <_> + 15 3 5 9 -1. + <_> + 15 6 5 3 3. + <_> + + <_> + 0 4 2 16 -1. + <_> + 0 12 2 8 2. + <_> + + <_> + 15 3 5 9 -1. + <_> + 15 6 5 3 3. + <_> + + <_> + 2 5 16 10 -1. + <_> + 2 5 8 5 2. + <_> + 10 10 8 5 2. + <_> + + <_> + 6 7 14 2 -1. + <_> + 6 8 14 1 2. + <_> + + <_> + 3 2 6 10 -1. + <_> + 3 2 3 5 2. + <_> + 6 7 3 5 2. + <_> + + <_> + 10 0 6 9 -1. + <_> + 12 0 2 9 3. + <_> + + <_> + 8 0 3 13 -1. + <_> + 9 0 1 13 3. + <_> + + <_> + 9 6 3 14 -1. + <_> + 10 6 1 14 3. + <_> + + <_> + 8 6 3 14 -1. + <_> + 9 6 1 14 3. + <_> + + <_> + 9 13 6 7 -1. + <_> + 11 13 2 7 3. + <_> + + <_> + 6 0 2 13 -1. + <_> + 7 0 1 13 2. + <_> + + <_> + 3 7 15 3 -1. + <_> + 8 7 5 3 3. + <_> + + <_> + 0 10 7 6 -1. + <_> + 0 12 7 2 3. + <_> + + <_> + 12 11 8 6 -1. + <_> + 12 13 8 2 3. + <_> + + <_> + 4 0 6 9 -1. + <_> + 6 0 2 9 3. + <_> + + <_> + 9 1 6 7 -1. + <_> + 11 1 2 7 3. + <_> + + <_> + 2 9 9 10 -1. + <_> + 5 9 3 10 3. + <_> + + <_> + 14 0 3 18 -1. + <_> + 15 0 1 18 3. + <_> + + <_> + 6 5 6 7 -1. + <_> + 8 5 2 7 3. + <_> + + <_> + 9 1 6 7 -1. + <_> + 11 1 2 7 3. + <_> + + <_> + 8 2 4 8 -1. + <_> + 10 2 2 8 2. + <_> + + <_> + 14 0 3 18 -1. + <_> + 15 0 1 18 3. + <_> + + <_> + 0 5 12 4 -1. + <_> + 4 5 4 4 3. + <_> + + <_> + 6 0 13 3 -1. + <_> + 6 1 13 1 3. + <_> + + <_> + 0 6 20 3 -1. + <_> + 0 7 20 1 3. + <_> + + <_> + 10 8 8 8 -1. + <_> + 14 8 4 4 2. + <_> + 10 12 4 4 2. + <_> + + <_> + 1 1 5 9 -1. + <_> + 1 4 5 3 3. + <_> + + <_> + 15 1 5 9 -1. + <_> + 15 4 5 3 3. + <_> + + <_> + 1 4 16 6 -1. + <_> + 1 4 8 3 2. + <_> + 9 7 8 3 2. + <_> + + <_> + 9 0 10 6 -1. + <_> + 9 2 10 2 3. + <_> + + <_> + 4 3 12 6 -1. + <_> + 4 5 12 2 3. + <_> + + <_> + 9 5 8 8 -1. + <_> + 9 9 8 4 2. + <_> + + <_> + 1 0 9 6 -1. + <_> + 1 2 9 2 3. + <_> + + <_> + 8 3 9 5 -1. + <_> + 11 3 3 5 3. + <_> + + <_> + 0 1 5 9 -1. + <_> + 0 4 5 3 3. + <_> + + <_> + 5 4 13 3 -1. + <_> + 5 5 13 1 3. + <_> + + <_> + 3 3 3 16 -1. + <_> + 4 3 1 16 3. + <_> + + <_> + 14 0 3 17 -1. + <_> + 15 0 1 17 3. + <_> + + <_> + 0 10 9 7 -1. + <_> + 3 10 3 7 3. + <_> + + <_> + 8 0 7 12 -1. + <_> + 8 4 7 4 3. + <_> + + <_> + 0 3 5 9 -1. + <_> + 0 6 5 3 3. + <_> + + <_> + 9 9 10 5 -1. + <_> + 9 9 5 5 2. + <_> + + <_> + 1 9 10 5 -1. + <_> + 6 9 5 5 2. + <_> + + <_> + 4 8 15 3 -1. + <_> + 9 8 5 3 3. + <_> + + <_> + 1 8 15 3 -1. + <_> + 6 8 5 3 3. + <_> + + <_> + 5 5 10 6 -1. + <_> + 10 5 5 3 2. + <_> + 5 8 5 3 2. + <_> + + <_> + 3 5 8 8 -1. + <_> + 3 9 8 4 2. + <_> + + <_> + 0 1 20 2 -1. + <_> + 0 1 10 2 2. + <_> + + <_> + 8 12 4 8 -1. + <_> + 8 16 4 4 2. + <_> + + <_> + 8 12 8 8 -1. + <_> + 12 12 4 4 2. + <_> + 8 16 4 4 2. + <_> + + <_> + 4 12 8 8 -1. + <_> + 4 12 4 4 2. + <_> + 8 16 4 4 2. + <_> + + <_> + 7 15 13 4 -1. + <_> + 7 17 13 2 2. + <_> + + <_> + 0 14 12 6 -1. + <_> + 0 14 6 3 2. + <_> + 6 17 6 3 2. + <_> + + <_> + 12 11 8 8 -1. + <_> + 16 11 4 4 2. + <_> + 12 15 4 4 2. + <_> + + <_> + 0 11 8 8 -1. + <_> + 0 11 4 4 2. + <_> + 4 15 4 4 2. + <_> + + <_> + 6 0 10 19 -1. + <_> + 6 0 5 19 2. + <_> + + <_> + 0 12 13 3 -1. + <_> + 0 13 13 1 3. + <_> + + <_> + 7 2 6 12 -1. + <_> + 7 8 6 6 2. + <_> + + <_> + 0 13 13 3 -1. + <_> + 0 14 13 1 3. + <_> + + <_> + 11 14 9 4 -1. + <_> + 11 16 9 2 2. + <_> + + <_> + 0 14 13 3 -1. + <_> + 0 15 13 1 3. + <_> + + <_> + 11 12 8 6 -1. + <_> + 11 14 8 2 3. + <_> + + <_> + 1 12 8 6 -1. + <_> + 1 14 8 2 3. + <_> + + <_> + 4 0 13 8 -1. + <_> + 4 4 13 4 2. + <_> + + <_> + 8 0 4 15 -1. + <_> + 8 5 4 5 3. + <_> + + <_> + 10 8 8 8 -1. + <_> + 14 8 4 4 2. + <_> + 10 12 4 4 2. + <_> + + <_> + 8 7 3 10 -1. + <_> + 8 12 3 5 2. + <_> + + <_> + 1 17 18 3 -1. + <_> + 7 17 6 3 3. + <_> + + <_> + 2 9 5 9 -1. + <_> + 2 12 5 3 3. + <_> + + <_> + 3 6 16 3 -1. + <_> + 3 6 8 3 2. + <_> + + <_> + 3 13 12 7 -1. + <_> + 9 13 6 7 2. + <_> + + <_> + 10 2 3 15 -1. + <_> + 11 2 1 15 3. + <_> + + <_> + 7 2 3 15 -1. + <_> + 8 2 1 15 3. + <_> + + <_> + 10 1 7 4 -1. + <_> + 10 3 7 2 2. + <_> + + <_> + 5 0 7 12 -1. + <_> + 5 4 7 4 3. + <_> + + <_> + 10 1 7 4 -1. + <_> + 10 3 7 2 2. + <_> + + <_> + 3 12 4 8 -1. + <_> + 3 16 4 4 2. + <_> + + <_> + 6 7 9 5 -1. + <_> + 9 7 3 5 3. + <_> + + <_> + 5 0 6 16 -1. + <_> + 7 0 2 16 3. + <_> + + <_> + 10 8 8 8 -1. + <_> + 14 8 4 4 2. + <_> + 10 12 4 4 2. + <_> + + <_> + 2 8 8 8 -1. + <_> + 2 8 4 4 2. + <_> + 6 12 4 4 2. + <_> + + <_> + 4 8 16 8 -1. + <_> + 12 8 8 4 2. + <_> + 4 12 8 4 2. + <_> + + <_> + 2 10 6 10 -1. + <_> + 2 10 3 5 2. + <_> + 5 15 3 5 2. + <_> + + <_> + 10 10 4 8 -1. + <_> + 10 14 4 4 2. + <_> + + <_> + 1 6 16 3 -1. + <_> + 9 6 8 3 2. + <_> + + <_> + 10 1 7 4 -1. + <_> + 10 3 7 2 2. + <_> + + <_> + 3 1 7 4 -1. + <_> + 3 3 7 2 2. + <_> + + <_> + 10 2 4 7 -1. + <_> + 10 2 2 7 2. + <_> + + <_> + 4 0 10 19 -1. + <_> + 9 0 5 19 2. + <_> + + <_> + 12 0 3 13 -1. + <_> + 13 0 1 13 3. + <_> + + <_> + 1 4 18 5 -1. + <_> + 7 4 6 5 3. + <_> + + <_> + 10 2 4 7 -1. + <_> + 10 2 2 7 2. + <_> + + <_> + 6 2 4 7 -1. + <_> + 8 2 2 7 2. + <_> + + <_> + 2 1 16 3 -1. + <_> + 2 1 8 3 2. + <_> + + <_> + 5 7 7 9 -1. + <_> + 5 10 7 3 3. + <_> + + <_> + 4 5 14 3 -1. + <_> + 4 6 14 1 3. + <_> + + <_> + 2 13 7 6 -1. + <_> + 2 15 7 2 3. + <_> + + <_> + 10 10 4 8 -1. + <_> + 10 14 4 4 2. + <_> + + <_> + 5 0 3 18 -1. + <_> + 5 6 3 6 3. + <_> + + <_> + 10 0 10 10 -1. + <_> + 15 0 5 5 2. + <_> + 10 5 5 5 2. + <_> + + <_> + 0 4 14 3 -1. + <_> + 0 5 14 1 3. + <_> + + <_> + 6 4 13 3 -1. + <_> + 6 5 13 1 3. + <_> + + <_> + 5 0 3 13 -1. + <_> + 6 0 1 13 3. + <_> + + <_> + 7 6 6 7 -1. + <_> + 9 6 2 7 3. + <_> + + <_> + 4 9 6 7 -1. + <_> + 6 9 2 7 3. + <_> + + <_> + 2 9 18 3 -1. + <_> + 8 9 6 3 3. + <_> + + <_> + 0 9 18 3 -1. + <_> + 6 9 6 3 3. + <_> + + <_> + 2 17 17 3 -1. + <_> + 2 18 17 1 3. + <_> + + <_> + 8 1 3 19 -1. + <_> + 9 1 1 19 3. + <_> + + <_> + 13 11 7 6 -1. + <_> + 13 13 7 2 3. + <_> + + <_> + 8 2 4 12 -1. + <_> + 8 6 4 4 3. + <_> + + <_> + 4 2 12 12 -1. + <_> + 4 6 12 4 3. + <_> + + <_> + 0 17 13 3 -1. + <_> + 0 18 13 1 3. + <_> + + <_> + 13 11 7 6 -1. + <_> + 13 13 7 2 3. + <_> + + <_> + 0 11 7 6 -1. + <_> + 0 13 7 2 3. + <_> + + <_> + 7 14 13 3 -1. + <_> + 7 15 13 1 3. + <_> + + <_> + 4 8 11 12 -1. + <_> + 4 12 11 4 3. + <_> + + <_> + 12 8 5 6 -1. + <_> + 12 11 5 3 2. + <_> + + <_> + 3 8 5 6 -1. + <_> + 3 11 5 3 2. + <_> + + <_> + 13 3 7 6 -1. + <_> + 13 5 7 2 3. + <_> + + <_> + 3 0 3 17 -1. + <_> + 4 0 1 17 3. + <_> + + <_> + 5 10 13 3 -1. + <_> + 5 11 13 1 3. + <_> + + <_> + 5 9 4 8 -1. + <_> + 5 13 4 4 2. + <_> + + <_> + 13 3 7 6 -1. + <_> + 13 5 7 2 3. + <_> + + <_> + 0 0 2 13 -1. + <_> + 1 0 1 13 2. + <_> + + <_> + 7 1 7 14 -1. + <_> + 7 8 7 7 2. + <_> + + <_> + 2 0 15 8 -1. + <_> + 2 4 15 4 2. + <_> + + <_> + 1 4 18 3 -1. + <_> + 7 4 6 3 3. + <_> + + <_> + 0 2 10 16 -1. + <_> + 5 2 5 16 2. + <_> + + <_> + 5 2 15 12 -1. + <_> + 5 6 15 4 3. + <_> + + <_> + 7 0 6 8 -1. + <_> + 9 0 2 8 3. + <_> + + <_> + 5 1 15 5 -1. + <_> + 10 1 5 5 3. + <_> + + <_> + 0 8 12 9 -1. + <_> + 4 8 4 9 3. + <_> + + <_> + 6 5 10 6 -1. + <_> + 11 5 5 3 2. + <_> + 6 8 5 3 2. + <_> + + <_> + 3 4 4 12 -1. + <_> + 5 4 2 12 2. + <_> + + <_> + 13 0 7 4 -1. + <_> + 13 2 7 2 2. + <_> + + <_> + 0 2 10 12 -1. + <_> + 0 8 10 6 2. + <_> + + <_> + 4 8 16 3 -1. + <_> + 4 8 8 3 2. + <_> + + <_> + 4 8 11 12 -1. + <_> + 4 14 11 6 2. + <_> + + <_> + 2 1 16 3 -1. + <_> + 2 2 16 1 3. + <_> + + <_> + 4 2 11 6 -1. + <_> + 4 4 11 2 3. + <_> + + <_> + 11 9 8 6 -1. + <_> + 11 11 8 2 3. + <_> + + <_> + 0 0 13 3 -1. + <_> + 0 1 13 1 3. + <_> + + <_> + 2 4 16 3 -1. + <_> + 2 5 16 1 3. + <_> + + <_> + 0 0 10 10 -1. + <_> + 0 0 5 5 2. + <_> + 5 5 5 5 2. + <_> + + <_> + 6 2 13 3 -1. + <_> + 6 3 13 1 3. + <_> + + <_> + 4 6 10 3 -1. + <_> + 9 6 5 3 2. + <_> + + <_> + 2 7 16 7 -1. + <_> + 2 7 8 7 2. + <_> + + <_> + 6 13 6 7 -1. + <_> + 8 13 2 7 3. + <_> + + <_> + 6 6 10 6 -1. + <_> + 11 6 5 3 2. + <_> + 6 9 5 3 2. + <_> + + <_> + 0 15 13 3 -1. + <_> + 0 16 13 1 3. + <_> + + <_> + 4 10 12 4 -1. + <_> + 8 10 4 4 3. + <_> + + <_> + 7 6 6 9 -1. + <_> + 9 6 2 9 3. + <_> + + <_> + 9 1 3 13 -1. + <_> + 10 1 1 13 3. + <_> + + <_> + 8 1 3 13 -1. + <_> + 9 1 1 13 3. + <_> + + <_> + 6 1 8 12 -1. + <_> + 10 1 4 6 2. + <_> + 6 7 4 6 2. + <_> + + <_> + 4 5 10 6 -1. + <_> + 4 5 5 3 2. + <_> + 9 8 5 3 2. + <_> + + <_> + 9 3 6 10 -1. + <_> + 12 3 3 5 2. + <_> + 9 8 3 5 2. + <_> + + <_> + 2 1 15 6 -1. + <_> + 2 3 15 2 3. + <_> + + <_> + 2 1 18 16 -1. + <_> + 8 1 6 16 3. + <_> + + <_> + 2 1 14 6 -1. + <_> + 9 1 7 6 2. + <_> + + <_> + 7 9 13 3 -1. + <_> + 7 10 13 1 3. + <_> + + <_> + 8 12 4 8 -1. + <_> + 8 16 4 4 2. + <_> + + <_> + 8 1 12 14 -1. + <_> + 8 1 6 14 2. + <_> + + <_> + 0 1 12 14 -1. + <_> + 6 1 6 14 2. + <_> + + <_> + 2 3 18 13 -1. + <_> + 8 3 6 13 3. + <_> + + <_> + 4 6 12 4 -1. + <_> + 8 6 4 4 3. + <_> + + <_> + 14 10 6 10 -1. + <_> + 17 10 3 5 2. + <_> + 14 15 3 5 2. + <_> + + <_> + 0 10 6 10 -1. + <_> + 0 10 3 5 2. + <_> + 3 15 3 5 2. + <_> + + <_> + 7 7 13 2 -1. + <_> + 7 8 13 1 2. + <_> + + <_> + 5 13 10 6 -1. + <_> + 5 13 5 3 2. + <_> + 10 16 5 3 2. + <_> + + <_> + 16 2 4 18 -1. + <_> + 18 2 2 9 2. + <_> + 16 11 2 9 2. + <_> + + <_> + 0 0 5 9 -1. + <_> + 0 3 5 3 3. + <_> + + <_> + 7 2 12 6 -1. + <_> + 13 2 6 3 2. + <_> + 7 5 6 3 2. + <_> + + <_> + 4 2 12 6 -1. + <_> + 4 2 6 3 2. + <_> + 10 5 6 3 2. + <_> + + <_> + 12 9 4 8 -1. + <_> + 12 13 4 4 2. + <_> + + <_> + 0 8 16 8 -1. + <_> + 0 8 8 4 2. + <_> + 8 12 8 4 2. + <_> + + <_> + 10 10 10 6 -1. + <_> + 15 10 5 3 2. + <_> + 10 13 5 3 2. + <_> + + <_> + 0 8 4 8 -1. + <_> + 0 12 4 4 2. + <_> + + <_> + 10 2 6 12 -1. + <_> + 13 2 3 6 2. + <_> + 10 8 3 6 2. + <_> + + <_> + 0 0 20 14 -1. + <_> + 0 7 20 7 2. + <_> + + <_> + 11 9 7 6 -1. + <_> + 11 11 7 2 3. + <_> + + <_> + 1 9 8 6 -1. + <_> + 1 11 8 2 3. + <_> + + <_> + 13 1 7 15 -1. + <_> + 13 6 7 5 3. + <_> + + <_> + 0 1 7 15 -1. + <_> + 0 6 7 5 3. + <_> + + <_> + 12 10 5 6 -1. + <_> + 12 13 5 3 2. + <_> + + <_> + 0 2 6 9 -1. + <_> + 0 5 6 3 3. + <_> + + <_> + 14 2 6 9 -1. + <_> + 14 5 6 3 3. + <_> + + <_> + 4 6 10 6 -1. + <_> + 4 6 5 3 2. + <_> + 9 9 5 3 2. + <_> + + <_> + 10 0 3 13 -1. + <_> + 11 0 1 13 3. + <_> + + <_> + 1 7 12 4 -1. + <_> + 5 7 4 4 3. + <_> + + <_> + 14 1 2 19 -1. + <_> + 14 1 1 19 2. + <_> + + <_> + 4 1 2 19 -1. + <_> + 5 1 1 19 2. + <_> + + <_> + 12 10 5 6 -1. + <_> + 12 13 5 3 2. + <_> + + <_> + 3 10 5 6 -1. + <_> + 3 13 5 3 2. + <_> + + <_> + 7 6 10 6 -1. + <_> + 12 6 5 3 2. + <_> + 7 9 5 3 2. + <_> + + <_> + 3 11 9 5 -1. + <_> + 6 11 3 5 3. + <_> + + <_> + 2 1 18 16 -1. + <_> + 8 1 6 16 3. + <_> + + <_> + 0 1 18 16 -1. + <_> + 6 1 6 16 3. + <_> + + <_> + 6 12 9 5 -1. + <_> + 9 12 3 5 3. + <_> + + <_> + 2 10 16 10 -1. + <_> + 2 10 8 5 2. + <_> + 10 15 8 5 2. + <_> + + <_> + 12 0 4 14 -1. + <_> + 14 0 2 7 2. + <_> + 12 7 2 7 2. + <_> + + <_> + 4 0 4 14 -1. + <_> + 4 0 2 7 2. + <_> + 6 7 2 7 2. + <_> + + <_> + 12 7 4 9 -1. + <_> + 12 7 2 9 2. + <_> + + <_> + 4 7 4 9 -1. + <_> + 6 7 2 9 2. + <_> + + <_> + 16 0 2 20 -1. + <_> + 16 0 1 20 2. + <_> + + <_> + 2 0 2 20 -1. + <_> + 3 0 1 20 2. + <_> + + <_> + 14 2 6 9 -1. + <_> + 14 5 6 3 3. + <_> + + <_> + 5 1 2 14 -1. + <_> + 5 8 2 7 2. + <_> + + <_> + 14 2 6 9 -1. + <_> + 14 5 6 3 3. + <_> + + <_> + 0 13 18 3 -1. + <_> + 6 13 6 3 3. + <_> + + <_> + 14 2 6 9 -1. + <_> + 14 5 6 3 3. + <_> + + <_> + 0 2 6 9 -1. + <_> + 0 5 6 3 3. + <_> + + <_> + 0 6 20 2 -1. + <_> + 0 6 10 2 2. + <_> + + <_> + 3 14 9 6 -1. + <_> + 6 14 3 6 3. + <_> + + <_> + 5 2 9 6 -1. + <_> + 5 5 9 3 2. + <_> + + <_> + 10 3 10 3 -1. + <_> + 10 3 5 3 2. + <_> + + <_> + 0 3 8 4 -1. + <_> + 4 3 4 4 2. + <_> + + <_> + 10 10 7 4 -1. + <_> + 10 12 7 2 2. + <_> + + <_> + 6 2 4 7 -1. + <_> + 8 2 2 7 2. + <_> + + <_> + 8 12 4 8 -1. + <_> + 8 16 4 4 2. + <_> + + <_> + 6 6 4 12 -1. + <_> + 6 10 4 4 3. + <_> + + <_> + 14 1 6 8 -1. + <_> + 16 1 2 8 3. + <_> + + <_> + 3 2 6 10 -1. + <_> + 3 2 3 5 2. + <_> + 6 7 3 5 2. + <_> + + <_> + 9 0 3 18 -1. + <_> + 9 6 3 6 3. + <_> + + <_> + 0 1 6 8 -1. + <_> + 2 1 2 8 3. + <_> + + <_> + 9 5 10 6 -1. + <_> + 14 5 5 3 2. + <_> + 9 8 5 3 2. + <_> + + <_> + 0 14 14 3 -1. + <_> + 0 15 14 1 3. + <_> + + <_> + 10 10 7 6 -1. + <_> + 10 12 7 2 3. + <_> + + <_> + 3 10 14 4 -1. + <_> + 3 10 7 2 2. + <_> + 10 12 7 2 2. + <_> + + <_> + 3 8 17 2 -1. + <_> + 3 9 17 1 2. + <_> + + <_> + 0 5 14 12 -1. + <_> + 0 11 14 6 2. + <_> + + <_> + 3 7 14 6 -1. + <_> + 3 9 14 2 3. + <_> + + <_> + 7 1 6 7 -1. + <_> + 9 1 2 7 3. + <_> + + <_> + 4 18 13 2 -1. + <_> + 4 19 13 1 2. + <_> + + <_> + 1 6 14 2 -1. + <_> + 8 6 7 2 2. + <_> + + <_> + 2 5 18 15 -1. + <_> + 8 5 6 15 3. + <_> + + <_> + 5 6 6 14 -1. + <_> + 8 6 3 14 2. + <_> + + <_> + 8 5 8 8 -1. + <_> + 12 5 4 4 2. + <_> + 8 9 4 4 2. + <_> + + <_> + 5 1 6 5 -1. + <_> + 8 1 3 5 2. + <_> + + <_> + 6 5 10 12 -1. + <_> + 11 5 5 6 2. + <_> + 6 11 5 6 2. + <_> + + <_> + 3 5 12 14 -1. + <_> + 3 5 6 7 2. + <_> + 9 12 6 7 2. + <_> + + <_> + 7 0 13 3 -1. + <_> + 7 1 13 1 3. + <_> + + <_> + 5 7 9 12 -1. + <_> + 5 11 9 4 3. + <_> + + <_> + 11 6 4 14 -1. + <_> + 13 6 2 7 2. + <_> + 11 13 2 7 2. + <_> + + <_> + 5 6 4 14 -1. + <_> + 5 6 2 7 2. + <_> + 7 13 2 7 2. + <_> + + <_> + 3 1 17 2 -1. + <_> + 3 2 17 1 2. + <_> + + <_> + 7 4 6 16 -1. + <_> + 7 12 6 8 2. + <_> + + <_> + 8 6 4 7 -1. + <_> + 8 6 2 7 2. + <_> + + <_> + 0 1 13 3 -1. + <_> + 0 2 13 1 3. + <_> + + <_> + 2 5 18 15 -1. + <_> + 8 5 6 15 3. + <_> + + <_> + 0 5 18 15 -1. + <_> + 6 5 6 15 3. + <_> + + <_> + 8 0 6 7 -1. + <_> + 10 0 2 7 3. + <_> + + <_> + 2 0 12 19 -1. + <_> + 6 0 4 19 3. + <_> + + <_> + 9 12 11 4 -1. + <_> + 9 14 11 2 2. + <_> + + <_> + 0 4 20 6 -1. + <_> + 0 6 20 2 3. + <_> + + <_> + 5 3 10 4 -1. + <_> + 5 5 10 2 2. + <_> + + <_> + 1 6 12 4 -1. + <_> + 5 6 4 4 3. + <_> + + <_> + 6 8 14 3 -1. + <_> + 6 9 14 1 3. + <_> + + <_> + 0 8 14 3 -1. + <_> + 0 9 14 1 3. + <_> + + <_> + 5 3 13 6 -1. + <_> + 5 6 13 3 2. + <_> + + <_> + 0 12 11 4 -1. + <_> + 0 14 11 2 2. + <_> + + <_> + 5 12 13 3 -1. + <_> + 5 13 13 1 3. + <_> + + <_> + 0 2 20 4 -1. + <_> + 0 2 10 2 2. + <_> + 10 4 10 2 2. + <_> + + <_> + 14 1 6 5 -1. + <_> + 14 1 3 5 2. + <_> + + <_> + 4 11 5 6 -1. + <_> + 4 14 5 3 2. + <_> + + <_> + 6 1 10 18 -1. + <_> + 6 10 10 9 2. + <_> + + <_> + 0 8 6 12 -1. + <_> + 0 8 3 6 2. + <_> + 3 14 3 6 2. + <_> + + <_> + 9 9 10 6 -1. + <_> + 14 9 5 3 2. + <_> + 9 12 5 3 2. + <_> + + <_> + 1 9 10 6 -1. + <_> + 1 9 5 3 2. + <_> + 6 12 5 3 2. + <_> + + <_> + 15 0 3 13 -1. + <_> + 16 0 1 13 3. + <_> + + <_> + 2 0 3 13 -1. + <_> + 3 0 1 13 3. + <_> + + <_> + 12 0 8 8 -1. + <_> + 16 0 4 4 2. + <_> + 12 4 4 4 2. + <_> + + <_> + 0 11 7 6 -1. + <_> + 0 13 7 2 3. + <_> + + <_> + 17 3 3 13 -1. + <_> + 18 3 1 13 3. + <_> + + <_> + 0 3 3 13 -1. + <_> + 1 3 1 13 3. + <_> + + <_> + 13 4 6 16 -1. + <_> + 16 4 3 8 2. + <_> + 13 12 3 8 2. + <_> + + <_> + 3 2 3 14 -1. + <_> + 4 2 1 14 3. + <_> + + <_> + 16 1 3 13 -1. + <_> + 17 1 1 13 3. + <_> + + <_> + 1 1 3 13 -1. + <_> + 2 1 1 13 3. + <_> + + <_> + 8 6 9 9 -1. + <_> + 8 9 9 3 3. + <_> + + <_> + 0 2 14 2 -1. + <_> + 0 3 14 1 2. + <_> + + <_> + 12 5 6 6 -1. + <_> + 12 5 3 6 2. + <_> + + <_> + 2 5 6 6 -1. + <_> + 5 5 3 6 2. + <_> + + <_> + 10 1 9 6 -1. + <_> + 10 3 9 2 3. + <_> + + <_> + 2 14 10 6 -1. + <_> + 2 14 5 3 2. + <_> + 7 17 5 3 2. + <_> + + <_> + 7 10 6 10 -1. + <_> + 9 10 2 10 3. + <_> + + <_> + 0 0 2 20 -1. + <_> + 1 0 1 20 2. + <_> + + <_> + 16 5 4 14 -1. + <_> + 16 5 2 14 2. + <_> + + <_> + 7 0 6 7 -1. + <_> + 9 0 2 7 3. + <_> + + <_> + 16 5 4 14 -1. + <_> + 16 5 2 14 2. + <_> + + <_> + 0 5 4 14 -1. + <_> + 2 5 2 14 2. + <_> + + <_> + 0 11 20 4 -1. + <_> + 10 11 10 2 2. + <_> + 0 13 10 2 2. + <_> + + <_> + 6 5 6 7 -1. + <_> + 8 5 2 7 3. + <_> + + <_> + 6 9 9 5 -1. + <_> + 9 9 3 5 3. + <_> + + <_> + 9 0 2 13 -1. + <_> + 10 0 1 13 2. + <_> + + <_> + 8 0 6 7 -1. + <_> + 10 0 2 7 3. + <_> + + <_> + 6 0 6 7 -1. + <_> + 8 0 2 7 3. + <_> + + <_> + 10 1 9 6 -1. + <_> + 10 3 9 2 3. + <_> + + <_> + 1 1 9 6 -1. + <_> + 1 3 9 2 3. + <_> + + <_> + 11 0 5 8 -1. + <_> + 11 4 5 4 2. + <_> + + <_> + 0 17 18 3 -1. + <_> + 0 18 18 1 3. + <_> + + <_> + 9 2 6 11 -1. + <_> + 11 2 2 11 3. + <_> + + <_> + 5 2 6 11 -1. + <_> + 7 2 2 11 3. + <_> + + <_> + 7 1 6 10 -1. + <_> + 10 1 3 5 2. + <_> + 7 6 3 5 2. + <_> + + <_> + 3 2 10 5 -1. + <_> + 8 2 5 5 2. + <_> + + <_> + 2 17 17 3 -1. + <_> + 2 18 17 1 3. + <_> + + <_> + 0 13 14 3 -1. + <_> + 0 14 14 1 3. + <_> + + <_> + 6 13 13 3 -1. + <_> + 6 14 13 1 3. + <_> + + <_> + 7 10 4 10 -1. + <_> + 7 15 4 5 2. + <_> + + <_> + 7 14 13 3 -1. + <_> + 7 15 13 1 3. + <_> + + <_> + 2 12 16 6 -1. + <_> + 2 14 16 2 3. + <_> + + <_> + 5 9 13 3 -1. + <_> + 5 10 13 1 3. + <_> + + <_> + 8 5 4 12 -1. + <_> + 8 9 4 4 3. + <_> + + <_> + 6 1 14 6 -1. + <_> + 13 1 7 3 2. + <_> + 6 4 7 3 2. + <_> + + <_> + 3 1 12 6 -1. + <_> + 3 3 12 2 3. + <_> + + <_> + 9 5 11 6 -1. + <_> + 9 7 11 2 3. + <_> + + <_> + 5 2 3 13 -1. + <_> + 6 2 1 13 3. + <_> + + <_> + 15 5 4 14 -1. + <_> + 17 5 2 7 2. + <_> + 15 12 2 7 2. + <_> + + <_> + 0 14 7 6 -1. + <_> + 0 16 7 2 3. + <_> + + <_> + 5 15 13 3 -1. + <_> + 5 16 13 1 3. + <_> + + <_> + 6 10 8 8 -1. + <_> + 6 10 4 4 2. + <_> + 10 14 4 4 2. + <_> + + <_> + 3 10 14 6 -1. + <_> + 10 10 7 3 2. + <_> + 3 13 7 3 2. + <_> + + <_> + 0 14 13 3 -1. + <_> + 0 15 13 1 3. + <_> + + <_> + 5 14 15 3 -1. + <_> + 5 15 15 1 3. + <_> + + <_> + 0 1 14 6 -1. + <_> + 0 1 7 3 2. + <_> + 7 4 7 3 2. + <_> + + <_> + 12 0 8 8 -1. + <_> + 16 0 4 4 2. + <_> + 12 4 4 4 2. + <_> + + <_> + 0 0 8 8 -1. + <_> + 0 0 4 4 2. + <_> + 4 4 4 4 2. + <_> + + <_> + 3 16 14 4 -1. + <_> + 10 16 7 2 2. + <_> + 3 18 7 2 2. + <_> + + <_> + 0 1 6 10 -1. + <_> + 0 1 3 5 2. + <_> + 3 6 3 5 2. + <_> + + <_> + 10 3 8 8 -1. + <_> + 14 3 4 4 2. + <_> + 10 7 4 4 2. + <_> + + <_> + 1 5 10 6 -1. + <_> + 1 5 5 3 2. + <_> + 6 8 5 3 2. + <_> + + <_> + 14 2 2 14 -1. + <_> + 14 9 2 7 2. + <_> + + <_> + 4 2 2 14 -1. + <_> + 4 9 2 7 2. + <_> + + <_> + 4 8 12 4 -1. + <_> + 4 10 12 2 2. + <_> + + <_> + 2 3 8 8 -1. + <_> + 2 3 4 4 2. + <_> + 6 7 4 4 2. + <_> + + <_> + 17 0 2 16 -1. + <_> + 17 8 2 8 2. + <_> + + <_> + 1 5 4 14 -1. + <_> + 1 5 2 7 2. + <_> + 3 12 2 7 2. + <_> + + <_> + 8 6 5 10 -1. + <_> + 8 11 5 5 2. + <_> + + <_> + 4 2 8 10 -1. + <_> + 4 2 4 5 2. + <_> + 8 7 4 5 2. + <_> + + <_> + 8 5 10 8 -1. + <_> + 13 5 5 4 2. + <_> + 8 9 5 4 2. + <_> + + <_> + 0 7 7 6 -1. + <_> + 0 9 7 2 3. + <_> + + <_> + 16 1 4 7 -1. + <_> + 16 1 2 7 2. + <_> + + <_> + 1 0 2 16 -1. + <_> + 1 8 2 8 2. + <_> + + <_> + 15 3 5 6 -1. + <_> + 15 6 5 3 2. + <_> + + <_> + 0 0 20 12 -1. + <_> + 0 6 20 6 2. + <_> + + <_> + 15 3 5 6 -1. + <_> + 15 6 5 3 2. + <_> + + <_> + 0 3 5 6 -1. + <_> + 0 6 5 3 2. + <_> + + <_> + 9 10 7 4 -1. + <_> + 9 12 7 2 2. + <_> + + <_> + 2 9 13 6 -1. + <_> + 2 12 13 3 2. + <_> + + <_> + 2 2 16 14 -1. + <_> + 2 9 16 7 2. + <_> + + <_> + 4 5 10 8 -1. + <_> + 4 9 10 4 2. + <_> + + <_> + 17 0 3 13 -1. + <_> + 18 0 1 13 3. + <_> + + <_> + 8 0 3 15 -1. + <_> + 8 5 3 5 3. + <_> + + <_> + 17 0 3 13 -1. + <_> + 18 0 1 13 3. + <_> + + <_> + 0 0 3 13 -1. + <_> + 1 0 1 13 3. + <_> + + <_> + 1 14 18 4 -1. + <_> + 10 14 9 2 2. + <_> + 1 16 9 2 2. + <_> + + <_> + 1 8 6 5 -1. + <_> + 4 8 3 5 2. + <_> + + <_> + 13 1 6 19 -1. + <_> + 13 1 3 19 2. + <_> + + <_> + 1 1 6 19 -1. + <_> + 4 1 3 19 2. + <_> + + <_> + 6 0 14 3 -1. + <_> + 6 1 14 1 3. + <_> + + <_> + 0 0 14 3 -1. + <_> + 0 1 14 1 3. + <_> + + <_> + 8 2 7 6 -1. + <_> + 8 5 7 3 2. + <_> + + <_> + 0 3 9 14 -1. + <_> + 3 3 3 14 3. + <_> + + <_> + 10 8 9 6 -1. + <_> + 10 10 9 2 3. + <_> + + <_> + 0 1 16 4 -1. + <_> + 0 1 8 2 2. + <_> + 8 3 8 2 2. + <_> + + <_> + 16 2 4 7 -1. + <_> + 16 2 2 7 2. + <_> + + <_> + 0 8 10 6 -1. + <_> + 0 10 10 2 3. + <_> + + <_> + 16 2 4 7 -1. + <_> + 16 2 2 7 2. + <_> + + <_> + 0 2 4 7 -1. + <_> + 2 2 2 7 2. + <_> + + <_> + 5 3 12 14 -1. + <_> + 11 3 6 7 2. + <_> + 5 10 6 7 2. + <_> + + <_> + 7 6 3 10 -1. + <_> + 7 11 3 5 2. + <_> + + <_> + 14 2 6 9 -1. + <_> + 16 2 2 9 3. + <_> + + <_> + 0 2 6 9 -1. + <_> + 2 2 2 9 3. + <_> + + <_> + 9 0 6 7 -1. + <_> + 11 0 2 7 3. + <_> + + <_> + 4 5 12 6 -1. + <_> + 4 5 6 3 2. + <_> + 10 8 6 3 2. + <_> + + <_> + 9 0 6 7 -1. + <_> + 11 0 2 7 3. + <_> + + <_> + 7 5 6 8 -1. + <_> + 9 5 2 8 3. + <_> + + <_> + 4 6 12 6 -1. + <_> + 8 6 4 6 3. + <_> + + <_> + 1 4 4 14 -1. + <_> + 1 4 2 7 2. + <_> + 3 11 2 7 2. + <_> + + <_> + 0 1 20 6 -1. + <_> + 10 1 10 3 2. + <_> + 0 4 10 3 2. + <_> + + <_> + 5 2 10 6 -1. + <_> + 5 4 10 2 3. + <_> + + <_> + 0 2 20 6 -1. + <_> + 0 5 20 3 2. + <_> + + <_> + 3 10 6 8 -1. + <_> + 5 10 2 8 3. + <_> + + <_> + 13 4 4 16 -1. + <_> + 15 4 2 8 2. + <_> + 13 12 2 8 2. + <_> + + <_> + 6 2 2 18 -1. + <_> + 6 11 2 9 2. + <_> + + <_> + 13 4 4 16 -1. + <_> + 15 4 2 8 2. + <_> + 13 12 2 8 2. + <_> + + <_> + 3 4 4 16 -1. + <_> + 3 4 2 8 2. + <_> + 5 12 2 8 2. + <_> + + <_> + 6 15 9 4 -1. + <_> + 6 17 9 2 2. + <_> + + <_> + 4 2 6 7 -1. + <_> + 6 2 2 7 3. + <_> + + <_> + 8 0 4 12 -1. + <_> + 8 0 2 12 2. + <_> + + <_> + 0 6 20 2 -1. + <_> + 10 6 10 2 2. + <_> + + <_> + 14 2 6 18 -1. + <_> + 17 2 3 9 2. + <_> + 14 11 3 9 2. + <_> + + <_> + 0 7 14 4 -1. + <_> + 0 7 7 2 2. + <_> + 7 9 7 2 2. + <_> + + <_> + 8 5 10 8 -1. + <_> + 13 5 5 4 2. + <_> + 8 9 5 4 2. + <_> + + <_> + 2 5 10 8 -1. + <_> + 2 5 5 4 2. + <_> + 7 9 5 4 2. + <_> + + <_> + 4 2 16 12 -1. + <_> + 4 2 8 12 2. + <_> + + <_> + 0 2 16 12 -1. + <_> + 8 2 8 12 2. + <_> + + <_> + 11 2 4 7 -1. + <_> + 11 2 2 7 2. + <_> + + <_> + 5 2 4 7 -1. + <_> + 7 2 2 7 2. + <_> + + <_> + 6 5 8 4 -1. + <_> + 6 5 4 4 2. + <_> + + <_> + 4 5 6 10 -1. + <_> + 6 5 2 10 3. + <_> + + <_> + 6 10 10 8 -1. + <_> + 11 10 5 4 2. + <_> + 6 14 5 4 2. + <_> + + <_> + 2 11 6 9 -1. + <_> + 4 11 2 9 3. + <_> + + <_> + 4 0 12 18 -1. + <_> + 4 0 6 18 2. + <_> + + <_> + 4 1 9 17 -1. + <_> + 7 1 3 17 3. + <_> + + <_> + 9 5 6 8 -1. + <_> + 11 5 2 8 3. + <_> + + <_> + 6 3 6 7 -1. + <_> + 8 3 2 7 3. + <_> + + <_> + 3 8 14 3 -1. + <_> + 3 9 14 1 3. + <_> + + <_> + 5 5 6 9 -1. + <_> + 5 8 6 3 3. + <_> + + <_> + 10 10 7 6 -1. + <_> + 10 12 7 2 3. + <_> + + <_> + 4 6 7 4 -1. + <_> + 4 8 7 2 2. + <_> + + <_> + 6 10 10 8 -1. + <_> + 11 10 5 4 2. + <_> + 6 14 5 4 2. + <_> + + <_> + 4 10 12 4 -1. + <_> + 8 10 4 4 3. + <_> + + <_> + 5 7 14 4 -1. + <_> + 12 7 7 2 2. + <_> + 5 9 7 2 2. + <_> + + <_> + 4 10 12 7 -1. + <_> + 8 10 4 7 3. + <_> + + <_> + 5 2 12 16 -1. + <_> + 11 2 6 8 2. + <_> + 5 10 6 8 2. + <_> + + <_> + 1 7 14 4 -1. + <_> + 1 7 7 2 2. + <_> + 8 9 7 2 2. + <_> + + <_> + 3 5 15 14 -1. + <_> + 3 12 15 7 2. + <_> + + <_> + 0 11 7 4 -1. + <_> + 0 13 7 2 2. + <_> + + <_> + 8 6 9 9 -1. + <_> + 8 9 9 3 3. + <_> + + <_> + 5 6 6 10 -1. + <_> + 7 6 2 10 3. + <_> + + <_> + 11 4 4 11 -1. + <_> + 11 4 2 11 2. + <_> + + <_> + 1 12 14 8 -1. + <_> + 8 12 7 8 2. + <_> + + <_> + 11 4 4 11 -1. + <_> + 11 4 2 11 2. + <_> + + <_> + 5 0 4 15 -1. + <_> + 7 0 2 15 2. + <_> + + <_> + 4 2 12 6 -1. + <_> + 8 2 4 6 3. + <_> + + <_> + 3 3 12 14 -1. + <_> + 3 3 6 7 2. + <_> + 9 10 6 7 2. + <_> + + <_> + 9 2 4 7 -1. + <_> + 9 2 2 7 2. + <_> + + <_> + 7 2 4 7 -1. + <_> + 9 2 2 7 2. + <_> + + <_> + 15 9 5 9 -1. + <_> + 15 12 5 3 3. + <_> + + <_> + 0 9 5 9 -1. + <_> + 0 12 5 3 3. + <_> + + <_> + 8 3 4 9 -1. + <_> + 8 3 2 9 2. + <_> + + <_> + 7 8 6 6 -1. + <_> + 10 8 3 6 2. + <_> + + <_> + 6 13 14 3 -1. + <_> + 6 14 14 1 3. + <_> + + <_> + 2 12 12 8 -1. + <_> + 6 12 4 8 3. + <_> + + <_> + 5 14 15 6 -1. + <_> + 10 14 5 6 3. + <_> + + <_> + 6 8 6 12 -1. + <_> + 6 8 3 6 2. + <_> + 9 14 3 6 2. + <_> + + <_> + 5 14 15 6 -1. + <_> + 10 14 5 6 3. + <_> + + <_> + 6 0 8 20 -1. + <_> + 6 10 8 10 2. + <_> + + <_> + 10 3 4 13 -1. + <_> + 10 3 2 13 2. + <_> + + <_> + 4 12 12 6 -1. + <_> + 8 12 4 6 3. + <_> + + <_> + 10 3 4 13 -1. + <_> + 10 3 2 13 2. + <_> + + <_> + 5 11 9 6 -1. + <_> + 8 11 3 6 3. + <_> + + <_> + 8 13 6 7 -1. + <_> + 10 13 2 7 3. + <_> + + <_> + 0 0 8 8 -1. + <_> + 0 0 4 4 2. + <_> + 4 4 4 4 2. + <_> + + <_> + 10 10 7 6 -1. + <_> + 10 12 7 2 3. + <_> + + <_> + 3 10 7 6 -1. + <_> + 3 12 7 2 3. + <_> + + <_> + 12 3 5 12 -1. + <_> + 12 7 5 4 3. + <_> + + <_> + 4 13 9 4 -1. + <_> + 4 15 9 2 2. + <_> + + <_> + 6 13 14 3 -1. + <_> + 6 14 14 1 3. + <_> + + <_> + 1 13 13 3 -1. + <_> + 1 14 13 1 3. + <_> + + <_> + 12 0 3 19 -1. + <_> + 13 0 1 19 3. + <_> + + <_> + 6 3 4 13 -1. + <_> + 8 3 2 13 2. + <_> + + <_> + 10 0 9 5 -1. + <_> + 13 0 3 5 3. + <_> + + <_> + 1 0 9 5 -1. + <_> + 4 0 3 5 3. + <_> + + <_> + 14 0 6 5 -1. + <_> + 14 0 3 5 2. + <_> + + <_> + 6 11 6 9 -1. + <_> + 8 11 2 9 3. + <_> + + <_> + 12 3 5 12 -1. + <_> + 12 7 5 4 3. + <_> + + <_> + 3 3 5 12 -1. + <_> + 3 7 5 4 3. + <_> + + <_> + 10 11 6 9 -1. + <_> + 10 14 6 3 3. + <_> + + <_> + 4 16 12 4 -1. + <_> + 4 18 12 2 2. + <_> + + <_> + 2 14 18 4 -1. + <_> + 11 14 9 2 2. + <_> + 2 16 9 2 2. + <_> + + <_> + 6 16 7 4 -1. + <_> + 6 18 7 2 2. + <_> + + <_> + 5 10 12 8 -1. + <_> + 5 14 12 4 2. + <_> + + <_> + 4 10 7 4 -1. + <_> + 4 12 7 2 2. + <_> + + <_> + 8 9 7 4 -1. + <_> + 8 11 7 2 2. + <_> + + <_> + 0 10 18 6 -1. + <_> + 9 10 9 6 2. + <_> + + <_> + 0 6 20 2 -1. + <_> + 0 6 10 2 2. + <_> + + <_> + 6 5 6 8 -1. + <_> + 8 5 2 8 3. + <_> + + <_> + 12 0 3 13 -1. + <_> + 13 0 1 13 3. + <_> + + <_> + 8 10 3 10 -1. + <_> + 8 15 3 5 2. + <_> + + <_> + 8 1 8 14 -1. + <_> + 12 1 4 7 2. + <_> + 8 8 4 7 2. + <_> + + <_> + 5 0 3 19 -1. + <_> + 6 0 1 19 3. + <_> + + <_> + 9 10 6 10 -1. + <_> + 12 10 3 5 2. + <_> + 9 15 3 5 2. + <_> + + <_> + 0 6 5 14 -1. + <_> + 0 13 5 7 2. + <_> + + <_> + 18 5 2 14 -1. + <_> + 18 12 2 7 2. + <_> + + <_> + 0 5 2 14 -1. + <_> + 0 12 2 7 2. + <_> + + <_> + 13 0 4 10 -1. + <_> + 13 5 4 5 2. + <_> + + <_> + 1 0 18 18 -1. + <_> + 1 9 18 9 2. + <_> + + <_> + 1 16 18 4 -1. + <_> + 10 16 9 2 2. + <_> + 1 18 9 2 2. + <_> + + <_> + 5 1 8 6 -1. + <_> + 5 3 8 2 3. + <_> + + <_> + 4 7 13 9 -1. + <_> + 4 10 13 3 3. + <_> + + <_> + 5 5 10 10 -1. + <_> + 5 5 5 5 2. + <_> + 10 10 5 5 2. + <_> + + <_> + 8 4 8 10 -1. + <_> + 12 4 4 5 2. + <_> + 8 9 4 5 2. + <_> + + <_> + 3 7 14 4 -1. + <_> + 3 7 7 2 2. + <_> + 10 9 7 2 2. + <_> + + <_> + 16 2 4 18 -1. + <_> + 18 2 2 9 2. + <_> + 16 11 2 9 2. + <_> + + <_> + 1 0 13 2 -1. + <_> + 1 1 13 1 2. + <_> + + <_> + 6 2 14 3 -1. + <_> + 6 3 14 1 3. + <_> + + <_> + 0 0 13 3 -1. + <_> + 0 1 13 1 3. + <_> + + <_> + 4 1 12 6 -1. + <_> + 4 4 12 3 2. + <_> + + <_> + 0 3 7 6 -1. + <_> + 0 5 7 2 3. + <_> + + <_> + 2 5 16 6 -1. + <_> + 10 5 8 3 2. + <_> + 2 8 8 3 2. + <_> + + <_> + 2 10 14 4 -1. + <_> + 2 10 7 2 2. + <_> + 9 12 7 2 2. + <_> + + <_> + 16 2 4 18 -1. + <_> + 18 2 2 9 2. + <_> + 16 11 2 9 2. + <_> + + <_> + 6 2 4 15 -1. + <_> + 6 7 4 5 3. + <_> + + <_> + 10 5 7 6 -1. + <_> + 10 7 7 2 3. + <_> + + <_> + 4 0 4 14 -1. + <_> + 4 0 2 7 2. + <_> + 6 7 2 7 2. + <_> + + <_> + 6 3 10 6 -1. + <_> + 11 3 5 3 2. + <_> + 6 6 5 3 2. + <_> + + <_> + 4 3 10 6 -1. + <_> + 4 3 5 3 2. + <_> + 9 6 5 3 2. + <_> + + <_> + 4 4 13 12 -1. + <_> + 4 8 13 4 3. + <_> + + <_> + 3 9 6 7 -1. + <_> + 5 9 2 7 3. + <_> + + <_> + 11 11 4 9 -1. + <_> + 11 11 2 9 2. + <_> + + <_> + 1 0 3 13 -1. + <_> + 2 0 1 13 3. + <_> + + <_> + 11 11 4 9 -1. + <_> + 11 11 2 9 2. + <_> + + <_> + 5 12 4 8 -1. + <_> + 7 12 2 8 2. + <_> + + <_> + 5 14 15 6 -1. + <_> + 10 14 5 6 3. + <_> + + <_> + 0 14 15 6 -1. + <_> + 5 14 5 6 3. + <_> + + <_> + 6 8 12 4 -1. + <_> + 10 8 4 4 3. + <_> + + <_> + 2 8 12 4 -1. + <_> + 6 8 4 4 3. + <_> + + <_> + 13 6 4 10 -1. + <_> + 13 6 2 10 2. + <_> + + <_> + 8 6 4 7 -1. + <_> + 10 6 2 7 2. + <_> + + <_> + 5 1 12 5 -1. + <_> + 9 1 4 5 3. + <_> + + <_> + 2 2 15 4 -1. + <_> + 7 2 5 4 3. + <_> + + <_> + 6 12 13 2 -1. + <_> + 6 13 13 1 2. + <_> + + <_> + 3 11 13 3 -1. + <_> + 3 12 13 1 3. + <_> + + <_> + 10 10 9 6 -1. + <_> + 10 12 9 2 3. + <_> + + <_> + 0 0 5 9 -1. + <_> + 0 3 5 3 3. + <_> + + <_> + 0 2 20 2 -1. + <_> + 0 3 20 1 2. + <_> + + <_> + 3 5 4 11 -1. + <_> + 5 5 2 11 2. + <_> + + <_> + 13 1 3 17 -1. + <_> + 14 1 1 17 3. + <_> + + <_> + 0 0 18 9 -1. + <_> + 6 0 6 9 3. + <_> + + <_> + 6 9 9 6 -1. + <_> + 9 9 3 6 3. + <_> + + <_> + 2 9 7 6 -1. + <_> + 2 11 7 2 3. + <_> + + <_> + 13 1 3 17 -1. + <_> + 14 1 1 17 3. + <_> + + <_> + 4 1 3 17 -1. + <_> + 5 1 1 17 3. + <_> + + <_> + 2 0 18 6 -1. + <_> + 8 0 6 6 3. + <_> + + <_> + 7 2 4 12 -1. + <_> + 7 6 4 4 3. + <_> + + <_> + 10 2 5 9 -1. + <_> + 10 5 5 3 3. + <_> + + <_> + 5 2 5 9 -1. + <_> + 5 5 5 3 3. + <_> + + <_> + 9 0 3 18 -1. + <_> + 9 6 3 6 3. + <_> + + <_> + 6 12 7 4 -1. + <_> + 6 14 7 2 2. + <_> + + <_> + 16 10 4 9 -1. + <_> + 16 10 2 9 2. + <_> + + <_> + 0 10 4 9 -1. + <_> + 2 10 2 9 2. + <_> + + <_> + 13 2 6 18 -1. + <_> + 16 2 3 9 2. + <_> + 13 11 3 9 2. + <_> + + <_> + 0 0 7 6 -1. + <_> + 0 2 7 2 3. + <_> + + <_> + 7 14 13 3 -1. + <_> + 7 15 13 1 3. + <_> + + <_> + 2 3 5 12 -1. + <_> + 2 7 5 4 3. + <_> + + <_> + 3 15 14 4 -1. + <_> + 3 17 14 2 2. + <_> + + <_> + 3 0 13 6 -1. + <_> + 3 3 13 3 2. + <_> + + <_> + 4 11 16 9 -1. + <_> + 4 11 8 9 2. + <_> + + <_> + 0 11 16 9 -1. + <_> + 8 11 8 9 2. + <_> + + <_> + 11 0 5 8 -1. + <_> + 11 4 5 4 2. + <_> + + <_> + 0 3 14 9 -1. + <_> + 0 6 14 3 3. + <_> + + <_> + 5 0 10 10 -1. + <_> + 10 0 5 5 2. + <_> + 5 5 5 5 2. + <_> + + <_> + 0 2 6 18 -1. + <_> + 0 2 3 9 2. + <_> + 3 11 3 9 2. + <_> + + <_> + 9 5 3 15 -1. + <_> + 9 10 3 5 3. + <_> + + <_> + 0 7 13 2 -1. + <_> + 0 8 13 1 2. + <_> + + <_> + 11 1 5 9 -1. + <_> + 11 4 5 3 3. + <_> + + <_> + 2 1 14 6 -1. + <_> + 2 1 7 3 2. + <_> + 9 4 7 3 2. + <_> + + <_> + 9 0 6 12 -1. + <_> + 12 0 3 6 2. + <_> + 9 6 3 6 2. + <_> + + <_> + 5 0 6 12 -1. + <_> + 5 0 3 6 2. + <_> + 8 6 3 6 2. + <_> + + <_> + 6 9 9 6 -1. + <_> + 9 9 3 6 3. + <_> + + <_> + 5 9 9 6 -1. + <_> + 8 9 3 6 3. + <_> + + <_> + 8 3 10 11 -1. + <_> + 8 3 5 11 2. + <_> + + <_> + 2 3 10 11 -1. + <_> + 7 3 5 11 2. + <_> + + <_> + 8 2 12 18 -1. + <_> + 8 2 6 18 2. + <_> + + <_> + 0 1 12 19 -1. + <_> + 6 1 6 19 2. + <_> + + <_> + 10 11 5 9 -1. + <_> + 10 14 5 3 3. + <_> + + <_> + 3 15 14 4 -1. + <_> + 3 15 7 2 2. + <_> + 10 17 7 2 2. + <_> + + <_> + 4 14 16 6 -1. + <_> + 4 14 8 6 2. + <_> + + <_> + 5 11 9 6 -1. + <_> + 8 11 3 6 3. + <_> + + <_> + 13 4 4 14 -1. + <_> + 15 4 2 7 2. + <_> + 13 11 2 7 2. + <_> + + <_> + 1 3 6 9 -1. + <_> + 3 3 2 9 3. + <_> + + <_> + 10 7 6 7 -1. + <_> + 12 7 2 7 3. + <_> + + <_> + 0 2 10 3 -1. + <_> + 5 2 5 3 2. + <_> + + <_> + 12 6 5 9 -1. + <_> + 12 9 5 3 3. + <_> + + <_> + 3 12 8 8 -1. + <_> + 3 12 4 4 2. + <_> + 7 16 4 4 2. + <_> + + <_> + 7 5 6 7 -1. + <_> + 9 5 2 7 3. + <_> + + <_> + 2 0 16 2 -1. + <_> + 2 1 16 1 2. + <_> + + <_> + 13 7 7 6 -1. + <_> + 13 9 7 2 3. + <_> + + <_> + 0 7 7 6 -1. + <_> + 0 9 7 2 3. + <_> + + <_> + 9 6 5 8 -1. + <_> + 9 10 5 4 2. + <_> + + <_> + 7 5 6 12 -1. + <_> + 7 11 6 6 2. + <_> + + <_> + 13 4 4 14 -1. + <_> + 15 4 2 7 2. + <_> + 13 11 2 7 2. + <_> + + <_> + 3 4 4 14 -1. + <_> + 3 4 2 7 2. + <_> + 5 11 2 7 2. + <_> + + <_> + 3 3 14 2 -1. + <_> + 3 4 14 1 2. + <_> + + <_> + 7 1 6 10 -1. + <_> + 7 6 6 5 2. + <_> + + <_> + 10 4 10 12 -1. + <_> + 10 10 10 6 2. + <_> + + <_> + 4 2 9 5 -1. + <_> + 7 2 3 5 3. + <_> + + <_> + 4 4 16 10 -1. + <_> + 12 4 8 5 2. + <_> + 4 9 8 5 2. + <_> + + <_> + 0 4 16 10 -1. + <_> + 0 4 8 5 2. + <_> + 8 9 8 5 2. + <_> + + <_> + 11 8 4 12 -1. + <_> + 11 8 2 12 2. + <_> + + <_> + 5 8 4 12 -1. + <_> + 7 8 2 12 2. + <_> + + <_> + 5 10 13 3 -1. + <_> + 5 11 13 1 3. + <_> + + <_> + 0 7 10 13 -1. + <_> + 5 7 5 13 2. + <_> + + <_> + 13 13 7 4 -1. + <_> + 13 15 7 2 2. + <_> + + <_> + 0 9 9 8 -1. + <_> + 3 9 3 8 3. + <_> + + <_> + 13 11 7 6 -1. + <_> + 13 13 7 2 3. + <_> + + <_> + 0 11 7 6 -1. + <_> + 0 13 7 2 3. + <_> + + <_> + 7 14 13 3 -1. + <_> + 7 15 13 1 3. + <_> + + <_> + 0 12 13 2 -1. + <_> + 0 13 13 1 2. + <_> + + <_> + 8 5 8 4 -1. + <_> + 8 5 4 4 2. + <_> + + <_> + 4 5 8 4 -1. + <_> + 8 5 4 4 2. + <_> + + <_> + 13 0 3 13 -1. + <_> + 14 0 1 13 3. + <_> + + <_> + 4 9 4 8 -1. + <_> + 4 13 4 4 2. + <_> + + <_> + 10 4 8 4 -1. + <_> + 10 6 8 2 2. + <_> + + <_> + 0 0 4 8 -1. + <_> + 2 0 2 8 2. + <_> + + <_> + 3 2 14 4 -1. + <_> + 3 2 7 4 2. + <_> + + <_> + 4 0 3 13 -1. + <_> + 5 0 1 13 3. + <_> + + <_> + 10 0 9 9 -1. + <_> + 13 0 3 9 3. + <_> + + <_> + 1 0 9 9 -1. + <_> + 4 0 3 9 3. + <_> + + <_> + 16 6 4 14 -1. + <_> + 18 6 2 7 2. + <_> + 16 13 2 7 2. + <_> + + <_> + 0 9 18 3 -1. + <_> + 6 9 6 3 3. + <_> + + <_> + 8 6 6 7 -1. + <_> + 10 6 2 7 3. + <_> + + <_> + 5 4 10 5 -1. + <_> + 10 4 5 5 2. + <_> + + <_> + 5 1 14 4 -1. + <_> + 12 1 7 2 2. + <_> + 5 3 7 2 2. + <_> + + <_> + 1 1 14 4 -1. + <_> + 1 1 7 2 2. + <_> + 8 3 7 2 2. + <_> + + <_> + 16 6 4 14 -1. + <_> + 18 6 2 7 2. + <_> + 16 13 2 7 2. + <_> + + <_> + 0 6 4 14 -1. + <_> + 0 6 2 7 2. + <_> + 2 13 2 7 2. + <_> + + <_> + 12 11 5 9 -1. + <_> + 12 14 5 3 3. + <_> + + <_> + 5 9 10 9 -1. + <_> + 5 12 10 3 3. + <_> + + <_> + 7 13 13 3 -1. + <_> + 7 14 13 1 3. + <_> + + <_> + 4 0 8 9 -1. + <_> + 8 0 4 9 2. + <_> + + <_> + 7 0 6 7 -1. + <_> + 9 0 2 7 3. + <_> + + <_> + 1 13 5 6 -1. + <_> + 1 16 5 3 2. + <_> + + <_> + 11 15 7 4 -1. + <_> + 11 17 7 2 2. + <_> + + <_> + 3 13 13 3 -1. + <_> + 3 14 13 1 3. + <_> + + <_> + 7 7 7 8 -1. + <_> + 7 11 7 4 2. + <_> + + <_> + 2 4 3 10 -1. + <_> + 2 9 3 5 2. + <_> + + <_> + 7 2 13 2 -1. + <_> + 7 3 13 1 2. + <_> + + <_> + 2 15 7 4 -1. + <_> + 2 17 7 2 2. + <_> + + <_> + 14 1 6 10 -1. + <_> + 17 1 3 5 2. + <_> + 14 6 3 5 2. + <_> + + <_> + 0 1 6 10 -1. + <_> + 0 1 3 5 2. + <_> + 3 6 3 5 2. + <_> + + <_> + 8 0 8 8 -1. + <_> + 12 0 4 4 2. + <_> + 8 4 4 4 2. + <_> + + <_> + 6 8 4 9 -1. + <_> + 8 8 2 9 2. + <_> + + <_> + 8 6 6 7 -1. + <_> + 10 6 2 7 3. + <_> + + <_> + 7 1 4 12 -1. + <_> + 9 1 2 12 2. + <_> + + <_> + 10 0 6 8 -1. + <_> + 12 0 2 8 3. + <_> + + <_> + 4 0 6 8 -1. + <_> + 6 0 2 8 3. + <_> + + <_> + 10 0 4 18 -1. + <_> + 10 6 4 6 3. + <_> + + <_> + 0 5 7 12 -1. + <_> + 0 9 7 4 3. + <_> + + <_> + 11 5 5 9 -1. + <_> + 11 8 5 3 3. + <_> + + <_> + 3 9 14 4 -1. + <_> + 3 9 7 2 2. + <_> + 10 11 7 2 2. + <_> + + <_> + 3 7 17 3 -1. + <_> + 3 8 17 1 3. + <_> + + <_> + 3 2 6 10 -1. + <_> + 3 2 3 5 2. + <_> + 6 7 3 5 2. + <_> + + <_> + 5 0 15 8 -1. + <_> + 10 0 5 8 3. + <_> + + <_> + 0 0 10 10 -1. + <_> + 0 0 5 5 2. + <_> + 5 5 5 5 2. + <_> + + <_> + 2 3 16 9 -1. + <_> + 2 6 16 3 3. + <_> + + <_> + 4 0 12 8 -1. + <_> + 4 4 12 4 2. + <_> + + <_> + 13 0 7 6 -1. + <_> + 13 2 7 2 3. + <_> + + <_> + 4 0 2 15 -1. + <_> + 5 0 1 15 2. + <_> + + <_> + 10 10 6 7 -1. + <_> + 12 10 2 7 3. + <_> + + <_> + 4 10 6 7 -1. + <_> + 6 10 2 7 3. + <_> + + <_> + 10 8 8 8 -1. + <_> + 14 8 4 4 2. + <_> + 10 12 4 4 2. + <_> + + <_> + 2 8 8 8 -1. + <_> + 2 8 4 4 2. + <_> + 6 12 4 4 2. + <_> + + <_> + 14 10 6 10 -1. + <_> + 17 10 3 5 2. + <_> + 14 15 3 5 2. + <_> + + <_> + 0 10 6 10 -1. + <_> + 0 10 3 5 2. + <_> + 3 15 3 5 2. + <_> + + <_> + 10 1 3 10 -1. + <_> + 10 6 3 5 2. + <_> + + <_> + 6 11 5 6 -1. + <_> + 6 14 5 3 2. + <_> + + <_> + 4 3 12 12 -1. + <_> + 4 7 12 4 3. + <_> + + <_> + 4 5 10 6 -1. + <_> + 4 5 5 3 2. + <_> + 9 8 5 3 2. + <_> + + <_> + 11 4 9 10 -1. + <_> + 11 9 9 5 2. + <_> + + <_> + 7 2 4 12 -1. + <_> + 7 6 4 4 3. + <_> + + <_> + 11 1 9 18 -1. + <_> + 11 7 9 6 3. + <_> + + <_> + 4 8 12 10 -1. + <_> + 4 8 6 5 2. + <_> + 10 13 6 5 2. + <_> + + <_> + 8 4 6 10 -1. + <_> + 11 4 3 5 2. + <_> + 8 9 3 5 2. + <_> + + <_> + 6 0 8 14 -1. + <_> + 6 0 4 7 2. + <_> + 10 7 4 7 2. + <_> + + <_> + 8 1 8 8 -1. + <_> + 12 1 4 4 2. + <_> + 8 5 4 4 2. + <_> + + <_> + 5 1 8 8 -1. + <_> + 5 1 4 4 2. + <_> + 9 5 4 4 2. + <_> + + <_> + 2 1 18 5 -1. + <_> + 8 1 6 5 3. + <_> + + <_> + 0 0 15 8 -1. + <_> + 5 0 5 8 3. + <_> + + <_> + 5 15 10 5 -1. + <_> + 5 15 5 5 2. + <_> + + <_> + 0 5 12 15 -1. + <_> + 6 5 6 15 2. + <_> + + <_> + 5 7 15 3 -1. + <_> + 10 7 5 3 3. + <_> + + <_> + 0 7 15 3 -1. + <_> + 5 7 5 3 3. + <_> + + <_> + 11 11 7 6 -1. + <_> + 11 13 7 2 3. + <_> + + <_> + 2 11 7 6 -1. + <_> + 2 13 7 2 3. + <_> + + <_> + 12 14 7 6 -1. + <_> + 12 16 7 2 3. + <_> + + <_> + 0 1 5 9 -1. + <_> + 0 4 5 3 3. + <_> + + <_> + 15 0 5 8 -1. + <_> + 15 4 5 4 2. + <_> + + <_> + 0 0 20 4 -1. + <_> + 0 0 10 2 2. + <_> + 10 2 10 2 2. + <_> + + <_> + 7 5 6 14 -1. + <_> + 10 5 3 7 2. + <_> + 7 12 3 7 2. + <_> + + <_> + 6 6 7 4 -1. + <_> + 6 8 7 2 2. + <_> + + <_> + 11 5 5 9 -1. + <_> + 11 8 5 3 3. + <_> + + <_> + 4 5 5 9 -1. + <_> + 4 8 5 3 3. + <_> + + <_> + 5 5 10 6 -1. + <_> + 10 5 5 3 2. + <_> + 5 8 5 3 2. + <_> + + <_> + 0 0 5 8 -1. + <_> + 0 4 5 4 2. + <_> + + <_> + 12 12 8 6 -1. + <_> + 12 14 8 2 3. + <_> + + <_> + 2 11 4 8 -1. + <_> + 4 11 2 8 2. + <_> + + <_> + 14 5 4 14 -1. + <_> + 16 5 2 7 2. + <_> + 14 12 2 7 2. + <_> + + <_> + 2 5 4 14 -1. + <_> + 2 5 2 7 2. + <_> + 4 12 2 7 2. + <_> + + <_> + 12 12 8 6 -1. + <_> + 12 14 8 2 3. + <_> + + <_> + 1 12 7 6 -1. + <_> + 1 14 7 2 3. + <_> + + <_> + 8 12 10 6 -1. + <_> + 8 14 10 2 3. + <_> + + <_> + 7 2 4 14 -1. + <_> + 7 2 2 7 2. + <_> + 9 9 2 7 2. + <_> + + <_> + 5 7 14 4 -1. + <_> + 12 7 7 2 2. + <_> + 5 9 7 2 2. + <_> + + <_> + 1 7 14 4 -1. + <_> + 1 7 7 2 2. + <_> + 8 9 7 2 2. + <_> + + <_> + 7 14 12 6 -1. + <_> + 13 14 6 3 2. + <_> + 7 17 6 3 2. + <_> + + <_> + 2 6 14 10 -1. + <_> + 2 6 7 5 2. + <_> + 9 11 7 5 2. + <_> + + <_> + 13 5 4 11 -1. + <_> + 13 5 2 11 2. + <_> + + <_> + 2 13 15 6 -1. + <_> + 7 13 5 6 3. + <_> + + <_> + 5 16 12 4 -1. + <_> + 9 16 4 4 3. + <_> + + <_> + 3 15 9 5 -1. + <_> + 6 15 3 5 3. + <_> + + <_> + 2 0 17 18 -1. + <_> + 2 9 17 9 2. + <_> + + <_> + 1 0 4 12 -1. + <_> + 1 4 4 4 3. + <_> + + <_> + 13 5 4 11 -1. + <_> + 13 5 2 11 2. + <_> + + <_> + 3 4 6 5 -1. + <_> + 6 4 3 5 2. + <_> + + <_> + 3 0 15 2 -1. + <_> + 3 1 15 1 2. + <_> + + <_> + 6 6 6 7 -1. + <_> + 8 6 2 7 3. + <_> + + <_> + 4 7 15 3 -1. + <_> + 9 7 5 3 3. + <_> + + <_> + 1 7 15 3 -1. + <_> + 6 7 5 3 3. + <_> + + <_> + 11 2 3 14 -1. + <_> + 12 2 1 14 3. + <_> + + <_> + 7 6 3 13 -1. + <_> + 8 6 1 13 3. + <_> + + <_> + 13 14 7 4 -1. + <_> + 13 16 7 2 2. + <_> + + <_> + 2 7 16 2 -1. + <_> + 2 8 16 1 2. + <_> + + <_> + 7 6 7 4 -1. + <_> + 7 8 7 2 2. + <_> + + <_> + 8 4 3 10 -1. + <_> + 8 9 3 5 2. + <_> + + <_> + 9 6 4 8 -1. + <_> + 9 10 4 4 2. + <_> + + <_> + 0 4 11 12 -1. + <_> + 0 10 11 6 2. + <_> + + <_> + 13 6 4 14 -1. + <_> + 13 13 4 7 2. + <_> + + <_> + 3 6 4 14 -1. + <_> + 3 13 4 7 2. + <_> + + <_> + 10 2 6 10 -1. + <_> + 13 2 3 5 2. + <_> + 10 7 3 5 2. + <_> + + <_> + 4 7 12 6 -1. + <_> + 4 9 12 2 3. + <_> + + <_> + 0 5 20 6 -1. + <_> + 0 7 20 2 3. + <_> + + <_> + 4 2 6 10 -1. + <_> + 4 2 3 5 2. + <_> + 7 7 3 5 2. + <_> + + <_> + 2 1 18 5 -1. + <_> + 8 1 6 5 3. + <_> + + <_> + 6 1 4 8 -1. + <_> + 6 5 4 4 2. + <_> + + <_> + 12 9 6 9 -1. + <_> + 12 12 6 3 3. + <_> + + <_> + 8 3 3 13 -1. + <_> + 9 3 1 13 3. + <_> + + <_> + 11 0 2 15 -1. + <_> + 11 0 1 15 2. + <_> + + <_> + 7 0 2 15 -1. + <_> + 8 0 1 15 2. + <_> + + <_> + 4 9 12 4 -1. + <_> + 8 9 4 4 3. + <_> + + <_> + 0 1 10 19 -1. + <_> + 5 1 5 19 2. + <_> + + <_> + 8 7 12 13 -1. + <_> + 8 7 6 13 2. + <_> + + <_> + 0 8 14 2 -1. + <_> + 7 8 7 2 2. + <_> + + <_> + 5 17 15 3 -1. + <_> + 10 17 5 3 3. + <_> + + <_> + 0 17 15 3 -1. + <_> + 5 17 5 3 3. + <_> + + <_> + 11 8 8 5 -1. + <_> + 11 8 4 5 2. + <_> + + <_> + 0 16 14 4 -1. + <_> + 0 16 7 2 2. + <_> + 7 18 7 2 2. + <_> + + <_> + 13 14 7 6 -1. + <_> + 13 16 7 2 3. + <_> + + <_> + 3 1 8 8 -1. + <_> + 3 1 4 4 2. + <_> + 7 5 4 4 2. + <_> + + <_> + 10 1 3 10 -1. + <_> + 10 6 3 5 2. + <_> + + <_> + 0 14 7 6 -1. + <_> + 0 16 7 2 3. + <_> + + <_> + 8 4 4 12 -1. + <_> + 8 8 4 4 3. + <_> + + <_> + 0 11 18 2 -1. + <_> + 0 12 18 1 2. + <_> + + <_> + 7 14 13 3 -1. + <_> + 7 15 13 1 3. + <_> + + <_> + 2 9 6 9 -1. + <_> + 2 12 6 3 3. + <_> + + <_> + 2 1 18 5 -1. + <_> + 8 1 6 5 3. + <_> + + <_> + 0 1 18 5 -1. + <_> + 6 1 6 5 3. + <_> + + <_> + 11 5 2 14 -1. + <_> + 11 12 2 7 2. + <_> + + <_> + 7 8 6 12 -1. + <_> + 7 8 3 6 2. + <_> + 10 14 3 6 2. + <_> + + <_> + 2 15 16 4 -1. + <_> + 2 17 16 2 2. + <_> + + <_> + 5 1 2 19 -1. + <_> + 6 1 1 19 2. + <_> + + <_> + 7 4 6 10 -1. + <_> + 10 4 3 5 2. + <_> + 7 9 3 5 2. + <_> + + <_> + 2 16 15 4 -1. + <_> + 7 16 5 4 3. + <_> + + <_> + 10 1 6 15 -1. + <_> + 12 1 2 15 3. + <_> + + <_> + 0 8 13 3 -1. + <_> + 0 9 13 1 3. + <_> + + <_> + 5 8 10 4 -1. + <_> + 5 10 10 2 2. + <_> + + <_> + 6 6 5 8 -1. + <_> + 6 10 5 4 2. + <_> + + <_> + 4 5 12 8 -1. + <_> + 10 5 6 4 2. + <_> + 4 9 6 4 2. + <_> + + <_> + 4 1 6 15 -1. + <_> + 6 1 2 15 3. + <_> + + <_> + 8 8 6 12 -1. + <_> + 11 8 3 6 2. + <_> + 8 14 3 6 2. + <_> + + <_> + 2 6 6 8 -1. + <_> + 5 6 3 8 2. + <_> + + <_> + 17 0 2 14 -1. + <_> + 17 0 1 14 2. + <_> + + <_> + 1 0 2 14 -1. + <_> + 2 0 1 14 2. + <_> + + <_> + 11 2 3 13 -1. + <_> + 12 2 1 13 3. + <_> + + <_> + 6 2 3 13 -1. + <_> + 7 2 1 13 3. + <_> + + <_> + 16 0 4 13 -1. + <_> + 16 0 2 13 2. + <_> + + <_> + 0 0 4 13 -1. + <_> + 2 0 2 13 2. + <_> + + <_> + 5 6 14 3 -1. + <_> + 5 6 7 3 2. + <_> + + <_> + 1 6 14 3 -1. + <_> + 8 6 7 3 2. + <_> + + <_> + 7 8 6 12 -1. + <_> + 10 8 3 6 2. + <_> + 7 14 3 6 2. + <_> + + <_> + 5 7 4 7 -1. + <_> + 7 7 2 7 2. + <_> + + <_> + 12 1 4 12 -1. + <_> + 12 5 4 4 3. + <_> + + <_> + 4 1 4 12 -1. + <_> + 4 5 4 4 3. + <_> + + <_> + 3 0 14 12 -1. + <_> + 3 4 14 4 3. + <_> + + <_> + 6 6 7 4 -1. + <_> + 6 8 7 2 2. + <_> + + <_> + 12 0 4 7 -1. + <_> + 12 0 2 7 2. + <_> + + <_> + 2 9 12 3 -1. + <_> + 8 9 6 3 2. + <_> + + <_> + 0 9 20 3 -1. + <_> + 0 10 20 1 3. + <_> + + <_> + 0 14 13 3 -1. + <_> + 0 15 13 1 3. + <_> + + <_> + 6 14 13 3 -1. + <_> + 6 15 13 1 3. + <_> + + <_> + 2 2 15 12 -1. + <_> + 2 8 15 6 2. + <_> + + <_> + 11 5 5 6 -1. + <_> + 11 8 5 3 2. + <_> + + <_> + 2 8 14 3 -1. + <_> + 2 9 14 1 3. + <_> + + <_> + 10 2 6 9 -1. + <_> + 10 5 6 3 3. + <_> + + <_> + 4 2 6 7 -1. + <_> + 6 2 2 7 3. + <_> + + <_> + 8 14 12 6 -1. + <_> + 14 14 6 3 2. + <_> + 8 17 6 3 2. + <_> + + <_> + 6 12 8 6 -1. + <_> + 6 14 8 2 3. + <_> + + <_> + 9 14 9 4 -1. + <_> + 9 16 9 2 2. + <_> + + <_> + 0 14 7 4 -1. + <_> + 0 16 7 2 2. + <_> + + <_> + 2 11 18 8 -1. + <_> + 2 15 18 4 2. + <_> + + <_> + 0 12 10 8 -1. + <_> + 0 12 5 4 2. + <_> + 5 16 5 4 2. + <_> + + <_> + 13 9 4 7 -1. + <_> + 13 9 2 7 2. + <_> + + <_> + 5 9 10 6 -1. + <_> + 5 9 5 3 2. + <_> + 10 12 5 3 2. + <_> + + <_> + 12 5 5 9 -1. + <_> + 12 8 5 3 3. + <_> + + <_> + 3 5 5 9 -1. + <_> + 3 8 5 3 3. + <_> + + <_> + 5 5 11 6 -1. + <_> + 5 8 11 3 2. + <_> + + <_> + 4 0 4 7 -1. + <_> + 6 0 2 7 2. + <_> + + <_> + 1 8 18 5 -1. + <_> + 7 8 6 5 3. + <_> + + <_> + 1 3 18 7 -1. + <_> + 7 3 6 7 3. + <_> + + <_> + 7 11 7 8 -1. + <_> + 7 15 7 4 2. + <_> + + <_> + 4 14 12 6 -1. + <_> + 10 14 6 6 2. + <_> + + <_> + 5 6 11 9 -1. + <_> + 5 9 11 3 3. + <_> + + <_> + 7 12 4 8 -1. + <_> + 7 16 4 4 2. + <_> + + <_> + 9 14 10 6 -1. + <_> + 14 14 5 3 2. + <_> + 9 17 5 3 2. + <_> + + <_> + 6 5 7 6 -1. + <_> + 6 8 7 3 2. + <_> + + <_> + 13 9 4 7 -1. + <_> + 13 9 2 7 2. + <_> + + <_> + 3 9 4 7 -1. + <_> + 5 9 2 7 2. + <_> + + <_> + 12 0 8 8 -1. + <_> + 16 0 4 4 2. + <_> + 12 4 4 4 2. + <_> + + <_> + 2 10 8 10 -1. + <_> + 6 10 4 10 2. + <_> + + <_> + 8 4 12 16 -1. + <_> + 14 4 6 8 2. + <_> + 8 12 6 8 2. + <_> + + <_> + 0 4 12 16 -1. + <_> + 0 4 6 8 2. + <_> + 6 12 6 8 2. + <_> + + <_> + 8 4 6 7 -1. + <_> + 10 4 2 7 3. + <_> + + <_> + 8 6 4 14 -1. + <_> + 8 6 2 7 2. + <_> + 10 13 2 7 2. + <_> + + <_> + 5 2 10 18 -1. + <_> + 10 2 5 9 2. + <_> + 5 11 5 9 2. + <_> + + <_> + 6 11 7 6 -1. + <_> + 6 13 7 2 3. + <_> + + <_> + 9 4 5 12 -1. + <_> + 9 10 5 6 2. + <_> + + <_> + 0 11 7 4 -1. + <_> + 0 13 7 2 2. + <_> + + <_> + 1 5 19 15 -1. + <_> + 1 10 19 5 3. + <_> + + <_> + 0 15 7 4 -1. + <_> + 0 17 7 2 2. + <_> + + <_> + 6 0 10 6 -1. + <_> + 11 0 5 3 2. + <_> + 6 3 5 3 2. + <_> + + <_> + 4 0 10 6 -1. + <_> + 4 0 5 3 2. + <_> + 9 3 5 3 2. + <_> + + <_> + 1 1 18 4 -1. + <_> + 7 1 6 4 3. + <_> + + <_> + 11 7 7 6 -1. + <_> + 11 9 7 2 3. + <_> + + <_> + 4 6 12 5 -1. + <_> + 8 6 4 5 3. + <_> + + <_> + 9 4 11 4 -1. + <_> + 9 6 11 2 2. + <_> + + <_> + 2 1 6 10 -1. + <_> + 2 1 3 5 2. + <_> + 5 6 3 5 2. + <_> + + <_> + 12 5 4 8 -1. + <_> + 12 9 4 4 2. + <_> + + <_> + 0 5 18 8 -1. + <_> + 0 5 9 4 2. + <_> + 9 9 9 4 2. + <_> + + <_> + 9 6 5 12 -1. + <_> + 9 12 5 6 2. + <_> + + <_> + 0 12 13 2 -1. + <_> + 0 13 13 1 2. + <_> + + <_> + 10 4 3 13 -1. + <_> + 11 4 1 13 3. + <_> + + <_> + 7 3 3 14 -1. + <_> + 8 3 1 14 3. + <_> + + <_> + 7 12 6 8 -1. + <_> + 9 12 2 8 3. + <_> + + <_> + 4 5 4 12 -1. + <_> + 4 9 4 4 3. + <_> + + <_> + 3 3 17 2 -1. + <_> + 3 4 17 1 2. + <_> + + <_> + 2 0 15 6 -1. + <_> + 2 2 15 2 3. + <_> + + <_> + 8 0 12 4 -1. + <_> + 8 0 6 4 2. + <_> + + <_> + 1 10 10 6 -1. + <_> + 1 12 10 2 3. + <_> + + <_> + 10 0 6 8 -1. + <_> + 12 0 2 8 3. + <_> + + <_> + 1 8 4 12 -1. + <_> + 3 8 2 12 2. + <_> + + <_> + 4 15 15 5 -1. + <_> + 9 15 5 5 3. + <_> + + <_> + 0 1 14 3 -1. + <_> + 0 2 14 1 3. + <_> + + <_> + 10 2 6 7 -1. + <_> + 12 2 2 7 3. + <_> + + <_> + 4 2 6 7 -1. + <_> + 6 2 2 7 3. + <_> + + <_> + 6 12 8 6 -1. + <_> + 6 14 8 2 3. + <_> + + <_> + 1 3 14 12 -1. + <_> + 1 7 14 4 3. + <_> + + <_> + 4 15 15 5 -1. + <_> + 9 15 5 5 3. + <_> + + <_> + 1 15 15 5 -1. + <_> + 6 15 5 5 3. + <_> + + <_> + 7 0 6 7 -1. + <_> + 9 0 2 7 3. + <_> + + <_> + 1 1 18 4 -1. + <_> + 7 1 6 4 3. + <_> + + <_> + 11 10 4 7 -1. + <_> + 11 10 2 7 2. + <_> + + <_> + 5 10 4 7 -1. + <_> + 7 10 2 7 2. + <_> + + <_> + 4 10 12 5 -1. + <_> + 8 10 4 5 3. + <_> + + <_> + 0 0 8 12 -1. + <_> + 0 0 4 6 2. + <_> + 4 6 4 6 2. + <_> + + <_> + 7 1 13 2 -1. + <_> + 7 2 13 1 2. + <_> + + <_> + 2 5 14 2 -1. + <_> + 2 6 14 1 2. + <_> + + <_> + 14 0 3 14 -1. + <_> + 15 0 1 14 3. + <_> + + <_> + 3 0 3 14 -1. + <_> + 4 0 1 14 3. + <_> + + <_> + 14 0 6 13 -1. + <_> + 16 0 2 13 3. + <_> + + <_> + 0 0 6 13 -1. + <_> + 2 0 2 13 3. + <_> + + <_> + 15 0 5 9 -1. + <_> + 15 3 5 3 3. + <_> + + <_> + 0 3 4 7 -1. + <_> + 2 3 2 7 2. + <_> + + <_> + 13 0 3 13 -1. + <_> + 14 0 1 13 3. + <_> + + <_> + 4 0 3 13 -1. + <_> + 5 0 1 13 3. + <_> + + <_> + 7 14 13 3 -1. + <_> + 7 15 13 1 3. + <_> + + <_> + 0 2 4 8 -1. + <_> + 0 6 4 4 2. + <_> + + <_> + 10 6 10 6 -1. + <_> + 15 6 5 3 2. + <_> + 10 9 5 3 2. + <_> + + <_> + 0 1 20 16 -1. + <_> + 0 1 10 8 2. + <_> + 10 9 10 8 2. + <_> + + <_> + 7 1 10 16 -1. + <_> + 12 1 5 8 2. + <_> + 7 9 5 8 2. + <_> + + <_> + 0 1 16 14 -1. + <_> + 0 1 8 7 2. + <_> + 8 8 8 7 2. + <_> + + <_> + 9 5 10 6 -1. + <_> + 14 5 5 3 2. + <_> + 9 8 5 3 2. + <_> + + <_> + 1 5 10 6 -1. + <_> + 1 5 5 3 2. + <_> + 6 8 5 3 2. + <_> + + <_> + 4 5 13 2 -1. + <_> + 4 6 13 1 2. + <_> + + <_> + 0 4 10 4 -1. + <_> + 0 6 10 2 2. + <_> + + <_> + 10 0 4 8 -1. + <_> + 10 4 4 4 2. + <_> + + <_> + 0 3 20 3 -1. + <_> + 0 4 20 1 3. + <_> + + <_> + 7 14 13 3 -1. + <_> + 7 15 13 1 3. + <_> + + <_> + 0 1 6 9 -1. + <_> + 0 4 6 3 3. + <_> + + <_> + 6 14 13 3 -1. + <_> + 6 15 13 1 3. + <_> + + <_> + 3 15 14 4 -1. + <_> + 3 17 14 2 2. + <_> + + <_> + 12 12 7 6 -1. + <_> + 12 14 7 2 3. + <_> + + <_> + 0 14 18 4 -1. + <_> + 0 14 9 2 2. + <_> + 9 16 9 2 2. + <_> + + <_> + 14 4 4 9 -1. + <_> + 14 4 2 9 2. + <_> + + <_> + 0 4 6 8 -1. + <_> + 2 4 2 8 3. + <_> + + <_> + 16 6 4 14 -1. + <_> + 18 6 2 7 2. + <_> + 16 13 2 7 2. + <_> + + <_> + 1 10 5 9 -1. + <_> + 1 13 5 3 3. + <_> + + <_> + 16 6 4 14 -1. + <_> + 18 6 2 7 2. + <_> + 16 13 2 7 2. + <_> + + <_> + 5 0 9 5 -1. + <_> + 8 0 3 5 3. + <_> + + <_> + 16 6 4 14 -1. + <_> + 18 6 2 7 2. + <_> + 16 13 2 7 2. + <_> + + <_> + 3 1 10 16 -1. + <_> + 3 1 5 8 2. + <_> + 8 9 5 8 2. + <_> + + <_> + 2 12 18 4 -1. + <_> + 11 12 9 2 2. + <_> + 2 14 9 2 2. + <_> + + <_> + 8 4 4 7 -1. + <_> + 10 4 2 7 2. + <_> + + <_> + 12 0 3 20 -1. + <_> + 13 0 1 20 3. + <_> + + <_> + 5 0 3 20 -1. + <_> + 6 0 1 20 3. + <_> + + <_> + 11 13 9 7 -1. + <_> + 14 13 3 7 3. + <_> + + <_> + 8 5 4 14 -1. + <_> + 8 5 2 7 2. + <_> + 10 12 2 7 2. + <_> + + <_> + 2 12 18 4 -1. + <_> + 11 12 9 2 2. + <_> + 2 14 9 2 2. + <_> + + <_> + 0 12 18 4 -1. + <_> + 0 12 9 2 2. + <_> + 9 14 9 2 2. + <_> + + <_> + 8 14 12 5 -1. + <_> + 12 14 4 5 3. + <_> + + <_> + 0 14 12 5 -1. + <_> + 4 14 4 5 3. + <_> + + <_> + 6 8 14 3 -1. + <_> + 6 9 14 1 3. + <_> + + <_> + 1 11 16 4 -1. + <_> + 1 11 8 2 2. + <_> + 9 13 8 2 2. + <_> + + <_> + 13 10 6 10 -1. + <_> + 16 10 3 5 2. + <_> + 13 15 3 5 2. + <_> + + <_> + 0 5 20 12 -1. + <_> + 0 5 10 6 2. + <_> + 10 11 10 6 2. + <_> + + <_> + 7 13 13 3 -1. + <_> + 7 14 13 1 3. + <_> + + <_> + 1 18 15 2 -1. + <_> + 1 19 15 1 2. + <_> + + <_> + 13 10 6 10 -1. + <_> + 16 10 3 5 2. + <_> + 13 15 3 5 2. + <_> + + <_> + 0 14 20 6 -1. + <_> + 0 16 20 2 3. + <_> + + <_> + 13 10 6 10 -1. + <_> + 16 10 3 5 2. + <_> + 13 15 3 5 2. + <_> + + <_> + 3 0 13 2 -1. + <_> + 3 1 13 1 2. + <_> + + <_> + 0 7 20 3 -1. + <_> + 0 8 20 1 3. + <_> + + <_> + 2 5 10 8 -1. + <_> + 2 9 10 4 2. + <_> + + <_> + 8 5 12 6 -1. + <_> + 8 8 12 3 2. + <_> + + <_> + 0 5 11 6 -1. + <_> + 0 8 11 3 2. + <_> + + <_> + 3 10 17 2 -1. + <_> + 3 11 17 1 2. + <_> + + <_> + 1 10 6 10 -1. + <_> + 1 10 3 5 2. + <_> + 4 15 3 5 2. + <_> + + <_> + 1 0 18 3 -1. + <_> + 7 0 6 3 3. + <_> + + <_> + 3 12 14 4 -1. + <_> + 3 14 14 2 2. + <_> + + <_> + 8 0 7 8 -1. + <_> + 8 4 7 4 2. + <_> + + <_> + 3 13 7 6 -1. + <_> + 3 15 7 2 3. + <_> + + <_> + 9 7 3 13 -1. + <_> + 10 7 1 13 3. + <_> + + <_> + 0 14 5 6 -1. + <_> + 0 17 5 3 2. + <_> + + <_> + 5 6 15 4 -1. + <_> + 10 6 5 4 3. + <_> + + <_> + 0 6 15 4 -1. + <_> + 5 6 5 4 3. + <_> + + <_> + 16 9 3 10 -1. + <_> + 16 14 3 5 2. + <_> + + <_> + 1 0 8 15 -1. + <_> + 1 5 8 5 3. + <_> + + <_> + 14 0 4 13 -1. + <_> + 14 0 2 13 2. + <_> + + <_> + 0 0 20 3 -1. + <_> + 0 1 20 1 3. + <_> + + <_> + 4 0 15 2 -1. + <_> + 4 1 15 1 2. + <_> + + <_> + 7 6 6 7 -1. + <_> + 9 6 2 7 3. + <_> + + <_> + 6 0 8 12 -1. + <_> + 10 0 4 6 2. + <_> + 6 6 4 6 2. + <_> + + <_> + 8 0 3 13 -1. + <_> + 9 0 1 13 3. + <_> + + <_> + 9 0 3 13 -1. + <_> + 10 0 1 13 3. + <_> + + <_> + 1 1 16 4 -1. + <_> + 1 1 8 2 2. + <_> + 9 3 8 2 2. + <_> + + <_> + 17 6 3 13 -1. + <_> + 18 6 1 13 3. + <_> + + <_> + 0 6 3 13 -1. + <_> + 1 6 1 13 3. + <_> + + <_> + 9 2 6 14 -1. + <_> + 12 2 3 7 2. + <_> + 9 9 3 7 2. + <_> + + <_> + 7 6 4 7 -1. + <_> + 9 6 2 7 2. + <_> + + <_> + 6 8 8 12 -1. + <_> + 10 8 4 6 2. + <_> + 6 14 4 6 2. + <_> + + <_> + 0 13 13 3 -1. + <_> + 0 14 13 1 3. + <_> + + <_> + 2 13 16 3 -1. + <_> + 2 14 16 1 3. + <_> + + <_> + 6 8 8 10 -1. + <_> + 6 8 4 5 2. + <_> + 10 13 4 5 2. + <_> + + <_> + 5 3 12 3 -1. + <_> + 5 3 6 3 2. + <_> + + <_> + 8 0 4 18 -1. + <_> + 8 6 4 6 3. + <_> + + <_> + 9 8 3 12 -1. + <_> + 9 14 3 6 2. + <_> + + <_> + 7 7 3 10 -1. + <_> + 7 12 3 5 2. + <_> + + <_> + 10 5 7 6 -1. + <_> + 10 7 7 2 3. + <_> + + <_> + 0 6 4 14 -1. + <_> + 0 6 2 7 2. + <_> + 2 13 2 7 2. + <_> + + <_> + 13 10 6 5 -1. + <_> + 13 10 3 5 2. + <_> + + <_> + 1 10 6 5 -1. + <_> + 4 10 3 5 2. + <_> + + <_> + 14 10 4 7 -1. + <_> + 14 10 2 7 2. + <_> + + <_> + 1 12 6 5 -1. + <_> + 4 12 3 5 2. + <_> + + <_> + 6 6 8 12 -1. + <_> + 6 12 8 6 2. + <_> + + <_> + 0 8 14 3 -1. + <_> + 0 9 14 1 3. + <_> + + <_> + 8 11 6 6 -1. + <_> + 8 14 6 3 2. + <_> + + <_> + 6 1 8 12 -1. + <_> + 6 7 8 6 2. + <_> + + <_> + 2 0 16 8 -1. + <_> + 2 4 16 4 2. + <_> + + <_> + 1 0 17 3 -1. + <_> + 1 1 17 1 3. + <_> + + <_> + 5 13 13 2 -1. + <_> + 5 14 13 1 2. + <_> + + <_> + 1 12 7 6 -1. + <_> + 1 14 7 2 3. + <_> + + <_> + 13 12 7 6 -1. + <_> + 13 14 7 2 3. + <_> + + <_> + 8 0 3 13 -1. + <_> + 9 0 1 13 3. + <_> + + <_> + 13 12 7 6 -1. + <_> + 13 14 7 2 3. + <_> + + <_> + 6 6 6 7 -1. + <_> + 8 6 2 7 3. + <_> + + <_> + 5 6 10 3 -1. + <_> + 5 6 5 3 2. + <_> + + <_> + 0 14 9 6 -1. + <_> + 3 14 3 6 3. + <_> + + <_> + 13 12 7 6 -1. + <_> + 13 14 7 2 3. + <_> + + <_> + 0 12 7 6 -1. + <_> + 0 14 7 2 3. + <_> + + <_> + 6 0 8 12 -1. + <_> + 6 4 8 4 3. + <_> + + <_> + 0 1 13 2 -1. + <_> + 0 2 13 1 2. + <_> + + <_> + 15 1 3 13 -1. + <_> + 16 1 1 13 3. + <_> + + <_> + 2 1 3 13 -1. + <_> + 3 1 1 13 3. + <_> + + <_> + 4 4 12 4 -1. + <_> + 8 4 4 4 3. + <_> + + <_> + 1 0 18 4 -1. + <_> + 7 0 6 4 3. + <_> + + <_> + 11 0 6 7 -1. + <_> + 13 0 2 7 3. + <_> + + <_> + 1 14 13 3 -1. + <_> + 1 15 13 1 3. + <_> + + <_> + 7 13 13 3 -1. + <_> + 7 14 13 1 3. + <_> + + <_> + 5 2 3 18 -1. + <_> + 6 2 1 18 3. + <_> + + <_> + 11 0 6 7 -1. + <_> + 13 0 2 7 3. + <_> + + <_> + 0 10 20 3 -1. + <_> + 0 11 20 1 3. + <_> + + <_> + 7 10 13 3 -1. + <_> + 7 11 13 1 3. + <_> + + <_> + 0 15 13 2 -1. + <_> + 0 16 13 1 2. + <_> + + <_> + 11 14 7 6 -1. + <_> + 11 16 7 2 3. + <_> + + <_> + 3 7 12 5 -1. + <_> + 7 7 4 5 3. + <_> + + <_> + 2 11 16 8 -1. + <_> + 10 11 8 4 2. + <_> + 2 15 8 4 2. + <_> + + <_> + 2 0 14 12 -1. + <_> + 2 6 14 6 2. + <_> + + <_> + 11 10 4 8 -1. + <_> + 11 14 4 4 2. + <_> + + <_> + 5 11 10 6 -1. + <_> + 5 11 5 3 2. + <_> + 10 14 5 3 2. + <_> + + <_> + 10 1 7 6 -1. + <_> + 10 3 7 2 3. + <_> + + <_> + 5 3 10 6 -1. + <_> + 5 5 10 2 3. + <_> + + <_> + 4 6 12 3 -1. + <_> + 4 6 6 3 2. + <_> + + <_> + 1 4 14 3 -1. + <_> + 1 5 14 1 3. + <_> + + <_> + 12 12 8 4 -1. + <_> + 12 12 4 4 2. + <_> + + <_> + 0 12 8 4 -1. + <_> + 4 12 4 4 2. + <_> + + <_> + 10 9 10 8 -1. + <_> + 10 9 5 8 2. + <_> + + <_> + 0 9 10 8 -1. + <_> + 5 9 5 8 2. + <_> + + <_> + 3 4 14 3 -1. + <_> + 3 5 14 1 3. + <_> + + <_> + 0 5 12 4 -1. + <_> + 0 7 12 2 2. + <_> + + <_> + 7 1 8 12 -1. + <_> + 7 7 8 6 2. + <_> + + <_> + 5 0 10 15 -1. + <_> + 10 0 5 15 2. + <_> + + <_> + 6 1 10 6 -1. + <_> + 11 1 5 3 2. + <_> + 6 4 5 3 2. + <_> + + <_> + 4 1 10 6 -1. + <_> + 4 1 5 3 2. + <_> + 9 4 5 3 2. + <_> + + <_> + 1 5 18 3 -1. + <_> + 7 5 6 3 3. + <_> + + <_> + 5 5 6 7 -1. + <_> + 7 5 2 7 3. + <_> + + <_> + 11 8 4 12 -1. + <_> + 11 8 2 12 2. + <_> + + <_> + 5 8 4 12 -1. + <_> + 7 8 2 12 2. + <_> + + <_> + 8 4 4 16 -1. + <_> + 10 4 2 8 2. + <_> + 8 12 2 8 2. + <_> + + <_> + 8 6 4 14 -1. + <_> + 8 6 2 7 2. + <_> + 10 13 2 7 2. + <_> + + <_> + 3 2 14 2 -1. + <_> + 3 3 14 1 2. + <_> + + <_> + 3 0 13 9 -1. + <_> + 3 3 13 3 3. + <_> + + <_> + 3 5 17 6 -1. + <_> + 3 7 17 2 3. + <_> + + <_> + 5 0 6 7 -1. + <_> + 7 0 2 7 3. + <_> + + <_> + 3 1 15 19 -1. + <_> + 8 1 5 19 3. + <_> + + <_> + 5 0 6 7 -1. + <_> + 7 0 2 7 3. + <_> + + <_> + 3 2 14 3 -1. + <_> + 3 2 7 3 2. + <_> + + <_> + 3 6 10 3 -1. + <_> + 8 6 5 3 2. + <_> + + <_> + 6 7 14 2 -1. + <_> + 6 8 14 1 2. + <_> + + <_> + 2 4 15 3 -1. + <_> + 2 5 15 1 3. + <_> + + <_> + 11 14 7 6 -1. + <_> + 11 16 7 2 3. + <_> + + <_> + 2 14 7 6 -1. + <_> + 2 16 7 2 3. + <_> + + <_> + 8 15 7 4 -1. + <_> + 8 17 7 2 2. + <_> + + <_> + 0 12 20 6 -1. + <_> + 0 15 20 3 2. + <_> + + <_> + 6 3 13 3 -1. + <_> + 6 4 13 1 3. + <_> + + <_> + 1 5 17 12 -1. + <_> + 1 9 17 4 3. + <_> + + <_> + 6 11 13 3 -1. + <_> + 6 12 13 1 3. + <_> + + <_> + 2 5 16 8 -1. + <_> + 2 9 16 4 2. + <_> + + <_> + 9 5 5 14 -1. + <_> + 9 12 5 7 2. + <_> + + <_> + 8 4 3 16 -1. + <_> + 9 4 1 16 3. + <_> + + <_> + 3 4 14 6 -1. + <_> + 10 4 7 3 2. + <_> + 3 7 7 3 2. + <_> + + <_> + 0 3 7 6 -1. + <_> + 0 5 7 2 3. + <_> + + <_> + 4 5 12 6 -1. + <_> + 10 5 6 3 2. + <_> + 4 8 6 3 2. + <_> + + <_> + 0 13 19 6 -1. + <_> + 0 15 19 2 3. + <_> + + <_> + 13 13 7 6 -1. + <_> + 13 15 7 2 3. + <_> + + <_> + 3 1 7 6 -1. + <_> + 3 3 7 2 3. + <_> + + <_> + 13 13 7 6 -1. + <_> + 13 15 7 2 3. + <_> + + <_> + 1 3 8 10 -1. + <_> + 1 3 4 5 2. + <_> + 5 8 4 5 2. + <_> + + <_> + 9 6 4 12 -1. + <_> + 9 12 4 6 2. + <_> + + <_> + 4 10 4 7 -1. + <_> + 6 10 2 7 2. + <_> + + <_> + 8 0 9 14 -1. + <_> + 11 0 3 14 3. + <_> + + <_> + 1 1 18 19 -1. + <_> + 7 1 6 19 3. + <_> + + <_> + 8 5 8 9 -1. + <_> + 8 8 8 3 3. + <_> + + <_> + 3 8 14 3 -1. + <_> + 3 9 14 1 3. + <_> + + <_> + 7 8 13 3 -1. + <_> + 7 9 13 1 3. + <_> + + <_> + 2 10 6 8 -1. + <_> + 4 10 2 8 3. + <_> + + <_> + 12 13 7 6 -1. + <_> + 12 15 7 2 3. + <_> + + <_> + 6 10 4 8 -1. + <_> + 6 14 4 4 2. + <_> + + <_> + 10 9 6 10 -1. + <_> + 10 14 6 5 2. + <_> + + <_> + 4 9 6 10 -1. + <_> + 4 14 6 5 2. + <_> + + <_> + 13 13 7 6 -1. + <_> + 13 15 7 2 3. + <_> + + <_> + 1 13 7 6 -1. + <_> + 1 15 7 2 3. + <_> + + <_> + 13 1 6 13 -1. + <_> + 13 1 3 13 2. + <_> + + <_> + 3 3 13 3 -1. + <_> + 3 4 13 1 3. + <_> + + <_> + 7 3 13 2 -1. + <_> + 7 4 13 1 2. + <_> + + <_> + 4 14 10 6 -1. + <_> + 4 14 5 3 2. + <_> + 9 17 5 3 2. + <_> + + <_> + 11 1 4 14 -1. + <_> + 13 1 2 7 2. + <_> + 11 8 2 7 2. + <_> + + <_> + 0 3 14 2 -1. + <_> + 0 4 14 1 2. + <_> + + <_> + 7 0 6 6 -1. + <_> + 7 3 6 3 2. + <_> + + <_> + 0 0 16 18 -1. + <_> + 0 6 16 6 3. + <_> + + <_> + 14 2 5 9 -1. + <_> + 14 5 5 3 3. + <_> + + <_> + 1 10 4 10 -1. + <_> + 1 15 4 5 2. + <_> + + <_> + 16 6 2 14 -1. + <_> + 16 13 2 7 2. + <_> + + <_> + 2 6 2 14 -1. + <_> + 2 13 2 7 2. + <_> + + <_> + 14 2 5 9 -1. + <_> + 14 5 5 3 3. + <_> + + <_> + 1 2 5 9 -1. + <_> + 1 5 5 3 3. + <_> + + <_> + 8 4 9 9 -1. + <_> + 8 7 9 3 3. + <_> + + <_> + 4 5 12 6 -1. + <_> + 4 5 6 3 2. + <_> + 10 8 6 3 2. + <_> + + <_> + 13 4 3 16 -1. + <_> + 14 4 1 16 3. + <_> + + <_> + 4 4 3 16 -1. + <_> + 5 4 1 16 3. + <_> + + <_> + 12 2 4 12 -1. + <_> + 12 6 4 4 3. + <_> + + <_> + 6 0 2 14 -1. + <_> + 7 0 1 14 2. + <_> + + <_> + 15 0 4 16 -1. + <_> + 15 8 4 8 2. + <_> + + <_> + 1 0 4 16 -1. + <_> + 1 8 4 8 2. + <_> + + <_> + 12 9 8 6 -1. + <_> + 12 11 8 2 3. + <_> + + <_> + 0 6 14 2 -1. + <_> + 7 6 7 2 2. + <_> + + <_> + 0 0 20 5 -1. + <_> + 0 0 10 5 2. + <_> + + <_> + 4 0 12 6 -1. + <_> + 4 0 6 3 2. + <_> + 10 3 6 3 2. + <_> + + <_> + 12 0 8 8 -1. + <_> + 16 0 4 4 2. + <_> + 12 4 4 4 2. + <_> + + <_> + 0 0 8 8 -1. + <_> + 0 0 4 4 2. + <_> + 4 4 4 4 2. + <_> + + <_> + 14 1 5 9 -1. + <_> + 14 4 5 3 3. + <_> + + <_> + 1 6 18 2 -1. + <_> + 1 7 18 1 2. + <_> + + <_> + 7 1 7 6 -1. + <_> + 7 3 7 2 3. + <_> + + <_> + 1 2 18 10 -1. + <_> + 1 2 9 5 2. + <_> + 10 7 9 5 2. + <_> + + <_> + 9 3 8 8 -1. + <_> + 13 3 4 4 2. + <_> + 9 7 4 4 2. + <_> + + <_> + 3 1 12 4 -1. + <_> + 9 1 6 4 2. + <_> + + <_> + 4 5 12 7 -1. + <_> + 8 5 4 7 3. + <_> + + <_> + 5 9 9 5 -1. + <_> + 8 9 3 5 3. + <_> + + <_> + 7 10 6 7 -1. + <_> + 9 10 2 7 3. + <_> + + <_> + 8 2 3 13 -1. + <_> + 9 2 1 13 3. + <_> + + <_> + 11 2 2 16 -1. + <_> + 11 2 1 16 2. + <_> + + <_> + 2 13 9 7 -1. + <_> + 5 13 3 7 3. + <_> + + <_> + 11 2 2 16 -1. + <_> + 11 2 1 16 2. + <_> + + <_> + 0 9 18 11 -1. + <_> + 6 9 6 11 3. + <_> + + <_> + 11 2 2 16 -1. + <_> + 11 2 1 16 2. + <_> + + <_> + 3 7 12 6 -1. + <_> + 7 7 4 6 3. + <_> + + <_> + 11 4 5 9 -1. + <_> + 11 7 5 3 3. + <_> + + <_> + 4 4 5 9 -1. + <_> + 4 7 5 3 3. + <_> + + <_> + 8 2 4 12 -1. + <_> + 8 6 4 4 3. + <_> + + <_> + 0 14 13 3 -1. + <_> + 0 15 13 1 3. + <_> + + <_> + 14 1 5 9 -1. + <_> + 14 4 5 3 3. + <_> + + <_> + 7 2 2 16 -1. + <_> + 8 2 1 16 2. + <_> + + <_> + 3 15 14 3 -1. + <_> + 3 16 14 1 3. + <_> + + <_> + 6 5 6 7 -1. + <_> + 8 5 2 7 3. + <_> + + <_> + 0 1 20 6 -1. + <_> + 10 1 10 3 2. + <_> + 0 4 10 3 2. + <_> + + <_> + 4 0 8 5 -1. + <_> + 8 0 4 5 2. + <_> + + <_> + 13 1 3 14 -1. + <_> + 14 1 1 14 3. + <_> + + <_> + 4 1 3 14 -1. + <_> + 5 1 1 14 3. + <_> + + <_> + 13 0 6 10 -1. + <_> + 16 0 3 5 2. + <_> + 13 5 3 5 2. + <_> + + <_> + 1 0 6 10 -1. + <_> + 1 0 3 5 2. + <_> + 4 5 3 5 2. + <_> + + <_> + 2 0 18 5 -1. + <_> + 8 0 6 5 3. + <_> + + <_> + 0 0 18 5 -1. + <_> + 6 0 6 5 3. + <_> + + <_> + 11 1 4 14 -1. + <_> + 13 1 2 7 2. + <_> + 11 8 2 7 2. + <_> + + <_> + 5 1 4 14 -1. + <_> + 5 1 2 7 2. + <_> + 7 8 2 7 2. + <_> + + <_> + 7 13 13 3 -1. + <_> + 7 14 13 1 3. + <_> + + <_> + 0 7 13 3 -1. + <_> + 0 8 13 1 3. + <_> + + <_> + 16 1 3 13 -1. + <_> + 17 1 1 13 3. + <_> + + <_> + 1 1 3 13 -1. + <_> + 2 1 1 13 3. + <_> + + <_> + 11 0 6 7 -1. + <_> + 13 0 2 7 3. + <_> + + <_> + 2 12 5 8 -1. + <_> + 2 16 5 4 2. + <_> + + <_> + 7 8 13 3 -1. + <_> + 7 9 13 1 3. + <_> + + <_> + 0 8 13 3 -1. + <_> + 0 9 13 1 3. + <_> + + <_> + 6 9 9 4 -1. + <_> + 6 11 9 2 2. + <_> + + <_> + 0 7 10 6 -1. + <_> + 0 7 5 3 2. + <_> + 5 10 5 3 2. + <_> + + <_> + 15 4 5 16 -1. + <_> + 15 12 5 8 2. + <_> + + <_> + 4 0 9 9 -1. + <_> + 7 0 3 9 3. + <_> + + <_> + 11 0 6 7 -1. + <_> + 13 0 2 7 3. + <_> + + <_> + 3 0 6 7 -1. + <_> + 5 0 2 7 3. + <_> + + <_> + 3 12 14 8 -1. + <_> + 3 12 7 8 2. + <_> + + <_> + 2 10 16 10 -1. + <_> + 2 10 8 5 2. + <_> + 10 15 8 5 2. + <_> + + <_> + 4 5 12 6 -1. + <_> + 10 5 6 3 2. + <_> + 4 8 6 3 2. + <_> + + <_> + 5 5 10 8 -1. + <_> + 5 5 5 4 2. + <_> + 10 9 5 4 2. + <_> + + <_> + 5 6 10 6 -1. + <_> + 10 6 5 3 2. + <_> + 5 9 5 3 2. + <_> + + <_> + 1 15 12 5 -1. + <_> + 5 15 4 5 3. + <_> + + <_> + 14 10 6 10 -1. + <_> + 17 10 3 5 2. + <_> + 14 15 3 5 2. + <_> + + <_> + 5 9 10 8 -1. + <_> + 5 9 5 4 2. + <_> + 10 13 5 4 2. + <_> + + <_> + 2 7 18 13 -1. + <_> + 8 7 6 13 3. + <_> + + <_> + 4 6 10 5 -1. + <_> + 9 6 5 5 2. + <_> + + <_> + 14 10 6 10 -1. + <_> + 17 10 3 5 2. + <_> + 14 15 3 5 2. + <_> + + <_> + 3 0 6 8 -1. + <_> + 5 0 2 8 3. + <_> + + <_> + 3 14 16 6 -1. + <_> + 3 14 8 6 2. + <_> + + <_> + 6 2 4 7 -1. + <_> + 8 2 2 7 2. + <_> + + <_> + 4 9 14 3 -1. + <_> + 4 10 14 1 3. + <_> + + <_> + 3 6 13 9 -1. + <_> + 3 9 13 3 3. + <_> + + <_> + 7 0 6 18 -1. + <_> + 7 9 6 9 2. + <_> + + <_> + 8 5 3 10 -1. + <_> + 8 10 3 5 2. + <_> + + <_> + 3 3 16 4 -1. + <_> + 3 5 16 2 2. + <_> + + <_> + 5 6 5 6 -1. + <_> + 5 9 5 3 2. + <_> + + <_> + 4 6 12 6 -1. + <_> + 4 9 12 3 2. + <_> + + <_> + 4 7 12 4 -1. + <_> + 4 9 12 2 2. + <_> + + <_> + 8 9 9 4 -1. + <_> + 8 11 9 2 2. + <_> + + <_> + 1 5 16 3 -1. + <_> + 1 6 16 1 3. + <_> + + <_> + 5 5 13 3 -1. + <_> + 5 6 13 1 3. + <_> + + <_> + 0 1 18 3 -1. + <_> + 0 2 18 1 3. + <_> + + <_> + 9 2 6 10 -1. + <_> + 12 2 3 5 2. + <_> + 9 7 3 5 2. + <_> + + <_> + 3 1 12 4 -1. + <_> + 7 1 4 4 3. + <_> + + <_> + 9 2 6 10 -1. + <_> + 12 2 3 5 2. + <_> + 9 7 3 5 2. + <_> + + <_> + 8 2 2 18 -1. + <_> + 8 11 2 9 2. + <_> + + <_> + 9 2 6 10 -1. + <_> + 12 2 3 5 2. + <_> + 9 7 3 5 2. + <_> + + <_> + 5 2 6 10 -1. + <_> + 5 2 3 5 2. + <_> + 8 7 3 5 2. + <_> + + <_> + 4 9 12 4 -1. + <_> + 8 9 4 4 3. + <_> + + <_> + 4 9 9 8 -1. + <_> + 4 13 9 4 2. + <_> + + <_> + 1 15 19 4 -1. + <_> + 1 17 19 2 2. + <_> + + <_> + 5 15 7 4 -1. + <_> + 5 17 7 2 2. + <_> + + <_> + 7 6 6 10 -1. + <_> + 9 6 2 10 3. + <_> + + <_> + 0 7 20 6 -1. + <_> + 0 10 20 3 2. + <_> + + <_> + 7 0 12 10 -1. + <_> + 7 5 12 5 2. + <_> + + <_> + 0 14 10 6 -1. + <_> + 0 14 5 3 2. + <_> + 5 17 5 3 2. + <_> + + <_> + 14 10 6 10 -1. + <_> + 17 10 3 5 2. + <_> + 14 15 3 5 2. + <_> + + <_> + 0 8 5 9 -1. + <_> + 0 11 5 3 3. + <_> + + <_> + 15 11 5 9 -1. + <_> + 15 14 5 3 3. + <_> + + <_> + 1 11 13 3 -1. + <_> + 1 12 13 1 3. + <_> + + <_> + 15 11 5 9 -1. + <_> + 15 14 5 3 3. + <_> + + <_> + 0 12 20 2 -1. + <_> + 0 13 20 1 2. + <_> + + <_> + 15 11 5 9 -1. + <_> + 15 14 5 3 3. + <_> + + <_> + 0 11 5 9 -1. + <_> + 0 14 5 3 3. + <_> + + <_> + 13 0 3 10 -1. + <_> + 13 5 3 5 2. + <_> + + <_> + 3 0 13 18 -1. + <_> + 3 9 13 9 2. + <_> + + <_> + 12 5 3 14 -1. + <_> + 12 12 3 7 2. + <_> + + <_> + 5 5 3 14 -1. + <_> + 5 12 3 7 2. + <_> + + <_> + 2 8 16 10 -1. + <_> + 10 8 8 5 2. + <_> + 2 13 8 5 2. + <_> + + <_> + 8 5 4 7 -1. + <_> + 10 5 2 7 2. + <_> + + <_> + 6 3 12 9 -1. + <_> + 10 3 4 9 3. + <_> + + <_> + 4 5 6 5 -1. + <_> + 7 5 3 5 2. + <_> + + <_> + 5 1 12 8 -1. + <_> + 11 1 6 4 2. + <_> + 5 5 6 4 2. + <_> + + <_> + 5 6 6 10 -1. + <_> + 5 6 3 5 2. + <_> + 8 11 3 5 2. + <_> + + <_> + 2 10 18 9 -1. + <_> + 2 10 9 9 2. + <_> + + <_> + 5 0 10 4 -1. + <_> + 5 2 10 2 2. + <_> + + <_> + 7 13 6 7 -1. + <_> + 9 13 2 7 3. + <_> + + <_> + 0 12 18 3 -1. + <_> + 6 12 6 3 3. + <_> + + <_> + 4 1 14 3 -1. + <_> + 4 2 14 1 3. + <_> + + <_> + 4 5 8 8 -1. + <_> + 4 5 4 4 2. + <_> + 8 9 4 4 2. + <_> + + <_> + 4 5 12 6 -1. + <_> + 4 7 12 2 3. + <_> + + <_> + 0 1 10 4 -1. + <_> + 5 1 5 4 2. + <_> + + <_> + 4 18 13 2 -1. + <_> + 4 19 13 1 2. + <_> + + <_> + 0 14 13 3 -1. + <_> + 0 15 13 1 3. + <_> + + <_> + 2 4 16 10 -1. + <_> + 10 4 8 5 2. + <_> + 2 9 8 5 2. + <_> + + <_> + 0 2 16 2 -1. + <_> + 0 3 16 1 2. + <_> + + <_> + 7 5 6 7 -1. + <_> + 9 5 2 7 3. + <_> + + <_> + 3 11 6 7 -1. + <_> + 5 11 2 7 3. + <_> + + <_> + 7 8 13 3 -1. + <_> + 7 9 13 1 3. + <_> + + <_> + 3 1 10 6 -1. + <_> + 3 1 5 3 2. + <_> + 8 4 5 3 2. + <_> + + <_> + 12 9 5 9 -1. + <_> + 12 12 5 3 3. + <_> + + <_> + 6 3 4 7 -1. + <_> + 8 3 2 7 2. + <_> + + <_> + 12 14 7 6 -1. + <_> + 12 16 7 2 3. + <_> + + <_> + 1 4 4 12 -1. + <_> + 1 8 4 4 3. + <_> + + <_> + 12 14 7 6 -1. + <_> + 12 16 7 2 3. + <_> + + <_> + 8 6 4 7 -1. + <_> + 10 6 2 7 2. + <_> + + <_> + 10 8 8 8 -1. + <_> + 14 8 4 4 2. + <_> + 10 12 4 4 2. + <_> + + <_> + 1 7 15 3 -1. + <_> + 6 7 5 3 3. + <_> + + <_> + 8 12 4 8 -1. + <_> + 8 16 4 4 2. + <_> + + <_> + 6 10 8 8 -1. + <_> + 6 14 8 4 2. + <_> + + <_> + 3 5 14 3 -1. + <_> + 3 6 14 1 3. + <_> + + <_> + 2 10 7 6 -1. + <_> + 2 12 7 2 3. + <_> + + <_> + 8 6 7 8 -1. + <_> + 8 10 7 4 2. + <_> + + <_> + 0 2 4 7 -1. + <_> + 2 2 2 7 2. + <_> + + <_> + 4 1 14 3 -1. + <_> + 4 2 14 1 3. + <_> + + <_> + 2 3 13 2 -1. + <_> + 2 4 13 1 2. + <_> + + <_> + 5 13 13 3 -1. + <_> + 5 14 13 1 3. + <_> + + <_> + 2 1 16 4 -1. + <_> + 2 1 8 2 2. + <_> + 10 3 8 2 2. + <_> + + <_> + 9 0 8 6 -1. + <_> + 9 2 8 2 3. + <_> + + <_> + 3 9 6 8 -1. + <_> + 6 9 3 8 2. + <_> + + <_> + 12 10 8 6 -1. + <_> + 12 12 8 2 3. + <_> + + <_> + 4 10 6 5 -1. + <_> + 7 10 3 5 2. + <_> + + <_> + 7 6 8 8 -1. + <_> + 11 6 4 4 2. + <_> + 7 10 4 4 2. + <_> + + <_> + 7 5 6 10 -1. + <_> + 7 5 3 5 2. + <_> + 10 10 3 5 2. + <_> + + <_> + 10 4 10 4 -1. + <_> + 10 6 10 2 2. + <_> + + <_> + 0 4 10 4 -1. + <_> + 0 6 10 2 2. + <_> + + <_> + 4 2 14 6 -1. + <_> + 4 5 14 3 2. + <_> + + <_> + 0 2 13 3 -1. + <_> + 0 3 13 1 3. + <_> + + <_> + 4 9 12 5 -1. + <_> + 8 9 4 5 3. + <_> + + <_> + 7 5 6 7 -1. + <_> + 9 5 2 7 3. + <_> + + <_> + 12 9 7 6 -1. + <_> + 12 11 7 2 3. + <_> + + <_> + 1 9 7 6 -1. + <_> + 1 11 7 2 3. + <_> + + <_> + 11 0 6 7 -1. + <_> + 13 0 2 7 3. + <_> + + <_> + 0 6 10 6 -1. + <_> + 0 6 5 3 2. + <_> + 5 9 5 3 2. + <_> + + <_> + 11 0 6 7 -1. + <_> + 13 0 2 7 3. + <_> + + <_> + 3 0 6 7 -1. + <_> + 5 0 2 7 3. + <_> + + <_> + 6 13 13 3 -1. + <_> + 6 14 13 1 3. + <_> + + <_> + 4 15 12 5 -1. + <_> + 8 15 4 5 3. + <_> + + <_> + 12 12 7 6 -1. + <_> + 12 14 7 2 3. + <_> + + <_> + 0 6 17 3 -1. + <_> + 0 7 17 1 3. + <_> + + <_> + 14 10 6 10 -1. + <_> + 17 10 3 5 2. + <_> + 14 15 3 5 2. + <_> + + <_> + 0 12 18 4 -1. + <_> + 0 12 9 2 2. + <_> + 9 14 9 2 2. + <_> + + <_> + 11 0 4 7 -1. + <_> + 11 0 2 7 2. + <_> + + <_> + 0 12 14 2 -1. + <_> + 0 13 14 1 2. + <_> + + <_> + 9 0 6 7 -1. + <_> + 11 0 2 7 3. + <_> + + <_> + 5 0 6 7 -1. + <_> + 7 0 2 7 3. + <_> + + <_> + 10 1 6 7 -1. + <_> + 12 1 2 7 3. + <_> + + <_> + 8 6 3 13 -1. + <_> + 9 6 1 13 3. + <_> + + <_> + 9 1 3 14 -1. + <_> + 10 1 1 14 3. + <_> + + <_> + 4 1 6 7 -1. + <_> + 6 1 2 7 3. + <_> + + <_> + 11 11 7 6 -1. + <_> + 11 13 7 2 3. + <_> + + <_> + 2 11 7 6 -1. + <_> + 2 13 7 2 3. + <_> + + <_> + 0 3 20 12 -1. + <_> + 0 9 20 6 2. + <_> + + <_> + 7 6 6 11 -1. + <_> + 9 6 2 11 3. + <_> + + <_> + 4 6 12 4 -1. + <_> + 8 6 4 4 3. + <_> + + <_> + 0 1 6 11 -1. + <_> + 3 1 3 11 2. + <_> + + <_> + 9 4 5 12 -1. + <_> + 9 10 5 6 2. + <_> + + <_> + 0 3 20 4 -1. + <_> + 0 3 10 2 2. + <_> + 10 5 10 2 2. + <_> + + <_> + 10 0 10 6 -1. + <_> + 15 0 5 3 2. + <_> + 10 3 5 3 2. + <_> + + <_> + 4 0 10 6 -1. + <_> + 4 0 5 3 2. + <_> + 9 3 5 3 2. + <_> + + <_> + 7 8 13 3 -1. + <_> + 7 9 13 1 3. + <_> + + <_> + 0 8 13 3 -1. + <_> + 0 9 13 1 3. + <_> + + <_> + 10 6 7 4 -1. + <_> + 10 8 7 2 2. + <_> + + <_> + 3 6 7 4 -1. + <_> + 3 8 7 2 2. + <_> + + <_> + 11 9 7 6 -1. + <_> + 11 11 7 2 3. + <_> + + <_> + 2 8 14 4 -1. + <_> + 2 8 7 2 2. + <_> + 9 10 7 2 2. + <_> + + <_> + 10 10 10 6 -1. + <_> + 15 10 5 3 2. + <_> + 10 13 5 3 2. + <_> + + <_> + 0 10 10 6 -1. + <_> + 0 10 5 3 2. + <_> + 5 13 5 3 2. + <_> + + <_> + 14 5 4 14 -1. + <_> + 16 5 2 7 2. + <_> + 14 12 2 7 2. + <_> + + <_> + 0 0 5 9 -1. + <_> + 0 3 5 3 3. + <_> + + <_> + 14 5 4 14 -1. + <_> + 16 5 2 7 2. + <_> + 14 12 2 7 2. + <_> + + <_> + 2 5 4 14 -1. + <_> + 2 5 2 7 2. + <_> + 4 12 2 7 2. + <_> + + <_> + 2 5 18 12 -1. + <_> + 11 5 9 6 2. + <_> + 2 11 9 6 2. + <_> + + <_> + 3 0 6 5 -1. + <_> + 6 0 3 5 2. + <_> + + <_> + 9 0 3 20 -1. + <_> + 10 0 1 20 3. + <_> + + <_> + 1 0 6 16 -1. + <_> + 1 8 6 8 2. + <_> + + <_> + 5 6 10 3 -1. + <_> + 5 6 5 3 2. + <_> + + <_> + 1 3 15 4 -1. + <_> + 6 3 5 4 3. + <_> + + <_> + 8 4 5 16 -1. + <_> + 8 12 5 8 2. + <_> + + <_> + 1 12 7 6 -1. + <_> + 1 14 7 2 3. + <_> + + <_> + 17 5 3 12 -1. + <_> + 17 11 3 6 2. + <_> + + <_> + 1 3 15 3 -1. + <_> + 1 4 15 1 3. + <_> + + <_> + 8 5 4 12 -1. + <_> + 8 9 4 4 3. + <_> + + <_> + 8 7 3 10 -1. + <_> + 8 12 3 5 2. + <_> + + <_> + 4 1 14 3 -1. + <_> + 4 2 14 1 3. + <_> + + <_> + 0 5 3 12 -1. + <_> + 0 11 3 6 2. + <_> + + <_> + 1 13 18 6 -1. + <_> + 7 13 6 6 3. + <_> + + <_> + 7 3 4 7 -1. + <_> + 9 3 2 7 2. + <_> + + <_> + 8 7 9 5 -1. + <_> + 11 7 3 5 3. + <_> + + <_> + 3 7 9 5 -1. + <_> + 6 7 3 5 3. + <_> + + <_> + 10 10 8 10 -1. + <_> + 14 10 4 5 2. + <_> + 10 15 4 5 2. + <_> + + <_> + 2 10 8 10 -1. + <_> + 2 10 4 5 2. + <_> + 6 15 4 5 2. + <_> + + <_> + 8 14 10 6 -1. + <_> + 13 14 5 3 2. + <_> + 8 17 5 3 2. + <_> + + <_> + 3 12 7 6 -1. + <_> + 3 14 7 2 3. + <_> + + <_> + 8 3 5 8 -1. + <_> + 8 7 5 4 2. + <_> + + <_> + 7 0 6 8 -1. + <_> + 7 4 6 4 2. + <_> + + <_> + 10 0 7 6 -1. + <_> + 10 2 7 2 3. + <_> + + <_> + 0 13 13 3 -1. + <_> + 0 14 13 1 3. + <_> + + <_> + 7 12 13 3 -1. + <_> + 7 13 13 1 3. + <_> + + <_> + 1 3 18 4 -1. + <_> + 1 3 9 2 2. + <_> + 10 5 9 2 2. + <_> + + <_> + 6 1 8 8 -1. + <_> + 10 1 4 4 2. + <_> + 6 5 4 4 2. + <_> + + <_> + 8 6 4 7 -1. + <_> + 10 6 2 7 2. + <_> + + <_> + 2 4 18 6 -1. + <_> + 11 4 9 3 2. + <_> + 2 7 9 3 2. + <_> + + <_> + 1 5 8 8 -1. + <_> + 1 5 4 4 2. + <_> + 5 9 4 4 2. + <_> + + <_> + 14 0 2 13 -1. + <_> + 14 0 1 13 2. + <_> + + <_> + 4 0 2 13 -1. + <_> + 5 0 1 13 2. + <_> + + <_> + 7 3 12 3 -1. + <_> + 7 3 6 3 2. + <_> + + <_> + 1 3 12 3 -1. + <_> + 7 3 6 3 2. + <_> + + <_> + 7 1 6 7 -1. + <_> + 9 1 2 7 3. + <_> + + <_> + 5 2 6 12 -1. + <_> + 7 2 2 12 3. + <_> + + <_> + 9 5 6 12 -1. + <_> + 12 5 3 6 2. + <_> + 9 11 3 6 2. + <_> + + <_> + 5 5 6 12 -1. + <_> + 5 5 3 6 2. + <_> + 8 11 3 6 2. + <_> + + <_> + 5 9 14 3 -1. + <_> + 5 10 14 1 3. + <_> + + <_> + 1 3 18 12 -1. + <_> + 1 3 9 6 2. + <_> + 10 9 9 6 2. + <_> + + <_> + 3 11 14 4 -1. + <_> + 10 11 7 2 2. + <_> + 3 13 7 2 2. + <_> + + <_> + 4 6 4 14 -1. + <_> + 4 6 2 7 2. + <_> + 6 13 2 7 2. + <_> + + <_> + 11 11 4 7 -1. + <_> + 11 11 2 7 2. + <_> + + <_> + 5 11 4 7 -1. + <_> + 7 11 2 7 2. + <_> + + <_> + 6 6 10 3 -1. + <_> + 6 6 5 3 2. + <_> + + <_> + 1 3 18 4 -1. + <_> + 7 3 6 4 3. + <_> + + <_> + 13 4 7 6 -1. + <_> + 13 6 7 2 3. + <_> + + <_> + 3 8 14 3 -1. + <_> + 10 8 7 3 2. + <_> + + <_> + 9 4 2 13 -1. + <_> + 9 4 1 13 2. + <_> + + <_> + 6 0 6 7 -1. + <_> + 8 0 2 7 3. + <_> + + <_> + 10 0 7 6 -1. + <_> + 10 2 7 2 3. + <_> + + <_> + 3 0 7 6 -1. + <_> + 3 2 7 2 3. + <_> + + <_> + 2 0 16 3 -1. + <_> + 2 1 16 1 3. + <_> + + <_> + 2 9 7 4 -1. + <_> + 2 11 7 2 2. + <_> + + <_> + 4 7 16 8 -1. + <_> + 12 7 8 4 2. + <_> + 4 11 8 4 2. + <_> + + <_> + 0 7 16 8 -1. + <_> + 0 7 8 4 2. + <_> + 8 11 8 4 2. + <_> + + <_> + 7 12 10 6 -1. + <_> + 12 12 5 3 2. + <_> + 7 15 5 3 2. + <_> + + <_> + 3 12 10 6 -1. + <_> + 3 12 5 3 2. + <_> + 8 15 5 3 2. + <_> + + <_> + 13 14 7 6 -1. + <_> + 13 16 7 2 3. + <_> + + <_> + 4 5 4 8 -1. + <_> + 4 9 4 4 2. + <_> + + <_> + 13 14 7 6 -1. + <_> + 13 16 7 2 3. + <_> + + <_> + 2 4 14 3 -1. + <_> + 2 5 14 1 3. + <_> + + <_> + 2 3 18 4 -1. + <_> + 11 3 9 2 2. + <_> + 2 5 9 2 2. + <_> + + <_> + 5 0 10 18 -1. + <_> + 5 6 10 6 3. + <_> + + <_> + 8 2 4 12 -1. + <_> + 8 6 4 4 3. + <_> + + <_> + 0 3 14 4 -1. + <_> + 0 3 7 2 2. + <_> + 7 5 7 2 2. + <_> + + <_> + 13 4 3 15 -1. + <_> + 14 4 1 15 3. + <_> + + <_> + 4 4 3 15 -1. + <_> + 5 4 1 15 3. + <_> + + <_> + 14 4 6 10 -1. + <_> + 16 4 2 10 3. + <_> + + <_> + 0 4 6 10 -1. + <_> + 2 4 2 10 3. + <_> + + <_> + 8 5 4 14 -1. + <_> + 10 5 2 7 2. + <_> + 8 12 2 7 2. + <_> + + <_> + 4 6 12 12 -1. + <_> + 4 6 6 6 2. + <_> + 10 12 6 6 2. + <_> + + <_> + 9 1 3 19 -1. + <_> + 10 1 1 19 3. + <_> + + <_> + 2 1 3 17 -1. + <_> + 3 1 1 17 3. + <_> + + <_> + 2 7 18 4 -1. + <_> + 8 7 6 4 3. + <_> + + <_> + 1 10 8 6 -1. + <_> + 1 12 8 2 3. + <_> + + <_> + 9 9 9 8 -1. + <_> + 12 9 3 8 3. + <_> + + <_> + 0 0 20 15 -1. + <_> + 0 5 20 5 3. + <_> + + <_> + 3 1 14 6 -1. + <_> + 3 4 14 3 2. + <_> + + <_> + 0 2 7 4 -1. + <_> + 0 4 7 2 2. + <_> + + <_> + 16 2 3 15 -1. + <_> + 17 2 1 15 3. + <_> + + <_> + 0 16 14 4 -1. + <_> + 0 16 7 2 2. + <_> + 7 18 7 2 2. + <_> + + <_> + 12 14 7 6 -1. + <_> + 12 16 7 2 3. + <_> + + <_> + 2 16 14 4 -1. + <_> + 2 16 7 2 2. + <_> + 9 18 7 2 2. + <_> + + <_> + 16 2 3 15 -1. + <_> + 17 2 1 15 3. + <_> + + <_> + 3 0 8 8 -1. + <_> + 3 0 4 4 2. + <_> + 7 4 4 4 2. + <_> + + <_> + 5 10 14 3 -1. + <_> + 5 11 14 1 3. + <_> + + <_> + 1 9 16 4 -1. + <_> + 1 11 16 2 2. + <_> + + <_> + 8 7 5 8 -1. + <_> + 8 11 5 4 2. + <_> + + <_> + 1 2 3 15 -1. + <_> + 2 2 1 15 3. + <_> + + <_> + 14 11 6 8 -1. + <_> + 16 11 2 8 3. + <_> + + <_> + 0 11 6 8 -1. + <_> + 2 11 2 8 3. + <_> + + <_> + 14 8 6 12 -1. + <_> + 17 8 3 6 2. + <_> + 14 14 3 6 2. + <_> + + <_> + 0 8 6 12 -1. + <_> + 0 8 3 6 2. + <_> + 3 14 3 6 2. + <_> + + <_> + 15 0 3 20 -1. + <_> + 16 0 1 20 3. + <_> + + <_> + 2 0 3 20 -1. + <_> + 3 0 1 20 3. + <_> + + <_> + 8 9 8 4 -1. + <_> + 8 9 4 4 2. + <_> + + <_> + 6 9 6 10 -1. + <_> + 9 9 3 10 2. + <_> + + <_> + 9 9 9 8 -1. + <_> + 12 9 3 8 3. + <_> + + <_> + 2 9 9 8 -1. + <_> + 5 9 3 8 3. + <_> + + <_> + 12 5 6 15 -1. + <_> + 14 5 2 15 3. + <_> + + <_> + 1 2 9 5 -1. + <_> + 4 2 3 5 3. + <_> + + <_> + 9 1 3 19 -1. + <_> + 10 1 1 19 3. + <_> + + <_> + 8 1 3 19 -1. + <_> + 9 1 1 19 3. + <_> + + <_> + 6 6 10 3 -1. + <_> + 6 6 5 3 2. + <_> + + <_> + 4 6 10 3 -1. + <_> + 9 6 5 3 2. + <_> + + <_> + 6 3 10 10 -1. + <_> + 6 3 5 10 2. + <_> + + <_> + 3 0 12 5 -1. + <_> + 9 0 6 5 2. + <_> + + <_> + 8 1 10 16 -1. + <_> + 13 1 5 8 2. + <_> + 8 9 5 8 2. + <_> + + <_> + 4 8 8 4 -1. + <_> + 8 8 4 4 2. + <_> + + <_> + 9 16 9 4 -1. + <_> + 9 18 9 2 2. + <_> + + <_> + 0 14 8 6 -1. + <_> + 4 14 4 6 2. + <_> + + <_> + 12 5 6 15 -1. + <_> + 14 5 2 15 3. + <_> + + <_> + 2 5 6 15 -1. + <_> + 4 5 2 15 3. + <_> + + <_> + 11 0 9 17 -1. + <_> + 14 0 3 17 3. + <_> + + <_> + 0 0 9 17 -1. + <_> + 3 0 3 17 3. + <_> + + <_> + 3 8 17 2 -1. + <_> + 3 9 17 1 2. + <_> + + <_> + 6 1 7 4 -1. + <_> + 6 3 7 2 2. + <_> + + <_> + 4 2 12 4 -1. + <_> + 4 4 12 2 2. + <_> + + <_> + 1 8 14 3 -1. + <_> + 1 9 14 1 3. + <_> + + <_> + 7 14 13 3 -1. + <_> + 7 15 13 1 3. + <_> + + <_> + 3 13 13 3 -1. + <_> + 3 14 13 1 3. + <_> + + <_> + 1 5 19 12 -1. + <_> + 1 9 19 4 3. + <_> + + <_> + 2 3 13 15 -1. + <_> + 2 8 13 5 3. + <_> + + <_> + 5 1 15 6 -1. + <_> + 10 1 5 6 3. + <_> + + <_> + 0 0 18 3 -1. + <_> + 6 0 6 3 3. + <_> + + <_> + 15 9 5 9 -1. + <_> + 15 12 5 3 3. + <_> + + <_> + 3 12 14 4 -1. + <_> + 3 14 14 2 2. + <_> + + <_> + 7 14 13 2 -1. + <_> + 7 15 13 1 2. + <_> + + <_> + 0 9 5 9 -1. + <_> + 0 12 5 3 3. + <_> + + <_> + 14 5 5 15 -1. + <_> + 14 10 5 5 3. + <_> + + <_> + 1 5 5 15 -1. + <_> + 1 10 5 5 3. + <_> + + <_> + 8 3 6 17 -1. + <_> + 10 3 2 17 3. + <_> + + <_> + 7 0 6 7 -1. + <_> + 9 0 2 7 3. + <_> + + <_> + 4 7 12 8 -1. + <_> + 4 11 12 4 2. + <_> + + <_> + 5 3 2 14 -1. + <_> + 5 10 2 7 2. + <_> + + <_> + 9 3 4 8 -1. + <_> + 9 7 4 4 2. + <_> + + <_> + 3 5 9 15 -1. + <_> + 3 10 9 5 3. + <_> + + <_> + 9 5 3 12 -1. + <_> + 9 11 3 6 2. + <_> + + <_> + 4 3 6 14 -1. + <_> + 4 3 3 7 2. + <_> + 7 10 3 7 2. + <_> + + <_> + 9 8 3 10 -1. + <_> + 9 13 3 5 2. + <_> + + <_> + 0 4 20 8 -1. + <_> + 0 4 10 4 2. + <_> + 10 8 10 4 2. + <_> + + <_> + 6 11 10 6 -1. + <_> + 11 11 5 3 2. + <_> + 6 14 5 3 2. + <_> + + <_> + 2 9 8 8 -1. + <_> + 2 9 4 4 2. + <_> + 6 13 4 4 2. + <_> + + <_> + 6 9 14 2 -1. + <_> + 6 9 7 2 2. + <_> + + <_> + 0 9 14 2 -1. + <_> + 7 9 7 2 2. + <_> + + <_> + 2 4 18 12 -1. + <_> + 8 4 6 12 3. + <_> + + <_> + 7 4 6 8 -1. + <_> + 9 4 2 8 3. + <_> + + <_> + 9 3 6 12 -1. + <_> + 12 3 3 6 2. + <_> + 9 9 3 6 2. + <_> + + <_> + 6 9 5 9 -1. + <_> + 6 12 5 3 3. + <_> + + <_> + 0 1 20 8 -1. + <_> + 10 1 10 4 2. + <_> + 0 5 10 4 2. + <_> + + <_> + 6 3 6 17 -1. + <_> + 8 3 2 17 3. + <_> + + <_> + 14 10 6 10 -1. + <_> + 17 10 3 5 2. + <_> + 14 15 3 5 2. + <_> + + <_> + 0 10 6 10 -1. + <_> + 0 10 3 5 2. + <_> + 3 15 3 5 2. + <_> + + <_> + 16 12 4 8 -1. + <_> + 16 12 2 8 2. + <_> + + <_> + 0 12 4 8 -1. + <_> + 2 12 2 8 2. + <_> + + <_> + 9 3 6 7 -1. + <_> + 11 3 2 7 3. + <_> + + <_> + 6 6 6 11 -1. + <_> + 8 6 2 11 3. + <_> + + <_> + 1 1 18 4 -1. + <_> + 7 1 6 4 3. + <_> + + <_> + 5 4 15 4 -1. + <_> + 5 6 15 2 2. + <_> + + <_> + 5 5 6 5 -1. + <_> + 8 5 3 5 2. + <_> + + <_> + 12 1 6 11 -1. + <_> + 14 1 2 11 3. + <_> + + <_> + 0 11 20 3 -1. + <_> + 0 12 20 1 3. + <_> + + <_> + 12 1 6 11 -1. + <_> + 14 1 2 11 3. + <_> + + <_> + 2 1 6 11 -1. + <_> + 4 1 2 11 3. + <_> + + <_> + 10 9 4 8 -1. + <_> + 10 13 4 4 2. + <_> + + <_> + 0 7 7 6 -1. + <_> + 0 9 7 2 3. + <_> + + <_> + 10 0 3 13 -1. + <_> + 11 0 1 13 3. + <_> + + <_> + 7 0 3 13 -1. + <_> + 8 0 1 13 3. + <_> + + <_> + 15 7 5 6 -1. + <_> + 15 10 5 3 2. + <_> + + <_> + 6 15 7 4 -1. + <_> + 6 17 7 2 2. + <_> + + <_> + 11 10 4 8 -1. + <_> + 11 14 4 4 2. + <_> + + <_> + 0 7 5 6 -1. + <_> + 0 10 5 3 2. + <_> + + <_> + 14 0 6 6 -1. + <_> + 14 0 3 6 2. + <_> + + <_> + 2 0 14 3 -1. + <_> + 2 1 14 1 3. + <_> + + <_> + 4 4 13 2 -1. + <_> + 4 5 13 1 2. + <_> + + <_> + 0 18 20 2 -1. + <_> + 0 19 20 1 2. + <_> + + <_> + 14 0 6 5 -1. + <_> + 14 0 3 5 2. + <_> + + <_> + 5 0 6 7 -1. + <_> + 7 0 2 7 3. + <_> + + <_> + 14 0 6 6 -1. + <_> + 14 0 3 6 2. + <_> + + <_> + 0 0 6 5 -1. + <_> + 3 0 3 5 2. + <_> + + <_> + 6 0 8 14 -1. + <_> + 10 0 4 7 2. + <_> + 6 7 4 7 2. + <_> + + <_> + 0 2 6 12 -1. + <_> + 2 2 2 12 3. + <_> + + <_> + 6 12 9 6 -1. + <_> + 9 12 3 6 3. + <_> + + <_> + 2 0 7 4 -1. + <_> + 2 2 7 2 2. + <_> + + <_> + 8 5 4 7 -1. + <_> + 8 5 2 7 2. + <_> + + <_> + 5 0 6 10 -1. + <_> + 5 0 3 5 2. + <_> + 8 5 3 5 2. + <_> + + <_> + 18 7 2 13 -1. + <_> + 18 7 1 13 2. + <_> + + <_> + 0 2 5 9 -1. + <_> + 0 5 5 3 3. + <_> + + <_> + 18 6 2 13 -1. + <_> + 18 6 1 13 2. + <_> + + <_> + 0 6 2 13 -1. + <_> + 1 6 1 13 2. + <_> + + <_> + 16 7 4 13 -1. + <_> + 16 7 2 13 2. + <_> + + <_> + 6 5 7 6 -1. + <_> + 6 7 7 2 3. + <_> + + <_> + 6 11 10 6 -1. + <_> + 11 11 5 3 2. + <_> + 6 14 5 3 2. + <_> + + <_> + 5 9 6 5 -1. + <_> + 8 9 3 5 2. + <_> + + <_> + 10 3 4 15 -1. + <_> + 10 3 2 15 2. + <_> + + <_> + 6 3 4 15 -1. + <_> + 8 3 2 15 2. + <_> + + <_> + 6 7 13 2 -1. + <_> + 6 8 13 1 2. + <_> + + <_> + 2 15 16 4 -1. + <_> + 2 15 8 2 2. + <_> + 10 17 8 2 2. + <_> + + <_> + 17 0 3 13 -1. + <_> + 18 0 1 13 3. + <_> + + <_> + 0 7 4 13 -1. + <_> + 2 7 2 13 2. + <_> + + <_> + 17 0 3 13 -1. + <_> + 18 0 1 13 3. + <_> + + <_> + 5 11 10 9 -1. + <_> + 5 14 10 3 3. + <_> + + <_> + 17 0 3 13 -1. + <_> + 18 0 1 13 3. + <_> + + <_> + 0 0 3 13 -1. + <_> + 1 0 1 13 3. + <_> + + <_> + 9 6 4 12 -1. + <_> + 9 12 4 6 2. + <_> + + <_> + 0 3 2 16 -1. + <_> + 0 11 2 8 2. + <_> + + <_> + 0 15 20 4 -1. + <_> + 10 15 10 2 2. + <_> + 0 17 10 2 2. + <_> + + <_> + 0 15 9 4 -1. + <_> + 0 17 9 2 2. + <_> + + <_> + 9 14 10 6 -1. + <_> + 14 14 5 3 2. + <_> + 9 17 5 3 2. + <_> + + <_> + 0 14 13 3 -1. + <_> + 0 15 13 1 3. + <_> + + <_> + 4 15 13 3 -1. + <_> + 4 16 13 1 3. + <_> + + <_> + 0 0 18 4 -1. + <_> + 0 0 9 2 2. + <_> + 9 2 9 2 2. + <_> + + <_> + 6 5 8 15 -1. + <_> + 6 10 8 5 3. + <_> + + <_> + 0 0 6 7 -1. + <_> + 2 0 2 7 3. + <_> + + <_> + 14 1 6 12 -1. + <_> + 16 1 2 12 3. + <_> + + <_> + 3 0 6 7 -1. + <_> + 5 0 2 7 3. + <_> + + <_> + 18 1 2 13 -1. + <_> + 18 1 1 13 2. + <_> + + <_> + 0 1 10 19 -1. + <_> + 5 1 5 19 2. + <_> + + <_> + 14 2 4 10 -1. + <_> + 14 2 2 10 2. + <_> + + <_> + 0 3 4 16 -1. + <_> + 0 3 2 8 2. + <_> + 2 11 2 8 2. + <_> + + <_> + 6 0 10 6 -1. + <_> + 11 0 5 3 2. + <_> + 6 3 5 3 2. + <_> + + <_> + 1 14 10 6 -1. + <_> + 1 14 5 3 2. + <_> + 6 17 5 3 2. + <_> + + <_> + 8 7 5 9 -1. + <_> + 8 10 5 3 3. + <_> + + <_> + 2 2 4 10 -1. + <_> + 4 2 2 10 2. + <_> + + <_> + 11 11 7 4 -1. + <_> + 11 13 7 2 2. + <_> + + <_> + 5 6 10 12 -1. + <_> + 5 6 5 6 2. + <_> + 10 12 5 6 2. + <_> + + <_> + 9 2 4 12 -1. + <_> + 9 6 4 4 3. + <_> + + <_> + 2 0 15 6 -1. + <_> + 2 3 15 3 2. + <_> + + <_> + 6 0 13 8 -1. + <_> + 6 4 13 4 2. + <_> + + <_> + 1 0 13 8 -1. + <_> + 1 4 13 4 2. + <_> + + <_> + 11 4 2 14 -1. + <_> + 11 11 2 7 2. + <_> + + <_> + 0 1 20 3 -1. + <_> + 0 2 20 1 3. + <_> + + <_> + 8 5 6 10 -1. + <_> + 11 5 3 5 2. + <_> + 8 10 3 5 2. + <_> + + <_> + 4 8 10 12 -1. + <_> + 9 8 5 12 2. + <_> + + <_> + 8 5 6 5 -1. + <_> + 8 5 3 5 2. + <_> + + <_> + 6 5 6 5 -1. + <_> + 9 5 3 5 2. + <_> + + <_> + 13 0 6 7 -1. + <_> + 15 0 2 7 3. + <_> + + <_> + 1 0 6 7 -1. + <_> + 3 0 2 7 3. + <_> + + <_> + 12 14 7 6 -1. + <_> + 12 16 7 2 3. + <_> + + <_> + 0 17 18 3 -1. + <_> + 6 17 6 3 3. + <_> + + <_> + 6 7 12 8 -1. + <_> + 10 7 4 8 3. + <_> + + <_> + 0 14 18 5 -1. + <_> + 6 14 6 5 3. + <_> + + <_> + 0 13 20 4 -1. + <_> + 10 13 10 2 2. + <_> + 0 15 10 2 2. + <_> + + <_> + 0 13 13 3 -1. + <_> + 0 14 13 1 3. + <_> + + <_> + 11 11 7 4 -1. + <_> + 11 13 7 2 2. + <_> + + <_> + 2 12 7 6 -1. + <_> + 2 14 7 2 3. + <_> + + <_> + 7 14 13 3 -1. + <_> + 7 15 13 1 3. + <_> + + <_> + 0 8 8 6 -1. + <_> + 0 10 8 2 3. + <_> + + <_> + 4 8 15 2 -1. + <_> + 4 9 15 1 2. + <_> + + <_> + 0 9 6 5 -1. + <_> + 3 9 3 5 2. + <_> + + <_> + 13 9 6 5 -1. + <_> + 13 9 3 5 2. + <_> + + <_> + 1 9 6 5 -1. + <_> + 4 9 3 5 2. + <_> + + <_> + 13 0 4 14 -1. + <_> + 15 0 2 7 2. + <_> + 13 7 2 7 2. + <_> + + <_> + 0 0 14 19 -1. + <_> + 7 0 7 19 2. + <_> + + <_> + 13 0 4 14 -1. + <_> + 15 0 2 7 2. + <_> + 13 7 2 7 2. + <_> + + <_> + 3 0 4 14 -1. + <_> + 3 0 2 7 2. + <_> + 5 7 2 7 2. + <_> + + <_> + 13 4 7 6 -1. + <_> + 13 6 7 2 3. + <_> + + <_> + 2 4 14 3 -1. + <_> + 2 5 14 1 3. + <_> + + <_> + 12 0 2 15 -1. + <_> + 12 0 1 15 2. + <_> + + <_> + 7 6 4 12 -1. + <_> + 7 12 4 6 2. + <_> + + <_> + 6 2 14 18 -1. + <_> + 13 2 7 9 2. + <_> + 6 11 7 9 2. + <_> + + <_> + 5 9 9 6 -1. + <_> + 5 12 9 3 2. + <_> + + <_> + 0 1 20 18 -1. + <_> + 10 1 10 9 2. + <_> + 0 10 10 9 2. + <_> + + <_> + 4 10 7 4 -1. + <_> + 4 12 7 2 2. + <_> + + <_> + 0 0 20 3 -1. + <_> + 0 1 20 1 3. + <_> + + <_> + 1 0 14 12 -1. + <_> + 1 4 14 4 3. + <_> + + <_> + 9 0 6 8 -1. + <_> + 9 0 3 8 2. + <_> + + <_> + 4 2 12 5 -1. + <_> + 8 2 4 5 3. + <_> + + <_> + 12 0 2 15 -1. + <_> + 12 0 1 15 2. + <_> + + <_> + 4 0 8 10 -1. + <_> + 8 0 4 10 2. + <_> + + <_> + 9 0 6 7 -1. + <_> + 11 0 2 7 3. + <_> + + <_> + 5 0 6 7 -1. + <_> + 7 0 2 7 3. + <_> + + <_> + 9 2 2 13 -1. + <_> + 9 2 1 13 2. + <_> + + <_> + 6 6 6 7 -1. + <_> + 8 6 2 7 3. + <_> + + <_> + 8 0 6 7 -1. + <_> + 10 0 2 7 3. + <_> + + <_> + 0 4 18 10 -1. + <_> + 0 4 9 5 2. + <_> + 9 9 9 5 2. + <_> + + <_> + 12 9 7 6 -1. + <_> + 12 11 7 2 3. + <_> + + <_> + 1 9 7 6 -1. + <_> + 1 11 7 2 3. + <_> + + <_> + 4 3 16 6 -1. + <_> + 12 3 8 3 2. + <_> + 4 6 8 3 2. + <_> + + <_> + 3 4 5 9 -1. + <_> + 3 7 5 3 3. + <_> + + <_> + 8 4 12 5 -1. + <_> + 12 4 4 5 3. + <_> + + <_> + 3 9 8 4 -1. + <_> + 3 11 8 2 2. + <_> + + <_> + 11 0 2 15 -1. + <_> + 11 0 1 15 2. + <_> + + <_> + 7 0 2 15 -1. + <_> + 8 0 1 15 2. + <_> + + <_> + 9 5 6 7 -1. + <_> + 11 5 2 7 3. + <_> + + <_> + 8 3 4 8 -1. + <_> + 10 3 2 8 2. + <_> + + <_> + 9 13 6 7 -1. + <_> + 11 13 2 7 3. + <_> + + <_> + 4 14 9 5 -1. + <_> + 7 14 3 5 3. + <_> + + <_> + 15 3 4 17 -1. + <_> + 15 3 2 17 2. + <_> + + <_> + 1 6 4 13 -1. + <_> + 3 6 2 13 2. + <_> + + <_> + 11 12 4 7 -1. + <_> + 11 12 2 7 2. + <_> + + <_> + 0 1 6 7 -1. + <_> + 2 1 2 7 3. + <_> + + <_> + 9 12 6 7 -1. + <_> + 11 12 2 7 3. + <_> + + <_> + 5 12 6 7 -1. + <_> + 7 12 2 7 3. + <_> + + <_> + 7 7 6 8 -1. + <_> + 9 7 2 8 3. + <_> + + <_> + 0 14 8 6 -1. + <_> + 0 16 8 2 3. + <_> + + <_> + 13 14 7 6 -1. + <_> + 13 16 7 2 3. + <_> + + <_> + 0 16 14 4 -1. + <_> + 0 16 7 2 2. + <_> + 7 18 7 2 2. + <_> + + <_> + 5 13 13 3 -1. + <_> + 5 14 13 1 3. + <_> + + <_> + 2 9 14 3 -1. + <_> + 2 10 14 1 3. + <_> + + <_> + 8 7 7 4 -1. + <_> + 8 9 7 2 2. + <_> + + <_> + 2 14 10 6 -1. + <_> + 2 14 5 3 2. + <_> + 7 17 5 3 2. + <_> + + <_> + 13 12 5 6 -1. + <_> + 13 15 5 3 2. + <_> + + <_> + 0 0 6 6 -1. + <_> + 3 0 3 6 2. + <_> + + <_> + 4 5 16 3 -1. + <_> + 4 5 8 3 2. + <_> + + <_> + 5 3 4 14 -1. + <_> + 5 10 4 7 2. + <_> + + <_> + 4 13 15 5 -1. + <_> + 9 13 5 5 3. + <_> + + <_> + 0 3 14 2 -1. + <_> + 0 4 14 1 2. + <_> + + <_> + 4 13 15 5 -1. + <_> + 9 13 5 5 3. + <_> + + <_> + 1 13 15 5 -1. + <_> + 6 13 5 5 3. + <_> + + <_> + 12 0 8 6 -1. + <_> + 12 2 8 2 3. + <_> + + <_> + 3 10 6 5 -1. + <_> + 6 10 3 5 2. + <_> + + <_> + 4 7 14 8 -1. + <_> + 11 7 7 4 2. + <_> + 4 11 7 4 2. + <_> + + <_> + 2 7 14 8 -1. + <_> + 2 7 7 4 2. + <_> + 9 11 7 4 2. + <_> + + <_> + 11 0 2 20 -1. + <_> + 11 0 1 20 2. + <_> + + <_> + 7 0 2 20 -1. + <_> + 8 0 1 20 2. + <_> + + <_> + 10 5 6 8 -1. + <_> + 12 5 2 8 3. + <_> + + <_> + 8 2 3 13 -1. + <_> + 9 2 1 13 3. + <_> + + <_> + 3 2 14 4 -1. + <_> + 10 2 7 2 2. + <_> + 3 4 7 2 2. + <_> + + <_> + 7 5 6 7 -1. + <_> + 9 5 2 7 3. + <_> + + <_> + 8 4 9 16 -1. + <_> + 11 4 3 16 3. + <_> + + <_> + 4 5 6 8 -1. + <_> + 6 5 2 8 3. + <_> + + <_> + 7 10 6 10 -1. + <_> + 10 10 3 5 2. + <_> + 7 15 3 5 2. + <_> + + <_> + 5 11 5 6 -1. + <_> + 5 14 5 3 2. + <_> + + <_> + 4 8 13 8 -1. + <_> + 4 12 13 4 2. + <_> + + <_> + 0 9 10 6 -1. + <_> + 0 9 5 3 2. + <_> + 5 12 5 3 2. + <_> + + <_> + 13 11 7 6 -1. + <_> + 13 13 7 2 3. + <_> + + <_> + 4 0 5 8 -1. + <_> + 4 4 5 4 2. + <_> + + <_> + 8 1 4 10 -1. + <_> + 8 6 4 5 2. + <_> + + <_> + 6 3 7 10 -1. + <_> + 6 8 7 5 2. + <_> + + <_> + 6 12 13 3 -1. + <_> + 6 13 13 1 3. + <_> + + <_> + 2 13 13 3 -1. + <_> + 2 14 13 1 3. + <_> + + <_> + 12 11 7 4 -1. + <_> + 12 13 7 2 2. + <_> + + <_> + 1 11 7 4 -1. + <_> + 1 13 7 2 2. + <_> + + <_> + 9 12 9 4 -1. + <_> + 9 14 9 2 2. + <_> + + <_> + 2 12 16 4 -1. + <_> + 2 12 8 2 2. + <_> + 10 14 8 2 2. + <_> + + <_> + 10 14 10 6 -1. + <_> + 15 14 5 3 2. + <_> + 10 17 5 3 2. + <_> + + <_> + 4 1 8 8 -1. + <_> + 4 1 4 4 2. + <_> + 8 5 4 4 2. + <_> + + <_> + 2 12 18 7 -1. + <_> + 8 12 6 7 3. + <_> + + <_> + 3 13 12 6 -1. + <_> + 3 13 6 3 2. + <_> + 9 16 6 3 2. + <_> + + <_> + 4 12 13 4 -1. + <_> + 4 14 13 2 2. + <_> + + <_> + 6 0 2 15 -1. + <_> + 7 0 1 15 2. + <_> + + <_> + 4 2 16 18 -1. + <_> + 12 2 8 9 2. + <_> + 4 11 8 9 2. + <_> + + <_> + 1 16 18 4 -1. + <_> + 7 16 6 4 3. + <_> + + <_> + 7 14 12 6 -1. + <_> + 13 14 6 3 2. + <_> + 7 17 6 3 2. + <_> + + <_> + 4 0 12 9 -1. + <_> + 8 0 4 9 3. + <_> + + <_> + 7 0 6 7 -1. + <_> + 9 0 2 7 3. + <_> + + <_> + 4 9 6 6 -1. + <_> + 7 9 3 6 2. + <_> + + <_> + 7 12 12 8 -1. + <_> + 13 12 6 4 2. + <_> + 7 16 6 4 2. + <_> + + <_> + 1 12 12 8 -1. + <_> + 1 12 6 4 2. + <_> + 7 16 6 4 2. + <_> + + <_> + 0 10 20 9 -1. + <_> + 0 13 20 3 3. + <_> + + <_> + 4 5 10 6 -1. + <_> + 4 5 5 3 2. + <_> + 9 8 5 3 2. + <_> + + <_> + 13 3 7 6 -1. + <_> + 13 5 7 2 3. + <_> + + <_> + 8 1 4 14 -1. + <_> + 8 1 2 7 2. + <_> + 10 8 2 7 2. + <_> + + <_> + 12 8 5 6 -1. + <_> + 12 11 5 3 2. + <_> + + <_> + 3 8 5 6 -1. + <_> + 3 11 5 3 2. + <_> + + <_> + 8 0 6 7 -1. + <_> + 10 0 2 7 3. + <_> + + <_> + 6 0 6 7 -1. + <_> + 8 0 2 7 3. + <_> + + <_> + 2 0 18 4 -1. + <_> + 8 0 6 4 3. + <_> + + <_> + 6 5 3 14 -1. + <_> + 6 12 3 7 2. + <_> + + <_> + 5 17 15 3 -1. + <_> + 10 17 5 3 3. + <_> + + <_> + 3 0 6 7 -1. + <_> + 6 0 3 7 2. + <_> + + <_> + 8 3 12 17 -1. + <_> + 8 3 6 17 2. + <_> + + <_> + 0 2 16 12 -1. + <_> + 8 2 8 12 2. + <_> + + <_> + 7 6 6 12 -1. + <_> + 7 12 6 6 2. + <_> + + <_> + 8 8 4 8 -1. + <_> + 8 12 4 4 2. + <_> + + <_> + 8 7 12 10 -1. + <_> + 14 7 6 5 2. + <_> + 8 12 6 5 2. + <_> + + <_> + 4 1 12 5 -1. + <_> + 10 1 6 5 2. + <_> + + <_> + 7 2 8 8 -1. + <_> + 11 2 4 4 2. + <_> + 7 6 4 4 2. + <_> + + <_> + 5 2 8 8 -1. + <_> + 5 2 4 4 2. + <_> + 9 6 4 4 2. + <_> + + <_> + 3 14 14 6 -1. + <_> + 3 17 14 3 2. + <_> + + <_> + 3 3 5 12 -1. + <_> + 3 7 5 4 3. + <_> + + <_> + 15 4 5 6 -1. + <_> + 15 7 5 3 2. + <_> + + <_> + 0 4 7 6 -1. + <_> + 0 6 7 2 3. + <_> + + <_> + 15 4 5 9 -1. + <_> + 15 7 5 3 3. + <_> + + <_> + 8 6 4 14 -1. + <_> + 8 6 2 7 2. + <_> + 10 13 2 7 2. + <_> + + <_> + 8 6 6 7 -1. + <_> + 10 6 2 7 3. + <_> + + <_> + 5 0 8 10 -1. + <_> + 5 0 4 5 2. + <_> + 9 5 4 5 2. + <_> + + <_> + 9 12 6 7 -1. + <_> + 11 12 2 7 3. + <_> + + <_> + 5 12 6 7 -1. + <_> + 7 12 2 7 3. + <_> + + <_> + 13 9 7 6 -1. + <_> + 13 11 7 2 3. + <_> + + <_> + 1 1 16 6 -1. + <_> + 1 3 16 2 3. + <_> + + <_> + 2 1 17 6 -1. + <_> + 2 3 17 2 3. + <_> + + <_> + 4 4 2 16 -1. + <_> + 4 12 2 8 2. + <_> + + <_> + 7 6 10 14 -1. + <_> + 12 6 5 7 2. + <_> + 7 13 5 7 2. + <_> + + <_> + 5 5 6 7 -1. + <_> + 7 5 2 7 3. + <_> + + <_> + 4 9 12 6 -1. + <_> + 10 9 6 3 2. + <_> + 4 12 6 3 2. + <_> + + <_> + 1 8 18 3 -1. + <_> + 7 8 6 3 3. + <_> + + <_> + 2 13 18 7 -1. + <_> + 8 13 6 7 3. + <_> + + <_> + 1 8 15 3 -1. + <_> + 6 8 5 3 3. + <_> + + <_> + 6 0 12 7 -1. + <_> + 10 0 4 7 3. + <_> + + <_> + 3 5 13 3 -1. + <_> + 3 6 13 1 3. + <_> + + <_> + 12 11 8 4 -1. + <_> + 12 13 8 2 2. + <_> + + <_> + 6 7 6 8 -1. + <_> + 6 11 6 4 2. + <_> + + <_> + 9 2 4 12 -1. + <_> + 9 6 4 4 3. + <_> + + <_> + 0 9 7 6 -1. + <_> + 0 11 7 2 3. + <_> + + <_> + 15 4 5 9 -1. + <_> + 15 7 5 3 3. + <_> + + <_> + 2 18 13 2 -1. + <_> + 2 19 13 1 2. + <_> + + <_> + 15 1 5 9 -1. + <_> + 15 4 5 3 3. + <_> + + <_> + 6 6 8 12 -1. + <_> + 6 10 8 4 3. + <_> + + <_> + 7 9 6 9 -1. + <_> + 7 12 6 3 3. + <_> + + <_> + 0 7 11 4 -1. + <_> + 0 9 11 2 2. + <_> + + <_> + 8 12 10 6 -1. + <_> + 13 12 5 3 2. + <_> + 8 15 5 3 2. + <_> + + <_> + 2 12 10 6 -1. + <_> + 2 12 5 3 2. + <_> + 7 15 5 3 2. + <_> + + <_> + 12 14 8 6 -1. + <_> + 12 16 8 2 3. + <_> + + <_> + 0 14 8 6 -1. + <_> + 0 16 8 2 3. + <_> + + <_> + 18 2 2 13 -1. + <_> + 18 2 1 13 2. + <_> + + <_> + 4 5 8 8 -1. + <_> + 4 5 4 4 2. + <_> + 8 9 4 4 2. + <_> + + <_> + 18 2 2 13 -1. + <_> + 18 2 1 13 2. + <_> + + <_> + 7 6 4 8 -1. + <_> + 7 10 4 4 2. + <_> + + <_> + 9 8 11 4 -1. + <_> + 9 10 11 2 2. + <_> + + <_> + 6 6 5 10 -1. + <_> + 6 11 5 5 2. + <_> + + <_> + 4 7 14 6 -1. + <_> + 4 9 14 2 3. + <_> + + <_> + 4 4 12 8 -1. + <_> + 4 4 6 4 2. + <_> + 10 8 6 4 2. + <_> + + <_> + 5 5 12 5 -1. + <_> + 5 5 6 5 2. + <_> + + <_> + 1 3 15 12 -1. + <_> + 6 3 5 12 3. + <_> + + <_> + 13 3 6 17 -1. + <_> + 13 3 3 17 2. + <_> + + <_> + 1 3 6 17 -1. + <_> + 4 3 3 17 2. + <_> + + <_> + 14 1 6 9 -1. + <_> + 14 4 6 3 3. + <_> + + <_> + 4 0 8 6 -1. + <_> + 4 3 8 3 2. + <_> + + <_> + 5 4 15 3 -1. + <_> + 5 5 15 1 3. + <_> + + <_> + 0 5 8 4 -1. + <_> + 0 7 8 2 2. + <_> + + <_> + 18 2 2 13 -1. + <_> + 18 2 1 13 2. + <_> + + <_> + 0 2 2 13 -1. + <_> + 1 2 1 13 2. + <_> + + <_> + 18 7 2 13 -1. + <_> + 18 7 1 13 2. + <_> + + <_> + 0 7 2 13 -1. + <_> + 1 7 1 13 2. + <_> + + <_> + 15 1 5 9 -1. + <_> + 15 4 5 3 3. + <_> + + <_> + 0 1 5 9 -1. + <_> + 0 4 5 3 3. + <_> + + <_> + 4 8 13 2 -1. + <_> + 4 9 13 1 2. + <_> + + <_> + 2 12 16 4 -1. + <_> + 2 14 16 2 2. + <_> + + <_> + 6 12 13 3 -1. + <_> + 6 13 13 1 3. + <_> + + <_> + 1 12 13 3 -1. + <_> + 1 13 13 1 3. + <_> + + <_> + 6 6 10 3 -1. + <_> + 6 6 5 3 2. + <_> + + <_> + 4 6 10 3 -1. + <_> + 9 6 5 3 2. + <_> + + <_> + 6 2 8 6 -1. + <_> + 6 4 8 2 3. + <_> + + <_> + 6 5 7 4 -1. + <_> + 6 7 7 2 2. + <_> + + <_> + 9 5 10 9 -1. + <_> + 9 8 10 3 3. + <_> + + <_> + 0 10 18 4 -1. + <_> + 0 10 9 2 2. + <_> + 9 12 9 2 2. + <_> + + <_> + 8 7 6 9 -1. + <_> + 10 7 2 9 3. + <_> + + <_> + 6 4 4 7 -1. + <_> + 8 4 2 7 2. + <_> + + <_> + 9 6 9 10 -1. + <_> + 12 6 3 10 3. + <_> + + <_> + 0 0 20 3 -1. + <_> + 0 1 20 1 3. + <_> + + <_> + 10 14 10 6 -1. + <_> + 15 14 5 3 2. + <_> + 10 17 5 3 2. + <_> + + <_> + 0 6 5 12 -1. + <_> + 0 10 5 4 3. + <_> + + <_> + 9 6 9 10 -1. + <_> + 12 6 3 10 3. + <_> + + <_> + 0 0 12 20 -1. + <_> + 6 0 6 20 2. + <_> + + <_> + 6 13 10 7 -1. + <_> + 6 13 5 7 2. + <_> + + <_> + 0 2 6 17 -1. + <_> + 3 2 3 17 2. + <_> + + <_> + 10 14 9 5 -1. + <_> + 13 14 3 5 3. + <_> + + <_> + 1 14 9 5 -1. + <_> + 4 14 3 5 3. + <_> + + <_> + 7 13 7 6 -1. + <_> + 7 15 7 2 3. + <_> + + <_> + 1 14 7 6 -1. + <_> + 1 16 7 2 3. + <_> + + <_> + 12 10 8 6 -1. + <_> + 12 12 8 2 3. + <_> + + <_> + 2 6 9 9 -1. + <_> + 5 6 3 9 3. + <_> + + <_> + 12 10 7 6 -1. + <_> + 12 12 7 2 3. + <_> + + <_> + 3 2 4 12 -1. + <_> + 5 2 2 12 2. + <_> + + <_> + 9 1 7 15 -1. + <_> + 9 6 7 5 3. + <_> + + <_> + 6 10 4 7 -1. + <_> + 8 10 2 7 2. + <_> + + <_> + 5 0 10 20 -1. + <_> + 10 0 5 10 2. + <_> + 5 10 5 10 2. + <_> + + <_> + 7 10 6 10 -1. + <_> + 9 10 2 10 3. + <_> + + <_> + 12 7 7 4 -1. + <_> + 12 9 7 2 2. + <_> + + <_> + 2 7 16 4 -1. + <_> + 2 7 8 2 2. + <_> + 10 9 8 2 2. + <_> + + <_> + 5 10 12 10 -1. + <_> + 5 10 6 10 2. + <_> + + <_> + 6 1 2 16 -1. + <_> + 6 9 2 8 2. + <_> + + <_> + 6 2 12 10 -1. + <_> + 6 7 12 5 2. + <_> + + <_> + 2 4 14 6 -1. + <_> + 2 4 7 3 2. + <_> + 9 7 7 3 2. + <_> + + <_> + 5 0 11 12 -1. + <_> + 5 4 11 4 3. + <_> + + <_> + 7 1 6 12 -1. + <_> + 7 5 6 4 3. + <_> + + <_> + 9 8 11 4 -1. + <_> + 9 10 11 2 2. + <_> + + <_> + 0 8 11 4 -1. + <_> + 0 10 11 2 2. + <_> + + <_> + 1 8 19 6 -1. + <_> + 1 11 19 3 2. + <_> + + <_> + 7 0 6 8 -1. + <_> + 7 4 6 4 2. + <_> + + <_> + 5 3 15 2 -1. + <_> + 5 4 15 1 2. + <_> + + <_> + 2 7 14 6 -1. + <_> + 2 9 14 2 3. + <_> + + <_> + 3 0 17 6 -1. + <_> + 3 2 17 2 3. + <_> + + <_> + 0 0 17 6 -1. + <_> + 0 2 17 2 3. + <_> + + <_> + 13 2 7 4 -1. + <_> + 13 4 7 2 2. + <_> + + <_> + 0 2 7 4 -1. + <_> + 0 4 7 2 2. + <_> + + <_> + 8 1 12 10 -1. + <_> + 14 1 6 5 2. + <_> + 8 6 6 5 2. + <_> + + <_> + 2 1 4 8 -1. + <_> + 2 5 4 4 2. + <_> + + <_> + 5 1 11 10 -1. + <_> + 5 6 11 5 2. + <_> + + <_> + 3 9 10 6 -1. + <_> + 3 9 5 3 2. + <_> + 8 12 5 3 2. + <_> + + <_> + 12 7 7 4 -1. + <_> + 12 9 7 2 2. + <_> + + <_> + 2 7 12 8 -1. + <_> + 6 7 4 8 3. + <_> + + <_> + 10 10 8 4 -1. + <_> + 10 10 4 4 2. + <_> + + <_> + 2 10 8 4 -1. + <_> + 6 10 4 4 2. + <_> + + <_> + 3 10 16 3 -1. + <_> + 3 10 8 3 2. + <_> + + <_> + 1 11 6 5 -1. + <_> + 4 11 3 5 2. + <_> + + <_> + 10 7 9 9 -1. + <_> + 13 7 3 9 3. + <_> + + <_> + 1 7 9 9 -1. + <_> + 4 7 3 9 3. + <_> + + <_> + 5 5 12 5 -1. + <_> + 5 5 6 5 2. + <_> + + <_> + 3 5 12 5 -1. + <_> + 9 5 6 5 2. + <_> + + <_> + 2 3 16 2 -1. + <_> + 2 3 8 2 2. + <_> + + <_> + 2 8 7 6 -1. + <_> + 2 10 7 2 3. + <_> + + <_> + 7 8 9 6 -1. + <_> + 7 10 9 2 3. + <_> + + <_> + 3 0 3 15 -1. + <_> + 4 0 1 15 3. + <_> + + <_> + 3 10 16 3 -1. + <_> + 3 10 8 3 2. + <_> + + <_> + 1 10 16 3 -1. + <_> + 9 10 8 3 2. + <_> + + <_> + 12 0 8 19 -1. + <_> + 12 0 4 19 2. + <_> + + <_> + 0 0 8 19 -1. + <_> + 4 0 4 19 2. + <_> + + <_> + 6 14 14 3 -1. + <_> + 6 15 14 1 3. + <_> + + <_> + 0 14 13 3 -1. + <_> + 0 15 13 1 3. + <_> + + <_> + 6 14 14 3 -1. + <_> + 6 15 14 1 3. + <_> + + <_> + 0 12 16 4 -1. + <_> + 0 12 8 2 2. + <_> + 8 14 8 2 2. + <_> + + <_> + 7 14 12 6 -1. + <_> + 13 14 6 3 2. + <_> + 7 17 6 3 2. + <_> + + <_> + 1 14 12 6 -1. + <_> + 1 14 6 3 2. + <_> + 7 17 6 3 2. + <_> + + <_> + 3 3 14 14 -1. + <_> + 10 3 7 7 2. + <_> + 3 10 7 7 2. + <_> + + <_> + 3 6 6 12 -1. + <_> + 5 6 2 12 3. + <_> + + <_> + 5 12 12 6 -1. + <_> + 9 12 4 6 3. + <_> + + <_> + 1 8 14 6 -1. + <_> + 1 8 7 3 2. + <_> + 8 11 7 3 2. + <_> + + <_> + 8 7 12 10 -1. + <_> + 14 7 6 5 2. + <_> + 8 12 6 5 2. + <_> + + <_> + 0 7 12 10 -1. + <_> + 0 7 6 5 2. + <_> + 6 12 6 5 2. + <_> + + <_> + 9 2 6 18 -1. + <_> + 12 2 3 9 2. + <_> + 9 11 3 9 2. + <_> + + <_> + 1 10 8 10 -1. + <_> + 1 10 4 5 2. + <_> + 5 15 4 5 2. + <_> + + <_> + 4 14 12 4 -1. + <_> + 4 16 12 2 2. + <_> + + <_> + 5 13 6 7 -1. + <_> + 7 13 2 7 3. + <_> + + <_> + 5 2 15 5 -1. + <_> + 10 2 5 5 3. + <_> + + <_> + 5 4 9 14 -1. + <_> + 5 11 9 7 2. + <_> + + <_> + 8 0 11 4 -1. + <_> + 8 2 11 2 2. + <_> + + <_> + 0 14 16 6 -1. + <_> + 0 16 16 2 3. + <_> + + <_> + 10 14 8 6 -1. + <_> + 10 16 8 2 3. + <_> + + <_> + 0 15 13 3 -1. + <_> + 0 16 13 1 3. + <_> + + <_> + 5 8 15 3 -1. + <_> + 5 9 15 1 3. + <_> + + <_> + 0 8 19 3 -1. + <_> + 0 9 19 1 3. + <_> + + <_> + 8 16 8 4 -1. + <_> + 8 16 4 4 2. + <_> + + <_> + 4 16 8 4 -1. + <_> + 8 16 4 4 2. + <_> + + <_> + 9 5 10 9 -1. + <_> + 9 8 10 3 3. + <_> + + <_> + 1 5 10 9 -1. + <_> + 1 8 10 3 3. + <_> + + <_> + 4 7 14 2 -1. + <_> + 4 7 7 2 2. + <_> + + <_> + 2 7 13 2 -1. + <_> + 2 8 13 1 2. + <_> + + <_> + 6 5 8 4 -1. + <_> + 6 7 8 2 2. + <_> + + <_> + 5 12 9 5 -1. + <_> + 8 12 3 5 3. + <_> + + <_> + 3 6 14 3 -1. + <_> + 3 7 14 1 3. + <_> + + <_> + 7 2 4 12 -1. + <_> + 7 6 4 4 3. + <_> + + <_> + 2 4 16 4 -1. + <_> + 2 6 16 2 2. + <_> + + <_> + 1 4 9 4 -1. + <_> + 1 6 9 2 2. + <_> + + <_> + 9 4 11 4 -1. + <_> + 9 6 11 2 2. + <_> + + <_> + 4 5 8 8 -1. + <_> + 4 5 4 4 2. + <_> + 8 9 4 4 2. + <_> + + <_> + 1 5 18 3 -1. + <_> + 7 5 6 3 3. + <_> + + <_> + 1 0 15 7 -1. + <_> + 6 0 5 7 3. + <_> + + <_> + 12 0 5 15 -1. + <_> + 12 5 5 5 3. + <_> + + <_> + 3 0 5 15 -1. + <_> + 3 5 5 5 3. + <_> + + <_> + 8 5 6 8 -1. + <_> + 10 5 2 8 3. + <_> + + <_> + 8 3 4 7 -1. + <_> + 10 3 2 7 2. + <_> + + <_> + 4 6 12 11 -1. + <_> + 8 6 4 11 3. + <_> + + <_> + 1 7 18 4 -1. + <_> + 1 9 18 2 2. + <_> + + <_> + 8 5 6 8 -1. + <_> + 10 5 2 8 3. + <_> + + <_> + 7 2 6 5 -1. + <_> + 10 2 3 5 2. + <_> + + <_> + 9 0 4 7 -1. + <_> + 9 0 2 7 2. + <_> + + <_> + 0 0 7 6 -1. + <_> + 0 2 7 2 3. + <_> + + <_> + 13 0 7 6 -1. + <_> + 13 2 7 2 3. + <_> + + <_> + 1 1 18 4 -1. + <_> + 7 1 6 4 3. + <_> + + <_> + 5 4 15 4 -1. + <_> + 5 6 15 2 2. + <_> + + <_> + 5 5 6 5 -1. + <_> + 8 5 3 5 2. + <_> + + <_> + 12 1 6 11 -1. + <_> + 14 1 2 11 3. + <_> + + <_> + 0 11 20 3 -1. + <_> + 0 12 20 1 3. + <_> + + <_> + 12 1 6 11 -1. + <_> + 14 1 2 11 3. + <_> + + <_> + 2 1 6 11 -1. + <_> + 4 1 2 11 3. + <_> + + <_> + 10 9 4 8 -1. + <_> + 10 13 4 4 2. + <_> + + <_> + 0 7 7 6 -1. + <_> + 0 9 7 2 3. + <_> + + <_> + 10 0 3 13 -1. + <_> + 11 0 1 13 3. + <_> + + <_> + 7 0 3 13 -1. + <_> + 8 0 1 13 3. + <_> + + <_> + 15 7 5 6 -1. + <_> + 15 10 5 3 2. + <_> + + <_> + 6 15 7 4 -1. + <_> + 6 17 7 2 2. + <_> + + <_> + 11 10 4 8 -1. + <_> + 11 14 4 4 2. + <_> + + <_> + 0 7 5 6 -1. + <_> + 0 10 5 3 2. + <_> + + <_> + 14 0 6 6 -1. + <_> + 14 0 3 6 2. + <_> + + <_> + 2 0 14 3 -1. + <_> + 2 1 14 1 3. + <_> + + <_> + 4 4 13 2 -1. + <_> + 4 5 13 1 2. + <_> + + <_> + 0 18 20 2 -1. + <_> + 0 19 20 1 2. + <_> + + <_> + 14 0 6 5 -1. + <_> + 14 0 3 5 2. + <_> + + <_> + 5 0 6 7 -1. + <_> + 7 0 2 7 3. + <_> + + <_> + 14 0 6 6 -1. + <_> + 14 0 3 6 2. + <_> + + <_> + 0 0 6 5 -1. + <_> + 3 0 3 5 2. + <_> + + <_> + 6 0 8 14 -1. + <_> + 10 0 4 7 2. + <_> + 6 7 4 7 2. + <_> + + <_> + 0 2 6 12 -1. + <_> + 2 2 2 12 3. + <_> + + <_> + 6 12 9 6 -1. + <_> + 9 12 3 6 3. + <_> + + <_> + 2 0 7 4 -1. + <_> + 2 2 7 2 2. + <_> + + <_> + 8 5 4 7 -1. + <_> + 8 5 2 7 2. + <_> + + <_> + 5 0 6 10 -1. + <_> + 5 0 3 5 2. + <_> + 8 5 3 5 2. + <_> + + <_> + 18 7 2 13 -1. + <_> + 18 7 1 13 2. + <_> + + <_> + 0 2 5 9 -1. + <_> + 0 5 5 3 3. + <_> + + <_> + 18 6 2 13 -1. + <_> + 18 6 1 13 2. + <_> + + <_> + 0 6 2 13 -1. + <_> + 1 6 1 13 2. + <_> + + <_> + 16 7 4 13 -1. + <_> + 16 7 2 13 2. + <_> + + <_> + 6 5 7 6 -1. + <_> + 6 7 7 2 3. + <_> + + <_> + 6 11 10 6 -1. + <_> + 11 11 5 3 2. + <_> + 6 14 5 3 2. + <_> + + <_> + 5 9 6 5 -1. + <_> + 8 9 3 5 2. + <_> + + <_> + 10 3 4 15 -1. + <_> + 10 3 2 15 2. + <_> + + <_> + 6 3 4 15 -1. + <_> + 8 3 2 15 2. + <_> + + <_> + 6 7 13 2 -1. + <_> + 6 8 13 1 2. + <_> + + <_> + 2 15 16 4 -1. + <_> + 2 15 8 2 2. + <_> + 10 17 8 2 2. + <_> + + <_> + 17 0 3 13 -1. + <_> + 18 0 1 13 3. + <_> + + <_> + 0 7 4 13 -1. + <_> + 2 7 2 13 2. + <_> + + <_> + 17 0 3 13 -1. + <_> + 18 0 1 13 3. + <_> + + <_> + 5 11 10 9 -1. + <_> + 5 14 10 3 3. + <_> + + <_> + 17 0 3 13 -1. + <_> + 18 0 1 13 3. + <_> + + <_> + 0 0 3 13 -1. + <_> + 1 0 1 13 3. + <_> + + <_> + 9 6 4 12 -1. + <_> + 9 12 4 6 2. + <_> + + <_> + 0 3 2 16 -1. + <_> + 0 11 2 8 2. + <_> + + <_> + 0 15 20 4 -1. + <_> + 10 15 10 2 2. + <_> + 0 17 10 2 2. + <_> + + <_> + 0 15 9 4 -1. + <_> + 0 17 9 2 2. + <_> + + <_> + 9 14 10 6 -1. + <_> + 14 14 5 3 2. + <_> + 9 17 5 3 2. + <_> + + <_> + 0 14 13 3 -1. + <_> + 0 15 13 1 3. + <_> + + <_> + 4 15 13 3 -1. + <_> + 4 16 13 1 3. + <_> + + <_> + 0 0 18 4 -1. + <_> + 0 0 9 2 2. + <_> + 9 2 9 2 2. + <_> + + <_> + 6 5 8 15 -1. + <_> + 6 10 8 5 3. + <_> + + <_> + 0 0 6 7 -1. + <_> + 2 0 2 7 3. + <_> + + <_> + 14 1 6 12 -1. + <_> + 16 1 2 12 3. + <_> + + <_> + 3 0 6 7 -1. + <_> + 5 0 2 7 3. + <_> + + <_> + 18 1 2 13 -1. + <_> + 18 1 1 13 2. + <_> + + <_> + 0 1 10 19 -1. + <_> + 5 1 5 19 2. + <_> + + <_> + 14 2 4 10 -1. + <_> + 14 2 2 10 2. + <_> + + <_> + 0 3 4 16 -1. + <_> + 0 3 2 8 2. + <_> + 2 11 2 8 2. + <_> + + <_> + 6 0 10 6 -1. + <_> + 11 0 5 3 2. + <_> + 6 3 5 3 2. + <_> + + <_> + 1 14 10 6 -1. + <_> + 1 14 5 3 2. + <_> + 6 17 5 3 2. + <_> + + <_> + 8 7 5 9 -1. + <_> + 8 10 5 3 3. + <_> + + <_> + 2 2 4 10 -1. + <_> + 4 2 2 10 2. + <_> + + <_> + 11 11 7 4 -1. + <_> + 11 13 7 2 2. + <_> + + <_> + 5 6 10 12 -1. + <_> + 5 6 5 6 2. + <_> + 10 12 5 6 2. + <_> + + <_> + 9 2 4 12 -1. + <_> + 9 6 4 4 3. + <_> + + <_> + 2 0 15 6 -1. + <_> + 2 3 15 3 2. + <_> + + <_> + 6 0 13 8 -1. + <_> + 6 4 13 4 2. + <_> + + <_> + 1 0 13 8 -1. + <_> + 1 4 13 4 2. + <_> + + <_> + 11 4 2 14 -1. + <_> + 11 11 2 7 2. + <_> + + <_> + 0 1 20 3 -1. + <_> + 0 2 20 1 3. + <_> + + <_> + 8 5 6 10 -1. + <_> + 11 5 3 5 2. + <_> + 8 10 3 5 2. + <_> + + <_> + 4 8 10 12 -1. + <_> + 9 8 5 12 2. + <_> + + <_> + 8 5 6 5 -1. + <_> + 8 5 3 5 2. + <_> + + <_> + 6 5 6 5 -1. + <_> + 9 5 3 5 2. + <_> + + <_> + 13 0 6 7 -1. + <_> + 15 0 2 7 3. + <_> + + <_> + 1 0 6 7 -1. + <_> + 3 0 2 7 3. + <_> + + <_> + 12 14 7 6 -1. + <_> + 12 16 7 2 3. + <_> + + <_> + 0 17 18 3 -1. + <_> + 6 17 6 3 3. + <_> + + <_> + 6 7 12 8 -1. + <_> + 10 7 4 8 3. + <_> + + <_> + 0 14 18 5 -1. + <_> + 6 14 6 5 3. + <_> + + <_> + 0 13 20 4 -1. + <_> + 10 13 10 2 2. + <_> + 0 15 10 2 2. + <_> + + <_> + 0 13 13 3 -1. + <_> + 0 14 13 1 3. + <_> + + <_> + 11 11 7 4 -1. + <_> + 11 13 7 2 2. + <_> + + <_> + 2 12 7 6 -1. + <_> + 2 14 7 2 3. + <_> + + <_> + 7 14 13 3 -1. + <_> + 7 15 13 1 3. + <_> + + <_> + 0 8 8 6 -1. + <_> + 0 10 8 2 3. + <_> + + <_> + 4 8 15 2 -1. + <_> + 4 9 15 1 2. + <_> + + <_> + 0 9 6 5 -1. + <_> + 3 9 3 5 2. + <_> + + <_> + 13 9 6 5 -1. + <_> + 13 9 3 5 2. + <_> + + <_> + 1 9 6 5 -1. + <_> + 4 9 3 5 2. + <_> + + <_> + 13 0 4 14 -1. + <_> + 15 0 2 7 2. + <_> + 13 7 2 7 2. + <_> + + <_> + 0 0 14 19 -1. + <_> + 7 0 7 19 2. + <_> + + <_> + 13 0 4 14 -1. + <_> + 15 0 2 7 2. + <_> + 13 7 2 7 2. + <_> + + <_> + 3 0 4 14 -1. + <_> + 3 0 2 7 2. + <_> + 5 7 2 7 2. + <_> + + <_> + 13 4 7 6 -1. + <_> + 13 6 7 2 3. + <_> + + <_> + 2 4 14 3 -1. + <_> + 2 5 14 1 3. + <_> + + <_> + 12 0 2 15 -1. + <_> + 12 0 1 15 2. + <_> + + <_> + 7 6 4 12 -1. + <_> + 7 12 4 6 2. + <_> + + <_> + 6 2 14 18 -1. + <_> + 13 2 7 9 2. + <_> + 6 11 7 9 2. + <_> + + <_> + 5 9 9 6 -1. + <_> + 5 12 9 3 2. + <_> + + <_> + 0 1 20 18 -1. + <_> + 10 1 10 9 2. + <_> + 0 10 10 9 2. + <_> + + <_> + 4 10 7 4 -1. + <_> + 4 12 7 2 2. + <_> + + <_> + 0 0 20 3 -1. + <_> + 0 1 20 1 3. + <_> + + <_> + 1 0 14 12 -1. + <_> + 1 4 14 4 3. + <_> + + <_> + 9 0 6 8 -1. + <_> + 9 0 3 8 2. + <_> + + <_> + 4 2 12 5 -1. + <_> + 8 2 4 5 3. + <_> + + <_> + 12 0 2 15 -1. + <_> + 12 0 1 15 2. + <_> + + <_> + 4 0 8 10 -1. + <_> + 8 0 4 10 2. + <_> + + <_> + 9 0 6 7 -1. + <_> + 11 0 2 7 3. + <_> + + <_> + 5 0 6 7 -1. + <_> + 7 0 2 7 3. + <_> + + <_> + 9 2 2 13 -1. + <_> + 9 2 1 13 2. + <_> + + <_> + 6 6 6 7 -1. + <_> + 8 6 2 7 3. + <_> + + <_> + 8 0 6 7 -1. + <_> + 10 0 2 7 3. + <_> + + <_> + 0 4 18 10 -1. + <_> + 0 4 9 5 2. + <_> + 9 9 9 5 2. + <_> + + <_> + 12 9 7 6 -1. + <_> + 12 11 7 2 3. + <_> + + <_> + 1 9 7 6 -1. + <_> + 1 11 7 2 3. + <_> + + <_> + 4 3 16 6 -1. + <_> + 12 3 8 3 2. + <_> + 4 6 8 3 2. + <_> + + <_> + 3 4 5 9 -1. + <_> + 3 7 5 3 3. + <_> + + <_> + 8 4 12 5 -1. + <_> + 12 4 4 5 3. + <_> + + <_> + 3 9 8 4 -1. + <_> + 3 11 8 2 2. + <_> + + <_> + 11 0 2 15 -1. + <_> + 11 0 1 15 2. + <_> + + <_> + 7 0 2 15 -1. + <_> + 8 0 1 15 2. + <_> + + <_> + 9 5 6 7 -1. + <_> + 11 5 2 7 3. + <_> + + <_> + 8 3 4 8 -1. + <_> + 10 3 2 8 2. + <_> + + <_> + 9 13 6 7 -1. + <_> + 11 13 2 7 3. + <_> + + <_> + 4 14 9 5 -1. + <_> + 7 14 3 5 3. + <_> + + <_> + 15 3 4 17 -1. + <_> + 15 3 2 17 2. + <_> + + <_> + 1 6 4 13 -1. + <_> + 3 6 2 13 2. + <_> + + <_> + 11 12 4 7 -1. + <_> + 11 12 2 7 2. + <_> + + <_> + 0 1 6 7 -1. + <_> + 2 1 2 7 3. + <_> + + <_> + 9 12 6 7 -1. + <_> + 11 12 2 7 3. + <_> + + <_> + 5 12 6 7 -1. + <_> + 7 12 2 7 3. + <_> + + <_> + 7 7 6 8 -1. + <_> + 9 7 2 8 3. + <_> + + <_> + 0 14 8 6 -1. + <_> + 0 16 8 2 3. + <_> + + <_> + 13 14 7 6 -1. + <_> + 13 16 7 2 3. + <_> + + <_> + 0 16 14 4 -1. + <_> + 0 16 7 2 2. + <_> + 7 18 7 2 2. + <_> + + <_> + 5 13 13 3 -1. + <_> + 5 14 13 1 3. + <_> + + <_> + 2 9 14 3 -1. + <_> + 2 10 14 1 3. + <_> + + <_> + 8 7 7 4 -1. + <_> + 8 9 7 2 2. + <_> + + <_> + 2 14 10 6 -1. + <_> + 2 14 5 3 2. + <_> + 7 17 5 3 2. + <_> + + <_> + 13 12 5 6 -1. + <_> + 13 15 5 3 2. + <_> + + <_> + 0 0 6 6 -1. + <_> + 3 0 3 6 2. + <_> + + <_> + 4 5 16 3 -1. + <_> + 4 5 8 3 2. + <_> + + <_> + 5 3 4 14 -1. + <_> + 5 10 4 7 2. + <_> + + <_> + 4 13 15 5 -1. + <_> + 9 13 5 5 3. + <_> + + <_> + 0 3 14 2 -1. + <_> + 0 4 14 1 2. + <_> + + <_> + 4 13 15 5 -1. + <_> + 9 13 5 5 3. + <_> + + <_> + 1 13 15 5 -1. + <_> + 6 13 5 5 3. + <_> + + <_> + 12 0 8 6 -1. + <_> + 12 2 8 2 3. + <_> + + <_> + 3 10 6 5 -1. + <_> + 6 10 3 5 2. + <_> + + <_> + 4 7 14 8 -1. + <_> + 11 7 7 4 2. + <_> + 4 11 7 4 2. + <_> + + <_> + 2 7 14 8 -1. + <_> + 2 7 7 4 2. + <_> + 9 11 7 4 2. + <_> + + <_> + 11 0 2 20 -1. + <_> + 11 0 1 20 2. + <_> + + <_> + 7 0 2 20 -1. + <_> + 8 0 1 20 2. + <_> + + <_> + 10 5 6 8 -1. + <_> + 12 5 2 8 3. + <_> + + <_> + 8 2 3 13 -1. + <_> + 9 2 1 13 3. + <_> + + <_> + 3 2 14 4 -1. + <_> + 10 2 7 2 2. + <_> + 3 4 7 2 2. + <_> + + <_> + 7 5 6 7 -1. + <_> + 9 5 2 7 3. + <_> + + <_> + 8 4 9 16 -1. + <_> + 11 4 3 16 3. + <_> + + <_> + 4 5 6 8 -1. + <_> + 6 5 2 8 3. + <_> + + <_> + 7 10 6 10 -1. + <_> + 10 10 3 5 2. + <_> + 7 15 3 5 2. + <_> + + <_> + 5 11 5 6 -1. + <_> + 5 14 5 3 2. + <_> + + <_> + 4 8 13 8 -1. + <_> + 4 12 13 4 2. + <_> + + <_> + 0 9 10 6 -1. + <_> + 0 9 5 3 2. + <_> + 5 12 5 3 2. + <_> + + <_> + 13 11 7 6 -1. + <_> + 13 13 7 2 3. + <_> + + <_> + 4 0 5 8 -1. + <_> + 4 4 5 4 2. + <_> + + <_> + 8 1 4 10 -1. + <_> + 8 6 4 5 2. + <_> + + <_> + 6 3 7 10 -1. + <_> + 6 8 7 5 2. + <_> + + <_> + 6 12 13 3 -1. + <_> + 6 13 13 1 3. + <_> + + <_> + 2 13 13 3 -1. + <_> + 2 14 13 1 3. + <_> + + <_> + 12 11 7 4 -1. + <_> + 12 13 7 2 2. + <_> + + <_> + 1 11 7 4 -1. + <_> + 1 13 7 2 2. + <_> + + <_> + 9 12 9 4 -1. + <_> + 9 14 9 2 2. + <_> + + <_> + 2 12 16 4 -1. + <_> + 2 12 8 2 2. + <_> + 10 14 8 2 2. + <_> + + <_> + 10 14 10 6 -1. + <_> + 15 14 5 3 2. + <_> + 10 17 5 3 2. + <_> + + <_> + 4 1 8 8 -1. + <_> + 4 1 4 4 2. + <_> + 8 5 4 4 2. + <_> + + <_> + 2 12 18 7 -1. + <_> + 8 12 6 7 3. + <_> + + <_> + 3 13 12 6 -1. + <_> + 3 13 6 3 2. + <_> + 9 16 6 3 2. + <_> + + <_> + 4 12 13 4 -1. + <_> + 4 14 13 2 2. + <_> + + <_> + 6 0 2 15 -1. + <_> + 7 0 1 15 2. + <_> + + <_> + 4 2 16 18 -1. + <_> + 12 2 8 9 2. + <_> + 4 11 8 9 2. + <_> + + <_> + 1 16 18 4 -1. + <_> + 7 16 6 4 3. + <_> + + <_> + 7 14 12 6 -1. + <_> + 13 14 6 3 2. + <_> + 7 17 6 3 2. + <_> + + <_> + 4 0 12 9 -1. + <_> + 8 0 4 9 3. + <_> + + <_> + 7 0 6 7 -1. + <_> + 9 0 2 7 3. + <_> + + <_> + 4 9 6 6 -1. + <_> + 7 9 3 6 2. + <_> + + <_> + 7 12 12 8 -1. + <_> + 13 12 6 4 2. + <_> + 7 16 6 4 2. + <_> + + <_> + 1 12 12 8 -1. + <_> + 1 12 6 4 2. + <_> + 7 16 6 4 2. + <_> + + <_> + 0 10 20 9 -1. + <_> + 0 13 20 3 3. + <_> + + <_> + 4 5 10 6 -1. + <_> + 4 5 5 3 2. + <_> + 9 8 5 3 2. + <_> + + <_> + 13 3 7 6 -1. + <_> + 13 5 7 2 3. + <_> + + <_> + 8 1 4 14 -1. + <_> + 8 1 2 7 2. + <_> + 10 8 2 7 2. + <_> + + <_> + 12 8 5 6 -1. + <_> + 12 11 5 3 2. + <_> + + <_> + 3 8 5 6 -1. + <_> + 3 11 5 3 2. + <_> + + <_> + 8 0 6 7 -1. + <_> + 10 0 2 7 3. + <_> + + <_> + 6 0 6 7 -1. + <_> + 8 0 2 7 3. + <_> + + <_> + 2 0 18 4 -1. + <_> + 8 0 6 4 3. + <_> + + <_> + 6 5 3 14 -1. + <_> + 6 12 3 7 2. + <_> + + <_> + 5 17 15 3 -1. + <_> + 10 17 5 3 3. + <_> + + <_> + 3 0 6 7 -1. + <_> + 6 0 3 7 2. + <_> + + <_> + 8 3 12 17 -1. + <_> + 8 3 6 17 2. + <_> + + <_> + 0 2 16 12 -1. + <_> + 8 2 8 12 2. + <_> + + <_> + 7 6 6 12 -1. + <_> + 7 12 6 6 2. + <_> + + <_> + 8 8 4 8 -1. + <_> + 8 12 4 4 2. + <_> + + <_> + 8 7 12 10 -1. + <_> + 14 7 6 5 2. + <_> + 8 12 6 5 2. + <_> + + <_> + 4 1 12 5 -1. + <_> + 10 1 6 5 2. + <_> + + <_> + 7 2 8 8 -1. + <_> + 11 2 4 4 2. + <_> + 7 6 4 4 2. + <_> + + <_> + 5 2 8 8 -1. + <_> + 5 2 4 4 2. + <_> + 9 6 4 4 2. + <_> + + <_> + 3 14 14 6 -1. + <_> + 3 17 14 3 2. + <_> + + <_> + 3 3 5 12 -1. + <_> + 3 7 5 4 3. + <_> + + <_> + 15 4 5 6 -1. + <_> + 15 7 5 3 2. + <_> + + <_> + 0 4 7 6 -1. + <_> + 0 6 7 2 3. + <_> + + <_> + 15 4 5 9 -1. + <_> + 15 7 5 3 3. + <_> + + <_> + 8 6 4 14 -1. + <_> + 8 6 2 7 2. + <_> + 10 13 2 7 2. + <_> + + <_> + 8 6 6 7 -1. + <_> + 10 6 2 7 3. + <_> + + <_> + 5 0 8 10 -1. + <_> + 5 0 4 5 2. + <_> + 9 5 4 5 2. + <_> + + <_> + 9 12 6 7 -1. + <_> + 11 12 2 7 3. + <_> + + <_> + 5 12 6 7 -1. + <_> + 7 12 2 7 3. + <_> + + <_> + 13 9 7 6 -1. + <_> + 13 11 7 2 3. + <_> + + <_> + 1 1 16 6 -1. + <_> + 1 3 16 2 3. + <_> + + <_> + 2 1 17 6 -1. + <_> + 2 3 17 2 3. + <_> + + <_> + 4 4 2 16 -1. + <_> + 4 12 2 8 2. + <_> + + <_> + 7 6 10 14 -1. + <_> + 12 6 5 7 2. + <_> + 7 13 5 7 2. + <_> + + <_> + 5 5 6 7 -1. + <_> + 7 5 2 7 3. + <_> + + <_> + 4 9 12 6 -1. + <_> + 10 9 6 3 2. + <_> + 4 12 6 3 2. + <_> + + <_> + 1 8 18 3 -1. + <_> + 7 8 6 3 3. + <_> + + <_> + 2 13 18 7 -1. + <_> + 8 13 6 7 3. + <_> + + <_> + 1 8 15 3 -1. + <_> + 6 8 5 3 3. + <_> + + <_> + 6 0 12 7 -1. + <_> + 10 0 4 7 3. + <_> + + <_> + 3 5 13 3 -1. + <_> + 3 6 13 1 3. + <_> + + <_> + 12 11 8 4 -1. + <_> + 12 13 8 2 2. + <_> + + <_> + 6 7 6 8 -1. + <_> + 6 11 6 4 2. + <_> + + <_> + 9 2 4 12 -1. + <_> + 9 6 4 4 3. + <_> + + <_> + 0 9 7 6 -1. + <_> + 0 11 7 2 3. + <_> + + <_> + 15 4 5 9 -1. + <_> + 15 7 5 3 3. + <_> + + <_> + 2 18 13 2 -1. + <_> + 2 19 13 1 2. + <_> + + <_> + 15 1 5 9 -1. + <_> + 15 4 5 3 3. + <_> + + <_> + 6 6 8 12 -1. + <_> + 6 10 8 4 3. + <_> + + <_> + 7 9 6 9 -1. + <_> + 7 12 6 3 3. + <_> + + <_> + 0 7 11 4 -1. + <_> + 0 9 11 2 2. + <_> + + <_> + 8 12 10 6 -1. + <_> + 13 12 5 3 2. + <_> + 8 15 5 3 2. + <_> + + <_> + 2 12 10 6 -1. + <_> + 2 12 5 3 2. + <_> + 7 15 5 3 2. + <_> + + <_> + 12 14 8 6 -1. + <_> + 12 16 8 2 3. + <_> + + <_> + 0 14 8 6 -1. + <_> + 0 16 8 2 3. + <_> + + <_> + 18 2 2 13 -1. + <_> + 18 2 1 13 2. + <_> + + <_> + 4 5 8 8 -1. + <_> + 4 5 4 4 2. + <_> + 8 9 4 4 2. + <_> + + <_> + 18 2 2 13 -1. + <_> + 18 2 1 13 2. + <_> + + <_> + 7 6 4 8 -1. + <_> + 7 10 4 4 2. + <_> + + <_> + 9 8 11 4 -1. + <_> + 9 10 11 2 2. + <_> + + <_> + 6 6 5 10 -1. + <_> + 6 11 5 5 2. + <_> + + <_> + 4 7 14 6 -1. + <_> + 4 9 14 2 3. + <_> + + <_> + 4 4 12 8 -1. + <_> + 4 4 6 4 2. + <_> + 10 8 6 4 2. + <_> + + <_> + 5 5 12 5 -1. + <_> + 5 5 6 5 2. + <_> + + <_> + 1 3 15 12 -1. + <_> + 6 3 5 12 3. + <_> + + <_> + 13 3 6 17 -1. + <_> + 13 3 3 17 2. + <_> + + <_> + 1 3 6 17 -1. + <_> + 4 3 3 17 2. + <_> + + <_> + 14 1 6 9 -1. + <_> + 14 4 6 3 3. + <_> + + <_> + 4 0 8 6 -1. + <_> + 4 3 8 3 2. + <_> + + <_> + 5 4 15 3 -1. + <_> + 5 5 15 1 3. + <_> + + <_> + 0 5 8 4 -1. + <_> + 0 7 8 2 2. + <_> + + <_> + 18 2 2 13 -1. + <_> + 18 2 1 13 2. + <_> + + <_> + 0 2 2 13 -1. + <_> + 1 2 1 13 2. + <_> + + <_> + 18 7 2 13 -1. + <_> + 18 7 1 13 2. + <_> + + <_> + 0 7 2 13 -1. + <_> + 1 7 1 13 2. + <_> + + <_> + 15 1 5 9 -1. + <_> + 15 4 5 3 3. + <_> + + <_> + 0 1 5 9 -1. + <_> + 0 4 5 3 3. + <_> + + <_> + 4 8 13 2 -1. + <_> + 4 9 13 1 2. + <_> + + <_> + 2 12 16 4 -1. + <_> + 2 14 16 2 2. + <_> + + <_> + 6 12 13 3 -1. + <_> + 6 13 13 1 3. + <_> + + <_> + 1 12 13 3 -1. + <_> + 1 13 13 1 3. + <_> + + <_> + 6 6 10 3 -1. + <_> + 6 6 5 3 2. + <_> + + <_> + 4 6 10 3 -1. + <_> + 9 6 5 3 2. + <_> + + <_> + 6 2 8 6 -1. + <_> + 6 4 8 2 3. + <_> + + <_> + 6 5 7 4 -1. + <_> + 6 7 7 2 2. + <_> + + <_> + 9 5 10 9 -1. + <_> + 9 8 10 3 3. + <_> + + <_> + 0 10 18 4 -1. + <_> + 0 10 9 2 2. + <_> + 9 12 9 2 2. + <_> + + <_> + 8 7 6 9 -1. + <_> + 10 7 2 9 3. + <_> + + <_> + 6 4 4 7 -1. + <_> + 8 4 2 7 2. + <_> + + <_> + 9 6 9 10 -1. + <_> + 12 6 3 10 3. + <_> + + <_> + 0 0 20 3 -1. + <_> + 0 1 20 1 3. + <_> + + <_> + 10 14 10 6 -1. + <_> + 15 14 5 3 2. + <_> + 10 17 5 3 2. + <_> + + <_> + 0 6 5 12 -1. + <_> + 0 10 5 4 3. + <_> + + <_> + 9 6 9 10 -1. + <_> + 12 6 3 10 3. + <_> + + <_> + 0 0 12 20 -1. + <_> + 6 0 6 20 2. + <_> + + <_> + 6 13 10 7 -1. + <_> + 6 13 5 7 2. + <_> + + <_> + 0 2 6 17 -1. + <_> + 3 2 3 17 2. + <_> + + <_> + 10 14 9 5 -1. + <_> + 13 14 3 5 3. + <_> + + <_> + 1 14 9 5 -1. + <_> + 4 14 3 5 3. + <_> + + <_> + 7 13 7 6 -1. + <_> + 7 15 7 2 3. + <_> + + <_> + 1 14 7 6 -1. + <_> + 1 16 7 2 3. + <_> + + <_> + 12 10 8 6 -1. + <_> + 12 12 8 2 3. + <_> + + <_> + 2 6 9 9 -1. + <_> + 5 6 3 9 3. + <_> + + <_> + 12 10 7 6 -1. + <_> + 12 12 7 2 3. + <_> + + <_> + 3 2 4 12 -1. + <_> + 5 2 2 12 2. + <_> + + <_> + 9 1 7 15 -1. + <_> + 9 6 7 5 3. + <_> + + <_> + 6 10 4 7 -1. + <_> + 8 10 2 7 2. + <_> + + <_> + 5 0 10 20 -1. + <_> + 10 0 5 10 2. + <_> + 5 10 5 10 2. + <_> + + <_> + 7 10 6 10 -1. + <_> + 9 10 2 10 3. + <_> + + <_> + 12 7 7 4 -1. + <_> + 12 9 7 2 2. + <_> + + <_> + 2 7 16 4 -1. + <_> + 2 7 8 2 2. + <_> + 10 9 8 2 2. + <_> + + <_> + 5 10 12 10 -1. + <_> + 5 10 6 10 2. + <_> + + <_> + 6 1 2 16 -1. + <_> + 6 9 2 8 2. + <_> + + <_> + 6 2 12 10 -1. + <_> + 6 7 12 5 2. + <_> + + <_> + 2 4 14 6 -1. + <_> + 2 4 7 3 2. + <_> + 9 7 7 3 2. + <_> + + <_> + 5 0 11 12 -1. + <_> + 5 4 11 4 3. + <_> + + <_> + 7 1 6 12 -1. + <_> + 7 5 6 4 3. + <_> + + <_> + 9 8 11 4 -1. + <_> + 9 10 11 2 2. + <_> + + <_> + 0 8 11 4 -1. + <_> + 0 10 11 2 2. + <_> + + <_> + 1 8 19 6 -1. + <_> + 1 11 19 3 2. + <_> + + <_> + 7 0 6 8 -1. + <_> + 7 4 6 4 2. + <_> + + <_> + 5 3 15 2 -1. + <_> + 5 4 15 1 2. + <_> + + <_> + 2 7 14 6 -1. + <_> + 2 9 14 2 3. + <_> + + <_> + 3 0 17 6 -1. + <_> + 3 2 17 2 3. + <_> + + <_> + 0 0 17 6 -1. + <_> + 0 2 17 2 3. + <_> + + <_> + 13 2 7 4 -1. + <_> + 13 4 7 2 2. + <_> + + <_> + 0 2 7 4 -1. + <_> + 0 4 7 2 2. + <_> + + <_> + 8 1 12 10 -1. + <_> + 14 1 6 5 2. + <_> + 8 6 6 5 2. + <_> + + <_> + 2 1 4 8 -1. + <_> + 2 5 4 4 2. + <_> + + <_> + 5 1 11 10 -1. + <_> + 5 6 11 5 2. + <_> + + <_> + 3 9 10 6 -1. + <_> + 3 9 5 3 2. + <_> + 8 12 5 3 2. + <_> + + <_> + 12 7 7 4 -1. + <_> + 12 9 7 2 2. + <_> + + <_> + 2 7 12 8 -1. + <_> + 6 7 4 8 3. + <_> + + <_> + 10 10 8 4 -1. + <_> + 10 10 4 4 2. + <_> + + <_> + 2 10 8 4 -1. + <_> + 6 10 4 4 2. + <_> + + <_> + 3 10 16 3 -1. + <_> + 3 10 8 3 2. + <_> + + <_> + 1 11 6 5 -1. + <_> + 4 11 3 5 2. + <_> + + <_> + 10 7 9 9 -1. + <_> + 13 7 3 9 3. + <_> + + <_> + 1 7 9 9 -1. + <_> + 4 7 3 9 3. + <_> + + <_> + 5 5 12 5 -1. + <_> + 5 5 6 5 2. + <_> + + <_> + 3 5 12 5 -1. + <_> + 9 5 6 5 2. + <_> + + <_> + 2 3 16 2 -1. + <_> + 2 3 8 2 2. + <_> + + <_> + 2 8 7 6 -1. + <_> + 2 10 7 2 3. + <_> + + <_> + 7 8 9 6 -1. + <_> + 7 10 9 2 3. + <_> + + <_> + 3 0 3 15 -1. + <_> + 4 0 1 15 3. + <_> + + <_> + 3 10 16 3 -1. + <_> + 3 10 8 3 2. + <_> + + <_> + 1 10 16 3 -1. + <_> + 9 10 8 3 2. + <_> + + <_> + 12 0 8 19 -1. + <_> + 12 0 4 19 2. + <_> + + <_> + 0 0 8 19 -1. + <_> + 4 0 4 19 2. + <_> + + <_> + 6 14 14 3 -1. + <_> + 6 15 14 1 3. + <_> + + <_> + 0 14 13 3 -1. + <_> + 0 15 13 1 3. + <_> + + <_> + 6 14 14 3 -1. + <_> + 6 15 14 1 3. + <_> + + <_> + 0 12 16 4 -1. + <_> + 0 12 8 2 2. + <_> + 8 14 8 2 2. + <_> + + <_> + 7 14 12 6 -1. + <_> + 13 14 6 3 2. + <_> + 7 17 6 3 2. + <_> + + <_> + 1 14 12 6 -1. + <_> + 1 14 6 3 2. + <_> + 7 17 6 3 2. + <_> + + <_> + 3 3 14 14 -1. + <_> + 10 3 7 7 2. + <_> + 3 10 7 7 2. + <_> + + <_> + 3 6 6 12 -1. + <_> + 5 6 2 12 3. + <_> + + <_> + 5 12 12 6 -1. + <_> + 9 12 4 6 3. + <_> + + <_> + 1 8 14 6 -1. + <_> + 1 8 7 3 2. + <_> + 8 11 7 3 2. + <_> + + <_> + 8 7 12 10 -1. + <_> + 14 7 6 5 2. + <_> + 8 12 6 5 2. + <_> + + <_> + 0 7 12 10 -1. + <_> + 0 7 6 5 2. + <_> + 6 12 6 5 2. + <_> + + <_> + 9 2 6 18 -1. + <_> + 12 2 3 9 2. + <_> + 9 11 3 9 2. + <_> + + <_> + 1 10 8 10 -1. + <_> + 1 10 4 5 2. + <_> + 5 15 4 5 2. + <_> + + <_> + 4 14 12 4 -1. + <_> + 4 16 12 2 2. + <_> + + <_> + 5 13 6 7 -1. + <_> + 7 13 2 7 3. + <_> + + <_> + 5 2 15 5 -1. + <_> + 10 2 5 5 3. + <_> + + <_> + 5 4 9 14 -1. + <_> + 5 11 9 7 2. + <_> + + <_> + 8 0 11 4 -1. + <_> + 8 2 11 2 2. + <_> + + <_> + 0 14 16 6 -1. + <_> + 0 16 16 2 3. + <_> + + <_> + 10 14 8 6 -1. + <_> + 10 16 8 2 3. + <_> + + <_> + 0 15 13 3 -1. + <_> + 0 16 13 1 3. + <_> + + <_> + 5 8 15 3 -1. + <_> + 5 9 15 1 3. + <_> + + <_> + 0 8 19 3 -1. + <_> + 0 9 19 1 3. + <_> + + <_> + 8 16 8 4 -1. + <_> + 8 16 4 4 2. + <_> + + <_> + 4 16 8 4 -1. + <_> + 8 16 4 4 2. + <_> + + <_> + 9 5 10 9 -1. + <_> + 9 8 10 3 3. + <_> + + <_> + 1 5 10 9 -1. + <_> + 1 8 10 3 3. + <_> + + <_> + 4 7 14 2 -1. + <_> + 4 7 7 2 2. + <_> + + <_> + 2 7 13 2 -1. + <_> + 2 8 13 1 2. + <_> + + <_> + 6 5 8 4 -1. + <_> + 6 7 8 2 2. + <_> + + <_> + 5 12 9 5 -1. + <_> + 8 12 3 5 3. + <_> + + <_> + 3 6 14 3 -1. + <_> + 3 7 14 1 3. + <_> + + <_> + 7 2 4 12 -1. + <_> + 7 6 4 4 3. + <_> + + <_> + 2 4 16 4 -1. + <_> + 2 6 16 2 2. + <_> + + <_> + 1 4 9 4 -1. + <_> + 1 6 9 2 2. + <_> + + <_> + 9 4 11 4 -1. + <_> + 9 6 11 2 2. + <_> + + <_> + 4 5 8 8 -1. + <_> + 4 5 4 4 2. + <_> + 8 9 4 4 2. + <_> + + <_> + 1 5 18 3 -1. + <_> + 7 5 6 3 3. + <_> + + <_> + 1 0 15 7 -1. + <_> + 6 0 5 7 3. + <_> + + <_> + 12 0 5 15 -1. + <_> + 12 5 5 5 3. + <_> + + <_> + 3 0 5 15 -1. + <_> + 3 5 5 5 3. + <_> + + <_> + 8 5 6 8 -1. + <_> + 10 5 2 8 3. + <_> + + <_> + 8 3 4 7 -1. + <_> + 10 3 2 7 2. + <_> + + <_> + 4 6 12 11 -1. + <_> + 8 6 4 11 3. + <_> + + <_> + 1 7 18 4 -1. + <_> + 1 9 18 2 2. + <_> + + <_> + 8 5 6 8 -1. + <_> + 10 5 2 8 3. + <_> + + <_> + 7 2 6 5 -1. + <_> + 10 2 3 5 2. + <_> + + <_> + 9 0 4 7 -1. + <_> + 9 0 2 7 2. + <_> + + <_> + 0 0 7 6 -1. + <_> + 0 2 7 2 3. + <_> + + <_> + 13 0 7 6 -1. + <_> + 13 2 7 2 3. + <_> + + <_> + 1 1 8 4 -1. + <_> + 5 1 4 4 2. + <_> + + <_> + 7 4 7 6 -1. + <_> + 7 6 7 2 3. + <_> + + <_> + 4 5 10 12 -1. + <_> + 4 5 5 6 2. + <_> + 9 11 5 6 2. + <_> + + <_> + 8 12 11 8 -1. + <_> + 8 16 11 4 2. + <_> + + <_> + 5 5 9 5 -1. + <_> + 8 5 3 5 3. + <_> + + <_> + 15 2 5 9 -1. + <_> + 15 5 5 3 3. + <_> + + <_> + 0 0 2 14 -1. + <_> + 1 0 1 14 2. + <_> + + <_> + 11 9 3 10 -1. + <_> + 11 14 3 5 2. + <_> + + <_> + 3 17 13 3 -1. + <_> + 3 18 13 1 3. + <_> + + <_> + 6 10 13 3 -1. + <_> + 6 11 13 1 3. + <_> + + <_> + 1 2 18 6 -1. + <_> + 1 2 9 3 2. + <_> + 10 5 9 3 2. + <_> + + <_> + 6 1 12 8 -1. + <_> + 12 1 6 4 2. + <_> + 6 5 6 4 2. + <_> + + <_> + 4 1 12 8 -1. + <_> + 4 1 6 4 2. + <_> + 10 5 6 4 2. + <_> + + <_> + 4 3 13 3 -1. + <_> + 4 4 13 1 3. + <_> + + <_> + 1 6 12 4 -1. + <_> + 5 6 4 4 3. + <_> + + <_> + 14 2 6 5 -1. + <_> + 14 2 3 5 2. + <_> + + <_> + 3 12 13 2 -1. + <_> + 3 13 13 1 2. + <_> + + <_> + 12 11 7 6 -1. + <_> + 12 13 7 2 3. + <_> + + <_> + 1 0 4 7 -1. + <_> + 3 0 2 7 2. + <_> + + <_> + 14 0 6 5 -1. + <_> + 14 0 3 5 2. + <_> + + <_> + 0 1 5 9 -1. + <_> + 0 4 5 3 3. + <_> + + <_> + 11 0 9 6 -1. + <_> + 14 0 3 6 3. + <_> + + <_> + 6 9 3 10 -1. + <_> + 6 14 3 5 2. + <_> + + <_> + 10 9 6 5 -1. + <_> + 10 9 3 5 2. + <_> + + <_> + 6 7 3 12 -1. + <_> + 6 13 3 6 2. + <_> + + <_> + 11 0 9 6 -1. + <_> + 14 0 3 6 3. + <_> + + <_> + 0 0 9 6 -1. + <_> + 3 0 3 6 3. + <_> + + <_> + 4 6 12 3 -1. + <_> + 4 6 6 3 2. + <_> + + <_> + 6 4 6 8 -1. + <_> + 8 4 2 8 3. + <_> + + <_> + 11 0 3 13 -1. + <_> + 12 0 1 13 3. + <_> + + <_> + 6 0 3 13 -1. + <_> + 7 0 1 13 3. + <_> + + <_> + 4 14 13 2 -1. + <_> + 4 15 13 1 2. + <_> + + <_> + 1 11 7 6 -1. + <_> + 1 13 7 2 3. + <_> + + <_> + 13 5 4 8 -1. + <_> + 13 9 4 4 2. + <_> + + <_> + 4 16 12 4 -1. + <_> + 8 16 4 4 3. + <_> + + <_> + 11 9 6 8 -1. + <_> + 11 9 3 8 2. + <_> + + <_> + 3 9 6 8 -1. + <_> + 6 9 3 8 2. + <_> + + <_> + 10 6 10 6 -1. + <_> + 15 6 5 3 2. + <_> + 10 9 5 3 2. + <_> + + <_> + 3 5 13 3 -1. + <_> + 3 6 13 1 3. + <_> + + <_> + 10 6 10 6 -1. + <_> + 15 6 5 3 2. + <_> + 10 9 5 3 2. + <_> + + <_> + 2 0 14 9 -1. + <_> + 2 3 14 3 3. + <_> + + <_> + 10 6 10 6 -1. + <_> + 15 6 5 3 2. + <_> + 10 9 5 3 2. + <_> + + <_> + 0 6 10 6 -1. + <_> + 0 6 5 3 2. + <_> + 5 9 5 3 2. + <_> + + <_> + 9 5 4 12 -1. + <_> + 9 11 4 6 2. + <_> + + <_> + 2 4 10 6 -1. + <_> + 2 4 5 3 2. + <_> + 7 7 5 3 2. + <_> + + <_> + 9 1 8 16 -1. + <_> + 13 1 4 8 2. + <_> + 9 9 4 8 2. + <_> + + <_> + 2 1 14 8 -1. + <_> + 2 5 14 4 2. + <_> + + <_> + 12 10 7 6 -1. + <_> + 12 12 7 2 3. + <_> + + <_> + 0 8 6 9 -1. + <_> + 3 8 3 9 2. + <_> + + <_> + 9 0 6 7 -1. + <_> + 11 0 2 7 3. + <_> + + <_> + 5 0 6 7 -1. + <_> + 7 0 2 7 3. + <_> + + <_> + 7 6 6 7 -1. + <_> + 9 6 2 7 3. + <_> + + <_> + 0 0 16 2 -1. + <_> + 0 1 16 1 2. + <_> + + <_> + 9 0 6 7 -1. + <_> + 11 0 2 7 3. + <_> + + <_> + 2 13 14 4 -1. + <_> + 2 13 7 2 2. + <_> + 9 15 7 2 2. + <_> + + <_> + 7 5 9 7 -1. + <_> + 10 5 3 7 3. + <_> + + <_> + 5 0 6 7 -1. + <_> + 7 0 2 7 3. + <_> + + <_> + 13 5 4 8 -1. + <_> + 13 9 4 4 2. + <_> + + <_> + 6 1 6 10 -1. + <_> + 6 6 6 5 2. + <_> + + <_> + 0 3 20 8 -1. + <_> + 0 7 20 4 2. + <_> + + <_> + 4 0 12 8 -1. + <_> + 10 0 6 8 2. + <_> + + <_> + 2 1 18 19 -1. + <_> + 8 1 6 19 3. + <_> + + <_> + 0 1 18 19 -1. + <_> + 6 1 6 19 3. + <_> + + <_> + 8 1 12 19 -1. + <_> + 8 1 6 19 2. + <_> + + <_> + 0 1 12 19 -1. + <_> + 6 1 6 19 2. + <_> + + <_> + 0 0 20 10 -1. + <_> + 10 0 10 5 2. + <_> + 0 5 10 5 2. + <_> + + <_> + 0 4 13 3 -1. + <_> + 0 5 13 1 3. + <_> + + <_> + 3 2 14 2 -1. + <_> + 3 3 14 1 2. + <_> + + <_> + 1 4 13 3 -1. + <_> + 1 5 13 1 3. + <_> + + <_> + 13 12 7 4 -1. + <_> + 13 14 7 2 2. + <_> + + <_> + 2 1 4 19 -1. + <_> + 4 1 2 19 2. + <_> + + <_> + 12 10 7 6 -1. + <_> + 12 12 7 2 3. + <_> + + <_> + 3 9 13 3 -1. + <_> + 3 10 13 1 3. + <_> + + <_> + 4 8 14 3 -1. + <_> + 4 9 14 1 3. + <_> + + <_> + 4 5 12 9 -1. + <_> + 4 8 12 3 3. + <_> + + <_> + 6 15 13 3 -1. + <_> + 6 16 13 1 3. + <_> + + <_> + 0 12 7 4 -1. + <_> + 0 14 7 2 2. + <_> + + <_> + 5 2 14 18 -1. + <_> + 12 2 7 9 2. + <_> + 5 11 7 9 2. + <_> + + <_> + 7 5 4 12 -1. + <_> + 7 11 4 6 2. + <_> + + <_> + 5 2 14 18 -1. + <_> + 12 2 7 9 2. + <_> + 5 11 7 9 2. + <_> + + <_> + 1 2 14 18 -1. + <_> + 1 2 7 9 2. + <_> + 8 11 7 9 2. + <_> + + <_> + 6 10 8 10 -1. + <_> + 10 10 4 5 2. + <_> + 6 15 4 5 2. + <_> + + <_> + 3 5 4 8 -1. + <_> + 3 9 4 4 2. + <_> + + <_> + 6 10 8 8 -1. + <_> + 10 10 4 4 2. + <_> + 6 14 4 4 2. + <_> + + <_> + 1 10 7 6 -1. + <_> + 1 12 7 2 3. + <_> + + <_> + 4 14 13 3 -1. + <_> + 4 15 13 1 3. + <_> + + <_> + 6 11 6 9 -1. + <_> + 8 11 2 9 3. + <_> + + <_> + 7 5 9 7 -1. + <_> + 10 5 3 7 3. + <_> + + <_> + 0 10 19 6 -1. + <_> + 0 13 19 3 2. + <_> + + <_> + 4 1 12 10 -1. + <_> + 4 6 12 5 2. + <_> + + <_> + 0 12 8 6 -1. + <_> + 0 14 8 2 3. + <_> + + <_> + 5 10 13 3 -1. + <_> + 5 11 13 1 3. + <_> + + <_> + 0 5 20 2 -1. + <_> + 0 6 20 1 2. + <_> + + <_> + 2 0 17 6 -1. + <_> + 2 2 17 2 3. + <_> + + <_> + 3 14 10 6 -1. + <_> + 3 14 5 3 2. + <_> + 8 17 5 3 2. + <_> + + <_> + 6 0 9 11 -1. + <_> + 9 0 3 11 3. + <_> + + <_> + 0 2 6 11 -1. + <_> + 2 2 2 11 3. + <_> + + <_> + 14 0 6 7 -1. + <_> + 16 0 2 7 3. + <_> + + <_> + 0 8 9 12 -1. + <_> + 3 8 3 12 3. + <_> + + <_> + 13 10 7 6 -1. + <_> + 13 12 7 2 3. + <_> + + <_> + 0 10 7 6 -1. + <_> + 0 12 7 2 3. + <_> + + <_> + 14 0 6 7 -1. + <_> + 16 0 2 7 3. + <_> + + <_> + 0 0 6 7 -1. + <_> + 2 0 2 7 3. + <_> + + <_> + 8 0 9 15 -1. + <_> + 11 0 3 15 3. + <_> + + <_> + 3 5 12 11 -1. + <_> + 7 5 4 11 3. + <_> + + <_> + 6 15 13 3 -1. + <_> + 6 16 13 1 3. + <_> + + <_> + 0 1 13 3 -1. + <_> + 0 2 13 1 3. + <_> + + <_> + 7 5 9 7 -1. + <_> + 10 5 3 7 3. + <_> + + <_> + 7 6 3 14 -1. + <_> + 8 6 1 14 3. + <_> + + <_> + 5 1 13 3 -1. + <_> + 5 2 13 1 3. + <_> + + <_> + 8 1 3 13 -1. + <_> + 9 1 1 13 3. + <_> + + <_> + 9 6 4 14 -1. + <_> + 11 6 2 7 2. + <_> + 9 13 2 7 2. + <_> + + <_> + 6 9 8 10 -1. + <_> + 6 9 4 5 2. + <_> + 10 14 4 5 2. + <_> + + <_> + 8 0 6 7 -1. + <_> + 10 0 2 7 3. + <_> + + <_> + 0 15 14 5 -1. + <_> + 7 15 7 5 2. + <_> + + <_> + 12 12 8 5 -1. + <_> + 12 12 4 5 2. + <_> + + <_> + 0 14 10 6 -1. + <_> + 0 16 10 2 3. + <_> + + <_> + 4 16 14 4 -1. + <_> + 4 18 14 2 2. + <_> + + <_> + 6 1 6 18 -1. + <_> + 8 1 2 18 3. + <_> + + <_> + 6 14 14 2 -1. + <_> + 6 15 14 1 2. + <_> + + <_> + 0 4 7 6 -1. + <_> + 0 6 7 2 3. + <_> + + <_> + 15 0 5 9 -1. + <_> + 15 3 5 3 3. + <_> + + <_> + 3 0 14 20 -1. + <_> + 10 0 7 20 2. + <_> + + <_> + 8 10 4 7 -1. + <_> + 8 10 2 7 2. + <_> + + <_> + 4 5 9 7 -1. + <_> + 7 5 3 7 3. + <_> + + <_> + 5 6 10 3 -1. + <_> + 5 6 5 3 2. + <_> + + <_> + 5 3 6 13 -1. + <_> + 8 3 3 13 2. + <_> + + <_> + 7 12 6 8 -1. + <_> + 7 12 3 8 2. + <_> + + <_> + 4 9 6 5 -1. + <_> + 7 9 3 5 2. + <_> + + <_> + 11 4 4 10 -1. + <_> + 11 4 2 10 2. + <_> + + <_> + 0 11 12 6 -1. + <_> + 4 11 4 6 3. + <_> + + <_> + 11 4 4 10 -1. + <_> + 11 4 2 10 2. + <_> + + <_> + 5 4 4 10 -1. + <_> + 7 4 2 10 2. + <_> + + <_> + 6 14 14 2 -1. + <_> + 6 15 14 1 2. + <_> + + <_> + 0 14 14 2 -1. + <_> + 0 15 14 1 2. + <_> + + <_> + 15 2 5 12 -1. + <_> + 15 6 5 4 3. + <_> + + <_> + 0 2 5 12 -1. + <_> + 0 6 5 4 3. + <_> + + <_> + 16 5 4 14 -1. + <_> + 16 12 4 7 2. + <_> + + <_> + 0 14 12 6 -1. + <_> + 0 14 6 3 2. + <_> + 6 17 6 3 2. + <_> + + <_> + 16 5 4 14 -1. + <_> + 16 12 4 7 2. + <_> + + <_> + 0 5 4 14 -1. + <_> + 0 12 4 7 2. + <_> + + <_> + 12 12 8 5 -1. + <_> + 12 12 4 5 2. + <_> + + <_> + 0 12 8 5 -1. + <_> + 4 12 4 5 2. + <_> + + <_> + 12 0 3 14 -1. + <_> + 13 0 1 14 3. + <_> + + <_> + 5 12 5 8 -1. + <_> + 5 16 5 4 2. + <_> + + <_> + 18 2 2 14 -1. + <_> + 18 9 2 7 2. + <_> + + <_> + 6 0 8 6 -1. + <_> + 6 3 8 3 2. + <_> + + <_> + 14 1 6 9 -1. + <_> + 14 4 6 3 3. + <_> + + <_> + 3 4 14 6 -1. + <_> + 3 4 7 3 2. + <_> + 10 7 7 3 2. + <_> + + <_> + 10 5 9 6 -1. + <_> + 10 7 9 2 3. + <_> + + <_> + 0 13 8 5 -1. + <_> + 4 13 4 5 2. + <_> + + <_> + 12 0 6 18 -1. + <_> + 15 0 3 9 2. + <_> + 12 9 3 9 2. + <_> + + <_> + 2 0 6 18 -1. + <_> + 2 0 3 9 2. + <_> + 5 9 3 9 2. + <_> + + <_> + 2 0 16 14 -1. + <_> + 10 0 8 7 2. + <_> + 2 7 8 7 2. + <_> + + <_> + 2 0 4 16 -1. + <_> + 2 0 2 8 2. + <_> + 4 8 2 8 2. + <_> + + <_> + 12 0 8 4 -1. + <_> + 12 0 4 4 2. + <_> + + <_> + 0 0 8 4 -1. + <_> + 4 0 4 4 2. + <_> + + <_> + 6 12 14 5 -1. + <_> + 6 12 7 5 2. + <_> + + <_> + 0 12 14 5 -1. + <_> + 7 12 7 5 2. + <_> + + <_> + 8 1 12 5 -1. + <_> + 12 1 4 5 3. + <_> + + <_> + 0 1 12 5 -1. + <_> + 4 1 4 5 3. + <_> + + <_> + 3 10 14 4 -1. + <_> + 10 10 7 2 2. + <_> + 3 12 7 2 2. + <_> + + <_> + 0 14 20 4 -1. + <_> + 0 14 10 2 2. + <_> + 10 16 10 2 2. + <_> + + <_> + 10 9 9 5 -1. + <_> + 13 9 3 5 3. + <_> + + <_> + 1 9 9 5 -1. + <_> + 4 9 3 5 3. + <_> + + <_> + 9 0 6 7 -1. + <_> + 11 0 2 7 3. + <_> + + <_> + 6 16 8 4 -1. + <_> + 10 16 4 4 2. + <_> + + <_> + 9 0 6 7 -1. + <_> + 11 0 2 7 3. + <_> + + <_> + 4 5 12 6 -1. + <_> + 4 5 6 3 2. + <_> + 10 8 6 3 2. + <_> + + <_> + 9 0 6 7 -1. + <_> + 11 0 2 7 3. + <_> + + <_> + 5 0 6 7 -1. + <_> + 7 0 2 7 3. + <_> + + <_> + 10 0 6 8 -1. + <_> + 12 0 2 8 3. + <_> + + <_> + 1 1 18 5 -1. + <_> + 7 1 6 5 3. + <_> + + <_> + 9 2 10 10 -1. + <_> + 14 2 5 5 2. + <_> + 9 7 5 5 2. + <_> + + <_> + 1 2 10 10 -1. + <_> + 1 2 5 5 2. + <_> + 6 7 5 5 2. + <_> + + <_> + 8 3 12 6 -1. + <_> + 14 3 6 3 2. + <_> + 8 6 6 3 2. + <_> + + <_> + 1 5 8 4 -1. + <_> + 5 5 4 4 2. + <_> + + <_> + 0 3 20 12 -1. + <_> + 10 3 10 6 2. + <_> + 0 9 10 6 2. + <_> + + <_> + 5 5 10 6 -1. + <_> + 5 5 5 3 2. + <_> + 10 8 5 3 2. + <_> + + <_> + 9 8 6 12 -1. + <_> + 12 8 3 6 2. + <_> + 9 14 3 6 2. + <_> + + <_> + 0 8 18 4 -1. + <_> + 0 8 9 2 2. + <_> + 9 10 9 2 2. + <_> + + <_> + 3 14 14 4 -1. + <_> + 10 14 7 2 2. + <_> + 3 16 7 2 2. + <_> + + <_> + 5 11 5 9 -1. + <_> + 5 14 5 3 3. + <_> + + <_> + 6 16 8 4 -1. + <_> + 6 18 8 2 2. + <_> + + <_> + 7 4 6 12 -1. + <_> + 7 10 6 6 2. + <_> + + <_> + 9 7 7 12 -1. + <_> + 9 11 7 4 3. + <_> + + <_> + 7 7 5 9 -1. + <_> + 7 10 5 3 3. + <_> + + <_> + 4 13 12 5 -1. + <_> + 8 13 4 5 3. + <_> + + <_> + 4 9 7 9 -1. + <_> + 4 12 7 3 3. + <_> + + <_> + 2 1 18 4 -1. + <_> + 8 1 6 4 3. + <_> + + <_> + 7 9 6 7 -1. + <_> + 9 9 2 7 3. + <_> + + <_> + 0 13 20 4 -1. + <_> + 0 15 20 2 2. + <_> + + <_> + 2 4 13 3 -1. + <_> + 2 5 13 1 3. + <_> + + <_> + 9 7 7 12 -1. + <_> + 9 11 7 4 3. + <_> + + <_> + 3 1 9 17 -1. + <_> + 6 1 3 17 3. + <_> + + <_> + 8 5 4 7 -1. + <_> + 8 5 2 7 2. + <_> + + <_> + 6 9 4 8 -1. + <_> + 8 9 2 8 2. + <_> + + <_> + 5 4 14 12 -1. + <_> + 12 4 7 6 2. + <_> + 5 10 7 6 2. + <_> + + <_> + 0 16 18 2 -1. + <_> + 9 16 9 2 2. + <_> + + <_> + 10 0 6 7 -1. + <_> + 12 0 2 7 3. + <_> + + <_> + 4 0 6 8 -1. + <_> + 6 0 2 8 3. + <_> + + <_> + 10 0 6 7 -1. + <_> + 12 0 2 7 3. + <_> + + <_> + 7 5 6 12 -1. + <_> + 7 5 3 6 2. + <_> + 10 11 3 6 2. + <_> + + <_> + 10 0 6 7 -1. + <_> + 12 0 2 7 3. + <_> + + <_> + 4 0 6 7 -1. + <_> + 6 0 2 7 3. + <_> + + <_> + 6 10 14 3 -1. + <_> + 6 11 14 1 3. + <_> + + <_> + 0 10 14 3 -1. + <_> + 0 11 14 1 3. + <_> + + <_> + 4 4 14 3 -1. + <_> + 4 5 14 1 3. + <_> + + <_> + 0 2 15 12 -1. + <_> + 5 2 5 12 3. + <_> + + <_> + 14 5 6 12 -1. + <_> + 14 5 3 12 2. + <_> + + <_> + 2 1 16 16 -1. + <_> + 2 9 16 8 2. + <_> + + <_> + 7 16 13 3 -1. + <_> + 7 17 13 1 3. + <_> + + <_> + 3 5 13 4 -1. + <_> + 3 7 13 2 2. + <_> + + <_> + 9 9 7 4 -1. + <_> + 9 11 7 2 2. + <_> + + <_> + 3 7 14 6 -1. + <_> + 3 9 14 2 3. + <_> + + <_> + 9 9 7 4 -1. + <_> + 9 11 7 2 2. + <_> + + <_> + 4 9 7 4 -1. + <_> + 4 11 7 2 2. + <_> + + <_> + 1 9 18 3 -1. + <_> + 1 10 18 1 3. + <_> + + <_> + 0 0 3 13 -1. + <_> + 1 0 1 13 3. + <_> + + <_> + 14 5 6 12 -1. + <_> + 14 5 3 12 2. + <_> + + <_> + 0 5 6 12 -1. + <_> + 3 5 3 12 2. + <_> + + <_> + 11 8 3 10 -1. + <_> + 11 13 3 5 2. + <_> + + <_> + 0 0 3 20 -1. + <_> + 1 0 1 20 3. + <_> + + <_> + 2 0 18 11 -1. + <_> + 8 0 6 11 3. + <_> + + <_> + 4 4 6 5 -1. + <_> + 7 4 3 5 2. + <_> + + <_> + 6 3 14 4 -1. + <_> + 13 3 7 2 2. + <_> + 6 5 7 2 2. + <_> + + <_> + 4 4 9 6 -1. + <_> + 7 4 3 6 3. + <_> + + <_> + 8 9 9 8 -1. + <_> + 11 9 3 8 3. + <_> + + <_> + 3 9 9 8 -1. + <_> + 6 9 3 8 3. + <_> + + <_> + 10 6 6 10 -1. + <_> + 12 6 2 10 3. + <_> + + <_> + 8 6 3 14 -1. + <_> + 9 6 1 14 3. + <_> + + <_> + 6 9 9 9 -1. + <_> + 9 9 3 9 3. + <_> + + <_> + 4 3 9 9 -1. + <_> + 7 3 3 9 3. + <_> + + <_> + 2 2 18 9 -1. + <_> + 8 2 6 9 3. + <_> + + <_> + 0 2 16 3 -1. + <_> + 0 3 16 1 3. + <_> + + <_> + 10 10 10 6 -1. + <_> + 10 10 5 6 2. + <_> + + <_> + 0 0 18 9 -1. + <_> + 6 0 6 9 3. + <_> + + <_> + 5 4 14 12 -1. + <_> + 12 4 7 6 2. + <_> + 5 10 7 6 2. + <_> + + <_> + 0 1 18 4 -1. + <_> + 6 1 6 4 3. + <_> + + <_> + 7 3 13 2 -1. + <_> + 7 4 13 1 2. + <_> + + <_> + 1 10 6 10 -1. + <_> + 1 10 3 5 2. + <_> + 4 15 3 5 2. + <_> + + <_> + 12 10 4 8 -1. + <_> + 12 14 4 4 2. + <_> + + <_> + 4 14 12 6 -1. + <_> + 4 14 6 3 2. + <_> + 10 17 6 3 2. + <_> + + <_> + 12 10 4 8 -1. + <_> + 12 14 4 4 2. + <_> + + <_> + 4 10 4 8 -1. + <_> + 4 14 4 4 2. + <_> + + <_> + 4 11 14 4 -1. + <_> + 11 11 7 2 2. + <_> + 4 13 7 2 2. + <_> + + <_> + 2 11 14 4 -1. + <_> + 2 11 7 2 2. + <_> + 9 13 7 2 2. + <_> + + <_> + 7 6 10 6 -1. + <_> + 12 6 5 3 2. + <_> + 7 9 5 3 2. + <_> + + <_> + 3 6 10 6 -1. + <_> + 3 6 5 3 2. + <_> + 8 9 5 3 2. + <_> + + <_> + 9 0 6 19 -1. + <_> + 11 0 2 19 3. + <_> + + <_> + 5 0 6 19 -1. + <_> + 7 0 2 19 3. + <_> + + <_> + 4 18 14 2 -1. + <_> + 4 18 7 2 2. + <_> + + <_> + 0 0 5 9 -1. + <_> + 0 3 5 3 3. + <_> + + <_> + 13 1 7 9 -1. + <_> + 13 4 7 3 3. + <_> + + <_> + 0 1 7 9 -1. + <_> + 0 4 7 3 3. + <_> + + <_> + 9 11 11 6 -1. + <_> + 9 13 11 2 3. + <_> + + <_> + 0 11 11 6 -1. + <_> + 0 13 11 2 3. + <_> + + <_> + 2 5 16 10 -1. + <_> + 10 5 8 5 2. + <_> + 2 10 8 5 2. + <_> + + <_> + 0 13 13 3 -1. + <_> + 0 14 13 1 3. + <_> + + <_> + 11 3 8 4 -1. + <_> + 11 5 8 2 2. + <_> + + <_> + 1 4 14 12 -1. + <_> + 1 4 7 6 2. + <_> + 8 10 7 6 2. + <_> + + <_> + 6 12 13 3 -1. + <_> + 6 13 13 1 3. + <_> + + <_> + 2 17 13 3 -1. + <_> + 2 18 13 1 3. + <_> + + <_> + 1 11 18 6 -1. + <_> + 1 13 18 2 3. + <_> + + <_> + 6 2 7 18 -1. + <_> + 6 11 7 9 2. + <_> + + <_> + 11 3 8 4 -1. + <_> + 11 5 8 2 2. + <_> + + <_> + 1 1 16 6 -1. + <_> + 1 1 8 3 2. + <_> + 9 4 8 3 2. + <_> + + <_> + 16 1 4 14 -1. + <_> + 18 1 2 7 2. + <_> + 16 8 2 7 2. + <_> + + <_> + 0 1 4 14 -1. + <_> + 0 1 2 7 2. + <_> + 2 8 2 7 2. + <_> + + <_> + 6 7 14 4 -1. + <_> + 13 7 7 2 2. + <_> + 6 9 7 2 2. + <_> + + <_> + 3 0 6 5 -1. + <_> + 6 0 3 5 2. + <_> + + <_> + 4 2 12 6 -1. + <_> + 4 4 12 2 3. + <_> + + <_> + 0 7 14 4 -1. + <_> + 0 7 7 2 2. + <_> + 7 9 7 2 2. + <_> + + <_> + 8 6 5 9 -1. + <_> + 8 9 5 3 3. + <_> + + <_> + 2 7 13 2 -1. + <_> + 2 8 13 1 2. + <_> + + <_> + 9 12 10 6 -1. + <_> + 14 12 5 3 2. + <_> + 9 15 5 3 2. + <_> + + <_> + 5 6 6 10 -1. + <_> + 7 6 2 10 3. + <_> + + <_> + 7 0 6 7 -1. + <_> + 9 0 2 7 3. + <_> + + <_> + 2 2 15 5 -1. + <_> + 7 2 5 5 3. + <_> + + <_> + 7 3 13 2 -1. + <_> + 7 4 13 1 2. + <_> + + <_> + 0 0 2 13 -1. + <_> + 1 0 1 13 2. + <_> + + <_> + 14 1 3 17 -1. + <_> + 15 1 1 17 3. + <_> + + <_> + 3 1 3 17 -1. + <_> + 4 1 1 17 3. + <_> + + <_> + 12 1 7 6 -1. + <_> + 12 3 7 2 3. + <_> + + <_> + 3 2 3 17 -1. + <_> + 4 2 1 17 3. + <_> + + <_> + 14 0 6 18 -1. + <_> + 16 0 2 18 3. + <_> + + <_> + 3 5 7 6 -1. + <_> + 3 7 7 2 3. + <_> + + <_> + 8 4 6 12 -1. + <_> + 11 4 3 6 2. + <_> + 8 10 3 6 2. + <_> + + <_> + 4 4 12 10 -1. + <_> + 4 4 6 5 2. + <_> + 10 9 6 5 2. + <_> + + <_> + 14 0 6 18 -1. + <_> + 16 0 2 18 3. + <_> + + <_> + 0 0 6 18 -1. + <_> + 2 0 2 18 3. + <_> + + <_> + 9 0 3 18 -1. + <_> + 9 9 3 9 2. + <_> + + <_> + 3 2 12 6 -1. + <_> + 3 5 12 3 2. + <_> + + <_> + 15 2 5 9 -1. + <_> + 15 5 5 3 3. + <_> + + <_> + 0 2 5 9 -1. + <_> + 0 5 5 3 3. + <_> + + <_> + 17 3 3 12 -1. + <_> + 17 9 3 6 2. + <_> + + <_> + 0 3 3 12 -1. + <_> + 0 9 3 6 2. + <_> + + <_> + 14 10 5 9 -1. + <_> + 14 13 5 3 3. + <_> + + <_> + 1 0 18 8 -1. + <_> + 1 4 18 4 2. + <_> + + <_> + 11 3 8 4 -1. + <_> + 11 5 8 2 2. + <_> + + <_> + 1 3 8 4 -1. + <_> + 1 5 8 2 2. + <_> + + <_> + 15 0 5 9 -1. + <_> + 15 3 5 3 3. + <_> + + <_> + 4 3 12 3 -1. + <_> + 10 3 6 3 2. + <_> + + <_> + 5 7 10 5 -1. + <_> + 5 7 5 5 2. + <_> + + <_> + 2 6 16 4 -1. + <_> + 2 6 8 2 2. + <_> + 10 8 8 2 2. + <_> + + <_> + 15 0 5 9 -1. + <_> + 15 3 5 3 3. + <_> + + <_> + 0 0 5 9 -1. + <_> + 0 3 5 3 3. + <_> + + <_> + 11 0 3 12 -1. + <_> + 11 6 3 6 2. + <_> + + <_> + 0 1 6 6 -1. + <_> + 0 4 6 3 2. + <_> + + <_> + 7 1 7 18 -1. + <_> + 7 10 7 9 2. + <_> + + <_> + 0 2 18 6 -1. + <_> + 0 2 9 3 2. + <_> + 9 5 9 3 2. + <_> + + <_> + 5 8 13 2 -1. + <_> + 5 9 13 1 2. + <_> + + <_> + 6 8 3 10 -1. + <_> + 6 13 3 5 2. + <_> + + <_> + 6 11 13 2 -1. + <_> + 6 12 13 1 2. + <_> + + <_> + 1 17 18 3 -1. + <_> + 1 18 18 1 3. + <_> + + <_> + 1 3 18 2 -1. + <_> + 1 3 9 2 2. + <_> + + <_> + 3 17 10 3 -1. + <_> + 8 17 5 3 2. + <_> + + <_> + 1 15 18 4 -1. + <_> + 7 15 6 4 3. + <_> + + <_> + 5 5 6 9 -1. + <_> + 8 5 3 9 2. + <_> + + <_> + 4 6 12 11 -1. + <_> + 8 6 4 11 3. + <_> + + <_> + 0 0 8 10 -1. + <_> + 0 0 4 5 2. + <_> + 4 5 4 5 2. + <_> + + <_> + 2 0 18 3 -1. + <_> + 8 0 6 3 3. + <_> + + <_> + 5 9 9 9 -1. + <_> + 8 9 3 9 3. + <_> + + <_> + 11 3 2 17 -1. + <_> + 11 3 1 17 2. + <_> + + <_> + 7 0 2 20 -1. + <_> + 8 0 1 20 2. + <_> + + <_> + 10 1 8 18 -1. + <_> + 10 1 4 18 2. + <_> + + <_> + 4 5 8 8 -1. + <_> + 4 5 4 4 2. + <_> + 8 9 4 4 2. + <_> + + <_> + 6 1 12 14 -1. + <_> + 12 1 6 7 2. + <_> + 6 8 6 7 2. + <_> + + <_> + 2 1 8 18 -1. + <_> + 6 1 4 18 2. + <_> + + <_> + 1 5 18 7 -1. + <_> + 7 5 6 7 3. + <_> + + <_> + 3 4 6 16 -1. + <_> + 3 4 3 8 2. + <_> + 6 12 3 8 2. + <_> + + <_> + 12 3 4 14 -1. + <_> + 14 3 2 7 2. + <_> + 12 10 2 7 2. + <_> + + <_> + 4 3 4 14 -1. + <_> + 4 3 2 7 2. + <_> + 6 10 2 7 2. + <_> + + <_> + 8 12 6 6 -1. + <_> + 8 12 3 6 2. + <_> + + <_> + 6 12 6 6 -1. + <_> + 9 12 3 6 2. + <_> + + <_> + 4 1 14 3 -1. + <_> + 4 2 14 1 3. + <_> + + <_> + 3 5 10 6 -1. + <_> + 3 5 5 3 2. + <_> + 8 8 5 3 2. + <_> + + <_> + 6 6 14 4 -1. + <_> + 13 6 7 2 2. + <_> + 6 8 7 2 2. + <_> + + <_> + 0 4 20 8 -1. + <_> + 0 4 10 4 2. + <_> + 10 8 10 4 2. + <_> + + <_> + 12 5 8 8 -1. + <_> + 16 5 4 4 2. + <_> + 12 9 4 4 2. + <_> + + <_> + 1 1 15 6 -1. + <_> + 1 3 15 2 3. + <_> + + <_> + 3 6 16 3 -1. + <_> + 3 6 8 3 2. + <_> + + <_> + 7 3 6 5 -1. + <_> + 10 3 3 5 2. + <_> + + <_> + 7 4 9 5 -1. + <_> + 10 4 3 5 3. + <_> + + <_> + 1 6 16 3 -1. + <_> + 9 6 8 3 2. + <_> + + <_> + 9 0 3 15 -1. + <_> + 9 5 3 5 3. + <_> + + <_> + 0 1 2 14 -1. + <_> + 1 1 1 14 2. + <_> + + <_> + 12 5 3 13 -1. + <_> + 13 5 1 13 3. + <_> + + <_> + 5 5 3 13 -1. + <_> + 6 5 1 13 3. + <_> + + <_> + 4 6 16 8 -1. + <_> + 4 10 16 4 2. + <_> + + <_> + 3 7 7 6 -1. + <_> + 3 10 7 3 2. + <_> + + <_> + 0 3 20 10 -1. + <_> + 0 8 20 5 2. + <_> + + <_> + 0 3 7 6 -1. + <_> + 0 5 7 2 3. + <_> + + <_> + 11 1 8 4 -1. + <_> + 11 3 8 2 2. + <_> + + <_> + 1 1 8 4 -1. + <_> + 1 3 8 2 2. + <_> + + <_> + 0 0 20 3 -1. + <_> + 0 1 20 1 3. + <_> + + <_> + 5 0 10 6 -1. + <_> + 5 2 10 2 3. + <_> + + <_> + 6 3 8 10 -1. + <_> + 6 8 8 5 2. + <_> + + <_> + 7 2 5 12 -1. + <_> + 7 8 5 6 2. + <_> + + <_> + 7 7 6 12 -1. + <_> + 9 7 2 12 3. + <_> + + <_> + 7 3 6 8 -1. + <_> + 9 3 2 8 3. + <_> + + <_> + 10 0 4 16 -1. + <_> + 10 8 4 8 2. + <_> + + <_> + 0 6 16 8 -1. + <_> + 0 10 16 4 2. + <_> + + <_> + 3 8 16 4 -1. + <_> + 3 10 16 2 2. + <_> + + <_> + 6 0 6 7 -1. + <_> + 8 0 2 7 3. + <_> + + <_> + 10 8 9 4 -1. + <_> + 10 10 9 2 2. + <_> + + <_> + 7 5 6 10 -1. + <_> + 7 10 6 5 2. + <_> + + <_> + 9 6 4 12 -1. + <_> + 9 10 4 4 3. + <_> + + <_> + 0 7 13 9 -1. + <_> + 0 10 13 3 3. + <_> + + <_> + 6 11 8 8 -1. + <_> + 10 11 4 4 2. + <_> + 6 15 4 4 2. + <_> + + <_> + 0 15 10 4 -1. + <_> + 5 15 5 4 2. + <_> + + <_> + 4 18 16 2 -1. + <_> + 4 18 8 2 2. + <_> + + <_> + 6 10 8 8 -1. + <_> + 6 14 8 4 2. + <_> + + <_> + 8 13 7 6 -1. + <_> + 8 15 7 2 3. + <_> + + <_> + 7 7 5 8 -1. + <_> + 7 11 5 4 2. + <_> + + <_> + 6 7 10 12 -1. + <_> + 6 11 10 4 3. + <_> + + <_> + 6 13 6 7 -1. + <_> + 8 13 2 7 3. + <_> + + <_> + 14 11 4 7 -1. + <_> + 14 11 2 7 2. + <_> + + <_> + 4 6 6 10 -1. + <_> + 6 6 2 10 3. + <_> + + <_> + 13 4 2 16 -1. + <_> + 13 4 1 16 2. + <_> + + <_> + 5 4 2 16 -1. + <_> + 6 4 1 16 2. + <_> + + <_> + 8 3 4 16 -1. + <_> + 10 3 2 8 2. + <_> + 8 11 2 8 2. + <_> + + <_> + 8 0 3 18 -1. + <_> + 8 9 3 9 2. + <_> + + <_> + 4 4 13 2 -1. + <_> + 4 5 13 1 2. + <_> + + <_> + 0 2 14 2 -1. + <_> + 0 3 14 1 2. + <_> + + <_> + 14 11 4 7 -1. + <_> + 14 11 2 7 2. + <_> + + <_> + 0 2 13 2 -1. + <_> + 0 3 13 1 2. + <_> + + <_> + 14 11 4 7 -1. + <_> + 14 11 2 7 2. + <_> + + <_> + 2 11 4 7 -1. + <_> + 4 11 2 7 2. + <_> + + <_> + 13 0 3 13 -1. + <_> + 14 0 1 13 3. + <_> + + <_> + 2 10 5 6 -1. + <_> + 2 13 5 3 2. + <_> + + <_> + 14 10 5 9 -1. + <_> + 14 13 5 3 3. + <_> + + <_> + 1 13 13 3 -1. + <_> + 1 14 13 1 3. + <_> + + <_> + 5 12 13 3 -1. + <_> + 5 13 13 1 3. + <_> + + <_> + 0 13 17 6 -1. + <_> + 0 15 17 2 3. + <_> + + <_> + 5 15 13 3 -1. + <_> + 5 16 13 1 3. + <_> + + <_> + 1 1 18 4 -1. + <_> + 7 1 6 4 3. + <_> + + <_> + 9 4 2 14 -1. + <_> + 9 11 2 7 2. + <_> + + <_> + 1 15 13 3 -1. + <_> + 1 16 13 1 3. + <_> + + <_> + 13 5 4 8 -1. + <_> + 13 9 4 4 2. + <_> + + <_> + 4 5 4 14 -1. + <_> + 4 5 2 7 2. + <_> + 6 12 2 7 2. + <_> + + <_> + 13 5 4 8 -1. + <_> + 13 9 4 4 2. + <_> + + <_> + 2 8 8 8 -1. + <_> + 2 8 4 4 2. + <_> + 6 12 4 4 2. + <_> + + <_> + 13 6 6 9 -1. + <_> + 13 9 6 3 3. + <_> + + <_> + 4 0 5 9 -1. + <_> + 4 3 5 3 3. + <_> + + <_> + 13 4 3 10 -1. + <_> + 13 9 3 5 2. + <_> + + <_> + 3 5 4 8 -1. + <_> + 3 9 4 4 2. + <_> + + <_> + 10 10 8 6 -1. + <_> + 10 12 8 2 3. + <_> + + <_> + 1 17 13 3 -1. + <_> + 1 18 13 1 3. + <_> + + <_> + 10 6 10 6 -1. + <_> + 15 6 5 3 2. + <_> + 10 9 5 3 2. + <_> + + <_> + 7 5 6 11 -1. + <_> + 9 5 2 11 3. + <_> + + <_> + 6 1 9 6 -1. + <_> + 9 1 3 6 3. + <_> + + <_> + 1 11 13 3 -1. + <_> + 1 12 13 1 3. + <_> + + <_> + 4 0 13 3 -1. + <_> + 4 1 13 1 3. + <_> + + <_> + 1 2 14 12 -1. + <_> + 1 2 7 6 2. + <_> + 8 8 7 6 2. + <_> + + <_> + 13 4 4 14 -1. + <_> + 15 4 2 7 2. + <_> + 13 11 2 7 2. + <_> + + <_> + 3 4 4 14 -1. + <_> + 3 4 2 7 2. + <_> + 5 11 2 7 2. + <_> + + <_> + 14 0 6 10 -1. + <_> + 17 0 3 5 2. + <_> + 14 5 3 5 2. + <_> + + <_> + 1 15 7 4 -1. + <_> + 1 17 7 2 2. + <_> + + <_> + 16 0 4 7 -1. + <_> + 16 0 2 7 2. + <_> + + <_> + 1 2 18 2 -1. + <_> + 1 3 18 1 2. + <_> + + <_> + 16 0 4 7 -1. + <_> + 16 0 2 7 2. + <_> + + <_> + 3 2 14 3 -1. + <_> + 3 3 14 1 3. + <_> + + <_> + 11 13 6 7 -1. + <_> + 13 13 2 7 3. + <_> + + <_> + 6 5 6 7 -1. + <_> + 8 5 2 7 3. + <_> + + <_> + 1 7 19 12 -1. + <_> + 1 11 19 4 3. + <_> + + <_> + 6 6 6 7 -1. + <_> + 8 6 2 7 3. + <_> + + <_> + 8 12 4 8 -1. + <_> + 8 16 4 4 2. + <_> + + <_> + 7 9 6 10 -1. + <_> + 7 9 3 5 2. + <_> + 10 14 3 5 2. + <_> + + <_> + 4 6 13 3 -1. + <_> + 4 7 13 1 3. + <_> + + <_> + 3 11 7 4 -1. + <_> + 3 13 7 2 2. + <_> + + <_> + 16 0 4 15 -1. + <_> + 16 0 2 15 2. + <_> + + <_> + 0 3 14 4 -1. + <_> + 0 3 7 2 2. + <_> + 7 5 7 2 2. + <_> + + <_> + 7 0 8 10 -1. + <_> + 11 0 4 5 2. + <_> + 7 5 4 5 2. + <_> + + <_> + 0 2 20 2 -1. + <_> + 10 2 10 2 2. + <_> + + <_> + 7 6 10 3 -1. + <_> + 7 6 5 3 2. + <_> + + <_> + 3 6 10 3 -1. + <_> + 8 6 5 3 2. + <_> + + <_> + 14 0 6 10 -1. + <_> + 17 0 3 5 2. + <_> + 14 5 3 5 2. + <_> + + <_> + 0 4 18 16 -1. + <_> + 6 4 6 16 3. + <_> + + <_> + 15 0 4 19 -1. + <_> + 15 0 2 19 2. + <_> + + <_> + 0 6 10 6 -1. + <_> + 0 6 5 3 2. + <_> + 5 9 5 3 2. + <_> + + <_> + 14 0 6 10 -1. + <_> + 17 0 3 5 2. + <_> + 14 5 3 5 2. + <_> + + <_> + 0 0 6 10 -1. + <_> + 0 0 3 5 2. + <_> + 3 5 3 5 2. + <_> + + <_> + 9 0 9 5 -1. + <_> + 12 0 3 5 3. + <_> + + <_> + 5 0 8 10 -1. + <_> + 5 0 4 5 2. + <_> + 9 5 4 5 2. + <_> + + <_> + 1 1 18 4 -1. + <_> + 7 1 6 4 3. + <_> + + <_> + 0 0 14 3 -1. + <_> + 0 1 14 1 3. + <_> + + <_> + 16 0 4 12 -1. + <_> + 16 0 2 12 2. + <_> + + <_> + 1 0 4 19 -1. + <_> + 3 0 2 19 2. + <_> + + <_> + 14 10 6 7 -1. + <_> + 14 10 3 7 2. + <_> + + <_> + 1 6 9 14 -1. + <_> + 4 6 3 14 3. + <_> + + <_> + 9 2 6 9 -1. + <_> + 9 5 6 3 3. + <_> + + <_> + 0 10 6 10 -1. + <_> + 0 10 3 5 2. + <_> + 3 15 3 5 2. + <_> + + <_> + 4 8 12 6 -1. + <_> + 8 8 4 6 3. + <_> + + <_> + 2 5 12 9 -1. + <_> + 6 5 4 9 3. + <_> + + <_> + 9 5 6 7 -1. + <_> + 11 5 2 7 3. + <_> + + <_> + 4 5 9 5 -1. + <_> + 7 5 3 5 3. + <_> + + <_> + 10 3 6 7 -1. + <_> + 12 3 2 7 3. + <_> + + <_> + 6 13 7 6 -1. + <_> + 6 15 7 2 3. + <_> + + <_> + 11 6 4 14 -1. + <_> + 13 6 2 7 2. + <_> + 11 13 2 7 2. + <_> + + <_> + 5 6 4 14 -1. + <_> + 5 6 2 7 2. + <_> + 7 13 2 7 2. + <_> + + <_> + 13 13 7 4 -1. + <_> + 13 15 7 2 2. + <_> + + <_> + 1 5 4 14 -1. + <_> + 1 5 2 7 2. + <_> + 3 12 2 7 2. + <_> + + <_> + 1 13 18 4 -1. + <_> + 10 13 9 2 2. + <_> + 1 15 9 2 2. + <_> + + <_> + 0 1 18 12 -1. + <_> + 0 7 18 6 2. + <_> + + <_> + 4 1 14 18 -1. + <_> + 4 10 14 9 2. + <_> + + <_> + 4 0 6 10 -1. + <_> + 6 0 2 10 3. + <_> + + <_> + 16 10 4 9 -1. + <_> + 16 10 2 9 2. + <_> + + <_> + 0 10 4 9 -1. + <_> + 2 10 2 9 2. + <_> + + <_> + 10 3 6 7 -1. + <_> + 12 3 2 7 3. + <_> + + <_> + 4 10 4 7 -1. + <_> + 6 10 2 7 2. + <_> + + <_> + 4 9 15 3 -1. + <_> + 9 9 5 3 3. + <_> + + <_> + 1 9 15 3 -1. + <_> + 6 9 5 3 3. + <_> + + <_> + 16 0 4 12 -1. + <_> + 16 0 2 12 2. + <_> + + <_> + 7 8 4 12 -1. + <_> + 7 12 4 4 3. + <_> + + <_> + 16 0 4 12 -1. + <_> + 16 0 2 12 2. + <_> + + <_> + 0 0 4 12 -1. + <_> + 2 0 2 12 2. + <_> + + <_> + 12 9 7 6 -1. + <_> + 12 11 7 2 3. + <_> + + <_> + 8 1 3 13 -1. + <_> + 9 1 1 13 3. + <_> + + <_> + 12 9 7 6 -1. + <_> + 12 11 7 2 3. + <_> + + <_> + 0 6 6 7 -1. + <_> + 2 6 2 7 3. + <_> + + <_> + 7 14 13 3 -1. + <_> + 7 15 13 1 3. + <_> + + <_> + 0 14 13 3 -1. + <_> + 0 15 13 1 3. + <_> + + <_> + 1 9 18 4 -1. + <_> + 10 9 9 2 2. + <_> + 1 11 9 2 2. + <_> + + <_> + 3 9 13 2 -1. + <_> + 3 10 13 1 2. + <_> + + <_> + 7 14 13 3 -1. + <_> + 7 15 13 1 3. + <_> + + <_> + 6 12 8 8 -1. + <_> + 6 12 4 4 2. + <_> + 10 16 4 4 2. + <_> + + <_> + 10 0 3 13 -1. + <_> + 11 0 1 13 3. + <_> + + <_> + 3 14 7 6 -1. + <_> + 3 16 7 2 3. + <_> + + <_> + 5 10 15 6 -1. + <_> + 10 10 5 6 3. + <_> + + <_> + 8 2 4 7 -1. + <_> + 10 2 2 7 2. + <_> + + <_> + 7 1 9 7 -1. + <_> + 10 1 3 7 3. + <_> + + <_> + 1 14 9 6 -1. + <_> + 1 16 9 2 3. + <_> + + <_> + 7 0 8 6 -1. + <_> + 7 2 8 2 3. + <_> + + <_> + 0 0 8 10 -1. + <_> + 0 0 4 5 2. + <_> + 4 5 4 5 2. + <_> + + <_> + 11 8 6 7 -1. + <_> + 13 8 2 7 3. + <_> + + <_> + 6 0 2 13 -1. + <_> + 7 0 1 13 2. + <_> + + <_> + 10 10 6 8 -1. + <_> + 10 10 3 8 2. + <_> + + <_> + 2 9 8 9 -1. + <_> + 2 12 8 3 3. + <_> + + <_> + 14 4 4 14 -1. + <_> + 16 4 2 7 2. + <_> + 14 11 2 7 2. + <_> + + <_> + 4 9 7 8 -1. + <_> + 4 13 7 4 2. + <_> + + <_> + 7 1 6 8 -1. + <_> + 7 1 3 8 2. + <_> + + <_> + 1 11 7 6 -1. + <_> + 1 13 7 2 3. + <_> + + <_> + 9 0 6 7 -1. + <_> + 11 0 2 7 3. + <_> + + <_> + 0 10 15 6 -1. + <_> + 5 10 5 6 3. + <_> + + <_> + 9 10 6 5 -1. + <_> + 9 10 3 5 2. + <_> + + <_> + 5 10 6 5 -1. + <_> + 8 10 3 5 2. + <_> + + <_> + 7 6 7 4 -1. + <_> + 7 8 7 2 2. + <_> + + <_> + 5 2 5 9 -1. + <_> + 5 5 5 3 3. + <_> + + <_> + 7 12 13 3 -1. + <_> + 7 13 13 1 3. + <_> + + <_> + 2 12 16 4 -1. + <_> + 2 14 16 2 2. + <_> + + <_> + 7 14 13 3 -1. + <_> + 7 15 13 1 3. + <_> + + <_> + 0 0 20 4 -1. + <_> + 0 0 10 2 2. + <_> + 10 2 10 2 2. + <_> + + <_> + 6 14 13 2 -1. + <_> + 6 15 13 1 2. + <_> + + <_> + 1 10 13 3 -1. + <_> + 1 11 13 1 3. + <_> + + <_> + 12 0 6 10 -1. + <_> + 15 0 3 5 2. + <_> + 12 5 3 5 2. + <_> + + <_> + 3 16 13 2 -1. + <_> + 3 17 13 1 2. + <_> + + <_> + 10 6 10 6 -1. + <_> + 15 6 5 3 2. + <_> + 10 9 5 3 2. + <_> + + <_> + 1 16 13 3 -1. + <_> + 1 17 13 1 3. + <_> + + <_> + 15 1 5 9 -1. + <_> + 15 4 5 3 3. + <_> + + <_> + 0 1 18 4 -1. + <_> + 0 1 9 2 2. + <_> + 9 3 9 2 2. + <_> + + <_> + 5 0 10 4 -1. + <_> + 5 2 10 2 2. + <_> + + <_> + 5 0 6 7 -1. + <_> + 7 0 2 7 3. + <_> + + <_> + 4 2 12 10 -1. + <_> + 4 2 6 10 2. + <_> + + <_> + 5 10 6 6 -1. + <_> + 8 10 3 6 2. + <_> + + <_> + 5 2 12 6 -1. + <_> + 5 4 12 2 3. + <_> + + <_> + 8 0 3 12 -1. + <_> + 8 6 3 6 2. + <_> + + <_> + 5 0 14 8 -1. + <_> + 5 4 14 4 2. + <_> + + <_> + 2 4 4 14 -1. + <_> + 2 4 2 7 2. + <_> + 4 11 2 7 2. + <_> + + <_> + 10 9 10 6 -1. + <_> + 15 9 5 3 2. + <_> + 10 12 5 3 2. + <_> + + <_> + 5 12 9 5 -1. + <_> + 8 12 3 5 3. + <_> + + <_> + 4 14 12 6 -1. + <_> + 8 14 4 6 3. + <_> + + <_> + 2 5 12 14 -1. + <_> + 2 5 6 7 2. + <_> + 8 12 6 7 2. + <_> + + <_> + 3 10 14 4 -1. + <_> + 10 10 7 2 2. + <_> + 3 12 7 2 2. + <_> + + <_> + 4 2 12 4 -1. + <_> + 8 2 4 4 3. + <_> + + <_> + 12 0 4 14 -1. + <_> + 14 0 2 7 2. + <_> + 12 7 2 7 2. + <_> + + <_> + 4 0 4 14 -1. + <_> + 4 0 2 7 2. + <_> + 6 7 2 7 2. + <_> + + <_> + 12 9 6 11 -1. + <_> + 14 9 2 11 3. + <_> + + <_> + 0 4 3 14 -1. + <_> + 1 4 1 14 3. + <_> + + <_> + 15 1 3 13 -1. + <_> + 16 1 1 13 3. + <_> + + <_> + 2 1 3 13 -1. + <_> + 3 1 1 13 3. + <_> + + <_> + 8 10 10 10 -1. + <_> + 13 10 5 5 2. + <_> + 8 15 5 5 2. + <_> + + <_> + 6 0 2 20 -1. + <_> + 7 0 1 20 2. + <_> + + <_> + 5 14 14 6 -1. + <_> + 12 14 7 3 2. + <_> + 5 17 7 3 2. + <_> + + <_> + 1 4 3 13 -1. + <_> + 2 4 1 13 3. + <_> + + <_> + 18 6 2 14 -1. + <_> + 18 6 1 14 2. + <_> + + <_> + 0 6 2 14 -1. + <_> + 1 6 1 14 2. + <_> + + <_> + 10 2 9 5 -1. + <_> + 13 2 3 5 3. + <_> + + <_> + 2 0 6 7 -1. + <_> + 4 0 2 7 3. + <_> + + <_> + 4 4 14 16 -1. + <_> + 11 4 7 8 2. + <_> + 4 12 7 8 2. + <_> + + <_> + 6 5 6 7 -1. + <_> + 8 5 2 7 3. + <_> + + <_> + 12 8 7 6 -1. + <_> + 12 10 7 2 3. + <_> + + <_> + 0 17 20 3 -1. + <_> + 10 17 10 3 2. + <_> + + <_> + 6 10 10 4 -1. + <_> + 6 10 5 4 2. + <_> + + <_> + 7 6 6 7 -1. + <_> + 9 6 2 7 3. + <_> + + <_> + 12 8 7 6 -1. + <_> + 12 10 7 2 3. + <_> + + <_> + 7 11 6 8 -1. + <_> + 9 11 2 8 3. + <_> + + <_> + 5 4 13 3 -1. + <_> + 5 5 13 1 3. + <_> + + <_> + 6 2 4 15 -1. + <_> + 6 7 4 5 3. + <_> + + <_> + 8 2 4 12 -1. + <_> + 8 6 4 4 3. + <_> + + <_> + 3 6 14 9 -1. + <_> + 3 9 14 3 3. + <_> + + <_> + 4 5 12 8 -1. + <_> + 4 9 12 4 2. + <_> + + <_> + 2 4 14 16 -1. + <_> + 2 4 7 8 2. + <_> + 9 12 7 8 2. + <_> + + <_> + 13 11 7 6 -1. + <_> + 13 13 7 2 3. + <_> + + <_> + 1 17 12 3 -1. + <_> + 7 17 6 3 2. + <_> + + <_> + 1 7 19 3 -1. + <_> + 1 8 19 1 3. + <_> + + <_> + 4 0 12 10 -1. + <_> + 10 0 6 10 2. + <_> + + <_> + 6 11 12 4 -1. + <_> + 6 11 6 4 2. + <_> + + <_> + 4 10 6 5 -1. + <_> + 7 10 3 5 2. + <_> + + <_> + 18 0 2 18 -1. + <_> + 18 0 1 18 2. + <_> + + <_> + 0 11 7 6 -1. + <_> + 0 13 7 2 3. + <_> + + <_> + 6 12 13 3 -1. + <_> + 6 13 13 1 3. + <_> + + <_> + 3 13 14 3 -1. + <_> + 3 14 14 1 3. + <_> + + <_> + 12 8 7 6 -1. + <_> + 12 10 7 2 3. + <_> + + <_> + 3 13 13 3 -1. + <_> + 3 14 13 1 3. + <_> + + <_> + 12 8 7 6 -1. + <_> + 12 10 7 2 3. + <_> + + <_> + 1 8 7 6 -1. + <_> + 1 10 7 2 3. + <_> + + <_> + 5 7 12 12 -1. + <_> + 5 11 12 4 3. + <_> + + <_> + 4 5 10 10 -1. + <_> + 4 5 5 5 2. + <_> + 9 10 5 5 2. + <_> + + <_> + 12 13 8 7 -1. + <_> + 12 13 4 7 2. + <_> + + <_> + 4 0 9 6 -1. + <_> + 4 3 9 3 2. + <_> + + <_> + 4 3 13 2 -1. + <_> + 4 4 13 1 2. + <_> + + <_> + 0 0 2 18 -1. + <_> + 1 0 1 18 2. + <_> + + <_> + 0 13 20 2 -1. + <_> + 0 14 20 1 2. + <_> + + <_> + 4 10 10 4 -1. + <_> + 9 10 5 4 2. + <_> + + <_> + 8 4 12 16 -1. + <_> + 8 4 6 16 2. + <_> + + <_> + 0 4 12 16 -1. + <_> + 6 4 6 16 2. + <_> + + <_> + 12 5 6 9 -1. + <_> + 12 5 3 9 2. + <_> + + <_> + 0 13 8 7 -1. + <_> + 4 13 4 7 2. + <_> + + <_> + 12 0 3 16 -1. + <_> + 13 0 1 16 3. + <_> + + <_> + 0 7 18 12 -1. + <_> + 6 7 6 12 3. + <_> + + <_> + 4 9 12 4 -1. + <_> + 8 9 4 4 3. + <_> + + <_> + 0 7 16 4 -1. + <_> + 0 7 8 2 2. + <_> + 8 9 8 2 2. + <_> + + <_> + 7 4 9 5 -1. + <_> + 10 4 3 5 3. + <_> + + <_> + 5 0 3 16 -1. + <_> + 6 0 1 16 3. + <_> + + <_> + 6 11 13 2 -1. + <_> + 6 12 13 1 2. + <_> + + <_> + 1 11 13 2 -1. + <_> + 1 12 13 1 2. + <_> + + <_> + 8 6 5 9 -1. + <_> + 8 9 5 3 3. + <_> + + <_> + 6 4 4 8 -1. + <_> + 8 4 2 8 2. + <_> + + <_> + 14 3 4 8 -1. + <_> + 14 3 2 8 2. + <_> + + <_> + 2 3 4 8 -1. + <_> + 4 3 2 8 2. + <_> + + <_> + 10 3 6 7 -1. + <_> + 12 3 2 7 3. + <_> + + <_> + 4 6 8 8 -1. + <_> + 4 6 4 4 2. + <_> + 8 10 4 4 2. + <_> + + <_> + 10 9 6 7 -1. + <_> + 10 9 3 7 2. + <_> + + <_> + 4 9 6 7 -1. + <_> + 7 9 3 7 2. + <_> + + <_> + 4 10 12 5 -1. + <_> + 8 10 4 5 3. + <_> + + <_> + 6 1 7 6 -1. + <_> + 6 3 7 2 3. + <_> + + <_> + 4 0 13 3 -1. + <_> + 4 1 13 1 3. + <_> + + <_> + 4 3 4 14 -1. + <_> + 4 3 2 7 2. + <_> + 6 10 2 7 2. + <_> + + <_> + 6 6 10 3 -1. + <_> + 6 6 5 3 2. + <_> + + <_> + 2 8 16 2 -1. + <_> + 10 8 8 2 2. + <_> + + <_> + 11 6 8 14 -1. + <_> + 15 6 4 7 2. + <_> + 11 13 4 7 2. + <_> + + <_> + 1 0 6 19 -1. + <_> + 4 0 3 19 2. + <_> + + <_> + 7 6 6 7 -1. + <_> + 9 6 2 7 3. + <_> + + <_> + 0 1 5 9 -1. + <_> + 0 4 5 3 3. + <_> + + <_> + 12 5 6 10 -1. + <_> + 15 5 3 5 2. + <_> + 12 10 3 5 2. + <_> + + <_> + 2 5 6 10 -1. + <_> + 2 5 3 5 2. + <_> + 5 10 3 5 2. + <_> + + <_> + 7 0 9 4 -1. + <_> + 7 2 9 2 2. + <_> + + <_> + 0 11 18 2 -1. + <_> + 9 11 9 2 2. + <_> + + <_> + 6 6 8 9 -1. + <_> + 6 6 4 9 2. + <_> + + <_> + 4 4 9 5 -1. + <_> + 7 4 3 5 3. + <_> + + <_> + 10 2 6 7 -1. + <_> + 10 2 3 7 2. + <_> + + <_> + 5 2 9 5 -1. + <_> + 8 2 3 5 3. + <_> + + <_> + 14 0 6 5 -1. + <_> + 14 0 3 5 2. + <_> + + <_> + 5 5 6 7 -1. + <_> + 7 5 2 7 3. + <_> + + <_> + 4 1 14 4 -1. + <_> + 11 1 7 2 2. + <_> + 4 3 7 2 2. + <_> + + <_> + 9 1 2 13 -1. + <_> + 10 1 1 13 2. + <_> + + <_> + 10 6 10 6 -1. + <_> + 15 6 5 3 2. + <_> + 10 9 5 3 2. + <_> + + <_> + 0 6 10 6 -1. + <_> + 0 6 5 3 2. + <_> + 5 9 5 3 2. + <_> + + <_> + 6 6 10 3 -1. + <_> + 6 6 5 3 2. + <_> + + <_> + 1 7 4 13 -1. + <_> + 3 7 2 13 2. + <_> + + <_> + 14 0 6 5 -1. + <_> + 14 0 3 5 2. + <_> + + <_> + 0 0 6 5 -1. + <_> + 3 0 3 5 2. + <_> + + <_> + 15 6 5 12 -1. + <_> + 15 10 5 4 3. + <_> + + <_> + 0 1 6 16 -1. + <_> + 0 1 3 8 2. + <_> + 3 9 3 8 2. + <_> + + <_> + 0 0 20 2 -1. + <_> + 0 0 10 2 2. + <_> + + <_> + 0 6 5 12 -1. + <_> + 0 10 5 4 3. + <_> + + <_> + 1 0 18 6 -1. + <_> + 10 0 9 3 2. + <_> + 1 3 9 3 2. + <_> + + <_> + 3 0 12 5 -1. + <_> + 7 0 4 5 3. + <_> + + <_> + 7 0 9 5 -1. + <_> + 10 0 3 5 3. + <_> + + <_> + 1 1 18 4 -1. + <_> + 7 1 6 4 3. + <_> + + <_> + 11 2 8 18 -1. + <_> + 11 2 4 18 2. + <_> + + <_> + 1 2 8 18 -1. + <_> + 5 2 4 18 2. + <_> + + <_> + 12 7 5 6 -1. + <_> + 12 10 5 3 2. + <_> + + <_> + 2 1 14 4 -1. + <_> + 2 1 7 2 2. + <_> + 9 3 7 2 2. + <_> + + <_> + 12 7 8 6 -1. + <_> + 12 9 8 2 3. + <_> + + <_> + 0 7 8 6 -1. + <_> + 0 9 8 2 3. + <_> + + <_> + 7 7 13 2 -1. + <_> + 7 8 13 1 2. + <_> + + <_> + 1 6 18 9 -1. + <_> + 1 9 18 3 3. + <_> + + <_> + 0 8 20 6 -1. + <_> + 0 10 20 2 3. + <_> + + <_> + 4 3 4 13 -1. + <_> + 6 3 2 13 2. + <_> + + <_> + 13 3 3 15 -1. + <_> + 14 3 1 15 3. + <_> + + <_> + 3 15 14 3 -1. + <_> + 3 16 14 1 3. + <_> + + <_> + 7 14 13 3 -1. + <_> + 7 15 13 1 3. + <_> + + <_> + 0 16 17 3 -1. + <_> + 0 17 17 1 3. + <_> + + <_> + 5 11 11 6 -1. + <_> + 5 14 11 3 2. + <_> + + <_> + 4 3 3 15 -1. + <_> + 5 3 1 15 3. + <_> + + <_> + 3 1 14 9 -1. + <_> + 3 4 14 3 3. + <_> + + <_> + 0 0 20 8 -1. + <_> + 0 4 20 4 2. + <_> + + <_> + 7 6 7 4 -1. + <_> + 7 8 7 2 2. + <_> + + <_> + 2 13 13 2 -1. + <_> + 2 14 13 1 2. + <_> + + <_> + 2 12 16 3 -1. + <_> + 2 13 16 1 3. + <_> + + <_> + 1 11 13 3 -1. + <_> + 1 12 13 1 3. + <_> + + <_> + 7 1 13 3 -1. + <_> + 7 2 13 1 3. + <_> + + <_> + 5 13 7 6 -1. + <_> + 5 16 7 3 2. + <_> + + <_> + 4 3 14 3 -1. + <_> + 4 4 14 1 3. + <_> + + <_> + 3 2 14 2 -1. + <_> + 3 3 14 1 2. + <_> + + <_> + 3 0 15 14 -1. + <_> + 3 7 15 7 2. + <_> + + <_> + 4 1 12 14 -1. + <_> + 4 8 12 7 2. + <_> + + <_> + 9 13 6 7 -1. + <_> + 11 13 2 7 3. + <_> + + <_> + 6 14 8 4 -1. + <_> + 6 16 8 2 2. + <_> + + <_> + 8 14 8 6 -1. + <_> + 8 16 8 2 3. + <_> + + <_> + 5 13 6 7 -1. + <_> + 7 13 2 7 3. + <_> + + <_> + 11 10 8 5 -1. + <_> + 11 10 4 5 2. + <_> + + <_> + 1 0 8 16 -1. + <_> + 1 0 4 8 2. + <_> + 5 8 4 8 2. + <_> + + <_> + 8 2 6 18 -1. + <_> + 8 8 6 6 3. + <_> + + <_> + 6 2 6 18 -1. + <_> + 6 8 6 6 3. + <_> + + <_> + 7 6 9 4 -1. + <_> + 7 8 9 2 2. + <_> + + <_> + 1 10 5 9 -1. + <_> + 1 13 5 3 3. + <_> + + <_> + 12 12 8 6 -1. + <_> + 12 14 8 2 3. + <_> + + <_> + 0 14 10 6 -1. + <_> + 0 14 5 3 2. + <_> + 5 17 5 3 2. + <_> + + <_> + 9 11 5 9 -1. + <_> + 9 14 5 3 3. + <_> + + <_> + 0 16 12 4 -1. + <_> + 4 16 4 4 3. + <_> + + <_> + 14 6 3 14 -1. + <_> + 15 6 1 14 3. + <_> + + <_> + 6 9 8 8 -1. + <_> + 6 9 4 4 2. + <_> + 10 13 4 4 2. + <_> + + <_> + 8 5 4 7 -1. + <_> + 8 5 2 7 2. + <_> + + <_> + 6 11 6 9 -1. + <_> + 8 11 2 9 3. + <_> + + <_> + 7 2 6 16 -1. + <_> + 10 2 3 8 2. + <_> + 7 10 3 8 2. + <_> + + <_> + 0 15 18 5 -1. + <_> + 9 15 9 5 2. + <_> + + <_> + 4 12 14 4 -1. + <_> + 11 12 7 2 2. + <_> + 4 14 7 2 2. + <_> + + <_> + 2 12 14 4 -1. + <_> + 2 12 7 2 2. + <_> + 9 14 7 2 2. + <_> + + <_> + 4 3 14 3 -1. + <_> + 4 3 7 3 2. + <_> + + <_> + 0 2 10 3 -1. + <_> + 5 2 5 3 2. + <_> + + <_> + 3 0 15 8 -1. + <_> + 8 0 5 8 3. + <_> + + <_> + 2 5 16 2 -1. + <_> + 10 5 8 2 2. + <_> + + <_> + 6 0 8 9 -1. + <_> + 6 0 4 9 2. + <_> + + <_> + 3 2 10 6 -1. + <_> + 3 2 5 3 2. + <_> + 8 5 5 3 2. + <_> + + <_> + 7 14 13 3 -1. + <_> + 7 15 13 1 3. + <_> + + <_> + 0 14 13 3 -1. + <_> + 0 15 13 1 3. + <_> + + <_> + 14 1 3 13 -1. + <_> + 15 1 1 13 3. + <_> + + <_> + 0 14 13 3 -1. + <_> + 0 15 13 1 3. + <_> + + <_> + 11 10 8 6 -1. + <_> + 11 12 8 2 3. + <_> + + <_> + 1 10 8 6 -1. + <_> + 1 12 8 2 3. + <_> + + <_> + 3 3 14 3 -1. + <_> + 3 4 14 1 3. + <_> + + <_> + 0 1 5 9 -1. + <_> + 0 4 5 3 3. + <_> + + <_> + 4 2 15 9 -1. + <_> + 4 5 15 3 3. + <_> + + <_> + 0 1 13 3 -1. + <_> + 0 2 13 1 3. + <_> + + <_> + 8 14 10 6 -1. + <_> + 13 14 5 3 2. + <_> + 8 17 5 3 2. + <_> + + <_> + 2 14 10 6 -1. + <_> + 2 14 5 3 2. + <_> + 7 17 5 3 2. + <_> + + <_> + 12 12 8 6 -1. + <_> + 12 14 8 2 3. + <_> + + <_> + 0 12 8 6 -1. + <_> + 0 14 8 2 3. + <_> + + <_> + 6 16 14 4 -1. + <_> + 13 16 7 2 2. + <_> + 6 18 7 2 2. + <_> + + <_> + 0 16 14 4 -1. + <_> + 0 16 7 2 2. + <_> + 7 18 7 2 2. + <_> + + <_> + 4 16 16 4 -1. + <_> + 12 16 8 2 2. + <_> + 4 18 8 2 2. + <_> + + <_> + 0 16 16 4 -1. + <_> + 0 16 8 2 2. + <_> + 8 18 8 2 2. + <_> + + <_> + 8 4 6 5 -1. + <_> + 8 4 3 5 2. + <_> + + <_> + 6 4 6 5 -1. + <_> + 9 4 3 5 2. + <_> + + <_> + 8 7 4 8 -1. + <_> + 8 11 4 4 2. + <_> + + <_> + 4 6 10 12 -1. + <_> + 4 12 10 6 2. + <_> + + <_> + 1 5 18 12 -1. + <_> + 1 9 18 4 3. + <_> + + <_> + 4 6 9 4 -1. + <_> + 4 8 9 2 2. + <_> + + <_> + 1 5 19 3 -1. + <_> + 1 6 19 1 3. + <_> + + <_> + 2 3 12 14 -1. + <_> + 2 3 6 7 2. + <_> + 8 10 6 7 2. + <_> + + <_> + 13 0 3 16 -1. + <_> + 13 8 3 8 2. + <_> + + <_> + 4 0 3 16 -1. + <_> + 4 8 3 8 2. + <_> + + <_> + 4 0 12 14 -1. + <_> + 8 0 4 14 3. + <_> + + <_> + 0 10 10 6 -1. + <_> + 0 10 5 3 2. + <_> + 5 13 5 3 2. + <_> + + <_> + 7 4 13 3 -1. + <_> + 7 5 13 1 3. + <_> + + <_> + 2 5 6 10 -1. + <_> + 5 5 3 10 2. + <_> + + <_> + 11 6 8 14 -1. + <_> + 15 6 4 7 2. + <_> + 11 13 4 7 2. + <_> + + <_> + 3 1 3 13 -1. + <_> + 4 1 1 13 3. + <_> + + <_> + 11 6 8 14 -1. + <_> + 15 6 4 7 2. + <_> + 11 13 4 7 2. + <_> + + <_> + 3 1 3 13 -1. + <_> + 4 1 1 13 3. + <_> + + <_> + 9 5 10 9 -1. + <_> + 9 5 5 9 2. + <_> + + <_> + 1 6 8 14 -1. + <_> + 1 6 4 7 2. + <_> + 5 13 4 7 2. + <_> + + <_> + 11 13 9 6 -1. + <_> + 11 15 9 2 3. + <_> + + <_> + 0 13 9 6 -1. + <_> + 0 15 9 2 3. + <_> + + <_> + 12 11 8 9 -1. + <_> + 12 14 8 3 3. + <_> + + <_> + 2 11 15 9 -1. + <_> + 2 14 15 3 3. + <_> + + <_> + 2 16 18 4 -1. + <_> + 8 16 6 4 3. + <_> + + <_> + 1 9 18 3 -1. + <_> + 7 9 6 3 3. + <_> + + <_> + 14 0 6 10 -1. + <_> + 14 0 3 10 2. + <_> + + <_> + 0 0 6 10 -1. + <_> + 3 0 3 10 2. + <_> + + <_> + 13 1 4 16 -1. + <_> + 15 1 2 8 2. + <_> + 13 9 2 8 2. + <_> + + <_> + 1 9 6 11 -1. + <_> + 3 9 2 11 3. + <_> + + <_> + 6 12 13 3 -1. + <_> + 6 13 13 1 3. + <_> + + <_> + 0 0 12 10 -1. + <_> + 0 0 6 5 2. + <_> + 6 5 6 5 2. + <_> + + <_> + 4 5 13 3 -1. + <_> + 4 6 13 1 3. + <_> + + <_> + 0 4 7 6 -1. + <_> + 0 6 7 2 3. + <_> + + <_> + 13 6 4 8 -1. + <_> + 13 10 4 4 2. + <_> + + <_> + 3 6 4 8 -1. + <_> + 3 10 4 4 2. + <_> + + <_> + 15 8 5 6 -1. + <_> + 15 11 5 3 2. + <_> + + <_> + 0 4 13 3 -1. + <_> + 0 5 13 1 3. + <_> + + <_> + 9 8 10 6 -1. + <_> + 14 8 5 3 2. + <_> + 9 11 5 3 2. + <_> + + <_> + 1 8 10 6 -1. + <_> + 1 8 5 3 2. + <_> + 6 11 5 3 2. + <_> + + <_> + 5 5 15 6 -1. + <_> + 5 8 15 3 2. + <_> + + <_> + 2 8 14 2 -1. + <_> + 9 8 7 2 2. + <_> + + <_> + 9 1 6 7 -1. + <_> + 9 1 3 7 2. + <_> + + <_> + 5 1 6 7 -1. + <_> + 8 1 3 7 2. + <_> + + <_> + 0 6 20 6 -1. + <_> + 0 9 20 3 2. + <_> + + <_> + 2 8 15 2 -1. + <_> + 2 9 15 1 2. + <_> + + <_> + 11 0 6 7 -1. + <_> + 13 0 2 7 3. + <_> + + <_> + 0 2 15 6 -1. + <_> + 0 4 15 2 3. + <_> + + <_> + 5 2 15 2 -1. + <_> + 5 3 15 1 2. + <_> + + <_> + 5 9 7 4 -1. + <_> + 5 11 7 2 2. + <_> + + <_> + 13 9 4 8 -1. + <_> + 13 13 4 4 2. + <_> + + <_> + 1 9 7 6 -1. + <_> + 1 11 7 2 3. + <_> + + <_> + 12 11 5 6 -1. + <_> + 12 14 5 3 2. + <_> + + <_> + 3 3 14 9 -1. + <_> + 3 6 14 3 3. + <_> + + <_> + 12 11 5 6 -1. + <_> + 12 14 5 3 2. + <_> + + <_> + 3 11 5 6 -1. + <_> + 3 14 5 3 2. + <_> + + <_> + 2 9 17 8 -1. + <_> + 2 13 17 4 2. + <_> + + <_> + 6 8 7 12 -1. + <_> + 6 12 7 4 3. + <_> + + <_> + 11 0 4 9 -1. + <_> + 11 0 2 9 2. + <_> + + <_> + 6 2 4 16 -1. + <_> + 6 2 2 8 2. + <_> + 8 10 2 8 2. + <_> + + <_> + 11 0 6 7 -1. + <_> + 13 0 2 7 3. + <_> + + <_> + 3 0 6 7 -1. + <_> + 5 0 2 7 3. + <_> + + <_> + 10 4 10 6 -1. + <_> + 15 4 5 3 2. + <_> + 10 7 5 3 2. + <_> + + <_> + 0 0 18 4 -1. + <_> + 6 0 6 4 3. + <_> + + <_> + 7 1 9 7 -1. + <_> + 10 1 3 7 3. + <_> + + <_> + 4 1 9 7 -1. + <_> + 7 1 3 7 3. + <_> + + <_> + 9 0 2 13 -1. + <_> + 9 0 1 13 2. + <_> + + <_> + 1 1 12 17 -1. + <_> + 5 1 4 17 3. + <_> + + <_> + 9 1 6 12 -1. + <_> + 12 1 3 6 2. + <_> + 9 7 3 6 2. + <_> + + <_> + 2 5 9 15 -1. + <_> + 5 5 3 15 3. + <_> + + <_> + 4 0 16 4 -1. + <_> + 12 0 8 2 2. + <_> + 4 2 8 2 2. + <_> + + <_> + 0 0 16 4 -1. + <_> + 0 0 8 2 2. + <_> + 8 2 8 2 2. + <_> + + <_> + 10 4 10 6 -1. + <_> + 15 4 5 3 2. + <_> + 10 7 5 3 2. + <_> + + <_> + 1 12 13 3 -1. + <_> + 1 13 13 1 3. + <_> + + <_> + 5 13 13 2 -1. + <_> + 5 14 13 1 2. + <_> + + <_> + 0 4 10 6 -1. + <_> + 0 4 5 3 2. + <_> + 5 7 5 3 2. + <_> + + <_> + 8 11 12 5 -1. + <_> + 12 11 4 5 3. + <_> + + <_> + 0 11 7 6 -1. + <_> + 0 13 7 2 3. + <_> + + <_> + 11 13 7 6 -1. + <_> + 11 15 7 2 3. + <_> + + <_> + 1 14 18 6 -1. + <_> + 1 17 18 3 2. + <_> + + <_> + 3 1 14 6 -1. + <_> + 3 3 14 2 3. + <_> + + <_> + 12 0 6 6 -1. + <_> + 12 0 3 6 2. + <_> + + <_> + 8 12 4 8 -1. + <_> + 8 16 4 4 2. + <_> + + <_> + 5 7 12 5 -1. + <_> + 9 7 4 5 3. + <_> + + <_> + 5 10 4 8 -1. + <_> + 5 14 4 4 2. + <_> + + <_> + 13 0 4 14 -1. + <_> + 15 0 2 7 2. + <_> + 13 7 2 7 2. + <_> + + <_> + 2 0 9 5 -1. + <_> + 5 0 3 5 3. + <_> + + <_> + 9 2 6 16 -1. + <_> + 12 2 3 8 2. + <_> + 9 10 3 8 2. + <_> + + <_> + 6 5 2 14 -1. + <_> + 6 12 2 7 2. + <_> + + <_> + 15 4 4 16 -1. + <_> + 17 4 2 8 2. + <_> + 15 12 2 8 2. + <_> + + <_> + 5 1 10 8 -1. + <_> + 5 1 5 4 2. + <_> + 10 5 5 4 2. + <_> + + <_> + 11 7 7 6 -1. + <_> + 11 9 7 2 3. + <_> + + <_> + 1 2 14 3 -1. + <_> + 1 3 14 1 3. + <_> + + <_> + 13 5 4 8 -1. + <_> + 13 9 4 4 2. + <_> + + <_> + 2 10 7 6 -1. + <_> + 2 12 7 2 3. + <_> + + <_> + 7 14 13 3 -1. + <_> + 7 15 13 1 3. + <_> + + <_> + 0 5 18 8 -1. + <_> + 0 5 9 4 2. + <_> + 9 9 9 4 2. + <_> + + <_> + 13 5 4 14 -1. + <_> + 15 5 2 7 2. + <_> + 13 12 2 7 2. + <_> + + <_> + 0 0 4 13 -1. + <_> + 2 0 2 13 2. + <_> + + <_> + 13 5 4 14 -1. + <_> + 15 5 2 7 2. + <_> + 13 12 2 7 2. + <_> + + <_> + 3 5 4 14 -1. + <_> + 3 5 2 7 2. + <_> + 5 12 2 7 2. + <_> + + <_> + 11 12 7 6 -1. + <_> + 11 14 7 2 3. + <_> + + <_> + 2 12 7 6 -1. + <_> + 2 14 7 2 3. + <_> + + <_> + 13 4 6 16 -1. + <_> + 16 4 3 8 2. + <_> + 13 12 3 8 2. + <_> + + <_> + 0 9 10 6 -1. + <_> + 0 9 5 3 2. + <_> + 5 12 5 3 2. + <_> + + <_> + 9 5 3 15 -1. + <_> + 9 10 3 5 3. + <_> + + <_> + 8 2 4 10 -1. + <_> + 10 2 2 10 2. + <_> + + <_> + 13 4 6 16 -1. + <_> + 16 4 3 8 2. + <_> + 13 12 3 8 2. + <_> + + <_> + 1 8 18 5 -1. + <_> + 7 8 6 5 3. + <_> + + <_> + 13 4 6 16 -1. + <_> + 16 4 3 8 2. + <_> + 13 12 3 8 2. + <_> + + <_> + 1 4 6 16 -1. + <_> + 1 4 3 8 2. + <_> + 4 12 3 8 2. + <_> + + <_> + 2 15 18 4 -1. + <_> + 11 15 9 2 2. + <_> + 2 17 9 2 2. + <_> + + <_> + 7 3 2 16 -1. + <_> + 7 11 2 8 2. + <_> + + <_> + 0 4 20 4 -1. + <_> + 0 6 20 2 2. + <_> + + <_> + 2 14 13 3 -1. + <_> + 2 15 13 1 3. + <_> + + <_> + 14 1 6 17 -1. + <_> + 14 1 3 17 2. + <_> + + <_> + 2 9 7 6 -1. + <_> + 2 11 7 2 3. + <_> + + <_> + 11 0 6 16 -1. + <_> + 14 0 3 8 2. + <_> + 11 8 3 8 2. + <_> + + <_> + 1 14 13 3 -1. + <_> + 1 15 13 1 3. + <_> + + <_> + 7 14 13 3 -1. + <_> + 7 15 13 1 3. + <_> + + <_> + 3 0 6 16 -1. + <_> + 3 0 3 8 2. + <_> + 6 8 3 8 2. + <_> + + <_> + 10 12 10 3 -1. + <_> + 10 12 5 3 2. + <_> + + <_> + 3 7 12 5 -1. + <_> + 7 7 4 5 3. + <_> + + <_> + 1 0 18 6 -1. + <_> + 7 0 6 6 3. + <_> + + <_> + 0 12 10 3 -1. + <_> + 5 12 5 3 2. + <_> + + <_> + 4 10 12 4 -1. + <_> + 8 10 4 4 3. + <_> + + <_> + 5 5 6 8 -1. + <_> + 7 5 2 8 3. + <_> + + <_> + 11 9 9 6 -1. + <_> + 11 11 9 2 3. + <_> + + <_> + 4 7 7 9 -1. + <_> + 4 10 7 3 3. + <_> + + <_> + 5 14 10 6 -1. + <_> + 5 16 10 2 3. + <_> + + <_> + 0 14 19 4 -1. + <_> + 0 16 19 2 2. + <_> + + <_> + 6 9 12 8 -1. + <_> + 12 9 6 4 2. + <_> + 6 13 6 4 2. + <_> + + <_> + 1 1 3 14 -1. + <_> + 2 1 1 14 3. + <_> + + <_> + 6 9 12 8 -1. + <_> + 12 9 6 4 2. + <_> + 6 13 6 4 2. + <_> + + <_> + 2 9 12 8 -1. + <_> + 2 9 6 4 2. + <_> + 8 13 6 4 2. + <_> + + <_> + 18 2 2 18 -1. + <_> + 18 2 1 18 2. + <_> + + <_> + 6 5 6 8 -1. + <_> + 8 5 2 8 3. + <_> + + <_> + 10 3 4 12 -1. + <_> + 10 3 2 12 2. + <_> + + <_> + 6 6 6 7 -1. + <_> + 8 6 2 7 3. + <_> + + <_> + 9 8 6 12 -1. + <_> + 12 8 3 6 2. + <_> + 9 14 3 6 2. + <_> + + <_> + 6 0 6 7 -1. + <_> + 8 0 2 7 3. + <_> + + <_> + 18 2 2 18 -1. + <_> + 18 2 1 18 2. + <_> + + <_> + 1 5 17 6 -1. + <_> + 1 7 17 2 3. + <_> + + <_> + 15 3 5 6 -1. + <_> + 15 6 5 3 2. + <_> + + <_> + 4 0 12 6 -1. + <_> + 4 2 12 2 3. + <_> + + <_> + 15 3 5 6 -1. + <_> + 15 6 5 3 2. + <_> + + <_> + 3 0 14 6 -1. + <_> + 3 2 14 2 3. + <_> + + <_> + 15 3 5 6 -1. + <_> + 15 6 5 3 2. + <_> + + <_> + 0 3 5 6 -1. + <_> + 0 6 5 3 2. + <_> + + <_> + 4 1 14 10 -1. + <_> + 4 6 14 5 2. + <_> + + <_> + 0 1 7 4 -1. + <_> + 0 3 7 2 2. + <_> + + <_> + 13 1 7 4 -1. + <_> + 13 3 7 2 2. + <_> + + <_> + 1 4 10 9 -1. + <_> + 6 4 5 9 2. + <_> + + <_> + 10 1 10 19 -1. + <_> + 10 1 5 19 2. + <_> + + <_> + 0 1 10 19 -1. + <_> + 5 1 5 19 2. + <_> + + <_> + 13 5 4 12 -1. + <_> + 13 9 4 4 3. + <_> + + <_> + 3 5 4 12 -1. + <_> + 3 9 4 4 3. + <_> + + <_> + 2 0 18 4 -1. + <_> + 11 0 9 2 2. + <_> + 2 2 9 2 2. + <_> + + <_> + 6 8 6 5 -1. + <_> + 9 8 3 5 2. + <_> + + <_> + 6 5 12 8 -1. + <_> + 12 5 6 4 2. + <_> + 6 9 6 4 2. + <_> + + <_> + 2 5 12 8 -1. + <_> + 2 5 6 4 2. + <_> + 8 9 6 4 2. + <_> + + <_> + 5 4 13 3 -1. + <_> + 5 5 13 1 3. + <_> + + <_> + 2 4 13 3 -1. + <_> + 2 5 13 1 3. + <_> + + <_> + 13 11 7 6 -1. + <_> + 13 13 7 2 3. + <_> + + <_> + 0 11 7 6 -1. + <_> + 0 13 7 2 3. + <_> + + <_> + 7 12 13 2 -1. + <_> + 7 13 13 1 2. + <_> + + <_> + 2 4 15 3 -1. + <_> + 2 5 15 1 3. + <_> + + <_> + 1 14 18 4 -1. + <_> + 10 14 9 2 2. + <_> + 1 16 9 2 2. + <_> + + <_> + 5 8 6 10 -1. + <_> + 5 8 3 5 2. + <_> + 8 13 3 5 2. + <_> + + <_> + 12 4 3 10 -1. + <_> + 12 9 3 5 2. + <_> + + <_> + 2 0 14 3 -1. + <_> + 2 1 14 1 3. + <_> + + <_> + 12 0 8 8 -1. + <_> + 16 0 4 4 2. + <_> + 12 4 4 4 2. + <_> + + <_> + 0 1 15 3 -1. + <_> + 0 2 15 1 3. + <_> + + <_> + 2 1 16 4 -1. + <_> + 2 3 16 2 2. + <_> + + <_> + 0 1 5 9 -1. + <_> + 0 4 5 3 3. + <_> + + <_> + 3 5 15 3 -1. + <_> + 3 6 15 1 3. + <_> + + <_> + 1 5 10 6 -1. + <_> + 1 5 5 3 2. + <_> + 6 8 5 3 2. + <_> + + <_> + 9 2 3 12 -1. + <_> + 9 8 3 6 2. + <_> + + <_> + 0 2 19 2 -1. + <_> + 0 3 19 1 2. + <_> + + <_> + 16 0 4 10 -1. + <_> + 16 0 2 10 2. + <_> + + <_> + 1 8 13 3 -1. + <_> + 1 9 13 1 3. + <_> + + <_> + 7 0 13 4 -1. + <_> + 7 2 13 2 2. + <_> + + <_> + 4 4 3 10 -1. + <_> + 4 9 3 5 2. + <_> + + <_> + 7 9 6 7 -1. + <_> + 9 9 2 7 3. + <_> + + <_> + 4 3 3 13 -1. + <_> + 5 3 1 13 3. + <_> + + <_> + 14 10 6 6 -1. + <_> + 14 10 3 6 2. + <_> + + <_> + 8 0 3 15 -1. + <_> + 8 5 3 5 3. + <_> + + <_> + 12 0 8 8 -1. + <_> + 16 0 4 4 2. + <_> + 12 4 4 4 2. + <_> + + <_> + 7 4 6 9 -1. + <_> + 7 7 6 3 3. + <_> + + <_> + 11 9 9 6 -1. + <_> + 11 11 9 2 3. + <_> + + <_> + 5 13 9 5 -1. + <_> + 8 13 3 5 3. + <_> + + <_> + 9 9 6 10 -1. + <_> + 12 9 3 5 2. + <_> + 9 14 3 5 2. + <_> + + <_> + 5 9 6 10 -1. + <_> + 5 9 3 5 2. + <_> + 8 14 3 5 2. + <_> + + <_> + 13 10 6 10 -1. + <_> + 16 10 3 5 2. + <_> + 13 15 3 5 2. + <_> + + <_> + 1 10 6 10 -1. + <_> + 1 10 3 5 2. + <_> + 4 15 3 5 2. + <_> + + <_> + 10 3 4 12 -1. + <_> + 10 3 2 12 2. + <_> + + <_> + 6 3 4 12 -1. + <_> + 8 3 2 12 2. + <_> + + <_> + 11 1 9 5 -1. + <_> + 14 1 3 5 3. + <_> + + <_> + 2 9 16 3 -1. + <_> + 10 9 8 3 2. + <_> + + <_> + 6 2 8 10 -1. + <_> + 10 2 4 5 2. + <_> + 6 7 4 5 2. + <_> + + <_> + 0 0 8 8 -1. + <_> + 0 0 4 4 2. + <_> + 4 4 4 4 2. + <_> + + <_> + 12 10 6 10 -1. + <_> + 14 10 2 10 3. + <_> + + <_> + 0 1 9 5 -1. + <_> + 3 1 3 5 3. + <_> + + <_> + 16 0 4 17 -1. + <_> + 16 0 2 17 2. + <_> + + <_> + 2 0 6 20 -1. + <_> + 4 0 2 20 3. + <_> + + <_> + 16 0 4 17 -1. + <_> + 16 0 2 17 2. + <_> + + <_> + 6 5 6 7 -1. + <_> + 8 5 2 7 3. + <_> + + <_> + 6 8 12 4 -1. + <_> + 10 8 4 4 3. + <_> + + <_> + 8 5 3 14 -1. + <_> + 8 12 3 7 2. + <_> + + <_> + 8 2 4 12 -1. + <_> + 8 6 4 4 3. + <_> + + <_> + 1 3 14 15 -1. + <_> + 1 8 14 5 3. + <_> + + <_> + 16 0 4 16 -1. + <_> + 16 0 2 16 2. + <_> + + <_> + 4 6 10 9 -1. + <_> + 4 9 10 3 3. + <_> + + <_> + 16 0 4 16 -1. + <_> + 16 0 2 16 2. + <_> + + <_> + 0 0 4 16 -1. + <_> + 2 0 2 16 2. + <_> + + <_> + 15 9 4 7 -1. + <_> + 15 9 2 7 2. + <_> + + <_> + 0 0 9 6 -1. + <_> + 3 0 3 6 3. + <_> + + <_> + 12 11 8 4 -1. + <_> + 12 13 8 2 2. + <_> + + <_> + 1 9 4 7 -1. + <_> + 3 9 2 7 2. + <_> + + <_> + 14 10 6 6 -1. + <_> + 14 10 3 6 2. + <_> + + <_> + 1 7 2 13 -1. + <_> + 2 7 1 13 2. + <_> + + <_> + 1 2 18 11 -1. + <_> + 7 2 6 11 3. + <_> + + <_> + 6 2 4 7 -1. + <_> + 8 2 2 7 2. + <_> + + <_> + 0 6 20 14 -1. + <_> + 10 6 10 7 2. + <_> + 0 13 10 7 2. + <_> + + <_> + 0 5 18 15 -1. + <_> + 6 5 6 15 3. + <_> + + <_> + 16 5 4 15 -1. + <_> + 16 5 2 15 2. + <_> + + <_> + 5 6 6 7 -1. + <_> + 7 6 2 7 3. + <_> + + <_> + 6 8 12 4 -1. + <_> + 10 8 4 4 3. + <_> + + <_> + 5 10 10 6 -1. + <_> + 5 13 10 3 2. + <_> + + <_> + 3 7 17 12 -1. + <_> + 3 13 17 6 2. + <_> + + <_> + 0 7 17 12 -1. + <_> + 0 13 17 6 2. + <_> + + <_> + 2 0 18 19 -1. + <_> + 8 0 6 19 3. + <_> + + <_> + 7 2 4 7 -1. + <_> + 9 2 2 7 2. + <_> + + <_> + 9 7 7 8 -1. + <_> + 9 11 7 4 2. + <_> + + <_> + 0 10 19 2 -1. + <_> + 0 11 19 1 2. + <_> + + <_> + 11 9 9 6 -1. + <_> + 11 11 9 2 3. + <_> + + <_> + 0 0 15 3 -1. + <_> + 5 0 5 3 3. + <_> + + <_> + 18 7 2 13 -1. + <_> + 18 7 1 13 2. + <_> + + <_> + 0 9 9 6 -1. + <_> + 0 11 9 2 3. + <_> + + <_> + 9 7 7 8 -1. + <_> + 9 11 7 4 2. + <_> + + <_> + 4 7 7 8 -1. + <_> + 4 11 7 4 2. + <_> + + <_> + 3 3 16 2 -1. + <_> + 3 4 16 1 2. + <_> + + <_> + 6 10 8 8 -1. + <_> + 6 10 4 4 2. + <_> + 10 14 4 4 2. + <_> + + <_> + 6 13 13 3 -1. + <_> + 6 14 13 1 3. + <_> + + <_> + 0 14 13 3 -1. + <_> + 0 15 13 1 3. + <_> + + <_> + 6 12 10 6 -1. + <_> + 6 14 10 2 3. + <_> + + <_> + 0 13 7 6 -1. + <_> + 0 15 7 2 3. + <_> + + <_> + 3 11 15 9 -1. + <_> + 3 14 15 3 3. + <_> + + <_> + 0 7 2 13 -1. + <_> + 1 7 1 13 2. + <_> + + <_> + 10 0 10 20 -1. + <_> + 10 0 5 20 2. + <_> + + <_> + 0 0 10 20 -1. + <_> + 5 0 5 20 2. + <_> + + <_> + 5 12 13 3 -1. + <_> + 5 13 13 1 3. + <_> + + <_> + 5 6 6 8 -1. + <_> + 5 10 6 4 2. + <_> + + <_> + 4 0 13 18 -1. + <_> + 4 9 13 9 2. + <_> + + <_> + 0 0 15 4 -1. + <_> + 5 0 5 4 3. + <_> + + <_> + 4 7 15 3 -1. + <_> + 9 7 5 3 3. + <_> + + <_> + 6 8 6 6 -1. + <_> + 9 8 3 6 2. + <_> + + <_> + 0 8 20 2 -1. + <_> + 0 8 10 2 2. + <_> + + <_> + 5 0 3 14 -1. + <_> + 6 0 1 14 3. + <_> + + <_> + 13 2 5 12 -1. + <_> + 13 6 5 4 3. + <_> + + <_> + 4 4 12 6 -1. + <_> + 4 4 6 3 2. + <_> + 10 7 6 3 2. + <_> + + <_> + 7 1 9 8 -1. + <_> + 10 1 3 8 3. + <_> + + <_> + 1 1 6 10 -1. + <_> + 1 1 3 5 2. + <_> + 4 6 3 5 2. + <_> + + <_> + 11 10 8 8 -1. + <_> + 11 14 8 4 2. + <_> + + <_> + 1 10 8 8 -1. + <_> + 1 14 8 4 2. + <_> + + <_> + 13 8 3 12 -1. + <_> + 13 14 3 6 2. + <_> + + <_> + 4 8 3 12 -1. + <_> + 4 14 3 6 2. + <_> + + <_> + 13 0 3 13 -1. + <_> + 14 0 1 13 3. + <_> + + <_> + 6 5 6 7 -1. + <_> + 8 5 2 7 3. + <_> + + <_> + 7 1 9 8 -1. + <_> + 10 1 3 8 3. + <_> + + <_> + 4 1 9 8 -1. + <_> + 7 1 3 8 3. + <_> + + <_> + 8 0 6 7 -1. + <_> + 10 0 2 7 3. + <_> + + <_> + 5 2 6 10 -1. + <_> + 5 2 3 5 2. + <_> + 8 7 3 5 2. + <_> + + <_> + 14 0 6 10 -1. + <_> + 17 0 3 5 2. + <_> + 14 5 3 5 2. + <_> + + <_> + 4 0 3 13 -1. + <_> + 5 0 1 13 3. + <_> + + <_> + 14 0 6 10 -1. + <_> + 17 0 3 5 2. + <_> + 14 5 3 5 2. + <_> + + <_> + 0 0 6 10 -1. + <_> + 0 0 3 5 2. + <_> + 3 5 3 5 2. + <_> + + <_> + 8 5 6 7 -1. + <_> + 8 5 3 7 2. + <_> + + <_> + 5 3 4 8 -1. + <_> + 7 3 2 8 2. + <_> + + <_> + 15 2 5 9 -1. + <_> + 15 5 5 3 3. + <_> + + <_> + 1 4 4 16 -1. + <_> + 1 4 2 8 2. + <_> + 3 12 2 8 2. + <_> + + <_> + 3 14 16 4 -1. + <_> + 11 14 8 2 2. + <_> + 3 16 8 2 2. + <_> + + <_> + 5 2 9 6 -1. + <_> + 8 2 3 6 3. + <_> + + <_> + 6 1 14 2 -1. + <_> + 6 1 7 2 2. + <_> + + <_> + 0 1 14 2 -1. + <_> + 7 1 7 2 2. + <_> + + <_> + 8 0 8 8 -1. + <_> + 12 0 4 4 2. + <_> + 8 4 4 4 2. + <_> + + <_> + 5 4 10 14 -1. + <_> + 5 4 5 7 2. + <_> + 10 11 5 7 2. + <_> + + <_> + 2 0 18 4 -1. + <_> + 11 0 9 2 2. + <_> + 2 2 9 2 2. + <_> + + <_> + 6 5 6 7 -1. + <_> + 9 5 3 7 2. + <_> + + <_> + 4 10 14 4 -1. + <_> + 11 10 7 2 2. + <_> + 4 12 7 2 2. + <_> + + <_> + 2 10 14 4 -1. + <_> + 2 10 7 2 2. + <_> + 9 12 7 2 2. + <_> + + <_> + 7 1 9 6 -1. + <_> + 7 4 9 3 2. + <_> + + <_> + 6 0 7 8 -1. + <_> + 6 4 7 4 2. + <_> + + <_> + 8 0 6 7 -1. + <_> + 10 0 2 7 3. + <_> + + <_> + 1 3 9 4 -1. + <_> + 1 5 9 2 2. + <_> + + <_> + 4 4 13 2 -1. + <_> + 4 5 13 1 2. + <_> + + <_> + 1 4 14 3 -1. + <_> + 1 5 14 1 3. + <_> + + <_> + 7 11 6 9 -1. + <_> + 9 11 2 9 3. + <_> + + <_> + 6 11 4 7 -1. + <_> + 8 11 2 7 2. + <_> + + <_> + 4 8 12 12 -1. + <_> + 4 8 6 12 2. + <_> + + <_> + 1 11 18 5 -1. + <_> + 10 11 9 5 2. + <_> + + <_> + 4 5 16 6 -1. + <_> + 4 7 16 2 3. + <_> + + <_> + 0 3 4 16 -1. + <_> + 0 3 2 8 2. + <_> + 2 11 2 8 2. + <_> + + <_> + 16 9 4 11 -1. + <_> + 16 9 2 11 2. + <_> + + <_> + 0 0 20 8 -1. + <_> + 0 4 20 4 2. + <_> + + <_> + 8 7 8 8 -1. + <_> + 12 7 4 4 2. + <_> + 8 11 4 4 2. + <_> + + <_> + 4 7 8 8 -1. + <_> + 4 7 4 4 2. + <_> + 8 11 4 4 2. + <_> + + <_> + 16 9 4 11 -1. + <_> + 16 9 2 11 2. + <_> + + <_> + 4 5 10 12 -1. + <_> + 4 5 5 6 2. + <_> + 9 11 5 6 2. + <_> + + <_> + 16 9 4 11 -1. + <_> + 16 9 2 11 2. + <_> + + <_> + 0 9 4 11 -1. + <_> + 2 9 2 11 2. + <_> + + <_> + 12 4 6 11 -1. + <_> + 12 4 3 11 2. + <_> + + <_> + 2 4 6 11 -1. + <_> + 5 4 3 11 2. + <_> + + <_> + 8 7 5 9 -1. + <_> + 8 10 5 3 3. + <_> + + <_> + 0 14 13 3 -1. + <_> + 0 15 13 1 3. + <_> + + <_> + 0 3 20 4 -1. + <_> + 10 3 10 2 2. + <_> + 0 5 10 2 2. + <_> + + <_> + 0 15 18 4 -1. + <_> + 0 15 9 2 2. + <_> + 9 17 9 2 2. + <_> + + <_> + 6 14 13 3 -1. + <_> + 6 15 13 1 3. + <_> + + <_> + 6 0 6 7 -1. + <_> + 8 0 2 7 3. + <_> + + <_> + 9 2 3 13 -1. + <_> + 10 2 1 13 3. + <_> + + <_> + 8 2 3 13 -1. + <_> + 9 2 1 13 3. + <_> + + <_> + 9 6 6 7 -1. + <_> + 9 6 3 7 2. + <_> + + <_> + 5 6 6 7 -1. + <_> + 8 6 3 7 2. + <_> + + <_> + 8 0 8 5 -1. + <_> + 8 0 4 5 2. + <_> + + <_> + 4 0 8 5 -1. + <_> + 8 0 4 5 2. + <_> + + <_> + 10 0 3 13 -1. + <_> + 11 0 1 13 3. + <_> + + <_> + 5 1 6 19 -1. + <_> + 7 1 2 19 3. + <_> + + <_> + 3 0 15 20 -1. + <_> + 8 0 5 20 3. + <_> + + <_> + 0 4 14 3 -1. + <_> + 7 4 7 3 2. + <_> + + <_> + 4 4 14 6 -1. + <_> + 11 4 7 3 2. + <_> + 4 7 7 3 2. + <_> + + <_> + 0 5 10 6 -1. + <_> + 0 7 10 2 3. + <_> + + <_> + 6 7 14 3 -1. + <_> + 6 8 14 1 3. + <_> + + <_> + 2 2 5 12 -1. + <_> + 2 6 5 4 3. + <_> + + <_> + 9 9 7 4 -1. + <_> + 9 11 7 2 2. + <_> + + <_> + 4 9 7 4 -1. + <_> + 4 11 7 2 2. + <_> + + <_> + 3 8 14 3 -1. + <_> + 3 9 14 1 3. + <_> + + <_> + 3 13 13 3 -1. + <_> + 3 14 13 1 3. + <_> + + <_> + 9 1 4 10 -1. + <_> + 9 6 4 5 2. + <_> + + <_> + 0 8 13 3 -1. + <_> + 0 9 13 1 3. + <_> + + <_> + 3 10 17 2 -1. + <_> + 3 11 17 1 2. + <_> + + <_> + 0 0 6 17 -1. + <_> + 3 0 3 17 2. + <_> + + <_> + 14 0 6 12 -1. + <_> + 14 0 3 12 2. + <_> + + <_> + 2 0 4 16 -1. + <_> + 4 0 2 16 2. + <_> + + <_> + 14 1 6 7 -1. + <_> + 16 1 2 7 3. + <_> + + <_> + 0 1 6 7 -1. + <_> + 2 1 2 7 3. + <_> + + <_> + 9 1 9 12 -1. + <_> + 12 1 3 12 3. + <_> + + <_> + 2 1 9 12 -1. + <_> + 5 1 3 12 3. + <_> + + <_> + 13 5 4 12 -1. + <_> + 13 5 2 12 2. + <_> + + <_> + 3 5 4 12 -1. + <_> + 5 5 2 12 2. + <_> + + <_> + 6 8 12 4 -1. + <_> + 10 8 4 4 3. + <_> + + <_> + 2 8 12 4 -1. + <_> + 6 8 4 4 3. + <_> + + <_> + 2 9 18 11 -1. + <_> + 8 9 6 11 3. + <_> + + <_> + 6 11 6 6 -1. + <_> + 9 11 3 6 2. + <_> + + <_> + 1 12 19 2 -1. + <_> + 1 13 19 1 2. + <_> + + <_> + 0 12 13 3 -1. + <_> + 0 13 13 1 3. + <_> + + <_> + 7 0 6 7 -1. + <_> + 9 0 2 7 3. + <_> + + <_> + 0 8 16 4 -1. + <_> + 0 8 8 2 2. + <_> + 8 10 8 2 2. + <_> + + <_> + 8 6 8 8 -1. + <_> + 12 6 4 4 2. + <_> + 8 10 4 4 2. + <_> + + <_> + 3 13 14 6 -1. + <_> + 3 15 14 2 3. + <_> + + <_> + 4 13 15 6 -1. + <_> + 4 15 15 2 3. + <_> + + <_> + 0 0 14 4 -1. + <_> + 7 0 7 4 2. + <_> + + <_> + 14 3 4 10 -1. + <_> + 14 8 4 5 2. + <_> + + <_> + 2 4 14 12 -1. + <_> + 2 4 7 6 2. + <_> + 9 10 7 6 2. + <_> + + <_> + 7 4 6 10 -1. + <_> + 10 4 3 5 2. + <_> + 7 9 3 5 2. + <_> + + <_> + 1 0 3 15 -1. + <_> + 1 5 3 5 3. + <_> + + <_> + 1 1 19 12 -1. + <_> + 1 5 19 4 3. + <_> + + <_> + 5 13 6 7 -1. + <_> + 7 13 2 7 3. + <_> + + <_> + 10 0 4 16 -1. + <_> + 12 0 2 8 2. + <_> + 10 8 2 8 2. + <_> + + <_> + 6 0 4 16 -1. + <_> + 6 0 2 8 2. + <_> + 8 8 2 8 2. + <_> + + <_> + 8 1 4 11 -1. + <_> + 8 1 2 11 2. + <_> + + <_> + 5 0 6 7 -1. + <_> + 7 0 2 7 3. + <_> + + <_> + 0 11 20 3 -1. + <_> + 0 12 20 1 3. + <_> + + <_> + 6 15 7 4 -1. + <_> + 6 17 7 2 2. + <_> + + <_> + 7 16 7 4 -1. + <_> + 7 18 7 2 2. + <_> + + <_> + 1 14 16 4 -1. + <_> + 1 14 8 2 2. + <_> + 9 16 8 2 2. + <_> + + <_> + 7 16 13 3 -1. + <_> + 7 17 13 1 3. + <_> + + <_> + 1 12 18 8 -1. + <_> + 1 12 9 4 2. + <_> + 10 16 9 4 2. + <_> + + <_> + 14 3 4 10 -1. + <_> + 14 8 4 5 2. + <_> + + <_> + 2 3 4 10 -1. + <_> + 2 8 4 5 2. + <_> + + <_> + 2 1 16 12 -1. + <_> + 2 7 16 6 2. + <_> + + <_> + 7 0 6 16 -1. + <_> + 7 8 6 8 2. + <_> + + <_> + 7 1 8 12 -1. + <_> + 7 7 8 6 2. + <_> + + <_> + 2 12 15 8 -1. + <_> + 7 12 5 8 3. + <_> + + <_> + 4 16 15 4 -1. + <_> + 9 16 5 4 3. + <_> + + <_> + 6 7 8 6 -1. + <_> + 10 7 4 6 2. + <_> + + <_> + 1 8 18 12 -1. + <_> + 1 8 9 12 2. + <_> + + <_> + 0 17 15 3 -1. + <_> + 5 17 5 3 3. + <_> + + <_> + 9 2 6 17 -1. + <_> + 11 2 2 17 3. + <_> + + <_> + 5 2 6 17 -1. + <_> + 7 2 2 17 3. + <_> + + <_> + 7 4 6 7 -1. + <_> + 9 4 2 7 3. + <_> + + <_> + 0 11 15 3 -1. + <_> + 0 12 15 1 3. + <_> + + <_> + 9 10 11 6 -1. + <_> + 9 12 11 2 3. + <_> + + <_> + 8 0 3 18 -1. + <_> + 9 0 1 18 3. + <_> + + <_> + 14 11 4 8 -1. + <_> + 14 15 4 4 2. + <_> + + <_> + 1 11 15 8 -1. + <_> + 1 15 15 4 2. + <_> + + <_> + 9 10 3 10 -1. + <_> + 9 15 3 5 2. + <_> + + <_> + 1 6 18 9 -1. + <_> + 1 9 18 3 3. + <_> + + <_> + 3 1 14 2 -1. + <_> + 3 2 14 1 2. + <_> + + <_> + 0 1 20 3 -1. + <_> + 0 2 20 1 3. + <_> + + <_> + 5 0 14 2 -1. + <_> + 5 1 14 1 2. + <_> + + <_> + 3 8 12 10 -1. + <_> + 7 8 4 10 3. + <_> + + <_> + 8 2 4 12 -1. + <_> + 8 6 4 4 3. + <_> + + <_> + 6 2 8 12 -1. + <_> + 6 6 8 4 3. + <_> + + <_> + 4 3 12 4 -1. + <_> + 4 5 12 2 2. + <_> + + <_> + 0 0 5 9 -1. + <_> + 0 3 5 3 3. + <_> + + <_> + 7 1 9 6 -1. + <_> + 7 4 9 3 2. + <_> + + <_> + 2 10 6 10 -1. + <_> + 4 10 2 10 3. + <_> + + <_> + 2 5 17 14 -1. + <_> + 2 12 17 7 2. + <_> + + <_> + 0 7 10 8 -1. + <_> + 0 11 10 4 2. + <_> + + <_> + 12 4 3 15 -1. + <_> + 13 4 1 15 3. + <_> + + <_> + 5 4 3 15 -1. + <_> + 6 4 1 15 3. + <_> + + <_> + 8 7 12 5 -1. + <_> + 12 7 4 5 3. + <_> + + <_> + 0 7 12 5 -1. + <_> + 4 7 4 5 3. + <_> + + <_> + 3 6 14 3 -1. + <_> + 3 7 14 1 3. + <_> + + <_> + 6 1 2 18 -1. + <_> + 7 1 1 18 2. + <_> + + <_> + 6 16 9 4 -1. + <_> + 6 18 9 2 2. + <_> + + <_> + 3 15 14 4 -1. + <_> + 3 17 14 2 2. + <_> + + <_> + 7 16 13 3 -1. + <_> + 7 17 13 1 3. + <_> + + <_> + 0 4 12 4 -1. + <_> + 4 4 4 4 3. + <_> + + <_> + 6 4 14 4 -1. + <_> + 13 4 7 2 2. + <_> + 6 6 7 2 2. + <_> + + <_> + 0 5 10 6 -1. + <_> + 0 7 10 2 3. + <_> + + <_> + 13 14 7 6 -1. + <_> + 13 16 7 2 3. + <_> + + <_> + 3 12 10 8 -1. + <_> + 3 12 5 4 2. + <_> + 8 16 5 4 2. + <_> + + <_> + 12 10 5 9 -1. + <_> + 12 13 5 3 3. + <_> + + <_> + 0 13 14 4 -1. + <_> + 0 13 7 2 2. + <_> + 7 15 7 2 2. + <_> + + <_> + 13 14 7 6 -1. + <_> + 13 16 7 2 3. + <_> + + <_> + 2 10 6 10 -1. + <_> + 2 10 3 5 2. + <_> + 5 15 3 5 2. + <_> + + <_> + 13 14 7 6 -1. + <_> + 13 16 7 2 3. + <_> + + <_> + 0 14 7 6 -1. + <_> + 0 16 7 2 3. + <_> + + <_> + 0 12 20 6 -1. + <_> + 0 15 20 3 2. + <_> + + <_> + 1 16 16 4 -1. + <_> + 1 18 16 2 2. + <_> + + <_> + 12 10 5 9 -1. + <_> + 12 13 5 3 3. + <_> + + <_> + 3 10 5 9 -1. + <_> + 3 13 5 3 3. + <_> + + <_> + 5 8 13 12 -1. + <_> + 5 12 13 4 3. + <_> + + <_> + 5 5 10 6 -1. + <_> + 5 5 5 3 2. + <_> + 10 8 5 3 2. + <_> + + <_> + 5 5 10 6 -1. + <_> + 10 5 5 3 2. + <_> + 5 8 5 3 2. + <_> + + <_> + 0 3 13 2 -1. + <_> + 0 4 13 1 2. + <_> + + <_> + 8 2 12 4 -1. + <_> + 8 4 12 2 2. + <_> + + <_> + 5 0 8 6 -1. + <_> + 5 2 8 2 3. + <_> + + <_> + 5 2 14 4 -1. + <_> + 12 2 7 2 2. + <_> + 5 4 7 2 2. + <_> + + <_> + 5 0 10 8 -1. + <_> + 5 4 10 4 2. + <_> + + <_> + 12 0 8 4 -1. + <_> + 12 2 8 2 2. + <_> + + <_> + 8 9 4 8 -1. + <_> + 8 13 4 4 2. + <_> + + <_> + 9 10 5 8 -1. + <_> + 9 14 5 4 2. + <_> + + <_> + 0 14 12 4 -1. + <_> + 6 14 6 4 2. + <_> + + <_> + 4 6 14 4 -1. + <_> + 11 6 7 2 2. + <_> + 4 8 7 2 2. + <_> + + <_> + 4 4 11 10 -1. + <_> + 4 9 11 5 2. + <_> + + <_> + 7 1 9 12 -1. + <_> + 7 7 9 6 2. + <_> + + <_> + 8 5 3 15 -1. + <_> + 8 10 3 5 3. + <_> + + <_> + 7 13 13 3 -1. + <_> + 7 14 13 1 3. + <_> + + <_> + 0 4 20 6 -1. + <_> + 0 6 20 2 3. + <_> + + <_> + 5 3 12 4 -1. + <_> + 5 5 12 2 2. + <_> + + <_> + 6 11 8 8 -1. + <_> + 6 11 4 4 2. + <_> + 10 15 4 4 2. + <_> + + <_> + 5 15 13 3 -1. + <_> + 5 16 13 1 3. + <_> + + <_> + 0 13 18 4 -1. + <_> + 0 13 9 2 2. + <_> + 9 15 9 2 2. + <_> + + <_> + 10 0 3 13 -1. + <_> + 11 0 1 13 3. + <_> + + <_> + 7 0 3 13 -1. + <_> + 8 0 1 13 3. + <_> + + <_> + 2 0 18 18 -1. + <_> + 8 0 6 18 3. + <_> + + <_> + 2 2 12 15 -1. + <_> + 2 7 12 5 3. + <_> + + <_> + 7 1 11 18 -1. + <_> + 7 7 11 6 3. + <_> + + <_> + 8 5 4 14 -1. + <_> + 8 5 2 7 2. + <_> + 10 12 2 7 2. + <_> + + <_> + 10 5 3 14 -1. + <_> + 10 12 3 7 2. + <_> + + <_> + 7 5 3 14 -1. + <_> + 7 12 3 7 2. + <_> + + <_> + 3 4 14 4 -1. + <_> + 3 6 14 2 2. + <_> + + <_> + 0 5 20 4 -1. + <_> + 0 5 10 2 2. + <_> + 10 7 10 2 2. + <_> + + <_> + 8 4 4 14 -1. + <_> + 8 11 4 7 2. + <_> + + <_> + 15 3 4 16 -1. + <_> + 17 3 2 8 2. + <_> + 15 11 2 8 2. + <_> + + <_> + 2 0 4 7 -1. + <_> + 4 0 2 7 2. + <_> + + <_> + 12 6 5 9 -1. + <_> + 12 9 5 3 3. + <_> + + <_> + 2 1 8 6 -1. + <_> + 2 3 8 2 3. + <_> + + <_> + 10 1 4 8 -1. + <_> + 10 1 2 8 2. + <_> + + <_> + 6 1 4 8 -1. + <_> + 8 1 2 8 2. + <_> + + <_> + 10 10 7 6 -1. + <_> + 10 12 7 2 3. + <_> + + <_> + 4 6 5 6 -1. + <_> + 4 9 5 3 2. + <_> + + <_> + 7 15 7 4 -1. + <_> + 7 17 7 2 2. + <_> + + <_> + 8 6 4 8 -1. + <_> + 8 10 4 4 2. + <_> + + <_> + 10 10 7 6 -1. + <_> + 10 12 7 2 3. + <_> + + <_> + 3 10 7 6 -1. + <_> + 3 12 7 2 3. + <_> + + <_> + 8 6 6 12 -1. + <_> + 11 6 3 6 2. + <_> + 8 12 3 6 2. + <_> + + <_> + 5 6 4 14 -1. + <_> + 5 6 2 7 2. + <_> + 7 13 2 7 2. + <_> + + <_> + 0 15 20 2 -1. + <_> + 0 15 10 2 2. + <_> + + <_> + 5 0 6 7 -1. + <_> + 7 0 2 7 3. + <_> + + <_> + 6 15 13 2 -1. + <_> + 6 16 13 1 2. + <_> + + <_> + 0 17 19 3 -1. + <_> + 0 18 19 1 3. + <_> + + <_> + 9 5 6 10 -1. + <_> + 12 5 3 5 2. + <_> + 9 10 3 5 2. + <_> + + <_> + 3 3 13 2 -1. + <_> + 3 4 13 1 2. + <_> + + <_> + 2 0 17 6 -1. + <_> + 2 2 17 2 3. + <_> + + <_> + 1 3 4 16 -1. + <_> + 1 3 2 8 2. + <_> + 3 11 2 8 2. + <_> + + <_> + 12 10 8 6 -1. + <_> + 12 12 8 2 3. + <_> + + <_> + 1 7 12 4 -1. + <_> + 5 7 4 4 3. + <_> + + <_> + 14 0 6 5 -1. + <_> + 14 0 3 5 2. + <_> + + <_> + 3 0 14 6 -1. + <_> + 10 0 7 6 2. + <_> + + <_> + 7 9 6 10 -1. + <_> + 10 9 3 5 2. + <_> + 7 14 3 5 2. + <_> + + <_> + 0 14 18 6 -1. + <_> + 6 14 6 6 3. + <_> + + <_> + 11 0 6 16 -1. + <_> + 14 0 3 8 2. + <_> + 11 8 3 8 2. + <_> + + <_> + 5 10 4 7 -1. + <_> + 7 10 2 7 2. + <_> + + <_> + 11 10 4 8 -1. + <_> + 11 10 2 8 2. + <_> + + <_> + 5 10 4 8 -1. + <_> + 7 10 2 8 2. + <_> + + <_> + 16 0 3 13 -1. + <_> + 17 0 1 13 3. + <_> + + <_> + 1 14 16 6 -1. + <_> + 9 14 8 6 2. + <_> + + <_> + 14 2 6 9 -1. + <_> + 14 5 6 3 3. + <_> + + <_> + 5 0 10 6 -1. + <_> + 5 3 10 3 2. + <_> + + <_> + 6 4 14 15 -1. + <_> + 6 9 14 5 3. + <_> + + <_> + 3 1 14 4 -1. + <_> + 3 1 7 2 2. + <_> + 10 3 7 2 2. + <_> + + <_> + 8 3 6 10 -1. + <_> + 11 3 3 5 2. + <_> + 8 8 3 5 2. + <_> + + <_> + 6 3 6 10 -1. + <_> + 6 3 3 5 2. + <_> + 9 8 3 5 2. + <_> + + <_> + 12 4 3 10 -1. + <_> + 12 9 3 5 2. + <_> + + <_> + 5 4 3 10 -1. + <_> + 5 9 3 5 2. + <_> + + <_> + 11 0 6 5 -1. + <_> + 11 0 3 5 2. + <_> + + <_> + 5 7 10 6 -1. + <_> + 5 7 5 3 2. + <_> + 10 10 5 3 2. + <_> + + <_> + 1 10 19 3 -1. + <_> + 1 11 19 1 3. + <_> + + <_> + 1 0 3 13 -1. + <_> + 2 0 1 13 3. + <_> + + <_> + 14 1 6 16 -1. + <_> + 16 1 2 16 3. + <_> + + <_> + 3 5 14 12 -1. + <_> + 3 5 7 6 2. + <_> + 10 11 7 6 2. + <_> + + <_> + 14 1 6 16 -1. + <_> + 16 1 2 16 3. + <_> + + <_> + 0 1 6 16 -1. + <_> + 2 1 2 16 3. + <_> + + <_> + 4 2 12 4 -1. + <_> + 8 2 4 4 3. + <_> + + <_> + 3 9 12 6 -1. + <_> + 3 12 12 3 2. + <_> + + <_> + 8 0 6 7 -1. + <_> + 10 0 2 7 3. + <_> + + <_> + 8 0 2 13 -1. + <_> + 9 0 1 13 2. + <_> + + <_> + 8 9 6 10 -1. + <_> + 11 9 3 5 2. + <_> + 8 14 3 5 2. + <_> + + <_> + 6 9 6 10 -1. + <_> + 6 9 3 5 2. + <_> + 9 14 3 5 2. + <_> + + <_> + 5 17 10 3 -1. + <_> + 5 17 5 3 2. + <_> + + <_> + 7 2 2 18 -1. + <_> + 8 2 1 18 2. + <_> + + <_> + 5 14 15 6 -1. + <_> + 10 14 5 6 3. + <_> + + <_> + 0 9 7 6 -1. + <_> + 0 11 7 2 3. + <_> + + <_> + 5 14 15 6 -1. + <_> + 10 14 5 6 3. + <_> + + <_> + 0 14 15 6 -1. + <_> + 5 14 5 6 3. + <_> + + <_> + 12 9 7 6 -1. + <_> + 12 11 7 2 3. + <_> + + <_> + 2 4 4 14 -1. + <_> + 2 4 2 7 2. + <_> + 4 11 2 7 2. + <_> + + <_> + 11 1 6 12 -1. + <_> + 14 1 3 6 2. + <_> + 11 7 3 6 2. + <_> + + <_> + 3 1 6 12 -1. + <_> + 3 1 3 6 2. + <_> + 6 7 3 6 2. + <_> + + <_> + 4 7 15 6 -1. + <_> + 9 7 5 6 3. + <_> + + <_> + 1 0 6 10 -1. + <_> + 1 0 3 5 2. + <_> + 4 5 3 5 2. + <_> + + <_> + 8 13 9 5 -1. + <_> + 11 13 3 5 3. + <_> + + <_> + 0 0 9 7 -1. + <_> + 3 0 3 7 3. + <_> + + <_> + 9 7 8 5 -1. + <_> + 9 7 4 5 2. + <_> + + <_> + 3 7 8 5 -1. + <_> + 7 7 4 5 2. + <_> + + <_> + 4 0 12 19 -1. + <_> + 8 0 4 19 3. + <_> + + <_> + 3 8 8 6 -1. + <_> + 7 8 4 6 2. + <_> + + <_> + 15 2 5 6 -1. + <_> + 15 5 5 3 2. + <_> + + <_> + 3 1 13 10 -1. + <_> + 3 6 13 5 2. + <_> + + <_> + 14 0 3 10 -1. + <_> + 14 5 3 5 2. + <_> + + <_> + 0 1 20 8 -1. + <_> + 0 1 10 4 2. + <_> + 10 5 10 4 2. + <_> + + <_> + 8 6 6 12 -1. + <_> + 11 6 3 6 2. + <_> + 8 12 3 6 2. + <_> + + <_> + 6 5 6 7 -1. + <_> + 8 5 2 7 3. + <_> + + <_> + 8 10 6 10 -1. + <_> + 10 10 2 10 3. + <_> + + <_> + 9 3 2 14 -1. + <_> + 9 10 2 7 2. + <_> + + <_> + 11 1 4 18 -1. + <_> + 11 1 2 18 2. + <_> + + <_> + 5 1 4 18 -1. + <_> + 7 1 2 18 2. + <_> + + <_> + 7 1 8 5 -1. + <_> + 7 1 4 5 2. + <_> + + <_> + 5 5 6 8 -1. + <_> + 7 5 2 8 3. + <_> + + <_> + 12 9 7 6 -1. + <_> + 12 11 7 2 3. + <_> + + <_> + 1 9 7 6 -1. + <_> + 1 11 7 2 3. + <_> + + <_> + 9 10 7 4 -1. + <_> + 9 12 7 2 2. + <_> + + <_> + 0 2 5 9 -1. + <_> + 0 5 5 3 3. + <_> + + <_> + 10 2 6 9 -1. + <_> + 10 5 6 3 3. + <_> + + <_> + 0 1 18 6 -1. + <_> + 0 1 9 3 2. + <_> + 9 4 9 3 2. + <_> + + <_> + 5 6 14 3 -1. + <_> + 5 7 14 1 3. + <_> + + <_> + 0 12 6 5 -1. + <_> + 3 12 3 5 2. + <_> + + <_> + 10 10 9 6 -1. + <_> + 13 10 3 6 3. + <_> + + <_> + 0 9 5 9 -1. + <_> + 0 12 5 3 3. + <_> + + <_> + 8 0 8 19 -1. + <_> + 8 0 4 19 2. + <_> + + <_> + 6 5 6 7 -1. + <_> + 8 5 2 7 3. + <_> + + <_> + 9 0 2 13 -1. + <_> + 9 0 1 13 2. + <_> + + <_> + 6 0 6 7 -1. + <_> + 8 0 2 7 3. + <_> + + <_> + 12 12 8 6 -1. + <_> + 12 14 8 2 3. + <_> + + <_> + 3 9 9 6 -1. + <_> + 6 9 3 6 3. + <_> + + <_> + 6 4 12 14 -1. + <_> + 10 4 4 14 3. + <_> + + <_> + 2 4 12 14 -1. + <_> + 6 4 4 14 3. + <_> + + <_> + 7 1 8 5 -1. + <_> + 7 1 4 5 2. + <_> + + <_> + 4 0 8 19 -1. + <_> + 8 0 4 19 2. + <_> + + <_> + 8 13 9 5 -1. + <_> + 11 13 3 5 3. + <_> + + <_> + 3 13 9 5 -1. + <_> + 6 13 3 5 3. + <_> + + <_> + 4 1 12 4 -1. + <_> + 8 1 4 4 3. + <_> + + <_> + 1 2 8 18 -1. + <_> + 1 2 4 9 2. + <_> + 5 11 4 9 2. + <_> + + <_> + 8 0 12 20 -1. + <_> + 8 0 6 20 2. + <_> + + <_> + 0 0 12 20 -1. + <_> + 6 0 6 20 2. + <_> + + <_> + 11 11 6 9 -1. + <_> + 11 14 6 3 3. + <_> + + <_> + 3 11 6 9 -1. + <_> + 3 14 6 3 3. + <_> + + <_> + 8 14 10 6 -1. + <_> + 13 14 5 3 2. + <_> + 8 17 5 3 2. + <_> + + <_> + 7 13 6 7 -1. + <_> + 9 13 2 7 3. + <_> + + <_> + 9 5 7 6 -1. + <_> + 9 7 7 2 3. + <_> + + <_> + 4 5 7 6 -1. + <_> + 4 7 7 2 3. + <_> + + <_> + 3 0 17 16 -1. + <_> + 3 8 17 8 2. + <_> + + <_> + 0 0 19 3 -1. + <_> + 0 1 19 1 3. + <_> + + <_> + 11 1 5 9 -1. + <_> + 11 4 5 3 3. + <_> + + <_> + 4 1 10 6 -1. + <_> + 4 4 10 3 2. + <_> + + <_> + 7 10 12 9 -1. + <_> + 7 13 12 3 3. + <_> + + <_> + 1 10 12 3 -1. + <_> + 7 10 6 3 2. + <_> + + <_> + 7 8 6 12 -1. + <_> + 10 8 3 6 2. + <_> + 7 14 3 6 2. + <_> + + <_> + 2 14 10 6 -1. + <_> + 2 14 5 3 2. + <_> + 7 17 5 3 2. + <_> + + <_> + 6 9 8 8 -1. + <_> + 10 9 4 4 2. + <_> + 6 13 4 4 2. + <_> + + <_> + 1 17 18 3 -1. + <_> + 7 17 6 3 3. + <_> + + <_> + 6 6 10 6 -1. + <_> + 11 6 5 3 2. + <_> + 6 9 5 3 2. + <_> + + <_> + 4 6 10 6 -1. + <_> + 4 6 5 3 2. + <_> + 9 9 5 3 2. + <_> + + <_> + 6 14 9 5 -1. + <_> + 9 14 3 5 3. + <_> + + <_> + 6 10 6 10 -1. + <_> + 8 10 2 10 3. + <_> + + <_> + 8 5 6 7 -1. + <_> + 10 5 2 7 3. + <_> + + <_> + 8 8 4 7 -1. + <_> + 10 8 2 7 2. + <_> + + <_> + 8 10 8 4 -1. + <_> + 8 12 8 2 2. + <_> + + <_> + 0 0 10 9 -1. + <_> + 0 3 10 3 3. + <_> + + <_> + 9 1 8 4 -1. + <_> + 9 3 8 2 2. + <_> + + <_> + 4 5 5 6 -1. + <_> + 4 8 5 3 2. + <_> + + <_> + 8 6 9 4 -1. + <_> + 8 8 9 2 2. + <_> + + <_> + 0 0 3 13 -1. + <_> + 1 0 1 13 3. + <_> + + <_> + 13 1 6 11 -1. + <_> + 15 1 2 11 3. + <_> + + <_> + 1 1 6 11 -1. + <_> + 3 1 2 11 3. + <_> + + <_> + 11 0 6 5 -1. + <_> + 11 0 3 5 2. + <_> + + <_> + 4 2 6 17 -1. + <_> + 6 2 2 17 3. + <_> + + <_> + 8 12 8 8 -1. + <_> + 12 12 4 4 2. + <_> + 8 16 4 4 2. + <_> + + <_> + 4 0 3 13 -1. + <_> + 5 0 1 13 3. + <_> + + <_> + 6 6 8 4 -1. + <_> + 6 8 8 2 2. + <_> + + <_> + 2 10 9 6 -1. + <_> + 2 13 9 3 2. + <_> + + <_> + 9 11 11 6 -1. + <_> + 9 14 11 3 2. + <_> + + <_> + 3 11 14 8 -1. + <_> + 3 11 7 4 2. + <_> + 10 15 7 4 2. + <_> + + <_> + 8 4 4 10 -1. + <_> + 8 9 4 5 2. + <_> + + <_> + 1 12 13 3 -1. + <_> + 1 13 13 1 3. + <_> + + <_> + 9 7 4 12 -1. + <_> + 9 11 4 4 3. + <_> + + <_> + 0 14 7 6 -1. + <_> + 0 17 7 3 2. + <_> + + <_> + 13 11 7 6 -1. + <_> + 13 13 7 2 3. + <_> + + <_> + 4 4 12 16 -1. + <_> + 4 12 12 8 2. + <_> + + <_> + 11 10 9 4 -1. + <_> + 11 12 9 2 2. + <_> + + <_> + 0 10 9 4 -1. + <_> + 0 12 9 2 2. + <_> + + <_> + 2 11 16 6 -1. + <_> + 2 14 16 3 2. + <_> + + <_> + 0 7 2 13 -1. + <_> + 1 7 1 13 2. + <_> + + <_> + 7 0 6 7 -1. + <_> + 9 0 2 7 3. + <_> + + <_> + 0 11 12 4 -1. + <_> + 4 11 4 4 3. + <_> + + <_> + 11 9 6 8 -1. + <_> + 13 9 2 8 3. + <_> + + <_> + 3 9 6 8 -1. + <_> + 5 9 2 8 3. + <_> + + <_> + 11 0 2 19 -1. + <_> + 11 0 1 19 2. + <_> + + <_> + 5 10 4 8 -1. + <_> + 7 10 2 8 2. + <_> + + <_> + 13 14 7 6 -1. + <_> + 13 16 7 2 3. + <_> + + <_> + 1 15 13 3 -1. + <_> + 1 16 13 1 3. + <_> + + <_> + 5 15 13 3 -1. + <_> + 5 16 13 1 3. + <_> + + <_> + 4 16 9 4 -1. + <_> + 4 18 9 2 2. + <_> + + <_> + 7 13 7 6 -1. + <_> + 7 15 7 2 3. + <_> + + <_> + 3 14 14 4 -1. + <_> + 3 14 7 2 2. + <_> + 10 16 7 2 2. + <_> + + <_> + 13 0 7 14 -1. + <_> + 13 7 7 7 2. + <_> + + <_> + 0 0 7 14 -1. + <_> + 0 7 7 7 2. + <_> + + <_> + 3 2 16 4 -1. + <_> + 3 2 8 4 2. + <_> + + <_> + 6 2 4 8 -1. + <_> + 6 6 4 4 2. + <_> + + <_> + 10 0 3 14 -1. + <_> + 10 7 3 7 2. + <_> + + <_> + 1 7 18 9 -1. + <_> + 1 10 18 3 3. + <_> + + <_> + 6 5 9 14 -1. + <_> + 9 5 3 14 3. + <_> + + <_> + 5 5 9 14 -1. + <_> + 8 5 3 14 3. + <_> + + <_> + 11 2 2 15 -1. + <_> + 11 2 1 15 2. + <_> + + <_> + 6 8 4 8 -1. + <_> + 8 8 2 8 2. + <_> + + <_> + 6 10 10 9 -1. + <_> + 6 13 10 3 3. + <_> + + <_> + 0 16 14 4 -1. + <_> + 0 16 7 2 2. + <_> + 7 18 7 2 2. + <_> + + <_> + 9 5 4 13 -1. + <_> + 9 5 2 13 2. + <_> + + <_> + 4 11 12 4 -1. + <_> + 8 11 4 4 3. + <_> + + <_> + 6 17 14 2 -1. + <_> + 6 17 7 2 2. + <_> + + <_> + 0 9 14 2 -1. + <_> + 7 9 7 2 2. + <_> + + <_> + 16 0 4 15 -1. + <_> + 16 0 2 15 2. + <_> + + <_> + 0 0 4 10 -1. + <_> + 2 0 2 10 2. + <_> + + <_> + 16 8 4 12 -1. + <_> + 16 12 4 4 3. + <_> + + <_> + 0 8 4 12 -1. + <_> + 0 12 4 4 3. + <_> + + <_> + 12 12 8 6 -1. + <_> + 12 14 8 2 3. + <_> + + <_> + 0 12 8 6 -1. + <_> + 0 14 8 2 3. + <_> + + <_> + 9 5 4 14 -1. + <_> + 11 5 2 7 2. + <_> + 9 12 2 7 2. + <_> + + <_> + 0 11 11 6 -1. + <_> + 0 14 11 3 2. + <_> + + <_> + 5 15 12 5 -1. + <_> + 9 15 4 5 3. + <_> + + <_> + 6 6 6 12 -1. + <_> + 6 6 3 6 2. + <_> + 9 12 3 6 2. + <_> + + <_> + 7 7 8 4 -1. + <_> + 7 7 4 4 2. + <_> + + <_> + 5 8 6 10 -1. + <_> + 5 8 3 5 2. + <_> + 8 13 3 5 2. + <_> + + <_> + 7 4 7 14 -1. + <_> + 7 11 7 7 2. + <_> + + <_> + 7 6 4 8 -1. + <_> + 7 10 4 4 2. + <_> + + <_> + 9 2 6 9 -1. + <_> + 9 5 6 3 3. + <_> + + <_> + 5 2 6 9 -1. + <_> + 5 5 6 3 3. + <_> + + <_> + 14 0 3 13 -1. + <_> + 15 0 1 13 3. + <_> + + <_> + 8 1 4 11 -1. + <_> + 10 1 2 11 2. + <_> + + <_> + 1 1 18 4 -1. + <_> + 10 1 9 2 2. + <_> + 1 3 9 2 2. + <_> + + <_> + 3 4 4 16 -1. + <_> + 3 4 2 8 2. + <_> + 5 12 2 8 2. + <_> + + <_> + 8 12 6 8 -1. + <_> + 10 12 2 8 3. + <_> + + <_> + 0 3 6 7 -1. + <_> + 2 3 2 7 3. + <_> + + <_> + 14 2 6 9 -1. + <_> + 14 5 6 3 3. + <_> + + <_> + 0 2 7 9 -1. + <_> + 0 5 7 3 3. + <_> + + <_> + 16 0 3 13 -1. + <_> + 17 0 1 13 3. + <_> + + <_> + 1 0 3 13 -1. + <_> + 2 0 1 13 3. + <_> + + <_> + 6 7 12 7 -1. + <_> + 6 7 6 7 2. + <_> + + <_> + 5 3 6 10 -1. + <_> + 5 3 3 5 2. + <_> + 8 8 3 5 2. + <_> + + <_> + 6 9 9 5 -1. + <_> + 9 9 3 5 3. + <_> + + <_> + 3 0 6 5 -1. + <_> + 6 0 3 5 2. + <_> + + <_> + 10 0 6 8 -1. + <_> + 12 0 2 8 3. + <_> + + <_> + 4 4 12 8 -1. + <_> + 4 4 6 4 2. + <_> + 10 8 6 4 2. + <_> + + <_> + 8 8 10 6 -1. + <_> + 13 8 5 3 2. + <_> + 8 11 5 3 2. + <_> + + <_> + 2 8 10 6 -1. + <_> + 2 8 5 3 2. + <_> + 7 11 5 3 2. + <_> + + <_> + 9 5 8 14 -1. + <_> + 13 5 4 7 2. + <_> + 9 12 4 7 2. + <_> + + <_> + 3 0 3 13 -1. + <_> + 4 0 1 13 3. + <_> + + <_> + 6 14 9 5 -1. + <_> + 9 14 3 5 3. + <_> + + <_> + 1 6 4 14 -1. + <_> + 1 6 2 7 2. + <_> + 3 13 2 7 2. + <_> + + <_> + 9 6 8 8 -1. + <_> + 13 6 4 4 2. + <_> + 9 10 4 4 2. + <_> + + <_> + 0 4 4 8 -1. + <_> + 2 4 2 8 2. + <_> + + <_> + 9 5 8 14 -1. + <_> + 13 5 4 7 2. + <_> + 9 12 4 7 2. + <_> + + <_> + 3 6 8 8 -1. + <_> + 3 6 4 4 2. + <_> + 7 10 4 4 2. + <_> + + <_> + 11 3 6 10 -1. + <_> + 14 3 3 5 2. + <_> + 11 8 3 5 2. + <_> + + <_> + 3 3 6 10 -1. + <_> + 3 3 3 5 2. + <_> + 6 8 3 5 2. + <_> + + <_> + 11 0 8 10 -1. + <_> + 15 0 4 5 2. + <_> + 11 5 4 5 2. + <_> + + <_> + 3 13 13 3 -1. + <_> + 3 14 13 1 3. + <_> + + <_> + 5 14 13 3 -1. + <_> + 5 15 13 1 3. + <_> + + <_> + 0 4 4 12 -1. + <_> + 0 8 4 4 3. + <_> + + <_> + 4 8 16 6 -1. + <_> + 12 8 8 3 2. + <_> + 4 11 8 3 2. + <_> + + <_> + 0 11 7 6 -1. + <_> + 0 13 7 2 3. + <_> + + <_> + 12 11 7 6 -1. + <_> + 12 13 7 2 3. + <_> + + <_> + 2 9 9 7 -1. + <_> + 5 9 3 7 3. + <_> + + <_> + 5 6 15 9 -1. + <_> + 5 9 15 3 3. + <_> + + <_> + 0 6 15 9 -1. + <_> + 0 9 15 3 3. + <_> + + <_> + 6 8 14 2 -1. + <_> + 6 9 14 1 2. + <_> + + <_> + 3 8 10 3 -1. + <_> + 8 8 5 3 2. + <_> + + <_> + 11 0 9 5 -1. + <_> + 14 0 3 5 3. + <_> + + <_> + 2 6 16 2 -1. + <_> + 10 6 8 2 2. + <_> + + <_> + 5 12 12 8 -1. + <_> + 5 12 6 8 2. + <_> + + <_> + 0 3 18 3 -1. + <_> + 0 4 18 1 3. + <_> + + <_> + 3 15 14 4 -1. + <_> + 10 15 7 2 2. + <_> + 3 17 7 2 2. + <_> + + <_> + 2 7 16 2 -1. + <_> + 2 8 16 1 2. + <_> + + <_> + 10 2 7 6 -1. + <_> + 10 4 7 2 3. + <_> + + <_> + 0 10 19 2 -1. + <_> + 0 11 19 1 2. + <_> + + <_> + 13 0 7 18 -1. + <_> + 13 9 7 9 2. + <_> + + <_> + 1 9 9 5 -1. + <_> + 4 9 3 5 3. + <_> + + <_> + 18 0 2 17 -1. + <_> + 18 0 1 17 2. + <_> + + <_> + 0 0 2 16 -1. + <_> + 1 0 1 16 2. + <_> + + <_> + 7 1 6 10 -1. + <_> + 10 1 3 5 2. + <_> + 7 6 3 5 2. + <_> + + <_> + 0 9 12 11 -1. + <_> + 4 9 4 11 3. + <_> + + <_> + 10 2 4 16 -1. + <_> + 10 2 2 16 2. + <_> + + <_> + 6 2 4 16 -1. + <_> + 8 2 2 16 2. + <_> + + <_> + 9 0 3 13 -1. + <_> + 10 0 1 13 3. + <_> + + <_> + 7 4 4 12 -1. + <_> + 9 4 2 12 2. + <_> + + <_> + 7 9 10 9 -1. + <_> + 7 9 5 9 2. + <_> + + <_> + 0 6 13 3 -1. + <_> + 0 7 13 1 3. + <_> + + <_> + 10 2 7 6 -1. + <_> + 10 4 7 2 3. + <_> + + <_> + 4 2 11 6 -1. + <_> + 4 4 11 2 3. + <_> + + <_> + 9 1 8 4 -1. + <_> + 9 3 8 2 2. + <_> + + <_> + 5 5 6 10 -1. + <_> + 5 5 3 5 2. + <_> + 8 10 3 5 2. + <_> + + <_> + 15 3 3 13 -1. + <_> + 16 3 1 13 3. + <_> + + <_> + 2 3 3 13 -1. + <_> + 3 3 1 13 3. + <_> + + <_> + 13 1 3 13 -1. + <_> + 14 1 1 13 3. + <_> + + <_> + 4 1 10 6 -1. + <_> + 4 3 10 2 3. + <_> + + <_> + 0 2 20 8 -1. + <_> + 0 6 20 4 2. + <_> + + <_> + 2 1 13 18 -1. + <_> + 2 10 13 9 2. + <_> + + <_> + 9 5 3 10 -1. + <_> + 9 10 3 5 2. + <_> + + <_> + 3 6 12 14 -1. + <_> + 9 6 6 14 2. + <_> + + <_> + 8 12 6 6 -1. + <_> + 8 12 3 6 2. + <_> + + <_> + 1 9 18 3 -1. + <_> + 7 9 6 3 3. + <_> + + <_> + 2 14 18 2 -1. + <_> + 2 14 9 2 2. + <_> + + <_> + 4 1 3 13 -1. + <_> + 5 1 1 13 3. + <_> + + <_> + 11 6 6 7 -1. + <_> + 13 6 2 7 3. + <_> + + <_> + 3 6 6 7 -1. + <_> + 5 6 2 7 3. + <_> + + <_> + 12 0 3 13 -1. + <_> + 13 0 1 13 3. + <_> + + <_> + 8 6 3 13 -1. + <_> + 9 6 1 13 3. + <_> + + <_> + 8 8 5 12 -1. + <_> + 8 12 5 4 3. + <_> + + <_> + 2 4 8 5 -1. + <_> + 6 4 4 5 2. + <_> + + <_> + 9 5 6 7 -1. + <_> + 11 5 2 7 3. + <_> + + <_> + 7 4 6 16 -1. + <_> + 7 4 3 8 2. + <_> + 10 12 3 8 2. + <_> + + <_> + 12 0 3 13 -1. + <_> + 13 0 1 13 3. + <_> + + <_> + 3 7 8 4 -1. + <_> + 3 9 8 2 2. + <_> + + <_> + 4 8 16 6 -1. + <_> + 12 8 8 3 2. + <_> + 4 11 8 3 2. + <_> + + <_> + 5 11 9 8 -1. + <_> + 5 15 9 4 2. + <_> + + <_> + 10 3 6 17 -1. + <_> + 12 3 2 17 3. + <_> + + <_> + 4 3 6 17 -1. + <_> + 6 3 2 17 3. + <_> + + <_> + 5 6 10 3 -1. + <_> + 5 6 5 3 2. + <_> + + <_> + 1 16 16 2 -1. + <_> + 9 16 8 2 2. + <_> + + <_> + 7 1 6 10 -1. + <_> + 9 1 2 10 3. + <_> + + <_> + 5 0 3 13 -1. + <_> + 6 0 1 13 3. + <_> + + <_> + 4 9 13 2 -1. + <_> + 4 10 13 1 2. + <_> + + <_> + 1 0 13 3 -1. + <_> + 1 1 13 1 3. + <_> + + <_> + 3 0 14 12 -1. + <_> + 3 4 14 4 3. + <_> + + <_> + 0 1 10 6 -1. + <_> + 0 4 10 3 2. + <_> + + <_> + 9 0 11 10 -1. + <_> + 9 5 11 5 2. + <_> + + <_> + 0 0 20 20 -1. + <_> + 0 10 20 10 2. + <_> + + <_> + 10 1 10 4 -1. + <_> + 10 1 5 4 2. + <_> + + <_> + 0 1 10 4 -1. + <_> + 5 1 5 4 2. + <_> + + <_> + 11 0 8 10 -1. + <_> + 15 0 4 5 2. + <_> + 11 5 4 5 2. + <_> + + <_> + 1 0 8 10 -1. + <_> + 1 0 4 5 2. + <_> + 5 5 4 5 2. + <_> + + <_> + 6 3 14 4 -1. + <_> + 13 3 7 2 2. + <_> + 6 5 7 2 2. + <_> + + <_> + 0 3 20 4 -1. + <_> + 0 3 10 2 2. + <_> + 10 5 10 2 2. + <_> + + <_> + 9 5 6 7 -1. + <_> + 11 5 2 7 3. + <_> + + <_> + 5 5 6 7 -1. + <_> + 7 5 2 7 3. + <_> + + <_> + 6 6 8 7 -1. + <_> + 6 6 4 7 2. + <_> + + <_> + 8 6 4 7 -1. + <_> + 10 6 2 7 2. + <_> + + <_> + 8 0 6 7 -1. + <_> + 10 0 2 7 3. + <_> + + <_> + 6 0 6 7 -1. + <_> + 8 0 2 7 3. + <_> + + <_> + 4 0 12 16 -1. + <_> + 8 0 4 16 3. + <_> + + <_> + 5 6 4 8 -1. + <_> + 7 6 2 8 2. + <_> + + <_> + 7 12 11 8 -1. + <_> + 7 16 11 4 2. + <_> + + <_> + 6 0 6 12 -1. + <_> + 6 0 3 6 2. + <_> + 9 6 3 6 2. + <_> + + <_> + 4 3 12 12 -1. + <_> + 10 3 6 6 2. + <_> + 4 9 6 6 2. + <_> + + <_> + 2 10 6 7 -1. + <_> + 4 10 2 7 3. + <_> + + <_> + 15 10 4 7 -1. + <_> + 15 10 2 7 2. + <_> + + <_> + 1 10 4 7 -1. + <_> + 3 10 2 7 2. + <_> + + <_> + 8 5 6 7 -1. + <_> + 10 5 2 7 3. + <_> + + <_> + 3 2 13 2 -1. + <_> + 3 3 13 1 2. + <_> + + <_> + 4 3 14 3 -1. + <_> + 4 4 14 1 3. + <_> + + <_> + 1 0 7 6 -1. + <_> + 1 2 7 2 3. + <_> + + <_> + 6 5 13 9 -1. + <_> + 6 8 13 3 3. + <_> + + <_> + 0 8 16 6 -1. + <_> + 0 8 8 3 2. + <_> + 8 11 8 3 2. + <_> + + <_> + 15 1 5 12 -1. + <_> + 15 5 5 4 3. + <_> + + <_> + 0 1 5 12 -1. + <_> + 0 5 5 4 3. + <_> + + <_> + 5 14 14 3 -1. + <_> + 5 15 14 1 3. + <_> + + <_> + 2 10 6 9 -1. + <_> + 4 10 2 9 3. + <_> + + <_> + 11 13 9 7 -1. + <_> + 14 13 3 7 3. + <_> + + <_> + 0 15 9 5 -1. + <_> + 3 15 3 5 3. + <_> + + <_> + 16 9 4 11 -1. + <_> + 16 9 2 11 2. + <_> + + <_> + 0 11 19 3 -1. + <_> + 0 12 19 1 3. + <_> + + <_> + 6 15 14 4 -1. + <_> + 13 15 7 2 2. + <_> + 6 17 7 2 2. + <_> + + <_> + 0 5 12 6 -1. + <_> + 0 7 12 2 3. + <_> + + <_> + 16 9 4 11 -1. + <_> + 16 9 2 11 2. + <_> + + <_> + 0 9 4 11 -1. + <_> + 2 9 2 11 2. + <_> + + <_> + 2 11 18 5 -1. + <_> + 8 11 6 5 3. + <_> + + <_> + 1 15 14 4 -1. + <_> + 1 15 7 2 2. + <_> + 8 17 7 2 2. + <_> + + <_> + 12 10 7 9 -1. + <_> + 12 13 7 3 3. + <_> + + <_> + 1 10 7 9 -1. + <_> + 1 13 7 3 3. + <_> + + <_> + 11 7 8 8 -1. + <_> + 15 7 4 4 2. + <_> + 11 11 4 4 2. + <_> + + <_> + 6 14 8 4 -1. + <_> + 6 16 8 2 2. + <_> + + <_> + 11 1 2 19 -1. + <_> + 11 1 1 19 2. + <_> + + <_> + 6 10 3 10 -1. + <_> + 6 15 3 5 2. + <_> + + <_> + 11 9 6 5 -1. + <_> + 11 9 3 5 2. + <_> + + <_> + 3 9 6 5 -1. + <_> + 6 9 3 5 2. + <_> + + <_> + 4 12 15 4 -1. + <_> + 9 12 5 4 3. + <_> + + <_> + 0 5 16 2 -1. + <_> + 8 5 8 2 2. + <_> + + <_> + 6 6 14 4 -1. + <_> + 13 6 7 2 2. + <_> + 6 8 7 2 2. + <_> + + <_> + 3 5 8 14 -1. + <_> + 3 5 4 7 2. + <_> + 7 12 4 7 2. + <_> + + <_> + 12 2 7 15 -1. + <_> + 12 7 7 5 3. + <_> + + <_> + 1 2 7 15 -1. + <_> + 1 7 7 5 3. + <_> + + <_> + 13 0 6 12 -1. + <_> + 13 6 6 6 2. + <_> + + <_> + 6 0 8 10 -1. + <_> + 6 0 4 5 2. + <_> + 10 5 4 5 2. + <_> + + <_> + 11 0 2 19 -1. + <_> + 11 0 1 19 2. + <_> + + <_> + 4 12 8 8 -1. + <_> + 4 12 4 4 2. + <_> + 8 16 4 4 2. + <_> + + <_> + 4 12 15 4 -1. + <_> + 9 12 5 4 3. + <_> + + <_> + 7 0 2 19 -1. + <_> + 8 0 1 19 2. + <_> + + <_> + 8 4 6 9 -1. + <_> + 10 4 2 9 3. + <_> + + <_> + 5 5 8 4 -1. + <_> + 9 5 4 4 2. + <_> + + <_> + 4 12 15 4 -1. + <_> + 9 12 5 4 3. + <_> + + <_> + 2 6 4 12 -1. + <_> + 2 12 4 6 2. + <_> + + <_> + 6 7 12 6 -1. + <_> + 10 7 4 6 3. + <_> + + <_> + 3 5 12 4 -1. + <_> + 7 5 4 4 3. + <_> + + <_> + 8 14 12 4 -1. + <_> + 8 14 6 4 2. + <_> + + <_> + 0 14 12 4 -1. + <_> + 6 14 6 4 2. + <_> + + <_> + 4 12 15 4 -1. + <_> + 9 12 5 4 3. + <_> + + <_> + 1 12 15 4 -1. + <_> + 6 12 5 4 3. + <_> + + <_> + 6 0 12 18 -1. + <_> + 10 0 4 18 3. + <_> + + <_> + 0 6 14 4 -1. + <_> + 0 6 7 2 2. + <_> + 7 8 7 2 2. + <_> + + <_> + 13 13 7 6 -1. + <_> + 13 15 7 2 3. + <_> + + <_> + 0 0 6 18 -1. + <_> + 0 9 6 9 2. + <_> + + <_> + 6 8 14 4 -1. + <_> + 13 8 7 2 2. + <_> + 6 10 7 2 2. + <_> + + <_> + 0 8 14 4 -1. + <_> + 0 8 7 2 2. + <_> + 7 10 7 2 2. + <_> + + <_> + 3 2 14 10 -1. + <_> + 3 7 14 5 2. + <_> + + <_> + 3 5 6 7 -1. + <_> + 5 5 2 7 3. + <_> + + <_> + 4 4 14 6 -1. + <_> + 11 4 7 3 2. + <_> + 4 7 7 3 2. + <_> + + <_> + 6 2 4 10 -1. + <_> + 6 7 4 5 2. + <_> + + <_> + 11 1 3 18 -1. + <_> + 11 7 3 6 3. + <_> + + <_> + 3 1 3 15 -1. + <_> + 3 6 3 5 3. + <_> + + <_> + 7 0 8 6 -1. + <_> + 7 0 4 6 2. + <_> + + <_> + 2 0 9 15 -1. + <_> + 2 5 9 5 3. + <_> + + <_> + 2 0 18 3 -1. + <_> + 8 0 6 3 3. + <_> + + <_> + 2 8 12 8 -1. + <_> + 6 8 4 8 3. + <_> + + <_> + 5 8 15 12 -1. + <_> + 10 8 5 12 3. + <_> + + <_> + 0 1 18 3 -1. + <_> + 6 1 6 3 3. + <_> + + <_> + 9 5 2 14 -1. + <_> + 9 12 2 7 2. + <_> + + <_> + 5 4 10 6 -1. + <_> + 5 6 10 2 3. + <_> + + <_> + 9 10 7 6 -1. + <_> + 9 12 7 2 3. + <_> + + <_> + 3 7 12 4 -1. + <_> + 7 7 4 4 3. + <_> + + <_> + 4 10 12 4 -1. + <_> + 8 10 4 4 3. + <_> + + <_> + 0 3 14 4 -1. + <_> + 0 3 7 2 2. + <_> + 7 5 7 2 2. + <_> + + <_> + 5 17 15 3 -1. + <_> + 5 18 15 1 3. + <_> + + <_> + 5 11 10 6 -1. + <_> + 5 11 5 3 2. + <_> + 10 14 5 3 2. + <_> + + <_> + 4 4 13 3 -1. + <_> + 4 5 13 1 3. + <_> + + <_> + 5 11 5 9 -1. + <_> + 5 14 5 3 3. + <_> + + <_> + 11 14 7 6 -1. + <_> + 11 16 7 2 3. + <_> + + <_> + 0 13 13 3 -1. + <_> + 0 14 13 1 3. + <_> + + <_> + 14 0 3 13 -1. + <_> + 15 0 1 13 3. + <_> + + <_> + 2 6 6 9 -1. + <_> + 2 9 6 3 3. + <_> + + <_> + 14 0 3 13 -1. + <_> + 15 0 1 13 3. + <_> + + <_> + 1 3 4 14 -1. + <_> + 1 3 2 7 2. + <_> + 3 10 2 7 2. + <_> + + <_> + 13 4 3 12 -1. + <_> + 13 10 3 6 2. + <_> + + <_> + 7 7 6 13 -1. + <_> + 9 7 2 13 3. + <_> + + <_> + 7 0 9 5 -1. + <_> + 10 0 3 5 3. + <_> + + <_> + 5 0 9 5 -1. + <_> + 8 0 3 5 3. + <_> + + <_> + 9 5 2 13 -1. + <_> + 9 5 1 13 2. + <_> + + <_> + 7 3 3 12 -1. + <_> + 7 9 3 6 2. + <_> + + <_> + 2 1 18 3 -1. + <_> + 8 1 6 3 3. + <_> + + <_> + 4 3 12 16 -1. + <_> + 4 3 6 8 2. + <_> + 10 11 6 8 2. + <_> + + <_> + 14 0 3 13 -1. + <_> + 15 0 1 13 3. + <_> + + <_> + 3 3 14 3 -1. + <_> + 3 4 14 1 3. + <_> + + <_> + 0 13 20 7 -1. + <_> + 0 13 10 7 2. + <_> + + <_> + 3 0 3 13 -1. + <_> + 4 0 1 13 3. + <_> + + <_> + 14 0 6 6 -1. + <_> + 14 0 3 6 2. + <_> + + <_> + 4 2 2 14 -1. + <_> + 4 9 2 7 2. + <_> + + <_> + 14 1 6 12 -1. + <_> + 16 1 2 12 3. + <_> + + <_> + 0 6 14 4 -1. + <_> + 0 6 7 2 2. + <_> + 7 8 7 2 2. + <_> + + <_> + 14 1 6 12 -1. + <_> + 16 1 2 12 3. + <_> + + <_> + 0 4 20 6 -1. + <_> + 0 6 20 2 3. + <_> + + <_> + 14 1 6 12 -1. + <_> + 16 1 2 12 3. + <_> + + <_> + 0 8 15 3 -1. + <_> + 0 9 15 1 3. + <_> + + <_> + 2 1 16 6 -1. + <_> + 10 1 8 3 2. + <_> + 2 4 8 3 2. + <_> + + <_> + 0 1 6 12 -1. + <_> + 2 1 2 12 3. + <_> + + <_> + 9 2 9 5 -1. + <_> + 12 2 3 5 3. + <_> + + <_> + 1 1 18 4 -1. + <_> + 7 1 6 4 3. + <_> + + <_> + 13 0 3 13 -1. + <_> + 14 0 1 13 3. + <_> + + <_> + 0 0 4 7 -1. + <_> + 2 0 2 7 2. + <_> + + <_> + 13 0 3 13 -1. + <_> + 14 0 1 13 3. + <_> + + <_> + 0 0 9 6 -1. + <_> + 3 0 3 6 3. + <_> + + <_> + 10 1 6 5 -1. + <_> + 10 1 3 5 2. + <_> + + <_> + 6 6 6 7 -1. + <_> + 8 6 2 7 3. + <_> + + <_> + 9 0 6 7 -1. + <_> + 11 0 2 7 3. + <_> + + <_> + 5 2 4 7 -1. + <_> + 7 2 2 7 2. + <_> + + <_> + 11 0 6 7 -1. + <_> + 13 0 2 7 3. + <_> + + <_> + 4 0 3 13 -1. + <_> + 5 0 1 13 3. + <_> + + <_> + 2 1 18 3 -1. + <_> + 8 1 6 3 3. + <_> + + <_> + 6 5 4 14 -1. + <_> + 6 5 2 7 2. + <_> + 8 12 2 7 2. + <_> + + <_> + 1 5 19 4 -1. + <_> + 1 7 19 2 2. + <_> + + <_> + 0 11 7 6 -1. + <_> + 0 13 7 2 3. + <_> + + <_> + 6 12 13 2 -1. + <_> + 6 13 13 1 2. + <_> + + <_> + 3 0 12 10 -1. + <_> + 3 0 6 5 2. + <_> + 9 5 6 5 2. + <_> + + <_> + 2 1 18 3 -1. + <_> + 8 1 6 3 3. + <_> + + <_> + 0 15 18 3 -1. + <_> + 9 15 9 3 2. + <_> + + <_> + 6 14 14 6 -1. + <_> + 6 14 7 6 2. + <_> + + <_> + 0 14 14 6 -1. + <_> + 7 14 7 6 2. + <_> + + <_> + 8 0 12 20 -1. + <_> + 8 0 6 20 2. + <_> + + <_> + 0 0 12 20 -1. + <_> + 6 0 6 20 2. + <_> + + <_> + 11 0 6 7 -1. + <_> + 13 0 2 7 3. + <_> + + <_> + 5 0 6 7 -1. + <_> + 7 0 2 7 3. + <_> + + <_> + 11 0 6 7 -1. + <_> + 13 0 2 7 3. + <_> + + <_> + 1 8 15 4 -1. + <_> + 6 8 5 4 3. + <_> + + <_> + 13 12 7 6 -1. + <_> + 13 14 7 2 3. + <_> + + <_> + 0 12 7 6 -1. + <_> + 0 14 7 2 3. + <_> + + <_> + 12 12 7 4 -1. + <_> + 12 14 7 2 2. + <_> + + <_> + 1 2 8 8 -1. + <_> + 1 2 4 4 2. + <_> + 5 6 4 4 2. + <_> + + <_> + 2 1 18 3 -1. + <_> + 8 1 6 3 3. + <_> + + <_> + 0 1 18 3 -1. + <_> + 6 1 6 3 3. + <_> + + <_> + 8 0 12 6 -1. + <_> + 8 2 12 2 3. + <_> + + <_> + 5 3 4 7 -1. + <_> + 7 3 2 7 2. + <_> + + <_> + 3 16 16 2 -1. + <_> + 3 17 16 1 2. + <_> + + <_> + 3 0 13 6 -1. + <_> + 3 3 13 3 2. + <_> + + <_> + 4 0 13 3 -1. + <_> + 4 1 13 1 3. + <_> + + <_> + 1 1 5 12 -1. + <_> + 1 5 5 4 3. + <_> + + <_> + 6 10 13 3 -1. + <_> + 6 11 13 1 3. + <_> + + <_> + 1 11 7 4 -1. + <_> + 1 13 7 2 2. + <_> + + <_> + 7 0 6 8 -1. + <_> + 9 0 2 8 3. + <_> + + <_> + 7 5 6 8 -1. + <_> + 9 5 2 8 3. + <_> + + <_> + 14 12 6 8 -1. + <_> + 16 12 2 8 3. + <_> + + <_> + 3 5 13 3 -1. + <_> + 3 6 13 1 3. + <_> + + <_> + 9 2 9 5 -1. + <_> + 12 2 3 5 3. + <_> + + <_> + 5 15 7 4 -1. + <_> + 5 17 7 2 2. + <_> + + <_> + 11 14 7 6 -1. + <_> + 11 16 7 2 3. + <_> + + <_> + 2 14 7 6 -1. + <_> + 2 16 7 2 3. + <_> + + <_> + 10 13 9 4 -1. + <_> + 10 15 9 2 2. + <_> + + <_> + 2 14 13 3 -1. + <_> + 2 15 13 1 3. + <_> + + <_> + 10 13 10 6 -1. + <_> + 10 15 10 2 3. + <_> + + <_> + 0 13 10 6 -1. + <_> + 0 15 10 2 3. + <_> + + <_> + 2 8 16 8 -1. + <_> + 10 8 8 4 2. + <_> + 2 12 8 4 2. + <_> + + <_> + 2 0 9 7 -1. + <_> + 5 0 3 7 3. + <_> + + <_> + 7 6 6 7 -1. + <_> + 9 6 2 7 3. + <_> + + <_> + 1 7 10 9 -1. + <_> + 1 10 10 3 3. + <_> + + <_> + 5 3 11 6 -1. + <_> + 5 5 11 2 3. + <_> + + <_> + 0 7 2 13 -1. + <_> + 1 7 1 13 2. + <_> + + <_> + 14 1 6 11 -1. + <_> + 16 1 2 11 3. + <_> + + <_> + 0 6 6 14 -1. + <_> + 2 6 2 14 3. + <_> + + <_> + 7 8 8 12 -1. + <_> + 11 8 4 6 2. + <_> + 7 14 4 6 2. + <_> + + <_> + 2 10 16 8 -1. + <_> + 2 10 8 4 2. + <_> + 10 14 8 4 2. + <_> + + <_> + 11 6 7 8 -1. + <_> + 11 10 7 4 2. + <_> + + <_> + 2 6 7 8 -1. + <_> + 2 10 7 4 2. + <_> + + <_> + 15 6 4 14 -1. + <_> + 17 6 2 7 2. + <_> + 15 13 2 7 2. + <_> + + <_> + 1 6 4 14 -1. + <_> + 1 6 2 7 2. + <_> + 3 13 2 7 2. + <_> + + <_> + 15 7 4 8 -1. + <_> + 15 11 4 4 2. + <_> + + <_> + 4 0 8 8 -1. + <_> + 4 0 4 4 2. + <_> + 8 4 4 4 2. + <_> + + <_> + 7 0 7 6 -1. + <_> + 7 3 7 3 2. + <_> + + <_> + 3 2 14 3 -1. + <_> + 3 3 14 1 3. + <_> + + <_> + 10 0 10 6 -1. + <_> + 10 2 10 2 3. + <_> + + <_> + 0 0 10 6 -1. + <_> + 0 2 10 2 3. + <_> + + <_> + 0 3 20 14 -1. + <_> + 0 10 20 7 2. + <_> + + <_> + 0 0 4 12 -1. + <_> + 2 0 2 12 2. + <_> + + <_> + 8 3 12 6 -1. + <_> + 12 3 4 6 3. + <_> + + <_> + 0 3 12 6 -1. + <_> + 4 3 4 6 3. + <_> + + <_> + 14 3 4 8 -1. + <_> + 14 3 2 8 2. + <_> + + <_> + 2 3 4 8 -1. + <_> + 4 3 2 8 2. + <_> + + <_> + 13 6 6 10 -1. + <_> + 16 6 3 5 2. + <_> + 13 11 3 5 2. + <_> + + <_> + 1 6 6 10 -1. + <_> + 1 6 3 5 2. + <_> + 4 11 3 5 2. + <_> + + <_> + 7 13 13 2 -1. + <_> + 7 14 13 1 2. + <_> + + <_> + 3 12 11 4 -1. + <_> + 3 14 11 2 2. + <_> + + <_> + 13 12 6 8 -1. + <_> + 13 12 3 8 2. + <_> + + <_> + 1 12 6 8 -1. + <_> + 4 12 3 8 2. + <_> + + <_> + 12 6 8 8 -1. + <_> + 16 6 4 4 2. + <_> + 12 10 4 4 2. + <_> + + <_> + 0 6 8 8 -1. + <_> + 0 6 4 4 2. + <_> + 4 10 4 4 2. + <_> + + <_> + 3 8 16 2 -1. + <_> + 3 9 16 1 2. + <_> + + <_> + 0 7 16 3 -1. + <_> + 0 8 16 1 3. + <_> + + <_> + 5 11 14 3 -1. + <_> + 5 12 14 1 3. + <_> + + <_> + 8 0 3 20 -1. + <_> + 9 0 1 20 3. + <_> + + <_> + 8 10 9 7 -1. + <_> + 11 10 3 7 3. + <_> + + <_> + 0 6 20 3 -1. + <_> + 10 6 10 3 2. + <_> + + <_> + 4 7 15 3 -1. + <_> + 4 8 15 1 3. + <_> + + <_> + 0 5 14 5 -1. + <_> + 7 5 7 5 2. + <_> + + <_> + 8 10 9 7 -1. + <_> + 11 10 3 7 3. + <_> + + <_> + 3 10 9 7 -1. + <_> + 6 10 3 7 3. + <_> + + <_> + 11 7 3 10 -1. + <_> + 11 12 3 5 2. + <_> + + <_> + 1 7 18 6 -1. + <_> + 1 9 18 2 3. + <_> + + <_> + 8 0 4 15 -1. + <_> + 8 5 4 5 3. + <_> + + <_> + 6 1 7 15 -1. + <_> + 6 6 7 5 3. + <_> + + <_> + 6 9 14 3 -1. + <_> + 6 10 14 1 3. + <_> + + <_> + 1 10 6 10 -1. + <_> + 1 10 3 5 2. + <_> + 4 15 3 5 2. + <_> + + <_> + 9 3 6 13 -1. + <_> + 11 3 2 13 3. + <_> + + <_> + 8 1 4 9 -1. + <_> + 10 1 2 9 2. + <_> + + <_> + 9 0 6 7 -1. + <_> + 11 0 2 7 3. + <_> + + <_> + 7 1 6 8 -1. + <_> + 10 1 3 8 2. + <_> + + <_> + 3 6 14 2 -1. + <_> + 3 6 7 2 2. + <_> + + <_> + 1 3 4 8 -1. + <_> + 3 3 2 8 2. + <_> + + <_> + 18 3 2 14 -1. + <_> + 18 10 2 7 2. + <_> + + <_> + 0 3 2 14 -1. + <_> + 0 10 2 7 2. + <_> + + <_> + 3 15 16 2 -1. + <_> + 3 15 8 2 2. + <_> + + <_> + 2 1 9 6 -1. + <_> + 2 3 9 2 3. + <_> + + <_> + 11 1 7 6 -1. + <_> + 11 3 7 2 3. + <_> + + <_> + 1 8 8 8 -1. + <_> + 1 8 4 4 2. + <_> + 5 12 4 4 2. + <_> + + <_> + 8 6 5 8 -1. + <_> + 8 10 5 4 2. + <_> + + <_> + 4 12 8 8 -1. + <_> + 4 12 4 4 2. + <_> + 8 16 4 4 2. + <_> + + <_> + 15 12 4 8 -1. + <_> + 15 16 4 4 2. + <_> + + <_> + 7 11 5 8 -1. + <_> + 7 15 5 4 2. + <_> + + <_> + 5 14 13 2 -1. + <_> + 5 15 13 1 2. + <_> + + <_> + 2 4 9 12 -1. + <_> + 2 8 9 4 3. + <_> + + <_> + 3 8 14 3 -1. + <_> + 3 9 14 1 3. + <_> + + <_> + 0 15 13 3 -1. + <_> + 0 16 13 1 3. + <_> + + <_> + 9 14 8 6 -1. + <_> + 9 16 8 2 3. + <_> + + <_> + 1 12 4 8 -1. + <_> + 1 16 4 4 2. + <_> + + <_> + 5 16 12 4 -1. + <_> + 9 16 4 4 3. + <_> + + <_> + 4 13 6 7 -1. + <_> + 6 13 2 7 3. + <_> + + <_> + 11 1 3 15 -1. + <_> + 12 1 1 15 3. + <_> + + <_> + 0 0 2 13 -1. + <_> + 1 0 1 13 2. + <_> + + <_> + 11 1 3 19 -1. + <_> + 12 1 1 19 3. + <_> + + <_> + 5 10 4 7 -1. + <_> + 7 10 2 7 2. + <_> + + <_> + 8 11 8 4 -1. + <_> + 8 11 4 4 2. + <_> + + <_> + 5 12 8 8 -1. + <_> + 9 12 4 8 2. + <_> + + <_> + 6 4 10 14 -1. + <_> + 11 4 5 7 2. + <_> + 6 11 5 7 2. + <_> + + <_> + 4 4 10 14 -1. + <_> + 4 4 5 7 2. + <_> + 9 11 5 7 2. + <_> + + <_> + 2 3 18 15 -1. + <_> + 2 8 18 5 3. + <_> + + <_> + 4 7 6 9 -1. + <_> + 6 7 2 9 3. + <_> + + <_> + 8 7 9 9 -1. + <_> + 8 10 9 3 3. + <_> + + <_> + 2 8 14 4 -1. + <_> + 2 8 7 2 2. + <_> + 9 10 7 2 2. + <_> + + <_> + 6 10 8 10 -1. + <_> + 6 10 4 10 2. + <_> + + <_> + 4 15 9 5 -1. + <_> + 7 15 3 5 3. + <_> + + <_> + 8 6 6 7 -1. + <_> + 10 6 2 7 3. + <_> + + <_> + 5 6 8 4 -1. + <_> + 9 6 4 4 2. + <_> + + <_> + 10 7 6 7 -1. + <_> + 12 7 2 7 3. + <_> + + <_> + 4 7 6 12 -1. + <_> + 6 7 2 12 3. + <_> + + <_> + 7 6 6 8 -1. + <_> + 9 6 2 8 3. + <_> + + <_> + 5 3 6 16 -1. + <_> + 5 3 3 8 2. + <_> + 8 11 3 8 2. + <_> + + <_> + 12 10 6 6 -1. + <_> + 12 10 3 6 2. + <_> + + <_> + 2 10 6 6 -1. + <_> + 5 10 3 6 2. + <_> + + <_> + 10 0 4 9 -1. + <_> + 10 0 2 9 2. + <_> + + <_> + 5 0 6 7 -1. + <_> + 7 0 2 7 3. + <_> + + <_> + 10 0 6 8 -1. + <_> + 12 0 2 8 3. + <_> + + <_> + 4 0 6 8 -1. + <_> + 6 0 2 8 3. + <_> + + <_> + 6 6 8 6 -1. + <_> + 6 8 8 2 3. + <_> + + <_> + 3 0 6 7 -1. + <_> + 5 0 2 7 3. + <_> + + <_> + 8 10 10 10 -1. + <_> + 13 10 5 5 2. + <_> + 8 15 5 5 2. + <_> + + <_> + 2 16 15 4 -1. + <_> + 7 16 5 4 3. + <_> + + <_> + 9 6 10 13 -1. + <_> + 9 6 5 13 2. + <_> + + <_> + 1 6 10 13 -1. + <_> + 6 6 5 13 2. + <_> + + <_> + 4 15 16 2 -1. + <_> + 4 15 8 2 2. + <_> + + <_> + 1 15 16 2 -1. + <_> + 9 15 8 2 2. + <_> + + <_> + 15 7 3 12 -1. + <_> + 15 13 3 6 2. + <_> + + <_> + 2 7 3 12 -1. + <_> + 2 13 3 6 2. + <_> + + <_> + 2 13 18 7 -1. + <_> + 8 13 6 7 3. + <_> + + <_> + 2 4 15 3 -1. + <_> + 2 5 15 1 3. + <_> + + <_> + 16 6 2 13 -1. + <_> + 16 6 1 13 2. + <_> + + <_> + 4 1 6 5 -1. + <_> + 7 1 3 5 2. + <_> + + <_> + 14 6 4 14 -1. + <_> + 16 6 2 7 2. + <_> + 14 13 2 7 2. + <_> + + <_> + 0 4 12 3 -1. + <_> + 6 4 6 3 2. + <_> + + <_> + 4 5 13 2 -1. + <_> + 4 6 13 1 2. + <_> + + <_> + 3 2 13 10 -1. + <_> + 3 7 13 5 2. + <_> + + <_> + 7 2 6 10 -1. + <_> + 7 7 6 5 2. + <_> + + <_> + 3 1 7 6 -1. + <_> + 3 3 7 2 3. + <_> + + <_> + 4 0 13 6 -1. + <_> + 4 2 13 2 3. + <_> + + <_> + 3 0 12 6 -1. + <_> + 3 2 12 2 3. + <_> + + <_> + 13 0 7 6 -1. + <_> + 13 2 7 2 3. + <_> + + <_> + 5 0 4 16 -1. + <_> + 5 0 2 8 2. + <_> + 7 8 2 8 2. + <_> + + <_> + 1 14 18 6 -1. + <_> + 10 14 9 3 2. + <_> + 1 17 9 3 2. + <_> + + <_> + 2 17 14 3 -1. + <_> + 9 17 7 3 2. + <_> + + <_> + 16 11 4 7 -1. + <_> + 16 11 2 7 2. + <_> + + <_> + 4 1 8 15 -1. + <_> + 8 1 4 15 2. + <_> + + <_> + 13 0 7 6 -1. + <_> + 13 2 7 2 3. + <_> + + <_> + 1 6 4 13 -1. + <_> + 3 6 2 13 2. + <_> + + <_> + 12 12 7 4 -1. + <_> + 12 14 7 2 2. + <_> + + <_> + 1 12 7 4 -1. + <_> + 1 14 7 2 2. + <_> + + <_> + 7 13 13 2 -1. + <_> + 7 14 13 1 2. + <_> + + <_> + 0 12 7 6 -1. + <_> + 0 14 7 2 3. + <_> + + <_> + 6 13 13 3 -1. + <_> + 6 14 13 1 3. + <_> + + <_> + 6 11 6 8 -1. + <_> + 8 11 2 8 3. + <_> + + <_> + 8 10 10 10 -1. + <_> + 13 10 5 5 2. + <_> + 8 15 5 5 2. + <_> + + <_> + 2 10 10 10 -1. + <_> + 2 10 5 5 2. + <_> + 7 15 5 5 2. + <_> + + <_> + 6 13 10 6 -1. + <_> + 11 13 5 3 2. + <_> + 6 16 5 3 2. + <_> + + <_> + 4 13 10 6 -1. + <_> + 4 13 5 3 2. + <_> + 9 16 5 3 2. + <_> + + <_> + 7 6 9 12 -1. + <_> + 7 12 9 6 2. + <_> + + <_> + 1 14 14 4 -1. + <_> + 1 14 7 2 2. + <_> + 8 16 7 2 2. + <_> + + <_> + 11 15 7 4 -1. + <_> + 11 17 7 2 2. + <_> + + <_> + 1 15 16 4 -1. + <_> + 1 17 16 2 2. + <_> + + <_> + 2 0 18 8 -1. + <_> + 8 0 6 8 3. + <_> + + <_> + 0 8 18 12 -1. + <_> + 0 12 18 4 3. + <_> + + <_> + 7 11 13 2 -1. + <_> + 7 12 13 1 2. + <_> + + <_> + 0 11 13 2 -1. + <_> + 0 12 13 1 2. + <_> + + <_> + 1 12 19 3 -1. + <_> + 1 13 19 1 3. + <_> + + <_> + 0 3 13 3 -1. + <_> + 0 4 13 1 3. + <_> + + <_> + 9 11 6 9 -1. + <_> + 9 14 6 3 3. + <_> + + <_> + 5 11 6 9 -1. + <_> + 5 14 6 3 3. + <_> + + <_> + 4 3 13 3 -1. + <_> + 4 4 13 1 3. + <_> + + <_> + 5 14 9 4 -1. + <_> + 5 16 9 2 2. + <_> + + <_> + 8 12 4 8 -1. + <_> + 8 16 4 4 2. + <_> + + <_> + 3 8 14 4 -1. + <_> + 3 8 7 2 2. + <_> + 10 10 7 2 2. + <_> + + <_> + 4 5 12 6 -1. + <_> + 8 5 4 6 3. + <_> + + <_> + 3 5 8 9 -1. + <_> + 3 8 8 3 3. + <_> + + <_> + 10 5 4 12 -1. + <_> + 10 9 4 4 3. + <_> + + <_> + 0 6 18 6 -1. + <_> + 0 6 9 3 2. + <_> + 9 9 9 3 2. + <_> + + <_> + 3 6 16 4 -1. + <_> + 11 6 8 2 2. + <_> + 3 8 8 2 2. + <_> + + <_> + 4 6 7 4 -1. + <_> + 4 8 7 2 2. + <_> + + <_> + 12 4 7 6 -1. + <_> + 12 6 7 2 3. + <_> + + <_> + 1 4 7 6 -1. + <_> + 1 6 7 2 3. + <_> + + <_> + 6 0 10 6 -1. + <_> + 6 2 10 2 3. + <_> + + <_> + 0 0 7 6 -1. + <_> + 0 2 7 2 3. + <_> + + <_> + 17 2 3 13 -1. + <_> + 18 2 1 13 3. + <_> + + <_> + 0 2 3 13 -1. + <_> + 1 2 1 13 3. + <_> + + <_> + 6 8 13 3 -1. + <_> + 6 9 13 1 3. + <_> + + <_> + 0 13 10 6 -1. + <_> + 0 13 5 3 2. + <_> + 5 16 5 3 2. + <_> + + <_> + 10 12 8 8 -1. + <_> + 14 12 4 4 2. + <_> + 10 16 4 4 2. + <_> + + <_> + 6 10 8 8 -1. + <_> + 6 10 4 4 2. + <_> + 10 14 4 4 2. + <_> + + <_> + 10 10 6 7 -1. + <_> + 12 10 2 7 3. + <_> + + <_> + 5 9 9 5 -1. + <_> + 8 9 3 5 3. + <_> + + <_> + 7 5 7 6 -1. + <_> + 7 7 7 2 3. + <_> + + <_> + 0 13 18 7 -1. + <_> + 6 13 6 7 3. + <_> + + <_> + 7 7 12 9 -1. + <_> + 7 10 12 3 3. + <_> + + <_> + 1 12 18 3 -1. + <_> + 1 13 18 1 3. + <_> + + <_> + 7 13 13 2 -1. + <_> + 7 14 13 1 2. + <_> + + <_> + 7 12 6 7 -1. + <_> + 9 12 2 7 3. + <_> + + <_> + 8 10 12 10 -1. + <_> + 14 10 6 5 2. + <_> + 8 15 6 5 2. + <_> + + <_> + 0 10 12 10 -1. + <_> + 0 10 6 5 2. + <_> + 6 15 6 5 2. + <_> + + <_> + 7 7 12 9 -1. + <_> + 7 10 12 3 3. + <_> + + <_> + 3 16 12 4 -1. + <_> + 7 16 4 4 3. + <_> + + <_> + 7 16 9 4 -1. + <_> + 7 18 9 2 2. + <_> + + <_> + 4 16 9 4 -1. + <_> + 4 18 9 2 2. + <_> + + <_> + 11 1 3 19 -1. + <_> + 12 1 1 19 3. + <_> + + <_> + 6 14 7 6 -1. + <_> + 6 16 7 2 3. + <_> + + <_> + 11 1 3 15 -1. + <_> + 12 1 1 15 3. + <_> + + <_> + 6 1 3 19 -1. + <_> + 7 1 1 19 3. + <_> + + <_> + 4 0 14 10 -1. + <_> + 11 0 7 5 2. + <_> + 4 5 7 5 2. + <_> + + <_> + 2 0 14 10 -1. + <_> + 2 0 7 5 2. + <_> + 9 5 7 5 2. + <_> + + <_> + 10 1 3 13 -1. + <_> + 11 1 1 13 3. + <_> + + <_> + 6 7 6 8 -1. + <_> + 8 7 2 8 3. + <_> + + <_> + 11 5 4 10 -1. + <_> + 11 5 2 10 2. + <_> + + <_> + 3 18 13 2 -1. + <_> + 3 19 13 1 2. + <_> + + <_> + 11 8 4 8 -1. + <_> + 11 12 4 4 2. + <_> + + <_> + 5 8 4 8 -1. + <_> + 5 12 4 4 2. + <_> + + <_> + 4 8 16 6 -1. + <_> + 12 8 8 3 2. + <_> + 4 11 8 3 2. + <_> + + <_> + 5 5 4 10 -1. + <_> + 7 5 2 10 2. + <_> + + <_> + 10 1 3 13 -1. + <_> + 11 1 1 13 3. + <_> + + <_> + 7 1 3 13 -1. + <_> + 8 1 1 13 3. + <_> + + <_> + 6 6 8 7 -1. + <_> + 6 6 4 7 2. + <_> + + <_> + 8 0 4 9 -1. + <_> + 10 0 2 9 2. + <_> + + <_> + 9 7 4 12 -1. + <_> + 9 11 4 4 3. + <_> + + <_> + 4 2 12 4 -1. + <_> + 10 2 6 4 2. + <_> + + <_> + 8 1 10 6 -1. + <_> + 13 1 5 3 2. + <_> + 8 4 5 3 2. + <_> + + <_> + 0 2 9 10 -1. + <_> + 0 7 9 5 2. + <_> + + <_> + 10 1 10 14 -1. + <_> + 10 8 10 7 2. + <_> + + <_> + 0 1 10 14 -1. + <_> + 0 8 10 7 2. + <_> + + <_> + 9 0 3 15 -1. + <_> + 9 5 3 5 3. + <_> + + <_> + 0 2 4 18 -1. + <_> + 0 2 2 9 2. + <_> + 2 11 2 9 2. + <_> + + <_> + 8 0 12 20 -1. + <_> + 8 0 6 20 2. + <_> + + <_> + 0 0 12 20 -1. + <_> + 6 0 6 20 2. + <_> + + <_> + 10 9 6 7 -1. + <_> + 12 9 2 7 3. + <_> + + <_> + 3 3 6 7 -1. + <_> + 5 3 2 7 3. + <_> + + <_> + 13 2 3 17 -1. + <_> + 14 2 1 17 3. + <_> + + <_> + 2 5 4 8 -1. + <_> + 2 9 4 4 2. + <_> + + <_> + 6 5 10 10 -1. + <_> + 6 10 10 5 2. + <_> + + <_> + 4 2 3 17 -1. + <_> + 5 2 1 17 3. + <_> + + <_> + 6 6 14 5 -1. + <_> + 6 6 7 5 2. + <_> + + <_> + 0 11 15 3 -1. + <_> + 5 11 5 3 3. + <_> + + <_> + 10 0 6 7 -1. + <_> + 12 0 2 7 3. + <_> + + <_> + 3 0 10 6 -1. + <_> + 3 0 5 3 2. + <_> + 8 3 5 3 2. + <_> + + <_> + 9 6 4 12 -1. + <_> + 9 10 4 4 3. + <_> + + <_> + 0 13 13 2 -1. + <_> + 0 14 13 1 2. + <_> + + <_> + 6 13 13 3 -1. + <_> + 6 14 13 1 3. + <_> + + <_> + 1 2 12 15 -1. + <_> + 5 2 4 15 3. + <_> + + <_> + 2 0 18 16 -1. + <_> + 8 0 6 16 3. + <_> + + <_> + 0 0 18 16 -1. + <_> + 6 0 6 16 3. + <_> + + <_> + 14 0 6 13 -1. + <_> + 14 0 3 13 2. + <_> + + <_> + 4 3 3 17 -1. + <_> + 5 3 1 17 3. + <_> + + <_> + 13 6 6 10 -1. + <_> + 13 6 3 10 2. + <_> + + <_> + 1 5 6 11 -1. + <_> + 4 5 3 11 2. + <_> + + <_> + 16 3 4 12 -1. + <_> + 16 7 4 4 3. + <_> + + <_> + 5 1 3 10 -1. + <_> + 5 6 3 5 2. + <_> + + <_> + 16 3 4 12 -1. + <_> + 16 7 4 4 3. + <_> + + <_> + 0 3 4 12 -1. + <_> + 0 7 4 4 3. + <_> + + <_> + 6 0 14 6 -1. + <_> + 13 0 7 3 2. + <_> + 6 3 7 3 2. + <_> + + <_> + 0 1 6 19 -1. + <_> + 3 1 3 19 2. + <_> + + <_> + 16 1 3 13 -1. + <_> + 17 1 1 13 3. + <_> + + <_> + 0 0 6 13 -1. + <_> + 3 0 3 13 2. + <_> + + <_> + 12 1 6 5 -1. + <_> + 12 1 3 5 2. + <_> + + <_> + 2 1 6 5 -1. + <_> + 5 1 3 5 2. + <_> + + <_> + 10 0 6 7 -1. + <_> + 12 0 2 7 3. + <_> + + <_> + 1 1 10 3 -1. + <_> + 6 1 5 3 2. + <_> + + <_> + 4 0 16 8 -1. + <_> + 12 0 8 4 2. + <_> + 4 4 8 4 2. + <_> + + <_> + 0 0 8 12 -1. + <_> + 0 0 4 6 2. + <_> + 4 6 4 6 2. + <_> + + <_> + 11 10 7 6 -1. + <_> + 11 12 7 2 3. + <_> + + <_> + 2 10 7 6 -1. + <_> + 2 12 7 2 3. + <_> + + <_> + 3 8 15 9 -1. + <_> + 3 11 15 3 3. + <_> + + <_> + 4 6 4 10 -1. + <_> + 6 6 2 10 2. + <_> + + <_> + 15 7 5 6 -1. + <_> + 15 10 5 3 2. + <_> + + <_> + 0 7 5 6 -1. + <_> + 0 10 5 3 2. + <_> + + <_> + 8 5 12 4 -1. + <_> + 12 5 4 4 3. + <_> + + <_> + 2 0 14 6 -1. + <_> + 2 3 14 3 2. + <_> + + <_> + 8 5 12 4 -1. + <_> + 12 5 4 4 3. + <_> + + <_> + 0 5 12 4 -1. + <_> + 4 5 4 4 3. + <_> + + <_> + 7 0 7 6 -1. + <_> + 7 3 7 3 2. + <_> + + <_> + 4 0 6 7 -1. + <_> + 6 0 2 7 3. + <_> + + <_> + 13 9 3 10 -1. + <_> + 13 14 3 5 2. + <_> + + <_> + 2 12 7 6 -1. + <_> + 2 14 7 2 3. + <_> + + <_> + 7 14 13 3 -1. + <_> + 7 15 13 1 3. + <_> + + <_> + 0 14 13 3 -1. + <_> + 0 15 13 1 3. + <_> + + <_> + 9 2 6 12 -1. + <_> + 9 6 6 4 3. + <_> + + <_> + 5 2 6 12 -1. + <_> + 5 6 6 4 3. + <_> + + <_> + 9 6 4 12 -1. + <_> + 9 10 4 4 3. + <_> + + <_> + 7 6 4 12 -1. + <_> + 7 10 4 4 3. + <_> + + <_> + 9 2 8 18 -1. + <_> + 9 8 8 6 3. + <_> + + <_> + 6 5 6 7 -1. + <_> + 8 5 2 7 3. + <_> + + <_> + 8 6 6 7 -1. + <_> + 10 6 2 7 3. + <_> + + <_> + 3 7 9 9 -1. + <_> + 3 10 9 3 3. + <_> + + <_> + 14 4 3 13 -1. + <_> + 15 4 1 13 3. + <_> + + <_> + 4 1 12 15 -1. + <_> + 4 6 12 5 3. + <_> + + <_> + 8 2 4 8 -1. + <_> + 8 6 4 4 2. + <_> + + <_> + 3 0 12 20 -1. + <_> + 3 10 12 10 2. + <_> + + <_> + 1 17 19 3 -1. + <_> + 1 18 19 1 3. + <_> + + <_> + 0 18 18 2 -1. + <_> + 9 18 9 2 2. + <_> + + <_> + 8 10 6 9 -1. + <_> + 10 10 2 9 3. + <_> + + <_> + 6 10 6 9 -1. + <_> + 8 10 2 9 3. + <_> + + <_> + 5 11 12 4 -1. + <_> + 5 13 12 2 2. + <_> + + <_> + 2 5 8 4 -1. + <_> + 2 7 8 2 2. + <_> + + <_> + 9 10 7 6 -1. + <_> + 9 12 7 2 3. + <_> + + <_> + 1 0 13 3 -1. + <_> + 1 1 13 1 3. + <_> + + <_> + 3 0 14 3 -1. + <_> + 3 1 14 1 3. + <_> + + <_> + 8 6 4 8 -1. + <_> + 10 6 2 8 2. + <_> + + <_> + 9 3 6 13 -1. + <_> + 11 3 2 13 3. + <_> + + <_> + 0 0 6 10 -1. + <_> + 0 0 3 5 2. + <_> + 3 5 3 5 2. + <_> + + <_> + 8 0 7 18 -1. + <_> + 8 6 7 6 3. + <_> + + <_> + 5 3 6 13 -1. + <_> + 7 3 2 13 3. + <_> + + <_> + 7 4 9 5 -1. + <_> + 10 4 3 5 3. + <_> + + <_> + 8 1 3 18 -1. + <_> + 9 1 1 18 3. + <_> + + <_> + 9 0 11 15 -1. + <_> + 9 5 11 5 3. + <_> + + <_> + 0 0 16 8 -1. + <_> + 0 0 8 4 2. + <_> + 8 4 8 4 2. + <_> + + <_> + 4 3 12 14 -1. + <_> + 10 3 6 7 2. + <_> + 4 10 6 7 2. + <_> + + <_> + 5 6 6 12 -1. + <_> + 5 6 3 6 2. + <_> + 8 12 3 6 2. + <_> + + <_> + 6 3 11 9 -1. + <_> + 6 6 11 3 3. + <_> + + <_> + 0 0 18 8 -1. + <_> + 0 0 9 4 2. + <_> + 9 4 9 4 2. + <_> + + <_> + 11 5 9 12 -1. + <_> + 11 11 9 6 2. + <_> + + <_> + 2 5 14 8 -1. + <_> + 2 9 14 4 2. + <_> + + <_> + 16 2 4 8 -1. + <_> + 16 6 4 4 2. + <_> + + <_> + 4 10 7 6 -1. + <_> + 4 12 7 2 3. + <_> + + <_> + 7 11 7 6 -1. + <_> + 7 13 7 2 3. + <_> + + <_> + 0 2 4 8 -1. + <_> + 0 6 4 4 2. + <_> + + <_> + 16 1 3 13 -1. + <_> + 17 1 1 13 3. + <_> + + <_> + 4 2 10 6 -1. + <_> + 4 2 5 3 2. + <_> + 9 5 5 3 2. + <_> + + <_> + 4 4 14 3 -1. + <_> + 4 5 14 1 3. + <_> + + <_> + 5 5 7 6 -1. + <_> + 5 7 7 2 3. + <_> + + <_> + 6 13 13 3 -1. + <_> + 6 14 13 1 3. + <_> + + <_> + 1 13 13 3 -1. + <_> + 1 14 13 1 3. + <_> + + <_> + 10 13 7 4 -1. + <_> + 10 15 7 2 2. + <_> + + <_> + 1 13 13 3 -1. + <_> + 1 14 13 1 3. + <_> + + <_> + 6 3 11 9 -1. + <_> + 6 6 11 3 3. + diff --git a/venv/lib/python3.11/site-packages/cv2/data/haarcascade_frontalface_default.xml b/venv/lib/python3.11/site-packages/cv2/data/haarcascade_frontalface_default.xml new file mode 100644 index 0000000000000000000000000000000000000000..cbd1aa89e927d8d54b49fe666bf17244c3c46a7b --- /dev/null +++ b/venv/lib/python3.11/site-packages/cv2/data/haarcascade_frontalface_default.xml @@ -0,0 +1,33314 @@ + + + +BOOST + HAAR + 24 + 24 + + 211 + + 0 + 25 + + <_> + 9 + -5.0425500869750977e+00 + + <_> + + 0 -1 0 -3.1511999666690826e-02 + + 2.0875380039215088e+00 -2.2172100543975830e+00 + <_> + + 0 -1 1 1.2396000325679779e-02 + + -1.8633940219879150e+00 1.3272049427032471e+00 + <_> + + 0 -1 2 2.1927999332547188e-02 + + -1.5105249881744385e+00 1.0625729560852051e+00 + <_> + + 0 -1 3 5.7529998011887074e-03 + + -8.7463897466659546e-01 1.1760339736938477e+00 + <_> + + 0 -1 4 1.5014000236988068e-02 + + -7.7945697307586670e-01 1.2608419656753540e+00 + <_> + + 0 -1 5 9.9371001124382019e-02 + + 5.5751299858093262e-01 -1.8743000030517578e+00 + <_> + + 0 -1 6 2.7340000960975885e-03 + + -1.6911929845809937e+00 4.4009700417518616e-01 + <_> + + 0 -1 7 -1.8859000876545906e-02 + + -1.4769539833068848e+00 4.4350099563598633e-01 + <_> + + 0 -1 8 5.9739998541772366e-03 + + -8.5909199714660645e-01 8.5255599021911621e-01 + <_> + 16 + -4.9842400550842285e+00 + + <_> + + 0 -1 9 -2.1110000088810921e-02 + + 1.2435649633407593e+00 -1.5713009834289551e+00 + <_> + + 0 -1 10 2.0355999469757080e-02 + + -1.6204780340194702e+00 1.1817760467529297e+00 + <_> + + 0 -1 11 2.1308999508619308e-02 + + -1.9415930509567261e+00 7.0069098472595215e-01 + <_> + + 0 -1 12 9.1660000383853912e-02 + + -5.5670100450515747e-01 1.7284419536590576e+00 + <_> + + 0 -1 13 3.6288000643253326e-02 + + 2.6763799786567688e-01 -2.1831810474395752e+00 + <_> + + 0 -1 14 -1.9109999760985374e-02 + + -2.6730210781097412e+00 4.5670801401138306e-01 + <_> + + 0 -1 15 8.2539999857544899e-03 + + -1.0852910280227661e+00 5.3564202785491943e-01 + <_> + + 0 -1 16 1.8355000764131546e-02 + + -3.5200199484825134e-01 9.3339198827743530e-01 + <_> + + 0 -1 17 -7.0569999516010284e-03 + + 9.2782098054885864e-01 -6.6349899768829346e-01 + <_> + + 0 -1 18 -9.8770000040531158e-03 + + 1.1577470302581787e+00 -2.9774799942970276e-01 + <_> + + 0 -1 19 1.5814000740647316e-02 + + -4.1960600018501282e-01 1.3576040267944336e+00 + <_> + + 0 -1 20 -2.0700000226497650e-02 + + 1.4590020179748535e+00 -1.9739399850368500e-01 + <_> + + 0 -1 21 -1.3760800659656525e-01 + + 1.1186759471893311e+00 -5.2915501594543457e-01 + <_> + + 0 -1 22 1.4318999834358692e-02 + + -3.5127198696136475e-01 1.1440860033035278e+00 + <_> + + 0 -1 23 1.0253000073134899e-02 + + -6.0850602388381958e-01 7.7098500728607178e-01 + <_> + + 0 -1 24 9.1508001089096069e-02 + + 3.8817799091339111e-01 -1.5122940540313721e+00 + <_> + 27 + -4.6551899909973145e+00 + + <_> + + 0 -1 25 6.9747000932693481e-02 + + -1.0130879878997803e+00 1.4687349796295166e+00 + <_> + + 0 -1 26 3.1502999365329742e-02 + + -1.6463639736175537e+00 1.0000629425048828e+00 + <_> + + 0 -1 27 1.4260999858379364e-02 + + 4.6480301022529602e-01 -1.5959889888763428e+00 + <_> + + 0 -1 28 1.4453000389039516e-02 + + -6.5511900186538696e-01 8.3021801710128784e-01 + <_> + + 0 -1 29 -3.0509999487549067e-03 + + -1.3982310295104980e+00 4.2550599575042725e-01 + <_> + + 0 -1 30 3.2722998410463333e-02 + + -5.0702601671218872e-01 1.0526109933853149e+00 + <_> + + 0 -1 31 -7.2960001416504383e-03 + + 3.6356899142265320e-01 -1.3464889526367188e+00 + <_> + + 0 -1 32 5.0425000488758087e-02 + + -3.0461400747299194e-01 1.4504129886627197e+00 + <_> + + 0 -1 33 4.6879000961780548e-02 + + -4.0286201238632202e-01 1.2145609855651855e+00 + <_> + + 0 -1 34 -6.9358997046947479e-02 + + 1.0539360046386719e+00 -4.5719701051712036e-01 + <_> + + 0 -1 35 -4.9033999443054199e-02 + + -1.6253089904785156e+00 1.5378999710083008e-01 + <_> + + 0 -1 36 8.4827996790409088e-02 + + 2.8402999043464661e-01 -1.5662059783935547e+00 + <_> + + 0 -1 37 -1.7229999648407102e-03 + + -1.0147459506988525e+00 2.3294800519943237e-01 + <_> + + 0 -1 38 1.1562199890613556e-01 + + -1.6732899844646454e-01 1.2804069519042969e+00 + <_> + + 0 -1 39 -5.1279999315738678e-02 + + 1.5162390470504761e+00 -3.0271100997924805e-01 + <_> + + 0 -1 40 -4.2706999927759171e-02 + + 1.7631920576095581e+00 -5.1832001656293869e-02 + <_> + + 0 -1 41 3.7178099155426025e-01 + + -3.1389200687408447e-01 1.5357979536056519e+00 + <_> + + 0 -1 42 1.9412999972701073e-02 + + -1.0017599910497665e-01 9.3655401468276978e-01 + <_> + + 0 -1 43 1.7439000308513641e-02 + + -4.0379899740219116e-01 9.6293002367019653e-01 + <_> + + 0 -1 44 3.9638999849557877e-02 + + 1.7039099335670471e-01 -2.9602990150451660e+00 + <_> + + 0 -1 45 -9.1469995677471161e-03 + + 8.8786798715591431e-01 -4.3818700313568115e-01 + <_> + + 0 -1 46 1.7219999572262168e-03 + + -3.7218600511550903e-01 4.0018901228904724e-01 + <_> + + 0 -1 47 3.0231000855565071e-02 + + 6.5924003720283508e-02 -2.6469180583953857e+00 + <_> + + 0 -1 48 -7.8795999288558960e-02 + + -1.7491459846496582e+00 2.8475299477577209e-01 + <_> + + 0 -1 49 2.1110000088810921e-03 + + -9.3908101320266724e-01 2.3205199837684631e-01 + <_> + + 0 -1 50 2.7091000229120255e-02 + + -5.2664000540971756e-02 1.0756820440292358e+00 + <_> + + 0 -1 51 -4.4964998960494995e-02 + + -1.8294479846954346e+00 9.9561996757984161e-02 + <_> + 32 + -4.4531588554382324e+00 + + <_> + + 0 -1 52 -6.5701000392436981e-02 + + 1.1558510065078735e+00 -1.0716359615325928e+00 + <_> + + 0 -1 53 1.5839999541640282e-02 + + -1.5634720325469971e+00 7.6877099275588989e-01 + <_> + + 0 -1 54 1.4570899307727814e-01 + + -5.7450097799301147e-01 1.3808720111846924e+00 + <_> + + 0 -1 55 6.1389999464154243e-03 + + -1.4570560455322266e+00 5.1610302925109863e-01 + <_> + + 0 -1 56 6.7179999314248562e-03 + + -8.3533602952957153e-01 5.8522200584411621e-01 + <_> + + 0 -1 57 1.8518000841140747e-02 + + -3.1312099099159241e-01 1.1696679592132568e+00 + <_> + + 0 -1 58 1.9958000630140305e-02 + + -4.3442600965499878e-01 9.5446902513504028e-01 + <_> + + 0 -1 59 -2.7755001187324524e-01 + + 1.4906179904937744e+00 -1.3815900683403015e-01 + <_> + + 0 -1 60 9.1859996318817139e-03 + + -9.6361500024795532e-01 2.7665498852729797e-01 + <_> + + 0 -1 61 -3.7737999111413956e-02 + + -2.4464108943939209e+00 2.3619599640369415e-01 + <_> + + 0 -1 62 1.8463000655174255e-02 + + 1.7539200186729431e-01 -1.3423130512237549e+00 + <_> + + 0 -1 63 -1.1114999651908875e-02 + + 4.8710799217224121e-01 -8.9851897954940796e-01 + <_> + + 0 -1 64 3.3927999436855316e-02 + + 1.7874200642108917e-01 -1.6342279911041260e+00 + <_> + + 0 -1 65 -3.5649001598358154e-02 + + -1.9607399702072144e+00 1.8102499842643738e-01 + <_> + + 0 -1 66 -1.1438000015914440e-02 + + 9.9010699987411499e-01 -3.8103199005126953e-01 + <_> + + 0 -1 67 -6.5236002206802368e-02 + + -2.5794160366058350e+00 2.4753600358963013e-01 + <_> + + 0 -1 68 -4.2272001504898071e-02 + + 1.4411840438842773e+00 -2.9508298635482788e-01 + <_> + + 0 -1 69 1.9219999667257071e-03 + + -4.9608600139617920e-01 6.3173598051071167e-01 + <_> + + 0 -1 70 -1.2921799719333649e-01 + + -2.3314270973205566e+00 5.4496999830007553e-02 + <_> + + 0 -1 71 2.2931000217795372e-02 + + -8.4447097778320312e-01 3.8738098740577698e-01 + <_> + + 0 -1 72 -3.4120000898838043e-02 + + -1.4431500434875488e+00 9.8422996699810028e-02 + <_> + + 0 -1 73 2.6223000138998032e-02 + + 1.8223099410533905e-01 -1.2586519718170166e+00 + <_> + + 0 -1 74 2.2236999124288559e-02 + + 6.9807998836040497e-02 -2.3820950984954834e+00 + <_> + + 0 -1 75 -5.8240001089870930e-03 + + 3.9332500100135803e-01 -2.7542799711227417e-01 + <_> + + 0 -1 76 4.3653000146150589e-02 + + 1.4832699298858643e-01 -1.1368780136108398e+00 + <_> + + 0 -1 77 5.7266999036073685e-02 + + 2.4628099799156189e-01 -1.2687400579452515e+00 + <_> + + 0 -1 78 2.3409998975694180e-03 + + -7.5448900461196899e-01 2.7163800597190857e-01 + <_> + + 0 -1 79 1.2996000237762928e-02 + + -3.6394900083541870e-01 7.0959198474884033e-01 + <_> + + 0 -1 80 -2.6517000049352646e-02 + + -2.3221859931945801e+00 3.5744000226259232e-02 + <_> + + 0 -1 81 -5.8400002308189869e-03 + + 4.2194300889968872e-01 -4.8184998333454132e-02 + <_> + + 0 -1 82 -1.6568999737501144e-02 + + 1.1099940538406372e+00 -3.4849700331687927e-01 + <_> + + 0 -1 83 -6.8157002329826355e-02 + + -3.3269989490509033e+00 2.1299000084400177e-01 + <_> + 52 + -4.3864588737487793e+00 + + <_> + + 0 -1 84 3.9974000304937363e-02 + + -1.2173449993133545e+00 1.0826710462570190e+00 + <_> + + 0 -1 85 1.8819500505924225e-01 + + -4.8289400339126587e-01 1.4045250415802002e+00 + <_> + + 0 -1 86 7.8027002513408661e-02 + + -1.0782150030136108e+00 7.4040299654006958e-01 + <_> + + 0 -1 87 1.1899999663000926e-04 + + -1.2019979953765869e+00 3.7749201059341431e-01 + <_> + + 0 -1 88 8.5056997835636139e-02 + + -4.3939098715782166e-01 1.2647340297698975e+00 + <_> + + 0 -1 89 8.9720003306865692e-03 + + -1.8440499901771545e-01 4.5726400613784790e-01 + <_> + + 0 -1 90 8.8120000436902046e-03 + + 3.0396699905395508e-01 -9.5991098880767822e-01 + <_> + + 0 -1 91 -2.3507999256253242e-02 + + 1.2487529516220093e+00 4.6227999031543732e-02 + <_> + + 0 -1 92 7.0039997808635235e-03 + + -5.9442102909088135e-01 5.3963297605514526e-01 + <_> + + 0 -1 93 3.3851999789476395e-02 + + 2.8496098518371582e-01 -1.4895249605178833e+00 + <_> + + 0 -1 94 -3.2530000898987055e-03 + + 4.8120799660682678e-01 -5.2712398767471313e-01 + <_> + + 0 -1 95 2.9097000136971474e-02 + + 2.6743900775909424e-01 -1.6007850170135498e+00 + <_> + + 0 -1 96 -8.4790000692009926e-03 + + -1.3107639551162720e+00 1.5243099629878998e-01 + <_> + + 0 -1 97 -1.0795000009238720e-02 + + 4.5613598823547363e-01 -7.2050899267196655e-01 + <_> + + 0 -1 98 -2.4620000272989273e-02 + + -1.7320619821548462e+00 6.8363003432750702e-02 + <_> + + 0 -1 99 3.7380000576376915e-03 + + -1.9303299486637115e-01 6.8243497610092163e-01 + <_> + + 0 -1 100 -1.2264000251889229e-02 + + -1.6095290184020996e+00 7.5268000364303589e-02 + <_> + + 0 -1 101 -4.8670000396668911e-03 + + 7.4286502599716187e-01 -2.1510200202465057e-01 + <_> + + 0 -1 102 7.6725997030735016e-02 + + -2.6835098862648010e-01 1.3094140291213989e+00 + <_> + + 0 -1 103 2.8578000143170357e-02 + + -5.8793000876903534e-02 1.2196329832077026e+00 + <_> + + 0 -1 104 1.9694000482559204e-02 + + -3.5142898559570312e-01 8.4926998615264893e-01 + <_> + + 0 -1 105 -2.9093999415636063e-02 + + -1.0507299900054932e+00 2.9806300997734070e-01 + <_> + + 0 -1 106 -2.9144000262022018e-02 + + 8.2547801733016968e-01 -3.2687199115753174e-01 + <_> + + 0 -1 107 1.9741000607609749e-02 + + 2.0452600717544556e-01 -8.3760201930999756e-01 + <_> + + 0 -1 108 4.3299999088048935e-03 + + 2.0577900111675262e-01 -6.6829800605773926e-01 + <_> + + 0 -1 109 -3.5500999540090561e-02 + + -1.2969900369644165e+00 1.3897499442100525e-01 + <_> + + 0 -1 110 -1.6172999516129494e-02 + + -1.3110569715499878e+00 7.5751997530460358e-02 + <_> + + 0 -1 111 -2.2151000797748566e-02 + + -1.0524389743804932e+00 1.9241100549697876e-01 + <_> + + 0 -1 112 -2.2707000374794006e-02 + + -1.3735309839248657e+00 6.6780999302864075e-02 + <_> + + 0 -1 113 1.6607999801635742e-02 + + -3.7135999649763107e-02 7.7846401929855347e-01 + <_> + + 0 -1 114 -1.3309000059962273e-02 + + -9.9850702285766602e-01 1.2248100340366364e-01 + <_> + + 0 -1 115 -3.3732000738382339e-02 + + 1.4461359977722168e+00 1.3151999562978745e-02 + <_> + + 0 -1 116 1.6935000196099281e-02 + + -3.7121298909187317e-01 5.2842199802398682e-01 + <_> + + 0 -1 117 3.3259999472647905e-03 + + -5.7568502426147461e-01 3.9261901378631592e-01 + <_> + + 0 -1 118 8.3644002676010132e-02 + + 1.6116000711917877e-02 -2.1173279285430908e+00 + <_> + + 0 -1 119 2.5785198807716370e-01 + + -8.1609003245830536e-02 9.8782497644424438e-01 + <_> + + 0 -1 120 -3.6566998809576035e-02 + + -1.1512110233306885e+00 9.6459001302719116e-02 + <_> + + 0 -1 121 -1.6445999965071678e-02 + + 3.7315499782562256e-01 -1.4585399627685547e-01 + <_> + + 0 -1 122 -3.7519999314099550e-03 + + 2.6179298758506775e-01 -5.8156698942184448e-01 + <_> + + 0 -1 123 -6.3660000450909138e-03 + + 7.5477397441864014e-01 -1.7055200040340424e-01 + <_> + + 0 -1 124 -3.8499999791383743e-03 + + 2.2653999924659729e-01 -6.3876402378082275e-01 + <_> + + 0 -1 125 -4.5494001358747482e-02 + + -1.2640299797058105e+00 2.5260698795318604e-01 + <_> + + 0 -1 126 -2.3941000923514366e-02 + + 8.7068402767181396e-01 -2.7104699611663818e-01 + <_> + + 0 -1 127 -7.7558003365993500e-02 + + -1.3901610374450684e+00 2.3612299561500549e-01 + <_> + + 0 -1 128 2.3614000529050827e-02 + + 6.6140003502368927e-02 -1.2645419836044312e+00 + <_> + + 0 -1 129 -2.5750000495463610e-03 + + -5.3841698169708252e-01 3.0379098653793335e-01 + <_> + + 0 -1 130 1.2010800093412399e-01 + + -3.5343000292778015e-01 5.2866202592849731e-01 + <_> + + 0 -1 131 2.2899999748915434e-03 + + -5.8701997995376587e-01 2.4061000347137451e-01 + <_> + + 0 -1 132 6.9716997444629669e-02 + + -3.3348900079727173e-01 5.1916301250457764e-01 + <_> + + 0 -1 133 -4.6670001000165939e-02 + + 6.9795399904251099e-01 -1.4895999804139137e-02 + <_> + + 0 -1 134 -5.0129000097513199e-02 + + 8.6146199703216553e-01 -2.5986000895500183e-01 + <_> + + 0 -1 135 3.0147999525070190e-02 + + 1.9332799315452576e-01 -5.9131097793579102e-01 + <_> + 53 + -4.1299300193786621e+00 + + <_> + + 0 -1 136 9.1085001826286316e-02 + + -8.9233100414276123e-01 1.0434230566024780e+00 + <_> + + 0 -1 137 1.2818999588489532e-02 + + -1.2597670555114746e+00 5.5317097902297974e-01 + <_> + + 0 -1 138 1.5931999310851097e-02 + + -8.6254400014877319e-01 6.3731801509857178e-01 + <_> + + 0 -1 139 2.2780001163482666e-03 + + -7.4639201164245605e-01 5.3155601024627686e-01 + <_> + + 0 -1 140 3.1840998679399490e-02 + + -1.2650489807128906e+00 3.6153900623321533e-01 + <_> + + 0 -1 141 2.6960000395774841e-03 + + -9.8290401697158813e-01 3.6013001203536987e-01 + <_> + + 0 -1 142 -1.2055000290274620e-02 + + 6.4068400859832764e-01 -5.0125002861022949e-01 + <_> + + 0 -1 143 2.1324999630451202e-02 + + -2.4034999310970306e-01 8.5448002815246582e-01 + <_> + + 0 -1 144 3.0486000701785088e-02 + + -3.4273600578308105e-01 1.1428849697113037e+00 + <_> + + 0 -1 145 -4.5079998672008514e-02 + + 1.0976949930191040e+00 -1.7974600195884705e-01 + <_> + + 0 -1 146 -7.1700997650623322e-02 + + 1.5735000371932983e+00 -3.1433498859405518e-01 + <_> + + 0 -1 147 5.9218000620603561e-02 + + -2.7582401037216187e-01 1.0448570251464844e+00 + <_> + + 0 -1 148 6.7010000348091125e-03 + + -1.0974019765853882e+00 1.9801199436187744e-01 + <_> + + 0 -1 149 4.1046999394893646e-02 + + 3.0547699332237244e-01 -1.3287999629974365e+00 + <_> + + 0 -1 150 -8.5499999113380909e-04 + + 2.5807100534439087e-01 -7.0052897930145264e-01 + <_> + + 0 -1 151 -3.0360000208020210e-02 + + -1.2306419610977173e+00 2.2609399259090424e-01 + <_> + + 0 -1 152 -1.2930000200867653e-02 + + 4.0758600831031799e-01 -5.1234501600265503e-01 + <_> + + 0 -1 153 3.7367999553680420e-02 + + -9.4755001366138458e-02 6.1765098571777344e-01 + <_> + + 0 -1 154 2.4434000253677368e-02 + + -4.1100600361824036e-01 4.7630500793457031e-01 + <_> + + 0 -1 155 5.7007998228073120e-02 + + 2.5249299407005310e-01 -6.8669801950454712e-01 + <_> + + 0 -1 156 -1.6313999891281128e-02 + + -9.3928402662277222e-01 1.1448100209236145e-01 + <_> + + 0 -1 157 -1.7648899555206299e-01 + + 1.2451089620590210e+00 -5.6519001722335815e-02 + <_> + + 0 -1 158 1.7614600062370300e-01 + + -3.2528200745582581e-01 8.2791501283645630e-01 + <_> + + 0 -1 159 -7.3910001665353775e-03 + + 3.4783700108528137e-01 -1.7929099500179291e-01 + <_> + + 0 -1 160 6.0890998691320419e-02 + + 5.5098000913858414e-02 -1.5480779409408569e+00 + <_> + + 0 -1 161 -2.9123000800609589e-02 + + -1.0255639553070068e+00 2.4106900393962860e-01 + <_> + + 0 -1 162 -4.5648999512195587e-02 + + 1.0301599502563477e+00 -3.1672099232673645e-01 + <_> + + 0 -1 163 3.7333000451326370e-02 + + 2.1620599925518036e-01 -8.2589900493621826e-01 + <_> + + 0 -1 164 -2.4411000311374664e-02 + + -1.5957959890365601e+00 5.1139000803232193e-02 + <_> + + 0 -1 165 -5.9806998819112778e-02 + + -1.0312290191650391e+00 1.3092300295829773e-01 + <_> + + 0 -1 166 -3.0106000602245331e-02 + + -1.4781630039215088e+00 3.7211999297142029e-02 + <_> + + 0 -1 167 7.4209999293088913e-03 + + -2.4024100601673126e-01 4.9333998560905457e-01 + <_> + + 0 -1 168 -2.1909999195486307e-03 + + 2.8941500186920166e-01 -5.7259601354598999e-01 + <_> + + 0 -1 169 2.0860999822616577e-02 + + -2.3148399591445923e-01 6.3765901327133179e-01 + <_> + + 0 -1 170 -6.6990000195801258e-03 + + -1.2107750177383423e+00 6.4018003642559052e-02 + <_> + + 0 -1 171 1.8758000805974007e-02 + + 2.4461300671100616e-01 -9.9786698818206787e-01 + <_> + + 0 -1 172 -4.4323001056909561e-02 + + -1.3699189424514771e+00 3.6051999777555466e-02 + <_> + + 0 -1 173 2.2859999909996986e-02 + + 2.1288399398326874e-01 -1.0397620201110840e+00 + <_> + + 0 -1 174 -9.8600005730986595e-04 + + 3.2443600893020630e-01 -5.4291802644729614e-01 + <_> + + 0 -1 175 1.7239000648260117e-02 + + -2.8323900699615479e-01 4.4468200206756592e-01 + <_> + + 0 -1 176 -3.4531001001596451e-02 + + -2.3107020854949951e+00 -3.1399999279528856e-03 + <_> + + 0 -1 177 6.7006997764110565e-02 + + 2.8715699911117554e-01 -6.4481002092361450e-01 + <_> + + 0 -1 178 2.3776899278163910e-01 + + -2.7174800634384155e-01 8.0219101905822754e-01 + <_> + + 0 -1 179 -1.2903000228106976e-02 + + -1.5317620038986206e+00 2.1423600614070892e-01 + <_> + + 0 -1 180 1.0514999739825726e-02 + + 7.7037997543811798e-02 -1.0581140518188477e+00 + <_> + + 0 -1 181 1.6969000920653343e-02 + + 1.4306700229644775e-01 -8.5828399658203125e-01 + <_> + + 0 -1 182 -7.2460002265870571e-03 + + -1.1020129919052124e+00 6.4906999468803406e-02 + <_> + + 0 -1 183 1.0556999593973160e-02 + + 1.3964000158011913e-02 6.3601499795913696e-01 + <_> + + 0 -1 184 6.1380001716315746e-03 + + -3.4545901417732239e-01 5.6296801567077637e-01 + <_> + + 0 -1 185 1.3158000074326992e-02 + + 1.9927300512790680e-01 -1.5040320158004761e+00 + <_> + + 0 -1 186 3.1310000922530890e-03 + + -4.0903699398040771e-01 3.7796398997306824e-01 + <_> + + 0 -1 187 -1.0920699685811996e-01 + + -2.2227079868316650e+00 1.2178199738264084e-01 + <_> + + 0 -1 188 8.1820003688335419e-03 + + -2.8652000427246094e-01 6.7890799045562744e-01 + <_> + 62 + -4.0218091011047363e+00 + + <_> + + 0 -1 189 3.1346999108791351e-02 + + -8.8884598016738892e-01 9.4936800003051758e-01 + <_> + + 0 -1 190 3.1918000429868698e-02 + + -1.1146880388259888e+00 4.8888999223709106e-01 + <_> + + 0 -1 191 6.5939999185502529e-03 + + -1.0097689628601074e+00 4.9723801016807556e-01 + <_> + + 0 -1 192 2.6148000732064247e-02 + + 2.5991299748420715e-01 -1.2537480592727661e+00 + <_> + + 0 -1 193 1.2845000252127647e-02 + + -5.7138597965240479e-01 5.9659498929977417e-01 + <_> + + 0 -1 194 2.6344999670982361e-02 + + -5.5203199386596680e-01 3.0217400193214417e-01 + <_> + + 0 -1 195 -1.5083000063896179e-02 + + -1.2871240377426147e+00 2.2354200482368469e-01 + <_> + + 0 -1 196 -3.8887001574039459e-02 + + 1.7425049543380737e+00 -9.9747002124786377e-02 + <_> + + 0 -1 197 -5.7029998861253262e-03 + + -1.0523240566253662e+00 1.8362599611282349e-01 + <_> + + 0 -1 198 -1.4860000228509307e-03 + + 5.6784200668334961e-01 -4.6742001175880432e-01 + <_> + + 0 -1 199 -2.8486000373959541e-02 + + 1.3082909584045410e+00 -2.6460900902748108e-01 + <_> + + 0 -1 200 6.6224999725818634e-02 + + -4.6210700273513794e-01 4.1749599575996399e-01 + <_> + + 0 -1 201 8.8569996878504753e-03 + + -4.1474899649620056e-01 5.9204798936843872e-01 + <_> + + 0 -1 202 1.1355999857187271e-02 + + 3.6103099584579468e-01 -4.5781201124191284e-01 + <_> + + 0 -1 203 -2.7679998893290758e-03 + + -8.9238899946212769e-01 1.4199000597000122e-01 + <_> + + 0 -1 204 1.1246999725699425e-02 + + 2.9353401064872742e-01 -9.7330600023269653e-01 + <_> + + 0 -1 205 7.1970000863075256e-03 + + -7.9334902763366699e-01 1.8313400447368622e-01 + <_> + + 0 -1 206 3.1768999993801117e-02 + + 1.5523099899291992e-01 -1.3245639801025391e+00 + <_> + + 0 -1 207 2.5173999369144440e-02 + + 3.4214999526739120e-02 -2.0948131084442139e+00 + <_> + + 0 -1 208 7.5360001064836979e-03 + + -3.9450600743293762e-01 5.1333999633789062e-01 + <_> + + 0 -1 209 3.2873000949621201e-02 + + 8.8372997939586639e-02 -1.2814120054244995e+00 + <_> + + 0 -1 210 -2.7379998937249184e-03 + + 5.5286502838134766e-01 -4.6384999155998230e-01 + <_> + + 0 -1 211 -3.8075000047683716e-02 + + -1.8497270345687866e+00 4.5944001525640488e-02 + <_> + + 0 -1 212 -3.8984000682830811e-02 + + -4.8223701119422913e-01 3.4760600328445435e-01 + <_> + + 0 -1 213 2.8029999230057001e-03 + + -4.5154699683189392e-01 4.2806300520896912e-01 + <_> + + 0 -1 214 -5.4145999252796173e-02 + + -8.4520798921585083e-01 1.6674900054931641e-01 + <_> + + 0 -1 215 -8.3280000835657120e-03 + + 3.5348299145698547e-01 -4.7163200378417969e-01 + <_> + + 0 -1 216 3.3778000622987747e-02 + + 1.8463100492954254e-01 -1.6686669588088989e+00 + <_> + + 0 -1 217 -1.1238099634647369e-01 + + -1.2521569728851318e+00 3.5992000252008438e-02 + <_> + + 0 -1 218 -1.0408000089228153e-02 + + -8.1620401144027710e-01 2.3428599536418915e-01 + <_> + + 0 -1 219 -4.9439999274909496e-03 + + -9.2584699392318726e-01 1.0034800320863724e-01 + <_> + + 0 -1 220 -9.3029998242855072e-03 + + 5.6499302387237549e-01 -1.8881900608539581e-01 + <_> + + 0 -1 221 -1.1749999597668648e-02 + + 8.0302399396896362e-01 -3.8277000188827515e-01 + <_> + + 0 -1 222 -2.3217000067234039e-02 + + -8.4926998615264893e-01 1.9671200215816498e-01 + <_> + + 0 -1 223 1.6866000369191170e-02 + + -4.0591898560523987e-01 5.0695300102233887e-01 + <_> + + 0 -1 224 -2.4031000211834908e-02 + + -1.5297520160675049e+00 2.3344999551773071e-01 + <_> + + 0 -1 225 -3.6945998668670654e-02 + + 6.3007700443267822e-01 -3.1780400872230530e-01 + <_> + + 0 -1 226 -6.1563998460769653e-02 + + 5.8627897500991821e-01 -1.2107999995350838e-02 + <_> + + 0 -1 227 2.1661000326275826e-02 + + -2.5623700022697449e-01 1.0409849882125854e+00 + <_> + + 0 -1 228 -3.6710000131279230e-03 + + 2.9171100258827209e-01 -8.3287298679351807e-01 + <_> + + 0 -1 229 4.4849000871181488e-02 + + -3.9633199572563171e-01 4.5662000775337219e-01 + <_> + + 0 -1 230 5.7195000350475311e-02 + + 2.1023899316787720e-01 -1.5004800558090210e+00 + <_> + + 0 -1 231 -1.1342000216245651e-02 + + 4.4071298837661743e-01 -3.8653799891471863e-01 + <_> + + 0 -1 232 -1.2004000134766102e-02 + + 9.3954598903656006e-01 -1.0589499771595001e-01 + <_> + + 0 -1 233 2.2515999153256416e-02 + + 9.4480002298951149e-03 -1.6799509525299072e+00 + <_> + + 0 -1 234 -1.9809000194072723e-02 + + -1.0133639574050903e+00 2.4146600067615509e-01 + <_> + + 0 -1 235 1.5891000628471375e-02 + + -3.7507599592208862e-01 4.6614098548889160e-01 + <_> + + 0 -1 236 -9.1420002281665802e-03 + + -8.0484098196029663e-01 1.7816999554634094e-01 + <_> + + 0 -1 237 -4.4740000739693642e-03 + + -1.0562069416046143e+00 7.3305003345012665e-02 + <_> + + 0 -1 238 1.2742500007152557e-01 + + 2.0165599882602692e-01 -1.5467929840087891e+00 + <_> + + 0 -1 239 4.7703001648187637e-02 + + -3.7937799096107483e-01 3.7885999679565430e-01 + <_> + + 0 -1 240 5.3608000278472900e-02 + + 2.1220499277114868e-01 -1.2399710416793823e+00 + <_> + + 0 -1 241 -3.9680998772382736e-02 + + -1.0257550477981567e+00 5.1282998174428940e-02 + <_> + + 0 -1 242 -6.7327000200748444e-02 + + -1.0304750204086304e+00 2.3005299270153046e-01 + <_> + + 0 -1 243 1.3337600231170654e-01 + + -2.0869000256061554e-01 1.2272510528564453e+00 + <_> + + 0 -1 244 -2.0919300615787506e-01 + + 8.7929898500442505e-01 -4.4254999607801437e-02 + <_> + + 0 -1 245 -6.5589003264904022e-02 + + 1.0443429946899414e+00 -2.1682099997997284e-01 + <_> + + 0 -1 246 6.1882998794317245e-02 + + 1.3798199594020844e-01 -1.9009059667587280e+00 + <_> + + 0 -1 247 -2.5578999891877174e-02 + + -1.6607600450515747e+00 5.8439997956156731e-03 + <_> + + 0 -1 248 -3.4827001392841339e-02 + + 7.9940402507781982e-01 -8.2406997680664062e-02 + <_> + + 0 -1 249 -1.8209999427199364e-02 + + -9.6073997020721436e-01 6.6320002079010010e-02 + <_> + + 0 -1 250 1.5070999972522259e-02 + + 1.9899399578571320e-01 -7.6433002948760986e-01 + <_> + 72 + -3.8832089900970459e+00 + + <_> + + 0 -1 251 4.6324998140335083e-02 + + -1.0362670421600342e+00 8.2201498746871948e-01 + <_> + + 0 -1 252 1.5406999737024307e-02 + + -1.2327589988708496e+00 2.9647698998451233e-01 + <_> + + 0 -1 253 1.2808999978005886e-02 + + -7.5852298736572266e-01 5.7985502481460571e-01 + <_> + + 0 -1 254 4.9150999635457993e-02 + + -3.8983899354934692e-01 8.9680302143096924e-01 + <_> + + 0 -1 255 1.2621000409126282e-02 + + -7.1799302101135254e-01 5.0440901517868042e-01 + <_> + + 0 -1 256 -1.8768999725580215e-02 + + 5.5147600173950195e-01 -7.0555400848388672e-01 + <_> + + 0 -1 257 4.1965000331401825e-02 + + -4.4782099127769470e-01 7.0985502004623413e-01 + <_> + + 0 -1 258 -5.1401998847723007e-02 + + -1.0932120084762573e+00 2.6701900362968445e-01 + <_> + + 0 -1 259 -7.0960998535156250e-02 + + 8.3618402481079102e-01 -3.8318100571632385e-01 + <_> + + 0 -1 260 1.6745999455451965e-02 + + -2.5733101367950439e-01 2.5966501235961914e-01 + <_> + + 0 -1 261 -6.2400000169873238e-03 + + 3.1631499528884888e-01 -5.8796900510787964e-01 + <_> + + 0 -1 262 -3.9397999644279480e-02 + + -1.0491210222244263e+00 1.6822400689125061e-01 + <_> + + 0 -1 263 0. + + 1.6144199669361115e-01 -8.7876898050308228e-01 + <_> + + 0 -1 264 -2.2307999432086945e-02 + + -6.9053500890731812e-01 2.3607000708580017e-01 + <_> + + 0 -1 265 1.8919999711215496e-03 + + 2.4989199638366699e-01 -5.6583297252655029e-01 + <_> + + 0 -1 266 1.0730000212788582e-03 + + -5.0415802001953125e-01 3.8374501466751099e-01 + <_> + + 0 -1 267 3.9230998605489731e-02 + + 4.2619001120328903e-02 -1.3875889778137207e+00 + <_> + + 0 -1 268 6.2238000333309174e-02 + + 1.4119400084018707e-01 -1.0688860416412354e+00 + <_> + + 0 -1 269 2.1399999968707561e-03 + + -8.9622402191162109e-01 1.9796399772167206e-01 + <_> + + 0 -1 270 9.1800000518560410e-04 + + -4.5337298512458801e-01 4.3532699346542358e-01 + <_> + + 0 -1 271 -6.9169998168945312e-03 + + 3.3822798728942871e-01 -4.4793000817298889e-01 + <_> + + 0 -1 272 -2.3866999894380569e-02 + + -7.8908598423004150e-01 2.2511799633502960e-01 + <_> + + 0 -1 273 -1.0262800008058548e-01 + + -2.2831439971923828e+00 -5.3960001096129417e-03 + <_> + + 0 -1 274 -9.5239998772740364e-03 + + 3.9346700906753540e-01 -5.2242201566696167e-01 + <_> + + 0 -1 275 3.9877001196146011e-02 + + 3.2799001783132553e-02 -1.5079489946365356e+00 + <_> + + 0 -1 276 -1.3144999742507935e-02 + + -1.0839990377426147e+00 1.8482400476932526e-01 + <_> + + 0 -1 277 -5.0590999424457550e-02 + + -1.8822289705276489e+00 -2.2199999075382948e-03 + <_> + + 0 -1 278 2.4917000904679298e-02 + + 1.4593400061130524e-01 -2.2196519374847412e+00 + <_> + + 0 -1 279 -7.6370001770555973e-03 + + -1.0164569616317749e+00 5.8797001838684082e-02 + <_> + + 0 -1 280 4.2911998927593231e-02 + + 1.5443000197410583e-01 -1.1843889951705933e+00 + <_> + + 0 -1 281 2.3000000510364771e-04 + + -7.7305799722671509e-01 1.2189900130033493e-01 + <_> + + 0 -1 282 9.0929996222257614e-03 + + -1.1450099945068359e-01 7.1091300249099731e-01 + <_> + + 0 -1 283 1.1145000346004963e-02 + + 7.0000998675823212e-02 -1.0534820556640625e+00 + <_> + + 0 -1 284 -5.2453000098466873e-02 + + -1.7594360113143921e+00 1.9523799419403076e-01 + <_> + + 0 -1 285 -2.3020699620246887e-01 + + 9.5840299129486084e-01 -2.5045698881149292e-01 + <_> + + 0 -1 286 -1.6365999355912209e-02 + + 4.6731901168823242e-01 -2.1108399331569672e-01 + <_> + + 0 -1 287 -1.7208000645041466e-02 + + 7.0835697650909424e-01 -2.8018298745155334e-01 + <_> + + 0 -1 288 -3.6648001521825790e-02 + + -1.1013339757919312e+00 2.4341100454330444e-01 + <_> + + 0 -1 289 -1.0304999537765980e-02 + + -1.0933129787445068e+00 5.6258998811244965e-02 + <_> + + 0 -1 290 -1.3713000342249870e-02 + + -2.6438099145889282e-01 1.9821000099182129e-01 + <_> + + 0 -1 291 2.9308000579476357e-02 + + -2.2142399847507477e-01 1.0525950193405151e+00 + <_> + + 0 -1 292 2.4077000096440315e-02 + + 1.8485699594020844e-01 -1.7203969955444336e+00 + <_> + + 0 -1 293 6.1280000954866409e-03 + + -9.2721498012542725e-01 5.8752998709678650e-02 + <_> + + 0 -1 294 -2.2377999499440193e-02 + + 1.9646559953689575e+00 2.7785999700427055e-02 + <_> + + 0 -1 295 -7.0440000854432583e-03 + + 2.1427600085735321e-01 -4.8407599329948425e-01 + <_> + + 0 -1 296 -4.0603000670671463e-02 + + -1.1754349470138550e+00 1.6061200201511383e-01 + <_> + + 0 -1 297 -2.4466000497341156e-02 + + -1.1239900588989258e+00 4.1110001504421234e-02 + <_> + + 0 -1 298 2.5309999473392963e-03 + + -1.7169700562953949e-01 3.2178801298141479e-01 + <_> + + 0 -1 299 -1.9588999450206757e-02 + + 8.2720202207565308e-01 -2.6376700401306152e-01 + <_> + + 0 -1 300 -2.9635999351739883e-02 + + -1.1524770259857178e+00 1.4999300241470337e-01 + <_> + + 0 -1 301 -1.5030000358819962e-02 + + -1.0491830110549927e+00 4.0160998702049255e-02 + <_> + + 0 -1 302 -6.0715001076459885e-02 + + -1.0903840065002441e+00 1.5330800414085388e-01 + <_> + + 0 -1 303 -1.2790000066161156e-02 + + 4.2248600721359253e-01 -4.2399200797080994e-01 + <_> + + 0 -1 304 -2.0247999578714371e-02 + + -9.1866999864578247e-01 1.8485699594020844e-01 + <_> + + 0 -1 305 -3.0683999881148338e-02 + + -1.5958670377731323e+00 2.5760000571608543e-03 + <_> + + 0 -1 306 -2.0718000829219818e-02 + + -6.6299998760223389e-01 3.1037199497222900e-01 + <_> + + 0 -1 307 -1.7290000105276704e-03 + + 1.9183400273323059e-01 -6.5084999799728394e-01 + <_> + + 0 -1 308 -3.1394001096487045e-02 + + -6.3643002510070801e-01 1.5408399701118469e-01 + <_> + + 0 -1 309 1.9003000110387802e-02 + + -1.8919399380683899e-01 1.5294510126113892e+00 + <_> + + 0 -1 310 6.1769997701048851e-03 + + -1.0597900301218033e-01 6.4859598875045776e-01 + <_> + + 0 -1 311 -1.0165999643504620e-02 + + -1.0802700519561768e+00 3.7176001816987991e-02 + <_> + + 0 -1 312 -1.4169999631121755e-03 + + 3.4157499670982361e-01 -9.7737997770309448e-02 + <_> + + 0 -1 313 -4.0799998678267002e-03 + + 4.7624599933624268e-01 -3.4366300702095032e-01 + <_> + + 0 -1 314 -4.4096998870372772e-02 + + 9.7634297609329224e-01 -1.9173000007867813e-02 + <_> + + 0 -1 315 -6.0669999569654465e-02 + + -2.1752851009368896e+00 -2.8925999999046326e-02 + <_> + + 0 -1 316 -3.2931998372077942e-02 + + -6.4383101463317871e-01 1.6494099795818329e-01 + <_> + + 0 -1 317 -1.4722800254821777e-01 + + -1.4745830297470093e+00 2.5839998852461576e-03 + <_> + + 0 -1 318 -1.1930000036954880e-02 + + 4.2441400885581970e-01 -1.7712600529193878e-01 + <_> + + 0 -1 319 1.4517900347709656e-01 + + 2.5444999337196350e-02 -1.2779400348663330e+00 + <_> + + 0 -1 320 5.1447998732328415e-02 + + 1.5678399801254272e-01 -1.5188430547714233e+00 + <_> + + 0 -1 321 3.1479999888688326e-03 + + -4.0424400568008423e-01 3.2429701089859009e-01 + <_> + + 0 -1 322 -4.3600000441074371e-02 + + -1.9932260513305664e+00 1.5018600225448608e-01 + <_> + 83 + -3.8424909114837646e+00 + + <_> + + 0 -1 323 1.2899599969387054e-01 + + -6.2161999940872192e-01 1.1116520166397095e+00 + <_> + + 0 -1 324 -9.1261997818946838e-02 + + 1.0143059492111206e+00 -6.1335200071334839e-01 + <_> + + 0 -1 325 1.4271999709308147e-02 + + -1.0261659622192383e+00 3.9779999852180481e-01 + <_> + + 0 -1 326 3.2889999449253082e-02 + + -1.1386079788208008e+00 2.8690800070762634e-01 + <_> + + 0 -1 327 1.2590000405907631e-02 + + -5.6645601987838745e-01 4.5172399282455444e-01 + <_> + + 0 -1 328 1.4661000110208988e-02 + + 3.0505999922752380e-01 -6.8129599094390869e-01 + <_> + + 0 -1 329 -3.3555999398231506e-02 + + -1.7208939790725708e+00 6.1439000070095062e-02 + <_> + + 0 -1 330 1.4252699911594391e-01 + + 2.3192200064659119e-01 -1.7297149896621704e+00 + <_> + + 0 -1 331 -6.2079997733235359e-03 + + -1.2163300514221191e+00 1.2160199880599976e-01 + <_> + + 0 -1 332 1.8178999423980713e-02 + + 3.2553699612617493e-01 -8.1003999710083008e-01 + <_> + + 0 -1 333 2.5036999955773354e-02 + + -3.1698799133300781e-01 6.7361402511596680e-01 + <_> + + 0 -1 334 4.6560999006032944e-02 + + -1.1089800298213959e-01 8.4082502126693726e-01 + <_> + + 0 -1 335 -8.9999996125698090e-03 + + 3.9574500918388367e-01 -4.7624599933624268e-01 + <_> + + 0 -1 336 4.0805999189615250e-02 + + -1.8000000272877514e-04 9.4570702314376831e-01 + <_> + + 0 -1 337 -3.4221999347209930e-02 + + 7.5206297636032104e-01 -3.1531500816345215e-01 + <_> + + 0 -1 338 -3.9716001600027084e-02 + + -8.3139598369598389e-01 1.7744399607181549e-01 + <_> + + 0 -1 339 2.5170000735670328e-03 + + -5.9377998113632202e-01 2.4657000601291656e-01 + <_> + + 0 -1 340 2.7428999543190002e-02 + + 1.5998399257659912e-01 -4.2781999707221985e-01 + <_> + + 0 -1 341 3.4986000508069992e-02 + + 3.5055998712778091e-02 -1.5988600254058838e+00 + <_> + + 0 -1 342 4.4970000162720680e-03 + + -5.2034300565719604e-01 3.7828299403190613e-01 + <_> + + 0 -1 343 2.7699999045580626e-03 + + -5.3182601928710938e-01 2.4951000511646271e-01 + <_> + + 0 -1 344 3.5174001008272171e-02 + + 1.9983400404453278e-01 -1.4446129798889160e+00 + <_> + + 0 -1 345 2.5970999151468277e-02 + + 4.4426999986171722e-02 -1.3622980117797852e+00 + <_> + + 0 -1 346 -1.5783999115228653e-02 + + -9.1020399332046509e-01 2.7190300822257996e-01 + <_> + + 0 -1 347 -7.5880000367760658e-03 + + 9.2064999043941498e-02 -8.1628900766372681e-01 + <_> + + 0 -1 348 2.0754000172019005e-02 + + 2.1185700595378876e-01 -7.4729001522064209e-01 + <_> + + 0 -1 349 5.9829000383615494e-02 + + -2.7301099896430969e-01 8.0923300981521606e-01 + <_> + + 0 -1 350 3.9039000868797302e-02 + + -1.0432299971580505e-01 8.6226201057434082e-01 + <_> + + 0 -1 351 2.1665999665856361e-02 + + 6.2709003686904907e-02 -9.8894298076629639e-01 + <_> + + 0 -1 352 -2.7496999129652977e-02 + + -9.2690998315811157e-01 1.5586300194263458e-01 + <_> + + 0 -1 353 1.0462000034749508e-02 + + 1.3418099284172058e-01 -7.0386397838592529e-01 + <_> + + 0 -1 354 2.4870999157428741e-02 + + 1.9706700742244720e-01 -4.0263301134109497e-01 + <_> + + 0 -1 355 -1.6036000102758408e-02 + + -1.1409829854965210e+00 7.3997996747493744e-02 + <_> + + 0 -1 356 4.8627000302076340e-02 + + 1.6990399360656738e-01 -7.2152197360992432e-01 + <_> + + 0 -1 357 1.2619999470189214e-03 + + -4.7389799356460571e-01 2.6254999637603760e-01 + <_> + + 0 -1 358 -8.8035002350807190e-02 + + -2.1606519222259521e+00 1.4554800093173981e-01 + <_> + + 0 -1 359 1.8356999382376671e-02 + + 4.4750999659299850e-02 -1.0766370296478271e+00 + <_> + + 0 -1 360 3.5275001078844070e-02 + + -3.2919000834226608e-02 1.2153890132904053e+00 + <_> + + 0 -1 361 -2.0392900705337524e-01 + + -1.3187999725341797e+00 1.5503999777138233e-02 + <_> + + 0 -1 362 -1.6619000583887100e-02 + + 3.6850199103355408e-01 -1.5283699333667755e-01 + <_> + + 0 -1 363 3.7739001214504242e-02 + + -2.5727799534797668e-01 7.0655298233032227e-01 + <_> + + 0 -1 364 2.2720000706613064e-03 + + -7.7602997422218323e-02 3.3367800712585449e-01 + <_> + + 0 -1 365 -1.4802999794483185e-02 + + -7.8524798154830933e-01 7.6934002339839935e-02 + <_> + + 0 -1 366 -4.8319000750780106e-02 + + 1.7022320032119751e+00 4.9722000956535339e-02 + <_> + + 0 -1 367 -2.9539000242948532e-02 + + 7.7670699357986450e-01 -2.4534299969673157e-01 + <_> + + 0 -1 368 -4.6169001609086990e-02 + + -1.4922779798507690e+00 1.2340000271797180e-01 + <_> + + 0 -1 369 -2.8064999729394913e-02 + + -2.1345369815826416e+00 -2.5797000154852867e-02 + <_> + + 0 -1 370 -5.7339998893439770e-03 + + 5.6982600688934326e-01 -1.2056600302457809e-01 + <_> + + 0 -1 371 -1.0111000388860703e-02 + + 6.7911398410797119e-01 -2.6638001203536987e-01 + <_> + + 0 -1 372 1.1359999887645245e-02 + + 2.4789799749851227e-01 -6.4493000507354736e-01 + <_> + + 0 -1 373 5.1809001713991165e-02 + + 1.4716000296175480e-02 -1.2395579814910889e+00 + <_> + + 0 -1 374 3.3291999250650406e-02 + + -8.2559995353221893e-03 1.0168470144271851e+00 + <_> + + 0 -1 375 -1.4494000002741814e-02 + + 4.5066800713539124e-01 -3.6250999569892883e-01 + <_> + + 0 -1 376 -3.4221999347209930e-02 + + -9.5292502641677856e-01 2.0684599876403809e-01 + <_> + + 0 -1 377 -8.0654002726078033e-02 + + -2.0139501094818115e+00 -2.3084999993443489e-02 + <_> + + 0 -1 378 -8.9399999706074595e-04 + + 3.9572000503540039e-01 -2.9351300001144409e-01 + <_> + + 0 -1 379 9.7162000834941864e-02 + + -2.4980300664901733e-01 1.0859220027923584e+00 + <_> + + 0 -1 380 3.6614000797271729e-02 + + -5.7844001799821854e-02 1.2162159681320190e+00 + <_> + + 0 -1 381 5.1693998277187347e-02 + + 4.3062999844551086e-02 -1.0636160373687744e+00 + <_> + + 0 -1 382 -2.4557000026106834e-02 + + -4.8946800827980042e-01 1.7182900011539459e-01 + <_> + + 0 -1 383 3.2736799120903015e-01 + + -2.9688599705696106e-01 5.1798301935195923e-01 + <_> + + 0 -1 384 7.6959999278187752e-03 + + -5.9805899858474731e-01 2.4803200364112854e-01 + <_> + + 0 -1 385 1.6172200441360474e-01 + + -2.9613999649882317e-02 -2.3162529468536377e+00 + <_> + + 0 -1 386 -4.7889999113976955e-03 + + 3.7457901239395142e-01 -3.2779198884963989e-01 + <_> + + 0 -1 387 -1.8402999266982079e-02 + + -9.9692702293395996e-01 7.2948001325130463e-02 + <_> + + 0 -1 388 7.7665001153945923e-02 + + 1.4175699651241302e-01 -1.7238730192184448e+00 + <_> + + 0 -1 389 1.8921000882983208e-02 + + -2.1273100376129150e-01 1.0165189504623413e+00 + <_> + + 0 -1 390 -7.9397998750209808e-02 + + -1.3164349794387817e+00 1.4981999993324280e-01 + <_> + + 0 -1 391 -6.8037003278732300e-02 + + 4.9421998858451843e-01 -2.9091000556945801e-01 + <_> + + 0 -1 392 -6.1010001227259636e-03 + + 4.2430499196052551e-01 -3.3899301290512085e-01 + <_> + + 0 -1 393 3.1927000731229782e-02 + + -3.1046999618411064e-02 -2.3459999561309814e+00 + <_> + + 0 -1 394 -2.9843999072909355e-02 + + -7.8989601135253906e-01 1.5417699515819550e-01 + <_> + + 0 -1 395 -8.0541998147964478e-02 + + -2.2509229183197021e+00 -3.0906999483704567e-02 + <_> + + 0 -1 396 3.8109999150037766e-03 + + -2.5577300786972046e-01 2.3785500228404999e-01 + <_> + + 0 -1 397 3.3647000789642334e-02 + + -2.2541399300098419e-01 9.2307400703430176e-01 + <_> + + 0 -1 398 8.2809999585151672e-03 + + -2.8896200656890869e-01 3.1046199798583984e-01 + <_> + + 0 -1 399 1.0104399919509888e-01 + + -3.4864000976085663e-02 -2.7102620601654053e+00 + <_> + + 0 -1 400 -1.0009000077843666e-02 + + 5.9715402126312256e-01 -3.3831000328063965e-02 + <_> + + 0 -1 401 7.1919998154044151e-03 + + -4.7738000750541687e-01 2.2686000168323517e-01 + <_> + + 0 -1 402 2.4969000369310379e-02 + + 2.2877700626850128e-01 -1.0435529947280884e+00 + <_> + + 0 -1 403 2.7908000349998474e-01 + + -2.5818100571632385e-01 7.6780498027801514e-01 + <_> + + 0 -1 404 -4.4213000684976578e-02 + + -5.9798002243041992e-01 2.8039899468421936e-01 + <_> + + 0 -1 405 -1.4136999845504761e-02 + + 7.0987302064895630e-01 -2.5645199418067932e-01 + <_> + 91 + -3.6478610038757324e+00 + + <_> + + 0 -1 406 1.3771200180053711e-01 + + -5.5870598554611206e-01 1.0953769683837891e+00 + <_> + + 0 -1 407 3.4460999071598053e-02 + + -7.1171897649765015e-01 5.2899599075317383e-01 + <_> + + 0 -1 408 1.8580000847578049e-02 + + -1.1157519817352295e+00 4.0593999624252319e-01 + <_> + + 0 -1 409 2.5041999295353889e-02 + + -4.0892499685287476e-01 7.4129998683929443e-01 + <_> + + 0 -1 410 5.7179000228643417e-02 + + -3.8054299354553223e-01 7.3647701740264893e-01 + <_> + + 0 -1 411 1.4932000078260899e-02 + + -6.9945502281188965e-01 3.7950998544692993e-01 + <_> + + 0 -1 412 8.8900001719594002e-03 + + -5.4558598995208740e-01 3.6332499980926514e-01 + <_> + + 0 -1 413 3.0435999855399132e-02 + + -1.0124599933624268e-01 7.9585897922515869e-01 + <_> + + 0 -1 414 -4.4160000979900360e-02 + + 8.4410899877548218e-01 -3.2976400852203369e-01 + <_> + + 0 -1 415 1.8461000174283981e-02 + + 2.6326599717140198e-01 -9.6736502647399902e-01 + <_> + + 0 -1 416 1.0614999569952488e-02 + + 1.5251900255680084e-01 -1.0589870214462280e+00 + <_> + + 0 -1 417 -4.5974001288414001e-02 + + -1.9918340444564819e+00 1.3629099726676941e-01 + <_> + + 0 -1 418 8.2900002598762512e-02 + + -3.2037198543548584e-01 6.0304200649261475e-01 + <_> + + 0 -1 419 -8.9130001142621040e-03 + + 5.9586602449417114e-01 -2.1139599382877350e-01 + <_> + + 0 -1 420 4.2814001441001892e-02 + + 2.2925000637769699e-02 -1.4679330587387085e+00 + <_> + + 0 -1 421 -8.7139997631311417e-03 + + -4.3989500403404236e-01 2.0439699292182922e-01 + <_> + + 0 -1 422 -4.3390002101659775e-03 + + -8.9066797494888306e-01 1.0469999909400940e-01 + <_> + + 0 -1 423 8.0749997869133949e-03 + + 2.1164199709892273e-01 -4.0231600403785706e-01 + <_> + + 0 -1 424 9.6739001572132111e-02 + + 1.3319999910891056e-02 -1.6085360050201416e+00 + <_> + + 0 -1 425 -3.0536999925971031e-02 + + 1.0063740015029907e+00 -1.3413299620151520e-01 + <_> + + 0 -1 426 -6.0855999588966370e-02 + + -1.4689979553222656e+00 9.4240000471472740e-03 + <_> + + 0 -1 427 -3.8162000477313995e-02 + + -8.1636399030685425e-01 2.6171201467514038e-01 + <_> + + 0 -1 428 -9.6960002556443214e-03 + + 1.1561699956655502e-01 -7.1693199872970581e-01 + <_> + + 0 -1 429 4.8902999609708786e-02 + + 1.3050499558448792e-01 -1.6448370218276978e+00 + <_> + + 0 -1 430 -4.1611999273300171e-02 + + -1.1795840263366699e+00 2.5017000734806061e-02 + <_> + + 0 -1 431 -2.0188000053167343e-02 + + 6.3188201189041138e-01 -1.0490400344133377e-01 + <_> + + 0 -1 432 -9.7900000400841236e-04 + + 1.8507799506187439e-01 -5.3565901517868042e-01 + <_> + + 0 -1 433 -3.3622000366449356e-02 + + -9.3127602338790894e-01 2.0071500539779663e-01 + <_> + + 0 -1 434 1.9455999135971069e-02 + + 3.8029000163078308e-02 -1.0112210512161255e+00 + <_> + + 0 -1 435 -3.1800000579096377e-04 + + 3.6457699537277222e-01 -2.7610900998115540e-01 + <_> + + 0 -1 436 -3.8899999344721437e-04 + + 1.9665899872779846e-01 -5.3410500288009644e-01 + <_> + + 0 -1 437 -9.3496002256870270e-02 + + -1.6772350072860718e+00 2.0727099478244781e-01 + <_> + + 0 -1 438 -7.7877998352050781e-02 + + -3.0760629177093506e+00 -3.5803999751806259e-02 + <_> + + 0 -1 439 1.6947999596595764e-02 + + 2.1447399258613586e-01 -7.1376299858093262e-01 + <_> + + 0 -1 440 -2.1459000185132027e-02 + + -1.1468060016632080e+00 1.5855999663472176e-02 + <_> + + 0 -1 441 -1.2865999713540077e-02 + + 8.3812397718429565e-01 -6.5944001078605652e-02 + <_> + + 0 -1 442 7.8220004215836525e-03 + + -2.8026801347732544e-01 7.9376900196075439e-01 + <_> + + 0 -1 443 1.0294400155544281e-01 + + 1.7832300066947937e-01 -6.8412202596664429e-01 + <_> + + 0 -1 444 -3.7487998604774475e-02 + + 9.6189999580383301e-01 -2.1735599637031555e-01 + <_> + + 0 -1 445 2.5505999103188515e-02 + + 1.0103999637067318e-02 1.2461110353469849e+00 + <_> + + 0 -1 446 6.6700001480057836e-04 + + -5.3488200902938843e-01 1.4746299386024475e-01 + <_> + + 0 -1 447 -2.8867900371551514e-01 + + 8.2172799110412598e-01 -1.4948000200092793e-02 + <_> + + 0 -1 448 9.1294996440410614e-02 + + -1.9605399668216705e-01 1.0803170204162598e+00 + <_> + + 0 -1 449 1.2056600302457809e-01 + + -2.3848999291658401e-02 1.1392610073089600e+00 + <_> + + 0 -1 450 -7.3775000870227814e-02 + + -1.3583840131759644e+00 -4.2039998807013035e-03 + <_> + + 0 -1 451 -3.3128000795841217e-02 + + -6.4483201503753662e-01 2.4142199754714966e-01 + <_> + + 0 -1 452 -4.3937001377344131e-02 + + 8.4285402297973633e-01 -2.0624800026416779e-01 + <_> + + 0 -1 453 1.8110199272632599e-01 + + 1.9212099909782410e-01 -1.2222139835357666e+00 + <_> + + 0 -1 454 -1.1850999668240547e-02 + + -7.2677397727966309e-01 5.2687998861074448e-02 + <_> + + 0 -1 455 4.5920000411570072e-03 + + -3.6305201053619385e-01 2.9223799705505371e-01 + <_> + + 0 -1 456 7.0620002225041389e-03 + + 5.8116000145673752e-02 -6.7161601781845093e-01 + <_> + + 0 -1 457 -2.3715000599622726e-02 + + 4.7142100334167480e-01 1.8580000847578049e-02 + <_> + + 0 -1 458 -6.7171998322010040e-02 + + -1.1331889629364014e+00 2.3780999705195427e-02 + <_> + + 0 -1 459 -6.5310001373291016e-02 + + 9.8253500461578369e-01 2.8362000361084938e-02 + <_> + + 0 -1 460 2.2791000083088875e-02 + + -2.8213700652122498e-01 5.8993399143218994e-01 + <_> + + 0 -1 461 -1.9037999212741852e-02 + + -6.3711500167846680e-01 2.6514598727226257e-01 + <_> + + 0 -1 462 -6.8689999170601368e-03 + + 3.7487301230430603e-01 -3.3232098817825317e-01 + <_> + + 0 -1 463 -4.0146000683307648e-02 + + -1.3048729896545410e+00 1.5724299848079681e-01 + <_> + + 0 -1 464 -4.0530998259782791e-02 + + -2.0458049774169922e+00 -2.6925999671220779e-02 + <_> + + 0 -1 465 -1.2253999710083008e-02 + + 7.7649402618408203e-01 -4.2971000075340271e-02 + <_> + + 0 -1 466 -2.7219999581575394e-02 + + 1.7424400150775909e-01 -4.4600901007652283e-01 + <_> + + 0 -1 467 -8.8366001844406128e-02 + + -1.5036419630050659e+00 1.4289900660514832e-01 + <_> + + 0 -1 468 -7.9159997403621674e-03 + + 2.8666698932647705e-01 -3.7923699617385864e-01 + <_> + + 0 -1 469 -4.1960000991821289e-02 + + 1.3846950531005859e+00 6.5026998519897461e-02 + <_> + + 0 -1 470 4.5662999153137207e-02 + + -2.2452299296855927e-01 7.9521000385284424e-01 + <_> + + 0 -1 471 -1.4090600609779358e-01 + + -1.5879319906234741e+00 1.1359000205993652e-01 + <_> + + 0 -1 472 -5.9216000139713287e-02 + + -1.1945960521697998e+00 -7.1640000678598881e-03 + <_> + + 0 -1 473 4.3390002101659775e-03 + + -1.5528699755668640e-01 4.0664499998092651e-01 + <_> + + 0 -1 474 -2.0369999110698700e-03 + + 2.5927901268005371e-01 -3.8368299603462219e-01 + <_> + + 0 -1 475 2.7516499161720276e-01 + + -8.8497996330261230e-02 7.6787501573562622e-01 + <_> + + 0 -1 476 -2.6601999998092651e-02 + + 7.5024497509002686e-01 -2.2621999680995941e-01 + <_> + + 0 -1 477 4.0906000882387161e-02 + + 1.2158600240945816e-01 -1.4566910266876221e+00 + <_> + + 0 -1 478 5.5320002138614655e-03 + + -3.6611500382423401e-01 2.5968599319458008e-01 + <_> + + 0 -1 479 3.1879000365734100e-02 + + -7.5019001960754395e-02 4.8484799265861511e-01 + <_> + + 0 -1 480 -4.1482001543045044e-02 + + 7.8220397233963013e-01 -2.1992200613021851e-01 + <_> + + 0 -1 481 -9.6130996942520142e-02 + + -8.9456301927566528e-01 1.4680700004100800e-01 + <_> + + 0 -1 482 -1.1568999849259853e-02 + + 8.2714098691940308e-01 -2.0275600254535675e-01 + <_> + + 0 -1 483 1.8312999978661537e-02 + + 1.6367999836802483e-02 2.7306801080703735e-01 + <_> + + 0 -1 484 -3.4166000783443451e-02 + + 1.1307320594787598e+00 -1.8810899555683136e-01 + <_> + + 0 -1 485 -2.4476999416947365e-02 + + -5.7791298627853394e-01 1.5812499821186066e-01 + <_> + + 0 -1 486 4.8957001417875290e-02 + + -2.2564999759197235e-02 -1.6373280286788940e+00 + <_> + + 0 -1 487 -2.0702999085187912e-02 + + -5.4512101411819458e-01 2.4086999893188477e-01 + <_> + + 0 -1 488 -2.3002000525593758e-02 + + -1.2236540317535400e+00 -7.3440000414848328e-03 + <_> + + 0 -1 489 6.4585000276565552e-02 + + 1.4695599675178528e-01 -4.4967499375343323e-01 + <_> + + 0 -1 490 1.2666000053286552e-02 + + -2.7873900532722473e-01 4.3876600265502930e-01 + <_> + + 0 -1 491 -1.2002999894320965e-02 + + -2.4289099872112274e-01 2.5350099802017212e-01 + <_> + + 0 -1 492 -2.6443999260663986e-02 + + -8.5864800214767456e-01 2.6025999337434769e-02 + <_> + + 0 -1 493 -2.5547999888658524e-02 + + 6.9287902116775513e-01 -2.1160000469535589e-03 + <_> + + 0 -1 494 3.9115000516176224e-02 + + -1.6589100658893585e-01 1.5209139585494995e+00 + <_> + + 0 -1 495 -6.0330000706017017e-03 + + 4.3856900930404663e-01 -2.1613700687885284e-01 + <_> + + 0 -1 496 -3.3936999738216400e-02 + + -9.7998398542404175e-01 2.2133000195026398e-02 + <_> + 99 + -3.8700489997863770e+00 + + <_> + + 0 -1 497 4.0672998875379562e-02 + + -9.0474700927734375e-01 6.4410597085952759e-01 + <_> + + 0 -1 498 2.5609999895095825e-02 + + -7.9216998815536499e-01 5.7489997148513794e-01 + <_> + + 0 -1 499 1.9959500432014465e-01 + + -3.0099600553512573e-01 1.3143850564956665e+00 + <_> + + 0 -1 500 1.2404999695718288e-02 + + -8.9882999658584595e-01 2.9205799102783203e-01 + <_> + + 0 -1 501 3.9207998663187027e-02 + + -4.1955199837684631e-01 5.3463298082351685e-01 + <_> + + 0 -1 502 -3.0843999236822128e-02 + + 4.5793399214744568e-01 -4.4629099965095520e-01 + <_> + + 0 -1 503 -3.5523001104593277e-02 + + 9.1310501098632812e-01 -2.7373200654983521e-01 + <_> + + 0 -1 504 -6.1650000512599945e-02 + + -1.4697799682617188e+00 2.0364099740982056e-01 + <_> + + 0 -1 505 -1.1739999987185001e-02 + + -1.0482879877090454e+00 6.7801997065544128e-02 + <_> + + 0 -1 506 6.6933996975421906e-02 + + 2.9274499416351318e-01 -5.2282899618148804e-01 + <_> + + 0 -1 507 -2.0631000399589539e-02 + + -1.2855139970779419e+00 4.4550999999046326e-02 + <_> + + 0 -1 508 -2.2357000038027763e-02 + + -8.5753798484802246e-01 1.8434000015258789e-01 + <_> + + 0 -1 509 1.1500000255182385e-03 + + 1.6405500471591949e-01 -6.9125002622604370e-01 + <_> + + 0 -1 510 3.5872999578714371e-02 + + 1.5756499767303467e-01 -8.4262597560882568e-01 + <_> + + 0 -1 511 3.0659999698400497e-02 + + 2.1637000143527985e-02 -1.3634690046310425e+00 + <_> + + 0 -1 512 5.5559999309480190e-03 + + -1.6737000644207001e-01 2.5888401269912720e-01 + <_> + + 0 -1 513 -6.1160000041127205e-03 + + -9.7271800041198730e-01 6.6100001335144043e-02 + <_> + + 0 -1 514 -3.0316999182105064e-02 + + 9.8474198579788208e-01 -1.6448000445961952e-02 + <_> + + 0 -1 515 -9.7200004383921623e-03 + + 4.7604700922966003e-01 -3.2516700029373169e-01 + <_> + + 0 -1 516 -5.7126998901367188e-02 + + -9.5920699834823608e-01 1.9938200712203979e-01 + <_> + + 0 -1 517 4.0059997700154781e-03 + + -5.2612501382827759e-01 2.2428700327873230e-01 + <_> + + 0 -1 518 3.3734001219272614e-02 + + 1.7070099711418152e-01 -1.0737580060958862e+00 + <_> + + 0 -1 519 -3.4641999751329422e-02 + + -1.1343129873275757e+00 3.6540001630783081e-02 + <_> + + 0 -1 520 4.6923000365495682e-02 + + 2.5832301378250122e-01 -7.1535801887512207e-01 + <_> + + 0 -1 521 -8.7660001590847969e-03 + + 1.9640900194644928e-01 -5.3355097770690918e-01 + <_> + + 0 -1 522 6.5627999603748322e-02 + + -5.1194999366998672e-02 9.7610700130462646e-01 + <_> + + 0 -1 523 -4.4165000319480896e-02 + + 1.0631920099258423e+00 -2.3462599515914917e-01 + <_> + + 0 -1 524 1.7304999753832817e-02 + + -1.8582899868488312e-01 4.5889899134635925e-01 + <_> + + 0 -1 525 3.3135998994112015e-02 + + -2.9381999745965004e-02 -2.6651329994201660e+00 + <_> + + 0 -1 526 -2.1029999479651451e-02 + + 9.9979901313781738e-01 2.4937000125646591e-02 + <_> + + 0 -1 527 2.9783999547362328e-02 + + -2.9605999588966370e-02 -2.1695868968963623e+00 + <_> + + 0 -1 528 5.5291999131441116e-02 + + -7.5599999399855733e-04 7.4651998281478882e-01 + <_> + + 0 -1 529 -3.3597998321056366e-02 + + -1.5274159908294678e+00 1.1060000397264957e-02 + <_> + + 0 -1 530 1.9602999091148376e-02 + + 3.3574998378753662e-02 9.9526202678680420e-01 + <_> + + 0 -1 531 -2.0787000656127930e-02 + + 7.6612901687622070e-01 -2.4670800566673279e-01 + <_> + + 0 -1 532 3.2536000013351440e-02 + + 1.6263400018215179e-01 -6.1134302616119385e-01 + <_> + + 0 -1 533 -1.0788000188767910e-02 + + -9.7839701175689697e-01 2.8969999402761459e-02 + <_> + + 0 -1 534 -9.9560003727674484e-03 + + 4.6145799756050110e-01 -1.3510499894618988e-01 + <_> + + 0 -1 535 -3.7489999085664749e-03 + + 2.5458198785781860e-01 -5.1955598592758179e-01 + <_> + + 0 -1 536 -4.1779998689889908e-02 + + -8.0565100908279419e-01 1.5208500623703003e-01 + <_> + + 0 -1 537 -3.4221000969409943e-02 + + -1.3137799501419067e+00 -3.5800000187009573e-03 + <_> + + 0 -1 538 1.0130000300705433e-02 + + 2.0175799727439880e-01 -6.1339598894119263e-01 + <_> + + 0 -1 539 -8.9849002659320831e-02 + + 9.7632801532745361e-01 -2.0884799957275391e-01 + <_> + + 0 -1 540 2.6097999885678291e-02 + + -1.8807999789714813e-01 4.7705799341201782e-01 + <_> + + 0 -1 541 -3.7539999466389418e-03 + + -6.7980402708053589e-01 1.1288800090551376e-01 + <_> + + 0 -1 542 3.1973000615835190e-02 + + 1.8951700627803802e-01 -1.4967479705810547e+00 + <_> + + 0 -1 543 1.9332999363541603e-02 + + -2.3609900474548340e-01 8.1320500373840332e-01 + <_> + + 0 -1 544 1.9490000559017062e-03 + + 2.4830399453639984e-01 -6.9211997091770172e-02 + <_> + + 0 -1 545 -4.4146999716758728e-02 + + -1.0418920516967773e+00 4.8053000122308731e-02 + <_> + + 0 -1 546 -4.4681999832391739e-02 + + 5.1346302032470703e-01 -7.3799998499453068e-03 + <_> + + 0 -1 547 -1.0757499933242798e-01 + + 1.6202019453048706e+00 -1.8667599558830261e-01 + <_> + + 0 -1 548 -1.2846800684928894e-01 + + 2.9869480133056641e+00 9.5427997410297394e-02 + <_> + + 0 -1 549 -4.4757999479770660e-02 + + 6.0405302047729492e-01 -2.7058699727058411e-01 + <_> + + 0 -1 550 -4.3990999460220337e-02 + + -6.1790502071380615e-01 1.5997199714183807e-01 + <_> + + 0 -1 551 -1.2268999963998795e-01 + + 6.6327202320098877e-01 -2.3636999726295471e-01 + <_> + + 0 -1 552 -1.9982999190688133e-02 + + -1.1228660345077515e+00 1.9616700708866119e-01 + <_> + + 0 -1 553 -1.5527999959886074e-02 + + -1.0770269632339478e+00 2.0693000406026840e-02 + <_> + + 0 -1 554 -4.8971001058816910e-02 + + 8.1168299913406372e-01 -1.7252000048756599e-02 + <_> + + 0 -1 555 5.5975999683141708e-02 + + -2.2529000416398048e-02 -1.7356760501861572e+00 + <_> + + 0 -1 556 -9.8580000922083855e-03 + + 6.7881399393081665e-01 -5.8180000633001328e-02 + <_> + + 0 -1 557 1.3481000438332558e-02 + + 5.7847999036312103e-02 -7.7255302667617798e-01 + <_> + + 0 -1 558 6.5609999001026154e-03 + + -1.3146899640560150e-01 6.7055797576904297e-01 + <_> + + 0 -1 559 7.1149999275803566e-03 + + -3.7880599498748779e-01 3.0978998541831970e-01 + <_> + + 0 -1 560 4.8159998841583729e-03 + + -5.8470398187637329e-01 2.5602099299430847e-01 + <_> + + 0 -1 561 9.5319999381899834e-03 + + -3.0217000842094421e-01 4.1253298521041870e-01 + <_> + + 0 -1 562 -2.7474999427795410e-02 + + 5.9154701232910156e-01 1.7963999882340431e-02 + <_> + + 0 -1 563 -3.9519999176263809e-02 + + 9.6913498640060425e-01 -2.1020300686359406e-01 + <_> + + 0 -1 564 -3.0658999457955360e-02 + + 9.1155898571014404e-01 4.0550000965595245e-02 + <_> + + 0 -1 565 -1.4680000022053719e-03 + + -6.0489797592163086e-01 1.6960899531841278e-01 + <_> + + 0 -1 566 1.9077600538730621e-01 + + 4.3515000492334366e-02 8.1892901659011841e-01 + <_> + + 0 -1 567 5.1790000870823860e-03 + + -9.3617302179336548e-01 2.4937000125646591e-02 + <_> + + 0 -1 568 2.4126000702381134e-02 + + 1.8175500631332397e-01 -3.4185901284217834e-01 + <_> + + 0 -1 569 -2.6383999735116959e-02 + + -1.2912579774856567e+00 -3.4280000254511833e-03 + <_> + + 0 -1 570 5.4139997810125351e-03 + + -4.6291999518871307e-02 2.5269600749015808e-01 + <_> + + 0 -1 571 5.4216001182794571e-02 + + -1.2848000042140484e-02 -1.4304540157318115e+00 + <_> + + 0 -1 572 2.3799999326001853e-04 + + -2.6676699519157410e-01 3.3588299155235291e-01 + <_> + + 0 -1 573 1.5216999687254429e-02 + + -5.1367300748825073e-01 1.3005100190639496e-01 + <_> + + 0 -1 574 1.7007999122142792e-02 + + 4.1575899720191956e-01 -3.1241199374198914e-01 + <_> + + 0 -1 575 3.0496999621391296e-02 + + -2.4820999801158905e-01 7.0828497409820557e-01 + <_> + + 0 -1 576 6.5430002287030220e-03 + + -2.2637000679969788e-01 1.9184599816799164e-01 + <_> + + 0 -1 577 1.4163999259471893e-01 + + 6.5227001905441284e-02 -8.8809502124786377e-01 + <_> + + 0 -1 578 1.9338000565767288e-02 + + 1.8891200423240662e-01 -2.7397701144218445e-01 + <_> + + 0 -1 579 -1.7324000597000122e-02 + + -9.4866698980331421e-01 2.4196999147534370e-02 + <_> + + 0 -1 580 -6.2069999985396862e-03 + + 3.6938399076461792e-01 -1.7494900524616241e-01 + <_> + + 0 -1 581 -1.6109000891447067e-02 + + 9.6159499883651733e-01 -2.0005300641059875e-01 + <_> + + 0 -1 582 -1.0122500360012054e-01 + + -3.0699110031127930e+00 1.1363799870014191e-01 + <_> + + 0 -1 583 -7.5509999878704548e-03 + + 2.2921000421047211e-01 -4.5645099878311157e-01 + <_> + + 0 -1 584 4.4247999787330627e-02 + + -3.1599999056197703e-04 3.9225301146507263e-01 + <_> + + 0 -1 585 -1.1636000126600266e-01 + + 9.5233702659606934e-01 -2.0201599597930908e-01 + <_> + + 0 -1 586 4.7360002063214779e-03 + + -9.9177002906799316e-02 2.0370499789714813e-01 + <_> + + 0 -1 587 2.2459000349044800e-02 + + 8.7280003353953362e-03 -1.0217070579528809e+00 + <_> + + 0 -1 588 -1.2109000235795975e-02 + + 6.4812600612640381e-01 -9.0149000287055969e-02 + <_> + + 0 -1 589 5.6120000779628754e-02 + + -3.6759998649358749e-02 -1.9275590181350708e+00 + <_> + + 0 -1 590 -8.7379999458789825e-03 + + 6.9261300563812256e-01 -6.8374998867511749e-02 + <_> + + 0 -1 591 6.6399998031556606e-03 + + -4.0569800138473511e-01 1.8625700473785400e-01 + <_> + + 0 -1 592 -1.8131999298930168e-02 + + -6.4518201351165771e-01 2.1976399421691895e-01 + <_> + + 0 -1 593 -2.2718999534845352e-02 + + 9.7776198387145996e-01 -1.8654300272464752e-01 + <_> + + 0 -1 594 1.2705000117421150e-02 + + -1.0546600073575974e-01 3.7404099106788635e-01 + <_> + + 0 -1 595 -1.3682999648153782e-02 + + 6.1064100265502930e-01 -2.6881098747253418e-01 + <_> + 115 + -3.7160909175872803e+00 + + <_> + + 0 -1 596 3.1357999891042709e-02 + + -1.0183910131454468e+00 5.7528597116470337e-01 + <_> + + 0 -1 597 9.3050003051757812e-02 + + -4.1297501325607300e-01 1.0091199874877930e+00 + <_> + + 0 -1 598 2.5949999690055847e-02 + + -5.8587902784347534e-01 5.6606197357177734e-01 + <_> + + 0 -1 599 1.6472000628709793e-02 + + -9.2857497930526733e-01 3.0924499034881592e-01 + <_> + + 0 -1 600 -1.8779999809339643e-03 + + 1.1951000243425369e-01 -1.1180130243301392e+00 + <_> + + 0 -1 601 -9.0129999443888664e-03 + + -5.7849502563476562e-01 3.3154401183128357e-01 + <_> + + 0 -1 602 2.2547999396920204e-02 + + -3.8325101137161255e-01 5.2462202310562134e-01 + <_> + + 0 -1 603 -3.7780001759529114e-02 + + 1.1790670156478882e+00 -3.4166999161243439e-02 + <_> + + 0 -1 604 -5.3799999877810478e-03 + + -8.6265897750854492e-01 1.1867900192737579e-01 + <_> + + 0 -1 605 -2.3893000558018684e-02 + + -7.4950599670410156e-01 2.1011400222778320e-01 + <_> + + 0 -1 606 -2.6521999388933182e-02 + + 9.2128598690032959e-01 -2.8252801299095154e-01 + <_> + + 0 -1 607 1.2280000373721123e-02 + + 2.6662799715995789e-01 -7.0013600587844849e-01 + <_> + + 0 -1 608 9.6594996750354767e-02 + + -2.8453999757766724e-01 7.3168998956680298e-01 + <_> + + 0 -1 609 -2.7414999902248383e-02 + + -6.1492699384689331e-01 1.5576200187206268e-01 + <_> + + 0 -1 610 -1.5767000615596771e-02 + + 5.7551199197769165e-01 -3.4362199902534485e-01 + <_> + + 0 -1 611 -2.1100000012665987e-03 + + 3.2599699497222900e-01 -1.3008299469947815e-01 + <_> + + 0 -1 612 1.2006999924778938e-02 + + 8.9322999119758606e-02 -9.6025598049163818e-01 + <_> + + 0 -1 613 -1.5421999618411064e-02 + + 3.4449499845504761e-01 -4.6711999177932739e-01 + <_> + + 0 -1 614 -4.1579999960958958e-03 + + 2.3696300387382507e-01 -5.2563297748565674e-01 + <_> + + 0 -1 615 -2.1185999736189842e-02 + + -7.4267697334289551e-01 2.1702000498771667e-01 + <_> + + 0 -1 616 -1.7077000811696053e-02 + + -9.0471798181533813e-01 6.6012002527713776e-02 + <_> + + 0 -1 617 -4.0849998593330383e-02 + + -3.4446600079536438e-01 2.1503700315952301e-01 + <_> + + 0 -1 618 -8.1930002197623253e-03 + + -9.3388599157333374e-01 5.0471000373363495e-02 + <_> + + 0 -1 619 -1.9238000735640526e-02 + + -5.3203701972961426e-01 1.7240600287914276e-01 + <_> + + 0 -1 620 -4.4192001223564148e-02 + + 9.2075002193450928e-01 -2.2148500382900238e-01 + <_> + + 0 -1 621 -6.2392000108957291e-02 + + -7.1053802967071533e-01 1.8323899805545807e-01 + <_> + + 0 -1 622 -1.0079999919980764e-03 + + -8.7063097953796387e-01 5.5330000817775726e-02 + <_> + + 0 -1 623 2.3870000615715981e-02 + + -2.2854200005531311e-01 5.2415597438812256e-01 + <_> + + 0 -1 624 2.1391000598669052e-02 + + -3.0325898528099060e-01 5.5860602855682373e-01 + <_> + + 0 -1 625 2.0254999399185181e-02 + + 2.6901501417160034e-01 -7.0261800289154053e-01 + <_> + + 0 -1 626 -2.8772000223398209e-02 + + -1.1835030317306519e+00 4.6512000262737274e-02 + <_> + + 0 -1 627 3.4199999645352364e-03 + + -5.4652100801467896e-01 2.5962498784065247e-01 + <_> + + 0 -1 628 5.6983001530170441e-02 + + -2.6982900500297546e-01 5.8170700073242188e-01 + <_> + + 0 -1 629 -9.3892000615596771e-02 + + -9.1046398878097534e-01 1.9677700102329254e-01 + <_> + + 0 -1 630 1.7699999734759331e-02 + + -4.4003298878669739e-01 2.1349500119686127e-01 + <_> + + 0 -1 631 2.2844199836254120e-01 + + 2.3605000227689743e-02 7.7171599864959717e-01 + <_> + + 0 -1 632 -1.8287500739097595e-01 + + 7.9228597879409790e-01 -2.4644799530506134e-01 + <_> + + 0 -1 633 -6.9891996681690216e-02 + + 8.0267798900604248e-01 -3.6072000861167908e-02 + <_> + + 0 -1 634 1.5297000296413898e-02 + + -2.0072300732135773e-01 1.1030600070953369e+00 + <_> + + 0 -1 635 6.7500001750886440e-03 + + -4.5967999845743179e-02 7.2094500064849854e-01 + <_> + + 0 -1 636 -1.5983000397682190e-02 + + -9.0357202291488647e-01 4.4987998902797699e-02 + <_> + + 0 -1 637 1.3088000006973743e-02 + + 3.5297098755836487e-01 -3.7710601091384888e-01 + <_> + + 0 -1 638 1.3061000034213066e-02 + + -1.9583599269390106e-01 1.1198940277099609e+00 + <_> + + 0 -1 639 -3.9907000958919525e-02 + + -1.3998429775238037e+00 1.9145099818706512e-01 + <_> + + 0 -1 640 1.5026999637484550e-02 + + 2.3600000422447920e-03 -1.1611249446868896e+00 + <_> + + 0 -1 641 -2.0517999306321144e-02 + + -4.8908099532127380e-01 1.6743400692939758e-01 + <_> + + 0 -1 642 -2.2359000518918037e-02 + + -1.2202980518341064e+00 -1.1975999921560287e-02 + <_> + + 0 -1 643 -7.9150004312396049e-03 + + 3.7228098511695862e-01 -8.5063003003597260e-02 + <_> + + 0 -1 644 1.5258000232279301e-02 + + -2.9412600398063660e-01 5.9406399726867676e-01 + <_> + + 0 -1 645 -3.1665999442338943e-02 + + -1.4395569562911987e+00 1.3578799366950989e-01 + <_> + + 0 -1 646 -3.0773999169468880e-02 + + -2.2545371055603027e+00 -3.3971000462770462e-02 + <_> + + 0 -1 647 -1.5483000315725803e-02 + + 3.7700700759887695e-01 1.5847999602556229e-02 + <_> + + 0 -1 648 3.5167001187801361e-02 + + -2.9446101188659668e-01 5.3159099817276001e-01 + <_> + + 0 -1 649 -1.7906000837683678e-02 + + -9.9788200855255127e-01 1.6235999763011932e-01 + <_> + + 0 -1 650 -3.1799999997019768e-03 + + 4.7657001763582230e-02 -7.5249898433685303e-01 + <_> + + 0 -1 651 1.5720000490546227e-02 + + 1.4873799681663513e-01 -6.5375399589538574e-01 + <_> + + 0 -1 652 2.9864000156521797e-02 + + -1.4952000230550766e-02 -1.2275190353393555e+00 + <_> + + 0 -1 653 2.9899999499320984e-03 + + -1.4263699948787689e-01 4.3272799253463745e-01 + <_> + + 0 -1 654 8.4749996662139893e-02 + + -1.9280999898910522e-02 -1.1946409940719604e+00 + <_> + + 0 -1 655 -5.8724999427795410e-02 + + -1.7328219413757324e+00 1.4374700188636780e-01 + <_> + + 0 -1 656 4.4755998998880386e-02 + + -2.4140599370002747e-01 5.4019999504089355e-01 + <_> + + 0 -1 657 4.0369000285863876e-02 + + 5.7680001482367516e-03 5.6578099727630615e-01 + <_> + + 0 -1 658 3.7735998630523682e-02 + + 3.8180999457836151e-02 -7.9370397329330444e-01 + <_> + + 0 -1 659 6.0752999037504196e-02 + + 7.6453000307083130e-02 1.4813209772109985e+00 + <_> + + 0 -1 660 -1.9832000136375427e-02 + + -1.6971720457077026e+00 -2.7370000258088112e-02 + <_> + + 0 -1 661 -1.6592699289321899e-01 + + 6.2976002693176270e-01 3.1762998551130295e-02 + <_> + + 0 -1 662 6.9014996290206909e-02 + + -3.3463200926780701e-01 3.0076700448989868e-01 + <_> + + 0 -1 663 1.1358000338077545e-02 + + 2.2741499543190002e-01 -3.8224700093269348e-01 + <_> + + 0 -1 664 1.7000000225380063e-03 + + 1.9223800301551819e-01 -5.2735102176666260e-01 + <_> + + 0 -1 665 7.9769000411033630e-02 + + 9.1491997241973877e-02 2.1049048900604248e+00 + <_> + + 0 -1 666 -5.7144001126289368e-02 + + -1.7452130317687988e+00 -4.0910001844167709e-02 + <_> + + 0 -1 667 7.3830001056194305e-03 + + -2.4214799702167511e-01 3.5577800869941711e-01 + <_> + + 0 -1 668 -1.8040999770164490e-02 + + 1.1779999732971191e+00 -1.7676700651645660e-01 + <_> + + 0 -1 669 9.4503000378608704e-02 + + 1.3936099410057068e-01 -1.2993700504302979e+00 + <_> + + 0 -1 670 5.4210000671446323e-03 + + -5.4608601331710815e-01 1.3916400074958801e-01 + <_> + + 0 -1 671 7.0290002040565014e-03 + + -2.1597200632095337e-01 3.9258098602294922e-01 + <_> + + 0 -1 672 3.4515999257564545e-02 + + 6.3188999891281128e-02 -7.2108101844787598e-01 + <_> + + 0 -1 673 -5.1924999803304672e-02 + + 6.8667602539062500e-01 6.3272997736930847e-02 + <_> + + 0 -1 674 -6.9162003695964813e-02 + + 1.7411810159683228e+00 -1.6619299352169037e-01 + <_> + + 0 -1 675 -5.5229999125003815e-03 + + 3.0694699287414551e-01 -1.6662900149822235e-01 + <_> + + 0 -1 676 6.8599998950958252e-02 + + -2.1405400335788727e-01 7.3185002803802490e-01 + <_> + + 0 -1 677 -6.7038998007774353e-02 + + -7.9360598325729370e-01 2.0525799691677094e-01 + <_> + + 0 -1 678 -2.1005000919103622e-02 + + 3.7344399094581604e-01 -2.9618600010871887e-01 + <_> + + 0 -1 679 2.0278999581933022e-02 + + -1.5200000256299973e-02 4.0555301308631897e-01 + <_> + + 0 -1 680 -4.7107998281717300e-02 + + 1.2116849422454834e+00 -1.7464299499988556e-01 + <_> + + 0 -1 681 1.8768499791622162e-01 + + -2.2909000515937805e-02 6.9645798206329346e-01 + <_> + + 0 -1 682 -4.3228998780250549e-02 + + -1.0602480173110962e+00 -5.5599998449906707e-04 + <_> + + 0 -1 683 2.0004000514745712e-02 + + -3.2751001417636871e-02 5.3805100917816162e-01 + <_> + + 0 -1 684 8.0880001187324524e-03 + + 3.7548001855611801e-02 -7.4768900871276855e-01 + <_> + + 0 -1 685 2.7101000770926476e-02 + + -8.1790000200271606e-02 3.3387100696563721e-01 + <_> + + 0 -1 686 -9.1746002435684204e-02 + + -1.9213509559631348e+00 -3.8952998816967010e-02 + <_> + + 0 -1 687 -1.2454999610781670e-02 + + 4.8360601067543030e-01 1.8168000504374504e-02 + <_> + + 0 -1 688 1.4649000018835068e-02 + + -1.9906699657440186e-01 7.2815400362014771e-01 + <_> + + 0 -1 689 2.9101999476552010e-02 + + 1.9871099293231964e-01 -4.9216800928115845e-01 + <_> + + 0 -1 690 8.7799998000264168e-03 + + -1.9499599933624268e-01 7.7317398786544800e-01 + <_> + + 0 -1 691 -5.4740000516176224e-02 + + 1.8087190389633179e+00 6.8323001265525818e-02 + <_> + + 0 -1 692 -1.4798000454902649e-02 + + 7.8064900636672974e-01 -1.8709599971771240e-01 + <_> + + 0 -1 693 2.5012999773025513e-02 + + 1.5285299718379974e-01 -1.6021020412445068e+00 + <_> + + 0 -1 694 4.6548001468181610e-02 + + -1.6738200187683105e-01 1.1902060508728027e+00 + <_> + + 0 -1 695 1.7624000087380409e-02 + + -1.0285499691963196e-01 3.9175900816917419e-01 + <_> + + 0 -1 696 1.6319599747657776e-01 + + -3.5624001175165176e-02 -1.6098170280456543e+00 + <_> + + 0 -1 697 1.3137999922037125e-02 + + -5.6359000504016876e-02 5.4158902168273926e-01 + <_> + + 0 -1 698 -1.5665000304579735e-02 + + 2.8063100576400757e-01 -3.1708601117134094e-01 + <_> + + 0 -1 699 8.0554001033306122e-02 + + 1.2640400230884552e-01 -1.0297529697418213e+00 + <_> + + 0 -1 700 3.5363998264074326e-02 + + 2.0752999931573868e-02 -7.9105597734451294e-01 + <_> + + 0 -1 701 3.2986998558044434e-02 + + 1.9057099521160126e-01 -8.3839899301528931e-01 + <_> + + 0 -1 702 1.2195000424981117e-02 + + 7.3729000985622406e-02 -6.2780702114105225e-01 + <_> + + 0 -1 703 4.3065998703241348e-02 + + 4.7384999692440033e-02 1.5712939500808716e+00 + <_> + + 0 -1 704 3.0326999723911285e-02 + + -2.7314600348472595e-01 3.8572001457214355e-01 + <_> + + 0 -1 705 3.5493001341819763e-02 + + 5.4593998938798904e-02 5.2583402395248413e-01 + <_> + + 0 -1 706 -1.4596999622881413e-02 + + 3.8152599334716797e-01 -2.8332400321960449e-01 + <_> + + 0 -1 707 1.2606999836862087e-02 + + 1.5455099940299988e-01 -3.0501499772071838e-01 + <_> + + 0 -1 708 1.0172000154852867e-02 + + 2.3637000471353531e-02 -8.7217897176742554e-01 + <_> + + 0 -1 709 2.8843000531196594e-02 + + 1.6090999543666840e-01 -2.0277599990367889e-01 + <_> + + 0 -1 710 5.5100000463426113e-04 + + -6.1545401811599731e-01 8.0935999751091003e-02 + <_> + 127 + -3.5645289421081543e+00 + + <_> + + 0 -1 711 4.8344001173973083e-02 + + -8.4904599189758301e-01 5.6974399089813232e-01 + <_> + + 0 -1 712 3.2460000365972519e-02 + + -8.1417298316955566e-01 4.4781699776649475e-01 + <_> + + 0 -1 713 3.3339999616146088e-02 + + -3.6423799395561218e-01 6.7937397956848145e-01 + <_> + + 0 -1 714 6.4019998535513878e-03 + + -1.1885459423065186e+00 1.9238699972629547e-01 + <_> + + 0 -1 715 -5.6889997795224190e-03 + + 3.3085298538208008e-01 -7.1334099769592285e-01 + <_> + + 0 -1 716 1.2698000296950340e-02 + + -5.0990802049636841e-01 1.1376299709081650e-01 + <_> + + 0 -1 717 6.0549997724592686e-03 + + -1.0470550060272217e+00 2.0222599804401398e-01 + <_> + + 0 -1 718 2.6420000940561295e-03 + + -5.0559401512145996e-01 3.6441200971603394e-01 + <_> + + 0 -1 719 -1.6925999894738197e-02 + + -9.9541902542114258e-01 1.2602199614048004e-01 + <_> + + 0 -1 720 2.8235999867320061e-02 + + -9.4137996435165405e-02 5.7780402898788452e-01 + <_> + + 0 -1 721 1.0428999550640583e-02 + + 2.3272900283336639e-01 -5.2569699287414551e-01 + <_> + + 0 -1 722 9.8860003054141998e-03 + + -1.0316299647092819e-01 4.7657600045204163e-01 + <_> + + 0 -1 723 2.6015000417828560e-02 + + -1.0920000495389104e-03 -1.5581729412078857e+00 + <_> + + 0 -1 724 -2.5537999346852303e-02 + + -6.5451401472091675e-01 1.8843199312686920e-01 + <_> + + 0 -1 725 -3.5310001112520695e-03 + + 2.8140598535537720e-01 -4.4575300812721252e-01 + <_> + + 0 -1 726 9.2449998483061790e-03 + + 1.5612000226974487e-01 -2.1370999515056610e-01 + <_> + + 0 -1 727 2.1030999720096588e-02 + + -2.9170298576354980e-01 5.2234101295471191e-01 + <_> + + 0 -1 728 -5.1063001155853271e-02 + + 1.3661290407180786e+00 3.0465999618172646e-02 + <_> + + 0 -1 729 -6.2330000102519989e-02 + + 1.2207020521163940e+00 -2.2434400022029877e-01 + <_> + + 0 -1 730 -3.2963000237941742e-02 + + -8.2016801834106445e-01 1.4531899988651276e-01 + <_> + + 0 -1 731 -3.7418000400066376e-02 + + -1.2218099832534790e+00 1.9448999315500259e-02 + <_> + + 0 -1 732 1.2402799725532532e-01 + + 1.2082300335168839e-01 -9.8729300498962402e-01 + <_> + + 0 -1 733 -8.9229997247457504e-03 + + -1.1688489913940430e+00 2.1105000749230385e-02 + <_> + + 0 -1 734 -5.9879999607801437e-02 + + -1.0689330101013184e+00 1.9860200583934784e-01 + <_> + + 0 -1 735 6.2620001845061779e-03 + + -3.6229598522186279e-01 3.8000801205635071e-01 + <_> + + 0 -1 736 -1.7673000693321228e-02 + + 4.9094098806381226e-01 -1.4606699347496033e-01 + <_> + + 0 -1 737 1.7579000443220139e-02 + + 5.8728098869323730e-01 -2.7774399518966675e-01 + <_> + + 0 -1 738 5.1560001447796822e-03 + + -7.5194999575614929e-02 6.0193097591400146e-01 + <_> + + 0 -1 739 -1.0599999688565731e-02 + + 2.7637401223182678e-01 -3.7794300913810730e-01 + <_> + + 0 -1 740 2.0884099602699280e-01 + + -5.3599998354911804e-03 1.0317809581756592e+00 + <_> + + 0 -1 741 -2.6412999257445335e-02 + + 8.2336401939392090e-01 -2.2480599582195282e-01 + <_> + + 0 -1 742 5.8892000466585159e-02 + + 1.3098299503326416e-01 -1.1853699684143066e+00 + <_> + + 0 -1 743 -1.1579000391066074e-02 + + -9.0667802095413208e-01 4.4126998633146286e-02 + <_> + + 0 -1 744 4.5988000929355621e-02 + + 1.0143999941647053e-02 1.0740900039672852e+00 + <_> + + 0 -1 745 -2.2838000208139420e-02 + + 1.7791990041732788e+00 -1.7315499484539032e-01 + <_> + + 0 -1 746 -8.1709995865821838e-03 + + 5.7386302947998047e-01 -7.4106000363826752e-02 + <_> + + 0 -1 747 3.5359999164938927e-03 + + -3.2072898745536804e-01 4.0182501077651978e-01 + <_> + + 0 -1 748 4.9444999545812607e-02 + + 1.9288000464439392e-01 -1.2166700363159180e+00 + <_> + + 0 -1 749 3.5139999818056822e-03 + + 6.9568000733852386e-02 -7.1323698759078979e-01 + <_> + + 0 -1 750 -3.0996000394225121e-02 + + -3.8862198591232300e-01 1.8098799884319305e-01 + <_> + + 0 -1 751 8.6452998220920563e-02 + + -2.5792999193072319e-02 -1.5453219413757324e+00 + <_> + + 0 -1 752 -1.3652600347995758e-01 + + -1.9199420213699341e+00 1.6613300144672394e-01 + <_> + + 0 -1 753 -5.7689999230206013e-03 + + -1.2822589874267578e+00 -1.5907999128103256e-02 + <_> + + 0 -1 754 -1.7899999395012856e-02 + + -4.0409898757934570e-01 2.3591600358486176e-01 + <_> + + 0 -1 755 -1.9969999790191650e-02 + + -7.2891902923583984e-01 5.6235000491142273e-02 + <_> + + 0 -1 756 -5.7493001222610474e-02 + + 5.7830798625946045e-01 -1.5796000137925148e-02 + <_> + + 0 -1 757 -8.3056002855300903e-02 + + 9.1511601209640503e-01 -2.1121400594711304e-01 + <_> + + 0 -1 758 -5.3771000355482101e-02 + + -5.1931297779083252e-01 1.8576000630855560e-01 + <_> + + 0 -1 759 -8.3670001477003098e-03 + + 2.4109700322151184e-01 -3.9648601412773132e-01 + <_> + + 0 -1 760 5.5406998842954636e-02 + + 1.6771200299263000e-01 -2.5664970874786377e+00 + <_> + + 0 -1 761 -6.7180998623371124e-02 + + -1.3658570051193237e+00 -1.4232000336050987e-02 + <_> + + 0 -1 762 -2.3900000378489494e-02 + + -1.7084569931030273e+00 1.6507799923419952e-01 + <_> + + 0 -1 763 5.5949999950826168e-03 + + -3.1373998522758484e-01 3.2837900519371033e-01 + <_> + + 0 -1 764 2.1294999867677689e-02 + + 1.4953400194644928e-01 -4.8579800128936768e-01 + <_> + + 0 -1 765 -2.4613000452518463e-02 + + 7.4346399307250977e-01 -2.2305199503898621e-01 + <_> + + 0 -1 766 -1.9626000896096230e-02 + + -4.0918299555778503e-01 1.8893200159072876e-01 + <_> + + 0 -1 767 -5.3266000002622604e-02 + + 8.1381601095199585e-01 -2.0853699743747711e-01 + <_> + + 0 -1 768 7.1290000341832638e-03 + + 3.2996100187301636e-01 -5.9937399625778198e-01 + <_> + + 0 -1 769 -2.2486999630928040e-02 + + -1.2551610469818115e+00 -2.0413000136613846e-02 + <_> + + 0 -1 770 -8.2310996949672699e-02 + + 1.3821430206298828e+00 5.9308998286724091e-02 + <_> + + 0 -1 771 1.3097000122070312e-01 + + -3.5843998193740845e-02 -1.5396369695663452e+00 + <_> + + 0 -1 772 1.4293000102043152e-02 + + -1.8475200235843658e-01 3.7455001473426819e-01 + <_> + + 0 -1 773 6.3479999080300331e-03 + + -4.4901099801063538e-01 1.3876999914646149e-01 + <_> + + 0 -1 774 -4.6055000275373459e-02 + + 6.7832601070404053e-01 -1.7071999609470367e-02 + <_> + + 0 -1 775 5.7693999260663986e-02 + + -1.1955999769270420e-02 -1.2261159420013428e+00 + <_> + + 0 -1 776 -6.0609998181462288e-03 + + 3.3958598971366882e-01 6.2800000887364149e-04 + <_> + + 0 -1 777 -5.2163001149892807e-02 + + -1.0621069669723511e+00 -1.3779999688267708e-02 + <_> + + 0 -1 778 4.6572998166084290e-02 + + 1.4538800716400146e-01 -1.2384550571441650e+00 + <_> + + 0 -1 779 7.5309998355805874e-03 + + -2.4467700719833374e-01 5.1377099752426147e-01 + <_> + + 0 -1 780 2.1615000441670418e-02 + + 1.3072599470615387e-01 -7.0996797084808350e-01 + <_> + + 0 -1 781 -1.7864000052213669e-02 + + -1.0474660396575928e+00 4.9599999329075217e-04 + <_> + + 0 -1 782 -3.7195000797510147e-02 + + -1.5126730203628540e+00 1.4801399409770966e-01 + <_> + + 0 -1 783 -3.1100001069717109e-04 + + 1.3971500098705292e-01 -4.6867498755455017e-01 + <_> + + 0 -1 784 2.5042999535799026e-02 + + 2.8632000088691711e-01 -4.1794699430465698e-01 + <_> + + 0 -1 785 9.3449996784329414e-03 + + -2.7336201071739197e-01 4.3444699048995972e-01 + <_> + + 0 -1 786 3.2363999634981155e-02 + + 1.8438899517059326e-01 -9.5019298791885376e-01 + <_> + + 0 -1 787 -6.2299999408423901e-03 + + 3.2581999897956848e-01 -3.0815601348876953e-01 + <_> + + 0 -1 788 5.1488999277353287e-02 + + 1.1416000127792358e-01 -1.9795479774475098e+00 + <_> + + 0 -1 789 -2.6449000462889671e-02 + + -1.1067299842834473e+00 -8.5519999265670776e-03 + <_> + + 0 -1 790 -1.5420000068843365e-02 + + 8.0138701200485229e-01 -3.2035000622272491e-02 + <_> + + 0 -1 791 1.9456999376416206e-02 + + -2.6449498534202576e-01 3.8753899931907654e-01 + <_> + + 0 -1 792 3.3620998263359070e-02 + + 1.6052000224590302e-02 5.8840900659561157e-01 + <_> + + 0 -1 793 2.8906000778079033e-02 + + 1.5216000378131866e-02 -9.4723600149154663e-01 + <_> + + 0 -1 794 2.0300000323913991e-04 + + -3.0766001343727112e-01 2.1235899627208710e-01 + <_> + + 0 -1 795 -4.9141999334096909e-02 + + -1.6058609485626221e+00 -3.1094999983906746e-02 + <_> + + 0 -1 796 7.6425999402999878e-02 + + 7.4758999049663544e-02 1.1639410257339478e+00 + <_> + + 0 -1 797 2.3897999897599220e-02 + + -6.4320000819861889e-03 -1.1150749921798706e+00 + <_> + + 0 -1 798 3.8970001041889191e-03 + + -2.4105699360370636e-01 2.0858900249004364e-01 + <_> + + 0 -1 799 -8.9445002377033234e-02 + + 1.9157789945602417e+00 -1.5721100568771362e-01 + <_> + + 0 -1 800 -1.5008999966084957e-02 + + -2.5174099206924438e-01 1.8179899454116821e-01 + <_> + + 0 -1 801 -1.1145999655127525e-02 + + -6.9349497556686401e-01 4.4927999377250671e-02 + <_> + + 0 -1 802 9.4578996300697327e-02 + + 1.8102100491523743e-01 -7.4978601932525635e-01 + <_> + + 0 -1 803 5.5038899183273315e-01 + + -3.0974000692367554e-02 -1.6746139526367188e+00 + <_> + + 0 -1 804 4.1381001472473145e-02 + + 6.3910000026226044e-02 7.6561200618743896e-01 + <_> + + 0 -1 805 2.4771999567747116e-02 + + 1.1380000039935112e-02 -8.8559401035308838e-01 + <_> + + 0 -1 806 5.0999000668525696e-02 + + 1.4890299737453461e-01 -2.4634211063385010e+00 + <_> + + 0 -1 807 -1.6893999651074409e-02 + + 3.8870999217033386e-01 -2.9880300164222717e-01 + <_> + + 0 -1 808 -1.2162300199270248e-01 + + -1.5542800426483154e+00 1.6300800442695618e-01 + <_> + + 0 -1 809 -3.6049999762326479e-03 + + 2.1842800080776215e-01 -3.7312099337577820e-01 + <_> + + 0 -1 810 1.1575400084257126e-01 + + -4.7061000019311905e-02 5.9403699636459351e-01 + <_> + + 0 -1 811 3.6903999745845795e-02 + + -2.5508600473403931e-01 5.5397301912307739e-01 + <_> + + 0 -1 812 1.1483999900519848e-02 + + -1.8129499256610870e-01 4.0682798624038696e-01 + <_> + + 0 -1 813 -2.0233999937772751e-02 + + 5.4311197996139526e-01 -2.3822399973869324e-01 + <_> + + 0 -1 814 -2.8765000402927399e-02 + + -6.9172298908233643e-01 1.5943300724029541e-01 + <_> + + 0 -1 815 -5.8320001699030399e-03 + + 2.9447799921035767e-01 -3.4005999565124512e-01 + <_> + + 0 -1 816 -5.5468998849391937e-02 + + 9.2200797796249390e-01 9.4093002378940582e-02 + <_> + + 0 -1 817 -1.4801000244915485e-02 + + -7.9539698362350464e-01 3.1521998345851898e-02 + <_> + + 0 -1 818 -7.0940000005066395e-03 + + 3.3096000552177429e-01 -5.0886999815702438e-02 + <_> + + 0 -1 819 -4.5124001801013947e-02 + + -1.3719749450683594e+00 -2.1408999338746071e-02 + <_> + + 0 -1 820 6.4377002418041229e-02 + + 6.3901998102664948e-02 9.1478300094604492e-01 + <_> + + 0 -1 821 -1.4727000147104263e-02 + + 3.6050599813461304e-01 -2.8614500164985657e-01 + <_> + + 0 -1 822 4.5007001608610153e-02 + + -1.5619699656963348e-01 5.3160297870635986e-01 + <_> + + 0 -1 823 -1.1330000124871731e-03 + + 1.3422900438308716e-01 -4.4358900189399719e-01 + <_> + + 0 -1 824 4.9451000988483429e-02 + + 1.0571800172328949e-01 -2.5589139461517334e+00 + <_> + + 0 -1 825 2.9102999716997147e-02 + + -1.0088000446557999e-02 -1.1073939800262451e+00 + <_> + + 0 -1 826 3.4786000847816467e-02 + + -2.7719999197870493e-03 5.6700998544692993e-01 + <_> + + 0 -1 827 -6.1309998854994774e-03 + + -4.6889400482177734e-01 1.2636399269104004e-01 + <_> + + 0 -1 828 1.5525000169873238e-02 + + -8.4279999136924744e-03 8.7469202280044556e-01 + <_> + + 0 -1 829 2.9249999206513166e-03 + + -3.4434300661087036e-01 2.0851600170135498e-01 + <_> + + 0 -1 830 -5.3571000695228577e-02 + + 1.4982949495315552e+00 5.7328000664710999e-02 + <_> + + 0 -1 831 -1.9217999652028084e-02 + + -9.9234098196029663e-01 -9.3919998034834862e-03 + <_> + + 0 -1 832 -5.5282998830080032e-02 + + -5.7682299613952637e-01 1.6860599815845490e-01 + <_> + + 0 -1 833 5.6336000561714172e-02 + + -3.3775001764297485e-02 -1.3889650106430054e+00 + <_> + + 0 -1 834 -2.3824000731110573e-02 + + 4.0182098746299744e-01 1.8360000103712082e-03 + <_> + + 0 -1 835 1.7810000572353601e-03 + + 1.8145999312400818e-01 -4.1743400692939758e-01 + <_> + + 0 -1 836 -3.7689000368118286e-02 + + 5.4683101177215576e-01 1.8219999969005585e-02 + <_> + + 0 -1 837 -2.4144999682903290e-02 + + 6.8352097272872925e-01 -1.9650200009346008e-01 + <_> + 135 + -3.7025990486145020e+00 + + <_> + + 0 -1 838 2.7444999665021896e-02 + + -8.9984202384948730e-01 5.1876497268676758e-01 + <_> + + 0 -1 839 1.1554100364446640e-01 + + -5.6524401903152466e-01 7.0551300048828125e-01 + <_> + + 0 -1 840 -2.2297000512480736e-02 + + 3.6079999804496765e-01 -6.6864597797393799e-01 + <_> + + 0 -1 841 1.3325000181794167e-02 + + -5.5573397874832153e-01 3.5789999365806580e-01 + <_> + + 0 -1 842 -3.8060001097619534e-03 + + -1.0713000297546387e+00 1.8850000202655792e-01 + <_> + + 0 -1 843 -2.6819999329745770e-03 + + -7.1584302186965942e-01 2.6344498991966248e-01 + <_> + + 0 -1 844 3.3819999080151320e-03 + + -4.6930798888206482e-01 2.6658400893211365e-01 + <_> + + 0 -1 845 3.7643000483512878e-02 + + 2.1098700165748596e-01 -1.0804339647293091e+00 + <_> + + 0 -1 846 -1.3861999846994877e-02 + + 6.6912001371383667e-01 -2.7942800521850586e-01 + <_> + + 0 -1 847 -2.7350001037120819e-03 + + -9.5332300662994385e-01 2.4051299691200256e-01 + <_> + + 0 -1 848 -3.8336999714374542e-02 + + 8.1432801485061646e-01 -2.4919399619102478e-01 + <_> + + 0 -1 849 -3.4697998315095901e-02 + + 1.2330100536346436e+00 6.8600000813603401e-03 + <_> + + 0 -1 850 2.3360999301075935e-02 + + -3.0794700980186462e-01 7.0714497566223145e-01 + <_> + + 0 -1 851 3.5057999193668365e-02 + + 2.1205900609493256e-01 -1.4399830102920532e+00 + <_> + + 0 -1 852 -1.3256999664008617e-02 + + -9.0260702371597290e-01 4.8610001802444458e-02 + <_> + + 0 -1 853 1.2740000151097775e-02 + + 2.2655199468135834e-01 -4.4643801450729370e-01 + <_> + + 0 -1 854 3.6400000099092722e-03 + + -3.9817899465560913e-01 3.4665399789810181e-01 + <_> + + 0 -1 855 1.0064700245857239e-01 + + 1.8383599817752838e-01 -1.3410769701004028e+00 + <_> + + 0 -1 856 0. + + 1.5536400675773621e-01 -5.1582497358322144e-01 + <_> + + 0 -1 857 1.1708999983966351e-02 + + 2.1651400625705719e-01 -7.2705197334289551e-01 + <_> + + 0 -1 858 -3.5964999347925186e-02 + + -1.4789500236511230e+00 -2.4317000061273575e-02 + <_> + + 0 -1 859 -2.1236000582575798e-02 + + -1.6844099760055542e-01 1.9526599347591400e-01 + <_> + + 0 -1 860 1.4874000102281570e-02 + + 3.7335999310016632e-02 -8.7557297945022583e-01 + <_> + + 0 -1 861 -5.1409997977316380e-03 + + 3.3466500043869019e-01 -2.4109700322151184e-01 + <_> + + 0 -1 862 2.3450000211596489e-02 + + 5.5320002138614655e-03 -1.2509720325469971e+00 + <_> + + 0 -1 863 -2.5062000378966331e-02 + + 4.5212399959564209e-01 -8.4469996392726898e-02 + <_> + + 0 -1 864 -7.7400001464411616e-04 + + 1.5249900519847870e-01 -4.8486500978469849e-01 + <_> + + 0 -1 865 -4.0483999997377396e-02 + + -1.3024920225143433e+00 1.7983500659465790e-01 + <_> + + 0 -1 866 2.8170999139547348e-02 + + -2.4410900473594666e-01 6.2271100282669067e-01 + <_> + + 0 -1 867 4.5692998915910721e-02 + + 2.8122000396251678e-02 9.2394399642944336e-01 + <_> + + 0 -1 868 3.9707001298666000e-02 + + -2.2332799434661865e-01 7.7674001455307007e-01 + <_> + + 0 -1 869 5.0517000257968903e-02 + + 2.0319999754428864e-01 -1.0895930528640747e+00 + <_> + + 0 -1 870 -1.7266999930143356e-02 + + 6.8598401546478271e-01 -2.3304499685764313e-01 + <_> + + 0 -1 871 8.0186001956462860e-02 + + -1.0292000137269497e-02 6.1881101131439209e-01 + <_> + + 0 -1 872 9.7676001489162445e-02 + + -2.0070299506187439e-01 1.0088349580764771e+00 + <_> + + 0 -1 873 -1.5572000294923782e-02 + + 4.7615298628807068e-01 4.5623999089002609e-02 + <_> + + 0 -1 874 -1.5305000357329845e-02 + + -1.1077369451522827e+00 4.5239999890327454e-03 + <_> + + 0 -1 875 -1.6485000029206276e-02 + + 1.0152939558029175e+00 1.6327999532222748e-02 + <_> + + 0 -1 876 -2.6141999289393425e-02 + + 4.1723299026489258e-01 -2.8645500540733337e-01 + <_> + + 0 -1 877 8.8679995387792587e-03 + + 2.1404999494552612e-01 -1.6772800683975220e-01 + <_> + + 0 -1 878 -2.6886999607086182e-02 + + -1.1564220190048218e+00 -1.0324000380933285e-02 + <_> + + 0 -1 879 7.7789998613297939e-03 + + 3.5359498858451843e-01 -2.9611301422119141e-01 + <_> + + 0 -1 880 -1.5974000096321106e-02 + + -1.5374109745025635e+00 -2.9958000406622887e-02 + <_> + + 0 -1 881 2.0866999402642250e-02 + + 2.0244100689888000e-01 -7.1270197629928589e-01 + <_> + + 0 -1 882 8.5482001304626465e-02 + + -2.5932999327778816e-02 -1.5156569480895996e+00 + <_> + + 0 -1 883 2.3872999474406242e-02 + + 1.6803400218486786e-01 -3.8806200027465820e-01 + <_> + + 0 -1 884 -3.9105001837015152e-02 + + -1.1958349943161011e+00 -2.0361000671982765e-02 + <_> + + 0 -1 885 -7.7946998178958893e-02 + + -1.0898950099945068e+00 1.4530299603939056e-01 + <_> + + 0 -1 886 -1.6876000910997391e-02 + + 2.8049701452255249e-01 -4.1336300969123840e-01 + <_> + + 0 -1 887 1.1875600367784500e-01 + + -4.3490998446941376e-02 4.1263699531555176e-01 + <_> + + 0 -1 888 1.5624199807643890e-01 + + -2.6429599523544312e-01 5.5127799510955811e-01 + <_> + + 0 -1 889 -4.5908000320196152e-02 + + 6.0189199447631836e-01 1.8921000882983208e-02 + <_> + + 0 -1 890 -1.0309999808669090e-02 + + 3.8152998685836792e-01 -2.9507899284362793e-01 + <_> + + 0 -1 891 9.5769003033638000e-02 + + 1.3246500492095947e-01 -4.6266800165176392e-01 + <_> + + 0 -1 892 1.3686999678611755e-02 + + 1.1738699674606323e-01 -5.1664102077484131e-01 + <_> + + 0 -1 893 2.3990001063793898e-03 + + -3.4007599949836731e-01 2.0953500270843506e-01 + <_> + + 0 -1 894 3.3264998346567154e-02 + + -1.7052799463272095e-01 1.4366799592971802e+00 + <_> + + 0 -1 895 -3.3206000924110413e-02 + + 6.1295700073242188e-01 -4.1549999266862869e-02 + <_> + + 0 -1 896 2.7979998849332333e-03 + + -4.8554301261901855e-01 1.3372699916362762e-01 + <_> + + 0 -1 897 -6.5792001783847809e-02 + + -4.0257668495178223e+00 1.0876700282096863e-01 + <_> + + 0 -1 898 2.1430000197142363e-03 + + -3.9179998636245728e-01 2.2427099943161011e-01 + <_> + + 0 -1 899 2.2363999858498573e-02 + + -8.6429998278617859e-02 3.7785199284553528e-01 + <_> + + 0 -1 900 -5.7410001754760742e-02 + + 1.1454069614410400e+00 -1.9736599922180176e-01 + <_> + + 0 -1 901 6.6550001502037048e-03 + + -2.1105000749230385e-02 5.8453398942947388e-01 + <_> + + 0 -1 902 1.2326999567449093e-02 + + 3.7817001342773438e-02 -6.6987001895904541e-01 + <_> + + 0 -1 903 -8.1869997084140778e-03 + + 5.6366002559661865e-01 -7.6877996325492859e-02 + <_> + + 0 -1 904 3.6681000143289566e-02 + + -1.7343300580978394e-01 1.1670149564743042e+00 + <_> + + 0 -1 905 -4.0220400691032410e-01 + + 1.2640819549560547e+00 4.3398998677730560e-02 + <_> + + 0 -1 906 -2.2126000374555588e-02 + + 6.6978102922439575e-01 -2.1605299413204193e-01 + <_> + + 0 -1 907 -1.3156999833881855e-02 + + -4.1198599338531494e-01 2.0215000212192535e-01 + <_> + + 0 -1 908 -1.2860000133514404e-02 + + -9.1582697629928589e-01 3.9232999086380005e-02 + <_> + + 0 -1 909 2.1627999842166901e-02 + + 3.8719999138265848e-03 3.5668200254440308e-01 + <_> + + 0 -1 910 1.1896000243723392e-02 + + -3.7303900718688965e-01 1.9235099852085114e-01 + <_> + + 0 -1 911 -1.9548999145627022e-02 + + -4.2374899983406067e-01 2.4429599940776825e-01 + <_> + + 0 -1 912 6.4444996416568756e-02 + + -1.6558900475502014e-01 1.2697030305862427e+00 + <_> + + 0 -1 913 1.0898499935865402e-01 + + 1.4894300699234009e-01 -2.1534640789031982e+00 + <_> + + 0 -1 914 -3.4077998250722885e-02 + + 1.3779460191726685e+00 -1.6198499500751495e-01 + <_> + + 0 -1 915 -3.7489999085664749e-03 + + -3.3828601241111755e-01 2.1152900159358978e-01 + <_> + + 0 -1 916 -1.0971999727189541e-02 + + 7.6517897844314575e-01 -1.9692599773406982e-01 + <_> + + 0 -1 917 -1.1485000140964985e-02 + + -6.9271200895309448e-01 2.1657100319862366e-01 + <_> + + 0 -1 918 2.5984000414609909e-02 + + -1.1983999982476234e-02 -9.9697297811508179e-01 + <_> + + 0 -1 919 4.2159999720752239e-03 + + -1.0205700248479843e-01 4.8884400725364685e-01 + <_> + + 0 -1 920 -4.7697000205516815e-02 + + 1.0666010379791260e+00 -1.7576299607753754e-01 + <_> + + 0 -1 921 4.0300001273863018e-04 + + 1.8524800240993500e-01 -7.4790000915527344e-01 + <_> + + 0 -1 922 1.1539600044488907e-01 + + -2.2019700706005096e-01 5.4509997367858887e-01 + <_> + + 0 -1 923 1.6021000221371651e-02 + + 2.5487500429153442e-01 -5.0740098953247070e-01 + <_> + + 0 -1 924 5.6632000952959061e-02 + + -1.1256000027060509e-02 -9.5968097448348999e-01 + <_> + + 0 -1 925 -1.0726000182330608e-02 + + -2.8544700145721436e-01 1.6994799673557281e-01 + <_> + + 0 -1 926 1.2420000135898590e-01 + + -3.6139998584985733e-02 -1.3132710456848145e+00 + <_> + + 0 -1 927 -5.3799999877810478e-03 + + 3.3092701435089111e-01 1.3307999819517136e-02 + <_> + + 0 -1 928 1.1908000335097313e-02 + + -3.4830299019813538e-01 2.4041900038719177e-01 + <_> + + 0 -1 929 -4.3007999658584595e-02 + + -1.4390469789505005e+00 1.5599599480628967e-01 + <_> + + 0 -1 930 -3.3149998635053635e-02 + + -1.1805850267410278e+00 -1.2347999960184097e-02 + <_> + + 0 -1 931 -2.1341999992728233e-02 + + 2.2119441032409668e+00 6.2737002968788147e-02 + <_> + + 0 -1 932 -1.2218999676406384e-02 + + -1.8709750175476074e+00 -4.5499999076128006e-02 + <_> + + 0 -1 933 -1.6860999166965485e-02 + + -7.6912701129913330e-01 1.5330000221729279e-01 + <_> + + 0 -1 934 -2.4999999441206455e-03 + + -6.2987399101257324e-01 5.1600001752376556e-02 + <_> + + 0 -1 935 -4.5037999749183655e-02 + + 8.5428899526596069e-01 6.2600001692771912e-03 + <_> + + 0 -1 936 3.9057999849319458e-02 + + -3.2458998262882233e-02 -1.3325669765472412e+00 + <_> + + 0 -1 937 6.6720000468194485e-03 + + -1.9423599541187286e-01 3.7328699231147766e-01 + <_> + + 0 -1 938 -1.6361000016331673e-02 + + 2.0605869293212891e+00 -1.5042699873447418e-01 + <_> + + 0 -1 939 6.1719999648630619e-03 + + -1.1610999703407288e-01 2.5455400347709656e-01 + <_> + + 0 -1 940 4.5722000300884247e-02 + + -1.6340000554919243e-02 -1.0449140071868896e+00 + <_> + + 0 -1 941 4.1209999471902847e-03 + + -4.1997998952865601e-02 3.9680999517440796e-01 + <_> + + 0 -1 942 -1.7800000205170363e-04 + + -6.6422599554061890e-01 3.3443000167608261e-02 + <_> + + 0 -1 943 7.1109998971223831e-03 + + -5.8231998234987259e-02 3.7857300043106079e-01 + <_> + + 0 -1 944 -4.9864001572132111e-02 + + 6.1019402742385864e-01 -2.1005700528621674e-01 + <_> + + 0 -1 945 -2.5011999532580376e-02 + + -5.7100099325180054e-01 1.7848399281501770e-01 + <_> + + 0 -1 946 3.0939999967813492e-02 + + 5.6363001465797424e-02 -6.4731001853942871e-01 + <_> + + 0 -1 947 4.6271000057458878e-02 + + 1.7482399940490723e-01 -9.8909401893615723e-01 + <_> + + 0 -1 948 -3.1870000530034304e-03 + + -6.6804802417755127e-01 3.2267000526189804e-02 + <_> + + 0 -1 949 -2.4351999163627625e-02 + + 2.9444900155067444e-01 -1.3599999947473407e-03 + <_> + + 0 -1 950 1.1974000371992588e-02 + + -2.8345099091529846e-01 4.7171199321746826e-01 + <_> + + 0 -1 951 1.3070000335574150e-02 + + -1.0834600031375885e-01 5.7193297147750854e-01 + <_> + + 0 -1 952 5.9163000434637070e-02 + + -5.0939001142978668e-02 -1.9059720039367676e+00 + <_> + + 0 -1 953 -4.1094999760389328e-02 + + 4.5104598999023438e-01 -9.7599998116493225e-03 + <_> + + 0 -1 954 -8.3989001810550690e-02 + + -2.0349199771881104e+00 -5.1019001752138138e-02 + <_> + + 0 -1 955 4.4619001448154449e-02 + + 1.7041100561618805e-01 -1.2278720140457153e+00 + <_> + + 0 -1 956 2.4419000372290611e-02 + + -2.1796999499201775e-02 -1.0822949409484863e+00 + <_> + + 0 -1 957 -4.3870001100003719e-03 + + 3.0466699600219727e-01 -3.7066599726676941e-01 + <_> + + 0 -1 958 2.4607999250292778e-02 + + -3.1169500946998596e-01 2.3657299578189850e-01 + <_> + + 0 -1 959 -8.5182003676891327e-02 + + -1.7982350587844849e+00 1.5254299342632294e-01 + <_> + + 0 -1 960 2.1844999864697456e-02 + + -5.1888000220060349e-02 -1.9017189741134644e+00 + <_> + + 0 -1 961 -1.6829000785946846e-02 + + 2.1025900542736053e-01 2.1656999364495277e-02 + <_> + + 0 -1 962 3.2547999173402786e-02 + + -2.0292599499225616e-01 6.0944002866744995e-01 + <_> + + 0 -1 963 2.4709999561309814e-03 + + -9.5371198654174805e-01 1.8568399548530579e-01 + <_> + + 0 -1 964 5.5415999144315720e-02 + + -1.4405299723148346e-01 2.1506340503692627e+00 + <_> + + 0 -1 965 -1.0635499656200409e-01 + + -1.0911970138549805e+00 1.3228000700473785e-01 + <_> + + 0 -1 966 -7.9889995977282524e-03 + + 1.0253400355577469e-01 -5.1744902133941650e-01 + <_> + + 0 -1 967 7.5567997992038727e-02 + + 5.8965001255273819e-02 1.2354209423065186e+00 + <_> + + 0 -1 968 -9.2805996537208557e-02 + + -1.3431650400161743e+00 -3.4462999552488327e-02 + <_> + + 0 -1 969 4.9431998282670975e-02 + + 4.9601998180150986e-02 1.6054730415344238e+00 + <_> + + 0 -1 970 -1.1772999539971352e-02 + + -1.0261050462722778e+00 -4.1559999808669090e-03 + <_> + + 0 -1 971 8.5886001586914062e-02 + + 8.4642998874187469e-02 9.5220798254013062e-01 + <_> + + 0 -1 972 8.1031002104282379e-02 + + -1.4687100052833557e-01 1.9359990358352661e+00 + <_> + 136 + -3.4265899658203125e+00 + + <_> + + 0 -1 973 -3.3840999007225037e-02 + + 6.5889501571655273e-01 -6.9755297899246216e-01 + <_> + + 0 -1 974 1.5410000458359718e-02 + + -9.0728402137756348e-01 3.0478599667549133e-01 + <_> + + 0 -1 975 5.4905999451875687e-02 + + -4.9774798750877380e-01 5.7132601737976074e-01 + <_> + + 0 -1 976 2.1390000358223915e-02 + + -4.2565199732780457e-01 5.8096802234649658e-01 + <_> + + 0 -1 977 7.8849997371435165e-03 + + -4.7905999422073364e-01 4.3016499280929565e-01 + <_> + + 0 -1 978 -3.7544999271631241e-02 + + 5.0861597061157227e-01 -1.9985899329185486e-01 + <_> + + 0 -1 979 1.5925799310207367e-01 + + -2.3263600468635559e-01 1.0993319749832153e+00 + <_> + + 0 -1 980 -6.8939998745918274e-02 + + 4.0569001436233521e-01 5.6855000555515289e-02 + <_> + + 0 -1 981 -3.3695001155138016e-02 + + 4.5132800936698914e-01 -3.3332800865173340e-01 + <_> + + 0 -1 982 -6.3314996659755707e-02 + + -8.5015702247619629e-01 2.2341699898242950e-01 + <_> + + 0 -1 983 7.3699997738003731e-03 + + -9.3082201480865479e-01 5.9216998517513275e-02 + <_> + + 0 -1 984 -9.5969997346401215e-03 + + -1.2794899940490723e+00 1.8447299301624298e-01 + <_> + + 0 -1 985 -1.3067999482154846e-01 + + 5.8426898717880249e-01 -2.6007199287414551e-01 + <_> + + 0 -1 986 5.7402998208999634e-02 + + -5.3789000958204269e-02 7.1175599098205566e-01 + <_> + + 0 -1 987 -7.2340001352131367e-03 + + -8.6962199211120605e-01 7.5214996933937073e-02 + <_> + + 0 -1 988 3.1098999083042145e-02 + + -7.5006999075412750e-02 9.0781599283218384e-01 + <_> + + 0 -1 989 3.5854000598192215e-02 + + -2.4795499444007874e-01 7.2272098064422607e-01 + <_> + + 0 -1 990 -3.1534999608993530e-02 + + -1.1238329410552979e+00 2.0988300442695618e-01 + <_> + + 0 -1 991 -1.9437000155448914e-02 + + -1.4499390125274658e+00 -1.5100000426173210e-02 + <_> + + 0 -1 992 -7.2420001961290836e-03 + + 5.3864902257919312e-01 -1.1375399678945541e-01 + <_> + + 0 -1 993 8.1639997661113739e-03 + + 6.6889002919197083e-02 -7.6872897148132324e-01 + <_> + + 0 -1 994 -4.3653000146150589e-02 + + 1.1413530111312866e+00 4.0217000991106033e-02 + <_> + + 0 -1 995 2.6569999754428864e-02 + + -2.4719099700450897e-01 5.9295099973678589e-01 + <_> + + 0 -1 996 3.2216999679803848e-02 + + -4.0024999529123306e-02 3.2688000798225403e-01 + <_> + + 0 -1 997 -7.2236001491546631e-02 + + 5.8729398250579834e-01 -2.5396001338958740e-01 + <_> + + 0 -1 998 3.1424999237060547e-02 + + 1.5315100550651550e-01 -5.6042098999023438e-01 + <_> + + 0 -1 999 -4.7699999413453043e-04 + + 1.6958899796009064e-01 -5.2626699209213257e-01 + <_> + + 0 -1 1000 2.7189999818801880e-03 + + -1.4944599568843842e-01 2.9658699035644531e-01 + <_> + + 0 -1 1001 3.2875001430511475e-02 + + -3.9943501353263855e-01 2.5156599283218384e-01 + <_> + + 0 -1 1002 -1.4553000219166279e-02 + + 2.7972599864006042e-01 -4.7203800082206726e-01 + <_> + + 0 -1 1003 3.8017999380826950e-02 + + -2.9200001154094934e-03 -1.1300059556961060e+00 + <_> + + 0 -1 1004 2.8659999370574951e-03 + + 4.1111800074577332e-01 -2.6220801472663879e-01 + <_> + + 0 -1 1005 -4.1606999933719635e-02 + + -1.4293819665908813e+00 -1.9132999703288078e-02 + <_> + + 0 -1 1006 -2.4802999570965767e-02 + + -2.5013598799705505e-01 1.5978699922561646e-01 + <_> + + 0 -1 1007 1.0098000057041645e-02 + + 4.3738998472690582e-02 -6.9986099004745483e-01 + <_> + + 0 -1 1008 -2.0947000011801720e-02 + + -9.4137799739837646e-01 2.3204000294208527e-01 + <_> + + 0 -1 1009 2.2458000108599663e-02 + + -2.7185800671577454e-01 4.5319199562072754e-01 + <_> + + 0 -1 1010 -3.7110999226570129e-02 + + -1.0314660072326660e+00 1.4421799778938293e-01 + <_> + + 0 -1 1011 -1.0648000054061413e-02 + + 6.3107001781463623e-01 -2.5520798563957214e-01 + <_> + + 0 -1 1012 5.5422998964786530e-02 + + 1.6206599771976471e-01 -1.7722640037536621e+00 + <_> + + 0 -1 1013 2.1601999178528786e-02 + + -2.5016099214553833e-01 5.4119801521301270e-01 + <_> + + 0 -1 1014 8.7000000348780304e-05 + + -2.9008901119232178e-01 3.3507999777793884e-01 + <_> + + 0 -1 1015 1.4406000263988972e-02 + + -7.8840004280209541e-03 -1.1677219867706299e+00 + <_> + + 0 -1 1016 1.0777399688959122e-01 + + 1.1292000114917755e-01 -2.4940319061279297e+00 + <_> + + 0 -1 1017 3.5943999886512756e-02 + + -1.9480599462985992e-01 9.5757502317428589e-01 + <_> + + 0 -1 1018 -3.9510000497102737e-03 + + 3.0927801132202148e-01 -2.5530201196670532e-01 + <_> + + 0 -1 1019 2.0942000672221184e-02 + + -7.6319999061524868e-03 -1.0086350440979004e+00 + <_> + + 0 -1 1020 -2.9877999797463417e-02 + + -4.6027699112892151e-01 1.9507199525833130e-01 + <_> + + 0 -1 1021 2.5971999391913414e-02 + + -1.2187999673187733e-02 -1.0035500526428223e+00 + <_> + + 0 -1 1022 1.0603000409901142e-02 + + -7.5969003140926361e-02 4.1669899225234985e-01 + <_> + + 0 -1 1023 8.5819996893405914e-03 + + -2.6648598909378052e-01 3.9111500978469849e-01 + <_> + + 0 -1 1024 2.1270999684929848e-02 + + 1.8273900449275970e-01 -3.6052298545837402e-01 + <_> + + 0 -1 1025 7.4518002569675446e-02 + + -1.8938399851322174e-01 9.2658001184463501e-01 + <_> + + 0 -1 1026 4.6569998376071453e-03 + + -1.4506199955940247e-01 3.3294600248336792e-01 + <_> + + 0 -1 1027 1.7119999974966049e-03 + + -5.2464002370834351e-01 8.9879997074604034e-02 + <_> + + 0 -1 1028 9.8500004969537258e-04 + + -3.8381999731063843e-01 2.4392999708652496e-01 + <_> + + 0 -1 1029 2.8233999386429787e-02 + + -5.7879998348653316e-03 -1.2617139816284180e+00 + <_> + + 0 -1 1030 -3.2678000628948212e-02 + + -5.7953298091888428e-01 1.6955299675464630e-01 + <_> + + 0 -1 1031 2.2536000236868858e-02 + + 2.2281000390648842e-02 -8.7869602441787720e-01 + <_> + + 0 -1 1032 -2.1657999604940414e-02 + + -6.5108501911163330e-01 1.2966899573802948e-01 + <_> + + 0 -1 1033 7.6799998059868813e-03 + + -3.3965200185775757e-01 2.2013300657272339e-01 + <_> + + 0 -1 1034 1.4592000283300877e-02 + + 1.5077300369739532e-01 -5.0452399253845215e-01 + <_> + + 0 -1 1035 2.7868000790476799e-02 + + -2.5045299530029297e-01 4.5741999149322510e-01 + <_> + + 0 -1 1036 5.6940000504255295e-03 + + -1.0948500037193298e-01 5.5757802724838257e-01 + <_> + + 0 -1 1037 -1.0002999566495419e-02 + + -9.7366297245025635e-01 1.8467999994754791e-02 + <_> + + 0 -1 1038 -4.0719998069107533e-03 + + 3.8222199678421021e-01 -1.6921100020408630e-01 + <_> + + 0 -1 1039 -2.2593999281525612e-02 + + -1.0391089916229248e+00 5.1839998923242092e-03 + <_> + + 0 -1 1040 -3.9579998701810837e-02 + + -5.5109229087829590e+00 1.1163999885320663e-01 + <_> + + 0 -1 1041 -1.7537999898195267e-02 + + 9.5485800504684448e-01 -1.8584500253200531e-01 + <_> + + 0 -1 1042 9.0300003066658974e-03 + + 1.0436000302433968e-02 8.2114797830581665e-01 + <_> + + 0 -1 1043 -7.9539995640516281e-03 + + 2.2632899880409241e-01 -3.4568199515342712e-01 + <_> + + 0 -1 1044 2.7091000229120255e-02 + + 1.6430099308490753e-01 -1.3926379680633545e+00 + <_> + + 0 -1 1045 -2.0625999197363853e-02 + + -8.6366099119186401e-01 2.3880000226199627e-03 + <_> + + 0 -1 1046 -7.1989998221397400e-02 + + -2.8192629814147949e+00 1.1570499837398529e-01 + <_> + + 0 -1 1047 -2.6964999735355377e-02 + + -1.2946130037307739e+00 -2.4661000818014145e-02 + <_> + + 0 -1 1048 -4.7377999871969223e-02 + + -8.1306397914886475e-01 1.1831399798393250e-01 + <_> + + 0 -1 1049 -1.0895600169897079e-01 + + 6.5937900543212891e-01 -2.0843900740146637e-01 + <_> + + 0 -1 1050 1.3574000447988510e-02 + + 7.4240001849830151e-03 5.3152197599411011e-01 + <_> + + 0 -1 1051 -6.6920001991093159e-03 + + 3.0655801296234131e-01 -3.1084299087524414e-01 + <_> + + 0 -1 1052 -3.9070001803338528e-03 + + 2.5576499104499817e-01 -5.2932001650333405e-02 + <_> + + 0 -1 1053 -3.7613000720739365e-02 + + -1.4350049495697021e+00 -1.5448000282049179e-02 + <_> + + 0 -1 1054 8.6329998448491096e-03 + + -1.6884399950504303e-01 4.2124900221824646e-01 + <_> + + 0 -1 1055 -3.2097000628709793e-02 + + -6.4979398250579834e-01 4.1110001504421234e-02 + <_> + + 0 -1 1056 5.8495998382568359e-02 + + -5.2963998168706894e-02 6.3368302583694458e-01 + <_> + + 0 -1 1057 -4.0901999920606613e-02 + + -9.2101097106933594e-01 9.0640000998973846e-03 + <_> + + 0 -1 1058 -1.9925000146031380e-02 + + 5.3759998083114624e-01 -6.2996998429298401e-02 + <_> + + 0 -1 1059 -4.6020001173019409e-03 + + -5.4333502054214478e-01 8.4104999899864197e-02 + <_> + + 0 -1 1060 1.6824999824166298e-02 + + 1.5563699603080750e-01 -4.0171200037002563e-01 + <_> + + 0 -1 1061 9.4790002331137657e-03 + + -2.4245299398899078e-01 5.1509499549865723e-01 + <_> + + 0 -1 1062 -1.9534999504685402e-02 + + -5.1118397712707520e-01 1.3831999897956848e-01 + <_> + + 0 -1 1063 1.0746000334620476e-02 + + -2.1854999661445618e-01 6.2828701734542847e-01 + <_> + + 0 -1 1064 3.7927001714706421e-02 + + 1.1640299856662750e-01 -2.7301959991455078e+00 + <_> + + 0 -1 1065 1.6390999779105186e-02 + + -1.4635999687016010e-02 -1.0797250270843506e+00 + <_> + + 0 -1 1066 -1.9785000011324883e-02 + + 1.2166420221328735e+00 3.3275000751018524e-02 + <_> + + 0 -1 1067 1.1067000217735767e-02 + + -2.5388300418853760e-01 4.4038599729537964e-01 + <_> + + 0 -1 1068 5.2479999139904976e-03 + + 2.2496800124645233e-01 -2.4216499924659729e-01 + <_> + + 0 -1 1069 -1.1141999624669552e-02 + + 2.5018098950386047e-01 -3.0811500549316406e-01 + <_> + + 0 -1 1070 -1.0666999965906143e-02 + + -3.2729101181030273e-01 2.6168298721313477e-01 + <_> + + 0 -1 1071 1.0545299947261810e-01 + + -5.5750001221895218e-02 -1.9605729579925537e+00 + <_> + + 0 -1 1072 5.4827999323606491e-02 + + -1.9519999623298645e-03 7.3866099119186401e-01 + <_> + + 0 -1 1073 1.7760999500751495e-02 + + -3.0647200345993042e-01 2.6346999406814575e-01 + <_> + + 0 -1 1074 -3.1185999512672424e-02 + + -2.4600900709629059e-01 1.7082199454307556e-01 + <_> + + 0 -1 1075 -5.7296000421047211e-02 + + 4.7033500671386719e-01 -2.6048299670219421e-01 + <_> + + 0 -1 1076 -1.1312000453472137e-02 + + 3.8628900051116943e-01 -2.8817000985145569e-01 + <_> + + 0 -1 1077 3.0592000111937523e-02 + + -4.8826001584529877e-02 -1.7638969421386719e+00 + <_> + + 0 -1 1078 1.8489999929443002e-03 + + 2.1099899709224701e-01 -2.5940999388694763e-02 + <_> + + 0 -1 1079 1.1419000104069710e-02 + + -1.6829599440097809e-01 1.0278660058975220e+00 + <_> + + 0 -1 1080 8.1403002142906189e-02 + + 1.1531999707221985e-01 -1.2482399940490723e+00 + <_> + + 0 -1 1081 5.3495999425649643e-02 + + -4.6303998678922653e-02 -1.7165969610214233e+00 + <_> + + 0 -1 1082 -2.3948000743985176e-02 + + -4.0246599912643433e-01 2.0562100410461426e-01 + <_> + + 0 -1 1083 6.7690000869333744e-03 + + -3.3152300119400024e-01 2.0683400332927704e-01 + <_> + + 0 -1 1084 -3.2343998551368713e-02 + + -7.2632801532745361e-01 2.0073500275611877e-01 + <_> + + 0 -1 1085 3.7863001227378845e-02 + + -1.5631000697612762e-01 1.6697460412979126e+00 + <_> + + 0 -1 1086 1.5440000221133232e-02 + + 1.9487400352954865e-01 -3.5384199023246765e-01 + <_> + + 0 -1 1087 -4.4376000761985779e-02 + + 8.2093602418899536e-01 -1.8193599581718445e-01 + <_> + + 0 -1 1088 -2.3102000355720520e-02 + + -4.3044099211692810e-01 1.2375400215387344e-01 + <_> + + 0 -1 1089 1.9400000572204590e-02 + + -2.9726000502705574e-02 -1.1597590446472168e+00 + <_> + + 0 -1 1090 1.0385700315237045e-01 + + 1.1149899661540985e-01 -4.6835222244262695e+00 + <_> + + 0 -1 1091 -1.8964000046253204e-02 + + 2.1773819923400879e+00 -1.4544400572776794e-01 + <_> + + 0 -1 1092 3.8750998675823212e-02 + + -4.9446001648902893e-02 3.4018298983573914e-01 + <_> + + 0 -1 1093 2.2766999900341034e-02 + + -3.2802999019622803e-01 3.0531400442123413e-01 + <_> + + 0 -1 1094 -3.1357001513242722e-02 + + 1.1520819664001465e+00 2.7305999770760536e-02 + <_> + + 0 -1 1095 9.6909999847412109e-03 + + -3.8799500465393066e-01 2.1512599289417267e-01 + <_> + + 0 -1 1096 -4.9284998327493668e-02 + + -1.6774909496307373e+00 1.5774199366569519e-01 + <_> + + 0 -1 1097 -3.9510998874902725e-02 + + -9.7647899389266968e-01 -1.0552000254392624e-02 + <_> + + 0 -1 1098 4.7997999936342239e-02 + + 2.0843900740146637e-01 -6.8992799520492554e-01 + <_> + + 0 -1 1099 5.1422998309135437e-02 + + -1.6665300726890564e-01 1.2149239778518677e+00 + <_> + + 0 -1 1100 1.4279999770224094e-02 + + 2.3627699911594391e-01 -4.1396799683570862e-01 + <_> + + 0 -1 1101 -9.1611996293067932e-02 + + -9.2830902338027954e-01 -1.8345000222325325e-02 + <_> + + 0 -1 1102 6.5080001950263977e-03 + + -7.3647201061248779e-01 1.9497099518775940e-01 + <_> + + 0 -1 1103 3.5723000764846802e-02 + + 1.4197799563407898e-01 -4.2089301347732544e-01 + <_> + + 0 -1 1104 5.0638001412153244e-02 + + 1.1644000187516212e-02 7.8486597537994385e-01 + <_> + + 0 -1 1105 -1.4613999985158443e-02 + + -1.1909500360488892e+00 -3.5128001123666763e-02 + <_> + + 0 -1 1106 -3.8662999868392944e-02 + + 2.4314730167388916e+00 6.5647996962070465e-02 + <_> + + 0 -1 1107 -4.0346998721361160e-02 + + 7.1755301952362061e-01 -1.9108299911022186e-01 + <_> + + 0 -1 1108 2.3902000859379768e-02 + + 1.5646199882030487e-01 -7.9294800758361816e-01 + <_> + 137 + -3.5125269889831543e+00 + + <_> + + 0 -1 1109 8.5640000179409981e-03 + + -8.1450700759887695e-01 5.8875298500061035e-01 + <_> + + 0 -1 1110 -1.3292600214481354e-01 + + 9.3213397264480591e-01 -2.9367300868034363e-01 + <_> + + 0 -1 1111 9.8400004208087921e-03 + + -5.6462901830673218e-01 4.1647699475288391e-01 + <_> + + 0 -1 1112 5.0889998674392700e-03 + + -7.9232800006866455e-01 1.6975000500679016e-01 + <_> + + 0 -1 1113 -6.1039000749588013e-02 + + -1.4169000387191772e+00 2.5020999833941460e-02 + <_> + + 0 -1 1114 -4.6599999768659472e-04 + + 3.7982499599456787e-01 -4.1567099094390869e-01 + <_> + + 0 -1 1115 3.3889999613165855e-03 + + -4.0768599510192871e-01 3.5548499226570129e-01 + <_> + + 0 -1 1116 2.1006999537348747e-02 + + -2.4080100655555725e-01 8.6112701892852783e-01 + <_> + + 0 -1 1117 7.5559997931122780e-03 + + -8.7467199563980103e-01 9.8572000861167908e-02 + <_> + + 0 -1 1118 2.4779999628663063e-02 + + 1.5566200017929077e-01 -6.9229799509048462e-01 + <_> + + 0 -1 1119 -3.5620000213384628e-02 + + -1.1472270488739014e+00 3.6359999328851700e-02 + <_> + + 0 -1 1120 1.9810000434517860e-02 + + 1.5516200661659241e-01 -6.9520097970962524e-01 + <_> + + 0 -1 1121 1.5019999817013741e-02 + + 4.1990000754594803e-02 -9.6622800827026367e-01 + <_> + + 0 -1 1122 -2.3137999698519707e-02 + + 4.3396899104118347e-01 2.4160000029951334e-03 + <_> + + 0 -1 1123 -1.8743000924587250e-02 + + 4.3481099605560303e-01 -3.2522499561309814e-01 + <_> + + 0 -1 1124 4.5080000162124634e-01 + + -9.4573996961116791e-02 7.2421300411224365e-01 + <_> + + 0 -1 1125 1.1854999698698521e-02 + + -3.8133099675178528e-01 3.0098399519920349e-01 + <_> + + 0 -1 1126 -2.4830000475049019e-02 + + 8.9300602674484253e-01 -1.0295899957418442e-01 + <_> + + 0 -1 1127 -4.4743001461029053e-02 + + 8.6280298233032227e-01 -2.1716499328613281e-01 + <_> + + 0 -1 1128 -1.4600000344216824e-02 + + 6.0069400072097778e-01 -1.5906299650669098e-01 + <_> + + 0 -1 1129 -2.4527000263333321e-02 + + -1.5872869491577148e+00 -2.1817000582814217e-02 + <_> + + 0 -1 1130 2.3024000227451324e-02 + + 1.6853399574756622e-01 -3.8106900453567505e-01 + <_> + + 0 -1 1131 -2.4917000904679298e-02 + + 5.0810897350311279e-01 -2.7279898524284363e-01 + <_> + + 0 -1 1132 1.0130000300705433e-03 + + -4.3138799071311951e-01 2.6438099145889282e-01 + <_> + + 0 -1 1133 1.5603000298142433e-02 + + -3.1624200940132141e-01 5.5715900659561157e-01 + <_> + + 0 -1 1134 -2.6685999706387520e-02 + + 1.0553920269012451e+00 2.9074000194668770e-02 + <_> + + 0 -1 1135 1.3940000208094716e-03 + + -7.1873801946640015e-01 6.5390996634960175e-02 + <_> + + 0 -1 1136 -6.4799998654052615e-04 + + 2.4884399771690369e-01 -2.0978200435638428e-01 + <_> + + 0 -1 1137 -3.1888000667095184e-02 + + -6.8844497203826904e-01 6.3589997589588165e-02 + <_> + + 0 -1 1138 -4.9290000461041927e-03 + + -5.9152501821517944e-01 2.7943599224090576e-01 + <_> + + 0 -1 1139 3.1168000772595406e-02 + + 4.5223999768495560e-02 -8.8639199733734131e-01 + <_> + + 0 -1 1140 -3.3663000911474228e-02 + + -6.1590200662612915e-01 1.5749299526214600e-01 + <_> + + 0 -1 1141 1.1966999620199203e-02 + + -3.0606698989868164e-01 4.2293301224708557e-01 + <_> + + 0 -1 1142 -3.4680001437664032e-02 + + -1.3734940290451050e+00 1.5908700227737427e-01 + <_> + + 0 -1 1143 9.9290004000067711e-03 + + -5.5860197544097900e-01 1.2119200080633163e-01 + <_> + + 0 -1 1144 5.9574998915195465e-02 + + 4.9720001406967640e-03 8.2055401802062988e-01 + <_> + + 0 -1 1145 -6.5428003668785095e-02 + + 1.5651429891586304e+00 -1.6817499697208405e-01 + <_> + + 0 -1 1146 -9.2895999550819397e-02 + + -1.5794529914855957e+00 1.4661799371242523e-01 + <_> + + 0 -1 1147 -4.1184000670909882e-02 + + -1.5518720149993896e+00 -2.9969999566674232e-02 + <_> + + 0 -1 1148 2.1447999402880669e-02 + + 1.7196300625801086e-01 -6.9343197345733643e-01 + <_> + + 0 -1 1149 -2.5569999590516090e-02 + + -1.3061310052871704e+00 -2.4336999282240868e-02 + <_> + + 0 -1 1150 -4.1200999170541763e-02 + + -1.3821059465408325e+00 1.4801800251007080e-01 + <_> + + 0 -1 1151 -1.7668999731540680e-02 + + -7.0889997482299805e-01 3.6524001508951187e-02 + <_> + + 0 -1 1152 9.0060001239180565e-03 + + -4.0913999080657959e-02 8.0373102426528931e-01 + <_> + + 0 -1 1153 -1.1652999557554722e-02 + + 5.7546800374984741e-01 -2.4991700053215027e-01 + <_> + + 0 -1 1154 -7.4780001305043697e-03 + + -4.9280899763107300e-01 1.9810900092124939e-01 + <_> + + 0 -1 1155 8.5499999113380909e-04 + + -4.8858100175857544e-01 1.3563099503517151e-01 + <_> + + 0 -1 1156 -3.0538000166416168e-02 + + -6.0278397798538208e-01 1.8522000312805176e-01 + <_> + + 0 -1 1157 -1.8846999853849411e-02 + + 2.3565599322319031e-01 -3.5136300325393677e-01 + <_> + + 0 -1 1158 -8.1129996106028557e-03 + + -8.1304997205734253e-02 2.1069599688053131e-01 + <_> + + 0 -1 1159 -3.4830000251531601e-02 + + -1.2065670490264893e+00 -1.4251999557018280e-02 + <_> + + 0 -1 1160 1.9021000713109970e-02 + + 2.3349900543689728e-01 -4.5664900541305542e-01 + <_> + + 0 -1 1161 -1.9004000350832939e-02 + + -8.1075799465179443e-01 1.3140000402927399e-02 + <_> + + 0 -1 1162 -8.9057996869087219e-02 + + 6.1542397737503052e-01 3.2983001321554184e-02 + <_> + + 0 -1 1163 6.8620000965893269e-03 + + -2.9583099484443665e-01 2.7003699541091919e-01 + <_> + + 0 -1 1164 -2.8240999206900597e-02 + + -6.1102700233459473e-01 1.7357499897480011e-01 + <_> + + 0 -1 1165 -3.2099999953061342e-04 + + -5.3322899341583252e-01 6.8539001047611237e-02 + <_> + + 0 -1 1166 -1.0829100012779236e-01 + + -1.2879559993743896e+00 1.1801700294017792e-01 + <_> + + 0 -1 1167 1.5878999605774879e-02 + + -1.7072600126266479e-01 1.1103910207748413e+00 + <_> + + 0 -1 1168 8.6859995499253273e-03 + + -1.0995099693536758e-01 4.6010500192642212e-01 + <_> + + 0 -1 1169 -2.5234999135136604e-02 + + 1.0220669507980347e+00 -1.8694299459457397e-01 + <_> + + 0 -1 1170 -1.3508999720215797e-02 + + -7.8316599130630493e-01 1.4202600717544556e-01 + <_> + + 0 -1 1171 -7.7149998396635056e-03 + + -8.8060700893402100e-01 1.1060000397264957e-02 + <_> + + 0 -1 1172 7.1580000221729279e-02 + + 1.1369399726390839e-01 -1.1032789945602417e+00 + <_> + + 0 -1 1173 -1.3554000295698643e-02 + + -8.1096500158309937e-01 3.4080001059919596e-03 + <_> + + 0 -1 1174 2.9450000729411840e-03 + + -7.2879999876022339e-02 3.4998100996017456e-01 + <_> + + 0 -1 1175 -5.0833001732826233e-02 + + -1.2868590354919434e+00 -2.8842000290751457e-02 + <_> + + 0 -1 1176 -8.7989997118711472e-03 + + 4.7613599896430969e-01 -1.4690400660037994e-01 + <_> + + 0 -1 1177 2.1424399316310883e-01 + + -5.9702001512050629e-02 -2.4802260398864746e+00 + <_> + + 0 -1 1178 1.3962999917566776e-02 + + 1.7420299351215363e-01 -4.3911001086235046e-01 + <_> + + 0 -1 1179 4.2502000927925110e-02 + + -1.9965299963951111e-01 7.0654797554016113e-01 + <_> + + 0 -1 1180 1.9827999174594879e-02 + + -6.9136001169681549e-02 6.1643397808074951e-01 + <_> + + 0 -1 1181 -3.3560000360012054e-02 + + -1.2740780115127563e+00 -2.5673000141978264e-02 + <_> + + 0 -1 1182 6.3542999327182770e-02 + + 1.2403500080108643e-01 -1.0776289701461792e+00 + <_> + + 0 -1 1183 2.1933000534772873e-02 + + 1.4952000230550766e-02 -7.1023499965667725e-01 + <_> + + 0 -1 1184 -7.8424997627735138e-02 + + 6.2033998966217041e-01 3.3610999584197998e-02 + <_> + + 0 -1 1185 1.4390000142157078e-02 + + -3.6324599385261536e-01 1.7308300733566284e-01 + <_> + + 0 -1 1186 -6.7309997975826263e-02 + + 5.2374100685119629e-01 1.2799999676644802e-02 + <_> + + 0 -1 1187 1.3047499954700470e-01 + + -1.7122499644756317e-01 1.1235200166702271e+00 + <_> + + 0 -1 1188 -4.6245999634265900e-02 + + -1.1908329725265503e+00 1.7425599694252014e-01 + <_> + + 0 -1 1189 -2.9842000454664230e-02 + + 8.3930599689483643e-01 -1.8064199388027191e-01 + <_> + + 0 -1 1190 -3.8099999073892832e-04 + + 3.5532799363136292e-01 -2.3842300474643707e-01 + <_> + + 0 -1 1191 -2.2378999739885330e-02 + + -8.7943899631500244e-01 -7.8399997437372804e-04 + <_> + + 0 -1 1192 -1.5569999814033508e-03 + + -1.4253300428390503e-01 2.5876200199127197e-01 + <_> + + 0 -1 1193 1.2013000436127186e-02 + + -2.9015499353408813e-01 2.6051101088523865e-01 + <_> + + 0 -1 1194 2.4384999647736549e-02 + + -3.1438998878002167e-02 5.8695900440216064e-01 + <_> + + 0 -1 1195 -4.7180999070405960e-02 + + 6.9430100917816162e-01 -2.1816100180149078e-01 + <_> + + 0 -1 1196 -2.4893999099731445e-02 + + -6.4599299430847168e-01 1.5611599385738373e-01 + <_> + + 0 -1 1197 2.1944999694824219e-02 + + -2.7742000296711922e-02 -1.1346880197525024e+00 + <_> + + 0 -1 1198 1.8809899687767029e-01 + + -1.0076000355184078e-02 1.2429029941558838e+00 + <_> + + 0 -1 1199 -7.7872000634670258e-02 + + 8.5008001327514648e-01 -1.9015499949455261e-01 + <_> + + 0 -1 1200 -4.8769000917673111e-02 + + -2.0763080120086670e+00 1.2179400026798248e-01 + <_> + + 0 -1 1201 -1.7115000635385513e-02 + + -8.5687297582626343e-01 7.8760003671050072e-03 + <_> + + 0 -1 1202 -2.7499999850988388e-03 + + 3.8645499944686890e-01 -1.1391499638557434e-01 + <_> + + 0 -1 1203 -9.8793998360633850e-02 + + -1.7233899831771851e+00 -5.6063000112771988e-02 + <_> + + 0 -1 1204 -2.1936999633908272e-02 + + 5.4749399423599243e-01 -4.2481999844312668e-02 + <_> + + 0 -1 1205 6.1096999794244766e-02 + + -3.8945000618696213e-02 -1.0807880163192749e+00 + <_> + + 0 -1 1206 -2.4563999846577644e-02 + + 5.8311098814010620e-01 -9.7599998116493225e-04 + <_> + + 0 -1 1207 3.3752001821994781e-02 + + -1.3795999810099602e-02 -8.4730297327041626e-01 + <_> + + 0 -1 1208 3.8199000060558319e-02 + + 1.5114299952983856e-01 -7.9473400115966797e-01 + <_> + + 0 -1 1209 -2.0117999985814095e-02 + + 5.1579099893569946e-01 -2.1445399522781372e-01 + <_> + + 0 -1 1210 2.4734999984502792e-02 + + -2.2105000913143158e-02 4.2917698621749878e-01 + <_> + + 0 -1 1211 -2.4357000365853310e-02 + + -8.6201298236846924e-01 -3.6760000512003899e-03 + <_> + + 0 -1 1212 -2.6442000642418861e-02 + + -4.5397499203681946e-01 2.2462800145149231e-01 + <_> + + 0 -1 1213 -3.4429999068379402e-03 + + 1.3073000311851501e-01 -3.8622701168060303e-01 + <_> + + 0 -1 1214 1.0701700299978256e-01 + + 1.3158600032329559e-01 -7.9306900501251221e-01 + <_> + + 0 -1 1215 4.5152999460697174e-02 + + -2.5296801328659058e-01 4.0672400593757629e-01 + <_> + + 0 -1 1216 4.4349998235702515e-02 + + 2.2613000124692917e-02 7.9618102312088013e-01 + <_> + + 0 -1 1217 1.0839999886229634e-03 + + -3.9158400893211365e-01 1.1639100313186646e-01 + <_> + + 0 -1 1218 7.1433000266551971e-02 + + 8.2466997206211090e-02 1.2530590295791626e+00 + <_> + + 0 -1 1219 3.5838000476360321e-02 + + -1.8203300237655640e-01 7.7078700065612793e-01 + <_> + + 0 -1 1220 -2.0839000120759010e-02 + + -6.1744397878646851e-01 1.5891399979591370e-01 + <_> + + 0 -1 1221 4.2525801062583923e-01 + + -4.8978000879287720e-02 -1.8422030210494995e+00 + <_> + + 0 -1 1222 1.1408000253140926e-02 + + 1.7918199300765991e-01 -1.5383499860763550e-01 + <_> + + 0 -1 1223 -1.5364999882876873e-02 + + -8.4016501903533936e-01 -1.0280000278726220e-03 + <_> + + 0 -1 1224 -1.5212000347673893e-02 + + -1.8995699286460876e-01 1.7130999267101288e-01 + <_> + + 0 -1 1225 -1.8972000107169151e-02 + + -7.9541999101638794e-01 6.6800001077353954e-03 + <_> + + 0 -1 1226 -3.3330000005662441e-03 + + -2.3530800640583038e-01 2.4730099737644196e-01 + <_> + + 0 -1 1227 9.3248002231121063e-02 + + -5.4758001118898392e-02 -1.8324300050735474e+00 + <_> + + 0 -1 1228 -1.2555000372231007e-02 + + 2.6385200023651123e-01 -3.8526400923728943e-01 + <_> + + 0 -1 1229 -2.7070000767707825e-02 + + -6.6929799318313599e-01 2.0340999588370323e-02 + <_> + + 0 -1 1230 -2.3677000775933266e-02 + + 6.7265301942825317e-01 -1.4344000257551670e-02 + <_> + + 0 -1 1231 -1.4275000430643559e-02 + + 3.0186399817466736e-01 -2.8514400124549866e-01 + <_> + + 0 -1 1232 2.8096999973058701e-02 + + 1.4766000211238861e-01 -1.4078520536422729e+00 + <_> + + 0 -1 1233 5.0840001553297043e-02 + + -1.8613600730895996e-01 7.9953002929687500e-01 + <_> + + 0 -1 1234 1.1505999602377415e-02 + + 1.9118399918079376e-01 -8.5035003721714020e-02 + <_> + + 0 -1 1235 -1.4661000110208988e-02 + + 4.5239299535751343e-01 -2.2205199301242828e-01 + <_> + + 0 -1 1236 2.2842499613761902e-01 + + 1.3488399982452393e-01 -1.2894610166549683e+00 + <_> + + 0 -1 1237 1.1106900125741959e-01 + + -2.0753799378871918e-01 5.4561597108840942e-01 + <_> + + 0 -1 1238 3.2450000289827585e-03 + + 3.2053700089454651e-01 -1.6403500735759735e-01 + <_> + + 0 -1 1239 8.5309997200965881e-02 + + -2.0210500061511993e-01 5.3296798467636108e-01 + <_> + + 0 -1 1240 2.2048000246286392e-02 + + 1.5698599815368652e-01 -1.7014099657535553e-01 + <_> + + 0 -1 1241 -1.5676999464631081e-02 + + -6.2863498926162720e-01 4.0761999785900116e-02 + <_> + + 0 -1 1242 3.3112901449203491e-01 + + 1.6609300673007965e-01 -1.0326379537582397e+00 + <_> + + 0 -1 1243 8.8470000773668289e-03 + + -2.5076198577880859e-01 3.1660598516464233e-01 + <_> + + 0 -1 1244 4.6080000698566437e-02 + + 1.5352100133895874e-01 -1.6333500146865845e+00 + <_> + + 0 -1 1245 -3.7703000009059906e-02 + + 5.6873798370361328e-01 -2.0102599263191223e-01 + <_> + 159 + -3.5939640998840332e+00 + + <_> + + 0 -1 1246 -8.1808999180793762e-02 + + 5.7124799489974976e-01 -6.7438799142837524e-01 + <_> + + 0 -1 1247 2.1761199831962585e-01 + + -3.8610199093818665e-01 9.0343999862670898e-01 + <_> + + 0 -1 1248 1.4878000132739544e-02 + + 2.2241599857807159e-01 -1.2779350280761719e+00 + <_> + + 0 -1 1249 5.2434999495744705e-02 + + -2.8690400719642639e-01 7.5742298364639282e-01 + <_> + + 0 -1 1250 9.1429995372891426e-03 + + -6.4880400896072388e-01 2.2268800437450409e-01 + <_> + + 0 -1 1251 7.9169999808073044e-03 + + -2.9253599047660828e-01 3.1030198931694031e-01 + <_> + + 0 -1 1252 -2.6084000244736671e-02 + + 4.5532700419425964e-01 -3.8500601053237915e-01 + <_> + + 0 -1 1253 -2.9400000348687172e-03 + + -5.1264399290084839e-01 2.7432298660278320e-01 + <_> + + 0 -1 1254 5.7130001485347748e-02 + + 1.5788000077009201e-02 -1.2133100032806396e+00 + <_> + + 0 -1 1255 -6.1309998854994774e-03 + + 3.9174601435661316e-01 -3.0866798758506775e-01 + <_> + + 0 -1 1256 -4.0405001491308212e-02 + + 1.1901949644088745e+00 -2.0347100496292114e-01 + <_> + + 0 -1 1257 -2.0297000184655190e-02 + + -6.8239498138427734e-01 2.0458699762821198e-01 + <_> + + 0 -1 1258 -1.7188999801874161e-02 + + -8.4939897060394287e-01 3.8433000445365906e-02 + <_> + + 0 -1 1259 -2.4215999990701675e-02 + + -1.1039420366287231e+00 1.5975099802017212e-01 + <_> + + 0 -1 1260 5.6869000196456909e-02 + + -1.9595299661159515e-01 1.1806850433349609e+00 + <_> + + 0 -1 1261 3.6199999158270657e-04 + + -4.0847799181938171e-01 3.2938599586486816e-01 + <_> + + 0 -1 1262 9.9790003150701523e-03 + + -2.9673001170158386e-01 4.1547900438308716e-01 + <_> + + 0 -1 1263 -5.2625000476837158e-02 + + -1.3069299459457397e+00 1.7862600088119507e-01 + <_> + + 0 -1 1264 -1.3748999685049057e-02 + + 2.3665800690650940e-01 -4.4536599516868591e-01 + <_> + + 0 -1 1265 -3.0517000705003738e-02 + + 2.9018300771713257e-01 -1.1210100352764130e-01 + <_> + + 0 -1 1266 -3.0037501454353333e-01 + + -2.4237680435180664e+00 -4.2830999940633774e-02 + <_> + + 0 -1 1267 -3.5990998148918152e-02 + + 8.8206499814987183e-01 -4.7012999653816223e-02 + <_> + + 0 -1 1268 -5.5112000554800034e-02 + + 8.0119001865386963e-01 -2.0490999519824982e-01 + <_> + + 0 -1 1269 3.3762000501155853e-02 + + 1.4617599546909332e-01 -1.1349489688873291e+00 + <_> + + 0 -1 1270 -8.2710003480315208e-03 + + -8.1604897975921631e-01 1.8988000229001045e-02 + <_> + + 0 -1 1271 -5.4399999789893627e-03 + + -7.0980900526046753e-01 2.2343699634075165e-01 + <_> + + 0 -1 1272 3.1059999018907547e-03 + + -7.2808599472045898e-01 4.0224999189376831e-02 + <_> + + 0 -1 1273 5.3651999682188034e-02 + + 1.7170900106430054e-01 -1.1163710355758667e+00 + <_> + + 0 -1 1274 -1.2541399896144867e-01 + + 2.7680370807647705e+00 -1.4611500501632690e-01 + <_> + + 0 -1 1275 9.2542000114917755e-02 + + 1.1609800159931183e-01 -3.9635529518127441e+00 + <_> + + 0 -1 1276 3.8513999432325363e-02 + + -7.6399999670684338e-03 -9.8780900239944458e-01 + <_> + + 0 -1 1277 -2.0200000144541264e-03 + + 2.3059999942779541e-01 -7.4970299005508423e-01 + <_> + + 0 -1 1278 9.7599998116493225e-03 + + -3.1137999892234802e-01 3.0287799239158630e-01 + <_> + + 0 -1 1279 2.4095000699162483e-02 + + -4.9529999494552612e-02 5.2690100669860840e-01 + <_> + + 0 -1 1280 -1.7982000485062599e-02 + + -1.1610640287399292e+00 -5.7000000961124897e-03 + <_> + + 0 -1 1281 -1.0555000044405460e-02 + + -2.7189099788665771e-01 2.3597699403762817e-01 + <_> + + 0 -1 1282 -7.2889998555183411e-03 + + -5.4219102859497070e-01 8.1914000213146210e-02 + <_> + + 0 -1 1283 2.3939000442624092e-02 + + 1.7975799739360809e-01 -6.7049497365951538e-01 + <_> + + 0 -1 1284 -1.8365999683737755e-02 + + 6.2664300203323364e-01 -2.0970100164413452e-01 + <_> + + 0 -1 1285 1.5715999528765678e-02 + + 2.4193699657917023e-01 -1.0444309711456299e+00 + <_> + + 0 -1 1286 -4.8804000020027161e-02 + + -9.4060599803924561e-01 -3.7519999314099550e-03 + <_> + + 0 -1 1287 6.7130001261830330e-03 + + -7.5432002544403076e-02 6.1575299501419067e-01 + <_> + + 0 -1 1288 9.7770001739263535e-03 + + 3.9285000413656235e-02 -8.4810298681259155e-01 + <_> + + 0 -1 1289 1.4744999818503857e-02 + + 1.6968999803066254e-01 -5.0906401872634888e-01 + <_> + + 0 -1 1290 9.7079001367092133e-02 + + -3.3103000372648239e-02 -1.2706379890441895e+00 + <_> + + 0 -1 1291 4.8285998404026031e-02 + + 9.4329997897148132e-02 2.7203190326690674e+00 + <_> + + 0 -1 1292 9.7810002043843269e-03 + + -3.9533400535583496e-01 1.5363800525665283e-01 + <_> + + 0 -1 1293 -3.9893999695777893e-02 + + -2.2767400741577148e-01 1.3913999497890472e-01 + <_> + + 0 -1 1294 2.2848000749945641e-02 + + -2.7391999959945679e-01 3.4199500083923340e-01 + <_> + + 0 -1 1295 6.7179999314248562e-03 + + -1.0874299705028534e-01 4.8125401139259338e-01 + <_> + + 0 -1 1296 5.9599999338388443e-02 + + -4.9522001296281815e-02 -2.0117089748382568e+00 + <_> + + 0 -1 1297 6.9340001791715622e-03 + + 1.5037499368190765e-01 -1.1271899938583374e-01 + <_> + + 0 -1 1298 1.5757000073790550e-02 + + -2.0885000005364418e-02 -1.1651979684829712e+00 + <_> + + 0 -1 1299 -4.9690000712871552e-02 + + -8.0213499069213867e-01 1.4372299611568451e-01 + <_> + + 0 -1 1300 5.2347000688314438e-02 + + -2.0836700499057770e-01 6.1677598953247070e-01 + <_> + + 0 -1 1301 2.2430999204516411e-02 + + 2.0305900275707245e-01 -7.5326198339462280e-01 + <_> + + 0 -1 1302 4.1142001748085022e-02 + + -1.8118199706077576e-01 1.0033359527587891e+00 + <_> + + 0 -1 1303 -2.1632000803947449e-02 + + 4.9998998641967773e-01 -3.4662999212741852e-02 + <_> + + 0 -1 1304 -8.2808002829551697e-02 + + 1.1711900234222412e+00 -1.8433600664138794e-01 + <_> + + 0 -1 1305 8.5060000419616699e-03 + + -6.3225001096725464e-02 2.9024899005889893e-01 + <_> + + 0 -1 1306 7.8905001282691956e-02 + + -2.3274500668048859e-01 5.9695798158645630e-01 + <_> + + 0 -1 1307 -9.0207003057003021e-02 + + -8.2211899757385254e-01 1.7772200703620911e-01 + <_> + + 0 -1 1308 -2.9269000515341759e-02 + + 6.0860699415206909e-01 -2.1468900144100189e-01 + <_> + + 0 -1 1309 6.9499998353421688e-03 + + -4.2665999382734299e-02 6.0512101650238037e-01 + <_> + + 0 -1 1310 -8.0629996955394745e-03 + + -1.1508270502090454e+00 -2.7286000549793243e-02 + <_> + + 0 -1 1311 1.9595999270677567e-02 + + -9.1880001127719879e-03 5.6857800483703613e-01 + <_> + + 0 -1 1312 -1.4884999953210354e-02 + + 3.7658798694610596e-01 -2.7149501442909241e-01 + <_> + + 0 -1 1313 2.5217000395059586e-02 + + -9.9991001188755035e-02 2.4664700031280518e-01 + <_> + + 0 -1 1314 -1.5855999663472176e-02 + + 6.6826701164245605e-01 -2.0614700019359589e-01 + <_> + + 0 -1 1315 2.9441000893712044e-02 + + 1.5832200646400452e-01 -7.6060897111892700e-01 + <_> + + 0 -1 1316 -8.5279997438192368e-03 + + 3.8212299346923828e-01 -2.5407800078392029e-01 + <_> + + 0 -1 1317 2.4421999230980873e-02 + + 1.5105099976062775e-01 -2.8752899169921875e-01 + <_> + + 0 -1 1318 -3.3886998891830444e-02 + + -6.8002802133560181e-01 3.4327000379562378e-02 + <_> + + 0 -1 1319 -2.0810000132769346e-03 + + 2.5413900613784790e-01 -2.6859098672866821e-01 + <_> + + 0 -1 1320 3.0358999967575073e-02 + + -3.0842000618577003e-02 -1.1476809978485107e+00 + <_> + + 0 -1 1321 4.0210001170635223e-03 + + -3.5253798961639404e-01 2.9868099093437195e-01 + <_> + + 0 -1 1322 2.7681000530719757e-02 + + -3.8148999214172363e-02 -1.3262039422988892e+00 + <_> + + 0 -1 1323 7.9039996489882469e-03 + + -2.3737000301480293e-02 7.0503002405166626e-01 + <_> + + 0 -1 1324 4.4031001627445221e-02 + + 1.0674899816513062e-01 -4.5261201262474060e-01 + <_> + + 0 -1 1325 -3.2370999455451965e-02 + + 4.6674901247024536e-01 -6.1546999961137772e-02 + <_> + + 0 -1 1326 2.0933000370860100e-02 + + -2.8447899222373962e-01 4.3845599889755249e-01 + <_> + + 0 -1 1327 2.5227999314665794e-02 + + -2.2537000477313995e-02 7.0389097929000854e-01 + <_> + + 0 -1 1328 6.5520000644028187e-03 + + -3.2554900646209717e-01 2.4023699760437012e-01 + <_> + + 0 -1 1329 -5.8557998389005661e-02 + + -1.2227720022201538e+00 1.1668799817562103e-01 + <_> + + 0 -1 1330 3.1899999827146530e-02 + + -1.9305000081658363e-02 -1.0973169803619385e+00 + <_> + + 0 -1 1331 -3.0445000156760216e-02 + + 6.5582501888275146e-01 7.5090996921062469e-02 + <_> + + 0 -1 1332 1.4933000318706036e-02 + + -5.2155798673629761e-01 1.1523099988698959e-01 + <_> + + 0 -1 1333 -4.9008000642061234e-02 + + -7.8303998708724976e-01 1.6657200455665588e-01 + <_> + + 0 -1 1334 8.3158999681472778e-02 + + -2.6879999786615372e-03 -8.5282301902770996e-01 + <_> + + 0 -1 1335 2.3902999237179756e-02 + + -5.1010999828577042e-02 4.1999098658561707e-01 + <_> + + 0 -1 1336 1.6428999602794647e-02 + + 1.9232999533414841e-02 -6.5049099922180176e-01 + <_> + + 0 -1 1337 -1.1838000267744064e-02 + + -6.2409800291061401e-01 1.5411199629306793e-01 + <_> + + 0 -1 1338 -1.6799999866634607e-04 + + 1.7589199542999268e-01 -3.4338700771331787e-01 + <_> + + 0 -1 1339 1.9193999469280243e-02 + + 4.3418999761343002e-02 7.9069197177886963e-01 + <_> + + 0 -1 1340 -1.0032000020146370e-02 + + 4.5648899674415588e-01 -2.2494800388813019e-01 + <_> + + 0 -1 1341 -1.4004000462591648e-02 + + 3.3570998907089233e-01 -4.8799999058246613e-03 + <_> + + 0 -1 1342 -1.0319899767637253e-01 + + -2.3378000259399414e+00 -5.8933001011610031e-02 + <_> + + 0 -1 1343 -9.5697000622749329e-02 + + -6.6153901815414429e-01 2.0098599791526794e-01 + <_> + + 0 -1 1344 -4.1480999439954758e-02 + + 4.5939201116561890e-01 -2.2314099967479706e-01 + <_> + + 0 -1 1345 2.4099999573081732e-03 + + -2.6898598670959473e-01 2.4922999739646912e-01 + <_> + + 0 -1 1346 1.0724999755620956e-01 + + -1.8640199303627014e-01 7.2769802808761597e-01 + <_> + + 0 -1 1347 3.1870000530034304e-03 + + -2.4608999490737915e-02 2.8643900156021118e-01 + <_> + + 0 -1 1348 2.9167000204324722e-02 + + -3.4683000296354294e-02 -1.1162580251693726e+00 + <_> + + 0 -1 1349 1.1287000030279160e-02 + + 6.3760001212358475e-03 6.6632097959518433e-01 + <_> + + 0 -1 1350 -1.2001000344753265e-02 + + 4.2420101165771484e-01 -2.6279801130294800e-01 + <_> + + 0 -1 1351 -1.2695999816060066e-02 + + -2.1957000717520714e-02 1.8936799466609955e-01 + <_> + + 0 -1 1352 2.4597000330686569e-02 + + -3.4963998943567276e-02 -1.0989320278167725e+00 + <_> + + 0 -1 1353 4.5953001827001572e-02 + + 1.1109799891710281e-01 -2.9306049346923828e+00 + <_> + + 0 -1 1354 -2.7241000905632973e-02 + + 2.9101699590682983e-01 -2.7407899498939514e-01 + <_> + + 0 -1 1355 4.0063999593257904e-02 + + 1.1877900362014771e-01 -6.2801802158355713e-01 + <_> + + 0 -1 1356 2.3055000230669975e-02 + + 1.4813800156116486e-01 -3.7007498741149902e-01 + <_> + + 0 -1 1357 -2.3737000301480293e-02 + + -5.3724801540374756e-01 1.9358199834823608e-01 + <_> + + 0 -1 1358 7.7522002160549164e-02 + + -6.0194000601768494e-02 -1.9489669799804688e+00 + <_> + + 0 -1 1359 -1.3345000334084034e-02 + + -4.5229598879814148e-01 1.8741500377655029e-01 + <_> + + 0 -1 1360 -2.1719999611377716e-02 + + 1.2144249677658081e+00 -1.5365800261497498e-01 + <_> + + 0 -1 1361 -7.1474999189376831e-02 + + -2.3047130107879639e+00 1.0999900102615356e-01 + <_> + + 0 -1 1362 -5.4999999701976776e-03 + + -7.1855199337005615e-01 2.0100999623537064e-02 + <_> + + 0 -1 1363 2.6740999892354012e-02 + + 7.3545001447200775e-02 9.8786002397537231e-01 + <_> + + 0 -1 1364 -3.9407998323440552e-02 + + -1.2227380275726318e+00 -4.3506998568773270e-02 + <_> + + 0 -1 1365 2.5888999924063683e-02 + + 1.3409300148487091e-01 -1.1770780086517334e+00 + <_> + + 0 -1 1366 4.8925001174211502e-02 + + -3.0810000374913216e-02 -9.3479502201080322e-01 + <_> + + 0 -1 1367 3.6892998963594437e-02 + + 1.3333700597286224e-01 -1.4998290538787842e+00 + <_> + + 0 -1 1368 7.8929997980594635e-02 + + -1.4538800716400146e-01 1.5631790161132812e+00 + <_> + + 0 -1 1369 2.9006000608205795e-02 + + 1.9383700191974640e-01 -6.7642802000045776e-01 + <_> + + 0 -1 1370 6.3089998438954353e-03 + + -3.7465399503707886e-01 1.0857500135898590e-01 + <_> + + 0 -1 1371 -6.5830998122692108e-02 + + 8.1059402227401733e-01 3.0201999470591545e-02 + <_> + + 0 -1 1372 -6.8965002894401550e-02 + + 8.3772599697113037e-01 -1.7140999436378479e-01 + <_> + + 0 -1 1373 -1.1669100075960159e-01 + + -9.4647198915481567e-01 1.3123199343681335e-01 + <_> + + 0 -1 1374 -1.3060000492259860e-03 + + 4.6007998287677765e-02 -5.2011597156524658e-01 + <_> + + 0 -1 1375 -4.4558998197317123e-02 + + -1.9423669576644897e+00 1.3200700283050537e-01 + <_> + + 0 -1 1376 5.1033001393079758e-02 + + -2.1480999886989594e-01 4.8673900961875916e-01 + <_> + + 0 -1 1377 -3.1578000634908676e-02 + + 5.9989798069000244e-01 7.9159997403621674e-03 + <_> + + 0 -1 1378 2.1020000800490379e-02 + + -2.2069500386714935e-01 5.4046201705932617e-01 + <_> + + 0 -1 1379 -1.3824200630187988e-01 + + 6.2957501411437988e-01 -2.1712999790906906e-02 + <_> + + 0 -1 1380 5.2228998392820358e-02 + + -2.3360900580883026e-01 4.9760800600051880e-01 + <_> + + 0 -1 1381 2.5884000584483147e-02 + + 1.8041999638080597e-01 -2.2039200365543365e-01 + <_> + + 0 -1 1382 -1.2138999998569489e-02 + + -6.9731897115707397e-01 1.5712000429630280e-02 + <_> + + 0 -1 1383 -2.4237999692559242e-02 + + 3.4593299031257629e-01 7.1469999849796295e-02 + <_> + + 0 -1 1384 -2.5272000581026077e-02 + + -8.7583297491073608e-01 -9.8240002989768982e-03 + <_> + + 0 -1 1385 1.2597000226378441e-02 + + 2.3649999499320984e-01 -2.8731200098991394e-01 + <_> + + 0 -1 1386 5.7330999523401260e-02 + + -6.1530999839305878e-02 -2.2326040267944336e+00 + <_> + + 0 -1 1387 1.6671000048518181e-02 + + -1.9850100576877594e-01 4.0810701251029968e-01 + <_> + + 0 -1 1388 -2.2818999364972115e-02 + + 9.6487599611282349e-01 -2.0245699584484100e-01 + <_> + + 0 -1 1389 3.7000001611886546e-05 + + -5.8908998966217041e-02 2.7055400609970093e-01 + <_> + + 0 -1 1390 -7.6700001955032349e-03 + + -4.5317101478576660e-01 8.9628003537654877e-02 + <_> + + 0 -1 1391 9.4085998833179474e-02 + + 1.1604599654674530e-01 -1.0951169729232788e+00 + <_> + + 0 -1 1392 -6.2267001718282700e-02 + + 1.8096530437469482e+00 -1.4773200452327728e-01 + <_> + + 0 -1 1393 1.7416000366210938e-02 + + 2.3068200051784515e-01 -4.2417600750923157e-01 + <_> + + 0 -1 1394 -2.2066000849008560e-02 + + 4.9270299077033997e-01 -2.0630900561809540e-01 + <_> + + 0 -1 1395 -1.0404000058770180e-02 + + 6.0924297571182251e-01 2.8130000457167625e-02 + <_> + + 0 -1 1396 -9.3670003116130829e-03 + + 4.0171200037002563e-01 -2.1681700646877289e-01 + <_> + + 0 -1 1397 -2.9039999470114708e-02 + + -8.4876501560211182e-01 1.4246800541877747e-01 + <_> + + 0 -1 1398 -2.1061999723315239e-02 + + -7.9198300838470459e-01 -1.2595999985933304e-02 + <_> + + 0 -1 1399 -3.7000998854637146e-02 + + -6.7488902807235718e-01 1.2830400466918945e-01 + <_> + + 0 -1 1400 1.0735999792814255e-02 + + 3.6779999732971191e-02 -6.3393002748489380e-01 + <_> + + 0 -1 1401 1.6367599368095398e-01 + + 1.3803899288177490e-01 -4.7189000248908997e-01 + <_> + + 0 -1 1402 9.4917997717857361e-02 + + -1.3855700194835663e-01 1.9492419958114624e+00 + <_> + + 0 -1 1403 3.5261999815702438e-02 + + 1.3721899688243866e-01 -2.1186530590057373e+00 + <_> + + 0 -1 1404 1.2811000458896160e-02 + + -2.0008100569248199e-01 4.9507799744606018e-01 + <_> + 155 + -3.3933560848236084e+00 + + <_> + + 0 -1 1405 1.3904400169849396e-01 + + -4.6581199765205383e-01 7.6431602239608765e-01 + <_> + + 0 -1 1406 1.1916999705135822e-02 + + -9.4398999214172363e-01 3.9726299047470093e-01 + <_> + + 0 -1 1407 -1.0006999596953392e-02 + + 3.2718798518180847e-01 -6.3367402553558350e-01 + <_> + + 0 -1 1408 -6.0479999519884586e-03 + + 2.7427899837493896e-01 -5.7446998357772827e-01 + <_> + + 0 -1 1409 -1.2489999644458294e-03 + + 2.3629300296306610e-01 -6.8593502044677734e-01 + <_> + + 0 -1 1410 3.2382000237703323e-02 + + -5.7630199193954468e-01 2.7492699027061462e-01 + <_> + + 0 -1 1411 -1.3957999646663666e-02 + + -6.1061501502990723e-01 2.4541600048542023e-01 + <_> + + 0 -1 1412 1.1159999994561076e-03 + + -5.6539100408554077e-01 2.7179300785064697e-01 + <_> + + 0 -1 1413 2.7000000045518391e-05 + + -8.0235999822616577e-01 1.1509100347757339e-01 + <_> + + 0 -1 1414 -2.5700000696815550e-04 + + -8.1205898523330688e-01 2.3844699561595917e-01 + <_> + + 0 -1 1415 4.0460000745952129e-03 + + 1.3909600675106049e-01 -6.6163200139999390e-01 + <_> + + 0 -1 1416 1.4356000348925591e-02 + + -1.6485199332237244e-01 4.1901698708534241e-01 + <_> + + 0 -1 1417 -5.5374998599290848e-02 + + 1.4425870180130005e+00 -1.8820199370384216e-01 + <_> + + 0 -1 1418 9.3594998121261597e-02 + + 1.3548299670219421e-01 -9.1636097431182861e-01 + <_> + + 0 -1 1419 2.6624999940395355e-02 + + -3.3748298883438110e-01 3.9233601093292236e-01 + <_> + + 0 -1 1420 3.7469998933374882e-03 + + -1.1615400016307831e-01 4.4399300217628479e-01 + <_> + + 0 -1 1421 -3.1886000186204910e-02 + + -9.9498301744461060e-01 1.6120000509545207e-03 + <_> + + 0 -1 1422 -2.2600000724196434e-02 + + -4.8067399859428406e-01 1.7007300257682800e-01 + <_> + + 0 -1 1423 2.5202000513672829e-02 + + 3.5580001771450043e-02 -8.0215400457382202e-01 + <_> + + 0 -1 1424 -3.1036999076604843e-02 + + -1.0895340442657471e+00 1.8081900477409363e-01 + <_> + + 0 -1 1425 -2.6475999504327774e-02 + + 9.5671200752258301e-01 -2.1049399673938751e-01 + <_> + + 0 -1 1426 -1.3853999786078930e-02 + + -1.0370320081710815e+00 2.2166700661182404e-01 + <_> + + 0 -1 1427 -6.2925003468990326e-02 + + 9.0199398994445801e-01 -1.9085299968719482e-01 + <_> + + 0 -1 1428 -4.4750999659299850e-02 + + -1.0119110345840454e+00 1.4691199362277985e-01 + <_> + + 0 -1 1429 -2.0428000018000603e-02 + + 6.1624497175216675e-01 -2.3552699387073517e-01 + <_> + + 0 -1 1430 -8.0329999327659607e-03 + + -8.3279997110366821e-02 2.1728700399398804e-01 + <_> + + 0 -1 1431 8.7280003353953362e-03 + + 6.5458998084068298e-02 -6.0318702459335327e-01 + <_> + + 0 -1 1432 -2.7202000841498375e-02 + + -9.3447399139404297e-01 1.5270000696182251e-01 + <_> + + 0 -1 1433 -1.6471000388264656e-02 + + -8.4177100658416748e-01 1.3332000002264977e-02 + <_> + + 0 -1 1434 -1.3744000345468521e-02 + + 6.0567200183868408e-01 -9.2021003365516663e-02 + <_> + + 0 -1 1435 2.9164999723434448e-02 + + -2.8114000335335732e-02 -1.4014569520950317e+00 + <_> + + 0 -1 1436 3.7457000464200974e-02 + + 1.3080599904060364e-01 -4.9382498860359192e-01 + <_> + + 0 -1 1437 -2.5070000439882278e-02 + + -1.1289390325546265e+00 -1.4600000344216824e-02 + <_> + + 0 -1 1438 -6.3812002539634705e-02 + + 7.5871598720550537e-01 -1.8200000049546361e-03 + <_> + + 0 -1 1439 -9.3900002539157867e-03 + + 2.9936400055885315e-01 -2.9487800598144531e-01 + <_> + + 0 -1 1440 -7.6000002445653081e-04 + + 1.9725000485777855e-02 1.9993899762630463e-01 + <_> + + 0 -1 1441 -2.1740999072790146e-02 + + -8.5247898101806641e-01 4.9169998615980148e-02 + <_> + + 0 -1 1442 -1.7869999632239342e-02 + + -5.9985999017953873e-02 1.5222500264644623e-01 + <_> + + 0 -1 1443 -2.4831000715494156e-02 + + 3.5603401064872742e-01 -2.6259899139404297e-01 + <_> + + 0 -1 1444 1.5715500712394714e-01 + + 1.5599999460391700e-04 1.0428730249404907e+00 + <_> + + 0 -1 1445 6.9026999175548553e-02 + + -3.3006999641656876e-02 -1.1796669960021973e+00 + <_> + + 0 -1 1446 -1.1021999642252922e-02 + + 5.8987700939178467e-01 -5.7647999376058578e-02 + <_> + + 0 -1 1447 -1.3834999874234200e-02 + + 5.9502798318862915e-01 -2.4418599903583527e-01 + <_> + + 0 -1 1448 -3.0941000208258629e-02 + + -1.1723799705505371e+00 1.6907000541687012e-01 + <_> + + 0 -1 1449 2.1258000284433365e-02 + + -1.8900999799370766e-02 -1.0684759616851807e+00 + <_> + + 0 -1 1450 9.3079999089241028e-02 + + 1.6305600106716156e-01 -1.3375270366668701e+00 + <_> + + 0 -1 1451 2.9635999351739883e-02 + + -2.2524799406528473e-01 4.5400100946426392e-01 + <_> + + 0 -1 1452 -1.2199999764561653e-04 + + 2.7409100532531738e-01 -3.7371399998664856e-01 + <_> + + 0 -1 1453 -4.2098000645637512e-02 + + -7.5828802585601807e-01 1.7137000337243080e-02 + <_> + + 0 -1 1454 -2.2505000233650208e-02 + + -2.2759300470352173e-01 2.3698699474334717e-01 + <_> + + 0 -1 1455 -1.2862999923527241e-02 + + 1.9252400100231171e-01 -3.2127100229263306e-01 + <_> + + 0 -1 1456 2.7860000729560852e-02 + + 1.6723699867725372e-01 -1.0209059715270996e+00 + <_> + + 0 -1 1457 -2.7807999402284622e-02 + + 1.2824759483337402e+00 -1.7225299775600433e-01 + <_> + + 0 -1 1458 -6.1630001291632652e-03 + + -5.4072898626327515e-01 2.3885700106620789e-01 + <_> + + 0 -1 1459 -2.0436000078916550e-02 + + 6.3355398178100586e-01 -2.1090599894523621e-01 + <_> + + 0 -1 1460 -1.2307999655604362e-02 + + -4.9778199195861816e-01 1.7402599751949310e-01 + <_> + + 0 -1 1461 -4.0493998676538467e-02 + + -1.1848740577697754e+00 -3.3890999853610992e-02 + <_> + + 0 -1 1462 2.9657000675797462e-02 + + 2.1740999072790146e-02 1.0069919824600220e+00 + <_> + + 0 -1 1463 6.8379999138414860e-03 + + 2.9217999428510666e-02 -5.9906297922134399e-01 + <_> + + 0 -1 1464 1.6164999455213547e-02 + + -2.1000799536705017e-01 3.7637299299240112e-01 + <_> + + 0 -1 1465 5.0193000584840775e-02 + + 2.5319999549537897e-03 -7.1668201684951782e-01 + <_> + + 0 -1 1466 1.9680000841617584e-03 + + -2.1921400725841522e-01 3.2298699021339417e-01 + <_> + + 0 -1 1467 2.4979999288916588e-02 + + -9.6840001642704010e-03 -7.7572900056838989e-01 + <_> + + 0 -1 1468 -1.5809999778866768e-02 + + 4.4637501239776611e-01 -6.1760000884532928e-02 + <_> + + 0 -1 1469 3.7206999957561493e-02 + + -2.0495399832725525e-01 5.7722198963165283e-01 + <_> + + 0 -1 1470 -7.9264998435974121e-02 + + -7.6745402812957764e-01 1.2550400197505951e-01 + <_> + + 0 -1 1471 -1.7152000218629837e-02 + + -1.4121830463409424e+00 -5.1704000681638718e-02 + <_> + + 0 -1 1472 3.2740000635385513e-02 + + 1.9334000349044800e-01 -6.3633698225021362e-01 + <_> + + 0 -1 1473 -1.1756999790668488e-01 + + 8.4325402975082397e-01 -1.8018600344657898e-01 + <_> + + 0 -1 1474 1.2057200074195862e-01 + + 1.2530000507831573e-01 -2.1213600635528564e+00 + <_> + + 0 -1 1475 4.2779999785125256e-03 + + -4.6604400873184204e-01 8.9643999934196472e-02 + <_> + + 0 -1 1476 -7.2544999420642853e-02 + + 5.1826500892639160e-01 1.6823999583721161e-02 + <_> + + 0 -1 1477 1.7710599303245544e-01 + + -3.0910000205039978e-02 -1.1046639680862427e+00 + <_> + + 0 -1 1478 8.4229996427893639e-03 + + 2.4445800483226776e-01 -3.8613098859786987e-01 + <_> + + 0 -1 1479 -1.3035000301897526e-02 + + 9.8004400730133057e-01 -1.7016500234603882e-01 + <_> + + 0 -1 1480 1.8912000581622124e-02 + + 2.0248499512672424e-01 -3.8545900583267212e-01 + <_> + + 0 -1 1481 2.1447999402880669e-02 + + -2.5717198848724365e-01 3.5181200504302979e-01 + <_> + + 0 -1 1482 6.3357003033161163e-02 + + 1.6994799673557281e-01 -9.1383802890777588e-01 + <_> + + 0 -1 1483 -3.2435998320579529e-02 + + -8.5681599378585815e-01 -2.1680999547243118e-02 + <_> + + 0 -1 1484 -2.3564999923110008e-02 + + 5.6115597486495972e-01 -2.2400000307243317e-04 + <_> + + 0 -1 1485 1.8789000809192657e-02 + + -2.5459799170494080e-01 3.4512901306152344e-01 + <_> + + 0 -1 1486 3.1042000278830528e-02 + + 7.5719999149441719e-03 3.4800198674201965e-01 + <_> + + 0 -1 1487 -1.1226999573409557e-02 + + -6.0219800472259521e-01 4.2814999818801880e-02 + <_> + + 0 -1 1488 -1.2845999561250210e-02 + + 4.2020401358604431e-01 -5.3801000118255615e-02 + <_> + + 0 -1 1489 -1.2791999615728855e-02 + + 2.2724500298500061e-01 -3.2398000359535217e-01 + <_> + + 0 -1 1490 6.8651996552944183e-02 + + 9.3532003462314606e-02 10. + <_> + + 0 -1 1491 5.2789999172091484e-03 + + -2.6926299929618835e-01 3.3303201198577881e-01 + <_> + + 0 -1 1492 -3.8779001682996750e-02 + + -7.2365301847457886e-01 1.7806500196456909e-01 + <_> + + 0 -1 1493 6.1820000410079956e-03 + + -3.5119399428367615e-01 1.6586300730705261e-01 + <_> + + 0 -1 1494 1.7515200376510620e-01 + + 1.1623100191354752e-01 -1.5419290065765381e+00 + <_> + + 0 -1 1495 1.1627999693155289e-01 + + -9.1479998081922531e-03 -9.9842602014541626e-01 + <_> + + 0 -1 1496 -2.2964000701904297e-02 + + 2.0565399527549744e-01 1.5432000160217285e-02 + <_> + + 0 -1 1497 -5.1410000771284103e-02 + + 5.8072400093078613e-01 -2.0118400454521179e-01 + <_> + + 0 -1 1498 2.2474199533462524e-01 + + 1.8728999421000481e-02 1.0829299688339233e+00 + <_> + + 0 -1 1499 9.4860000535845757e-03 + + -3.3171299099922180e-01 1.9902999699115753e-01 + <_> + + 0 -1 1500 -1.1846300214529037e-01 + + 1.3711010217666626e+00 6.8926997482776642e-02 + <_> + + 0 -1 1501 3.7810999900102615e-02 + + -9.3600002583116293e-04 -8.3996999263763428e-01 + <_> + + 0 -1 1502 2.2202000021934509e-02 + + -1.1963999830186367e-02 3.6673998832702637e-01 + <_> + + 0 -1 1503 -3.6366000771522522e-02 + + 3.7866500020027161e-01 -2.7714800834655762e-01 + <_> + + 0 -1 1504 -1.3184699416160583e-01 + + -2.7481179237365723e+00 1.0666900128126144e-01 + <_> + + 0 -1 1505 -4.1655998677015305e-02 + + 4.7524300217628479e-01 -2.3249800503253937e-01 + <_> + + 0 -1 1506 -3.3151999115943909e-02 + + -5.7929402589797974e-01 1.7434400320053101e-01 + <_> + + 0 -1 1507 1.5769999474287033e-02 + + -1.1284000240266323e-02 -8.3701401948928833e-01 + <_> + + 0 -1 1508 -3.9363000541925430e-02 + + 3.4821599721908569e-01 -1.7455400526523590e-01 + <_> + + 0 -1 1509 -6.7849002778530121e-02 + + 1.4225699901580811e+00 -1.4765599370002747e-01 + <_> + + 0 -1 1510 -2.6775000616908073e-02 + + 2.3947000503540039e-01 1.3271999545395374e-02 + <_> + + 0 -1 1511 3.9919000118970871e-02 + + -8.9999996125698090e-03 -7.5938898324966431e-01 + <_> + + 0 -1 1512 1.0065600275993347e-01 + + -1.8685000017285347e-02 7.6245301961898804e-01 + <_> + + 0 -1 1513 -8.1022001802921295e-02 + + -9.0439099073410034e-01 -8.5880002006888390e-03 + <_> + + 0 -1 1514 -2.1258000284433365e-02 + + -2.1319599449634552e-01 2.1919700503349304e-01 + <_> + + 0 -1 1515 -1.0630999691784382e-02 + + 1.9598099589347839e-01 -3.5768100619316101e-01 + <_> + + 0 -1 1516 8.1300002057105303e-04 + + -9.2794999480247498e-02 2.6145899295806885e-01 + <_> + + 0 -1 1517 3.4650000743567944e-03 + + -5.5336099863052368e-01 2.7386000379920006e-02 + <_> + + 0 -1 1518 1.8835999071598053e-02 + + 1.8446099758148193e-01 -6.6934299468994141e-01 + <_> + + 0 -1 1519 -2.5631999596953392e-02 + + 1.9382879734039307e+00 -1.4708900451660156e-01 + <_> + + 0 -1 1520 -4.0939999744296074e-03 + + -2.6451599597930908e-01 2.0733200013637543e-01 + <_> + + 0 -1 1521 -8.9199998183175921e-04 + + -5.5031597614288330e-01 5.0374999642372131e-02 + <_> + + 0 -1 1522 -4.9518000334501266e-02 + + -2.5615389347076416e+00 1.3141700625419617e-01 + <_> + + 0 -1 1523 1.1680999770760536e-02 + + -2.4819800257682800e-01 3.9982700347900391e-01 + <_> + + 0 -1 1524 3.4563999623060226e-02 + + 1.6178800165653229e-01 -7.1418899297714233e-01 + <_> + + 0 -1 1525 -8.2909995689988136e-03 + + 2.2180099785327911e-01 -2.9181700944900513e-01 + <_> + + 0 -1 1526 -2.2358000278472900e-02 + + 3.1044098734855652e-01 -2.7280000504106283e-03 + <_> + + 0 -1 1527 -3.0801000073552132e-02 + + -9.5672702789306641e-01 -8.3400001749396324e-03 + <_> + + 0 -1 1528 4.3779000639915466e-02 + + 1.2556900084018707e-01 -1.1759619712829590e+00 + <_> + + 0 -1 1529 4.3046001344919205e-02 + + -5.8876998722553253e-02 -1.8568470478057861e+00 + <_> + + 0 -1 1530 2.7188999578356743e-02 + + 4.2858000844717026e-02 3.9036700129508972e-01 + <_> + + 0 -1 1531 9.4149997457861900e-03 + + -4.3567001819610596e-02 -1.1094470024108887e+00 + <_> + + 0 -1 1532 9.4311997294425964e-02 + + 4.0256999433040619e-02 9.8442298173904419e-01 + <_> + + 0 -1 1533 1.7025099694728851e-01 + + 2.9510000720620155e-02 -6.9509297609329224e-01 + <_> + + 0 -1 1534 -4.7148000448942184e-02 + + 1.0338569879531860e+00 6.7602001130580902e-02 + <_> + + 0 -1 1535 1.1186300218105316e-01 + + -6.8682998418807983e-02 -2.4985830783843994e+00 + <_> + + 0 -1 1536 -1.4353999868035316e-02 + + -5.9481900930404663e-01 1.5001699328422546e-01 + <_> + + 0 -1 1537 3.4024000167846680e-02 + + -6.4823001623153687e-02 -2.1382639408111572e+00 + <_> + + 0 -1 1538 2.1601999178528786e-02 + + 5.5309999734163284e-02 7.8292900323867798e-01 + <_> + + 0 -1 1539 2.1771999076008797e-02 + + -7.1279997937381268e-03 -7.2148102521896362e-01 + <_> + + 0 -1 1540 8.2416996359825134e-02 + + 1.4609499275684357e-01 -1.3636670112609863e+00 + <_> + + 0 -1 1541 8.4671996533870697e-02 + + -1.7784699797630310e-01 7.2857701778411865e-01 + <_> + + 0 -1 1542 -5.5128000676631927e-02 + + -5.9402400255203247e-01 1.9357800483703613e-01 + <_> + + 0 -1 1543 -6.4823001623153687e-02 + + -1.0783840417861938e+00 -4.0734000504016876e-02 + <_> + + 0 -1 1544 -2.2769000381231308e-02 + + 7.7900201082229614e-01 3.4960000775754452e-03 + <_> + + 0 -1 1545 5.4756000638008118e-02 + + -6.5683998167514801e-02 -1.8188409805297852e+00 + <_> + + 0 -1 1546 -8.9000001025851816e-05 + + -1.7891999334096909e-02 2.0768299698829651e-01 + <_> + + 0 -1 1547 9.8361998796463013e-02 + + -5.5946998298168182e-02 -1.4153920412063599e+00 + <_> + + 0 -1 1548 -7.0930002257227898e-03 + + 3.4135299921035767e-01 -1.2089899927377701e-01 + <_> + + 0 -1 1549 5.0278000533580780e-02 + + -2.6286700367927551e-01 2.5797298550605774e-01 + <_> + + 0 -1 1550 -5.7870000600814819e-03 + + -1.3178600370883942e-01 1.7350199818611145e-01 + <_> + + 0 -1 1551 1.3973999768495560e-02 + + 2.8518000617623329e-02 -6.1152201890945435e-01 + <_> + + 0 -1 1552 2.1449999883770943e-02 + + 2.6181999593973160e-02 3.0306598544120789e-01 + <_> + + 0 -1 1553 -2.9214000329375267e-02 + + 4.4940599799156189e-01 -2.2803099453449249e-01 + <_> + + 0 -1 1554 4.8099999548867345e-04 + + -1.9879999756813049e-01 2.0744499564170837e-01 + <_> + + 0 -1 1555 1.7109999898821115e-03 + + -5.4037201404571533e-01 6.7865997552871704e-02 + <_> + + 0 -1 1556 8.6660003289580345e-03 + + -1.3128000311553478e-02 5.2297902107238770e-01 + <_> + + 0 -1 1557 6.3657999038696289e-02 + + 6.8299002945423126e-02 -4.9235099554061890e-01 + <_> + + 0 -1 1558 -2.7968000620603561e-02 + + 6.8183898925781250e-01 7.8781001269817352e-02 + <_> + + 0 -1 1559 4.8953998833894730e-02 + + -2.0622399449348450e-01 5.0388097763061523e-01 + <_> + 169 + -3.2396929264068604e+00 + + <_> + + 0 -1 1560 -2.9312999919056892e-02 + + 7.1284699440002441e-01 -5.8230698108673096e-01 + <_> + + 0 -1 1561 1.2415099889039993e-01 + + -3.6863499879837036e-01 6.0067200660705566e-01 + <_> + + 0 -1 1562 7.9349996522068977e-03 + + -8.6008298397064209e-01 2.1724699437618256e-01 + <_> + + 0 -1 1563 3.0365999788045883e-02 + + -2.7186998724937439e-01 6.1247897148132324e-01 + <_> + + 0 -1 1564 2.5218000635504723e-02 + + -3.4748300909996033e-01 5.0427699089050293e-01 + <_> + + 0 -1 1565 1.0014000348746777e-02 + + -3.1898999214172363e-01 4.1376799345016479e-01 + <_> + + 0 -1 1566 -1.6775000840425491e-02 + + -6.9048100709915161e-01 9.4830997288227081e-02 + <_> + + 0 -1 1567 -2.6950000319629908e-03 + + -2.0829799771308899e-01 2.3737199604511261e-01 + <_> + + 0 -1 1568 4.2257998138666153e-02 + + -4.9366700649261475e-01 1.8170599639415741e-01 + <_> + + 0 -1 1569 -4.8505000770092010e-02 + + 1.3429640531539917e+00 3.9769001305103302e-02 + <_> + + 0 -1 1570 2.8992999345064163e-02 + + 4.6496000140905380e-02 -8.1643497943878174e-01 + <_> + + 0 -1 1571 -4.0089000016450882e-02 + + -7.1197801828384399e-01 2.2553899884223938e-01 + <_> + + 0 -1 1572 -4.1021998971700668e-02 + + 1.0057929754257202e+00 -1.9690200686454773e-01 + <_> + + 0 -1 1573 1.1838000267744064e-02 + + -1.2600000016391277e-02 8.0767101049423218e-01 + <_> + + 0 -1 1574 -2.1328000351786613e-02 + + -8.2023900747299194e-01 2.0524999126791954e-02 + <_> + + 0 -1 1575 -2.3904999718070030e-02 + + 5.4210501909255981e-01 -7.4767000973224640e-02 + <_> + + 0 -1 1576 1.8008999526500702e-02 + + -3.3827701210975647e-01 4.2358601093292236e-01 + <_> + + 0 -1 1577 -4.3614000082015991e-02 + + -1.1983489990234375e+00 1.5566200017929077e-01 + <_> + + 0 -1 1578 -9.2449998483061790e-03 + + -8.9029997587203979e-01 1.1003999970853329e-02 + <_> + + 0 -1 1579 4.7485001385211945e-02 + + 1.6664099693298340e-01 -9.0764498710632324e-01 + <_> + + 0 -1 1580 -1.4233999885618687e-02 + + 6.2695199251174927e-01 -2.5791200995445251e-01 + <_> + + 0 -1 1581 3.8010000716894865e-03 + + -2.8229999542236328e-01 2.6624599099159241e-01 + <_> + + 0 -1 1582 3.4330000635236502e-03 + + -6.3771998882293701e-01 9.8422996699810028e-02 + <_> + + 0 -1 1583 -2.9221000149846077e-02 + + -7.6769900321960449e-01 2.2634500265121460e-01 + <_> + + 0 -1 1584 -6.4949998632073402e-03 + + 4.5600101351737976e-01 -2.6528900861740112e-01 + <_> + + 0 -1 1585 -3.0034000054001808e-02 + + -7.6551097631454468e-01 1.4009299874305725e-01 + <_> + + 0 -1 1586 7.8360000625252724e-03 + + 4.6755999326705933e-02 -7.2356200218200684e-01 + <_> + + 0 -1 1587 8.8550001382827759e-03 + + -4.9141999334096909e-02 5.1472699642181396e-01 + <_> + + 0 -1 1588 9.5973998308181763e-02 + + -2.0068999379873276e-02 -1.0850950479507446e+00 + <_> + + 0 -1 1589 -3.2876998186111450e-02 + + -9.5875298976898193e-01 1.4543600380420685e-01 + <_> + + 0 -1 1590 -1.3384000398218632e-02 + + -7.0013600587844849e-01 2.9157999902963638e-02 + <_> + + 0 -1 1591 1.5235999599099159e-02 + + -2.8235700726509094e-01 2.5367999076843262e-01 + <_> + + 0 -1 1592 1.2054000049829483e-02 + + -2.5303399562835693e-01 4.6526700258255005e-01 + <_> + + 0 -1 1593 -7.6295003294944763e-02 + + -6.9915801286697388e-01 1.3217200338840485e-01 + <_> + + 0 -1 1594 -1.2040000408887863e-02 + + 4.5894598960876465e-01 -2.3856499791145325e-01 + <_> + + 0 -1 1595 2.1916000172495842e-02 + + 1.8268600106239319e-01 -6.1629700660705566e-01 + <_> + + 0 -1 1596 -2.7330000884830952e-03 + + -6.3257902860641479e-01 3.4219000488519669e-02 + <_> + + 0 -1 1597 -4.8652000725269318e-02 + + -1.0297729969024658e+00 1.7386500537395477e-01 + <_> + + 0 -1 1598 -1.0463999584317207e-02 + + 3.4757301211357117e-01 -2.7464100718498230e-01 + <_> + + 0 -1 1599 -6.6550001502037048e-03 + + -2.8980299830436707e-01 2.4037900567054749e-01 + <_> + + 0 -1 1600 8.5469996556639671e-03 + + -4.4340500235557556e-01 1.4267399907112122e-01 + <_> + + 0 -1 1601 1.9913999363780022e-02 + + 1.7740400135517120e-01 -2.4096299707889557e-01 + <_> + + 0 -1 1602 2.2012999281287193e-02 + + -1.0812000371515751e-02 -9.4690799713134766e-01 + <_> + + 0 -1 1603 -5.2179001271724701e-02 + + 1.6547499895095825e+00 9.6487000584602356e-02 + <_> + + 0 -1 1604 1.9698999822139740e-02 + + -6.7560002207756042e-03 -8.6311501264572144e-01 + <_> + + 0 -1 1605 2.3040000349283218e-02 + + -2.3519999813288450e-03 3.8531300425529480e-01 + <_> + + 0 -1 1606 -1.5038000419735909e-02 + + -6.1905699968338013e-01 3.1077999621629715e-02 + <_> + + 0 -1 1607 -4.9956001341342926e-02 + + 7.0657497644424438e-01 4.7880999743938446e-02 + <_> + + 0 -1 1608 -6.9269999861717224e-02 + + 3.9212900400161743e-01 -2.3848000168800354e-01 + <_> + + 0 -1 1609 4.7399997711181641e-03 + + -2.4309000000357628e-02 2.5386300683021545e-01 + <_> + + 0 -1 1610 -3.3923998475074768e-02 + + 4.6930399537086487e-01 -2.3321899771690369e-01 + <_> + + 0 -1 1611 -1.6231000423431396e-02 + + 3.2319200038909912e-01 -2.0545600354671478e-01 + <_> + + 0 -1 1612 -5.0193000584840775e-02 + + -1.2277870178222656e+00 -4.0798000991344452e-02 + <_> + + 0 -1 1613 5.6944001466035843e-02 + + 4.5184001326560974e-02 6.0197502374649048e-01 + <_> + + 0 -1 1614 4.0936999022960663e-02 + + -1.6772800683975220e-01 8.9819300174713135e-01 + <_> + + 0 -1 1615 -3.0839999672025442e-03 + + 3.3716198801994324e-01 -2.7240800857543945e-01 + <_> + + 0 -1 1616 -3.2600000500679016e-02 + + -8.5446500778198242e-01 1.9664999097585678e-02 + <_> + + 0 -1 1617 9.8480999469757080e-02 + + 5.4742000997066498e-02 6.3827300071716309e-01 + <_> + + 0 -1 1618 -3.8185000419616699e-02 + + 5.2274698019027710e-01 -2.3384800553321838e-01 + <_> + + 0 -1 1619 -4.5917000621557236e-02 + + 6.2829202413558960e-01 3.2859001308679581e-02 + <_> + + 0 -1 1620 -1.1955499649047852e-01 + + -6.1572700738906860e-01 3.4680001437664032e-02 + <_> + + 0 -1 1621 -1.2044399976730347e-01 + + -8.4380000829696655e-01 1.6530700027942657e-01 + <_> + + 0 -1 1622 7.0619001984596252e-02 + + -6.3261002302169800e-02 -1.9863929748535156e+00 + <_> + + 0 -1 1623 8.4889996796846390e-03 + + -1.7663399875164032e-01 3.8011199235916138e-01 + <_> + + 0 -1 1624 2.2710999473929405e-02 + + -2.7605999261140823e-02 -9.1921401023864746e-01 + <_> + + 0 -1 1625 4.9700000090524554e-04 + + -2.4293200671672821e-01 2.2878900170326233e-01 + <_> + + 0 -1 1626 3.4651998430490494e-02 + + -2.3705999553203583e-01 5.4010999202728271e-01 + <_> + + 0 -1 1627 -4.4700000435113907e-03 + + 3.9078998565673828e-01 -1.2693800032138824e-01 + <_> + + 0 -1 1628 2.3643000051379204e-02 + + -2.6663699746131897e-01 3.2312598824501038e-01 + <_> + + 0 -1 1629 1.2813000008463860e-02 + + 1.7540800571441650e-01 -6.0787999629974365e-01 + <_> + + 0 -1 1630 -1.1250999756157398e-02 + + -1.0852589607238770e+00 -2.8046000748872757e-02 + <_> + + 0 -1 1631 -4.1535001248121262e-02 + + 7.1887397766113281e-01 2.7982000261545181e-02 + <_> + + 0 -1 1632 -9.3470998108386993e-02 + + -1.1906319856643677e+00 -4.4810999184846878e-02 + <_> + + 0 -1 1633 -2.7249999344348907e-02 + + 6.2942498922348022e-01 9.5039997249841690e-03 + <_> + + 0 -1 1634 -2.1759999915957451e-02 + + 1.3233649730682373e+00 -1.5027000010013580e-01 + <_> + + 0 -1 1635 -9.6890004351735115e-03 + + -3.3947101235389709e-01 1.7085799574851990e-01 + <_> + + 0 -1 1636 6.9395996630191803e-02 + + -2.5657799839973450e-01 4.7652098536491394e-01 + <_> + + 0 -1 1637 3.1208999454975128e-02 + + 1.4154000580310822e-01 -3.4942001104354858e-01 + <_> + + 0 -1 1638 -4.9727000296115875e-02 + + -1.1675560474395752e+00 -4.0757998824119568e-02 + <_> + + 0 -1 1639 -2.0301999524235725e-02 + + -3.9486399292945862e-01 1.5814900398254395e-01 + <_> + + 0 -1 1640 -1.5367000363767147e-02 + + 4.9300000071525574e-01 -2.0092099905014038e-01 + <_> + + 0 -1 1641 -5.0735000520944595e-02 + + 1.8736059665679932e+00 8.6730003356933594e-02 + <_> + + 0 -1 1642 -2.0726000890135765e-02 + + -8.8938397169113159e-01 -7.3199998587369919e-03 + <_> + + 0 -1 1643 -3.0993999913334846e-02 + + -1.1664899587631226e+00 1.4274600148200989e-01 + <_> + + 0 -1 1644 -4.4269999489188194e-03 + + -6.6815102100372314e-01 4.4120000675320625e-03 + <_> + + 0 -1 1645 -4.5743998140096664e-02 + + -4.7955200076103210e-01 1.5121999382972717e-01 + <_> + + 0 -1 1646 1.6698999330401421e-02 + + 1.2048599869012833e-01 -4.5235899090766907e-01 + <_> + + 0 -1 1647 3.2210000790655613e-03 + + -7.7615000307559967e-02 2.7846598625183105e-01 + <_> + + 0 -1 1648 2.4434000253677368e-02 + + -1.9987100362777710e-01 6.7253702878952026e-01 + <_> + + 0 -1 1649 -7.9677999019622803e-02 + + 9.2222398519515991e-01 9.2557996511459351e-02 + <_> + + 0 -1 1650 4.4530000537633896e-02 + + -2.6690500974655151e-01 3.3320501446723938e-01 + <_> + + 0 -1 1651 -1.2528300285339355e-01 + + -5.4253101348876953e-01 1.3976299762725830e-01 + <_> + + 0 -1 1652 1.7971999943256378e-02 + + 1.8219999969005585e-02 -6.8048501014709473e-01 + <_> + + 0 -1 1653 1.9184000790119171e-02 + + -1.2583999894559383e-02 5.4126697778701782e-01 + <_> + + 0 -1 1654 4.0024001151323318e-02 + + -1.7638799548149109e-01 7.8810399770736694e-01 + <_> + + 0 -1 1655 1.3558999635279179e-02 + + 2.0737600326538086e-01 -4.7744300961494446e-01 + <_> + + 0 -1 1656 1.6220999881625175e-02 + + 2.3076999932527542e-02 -6.1182099580764771e-01 + <_> + + 0 -1 1657 1.1229000054299831e-02 + + -1.7728000879287720e-02 4.1764199733734131e-01 + <_> + + 0 -1 1658 3.9193000644445419e-02 + + -1.8948499858379364e-01 7.4019300937652588e-01 + <_> + + 0 -1 1659 -9.5539996400475502e-03 + + 4.0947100520133972e-01 -1.3508899509906769e-01 + <_> + + 0 -1 1660 2.7878999710083008e-02 + + -2.0350700616836548e-01 6.1625397205352783e-01 + <_> + + 0 -1 1661 -2.3600999265909195e-02 + + -1.6967060565948486e+00 1.4633199572563171e-01 + <_> + + 0 -1 1662 2.6930000633001328e-02 + + -3.0401999130845070e-02 -1.0909470319747925e+00 + <_> + + 0 -1 1663 2.8999999631196260e-04 + + -2.0076000690460205e-01 2.2314099967479706e-01 + <_> + + 0 -1 1664 -4.1124999523162842e-02 + + -4.5242199301719666e-01 5.7392001152038574e-02 + <_> + + 0 -1 1665 6.6789998672902584e-03 + + 2.3824900388717651e-01 -2.1262100338935852e-01 + <_> + + 0 -1 1666 4.7864999622106552e-02 + + -1.8194800615310669e-01 6.1918401718139648e-01 + <_> + + 0 -1 1667 -3.1679999083280563e-03 + + -2.7393200993537903e-01 2.5017300248146057e-01 + <_> + + 0 -1 1668 -8.6230002343654633e-03 + + -4.6280300617218018e-01 4.2397998273372650e-02 + <_> + + 0 -1 1669 -7.4350000359117985e-03 + + 4.1796800494194031e-01 -1.7079999670386314e-03 + <_> + + 0 -1 1670 -1.8769999733194709e-03 + + 1.4602300524711609e-01 -3.3721101284027100e-01 + <_> + + 0 -1 1671 -8.6226001381874084e-02 + + 7.5143402814865112e-01 1.0711999610066414e-02 + <_> + + 0 -1 1672 4.6833999454975128e-02 + + -1.9119599461555481e-01 4.8414900898933411e-01 + <_> + + 0 -1 1673 -9.2000002041459084e-05 + + 3.5220399498939514e-01 -1.7333300411701202e-01 + <_> + + 0 -1 1674 -1.6343999654054642e-02 + + -6.4397698640823364e-01 9.0680001303553581e-03 + <_> + + 0 -1 1675 4.5703999698162079e-02 + + 1.8216000869870186e-02 3.1970798969268799e-01 + <_> + + 0 -1 1676 -2.7382999658584595e-02 + + 1.0564049482345581e+00 -1.7276400327682495e-01 + <_> + + 0 -1 1677 -2.7602000162005424e-02 + + 2.9715499281883240e-01 -9.4600003212690353e-03 + <_> + + 0 -1 1678 7.6939999125897884e-03 + + -2.1660299599170685e-01 4.7385200858116150e-01 + <_> + + 0 -1 1679 -7.0500001311302185e-04 + + 2.4048799276351929e-01 -2.6776000857353210e-01 + <_> + + 0 -1 1680 1.1054199934005737e-01 + + -3.3539000898599625e-02 -1.0233880281448364e+00 + <_> + + 0 -1 1681 6.8765997886657715e-02 + + -4.3239998631179333e-03 5.7153397798538208e-01 + <_> + + 0 -1 1682 1.7999999690800905e-03 + + 7.7574998140335083e-02 -4.2092698812484741e-01 + <_> + + 0 -1 1683 1.9232000410556793e-01 + + 8.2021996378898621e-02 2.8810169696807861e+00 + <_> + + 0 -1 1684 1.5742099285125732e-01 + + -1.3708199560642242e-01 2.0890059471130371e+00 + <_> + + 0 -1 1685 -4.9387000501155853e-02 + + -1.8610910177230835e+00 1.4332099258899689e-01 + <_> + + 0 -1 1686 5.1929000765085220e-02 + + -1.8737000226974487e-01 5.4231601953506470e-01 + <_> + + 0 -1 1687 4.9965001642704010e-02 + + 1.4175300300121307e-01 -1.5625779628753662e+00 + <_> + + 0 -1 1688 -4.2633000761270523e-02 + + 1.6059479713439941e+00 -1.4712899923324585e-01 + <_> + + 0 -1 1689 -3.7553999572992325e-02 + + -8.0974900722503662e-01 1.3256999850273132e-01 + <_> + + 0 -1 1690 -3.7174999713897705e-02 + + -1.3945020437240601e+00 -5.7055000215768814e-02 + <_> + + 0 -1 1691 1.3945999555289745e-02 + + 3.3427000045776367e-02 5.7474797964096069e-01 + <_> + + 0 -1 1692 -4.4800000614486635e-04 + + -5.5327498912811279e-01 2.1952999755740166e-02 + <_> + + 0 -1 1693 3.1993001699447632e-02 + + 2.0340999588370323e-02 3.7459200620651245e-01 + <_> + + 0 -1 1694 -4.2799999937415123e-03 + + 4.4428700208663940e-01 -2.2999699413776398e-01 + <_> + + 0 -1 1695 9.8550003021955490e-03 + + 1.8315799534320831e-01 -4.0964999794960022e-01 + <_> + + 0 -1 1696 9.3356996774673462e-02 + + -6.3661001622676849e-02 -1.6929290294647217e+00 + <_> + + 0 -1 1697 1.7209999263286591e-02 + + 2.0153899490833282e-01 -4.6061098575592041e-01 + <_> + + 0 -1 1698 8.4319999441504478e-03 + + -3.2003998756408691e-01 1.5312199294567108e-01 + <_> + + 0 -1 1699 -1.4054999686777592e-02 + + 8.6882400512695312e-01 3.2575000077486038e-02 + <_> + + 0 -1 1700 -7.7180000953376293e-03 + + 6.3686698675155640e-01 -1.8425500392913818e-01 + <_> + + 0 -1 1701 2.8005000203847885e-02 + + 1.7357499897480011e-01 -4.7883599996566772e-01 + <_> + + 0 -1 1702 -1.8884999677538872e-02 + + 2.4101600050926208e-01 -2.6547598838806152e-01 + <_> + + 0 -1 1703 -1.8585000187158585e-02 + + 5.4232501983642578e-01 5.3633000701665878e-02 + <_> + + 0 -1 1704 -3.6437001079320908e-02 + + 2.3908898830413818e+00 -1.3634699583053589e-01 + <_> + + 0 -1 1705 3.2455001026391983e-02 + + 1.5910699963569641e-01 -6.7581498622894287e-01 + <_> + + 0 -1 1706 5.9781998395919800e-02 + + -2.3479999508708715e-03 -7.3053699731826782e-01 + <_> + + 0 -1 1707 9.8209995776414871e-03 + + -1.1444099992513657e-01 3.0570301413536072e-01 + <_> + + 0 -1 1708 -3.5163998603820801e-02 + + -1.0511469841003418e+00 -3.3103000372648239e-02 + <_> + + 0 -1 1709 2.7429999317973852e-03 + + -2.0135399699211121e-01 3.2754099369049072e-01 + <_> + + 0 -1 1710 8.1059997901320457e-03 + + -2.1383500099182129e-01 4.3362098932266235e-01 + <_> + + 0 -1 1711 8.8942997157573700e-02 + + 1.0940899699926376e-01 -4.7609338760375977e+00 + <_> + + 0 -1 1712 -3.0054999515414238e-02 + + -1.7169300317764282e+00 -6.0919001698493958e-02 + <_> + + 0 -1 1713 -2.1734999492764473e-02 + + 6.4778900146484375e-01 -3.2830998301506042e-02 + <_> + + 0 -1 1714 3.7648998200893402e-02 + + -1.0060000233352184e-02 -7.6569098234176636e-01 + <_> + + 0 -1 1715 2.7189999818801880e-03 + + 1.9888900220394135e-01 -8.2479000091552734e-02 + <_> + + 0 -1 1716 -1.0548000223934650e-02 + + -8.6613601446151733e-01 -2.5986000895500183e-02 + <_> + + 0 -1 1717 1.2966300547122955e-01 + + 1.3911999762058258e-01 -2.2271950244903564e+00 + <_> + + 0 -1 1718 -1.7676999792456627e-02 + + 3.3967700600624084e-01 -2.3989599943161011e-01 + <_> + + 0 -1 1719 -7.7051997184753418e-02 + + -2.5017969608306885e+00 1.2841999530792236e-01 + <_> + + 0 -1 1720 -1.9230000674724579e-02 + + 5.0641202926635742e-01 -1.9751599431037903e-01 + <_> + + 0 -1 1721 -5.1222998648881912e-02 + + -2.9333369731903076e+00 1.3858500123023987e-01 + <_> + + 0 -1 1722 2.0830000285059214e-03 + + -6.0043597221374512e-01 2.9718000441789627e-02 + <_> + + 0 -1 1723 2.5418000295758247e-02 + + 3.3915799856185913e-01 -1.4392000436782837e-01 + <_> + + 0 -1 1724 -2.3905999958515167e-02 + + -1.1082680225372314e+00 -4.7377001494169235e-02 + <_> + + 0 -1 1725 -6.3740001060068607e-03 + + 4.4533699750900269e-01 -6.7052997648715973e-02 + <_> + + 0 -1 1726 -3.7698999047279358e-02 + + -1.0406579971313477e+00 -4.1790001094341278e-02 + <_> + + 0 -1 1727 2.1655100584030151e-01 + + 3.3863000571727753e-02 8.2017302513122559e-01 + <_> + + 0 -1 1728 -1.3400999829173088e-02 + + 5.2903497219085693e-01 -1.9133000075817108e-01 + <_> + 196 + -3.2103500366210938e+00 + + <_> + + 0 -1 1729 7.1268998086452484e-02 + + -5.3631198406219482e-01 6.0715299844741821e-01 + <_> + + 0 -1 1730 5.6111000478267670e-02 + + -5.0141602754592896e-01 4.3976101279258728e-01 + <_> + + 0 -1 1731 4.0463998913764954e-02 + + -3.2922199368476868e-01 5.4834699630737305e-01 + <_> + + 0 -1 1732 6.3155002892017365e-02 + + -3.1701698899269104e-01 4.6152999997138977e-01 + <_> + + 0 -1 1733 1.0320999659597874e-02 + + 1.0694999992847443e-01 -9.8243898153305054e-01 + <_> + + 0 -1 1734 6.2606997787952423e-02 + + -1.4329700171947479e-01 7.1095001697540283e-01 + <_> + + 0 -1 1735 -3.9416000247001648e-02 + + 9.4380199909210205e-01 -2.1572099626064301e-01 + <_> + + 0 -1 1736 -5.3960001096129417e-03 + + -5.4611998796463013e-01 2.5303798913955688e-01 + <_> + + 0 -1 1737 1.0773199796676636e-01 + + 1.2496000155806541e-02 -1.0809199810028076e+00 + <_> + + 0 -1 1738 1.6982000321149826e-02 + + -3.1536400318145752e-01 5.1239997148513794e-01 + <_> + + 0 -1 1739 3.1216999515891075e-02 + + -4.5199999585747719e-03 -1.2443480491638184e+00 + <_> + + 0 -1 1740 -2.3106999695301056e-02 + + -7.6492899656295776e-01 2.0640599727630615e-01 + <_> + + 0 -1 1741 -1.1203999631106853e-02 + + 2.4092699587345123e-01 -3.5142099857330322e-01 + <_> + + 0 -1 1742 -4.7479998320341110e-03 + + -9.7007997334003448e-02 2.0638099312782288e-01 + <_> + + 0 -1 1743 -1.7358999699354172e-02 + + -7.9020297527313232e-01 2.1852999925613403e-02 + <_> + + 0 -1 1744 1.8851999193429947e-02 + + -1.0394600033760071e-01 5.4844200611114502e-01 + <_> + + 0 -1 1745 7.2249998338520527e-03 + + -4.0409401059150696e-01 2.6763799786567688e-01 + <_> + + 0 -1 1746 1.8915999680757523e-02 + + 2.0508000254631042e-01 -1.0206340551376343e+00 + <_> + + 0 -1 1747 3.1156999990344048e-02 + + 1.2400000123307109e-03 -8.7293499708175659e-01 + <_> + + 0 -1 1748 2.0951999351382256e-02 + + -5.5559999309480190e-03 8.0356198549270630e-01 + <_> + + 0 -1 1749 1.1291000060737133e-02 + + -3.6478400230407715e-01 2.2767899930477142e-01 + <_> + + 0 -1 1750 -5.7011000812053680e-02 + + -1.4295619726181030e+00 1.4322000741958618e-01 + <_> + + 0 -1 1751 7.2194002568721771e-02 + + -4.1850000619888306e-02 -1.9111829996109009e+00 + <_> + + 0 -1 1752 -1.9874000921845436e-02 + + 2.6425498723983765e-01 -3.2617700099945068e-01 + <_> + + 0 -1 1753 -1.6692999750375748e-02 + + -8.3907800912857056e-01 4.0799999260343611e-04 + <_> + + 0 -1 1754 -3.9834998548030853e-02 + + -4.8858499526977539e-01 1.6436100006103516e-01 + <_> + + 0 -1 1755 2.7009999379515648e-02 + + -1.8862499296665192e-01 8.3419400453567505e-01 + <_> + + 0 -1 1756 -3.9420002140104771e-03 + + 2.3231500387191772e-01 -7.2360001504421234e-02 + <_> + + 0 -1 1757 2.2833000868558884e-02 + + -3.5884000360965729e-02 -1.1549400091171265e+00 + <_> + + 0 -1 1758 -6.8888001143932343e-02 + + -1.7837309837341309e+00 1.5159000456333160e-01 + <_> + + 0 -1 1759 4.3097000569105148e-02 + + -2.1608099341392517e-01 5.0624102354049683e-01 + <_> + + 0 -1 1760 8.6239995434880257e-03 + + -1.7795599997043610e-01 2.8957900404930115e-01 + <_> + + 0 -1 1761 1.4561000280082226e-02 + + -1.1408000253140926e-02 -8.9402002096176147e-01 + <_> + + 0 -1 1762 -1.1501000262796879e-02 + + 3.0171999335289001e-01 -4.3659001588821411e-02 + <_> + + 0 -1 1763 -1.0971499979496002e-01 + + -9.5147097110748291e-01 -1.9973000511527061e-02 + <_> + + 0 -1 1764 4.5228000730276108e-02 + + 3.3110998570919037e-02 9.6619802713394165e-01 + <_> + + 0 -1 1765 -2.7047999203205109e-02 + + 9.7963601350784302e-01 -1.7261900007724762e-01 + <_> + + 0 -1 1766 1.8030999228358269e-02 + + -2.0801000297069550e-02 2.7385899424552917e-01 + <_> + + 0 -1 1767 5.0524998456239700e-02 + + -5.6802999228239059e-02 -1.7775089740753174e+00 + <_> + + 0 -1 1768 -2.9923999682068825e-02 + + 6.5329200029373169e-01 -2.3537000641226768e-02 + <_> + + 0 -1 1769 3.8058001548051834e-02 + + 2.6317000389099121e-02 -7.0665699243545532e-01 + <_> + + 0 -1 1770 1.8563899397850037e-01 + + -5.6039998307824135e-03 3.2873699069023132e-01 + <_> + + 0 -1 1771 -4.0670000016689301e-03 + + 3.4204798936843872e-01 -3.0171599984169006e-01 + <_> + + 0 -1 1772 1.0108999907970428e-02 + + -7.3600001633167267e-03 5.7981598377227783e-01 + <_> + + 0 -1 1773 -1.1567000299692154e-02 + + -5.2722197771072388e-01 4.6447999775409698e-02 + <_> + + 0 -1 1774 -6.5649999305605888e-03 + + -5.8529102802276611e-01 1.9101899862289429e-01 + <_> + + 0 -1 1775 1.0582000017166138e-02 + + 2.1073000505566597e-02 -6.8892598152160645e-01 + <_> + + 0 -1 1776 -2.0304000005125999e-02 + + -3.6400699615478516e-01 1.5338799357414246e-01 + <_> + + 0 -1 1777 2.3529999889433384e-03 + + 3.6164000630378723e-02 -5.9825098514556885e-01 + <_> + + 0 -1 1778 -1.4690000098198652e-03 + + -1.4707699418067932e-01 3.7507998943328857e-01 + <_> + + 0 -1 1779 8.6449999362230301e-03 + + -2.1708500385284424e-01 5.1936799287796021e-01 + <_> + + 0 -1 1780 -2.4326000362634659e-02 + + -1.0846769809722900e+00 1.4084799587726593e-01 + <_> + + 0 -1 1781 7.4418999254703522e-02 + + -1.5513800084590912e-01 1.1822769641876221e+00 + <_> + + 0 -1 1782 1.7077999189496040e-02 + + 4.4231001287698746e-02 9.1561102867126465e-01 + <_> + + 0 -1 1783 -2.4577999487519264e-02 + + -1.5504100322723389e+00 -5.4745998233556747e-02 + <_> + + 0 -1 1784 3.0205000191926956e-02 + + 1.6662800312042236e-01 -1.0001239776611328e+00 + <_> + + 0 -1 1785 1.2136000208556652e-02 + + -7.7079099416732788e-01 -4.8639997839927673e-03 + <_> + + 0 -1 1786 8.6717002093791962e-02 + + 1.1061699688434601e-01 -1.6857999563217163e+00 + <_> + + 0 -1 1787 -4.2309001088142395e-02 + + 1.1075930595397949e+00 -1.5438599884510040e-01 + <_> + + 0 -1 1788 -2.6420000940561295e-03 + + 2.7451899647712708e-01 -1.8456199765205383e-01 + <_> + + 0 -1 1789 -5.6662000715732574e-02 + + -8.0625599622726440e-01 -1.6928000375628471e-02 + <_> + + 0 -1 1790 2.3475000634789467e-02 + + 1.4187699556350708e-01 -2.5500899553298950e-01 + <_> + + 0 -1 1791 -2.0803000777959824e-02 + + 1.9826300442218781e-01 -3.1171199679374695e-01 + <_> + + 0 -1 1792 7.2599998675286770e-03 + + -5.0590999424457550e-02 4.1923800110816956e-01 + <_> + + 0 -1 1793 3.4160000085830688e-01 + + -1.6674900054931641e-01 9.2748600244522095e-01 + <_> + + 0 -1 1794 6.2029999680817127e-03 + + -1.2625899910926819e-01 4.0445300936698914e-01 + <_> + + 0 -1 1795 3.2692000269889832e-02 + + -3.2634999603033066e-02 -9.8939800262451172e-01 + <_> + + 0 -1 1796 2.1100000594742596e-04 + + -6.4534001052379608e-02 2.5473698973655701e-01 + <_> + + 0 -1 1797 7.2100001852959394e-04 + + -3.6618599295616150e-01 1.1973100155591965e-01 + <_> + + 0 -1 1798 5.4490998387336731e-02 + + 1.2073499709367752e-01 -1.0291390419006348e+00 + <_> + + 0 -1 1799 -1.0141000151634216e-02 + + -5.2177202701568604e-01 3.3734999597072601e-02 + <_> + + 0 -1 1800 -1.8815999850630760e-02 + + 6.5181797742843628e-01 1.3399999588727951e-03 + <_> + + 0 -1 1801 -5.3480002097785473e-03 + + 1.7370699346065521e-01 -3.4132000803947449e-01 + <_> + + 0 -1 1802 -1.0847000405192375e-02 + + -1.9699899852275848e-01 1.5045499801635742e-01 + <_> + + 0 -1 1803 -4.9926001578569412e-02 + + -5.0888502597808838e-01 3.0762000009417534e-02 + <_> + + 0 -1 1804 1.2160000391304493e-02 + + -6.9251999258995056e-02 1.8745499849319458e-01 + <_> + + 0 -1 1805 -2.2189998999238014e-03 + + -4.0849098563194275e-01 7.9954996705055237e-02 + <_> + + 0 -1 1806 3.1580000650137663e-03 + + -2.1124599874019623e-01 2.2366400063037872e-01 + <_> + + 0 -1 1807 4.1439998894929886e-03 + + -4.9900299310684204e-01 6.2917001545429230e-02 + <_> + + 0 -1 1808 -7.3730000294744968e-03 + + -2.0553299784660339e-01 2.2096699476242065e-01 + <_> + + 0 -1 1809 5.1812000572681427e-02 + + 1.8096800148487091e-01 -4.3495801091194153e-01 + <_> + + 0 -1 1810 1.8340000882744789e-02 + + 1.5200000256299973e-02 3.7991699576377869e-01 + <_> + + 0 -1 1811 1.7490799725055695e-01 + + -2.0920799672603607e-01 4.0013000369071960e-01 + <_> + + 0 -1 1812 5.3993999958038330e-02 + + 2.4751600623130798e-01 -2.6712900400161743e-01 + <_> + + 0 -1 1813 -3.2033199071884155e-01 + + -1.9094380140304565e+00 -6.6960997879505157e-02 + <_> + + 0 -1 1814 -2.7060000225901604e-02 + + -7.1371299028396606e-01 1.5904599428176880e-01 + <_> + + 0 -1 1815 7.7463999390602112e-02 + + -1.6970199346542358e-01 7.7552998065948486e-01 + <_> + + 0 -1 1816 2.3771999403834343e-02 + + 1.9021899998188019e-01 -6.0162097215652466e-01 + <_> + + 0 -1 1817 1.1501000262796879e-02 + + 7.7039999887347221e-03 -6.1730301380157471e-01 + <_> + + 0 -1 1818 3.2616000622510910e-02 + + 1.7159199714660645e-01 -7.0978200435638428e-01 + <_> + + 0 -1 1819 -4.4383000582456589e-02 + + -2.2606229782104492e+00 -7.3276996612548828e-02 + <_> + + 0 -1 1820 -5.8476001024246216e-02 + + 2.4087750911712646e+00 8.3091996610164642e-02 + <_> + + 0 -1 1821 1.9303999841213226e-02 + + -2.7082300186157227e-01 2.7369999885559082e-01 + <_> + + 0 -1 1822 -4.4705998152494431e-02 + + 3.1355598568916321e-01 -6.2492001801729202e-02 + <_> + + 0 -1 1823 -6.0334999114274979e-02 + + -1.4515119791030884e+00 -5.8761000633239746e-02 + <_> + + 0 -1 1824 1.1667000129818916e-02 + + -1.8084999173879623e-02 5.0479698181152344e-01 + <_> + + 0 -1 1825 2.8009999543428421e-02 + + -2.3302899301052094e-01 3.0708700418472290e-01 + <_> + + 0 -1 1826 6.5397001802921295e-02 + + 1.4135900139808655e-01 -5.0010901689529419e-01 + <_> + + 0 -1 1827 9.6239997074007988e-03 + + -2.2054600715637207e-01 3.9191201329231262e-01 + <_> + + 0 -1 1828 2.5510000996291637e-03 + + -1.1381500214338303e-01 2.0032300055027008e-01 + <_> + + 0 -1 1829 3.1847000122070312e-02 + + 2.5476999580860138e-02 -5.3326398134231567e-01 + <_> + + 0 -1 1830 3.3055000007152557e-02 + + 1.7807699739933014e-01 -6.2793898582458496e-01 + <_> + + 0 -1 1831 4.7600999474525452e-02 + + -1.4747899770736694e-01 1.4204180240631104e+00 + <_> + + 0 -1 1832 -1.9571999087929726e-02 + + -5.2693498134613037e-01 1.5838600695133209e-01 + <_> + + 0 -1 1833 -5.4730001837015152e-02 + + 8.8231599330902100e-01 -1.6627800464630127e-01 + <_> + + 0 -1 1834 -2.2686000913381577e-02 + + -4.8386898636817932e-01 1.5000100433826447e-01 + <_> + + 0 -1 1835 1.0713200271129608e-01 + + -2.1336199343204498e-01 4.2333900928497314e-01 + <_> + + 0 -1 1836 -3.6380000412464142e-02 + + -7.4198000133037567e-02 1.4589400589466095e-01 + <_> + + 0 -1 1837 1.3935999944806099e-02 + + -2.4911600351333618e-01 2.6771199703216553e-01 + <_> + + 0 -1 1838 2.0991999655961990e-02 + + 8.7959999218583107e-03 4.3064999580383301e-01 + <_> + + 0 -1 1839 4.9118999391794205e-02 + + -1.7591999471187592e-01 6.9282901287078857e-01 + <_> + + 0 -1 1840 3.6315999925136566e-02 + + 1.3145299255847931e-01 -3.3597299456596375e-01 + <_> + + 0 -1 1841 4.1228000074625015e-02 + + -4.5692000538110733e-02 -1.3515930175781250e+00 + <_> + + 0 -1 1842 1.5672000125050545e-02 + + 1.7544099688529968e-01 -6.0550000518560410e-02 + <_> + + 0 -1 1843 -1.6286000609397888e-02 + + -1.1308189630508423e+00 -3.9533000439405441e-02 + <_> + + 0 -1 1844 -3.0229999683797359e-03 + + -2.2454300522804260e-01 2.3628099262714386e-01 + <_> + + 0 -1 1845 -1.3786299526691437e-01 + + 4.5376899838447571e-01 -2.1098700165748596e-01 + <_> + + 0 -1 1846 -9.6760001033544540e-03 + + -1.5105099976062775e-01 2.0781700313091278e-01 + <_> + + 0 -1 1847 -2.4839999154210091e-02 + + -6.8350297212600708e-01 -8.0040004104375839e-03 + <_> + + 0 -1 1848 -1.3964399695396423e-01 + + 6.5011298656463623e-01 4.6544000506401062e-02 + <_> + + 0 -1 1849 -8.2153998315334320e-02 + + 4.4887199997901917e-01 -2.3591999709606171e-01 + <_> + + 0 -1 1850 3.8449999410659075e-03 + + -8.8173002004623413e-02 2.7346798777580261e-01 + <_> + + 0 -1 1851 -6.6579999402165413e-03 + + -4.6866598725318909e-01 7.7001996338367462e-02 + <_> + + 0 -1 1852 -1.5898000448942184e-02 + + 2.9268398880958557e-01 -2.1941000595688820e-02 + <_> + + 0 -1 1853 -5.0946000963449478e-02 + + -1.2093789577484131e+00 -4.2109999805688858e-02 + <_> + + 0 -1 1854 1.6837999224662781e-02 + + -4.5595999807119370e-02 5.0180697441101074e-01 + <_> + + 0 -1 1855 1.5918999910354614e-02 + + -2.6904299855232239e-01 2.6516300439834595e-01 + <_> + + 0 -1 1856 3.6309999413788319e-03 + + -1.3046100735664368e-01 3.1807100772857666e-01 + <_> + + 0 -1 1857 -8.6144998669624329e-02 + + 1.9443659782409668e+00 -1.3978299498558044e-01 + <_> + + 0 -1 1858 3.3140998333692551e-02 + + 1.5266799926757812e-01 -3.0866000801324844e-02 + <_> + + 0 -1 1859 -3.9679999463260174e-03 + + -7.1202301979064941e-01 -1.3844000175595284e-02 + <_> + + 0 -1 1860 -2.4008000269532204e-02 + + 9.2007797956466675e-01 4.6723999083042145e-02 + <_> + + 0 -1 1861 8.7320003658533096e-03 + + -2.2567300498485565e-01 3.1931799650192261e-01 + <_> + + 0 -1 1862 -2.7786999940872192e-02 + + -7.2337102890014648e-01 1.7018599808216095e-01 + <_> + + 0 -1 1863 -1.9455300271511078e-01 + + 1.2461860179901123e+00 -1.4736199378967285e-01 + <_> + + 0 -1 1864 -1.0869699716567993e-01 + + -1.4465179443359375e+00 1.2145300209522247e-01 + <_> + + 0 -1 1865 -1.9494999200105667e-02 + + -7.8153097629547119e-01 -2.3732999339699745e-02 + <_> + + 0 -1 1866 3.0650000553578138e-03 + + -8.5471397638320923e-01 1.6686999797821045e-01 + <_> + + 0 -1 1867 5.9193998575210571e-02 + + -1.4853699505329132e-01 1.1273469924926758e+00 + <_> + + 0 -1 1868 -5.4207999259233475e-02 + + 5.4726999998092651e-01 3.5523999482393265e-02 + <_> + + 0 -1 1869 -3.9324998855590820e-02 + + 3.6642599105834961e-01 -2.0543999969959259e-01 + <_> + + 0 -1 1870 8.2278996706008911e-02 + + -3.5007998347282410e-02 5.3994202613830566e-01 + <_> + + 0 -1 1871 -7.4479999020695686e-03 + + -6.1537498235702515e-01 -3.5319998860359192e-03 + <_> + + 0 -1 1872 7.3770000599324703e-03 + + -6.5591000020503998e-02 4.1961398720741272e-01 + <_> + + 0 -1 1873 7.0779998786747456e-03 + + -3.4129500389099121e-01 1.2536799907684326e-01 + <_> + + 0 -1 1874 -1.5581999905407429e-02 + + -3.0240398645401001e-01 2.1511000394821167e-01 + <_> + + 0 -1 1875 -2.7399999089539051e-03 + + 7.6553001999855042e-02 -4.1060501337051392e-01 + <_> + + 0 -1 1876 -7.0600003004074097e-02 + + -9.7356200218200684e-01 1.1241800338029861e-01 + <_> + + 0 -1 1877 -1.1706000193953514e-02 + + 1.8560700118541718e-01 -2.9755198955535889e-01 + <_> + + 0 -1 1878 7.1499997284263372e-04 + + -5.9650000184774399e-02 2.4824699759483337e-01 + <_> + + 0 -1 1879 -3.6866001784801483e-02 + + 3.2751700282096863e-01 -2.3059600591659546e-01 + <_> + + 0 -1 1880 -3.2526999711990356e-02 + + -2.9320299625396729e-01 1.5427699685096741e-01 + <_> + + 0 -1 1881 -7.4813999235630035e-02 + + -1.2143570184707642e+00 -5.2244000136852264e-02 + <_> + + 0 -1 1882 4.1469998657703400e-02 + + 1.3062499463558197e-01 -2.3274369239807129e+00 + <_> + + 0 -1 1883 -2.8880000114440918e-02 + + -6.6074597835540771e-01 -9.0960003435611725e-03 + <_> + + 0 -1 1884 4.6381998807191849e-02 + + 1.6630199551582336e-01 -6.6949498653411865e-01 + <_> + + 0 -1 1885 2.5424998998641968e-01 + + -5.4641999304294586e-02 -1.2676080465316772e+00 + <_> + + 0 -1 1886 2.4000001139938831e-03 + + 2.0276799798011780e-01 1.4667999930679798e-02 + <_> + + 0 -1 1887 -8.2805998623371124e-02 + + -7.8713601827621460e-01 -2.4468999356031418e-02 + <_> + + 0 -1 1888 -1.1438000015914440e-02 + + 2.8623399138450623e-01 -3.0894000083208084e-02 + <_> + + 0 -1 1889 -1.2913399934768677e-01 + + 1.7292929887771606e+00 -1.4293900132179260e-01 + <_> + + 0 -1 1890 3.8552999496459961e-02 + + 1.9232999533414841e-02 3.7732601165771484e-01 + <_> + + 0 -1 1891 1.0191400349140167e-01 + + -7.4533998966217041e-02 -3.3868899345397949e+00 + <_> + + 0 -1 1892 -1.9068000838160515e-02 + + 3.1814101338386536e-01 1.9261000677943230e-02 + <_> + + 0 -1 1893 -6.0775000602006912e-02 + + 7.6936298608779907e-01 -1.7644000053405762e-01 + <_> + + 0 -1 1894 2.4679999798536301e-02 + + 1.8396499752998352e-01 -3.0868801474571228e-01 + <_> + + 0 -1 1895 2.6759000495076180e-02 + + -2.3454900085926056e-01 3.3056598901748657e-01 + <_> + + 0 -1 1896 1.4969999901950359e-02 + + 1.7213599383831024e-01 -1.8248899281024933e-01 + <_> + + 0 -1 1897 2.6142999529838562e-02 + + -4.6463999897241592e-02 -1.1318379640579224e+00 + <_> + + 0 -1 1898 -3.7512000650167465e-02 + + 8.0404001474380493e-01 6.9660000503063202e-02 + <_> + + 0 -1 1899 -5.3229997865855694e-03 + + -8.1884402036666870e-01 -1.8224999308586121e-02 + <_> + + 0 -1 1900 1.7813000828027725e-02 + + 1.4957800507545471e-01 -1.8667200207710266e-01 + <_> + + 0 -1 1901 -3.4010000526905060e-02 + + -7.2852301597595215e-01 -1.6615999862551689e-02 + <_> + + 0 -1 1902 -1.5953000634908676e-02 + + 5.6944000720977783e-01 1.3832000084221363e-02 + <_> + + 0 -1 1903 1.9743999466300011e-02 + + 4.0525000542402267e-02 -4.1773399710655212e-01 + <_> + + 0 -1 1904 -1.0374800115823746e-01 + + -1.9825149774551392e+00 1.1960200220346451e-01 + <_> + + 0 -1 1905 -1.9285000860691071e-02 + + 5.0230598449707031e-01 -1.9745899736881256e-01 + <_> + + 0 -1 1906 -1.2780000455677509e-02 + + 4.0195000171661377e-01 -2.6957999914884567e-02 + <_> + + 0 -1 1907 -1.6352999955415726e-02 + + -7.6608800888061523e-01 -2.4209000170230865e-02 + <_> + + 0 -1 1908 -1.2763699889183044e-01 + + 8.6578500270843506e-01 6.4205996692180634e-02 + <_> + + 0 -1 1909 1.9068999215960503e-02 + + -5.5929797887802124e-01 -1.6880000475794077e-03 + <_> + + 0 -1 1910 3.2480999827384949e-02 + + 4.0722001343965530e-02 4.8925098776817322e-01 + <_> + + 0 -1 1911 9.4849998131394386e-03 + + -1.9231900572776794e-01 5.1139700412750244e-01 + <_> + + 0 -1 1912 5.0470000132918358e-03 + + 1.8706800043582916e-01 -1.6113600134849548e-01 + <_> + + 0 -1 1913 4.1267998516559601e-02 + + -4.8817999660968781e-02 -1.1326299905776978e+00 + <_> + + 0 -1 1914 -7.6358996331691742e-02 + + 1.4169390201568604e+00 8.7319999933242798e-02 + <_> + + 0 -1 1915 -7.2834998369216919e-02 + + 1.3189860582351685e+00 -1.4819100499153137e-01 + <_> + + 0 -1 1916 5.9576999396085739e-02 + + 4.8376999795436859e-02 8.5611802339553833e-01 + <_> + + 0 -1 1917 2.0263999700546265e-02 + + -2.1044099330902100e-01 3.3858999609947205e-01 + <_> + + 0 -1 1918 -8.0301001667976379e-02 + + -1.2464400529861450e+00 1.1857099831104279e-01 + <_> + + 0 -1 1919 -1.7835000529885292e-02 + + 2.5782299041748047e-01 -2.4564799666404724e-01 + <_> + + 0 -1 1920 1.1431000195443630e-02 + + 2.2949799895286560e-01 -2.9497599601745605e-01 + <_> + + 0 -1 1921 -2.5541000068187714e-02 + + -8.6252999305725098e-01 -7.0400000549852848e-04 + <_> + + 0 -1 1922 -7.6899997657164931e-04 + + 3.1511399149894714e-01 -1.4349000155925751e-01 + <_> + + 0 -1 1923 -1.4453999698162079e-02 + + 2.5148499011993408e-01 -2.8232899308204651e-01 + <_> + + 0 -1 1924 8.6730001494288445e-03 + + 2.6601400971412659e-01 -2.8190800547599792e-01 + <_> + 197 + -3.2772979736328125e+00 + + <_> + + 0 -1 1925 5.4708998650312424e-02 + + -5.4144299030303955e-01 6.1043000221252441e-01 + <_> + + 0 -1 1926 -1.0838799923658371e-01 + + 7.1739900112152100e-01 -4.1196098923683167e-01 + <_> + + 0 -1 1927 2.2996999323368073e-02 + + -5.8269798755645752e-01 2.9645600914955139e-01 + <_> + + 0 -1 1928 2.7540000155568123e-03 + + -7.4243897199630737e-01 1.4183300733566284e-01 + <_> + + 0 -1 1929 -2.1520000882446766e-03 + + 1.7879900336265564e-01 -6.8548601865768433e-01 + <_> + + 0 -1 1930 -2.2559000179171562e-02 + + -1.0775549411773682e+00 1.2388999760150909e-01 + <_> + + 0 -1 1931 8.3025000989437103e-02 + + 2.4500999599695206e-02 -1.0251879692077637e+00 + <_> + + 0 -1 1932 -6.6740000620484352e-03 + + -4.5283100008964539e-01 2.1230199933052063e-01 + <_> + + 0 -1 1933 7.6485000550746918e-02 + + -2.6972699165344238e-01 4.8580199480056763e-01 + <_> + + 0 -1 1934 5.4910001344978809e-03 + + -4.8871201276779175e-01 3.1616398692131042e-01 + <_> + + 0 -1 1935 -1.0414999909698963e-02 + + 4.1512900590896606e-01 -3.0044800043106079e-01 + <_> + + 0 -1 1936 2.7607999742031097e-02 + + 1.6203799843788147e-01 -9.9868500232696533e-01 + <_> + + 0 -1 1937 -2.3272000253200531e-02 + + -1.1024399995803833e+00 2.1124999970197678e-02 + <_> + + 0 -1 1938 -5.5619999766349792e-02 + + 6.5033102035522461e-01 -2.7938000857830048e-02 + <_> + + 0 -1 1939 -4.0631998330354691e-02 + + 4.2117300629615784e-01 -2.6763799786567688e-01 + <_> + + 0 -1 1940 -7.3560001328587532e-03 + + 3.5277798771858215e-01 -3.7854000926017761e-01 + <_> + + 0 -1 1941 1.7007000744342804e-02 + + -2.9189500212669373e-01 4.1053798794746399e-01 + <_> + + 0 -1 1942 -3.7034001201391220e-02 + + -1.3216309547424316e+00 1.2966500222682953e-01 + <_> + + 0 -1 1943 -1.9633000716567039e-02 + + -8.7702298164367676e-01 1.0799999581649899e-03 + <_> + + 0 -1 1944 -2.3546999320387840e-02 + + 2.6106101274490356e-01 -2.1481400728225708e-01 + <_> + + 0 -1 1945 -4.3352998793125153e-02 + + -9.9089699983596802e-01 -9.9560003727674484e-03 + <_> + + 0 -1 1946 -2.2183999419212341e-02 + + 6.3454401493072510e-01 -5.6547001004219055e-02 + <_> + + 0 -1 1947 1.6530999913811684e-02 + + 2.4664999917149544e-02 -7.3326802253723145e-01 + <_> + + 0 -1 1948 -3.2744001597166061e-02 + + -5.6297200918197632e-01 1.6640299558639526e-01 + <_> + + 0 -1 1949 7.1415998041629791e-02 + + -3.0000001424923539e-04 -9.3286401033401489e-01 + <_> + + 0 -1 1950 8.0999999772757292e-04 + + -9.5380000770092010e-02 2.5184699892997742e-01 + <_> + + 0 -1 1951 -8.4090000018477440e-03 + + -6.5496802330017090e-01 6.7300997674465179e-02 + <_> + + 0 -1 1952 -1.7254000529646873e-02 + + -4.6492999792098999e-01 1.6070899367332458e-01 + <_> + + 0 -1 1953 -1.8641000613570213e-02 + + -1.0594010353088379e+00 -1.9617000594735146e-02 + <_> + + 0 -1 1954 -9.1979997232556343e-03 + + 5.0716197490692139e-01 -1.5339200198650360e-01 + <_> + + 0 -1 1955 1.8538000062108040e-02 + + -3.0498200654983521e-01 7.3506200313568115e-01 + <_> + + 0 -1 1956 -5.0335001200437546e-02 + + -1.1140480041503906e+00 1.8000100553035736e-01 + <_> + + 0 -1 1957 -2.3529000580310822e-02 + + -8.6907899379730225e-01 -1.2459999881684780e-02 + <_> + + 0 -1 1958 -2.7100000530481339e-02 + + 6.5942901372909546e-01 -3.5323999822139740e-02 + <_> + + 0 -1 1959 6.5879998728632927e-03 + + -2.2953400015830994e-01 4.2425099015235901e-01 + <_> + + 0 -1 1960 2.3360000923275948e-02 + + 1.8356199562549591e-01 -9.8587298393249512e-01 + <_> + + 0 -1 1961 1.2946999631822109e-02 + + -3.3147400617599487e-01 2.1323199570178986e-01 + <_> + + 0 -1 1962 -6.6559999249875546e-03 + + -1.1951400339603424e-01 2.9752799868583679e-01 + <_> + + 0 -1 1963 -2.2570999339222908e-02 + + 3.8499400019645691e-01 -2.4434499442577362e-01 + <_> + + 0 -1 1964 -6.3813999295234680e-02 + + -8.9383500814437866e-01 1.4217500388622284e-01 + <_> + + 0 -1 1965 -4.9945000559091568e-02 + + 5.3864401578903198e-01 -2.0485299825668335e-01 + <_> + + 0 -1 1966 6.8319998681545258e-03 + + -5.6678999215364456e-02 3.9970999956130981e-01 + <_> + + 0 -1 1967 -5.5835999548435211e-02 + + -1.5239470005035400e+00 -5.1183000206947327e-02 + <_> + + 0 -1 1968 3.1957000494003296e-01 + + 7.4574001133441925e-02 1.2447799444198608e+00 + <_> + + 0 -1 1969 8.0955997109413147e-02 + + -1.9665500521659851e-01 5.9889698028564453e-01 + <_> + + 0 -1 1970 -1.4911999925971031e-02 + + -6.4020597934722900e-01 1.5807600319385529e-01 + <_> + + 0 -1 1971 4.6709001064300537e-02 + + 8.5239000618457794e-02 -4.5487201213836670e-01 + <_> + + 0 -1 1972 6.0539999976754189e-03 + + -4.3184000253677368e-01 2.2452600300312042e-01 + <_> + + 0 -1 1973 -3.4375999122858047e-02 + + 4.0202501416206360e-01 -2.3903599381446838e-01 + <_> + + 0 -1 1974 -3.4924000501632690e-02 + + 5.2870100736618042e-01 3.9709001779556274e-02 + <_> + + 0 -1 1975 3.0030000489205122e-03 + + -3.8754299283027649e-01 1.4192600548267365e-01 + <_> + + 0 -1 1976 -1.4132999815046787e-02 + + 8.7528401613235474e-01 8.5507996380329132e-02 + <_> + + 0 -1 1977 -6.7940000444650650e-03 + + -1.1649219989776611e+00 -3.3943001180887222e-02 + <_> + + 0 -1 1978 -5.2886001765727997e-02 + + 1.0930680036544800e+00 5.1187001168727875e-02 + <_> + + 0 -1 1979 -2.1079999860376120e-03 + + 1.3696199655532837e-01 -3.3849999308586121e-01 + <_> + + 0 -1 1980 1.8353000283241272e-02 + + 1.3661600649356842e-01 -4.0777799487113953e-01 + <_> + + 0 -1 1981 1.2671999633312225e-02 + + -1.4936000108718872e-02 -8.1707501411437988e-01 + <_> + + 0 -1 1982 1.2924999929964542e-02 + + 1.7625099420547485e-01 -3.2491698861122131e-01 + <_> + + 0 -1 1983 -1.7921000719070435e-02 + + -5.2745401859283447e-01 4.4443000108003616e-02 + <_> + + 0 -1 1984 1.9160000374540687e-03 + + -1.0978599637746811e-01 2.2067500650882721e-01 + <_> + + 0 -1 1985 -1.4697999693453312e-02 + + 3.9067798852920532e-01 -2.2224999964237213e-01 + <_> + + 0 -1 1986 -1.4972999691963196e-02 + + -2.5450900197029114e-01 1.7790000140666962e-01 + <_> + + 0 -1 1987 1.4636999927461147e-02 + + -2.5125000625848770e-02 -8.7121301889419556e-01 + <_> + + 0 -1 1988 -1.0974000208079815e-02 + + 7.9082798957824707e-01 2.0121000707149506e-02 + <_> + + 0 -1 1989 -9.1599998995661736e-03 + + -4.7906899452209473e-01 5.2232000976800919e-02 + <_> + + 0 -1 1990 4.6179997734725475e-03 + + -1.7244599759578705e-01 3.4527799487113953e-01 + <_> + + 0 -1 1991 2.3476999253034592e-02 + + 3.7760001141577959e-03 -6.5333700180053711e-01 + <_> + + 0 -1 1992 3.1766999512910843e-02 + + 1.6364000737667084e-02 5.8723700046539307e-01 + <_> + + 0 -1 1993 -1.8419999629259109e-02 + + 1.9993899762630463e-01 -3.2056498527526855e-01 + <_> + + 0 -1 1994 1.9543999806046486e-02 + + 1.8450200557708740e-01 -2.3793600499629974e-01 + <_> + + 0 -1 1995 4.1159498691558838e-01 + + -6.0382001101970673e-02 -1.6072119474411011e+00 + <_> + + 0 -1 1996 -4.1595999151468277e-02 + + -3.2756200432777405e-01 1.5058000385761261e-01 + <_> + + 0 -1 1997 -1.0335999540984631e-02 + + -6.2394398450851440e-01 1.3112000189721584e-02 + <_> + + 0 -1 1998 1.2392999604344368e-02 + + -3.3114999532699585e-02 5.5579900741577148e-01 + <_> + + 0 -1 1999 -8.7270000949501991e-03 + + 1.9883200526237488e-01 -3.7635600566864014e-01 + <_> + + 0 -1 2000 1.6295000910758972e-02 + + 2.0373000204563141e-01 -4.2800799012184143e-01 + <_> + + 0 -1 2001 -1.0483999736607075e-02 + + -5.6847000122070312e-01 4.4199001044034958e-02 + <_> + + 0 -1 2002 -1.2431999668478966e-02 + + 7.4641901254653931e-01 4.3678998947143555e-02 + <_> + + 0 -1 2003 -5.0374999642372131e-02 + + 8.5090100765228271e-01 -1.7773799598217010e-01 + <_> + + 0 -1 2004 4.9548000097274780e-02 + + 1.6784900426864624e-01 -2.9877498745918274e-01 + <_> + + 0 -1 2005 -4.1085001081228256e-02 + + -1.3302919864654541e+00 -4.9182001501321793e-02 + <_> + + 0 -1 2006 1.0069999843835831e-03 + + -6.0538999736309052e-02 1.8483200669288635e-01 + <_> + + 0 -1 2007 -5.0142999738454819e-02 + + 7.6447701454162598e-01 -1.8356999754905701e-01 + <_> + + 0 -1 2008 -8.7879998609423637e-03 + + 2.2655999660491943e-01 -6.3156999647617340e-02 + <_> + + 0 -1 2009 -5.0170999020338058e-02 + + -1.5899070501327515e+00 -6.1255000531673431e-02 + <_> + + 0 -1 2010 1.0216099768877029e-01 + + 1.2071800231933594e-01 -1.4120110273361206e+00 + <_> + + 0 -1 2011 -1.4372999779880047e-02 + + -1.3116970062255859e+00 -5.1936000585556030e-02 + <_> + + 0 -1 2012 1.0281999595463276e-02 + + -2.1639999467879534e-03 4.4247201085090637e-01 + <_> + + 0 -1 2013 -1.1814000084996223e-02 + + 6.5378099679946899e-01 -1.8723699450492859e-01 + <_> + + 0 -1 2014 7.2114996612071991e-02 + + 7.1846999228000641e-02 8.1496298313140869e-01 + <_> + + 0 -1 2015 -1.9001999869942665e-02 + + -6.7427200078964233e-01 -4.3200000072829425e-04 + <_> + + 0 -1 2016 -4.6990001574158669e-03 + + 3.3311501145362854e-01 5.5794000625610352e-02 + <_> + + 0 -1 2017 -5.8157000690698624e-02 + + 4.5572298765182495e-01 -2.0305100083351135e-01 + <_> + + 0 -1 2018 1.1360000353306532e-03 + + -4.4686999171972275e-02 2.2681899368762970e-01 + <_> + + 0 -1 2019 -4.9414999783039093e-02 + + 2.6694598793983459e-01 -2.6116999983787537e-01 + <_> + + 0 -1 2020 -1.1913800239562988e-01 + + -8.3017998933792114e-01 1.3248500227928162e-01 + <_> + + 0 -1 2021 -1.8303999677300453e-02 + + -6.7499202489852905e-01 1.7092000693082809e-02 + <_> + + 0 -1 2022 -7.9199997708201408e-03 + + -7.2287000715732574e-02 1.4425800740718842e-01 + <_> + + 0 -1 2023 5.1925998181104660e-02 + + 3.0921999365091324e-02 -5.5860602855682373e-01 + <_> + + 0 -1 2024 6.6724002361297607e-02 + + 1.3666400313377380e-01 -2.9411000013351440e-01 + <_> + + 0 -1 2025 -1.3778000138700008e-02 + + -5.9443902969360352e-01 1.5300000086426735e-02 + <_> + + 0 -1 2026 -1.7760999500751495e-02 + + 4.0496501326560974e-01 -3.3559999428689480e-03 + <_> + + 0 -1 2027 -4.2234998196363449e-02 + + -1.0897940397262573e+00 -4.0224999189376831e-02 + <_> + + 0 -1 2028 -1.3524999842047691e-02 + + 2.8921899199485779e-01 -2.5194799900054932e-01 + <_> + + 0 -1 2029 -1.1106000281870365e-02 + + 6.5312802791595459e-01 -1.8053700029850006e-01 + <_> + + 0 -1 2030 -1.2284599989652634e-01 + + -1.9570649862289429e+00 1.4815400540828705e-01 + <_> + + 0 -1 2031 4.7715999186038971e-02 + + -2.2875599563121796e-01 3.4233701229095459e-01 + <_> + + 0 -1 2032 3.1817000359296799e-02 + + 1.5976299345493317e-01 -1.0091969966888428e+00 + <_> + + 0 -1 2033 4.2570000514388084e-03 + + -3.8881298899650574e-01 8.4210000932216644e-02 + <_> + + 0 -1 2034 -6.1372999101877213e-02 + + 1.7152810096740723e+00 5.9324998408555984e-02 + <_> + + 0 -1 2035 -2.7030000928789377e-03 + + -3.8161700963973999e-01 8.5127003490924835e-02 + <_> + + 0 -1 2036 -6.8544000387191772e-02 + + -3.0925889015197754e+00 1.1788000166416168e-01 + <_> + + 0 -1 2037 1.0372500121593475e-01 + + -1.3769300282001495e-01 1.9009410142898560e+00 + <_> + + 0 -1 2038 1.5799000859260559e-02 + + -6.2660001218318939e-02 2.5917699933052063e-01 + <_> + + 0 -1 2039 -9.8040001466870308e-03 + + -5.6291598081588745e-01 4.3923001736402512e-02 + <_> + + 0 -1 2040 -9.0229995548725128e-03 + + 2.5287100672721863e-01 -4.1225999593734741e-02 + <_> + + 0 -1 2041 -6.3754998147487640e-02 + + -2.6178569793701172e+00 -7.4005998671054840e-02 + <_> + + 0 -1 2042 3.8954999297857285e-02 + + 5.9032998979091644e-02 8.5945600271224976e-01 + <_> + + 0 -1 2043 -3.9802998304367065e-02 + + 9.3600499629974365e-01 -1.5639400482177734e-01 + <_> + + 0 -1 2044 5.0301998853683472e-02 + + 1.3725900650024414e-01 -2.5549728870391846e+00 + <_> + + 0 -1 2045 4.6250000596046448e-02 + + -1.3964000158011913e-02 -7.1026200056076050e-01 + <_> + + 0 -1 2046 6.2196001410484314e-02 + + 5.9526000171899796e-02 1.6509100198745728e+00 + <_> + + 0 -1 2047 -6.4776003360748291e-02 + + 7.1368998289108276e-01 -1.7270000278949738e-01 + <_> + + 0 -1 2048 2.7522999793291092e-02 + + 1.4631600677967072e-01 -8.1428997218608856e-02 + <_> + + 0 -1 2049 3.9900001138448715e-04 + + -3.7144500017166138e-01 1.0152699798345566e-01 + <_> + + 0 -1 2050 -4.3299999088048935e-03 + + -2.3756299912929535e-01 2.6798400282859802e-01 + <_> + + 0 -1 2051 4.7297000885009766e-02 + + -2.7682000771164894e-02 -8.4910297393798828e-01 + <_> + + 0 -1 2052 1.2508999556303024e-02 + + 1.8730199337005615e-01 -5.6001102924346924e-01 + <_> + + 0 -1 2053 4.5899000018835068e-02 + + -1.5601199865341187e-01 9.7073000669479370e-01 + <_> + + 0 -1 2054 1.9853399693965912e-01 + + 1.4895500242710114e-01 -1.1015529632568359e+00 + <_> + + 0 -1 2055 1.6674999147653580e-02 + + -1.6615299880504608e-01 8.2210999727249146e-01 + <_> + + 0 -1 2056 1.9829999655485153e-03 + + -7.1249999105930328e-02 2.8810900449752808e-01 + <_> + + 0 -1 2057 2.2447999566793442e-02 + + -2.0981000736355782e-02 -7.8416502475738525e-01 + <_> + + 0 -1 2058 -1.3913000002503395e-02 + + -1.8165799975395203e-01 2.0491799712181091e-01 + <_> + + 0 -1 2059 -7.7659999951720238e-03 + + -4.5595899224281311e-01 6.3576996326446533e-02 + <_> + + 0 -1 2060 -1.3209000229835510e-02 + + 2.6632300019264221e-01 -1.7795999348163605e-01 + <_> + + 0 -1 2061 4.9052998423576355e-02 + + -1.5476800501346588e-01 1.1069979667663574e+00 + <_> + + 0 -1 2062 2.0263999700546265e-02 + + 6.8915002048015594e-02 6.9867497682571411e-01 + <_> + + 0 -1 2063 -1.6828000545501709e-02 + + 2.7607199549674988e-01 -2.5139200687408447e-01 + <_> + + 0 -1 2064 -1.6939499974250793e-01 + + -3.0767529010772705e+00 1.1617500334978104e-01 + <_> + + 0 -1 2065 -1.1336100101470947e-01 + + -1.4639229774475098e+00 -5.1447000354528427e-02 + <_> + + 0 -1 2066 -7.7685996890068054e-02 + + 8.8430202007293701e-01 4.3306998908519745e-02 + <_> + + 0 -1 2067 -1.5568000264465809e-02 + + 1.3672499358654022e-01 -3.4505501389503479e-01 + <_> + + 0 -1 2068 -6.6018998622894287e-02 + + -1.0300110578536987e+00 1.1601399630308151e-01 + <_> + + 0 -1 2069 8.3699999377131462e-03 + + 7.6429001986980438e-02 -4.4002500176429749e-01 + <_> + + 0 -1 2070 3.5402998328208923e-02 + + 1.1979500204324722e-01 -7.2668302059173584e-01 + <_> + + 0 -1 2071 -3.9051000028848648e-02 + + 6.7375302314758301e-01 -1.8196000158786774e-01 + <_> + + 0 -1 2072 -9.7899995744228363e-03 + + 2.1264599263668060e-01 3.6756001412868500e-02 + <_> + + 0 -1 2073 -2.3047000169754028e-02 + + 4.4742199778556824e-01 -2.0986700057983398e-01 + <_> + + 0 -1 2074 3.1169999856501818e-03 + + 3.7544000893831253e-02 2.7808201313018799e-01 + <_> + + 0 -1 2075 1.3136000372469425e-02 + + -1.9842399656772614e-01 5.4335701465606689e-01 + <_> + + 0 -1 2076 1.4782000333070755e-02 + + 1.3530600070953369e-01 -1.1153600364923477e-01 + <_> + + 0 -1 2077 -6.0139000415802002e-02 + + 8.4039300680160522e-01 -1.6711600124835968e-01 + <_> + + 0 -1 2078 5.1998998969793320e-02 + + 1.7372000217437744e-01 -7.8547602891921997e-01 + <_> + + 0 -1 2079 2.4792000651359558e-02 + + -1.7739200592041016e-01 6.6752600669860840e-01 + <_> + + 0 -1 2080 -1.2014999985694885e-02 + + -1.4263699948787689e-01 1.6070500016212463e-01 + <_> + + 0 -1 2081 -9.8655998706817627e-02 + + 1.0429769754409790e+00 -1.5770199894905090e-01 + <_> + + 0 -1 2082 1.1758299916982651e-01 + + 1.0955700278282166e-01 -4.4920377731323242e+00 + <_> + + 0 -1 2083 -1.8922999501228333e-02 + + -7.8543400764465332e-01 1.2984000146389008e-02 + <_> + + 0 -1 2084 -2.8390999883413315e-02 + + -6.0569900274276733e-01 1.2903499603271484e-01 + <_> + + 0 -1 2085 1.3182999566197395e-02 + + -1.4415999874472618e-02 -7.3210501670837402e-01 + <_> + + 0 -1 2086 -1.1653000116348267e-01 + + -2.0442469120025635e+00 1.4053100347518921e-01 + <_> + + 0 -1 2087 -3.8880000356584787e-03 + + -4.1861599683761597e-01 7.8704997897148132e-02 + <_> + + 0 -1 2088 3.1229000538587570e-02 + + 2.4632999673485756e-02 4.1870400309562683e-01 + <_> + + 0 -1 2089 2.5198999792337418e-02 + + -1.7557799816131592e-01 6.4710599184036255e-01 + <_> + + 0 -1 2090 -2.8124000877141953e-02 + + -2.2005599737167358e-01 1.4121000468730927e-01 + <_> + + 0 -1 2091 3.6499001085758209e-02 + + -6.8426996469497681e-02 -2.3410849571228027e+00 + <_> + + 0 -1 2092 -7.2292998433113098e-02 + + 1.2898750305175781e+00 8.4875002503395081e-02 + <_> + + 0 -1 2093 -4.1671000421047211e-02 + + -1.1630970239639282e+00 -5.3752999752759933e-02 + <_> + + 0 -1 2094 4.7703001648187637e-02 + + 7.0101000368595123e-02 7.3676502704620361e-01 + <_> + + 0 -1 2095 6.5793000161647797e-02 + + -1.7755299806594849e-01 6.9780498743057251e-01 + <_> + + 0 -1 2096 1.3904999941587448e-02 + + 2.1936799585819244e-01 -2.0390799641609192e-01 + <_> + + 0 -1 2097 -2.7730999514460564e-02 + + 6.1867898702621460e-01 -1.7804099619388580e-01 + <_> + + 0 -1 2098 -1.5879999846220016e-02 + + -4.6484100818634033e-01 1.8828600645065308e-01 + <_> + + 0 -1 2099 7.4128001928329468e-02 + + -1.2858100235462189e-01 3.2792479991912842e+00 + <_> + + 0 -1 2100 -8.9000002481043339e-04 + + -3.0117601156234741e-01 2.3818799853324890e-01 + <_> + + 0 -1 2101 1.7965000122785568e-02 + + -2.2284999489784241e-01 2.9954001307487488e-01 + <_> + + 0 -1 2102 -2.5380000006407499e-03 + + 2.5064399838447571e-01 -1.3665600121021271e-01 + <_> + + 0 -1 2103 -9.0680001303553581e-03 + + 2.9017499089241028e-01 -2.8929701447486877e-01 + <_> + + 0 -1 2104 4.9169998615980148e-02 + + 1.9156399369239807e-01 -6.8328702449798584e-01 + <_> + + 0 -1 2105 -3.0680999159812927e-02 + + -7.5677001476287842e-01 -1.3279999606311321e-02 + <_> + + 0 -1 2106 1.0017400234937668e-01 + + 8.4453999996185303e-02 1.0888710021972656e+00 + <_> + + 0 -1 2107 3.1950001139193773e-03 + + -2.6919400691986084e-01 1.9537900388240814e-01 + <_> + + 0 -1 2108 3.5503000020980835e-02 + + 1.3632300496101379e-01 -5.6917202472686768e-01 + <_> + + 0 -1 2109 4.5900000259280205e-04 + + -4.0443998575210571e-01 1.4074799418449402e-01 + <_> + + 0 -1 2110 2.5258999317884445e-02 + + 1.6243200004100800e-01 -5.5741798877716064e-01 + <_> + + 0 -1 2111 -5.1549999043345451e-03 + + 3.1132599711418152e-01 -2.2756099700927734e-01 + <_> + + 0 -1 2112 1.5869999770075083e-03 + + -2.6867699623107910e-01 1.9565400481224060e-01 + <_> + + 0 -1 2113 -1.6204999759793282e-02 + + 1.5486499667167664e-01 -3.4057798981666565e-01 + <_> + + 0 -1 2114 -2.9624000191688538e-02 + + 1.1466799974441528e+00 9.0557999908924103e-02 + <_> + + 0 -1 2115 -1.5930000226944685e-03 + + -7.1257501840591431e-01 -7.0400000549852848e-04 + <_> + + 0 -1 2116 -5.4019000381231308e-02 + + 4.1537499427795410e-01 2.7246000245213509e-02 + <_> + + 0 -1 2117 -6.6211000084877014e-02 + + -1.3340090513229370e+00 -4.7352999448776245e-02 + <_> + + 0 -1 2118 2.7940999716520309e-02 + + 1.4446300268173218e-01 -5.1518398523330688e-01 + <_> + + 0 -1 2119 2.8957000002264977e-02 + + -4.9966000020503998e-02 -1.1929039955139160e+00 + <_> + + 0 -1 2120 -2.0424999296665192e-02 + + 6.3881301879882812e-01 3.8141001015901566e-02 + <_> + + 0 -1 2121 1.2416999787092209e-02 + + -2.1547000110149384e-01 4.9477699398994446e-01 + <_> + 181 + -3.3196411132812500e+00 + + <_> + + 0 -1 2122 4.3274000287055969e-02 + + -8.0494397878646851e-01 3.9897298812866211e-01 + <_> + + 0 -1 2123 1.8615500628948212e-01 + + -3.1655299663543701e-01 6.8877297639846802e-01 + <_> + + 0 -1 2124 3.1860999763011932e-02 + + -6.4266198873519897e-01 2.5550898909568787e-01 + <_> + + 0 -1 2125 1.4022000133991241e-02 + + -4.5926600694656372e-01 3.1171199679374695e-01 + <_> + + 0 -1 2126 -6.3029997982084751e-03 + + 4.6026900410652161e-01 -2.7438500523567200e-01 + <_> + + 0 -1 2127 -5.4310001432895660e-03 + + 3.6608600616455078e-01 -2.7205801010131836e-01 + <_> + + 0 -1 2128 1.6822999343276024e-02 + + 2.3476999253034592e-02 -8.8443797826766968e-01 + <_> + + 0 -1 2129 2.6039000600576401e-02 + + 1.7488799989223480e-01 -5.4564702510833740e-01 + <_> + + 0 -1 2130 -2.6720000430941582e-02 + + -9.6396499872207642e-01 2.3524999618530273e-02 + <_> + + 0 -1 2131 -1.7041999846696854e-02 + + -7.0848798751831055e-01 2.1468099951744080e-01 + <_> + + 0 -1 2132 5.9569999575614929e-03 + + 7.3601000010967255e-02 -6.8225598335266113e-01 + <_> + + 0 -1 2133 -2.8679999522864819e-03 + + -7.4935001134872437e-01 2.3803399503231049e-01 + <_> + + 0 -1 2134 -4.3774999678134918e-02 + + 6.8323302268981934e-01 -2.1380299329757690e-01 + <_> + + 0 -1 2135 5.1633000373840332e-02 + + -1.2566499412059784e-01 6.7523801326751709e-01 + <_> + + 0 -1 2136 8.1780003383755684e-03 + + 7.0689998567104340e-02 -8.0665898323059082e-01 + <_> + + 0 -1 2137 -5.2841998636722565e-02 + + 9.5433902740478516e-01 1.6548000276088715e-02 + <_> + + 0 -1 2138 5.2583999931812286e-02 + + -2.8414401412010193e-01 4.7129800915718079e-01 + <_> + + 0 -1 2139 -1.2659000232815742e-02 + + 3.8445401191711426e-01 -6.2288001179695129e-02 + <_> + + 0 -1 2140 1.1694000102579594e-02 + + 5.6000000768108293e-05 -1.0173139572143555e+00 + <_> + + 0 -1 2141 -2.3918999359011650e-02 + + 8.4921300411224365e-01 5.7399999350309372e-03 + <_> + + 0 -1 2142 -6.1673998832702637e-02 + + -9.2571401596069336e-01 -1.7679999582469463e-03 + <_> + + 0 -1 2143 -1.8279999494552612e-03 + + -5.4372298717498779e-01 2.4932399392127991e-01 + <_> + + 0 -1 2144 3.5257998853921890e-02 + + -7.3719997890293598e-03 -9.3963998556137085e-01 + <_> + + 0 -1 2145 -1.8438000231981277e-02 + + 7.2136700153350830e-01 1.0491999797523022e-02 + <_> + + 0 -1 2146 -3.8389001041650772e-02 + + 1.9272600114345551e-01 -3.5832101106643677e-01 + <_> + + 0 -1 2147 9.9720999598503113e-02 + + 1.1354199796915054e-01 -1.6304190158843994e+00 + <_> + + 0 -1 2148 8.4462001919746399e-02 + + -5.3420998156070709e-02 -1.6981120109558105e+00 + <_> + + 0 -1 2149 4.0270000696182251e-02 + + -1.0783199965953827e-01 5.1926600933074951e-01 + <_> + + 0 -1 2150 5.8935999870300293e-02 + + -1.8053700029850006e-01 9.5119798183441162e-01 + <_> + + 0 -1 2151 1.4957000315189362e-01 + + 1.6785299777984619e-01 -1.1591869592666626e+00 + <_> + + 0 -1 2152 6.9399998756125569e-04 + + 2.0491400361061096e-01 -3.3118200302124023e-01 + <_> + + 0 -1 2153 -3.3369001001119614e-02 + + 9.3468099832534790e-01 -2.9639999847859144e-03 + <_> + + 0 -1 2154 9.3759996816515923e-03 + + 3.7000000011175871e-03 -7.7549797296524048e-01 + <_> + + 0 -1 2155 4.3193999677896500e-02 + + -2.2040000185370445e-03 7.4589699506759644e-01 + <_> + + 0 -1 2156 -6.7555002868175507e-02 + + 7.2292101383209229e-01 -1.8404200673103333e-01 + <_> + + 0 -1 2157 -3.1168600916862488e-01 + + 1.0014270544052124e+00 3.4003000706434250e-02 + <_> + + 0 -1 2158 2.9743999242782593e-02 + + -4.6356000006198883e-02 -1.2781809568405151e+00 + <_> + + 0 -1 2159 1.0737000033259392e-02 + + 1.4812000095844269e-02 6.6649997234344482e-01 + <_> + + 0 -1 2160 -2.8841000050306320e-02 + + -9.4222599267959595e-01 -2.0796999335289001e-02 + <_> + + 0 -1 2161 -5.7649998925626278e-03 + + -4.3541899323463440e-01 2.3386000096797943e-01 + <_> + + 0 -1 2162 2.8410999104380608e-02 + + -1.7615799605846405e-01 8.5765302181243896e-01 + <_> + + 0 -1 2163 -2.9007999226450920e-02 + + 5.7978099584579468e-01 2.8565999120473862e-02 + <_> + + 0 -1 2164 2.4965999647974968e-02 + + -2.2729000076651573e-02 -9.6773099899291992e-01 + <_> + + 0 -1 2165 1.2036000378429890e-02 + + -1.4214700460433960e-01 5.1687997579574585e-01 + <_> + + 0 -1 2166 -4.2514000087976456e-02 + + 9.7273802757263184e-01 -1.8119800090789795e-01 + <_> + + 0 -1 2167 1.0276000015437603e-02 + + -8.3099998533725739e-02 3.1762799620628357e-01 + <_> + + 0 -1 2168 -6.9191999733448029e-02 + + -2.0668580532073975e+00 -6.0173999518156052e-02 + <_> + + 0 -1 2169 -4.6769999898970127e-03 + + 4.4131800532341003e-01 2.3209000006318092e-02 + <_> + + 0 -1 2170 -1.3923999853432178e-02 + + 2.8606700897216797e-01 -2.9152700304985046e-01 + <_> + + 0 -1 2171 -1.5333999879658222e-02 + + -5.7414501905441284e-01 2.3063300549983978e-01 + <_> + + 0 -1 2172 -1.0239000432193279e-02 + + 3.4479200839996338e-01 -2.6080399751663208e-01 + <_> + + 0 -1 2173 -5.0988998264074326e-02 + + 5.6154102087020874e-01 6.1218999326229095e-02 + <_> + + 0 -1 2174 3.0689999461174011e-02 + + -1.4772799611091614e-01 1.6378489732742310e+00 + <_> + + 0 -1 2175 -1.1223999783396721e-02 + + 2.4006199836730957e-01 -4.4864898920059204e-01 + <_> + + 0 -1 2176 -6.2899999320507050e-03 + + 4.3119499087333679e-01 -2.3808999359607697e-01 + <_> + + 0 -1 2177 7.8590996563434601e-02 + + 1.9865000620484352e-02 8.0853801965713501e-01 + <_> + + 0 -1 2178 -1.0178999975323677e-02 + + 1.8193200230598450e-01 -3.2877799868583679e-01 + <_> + + 0 -1 2179 3.1227000057697296e-02 + + 1.4973899722099304e-01 -1.4180339574813843e+00 + <_> + + 0 -1 2180 4.0196999907493591e-02 + + -1.9760499894618988e-01 5.8508199453353882e-01 + <_> + + 0 -1 2181 1.6138000413775444e-02 + + 5.0000002374872565e-04 3.9050000905990601e-01 + <_> + + 0 -1 2182 -4.5519001781940460e-02 + + 1.2646820545196533e+00 -1.5632599592208862e-01 + <_> + + 0 -1 2183 -1.8130000680685043e-02 + + 6.5148502588272095e-01 1.0235999710857868e-02 + <_> + + 0 -1 2184 -1.4001999981701374e-02 + + -1.0344820022583008e+00 -3.2182998955249786e-02 + <_> + + 0 -1 2185 -3.8816001266241074e-02 + + -4.7874298691749573e-01 1.6290700435638428e-01 + <_> + + 0 -1 2186 3.1656000763177872e-02 + + -2.0983399450778961e-01 5.4575902223587036e-01 + <_> + + 0 -1 2187 -1.0839999653398991e-02 + + 5.1898801326751709e-01 -1.5080000273883343e-02 + <_> + + 0 -1 2188 1.2032999657094479e-02 + + -2.1107600629329681e-01 7.5937002897262573e-01 + <_> + + 0 -1 2189 7.0772998034954071e-02 + + 1.8048800528049469e-01 -7.4048501253128052e-01 + <_> + + 0 -1 2190 5.3139799833297729e-01 + + -1.4491699635982513e-01 1.5360039472579956e+00 + <_> + + 0 -1 2191 -1.4774000272154808e-02 + + -2.8153699636459351e-01 2.0407299697399139e-01 + <_> + + 0 -1 2192 -2.2410000674426556e-03 + + -4.4876301288604736e-01 5.3989000618457794e-02 + <_> + + 0 -1 2193 4.9968000501394272e-02 + + 4.1514001786708832e-02 2.9417100548744202e-01 + <_> + + 0 -1 2194 -4.7701999545097351e-02 + + 3.9674299955368042e-01 -2.8301799297332764e-01 + <_> + + 0 -1 2195 -9.1311000287532806e-02 + + 2.1994259357452393e+00 8.7964996695518494e-02 + <_> + + 0 -1 2196 3.8070000708103180e-02 + + -2.8025600314140320e-01 2.5156199932098389e-01 + <_> + + 0 -1 2197 -1.5538999810814857e-02 + + 3.4157499670982361e-01 1.7924999818205833e-02 + <_> + + 0 -1 2198 -1.5445999801158905e-02 + + 2.8680199384689331e-01 -2.5135898590087891e-01 + <_> + + 0 -1 2199 -5.7388000190258026e-02 + + 6.3830000162124634e-01 8.8597998023033142e-02 + <_> + + 0 -1 2200 -5.9440000914037228e-03 + + 7.9016998410224915e-02 -4.0774899721145630e-01 + <_> + + 0 -1 2201 -6.9968998432159424e-02 + + -4.4644200801849365e-01 1.7219600081443787e-01 + <_> + + 0 -1 2202 -2.5064999237656593e-02 + + -9.8270201683044434e-01 -3.5388000309467316e-02 + <_> + + 0 -1 2203 1.7216000705957413e-02 + + 2.2705900669097900e-01 -8.0550098419189453e-01 + <_> + + 0 -1 2204 -4.4279001653194427e-02 + + 8.3951997756958008e-01 -1.7429600656032562e-01 + <_> + + 0 -1 2205 4.3988998979330063e-02 + + 1.1557199805974960e-01 -1.9666889905929565e+00 + <_> + + 0 -1 2206 1.5907000750303268e-02 + + -3.7576001137495041e-02 -1.0311100482940674e+00 + <_> + + 0 -1 2207 -9.2754997313022614e-02 + + -1.3530019521713257e+00 1.2141299992799759e-01 + <_> + + 0 -1 2208 7.1037001907825470e-02 + + -1.7684300243854523e-01 7.4485200643539429e-01 + <_> + + 0 -1 2209 5.7762000709772110e-02 + + 1.2835599482059479e-01 -4.4444200396537781e-01 + <_> + + 0 -1 2210 -1.6432000324130058e-02 + + 8.0152702331542969e-01 -1.7491699755191803e-01 + <_> + + 0 -1 2211 2.3939000442624092e-02 + + 1.6144999861717224e-01 -1.2364500015974045e-01 + <_> + + 0 -1 2212 1.2636000290513039e-02 + + 1.5411999821662903e-01 -3.3293798565864563e-01 + <_> + + 0 -1 2213 -5.4347999393939972e-02 + + -1.8400700092315674e+00 1.4835999906063080e-01 + <_> + + 0 -1 2214 -1.3261999934911728e-02 + + -8.0838799476623535e-01 -2.7726000174880028e-02 + <_> + + 0 -1 2215 6.1340001411736012e-03 + + -1.3785000145435333e-01 3.2858499884605408e-01 + <_> + + 0 -1 2216 2.8991000726819038e-02 + + -2.5516999885439873e-02 -8.3387202024459839e-01 + <_> + + 0 -1 2217 -2.1986000239849091e-02 + + -7.3739999532699585e-01 1.7887100577354431e-01 + <_> + + 0 -1 2218 5.3269998170435429e-03 + + -4.5449298620223999e-01 6.8791002035140991e-02 + <_> + + 0 -1 2219 8.6047999560832977e-02 + + 2.1008500456809998e-01 -3.7808901071548462e-01 + <_> + + 0 -1 2220 -8.5549997165799141e-03 + + 4.0134999155998230e-01 -2.1074099838733673e-01 + <_> + + 0 -1 2221 6.7790001630783081e-03 + + -2.1648999303579330e-02 4.5421499013900757e-01 + <_> + + 0 -1 2222 -6.3959998078644276e-03 + + -4.9818599224090576e-01 7.5907997786998749e-02 + <_> + + 0 -1 2223 8.9469999074935913e-03 + + 1.7857700586318970e-01 -2.8454899787902832e-01 + <_> + + 0 -1 2224 3.2589999027550220e-03 + + 4.6624999493360519e-02 -5.5206298828125000e-01 + <_> + + 0 -1 2225 4.1476998478174210e-02 + + 1.7550499737262726e-01 -2.0703999698162079e-01 + <_> + + 0 -1 2226 -6.7449999041855335e-03 + + -4.6392598748207092e-01 6.9303996860980988e-02 + <_> + + 0 -1 2227 3.0564999207854271e-02 + + 5.1734998822212219e-02 7.5550502538681030e-01 + <_> + + 0 -1 2228 -7.4780001305043697e-03 + + 1.4893899857997894e-01 -3.1906801462173462e-01 + <_> + + 0 -1 2229 8.9088998734951019e-02 + + 1.3738800585269928e-01 -1.1379710435867310e+00 + <_> + + 0 -1 2230 7.3230001144111156e-03 + + -2.8829199075698853e-01 1.9088600575923920e-01 + <_> + + 0 -1 2231 -1.8205000087618828e-02 + + -3.0178600549697876e-01 1.6795800626277924e-01 + <_> + + 0 -1 2232 -2.5828000158071518e-02 + + -9.8137998580932617e-01 -1.9860999658703804e-02 + <_> + + 0 -1 2233 1.0936199873685837e-01 + + 4.8790000379085541e-02 5.3118300437927246e-01 + <_> + + 0 -1 2234 -1.1424999684095383e-02 + + 2.3705999553203583e-01 -2.7925300598144531e-01 + <_> + + 0 -1 2235 -5.7565998286008835e-02 + + 4.7255399823188782e-01 6.5171003341674805e-02 + <_> + + 0 -1 2236 1.0278300195932388e-01 + + -2.0765100419521332e-01 5.0947701930999756e-01 + <_> + + 0 -1 2237 2.7041999623179436e-02 + + 1.6421200335025787e-01 -1.4508620500564575e+00 + <_> + + 0 -1 2238 -1.3635000213980675e-02 + + -5.6543898582458496e-01 2.3788999766111374e-02 + <_> + + 0 -1 2239 -3.2158198952674866e-01 + + -3.5602829456329346e+00 1.1801300197839737e-01 + <_> + + 0 -1 2240 2.0458100736141205e-01 + + -3.7016000598669052e-02 -1.0225499868392944e+00 + <_> + + 0 -1 2241 -7.0347003638744354e-02 + + -5.6491899490356445e-01 1.8525199592113495e-01 + <_> + + 0 -1 2242 3.7831000983715057e-02 + + -2.9901999980211258e-02 -8.2921499013900757e-01 + <_> + + 0 -1 2243 -7.0298001170158386e-02 + + -5.3172302246093750e-01 1.4430199563503265e-01 + <_> + + 0 -1 2244 6.3221000134944916e-02 + + -2.2041200101375580e-01 4.7952198982238770e-01 + <_> + + 0 -1 2245 3.6393001675605774e-02 + + 1.4222699403762817e-01 -6.1193901300430298e-01 + <_> + + 0 -1 2246 4.0099998004734516e-03 + + -3.4560799598693848e-01 1.1738699674606323e-01 + <_> + + 0 -1 2247 -4.9106001853942871e-02 + + 9.5984101295471191e-01 6.4934998750686646e-02 + <_> + + 0 -1 2248 -7.1583002805709839e-02 + + 1.7385669946670532e+00 -1.4252899587154388e-01 + <_> + + 0 -1 2249 -3.8008999079465866e-02 + + 1.3872820138931274e+00 6.6188000142574310e-02 + <_> + + 0 -1 2250 -3.1570000573992729e-03 + + 5.3677000105381012e-02 -5.4048001766204834e-01 + <_> + + 0 -1 2251 1.9458999857306480e-02 + + -9.3620002269744873e-02 3.9131000638008118e-01 + <_> + + 0 -1 2252 1.1293999850749969e-02 + + 3.7223998457193375e-02 -5.4251801967620850e-01 + <_> + + 0 -1 2253 -3.3495001494884491e-02 + + 9.5307898521423340e-01 3.7696998566389084e-02 + <_> + + 0 -1 2254 9.2035003006458282e-02 + + -1.3488399982452393e-01 2.2897069454193115e+00 + <_> + + 0 -1 2255 3.7529999390244484e-03 + + 2.2824199497699738e-01 -5.9983700513839722e-01 + <_> + + 0 -1 2256 1.2848000042140484e-02 + + -2.2005200386047363e-01 3.7221899628639221e-01 + <_> + + 0 -1 2257 -1.4316199719905853e-01 + + 1.2855789661407471e+00 4.7237001359462738e-02 + <_> + + 0 -1 2258 -9.6879996359348297e-02 + + -3.9550929069519043e+00 -7.2903998196125031e-02 + <_> + + 0 -1 2259 -8.8459998369216919e-03 + + 3.7674999237060547e-01 -4.6484000980854034e-02 + <_> + + 0 -1 2260 1.5900000929832458e-02 + + -2.4457000195980072e-02 -8.0034798383712769e-01 + <_> + + 0 -1 2261 7.0372000336647034e-02 + + 1.7019000649452209e-01 -6.3068997859954834e-01 + <_> + + 0 -1 2262 -3.7953998893499374e-02 + + -9.3667197227478027e-01 -4.1214000433683395e-02 + <_> + + 0 -1 2263 5.1597899198532104e-01 + + 1.3080599904060364e-01 -1.5802290439605713e+00 + <_> + + 0 -1 2264 -3.2843001186847687e-02 + + -1.1441620588302612e+00 -4.9173999577760696e-02 + <_> + + 0 -1 2265 -3.6357000470161438e-02 + + 4.9606400728225708e-01 -3.4458998590707779e-02 + <_> + + 0 -1 2266 6.8080001510679722e-03 + + -3.0997800827026367e-01 1.7054800689220428e-01 + <_> + + 0 -1 2267 -1.6114000231027603e-02 + + -3.7904599308967590e-01 1.6078999638557434e-01 + <_> + + 0 -1 2268 8.4530003368854523e-03 + + -1.8655499815940857e-01 5.6367701292037964e-01 + <_> + + 0 -1 2269 -1.3752399384975433e-01 + + -5.8989900350570679e-01 1.1749500036239624e-01 + <_> + + 0 -1 2270 1.7688000202178955e-01 + + -1.5424899756908417e-01 9.2911100387573242e-01 + <_> + + 0 -1 2271 7.9309996217489243e-03 + + 3.2190701365470886e-01 -1.6392600536346436e-01 + <_> + + 0 -1 2272 1.0971800237894058e-01 + + -1.5876500308513641e-01 1.0186259746551514e+00 + <_> + + 0 -1 2273 -3.0293000862002373e-02 + + 7.5587302446365356e-01 3.1794998794794083e-02 + <_> + + 0 -1 2274 -2.3118000477552414e-02 + + -8.8451498746871948e-01 -9.5039997249841690e-03 + <_> + + 0 -1 2275 -3.0900000128895044e-03 + + 2.3838299512863159e-01 -1.1606200039386749e-01 + <_> + + 0 -1 2276 -3.3392000943422318e-02 + + -1.8738139867782593e+00 -6.8502999842166901e-02 + <_> + + 0 -1 2277 1.3190000317990780e-02 + + 1.2919899821281433e-01 -6.7512202262878418e-01 + <_> + + 0 -1 2278 1.4661000110208988e-02 + + -2.4829000234603882e-02 -7.4396800994873047e-01 + <_> + + 0 -1 2279 -1.3248000293970108e-02 + + 4.6820199489593506e-01 -2.4165000766515732e-02 + <_> + + 0 -1 2280 -1.6218999400734901e-02 + + 4.0083798766136169e-01 -2.1255700290203094e-01 + <_> + + 0 -1 2281 -2.9052000492811203e-02 + + -1.5650019645690918e+00 1.4375899732112885e-01 + <_> + + 0 -1 2282 -1.0153199732303619e-01 + + -1.9220689535140991e+00 -6.9559998810291290e-02 + <_> + + 0 -1 2283 3.7753999233245850e-02 + + 1.3396799564361572e-01 -2.2639141082763672e+00 + <_> + + 0 -1 2284 -2.8555598855018616e-01 + + 1.0215270519256592e+00 -1.5232199430465698e-01 + <_> + + 0 -1 2285 1.5360699594020844e-01 + + -9.7409002482891083e-02 4.1662400960922241e-01 + <_> + + 0 -1 2286 -2.1199999901000410e-04 + + 1.1271899938583374e-01 -4.1653999686241150e-01 + <_> + + 0 -1 2287 -2.0597999915480614e-02 + + 6.0540497303009033e-01 6.2467999756336212e-02 + <_> + + 0 -1 2288 3.7353999912738800e-02 + + -1.8919000029563904e-01 4.6464699506759644e-01 + <_> + + 0 -1 2289 5.7275000959634781e-02 + + 1.1565300077199936e-01 -1.3213009834289551e+00 + <_> + + 0 -1 2290 5.1029999740421772e-03 + + -2.8061500191688538e-01 1.9313399493694305e-01 + <_> + + 0 -1 2291 -5.4644998162984848e-02 + + 7.2428500652313232e-01 7.5447998940944672e-02 + <_> + + 0 -1 2292 2.5349000468850136e-02 + + -1.9481800496578217e-01 4.6032801270484924e-01 + <_> + + 0 -1 2293 2.4311000481247902e-02 + + 1.5564100444316864e-01 -4.9913901090621948e-01 + <_> + + 0 -1 2294 3.5962000489234924e-02 + + -5.8573000133037567e-02 -1.5418399572372437e+00 + <_> + + 0 -1 2295 -1.0000699758529663e-01 + + -1.6100039482116699e+00 1.1450500041246414e-01 + <_> + + 0 -1 2296 8.4435999393463135e-02 + + -6.1406999826431274e-02 -1.4673349857330322e+00 + <_> + + 0 -1 2297 1.5947999432682991e-02 + + 1.6287900507450104e-01 -1.1026400327682495e-01 + <_> + + 0 -1 2298 3.3824000507593155e-02 + + -1.7932699620723724e-01 5.7218402624130249e-01 + <_> + + 0 -1 2299 -6.1996001750230789e-02 + + 4.6511812210083008e+00 9.4534002244472504e-02 + <_> + + 0 -1 2300 6.9876998662948608e-02 + + -1.6985900700092316e-01 8.7028998136520386e-01 + <_> + + 0 -1 2301 -2.7916999533772469e-02 + + 9.1042500734329224e-01 5.6827001273632050e-02 + <_> + + 0 -1 2302 -1.2764000333845615e-02 + + 2.2066700458526611e-01 -2.7769100666046143e-01 + <_> + 199 + -3.2573320865631104e+00 + + <_> + + 0 -1 2303 2.1662000566720963e-02 + + -8.9868897199630737e-01 2.9436299204826355e-01 + <_> + + 0 -1 2304 1.0044500231742859e-01 + + -3.7659201025962830e-01 6.0891002416610718e-01 + <_> + + 0 -1 2305 2.6003999635577202e-02 + + -3.8128501176834106e-01 3.9217400550842285e-01 + <_> + + 0 -1 2306 2.8441000729799271e-02 + + -1.8182300031185150e-01 5.8927202224731445e-01 + <_> + + 0 -1 2307 3.8612000644207001e-02 + + -2.2399599850177765e-01 6.3779997825622559e-01 + <_> + + 0 -1 2308 -4.6594999730587006e-02 + + 7.0812201499938965e-01 -1.4666199684143066e-01 + <_> + + 0 -1 2309 -4.2791999876499176e-02 + + 4.7680398821830750e-01 -2.9233199357986450e-01 + <_> + + 0 -1 2310 3.7960000336170197e-03 + + -1.8510299921035767e-01 5.2626699209213257e-01 + <_> + + 0 -1 2311 4.2348999530076981e-02 + + 3.9244998246431351e-02 -8.9197701215744019e-01 + <_> + + 0 -1 2312 1.9598999992012978e-02 + + -2.3358400166034698e-01 4.4146499037742615e-01 + <_> + + 0 -1 2313 8.7400001939386129e-04 + + -4.6063598990440369e-01 1.7689600586891174e-01 + <_> + + 0 -1 2314 -4.3629999272525311e-03 + + 3.3493199944496155e-01 -2.9893401265144348e-01 + <_> + + 0 -1 2315 1.6973000019788742e-02 + + -1.6408699750900269e-01 1.5993679761886597e+00 + <_> + + 0 -1 2316 3.6063998937606812e-02 + + 2.2601699829101562e-01 -5.3186100721359253e-01 + <_> + + 0 -1 2317 -7.0864997804164886e-02 + + 1.5220500528812408e-01 -4.1914600133895874e-01 + <_> + + 0 -1 2318 -6.3075996935367584e-02 + + -1.4874019622802734e+00 1.2953700125217438e-01 + <_> + + 0 -1 2319 2.9670000076293945e-02 + + -1.9145900011062622e-01 9.8184901475906372e-01 + <_> + + 0 -1 2320 3.7873998284339905e-02 + + 1.3459500670433044e-01 -5.6316298246383667e-01 + <_> + + 0 -1 2321 -3.3289000391960144e-02 + + -1.0828030109405518e+00 -1.1504000052809715e-02 + <_> + + 0 -1 2322 -3.1608998775482178e-02 + + -5.9224498271942139e-01 1.3394799828529358e-01 + <_> + + 0 -1 2323 1.0740000288933516e-03 + + -4.9185800552368164e-01 9.4446003437042236e-02 + <_> + + 0 -1 2324 -7.1556001901626587e-02 + + 5.9710198640823364e-01 -3.9553001523017883e-02 + <_> + + 0 -1 2325 -8.1170000135898590e-02 + + -1.1817820072174072e+00 -2.8254000470042229e-02 + <_> + + 0 -1 2326 4.4860001653432846e-03 + + -6.1028099060058594e-01 2.2619099915027618e-01 + <_> + + 0 -1 2327 -4.2176000773906708e-02 + + -1.1435619592666626e+00 -2.9001999646425247e-02 + <_> + + 0 -1 2328 -6.5640002489089966e-02 + + -1.6470279693603516e+00 1.2810300290584564e-01 + <_> + + 0 -1 2329 1.8188999965786934e-02 + + -3.1149399280548096e-01 2.5739601254463196e-01 + <_> + + 0 -1 2330 -5.1520001143217087e-02 + + -6.9206899404525757e-01 1.5270799398422241e-01 + <_> + + 0 -1 2331 -4.7150999307632446e-02 + + -7.1868300437927246e-01 2.6879999786615372e-03 + <_> + + 0 -1 2332 1.7488999292254448e-02 + + 2.2371199727058411e-01 -5.5381798744201660e-01 + <_> + + 0 -1 2333 -2.5264000520110130e-02 + + 1.0319819450378418e+00 -1.7496499419212341e-01 + <_> + + 0 -1 2334 -4.0745001286268234e-02 + + 4.4961598515510559e-01 3.9349000900983810e-02 + <_> + + 0 -1 2335 -3.7666998803615570e-02 + + -8.5475701093673706e-01 -1.2463999912142754e-02 + <_> + + 0 -1 2336 -1.3411000370979309e-02 + + 5.7845598459243774e-01 -1.7467999830842018e-02 + <_> + + 0 -1 2337 -7.8999997640494257e-05 + + -3.7749201059341431e-01 1.3961799442768097e-01 + <_> + + 0 -1 2338 -1.1415000073611736e-02 + + -2.6186600327491760e-01 2.3712499439716339e-01 + <_> + + 0 -1 2339 3.7200000137090683e-02 + + -2.8626000508666039e-02 -1.2945239543914795e+00 + <_> + + 0 -1 2340 3.4050000831484795e-03 + + 2.0531399548053741e-01 -1.8747499585151672e-01 + <_> + + 0 -1 2341 -2.2483000531792641e-02 + + 6.7027199268341064e-01 -1.9594000279903412e-01 + <_> + + 0 -1 2342 2.3274999111890793e-02 + + 1.7405399680137634e-01 -3.2746300101280212e-01 + <_> + + 0 -1 2343 -1.3917000032961369e-02 + + -8.3954298496246338e-01 -6.3760001212358475e-03 + <_> + + 0 -1 2344 7.5429999269545078e-03 + + -3.4194998443126678e-02 5.8998197317123413e-01 + <_> + + 0 -1 2345 -1.1539000086486340e-02 + + 4.2142799496650696e-01 -2.3510499298572540e-01 + <_> + + 0 -1 2346 5.2501998841762543e-02 + + 6.9303996860980988e-02 7.3226499557495117e-01 + <_> + + 0 -1 2347 5.2715998142957687e-02 + + -1.5688100457191467e-01 1.0907289981842041e+00 + <_> + + 0 -1 2348 -1.1726000346243382e-02 + + -7.0934301614761353e-01 1.6828800737857819e-01 + <_> + + 0 -1 2349 9.5945999026298523e-02 + + -1.6192899644374847e-01 1.0072519779205322e+00 + <_> + + 0 -1 2350 -1.5871999785304070e-02 + + 3.9008399844169617e-01 -5.3777001798152924e-02 + <_> + + 0 -1 2351 3.4818001091480255e-02 + + 1.7179999500513077e-02 -9.3941801786422729e-01 + <_> + + 0 -1 2352 3.4791998565196991e-02 + + 5.0462998449802399e-02 5.4465699195861816e-01 + <_> + + 0 -1 2353 1.6284000128507614e-02 + + -2.6981300115585327e-01 4.0365299582481384e-01 + <_> + + 0 -1 2354 -4.4319000095129013e-02 + + 8.4399998188018799e-01 3.2882999628782272e-02 + <_> + + 0 -1 2355 -5.5689997971057892e-03 + + 1.5309399366378784e-01 -3.4959799051284790e-01 + <_> + + 0 -1 2356 -6.5842002630233765e-02 + + -9.2711198329925537e-01 1.6800999641418457e-01 + <_> + + 0 -1 2357 -7.3337003588676453e-02 + + 5.1614499092102051e-01 -2.0236000418663025e-01 + <_> + + 0 -1 2358 1.6450000926852226e-02 + + 1.3950599730014801e-01 -4.9301299452781677e-01 + <_> + + 0 -1 2359 -9.2630004510283470e-03 + + -9.0101999044418335e-01 -1.6116000711917877e-02 + <_> + + 0 -1 2360 5.9139998629689217e-03 + + 1.9858199357986450e-01 -1.6731299459934235e-01 + <_> + + 0 -1 2361 -8.4699998842552304e-04 + + 9.4005003571510315e-02 -4.1570898890495300e-01 + <_> + + 0 -1 2362 2.0532900094985962e-01 + + -6.0022000223398209e-02 7.0993602275848389e-01 + <_> + + 0 -1 2363 -1.6883000731468201e-02 + + 2.4392199516296387e-01 -3.0551800131797791e-01 + <_> + + 0 -1 2364 -1.9111000001430511e-02 + + 6.1229902505874634e-01 2.4252999573945999e-02 + <_> + + 0 -1 2365 -2.5962999090552330e-02 + + 9.0764999389648438e-01 -1.6722099483013153e-01 + <_> + + 0 -1 2366 -2.1762000396847725e-02 + + -3.1384700536727905e-01 2.0134599506855011e-01 + <_> + + 0 -1 2367 -2.4119999259710312e-02 + + -6.6588401794433594e-01 7.4559999629855156e-03 + <_> + + 0 -1 2368 4.7129999846220016e-02 + + 5.9533998370170593e-02 8.7804502248764038e-01 + <_> + + 0 -1 2369 -4.5984998345375061e-02 + + 8.0067998170852661e-01 -1.7252300679683685e-01 + <_> + + 0 -1 2370 2.6507999747991562e-02 + + 1.8774099647998810e-01 -6.0850602388381958e-01 + <_> + + 0 -1 2371 -4.8615001142024994e-02 + + 5.8644098043441772e-01 -1.9427700340747833e-01 + <_> + + 0 -1 2372 -1.8562000244855881e-02 + + -2.5587901473045349e-01 1.6326199471950531e-01 + <_> + + 0 -1 2373 1.2678000144660473e-02 + + -1.4228000305593014e-02 -7.6738101243972778e-01 + <_> + + 0 -1 2374 -1.1919999960809946e-03 + + 2.0495000481605530e-01 -1.1404299736022949e-01 + <_> + + 0 -1 2375 -4.9088999629020691e-02 + + -1.0740849971771240e+00 -3.8940999656915665e-02 + <_> + + 0 -1 2376 -1.7436999827623367e-02 + + -5.7973802089691162e-01 1.8584500253200531e-01 + <_> + + 0 -1 2377 -1.4770000241696835e-02 + + -6.6150301694869995e-01 5.3119999356567860e-03 + <_> + + 0 -1 2378 -2.2905200719833374e-01 + + -4.8305100202560425e-01 1.2326399981975555e-01 + <_> + + 0 -1 2379 -1.2707099318504333e-01 + + 5.7452601194381714e-01 -1.9420400261878967e-01 + <_> + + 0 -1 2380 1.0339000262320042e-02 + + -5.4641999304294586e-02 2.4501800537109375e-01 + <_> + + 0 -1 2381 6.9010001607239246e-03 + + 1.2180600315332413e-01 -3.8797399401664734e-01 + <_> + + 0 -1 2382 2.9025399684906006e-01 + + 1.0966199636459351e-01 -30. + <_> + + 0 -1 2383 -2.3804999887943268e-01 + + -1.7352679967880249e+00 -6.3809998333454132e-02 + <_> + + 0 -1 2384 6.2481001019477844e-02 + + 1.3523000478744507e-01 -7.0301097631454468e-01 + <_> + + 0 -1 2385 4.7109997831285000e-03 + + -4.6984100341796875e-01 6.0341998934745789e-02 + <_> + + 0 -1 2386 -2.7815999463200569e-02 + + 6.9807600975036621e-01 1.3719999697059393e-03 + <_> + + 0 -1 2387 -1.7020000144839287e-02 + + 1.6870440244674683e+00 -1.4314800500869751e-01 + <_> + + 0 -1 2388 -4.9754999577999115e-02 + + 7.9497700929641724e-01 7.7199999941512942e-04 + <_> + + 0 -1 2389 -7.4732996523380280e-02 + + -1.0132360458374023e+00 -1.9388999789953232e-02 + <_> + + 0 -1 2390 3.2009001821279526e-02 + + 1.4412100613117218e-01 -4.2139101028442383e-01 + <_> + + 0 -1 2391 -9.4463996589183807e-02 + + 5.0682598352432251e-01 -2.0478899776935577e-01 + <_> + + 0 -1 2392 -1.5426999889314175e-02 + + -1.5811300277709961e-01 1.7806899547576904e-01 + <_> + + 0 -1 2393 -4.0540001355111599e-03 + + -5.4366701841354370e-01 3.1235000118613243e-02 + <_> + + 0 -1 2394 3.0080000869929790e-03 + + -1.7376799881458282e-01 3.0441701412200928e-01 + <_> + + 0 -1 2395 -1.0091999545693398e-02 + + 2.5103801488876343e-01 -2.6224100589752197e-01 + <_> + + 0 -1 2396 -3.8818001747131348e-02 + + 9.3226701021194458e-01 7.2659999132156372e-02 + <_> + + 0 -1 2397 3.4651998430490494e-02 + + -3.3934999257326126e-02 -8.5707902908325195e-01 + <_> + + 0 -1 2398 -4.6729999594390392e-03 + + 3.4969300031661987e-01 -4.8517998307943344e-02 + <_> + + 0 -1 2399 6.8499997723847628e-04 + + 6.6573001444339752e-02 -4.4973799586296082e-01 + <_> + + 0 -1 2400 3.5317000001668930e-02 + + 1.4275799691677094e-01 -4.6726399660110474e-01 + <_> + + 0 -1 2401 -2.3569999262690544e-02 + + -1.0286079645156860e+00 -4.5288000255823135e-02 + <_> + + 0 -1 2402 -1.9109999993816018e-03 + + -1.9652199745178223e-01 2.8661000728607178e-01 + <_> + + 0 -1 2403 -1.6659000888466835e-02 + + -7.7532202005386353e-01 -8.3280000835657120e-03 + <_> + + 0 -1 2404 6.6062200069427490e-01 + + 1.3232499361038208e-01 -3.5266680717468262e+00 + <_> + + 0 -1 2405 1.0970599949359894e-01 + + -1.5547199547290802e-01 1.4674140214920044e+00 + <_> + + 0 -1 2406 1.3500999659299850e-02 + + 1.5233400464057922e-01 -1.3020930290222168e+00 + <_> + + 0 -1 2407 -2.2871999070048332e-02 + + -7.1325999498367310e-01 -8.7040001526474953e-03 + <_> + + 0 -1 2408 -8.1821002066135406e-02 + + 1.1127580404281616e+00 8.3219997584819794e-02 + <_> + + 0 -1 2409 -5.2728001028299332e-02 + + 9.3165099620819092e-01 -1.7103999853134155e-01 + <_> + + 0 -1 2410 -2.5242000818252563e-02 + + -1.9733799993991852e-01 2.5359401106834412e-01 + <_> + + 0 -1 2411 -4.3818999081850052e-02 + + 4.1815200448036194e-01 -2.4585500359535217e-01 + <_> + + 0 -1 2412 -1.8188999965786934e-02 + + -5.1743197441101074e-01 2.0174199342727661e-01 + <_> + + 0 -1 2413 2.3466000333428383e-02 + + -4.3071001768112183e-02 -1.0636579990386963e+00 + <_> + + 0 -1 2414 3.4216001629829407e-02 + + 5.3780999034643173e-02 4.9707201123237610e-01 + <_> + + 0 -1 2415 2.5692999362945557e-02 + + -2.3800100386142731e-01 4.1651499271392822e-01 + <_> + + 0 -1 2416 -2.6565000414848328e-02 + + -8.8574802875518799e-01 1.3365900516510010e-01 + <_> + + 0 -1 2417 6.0942001640796661e-02 + + -2.0669700205326080e-01 5.8309000730514526e-01 + <_> + + 0 -1 2418 1.4474500715732574e-01 + + 1.3282300531864166e-01 -3.1449348926544189e+00 + <_> + + 0 -1 2419 5.3410999476909637e-02 + + -1.7325200140476227e-01 6.9190698862075806e-01 + <_> + + 0 -1 2420 1.1408000253140926e-02 + + 5.4822001606225967e-02 3.0240398645401001e-01 + <_> + + 0 -1 2421 -2.3179999552667141e-03 + + 1.5820899605751038e-01 -3.1973201036453247e-01 + <_> + + 0 -1 2422 -2.9695000499486923e-02 + + 7.1274799108505249e-01 5.8136001229286194e-02 + <_> + + 0 -1 2423 2.7249999344348907e-02 + + -1.5754100680351257e-01 9.2143797874450684e-01 + <_> + + 0 -1 2424 -3.6200000904500484e-03 + + -3.4548398852348328e-01 2.0220999419689178e-01 + <_> + + 0 -1 2425 -1.2578999623656273e-02 + + -5.5650299787521362e-01 2.0388999953866005e-02 + <_> + + 0 -1 2426 -8.8849000632762909e-02 + + -3.6100010871887207e+00 1.3164199888706207e-01 + <_> + + 0 -1 2427 -1.9256999716162682e-02 + + 5.1908999681472778e-01 -1.9284300506114960e-01 + <_> + + 0 -1 2428 -1.6666999086737633e-02 + + -8.7499998509883881e-02 1.5812499821186066e-01 + <_> + + 0 -1 2429 1.2931999750435352e-02 + + 2.7405999600887299e-02 -5.5123901367187500e-01 + <_> + + 0 -1 2430 -1.3431999832391739e-02 + + 2.3457799851894379e-01 -4.3235000222921371e-02 + <_> + + 0 -1 2431 1.8810000270605087e-02 + + -3.9680998772382736e-02 -9.4373297691345215e-01 + <_> + + 0 -1 2432 -6.4349998719990253e-03 + + 4.5703700184822083e-01 -4.0520001202821732e-03 + <_> + + 0 -1 2433 -2.4249000474810600e-02 + + -7.6248002052307129e-01 -1.9857000559568405e-02 + <_> + + 0 -1 2434 -2.9667999595403671e-02 + + -3.7412509918212891e+00 1.1250600218772888e-01 + <_> + + 0 -1 2435 5.1150000654160976e-03 + + -6.3781797885894775e-01 1.1223999783396721e-02 + <_> + + 0 -1 2436 -5.7819997891783714e-03 + + 1.9374400377273560e-01 -8.2042001187801361e-02 + <_> + + 0 -1 2437 1.6606999561190605e-02 + + -1.6192099452018738e-01 1.1334990262985229e+00 + <_> + + 0 -1 2438 3.8228001445531845e-02 + + 2.1105000749230385e-02 7.6264202594757080e-01 + <_> + + 0 -1 2439 -5.7094000279903412e-02 + + -1.6974929571151733e+00 -5.9762001037597656e-02 + <_> + + 0 -1 2440 -5.3883001208305359e-02 + + 1.1850190162658691e+00 9.0966999530792236e-02 + <_> + + 0 -1 2441 -2.6110000908374786e-03 + + -4.0941199660301208e-01 8.3820998668670654e-02 + <_> + + 0 -1 2442 2.9714399576187134e-01 + + 1.5529899299144745e-01 -1.0995409488677979e+00 + <_> + + 0 -1 2443 -8.9063003659248352e-02 + + 4.8947200179100037e-01 -2.0041200518608093e-01 + <_> + + 0 -1 2444 -5.6193001568317413e-02 + + -2.4581399559974670e-01 1.4365500211715698e-01 + <_> + + 0 -1 2445 3.7004999816417694e-02 + + -4.8168998211622238e-02 -1.2310709953308105e+00 + <_> + + 0 -1 2446 -8.4840003401041031e-03 + + 4.3372601270675659e-01 1.3779999688267708e-02 + <_> + + 0 -1 2447 -2.4379999376833439e-03 + + 1.8949699401855469e-01 -3.2294198870658875e-01 + <_> + + 0 -1 2448 -7.1639999747276306e-02 + + -4.3979001045227051e-01 2.2730199992656708e-01 + <_> + + 0 -1 2449 5.2260002121329308e-03 + + -2.0548400282859802e-01 5.0933301448822021e-01 + <_> + + 0 -1 2450 -6.1360001564025879e-03 + + 3.1157198548316956e-01 7.0680998265743256e-02 + <_> + + 0 -1 2451 1.5595000237226486e-02 + + -3.0934798717498779e-01 1.5627700090408325e-01 + <_> + + 0 -1 2452 2.5995999574661255e-02 + + 1.3821600377559662e-01 -1.7616599798202515e-01 + <_> + + 0 -1 2453 -1.2085000053048134e-02 + + -5.1070201396942139e-01 5.8440998196601868e-02 + <_> + + 0 -1 2454 -6.7836001515388489e-02 + + 4.7757101058959961e-01 -7.1446001529693604e-02 + <_> + + 0 -1 2455 -1.4715000055730343e-02 + + 4.5238900184631348e-01 -1.9861400127410889e-01 + <_> + + 0 -1 2456 2.5118999183177948e-02 + + 1.2954899668693542e-01 -8.6266398429870605e-01 + <_> + + 0 -1 2457 1.8826000392436981e-02 + + -4.1570000350475311e-02 -1.1354700326919556e+00 + <_> + + 0 -1 2458 -2.1263999864459038e-02 + + -3.4738001227378845e-01 1.5779499709606171e-01 + <_> + + 0 -1 2459 9.4609996303915977e-03 + + 4.8639997839927673e-03 -6.1654800176620483e-01 + <_> + + 0 -1 2460 2.2957700490951538e-01 + + 8.1372998654842377e-02 6.9841402769088745e-01 + <_> + + 0 -1 2461 -3.8061998784542084e-02 + + 1.1616369485855103e+00 -1.4976699650287628e-01 + <_> + + 0 -1 2462 -1.3484999537467957e-02 + + -3.2036399841308594e-01 1.7365099489688873e-01 + <_> + + 0 -1 2463 3.6238998174667358e-02 + + -1.8158499896526337e-01 6.1956697702407837e-01 + <_> + + 0 -1 2464 6.7210001870989799e-03 + + 7.9600000753998756e-04 4.2441400885581970e-01 + <_> + + 0 -1 2465 9.6525996923446655e-02 + + -1.4696800708770752e-01 1.2525680065155029e+00 + <_> + + 0 -1 2466 -3.5656999796628952e-02 + + -3.9781698584556580e-01 1.4191399514675140e-01 + <_> + + 0 -1 2467 1.0772000066936016e-02 + + -1.8194000422954559e-01 5.9762197732925415e-01 + <_> + + 0 -1 2468 7.9279996454715729e-02 + + 1.4642499387264252e-01 -7.8836899995803833e-01 + <_> + + 0 -1 2469 3.2841000705957413e-02 + + -6.2408000230789185e-02 -1.4227490425109863e+00 + <_> + + 0 -1 2470 -2.7781000360846519e-02 + + 3.4033098816871643e-01 3.0670000240206718e-02 + <_> + + 0 -1 2471 -4.0339999832212925e-03 + + 3.1084701418876648e-01 -2.2595700621604919e-01 + <_> + + 0 -1 2472 7.4260002002120018e-03 + + -3.8936998695135117e-02 3.1702101230621338e-01 + <_> + + 0 -1 2473 1.1213999986648560e-01 + + -1.7578299343585968e-01 6.5056598186492920e-01 + <_> + + 0 -1 2474 -1.1878100037574768e-01 + + -1.0092990398406982e+00 1.1069700121879578e-01 + <_> + + 0 -1 2475 -4.1584998369216919e-02 + + -5.3806400299072266e-01 1.9905000925064087e-02 + <_> + + 0 -1 2476 -2.7966000139713287e-02 + + 4.8143199086189270e-01 3.3590998500585556e-02 + <_> + + 0 -1 2477 -1.2506400048732758e-01 + + 2.6352199912071228e-01 -2.5737899541854858e-01 + <_> + + 0 -1 2478 2.3666900396347046e-01 + + 3.6508001387119293e-02 9.0655601024627686e-01 + <_> + + 0 -1 2479 -2.9475999996066093e-02 + + -6.0048800706863403e-01 9.5880003646016121e-03 + <_> + + 0 -1 2480 3.7792999297380447e-02 + + 1.5506200492382050e-01 -9.5733499526977539e-01 + <_> + + 0 -1 2481 7.2044000029563904e-02 + + -1.4525899291038513e-01 1.3676730394363403e+00 + <_> + + 0 -1 2482 9.7759999334812164e-03 + + 1.2915999628603458e-02 2.1640899777412415e-01 + <_> + + 0 -1 2483 5.2154000848531723e-02 + + -1.6359999775886536e-02 -8.8356298208236694e-01 + <_> + + 0 -1 2484 -4.3790999799966812e-02 + + 3.5829600691795349e-01 6.5131001174449921e-02 + <_> + + 0 -1 2485 -3.8378998637199402e-02 + + 1.1961040496826172e+00 -1.4971500635147095e-01 + <_> + + 0 -1 2486 -9.8838999867439270e-02 + + -6.1834001541137695e-01 1.2786200642585754e-01 + <_> + + 0 -1 2487 -1.2190700322389603e-01 + + -1.8276120424270630e+00 -6.4862996339797974e-02 + <_> + + 0 -1 2488 -1.1981700360774994e-01 + + -30. 1.1323300004005432e-01 + <_> + + 0 -1 2489 3.0910000205039978e-02 + + -2.3934000730514526e-01 3.6332899332046509e-01 + <_> + + 0 -1 2490 1.0800999589264393e-02 + + -3.5140000283718109e-02 2.7707898616790771e-01 + <_> + + 0 -1 2491 5.6844998151063919e-02 + + -1.5524299442768097e-01 1.0802700519561768e+00 + <_> + + 0 -1 2492 1.0280000278726220e-03 + + -6.1202999204397202e-02 2.0508000254631042e-01 + <_> + + 0 -1 2493 -2.8273999691009521e-02 + + -6.4778000116348267e-01 2.3917000740766525e-02 + <_> + + 0 -1 2494 -1.6013599932193756e-01 + + 1.0892050266265869e+00 5.8389000594615936e-02 + <_> + + 0 -1 2495 4.9629998393356800e-03 + + -2.5806298851966858e-01 2.0834599435329437e-01 + <_> + + 0 -1 2496 4.6937000006437302e-02 + + 1.3886299729347229e-01 -1.5662620067596436e+00 + <_> + + 0 -1 2497 2.4286000058054924e-02 + + -2.0728300511837006e-01 5.2430999279022217e-01 + <_> + + 0 -1 2498 7.0202000439167023e-02 + + 1.4796899259090424e-01 -1.3095090389251709e+00 + <_> + + 0 -1 2499 9.8120002076029778e-03 + + 2.7906000614166260e-02 -5.0864601135253906e-01 + <_> + + 0 -1 2500 -5.6200999766588211e-02 + + 1.2618130445480347e+00 6.3801996409893036e-02 + <_> + + 0 -1 2501 1.0982800275087357e-01 + + -1.2850099802017212e-01 3.0776169300079346e+00 + <_> + 211 + -3.3703000545501709e+00 + + <_> + + 0 -1 2502 2.0910000428557396e-02 + + -6.8559402227401733e-01 3.8984298706054688e-01 + <_> + + 0 -1 2503 3.5032000392675400e-02 + + -4.7724398970603943e-01 4.5027199387550354e-01 + <_> + + 0 -1 2504 3.9799001067876816e-02 + + -4.7011101245880127e-01 4.2702499032020569e-01 + <_> + + 0 -1 2505 -4.8409998416900635e-03 + + 2.5614300370216370e-01 -6.6556298732757568e-01 + <_> + + 0 -1 2506 2.3439999204128981e-03 + + -4.8083499073982239e-01 2.8013798594474792e-01 + <_> + + 0 -1 2507 2.5312999263405800e-02 + + -2.3948200047016144e-01 4.4191798567771912e-01 + <_> + + 0 -1 2508 -3.2193001359701157e-02 + + 7.6086699962615967e-01 -2.5059100985527039e-01 + <_> + + 0 -1 2509 7.5409002602100372e-02 + + -3.4974598884582520e-01 3.4380298852920532e-01 + <_> + + 0 -1 2510 -1.8469000235199928e-02 + + -7.9085600376129150e-01 3.4788001328706741e-02 + <_> + + 0 -1 2511 -1.2802000157535076e-02 + + 4.7107800841331482e-01 -6.0006000101566315e-02 + <_> + + 0 -1 2512 -2.6598000898957253e-02 + + 6.7116099596023560e-01 -2.4257500469684601e-01 + <_> + + 0 -1 2513 2.1988999098539352e-02 + + 2.4717499315738678e-01 -4.8301699757575989e-01 + <_> + + 0 -1 2514 1.4654099941253662e-01 + + -2.1504099667072296e-01 7.2055900096893311e-01 + <_> + + 0 -1 2515 3.5310001112520695e-03 + + 2.7930998802185059e-01 -3.4339898824691772e-01 + <_> + + 0 -1 2516 9.4010001048445702e-03 + + 5.5861998349428177e-02 -8.2143598794937134e-01 + <_> + + 0 -1 2517 -8.6390003561973572e-03 + + -9.9620598554611206e-01 1.8874999880790710e-01 + <_> + + 0 -1 2518 -3.9193000644445419e-02 + + -1.1945559978485107e+00 -2.9198000207543373e-02 + <_> + + 0 -1 2519 2.4855000898241997e-02 + + 1.4987599849700928e-01 -5.4137802124023438e-01 + <_> + + 0 -1 2520 -3.4995000809431076e-02 + + -1.4210180044174194e+00 -4.2314000427722931e-02 + <_> + + 0 -1 2521 -1.8378999084234238e-02 + + -2.8242599964141846e-01 1.5581800043582916e-01 + <_> + + 0 -1 2522 -1.3592000119388103e-02 + + 4.7317099571228027e-01 -2.1937200427055359e-01 + <_> + + 0 -1 2523 6.2629999592900276e-03 + + -5.9714000672101974e-02 6.0625898838043213e-01 + <_> + + 0 -1 2524 -1.8478000536561012e-02 + + -8.5647201538085938e-01 -1.3783999718725681e-02 + <_> + + 0 -1 2525 1.4236000366508961e-02 + + 1.6654799878597260e-01 -2.7713999152183533e-01 + <_> + + 0 -1 2526 -3.2547000795602798e-02 + + -1.1728240251541138e+00 -4.0185000747442245e-02 + <_> + + 0 -1 2527 -2.6410000864416361e-03 + + 2.6514300704002380e-01 -5.6343000382184982e-02 + <_> + + 0 -1 2528 -8.7799999164417386e-04 + + 3.6556001752614975e-02 -5.5075198411941528e-01 + <_> + + 0 -1 2529 4.7371998429298401e-02 + + -4.2614001780748367e-02 4.8194900155067444e-01 + <_> + + 0 -1 2530 -7.0790001191198826e-03 + + 2.8698998689651489e-01 -3.2923001050949097e-01 + <_> + + 0 -1 2531 -4.3145999312400818e-02 + + -1.4065419435501099e+00 1.2836399674415588e-01 + <_> + + 0 -1 2532 2.0592000335454941e-02 + + -2.1435299515724182e-01 5.3981798887252808e-01 + <_> + + 0 -1 2533 -2.2367000579833984e-02 + + 3.3718299865722656e-01 4.5212000608444214e-02 + <_> + + 0 -1 2534 5.0039999186992645e-02 + + -2.5121700763702393e-01 4.1750499606132507e-01 + <_> + + 0 -1 2535 6.1794999986886978e-02 + + 4.0084999054670334e-02 6.8779802322387695e-01 + <_> + + 0 -1 2536 -4.1861999779939651e-02 + + 5.3027397394180298e-01 -2.2901999950408936e-01 + <_> + + 0 -1 2537 -3.1959998887032270e-03 + + 2.5161498785018921e-01 -2.1514600515365601e-01 + <_> + + 0 -1 2538 2.4255000054836273e-02 + + 7.2320001199841499e-03 -7.2519099712371826e-01 + <_> + + 0 -1 2539 -1.7303999513387680e-02 + + -4.9958199262619019e-01 1.8394500017166138e-01 + <_> + + 0 -1 2540 -4.1470001451671124e-03 + + 8.5211999714374542e-02 -4.6364700794219971e-01 + <_> + + 0 -1 2541 -1.4369999989867210e-02 + + -5.2258902788162231e-01 2.3892599344253540e-01 + <_> + + 0 -1 2542 -9.0399999171495438e-03 + + -6.3250398635864258e-01 3.2551001757383347e-02 + <_> + + 0 -1 2543 -1.2373100221157074e-01 + + 1.2856210470199585e+00 7.6545000076293945e-02 + <_> + + 0 -1 2544 -8.2221999764442444e-02 + + 8.3208197355270386e-01 -1.8590599298477173e-01 + <_> + + 0 -1 2545 6.5659001469612122e-02 + + 1.1298800259828568e-01 -30. + <_> + + 0 -1 2546 -3.1582999974489212e-02 + + -1.3485900163650513e+00 -4.7097001224756241e-02 + <_> + + 0 -1 2547 -7.9636000096797943e-02 + + -1.3533639907836914e+00 1.5668800473213196e-01 + <_> + + 0 -1 2548 -1.8880000337958336e-02 + + 4.0300300717353821e-01 -2.5148901343345642e-01 + <_> + + 0 -1 2549 -5.0149997696280479e-03 + + -2.6287099719047546e-01 1.8582500517368317e-01 + <_> + + 0 -1 2550 -1.2218000367283821e-02 + + 5.8692401647567749e-01 -1.9427700340747833e-01 + <_> + + 0 -1 2551 1.2710000155493617e-03 + + -1.6688999533653259e-01 2.3006899654865265e-01 + <_> + + 0 -1 2552 2.9743999242782593e-02 + + 1.2520000338554382e-02 -6.6723597049713135e-01 + <_> + + 0 -1 2553 2.8175000101327896e-02 + + -1.7060000449419022e-02 6.4579397439956665e-01 + <_> + + 0 -1 2554 3.0345000326633453e-02 + + -2.4178700149059296e-01 3.4878900647163391e-01 + <_> + + 0 -1 2555 -1.7325999215245247e-02 + + -5.3599399328231812e-01 2.0995999872684479e-01 + <_> + + 0 -1 2556 -8.4178000688552856e-02 + + 7.5093299150466919e-01 -1.7593200504779816e-01 + <_> + + 0 -1 2557 7.4950000271201134e-03 + + -1.6188099980354309e-01 3.0657500028610229e-01 + <_> + + 0 -1 2558 5.6494999676942825e-02 + + -1.7318800091743469e-01 1.0016150474548340e+00 + <_> + + 0 -1 2559 -5.2939997985959053e-03 + + 2.3417599499225616e-01 -6.5347000956535339e-02 + <_> + + 0 -1 2560 -1.4945000410079956e-02 + + 2.5018900632858276e-01 -3.0591198801994324e-01 + <_> + + 0 -1 2561 5.4919000715017319e-02 + + 1.3121999800205231e-01 -9.3765097856521606e-01 + <_> + + 0 -1 2562 -1.9721999764442444e-02 + + -8.3978497982025146e-01 -2.3473000153899193e-02 + <_> + + 0 -1 2563 -6.7158997058868408e-02 + + 2.3586840629577637e+00 8.2970999181270599e-02 + <_> + + 0 -1 2564 -1.4325999654829502e-02 + + 1.8814499676227570e-01 -3.1221601366996765e-01 + <_> + + 0 -1 2565 2.9841000214219093e-02 + + 1.4825099706649780e-01 -8.4681701660156250e-01 + <_> + + 0 -1 2566 5.1883000880479813e-02 + + -4.3731000274419785e-02 -1.3366169929504395e+00 + <_> + + 0 -1 2567 4.1127000004053116e-02 + + 1.7660099267959595e-01 -6.0904097557067871e-01 + <_> + + 0 -1 2568 -1.2865099310874939e-01 + + -9.8701000213623047e-01 -3.7785001099109650e-02 + <_> + + 0 -1 2569 2.4170000106096268e-03 + + -1.6119599342346191e-01 3.2675701379776001e-01 + <_> + + 0 -1 2570 7.7030002139508724e-03 + + -2.3841500282287598e-01 2.9319399595260620e-01 + <_> + + 0 -1 2571 4.5520000159740448e-02 + + 1.4424599707126617e-01 -1.5010160207748413e+00 + <_> + + 0 -1 2572 -7.8700996935367584e-02 + + -1.0394560098648071e+00 -4.5375999063253403e-02 + <_> + + 0 -1 2573 7.8619997948408127e-03 + + 1.9633600115776062e-01 -1.4472399652004242e-01 + <_> + + 0 -1 2574 -1.3458999805152416e-02 + + -9.0634697675704956e-01 -3.8049001246690750e-02 + <_> + + 0 -1 2575 2.8827000409364700e-02 + + -2.9473999515175819e-02 6.0058397054672241e-01 + <_> + + 0 -1 2576 -2.7365999296307564e-02 + + -9.9804002046585083e-01 -3.8653001189231873e-02 + <_> + + 0 -1 2577 -7.2917997837066650e-02 + + 7.3361498117446899e-01 5.7440001517534256e-02 + <_> + + 0 -1 2578 -1.3988999649882317e-02 + + 2.7892601490020752e-01 -2.6516300439834595e-01 + <_> + + 0 -1 2579 4.3242998421192169e-02 + + 4.7760000452399254e-03 3.5925900936126709e-01 + <_> + + 0 -1 2580 2.9533000662922859e-02 + + -2.0083999633789062e-01 5.1202899217605591e-01 + <_> + + 0 -1 2581 -3.1897000968456268e-02 + + 6.4721697568893433e-01 -1.3760000001639128e-03 + <_> + + 0 -1 2582 3.7868998944759369e-02 + + -1.8363800644874573e-01 6.1343097686767578e-01 + <_> + + 0 -1 2583 -2.2417999804019928e-02 + + -2.9187899827957153e-01 1.8194800615310669e-01 + <_> + + 0 -1 2584 5.8958999812602997e-02 + + -6.6451996564865112e-02 -1.9290030002593994e+00 + <_> + + 0 -1 2585 3.1222999095916748e-02 + + -1.2732000090181828e-02 6.1560797691345215e-01 + <_> + + 0 -1 2586 3.7484999746084213e-02 + + -2.0856900513172150e-01 4.4363999366760254e-01 + <_> + + 0 -1 2587 -2.0966000854969025e-02 + + -3.5712799429893494e-01 2.4252200126647949e-01 + <_> + + 0 -1 2588 -2.5477999821305275e-02 + + 1.0846560001373291e+00 -1.5054400265216827e-01 + <_> + + 0 -1 2589 -7.2570000775158405e-03 + + 2.1302600204944611e-01 -1.8308199942111969e-01 + <_> + + 0 -1 2590 -5.0983000546693802e-02 + + 5.1736801862716675e-01 -1.8833099305629730e-01 + <_> + + 0 -1 2591 -2.0640000700950623e-02 + + -4.4030201435089111e-01 2.2745999693870544e-01 + <_> + + 0 -1 2592 1.0672999545931816e-02 + + 3.5059999674558640e-02 -5.1665002107620239e-01 + <_> + + 0 -1 2593 3.1895998865365982e-02 + + 1.3228000141680241e-02 3.4915199875831604e-01 + <_> + + 0 -1 2594 -2.3824999108910561e-02 + + 3.4118801355361938e-01 -2.1510200202465057e-01 + <_> + + 0 -1 2595 -6.0680001042783260e-03 + + 3.2937398552894592e-01 -2.8523799777030945e-01 + <_> + + 0 -1 2596 2.3881999775767326e-02 + + -2.5333800911903381e-01 2.6296100020408630e-01 + <_> + + 0 -1 2597 2.7966000139713287e-02 + + 1.4049099385738373e-01 -4.9887099862098694e-01 + <_> + + 0 -1 2598 1.4603000134229660e-02 + + -1.5395999886095524e-02 -7.6958000659942627e-01 + <_> + + 0 -1 2599 1.0872399806976318e-01 + + 1.9069600105285645e-01 -3.2393100857734680e-01 + <_> + + 0 -1 2600 -1.4038000255823135e-02 + + 3.4924700856208801e-01 -2.2358700633049011e-01 + <_> + + 0 -1 2601 4.0440000593662262e-03 + + -3.8329001516103745e-02 5.1177299022674561e-01 + <_> + + 0 -1 2602 -4.9769999459385872e-03 + + -4.2888298630714417e-01 4.9173999577760696e-02 + <_> + + 0 -1 2603 -8.5183002054691315e-02 + + 6.6624599695205688e-01 7.8079998493194580e-03 + <_> + + 0 -1 2604 2.1559998858720064e-03 + + -4.9135199189186096e-01 6.9555997848510742e-02 + <_> + + 0 -1 2605 3.6384499073028564e-01 + + 1.2997099757194519e-01 -1.8949509859085083e+00 + <_> + + 0 -1 2606 2.2082500159740448e-01 + + -5.7211998850107193e-02 -1.4281120300292969e+00 + <_> + + 0 -1 2607 -1.6140000894665718e-02 + + -5.7589399814605713e-01 1.8062500655651093e-01 + <_> + + 0 -1 2608 -4.8330001533031464e-02 + + 9.7308498620986938e-01 -1.6513000428676605e-01 + <_> + + 0 -1 2609 1.7529999837279320e-02 + + 1.7932699620723724e-01 -2.7948901057243347e-01 + <_> + + 0 -1 2610 -3.4309998154640198e-02 + + -8.1072497367858887e-01 -1.6596000641584396e-02 + <_> + + 0 -1 2611 -4.5830002054572105e-03 + + 2.7908998727798462e-01 -7.4519999325275421e-03 + <_> + + 0 -1 2612 1.2896400690078735e-01 + + -1.3508500158786774e-01 2.5411539077758789e+00 + <_> + + 0 -1 2613 3.0361000448465347e-02 + + -6.8419001996517181e-02 2.8734099864959717e-01 + <_> + + 0 -1 2614 4.4086001813411713e-02 + + -1.8135899305343628e-01 6.5413200855255127e-01 + <_> + + 0 -1 2615 3.0159999150782824e-03 + + -1.5690499544143677e-01 2.6963800191879272e-01 + <_> + + 0 -1 2616 -2.6336999610066414e-02 + + 2.9175600409507751e-01 -2.5274100899696350e-01 + <_> + + 0 -1 2617 -2.7866000309586525e-02 + + 4.4387501478195190e-01 5.5038001388311386e-02 + <_> + + 0 -1 2618 1.1725000105798244e-02 + + -1.9346499443054199e-01 4.6656700968742371e-01 + <_> + + 0 -1 2619 1.5689999563619494e-03 + + -8.2360003143548965e-03 2.5700899958610535e-01 + <_> + + 0 -1 2620 -3.5550000611692667e-03 + + -4.2430898547172546e-01 7.1174003183841705e-02 + <_> + + 0 -1 2621 -3.1695000827312469e-02 + + -8.5393500328063965e-01 1.6916200518608093e-01 + <_> + + 0 -1 2622 -3.2097000628709793e-02 + + 8.3784902095794678e-01 -1.7597299814224243e-01 + <_> + + 0 -1 2623 1.5544199943542480e-01 + + 9.9550001323223114e-02 2.3873300552368164e+00 + <_> + + 0 -1 2624 8.8045999407768250e-02 + + -1.8725299835205078e-01 6.2384301424026489e-01 + <_> + + 0 -1 2625 -1.6720000421628356e-03 + + 2.5008699297904968e-01 -6.5118998289108276e-02 + <_> + + 0 -1 2626 9.3409996479749680e-03 + + -3.5378900170326233e-01 1.0715000331401825e-01 + <_> + + 0 -1 2627 3.7138000130653381e-02 + + 1.6387000679969788e-01 -9.1718399524688721e-01 + <_> + + 0 -1 2628 8.0183997750282288e-02 + + -1.4812999963760376e-01 1.4895190000534058e+00 + <_> + + 0 -1 2629 -7.9100002767518163e-04 + + -2.1326899528503418e-01 1.9676400721073151e-01 + <_> + + 0 -1 2630 -5.0400001928210258e-03 + + -7.1318697929382324e-01 1.8240000354126096e-03 + <_> + + 0 -1 2631 1.1962399631738663e-01 + + 3.3098999410867691e-02 1.0441709756851196e+00 + <_> + + 0 -1 2632 -4.5280000194907188e-03 + + -2.7308499813079834e-01 2.7229800820350647e-01 + <_> + + 0 -1 2633 -2.9639000073075294e-02 + + 3.6225798726081848e-01 5.6795001029968262e-02 + <_> + + 0 -1 2634 2.6650000363588333e-02 + + -4.8041000962257385e-02 -9.6723502874374390e-01 + <_> + + 0 -1 2635 4.4422000646591187e-02 + + 1.3052900135517120e-01 -3.5077300667762756e-01 + <_> + + 0 -1 2636 -2.4359999224543571e-02 + + -1.0766899585723877e+00 -5.1222998648881912e-02 + <_> + + 0 -1 2637 1.9734999164938927e-02 + + 2.6238000020384789e-02 2.8070500493049622e-01 + <_> + + 0 -1 2638 5.4930001497268677e-03 + + -2.6111298799514771e-01 2.1011400222778320e-01 + <_> + + 0 -1 2639 -2.3200300335884094e-01 + + -1.7748440504074097e+00 1.1482600122690201e-01 + <_> + + 0 -1 2640 -2.5614000856876373e-02 + + 2.9900801181793213e-01 -2.2502499818801880e-01 + <_> + + 0 -1 2641 -6.4949998632073402e-03 + + 1.9563800096511841e-01 -9.9762998521327972e-02 + <_> + + 0 -1 2642 3.9840000681579113e-03 + + -4.3021500110626221e-01 8.1261001527309418e-02 + <_> + + 0 -1 2643 -3.5813000053167343e-02 + + -5.0987398624420166e-01 1.6345900297164917e-01 + <_> + + 0 -1 2644 -1.4169000089168549e-02 + + 7.7978098392486572e-01 -1.7476299405097961e-01 + <_> + + 0 -1 2645 -1.2642100453376770e-01 + + -6.3047897815704346e-01 1.2728300690650940e-01 + <_> + + 0 -1 2646 6.8677999079227448e-02 + + -4.6447999775409698e-02 -1.1128979921340942e+00 + <_> + + 0 -1 2647 8.5864998400211334e-02 + + 1.1835400015115738e-01 -4.8235158920288086e+00 + <_> + + 0 -1 2648 1.5511999838054180e-02 + + -1.7467999830842018e-02 -6.3693398237228394e-01 + <_> + + 0 -1 2649 8.1091001629829407e-02 + + 8.6133003234863281e-02 2.4559431076049805e+00 + <_> + + 0 -1 2650 1.8495000898838043e-02 + + 4.0229000151157379e-02 -5.0858199596405029e-01 + <_> + + 0 -1 2651 -8.6320996284484863e-02 + + -1.9006760120391846e+00 1.1019100248813629e-01 + <_> + + 0 -1 2652 7.2355002164840698e-02 + + -6.2111999839544296e-02 -1.4165179729461670e+00 + <_> + + 0 -1 2653 -7.8179001808166504e-02 + + 8.8849300146102905e-01 4.2369998991489410e-02 + <_> + + 0 -1 2654 9.6681997179985046e-02 + + -2.2094200551509857e-01 3.3575099706649780e-01 + <_> + + 0 -1 2655 -3.9875999093055725e-02 + + 5.7804799079895020e-01 4.5347999781370163e-02 + <_> + + 0 -1 2656 -9.5349997282028198e-03 + + -5.4175698757171631e-01 3.2399999909102917e-03 + <_> + + 0 -1 2657 4.0600000647827983e-04 + + -8.1549003720283508e-02 3.5837900638580322e-01 + <_> + + 0 -1 2658 1.2107999995350838e-02 + + -2.0280399918556213e-01 4.3768000602722168e-01 + <_> + + 0 -1 2659 -2.0873999223113060e-02 + + 4.1469898819923401e-01 -4.5568000525236130e-02 + <_> + + 0 -1 2660 5.7888001203536987e-02 + + -2.9009999707341194e-02 -9.1822302341461182e-01 + <_> + + 0 -1 2661 1.3200000103097409e-04 + + -1.1772400140762329e-01 2.0000000298023224e-01 + <_> + + 0 -1 2662 -1.7137000337243080e-02 + + 3.3004799485206604e-01 -2.3055200278759003e-01 + <_> + + 0 -1 2663 3.0655000358819962e-02 + + -2.1545000374317169e-02 2.6878198981285095e-01 + <_> + + 0 -1 2664 -7.8699999721720815e-04 + + -4.4100698828697205e-01 4.9157999455928802e-02 + <_> + + 0 -1 2665 8.8036999106407166e-02 + + 1.1782000213861465e-01 -2.8293309211730957e+00 + <_> + + 0 -1 2666 -3.9028998464345932e-02 + + 9.1777199506759644e-01 -1.5827399492263794e-01 + <_> + + 0 -1 2667 8.0105997622013092e-02 + + 1.1289200186729431e-01 -1.9937280416488647e+00 + <_> + + 0 -1 2668 3.9538998156785965e-02 + + -1.4357399940490723e-01 1.3085240125656128e+00 + <_> + + 0 -1 2669 2.0684000104665756e-02 + + 2.0048099756240845e-01 -4.4186998158693314e-02 + <_> + + 0 -1 2670 -6.7037999629974365e-02 + + 3.2618600130081177e-01 -2.0550400018692017e-01 + <_> + + 0 -1 2671 4.6815000474452972e-02 + + 1.5825299918651581e-01 -9.5535099506378174e-01 + <_> + + 0 -1 2672 7.8443996608257294e-02 + + -7.4651002883911133e-02 -2.1161499023437500e+00 + <_> + + 0 -1 2673 6.6380001604557037e-02 + + 1.1641900241374969e-01 -1.6113519668579102e+00 + <_> + + 0 -1 2674 3.0053999274969101e-02 + + -1.6562600433826447e-01 7.0025402307510376e-01 + <_> + + 0 -1 2675 1.7119999974966049e-02 + + 2.2627699375152588e-01 -4.0114998817443848e-01 + <_> + + 0 -1 2676 2.0073000341653824e-02 + + -1.9389699399471283e-01 4.4420298933982849e-01 + <_> + + 0 -1 2677 3.3101998269557953e-02 + + 1.1637499928474426e-01 -1.5771679878234863e+00 + <_> + + 0 -1 2678 -1.4882000163197517e-02 + + -8.9680302143096924e-01 -4.2010001838207245e-02 + <_> + + 0 -1 2679 -1.0281000286340714e-02 + + 3.5602998733520508e-01 -1.3124000281095505e-02 + <_> + + 0 -1 2680 -2.8695000335574150e-02 + + -4.6039599180221558e-01 2.6801999658346176e-02 + <_> + + 0 -1 2681 -4.7189998440444469e-03 + + 2.3788799345493317e-01 -6.5518997609615326e-02 + <_> + + 0 -1 2682 3.2201600074768066e-01 + + -2.8489999473094940e-02 -8.4234601259231567e-01 + <_> + + 0 -1 2683 -1.7045000568032265e-02 + + -5.0938802957534790e-01 1.6057600080966949e-01 + <_> + + 0 -1 2684 -7.3469998314976692e-03 + + -5.4154998064041138e-01 4.7320001758635044e-03 + <_> + + 0 -1 2685 -3.0001999810338020e-02 + + -8.8785797357559204e-01 1.3621799647808075e-01 + <_> + + 0 -1 2686 -1.1292999610304832e-02 + + 8.0615198612213135e-01 -1.6159500181674957e-01 + <_> + + 0 -1 2687 4.7749998047947884e-03 + + 1.2968000024557114e-02 5.5079901218414307e-01 + <_> + + 0 -1 2688 5.0710001960396767e-03 + + -4.5728001743555069e-02 -1.0766259431838989e+00 + <_> + + 0 -1 2689 1.9344100356101990e-01 + + 7.1262001991271973e-02 1.1694519519805908e+00 + <_> + + 0 -1 2690 5.3750001825392246e-03 + + -1.9736200571060181e-01 3.8206899166107178e-01 + <_> + + 0 -1 2691 -6.8276003003120422e-02 + + -5.4372339248657227e+00 1.1151900142431259e-01 + <_> + + 0 -1 2692 -3.4933000802993774e-02 + + 4.4793400168418884e-01 -1.8657900393009186e-01 + <_> + + 0 -1 2693 5.1219998858869076e-03 + + -1.4871999621391296e-02 1.8413899838924408e-01 + <_> + + 0 -1 2694 9.5311999320983887e-02 + + -1.5117099881172180e-01 9.4991499185562134e-01 + <_> + + 0 -1 2695 -6.2849000096321106e-02 + + 4.6473601460456848e-01 3.8405001163482666e-02 + <_> + + 0 -1 2696 -1.7040699720382690e-01 + + -1.6499999761581421e+00 -6.3236996531486511e-02 + <_> + + 0 -1 2697 1.0583999566733837e-02 + + -3.8348998874425888e-02 4.1913801431655884e-01 + <_> + + 0 -1 2698 -4.1579000651836395e-02 + + 3.4461900591850281e-01 -2.1187700331211090e-01 + <_> + + 0 -1 2699 1.2718600034713745e-01 + + 1.2398199737071991e-01 -2.1254889965057373e+00 + <_> + + 0 -1 2700 8.2557000219821930e-02 + + -6.2024001032114029e-02 -1.4875819683074951e+00 + <_> + + 0 -1 2701 8.5293002426624298e-02 + + 1.7087999731302261e-02 3.2076600193977356e-01 + <_> + + 0 -1 2702 5.5544000118970871e-02 + + -2.7414000034332275e-01 1.8976399302482605e-01 + <_> + + 0 -1 2703 4.5650000683963299e-03 + + -1.7920200526714325e-01 2.7967301011085510e-01 + <_> + + 0 -1 2704 1.2997999787330627e-02 + + -3.2297500967979431e-01 2.6941800117492676e-01 + <_> + + 0 -1 2705 5.7891998440027237e-02 + + 1.2644399702548981e-01 -6.0713499784469604e-01 + <_> + + 0 -1 2706 -2.2824000567197800e-02 + + -4.9682098627090454e-01 2.2376999258995056e-02 + <_> + + 0 -1 2707 4.8312000930309296e-02 + + 4.3607000261545181e-02 4.8537799715995789e-01 + <_> + + 0 -1 2708 2.5714000687003136e-02 + + -4.2950998991727829e-02 -9.3023502826690674e-01 + <_> + + 0 -1 2709 6.9269998930394650e-03 + + -2.9680000152438879e-03 3.4296301007270813e-01 + <_> + + 0 -1 2710 -3.4446999430656433e-02 + + -1.5299769639968872e+00 -6.1014998704195023e-02 + <_> + + 0 -1 2711 2.9387999325990677e-02 + + 3.7595998495817184e-02 6.4172399044036865e-01 + <_> + + 0 -1 2712 -2.4319998919963837e-03 + + 9.9088996648788452e-02 -3.9688101410865784e-01 + <_> + 200 + -2.9928278923034668e+00 + + <_> + + 0 -1 2713 -9.5944002270698547e-02 + + 6.2419098615646362e-01 -4.5875200629234314e-01 + <_> + + 0 -1 2714 1.6834000125527382e-02 + + -9.3072801828384399e-01 2.1563600003719330e-01 + <_> + + 0 -1 2715 2.6049999520182610e-02 + + -4.0532299876213074e-01 4.2256599664688110e-01 + <_> + + 0 -1 2716 3.6500001442618668e-04 + + 9.5288001000881195e-02 -6.3298100233078003e-01 + <_> + + 0 -1 2717 -6.6940002143383026e-03 + + 3.7243801355361938e-01 -3.0332401394844055e-01 + <_> + + 0 -1 2718 1.8874000757932663e-02 + + -2.3357200622558594e-01 4.0330699086189270e-01 + <_> + + 0 -1 2719 -1.6300000424962491e-04 + + 4.2886998504400253e-02 -7.7796798944473267e-01 + <_> + + 0 -1 2720 -7.6259002089500427e-02 + + -4.9628499150276184e-01 1.6335399448871613e-01 + <_> + + 0 -1 2721 5.0149001181125641e-02 + + 3.2747000455856323e-02 -8.0047899484634399e-01 + <_> + + 0 -1 2722 -2.9239999130368233e-03 + + -5.0002801418304443e-01 2.5480601191520691e-01 + <_> + + 0 -1 2723 1.6243999823927879e-02 + + 3.8913000375032425e-02 -7.0724898576736450e-01 + <_> + + 0 -1 2724 3.7811998277902603e-02 + + -6.6267997026443481e-02 7.3868799209594727e-01 + <_> + + 0 -1 2725 -1.2319999746978283e-02 + + 4.8696398735046387e-01 -2.4485599994659424e-01 + <_> + + 0 -1 2726 5.8003999292850494e-02 + + 1.3459099829196930e-01 -1.3232100009918213e-01 + <_> + + 0 -1 2727 4.8630000092089176e-03 + + -4.4172900915145874e-01 1.4005599915981293e-01 + <_> + + 0 -1 2728 4.5690998435020447e-02 + + 3.1217999756336212e-02 8.9818298816680908e-01 + <_> + + 0 -1 2729 2.1321000531315804e-02 + + 1.2008000165224075e-02 -8.6066198348999023e-01 + <_> + + 0 -1 2730 1.5679100155830383e-01 + + 1.4055999927222729e-02 8.5332900285720825e-01 + <_> + + 0 -1 2731 -1.0328999720513821e-02 + + 2.9022800922393799e-01 -2.9478800296783447e-01 + <_> + + 0 -1 2732 2.4290001019835472e-03 + + -4.0439900755882263e-01 1.9400200247764587e-01 + <_> + + 0 -1 2733 -2.3338999599218369e-02 + + 3.2945200800895691e-01 -2.5712698698043823e-01 + <_> + + 0 -1 2734 -6.8970001302659512e-03 + + -5.3352999687194824e-01 2.1635200083255768e-01 + <_> + + 0 -1 2735 -3.4403000026941299e-02 + + -1.4425489902496338e+00 -4.4682998210191727e-02 + <_> + + 0 -1 2736 -2.1235000342130661e-02 + + -7.9017502069473267e-01 1.9084100425243378e-01 + <_> + + 0 -1 2737 2.0620001014322042e-03 + + -2.6931199431419373e-01 3.1488001346588135e-01 + <_> + + 0 -1 2738 -4.2190002277493477e-03 + + -5.4464399814605713e-01 1.6574600338935852e-01 + <_> + + 0 -1 2739 -1.4334999956190586e-02 + + 2.2105000913143158e-02 -6.2342500686645508e-01 + <_> + + 0 -1 2740 -8.2120001316070557e-03 + + -4.9884998798370361e-01 1.9237099587917328e-01 + <_> + + 0 -1 2741 -9.3350000679492950e-03 + + -7.9131197929382324e-01 -1.4143999665975571e-02 + <_> + + 0 -1 2742 -3.7937998771667480e-02 + + 7.9841297864913940e-01 -3.3799000084400177e-02 + <_> + + 0 -1 2743 4.7059999778866768e-03 + + -3.3163401484489441e-01 2.0726299285888672e-01 + <_> + + 0 -1 2744 -4.4499998912215233e-03 + + -2.7256301045417786e-01 1.8402199447154999e-01 + <_> + + 0 -1 2745 5.2189999260008335e-03 + + -5.3096002340316772e-01 5.2607998251914978e-02 + <_> + + 0 -1 2746 -9.5399999991059303e-03 + + -5.6485402584075928e-01 1.9269399344921112e-01 + <_> + + 0 -1 2747 4.4969998300075531e-02 + + -1.7411500215530396e-01 9.5382601022720337e-01 + <_> + + 0 -1 2748 1.4209000393748283e-02 + + -9.1949000954627991e-02 2.4836100637912750e-01 + <_> + + 0 -1 2749 1.6380199790000916e-01 + + -5.8497000485658646e-02 -1.6404409408569336e+00 + <_> + + 0 -1 2750 2.5579999200999737e-03 + + 2.3447999358177185e-01 -9.2734001576900482e-02 + <_> + + 0 -1 2751 -3.8499999791383743e-03 + + 1.7880700528621674e-01 -3.5844099521636963e-01 + <_> + + 0 -1 2752 -2.5221999734640121e-02 + + -4.2903000116348267e-01 2.0244500041007996e-01 + <_> + + 0 -1 2753 -1.9415000453591347e-02 + + 5.8016300201416016e-01 -1.8806399405002594e-01 + <_> + + 0 -1 2754 1.4419999904930592e-02 + + 3.2846998423337936e-02 8.1980502605438232e-01 + <_> + + 0 -1 2755 5.1582999527454376e-02 + + 6.9176003336906433e-02 -4.5866298675537109e-01 + <_> + + 0 -1 2756 -3.7960000336170197e-02 + + -1.2553000450134277e+00 1.4332899451255798e-01 + <_> + + 0 -1 2757 -2.9560999944806099e-02 + + 5.3151798248291016e-01 -2.0596499741077423e-01 + <_> + + 0 -1 2758 -3.9110999554395676e-02 + + 1.1658719778060913e+00 5.3897000849246979e-02 + <_> + + 0 -1 2759 -2.9159000143408775e-02 + + 3.9307600259780884e-01 -2.2184500098228455e-01 + <_> + + 0 -1 2760 -8.3617001771926880e-02 + + -7.3744499683380127e-01 1.4268200099468231e-01 + <_> + + 0 -1 2761 4.2004001140594482e-01 + + -1.4277400076389313e-01 1.7894840240478516e+00 + <_> + + 0 -1 2762 6.0005001723766327e-02 + + 1.1976700276136398e-01 -1.8886189460754395e+00 + <_> + + 0 -1 2763 -1.8981000408530235e-02 + + -1.4148449897766113e+00 -5.6522998958826065e-02 + <_> + + 0 -1 2764 -6.0049998573958874e-03 + + 4.4170799851417542e-01 -1.0200800001621246e-01 + <_> + + 0 -1 2765 -5.8214001357555389e-02 + + -1.3918470144271851e+00 -4.8268999904394150e-02 + <_> + + 0 -1 2766 -1.2271000072360039e-02 + + 5.1317697763442993e-01 -9.3696996569633484e-02 + <_> + + 0 -1 2767 4.6585999429225922e-02 + + -5.7484000921249390e-02 -1.4283169507980347e+00 + <_> + + 0 -1 2768 1.2110000243410468e-03 + + -8.0891996622085571e-02 3.2333201169967651e-01 + <_> + + 0 -1 2769 -8.8642001152038574e-02 + + -8.6449098587036133e-01 -3.3146999776363373e-02 + <_> + + 0 -1 2770 -2.3184999823570251e-02 + + 5.2162200212478638e-01 -1.6168000176548958e-02 + <_> + + 0 -1 2771 4.3090000748634338e-02 + + -1.6153800487518311e-01 1.0915000438690186e+00 + <_> + + 0 -1 2772 2.0599999697878957e-04 + + -1.7091499269008636e-01 3.1236699223518372e-01 + <_> + + 0 -1 2773 8.9159999042749405e-03 + + -6.7039998248219490e-03 -6.8810397386550903e-01 + <_> + + 0 -1 2774 -1.7752999439835548e-02 + + 6.3292801380157471e-01 -4.2360001243650913e-03 + <_> + + 0 -1 2775 6.2299999408423901e-03 + + -3.3637198805809021e-01 1.2790599465370178e-01 + <_> + + 0 -1 2776 2.2770000621676445e-02 + + -3.4703999757766724e-02 3.9141800999641418e-01 + <_> + + 0 -1 2777 -2.1534999832510948e-02 + + 6.4765101671218872e-01 -2.0097799599170685e-01 + <_> + + 0 -1 2778 6.1758998781442642e-02 + + 5.4297000169754028e-02 9.0700101852416992e-01 + <_> + + 0 -1 2779 -7.8069999814033508e-02 + + 6.5523397922515869e-01 -1.9754399359226227e-01 + <_> + + 0 -1 2780 1.1315000243484974e-02 + + 1.9385300576686859e-01 -5.1707297563552856e-01 + <_> + + 0 -1 2781 -2.5590000674128532e-02 + + -9.3096500635147095e-01 -3.1546998769044876e-02 + <_> + + 0 -1 2782 -3.8058999925851822e-02 + + -6.8326902389526367e-01 1.2709100544452667e-01 + <_> + + 0 -1 2783 9.7970003262162209e-03 + + 1.5523999929428101e-02 -6.3347899913787842e-01 + <_> + + 0 -1 2784 -1.3841999694705009e-02 + + 1.0060529708862305e+00 6.2812998890876770e-02 + <_> + + 0 -1 2785 8.3459997549653053e-03 + + -2.3383200168609619e-01 3.0982699990272522e-01 + <_> + + 0 -1 2786 -7.1439996361732483e-02 + + -7.2505402565002441e-01 1.7148299515247345e-01 + <_> + + 0 -1 2787 1.0006000287830830e-02 + + -2.2071999311447144e-01 3.5266199707984924e-01 + <_> + + 0 -1 2788 1.1005300283432007e-01 + + 1.6662000119686127e-01 -7.4318999052047729e-01 + <_> + + 0 -1 2789 3.5310998558998108e-02 + + -2.3982700705528259e-01 4.1435998678207397e-01 + <_> + + 0 -1 2790 -1.1174699664115906e-01 + + 5.1045399904251099e-01 2.2319999989122152e-03 + <_> + + 0 -1 2791 -1.1367800086736679e-01 + + 9.0475201606750488e-01 -1.6615299880504608e-01 + <_> + + 0 -1 2792 1.6667999327182770e-02 + + 1.4024500548839569e-01 -5.2178502082824707e-01 + <_> + + 0 -1 2793 -8.0340001732110977e-03 + + -6.6178399324417114e-01 3.7640000227838755e-03 + <_> + + 0 -1 2794 -3.3096998929977417e-02 + + 8.0185902118682861e-01 5.9385001659393311e-02 + <_> + + 0 -1 2795 1.2547999620437622e-02 + + -3.3545500040054321e-01 1.4578600227832794e-01 + <_> + + 0 -1 2796 -4.2073998600244522e-02 + + -5.5509102344512939e-01 1.3266600668430328e-01 + <_> + + 0 -1 2797 2.5221999734640121e-02 + + -6.1631999909877777e-02 -1.3678770065307617e+00 + <_> + + 0 -1 2798 -2.4268999695777893e-02 + + 3.4185099601745605e-01 -7.4160001240670681e-03 + <_> + + 0 -1 2799 -1.2280000373721123e-02 + + 2.7745801210403442e-01 -3.1033900380134583e-01 + <_> + + 0 -1 2800 -1.1377099901437759e-01 + + 1.1719540357589722e+00 8.3681002259254456e-02 + <_> + + 0 -1 2801 -8.4771998226642609e-02 + + 8.1694799661636353e-01 -1.7837500572204590e-01 + <_> + + 0 -1 2802 -2.4552000686526299e-02 + + -1.8627299368381500e-01 1.4340099692344666e-01 + <_> + + 0 -1 2803 -9.0269995853304863e-03 + + 3.2659199833869934e-01 -2.3541299998760223e-01 + <_> + + 0 -1 2804 1.1177999898791313e-02 + + 1.9761200249195099e-01 -2.1701000630855560e-02 + <_> + + 0 -1 2805 -2.9366999864578247e-02 + + -9.3414801359176636e-01 -2.1704999729990959e-02 + <_> + + 0 -1 2806 6.3640000298619270e-03 + + 2.5573000311851501e-02 4.6412798762321472e-01 + <_> + + 0 -1 2807 1.4026000164449215e-02 + + -2.1228599548339844e-01 4.0078800916671753e-01 + <_> + + 0 -1 2808 -1.3341999612748623e-02 + + 7.4202698469161987e-01 2.9001999646425247e-02 + <_> + + 0 -1 2809 2.8422799706459045e-01 + + -1.9243599474430084e-01 4.3631199002265930e-01 + <_> + + 0 -1 2810 -2.3724000155925751e-01 + + 6.9736397266387939e-01 6.9307997822761536e-02 + <_> + + 0 -1 2811 -1.1169700324535370e-01 + + 3.9147201180458069e-01 -2.0922000706195831e-01 + <_> + + 0 -1 2812 1.2787500023841858e-01 + + -7.2555996477603912e-02 3.6088201403617859e-01 + <_> + + 0 -1 2813 -6.2900997698307037e-02 + + 9.5424997806549072e-01 -1.5402799844741821e-01 + <_> + + 0 -1 2814 1.7439000308513641e-02 + + -5.1134999841451645e-02 2.7750301361083984e-01 + <_> + + 0 -1 2815 1.2319999514147639e-03 + + 7.5627997517585754e-02 -3.6456099152565002e-01 + <_> + + 0 -1 2816 2.7495000511407852e-02 + + 5.1844000816345215e-02 4.1562598943710327e-01 + <_> + + 0 -1 2817 -4.3543998152017593e-02 + + 7.1969997882843018e-01 -1.7132200300693512e-01 + <_> + + 0 -1 2818 1.1025999672710896e-02 + + 1.4354600012302399e-01 -6.5403002500534058e-01 + <_> + + 0 -1 2819 2.0865999162197113e-02 + + 4.0089000016450882e-02 -4.5743298530578613e-01 + <_> + + 0 -1 2820 -2.2304000332951546e-02 + + 5.3855001926422119e-01 7.1662999689579010e-02 + <_> + + 0 -1 2821 3.2492000609636307e-02 + + -4.5991998165845871e-02 -1.0047069787979126e+00 + <_> + + 0 -1 2822 1.2269999831914902e-02 + + 3.4334998577833176e-02 4.2431798577308655e-01 + <_> + + 0 -1 2823 8.3820000290870667e-03 + + -2.5850600004196167e-01 2.6263499259948730e-01 + <_> + + 0 -1 2824 3.7353999912738800e-02 + + 1.5692499279975891e-01 -1.0429090261459351e+00 + <_> + + 0 -1 2825 -1.4111000113189220e-02 + + -7.3177701234817505e-01 -2.0276999101042747e-02 + <_> + + 0 -1 2826 5.7066999375820160e-02 + + 8.3360001444816589e-02 1.5661499500274658e+00 + <_> + + 0 -1 2827 4.9680001102387905e-03 + + -3.5318198800086975e-01 1.4698399603366852e-01 + <_> + + 0 -1 2828 -2.4492999538779259e-02 + + 2.8325900435447693e-01 -3.4640000667423010e-03 + <_> + + 0 -1 2829 -1.1254999786615372e-02 + + -8.4017497301101685e-01 -3.6251999437808990e-02 + <_> + + 0 -1 2830 3.4533001482486725e-02 + + 1.4998500049114227e-01 -8.7367099523544312e-01 + <_> + + 0 -1 2831 2.4303000420331955e-02 + + -1.8787500262260437e-01 5.9483999013900757e-01 + <_> + + 0 -1 2832 -7.8790001571178436e-03 + + 4.4315698742866516e-01 -5.6570999324321747e-02 + <_> + + 0 -1 2833 3.5142000764608383e-02 + + -5.6494999676942825e-02 -1.3617190122604370e+00 + <_> + + 0 -1 2834 4.6259998343884945e-03 + + -3.1161698698997498e-01 2.5447699427604675e-01 + <_> + + 0 -1 2835 -8.3131000399589539e-02 + + 1.6424349546432495e+00 -1.4429399371147156e-01 + <_> + + 0 -1 2836 -1.4015999622642994e-02 + + -7.7819502353668213e-01 1.7173300683498383e-01 + <_> + + 0 -1 2837 1.2450000504031777e-03 + + -2.3191399872303009e-01 2.8527900576591492e-01 + <_> + + 0 -1 2838 -1.6803000122308731e-02 + + -3.5965099930763245e-01 2.0412999391555786e-01 + <_> + + 0 -1 2839 -7.6747998595237732e-02 + + 7.8050500154495239e-01 -1.5612800419330597e-01 + <_> + + 0 -1 2840 -2.3671999573707581e-01 + + 1.1813700199127197e+00 7.8111998736858368e-02 + <_> + + 0 -1 2841 -1.0057400166988373e-01 + + -4.7104099392890930e-01 7.9172998666763306e-02 + <_> + + 0 -1 2842 1.3239999534562230e-03 + + 2.2262699902057648e-01 -3.7099799513816833e-01 + <_> + + 0 -1 2843 2.2152999415993690e-02 + + -3.8649000227451324e-02 -9.2274999618530273e-01 + <_> + + 0 -1 2844 -1.1246199905872345e-01 + + 4.1899600625038147e-01 8.0411002039909363e-02 + <_> + + 0 -1 2845 1.6481000930070877e-02 + + -1.6756699979305267e-01 7.1842402219772339e-01 + <_> + + 0 -1 2846 6.8113997578620911e-02 + + 1.5719899535179138e-01 -8.7681102752685547e-01 + <_> + + 0 -1 2847 1.6011999920010567e-02 + + -4.1600000113248825e-03 -5.9327799081802368e-01 + <_> + + 0 -1 2848 4.6640001237392426e-03 + + -3.0153999105095863e-02 4.8345300555229187e-01 + <_> + + 0 -1 2849 6.7579997703433037e-03 + + -2.2667400538921356e-01 3.3662301301956177e-01 + <_> + + 0 -1 2850 4.7289999201893806e-03 + + -6.0373999178409576e-02 3.1458100676536560e-01 + <_> + + 0 -1 2851 2.5869999080896378e-03 + + -2.9872599244117737e-01 1.7787499725818634e-01 + <_> + + 0 -1 2852 2.8989999555051327e-03 + + 2.1890200674533844e-01 -2.9567098617553711e-01 + <_> + + 0 -1 2853 -3.0053999274969101e-02 + + 1.2150429487228394e+00 -1.4354999363422394e-01 + <_> + + 0 -1 2854 1.4181000180542469e-02 + + 1.2451999820768833e-02 5.5490100383758545e-01 + <_> + + 0 -1 2855 -6.0527000576257706e-02 + + -1.4933999776840210e+00 -6.5227001905441284e-02 + <_> + + 0 -1 2856 -1.9882999360561371e-02 + + -3.8526400923728943e-01 1.9761200249195099e-01 + <_> + + 0 -1 2857 3.1218999996781349e-02 + + -2.1281200647354126e-01 2.9446500539779663e-01 + <_> + + 0 -1 2858 1.8271999433636665e-02 + + 9.7200000891461968e-04 6.6814202070236206e-01 + <_> + + 0 -1 2859 1.1089999461546540e-03 + + -6.2467902898788452e-01 -1.6599999507889152e-03 + <_> + + 0 -1 2860 -3.6713998764753342e-02 + + -4.2333900928497314e-01 1.2084700167179108e-01 + <_> + + 0 -1 2861 1.2044000439345837e-02 + + 2.5882000103592873e-02 -5.0732398033142090e-01 + <_> + + 0 -1 2862 7.4749000370502472e-02 + + 1.3184699416160583e-01 -2.1739600598812103e-01 + <_> + + 0 -1 2863 -2.3473200201988220e-01 + + 1.1775610446929932e+00 -1.5114699304103851e-01 + <_> + + 0 -1 2864 1.4096499979496002e-01 + + 3.3991001546382904e-02 3.9923098683357239e-01 + <_> + + 0 -1 2865 6.1789997853338718e-03 + + -3.1806701421737671e-01 1.1681699752807617e-01 + <_> + + 0 -1 2866 -5.7216998189687729e-02 + + 8.4399098157882690e-01 8.3889000117778778e-02 + <_> + + 0 -1 2867 -5.5227000266313553e-02 + + 3.6888301372528076e-01 -1.8913400173187256e-01 + <_> + + 0 -1 2868 -2.1583000198006630e-02 + + -5.2161800861358643e-01 1.5772600471973419e-01 + <_> + + 0 -1 2869 2.5747999548912048e-02 + + -5.9921998530626297e-02 -1.0674990415573120e+00 + <_> + + 0 -1 2870 -1.3098999857902527e-02 + + 7.8958398103713989e-01 5.2099999040365219e-02 + <_> + + 0 -1 2871 2.2799998987466097e-03 + + -1.1704430580139160e+00 -5.9356998652219772e-02 + <_> + + 0 -1 2872 8.8060004636645317e-03 + + 4.1717998683452606e-02 6.6352599859237671e-01 + <_> + + 0 -1 2873 -8.9699998497962952e-03 + + -3.5862699151039124e-01 6.0458000749349594e-02 + <_> + + 0 -1 2874 4.0230001322925091e-03 + + 2.0979399979114532e-01 -2.4806000292301178e-01 + <_> + + 0 -1 2875 2.5017000734806061e-02 + + -1.8795900046825409e-01 3.9547100663185120e-01 + <_> + + 0 -1 2876 -5.9009999968111515e-03 + + 2.5663900375366211e-01 -9.4919003546237946e-02 + <_> + + 0 -1 2877 4.3850000947713852e-03 + + 3.3139001578092575e-02 -4.6075400710105896e-01 + <_> + + 0 -1 2878 -3.3771999180316925e-02 + + -9.8881602287292480e-01 1.4636899530887604e-01 + <_> + + 0 -1 2879 4.4523000717163086e-02 + + -1.3286699354648590e-01 1.5796790122985840e+00 + <_> + + 0 -1 2880 -4.0929000824689865e-02 + + 3.3877098560333252e-01 7.4970997869968414e-02 + <_> + + 0 -1 2881 3.9351999759674072e-02 + + -1.8327899277210236e-01 4.6980699896812439e-01 + <_> + + 0 -1 2882 -7.0322997868061066e-02 + + -9.8322701454162598e-01 1.1808100342750549e-01 + <_> + + 0 -1 2883 3.5743001848459244e-02 + + -3.3050999045372009e-02 -8.3610898256301880e-01 + <_> + + 0 -1 2884 -4.2961999773979187e-02 + + 1.1670809984207153e+00 8.0692000687122345e-02 + <_> + + 0 -1 2885 -2.1007999777793884e-02 + + 6.3869798183441162e-01 -1.7626300454139709e-01 + <_> + + 0 -1 2886 -1.5742200613021851e-01 + + -2.3302499949932098e-01 1.2517499923706055e-01 + <_> + + 0 -1 2887 7.8659998252987862e-03 + + -2.2037999331951141e-01 2.7196800708770752e-01 + <_> + + 0 -1 2888 2.3622000589966774e-02 + + 1.6127300262451172e-01 -4.3329000473022461e-01 + <_> + + 0 -1 2889 7.4692003428936005e-02 + + -1.6991999745368958e-01 5.8884900808334351e-01 + <_> + + 0 -1 2890 -6.4799998654052615e-04 + + 2.5842899084091187e-01 -3.5911999642848969e-02 + <_> + + 0 -1 2891 -1.6290999948978424e-02 + + -7.6764398813247681e-01 -2.0472999662160873e-02 + <_> + + 0 -1 2892 -3.3133998513221741e-02 + + -2.7180099487304688e-01 1.4325700700283051e-01 + <_> + + 0 -1 2893 4.8797998577356339e-02 + + 7.6408997178077698e-02 -4.1445198655128479e-01 + <_> + + 0 -1 2894 2.2869999520480633e-03 + + -3.8628999143838882e-02 2.0753799378871918e-01 + <_> + + 0 -1 2895 4.5304000377655029e-02 + + -1.7777900397777557e-01 6.3461399078369141e-01 + <_> + + 0 -1 2896 1.0705800354480743e-01 + + 1.8972299993038177e-01 -5.1236200332641602e-01 + <_> + + 0 -1 2897 -4.0525000542402267e-02 + + 7.0614999532699585e-01 -1.7803299427032471e-01 + <_> + + 0 -1 2898 3.1968999654054642e-02 + + 6.8149998784065247e-02 6.8733102083206177e-01 + <_> + + 0 -1 2899 -5.7617001235485077e-02 + + 7.5170499086380005e-01 -1.5764999389648438e-01 + <_> + + 0 -1 2900 1.3593999668955803e-02 + + 1.9411900639533997e-01 -2.4561899900436401e-01 + <_> + + 0 -1 2901 7.1396000683307648e-02 + + -4.6881001442670822e-02 -8.8198298215866089e-01 + <_> + + 0 -1 2902 -1.4895999804139137e-02 + + -4.4532400369644165e-01 1.7679899930953979e-01 + <_> + + 0 -1 2903 -1.0026000440120697e-02 + + 6.5122699737548828e-01 -1.6709999740123749e-01 + <_> + + 0 -1 2904 3.7589999847114086e-03 + + -5.8301001787185669e-02 3.4483298659324646e-01 + <_> + + 0 -1 2905 1.6263000667095184e-02 + + -1.5581500530242920e-01 8.6432701349258423e-01 + <_> + + 0 -1 2906 -4.0176000446081161e-02 + + -6.1028599739074707e-01 1.1796399950981140e-01 + <_> + + 0 -1 2907 2.7080999687314034e-02 + + -4.9601998180150986e-02 -8.9990001916885376e-01 + <_> + + 0 -1 2908 5.2420001477003098e-02 + + 1.1297199875116348e-01 -1.0833640098571777e+00 + <_> + + 0 -1 2909 -1.9160000607371330e-02 + + -7.9880100488662720e-01 -3.4079000353813171e-02 + <_> + + 0 -1 2910 -3.7730000913143158e-03 + + -1.9124099612236023e-01 2.1535199880599976e-01 + <_> + + 0 -1 2911 7.5762003660202026e-02 + + -1.3421699404716492e-01 1.6807060241699219e+00 + <_> + + 0 -1 2912 -2.2173000499606133e-02 + + 4.8600998520851135e-01 3.6160000599920750e-03 + + <_> + + <_> + 6 4 12 9 -1. + <_> + 6 7 12 3 3. + <_> + + <_> + 6 4 12 7 -1. + <_> + 10 4 4 7 3. + <_> + + <_> + 3 9 18 9 -1. + <_> + 3 12 18 3 3. + <_> + + <_> + 8 18 9 6 -1. + <_> + 8 20 9 2 3. + <_> + + <_> + 3 5 4 19 -1. + <_> + 5 5 2 19 2. + <_> + + <_> + 6 5 12 16 -1. + <_> + 6 13 12 8 2. + <_> + + <_> + 5 8 12 6 -1. + <_> + 5 11 12 3 2. + <_> + + <_> + 11 14 4 10 -1. + <_> + 11 19 4 5 2. + <_> + + <_> + 4 0 7 6 -1. + <_> + 4 3 7 3 2. + <_> + + <_> + 6 6 12 6 -1. + <_> + 6 8 12 2 3. + <_> + + <_> + 6 4 12 7 -1. + <_> + 10 4 4 7 3. + <_> + + <_> + 1 8 19 12 -1. + <_> + 1 12 19 4 3. + <_> + + <_> + 0 2 24 3 -1. + <_> + 8 2 8 3 3. + <_> + + <_> + 9 9 6 15 -1. + <_> + 9 14 6 5 3. + <_> + + <_> + 5 6 14 10 -1. + <_> + 5 11 14 5 2. + <_> + + <_> + 5 0 14 9 -1. + <_> + 5 3 14 3 3. + <_> + + <_> + 13 11 9 6 -1. + <_> + 16 11 3 6 3. + <_> + + <_> + 7 5 6 10 -1. + <_> + 9 5 2 10 3. + <_> + + <_> + 10 8 6 10 -1. + <_> + 12 8 2 10 3. + <_> + + <_> + 2 5 4 9 -1. + <_> + 4 5 2 9 2. + <_> + + <_> + 18 0 6 11 -1. + <_> + 20 0 2 11 3. + <_> + + <_> + 0 6 24 13 -1. + <_> + 8 6 8 13 3. + <_> + + <_> + 9 6 6 9 -1. + <_> + 11 6 2 9 3. + <_> + + <_> + 7 18 10 6 -1. + <_> + 7 20 10 2 3. + <_> + + <_> + 5 7 14 12 -1. + <_> + 5 13 14 6 2. + <_> + + <_> + 0 3 24 3 -1. + <_> + 8 3 8 3 3. + <_> + + <_> + 5 8 15 6 -1. + <_> + 5 11 15 3 2. + <_> + + <_> + 9 6 5 14 -1. + <_> + 9 13 5 7 2. + <_> + + <_> + 9 5 6 10 -1. + <_> + 11 5 2 10 3. + <_> + + <_> + 6 6 3 12 -1. + <_> + 6 12 3 6 2. + <_> + + <_> + 3 21 18 3 -1. + <_> + 9 21 6 3 3. + <_> + + <_> + 5 6 13 6 -1. + <_> + 5 8 13 2 3. + <_> + + <_> + 18 1 6 15 -1. + <_> + 18 1 3 15 2. + <_> + + <_> + 1 1 6 15 -1. + <_> + 4 1 3 15 2. + <_> + + <_> + 0 8 24 15 -1. + <_> + 8 8 8 15 3. + <_> + + <_> + 5 6 14 12 -1. + <_> + 5 6 7 6 2. + <_> + 12 12 7 6 2. + <_> + + <_> + 2 12 21 12 -1. + <_> + 2 16 21 4 3. + <_> + + <_> + 8 1 4 10 -1. + <_> + 10 1 2 10 2. + <_> + + <_> + 2 13 20 10 -1. + <_> + 2 13 10 10 2. + <_> + + <_> + 0 1 6 13 -1. + <_> + 2 1 2 13 3. + <_> + + <_> + 20 2 4 13 -1. + <_> + 20 2 2 13 2. + <_> + + <_> + 0 5 22 19 -1. + <_> + 11 5 11 19 2. + <_> + + <_> + 18 4 6 9 -1. + <_> + 20 4 2 9 3. + <_> + + <_> + 0 3 6 11 -1. + <_> + 2 3 2 11 3. + <_> + + <_> + 12 1 4 9 -1. + <_> + 12 1 2 9 2. + <_> + + <_> + 0 6 19 3 -1. + <_> + 0 7 19 1 3. + <_> + + <_> + 12 1 4 9 -1. + <_> + 12 1 2 9 2. + <_> + + <_> + 8 1 4 9 -1. + <_> + 10 1 2 9 2. + <_> + + <_> + 5 5 14 14 -1. + <_> + 12 5 7 7 2. + <_> + 5 12 7 7 2. + <_> + + <_> + 1 10 18 2 -1. + <_> + 1 11 18 1 2. + <_> + + <_> + 17 13 4 11 -1. + <_> + 17 13 2 11 2. + <_> + + <_> + 0 4 6 9 -1. + <_> + 0 7 6 3 3. + <_> + + <_> + 6 4 12 9 -1. + <_> + 6 7 12 3 3. + <_> + + <_> + 6 5 12 6 -1. + <_> + 10 5 4 6 3. + <_> + + <_> + 0 1 24 5 -1. + <_> + 8 1 8 5 3. + <_> + + <_> + 4 10 18 6 -1. + <_> + 4 12 18 2 3. + <_> + + <_> + 2 17 12 6 -1. + <_> + 2 17 6 3 2. + <_> + 8 20 6 3 2. + <_> + + <_> + 19 3 4 13 -1. + <_> + 19 3 2 13 2. + <_> + + <_> + 1 3 4 13 -1. + <_> + 3 3 2 13 2. + <_> + + <_> + 0 1 24 23 -1. + <_> + 8 1 8 23 3. + <_> + + <_> + 1 7 8 12 -1. + <_> + 1 11 8 4 3. + <_> + + <_> + 14 7 3 14 -1. + <_> + 14 14 3 7 2. + <_> + + <_> + 3 12 16 6 -1. + <_> + 3 12 8 3 2. + <_> + 11 15 8 3 2. + <_> + + <_> + 6 6 12 6 -1. + <_> + 6 8 12 2 3. + <_> + + <_> + 8 7 6 12 -1. + <_> + 8 13 6 6 2. + <_> + + <_> + 15 15 9 6 -1. + <_> + 15 17 9 2 3. + <_> + + <_> + 1 17 18 3 -1. + <_> + 1 18 18 1 3. + <_> + + <_> + 4 4 16 12 -1. + <_> + 4 10 16 6 2. + <_> + + <_> + 0 1 4 20 -1. + <_> + 2 1 2 20 2. + <_> + + <_> + 3 0 18 2 -1. + <_> + 3 1 18 1 2. + <_> + + <_> + 1 5 20 14 -1. + <_> + 1 5 10 7 2. + <_> + 11 12 10 7 2. + <_> + + <_> + 5 8 14 12 -1. + <_> + 5 12 14 4 3. + <_> + + <_> + 3 14 7 9 -1. + <_> + 3 17 7 3 3. + <_> + + <_> + 14 15 9 6 -1. + <_> + 14 17 9 2 3. + <_> + + <_> + 1 15 9 6 -1. + <_> + 1 17 9 2 3. + <_> + + <_> + 11 6 8 10 -1. + <_> + 15 6 4 5 2. + <_> + 11 11 4 5 2. + <_> + + <_> + 5 5 14 14 -1. + <_> + 5 5 7 7 2. + <_> + 12 12 7 7 2. + <_> + + <_> + 6 0 12 5 -1. + <_> + 10 0 4 5 3. + <_> + + <_> + 9 0 6 9 -1. + <_> + 9 3 6 3 3. + <_> + + <_> + 9 6 6 9 -1. + <_> + 11 6 2 9 3. + <_> + + <_> + 7 0 6 9 -1. + <_> + 9 0 2 9 3. + <_> + + <_> + 10 6 6 9 -1. + <_> + 12 6 2 9 3. + <_> + + <_> + 8 6 6 9 -1. + <_> + 10 6 2 9 3. + <_> + + <_> + 3 8 18 4 -1. + <_> + 9 8 6 4 3. + <_> + + <_> + 6 0 12 9 -1. + <_> + 6 3 12 3 3. + <_> + + <_> + 0 0 24 6 -1. + <_> + 8 0 8 6 3. + <_> + + <_> + 4 7 16 12 -1. + <_> + 4 11 16 4 3. + <_> + + <_> + 11 6 6 6 -1. + <_> + 11 6 3 6 2. + <_> + + <_> + 0 20 24 3 -1. + <_> + 8 20 8 3 3. + <_> + + <_> + 11 6 4 9 -1. + <_> + 11 6 2 9 2. + <_> + + <_> + 4 13 15 4 -1. + <_> + 9 13 5 4 3. + <_> + + <_> + 11 6 4 9 -1. + <_> + 11 6 2 9 2. + <_> + + <_> + 9 6 4 9 -1. + <_> + 11 6 2 9 2. + <_> + + <_> + 9 12 6 12 -1. + <_> + 9 18 6 6 2. + <_> + + <_> + 1 22 18 2 -1. + <_> + 1 23 18 1 2. + <_> + + <_> + 10 7 4 10 -1. + <_> + 10 12 4 5 2. + <_> + + <_> + 6 7 8 10 -1. + <_> + 6 12 8 5 2. + <_> + + <_> + 7 6 10 6 -1. + <_> + 7 8 10 2 3. + <_> + + <_> + 0 14 10 4 -1. + <_> + 0 16 10 2 2. + <_> + + <_> + 6 18 18 2 -1. + <_> + 6 19 18 1 2. + <_> + + <_> + 1 1 22 3 -1. + <_> + 1 2 22 1 3. + <_> + + <_> + 6 16 18 3 -1. + <_> + 6 17 18 1 3. + <_> + + <_> + 2 4 6 15 -1. + <_> + 5 4 3 15 2. + <_> + + <_> + 20 4 4 10 -1. + <_> + 20 4 2 10 2. + <_> + + <_> + 0 4 4 10 -1. + <_> + 2 4 2 10 2. + <_> + + <_> + 2 16 20 6 -1. + <_> + 12 16 10 3 2. + <_> + 2 19 10 3 2. + <_> + + <_> + 0 12 8 9 -1. + <_> + 4 12 4 9 2. + <_> + + <_> + 12 0 6 9 -1. + <_> + 14 0 2 9 3. + <_> + + <_> + 5 10 6 6 -1. + <_> + 8 10 3 6 2. + <_> + + <_> + 11 8 12 6 -1. + <_> + 17 8 6 3 2. + <_> + 11 11 6 3 2. + <_> + + <_> + 0 8 12 6 -1. + <_> + 0 8 6 3 2. + <_> + 6 11 6 3 2. + <_> + + <_> + 12 0 6 9 -1. + <_> + 14 0 2 9 3. + <_> + + <_> + 6 0 6 9 -1. + <_> + 8 0 2 9 3. + <_> + + <_> + 8 14 9 6 -1. + <_> + 8 16 9 2 3. + <_> + + <_> + 0 16 9 6 -1. + <_> + 0 18 9 2 3. + <_> + + <_> + 10 8 6 10 -1. + <_> + 12 8 2 10 3. + <_> + + <_> + 3 19 12 3 -1. + <_> + 9 19 6 3 2. + <_> + + <_> + 2 10 20 2 -1. + <_> + 2 11 20 1 2. + <_> + + <_> + 2 9 18 12 -1. + <_> + 2 9 9 6 2. + <_> + 11 15 9 6 2. + <_> + + <_> + 3 0 18 24 -1. + <_> + 3 0 9 24 2. + <_> + + <_> + 5 6 14 10 -1. + <_> + 5 6 7 5 2. + <_> + 12 11 7 5 2. + <_> + + <_> + 9 5 10 12 -1. + <_> + 14 5 5 6 2. + <_> + 9 11 5 6 2. + <_> + + <_> + 4 5 12 12 -1. + <_> + 4 5 6 6 2. + <_> + 10 11 6 6 2. + <_> + + <_> + 4 14 18 3 -1. + <_> + 4 15 18 1 3. + <_> + + <_> + 6 13 8 8 -1. + <_> + 6 17 8 4 2. + <_> + + <_> + 3 16 18 6 -1. + <_> + 3 19 18 3 2. + <_> + + <_> + 0 0 6 6 -1. + <_> + 3 0 3 6 2. + <_> + + <_> + 6 6 12 18 -1. + <_> + 10 6 4 18 3. + <_> + + <_> + 6 1 4 14 -1. + <_> + 8 1 2 14 2. + <_> + + <_> + 3 2 19 2 -1. + <_> + 3 3 19 1 2. + <_> + + <_> + 1 8 22 13 -1. + <_> + 12 8 11 13 2. + <_> + + <_> + 8 9 11 4 -1. + <_> + 8 11 11 2 2. + <_> + + <_> + 0 12 15 10 -1. + <_> + 5 12 5 10 3. + <_> + + <_> + 12 16 12 6 -1. + <_> + 16 16 4 6 3. + <_> + + <_> + 0 16 12 6 -1. + <_> + 4 16 4 6 3. + <_> + + <_> + 19 1 5 12 -1. + <_> + 19 5 5 4 3. + <_> + + <_> + 0 2 24 4 -1. + <_> + 8 2 8 4 3. + <_> + + <_> + 6 8 12 4 -1. + <_> + 6 10 12 2 2. + <_> + + <_> + 7 5 9 6 -1. + <_> + 10 5 3 6 3. + <_> + + <_> + 9 17 6 6 -1. + <_> + 9 20 6 3 2. + <_> + + <_> + 0 7 22 15 -1. + <_> + 0 12 22 5 3. + <_> + + <_> + 4 1 17 9 -1. + <_> + 4 4 17 3 3. + <_> + + <_> + 7 5 6 10 -1. + <_> + 9 5 2 10 3. + <_> + + <_> + 18 1 6 8 -1. + <_> + 18 1 3 8 2. + <_> + + <_> + 0 1 6 7 -1. + <_> + 3 1 3 7 2. + <_> + + <_> + 18 0 6 22 -1. + <_> + 18 0 3 22 2. + <_> + + <_> + 0 0 6 22 -1. + <_> + 3 0 3 22 2. + <_> + + <_> + 16 7 8 16 -1. + <_> + 16 7 4 16 2. + <_> + + <_> + 2 10 19 6 -1. + <_> + 2 12 19 2 3. + <_> + + <_> + 9 9 6 12 -1. + <_> + 9 13 6 4 3. + <_> + + <_> + 2 15 17 6 -1. + <_> + 2 17 17 2 3. + <_> + + <_> + 14 7 3 14 -1. + <_> + 14 14 3 7 2. + <_> + + <_> + 5 6 8 10 -1. + <_> + 5 6 4 5 2. + <_> + 9 11 4 5 2. + <_> + + <_> + 15 8 9 11 -1. + <_> + 18 8 3 11 3. + <_> + + <_> + 0 8 9 11 -1. + <_> + 3 8 3 11 3. + <_> + + <_> + 8 6 10 18 -1. + <_> + 8 15 10 9 2. + <_> + + <_> + 7 7 3 14 -1. + <_> + 7 14 3 7 2. + <_> + + <_> + 0 14 24 8 -1. + <_> + 8 14 8 8 3. + <_> + + <_> + 1 10 18 14 -1. + <_> + 10 10 9 14 2. + <_> + + <_> + 14 12 6 6 -1. + <_> + 14 15 6 3 2. + <_> + + <_> + 7 0 10 16 -1. + <_> + 7 0 5 8 2. + <_> + 12 8 5 8 2. + <_> + + <_> + 10 0 9 6 -1. + <_> + 13 0 3 6 3. + <_> + + <_> + 4 3 16 4 -1. + <_> + 12 3 8 4 2. + <_> + + <_> + 10 0 9 6 -1. + <_> + 13 0 3 6 3. + <_> + + <_> + 1 1 20 4 -1. + <_> + 1 1 10 2 2. + <_> + 11 3 10 2 2. + <_> + + <_> + 10 0 9 6 -1. + <_> + 13 0 3 6 3. + <_> + + <_> + 5 0 9 6 -1. + <_> + 8 0 3 6 3. + <_> + + <_> + 8 18 10 6 -1. + <_> + 8 20 10 2 3. + <_> + + <_> + 6 3 6 9 -1. + <_> + 8 3 2 9 3. + <_> + + <_> + 7 3 12 6 -1. + <_> + 7 5 12 2 3. + <_> + + <_> + 0 10 18 3 -1. + <_> + 0 11 18 1 3. + <_> + + <_> + 1 10 22 3 -1. + <_> + 1 11 22 1 3. + <_> + + <_> + 5 11 8 8 -1. + <_> + 9 11 4 8 2. + <_> + + <_> + 12 11 6 6 -1. + <_> + 12 11 3 6 2. + <_> + + <_> + 6 11 6 6 -1. + <_> + 9 11 3 6 2. + <_> + + <_> + 7 10 11 6 -1. + <_> + 7 12 11 2 3. + <_> + + <_> + 0 13 24 4 -1. + <_> + 0 13 12 2 2. + <_> + 12 15 12 2 2. + <_> + + <_> + 2 4 22 12 -1. + <_> + 13 4 11 6 2. + <_> + 2 10 11 6 2. + <_> + + <_> + 2 0 20 17 -1. + <_> + 12 0 10 17 2. + <_> + + <_> + 14 0 2 24 -1. + <_> + 14 0 1 24 2. + <_> + + <_> + 8 0 2 24 -1. + <_> + 9 0 1 24 2. + <_> + + <_> + 14 1 2 22 -1. + <_> + 14 1 1 22 2. + <_> + + <_> + 8 1 2 22 -1. + <_> + 9 1 1 22 2. + <_> + + <_> + 17 6 3 18 -1. + <_> + 18 6 1 18 3. + <_> + + <_> + 6 14 9 6 -1. + <_> + 6 16 9 2 3. + <_> + + <_> + 13 14 9 4 -1. + <_> + 13 16 9 2 2. + <_> + + <_> + 3 18 18 3 -1. + <_> + 3 19 18 1 3. + <_> + + <_> + 9 4 8 18 -1. + <_> + 13 4 4 9 2. + <_> + 9 13 4 9 2. + <_> + + <_> + 0 17 18 3 -1. + <_> + 0 18 18 1 3. + <_> + + <_> + 0 2 12 4 -1. + <_> + 6 2 6 4 2. + <_> + + <_> + 6 8 14 6 -1. + <_> + 6 11 14 3 2. + <_> + + <_> + 7 5 6 6 -1. + <_> + 10 5 3 6 2. + <_> + + <_> + 10 5 6 16 -1. + <_> + 10 13 6 8 2. + <_> + + <_> + 1 4 9 16 -1. + <_> + 4 4 3 16 3. + <_> + + <_> + 5 0 18 9 -1. + <_> + 5 3 18 3 3. + <_> + + <_> + 9 15 5 8 -1. + <_> + 9 19 5 4 2. + <_> + + <_> + 20 0 4 9 -1. + <_> + 20 0 2 9 2. + <_> + + <_> + 2 0 18 3 -1. + <_> + 2 1 18 1 3. + <_> + + <_> + 5 22 19 2 -1. + <_> + 5 23 19 1 2. + <_> + + <_> + 0 0 4 9 -1. + <_> + 2 0 2 9 2. + <_> + + <_> + 5 6 19 18 -1. + <_> + 5 12 19 6 3. + <_> + + <_> + 0 1 6 9 -1. + <_> + 2 1 2 9 3. + <_> + + <_> + 6 5 14 12 -1. + <_> + 13 5 7 6 2. + <_> + 6 11 7 6 2. + <_> + + <_> + 0 1 20 2 -1. + <_> + 0 2 20 1 2. + <_> + + <_> + 1 2 22 3 -1. + <_> + 1 3 22 1 3. + <_> + + <_> + 2 8 7 9 -1. + <_> + 2 11 7 3 3. + <_> + + <_> + 2 12 22 4 -1. + <_> + 13 12 11 2 2. + <_> + 2 14 11 2 2. + <_> + + <_> + 0 12 22 4 -1. + <_> + 0 12 11 2 2. + <_> + 11 14 11 2 2. + <_> + + <_> + 9 7 6 11 -1. + <_> + 11 7 2 11 3. + <_> + + <_> + 7 1 9 6 -1. + <_> + 10 1 3 6 3. + <_> + + <_> + 11 2 4 10 -1. + <_> + 11 7 4 5 2. + <_> + + <_> + 6 4 12 12 -1. + <_> + 6 10 12 6 2. + <_> + + <_> + 18 1 6 15 -1. + <_> + 18 6 6 5 3. + <_> + + <_> + 3 15 18 3 -1. + <_> + 3 16 18 1 3. + <_> + + <_> + 18 5 6 9 -1. + <_> + 18 8 6 3 3. + <_> + + <_> + 1 5 16 6 -1. + <_> + 1 5 8 3 2. + <_> + 9 8 8 3 2. + <_> + + <_> + 11 0 6 9 -1. + <_> + 13 0 2 9 3. + <_> + + <_> + 0 4 24 14 -1. + <_> + 0 4 12 7 2. + <_> + 12 11 12 7 2. + <_> + + <_> + 13 0 4 13 -1. + <_> + 13 0 2 13 2. + <_> + + <_> + 7 0 4 13 -1. + <_> + 9 0 2 13 2. + <_> + + <_> + 11 6 6 9 -1. + <_> + 13 6 2 9 3. + <_> + + <_> + 8 7 6 9 -1. + <_> + 10 7 2 9 3. + <_> + + <_> + 13 17 9 6 -1. + <_> + 13 19 9 2 3. + <_> + + <_> + 2 18 14 6 -1. + <_> + 2 18 7 3 2. + <_> + 9 21 7 3 2. + <_> + + <_> + 3 18 18 4 -1. + <_> + 12 18 9 2 2. + <_> + 3 20 9 2 2. + <_> + + <_> + 0 20 15 4 -1. + <_> + 5 20 5 4 3. + <_> + + <_> + 9 15 15 9 -1. + <_> + 14 15 5 9 3. + <_> + + <_> + 4 4 16 4 -1. + <_> + 4 6 16 2 2. + <_> + + <_> + 7 6 10 6 -1. + <_> + 7 8 10 2 3. + <_> + + <_> + 0 14 15 10 -1. + <_> + 5 14 5 10 3. + <_> + + <_> + 7 9 10 14 -1. + <_> + 12 9 5 7 2. + <_> + 7 16 5 7 2. + <_> + + <_> + 7 6 6 9 -1. + <_> + 9 6 2 9 3. + <_> + + <_> + 3 6 18 3 -1. + <_> + 3 7 18 1 3. + <_> + + <_> + 0 10 18 3 -1. + <_> + 0 11 18 1 3. + <_> + + <_> + 3 16 18 4 -1. + <_> + 12 16 9 2 2. + <_> + 3 18 9 2 2. + <_> + + <_> + 4 6 14 6 -1. + <_> + 4 6 7 3 2. + <_> + 11 9 7 3 2. + <_> + + <_> + 13 0 2 18 -1. + <_> + 13 0 1 18 2. + <_> + + <_> + 9 0 2 18 -1. + <_> + 10 0 1 18 2. + <_> + + <_> + 5 7 15 10 -1. + <_> + 10 7 5 10 3. + <_> + + <_> + 1 20 21 4 -1. + <_> + 8 20 7 4 3. + <_> + + <_> + 10 5 5 18 -1. + <_> + 10 14 5 9 2. + <_> + + <_> + 0 2 24 6 -1. + <_> + 0 2 12 3 2. + <_> + 12 5 12 3 2. + <_> + + <_> + 1 1 22 8 -1. + <_> + 12 1 11 4 2. + <_> + 1 5 11 4 2. + <_> + + <_> + 4 0 15 9 -1. + <_> + 4 3 15 3 3. + <_> + + <_> + 0 0 24 19 -1. + <_> + 8 0 8 19 3. + <_> + + <_> + 2 21 18 3 -1. + <_> + 11 21 9 3 2. + <_> + + <_> + 9 7 10 4 -1. + <_> + 9 7 5 4 2. + <_> + + <_> + 5 7 10 4 -1. + <_> + 10 7 5 4 2. + <_> + + <_> + 17 8 6 16 -1. + <_> + 20 8 3 8 2. + <_> + 17 16 3 8 2. + <_> + + <_> + 1 15 20 4 -1. + <_> + 1 15 10 2 2. + <_> + 11 17 10 2 2. + <_> + + <_> + 14 15 10 6 -1. + <_> + 14 17 10 2 3. + <_> + + <_> + 3 0 16 9 -1. + <_> + 3 3 16 3 3. + <_> + + <_> + 15 6 7 15 -1. + <_> + 15 11 7 5 3. + <_> + + <_> + 9 1 6 13 -1. + <_> + 11 1 2 13 3. + <_> + + <_> + 17 2 6 14 -1. + <_> + 17 2 3 14 2. + <_> + + <_> + 3 14 12 10 -1. + <_> + 3 14 6 5 2. + <_> + 9 19 6 5 2. + <_> + + <_> + 7 6 10 6 -1. + <_> + 7 8 10 2 3. + <_> + + <_> + 1 2 6 14 -1. + <_> + 4 2 3 14 2. + <_> + + <_> + 10 4 5 12 -1. + <_> + 10 8 5 4 3. + <_> + + <_> + 0 17 24 5 -1. + <_> + 8 17 8 5 3. + <_> + + <_> + 15 7 5 12 -1. + <_> + 15 11 5 4 3. + <_> + + <_> + 3 1 6 12 -1. + <_> + 3 1 3 6 2. + <_> + 6 7 3 6 2. + <_> + + <_> + 12 13 6 6 -1. + <_> + 12 16 6 3 2. + <_> + + <_> + 6 13 6 6 -1. + <_> + 6 16 6 3 2. + <_> + + <_> + 14 6 3 16 -1. + <_> + 14 14 3 8 2. + <_> + + <_> + 1 12 13 6 -1. + <_> + 1 14 13 2 3. + <_> + + <_> + 13 1 4 9 -1. + <_> + 13 1 2 9 2. + <_> + + <_> + 7 0 9 6 -1. + <_> + 10 0 3 6 3. + <_> + + <_> + 12 2 6 9 -1. + <_> + 12 2 3 9 2. + <_> + + <_> + 6 2 6 9 -1. + <_> + 9 2 3 9 2. + <_> + + <_> + 6 18 12 6 -1. + <_> + 6 20 12 2 3. + <_> + + <_> + 7 6 6 9 -1. + <_> + 9 6 2 9 3. + <_> + + <_> + 7 7 12 3 -1. + <_> + 7 7 6 3 2. + <_> + + <_> + 8 3 8 21 -1. + <_> + 8 10 8 7 3. + <_> + + <_> + 7 4 10 12 -1. + <_> + 7 8 10 4 3. + <_> + + <_> + 0 1 6 9 -1. + <_> + 0 4 6 3 3. + <_> + + <_> + 15 2 2 20 -1. + <_> + 15 2 1 20 2. + <_> + + <_> + 0 3 6 9 -1. + <_> + 0 6 6 3 3. + <_> + + <_> + 15 3 2 21 -1. + <_> + 15 3 1 21 2. + <_> + + <_> + 7 0 2 23 -1. + <_> + 8 0 1 23 2. + <_> + + <_> + 15 8 9 4 -1. + <_> + 15 10 9 2 2. + <_> + + <_> + 0 8 9 4 -1. + <_> + 0 10 9 2 2. + <_> + + <_> + 8 14 9 6 -1. + <_> + 8 16 9 2 3. + <_> + + <_> + 0 14 9 6 -1. + <_> + 0 16 9 2 3. + <_> + + <_> + 3 10 18 4 -1. + <_> + 9 10 6 4 3. + <_> + + <_> + 0 0 24 19 -1. + <_> + 8 0 8 19 3. + <_> + + <_> + 9 1 8 12 -1. + <_> + 9 7 8 6 2. + <_> + + <_> + 10 6 4 10 -1. + <_> + 12 6 2 10 2. + <_> + + <_> + 7 9 10 12 -1. + <_> + 12 9 5 6 2. + <_> + 7 15 5 6 2. + <_> + + <_> + 5 0 3 19 -1. + <_> + 6 0 1 19 3. + <_> + + <_> + 14 0 6 10 -1. + <_> + 16 0 2 10 3. + <_> + + <_> + 2 0 6 12 -1. + <_> + 2 0 3 6 2. + <_> + 5 6 3 6 2. + <_> + + <_> + 0 11 24 2 -1. + <_> + 0 12 24 1 2. + <_> + + <_> + 4 9 13 4 -1. + <_> + 4 11 13 2 2. + <_> + + <_> + 9 8 6 9 -1. + <_> + 9 11 6 3 3. + <_> + + <_> + 0 12 16 4 -1. + <_> + 0 14 16 2 2. + <_> + + <_> + 18 12 6 9 -1. + <_> + 18 15 6 3 3. + <_> + + <_> + 0 12 6 9 -1. + <_> + 0 15 6 3 3. + <_> + + <_> + 8 7 10 4 -1. + <_> + 8 7 5 4 2. + <_> + + <_> + 8 7 6 9 -1. + <_> + 10 7 2 9 3. + <_> + + <_> + 11 0 6 9 -1. + <_> + 13 0 2 9 3. + <_> + + <_> + 7 0 6 9 -1. + <_> + 9 0 2 9 3. + <_> + + <_> + 12 3 6 15 -1. + <_> + 14 3 2 15 3. + <_> + + <_> + 6 3 6 15 -1. + <_> + 8 3 2 15 3. + <_> + + <_> + 15 2 9 4 -1. + <_> + 15 4 9 2 2. + <_> + + <_> + 5 10 6 7 -1. + <_> + 8 10 3 7 2. + <_> + + <_> + 9 14 6 10 -1. + <_> + 9 19 6 5 2. + <_> + + <_> + 7 13 5 8 -1. + <_> + 7 17 5 4 2. + <_> + + <_> + 14 5 3 16 -1. + <_> + 14 13 3 8 2. + <_> + + <_> + 2 17 18 3 -1. + <_> + 2 18 18 1 3. + <_> + + <_> + 5 18 19 3 -1. + <_> + 5 19 19 1 3. + <_> + + <_> + 9 0 6 9 -1. + <_> + 11 0 2 9 3. + <_> + + <_> + 12 4 3 18 -1. + <_> + 13 4 1 18 3. + <_> + + <_> + 9 4 3 18 -1. + <_> + 10 4 1 18 3. + <_> + + <_> + 3 3 18 9 -1. + <_> + 9 3 6 9 3. + <_> + + <_> + 6 1 6 14 -1. + <_> + 8 1 2 14 3. + <_> + + <_> + 12 16 9 6 -1. + <_> + 12 19 9 3 2. + <_> + + <_> + 1 3 20 16 -1. + <_> + 1 3 10 8 2. + <_> + 11 11 10 8 2. + <_> + + <_> + 12 5 6 12 -1. + <_> + 15 5 3 6 2. + <_> + 12 11 3 6 2. + <_> + + <_> + 1 2 22 16 -1. + <_> + 1 2 11 8 2. + <_> + 12 10 11 8 2. + <_> + + <_> + 10 14 5 10 -1. + <_> + 10 19 5 5 2. + <_> + + <_> + 3 21 18 3 -1. + <_> + 3 22 18 1 3. + <_> + + <_> + 10 14 6 10 -1. + <_> + 12 14 2 10 3. + <_> + + <_> + 0 2 24 4 -1. + <_> + 8 2 8 4 3. + <_> + + <_> + 6 4 12 9 -1. + <_> + 6 7 12 3 3. + <_> + + <_> + 6 6 12 5 -1. + <_> + 10 6 4 5 3. + <_> + + <_> + 5 8 14 12 -1. + <_> + 5 12 14 4 3. + <_> + + <_> + 4 14 8 10 -1. + <_> + 4 14 4 5 2. + <_> + 8 19 4 5 2. + <_> + + <_> + 11 6 5 14 -1. + <_> + 11 13 5 7 2. + <_> + + <_> + 7 6 3 16 -1. + <_> + 7 14 3 8 2. + <_> + + <_> + 3 7 18 8 -1. + <_> + 9 7 6 8 3. + <_> + + <_> + 2 3 20 2 -1. + <_> + 2 4 20 1 2. + <_> + + <_> + 3 12 19 6 -1. + <_> + 3 14 19 2 3. + <_> + + <_> + 8 6 6 9 -1. + <_> + 10 6 2 9 3. + <_> + + <_> + 16 6 6 14 -1. + <_> + 16 6 3 14 2. + <_> + + <_> + 7 9 6 12 -1. + <_> + 9 9 2 12 3. + <_> + + <_> + 18 6 6 18 -1. + <_> + 21 6 3 9 2. + <_> + 18 15 3 9 2. + <_> + + <_> + 0 6 6 18 -1. + <_> + 0 6 3 9 2. + <_> + 3 15 3 9 2. + <_> + + <_> + 18 2 6 9 -1. + <_> + 18 5 6 3 3. + <_> + + <_> + 3 18 15 6 -1. + <_> + 3 20 15 2 3. + <_> + + <_> + 18 2 6 9 -1. + <_> + 18 5 6 3 3. + <_> + + <_> + 0 2 6 9 -1. + <_> + 0 5 6 3 3. + <_> + + <_> + 5 10 18 2 -1. + <_> + 5 11 18 1 2. + <_> + + <_> + 6 0 12 6 -1. + <_> + 6 2 12 2 3. + <_> + + <_> + 10 0 6 9 -1. + <_> + 12 0 2 9 3. + <_> + + <_> + 8 0 6 9 -1. + <_> + 10 0 2 9 3. + <_> + + <_> + 15 12 9 6 -1. + <_> + 15 14 9 2 3. + <_> + + <_> + 3 6 13 6 -1. + <_> + 3 8 13 2 3. + <_> + + <_> + 15 12 9 6 -1. + <_> + 15 14 9 2 3. + <_> + + <_> + 2 5 6 15 -1. + <_> + 5 5 3 15 2. + <_> + + <_> + 8 8 9 6 -1. + <_> + 11 8 3 6 3. + <_> + + <_> + 8 6 3 14 -1. + <_> + 8 13 3 7 2. + <_> + + <_> + 15 12 9 6 -1. + <_> + 15 14 9 2 3. + <_> + + <_> + 4 12 10 4 -1. + <_> + 9 12 5 4 2. + <_> + + <_> + 13 1 4 19 -1. + <_> + 13 1 2 19 2. + <_> + + <_> + 7 1 4 19 -1. + <_> + 9 1 2 19 2. + <_> + + <_> + 18 9 6 9 -1. + <_> + 18 12 6 3 3. + <_> + + <_> + 1 21 18 3 -1. + <_> + 1 22 18 1 3. + <_> + + <_> + 14 13 10 9 -1. + <_> + 14 16 10 3 3. + <_> + + <_> + 1 13 22 4 -1. + <_> + 1 13 11 2 2. + <_> + 12 15 11 2 2. + <_> + + <_> + 4 6 16 6 -1. + <_> + 12 6 8 3 2. + <_> + 4 9 8 3 2. + <_> + + <_> + 1 0 18 22 -1. + <_> + 1 0 9 11 2. + <_> + 10 11 9 11 2. + <_> + + <_> + 10 7 8 14 -1. + <_> + 14 7 4 7 2. + <_> + 10 14 4 7 2. + <_> + + <_> + 0 4 6 20 -1. + <_> + 0 4 3 10 2. + <_> + 3 14 3 10 2. + <_> + + <_> + 15 0 6 9 -1. + <_> + 17 0 2 9 3. + <_> + + <_> + 3 0 6 9 -1. + <_> + 5 0 2 9 3. + <_> + + <_> + 15 12 6 12 -1. + <_> + 18 12 3 6 2. + <_> + 15 18 3 6 2. + <_> + + <_> + 3 12 6 12 -1. + <_> + 3 12 3 6 2. + <_> + 6 18 3 6 2. + <_> + + <_> + 15 12 9 6 -1. + <_> + 15 14 9 2 3. + <_> + + <_> + 0 12 9 6 -1. + <_> + 0 14 9 2 3. + <_> + + <_> + 4 14 19 3 -1. + <_> + 4 15 19 1 3. + <_> + + <_> + 2 13 19 3 -1. + <_> + 2 14 19 1 3. + <_> + + <_> + 14 15 10 6 -1. + <_> + 14 17 10 2 3. + <_> + + <_> + 6 0 10 12 -1. + <_> + 6 0 5 6 2. + <_> + 11 6 5 6 2. + <_> + + <_> + 17 1 6 12 -1. + <_> + 20 1 3 6 2. + <_> + 17 7 3 6 2. + <_> + + <_> + 1 1 6 12 -1. + <_> + 1 1 3 6 2. + <_> + 4 7 3 6 2. + <_> + + <_> + 16 14 6 9 -1. + <_> + 16 17 6 3 3. + <_> + + <_> + 7 3 9 12 -1. + <_> + 7 9 9 6 2. + <_> + + <_> + 12 1 4 12 -1. + <_> + 12 7 4 6 2. + <_> + + <_> + 4 0 14 8 -1. + <_> + 4 4 14 4 2. + <_> + + <_> + 10 6 6 9 -1. + <_> + 12 6 2 9 3. + <_> + + <_> + 2 10 18 3 -1. + <_> + 8 10 6 3 3. + <_> + + <_> + 15 15 9 6 -1. + <_> + 15 17 9 2 3. + <_> + + <_> + 0 1 21 23 -1. + <_> + 7 1 7 23 3. + <_> + + <_> + 6 9 17 4 -1. + <_> + 6 11 17 2 2. + <_> + + <_> + 1 0 11 18 -1. + <_> + 1 6 11 6 3. + <_> + + <_> + 6 15 13 6 -1. + <_> + 6 17 13 2 3. + <_> + + <_> + 0 15 9 6 -1. + <_> + 0 17 9 2 3. + <_> + + <_> + 8 7 15 4 -1. + <_> + 13 7 5 4 3. + <_> + + <_> + 9 12 6 9 -1. + <_> + 9 15 6 3 3. + <_> + + <_> + 6 8 18 3 -1. + <_> + 12 8 6 3 3. + <_> + + <_> + 0 14 24 4 -1. + <_> + 8 14 8 4 3. + <_> + + <_> + 16 10 3 12 -1. + <_> + 16 16 3 6 2. + <_> + + <_> + 0 3 24 3 -1. + <_> + 0 4 24 1 3. + <_> + + <_> + 14 17 10 6 -1. + <_> + 14 19 10 2 3. + <_> + + <_> + 1 13 18 3 -1. + <_> + 7 13 6 3 3. + <_> + + <_> + 5 0 18 9 -1. + <_> + 5 3 18 3 3. + <_> + + <_> + 4 3 16 9 -1. + <_> + 4 6 16 3 3. + <_> + + <_> + 16 5 3 12 -1. + <_> + 16 11 3 6 2. + <_> + + <_> + 0 7 18 4 -1. + <_> + 6 7 6 4 3. + <_> + + <_> + 10 6 6 9 -1. + <_> + 12 6 2 9 3. + <_> + + <_> + 9 8 6 10 -1. + <_> + 11 8 2 10 3. + <_> + + <_> + 9 15 6 9 -1. + <_> + 11 15 2 9 3. + <_> + + <_> + 3 1 18 21 -1. + <_> + 12 1 9 21 2. + <_> + + <_> + 6 8 12 7 -1. + <_> + 6 8 6 7 2. + <_> + + <_> + 8 5 6 9 -1. + <_> + 10 5 2 9 3. + <_> + + <_> + 0 2 24 4 -1. + <_> + 8 2 8 4 3. + <_> + + <_> + 14 7 5 12 -1. + <_> + 14 11 5 4 3. + <_> + + <_> + 5 7 5 12 -1. + <_> + 5 11 5 4 3. + <_> + + <_> + 9 6 6 9 -1. + <_> + 11 6 2 9 3. + <_> + + <_> + 0 1 6 17 -1. + <_> + 3 1 3 17 2. + <_> + + <_> + 3 1 19 9 -1. + <_> + 3 4 19 3 3. + <_> + + <_> + 3 18 12 6 -1. + <_> + 3 18 6 3 2. + <_> + 9 21 6 3 2. + <_> + + <_> + 20 4 4 19 -1. + <_> + 20 4 2 19 2. + <_> + + <_> + 0 16 10 7 -1. + <_> + 5 16 5 7 2. + <_> + + <_> + 8 7 10 12 -1. + <_> + 13 7 5 6 2. + <_> + 8 13 5 6 2. + <_> + + <_> + 6 7 10 12 -1. + <_> + 6 7 5 6 2. + <_> + 11 13 5 6 2. + <_> + + <_> + 9 2 9 6 -1. + <_> + 12 2 3 6 3. + <_> + + <_> + 1 20 21 4 -1. + <_> + 8 20 7 4 3. + <_> + + <_> + 9 12 9 6 -1. + <_> + 9 14 9 2 3. + <_> + + <_> + 7 2 9 6 -1. + <_> + 10 2 3 6 3. + <_> + + <_> + 13 0 4 14 -1. + <_> + 13 0 2 14 2. + <_> + + <_> + 7 0 4 14 -1. + <_> + 9 0 2 14 2. + <_> + + <_> + 14 15 9 6 -1. + <_> + 14 17 9 2 3. + <_> + + <_> + 2 8 18 5 -1. + <_> + 8 8 6 5 3. + <_> + + <_> + 18 3 6 11 -1. + <_> + 20 3 2 11 3. + <_> + + <_> + 6 5 11 14 -1. + <_> + 6 12 11 7 2. + <_> + + <_> + 18 4 6 9 -1. + <_> + 18 7 6 3 3. + <_> + + <_> + 7 6 9 6 -1. + <_> + 7 8 9 2 3. + <_> + + <_> + 18 4 6 9 -1. + <_> + 18 7 6 3 3. + <_> + + <_> + 0 4 6 9 -1. + <_> + 0 7 6 3 3. + <_> + + <_> + 9 4 9 4 -1. + <_> + 9 6 9 2 2. + <_> + + <_> + 0 22 19 2 -1. + <_> + 0 23 19 1 2. + <_> + + <_> + 17 14 6 9 -1. + <_> + 17 17 6 3 3. + <_> + + <_> + 1 14 6 9 -1. + <_> + 1 17 6 3 3. + <_> + + <_> + 14 11 4 9 -1. + <_> + 14 11 2 9 2. + <_> + + <_> + 6 11 4 9 -1. + <_> + 8 11 2 9 2. + <_> + + <_> + 3 9 18 7 -1. + <_> + 9 9 6 7 3. + <_> + + <_> + 9 12 6 10 -1. + <_> + 9 17 6 5 2. + <_> + + <_> + 12 0 6 9 -1. + <_> + 14 0 2 9 3. + <_> + + <_> + 6 0 6 9 -1. + <_> + 8 0 2 9 3. + <_> + + <_> + 6 17 18 3 -1. + <_> + 6 18 18 1 3. + <_> + + <_> + 1 17 18 3 -1. + <_> + 1 18 18 1 3. + <_> + + <_> + 10 6 11 12 -1. + <_> + 10 12 11 6 2. + <_> + + <_> + 5 6 14 6 -1. + <_> + 5 6 7 3 2. + <_> + 12 9 7 3 2. + <_> + + <_> + 5 4 15 4 -1. + <_> + 5 6 15 2 2. + <_> + + <_> + 0 0 22 2 -1. + <_> + 0 1 22 1 2. + <_> + + <_> + 0 0 24 24 -1. + <_> + 8 0 8 24 3. + <_> + + <_> + 1 15 18 4 -1. + <_> + 10 15 9 4 2. + <_> + + <_> + 6 8 12 9 -1. + <_> + 6 11 12 3 3. + <_> + + <_> + 4 12 7 12 -1. + <_> + 4 16 7 4 3. + <_> + + <_> + 1 2 22 6 -1. + <_> + 12 2 11 3 2. + <_> + 1 5 11 3 2. + <_> + + <_> + 5 20 14 3 -1. + <_> + 12 20 7 3 2. + <_> + + <_> + 0 0 24 16 -1. + <_> + 12 0 12 8 2. + <_> + 0 8 12 8 2. + <_> + + <_> + 3 13 18 4 -1. + <_> + 3 13 9 2 2. + <_> + 12 15 9 2 2. + <_> + + <_> + 2 10 22 2 -1. + <_> + 2 11 22 1 2. + <_> + + <_> + 6 3 11 8 -1. + <_> + 6 7 11 4 2. + <_> + + <_> + 14 5 6 6 -1. + <_> + 14 8 6 3 2. + <_> + + <_> + 0 7 24 6 -1. + <_> + 0 9 24 2 3. + <_> + + <_> + 14 0 10 10 -1. + <_> + 19 0 5 5 2. + <_> + 14 5 5 5 2. + <_> + + <_> + 0 0 10 10 -1. + <_> + 0 0 5 5 2. + <_> + 5 5 5 5 2. + <_> + + <_> + 0 1 24 4 -1. + <_> + 12 1 12 2 2. + <_> + 0 3 12 2 2. + <_> + + <_> + 0 17 18 3 -1. + <_> + 0 18 18 1 3. + <_> + + <_> + 5 15 16 6 -1. + <_> + 13 15 8 3 2. + <_> + 5 18 8 3 2. + <_> + + <_> + 3 15 16 6 -1. + <_> + 3 15 8 3 2. + <_> + 11 18 8 3 2. + <_> + + <_> + 6 16 18 3 -1. + <_> + 6 17 18 1 3. + <_> + + <_> + 0 13 21 10 -1. + <_> + 0 18 21 5 2. + <_> + + <_> + 13 0 6 24 -1. + <_> + 15 0 2 24 3. + <_> + + <_> + 7 4 6 11 -1. + <_> + 9 4 2 11 3. + <_> + + <_> + 9 5 9 6 -1. + <_> + 12 5 3 6 3. + <_> + + <_> + 1 4 2 20 -1. + <_> + 1 14 2 10 2. + <_> + + <_> + 13 0 6 24 -1. + <_> + 15 0 2 24 3. + <_> + + <_> + 5 0 6 24 -1. + <_> + 7 0 2 24 3. + <_> + + <_> + 16 7 6 14 -1. + <_> + 19 7 3 7 2. + <_> + 16 14 3 7 2. + <_> + + <_> + 4 7 4 12 -1. + <_> + 6 7 2 12 2. + <_> + + <_> + 0 5 24 14 -1. + <_> + 8 5 8 14 3. + <_> + + <_> + 5 13 10 6 -1. + <_> + 5 15 10 2 3. + <_> + + <_> + 12 0 6 9 -1. + <_> + 14 0 2 9 3. + <_> + + <_> + 2 7 6 14 -1. + <_> + 2 7 3 7 2. + <_> + 5 14 3 7 2. + <_> + + <_> + 15 2 9 15 -1. + <_> + 18 2 3 15 3. + <_> + + <_> + 0 2 6 9 -1. + <_> + 2 2 2 9 3. + <_> + + <_> + 12 2 10 14 -1. + <_> + 17 2 5 7 2. + <_> + 12 9 5 7 2. + <_> + + <_> + 11 6 2 18 -1. + <_> + 12 6 1 18 2. + <_> + + <_> + 9 5 15 6 -1. + <_> + 14 5 5 6 3. + <_> + + <_> + 8 6 6 10 -1. + <_> + 10 6 2 10 3. + <_> + + <_> + 12 0 6 9 -1. + <_> + 14 0 2 9 3. + <_> + + <_> + 3 3 9 7 -1. + <_> + 6 3 3 7 3. + <_> + + <_> + 6 7 14 3 -1. + <_> + 6 7 7 3 2. + <_> + + <_> + 7 7 8 6 -1. + <_> + 11 7 4 6 2. + <_> + + <_> + 12 7 7 12 -1. + <_> + 12 13 7 6 2. + <_> + + <_> + 10 6 4 18 -1. + <_> + 10 6 2 9 2. + <_> + 12 15 2 9 2. + <_> + + <_> + 16 14 6 9 -1. + <_> + 16 17 6 3 3. + <_> + + <_> + 4 0 6 13 -1. + <_> + 6 0 2 13 3. + <_> + + <_> + 2 2 21 3 -1. + <_> + 9 2 7 3 3. + <_> + + <_> + 5 4 5 12 -1. + <_> + 5 8 5 4 3. + <_> + + <_> + 10 3 4 10 -1. + <_> + 10 8 4 5 2. + <_> + + <_> + 8 4 5 8 -1. + <_> + 8 8 5 4 2. + <_> + + <_> + 6 0 11 9 -1. + <_> + 6 3 11 3 3. + <_> + + <_> + 6 6 12 5 -1. + <_> + 10 6 4 5 3. + <_> + + <_> + 0 0 24 5 -1. + <_> + 8 0 8 5 3. + <_> + + <_> + 1 10 23 6 -1. + <_> + 1 12 23 2 3. + <_> + + <_> + 3 21 18 3 -1. + <_> + 9 21 6 3 3. + <_> + + <_> + 3 6 21 6 -1. + <_> + 3 8 21 2 3. + <_> + + <_> + 0 5 6 12 -1. + <_> + 2 5 2 12 3. + <_> + + <_> + 10 2 4 15 -1. + <_> + 10 7 4 5 3. + <_> + + <_> + 8 7 8 10 -1. + <_> + 8 12 8 5 2. + <_> + + <_> + 5 7 15 12 -1. + <_> + 10 7 5 12 3. + <_> + + <_> + 0 17 10 6 -1. + <_> + 0 19 10 2 3. + <_> + + <_> + 14 18 9 6 -1. + <_> + 14 20 9 2 3. + <_> + + <_> + 9 6 6 16 -1. + <_> + 9 14 6 8 2. + <_> + + <_> + 14 18 9 6 -1. + <_> + 14 20 9 2 3. + <_> + + <_> + 1 18 9 6 -1. + <_> + 1 20 9 2 3. + <_> + + <_> + 15 9 9 6 -1. + <_> + 15 11 9 2 3. + <_> + + <_> + 0 9 9 6 -1. + <_> + 0 11 9 2 3. + <_> + + <_> + 17 3 6 9 -1. + <_> + 19 3 2 9 3. + <_> + + <_> + 2 17 18 3 -1. + <_> + 2 18 18 1 3. + <_> + + <_> + 3 15 21 6 -1. + <_> + 3 17 21 2 3. + <_> + + <_> + 9 17 6 6 -1. + <_> + 9 20 6 3 2. + <_> + + <_> + 18 3 6 9 -1. + <_> + 18 6 6 3 3. + <_> + + <_> + 0 3 6 9 -1. + <_> + 0 6 6 3 3. + <_> + + <_> + 4 0 16 10 -1. + <_> + 12 0 8 5 2. + <_> + 4 5 8 5 2. + <_> + + <_> + 2 0 10 16 -1. + <_> + 2 0 5 8 2. + <_> + 7 8 5 8 2. + <_> + + <_> + 14 0 10 5 -1. + <_> + 14 0 5 5 2. + <_> + + <_> + 0 0 10 5 -1. + <_> + 5 0 5 5 2. + <_> + + <_> + 18 3 6 10 -1. + <_> + 18 3 3 10 2. + <_> + + <_> + 5 11 12 6 -1. + <_> + 5 11 6 3 2. + <_> + 11 14 6 3 2. + <_> + + <_> + 21 0 3 18 -1. + <_> + 22 0 1 18 3. + <_> + + <_> + 6 0 6 9 -1. + <_> + 8 0 2 9 3. + <_> + + <_> + 8 8 9 7 -1. + <_> + 11 8 3 7 3. + <_> + + <_> + 7 12 8 10 -1. + <_> + 7 12 4 5 2. + <_> + 11 17 4 5 2. + <_> + + <_> + 21 0 3 18 -1. + <_> + 22 0 1 18 3. + <_> + + <_> + 10 6 4 9 -1. + <_> + 12 6 2 9 2. + <_> + + <_> + 15 0 9 6 -1. + <_> + 15 2 9 2 3. + <_> + + <_> + 0 2 24 3 -1. + <_> + 0 3 24 1 3. + <_> + + <_> + 11 7 6 9 -1. + <_> + 13 7 2 9 3. + <_> + + <_> + 7 6 6 10 -1. + <_> + 9 6 2 10 3. + <_> + + <_> + 12 1 6 12 -1. + <_> + 14 1 2 12 3. + <_> + + <_> + 6 4 12 12 -1. + <_> + 6 10 12 6 2. + <_> + + <_> + 14 3 2 21 -1. + <_> + 14 3 1 21 2. + <_> + + <_> + 6 1 12 8 -1. + <_> + 6 5 12 4 2. + <_> + + <_> + 3 0 18 8 -1. + <_> + 3 4 18 4 2. + <_> + + <_> + 3 0 18 3 -1. + <_> + 3 1 18 1 3. + <_> + + <_> + 0 13 24 4 -1. + <_> + 12 13 12 2 2. + <_> + 0 15 12 2 2. + <_> + + <_> + 10 5 4 9 -1. + <_> + 12 5 2 9 2. + <_> + + <_> + 11 1 6 9 -1. + <_> + 13 1 2 9 3. + <_> + + <_> + 6 2 6 22 -1. + <_> + 8 2 2 22 3. + <_> + + <_> + 16 10 8 14 -1. + <_> + 20 10 4 7 2. + <_> + 16 17 4 7 2. + <_> + + <_> + 3 4 16 15 -1. + <_> + 3 9 16 5 3. + <_> + + <_> + 16 10 8 14 -1. + <_> + 20 10 4 7 2. + <_> + 16 17 4 7 2. + <_> + + <_> + 0 10 8 14 -1. + <_> + 0 10 4 7 2. + <_> + 4 17 4 7 2. + <_> + + <_> + 10 14 11 6 -1. + <_> + 10 17 11 3 2. + <_> + + <_> + 0 7 24 9 -1. + <_> + 8 7 8 9 3. + <_> + + <_> + 13 1 4 16 -1. + <_> + 13 1 2 16 2. + <_> + + <_> + 7 1 4 16 -1. + <_> + 9 1 2 16 2. + <_> + + <_> + 5 5 16 8 -1. + <_> + 13 5 8 4 2. + <_> + 5 9 8 4 2. + <_> + + <_> + 0 9 6 9 -1. + <_> + 0 12 6 3 3. + <_> + + <_> + 6 16 18 3 -1. + <_> + 6 17 18 1 3. + <_> + + <_> + 3 12 6 9 -1. + <_> + 3 15 6 3 3. + <_> + + <_> + 8 14 9 6 -1. + <_> + 8 16 9 2 3. + <_> + + <_> + 2 13 8 10 -1. + <_> + 2 13 4 5 2. + <_> + 6 18 4 5 2. + <_> + + <_> + 15 5 3 18 -1. + <_> + 15 11 3 6 3. + <_> + + <_> + 3 5 18 3 -1. + <_> + 3 6 18 1 3. + <_> + + <_> + 17 5 6 11 -1. + <_> + 19 5 2 11 3. + <_> + + <_> + 1 5 6 11 -1. + <_> + 3 5 2 11 3. + <_> + + <_> + 19 1 4 9 -1. + <_> + 19 1 2 9 2. + <_> + + <_> + 1 1 4 9 -1. + <_> + 3 1 2 9 2. + <_> + + <_> + 4 15 18 9 -1. + <_> + 4 15 9 9 2. + <_> + + <_> + 6 9 12 4 -1. + <_> + 6 11 12 2 2. + <_> + + <_> + 15 2 9 6 -1. + <_> + 15 4 9 2 3. + <_> + + <_> + 0 2 9 6 -1. + <_> + 0 4 9 2 3. + <_> + + <_> + 15 0 6 17 -1. + <_> + 17 0 2 17 3. + <_> + + <_> + 3 0 6 17 -1. + <_> + 5 0 2 17 3. + <_> + + <_> + 8 17 9 4 -1. + <_> + 8 19 9 2 2. + <_> + + <_> + 6 5 3 18 -1. + <_> + 6 11 3 6 3. + <_> + + <_> + 5 2 14 12 -1. + <_> + 5 8 14 6 2. + <_> + + <_> + 10 2 3 12 -1. + <_> + 10 8 3 6 2. + <_> + + <_> + 10 7 14 15 -1. + <_> + 10 12 14 5 3. + <_> + + <_> + 0 7 14 15 -1. + <_> + 0 12 14 5 3. + <_> + + <_> + 15 0 9 6 -1. + <_> + 15 2 9 2 3. + <_> + + <_> + 0 0 9 6 -1. + <_> + 0 2 9 2 3. + <_> + + <_> + 12 6 6 14 -1. + <_> + 14 6 2 14 3. + <_> + + <_> + 9 7 6 9 -1. + <_> + 11 7 2 9 3. + <_> + + <_> + 12 6 6 15 -1. + <_> + 14 6 2 15 3. + <_> + + <_> + 6 6 6 15 -1. + <_> + 8 6 2 15 3. + <_> + + <_> + 15 3 8 9 -1. + <_> + 15 3 4 9 2. + <_> + + <_> + 0 0 9 21 -1. + <_> + 3 0 3 21 3. + <_> + + <_> + 11 9 8 12 -1. + <_> + 11 13 8 4 3. + <_> + + <_> + 6 7 10 12 -1. + <_> + 6 7 5 6 2. + <_> + 11 13 5 6 2. + <_> + + <_> + 10 6 4 18 -1. + <_> + 12 6 2 9 2. + <_> + 10 15 2 9 2. + <_> + + <_> + 0 0 6 9 -1. + <_> + 0 3 6 3 3. + <_> + + <_> + 3 14 18 3 -1. + <_> + 3 15 18 1 3. + <_> + + <_> + 3 14 8 10 -1. + <_> + 3 14 4 5 2. + <_> + 7 19 4 5 2. + <_> + + <_> + 0 12 24 4 -1. + <_> + 12 12 12 2 2. + <_> + 0 14 12 2 2. + <_> + + <_> + 0 2 3 20 -1. + <_> + 1 2 1 20 3. + <_> + + <_> + 12 16 10 8 -1. + <_> + 17 16 5 4 2. + <_> + 12 20 5 4 2. + <_> + + <_> + 2 16 10 8 -1. + <_> + 2 16 5 4 2. + <_> + 7 20 5 4 2. + <_> + + <_> + 7 0 10 9 -1. + <_> + 7 3 10 3 3. + <_> + + <_> + 0 0 24 3 -1. + <_> + 8 0 8 3 3. + <_> + + <_> + 3 8 15 4 -1. + <_> + 3 10 15 2 2. + <_> + + <_> + 6 5 12 6 -1. + <_> + 10 5 4 6 3. + <_> + + <_> + 5 13 14 6 -1. + <_> + 5 16 14 3 2. + <_> + + <_> + 11 14 4 10 -1. + <_> + 11 19 4 5 2. + <_> + + <_> + 0 6 6 7 -1. + <_> + 3 6 3 7 2. + <_> + + <_> + 18 0 6 6 -1. + <_> + 18 0 3 6 2. + <_> + + <_> + 3 1 18 3 -1. + <_> + 3 2 18 1 3. + <_> + + <_> + 9 6 14 18 -1. + <_> + 9 12 14 6 3. + <_> + + <_> + 0 0 6 6 -1. + <_> + 3 0 3 6 2. + <_> + + <_> + 13 11 6 6 -1. + <_> + 13 11 3 6 2. + <_> + + <_> + 0 20 24 3 -1. + <_> + 8 20 8 3 3. + <_> + + <_> + 13 11 6 7 -1. + <_> + 13 11 3 7 2. + <_> + + <_> + 4 12 10 6 -1. + <_> + 4 14 10 2 3. + <_> + + <_> + 13 11 6 6 -1. + <_> + 13 11 3 6 2. + <_> + + <_> + 5 11 6 7 -1. + <_> + 8 11 3 7 2. + <_> + + <_> + 7 4 11 12 -1. + <_> + 7 8 11 4 3. + <_> + + <_> + 6 15 10 4 -1. + <_> + 6 17 10 2 2. + <_> + + <_> + 14 0 6 9 -1. + <_> + 16 0 2 9 3. + <_> + + <_> + 4 0 6 9 -1. + <_> + 6 0 2 9 3. + <_> + + <_> + 11 2 4 15 -1. + <_> + 11 7 4 5 3. + <_> + + <_> + 0 0 20 3 -1. + <_> + 0 1 20 1 3. + <_> + + <_> + 13 18 10 6 -1. + <_> + 13 20 10 2 3. + <_> + + <_> + 2 7 6 11 -1. + <_> + 5 7 3 11 2. + <_> + + <_> + 10 14 10 9 -1. + <_> + 10 17 10 3 3. + <_> + + <_> + 8 2 4 9 -1. + <_> + 10 2 2 9 2. + <_> + + <_> + 14 3 10 4 -1. + <_> + 14 3 5 4 2. + <_> + + <_> + 6 6 12 6 -1. + <_> + 6 6 6 3 2. + <_> + 12 9 6 3 2. + <_> + + <_> + 8 8 8 10 -1. + <_> + 12 8 4 5 2. + <_> + 8 13 4 5 2. + <_> + + <_> + 7 4 4 16 -1. + <_> + 7 12 4 8 2. + <_> + + <_> + 8 8 9 4 -1. + <_> + 8 10 9 2 2. + <_> + + <_> + 5 2 14 9 -1. + <_> + 5 5 14 3 3. + <_> + + <_> + 3 16 19 8 -1. + <_> + 3 20 19 4 2. + <_> + + <_> + 0 0 10 8 -1. + <_> + 5 0 5 8 2. + <_> + + <_> + 5 2 16 18 -1. + <_> + 5 2 8 18 2. + <_> + + <_> + 0 11 24 11 -1. + <_> + 8 11 8 11 3. + <_> + + <_> + 3 3 18 5 -1. + <_> + 3 3 9 5 2. + <_> + + <_> + 1 16 18 3 -1. + <_> + 1 17 18 1 3. + <_> + + <_> + 5 17 18 3 -1. + <_> + 5 18 18 1 3. + <_> + + <_> + 1 13 9 6 -1. + <_> + 1 15 9 2 3. + <_> + + <_> + 1 9 23 10 -1. + <_> + 1 14 23 5 2. + <_> + + <_> + 3 7 18 3 -1. + <_> + 3 8 18 1 3. + <_> + + <_> + 6 8 12 3 -1. + <_> + 6 8 6 3 2. + <_> + + <_> + 6 2 3 22 -1. + <_> + 7 2 1 22 3. + <_> + + <_> + 14 17 10 6 -1. + <_> + 14 19 10 2 3. + <_> + + <_> + 1 18 10 6 -1. + <_> + 1 20 10 2 3. + <_> + + <_> + 11 3 6 12 -1. + <_> + 13 3 2 12 3. + <_> + + <_> + 10 6 4 9 -1. + <_> + 12 6 2 9 2. + <_> + + <_> + 11 0 6 9 -1. + <_> + 13 0 2 9 3. + <_> + + <_> + 7 0 6 9 -1. + <_> + 9 0 2 9 3. + <_> + + <_> + 12 10 9 6 -1. + <_> + 15 10 3 6 3. + <_> + + <_> + 2 11 6 9 -1. + <_> + 5 11 3 9 2. + <_> + + <_> + 14 5 3 19 -1. + <_> + 15 5 1 19 3. + <_> + + <_> + 6 6 9 6 -1. + <_> + 6 8 9 2 3. + <_> + + <_> + 14 5 3 19 -1. + <_> + 15 5 1 19 3. + <_> + + <_> + 0 3 6 9 -1. + <_> + 0 6 6 3 3. + <_> + + <_> + 5 21 18 3 -1. + <_> + 5 22 18 1 3. + <_> + + <_> + 1 10 18 4 -1. + <_> + 7 10 6 4 3. + <_> + + <_> + 13 4 8 10 -1. + <_> + 17 4 4 5 2. + <_> + 13 9 4 5 2. + <_> + + <_> + 7 8 9 6 -1. + <_> + 10 8 3 6 3. + <_> + + <_> + 12 9 9 8 -1. + <_> + 15 9 3 8 3. + <_> + + <_> + 0 6 5 12 -1. + <_> + 0 10 5 4 3. + <_> + + <_> + 7 6 14 6 -1. + <_> + 14 6 7 3 2. + <_> + 7 9 7 3 2. + <_> + + <_> + 7 5 3 19 -1. + <_> + 8 5 1 19 3. + <_> + + <_> + 8 4 15 20 -1. + <_> + 13 4 5 20 3. + <_> + + <_> + 1 4 15 20 -1. + <_> + 6 4 5 20 3. + <_> + + <_> + 13 10 6 6 -1. + <_> + 13 10 3 6 2. + <_> + + <_> + 5 10 6 6 -1. + <_> + 8 10 3 6 2. + <_> + + <_> + 14 2 6 14 -1. + <_> + 17 2 3 7 2. + <_> + 14 9 3 7 2. + <_> + + <_> + 4 2 6 14 -1. + <_> + 4 2 3 7 2. + <_> + 7 9 3 7 2. + <_> + + <_> + 12 4 6 7 -1. + <_> + 12 4 3 7 2. + <_> + + <_> + 9 4 6 9 -1. + <_> + 11 4 2 9 3. + <_> + + <_> + 11 4 8 10 -1. + <_> + 11 4 4 10 2. + <_> + + <_> + 5 4 8 10 -1. + <_> + 9 4 4 10 2. + <_> + + <_> + 8 18 10 6 -1. + <_> + 8 20 10 2 3. + <_> + + <_> + 1 18 21 6 -1. + <_> + 1 20 21 2 3. + <_> + + <_> + 9 2 12 6 -1. + <_> + 9 2 6 6 2. + <_> + + <_> + 3 2 12 6 -1. + <_> + 9 2 6 6 2. + <_> + + <_> + 12 5 12 6 -1. + <_> + 18 5 6 3 2. + <_> + 12 8 6 3 2. + <_> + + <_> + 8 8 6 9 -1. + <_> + 8 11 6 3 3. + <_> + + <_> + 2 7 20 6 -1. + <_> + 2 9 20 2 3. + <_> + + <_> + 0 5 12 6 -1. + <_> + 0 5 6 3 2. + <_> + 6 8 6 3 2. + <_> + + <_> + 14 14 8 10 -1. + <_> + 18 14 4 5 2. + <_> + 14 19 4 5 2. + <_> + + <_> + 2 14 8 10 -1. + <_> + 2 14 4 5 2. + <_> + 6 19 4 5 2. + <_> + + <_> + 2 11 20 13 -1. + <_> + 2 11 10 13 2. + <_> + + <_> + 6 9 12 5 -1. + <_> + 12 9 6 5 2. + <_> + + <_> + 5 6 16 6 -1. + <_> + 13 6 8 3 2. + <_> + 5 9 8 3 2. + <_> + + <_> + 1 19 9 4 -1. + <_> + 1 21 9 2 2. + <_> + + <_> + 7 5 12 5 -1. + <_> + 11 5 4 5 3. + <_> + + <_> + 3 5 14 12 -1. + <_> + 3 5 7 6 2. + <_> + 10 11 7 6 2. + <_> + + <_> + 9 4 9 6 -1. + <_> + 12 4 3 6 3. + <_> + + <_> + 2 6 19 3 -1. + <_> + 2 7 19 1 3. + <_> + + <_> + 18 10 6 9 -1. + <_> + 18 13 6 3 3. + <_> + + <_> + 3 7 18 2 -1. + <_> + 3 8 18 1 2. + <_> + + <_> + 20 2 4 18 -1. + <_> + 22 2 2 9 2. + <_> + 20 11 2 9 2. + <_> + + <_> + 2 18 20 3 -1. + <_> + 2 19 20 1 3. + <_> + + <_> + 1 9 22 3 -1. + <_> + 1 10 22 1 3. + <_> + + <_> + 0 2 4 18 -1. + <_> + 0 2 2 9 2. + <_> + 2 11 2 9 2. + <_> + + <_> + 19 0 4 23 -1. + <_> + 19 0 2 23 2. + <_> + + <_> + 0 3 6 19 -1. + <_> + 3 3 3 19 2. + <_> + + <_> + 18 2 6 9 -1. + <_> + 20 2 2 9 3. + <_> + + <_> + 0 5 10 6 -1. + <_> + 0 7 10 2 3. + <_> + + <_> + 7 0 12 12 -1. + <_> + 13 0 6 6 2. + <_> + 7 6 6 6 2. + <_> + + <_> + 0 3 24 6 -1. + <_> + 0 3 12 3 2. + <_> + 12 6 12 3 2. + <_> + + <_> + 10 14 4 10 -1. + <_> + 10 19 4 5 2. + <_> + + <_> + 8 9 4 15 -1. + <_> + 8 14 4 5 3. + <_> + + <_> + 4 11 17 6 -1. + <_> + 4 14 17 3 2. + <_> + + <_> + 2 5 18 8 -1. + <_> + 2 5 9 4 2. + <_> + 11 9 9 4 2. + <_> + + <_> + 7 6 14 6 -1. + <_> + 14 6 7 3 2. + <_> + 7 9 7 3 2. + <_> + + <_> + 3 6 14 6 -1. + <_> + 3 6 7 3 2. + <_> + 10 9 7 3 2. + <_> + + <_> + 16 5 3 18 -1. + <_> + 17 5 1 18 3. + <_> + + <_> + 5 5 3 18 -1. + <_> + 6 5 1 18 3. + <_> + + <_> + 10 10 14 4 -1. + <_> + 10 12 14 2 2. + <_> + + <_> + 4 10 9 4 -1. + <_> + 4 12 9 2 2. + <_> + + <_> + 2 0 18 9 -1. + <_> + 2 3 18 3 3. + <_> + + <_> + 6 3 12 8 -1. + <_> + 10 3 4 8 3. + <_> + + <_> + 1 1 8 5 -1. + <_> + 5 1 4 5 2. + <_> + + <_> + 12 7 7 8 -1. + <_> + 12 11 7 4 2. + <_> + + <_> + 0 12 22 4 -1. + <_> + 0 14 22 2 2. + <_> + + <_> + 15 6 4 15 -1. + <_> + 15 11 4 5 3. + <_> + + <_> + 5 7 7 8 -1. + <_> + 5 11 7 4 2. + <_> + + <_> + 8 18 9 4 -1. + <_> + 8 20 9 2 2. + <_> + + <_> + 1 2 22 4 -1. + <_> + 1 4 22 2 2. + <_> + + <_> + 17 3 6 17 -1. + <_> + 19 3 2 17 3. + <_> + + <_> + 8 2 8 18 -1. + <_> + 8 11 8 9 2. + <_> + + <_> + 17 0 6 12 -1. + <_> + 20 0 3 6 2. + <_> + 17 6 3 6 2. + <_> + + <_> + 7 0 6 9 -1. + <_> + 9 0 2 9 3. + <_> + + <_> + 15 5 9 12 -1. + <_> + 15 11 9 6 2. + <_> + + <_> + 2 22 18 2 -1. + <_> + 2 23 18 1 2. + <_> + + <_> + 10 10 12 6 -1. + <_> + 16 10 6 3 2. + <_> + 10 13 6 3 2. + <_> + + <_> + 0 1 4 11 -1. + <_> + 2 1 2 11 2. + <_> + + <_> + 20 0 4 10 -1. + <_> + 20 0 2 10 2. + <_> + + <_> + 1 3 6 17 -1. + <_> + 3 3 2 17 3. + <_> + + <_> + 15 15 9 6 -1. + <_> + 15 17 9 2 3. + <_> + + <_> + 0 13 8 9 -1. + <_> + 0 16 8 3 3. + <_> + + <_> + 16 8 6 12 -1. + <_> + 16 12 6 4 3. + <_> + + <_> + 2 8 6 12 -1. + <_> + 2 12 6 4 3. + <_> + + <_> + 10 2 4 15 -1. + <_> + 10 7 4 5 3. + <_> + + <_> + 1 5 19 3 -1. + <_> + 1 6 19 1 3. + <_> + + <_> + 11 8 9 7 -1. + <_> + 14 8 3 7 3. + <_> + + <_> + 3 8 12 9 -1. + <_> + 3 11 12 3 3. + <_> + + <_> + 3 6 18 3 -1. + <_> + 3 7 18 1 3. + <_> + + <_> + 10 0 4 12 -1. + <_> + 10 6 4 6 2. + <_> + + <_> + 3 9 18 14 -1. + <_> + 3 9 9 14 2. + <_> + + <_> + 0 0 4 9 -1. + <_> + 2 0 2 9 2. + <_> + + <_> + 12 5 4 18 -1. + <_> + 12 5 2 18 2. + <_> + + <_> + 8 5 4 18 -1. + <_> + 10 5 2 18 2. + <_> + + <_> + 10 5 6 10 -1. + <_> + 12 5 2 10 3. + <_> + + <_> + 9 4 4 11 -1. + <_> + 11 4 2 11 2. + <_> + + <_> + 4 16 18 3 -1. + <_> + 4 17 18 1 3. + <_> + + <_> + 0 16 20 3 -1. + <_> + 0 17 20 1 3. + <_> + + <_> + 9 9 6 12 -1. + <_> + 9 13 6 4 3. + <_> + + <_> + 8 13 8 8 -1. + <_> + 8 17 8 4 2. + <_> + + <_> + 13 10 3 12 -1. + <_> + 13 16 3 6 2. + <_> + + <_> + 5 9 14 14 -1. + <_> + 5 9 7 7 2. + <_> + 12 16 7 7 2. + <_> + + <_> + 0 0 24 10 -1. + <_> + 12 0 12 5 2. + <_> + 0 5 12 5 2. + <_> + + <_> + 1 11 18 2 -1. + <_> + 1 12 18 1 2. + <_> + + <_> + 19 5 5 12 -1. + <_> + 19 9 5 4 3. + <_> + + <_> + 0 5 5 12 -1. + <_> + 0 9 5 4 3. + <_> + + <_> + 16 6 8 18 -1. + <_> + 20 6 4 9 2. + <_> + 16 15 4 9 2. + <_> + + <_> + 0 6 8 18 -1. + <_> + 0 6 4 9 2. + <_> + 4 15 4 9 2. + <_> + + <_> + 12 5 12 12 -1. + <_> + 18 5 6 6 2. + <_> + 12 11 6 6 2. + <_> + + <_> + 7 6 6 9 -1. + <_> + 9 6 2 9 3. + <_> + + <_> + 9 13 6 11 -1. + <_> + 11 13 2 11 3. + <_> + + <_> + 0 5 12 12 -1. + <_> + 0 5 6 6 2. + <_> + 6 11 6 6 2. + <_> + + <_> + 1 2 23 3 -1. + <_> + 1 3 23 1 3. + <_> + + <_> + 1 15 19 3 -1. + <_> + 1 16 19 1 3. + <_> + + <_> + 13 17 11 4 -1. + <_> + 13 19 11 2 2. + <_> + + <_> + 0 13 8 5 -1. + <_> + 4 13 4 5 2. + <_> + + <_> + 12 10 10 4 -1. + <_> + 12 10 5 4 2. + <_> + + <_> + 4 6 9 9 -1. + <_> + 4 9 9 3 3. + <_> + + <_> + 15 14 9 6 -1. + <_> + 15 16 9 2 3. + <_> + + <_> + 1 12 9 6 -1. + <_> + 1 14 9 2 3. + <_> + + <_> + 3 10 20 8 -1. + <_> + 13 10 10 4 2. + <_> + 3 14 10 4 2. + <_> + + <_> + 2 0 9 18 -1. + <_> + 5 0 3 18 3. + <_> + + <_> + 13 11 9 10 -1. + <_> + 16 11 3 10 3. + <_> + + <_> + 1 2 8 5 -1. + <_> + 5 2 4 5 2. + <_> + + <_> + 3 4 21 6 -1. + <_> + 10 4 7 6 3. + <_> + + <_> + 7 0 10 14 -1. + <_> + 7 0 5 7 2. + <_> + 12 7 5 7 2. + <_> + + <_> + 12 17 12 4 -1. + <_> + 12 19 12 2 2. + <_> + + <_> + 0 6 23 4 -1. + <_> + 0 8 23 2 2. + <_> + + <_> + 13 10 8 10 -1. + <_> + 17 10 4 5 2. + <_> + 13 15 4 5 2. + <_> + + <_> + 0 16 18 3 -1. + <_> + 0 17 18 1 3. + <_> + + <_> + 15 16 9 4 -1. + <_> + 15 18 9 2 2. + <_> + + <_> + 0 16 9 4 -1. + <_> + 0 18 9 2 2. + <_> + + <_> + 13 11 6 6 -1. + <_> + 13 11 3 6 2. + <_> + + <_> + 5 11 6 6 -1. + <_> + 8 11 3 6 2. + <_> + + <_> + 0 3 24 6 -1. + <_> + 12 3 12 3 2. + <_> + 0 6 12 3 2. + <_> + + <_> + 2 4 18 3 -1. + <_> + 2 5 18 1 3. + <_> + + <_> + 0 0 24 4 -1. + <_> + 12 0 12 2 2. + <_> + 0 2 12 2 2. + <_> + + <_> + 1 16 18 3 -1. + <_> + 1 17 18 1 3. + <_> + + <_> + 15 15 9 6 -1. + <_> + 15 17 9 2 3. + <_> + + <_> + 0 15 9 6 -1. + <_> + 0 17 9 2 3. + <_> + + <_> + 6 17 18 3 -1. + <_> + 6 18 18 1 3. + <_> + + <_> + 8 8 6 10 -1. + <_> + 10 8 2 10 3. + <_> + + <_> + 10 6 6 9 -1. + <_> + 12 6 2 9 3. + <_> + + <_> + 8 8 5 8 -1. + <_> + 8 12 5 4 2. + <_> + + <_> + 12 8 6 8 -1. + <_> + 12 12 6 4 2. + <_> + + <_> + 6 5 6 11 -1. + <_> + 8 5 2 11 3. + <_> + + <_> + 13 6 8 9 -1. + <_> + 13 9 8 3 3. + <_> + + <_> + 1 7 21 6 -1. + <_> + 1 9 21 2 3. + <_> + + <_> + 15 5 3 12 -1. + <_> + 15 11 3 6 2. + <_> + + <_> + 6 9 11 12 -1. + <_> + 6 13 11 4 3. + <_> + + <_> + 13 8 10 8 -1. + <_> + 18 8 5 4 2. + <_> + 13 12 5 4 2. + <_> + + <_> + 5 8 12 3 -1. + <_> + 11 8 6 3 2. + <_> + + <_> + 6 11 18 4 -1. + <_> + 12 11 6 4 3. + <_> + + <_> + 0 0 22 22 -1. + <_> + 0 11 22 11 2. + <_> + + <_> + 11 2 6 8 -1. + <_> + 11 6 6 4 2. + <_> + + <_> + 9 0 6 9 -1. + <_> + 11 0 2 9 3. + <_> + + <_> + 10 0 6 9 -1. + <_> + 12 0 2 9 3. + <_> + + <_> + 8 3 6 14 -1. + <_> + 8 3 3 7 2. + <_> + 11 10 3 7 2. + <_> + + <_> + 3 10 18 8 -1. + <_> + 9 10 6 8 3. + <_> + + <_> + 10 0 3 14 -1. + <_> + 10 7 3 7 2. + <_> + + <_> + 4 3 16 20 -1. + <_> + 4 13 16 10 2. + <_> + + <_> + 9 4 6 10 -1. + <_> + 11 4 2 10 3. + <_> + + <_> + 5 0 16 4 -1. + <_> + 5 2 16 2 2. + <_> + + <_> + 2 5 18 4 -1. + <_> + 8 5 6 4 3. + <_> + + <_> + 13 0 6 9 -1. + <_> + 15 0 2 9 3. + <_> + + <_> + 8 4 8 5 -1. + <_> + 12 4 4 5 2. + <_> + + <_> + 12 10 10 4 -1. + <_> + 12 10 5 4 2. + <_> + + <_> + 2 10 10 4 -1. + <_> + 7 10 5 4 2. + <_> + + <_> + 7 11 12 5 -1. + <_> + 11 11 4 5 3. + <_> + + <_> + 3 10 8 10 -1. + <_> + 3 10 4 5 2. + <_> + 7 15 4 5 2. + <_> + + <_> + 11 12 9 8 -1. + <_> + 14 12 3 8 3. + <_> + + <_> + 0 21 24 3 -1. + <_> + 8 21 8 3 3. + <_> + + <_> + 3 20 18 4 -1. + <_> + 9 20 6 4 3. + <_> + + <_> + 1 15 9 6 -1. + <_> + 1 17 9 2 3. + <_> + + <_> + 11 17 10 4 -1. + <_> + 11 19 10 2 2. + <_> + + <_> + 9 12 4 12 -1. + <_> + 9 18 4 6 2. + <_> + + <_> + 9 6 9 6 -1. + <_> + 12 6 3 6 3. + <_> + + <_> + 1 13 6 9 -1. + <_> + 1 16 6 3 3. + <_> + + <_> + 6 16 12 4 -1. + <_> + 6 18 12 2 2. + <_> + + <_> + 1 5 20 3 -1. + <_> + 1 6 20 1 3. + <_> + + <_> + 8 1 9 9 -1. + <_> + 8 4 9 3 3. + <_> + + <_> + 2 19 9 4 -1. + <_> + 2 21 9 2 2. + <_> + + <_> + 11 1 4 18 -1. + <_> + 11 7 4 6 3. + <_> + + <_> + 7 2 8 12 -1. + <_> + 7 2 4 6 2. + <_> + 11 8 4 6 2. + <_> + + <_> + 11 10 9 8 -1. + <_> + 14 10 3 8 3. + <_> + + <_> + 5 11 12 5 -1. + <_> + 9 11 4 5 3. + <_> + + <_> + 11 9 9 6 -1. + <_> + 14 9 3 6 3. + <_> + + <_> + 5 10 6 9 -1. + <_> + 7 10 2 9 3. + <_> + + <_> + 4 7 5 12 -1. + <_> + 4 11 5 4 3. + <_> + + <_> + 2 0 21 6 -1. + <_> + 9 0 7 6 3. + <_> + + <_> + 7 6 10 6 -1. + <_> + 7 8 10 2 3. + <_> + + <_> + 9 0 6 15 -1. + <_> + 11 0 2 15 3. + <_> + + <_> + 2 2 18 2 -1. + <_> + 2 3 18 1 2. + <_> + + <_> + 8 17 8 6 -1. + <_> + 8 20 8 3 2. + <_> + + <_> + 3 0 18 2 -1. + <_> + 3 1 18 1 2. + <_> + + <_> + 8 0 9 6 -1. + <_> + 11 0 3 6 3. + <_> + + <_> + 0 17 18 3 -1. + <_> + 0 18 18 1 3. + <_> + + <_> + 6 7 12 5 -1. + <_> + 10 7 4 5 3. + <_> + + <_> + 0 3 6 9 -1. + <_> + 2 3 2 9 3. + <_> + + <_> + 20 2 4 9 -1. + <_> + 20 2 2 9 2. + <_> + + <_> + 0 2 4 9 -1. + <_> + 2 2 2 9 2. + <_> + + <_> + 0 1 24 4 -1. + <_> + 12 1 12 2 2. + <_> + 0 3 12 2 2. + <_> + + <_> + 0 16 9 6 -1. + <_> + 0 18 9 2 3. + <_> + + <_> + 14 13 9 6 -1. + <_> + 14 15 9 2 3. + <_> + + <_> + 0 15 19 3 -1. + <_> + 0 16 19 1 3. + <_> + + <_> + 1 5 22 12 -1. + <_> + 12 5 11 6 2. + <_> + 1 11 11 6 2. + <_> + + <_> + 5 13 6 6 -1. + <_> + 8 13 3 6 2. + <_> + + <_> + 4 2 20 3 -1. + <_> + 4 3 20 1 3. + <_> + + <_> + 8 14 6 10 -1. + <_> + 10 14 2 10 3. + <_> + + <_> + 6 12 16 6 -1. + <_> + 14 12 8 3 2. + <_> + 6 15 8 3 2. + <_> + + <_> + 2 13 8 9 -1. + <_> + 2 16 8 3 3. + <_> + + <_> + 11 8 6 14 -1. + <_> + 14 8 3 7 2. + <_> + 11 15 3 7 2. + <_> + + <_> + 2 12 16 6 -1. + <_> + 2 12 8 3 2. + <_> + 10 15 8 3 2. + <_> + + <_> + 5 16 16 8 -1. + <_> + 5 20 16 4 2. + <_> + + <_> + 9 1 4 12 -1. + <_> + 9 7 4 6 2. + <_> + + <_> + 8 2 8 10 -1. + <_> + 12 2 4 5 2. + <_> + 8 7 4 5 2. + <_> + + <_> + 6 6 12 6 -1. + <_> + 6 6 6 3 2. + <_> + 12 9 6 3 2. + <_> + + <_> + 10 7 6 9 -1. + <_> + 12 7 2 9 3. + <_> + + <_> + 0 0 8 12 -1. + <_> + 0 0 4 6 2. + <_> + 4 6 4 6 2. + <_> + + <_> + 18 8 6 9 -1. + <_> + 18 11 6 3 3. + <_> + + <_> + 2 12 6 6 -1. + <_> + 5 12 3 6 2. + <_> + + <_> + 3 21 21 3 -1. + <_> + 10 21 7 3 3. + <_> + + <_> + 2 0 16 6 -1. + <_> + 2 3 16 3 2. + <_> + + <_> + 13 6 7 6 -1. + <_> + 13 9 7 3 2. + <_> + + <_> + 6 4 4 14 -1. + <_> + 6 11 4 7 2. + <_> + + <_> + 9 7 6 9 -1. + <_> + 11 7 2 9 3. + <_> + + <_> + 7 8 6 14 -1. + <_> + 7 8 3 7 2. + <_> + 10 15 3 7 2. + <_> + + <_> + 18 8 4 16 -1. + <_> + 18 16 4 8 2. + <_> + + <_> + 9 14 6 10 -1. + <_> + 11 14 2 10 3. + <_> + + <_> + 6 11 12 5 -1. + <_> + 10 11 4 5 3. + <_> + + <_> + 0 12 23 3 -1. + <_> + 0 13 23 1 3. + <_> + + <_> + 13 0 6 12 -1. + <_> + 15 0 2 12 3. + <_> + + <_> + 0 10 12 5 -1. + <_> + 4 10 4 5 3. + <_> + + <_> + 13 2 10 4 -1. + <_> + 13 4 10 2 2. + <_> + + <_> + 5 0 6 12 -1. + <_> + 7 0 2 12 3. + <_> + + <_> + 11 6 9 6 -1. + <_> + 14 6 3 6 3. + <_> + + <_> + 4 6 9 6 -1. + <_> + 7 6 3 6 3. + <_> + + <_> + 6 11 18 13 -1. + <_> + 12 11 6 13 3. + <_> + + <_> + 0 11 18 13 -1. + <_> + 6 11 6 13 3. + <_> + + <_> + 12 16 12 6 -1. + <_> + 16 16 4 6 3. + <_> + + <_> + 0 6 21 3 -1. + <_> + 0 7 21 1 3. + <_> + + <_> + 12 16 12 6 -1. + <_> + 16 16 4 6 3. + <_> + + <_> + 5 7 6 14 -1. + <_> + 5 14 6 7 2. + <_> + + <_> + 5 10 19 2 -1. + <_> + 5 11 19 1 2. + <_> + + <_> + 5 4 14 4 -1. + <_> + 5 6 14 2 2. + <_> + + <_> + 3 18 18 4 -1. + <_> + 9 18 6 4 3. + <_> + + <_> + 7 0 4 9 -1. + <_> + 9 0 2 9 2. + <_> + + <_> + 13 3 11 4 -1. + <_> + 13 5 11 2 2. + <_> + + <_> + 2 0 9 6 -1. + <_> + 5 0 3 6 3. + <_> + + <_> + 19 1 4 23 -1. + <_> + 19 1 2 23 2. + <_> + + <_> + 1 1 4 23 -1. + <_> + 3 1 2 23 2. + <_> + + <_> + 5 16 18 3 -1. + <_> + 5 17 18 1 3. + <_> + + <_> + 0 3 11 4 -1. + <_> + 0 5 11 2 2. + <_> + + <_> + 2 16 20 3 -1. + <_> + 2 17 20 1 3. + <_> + + <_> + 5 3 13 4 -1. + <_> + 5 5 13 2 2. + <_> + + <_> + 1 9 22 15 -1. + <_> + 1 9 11 15 2. + <_> + + <_> + 3 4 14 3 -1. + <_> + 10 4 7 3 2. + <_> + + <_> + 8 7 10 4 -1. + <_> + 8 7 5 4 2. + <_> + + <_> + 6 7 10 4 -1. + <_> + 11 7 5 4 2. + <_> + + <_> + 10 4 6 9 -1. + <_> + 12 4 2 9 3. + <_> + + <_> + 1 12 9 6 -1. + <_> + 4 12 3 6 3. + <_> + + <_> + 8 3 8 10 -1. + <_> + 12 3 4 5 2. + <_> + 8 8 4 5 2. + <_> + + <_> + 3 6 16 6 -1. + <_> + 3 6 8 3 2. + <_> + 11 9 8 3 2. + <_> + + <_> + 5 6 14 6 -1. + <_> + 5 9 14 3 2. + <_> + + <_> + 4 3 9 6 -1. + <_> + 4 5 9 2 3. + <_> + + <_> + 6 3 18 2 -1. + <_> + 6 4 18 1 2. + <_> + + <_> + 7 6 9 6 -1. + <_> + 10 6 3 6 3. + <_> + + <_> + 0 1 24 3 -1. + <_> + 0 2 24 1 3. + <_> + + <_> + 0 17 10 6 -1. + <_> + 0 19 10 2 3. + <_> + + <_> + 3 18 18 3 -1. + <_> + 3 19 18 1 3. + <_> + + <_> + 2 5 6 16 -1. + <_> + 2 5 3 8 2. + <_> + 5 13 3 8 2. + <_> + + <_> + 7 6 11 6 -1. + <_> + 7 8 11 2 3. + <_> + + <_> + 5 2 12 22 -1. + <_> + 5 13 12 11 2. + <_> + + <_> + 10 7 4 10 -1. + <_> + 10 12 4 5 2. + <_> + + <_> + 9 0 4 18 -1. + <_> + 9 6 4 6 3. + <_> + + <_> + 18 8 6 9 -1. + <_> + 18 11 6 3 3. + <_> + + <_> + 4 7 15 10 -1. + <_> + 9 7 5 10 3. + <_> + + <_> + 10 5 6 9 -1. + <_> + 12 5 2 9 3. + <_> + + <_> + 9 9 6 10 -1. + <_> + 11 9 2 10 3. + <_> + + <_> + 11 14 6 10 -1. + <_> + 13 14 2 10 3. + <_> + + <_> + 7 14 6 10 -1. + <_> + 9 14 2 10 3. + <_> + + <_> + 4 8 16 9 -1. + <_> + 4 11 16 3 3. + <_> + + <_> + 2 11 20 3 -1. + <_> + 2 12 20 1 3. + <_> + + <_> + 13 0 4 13 -1. + <_> + 13 0 2 13 2. + <_> + + <_> + 7 0 4 13 -1. + <_> + 9 0 2 13 2. + <_> + + <_> + 3 1 18 7 -1. + <_> + 9 1 6 7 3. + <_> + + <_> + 1 11 6 9 -1. + <_> + 1 14 6 3 3. + <_> + + <_> + 8 18 9 6 -1. + <_> + 8 20 9 2 3. + <_> + + <_> + 3 9 15 6 -1. + <_> + 3 11 15 2 3. + <_> + + <_> + 5 10 19 2 -1. + <_> + 5 11 19 1 2. + <_> + + <_> + 8 6 7 16 -1. + <_> + 8 14 7 8 2. + <_> + + <_> + 9 14 9 6 -1. + <_> + 9 16 9 2 3. + <_> + + <_> + 0 7 8 12 -1. + <_> + 0 11 8 4 3. + <_> + + <_> + 6 4 18 3 -1. + <_> + 6 5 18 1 3. + <_> + + <_> + 0 16 12 6 -1. + <_> + 4 16 4 6 3. + <_> + + <_> + 13 13 9 4 -1. + <_> + 13 15 9 2 2. + <_> + + <_> + 5 8 14 14 -1. + <_> + 5 8 7 7 2. + <_> + 12 15 7 7 2. + <_> + + <_> + 1 16 22 6 -1. + <_> + 12 16 11 3 2. + <_> + 1 19 11 3 2. + <_> + + <_> + 9 0 6 9 -1. + <_> + 11 0 2 9 3. + <_> + + <_> + 9 5 10 10 -1. + <_> + 14 5 5 5 2. + <_> + 9 10 5 5 2. + <_> + + <_> + 5 5 10 10 -1. + <_> + 5 5 5 5 2. + <_> + 10 10 5 5 2. + <_> + + <_> + 4 6 16 6 -1. + <_> + 12 6 8 3 2. + <_> + 4 9 8 3 2. + <_> + + <_> + 0 7 6 9 -1. + <_> + 0 10 6 3 3. + <_> + + <_> + 16 10 8 14 -1. + <_> + 20 10 4 7 2. + <_> + 16 17 4 7 2. + <_> + + <_> + 9 12 6 12 -1. + <_> + 9 18 6 6 2. + <_> + + <_> + 8 10 8 12 -1. + <_> + 12 10 4 6 2. + <_> + 8 16 4 6 2. + <_> + + <_> + 8 0 4 9 -1. + <_> + 10 0 2 9 2. + <_> + + <_> + 10 4 8 16 -1. + <_> + 14 4 4 8 2. + <_> + 10 12 4 8 2. + <_> + + <_> + 7 10 10 6 -1. + <_> + 7 12 10 2 3. + <_> + + <_> + 5 6 14 14 -1. + <_> + 12 6 7 7 2. + <_> + 5 13 7 7 2. + <_> + + <_> + 2 11 20 2 -1. + <_> + 2 12 20 1 2. + <_> + + <_> + 18 8 4 16 -1. + <_> + 18 16 4 8 2. + <_> + + <_> + 1 11 12 10 -1. + <_> + 1 11 6 5 2. + <_> + 7 16 6 5 2. + <_> + + <_> + 6 9 12 4 -1. + <_> + 6 11 12 2 2. + <_> + + <_> + 9 12 6 7 -1. + <_> + 12 12 3 7 2. + <_> + + <_> + 10 4 8 16 -1. + <_> + 14 4 4 8 2. + <_> + 10 12 4 8 2. + <_> + + <_> + 6 4 8 16 -1. + <_> + 6 4 4 8 2. + <_> + 10 12 4 8 2. + <_> + + <_> + 8 9 9 6 -1. + <_> + 11 9 3 6 3. + <_> + + <_> + 1 5 16 12 -1. + <_> + 1 5 8 6 2. + <_> + 9 11 8 6 2. + <_> + + <_> + 9 9 6 8 -1. + <_> + 9 9 3 8 2. + <_> + + <_> + 6 0 3 18 -1. + <_> + 7 0 1 18 3. + <_> + + <_> + 17 9 5 14 -1. + <_> + 17 16 5 7 2. + <_> + + <_> + 2 9 5 14 -1. + <_> + 2 16 5 7 2. + <_> + + <_> + 7 4 10 6 -1. + <_> + 7 7 10 3 2. + <_> + + <_> + 1 3 23 18 -1. + <_> + 1 9 23 6 3. + <_> + + <_> + 1 1 21 3 -1. + <_> + 8 1 7 3 3. + <_> + + <_> + 9 6 6 9 -1. + <_> + 11 6 2 9 3. + <_> + + <_> + 3 18 12 6 -1. + <_> + 3 18 6 3 2. + <_> + 9 21 6 3 2. + <_> + + <_> + 16 8 8 16 -1. + <_> + 20 8 4 8 2. + <_> + 16 16 4 8 2. + <_> + + <_> + 0 19 24 4 -1. + <_> + 8 19 8 4 3. + <_> + + <_> + 16 8 8 16 -1. + <_> + 20 8 4 8 2. + <_> + 16 16 4 8 2. + <_> + + <_> + 0 8 8 16 -1. + <_> + 0 8 4 8 2. + <_> + 4 16 4 8 2. + <_> + + <_> + 8 12 8 10 -1. + <_> + 8 17 8 5 2. + <_> + + <_> + 5 7 5 8 -1. + <_> + 5 11 5 4 2. + <_> + + <_> + 4 1 19 2 -1. + <_> + 4 2 19 1 2. + <_> + + <_> + 0 12 24 9 -1. + <_> + 8 12 8 9 3. + <_> + + <_> + 6 0 13 8 -1. + <_> + 6 4 13 4 2. + <_> + + <_> + 0 0 24 3 -1. + <_> + 0 1 24 1 3. + <_> + + <_> + 20 3 4 11 -1. + <_> + 20 3 2 11 2. + <_> + + <_> + 8 6 6 9 -1. + <_> + 10 6 2 9 3. + <_> + + <_> + 6 11 12 8 -1. + <_> + 12 11 6 4 2. + <_> + 6 15 6 4 2. + <_> + + <_> + 0 8 12 6 -1. + <_> + 0 8 6 3 2. + <_> + 6 11 6 3 2. + <_> + + <_> + 6 17 18 3 -1. + <_> + 6 18 18 1 3. + <_> + + <_> + 0 14 9 6 -1. + <_> + 0 16 9 2 3. + <_> + + <_> + 20 3 4 9 -1. + <_> + 20 3 2 9 2. + <_> + + <_> + 0 3 4 9 -1. + <_> + 2 3 2 9 2. + <_> + + <_> + 15 0 9 19 -1. + <_> + 18 0 3 19 3. + <_> + + <_> + 0 0 9 19 -1. + <_> + 3 0 3 19 3. + <_> + + <_> + 13 11 6 8 -1. + <_> + 13 11 3 8 2. + <_> + + <_> + 5 11 6 8 -1. + <_> + 8 11 3 8 2. + <_> + + <_> + 5 11 19 3 -1. + <_> + 5 12 19 1 3. + <_> + + <_> + 3 20 18 4 -1. + <_> + 9 20 6 4 3. + <_> + + <_> + 6 6 16 6 -1. + <_> + 6 8 16 2 3. + <_> + + <_> + 6 0 9 6 -1. + <_> + 9 0 3 6 3. + <_> + + <_> + 10 3 4 14 -1. + <_> + 10 10 4 7 2. + <_> + + <_> + 1 5 15 12 -1. + <_> + 1 11 15 6 2. + <_> + + <_> + 11 12 8 5 -1. + <_> + 11 12 4 5 2. + <_> + + <_> + 5 0 6 9 -1. + <_> + 7 0 2 9 3. + <_> + + <_> + 12 0 6 9 -1. + <_> + 14 0 2 9 3. + <_> + + <_> + 5 5 12 8 -1. + <_> + 5 5 6 4 2. + <_> + 11 9 6 4 2. + <_> + + <_> + 13 12 11 6 -1. + <_> + 13 14 11 2 3. + <_> + + <_> + 0 13 21 3 -1. + <_> + 0 14 21 1 3. + <_> + + <_> + 8 1 8 12 -1. + <_> + 12 1 4 6 2. + <_> + 8 7 4 6 2. + <_> + + <_> + 1 0 6 12 -1. + <_> + 1 0 3 6 2. + <_> + 4 6 3 6 2. + <_> + + <_> + 2 2 21 2 -1. + <_> + 2 3 21 1 2. + <_> + + <_> + 2 2 19 3 -1. + <_> + 2 3 19 1 3. + <_> + + <_> + 17 10 6 14 -1. + <_> + 20 10 3 7 2. + <_> + 17 17 3 7 2. + <_> + + <_> + 1 10 6 14 -1. + <_> + 1 10 3 7 2. + <_> + 4 17 3 7 2. + <_> + + <_> + 7 6 14 14 -1. + <_> + 14 6 7 7 2. + <_> + 7 13 7 7 2. + <_> + + <_> + 0 12 9 6 -1. + <_> + 0 14 9 2 3. + <_> + + <_> + 15 14 8 9 -1. + <_> + 15 17 8 3 3. + <_> + + <_> + 1 1 22 4 -1. + <_> + 1 1 11 2 2. + <_> + 12 3 11 2 2. + <_> + + <_> + 9 11 9 6 -1. + <_> + 9 13 9 2 3. + <_> + + <_> + 0 15 18 3 -1. + <_> + 0 16 18 1 3. + <_> + + <_> + 16 14 7 9 -1. + <_> + 16 17 7 3 3. + <_> + + <_> + 4 3 16 4 -1. + <_> + 12 3 8 4 2. + <_> + + <_> + 7 6 12 5 -1. + <_> + 7 6 6 5 2. + <_> + + <_> + 9 6 4 9 -1. + <_> + 11 6 2 9 2. + <_> + + <_> + 12 1 4 10 -1. + <_> + 12 1 2 10 2. + <_> + + <_> + 8 1 4 10 -1. + <_> + 10 1 2 10 2. + <_> + + <_> + 15 15 6 9 -1. + <_> + 15 18 6 3 3. + <_> + + <_> + 3 15 6 9 -1. + <_> + 3 18 6 3 3. + <_> + + <_> + 15 1 3 19 -1. + <_> + 16 1 1 19 3. + <_> + + <_> + 1 3 6 9 -1. + <_> + 3 3 2 9 3. + <_> + + <_> + 15 0 3 19 -1. + <_> + 16 0 1 19 3. + <_> + + <_> + 6 3 12 4 -1. + <_> + 12 3 6 4 2. + <_> + + <_> + 10 5 4 9 -1. + <_> + 10 5 2 9 2. + <_> + + <_> + 6 0 3 19 -1. + <_> + 7 0 1 19 3. + <_> + + <_> + 11 1 3 12 -1. + <_> + 11 7 3 6 2. + <_> + + <_> + 6 7 10 5 -1. + <_> + 11 7 5 5 2. + <_> + + <_> + 11 3 3 18 -1. + <_> + 12 3 1 18 3. + <_> + + <_> + 9 3 6 12 -1. + <_> + 11 3 2 12 3. + <_> + + <_> + 3 7 19 3 -1. + <_> + 3 8 19 1 3. + <_> + + <_> + 2 7 18 3 -1. + <_> + 2 8 18 1 3. + <_> + + <_> + 3 13 18 4 -1. + <_> + 12 13 9 2 2. + <_> + 3 15 9 2 2. + <_> + + <_> + 3 5 6 9 -1. + <_> + 5 5 2 9 3. + <_> + + <_> + 4 1 20 4 -1. + <_> + 14 1 10 2 2. + <_> + 4 3 10 2 2. + <_> + + <_> + 0 1 20 4 -1. + <_> + 0 1 10 2 2. + <_> + 10 3 10 2 2. + <_> + + <_> + 10 15 6 6 -1. + <_> + 10 15 3 6 2. + <_> + + <_> + 0 2 24 8 -1. + <_> + 8 2 8 8 3. + <_> + + <_> + 5 5 18 3 -1. + <_> + 5 6 18 1 3. + <_> + + <_> + 8 15 6 6 -1. + <_> + 11 15 3 6 2. + <_> + + <_> + 11 12 8 5 -1. + <_> + 11 12 4 5 2. + <_> + + <_> + 5 12 8 5 -1. + <_> + 9 12 4 5 2. + <_> + + <_> + 5 0 14 6 -1. + <_> + 5 2 14 2 3. + <_> + + <_> + 10 2 4 15 -1. + <_> + 10 7 4 5 3. + <_> + + <_> + 10 7 5 12 -1. + <_> + 10 11 5 4 3. + <_> + + <_> + 7 9 8 14 -1. + <_> + 7 9 4 7 2. + <_> + 11 16 4 7 2. + <_> + + <_> + 1 5 22 6 -1. + <_> + 12 5 11 3 2. + <_> + 1 8 11 3 2. + <_> + + <_> + 0 5 6 6 -1. + <_> + 0 8 6 3 2. + <_> + + <_> + 12 17 9 4 -1. + <_> + 12 19 9 2 2. + <_> + + <_> + 2 18 19 3 -1. + <_> + 2 19 19 1 3. + <_> + + <_> + 12 17 9 4 -1. + <_> + 12 19 9 2 2. + <_> + + <_> + 1 17 18 3 -1. + <_> + 1 18 18 1 3. + <_> + + <_> + 12 17 9 4 -1. + <_> + 12 19 9 2 2. + <_> + + <_> + 0 0 24 3 -1. + <_> + 0 1 24 1 3. + <_> + + <_> + 5 0 14 4 -1. + <_> + 5 2 14 2 2. + <_> + + <_> + 6 14 9 6 -1. + <_> + 6 16 9 2 3. + <_> + + <_> + 14 13 6 9 -1. + <_> + 14 16 6 3 3. + <_> + + <_> + 5 20 13 4 -1. + <_> + 5 22 13 2 2. + <_> + + <_> + 9 9 6 12 -1. + <_> + 9 13 6 4 3. + <_> + + <_> + 1 10 21 3 -1. + <_> + 8 10 7 3 3. + <_> + + <_> + 8 8 9 6 -1. + <_> + 11 8 3 6 3. + <_> + + <_> + 3 10 9 7 -1. + <_> + 6 10 3 7 3. + <_> + + <_> + 12 10 10 8 -1. + <_> + 17 10 5 4 2. + <_> + 12 14 5 4 2. + <_> + + <_> + 0 15 24 3 -1. + <_> + 8 15 8 3 3. + <_> + + <_> + 8 5 9 6 -1. + <_> + 8 7 9 2 3. + <_> + + <_> + 4 13 6 9 -1. + <_> + 4 16 6 3 3. + <_> + + <_> + 12 17 9 4 -1. + <_> + 12 19 9 2 2. + <_> + + <_> + 9 12 6 6 -1. + <_> + 9 15 6 3 2. + <_> + + <_> + 9 9 14 10 -1. + <_> + 16 9 7 5 2. + <_> + 9 14 7 5 2. + <_> + + <_> + 1 9 14 10 -1. + <_> + 1 9 7 5 2. + <_> + 8 14 7 5 2. + <_> + + <_> + 8 7 9 17 -1. + <_> + 11 7 3 17 3. + <_> + + <_> + 3 4 6 20 -1. + <_> + 3 4 3 10 2. + <_> + 6 14 3 10 2. + <_> + + <_> + 7 8 10 4 -1. + <_> + 7 8 5 4 2. + <_> + + <_> + 10 7 4 9 -1. + <_> + 12 7 2 9 2. + <_> + + <_> + 10 15 6 9 -1. + <_> + 12 15 2 9 3. + <_> + + <_> + 3 8 6 16 -1. + <_> + 3 8 3 8 2. + <_> + 6 16 3 8 2. + <_> + + <_> + 12 17 9 4 -1. + <_> + 12 19 9 2 2. + <_> + + <_> + 3 17 9 4 -1. + <_> + 3 19 9 2 2. + <_> + + <_> + 10 1 9 6 -1. + <_> + 13 1 3 6 3. + <_> + + <_> + 5 7 4 10 -1. + <_> + 5 12 4 5 2. + <_> + + <_> + 7 5 12 6 -1. + <_> + 11 5 4 6 3. + <_> + + <_> + 6 4 9 8 -1. + <_> + 9 4 3 8 3. + <_> + + <_> + 12 16 10 8 -1. + <_> + 17 16 5 4 2. + <_> + 12 20 5 4 2. + <_> + + <_> + 2 16 10 8 -1. + <_> + 2 16 5 4 2. + <_> + 7 20 5 4 2. + <_> + + <_> + 0 0 24 4 -1. + <_> + 12 0 12 2 2. + <_> + 0 2 12 2 2. + <_> + + <_> + 0 6 9 6 -1. + <_> + 0 8 9 2 3. + <_> + + <_> + 0 4 24 6 -1. + <_> + 12 4 12 3 2. + <_> + 0 7 12 3 2. + <_> + + <_> + 5 0 11 4 -1. + <_> + 5 2 11 2 2. + <_> + + <_> + 1 1 22 4 -1. + <_> + 12 1 11 2 2. + <_> + 1 3 11 2 2. + <_> + + <_> + 9 6 6 18 -1. + <_> + 9 15 6 9 2. + <_> + + <_> + 2 9 20 4 -1. + <_> + 2 11 20 2 2. + <_> + + <_> + 5 2 14 14 -1. + <_> + 5 9 14 7 2. + <_> + + <_> + 4 2 16 6 -1. + <_> + 4 5 16 3 2. + <_> + + <_> + 2 3 19 3 -1. + <_> + 2 4 19 1 3. + <_> + + <_> + 7 1 10 4 -1. + <_> + 7 3 10 2 2. + <_> + + <_> + 0 9 4 15 -1. + <_> + 0 14 4 5 3. + <_> + + <_> + 2 10 21 3 -1. + <_> + 2 11 21 1 3. + <_> + + <_> + 3 0 6 6 -1. + <_> + 6 0 3 6 2. + <_> + + <_> + 6 4 14 9 -1. + <_> + 6 7 14 3 3. + <_> + + <_> + 9 1 6 9 -1. + <_> + 11 1 2 9 3. + <_> + + <_> + 15 8 9 9 -1. + <_> + 15 11 9 3 3. + <_> + + <_> + 8 0 4 21 -1. + <_> + 8 7 4 7 3. + <_> + + <_> + 3 22 19 2 -1. + <_> + 3 23 19 1 2. + <_> + + <_> + 2 15 20 3 -1. + <_> + 2 16 20 1 3. + <_> + + <_> + 19 0 4 13 -1. + <_> + 19 0 2 13 2. + <_> + + <_> + 1 7 8 8 -1. + <_> + 1 11 8 4 2. + <_> + + <_> + 14 14 6 9 -1. + <_> + 14 17 6 3 3. + <_> + + <_> + 4 14 6 9 -1. + <_> + 4 17 6 3 3. + <_> + + <_> + 14 5 4 10 -1. + <_> + 14 5 2 10 2. + <_> + + <_> + 6 5 4 10 -1. + <_> + 8 5 2 10 2. + <_> + + <_> + 14 5 6 6 -1. + <_> + 14 8 6 3 2. + <_> + + <_> + 4 5 6 6 -1. + <_> + 4 8 6 3 2. + <_> + + <_> + 0 2 24 21 -1. + <_> + 8 2 8 21 3. + <_> + + <_> + 1 2 6 13 -1. + <_> + 3 2 2 13 3. + <_> + + <_> + 20 0 4 21 -1. + <_> + 20 0 2 21 2. + <_> + + <_> + 0 4 4 20 -1. + <_> + 2 4 2 20 2. + <_> + + <_> + 8 16 9 6 -1. + <_> + 8 18 9 2 3. + <_> + + <_> + 7 0 6 9 -1. + <_> + 9 0 2 9 3. + <_> + + <_> + 16 12 7 9 -1. + <_> + 16 15 7 3 3. + <_> + + <_> + 5 21 14 3 -1. + <_> + 12 21 7 3 2. + <_> + + <_> + 11 5 6 9 -1. + <_> + 11 5 3 9 2. + <_> + + <_> + 10 5 4 10 -1. + <_> + 12 5 2 10 2. + <_> + + <_> + 10 6 6 9 -1. + <_> + 12 6 2 9 3. + <_> + + <_> + 7 5 6 9 -1. + <_> + 10 5 3 9 2. + <_> + + <_> + 14 14 10 4 -1. + <_> + 14 16 10 2 2. + <_> + + <_> + 5 5 14 14 -1. + <_> + 5 5 7 7 2. + <_> + 12 12 7 7 2. + <_> + + <_> + 12 8 12 6 -1. + <_> + 18 8 6 3 2. + <_> + 12 11 6 3 2. + <_> + + <_> + 6 6 12 12 -1. + <_> + 6 6 6 6 2. + <_> + 12 12 6 6 2. + <_> + + <_> + 11 13 6 10 -1. + <_> + 13 13 2 10 3. + <_> + + <_> + 1 10 20 8 -1. + <_> + 1 10 10 4 2. + <_> + 11 14 10 4 2. + <_> + + <_> + 15 13 9 6 -1. + <_> + 15 15 9 2 3. + <_> + + <_> + 9 0 6 9 -1. + <_> + 9 3 6 3 3. + <_> + + <_> + 10 1 5 14 -1. + <_> + 10 8 5 7 2. + <_> + + <_> + 3 4 16 6 -1. + <_> + 3 6 16 2 3. + <_> + + <_> + 16 3 8 9 -1. + <_> + 16 6 8 3 3. + <_> + + <_> + 7 13 6 10 -1. + <_> + 9 13 2 10 3. + <_> + + <_> + 15 13 9 6 -1. + <_> + 15 15 9 2 3. + <_> + + <_> + 0 13 9 6 -1. + <_> + 0 15 9 2 3. + <_> + + <_> + 13 16 9 6 -1. + <_> + 13 18 9 2 3. + <_> + + <_> + 2 16 9 6 -1. + <_> + 2 18 9 2 3. + <_> + + <_> + 5 16 18 3 -1. + <_> + 5 17 18 1 3. + <_> + + <_> + 1 16 18 3 -1. + <_> + 1 17 18 1 3. + <_> + + <_> + 5 0 18 3 -1. + <_> + 5 1 18 1 3. + <_> + + <_> + 1 1 19 2 -1. + <_> + 1 2 19 1 2. + <_> + + <_> + 14 2 6 11 -1. + <_> + 16 2 2 11 3. + <_> + + <_> + 4 15 15 6 -1. + <_> + 9 15 5 6 3. + <_> + + <_> + 14 2 6 11 -1. + <_> + 16 2 2 11 3. + <_> + + <_> + 4 2 6 11 -1. + <_> + 6 2 2 11 3. + <_> + + <_> + 18 2 6 9 -1. + <_> + 18 5 6 3 3. + <_> + + <_> + 1 2 22 4 -1. + <_> + 1 2 11 2 2. + <_> + 12 4 11 2 2. + <_> + + <_> + 2 0 21 12 -1. + <_> + 9 0 7 12 3. + <_> + + <_> + 0 12 18 3 -1. + <_> + 0 13 18 1 3. + <_> + + <_> + 12 2 6 9 -1. + <_> + 14 2 2 9 3. + <_> + + <_> + 3 10 18 3 -1. + <_> + 3 11 18 1 3. + <_> + + <_> + 16 3 8 9 -1. + <_> + 16 6 8 3 3. + <_> + + <_> + 3 7 18 3 -1. + <_> + 3 8 18 1 3. + <_> + + <_> + 9 11 6 9 -1. + <_> + 11 11 2 9 3. + <_> + + <_> + 9 8 6 9 -1. + <_> + 11 8 2 9 3. + <_> + + <_> + 15 0 2 18 -1. + <_> + 15 0 1 18 2. + <_> + + <_> + 7 0 2 18 -1. + <_> + 8 0 1 18 2. + <_> + + <_> + 17 3 7 9 -1. + <_> + 17 6 7 3 3. + <_> + + <_> + 3 18 9 6 -1. + <_> + 3 20 9 2 3. + <_> + + <_> + 3 18 21 3 -1. + <_> + 3 19 21 1 3. + <_> + + <_> + 0 3 7 9 -1. + <_> + 0 6 7 3 3. + <_> + + <_> + 2 7 22 3 -1. + <_> + 2 8 22 1 3. + <_> + + <_> + 0 3 24 16 -1. + <_> + 0 3 12 8 2. + <_> + 12 11 12 8 2. + <_> + + <_> + 13 17 9 4 -1. + <_> + 13 19 9 2 2. + <_> + + <_> + 5 5 12 8 -1. + <_> + 5 5 6 4 2. + <_> + 11 9 6 4 2. + <_> + + <_> + 5 6 14 6 -1. + <_> + 12 6 7 3 2. + <_> + 5 9 7 3 2. + <_> + + <_> + 5 16 14 6 -1. + <_> + 5 16 7 3 2. + <_> + 12 19 7 3 2. + <_> + + <_> + 18 2 6 9 -1. + <_> + 18 5 6 3 3. + <_> + + <_> + 0 2 6 9 -1. + <_> + 0 5 6 3 3. + <_> + + <_> + 3 4 20 10 -1. + <_> + 13 4 10 5 2. + <_> + 3 9 10 5 2. + <_> + + <_> + 2 13 9 8 -1. + <_> + 5 13 3 8 3. + <_> + + <_> + 2 1 21 15 -1. + <_> + 9 1 7 15 3. + <_> + + <_> + 5 12 14 8 -1. + <_> + 12 12 7 8 2. + <_> + + <_> + 6 7 12 4 -1. + <_> + 6 7 6 4 2. + <_> + + <_> + 6 5 9 6 -1. + <_> + 9 5 3 6 3. + <_> + + <_> + 13 11 6 6 -1. + <_> + 13 11 3 6 2. + <_> + + <_> + 5 11 6 6 -1. + <_> + 8 11 3 6 2. + <_> + + <_> + 6 4 18 2 -1. + <_> + 6 5 18 1 2. + <_> + + <_> + 0 2 6 11 -1. + <_> + 2 2 2 11 3. + <_> + + <_> + 18 0 6 15 -1. + <_> + 20 0 2 15 3. + <_> + + <_> + 0 0 6 13 -1. + <_> + 2 0 2 13 3. + <_> + + <_> + 12 0 6 9 -1. + <_> + 14 0 2 9 3. + <_> + + <_> + 6 0 6 9 -1. + <_> + 8 0 2 9 3. + <_> + + <_> + 0 2 24 4 -1. + <_> + 8 2 8 4 3. + <_> + + <_> + 3 13 18 4 -1. + <_> + 12 13 9 4 2. + <_> + + <_> + 9 7 10 4 -1. + <_> + 9 7 5 4 2. + <_> + + <_> + 5 8 12 3 -1. + <_> + 11 8 6 3 2. + <_> + + <_> + 4 14 19 3 -1. + <_> + 4 15 19 1 3. + <_> + + <_> + 10 0 4 20 -1. + <_> + 10 10 4 10 2. + <_> + + <_> + 8 15 9 6 -1. + <_> + 8 17 9 2 3. + <_> + + <_> + 2 9 15 4 -1. + <_> + 7 9 5 4 3. + <_> + + <_> + 8 4 12 7 -1. + <_> + 12 4 4 7 3. + <_> + + <_> + 0 10 6 9 -1. + <_> + 0 13 6 3 3. + <_> + + <_> + 18 5 6 9 -1. + <_> + 18 8 6 3 3. + <_> + + <_> + 0 18 16 6 -1. + <_> + 0 18 8 3 2. + <_> + 8 21 8 3 2. + <_> + + <_> + 9 18 14 6 -1. + <_> + 16 18 7 3 2. + <_> + 9 21 7 3 2. + <_> + + <_> + 1 20 20 4 -1. + <_> + 1 20 10 2 2. + <_> + 11 22 10 2 2. + <_> + + <_> + 2 8 20 6 -1. + <_> + 12 8 10 3 2. + <_> + 2 11 10 3 2. + <_> + + <_> + 7 8 6 9 -1. + <_> + 9 8 2 9 3. + <_> + + <_> + 8 5 12 8 -1. + <_> + 12 5 4 8 3. + <_> + + <_> + 4 5 12 8 -1. + <_> + 8 5 4 8 3. + <_> + + <_> + 10 6 6 9 -1. + <_> + 12 6 2 9 3. + <_> + + <_> + 2 0 6 16 -1. + <_> + 4 0 2 16 3. + <_> + + <_> + 15 4 6 12 -1. + <_> + 15 8 6 4 3. + <_> + + <_> + 3 4 6 12 -1. + <_> + 3 8 6 4 3. + <_> + + <_> + 15 12 9 6 -1. + <_> + 15 14 9 2 3. + <_> + + <_> + 4 0 15 22 -1. + <_> + 4 11 15 11 2. + <_> + + <_> + 15 12 9 6 -1. + <_> + 15 14 9 2 3. + <_> + + <_> + 0 12 9 6 -1. + <_> + 0 14 9 2 3. + <_> + + <_> + 15 15 9 6 -1. + <_> + 15 17 9 2 3. + <_> + + <_> + 0 15 9 6 -1. + <_> + 0 17 9 2 3. + <_> + + <_> + 10 0 8 10 -1. + <_> + 14 0 4 5 2. + <_> + 10 5 4 5 2. + <_> + + <_> + 1 0 4 16 -1. + <_> + 3 0 2 16 2. + <_> + + <_> + 7 6 10 6 -1. + <_> + 7 8 10 2 3. + <_> + + <_> + 10 12 4 10 -1. + <_> + 10 17 4 5 2. + <_> + + <_> + 8 4 10 6 -1. + <_> + 8 6 10 2 3. + <_> + + <_> + 3 22 18 2 -1. + <_> + 12 22 9 2 2. + <_> + + <_> + 7 7 11 6 -1. + <_> + 7 9 11 2 3. + <_> + + <_> + 0 0 12 10 -1. + <_> + 0 0 6 5 2. + <_> + 6 5 6 5 2. + <_> + + <_> + 10 1 12 6 -1. + <_> + 16 1 6 3 2. + <_> + 10 4 6 3 2. + <_> + + <_> + 7 16 9 4 -1. + <_> + 7 18 9 2 2. + <_> + + <_> + 5 7 15 16 -1. + <_> + 10 7 5 16 3. + <_> + + <_> + 5 10 12 13 -1. + <_> + 11 10 6 13 2. + <_> + + <_> + 6 2 12 6 -1. + <_> + 12 2 6 3 2. + <_> + 6 5 6 3 2. + <_> + + <_> + 3 9 12 9 -1. + <_> + 3 12 12 3 3. + <_> + + <_> + 16 2 8 6 -1. + <_> + 16 5 8 3 2. + <_> + + <_> + 0 2 8 6 -1. + <_> + 0 5 8 3 2. + <_> + + <_> + 0 3 24 11 -1. + <_> + 0 3 12 11 2. + <_> + + <_> + 0 13 8 10 -1. + <_> + 0 13 4 5 2. + <_> + 4 18 4 5 2. + <_> + + <_> + 10 14 4 10 -1. + <_> + 10 19 4 5 2. + <_> + + <_> + 10 2 4 21 -1. + <_> + 10 9 4 7 3. + <_> + + <_> + 4 4 15 9 -1. + <_> + 4 7 15 3 3. + <_> + + <_> + 0 1 24 6 -1. + <_> + 8 1 8 6 3. + <_> + + <_> + 9 6 5 16 -1. + <_> + 9 14 5 8 2. + <_> + + <_> + 3 21 18 3 -1. + <_> + 9 21 6 3 3. + <_> + + <_> + 6 5 3 12 -1. + <_> + 6 11 3 6 2. + <_> + + <_> + 11 6 4 9 -1. + <_> + 11 6 2 9 2. + <_> + + <_> + 5 6 9 8 -1. + <_> + 8 6 3 8 3. + <_> + + <_> + 4 3 20 2 -1. + <_> + 4 4 20 1 2. + <_> + + <_> + 2 10 18 3 -1. + <_> + 8 10 6 3 3. + <_> + + <_> + 7 15 10 6 -1. + <_> + 7 17 10 2 3. + <_> + + <_> + 1 4 4 18 -1. + <_> + 1 4 2 9 2. + <_> + 3 13 2 9 2. + <_> + + <_> + 13 0 6 9 -1. + <_> + 15 0 2 9 3. + <_> + + <_> + 5 0 6 9 -1. + <_> + 7 0 2 9 3. + <_> + + <_> + 11 0 6 9 -1. + <_> + 13 0 2 9 3. + <_> + + <_> + 6 7 9 6 -1. + <_> + 9 7 3 6 3. + <_> + + <_> + 3 0 18 2 -1. + <_> + 3 1 18 1 2. + <_> + + <_> + 0 10 20 4 -1. + <_> + 0 10 10 2 2. + <_> + 10 12 10 2 2. + <_> + + <_> + 10 2 4 12 -1. + <_> + 10 8 4 6 2. + <_> + + <_> + 6 5 6 12 -1. + <_> + 6 5 3 6 2. + <_> + 9 11 3 6 2. + <_> + + <_> + 6 0 18 22 -1. + <_> + 15 0 9 11 2. + <_> + 6 11 9 11 2. + <_> + + <_> + 0 0 18 22 -1. + <_> + 0 0 9 11 2. + <_> + 9 11 9 11 2. + <_> + + <_> + 18 2 6 11 -1. + <_> + 20 2 2 11 3. + <_> + + <_> + 0 2 6 11 -1. + <_> + 2 2 2 11 3. + <_> + + <_> + 11 0 6 9 -1. + <_> + 13 0 2 9 3. + <_> + + <_> + 0 0 20 3 -1. + <_> + 0 1 20 1 3. + <_> + + <_> + 2 2 20 2 -1. + <_> + 2 3 20 1 2. + <_> + + <_> + 1 10 18 2 -1. + <_> + 1 11 18 1 2. + <_> + + <_> + 18 7 6 9 -1. + <_> + 18 10 6 3 3. + <_> + + <_> + 0 0 22 9 -1. + <_> + 0 3 22 3 3. + <_> + + <_> + 17 3 6 9 -1. + <_> + 17 6 6 3 3. + <_> + + <_> + 0 7 6 9 -1. + <_> + 0 10 6 3 3. + <_> + + <_> + 0 6 24 6 -1. + <_> + 0 8 24 2 3. + <_> + + <_> + 0 2 6 10 -1. + <_> + 2 2 2 10 3. + <_> + + <_> + 10 6 6 9 -1. + <_> + 12 6 2 9 3. + <_> + + <_> + 7 0 6 9 -1. + <_> + 9 0 2 9 3. + <_> + + <_> + 15 0 6 9 -1. + <_> + 17 0 2 9 3. + <_> + + <_> + 3 0 6 9 -1. + <_> + 5 0 2 9 3. + <_> + + <_> + 15 17 9 6 -1. + <_> + 15 19 9 2 3. + <_> + + <_> + 0 17 18 3 -1. + <_> + 0 18 18 1 3. + <_> + + <_> + 15 14 9 6 -1. + <_> + 15 16 9 2 3. + <_> + + <_> + 0 15 23 6 -1. + <_> + 0 17 23 2 3. + <_> + + <_> + 5 15 18 3 -1. + <_> + 5 16 18 1 3. + <_> + + <_> + 0 14 9 6 -1. + <_> + 0 16 9 2 3. + <_> + + <_> + 9 8 8 10 -1. + <_> + 13 8 4 5 2. + <_> + 9 13 4 5 2. + <_> + + <_> + 3 7 15 6 -1. + <_> + 8 7 5 6 3. + <_> + + <_> + 9 8 8 10 -1. + <_> + 13 8 4 5 2. + <_> + 9 13 4 5 2. + <_> + + <_> + 5 0 6 12 -1. + <_> + 8 0 3 12 2. + <_> + + <_> + 9 8 8 10 -1. + <_> + 13 8 4 5 2. + <_> + 9 13 4 5 2. + <_> + + <_> + 8 5 6 9 -1. + <_> + 10 5 2 9 3. + <_> + + <_> + 10 6 4 18 -1. + <_> + 12 6 2 9 2. + <_> + 10 15 2 9 2. + <_> + + <_> + 5 7 12 4 -1. + <_> + 11 7 6 4 2. + <_> + + <_> + 9 8 8 10 -1. + <_> + 13 8 4 5 2. + <_> + 9 13 4 5 2. + <_> + + <_> + 7 8 8 10 -1. + <_> + 7 8 4 5 2. + <_> + 11 13 4 5 2. + <_> + + <_> + 11 10 6 14 -1. + <_> + 14 10 3 7 2. + <_> + 11 17 3 7 2. + <_> + + <_> + 9 5 6 19 -1. + <_> + 12 5 3 19 2. + <_> + + <_> + 6 12 12 6 -1. + <_> + 12 12 6 3 2. + <_> + 6 15 6 3 2. + <_> + + <_> + 1 9 18 6 -1. + <_> + 1 9 9 3 2. + <_> + 10 12 9 3 2. + <_> + + <_> + 16 14 8 10 -1. + <_> + 20 14 4 5 2. + <_> + 16 19 4 5 2. + <_> + + <_> + 0 9 22 8 -1. + <_> + 0 9 11 4 2. + <_> + 11 13 11 4 2. + <_> + + <_> + 8 18 12 6 -1. + <_> + 14 18 6 3 2. + <_> + 8 21 6 3 2. + <_> + + <_> + 0 6 20 18 -1. + <_> + 0 6 10 9 2. + <_> + 10 15 10 9 2. + <_> + + <_> + 3 6 20 12 -1. + <_> + 13 6 10 6 2. + <_> + 3 12 10 6 2. + <_> + + <_> + 0 16 10 8 -1. + <_> + 0 16 5 4 2. + <_> + 5 20 5 4 2. + <_> + + <_> + 6 16 18 3 -1. + <_> + 6 17 18 1 3. + <_> + + <_> + 0 11 19 3 -1. + <_> + 0 12 19 1 3. + <_> + + <_> + 14 6 6 9 -1. + <_> + 14 9 6 3 3. + <_> + + <_> + 1 7 22 4 -1. + <_> + 1 7 11 2 2. + <_> + 12 9 11 2 2. + <_> + + <_> + 13 6 7 12 -1. + <_> + 13 10 7 4 3. + <_> + + <_> + 4 7 11 9 -1. + <_> + 4 10 11 3 3. + <_> + + <_> + 12 10 10 8 -1. + <_> + 17 10 5 4 2. + <_> + 12 14 5 4 2. + <_> + + <_> + 2 12 9 7 -1. + <_> + 5 12 3 7 3. + <_> + + <_> + 16 14 6 9 -1. + <_> + 16 17 6 3 3. + <_> + + <_> + 3 12 6 12 -1. + <_> + 3 16 6 4 3. + <_> + + <_> + 14 13 6 6 -1. + <_> + 14 16 6 3 2. + <_> + + <_> + 8 0 6 9 -1. + <_> + 10 0 2 9 3. + <_> + + <_> + 9 1 6 23 -1. + <_> + 11 1 2 23 3. + <_> + + <_> + 0 16 9 6 -1. + <_> + 0 18 9 2 3. + <_> + + <_> + 4 17 18 3 -1. + <_> + 4 18 18 1 3. + <_> + + <_> + 5 2 13 14 -1. + <_> + 5 9 13 7 2. + <_> + + <_> + 15 0 8 12 -1. + <_> + 19 0 4 6 2. + <_> + 15 6 4 6 2. + <_> + + <_> + 0 0 8 12 -1. + <_> + 0 0 4 6 2. + <_> + 4 6 4 6 2. + <_> + + <_> + 8 2 8 7 -1. + <_> + 8 2 4 7 2. + <_> + + <_> + 1 1 6 9 -1. + <_> + 3 1 2 9 3. + <_> + + <_> + 14 8 6 12 -1. + <_> + 17 8 3 6 2. + <_> + 14 14 3 6 2. + <_> + + <_> + 4 8 6 12 -1. + <_> + 4 8 3 6 2. + <_> + 7 14 3 6 2. + <_> + + <_> + 16 5 5 15 -1. + <_> + 16 10 5 5 3. + <_> + + <_> + 3 5 5 15 -1. + <_> + 3 10 5 5 3. + <_> + + <_> + 18 4 6 9 -1. + <_> + 18 7 6 3 3. + <_> + + <_> + 1 7 6 15 -1. + <_> + 1 12 6 5 3. + <_> + + <_> + 11 15 12 8 -1. + <_> + 17 15 6 4 2. + <_> + 11 19 6 4 2. + <_> + + <_> + 0 2 24 4 -1. + <_> + 0 2 12 2 2. + <_> + 12 4 12 2 2. + <_> + + <_> + 15 1 2 19 -1. + <_> + 15 1 1 19 2. + <_> + + <_> + 7 1 2 19 -1. + <_> + 8 1 1 19 2. + <_> + + <_> + 22 1 2 20 -1. + <_> + 22 1 1 20 2. + <_> + + <_> + 0 1 2 20 -1. + <_> + 1 1 1 20 2. + <_> + + <_> + 18 11 6 12 -1. + <_> + 20 11 2 12 3. + <_> + + <_> + 0 11 6 12 -1. + <_> + 2 11 2 12 3. + <_> + + <_> + 3 6 18 14 -1. + <_> + 3 13 18 7 2. + <_> + + <_> + 6 10 7 8 -1. + <_> + 6 14 7 4 2. + <_> + + <_> + 7 9 12 12 -1. + <_> + 7 13 12 4 3. + <_> + + <_> + 2 18 18 5 -1. + <_> + 11 18 9 5 2. + <_> + + <_> + 4 21 20 3 -1. + <_> + 4 22 20 1 3. + <_> + + <_> + 9 12 6 12 -1. + <_> + 9 12 3 6 2. + <_> + 12 18 3 6 2. + <_> + + <_> + 4 6 18 3 -1. + <_> + 4 7 18 1 3. + <_> + + <_> + 3 6 18 3 -1. + <_> + 3 7 18 1 3. + <_> + + <_> + 18 4 6 9 -1. + <_> + 18 7 6 3 3. + <_> + + <_> + 2 12 9 6 -1. + <_> + 2 14 9 2 3. + <_> + + <_> + 4 14 18 4 -1. + <_> + 13 14 9 2 2. + <_> + 4 16 9 2 2. + <_> + + <_> + 7 7 6 14 -1. + <_> + 7 7 3 7 2. + <_> + 10 14 3 7 2. + <_> + + <_> + 7 13 12 6 -1. + <_> + 13 13 6 3 2. + <_> + 7 16 6 3 2. + <_> + + <_> + 6 7 12 9 -1. + <_> + 10 7 4 9 3. + <_> + + <_> + 12 12 6 6 -1. + <_> + 12 12 3 6 2. + <_> + + <_> + 0 2 4 10 -1. + <_> + 0 7 4 5 2. + <_> + + <_> + 8 0 9 6 -1. + <_> + 11 0 3 6 3. + <_> + + <_> + 2 9 12 6 -1. + <_> + 2 12 12 3 2. + <_> + + <_> + 13 10 6 9 -1. + <_> + 13 13 6 3 3. + <_> + + <_> + 5 10 6 9 -1. + <_> + 5 13 6 3 3. + <_> + + <_> + 9 15 9 6 -1. + <_> + 9 17 9 2 3. + <_> + + <_> + 5 16 12 6 -1. + <_> + 5 19 12 3 2. + <_> + + <_> + 3 2 20 3 -1. + <_> + 3 3 20 1 3. + <_> + + <_> + 2 5 12 6 -1. + <_> + 6 5 4 6 3. + <_> + + <_> + 11 0 3 24 -1. + <_> + 12 0 1 24 3. + <_> + + <_> + 3 16 15 4 -1. + <_> + 8 16 5 4 3. + <_> + + <_> + 9 12 6 12 -1. + <_> + 9 18 6 6 2. + <_> + + <_> + 1 15 12 8 -1. + <_> + 1 15 6 4 2. + <_> + 7 19 6 4 2. + <_> + + <_> + 15 10 8 14 -1. + <_> + 19 10 4 7 2. + <_> + 15 17 4 7 2. + <_> + + <_> + 1 9 8 14 -1. + <_> + 1 9 4 7 2. + <_> + 5 16 4 7 2. + <_> + + <_> + 9 11 9 10 -1. + <_> + 9 16 9 5 2. + <_> + + <_> + 6 7 12 6 -1. + <_> + 6 9 12 2 3. + <_> + + <_> + 10 15 6 9 -1. + <_> + 12 15 2 9 3. + <_> + + <_> + 7 8 9 7 -1. + <_> + 10 8 3 7 3. + <_> + + <_> + 10 4 8 10 -1. + <_> + 14 4 4 5 2. + <_> + 10 9 4 5 2. + <_> + + <_> + 4 6 6 9 -1. + <_> + 4 9 6 3 3. + <_> + + <_> + 0 6 24 12 -1. + <_> + 8 6 8 12 3. + <_> + + <_> + 3 7 6 14 -1. + <_> + 6 7 3 14 2. + <_> + + <_> + 19 8 5 8 -1. + <_> + 19 12 5 4 2. + <_> + + <_> + 0 8 5 8 -1. + <_> + 0 12 5 4 2. + <_> + + <_> + 17 3 6 6 -1. + <_> + 17 6 6 3 2. + <_> + + <_> + 1 3 6 6 -1. + <_> + 1 6 6 3 2. + <_> + + <_> + 18 2 6 9 -1. + <_> + 18 5 6 3 3. + <_> + + <_> + 0 2 6 9 -1. + <_> + 0 5 6 3 3. + <_> + + <_> + 3 3 18 6 -1. + <_> + 3 5 18 2 3. + <_> + + <_> + 2 3 9 6 -1. + <_> + 2 5 9 2 3. + <_> + + <_> + 9 3 10 8 -1. + <_> + 14 3 5 4 2. + <_> + 9 7 5 4 2. + <_> + + <_> + 5 3 10 8 -1. + <_> + 5 3 5 4 2. + <_> + 10 7 5 4 2. + <_> + + <_> + 10 11 6 12 -1. + <_> + 10 11 3 12 2. + <_> + + <_> + 8 11 6 11 -1. + <_> + 11 11 3 11 2. + <_> + + <_> + 7 8 10 4 -1. + <_> + 7 8 5 4 2. + <_> + + <_> + 9 6 6 7 -1. + <_> + 12 6 3 7 2. + <_> + + <_> + 5 18 18 3 -1. + <_> + 5 19 18 1 3. + <_> + + <_> + 8 4 6 9 -1. + <_> + 10 4 2 9 3. + <_> + + <_> + 8 1 9 7 -1. + <_> + 11 1 3 7 3. + <_> + + <_> + 6 11 6 6 -1. + <_> + 9 11 3 6 2. + <_> + + <_> + 14 12 4 11 -1. + <_> + 14 12 2 11 2. + <_> + + <_> + 6 12 4 11 -1. + <_> + 8 12 2 11 2. + <_> + + <_> + 8 0 12 18 -1. + <_> + 12 0 4 18 3. + <_> + + <_> + 2 12 10 5 -1. + <_> + 7 12 5 5 2. + <_> + + <_> + 2 20 22 3 -1. + <_> + 2 21 22 1 3. + <_> + + <_> + 0 4 2 20 -1. + <_> + 1 4 1 20 2. + <_> + + <_> + 0 2 24 4 -1. + <_> + 8 2 8 4 3. + <_> + + <_> + 7 8 10 4 -1. + <_> + 7 10 10 2 2. + <_> + + <_> + 6 7 8 10 -1. + <_> + 6 7 4 5 2. + <_> + 10 12 4 5 2. + <_> + + <_> + 14 0 6 14 -1. + <_> + 17 0 3 7 2. + <_> + 14 7 3 7 2. + <_> + + <_> + 4 11 5 8 -1. + <_> + 4 15 5 4 2. + <_> + + <_> + 2 0 20 9 -1. + <_> + 2 3 20 3 3. + <_> + + <_> + 6 7 12 8 -1. + <_> + 6 7 6 4 2. + <_> + 12 11 6 4 2. + <_> + + <_> + 9 17 6 6 -1. + <_> + 9 20 6 3 2. + <_> + + <_> + 7 10 10 4 -1. + <_> + 7 12 10 2 2. + <_> + + <_> + 6 5 12 9 -1. + <_> + 10 5 4 9 3. + <_> + + <_> + 5 11 6 8 -1. + <_> + 8 11 3 8 2. + <_> + + <_> + 18 4 4 17 -1. + <_> + 18 4 2 17 2. + <_> + + <_> + 0 0 6 6 -1. + <_> + 3 0 3 6 2. + <_> + + <_> + 18 4 4 17 -1. + <_> + 18 4 2 17 2. + <_> + + <_> + 2 4 4 17 -1. + <_> + 4 4 2 17 2. + <_> + + <_> + 5 18 19 3 -1. + <_> + 5 19 19 1 3. + <_> + + <_> + 11 0 2 18 -1. + <_> + 11 9 2 9 2. + <_> + + <_> + 15 4 2 18 -1. + <_> + 15 13 2 9 2. + <_> + + <_> + 7 4 2 18 -1. + <_> + 7 13 2 9 2. + <_> + + <_> + 7 11 10 8 -1. + <_> + 12 11 5 4 2. + <_> + 7 15 5 4 2. + <_> + + <_> + 10 6 4 9 -1. + <_> + 12 6 2 9 2. + <_> + + <_> + 10 0 6 9 -1. + <_> + 12 0 2 9 3. + <_> + + <_> + 2 9 16 8 -1. + <_> + 2 9 8 4 2. + <_> + 10 13 8 4 2. + <_> + + <_> + 14 15 6 9 -1. + <_> + 14 18 6 3 3. + <_> + + <_> + 8 7 6 9 -1. + <_> + 10 7 2 9 3. + <_> + + <_> + 14 15 6 9 -1. + <_> + 14 18 6 3 3. + <_> + + <_> + 3 12 12 6 -1. + <_> + 3 14 12 2 3. + <_> + + <_> + 14 12 9 6 -1. + <_> + 14 14 9 2 3. + <_> + + <_> + 1 12 9 6 -1. + <_> + 1 14 9 2 3. + <_> + + <_> + 3 7 18 3 -1. + <_> + 3 8 18 1 3. + <_> + + <_> + 1 7 22 6 -1. + <_> + 1 9 22 2 3. + <_> + + <_> + 18 4 6 6 -1. + <_> + 18 7 6 3 2. + <_> + + <_> + 0 4 6 6 -1. + <_> + 0 7 6 3 2. + <_> + + <_> + 5 11 16 6 -1. + <_> + 5 14 16 3 2. + <_> + + <_> + 6 16 9 4 -1. + <_> + 6 18 9 2 2. + <_> + + <_> + 14 15 6 9 -1. + <_> + 14 18 6 3 3. + <_> + + <_> + 4 15 6 9 -1. + <_> + 4 18 6 3 3. + <_> + + <_> + 15 1 6 23 -1. + <_> + 17 1 2 23 3. + <_> + + <_> + 0 21 24 3 -1. + <_> + 8 21 8 3 3. + <_> + + <_> + 0 20 24 4 -1. + <_> + 8 20 8 4 3. + <_> + + <_> + 3 1 6 23 -1. + <_> + 5 1 2 23 3. + <_> + + <_> + 3 17 18 3 -1. + <_> + 3 18 18 1 3. + <_> + + <_> + 0 16 18 3 -1. + <_> + 0 17 18 1 3. + <_> + + <_> + 1 16 22 4 -1. + <_> + 12 16 11 2 2. + <_> + 1 18 11 2 2. + <_> + + <_> + 0 16 9 6 -1. + <_> + 0 18 9 2 3. + <_> + + <_> + 2 10 21 3 -1. + <_> + 9 10 7 3 3. + <_> + + <_> + 2 18 12 6 -1. + <_> + 2 18 6 3 2. + <_> + 8 21 6 3 2. + <_> + + <_> + 0 5 24 4 -1. + <_> + 0 7 24 2 2. + <_> + + <_> + 10 2 4 15 -1. + <_> + 10 7 4 5 3. + <_> + + <_> + 10 7 6 12 -1. + <_> + 10 13 6 6 2. + <_> + + <_> + 6 6 6 9 -1. + <_> + 8 6 2 9 3. + <_> + + <_> + 11 0 6 9 -1. + <_> + 13 0 2 9 3. + <_> + + <_> + 9 7 6 9 -1. + <_> + 11 7 2 9 3. + <_> + + <_> + 2 1 20 3 -1. + <_> + 2 2 20 1 3. + <_> + + <_> + 1 18 12 6 -1. + <_> + 1 18 6 3 2. + <_> + 7 21 6 3 2. + <_> + + <_> + 13 2 4 13 -1. + <_> + 13 2 2 13 2. + <_> + + <_> + 6 7 12 4 -1. + <_> + 12 7 6 4 2. + <_> + + <_> + 10 1 4 13 -1. + <_> + 10 1 2 13 2. + <_> + + <_> + 6 0 3 18 -1. + <_> + 7 0 1 18 3. + <_> + + <_> + 14 3 10 5 -1. + <_> + 14 3 5 5 2. + <_> + + <_> + 6 15 12 8 -1. + <_> + 10 15 4 8 3. + <_> + + <_> + 9 10 6 9 -1. + <_> + 11 10 2 9 3. + <_> + + <_> + 8 3 4 9 -1. + <_> + 10 3 2 9 2. + <_> + + <_> + 17 0 6 14 -1. + <_> + 20 0 3 7 2. + <_> + 17 7 3 7 2. + <_> + + <_> + 1 0 6 14 -1. + <_> + 1 0 3 7 2. + <_> + 4 7 3 7 2. + <_> + + <_> + 14 0 6 16 -1. + <_> + 17 0 3 8 2. + <_> + 14 8 3 8 2. + <_> + + <_> + 7 4 4 10 -1. + <_> + 9 4 2 10 2. + <_> + + <_> + 3 17 18 6 -1. + <_> + 12 17 9 3 2. + <_> + 3 20 9 3 2. + <_> + + <_> + 1 20 22 4 -1. + <_> + 12 20 11 4 2. + <_> + + <_> + 14 3 10 5 -1. + <_> + 14 3 5 5 2. + <_> + + <_> + 0 3 10 5 -1. + <_> + 5 3 5 5 2. + <_> + + <_> + 12 6 12 16 -1. + <_> + 16 6 4 16 3. + <_> + + <_> + 0 6 12 16 -1. + <_> + 4 6 4 16 3. + <_> + + <_> + 10 9 5 15 -1. + <_> + 10 14 5 5 3. + <_> + + <_> + 1 18 21 2 -1. + <_> + 1 19 21 1 2. + <_> + + <_> + 15 0 9 6 -1. + <_> + 15 2 9 2 3. + <_> + + <_> + 6 1 12 4 -1. + <_> + 12 1 6 4 2. + <_> + + <_> + 6 0 12 12 -1. + <_> + 12 0 6 6 2. + <_> + 6 6 6 6 2. + <_> + + <_> + 8 10 8 12 -1. + <_> + 8 10 4 6 2. + <_> + 12 16 4 6 2. + <_> + + <_> + 14 16 10 8 -1. + <_> + 19 16 5 4 2. + <_> + 14 20 5 4 2. + <_> + + <_> + 0 16 10 8 -1. + <_> + 0 16 5 4 2. + <_> + 5 20 5 4 2. + <_> + + <_> + 10 12 12 5 -1. + <_> + 14 12 4 5 3. + <_> + + <_> + 6 16 10 8 -1. + <_> + 6 16 5 4 2. + <_> + 11 20 5 4 2. + <_> + + <_> + 7 6 12 6 -1. + <_> + 13 6 6 3 2. + <_> + 7 9 6 3 2. + <_> + + <_> + 9 6 4 18 -1. + <_> + 9 6 2 9 2. + <_> + 11 15 2 9 2. + <_> + + <_> + 10 9 6 14 -1. + <_> + 13 9 3 7 2. + <_> + 10 16 3 7 2. + <_> + + <_> + 8 9 6 14 -1. + <_> + 8 9 3 7 2. + <_> + 11 16 3 7 2. + <_> + + <_> + 7 4 11 12 -1. + <_> + 7 10 11 6 2. + <_> + + <_> + 4 8 6 16 -1. + <_> + 4 8 3 8 2. + <_> + 7 16 3 8 2. + <_> + + <_> + 17 3 4 21 -1. + <_> + 17 10 4 7 3. + <_> + + <_> + 3 3 4 21 -1. + <_> + 3 10 4 7 3. + <_> + + <_> + 10 1 8 18 -1. + <_> + 14 1 4 9 2. + <_> + 10 10 4 9 2. + <_> + + <_> + 2 5 16 8 -1. + <_> + 2 5 8 4 2. + <_> + 10 9 8 4 2. + <_> + + <_> + 3 6 18 12 -1. + <_> + 3 10 18 4 3. + <_> + + <_> + 4 10 16 12 -1. + <_> + 4 14 16 4 3. + <_> + + <_> + 15 4 8 20 -1. + <_> + 19 4 4 10 2. + <_> + 15 14 4 10 2. + <_> + + <_> + 7 2 9 6 -1. + <_> + 10 2 3 6 3. + <_> + + <_> + 15 4 8 20 -1. + <_> + 19 4 4 10 2. + <_> + 15 14 4 10 2. + <_> + + <_> + 1 4 8 20 -1. + <_> + 1 4 4 10 2. + <_> + 5 14 4 10 2. + <_> + + <_> + 11 8 8 14 -1. + <_> + 15 8 4 7 2. + <_> + 11 15 4 7 2. + <_> + + <_> + 5 8 8 14 -1. + <_> + 5 8 4 7 2. + <_> + 9 15 4 7 2. + <_> + + <_> + 10 13 5 8 -1. + <_> + 10 17 5 4 2. + <_> + + <_> + 4 13 7 9 -1. + <_> + 4 16 7 3 3. + <_> + + <_> + 0 13 24 10 -1. + <_> + 0 18 24 5 2. + <_> + + <_> + 4 2 8 11 -1. + <_> + 8 2 4 11 2. + <_> + + <_> + 10 2 8 16 -1. + <_> + 14 2 4 8 2. + <_> + 10 10 4 8 2. + <_> + + <_> + 0 2 24 6 -1. + <_> + 0 2 12 3 2. + <_> + 12 5 12 3 2. + <_> + + <_> + 6 0 12 9 -1. + <_> + 6 3 12 3 3. + <_> + + <_> + 1 2 12 12 -1. + <_> + 1 2 6 6 2. + <_> + 7 8 6 6 2. + <_> + + <_> + 18 5 6 9 -1. + <_> + 18 8 6 3 3. + <_> + + <_> + 4 3 8 10 -1. + <_> + 4 3 4 5 2. + <_> + 8 8 4 5 2. + <_> + + <_> + 6 21 18 3 -1. + <_> + 6 22 18 1 3. + <_> + + <_> + 1 10 18 2 -1. + <_> + 1 11 18 1 2. + <_> + + <_> + 1 10 22 3 -1. + <_> + 1 11 22 1 3. + <_> + + <_> + 2 8 12 9 -1. + <_> + 2 11 12 3 3. + <_> + + <_> + 12 8 12 6 -1. + <_> + 18 8 6 3 2. + <_> + 12 11 6 3 2. + <_> + + <_> + 0 8 12 6 -1. + <_> + 0 8 6 3 2. + <_> + 6 11 6 3 2. + <_> + + <_> + 10 15 6 9 -1. + <_> + 12 15 2 9 3. + <_> + + <_> + 7 13 9 6 -1. + <_> + 7 15 9 2 3. + <_> + + <_> + 9 8 7 12 -1. + <_> + 9 14 7 6 2. + <_> + + <_> + 4 13 9 6 -1. + <_> + 7 13 3 6 3. + <_> + + <_> + 6 15 18 4 -1. + <_> + 12 15 6 4 3. + <_> + + <_> + 5 4 4 16 -1. + <_> + 7 4 2 16 2. + <_> + + <_> + 10 15 6 9 -1. + <_> + 12 15 2 9 3. + <_> + + <_> + 8 15 6 9 -1. + <_> + 10 15 2 9 3. + <_> + + <_> + 9 11 12 10 -1. + <_> + 15 11 6 5 2. + <_> + 9 16 6 5 2. + <_> + + <_> + 3 6 14 6 -1. + <_> + 3 8 14 2 3. + <_> + + <_> + 4 2 17 8 -1. + <_> + 4 6 17 4 2. + <_> + + <_> + 6 2 12 21 -1. + <_> + 6 9 12 7 3. + <_> + + <_> + 8 1 9 9 -1. + <_> + 8 4 9 3 3. + <_> + + <_> + 0 7 24 3 -1. + <_> + 12 7 12 3 2. + <_> + + <_> + 11 6 9 10 -1. + <_> + 11 11 9 5 2. + <_> + + <_> + 2 11 18 3 -1. + <_> + 2 12 18 1 3. + <_> + + <_> + 8 16 9 4 -1. + <_> + 8 18 9 2 2. + <_> + + <_> + 0 0 9 6 -1. + <_> + 0 2 9 2 3. + <_> + + <_> + 0 11 24 6 -1. + <_> + 0 13 24 2 3. + <_> + + <_> + 2 9 20 6 -1. + <_> + 2 12 20 3 2. + <_> + + <_> + 4 5 16 12 -1. + <_> + 12 5 8 6 2. + <_> + 4 11 8 6 2. + <_> + + <_> + 10 2 4 15 -1. + <_> + 10 7 4 5 3. + <_> + + <_> + 7 3 10 4 -1. + <_> + 7 5 10 2 2. + <_> + + <_> + 9 15 6 8 -1. + <_> + 9 19 6 4 2. + <_> + + <_> + 17 0 7 10 -1. + <_> + 17 5 7 5 2. + <_> + + <_> + 0 0 7 10 -1. + <_> + 0 5 7 5 2. + <_> + + <_> + 16 1 6 12 -1. + <_> + 19 1 3 6 2. + <_> + 16 7 3 6 2. + <_> + + <_> + 1 0 19 8 -1. + <_> + 1 4 19 4 2. + <_> + + <_> + 12 2 9 4 -1. + <_> + 12 4 9 2 2. + <_> + + <_> + 3 2 9 4 -1. + <_> + 3 4 9 2 2. + <_> + + <_> + 12 2 10 6 -1. + <_> + 12 4 10 2 3. + <_> + + <_> + 3 4 18 2 -1. + <_> + 12 4 9 2 2. + <_> + + <_> + 12 1 4 9 -1. + <_> + 12 1 2 9 2. + <_> + + <_> + 8 1 4 9 -1. + <_> + 10 1 2 9 2. + <_> + + <_> + 10 5 8 10 -1. + <_> + 14 5 4 5 2. + <_> + 10 10 4 5 2. + <_> + + <_> + 6 4 12 13 -1. + <_> + 10 4 4 13 3. + <_> + + <_> + 13 5 6 6 -1. + <_> + 13 5 3 6 2. + <_> + + <_> + 1 5 12 3 -1. + <_> + 7 5 6 3 2. + <_> + + <_> + 7 5 10 6 -1. + <_> + 7 7 10 2 3. + <_> + + <_> + 2 0 21 5 -1. + <_> + 9 0 7 5 3. + <_> + + <_> + 0 8 9 9 -1. + <_> + 0 11 9 3 3. + <_> + + <_> + 9 6 6 9 -1. + <_> + 11 6 2 9 3. + <_> + + <_> + 0 3 6 7 -1. + <_> + 3 3 3 7 2. + <_> + + <_> + 9 18 12 6 -1. + <_> + 15 18 6 3 2. + <_> + 9 21 6 3 2. + <_> + + <_> + 2 8 20 6 -1. + <_> + 2 8 10 3 2. + <_> + 12 11 10 3 2. + <_> + + <_> + 13 2 10 4 -1. + <_> + 13 4 10 2 2. + <_> + + <_> + 4 5 5 18 -1. + <_> + 4 11 5 6 3. + <_> + + <_> + 20 4 4 9 -1. + <_> + 20 4 2 9 2. + <_> + + <_> + 8 6 8 14 -1. + <_> + 8 13 8 7 2. + <_> + + <_> + 0 1 24 6 -1. + <_> + 12 1 12 3 2. + <_> + 0 4 12 3 2. + <_> + + <_> + 0 4 4 9 -1. + <_> + 2 4 2 9 2. + <_> + + <_> + 3 6 18 3 -1. + <_> + 3 7 18 1 3. + <_> + + <_> + 3 17 16 6 -1. + <_> + 3 19 16 2 3. + <_> + + <_> + 13 6 6 9 -1. + <_> + 13 9 6 3 3. + <_> + + <_> + 5 6 14 6 -1. + <_> + 5 6 7 3 2. + <_> + 12 9 7 3 2. + <_> + + <_> + 13 5 8 10 -1. + <_> + 17 5 4 5 2. + <_> + 13 10 4 5 2. + <_> + + <_> + 2 2 20 3 -1. + <_> + 2 3 20 1 3. + <_> + + <_> + 9 2 9 6 -1. + <_> + 12 2 3 6 3. + <_> + + <_> + 8 6 6 9 -1. + <_> + 10 6 2 9 3. + <_> + + <_> + 12 3 4 11 -1. + <_> + 12 3 2 11 2. + <_> + + <_> + 8 3 4 11 -1. + <_> + 10 3 2 11 2. + <_> + + <_> + 8 3 8 10 -1. + <_> + 12 3 4 5 2. + <_> + 8 8 4 5 2. + <_> + + <_> + 11 1 2 18 -1. + <_> + 12 1 1 18 2. + <_> + + <_> + 9 2 9 6 -1. + <_> + 12 2 3 6 3. + <_> + + <_> + 0 2 19 3 -1. + <_> + 0 3 19 1 3. + <_> + + <_> + 9 14 9 6 -1. + <_> + 9 16 9 2 3. + <_> + + <_> + 1 8 18 5 -1. + <_> + 7 8 6 5 3. + <_> + + <_> + 12 0 6 9 -1. + <_> + 14 0 2 9 3. + <_> + + <_> + 6 0 6 9 -1. + <_> + 8 0 2 9 3. + <_> + + <_> + 13 6 4 15 -1. + <_> + 13 11 4 5 3. + <_> + + <_> + 1 5 18 3 -1. + <_> + 1 6 18 1 3. + <_> + + <_> + 9 7 14 6 -1. + <_> + 9 9 14 2 3. + <_> + + <_> + 2 16 18 3 -1. + <_> + 2 17 18 1 3. + <_> + + <_> + 15 17 9 6 -1. + <_> + 15 19 9 2 3. + <_> + + <_> + 0 8 12 6 -1. + <_> + 0 8 6 3 2. + <_> + 6 11 6 3 2. + <_> + + <_> + 9 13 7 8 -1. + <_> + 9 17 7 4 2. + <_> + + <_> + 2 17 20 3 -1. + <_> + 2 18 20 1 3. + <_> + + <_> + 15 17 9 6 -1. + <_> + 15 19 9 2 3. + <_> + + <_> + 4 0 15 4 -1. + <_> + 4 2 15 2 2. + <_> + + <_> + 17 2 6 6 -1. + <_> + 17 5 6 3 2. + <_> + + <_> + 0 3 6 9 -1. + <_> + 0 6 6 3 3. + <_> + + <_> + 15 17 9 6 -1. + <_> + 15 19 9 2 3. + <_> + + <_> + 0 17 9 6 -1. + <_> + 0 19 9 2 3. + <_> + + <_> + 9 18 12 6 -1. + <_> + 15 18 6 3 2. + <_> + 9 21 6 3 2. + <_> + + <_> + 3 15 6 9 -1. + <_> + 3 18 6 3 3. + <_> + + <_> + 16 13 8 10 -1. + <_> + 20 13 4 5 2. + <_> + 16 18 4 5 2. + <_> + + <_> + 0 14 24 4 -1. + <_> + 8 14 8 4 3. + <_> + + <_> + 13 18 6 6 -1. + <_> + 13 18 3 6 2. + <_> + + <_> + 0 13 8 10 -1. + <_> + 0 13 4 5 2. + <_> + 4 18 4 5 2. + <_> + + <_> + 0 14 24 6 -1. + <_> + 0 17 24 3 2. + <_> + + <_> + 5 2 12 8 -1. + <_> + 5 2 6 4 2. + <_> + 11 6 6 4 2. + <_> + + <_> + 8 9 9 6 -1. + <_> + 11 9 3 6 3. + <_> + + <_> + 4 3 16 4 -1. + <_> + 4 5 16 2 2. + <_> + + <_> + 10 2 4 10 -1. + <_> + 10 7 4 5 2. + <_> + + <_> + 8 4 5 8 -1. + <_> + 8 8 5 4 2. + <_> + + <_> + 11 5 9 12 -1. + <_> + 11 9 9 4 3. + <_> + + <_> + 4 5 9 12 -1. + <_> + 4 9 9 4 3. + <_> + + <_> + 14 6 6 9 -1. + <_> + 14 9 6 3 3. + <_> + + <_> + 2 4 20 12 -1. + <_> + 2 8 20 4 3. + <_> + + <_> + 4 4 17 16 -1. + <_> + 4 12 17 8 2. + <_> + + <_> + 8 7 7 6 -1. + <_> + 8 10 7 3 2. + <_> + + <_> + 1 9 23 2 -1. + <_> + 1 10 23 1 2. + <_> + + <_> + 7 0 6 9 -1. + <_> + 9 0 2 9 3. + <_> + + <_> + 13 3 4 9 -1. + <_> + 13 3 2 9 2. + <_> + + <_> + 8 1 6 13 -1. + <_> + 10 1 2 13 3. + <_> + + <_> + 4 22 18 2 -1. + <_> + 4 23 18 1 2. + <_> + + <_> + 3 10 9 6 -1. + <_> + 6 10 3 6 3. + <_> + + <_> + 14 0 2 24 -1. + <_> + 14 0 1 24 2. + <_> + + <_> + 8 0 2 24 -1. + <_> + 9 0 1 24 2. + <_> + + <_> + 3 2 18 10 -1. + <_> + 9 2 6 10 3. + <_> + + <_> + 4 13 15 6 -1. + <_> + 9 13 5 6 3. + <_> + + <_> + 3 21 18 3 -1. + <_> + 9 21 6 3 3. + <_> + + <_> + 9 1 4 11 -1. + <_> + 11 1 2 11 2. + <_> + + <_> + 9 7 10 4 -1. + <_> + 9 7 5 4 2. + <_> + + <_> + 7 0 10 18 -1. + <_> + 12 0 5 18 2. + <_> + + <_> + 12 1 6 16 -1. + <_> + 14 1 2 16 3. + <_> + + <_> + 6 1 6 16 -1. + <_> + 8 1 2 16 3. + <_> + + <_> + 18 2 6 6 -1. + <_> + 18 5 6 3 2. + <_> + + <_> + 3 5 18 2 -1. + <_> + 3 6 18 1 2. + <_> + + <_> + 18 2 6 6 -1. + <_> + 18 5 6 3 2. + <_> + + <_> + 0 2 6 6 -1. + <_> + 0 5 6 3 2. + <_> + + <_> + 13 11 11 6 -1. + <_> + 13 13 11 2 3. + <_> + + <_> + 5 7 10 4 -1. + <_> + 10 7 5 4 2. + <_> + + <_> + 11 9 10 7 -1. + <_> + 11 9 5 7 2. + <_> + + <_> + 3 9 10 7 -1. + <_> + 8 9 5 7 2. + <_> + + <_> + 16 4 6 6 -1. + <_> + 16 4 3 6 2. + <_> + + <_> + 5 6 10 8 -1. + <_> + 5 6 5 4 2. + <_> + 10 10 5 4 2. + <_> + + <_> + 7 21 16 3 -1. + <_> + 7 21 8 3 2. + <_> + + <_> + 1 21 16 3 -1. + <_> + 9 21 8 3 2. + <_> + + <_> + 2 5 22 14 -1. + <_> + 13 5 11 7 2. + <_> + 2 12 11 7 2. + <_> + + <_> + 3 10 8 10 -1. + <_> + 3 10 4 5 2. + <_> + 7 15 4 5 2. + <_> + + <_> + 17 0 6 12 -1. + <_> + 20 0 3 6 2. + <_> + 17 6 3 6 2. + <_> + + <_> + 5 2 6 18 -1. + <_> + 7 2 2 18 3. + <_> + + <_> + 13 0 6 9 -1. + <_> + 15 0 2 9 3. + <_> + + <_> + 0 12 7 9 -1. + <_> + 0 15 7 3 3. + <_> + + <_> + 15 13 8 10 -1. + <_> + 19 13 4 5 2. + <_> + 15 18 4 5 2. + <_> + + <_> + 1 0 6 12 -1. + <_> + 1 0 3 6 2. + <_> + 4 6 3 6 2. + <_> + + <_> + 12 1 3 12 -1. + <_> + 12 7 3 6 2. + <_> + + <_> + 1 13 8 10 -1. + <_> + 1 13 4 5 2. + <_> + 5 18 4 5 2. + <_> + + <_> + 3 21 19 2 -1. + <_> + 3 22 19 1 2. + <_> + + <_> + 6 3 4 13 -1. + <_> + 8 3 2 13 2. + <_> + + <_> + 5 10 18 3 -1. + <_> + 5 11 18 1 3. + <_> + + <_> + 9 3 5 12 -1. + <_> + 9 7 5 4 3. + <_> + + <_> + 11 2 4 15 -1. + <_> + 11 7 4 5 3. + <_> + + <_> + 4 1 16 4 -1. + <_> + 4 3 16 2 2. + <_> + + <_> + 6 0 18 3 -1. + <_> + 6 1 18 1 3. + <_> + + <_> + 5 1 10 8 -1. + <_> + 5 1 5 4 2. + <_> + 10 5 5 4 2. + <_> + + <_> + 11 18 12 6 -1. + <_> + 17 18 6 3 2. + <_> + 11 21 6 3 2. + <_> + + <_> + 5 15 12 3 -1. + <_> + 11 15 6 3 2. + <_> + + <_> + 1 10 22 4 -1. + <_> + 1 10 11 4 2. + <_> + + <_> + 7 9 9 6 -1. + <_> + 10 9 3 6 3. + <_> + + <_> + 6 11 12 5 -1. + <_> + 10 11 4 5 3. + <_> + + <_> + 6 7 10 7 -1. + <_> + 11 7 5 7 2. + <_> + + <_> + 11 2 8 10 -1. + <_> + 11 2 4 10 2. + <_> + + <_> + 5 2 8 10 -1. + <_> + 9 2 4 10 2. + <_> + + <_> + 6 4 18 6 -1. + <_> + 15 4 9 3 2. + <_> + 6 7 9 3 2. + <_> + + <_> + 0 5 10 9 -1. + <_> + 0 8 10 3 3. + <_> + + <_> + 2 7 21 6 -1. + <_> + 2 9 21 2 3. + <_> + + <_> + 0 4 22 16 -1. + <_> + 0 4 11 8 2. + <_> + 11 12 11 8 2. + <_> + + <_> + 9 0 6 22 -1. + <_> + 9 11 6 11 2. + <_> + + <_> + 9 1 3 12 -1. + <_> + 9 7 3 6 2. + <_> + + <_> + 12 0 12 18 -1. + <_> + 18 0 6 9 2. + <_> + 12 9 6 9 2. + <_> + + <_> + 0 0 12 18 -1. + <_> + 0 0 6 9 2. + <_> + 6 9 6 9 2. + <_> + + <_> + 1 1 22 4 -1. + <_> + 12 1 11 2 2. + <_> + 1 3 11 2 2. + <_> + + <_> + 3 0 18 4 -1. + <_> + 3 2 18 2 2. + <_> + + <_> + 2 5 22 6 -1. + <_> + 2 7 22 2 3. + <_> + + <_> + 5 0 6 9 -1. + <_> + 5 3 6 3 3. + <_> + + <_> + 10 14 6 9 -1. + <_> + 12 14 2 9 3. + <_> + + <_> + 8 14 6 9 -1. + <_> + 10 14 2 9 3. + <_> + + <_> + 5 18 18 3 -1. + <_> + 5 19 18 1 3. + <_> + + <_> + 6 0 6 13 -1. + <_> + 9 0 3 13 2. + <_> + + <_> + 7 4 12 4 -1. + <_> + 7 4 6 4 2. + <_> + + <_> + 5 2 12 6 -1. + <_> + 9 2 4 6 3. + <_> + + <_> + 4 1 18 3 -1. + <_> + 4 2 18 1 3. + <_> + + <_> + 0 8 6 12 -1. + <_> + 0 12 6 4 3. + <_> + + <_> + 9 15 6 9 -1. + <_> + 11 15 2 9 3. + <_> + + <_> + 9 10 6 13 -1. + <_> + 11 10 2 13 3. + <_> + + <_> + 6 17 18 2 -1. + <_> + 6 18 18 1 2. + <_> + + <_> + 9 4 6 9 -1. + <_> + 11 4 2 9 3. + <_> + + <_> + 10 0 6 9 -1. + <_> + 12 0 2 9 3. + <_> + + <_> + 5 6 10 8 -1. + <_> + 5 6 5 4 2. + <_> + 10 10 5 4 2. + <_> + + <_> + 14 9 5 8 -1. + <_> + 14 13 5 4 2. + <_> + + <_> + 5 9 5 8 -1. + <_> + 5 13 5 4 2. + <_> + + <_> + 14 11 9 6 -1. + <_> + 14 13 9 2 3. + <_> + + <_> + 0 2 23 15 -1. + <_> + 0 7 23 5 3. + <_> + + <_> + 16 0 8 12 -1. + <_> + 16 6 8 6 2. + <_> + + <_> + 4 15 6 9 -1. + <_> + 4 18 6 3 3. + <_> + + <_> + 8 18 9 4 -1. + <_> + 8 20 9 2 2. + <_> + + <_> + 0 17 18 3 -1. + <_> + 0 18 18 1 3. + <_> + + <_> + 13 11 11 6 -1. + <_> + 13 13 11 2 3. + <_> + + <_> + 0 11 11 6 -1. + <_> + 0 13 11 2 3. + <_> + + <_> + 0 9 24 6 -1. + <_> + 12 9 12 3 2. + <_> + 0 12 12 3 2. + <_> + + <_> + 6 16 8 8 -1. + <_> + 6 20 8 4 2. + <_> + + <_> + 10 16 14 6 -1. + <_> + 10 18 14 2 3. + <_> + + <_> + 1 1 21 3 -1. + <_> + 1 2 21 1 3. + <_> + + <_> + 0 2 24 3 -1. + <_> + 0 2 12 3 2. + <_> + + <_> + 2 15 8 5 -1. + <_> + 6 15 4 5 2. + <_> + + <_> + 2 11 21 3 -1. + <_> + 9 11 7 3 3. + <_> + + <_> + 1 18 12 6 -1. + <_> + 1 18 6 3 2. + <_> + 7 21 6 3 2. + <_> + + <_> + 10 14 4 10 -1. + <_> + 10 19 4 5 2. + <_> + + <_> + 7 7 4 10 -1. + <_> + 7 12 4 5 2. + <_> + + <_> + 9 8 6 12 -1. + <_> + 9 12 6 4 3. + <_> + + <_> + 7 1 9 6 -1. + <_> + 10 1 3 6 3. + <_> + + <_> + 3 14 19 2 -1. + <_> + 3 15 19 1 2. + <_> + + <_> + 7 7 10 10 -1. + <_> + 7 7 5 5 2. + <_> + 12 12 5 5 2. + <_> + + <_> + 3 12 18 12 -1. + <_> + 3 12 9 12 2. + <_> + + <_> + 8 0 6 12 -1. + <_> + 10 0 2 12 3. + <_> + + <_> + 3 0 17 9 -1. + <_> + 3 3 17 3 3. + <_> + + <_> + 6 0 12 11 -1. + <_> + 10 0 4 11 3. + <_> + + <_> + 1 0 6 13 -1. + <_> + 4 0 3 13 2. + <_> + + <_> + 5 8 16 6 -1. + <_> + 5 11 16 3 2. + <_> + + <_> + 8 8 5 12 -1. + <_> + 8 14 5 6 2. + <_> + + <_> + 3 21 18 3 -1. + <_> + 9 21 6 3 3. + <_> + + <_> + 0 0 6 6 -1. + <_> + 3 0 3 6 2. + <_> + + <_> + 2 0 20 3 -1. + <_> + 2 1 20 1 3. + <_> + + <_> + 4 6 15 10 -1. + <_> + 9 6 5 10 3. + <_> + + <_> + 9 6 6 9 -1. + <_> + 11 6 2 9 3. + <_> + + <_> + 9 0 6 9 -1. + <_> + 11 0 2 9 3. + <_> + + <_> + 14 0 6 9 -1. + <_> + 16 0 2 9 3. + <_> + + <_> + 7 16 9 6 -1. + <_> + 7 18 9 2 3. + <_> + + <_> + 14 0 6 9 -1. + <_> + 16 0 2 9 3. + <_> + + <_> + 4 0 6 9 -1. + <_> + 6 0 2 9 3. + <_> + + <_> + 17 1 6 16 -1. + <_> + 19 1 2 16 3. + <_> + + <_> + 1 1 6 16 -1. + <_> + 3 1 2 16 3. + <_> + + <_> + 14 13 6 9 -1. + <_> + 14 16 6 3 3. + <_> + + <_> + 0 0 6 9 -1. + <_> + 0 3 6 3 3. + <_> + + <_> + 9 5 6 6 -1. + <_> + 9 5 3 6 2. + <_> + + <_> + 3 10 9 6 -1. + <_> + 6 10 3 6 3. + <_> + + <_> + 14 7 3 16 -1. + <_> + 14 15 3 8 2. + <_> + + <_> + 4 10 14 12 -1. + <_> + 4 10 7 6 2. + <_> + 11 16 7 6 2. + <_> + + <_> + 7 6 12 6 -1. + <_> + 7 8 12 2 3. + <_> + + <_> + 7 2 4 20 -1. + <_> + 9 2 2 20 2. + <_> + + <_> + 14 13 6 9 -1. + <_> + 14 16 6 3 3. + <_> + + <_> + 10 6 4 9 -1. + <_> + 12 6 2 9 2. + <_> + + <_> + 14 13 6 9 -1. + <_> + 14 16 6 3 3. + <_> + + <_> + 5 20 14 4 -1. + <_> + 5 22 14 2 2. + <_> + + <_> + 4 4 16 12 -1. + <_> + 4 10 16 6 2. + <_> + + <_> + 9 6 6 9 -1. + <_> + 11 6 2 9 3. + <_> + + <_> + 3 0 21 4 -1. + <_> + 3 2 21 2 2. + <_> + + <_> + 4 13 6 9 -1. + <_> + 4 16 6 3 3. + <_> + + <_> + 16 16 5 8 -1. + <_> + 16 20 5 4 2. + <_> + + <_> + 4 0 16 16 -1. + <_> + 4 0 8 8 2. + <_> + 12 8 8 8 2. + <_> + + <_> + 6 6 14 6 -1. + <_> + 13 6 7 3 2. + <_> + 6 9 7 3 2. + <_> + + <_> + 10 5 4 15 -1. + <_> + 10 10 4 5 3. + <_> + + <_> + 9 15 12 8 -1. + <_> + 15 15 6 4 2. + <_> + 9 19 6 4 2. + <_> + + <_> + 6 7 12 4 -1. + <_> + 12 7 6 4 2. + <_> + + <_> + 5 6 14 6 -1. + <_> + 12 6 7 3 2. + <_> + 5 9 7 3 2. + <_> + + <_> + 3 6 18 10 -1. + <_> + 3 6 9 5 2. + <_> + 12 11 9 5 2. + <_> + + <_> + 6 0 18 21 -1. + <_> + 12 0 6 21 3. + <_> + + <_> + 0 0 24 21 -1. + <_> + 8 0 8 21 3. + <_> + + <_> + 6 18 18 3 -1. + <_> + 6 19 18 1 3. + <_> + + <_> + 0 15 9 6 -1. + <_> + 0 17 9 2 3. + <_> + + <_> + 4 3 19 2 -1. + <_> + 4 4 19 1 2. + <_> + + <_> + 0 3 24 2 -1. + <_> + 0 4 24 1 2. + <_> + + <_> + 15 14 9 4 -1. + <_> + 15 16 9 2 2. + <_> + + <_> + 0 14 9 4 -1. + <_> + 0 16 9 2 2. + <_> + + <_> + 6 15 18 2 -1. + <_> + 6 16 18 1 2. + <_> + + <_> + 3 17 18 3 -1. + <_> + 3 18 18 1 3. + <_> + + <_> + 12 0 3 23 -1. + <_> + 13 0 1 23 3. + <_> + + <_> + 6 0 8 6 -1. + <_> + 6 3 8 3 2. + <_> + + <_> + 6 16 18 3 -1. + <_> + 6 17 18 1 3. + <_> + + <_> + 9 0 3 23 -1. + <_> + 10 0 1 23 3. + <_> + + <_> + 10 7 4 10 -1. + <_> + 10 12 4 5 2. + <_> + + <_> + 7 8 10 12 -1. + <_> + 7 12 10 4 3. + <_> + + <_> + 14 9 6 14 -1. + <_> + 17 9 3 7 2. + <_> + 14 16 3 7 2. + <_> + + <_> + 2 0 10 9 -1. + <_> + 2 3 10 3 3. + <_> + + <_> + 11 1 5 12 -1. + <_> + 11 7 5 6 2. + <_> + + <_> + 1 4 12 10 -1. + <_> + 1 4 6 5 2. + <_> + 7 9 6 5 2. + <_> + + <_> + 15 1 9 4 -1. + <_> + 15 3 9 2 2. + <_> + + <_> + 1 2 8 10 -1. + <_> + 1 2 4 5 2. + <_> + 5 7 4 5 2. + <_> + + <_> + 10 1 5 12 -1. + <_> + 10 5 5 4 3. + <_> + + <_> + 4 0 14 24 -1. + <_> + 11 0 7 24 2. + <_> + + <_> + 7 17 10 4 -1. + <_> + 7 19 10 2 2. + <_> + + <_> + 10 14 4 10 -1. + <_> + 10 19 4 5 2. + <_> + + <_> + 13 15 6 9 -1. + <_> + 15 15 2 9 3. + <_> + + <_> + 3 21 18 3 -1. + <_> + 3 22 18 1 3. + <_> + + <_> + 13 15 6 9 -1. + <_> + 15 15 2 9 3. + <_> + + <_> + 5 15 6 9 -1. + <_> + 7 15 2 9 3. + <_> + + <_> + 10 6 4 18 -1. + <_> + 12 6 2 9 2. + <_> + 10 15 2 9 2. + <_> + + <_> + 7 3 6 11 -1. + <_> + 9 3 2 11 3. + <_> + + <_> + 15 1 9 4 -1. + <_> + 15 3 9 2 2. + <_> + + <_> + 5 4 14 8 -1. + <_> + 5 8 14 4 2. + <_> + + <_> + 8 1 15 9 -1. + <_> + 8 4 15 3 3. + <_> + + <_> + 7 2 8 10 -1. + <_> + 7 2 4 5 2. + <_> + 11 7 4 5 2. + <_> + + <_> + 12 2 6 12 -1. + <_> + 12 2 3 12 2. + <_> + + <_> + 6 2 6 12 -1. + <_> + 9 2 3 12 2. + <_> + + <_> + 7 7 12 4 -1. + <_> + 7 7 6 4 2. + <_> + + <_> + 6 3 12 10 -1. + <_> + 10 3 4 10 3. + <_> + + <_> + 5 6 16 6 -1. + <_> + 13 6 8 3 2. + <_> + 5 9 8 3 2. + <_> + + <_> + 3 1 18 9 -1. + <_> + 9 1 6 9 3. + <_> + + <_> + 3 8 18 5 -1. + <_> + 9 8 6 5 3. + <_> + + <_> + 0 0 24 22 -1. + <_> + 0 0 12 11 2. + <_> + 12 11 12 11 2. + <_> + + <_> + 14 16 9 6 -1. + <_> + 14 18 9 2 3. + <_> + + <_> + 0 16 24 8 -1. + <_> + 0 20 24 4 2. + <_> + + <_> + 1 19 22 4 -1. + <_> + 12 19 11 2 2. + <_> + 1 21 11 2 2. + <_> + + <_> + 1 16 9 6 -1. + <_> + 1 18 9 2 3. + <_> + + <_> + 7 8 10 4 -1. + <_> + 7 8 5 4 2. + <_> + + <_> + 9 15 6 9 -1. + <_> + 11 15 2 9 3. + <_> + + <_> + 10 18 12 6 -1. + <_> + 16 18 6 3 2. + <_> + 10 21 6 3 2. + <_> + + <_> + 2 18 12 6 -1. + <_> + 2 18 6 3 2. + <_> + 8 21 6 3 2. + <_> + + <_> + 8 3 16 9 -1. + <_> + 8 6 16 3 3. + <_> + + <_> + 0 5 10 6 -1. + <_> + 0 7 10 2 3. + <_> + + <_> + 5 5 18 3 -1. + <_> + 5 6 18 1 3. + <_> + + <_> + 2 6 9 6 -1. + <_> + 2 9 9 3 2. + <_> + + <_> + 14 2 10 9 -1. + <_> + 14 5 10 3 3. + <_> + + <_> + 3 6 18 3 -1. + <_> + 3 7 18 1 3. + <_> + + <_> + 9 2 15 6 -1. + <_> + 9 4 15 2 3. + <_> + + <_> + 4 8 15 6 -1. + <_> + 4 10 15 2 3. + <_> + + <_> + 0 5 24 4 -1. + <_> + 12 5 12 2 2. + <_> + 0 7 12 2 2. + <_> + + <_> + 7 8 6 12 -1. + <_> + 9 8 2 12 3. + <_> + + <_> + 11 0 6 9 -1. + <_> + 13 0 2 9 3. + <_> + + <_> + 0 12 6 12 -1. + <_> + 0 12 3 6 2. + <_> + 3 18 3 6 2. + <_> + + <_> + 14 12 10 6 -1. + <_> + 14 14 10 2 3. + <_> + + <_> + 2 7 18 9 -1. + <_> + 2 10 18 3 3. + <_> + + <_> + 11 14 10 9 -1. + <_> + 11 17 10 3 3. + <_> + + <_> + 7 6 10 8 -1. + <_> + 7 6 5 4 2. + <_> + 12 10 5 4 2. + <_> + + <_> + 6 6 14 6 -1. + <_> + 13 6 7 3 2. + <_> + 6 9 7 3 2. + <_> + + <_> + 4 13 9 7 -1. + <_> + 7 13 3 7 3. + <_> + + <_> + 14 10 6 12 -1. + <_> + 17 10 3 6 2. + <_> + 14 16 3 6 2. + <_> + + <_> + 4 10 6 12 -1. + <_> + 4 10 3 6 2. + <_> + 7 16 3 6 2. + <_> + + <_> + 13 9 8 6 -1. + <_> + 13 9 4 6 2. + <_> + + <_> + 8 3 4 14 -1. + <_> + 10 3 2 14 2. + <_> + + <_> + 17 0 3 18 -1. + <_> + 18 0 1 18 3. + <_> + + <_> + 4 12 16 12 -1. + <_> + 12 12 8 12 2. + <_> + + <_> + 15 0 6 14 -1. + <_> + 17 0 2 14 3. + <_> + + <_> + 3 0 6 14 -1. + <_> + 5 0 2 14 3. + <_> + + <_> + 12 2 12 20 -1. + <_> + 16 2 4 20 3. + <_> + + <_> + 0 2 12 20 -1. + <_> + 4 2 4 20 3. + <_> + + <_> + 16 0 6 17 -1. + <_> + 18 0 2 17 3. + <_> + + <_> + 2 0 6 17 -1. + <_> + 4 0 2 17 3. + <_> + + <_> + 15 6 9 6 -1. + <_> + 15 8 9 2 3. + <_> + + <_> + 0 6 9 6 -1. + <_> + 0 8 9 2 3. + <_> + + <_> + 18 1 6 13 -1. + <_> + 20 1 2 13 3. + <_> + + <_> + 0 1 6 13 -1. + <_> + 2 1 2 13 3. + <_> + + <_> + 16 0 4 9 -1. + <_> + 16 0 2 9 2. + <_> + + <_> + 5 10 12 7 -1. + <_> + 9 10 4 7 3. + <_> + + <_> + 12 9 12 6 -1. + <_> + 12 11 12 2 3. + <_> + + <_> + 0 9 12 6 -1. + <_> + 0 11 12 2 3. + <_> + + <_> + 5 7 14 9 -1. + <_> + 5 10 14 3 3. + <_> + + <_> + 0 15 20 3 -1. + <_> + 0 16 20 1 3. + <_> + + <_> + 8 10 8 10 -1. + <_> + 12 10 4 5 2. + <_> + 8 15 4 5 2. + <_> + + <_> + 5 4 13 9 -1. + <_> + 5 7 13 3 3. + <_> + + <_> + 10 2 6 18 -1. + <_> + 10 8 6 6 3. + <_> + + <_> + 6 0 6 9 -1. + <_> + 8 0 2 9 3. + <_> + + <_> + 6 9 12 4 -1. + <_> + 6 11 12 2 2. + <_> + + <_> + 3 2 15 12 -1. + <_> + 3 6 15 4 3. + <_> + + <_> + 12 0 12 5 -1. + <_> + 16 0 4 5 3. + <_> + + <_> + 0 15 18 3 -1. + <_> + 6 15 6 3 3. + <_> + + <_> + 0 14 24 5 -1. + <_> + 8 14 8 5 3. + <_> + + <_> + 5 1 3 18 -1. + <_> + 6 1 1 18 3. + <_> + + <_> + 10 0 4 14 -1. + <_> + 10 0 2 14 2. + <_> + + <_> + 9 3 4 9 -1. + <_> + 11 3 2 9 2. + <_> + + <_> + 8 2 12 6 -1. + <_> + 14 2 6 3 2. + <_> + 8 5 6 3 2. + <_> + + <_> + 0 4 17 4 -1. + <_> + 0 6 17 2 2. + <_> + + <_> + 16 16 5 8 -1. + <_> + 16 20 5 4 2. + <_> + + <_> + 3 16 5 8 -1. + <_> + 3 20 5 4 2. + <_> + + <_> + 6 18 18 2 -1. + <_> + 6 19 18 1 2. + <_> + + <_> + 0 0 12 5 -1. + <_> + 4 0 4 5 3. + <_> + + <_> + 14 3 6 12 -1. + <_> + 17 3 3 6 2. + <_> + 14 9 3 6 2. + <_> + + <_> + 0 12 6 12 -1. + <_> + 2 12 2 12 3. + <_> + + <_> + 2 3 21 3 -1. + <_> + 2 4 21 1 3. + <_> + + <_> + 4 3 6 12 -1. + <_> + 4 3 3 6 2. + <_> + 7 9 3 6 2. + <_> + + <_> + 12 8 12 6 -1. + <_> + 18 8 6 3 2. + <_> + 12 11 6 3 2. + <_> + + <_> + 0 15 16 9 -1. + <_> + 8 15 8 9 2. + <_> + + <_> + 6 13 18 5 -1. + <_> + 6 13 9 5 2. + <_> + + <_> + 1 6 15 6 -1. + <_> + 6 6 5 6 3. + <_> + + <_> + 11 9 9 6 -1. + <_> + 14 9 3 6 3. + <_> + + <_> + 3 0 15 11 -1. + <_> + 8 0 5 11 3. + <_> + + <_> + 15 3 3 18 -1. + <_> + 15 9 3 6 3. + <_> + + <_> + 6 3 3 18 -1. + <_> + 6 9 3 6 3. + <_> + + <_> + 9 5 10 8 -1. + <_> + 14 5 5 4 2. + <_> + 9 9 5 4 2. + <_> + + <_> + 4 4 16 8 -1. + <_> + 4 4 8 4 2. + <_> + 12 8 8 4 2. + <_> + + <_> + 7 7 12 3 -1. + <_> + 7 7 6 3 2. + <_> + + <_> + 5 0 9 13 -1. + <_> + 8 0 3 13 3. + <_> + + <_> + 11 0 6 9 -1. + <_> + 13 0 2 9 3. + <_> + + <_> + 7 0 6 9 -1. + <_> + 9 0 2 9 3. + <_> + + <_> + 8 1 10 9 -1. + <_> + 8 4 10 3 3. + <_> + + <_> + 0 2 18 2 -1. + <_> + 0 3 18 1 2. + <_> + + <_> + 10 13 14 6 -1. + <_> + 17 13 7 3 2. + <_> + 10 16 7 3 2. + <_> + + <_> + 0 13 14 6 -1. + <_> + 0 13 7 3 2. + <_> + 7 16 7 3 2. + <_> + + <_> + 20 2 3 21 -1. + <_> + 21 2 1 21 3. + <_> + + <_> + 0 9 5 12 -1. + <_> + 0 13 5 4 3. + <_> + + <_> + 12 6 12 6 -1. + <_> + 12 8 12 2 3. + <_> + + <_> + 1 8 20 3 -1. + <_> + 1 9 20 1 3. + <_> + + <_> + 5 7 19 3 -1. + <_> + 5 8 19 1 3. + <_> + + <_> + 1 12 9 6 -1. + <_> + 1 14 9 2 3. + <_> + + <_> + 6 10 14 12 -1. + <_> + 6 14 14 4 3. + <_> + + <_> + 5 6 14 18 -1. + <_> + 5 12 14 6 3. + <_> + + <_> + 11 12 9 7 -1. + <_> + 14 12 3 7 3. + <_> + + <_> + 1 15 18 4 -1. + <_> + 1 17 18 2 2. + <_> + + <_> + 11 14 6 9 -1. + <_> + 11 17 6 3 3. + <_> + + <_> + 0 8 18 4 -1. + <_> + 0 8 9 2 2. + <_> + 9 10 9 2 2. + <_> + + <_> + 3 10 20 6 -1. + <_> + 13 10 10 3 2. + <_> + 3 13 10 3 2. + <_> + + <_> + 1 10 20 6 -1. + <_> + 1 10 10 3 2. + <_> + 11 13 10 3 2. + <_> + + <_> + 0 9 24 2 -1. + <_> + 0 9 12 2 2. + <_> + + <_> + 1 12 20 8 -1. + <_> + 1 12 10 4 2. + <_> + 11 16 10 4 2. + <_> + + <_> + 11 12 9 7 -1. + <_> + 14 12 3 7 3. + <_> + + <_> + 4 12 9 7 -1. + <_> + 7 12 3 7 3. + <_> + + <_> + 12 12 8 5 -1. + <_> + 12 12 4 5 2. + <_> + + <_> + 4 12 8 5 -1. + <_> + 8 12 4 5 2. + <_> + + <_> + 13 10 4 10 -1. + <_> + 13 10 2 10 2. + <_> + + <_> + 1 15 20 2 -1. + <_> + 11 15 10 2 2. + <_> + + <_> + 9 10 6 6 -1. + <_> + 9 10 3 6 2. + <_> + + <_> + 0 1 21 3 -1. + <_> + 7 1 7 3 3. + <_> + + <_> + 6 4 13 9 -1. + <_> + 6 7 13 3 3. + <_> + + <_> + 6 5 12 5 -1. + <_> + 10 5 4 5 3. + <_> + + <_> + 10 10 10 6 -1. + <_> + 10 12 10 2 3. + <_> + + <_> + 6 12 5 8 -1. + <_> + 6 16 5 4 2. + <_> + + <_> + 13 0 6 9 -1. + <_> + 15 0 2 9 3. + <_> + + <_> + 2 10 18 6 -1. + <_> + 8 10 6 6 3. + <_> + + <_> + 11 2 9 4 -1. + <_> + 11 4 9 2 2. + <_> + + <_> + 1 20 21 3 -1. + <_> + 8 20 7 3 3. + <_> + + <_> + 1 10 22 2 -1. + <_> + 1 11 22 1 2. + <_> + + <_> + 0 17 18 3 -1. + <_> + 0 18 18 1 3. + <_> + + <_> + 13 0 6 9 -1. + <_> + 15 0 2 9 3. + <_> + + <_> + 5 0 6 9 -1. + <_> + 7 0 2 9 3. + <_> + + <_> + 18 2 6 20 -1. + <_> + 20 2 2 20 3. + <_> + + <_> + 0 2 6 20 -1. + <_> + 2 2 2 20 3. + <_> + + <_> + 11 7 6 14 -1. + <_> + 14 7 3 7 2. + <_> + 11 14 3 7 2. + <_> + + <_> + 0 1 4 9 -1. + <_> + 2 1 2 9 2. + <_> + + <_> + 12 14 9 4 -1. + <_> + 12 16 9 2 2. + <_> + + <_> + 1 13 9 4 -1. + <_> + 1 15 9 2 2. + <_> + + <_> + 7 6 15 6 -1. + <_> + 7 8 15 2 3. + <_> + + <_> + 8 2 3 18 -1. + <_> + 8 8 3 6 3. + <_> + + <_> + 6 6 12 6 -1. + <_> + 12 6 6 3 2. + <_> + 6 9 6 3 2. + <_> + + <_> + 2 19 20 4 -1. + <_> + 2 19 10 2 2. + <_> + 12 21 10 2 2. + <_> + + <_> + 14 15 6 9 -1. + <_> + 14 18 6 3 3. + <_> + + <_> + 3 5 18 14 -1. + <_> + 3 5 9 7 2. + <_> + 12 12 9 7 2. + <_> + + <_> + 15 6 4 18 -1. + <_> + 17 6 2 9 2. + <_> + 15 15 2 9 2. + <_> + + <_> + 5 6 4 18 -1. + <_> + 5 6 2 9 2. + <_> + 7 15 2 9 2. + <_> + + <_> + 11 0 6 9 -1. + <_> + 13 0 2 9 3. + <_> + + <_> + 7 0 6 9 -1. + <_> + 9 0 2 9 3. + <_> + + <_> + 11 5 6 9 -1. + <_> + 13 5 2 9 3. + <_> + + <_> + 9 5 6 6 -1. + <_> + 12 5 3 6 2. + <_> + + <_> + 4 1 16 6 -1. + <_> + 12 1 8 3 2. + <_> + 4 4 8 3 2. + <_> + + <_> + 9 13 6 11 -1. + <_> + 11 13 2 11 3. + <_> + + <_> + 17 1 6 12 -1. + <_> + 20 1 3 6 2. + <_> + 17 7 3 6 2. + <_> + + <_> + 1 17 18 3 -1. + <_> + 1 18 18 1 3. + <_> + + <_> + 7 13 10 8 -1. + <_> + 7 17 10 4 2. + <_> + + <_> + 6 18 10 6 -1. + <_> + 6 20 10 2 3. + <_> + + <_> + 9 14 9 4 -1. + <_> + 9 16 9 2 2. + <_> + + <_> + 1 1 6 12 -1. + <_> + 1 1 3 6 2. + <_> + 4 7 3 6 2. + <_> + + <_> + 19 4 5 12 -1. + <_> + 19 8 5 4 3. + <_> + + <_> + 0 0 8 8 -1. + <_> + 4 0 4 8 2. + <_> + + <_> + 3 5 19 3 -1. + <_> + 3 6 19 1 3. + <_> + + <_> + 1 5 12 6 -1. + <_> + 1 5 6 3 2. + <_> + 7 8 6 3 2. + <_> + + <_> + 2 1 21 8 -1. + <_> + 9 1 7 8 3. + <_> + + <_> + 4 1 16 8 -1. + <_> + 4 5 16 4 2. + <_> + + <_> + 6 0 18 3 -1. + <_> + 6 1 18 1 3. + <_> + + <_> + 4 4 10 14 -1. + <_> + 4 11 10 7 2. + <_> + + <_> + 15 6 4 10 -1. + <_> + 15 11 4 5 2. + <_> + + <_> + 3 18 18 3 -1. + <_> + 9 18 6 3 3. + <_> + + <_> + 8 18 12 6 -1. + <_> + 12 18 4 6 3. + <_> + + <_> + 3 15 6 9 -1. + <_> + 6 15 3 9 2. + <_> + + <_> + 15 7 6 8 -1. + <_> + 15 11 6 4 2. + <_> + + <_> + 3 7 6 8 -1. + <_> + 3 11 6 4 2. + <_> + + <_> + 5 9 18 6 -1. + <_> + 14 9 9 3 2. + <_> + 5 12 9 3 2. + <_> + + <_> + 1 13 12 6 -1. + <_> + 1 15 12 2 3. + <_> + + <_> + 14 15 10 6 -1. + <_> + 14 17 10 2 3. + <_> + + <_> + 0 15 10 6 -1. + <_> + 0 17 10 2 3. + <_> + + <_> + 15 13 6 9 -1. + <_> + 15 16 6 3 3. + <_> + + <_> + 3 13 6 9 -1. + <_> + 3 16 6 3 3. + <_> + + <_> + 9 5 8 8 -1. + <_> + 9 5 4 8 2. + <_> + + <_> + 1 18 12 6 -1. + <_> + 1 18 6 3 2. + <_> + 7 21 6 3 2. + <_> + + <_> + 13 19 10 4 -1. + <_> + 13 21 10 2 2. + <_> + + <_> + 1 19 10 4 -1. + <_> + 1 21 10 2 2. + <_> + + <_> + 6 19 18 3 -1. + <_> + 6 20 18 1 3. + <_> + + <_> + 8 14 4 10 -1. + <_> + 8 19 4 5 2. + <_> + + <_> + 0 0 24 6 -1. + <_> + 0 2 24 2 3. + <_> + + <_> + 0 1 6 9 -1. + <_> + 0 4 6 3 3. + <_> + + <_> + 4 9 20 6 -1. + <_> + 14 9 10 3 2. + <_> + 4 12 10 3 2. + <_> + + <_> + 1 15 19 8 -1. + <_> + 1 19 19 4 2. + <_> + + <_> + 14 0 10 6 -1. + <_> + 14 2 10 2 3. + <_> + + <_> + 1 10 21 14 -1. + <_> + 8 10 7 14 3. + <_> + + <_> + 10 10 8 8 -1. + <_> + 10 10 4 8 2. + <_> + + <_> + 6 8 10 4 -1. + <_> + 11 8 5 4 2. + <_> + + <_> + 10 5 4 9 -1. + <_> + 10 5 2 9 2. + <_> + + <_> + 7 5 6 10 -1. + <_> + 9 5 2 10 3. + <_> + + <_> + 14 4 4 13 -1. + <_> + 14 4 2 13 2. + <_> + + <_> + 6 4 4 13 -1. + <_> + 8 4 2 13 2. + <_> + + <_> + 8 7 9 6 -1. + <_> + 11 7 3 6 3. + <_> + + <_> + 3 6 16 6 -1. + <_> + 3 6 8 3 2. + <_> + 11 9 8 3 2. + <_> + + <_> + 5 4 16 14 -1. + <_> + 13 4 8 7 2. + <_> + 5 11 8 7 2. + <_> + + <_> + 0 0 24 4 -1. + <_> + 0 0 12 2 2. + <_> + 12 2 12 2 2. + <_> + + <_> + 9 1 9 6 -1. + <_> + 12 1 3 6 3. + <_> + + <_> + 4 1 14 4 -1. + <_> + 11 1 7 4 2. + <_> + + <_> + 10 14 7 9 -1. + <_> + 10 17 7 3 3. + <_> + + <_> + 8 3 8 10 -1. + <_> + 8 3 4 5 2. + <_> + 12 8 4 5 2. + <_> + + <_> + 7 3 12 5 -1. + <_> + 11 3 4 5 3. + <_> + + <_> + 8 2 4 13 -1. + <_> + 10 2 2 13 2. + <_> + + <_> + 11 2 3 19 -1. + <_> + 12 2 1 19 3. + <_> + + <_> + 7 7 9 6 -1. + <_> + 10 7 3 6 3. + <_> + + <_> + 4 22 20 2 -1. + <_> + 4 22 10 2 2. + <_> + + <_> + 0 16 24 4 -1. + <_> + 0 16 12 2 2. + <_> + 12 18 12 2 2. + <_> + + <_> + 7 3 12 5 -1. + <_> + 11 3 4 5 3. + <_> + + <_> + 1 10 8 14 -1. + <_> + 1 10 4 7 2. + <_> + 5 17 4 7 2. + <_> + + <_> + 11 16 6 6 -1. + <_> + 11 19 6 3 2. + <_> + + <_> + 6 0 10 24 -1. + <_> + 6 0 5 12 2. + <_> + 11 12 5 12 2. + <_> + + <_> + 7 5 14 14 -1. + <_> + 14 5 7 7 2. + <_> + 7 12 7 7 2. + <_> + + <_> + 7 8 10 8 -1. + <_> + 7 8 5 4 2. + <_> + 12 12 5 4 2. + <_> + + <_> + 9 1 9 6 -1. + <_> + 12 1 3 6 3. + <_> + + <_> + 0 6 24 3 -1. + <_> + 12 6 12 3 2. + <_> + + <_> + 7 3 12 5 -1. + <_> + 11 3 4 5 3. + <_> + + <_> + 1 13 22 4 -1. + <_> + 1 13 11 2 2. + <_> + 12 15 11 2 2. + <_> + + <_> + 9 12 12 6 -1. + <_> + 9 14 12 2 3. + <_> + + <_> + 0 5 9 6 -1. + <_> + 0 7 9 2 3. + <_> + + <_> + 1 5 23 6 -1. + <_> + 1 7 23 2 3. + <_> + + <_> + 1 6 19 12 -1. + <_> + 1 10 19 4 3. + <_> + + <_> + 9 1 6 21 -1. + <_> + 9 8 6 7 3. + <_> + + <_> + 3 19 18 3 -1. + <_> + 9 19 6 3 3. + <_> + + <_> + 9 14 6 9 -1. + <_> + 11 14 2 9 3. + <_> + + <_> + 9 6 4 12 -1. + <_> + 11 6 2 12 2. + <_> + + <_> + 16 0 6 9 -1. + <_> + 18 0 2 9 3. + <_> + + <_> + 2 0 6 9 -1. + <_> + 4 0 2 9 3. + <_> + + <_> + 13 1 4 22 -1. + <_> + 15 1 2 11 2. + <_> + 13 12 2 11 2. + <_> + + <_> + 1 8 8 12 -1. + <_> + 1 14 8 6 2. + <_> + + <_> + 14 7 7 9 -1. + <_> + 14 10 7 3 3. + <_> + + <_> + 3 12 18 4 -1. + <_> + 3 12 9 2 2. + <_> + 12 14 9 2 2. + <_> + + <_> + 13 1 4 22 -1. + <_> + 15 1 2 11 2. + <_> + 13 12 2 11 2. + <_> + + <_> + 7 1 4 22 -1. + <_> + 7 1 2 11 2. + <_> + 9 12 2 11 2. + <_> + + <_> + 4 7 20 4 -1. + <_> + 14 7 10 2 2. + <_> + 4 9 10 2 2. + <_> + + <_> + 9 10 6 7 -1. + <_> + 12 10 3 7 2. + <_> + + <_> + 7 7 10 4 -1. + <_> + 7 7 5 4 2. + <_> + + <_> + 0 3 4 15 -1. + <_> + 0 8 4 5 3. + <_> + + <_> + 15 0 8 12 -1. + <_> + 19 0 4 6 2. + <_> + 15 6 4 6 2. + <_> + + <_> + 1 0 8 12 -1. + <_> + 1 0 4 6 2. + <_> + 5 6 4 6 2. + <_> + + <_> + 14 5 6 16 -1. + <_> + 16 5 2 16 3. + <_> + + <_> + 4 5 6 16 -1. + <_> + 6 5 2 16 3. + <_> + + <_> + 15 0 6 16 -1. + <_> + 17 0 2 16 3. + <_> + + <_> + 3 0 6 16 -1. + <_> + 5 0 2 16 3. + <_> + + <_> + 0 2 24 3 -1. + <_> + 0 3 24 1 3. + <_> + + <_> + 7 1 10 4 -1. + <_> + 7 3 10 2 2. + <_> + + <_> + 1 0 23 8 -1. + <_> + 1 4 23 4 2. + <_> + + <_> + 1 17 19 3 -1. + <_> + 1 18 19 1 3. + <_> + + <_> + 6 18 18 2 -1. + <_> + 6 19 18 1 2. + <_> + + <_> + 1 17 9 6 -1. + <_> + 1 19 9 2 3. + <_> + + <_> + 15 15 6 9 -1. + <_> + 15 18 6 3 3. + <_> + + <_> + 3 15 6 9 -1. + <_> + 3 18 6 3 3. + <_> + + <_> + 4 14 20 6 -1. + <_> + 4 17 20 3 2. + <_> + + <_> + 0 10 6 14 -1. + <_> + 0 10 3 7 2. + <_> + 3 17 3 7 2. + <_> + + <_> + 6 18 18 3 -1. + <_> + 6 19 18 1 3. + <_> + + <_> + 4 12 9 7 -1. + <_> + 7 12 3 7 3. + <_> + + <_> + 6 10 18 5 -1. + <_> + 12 10 6 5 3. + <_> + + <_> + 0 10 18 5 -1. + <_> + 6 10 6 5 3. + <_> + + <_> + 3 2 18 9 -1. + <_> + 9 2 6 9 3. + <_> + + <_> + 4 6 10 10 -1. + <_> + 4 6 5 5 2. + <_> + 9 11 5 5 2. + <_> + + <_> + 20 14 4 9 -1. + <_> + 20 14 2 9 2. + <_> + + <_> + 0 14 4 9 -1. + <_> + 2 14 2 9 2. + <_> + + <_> + 11 1 4 20 -1. + <_> + 13 1 2 10 2. + <_> + 11 11 2 10 2. + <_> + + <_> + 6 21 12 3 -1. + <_> + 12 21 6 3 2. + <_> + + <_> + 11 1 4 20 -1. + <_> + 13 1 2 10 2. + <_> + 11 11 2 10 2. + <_> + + <_> + 1 16 10 8 -1. + <_> + 1 16 5 4 2. + <_> + 6 20 5 4 2. + <_> + + <_> + 11 1 4 20 -1. + <_> + 13 1 2 10 2. + <_> + 11 11 2 10 2. + <_> + + <_> + 1 0 3 19 -1. + <_> + 2 0 1 19 3. + <_> + + <_> + 11 1 4 20 -1. + <_> + 13 1 2 10 2. + <_> + 11 11 2 10 2. + <_> + + <_> + 0 1 6 9 -1. + <_> + 2 1 2 9 3. + <_> + + <_> + 3 7 19 4 -1. + <_> + 3 9 19 2 2. + <_> + + <_> + 7 14 9 6 -1. + <_> + 7 16 9 2 3. + <_> + + <_> + 17 1 7 6 -1. + <_> + 17 4 7 3 2. + <_> + + <_> + 5 0 14 8 -1. + <_> + 5 4 14 4 2. + <_> + + <_> + 16 1 8 6 -1. + <_> + 16 4 8 3 2. + <_> + + <_> + 0 1 8 6 -1. + <_> + 0 4 8 3 2. + <_> + + <_> + 6 0 18 4 -1. + <_> + 15 0 9 2 2. + <_> + 6 2 9 2 2. + <_> + + <_> + 0 14 9 6 -1. + <_> + 0 16 9 2 3. + <_> + + <_> + 3 7 18 8 -1. + <_> + 9 7 6 8 3. + <_> + + <_> + 2 11 6 9 -1. + <_> + 4 11 2 9 3. + <_> + + <_> + 10 5 6 9 -1. + <_> + 12 5 2 9 3. + <_> + + <_> + 10 6 4 18 -1. + <_> + 10 6 2 9 2. + <_> + 12 15 2 9 2. + <_> + + <_> + 11 1 4 20 -1. + <_> + 13 1 2 10 2. + <_> + 11 11 2 10 2. + <_> + + <_> + 9 1 4 20 -1. + <_> + 9 1 2 10 2. + <_> + 11 11 2 10 2. + <_> + + <_> + 5 9 18 6 -1. + <_> + 14 9 9 3 2. + <_> + 5 12 9 3 2. + <_> + + <_> + 6 4 6 9 -1. + <_> + 8 4 2 9 3. + <_> + + <_> + 10 16 8 6 -1. + <_> + 10 16 4 6 2. + <_> + + <_> + 0 0 18 8 -1. + <_> + 0 0 9 4 2. + <_> + 9 4 9 4 2. + <_> + + <_> + 6 5 14 12 -1. + <_> + 13 5 7 6 2. + <_> + 6 11 7 6 2. + <_> + + <_> + 4 3 15 7 -1. + <_> + 9 3 5 7 3. + <_> + + <_> + 14 12 10 6 -1. + <_> + 14 14 10 2 3. + <_> + + <_> + 0 11 4 10 -1. + <_> + 0 16 4 5 2. + <_> + + <_> + 1 10 22 3 -1. + <_> + 1 11 22 1 3. + <_> + + <_> + 8 9 6 10 -1. + <_> + 10 9 2 10 3. + <_> + + <_> + 13 2 6 12 -1. + <_> + 16 2 3 6 2. + <_> + 13 8 3 6 2. + <_> + + <_> + 10 6 4 18 -1. + <_> + 10 6 2 9 2. + <_> + 12 15 2 9 2. + <_> + + <_> + 7 8 10 16 -1. + <_> + 12 8 5 8 2. + <_> + 7 16 5 8 2. + <_> + + <_> + 8 1 8 12 -1. + <_> + 8 1 4 6 2. + <_> + 12 7 4 6 2. + <_> + + <_> + 7 1 12 14 -1. + <_> + 13 1 6 7 2. + <_> + 7 8 6 7 2. + <_> + + <_> + 2 14 12 6 -1. + <_> + 2 16 12 2 3. + <_> + + <_> + 11 16 6 6 -1. + <_> + 11 19 6 3 2. + <_> + + <_> + 7 16 6 6 -1. + <_> + 7 19 6 3 2. + <_> + + <_> + 13 4 4 10 -1. + <_> + 13 4 2 10 2. + <_> + + <_> + 0 19 19 3 -1. + <_> + 0 20 19 1 3. + <_> + + <_> + 12 8 6 8 -1. + <_> + 12 12 6 4 2. + <_> + + <_> + 8 1 8 22 -1. + <_> + 8 12 8 11 2. + <_> + + <_> + 12 8 6 8 -1. + <_> + 12 12 6 4 2. + <_> + + <_> + 6 8 6 8 -1. + <_> + 6 12 6 4 2. + <_> + + <_> + 14 5 6 9 -1. + <_> + 14 8 6 3 3. + <_> + + <_> + 0 6 24 4 -1. + <_> + 0 8 24 2 2. + <_> + + <_> + 14 12 10 6 -1. + <_> + 14 14 10 2 3. + <_> + + <_> + 0 12 10 6 -1. + <_> + 0 14 10 2 3. + <_> + + <_> + 4 6 19 3 -1. + <_> + 4 7 19 1 3. + <_> + + <_> + 1 6 19 3 -1. + <_> + 1 7 19 1 3. + <_> + + <_> + 4 0 16 9 -1. + <_> + 4 3 16 3 3. + <_> + + <_> + 0 1 24 5 -1. + <_> + 8 1 8 5 3. + <_> + + <_> + 3 6 6 15 -1. + <_> + 3 11 6 5 3. + <_> + + <_> + 9 6 6 9 -1. + <_> + 11 6 2 9 3. + <_> + + <_> + 0 17 18 3 -1. + <_> + 0 18 18 1 3. + <_> + + <_> + 6 22 18 2 -1. + <_> + 6 23 18 1 2. + <_> + + <_> + 2 12 6 9 -1. + <_> + 2 15 6 3 3. + <_> + + <_> + 18 12 6 9 -1. + <_> + 18 15 6 3 3. + <_> + + <_> + 0 12 6 9 -1. + <_> + 0 15 6 3 3. + <_> + + <_> + 11 14 4 10 -1. + <_> + 11 19 4 5 2. + <_> + + <_> + 9 6 6 16 -1. + <_> + 9 14 6 8 2. + <_> + + <_> + 7 7 10 10 -1. + <_> + 7 12 10 5 2. + <_> + + <_> + 1 3 6 13 -1. + <_> + 3 3 2 13 3. + <_> + + <_> + 18 1 6 13 -1. + <_> + 18 1 3 13 2. + <_> + + <_> + 5 1 6 9 -1. + <_> + 7 1 2 9 3. + <_> + + <_> + 18 2 6 11 -1. + <_> + 18 2 3 11 2. + <_> + + <_> + 0 2 6 11 -1. + <_> + 3 2 3 11 2. + <_> + + <_> + 9 12 15 6 -1. + <_> + 9 14 15 2 3. + <_> + + <_> + 2 2 20 3 -1. + <_> + 2 3 20 1 3. + <_> + + <_> + 10 6 4 9 -1. + <_> + 10 6 2 9 2. + <_> + + <_> + 5 6 12 14 -1. + <_> + 5 6 6 7 2. + <_> + 11 13 6 7 2. + <_> + + <_> + 9 0 6 9 -1. + <_> + 11 0 2 9 3. + <_> + + <_> + 7 0 9 6 -1. + <_> + 10 0 3 6 3. + <_> + + <_> + 10 6 6 9 -1. + <_> + 12 6 2 9 3. + <_> + + <_> + 4 1 12 20 -1. + <_> + 4 1 6 10 2. + <_> + 10 11 6 10 2. + <_> + + <_> + 6 7 18 3 -1. + <_> + 6 7 9 3 2. + <_> + + <_> + 0 7 18 3 -1. + <_> + 9 7 9 3 2. + <_> + + <_> + 3 20 18 3 -1. + <_> + 9 20 6 3 3. + <_> + + <_> + 9 6 6 9 -1. + <_> + 11 6 2 9 3. + <_> + + <_> + 6 2 12 15 -1. + <_> + 10 2 4 15 3. + <_> + + <_> + 2 3 18 3 -1. + <_> + 2 4 18 1 3. + <_> + + <_> + 19 4 4 18 -1. + <_> + 21 4 2 9 2. + <_> + 19 13 2 9 2. + <_> + + <_> + 0 1 19 3 -1. + <_> + 0 2 19 1 3. + <_> + + <_> + 5 0 15 4 -1. + <_> + 5 2 15 2 2. + <_> + + <_> + 5 2 14 5 -1. + <_> + 12 2 7 5 2. + <_> + + <_> + 1 2 22 14 -1. + <_> + 1 2 11 14 2. + <_> + + <_> + 8 15 6 9 -1. + <_> + 10 15 2 9 3. + <_> + + <_> + 6 17 18 3 -1. + <_> + 6 18 18 1 3. + <_> + + <_> + 9 6 3 18 -1. + <_> + 9 12 3 6 3. + <_> + + <_> + 2 0 20 3 -1. + <_> + 2 1 20 1 3. + <_> + + <_> + 5 4 5 12 -1. + <_> + 5 8 5 4 3. + <_> + + <_> + 8 6 12 5 -1. + <_> + 12 6 4 5 3. + <_> + + <_> + 9 12 6 12 -1. + <_> + 9 12 3 6 2. + <_> + 12 18 3 6 2. + <_> + + <_> + 14 14 8 10 -1. + <_> + 18 14 4 5 2. + <_> + 14 19 4 5 2. + <_> + + <_> + 2 14 8 10 -1. + <_> + 2 14 4 5 2. + <_> + 6 19 4 5 2. + <_> + + <_> + 10 18 12 6 -1. + <_> + 16 18 6 3 2. + <_> + 10 21 6 3 2. + <_> + + <_> + 1 3 6 9 -1. + <_> + 1 6 6 3 3. + <_> + + <_> + 11 3 3 20 -1. + <_> + 12 3 1 20 3. + <_> + + <_> + 4 6 14 6 -1. + <_> + 4 6 7 3 2. + <_> + 11 9 7 3 2. + <_> + + <_> + 6 5 12 13 -1. + <_> + 10 5 4 13 3. + <_> + + <_> + 5 4 4 15 -1. + <_> + 5 9 4 5 3. + <_> + + <_> + 9 16 15 4 -1. + <_> + 14 16 5 4 3. + <_> + + <_> + 7 8 6 14 -1. + <_> + 7 8 3 7 2. + <_> + 10 15 3 7 2. + <_> + + <_> + 7 6 10 6 -1. + <_> + 7 8 10 2 3. + <_> + + <_> + 2 5 18 3 -1. + <_> + 2 6 18 1 3. + <_> + + <_> + 5 1 15 8 -1. + <_> + 5 5 15 4 2. + <_> + + <_> + 7 1 8 18 -1. + <_> + 7 10 8 9 2. + <_> + + <_> + 0 10 24 3 -1. + <_> + 0 11 24 1 3. + <_> + + <_> + 0 2 6 13 -1. + <_> + 2 2 2 13 3. + <_> + + <_> + 16 0 8 10 -1. + <_> + 20 0 4 5 2. + <_> + 16 5 4 5 2. + <_> + + <_> + 5 1 10 9 -1. + <_> + 5 4 10 3 3. + <_> + + <_> + 5 6 18 3 -1. + <_> + 5 7 18 1 3. + <_> + + <_> + 0 1 24 3 -1. + <_> + 0 2 24 1 3. + <_> + + <_> + 11 4 6 11 -1. + <_> + 13 4 2 11 3. + <_> + + <_> + 0 0 8 10 -1. + <_> + 0 0 4 5 2. + <_> + 4 5 4 5 2. + <_> + + <_> + 4 16 18 3 -1. + <_> + 4 17 18 1 3. + <_> + + <_> + 2 16 18 3 -1. + <_> + 2 17 18 1 3. + <_> + + <_> + 3 0 18 10 -1. + <_> + 12 0 9 5 2. + <_> + 3 5 9 5 2. + <_> + + <_> + 2 3 20 21 -1. + <_> + 12 3 10 21 2. + <_> + + <_> + 6 7 14 3 -1. + <_> + 6 7 7 3 2. + <_> + + <_> + 0 9 12 6 -1. + <_> + 0 9 6 3 2. + <_> + 6 12 6 3 2. + <_> + + <_> + 3 14 21 4 -1. + <_> + 10 14 7 4 3. + <_> + + <_> + 0 14 21 4 -1. + <_> + 7 14 7 4 3. + <_> + + <_> + 5 21 18 3 -1. + <_> + 11 21 6 3 3. + <_> + + <_> + 1 21 18 3 -1. + <_> + 7 21 6 3 3. + <_> + + <_> + 19 4 4 18 -1. + <_> + 21 4 2 9 2. + <_> + 19 13 2 9 2. + <_> + + <_> + 3 7 18 3 -1. + <_> + 3 8 18 1 3. + <_> + + <_> + 19 4 4 18 -1. + <_> + 21 4 2 9 2. + <_> + 19 13 2 9 2. + <_> + + <_> + 7 15 10 6 -1. + <_> + 7 17 10 2 3. + <_> + + <_> + 9 13 11 9 -1. + <_> + 9 16 11 3 3. + <_> + + <_> + 0 6 4 10 -1. + <_> + 0 11 4 5 2. + <_> + + <_> + 15 16 9 6 -1. + <_> + 15 18 9 2 3. + <_> + + <_> + 1 5 4 18 -1. + <_> + 1 5 2 9 2. + <_> + 3 14 2 9 2. + <_> + + <_> + 9 8 8 10 -1. + <_> + 13 8 4 5 2. + <_> + 9 13 4 5 2. + <_> + + <_> + 7 8 8 10 -1. + <_> + 7 8 4 5 2. + <_> + 11 13 4 5 2. + <_> + + <_> + 9 8 12 5 -1. + <_> + 13 8 4 5 3. + <_> + + <_> + 7 8 9 7 -1. + <_> + 10 8 3 7 3. + <_> + + <_> + 9 8 12 5 -1. + <_> + 13 8 4 5 3. + <_> + + <_> + 7 6 9 7 -1. + <_> + 10 6 3 7 3. + <_> + + <_> + 9 8 12 5 -1. + <_> + 13 8 4 5 3. + <_> + + <_> + 10 5 4 18 -1. + <_> + 10 11 4 6 3. + <_> + + <_> + 5 5 14 12 -1. + <_> + 5 11 14 6 2. + <_> + + <_> + 0 1 11 4 -1. + <_> + 0 3 11 2 2. + <_> + + <_> + 9 10 6 10 -1. + <_> + 11 10 2 10 3. + <_> + + <_> + 2 17 11 6 -1. + <_> + 2 19 11 2 3. + <_> + + <_> + 15 16 9 6 -1. + <_> + 15 18 9 2 3. + <_> + + <_> + 1 10 18 2 -1. + <_> + 1 11 18 1 2. + <_> + + <_> + 6 4 12 13 -1. + <_> + 10 4 4 13 3. + <_> + + <_> + 0 18 18 3 -1. + <_> + 0 19 18 1 3. + <_> + + <_> + 6 18 18 3 -1. + <_> + 6 19 18 1 3. + <_> + + <_> + 0 16 9 6 -1. + <_> + 0 18 9 2 3. + <_> + + <_> + 13 15 9 6 -1. + <_> + 13 17 9 2 3. + <_> + + <_> + 2 15 9 6 -1. + <_> + 2 17 9 2 3. + <_> + + <_> + 13 1 6 16 -1. + <_> + 13 1 3 16 2. + <_> + + <_> + 5 1 6 16 -1. + <_> + 8 1 3 16 2. + <_> + + <_> + 11 5 6 10 -1. + <_> + 13 5 2 10 3. + <_> + + <_> + 7 5 6 10 -1. + <_> + 9 5 2 10 3. + <_> + + <_> + 10 0 6 24 -1. + <_> + 12 0 2 24 3. + <_> + + <_> + 3 4 4 20 -1. + <_> + 3 4 2 10 2. + <_> + 5 14 2 10 2. + <_> + + <_> + 14 0 6 9 -1. + <_> + 16 0 2 9 3. + <_> + + <_> + 4 0 6 9 -1. + <_> + 6 0 2 9 3. + <_> + + <_> + 4 5 18 5 -1. + <_> + 10 5 6 5 3. + <_> + + <_> + 5 6 6 9 -1. + <_> + 7 6 2 9 3. + <_> + + <_> + 7 2 15 8 -1. + <_> + 12 2 5 8 3. + <_> + + <_> + 2 2 15 8 -1. + <_> + 7 2 5 8 3. + <_> + + <_> + 10 0 4 9 -1. + <_> + 10 0 2 9 2. + <_> + + <_> + 3 4 6 12 -1. + <_> + 3 4 3 6 2. + <_> + 6 10 3 6 2. + <_> + + <_> + 16 0 8 18 -1. + <_> + 16 0 4 18 2. + <_> + + <_> + 0 0 8 18 -1. + <_> + 4 0 4 18 2. + <_> + + <_> + 0 7 24 6 -1. + <_> + 0 9 24 2 3. + <_> + + <_> + 4 7 14 3 -1. + <_> + 11 7 7 3 2. + <_> + + <_> + 10 8 8 15 -1. + <_> + 10 8 4 15 2. + <_> + + <_> + 7 0 10 14 -1. + <_> + 12 0 5 14 2. + <_> + + <_> + 13 10 8 10 -1. + <_> + 17 10 4 5 2. + <_> + 13 15 4 5 2. + <_> + + <_> + 3 0 4 9 -1. + <_> + 5 0 2 9 2. + <_> + + <_> + 16 1 6 8 -1. + <_> + 16 1 3 8 2. + <_> + + <_> + 2 1 6 8 -1. + <_> + 5 1 3 8 2. + <_> + + <_> + 3 6 18 12 -1. + <_> + 3 10 18 4 3. + <_> + + <_> + 4 12 16 4 -1. + <_> + 4 14 16 2 2. + <_> + + <_> + 4 9 16 15 -1. + <_> + 4 14 16 5 3. + <_> + + <_> + 3 10 8 10 -1. + <_> + 3 10 4 5 2. + <_> + 7 15 4 5 2. + <_> + + <_> + 8 18 16 6 -1. + <_> + 16 18 8 3 2. + <_> + 8 21 8 3 2. + <_> + + <_> + 2 16 12 5 -1. + <_> + 6 16 4 5 3. + <_> + + <_> + 14 14 9 4 -1. + <_> + 14 16 9 2 2. + <_> + + <_> + 7 14 9 6 -1. + <_> + 7 16 9 2 3. + <_> + + <_> + 4 10 16 12 -1. + <_> + 4 14 16 4 3. + <_> + + <_> + 0 13 19 6 -1. + <_> + 0 15 19 2 3. + <_> + + <_> + 10 13 9 6 -1. + <_> + 10 15 9 2 3. + <_> + + <_> + 5 0 3 23 -1. + <_> + 6 0 1 23 3. + <_> + + <_> + 0 8 24 6 -1. + <_> + 0 10 24 2 3. + <_> + + <_> + 0 5 5 12 -1. + <_> + 0 9 5 4 3. + <_> + + <_> + 3 0 19 18 -1. + <_> + 3 9 19 9 2. + <_> + + <_> + 9 11 6 12 -1. + <_> + 9 11 3 6 2. + <_> + 12 17 3 6 2. + <_> + + <_> + 0 5 24 8 -1. + <_> + 12 5 12 4 2. + <_> + 0 9 12 4 2. + <_> + + <_> + 6 18 9 4 -1. + <_> + 6 20 9 2 2. + <_> + + <_> + 8 8 10 6 -1. + <_> + 8 10 10 2 3. + <_> + + <_> + 2 7 20 3 -1. + <_> + 2 8 20 1 3. + <_> + + <_> + 12 0 7 20 -1. + <_> + 12 10 7 10 2. + <_> + + <_> + 5 0 7 20 -1. + <_> + 5 10 7 10 2. + <_> + + <_> + 14 2 2 18 -1. + <_> + 14 11 2 9 2. + <_> + + <_> + 5 8 10 12 -1. + <_> + 10 8 5 12 2. + <_> + + <_> + 6 9 12 8 -1. + <_> + 12 9 6 4 2. + <_> + 6 13 6 4 2. + <_> + + <_> + 7 7 3 14 -1. + <_> + 7 14 3 7 2. + <_> + + <_> + 11 2 12 16 -1. + <_> + 17 2 6 8 2. + <_> + 11 10 6 8 2. + <_> + + <_> + 7 0 6 9 -1. + <_> + 9 0 2 9 3. + <_> + + <_> + 13 14 9 4 -1. + <_> + 13 16 9 2 2. + <_> + + <_> + 0 12 22 4 -1. + <_> + 0 12 11 2 2. + <_> + 11 14 11 2 2. + <_> + + <_> + 1 12 22 6 -1. + <_> + 12 12 11 3 2. + <_> + 1 15 11 3 2. + <_> + + <_> + 6 6 9 6 -1. + <_> + 9 6 3 6 3. + <_> + + <_> + 10 0 4 9 -1. + <_> + 10 0 2 9 2. + <_> + + <_> + 3 8 18 7 -1. + <_> + 9 8 6 7 3. + <_> + + <_> + 0 6 24 6 -1. + <_> + 0 8 24 2 3. + <_> + + <_> + 0 11 24 10 -1. + <_> + 8 11 8 10 3. + <_> + + <_> + 3 3 18 21 -1. + <_> + 9 3 6 21 3. + <_> + + <_> + 7 12 4 10 -1. + <_> + 9 12 2 10 2. + <_> + + <_> + 10 16 10 8 -1. + <_> + 15 16 5 4 2. + <_> + 10 20 5 4 2. + <_> + + <_> + 8 6 6 9 -1. + <_> + 10 6 2 9 3. + <_> + + <_> + 12 10 6 12 -1. + <_> + 15 10 3 6 2. + <_> + 12 16 3 6 2. + <_> + + <_> + 6 10 6 12 -1. + <_> + 6 10 3 6 2. + <_> + 9 16 3 6 2. + <_> + + <_> + 16 12 6 12 -1. + <_> + 19 12 3 6 2. + <_> + 16 18 3 6 2. + <_> + + <_> + 2 12 6 12 -1. + <_> + 2 12 3 6 2. + <_> + 5 18 3 6 2. + <_> + + <_> + 10 15 6 9 -1. + <_> + 12 15 2 9 3. + <_> + + <_> + 8 15 6 9 -1. + <_> + 10 15 2 9 3. + <_> + + <_> + 14 20 10 4 -1. + <_> + 14 20 5 4 2. + <_> + + <_> + 0 20 10 4 -1. + <_> + 5 20 5 4 2. + <_> + + <_> + 11 17 9 6 -1. + <_> + 11 19 9 2 3. + <_> + + <_> + 3 2 14 4 -1. + <_> + 3 4 14 2 2. + <_> + + <_> + 10 1 10 4 -1. + <_> + 10 3 10 2 2. + <_> + + <_> + 0 15 10 4 -1. + <_> + 5 15 5 4 2. + <_> + + <_> + 19 2 3 19 -1. + <_> + 20 2 1 19 3. + <_> + + <_> + 4 12 9 8 -1. + <_> + 7 12 3 8 3. + <_> + + <_> + 4 7 5 12 -1. + <_> + 4 11 5 4 3. + <_> + + <_> + 0 1 24 3 -1. + <_> + 8 1 8 3 3. + <_> + + <_> + 6 8 12 4 -1. + <_> + 6 10 12 2 2. + <_> + + <_> + 19 3 4 10 -1. + <_> + 19 3 2 10 2. + <_> + + <_> + 0 6 9 6 -1. + <_> + 3 6 3 6 3. + <_> + + <_> + 18 0 6 22 -1. + <_> + 20 0 2 22 3. + <_> + + <_> + 0 0 6 22 -1. + <_> + 2 0 2 22 3. + <_> + + <_> + 5 15 19 3 -1. + <_> + 5 16 19 1 3. + <_> + + <_> + 10 7 4 15 -1. + <_> + 10 12 4 5 3. + <_> + + <_> + 9 6 6 9 -1. + <_> + 11 6 2 9 3. + <_> + + <_> + 0 21 18 3 -1. + <_> + 0 22 18 1 3. + <_> + + <_> + 7 3 10 15 -1. + <_> + 7 8 10 5 3. + <_> + + <_> + 1 7 18 3 -1. + <_> + 1 8 18 1 3. + <_> + + <_> + 8 2 9 6 -1. + <_> + 11 2 3 6 3. + <_> + + <_> + 0 10 24 14 -1. + <_> + 0 17 24 7 2. + <_> + + <_> + 13 9 8 10 -1. + <_> + 17 9 4 5 2. + <_> + 13 14 4 5 2. + <_> + + <_> + 10 5 4 9 -1. + <_> + 12 5 2 9 2. + <_> + + <_> + 13 9 8 10 -1. + <_> + 17 9 4 5 2. + <_> + 13 14 4 5 2. + <_> + + <_> + 7 11 10 10 -1. + <_> + 7 11 5 5 2. + <_> + 12 16 5 5 2. + <_> + + <_> + 4 13 18 4 -1. + <_> + 13 13 9 2 2. + <_> + 4 15 9 2 2. + <_> + + <_> + 0 0 19 2 -1. + <_> + 0 1 19 1 2. + <_> + + <_> + 0 18 24 6 -1. + <_> + 8 18 8 6 3. + <_> + + <_> + 6 4 8 16 -1. + <_> + 6 12 8 8 2. + <_> + + <_> + 7 8 10 4 -1. + <_> + 7 10 10 2 2. + <_> + + <_> + 0 3 6 9 -1. + <_> + 0 6 6 3 3. + <_> + + <_> + 13 15 7 9 -1. + <_> + 13 18 7 3 3. + <_> + + <_> + 3 18 12 6 -1. + <_> + 3 18 6 3 2. + <_> + 9 21 6 3 2. + <_> + + <_> + 12 14 6 9 -1. + <_> + 12 17 6 3 3. + <_> + + <_> + 2 15 15 8 -1. + <_> + 2 19 15 4 2. + <_> + + <_> + 9 6 6 16 -1. + <_> + 9 14 6 8 2. + <_> + + <_> + 6 6 7 12 -1. + <_> + 6 10 7 4 3. + <_> + + <_> + 14 6 6 9 -1. + <_> + 14 9 6 3 3. + <_> + + <_> + 5 14 6 9 -1. + <_> + 5 17 6 3 3. + <_> + + <_> + 10 8 6 9 -1. + <_> + 12 8 2 9 3. + <_> + + <_> + 6 6 4 18 -1. + <_> + 6 6 2 9 2. + <_> + 8 15 2 9 2. + <_> + + <_> + 14 9 6 12 -1. + <_> + 17 9 3 6 2. + <_> + 14 15 3 6 2. + <_> + + <_> + 4 9 6 12 -1. + <_> + 4 9 3 6 2. + <_> + 7 15 3 6 2. + <_> + + <_> + 14 15 9 6 -1. + <_> + 14 17 9 2 3. + <_> + + <_> + 0 20 18 4 -1. + <_> + 0 20 9 2 2. + <_> + 9 22 9 2 2. + <_> + + <_> + 13 18 9 6 -1. + <_> + 13 20 9 2 3. + <_> + + <_> + 2 18 9 6 -1. + <_> + 2 20 9 2 3. + <_> + + <_> + 6 16 18 3 -1. + <_> + 6 17 18 1 3. + <_> + + <_> + 0 16 18 3 -1. + <_> + 0 17 18 1 3. + <_> + + <_> + 19 2 4 22 -1. + <_> + 21 2 2 11 2. + <_> + 19 13 2 11 2. + <_> + + <_> + 1 2 4 22 -1. + <_> + 1 2 2 11 2. + <_> + 3 13 2 11 2. + <_> + + <_> + 15 0 2 24 -1. + <_> + 15 0 1 24 2. + <_> + + <_> + 3 20 16 4 -1. + <_> + 11 20 8 4 2. + <_> + + <_> + 11 6 4 18 -1. + <_> + 13 6 2 9 2. + <_> + 11 15 2 9 2. + <_> + + <_> + 7 9 10 14 -1. + <_> + 7 9 5 7 2. + <_> + 12 16 5 7 2. + <_> + + <_> + 14 6 6 9 -1. + <_> + 14 9 6 3 3. + <_> + + <_> + 3 6 7 9 -1. + <_> + 3 9 7 3 3. + <_> + + <_> + 20 4 4 20 -1. + <_> + 22 4 2 10 2. + <_> + 20 14 2 10 2. + <_> + + <_> + 7 6 6 9 -1. + <_> + 7 9 6 3 3. + <_> + + <_> + 7 0 10 14 -1. + <_> + 12 0 5 7 2. + <_> + 7 7 5 7 2. + <_> + + <_> + 2 1 18 6 -1. + <_> + 11 1 9 6 2. + <_> + + <_> + 15 0 2 24 -1. + <_> + 15 0 1 24 2. + <_> + + <_> + 7 0 2 24 -1. + <_> + 8 0 1 24 2. + <_> + + <_> + 13 12 6 7 -1. + <_> + 13 12 3 7 2. + <_> + + <_> + 5 12 6 7 -1. + <_> + 8 12 3 7 2. + <_> + + <_> + 3 5 18 19 -1. + <_> + 9 5 6 19 3. + <_> + + <_> + 5 6 9 6 -1. + <_> + 8 6 3 6 3. + <_> + + <_> + 9 5 9 6 -1. + <_> + 12 5 3 6 3. + <_> + + <_> + 3 16 10 8 -1. + <_> + 3 16 5 4 2. + <_> + 8 20 5 4 2. + <_> + + <_> + 19 8 5 15 -1. + <_> + 19 13 5 5 3. + <_> + + <_> + 0 8 5 15 -1. + <_> + 0 13 5 5 3. + <_> + + <_> + 20 4 4 20 -1. + <_> + 22 4 2 10 2. + <_> + 20 14 2 10 2. + <_> + + <_> + 0 4 4 20 -1. + <_> + 0 4 2 10 2. + <_> + 2 14 2 10 2. + <_> + + <_> + 7 7 10 4 -1. + <_> + 7 7 5 4 2. + <_> + + <_> + 4 19 14 4 -1. + <_> + 11 19 7 4 2. + <_> + + <_> + 10 11 12 3 -1. + <_> + 10 11 6 3 2. + <_> + + <_> + 0 1 24 3 -1. + <_> + 0 2 24 1 3. + <_> + + <_> + 7 2 14 20 -1. + <_> + 14 2 7 10 2. + <_> + 7 12 7 10 2. + <_> + + <_> + 0 13 6 9 -1. + <_> + 2 13 2 9 3. + <_> + + <_> + 13 0 4 19 -1. + <_> + 13 0 2 19 2. + <_> + + <_> + 1 11 14 3 -1. + <_> + 8 11 7 3 2. + <_> + + <_> + 7 1 16 20 -1. + <_> + 15 1 8 10 2. + <_> + 7 11 8 10 2. + <_> + + <_> + 0 10 21 9 -1. + <_> + 7 10 7 9 3. + <_> + + <_> + 6 19 15 5 -1. + <_> + 11 19 5 5 3. + <_> + + <_> + 8 10 6 6 -1. + <_> + 11 10 3 6 2. + <_> + + <_> + 7 1 16 20 -1. + <_> + 15 1 8 10 2. + <_> + 7 11 8 10 2. + <_> + + <_> + 1 1 16 20 -1. + <_> + 1 1 8 10 2. + <_> + 9 11 8 10 2. + <_> + + <_> + 16 4 3 12 -1. + <_> + 16 10 3 6 2. + <_> + + <_> + 5 4 3 12 -1. + <_> + 5 10 3 6 2. + <_> + + <_> + 7 6 10 8 -1. + <_> + 12 6 5 4 2. + <_> + 7 10 5 4 2. + <_> + + <_> + 4 9 6 6 -1. + <_> + 4 12 6 3 2. + <_> + + <_> + 6 5 12 4 -1. + <_> + 6 7 12 2 2. + <_> + + <_> + 9 2 5 15 -1. + <_> + 9 7 5 5 3. + <_> + + <_> + 15 0 9 6 -1. + <_> + 15 2 9 2 3. + <_> + + <_> + 6 0 11 10 -1. + <_> + 6 5 11 5 2. + <_> + + <_> + 12 7 4 12 -1. + <_> + 12 13 4 6 2. + <_> + + <_> + 7 2 9 4 -1. + <_> + 7 4 9 2 2. + <_> + + <_> + 6 0 13 6 -1. + <_> + 6 2 13 2 3. + <_> + + <_> + 10 6 4 18 -1. + <_> + 10 6 2 9 2. + <_> + 12 15 2 9 2. + <_> + + <_> + 10 8 6 9 -1. + <_> + 12 8 2 9 3. + <_> + + <_> + 3 18 10 6 -1. + <_> + 3 20 10 2 3. + <_> + + <_> + 4 14 20 3 -1. + <_> + 4 15 20 1 3. + <_> + + <_> + 2 15 9 6 -1. + <_> + 2 17 9 2 3. + <_> + + <_> + 13 0 4 19 -1. + <_> + 13 0 2 19 2. + <_> + + <_> + 7 0 4 19 -1. + <_> + 9 0 2 19 2. + <_> + + <_> + 1 4 22 2 -1. + <_> + 1 5 22 1 2. + <_> + + <_> + 0 0 9 6 -1. + <_> + 0 2 9 2 3. + <_> + + <_> + 0 0 24 18 -1. + <_> + 0 9 24 9 2. + <_> + + <_> + 3 2 16 8 -1. + <_> + 3 6 16 4 2. + <_> + + <_> + 3 6 18 6 -1. + <_> + 3 8 18 2 3. + <_> + + <_> + 3 1 6 10 -1. + <_> + 5 1 2 10 3. + <_> + + <_> + 13 0 9 6 -1. + <_> + 16 0 3 6 3. + <_> + + <_> + 2 0 9 6 -1. + <_> + 5 0 3 6 3. + <_> + + <_> + 10 2 4 15 -1. + <_> + 10 7 4 5 3. + <_> + + <_> + 6 0 7 10 -1. + <_> + 6 5 7 5 2. + <_> + + <_> + 2 2 20 4 -1. + <_> + 12 2 10 2 2. + <_> + 2 4 10 2 2. + <_> + + <_> + 2 11 19 3 -1. + <_> + 2 12 19 1 3. + <_> + + <_> + 10 8 6 9 -1. + <_> + 12 8 2 9 3. + <_> + + <_> + 8 8 6 9 -1. + <_> + 10 8 2 9 3. + <_> + + <_> + 13 8 4 9 -1. + <_> + 13 8 2 9 2. + <_> + + <_> + 3 11 9 9 -1. + <_> + 6 11 3 9 3. + <_> + + <_> + 3 9 18 5 -1. + <_> + 9 9 6 5 3. + <_> + + <_> + 2 4 2 20 -1. + <_> + 2 14 2 10 2. + <_> + + <_> + 14 17 8 6 -1. + <_> + 14 20 8 3 2. + <_> + + <_> + 3 21 18 2 -1. + <_> + 3 22 18 1 2. + <_> + + <_> + 5 4 15 6 -1. + <_> + 10 4 5 6 3. + <_> + + <_> + 2 15 12 6 -1. + <_> + 2 17 12 2 3. + <_> + + <_> + 17 8 6 9 -1. + <_> + 17 11 6 3 3. + <_> + + <_> + 2 12 20 4 -1. + <_> + 2 12 10 2 2. + <_> + 12 14 10 2 2. + <_> + + <_> + 0 17 24 6 -1. + <_> + 0 19 24 2 3. + <_> + + <_> + 7 16 9 4 -1. + <_> + 7 18 9 2 2. + <_> + + <_> + 15 1 4 22 -1. + <_> + 17 1 2 11 2. + <_> + 15 12 2 11 2. + <_> + + <_> + 5 1 4 22 -1. + <_> + 5 1 2 11 2. + <_> + 7 12 2 11 2. + <_> + + <_> + 11 13 8 9 -1. + <_> + 11 16 8 3 3. + <_> + + <_> + 6 1 6 9 -1. + <_> + 8 1 2 9 3. + <_> + + <_> + 11 4 3 18 -1. + <_> + 11 10 3 6 3. + <_> + + <_> + 5 8 12 6 -1. + <_> + 5 8 6 3 2. + <_> + 11 11 6 3 2. + <_> + + <_> + 15 7 5 8 -1. + <_> + 15 11 5 4 2. + <_> + + <_> + 4 7 5 8 -1. + <_> + 4 11 5 4 2. + <_> + + <_> + 12 6 6 12 -1. + <_> + 15 6 3 6 2. + <_> + 12 12 3 6 2. + <_> + + <_> + 6 6 6 12 -1. + <_> + 6 6 3 6 2. + <_> + 9 12 3 6 2. + <_> + + <_> + 5 9 14 8 -1. + <_> + 12 9 7 4 2. + <_> + 5 13 7 4 2. + <_> + + <_> + 9 1 3 14 -1. + <_> + 9 8 3 7 2. + <_> + + <_> + 12 6 6 12 -1. + <_> + 12 10 6 4 3. + <_> + + <_> + 4 5 4 18 -1. + <_> + 4 5 2 9 2. + <_> + 6 14 2 9 2. + <_> + + <_> + 4 6 16 18 -1. + <_> + 4 12 16 6 3. + <_> + + <_> + 5 4 7 20 -1. + <_> + 5 14 7 10 2. + <_> + + <_> + 14 8 8 12 -1. + <_> + 14 14 8 6 2. + <_> + + <_> + 9 10 6 14 -1. + <_> + 9 10 3 7 2. + <_> + 12 17 3 7 2. + <_> + + <_> + 9 5 9 6 -1. + <_> + 12 5 3 6 3. + <_> + + <_> + 9 4 3 18 -1. + <_> + 10 4 1 18 3. + <_> + + <_> + 1 4 22 14 -1. + <_> + 12 4 11 7 2. + <_> + 1 11 11 7 2. + <_> + + <_> + 2 7 18 2 -1. + <_> + 2 8 18 1 2. + <_> + + <_> + 12 6 6 12 -1. + <_> + 12 10 6 4 3. + <_> + + <_> + 6 5 9 7 -1. + <_> + 9 5 3 7 3. + <_> + + <_> + 12 7 4 12 -1. + <_> + 12 13 4 6 2. + <_> + + <_> + 8 7 4 12 -1. + <_> + 8 13 4 6 2. + <_> + + <_> + 7 2 10 22 -1. + <_> + 7 13 10 11 2. + <_> + + <_> + 0 1 3 20 -1. + <_> + 1 1 1 20 3. + <_> + + <_> + 4 13 18 4 -1. + <_> + 13 13 9 2 2. + <_> + 4 15 9 2 2. + <_> + + <_> + 2 13 18 4 -1. + <_> + 2 13 9 2 2. + <_> + 11 15 9 2 2. + <_> + + <_> + 15 15 9 6 -1. + <_> + 15 17 9 2 3. + <_> + + <_> + 0 15 9 6 -1. + <_> + 0 17 9 2 3. + <_> + + <_> + 6 0 18 24 -1. + <_> + 15 0 9 12 2. + <_> + 6 12 9 12 2. + <_> + + <_> + 6 6 6 12 -1. + <_> + 6 10 6 4 3. + <_> + + <_> + 8 7 10 4 -1. + <_> + 8 9 10 2 2. + <_> + + <_> + 1 9 18 6 -1. + <_> + 1 9 9 3 2. + <_> + 10 12 9 3 2. + <_> + + <_> + 6 6 18 3 -1. + <_> + 6 7 18 1 3. + <_> + + <_> + 7 7 9 8 -1. + <_> + 10 7 3 8 3. + <_> + + <_> + 10 12 6 12 -1. + <_> + 12 12 2 12 3. + <_> + + <_> + 3 14 18 3 -1. + <_> + 3 15 18 1 3. + <_> + + <_> + 15 17 9 7 -1. + <_> + 18 17 3 7 3. + <_> + + <_> + 1 12 10 6 -1. + <_> + 1 14 10 2 3. + <_> + + <_> + 15 17 9 7 -1. + <_> + 18 17 3 7 3. + <_> + + <_> + 10 3 3 19 -1. + <_> + 11 3 1 19 3. + <_> + + <_> + 15 17 9 7 -1. + <_> + 18 17 3 7 3. + <_> + + <_> + 6 1 11 9 -1. + <_> + 6 4 11 3 3. + <_> + + <_> + 15 17 9 7 -1. + <_> + 18 17 3 7 3. + <_> + + <_> + 6 5 11 6 -1. + <_> + 6 8 11 3 2. + <_> + + <_> + 16 7 8 5 -1. + <_> + 16 7 4 5 2. + <_> + + <_> + 2 4 20 19 -1. + <_> + 12 4 10 19 2. + <_> + + <_> + 2 1 21 6 -1. + <_> + 9 1 7 6 3. + <_> + + <_> + 6 5 12 14 -1. + <_> + 6 5 6 7 2. + <_> + 12 12 6 7 2. + <_> + + <_> + 9 0 6 9 -1. + <_> + 11 0 2 9 3. + <_> + + <_> + 2 11 8 5 -1. + <_> + 6 11 4 5 2. + <_> + + <_> + 16 7 8 5 -1. + <_> + 16 7 4 5 2. + <_> + + <_> + 0 7 8 5 -1. + <_> + 4 7 4 5 2. + <_> + + <_> + 15 17 9 7 -1. + <_> + 18 17 3 7 3. + <_> + + <_> + 8 6 8 10 -1. + <_> + 8 6 4 5 2. + <_> + 12 11 4 5 2. + <_> + + <_> + 15 15 9 9 -1. + <_> + 18 15 3 9 3. + <_> + + <_> + 0 15 9 9 -1. + <_> + 3 15 3 9 3. + <_> + + <_> + 12 10 9 7 -1. + <_> + 15 10 3 7 3. + <_> + + <_> + 3 10 9 7 -1. + <_> + 6 10 3 7 3. + <_> + + <_> + 13 15 10 8 -1. + <_> + 18 15 5 4 2. + <_> + 13 19 5 4 2. + <_> + + <_> + 0 1 6 12 -1. + <_> + 0 1 3 6 2. + <_> + 3 7 3 6 2. + <_> + + <_> + 10 0 6 12 -1. + <_> + 13 0 3 6 2. + <_> + 10 6 3 6 2. + <_> + + <_> + 7 0 10 12 -1. + <_> + 7 0 5 6 2. + <_> + 12 6 5 6 2. + <_> + + <_> + 4 1 16 8 -1. + <_> + 4 1 8 8 2. + <_> + + <_> + 0 21 19 3 -1. + <_> + 0 22 19 1 3. + <_> + + <_> + 6 9 18 4 -1. + <_> + 15 9 9 2 2. + <_> + 6 11 9 2 2. + <_> + + <_> + 3 4 9 6 -1. + <_> + 3 6 9 2 3. + <_> + + <_> + 9 1 6 15 -1. + <_> + 9 6 6 5 3. + <_> + + <_> + 5 9 6 6 -1. + <_> + 8 9 3 6 2. + <_> + + <_> + 5 1 14 9 -1. + <_> + 5 4 14 3 3. + <_> + + <_> + 3 0 8 20 -1. + <_> + 3 0 4 10 2. + <_> + 7 10 4 10 2. + <_> + + <_> + 5 0 7 9 -1. + <_> + 5 3 7 3 3. + <_> + + <_> + 6 6 12 5 -1. + <_> + 10 6 4 5 3. + <_> + + <_> + 0 1 8 14 -1. + <_> + 4 1 4 14 2. + <_> + + <_> + 2 12 22 4 -1. + <_> + 2 14 22 2 2. + <_> + + <_> + 8 17 6 6 -1. + <_> + 8 20 6 3 2. + <_> + + <_> + 18 1 6 7 -1. + <_> + 18 1 3 7 2. + <_> + + <_> + 0 0 6 6 -1. + <_> + 3 0 3 6 2. + <_> + + <_> + 4 6 17 18 -1. + <_> + 4 12 17 6 3. + <_> + + <_> + 6 0 12 6 -1. + <_> + 6 0 6 3 2. + <_> + 12 3 6 3 2. + <_> + + <_> + 4 7 18 4 -1. + <_> + 13 7 9 2 2. + <_> + 4 9 9 2 2. + <_> + + <_> + 4 12 10 6 -1. + <_> + 4 14 10 2 3. + <_> + + <_> + 7 9 10 12 -1. + <_> + 12 9 5 6 2. + <_> + 7 15 5 6 2. + <_> + + <_> + 0 1 24 3 -1. + <_> + 8 1 8 3 3. + <_> + + <_> + 13 11 6 6 -1. + <_> + 13 11 3 6 2. + <_> + + <_> + 5 11 6 6 -1. + <_> + 8 11 3 6 2. + <_> + + <_> + 3 10 19 3 -1. + <_> + 3 11 19 1 3. + <_> + + <_> + 0 2 6 9 -1. + <_> + 0 5 6 3 3. + <_> + + <_> + 14 16 10 6 -1. + <_> + 14 18 10 2 3. + <_> + + <_> + 0 16 10 6 -1. + <_> + 0 18 10 2 3. + <_> + + <_> + 14 13 9 6 -1. + <_> + 14 15 9 2 3. + <_> + + <_> + 0 16 18 3 -1. + <_> + 0 17 18 1 3. + <_> + + <_> + 6 16 18 3 -1. + <_> + 6 17 18 1 3. + <_> + + <_> + 0 18 9 6 -1. + <_> + 0 20 9 2 3. + <_> + + <_> + 14 13 9 6 -1. + <_> + 14 15 9 2 3. + <_> + + <_> + 6 2 6 9 -1. + <_> + 8 2 2 9 3. + <_> + + <_> + 15 8 4 12 -1. + <_> + 15 8 2 12 2. + <_> + + <_> + 8 13 8 8 -1. + <_> + 8 17 8 4 2. + <_> + + <_> + 4 20 18 3 -1. + <_> + 10 20 6 3 3. + <_> + + <_> + 5 8 4 12 -1. + <_> + 7 8 2 12 2. + <_> + + <_> + 7 7 12 3 -1. + <_> + 7 7 6 3 2. + <_> + + <_> + 10 6 4 9 -1. + <_> + 12 6 2 9 2. + <_> + + <_> + 5 20 18 3 -1. + <_> + 11 20 6 3 3. + <_> + + <_> + 1 20 18 3 -1. + <_> + 7 20 6 3 3. + <_> + + <_> + 18 1 6 20 -1. + <_> + 21 1 3 10 2. + <_> + 18 11 3 10 2. + <_> + + <_> + 0 1 6 20 -1. + <_> + 0 1 3 10 2. + <_> + 3 11 3 10 2. + <_> + + <_> + 13 3 4 18 -1. + <_> + 15 3 2 9 2. + <_> + 13 12 2 9 2. + <_> + + <_> + 0 2 6 12 -1. + <_> + 0 6 6 4 3. + <_> + + <_> + 12 9 12 6 -1. + <_> + 18 9 6 3 2. + <_> + 12 12 6 3 2. + <_> + + <_> + 7 3 4 18 -1. + <_> + 7 3 2 9 2. + <_> + 9 12 2 9 2. + <_> + + <_> + 14 0 6 9 -1. + <_> + 16 0 2 9 3. + <_> + + <_> + 0 9 12 6 -1. + <_> + 0 9 6 3 2. + <_> + 6 12 6 3 2. + <_> + + <_> + 14 4 8 20 -1. + <_> + 18 4 4 10 2. + <_> + 14 14 4 10 2. + <_> + + <_> + 2 4 8 20 -1. + <_> + 2 4 4 10 2. + <_> + 6 14 4 10 2. + <_> + + <_> + 14 13 9 6 -1. + <_> + 14 15 9 2 3. + <_> + + <_> + 1 13 9 6 -1. + <_> + 1 15 9 2 3. + <_> + + <_> + 3 15 18 3 -1. + <_> + 9 15 6 3 3. + <_> + + <_> + 5 13 9 6 -1. + <_> + 5 15 9 2 3. + <_> + + <_> + 5 0 18 3 -1. + <_> + 5 1 18 1 3. + <_> + + <_> + 8 2 6 7 -1. + <_> + 11 2 3 7 2. + <_> + + <_> + 9 1 9 6 -1. + <_> + 12 1 3 6 3. + <_> + + <_> + 6 1 9 6 -1. + <_> + 9 1 3 6 3. + <_> + + <_> + 5 6 14 6 -1. + <_> + 12 6 7 3 2. + <_> + 5 9 7 3 2. + <_> + + <_> + 8 2 6 13 -1. + <_> + 10 2 2 13 3. + <_> + + <_> + 6 11 12 6 -1. + <_> + 12 11 6 3 2. + <_> + 6 14 6 3 2. + <_> + + <_> + 3 1 18 15 -1. + <_> + 9 1 6 15 3. + <_> + + <_> + 13 0 6 7 -1. + <_> + 13 0 3 7 2. + <_> + + <_> + 3 3 16 6 -1. + <_> + 3 6 16 3 2. + <_> + + <_> + 12 1 3 12 -1. + <_> + 12 7 3 6 2. + <_> + + <_> + 7 7 6 9 -1. + <_> + 9 7 2 9 3. + <_> + + <_> + 13 0 4 24 -1. + <_> + 13 0 2 24 2. + <_> + + <_> + 7 0 4 24 -1. + <_> + 9 0 2 24 2. + <_> + + <_> + 11 9 5 12 -1. + <_> + 11 13 5 4 3. + <_> + + <_> + 7 15 9 6 -1. + <_> + 7 17 9 2 3. + <_> + + <_> + 5 7 18 6 -1. + <_> + 5 9 18 2 3. + <_> + + <_> + 8 9 5 12 -1. + <_> + 8 13 5 4 3. + <_> + + <_> + 4 17 17 6 -1. + <_> + 4 19 17 2 3. + <_> + + <_> + 0 3 18 14 -1. + <_> + 0 3 9 7 2. + <_> + 9 10 9 7 2. + <_> + + <_> + 0 1 24 2 -1. + <_> + 0 2 24 1 2. + <_> + + <_> + 0 15 18 3 -1. + <_> + 0 16 18 1 3. + <_> + + <_> + 9 0 6 9 -1. + <_> + 11 0 2 9 3. + <_> + + <_> + 3 3 14 12 -1. + <_> + 3 9 14 6 2. + <_> + + <_> + 12 1 3 12 -1. + <_> + 12 7 3 6 2. + <_> + + <_> + 8 0 6 9 -1. + <_> + 10 0 2 9 3. + <_> + + <_> + 10 6 6 10 -1. + <_> + 12 6 2 10 3. + <_> + + <_> + 5 0 6 9 -1. + <_> + 7 0 2 9 3. + <_> + + <_> + 2 0 21 7 -1. + <_> + 9 0 7 7 3. + <_> + + <_> + 6 11 12 5 -1. + <_> + 10 11 4 5 3. + <_> + + <_> + 8 7 9 8 -1. + <_> + 11 7 3 8 3. + <_> + + <_> + 9 6 6 18 -1. + <_> + 9 6 3 9 2. + <_> + 12 15 3 9 2. + <_> + + <_> + 15 14 8 10 -1. + <_> + 19 14 4 5 2. + <_> + 15 19 4 5 2. + <_> + + <_> + 1 14 8 10 -1. + <_> + 1 14 4 5 2. + <_> + 5 19 4 5 2. + <_> + + <_> + 11 0 8 10 -1. + <_> + 15 0 4 5 2. + <_> + 11 5 4 5 2. + <_> + + <_> + 5 0 8 10 -1. + <_> + 5 0 4 5 2. + <_> + 9 5 4 5 2. + <_> + + <_> + 6 1 12 5 -1. + <_> + 6 1 6 5 2. + <_> + + <_> + 1 12 18 2 -1. + <_> + 10 12 9 2 2. + <_> + + <_> + 2 8 20 6 -1. + <_> + 12 8 10 3 2. + <_> + 2 11 10 3 2. + <_> + + <_> + 7 6 9 7 -1. + <_> + 10 6 3 7 3. + <_> + + <_> + 10 5 8 16 -1. + <_> + 14 5 4 8 2. + <_> + 10 13 4 8 2. + <_> + + <_> + 3 9 16 8 -1. + <_> + 3 9 8 4 2. + <_> + 11 13 8 4 2. + <_> + + <_> + 7 8 10 4 -1. + <_> + 7 8 5 4 2. + <_> + + <_> + 7 12 10 8 -1. + <_> + 7 12 5 4 2. + <_> + 12 16 5 4 2. + <_> + + <_> + 9 19 15 4 -1. + <_> + 14 19 5 4 3. + <_> + + <_> + 1 0 18 9 -1. + <_> + 7 0 6 9 3. + <_> + + <_> + 13 4 10 8 -1. + <_> + 18 4 5 4 2. + <_> + 13 8 5 4 2. + <_> + + <_> + 3 16 18 4 -1. + <_> + 9 16 6 4 3. + <_> + + <_> + 8 7 10 12 -1. + <_> + 13 7 5 6 2. + <_> + 8 13 5 6 2. + <_> + + <_> + 6 7 10 12 -1. + <_> + 6 7 5 6 2. + <_> + 11 13 5 6 2. + <_> + + <_> + 4 6 18 7 -1. + <_> + 10 6 6 7 3. + <_> + + <_> + 0 17 18 3 -1. + <_> + 0 18 18 1 3. + <_> + + <_> + 3 17 18 3 -1. + <_> + 3 18 18 1 3. + <_> + + <_> + 2 4 6 10 -1. + <_> + 4 4 2 10 3. + <_> + + <_> + 16 0 8 24 -1. + <_> + 16 0 4 24 2. + <_> + + <_> + 4 0 8 15 -1. + <_> + 8 0 4 15 2. + <_> + + <_> + 16 0 8 24 -1. + <_> + 16 0 4 24 2. + <_> + + <_> + 1 4 18 9 -1. + <_> + 7 4 6 9 3. + <_> + + <_> + 15 12 9 6 -1. + <_> + 15 14 9 2 3. + <_> + + <_> + 3 9 18 6 -1. + <_> + 3 9 9 3 2. + <_> + 12 12 9 3 2. + <_> + + <_> + 18 5 6 9 -1. + <_> + 18 8 6 3 3. + <_> + + <_> + 0 5 6 9 -1. + <_> + 0 8 6 3 3. + <_> + + <_> + 4 7 18 4 -1. + <_> + 13 7 9 2 2. + <_> + 4 9 9 2 2. + <_> + + <_> + 2 1 12 20 -1. + <_> + 2 1 6 10 2. + <_> + 8 11 6 10 2. + <_> + + <_> + 17 0 6 23 -1. + <_> + 17 0 3 23 2. + <_> + + <_> + 1 6 2 18 -1. + <_> + 1 15 2 9 2. + <_> + + <_> + 8 8 10 6 -1. + <_> + 8 10 10 2 3. + <_> + + <_> + 0 6 20 6 -1. + <_> + 0 6 10 3 2. + <_> + 10 9 10 3 2. + <_> + + <_> + 11 12 12 5 -1. + <_> + 15 12 4 5 3. + <_> + + <_> + 0 4 3 19 -1. + <_> + 1 4 1 19 3. + <_> + + <_> + 19 1 3 18 -1. + <_> + 20 1 1 18 3. + <_> + + <_> + 2 1 3 18 -1. + <_> + 3 1 1 18 3. + <_> + + <_> + 3 10 18 3 -1. + <_> + 9 10 6 3 3. + <_> + + <_> + 4 4 10 9 -1. + <_> + 9 4 5 9 2. + <_> + + <_> + 7 13 14 7 -1. + <_> + 7 13 7 7 2. + <_> + + <_> + 3 13 14 7 -1. + <_> + 10 13 7 7 2. + <_> + + <_> + 8 15 9 6 -1. + <_> + 11 15 3 6 3. + <_> + + <_> + 4 14 8 10 -1. + <_> + 4 14 4 5 2. + <_> + 8 19 4 5 2. + <_> + + <_> + 10 14 4 10 -1. + <_> + 10 19 4 5 2. + <_> + + <_> + 3 8 5 16 -1. + <_> + 3 16 5 8 2. + <_> + + <_> + 15 10 9 6 -1. + <_> + 15 12 9 2 3. + <_> + + <_> + 0 10 9 6 -1. + <_> + 0 12 9 2 3. + <_> + + <_> + 6 7 12 9 -1. + <_> + 6 10 12 3 3. + <_> + + <_> + 9 10 5 8 -1. + <_> + 9 14 5 4 2. + <_> + + <_> + 12 1 3 12 -1. + <_> + 12 7 3 6 2. + <_> + + <_> + 8 15 6 9 -1. + <_> + 10 15 2 9 3. + <_> + + <_> + 16 6 7 6 -1. + <_> + 16 9 7 3 2. + <_> + + <_> + 8 1 4 22 -1. + <_> + 10 1 2 22 2. + <_> + + <_> + 6 6 14 3 -1. + <_> + 6 6 7 3 2. + <_> + + <_> + 0 18 19 3 -1. + <_> + 0 19 19 1 3. + <_> + + <_> + 17 0 6 24 -1. + <_> + 17 0 3 24 2. + <_> + + <_> + 0 13 15 6 -1. + <_> + 5 13 5 6 3. + <_> + + <_> + 9 6 10 14 -1. + <_> + 14 6 5 7 2. + <_> + 9 13 5 7 2. + <_> + + <_> + 1 6 8 10 -1. + <_> + 1 6 4 5 2. + <_> + 5 11 4 5 2. + <_> + + <_> + 7 6 12 5 -1. + <_> + 7 6 6 5 2. + <_> + + <_> + 7 7 9 6 -1. + <_> + 10 7 3 6 3. + <_> + + <_> + 7 8 14 14 -1. + <_> + 14 8 7 7 2. + <_> + 7 15 7 7 2. + <_> + + <_> + 3 8 14 14 -1. + <_> + 3 8 7 7 2. + <_> + 10 15 7 7 2. + <_> + + <_> + 9 8 13 4 -1. + <_> + 9 10 13 2 2. + <_> + + <_> + 3 2 6 12 -1. + <_> + 3 2 3 6 2. + <_> + 6 8 3 6 2. + <_> + + <_> + 6 10 17 6 -1. + <_> + 6 13 17 3 2. + <_> + + <_> + 1 10 17 6 -1. + <_> + 1 13 17 3 2. + <_> + + <_> + 16 7 8 9 -1. + <_> + 16 10 8 3 3. + <_> + + <_> + 0 7 8 9 -1. + <_> + 0 10 8 3 3. + <_> + + <_> + 0 9 24 10 -1. + <_> + 12 9 12 5 2. + <_> + 0 14 12 5 2. + <_> + + <_> + 3 2 15 8 -1. + <_> + 8 2 5 8 3. + <_> + + <_> + 4 2 18 8 -1. + <_> + 10 2 6 8 3. + <_> + + <_> + 0 1 18 4 -1. + <_> + 0 1 9 2 2. + <_> + 9 3 9 2 2. + <_> + + <_> + 20 2 3 18 -1. + <_> + 21 2 1 18 3. + <_> + + <_> + 1 3 3 19 -1. + <_> + 2 3 1 19 3. + <_> + + <_> + 18 8 6 16 -1. + <_> + 20 8 2 16 3. + <_> + + <_> + 0 8 6 16 -1. + <_> + 2 8 2 16 3. + <_> + + <_> + 8 18 11 6 -1. + <_> + 8 20 11 2 3. + <_> + + <_> + 4 6 12 5 -1. + <_> + 8 6 4 5 3. + <_> + + <_> + 7 6 12 5 -1. + <_> + 11 6 4 5 3. + <_> + + <_> + 6 3 9 6 -1. + <_> + 9 3 3 6 3. + <_> + + <_> + 7 6 12 5 -1. + <_> + 7 6 6 5 2. + <_> + + <_> + 9 8 6 7 -1. + <_> + 12 8 3 7 2. + <_> + + <_> + 8 2 9 6 -1. + <_> + 11 2 3 6 3. + <_> + + <_> + 8 14 6 9 -1. + <_> + 8 17 6 3 3. + <_> + + <_> + 8 2 9 6 -1. + <_> + 11 2 3 6 3. + <_> + + <_> + 4 3 16 20 -1. + <_> + 4 3 8 10 2. + <_> + 12 13 8 10 2. + <_> + + <_> + 7 6 10 12 -1. + <_> + 12 6 5 6 2. + <_> + 7 12 5 6 2. + <_> + + <_> + 0 2 7 12 -1. + <_> + 0 6 7 4 3. + <_> + + <_> + 12 17 11 6 -1. + <_> + 12 19 11 2 3. + <_> + + <_> + 4 7 12 8 -1. + <_> + 4 7 6 4 2. + <_> + 10 11 6 4 2. + <_> + + <_> + 8 11 8 10 -1. + <_> + 12 11 4 5 2. + <_> + 8 16 4 5 2. + <_> + + <_> + 9 1 4 9 -1. + <_> + 11 1 2 9 2. + <_> + + <_> + 14 0 3 22 -1. + <_> + 15 0 1 22 3. + <_> + + <_> + 7 0 3 22 -1. + <_> + 8 0 1 22 3. + <_> + + <_> + 4 7 18 4 -1. + <_> + 13 7 9 2 2. + <_> + 4 9 9 2 2. + <_> + + <_> + 10 2 4 15 -1. + <_> + 10 7 4 5 3. + <_> + + <_> + 12 1 3 12 -1. + <_> + 12 7 3 6 2. + <_> + + <_> + 0 0 18 13 -1. + <_> + 9 0 9 13 2. + <_> + + <_> + 16 0 3 24 -1. + <_> + 17 0 1 24 3. + <_> + + <_> + 5 0 3 24 -1. + <_> + 6 0 1 24 3. + <_> + + <_> + 10 15 5 8 -1. + <_> + 10 19 5 4 2. + <_> + + <_> + 2 18 18 2 -1. + <_> + 2 19 18 1 2. + <_> + + <_> + 2 8 20 3 -1. + <_> + 2 9 20 1 3. + <_> + + <_> + 7 6 9 6 -1. + <_> + 7 8 9 2 3. + <_> + + <_> + 3 2 19 10 -1. + <_> + 3 7 19 5 2. + <_> + + <_> + 2 7 19 3 -1. + <_> + 2 8 19 1 3. + <_> + + <_> + 15 6 9 4 -1. + <_> + 15 8 9 2 2. + <_> + + <_> + 2 2 18 8 -1. + <_> + 8 2 6 8 3. + <_> + + <_> + 10 9 14 4 -1. + <_> + 10 9 7 4 2. + <_> + + <_> + 4 4 6 16 -1. + <_> + 7 4 3 16 2. + <_> + + <_> + 15 8 9 16 -1. + <_> + 18 8 3 16 3. + <_> + + <_> + 0 8 9 16 -1. + <_> + 3 8 3 16 3. + <_> + + <_> + 18 0 6 14 -1. + <_> + 20 0 2 14 3. + <_> + + <_> + 0 0 6 14 -1. + <_> + 2 0 2 14 3. + <_> + + <_> + 15 0 6 22 -1. + <_> + 17 0 2 22 3. + <_> + + <_> + 3 0 6 22 -1. + <_> + 5 0 2 22 3. + <_> + + <_> + 12 2 12 20 -1. + <_> + 16 2 4 20 3. + <_> + + <_> + 0 2 12 20 -1. + <_> + 4 2 4 20 3. + <_> + + <_> + 11 6 4 9 -1. + <_> + 11 6 2 9 2. + <_> + + <_> + 9 0 6 16 -1. + <_> + 12 0 3 16 2. + <_> + + <_> + 12 1 3 12 -1. + <_> + 12 7 3 6 2. + <_> + + <_> + 3 4 18 6 -1. + <_> + 3 4 9 3 2. + <_> + 12 7 9 3 2. + <_> + + <_> + 5 5 16 8 -1. + <_> + 13 5 8 4 2. + <_> + 5 9 8 4 2. + <_> + + <_> + 0 13 10 6 -1. + <_> + 0 15 10 2 3. + <_> + + <_> + 8 14 9 6 -1. + <_> + 8 16 9 2 3. + <_> + + <_> + 6 2 9 6 -1. + <_> + 9 2 3 6 3. + <_> + + <_> + 14 1 10 8 -1. + <_> + 19 1 5 4 2. + <_> + 14 5 5 4 2. + <_> + + <_> + 9 1 3 12 -1. + <_> + 9 7 3 6 2. + <_> + + <_> + 6 4 12 9 -1. + <_> + 6 7 12 3 3. + <_> + + <_> + 6 5 12 6 -1. + <_> + 10 5 4 6 3. + <_> + + <_> + 1 1 8 5 -1. + <_> + 5 1 4 5 2. + <_> + + <_> + 12 12 6 8 -1. + <_> + 12 16 6 4 2. + <_> + + <_> + 3 12 12 6 -1. + <_> + 3 14 12 2 3. + <_> + + <_> + 9 18 12 6 -1. + <_> + 15 18 6 3 2. + <_> + 9 21 6 3 2. + <_> + + <_> + 4 13 6 6 -1. + <_> + 4 16 6 3 2. + <_> + + <_> + 11 3 7 18 -1. + <_> + 11 12 7 9 2. + <_> + + <_> + 3 9 18 3 -1. + <_> + 9 9 6 3 3. + <_> + + <_> + 5 3 19 2 -1. + <_> + 5 4 19 1 2. + <_> + + <_> + 4 2 12 6 -1. + <_> + 4 2 6 3 2. + <_> + 10 5 6 3 2. + <_> + + <_> + 9 6 6 9 -1. + <_> + 11 6 2 9 3. + <_> + + <_> + 8 6 6 9 -1. + <_> + 10 6 2 9 3. + <_> + + <_> + 16 9 5 15 -1. + <_> + 16 14 5 5 3. + <_> + + <_> + 3 9 5 15 -1. + <_> + 3 14 5 5 3. + <_> + + <_> + 6 6 14 6 -1. + <_> + 13 6 7 3 2. + <_> + 6 9 7 3 2. + <_> + + <_> + 8 6 3 14 -1. + <_> + 8 13 3 7 2. + <_> + + <_> + 0 16 24 5 -1. + <_> + 8 16 8 5 3. + <_> + + <_> + 0 20 20 3 -1. + <_> + 10 20 10 3 2. + <_> + + <_> + 5 10 18 2 -1. + <_> + 5 11 18 1 2. + <_> + + <_> + 0 6 6 10 -1. + <_> + 2 6 2 10 3. + <_> + + <_> + 2 1 20 3 -1. + <_> + 2 2 20 1 3. + <_> + + <_> + 9 13 6 11 -1. + <_> + 11 13 2 11 3. + <_> + + <_> + 9 15 6 8 -1. + <_> + 9 19 6 4 2. + <_> + + <_> + 9 12 6 9 -1. + <_> + 9 15 6 3 3. + <_> + + <_> + 5 11 18 2 -1. + <_> + 5 12 18 1 2. + <_> + + <_> + 2 6 15 6 -1. + <_> + 2 8 15 2 3. + <_> + + <_> + 6 0 18 3 -1. + <_> + 6 1 18 1 3. + <_> + + <_> + 5 0 3 18 -1. + <_> + 6 0 1 18 3. + <_> + + <_> + 18 3 6 10 -1. + <_> + 20 3 2 10 3. + <_> + + <_> + 0 3 6 10 -1. + <_> + 2 3 2 10 3. + <_> + + <_> + 10 5 8 9 -1. + <_> + 10 5 4 9 2. + <_> + + <_> + 6 5 8 9 -1. + <_> + 10 5 4 9 2. + <_> + + <_> + 3 2 20 3 -1. + <_> + 3 3 20 1 3. + <_> + + <_> + 5 2 13 4 -1. + <_> + 5 4 13 2 2. + <_> + + <_> + 17 0 7 14 -1. + <_> + 17 7 7 7 2. + <_> + + <_> + 0 0 7 14 -1. + <_> + 0 7 7 7 2. + <_> + + <_> + 9 11 10 6 -1. + <_> + 9 11 5 6 2. + <_> + + <_> + 5 11 10 6 -1. + <_> + 10 11 5 6 2. + <_> + + <_> + 11 6 3 18 -1. + <_> + 11 12 3 6 3. + <_> + + <_> + 0 16 18 3 -1. + <_> + 0 17 18 1 3. + <_> + + <_> + 6 16 18 3 -1. + <_> + 6 17 18 1 3. + <_> + + <_> + 4 6 9 10 -1. + <_> + 4 11 9 5 2. + <_> + + <_> + 9 7 15 4 -1. + <_> + 9 9 15 2 2. + <_> + + <_> + 5 6 12 6 -1. + <_> + 5 6 6 3 2. + <_> + 11 9 6 3 2. + <_> + + <_> + 6 1 12 9 -1. + <_> + 6 4 12 3 3. + <_> + + <_> + 7 9 6 12 -1. + <_> + 7 9 3 6 2. + <_> + 10 15 3 6 2. + <_> + + <_> + 11 5 13 6 -1. + <_> + 11 7 13 2 3. + <_> + + <_> + 1 11 22 13 -1. + <_> + 12 11 11 13 2. + <_> + + <_> + 18 8 6 6 -1. + <_> + 18 11 6 3 2. + <_> + + <_> + 0 8 6 6 -1. + <_> + 0 11 6 3 2. + <_> + + <_> + 0 6 24 3 -1. + <_> + 0 7 24 1 3. + <_> + + <_> + 0 5 10 6 -1. + <_> + 0 7 10 2 3. + <_> + + <_> + 6 7 18 3 -1. + <_> + 6 8 18 1 3. + <_> + + <_> + 0 0 10 6 -1. + <_> + 0 2 10 2 3. + <_> + + <_> + 19 0 3 19 -1. + <_> + 20 0 1 19 3. + <_> + + <_> + 4 6 12 16 -1. + <_> + 4 6 6 8 2. + <_> + 10 14 6 8 2. + <_> + + <_> + 19 6 4 18 -1. + <_> + 21 6 2 9 2. + <_> + 19 15 2 9 2. + <_> + + <_> + 1 6 4 18 -1. + <_> + 1 6 2 9 2. + <_> + 3 15 2 9 2. + <_> + + <_> + 3 21 18 3 -1. + <_> + 3 22 18 1 3. + <_> + + <_> + 0 19 9 4 -1. + <_> + 0 21 9 2 2. + <_> + + <_> + 12 18 12 6 -1. + <_> + 18 18 6 3 2. + <_> + 12 21 6 3 2. + <_> + + <_> + 7 18 9 4 -1. + <_> + 7 20 9 2 2. + <_> + + <_> + 12 16 10 8 -1. + <_> + 17 16 5 4 2. + <_> + 12 20 5 4 2. + <_> + + <_> + 2 16 10 8 -1. + <_> + 2 16 5 4 2. + <_> + 7 20 5 4 2. + <_> + + <_> + 14 0 10 12 -1. + <_> + 19 0 5 6 2. + <_> + 14 6 5 6 2. + <_> + + <_> + 0 0 10 12 -1. + <_> + 0 0 5 6 2. + <_> + 5 6 5 6 2. + <_> + + <_> + 15 14 9 6 -1. + <_> + 15 16 9 2 3. + <_> + + <_> + 0 14 9 6 -1. + <_> + 0 16 9 2 3. + <_> + + <_> + 14 14 10 6 -1. + <_> + 14 16 10 2 3. + <_> + + <_> + 0 14 10 6 -1. + <_> + 0 16 10 2 3. + <_> + + <_> + 5 18 18 2 -1. + <_> + 5 19 18 1 2. + <_> + + <_> + 0 18 18 3 -1. + <_> + 0 19 18 1 3. + <_> + + <_> + 3 5 18 12 -1. + <_> + 12 5 9 6 2. + <_> + 3 11 9 6 2. + <_> + + <_> + 5 3 7 9 -1. + <_> + 5 6 7 3 3. + <_> + + <_> + 4 0 19 15 -1. + <_> + 4 5 19 5 3. + <_> + + <_> + 3 0 16 4 -1. + <_> + 3 2 16 2 2. + <_> + + <_> + 4 12 16 12 -1. + <_> + 4 12 8 12 2. + <_> + + <_> + 4 3 12 15 -1. + <_> + 10 3 6 15 2. + <_> + + <_> + 16 4 2 19 -1. + <_> + 16 4 1 19 2. + <_> + + <_> + 6 4 2 19 -1. + <_> + 7 4 1 19 2. + <_> + + <_> + 13 14 8 10 -1. + <_> + 17 14 4 5 2. + <_> + 13 19 4 5 2. + <_> + + <_> + 3 14 8 10 -1. + <_> + 3 14 4 5 2. + <_> + 7 19 4 5 2. + <_> + + <_> + 12 6 3 18 -1. + <_> + 12 12 3 6 3. + <_> + + <_> + 5 11 12 6 -1. + <_> + 5 11 6 3 2. + <_> + 11 14 6 3 2. + <_> + + <_> + 10 5 8 10 -1. + <_> + 14 5 4 5 2. + <_> + 10 10 4 5 2. + <_> + + <_> + 6 4 12 10 -1. + <_> + 6 4 6 5 2. + <_> + 12 9 6 5 2. + <_> + + <_> + 6 8 18 10 -1. + <_> + 15 8 9 5 2. + <_> + 6 13 9 5 2. + <_> + + <_> + 0 8 18 10 -1. + <_> + 0 8 9 5 2. + <_> + 9 13 9 5 2. + <_> + + <_> + 12 6 3 18 -1. + <_> + 12 12 3 6 3. + <_> + + <_> + 0 14 18 3 -1. + <_> + 0 15 18 1 3. + <_> + + <_> + 12 6 3 18 -1. + <_> + 12 12 3 6 3. + <_> + + <_> + 9 6 3 18 -1. + <_> + 9 12 3 6 3. + <_> + + <_> + 6 14 18 3 -1. + <_> + 6 15 18 1 3. + <_> + + <_> + 0 5 18 3 -1. + <_> + 0 6 18 1 3. + <_> + + <_> + 2 5 22 3 -1. + <_> + 2 6 22 1 3. + <_> + + <_> + 0 0 21 10 -1. + <_> + 7 0 7 10 3. + <_> + + <_> + 6 3 18 17 -1. + <_> + 12 3 6 17 3. + <_> + + <_> + 0 3 18 17 -1. + <_> + 6 3 6 17 3. + <_> + + <_> + 0 12 24 11 -1. + <_> + 8 12 8 11 3. + <_> + + <_> + 4 10 16 6 -1. + <_> + 4 13 16 3 2. + <_> + + <_> + 12 8 6 8 -1. + <_> + 12 12 6 4 2. + <_> + + <_> + 6 14 8 7 -1. + <_> + 10 14 4 7 2. + <_> + + <_> + 15 10 6 14 -1. + <_> + 18 10 3 7 2. + <_> + 15 17 3 7 2. + <_> + + <_> + 3 10 6 14 -1. + <_> + 3 10 3 7 2. + <_> + 6 17 3 7 2. + <_> + + <_> + 6 12 18 2 -1. + <_> + 6 13 18 1 2. + <_> + + <_> + 5 8 10 6 -1. + <_> + 5 10 10 2 3. + <_> + + <_> + 12 11 9 4 -1. + <_> + 12 13 9 2 2. + <_> + + <_> + 0 11 9 6 -1. + <_> + 0 13 9 2 3. + <_> + + <_> + 11 2 3 18 -1. + <_> + 12 2 1 18 3. + <_> + + <_> + 10 2 3 18 -1. + <_> + 11 2 1 18 3. + <_> + + <_> + 9 12 6 10 -1. + <_> + 11 12 2 10 3. + <_> + + <_> + 1 10 6 9 -1. + <_> + 1 13 6 3 3. + <_> + + <_> + 6 9 16 6 -1. + <_> + 14 9 8 3 2. + <_> + 6 12 8 3 2. + <_> + + <_> + 1 8 9 6 -1. + <_> + 1 10 9 2 3. + <_> + + <_> + 7 7 16 6 -1. + <_> + 7 9 16 2 3. + <_> + + <_> + 0 0 18 3 -1. + <_> + 0 1 18 1 3. + <_> + + <_> + 10 0 6 9 -1. + <_> + 12 0 2 9 3. + <_> + + <_> + 9 5 6 6 -1. + <_> + 12 5 3 6 2. + <_> + + <_> + 10 6 4 18 -1. + <_> + 12 6 2 9 2. + <_> + 10 15 2 9 2. + <_> + + <_> + 8 0 6 9 -1. + <_> + 10 0 2 9 3. + <_> + + <_> + 9 1 6 9 -1. + <_> + 9 4 6 3 3. + <_> + + <_> + 1 0 18 9 -1. + <_> + 1 3 18 3 3. + <_> + + <_> + 0 3 24 3 -1. + <_> + 0 4 24 1 3. + <_> + + <_> + 6 14 9 4 -1. + <_> + 6 16 9 2 2. + <_> + + <_> + 8 9 8 10 -1. + <_> + 12 9 4 5 2. + <_> + 8 14 4 5 2. + <_> + + <_> + 5 2 13 9 -1. + <_> + 5 5 13 3 3. + <_> + + <_> + 4 4 16 9 -1. + <_> + 4 7 16 3 3. + <_> + + <_> + 4 4 14 9 -1. + <_> + 4 7 14 3 3. + <_> + + <_> + 8 5 9 6 -1. + <_> + 8 7 9 2 3. + <_> + + <_> + 1 7 16 6 -1. + <_> + 1 9 16 2 3. + <_> + + <_> + 10 5 13 9 -1. + <_> + 10 8 13 3 3. + <_> + + <_> + 1 5 13 9 -1. + <_> + 1 8 13 3 3. + <_> + + <_> + 0 4 24 6 -1. + <_> + 12 4 12 3 2. + <_> + 0 7 12 3 2. + <_> + + <_> + 1 14 10 9 -1. + <_> + 1 17 10 3 3. + <_> + + <_> + 5 17 18 3 -1. + <_> + 5 18 18 1 3. + <_> + + <_> + 0 16 18 3 -1. + <_> + 0 17 18 1 3. + <_> + + <_> + 9 17 9 6 -1. + <_> + 9 19 9 2 3. + <_> + + <_> + 1 20 22 4 -1. + <_> + 1 20 11 2 2. + <_> + 12 22 11 2 2. + <_> + + <_> + 8 14 8 6 -1. + <_> + 8 17 8 3 2. + <_> + + <_> + 8 6 8 15 -1. + <_> + 8 11 8 5 3. + <_> + + <_> + 5 4 18 3 -1. + <_> + 5 5 18 1 3. + <_> + + <_> + 9 3 5 10 -1. + <_> + 9 8 5 5 2. + <_> + + <_> + 6 8 12 3 -1. + <_> + 6 8 6 3 2. + <_> + + <_> + 2 6 18 6 -1. + <_> + 2 6 9 3 2. + <_> + 11 9 9 3 2. + <_> + + <_> + 10 6 4 18 -1. + <_> + 12 6 2 9 2. + <_> + 10 15 2 9 2. + <_> + + <_> + 7 5 6 6 -1. + <_> + 10 5 3 6 2. + <_> + + <_> + 14 5 2 18 -1. + <_> + 14 14 2 9 2. + <_> + + <_> + 8 5 2 18 -1. + <_> + 8 14 2 9 2. + <_> + + <_> + 9 2 10 6 -1. + <_> + 9 2 5 6 2. + <_> + + <_> + 3 1 18 12 -1. + <_> + 12 1 9 12 2. + <_> + + <_> + 5 2 17 22 -1. + <_> + 5 13 17 11 2. + <_> + + <_> + 4 0 12 6 -1. + <_> + 4 2 12 2 3. + <_> + + <_> + 6 9 16 6 -1. + <_> + 14 9 8 3 2. + <_> + 6 12 8 3 2. + <_> + + <_> + 9 0 5 18 -1. + <_> + 9 9 5 9 2. + <_> + + <_> + 12 0 6 9 -1. + <_> + 14 0 2 9 3. + <_> + + <_> + 6 0 6 9 -1. + <_> + 8 0 2 9 3. + <_> + + <_> + 9 1 6 12 -1. + <_> + 11 1 2 12 3. + <_> + + <_> + 5 9 13 4 -1. + <_> + 5 11 13 2 2. + <_> + + <_> + 5 8 19 3 -1. + <_> + 5 9 19 1 3. + <_> + + <_> + 9 9 6 8 -1. + <_> + 9 13 6 4 2. + <_> + + <_> + 11 9 4 15 -1. + <_> + 11 14 4 5 3. + <_> + + <_> + 2 0 6 14 -1. + <_> + 2 0 3 7 2. + <_> + 5 7 3 7 2. + <_> + + <_> + 15 1 6 14 -1. + <_> + 18 1 3 7 2. + <_> + 15 8 3 7 2. + <_> + + <_> + 3 1 6 14 -1. + <_> + 3 1 3 7 2. + <_> + 6 8 3 7 2. + <_> + + <_> + 3 20 18 4 -1. + <_> + 12 20 9 2 2. + <_> + 3 22 9 2 2. + <_> + + <_> + 5 0 4 20 -1. + <_> + 5 0 2 10 2. + <_> + 7 10 2 10 2. + <_> + + <_> + 16 8 8 12 -1. + <_> + 20 8 4 6 2. + <_> + 16 14 4 6 2. + <_> + + <_> + 0 8 8 12 -1. + <_> + 0 8 4 6 2. + <_> + 4 14 4 6 2. + <_> + + <_> + 13 13 10 8 -1. + <_> + 18 13 5 4 2. + <_> + 13 17 5 4 2. + <_> + + <_> + 1 13 10 8 -1. + <_> + 1 13 5 4 2. + <_> + 6 17 5 4 2. + <_> + + <_> + 15 8 4 15 -1. + <_> + 15 13 4 5 3. + <_> + + <_> + 5 8 4 15 -1. + <_> + 5 13 4 5 3. + <_> + + <_> + 6 11 16 12 -1. + <_> + 6 15 16 4 3. + <_> + + <_> + 2 11 16 12 -1. + <_> + 2 15 16 4 3. + <_> + + <_> + 14 12 7 9 -1. + <_> + 14 15 7 3 3. + <_> + + <_> + 10 1 3 21 -1. + <_> + 10 8 3 7 3. + <_> + + <_> + 13 11 9 4 -1. + <_> + 13 13 9 2 2. + <_> + + <_> + 3 10 17 9 -1. + <_> + 3 13 17 3 3. + <_> + + <_> + 13 8 8 15 -1. + <_> + 13 13 8 5 3. + <_> + + <_> + 3 8 8 15 -1. + <_> + 3 13 8 5 3. + <_> + + <_> + 11 14 10 8 -1. + <_> + 16 14 5 4 2. + <_> + 11 18 5 4 2. + <_> + + <_> + 0 18 22 6 -1. + <_> + 0 18 11 3 2. + <_> + 11 21 11 3 2. + <_> + + <_> + 0 16 24 4 -1. + <_> + 0 16 12 4 2. + <_> + + <_> + 6 20 12 3 -1. + <_> + 12 20 6 3 2. + <_> + + <_> + 18 12 6 12 -1. + <_> + 21 12 3 6 2. + <_> + 18 18 3 6 2. + <_> + + <_> + 0 12 6 12 -1. + <_> + 0 12 3 6 2. + <_> + 3 18 3 6 2. + <_> + + <_> + 15 17 9 6 -1. + <_> + 15 19 9 2 3. + <_> + + <_> + 1 6 22 10 -1. + <_> + 1 6 11 5 2. + <_> + 12 11 11 5 2. + <_> + + <_> + 15 17 9 6 -1. + <_> + 15 19 9 2 3. + <_> + + <_> + 0 18 18 2 -1. + <_> + 0 19 18 1 2. + <_> + + <_> + 3 15 19 3 -1. + <_> + 3 16 19 1 3. + <_> + + <_> + 0 13 18 3 -1. + <_> + 0 14 18 1 3. + <_> + + <_> + 15 17 9 6 -1. + <_> + 15 19 9 2 3. + <_> + + <_> + 0 17 9 6 -1. + <_> + 0 19 9 2 3. + <_> + + <_> + 12 17 9 6 -1. + <_> + 12 19 9 2 3. + <_> + + <_> + 3 17 9 6 -1. + <_> + 3 19 9 2 3. + <_> + + <_> + 16 2 3 20 -1. + <_> + 17 2 1 20 3. + <_> + + <_> + 0 13 24 8 -1. + <_> + 0 17 24 4 2. + <_> + + <_> + 9 1 6 22 -1. + <_> + 12 1 3 11 2. + <_> + 9 12 3 11 2. + diff --git a/venv/lib/python3.11/site-packages/cv2/data/haarcascade_fullbody.xml b/venv/lib/python3.11/site-packages/cv2/data/haarcascade_fullbody.xml new file mode 100644 index 0000000000000000000000000000000000000000..3ef752cb6c1f4fcc5cc37c5777f412d01e04edbc --- /dev/null +++ b/venv/lib/python3.11/site-packages/cv2/data/haarcascade_fullbody.xml @@ -0,0 +1,17030 @@ + + + +BOOST + HAAR + 28 + 14 + + 107 + + 0 + 30 + + <_> + 9 + -1.2288980484008789e+00 + + <_> + + 0 -1 0 -5.5820569396018982e-02 + + 5.8697921037673950e-01 -6.2811422348022461e-01 + <_> + + 0 -1 1 -3.8861181586980820e-02 + + -7.0916819572448730e-01 2.6821210980415344e-01 + <_> + + 0 -1 2 -2.6740878820419312e-01 + + 8.3082962036132812e-01 -2.2599589824676514e-01 + <_> + + 0 -1 3 9.6419736742973328e-02 + + -1.1697849631309509e-01 8.7254559993743896e-01 + <_> + + 0 -1 4 -1.0798710398375988e-02 + + -5.7219749689102173e-01 2.5325658917427063e-01 + <_> + + 0 -1 5 1.1365639977157116e-02 + + 1.9650830328464508e-01 -7.2744637727737427e-01 + <_> + + 0 -1 6 -5.0216919044032693e-04 + + 2.4435159564018250e-01 -5.1973581314086914e-01 + <_> + + 0 -1 7 -2.8462480753660202e-02 + + -8.3607292175292969e-01 1.1158040165901184e-01 + <_> + + 0 -1 8 1.3473170110955834e-03 + + -3.8406538963317871e-01 2.6767989993095398e-01 + <_> + 15 + -1.0969949960708618e+00 + + <_> + + 0 -1 9 -1.0743220336735249e-02 + + 4.7747328877449036e-01 -6.2392932176589966e-01 + <_> + + 0 -1 10 -1.3188569573685527e-03 + + 2.1242660284042358e-01 -2.4162709712982178e-01 + <_> + + 0 -1 11 -5.5571161210536957e-03 + + 3.6147859692573547e-01 -3.7251719832420349e-01 + <_> + + 0 -1 12 -1.3893410563468933e-01 + + -6.7900502681732178e-01 1.1280310153961182e-01 + <_> + + 0 -1 13 2.6465829461812973e-02 + + 1.2474969774484634e-01 -8.2852339744567871e-01 + <_> + + 0 -1 14 -8.9386843144893646e-02 + + 7.4271762371063232e-01 -1.7019319534301758e-01 + <_> + + 0 -1 15 -2.1335419267416000e-02 + + -7.1750187873840332e-01 1.5566180646419525e-01 + <_> + + 0 -1 16 5.5709101259708405e-02 + + -1.5310040116310120e-01 7.1804767847061157e-01 + <_> + + 0 -1 17 -6.9709950685501099e-01 + + 8.1154191493988037e-01 -1.0886389762163162e-01 + <_> + + 0 -1 18 2.0205999910831451e-01 + + 7.6398417353630066e-02 -7.3011511564254761e-01 + <_> + + 0 -1 19 -7.1882657706737518e-02 + + -7.1488589048385620e-01 1.6517649590969086e-01 + <_> + + 0 -1 20 -1.9228760153055191e-02 + + -3.9868369698524475e-01 4.0557239204645157e-02 + <_> + + 0 -1 21 1.1500229593366385e-03 + + -3.8260778784751892e-01 3.1855079531669617e-01 + <_> + + 0 -1 22 2.3252779617905617e-02 + + 5.4390400648117065e-02 -7.0669990777969360e-01 + <_> + + 0 -1 23 -3.2618120894767344e-04 + + 2.2610600292682648e-01 -4.0709879994392395e-01 + <_> + 14 + -1.2285970449447632e+00 + + <_> + + 0 -1 24 -1.2910200655460358e-01 + + 7.6003128290176392e-01 -2.3405790328979492e-01 + <_> + + 0 -1 25 6.7449256777763367e-02 + + 1.7179529368877411e-01 -8.4364777803421021e-01 + <_> + + 0 -1 26 1.2663270346820354e-02 + + 2.2913210093975067e-01 -7.3072457313537598e-01 + <_> + + 0 -1 27 -4.2741331271827221e-03 + + 6.2420479953289032e-02 -4.0985938906669617e-01 + <_> + + 0 -1 28 -2.3143950849771500e-02 + + -8.3971828222274780e-01 2.0115749537944794e-01 + <_> + + 0 -1 29 -5.5371038615703583e-04 + + 1.5369419753551483e-01 -4.4038110971450806e-01 + <_> + + 0 -1 30 -9.5239803194999695e-03 + + -6.3186800479888916e-01 1.6250230371952057e-01 + <_> + + 0 -1 31 2.8307670727372169e-02 + + -7.2599969804286957e-02 3.7919989228248596e-01 + <_> + + 0 -1 32 -4.5148018747568130e-02 + + 7.4493628740310669e-01 -1.5581710636615753e-01 + <_> + + 0 -1 33 1.0014739632606506e-01 + + 1.7949639260768890e-01 -6.4644080400466919e-01 + <_> + + 0 -1 34 7.3245721869170666e-03 + + 1.7763899266719818e-01 -5.7654058933258057e-01 + <_> + + 0 -1 35 1.1875670403242111e-02 + + -3.1129720807075500e-01 1.6321399807929993e-01 + <_> + + 0 -1 36 -2.5479039177298546e-02 + + 6.2692481279373169e-01 -1.1333750188350677e-01 + <_> + + 0 -1 37 -7.9196523874998093e-03 + + -7.7624428272247314e-01 1.5427610278129578e-01 + <_> + 22 + -1.1200269460678101e+00 + + <_> + + 0 -1 38 -8.5809278488159180e-01 + + 7.8796839714050293e-01 -2.2135549783706665e-01 + <_> + + 0 -1 39 -1.6491119749844074e-03 + + 2.5673401355743408e-01 -4.3194240331649780e-01 + <_> + + 0 -1 40 -2.5882309302687645e-02 + + -8.7551230192184448e-01 8.8385626673698425e-02 + <_> + + 0 -1 41 -4.7666151076555252e-03 + + -4.7022369503974915e-01 2.2800800204277039e-01 + <_> + + 0 -1 42 -8.3729699254035950e-02 + + 6.3385730981826782e-01 -1.4888319373130798e-01 + <_> + + 0 -1 43 -4.0685739368200302e-02 + + -9.3931788206100464e-01 1.0598939843475819e-02 + <_> + + 0 -1 44 -5.0759920850396156e-03 + + -4.5554420351982117e-01 1.7864370346069336e-01 + <_> + + 0 -1 45 2.3427829146385193e-03 + + -2.1434280276298523e-01 1.5531420707702637e-01 + <_> + + 0 -1 46 2.7649151161313057e-04 + + -3.3348160982131958e-01 2.2780239582061768e-01 + <_> + + 0 -1 47 1.6941839829087257e-02 + + 7.4140816926956177e-02 -5.6262052059173584e-01 + <_> + + 0 -1 48 4.7558981180191040e-01 + + -1.0861130058765411e-01 8.2985258102416992e-01 + <_> + + 0 -1 49 5.8000627905130386e-03 + + 1.3249030709266663e-01 -5.1620399951934814e-01 + <_> + + 0 -1 50 -7.4477560818195343e-02 + + -5.5545568466186523e-01 1.2344320118427277e-01 + <_> + + 0 -1 51 -3.5143009154126048e-04 + + 6.8190753459930420e-02 -1.3616859912872314e-01 + <_> + + 0 -1 52 7.3454021476209164e-03 + + 1.3678510487079620e-01 -5.3645122051239014e-01 + <_> + + 0 -1 53 -1.5471279621124268e-02 + + 2.6180639863014221e-01 -1.0545810312032700e-01 + <_> + + 0 -1 54 5.6055500172078609e-03 + + -2.5746351480484009e-01 2.8795930743217468e-01 + <_> + + 0 -1 55 -2.4552858667448163e-04 + + 1.0099930316209793e-01 -2.6119679212570190e-01 + <_> + + 0 -1 56 -3.3138900995254517e-02 + + -8.3779567480087280e-01 1.1327689886093140e-01 + <_> + + 0 -1 57 3.5591889172792435e-02 + + 8.2336090505123138e-02 -6.2505662441253662e-01 + <_> + + 0 -1 58 2.0834030210971832e-01 + + 6.9524437189102173e-02 -8.6881148815155029e-01 + <_> + + 0 -1 59 -2.8165400028228760e-02 + + -5.9799849987030029e-01 8.0329902470111847e-02 + <_> + 25 + -1.0664960145950317e+00 + + <_> + + 0 -1 60 -2.6740709319710732e-02 + + 3.8912421464920044e-01 -4.9827679991722107e-01 + <_> + + 0 -1 61 -1.2516999850049615e-03 + + 1.3123430311679840e-01 -3.6368998885154724e-01 + <_> + + 0 -1 62 -4.1634511202573776e-02 + + 5.7444751262664795e-01 -1.3932879269123077e-01 + <_> + + 0 -1 63 1.0096579790115356e-02 + + 9.9073797464370728e-02 -2.2956989705562592e-01 + <_> + + 0 -1 64 -1.9090399146080017e-02 + + -5.5153107643127441e-01 1.5110069513320923e-01 + <_> + + 0 -1 65 -3.1481068581342697e-02 + + -4.5884269475936890e-01 1.7579549551010132e-01 + <_> + + 0 -1 66 -1.7687549814581871e-02 + + 4.4711831212043762e-01 -1.5292930603027344e-01 + <_> + + 0 -1 67 -4.3685659766197205e-03 + + 1.2185490131378174e-01 -1.6688570380210876e-01 + <_> + + 0 -1 68 8.9326845481991768e-03 + + -1.3333690166473389e-01 6.3753342628479004e-01 + <_> + + 0 -1 69 -5.0706309266388416e-03 + + -1.1220289766788483e-01 6.9824352860450745e-02 + <_> + + 0 -1 70 -5.9803090989589691e-03 + + -5.1842898130416870e-01 1.6099199652671814e-01 + <_> + + 0 -1 71 2.9967839363962412e-03 + + 4.1065338999032974e-02 -1.9455850124359131e-01 + <_> + + 0 -1 72 3.8641549181193113e-03 + + 1.6673240065574646e-01 -4.3569779396057129e-01 + <_> + + 0 -1 73 6.8349428474903107e-03 + + -1.7162640392780304e-01 1.4818060398101807e-01 + <_> + + 0 -1 74 4.3158490210771561e-02 + + 8.3203509449958801e-02 -7.7821850776672363e-01 + <_> + + 0 -1 75 7.6560080051422119e-03 + + 8.4740802645683289e-02 -4.9738150835037231e-01 + <_> + + 0 -1 76 -3.1110988929867744e-03 + + 2.5827148556709290e-01 -2.5552031397819519e-01 + <_> + + 0 -1 77 1.1870309710502625e-01 + + -9.0944238007068634e-02 7.2286212444305420e-01 + <_> + + 0 -1 78 1.6875969246029854e-02 + + 1.2629170715808868e-01 -5.5205297470092773e-01 + <_> + + 0 -1 79 -1.0887029930017889e-04 + + 8.1648796796798706e-02 -1.6937020421028137e-01 + <_> + + 0 -1 80 2.8222990222275257e-03 + + 1.6411300003528595e-01 -3.5218268632888794e-01 + <_> + + 0 -1 81 -5.2425849437713623e-01 + + 4.8906171321868896e-01 -1.2674759328365326e-01 + <_> + + 0 -1 82 3.6927509307861328e-01 + + 8.6115993559360504e-02 -6.7184638977050781e-01 + <_> + + 0 -1 83 -1.6883780062198639e-01 + + -8.4915691614151001e-01 5.4833348840475082e-02 + <_> + + 0 -1 84 -1.9279260188341141e-02 + + -7.8011512756347656e-01 6.2202680855989456e-02 + <_> + 22 + -1.2319500446319580e+00 + + <_> + + 0 -1 85 -2.0901350677013397e-01 + + 6.9808167219161987e-01 -3.4573590755462646e-01 + <_> + + 0 -1 86 -4.8061009147204459e-04 + + 2.0923900604248047e-01 -2.4147640168666840e-01 + <_> + + 0 -1 87 -2.4844119325280190e-03 + + 2.7636009454727173e-01 -4.1990399360656738e-01 + <_> + + 0 -1 88 -2.1536289714276791e-03 + + 2.4710460007190704e-01 -3.0677899718284607e-01 + <_> + + 0 -1 89 5.8911990374326706e-02 + + -7.0834763348102570e-02 7.1133142709732056e-01 + <_> + + 0 -1 90 -2.3095219512470067e-04 + + 1.7148600518703461e-01 -3.6168378591537476e-01 + <_> + + 0 -1 91 -3.1396400183439255e-02 + + -8.0131882429122925e-01 1.0042560100555420e-01 + <_> + + 0 -1 92 -3.5601970739662647e-03 + + 9.9432766437530518e-02 -1.4848260581493378e-01 + <_> + + 0 -1 93 -4.3389322236180305e-03 + + -5.6621241569519043e-01 1.4096799492835999e-01 + <_> + + 0 -1 94 2.1326710283756256e-01 + + 4.8158209770917892e-02 -7.4858909845352173e-01 + <_> + + 0 -1 95 1.0042529553174973e-02 + + 1.0428400337696075e-01 -5.5387377738952637e-01 + <_> + + 0 -1 96 -2.6825280860066414e-02 + + 5.7281607389450073e-01 -8.2537978887557983e-02 + <_> + + 0 -1 97 8.3760882262140512e-04 + + -2.5626900792121887e-01 2.5898420810699463e-01 + <_> + + 0 -1 98 -7.6051978394389153e-03 + + -5.8677357435226440e-01 5.1210779696702957e-02 + <_> + + 0 -1 99 -1.1935640126466751e-01 + + -4.5530828833580017e-01 1.2570330500602722e-01 + <_> + + 0 -1 100 6.6083478741347790e-03 + + -1.6316379606723785e-01 4.6659541130065918e-01 + <_> + + 0 -1 101 1.7303509637713432e-02 + + -1.2391400337219238e-01 5.9755408763885498e-01 + <_> + + 0 -1 102 5.4382272064685822e-03 + + 1.3838729262351990e-01 -5.5069202184677124e-01 + <_> + + 0 -1 103 2.4591449182480574e-03 + + -3.9927339553833008e-01 1.5387089550495148e-01 + <_> + + 0 -1 104 3.5056238994002342e-03 + + -1.6146700084209442e-01 1.6086600720882416e-01 + <_> + + 0 -1 105 -2.3172689543571323e-04 + + 1.7059360444545746e-01 -3.5409420728683472e-01 + <_> + + 0 -1 106 1.1914529837667942e-02 + + 1.6265639662742615e-01 -4.1463181376457214e-01 + <_> + 18 + -1.1912549734115601e+00 + + <_> + + 0 -1 107 -4.5429700985550880e-03 + + 4.2964971065521240e-01 -5.6915849447250366e-01 + <_> + + 0 -1 108 4.6804840676486492e-03 + + -1.0380080342292786e-01 2.5453719496726990e-01 + <_> + + 0 -1 109 3.5870380233973265e-03 + + -3.6577078700065613e-01 3.9343339204788208e-01 + <_> + + 0 -1 110 -3.4428331255912781e-01 + + 7.3125761747360229e-01 -1.5060240030288696e-01 + <_> + + 0 -1 111 3.3054459840059280e-02 + + 1.7657589912414551e-01 -5.1060509681701660e-01 + <_> + + 0 -1 112 -2.1190310362726450e-03 + + 8.6859323084354401e-02 -1.7733760178089142e-01 + <_> + + 0 -1 113 1.3780740089714527e-02 + + -1.2247169762849808e-01 6.6472941637039185e-01 + <_> + + 0 -1 114 2.4847950786352158e-02 + + 2.3976799845695496e-01 -3.2456618547439575e-01 + <_> + + 0 -1 115 -1.3126630336046219e-02 + + 4.9461808800697327e-01 -2.0954379439353943e-01 + <_> + + 0 -1 116 -1.6886189579963684e-02 + + -1.3973990082740784e-01 7.5013160705566406e-02 + <_> + + 0 -1 117 -5.2776751108467579e-03 + + -3.8919359445571899e-01 1.8921519815921783e-01 + <_> + + 0 -1 118 -2.0325549412518740e-03 + + 2.4965450167655945e-01 -1.7960360646247864e-01 + <_> + + 0 -1 119 -1.8056800588965416e-02 + + -5.3683072328567505e-01 1.0615479946136475e-01 + <_> + + 0 -1 120 -2.8815109282732010e-02 + + 5.3303200006484985e-01 -7.8712686896324158e-02 + <_> + + 0 -1 121 -6.0971658676862717e-02 + + -8.5663092136383057e-01 8.1721447408199310e-02 + <_> + + 0 -1 122 -6.2022160738706589e-02 + + -6.7228960990905762e-01 8.2316987216472626e-02 + <_> + + 0 -1 123 -6.2961759977042675e-03 + + 2.7192309498786926e-01 -2.3713490366935730e-01 + <_> + + 0 -1 124 4.9608140252530575e-03 + + -1.4295519888401031e-01 2.9380369186401367e-01 + <_> + 30 + -1.1750839948654175e+00 + + <_> + + 0 -1 125 -8.7001353502273560e-02 + + 6.3087427616119385e-01 -2.6264131069183350e-01 + <_> + + 0 -1 126 -4.5627020299434662e-03 + + 1.4641839265823364e-01 -5.2321881055831909e-02 + <_> + + 0 -1 127 -4.1381991468369961e-03 + + 2.1747599542140961e-01 -3.2107940316200256e-01 + <_> + + 0 -1 128 -1.9443330529611558e-04 + + 1.4305000007152557e-01 -4.4748461246490479e-01 + <_> + + 0 -1 129 -2.6125069707632065e-03 + + -3.5936230421066284e-01 2.0934499800205231e-01 + <_> + + 0 -1 130 -3.5238351672887802e-02 + + -5.5879557132720947e-01 1.1818339675664902e-01 + <_> + + 0 -1 131 2.3880550637841225e-02 + + -1.2345419824123383e-01 6.4505738019943237e-01 + <_> + + 0 -1 132 -3.5878319758921862e-03 + + 2.3340910673141479e-01 -2.9905730485916138e-01 + <_> + + 0 -1 133 -3.4388148784637451e-01 + + 6.3334107398986816e-01 -8.6101479828357697e-02 + <_> + + 0 -1 134 -2.5634190533310175e-03 + + -3.0992001295089722e-01 8.8213436305522919e-02 + <_> + + 0 -1 135 4.7002349048852921e-02 + + 7.3533393442630768e-02 -7.5965261459350586e-01 + <_> + + 0 -1 136 7.1428148075938225e-03 + + -1.6981430351734161e-01 4.1982281208038330e-01 + <_> + + 0 -1 137 -3.7736629601567984e-03 + + -5.5664837360382080e-01 1.0060050338506699e-01 + <_> + + 0 -1 138 2.2179849445819855e-02 + + -7.6009899377822876e-02 6.3711041212081909e-01 + <_> + + 0 -1 139 2.9807379178237170e-05 + + -2.7143061161041260e-01 2.1503789722919464e-01 + <_> + + 0 -1 140 -1.4308329809864517e-05 + + 1.3090610504150391e-01 -2.8089499473571777e-01 + <_> + + 0 -1 141 -1.1500260233879089e-01 + + -7.1986222267150879e-01 7.6884172856807709e-02 + <_> + + 0 -1 142 -2.5318590924143791e-02 + + 4.5250499248504639e-01 -9.0481691062450409e-02 + <_> + + 0 -1 143 -4.8698320984840393e-02 + + -7.4177128076553345e-01 6.7692406475543976e-02 + <_> + + 0 -1 144 -5.0045289099216461e-03 + + 1.3680170476436615e-01 -1.1860919743776321e-01 + <_> + + 0 -1 145 7.5120502151548862e-03 + + 9.1260991990566254e-02 -5.6960678100585938e-01 + <_> + + 0 -1 146 -5.4631778039038181e-03 + + 1.1702360212802887e-01 -1.4761230349540710e-01 + <_> + + 0 -1 147 1.5256009995937347e-02 + + -1.0768359899520874e-01 6.4716261625289917e-01 + <_> + + 0 -1 148 -2.1900620311498642e-02 + + -6.0776418447494507e-01 6.4449213445186615e-02 + <_> + + 0 -1 149 2.1267218980938196e-03 + + -2.3115469515323639e-01 2.1813300251960754e-01 + <_> + + 0 -1 150 -3.1501919031143188e-02 + + -1.3678109645843506e-01 6.6003270447254181e-02 + <_> + + 0 -1 151 1.8107969313859940e-02 + + 1.0865720361471176e-01 -4.4673460721969604e-01 + <_> + + 0 -1 152 -1.1059570312500000e-01 + + 4.6954178810119629e-01 -1.1268380284309387e-01 + <_> + + 0 -1 153 2.2349569480866194e-03 + + -2.9884970188140869e-01 1.8147529661655426e-01 + <_> + + 0 -1 154 4.6504188328981400e-02 + + 1.2846769392490387e-01 -2.6609849929809570e-01 + <_> + 27 + -1.1861419677734375e+00 + + <_> + + 0 -1 155 -4.8820599913597107e-02 + + 4.2807990312576294e-01 -5.5154949426651001e-01 + <_> + + 0 -1 156 1.4779040357097983e-03 + + -1.8688060343265533e-01 1.9038289785385132e-01 + <_> + + 0 -1 157 -1.0012290440499783e-02 + + 3.8451421260833740e-01 -2.1723049879074097e-01 + <_> + + 0 -1 158 -5.1000278443098068e-02 + + -7.6136952638626099e-01 1.3625900261104107e-02 + <_> + + 0 -1 159 5.2959132008254528e-03 + + -2.3021429777145386e-01 2.8536239266395569e-01 + <_> + + 0 -1 160 -4.8654139041900635e-02 + + 7.0992070436477661e-01 -4.9203149974346161e-02 + <_> + + 0 -1 161 8.8448636233806610e-03 + + -3.1505361199378967e-01 2.0899020135402679e-01 + <_> + + 0 -1 162 1.0062800347805023e-01 + + 6.6908989101648331e-03 6.7013871669769287e-01 + <_> + + 0 -1 163 -7.0256260223686695e-03 + + -3.9408329129219055e-01 1.7433549463748932e-01 + <_> + + 0 -1 164 -2.1224319934844971e-03 + + 1.6996310651302338e-01 -3.0237409472465515e-01 + <_> + + 0 -1 165 9.9532064050436020e-03 + + -1.4202840626239777e-01 4.5167461037635803e-01 + <_> + + 0 -1 166 1.2565069831907749e-02 + + 7.3175877332687378e-02 -6.1700421571731567e-01 + <_> + + 0 -1 167 -1.7854310572147369e-03 + + 1.4909860491752625e-01 -3.2865241169929504e-01 + <_> + + 0 -1 168 -4.0306518785655499e-03 + + -4.5713710784912109e-01 1.0815720260143280e-01 + <_> + + 0 -1 169 -7.3099560104310513e-03 + + -6.5592771768569946e-01 6.5615788102149963e-02 + <_> + + 0 -1 170 -3.3843431621789932e-02 + + 5.0412368774414062e-01 -6.1626069247722626e-02 + <_> + + 0 -1 171 3.8319290615618229e-04 + + -2.5153478980064392e-01 2.0271340012550354e-01 + <_> + + 0 -1 172 -2.6169361080974340e-03 + + 2.2497959434986115e-01 -2.1958619356155396e-01 + <_> + + 0 -1 173 -4.5606079511344433e-03 + + -4.6598041057586670e-01 1.2348009645938873e-01 + <_> + + 0 -1 174 1.0822789743542671e-02 + + -9.6618972718715668e-02 4.6412429213523865e-01 + <_> + + 0 -1 175 -5.3171347826719284e-03 + + -5.5634248256683350e-01 9.4623282551765442e-02 + <_> + + 0 -1 176 -9.3140971148386598e-04 + + 1.0143929719924927e-01 -1.0564240068197250e-01 + <_> + + 0 -1 177 8.4296840941533446e-04 + + -1.3243100047111511e-01 3.5351079702377319e-01 + <_> + + 0 -1 178 -2.7806960046291351e-02 + + -6.5050601959228516e-01 3.3153589814901352e-02 + <_> + + 0 -1 179 6.9245469057932496e-04 + + -2.6702880859375000e-01 2.1129630506038666e-01 + <_> + + 0 -1 180 -1.2787230312824249e-02 + + 2.1593640744686127e-01 -8.6767077445983887e-02 + <_> + + 0 -1 181 -6.1678601196035743e-04 + + 1.6959980130195618e-01 -2.9248940944671631e-01 + <_> + 21 + -1.0550270080566406e+00 + + <_> + + 0 -1 182 -5.1706928759813309e-02 + + 4.6942698955535889e-01 -5.1280671358108521e-01 + <_> + + 0 -1 183 5.5232150480151176e-03 + + -2.4982389807701111e-01 6.3005810976028442e-01 + <_> + + 0 -1 184 -9.2110745608806610e-03 + + 3.7530669569969177e-01 -2.2910380363464355e-01 + <_> + + 0 -1 185 4.1729960590600967e-02 + + -1.1262010037899017e-01 6.7508697509765625e-01 + <_> + + 0 -1 186 4.5255841687321663e-03 + + -2.6939728856086731e-01 2.4889509379863739e-01 + <_> + + 0 -1 187 -8.5208792006596923e-04 + + 2.0098550617694855e-01 -2.3001730442047119e-01 + <_> + + 0 -1 188 -3.4569639246910810e-03 + + -3.6372348666191101e-01 2.7142500877380371e-01 + <_> + + 0 -1 189 -8.8200360536575317e-02 + + -7.5951957702636719e-01 -7.2166309691965580e-03 + <_> + + 0 -1 190 -2.3253160179592669e-04 + + 1.4738219976425171e-01 -4.2548701167106628e-01 + <_> + + 0 -1 191 1.9258400425314903e-02 + + -8.4830872714519501e-02 5.9487771987915039e-01 + <_> + + 0 -1 192 -3.1915740109980106e-03 + + -4.2638280987739563e-01 1.3357159495353699e-01 + <_> + + 0 -1 193 -2.2229040041565895e-02 + + -4.2298269271850586e-01 3.6127958446741104e-02 + <_> + + 0 -1 194 -5.3123440593481064e-03 + + 2.9349780082702637e-01 -2.2197869420051575e-01 + <_> + + 0 -1 195 5.6796981953084469e-03 + + 8.0412790179252625e-02 -1.9725289940834045e-01 + <_> + + 0 -1 196 3.2511178869754076e-03 + + -1.6628390550613403e-01 3.3107280731201172e-01 + <_> + + 0 -1 197 2.5559039786458015e-03 + + 6.7350171506404877e-02 -2.4642370641231537e-01 + <_> + + 0 -1 198 3.1239999458193779e-02 + + -6.7393511533737183e-02 8.2851767539978027e-01 + <_> + + 0 -1 199 -4.4333371333777905e-03 + + -3.8048321008682251e-01 1.4248619973659515e-01 + <_> + + 0 -1 200 -3.9497618563473225e-03 + + -3.5660448670387268e-01 1.8685440719127655e-01 + <_> + + 0 -1 201 -1.4043290168046951e-02 + + 5.3222888708114624e-01 -7.8980803489685059e-02 + <_> + + 0 -1 202 4.2212791740894318e-03 + + -1.9841830432415009e-01 3.1367298960685730e-01 + <_> + 43 + -1.1214250326156616e+00 + + <_> + + 0 -1 203 -1.5278789401054382e-01 + + 5.4140037298202515e-01 -1.8756979703903198e-01 + <_> + + 0 -1 204 -7.0655636489391327e-02 + + 3.4003350138664246e-01 -1.4459669589996338e-01 + <_> + + 0 -1 205 -2.1033229306340218e-02 + + -5.5878472328186035e-01 1.1598149687051773e-01 + <_> + + 0 -1 206 -9.5666358247399330e-03 + + 1.0890080034732819e-01 -2.0365689694881439e-01 + <_> + + 0 -1 207 -4.2720541357994080e-02 + + -9.4030022621154785e-01 6.3606321811676025e-02 + <_> + + 0 -1 208 -4.5477859675884247e-03 + + 3.4227019548416138e-01 -1.7053720355033875e-01 + <_> + + 0 -1 209 3.7029080558568239e-03 + + 8.3720892667770386e-02 -4.6139541268348694e-01 + <_> + + 0 -1 210 -1.1458870023488998e-01 + + 6.0027849674224854e-01 -1.7764480784535408e-02 + <_> + + 0 -1 211 5.7319342158734798e-03 + + -2.5590109825134277e-01 2.0062319934368134e-01 + <_> + + 0 -1 212 -7.0237793028354645e-02 + + 2.5359788537025452e-01 -2.9503619298338890e-02 + <_> + + 0 -1 213 1.3983179815113544e-02 + + 1.1456400156021118e-01 -3.9683538675308228e-01 + <_> + + 0 -1 214 1.8175759911537170e-01 + + 5.0749950110912323e-02 -8.3061927556991577e-01 + <_> + + 0 -1 215 3.0185490846633911e-02 + + -2.6683610677719116e-01 1.4070799946784973e-01 + <_> + + 0 -1 216 7.5633287429809570e-01 + + -4.1416618973016739e-02 9.0957278013229370e-01 + <_> + + 0 -1 217 -8.5228988900780678e-03 + + 1.6142499446868896e-01 -2.7549099922180176e-01 + <_> + + 0 -1 218 -4.9996669404208660e-03 + + -1.1666730046272278e-01 6.0298819094896317e-02 + <_> + + 0 -1 219 -5.9932802105322480e-04 + + 1.3015550374984741e-01 -3.1072840094566345e-01 + <_> + + 0 -1 220 -9.6063673496246338e-02 + + -8.5259348154067993e-01 1.5970790758728981e-02 + <_> + + 0 -1 221 -7.0154820568859577e-03 + + -4.5490509271621704e-01 7.7178090810775757e-02 + <_> + + 0 -1 222 -8.7620541453361511e-03 + + 4.8034501075744629e-01 -8.1306837499141693e-02 + <_> + + 0 -1 223 -3.9868508465588093e-03 + + 2.2495600581169128e-01 -2.0447289943695068e-01 + <_> + + 0 -1 224 -5.7335309684276581e-02 + + -5.6859737634658813e-01 5.2798101678490639e-03 + <_> + + 0 -1 225 1.9260890549048781e-03 + + 1.4920340478420258e-01 -3.1059908866882324e-01 + <_> + + 0 -1 226 2.1118070930242538e-02 + + 4.1174301877617836e-03 -5.2401381731033325e-01 + <_> + + 0 -1 227 -1.1973599903285503e-03 + + 2.3353399336338043e-01 -2.0193660259246826e-01 + <_> + + 0 -1 228 4.5973812229931355e-03 + + 5.9917010366916656e-02 -1.1878310143947601e-01 + <_> + + 0 -1 229 2.8869660571217537e-02 + + -9.4110779464244843e-02 4.5966941118240356e-01 + <_> + + 0 -1 230 -3.7549799308180809e-03 + + 1.2161179631948471e-01 -1.4811019599437714e-01 + <_> + + 0 -1 231 4.2033549398183823e-03 + + 1.0903070122003555e-01 -3.8700520992279053e-01 + <_> + + 0 -1 232 7.2994068264961243e-02 + + -3.4046798944473267e-02 3.0610039830207825e-01 + <_> + + 0 -1 233 1.6667179763317108e-02 + + 1.3168589770793915e-01 -3.8485860824584961e-01 + <_> + + 0 -1 234 -2.8268690221011639e-03 + + 6.4782157540321350e-02 -2.2371709346771240e-01 + <_> + + 0 -1 235 3.7736070808023214e-03 + + -1.5592969954013824e-01 2.5413069128990173e-01 + <_> + + 0 -1 236 -3.6936940159648657e-03 + + 2.5576528906822205e-01 -1.5768060088157654e-01 + <_> + + 0 -1 237 -6.6801063716411591e-02 + + -7.4346089363098145e-01 5.4915640503168106e-02 + <_> + + 0 -1 238 1.5752790495753288e-02 + + -9.8638102412223816e-02 4.3119820952415466e-01 + <_> + + 0 -1 239 9.0647127944976091e-04 + + 1.1339239776134491e-01 -4.1574460268020630e-01 + <_> + + 0 -1 240 -2.1695699542760849e-02 + + 4.6949240565299988e-01 -5.5732611566781998e-02 + <_> + + 0 -1 241 -1.4639029977843165e-03 + + -3.0617880821228027e-01 1.4398169517517090e-01 + <_> + + 0 -1 242 -1.7810560762882233e-02 + + 3.0411729216575623e-01 -4.6758800745010376e-02 + <_> + + 0 -1 243 -5.6027648970484734e-03 + + -5.2942901849746704e-01 7.8287117183208466e-02 + <_> + + 0 -1 244 1.9500569906085730e-03 + + -9.5949448645114899e-02 1.9031670689582825e-01 + <_> + + 0 -1 245 1.0641569644212723e-01 + + 4.7288440167903900e-02 -8.6525350809097290e-01 + <_> + 21 + -1.1566660404205322e+00 + + <_> + + 0 -1 246 1.8256990239024162e-02 + + -5.5564939975738525e-01 4.3546560406684875e-01 + <_> + + 0 -1 247 -1.1249440163373947e-01 + + 6.1800277233123779e-01 -2.1641810238361359e-01 + <_> + + 0 -1 248 2.0443440880626440e-03 + + -3.1379559636116028e-01 2.6424890756607056e-01 + <_> + + 0 -1 249 6.2505697133019567e-04 + + -2.3659600317478180e-01 2.1169990301132202e-01 + <_> + + 0 -1 250 1.3297300320118666e-03 + + -3.1339448690414429e-01 3.0449068546295166e-01 + <_> + + 0 -1 251 -4.6840369701385498e-02 + + 5.3759092092514038e-01 -1.8081139773130417e-02 + <_> + + 0 -1 252 -6.4874291419982910e-01 + + 6.6768437623977661e-01 -9.1247849166393280e-02 + <_> + + 0 -1 253 9.6183530986309052e-03 + + 1.4733779430389404e-01 -3.2193028926849365e-01 + <_> + + 0 -1 254 2.2117879707366228e-03 + + 1.5755419433116913e-01 -3.6799180507659912e-01 + <_> + + 0 -1 255 4.9280291423201561e-03 + + -8.3405740559101105e-02 6.8260177969932556e-02 + <_> + + 0 -1 256 1.3977079652249813e-02 + + -1.0702060163021088e-01 4.8326531052589417e-01 + <_> + + 0 -1 257 -1.0333389946026728e-04 + + 1.3645449280738831e-01 -3.1777021288871765e-01 + <_> + + 0 -1 258 -2.2287340834736824e-03 + + 2.1791179478168488e-01 -1.9923299551010132e-01 + <_> + + 0 -1 259 -3.2301511615514755e-02 + + 3.3135131001472473e-01 -2.0617039874196053e-02 + <_> + + 0 -1 260 2.3240039125084877e-02 + + 5.9672571718692780e-02 -6.4993959665298462e-01 + <_> + + 0 -1 261 3.5599120892584324e-03 + + -1.4818920195102692e-01 2.9893338680267334e-01 + <_> + + 0 -1 262 1.5469759702682495e-02 + + -7.5569599866867065e-02 5.2314680814743042e-01 + <_> + + 0 -1 263 -1.6372289974242449e-04 + + 1.0446730256080627e-01 -2.0943340659141541e-01 + <_> + + 0 -1 264 -2.9369019903242588e-03 + + -4.3197739124298096e-01 1.0765810310840607e-01 + <_> + + 0 -1 265 -7.8579207183793187e-04 + + -2.4614779651165009e-01 2.1554739773273468e-01 + <_> + + 0 -1 266 1.1156699620187283e-02 + + -8.1820882856845856e-02 6.7338067293167114e-01 + <_> + 49 + -1.0953630208969116e+00 + + <_> + + 0 -1 267 -1.8473519384860992e-01 + + 5.4758828878402710e-01 -2.2319069504737854e-01 + <_> + + 0 -1 268 -2.8615030460059643e-03 + + 1.9264279305934906e-01 -2.2989100217819214e-01 + <_> + + 0 -1 269 1.7970189452171326e-01 + + -6.4573682844638824e-02 8.0322009325027466e-01 + <_> + + 0 -1 270 -5.2812729030847549e-02 + + 2.8784981369972229e-01 -8.8289387524127960e-02 + <_> + + 0 -1 271 6.9000339135527611e-03 + + 1.0979209840297699e-01 -4.8886889219284058e-01 + <_> + + 0 -1 272 4.0469530969858170e-02 + + 6.1697468161582947e-02 -7.2907817363739014e-01 + <_> + + 0 -1 273 4.5191249810159206e-03 + + -2.7972379326820374e-01 1.7065159976482391e-01 + <_> + + 0 -1 274 -3.8400939665734768e-03 + + -2.8329300880432129e-01 1.1611709743738174e-01 + <_> + + 0 -1 275 -7.1505218511447310e-04 + + 1.5870480239391327e-01 -2.8253421187400818e-01 + <_> + + 0 -1 276 3.0127899721264839e-02 + + -3.6236338317394257e-02 5.3369390964508057e-01 + <_> + + 0 -1 277 -1.9907640293240547e-02 + + -3.2229989767074585e-01 1.4933170378208160e-01 + <_> + + 0 -1 278 -3.1435668468475342e-02 + + 2.0812889933586121e-01 -9.6762210130691528e-02 + <_> + + 0 -1 279 -1.9912680611014366e-02 + + -3.2928928732872009e-01 1.2732729315757751e-01 + <_> + + 0 -1 280 4.0626749396324158e-02 + + 1.6985720023512840e-02 -5.2226179838180542e-01 + <_> + + 0 -1 281 1.6589110018685460e-03 + + -2.3795670270919800e-01 2.0775599777698517e-01 + <_> + + 0 -1 282 1.9869199022650719e-03 + + -1.3493759930133820e-01 1.2050859630107880e-01 + <_> + + 0 -1 283 -4.1985820978879929e-02 + + 4.4601130485534668e-01 -7.6145969331264496e-02 + <_> + + 0 -1 284 7.0260182023048401e-02 + + 1.5833569690585136e-02 -3.8182300329208374e-01 + <_> + + 0 -1 285 -1.7992800101637840e-02 + + -3.6973980069160461e-01 1.0451599955558777e-01 + <_> + + 0 -1 286 -1.0420969873666763e-01 + + 5.1836878061294556e-01 -2.2372400388121605e-02 + <_> + + 0 -1 287 5.3277369588613510e-02 + + 7.4715927243232727e-02 -5.8489412069320679e-01 + <_> + + 0 -1 288 9.6819162368774414e-02 + + -7.8130746260285378e-03 -9.0531897544860840e-01 + <_> + + 0 -1 289 -2.2317610681056976e-01 + + 4.7848999500274658e-01 -8.9570246636867523e-02 + <_> + + 0 -1 290 1.3523760251700878e-02 + + 6.5158583223819733e-02 -1.4030559360980988e-01 + <_> + + 0 -1 291 -7.1465343236923218e-02 + + -8.8997572660446167e-01 3.8111008703708649e-02 + <_> + + 0 -1 292 2.4734560400247574e-02 + + -3.2858259975910187e-02 3.5368600487709045e-01 + <_> + + 0 -1 293 -4.2641810141503811e-03 + + 1.2885729968547821e-01 -2.7788180112838745e-01 + <_> + + 0 -1 294 4.3246541172266006e-02 + + -2.6344619691371918e-02 3.3333760499954224e-01 + <_> + + 0 -1 295 5.2720978856086731e-03 + + 9.6122108399868011e-02 -3.8203689455986023e-01 + <_> + + 0 -1 296 -6.4102048054337502e-03 + + 1.6924449801445007e-01 -7.5236052274703979e-02 + <_> + + 0 -1 297 1.7747100442647934e-02 + + -6.5126739442348480e-02 5.3720867633819580e-01 + <_> + + 0 -1 298 1.6466729342937469e-01 + + 2.6764029636979103e-02 -6.9506132602691650e-01 + <_> + + 0 -1 299 -7.6354909688234329e-03 + + 1.7261630296707153e-01 -2.0242890715599060e-01 + <_> + + 0 -1 300 -7.6648168265819550e-02 + + 2.2567149996757507e-01 -3.5044141113758087e-02 + <_> + + 0 -1 301 2.9634330421686172e-03 + + 1.0679820179939270e-01 -3.0704519152641296e-01 + <_> + + 0 -1 302 -1.8968040123581886e-02 + + -6.5349531173706055e-01 4.5328449457883835e-02 + <_> + + 0 -1 303 6.2272930145263672e-01 + + 2.9418470337986946e-02 -7.7416032552719116e-01 + <_> + + 0 -1 304 3.1170540023595095e-03 + + -1.9263580441474915e-01 1.0082499682903290e-01 + <_> + + 0 -1 305 -1.0179740190505981e-01 + + 5.0667291879653931e-01 -7.5845532119274139e-02 + <_> + + 0 -1 306 -8.7539367377758026e-02 + + -8.0127829313278198e-01 3.9741981774568558e-02 + <_> + + 0 -1 307 -4.0089199319481850e-03 + + 1.5867359936237335e-01 -2.0390710234642029e-01 + <_> + + 0 -1 308 -1.7252740263938904e-01 + + -4.8556509613990784e-01 6.6162437200546265e-02 + <_> + + 0 -1 309 2.2747491020709276e-03 + + 1.0839290171861649e-01 -2.6120510697364807e-01 + <_> + + 0 -1 310 8.7025731801986694e-02 + + -4.5612849295139313e-02 3.0642318725585938e-01 + <_> + + 0 -1 311 3.3302091062068939e-02 + + 9.8511956632137299e-02 -4.0321010351181030e-01 + <_> + + 0 -1 312 -5.5495370179414749e-03 + + 6.7809469997882843e-02 -1.9448509812355042e-01 + <_> + + 0 -1 313 -7.5916801579296589e-03 + + -3.3229979872703552e-01 1.0552299767732620e-01 + <_> + + 0 -1 314 -5.4776940494775772e-02 + + 3.1344750523567200e-01 -9.2561431229114532e-02 + <_> + + 0 -1 315 1.7293309792876244e-02 + + -1.0366520285606384e-01 4.5732820034027100e-01 + <_> + 40 + -1.0216970443725586e+00 + + <_> + + 0 -1 316 -2.2501630708575249e-02 + + 5.2293592691421509e-01 -1.7968380451202393e-01 + <_> + + 0 -1 317 -1.8166720867156982e-02 + + 1.4281089603900909e-01 -3.0268448591232300e-01 + <_> + + 0 -1 318 3.1680259853601456e-02 + + 1.5708820521831512e-01 -3.2303369045257568e-01 + <_> + + 0 -1 319 -2.3476250469684601e-02 + + -4.5576000213623047e-01 1.0300090163946152e-01 + <_> + + 0 -1 320 4.5688278973102570e-02 + + 6.7873537540435791e-02 -7.4623328447341919e-01 + <_> + + 0 -1 321 -7.4609883129596710e-02 + + 2.0548540353775024e-01 -1.0097859799861908e-01 + <_> + + 0 -1 322 -4.5903101563453674e-02 + + 6.6662758588790894e-01 -6.9071657955646515e-02 + <_> + + 0 -1 323 -5.7763070799410343e-04 + + 1.1386449635028839e-01 -1.2278319895267487e-01 + <_> + + 0 -1 324 -4.1800830513238907e-04 + + 1.9999989867210388e-01 -2.2372670471668243e-01 + <_> + + 0 -1 325 2.4581039324402809e-03 + + 1.0073749721050262e-01 -3.6323159933090210e-01 + <_> + + 0 -1 326 6.7467048764228821e-02 + + 5.4200690239667892e-02 -6.0347068309783936e-01 + <_> + + 0 -1 327 -3.8971859961748123e-02 + + 4.0277591347694397e-01 -1.1299470067024231e-01 + <_> + + 0 -1 328 1.6628159582614899e-01 + + 4.8290308564901352e-02 -8.1269222497940063e-01 + <_> + + 0 -1 329 5.5140322074294090e-03 + + 6.0484610497951508e-02 -5.4575890302658081e-01 + <_> + + 0 -1 330 1.2837080284953117e-03 + + -2.8150710463523865e-01 1.2785549461841583e-01 + <_> + + 0 -1 331 3.3840160816907883e-02 + + -6.1925090849399567e-02 5.4461580514907837e-01 + <_> + + 0 -1 332 1.4224560000002384e-02 + + -8.3702072501182556e-02 5.5404889583587646e-01 + <_> + + 0 -1 333 -1.4315280714072287e-04 + + 1.5318620204925537e-01 -2.8312870860099792e-01 + <_> + + 0 -1 334 -1.3604390434920788e-02 + + -6.3229328393936157e-01 5.6792028248310089e-02 + <_> + + 0 -1 335 -1.7952319979667664e-01 + + -7.7471101284027100e-01 -1.2696949997916818e-03 + <_> + + 0 -1 336 -6.3834888860583305e-03 + + 1.2864939868450165e-01 -3.1159159541130066e-01 + <_> + + 0 -1 337 -1.8140509724617004e-01 + + -7.0704931020736694e-01 3.0992519110441208e-02 + <_> + + 0 -1 338 3.4940429031848907e-03 + + 1.0192289948463440e-01 -3.3393231034278870e-01 + <_> + + 0 -1 339 4.0861740708351135e-02 + + 3.1267888844013214e-02 -4.3739050626754761e-01 + <_> + + 0 -1 340 3.6993999034166336e-02 + + -6.2453608959913254e-02 5.7605278491973877e-01 + <_> + + 0 -1 341 -7.7690118923783302e-03 + + -6.0737371444702148e-01 6.9758452475070953e-02 + <_> + + 0 -1 342 7.1885702200233936e-03 + + -1.4034010469913483e-01 2.4509570002555847e-01 + <_> + + 0 -1 343 -3.0558679252862930e-02 + + -2.6109099388122559e-01 2.0893760025501251e-02 + <_> + + 0 -1 344 -1.3949500396847725e-02 + + -4.5984518527984619e-01 7.2996988892555237e-02 + <_> + + 0 -1 345 -1.7439149320125580e-01 + + 2.7917501330375671e-01 -7.0309691131114960e-02 + <_> + + 0 -1 346 -5.6514460593461990e-03 + + -5.8335387706756592e-01 4.8543170094490051e-02 + <_> + + 0 -1 347 -5.6718150153756142e-03 + + -2.0645590126514435e-01 5.9949990361928940e-02 + <_> + + 0 -1 348 -2.9772339985356666e-05 + + 1.6627080738544464e-01 -1.8144470453262329e-01 + <_> + + 0 -1 349 -6.2705092132091522e-03 + + 2.5829210877418518e-01 -1.3548080623149872e-01 + <_> + + 0 -1 350 -5.2028051577508450e-03 + + -2.9585519433021545e-01 1.0223600268363953e-01 + <_> + + 0 -1 351 -3.6721840500831604e-02 + + 1.1443459987640381e-01 -1.5670689940452576e-01 + <_> + + 0 -1 352 7.8717432916164398e-02 + + 2.9407389461994171e-02 -8.9653927087783813e-01 + <_> + + 0 -1 353 9.0856212377548218e-01 + + -5.6400269269943237e-02 6.9543528556823730e-01 + <_> + + 0 -1 354 -5.2952598780393600e-03 + + 1.8282440304756165e-01 -2.0518480241298676e-01 + <_> + + 0 -1 355 -5.2672341465950012e-02 + + -6.8133538961410522e-01 3.6046069115400314e-02 + <_> + 51 + -1.0450960397720337e+00 + + <_> + + 0 -1 356 -2.1731309592723846e-01 + + 5.9716808795928955e-01 -2.2432699799537659e-01 + <_> + + 0 -1 357 -3.4627959132194519e-01 + + 5.3741937875747681e-01 -8.7782189249992371e-02 + <_> + + 0 -1 358 1.0713579831644893e-03 + + -3.5920229554176331e-01 1.5685929358005524e-01 + <_> + + 0 -1 359 -6.1267141252756119e-02 + + -7.1003252267837524e-01 2.0527899265289307e-02 + <_> + + 0 -1 360 3.1281840056180954e-02 + + -7.4646763503551483e-02 5.9689122438430786e-01 + <_> + + 0 -1 361 -1.2337400112301111e-03 + + 1.5949830412864685e-01 -2.7181199193000793e-01 + <_> + + 0 -1 362 -3.4508139360696077e-03 + + 2.0255160331726074e-01 -1.9399139285087585e-01 + <_> + + 0 -1 363 -7.0481761358678341e-03 + + -5.5100089311599731e-01 7.0738323032855988e-02 + <_> + + 0 -1 364 2.2950200736522675e-01 + + -8.7573416531085968e-02 6.0446268320083618e-01 + <_> + + 0 -1 365 -2.2578560747206211e-03 + + -8.5306502878665924e-02 1.0997729748487473e-01 + <_> + + 0 -1 366 -9.7562908194959164e-04 + + 9.7412303090095520e-02 -3.6251759529113770e-01 + <_> + + 0 -1 367 5.3088109940290451e-02 + + -3.5328660160303116e-03 -6.0694789886474609e-01 + <_> + + 0 -1 368 1.5448880149051547e-03 + + -2.2419139742851257e-01 1.7832720279693604e-01 + <_> + + 0 -1 369 1.2375700287520885e-02 + + -3.5778950899839401e-02 2.9557931423187256e-01 + <_> + + 0 -1 370 5.9611927717924118e-03 + + -7.3603026568889618e-02 4.8699569702148438e-01 + <_> + + 0 -1 371 8.3732418715953827e-03 + + 9.5786556601524353e-02 -3.9222580194473267e-01 + <_> + + 0 -1 372 -7.9954452812671661e-03 + + -2.9597011208534241e-01 1.3246519863605499e-01 + <_> + + 0 -1 373 1.7624149098992348e-02 + + 1.1629760265350342e-02 -3.7594190239906311e-01 + <_> + + 0 -1 374 -8.1538967788219452e-04 + + 1.8403179943561554e-01 -2.1106949448585510e-01 + <_> + + 0 -1 375 6.5910838544368744e-02 + + 3.8050938397645950e-02 -8.7356221675872803e-01 + <_> + + 0 -1 376 -8.1749828532338142e-03 + + -3.0115619301795959e-01 8.1345446407794952e-02 + <_> + + 0 -1 377 -3.8275010883808136e-02 + + 3.8238960504531860e-01 -5.5969979614019394e-02 + <_> + + 0 -1 378 3.2501420937478542e-03 + + -2.1520890295505524e-01 1.3417840003967285e-01 + <_> + + 0 -1 379 5.6356219574809074e-03 + + -9.1598346829414368e-02 2.6930230855941772e-01 + <_> + + 0 -1 380 -5.1177428103983402e-03 + + -3.0092298984527588e-01 1.0440470278263092e-01 + <_> + + 0 -1 381 -6.0195129364728928e-02 + + 1.8512830138206482e-01 -6.3004150986671448e-02 + <_> + + 0 -1 382 4.6473558992147446e-02 + + 3.7559378892183304e-02 -8.1117790937423706e-01 + <_> + + 0 -1 383 2.2262150887399912e-03 + + -1.2262800335884094e-01 8.3288192749023438e-02 + <_> + + 0 -1 384 1.6670780256390572e-02 + + -5.2774429321289062e-02 5.4887998104095459e-01 + <_> + + 0 -1 385 -6.3093528151512146e-02 + + -7.4702072143554688e-01 2.7049509808421135e-02 + <_> + + 0 -1 386 -7.7139958739280701e-04 + + 9.2177063226699829e-02 -2.9994431138038635e-01 + <_> + + 0 -1 387 -8.9107893407344818e-02 + + -3.8937440514564514e-01 2.9831759631633759e-02 + <_> + + 0 -1 388 -1.7469590238761157e-04 + + 1.6117650270462036e-01 -2.0639100670814514e-01 + <_> + + 0 -1 389 -2.1986931096762419e-03 + + 1.4286069571971893e-01 -1.2366549670696259e-01 + <_> + + 0 -1 390 2.1864708978682756e-03 + + -1.7435190081596375e-01 1.6586010158061981e-01 + <_> + + 0 -1 391 1.2738450430333614e-02 + + 4.8340078443288803e-02 -8.1297926604747772e-02 + <_> + + 0 -1 392 -1.2383400462567806e-02 + + -3.7464460730552673e-01 8.1205978989601135e-02 + <_> + + 0 -1 393 -1.2094350159168243e-01 + + -9.1908979415893555e-01 1.7007840797305107e-02 + <_> + + 0 -1 394 4.8902980983257294e-02 + + -7.0619069039821625e-02 5.1363438367843628e-01 + <_> + + 0 -1 395 -1.9585320260375738e-03 + + 9.9808372557163239e-02 -1.0681519657373428e-01 + <_> + + 0 -1 396 -2.9645320773124695e-01 + + -9.1213762760162354e-01 3.2292358577251434e-02 + <_> + + 0 -1 397 1.0741979628801346e-01 + + -2.3814958985894918e-03 -7.1836417913436890e-01 + <_> + + 0 -1 398 -4.2040441185235977e-02 + + 3.0848339200019836e-01 -9.9647372961044312e-02 + <_> + + 0 -1 399 6.8270778283476830e-03 + + 8.3302132785320282e-02 -3.6433839797973633e-01 + <_> + + 0 -1 400 -1.1072089895606041e-02 + + -2.5886499881744385e-01 1.2579409778118134e-01 + <_> + + 0 -1 401 -1.6399029642343521e-02 + + 3.0191990733146667e-01 -4.9352090805768967e-02 + <_> + + 0 -1 402 -2.0852450688835233e-04 + + 1.2508730590343475e-01 -2.1993610262870789e-01 + <_> + + 0 -1 403 -3.0174860730767250e-02 + + -6.5353047847747803e-01 1.0185699909925461e-02 + <_> + + 0 -1 404 -3.9148568175733089e-03 + + -2.0781719684600830e-01 1.2460950016975403e-01 + <_> + + 0 -1 405 -2.7260989882051945e-03 + + 1.2443950027227402e-01 -1.5540640056133270e-01 + <_> + + 0 -1 406 1.7432900145649910e-02 + + -5.9761889278888702e-02 4.9430638551712036e-01 + <_> + 45 + -9.2809242010116577e-01 + + <_> + + 0 -1 407 -2.1454410254955292e-01 + + 5.1646298170089722e-01 -2.2012180089950562e-01 + <_> + + 0 -1 408 1.3796210289001465e-02 + + 5.0541419535875320e-02 -2.3305070400238037e-01 + <_> + + 0 -1 409 9.6883601509034634e-04 + + -2.4793210625648499e-01 2.0536769926548004e-01 + <_> + + 0 -1 410 -6.6670728847384453e-03 + + -2.2546489536762238e-01 6.4493361860513687e-03 + <_> + + 0 -1 411 2.1733778994530439e-03 + + -2.1164029836654663e-01 2.1819859743118286e-01 + <_> + + 0 -1 412 -1.2321940157562494e-03 + + 6.7792296409606934e-02 -1.1661940068006516e-01 + <_> + + 0 -1 413 -5.9950752183794975e-03 + + -4.2384910583496094e-01 1.3204540312290192e-01 + <_> + + 0 -1 414 2.6942830532789230e-02 + + -1.0161910206079483e-01 4.8092079162597656e-01 + <_> + + 0 -1 415 6.6907003521919250e-02 + + -8.4552347660064697e-02 4.9274548888206482e-01 + <_> + + 0 -1 416 -1.6729519702494144e-03 + + 9.2197872698307037e-02 -2.2954310476779938e-01 + <_> + + 0 -1 417 1.3808730058372021e-02 + + -6.0905098915100098e-02 5.8490061759948730e-01 + <_> + + 0 -1 418 -2.3627160117030144e-02 + + -8.8347977399826050e-01 9.7397705540060997e-03 + <_> + + 0 -1 419 -1.3927640393376350e-02 + + -6.5309441089630127e-01 5.2886508405208588e-02 + <_> + + 0 -1 420 3.6122989840805531e-03 + + -2.6369398832321167e-01 1.0595279932022095e-01 + <_> + + 0 -1 421 -5.2949450910091400e-02 + + -7.3409342765808105e-01 4.7014039009809494e-02 + <_> + + 0 -1 422 1.7414819449186325e-02 + + 1.7683740705251694e-02 -5.8782297372817993e-01 + <_> + + 0 -1 423 -3.2427799305878580e-04 + + 1.3886380195617676e-01 -3.0609750747680664e-01 + <_> + + 0 -1 424 -4.3613791465759277e-02 + + 5.4857110977172852e-01 -6.7348852753639221e-02 + <_> + + 0 -1 425 -9.3427510000765324e-04 + + 1.8392640352249146e-01 -1.7492470145225525e-01 + <_> + + 0 -1 426 7.9606421291828156e-02 + + 4.5652151107788086e-02 -6.3910657167434692e-01 + <_> + + 0 -1 427 -2.5120750069618225e-02 + + 1.0046990215778351e-01 -2.7824568748474121e-01 + <_> + + 0 -1 428 3.2976910471916199e-02 + + -5.9311199933290482e-02 6.5328377485275269e-01 + <_> + + 0 -1 429 -3.7845480255782604e-03 + + -2.4190320074558258e-01 1.3097280263900757e-01 + <_> + + 0 -1 430 9.4495685771107674e-03 + + -9.3100033700466156e-02 2.3785820603370667e-01 + <_> + + 0 -1 431 2.5168890133500099e-03 + + 1.3604310154914856e-01 -2.8159540891647339e-01 + <_> + + 0 -1 432 2.6242460589855909e-03 + + 8.9834272861480713e-02 -3.7729039788246155e-01 + <_> + + 0 -1 433 -4.4626198709011078e-02 + + 3.8320839405059814e-01 -9.6285469830036163e-02 + <_> + + 0 -1 434 1.4027470024302602e-04 + + -1.7261759936809540e-01 1.6574309766292572e-01 + <_> + + 0 -1 435 3.9115909487009048e-02 + + 7.8652113676071167e-02 -3.5689839720726013e-01 + <_> + + 0 -1 436 -6.6682003438472748e-02 + + -8.8001507520675659e-01 9.0465601533651352e-03 + <_> + + 0 -1 437 6.3860351219773293e-03 + + -7.5936213135719299e-02 3.8622769713401794e-01 + <_> + + 0 -1 438 4.3549899011850357e-02 + + -2.5680009275674820e-02 7.4085921049118042e-01 + <_> + + 0 -1 439 1.8360930262133479e-03 + + 1.1183869838714600e-01 -3.3362200856208801e-01 + <_> + + 0 -1 440 1.6189280431717634e-03 + + 1.8969060853123665e-02 -1.5130129456520081e-01 + <_> + + 0 -1 441 2.8807038906961679e-03 + + 9.4285592436790466e-02 -3.1100749969482422e-01 + <_> + + 0 -1 442 -3.2489649951457977e-02 + + -2.1908520162105560e-01 1.1370900273323059e-01 + <_> + + 0 -1 443 -3.8253709673881531e-02 + + 3.7908008694648743e-01 -6.8298138678073883e-02 + <_> + + 0 -1 444 -1.8478769809007645e-02 + + 2.9623249173164368e-01 -6.0682911425828934e-02 + <_> + + 0 -1 445 1.5569750219583511e-02 + + 8.5731290280818939e-02 -3.3175340294837952e-01 + <_> + + 0 -1 446 -1.7486449796706438e-03 + + 1.2554299831390381e-01 -1.9797539710998535e-01 + <_> + + 0 -1 447 9.0995557606220245e-02 + + -6.7590013146400452e-02 5.2676147222518921e-01 + <_> + + 0 -1 448 -6.0815969482064247e-03 + + 2.1883159875869751e-01 -1.5794619917869568e-01 + <_> + + 0 -1 449 1.3633850030601025e-02 + + 1.2463530153036118e-01 -2.3396529257297516e-01 + <_> + + 0 -1 450 -3.2046619057655334e-01 + + 4.5808508992195129e-01 -2.7573259547352791e-02 + <_> + + 0 -1 451 -3.6630940157920122e-03 + + -2.4003350734710693e-01 1.2256260216236115e-01 + <_> + 46 + -8.5974782705307007e-01 + + <_> + + 0 -1 452 -1.5901359915733337e-01 + + 4.3535038828849792e-01 -1.7064349353313446e-01 + <_> + + 0 -1 453 -8.1815905869007111e-03 + + -4.6280708909034729e-01 8.8514603674411774e-02 + <_> + + 0 -1 454 -7.1978997766564135e-06 + + 1.6246670484542847e-01 -3.1899040937423706e-01 + <_> + + 0 -1 455 1.4128180220723152e-02 + + 4.3259881436824799e-02 -5.9328877925872803e-01 + <_> + + 0 -1 456 -9.5496661961078644e-03 + + -6.3987672328948975e-01 4.6203929930925369e-02 + <_> + + 0 -1 457 -2.4156800936907530e-03 + + 2.6009899377822876e-01 -1.7099030315876007e-01 + <_> + + 0 -1 458 4.4057718478143215e-03 + + -2.2679199278354645e-01 1.6393969953060150e-01 + <_> + + 0 -1 459 -3.3825438469648361e-02 + + -7.2834062576293945e-01 5.1699958741664886e-02 + <_> + + 0 -1 460 2.9628010466694832e-02 + + 3.4399930387735367e-02 -6.9400608539581299e-01 + <_> + + 0 -1 461 1.2294690310955048e-01 + + 3.3281920477747917e-03 -7.6602149009704590e-01 + <_> + + 0 -1 462 -9.8816171288490295e-02 + + 3.1439980864524841e-01 -1.0131180286407471e-01 + <_> + + 0 -1 463 -3.3952430821955204e-03 + + 3.3362209796905518e-02 -1.3168929517269135e-01 + <_> + + 0 -1 464 2.4586699903011322e-02 + + -6.5227553248405457e-02 6.8169701099395752e-01 + <_> + + 0 -1 465 7.8804800286889076e-03 + + 1.2926100194454193e-01 -4.3783390522003174e-01 + <_> + + 0 -1 466 -9.1016880469396710e-04 + + 1.3692790269851685e-01 -1.9827769696712494e-01 + <_> + + 0 -1 467 1.6178259626030922e-02 + + 9.9287502467632294e-02 -3.4090539813041687e-01 + <_> + + 0 -1 468 -1.0527680069208145e-01 + + -9.1738772392272949e-01 3.2674968242645264e-02 + <_> + + 0 -1 469 -3.7090498954057693e-02 + + 4.2047971487045288e-01 -7.1002766489982605e-02 + <_> + + 0 -1 470 3.8721140474081039e-02 + + -7.3284432291984558e-02 4.8204809427261353e-01 + <_> + + 0 -1 471 -3.4923329949378967e-03 + + -2.8713211417198181e-01 1.0397130250930786e-01 + <_> + + 0 -1 472 -1.1214460246264935e-02 + + -5.1632231473922729e-01 5.4384410381317139e-02 + <_> + + 0 -1 473 -2.2951549908611923e-04 + + -1.6355240345001221e-01 7.7216558158397675e-02 + <_> + + 0 -1 474 2.5744609534740448e-02 + + -5.7303100824356079e-02 4.9525278806686401e-01 + <_> + + 0 -1 475 3.7998620420694351e-02 + + 2.7654580771923065e-02 -4.8470789194107056e-01 + <_> + + 0 -1 476 2.3906941059976816e-03 + + -2.0106680691242218e-01 1.6209079325199127e-01 + <_> + + 0 -1 477 -1.2891319394111633e-01 + + -6.9726997613906860e-01 1.7226759344339371e-02 + <_> + + 0 -1 478 9.4630720559507608e-04 + + -2.7104228734970093e-01 1.0894539952278137e-01 + <_> + + 0 -1 479 3.2807278912514448e-03 + + -4.1949510574340820e-02 8.2179002463817596e-02 + <_> + + 0 -1 480 5.1204498857259750e-02 + + 4.8180408775806427e-02 -6.6344922780990601e-01 + <_> + + 0 -1 481 -4.5751508325338364e-02 + + 1.9350789487361908e-01 -3.7223301827907562e-02 + <_> + + 0 -1 482 1.4391579665243626e-02 + + 1.0828830301761627e-01 -2.3524640500545502e-01 + <_> + + 0 -1 483 -7.6694227755069733e-03 + + 7.7429883182048798e-02 -4.6658441424369812e-02 + <_> + + 0 -1 484 -4.9375209957361221e-02 + + 3.5604238510131836e-01 -8.1731930375099182e-02 + <_> + + 0 -1 485 4.9358978867530823e-02 + + 5.0106838345527649e-02 -5.9273171424865723e-01 + <_> + + 0 -1 486 5.3014289587736130e-02 + + 3.3155430108308792e-02 -7.0783668756484985e-01 + <_> + + 0 -1 487 -1.2086739763617516e-02 + + 1.4943680167198181e-01 -1.8973240256309509e-01 + <_> + + 0 -1 488 -1.3579580187797546e-01 + + 4.5863440632820129e-01 -7.1998342871665955e-02 + <_> + + 0 -1 489 1.9633909687399864e-03 + + -1.0420600324869156e-01 1.8465609848499298e-01 + <_> + + 0 -1 490 9.3589266762137413e-03 + + 5.3957458585500717e-02 -4.7337940335273743e-01 + <_> + + 0 -1 491 4.3361759744584560e-03 + + -5.7173401117324829e-02 5.0958871841430664e-01 + <_> + + 0 -1 492 8.5009206086397171e-03 + + 9.4076819717884064e-02 -2.9265969991683960e-01 + <_> + + 0 -1 493 -1.9089920446276665e-02 + + 3.5426521301269531e-01 -5.5876109749078751e-02 + <_> + + 0 -1 494 -1.6061830101534724e-03 + + 1.6634060442447662e-01 -1.5939429402351379e-01 + <_> + + 0 -1 495 -7.8830653801560402e-03 + + -2.6064670085906982e-01 5.5236898362636566e-02 + <_> + + 0 -1 496 -3.2838371116667986e-03 + + -2.4924349784851074e-01 1.4288279414176941e-01 + <_> + + 0 -1 497 1.9204219803214073e-02 + + -2.6132659986615181e-02 3.2939550280570984e-01 + <_> + 55 + -8.6706262826919556e-01 + + <_> + + 0 -1 498 -1.0141430050134659e-01 + + 4.7197818756103516e-01 -1.8123960494995117e-01 + <_> + + 0 -1 499 -7.6708722114562988e-01 + + 4.3214419484138489e-01 -1.0705640166997910e-01 + <_> + + 0 -1 500 8.0198869109153748e-03 + + 8.4858916699886322e-02 -5.0163632631301880e-01 + <_> + + 0 -1 501 4.2173888534307480e-02 + + 4.3612729758024216e-02 -6.5135252475738525e-01 + <_> + + 0 -1 502 4.0101539343595505e-03 + + -2.4151140451431274e-01 1.7029179632663727e-01 + <_> + + 0 -1 503 -1.3389269588515162e-03 + + -1.8421310186386108e-01 9.2217013239860535e-02 + <_> + + 0 -1 504 3.3321550581604242e-03 + + -1.6709089279174805e-01 1.9239999353885651e-01 + <_> + + 0 -1 505 1.5524900518357754e-03 + + 1.1113339662551880e-01 -3.1200349330902100e-01 + <_> + + 0 -1 506 2.3809259757399559e-02 + + -6.4096599817276001e-02 5.6162089109420776e-01 + <_> + + 0 -1 507 2.8085429221391678e-02 + + -2.2390459477901459e-01 1.6832110285758972e-01 + <_> + + 0 -1 508 -4.7726151533424854e-03 + + -4.6150028705596924e-01 4.9433000385761261e-02 + <_> + + 0 -1 509 1.0531850159168243e-01 + + 3.4683290868997574e-02 -6.4283651113510132e-01 + <_> + + 0 -1 510 -7.2594000957906246e-03 + + -4.0418758988380432e-01 6.0901068150997162e-02 + <_> + + 0 -1 511 8.7005542591214180e-03 + + -7.5832478702068329e-02 8.9484892785549164e-02 + <_> + + 0 -1 512 -5.3671520203351974e-02 + + 7.3710972070693970e-01 -4.0993150323629379e-02 + <_> + + 0 -1 513 3.4521210938692093e-02 + + -1.3731540180742741e-02 2.7299648523330688e-01 + <_> + + 0 -1 514 -7.2156880050897598e-03 + + 1.2723149359226227e-01 -2.3329609632492065e-01 + <_> + + 0 -1 515 1.7666360363364220e-03 + + 5.7977691292762756e-02 -2.0036549866199493e-01 + <_> + + 0 -1 516 3.8101759273558855e-03 + + 7.3866911232471466e-02 -3.0780071020126343e-01 + <_> + + 0 -1 517 -2.5019630789756775e-02 + + 4.3502670526504517e-01 -4.8294428735971451e-02 + <_> + + 0 -1 518 9.7328815609216690e-03 + + -8.3063952624797821e-02 3.0008700489997864e-01 + <_> + + 0 -1 519 -3.3074519596993923e-03 + + 1.3591299951076508e-01 -2.2476670145988464e-01 + <_> + + 0 -1 520 -1.9178609549999237e-01 + + -8.7936902046203613e-01 2.7915079146623611e-02 + <_> + + 0 -1 521 6.0892169130966067e-04 + + -2.2891379892826080e-01 1.0236170142889023e-01 + <_> + + 0 -1 522 -7.7072591520845890e-03 + + -2.4917750060558319e-01 9.4315156340599060e-02 + <_> + + 0 -1 523 -1.0916110128164291e-01 + + 5.5664068460464478e-01 -4.7419041395187378e-02 + <_> + + 0 -1 524 -6.3703782856464386e-02 + + -2.1503069996833801e-01 1.0655879974365234e-01 + <_> + + 0 -1 525 -2.6704160496592522e-02 + + 3.3017820119857788e-01 -9.3569032847881317e-02 + <_> + + 0 -1 526 -2.7289129793643951e-03 + + 8.6531341075897217e-02 -2.6623091101646423e-01 + <_> + + 0 -1 527 -1.0575050115585327e-01 + + -1. 5.9039499610662460e-03 + <_> + + 0 -1 528 1.8904829397797585e-02 + + -6.2077309936285019e-02 4.7796338796615601e-01 + <_> + + 0 -1 529 -1.6396720707416534e-01 + + -1. 1.0493510402739048e-02 + <_> + + 0 -1 530 1.0453710332512856e-02 + + 1.2688960134983063e-01 -2.0351530611515045e-01 + <_> + + 0 -1 531 1.3724270462989807e-01 + + 9.6491426229476929e-03 -3.7908729910850525e-01 + <_> + + 0 -1 532 -5.0359591841697693e-03 + + -2.5936231017112732e-01 1.1745890229940414e-01 + <_> + + 0 -1 533 6.5677291713654995e-03 + + -6.0465291142463684e-02 1.5637819468975067e-01 + <_> + + 0 -1 534 -3.0346989631652832e-02 + + 3.8403400778770447e-01 -6.1477359384298325e-02 + <_> + + 0 -1 535 1.7546329647302628e-02 + + 2.8643229976296425e-02 -4.7679468989372253e-01 + <_> + + 0 -1 536 -4.5566740445792675e-03 + + -3.1261089444160461e-01 1.0885629802942276e-01 + <_> + + 0 -1 537 -6.9851092994213104e-02 + + -7.0994102954864502e-01 1.8536770716309547e-02 + <_> + + 0 -1 538 -1.4962710338295437e-05 + + 1.0287140309810638e-01 -2.2921159863471985e-01 + <_> + + 0 -1 539 -7.2705000638961792e-02 + + 4.2520120739936829e-01 -2.8236340731382370e-02 + <_> + + 0 -1 540 3.7338290363550186e-02 + + -7.6630033552646637e-02 3.2374149560928345e-01 + <_> + + 0 -1 541 2.8690960258245468e-02 + + 3.0029499903321266e-02 -8.4007978439331055e-01 + <_> + + 0 -1 542 1.0019769892096519e-02 + + -7.9071857035160065e-02 3.4019070863723755e-01 + <_> + + 0 -1 543 -3.9540659636259079e-03 + + -2.4449679255485535e-01 1.1845660209655762e-01 + <_> + + 0 -1 544 -8.2879550755023956e-03 + + 1.0628750175237656e-01 -2.2044150531291962e-01 + <_> + + 0 -1 545 -3.4582480788230896e-02 + + -7.1333628892898560e-01 2.9727920889854431e-02 + <_> + + 0 -1 546 -1.4701869804412127e-03 + + 1.2630669772624969e-01 -1.8260860443115234e-01 + <_> + + 0 -1 547 -1.8792560324072838e-02 + + 4.4159510731697083e-01 -6.2980100512504578e-02 + <_> + + 0 -1 548 -1.9830280914902687e-02 + + -2.8308698534965515e-01 9.2180028557777405e-02 + <_> + + 0 -1 549 -1.6321459412574768e-01 + + -4.1355830430984497e-01 1.1562050320208073e-02 + <_> + + 0 -1 550 7.5624987483024597e-02 + + 2.2105440497398376e-02 -9.1430252790451050e-01 + <_> + + 0 -1 551 -2.2491789422929287e-03 + + 9.1926686465740204e-02 -1.0633769631385803e-01 + <_> + + 0 -1 552 -6.3310638070106506e-02 + + -7.7100628614425659e-01 2.7047479525208473e-02 + <_> + 60 + -8.9544051885604858e-01 + + <_> + + 0 -1 553 -1.7043270170688629e-01 + + 4.7425061464309692e-01 -1.8581479787826538e-01 + <_> + + 0 -1 554 2.7967130765318871e-02 + + -8.6291179060935974e-02 5.3257989883422852e-01 + <_> + + 0 -1 555 2.0941249385941774e-04 + + -2.7199700474739075e-01 1.3615070283412933e-01 + <_> + + 0 -1 556 -3.3637240529060364e-02 + + 2.8299760818481445e-01 -2.2356469184160233e-02 + <_> + + 0 -1 557 -4.5356429181993008e-03 + + 1.6135759651660919e-01 -2.0162500441074371e-01 + <_> + + 0 -1 558 3.3124668989330530e-03 + + -7.9677619040012360e-02 1.4375239610671997e-01 + <_> + + 0 -1 559 -5.4888740181922913e-02 + + 6.6563862562179565e-01 -5.3526669740676880e-02 + <_> + + 0 -1 560 5.3796600550413132e-03 + + -9.6400886774063110e-02 9.3223050236701965e-02 + <_> + + 0 -1 561 -6.0283239930868149e-02 + + -5.4325622320175171e-01 5.4515969008207321e-02 + <_> + + 0 -1 562 8.4590855985879898e-03 + + 5.0189521163702011e-02 -3.7638399004936218e-01 + <_> + + 0 -1 563 2.8549430426210165e-03 + + 1.3105809688568115e-01 -2.4903079867362976e-01 + <_> + + 0 -1 564 -2.0608250051736832e-02 + + -4.3393260240554810e-01 6.0918930917978287e-02 + <_> + + 0 -1 565 -1.0088419541716576e-02 + + 2.9433688521385193e-01 -1.0092660039663315e-01 + <_> + + 0 -1 566 -5.9431340545415878e-02 + + -9.0102052688598633e-01 2.7330689132213593e-02 + <_> + + 0 -1 567 -2.4024050217121840e-03 + + 1.2758029997348785e-01 -1.9134059548377991e-01 + <_> + + 0 -1 568 -2.7372820302844048e-02 + + -2.8051578998565674e-01 1.0892979800701141e-01 + <_> + + 0 -1 569 -7.3817551136016846e-02 + + 3.6636620759963989e-01 -7.1261473000049591e-02 + <_> + + 0 -1 570 -6.9365866482257843e-02 + + 4.4759741425514221e-01 -3.5112198442220688e-02 + <_> + + 0 -1 571 -1.2530760141089559e-03 + + 1.0481069982051849e-01 -2.5331568717956543e-01 + <_> + + 0 -1 572 -3.2429681159555912e-03 + + -2.1083809435367584e-01 8.9755013585090637e-02 + <_> + + 0 -1 573 1.6115259379148483e-02 + + -5.8019161224365234e-02 5.5759441852569580e-01 + <_> + + 0 -1 574 6.2562932725995779e-04 + + -2.1611200273036957e-01 1.2215120345354080e-01 + <_> + + 0 -1 575 -7.6641827821731567e-01 + + -6.3647639751434326e-01 3.3915121108293533e-02 + <_> + + 0 -1 576 -7.4419458542251959e-06 + + 9.5346711575984955e-02 -2.3950740694999695e-01 + <_> + + 0 -1 577 -3.7739300751127303e-04 + + 1.4481280744075775e-01 -1.8476490676403046e-01 + <_> + + 0 -1 578 7.6729603111743927e-02 + + 1.1742720380425453e-02 -9.6213918924331665e-01 + <_> + + 0 -1 579 -4.4697099365293980e-03 + + -2.3385390639305115e-01 1.0464339703321457e-01 + <_> + + 0 -1 580 7.5911812484264374e-02 + + 6.7219119518995285e-03 -4.2311188578605652e-01 + <_> + + 0 -1 581 -8.3202589303255081e-03 + + 3.2122060656547546e-01 -8.3661839365959167e-02 + <_> + + 0 -1 582 -3.7233818322420120e-02 + + 1.1662390083074570e-01 -2.3976010084152222e-01 + <_> + + 0 -1 583 -2.1381198894232512e-03 + + 8.4755808115005493e-02 -2.5149530172348022e-01 + <_> + + 0 -1 584 -4.4315438717603683e-03 + + -1.0990399867296219e-01 6.6713362932205200e-02 + <_> + + 0 -1 585 -1.0959600098431110e-02 + + 2.8818470239639282e-01 -7.7696867287158966e-02 + <_> + + 0 -1 586 3.4907169640064240e-02 + + -1.1712339706718922e-02 3.9965820312500000e-01 + <_> + + 0 -1 587 -1.3335079886019230e-02 + + -4.9896249175071716e-01 5.3193040192127228e-02 + <_> + + 0 -1 588 -3.7070110440254211e-02 + + -5.9346628189086914e-01 1.2502389959990978e-02 + <_> + + 0 -1 589 -9.1118857264518738e-02 + + -6.0664188861846924e-01 3.0223639681935310e-02 + <_> + + 0 -1 590 -6.7527957260608673e-02 + + 3.2593071460723877e-01 -3.2810360193252563e-02 + <_> + + 0 -1 591 -2.6317719370126724e-02 + + -7.6599878072738647e-01 2.5263689458370209e-02 + <_> + + 0 -1 592 3.7877839058637619e-02 + + 1.7415969632565975e-03 -9.1090667247772217e-01 + <_> + + 0 -1 593 1.6833839472383261e-03 + + -6.4769007265567780e-02 3.5946249961853027e-01 + <_> + + 0 -1 594 -4.2451170884305611e-05 + + 6.2228899449110031e-02 -8.5069350898265839e-02 + <_> + + 0 -1 595 2.7713281451724470e-04 + + -1.7252549529075623e-01 1.2511169910430908e-01 + <_> + + 0 -1 596 -3.0400960240513086e-03 + + 1.5032739937305450e-01 -1.4423249661922455e-01 + <_> + + 0 -1 597 -5.4823148995637894e-02 + + 3.4711471199989319e-01 -6.3294216990470886e-02 + <_> + + 0 -1 598 1.4232549583539367e-03 + + 7.3755688965320587e-02 -2.7084198594093323e-01 + <_> + + 0 -1 599 -3.3660030458122492e-03 + + -2.3144030570983887e-01 8.8216871023178101e-02 + <_> + + 0 -1 600 -1.1405759723857045e-03 + + 1.5687429904937744e-01 -1.3379560410976410e-01 + <_> + + 0 -1 601 3.7445020861923695e-03 + + -1.2132400274276733e-01 2.2723269462585449e-01 + <_> + + 0 -1 602 1.6585510224103928e-02 + + 5.4631579667329788e-02 -1.0117000341415405e-01 + <_> + + 0 -1 603 -2.9970710165798664e-03 + + 1.7258630692958832e-01 -1.4288370311260223e-01 + <_> + + 0 -1 604 -3.0509869102388620e-03 + + 1.0889530181884766e-01 -1.2865459918975830e-01 + <_> + + 0 -1 605 -2.7037179097533226e-02 + + -2.1809040009975433e-01 1.0335580259561539e-01 + <_> + + 0 -1 606 -1.4020490460097790e-02 + + 1.7013829946517944e-01 -4.6483799815177917e-02 + <_> + + 0 -1 607 4.0001110173761845e-03 + + 6.1452940106391907e-02 -3.5107728838920593e-01 + <_> + + 0 -1 608 1.1888570152223110e-02 + + -6.5659493207931519e-02 3.4128171205520630e-01 + <_> + + 0 -1 609 1.0041910223662853e-02 + + 1.0645069926977158e-01 -2.3905399441719055e-01 + <_> + + 0 -1 610 -8.3469128003343940e-04 + + 1.1359920352697372e-01 -1.2456230074167252e-01 + <_> + + 0 -1 611 -8.4286198019981384e-02 + + 4.4472348690032959e-01 -4.6677689999341965e-02 + <_> + + 0 -1 612 -1.2084700167179108e-02 + + -3.1389999389648438e-01 8.1864818930625916e-02 + <_> + 69 + -8.5815817117691040e-01 + + <_> + + 0 -1 613 -6.6878342628479004e-01 + + 4.1411510109901428e-01 -1.8810300529003143e-01 + <_> + + 0 -1 614 3.4350738860666752e-04 + + -1.5680180490016937e-01 1.0782240331172943e-01 + <_> + + 0 -1 615 2.6565280277282000e-03 + + -2.2030730545520782e-01 2.1439610421657562e-01 + <_> + + 0 -1 616 -1.9296359270811081e-02 + + 4.2026680707931519e-01 -6.8671546876430511e-02 + <_> + + 0 -1 617 -6.6540208645164967e-03 + + -2.3488819599151611e-01 1.6749989986419678e-01 + <_> + + 0 -1 618 1.5521990135312080e-02 + + 1.9785670563578606e-02 -3.9180341362953186e-01 + <_> + + 0 -1 619 8.0317907035350800e-02 + + -1.9278699532151222e-02 5.8520817756652832e-01 + <_> + + 0 -1 620 -1.0220059752464294e-01 + + -8.1461167335510254e-01 8.9545976370573044e-03 + <_> + + 0 -1 621 -1.0618870146572590e-02 + + 1.8044769763946533e-01 -2.1122869849205017e-01 + <_> + + 0 -1 622 9.8658069968223572e-02 + + -4.9179349094629288e-02 2.1871259808540344e-01 + <_> + + 0 -1 623 -6.6758222877979279e-02 + + -2.6649540662765503e-01 1.0707940161228180e-01 + <_> + + 0 -1 624 -2.9256459325551987e-02 + + -7.8809207677841187e-01 5.6176739744842052e-03 + <_> + + 0 -1 625 -1.2126189656555653e-02 + + 1.0218500345945358e-01 -2.2899429500102997e-01 + <_> + + 0 -1 626 -5.4919619113206863e-02 + + -5.3647202253341675e-01 1.4213330112397671e-02 + <_> + + 0 -1 627 -4.0985811501741409e-03 + + -3.1650361418724060e-01 7.6794192194938660e-02 + <_> + + 0 -1 628 -6.2581077218055725e-02 + + -4.8726239800453186e-01 9.1610476374626160e-03 + <_> + + 0 -1 629 4.9834471195936203e-02 + + -7.5687482953071594e-02 2.9998108744621277e-01 + <_> + + 0 -1 630 1.0333029925823212e-01 + + 3.3387999981641769e-02 -5.6652718782424927e-01 + <_> + + 0 -1 631 -2.6153959333896637e-02 + + 4.4663658738136292e-01 -5.7146150618791580e-02 + <_> + + 0 -1 632 6.8949297070503235e-02 + + 6.6676470451056957e-03 -9.9968850612640381e-01 + <_> + + 0 -1 633 2.1299200598150492e-03 + + -1.8253549933433533e-01 1.2543450295925140e-01 + <_> + + 0 -1 634 -4.4991839677095413e-02 + + -5.6401151418685913e-01 3.7286750972270966e-02 + <_> + + 0 -1 635 2.2533860057592392e-02 + + -4.2648501694202423e-02 5.9839051961898804e-01 + <_> + + 0 -1 636 1.9274459779262543e-01 + + 3.0479490756988525e-02 -8.4564548730850220e-01 + <_> + + 0 -1 637 -9.2559499898925424e-04 + + -2.0614519715309143e-01 1.1016649752855301e-01 + <_> + + 0 -1 638 -3.6584408953785896e-03 + + 9.1432936489582062e-02 -8.2888223230838776e-02 + <_> + + 0 -1 639 3.3741090446710587e-03 + + 8.0734901130199432e-02 -3.0495160818099976e-01 + <_> + + 0 -1 640 -5.1757801324129105e-02 + + -8.0067127943038940e-01 2.8978339396417141e-03 + <_> + + 0 -1 641 1.0498389601707458e-03 + + -1.8396970629692078e-01 1.3429929316043854e-01 + <_> + + 0 -1 642 7.5232777744531631e-03 + + -3.1206240877509117e-02 1.2124940007925034e-01 + <_> + + 0 -1 643 -7.1075286541599780e-05 + + 8.4017656743526459e-02 -2.5043961405754089e-01 + <_> + + 0 -1 644 1.1362830176949501e-02 + + -7.6280519366264343e-02 2.0559790730476379e-01 + <_> + + 0 -1 645 -2.4097480345517397e-03 + + -1.5042850375175476e-01 1.6493639349937439e-01 + <_> + + 0 -1 646 2.4056989699602127e-02 + + 1.4566550031304359e-02 -9.0886771678924561e-01 + <_> + + 0 -1 647 -2.3983620107173920e-02 + + 3.9107671380043030e-01 -5.4178200662136078e-02 + <_> + + 0 -1 648 -2.1438319236040115e-02 + + -4.8545840382575989e-01 4.0402751415967941e-02 + <_> + + 0 -1 649 1.5210740268230438e-02 + + 3.4481588751077652e-02 -5.4406332969665527e-01 + <_> + + 0 -1 650 1.1712989769876003e-02 + + -6.5206751227378845e-02 4.1007021069526672e-01 + <_> + + 0 -1 651 6.3996820244938135e-04 + + -1.4772899448871613e-01 1.5154249966144562e-01 + <_> + + 0 -1 652 -3.4567480906844139e-03 + + 6.3351117074489594e-02 -1.4297829568386078e-01 + <_> + + 0 -1 653 -1.2475489638745785e-03 + + -1.8521060049533844e-01 1.3410830497741699e-01 + <_> + + 0 -1 654 6.6904430277645588e-03 + + 1.4112530648708344e-01 -1.8778939545154572e-01 + <_> + + 0 -1 655 -6.9181032478809357e-02 + + 3.4451478719711304e-01 -8.4655232727527618e-02 + <_> + + 0 -1 656 -6.7893281579017639e-02 + + -7.0076942443847656e-01 2.3327259346842766e-02 + <_> + + 0 -1 657 -8.5538747953251004e-04 + + 9.2393256723880768e-02 -2.1416470408439636e-01 + <_> + + 0 -1 658 1.7967769503593445e-01 + + 2.9103670269250870e-02 -7.8690862655639648e-01 + <_> + + 0 -1 659 -2.9843579977750778e-03 + + 1.6117380559444427e-01 -1.2868699431419373e-01 + <_> + + 0 -1 660 1.9973449409008026e-02 + + 3.6350231617689133e-02 -5.9400641918182373e-01 + <_> + + 0 -1 661 -8.3998020272701979e-04 + + 1.1332140117883682e-01 -1.9175720214843750e-01 + <_> + + 0 -1 662 5.0804121419787407e-03 + + 5.3663559257984161e-02 -2.7940011024475098e-01 + <_> + + 0 -1 663 7.3341121897101402e-03 + + -1.6792379319667816e-01 1.2119220197200775e-01 + <_> + + 0 -1 664 7.6924441382288933e-03 + + -6.9076187908649445e-02 1.8550349771976471e-01 + <_> + + 0 -1 665 2.0062309340573847e-04 + + -2.0654049515724182e-01 9.7337253391742706e-02 + <_> + + 0 -1 666 2.6919560506939888e-02 + + -2.3648599162697792e-02 6.4873528480529785e-01 + <_> + + 0 -1 667 -2.7951570227742195e-03 + + -2.0725600421428680e-01 1.0188090056180954e-01 + <_> + + 0 -1 668 7.8026622533798218e-02 + + 8.9439805597066879e-03 -3.9990609884262085e-01 + <_> + + 0 -1 669 -1.0000459849834442e-01 + + 3.7361750006675720e-01 -5.5814821273088455e-02 + <_> + + 0 -1 670 -1.4978240430355072e-01 + + 3.8677608966827393e-01 -5.5641401559114456e-02 + <_> + + 0 -1 671 3.3566348254680634e-02 + + 7.5311936438083649e-02 -3.2007390260696411e-01 + <_> + + 0 -1 672 -2.1213890612125397e-01 + + -5.9270721673965454e-01 4.9450621008872986e-03 + <_> + + 0 -1 673 -1.4402889646589756e-02 + + 3.2471069693565369e-01 -5.8492168784141541e-02 + <_> + + 0 -1 674 -1.8413169309496880e-02 + + -9.6801750361919403e-02 1.0343659669160843e-01 + <_> + + 0 -1 675 1.6228349879384041e-02 + + -6.0577668249607086e-02 3.1738010048866272e-01 + <_> + + 0 -1 676 -6.7683439701795578e-03 + + -1.9742150604724884e-01 2.7996420860290527e-02 + <_> + + 0 -1 677 -1.9165309146046638e-02 + + -2.5684070587158203e-01 8.3432748913764954e-02 + <_> + + 0 -1 678 2.8667549486272037e-04 + + -1.5241080522537231e-01 1.4404779672622681e-01 + <_> + + 0 -1 679 9.4157401472330093e-03 + + -7.3207639157772064e-02 3.3655610680580139e-01 + <_> + + 0 -1 680 2.3321900516748428e-02 + + -6.1898268759250641e-02 8.3489909768104553e-02 + <_> + + 0 -1 681 -1.1910670436918736e-02 + + -1.9628530740737915e-01 9.6807330846786499e-02 + <_> + 63 + -7.2787708044052124e-01 + + <_> + + 0 -1 682 -9.4191312789916992e-02 + + 4.7028279304504395e-01 -1.4449509978294373e-01 + <_> + + 0 -1 683 -6.9314462598413229e-04 + + 1.7749489843845367e-01 -1.8127989768981934e-01 + <_> + + 0 -1 684 -1.2782390415668488e-01 + + 2.9733940958976746e-01 -1.0098580271005630e-01 + <_> + + 0 -1 685 -2.5297680404037237e-03 + + 1.0854879766702652e-01 -1.3471469283103943e-01 + <_> + + 0 -1 686 -2.5406670756638050e-03 + + -2.7025818824768066e-01 1.0289029777050018e-01 + <_> + + 0 -1 687 -1.5717690112069249e-03 + + 1.7058460414409637e-01 -1.0923519730567932e-01 + <_> + + 0 -1 688 1.4790190383791924e-02 + + 2.3690680041909218e-02 -5.1412177085876465e-01 + <_> + + 0 -1 689 -1.1837840080261230e-02 + + 1.5754750370979309e-01 -2.7252310886979103e-02 + <_> + + 0 -1 690 -3.8180808769538999e-04 + + 1.0274309664964676e-01 -2.1815380454063416e-01 + <_> + + 0 -1 691 5.0768889486789703e-02 + + 7.3335068300366402e-03 -8.5053902864456177e-01 + <_> + + 0 -1 692 2.2738629952073097e-02 + + -4.3974649161100388e-02 5.0167572498321533e-01 + <_> + + 0 -1 693 7.3323072865605354e-04 + + -9.8431721329689026e-02 1.1515360325574875e-01 + <_> + + 0 -1 694 1.1889509623870254e-03 + + -2.2443179786205292e-01 1.0813289880752563e-01 + <_> + + 0 -1 695 -3.2934029586613178e-03 + + 7.1840867400169373e-02 -8.0868020653724670e-02 + <_> + + 0 -1 696 -3.0113169923424721e-03 + + -2.9698678851127625e-01 7.9700268805027008e-02 + <_> + + 0 -1 697 -1.5521480236202478e-03 + + 1.8694180250167847e-01 -1.1467470228672028e-01 + <_> + + 0 -1 698 -1.0300680063664913e-02 + + -2.9109370708465576e-01 6.7836336791515350e-02 + <_> + + 0 -1 699 -2.6368349790573120e-03 + + 1.1284109950065613e-01 -7.3468528687953949e-02 + <_> + + 0 -1 700 -3.2815459417179227e-04 + + 8.1921890377998352e-02 -2.4893359839916229e-01 + <_> + + 0 -1 701 -3.4514568746089935e-02 + + 4.2230990529060364e-01 -3.4608390182256699e-02 + <_> + + 0 -1 702 2.1102999744471163e-04 + + -1.9479750096797943e-01 1.1572039872407913e-01 + <_> + + 0 -1 703 -4.4254157692193985e-03 + + -1.9316120445728302e-01 5.8137431740760803e-02 + <_> + + 0 -1 704 -1.7686230130493641e-03 + + -1.7518809437751770e-01 1.4515039324760437e-01 + <_> + + 0 -1 705 -3.3355921041220427e-03 + + 2.2621470689773560e-01 -1.0195499658584595e-01 + <_> + + 0 -1 706 4.5241121202707291e-02 + + 3.3572640269994736e-02 -6.6535997390747070e-01 + <_> + + 0 -1 707 -2.7708040550351143e-02 + + -4.7514501214027405e-01 1.6605619341135025e-02 + <_> + + 0 -1 708 -6.0042630881071091e-02 + + 2.7002659440040588e-01 -7.5283601880073547e-02 + <_> + + 0 -1 709 9.3657420948147774e-03 + + -5.2090760320425034e-02 3.4359771013259888e-01 + <_> + + 0 -1 710 2.2545119747519493e-02 + + 4.5823760330677032e-02 -5.3111177682876587e-01 + <_> + + 0 -1 711 -6.6756099462509155e-02 + + 5.1867592334747314e-01 -1.0766089893877506e-02 + <_> + + 0 -1 712 4.3578571639955044e-03 + + -1.6680300235748291e-01 1.3410590589046478e-01 + <_> + + 0 -1 713 -3.6338180303573608e-02 + + -5.4825192689895630e-01 1.8291600048542023e-02 + <_> + + 0 -1 714 -4.5509558171033859e-02 + + 3.9119181036949158e-01 -5.4338268935680389e-02 + <_> + + 0 -1 715 6.2883161008358002e-03 + + 9.5495186746120453e-02 -2.4893720448017120e-01 + <_> + + 0 -1 716 1.5809159958735108e-03 + + -1.6792270541191101e-01 1.1553759872913361e-01 + <_> + + 0 -1 717 -1.5780210494995117e-01 + + -6.9598740339279175e-01 3.1015299260616302e-02 + <_> + + 0 -1 718 -5.0400748848915100e-02 + + -6.1013418436050415e-01 2.5600189343094826e-02 + <_> + + 0 -1 719 -8.3708087913691998e-04 + + 6.3689701259136200e-02 -3.2572910189628601e-01 + <_> + + 0 -1 720 5.2259840071201324e-02 + + -5.2639529109001160e-02 4.3018800020217896e-01 + <_> + + 0 -1 721 6.6796218743547797e-04 + + 8.0761440098285675e-02 -2.5092118978500366e-01 + <_> + + 0 -1 722 -3.6306399852037430e-02 + + 7.2837859392166138e-01 -2.8703549876809120e-02 + <_> + + 0 -1 723 -7.5823411345481873e-02 + + -7.6045262813568115e-01 1.3166300021111965e-02 + <_> + + 0 -1 724 -5.5567082017660141e-03 + + 1.1258409917354584e-01 -1.9850979745388031e-01 + <_> + + 0 -1 725 3.1275521032512188e-03 + + -1.0436189919710159e-01 1.0283000022172928e-01 + <_> + + 0 -1 726 2.7931319549679756e-02 + + 4.7023560851812363e-02 -4.7727531194686890e-01 + <_> + + 0 -1 727 1.5156970359385014e-02 + + -4.9909379333257675e-02 2.1705010533332825e-01 + <_> + + 0 -1 728 6.8009081296622753e-03 + + 1.1713290214538574e-01 -2.2082920372486115e-01 + <_> + + 0 -1 729 -4.3796948157250881e-03 + + 1.7191199958324432e-01 -8.9668810367584229e-02 + <_> + + 0 -1 730 -6.9269728846848011e-03 + + 8.8258482515811920e-02 -2.6454809308052063e-01 + <_> + + 0 -1 731 -2.0586250722408295e-01 + + -5.0262999534606934e-01 4.0832251310348511e-02 + <_> + + 0 -1 732 -1.1398729839129373e-04 + + 1.0535170137882233e-01 -1.9488720595836639e-01 + <_> + + 0 -1 733 3.6993779242038727e-02 + + -5.4779630154371262e-02 2.2932989895343781e-01 + <_> + + 0 -1 734 4.7788480296730995e-03 + + 9.1294333338737488e-02 -2.4968950450420380e-01 + <_> + + 0 -1 735 1.1999059934169054e-03 + + -9.2685289680957794e-02 1.1050710082054138e-01 + <_> + + 0 -1 736 2.0830740686506033e-03 + + -1.0583080351352692e-01 1.7405270040035248e-01 + <_> + + 0 -1 737 2.7166489511728287e-02 + + 1.1538780294358730e-02 -1.0000569820404053e+00 + <_> + + 0 -1 738 -4.3531907722353935e-03 + + -2.6105979084968567e-01 7.8109443187713623e-02 + <_> + + 0 -1 739 -1.6676170751452446e-02 + + -6.3766658306121826e-01 1.2807319872081280e-02 + <_> + + 0 -1 740 -1.7588710179552436e-03 + + 1.5328720211982727e-01 -1.4830219745635986e-01 + <_> + + 0 -1 741 -1.3470610138028860e-03 + + 1.1022730171680450e-01 -1.1166580021381378e-01 + <_> + + 0 -1 742 -7.7226730063557625e-03 + + 2.6749759912490845e-01 -8.4375701844692230e-02 + <_> + + 0 -1 743 2.4557989090681076e-02 + + 1.1705229990184307e-02 -6.9936311244964600e-01 + <_> + + 0 -1 744 -4.1882451623678207e-03 + + -2.0845660567283630e-01 1.1073870211839676e-01 + <_> + 67 + -7.7944219112396240e-01 + + <_> + + 0 -1 745 -3.0925211310386658e-01 + + 3.1520840525627136e-01 -1.6629250347614288e-01 + <_> + + 0 -1 746 3.8660250604152679e-02 + + -5.7934600859880447e-02 4.5278790593147278e-01 + <_> + + 0 -1 747 -1.8853870034217834e-01 + + -8.2013928890228271e-01 3.0941359698772430e-02 + <_> + + 0 -1 748 7.1423681220039725e-04 + + 1.0280930250883102e-01 -2.4902869760990143e-01 + <_> + + 0 -1 749 -7.2074443101882935e-02 + + 3.3171579241752625e-01 -7.3685511946678162e-02 + <_> + + 0 -1 750 9.4616664573550224e-03 + + 3.2647788524627686e-02 -3.6112511157989502e-01 + <_> + + 0 -1 751 -4.6513080596923828e-02 + + -4.7550851106643677e-01 5.6877400726079941e-02 + <_> + + 0 -1 752 -3.4777458757162094e-02 + + -6.3515567779541016e-01 3.1314119696617126e-02 + <_> + + 0 -1 753 -1.4840300427749753e-03 + + 9.2628233134746552e-02 -2.5283080339431763e-01 + <_> + + 0 -1 754 8.3039281889796257e-03 + + 3.3991388976573944e-02 -1.8357479572296143e-01 + <_> + + 0 -1 755 2.7342209592461586e-02 + + -5.1393941044807434e-02 5.5958998203277588e-01 + <_> + + 0 -1 756 5.8637421578168869e-02 + + -5.7350661605596542e-02 1.4842259883880615e-01 + <_> + + 0 -1 757 -3.7032511085271835e-02 + + -4.0602868795394897e-01 6.6790133714675903e-02 + <_> + + 0 -1 758 8.9913606643676758e-03 + + -1.9094319641590118e-01 5.9438090771436691e-02 + <_> + + 0 -1 759 -5.9351198375225067e-02 + + -8.7097257375717163e-01 2.1483449265360832e-02 + <_> + + 0 -1 760 3.7055540084838867e-01 + + -4.0396090596914291e-02 6.0631322860717773e-01 + <_> + + 0 -1 761 -8.4517069626599550e-04 + + 1.3660719990730286e-01 -1.5541790425777435e-01 + <_> + + 0 -1 762 1.0664479807019234e-02 + + 3.4129761159420013e-02 -2.3508089780807495e-01 + <_> + + 0 -1 763 3.7040449678897858e-03 + + 1.1293920129537582e-01 -1.5596470236778259e-01 + <_> + + 0 -1 764 2.3328550159931183e-02 + + 3.6770980805158615e-02 -1.6631129384040833e-01 + <_> + + 0 -1 765 2.0906640216708183e-02 + + -7.3391966521739960e-02 3.2708668708801270e-01 + <_> + + 0 -1 766 2.0865180995315313e-03 + + 9.6375763416290283e-02 -2.1638840436935425e-01 + <_> + + 0 -1 767 1.2039430439472198e-03 + + -1.7018699645996094e-01 1.0815030336380005e-01 + <_> + + 0 -1 768 3.3848760649561882e-03 + + -1.0820890218019485e-01 9.0751953423023224e-02 + <_> + + 0 -1 769 -1.5309279784560204e-02 + + -6.2071442604064941e-01 3.1353730708360672e-02 + <_> + + 0 -1 770 2.1820720285177231e-02 + + -5.7232249528169632e-02 2.9141768813133240e-01 + <_> + + 0 -1 771 5.8554150164127350e-03 + + 5.5810708552598953e-02 -3.4557789564132690e-01 + <_> + + 0 -1 772 -8.8380590081214905e-02 + + -5.8971607685089111e-01 3.2257869839668274e-02 + <_> + + 0 -1 773 -3.6303598433732986e-02 + + 6.7906290292739868e-01 -3.1298439949750900e-02 + <_> + + 0 -1 774 6.7714422941207886e-02 + + 2.8151830658316612e-02 -7.5963890552520752e-01 + <_> + + 0 -1 775 -1.7487880541011691e-03 + + 1.3521270453929901e-01 -1.4939880371093750e-01 + <_> + + 0 -1 776 5.7627420872449875e-02 + + 1.4716790057718754e-02 -6.4088898897171021e-01 + <_> + + 0 -1 777 4.8004398122429848e-03 + + 5.7510860264301300e-02 -3.0728340148925781e-01 + <_> + + 0 -1 778 1.5568589791655540e-02 + + -2.6860829442739487e-02 3.9390829205513000e-01 + <_> + + 0 -1 779 -9.9650640040636063e-03 + + 3.2090151309967041e-01 -5.8974441140890121e-02 + <_> + + 0 -1 780 -9.1902203857898712e-03 + + -3.8006910681724548e-01 3.5807169973850250e-02 + <_> + + 0 -1 781 3.0834939330816269e-02 + + 4.0354121476411819e-02 -5.0782901048660278e-01 + <_> + + 0 -1 782 -6.4900278812274337e-04 + + 9.5597133040428162e-02 -1.8812850117683411e-01 + <_> + + 0 -1 783 -3.9334357716143131e-03 + + -2.0279949903488159e-01 1.0514850169420242e-01 + <_> + + 0 -1 784 -2.1477680653333664e-02 + + -3.2985571026802063e-01 3.5263378173112869e-02 + <_> + + 0 -1 785 -2.7516249567270279e-02 + + 3.4558650851249695e-01 -7.2544910013675690e-02 + <_> + + 0 -1 786 -7.2914459742605686e-03 + + 1.0051680356264114e-01 -1.3560770452022552e-01 + <_> + + 0 -1 787 -5.6135728955268860e-02 + + 4.0078470110893250e-01 -5.1991838961839676e-02 + <_> + + 0 -1 788 1.3679620623588562e-01 + + -1.6432780772447586e-02 5.6100088357925415e-01 + <_> + + 0 -1 789 -2.4549920111894608e-02 + + -1.8187479674816132e-01 1.4125369489192963e-01 + <_> + + 0 -1 790 4.6405121684074402e-03 + + -1.6500659286975861e-01 1.4912450313568115e-01 + <_> + + 0 -1 791 -2.1023359149694443e-02 + + -1.9611929357051849e-01 9.9226936697959900e-02 + <_> + + 0 -1 792 -4.8856949433684349e-03 + + 1.1330509930849075e-01 -8.0172486603260040e-02 + <_> + + 0 -1 793 -1.7337809503078461e-01 + + -8.3458930253982544e-01 2.3691669106483459e-02 + <_> + + 0 -1 794 -9.2903972836211324e-04 + + 8.5904203355312347e-02 -1.0580120235681534e-01 + <_> + + 0 -1 795 -1.0562090203166008e-02 + + 2.6989871263504028e-01 -6.7542143166065216e-02 + <_> + + 0 -1 796 1.5071259811520576e-02 + + 5.8657489717006683e-02 -3.2436290383338928e-01 + <_> + + 0 -1 797 -1.8616430461406708e-02 + + 3.5660719871520996e-01 -5.3099378943443298e-02 + <_> + + 0 -1 798 8.4412463009357452e-02 + + 1.7715929076075554e-02 -4.5803558826446533e-01 + <_> + + 0 -1 799 5.1138769835233688e-02 + + 1.7407679930329323e-02 -9.4110202789306641e-01 + <_> + + 0 -1 800 -1.0613460093736649e-02 + + -6.0632371902465820e-01 3.0793670564889908e-02 + <_> + + 0 -1 801 1.8357619643211365e-02 + + -7.7268190681934357e-02 2.9780578613281250e-01 + <_> + + 0 -1 802 -8.4444461390376091e-04 + + 7.8023009002208710e-02 -2.5017648935317993e-01 + <_> + + 0 -1 803 -6.2388968653976917e-03 + + -4.8017698526382446e-01 3.9185639470815659e-02 + <_> + + 0 -1 804 -3.5363171249628067e-02 + + -1. 9.3268742784857750e-03 + <_> + + 0 -1 805 -7.3558121919631958e-02 + + -7.7895337343215942e-01 1.8441500142216682e-02 + <_> + + 0 -1 806 -8.7034203112125397e-02 + + 4.3624061346054077e-01 -1.7716599628329277e-02 + <_> + + 0 -1 807 -8.0721646547317505e-02 + + 2.7296718955039978e-01 -6.6346958279609680e-02 + <_> + + 0 -1 808 1.0344590246677399e-01 + + 9.0693607926368713e-03 -6.6438651084899902e-01 + <_> + + 0 -1 809 9.3807540833950043e-03 + + 7.1242772042751312e-02 -2.7381658554077148e-01 + <_> + + 0 -1 810 -7.1806147694587708e-02 + + -9.1222041845321655e-01 8.0809993669390678e-03 + <_> + + 0 -1 811 -1.9418599549680948e-03 + + 1.8472340703010559e-01 -1.1344549804925919e-01 + <_> + 68 + -7.3019427061080933e-01 + + <_> + + 0 -1 812 3.0328959226608276e-02 + + -1.7539510130882263e-01 3.6945340037345886e-01 + <_> + + 0 -1 813 -8.2631781697273254e-02 + + 2.2216479480266571e-01 -8.7577551603317261e-02 + <_> + + 0 -1 814 2.5548380799591541e-03 + + -1.5091089904308319e-01 1.4608770608901978e-01 + <_> + + 0 -1 815 -1.4431839808821678e-03 + + 6.2405250966548920e-02 -1.8302099406719208e-01 + <_> + + 0 -1 816 4.3006289750337601e-02 + + 8.5711486637592316e-02 -4.4278779625892639e-01 + <_> + + 0 -1 817 -1.7748139798641205e-01 + + -6.7308551073074341e-01 2.1622380241751671e-02 + <_> + + 0 -1 818 9.9723696708679199e-02 + + -4.2775660753250122e-02 6.9088941812515259e-01 + <_> + + 0 -1 819 -1.7957199364900589e-02 + + 8.8784933090209961e-02 -2.9352998733520508e-01 + <_> + + 0 -1 820 5.8914110995829105e-03 + + 2.6884179562330246e-02 -3.9257821440696716e-01 + <_> + + 0 -1 821 -1.2439199490472674e-03 + + 8.3695329725742340e-02 -1.3524650037288666e-01 + <_> + + 0 -1 822 -6.3109956681728363e-02 + + 6.8365001678466797e-01 -1.1174580082297325e-02 + <_> + + 0 -1 823 5.3107268176972866e-03 + + 7.3095791041851044e-02 -3.3228519558906555e-01 + <_> + + 0 -1 824 -9.6346868667751551e-04 + + 9.3923456966876984e-02 -2.6014220714569092e-01 + <_> + + 0 -1 825 -2.0377680659294128e-02 + + 2.3682409524917603e-01 -5.1811341196298599e-02 + <_> + + 0 -1 826 -1.5610749833285809e-02 + + -4.8465269804000854e-01 4.2128730565309525e-02 + <_> + + 0 -1 827 4.5497290790081024e-02 + + 5.7874252088367939e-03 -5.2637368440628052e-01 + <_> + + 0 -1 828 -1.2244869954884052e-02 + + 3.0523040890693665e-01 -7.9311266541481018e-02 + <_> + + 0 -1 829 -5.5875871330499649e-03 + + 7.2504900395870209e-02 -1.0300940275192261e-01 + <_> + + 0 -1 830 -1.3237710110843182e-02 + + -2.1259979903697968e-01 1.4112070202827454e-01 + <_> + + 0 -1 831 -1.6236070543527603e-02 + + -3.6822131276130676e-01 1.6904499381780624e-02 + <_> + + 0 -1 832 8.7341741891577840e-04 + + -1.7513209581375122e-01 1.1717790365219116e-01 + <_> + + 0 -1 833 7.8164516016840935e-03 + + -4.0935669094324112e-02 3.8136309385299683e-01 + <_> + + 0 -1 834 1.4803799786022864e-05 + + -1.1581300199031830e-01 1.8054120242595673e-01 + <_> + + 0 -1 835 3.6272540688514709e-02 + + 1.5196749940514565e-02 -4.6037960052490234e-01 + <_> + + 0 -1 836 -3.8026720285415649e-03 + + 1.3440360128879547e-01 -1.6124980151653290e-01 + <_> + + 0 -1 837 -1.4585750177502632e-02 + + -2.8331491351127625e-01 7.4682116508483887e-02 + <_> + + 0 -1 838 1.4677370199933648e-03 + + -1.3493220508098602e-01 1.4244909584522247e-01 + <_> + + 0 -1 839 -1.3981569558382034e-02 + + 2.1735540032386780e-01 -5.2886679768562317e-02 + <_> + + 0 -1 840 -6.3076039077714086e-04 + + 1.4901949465274811e-01 -1.3620099425315857e-01 + <_> + + 0 -1 841 -1.4475540257990360e-02 + + -1.9180099666118622e-01 1.0607130080461502e-01 + <_> + + 0 -1 842 -3.2217580825090408e-02 + + 2.8091669082641602e-01 -8.5046291351318359e-02 + <_> + + 0 -1 843 3.4460560418665409e-03 + + 7.4571870267391205e-02 -2.7108609676361084e-01 + <_> + + 0 -1 844 -4.3949890881776810e-02 + + 4.4002100825309753e-01 -4.5509129762649536e-02 + <_> + + 0 -1 845 -1.1966270394623280e-02 + + 6.3286870718002319e-02 -1.9805380702018738e-01 + <_> + + 0 -1 846 -4.3486028909683228e-01 + + -7.6205497980117798e-01 2.1508129313588142e-02 + <_> + + 0 -1 847 3.9887550473213196e-01 + + 8.0703729763627052e-03 -8.4284877777099609e-01 + <_> + + 0 -1 848 -4.4802378863096237e-02 + + -6.8417382240295410e-01 2.2474979981780052e-02 + <_> + + 0 -1 849 -1.0935150086879730e-01 + + 2.1119509637355804e-01 -3.9731640368700027e-02 + <_> + + 0 -1 850 3.0923409387469292e-02 + + 4.4779401272535324e-02 -3.5875031352043152e-01 + <_> + + 0 -1 851 1.3285979628562927e-02 + + -4.8151660710573196e-02 3.7119218707084656e-01 + <_> + + 0 -1 852 -3.9830091409385204e-03 + + 1.2781530618667603e-01 -1.9959120452404022e-01 + <_> + + 0 -1 853 1.4184620231389999e-02 + + -3.9896048605442047e-02 2.4085929989814758e-01 + <_> + + 0 -1 854 1.6680279513821006e-03 + + -1.8107059597969055e-01 9.3981906771659851e-02 + <_> + + 0 -1 855 -2.2055890411138535e-02 + + -2.8798168897628784e-01 3.0038369819521904e-02 + <_> + + 0 -1 856 -6.0371801257133484e-02 + + 2.9529640078544617e-01 -6.4714096486568451e-02 + <_> + + 0 -1 857 5.9291448444128036e-02 + + 8.4209917113184929e-03 -5.8830922842025757e-01 + <_> + + 0 -1 858 3.2637149095535278e-02 + + 3.2118339091539383e-02 -5.1192921400070190e-01 + <_> + + 0 -1 859 -9.8897633142769337e-04 + + 1.3382619619369507e-01 -1.1545710265636444e-01 + <_> + + 0 -1 860 -3.5560440272092819e-02 + + -1.5159629285335541e-01 1.0519140213727951e-01 + <_> + + 0 -1 861 9.8722549155354500e-03 + + 9.3462042510509491e-02 -2.5988951325416565e-01 + <_> + + 0 -1 862 7.1953269653022289e-03 + + -8.6937829852104187e-02 2.8372770547866821e-01 + <_> + + 0 -1 863 2.4437099695205688e-02 + + -3.9930108934640884e-02 3.9243239164352417e-01 + <_> + + 0 -1 864 5.2195340394973755e-03 + + 4.9804110080003738e-02 -3.1846821308135986e-01 + <_> + + 0 -1 865 2.3442960809916258e-03 + + -5.4469950497150421e-02 3.3718121051788330e-01 + <_> + + 0 -1 866 4.7694300301373005e-03 + + 7.1476787328720093e-02 -3.1018280982971191e-01 + <_> + + 0 -1 867 -1.4517470262944698e-02 + + 7.8642480075359344e-02 -1.4538839459419250e-01 + <_> + + 0 -1 868 4.4710729271173477e-02 + + -2.5051780045032501e-02 6.4730519056320190e-01 + <_> + + 0 -1 869 1.6867399215698242e-02 + + 2.9088959097862244e-02 -3.9030238986015320e-01 + <_> + + 0 -1 870 -9.0343318879604340e-04 + + 8.7722577154636383e-02 -1.6588549315929413e-01 + <_> + + 0 -1 871 -8.2187339663505554e-02 + + -8.4238857030868530e-01 9.8376423120498657e-03 + <_> + + 0 -1 872 1.8525390187278390e-03 + + -1.2251490354537964e-01 1.2000189721584320e-01 + <_> + + 0 -1 873 -9.3228723853826523e-03 + + 7.8422851860523224e-02 -1.3231949508190155e-01 + <_> + + 0 -1 874 2.2730689495801926e-02 + + -3.3696789294481277e-02 4.4383940100669861e-01 + <_> + + 0 -1 875 1.0286659747362137e-01 + + 1.7917430028319359e-02 -5.8341610431671143e-01 + <_> + + 0 -1 876 -9.9547371268272400e-02 + + -9.5365560054779053e-01 1.2582040391862392e-02 + <_> + + 0 -1 877 1.6412759199738503e-02 + + 1.6067119315266609e-02 -4.1402378678321838e-01 + <_> + + 0 -1 878 -2.5932409334927797e-03 + + 5.2763499319553375e-02 -3.0404600501060486e-01 + <_> + + 0 -1 879 9.5953093841671944e-03 + + 8.3528086543083191e-02 -1.1780069768428802e-01 + <_> + 66 + -6.8558442592620850e-01 + + <_> + + 0 -1 880 -3.5430109500885010e-01 + + 3.1792920827865601e-01 -1.8512800335884094e-01 + <_> + + 0 -1 881 -1.4761329628527164e-02 + + 3.4065079689025879e-01 -8.6621738970279694e-02 + <_> + + 0 -1 882 -1.1580450087785721e-01 + + -7.2353202104568481e-01 3.4404840320348740e-02 + <_> + + 0 -1 883 -4.4705160689773038e-05 + + 8.2497082650661469e-02 -2.1311110258102417e-01 + <_> + + 0 -1 884 -5.8883379097096622e-05 + + 1.0809300094842911e-01 -1.8269860744476318e-01 + <_> + + 0 -1 885 3.7944849580526352e-02 + + -2.4756550788879395e-02 4.5866918563842773e-01 + <_> + + 0 -1 886 -2.1807940211147070e-03 + + 1.5783859789371490e-01 -1.7752459645271301e-01 + <_> + + 0 -1 887 -4.5430101454257965e-02 + + -3.7249541282653809e-01 5.7393261231482029e-03 + <_> + + 0 -1 888 1.9972559530287981e-03 + + -1.9175310432910919e-01 1.1995170265436172e-01 + <_> + + 0 -1 889 -2.2458820239990018e-05 + + 9.1529168188571930e-02 -1.3080990314483643e-01 + <_> + + 0 -1 890 -3.7994279991835356e-03 + + -2.0454970002174377e-01 1.4146579802036285e-01 + <_> + + 0 -1 891 -2.7970419614575803e-04 + + 1.1078160256147385e-01 -1.8713960051536560e-01 + <_> + + 0 -1 892 -3.9631421677768230e-03 + + -3.7749990820884705e-01 5.6935790926218033e-02 + <_> + + 0 -1 893 -1.4290240360423923e-03 + + -1.9449859857559204e-01 9.8834916949272156e-02 + <_> + + 0 -1 894 2.1182179450988770e-02 + + -8.7030410766601562e-02 2.8888610005378723e-01 + <_> + + 0 -1 895 8.7332521798089147e-04 + + -1.1729159951210022e-01 1.2506540119647980e-01 + <_> + + 0 -1 896 2.6135759428143501e-02 + + -3.9572428911924362e-02 6.2252640724182129e-01 + <_> + + 0 -1 897 4.3046330101788044e-03 + + 1.1582309752702713e-01 -1.9618239998817444e-01 + <_> + + 0 -1 898 1.5224959934130311e-03 + + -1.8586060404777527e-01 1.1688389629125595e-01 + <_> + + 0 -1 899 -7.4201932875439525e-04 + + 9.8724737763404846e-02 -2.5791341066360474e-01 + <_> + + 0 -1 900 -2.5593061000108719e-03 + + 1.7307940125465393e-01 -1.2067069858312607e-01 + <_> + + 0 -1 901 -9.5563217997550964e-02 + + 3.4646418690681458e-01 -1.3142139650881290e-02 + <_> + + 0 -1 902 1.3280790299177170e-02 + + 1.2056879699230194e-01 -2.0627740025520325e-01 + <_> + + 0 -1 903 1.8245529383420944e-02 + + -6.7242950201034546e-02 4.6858128160238266e-02 + <_> + + 0 -1 904 -6.1288971453905106e-02 + + -6.6364967823028564e-01 2.9319150373339653e-02 + <_> + + 0 -1 905 -2.6133419945836067e-02 + + 2.0848380029201508e-01 -2.7202930301427841e-02 + <_> + + 0 -1 906 -3.2300818711519241e-02 + + -6.2726408243179321e-01 3.0091879889369011e-02 + <_> + + 0 -1 907 5.0284489989280701e-02 + + 1.5047290362417698e-03 -5.9630411863327026e-01 + <_> + + 0 -1 908 -1.8137119710445404e-02 + + 2.9262909293174744e-01 -6.9213449954986572e-02 + <_> + + 0 -1 909 1.0980300139635801e-03 + + 1.0316859930753708e-01 -1.6558070480823517e-01 + <_> + + 0 -1 910 3.9596110582351685e-03 + + -5.7063579559326172e-02 3.3744910359382629e-01 + <_> + + 0 -1 911 3.1622028909623623e-03 + + 8.8302358984947205e-02 -2.7917590737342834e-01 + <_> + + 0 -1 912 8.4337368607521057e-03 + + 8.6311057209968567e-02 -2.5153660774230957e-01 + <_> + + 0 -1 913 2.3408479988574982e-02 + + -3.7011519074440002e-02 2.5571560859680176e-01 + <_> + + 0 -1 914 -1.9710899796336889e-03 + + 1.4960870146751404e-01 -1.3213759660720825e-01 + <_> + + 0 -1 915 -3.1434781849384308e-02 + + 2.7072909474372864e-01 -2.4784140288829803e-02 + <_> + + 0 -1 916 -2.0984669681638479e-03 + + -2.2842940688133240e-01 9.2392489314079285e-02 + <_> + + 0 -1 917 -1.0477580130100250e-01 + + 1.3740949332714081e-01 -5.8604940772056580e-02 + <_> + + 0 -1 918 1.2558500282466412e-02 + + 9.4428263604640961e-02 -2.3187640309333801e-01 + <_> + + 0 -1 919 2.6465631090104580e-03 + + -2.0493589341640472e-01 9.2889577150344849e-02 + <_> + + 0 -1 920 2.8069379925727844e-01 + + 4.0848400443792343e-02 -4.6177521347999573e-01 + <_> + + 0 -1 921 -4.5882318168878555e-02 + + -7.1715551614761353e-01 9.1696027666330338e-03 + <_> + + 0 -1 922 -1.3070689747110009e-03 + + 1.6250529885292053e-01 -1.1437030136585236e-01 + <_> + + 0 -1 923 6.8374760448932648e-03 + + -6.7564792931079865e-02 2.1927219629287720e-01 + <_> + + 0 -1 924 -5.8329561725258827e-03 + + -3.5843908786773682e-01 5.7467628270387650e-02 + <_> + + 0 -1 925 -4.0936999022960663e-02 + + -5.5129498243331909e-01 1.3819620013237000e-02 + <_> + + 0 -1 926 1.8727440387010574e-02 + + -5.2844639867544174e-02 3.4427130222320557e-01 + <_> + + 0 -1 927 1.0303989984095097e-03 + + -9.4872146844863892e-02 1.1235869675874710e-01 + <_> + + 0 -1 928 -2.6228028582409024e-04 + + 6.3875511288642883e-02 -3.0397358536720276e-01 + <_> + + 0 -1 929 -2.6861110702157021e-02 + + 1.7592920362949371e-01 -6.2506988644599915e-02 + <_> + + 0 -1 930 3.1061280518770218e-02 + + -7.2171129286289215e-02 3.1532520055770874e-01 + <_> + + 0 -1 931 -7.1269841864705086e-03 + + -1.2540310621261597e-01 1.0068179666996002e-01 + <_> + + 0 -1 932 -2.7709340676665306e-02 + + -8.0085551738739014e-01 2.5742180645465851e-02 + <_> + + 0 -1 933 4.2209450155496597e-02 + + 2.7846070006489754e-02 -5.6140202283859253e-01 + <_> + + 0 -1 934 6.2995860353112221e-03 + + 1.0806919634342194e-01 -2.0114520192146301e-01 + <_> + + 0 -1 935 2.0048789680004120e-02 + + -5.8164618909358978e-02 1.8885469436645508e-01 + <_> + + 0 -1 936 -7.8481709351763129e-05 + + 8.2995712757110596e-02 -2.1331989765167236e-01 + <_> + + 0 -1 937 -8.9945547282695770e-02 + + -7.9307717084884644e-01 7.8350491821765900e-03 + <_> + + 0 -1 938 7.7181761153042316e-03 + + 4.1435040533542633e-02 -3.7721860408782959e-01 + <_> + + 0 -1 939 5.3638177923858166e-03 + + -9.3567937612533569e-02 1.4666350185871124e-01 + <_> + + 0 -1 940 1.4555330388247967e-02 + + -5.6989211589097977e-02 3.4367969632148743e-01 + <_> + + 0 -1 941 1.0583730041980743e-01 + + 3.0579300597310066e-02 -5.8684998750686646e-01 + <_> + + 0 -1 942 2.7123570907860994e-04 + + 8.5480518639087677e-02 -2.2808749973773956e-01 + <_> + + 0 -1 943 -7.3196433484554291e-02 + + -5.1212561130523682e-01 9.6583841368556023e-03 + <_> + + 0 -1 944 8.3729642210528255e-04 + + -1.7978319525718689e-01 1.4117470383644104e-01 + <_> + + 0 -1 945 1.9459549803286791e-03 + + 8.7605938315391541e-02 -2.0442050695419312e-01 + <_> + 78 + -3.0717300415039062e+01 + + <_> + + 0 -1 946 -8.5505366325378418e-02 + + 2.6714649796485901e-01 -1.8152849376201630e-01 + <_> + + 0 -1 947 -3.7014279514551163e-02 + + 3.7405461072921753e-01 -7.0312701165676117e-02 + <_> + + 0 -1 948 1.6834780573844910e-02 + + 8.9160107076168060e-02 -2.4566100537776947e-01 + <_> + + 0 -1 949 9.7268886747770011e-05 + + -1.9830940663814545e-01 1.4981469511985779e-01 + <_> + + 0 -1 950 5.2984068170189857e-03 + + -1.5779909491539001e-01 1.7095419764518738e-01 + <_> + + 0 -1 951 -2.3770859465003014e-02 + + -2.5096279382705688e-01 3.2790731638669968e-02 + <_> + + 0 -1 952 -1.4852959662675858e-02 + + 2.7263158559799194e-01 -7.2188302874565125e-02 + <_> + + 0 -1 953 -8.2722969353199005e-02 + + -6.6801771521568298e-02 1.3384120166301727e-01 + <_> + + 0 -1 954 6.4472708618268371e-04 + + -1.9309680163860321e-01 1.3628469407558441e-01 + <_> + + 0 -1 955 -4.3215509504079819e-04 + + 5.7426910847425461e-02 -7.2983436286449432e-02 + <_> + + 0 -1 956 -7.5133621066925116e-06 + + 1.2174469977617264e-01 -1.8166640400886536e-01 + <_> + + 0 -1 957 2.0493609830737114e-02 + + -6.1657600104808807e-02 3.8570550084114075e-01 + <_> + + 0 -1 958 -5.9959441423416138e-03 + + -1.8091249465942383e-01 1.1791180074214935e-01 + <_> + + 0 -1 959 -9.3910521268844604e-01 + + 3.1374409794807434e-01 -5.9216298162937164e-02 + <_> + + 0 -1 960 -2.4341490119695663e-02 + + -3.7053358554840088e-01 5.5251110345125198e-02 + <_> + + 0 -1 961 -7.6796777546405792e-02 + + 1.3754889369010925e-01 -5.8201938867568970e-02 + <_> + + 0 -1 962 -8.2179326564073563e-03 + + -2.5679248571395874e-01 9.9195696413516998e-02 + <_> + + 0 -1 963 -5.1702618598937988e-02 + + -5.2937638759613037e-01 2.7275180444121361e-02 + <_> + + 0 -1 964 6.3065597787499428e-03 + + -1.0400679707527161e-01 2.0388899743556976e-01 + <_> + + 0 -1 965 3.6337040364742279e-02 + + 1.3178840279579163e-02 -3.8717061281204224e-01 + <_> + + 0 -1 966 -2.7929339557886124e-03 + + 1.2351000308990479e-01 -2.0460779964923859e-01 + <_> + + 0 -1 967 -1.4435379765927792e-02 + + -5.0111377239227295e-01 3.7262540310621262e-02 + <_> + + 0 -1 968 6.4411992207169533e-03 + + -6.0557190328836441e-02 3.0578470230102539e-01 + <_> + + 0 -1 969 -1.2598140165209770e-03 + + 5.3200751543045044e-02 -1.6916200518608093e-01 + <_> + + 0 -1 970 -6.9105648435652256e-03 + + -3.6398649215698242e-01 4.2843151837587357e-02 + <_> + + 0 -1 971 -5.2663110196590424e-02 + + 4.4169178605079651e-01 -3.2096829265356064e-02 + <_> + + 0 -1 972 -4.0925059467554092e-02 + + -5.5673360824584961e-01 2.9191689565777779e-02 + <_> + + 0 -1 973 -2.1683140657842159e-03 + + 6.6585853695869446e-02 -1.1715179681777954e-01 + <_> + + 0 -1 974 1.7480919137597084e-02 + + -6.7747853696346283e-02 3.4224361181259155e-01 + <_> + + 0 -1 975 1.3032980263233185e-01 + + 1.0853439569473267e-02 -5.9894740581512451e-01 + <_> + + 0 -1 976 5.1362451631575823e-04 + + -1.8810969591140747e-01 1.0938909649848938e-01 + <_> + + 0 -1 977 -3.8764420896768570e-02 + + -2.6928341388702393e-01 2.0156569778919220e-02 + <_> + + 0 -1 978 -4.8952922224998474e-03 + + -2.3670850694179535e-01 7.0693537592887878e-02 + <_> + + 0 -1 979 8.4380611777305603e-02 + + -6.1777111142873764e-02 1.5130819380283356e-01 + <_> + + 0 -1 980 -5.4832860827445984e-02 + + -4.9945160746574402e-01 3.5915810614824295e-02 + <_> + + 0 -1 981 -5.4148300550878048e-03 + + 8.2116909325122833e-02 -1.3672749698162079e-01 + <_> + + 0 -1 982 1.2813720107078552e-01 + + -3.9755281060934067e-02 6.0340911149978638e-01 + <_> + + 0 -1 983 -4.4217561371624470e-03 + + -7.4642613530158997e-02 1.0235700011253357e-01 + <_> + + 0 -1 984 -7.1978997766564135e-06 + + 7.4595592916011810e-02 -2.9046559333801270e-01 + <_> + + 0 -1 985 7.3321886360645294e-02 + + -2.1364469081163406e-02 6.9809699058532715e-01 + <_> + + 0 -1 986 -2.2566469386219978e-02 + + -5.3714770078659058e-01 3.6509968340396881e-02 + <_> + + 0 -1 987 -2.9338080435991287e-02 + + 1.0626199841499329e-01 -3.1652290374040604e-02 + <_> + + 0 -1 988 1.3684090226888657e-02 + + -5.7709541171789169e-02 3.0355650186538696e-01 + <_> + + 0 -1 989 -8.2646618830040097e-04 + + 1.2958580255508423e-01 -1.3603089749813080e-01 + <_> + + 0 -1 990 3.9828647859394550e-03 + + 5.0734668970108032e-02 -3.3896729350090027e-01 + <_> + + 0 -1 991 -2.0535979419946671e-02 + + 2.6028490066528320e-01 -7.2259396314620972e-02 + <_> + + 0 -1 992 -1.4932189881801605e-01 + + -5.4172599315643311e-01 4.4534388929605484e-02 + <_> + + 0 -1 993 -1.7894789576530457e-02 + + 4.7149929404258728e-01 -3.0801070854067802e-02 + <_> + + 0 -1 994 4.7443818766623735e-04 + + -1.9686989486217499e-01 1.2433020025491714e-01 + <_> + + 0 -1 995 -4.0598851628601551e-03 + + 1.4028669893741608e-01 -4.7751329839229584e-02 + <_> + + 0 -1 996 -1.1755799874663353e-02 + + -2.6237910985946655e-01 5.9933070093393326e-02 + <_> + + 0 -1 997 -1.8559649586677551e-02 + + 1.0493250191211700e-01 -3.2159261405467987e-02 + <_> + + 0 -1 998 3.4838409628719091e-03 + + 7.9499892890453339e-02 -2.0486010611057281e-01 + <_> + + 0 -1 999 -6.2133308500051498e-02 + + -3.5091090202331543e-01 1.2265560217201710e-02 + <_> + + 0 -1 1000 -4.4008668512105942e-02 + + 2.6838389039039612e-01 -8.8284887373447418e-02 + <_> + + 0 -1 1001 3.0750890728086233e-03 + + -4.5581929385662079e-02 1.9343300163745880e-01 + <_> + + 0 -1 1002 -8.9865371584892273e-02 + + -4.8605358600616455e-01 4.5101881027221680e-02 + <_> + + 0 -1 1003 -1.6210540197789669e-03 + + 8.7722256779670715e-02 -1.6689349710941315e-01 + <_> + + 0 -1 1004 -2.9370939359068871e-02 + + -4.2794701457023621e-01 4.5566789805889130e-02 + <_> + + 0 -1 1005 -8.5921816527843475e-02 + + -6.9077378511428833e-01 1.5122929587960243e-02 + <_> + + 0 -1 1006 6.7258282797411084e-04 + + -1.1166089773178101e-01 1.5630759298801422e-01 + <_> + + 0 -1 1007 1.7752440180629492e-03 + + -4.5409418642520905e-02 7.7933087944984436e-02 + <_> + + 0 -1 1008 1.5036190234241076e-05 + + -1.6349479556083679e-01 1.0864420235157013e-01 + <_> + + 0 -1 1009 1.8150300020352006e-03 + + 9.6329912543296814e-02 -1.1818060278892517e-01 + <_> + + 0 -1 1010 -6.7588366568088531e-02 + + 2.2657020390033722e-01 -9.0492926537990570e-02 + <_> + + 0 -1 1011 1.8347490578889847e-02 + + 1.6350140795111656e-02 -4.4877880811691284e-01 + <_> + + 0 -1 1012 -1.0822510346770287e-02 + + -4.9622350931167603e-01 4.0703330188989639e-02 + <_> + + 0 -1 1013 1.7427999526262283e-02 + + -3.5475689917802811e-02 3.0856430530548096e-01 + <_> + + 0 -1 1014 -7.8753121197223663e-02 + + -6.7144078016281128e-01 2.6170469820499420e-02 + <_> + + 0 -1 1015 7.3261657962575555e-04 + + -1.0309589654207230e-01 6.4503982663154602e-02 + <_> + + 0 -1 1016 2.8185009956359863e-02 + + -5.5124811828136444e-02 3.1133919954299927e-01 + <_> + + 0 -1 1017 -1.5536470338702202e-02 + + -8.5527300834655762e-02 4.9024209380149841e-02 + <_> + + 0 -1 1018 -2.6290729641914368e-02 + + -6.5267199277877808e-01 2.4495759978890419e-02 + <_> + + 0 -1 1019 -6.8586082197725773e-03 + + -5.8548830449581146e-02 2.8735989332199097e-01 + <_> + + 0 -1 1020 -3.0750960577279329e-03 + + 8.6425736546516418e-02 -2.2627249360084534e-01 + <_> + + 0 -1 1021 5.6799430400133133e-02 + + 2.9048459604382515e-02 -3.6798200011253357e-01 + <_> + + 0 -1 1022 3.7182599306106567e-02 + + -3.5062279552221298e-02 4.5094621181488037e-01 + <_> + + 0 -1 1023 -3.5590359475463629e-03 + + -1.7892469465732574e-01 6.8459518253803253e-02 + <_> + 77 + -3.0740200042724609e+01 + + <_> + + 0 -1 1024 -5.8595160953700542e-03 + + 2.0132589340209961e-01 -2.6587140560150146e-01 + <_> + + 0 -1 1025 -5.9507137537002563e-01 + + 3.6134061217308044e-01 -1.2203159928321838e-01 + <_> + + 0 -1 1026 4.1726600378751755e-02 + + -5.2889000624418259e-02 3.9082470536231995e-01 + <_> + + 0 -1 1027 4.7253750264644623e-02 + + 1.4923909679055214e-02 -5.0544148683547974e-01 + <_> + + 0 -1 1028 9.8612194415181875e-04 + + -2.0337739586830139e-01 1.1030670255422592e-01 + <_> + + 0 -1 1029 -7.2683179751038551e-03 + + -2.0899240672588348e-01 1.4733150601387024e-01 + <_> + + 0 -1 1030 -2.9695410281419754e-02 + + 6.6190290451049805e-01 -6.7257620394229889e-02 + <_> + + 0 -1 1031 -1.3097229599952698e-01 + + 1.7485789954662323e-01 -8.1029571592807770e-02 + <_> + + 0 -1 1032 1.7316760495305061e-02 + + -4.8908680677413940e-02 4.6843668818473816e-01 + <_> + + 0 -1 1033 -1.0221409797668457e-01 + + -2.2275149822235107e-01 7.7479638159275055e-02 + <_> + + 0 -1 1034 2.9453460592776537e-03 + + 3.9738278836011887e-02 -2.8107449412345886e-01 + <_> + + 0 -1 1035 -4.5425590127706528e-02 + + 2.4193780124187469e-01 1.3621949590742588e-02 + <_> + + 0 -1 1036 2.2699350956827402e-03 + + -1.6247589886188507e-01 1.6063609719276428e-01 + <_> + + 0 -1 1037 1.1421869695186615e-01 + + 1.5750480815768242e-02 -5.7382887601852417e-01 + <_> + + 0 -1 1038 -4.1054069995880127e-02 + + 3.0522629618644714e-01 -5.5898960679769516e-02 + <_> + + 0 -1 1039 1.1980540119111538e-02 + + 1.7477169632911682e-02 -4.0707069635391235e-01 + <_> + + 0 -1 1040 1.2105259811505675e-03 + + -1.7840960621833801e-01 1.0353209823369980e-01 + <_> + + 0 -1 1041 -2.2351980209350586e-02 + + -4.7567600011825562e-01 3.7311390042304993e-02 + <_> + + 0 -1 1042 2.2135479375720024e-02 + + -5.4137628525495529e-02 4.2861071228981018e-01 + <_> + + 0 -1 1043 -1.5875579789280891e-02 + + 6.6373616456985474e-02 -1.6455489397048950e-01 + <_> + + 0 -1 1044 6.0371369123458862e-02 + + 3.8663931190967560e-02 -4.6496200561523438e-01 + <_> + + 0 -1 1045 -5.1881238818168640e-02 + + -5.6141299009323120e-01 5.4471958428621292e-03 + <_> + + 0 -1 1046 1.9330360228195786e-03 + + -1.3475979864597321e-01 1.3747330009937286e-01 + <_> + + 0 -1 1047 -4.3940469622612000e-03 + + -9.3405917286872864e-02 3.5123821347951889e-02 + <_> + + 0 -1 1048 -5.2314151078462601e-02 + + 7.5311762094497681e-01 -2.9210770502686501e-02 + <_> + + 0 -1 1049 -5.6897811591625214e-02 + + -9.1858989000320435e-01 2.8862420469522476e-02 + <_> + + 0 -1 1050 -2.1614639461040497e-01 + + -1. 6.9490820169448853e-03 + <_> + + 0 -1 1051 1.8479259312152863e-01 + + -8.8357992470264435e-02 1.9002689421176910e-01 + <_> + + 0 -1 1052 -5.6834658607840538e-03 + + -1.7791560292243958e-01 9.8286077380180359e-02 + <_> + + 0 -1 1053 -8.2448042929172516e-02 + + -3.4058651328086853e-01 1.5612719580531120e-02 + <_> + + 0 -1 1054 -7.5926659628748894e-03 + + 2.5929468870162964e-01 -6.9370441138744354e-02 + <_> + + 0 -1 1055 -2.9748380184173584e-03 + + 5.4534178227186203e-02 -1.2630839645862579e-01 + <_> + + 0 -1 1056 -1.6377970576286316e-01 + + -8.3725690841674805e-01 2.2446790710091591e-02 + <_> + + 0 -1 1057 -3.8845320232212543e-03 + + -2.1008059382438660e-01 9.1814376413822174e-02 + <_> + + 0 -1 1058 -5.5496331304311752e-02 + + 5.2739220857620239e-01 -3.8561638444662094e-02 + <_> + + 0 -1 1059 4.5041809789836407e-03 + + 3.8907989859580994e-02 -2.1077489852905273e-01 + <_> + + 0 -1 1060 5.7516310364007950e-02 + + -5.4442461580038071e-02 3.4977319836616516e-01 + <_> + + 0 -1 1061 -5.4960879497230053e-03 + + 1.0459329932928085e-01 -2.2956989705562592e-01 + <_> + + 0 -1 1062 5.8753142366185784e-04 + + 7.4045538902282715e-02 -2.3731130361557007e-01 + <_> + + 0 -1 1063 1.1216119676828384e-01 + + -2.5916000828146935e-02 1.1389470100402832e-01 + <_> + + 0 -1 1064 2.1753750741481781e-01 + + 1.9727870821952820e-02 -9.6220922470092773e-01 + <_> + + 0 -1 1065 -1.4632700476795435e-03 + + -9.4052821397781372e-02 6.4389176666736603e-02 + <_> + + 0 -1 1066 -8.6313979700207710e-03 + + 2.5036060810089111e-01 -7.2234652936458588e-02 + <_> + + 0 -1 1067 -1.9858509302139282e-02 + + -1.2698090076446533e-01 7.9051487147808075e-02 + <_> + + 0 -1 1068 -1.3804109767079353e-04 + + 1.4466640353202820e-01 -1.1444070190191269e-01 + <_> + + 0 -1 1069 2.6781240478157997e-02 + + 1.7647750675678253e-02 -8.3157891035079956e-01 + <_> + + 0 -1 1070 1.9331119954586029e-02 + + -4.5500081032514572e-02 5.0110948085784912e-01 + <_> + + 0 -1 1071 4.1692070662975311e-02 + + 2.2502349689602852e-02 -3.8992220163345337e-01 + <_> + + 0 -1 1072 1.1296980082988739e-01 + + -3.2494839280843735e-02 5.3929620981216431e-01 + <_> + + 0 -1 1073 3.1683610286563635e-03 + + -1.7195589840412140e-01 9.3619801104068756e-02 + <_> + + 0 -1 1074 5.3966748528182507e-03 + + 5.7677630335092545e-02 -3.0436149239540100e-01 + <_> + + 0 -1 1075 -1.3829180598258972e-01 + + -5.2158790826797485e-01 1.8444910645484924e-02 + <_> + + 0 -1 1076 -1.2594119645655155e-02 + + 2.2748909890651703e-01 -6.9325000047683716e-02 + <_> + + 0 -1 1077 -1.6514480113983154e-02 + + 1.6279229521751404e-01 -3.4446150064468384e-02 + <_> + + 0 -1 1078 -1.6392849385738373e-02 + + -1.4277680218219757e-01 1.6290099918842316e-01 + <_> + + 0 -1 1079 -3.4606490284204483e-02 + + -4.0356379747390747e-01 8.3033805713057518e-03 + <_> + + 0 -1 1080 -6.8894061259925365e-03 + + 2.6890090107917786e-01 -6.9450862705707550e-02 + <_> + + 0 -1 1081 -1.1879400350153446e-02 + + 2.1395209431648254e-01 -2.0930450409650803e-02 + <_> + + 0 -1 1082 -1.9165100529789925e-03 + + 6.8464219570159912e-02 -3.1453219056129456e-01 + <_> + + 0 -1 1083 1.3729350175708532e-03 + + -6.0340028256177902e-02 2.7572840452194214e-01 + <_> + + 0 -1 1084 2.4278028868138790e-03 + + -2.3944500088691711e-01 8.4658838808536530e-02 + <_> + + 0 -1 1085 2.1290169097483158e-03 + + 8.6938478052616119e-02 -2.8218480944633484e-01 + <_> + + 0 -1 1086 -5.2569470426533371e-05 + + 1.3682359457015991e-01 -1.1980649828910828e-01 + <_> + + 0 -1 1087 1.5957899391651154e-02 + + -3.9610300213098526e-02 2.4825170636177063e-01 + <_> + + 0 -1 1088 8.9294081553816795e-03 + + 8.1123508512973785e-02 -2.6561570167541504e-01 + <_> + + 0 -1 1089 4.9925308674573898e-02 + + 1.5018629841506481e-02 -3.6647871136665344e-01 + <_> + + 0 -1 1090 -1.7374839633703232e-02 + + 3.3971020579338074e-01 -5.4494149982929230e-02 + <_> + + 0 -1 1091 -7.8357063233852386e-02 + + -4.9435839056968689e-01 8.4990533068776131e-03 + <_> + + 0 -1 1092 -8.9894477277994156e-03 + + -2.3209859430789948e-01 7.1379087865352631e-02 + <_> + + 0 -1 1093 -1.5932919923216105e-03 + + 8.2504719495773315e-02 -9.3123182654380798e-02 + <_> + + 0 -1 1094 2.6272730901837349e-03 + + -1.3213430345058441e-01 1.3099829852581024e-01 + <_> + + 0 -1 1095 -5.9108160436153412e-02 + + -3.7229761481285095e-01 4.5574661344289780e-02 + <_> + + 0 -1 1096 3.5086690913885832e-03 + + 8.9478462934494019e-02 -1.8543410301208496e-01 + <_> + + 0 -1 1097 1.5465220436453819e-02 + + -3.0604820698499680e-02 2.0754580199718475e-01 + <_> + + 0 -1 1098 -1.1749019846320152e-02 + + 3.9200168848037720e-01 -4.1100859642028809e-02 + <_> + + 0 -1 1099 4.8413608223199844e-02 + + 3.7391050718724728e-03 -8.5701841115951538e-01 + <_> + + 0 -1 1100 -1.1499889660626650e-03 + + -2.2441549599170685e-01 7.1305088698863983e-02 + <_> + 89 + -3.0760700225830078e+01 + + <_> + + 0 -1 1101 -3.2420051097869873e-01 + + 4.1447758674621582e-01 -1.0684230178594589e-01 + <_> + + 0 -1 1102 -2.1065689623355865e-01 + + 2.3302809894084930e-01 -9.4695799052715302e-02 + <_> + + 0 -1 1103 -2.1540550515055656e-02 + + -2.8891721367835999e-01 7.0666067302227020e-02 + <_> + + 0 -1 1104 5.9726871550083160e-03 + + -9.0559490025043488e-02 2.2989599406719208e-01 + <_> + + 0 -1 1105 2.6468100026249886e-02 + + -5.0254050642251968e-02 3.9346438646316528e-01 + <_> + + 0 -1 1106 -7.2531126439571381e-02 + + -3.9421468973159790e-01 7.5547359883785248e-03 + <_> + + 0 -1 1107 -4.3684918433427811e-02 + + -5.7553547620773315e-01 5.1893319934606552e-02 + <_> + + 0 -1 1108 1.1670660227537155e-01 + + -2.5791339576244354e-03 -8.2597649097442627e-01 + <_> + + 0 -1 1109 -8.2381166517734528e-02 + + 7.5818961858749390e-01 -2.6576930657029152e-02 + <_> + + 0 -1 1110 -2.3157079704105854e-03 + + 6.6858686506748199e-02 -3.0407869815826416e-01 + <_> + + 0 -1 1111 -1.6678189858794212e-02 + + 3.8525319099426270e-01 -4.8842679709196091e-02 + <_> + + 0 -1 1112 -3.0678999610245228e-03 + + -2.7150988578796387e-01 6.4561262726783752e-02 + <_> + + 0 -1 1113 -8.3884904161095619e-03 + + -2.8267300128936768e-01 7.0778891444206238e-02 + <_> + + 0 -1 1114 2.1357910707592964e-02 + + -6.6106483340263367e-02 3.1867539882659912e-01 + <_> + + 0 -1 1115 -4.0636979974806309e-03 + + 1.1739840358495712e-01 -1.5105929970741272e-01 + <_> + + 0 -1 1116 -1.1475679930299520e-03 + + 6.4262896776199341e-02 -7.4472077190876007e-02 + <_> + + 0 -1 1117 1.8145689740777016e-02 + + -5.6946009397506714e-02 4.2107149958610535e-01 + <_> + + 0 -1 1118 5.0288350321352482e-03 + + 8.3866670727729797e-02 -3.3929398655891418e-01 + <_> + + 0 -1 1119 -5.7916361838579178e-02 + + 4.5170179009437561e-01 -4.3198868632316589e-02 + <_> + + 0 -1 1120 3.1025299802422523e-02 + + 2.8000740334391594e-02 -1.6818940639495850e-01 + <_> + + 0 -1 1121 8.2134291529655457e-02 + + 1.9999530166387558e-02 -7.6910507678985596e-01 + <_> + + 0 -1 1122 7.3666572570800781e-02 + + -1.2391459895297885e-03 -1.0004559755325317e+00 + <_> + + 0 -1 1123 1.5681830700486898e-04 + + -1.2154590338468552e-01 1.3561969995498657e-01 + <_> + + 0 -1 1124 4.5130930840969086e-02 + + 4.7123869881033897e-03 -2.9671049118041992e-01 + <_> + + 0 -1 1125 -5.1468348829075694e-04 + + 1.4606890082359314e-01 -1.3600480556488037e-01 + <_> + + 0 -1 1126 -1.4981119893491268e-02 + + -1.7933659255504608e-01 5.3928699344396591e-02 + <_> + + 0 -1 1127 -2.7151789516210556e-02 + + -6.7529010772705078e-01 2.3046780377626419e-02 + <_> + + 0 -1 1128 -6.6578023135662079e-02 + + -6.5586429834365845e-01 4.7667929902672768e-03 + <_> + + 0 -1 1129 -3.3119178842753172e-03 + + 1.2255000323057175e-01 -1.6333930194377899e-01 + <_> + + 0 -1 1130 -1.5811180695891380e-02 + + -4.4731178879737854e-01 8.9029967784881592e-03 + <_> + + 0 -1 1131 -5.6757620768621564e-05 + + 1.4944350719451904e-01 -1.0686829686164856e-01 + <_> + + 0 -1 1132 1.0602490045130253e-02 + + 2.1685829386115074e-02 -3.2208129763603210e-01 + <_> + + 0 -1 1133 2.1245649550110102e-03 + + -2.0425739884376526e-01 8.2330957055091858e-02 + <_> + + 0 -1 1134 4.7638580203056335e-02 + + -3.2728441059589386e-02 4.4726258516311646e-01 + <_> + + 0 -1 1135 -1.1300199665129185e-02 + + 2.5546020269393921e-01 -6.9969899952411652e-02 + <_> + + 0 -1 1136 -1.1472209589555860e-03 + + 4.7467790544033051e-02 -2.2220790386199951e-01 + <_> + + 0 -1 1137 1.8008640035986900e-02 + + -6.0860209167003632e-02 2.9082441329956055e-01 + <_> + + 0 -1 1138 -1.1634260416030884e-02 + + -3.1474921107292175e-01 8.3630897104740143e-02 + <_> + + 0 -1 1139 6.5580541267991066e-03 + + -1.2121830135583878e-01 1.3124500215053558e-01 + <_> + + 0 -1 1140 -2.3253620602190495e-03 + + -8.7138622999191284e-02 7.0476517081260681e-02 + <_> + + 0 -1 1141 2.1486220881342888e-02 + + -3.5936549305915833e-02 4.3737021088600159e-01 + <_> + + 0 -1 1142 1.2589399516582489e-01 + + 1.2443150393664837e-02 -9.2822617292404175e-01 + <_> + + 0 -1 1143 -2.2191529569681734e-04 + + 6.9798342883586884e-02 -3.2106238603591919e-01 + <_> + + 0 -1 1144 -5.8175198733806610e-02 + + -7.7025629580020905e-02 9.6747986972332001e-02 + <_> + + 0 -1 1145 -4.5887380838394165e-04 + + 1.1412449926137924e-01 -1.4719170331954956e-01 + <_> + + 0 -1 1146 -4.0837019681930542e-02 + + 4.7654581069946289e-01 -4.9737568944692612e-02 + <_> + + 0 -1 1147 -9.7786840051412582e-03 + + -2.0513780415058136e-01 8.4468983113765717e-02 + <_> + + 0 -1 1148 2.7964261174201965e-01 + + -3.0034869909286499e-02 6.9526249170303345e-01 + <_> + + 0 -1 1149 -8.8869117200374603e-02 + + 2.4081839621067047e-01 -7.0576377213001251e-02 + <_> + + 0 -1 1150 -1.4095460064709187e-02 + + -1.0456439852714539e-01 4.6604979783296585e-02 + <_> + + 0 -1 1151 2.6836670003831387e-03 + + 6.0495968908071518e-02 -2.5784969329833984e-01 + <_> + + 0 -1 1152 8.7051279842853546e-02 + + -2.4173669517040253e-02 2.4043059349060059e-01 + <_> + + 0 -1 1153 -1.0178039781749249e-02 + + 2.5469788908958435e-01 -9.2890508472919464e-02 + <_> + + 0 -1 1154 -9.0314531698822975e-03 + + -2.6343479752540588e-01 7.0848807692527771e-02 + <_> + + 0 -1 1155 -6.7082298919558525e-03 + + 2.3313470184803009e-01 -7.6271809637546539e-02 + <_> + + 0 -1 1156 -6.7614473402500153e-02 + + -5.2013260126113892e-01 1.3785160146653652e-02 + <_> + + 0 -1 1157 -3.9636880159378052e-01 + + -7.6267188787460327e-01 2.0686520263552666e-02 + <_> + + 0 -1 1158 1.2813470093533397e-03 + + -1.4046239852905273e-01 1.2711919844150543e-01 + <_> + + 0 -1 1159 8.4416065365076065e-03 + + 7.4712827801704407e-02 -2.5663131475448608e-01 + <_> + + 0 -1 1160 1.4749030015082099e-05 + + -1.4015120267868042e-01 1.5210489928722382e-01 + <_> + + 0 -1 1161 -4.5073211193084717e-02 + + -6.4262861013412476e-01 2.5925450026988983e-02 + <_> + + 0 -1 1162 7.7068619430065155e-03 + + 3.2485689967870712e-02 -2.0377029478549957e-01 + <_> + + 0 -1 1163 5.9383822372183204e-04 + + -1.2950329482555389e-01 1.6219380497932434e-01 + <_> + + 0 -1 1164 -1.3042639475315809e-03 + + 8.6318843066692352e-02 -1.9224709272384644e-01 + <_> + + 0 -1 1165 6.4417850226163864e-03 + + -7.1506053209304810e-02 3.0627349019050598e-01 + <_> + + 0 -1 1166 -1.5630330890417099e-02 + + 4.9515549093484879e-02 -1.4840349555015564e-01 + <_> + + 0 -1 1167 1.1395620182156563e-02 + + 6.3355296850204468e-02 -2.5576409697532654e-01 + <_> + + 0 -1 1168 4.7544430941343307e-02 + + 4.8167328350245953e-03 -7.8987777233123779e-01 + <_> + + 0 -1 1169 8.3856023848056793e-03 + + -4.3012011796236038e-02 4.1108319163322449e-01 + <_> + + 0 -1 1170 -1.6369849909096956e-03 + + 8.2473292946815491e-02 -7.8956812620162964e-02 + <_> + + 0 -1 1171 -1.6513109207153320e-02 + + -5.0692492723464966e-01 3.9071910083293915e-02 + <_> + + 0 -1 1172 1.0358359664678574e-01 + + 2.0772270858287811e-02 -6.9371747970581055e-01 + <_> + + 0 -1 1173 3.3361840993165970e-02 + + -4.4479008764028549e-02 4.6392819285392761e-01 + <_> + + 0 -1 1174 -2.8664430603384972e-02 + + -4.5883670449256897e-01 3.5676170140504837e-02 + <_> + + 0 -1 1175 -1.1209170043002814e-04 + + 8.4344513714313507e-02 -2.1555650234222412e-01 + <_> + + 0 -1 1176 1.7690200358629227e-02 + + 9.7461966797709465e-03 -8.5261541604995728e-01 + <_> + + 0 -1 1177 -2.1878469735383987e-02 + + 2.6345950365066528e-01 -7.0220641791820526e-02 + <_> + + 0 -1 1178 -1.2424430251121521e-01 + + -2.8659409284591675e-01 2.1816140040755272e-02 + <_> + + 0 -1 1179 6.5736092627048492e-02 + + 2.3600580170750618e-02 -7.0263791084289551e-01 + <_> + + 0 -1 1180 -4.4633701443672180e-02 + + -9.5776432752609253e-01 3.5877549089491367e-03 + <_> + + 0 -1 1181 -6.4271576702594757e-02 + + 6.0099518299102783e-01 -2.8557619079947472e-02 + <_> + + 0 -1 1182 5.6516240874771029e-05 + + -1.3485489785671234e-01 1.1080929636955261e-01 + <_> + + 0 -1 1183 1.3419260503724217e-03 + + 9.8325006663799286e-02 -1.6883499920368195e-01 + <_> + + 0 -1 1184 -2.1889729425311089e-02 + + -2.1880550682544708e-01 2.9620679095387459e-02 + <_> + + 0 -1 1185 -1.9670790061354637e-03 + + 9.7642809152603149e-02 -1.8062870204448700e-01 + <_> + + 0 -1 1186 -7.6196521520614624e-02 + + -8.6387622356414795e-01 7.3730680160224438e-03 + <_> + + 0 -1 1187 -7.9841358819976449e-04 + + 1.5353679656982422e-01 -1.2105809897184372e-01 + <_> + + 0 -1 1188 -8.2246732199564576e-04 + + 4.0794339030981064e-02 -1.3737790286540985e-01 + <_> + + 0 -1 1189 -3.0324649997055531e-03 + + 1.2088210135698318e-01 -1.4088730514049530e-01 + <_> + 107 + -3.0838300704956055e+01 + + <_> + + 0 -1 1190 -5.2718650549650192e-02 + + 2.5985679030418396e-01 -1.5721979737281799e-01 + <_> + + 0 -1 1191 5.1614670082926750e-03 + + -1.0271859914064407e-01 5.9346981346607208e-02 + <_> + + 0 -1 1192 6.7699067294597626e-02 + + -7.7311262488365173e-02 2.8602010011672974e-01 + <_> + + 0 -1 1193 -3.3822011202573776e-02 + + -5.6999057531356812e-01 4.0684528648853302e-02 + <_> + + 0 -1 1194 -5.3746398538351059e-02 + + -4.7421398758888245e-01 6.2751591205596924e-02 + <_> + + 0 -1 1195 -3.0559560284018517e-02 + + 7.1638780832290649e-01 -1.7423950135707855e-02 + <_> + + 0 -1 1196 -3.3822011202573776e-02 + + -6.7283177375793457e-01 -1.2177439639344811e-03 + <_> + + 0 -1 1197 2.7876009698957205e-04 + + -7.0205226540565491e-02 1.1648730188608170e-01 + <_> + + 0 -1 1198 -2.5016230065375566e-03 + + 1.2915210425853729e-01 -1.3576079905033112e-01 + <_> + + 0 -1 1199 9.0835839509963989e-02 + + 4.1303969919681549e-03 4.0111660957336426e-01 + <_> + + 0 -1 1200 -2.5603260844945908e-02 + + -1.0059480369091034e-01 1.8819159269332886e-01 + <_> + + 0 -1 1201 -5.2134461700916290e-02 + + 2.5282728672027588e-01 -1.1447659879922867e-01 + <_> + + 0 -1 1202 3.8462068885564804e-02 + + 5.5828869342803955e-02 -5.7635480165481567e-01 + <_> + + 0 -1 1203 -1.4195869443938136e-03 + + 4.5769099146127701e-02 -1.6001120209693909e-01 + <_> + + 0 -1 1204 -7.6488167047500610e-02 + + -5.2531337738037109e-01 5.2011650055646896e-02 + <_> + + 0 -1 1205 1.2786199804395437e-03 + + 7.6051406562328339e-02 -2.5104090571403503e-01 + <_> + + 0 -1 1206 -1.2661969522014260e-03 + + -1.2411650270223618e-01 1.6375949978828430e-01 + <_> + + 0 -1 1207 -9.0841390192508698e-03 + + 2.2613930702209473e-01 -5.4559618234634399e-02 + <_> + + 0 -1 1208 7.4418167059775442e-05 + + -1.6488799452781677e-01 1.0864400118589401e-01 + <_> + + 0 -1 1209 -2.5643699336796999e-03 + + -1.8933239579200745e-01 1.0298830270767212e-01 + <_> + + 0 -1 1210 -3.4997228533029556e-02 + + 2.3746269941329956e-01 -8.2390688359737396e-02 + <_> + + 0 -1 1211 -1.9422829151153564e-02 + + -9.9691540002822876e-02 4.0376558899879456e-02 + <_> + + 0 -1 1212 -5.9601478278636932e-02 + + -9.1162431240081787e-01 1.8367420881986618e-02 + <_> + + 0 -1 1213 3.4046408534049988e-01 + + 6.0519641265273094e-03 -4.4584161043167114e-01 + <_> + + 0 -1 1214 6.5878271125257015e-03 + + -9.5767751336097717e-02 1.8087559938430786e-01 + <_> + + 0 -1 1215 5.3841830231249332e-03 + + 5.2658561617136002e-02 -4.5202389359474182e-01 + <_> + + 0 -1 1216 7.9094972461462021e-03 + + 3.8064301013946533e-02 -4.5984381437301636e-01 + <_> + + 0 -1 1217 -1.7566539347171783e-02 + + 1.1139140278100967e-01 -2.9564509168267250e-02 + <_> + + 0 -1 1218 -1.1352599831297994e-03 + + 1.0825510323047638e-01 -1.8355409801006317e-01 + <_> + + 0 -1 1219 1.4237280189990997e-01 + + -3.1995229423046112e-02 3.8099318742752075e-01 + <_> + + 0 -1 1220 -1.0024409741163254e-01 + + -7.7461862564086914e-01 2.3992599919438362e-02 + <_> + + 0 -1 1221 -1.2453799694776535e-01 + + 2.1255059540271759e-01 -9.1748759150505066e-02 + <_> + + 0 -1 1222 1.9641380012035370e-01 + + 3.3028271049261093e-02 -6.0223150253295898e-01 + <_> + + 0 -1 1223 -4.1467338800430298e-02 + + -8.8264447450637817e-01 1.3399540446698666e-02 + <_> + + 0 -1 1224 -3.0020199716091156e-02 + + 5.8158951997756958e-01 -3.9801310747861862e-02 + <_> + + 0 -1 1225 1.9002150744199753e-02 + + -2.4508230388164520e-02 3.2259100675582886e-01 + <_> + + 0 -1 1226 -1.0837280191481113e-02 + + -2.5428688526153564e-01 7.3384523391723633e-02 + <_> + + 0 -1 1227 -2.4493860080838203e-02 + + 1.4883559942245483e-01 -3.6729950457811356e-02 + <_> + + 0 -1 1228 4.7652618959546089e-03 + + 1.2693640589714050e-01 -1.9157619774341583e-01 + <_> + + 0 -1 1229 -1.2438010424375534e-02 + + 7.1727007627487183e-02 -2.5421911478042603e-01 + <_> + + 0 -1 1230 2.1275319159030914e-02 + + -4.9392588436603546e-02 5.2715432643890381e-01 + <_> + + 0 -1 1231 -6.7369833588600159e-02 + + -4.6891281008720398e-01 4.2881548404693604e-02 + <_> + + 0 -1 1232 -1.0925510432571173e-03 + + 1.1250150203704834e-01 -1.3688379526138306e-01 + <_> + + 0 -1 1233 -9.7863428294658661e-02 + + -8.5167092084884644e-01 7.9745445400476456e-03 + <_> + + 0 -1 1234 -2.0980979315936565e-03 + + 7.2556197643280029e-02 -2.1253560483455658e-01 + <_> + + 0 -1 1235 4.4975668191909790e-02 + + -6.4254011958837509e-03 6.7334640026092529e-01 + <_> + + 0 -1 1236 -2.0970530807971954e-02 + + -1.5341369807720184e-01 1.1229439824819565e-01 + <_> + + 0 -1 1237 7.1862142067402601e-04 + + -1.3690039515495300e-01 1.2323109805583954e-01 + <_> + + 0 -1 1238 1.1921999976038933e-02 + + -5.2036911249160767e-02 3.5095539689064026e-01 + <_> + + 0 -1 1239 -1.2956890277564526e-02 + + 8.7813578546047211e-02 -2.8173919767141342e-02 + <_> + + 0 -1 1240 -2.7972649782896042e-02 + + -5.9018450975418091e-01 2.4770129472017288e-02 + <_> + + 0 -1 1241 -6.0088839381933212e-03 + + -6.5963357686996460e-02 3.6277290433645248e-02 + <_> + + 0 -1 1242 -4.0854439139366150e-03 + + 1.8211939930915833e-01 -8.9567668735980988e-02 + <_> + + 0 -1 1243 6.3200960867106915e-03 + + 2.3888850584626198e-02 -1.0606460273265839e-01 + <_> + + 0 -1 1244 2.0633619278669357e-02 + + -3.8176801055669785e-02 5.2134162187576294e-01 + <_> + + 0 -1 1245 -2.5221719406545162e-03 + + 4.6510368585586548e-02 -9.3957871198654175e-02 + <_> + + 0 -1 1246 -4.6648699790239334e-03 + + -2.3734979331493378e-01 8.0608420073986053e-02 + <_> + + 0 -1 1247 2.5844529736787081e-03 + + -2.4275559931993484e-02 2.2888250648975372e-01 + <_> + + 0 -1 1248 -1.4966880371503066e-05 + + 9.9380202591419220e-02 -1.9830170273780823e-01 + <_> + + 0 -1 1249 6.2676537781953812e-03 + + -7.4367232620716095e-02 2.2790339589118958e-01 + <_> + + 0 -1 1250 2.6347549632191658e-02 + + 1.9285459071397781e-02 -8.8683319091796875e-01 + <_> + + 0 -1 1251 -6.0268949717283249e-02 + + 1.2562690675258636e-01 -3.3716868609189987e-02 + <_> + + 0 -1 1252 -3.8371770642697811e-03 + + -1.7735309898853302e-01 8.8588736951351166e-02 + <_> + + 0 -1 1253 -3.5063549876213074e-03 + + -8.7100908160209656e-02 5.6650858372449875e-02 + <_> + + 0 -1 1254 -8.1536881625652313e-03 + + 2.5863811373710632e-01 -5.9690609574317932e-02 + <_> + + 0 -1 1255 3.8574129343032837e-02 + + 8.4148198366165161e-03 -4.3409061431884766e-01 + <_> + + 0 -1 1256 -3.9269659668207169e-02 + + 3.5469511151313782e-01 -4.3248169124126434e-02 + <_> + + 0 -1 1257 -1.7512469785287976e-03 + + 8.6816087365150452e-02 -9.6924632787704468e-02 + <_> + + 0 -1 1258 -8.4061250090599060e-02 + + -6.5256571769714355e-01 2.4765320122241974e-02 + <_> + + 0 -1 1259 -4.3417539447546005e-02 + + -5.6205427646636963e-01 9.8713487386703491e-03 + <_> + + 0 -1 1260 -1.3643169775605202e-02 + + 2.4562139809131622e-01 -6.0552708804607391e-02 + <_> + + 0 -1 1261 1.6490360721945763e-02 + + 3.8866888731718063e-02 -2.7715849876403809e-01 + <_> + + 0 -1 1262 -1.4422900043427944e-02 + + -2.2820469737052917e-01 5.9026841074228287e-02 + <_> + + 0 -1 1263 2.7178740128874779e-03 + + -1.1887180060148239e-01 1.2192229926586151e-01 + <_> + + 0 -1 1264 6.3701239414513111e-03 + + -1.7167779803276062e-01 9.9555417895317078e-02 + <_> + + 0 -1 1265 8.1290200352668762e-02 + + -2.2509740665555000e-02 2.4472869932651520e-01 + <_> + + 0 -1 1266 -1.4793650188948959e-04 + + 8.0845691263675690e-02 -2.1680369973182678e-01 + <_> + + 0 -1 1267 -6.9097941741347313e-04 + + 6.2281239777803421e-02 -1.4082409441471100e-01 + <_> + + 0 -1 1268 -1.1455359868705273e-02 + + -1.1722529679536819e-01 1.5948510169982910e-01 + <_> + + 0 -1 1269 -1.6334399580955505e-01 + + -3.4727150201797485e-01 1.1003250256180763e-02 + <_> + + 0 -1 1270 -6.8652302026748657e-02 + + 2.5441581010818481e-01 -7.8778758645057678e-02 + <_> + + 0 -1 1271 6.9226641207933426e-03 + + -2.9800569638609886e-02 2.0455279946327209e-01 + <_> + + 0 -1 1272 -1.0851600021123886e-01 + + -4.7375029325485229e-01 4.0704440325498581e-02 + <_> + + 0 -1 1273 5.8868151158094406e-02 + + 1.3014429714530706e-03 -1.0001180171966553e+00 + <_> + + 0 -1 1274 1.5332780312746763e-03 + + -1.6441990435123444e-01 9.9495269358158112e-02 + <_> + + 0 -1 1275 -2.5576220359653234e-03 + + 8.1458933651447296e-02 -9.0945683419704437e-02 + <_> + + 0 -1 1276 3.6009950563311577e-03 + + 8.6760893464088440e-02 -1.9872209429740906e-01 + <_> + + 0 -1 1277 1.0986080393195152e-02 + + -4.8230320215225220e-02 1.9264499843120575e-01 + <_> + + 0 -1 1278 -4.4403300853446126e-04 + + 2.0115670561790466e-01 -8.3059810101985931e-02 + <_> + + 0 -1 1279 2.9464240651577711e-04 + + -1.2808699905872345e-01 6.6652536392211914e-02 + <_> + + 0 -1 1280 -4.1320081800222397e-02 + + -5.3510922193527222e-01 2.9578590765595436e-02 + <_> + + 0 -1 1281 8.1929996609687805e-02 + + -1.6939610242843628e-02 7.6524221897125244e-01 + <_> + + 0 -1 1282 1.4758399687707424e-02 + + 2.7206780388951302e-02 -6.2607800960540771e-01 + <_> + + 0 -1 1283 -1.7577099800109863e-01 + + 1.0328330099582672e-01 -5.1863618195056915e-02 + <_> + + 0 -1 1284 -1.0492449626326561e-02 + + -1.9424819946289062e-01 8.5835307836532593e-02 + <_> + + 0 -1 1285 -5.6793028488755226e-03 + + 1.6252349317073822e-01 -1.1607410013675690e-01 + <_> + + 0 -1 1286 -7.7026091516017914e-02 + + -1.6585369408130646e-01 1.0487639904022217e-01 + <_> + + 0 -1 1287 8.8255241513252258e-02 + + -4.2857029475271702e-03 1.0002230405807495e+00 + <_> + + 0 -1 1288 -2.5600788649171591e-04 + + 1.3218410313129425e-01 -1.4754749834537506e-01 + <_> + + 0 -1 1289 3.4532468765974045e-02 + + -4.7874059528112411e-02 2.7708581089973450e-01 + <_> + + 0 -1 1290 1.0978250205516815e-01 + + -2.1606300026178360e-02 8.5059100389480591e-01 + <_> + + 0 -1 1291 3.6717768758535385e-02 + + 1.6276430338621140e-02 -8.9000707864761353e-01 + <_> + + 0 -1 1292 -6.1206728219985962e-02 + + 5.4838019609451294e-01 -3.1625121831893921e-02 + <_> + + 0 -1 1293 2.9046889394521713e-03 + + 4.1483800858259201e-02 -8.6054533720016479e-02 + <_> + + 0 -1 1294 6.9003179669380188e-02 + + -2.6552880182862282e-02 6.0647368431091309e-01 + <_> + + 0 -1 1295 7.0049421628937125e-04 + + -1.9934299588203430e-01 7.5443200767040253e-02 + <_> + + 0 -1 1296 3.4873239696025848e-02 + + 3.9036870002746582e-02 -4.2251279950141907e-01 + <_> + 71 + -3.0640199661254883e+01 + + <_> + + 0 -1 1297 5.4466608911752701e-02 + + -1.3182820379734039e-01 2.7660441398620605e-01 + <_> + + 0 -1 1298 -2.1856650710105896e-02 + + 2.5475510954856873e-01 -8.4045611321926117e-02 + <_> + + 0 -1 1299 6.6198781132698059e-03 + + 7.1489393711090088e-02 -2.6304081082344055e-01 + <_> + + 0 -1 1300 8.8211596012115479e-03 + + -1.3396710157394409e-01 1.4222930371761322e-01 + <_> + + 0 -1 1301 -2.3251229524612427e-01 + + -3.4628748893737793e-01 5.6767478585243225e-02 + <_> + + 0 -1 1302 2.8472349047660828e-01 + + 8.6089121177792549e-03 -1.0012650489807129e+00 + <_> + + 0 -1 1303 4.2303521186113358e-02 + + -9.1637752950191498e-02 1.9090470671653748e-01 + <_> + + 0 -1 1304 4.9781981855630875e-02 + + 2.9709989205002785e-02 -3.5961869359016418e-01 + <_> + + 0 -1 1305 -4.8924300819635391e-02 + + -3.8387179374694824e-01 5.5182989686727524e-02 + <_> + + 0 -1 1306 -7.7399803558364511e-05 + + -1.2758800387382507e-01 9.4793520867824554e-02 + <_> + + 0 -1 1307 -2.4455290287733078e-02 + + 4.6911829710006714e-01 -5.1782071590423584e-02 + <_> + + 0 -1 1308 2.5210820138454437e-02 + + 4.4035088270902634e-02 -1.7653049528598785e-01 + <_> + + 0 -1 1309 -4.7570910304784775e-02 + + -5.3332722187042236e-01 4.6693909913301468e-02 + <_> + + 0 -1 1310 -1.4046980440616608e-01 + + 3.2798460125923157e-01 -6.5607719123363495e-02 + <_> + + 0 -1 1311 -1.0932429879903793e-01 + + -5.9276747703552246e-01 3.0543249100446701e-02 + <_> + + 0 -1 1312 -9.8567470908164978e-02 + + 3.6753898859024048e-01 -6.6568426787853241e-02 + <_> + + 0 -1 1313 -7.6861098408699036e-02 + + -1.3722559809684753e-01 1.7806069552898407e-01 + <_> + + 0 -1 1314 -2.1035360172390938e-02 + + 4.3632039427757263e-01 -2.9524799436330795e-02 + <_> + + 0 -1 1315 1.3428479433059692e-03 + + -2.4420669674873352e-01 1.1969459801912308e-01 + <_> + + 0 -1 1316 -3.4433171153068542e-02 + + 2.7110278606414795e-01 -7.5950436294078827e-02 + <_> + + 0 -1 1317 1.7944410210475326e-03 + + -1.7997020483016968e-01 1.3508750498294830e-01 + <_> + + 0 -1 1318 -9.6644267439842224e-02 + + -7.6689988374710083e-01 1.5435869805514812e-02 + <_> + + 0 -1 1319 2.5092919822782278e-03 + + -1.2506179511547089e-01 1.8814159929752350e-01 + <_> + + 0 -1 1320 -2.2511319257318974e-03 + + 7.8268818557262421e-02 -7.2636753320693970e-02 + <_> + + 0 -1 1321 -7.4670952017186210e-06 + + 7.6933227479457855e-02 -2.6148709654808044e-01 + <_> + + 0 -1 1322 2.6573959738016129e-02 + + 2.2534679621458054e-02 -1.6299429535865784e-01 + <_> + + 0 -1 1323 1.7086470499634743e-02 + + -5.8232828974723816e-02 3.6095941066741943e-01 + <_> + + 0 -1 1324 3.0147018842399120e-03 + + 1.2817589938640594e-01 -1.8230159580707550e-01 + <_> + + 0 -1 1325 9.4206426292657852e-03 + + 8.9825786650180817e-02 -2.6877298951148987e-01 + <_> + + 0 -1 1326 7.5143040157854557e-04 + + 8.8295407593250275e-02 -2.3304849863052368e-01 + <_> + + 0 -1 1327 -1.0687969624996185e-02 + + 3.0612778663635254e-01 -6.5760366618633270e-02 + <_> + + 0 -1 1328 7.5001686811447144e-02 + + 4.3955240398645401e-03 -7.5094991922378540e-01 + <_> + + 0 -1 1329 5.0849020481109619e-02 + + 2.0524559542536736e-02 -8.3406442403793335e-01 + <_> + + 0 -1 1330 2.3555630818009377e-02 + + 3.6320169456303120e-03 -8.8322782516479492e-01 + <_> + + 0 -1 1331 -1.6827480867505074e-02 + + -6.5697771310806274e-01 2.3138659074902534e-02 + <_> + + 0 -1 1332 1.9977349787950516e-02 + + -2.3847330361604691e-02 3.2636478543281555e-01 + <_> + + 0 -1 1333 3.1397528946399689e-02 + + -3.6343611776828766e-02 4.4792640209197998e-01 + <_> + + 0 -1 1334 -9.3282759189605713e-02 + + -5.2942079305648804e-01 6.3824458047747612e-03 + <_> + + 0 -1 1335 -7.7012612018734217e-04 + + 1.5420450270175934e-01 -1.5751419961452484e-01 + <_> + + 0 -1 1336 4.6891491860151291e-02 + + 1.1802299879491329e-02 -7.3092728853225708e-01 + <_> + + 0 -1 1337 -3.4607138950377703e-03 + + 1.1565960198640823e-01 -1.7568419873714447e-01 + <_> + + 0 -1 1338 -3.3493418246507645e-02 + + -6.8049472570419312e-01 5.1433579064905643e-03 + <_> + + 0 -1 1339 -5.5793918669223785e-02 + + -5.3908890485763550e-01 3.2008830457925797e-02 + <_> + + 0 -1 1340 5.1339478231966496e-03 + + -6.6114626824855804e-02 3.1760030984878540e-01 + <_> + + 0 -1 1341 3.0386429280042648e-03 + + 8.1462718546390533e-02 -2.4291920661926270e-01 + <_> + + 0 -1 1342 -3.1149981077760458e-04 + + 4.6723391860723495e-02 -8.4542676806449890e-02 + <_> + + 0 -1 1343 1.8326110439375043e-03 + + -1.2830300629138947e-01 1.5127150714397430e-01 + <_> + + 0 -1 1344 -2.5878880172967911e-02 + + -2.1160699427127838e-01 2.9811259359121323e-02 + <_> + + 0 -1 1345 -1.3985199620947242e-03 + + 1.9801080226898193e-01 -1.0368689894676208e-01 + <_> + + 0 -1 1346 2.4663188960403204e-03 + + 2.4554869160056114e-02 -1.0830429941415787e-01 + <_> + + 0 -1 1347 -1.3155230553820729e-03 + + -2.1984469890594482e-01 9.3965977430343628e-02 + <_> + + 0 -1 1348 -1.0562440007925034e-01 + + -7.9747790098190308e-01 8.9689819142222404e-03 + <_> + + 0 -1 1349 -3.0508160125464201e-03 + + 1.3266490399837494e-01 -1.3734680414199829e-01 + <_> + + 0 -1 1350 2.9857279732823372e-02 + + 9.6069881692528725e-03 -3.0116540193557739e-01 + <_> + + 0 -1 1351 3.0972119420766830e-02 + + 3.0091350898146629e-02 -5.7279831171035767e-01 + <_> + + 0 -1 1352 1.0772749781608582e-01 + + -1.1804240057244897e-03 -9.9987578392028809e-01 + <_> + + 0 -1 1353 -5.1501881331205368e-02 + + 2.7181380987167358e-01 -6.8161502480506897e-02 + <_> + + 0 -1 1354 -2.5288289412856102e-02 + + 4.5067310333251953e-01 -1.6520980745553970e-02 + <_> + + 0 -1 1355 -4.2859618552029133e-03 + + 3.7213888764381409e-01 -4.9761738628149033e-02 + <_> + + 0 -1 1356 -2.3194460198283195e-02 + + -2.0697650313377380e-01 4.1071210056543350e-02 + <_> + + 0 -1 1357 1.6878530383110046e-02 + + 5.6408129632472992e-02 -3.7614488601684570e-01 + <_> + + 0 -1 1358 -2.9601169750094414e-02 + + 2.7207991480827332e-01 -7.3090076446533203e-02 + <_> + + 0 -1 1359 -1.0797269642353058e-01 + + -4.9193540215492249e-01 3.6118570715188980e-02 + <_> + + 0 -1 1360 2.5317850708961487e-01 + + 8.8794529438018799e-03 -3.4746390581130981e-01 + <_> + + 0 -1 1361 -7.5927868485450745e-02 + + -5.2568101882934570e-01 3.0029149726033211e-02 + <_> + + 0 -1 1362 3.5496079362928867e-03 + + 6.1817318201065063e-02 -2.3450049757957458e-01 + <_> + + 0 -1 1363 -1.0419470258057117e-02 + + 9.5470182597637177e-02 -1.9764930009841919e-01 + <_> + + 0 -1 1364 -1.6242120414972305e-02 + + 3.5856780409812927e-01 -5.2510499954223633e-02 + <_> + + 0 -1 1365 -1.4503370039165020e-03 + + -1.8003490567207336e-01 9.5208331942558289e-02 + <_> + + 0 -1 1366 1.9696209579706192e-02 + + 3.7537660449743271e-02 -4.8065909743309021e-01 + <_> + + 0 -1 1367 3.4964820370078087e-03 + + -9.7187377512454987e-02 1.7569050192832947e-01 + <_> + 96 + -3.0804899215698242e+01 + + <_> + + 0 -1 1368 -1.4011229574680328e-01 + + 3.5787770152091980e-01 -1.2125530093908310e-01 + <_> + + 0 -1 1369 -1.0008949786424637e-02 + + 2.6330929994583130e-01 -8.9008018374443054e-02 + <_> + + 0 -1 1370 -1.1394180357456207e-02 + + 4.3228828907012939e-01 -5.0159178674221039e-02 + <_> + + 0 -1 1371 2.3134359717369080e-01 + + 6.3841762021183968e-03 -7.0292097330093384e-01 + <_> + + 0 -1 1372 1.2646619975566864e-01 + + 4.2768001556396484e-02 -4.3919000029563904e-01 + <_> + + 0 -1 1373 4.6616248786449432e-02 + + 1.9250590354204178e-02 5.4499799013137817e-01 + <_> + + 0 -1 1374 2.2037800401449203e-02 + + -8.5108749568462372e-02 3.3848780393600464e-01 + <_> + + 0 -1 1375 3.1345561146736145e-02 + + 2.2690940648317337e-02 -5.1671189069747925e-01 + <_> + + 0 -1 1376 -2.1140639483928680e-01 + + 2.9412490129470825e-01 -4.6479560434818268e-02 + <_> + + 0 -1 1377 -6.6334113478660583e-02 + + -1.3444049656391144e-01 1.2842020392417908e-01 + <_> + + 0 -1 1378 4.0738668292760849e-02 + + 2.3405810818076134e-02 -8.0233561992645264e-01 + <_> + + 0 -1 1379 -4.1470870375633240e-02 + + 1.4620569348335266e-01 -1.9590210169553757e-02 + <_> + + 0 -1 1380 1.8456790596246719e-02 + + -3.6185469478368759e-02 5.1238268613815308e-01 + <_> + + 0 -1 1381 3.7538509350270033e-03 + + -1.5587760508060455e-01 1.0312390327453613e-01 + <_> + + 0 -1 1382 -2.8798980638384819e-03 + + -1.2225770205259323e-01 1.7551769316196442e-01 + <_> + + 0 -1 1383 -3.2762341201305389e-02 + + -4.7169759869575500e-01 3.0380319803953171e-02 + <_> + + 0 -1 1384 -3.9022210985422134e-02 + + 3.5106760263442993e-01 -6.6119261085987091e-02 + <_> + + 0 -1 1385 -4.4674798846244812e-02 + + -3.9958310127258301e-01 2.1066389977931976e-02 + <_> + + 0 -1 1386 5.3343027830123901e-03 + + 7.9137377440929413e-02 -2.1176779270172119e-01 + <_> + + 0 -1 1387 1.5521169640123844e-02 + + 3.4438930451869965e-02 -5.7202047109603882e-01 + <_> + + 0 -1 1388 -8.0842437455430627e-04 + + 1.1951749771833420e-01 -1.4325830340385437e-01 + <_> + + 0 -1 1389 2.7754740789532661e-02 + + -3.2436888664960861e-02 3.0749228596687317e-01 + <_> + + 0 -1 1390 -3.4786630421876907e-03 + + 1.5688750147819519e-01 -1.5649950504302979e-01 + <_> + + 0 -1 1391 -2.7840979397296906e-02 + + -1.2932580709457397e-01 1.5408019721508026e-01 + <_> + + 0 -1 1392 -2.0033390319440514e-04 + + 1.0591139644384384e-01 -2.3829479515552521e-01 + <_> + + 0 -1 1393 6.3352532684803009e-02 + + -3.5057701170444489e-02 1.1119090020656586e-01 + <_> + + 0 -1 1394 -1.0634259879589081e-01 + + -6.7938178777694702e-01 2.7465900406241417e-02 + <_> + + 0 -1 1395 1.9035820150747895e-04 + + -1.1908160150051117e-01 1.1334689706563950e-01 + <_> + + 0 -1 1396 -1.3564240187406540e-02 + + 2.7505800127983093e-01 -6.8315982818603516e-02 + <_> + + 0 -1 1397 2.1096229553222656e-02 + + -1.0987949557602406e-02 3.9935430884361267e-01 + <_> + + 0 -1 1398 -2.4880920536816120e-03 + + -2.1849539875984192e-01 8.9293807744979858e-02 + <_> + + 0 -1 1399 1.2370670214295387e-02 + + -9.5645450055599213e-02 5.6633960455656052e-02 + <_> + + 0 -1 1400 -1.2036350369453430e-01 + + -5.3174102306365967e-01 3.5775080323219299e-02 + <_> + + 0 -1 1401 -6.7138060927391052e-02 + + 2.1456840634346008e-01 -8.7389126420021057e-02 + <_> + + 0 -1 1402 -1.2161920219659805e-01 + + -1.8160809576511383e-01 1.4573550224304199e-01 + <_> + + 0 -1 1403 2.0479459315538406e-02 + + -5.5715341120958328e-02 6.1189219355583191e-02 + <_> + + 0 -1 1404 2.1847079042345285e-03 + + -9.5258213579654694e-02 2.0591090619564056e-01 + <_> + + 0 -1 1405 4.0952740237116814e-03 + + -1.1867360025644302e-01 4.6696461737155914e-02 + <_> + + 0 -1 1406 -3.5035728942602873e-03 + + 2.3321969807147980e-01 -7.5537599623203278e-02 + <_> + + 0 -1 1407 -1.0467019863426685e-02 + + -1.2448009848594666e-01 5.0595261156558990e-02 + <_> + + 0 -1 1408 -1.5020829625427723e-02 + + 9.1991908848285675e-02 -2.2077399492263794e-01 + <_> + + 0 -1 1409 4.4499050825834274e-02 + + 3.4101899713277817e-02 -5.3422772884368896e-01 + <_> + + 0 -1 1410 8.1879837671294808e-04 + + -1.9193440675735474e-01 1.0177730023860931e-01 + <_> + + 0 -1 1411 -2.9793549329042435e-02 + + 4.1442748904228210e-01 -2.0298149436712265e-02 + <_> + + 0 -1 1412 1.6614329069852829e-02 + + 1.0457099974155426e-01 -1.8352369964122772e-01 + <_> + + 0 -1 1413 -2.2510789334774017e-02 + + 1.8911230564117432e-01 -3.3867038786411285e-02 + <_> + + 0 -1 1414 2.0407250151038170e-02 + + -5.8524370193481445e-02 3.5967621207237244e-01 + <_> + + 0 -1 1415 3.0294319149106741e-03 + + -1.4031639695167542e-01 5.4849781095981598e-02 + <_> + + 0 -1 1416 5.8518280275166035e-04 + + 9.5523588359355927e-02 -1.9650359451770782e-01 + <_> + + 0 -1 1417 1.7756339162588120e-02 + + 1.6195869073271751e-02 -5.8534300327301025e-01 + <_> + + 0 -1 1418 -3.2687620259821415e-03 + + -3.0802598595619202e-01 6.5568111836910248e-02 + <_> + + 0 -1 1419 3.4140530042350292e-03 + + -8.2502417266368866e-02 9.9890269339084625e-02 + <_> + + 0 -1 1420 6.3527207821607590e-03 + + -3.5163778811693192e-02 5.4237622022628784e-01 + <_> + + 0 -1 1421 2.0045090932399035e-03 + + -1.0081720352172852e-01 9.6935041248798370e-02 + <_> + + 0 -1 1422 6.9825910031795502e-03 + + -1.6012389957904816e-01 1.1348509788513184e-01 + <_> + + 0 -1 1423 4.5963011682033539e-02 + + 6.1929170042276382e-03 -8.8551759719848633e-01 + <_> + + 0 -1 1424 3.7062391638755798e-02 + + 2.0128250122070312e-02 -8.0933511257171631e-01 + <_> + + 0 -1 1425 -4.1522808372974396e-02 + + 2.0597919821739197e-01 -3.1927939504384995e-02 + <_> + + 0 -1 1426 1.6521860659122467e-01 + + 2.5524839758872986e-02 -6.2951612472534180e-01 + <_> + + 0 -1 1427 -2.3188880085945129e-01 + + 1.3953979313373566e-01 -6.1611790210008621e-02 + <_> + + 0 -1 1428 -2.8150070458650589e-02 + + -1.3676370680332184e-01 1.1677569895982742e-01 + <_> + + 0 -1 1429 2.0499450620263815e-03 + + -1.5855039656162262e-01 1.3511709868907928e-01 + <_> + + 0 -1 1430 1.2636490282602608e-04 + + -1.5024340152740479e-01 1.3739089667797089e-01 + <_> + + 0 -1 1431 2.4286638945341110e-03 + + 7.9247459769248962e-02 -2.5959441065788269e-01 + <_> + + 0 -1 1432 -2.1873589605093002e-02 + + 3.5590508580207825e-01 -6.1835918575525284e-02 + <_> + + 0 -1 1433 -5.8419788256287575e-03 + + -1.0219120234251022e-01 3.9997130632400513e-02 + <_> + + 0 -1 1434 -2.6236099656671286e-03 + + 1.2129990011453629e-01 -1.4861150085926056e-01 + <_> + + 0 -1 1435 1.4590419828891754e-01 + + -3.6884650588035583e-02 4.1484919190406799e-01 + <_> + + 0 -1 1436 -8.6298510432243347e-03 + + 2.5522458553314209e-01 -6.9871626794338226e-02 + <_> + + 0 -1 1437 -3.9153471589088440e-02 + + -8.5533118247985840e-01 1.4639239758253098e-02 + <_> + + 0 -1 1438 3.8482698798179626e-01 + + 1.7361119389533997e-02 -7.9790550470352173e-01 + <_> + + 0 -1 1439 -6.3598138513043523e-04 + + 1.1518269777297974e-01 -1.4216409623622894e-01 + <_> + + 0 -1 1440 5.9026381932199001e-03 + + 7.0523656904697418e-02 -2.3031190037727356e-01 + <_> + + 0 -1 1441 -1.1841119703603908e-04 + + 1.0401789844036102e-01 -1.7126679420471191e-01 + <_> + + 0 -1 1442 8.1962659955024719e-02 + + 2.7799099683761597e-02 -5.8331722021102905e-01 + <_> + + 0 -1 1443 -7.9551688395440578e-04 + + 1.2568520009517670e-01 -1.0317719727754593e-01 + <_> + + 0 -1 1444 -1.5588940680027008e-01 + + 6.2890201807022095e-01 -2.5191979482769966e-02 + <_> + + 0 -1 1445 -1.3456310145556927e-02 + + -3.2471698522567749e-01 5.5486921221017838e-02 + <_> + + 0 -1 1446 -2.1507199853658676e-02 + + 2.8819179534912109e-01 -6.1176139861345291e-02 + <_> + + 0 -1 1447 -1.9042069092392921e-02 + + -6.0552909970283508e-02 8.9629061520099640e-02 + <_> + + 0 -1 1448 -9.1205362696200609e-04 + + 1.2385459989309311e-01 -1.3584870100021362e-01 + <_> + + 0 -1 1449 3.8202628493309021e-02 + + 1.9218420609831810e-02 -8.4488832950592041e-01 + <_> + + 0 -1 1450 5.1787391304969788e-02 + + -5.4830659180879593e-02 3.3352980017662048e-01 + <_> + + 0 -1 1451 -1.3860349357128143e-01 + + -2.7164599299430847e-01 1.0680199600756168e-02 + <_> + + 0 -1 1452 -3.9325959980487823e-02 + + -7.6043432950973511e-01 1.9320670515298843e-02 + <_> + + 0 -1 1453 -1.1157010449096560e-03 + + 6.9478519260883331e-02 -2.0327170193195343e-01 + <_> + + 0 -1 1454 -4.2068599723279476e-03 + + 1.6007219254970551e-01 -1.0982350260019302e-01 + <_> + + 0 -1 1455 3.7919029127806425e-03 + + -8.3800643682479858e-02 2.5154781341552734e-01 + <_> + + 0 -1 1456 -3.1430590897798538e-02 + + -5.0590312480926514e-01 3.7667378783226013e-02 + <_> + + 0 -1 1457 -4.3412651866674423e-03 + + 5.8591969311237335e-02 -1.7271269857883453e-01 + <_> + + 0 -1 1458 -5.6401407346129417e-04 + + 1.0131839662790298e-01 -1.6737550497055054e-01 + <_> + + 0 -1 1459 -1.7139960080385208e-02 + + 4.9619451165199280e-02 -1.1812750250101089e-01 + <_> + + 0 -1 1460 -2.3868490010499954e-02 + + -9.5875509083271027e-02 1.8404319882392883e-01 + <_> + + 0 -1 1461 -8.7408810853958130e-02 + + 1.4144630730152130e-01 -5.7713828980922699e-02 + <_> + + 0 -1 1462 -3.9170090109109879e-02 + + -6.1036241054534912e-01 2.2308109328150749e-02 + <_> + + 0 -1 1463 5.3361579775810242e-02 + + 1.5027640387415886e-02 -6.5409141778945923e-01 + + <_> + + <_> + 1 5 12 21 -1. + <_> + 5 5 4 21 3. + <_> + + <_> + 9 2 3 26 -1. + <_> + 9 15 3 13 2. + <_> + + <_> + 1 4 12 23 -1. + <_> + 5 4 4 23 3. + <_> + + <_> + 1 7 12 9 -1. + <_> + 4 7 6 9 2. + <_> + + <_> + 3 12 3 16 -1. + <_> + 3 20 3 8 2. + <_> + + <_> + 4 8 6 6 -1. + <_> + 4 11 6 3 2. + <_> + + <_> + 1 25 12 3 -1. + <_> + 5 25 4 3 3. + <_> + + <_> + 6 25 8 3 -1. + <_> + 6 25 4 3 2. + <_> + + <_> + 4 2 4 12 -1. + <_> + 4 2 2 6 2. + <_> + 6 8 2 6 2. + <_> + + <_> + 3 15 8 11 -1. + <_> + 5 15 4 11 2. + <_> + + <_> + 6 9 6 6 -1. + <_> + 8 9 2 6 3. + <_> + + <_> + 2 9 6 6 -1. + <_> + 4 9 2 6 3. + <_> + + <_> + 8 0 5 28 -1. + <_> + 8 14 5 14 2. + <_> + + <_> + 2 24 10 4 -1. + <_> + 7 24 5 4 2. + <_> + + <_> + 3 15 8 11 -1. + <_> + 5 15 4 11 2. + <_> + + <_> + 0 25 14 3 -1. + <_> + 7 25 7 3 2. + <_> + + <_> + 1 11 12 13 -1. + <_> + 5 11 4 13 3. + <_> + + <_> + 1 2 12 21 -1. + <_> + 5 9 4 7 9. + <_> + + <_> + 10 0 3 28 -1. + <_> + 10 14 3 14 2. + <_> + + <_> + 1 0 3 28 -1. + <_> + 1 14 3 14 2. + <_> + + <_> + 5 5 6 8 -1. + <_> + 8 5 3 4 2. + <_> + 5 9 3 4 2. + <_> + + <_> + 3 5 6 8 -1. + <_> + 3 5 3 4 2. + <_> + 6 9 3 4 2. + <_> + + <_> + 10 16 4 12 -1. + <_> + 12 16 2 6 2. + <_> + 10 22 2 6 2. + <_> + + <_> + 4 8 6 4 -1. + <_> + 4 10 6 2 2. + <_> + + <_> + 3 5 8 21 -1. + <_> + 5 5 4 21 2. + <_> + + <_> + 1 15 12 12 -1. + <_> + 7 15 6 6 2. + <_> + 1 21 6 6 2. + <_> + + <_> + 0 25 12 3 -1. + <_> + 6 25 6 3 2. + <_> + + <_> + 8 14 3 8 -1. + <_> + 8 14 3 4 2. + 1 + <_> + + <_> + 0 25 8 3 -1. + <_> + 4 25 4 3 2. + <_> + + <_> + 2 24 12 4 -1. + <_> + 5 24 6 4 2. + <_> + + <_> + 1 18 4 6 -1. + <_> + 3 18 2 6 2. + <_> + + <_> + 8 8 4 7 -1. + <_> + 8 8 2 7 2. + <_> + + <_> + 2 8 4 7 -1. + <_> + 4 8 2 7 2. + <_> + + <_> + 1 3 12 18 -1. + <_> + 1 3 6 18 2. + <_> + + <_> + 1 20 4 8 -1. + <_> + 3 20 2 8 2. + <_> + + <_> + 6 10 7 18 -1. + <_> + 6 19 7 9 2. + <_> + + <_> + 4 8 3 13 -1. + <_> + 5 8 1 13 3. + <_> + + <_> + 10 22 4 6 -1. + <_> + 10 22 2 6 2. + <_> + + <_> + 1 0 12 27 -1. + <_> + 5 9 4 9 9. + <_> + + <_> + 2 20 12 7 -1. + <_> + 5 20 6 7 2. + <_> + + <_> + 2 25 10 3 -1. + <_> + 7 25 5 3 2. + <_> + + <_> + 0 26 14 2 -1. + <_> + 0 26 7 2 2. + <_> + + <_> + 3 15 8 9 -1. + <_> + 5 15 4 9 2. + <_> + + <_> + 8 23 6 5 -1. + <_> + 8 23 3 5 2. + <_> + + <_> + 0 26 14 2 -1. + <_> + 7 26 7 2 2. + <_> + + <_> + 8 10 2 18 -1. + <_> + 8 19 2 9 2. + <_> + + <_> + 4 4 4 12 -1. + <_> + 4 4 2 6 2. + <_> + 6 10 2 6 2. + <_> + + <_> + 4 24 9 4 -1. + <_> + 7 24 3 4 3. + <_> + + <_> + 1 3 12 15 -1. + <_> + 5 8 4 5 9. + <_> + + <_> + 11 16 2 12 -1. + <_> + 11 16 1 12 2. + <_> + + <_> + 2 4 7 16 -1. + <_> + 2 12 7 8 2. + <_> + + <_> + 8 8 4 6 -1. + <_> + 8 8 2 6 2. + <_> + + <_> + 3 8 8 6 -1. + <_> + 3 11 8 3 2. + <_> + + <_> + 8 8 6 8 -1. + <_> + 10 8 2 8 3. + <_> + + <_> + 0 8 6 7 -1. + <_> + 2 8 2 7 3. + <_> + + <_> + 2 25 12 3 -1. + <_> + 6 25 4 3 3. + <_> + + <_> + 0 25 12 3 -1. + <_> + 4 25 4 3 3. + <_> + + <_> + 1 7 12 4 -1. + <_> + 1 7 6 4 2. + <_> + + <_> + 0 2 14 12 -1. + <_> + 7 2 7 12 2. + <_> + + <_> + 0 19 14 6 -1. + <_> + 7 19 7 3 2. + <_> + 0 22 7 3 2. + <_> + + <_> + 1 14 12 6 -1. + <_> + 5 14 4 6 3. + <_> + + <_> + 2 24 12 4 -1. + <_> + 5 24 6 4 2. + <_> + + <_> + 2 1 4 14 -1. + <_> + 2 1 2 7 2. + <_> + 4 8 2 7 2. + <_> + + <_> + 10 3 4 6 -1. + <_> + 10 3 2 6 2. + 1 + <_> + + <_> + 4 3 6 4 -1. + <_> + 4 3 6 2 2. + 1 + <_> + + <_> + 0 16 14 8 -1. + <_> + 0 16 7 8 2. + <_> + + <_> + 5 16 3 12 -1. + <_> + 6 16 1 12 3. + <_> + + <_> + 7 15 4 7 -1. + <_> + 7 15 2 7 2. + <_> + + <_> + 3 15 4 8 -1. + <_> + 5 15 2 8 2. + <_> + + <_> + 9 17 4 8 -1. + <_> + 9 17 2 8 2. + <_> + + <_> + 1 17 4 8 -1. + <_> + 3 17 2 8 2. + <_> + + <_> + 9 18 4 7 -1. + <_> + 9 18 2 7 2. + <_> + + <_> + 1 18 4 7 -1. + <_> + 3 18 2 7 2. + <_> + + <_> + 7 5 4 6 -1. + <_> + 7 5 2 6 2. + 1 + <_> + + <_> + 7 5 6 4 -1. + <_> + 7 5 6 2 2. + 1 + <_> + + <_> + 2 26 12 2 -1. + <_> + 2 26 6 2 2. + <_> + + <_> + 4 7 3 12 -1. + <_> + 5 7 1 12 3. + <_> + + <_> + 1 7 12 11 -1. + <_> + 4 7 6 11 2. + <_> + + <_> + 6 13 8 4 -1. + <_> + 6 13 4 4 2. + 1 + <_> + + <_> + 5 22 6 4 -1. + <_> + 5 22 3 4 2. + <_> + + <_> + 0 26 14 2 -1. + <_> + 7 26 7 2 2. + <_> + + <_> + 1 3 12 18 -1. + <_> + 5 9 4 6 9. + <_> + + <_> + 0 6 9 22 -1. + <_> + 0 17 9 11 2. + <_> + + <_> + 1 1 12 24 -1. + <_> + 7 1 6 12 2. + <_> + 1 13 6 12 2. + <_> + + <_> + 0 26 12 2 -1. + <_> + 6 26 6 2 2. + <_> + + <_> + 1 4 12 23 -1. + <_> + 5 4 4 23 3. + <_> + + <_> + 5 22 6 5 -1. + <_> + 5 22 3 5 2. + <_> + + <_> + 3 22 6 5 -1. + <_> + 6 22 3 5 2. + <_> + + <_> + 5 1 4 6 -1. + <_> + 5 4 4 3 2. + <_> + + <_> + 1 8 12 8 -1. + <_> + 4 8 6 8 2. + <_> + + <_> + 6 8 5 12 -1. + <_> + 6 11 5 6 2. + <_> + + <_> + 0 20 14 6 -1. + <_> + 0 20 7 3 2. + <_> + 7 23 7 3 2. + <_> + + <_> + 6 9 6 6 -1. + <_> + 8 9 2 6 3. + <_> + + <_> + 5 8 4 6 -1. + <_> + 7 8 2 6 2. + <_> + + <_> + 2 13 12 15 -1. + <_> + 2 18 12 5 3. + <_> + + <_> + 0 16 4 12 -1. + <_> + 0 16 2 6 2. + <_> + 2 22 2 6 2. + <_> + + <_> + 9 2 2 26 -1. + <_> + 10 2 1 13 2. + <_> + 9 15 1 13 2. + <_> + + <_> + 3 2 2 26 -1. + <_> + 3 2 1 13 2. + <_> + 4 15 1 13 2. + <_> + + <_> + 10 22 4 6 -1. + <_> + 10 22 2 6 2. + <_> + + <_> + 0 1 12 12 -1. + <_> + 4 5 4 4 9. + <_> + + <_> + 6 15 3 12 -1. + <_> + 7 15 1 12 3. + <_> + + <_> + 5 10 3 15 -1. + <_> + 6 10 1 15 3. + <_> + + <_> + 10 22 4 6 -1. + <_> + 10 22 2 6 2. + <_> + + <_> + 0 10 8 18 -1. + <_> + 0 19 8 9 2. + <_> + + <_> + 5 16 8 12 -1. + <_> + 9 16 4 6 2. + <_> + 5 22 4 6 2. + <_> + + <_> + 0 25 8 3 -1. + <_> + 4 25 4 3 2. + <_> + + <_> + 0 17 14 8 -1. + <_> + 7 17 7 4 2. + <_> + 0 21 7 4 2. + <_> + + <_> + 2 15 6 4 -1. + <_> + 5 15 3 4 2. + <_> + + <_> + 5 23 9 4 -1. + <_> + 8 23 3 4 3. + <_> + + <_> + 0 23 9 5 -1. + <_> + 3 23 3 5 3. + <_> + + <_> + 1 4 12 22 -1. + <_> + 5 4 4 22 3. + <_> + + <_> + 1 4 5 24 -1. + <_> + 1 10 5 12 2. + <_> + + <_> + 2 23 12 4 -1. + <_> + 5 23 6 4 2. + <_> + + <_> + 3 16 4 12 -1. + <_> + 5 16 2 12 2. + <_> + + <_> + 1 17 12 11 -1. + <_> + 1 17 6 11 2. + <_> + + <_> + 5 16 3 12 -1. + <_> + 6 16 1 12 3. + <_> + + <_> + 8 17 4 6 -1. + <_> + 8 17 4 3 2. + 1 + <_> + + <_> + 7 16 4 6 -1. + <_> + 7 16 2 6 2. + 1 + <_> + + <_> + 6 2 4 6 -1. + <_> + 6 2 2 6 2. + <_> + + <_> + 2 12 5 16 -1. + <_> + 2 20 5 8 2. + <_> + + <_> + 6 13 3 14 -1. + <_> + 7 13 1 14 3. + <_> + + <_> + 6 6 8 3 -1. + <_> + 6 6 4 3 2. + 1 + <_> + + <_> + 0 8 14 6 -1. + <_> + 0 11 14 3 2. + <_> + + <_> + 2 7 4 7 -1. + <_> + 4 7 2 7 2. + <_> + + <_> + 8 8 4 6 -1. + <_> + 8 8 2 6 2. + <_> + + <_> + 3 13 8 13 -1. + <_> + 5 13 4 13 2. + <_> + + <_> + 8 2 4 12 -1. + <_> + 10 2 2 6 2. + <_> + 8 8 2 6 2. + <_> + + <_> + 2 2 4 12 -1. + <_> + 2 2 2 6 2. + <_> + 4 8 2 6 2. + <_> + + <_> + 6 24 8 3 -1. + <_> + 6 24 4 3 2. + <_> + + <_> + 3 16 2 12 -1. + <_> + 4 16 1 12 2. + <_> + + <_> + 0 21 14 6 -1. + <_> + 0 21 7 6 2. + <_> + + <_> + 0 11 8 4 -1. + <_> + 4 11 4 4 2. + <_> + + <_> + 1 2 12 5 -1. + <_> + 5 2 4 5 3. + <_> + + <_> + 2 1 6 21 -1. + <_> + 4 8 2 7 9. + <_> + + <_> + 11 16 2 12 -1. + <_> + 11 16 1 12 2. + <_> + + <_> + 7 17 6 5 -1. + <_> + 7 17 3 5 2. + 1 + <_> + + <_> + 6 16 3 12 -1. + <_> + 7 16 1 12 3. + <_> + + <_> + 1 16 2 12 -1. + <_> + 2 16 1 12 2. + <_> + + <_> + 7 13 3 12 -1. + <_> + 8 13 1 12 3. + <_> + + <_> + 6 17 4 6 -1. + <_> + 6 17 2 6 2. + 1 + <_> + + <_> + 6 8 4 6 -1. + <_> + 6 11 4 3 2. + <_> + + <_> + 1 5 8 12 -1. + <_> + 1 11 8 6 2. + <_> + + <_> + 7 13 3 12 -1. + <_> + 8 13 1 12 3. + <_> + + <_> + 6 6 8 3 -1. + <_> + 6 6 4 3 2. + 1 + <_> + + <_> + 7 14 3 12 -1. + <_> + 8 14 1 12 3. + <_> + + <_> + 0 25 12 3 -1. + <_> + 4 25 4 3 3. + <_> + + <_> + 7 17 4 8 -1. + <_> + 7 17 2 8 2. + <_> + + <_> + 3 17 4 8 -1. + <_> + 5 17 2 8 2. + <_> + + <_> + 8 24 6 4 -1. + <_> + 8 24 3 4 2. + <_> + + <_> + 2 22 6 6 -1. + <_> + 4 22 2 6 3. + <_> + + <_> + 8 15 5 8 -1. + <_> + 8 15 5 4 2. + 1 + <_> + + <_> + 6 15 8 5 -1. + <_> + 6 15 4 5 2. + 1 + <_> + + <_> + 1 8 12 7 -1. + <_> + 4 8 6 7 2. + <_> + + <_> + 0 10 6 10 -1. + <_> + 0 15 6 5 2. + <_> + + <_> + 7 4 4 22 -1. + <_> + 7 15 4 11 2. + <_> + + <_> + 1 4 12 22 -1. + <_> + 4 4 6 22 2. + <_> + + <_> + 6 3 4 12 -1. + <_> + 8 3 2 6 2. + <_> + 6 9 2 6 2. + <_> + + <_> + 5 16 3 12 -1. + <_> + 6 16 1 12 3. + <_> + + <_> + 5 5 6 8 -1. + <_> + 8 5 3 4 2. + <_> + 5 9 3 4 2. + <_> + + <_> + 3 5 6 8 -1. + <_> + 3 5 3 4 2. + <_> + 6 9 3 4 2. + <_> + + <_> + 8 4 6 4 -1. + <_> + 8 4 6 2 2. + 1 + <_> + + <_> + 5 10 3 18 -1. + <_> + 5 19 3 9 2. + <_> + + <_> + 7 6 4 6 -1. + <_> + 7 6 4 3 2. + 1 + <_> + + <_> + 7 6 6 4 -1. + <_> + 7 6 3 4 2. + 1 + <_> + + <_> + 6 24 8 3 -1. + <_> + 6 24 4 3 2. + <_> + + <_> + 1 11 12 5 -1. + <_> + 4 11 6 5 2. + <_> + + <_> + 10 22 4 6 -1. + <_> + 10 22 2 6 2. + <_> + + <_> + 2 3 4 12 -1. + <_> + 2 3 2 6 2. + <_> + 4 9 2 6 2. + <_> + + <_> + 10 22 4 6 -1. + <_> + 10 22 2 6 2. + <_> + + <_> + 0 22 4 6 -1. + <_> + 2 22 2 6 2. + <_> + + <_> + 6 15 3 12 -1. + <_> + 7 15 1 12 3. + <_> + + <_> + 7 16 4 6 -1. + <_> + 7 16 2 6 2. + 1 + <_> + + <_> + 4 2 6 6 -1. + <_> + 4 4 6 2 3. + <_> + + <_> + 3 16 2 12 -1. + <_> + 4 16 1 12 2. + <_> + + <_> + 7 16 2 12 -1. + <_> + 7 16 1 12 2. + <_> + + <_> + 5 9 4 6 -1. + <_> + 7 9 2 6 2. + <_> + + <_> + 7 15 2 12 -1. + <_> + 7 15 1 12 2. + <_> + + <_> + 5 15 2 12 -1. + <_> + 6 15 1 12 2. + <_> + + <_> + 2 25 12 2 -1. + <_> + 2 25 6 2 2. + <_> + + <_> + 3 16 4 12 -1. + <_> + 3 16 2 6 2. + <_> + 5 22 2 6 2. + <_> + + <_> + 6 24 8 3 -1. + <_> + 6 24 4 3 2. + <_> + + <_> + 0 25 12 2 -1. + <_> + 6 25 6 2 2. + <_> + + <_> + 4 1 6 27 -1. + <_> + 4 10 6 9 3. + <_> + + <_> + 6 16 3 12 -1. + <_> + 7 16 1 12 3. + <_> + + <_> + 3 21 6 4 -1. + <_> + 6 21 3 4 2. + <_> + + <_> + 4 2 6 12 -1. + <_> + 4 8 6 6 2. + <_> + + <_> + 6 0 6 4 -1. + <_> + 6 0 3 4 2. + 1 + <_> + + <_> + 6 4 3 14 -1. + <_> + 7 4 1 14 3. + <_> + + <_> + 4 8 6 6 -1. + <_> + 6 8 2 6 3. + <_> + + <_> + 2 24 12 4 -1. + <_> + 6 24 4 4 3. + <_> + + <_> + 0 24 12 4 -1. + <_> + 4 24 4 4 3. + <_> + + <_> + 8 13 3 12 -1. + <_> + 9 13 1 12 3. + <_> + + <_> + 1 22 4 6 -1. + <_> + 3 22 2 6 2. + <_> + + <_> + 7 7 3 12 -1. + <_> + 8 7 1 12 3. + <_> + + <_> + 4 7 3 12 -1. + <_> + 5 7 1 12 3. + <_> + + <_> + 4 1 8 3 -1. + <_> + 4 1 4 3 2. + <_> + + <_> + 4 4 3 23 -1. + <_> + 5 4 1 23 3. + <_> + + <_> + 9 21 4 7 -1. + <_> + 9 21 2 7 2. + <_> + + <_> + 5 14 3 12 -1. + <_> + 6 14 1 12 3. + <_> + + <_> + 2 26 12 2 -1. + <_> + 2 26 6 2 2. + <_> + + <_> + 0 26 12 2 -1. + <_> + 6 26 6 2 2. + <_> + + <_> + 8 13 3 12 -1. + <_> + 9 13 1 12 3. + <_> + + <_> + 3 13 3 12 -1. + <_> + 4 13 1 12 3. + <_> + + <_> + 3 2 8 20 -1. + <_> + 3 7 8 10 2. + <_> + + <_> + 2 18 12 8 -1. + <_> + 5 18 6 8 2. + <_> + + <_> + 4 9 6 6 -1. + <_> + 6 9 2 6 3. + <_> + + <_> + 2 18 12 8 -1. + <_> + 5 18 6 8 2. + <_> + + <_> + 0 24 8 4 -1. + <_> + 4 24 4 4 2. + <_> + + <_> + 6 2 2 24 -1. + <_> + 7 2 1 12 2. + <_> + 6 14 1 12 2. + <_> + + <_> + 5 8 4 12 -1. + <_> + 5 8 2 6 2. + <_> + 7 14 2 6 2. + <_> + + <_> + 7 3 6 6 -1. + <_> + 7 3 3 6 2. + 1 + <_> + + <_> + 0 8 6 7 -1. + <_> + 2 8 2 7 3. + <_> + + <_> + 7 3 6 6 -1. + <_> + 7 3 3 6 2. + 1 + <_> + + <_> + 4 8 6 4 -1. + <_> + 7 8 3 4 2. + <_> + + <_> + 2 7 10 19 -1. + <_> + 2 7 5 19 2. + <_> + + <_> + 0 4 11 24 -1. + <_> + 0 16 11 12 2. + <_> + + <_> + 1 1 12 21 -1. + <_> + 5 8 4 7 9. + <_> + + <_> + 0 18 12 8 -1. + <_> + 3 18 6 8 2. + <_> + + <_> + 9 17 4 8 -1. + <_> + 9 17 2 8 2. + <_> + + <_> + 4 7 4 6 -1. + <_> + 4 10 4 3 2. + <_> + + <_> + 7 7 5 9 -1. + <_> + 7 10 5 3 3. + <_> + + <_> + 1 17 4 8 -1. + <_> + 3 17 2 8 2. + <_> + + <_> + 9 15 3 13 -1. + <_> + 10 15 1 13 3. + <_> + + <_> + 3 0 6 8 -1. + <_> + 3 0 3 4 2. + <_> + 6 4 3 4 2. + <_> + + <_> + 9 18 4 10 -1. + <_> + 9 18 2 10 2. + <_> + + <_> + 1 18 4 10 -1. + <_> + 3 18 2 10 2. + <_> + + <_> + 7 22 2 4 -1. + <_> + 7 22 1 4 2. + 1 + <_> + + <_> + 7 22 4 2 -1. + <_> + 7 22 4 1 2. + 1 + <_> + + <_> + 7 7 5 9 -1. + <_> + 7 10 5 3 3. + <_> + + <_> + 1 7 12 11 -1. + <_> + 4 7 6 11 2. + <_> + + <_> + 8 6 3 8 -1. + <_> + 8 6 3 4 2. + 1 + <_> + + <_> + 5 8 3 16 -1. + <_> + 5 12 3 8 2. + <_> + + <_> + 8 6 3 8 -1. + <_> + 8 6 3 4 2. + 1 + <_> + + <_> + 6 6 8 3 -1. + <_> + 6 6 4 3 2. + 1 + <_> + + <_> + 2 24 12 3 -1. + <_> + 6 24 4 3 3. + <_> + + <_> + 3 5 6 4 -1. + <_> + 3 7 6 2 2. + <_> + + <_> + 4 5 6 4 -1. + <_> + 4 7 6 2 2. + <_> + + <_> + 4 14 6 6 -1. + <_> + 6 14 2 6 3. + <_> + + <_> + 6 11 3 13 -1. + <_> + 7 11 1 13 3. + <_> + + <_> + 0 24 12 3 -1. + <_> + 4 24 4 3 3. + <_> + + <_> + 9 16 2 12 -1. + <_> + 9 16 1 12 2. + <_> + + <_> + 3 16 2 12 -1. + <_> + 4 16 1 12 2. + <_> + + <_> + 7 16 2 12 -1. + <_> + 7 16 1 12 2. + <_> + + <_> + 0 21 4 6 -1. + <_> + 2 21 2 6 2. + <_> + + <_> + 7 16 2 12 -1. + <_> + 7 16 1 12 2. + <_> + + <_> + 2 3 10 16 -1. + <_> + 2 3 5 8 2. + <_> + 7 11 5 8 2. + <_> + + <_> + 4 12 6 16 -1. + <_> + 4 20 6 8 2. + <_> + + <_> + 1 15 12 11 -1. + <_> + 4 15 6 11 2. + <_> + + <_> + 3 4 6 10 -1. + <_> + 3 4 3 5 2. + <_> + 6 9 3 5 2. + <_> + + <_> + 2 24 12 4 -1. + <_> + 8 24 6 2 2. + <_> + 2 26 6 2 2. + <_> + + <_> + 0 24 12 4 -1. + <_> + 0 24 6 2 2. + <_> + 6 26 6 2 2. + <_> + + <_> + 8 4 6 4 -1. + <_> + 8 4 6 2 2. + 1 + <_> + + <_> + 1 2 12 18 -1. + <_> + 5 8 4 6 9. + <_> + + <_> + 2 22 10 6 -1. + <_> + 2 22 5 6 2. + <_> + + <_> + 1 26 12 2 -1. + <_> + 7 26 6 2 2. + <_> + + <_> + 8 4 6 4 -1. + <_> + 8 4 6 2 2. + 1 + <_> + + <_> + 0 12 10 4 -1. + <_> + 5 12 5 4 2. + <_> + + <_> + 4 8 6 4 -1. + <_> + 4 10 6 2 2. + <_> + + <_> + 5 1 4 12 -1. + <_> + 5 4 4 6 2. + <_> + + <_> + 7 4 6 8 -1. + <_> + 10 4 3 4 2. + <_> + 7 8 3 4 2. + <_> + + <_> + 0 18 14 4 -1. + <_> + 0 18 7 2 2. + <_> + 7 20 7 2 2. + <_> + + <_> + 7 16 2 12 -1. + <_> + 7 16 1 12 2. + <_> + + <_> + 4 15 3 12 -1. + <_> + 5 15 1 12 3. + <_> + + <_> + 8 9 2 13 -1. + <_> + 8 9 1 13 2. + <_> + + <_> + 5 10 4 6 -1. + <_> + 7 10 2 6 2. + <_> + + <_> + 3 11 8 5 -1. + <_> + 3 11 4 5 2. + <_> + + <_> + 5 16 2 12 -1. + <_> + 6 16 1 12 2. + <_> + + <_> + 0 7 10 17 -1. + <_> + 5 7 5 17 2. + <_> + + <_> + 3 7 8 4 -1. + <_> + 3 9 8 2 2. + <_> + + <_> + 5 0 4 24 -1. + <_> + 5 8 4 8 3. + <_> + + <_> + 3 16 9 4 -1. + <_> + 6 16 3 4 3. + <_> + + <_> + 7 14 6 4 -1. + <_> + 7 14 3 4 2. + 1 + <_> + + <_> + 5 23 9 4 -1. + <_> + 8 23 3 4 3. + <_> + + <_> + 0 22 9 4 -1. + <_> + 3 22 3 4 3. + <_> + + <_> + 9 22 4 6 -1. + <_> + 9 22 2 6 2. + <_> + + <_> + 1 24 6 4 -1. + <_> + 4 24 3 4 2. + <_> + + <_> + 4 19 8 9 -1. + <_> + 6 19 4 9 2. + <_> + + <_> + 2 19 8 9 -1. + <_> + 4 19 4 9 2. + <_> + + <_> + 2 22 12 4 -1. + <_> + 5 22 6 4 2. + <_> + + <_> + 0 19 14 7 -1. + <_> + 7 19 7 7 2. + <_> + + <_> + 5 20 6 8 -1. + <_> + 8 20 3 4 2. + <_> + 5 24 3 4 2. + <_> + + <_> + 3 20 6 8 -1. + <_> + 3 20 3 4 2. + <_> + 6 24 3 4 2. + <_> + + <_> + 6 1 4 14 -1. + <_> + 8 1 2 7 2. + <_> + 6 8 2 7 2. + <_> + + <_> + 2 2 4 12 -1. + <_> + 2 2 2 6 2. + <_> + 4 8 2 6 2. + <_> + + <_> + 7 4 6 4 -1. + <_> + 7 4 3 4 2. + 1 + <_> + + <_> + 7 4 4 6 -1. + <_> + 7 4 4 3 2. + 1 + <_> + + <_> + 7 3 6 5 -1. + <_> + 7 3 3 5 2. + 1 + <_> + + <_> + 7 3 5 6 -1. + <_> + 7 3 5 3 2. + 1 + <_> + + <_> + 7 3 6 4 -1. + <_> + 7 3 6 2 2. + 1 + <_> + + <_> + 3 2 8 18 -1. + <_> + 3 8 8 6 3. + <_> + + <_> + 4 15 9 12 -1. + <_> + 7 19 3 4 9. + <_> + + <_> + 1 21 12 6 -1. + <_> + 7 21 6 6 2. + <_> + + <_> + 9 18 4 8 -1. + <_> + 9 18 2 8 2. + <_> + + <_> + 2 16 9 4 -1. + <_> + 5 16 3 4 3. + <_> + + <_> + 4 17 10 6 -1. + <_> + 4 17 5 6 2. + <_> + + <_> + 1 18 4 8 -1. + <_> + 3 18 2 8 2. + <_> + + <_> + 9 3 5 6 -1. + <_> + 9 3 5 3 2. + 1 + <_> + + <_> + 1 17 8 6 -1. + <_> + 5 17 4 6 2. + <_> + + <_> + 2 19 12 9 -1. + <_> + 6 22 4 3 9. + <_> + + <_> + 2 0 4 14 -1. + <_> + 2 0 2 7 2. + <_> + 4 7 2 7 2. + <_> + + <_> + 4 9 10 14 -1. + <_> + 9 9 5 7 2. + <_> + 4 16 5 7 2. + <_> + + <_> + 0 16 4 12 -1. + <_> + 0 16 2 6 2. + <_> + 2 22 2 6 2. + <_> + + <_> + 3 24 8 4 -1. + <_> + 3 24 4 4 2. + <_> + + <_> + 0 5 14 22 -1. + <_> + 0 16 14 11 2. + <_> + + <_> + 6 13 6 8 -1. + <_> + 6 17 6 4 2. + <_> + + <_> + 0 9 10 14 -1. + <_> + 0 9 5 7 2. + <_> + 5 16 5 7 2. + <_> + + <_> + 3 3 9 9 -1. + <_> + 3 6 9 3 3. + <_> + + <_> + 5 1 4 6 -1. + <_> + 5 4 4 3 2. + <_> + + <_> + 1 0 12 9 -1. + <_> + 5 3 4 3 9. + <_> + + <_> + 4 7 6 12 -1. + <_> + 4 7 3 6 2. + <_> + 7 13 3 6 2. + <_> + + <_> + 6 7 6 18 -1. + <_> + 8 13 2 6 9. + <_> + + <_> + 2 7 6 18 -1. + <_> + 4 13 2 6 9. + <_> + + <_> + 2 22 12 4 -1. + <_> + 6 22 4 4 3. + <_> + + <_> + 3 16 8 8 -1. + <_> + 3 16 4 4 2. + <_> + 7 20 4 4 2. + <_> + + <_> + 7 7 6 10 -1. + <_> + 7 7 3 10 2. + <_> + + <_> + 1 8 12 10 -1. + <_> + 4 8 6 10 2. + <_> + + <_> + 5 16 3 12 -1. + <_> + 6 16 1 12 3. + <_> + + <_> + 4 5 10 17 -1. + <_> + 4 5 5 17 2. + <_> + + <_> + 0 4 14 24 -1. + <_> + 7 4 7 24 2. + <_> + + <_> + 4 9 6 7 -1. + <_> + 6 9 2 7 3. + <_> + + <_> + 2 20 10 8 -1. + <_> + 2 20 5 4 2. + <_> + 7 24 5 4 2. + <_> + + <_> + 8 5 6 8 -1. + <_> + 6 7 6 4 2. + 1 + <_> + + <_> + 6 4 4 6 -1. + <_> + 6 4 2 6 2. + 1 + <_> + + <_> + 6 3 4 6 -1. + <_> + 6 3 2 6 2. + <_> + + <_> + 5 4 4 6 -1. + <_> + 7 4 2 6 2. + <_> + + <_> + 5 8 4 6 -1. + <_> + 5 8 2 6 2. + <_> + + <_> + 7 3 6 6 -1. + <_> + 7 3 6 3 2. + 1 + <_> + + <_> + 4 5 6 6 -1. + <_> + 4 8 6 3 2. + <_> + + <_> + 3 12 6 14 -1. + <_> + 3 19 6 7 2. + <_> + + <_> + 11 16 2 12 -1. + <_> + 11 16 1 12 2. + <_> + + <_> + 1 22 6 6 -1. + <_> + 3 22 2 6 3. + <_> + + <_> + 6 16 3 12 -1. + <_> + 7 16 1 12 3. + <_> + + <_> + 5 16 3 12 -1. + <_> + 6 16 1 12 3. + <_> + + <_> + 3 9 8 4 -1. + <_> + 3 11 8 2 2. + <_> + + <_> + 3 16 2 12 -1. + <_> + 4 16 1 12 2. + <_> + + <_> + 2 20 12 8 -1. + <_> + 5 20 6 8 2. + <_> + + <_> + 0 20 12 8 -1. + <_> + 3 20 6 8 2. + <_> + + <_> + 5 4 9 12 -1. + <_> + 5 10 9 6 2. + <_> + + <_> + 4 12 10 4 -1. + <_> + 4 12 10 2 2. + 1 + <_> + + <_> + 4 2 10 4 -1. + <_> + 4 2 5 4 2. + <_> + + <_> + 1 15 12 13 -1. + <_> + 4 15 6 13 2. + <_> + + <_> + 11 16 2 12 -1. + <_> + 11 16 1 12 2. + <_> + + <_> + 2 3 3 12 -1. + <_> + 3 3 1 12 3. + <_> + + <_> + 8 2 4 6 -1. + <_> + 8 2 2 6 2. + <_> + + <_> + 2 2 4 6 -1. + <_> + 4 2 2 6 2. + <_> + + <_> + 2 13 12 14 -1. + <_> + 5 13 6 14 2. + <_> + + <_> + 1 16 2 12 -1. + <_> + 2 16 1 12 2. + <_> + + <_> + 9 21 4 6 -1. + <_> + 9 21 2 6 2. + <_> + + <_> + 1 21 4 6 -1. + <_> + 3 21 2 6 2. + <_> + + <_> + 9 0 3 15 -1. + <_> + 10 0 1 15 3. + <_> + + <_> + 2 22 4 6 -1. + <_> + 4 22 2 6 2. + <_> + + <_> + 2 13 12 14 -1. + <_> + 5 13 6 14 2. + <_> + + <_> + 6 3 4 6 -1. + <_> + 6 3 4 3 2. + 1 + <_> + + <_> + 1 0 12 24 -1. + <_> + 5 8 4 8 9. + <_> + + <_> + 4 2 6 8 -1. + <_> + 4 6 6 4 2. + <_> + + <_> + 2 4 12 8 -1. + <_> + 2 6 12 4 2. + <_> + + <_> + 1 8 12 18 -1. + <_> + 4 8 6 18 2. + <_> + + <_> + 3 0 8 24 -1. + <_> + 3 8 8 8 3. + <_> + + <_> + 1 21 6 6 -1. + <_> + 3 21 2 6 3. + <_> + + <_> + 5 7 8 3 -1. + <_> + 5 7 4 3 2. + <_> + + <_> + 1 7 8 3 -1. + <_> + 5 7 4 3 2. + <_> + + <_> + 5 1 4 6 -1. + <_> + 5 4 4 3 2. + <_> + + <_> + 4 6 4 6 -1. + <_> + 4 9 4 3 2. + <_> + + <_> + 10 20 4 6 -1. + <_> + 10 20 2 6 2. + <_> + + <_> + 3 1 8 21 -1. + <_> + 3 8 8 7 3. + <_> + + <_> + 7 16 4 12 -1. + <_> + 9 16 2 6 2. + <_> + 7 22 2 6 2. + <_> + + <_> + 1 25 12 3 -1. + <_> + 5 25 4 3 3. + <_> + + <_> + 7 16 4 12 -1. + <_> + 9 16 2 6 2. + <_> + 7 22 2 6 2. + <_> + + <_> + 3 16 4 12 -1. + <_> + 3 16 2 6 2. + <_> + 5 22 2 6 2. + <_> + + <_> + 7 17 4 7 -1. + <_> + 7 17 2 7 2. + <_> + + <_> + 3 17 4 7 -1. + <_> + 5 17 2 7 2. + <_> + + <_> + 4 12 6 6 -1. + <_> + 6 12 2 6 3. + <_> + + <_> + 5 8 4 15 -1. + <_> + 6 8 2 15 2. + <_> + + <_> + 7 22 2 4 -1. + <_> + 7 22 1 4 2. + 1 + <_> + + <_> + 7 22 4 2 -1. + <_> + 7 22 4 1 2. + 1 + <_> + + <_> + 1 15 12 3 -1. + <_> + 1 15 6 3 2. + <_> + + <_> + 4 15 6 12 -1. + <_> + 4 15 3 6 2. + <_> + 7 21 3 6 2. + <_> + + <_> + 7 16 3 12 -1. + <_> + 8 16 1 12 3. + <_> + + <_> + 2 9 4 18 -1. + <_> + 2 9 2 9 2. + <_> + 4 18 2 9 2. + <_> + + <_> + 8 10 4 6 -1. + <_> + 8 10 2 6 2. + <_> + + <_> + 0 16 4 12 -1. + <_> + 0 16 2 6 2. + <_> + 2 22 2 6 2. + <_> + + <_> + 2 22 12 4 -1. + <_> + 6 22 4 4 3. + <_> + + <_> + 0 24 9 4 -1. + <_> + 3 24 3 4 3. + <_> + + <_> + 9 13 4 12 -1. + <_> + 9 17 4 4 3. + <_> + + <_> + 2 10 4 6 -1. + <_> + 4 10 2 6 2. + <_> + + <_> + 4 8 8 6 -1. + <_> + 4 10 8 2 3. + <_> + + <_> + 0 22 12 4 -1. + <_> + 4 22 4 4 3. + <_> + + <_> + 4 21 9 7 -1. + <_> + 7 21 3 7 3. + <_> + + <_> + 5 22 4 6 -1. + <_> + 7 22 2 6 2. + <_> + + <_> + 9 2 3 12 -1. + <_> + 10 2 1 12 3. + <_> + + <_> + 2 3 3 12 -1. + <_> + 3 3 1 12 3. + <_> + + <_> + 8 4 4 6 -1. + <_> + 8 4 2 6 2. + 1 + <_> + + <_> + 6 4 6 4 -1. + <_> + 6 4 6 2 2. + 1 + <_> + + <_> + 4 6 8 16 -1. + <_> + 8 6 4 8 2. + <_> + 4 14 4 8 2. + <_> + + <_> + 2 6 8 16 -1. + <_> + 2 6 4 8 2. + <_> + 6 14 4 8 2. + <_> + + <_> + 4 8 8 8 -1. + <_> + 6 8 4 8 2. + <_> + + <_> + 0 6 12 10 -1. + <_> + 4 6 4 10 3. + <_> + + <_> + 8 10 6 7 -1. + <_> + 10 12 2 7 3. + 1 + <_> + + <_> + 6 10 7 6 -1. + <_> + 4 12 7 2 3. + 1 + <_> + + <_> + 5 11 4 7 -1. + <_> + 5 11 2 7 2. + <_> + + <_> + 1 11 12 16 -1. + <_> + 1 11 6 8 2. + <_> + 7 19 6 8 2. + <_> + + <_> + 6 9 3 13 -1. + <_> + 7 9 1 13 3. + <_> + + <_> + 3 9 6 4 -1. + <_> + 3 11 6 2 2. + <_> + + <_> + 9 22 4 6 -1. + <_> + 9 22 2 6 2. + <_> + + <_> + 2 9 7 4 -1. + <_> + 2 11 7 2 2. + <_> + + <_> + 7 15 3 12 -1. + <_> + 8 15 1 12 3. + <_> + + <_> + 2 15 8 3 -1. + <_> + 6 15 4 3 2. + <_> + + <_> + 1 7 12 19 -1. + <_> + 4 7 6 19 2. + <_> + + <_> + 6 9 4 12 -1. + <_> + 8 9 2 6 2. + <_> + 6 15 2 6 2. + <_> + + <_> + 1 12 4 6 -1. + <_> + 1 15 4 3 2. + <_> + + <_> + 4 22 8 6 -1. + <_> + 8 22 4 3 2. + <_> + 4 25 4 3 2. + <_> + + <_> + 2 22 8 6 -1. + <_> + 2 22 4 3 2. + <_> + 6 25 4 3 2. + <_> + + <_> + 9 17 4 6 -1. + <_> + 9 17 2 6 2. + <_> + + <_> + 1 17 4 6 -1. + <_> + 3 17 2 6 2. + <_> + + <_> + 4 5 6 4 -1. + <_> + 4 7 6 2 2. + <_> + + <_> + 7 3 4 6 -1. + <_> + 7 3 2 6 2. + 1 + <_> + + <_> + 6 24 6 4 -1. + <_> + 6 24 3 4 2. + <_> + + <_> + 1 21 12 3 -1. + <_> + 5 21 4 3 3. + <_> + + <_> + 7 17 2 7 -1. + <_> + 7 17 1 7 2. + 1 + <_> + + <_> + 7 17 7 2 -1. + <_> + 7 17 7 1 2. + 1 + <_> + + <_> + 6 12 3 16 -1. + <_> + 6 20 3 8 2. + <_> + + <_> + 2 24 9 4 -1. + <_> + 5 24 3 4 3. + <_> + + <_> + 2 25 12 2 -1. + <_> + 2 25 6 2 2. + <_> + + <_> + 0 25 12 2 -1. + <_> + 6 25 6 2 2. + <_> + + <_> + 4 11 6 8 -1. + <_> + 4 15 6 4 2. + <_> + + <_> + 5 0 4 6 -1. + <_> + 7 0 2 6 2. + <_> + + <_> + 2 2 10 7 -1. + <_> + 2 2 5 7 2. + <_> + + <_> + 0 1 12 25 -1. + <_> + 3 1 6 25 2. + <_> + + <_> + 1 14 12 6 -1. + <_> + 4 14 6 6 2. + <_> + + <_> + 0 26 12 2 -1. + <_> + 6 26 6 2 2. + <_> + + <_> + 6 15 3 12 -1. + <_> + 7 15 1 12 3. + <_> + + <_> + 6 7 2 12 -1. + <_> + 7 7 1 12 2. + <_> + + <_> + 5 9 4 6 -1. + <_> + 5 9 2 6 2. + <_> + + <_> + 3 20 6 6 -1. + <_> + 6 20 3 6 2. + <_> + + <_> + 3 10 8 4 -1. + <_> + 3 10 4 4 2. + <_> + + <_> + 0 5 9 18 -1. + <_> + 3 11 3 6 9. + <_> + + <_> + 8 8 4 6 -1. + <_> + 8 8 2 6 2. + <_> + + <_> + 2 8 4 6 -1. + <_> + 4 8 2 6 2. + <_> + + <_> + 8 8 4 12 -1. + <_> + 10 8 2 6 2. + <_> + 8 14 2 6 2. + <_> + + <_> + 4 10 6 8 -1. + <_> + 4 10 3 4 2. + <_> + 7 14 3 4 2. + <_> + + <_> + 7 15 4 6 -1. + <_> + 7 15 4 3 2. + 1 + <_> + + <_> + 7 15 6 4 -1. + <_> + 7 15 3 4 2. + 1 + <_> + + <_> + 1 9 13 15 -1. + <_> + 1 14 13 5 3. + <_> + + <_> + 5 1 3 25 -1. + <_> + 6 1 1 25 3. + <_> + + <_> + 6 15 3 12 -1. + <_> + 7 15 1 12 3. + <_> + + <_> + 0 7 4 16 -1. + <_> + 0 7 2 8 2. + <_> + 2 15 2 8 2. + <_> + + <_> + 4 2 6 4 -1. + <_> + 4 4 6 2 2. + <_> + + <_> + 0 0 10 10 -1. + <_> + 0 5 10 5 2. + <_> + + <_> + 8 5 6 8 -1. + <_> + 11 5 3 4 2. + <_> + 8 9 3 4 2. + <_> + + <_> + 1 14 12 14 -1. + <_> + 1 14 6 7 2. + <_> + 7 21 6 7 2. + <_> + + <_> + 7 1 6 18 -1. + <_> + 9 7 2 6 9. + <_> + + <_> + 0 18 14 8 -1. + <_> + 0 18 7 4 2. + <_> + 7 22 7 4 2. + <_> + + <_> + 2 3 8 23 -1. + <_> + 6 3 4 23 2. + <_> + + <_> + 10 18 4 9 -1. + <_> + 10 18 2 9 2. + <_> + + <_> + 0 25 8 3 -1. + <_> + 4 25 4 3 2. + <_> + + <_> + 2 26 12 2 -1. + <_> + 2 26 6 2 2. + <_> + + <_> + 1 22 4 6 -1. + <_> + 3 22 2 6 2. + <_> + + <_> + 6 16 2 12 -1. + <_> + 6 16 1 12 2. + <_> + + <_> + 2 14 6 14 -1. + <_> + 2 14 3 7 2. + <_> + 5 21 3 7 2. + <_> + + <_> + 4 8 6 6 -1. + <_> + 6 8 2 6 3. + <_> + + <_> + 0 18 8 6 -1. + <_> + 0 18 4 3 2. + <_> + 4 21 4 3 2. + <_> + + <_> + 7 13 6 11 -1. + <_> + 9 13 2 11 3. + <_> + + <_> + 1 16 12 7 -1. + <_> + 4 16 6 7 2. + <_> + + <_> + 7 15 4 9 -1. + <_> + 7 15 2 9 2. + <_> + + <_> + 3 15 4 9 -1. + <_> + 5 15 2 9 2. + <_> + + <_> + 10 18 4 8 -1. + <_> + 10 18 2 8 2. + <_> + + <_> + 2 7 9 6 -1. + <_> + 2 9 9 2 3. + <_> + + <_> + 1 9 12 6 -1. + <_> + 1 12 12 3 2. + <_> + + <_> + 3 5 5 12 -1. + <_> + 3 11 5 6 2. + <_> + + <_> + 3 6 8 4 -1. + <_> + 3 8 8 2 2. + <_> + + <_> + 4 6 6 6 -1. + <_> + 4 8 6 2 3. + <_> + + <_> + 1 26 12 2 -1. + <_> + 1 26 6 2 2. + <_> + + <_> + 5 7 4 6 -1. + <_> + 7 7 2 6 2. + <_> + + <_> + 7 5 6 5 -1. + <_> + 7 5 3 5 2. + 1 + <_> + + <_> + 5 9 3 13 -1. + <_> + 6 9 1 13 3. + <_> + + <_> + 5 18 6 10 -1. + <_> + 8 18 3 5 2. + <_> + 5 23 3 5 2. + <_> + + <_> + 3 18 6 10 -1. + <_> + 3 18 3 5 2. + <_> + 6 23 3 5 2. + <_> + + <_> + 7 15 7 6 -1. + <_> + 7 15 7 3 2. + 1 + <_> + + <_> + 0 23 9 5 -1. + <_> + 3 23 3 5 3. + <_> + + <_> + 7 15 7 6 -1. + <_> + 7 15 7 3 2. + 1 + <_> + + <_> + 7 15 6 7 -1. + <_> + 7 15 3 7 2. + 1 + <_> + + <_> + 7 2 6 12 -1. + <_> + 10 2 3 6 2. + <_> + 7 8 3 6 2. + <_> + + <_> + 7 5 6 4 -1. + <_> + 7 5 6 2 2. + 1 + <_> + + <_> + 7 3 6 10 -1. + <_> + 10 3 3 5 2. + <_> + 7 8 3 5 2. + <_> + + <_> + 1 3 6 10 -1. + <_> + 1 3 3 5 2. + <_> + 4 8 3 5 2. + <_> + + <_> + 1 7 12 4 -1. + <_> + 1 7 6 4 2. + <_> + + <_> + 5 1 6 4 -1. + <_> + 5 1 6 2 2. + 1 + <_> + + <_> + 0 0 14 10 -1. + <_> + 0 5 14 5 2. + <_> + + <_> + 0 8 10 18 -1. + <_> + 0 8 5 9 2. + <_> + 5 17 5 9 2. + <_> + + <_> + 7 16 2 12 -1. + <_> + 7 16 1 12 2. + <_> + + <_> + 2 21 8 7 -1. + <_> + 4 21 4 7 2. + <_> + + <_> + 3 21 8 6 -1. + <_> + 5 21 4 6 2. + <_> + + <_> + 4 10 6 8 -1. + <_> + 6 10 2 8 3. + <_> + + <_> + 8 2 3 12 -1. + <_> + 9 2 1 12 3. + <_> + + <_> + 3 2 3 12 -1. + <_> + 4 2 1 12 3. + <_> + + <_> + 2 26 12 2 -1. + <_> + 2 26 6 2 2. + <_> + + <_> + 1 25 12 3 -1. + <_> + 7 25 6 3 2. + <_> + + <_> + 7 20 3 5 -1. + <_> + 8 21 1 5 3. + 1 + <_> + + <_> + 3 15 8 11 -1. + <_> + 5 15 4 11 2. + <_> + + <_> + 1 1 12 21 -1. + <_> + 5 8 4 7 9. + <_> + + <_> + 0 22 4 6 -1. + <_> + 2 22 2 6 2. + <_> + + <_> + 5 23 9 4 -1. + <_> + 8 23 3 4 3. + <_> + + <_> + 0 23 9 4 -1. + <_> + 3 23 3 4 3. + <_> + + <_> + 6 3 4 12 -1. + <_> + 8 3 2 6 2. + <_> + 6 9 2 6 2. + <_> + + <_> + 6 4 2 24 -1. + <_> + 6 4 1 12 2. + <_> + 7 16 1 12 2. + <_> + + <_> + 5 9 4 6 -1. + <_> + 5 9 2 6 2. + <_> + + <_> + 2 7 4 6 -1. + <_> + 4 7 2 6 2. + <_> + + <_> + 4 8 6 20 -1. + <_> + 4 18 6 10 2. + <_> + + <_> + 1 16 3 12 -1. + <_> + 2 16 1 12 3. + <_> + + <_> + 8 12 6 16 -1. + <_> + 8 16 6 8 2. + <_> + + <_> + 1 17 4 6 -1. + <_> + 3 17 2 6 2. + <_> + + <_> + 7 14 6 9 -1. + <_> + 9 14 2 9 3. + <_> + + <_> + 1 14 6 9 -1. + <_> + 3 14 2 9 3. + <_> + + <_> + 8 0 4 18 -1. + <_> + 10 0 2 9 2. + <_> + 8 9 2 9 2. + <_> + + <_> + 2 0 4 18 -1. + <_> + 2 0 2 9 2. + <_> + 4 9 2 9 2. + <_> + + <_> + 11 14 2 12 -1. + <_> + 11 14 1 12 2. + <_> + + <_> + 1 14 2 12 -1. + <_> + 2 14 1 12 2. + <_> + + <_> + 8 11 3 12 -1. + <_> + 9 11 1 12 3. + <_> + + <_> + 1 7 12 6 -1. + <_> + 4 7 6 6 2. + <_> + + <_> + 1 1 12 9 -1. + <_> + 4 1 6 9 2. + <_> + + <_> + 1 3 12 20 -1. + <_> + 1 3 6 10 2. + <_> + 7 13 6 10 2. + <_> + + <_> + 4 8 6 10 -1. + <_> + 7 8 3 5 2. + <_> + 4 13 3 5 2. + <_> + + <_> + 6 5 8 3 -1. + <_> + 6 5 4 3 2. + 1 + <_> + + <_> + 3 15 8 7 -1. + <_> + 5 15 4 7 2. + <_> + + <_> + 0 14 12 12 -1. + <_> + 4 18 4 4 9. + <_> + + <_> + 5 12 4 16 -1. + <_> + 5 16 4 8 2. + <_> + + <_> + 0 21 12 6 -1. + <_> + 4 21 4 6 3. + <_> + + <_> + 4 17 8 7 -1. + <_> + 4 17 4 7 2. + <_> + + <_> + 2 17 8 7 -1. + <_> + 6 17 4 7 2. + <_> + + <_> + 7 4 6 5 -1. + <_> + 7 4 3 5 2. + 1 + <_> + + <_> + 7 4 5 6 -1. + <_> + 7 4 5 3 2. + 1 + <_> + + <_> + 8 3 6 7 -1. + <_> + 8 3 3 7 2. + 1 + <_> + + <_> + 6 3 7 6 -1. + <_> + 6 3 7 3 2. + 1 + <_> + + <_> + 7 4 2 22 -1. + <_> + 7 4 1 22 2. + <_> + + <_> + 5 4 2 22 -1. + <_> + 6 4 1 22 2. + <_> + + <_> + 7 8 2 12 -1. + <_> + 7 8 1 12 2. + <_> + + <_> + 5 8 2 12 -1. + <_> + 6 8 1 12 2. + <_> + + <_> + 3 8 10 5 -1. + <_> + 3 8 5 5 2. + <_> + + <_> + 4 12 6 6 -1. + <_> + 6 12 2 6 3. + <_> + + <_> + 8 8 4 16 -1. + <_> + 10 8 2 8 2. + <_> + 8 16 2 8 2. + <_> + + <_> + 2 8 4 16 -1. + <_> + 2 8 2 8 2. + <_> + 4 16 2 8 2. + <_> + + <_> + 1 21 12 4 -1. + <_> + 7 21 6 2 2. + <_> + 1 23 6 2 2. + <_> + + <_> + 4 2 2 12 -1. + <_> + 4 8 2 6 2. + <_> + + <_> + 4 10 6 4 -1. + <_> + 4 12 6 2 2. + <_> + + <_> + 2 8 10 12 -1. + <_> + 2 12 10 4 3. + <_> + + <_> + 4 17 6 8 -1. + <_> + 7 17 3 4 2. + <_> + 4 21 3 4 2. + <_> + + <_> + 7 15 4 3 -1. + <_> + 6 16 4 1 3. + 1 + <_> + + <_> + 9 20 3 5 -1. + <_> + 10 21 1 5 3. + 1 + <_> + + <_> + 0 18 14 6 -1. + <_> + 7 18 7 6 2. + <_> + + <_> + 9 0 3 24 -1. + <_> + 9 6 3 12 2. + <_> + + <_> + 2 0 3 24 -1. + <_> + 2 6 3 12 2. + <_> + + <_> + 6 2 4 6 -1. + <_> + 6 2 2 6 2. + <_> + + <_> + 1 25 12 3 -1. + <_> + 5 25 4 3 3. + <_> + + <_> + 1 4 12 14 -1. + <_> + 4 4 6 14 2. + <_> + + <_> + 6 16 3 12 -1. + <_> + 7 16 1 12 3. + <_> + + <_> + 7 18 4 6 -1. + <_> + 7 18 2 6 2. + 1 + <_> + + <_> + 6 16 3 12 -1. + <_> + 7 16 1 12 3. + <_> + + <_> + 5 16 3 12 -1. + <_> + 6 16 1 12 3. + <_> + + <_> + 7 4 6 4 -1. + <_> + 7 4 3 4 2. + 1 + <_> + + <_> + 7 1 7 4 -1. + <_> + 7 1 7 2 2. + 1 + <_> + + <_> + 7 2 6 4 -1. + <_> + 7 2 3 4 2. + 1 + <_> + + <_> + 3 10 8 6 -1. + <_> + 5 10 4 6 2. + <_> + + <_> + 5 20 8 8 -1. + <_> + 7 20 4 8 2. + <_> + + <_> + 6 15 8 5 -1. + <_> + 6 15 4 5 2. + 1 + <_> + + <_> + 2 7 10 6 -1. + <_> + 7 7 5 3 2. + <_> + 2 10 5 3 2. + <_> + + <_> + 7 20 4 4 -1. + <_> + 6 21 4 2 2. + 1 + <_> + + <_> + 1 24 12 4 -1. + <_> + 4 24 6 4 2. + <_> + + <_> + 4 4 6 6 -1. + <_> + 6 4 2 6 3. + <_> + + <_> + 1 4 12 24 -1. + <_> + 7 4 6 12 2. + <_> + 1 16 6 12 2. + <_> + + <_> + 4 4 3 15 -1. + <_> + 4 9 3 5 3. + <_> + + <_> + 11 3 3 8 -1. + <_> + 11 3 3 4 2. + 1 + <_> + + <_> + 4 9 2 13 -1. + <_> + 5 9 1 13 2. + <_> + + <_> + 6 9 4 6 -1. + <_> + 6 9 2 6 2. + <_> + + <_> + 2 17 8 3 -1. + <_> + 6 17 4 3 2. + <_> + + <_> + 4 11 6 8 -1. + <_> + 7 11 3 4 2. + <_> + 4 15 3 4 2. + <_> + + <_> + 0 0 14 27 -1. + <_> + 0 9 14 9 3. + <_> + + <_> + 5 8 4 6 -1. + <_> + 5 11 4 3 2. + <_> + + <_> + 5 2 4 12 -1. + <_> + 5 5 4 6 2. + <_> + + <_> + 6 3 4 9 -1. + <_> + 6 6 4 3 3. + <_> + + <_> + 4 3 4 9 -1. + <_> + 4 6 4 3 3. + <_> + + <_> + 9 5 4 6 -1. + <_> + 9 5 4 3 2. + 1 + <_> + + <_> + 5 5 6 4 -1. + <_> + 5 5 3 4 2. + 1 + <_> + + <_> + 1 1 12 21 -1. + <_> + 4 1 6 21 2. + <_> + + <_> + 1 25 12 3 -1. + <_> + 5 25 4 3 3. + <_> + + <_> + 9 18 4 10 -1. + <_> + 9 18 2 10 2. + <_> + + <_> + 4 16 9 3 -1. + <_> + 3 17 9 1 3. + 1 + <_> + + <_> + 9 18 4 10 -1. + <_> + 9 18 2 10 2. + <_> + + <_> + 1 18 4 10 -1. + <_> + 3 18 2 10 2. + <_> + + <_> + 4 10 9 4 -1. + <_> + 4 12 9 2 2. + <_> + + <_> + 1 0 12 5 -1. + <_> + 5 0 4 5 3. + <_> + + <_> + 7 9 2 18 -1. + <_> + 7 15 2 6 3. + <_> + + <_> + 0 22 6 6 -1. + <_> + 2 22 2 6 3. + <_> + + <_> + 5 21 6 5 -1. + <_> + 5 21 3 5 2. + <_> + + <_> + 3 21 6 5 -1. + <_> + 6 21 3 5 2. + <_> + + <_> + 9 21 2 5 -1. + <_> + 9 21 1 5 2. + 1 + <_> + + <_> + 0 17 6 8 -1. + <_> + 0 17 3 4 2. + <_> + 3 21 3 4 2. + <_> + + <_> + 4 0 6 6 -1. + <_> + 6 0 2 6 3. + <_> + + <_> + 2 1 6 14 -1. + <_> + 2 1 3 7 2. + <_> + 5 8 3 7 2. + <_> + + <_> + 6 8 5 6 -1. + <_> + 6 11 5 3 2. + <_> + + <_> + 4 8 4 6 -1. + <_> + 6 8 2 6 2. + <_> + + <_> + 4 6 6 6 -1. + <_> + 4 8 6 2 3. + <_> + + <_> + 3 5 6 4 -1. + <_> + 3 7 6 2 2. + <_> + + <_> + 7 6 4 6 -1. + <_> + 7 6 2 6 2. + 1 + <_> + + <_> + 4 5 6 4 -1. + <_> + 4 7 6 2 2. + <_> + + <_> + 7 1 4 21 -1. + <_> + 8 1 2 21 2. + <_> + + <_> + 2 2 6 20 -1. + <_> + 4 2 2 20 3. + <_> + + <_> + 9 20 3 5 -1. + <_> + 10 21 1 5 3. + 1 + <_> + + <_> + 0 24 6 4 -1. + <_> + 3 24 3 4 2. + <_> + + <_> + 4 2 6 6 -1. + <_> + 6 2 2 6 3. + <_> + + <_> + 6 2 4 6 -1. + <_> + 6 2 4 3 2. + 1 + <_> + + <_> + 1 4 13 2 -1. + <_> + 1 5 13 1 2. + <_> + + <_> + 7 11 6 7 -1. + <_> + 7 11 3 7 2. + 1 + <_> + + <_> + 8 16 6 4 -1. + <_> + 8 16 6 2 2. + 1 + <_> + + <_> + 1 3 12 24 -1. + <_> + 5 11 4 8 9. + <_> + + <_> + 2 24 12 4 -1. + <_> + 8 24 6 2 2. + <_> + 2 26 6 2 2. + <_> + + <_> + 0 24 12 4 -1. + <_> + 0 24 6 2 2. + <_> + 6 26 6 2 2. + <_> + + <_> + 6 4 2 24 -1. + <_> + 7 4 1 12 2. + <_> + 6 16 1 12 2. + <_> + + <_> + 4 8 6 6 -1. + <_> + 6 8 2 6 3. + <_> + + <_> + 6 6 4 9 -1. + <_> + 6 6 2 9 2. + <_> + + <_> + 2 8 8 7 -1. + <_> + 6 8 4 7 2. + <_> + + <_> + 3 7 10 7 -1. + <_> + 3 7 5 7 2. + <_> + + <_> + 1 7 10 7 -1. + <_> + 6 7 5 7 2. + <_> + + <_> + 4 1 9 12 -1. + <_> + 7 5 3 4 9. + <_> + + <_> + 1 1 9 12 -1. + <_> + 4 5 3 4 9. + <_> + + <_> + 4 25 8 3 -1. + <_> + 4 25 4 3 2. + <_> + + <_> + 0 16 12 7 -1. + <_> + 3 16 6 7 2. + <_> + + <_> + 9 17 4 7 -1. + <_> + 9 17 2 7 2. + <_> + + <_> + 1 17 4 7 -1. + <_> + 3 17 2 7 2. + <_> + + <_> + 7 0 4 7 -1. + <_> + 7 0 2 7 2. + 1 + <_> + + <_> + 7 0 7 4 -1. + <_> + 7 0 7 2 2. + 1 + <_> + + <_> + 9 3 5 6 -1. + <_> + 9 3 5 3 2. + 1 + <_> + + <_> + 0 10 6 12 -1. + <_> + 0 10 3 6 2. + <_> + 3 16 3 6 2. + <_> + + <_> + 9 3 4 12 -1. + <_> + 10 3 2 12 2. + <_> + + <_> + 1 3 4 12 -1. + <_> + 2 3 2 12 2. + <_> + + <_> + 2 7 10 10 -1. + <_> + 7 7 5 5 2. + <_> + 2 12 5 5 2. + <_> + + <_> + 3 16 4 9 -1. + <_> + 5 16 2 9 2. + <_> + + <_> + 0 11 14 11 -1. + <_> + 0 11 7 11 2. + <_> + + <_> + 6 16 5 6 -1. + <_> + 4 18 5 2 3. + 1 + <_> + + <_> + 11 20 2 6 -1. + <_> + 11 20 1 6 2. + 1 + <_> + + <_> + 1 18 4 6 -1. + <_> + 3 18 2 6 2. + <_> + + <_> + 10 14 3 6 -1. + <_> + 11 15 1 6 3. + 1 + <_> + + <_> + 4 14 6 3 -1. + <_> + 3 15 6 1 3. + 1 + <_> + + <_> + 7 20 3 5 -1. + <_> + 8 21 1 5 3. + 1 + <_> + + <_> + 2 25 8 3 -1. + <_> + 6 25 4 3 2. + <_> + + <_> + 9 15 3 12 -1. + <_> + 10 15 1 12 3. + <_> + + <_> + 5 15 6 2 -1. + <_> + 5 15 6 1 2. + 1 + <_> + + <_> + 7 18 2 7 -1. + <_> + 7 18 1 7 2. + 1 + <_> + + <_> + 7 20 5 3 -1. + <_> + 6 21 5 1 3. + 1 + <_> + + <_> + 10 16 2 10 -1. + <_> + 10 16 1 10 2. + 1 + <_> + + <_> + 4 16 10 2 -1. + <_> + 4 16 10 1 2. + 1 + <_> + + <_> + 1 17 12 6 -1. + <_> + 4 17 6 6 2. + <_> + + <_> + 4 15 6 8 -1. + <_> + 4 15 3 4 2. + <_> + 7 19 3 4 2. + <_> + + <_> + 7 17 6 4 -1. + <_> + 9 19 2 4 3. + 1 + <_> + + <_> + 7 17 4 6 -1. + <_> + 5 19 4 2 3. + 1 + <_> + + <_> + 1 13 12 4 -1. + <_> + 1 13 6 4 2. + <_> + + <_> + 0 2 8 12 -1. + <_> + 0 2 4 6 2. + <_> + 4 8 4 6 2. + <_> + + <_> + 6 2 2 16 -1. + <_> + 6 10 2 8 2. + <_> + + <_> + 2 8 8 4 -1. + <_> + 2 10 8 2 2. + <_> + + <_> + 5 10 4 18 -1. + <_> + 5 19 4 9 2. + <_> + + <_> + 0 3 3 12 -1. + <_> + 0 7 3 4 3. + <_> + + <_> + 1 22 12 4 -1. + <_> + 7 22 6 2 2. + <_> + 1 24 6 2 2. + <_> + + <_> + 2 19 7 2 -1. + <_> + 2 19 7 1 2. + 1 + <_> + + <_> + 2 26 12 2 -1. + <_> + 2 26 6 2 2. + <_> + + <_> + 0 11 6 14 -1. + <_> + 0 11 3 7 2. + <_> + 3 18 3 7 2. + <_> + + <_> + 7 3 3 10 -1. + <_> + 7 8 3 5 2. + <_> + + <_> + 0 17 6 6 -1. + <_> + 2 17 2 6 3. + <_> + + <_> + 9 16 2 12 -1. + <_> + 9 16 1 12 2. + <_> + + <_> + 6 16 6 3 -1. + <_> + 5 17 6 1 3. + 1 + <_> + + <_> + 8 0 6 8 -1. + <_> + 10 2 2 8 3. + 1 + <_> + + <_> + 6 4 8 6 -1. + <_> + 8 6 4 6 2. + 1 + <_> + + <_> + 4 7 6 21 -1. + <_> + 4 14 6 7 3. + <_> + + <_> + 3 0 8 18 -1. + <_> + 3 0 4 9 2. + <_> + 7 9 4 9 2. + <_> + + <_> + 3 6 9 10 -1. + <_> + 6 6 3 10 3. + <_> + + <_> + 7 21 4 3 -1. + <_> + 6 22 4 1 3. + 1 + <_> + + <_> + 2 23 12 5 -1. + <_> + 6 23 4 5 3. + <_> + + <_> + 4 16 3 12 -1. + <_> + 5 16 1 12 3. + <_> + + <_> + 7 17 2 7 -1. + <_> + 7 17 1 7 2. + 1 + <_> + + <_> + 0 5 14 10 -1. + <_> + 0 5 7 5 2. + <_> + 7 10 7 5 2. + <_> + + <_> + 3 10 8 4 -1. + <_> + 3 10 4 4 2. + <_> + + <_> + 0 12 10 4 -1. + <_> + 5 12 5 4 2. + <_> + + <_> + 7 0 6 6 -1. + <_> + 7 0 3 6 2. + 1 + <_> + + <_> + 2 3 10 7 -1. + <_> + 7 3 5 7 2. + <_> + + <_> + 3 7 4 21 -1. + <_> + 5 7 2 21 2. + <_> + + <_> + 6 2 2 24 -1. + <_> + 7 2 1 12 2. + <_> + 6 14 1 12 2. + <_> + + <_> + 3 4 8 16 -1. + <_> + 3 8 8 8 2. + <_> + + <_> + 9 16 2 12 -1. + <_> + 9 16 1 12 2. + <_> + + <_> + 3 16 2 12 -1. + <_> + 4 16 1 12 2. + <_> + + <_> + 5 2 6 6 -1. + <_> + 5 4 6 2 3. + <_> + + <_> + 1 19 4 9 -1. + <_> + 3 19 2 9 2. + <_> + + <_> + 9 10 4 16 -1. + <_> + 10 10 2 16 2. + <_> + + <_> + 5 18 5 2 -1. + <_> + 5 18 5 1 2. + 1 + <_> + + <_> + 5 4 6 4 -1. + <_> + 5 4 3 4 2. + <_> + + <_> + 3 4 6 4 -1. + <_> + 6 4 3 4 2. + <_> + + <_> + 5 5 6 8 -1. + <_> + 8 5 3 4 2. + <_> + 5 9 3 4 2. + <_> + + <_> + 3 5 6 8 -1. + <_> + 3 5 3 4 2. + <_> + 6 9 3 4 2. + <_> + + <_> + 6 3 8 12 -1. + <_> + 10 3 4 6 2. + <_> + 6 9 4 6 2. + <_> + + <_> + 1 10 2 12 -1. + <_> + 2 10 1 12 2. + <_> + + <_> + 1 0 13 3 -1. + <_> + 1 1 13 1 3. + <_> + + <_> + 2 1 4 7 -1. + <_> + 4 1 2 7 2. + <_> + + <_> + 9 21 2 5 -1. + <_> + 9 21 1 5 2. + 1 + <_> + + <_> + 2 25 8 3 -1. + <_> + 6 25 4 3 2. + <_> + + <_> + 6 16 3 12 -1. + <_> + 7 16 1 12 3. + <_> + + <_> + 0 15 8 6 -1. + <_> + 0 15 4 3 2. + <_> + 4 18 4 3 2. + <_> + + <_> + 2 26 12 2 -1. + <_> + 2 26 6 2 2. + <_> + + <_> + 0 26 12 2 -1. + <_> + 6 26 6 2 2. + <_> + + <_> + 1 1 13 3 -1. + <_> + 1 2 13 1 3. + <_> + + <_> + 0 3 14 2 -1. + <_> + 7 3 7 2 2. + <_> + + <_> + 2 16 12 4 -1. + <_> + 8 16 6 2 2. + <_> + 2 18 6 2 2. + <_> + + <_> + 0 20 12 6 -1. + <_> + 3 20 6 6 2. + <_> + + <_> + 4 15 8 7 -1. + <_> + 6 15 4 7 2. + <_> + + <_> + 4 10 6 12 -1. + <_> + 4 10 3 6 2. + <_> + 7 16 3 6 2. + <_> + + <_> + 7 0 4 6 -1. + <_> + 7 0 2 6 2. + 1 + <_> + + <_> + 7 0 6 4 -1. + <_> + 7 0 6 2 2. + 1 + <_> + + <_> + 6 18 8 6 -1. + <_> + 10 18 4 3 2. + <_> + 6 21 4 3 2. + <_> + + <_> + 6 0 8 4 -1. + <_> + 6 0 8 2 2. + 1 + <_> + + <_> + 2 15 10 6 -1. + <_> + 7 15 5 3 2. + <_> + 2 18 5 3 2. + <_> + + <_> + 0 13 4 8 -1. + <_> + 0 17 4 4 2. + <_> + + <_> + 0 9 14 9 -1. + <_> + 0 12 14 3 3. + <_> + + <_> + 2 24 9 4 -1. + <_> + 5 24 3 4 3. + <_> + + <_> + 1 24 12 4 -1. + <_> + 4 24 6 4 2. + <_> + + <_> + 0 11 10 8 -1. + <_> + 0 11 5 4 2. + <_> + 5 15 5 4 2. + <_> + + <_> + 5 9 6 4 -1. + <_> + 5 11 6 2 2. + <_> + + <_> + 1 8 4 17 -1. + <_> + 2 8 2 17 2. + <_> + + <_> + 8 2 4 12 -1. + <_> + 10 2 2 6 2. + <_> + 8 8 2 6 2. + <_> + + <_> + 2 2 4 12 -1. + <_> + 2 2 2 6 2. + <_> + 4 8 2 6 2. + <_> + + <_> + 10 7 4 14 -1. + <_> + 12 7 2 7 2. + <_> + 10 14 2 7 2. + <_> + + <_> + 0 7 4 14 -1. + <_> + 0 7 2 7 2. + <_> + 2 14 2 7 2. + <_> + + <_> + 4 8 10 6 -1. + <_> + 4 8 5 6 2. + <_> + + <_> + 6 6 8 3 -1. + <_> + 6 6 4 3 2. + 1 + <_> + + <_> + 2 5 12 3 -1. + <_> + 2 6 12 1 3. + <_> + + <_> + 2 15 9 5 -1. + <_> + 5 15 3 5 3. + <_> + + <_> + 0 1 14 15 -1. + <_> + 0 6 14 5 3. + <_> + + <_> + 1 1 6 18 -1. + <_> + 3 7 2 6 9. + <_> + + <_> + 4 2 9 10 -1. + <_> + 4 7 9 5 2. + <_> + + <_> + 5 12 4 6 -1. + <_> + 7 12 2 6 2. + <_> + + <_> + 6 4 3 21 -1. + <_> + 7 4 1 21 3. + <_> + + <_> + 6 17 6 3 -1. + <_> + 5 18 6 1 3. + 1 + <_> + + <_> + 7 16 2 4 -1. + <_> + 7 16 1 4 2. + 1 + <_> + + <_> + 7 16 4 2 -1. + <_> + 7 16 4 1 2. + 1 + <_> + + <_> + 8 20 2 6 -1. + <_> + 8 20 1 6 2. + 1 + <_> + + <_> + 6 20 6 2 -1. + <_> + 6 20 6 1 2. + 1 + <_> + + <_> + 6 4 6 6 -1. + <_> + 8 4 2 6 3. + <_> + + <_> + 1 1 3 16 -1. + <_> + 2 1 1 16 3. + <_> + + <_> + 12 14 2 10 -1. + <_> + 12 14 1 10 2. + 1 + <_> + + <_> + 2 14 10 2 -1. + <_> + 2 14 10 1 2. + 1 + <_> + + <_> + 3 1 6 27 -1. + <_> + 5 10 2 9 9. + <_> + + <_> + 6 16 3 12 -1. + <_> + 7 16 1 12 3. + <_> + + <_> + 2 6 8 22 -1. + <_> + 4 6 4 22 2. + <_> + + <_> + 4 6 6 13 -1. + <_> + 6 6 2 13 3. + <_> + + <_> + 7 11 6 6 -1. + <_> + 5 13 6 2 3. + 1 + <_> + + <_> + 2 26 12 2 -1. + <_> + 2 26 6 2 2. + <_> + + <_> + 4 8 6 9 -1. + <_> + 6 8 2 9 3. + <_> + + <_> + 6 25 8 3 -1. + <_> + 6 25 4 3 2. + <_> + + <_> + 3 24 6 4 -1. + <_> + 6 24 3 4 2. + <_> + + <_> + 4 16 8 9 -1. + <_> + 4 16 4 9 2. + <_> + + <_> + 2 16 8 9 -1. + <_> + 6 16 4 9 2. + <_> + + <_> + 7 5 6 6 -1. + <_> + 7 5 3 6 2. + 1 + <_> + + <_> + 7 15 6 6 -1. + <_> + 7 15 3 6 2. + 1 + <_> + + <_> + 3 13 10 12 -1. + <_> + 3 19 10 6 2. + <_> + + <_> + 2 6 10 3 -1. + <_> + 7 6 5 3 2. + <_> + + <_> + 3 1 8 21 -1. + <_> + 3 8 8 7 3. + <_> + + <_> + 4 7 6 6 -1. + <_> + 4 9 6 2 3. + <_> + + <_> + 4 10 8 4 -1. + <_> + 4 12 8 2 2. + <_> + + <_> + 7 5 6 6 -1. + <_> + 7 5 6 3 2. + 1 + <_> + + <_> + 2 8 12 10 -1. + <_> + 2 8 6 10 2. + <_> + + <_> + 1 4 8 10 -1. + <_> + 5 4 4 10 2. + <_> + + <_> + 3 16 8 6 -1. + <_> + 7 16 4 3 2. + <_> + 3 19 4 3 2. + <_> + + <_> + 3 3 2 24 -1. + <_> + 3 3 1 12 2. + <_> + 4 15 1 12 2. + <_> + + <_> + 9 16 4 12 -1. + <_> + 10 16 2 12 2. + <_> + + <_> + 1 16 4 12 -1. + <_> + 2 16 2 12 2. + <_> + + <_> + 8 12 3 12 -1. + <_> + 9 12 1 12 3. + <_> + + <_> + 3 8 5 6 -1. + <_> + 3 11 5 3 2. + <_> + + <_> + 2 7 10 8 -1. + <_> + 2 11 10 4 2. + <_> + + <_> + 3 12 3 12 -1. + <_> + 4 12 1 12 3. + <_> + + <_> + 5 16 4 12 -1. + <_> + 5 16 2 12 2. + <_> + + <_> + 7 22 4 2 -1. + <_> + 7 22 4 1 2. + 1 + <_> + + <_> + 6 22 8 6 -1. + <_> + 10 22 4 3 2. + <_> + 6 25 4 3 2. + <_> + + <_> + 1 14 2 14 -1. + <_> + 2 14 1 14 2. + <_> + + <_> + 9 20 3 5 -1. + <_> + 10 21 1 5 3. + 1 + <_> + + <_> + 5 20 5 3 -1. + <_> + 4 21 5 1 3. + 1 + <_> + + <_> + 7 15 2 5 -1. + <_> + 7 15 1 5 2. + 1 + <_> + + <_> + 1 17 10 6 -1. + <_> + 1 17 5 3 2. + <_> + 6 20 5 3 2. + <_> + + <_> + 1 3 12 3 -1. + <_> + 5 3 4 3 3. + <_> + + <_> + 7 3 5 6 -1. + <_> + 7 3 5 3 2. + 1 + <_> + + <_> + 7 7 3 12 -1. + <_> + 8 7 1 12 3. + <_> + + <_> + 4 7 3 12 -1. + <_> + 5 7 1 12 3. + <_> + + <_> + 5 11 9 13 -1. + <_> + 8 11 3 13 3. + <_> + + <_> + 5 5 3 21 -1. + <_> + 6 5 1 21 3. + <_> + + <_> + 4 13 9 11 -1. + <_> + 7 13 3 11 3. + <_> + + <_> + 1 13 9 11 -1. + <_> + 4 13 3 11 3. + <_> + + <_> + 5 18 8 10 -1. + <_> + 9 18 4 5 2. + <_> + 5 23 4 5 2. + <_> + + <_> + 0 5 14 14 -1. + <_> + 0 5 7 7 2. + <_> + 7 12 7 7 2. + <_> + + <_> + 9 0 3 15 -1. + <_> + 10 0 1 15 3. + <_> + + <_> + 3 0 6 20 -1. + <_> + 5 0 2 20 3. + <_> + + <_> + 2 4 12 2 -1. + <_> + 2 5 12 1 2. + <_> + + <_> + 0 3 12 3 -1. + <_> + 0 4 12 1 3. + <_> + + <_> + 0 18 14 6 -1. + <_> + 7 18 7 3 2. + <_> + 0 21 7 3 2. + <_> + + <_> + 2 0 3 15 -1. + <_> + 3 0 1 15 3. + <_> + + <_> + 8 1 6 4 -1. + <_> + 8 1 3 4 2. + 1 + <_> + + <_> + 2 7 6 6 -1. + <_> + 2 9 6 2 3. + <_> + + <_> + 10 22 4 6 -1. + <_> + 10 22 2 6 2. + <_> + + <_> + 2 7 3 12 -1. + <_> + 3 7 1 12 3. + <_> + + <_> + 6 25 8 3 -1. + <_> + 6 25 4 3 2. + <_> + + <_> + 0 22 4 6 -1. + <_> + 2 22 2 6 2. + <_> + + <_> + 8 24 6 4 -1. + <_> + 8 24 3 4 2. + <_> + + <_> + 4 0 4 9 -1. + <_> + 4 3 4 3 3. + <_> + + <_> + 8 3 6 4 -1. + <_> + 8 3 6 2 2. + 1 + <_> + + <_> + 2 0 6 22 -1. + <_> + 2 0 3 11 2. + <_> + 5 11 3 11 2. + <_> + + <_> + 6 18 8 10 -1. + <_> + 10 18 4 5 2. + <_> + 6 23 4 5 2. + <_> + + <_> + 0 22 6 6 -1. + <_> + 2 22 2 6 3. + <_> + + <_> + 8 13 6 6 -1. + <_> + 8 15 6 2 3. + <_> + + <_> + 0 13 6 6 -1. + <_> + 0 15 6 2 3. + <_> + + <_> + 1 16 6 6 -1. + <_> + 3 16 2 6 3. + <_> + + <_> + 7 2 3 21 -1. + <_> + 7 9 3 7 3. + <_> + + <_> + 4 14 6 3 -1. + <_> + 3 15 6 1 3. + 1 + <_> + + <_> + 6 25 8 3 -1. + <_> + 6 25 4 3 2. + <_> + + <_> + 7 3 4 6 -1. + <_> + 7 3 4 3 2. + 1 + <_> + + <_> + 4 9 8 16 -1. + <_> + 4 9 4 16 2. + <_> + + <_> + 2 9 8 16 -1. + <_> + 6 9 4 16 2. + <_> + + <_> + 4 3 7 24 -1. + <_> + 4 9 7 12 2. + <_> + + <_> + 1 17 4 6 -1. + <_> + 3 17 2 6 2. + <_> + + <_> + 5 2 6 4 -1. + <_> + 5 4 6 2 2. + <_> + + <_> + 7 2 4 6 -1. + <_> + 7 2 2 6 2. + 1 + <_> + + <_> + 4 9 6 4 -1. + <_> + 4 9 3 4 2. + <_> + + <_> + 1 24 6 4 -1. + <_> + 4 24 3 4 2. + <_> + + <_> + 5 0 6 8 -1. + <_> + 8 0 3 4 2. + <_> + 5 4 3 4 2. + <_> + + <_> + 0 26 12 2 -1. + <_> + 6 26 6 2 2. + <_> + + <_> + 5 0 6 8 -1. + <_> + 8 0 3 4 2. + <_> + 5 4 3 4 2. + <_> + + <_> + 5 4 4 6 -1. + <_> + 7 4 2 6 2. + <_> + + <_> + 8 0 6 8 -1. + <_> + 6 2 6 4 2. + 1 + <_> + + <_> + 6 0 8 6 -1. + <_> + 8 2 4 6 2. + 1 + <_> + + <_> + 7 17 3 4 -1. + <_> + 8 18 1 4 3. + 1 + <_> + + <_> + 1 20 6 8 -1. + <_> + 1 20 3 4 2. + <_> + 4 24 3 4 2. + <_> + + <_> + 9 15 2 12 -1. + <_> + 9 15 1 12 2. + <_> + + <_> + 3 15 2 12 -1. + <_> + 4 15 1 12 2. + <_> + + <_> + 5 2 6 4 -1. + <_> + 5 2 3 4 2. + <_> + + <_> + 3 3 6 4 -1. + <_> + 6 3 3 4 2. + <_> + + <_> + 4 4 6 24 -1. + <_> + 7 4 3 12 2. + <_> + 4 16 3 12 2. + <_> + + <_> + 6 13 2 12 -1. + <_> + 7 13 1 12 2. + <_> + + <_> + 6 16 3 12 -1. + <_> + 7 16 1 12 3. + <_> + + <_> + 6 4 2 14 -1. + <_> + 7 4 1 14 2. + <_> + + <_> + 5 3 4 25 -1. + <_> + 6 3 2 25 2. + <_> + + <_> + 5 4 3 21 -1. + <_> + 6 4 1 21 3. + <_> + + <_> + 7 6 2 12 -1. + <_> + 7 6 1 12 2. + <_> + + <_> + 5 4 4 20 -1. + <_> + 5 4 2 10 2. + <_> + 7 14 2 10 2. + <_> + + <_> + 6 4 6 24 -1. + <_> + 8 12 2 8 9. + <_> + + <_> + 0 1 12 24 -1. + <_> + 6 1 6 24 2. + <_> + + <_> + 7 6 7 22 -1. + <_> + 7 17 7 11 2. + <_> + + <_> + 4 3 4 9 -1. + <_> + 4 6 4 3 3. + <_> + + <_> + 8 4 6 8 -1. + <_> + 6 6 6 4 2. + 1 + <_> + + <_> + 7 5 6 4 -1. + <_> + 7 5 6 2 2. + 1 + <_> + + <_> + 5 1 4 6 -1. + <_> + 5 4 4 3 2. + <_> + + <_> + 0 0 7 10 -1. + <_> + 0 5 7 5 2. + <_> + + <_> + 7 2 3 24 -1. + <_> + 7 8 3 12 2. + <_> + + <_> + 1 8 4 15 -1. + <_> + 2 8 2 15 2. + <_> + + <_> + 6 25 8 3 -1. + <_> + 6 25 4 3 2. + <_> + + <_> + 1 23 12 3 -1. + <_> + 5 23 4 3 3. + <_> + + <_> + 6 22 8 6 -1. + <_> + 10 22 4 3 2. + <_> + 6 25 4 3 2. + <_> + + <_> + 0 22 14 6 -1. + <_> + 0 22 7 3 2. + <_> + 7 25 7 3 2. + <_> + + <_> + 2 3 12 3 -1. + <_> + 2 4 12 1 3. + <_> + + <_> + 0 2 12 9 -1. + <_> + 4 5 4 3 9. + <_> + + <_> + 1 0 12 12 -1. + <_> + 5 4 4 4 9. + <_> + + <_> + 1 3 12 3 -1. + <_> + 1 4 12 1 3. + <_> + + <_> + 1 4 12 3 -1. + <_> + 5 4 4 3 3. + <_> + + <_> + 1 15 2 12 -1. + <_> + 2 15 1 12 2. + <_> + + <_> + 1 20 12 5 -1. + <_> + 5 20 4 5 3. + <_> + + <_> + 7 15 5 4 -1. + <_> + 6 16 5 2 2. + 1 + <_> + + <_> + 7 2 3 21 -1. + <_> + 7 9 3 7 3. + <_> + + <_> + 2 2 4 12 -1. + <_> + 2 2 2 6 2. + <_> + 4 8 2 6 2. + <_> + + <_> + 5 22 8 6 -1. + <_> + 7 22 4 6 2. + <_> + + <_> + 0 1 10 6 -1. + <_> + 0 1 5 3 2. + <_> + 5 4 5 3 2. + <_> + + <_> + 3 11 9 6 -1. + <_> + 3 13 9 2 3. + <_> + + <_> + 6 7 2 19 -1. + <_> + 7 7 1 19 2. + <_> + + <_> + 5 10 8 16 -1. + <_> + 7 10 4 16 2. + <_> + + <_> + 5 16 3 12 -1. + <_> + 6 16 1 12 3. + <_> + + <_> + 10 13 4 15 -1. + <_> + 10 18 4 5 3. + <_> + + <_> + 2 1 10 10 -1. + <_> + 2 1 5 5 2. + <_> + 7 6 5 5 2. + <_> + + <_> + 7 19 2 7 -1. + <_> + 7 19 1 7 2. + 1 + <_> + + <_> + 2 14 9 6 -1. + <_> + 5 14 3 6 3. + <_> + + <_> + 4 13 10 14 -1. + <_> + 9 13 5 7 2. + <_> + 4 20 5 7 2. + <_> + + <_> + 1 7 12 15 -1. + <_> + 5 12 4 5 9. + <_> + + <_> + 6 2 2 24 -1. + <_> + 7 2 1 12 2. + <_> + 6 14 1 12 2. + <_> + + <_> + 5 3 4 12 -1. + <_> + 5 9 4 6 2. + <_> + + <_> + 8 24 6 4 -1. + <_> + 8 24 3 4 2. + <_> + + <_> + 0 24 6 4 -1. + <_> + 3 24 3 4 2. + <_> + + <_> + 1 8 12 4 -1. + <_> + 4 8 6 4 2. + <_> + + <_> + 5 5 4 9 -1. + <_> + 5 8 4 3 3. + <_> + + <_> + 9 18 4 6 -1. + <_> + 9 18 2 6 2. + <_> + + <_> + 2 20 8 8 -1. + <_> + 2 20 4 4 2. + <_> + 6 24 4 4 2. + <_> + + <_> + 11 15 2 8 -1. + <_> + 11 15 1 8 2. + 1 + <_> + + <_> + 3 15 8 2 -1. + <_> + 3 15 8 1 2. + 1 + <_> + + <_> + 5 9 4 6 -1. + <_> + 5 9 2 6 2. + <_> + + <_> + 0 22 4 6 -1. + <_> + 2 22 2 6 2. + <_> + + <_> + 0 26 14 2 -1. + <_> + 0 26 7 2 2. + <_> + + <_> + 3 20 6 8 -1. + <_> + 3 20 3 4 2. + <_> + 6 24 3 4 2. + <_> + + <_> + 7 16 2 12 -1. + <_> + 7 16 1 12 2. + <_> + + <_> + 4 13 4 12 -1. + <_> + 5 13 2 12 2. + <_> + + <_> + 1 22 12 2 -1. + <_> + 1 22 6 2 2. + <_> + + <_> + 0 24 12 4 -1. + <_> + 0 24 6 2 2. + <_> + 6 26 6 2 2. + <_> + + <_> + 5 8 6 4 -1. + <_> + 5 10 6 2 2. + <_> + + <_> + 0 3 12 3 -1. + <_> + 0 4 12 1 3. + <_> + + <_> + 7 4 6 6 -1. + <_> + 7 4 3 6 2. + 1 + <_> + + <_> + 7 4 6 6 -1. + <_> + 7 4 6 3 2. + 1 + <_> + + <_> + 8 3 6 8 -1. + <_> + 8 3 3 8 2. + 1 + <_> + + <_> + 0 6 6 5 -1. + <_> + 3 6 3 5 2. + <_> + + <_> + 8 3 3 12 -1. + <_> + 9 3 1 12 3. + <_> + + <_> + 6 0 2 22 -1. + <_> + 7 0 1 22 2. + <_> + + <_> + 8 3 3 12 -1. + <_> + 9 3 1 12 3. + <_> + + <_> + 3 3 3 12 -1. + <_> + 4 3 1 12 3. + <_> + + <_> + 6 6 3 12 -1. + <_> + 7 6 1 12 3. + <_> + + <_> + 5 15 2 12 -1. + <_> + 6 15 1 12 2. + <_> + + <_> + 5 8 6 10 -1. + <_> + 8 8 3 5 2. + <_> + 5 13 3 5 2. + <_> + + <_> + 2 8 10 10 -1. + <_> + 2 8 5 5 2. + <_> + 7 13 5 5 2. + <_> + + <_> + 7 9 6 10 -1. + <_> + 10 9 3 5 2. + <_> + 7 14 3 5 2. + <_> + + <_> + 0 4 12 3 -1. + <_> + 0 5 12 1 3. + <_> + + <_> + 9 16 2 12 -1. + <_> + 9 16 1 12 2. + <_> + + <_> + 3 16 2 12 -1. + <_> + 4 16 1 12 2. + <_> + + <_> + 2 20 12 6 -1. + <_> + 6 20 4 6 3. + <_> + + <_> + 0 10 8 8 -1. + <_> + 2 10 4 8 2. + <_> + + <_> + 0 12 14 6 -1. + <_> + 0 15 14 3 2. + <_> + + <_> + 1 6 12 16 -1. + <_> + 1 14 12 8 2. + <_> + + <_> + 7 7 3 12 -1. + <_> + 8 7 1 12 3. + <_> + + <_> + 0 0 14 3 -1. + <_> + 0 1 14 1 3. + <_> + + <_> + 1 0 13 3 -1. + <_> + 1 1 13 1 3. + <_> + + <_> + 0 17 6 7 -1. + <_> + 2 17 2 7 3. + <_> + + <_> + 6 24 6 4 -1. + <_> + 6 24 3 4 2. + <_> + + <_> + 0 9 6 7 -1. + <_> + 3 9 3 7 2. + <_> + + <_> + 7 9 6 18 -1. + <_> + 10 9 3 9 2. + <_> + 7 18 3 9 2. + <_> + + <_> + 0 22 12 5 -1. + <_> + 4 22 4 5 3. + <_> + + <_> + 7 9 6 10 -1. + <_> + 10 9 3 5 2. + <_> + 7 14 3 5 2. + <_> + + <_> + 1 9 6 10 -1. + <_> + 1 9 3 5 2. + <_> + 4 14 3 5 2. + <_> + + <_> + 8 22 4 6 -1. + <_> + 8 22 2 6 2. + <_> + + <_> + 0 16 6 8 -1. + <_> + 0 16 3 4 2. + <_> + 3 20 3 4 2. + <_> + + <_> + 4 0 6 8 -1. + <_> + 4 2 6 4 2. + <_> + + <_> + 5 3 4 9 -1. + <_> + 5 6 4 3 3. + <_> + + <_> + 9 8 4 19 -1. + <_> + 10 8 2 19 2. + <_> + + <_> + 5 8 4 6 -1. + <_> + 5 11 4 3 2. + <_> + + <_> + 7 2 7 6 -1. + <_> + 7 4 7 2 3. + <_> + + <_> + 0 16 2 12 -1. + <_> + 1 16 1 12 2. + <_> + + <_> + 11 0 3 17 -1. + <_> + 12 0 1 17 3. + <_> + + <_> + 0 0 3 17 -1. + <_> + 1 0 1 17 3. + <_> + + <_> + 5 13 4 14 -1. + <_> + 5 20 4 7 2. + <_> + + <_> + 6 15 8 4 -1. + <_> + 6 15 4 4 2. + 1 + <_> + + <_> + 5 17 8 6 -1. + <_> + 7 17 4 6 2. + <_> + + <_> + 1 17 8 6 -1. + <_> + 3 17 4 6 2. + <_> + + <_> + 5 11 4 6 -1. + <_> + 5 11 2 6 2. + <_> + + <_> + 3 13 8 13 -1. + <_> + 5 13 4 13 2. + <_> + + <_> + 3 6 8 4 -1. + <_> + 3 8 8 2 2. + <_> + + <_> + 7 5 6 4 -1. + <_> + 7 5 6 2 2. + 1 + <_> + + <_> + 4 9 6 8 -1. + <_> + 7 9 3 4 2. + <_> + 4 13 3 4 2. + <_> + + <_> + 6 4 2 24 -1. + <_> + 6 4 1 12 2. + <_> + 7 16 1 12 2. + <_> + + <_> + 7 24 6 4 -1. + <_> + 7 24 3 4 2. + <_> + + <_> + 7 20 5 3 -1. + <_> + 6 21 5 1 3. + 1 + <_> + + <_> + 3 15 9 12 -1. + <_> + 6 19 3 4 9. + <_> + + <_> + 1 20 8 7 -1. + <_> + 3 20 4 7 2. + <_> + + <_> + 10 12 2 14 -1. + <_> + 10 12 1 14 2. + <_> + + <_> + 2 12 2 14 -1. + <_> + 3 12 1 14 2. + <_> + + <_> + 3 6 8 4 -1. + <_> + 3 8 8 2 2. + <_> + + <_> + 3 9 8 8 -1. + <_> + 3 9 4 4 2. + <_> + 7 13 4 4 2. + <_> + + <_> + 1 2 12 24 -1. + <_> + 5 10 4 8 9. + <_> + + <_> + 2 8 10 3 -1. + <_> + 7 8 5 3 2. + <_> + + <_> + 4 15 8 8 -1. + <_> + 6 15 4 8 2. + <_> + + <_> + 7 15 4 4 -1. + <_> + 6 16 4 2 2. + 1 + <_> + + <_> + 4 12 6 6 -1. + <_> + 6 12 2 6 3. + <_> + + <_> + 4 16 3 12 -1. + <_> + 5 16 1 12 3. + <_> + + <_> + 7 8 3 12 -1. + <_> + 8 8 1 12 3. + <_> + + <_> + 4 8 3 12 -1. + <_> + 5 8 1 12 3. + <_> + + <_> + 10 17 4 6 -1. + <_> + 10 17 2 6 2. + <_> + + <_> + 5 4 2 24 -1. + <_> + 5 4 1 12 2. + <_> + 6 16 1 12 2. + <_> + + <_> + 6 25 8 3 -1. + <_> + 6 25 4 3 2. + <_> + + <_> + 0 17 4 6 -1. + <_> + 2 17 2 6 2. + <_> + + <_> + 8 11 6 12 -1. + <_> + 11 11 3 6 2. + <_> + 8 17 3 6 2. + <_> + + <_> + 3 7 3 10 -1. + <_> + 3 12 3 5 2. + <_> + + <_> + 7 6 4 6 -1. + <_> + 7 6 4 3 2. + 1 + <_> + + <_> + 1 7 10 3 -1. + <_> + 6 7 5 3 2. + <_> + + <_> + 7 6 4 6 -1. + <_> + 7 6 4 3 2. + 1 + <_> + + <_> + 7 6 6 4 -1. + <_> + 7 6 3 4 2. + 1 + <_> + + <_> + 7 0 4 6 -1. + <_> + 7 3 4 3 2. + <_> + + <_> + 4 6 6 8 -1. + <_> + 4 6 3 4 2. + <_> + 7 10 3 4 2. + <_> + + <_> + 8 12 6 16 -1. + <_> + 8 20 6 8 2. + <_> + + <_> + 0 4 10 3 -1. + <_> + 5 4 5 3 2. + <_> + + <_> + 8 2 4 13 -1. + <_> + 8 2 2 13 2. + <_> + + <_> + 1 1 10 14 -1. + <_> + 1 1 5 7 2. + <_> + 6 8 5 7 2. + <_> + + <_> + 6 25 8 3 -1. + <_> + 6 25 4 3 2. + <_> + + <_> + 0 25 8 3 -1. + <_> + 4 25 4 3 2. + <_> + + <_> + 6 13 3 13 -1. + <_> + 7 13 1 13 3. + <_> + + <_> + 1 24 6 4 -1. + <_> + 4 24 3 4 2. + <_> + + <_> + 8 8 4 7 -1. + <_> + 8 8 2 7 2. + <_> + + <_> + 0 7 12 3 -1. + <_> + 0 8 12 1 3. + <_> + + <_> + 4 6 6 6 -1. + <_> + 4 8 6 2 3. + <_> + + <_> + 3 9 7 4 -1. + <_> + 3 11 7 2 2. + <_> + + <_> + 5 7 4 18 -1. + <_> + 5 16 4 9 2. + <_> + + <_> + 4 1 5 26 -1. + <_> + 4 14 5 13 2. + <_> + + <_> + 6 22 8 6 -1. + <_> + 10 22 4 3 2. + <_> + 6 25 4 3 2. + <_> + + <_> + 0 22 8 6 -1. + <_> + 0 22 4 3 2. + <_> + 4 25 4 3 2. + <_> + + <_> + 5 21 8 6 -1. + <_> + 9 21 4 3 2. + <_> + 5 24 4 3 2. + <_> + + <_> + 3 0 6 4 -1. + <_> + 6 0 3 4 2. + <_> + + <_> + 6 1 6 5 -1. + <_> + 6 1 3 5 2. + <_> + + <_> + 5 6 4 12 -1. + <_> + 6 6 2 12 2. + <_> + + <_> + 8 8 4 7 -1. + <_> + 8 8 2 7 2. + <_> + + <_> + 2 8 4 7 -1. + <_> + 4 8 2 7 2. + <_> + + <_> + 6 12 8 3 -1. + <_> + 6 12 4 3 2. + <_> + + <_> + 1 11 9 5 -1. + <_> + 4 11 3 5 3. + <_> + + <_> + 10 3 4 14 -1. + <_> + 12 3 2 7 2. + <_> + 10 10 2 7 2. + <_> + + <_> + 0 2 4 14 -1. + <_> + 0 2 2 7 2. + <_> + 2 9 2 7 2. + <_> + + <_> + 1 9 13 6 -1. + <_> + 1 11 13 2 3. + <_> + + <_> + 7 17 4 2 -1. + <_> + 7 17 4 1 2. + 1 + <_> + + <_> + 10 15 3 6 -1. + <_> + 11 16 1 6 3. + 1 + <_> + + <_> + 4 15 6 3 -1. + <_> + 3 16 6 1 3. + 1 + <_> + + <_> + 7 19 2 7 -1. + <_> + 7 19 1 7 2. + 1 + <_> + + <_> + 0 18 12 9 -1. + <_> + 3 18 6 9 2. + <_> + + <_> + 7 19 2 7 -1. + <_> + 7 19 1 7 2. + 1 + <_> + + <_> + 7 19 7 2 -1. + <_> + 7 19 7 1 2. + 1 + <_> + + <_> + 7 15 3 13 -1. + <_> + 8 15 1 13 3. + <_> + + <_> + 2 16 8 7 -1. + <_> + 4 16 4 7 2. + <_> + + <_> + 4 21 10 6 -1. + <_> + 9 21 5 3 2. + <_> + 4 24 5 3 2. + <_> + + <_> + 0 21 10 6 -1. + <_> + 0 21 5 3 2. + <_> + 5 24 5 3 2. + <_> + + <_> + 8 14 6 7 -1. + <_> + 10 16 2 7 3. + 1 + <_> + + <_> + 0 20 12 4 -1. + <_> + 0 20 6 2 2. + <_> + 6 22 6 2 2. + <_> + + <_> + 1 14 12 10 -1. + <_> + 4 14 6 10 2. + <_> + + <_> + 3 18 6 4 -1. + <_> + 6 18 3 4 2. + <_> + + <_> + 11 11 2 16 -1. + <_> + 11 19 2 8 2. + <_> + + <_> + 3 10 6 14 -1. + <_> + 3 10 3 7 2. + <_> + 6 17 3 7 2. + <_> + + <_> + 6 9 4 6 -1. + <_> + 6 9 2 6 2. + <_> + + <_> + 5 16 3 12 -1. + <_> + 6 16 1 12 3. + <_> + + <_> + 2 3 12 18 -1. + <_> + 6 9 4 6 9. + <_> + + <_> + 3 4 6 10 -1. + <_> + 3 4 3 5 2. + <_> + 6 9 3 5 2. + <_> + + <_> + 7 18 6 4 -1. + <_> + 7 18 6 2 2. + 1 + <_> + + <_> + 7 18 4 6 -1. + <_> + 7 18 2 6 2. + 1 + <_> + + <_> + 5 8 4 13 -1. + <_> + 6 8 2 13 2. + <_> + + <_> + 2 6 3 12 -1. + <_> + 3 6 1 12 3. + <_> + + <_> + 2 15 12 12 -1. + <_> + 5 15 6 12 2. + <_> + + <_> + 4 15 4 12 -1. + <_> + 5 15 2 12 2. + <_> + + <_> + 4 19 9 9 -1. + <_> + 7 19 3 9 3. + <_> + + <_> + 7 16 5 4 -1. + <_> + 6 17 5 2 2. + 1 + <_> + + <_> + 6 14 6 8 -1. + <_> + 9 14 3 4 2. + <_> + 6 18 3 4 2. + <_> + + <_> + 2 14 6 8 -1. + <_> + 2 14 3 4 2. + <_> + 5 18 3 4 2. + <_> + + <_> + 3 2 10 16 -1. + <_> + 8 2 5 8 2. + <_> + 3 10 5 8 2. + <_> + + <_> + 5 15 3 12 -1. + <_> + 6 15 1 12 3. + <_> + + <_> + 8 23 6 4 -1. + <_> + 8 23 3 4 2. + <_> + + <_> + 4 2 4 14 -1. + <_> + 4 2 2 7 2. + <_> + 6 9 2 7 2. + <_> + + <_> + 3 7 8 6 -1. + <_> + 7 7 4 3 2. + <_> + 3 10 4 3 2. + <_> + + <_> + 2 4 4 6 -1. + <_> + 2 7 4 3 2. + <_> + + <_> + 7 0 6 24 -1. + <_> + 7 6 6 12 2. + <_> + + <_> + 0 13 6 14 -1. + <_> + 0 13 3 7 2. + <_> + 3 20 3 7 2. + <_> + + <_> + 4 19 10 6 -1. + <_> + 9 19 5 3 2. + <_> + 4 22 5 3 2. + <_> + + <_> + 0 19 10 6 -1. + <_> + 0 19 5 3 2. + <_> + 5 22 5 3 2. + <_> + + <_> + 4 18 8 10 -1. + <_> + 8 18 4 5 2. + <_> + 4 23 4 5 2. + <_> + + <_> + 2 18 8 10 -1. + <_> + 2 18 4 5 2. + <_> + 6 23 4 5 2. + <_> + + <_> + 5 14 4 14 -1. + <_> + 5 14 2 14 2. + <_> + + <_> + 1 2 10 16 -1. + <_> + 1 2 5 8 2. + <_> + 6 10 5 8 2. + <_> + + <_> + 0 12 14 16 -1. + <_> + 0 20 14 8 2. + <_> + + <_> + 2 3 10 6 -1. + <_> + 2 3 5 3 2. + <_> + 7 6 5 3 2. + <_> + + <_> + 10 1 3 26 -1. + <_> + 10 14 3 13 2. + <_> + + <_> + 0 9 4 18 -1. + <_> + 0 18 4 9 2. + <_> + + <_> + 8 21 4 6 -1. + <_> + 8 21 2 6 2. + <_> + + <_> + 2 6 9 8 -1. + <_> + 5 6 3 8 3. + <_> + + <_> + 9 21 4 6 -1. + <_> + 9 21 2 6 2. + <_> + + <_> + 3 0 6 8 -1. + <_> + 3 0 3 4 2. + <_> + 6 4 3 4 2. + <_> + + <_> + 9 20 4 7 -1. + <_> + 9 20 2 7 2. + <_> + + <_> + 1 4 10 12 -1. + <_> + 6 4 5 12 2. + <_> + + <_> + 6 1 2 24 -1. + <_> + 6 9 2 8 3. + <_> + + <_> + 2 21 4 6 -1. + <_> + 4 21 2 6 2. + <_> + + <_> + 10 1 3 26 -1. + <_> + 10 14 3 13 2. + <_> + + <_> + 1 1 3 26 -1. + <_> + 1 14 3 13 2. + <_> + + <_> + 2 9 12 14 -1. + <_> + 8 9 6 7 2. + <_> + 2 16 6 7 2. + <_> + + <_> + 4 11 6 8 -1. + <_> + 4 15 6 4 2. + <_> + + <_> + 5 9 9 18 -1. + <_> + 5 15 9 6 3. + <_> + + <_> + 1 0 9 4 -1. + <_> + 4 0 3 4 3. + <_> + + <_> + 5 7 4 6 -1. + <_> + 5 10 4 3 2. + <_> + + <_> + 3 7 8 4 -1. + <_> + 3 9 8 2 2. + <_> + + <_> + 2 16 12 6 -1. + <_> + 8 16 6 3 2. + <_> + 2 19 6 3 2. + <_> + + <_> + 1 2 8 22 -1. + <_> + 1 2 4 11 2. + <_> + 5 13 4 11 2. + <_> + + <_> + 7 19 6 7 -1. + <_> + 9 19 2 7 3. + <_> + + <_> + 6 7 2 18 -1. + <_> + 6 13 2 6 3. + <_> + + <_> + 5 8 8 16 -1. + <_> + 5 12 8 8 2. + <_> + + <_> + 5 20 6 2 -1. + <_> + 5 20 6 1 2. + 1 + <_> + + <_> + 10 19 3 6 -1. + <_> + 11 20 1 6 3. + 1 + <_> + + <_> + 1 22 12 6 -1. + <_> + 4 22 6 6 2. + <_> + + <_> + 2 25 12 3 -1. + <_> + 2 25 6 3 2. + <_> + + <_> + 4 19 6 3 -1. + <_> + 3 20 6 1 3. + 1 + <_> + + <_> + 7 20 6 7 -1. + <_> + 9 20 2 7 3. + <_> + + <_> + 0 17 12 10 -1. + <_> + 4 17 4 10 3. + <_> + + <_> + 1 18 12 4 -1. + <_> + 4 18 6 4 2. + <_> + + <_> + 1 19 6 7 -1. + <_> + 3 19 2 7 3. + <_> + + <_> + 10 22 4 6 -1. + <_> + 10 22 2 6 2. + <_> + + <_> + 1 4 2 24 -1. + <_> + 1 4 1 12 2. + <_> + 2 16 1 12 2. + <_> + + <_> + 10 5 4 10 -1. + <_> + 10 5 2 10 2. + <_> + + <_> + 0 5 4 10 -1. + <_> + 2 5 2 10 2. + <_> + + <_> + 8 10 3 15 -1. + <_> + 9 10 1 15 3. + <_> + + <_> + 3 10 3 15 -1. + <_> + 4 10 1 15 3. + <_> + + <_> + 8 7 3 17 -1. + <_> + 9 7 1 17 3. + <_> + + <_> + 3 7 3 17 -1. + <_> + 4 7 1 17 3. + <_> + + <_> + 9 0 3 13 -1. + <_> + 10 0 1 13 3. + <_> + + <_> + 2 0 3 13 -1. + <_> + 3 0 1 13 3. + <_> + + <_> + 1 3 12 5 -1. + <_> + 4 3 6 5 2. + <_> + + <_> + 6 0 7 6 -1. + <_> + 4 2 7 2 3. + 1 + <_> + + <_> + 7 2 4 8 -1. + <_> + 7 2 2 8 2. + <_> + + <_> + 6 4 2 12 -1. + <_> + 7 4 1 12 2. + <_> + + <_> + 9 16 3 6 -1. + <_> + 10 17 1 6 3. + 1 + <_> + + <_> + 5 8 4 6 -1. + <_> + 7 8 2 6 2. + <_> + + <_> + 1 5 12 21 -1. + <_> + 4 5 6 21 2. + <_> + + <_> + 2 3 12 18 -1. + <_> + 2 9 12 6 3. + <_> + + <_> + 1 1 12 4 -1. + <_> + 4 1 6 4 2. + <_> + + <_> + 6 13 3 13 -1. + <_> + 7 13 1 13 3. + <_> + + <_> + 1 1 6 12 -1. + <_> + 1 1 3 6 2. + <_> + 4 7 3 6 2. + <_> + + <_> + 7 6 6 6 -1. + <_> + 9 6 2 6 3. + <_> + + <_> + 1 6 6 6 -1. + <_> + 3 6 2 6 3. + <_> + + <_> + 7 2 6 13 -1. + <_> + 9 2 2 13 3. + <_> + + <_> + 1 2 6 13 -1. + <_> + 3 2 2 13 3. + <_> + + <_> + 4 0 6 28 -1. + <_> + 6 0 2 28 3. + <_> + + <_> + 0 13 14 3 -1. + <_> + 0 14 14 1 3. + <_> + + <_> + 10 20 4 7 -1. + <_> + 10 20 2 7 2. + <_> + + <_> + 5 8 2 12 -1. + <_> + 6 8 1 12 2. + <_> + + <_> + 5 16 4 8 -1. + <_> + 5 16 2 8 2. + <_> + + <_> + 3 0 6 8 -1. + <_> + 3 0 3 4 2. + <_> + 6 4 3 4 2. + <_> + + <_> + 5 0 6 8 -1. + <_> + 8 0 3 4 2. + <_> + 5 4 3 4 2. + <_> + + <_> + 3 0 6 8 -1. + <_> + 3 0 3 4 2. + <_> + 6 4 3 4 2. + <_> + + <_> + 10 20 4 7 -1. + <_> + 10 20 2 7 2. + <_> + + <_> + 4 15 4 12 -1. + <_> + 5 15 2 12 2. + <_> + + <_> + 7 16 4 6 -1. + <_> + 7 16 2 6 2. + 1 + <_> + + <_> + 3 2 6 9 -1. + <_> + 6 2 3 9 2. + <_> + + <_> + 2 2 12 2 -1. + <_> + 2 2 6 2 2. + <_> + + <_> + 0 2 12 2 -1. + <_> + 6 2 6 2 2. + <_> + + <_> + 6 1 6 4 -1. + <_> + 6 1 3 4 2. + <_> + + <_> + 0 2 4 6 -1. + <_> + 0 5 4 3 2. + <_> + + <_> + 5 4 8 4 -1. + <_> + 5 6 8 2 2. + <_> + + <_> + 1 8 12 2 -1. + <_> + 1 9 12 1 2. + <_> + + <_> + 8 7 6 8 -1. + <_> + 8 9 6 4 2. + <_> + + <_> + 0 7 6 8 -1. + <_> + 0 9 6 4 2. + <_> + + <_> + 11 15 2 12 -1. + <_> + 11 15 1 12 2. + <_> + + <_> + 2 15 3 12 -1. + <_> + 3 15 1 12 3. + <_> + + <_> + 11 15 2 12 -1. + <_> + 11 15 1 12 2. + <_> + + <_> + 1 12 6 16 -1. + <_> + 1 12 3 8 2. + <_> + 4 20 3 8 2. + <_> + + <_> + 4 10 10 5 -1. + <_> + 4 10 5 5 2. + <_> + + <_> + 4 16 8 3 -1. + <_> + 3 17 8 1 3. + 1 + <_> + + <_> + 2 25 12 3 -1. + <_> + 6 25 4 3 3. + <_> + + <_> + 1 10 10 8 -1. + <_> + 1 10 5 4 2. + <_> + 6 14 5 4 2. + <_> + + <_> + 0 12 14 6 -1. + <_> + 7 12 7 3 2. + <_> + 0 15 7 3 2. + <_> + + <_> + 2 20 8 8 -1. + <_> + 2 20 4 4 2. + <_> + 6 24 4 4 2. + <_> + + <_> + 12 16 2 7 -1. + <_> + 12 16 1 7 2. + 1 + <_> + + <_> + 1 17 12 4 -1. + <_> + 4 17 6 4 2. + <_> + + <_> + 5 9 6 14 -1. + <_> + 7 9 2 14 3. + <_> + + <_> + 3 9 6 14 -1. + <_> + 5 9 2 14 3. + <_> + + <_> + 3 8 9 12 -1. + <_> + 6 12 3 4 9. + <_> + + <_> + 5 4 4 19 -1. + <_> + 7 4 2 19 2. + <_> + + <_> + 5 5 4 19 -1. + <_> + 5 5 2 19 2. + <_> + + <_> + 2 10 10 18 -1. + <_> + 2 10 5 9 2. + <_> + 7 19 5 9 2. + <_> + + <_> + 3 3 9 15 -1. + <_> + 3 8 9 5 3. + <_> + + <_> + 3 7 8 12 -1. + <_> + 3 11 8 4 3. + <_> + + <_> + 6 9 6 8 -1. + <_> + 6 11 6 4 2. + <_> + + <_> + 1 16 2 12 -1. + <_> + 2 16 1 12 2. + <_> + + <_> + 11 3 3 18 -1. + <_> + 11 12 3 9 2. + <_> + + <_> + 0 3 3 18 -1. + <_> + 0 12 3 9 2. + <_> + + <_> + 2 8 10 6 -1. + <_> + 7 8 5 3 2. + <_> + 2 11 5 3 2. + <_> + + <_> + 0 3 3 23 -1. + <_> + 1 3 1 23 3. + <_> + + <_> + 7 3 6 5 -1. + <_> + 7 3 3 5 2. + <_> + + <_> + 2 0 10 28 -1. + <_> + 2 14 10 14 2. + <_> + + <_> + 6 17 8 6 -1. + <_> + 10 17 4 3 2. + <_> + 6 20 4 3 2. + <_> + + <_> + 4 13 4 14 -1. + <_> + 4 13 2 7 2. + <_> + 6 20 2 7 2. + <_> + + <_> + 12 7 2 12 -1. + <_> + 12 7 1 12 2. + <_> + + <_> + 1 3 6 5 -1. + <_> + 4 3 3 5 2. + <_> + + <_> + 12 7 2 12 -1. + <_> + 12 7 1 12 2. + <_> + + <_> + 0 7 2 12 -1. + <_> + 1 7 1 12 2. + <_> + + <_> + 4 12 6 6 -1. + <_> + 6 12 2 6 3. + <_> + + <_> + 0 10 10 5 -1. + <_> + 5 10 5 5 2. + <_> + + <_> + 2 9 12 8 -1. + <_> + 5 9 6 8 2. + <_> + + <_> + 0 7 4 12 -1. + <_> + 2 7 2 12 2. + <_> + + <_> + 11 16 3 6 -1. + <_> + 12 17 1 6 3. + 1 + <_> + + <_> + 5 16 2 12 -1. + <_> + 6 16 1 12 2. + <_> + + <_> + 11 16 3 6 -1. + <_> + 12 17 1 6 3. + 1 + <_> + + <_> + 6 6 2 14 -1. + <_> + 7 6 1 14 2. + <_> + + <_> + 3 2 8 11 -1. + <_> + 5 2 4 11 2. + <_> + + <_> + 5 3 3 22 -1. + <_> + 6 3 1 22 3. + <_> + + <_> + 5 7 4 6 -1. + <_> + 5 10 4 3 2. + <_> + + <_> + 4 9 6 4 -1. + <_> + 4 11 6 2 2. + <_> + + <_> + 5 25 8 3 -1. + <_> + 5 25 4 3 2. + <_> + + <_> + 4 6 6 4 -1. + <_> + 4 8 6 2 2. + <_> + + <_> + 4 5 10 8 -1. + <_> + 4 9 10 4 2. + <_> + + <_> + 0 12 6 6 -1. + <_> + 0 15 6 3 2. + <_> + + <_> + 5 25 8 3 -1. + <_> + 5 25 4 3 2. + <_> + + <_> + 0 13 10 6 -1. + <_> + 0 13 5 3 2. + <_> + 5 16 5 3 2. + <_> + + <_> + 6 7 3 15 -1. + <_> + 7 7 1 15 3. + <_> + + <_> + 0 1 14 15 -1. + <_> + 0 6 14 5 3. + <_> + + <_> + 6 4 8 8 -1. + <_> + 6 6 8 4 2. + <_> + + <_> + 0 10 12 8 -1. + <_> + 0 12 12 4 2. + <_> + + <_> + 8 1 6 6 -1. + <_> + 8 3 6 2 3. + <_> + + <_> + 0 1 6 6 -1. + <_> + 0 3 6 2 3. + <_> + + <_> + 5 25 8 3 -1. + <_> + 5 25 4 3 2. + <_> + + <_> + 4 0 6 6 -1. + <_> + 6 0 2 6 3. + <_> + + <_> + 1 16 12 4 -1. + <_> + 4 16 6 4 2. + <_> + + <_> + 8 4 6 4 -1. + <_> + 8 4 6 2 2. + 1 + <_> + + <_> + 6 4 4 6 -1. + <_> + 6 4 2 6 2. + 1 + <_> + + <_> + 4 4 6 4 -1. + <_> + 4 6 6 2 2. + <_> + + <_> + 6 15 7 4 -1. + <_> + 6 15 7 2 2. + 1 + <_> + + <_> + 4 4 6 4 -1. + <_> + 4 6 6 2 2. + <_> + + <_> + 4 4 6 4 -1. + <_> + 4 6 6 2 2. + <_> + + <_> + 8 2 3 12 -1. + <_> + 9 2 1 12 3. + <_> + + <_> + 3 2 3 12 -1. + <_> + 4 2 1 12 3. + <_> + + <_> + 4 0 8 28 -1. + <_> + 6 0 4 28 2. + <_> + + <_> + 2 0 8 28 -1. + <_> + 4 0 4 28 2. + <_> + + <_> + 8 15 4 8 -1. + <_> + 8 15 2 8 2. + <_> + + <_> + 0 22 8 6 -1. + <_> + 0 22 4 3 2. + <_> + 4 25 4 3 2. + <_> + + <_> + 7 20 4 4 -1. + <_> + 8 21 2 4 2. + 1 + <_> + + <_> + 4 15 6 6 -1. + <_> + 6 15 2 6 3. + <_> + + <_> + 4 10 6 9 -1. + <_> + 6 10 2 9 3. + <_> + + <_> + 5 8 4 17 -1. + <_> + 6 8 2 17 2. + <_> + + <_> + 7 16 2 12 -1. + <_> + 7 16 1 12 2. + <_> + + <_> + 6 11 2 12 -1. + <_> + 7 11 1 12 2. + <_> + + <_> + 0 12 14 12 -1. + <_> + 0 12 7 12 2. + <_> + + <_> + 0 4 4 24 -1. + <_> + 0 10 4 12 2. + <_> + + <_> + 8 0 4 8 -1. + <_> + 8 4 4 4 2. + <_> + + <_> + 1 24 12 4 -1. + <_> + 4 24 6 4 2. + <_> + + <_> + 5 9 8 18 -1. + <_> + 5 18 8 9 2. + <_> + + <_> + 1 4 3 22 -1. + <_> + 2 4 1 22 3. + <_> + + <_> + 11 16 2 12 -1. + <_> + 11 16 1 12 2. + <_> + + <_> + 1 16 2 12 -1. + <_> + 2 16 1 12 2. + <_> + + <_> + 4 1 8 6 -1. + <_> + 8 1 4 3 2. + <_> + 4 4 4 3 2. + <_> + + <_> + 2 1 8 6 -1. + <_> + 2 1 4 3 2. + <_> + 6 4 4 3 2. + <_> + + <_> + 4 0 8 20 -1. + <_> + 4 10 8 10 2. + <_> + + <_> + 0 5 9 6 -1. + <_> + 0 8 9 3 2. + <_> + + <_> + 3 4 8 16 -1. + <_> + 3 8 8 8 2. + <_> + + <_> + 3 11 6 16 -1. + <_> + 3 19 6 8 2. + <_> + + <_> + 4 9 6 12 -1. + <_> + 7 9 3 6 2. + <_> + 4 15 3 6 2. + <_> + + <_> + 7 20 4 3 -1. + <_> + 6 21 4 1 3. + 1 + <_> + + <_> + 2 6 12 2 -1. + <_> + 2 7 12 1 2. + <_> + + <_> + 4 2 6 4 -1. + <_> + 4 2 6 2 2. + 1 + <_> + + <_> + 8 1 6 5 -1. + <_> + 8 1 3 5 2. + 1 + <_> + + <_> + 7 4 4 6 -1. + <_> + 7 4 4 3 2. + 1 + <_> + + <_> + 4 5 6 20 -1. + <_> + 4 10 6 10 2. + <_> + + <_> + 2 8 4 13 -1. + <_> + 4 8 2 13 2. + <_> + + <_> + 0 0 14 8 -1. + <_> + 7 0 7 4 2. + <_> + 0 4 7 4 2. + <_> + + <_> + 5 0 4 6 -1. + <_> + 7 0 2 6 2. + <_> + + <_> + 6 2 4 12 -1. + <_> + 6 6 4 4 3. + <_> + + <_> + 2 14 4 7 -1. + <_> + 4 14 2 7 2. + <_> + + <_> + 5 4 6 4 -1. + <_> + 5 4 3 4 2. + <_> + + <_> + 3 0 8 19 -1. + <_> + 7 0 4 19 2. + <_> + + <_> + 5 5 4 15 -1. + <_> + 5 5 2 15 2. + <_> + + <_> + 1 11 12 3 -1. + <_> + 1 12 12 1 3. + <_> + + <_> + 5 4 6 4 -1. + <_> + 5 4 3 4 2. + <_> + + <_> + 1 10 5 6 -1. + <_> + 1 13 5 3 2. + <_> + + <_> + 5 4 6 4 -1. + <_> + 5 4 3 4 2. + <_> + + <_> + 0 13 13 3 -1. + <_> + 0 14 13 1 3. + <_> + + <_> + 5 4 6 4 -1. + <_> + 5 4 3 4 2. + <_> + + <_> + 3 4 6 4 -1. + <_> + 6 4 3 4 2. + <_> + + <_> + 8 22 4 6 -1. + <_> + 8 22 2 6 2. + <_> + + <_> + 2 22 4 6 -1. + <_> + 4 22 2 6 2. + <_> + + <_> + 8 22 4 6 -1. + <_> + 8 22 2 6 2. + <_> + + <_> + 2 22 4 6 -1. + <_> + 4 22 2 6 2. + <_> + + <_> + 0 13 14 3 -1. + <_> + 0 14 14 1 3. + <_> + + <_> + 7 19 7 2 -1. + <_> + 7 19 7 1 2. + 1 + <_> + + <_> + 6 9 6 12 -1. + <_> + 6 13 6 4 3. + <_> + + <_> + 0 26 12 2 -1. + <_> + 6 26 6 2 2. + <_> + + <_> + 2 25 12 3 -1. + <_> + 2 25 6 3 2. + <_> + + <_> + 0 24 14 4 -1. + <_> + 0 24 7 2 2. + <_> + 7 26 7 2 2. + <_> + + <_> + 12 3 2 12 -1. + <_> + 12 3 1 12 2. + 1 + <_> + + <_> + 3 2 4 12 -1. + <_> + 3 2 2 6 2. + <_> + 5 8 2 6 2. + <_> + + <_> + 6 1 3 17 -1. + <_> + 7 1 1 17 3. + <_> + + <_> + 3 6 8 7 -1. + <_> + 5 6 4 7 2. + <_> + + <_> + 6 0 3 12 -1. + <_> + 7 0 1 12 3. + <_> + + <_> + 5 0 3 12 -1. + <_> + 6 0 1 12 3. + <_> + + <_> + 6 1 3 17 -1. + <_> + 7 1 1 17 3. + <_> + + <_> + 3 8 8 8 -1. + <_> + 3 8 4 4 2. + <_> + 7 12 4 4 2. + <_> + + <_> + 8 15 3 12 -1. + <_> + 9 15 1 12 3. + <_> + + <_> + 0 16 10 12 -1. + <_> + 0 16 5 6 2. + <_> + 5 22 5 6 2. + <_> + + <_> + 6 2 8 22 -1. + <_> + 10 2 4 11 2. + <_> + 6 13 4 11 2. + <_> + + <_> + 0 25 12 3 -1. + <_> + 6 25 6 3 2. + <_> + + <_> + 2 14 12 14 -1. + <_> + 2 14 6 14 2. + <_> + + <_> + 2 14 8 10 -1. + <_> + 4 14 4 10 2. + <_> + + <_> + 5 13 6 14 -1. + <_> + 7 13 2 14 3. + <_> + + <_> + 3 13 6 14 -1. + <_> + 5 13 2 14 3. + <_> + + <_> + 4 12 8 13 -1. + <_> + 6 12 4 13 2. + <_> + + <_> + 2 12 8 13 -1. + <_> + 4 12 4 13 2. + <_> + + <_> + 3 22 10 6 -1. + <_> + 8 22 5 3 2. + <_> + 3 25 5 3 2. + <_> + + <_> + 1 22 10 6 -1. + <_> + 1 22 5 3 2. + <_> + 6 25 5 3 2. + <_> + + <_> + 8 5 6 9 -1. + <_> + 8 8 6 3 3. + <_> + + <_> + 0 8 12 6 -1. + <_> + 0 8 6 3 2. + <_> + 6 11 6 3 2. + <_> + + <_> + 9 6 3 13 -1. + <_> + 10 6 1 13 3. + <_> + + <_> + 0 2 5 24 -1. + <_> + 0 14 5 12 2. + <_> + + <_> + 11 11 3 8 -1. + <_> + 11 15 3 4 2. + <_> + + <_> + 5 1 3 17 -1. + <_> + 6 1 1 17 3. + <_> + + <_> + 5 5 8 8 -1. + <_> + 7 5 4 8 2. + <_> + + <_> + 3 16 2 12 -1. + <_> + 4 16 1 12 2. + <_> + + <_> + 6 3 6 18 -1. + <_> + 8 9 2 6 9. + <_> + + <_> + 4 2 4 12 -1. + <_> + 4 6 4 4 3. + <_> + + <_> + 5 1 4 12 -1. + <_> + 5 4 4 6 2. + <_> + + <_> + 1 0 12 12 -1. + <_> + 5 4 4 4 9. + <_> + + <_> + 6 0 6 5 -1. + <_> + 6 0 3 5 2. + <_> + + <_> + 2 0 6 5 -1. + <_> + 5 0 3 5 2. + <_> + + <_> + 6 5 3 21 -1. + <_> + 7 5 1 21 3. + <_> + + <_> + 1 0 6 24 -1. + <_> + 1 0 3 12 2. + <_> + 4 12 3 12 2. + <_> + + <_> + 8 18 4 6 -1. + <_> + 9 19 2 6 2. + 1 + <_> + + <_> + 3 0 6 8 -1. + <_> + 3 0 3 4 2. + <_> + 6 4 3 4 2. + <_> + + <_> + 5 24 9 4 -1. + <_> + 8 24 3 4 3. + <_> + + <_> + 0 20 8 6 -1. + <_> + 2 20 4 6 2. + <_> + + <_> + 7 22 6 6 -1. + <_> + 9 22 2 6 3. + <_> + + <_> + 1 22 6 6 -1. + <_> + 3 22 2 6 3. + <_> + + <_> + 1 15 6 11 -1. + <_> + 3 15 2 11 3. + <_> + + <_> + 4 6 6 4 -1. + <_> + 4 8 6 2 2. + <_> + + <_> + 0 16 4 11 -1. + <_> + 2 16 2 11 2. + <_> + + <_> + 8 16 6 6 -1. + <_> + 10 16 2 6 3. + <_> + + <_> + 0 16 12 12 -1. + <_> + 4 20 4 4 9. + <_> + + <_> + 8 10 6 18 -1. + <_> + 8 16 6 6 3. + <_> + + <_> + 0 12 5 16 -1. + <_> + 0 20 5 8 2. + <_> + + <_> + 11 12 3 16 -1. + <_> + 11 16 3 8 2. + <_> + + <_> + 0 13 14 12 -1. + <_> + 0 13 7 6 2. + <_> + 7 19 7 6 2. + <_> + + <_> + 3 12 10 16 -1. + <_> + 8 12 5 8 2. + <_> + 3 20 5 8 2. + <_> + + <_> + 3 11 5 12 -1. + <_> + 3 17 5 6 2. + <_> + + <_> + 6 0 6 18 -1. + <_> + 8 6 2 6 9. + <_> + + <_> + 6 4 2 14 -1. + <_> + 6 11 2 7 2. + <_> + + <_> + 3 15 8 11 -1. + <_> + 5 15 4 11 2. + <_> + + <_> + 3 2 8 11 -1. + <_> + 5 2 4 11 2. + <_> + + <_> + 1 4 12 5 -1. + <_> + 5 4 4 5 3. + <_> + + <_> + 1 3 8 25 -1. + <_> + 5 3 4 25 2. + <_> + + <_> + 8 16 6 6 -1. + <_> + 10 16 2 6 3. + <_> + + <_> + 0 16 6 6 -1. + <_> + 2 16 2 6 3. + <_> + + <_> + 7 13 3 14 -1. + <_> + 8 13 1 14 3. + <_> + + <_> + 2 8 4 12 -1. + <_> + 2 8 2 6 2. + <_> + 4 14 2 6 2. + <_> + + <_> + 7 13 3 14 -1. + <_> + 8 13 1 14 3. + <_> + + <_> + 4 13 3 14 -1. + <_> + 5 13 1 14 3. + <_> + + <_> + 5 3 9 6 -1. + <_> + 5 5 9 2 3. + <_> + + <_> + 3 8 6 4 -1. + <_> + 3 10 6 2 2. + <_> + + <_> + 11 3 3 12 -1. + <_> + 11 7 3 4 3. + <_> + + <_> + 0 8 8 3 -1. + <_> + 4 8 4 3 2. + <_> + + <_> + 1 13 12 8 -1. + <_> + 7 13 6 4 2. + <_> + 1 17 6 4 2. + <_> + + <_> + 2 18 10 10 -1. + <_> + 7 18 5 10 2. + <_> + + <_> + 5 8 4 6 -1. + <_> + 5 8 2 6 2. + <_> + + <_> + 0 0 13 3 -1. + <_> + 0 1 13 1 3. + <_> + + <_> + 8 1 6 8 -1. + <_> + 11 1 3 4 2. + <_> + 8 5 3 4 2. + <_> + + <_> + 0 1 6 8 -1. + <_> + 0 1 3 4 2. + <_> + 3 5 3 4 2. + <_> + + <_> + 7 18 2 7 -1. + <_> + 7 18 1 7 2. + 1 + <_> + + <_> + 7 18 7 2 -1. + <_> + 7 18 7 1 2. + 1 + <_> + + <_> + 4 22 9 4 -1. + <_> + 7 22 3 4 3. + <_> + + <_> + 0 4 5 6 -1. + <_> + 0 7 5 3 2. + <_> + + <_> + 11 3 3 12 -1. + <_> + 11 7 3 4 3. + <_> + + <_> + 0 3 3 12 -1. + <_> + 0 7 3 4 3. + <_> + + <_> + 5 0 6 8 -1. + <_> + 8 0 3 4 2. + <_> + 5 4 3 4 2. + <_> + + <_> + 3 0 6 8 -1. + <_> + 3 0 3 4 2. + <_> + 6 4 3 4 2. + <_> + + <_> + 8 3 2 12 -1. + <_> + 8 3 1 12 2. + <_> + + <_> + 0 6 9 8 -1. + <_> + 0 8 9 4 2. + <_> + + <_> + 4 2 6 4 -1. + <_> + 4 4 6 2 2. + <_> + + <_> + 1 18 4 10 -1. + <_> + 3 18 2 10 2. + <_> + + <_> + 9 18 4 6 -1. + <_> + 9 18 2 6 2. + <_> + + <_> + 1 2 12 3 -1. + <_> + 1 3 12 1 3. + <_> + + <_> + 9 18 4 6 -1. + <_> + 9 18 2 6 2. + <_> + + <_> + 0 2 14 3 -1. + <_> + 0 3 14 1 3. + <_> + + <_> + 9 19 4 6 -1. + <_> + 9 19 2 6 2. + <_> + + <_> + 1 19 4 6 -1. + <_> + 3 19 2 6 2. + <_> + + <_> + 8 7 3 15 -1. + <_> + 8 12 3 5 3. + <_> + + <_> + 7 20 4 4 -1. + <_> + 6 21 4 2 2. + 1 + <_> + + <_> + 9 3 4 6 -1. + <_> + 9 3 2 6 2. + <_> + + <_> + 1 3 4 6 -1. + <_> + 3 3 2 6 2. + <_> + + <_> + 8 7 3 15 -1. + <_> + 8 12 3 5 3. + <_> + + <_> + 3 7 3 15 -1. + <_> + 3 12 3 5 3. + <_> + + <_> + 9 12 2 12 -1. + <_> + 9 18 2 6 2. + <_> + + <_> + 3 12 2 12 -1. + <_> + 3 18 2 6 2. + <_> + + <_> + 8 0 5 6 -1. + <_> + 8 3 5 3 2. + <_> + + <_> + 1 0 5 6 -1. + <_> + 1 3 5 3 2. + <_> + + <_> + 3 6 8 8 -1. + <_> + 3 8 8 4 2. + <_> + + <_> + 2 4 6 14 -1. + <_> + 4 4 2 14 3. + <_> + + <_> + 5 10 7 16 -1. + <_> + 5 18 7 8 2. + <_> + + <_> + 4 10 6 10 -1. + <_> + 6 10 2 10 3. + <_> + + <_> + 5 10 4 12 -1. + <_> + 5 13 4 6 2. + <_> + + <_> + 2 0 6 18 -1. + <_> + 4 6 2 6 9. + <_> + + <_> + 1 11 12 4 -1. + <_> + 1 12 12 2 2. + <_> + + <_> + 7 15 5 2 -1. + <_> + 7 15 5 1 2. + 1 + <_> + + <_> + 4 24 6 4 -1. + <_> + 4 24 3 4 2. + <_> + + <_> + 5 18 5 4 -1. + <_> + 4 19 5 2 2. + 1 + <_> + + <_> + 3 1 6 25 -1. + <_> + 6 1 3 25 2. + <_> + + <_> + 6 13 2 12 -1. + <_> + 6 13 1 12 2. + <_> + + <_> + 6 4 2 13 -1. + <_> + 7 4 1 13 2. + <_> + + <_> + 8 2 6 19 -1. + <_> + 10 2 2 19 3. + <_> + + <_> + 0 2 6 19 -1. + <_> + 2 2 2 19 3. + <_> + + <_> + 9 1 4 13 -1. + <_> + 10 1 2 13 2. + <_> + + <_> + 1 1 4 13 -1. + <_> + 2 1 2 13 2. + <_> + + <_> + 3 3 8 3 -1. + <_> + 3 3 4 3 2. + <_> + + <_> + 2 5 10 18 -1. + <_> + 2 11 10 6 3. + <_> + + <_> + 3 8 9 12 -1. + <_> + 6 12 3 4 9. + <_> + + <_> + 4 4 6 4 -1. + <_> + 4 6 6 2 2. + <_> + + <_> + 4 8 10 8 -1. + <_> + 9 8 5 4 2. + <_> + 4 12 5 4 2. + <_> + + <_> + 2 8 6 6 -1. + <_> + 4 8 2 6 3. + <_> + + <_> + 4 10 6 10 -1. + <_> + 7 10 3 5 2. + <_> + 4 15 3 5 2. + <_> + + <_> + 3 9 8 14 -1. + <_> + 3 9 4 7 2. + <_> + 7 16 4 7 2. + <_> + + <_> + 4 7 6 20 -1. + <_> + 7 7 3 10 2. + <_> + 4 17 3 10 2. + <_> + + <_> + 3 0 6 8 -1. + <_> + 3 0 3 4 2. + <_> + 6 4 3 4 2. + <_> + + <_> + 7 5 4 6 -1. + <_> + 7 5 2 6 2. + <_> + + <_> + 3 7 8 8 -1. + <_> + 3 7 4 4 2. + <_> + 7 11 4 4 2. + <_> + + <_> + 5 9 6 4 -1. + <_> + 5 11 6 2 2. + <_> + + <_> + 0 9 4 9 -1. + <_> + 0 12 4 3 3. + <_> + + <_> + 8 6 4 12 -1. + <_> + 8 10 4 4 3. + <_> + + <_> + 1 7 10 6 -1. + <_> + 1 9 10 2 3. + <_> + + <_> + 0 7 14 12 -1. + <_> + 0 10 14 6 2. + <_> + + <_> + 3 9 6 4 -1. + <_> + 3 11 6 2 2. + <_> + + <_> + 8 1 4 8 -1. + <_> + 8 1 2 8 2. + 1 + <_> + + <_> + 2 6 4 12 -1. + <_> + 2 10 4 4 3. + <_> + + <_> + 2 16 12 4 -1. + <_> + 8 16 6 2 2. + <_> + 2 18 6 2 2. + <_> + + <_> + 7 20 4 4 -1. + <_> + 6 21 4 2 2. + 1 + <_> + + <_> + 9 16 2 12 -1. + <_> + 9 16 1 12 2. + <_> + + <_> + 5 18 5 4 -1. + <_> + 4 19 5 2 2. + 1 + <_> + + <_> + 8 1 4 8 -1. + <_> + 8 1 2 8 2. + 1 + <_> + + <_> + 2 6 9 7 -1. + <_> + 5 6 3 7 3. + <_> + + <_> + 3 6 8 12 -1. + <_> + 3 9 8 6 2. + <_> + + <_> + 0 0 9 21 -1. + <_> + 3 7 3 7 9. + <_> + + <_> + 8 1 4 8 -1. + <_> + 8 1 2 8 2. + 1 + <_> + + <_> + 2 1 5 18 -1. + <_> + 2 10 5 9 2. + <_> + + <_> + 8 1 6 7 -1. + <_> + 8 1 3 7 2. + 1 + <_> + + <_> + 0 3 2 16 -1. + <_> + 1 3 1 16 2. + <_> + + <_> + 9 18 4 8 -1. + <_> + 9 18 2 8 2. + <_> + + <_> + 0 18 12 9 -1. + <_> + 3 18 6 9 2. + <_> + + <_> + 1 2 12 3 -1. + <_> + 5 2 4 3 3. + <_> + + <_> + 6 1 7 6 -1. + <_> + 6 1 7 3 2. + 1 + <_> + + <_> + 6 9 3 13 -1. + <_> + 7 9 1 13 3. + <_> + + <_> + 6 1 6 6 -1. + <_> + 6 1 6 3 2. + 1 + <_> + + <_> + 6 4 4 11 -1. + <_> + 6 4 2 11 2. + <_> + + <_> + 4 4 4 11 -1. + <_> + 6 4 2 11 2. + <_> + + <_> + 8 1 4 8 -1. + <_> + 8 1 2 8 2. + 1 + <_> + + <_> + 1 20 4 8 -1. + <_> + 3 20 2 8 2. + <_> + + <_> + 9 22 4 6 -1. + <_> + 9 22 2 6 2. + <_> + + <_> + 1 22 4 6 -1. + <_> + 3 22 2 6 2. + <_> + + <_> + 9 0 3 22 -1. + <_> + 10 0 1 22 3. + <_> + + <_> + 3 21 8 6 -1. + <_> + 5 21 4 6 2. + <_> + + <_> + 6 11 3 15 -1. + <_> + 7 11 1 15 3. + <_> + + <_> + 6 1 8 4 -1. + <_> + 6 1 8 2 2. + 1 + <_> + + <_> + 2 16 12 4 -1. + <_> + 8 16 6 2 2. + <_> + 2 18 6 2 2. + <_> + + <_> + 0 16 12 4 -1. + <_> + 0 16 6 2 2. + <_> + 6 18 6 2 2. + <_> + + <_> + 6 10 3 12 -1. + <_> + 6 14 3 4 3. + <_> + + <_> + 4 13 6 14 -1. + <_> + 4 20 6 7 2. + <_> + + <_> + 3 9 9 15 -1. + <_> + 6 14 3 5 9. + <_> + + <_> + 4 10 9 4 -1. + <_> + 7 13 3 4 3. + 1 + <_> + + <_> + 3 7 8 7 -1. + <_> + 3 7 4 7 2. + <_> + + <_> + 4 9 4 6 -1. + <_> + 6 9 2 6 2. + <_> + + <_> + 4 9 6 11 -1. + <_> + 6 9 2 11 3. + <_> + + <_> + 1 11 4 12 -1. + <_> + 1 15 4 4 3. + <_> + + <_> + 9 0 2 12 -1. + <_> + 9 0 1 12 2. + <_> + + <_> + 2 4 4 16 -1. + <_> + 2 4 2 8 2. + <_> + 4 12 2 8 2. + <_> + + <_> + 5 8 5 14 -1. + <_> + 5 15 5 7 2. + <_> + + <_> + 2 0 3 22 -1. + <_> + 3 0 1 22 3. + <_> + + <_> + 6 25 8 3 -1. + <_> + 6 25 4 3 2. + <_> + + <_> + 1 6 8 22 -1. + <_> + 1 17 8 11 2. + <_> + + <_> + 4 15 6 8 -1. + <_> + 7 15 3 4 2. + <_> + 4 19 3 4 2. + <_> + + <_> + 5 13 4 14 -1. + <_> + 5 13 2 7 2. + <_> + 7 20 2 7 2. + <_> + + <_> + 2 16 10 12 -1. + <_> + 7 16 5 6 2. + <_> + 2 22 5 6 2. + <_> + + <_> + 4 15 8 3 -1. + <_> + 4 15 4 3 2. + 1 + <_> + + <_> + 2 0 12 3 -1. + <_> + 2 1 12 1 3. + <_> + + <_> + 0 5 9 22 -1. + <_> + 3 5 3 22 3. + <_> + + <_> + 4 9 6 4 -1. + <_> + 4 11 6 2 2. + <_> + + <_> + 4 14 6 2 -1. + <_> + 4 14 6 1 2. + 1 + <_> + + <_> + 8 12 6 4 -1. + <_> + 8 12 3 4 2. + 1 + <_> + + <_> + 5 16 8 4 -1. + <_> + 4 17 8 2 2. + 1 + <_> + + <_> + 5 15 4 6 -1. + <_> + 5 15 2 6 2. + <_> + + <_> + 5 9 2 14 -1. + <_> + 5 16 2 7 2. + <_> + + <_> + 6 6 6 12 -1. + <_> + 6 10 6 4 3. + <_> + + <_> + 1 20 12 6 -1. + <_> + 1 20 6 3 2. + <_> + 7 23 6 3 2. + <_> + + <_> + 4 8 6 4 -1. + <_> + 4 10 6 2 2. + <_> + + <_> + 1 6 9 6 -1. + <_> + 1 8 9 2 3. + <_> + + <_> + 5 6 6 4 -1. + <_> + 5 8 6 2 2. + <_> + + <_> + 3 3 8 6 -1. + <_> + 3 3 4 3 2. + <_> + 7 6 4 3 2. + <_> + + <_> + 6 23 6 5 -1. + <_> + 6 23 3 5 2. + <_> + + <_> + 0 3 12 4 -1. + <_> + 0 3 6 2 2. + <_> + 6 5 6 2 2. + <_> + + <_> + 7 4 6 18 -1. + <_> + 7 10 6 6 3. + <_> + + <_> + 6 12 4 6 -1. + <_> + 6 12 4 3 2. + 1 + <_> + + <_> + 2 15 12 6 -1. + <_> + 5 15 6 6 2. + <_> + + <_> + 0 5 4 12 -1. + <_> + 0 5 2 6 2. + <_> + 2 11 2 6 2. + <_> + + <_> + 10 4 4 16 -1. + <_> + 12 4 2 8 2. + <_> + 10 12 2 8 2. + diff --git a/venv/lib/python3.11/site-packages/cv2/data/haarcascade_lefteye_2splits.xml b/venv/lib/python3.11/site-packages/cv2/data/haarcascade_lefteye_2splits.xml new file mode 100644 index 0000000000000000000000000000000000000000..9a9ef58fb7438c324c373442189a9bc1cadb947b --- /dev/null +++ b/venv/lib/python3.11/site-packages/cv2/data/haarcascade_lefteye_2splits.xml @@ -0,0 +1,7390 @@ + + + +BOOST + HAAR + 20 + 20 + + 33 + + 0 + 20 + + <_> + 5 + -2.3924100399017334e+00 + + <_> + + 0 1 0 2.7325989678502083e-02 -1 -2 1 -7.0568458177149296e-03 + + -9.0600621700286865e-01 9.3385708332061768e-01 + -4.5859959721565247e-01 + <_> + + 0 1 2 -1.2538699805736542e-01 -1 -2 3 + -1.1487299948930740e-01 + + 7.2463721036911011e-01 5.3034168481826782e-01 + -8.3221220970153809e-01 + <_> + + 0 1 4 -5.8309938758611679e-02 -1 -2 5 + -1.7684370279312134e-02 + + 6.5408891439437866e-01 2.9482871294021606e-01 + -7.4809581041336060e-01 + <_> + + 0 1 6 3.5937170032411814e-03 -1 -2 7 -1.3436110457405448e-03 + + -5.0303918123245239e-01 6.5995341539382935e-01 + -5.5740857124328613e-01 + <_> + + 1 0 8 -2.1795940119773149e-03 -1 -2 9 1.1514870449900627e-02 + + -4.2016351222991943e-01 5.9694331884384155e-01 + -8.0508047342300415e-01 + <_> + 7 + -2.6498730182647705e+00 + + <_> + + 1 0 10 -2.2485560178756714e-01 -1 -2 11 + -9.6008004620671272e-03 + + -8.1363201141357422e-01 9.0863138437271118e-01 + -3.2208970189094543e-01 + <_> + + 0 1 12 7.4219167232513428e-02 -1 -2 13 + -5.3165741264820099e-03 + + -7.5329452753067017e-01 8.6339497566223145e-01 + -3.3463571220636368e-02 + <_> + + 1 0 14 -2.1913449745625257e-03 -1 -2 15 + 1.1800959706306458e-02 + + -5.5720347166061401e-01 -3.2359680533409119e-01 + 6.4163821935653687e-01 + <_> + + 1 0 16 -7.6179709285497665e-03 -1 -2 17 + -9.0587511658668518e-03 + + -5.3167867660522461e-01 -7.3611450195312500e-01 + 5.5660772323608398e-01 + <_> + + 1 0 18 -4.9959779717028141e-03 -1 -2 19 + 8.0803930759429932e-03 + + -4.1476911306381226e-01 5.9278357028961182e-01 + -6.7384922504425049e-01 + <_> + + 0 1 20 1.9909010734409094e-03 -1 -2 21 + 1.6845749923959374e-03 + + -4.2145928740501404e-01 5.4679220914840698e-01 + -7.5099450349807739e-01 + <_> + + 1 0 22 -5.0781872123479843e-03 -1 -2 23 + 2.6645609177649021e-03 + + -3.9899548888206482e-01 5.8940601348876953e-01 + -4.6778041124343872e-01 + <_> + 8 + -2.3828399181365967e+00 + + <_> + + 1 0 24 -2.5301438570022583e-01 -1 -2 25 + 2.9663778841495514e-03 + + -7.5402587652206421e-01 -3.5279649496078491e-01 + 8.7992298603057861e-01 + <_> + + 1 0 26 -4.7127649188041687e-02 -1 -2 27 + 1.9500750349834561e-03 + + -5.2234899997711182e-01 -3.0379909276962280e-01 + 7.5204378366470337e-01 + <_> + + 0 1 28 -7.1481026709079742e-02 -1 -2 29 + 2.2189730405807495e-01 + + 6.5841901302337646e-01 -6.0907202959060669e-01 + 5.6842160224914551e-01 + <_> + + 0 1 30 3.3842820674180984e-02 -1 -2 31 + -5.1714561413973570e-04 + + -6.4311647415161133e-01 5.4620361328125000e-01 + -3.9984148740768433e-01 + <_> + + 1 0 32 -3.4458211157470942e-03 -1 -2 33 + 2.4395729415118694e-03 + + -4.5636838674545288e-01 4.7798189520835876e-01 + -9.1247087717056274e-01 + <_> + + 1 0 34 2.1385070867836475e-03 -1 -2 35 + 1.8324409611523151e-03 + + -8.3617758750915527e-01 3.3462798595428467e-01 + -7.5008547306060791e-01 + <_> + + 1 0 36 1.1167610064148903e-03 -1 -2 37 + 9.9106997367925942e-05 + + -6.9083797931671143e-01 -3.4561330080032349e-01 + 4.1183179616928101e-01 + <_> + + 1 0 38 1.5447770245373249e-02 -1 -2 39 + -3.2244939357042313e-02 + + 3.6980190873146057e-01 6.1112838983535767e-01 + -5.5685341358184814e-01 + <_> + 9 + -2.1312201023101807e+00 + + <_> + + 1 0 40 -1.2251129746437073e-01 -1 -2 41 + -1.4230609871447086e-02 + + -6.7026627063751221e-01 8.7802392244338989e-01 + -1.8784180283546448e-01 + <_> + + 1 0 42 -5.9833219274878502e-03 -1 -2 43 + 7.7085137367248535e-02 + + -5.8122849464416504e-01 -5.0395351648330688e-01 + 6.7387360334396362e-01 + <_> + + 0 1 44 -1.1086189746856689e-01 -1 -2 45 + 9.4604760408401489e-02 + + 6.3432037830352783e-01 -4.9726390838623047e-01 + 3.8787439465522766e-01 + <_> + + 0 1 46 1.7696130089461803e-04 -1 -2 47 + 2.0120320841670036e-03 + + -6.3938802480697632e-01 -3.5313910245895386e-01 + 5.1538437604904175e-01 + <_> + + 1 0 48 -1.6102839726954699e-03 -1 -2 49 + 1.6666069859638810e-03 + + -5.1915901899337769e-01 4.0478190779685974e-01 + -6.9496357440948486e-01 + <_> + + 1 0 50 -7.1480998303741217e-04 -1 -2 51 + -4.7647571191191673e-03 + + -4.8945188522338867e-01 -5.0037759542465210e-01 + 4.0796059370040894e-01 + <_> + + 0 1 52 7.8659597784280777e-03 -1 -2 53 + -1.2938310392200947e-03 + + -3.3636429905891418e-01 -6.7621380090713501e-01 + 4.7010248899459839e-01 + <_> + + 1 0 54 -3.6533139063976705e-04 -1 -2 55 + 2.0565679296851158e-03 + + -4.7071608901023865e-01 4.1323411464691162e-01 + -5.5526417493820190e-01 + <_> + + 0 1 56 7.8385717642959207e-05 -1 -2 57 + 1.7511800397187471e-03 + + -5.1521158218383789e-01 3.3417248725891113e-01 + -7.9558157920837402e-01 + <_> + 9 + -2.0176210403442383e+00 + + <_> + + 1 0 58 -6.4695239067077637e-02 -1 -2 59 + 9.5212170854210854e-03 + + -6.1326402425765991e-01 -5.4831558465957642e-01 + 7.8652447462081909e-01 + <_> + + 0 1 60 -9.8109766840934753e-02 -1 -2 61 + -8.5938459634780884e-01 + + 6.9113308191299438e-01 4.5364680886268616e-01 + -5.0026148557662964e-01 + <_> + + 1 0 62 -8.9836172759532928e-02 -1 -2 63 + 2.6945930439978838e-03 + + -5.2928781509399414e-01 -3.8199779391288757e-01 + 5.7821297645568848e-01 + <_> + + 1 0 64 2.5973599404096603e-03 -1 -2 65 + -3.0058110132813454e-03 + + -9.1928368806838989e-01 -8.0213797092437744e-01 + 2.9259279370307922e-01 + <_> + + 1 0 66 -4.5496290549635887e-03 -1 -2 67 + 4.7376728616654873e-03 + + -4.3678951263427734e-01 4.1010880470275879e-01 + -7.2692811489105225e-01 + <_> + + 1 0 68 4.6190437860786915e-03 -1 -2 69 + 4.5377281494438648e-03 + + -8.4895151853561401e-01 3.0124679207801819e-01 + -7.0301771163940430e-01 + <_> + + 1 0 70 -2.4952790699899197e-03 -1 -2 71 + -5.1753767766058445e-03 + + -4.6784749627113342e-01 -7.4530351161956787e-01 + 4.0011820197105408e-01 + <_> + + 0 1 72 -5.2049742080271244e-03 -1 -2 73 + -8.7892003357410431e-02 + + 4.8669269680976868e-01 8.3493947982788086e-01 + -3.3827719092369080e-01 + <_> + + 0 1 74 6.9997250102460384e-03 -1 -2 75 + -9.0990252792835236e-03 + + -2.9039889574050903e-01 6.2315821647644043e-01 + -3.5424730181694031e-01 + <_> + 11 + -2.2212049961090088e+00 + + <_> + + 1 0 76 -5.5702101439237595e-02 -1 -2 77 + 3.4033291041851044e-02 + + -6.9841581583023071e-01 -3.9509189128875732e-01 + 8.0313128232955933e-01 + <_> + + 1 0 78 -4.6199060976505280e-02 -1 -2 79 + -4.8061669804155827e-03 + + -4.8860380053520203e-01 8.0775612592697144e-01 + -7.4490822851657867e-02 + <_> + + 0 1 80 1.8170489929616451e-03 -1 -2 81 + -3.6162370815873146e-03 + + -3.8043528795242310e-01 6.0451722145080566e-01 + -2.2582240402698517e-01 + <_> + + 1 0 82 -1.5706950798630714e-02 -1 -2 83 + 4.3929950334131718e-03 + + -3.7577998638153076e-01 5.4214221239089966e-01 + -3.7388241291046143e-01 + <_> + + 1 0 84 -1.0047219984699041e-04 -1 -2 85 + -8.6475118994712830e-02 + + -4.7433409094810486e-01 5.0186318159103394e-01 + -2.1136230230331421e-01 + <_> + + 0 1 86 -7.7960766851902008e-02 -1 -2 87 + 9.8561286926269531e-02 + + 5.7337349653244019e-01 -3.2515558600425720e-01 + 5.3035980463027954e-01 + <_> + + 0 1 88 -5.4359167814254761e-01 -1 -2 89 + -4.4177699834108353e-02 + + 5.9464299678802490e-01 2.9671078920364380e-01 + -3.8474830985069275e-01 + <_> + + 1 0 90 -8.8016409426927567e-04 -1 -2 91 + 2.6359390467405319e-03 + + -3.2000589370727539e-01 -1.7586140334606171e-01 + 4.8360350728034973e-01 + <_> + + 0 1 92 -1.4203689992427826e-02 -1 -2 93 + -7.3902818257920444e-05 + + -7.7882087230682373e-01 3.0619418621063232e-01 + -3.3196049928665161e-01 + <_> + + 1 0 94 4.6157240867614746e-03 -1 -2 95 + 1.1152310296893120e-02 + + 4.9689778685569763e-01 -5.3435891866683960e-01 + 9.7229443490505219e-02 + <_> + + 0 1 96 -6.0547702014446259e-03 -1 -2 97 + -2.1118740551173687e-03 + + -8.3811217546463013e-01 6.3617032766342163e-01 + -4.8299189656972885e-02 + <_> + 13 + -2.1328830718994141e+00 + + <_> + + 1 0 98 -1.2956829741597176e-02 -1 -2 99 + -2.7141019701957703e-02 + + -6.4874732494354248e-01 7.6293057203292847e-01 + -3.3947870135307312e-01 + <_> + + 0 1 100 4.5119998976588249e-03 -1 -2 101 + 1.2516690418124199e-02 + + -5.0059837102890015e-01 -3.6873328685760498e-01 + 5.9888631105422974e-01 + <_> + + 1 0 102 -6.0557941906154156e-03 -1 -2 103 + -4.6923749148845673e-02 + + -3.8940930366516113e-01 6.3268911838531494e-01 + -2.6270028948783875e-01 + <_> + + 1 0 104 -2.4018269032239914e-03 -1 -2 105 + -1.5936089679598808e-02 + + -5.0517928600311279e-01 6.5526002645492554e-01 + -1.7308109998703003e-01 + <_> + + 0 1 106 1.4000290073454380e-02 -1 -2 107 + 1.3202779926359653e-02 + + -4.1653230786323547e-01 -4.9121969938278198e-01 + 3.7397938966751099e-01 + <_> + + 1 0 108 -2.7658580802381039e-04 -1 -2 109 + -4.8634149134159088e-03 + + -4.5382869243621826e-01 -5.9796881675720215e-01 + 3.1217721104621887e-01 + <_> + + 1 0 110 2.7654920704662800e-03 -1 -2 111 + 2.5534769892692566e-01 + + -7.6476567983627319e-01 -3.4267220646142960e-02 + 7.0786577463150024e-01 + <_> + + 1 0 112 4.6812961809337139e-03 -1 -2 113 + 6.5162130631506443e-03 + + -7.8790861368179321e-01 1.8877579271793365e-01 + -7.9132258892059326e-01 + <_> + + 1 0 114 5.7325329631567001e-02 -1 -2 115 + -1.2718330137431622e-02 + + 6.2349188327789307e-01 3.0860608816146851e-01 + -3.2784330844879150e-01 + <_> + + 1 0 116 -6.7374261561781168e-04 -1 -2 117 + 5.6564649567008018e-03 + + -4.5451548695564270e-01 2.7431339025497437e-01 + -7.8447937965393066e-01 + <_> + + 1 0 118 3.1134090386331081e-03 -1 -2 119 + 2.4249779526144266e-03 + + 3.9738771319389343e-01 -3.5198271274566650e-01 + 3.0490091443061829e-01 + <_> + + 0 1 120 -5.5641461163759232e-02 -1 -2 121 + 4.3548129498958588e-02 + + 4.5575490593910217e-01 -3.3370929956436157e-01 + 2.9501429200172424e-01 + <_> + + 1 0 122 8.0783379962667823e-04 -1 -2 123 + 1.8713270546868443e-03 + + 2.2460040450096130e-01 -6.6048407554626465e-01 + 1.5031670033931732e-01 + <_> + 13 + -1.9884539842605591e+00 + + <_> + + 1 0 124 -4.3516629934310913e-01 -1 -2 125 + 6.2595037743449211e-03 + + -4.9959290027618408e-01 -2.3639589548110962e-01 + 7.9975378513336182e-01 + <_> + + 1 0 126 -6.6518150269985199e-03 -1 -2 127 + -5.7092090137302876e-03 + + -5.4752808809280396e-01 6.4273327589035034e-01 + -2.1511809527873993e-01 + <_> + + 0 1 128 1.9450180232524872e-02 -1 -2 129 + -5.4476498626172543e-03 + + -5.3605002164840698e-01 5.5794501304626465e-01 + -2.1474960446357727e-01 + <_> + + 1 0 130 -1.6347589553333819e-04 -1 -2 131 + 7.1614650078117847e-03 + + -5.5962842702865601e-01 -1.6604369878768921e-01 + 4.6805259585380554e-01 + <_> + + 1 0 132 -1.3145170174539089e-02 -1 -2 133 + -1.1436809785664082e-02 + + -4.1279909014701843e-01 3.7901800870895386e-01 + -4.1791579127311707e-01 + <_> + + 0 1 134 -7.2912001051008701e-03 -1 -2 135 + -5.2170921117067337e-04 + + -7.6089668273925781e-01 3.2527619600296021e-01 + -3.0110970139503479e-01 + <_> + + 1 0 136 3.3754010219126940e-03 -1 -2 137 + 2.5100160855799913e-03 + + -7.8373962640762329e-01 1.8525449931621552e-01 + -5.8084958791732788e-01 + <_> + + 0 1 138 -1.2884209863841534e-03 -1 -2 139 + -1.8726480193436146e-03 + + 2.7339500188827515e-01 1.6819879412651062e-01 + -5.1986902952194214e-01 + <_> + + 1 0 140 2.4010189808905125e-03 -1 -2 141 + 4.8938081599771976e-03 + + -8.2964670658111572e-01 1.6796599328517914e-01 + -6.5530872344970703e-01 + <_> + + 0 1 142 3.1223020050674677e-03 -1 -2 143 + 5.0366491079330444e-02 + + -4.3521308898925781e-01 -5.8327801525592804e-03 + 7.0878309011459351e-01 + <_> + + 1 0 144 3.6151800304651260e-02 -1 -2 145 + -1.3426589965820312e-01 + + 4.4979161024093628e-01 3.9472430944442749e-01 + -3.7588629126548767e-01 + <_> + + 1 0 146 -2.7791369706392288e-02 -1 -2 147 + -1.2712170369923115e-02 + + -2.9488721489906311e-01 -7.2011739015579224e-01 + 3.6595028638839722e-01 + <_> + + 1 0 148 -3.8276749546639621e-04 -1 -2 149 + -6.1330529861152172e-03 + + -4.0581339597702026e-01 -5.2725958824157715e-01 + 3.6040499806404114e-01 + <_> + 16 + -2.0902318954467773e+00 + + <_> + + 1 0 150 -4.7748669981956482e-02 -1 -2 151 + 4.6201851218938828e-03 + + -5.9902387857437134e-01 -2.4887490272521973e-01 + 6.9201582670211792e-01 + <_> + + 1 0 152 -8.5353456437587738e-02 -1 -2 153 + -7.0110969245433807e-03 + + -5.1715832948684692e-01 5.6950652599334717e-01 + -2.4749420583248138e-01 + <_> + + 1 0 154 -7.6567470096051693e-03 -1 -2 155 + -3.5919491201639175e-02 + + -3.7316519021987915e-01 4.9438580870628357e-01 + -3.9586681127548218e-01 + <_> + + 0 1 156 -7.4326626956462860e-02 -1 -2 157 + 9.0118587017059326e-02 + + 5.6755977869033813e-01 -3.8921171426773071e-01 + 3.1079098582267761e-01 + <_> + + 0 1 158 1.6736460849642754e-02 -1 -2 159 + 1.8592580454424024e-03 + + -3.6674138903617859e-01 3.4875720739364624e-01 + -5.7483112812042236e-01 + <_> + + 1 0 160 7.5264140032231808e-03 -1 -2 161 + -3.5309391096234322e-03 + + 6.7878991365432739e-01 4.8617920279502869e-01 + -2.5660640001296997e-01 + <_> + + 1 0 162 -4.9510748795000836e-05 -1 -2 163 + -6.8923248909413815e-03 + + -4.5661240816116333e-01 -5.7134729623794556e-01 + 3.2921048998832703e-01 + <_> + + 1 0 164 6.1156069859862328e-03 -1 -2 165 + -5.5014882236719131e-03 + + -7.1315360069274902e-01 -5.9139078855514526e-01 + 1.9805949926376343e-01 + <_> + + 1 0 166 -4.2378060519695282e-02 -1 -2 167 + 2.2011259570717812e-03 + + -3.8239300251007080e-01 3.3457010984420776e-01 + -4.3032339215278625e-01 + <_> + + 1 0 168 2.1217379253357649e-03 -1 -2 169 + 6.4385468140244484e-03 + + -6.8310022354125977e-01 2.0478610694408417e-01 + -6.1793941259384155e-01 + <_> + + 1 0 170 3.1177410855889320e-03 -1 -2 171 + 4.2230269173160195e-04 + + 5.1137161254882812e-01 -3.6440208554267883e-01 + 2.1073049306869507e-01 + <_> + + 0 1 172 -6.5657291561365128e-03 -1 -2 173 + 2.5686610024422407e-03 + + -6.4581501483917236e-01 2.7643561363220215e-01 + -3.4198498725891113e-01 + <_> + + 1 0 174 -6.2437567976303399e-05 -1 -2 175 + -3.6269261036068201e-03 + + -3.1758078932762146e-01 -8.1051957607269287e-01 + 2.7218630909919739e-01 + <_> + + 1 0 176 -3.4638389479368925e-03 -1 -2 177 + -7.4930191040039062e-02 + + -3.9515769481658936e-01 -5.4353868961334229e-01 + 2.6106119155883789e-01 + <_> + + 0 1 178 -9.7247250378131866e-03 -1 -2 179 + 4.5450199395418167e-03 + + 4.1124871373176575e-01 -3.1576550006866455e-01 + 3.9046970009803772e-01 + <_> + + 0 1 180 -2.7354240883141756e-03 -1 -2 181 + -1.6969470307230949e-02 + + -7.4906748533248901e-01 -6.2437218427658081e-01 + 1.8387380242347717e-01 + <_> + 15 + -1.9407310485839844e+00 + + <_> + + 1 0 182 -2.4978699162602425e-02 -1 -2 183 + -5.8007869869470596e-02 + + -6.0697889328002930e-01 7.1478021144866943e-01 + -2.9943239688873291e-01 + <_> + + 1 0 184 -5.1753749139606953e-03 -1 -2 185 + -8.9618662605062127e-04 + + -3.5297989845275879e-01 5.4417461156845093e-01 + -3.9789950847625732e-01 + <_> + + 1 0 186 -2.8718139219563454e-05 -1 -2 187 + 4.7620530240237713e-03 + + -4.8898181319236755e-01 -3.1144559383392334e-01 + 4.6786791086196899e-01 + <_> + + 0 1 188 1.9751280546188354e-02 -1 -2 189 + -1.2683609966188669e-03 + + -4.3020489811897278e-01 -5.4090851545333862e-01 + 3.9797520637512207e-01 + <_> + + 1 0 190 -4.5749718992738053e-05 -1 -2 191 + 2.4090509396046400e-03 + + -4.4518938660621643e-01 2.8822308778762817e-01 + -5.4514312744140625e-01 + <_> + + 0 1 192 -4.5728669501841068e-03 -1 -2 193 + 8.9018214493989944e-03 + + 5.5039870738983154e-01 -4.1598889231681824e-01 + 1.7468899488449097e-01 + <_> + + 0 1 194 -1.2056449800729752e-01 -1 -2 195 + 4.6919930726289749e-02 + + 6.8890577554702759e-01 -4.2266309261322021e-01 + 1.7010940611362457e-01 + <_> + + 0 1 196 -4.2390259914100170e-03 -1 -2 197 + 3.2174249645322561e-03 + + -6.3045340776443481e-01 -3.6097949743270874e-01 + 2.4933730065822601e-01 + <_> + + 0 1 198 -8.5738790221512318e-04 -1 -2 199 + -1.8432449549436569e-02 + + 3.0993479490280151e-01 9.7758449614048004e-02 + -5.0742352008819580e-01 + <_> + + 1 0 200 5.8692828752100468e-03 -1 -2 201 + -6.8751699291169643e-03 + + -7.4556058645248413e-01 -6.7458391189575195e-01 + 1.5918810665607452e-01 + <_> + + 1 0 202 -6.8542227381840348e-05 -1 -2 203 + -1.0658579878509045e-02 + + -4.1279420256614685e-01 3.7002709507942200e-01 + -2.1731729805469513e-01 + <_> + + 0 1 204 -1.8811509944498539e-03 -1 -2 205 + -2.2309130057692528e-02 + + 5.7902830839157104e-01 1.9725680351257324e-01 + -3.2475191354751587e-01 + <_> + + 1 0 206 6.5826578065752983e-04 -1 -2 207 + -5.0781588070094585e-03 + + -6.0630238056182861e-01 -7.7123302221298218e-01 + 1.8186129629611969e-01 + <_> + + 1 0 208 5.6215081363916397e-02 -1 -2 209 + -3.7720590829849243e-02 + + 5.0561398267745972e-01 3.6052110791206360e-01 + -3.2743760943412781e-01 + <_> + + 1 0 210 3.9480631239712238e-03 -1 -2 211 + -2.4269670248031616e-03 + + -7.5788182020187378e-01 5.2076101303100586e-01 + -6.1021361500024796e-02 + <_> + 19 + -2.1061589717864990e+00 + + <_> + + 1 0 212 -1.6906699165701866e-02 -1 -2 213 + 2.5327840819954872e-02 + + -4.7501268982887268e-01 -4.4016760587692261e-01 + 6.0885351896286011e-01 + <_> + + 0 1 214 -1.5663320198655128e-02 -1 -2 215 + -1.6101899743080139e-01 + + 5.7100051641464233e-01 4.0989148616790771e-01 + -3.8142371177673340e-01 + <_> + + 0 1 216 1.6885380318854004e-04 -1 -2 217 + -3.0552360694855452e-03 + + -4.7958490252494812e-01 4.2852300405502319e-01 + -2.8252631425857544e-01 + <_> + + 1 0 218 4.8042940907180309e-03 -1 -2 219 + -5.0092511810362339e-03 + + -6.8659138679504395e-01 -5.9033542871475220e-01 + 1.9732500612735748e-01 + <_> + + 1 0 220 -3.7119518965482712e-02 -1 -2 221 + 3.7857799325138330e-03 + + -4.3130961060523987e-01 3.3596190810203552e-01 + -3.7401720881462097e-01 + <_> + + 0 1 222 -1.0869850404560566e-02 -1 -2 223 + 4.0577541221864522e-04 + + 5.4841208457946777e-01 -5.0022697448730469e-01 + 5.1423858851194382e-02 + <_> + + 1 0 224 5.0201490521430969e-03 -1 -2 225 + 2.5601210072636604e-03 + + -5.9016227722167969e-01 1.9469800591468811e-01 + -6.4648360013961792e-01 + <_> + + 1 0 226 -1.2395749799907207e-03 -1 -2 227 + -5.1075750961899757e-03 + + -2.7762159705162048e-01 -6.1149162054061890e-01 + 3.5250389575958252e-01 + <_> + + 1 0 228 -6.4853738876990974e-05 -1 -2 229 + 2.3282810579985380e-03 + + -3.4008860588073730e-01 2.7134749293327332e-01 + -6.6915398836135864e-01 + <_> + + 1 0 230 -1.5571110416203737e-03 -1 -2 231 + 2.3992219939827919e-03 + + -4.1144248843193054e-01 2.5939700007438660e-01 + -4.0380299091339111e-01 + <_> + + 1 0 232 7.7784422319382429e-04 -1 -2 233 + 3.2334199640899897e-03 + + 2.9523921012878418e-01 -5.8436852693557739e-01 + -1.7936639487743378e-02 + <_> + + 1 0 234 -5.6113858590833843e-05 -1 -2 235 + 1.9111000001430511e-03 + + -3.5021650791168213e-01 2.6312610507011414e-01 + -6.1549347639083862e-01 + <_> + + 0 1 236 -3.4321150742471218e-03 -1 -2 237 + -1.4541969634592533e-02 + + 3.7493300437927246e-01 4.3788930773735046e-01 + -3.0131611227989197e-01 + <_> + + 0 1 238 -2.5027070194482803e-02 -1 -2 239 + -3.1183639075607061e-03 + + -5.2829748392105103e-01 -8.1336849927902222e-01 + 1.7928420007228851e-01 + <_> + + 1 0 240 2.9415208846330643e-03 -1 -2 241 + -2.4807679001241922e-03 + + -4.7243058681488037e-01 -6.0058331489562988e-01 + 2.1497109532356262e-01 + <_> + + 1 0 242 -4.2498838156461716e-03 -1 -2 243 + 7.6959328725934029e-03 + + -3.3230608701705933e-01 2.1247069537639618e-01 + -8.1967252492904663e-01 + <_> + + 0 1 244 -6.1426039785146713e-02 -1 -2 245 + 5.3176790475845337e-02 + + 5.2200448513031006e-01 -2.9851761460304260e-01 + 2.8654190897941589e-01 + <_> + + 0 1 246 2.5695779186207801e-05 -1 -2 247 + 2.4311970919370651e-03 + + -3.4719291329383850e-01 -1.2133490294218063e-01 + 3.8965350389480591e-01 + <_> + + 1 0 248 5.6956289336085320e-03 -1 -2 249 + -6.6630227956920862e-04 + + -6.6364032030105591e-01 2.7921909093856812e-01 + -2.1624849736690521e-01 + <_> + 20 + -2.0051579475402832e+00 + + <_> + + 1 0 250 -2.8509549796581268e-02 -1 -2 251 + -1.6429109498858452e-02 + + -5.5133241415023804e-01 6.0328769683837891e-01 + -3.0009600520133972e-01 + <_> + + 1 0 252 -5.8078952133655548e-03 -1 -2 253 + -1.4670349657535553e-02 + + -4.8640519380569458e-01 4.4786658883094788e-01 + -3.5448360443115234e-01 + <_> + + 1 0 254 -1.0694459779188037e-03 -1 -2 255 + -5.0697539001703262e-02 + + -3.8593119382858276e-01 4.3865600228309631e-01 + -3.1134051084518433e-01 + <_> + + 0 1 256 -7.2318017482757568e-02 -1 -2 257 + -1.6740759834647179e-02 + + 5.5695492029190063e-01 3.4036931395530701e-01 + -3.7713068723678589e-01 + <_> + + 1 0 258 1.2923260219395161e-02 -1 -2 259 + -2.0832989830523729e-03 + + 2.6987180113792419e-01 7.2217263281345367e-02 + -5.0617259740829468e-01 + <_> + + 0 1 260 2.9217539122328162e-04 -1 -2 261 + 4.6477448195219040e-03 + + -4.7199469804763794e-01 -2.0233640074729919e-01 + 3.6684620380401611e-01 + <_> + + 0 1 262 1.6355320112779737e-03 -1 -2 263 + 6.0143060982227325e-03 + + -3.3369150757789612e-01 2.6335370540618896e-01 + -7.5315129756927490e-01 + <_> + + 0 1 264 -1.9768040627241135e-02 -1 -2 265 + 5.0995801575481892e-03 + + -7.3396641016006470e-01 -1.0626330226659775e-01 + 3.7877479195594788e-01 + <_> + + 1 0 266 2.1737320348620415e-03 -1 -2 267 + 2.3621059954166412e-02 + + -4.5873621106147766e-01 -3.7341989576816559e-02 + 5.0312960147857666e-01 + <_> + + 1 0 268 4.7070439904928207e-02 -1 -2 269 + 4.8429161310195923e-02 + + 3.9159670472145081e-01 -2.7507638931274414e-01 + 3.6923450231552124e-01 + <_> + + 0 1 270 7.1763257437851280e-05 -1 -2 271 + -4.0031517855823040e-03 + + -2.6133701205253601e-01 -4.6118479967117310e-01 + 3.4101578593254089e-01 + <_> + + 1 0 272 2.5536299217492342e-03 -1 -2 273 + -2.5720898993313313e-03 + + 4.4237849116325378e-01 4.3066531419754028e-01 + -2.8360688686370850e-01 + <_> + + 1 0 274 8.7512210011482239e-03 -1 -2 275 + 5.7346918620169163e-03 + + -7.7647632360458374e-01 1.4551159739494324e-01 + -7.5074160099029541e-01 + <_> + + 0 1 276 -6.6438838839530945e-03 -1 -2 277 + -3.4590701106935740e-03 + + 4.0350550413131714e-01 2.8769719600677490e-01 + -2.8021600842475891e-01 + <_> + + 1 0 278 9.9742468446493149e-03 -1 -2 279 + 1.3233659788966179e-02 + + -6.0677021741867065e-01 1.5478080511093140e-01 + -7.0759147405624390e-01 + <_> + + 0 1 280 -5.0271311774849892e-03 -1 -2 281 + -1.2092100223526359e-04 + + -7.3897778987884521e-01 2.3473000526428223e-01 + -2.4400579929351807e-01 + <_> + + 1 0 282 -1.2881499715149403e-03 -1 -2 283 + 6.2854858115315437e-03 + + -2.8901669383049011e-01 2.8100869059562683e-01 + -5.6933850049972534e-01 + <_> + + 1 0 284 5.6929360143840313e-03 -1 -2 285 + -5.3880861960351467e-03 + + -7.8456932306289673e-01 2.6201328635215759e-01 + -2.2232030332088470e-01 + <_> + + 1 0 286 4.8205819912254810e-03 -1 -2 287 + 3.4279188513755798e-01 + + 5.6795972585678101e-01 -1.8314230442047119e-01 + 5.4108071327209473e-01 + <_> + + 0 1 288 5.1370919682085514e-03 -1 -2 289 + -9.1285221278667450e-03 + + -3.9116761088371277e-01 5.3076338768005371e-01 + -3.0019309371709824e-02 + <_> + 21 + -2.1121981143951416e+00 + + <_> + + 1 0 290 -5.1386129111051559e-02 -1 -2 291 + 5.1850839518010616e-03 + + -5.3148782253265381e-01 -2.4744540452957153e-01 + 6.1181622743606567e-01 + <_> + + 1 0 292 -1.5259400010108948e-02 -1 -2 293 + 2.5995150208473206e-02 + + -4.3303629755973816e-01 4.3979901820421219e-02 + 7.3829138278961182e-01 + <_> + + 1 0 294 -3.2312370836734772e-02 -1 -2 295 + 1.3700700365006924e-02 + + -3.9609751105308533e-01 -2.7643880248069763e-01 + 4.2535358667373657e-01 + <_> + + 1 0 296 -2.2647869773209095e-03 -1 -2 297 + -6.8290620110929012e-03 + + -3.2005569338798523e-01 -5.1682972908020020e-01 + 3.6975708603858948e-01 + <_> + + 1 0 298 -2.2481549531221390e-03 -1 -2 299 + 4.5944549143314362e-02 + + -3.6244350671768188e-01 -1.3187309959903359e-03 + 6.3217681646347046e-01 + <_> + + 1 0 300 1.8755620112642646e-03 -1 -2 301 + -1.9700559787452221e-03 + + -7.1403390169143677e-01 -5.8730661869049072e-01 + 1.7592810094356537e-01 + <_> + + 1 0 302 -6.5721389837563038e-03 -1 -2 303 + -1.1746180243790150e-02 + + -3.6347511410713196e-01 3.1440791487693787e-01 + -4.0111118555068970e-01 + <_> + + 1 0 304 -1.6494120063725859e-04 -1 -2 305 + -7.2169408667832613e-05 + + -3.7792590260505676e-01 5.2791112661361694e-01 + -1.0790319740772247e-01 + <_> + + 0 1 306 1.9697639800142497e-04 -1 -2 307 + -1.1423509567975998e-02 + + -4.7097641229629517e-01 -8.5209292173385620e-01 + 1.7662869393825531e-01 + <_> + + 0 1 308 -4.5562228187918663e-03 -1 -2 309 + -4.4720191508531570e-03 + + -8.0601161718368530e-01 -6.1500209569931030e-01 + 1.2908309698104858e-01 + <_> + + 0 1 310 -1.7765410011634231e-03 -1 -2 311 + -7.8799277544021606e-03 + + 3.1382599472999573e-01 3.0394628643989563e-01 + -3.7204921245574951e-01 + <_> + + 0 1 312 -1.4284689677879214e-03 -1 -2 313 + -1.8939910223707557e-03 + + 5.0413030385971069e-01 3.4823760390281677e-01 + -2.3673820495605469e-01 + <_> + + 0 1 314 -3.1496640294790268e-03 -1 -2 315 + -1.0716119781136513e-02 + + -6.6812378168106079e-01 -4.8515519499778748e-01 + 1.9036419689655304e-01 + <_> + + 0 1 316 -6.8033537827432156e-03 -1 -2 317 + 1.4902319759130478e-02 + + -5.6979268789291382e-01 1.3098250329494476e-01 + -7.1448272466659546e-01 + <_> + + 0 1 318 -3.4170228987932205e-02 -1 -2 319 + -1.4779250323772430e-01 + + 5.0575131177902222e-01 2.8233268857002258e-01 + -2.7205321192741394e-01 + <_> + + 1 0 320 -5.5842810979811475e-05 -1 -2 321 + 3.9885081350803375e-02 + + -2.6936730742454529e-01 5.6696129031479359e-03 + 6.3975161314010620e-01 + <_> + + 1 0 322 1.2483130209147930e-02 -1 -2 323 + -3.2864511013031006e-04 + + -7.4533742666244507e-01 3.6449620127677917e-01 + -9.6498817205429077e-02 + <_> + + 0 1 324 -1.4710469986312091e-04 -1 -2 325 + -2.7814340591430664e-01 + + 1.4060440659523010e-01 5.7002830505371094e-01 + -4.8755478858947754e-01 + <_> + + 0 1 326 -1.3452640268951654e-03 -1 -2 327 + 9.1500842245295644e-04 + + 3.9255830645561218e-01 -3.0215170979499817e-01 + 3.6698031425476074e-01 + <_> + + 0 1 328 -3.4133149310946465e-03 -1 -2 329 + 5.1169008947908878e-03 + + -6.4085817337036133e-01 -2.3052580654621124e-01 + 2.4285919964313507e-01 + <_> + + 1 0 330 8.8846698403358459e-02 -1 -2 331 + 6.1080828309059143e-03 + + 4.5381888747215271e-01 -3.5880088806152344e-01 + 1.3209380209445953e-01 + <_> + 23 + -1.8701590299606323e+00 + + <_> + + 1 0 332 -1.5930000692605972e-02 -1 -2 333 + 2.7407450601458549e-02 + + -3.5245341062545776e-01 -6.0236789286136627e-02 + 7.2715848684310913e-01 + <_> + + 1 0 334 -8.5037678480148315e-02 -1 -2 335 + -1.1508919997140765e-03 + + -4.3576711416244507e-01 4.6471679210662842e-01 + -3.5896891355514526e-01 + <_> + + 1 0 336 -6.4599298639222980e-04 -1 -2 337 + 5.5495807901024818e-03 + + -3.1371060013771057e-01 4.1225919127464294e-01 + -4.9400448799133301e-01 + <_> + + 1 0 338 -1.1472150217741728e-03 -1 -2 339 + -6.4546810463070869e-03 + + -3.9192581176757812e-01 -6.9197827577590942e-01 + 2.6103940606117249e-01 + <_> + + 0 1 340 -1.1414250358939171e-02 -1 -2 341 + 1.1582579463720322e-03 + + 3.2361420989036560e-01 -3.8304999470710754e-01 + 2.8015980124473572e-01 + <_> + + 1 0 342 -6.1077292775735259e-04 -1 -2 343 + 1.1812780285254121e-03 + + -3.7471079826354980e-01 -1.7685219645500183e-01 + 3.5498109459877014e-01 + <_> + + 1 0 344 7.9117231070995331e-03 -1 -2 345 + -9.0904926764778793e-05 + + -6.9681918621063232e-01 2.0756739377975464e-01 + -4.4282090663909912e-01 + <_> + + 0 1 346 2.8638960793614388e-03 -1 -2 347 + 1.2769990134984255e-03 + + -4.1364789009094238e-01 -2.1157020330429077e-01 + 3.1919568777084351e-01 + <_> + + 0 1 348 -7.5440858490765095e-03 -1 -2 349 + 5.4467269219458103e-03 + + -7.5495690107345581e-01 1.3229879736900330e-01 + -6.7695891857147217e-01 + <_> + + 1 0 350 1.3641830300912261e-03 -1 -2 351 + 1.3810779899358749e-02 + + -4.2168149352073669e-01 1.5719360113143921e-01 + -6.7965167760848999e-01 + <_> + + 1 0 352 5.0265640020370483e-02 -1 -2 353 + 4.7765119234099984e-05 + + 7.4369138479232788e-01 -3.8102349638938904e-01 + 1.0605350136756897e-01 + <_> + + 1 0 354 1.4666689932346344e-01 -1 -2 355 + -3.0426830053329468e-01 + + 5.3409832715988159e-01 3.7783610820770264e-01 + -2.1534620225429535e-01 + <_> + + 0 1 356 -3.2244708854705095e-03 -1 -2 357 + -1.7187190242111683e-03 + + 2.8274241089820862e-01 1.0677109658718109e-01 + -4.4204118847846985e-01 + <_> + + 0 1 358 -8.4115704521536827e-03 -1 -2 359 + -2.3220919072628021e-02 + + -8.3557051420211792e-01 -5.1933908462524414e-01 + 1.3181640207767487e-01 + <_> + + 0 1 360 -6.3912221230566502e-03 -1 -2 361 + -3.0661540222354233e-04 + + -6.8552321195602417e-01 2.2192850708961487e-01 + -2.3945030570030212e-01 + <_> + + 1 0 362 1.8742750398814678e-03 -1 -2 363 + -2.8299540281295776e-02 + + -4.7218438982963562e-01 -6.8186718225479126e-01 + 1.5923790633678436e-01 + <_> + + 1 0 364 7.9352483153343201e-03 -1 -2 365 + -8.7599940598011017e-03 + + -7.3135781288146973e-01 -6.0014718770980835e-01 + 1.0350330173969269e-01 + <_> + + 0 1 366 -5.5426149629056454e-03 -1 -2 367 + -1.8066290067508817e-03 + + -5.9360408782958984e-01 2.5533521175384521e-01 + -1.7036439478397369e-01 + <_> + + 1 0 368 -8.3993803709745407e-03 -1 -2 369 + -1.9515500171110034e-03 + + -2.3953610658645630e-01 3.7252411246299744e-01 + -1.2982900440692902e-01 + <_> + + 0 1 370 -2.2850139066576958e-03 -1 -2 371 + -6.1910818330943584e-03 + + 5.0227212905883789e-01 4.4551658630371094e-01 + -1.6307780146598816e-01 + <_> + + 1 0 372 1.1659320443868637e-03 -1 -2 373 + -2.1016779355704784e-03 + + 3.4809079766273499e-01 3.1531378626823425e-01 + -3.4710261225700378e-01 + <_> + + 0 1 374 -9.1615924611687660e-03 -1 -2 375 + -2.0036540925502777e-02 + + -6.8623197078704834e-01 -6.8991881608963013e-01 + 1.2962220609188080e-01 + <_> + + 1 0 376 2.7148448862135410e-03 -1 -2 377 + 2.2834159899502993e-03 + + 4.7745740413665771e-01 -1.3344570063054562e-02 + -6.1795878410339355e-01 + <_> + 26 + -1.9807859659194946e+00 + + <_> + + 1 0 378 -3.2838471233844757e-02 -1 -2 379 + -7.5696408748626709e-03 + + -5.1984071731567383e-01 6.3690251111984253e-01 + -1.1562170088291168e-01 + <_> + + 1 0 380 5.4125871509313583e-02 -1 -2 381 + 2.7004599571228027e-01 + + 5.0340247154235840e-01 -3.4640678763389587e-01 + 3.7651509046554565e-01 + <_> + + 0 1 382 7.0261410437524319e-03 -1 -2 383 + 3.1245660502463579e-03 + + -4.1046440601348877e-01 -4.1382190585136414e-01 + 3.7550741434097290e-01 + <_> + + 1 0 384 -1.8708549905568361e-03 -1 -2 385 + -1.4969009906053543e-02 + + -3.7827330827713013e-01 3.9941680431365967e-01 + -2.2254510223865509e-01 + <_> + + 1 0 386 3.4136420581489801e-03 -1 -2 387 + 2.3454260081052780e-03 + + -5.4667568206787109e-01 1.6618840396404266e-01 + -6.3203942775726318e-01 + <_> + + 1 0 388 -1.1689099483191967e-03 -1 -2 389 + -7.8206984326243401e-03 + + -4.4972181320190430e-01 -5.7166117429733276e-01 + 1.8599990010261536e-01 + <_> + + 0 1 390 -2.6324259117245674e-02 -1 -2 391 + -9.1647548833861947e-04 + + -7.8041112422943115e-01 2.3100090026855469e-01 + -2.1224120259284973e-01 + <_> + + 0 1 392 -2.3702960461378098e-03 -1 -2 393 + -9.2874821275472641e-03 + + 2.7304211258888245e-01 2.3200799524784088e-01 + -3.4602558612823486e-01 + <_> + + 1 0 394 2.9221060685813427e-03 -1 -2 395 + -1.4097889652475715e-03 + + -6.9972628355026245e-01 4.8019358515739441e-01 + -4.2650200426578522e-02 + <_> + + 1 0 396 9.3326548812910914e-04 -1 -2 397 + -5.6837309151887894e-02 + + 3.7708479166030884e-01 4.6375161409378052e-01 + -2.0441579818725586e-01 + <_> + + 1 0 398 -9.1405760031193495e-05 -1 -2 399 + -1.1147770099341869e-02 + + -2.9447770118713379e-01 3.6579200625419617e-01 + -1.6106230020523071e-01 + <_> + + 1 0 400 8.0759642878547311e-04 -1 -2 401 + 1.7215589759871364e-03 + + -3.8769969344139099e-01 1.7790059745311737e-01 + -5.9673792123794556e-01 + <_> + + 0 1 402 1.4305640012025833e-02 -1 -2 403 + -3.8885008543729782e-02 + + -2.8887918591499329e-01 3.6497229337692261e-01 + -1.3762719929218292e-01 + <_> + + 0 1 404 -3.4479280002415180e-03 -1 -2 405 + 3.0168178677558899e-01 + + 1.8110840022563934e-01 -3.5425490140914917e-01 + 4.2958360910415649e-01 + <_> + + 1 0 406 2.8582389932125807e-03 -1 -2 407 + 1.4091320335865021e-03 + + 5.2957808971405029e-01 -2.1234430372714996e-01 + 3.1428509950637817e-01 + <_> + + 0 1 408 -1.6597079811617732e-03 -1 -2 409 + 8.7804382201284170e-04 + + -6.3348418474197388e-01 -5.5315300822257996e-02 + 3.9389958977699280e-01 + <_> + + 1 0 410 2.0211800001561642e-03 -1 -2 411 + -6.8409871309995651e-03 + + -4.7127309441566467e-01 -6.4065527915954590e-01 + 1.4861440658569336e-01 + <_> + + 1 0 412 4.7200761735439301e-02 -1 -2 413 + 4.9684080295264721e-03 + + 4.1216409206390381e-01 -3.2404300570487976e-01 + 1.5755960345268250e-01 + <_> + + 1 0 414 3.7529911845922470e-02 -1 -2 415 + -1.1665089987218380e-02 + + 4.1328459978103638e-01 2.5467500090599060e-01 + -3.1303560733795166e-01 + <_> + + 1 0 416 -6.8298257247079164e-05 -1 -2 417 + 1.5325429849326611e-02 + + -2.7212071418762207e-01 2.2946609556674957e-01 + -6.7345708608627319e-01 + <_> + + 1 0 418 8.5185896605253220e-03 -1 -2 419 + -2.6828479021787643e-03 + + -7.1114671230316162e-01 1.5511700510978699e-01 + -3.5444891452789307e-01 + <_> + + 1 0 420 1.3791749952360988e-03 -1 -2 421 + -3.3968368370551616e-05 + + 3.6916270852088928e-01 5.9150930494070053e-02 + -4.6007719635963440e-01 + <_> + + 1 0 422 5.8259358629584312e-03 -1 -2 423 + -8.1688696518540382e-03 + + -5.4986697435379028e-01 -5.0567412376403809e-01 + 1.5189670026302338e-01 + <_> + + 0 1 424 -2.3251199163496494e-03 -1 -2 425 + -4.8669208772480488e-03 + + 3.4904810786247253e-01 5.3138560056686401e-01 + -2.1413469314575195e-01 + <_> + + 1 0 426 4.3380381539463997e-03 -1 -2 427 + 3.4176679328083992e-03 + + -7.8248262405395508e-01 1.2460789829492569e-01 + -5.5297750234603882e-01 + <_> + + 1 0 428 5.5309730768203735e-01 -1 -2 429 + 2.3636389523744583e-03 + + 4.6573078632354736e-01 -3.3309051394462585e-01 + 9.4380050897598267e-02 + <_> + 26 + -1.9697020053863525e+00 + + <_> + + 1 0 430 -2.2934280335903168e-02 -1 -2 431 + -4.2665850371122360e-02 + + -4.4716298580169678e-01 5.4085898399353027e-01 + -3.3589279651641846e-01 + <_> + + 0 1 432 -9.8418388515710831e-03 -1 -2 433 + -1.1932349763810635e-02 + + 3.9958000183105469e-01 3.4219118952751160e-01 + -4.2416951060295105e-01 + <_> + + 1 0 434 -2.4437010288238525e-02 -1 -2 435 + -4.9987169913947582e-03 + + -3.7337359786033630e-01 4.0358328819274902e-01 + -3.5199370980262756e-01 + <_> + + 0 1 436 1.8582950579002500e-03 -1 -2 437 + 2.7540219016373158e-03 + + -4.4158118963241577e-01 -2.8722938895225525e-01 + 3.3857241272926331e-01 + <_> + + 1 0 438 -3.4452530089765787e-03 -1 -2 439 + -5.9277489781379700e-03 + + -3.1821981072425842e-01 -6.5073519945144653e-01 + 2.7109220623970032e-01 + <_> + + 1 0 440 -1.2391789641696960e-04 -1 -2 441 + -7.3327139019966125e-02 + + -3.3467200398445129e-01 -5.9646248817443848e-01 + 2.2861810028553009e-01 + <_> + + 1 0 442 -8.3964750170707703e-02 -1 -2 443 + -8.1644707825034857e-04 + + -2.2525189816951752e-01 3.8213649392127991e-01 + -3.3410450816154480e-01 + <_> + + 0 1 444 -1.5207779593765736e-02 -1 -2 445 + 4.6894788742065430e-02 + + 3.0742698907852173e-01 -3.8833889365196228e-01 + 2.3177519440650940e-01 + <_> + + 0 1 446 -1.0398440062999725e-01 -1 -2 447 + 3.9815339259803295e-03 + + 7.1321141719818115e-01 -2.3310199379920959e-01 + 2.9247841238975525e-01 + <_> + + 1 0 448 2.5737080723047256e-03 -1 -2 449 + 9.1035291552543640e-04 + + -5.5017340183258057e-01 -1.8228930234909058e-01 + 2.8370320796966553e-01 + <_> + + 1 0 450 6.4211348071694374e-03 -1 -2 451 + -5.8243819512426853e-03 + + -4.8581978678703308e-01 2.4608190357685089e-01 + -2.1565020084381104e-01 + <_> + + 0 1 452 -4.0043629705905914e-02 -1 -2 453 + 8.4683427121490240e-04 + + -6.3880550861358643e-01 -6.0435589402914047e-02 + 4.3711128830909729e-01 + <_> + + 1 0 454 1.2964580208063126e-02 -1 -2 455 + -2.2524749510921538e-04 + + 5.9495061635971069e-01 8.6831472814083099e-02 + -3.6362320184707642e-01 + <_> + + 0 1 456 -1.7258729785680771e-03 -1 -2 457 + -7.2289421223104000e-03 + + -6.4707720279693604e-01 -6.8775367736816406e-01 + 1.3838720321655273e-01 + <_> + + 1 0 458 2.5079259648919106e-03 -1 -2 459 + -1.9473560387268662e-03 + + 3.0659309029579163e-01 2.2967760264873505e-01 + -3.4737649559974670e-01 + <_> + + 1 0 460 7.4747111648321152e-03 -1 -2 461 + 1.0328400094294921e-04 + + -6.5191787481307983e-01 -2.0725889503955841e-01 + 2.2402130067348480e-01 + <_> + + 0 1 462 -7.8996885567903519e-03 -1 -2 463 + 4.2833909392356873e-03 + + -7.2479170560836792e-01 1.3954970240592957e-01 + -4.3086060881614685e-01 + <_> + + 1 0 464 6.3452741596847773e-04 -1 -2 465 + -5.4966621100902557e-03 + + 2.9792639613151550e-01 -5.6205391883850098e-01 + -2.9608119279146194e-02 + <_> + + 1 0 466 3.1408690847456455e-03 -1 -2 467 + -5.0443639047443867e-03 + + -6.1322140693664551e-01 -5.3060102462768555e-01 + 1.2507459521293640e-01 + <_> + + 1 0 468 4.5964870601892471e-02 -1 -2 469 + -5.3749699145555496e-03 + + 3.8188719749450684e-01 1.4089010655879974e-01 + -3.5535690188407898e-01 + <_> + + 1 0 470 2.9262059833854437e-03 -1 -2 471 + 5.2230368601158261e-04 + + -6.0886657238006592e-01 -7.1441568434238434e-02 + 3.6275258660316467e-01 + <_> + + 0 1 472 -4.4181118719279766e-03 -1 -2 473 + 4.3349149636924267e-03 + + -7.6458007097244263e-01 1.1246410012245178e-01 + -5.4553848505020142e-01 + <_> + + 1 0 474 2.6483018882572651e-03 -1 -2 475 + -1.0814110282808542e-03 + + 2.3542310297489166e-01 1.4422300457954407e-01 + -3.4401959180831909e-01 + <_> + + 1 0 476 -5.4296739108394831e-05 -1 -2 477 + 5.5393581278622150e-03 + + -2.8607460856437683e-01 1.9345289468765259e-01 + -5.0549429655075073e-01 + <_> + + 1 0 478 3.3703099936246872e-02 -1 -2 479 + -1.2178930046502501e-04 + + 3.8302558660507202e-01 6.6414177417755127e-02 + -4.8530051112174988e-01 + <_> + + 0 1 480 -1.7803770024329424e-03 -1 -2 481 + -5.6019638577708974e-05 + + 4.4113549590110779e-01 1.2396749854087830e-01 + -2.6292270421981812e-01 + <_> + 30 + -2.0330519676208496e+00 + + <_> + + 1 0 482 3.1982790678739548e-03 -1 -2 483 + -1.5240450156852603e-03 + + 5.4208421707153320e-01 8.2784838974475861e-02 + -5.0164830684661865e-01 + <_> + + 0 1 484 -1.2284429743885994e-02 -1 -2 485 + -8.3555448800325394e-03 + + 4.4174939393997192e-01 3.5863399505615234e-01 + -3.6254858970642090e-01 + <_> + + 1 0 486 4.1357800364494324e-02 -1 -2 487 + 2.2308749612420797e-03 + + 4.7858810424804688e-01 -6.0390347242355347e-01 + -8.7199418339878321e-04 + <_> + + 1 0 488 -5.4160541296005249e-01 -1 -2 489 + 7.9009458422660828e-03 + + -3.2536658644676208e-01 -3.6415100097656250e-01 + 4.0501600503921509e-01 + <_> + + 1 0 490 -2.7236728928983212e-03 -1 -2 491 + 2.1041880827397108e-03 + + -2.7644181251525879e-01 3.4068119525909424e-01 + -4.1922488808631897e-01 + <_> + + 1 0 492 1.2688159476965666e-03 -1 -2 493 + -4.2881062254309654e-03 + + -5.4520767927169800e-01 3.0060088634490967e-01 + -1.5233190357685089e-01 + <_> + + 1 0 494 -4.8890449106693268e-03 -1 -2 495 + 5.0922110676765442e-03 + + -3.7665820121765137e-01 2.1803319454193115e-01 + -5.7126522064208984e-01 + <_> + + 0 1 496 -7.0944731123745441e-03 -1 -2 497 + 2.5431890040636063e-02 + + 5.1921921968460083e-01 -2.1260249614715576e-01 + 3.0566200613975525e-01 + <_> + + 1 0 498 -6.7461907747201622e-05 -1 -2 499 + -8.5350889712572098e-03 + + -3.3406749367713928e-01 3.5043460130691528e-01 + -9.0384833514690399e-02 + <_> + + 0 1 500 -4.1117807850241661e-03 -1 -2 501 + 6.3964081928133965e-03 + + -6.9683700799942017e-01 1.1542639881372452e-01 + -6.6645371913909912e-01 + <_> + + 1 0 502 9.8322751000523567e-04 -1 -2 503 + -5.5737968068569899e-04 + + 3.5695379972457886e-01 2.3081110417842865e-01 + -2.8862631320953369e-01 + <_> + + 1 0 504 2.8798289131373167e-03 -1 -2 505 + -7.7164517715573311e-03 + + -5.9923267364501953e-01 3.6074900627136230e-01 + -8.1827618181705475e-02 + <_> + + 0 1 506 3.7285129074007273e-03 -1 -2 507 + -1.3161109760403633e-02 + + -3.7732011079788208e-01 6.7023038864135742e-01 + 1.5114549547433853e-02 + <_> + + 1 0 508 -3.8966130465269089e-02 -1 -2 509 + -5.7413699105381966e-03 + + -3.1252211332321167e-01 3.3947479724884033e-01 + -1.6011409461498260e-01 + <_> + + 1 0 510 1.2538330256938934e-01 -1 -2 511 + -9.7243122756481171e-02 + + 7.3721152544021606e-01 5.0288981199264526e-01 + -1.3284370303153992e-01 + <_> + + 0 1 512 -2.0128490868955851e-03 -1 -2 513 + 3.5349070094525814e-03 + + 4.1367891430854797e-01 -1.5923270583152771e-01 + 4.4056579470634460e-01 + <_> + + 1 0 514 4.4846540689468384e-01 -1 -2 515 + -1.0387780144810677e-02 + + 5.9423661231994629e-01 3.0399119853973389e-01 + -1.8287350237369537e-01 + <_> + + 0 1 516 -1.4210389927029610e-03 -1 -2 517 + 3.6446070298552513e-03 + + -4.5361068844795227e-01 1.5766820311546326e-01 + -6.2608838081359863e-01 + <_> + + 1 0 518 3.2253630924969912e-03 -1 -2 519 + 9.8893349058926105e-04 + + -4.1410240530967712e-01 -1.0757800191640854e-01 + 3.1156888604164124e-01 + <_> + + 0 1 520 -2.7107829228043556e-03 -1 -2 521 + -6.9264871999621391e-03 + + -7.5352817773818970e-01 2.7464428544044495e-01 + -1.1728949844837189e-01 + <_> + + 0 1 522 -3.7942770868539810e-02 -1 -2 523 + 1.3486459851264954e-02 + + 2.6936548948287964e-01 -3.1532868742942810e-01 + 2.5785440206527710e-01 + <_> + + 1 0 524 2.7866458985954523e-03 -1 -2 525 + 3.2895719632506371e-03 + + -6.8431657552719116e-01 1.2949100136756897e-01 + -4.4475141167640686e-01 + <_> + + 1 0 526 1.7910100286826491e-03 -1 -2 527 + 3.3694170415401459e-03 + + -5.6237429380416870e-01 -6.1936769634485245e-02 + 3.6794289946556091e-01 + <_> + + 0 1 528 6.5897632157430053e-04 -1 -2 529 + -3.2603838917566463e-05 + + -2.7705720067024231e-01 2.7426779270172119e-01 + -2.2369539737701416e-01 + <_> + + 0 1 530 -6.0175720602273941e-02 -1 -2 531 + -2.1217610687017441e-02 + + -7.4174910783767700e-01 -4.5034751296043396e-01 + 1.1426000297069550e-01 + <_> + + 1 0 532 -2.2632910404354334e-03 -1 -2 533 + 6.0313078574836254e-03 + + -3.0538588762283325e-01 2.0562660694122314e-01 + -4.0689799189567566e-01 + <_> + + 1 0 534 5.7578482665121555e-04 -1 -2 535 + -9.3677162658423185e-04 + + 3.5098749399185181e-01 2.1616159379482269e-01 + -2.4415770173072815e-01 + <_> + + 0 1 536 -3.7626568228006363e-02 -1 -2 537 + 4.4729812070727348e-03 + + -5.9113681316375732e-01 1.5792270004749298e-01 + -3.2226279377937317e-01 + <_> + + 0 1 538 -7.1853301487863064e-03 -1 -2 539 + 4.0520228445529938e-02 + + -5.9519052505493164e-01 -6.6688463091850281e-02 + 3.4030249714851379e-01 + <_> + + 0 1 540 -6.1968388035893440e-03 -1 -2 541 + 1.0311529971659184e-02 + + -6.7287462949752808e-01 1.0683239996433258e-01 + -5.4825967550277710e-01 + <_> + 33 + -1.9516259431838989e+00 + + <_> + + 1 0 542 -1.9320519641041756e-02 -1 -2 543 + -1.5126460231840611e-02 + + -3.8712570071220398e-01 6.4468181133270264e-01 + -1.2727110087871552e-01 + <_> + + 1 0 544 -6.0182690620422363e-02 -1 -2 545 + -1.3576049823313951e-03 + + -3.0819109082221985e-01 4.8021888732910156e-01 + -3.3428680896759033e-01 + <_> + + 1 0 546 -5.6930771097540855e-03 -1 -2 547 + -8.0942036584019661e-03 + + -3.3166080713272095e-01 4.7517481446266174e-01 + -7.4761562049388885e-02 + <_> + + 0 1 548 6.8413332337513566e-04 -1 -2 549 + -1.1520589888095856e-01 + + -3.5741969943046570e-01 2.6105090975761414e-01 + -3.1773808598518372e-01 + <_> + + 0 1 550 -9.1124046593904495e-03 -1 -2 551 + 5.4891068430151790e-05 + + -5.8540707826614380e-01 -2.2981899976730347e-01 + 2.3482909798622131e-01 + <_> + + 0 1 552 -9.5622539520263672e-03 -1 -2 553 + -8.2032606005668640e-03 + + 3.9155280590057373e-01 4.3179950118064880e-01 + -2.3173290491104126e-01 + <_> + + 0 1 554 -4.0035760030150414e-03 -1 -2 555 + 2.5406230706721544e-03 + + -5.8700478076934814e-01 1.7990030348300934e-01 + -4.1681569814682007e-01 + <_> + + 1 0 556 1.9435470458120108e-03 -1 -2 557 + 8.4362342022359371e-04 + + 3.0340009927749634e-01 -3.0661040544509888e-01 + 2.3646999895572662e-01 + <_> + + 0 1 558 -5.3103519603610039e-03 -1 -2 559 + -3.5526719875633717e-03 + + -5.6304818391799927e-01 -5.5695772171020508e-01 + 1.5022790431976318e-01 + <_> + + 1 0 560 7.1414401754736900e-03 -1 -2 561 + -1.1435860069468617e-03 + + -6.7626637220382690e-01 3.7873879075050354e-01 + -7.4442893266677856e-02 + <_> + + 0 1 562 -3.1177429482340813e-03 -1 -2 563 + -7.7415622770786285e-02 + + -6.2568587064743042e-01 3.9839410781860352e-01 + -5.5262319743633270e-02 + <_> + + 0 1 564 -3.9252988994121552e-02 -1 -2 565 + 2.2049970924854279e-02 + + 3.4094831347465515e-01 -2.4413719773292542e-01 + 4.3050870299339294e-01 + <_> + + 0 1 566 -2.2205871064215899e-03 -1 -2 567 + 2.8649640735238791e-03 + + 2.8309720754623413e-01 -3.5401880741119385e-01 + 2.1054570376873016e-01 + <_> + + 0 1 568 5.8806730521610007e-05 -1 -2 569 + -6.6595021635293961e-03 + + -2.7014040946960449e-01 -5.9313482046127319e-01 + 2.1892869472503662e-01 + <_> + + 0 1 570 1.6931600868701935e-02 -1 -2 571 + 4.7026639804244041e-03 + + -1.1279620230197906e-01 4.9212211370468140e-01 + -3.9702880382537842e-01 + <_> + + 0 1 572 1.7478819936513901e-03 -1 -2 573 + -2.0893230102956295e-03 + + -2.2339369356632233e-01 -4.3157818913459778e-01 + 2.5373139977455139e-01 + <_> + + 1 0 574 1.1534850113093853e-02 -1 -2 575 + 8.7350117973983288e-04 + + -7.0668542385101318e-01 -7.2509132325649261e-02 + 3.9975029230117798e-01 + <_> + + 1 0 576 -7.2836421895772219e-04 -1 -2 577 + 1.2666890397667885e-03 + + -2.3567649722099304e-01 2.2582389414310455e-01 + -4.2317348718643188e-01 + <_> + + 1 0 578 -8.4794021677225828e-04 -1 -2 579 + 3.6212441325187683e-01 + + -2.8307029604911804e-01 1.6724239289760590e-01 + -7.6826947927474976e-01 + <_> + + 1 0 580 -1.9437649752944708e-03 -1 -2 581 + -4.1159680113196373e-03 + + -2.7229419350624084e-01 -6.4211308956146240e-01 + 1.8810230493545532e-01 + <_> + + 1 0 582 2.3254039697349072e-03 -1 -2 583 + -1.4815620379522443e-03 + + 2.8516888618469238e-01 4.2574208974838257e-01 + -2.1113610267639160e-01 + <_> + + 1 0 584 -6.6233296820428222e-05 -1 -2 585 + -3.3756431192159653e-02 + + -2.8205850720405579e-01 -8.1803041696548462e-01 + 1.7053669691085815e-01 + <_> + + 0 1 586 -9.4350927975028753e-04 -1 -2 587 + 1.0650219628587365e-03 + + 1.5273140370845795e-01 -4.2650490999221802e-01 + 1.5235939621925354e-01 + <_> + + 0 1 588 -1.2905279872938991e-03 -1 -2 589 + 9.6549028530716896e-03 + + 1.7365390062332153e-01 -3.9721599221229553e-01 + 1.7953179776668549e-01 + <_> + + 1 0 590 1.3434770517051220e-03 -1 -2 591 + 5.5220007197931409e-04 + + -6.9609320163726807e-01 -7.2258770465850830e-02 + 3.4493291378021240e-01 + <_> + + 1 0 592 3.5795350559055805e-03 -1 -2 593 + -1.0585499927401543e-02 + + -4.8070669174194336e-01 -3.2975581288337708e-01 + 1.4686919748783112e-01 + <_> + + 1 0 594 3.5636040847748518e-03 -1 -2 595 + -1.0298290103673935e-01 + + -6.1415022611618042e-01 -7.2366482019424438e-01 + 8.4447070956230164e-02 + <_> + + 0 1 596 -2.9605759307742119e-02 -1 -2 597 + -3.4580599516630173e-02 + + 4.7113609313964844e-01 -4.3128991127014160e-01 + 2.4623470380902290e-02 + <_> + + 1 0 598 4.7923368401825428e-03 -1 -2 599 + 1.7058040248230100e-03 + + -4.6270799636840820e-01 1.4738570153713226e-01 + -3.7818890810012817e-01 + <_> + + 0 1 600 -3.3174119889736176e-03 -1 -2 601 + -1.7022279789671302e-03 + + 2.7929860353469849e-01 2.6326990127563477e-01 + -2.5129210948944092e-01 + <_> + + 1 0 602 -8.1695342669263482e-04 -1 -2 603 + -1.4184829778969288e-03 + + -1.2859649956226349e-01 5.8855402469635010e-01 + -5.0085168331861496e-02 + <_> + + 0 1 604 -1.0478599928319454e-02 -1 -2 605 + 3.1981911510229111e-02 + + 1.4732900261878967e-01 -4.1299548745155334e-01 + 3.4442049264907837e-01 + <_> + + 1 0 606 4.5543849468231201e-02 -1 -2 607 + 2.3574009537696838e-02 + + 4.8842081427574158e-01 -4.6383219957351685e-01 + 3.7443768233060837e-02 + <_> + 29 + -1.7628519535064697e+00 + + <_> + + 1 0 608 -3.2347131520509720e-02 -1 -2 609 + -7.4855431914329529e-02 + + -4.1153168678283691e-01 5.4409480094909668e-01 + -2.1043080091476440e-01 + <_> + + 0 1 610 -5.9164799749851227e-02 -1 -2 611 + -5.0734709948301315e-03 + + 4.6945521235466003e-01 8.0933347344398499e-02 + -4.0436869859695435e-01 + <_> + + 0 1 612 6.6304411739110947e-03 -1 -2 613 + 2.2804280743002892e-02 + + -3.1943950057029724e-01 -3.5277611017227173e-01 + 3.6358159780502319e-01 + <_> + + 1 0 614 3.4148059785366058e-03 -1 -2 615 + -6.0696629807353020e-03 + + -4.2139899730682373e-01 2.8190940618515015e-01 + -2.5727981328964233e-01 + <_> + + 1 0 616 -3.3271780703216791e-03 -1 -2 617 + 1.2381239794194698e-02 + + -3.3380180597305298e-01 2.5831120088696480e-02 + 5.8200639486312866e-01 + <_> + + 0 1 618 -7.8561902046203613e-02 -1 -2 619 + -7.6863910071551800e-03 + + 5.7080817222595215e-01 1.9097380340099335e-01 + -2.4749469757080078e-01 + <_> + + 1 0 620 3.9404830895364285e-03 -1 -2 621 + -7.0624810177832842e-05 + + -3.5295888781547546e-01 2.8438061475753784e-01 + -1.6469420492649078e-01 + <_> + + 0 1 622 -2.2568539716303349e-03 -1 -2 623 + -3.5595949739217758e-03 + + -4.6189218759536743e-01 2.4525940418243408e-01 + -1.8984979391098022e-01 + <_> + + 0 1 624 -3.0113100074231625e-03 -1 -2 625 + -6.2748990021646023e-03 + + 3.0594390630722046e-01 1.4716149866580963e-01 + -3.3265221118927002e-01 + <_> + + 1 0 626 2.5835279375314713e-03 -1 -2 627 + 3.2576550729572773e-03 + + -7.4853891134262085e-01 -1.4949619770050049e-01 + 2.6293671131134033e-01 + <_> + + 1 0 628 -2.6957978843711317e-04 -1 -2 629 + -4.4593680649995804e-03 + + -2.9468360543251038e-01 -4.5905289053916931e-01 + 2.2235380113124847e-01 + <_> + + 1 0 630 2.2841650061309338e-03 -1 -2 631 + -6.7595718428492546e-04 + + -6.3815939426422119e-01 -3.1756940484046936e-01 + 1.4903070032596588e-01 + <_> + + 1 0 632 6.1428439803421497e-03 -1 -2 633 + 2.7392068877816200e-03 + + 2.4187029898166656e-01 -3.1487539410591125e-01 + 2.3589129745960236e-01 + <_> + + 0 1 634 -2.0209311041980982e-03 -1 -2 635 + 2.6892140507698059e-02 + + 2.5389561057090759e-01 -3.4391039609909058e-01 + 2.3010760545730591e-01 + <_> + + 1 0 636 1.4671060256659985e-02 -1 -2 637 + -1.2444119900465012e-02 + + 5.9517538547515869e-01 3.7335929274559021e-01 + -1.4540639519691467e-01 + <_> + + 0 1 638 2.0527220331132412e-03 -1 -2 639 + -1.7088990658521652e-02 + + -2.1135020256042480e-01 -7.2516232728958130e-01 + 2.3358739912509918e-01 + <_> + + 0 1 640 -9.8585523664951324e-03 -1 -2 641 + -1.0541190393269062e-02 + + 4.5390421152114868e-01 3.5500058531761169e-01 + -1.7118500173091888e-01 + <_> + + 1 0 642 4.0034228004515171e-03 -1 -2 643 + -1.1889140121638775e-02 + + -7.0433962345123291e-01 4.0436559915542603e-01 + -4.6263620257377625e-02 + <_> + + 0 1 644 -2.0685700699687004e-02 -1 -2 645 + -7.9243928194046021e-03 + + -6.4347600936889648e-01 -5.3632920980453491e-01 + 1.1002989858388901e-01 + <_> + + 1 0 646 1.2431150535121560e-03 -1 -2 647 + -4.2312019504606724e-03 + + 4.1220021247863770e-01 7.9887658357620239e-02 + -3.0926740169525146e-01 + <_> + + 1 0 648 9.8197339102625847e-03 -1 -2 649 + 4.5455411076545715e-02 + + -6.0976761579513550e-01 1.0621140152215958e-01 + -6.4687371253967285e-01 + <_> + + 1 0 650 2.6892758905887604e-03 -1 -2 651 + -1.5172710409387946e-03 + + -4.9122989177703857e-01 1.7578749358654022e-01 + -2.6818940043449402e-01 + <_> + + 1 0 652 6.2014168361201882e-04 -1 -2 653 + -2.0233519899193197e-04 + + 2.5500729680061340e-01 7.2745857760310173e-03 + -5.0815272331237793e-01 + <_> + + 1 0 654 3.1760020647197962e-03 -1 -2 655 + -1.2668699491769075e-03 + + 4.3849268555641174e-01 1.6349400579929352e-01 + -2.9128161072731018e-01 + <_> + + 1 0 656 5.1056100055575371e-03 -1 -2 657 + -1.5026510227471590e-03 + + -7.5001358985900879e-01 2.7198830246925354e-01 + -9.9486798048019409e-02 + <_> + + 0 1 658 -3.6238620523363352e-03 -1 -2 659 + 7.6577658765017986e-03 + + -6.0396248102188110e-01 1.0938379913568497e-01 + -5.3007638454437256e-01 + <_> + + 0 1 660 -3.1830249354243279e-03 -1 -2 661 + 1.0931329801678658e-02 + + -4.7724890708923340e-01 -4.3065819889307022e-02 + 3.8945859670639038e-01 + <_> + + 0 1 662 -1.0047679534181952e-03 -1 -2 663 + -4.6660430729389191e-02 + + 4.1553598642349243e-01 3.0159878730773926e-01 + -1.6184380650520325e-01 + <_> + + 1 0 664 3.2002381049096584e-03 -1 -2 665 + -1.7367519903928041e-03 + + -5.4621779918670654e-01 -2.1987779438495636e-01 + 1.9606420397758484e-01 + <_> + 33 + -1.8088439702987671e+00 + + <_> + + 0 1 666 1.7160519957542419e-02 -1 -2 667 + 1.4503560028970242e-02 + + -3.2273009419441223e-01 -3.9438620209693909e-01 + 5.7922977209091187e-01 + <_> + + 1 0 668 -9.0323518961668015e-03 -1 -2 669 + -6.9836131297051907e-03 + + -4.1536870598793030e-01 3.5515859723091125e-01 + -3.8177150487899780e-01 + <_> + + 0 1 670 -1.9220909103751183e-02 -1 -2 671 + -4.0087159723043442e-02 + + 4.5315900444984436e-01 1.7228379845619202e-01 + -3.1110560894012451e-01 + <_> + + 0 1 672 5.6549701839685440e-03 -1 -2 673 + -1.1611269786953926e-02 + + -4.0461608767509460e-01 2.9034239053726196e-01 + -2.2078509628772736e-01 + <_> + + 0 1 674 -1.0576159693300724e-03 -1 -2 675 + -1.3360800221562386e-03 + + 3.5851669311523438e-01 1.5968900173902512e-02 + -4.1990101337432861e-01 + <_> + + 1 0 676 5.2302791737020016e-03 -1 -2 677 + -2.7848479803651571e-03 + + -4.9663281440734863e-01 -5.2960211038589478e-01 + 1.5535449981689453e-01 + <_> + + 0 1 678 -2.5654129683971405e-02 -1 -2 679 + -6.8942131474614143e-03 + + -5.9309178590774536e-01 2.4318109452724457e-01 + -1.8231940269470215e-01 + <_> + + 1 0 680 -6.9622750743292272e-05 -1 -2 681 + -6.4154611900448799e-03 + + -3.2716289162635803e-01 -5.0821667909622192e-01 + 1.9543349742889404e-01 + <_> + + 0 1 682 -6.7164386564400047e-05 -1 -2 683 + 2.2416690364480019e-02 + + 1.8602199852466583e-01 -3.9281991124153137e-01 + 1.3279129564762115e-01 + <_> + + 1 0 684 8.4287580102682114e-03 -1 -2 685 + -8.7357551092281938e-04 + + -5.5447560548782349e-01 4.7158730030059814e-01 + -3.8492478430271149e-02 + <_> + + 1 0 686 -4.7496971092186868e-05 -1 -2 687 + 4.5816078782081604e-03 + + -2.5197029113769531e-01 2.0250399410724640e-01 + -6.1638081073760986e-01 + <_> + + 1 0 688 -1.1175150051712990e-02 -1 -2 689 + -7.4238609522581100e-03 + + -2.7771198749542236e-01 -5.0103437900543213e-01 + 1.9318529963493347e-01 + <_> + + 0 1 690 -3.0201480258256197e-03 -1 -2 691 + -3.0343679245561361e-03 + + -6.5904247760772705e-01 3.1962481141090393e-01 + -1.0512910038232803e-01 + <_> + + 0 1 692 -1.0971290059387684e-02 -1 -2 693 + 1.2000739661743864e-04 + + 3.2707008719444275e-01 -4.1679269075393677e-01 + 1.1645200103521347e-01 + <_> + + 1 0 694 2.1552699618041515e-03 -1 -2 695 + 1.5970800304785371e-03 + + 1.5389390289783478e-01 -4.2979270219802856e-01 + 1.9192950427532196e-01 + <_> + + 0 1 696 -4.3590939603745937e-03 -1 -2 697 + -6.5752048976719379e-03 + + -8.6613738536834717e-01 3.5298541188240051e-01 + -7.2624720633029938e-02 + <_> + + 1 0 698 3.5486191045492887e-03 -1 -2 699 + 1.7437560018151999e-03 + + -3.6141040921211243e-01 -4.0250919759273529e-02 + 4.1119590401649475e-01 + <_> + + 1 0 700 6.5892767452169210e-05 -1 -2 701 + 1.2217169627547264e-02 + + 1.5523989498615265e-01 -3.6567229032516479e-01 + 2.5159689784049988e-01 + <_> + + 1 0 702 6.0199309140443802e-02 -1 -2 703 + -9.1684371232986450e-02 + + -6.8959599733352661e-01 -6.6311872005462646e-01 + 9.4827361404895782e-02 + <_> + + 1 0 704 8.9392811059951782e-04 -1 -2 705 + -1.1146500473842025e-03 + + 2.8731009364128113e-01 3.6127060651779175e-01 + -2.4054229259490967e-01 + <_> + + 0 1 706 -1.1042780242860317e-02 -1 -2 707 + 3.7769351154565811e-02 + + -7.1686691045761108e-01 1.1125349998474121e-01 + -5.6320947408676147e-01 + <_> + + 1 0 708 5.5979429744184017e-03 -1 -2 709 + -2.5462140329182148e-03 + + -5.6998908519744873e-01 2.6734578609466553e-01 + -1.0527700185775757e-01 + <_> + + 0 1 710 -1.7929819878190756e-03 -1 -2 711 + -8.9686378487385809e-05 + + 1.7712120711803436e-01 1.6762410104274750e-01 + -4.1336658596992493e-01 + <_> + + 1 0 712 -6.8254990037530661e-04 -1 -2 713 + 4.0599349886178970e-03 + + -3.1327050924301147e-01 2.0312629640102386e-01 + -4.6360948681831360e-01 + <_> + + 1 0 714 1.5843180008232594e-03 -1 -2 715 + -4.6101640909910202e-02 + + 2.6413089036941528e-01 2.4587640166282654e-01 + -3.1151199340820312e-01 + <_> + + 1 0 716 1.5759950038045645e-03 -1 -2 717 + 3.5904631018638611e-02 + + -3.6593970656394958e-01 -1.3352620415389538e-02 + 4.9500739574432373e-01 + <_> + + 1 0 718 1.9230529665946960e-02 -1 -2 719 + 1.3461830094456673e-02 + + 1.8603560328483582e-01 -4.2704311013221741e-01 + 1.4756950736045837e-01 + <_> + + 1 0 720 6.3534970395267010e-03 -1 -2 721 + 4.7998740337789059e-03 + + -5.8824592828750610e-01 1.3966129720211029e-01 + -3.6948320269584656e-01 + <_> + + 0 1 722 -9.7894563805311918e-04 -1 -2 723 + 1.8534340197220445e-03 + + 4.3156591057777405e-01 -1.9053110480308533e-01 + 2.6868799328804016e-01 + <_> + + 1 0 724 5.5962381884455681e-04 -1 -2 725 + -8.1787789240479469e-03 + + -3.0545750260353088e-01 -7.2353351116180420e-01 + 1.6197769343852997e-01 + <_> + + 1 0 726 -6.4591833506710827e-05 -1 -2 727 + -4.2282380163669586e-03 + + -1.6121749579906464e-01 4.2441681027412415e-01 + -1.1488209664821625e-01 + <_> + + 0 1 728 -3.2379399053752422e-03 -1 -2 729 + -4.7763898037374020e-03 + + -8.2811427116394043e-01 3.9157009124755859e-01 + -3.7677429616451263e-02 + <_> + + 0 1 730 -6.1182728968560696e-03 -1 -2 731 + 3.1565790995955467e-03 + + 3.0208829045295715e-01 -1.9045789539813995e-01 + 3.0219689011573792e-01 + + <_> + + <_> + 8 12 3 8 -1. + <_> + 8 16 3 4 2. + <_> + + <_> + 5 11 8 9 -1. + <_> + 7 11 4 9 2. + <_> + + <_> + 8 7 11 12 -1. + <_> + 8 11 11 4 3. + <_> + + <_> + 1 0 7 8 -1. + <_> + 1 4 7 4 2. + <_> + + <_> + 9 7 6 6 -1. + <_> + 7 9 6 2 3. + 1 + <_> + + <_> + 0 0 7 4 -1. + <_> + 0 2 7 2 2. + <_> + + <_> + 16 13 4 4 -1. + <_> + 18 13 2 4 2. + <_> + + <_> + 17 15 2 3 -1. + <_> + 17 15 1 3 2. + 1 + <_> + + <_> + 0 13 6 2 -1. + <_> + 2 13 2 2 3. + <_> + + <_> + 5 0 6 6 -1. + <_> + 7 0 2 6 3. + <_> + + <_> + 5 7 9 12 -1. + <_> + 8 11 3 4 9. + <_> + + <_> + 5 6 4 10 -1. + <_> + 5 6 2 5 2. + <_> + 7 11 2 5 2. + <_> + + <_> + 8 12 11 8 -1. + <_> + 8 16 11 4 2. + <_> + + <_> + 0 0 1 8 -1. + <_> + 0 4 1 4 2. + <_> + + <_> + 0 0 6 6 -1. + <_> + 3 0 3 6 2. + <_> + + <_> + 14 14 6 6 -1. + <_> + 14 17 6 3 2. + <_> + + <_> + 5 13 9 7 -1. + <_> + 8 13 3 7 3. + <_> + + <_> + 6 17 6 3 -1. + <_> + 8 17 2 3 3. + <_> + + <_> + 0 0 4 4 -1. + <_> + 0 2 4 2 2. + <_> + + <_> + 1 0 3 3 -1. + <_> + 2 1 1 1 9. + <_> + + <_> + 3 18 6 2 -1. + <_> + 3 19 6 1 2. + <_> + + <_> + 7 18 4 2 -1. + <_> + 8 18 2 2 2. + <_> + + <_> + 6 10 12 2 -1. + <_> + 6 11 12 1 2. + <_> + + <_> + 15 8 3 1 -1. + <_> + 16 9 1 1 3. + 1 + <_> + + <_> + 5 7 9 12 -1. + <_> + 8 11 3 4 9. + <_> + + <_> + 16 13 1 6 -1. + <_> + 16 16 1 3 2. + <_> + + <_> + 9 7 5 6 -1. + <_> + 7 9 5 2 3. + 1 + <_> + + <_> + 16 12 4 6 -1. + <_> + 18 12 2 6 2. + <_> + + <_> + 0 0 6 8 -1. + <_> + 0 4 6 4 2. + <_> + + <_> + 3 1 15 12 -1. + <_> + 3 5 15 4 3. + <_> + + <_> + 11 12 9 8 -1. + <_> + 11 16 9 4 2. + <_> + + <_> + 0 0 12 9 -1. + <_> + 4 0 4 9 3. + <_> + + <_> + 0 12 6 4 -1. + <_> + 2 12 2 4 3. + <_> + + <_> + 10 18 4 2 -1. + <_> + 11 18 2 2 2. + <_> + + <_> + 5 2 3 3 -1. + <_> + 6 2 1 3 3. + <_> + + <_> + 12 18 3 2 -1. + <_> + 13 18 1 2 3. + <_> + + <_> + 0 0 2 8 -1. + <_> + 1 0 1 8 2. + <_> + + <_> + 5 18 4 2 -1. + <_> + 5 19 4 1 2. + <_> + + <_> + 14 11 6 6 -1. + <_> + 17 11 3 6 2. + <_> + + <_> + 6 12 8 4 -1. + <_> + 8 12 4 4 2. + <_> + + <_> + 12 6 4 9 -1. + <_> + 9 9 4 3 3. + 1 + <_> + + <_> + 11 9 4 7 -1. + <_> + 12 10 2 7 2. + 1 + <_> + + <_> + 5 8 4 8 -1. + <_> + 5 8 2 4 2. + <_> + 7 12 2 4 2. + <_> + + <_> + 8 12 11 8 -1. + <_> + 8 16 11 4 2. + <_> + + <_> + 3 0 14 6 -1. + <_> + 3 3 14 3 2. + <_> + + <_> + 7 1 6 12 -1. + <_> + 7 4 6 6 2. + <_> + + <_> + 0 18 7 2 -1. + <_> + 0 19 7 1 2. + <_> + + <_> + 16 12 4 3 -1. + <_> + 18 12 2 3 2. + <_> + + <_> + 0 0 4 8 -1. + <_> + 2 0 2 8 2. + <_> + + <_> + 3 0 4 1 -1. + <_> + 5 0 2 1 2. + <_> + + <_> + 3 13 2 2 -1. + <_> + 3 13 2 1 2. + 1 + <_> + + <_> + 0 16 19 4 -1. + <_> + 0 18 19 2 2. + <_> + + <_> + 7 13 8 2 -1. + <_> + 11 13 4 2 2. + <_> + + <_> + 8 8 4 1 -1. + <_> + 9 8 2 1 2. + <_> + + <_> + 0 1 1 4 -1. + <_> + 0 3 1 2 2. + <_> + + <_> + 0 0 1 4 -1. + <_> + 0 1 1 2 2. + <_> + + <_> + 15 15 5 2 -1. + <_> + 15 16 5 1 2. + <_> + + <_> + 7 18 3 2 -1. + <_> + 8 18 1 2 3. + <_> + + <_> + 13 7 3 8 -1. + <_> + 11 9 3 4 2. + 1 + <_> + + <_> + 15 12 2 8 -1. + <_> + 15 16 2 4 2. + <_> + + <_> + 2 0 10 6 -1. + <_> + 2 3 10 3 2. + <_> + + <_> + 0 5 18 15 -1. + <_> + 6 10 6 5 9. + <_> + + <_> + 3 11 12 6 -1. + <_> + 7 13 4 2 9. + <_> + + <_> + 16 12 4 7 -1. + <_> + 18 12 2 7 2. + <_> + + <_> + 8 18 4 2 -1. + <_> + 9 18 2 2 2. + <_> + + <_> + 8 17 4 3 -1. + <_> + 9 17 2 3 2. + <_> + + <_> + 0 12 6 6 -1. + <_> + 2 12 2 6 3. + <_> + + <_> + 4 16 4 4 -1. + <_> + 5 16 2 4 2. + <_> + + <_> + 3 0 4 6 -1. + <_> + 4 0 2 6 2. + <_> + + <_> + 1 0 4 7 -1. + <_> + 2 0 2 7 2. + <_> + + <_> + 2 0 8 3 -1. + <_> + 6 0 4 3 2. + <_> + + <_> + 8 3 4 6 -1. + <_> + 9 3 2 6 2. + <_> + + <_> + 10 10 3 2 -1. + <_> + 10 11 3 1 2. + <_> + + <_> + 4 3 7 6 -1. + <_> + 4 6 7 3 2. + <_> + + <_> + 10 18 10 2 -1. + <_> + 15 18 5 2 2. + <_> + + <_> + 9 13 6 1 -1. + <_> + 9 13 3 1 2. + 1 + <_> + + <_> + 10 8 4 6 -1. + <_> + 8 10 4 2 3. + 1 + <_> + + <_> + 14 12 6 8 -1. + <_> + 14 16 6 4 2. + <_> + + <_> + 10 8 6 4 -1. + <_> + 12 10 2 4 3. + 1 + <_> + + <_> + 0 12 6 3 -1. + <_> + 2 12 2 3 3. + <_> + + <_> + 18 11 2 6 -1. + <_> + 19 11 1 6 2. + <_> + + <_> + 0 0 1 10 -1. + <_> + 0 5 1 5 2. + <_> + + <_> + 5 4 8 12 -1. + <_> + 7 4 4 12 2. + <_> + + <_> + 1 3 9 8 -1. + <_> + 4 3 3 8 3. + <_> + + <_> + 0 0 2 2 -1. + <_> + 0 1 2 1 2. + <_> + + <_> + 12 8 6 12 -1. + <_> + 14 12 2 4 9. + <_> + + <_> + 4 2 14 6 -1. + <_> + 4 4 14 2 3. + <_> + + <_> + 3 0 12 8 -1. + <_> + 3 4 12 4 2. + <_> + + <_> + 0 0 17 20 -1. + <_> + 0 5 17 10 2. + <_> + + <_> + 4 0 13 6 -1. + <_> + 4 2 13 2 3. + <_> + + <_> + 2 10 3 6 -1. + <_> + 3 10 1 6 3. + <_> + + <_> + 4 14 6 4 -1. + <_> + 4 14 3 2 2. + <_> + 7 16 3 2 2. + <_> + + <_> + 8 1 6 8 -1. + <_> + 10 1 2 8 3. + <_> + + <_> + 0 1 2 6 -1. + <_> + 1 1 1 6 2. + <_> + + <_> + 8 12 1 3 -1. + <_> + 7 13 1 1 3. + 1 + <_> + + <_> + 5 4 8 4 -1. + <_> + 5 4 8 2 2. + 1 + <_> + + <_> + 0 2 4 5 -1. + <_> + 1 2 2 5 2. + <_> + + <_> + 5 12 3 2 -1. + <_> + 6 12 1 2 3. + <_> + + <_> + 5 13 8 2 -1. + <_> + 7 13 4 2 2. + <_> + + <_> + 11 9 9 8 -1. + <_> + 11 11 9 4 2. + <_> + + <_> + 16 12 4 3 -1. + <_> + 18 12 2 3 2. + <_> + + <_> + 16 14 4 6 -1. + <_> + 16 17 4 3 2. + <_> + + <_> + 0 12 6 3 -1. + <_> + 2 12 2 3 3. + <_> + + <_> + 8 6 7 6 -1. + <_> + 6 8 7 2 3. + 1 + <_> + + <_> + 0 0 1 6 -1. + <_> + 0 3 1 3 2. + <_> + + <_> + 0 2 15 5 -1. + <_> + 5 2 5 5 3. + <_> + + <_> + 8 11 10 3 -1. + <_> + 13 11 5 3 2. + <_> + + <_> + 8 11 2 8 -1. + <_> + 8 15 2 4 2. + <_> + + <_> + 0 1 2 6 -1. + <_> + 1 1 1 6 2. + <_> + + <_> + 0 1 4 4 -1. + <_> + 1 1 2 4 2. + <_> + + <_> + 5 16 3 1 -1. + <_> + 6 17 1 1 3. + 1 + <_> + + <_> + 5 0 7 15 -1. + <_> + 5 5 7 5 3. + <_> + + <_> + 17 0 3 2 -1. + <_> + 18 1 1 2 3. + 1 + <_> + + <_> + 4 18 6 2 -1. + <_> + 6 18 2 2 3. + <_> + + <_> + 7 1 4 5 -1. + <_> + 7 1 2 5 2. + 1 + <_> + + <_> + 14 0 6 8 -1. + <_> + 14 0 3 4 2. + <_> + 17 4 3 4 2. + <_> + + <_> + 5 2 4 18 -1. + <_> + 5 2 2 9 2. + <_> + 7 11 2 9 2. + <_> + + <_> + 7 18 6 2 -1. + <_> + 9 18 2 2 3. + <_> + + <_> + 10 8 2 3 -1. + <_> + 10 9 2 1 3. + <_> + + <_> + 10 10 4 2 -1. + <_> + 10 10 2 1 2. + <_> + 12 11 2 1 2. + <_> + + <_> + 4 2 12 6 -1. + <_> + 4 4 12 2 3. + <_> + + <_> + 5 1 12 8 -1. + <_> + 5 3 12 4 2. + <_> + + <_> + 2 18 4 2 -1. + <_> + 2 19 4 1 2. + <_> + + <_> + 0 18 8 1 -1. + <_> + 4 18 4 1 2. + <_> + + <_> + 4 7 12 12 -1. + <_> + 8 11 4 4 9. + <_> + + <_> + 16 11 4 6 -1. + <_> + 18 11 2 6 2. + <_> + + <_> + 6 13 6 7 -1. + <_> + 8 13 2 7 3. + <_> + + <_> + 0 0 1 8 -1. + <_> + 0 4 1 4 2. + <_> + + <_> + 15 14 5 6 -1. + <_> + 15 17 5 3 2. + <_> + + <_> + 0 7 6 9 -1. + <_> + 2 7 2 9 3. + <_> + + <_> + 15 11 4 1 -1. + <_> + 16 12 2 1 2. + 1 + <_> + + <_> + 11 11 8 2 -1. + <_> + 15 11 4 2 2. + <_> + + <_> + 0 1 12 11 -1. + <_> + 3 1 6 11 2. + <_> + + <_> + 8 8 6 4 -1. + <_> + 7 9 6 2 2. + 1 + <_> + + <_> + 6 17 6 3 -1. + <_> + 8 17 2 3 3. + <_> + + <_> + 0 0 1 4 -1. + <_> + 0 2 1 2 2. + <_> + + <_> + 3 1 1 3 -1. + <_> + 2 2 1 1 3. + 1 + <_> + + <_> + 18 11 2 3 -1. + <_> + 18 12 2 1 3. + <_> + + <_> + 3 12 2 8 -1. + <_> + 3 12 1 4 2. + <_> + 4 16 1 4 2. + <_> + + <_> + 3 12 3 3 -1. + <_> + 4 12 1 3 3. + <_> + + <_> + 11 18 4 2 -1. + <_> + 12 18 2 2 2. + <_> + + <_> + 17 10 3 3 -1. + <_> + 17 11 3 1 3. + <_> + + <_> + 7 14 5 2 -1. + <_> + 7 15 5 1 2. + <_> + + <_> + 6 0 4 5 -1. + <_> + 6 0 2 5 2. + 1 + <_> + + <_> + 6 1 5 8 -1. + <_> + 6 5 5 4 2. + <_> + + <_> + 3 1 9 8 -1. + <_> + 3 5 9 4 2. + <_> + + <_> + 2 14 15 6 -1. + <_> + 7 14 5 6 3. + <_> + + <_> + 12 3 6 5 -1. + <_> + 14 3 2 5 3. + <_> + + <_> + 5 16 2 2 -1. + <_> + 5 16 1 2 2. + 1 + <_> + + <_> + 5 16 2 2 -1. + <_> + 5 16 1 2 2. + 1 + <_> + + <_> + 9 8 6 4 -1. + <_> + 11 10 2 4 3. + 1 + <_> + + <_> + 4 11 3 4 -1. + <_> + 4 13 3 2 2. + <_> + + <_> + 13 8 6 12 -1. + <_> + 15 12 2 4 9. + <_> + + <_> + 0 0 1 10 -1. + <_> + 0 5 1 5 2. + <_> + + <_> + 0 12 6 4 -1. + <_> + 2 12 2 4 3. + <_> + + <_> + 7 5 8 6 -1. + <_> + 5 7 8 2 3. + 1 + <_> + + <_> + 3 1 16 4 -1. + <_> + 3 3 16 2 2. + <_> + + <_> + 6 2 10 9 -1. + <_> + 6 5 10 3 3. + <_> + + <_> + 14 10 6 10 -1. + <_> + 17 10 3 10 2. + <_> + + <_> + 5 17 4 3 -1. + <_> + 6 17 2 3 2. + <_> + + <_> + 5 12 3 2 -1. + <_> + 6 12 1 2 3. + <_> + + <_> + 5 12 3 2 -1. + <_> + 6 12 1 2 3. + <_> + + <_> + 0 0 2 9 -1. + <_> + 1 0 1 9 2. + <_> + + <_> + 2 6 3 2 -1. + <_> + 2 6 3 1 2. + 1 + <_> + + <_> + 7 16 6 3 -1. + <_> + 9 16 2 3 3. + <_> + + <_> + 7 17 6 2 -1. + <_> + 9 17 2 2 3. + <_> + + <_> + 6 3 9 6 -1. + <_> + 4 5 9 2 3. + 1 + <_> + + <_> + 6 15 3 2 -1. + <_> + 7 16 1 2 3. + 1 + <_> + + <_> + 6 2 3 3 -1. + <_> + 7 2 1 3 3. + <_> + + <_> + 2 1 6 4 -1. + <_> + 4 1 2 4 3. + <_> + + <_> + 13 11 4 2 -1. + <_> + 13 11 2 1 2. + <_> + 15 12 2 1 2. + <_> + + <_> + 14 10 2 2 -1. + <_> + 14 10 1 1 2. + <_> + 15 11 1 1 2. + <_> + + <_> + 17 7 3 3 -1. + <_> + 18 8 1 3 3. + 1 + <_> + + <_> + 17 7 3 2 -1. + <_> + 18 8 1 2 3. + 1 + <_> + + <_> + 0 3 1 2 -1. + <_> + 0 4 1 1 2. + <_> + + <_> + 10 1 2 5 -1. + <_> + 11 1 1 5 2. + <_> + + <_> + 1 8 3 12 -1. + <_> + 1 11 3 6 2. + <_> + + <_> + 2 10 8 2 -1. + <_> + 2 10 4 2 2. + 1 + <_> + + <_> + 6 12 3 3 -1. + <_> + 7 13 1 1 9. + <_> + + <_> + 6 11 3 4 -1. + <_> + 7 11 1 4 3. + <_> + + <_> + 5 17 4 2 -1. + <_> + 6 17 2 2 2. + <_> + + <_> + 0 19 20 1 -1. + <_> + 10 19 10 1 2. + <_> + + <_> + 5 11 8 5 -1. + <_> + 7 11 4 5 2. + <_> + + <_> + 10 8 8 9 -1. + <_> + 10 11 8 3 3. + <_> + + <_> + 0 13 6 2 -1. + <_> + 2 13 2 2 3. + <_> + + <_> + 18 14 2 1 -1. + <_> + 18 14 1 1 2. + 1 + <_> + + <_> + 1 2 2 4 -1. + <_> + 2 2 1 4 2. + <_> + + <_> + 5 5 8 5 -1. + <_> + 9 5 4 5 2. + <_> + + <_> + 7 13 5 4 -1. + <_> + 7 15 5 2 2. + <_> + + <_> + 17 18 3 2 -1. + <_> + 17 19 3 1 2. + <_> + + <_> + 0 2 1 2 -1. + <_> + 0 3 1 1 2. + <_> + + <_> + 3 0 1 3 -1. + <_> + 2 1 1 1 3. + 1 + <_> + + <_> + 10 11 3 4 -1. + <_> + 11 11 1 4 3. + <_> + + <_> + 14 11 4 8 -1. + <_> + 16 11 2 8 2. + <_> + + <_> + 2 2 9 6 -1. + <_> + 2 5 9 3 2. + <_> + + <_> + 0 4 17 8 -1. + <_> + 0 6 17 4 2. + <_> + + <_> + 15 17 5 3 -1. + <_> + 15 18 5 1 3. + <_> + + <_> + 2 11 2 8 -1. + <_> + 2 15 2 4 2. + <_> + + <_> + 3 12 3 3 -1. + <_> + 4 12 1 3 3. + <_> + + <_> + 3 12 9 7 -1. + <_> + 6 12 3 7 3. + <_> + + <_> + 13 1 4 7 -1. + <_> + 14 1 2 7 2. + <_> + + <_> + 3 16 2 2 -1. + <_> + 3 16 1 2 2. + 1 + <_> + + <_> + 3 17 2 1 -1. + <_> + 3 17 1 1 2. + 1 + <_> + + <_> + 4 9 6 6 -1. + <_> + 4 9 3 3 2. + <_> + 7 12 3 3 2. + <_> + + <_> + 11 13 3 1 -1. + <_> + 12 13 1 1 3. + <_> + + <_> + 0 0 20 3 -1. + <_> + 5 0 10 3 2. + <_> + + <_> + 0 0 1 2 -1. + <_> + 0 1 1 1 2. + <_> + + <_> + 17 0 3 1 -1. + <_> + 18 1 1 1 3. + 1 + <_> + + <_> + 4 0 8 9 -1. + <_> + 4 3 8 3 3. + <_> + + <_> + 6 0 6 4 -1. + <_> + 6 2 6 2 2. + <_> + + <_> + 18 0 2 1 -1. + <_> + 18 0 1 1 2. + 1 + <_> + + <_> + 14 2 6 1 -1. + <_> + 17 2 3 1 2. + <_> + + <_> + 5 13 8 2 -1. + <_> + 7 13 4 2 2. + <_> + + <_> + 15 12 3 8 -1. + <_> + 15 16 3 4 2. + <_> + + <_> + 5 10 8 3 -1. + <_> + 5 11 8 1 3. + <_> + + <_> + 5 0 11 9 -1. + <_> + 5 3 11 3 3. + <_> + + <_> + 18 14 2 2 -1. + <_> + 19 14 1 2 2. + <_> + + <_> + 1 3 9 8 -1. + <_> + 4 3 3 8 3. + <_> + + <_> + 3 6 2 3 -1. + <_> + 2 7 2 1 3. + 1 + <_> + + <_> + 3 6 2 3 -1. + <_> + 2 7 2 1 3. + 1 + <_> + + <_> + 17 7 1 12 -1. + <_> + 13 11 1 4 3. + 1 + <_> + + <_> + 0 0 1 15 -1. + <_> + 0 5 1 5 3. + <_> + + <_> + 6 9 6 3 -1. + <_> + 6 10 6 1 3. + <_> + + <_> + 3 18 3 2 -1. + <_> + 3 19 3 1 2. + <_> + + <_> + 16 17 4 3 -1. + <_> + 16 18 4 1 3. + <_> + + <_> + 10 17 4 3 -1. + <_> + 11 17 2 3 2. + <_> + + <_> + 13 13 4 3 -1. + <_> + 14 13 2 3 2. + <_> + + <_> + 4 15 3 2 -1. + <_> + 5 16 1 2 3. + 1 + <_> + + <_> + 0 4 2 2 -1. + <_> + 1 4 1 2 2. + <_> + + <_> + 4 0 2 5 -1. + <_> + 5 0 1 5 2. + <_> + + <_> + 1 9 3 8 -1. + <_> + 1 11 3 4 2. + <_> + + <_> + 5 8 1 3 -1. + <_> + 4 9 1 1 3. + 1 + <_> + + <_> + 4 13 2 1 -1. + <_> + 5 13 1 1 2. + <_> + + <_> + 9 11 4 9 -1. + <_> + 11 11 2 9 2. + <_> + + <_> + 0 1 1 2 -1. + <_> + 0 2 1 1 2. + <_> + + <_> + 0 0 1 3 -1. + <_> + 0 1 1 1 3. + <_> + + <_> + 12 11 1 4 -1. + <_> + 12 12 1 2 2. + <_> + + <_> + 16 10 3 3 -1. + <_> + 15 11 3 1 3. + 1 + <_> + + <_> + 18 12 1 6 -1. + <_> + 18 12 1 3 2. + 1 + <_> + + <_> + 4 17 3 2 -1. + <_> + 5 17 1 2 3. + <_> + + <_> + 17 7 3 2 -1. + <_> + 18 8 1 2 3. + 1 + <_> + + <_> + 18 9 2 1 -1. + <_> + 18 9 1 1 2. + 1 + <_> + + <_> + 8 11 4 5 -1. + <_> + 9 12 2 5 2. + 1 + <_> + + <_> + 7 1 2 7 -1. + <_> + 8 1 1 7 2. + <_> + + <_> + 4 4 14 6 -1. + <_> + 4 6 14 2 3. + <_> + + <_> + 2 2 11 6 -1. + <_> + 2 5 11 3 2. + <_> + + <_> + 18 16 2 2 -1. + <_> + 18 17 2 1 2. + <_> + + <_> + 17 11 2 6 -1. + <_> + 18 11 1 6 2. + <_> + + <_> + 17 0 3 3 -1. + <_> + 18 1 1 3 3. + 1 + <_> + + <_> + 18 0 2 6 -1. + <_> + 18 3 2 3 2. + <_> + + <_> + 4 7 6 8 -1. + <_> + 4 7 3 4 2. + <_> + 7 11 3 4 2. + <_> + + <_> + 11 11 4 2 -1. + <_> + 11 11 2 2 2. + 1 + <_> + + <_> + 0 0 6 7 -1. + <_> + 3 0 3 7 2. + <_> + + <_> + 15 10 5 8 -1. + <_> + 15 12 5 4 2. + <_> + + <_> + 2 10 3 8 -1. + <_> + 3 10 1 8 3. + <_> + + <_> + 9 7 6 6 -1. + <_> + 7 9 6 2 3. + 1 + <_> + + <_> + 4 1 6 6 -1. + <_> + 4 4 6 3 2. + <_> + + <_> + 4 0 16 2 -1. + <_> + 4 1 16 1 2. + <_> + + <_> + 14 8 6 6 -1. + <_> + 14 8 3 3 2. + <_> + 17 11 3 3 2. + <_> + + <_> + 4 12 2 8 -1. + <_> + 4 12 1 4 2. + <_> + 5 16 1 4 2. + <_> + + <_> + 0 18 7 2 -1. + <_> + 0 19 7 1 2. + <_> + + <_> + 9 13 1 4 -1. + <_> + 9 15 1 2 2. + <_> + + <_> + 18 10 2 8 -1. + <_> + 19 10 1 8 2. + <_> + + <_> + 6 0 4 8 -1. + <_> + 7 0 2 8 2. + <_> + + <_> + 1 2 6 6 -1. + <_> + 3 2 2 6 3. + <_> + + <_> + 10 10 8 2 -1. + <_> + 10 10 4 1 2. + <_> + 14 11 4 1 2. + <_> + + <_> + 3 9 2 3 -1. + <_> + 2 10 2 1 3. + 1 + <_> + + <_> + 5 1 13 6 -1. + <_> + 5 3 13 2 3. + <_> + + <_> + 4 4 13 6 -1. + <_> + 4 6 13 2 3. + <_> + + <_> + 8 1 4 5 -1. + <_> + 8 1 2 5 2. + 1 + <_> + + <_> + 7 7 2 1 -1. + <_> + 8 7 1 1 2. + <_> + + <_> + 5 5 4 4 -1. + <_> + 6 5 2 4 2. + <_> + + <_> + 14 12 4 2 -1. + <_> + 14 12 2 1 2. + <_> + 16 13 2 1 2. + <_> + + <_> + 13 11 4 2 -1. + <_> + 13 11 2 1 2. + <_> + 15 12 2 1 2. + <_> + + <_> + 16 10 4 3 -1. + <_> + 16 11 4 1 3. + <_> + + <_> + 10 0 4 5 -1. + <_> + 11 0 2 5 2. + <_> + + <_> + 8 11 1 3 -1. + <_> + 7 12 1 1 3. + 1 + <_> + + <_> + 6 12 3 2 -1. + <_> + 7 12 1 2 3. + <_> + + <_> + 17 8 2 3 -1. + <_> + 17 8 1 3 2. + 1 + <_> + + <_> + 11 0 6 5 -1. + <_> + 13 0 2 5 3. + <_> + + <_> + 0 0 3 3 -1. + <_> + 0 1 3 1 3. + <_> + + <_> + 2 0 1 2 -1. + <_> + 2 1 1 1 2. + <_> + + <_> + 13 11 7 2 -1. + <_> + 13 12 7 1 2. + <_> + + <_> + 17 8 3 3 -1. + <_> + 18 9 1 3 3. + 1 + <_> + + <_> + 15 15 1 3 -1. + <_> + 14 16 1 1 3. + 1 + <_> + + <_> + 6 13 6 2 -1. + <_> + 8 13 2 2 3. + <_> + + <_> + 8 10 3 4 -1. + <_> + 9 10 1 4 3. + <_> + + <_> + 7 0 12 19 -1. + <_> + 13 0 6 19 2. + <_> + + <_> + 12 16 8 4 -1. + <_> + 12 18 8 2 2. + <_> + + <_> + 8 5 12 2 -1. + <_> + 14 5 6 2 2. + <_> + + <_> + 10 8 6 4 -1. + <_> + 12 10 2 4 3. + 1 + <_> + + <_> + 4 11 3 4 -1. + <_> + 4 13 3 2 2. + <_> + + <_> + 0 2 12 7 -1. + <_> + 3 2 6 7 2. + <_> + + <_> + 8 0 4 2 -1. + <_> + 8 0 2 2 2. + 1 + <_> + + <_> + 13 11 6 6 -1. + <_> + 15 13 2 2 9. + <_> + + <_> + 7 11 10 4 -1. + <_> + 12 11 5 4 2. + <_> + + <_> + 1 11 4 5 -1. + <_> + 2 11 2 5 2. + <_> + + <_> + 2 14 4 2 -1. + <_> + 3 15 2 2 2. + 1 + <_> + + <_> + 0 0 1 6 -1. + <_> + 0 3 1 3 2. + <_> + + <_> + 6 2 6 6 -1. + <_> + 6 5 6 3 2. + <_> + + <_> + 6 18 4 2 -1. + <_> + 7 18 2 2 2. + <_> + + <_> + 6 18 4 2 -1. + <_> + 7 18 2 2 2. + <_> + + <_> + 4 4 7 4 -1. + <_> + 3 5 7 2 2. + 1 + <_> + + <_> + 5 8 8 12 -1. + <_> + 7 8 4 12 2. + <_> + + <_> + 5 17 2 1 -1. + <_> + 5 17 1 1 2. + 1 + <_> + + <_> + 4 18 2 1 -1. + <_> + 5 18 1 1 2. + <_> + + <_> + 13 16 7 2 -1. + <_> + 13 17 7 1 2. + <_> + + <_> + 7 15 2 3 -1. + <_> + 7 15 1 3 2. + 1 + <_> + + <_> + 9 2 4 5 -1. + <_> + 10 2 2 5 2. + <_> + + <_> + 7 2 4 6 -1. + <_> + 8 2 2 6 2. + <_> + + <_> + 3 12 3 3 -1. + <_> + 4 12 1 3 3. + <_> + + <_> + 5 12 3 3 -1. + <_> + 6 13 1 1 9. + <_> + + <_> + 4 12 3 2 -1. + <_> + 5 12 1 2 3. + <_> + + <_> + 10 13 3 1 -1. + <_> + 11 13 1 1 3. + <_> + + <_> + 11 5 4 3 -1. + <_> + 12 5 2 3 2. + <_> + + <_> + 19 7 1 10 -1. + <_> + 19 12 1 5 2. + <_> + + <_> + 4 8 2 3 -1. + <_> + 3 9 2 1 3. + 1 + <_> + + <_> + 7 0 6 5 -1. + <_> + 9 0 2 5 3. + <_> + + <_> + 5 0 6 2 -1. + <_> + 5 0 3 2 2. + 1 + <_> + + <_> + 5 0 13 9 -1. + <_> + 5 3 13 3 3. + <_> + + <_> + 0 6 1 2 -1. + <_> + 0 7 1 1 2. + <_> + + <_> + 1 0 16 6 -1. + <_> + 1 2 16 2 3. + <_> + + <_> + 18 0 2 4 -1. + <_> + 18 0 1 4 2. + 1 + <_> + + <_> + 4 13 2 2 -1. + <_> + 4 13 1 1 2. + <_> + 5 14 1 1 2. + <_> + + <_> + 0 3 4 1 -1. + <_> + 2 3 2 1 2. + <_> + + <_> + 3 0 8 12 -1. + <_> + 3 6 8 6 2. + <_> + + <_> + 12 13 4 1 -1. + <_> + 13 13 2 1 2. + <_> + + <_> + 12 12 2 2 -1. + <_> + 12 12 1 1 2. + <_> + 13 13 1 1 2. + <_> + + <_> + 5 16 3 1 -1. + <_> + 6 17 1 1 3. + 1 + <_> + + <_> + 3 13 8 4 -1. + <_> + 3 13 4 2 2. + <_> + 7 15 4 2 2. + <_> + + <_> + 0 8 18 3 -1. + <_> + 6 9 6 1 9. + <_> + + <_> + 8 4 6 5 -1. + <_> + 11 4 3 5 2. + <_> + + <_> + 5 14 9 1 -1. + <_> + 8 14 3 1 3. + <_> + + <_> + 4 0 4 4 -1. + <_> + 4 0 2 4 2. + 1 + <_> + + <_> + 7 9 12 8 -1. + <_> + 7 11 12 4 2. + <_> + + <_> + 18 15 2 1 -1. + <_> + 18 15 1 1 2. + 1 + <_> + + <_> + 3 13 2 4 -1. + <_> + 3 13 1 2 2. + <_> + 4 15 1 2 2. + <_> + + <_> + 4 7 3 3 -1. + <_> + 3 8 3 1 3. + 1 + <_> + + <_> + 0 1 2 7 -1. + <_> + 1 1 1 7 2. + <_> + + <_> + 4 0 3 9 -1. + <_> + 5 0 1 9 3. + <_> + + <_> + 15 10 3 3 -1. + <_> + 14 11 3 1 3. + 1 + <_> + + <_> + 12 11 2 2 -1. + <_> + 12 11 1 1 2. + <_> + 13 12 1 1 2. + <_> + + <_> + 0 0 1 4 -1. + <_> + 0 2 1 2 2. + <_> + + <_> + 12 18 8 2 -1. + <_> + 12 19 8 1 2. + <_> + + <_> + 17 9 2 2 -1. + <_> + 17 9 1 2 2. + 1 + <_> + + <_> + 16 10 4 2 -1. + <_> + 17 11 2 2 2. + 1 + <_> + + <_> + 7 13 10 1 -1. + <_> + 12 13 5 1 2. + <_> + + <_> + 7 7 4 3 -1. + <_> + 9 7 2 3 2. + <_> + + <_> + 9 18 6 2 -1. + <_> + 11 18 2 2 3. + <_> + + <_> + 8 18 6 2 -1. + <_> + 10 18 2 2 3. + <_> + + <_> + 17 9 3 1 -1. + <_> + 18 10 1 1 3. + 1 + <_> + + <_> + 17 7 2 11 -1. + <_> + 18 7 1 11 2. + <_> + + <_> + 8 2 4 4 -1. + <_> + 8 2 2 4 2. + 1 + <_> + + <_> + 6 6 2 3 -1. + <_> + 7 6 1 3 2. + <_> + + <_> + 7 0 9 5 -1. + <_> + 10 3 3 5 3. + 1 + <_> + + <_> + 1 0 15 9 -1. + <_> + 6 3 5 3 9. + <_> + + <_> + 2 12 4 3 -1. + <_> + 3 12 2 3 2. + <_> + + <_> + 0 12 4 5 -1. + <_> + 1 12 2 5 2. + <_> + + <_> + 3 2 2 3 -1. + <_> + 2 3 2 1 3. + 1 + <_> + + <_> + 4 13 6 1 -1. + <_> + 4 13 3 1 2. + 1 + <_> + + <_> + 5 0 4 6 -1. + <_> + 6 0 2 6 2. + <_> + + <_> + 2 17 2 1 -1. + <_> + 2 17 1 1 2. + 1 + <_> + + <_> + 4 9 1 3 -1. + <_> + 3 10 1 1 3. + 1 + <_> + + <_> + 0 2 6 9 -1. + <_> + 2 2 2 9 3. + <_> + + <_> + 16 7 2 2 -1. + <_> + 16 7 1 2 2. + 1 + <_> + + <_> + 7 2 6 4 -1. + <_> + 9 2 2 4 3. + <_> + + <_> + 7 18 6 2 -1. + <_> + 9 18 2 2 3. + <_> + + <_> + 1 14 6 4 -1. + <_> + 3 14 2 4 3. + <_> + + <_> + 6 8 7 3 -1. + <_> + 5 9 7 1 3. + 1 + <_> + + <_> + 14 12 4 1 -1. + <_> + 15 13 2 1 2. + 1 + <_> + + <_> + 4 12 3 2 -1. + <_> + 5 12 1 2 3. + <_> + + <_> + 5 12 3 3 -1. + <_> + 6 12 1 3 3. + <_> + + <_> + 18 2 2 2 -1. + <_> + 19 2 1 2 2. + <_> + + <_> + 14 0 6 1 -1. + <_> + 17 0 3 1 2. + <_> + + <_> + 17 0 3 3 -1. + <_> + 18 1 1 3 3. + 1 + <_> + + <_> + 11 4 6 8 -1. + <_> + 13 4 2 8 3. + <_> + + <_> + 7 12 3 2 -1. + <_> + 8 12 1 2 3. + <_> + + <_> + 16 0 3 2 -1. + <_> + 16 1 3 1 2. + <_> + + <_> + 5 11 9 4 -1. + <_> + 8 11 3 4 3. + <_> + + <_> + 12 9 1 6 -1. + <_> + 12 11 1 2 3. + <_> + + <_> + 4 0 4 4 -1. + <_> + 4 0 2 4 2. + 1 + <_> + + <_> + 5 1 11 12 -1. + <_> + 5 5 11 4 3. + <_> + + <_> + 16 12 4 8 -1. + <_> + 18 12 2 8 2. + <_> + + <_> + 18 14 2 6 -1. + <_> + 18 17 2 3 2. + <_> + + <_> + 1 12 4 4 -1. + <_> + 2 12 2 4 2. + <_> + + <_> + 6 7 6 4 -1. + <_> + 5 8 6 2 2. + 1 + <_> + + <_> + 5 15 3 2 -1. + <_> + 6 16 1 2 3. + 1 + <_> + + <_> + 6 16 3 1 -1. + <_> + 7 17 1 1 3. + 1 + <_> + + <_> + 10 14 1 2 -1. + <_> + 10 14 1 1 2. + 1 + <_> + + <_> + 4 7 3 3 -1. + <_> + 3 8 3 1 3. + 1 + <_> + + <_> + 2 0 6 8 -1. + <_> + 4 0 2 8 3. + <_> + + <_> + 2 5 6 3 -1. + <_> + 4 5 2 3 3. + <_> + + <_> + 3 11 3 6 -1. + <_> + 4 11 1 6 3. + <_> + + <_> + 15 11 2 3 -1. + <_> + 14 12 2 1 3. + 1 + <_> + + <_> + 11 17 4 3 -1. + <_> + 12 17 2 3 2. + <_> + + <_> + 13 11 2 2 -1. + <_> + 13 11 1 1 2. + <_> + 14 12 1 1 2. + <_> + + <_> + 13 11 2 2 -1. + <_> + 13 11 1 1 2. + <_> + 14 12 1 1 2. + <_> + + <_> + 8 2 5 6 -1. + <_> + 8 5 5 3 2. + <_> + + <_> + 0 0 1 2 -1. + <_> + 0 1 1 1 2. + <_> + + <_> + 0 8 10 4 -1. + <_> + 0 10 10 2 2. + <_> + + <_> + 17 11 3 1 -1. + <_> + 18 12 1 1 3. + 1 + <_> + + <_> + 7 18 2 2 -1. + <_> + 8 18 1 2 2. + <_> + + <_> + 0 6 18 4 -1. + <_> + 9 6 9 4 2. + <_> + + <_> + 2 12 12 8 -1. + <_> + 6 12 4 8 3. + <_> + + <_> + 1 0 14 1 -1. + <_> + 8 0 7 1 2. + <_> + + <_> + 8 0 12 19 -1. + <_> + 14 0 6 19 2. + <_> + + <_> + 7 12 3 2 -1. + <_> + 8 12 1 2 3. + <_> + + <_> + 8 11 3 5 -1. + <_> + 9 11 1 5 3. + <_> + + <_> + 7 18 3 2 -1. + <_> + 8 18 1 2 3. + <_> + + <_> + 5 13 2 2 -1. + <_> + 5 13 1 1 2. + <_> + 6 14 1 1 2. + <_> + + <_> + 16 9 3 1 -1. + <_> + 17 10 1 1 3. + 1 + <_> + + <_> + 18 0 2 3 -1. + <_> + 18 0 1 3 2. + 1 + <_> + + <_> + 4 2 15 6 -1. + <_> + 4 4 15 2 3. + <_> + + <_> + 10 0 10 4 -1. + <_> + 10 0 5 2 2. + <_> + 15 2 5 2 2. + <_> + + <_> + 5 0 12 6 -1. + <_> + 5 2 12 2 3. + <_> + + <_> + 12 1 8 6 -1. + <_> + 12 1 4 3 2. + <_> + 16 4 4 3 2. + <_> + + <_> + 0 3 2 1 -1. + <_> + 1 3 1 1 2. + <_> + + <_> + 16 7 2 4 -1. + <_> + 16 7 1 4 2. + 1 + <_> + + <_> + 15 17 5 3 -1. + <_> + 15 18 5 1 3. + <_> + + <_> + 6 12 6 8 -1. + <_> + 8 12 2 8 3. + <_> + + <_> + 5 12 2 2 -1. + <_> + 6 12 1 2 2. + <_> + + <_> + 13 12 4 6 -1. + <_> + 14 12 2 6 2. + <_> + + <_> + 17 0 3 4 -1. + <_> + 18 1 1 4 3. + 1 + <_> + + <_> + 4 0 4 10 -1. + <_> + 5 0 2 10 2. + <_> + + <_> + 5 12 3 3 -1. + <_> + 6 12 1 3 3. + <_> + + <_> + 11 12 3 3 -1. + <_> + 12 12 1 3 3. + <_> + + <_> + 3 2 1 3 -1. + <_> + 2 3 1 1 3. + 1 + <_> + + <_> + 2 1 8 1 -1. + <_> + 4 1 4 1 2. + <_> + + <_> + 0 3 18 12 -1. + <_> + 6 7 6 4 9. + <_> + + <_> + 12 18 6 2 -1. + <_> + 15 18 3 2 2. + <_> + + <_> + 11 9 4 7 -1. + <_> + 12 10 2 7 2. + 1 + <_> + + <_> + 15 8 3 12 -1. + <_> + 16 12 1 4 9. + <_> + + <_> + 6 10 7 3 -1. + <_> + 6 11 7 1 3. + <_> + + <_> + 4 9 10 3 -1. + <_> + 4 10 10 1 3. + <_> + + <_> + 0 1 15 7 -1. + <_> + 5 1 5 7 3. + <_> + + <_> + 0 0 1 18 -1. + <_> + 0 6 1 6 3. + <_> + + <_> + 9 13 2 4 -1. + <_> + 8 14 2 2 2. + 1 + <_> + + <_> + 16 16 4 4 -1. + <_> + 16 18 4 2 2. + <_> + + <_> + 1 10 4 8 -1. + <_> + 2 10 2 8 2. + <_> + + <_> + 2 15 3 2 -1. + <_> + 3 16 1 2 3. + 1 + <_> + + <_> + 2 17 2 1 -1. + <_> + 2 17 1 1 2. + 1 + <_> + + <_> + 18 10 2 8 -1. + <_> + 18 10 2 4 2. + 1 + <_> + + <_> + 0 11 18 3 -1. + <_> + 6 12 6 1 9. + <_> + + <_> + 15 10 4 2 -1. + <_> + 16 11 2 2 2. + 1 + <_> + + <_> + 9 1 5 4 -1. + <_> + 9 3 5 2 2. + <_> + + <_> + 6 1 7 6 -1. + <_> + 6 4 7 3 2. + <_> + + <_> + 3 3 8 6 -1. + <_> + 3 6 8 3 2. + <_> + + <_> + 16 1 4 2 -1. + <_> + 18 1 2 2 2. + <_> + + <_> + 18 12 2 3 -1. + <_> + 18 13 2 1 3. + <_> + + <_> + 17 6 2 8 -1. + <_> + 17 6 1 4 2. + <_> + 18 10 1 4 2. + <_> + + <_> + 17 5 3 4 -1. + <_> + 18 6 1 4 3. + 1 + <_> + + <_> + 0 9 4 8 -1. + <_> + 0 11 4 4 2. + <_> + + <_> + 0 6 3 8 -1. + <_> + 0 10 3 4 2. + <_> + + <_> + 14 11 2 2 -1. + <_> + 14 11 1 1 2. + <_> + 15 12 1 1 2. + <_> + + <_> + 15 11 3 3 -1. + <_> + 14 12 3 1 3. + 1 + <_> + + <_> + 14 12 5 2 -1. + <_> + 14 13 5 1 2. + <_> + + <_> + 19 12 1 2 -1. + <_> + 19 13 1 1 2. + <_> + + <_> + 6 0 4 7 -1. + <_> + 7 0 2 7 2. + <_> + + <_> + 12 12 3 2 -1. + <_> + 12 13 3 1 2. + <_> + + <_> + 12 13 4 2 -1. + <_> + 12 13 2 1 2. + <_> + 14 14 2 1 2. + <_> + + <_> + 16 18 4 2 -1. + <_> + 16 19 4 1 2. + <_> + + <_> + 14 18 1 2 -1. + <_> + 14 19 1 1 2. + <_> + + <_> + 16 0 3 2 -1. + <_> + 17 1 1 2 3. + 1 + <_> + + <_> + 16 0 4 2 -1. + <_> + 17 1 2 2 2. + 1 + <_> + + <_> + 12 13 2 2 -1. + <_> + 12 13 1 1 2. + <_> + 13 14 1 1 2. + <_> + + <_> + 7 10 4 2 -1. + <_> + 7 10 2 2 2. + 1 + <_> + + <_> + 3 3 1 3 -1. + <_> + 2 4 1 1 3. + 1 + <_> + + <_> + 3 4 2 3 -1. + <_> + 2 5 2 1 3. + 1 + <_> + + <_> + 3 0 16 6 -1. + <_> + 3 2 16 2 3. + <_> + + <_> + 12 2 2 5 -1. + <_> + 12 2 1 5 2. + 1 + <_> + + <_> + 4 0 1 3 -1. + <_> + 3 1 1 1 3. + 1 + <_> + + <_> + 13 12 2 2 -1. + <_> + 13 12 1 1 2. + <_> + 14 13 1 1 2. + <_> + + <_> + 5 17 4 3 -1. + <_> + 6 17 2 3 2. + <_> + + <_> + 17 13 3 3 -1. + <_> + 17 14 3 1 3. + <_> + + <_> + 0 12 2 8 -1. + <_> + 0 12 1 4 2. + <_> + 1 16 1 4 2. + <_> + + <_> + 4 16 1 3 -1. + <_> + 3 17 1 1 3. + 1 + <_> + + <_> + 0 2 1 2 -1. + <_> + 0 3 1 1 2. + <_> + + <_> + 10 2 4 7 -1. + <_> + 11 2 2 7 2. + <_> + + <_> + 2 1 6 9 -1. + <_> + 2 4 6 3 3. + <_> + + <_> + 1 4 2 2 -1. + <_> + 2 4 1 2 2. + <_> + + <_> + 13 12 2 2 -1. + <_> + 13 12 1 1 2. + <_> + 14 13 1 1 2. + <_> + + <_> + 18 0 2 1 -1. + <_> + 19 0 1 1 2. + <_> + + <_> + 4 13 3 1 -1. + <_> + 5 13 1 1 3. + <_> + + <_> + 6 13 4 1 -1. + <_> + 7 13 2 1 2. + <_> + + <_> + 6 10 6 3 -1. + <_> + 6 11 6 1 3. + <_> + + <_> + 7 9 4 3 -1. + <_> + 7 10 4 1 3. + <_> + + <_> + 6 0 4 3 -1. + <_> + 6 0 2 3 2. + 1 + <_> + + <_> + 15 15 5 2 -1. + <_> + 15 16 5 1 2. + <_> + + <_> + 0 8 18 12 -1. + <_> + 6 12 6 4 9. + <_> + + <_> + 1 6 14 4 -1. + <_> + 8 6 7 4 2. + <_> + + <_> + 3 11 6 3 -1. + <_> + 2 12 6 1 3. + 1 + <_> + + <_> + 5 9 1 3 -1. + <_> + 4 10 1 1 3. + 1 + <_> + + <_> + 17 10 3 3 -1. + <_> + 18 11 1 3 3. + 1 + <_> + + <_> + 17 11 1 4 -1. + <_> + 16 12 1 2 2. + 1 + <_> + + <_> + 1 0 12 9 -1. + <_> + 4 0 6 9 2. + <_> + + <_> + 9 3 4 5 -1. + <_> + 10 3 2 5 2. + <_> + + <_> + 7 8 6 3 -1. + <_> + 7 9 6 1 3. + <_> + + <_> + 7 1 9 6 -1. + <_> + 7 3 9 2 3. + <_> + + <_> + 0 1 2 2 -1. + <_> + 0 2 2 1 2. + <_> + + <_> + 13 8 3 5 -1. + <_> + 14 9 1 5 3. + 1 + <_> + + <_> + 3 16 3 1 -1. + <_> + 4 17 1 1 3. + 1 + <_> + + <_> + 11 1 4 7 -1. + <_> + 12 1 2 7 2. + <_> + + <_> + 11 13 2 2 -1. + <_> + 11 13 1 1 2. + <_> + 12 14 1 1 2. + <_> + + <_> + 12 14 3 1 -1. + <_> + 13 14 1 1 3. + <_> + + <_> + 17 2 3 1 -1. + <_> + 18 3 1 1 3. + 1 + <_> + + <_> + 14 2 6 6 -1. + <_> + 14 2 3 3 2. + <_> + 17 5 3 3 2. + <_> + + <_> + 12 16 8 4 -1. + <_> + 12 18 8 2 2. + <_> + + <_> + 7 11 3 3 -1. + <_> + 6 12 3 1 3. + 1 + <_> + + <_> + 6 3 8 6 -1. + <_> + 4 5 8 2 3. + 1 + <_> + + <_> + 1 8 3 8 -1. + <_> + 1 10 3 4 2. + <_> + + <_> + 7 0 8 6 -1. + <_> + 9 2 4 6 2. + 1 + <_> + + <_> + 5 2 7 6 -1. + <_> + 5 5 7 3 2. + <_> + + <_> + 10 13 3 1 -1. + <_> + 11 13 1 1 3. + <_> + + <_> + 12 12 4 2 -1. + <_> + 12 12 2 1 2. + <_> + 14 13 2 1 2. + <_> + + <_> + 6 1 14 19 -1. + <_> + 13 1 7 19 2. + <_> + + <_> + 6 9 14 1 -1. + <_> + 13 9 7 1 2. + <_> + + <_> + 18 0 2 1 -1. + <_> + 18 0 1 1 2. + 1 + <_> + + <_> + 15 0 3 1 -1. + <_> + 16 1 1 1 3. + 1 + <_> + + <_> + 5 7 2 3 -1. + <_> + 4 8 2 1 3. + 1 + <_> + + <_> + 15 12 3 3 -1. + <_> + 14 13 3 1 3. + 1 + <_> + + <_> + 10 17 4 2 -1. + <_> + 11 17 2 2 2. + <_> + + <_> + 8 12 3 3 -1. + <_> + 9 13 1 1 9. + <_> + + <_> + 4 1 7 6 -1. + <_> + 4 3 7 2 3. + <_> + + <_> + 11 0 6 6 -1. + <_> + 11 2 6 2 3. + <_> + + <_> + 0 1 1 4 -1. + <_> + 0 2 1 2 2. + <_> + + <_> + 7 5 4 4 -1. + <_> + 8 5 2 4 2. + <_> + + <_> + 1 0 1 3 -1. + <_> + 1 1 1 1 3. + <_> + + <_> + 9 3 4 2 -1. + <_> + 9 4 4 1 2. + <_> + + <_> + 18 13 2 5 -1. + <_> + 19 13 1 5 2. + <_> + + <_> + 2 11 3 6 -1. + <_> + 3 11 1 6 3. + <_> + + <_> + 0 5 2 12 -1. + <_> + 0 9 2 4 3. + <_> + + <_> + 11 10 8 5 -1. + <_> + 15 10 4 5 2. + <_> + + <_> + 15 11 4 2 -1. + <_> + 16 12 2 2 2. + 1 + <_> + + <_> + 15 8 4 2 -1. + <_> + 16 9 2 2 2. + 1 + <_> + + <_> + 5 13 2 1 -1. + <_> + 6 13 1 1 2. + <_> + + <_> + 12 13 2 2 -1. + <_> + 13 13 1 2 2. + <_> + + <_> + 11 12 8 8 -1. + <_> + 13 12 4 8 2. + <_> + + <_> + 3 0 6 10 -1. + <_> + 5 0 2 10 3. + <_> + + <_> + 6 14 2 2 -1. + <_> + 6 14 1 2 2. + 1 + <_> + + <_> + 0 5 19 4 -1. + <_> + 0 7 19 2 2. + <_> + + <_> + 17 4 3 2 -1. + <_> + 18 5 1 2 3. + 1 + <_> + + <_> + 17 3 3 4 -1. + <_> + 18 4 1 4 3. + 1 + <_> + + <_> + 5 13 8 2 -1. + <_> + 7 13 4 2 2. + <_> + + <_> + 0 0 2 8 -1. + <_> + 0 4 2 4 2. + <_> + + <_> + 0 9 15 6 -1. + <_> + 0 11 15 2 3. + <_> + + <_> + 18 14 2 1 -1. + <_> + 18 14 1 1 2. + 1 + <_> + + <_> + 0 0 4 8 -1. + <_> + 2 0 2 8 2. + <_> + + <_> + 0 13 6 2 -1. + <_> + 2 13 2 2 3. + <_> + + <_> + 3 18 3 2 -1. + <_> + 3 19 3 1 2. + <_> + + <_> + 2 11 15 6 -1. + <_> + 7 13 5 2 9. + <_> + + <_> + 7 14 3 3 -1. + <_> + 8 15 1 3 3. + 1 + <_> + + <_> + 7 8 2 2 -1. + <_> + 8 8 1 2 2. + <_> + + <_> + 6 9 6 3 -1. + <_> + 6 10 6 1 3. + <_> + + <_> + 5 8 7 3 -1. + <_> + 5 9 7 1 3. + <_> + + <_> + 17 9 3 1 -1. + <_> + 18 10 1 1 3. + 1 + <_> + + <_> + 17 9 3 2 -1. + <_> + 18 10 1 2 3. + 1 + <_> + + <_> + 11 9 1 3 -1. + <_> + 11 10 1 1 3. + <_> + + <_> + 12 11 2 2 -1. + <_> + 12 11 1 1 2. + <_> + 13 12 1 1 2. + <_> + + <_> + 3 6 4 5 -1. + <_> + 4 6 2 5 2. + <_> + + <_> + 5 6 4 3 -1. + <_> + 6 6 2 3 2. + <_> + + <_> + 0 3 1 6 -1. + <_> + 0 5 1 2 3. + <_> + + <_> + 14 12 2 2 -1. + <_> + 14 12 1 1 2. + <_> + 15 13 1 1 2. + <_> + + <_> + 3 16 3 3 -1. + <_> + 4 16 1 3 3. + <_> + + <_> + 3 1 14 4 -1. + <_> + 3 3 14 2 2. + <_> + + <_> + 6 0 14 8 -1. + <_> + 6 0 7 4 2. + <_> + 13 4 7 4 2. + <_> + + <_> + 4 0 4 8 -1. + <_> + 4 2 4 4 2. + <_> + + <_> + 9 0 8 1 -1. + <_> + 13 0 4 1 2. + <_> + + <_> + 14 1 6 1 -1. + <_> + 17 1 3 1 2. + <_> + + <_> + 18 18 2 2 -1. + <_> + 18 19 2 1 2. + <_> + + <_> + 5 16 2 2 -1. + <_> + 5 16 1 2 2. + 1 + <_> + + <_> + 2 8 11 3 -1. + <_> + 2 9 11 1 3. + <_> + + <_> + 1 8 2 3 -1. + <_> + 1 9 2 1 3. + <_> + + <_> + 18 12 2 5 -1. + <_> + 19 12 1 5 2. + <_> + + <_> + 19 16 1 3 -1. + <_> + 18 17 1 1 3. + 1 + <_> + + <_> + 14 9 2 2 -1. + <_> + 14 9 1 2 2. + 1 + <_> + + <_> + 13 11 2 2 -1. + <_> + 13 11 1 1 2. + <_> + 14 12 1 1 2. + <_> + + <_> + 13 12 4 4 -1. + <_> + 14 12 2 4 2. + <_> + + <_> + 19 11 1 3 -1. + <_> + 19 12 1 1 3. + <_> + + <_> + 0 1 1 4 -1. + <_> + 0 3 1 2 2. + <_> + + <_> + 0 0 20 20 -1. + <_> + 0 0 10 10 2. + <_> + 10 10 10 10 2. + <_> + + <_> + 11 12 3 3 -1. + <_> + 10 13 3 1 3. + 1 + <_> + + <_> + 16 17 1 2 -1. + <_> + 16 17 1 1 2. + 1 + <_> + + <_> + 13 10 4 2 -1. + <_> + 13 10 2 1 2. + <_> + 15 11 2 1 2. + <_> + + <_> + 15 11 2 2 -1. + <_> + 15 11 1 1 2. + <_> + 16 12 1 1 2. + <_> + + <_> + 2 10 3 6 -1. + <_> + 3 10 1 6 3. + <_> + + <_> + 0 0 6 9 -1. + <_> + 2 0 2 9 3. + <_> + + <_> + 8 17 2 1 -1. + <_> + 8 17 1 1 2. + 1 + <_> + + <_> + 4 18 8 1 -1. + <_> + 8 18 4 1 2. + <_> + + <_> + 4 11 1 4 -1. + <_> + 3 12 1 2 2. + 1 + <_> + + <_> + 7 11 3 3 -1. + <_> + 6 12 3 1 3. + 1 + <_> + + <_> + 9 18 4 1 -1. + <_> + 10 18 2 1 2. + <_> + + <_> + 0 19 2 1 -1. + <_> + 1 19 1 1 2. + <_> + + <_> + 11 6 3 5 -1. + <_> + 12 6 1 5 3. + <_> + + <_> + 8 0 12 20 -1. + <_> + 8 0 6 10 2. + <_> + 14 10 6 10 2. + <_> + + <_> + 4 0 1 4 -1. + <_> + 3 1 1 2 2. + 1 + <_> + + <_> + 4 14 16 4 -1. + <_> + 8 14 8 4 2. + <_> + + <_> + 7 9 5 4 -1. + <_> + 6 10 5 2 2. + 1 + <_> + + <_> + 5 12 6 2 -1. + <_> + 5 12 3 2 2. + 1 + <_> + + <_> + 1 14 4 1 -1. + <_> + 1 14 2 1 2. + 1 + <_> + + <_> + 4 10 1 3 -1. + <_> + 3 11 1 1 3. + 1 + <_> + + <_> + 3 10 3 9 -1. + <_> + 4 10 1 9 3. + <_> + + <_> + 4 11 3 4 -1. + <_> + 5 11 1 4 3. + <_> + + <_> + 5 12 3 2 -1. + <_> + 6 12 1 2 3. + <_> + + <_> + 7 12 3 2 -1. + <_> + 8 12 1 2 3. + <_> + + <_> + 1 2 12 6 -1. + <_> + 5 2 4 6 3. + <_> + + <_> + 9 0 8 3 -1. + <_> + 11 2 4 3 2. + 1 + <_> + + <_> + 8 1 6 2 -1. + <_> + 8 1 3 2 2. + 1 + <_> + + <_> + 4 4 15 9 -1. + <_> + 4 7 15 3 3. + <_> + + <_> + 5 10 8 6 -1. + <_> + 7 10 4 6 2. + <_> + + <_> + 11 8 9 9 -1. + <_> + 11 11 9 3 3. + <_> + + <_> + 7 0 6 4 -1. + <_> + 9 2 2 4 3. + 1 + <_> + + <_> + 3 11 6 3 -1. + <_> + 2 12 6 1 3. + 1 + <_> + + <_> + 16 12 4 3 -1. + <_> + 18 12 2 3 2. + <_> + + <_> + 10 10 2 10 -1. + <_> + 10 15 2 5 2. + <_> + + <_> + 5 7 3 4 -1. + <_> + 4 8 3 2 2. + 1 + <_> + + <_> + 1 9 6 1 -1. + <_> + 3 11 2 1 3. + 1 + <_> + + <_> + 0 0 1 6 -1. + <_> + 0 3 1 3 2. + <_> + + <_> + 8 10 10 2 -1. + <_> + 8 10 5 1 2. + <_> + 13 11 5 1 2. + <_> + + <_> + 5 2 5 6 -1. + <_> + 5 5 5 3 2. + <_> + + <_> + 6 1 6 1 -1. + <_> + 6 1 3 1 2. + 1 + <_> + + <_> + 0 3 1 12 -1. + <_> + 0 7 1 4 3. + <_> + + <_> + 0 7 2 1 -1. + <_> + 1 7 1 1 2. + <_> + + <_> + 3 5 1 3 -1. + <_> + 2 6 1 1 3. + 1 + <_> + + <_> + 11 12 2 3 -1. + <_> + 10 13 2 1 3. + 1 + <_> + + <_> + 10 12 3 3 -1. + <_> + 11 12 1 3 3. + <_> + + <_> + 9 11 3 3 -1. + <_> + 10 12 1 1 9. + <_> + + <_> + 6 17 4 2 -1. + <_> + 7 17 2 2 2. + <_> + + <_> + 12 18 6 2 -1. + <_> + 15 18 3 2 2. + <_> + + <_> + 3 17 2 1 -1. + <_> + 3 17 1 1 2. + 1 + <_> + + <_> + 1 15 4 1 -1. + <_> + 2 16 2 1 2. + 1 + <_> + + <_> + 18 0 2 2 -1. + <_> + 18 1 2 1 2. + <_> + + <_> + 19 0 1 3 -1. + <_> + 19 1 1 1 3. + <_> + + <_> + 16 11 3 2 -1. + <_> + 16 11 3 1 2. + 1 + <_> + + <_> + 16 12 2 3 -1. + <_> + 15 13 2 1 3. + 1 + <_> + + <_> + 12 0 8 1 -1. + <_> + 16 0 4 1 2. + <_> + + <_> + 2 1 9 6 -1. + <_> + 2 4 9 3 2. + <_> + + <_> + 17 1 3 2 -1. + <_> + 17 1 3 1 2. + 1 + <_> + + <_> + 7 5 6 4 -1. + <_> + 7 6 6 2 2. + <_> + + <_> + 4 6 6 2 -1. + <_> + 7 6 3 2 2. + <_> + + <_> + 11 4 6 6 -1. + <_> + 13 4 2 6 3. + <_> + + <_> + 5 7 9 3 -1. + <_> + 5 8 9 1 3. + <_> + + <_> + 5 8 9 3 -1. + <_> + 5 9 9 1 3. + <_> + + <_> + 1 0 4 3 -1. + <_> + 2 0 2 3 2. + <_> + + <_> + 9 9 5 4 -1. + <_> + 9 10 5 2 2. + <_> + + <_> + 1 0 6 7 -1. + <_> + 3 0 2 7 3. + <_> + + <_> + 16 9 3 2 -1. + <_> + 17 10 1 2 3. + 1 + <_> + + <_> + 14 12 2 2 -1. + <_> + 14 12 1 1 2. + <_> + 15 13 1 1 2. + <_> + + <_> + 0 0 14 1 -1. + <_> + 7 0 7 1 2. + <_> + + <_> + 15 11 2 2 -1. + <_> + 15 11 1 2 2. + 1 + <_> + + <_> + 3 14 12 4 -1. + <_> + 3 14 6 2 2. + <_> + 9 16 6 2 2. + <_> + + <_> + 5 2 1 3 -1. + <_> + 4 3 1 1 3. + 1 + <_> + + <_> + 8 12 3 2 -1. + <_> + 9 13 1 2 3. + 1 + <_> + + <_> + 14 11 2 2 -1. + <_> + 14 11 1 1 2. + <_> + 15 12 1 1 2. + <_> + + <_> + 13 10 7 2 -1. + <_> + 13 11 7 1 2. + <_> + + <_> + 7 13 1 2 -1. + <_> + 7 13 1 1 2. + 1 + <_> + + <_> + 5 12 4 3 -1. + <_> + 6 12 2 3 2. + <_> + + <_> + 8 2 2 5 -1. + <_> + 9 2 1 5 2. + <_> + + <_> + 1 17 4 2 -1. + <_> + 3 17 2 2 2. + <_> + + <_> + 12 17 4 3 -1. + <_> + 13 17 2 3 2. + <_> + + <_> + 15 16 5 3 -1. + <_> + 15 17 5 1 3. + <_> + + <_> + 15 16 4 3 -1. + <_> + 15 17 4 1 3. + <_> + + <_> + 0 17 16 3 -1. + <_> + 4 17 8 3 2. + <_> + + <_> + 0 14 2 2 -1. + <_> + 0 14 1 1 2. + <_> + 1 15 1 1 2. + <_> + + <_> + 7 2 6 6 -1. + <_> + 7 4 6 2 3. + <_> + + <_> + 3 5 1 3 -1. + <_> + 2 6 1 1 3. + 1 + <_> + + <_> + 2 7 2 2 -1. + <_> + 2 7 2 1 2. + 1 + <_> + + <_> + 6 11 5 3 -1. + <_> + 5 12 5 1 3. + 1 + <_> + + <_> + 16 14 4 6 -1. + <_> + 16 17 4 3 2. + <_> + + <_> + 6 13 6 7 -1. + <_> + 8 13 2 7 3. + <_> + + <_> + 0 1 12 11 -1. + <_> + 3 1 6 11 2. + <_> + + <_> + 6 10 7 3 -1. + <_> + 6 11 7 1 3. + <_> + + <_> + 8 0 9 4 -1. + <_> + 8 2 9 2 2. + <_> + + <_> + 10 14 10 2 -1. + <_> + 10 15 10 1 2. + <_> + + <_> + 0 0 1 18 -1. + <_> + 0 6 1 6 3. + <_> + + <_> + 4 13 2 2 -1. + <_> + 4 13 1 1 2. + <_> + 5 14 1 1 2. + <_> + + <_> + 8 11 3 6 -1. + <_> + 9 12 1 6 3. + 1 + <_> + + <_> + 6 7 2 3 -1. + <_> + 5 8 2 1 3. + 1 + <_> + + <_> + 4 8 3 3 -1. + <_> + 5 8 1 3 3. + <_> + + <_> + 1 4 14 1 -1. + <_> + 1 4 7 1 2. + 1 + <_> + + <_> + 12 13 8 3 -1. + <_> + 14 13 4 3 2. + <_> + + <_> + 4 17 2 1 -1. + <_> + 4 17 1 1 2. + 1 + <_> + + <_> + 6 16 2 2 -1. + <_> + 6 16 1 2 2. + 1 + <_> + + <_> + 3 17 4 2 -1. + <_> + 4 17 2 2 2. + <_> + + <_> + 0 7 20 2 -1. + <_> + 5 7 10 2 2. + <_> + + <_> + 15 9 2 2 -1. + <_> + 15 9 1 2 2. + 1 + <_> + + <_> + 3 12 2 2 -1. + <_> + 3 12 1 1 2. + <_> + 4 13 1 1 2. + <_> + + <_> + 0 5 2 1 -1. + <_> + 1 5 1 1 2. + <_> + + <_> + 17 0 3 2 -1. + <_> + 18 1 1 2 3. + 1 + <_> + + <_> + 2 8 3 9 -1. + <_> + 3 11 1 3 9. + <_> + + <_> + 15 7 4 2 -1. + <_> + 16 8 2 2 2. + 1 + <_> + + <_> + 4 16 3 3 -1. + <_> + 5 16 1 3 3. + <_> + + <_> + 8 14 6 1 -1. + <_> + 10 14 2 1 3. + <_> + + <_> + 14 0 6 6 -1. + <_> + 14 0 3 3 2. + <_> + 17 3 3 3 2. + <_> + + <_> + 17 2 2 1 -1. + <_> + 17 2 1 1 2. + 1 + <_> + + <_> + 0 19 20 1 -1. + <_> + 10 19 10 1 2. + <_> + + <_> + 0 19 6 1 -1. + <_> + 3 19 3 1 2. + <_> + + <_> + 9 17 4 3 -1. + <_> + 10 17 2 3 2. + <_> + + <_> + 4 11 3 3 -1. + <_> + 5 12 1 1 9. + <_> + + <_> + 17 7 3 3 -1. + <_> + 18 8 1 3 3. + 1 + <_> + + <_> + 19 1 1 4 -1. + <_> + 18 2 1 2 2. + 1 + <_> + + <_> + 6 8 2 1 -1. + <_> + 7 8 1 1 2. + <_> + + <_> + 5 4 4 4 -1. + <_> + 6 5 2 4 2. + 1 + <_> + + <_> + 5 0 8 7 -1. + <_> + 9 0 4 7 2. + <_> + + <_> + 0 7 5 9 -1. + <_> + 0 10 5 3 3. + <_> + + <_> + 14 10 2 2 -1. + <_> + 14 10 1 1 2. + <_> + 15 11 1 1 2. + <_> + + <_> + 15 11 2 2 -1. + <_> + 15 11 1 1 2. + <_> + 16 12 1 1 2. + <_> + + <_> + 9 2 6 4 -1. + <_> + 11 2 2 4 3. + <_> + + <_> + 0 12 12 8 -1. + <_> + 6 12 6 8 2. + <_> + + <_> + 1 0 6 2 -1. + <_> + 3 0 2 2 3. + <_> + + <_> + 0 12 4 5 -1. + <_> + 1 12 2 5 2. + <_> + + <_> + 2 12 4 4 -1. + <_> + 3 12 2 4 2. + <_> + + <_> + 12 11 2 4 -1. + <_> + 13 11 1 4 2. + <_> + + <_> + 2 0 1 4 -1. + <_> + 2 2 1 2 2. + <_> + + <_> + 6 1 4 9 -1. + <_> + 7 1 2 9 2. + <_> + + <_> + 13 10 2 3 -1. + <_> + 13 11 2 1 3. + <_> + + <_> + 3 9 15 3 -1. + <_> + 8 10 5 1 9. + <_> + + <_> + 15 10 3 1 -1. + <_> + 16 11 1 1 3. + 1 + <_> + + <_> + 1 0 15 8 -1. + <_> + 1 2 15 4 2. + <_> + + <_> + 2 3 15 6 -1. + <_> + 2 6 15 3 2. + <_> + + <_> + 6 0 6 6 -1. + <_> + 6 2 6 2 3. + <_> + + <_> + 16 9 4 3 -1. + <_> + 16 10 4 1 3. + <_> + + <_> + 16 7 4 3 -1. + <_> + 16 8 4 1 3. + <_> + + <_> + 15 10 2 2 -1. + <_> + 15 10 1 1 2. + <_> + 16 11 1 1 2. + <_> + + <_> + 13 11 2 3 -1. + <_> + 13 12 2 1 3. + <_> + + <_> + 2 16 2 2 -1. + <_> + 2 16 1 2 2. + 1 + <_> + + <_> + 3 0 4 7 -1. + <_> + 4 0 2 7 2. + <_> + + <_> + 0 16 2 2 -1. + <_> + 0 16 1 1 2. + <_> + 1 17 1 1 2. + <_> + + <_> + 2 0 18 3 -1. + <_> + 8 0 6 3 3. + <_> + + <_> + 0 1 1 3 -1. + <_> + 0 2 1 1 3. + <_> + + <_> + 10 6 4 4 -1. + <_> + 10 7 4 2 2. + <_> + + <_> + 16 4 4 6 -1. + <_> + 16 4 2 3 2. + <_> + 18 7 2 3 2. + <_> + + <_> + 11 12 4 2 -1. + <_> + 11 12 2 1 2. + <_> + 13 13 2 1 2. + diff --git a/venv/lib/python3.11/site-packages/cv2/data/haarcascade_license_plate_rus_16stages.xml b/venv/lib/python3.11/site-packages/cv2/data/haarcascade_license_plate_rus_16stages.xml new file mode 100644 index 0000000000000000000000000000000000000000..576c9e8202ab8bcef89a406921b96226a522e888 --- /dev/null +++ b/venv/lib/python3.11/site-packages/cv2/data/haarcascade_license_plate_rus_16stages.xml @@ -0,0 +1,1404 @@ + + + + + + 64 16 + + <_> + + + <_> + + <_> + + + + <_> + 32 2 8 6 -1. + <_> + 32 4 8 2 3. + 0 + 1.6915600746870041e-002 + -9.5547717809677124e-001 + 8.9129137992858887e-001 + <_> + + <_> + + + + <_> + 0 4 6 10 -1. + <_> + 3 4 3 10 2. + 0 + 2.4228349328041077e-002 + -9.2089319229125977e-001 + 8.8723921775817871e-001 + <_> + + <_> + + + + <_> + 55 0 8 6 -1. + <_> + 55 0 4 3 2. + <_> + 59 3 4 3 2. + 0 + -1.0168660432100296e-002 + 8.8940089941024780e-001 + -7.7847331762313843e-001 + <_> + + <_> + + + + <_> + 44 7 4 9 -1. + <_> + 44 10 4 3 3. + 0 + 2.0863260142505169e-003 + -8.7998157739639282e-001 + 5.8651781082153320e-001 + -2.0683259963989258e+000 + -1 + -1 + <_> + + + <_> + + <_> + + + + <_> + 29 1 16 4 -1. + <_> + 29 3 16 2 2. + 0 + 2.9062159359455109e-002 + -8.7765061855316162e-001 + 8.5373121500015259e-001 + <_> + + <_> + + + + <_> + 0 5 9 8 -1. + <_> + 3 5 3 8 3. + 0 + 2.3903399705886841e-002 + -9.2079448699951172e-001 + 7.5155001878738403e-001 + <_> + + <_> + + + + <_> + 44 0 20 14 -1. + <_> + 44 0 10 7 2. + <_> + 54 7 10 7 2. + 0 + -3.5404648631811142e-002 + 6.7834627628326416e-001 + -9.0937072038650513e-001 + <_> + + <_> + + + + <_> + 41 7 6 9 -1. + <_> + 43 7 2 9 3. + 0 + 6.2988721765577793e-003 + -8.1054258346557617e-001 + 5.8985030651092529e-001 + <_> + + <_> + + + + <_> + 0 4 21 4 -1. + <_> + 7 4 7 4 3. + 0 + 3.4959490876644850e-003 + -9.7632282972335815e-001 + 4.5473039150238037e-001 + -1.6632349491119385e+000 + 0 + -1 + <_> + + + <_> + + <_> + + + + <_> + 31 2 11 6 -1. + <_> + 31 4 11 2 3. + 0 + 2.3864099755883217e-002 + -9.3137168884277344e-001 + 8.2478952407836914e-001 + <_> + + <_> + + + + <_> + 56 3 6 11 -1. + <_> + 59 3 3 11 2. + 0 + -2.5775209069252014e-002 + 8.5526448488235474e-001 + -8.7574672698974609e-001 + <_> + + <_> + + + + <_> + 32 14 32 2 -1. + <_> + 32 15 32 1 2. + 0 + -1.0646049864590168e-002 + 8.5167151689529419e-001 + -6.7789041996002197e-001 + <_> + + <_> + + + + <_> + 0 2 8 14 -1. + <_> + 4 2 4 14 2. + 0 + 2.7000989764928818e-002 + -8.0041092634201050e-001 + 6.4893317222595215e-001 + <_> + + <_> + + + + <_> + 19 0 22 6 -1. + <_> + 19 0 11 3 2. + <_> + 30 3 11 3 2. + 0 + 5.2989721298217773e-003 + -9.5342522859573364e-001 + 5.0140267610549927e-001 + -1.3346730470657349e+000 + 1 + -1 + <_> + + + <_> + + <_> + + + + <_> + 56 0 6 6 -1. + <_> + 56 0 3 3 2. + <_> + 59 3 3 3 2. + 0 + -6.9233630783855915e-003 + 8.2654470205307007e-001 + -8.5396027565002441e-001 + <_> + + <_> + + + + <_> + 32 0 14 12 -1. + <_> + 32 0 7 6 2. + <_> + 39 6 7 6 2. + 0 + 1.2539249658584595e-001 + -1.2996139936149120e-002 + -3.2377028808593750e+003 + <_> + + <_> + + + + <_> + 2 1 43 4 -1. + <_> + 2 3 43 2 2. + 0 + 6.3474893569946289e-002 + -6.4648061990737915e-001 + 8.2302427291870117e-001 + <_> + + <_> + + + + <_> + 34 10 30 5 -1. + <_> + 44 10 10 5 3. + 0 + 4.2217150330543518e-002 + -7.5190877914428711e-001 + 6.3705182075500488e-001 + <_> + + <_> + + + + <_> + 0 9 9 5 -1. + <_> + 3 9 3 5 3. + 0 + 2.0000640302896500e-002 + -6.2077498435974121e-001 + 6.1317932605743408e-001 + -1.6521669626235962e+000 + 2 + -1 + <_> + + + <_> + + <_> + + + + <_> + 2 1 43 6 -1. + <_> + 2 3 43 2 3. + 0 + 9.2297486960887909e-002 + -7.2764229774475098e-001 + 8.0554759502410889e-001 + <_> + + <_> + + + + <_> + 53 4 9 8 -1. + <_> + 56 4 3 8 3. + 0 + 2.7613969519734383e-002 + -7.0769268274307251e-001 + 7.3315787315368652e-001 + <_> + + <_> + + + + <_> + 36 4 14 8 -1. + <_> + 36 4 7 4 2. + <_> + 43 8 7 4 2. + 0 + 1.2465449981391430e-002 + -8.4359270334243774e-001 + 5.7046437263488770e-001 + <_> + + <_> + + + + <_> + 14 14 49 2 -1. + <_> + 14 15 49 1 2. + 0 + -2.3886829614639282e-002 + 8.2656508684158325e-001 + -5.2783298492431641e-001 + -1.4523630142211914e+000 + 3 + -1 + <_> + + + <_> + + <_> + + + + <_> + 0 5 4 9 -1. + <_> + 2 5 2 9 2. + 0 + 1.8821349367499352e-002 + -8.1122857332229614e-001 + 6.9127470254898071e-001 + <_> + + <_> + + + + <_> + 21 1 38 4 -1. + <_> + 21 3 38 2 2. + 0 + 6.1703320592641830e-002 + -7.6482647657394409e-001 + 6.4212161302566528e-001 + <_> + + <_> + + + + <_> + 44 12 18 3 -1. + <_> + 53 12 9 3 2. + 0 + -1.6298670321702957e-002 + 5.0207728147506714e-001 + -8.4020161628723145e-001 + <_> + + <_> + + + + <_> + 10 4 9 3 -1. + <_> + 13 4 3 3 3. + 0 + -4.9458951689302921e-003 + 6.1991941928863525e-001 + -6.1633539199829102e-001 + <_> + + <_> + + + + <_> + 40 4 10 4 -1. + <_> + 45 4 5 4 2. + 0 + -5.1894597709178925e-003 + 4.4975179433822632e-001 + -8.0651968717575073e-001 + <_> + + <_> + + + + <_> + 17 14 47 2 -1. + <_> + 17 15 47 1 2. + 0 + -1.8824130296707153e-002 + 6.1992841958999634e-001 + -5.5643159151077271e-001 + <_> + + <_> + + + + <_> + 8 5 4 7 -1. + <_> + 10 5 2 7 2. + 0 + 5.6571601890027523e-003 + -4.8346561193466187e-001 + 6.8647360801696777e-001 + -2.2358059883117676e+000 + 4 + -1 + <_> + + + <_> + + <_> + + + + <_> + 56 0 6 6 -1. + <_> + 56 0 3 3 2. + <_> + 59 3 3 3 2. + 0 + -9.1503243893384933e-003 + 6.8174481391906738e-001 + -7.7866071462631226e-001 + <_> + + <_> + + + + <_> + 0 0 6 6 -1. + <_> + 0 0 3 3 2. + <_> + 3 3 3 3 2. + 0 + 7.4933180585503578e-003 + -6.8696027994155884e-001 + 6.6913938522338867e-001 + <_> + + <_> + + + + <_> + 13 4 48 2 -1. + <_> + 29 4 16 2 3. + 0 + 4.5296419411897659e-002 + -7.3576509952545166e-001 + 5.9453499317169189e-001 + <_> + + <_> + + + + <_> + 42 1 6 15 -1. + <_> + 42 6 6 5 3. + 0 + 1.1669679544866085e-002 + -8.4733831882476807e-001 + 4.5461329817771912e-001 + <_> + + <_> + + + + <_> + 30 8 3 5 -1. + <_> + 31 8 1 5 3. + 0 + 2.5769430212676525e-003 + -5.8270388841629028e-001 + 7.7900522947311401e-001 + <_> + + <_> + + + + <_> + 55 10 8 6 -1. + <_> + 55 13 8 3 2. + 0 + -1.4139170525595546e-003 + 4.5126929879188538e-001 + -9.0696328878402710e-001 + -1.8782069683074951e+000 + 5 + -1 + <_> + + + <_> + + <_> + + + + <_> + 4 6 4 7 -1. + <_> + 6 6 2 7 2. + 0 + -5.3149578161537647e-003 + 6.5218788385391235e-001 + -7.9464268684387207e-001 + <_> + + <_> + + + + <_> + 56 3 6 8 -1. + <_> + 59 3 3 8 2. + 0 + -2.2906960919499397e-002 + 6.6433382034301758e-001 + -7.3633247613906860e-001 + <_> + + <_> + + + + <_> + 37 2 4 6 -1. + <_> + 37 4 4 2 3. + 0 + 9.4887977465987206e-003 + -8.2612031698226929e-001 + 4.9333500862121582e-001 + <_> + + <_> + + + + <_> + 0 10 30 6 -1. + <_> + 0 12 30 2 3. + 0 + 4.5138411223888397e-002 + -5.4704028367996216e-001 + 7.6927912235260010e-001 + <_> + + <_> + + + + <_> + 0 4 21 12 -1. + <_> + 7 4 7 12 3. + 0 + 2.5049019604921341e-002 + -8.6739641427993774e-001 + 5.2807968854904175e-001 + -1.0597369670867920e+000 + 6 + -1 + <_> + + + <_> + + <_> + + + + <_> + 44 0 1 14 -1. + <_> + 44 7 1 7 2. + 0 + 6.6414438188076019e-003 + -7.7290147542953491e-001 + 6.9723731279373169e-001 + <_> + + <_> + + + + <_> + 54 3 4 3 -1. + <_> + 56 3 2 3 2. + 0 + 2.4703629314899445e-003 + -7.4289917945861816e-001 + 6.6825848817825317e-001 + <_> + + <_> + + + + <_> + 32 0 30 6 -1. + <_> + 32 0 15 3 2. + <_> + 47 3 15 3 2. + 0 + -2.2910499945282936e-002 + 4.3986389040946960e-001 + -9.0588808059692383e-001 + <_> + + <_> + + + + <_> + 0 8 9 7 -1. + <_> + 3 8 3 7 3. + 0 + 3.4193221479654312e-002 + -6.9507479667663574e-001 + 6.2501090764999390e-001 + <_> + + <_> + + + + <_> + 30 10 3 3 -1. + <_> + 31 10 1 3 3. + 0 + 1.5060020377859473e-003 + -6.8670761585235596e-001 + 8.2241541147232056e-001 + <_> + + <_> + + + + <_> + 21 3 24 4 -1. + <_> + 29 3 8 4 3. + 0 + 1.9838380467263050e-005 + -9.2727631330490112e-001 + 6.4723730087280273e-001 + <_> + + <_> + + + + <_> + 42 3 12 6 -1. + <_> + 46 3 4 6 3. + 0 + -2.2170299416757189e-005 + 5.6555831432342529e-001 + -9.6788132190704346e-001 + -1.4993519783020020e+000 + 7 + -1 + <_> + + + <_> + + <_> + + + + <_> + 56 9 6 6 -1. + <_> + 59 9 3 6 2. + 0 + -1.1395259760320187e-002 + 7.1383631229400635e-001 + -8.7429678440093994e-001 + <_> + + <_> + + + + <_> + 6 4 1 6 -1. + <_> + 6 7 1 3 2. + 0 + -2.1864590235054493e-003 + 8.5311782360076904e-001 + -6.4777731895446777e-001 + <_> + + <_> + + + + <_> + 0 0 12 4 -1. + <_> + 0 0 6 2 2. + <_> + 6 2 6 2 2. + 0 + 2.3193720262497663e-003 + -7.6411879062652588e-001 + 7.1867972612380981e-001 + <_> + + <_> + + + + <_> + 43 12 18 2 -1. + <_> + 52 12 9 2 2. + 0 + -7.9916073009371758e-003 + 6.6442942619323730e-001 + -7.9540950059890747e-001 + <_> + + <_> + + + + <_> + 9 5 2 8 -1. + <_> + 10 5 1 8 2. + 0 + 1.4212740352377295e-003 + -6.3904231786727905e-001 + 7.5050598382949829e-001 + -8.4829801321029663e-001 + 8 + -1 + <_> + + + <_> + + <_> + + + + <_> + 1 9 6 3 -1. + <_> + 3 9 2 3 3. + 0 + 6.4091659151017666e-003 + -8.8425230979919434e-001 + 9.9953681230545044e-001 + <_> + + <_> + + + + <_> + 56 8 2 8 -1. + <_> + 56 12 2 4 2. + 0 + -6.3316390151157975e-004 + 8.3822172880172729e-001 + -9.8322170972824097e-001 + <_> + + <_> + + + + <_> + 24 2 6 13 -1. + <_> + 26 2 2 13 3. + 0 + -6.4947169448714703e-005 + 1. + -9.1822808980941772e-001 + <_> + + <_> + + + + <_> + 33 7 24 4 -1. + <_> + 41 7 8 4 3. + 0 + 5.3404141217470169e-003 + -9.4317251443862915e-001 + 9.0425151586532593e-001 + -6.0007210820913315e-002 + 9 + -1 + <_> + + + <_> + + <_> + + + + <_> + 1 1 57 4 -1. + <_> + 1 3 57 2 2. + 0 + 1.0755469650030136e-001 + -7.1647202968597412e-001 + 8.7827038764953613e-001 + <_> + + <_> + + + + <_> + 0 2 6 14 -1. + <_> + 3 2 3 14 2. + 0 + 3.1668949872255325e-002 + -8.7051069736480713e-001 + 5.8807212114334106e-001 + <_> + + <_> + + + + <_> + 52 3 6 10 -1. + <_> + 54 3 2 10 3. + 0 + -1.0572380386292934e-002 + 6.2438100576400757e-001 + -7.4027371406555176e-001 + <_> + + <_> + + + + <_> + 1 14 61 2 -1. + <_> + 1 15 61 1 2. + 0 + -2.7396259829401970e-002 + 8.9776748418807983e-001 + -5.2986758947372437e-001 + <_> + + <_> + + + + <_> + 28 0 11 12 -1. + <_> + 28 4 11 4 3. + 0 + 2.5918649509549141e-002 + -8.6482518911361694e-001 + 5.3121817111968994e-001 + -9.6125108003616333e-001 + 10 + -1 + <_> + + + <_> + + <_> + + + + <_> + 22 1 41 4 -1. + <_> + 22 3 41 2 2. + 0 + 7.1039132773876190e-002 + -7.5719678401947021e-001 + 7.5645631551742554e-001 + <_> + + <_> + + + + <_> + 41 6 6 8 -1. + <_> + 43 6 2 8 3. + 0 + 7.6241148635745049e-003 + -7.9783838987350464e-001 + 7.1733069419860840e-001 + <_> + + <_> + + + + <_> + 50 9 14 5 -1. + <_> + 57 9 7 5 2. + 0 + -2.7092639356851578e-002 + 6.0071170330047607e-001 + -8.4794402122497559e-001 + <_> + + <_> + + + + <_> + 4 1 12 5 -1. + <_> + 10 1 6 5 2. + 0 + -8.1267888890579343e-004 + 5.9364068508148193e-001 + -8.9295238256454468e-001 + <_> + + <_> + + + + <_> + 37 9 3 3 -1. + <_> + 38 9 1 3 3. + 0 + 8.3705072756856680e-004 + -6.4887362718582153e-001 + 7.8537952899932861e-001 + -1.0618970394134521e+000 + 11 + -1 + <_> + + + <_> + + <_> + + + + <_> + 54 0 10 6 -1. + <_> + 54 0 5 3 2. + <_> + 59 3 5 3 2. + 0 + -9.7556859254837036e-003 + 7.6982218027114868e-001 + -8.5293501615524292e-001 + <_> + + <_> + + + + <_> + 47 0 6 11 -1. + <_> + 49 0 2 11 3. + 0 + -8.6617246270179749e-003 + 8.4029090404510498e-001 + -7.1949690580368042e-001 + <_> + + <_> + + + + <_> + 19 2 20 2 -1. + <_> + 19 3 20 1 2. + 0 + 1.6897840425372124e-002 + -5.3601992130279541e-001 + 9.5484441518783569e-001 + <_> + + <_> + + + + <_> + 14 4 6 11 -1. + <_> + 17 4 3 11 2. + 0 + 4.7526158596156165e-005 + -7.6412862539291382e-001 + 7.5398761034011841e-001 + <_> + + <_> + + + + <_> + 31 9 33 2 -1. + <_> + 42 9 11 2 3. + 0 + 6.5607670694589615e-003 + -9.9346441030502319e-001 + 6.4864277839660645e-001 + -7.3307347297668457e-001 + 12 + -1 + <_> + + + <_> + + <_> + + + + <_> + 6 1 53 6 -1. + <_> + 6 3 53 2 3. + 0 + 1.0103269666433334e-001 + -7.3275578022003174e-001 + 8.4619927406311035e-001 + <_> + + <_> + + + + <_> + 49 9 4 6 -1. + <_> + 49 9 2 3 2. + <_> + 51 12 2 3 2. + 0 + -2.8920811018906534e-004 + 7.1564781665802002e-001 + -8.8221758604049683e-001 + <_> + + <_> + + + + <_> + 0 9 30 7 -1. + <_> + 10 9 10 7 3. + 0 + 1.0838840156793594e-002 + -8.7420248985290527e-001 + 6.0648679733276367e-001 + <_> + + <_> + + + + <_> + 40 4 6 2 -1. + <_> + 42 4 2 2 3. + 0 + 5.0803890917450190e-004 + -9.0554022789001465e-001 + 6.4213967323303223e-001 + <_> + + <_> + + + + <_> + 1 9 6 1 -1. + <_> + 3 9 2 1 3. + 0 + 2.3357039317488670e-003 + -9.2574918270111084e-001 + 8.6384928226470947e-001 + <_> + + <_> + + + + <_> + 47 3 4 10 -1. + <_> + 47 8 4 5 2. + 0 + 8.0239427916239947e-005 + -9.9618428945541382e-001 + 9.5355111360549927e-001 + <_> + + <_> + + + + <_> + 31 5 30 11 -1. + <_> + 41 5 10 11 3. + 0 + 3.2030208967626095e-003 + -1. + 1.0001050233840942e+000 + <_> + + <_> + + + + <_> + 0 0 2 1 -1. + <_> + 1 0 1 1 2. + 0 + 0. + 0. + -1. + <_> + + <_> + + + + <_> + 21 3 42 5 -1. + <_> + 35 3 14 5 3. + 0 + 2.6143440045416355e-003 + -1. + 1.0002139806747437e+000 + <_> + + <_> + + + + <_> + 0 0 2 1 -1. + <_> + 1 0 1 1 2. + 0 + 0. + 0. + -1. + <_> + + <_> + + + + <_> + 8 5 30 9 -1. + <_> + 8 8 30 3 3. + 0 + -7.0475979009643197e-004 + 1. + -9.9976968765258789e-001 + <_> + + <_> + + + + <_> + 3 12 33 3 -1. + <_> + 14 12 11 3 3. + 0 + 2.1271279547363520e-003 + -9.9694627523422241e-001 + 1.0002720355987549e+000 + <_> + + <_> + + + + <_> + 0 0 3 2 -1. + <_> + 1 0 1 2 3. + 0 + -2.4224430671893060e-004 + 1. + -1. + <_> + + <_> + + + + <_> + 46 4 3 8 -1. + <_> + 47 4 1 8 3. + 0 + 7.4700301047414541e-004 + -9.9108231067657471e-001 + 9.9941182136535645e-001 + -1.0991690158843994e+000 + 13 + -1 + <_> + + + <_> + + <_> + + + + <_> + 1 2 6 5 -1. + <_> + 3 2 2 5 3. + 0 + 1.7227890202775598e-003 + -9.3608891963958740e-001 + 8.7251222133636475e-001 + <_> + + <_> + + + + <_> + 0 3 18 5 -1. + <_> + 6 3 6 5 3. + 0 + 2.7599320746958256e-003 + -9.9757021665573120e-001 + 1.0000289678573608e+000 + <_> + + <_> + + + + <_> + 3 1 6 14 -1. + <_> + 6 1 3 14 2. + 0 + -8.9444358309265226e-005 + 1. + -9.9264812469482422e-001 + <_> + + <_> + + + + <_> + 3 6 2 10 -1. + <_> + 3 11 2 5 2. + 0 + -2.7962020249105990e-004 + 8.2833290100097656e-001 + -9.8444151878356934e-001 + <_> + + <_> + + + + <_> + 42 0 4 6 -1. + <_> + 42 0 2 3 2. + <_> + 44 3 2 3 2. + 0 + -2.7560539820115082e-005 + 1. + -9.9543339014053345e-001 + -9.1314977407455444e-001 + 14 + -1 + diff --git a/venv/lib/python3.11/site-packages/cv2/data/haarcascade_lowerbody.xml b/venv/lib/python3.11/site-packages/cv2/data/haarcascade_lowerbody.xml new file mode 100644 index 0000000000000000000000000000000000000000..7fa27c7e2a082ad035c9f64c815eeb0dd104d544 --- /dev/null +++ b/venv/lib/python3.11/site-packages/cv2/data/haarcascade_lowerbody.xml @@ -0,0 +1,14056 @@ + + + +BOOST + HAAR + 23 + 19 + + 89 + + 0 + 27 + + <_> + 17 + -1.4308550357818604e+00 + + <_> + + 0 -1 0 -1.6869869083166122e-02 + + 5.4657417535781860e-01 -6.3678038120269775e-01 + <_> + + 0 -1 1 2.5349899660795927e-03 + + -3.7605491280555725e-01 3.2378101348876953e-01 + <_> + + 0 -1 2 -2.4709459394216537e-02 + + -6.7979127168655396e-01 2.0501059293746948e-01 + <_> + + 0 -1 3 8.2436859607696533e-02 + + 2.0588639378547668e-01 -8.4938430786132812e-01 + <_> + + 0 -1 4 -8.2128931535407901e-04 + + 3.1891921162605286e-01 -4.6469458937644958e-01 + <_> + + 0 -1 5 2.3016959428787231e-02 + + 1.8670299649238586e-01 -7.0330899953842163e-01 + <_> + + 0 -1 6 6.6386149264872074e-03 + + 1.6370490193367004e-01 -8.4604722261428833e-01 + <_> + + 0 -1 7 7.6682120561599731e-04 + + -3.9852690696716309e-01 2.3113329708576202e-01 + <_> + + 0 -1 8 1.1731679737567902e-01 + + 1.0445039719343185e-01 -8.8510942459106445e-01 + <_> + + 0 -1 9 1.5421230345964432e-02 + + -2.7859508991241455e-01 2.8921920061111450e-01 + <_> + + 0 -1 10 3.4018948674201965e-02 + + -1.4287669956684113e-01 7.7801531553268433e-01 + <_> + + 0 -1 11 3.4638870507478714e-02 + + 1.8644079566001892e-01 -6.0324841737747192e-01 + <_> + + 0 -1 12 -3.7503659725189209e-01 + + 9.2781841754913330e-01 -1.5421600639820099e-01 + <_> + + 0 -1 13 -5.6011971086263657e-02 + + -5.8591067790985107e-01 1.9547510147094727e-01 + <_> + + 0 -1 14 -1.4878909569233656e-03 + + 2.8139349818229675e-01 -4.1853010654449463e-01 + <_> + + 0 -1 15 -1.4495699666440487e-02 + + -7.2273969650268555e-01 9.4288460910320282e-02 + <_> + + 0 -1 16 -5.6178281083703041e-03 + + -5.9551960229873657e-01 1.5202650427818298e-01 + <_> + 13 + -1.1907930374145508e+00 + + <_> + + 0 -1 17 -3.1839120201766491e-03 + + 4.0025138854980469e-01 -6.8473160266876221e-01 + <_> + + 0 -1 18 3.5989920143038034e-03 + + -5.1895952224731445e-01 3.0101141333580017e-01 + <_> + + 0 -1 19 1.8804630264639854e-02 + + 1.5554919838905334e-01 -8.0477172136306763e-01 + <_> + + 0 -1 20 5.2497140131890774e-03 + + 1.3780809938907623e-01 -6.0767507553100586e-01 + <_> + + 0 -1 21 -1.4204799663275480e-03 + + 3.2319429516792297e-01 -4.3407461047172546e-01 + <_> + + 0 -1 22 -2.5174349546432495e-02 + + -7.0780879259109497e-01 9.3106329441070557e-02 + <_> + + 0 -1 23 3.2285219058394432e-03 + + -3.2510471343994141e-01 3.3571699261665344e-01 + <_> + + 0 -1 24 9.4993412494659424e-02 + + 8.2439087331295013e-02 -8.7549537420272827e-01 + <_> + + 0 -1 25 -6.5919090993702412e-03 + + -7.3804199695587158e-01 1.3853749632835388e-01 + <_> + + 0 -1 26 -1.1146620381623507e-03 + + 1.7917269468307495e-01 -2.7955859899520874e-01 + <_> + + 0 -1 27 1.3349019922316074e-02 + + 1.3057829439640045e-01 -6.9802671670913696e-01 + <_> + + 0 -1 28 -3.5181451588869095e-02 + + 4.6535360813140869e-01 -1.0698779672384262e-01 + <_> + + 0 -1 29 3.1874589622020721e-02 + + -1.3565389811992645e-01 7.9047888517379761e-01 + <_> + 19 + -1.3129220008850098e+00 + + <_> + + 0 -1 30 -1.0647430084645748e-02 + + 3.8079029321670532e-01 -5.8672338724136353e-01 + <_> + + 0 -1 31 -7.3214493691921234e-02 + + -7.9550951719284058e-01 1.7223259806632996e-01 + <_> + + 0 -1 32 6.0464427806437016e-03 + + 1.6532160341739655e-01 -6.9376647472381592e-01 + <_> + + 0 -1 33 7.3225022060796618e-04 + + -3.3247160911560059e-01 2.3669970035552979e-01 + <_> + + 0 -1 34 -1.0990080423653126e-02 + + -6.9136887788772583e-01 2.1058270335197449e-01 + <_> + + 0 -1 35 -1.5282750246115029e-04 + + 2.0305849611759186e-01 -4.6551659703254700e-01 + <_> + + 0 -1 36 2.4822261184453964e-04 + + -4.2122921347618103e-01 2.7335309982299805e-01 + <_> + + 0 -1 37 -8.4205856546759605e-03 + + -4.3744468688964844e-01 5.8831848204135895e-02 + <_> + + 0 -1 38 -3.6992791295051575e-01 + + 9.1070818901062012e-01 -8.7207540869712830e-02 + <_> + + 0 -1 39 6.1259930953383446e-03 + + 1.1886730045080185e-01 -1.8520170450210571e-01 + <_> + + 0 -1 40 -6.0144090093672276e-03 + + -6.3057059049606323e-01 1.4577180147171021e-01 + <_> + + 0 -1 41 8.5623031482100487e-03 + + -2.9369381070137024e-01 3.2411348819732666e-01 + <_> + + 0 -1 42 -1.3966850005090237e-02 + + -8.0650371313095093e-01 1.1267790198326111e-01 + <_> + + 0 -1 43 -4.1734468191862106e-02 + + 7.7495330572128296e-01 -7.8866302967071533e-02 + <_> + + 0 -1 44 -2.7996799326501787e-04 + + 2.7783310413360596e-01 -3.5196089744567871e-01 + <_> + + 0 -1 45 1.9588569179177284e-02 + + -6.5759636461734772e-02 5.2414137125015259e-01 + <_> + + 0 -1 46 9.2163113877177238e-03 + + -1.5525479614734650e-01 5.4835391044616699e-01 + <_> + + 0 -1 47 -2.1458569914102554e-02 + + -5.2255308628082275e-01 8.2208268344402313e-02 + <_> + + 0 -1 48 3.6805770359933376e-03 + + -2.4434129893779755e-01 3.6122488975524902e-01 + <_> + 23 + -1.3777279853820801e+00 + + <_> + + 0 -1 49 -8.3544738590717316e-03 + + 2.8173181414604187e-01 -4.9728131294250488e-01 + <_> + + 0 -1 50 -5.5724289268255234e-03 + + -6.5505301952362061e-01 1.9406059384346008e-01 + <_> + + 0 -1 51 -5.7714767754077911e-03 + + -6.2230938673019409e-01 2.7622398734092712e-01 + <_> + + 0 -1 52 2.2995889186859131e-02 + + 1.9798569381237030e-02 -7.8324538469314575e-01 + <_> + + 0 -1 53 -1.1443760013207793e-03 + + 2.8108718991279602e-01 -4.8214849829673767e-01 + <_> + + 0 -1 54 -2.5917509198188782e-01 + + -6.8214958906173706e-01 -3.3729869755916297e-04 + <_> + + 0 -1 55 -3.0133039690554142e-03 + + -6.5704411268234253e-01 1.3693599402904510e-01 + <_> + + 0 -1 56 5.4540671408176422e-03 + + 8.6931817233562469e-02 -7.0567971467971802e-01 + <_> + + 0 -1 57 6.6230311058461666e-03 + + 1.6634289920330048e-01 -5.1772958040237427e-01 + <_> + + 0 -1 58 -1.2561669573187828e-02 + + 9.0290471911430359e-02 -1.6850970685482025e-01 + <_> + + 0 -1 59 4.2890738695859909e-02 + + 1.2977810204029083e-01 -5.8218061923980713e-01 + <_> + + 0 -1 60 -1.3341030571609735e-03 + + 1.3694329559803009e-01 -1.9437809288501740e-01 + <_> + + 0 -1 61 -4.1247460991144180e-02 + + 6.8543851375579834e-01 -1.3039450347423553e-01 + <_> + + 0 -1 62 -9.1503392904996872e-03 + + -1.1895430088043213e-01 6.7576698958873749e-02 + <_> + + 0 -1 63 -1.7151240026578307e-03 + + 2.6475539803504944e-01 -3.0487450957298279e-01 + <_> + + 0 -1 64 2.0843200385570526e-01 + + 1.2401489913463593e-01 -4.7014111280441284e-01 + <_> + + 0 -1 65 7.2393968701362610e-02 + + 9.6924379467964172e-02 -7.7347749471664429e-01 + <_> + + 0 -1 66 -1.5335980569943786e-03 + + 1.7991219460964203e-01 -2.5788331031799316e-01 + <_> + + 0 -1 67 4.8640500754117966e-03 + + 1.1392980068922043e-01 -5.5173867940902710e-01 + <_> + + 0 -1 68 -1.6523050144314766e-03 + + 1.5154689550399780e-01 -2.2901679575443268e-01 + <_> + + 0 -1 69 7.5348757207393646e-02 + + -1.4630889892578125e-01 6.8105882406234741e-01 + <_> + + 0 -1 70 -8.2630068063735962e-03 + + -7.2783601284027100e-01 1.0281019657850266e-01 + <_> + + 0 -1 71 -5.5124741047620773e-03 + + -6.3059347867965698e-01 9.3257799744606018e-02 + <_> + 15 + -1.0618749856948853e+00 + + <_> + + 0 -1 72 -9.3849105760455132e-03 + + 5.2500581741333008e-01 -4.3231061100959778e-01 + <_> + + 0 -1 73 -1.3772470410913229e-03 + + 2.0698480308055878e-01 -4.2718759179115295e-01 + <_> + + 0 -1 74 2.6320109143853188e-02 + + 1.5825170278549194e-01 -6.5509521961212158e-01 + <_> + + 0 -1 75 -4.5488759875297546e-02 + + -4.9510109424591064e-01 1.7998820543289185e-01 + <_> + + 0 -1 76 -4.7006201930344105e-03 + + 3.3971160650253296e-01 -3.6917701363563538e-01 + <_> + + 0 -1 77 -1.3270860072225332e-03 + + 3.0907860398292542e-01 -1.9771750271320343e-01 + <_> + + 0 -1 78 9.3802614137530327e-03 + + 9.4488449394702911e-02 -7.3198097944259644e-01 + <_> + + 0 -1 79 4.3565612286329269e-03 + + 1.1520200222730637e-01 -5.4008102416992188e-01 + <_> + + 0 -1 80 8.1178937107324600e-03 + + -1.5956309437751770e-01 5.3777867555618286e-01 + <_> + + 0 -1 81 -8.7829083204269409e-03 + + 5.6634718179702759e-01 -1.3279379904270172e-01 + <_> + + 0 -1 82 2.1944850683212280e-02 + + 1.5901289880275726e-01 -5.1751822233200073e-01 + <_> + + 0 -1 83 4.9510098993778229e-02 + + 1.1067640036344528e-02 -4.9972468614578247e-01 + <_> + + 0 -1 84 -2.1175360307097435e-03 + + 2.6490759849548340e-01 -2.4565629661083221e-01 + <_> + + 0 -1 85 1.0379469953477383e-02 + + 1.2624099850654602e-01 -4.0877240896224976e-01 + <_> + + 0 -1 86 2.4977258872240782e-03 + + -1.9723020493984222e-01 3.8866749405860901e-01 + <_> + 18 + -9.5461457967758179e-01 + + <_> + + 0 -1 87 -6.1489548534154892e-03 + + 4.0187481045722961e-01 -5.2397370338439941e-01 + <_> + + 0 -1 88 5.0464540719985962e-02 + + 1.3049679994583130e-01 -5.8651441335678101e-01 + <_> + + 0 -1 89 -5.5906269699335098e-02 + + -5.1229542493820190e-01 2.4392889440059662e-01 + <_> + + 0 -1 90 1.4281509816646576e-01 + + -1.5180160291492939e-02 -6.9593918323516846e-01 + <_> + + 0 -1 91 4.1162770241498947e-02 + + 1.3673730194568634e-01 -6.4158838987350464e-01 + <_> + + 0 -1 92 -1.6468750312924385e-02 + + 2.6339039206504822e-01 -2.2083680331707001e-01 + <_> + + 0 -1 93 2.4763140827417374e-02 + + 1.0897739976644516e-01 -6.5213900804519653e-01 + <_> + + 0 -1 94 4.3008858337998390e-03 + + -1.8299630284309387e-01 4.3614229559898376e-01 + <_> + + 0 -1 95 3.4035290591418743e-03 + + -2.4363580346107483e-01 2.8224369883537292e-01 + <_> + + 0 -1 96 -2.2210620343685150e-02 + + -5.4645758867263794e-01 1.3542969524860382e-01 + <_> + + 0 -1 97 -2.6968019083142281e-02 + + 6.5300947427749634e-01 -1.4297309517860413e-01 + <_> + + 0 -1 98 -3.4927908331155777e-02 + + -5.2346628904342651e-01 1.0084570199251175e-01 + <_> + + 0 -1 99 3.6263581365346909e-02 + + 1.5110149979591370e-01 -5.4185849428176880e-01 + <_> + + 0 -1 100 -3.8526788353919983e-02 + + -8.6942279338836670e-01 3.7176769226789474e-02 + <_> + + 0 -1 101 2.5399168953299522e-03 + + -2.6125881075859070e-01 2.7278441190719604e-01 + <_> + + 0 -1 102 -1.2931150384247303e-02 + + -4.9501579999923706e-01 9.1383516788482666e-02 + <_> + + 0 -1 103 1.1981350369751453e-02 + + -1.2059610337018967e-01 6.3848638534545898e-01 + <_> + + 0 -1 104 -7.4320413172245026e-02 + + 4.6591779589653015e-01 -4.0265668183565140e-02 + <_> + 14 + -1.1777880191802979e+00 + + <_> + + 0 -1 105 -6.9070039317011833e-03 + + 4.3197679519653320e-01 -5.1717847585678101e-01 + <_> + + 0 -1 106 -8.1628039479255676e-03 + + 2.7116540074348450e-01 -3.2803410291671753e-01 + <_> + + 0 -1 107 1.8852509558200836e-02 + + 1.5548799932003021e-01 -5.5243927240371704e-01 + <_> + + 0 -1 108 3.4079391509294510e-02 + + 1.5272259712219238e-01 -6.5318012237548828e-01 + <_> + + 0 -1 109 -3.2038250938057899e-03 + + 3.4725460410118103e-01 -2.7734228968620300e-01 + <_> + + 0 -1 110 2.1410689223557711e-03 + + -6.8888276815414429e-02 2.4079489707946777e-01 + <_> + + 0 -1 111 1.4620450139045715e-01 + + 1.5766879916191101e-01 -5.4515862464904785e-01 + <_> + + 0 -1 112 -6.2386798672378063e-03 + + 3.2899579405784607e-01 -1.6970640420913696e-01 + <_> + + 0 -1 113 7.7623138204216957e-03 + + 1.6352510452270508e-01 -5.1879328489303589e-01 + <_> + + 0 -1 114 3.7800080608576536e-03 + + -1.8464370071887970e-01 4.8660078644752502e-01 + <_> + + 0 -1 115 2.2303969599306583e-03 + + -1.7057199776172638e-01 4.7744798660278320e-01 + <_> + + 0 -1 116 2.4544890038669109e-03 + + -3.3550649881362915e-01 2.5369268655776978e-01 + <_> + + 0 -1 117 -2.1707419306039810e-02 + + -4.8321890830993652e-01 1.6075029969215393e-01 + <_> + + 0 -1 118 1.7421970143914223e-02 + + 7.9877912998199463e-02 -7.5137257575988770e-01 + <_> + 34 + -1.2834340333938599e+00 + + <_> + + 0 -1 119 8.8802073150873184e-03 + + -4.4682410359382629e-01 2.6062530279159546e-01 + <_> + + 0 -1 120 -3.0198058811947703e-04 + + 1.5258400142192841e-01 -3.5206508636474609e-01 + <_> + + 0 -1 121 6.7998501472175121e-03 + + 1.2259320169687271e-01 -6.8427437543869019e-01 + <_> + + 0 -1 122 2.7802670374512672e-03 + + -3.3681631088256836e-01 1.8518559634685516e-01 + <_> + + 0 -1 123 -1.1553820222616196e-02 + + -6.9871348142623901e-01 1.3079600036144257e-01 + <_> + + 0 -1 124 -2.6563290506601334e-02 + + -7.0277881622314453e-01 1.7791330814361572e-02 + <_> + + 0 -1 125 -2.5158381322398782e-04 + + 2.4779480695724487e-01 -3.9787930250167847e-01 + <_> + + 0 -1 126 3.5748310387134552e-02 + + -3.8043439388275146e-02 4.7976261377334595e-01 + <_> + + 0 -1 127 -1.9973930902779102e-03 + + 2.5774869322776794e-01 -3.1990098953247070e-01 + <_> + + 0 -1 128 -1.1007110029459000e-01 + + -4.9102869629859924e-01 2.3104630410671234e-02 + <_> + + 0 -1 129 -2.2225650027394295e-03 + + 2.3825299739837646e-01 -2.8415530920028687e-01 + <_> + + 0 -1 130 -7.7874241396784782e-03 + + -3.8951370120048523e-01 5.5762890726327896e-02 + <_> + + 0 -1 131 5.6415859609842300e-02 + + -9.3521721661090851e-02 7.2561162710189819e-01 + <_> + + 0 -1 132 -3.5978010855615139e-03 + + 1.9452190399169922e-01 -1.9651280343532562e-01 + <_> + + 0 -1 133 -7.2716898284852505e-03 + + 3.4169870615005493e-01 -2.2851559519767761e-01 + <_> + + 0 -1 134 7.1941758506000042e-03 + + 7.2148866951465607e-02 -4.5313501358032227e-01 + <_> + + 0 -1 135 -4.1034761816263199e-03 + + -5.1336747407913208e-01 1.3323569297790527e-01 + <_> + + 0 -1 136 -3.4210970625281334e-03 + + -4.2383781075477600e-01 8.4852807223796844e-02 + <_> + + 0 -1 137 4.1890922002494335e-03 + + -1.3398550450801849e-01 4.3749558925628662e-01 + <_> + + 0 -1 138 1.1827970156446099e-03 + + -2.9739010334014893e-01 2.2126840054988861e-01 + <_> + + 0 -1 139 -4.1196551173925400e-02 + + -5.0735759735107422e-01 1.3243959844112396e-01 + <_> + + 0 -1 140 2.9593890067189932e-03 + + -1.4052620530128479e-01 6.1360880732536316e-02 + <_> + + 0 -1 141 -5.0226859748363495e-03 + + -4.7495970129966736e-01 1.2069150060415268e-01 + <_> + + 0 -1 142 -1.5097860246896744e-02 + + 2.7555391192436218e-01 -5.3780451416969299e-02 + <_> + + 0 -1 143 -2.7190970256924629e-02 + + 7.5995457172393799e-01 -7.4793189764022827e-02 + <_> + + 0 -1 144 1.9893879070878029e-02 + + -6.7238640040159225e-03 7.3972767591476440e-01 + <_> + + 0 -1 145 7.7208830043673515e-03 + + 9.3071162700653076e-02 -6.5780252218246460e-01 + <_> + + 0 -1 146 -1.1565990280359983e-03 + + 9.4645917415618896e-02 -1.6407909989356995e-01 + <_> + + 0 -1 147 2.6069190353155136e-03 + + -1.3877980411052704e-01 4.7349870204925537e-01 + <_> + + 0 -1 148 -5.3586110472679138e-02 + + -3.7349641323089600e-01 2.5728559121489525e-02 + <_> + + 0 -1 149 1.5184599906206131e-03 + + -2.2478710114955902e-01 2.3574599623680115e-01 + <_> + + 0 -1 150 -3.7061560899019241e-02 + + -6.1827117204666138e-01 8.2348063588142395e-02 + <_> + + 0 -1 151 -2.6311799883842468e-02 + + -6.0057657957077026e-01 7.7768869698047638e-02 + <_> + + 0 -1 152 -8.7947428226470947e-02 + + 3.8841038942337036e-01 -8.1545598804950714e-02 + <_> + 20 + -1.2891789674758911e+00 + + <_> + + 0 -1 153 -2.9038030654191971e-02 + + 5.0635957717895508e-01 -4.3462699651718140e-01 + <_> + + 0 -1 154 3.9044669829308987e-03 + + -1.9009789824485779e-01 5.1840317249298096e-01 + <_> + + 0 -1 155 2.9162769205868244e-03 + + -3.4351310133934021e-01 2.4016310274600983e-01 + <_> + + 0 -1 156 -8.9670084416866302e-03 + + -4.2667150497436523e-01 1.2316550314426422e-01 + <_> + + 0 -1 157 -2.4935540277510881e-03 + + 3.6086550354957581e-01 -1.8381460011005402e-01 + <_> + + 0 -1 158 -4.8912568017840385e-03 + + -6.4749848842620850e-01 1.0856709629297256e-01 + <_> + + 0 -1 159 -4.0970719419419765e-03 + + 2.2143830358982086e-01 -3.1505578756332397e-01 + <_> + + 0 -1 160 4.3956499546766281e-02 + + -1.0780169814825058e-01 7.1893501281738281e-01 + <_> + + 0 -1 161 1.9277370302006602e-03 + + 2.0247739553451538e-01 -4.0381088852882385e-01 + <_> + + 0 -1 162 9.4976946711540222e-03 + + 4.3494019657373428e-02 -2.9908061027526855e-01 + <_> + + 0 -1 163 3.5389279946684837e-03 + + -1.5109489858150482e-01 5.1864242553710938e-01 + <_> + + 0 -1 164 -2.2064079530537128e-03 + + 2.3006440699100494e-01 -3.3191001415252686e-01 + <_> + + 0 -1 165 3.9085410535335541e-03 + + -3.4253311157226562e-01 2.2951880097389221e-01 + <_> + + 0 -1 166 2.6973709464073181e-03 + + 1.1976680159568787e-01 -3.5321989655494690e-01 + <_> + + 0 -1 167 -2.1321459207683802e-03 + + 1.8206289410591125e-01 -2.8434100747108459e-01 + <_> + + 0 -1 168 2.6955150533467531e-03 + + 7.4593842029571533e-02 -3.0896648764610291e-01 + <_> + + 0 -1 169 -6.0222679749131203e-03 + + 1.8041500449180603e-01 -2.7531668543815613e-01 + <_> + + 0 -1 170 -8.9143458753824234e-03 + + 2.4166099727153778e-01 -1.4506129920482635e-01 + <_> + + 0 -1 171 2.3474939167499542e-02 + + -1.2354619801044464e-01 6.5625041723251343e-01 + <_> + + 0 -1 172 -5.6602950207889080e-03 + + -3.3785250782966614e-01 1.1194559931755066e-01 + <_> + 20 + -1.0202569961547852e+00 + + <_> + + 0 -1 173 -6.9699093699455261e-02 + + 5.0786459445953369e-01 -4.7562688589096069e-01 + <_> + + 0 -1 174 2.1672779694199562e-02 + + -2.9134199023246765e-01 3.4561529755592346e-01 + <_> + + 0 -1 175 -4.7600260004401207e-03 + + 3.6477440595626831e-01 -1.9551509618759155e-01 + <_> + + 0 -1 176 -4.6418169513344765e-03 + + -5.6445592641830444e-01 9.8486669361591339e-02 + <_> + + 0 -1 177 -6.0006938874721527e-03 + + -6.3645982742309570e-01 1.4379170536994934e-01 + <_> + + 0 -1 178 1.9073469564318657e-02 + + -3.4218288958072662e-02 5.5043292045593262e-01 + <_> + + 0 -1 179 4.7993380576372147e-02 + + -8.5889510810375214e-02 7.6790231466293335e-01 + <_> + + 0 -1 180 -3.6511209327727556e-03 + + 2.0186069607734680e-01 -2.9832679033279419e-01 + <_> + + 0 -1 181 -1.4485770370811224e-03 + + -5.1293247938156128e-01 1.3695690035820007e-01 + <_> + + 0 -1 182 -3.3748829737305641e-03 + + -4.0975129604339600e-01 1.1581440269947052e-01 + <_> + + 0 -1 183 2.3586750030517578e-03 + + 1.7582429945468903e-01 -4.5439630746841431e-01 + <_> + + 0 -1 184 -2.2074829787015915e-02 + + 4.6775639057159424e-01 -4.6358831226825714e-02 + <_> + + 0 -1 185 7.0953248068690300e-03 + + -3.2100531458854675e-01 2.2119350731372833e-01 + <_> + + 0 -1 186 -2.0119780674576759e-03 + + 5.4601740092039108e-02 -9.7853101789951324e-02 + <_> + + 0 -1 187 4.9847508780658245e-03 + + -1.3063269853591919e-01 5.2815079689025879e-01 + <_> + + 0 -1 188 -5.3485459648072720e-03 + + -4.2115539312362671e-01 1.1927159875631332e-01 + <_> + + 0 -1 189 2.5243330746889114e-03 + + 1.2105660140514374e-01 -4.5177119970321655e-01 + <_> + + 0 -1 190 -2.4893151130527258e-03 + + 1.2249600142240524e-01 -1.1200980097055435e-01 + <_> + + 0 -1 191 4.3740491382777691e-03 + + -1.0549320280551910e-01 6.0806149244308472e-01 + <_> + + 0 -1 192 -7.3214988224208355e-03 + + 4.7615110874176025e-01 -6.8390920758247375e-02 + <_> + 24 + -1.0336159467697144e+00 + + <_> + + 0 -1 193 -4.2286239564418793e-02 + + 3.6749860644340515e-01 -4.3680980801582336e-01 + <_> + + 0 -1 194 3.8884699344635010e-02 + + -3.5438889265060425e-01 2.7009218931198120e-01 + <_> + + 0 -1 195 1.5983959892764688e-03 + + -3.2200628519058228e-01 2.5404900312423706e-01 + <_> + + 0 -1 196 3.9249849505722523e-03 + + 1.6477300226688385e-01 -4.2043879628181458e-01 + <_> + + 0 -1 197 1.5850430354475975e-03 + + -2.5503370165824890e-01 3.1559389829635620e-01 + <_> + + 0 -1 198 -3.4282119013369083e-03 + + -4.0074288845062256e-01 1.1993350088596344e-01 + <_> + + 0 -1 199 -3.3538821153342724e-03 + + 3.0459630489349365e-01 -2.2311030328273773e-01 + <_> + + 0 -1 200 -6.7664748057723045e-03 + + 3.2396519184112549e-01 -9.2932380735874176e-02 + <_> + + 0 -1 201 -6.7180307814851403e-04 + + -3.2457518577575684e-01 2.1808999776840210e-01 + <_> + + 0 -1 202 2.8931829147040844e-03 + + 1.2530609965324402e-01 -4.8582470417022705e-01 + <_> + + 0 -1 203 -3.3115309197455645e-03 + + 4.0534108877182007e-01 -2.2432869672775269e-01 + <_> + + 0 -1 204 8.8509041815996170e-03 + + 1.2155570089817047e-01 -6.0243481397628784e-01 + <_> + + 0 -1 205 5.4662628099322319e-03 + + -1.6978119313716888e-01 4.0752619504928589e-01 + <_> + + 0 -1 206 4.7559391707181931e-02 + + -8.1737041473388672e-02 6.9865119457244873e-01 + <_> + + 0 -1 207 3.1745019368827343e-03 + + 1.7419810593128204e-01 -3.7237030267715454e-01 + <_> + + 0 -1 208 -5.1520839333534241e-03 + + 2.7799358963966370e-01 -2.5311779975891113e-01 + <_> + + 0 -1 209 -4.8141111619770527e-03 + + -5.8466029167175293e-01 1.5894299745559692e-01 + <_> + + 0 -1 210 2.1967150270938873e-02 + + -1.0052759945392609e-01 4.7374871373176575e-01 + <_> + + 0 -1 211 -6.0128211043775082e-03 + + 1.9820199906826019e-01 -4.2172819375991821e-01 + <_> + + 0 -1 212 4.5052049681544304e-03 + + 1.7064809799194336e-02 -4.8947790265083313e-01 + <_> + + 0 -1 213 -1.3302109437063336e-03 + + 1.8670339882373810e-01 -2.9437661170959473e-01 + <_> + + 0 -1 214 -7.3667510878294706e-04 + + -1.4788800477981567e-01 1.0121300071477890e-01 + <_> + + 0 -1 215 -1.4602739829570055e-03 + + -4.3107959628105164e-01 1.2479860335588455e-01 + <_> + + 0 -1 216 3.4185629338026047e-02 + + -5.7933650910854340e-02 5.4917758703231812e-01 + <_> + 33 + -1.0450899600982666e+00 + + <_> + + 0 -1 217 3.0665110796689987e-02 + + -3.9953279495239258e-01 3.3617529273033142e-01 + <_> + + 0 -1 218 2.8893710114061832e-03 + + -3.8745269179344177e-01 3.0567520856857300e-01 + <_> + + 0 -1 219 -1.1876110220327973e-03 + + 2.2150239348411560e-01 -2.9632321000099182e-01 + <_> + + 0 -1 220 4.0173018351197243e-03 + + 1.3102529942989349e-01 -4.8803418874740601e-01 + <_> + + 0 -1 221 4.4870697893202305e-03 + + -3.3282509446144104e-01 1.6376070678234100e-01 + <_> + + 0 -1 222 3.2539520412683487e-02 + + -5.9164509177207947e-02 6.9953370094299316e-01 + <_> + + 0 -1 223 -8.9682880789041519e-03 + + -5.6289541721343994e-01 1.1756320297718048e-01 + <_> + + 0 -1 224 -6.1743397964164615e-04 + + 1.5408250689506531e-01 -2.7350011467933655e-01 + <_> + + 0 -1 225 -3.1031211256049573e-04 + + 1.8013550341129303e-01 -3.7572589516639709e-01 + <_> + + 0 -1 226 2.8775030747056007e-02 + + -3.4200929105281830e-02 2.7645361423492432e-01 + <_> + + 0 -1 227 -6.1647972324863076e-04 + + 1.7953120172023773e-01 -3.5178318619728088e-01 + <_> + + 0 -1 228 2.1818219684064388e-03 + + -1.4532999694347382e-01 1.4900140464305878e-01 + <_> + + 0 -1 229 -2.4263889063149691e-03 + + -4.6981298923492432e-01 9.5262229442596436e-02 + <_> + + 0 -1 230 2.5438209995627403e-02 + + -2.1531460806727409e-02 3.3266928791999817e-01 + <_> + + 0 -1 231 7.9593079863116145e-04 + + 1.2254969775676727e-01 -3.5679769515991211e-01 + <_> + + 0 -1 232 5.6763447355479002e-04 + + -1.3694189488887787e-01 1.0818839818239212e-01 + <_> + + 0 -1 233 8.7481308728456497e-03 + + -9.0849868953227997e-02 5.0112378597259521e-01 + <_> + + 0 -1 234 -4.7468831762671471e-03 + + 1.1629249900579453e-01 -1.4651729725301266e-02 + <_> + + 0 -1 235 3.0644210055470467e-03 + + -2.2739639878273010e-01 2.7780678868293762e-01 + <_> + + 0 -1 236 3.1514191068708897e-03 + + 3.5710681229829788e-02 -3.2296779751777649e-01 + <_> + + 0 -1 237 -3.8335900753736496e-03 + + -4.8395419120788574e-01 9.2689603567123413e-02 + <_> + + 0 -1 238 -3.6972409579902887e-03 + + 1.6351610422134399e-01 -1.4657320082187653e-01 + <_> + + 0 -1 239 6.7644561640918255e-03 + + 8.0342940986156464e-02 -5.0272989273071289e-01 + <_> + + 0 -1 240 5.7455507339909673e-04 + + -1.9531010091304779e-01 1.2394949793815613e-01 + <_> + + 0 -1 241 1.0008309967815876e-02 + + -1.5030139684677124e-01 2.7990019321441650e-01 + <_> + + 0 -1 242 -7.2150952182710171e-03 + + 1.6882060468196869e-01 -1.2279219925403595e-01 + <_> + + 0 -1 243 1.1310850270092487e-02 + + -9.6786908805370331e-02 6.4601618051528931e-01 + <_> + + 0 -1 244 1.0049899667501450e-01 + + 2.0610159263014793e-02 -9.9988579750061035e-01 + <_> + + 0 -1 245 1.3250860385596752e-02 + + 9.3147717416286469e-02 -4.8156800866127014e-01 + <_> + + 0 -1 246 -3.9085310697555542e-01 + + 7.1057820320129395e-01 -1.6548840329051018e-02 + <_> + + 0 -1 247 2.4332199245691299e-02 + + 1.4528210461139679e-01 -2.8366720676422119e-01 + <_> + + 0 -1 248 1.0354409459978342e-03 + + -2.0017370581626892e-01 1.8794250488281250e-01 + <_> + + 0 -1 249 -7.1747899055480957e-01 + + 6.6637128591537476e-01 -5.2656259387731552e-02 + <_> + 42 + -1.0599969625473022e+00 + + <_> + + 0 -1 250 1.9620559178292751e-03 + + -4.1077700257301331e-01 1.8896859884262085e-01 + <_> + + 0 -1 251 2.1331369876861572e-02 + + 9.2599019408226013e-02 -3.9660450816154480e-01 + <_> + + 0 -1 252 -2.3037450388073921e-02 + + -7.2293937206268311e-01 9.6411719918251038e-02 + <_> + + 0 -1 253 -5.0521228462457657e-02 + + 1.8302009999752045e-01 -1.9482779502868652e-01 + <_> + + 0 -1 254 2.5330919772386551e-02 + + 1.0334759950637817e-01 -5.8018290996551514e-01 + <_> + + 0 -1 255 -4.3120220652781427e-04 + + 1.3374519348144531e-01 -2.1300980448722839e-01 + <_> + + 0 -1 256 -1.4295669643615838e-05 + + 1.8420490622520447e-01 -3.0300238728523254e-01 + <_> + + 0 -1 257 -2.8645719867199659e-03 + + 1.7371790111064911e-01 -2.1612820029258728e-01 + <_> + + 0 -1 258 1.0322510264813900e-02 + + 1.1071330308914185e-01 -4.2402949929237366e-01 + <_> + + 0 -1 259 1.3879509642720222e-02 + + -1.0993299633264542e-01 5.5458897352218628e-01 + <_> + + 0 -1 260 -1.7010340234264731e-03 + + -3.1409528851509094e-01 1.5474779903888702e-01 + <_> + + 0 -1 261 -2.7375848731026053e-04 + + 1.4674690365791321e-01 -1.2817619740962982e-01 + <_> + + 0 -1 262 3.9977379143238068e-02 + + -6.3540339469909668e-02 6.0685801506042480e-01 + <_> + + 0 -1 263 -1.2663399800658226e-02 + + 1.0982260107994080e-01 -1.2707209587097168e-01 + <_> + + 0 -1 264 1.0186760127544403e-01 + + 8.8505871593952179e-02 -5.7165622711181641e-01 + <_> + + 0 -1 265 -1.0695089586079121e-03 + + 3.4594889730215073e-02 -9.9618308246135712e-02 + <_> + + 0 -1 266 -3.4467370714992285e-03 + + 2.2871519625186920e-01 -1.9664469361305237e-01 + <_> + + 0 -1 267 -1.2329400330781937e-01 + + -1.0825649648904800e-01 2.4728389456868172e-02 + <_> + + 0 -1 268 -5.8832589536905289e-02 + + 5.5791580677032471e-01 -7.7630676329135895e-02 + <_> + + 0 -1 269 9.7795920446515083e-03 + + 9.4951488077640533e-02 -5.3767371177673340e-01 + <_> + + 0 -1 270 1.1116569861769676e-02 + + -8.9288607239723206e-02 4.6695429086685181e-01 + <_> + + 0 -1 271 -1.5398260205984116e-02 + + 9.0432487428188324e-02 -1.2233799695968628e-01 + <_> + + 0 -1 272 5.8570769615471363e-03 + + 1.0859709978103638e-01 -4.0961760282516479e-01 + <_> + + 0 -1 273 6.6174753010272980e-02 + + -4.4282642193138599e-03 -8.8055539131164551e-01 + <_> + + 0 -1 274 -1.0636489838361740e-02 + + -4.4541570544242859e-01 1.0953740030527115e-01 + <_> + + 0 -1 275 -3.1363599002361298e-02 + + 8.0546891689300537e-01 -4.9883890897035599e-02 + <_> + + 0 -1 276 9.8021561279892921e-04 + + -2.3428329825401306e-01 1.6934409737586975e-01 + <_> + + 0 -1 277 5.3463829681277275e-03 + + -1.0729180276393890e-01 2.5447541475296021e-01 + <_> + + 0 -1 278 -5.1919990219175816e-03 + + -5.1496618986129761e-01 8.5118137300014496e-02 + <_> + + 0 -1 279 1.8721649423241615e-02 + + -8.4052212536334991e-02 4.7836899757385254e-01 + <_> + + 0 -1 280 3.7875440903007984e-03 + + -2.3145659267902374e-01 1.6052989661693573e-01 + <_> + + 0 -1 281 6.8765478208661079e-03 + + 9.6559382975101471e-02 -2.3832960426807404e-01 + <_> + + 0 -1 282 -5.4661519825458527e-03 + + -3.7871730327606201e-01 8.7851487100124359e-02 + <_> + + 0 -1 283 -1.5829449519515038e-02 + + 5.2159512042999268e-01 -7.3916867375373840e-02 + <_> + + 0 -1 284 1.2771990150213242e-02 + + 1.0658729821443558e-01 -3.2850459218025208e-01 + <_> + + 0 -1 285 4.7000780701637268e-02 + + -2.9548000544309616e-02 4.8469349741935730e-01 + <_> + + 0 -1 286 1.1224800255149603e-03 + + -2.1395659446716309e-01 1.5407760441303253e-01 + <_> + + 0 -1 287 -1.0136750061064959e-03 + + 2.3574739694595337e-01 -1.4536799490451813e-01 + <_> + + 0 -1 288 5.2841319702565670e-03 + + 8.0536216497421265e-02 -3.6417248845100403e-01 + <_> + + 0 -1 289 -1.7608689144253731e-02 + + 5.3858822584152222e-01 -3.5741850733757019e-02 + <_> + + 0 -1 290 3.4710608422756195e-02 + + -4.3261460959911346e-02 7.7817600965499878e-01 + <_> + + 0 -1 291 1.6450349241495132e-02 + + 4.1815090924501419e-02 -3.4912678599357605e-01 + <_> + 45 + -1.0216469764709473e+00 + + <_> + + 0 -1 292 -1.7846419941633940e-03 + + 2.2014810144901276e-01 -3.6912658810615540e-01 + <_> + + 0 -1 293 -6.1350408941507339e-04 + + -3.0695998668670654e-01 9.7717791795730591e-02 + <_> + + 0 -1 294 -2.5726810563355684e-03 + + -3.7789058685302734e-01 1.7042149603366852e-01 + <_> + + 0 -1 295 8.8661757763475180e-04 + + -3.7929078936576843e-01 9.3289971351623535e-02 + <_> + + 0 -1 296 3.5716239362955093e-02 + + 7.3169313371181488e-02 -6.1792898178100586e-01 + <_> + + 0 -1 297 3.5162840038537979e-02 + + -1.2328250333666801e-02 4.4894638657569885e-01 + <_> + + 0 -1 298 -5.8216741308569908e-03 + + -4.9501991271972656e-01 8.8005952537059784e-02 + <_> + + 0 -1 299 -7.7909301035106182e-04 + + 1.1154119670391083e-01 -2.8316551446914673e-01 + <_> + + 0 -1 300 -6.8164491094648838e-03 + + 1.8434180319309235e-01 -2.3727069795131683e-01 + <_> + + 0 -1 301 9.0218139812350273e-03 + + -5.3773559629917145e-02 2.6174989342689514e-01 + <_> + + 0 -1 302 -6.7481878213584423e-03 + + -5.0475108623504639e-01 7.6614417135715485e-02 + <_> + + 0 -1 303 7.5771231204271317e-03 + + -1.1926110088825226e-01 3.4210419654846191e-01 + <_> + + 0 -1 304 -4.6335519291460514e-03 + + -4.9088281393051147e-01 6.9542020559310913e-02 + <_> + + 0 -1 305 4.1346959769725800e-03 + + -8.1591427326202393e-02 4.7879660129547119e-01 + <_> + + 0 -1 306 -9.8444558680057526e-03 + + 2.0124210417270660e-01 -2.3769280314445496e-01 + <_> + + 0 -1 307 -3.4897070378065109e-02 + + -9.1024678945541382e-01 1.8579540774226189e-02 + <_> + + 0 -1 308 -3.5042490344494581e-04 + + 1.2479469925165176e-01 -3.0717149376869202e-01 + <_> + + 0 -1 309 -9.4668623059988022e-03 + + 1.1332949995994568e-01 -1.6115890443325043e-01 + <_> + + 0 -1 310 2.2053409367799759e-02 + + -7.9784400761127472e-02 6.0739010572433472e-01 + <_> + + 0 -1 311 -7.2947797889355570e-05 + + 1.4449119567871094e-01 -1.3706150650978088e-01 + <_> + + 0 -1 312 -7.5134839862585068e-03 + + -3.0744421482086182e-01 1.0279080271720886e-01 + <_> + + 0 -1 313 1.0311939753592014e-02 + + -7.0246197283267975e-02 4.8307010531425476e-01 + <_> + + 0 -1 314 9.4670448452234268e-03 + + 7.0281803607940674e-02 -4.7069519758224487e-01 + <_> + + 0 -1 315 -3.0116239562630653e-02 + + 5.2378559112548828e-01 -3.7109669297933578e-02 + <_> + + 0 -1 316 -1.2667849659919739e-02 + + -6.0825890302658081e-01 5.0444670021533966e-02 + <_> + + 0 -1 317 2.2987429983913898e-03 + + -1.1808679997920990e-01 1.7393890023231506e-01 + <_> + + 0 -1 318 2.5533209554851055e-03 + + -1.6625979542732239e-01 1.9768959283828735e-01 + <_> + + 0 -1 319 -3.3218199014663696e-01 + + -9.5407789945602417e-01 4.1291080415248871e-03 + <_> + + 0 -1 320 5.4485369473695755e-03 + + -9.1220542788505554e-02 3.9834749698638916e-01 + <_> + + 0 -1 321 4.7633191570639610e-03 + + -1.2069889903068542e-01 1.6169339418411255e-01 + <_> + + 0 -1 322 4.4371229596436024e-03 + + 8.5928186774253845e-02 -4.4427189230918884e-01 + <_> + + 0 -1 323 2.7019889093935490e-03 + + -1.9511219859123230e-01 7.1141660213470459e-02 + <_> + + 0 -1 324 -1.4219670556485653e-03 + + 1.9089500606060028e-01 -1.8880489468574524e-01 + <_> + + 0 -1 325 -6.9531630724668503e-03 + + -2.6191520690917969e-01 7.7488146722316742e-02 + <_> + + 0 -1 326 -2.6554360985755920e-01 + + 4.7893580794334412e-01 -7.8830257058143616e-02 + <_> + + 0 -1 327 5.4960828274488449e-03 + + 6.4748808741569519e-02 -4.0898790955543518e-01 + <_> + + 0 -1 328 1.6060929745435715e-02 + + 9.4868503510951996e-02 -3.5040768980979919e-01 + <_> + + 0 -1 329 -3.5279421135783195e-03 + + 2.2704540193080902e-01 -1.5011039376258850e-01 + <_> + + 0 -1 330 1.5189720317721367e-02 + + -8.6033642292022705e-02 5.0375241041183472e-01 + <_> + + 0 -1 331 9.8117031157016754e-03 + + 9.1945856809616089e-02 -2.7134710550308228e-01 + <_> + + 0 -1 332 -8.9835934340953827e-03 + + -3.5721930861473083e-01 1.1564330011606216e-01 + <_> + + 0 -1 333 2.5472430512309074e-02 + + -3.8861878216266632e-02 5.0707322359085083e-01 + <_> + + 0 -1 334 1.3594819465652108e-03 + + -1.5127420425415039e-01 2.3332439363002777e-01 + <_> + + 0 -1 335 1.4673129655420780e-02 + + 7.6386481523513794e-02 -4.3126261234283447e-01 + <_> + + 0 -1 336 -2.1757239475846291e-02 + + 6.0306608676910400e-01 -5.7926669716835022e-02 + <_> + 49 + -1.0149190425872803e+00 + + <_> + + 0 -1 337 -1.9122850149869919e-02 + + 2.1423059701919556e-01 -4.0178310871124268e-01 + <_> + + 0 -1 338 -4.0749661275185645e-04 + + 1.0837800055742264e-01 -9.7847007215023041e-02 + <_> + + 0 -1 339 1.8419560045003891e-02 + + 9.4817012548446655e-02 -4.4825899600982666e-01 + <_> + + 0 -1 340 -3.0946850893087685e-04 + + 1.1567220091819763e-01 -6.9291338324546814e-02 + <_> + + 0 -1 341 2.4416830390691757e-02 + + -2.6403778791427612e-01 1.4588509500026703e-01 + <_> + + 0 -1 342 3.9483308792114258e-03 + + 7.8703567385673523e-02 -3.9770650863647461e-01 + <_> + + 0 -1 343 1.5498059801757336e-02 + + -6.8623371422290802e-02 6.3598757982254028e-01 + <_> + + 0 -1 344 1.0397369973361492e-02 + + 5.3116258233785629e-02 -2.4757599830627441e-01 + <_> + + 0 -1 345 1.0350650409236550e-03 + + -2.2953610122203827e-01 2.1623679995536804e-01 + <_> + + 0 -1 346 -6.9717521546408534e-04 + + 1.6330949962139130e-01 -2.7930000424385071e-01 + <_> + + 0 -1 347 1.1055100476369262e-03 + + -2.6721170544624329e-01 1.3809490203857422e-01 + <_> + + 0 -1 348 1.8128760159015656e-02 + + 7.8602522611618042e-02 -3.3748328685760498e-01 + <_> + + 0 -1 349 -1.4303029747679830e-03 + + 1.5668049454689026e-01 -2.5422498583793640e-01 + <_> + + 0 -1 350 1.0650220327079296e-02 + + -4.1638601571321487e-02 3.2634070515632629e-01 + <_> + + 0 -1 351 -1.0680139530450106e-03 + + 1.7996980249881744e-01 -2.0673060417175293e-01 + <_> + + 0 -1 352 -8.0095082521438599e-03 + + -2.8778979182243347e-01 7.5492449104785919e-02 + <_> + + 0 -1 353 -1.1857559904456139e-02 + + -5.5485212802886963e-01 4.7465000301599503e-02 + <_> + + 0 -1 354 -1.9440150260925293e-01 + + 4.9564599990844727e-01 -6.8522267043590546e-02 + <_> + + 0 -1 355 1.2786169536411762e-02 + + -5.8201011270284653e-02 5.1194858551025391e-01 + <_> + + 0 -1 356 1.1360739590600133e-03 + + -2.1216529607772827e-01 1.4639540016651154e-01 + <_> + + 0 -1 357 -3.7541511119343340e-04 + + 1.1406060308218002e-01 -2.7936661243438721e-01 + <_> + + 0 -1 358 6.2142009846866131e-03 + + 2.8568789362907410e-02 -3.2485058903694153e-01 + <_> + + 0 -1 359 4.5166439376771450e-03 + + -9.5556378364562988e-02 3.6032339930534363e-01 + <_> + + 0 -1 360 -1.7354219453409314e-03 + + -8.0804876983165741e-02 5.3851570934057236e-02 + <_> + + 0 -1 361 -6.9608418270945549e-03 + + -6.0131508111953735e-01 4.5509491115808487e-02 + <_> + + 0 -1 362 8.7833311408758163e-03 + + -9.4497971236705780e-02 3.1924161314964294e-01 + <_> + + 0 -1 363 -2.0243569742888212e-03 + + 2.6737558841705322e-01 -1.1679279804229736e-01 + <_> + + 0 -1 364 5.6362948380410671e-03 + + 4.6491090208292007e-02 -2.3982259631156921e-01 + <_> + + 0 -1 365 -2.1751220338046551e-03 + + -3.1831741333007812e-01 1.1634550243616104e-01 + <_> + + 0 -1 366 2.5424890220165253e-02 + + 7.5600057840347290e-02 -3.7359631061553955e-01 + <_> + + 0 -1 367 3.9950129576027393e-04 + + -2.6206868886947632e-01 1.4345559477806091e-01 + <_> + + 0 -1 368 -3.9724060334265232e-03 + + 2.0395089685916901e-01 -1.1896310001611710e-01 + <_> + + 0 -1 369 2.4637179449200630e-03 + + -1.3687339425086975e-01 3.4098258614540100e-01 + <_> + + 0 -1 370 1.4397709630429745e-02 + + 2.4846889078617096e-02 -6.5415948629379272e-01 + <_> + + 0 -1 371 -1.4848919818177819e-05 + + 1.3884930312633514e-01 -2.1077479422092438e-01 + <_> + + 0 -1 372 -3.8339510560035706e-02 + + 5.8668392896652222e-01 -3.6245860159397125e-02 + <_> + + 0 -1 373 -5.4605712648481131e-04 + + 2.1259330213069916e-01 -1.3791069388389587e-01 + <_> + + 0 -1 374 1.3036499731242657e-02 + + 5.0619971007108688e-02 -2.3150099813938141e-01 + <_> + + 0 -1 375 -2.4273560848087072e-03 + + 2.4302999675273895e-01 -1.1315950006246567e-01 + <_> + + 0 -1 376 -6.3351681455969810e-03 + + -3.5549488663673401e-01 9.4948403537273407e-02 + <_> + + 0 -1 377 -5.7510860264301300e-02 + + 4.9378138780593872e-01 -6.0664121061563492e-02 + <_> + + 0 -1 378 6.8376341369003057e-04 + + -1.9417250156402588e-01 1.4234590530395508e-01 + <_> + + 0 -1 379 8.8113872334361076e-03 + + 4.7562059015035629e-02 -5.8416491746902466e-01 + <_> + + 0 -1 380 1.0788169689476490e-02 + + -4.6855889260768890e-02 1.6548010706901550e-01 + <_> + + 0 -1 381 -1.3571690069511533e-03 + + -3.2510679960250854e-01 9.4090476632118225e-02 + <_> + + 0 -1 382 -1.0195979848504066e-02 + + -1.4696849882602692e-01 2.6246059685945511e-02 + <_> + + 0 -1 383 -1.2560819741338491e-03 + + 2.2853380441665649e-01 -1.6265660524368286e-01 + <_> + + 0 -1 384 6.6750420955941081e-04 + + -1.3430669903755188e-01 1.3987569510936737e-01 + <_> + + 0 -1 385 2.0975170191377401e-03 + + -1.2987610697746277e-01 1.9978469610214233e-01 + <_> + 53 + -9.3152678012847900e-01 + + <_> + + 0 -1 386 -3.6917610559612513e-03 + + 2.2682790458202362e-01 -4.1167381405830383e-01 + <_> + + 0 -1 387 -9.4609148800373077e-03 + + 1.6305020451545715e-01 -2.2949010133743286e-01 + <_> + + 0 -1 388 3.3874800428748131e-03 + + 7.7644690871238708e-02 -4.7465118765830994e-01 + <_> + + 0 -1 389 3.3596849534660578e-03 + + -1.4722810685634613e-01 1.3755659759044647e-01 + <_> + + 0 -1 390 -2.2649099119007587e-03 + + -2.9027861356735229e-01 1.2261869758367538e-01 + <_> + + 0 -1 391 -5.5420072749257088e-04 + + 1.1591990292072296e-01 -2.3066529631614685e-01 + <_> + + 0 -1 392 1.9706019666045904e-03 + + 1.1808300018310547e-01 -3.7879431247711182e-01 + <_> + + 0 -1 393 1.7503080889582634e-02 + + -9.4161599874496460e-02 4.7933238744735718e-01 + <_> + + 0 -1 394 -2.9575270600616932e-03 + + 1.7336699366569519e-01 -3.1673321127891541e-01 + <_> + + 0 -1 395 -2.6238700747489929e-01 + + -7.4405288696289062e-01 8.9512793347239494e-03 + <_> + + 0 -1 396 5.5493800900876522e-03 + + -2.4088740348815918e-01 1.4212040603160858e-01 + <_> + + 0 -1 397 -1.4842569828033447e-02 + + 5.5166311562061310e-02 -8.5363000631332397e-02 + <_> + + 0 -1 398 -1.8193490803241730e-02 + + -7.5389099121093750e-01 4.4062498956918716e-02 + <_> + + 0 -1 399 -1.9381130114197731e-03 + + 1.4762139320373535e-01 -1.4214770495891571e-01 + <_> + + 0 -1 400 -6.1375028453767300e-03 + + -5.4175209999084473e-01 5.2872691303491592e-02 + <_> + + 0 -1 401 1.6630079597234726e-02 + + -6.0005810111761093e-02 5.2294141054153442e-01 + <_> + + 0 -1 402 -9.7470665350556374e-03 + + -3.1776770949363708e-01 9.4077728688716888e-02 + <_> + + 0 -1 403 -3.9159679412841797e-01 + + 5.1550501585006714e-01 -8.6178213357925415e-02 + <_> + + 0 -1 404 1.0457860305905342e-02 + + -5.4442230612039566e-02 5.5086338520050049e-01 + <_> + + 0 -1 405 9.2479586601257324e-02 + + 9.5865959301590919e-03 -7.5205242633819580e-01 + <_> + + 0 -1 406 -1.3383329845964909e-02 + + -2.5909280776977539e-01 1.2255199998617172e-01 + <_> + + 0 -1 407 -1.9297929480671883e-02 + + -1.8686549365520477e-01 4.2670380324125290e-02 + <_> + + 0 -1 408 -1.1118740076199174e-03 + + 1.4586099982261658e-01 -2.2742809355258942e-01 + <_> + + 0 -1 409 2.3209059610962868e-02 + + 2.1769199520349503e-02 -2.4001930654048920e-01 + <_> + + 0 -1 410 6.9435071200132370e-03 + + -8.4814570844173431e-02 3.8388100266456604e-01 + <_> + + 0 -1 411 -1.0249669849872589e-01 + + -7.0618611574172974e-01 1.2580949813127518e-02 + <_> + + 0 -1 412 -1.4036430045962334e-02 + + -3.8427880406379700e-01 8.7678723037242889e-02 + <_> + + 0 -1 413 6.8071340210735798e-03 + + -7.5941346585750580e-02 7.6014332473278046e-02 + <_> + + 0 -1 414 4.8163239844143391e-03 + + -1.6402910649776459e-01 2.0124110579490662e-01 + <_> + + 0 -1 415 -3.0274710152298212e-03 + + -2.8118729591369629e-01 6.8671241402626038e-02 + <_> + + 0 -1 416 -1.6530510038137436e-03 + + 2.1427379548549652e-01 -1.3038359582424164e-01 + <_> + + 0 -1 417 -3.9757499471306801e-03 + + -2.3737999796867371e-01 5.1290549337863922e-02 + <_> + + 0 -1 418 6.9589749909937382e-03 + + -1.3246279954910278e-01 2.3703409731388092e-01 + <_> + + 0 -1 419 7.2270620148628950e-04 + + 5.0478070974349976e-02 -1.3544809818267822e-01 + <_> + + 0 -1 420 1.5057729557156563e-02 + + -6.6954463720321655e-02 4.5368999242782593e-01 + <_> + + 0 -1 421 6.5838429145514965e-03 + + 3.9054669439792633e-02 -1.9516509771347046e-01 + <_> + + 0 -1 422 -2.9128929600119591e-03 + + 1.7604969441890717e-01 -1.5639689564704895e-01 + <_> + + 0 -1 423 6.4386397600173950e-01 + + -1.1777699925005436e-02 1.0000569820404053e+00 + <_> + + 0 -1 424 5.1160277798771858e-03 + + 9.5464669167995453e-02 -3.7832370400428772e-01 + <_> + + 0 -1 425 6.8325497210025787e-02 + + -3.9297499461099505e-04 -9.9986249208450317e-01 + <_> + + 0 -1 426 4.4071719050407410e-02 + + 2.8716549277305603e-02 -9.0306490659713745e-01 + <_> + + 0 -1 427 -1.5712520107626915e-02 + + 2.4888029694557190e-01 -5.3066261112689972e-02 + <_> + + 0 -1 428 -3.9486829191446304e-03 + + -5.0214129686355591e-01 5.2089609205722809e-02 + <_> + + 0 -1 429 1.1841469677165151e-03 + + 6.2122888863086700e-02 -1.6479890048503876e-01 + <_> + + 0 -1 430 -1.1385709792375565e-01 + + 5.6728571653366089e-01 -3.8864318281412125e-02 + <_> + + 0 -1 431 6.2493737787008286e-03 + + 8.7858140468597412e-02 -2.8675949573516846e-01 + <_> + + 0 -1 432 -2.3781529162079096e-03 + + 2.6684141159057617e-01 -9.3291386961936951e-02 + <_> + + 0 -1 433 -6.3620522618293762e-02 + + 1.5153369307518005e-01 -1.5354029834270477e-02 + <_> + + 0 -1 434 7.9275481402873993e-03 + + 8.8268518447875977e-02 -3.1872791051864624e-01 + <_> + + 0 -1 435 1.0556660126894712e-03 + + -1.0226110368967056e-01 6.0546699911355972e-02 + <_> + + 0 -1 436 9.1879200190305710e-03 + + 8.0963402986526489e-02 -3.5031539201736450e-01 + <_> + + 0 -1 437 3.9727380499243736e-03 + + -1.0334850102663040e-01 2.7450188994407654e-01 + <_> + + 0 -1 438 1.7149309860542417e-03 + + -1.2329679727554321e-01 2.1561819314956665e-01 + <_> + 55 + -9.3984860181808472e-01 + + <_> + + 0 -1 439 -1.4547890052199364e-02 + + -5.7042872905731201e-01 1.0164090245962143e-01 + <_> + + 0 -1 440 -1.2570459512062371e-04 + + 7.7566891908645630e-02 -2.9524150490760803e-01 + <_> + + 0 -1 441 9.4022490084171295e-03 + + -3.2618519663810730e-01 1.3688039779663086e-01 + <_> + + 0 -1 442 -5.1469001919031143e-03 + + -2.2486360371112823e-01 1.4886389672756195e-01 + <_> + + 0 -1 443 -3.1212199246510863e-04 + + 1.1287149786949158e-01 -3.2888731360435486e-01 + <_> + + 0 -1 444 1.8742609769105911e-02 + + -1.8080070614814758e-02 3.0115321278572083e-01 + <_> + + 0 -1 445 2.9675778932869434e-03 + + -2.5948849320411682e-01 1.3308060169219971e-01 + <_> + + 0 -1 446 -3.0295079573988914e-02 + + -6.0041320323944092e-01 3.3516548573970795e-02 + <_> + + 0 -1 447 6.4835487864911556e-03 + + -7.7768087387084961e-02 4.6268320083618164e-01 + <_> + + 0 -1 448 2.2889559622853994e-03 + + 6.0411829501390457e-02 -1.7498730123043060e-01 + <_> + + 0 -1 449 -1.6078320331871510e-03 + + -2.9557180404663086e-01 1.5449790656566620e-01 + <_> + + 0 -1 450 -2.3348669707775116e-01 + + -6.3751947879791260e-01 1.3748309575021267e-02 + <_> + + 0 -1 451 5.8999718166887760e-03 + + 1.2713789939880371e-01 -3.2689490914344788e-01 + <_> + + 0 -1 452 1.2073719874024391e-02 + + 1.6614260151982307e-02 -2.2707170248031616e-01 + <_> + + 0 -1 453 -5.6356011191383004e-04 + + 1.6879190504550934e-01 -1.9605310261249542e-01 + <_> + + 0 -1 454 1.7435080371797085e-03 + + -1.3831000030040741e-01 2.2103509306907654e-01 + <_> + + 0 -1 455 6.6066621802747250e-03 + + 4.4354528188705444e-02 -6.7365241050720215e-01 + <_> + + 0 -1 456 -5.9419698081910610e-03 + + 1.7569009959697723e-01 -1.3697220385074615e-01 + <_> + + 0 -1 457 4.9261527601629496e-04 + + -2.1035130321979523e-01 1.3241830468177795e-01 + <_> + + 0 -1 458 -3.6582869943231344e-03 + + 1.5420369803905487e-01 -1.0563220083713531e-01 + <_> + + 0 -1 459 -1.4477679505944252e-03 + + -2.8920960426330566e-01 1.4950390160083771e-01 + <_> + + 0 -1 460 -1.0310580255463719e-03 + + 8.8572971522808075e-02 -9.0375833213329315e-02 + <_> + + 0 -1 461 3.2927519641816616e-03 + + -1.1087729781866074e-01 3.0003741383552551e-01 + <_> + + 0 -1 462 -1.6668019816279411e-03 + + -6.2054108828306198e-02 2.2652259469032288e-01 + <_> + + 0 -1 463 1.3452100101858377e-03 + + 9.2012971639633179e-02 -3.5944160819053650e-01 + <_> + + 0 -1 464 -1.4981569722294807e-02 + + 3.6636090278625488e-01 -6.4556807279586792e-02 + <_> + + 0 -1 465 6.2536462210118771e-03 + + 6.9381363689899445e-02 -4.1023838520050049e-01 + <_> + + 0 -1 466 5.0937399268150330e-02 + + 1.7869930714368820e-02 -6.0524070262908936e-01 + <_> + + 0 -1 467 1.0756580159068108e-03 + + -2.3777949810028076e-01 1.4223319292068481e-01 + <_> + + 0 -1 468 -4.1086040437221527e-03 + + 1.4915379881858826e-01 -1.9213069975376129e-01 + <_> + + 0 -1 469 -1.3338520191609859e-02 + + -4.9711030721664429e-01 6.5755158662796021e-02 + <_> + + 0 -1 470 3.1997971236705780e-02 + + -6.4927592873573303e-02 6.6577041149139404e-01 + <_> + + 0 -1 471 -4.9686059355735779e-02 + + 5.0676888227462769e-01 -6.4676910638809204e-02 + <_> + + 0 -1 472 6.0286428779363632e-03 + + 8.8214896619319916e-02 -2.7923619747161865e-01 + <_> + + 0 -1 473 -6.9053061306476593e-03 + + -6.1452347040176392e-01 3.5631489008665085e-02 + <_> + + 0 -1 474 5.8130919933319092e-03 + + -9.3653626739978790e-02 9.9817357957363129e-02 + <_> + + 0 -1 475 -1.1030419729650021e-02 + + 4.5798170566558838e-01 -6.5124973654747009e-02 + <_> + + 0 -1 476 -1.5703570097684860e-03 + + 4.7113660722970963e-02 -1.3347460329532623e-01 + <_> + + 0 -1 477 4.6482901088893414e-03 + + 7.3932677507400513e-02 -4.2145860195159912e-01 + <_> + + 0 -1 478 5.0479872152209282e-04 + + -2.0517270267009735e-01 9.5128253102302551e-02 + <_> + + 0 -1 479 2.6125760748982430e-02 + + -6.8816967308521271e-02 4.2644789814949036e-01 + <_> + + 0 -1 480 6.4811189658939838e-03 + + 1.1302389949560165e-01 -4.7021061182022095e-01 + <_> + + 0 -1 481 -4.5484181493520737e-02 + + 5.4101467132568359e-01 -5.6804839521646500e-02 + <_> + + 0 -1 482 6.8956136703491211e-02 + + 3.4444119781255722e-02 -1.7411549389362335e-01 + <_> + + 0 -1 483 -2.0358948968350887e-03 + + 1.3366940617561340e-01 -2.0985920727252960e-01 + <_> + + 0 -1 484 1.4390050200745463e-03 + + -1.6449619829654694e-01 9.8886348307132721e-02 + <_> + + 0 -1 485 3.0180480331182480e-02 + + 8.7635383009910583e-02 -3.9464119076728821e-01 + <_> + + 0 -1 486 -3.8663588929921389e-03 + + 1.5964619815349579e-01 -1.1840829998254776e-01 + <_> + + 0 -1 487 1.0753490030765533e-02 + + -5.7142060250043869e-02 5.0125277042388916e-01 + <_> + + 0 -1 488 1.0978150181472301e-02 + + 3.5985160619020462e-02 -3.8646480441093445e-01 + <_> + + 0 -1 489 -7.8152219066396356e-04 + + 1.8248090147972107e-01 -1.6435949504375458e-01 + <_> + + 0 -1 490 -6.9936108775436878e-03 + + -2.6556238532066345e-01 9.4436101615428925e-02 + <_> + + 0 -1 491 2.3125730454921722e-02 + + -5.9101939201354980e-02 5.7359057664871216e-01 + <_> + + 0 -1 492 -1.7055520787835121e-02 + + -5.4567247629165649e-01 2.7153130620718002e-02 + <_> + + 0 -1 493 1.5192289836704731e-02 + + 9.2580981552600861e-02 -2.9735139012336731e-01 + <_> + 53 + -8.2538652420043945e-01 + + <_> + + 0 -1 494 -2.1589139476418495e-02 + + 3.3779260516166687e-01 -2.6725459098815918e-01 + <_> + + 0 -1 495 6.3885431736707687e-03 + + -2.6759129762649536e-01 2.1438689529895782e-01 + <_> + + 0 -1 496 -2.4394609499722719e-03 + + 1.8841089308261871e-01 -2.3495130240917206e-01 + <_> + + 0 -1 497 3.9824391715228558e-03 + + 4.6689908951520920e-02 -1.7984829843044281e-01 + <_> + + 0 -1 498 -3.1252959161065519e-04 + + 1.7267709970474243e-01 -1.8782779574394226e-01 + <_> + + 0 -1 499 3.3181109465658665e-03 + + 1.2081120163202286e-01 -3.2373869419097900e-01 + <_> + + 0 -1 500 -7.0711369626224041e-03 + + -2.7498379349708557e-01 1.3868269324302673e-01 + <_> + + 0 -1 501 4.4392608106136322e-03 + + -2.2279019653797150e-01 1.7155140638351440e-01 + <_> + + 0 -1 502 2.1352670155465603e-03 + + -1.1322859674692154e-01 2.8428959846496582e-01 + <_> + + 0 -1 503 -4.0205409750342369e-03 + + -2.4542550742626190e-01 9.4957500696182251e-02 + <_> + + 0 -1 504 -6.5228617750108242e-03 + + 3.2106789946556091e-01 -9.7372367978096008e-02 + <_> + + 0 -1 505 4.4146090658614412e-05 + + -1.5269330143928528e-01 8.5128836333751678e-02 + <_> + + 0 -1 506 4.7606039792299271e-02 + + 7.9339757561683655e-02 -2.9599419236183167e-01 + <_> + + 0 -1 507 4.0928661823272705e-02 + + -3.5142261534929276e-02 3.7593579292297363e-01 + <_> + + 0 -1 508 -1.1161889880895615e-02 + + -2.6747810840606689e-01 8.9181788265705109e-02 + <_> + + 0 -1 509 -2.9888451099395752e-01 + + 4.8014399409294128e-01 -7.2485052049160004e-02 + <_> + + 0 -1 510 1.1514360085129738e-02 + + -5.9218250215053558e-02 4.0962639451026917e-01 + <_> + + 0 -1 511 -2.6182739529758692e-03 + + -1.8478739261627197e-01 3.9801560342311859e-02 + <_> + + 0 -1 512 -1.2829460320062935e-04 + + 1.0710919648408890e-01 -2.4155279994010925e-01 + <_> + + 0 -1 513 -6.9328160025179386e-03 + + -2.9845720529556274e-01 4.5657958835363388e-02 + <_> + + 0 -1 514 -6.3937888480722904e-03 + + 1.8363510072231293e-01 -1.4049419760704041e-01 + <_> + + 0 -1 515 4.1702711023390293e-03 + + -5.1890019327402115e-02 1.0211580246686935e-01 + <_> + + 0 -1 516 1.0390999726951122e-02 + + -1.3426989316940308e-01 1.9137309491634369e-01 + <_> + + 0 -1 517 1.3004739768803120e-02 + + -4.5922718942165375e-02 3.0526930093765259e-01 + <_> + + 0 -1 518 -4.0645021945238113e-03 + + -4.8477160930633545e-01 6.9338463246822357e-02 + <_> + + 0 -1 519 -3.7050418904982507e-04 + + 1.0090719908475876e-01 -6.8911276757717133e-02 + <_> + + 0 -1 520 8.8882551062852144e-04 + + -1.6742789745330811e-01 1.8965889513492584e-01 + <_> + + 0 -1 521 -4.8583559691905975e-03 + + -4.0789389610290527e-01 5.1483351737260818e-02 + <_> + + 0 -1 522 4.4327960349619389e-03 + + -1.4262509346008301e-01 1.8987190723419189e-01 + <_> + + 0 -1 523 2.0999709144234657e-02 + + 9.2153772711753845e-02 -3.0773550271987915e-01 + <_> + + 0 -1 524 -2.2740170825272799e-03 + + 1.5176279842853546e-01 -1.6528700292110443e-01 + <_> + + 0 -1 525 -1.5075540170073509e-02 + + -3.1039240956306458e-01 6.5696939826011658e-02 + <_> + + 0 -1 526 9.5290662720799446e-03 + + -6.7693017423152924e-02 4.0692031383514404e-01 + <_> + + 0 -1 527 1.2057139538228512e-03 + + 4.3188188225030899e-02 -1.8454369902610779e-01 + <_> + + 0 -1 528 -2.4757070466876030e-02 + + 6.6890978813171387e-01 -3.4418709576129913e-02 + <_> + + 0 -1 529 3.0408669263124466e-03 + + -1.3256159424781799e-01 9.5131039619445801e-02 + <_> + + 0 -1 530 -1.5181970084086061e-03 + + 1.2939499318599701e-01 -1.8558539450168610e-01 + <_> + + 0 -1 531 -2.4845359846949577e-02 + + -7.3013377189636230e-01 9.4545418396592140e-03 + <_> + + 0 -1 532 -8.1413304433226585e-03 + + 1.1521799862384796e-01 -1.9038149714469910e-01 + <_> + + 0 -1 533 -4.2350329458713531e-03 + + 7.2733633220195770e-02 -1.0841889679431915e-01 + <_> + + 0 -1 534 9.9135711789131165e-03 + + -8.4218956530094147e-02 4.7613239288330078e-01 + <_> + + 0 -1 535 -2.7879870031028986e-03 + + -1.2846939265727997e-01 6.5720662474632263e-02 + <_> + + 0 -1 536 2.6451589073985815e-03 + + 8.9269757270812988e-02 -2.6216679811477661e-01 + <_> + + 0 -1 537 -2.6683490723371506e-02 + + 8.9870773255825043e-02 -9.6914090216159821e-02 + <_> + + 0 -1 538 3.1197380740195513e-03 + + -1.1731740087270737e-01 2.2004860639572144e-01 + <_> + + 0 -1 539 -2.3388290405273438e-01 + + -9.0905857086181641e-01 5.6871720589697361e-03 + <_> + + 0 -1 540 1.0922820307314396e-02 + + 8.5061840713024139e-02 -3.0725648999214172e-01 + <_> + + 0 -1 541 9.4858808442950249e-03 + + -2.2317569702863693e-02 3.3745709061622620e-01 + <_> + + 0 -1 542 -5.1413412438705564e-04 + + 1.4860659837722778e-01 -1.5598359704017639e-01 + <_> + + 0 -1 543 6.5561588853597641e-03 + + 6.6693432629108429e-02 -2.9945740103721619e-01 + <_> + + 0 -1 544 9.8293996416032314e-04 + + -1.9923539459705353e-01 1.4816479384899139e-01 + <_> + + 0 -1 545 -1.8866109894588590e-03 + + 8.6462371051311493e-02 -1.6101740300655365e-01 + <_> + + 0 -1 546 2.7264489326626062e-03 + + -8.2049086689949036e-02 3.8679501414299011e-01 + <_> + 60 + -8.3464938402175903e-01 + + <_> + + 0 -1 547 -1.2602520175278187e-02 + + 2.2423070669174194e-01 -3.3462178707122803e-01 + <_> + + 0 -1 548 2.5659699458628893e-03 + + 8.5756540298461914e-02 -3.2376360893249512e-01 + <_> + + 0 -1 549 -1.2003120500594378e-03 + + 1.4650370180606842e-01 -3.0306750535964966e-01 + <_> + + 0 -1 550 4.7978968359529972e-03 + + -2.4725909531116486e-01 5.2705809473991394e-02 + <_> + + 0 -1 551 -5.9380318270996213e-04 + + -1.8883049488067627e-01 1.5490350127220154e-01 + <_> + + 0 -1 552 8.1017091870307922e-03 + + 1.0764879733324051e-01 -2.4738930165767670e-01 + <_> + + 0 -1 553 -6.8427261430770159e-04 + + 1.8282850086688995e-01 -1.6550099849700928e-01 + <_> + + 0 -1 554 4.5279348269104958e-03 + + -5.5668760091066360e-02 4.1382691264152527e-01 + <_> + + 0 -1 555 3.8289420772343874e-03 + + -2.2222219407558441e-01 1.5282329916954041e-01 + <_> + + 0 -1 556 -6.2229200266301632e-03 + + -3.2351690530776978e-01 6.8372547626495361e-02 + <_> + + 0 -1 557 -6.1763478443026543e-03 + + -3.9912268519401550e-01 7.7707469463348389e-02 + <_> + + 0 -1 558 -8.7820261716842651e-02 + + 5.8577078580856323e-01 -5.3584650158882141e-02 + <_> + + 0 -1 559 -6.8017458543181419e-03 + + -4.3307110667228699e-01 6.2693849205970764e-02 + <_> + + 0 -1 560 1.0741569567471743e-03 + + -1.1966490000486374e-01 5.5397849529981613e-02 + <_> + + 0 -1 561 -3.0490919947624207e-02 + + -2.3663240671157837e-01 1.0002999752759933e-01 + <_> + + 0 -1 562 5.1879119127988815e-02 + + -3.6418840289115906e-02 7.3392897844314575e-01 + <_> + + 0 -1 563 8.6805049795657396e-04 + + -1.7705479264259338e-01 1.4985239505767822e-01 + <_> + + 0 -1 564 4.8424140550196171e-03 + + -4.6208251267671585e-02 1.3162529468536377e-01 + <_> + + 0 -1 565 9.1674225404858589e-03 + + 9.9181063473224640e-02 -2.0292450487613678e-01 + <_> + + 0 -1 566 -5.6356228888034821e-03 + + 8.7860167026519775e-02 -3.7438090890645981e-02 + <_> + + 0 -1 567 -3.8375150412321091e-02 + + 4.9721479415893555e-01 -4.3815169483423233e-02 + <_> + + 0 -1 568 8.9894384145736694e-03 + + 9.4126552343368530e-02 -3.0227750539779663e-01 + <_> + + 0 -1 569 -1.1650560190901160e-04 + + 1.3361050188541412e-01 -1.8932069838047028e-01 + <_> + + 0 -1 570 -6.6462112590670586e-04 + + 7.7972702682018280e-02 -1.3508260250091553e-01 + <_> + + 0 -1 571 -1.2656490318477154e-02 + + -3.6913019418716431e-01 6.4613893628120422e-02 + <_> + + 0 -1 572 -4.3929531238973141e-03 + + 2.6696819067001343e-01 -8.8650099933147430e-02 + <_> + + 0 -1 573 -1.2583639472723007e-03 + + 2.0614829659461975e-01 -1.0952439904212952e-01 + <_> + + 0 -1 574 -1.1131940409541130e-02 + + -4.1352048516273499e-01 6.2840126454830170e-02 + <_> + + 0 -1 575 3.0703889206051826e-03 + + -1.5591779351234436e-01 1.5018209815025330e-01 + <_> + + 0 -1 576 3.5361549817025661e-03 + + 6.2573492527008057e-02 -2.1869969367980957e-01 + <_> + + 0 -1 577 2.8864629566669464e-02 + + -6.9561749696731567e-02 4.4892778992652893e-01 + <_> + + 0 -1 578 -7.1035906672477722e-02 + + 2.0991979539394379e-01 -3.6562878638505936e-02 + <_> + + 0 -1 579 -1.1107679456472397e-03 + + -3.3020168542861938e-01 7.9758942127227783e-02 + <_> + + 0 -1 580 7.9184047877788544e-02 + + -1.3226009905338287e-02 3.8603660464286804e-01 + <_> + + 0 -1 581 1.3353509828448296e-02 + + 5.8410558849573135e-02 -3.9250770211219788e-01 + <_> + + 0 -1 582 5.0049051642417908e-02 + + -2.3318229243159294e-02 7.4593770503997803e-01 + <_> + + 0 -1 583 -2.1859000623226166e-01 + + -8.4585267305374146e-01 2.5940530002117157e-02 + <_> + + 0 -1 584 1.0064110159873962e-02 + + -1.0959850251674652e-01 2.1068529784679413e-01 + <_> + + 0 -1 585 7.5430879369378090e-03 + + 5.3567539900541306e-02 -3.3617278933525085e-01 + <_> + + 0 -1 586 1.5817210078239441e-02 + + -1.9042259082198143e-02 2.2196899354457855e-01 + <_> + + 0 -1 587 -1.7135319649241865e-04 + + 1.7667369544506073e-01 -1.2068530172109604e-01 + <_> + + 0 -1 588 6.6670849919319153e-03 + + 7.0071838796138763e-02 -2.2137600183486938e-01 + <_> + + 0 -1 589 2.7946738991886377e-03 + + -1.0509230196475983e-01 1.9277399778366089e-01 + <_> + + 0 -1 590 -1.5057970304042101e-03 + + 6.0012888163328171e-02 -1.2378510087728500e-01 + <_> + + 0 -1 591 8.5329543799161911e-03 + + -4.7611240297555923e-02 3.9985141158103943e-01 + <_> + + 0 -1 592 4.2939469218254089e-02 + + 3.1611390411853790e-02 -1.9731660187244415e-01 + <_> + + 0 -1 593 2.0308220759034157e-02 + + 3.5055190324783325e-02 -5.1969397068023682e-01 + <_> + + 0 -1 594 -7.7673741616308689e-03 + + -1.8817919492721558e-01 5.6889228522777557e-02 + <_> + + 0 -1 595 2.1762759424746037e-03 + + -9.0948157012462616e-02 2.4575869739055634e-01 + <_> + + 0 -1 596 -1.9813690334558487e-02 + + 5.2904421091079712e-01 -3.8754951208829880e-02 + <_> + + 0 -1 597 1.3035159558057785e-02 + + 6.7918822169303894e-02 -3.0413469672203064e-01 + <_> + + 0 -1 598 -1.9664920400828123e-03 + + -2.0626169443130493e-01 9.6140593290328979e-02 + <_> + + 0 -1 599 -2.6359891053289175e-03 + + 2.5085249543190002e-01 -8.3200961351394653e-02 + <_> + + 0 -1 600 -2.2968810517340899e-03 + + 2.9634681344032288e-01 -5.8743689209222794e-02 + <_> + + 0 -1 601 -3.8644939195364714e-03 + + 1.9411550462245941e-01 -1.0827559977769852e-01 + <_> + + 0 -1 602 4.4517841160995886e-05 + + -2.4451869726181030e-01 1.0293029993772507e-01 + <_> + + 0 -1 603 1.9567341078072786e-03 + + -1.0519249737262726e-01 2.2499999403953552e-01 + <_> + + 0 -1 604 1.4188109897077084e-02 + + 3.2100718468427658e-02 -5.9142422676086426e-01 + <_> + + 0 -1 605 -1.3274629600346088e-04 + + 7.4577853083610535e-02 -2.7654591202735901e-01 + <_> + + 0 -1 606 2.0996380597352982e-02 + + -4.5735489577054977e-02 3.2947731018066406e-01 + <_> + 68 + -7.0352667570114136e-01 + + <_> + + 0 -1 607 -3.9841078221797943e-02 + + 1.5186519920825958e-01 -2.9055249691009521e-01 + <_> + + 0 -1 608 1.1327869724482298e-03 + + -1.1921630054712296e-01 1.2098889797925949e-01 + <_> + + 0 -1 609 1.0022070491686463e-03 + + 1.2088630348443985e-01 -2.5621330738067627e-01 + <_> + + 0 -1 610 6.3866227865219116e-02 + + 4.7628100961446762e-02 -8.6150348186492920e-01 + <_> + + 0 -1 611 -3.0986019410192966e-03 + + -3.1975808739662170e-01 9.1434687376022339e-02 + <_> + + 0 -1 612 6.5784230828285217e-03 + + -8.0473050475120544e-02 3.6123031377792358e-01 + <_> + + 0 -1 613 4.5082601718604565e-03 + + -1.8215750157833099e-01 1.4672499895095825e-01 + <_> + + 0 -1 614 -1.6526240855455399e-02 + + -1.2954659759998322e-01 6.6522419452667236e-02 + <_> + + 0 -1 615 -4.1868099942803383e-03 + + -2.6552608609199524e-01 1.1237680166959763e-01 + <_> + + 0 -1 616 5.6613027118146420e-04 + + 1.1822649836540222e-01 -1.6119679808616638e-01 + <_> + + 0 -1 617 2.0279800519347191e-03 + + -2.2618439793586731e-01 1.1263699829578400e-01 + <_> + + 0 -1 618 -1.1969150044023991e-02 + + -2.7523440122604370e-01 8.3603866398334503e-02 + <_> + + 0 -1 619 -2.8411731123924255e-01 + + 4.0216109156608582e-01 -7.7971749007701874e-02 + <_> + + 0 -1 620 -3.6587871145457029e-03 + + -2.9723858833312988e-01 6.3484713435173035e-02 + <_> + + 0 -1 621 9.2046172358095646e-04 + + 7.7872820198535919e-02 -2.9539081454277039e-01 + <_> + + 0 -1 622 1.3571759685873985e-02 + + -7.2430767118930817e-02 3.4849750995635986e-01 + <_> + + 0 -1 623 -3.1399999279528856e-03 + + -2.2088779509067535e-01 1.0072159767150879e-01 + <_> + + 0 -1 624 6.9894008338451385e-03 + + 5.9188209474086761e-02 -1.4137220382690430e-01 + <_> + + 0 -1 625 -5.9609091840684414e-04 + + 1.3563929498195648e-01 -1.5081329643726349e-01 + <_> + + 0 -1 626 1.6805849736556411e-03 + + -7.8348256647586823e-02 7.7357366681098938e-02 + <_> + + 0 -1 627 -5.7250040117651224e-04 + + 2.3572799563407898e-01 -1.1594360321760178e-01 + <_> + + 0 -1 628 4.3474160134792328e-02 + + 8.2836961373686790e-03 -3.7428310513496399e-01 + <_> + + 0 -1 629 6.0316640883684158e-04 + + -1.7846900224685669e-01 1.6185760498046875e-01 + <_> + + 0 -1 630 2.6881720870733261e-02 + + 7.2419442236423492e-02 -1.7971959710121155e-01 + <_> + + 0 -1 631 -4.9273878335952759e-02 + + 4.6386399865150452e-01 -5.0276938825845718e-02 + <_> + + 0 -1 632 -6.7225202918052673e-02 + + -1. 1.3532400131225586e-02 + <_> + + 0 -1 633 2.0203770697116852e-01 + + -3.8748100399971008e-02 5.7211977243423462e-01 + <_> + + 0 -1 634 3.1489748507738113e-02 + + 4.5488908886909485e-02 -1.2539370357990265e-01 + <_> + + 0 -1 635 -5.7097017997875810e-04 + + 1.9619710743427277e-01 -1.0944739729166031e-01 + <_> + + 0 -1 636 -7.8234989196062088e-03 + + 6.7954361438751221e-02 -7.2075963020324707e-02 + <_> + + 0 -1 637 -2.1555390208959579e-02 + + -2.8890660405158997e-01 9.9806018173694611e-02 + <_> + + 0 -1 638 -8.3767198026180267e-02 + + -4.3685078620910645e-01 1.0792650282382965e-02 + <_> + + 0 -1 639 -3.5752300173044205e-03 + + 1.1191669851541519e-01 -1.9461460411548615e-01 + <_> + + 0 -1 640 1.2265419587492943e-02 + + -6.5728217363357544e-02 3.2739359140396118e-01 + <_> + + 0 -1 641 2.8762801084667444e-03 + + -1.8723809719085693e-01 1.1246989667415619e-01 + <_> + + 0 -1 642 7.4190571904182434e-03 + + 5.1525920629501343e-02 -2.6615419983863831e-01 + <_> + + 0 -1 643 -4.9716630019247532e-03 + + 1.5384270250797272e-01 -1.5141449868679047e-01 + <_> + + 0 -1 644 2.0294899120926857e-02 + + -1.9532799720764160e-02 3.0571049451828003e-01 + <_> + + 0 -1 645 1.3469019904732704e-02 + + 6.2345318496227264e-02 -3.6343741416931152e-01 + <_> + + 0 -1 646 6.8610929884016514e-03 + + -6.2487348914146423e-02 2.8820911049842834e-01 + <_> + + 0 -1 647 -5.9594889171421528e-04 + + 8.5537739098072052e-02 -2.4081380665302277e-01 + <_> + + 0 -1 648 -4.0149871259927750e-02 + + -1. 1.5480610309168696e-03 + <_> + + 0 -1 649 -2.7885669842362404e-03 + + -2.2338689863681793e-01 1.1001159995794296e-01 + <_> + + 0 -1 650 -7.9318676143884659e-03 + + 1.3043269515037537e-01 -2.8859179466962814e-02 + <_> + + 0 -1 651 -2.9607459509861656e-05 + + 1.1876039952039719e-01 -1.7018820345401764e-01 + <_> + + 0 -1 652 2.6092668995261192e-03 + + -6.9877780973911285e-02 1.5036509931087494e-01 + <_> + + 0 -1 653 -4.5970208942890167e-02 + + 5.6322151422500610e-01 -3.6318130791187286e-02 + <_> + + 0 -1 654 9.0047682169824839e-04 + + 3.2461058348417282e-02 -1.8973889946937561e-01 + <_> + + 0 -1 655 -5.1712408661842346e-02 + + -8.5045510530471802e-01 2.0679740235209465e-02 + <_> + + 0 -1 656 -1.4172409474849701e-01 + + -9.1004508733749390e-01 3.8531969767063856e-03 + <_> + + 0 -1 657 -6.9771192967891693e-02 + + 4.2144781351089478e-01 -5.5162269622087479e-02 + <_> + + 0 -1 658 -7.5836889445781708e-03 + + -4.2189291119575500e-01 6.1964530497789383e-02 + <_> + + 0 -1 659 -1.2404819717630744e-03 + + 1.7558629810810089e-01 -1.3540640473365784e-01 + <_> + + 0 -1 660 1.0614699684083462e-02 + + 4.5083239674568176e-02 -2.5765570998191833e-01 + <_> + + 0 -1 661 1.7647630302235484e-03 + + -1.1009249836206436e-01 2.4041210114955902e-01 + <_> + + 0 -1 662 3.7170480936765671e-03 + + -7.6920822262763977e-02 2.0119519531726837e-01 + <_> + + 0 -1 663 1.5280679799616337e-02 + + 5.8605119585990906e-02 -3.6220121383666992e-01 + <_> + + 0 -1 664 -8.1635616719722748e-02 + + 5.2819788455963135e-01 -4.3608970940113068e-02 + <_> + + 0 -1 665 -2.4431939236819744e-03 + + -2.4369360506534576e-01 8.4384277462959290e-02 + <_> + + 0 -1 666 -1.2289900332689285e-03 + + 1.0332729667425156e-01 -9.7442328929901123e-02 + <_> + + 0 -1 667 6.9271848769858479e-04 + + -1.1367750167846680e-01 1.6121849417686462e-01 + <_> + + 0 -1 668 9.9380649626255035e-03 + + 5.2774678915739059e-02 -1.5222820639610291e-01 + <_> + + 0 -1 669 -1.8377749249339104e-02 + + 4.6800789237022400e-01 -4.2411230504512787e-02 + <_> + + 0 -1 670 -3.0569550581276417e-03 + + 1.2866629660129547e-01 -9.8308563232421875e-02 + <_> + + 0 -1 671 -1.8440110143274069e-03 + + -2.7592489123344421e-01 1.0050299763679504e-01 + <_> + + 0 -1 672 5.6205368600785732e-03 + + -7.0716217160224915e-02 1.6734069585800171e-01 + <_> + + 0 -1 673 3.4157470799982548e-03 + + 5.2378088235855103e-02 -5.0982749462127686e-01 + <_> + + 0 -1 674 -3.0376210343092680e-03 + + 1.4243629574775696e-01 -6.3037060201168060e-02 + <_> + 67 + -7.4644768238067627e-01 + + <_> + + 0 -1 675 1.0126640088856220e-02 + + -2.1863789856433868e-01 1.7513489723205566e-01 + <_> + + 0 -1 676 -2.6893198955804110e-03 + + -3.2822969555854797e-01 9.9838256835937500e-02 + <_> + + 0 -1 677 -1.5573530457913876e-02 + + 1.9594019651412964e-01 -2.2535979747772217e-01 + <_> + + 0 -1 678 4.9326270818710327e-03 + + 4.9988470971584320e-02 -5.3175377845764160e-01 + <_> + + 0 -1 679 -7.6638202881440520e-04 + + -2.6926669478416443e-01 1.1751429736614227e-01 + <_> + + 0 -1 680 -1.2552300177048892e-04 + + 6.9110788404941559e-02 -8.1727392971515656e-02 + <_> + + 0 -1 681 -1.4519299838866573e-05 + + 1.1483950167894363e-01 -2.3017129302024841e-01 + <_> + + 0 -1 682 -1.6113840043544769e-02 + + 5.0956588983535767e-01 -3.7494029849767685e-02 + <_> + + 0 -1 683 5.5138790048658848e-03 + + -7.8787550330162048e-02 2.3771439492702484e-01 + <_> + + 0 -1 684 8.7763823568820953e-02 + + 1.3863979838788509e-02 -8.9777380228042603e-01 + <_> + + 0 -1 685 -1.2825570069253445e-02 + + -3.9504998922348022e-01 5.5546328425407410e-02 + <_> + + 0 -1 686 8.2099979044869542e-04 + + -1.2663979828357697e-01 1.9081629812717438e-01 + <_> + + 0 -1 687 -1.2775770155712962e-03 + + 1.1065080016851425e-01 -1.9801099598407745e-01 + <_> + + 0 -1 688 -2.5229719281196594e-01 + + -8.1039828062057495e-01 8.3870543166995049e-03 + <_> + + 0 -1 689 7.0347747532650828e-04 + + -2.1380549669265747e-01 9.8673596978187561e-02 + <_> + + 0 -1 690 1.0717480443418026e-02 + + 8.4470443427562714e-02 -2.6063749194145203e-01 + <_> + + 0 -1 691 5.1081487908959389e-03 + + -5.5732220411300659e-02 4.1447860002517700e-01 + <_> + + 0 -1 692 -1.9006159156560898e-02 + + -3.7475249171257019e-01 7.9524833709001541e-03 + <_> + + 0 -1 693 1.1136929970234632e-03 + + -2.2650149464607239e-01 1.0789389908313751e-01 + <_> + + 0 -1 694 1.1141769587993622e-02 + + -4.2054798454046249e-02 1.3697710633277893e-01 + <_> + + 0 -1 695 1.2054879916831851e-03 + + 9.2105977237224579e-02 -2.3083679378032684e-01 + <_> + + 0 -1 696 -2.0797130127903074e-04 + + 8.4210596978664398e-02 -6.6967681050300598e-02 + <_> + + 0 -1 697 -1.6412649303674698e-02 + + 4.2269191145896912e-01 -4.9638699740171432e-02 + <_> + + 0 -1 698 7.0363390259444714e-03 + + 9.0550661087036133e-02 -2.7322870492935181e-01 + <_> + + 0 -1 699 -8.4774550050497055e-03 + + -1.9004869461059570e-01 1.0416539758443832e-01 + <_> + + 0 -1 700 -8.7799631059169769e-02 + + -1. 4.5551471412181854e-03 + <_> + + 0 -1 701 -4.6731110662221909e-02 + + 4.1607761383056641e-01 -6.7924611270427704e-02 + <_> + + 0 -1 702 7.4915830045938492e-03 + + 4.7516189515590668e-02 -4.4306200742721558e-01 + <_> + + 0 -1 703 8.6966790258884430e-03 + + -3.9423149079084396e-02 5.2188277244567871e-01 + <_> + + 0 -1 704 -6.4137862063944340e-03 + + -2.4749429523944855e-01 1.1350250244140625e-01 + <_> + + 0 -1 705 6.4909840002655983e-03 + + -2.0237590372562408e-01 1.1887309700250626e-01 + <_> + + 0 -1 706 1.1677639558911324e-03 + + -9.8187439143657684e-02 1.4470459520816803e-01 + <_> + + 0 -1 707 8.0650653690099716e-03 + + 3.0806429684162140e-02 -5.7410538196563721e-01 + <_> + + 0 -1 708 -6.1450549401342869e-03 + + 1.4213280379772186e-01 -1.2155479937791824e-01 + <_> + + 0 -1 709 3.3926900941878557e-03 + + -6.9425463676452637e-02 3.7945500016212463e-01 + <_> + + 0 -1 710 2.5861251354217529e-01 + + -8.0964984372258186e-03 5.7324391603469849e-01 + <_> + + 0 -1 711 4.6327650547027588e-02 + + 9.3428269028663635e-02 -2.9274320602416992e-01 + <_> + + 0 -1 712 -1.4053919585421681e-05 + + 5.9584300965070724e-02 -1.2193849682807922e-01 + <_> + + 0 -1 713 -5.5521689355373383e-03 + + -3.0268138647079468e-01 7.9481996595859528e-02 + <_> + + 0 -1 714 -7.1974180638790131e-02 + + 5.9862488508224487e-01 -3.2414238899946213e-02 + <_> + + 0 -1 715 -1.1097419774159789e-03 + + -2.2289000451564789e-01 9.4809576869010925e-02 + <_> + + 0 -1 716 1.1012280359864235e-02 + + -5.0954710692167282e-02 2.1996709704399109e-01 + <_> + + 0 -1 717 -1.0663530230522156e-01 + + -7.8257107734680176e-01 2.3075709119439125e-02 + <_> + + 0 -1 718 2.6826610788702965e-02 + + -3.3334378153085709e-02 3.2825571298599243e-01 + <_> + + 0 -1 719 1.6480779275298119e-02 + + 2.4793079122900963e-02 -7.9102367162704468e-01 + <_> + + 0 -1 720 1.4533529756590724e-03 + + -4.7377821058034897e-02 1.8299889564514160e-01 + <_> + + 0 -1 721 4.6536721289157867e-02 + + -4.2217779904603958e-02 4.7201961278915405e-01 + <_> + + 0 -1 722 1.3604049570858479e-02 + + 7.1543172001838684e-02 -2.8175559639930725e-01 + <_> + + 0 -1 723 2.9868748970329762e-03 + + -1.2019319832324982e-01 1.5165250003337860e-01 + <_> + + 0 -1 724 7.5455583631992340e-02 + + 7.6729329302906990e-03 -3.7560600042343140e-01 + <_> + + 0 -1 725 -2.1207109093666077e-03 + + 1.1624389886856079e-01 -1.5187309682369232e-01 + <_> + + 0 -1 726 4.6092201955616474e-03 + + 5.2315160632133484e-02 -2.3050600290298462e-01 + <_> + + 0 -1 727 1.0207670275121927e-03 + + -1.1380010098218918e-01 1.7626440525054932e-01 + <_> + + 0 -1 728 6.2532532028853893e-03 + + 6.1674360185861588e-02 -3.4915238618850708e-01 + <_> + + 0 -1 729 2.8322400525212288e-02 + + -3.9958149194717407e-02 5.2392977476119995e-01 + <_> + + 0 -1 730 -1.6342360526323318e-02 + + -1.2563559412956238e-01 4.0041740983724594e-02 + <_> + + 0 -1 731 -1.8282469827681780e-03 + + 9.1135032474994659e-02 -1.9224719703197479e-01 + <_> + + 0 -1 732 4.4616919010877609e-02 + + -1.7582910135388374e-02 3.0281931161880493e-01 + <_> + + 0 -1 733 3.5677649429999292e-04 + + -8.7897412478923798e-02 2.2339150309562683e-01 + <_> + + 0 -1 734 -4.5413200859911740e-04 + + 6.5522827208042145e-02 -9.9679380655288696e-02 + <_> + + 0 -1 735 1.5353029593825340e-03 + + 6.8590000271797180e-02 -2.9728370904922485e-01 + <_> + + 0 -1 736 2.1600390318781137e-03 + + -8.9736528694629669e-02 8.0284543335437775e-02 + <_> + + 0 -1 737 -5.9745612088590860e-04 + + 2.1873860061168671e-01 -1.1398520320653915e-01 + <_> + + 0 -1 738 -1.2356050312519073e-02 + + -2.9350760579109192e-01 6.4420320093631744e-02 + <_> + + 0 -1 739 -3.2670930027961731e-01 + + 3.8920149207115173e-01 -4.9165409058332443e-02 + <_> + + 0 -1 740 8.7828626856207848e-03 + + 8.6186192929744720e-02 -2.2631849348545074e-01 + <_> + + 0 -1 741 3.3569689840078354e-03 + + -9.1194286942481995e-02 2.1264100074768066e-01 + <_> + 75 + -7.8030252456665039e-01 + + <_> + + 0 -1 742 -1.5290499664843082e-02 + + 1.6011320054531097e-01 -2.1511940658092499e-01 + <_> + + 0 -1 743 -5.9956451877951622e-03 + + -1.8299789726734161e-01 3.7886500358581543e-02 + <_> + + 0 -1 744 6.2301359139382839e-04 + + -1.2199199944734573e-01 2.1163250505924225e-01 + <_> + + 0 -1 745 5.8087380602955818e-04 + + -2.2747389972209930e-01 7.6958037912845612e-02 + <_> + + 0 -1 746 -2.8277048841118813e-03 + + 2.7597460150718689e-01 -7.8942306339740753e-02 + <_> + + 0 -1 747 2.1096320822834969e-02 + + 4.1295919567346573e-02 -3.2933080196380615e-01 + <_> + + 0 -1 748 -2.2117430344223976e-03 + + 2.4672569334506989e-01 -7.3121666908264160e-02 + <_> + + 0 -1 749 -2.3275949060916901e-03 + + -2.2825109958648682e-01 7.9285196959972382e-02 + <_> + + 0 -1 750 -4.4754869304597378e-03 + + 1.1744049936532974e-01 -1.9801409542560577e-01 + <_> + + 0 -1 751 -2.5716619566082954e-03 + + 3.7658710032701492e-02 -1.2148059904575348e-01 + <_> + + 0 -1 752 1.5387970488518476e-03 + + -5.5973250418901443e-02 3.6923429369926453e-01 + <_> + + 0 -1 753 -3.3066518604755402e-02 + + 3.9160001277923584e-01 -7.7862940728664398e-02 + <_> + + 0 -1 754 -8.5727721452713013e-02 + + -2.5174748897552490e-01 1.3543550670146942e-01 + <_> + + 0 -1 755 -7.0333289913833141e-03 + + 1.3328710198402405e-01 -1.5664640069007874e-01 + <_> + + 0 -1 756 -6.8310517235659063e-05 + + 9.9454201757907867e-02 -2.3412980139255524e-01 + <_> + + 0 -1 757 -6.0546118766069412e-04 + + -1.7742669582366943e-01 1.0017810016870499e-01 + <_> + + 0 -1 758 -2.2480569314211607e-03 + + -3.6424639821052551e-01 5.3501259535551071e-02 + <_> + + 0 -1 759 -1.5090550296008587e-03 + + 7.7575050294399261e-02 -9.4920717179775238e-02 + <_> + + 0 -1 760 -5.8666180848376825e-05 + + 1.2585939466953278e-01 -1.4529819786548615e-01 + <_> + + 0 -1 761 3.5532109905034304e-03 + + -9.8626613616943359e-02 7.4326246976852417e-02 + <_> + + 0 -1 762 -1.4601859729737043e-03 + + -3.3026841282844543e-01 6.3813462853431702e-02 + <_> + + 0 -1 763 -2.3586049792356789e-04 + + 1.0846760123968124e-01 -1.0571049898862839e-01 + <_> + + 0 -1 764 1.4756060205399990e-02 + + -5.9472840279340744e-02 3.7792891263961792e-01 + <_> + + 0 -1 765 -1.6795310378074646e-01 + + -6.6773468255996704e-01 1.7404930666089058e-02 + <_> + + 0 -1 766 3.2017670571804047e-02 + + -2.3720450699329376e-01 9.6205927431583405e-02 + <_> + + 0 -1 767 -6.1111792456358671e-04 + + 1.3566890358924866e-01 -6.8121932446956635e-02 + <_> + + 0 -1 768 -1.1586040258407593e-02 + + -2.9761460423469543e-01 6.4853250980377197e-02 + <_> + + 0 -1 769 -1.1290679685771465e-03 + + 1.3520470261573792e-01 -9.0693503618240356e-02 + <_> + + 0 -1 770 1.8352170009166002e-03 + + -9.6694603562355042e-02 1.8725989758968353e-01 + <_> + + 0 -1 771 -2.7584248781204224e-01 + + 2.7460220456123352e-01 -1.6176709905266762e-02 + <_> + + 0 -1 772 -5.2487280219793320e-02 + + -2.6295030117034912e-01 8.4279276430606842e-02 + <_> + + 0 -1 773 -2.8409080579876900e-02 + + 4.4033178687095642e-01 -4.6736340969800949e-02 + <_> + + 0 -1 774 1.2234229594469070e-02 + + 7.1391902863979340e-02 -2.9463478922843933e-01 + <_> + + 0 -1 775 3.7752088159322739e-02 + + -3.2507140189409256e-02 6.2293910980224609e-01 + <_> + + 0 -1 776 -1.3006339780986309e-02 + + -3.5619509220123291e-01 5.7085920125246048e-02 + <_> + + 0 -1 777 -3.7061918992549181e-03 + + 1.7485049366950989e-01 -1.0506869852542877e-01 + <_> + + 0 -1 778 -4.8177209682762623e-03 + + 1.4761090278625488e-01 -1.3700130581855774e-01 + <_> + + 0 -1 779 -3.0726719647645950e-02 + + -2.1432609856128693e-01 3.4535329788923264e-02 + <_> + + 0 -1 780 1.0044399648904800e-02 + + 8.2472868263721466e-02 -2.1329440176486969e-01 + <_> + + 0 -1 781 3.3808979787863791e-04 + + -5.6368399411439896e-02 8.4050692617893219e-02 + <_> + + 0 -1 782 -3.4935539588332176e-04 + + 1.5510140359401703e-01 -1.5465189516544342e-01 + <_> + + 0 -1 783 8.5416442016139627e-04 + + 7.4811212718486786e-02 -2.0761939883232117e-01 + <_> + + 0 -1 784 -7.4278831016272306e-04 + + 2.0695370435714722e-01 -1.1315040290355682e-01 + <_> + + 0 -1 785 -4.1803911328315735e-02 + + 7.7375417947769165e-01 -2.7391599491238594e-02 + <_> + + 0 -1 786 -8.9303712593391538e-04 + + -2.8926849365234375e-01 8.3425313234329224e-02 + <_> + + 0 -1 787 2.0034189801663160e-03 + + 5.7899519801139832e-02 -2.1817860007286072e-01 + <_> + + 0 -1 788 7.4933562427759171e-04 + + -1.3606220483779907e-01 1.6150030493736267e-01 + <_> + + 0 -1 789 -8.9645422995090485e-02 + + -9.5717740058898926e-01 5.8882208541035652e-03 + <_> + + 0 -1 790 -6.5244808793067932e-03 + + 1.4521969854831696e-01 -1.6119849681854248e-01 + <_> + + 0 -1 791 -2.8723690193146467e-03 + + 1.0670810192823410e-01 -3.0505739152431488e-02 + <_> + + 0 -1 792 2.2762219887226820e-03 + + -1.4573380351066589e-01 1.5590649843215942e-01 + <_> + + 0 -1 793 4.3706637807190418e-03 + + -2.4369299411773682e-02 2.0724129676818848e-01 + <_> + + 0 -1 794 1.1989739723503590e-03 + + 8.8461942970752716e-02 -2.2536410391330719e-01 + <_> + + 0 -1 795 -6.1923090834170580e-04 + + 1.5108090639114380e-01 -9.9106341600418091e-02 + <_> + + 0 -1 796 -1.0555429616943002e-03 + + 1.5399299561977386e-01 -1.4410500228404999e-01 + <_> + + 0 -1 797 2.3101890459656715e-02 + + -2.6107529178261757e-02 2.5875169038772583e-01 + <_> + + 0 -1 798 6.7337458021938801e-03 + + 6.4629636704921722e-02 -3.2299819588661194e-01 + <_> + + 0 -1 799 1.4084229478612542e-03 + + 8.5755072534084320e-02 -1.4947549998760223e-01 + <_> + + 0 -1 800 -2.3923629487399012e-04 + + 1.8700890243053436e-01 -1.0941530019044876e-01 + <_> + + 0 -1 801 2.2198690567165613e-04 + + -1.9517560303211212e-01 5.9587858617305756e-02 + <_> + + 0 -1 802 2.8156230691820383e-03 + + -8.9527882635593414e-02 2.2894319891929626e-01 + <_> + + 0 -1 803 7.8730508685112000e-03 + + 6.4139701426029205e-02 -1.7174859344959259e-01 + <_> + + 0 -1 804 1.0448540560901165e-03 + + -2.0927239954471588e-01 1.1022809892892838e-01 + <_> + + 0 -1 805 -1.8041099607944489e-01 + + 2.5460541248321533e-01 -3.1580239534378052e-02 + <_> + + 0 -1 806 -1.8916819989681244e-01 + + -8.1439048051834106e-01 3.0212750658392906e-02 + <_> + + 0 -1 807 -4.8934340476989746e-02 + + 4.8329269886016846e-01 -3.1813390552997589e-02 + <_> + + 0 -1 808 -6.2278551049530506e-03 + + -2.2463080286979675e-01 9.3202292919158936e-02 + <_> + + 0 -1 809 -3.6263489164412022e-03 + + 9.7239963710308075e-02 -2.2094939649105072e-01 + <_> + + 0 -1 810 2.0688530057668686e-02 + + -3.9044689387083054e-02 6.9668918848037720e-01 + <_> + + 0 -1 811 -6.5703191794455051e-03 + + -1.5919350087642670e-01 3.7697389721870422e-02 + <_> + + 0 -1 812 -2.7691440191119909e-03 + + -2.1777799725532532e-01 1.1075550317764282e-01 + <_> + + 0 -1 813 -2.5391899980604649e-03 + + 7.6753303408622742e-02 -1.2121020257472992e-01 + <_> + + 0 -1 814 1.4522899873554707e-02 + + -4.6935468912124634e-02 4.4322049617767334e-01 + <_> + + 0 -1 815 -4.8549640923738480e-03 + + -4.1040301322937012e-01 4.7296289354562759e-02 + <_> + + 0 -1 816 -3.6202149931341410e-03 + + 3.6707898974418640e-01 -5.0583109259605408e-02 + <_> + 79 + -8.1366151571273804e-01 + + <_> + + 0 -1 817 9.7794737666845322e-03 + + -1.9873769581317902e-01 1.8754990398883820e-01 + <_> + + 0 -1 818 2.5764610618352890e-03 + + -1.6544049978256226e-01 1.1968299746513367e-01 + <_> + + 0 -1 819 6.6844018874689937e-04 + + 8.1187427043914795e-02 -2.6954218745231628e-01 + <_> + + 0 -1 820 1.8919180147349834e-03 + + 8.2398690283298492e-02 -1.9564670324325562e-01 + <_> + + 0 -1 821 -8.2977651618421078e-04 + + -2.1381169557571411e-01 1.0152959823608398e-01 + <_> + + 0 -1 822 -2.5124829262495041e-03 + + 2.6497021317481995e-01 -8.1728130578994751e-02 + <_> + + 0 -1 823 4.9220919609069824e-03 + + -1.3837899267673492e-01 1.7047420144081116e-01 + <_> + + 0 -1 824 1.5432259533554316e-03 + + -2.3483499884605408e-01 1.2624679505825043e-01 + <_> + + 0 -1 825 -7.5272549875080585e-03 + + -2.1902580559253693e-01 7.8214943408966064e-02 + <_> + + 0 -1 826 -3.2087319414131343e-04 + + 9.9803313612937927e-02 -1.0052630305290222e-01 + <_> + + 0 -1 827 -5.6291592773050070e-04 + + 1.4587800204753876e-01 -1.3194470107555389e-01 + <_> + + 0 -1 828 -3.4248359501361847e-02 + + 7.3179531097412109e-01 -2.5754369795322418e-02 + <_> + + 0 -1 829 5.5207060649991035e-03 + + 7.3829427361488342e-02 -2.4615940451622009e-01 + <_> + + 0 -1 830 3.3663161098957062e-02 + + -5.0750829279422760e-02 5.1054477691650391e-01 + <_> + + 0 -1 831 1.0605139657855034e-02 + + -1.9593380391597748e-01 9.6162728965282440e-02 + <_> + + 0 -1 832 3.6454470828175545e-03 + + -1.0274770110845566e-01 1.8021290004253387e-01 + <_> + + 0 -1 833 3.1658720225095749e-02 + + 7.7415347099304199e-02 -2.3498320579528809e-01 + <_> + + 0 -1 834 6.0496449470520020e-02 + + 7.9810861498117447e-03 -5.8126330375671387e-01 + <_> + + 0 -1 835 -2.1451190696097910e-04 + + -2.7141410112380981e-01 7.2448231279850006e-02 + <_> + + 0 -1 836 -8.9069753885269165e-03 + + 1.0864660143852234e-01 -3.7890978157520294e-02 + <_> + + 0 -1 837 -3.1367139890789986e-03 + + 2.3194080591201782e-01 -8.3242997527122498e-02 + <_> + + 0 -1 838 -8.2477089017629623e-04 + + 1.3757370412349701e-01 -4.0709521621465683e-02 + <_> + + 0 -1 839 -3.8041090010665357e-04 + + 9.9655948579311371e-02 -2.0115250349044800e-01 + <_> + + 0 -1 840 3.0412159394472837e-03 + + 4.8606388270854950e-02 -2.9261159896850586e-01 + <_> + + 0 -1 841 -2.7135149575769901e-03 + + -2.0402909815311432e-01 8.7270192801952362e-02 + <_> + + 0 -1 842 -1.1454220116138458e-01 + + 2.6342248916625977e-01 -2.8976829722523689e-02 + <_> + + 0 -1 843 -7.9219061881303787e-03 + + -2.3954220116138458e-01 7.8425459563732147e-02 + <_> + + 0 -1 844 -6.4272403717041016e-02 + + 3.8651049137115479e-01 -3.4981280565261841e-02 + <_> + + 0 -1 845 2.0820159465074539e-02 + + 3.6676738411188126e-02 -5.0909721851348877e-01 + <_> + + 0 -1 846 4.7503421083092690e-03 + + -4.9171518534421921e-02 1.8542270362377167e-01 + <_> + + 0 -1 847 -9.3589037656784058e-02 + + 6.2822377681732178e-01 -2.5140469893813133e-02 + <_> + + 0 -1 848 -6.8223377456888556e-04 + + 4.0090799331665039e-02 -1.0250650346279144e-01 + <_> + + 0 -1 849 -8.3058718591928482e-03 + + -2.1625949442386627e-01 8.5505023598670959e-02 + <_> + + 0 -1 850 5.5919620208442211e-03 + + -6.5724261105060577e-02 6.1939451843500137e-02 + <_> + + 0 -1 851 1.8336649518460035e-03 + + -1.0324809700250626e-01 2.5134149193763733e-01 + <_> + + 0 -1 852 -4.4351099058985710e-03 + + -1.5100279450416565e-01 3.7323009222745895e-02 + <_> + + 0 -1 853 -4.7271270304918289e-03 + + 1.3500709831714630e-01 -1.5250219404697418e-01 + <_> + + 0 -1 854 5.3573452169075608e-04 + + -6.0964770615100861e-02 7.1996733546257019e-02 + <_> + + 0 -1 855 -1.3135100016370416e-04 + + 1.2902179360389709e-01 -1.3107609748840332e-01 + <_> + + 0 -1 856 4.0799290873110294e-03 + + 4.9433309584856033e-02 -1.9467090070247650e-01 + <_> + + 0 -1 857 -3.1066180672496557e-03 + + 2.3984549939632416e-01 -7.1281567215919495e-02 + <_> + + 0 -1 858 1.0999400168657303e-02 + + 2.9017930850386620e-02 -3.8504680991172791e-01 + <_> + + 0 -1 859 1.5001590363681316e-03 + + -8.3652436733245850e-02 1.8141129612922668e-01 + <_> + + 0 -1 860 1.3700149953365326e-02 + + 3.6753259599208832e-02 -4.5086589455604553e-01 + <_> + + 0 -1 861 3.9507630281150341e-03 + + -6.9417111575603485e-02 2.1540710330009460e-01 + <_> + + 0 -1 862 -8.5161393508315086e-03 + + 1.0704089701175690e-01 -1.4857380092144012e-01 + <_> + + 0 -1 863 1.7032850300893188e-03 + + -8.1896521151065826e-02 3.2398068904876709e-01 + <_> + + 0 -1 864 -1.0852930136024952e-02 + + -1.3142329454421997e-01 9.9990189075469971e-02 + <_> + + 0 -1 865 -3.7832378875464201e-03 + + 9.7596637904644012e-02 -1.6081459820270538e-01 + <_> + + 0 -1 866 1.3263260014355183e-02 + + 6.8189077079296112e-02 -1.4820660650730133e-01 + <_> + + 0 -1 867 -4.4276300817728043e-02 + + 5.3883999586105347e-01 -3.4769881516695023e-02 + <_> + + 0 -1 868 -1.6476439312100410e-02 + + -6.9341838359832764e-01 3.0285930261015892e-02 + <_> + + 0 -1 869 1.5063960105180740e-02 + + 5.0365351140499115e-02 -3.2215261459350586e-01 + <_> + + 0 -1 870 5.3230069577693939e-02 + + 4.0058908052742481e-03 -1.0000929832458496e+00 + <_> + + 0 -1 871 -1.2282089889049530e-01 + + 4.0438568592071533e-01 -5.4661169648170471e-02 + <_> + + 0 -1 872 -8.0205321311950684e-02 + + -1.8915909528732300e-01 3.5704288631677628e-02 + <_> + + 0 -1 873 -1.1679669842123985e-03 + + -2.7641400694847107e-01 5.9974398463964462e-02 + <_> + + 0 -1 874 -3.1197320204228163e-03 + + 1.1307190358638763e-01 -7.2880730032920837e-02 + <_> + + 0 -1 875 3.6612390540540218e-03 + + -4.7828570008277893e-02 3.9067369699478149e-01 + <_> + + 0 -1 876 4.6034730039536953e-03 + + -4.7448419034481049e-02 3.6146968603134155e-01 + <_> + + 0 -1 877 -1.0733479866757989e-03 + + 1.1264870315790176e-01 -2.9074960947036743e-01 + <_> + + 0 -1 878 -1.8310690298676491e-02 + + 9.6729353070259094e-02 -1.0150820016860962e-01 + <_> + + 0 -1 879 -6.8194739520549774e-02 + + -2.2048689424991608e-01 1.0977990180253983e-01 + <_> + + 0 -1 880 8.9977607131004333e-03 + + -2.9652440920472145e-02 1.5059219300746918e-01 + <_> + + 0 -1 881 2.6954131317324936e-04 + + -1.9917850196361542e-01 9.4677992165088654e-02 + <_> + + 0 -1 882 5.9090729337185621e-04 + + -1.3240300118923187e-01 6.3088178634643555e-02 + <_> + + 0 -1 883 5.5691739544272423e-03 + + 1.0318289697170258e-01 -1.9276739656925201e-01 + <_> + + 0 -1 884 -9.9434129893779755e-02 + + 2.5911080837249756e-01 -4.3947871774435043e-02 + <_> + + 0 -1 885 -9.6295922994613647e-03 + + -3.6871969699859619e-01 4.6506170183420181e-02 + <_> + + 0 -1 886 -1.7397940391674638e-03 + + 1.3736039400100708e-01 -6.9822482764720917e-02 + <_> + + 0 -1 887 -1.3269430026412010e-02 + + 4.5216149091720581e-01 -3.8461238145828247e-02 + <_> + + 0 -1 888 2.5604839902371168e-03 + + 5.4858781397342682e-02 -2.4963529407978058e-01 + <_> + + 0 -1 889 -1.9173050532117486e-03 + + -2.5733208656311035e-01 6.7481383681297302e-02 + <_> + + 0 -1 890 -3.7461649626493454e-02 + + 5.9668248891830444e-01 -1.8121080473065376e-02 + <_> + + 0 -1 891 -1.9658938981592655e-03 + + 1.9501520693302155e-01 -9.0026341378688812e-02 + <_> + + 0 -1 892 -3.2596408855170012e-03 + + -3.5647168755531311e-01 4.6495281159877777e-02 + <_> + + 0 -1 893 -1.2043650262057781e-02 + + 3.7508749961853027e-01 -5.3072199225425720e-02 + <_> + + 0 -1 894 4.1690650396049023e-03 + + -4.1845761239528656e-02 1.1177790164947510e-01 + <_> + + 0 -1 895 1.4214499853551388e-02 + + 7.1965761482715607e-02 -2.6777520775794983e-01 + <_> + 81 + -3.0813199996948242e+01 + + <_> + + 0 -1 896 -1.2230969965457916e-02 + + 1.4567610621452332e-01 -2.4045179784297943e-01 + <_> + + 0 -1 897 -5.5717672221362591e-03 + + -1.8789610266685486e-01 4.0596708655357361e-02 + <_> + + 0 -1 898 -5.5606552632525563e-04 + + 1.6649569571018219e-01 -1.1817839741706848e-01 + <_> + + 0 -1 899 8.3173572784289718e-04 + + -1.4224030077457428e-01 4.1616160422563553e-02 + <_> + + 0 -1 900 -8.7869318667799234e-04 + + -1.6430449485778809e-01 1.5523290634155273e-01 + <_> + + 0 -1 901 -1.3641480356454849e-02 + + 3.0867528915405273e-01 -2.7172269299626350e-02 + <_> + + 0 -1 902 1.4917860426066909e-05 + + -1.5592050552368164e-01 1.0176579654216766e-01 + <_> + + 0 -1 903 8.7703643366694450e-03 + + 6.1582878232002258e-02 -3.0546051263809204e-01 + <_> + + 0 -1 904 7.5755198486149311e-03 + + -6.8759873509407043e-02 2.9675748944282532e-01 + <_> + + 0 -1 905 4.9841161817312241e-02 + + 1.0127910412847996e-02 -7.9213422536849976e-01 + <_> + + 0 -1 906 -1.1090819723904133e-02 + + 1.8339020013809204e-01 -1.0113699734210968e-01 + <_> + + 0 -1 907 -8.5937082767486572e-02 + + -4.1994568705558777e-01 1.5568479895591736e-02 + <_> + + 0 -1 908 -1.0151329915970564e-03 + + 1.1474460363388062e-01 -1.6091680526733398e-01 + <_> + + 0 -1 909 -1.3470250181853771e-02 + + -3.0626448988914490e-01 5.3186140954494476e-02 + <_> + + 0 -1 910 1.6635110601782799e-02 + + -4.3458938598632812e-02 4.4043311476707458e-01 + <_> + + 0 -1 911 -2.2650870960205793e-03 + + 1.5985119342803955e-01 -1.2725980579853058e-01 + <_> + + 0 -1 912 7.0288166403770447e-02 + + 6.4891628921031952e-02 -2.3496179282665253e-01 + <_> + + 0 -1 913 2.9186379164457321e-02 + + -2.0920279622077942e-01 8.9257873594760895e-02 + <_> + + 0 -1 914 -5.0624469295144081e-03 + + 3.4374091029167175e-01 -6.2093049287796021e-02 + <_> + + 0 -1 915 2.9356318991631269e-03 + + -1.4249369502067566e-01 4.5412261039018631e-02 + <_> + + 0 -1 916 -6.7740739323198795e-03 + + 3.1641799211502075e-01 -4.9601629376411438e-02 + <_> + + 0 -1 917 -1.4607170305680484e-04 + + 1.0752049833536148e-01 -1.1540039628744125e-01 + <_> + + 0 -1 918 -3.5684450995177031e-03 + + -4.1672629117965698e-01 4.2202819138765335e-02 + <_> + + 0 -1 919 -2.0149808842688799e-03 + + 1.0860130190849304e-01 -1.6349700093269348e-01 + <_> + + 0 -1 920 -8.7240645661950111e-03 + + -2.2000640630722046e-01 9.0927027165889740e-02 + <_> + + 0 -1 921 7.3565947823226452e-03 + + -1.0335700213909149e-01 1.6051970422267914e-01 + <_> + + 0 -1 922 3.4252731129527092e-03 + + -6.9635637104511261e-02 3.1490880250930786e-01 + <_> + + 0 -1 923 -5.7803248055279255e-03 + + -4.3639171123504639e-01 3.6127548664808273e-02 + <_> + + 0 -1 924 -2.9641189612448215e-03 + + 2.1797280013561249e-01 -7.7875941991806030e-02 + <_> + + 0 -1 925 2.4028679355978966e-02 + + 2.5940960273146629e-02 -5.7640588283538818e-01 + <_> + + 0 -1 926 8.1514477729797363e-02 + + -3.4380380064249039e-02 5.7957500219345093e-01 + <_> + + 0 -1 927 6.7858170950785279e-04 + + 1.0398740321397781e-01 -2.3831090331077576e-01 + <_> + + 0 -1 928 4.2639520019292831e-02 + + -4.1167970746755600e-02 4.0556749701499939e-01 + <_> + + 0 -1 929 -4.0414459072053432e-03 + + -3.8652890920639038e-01 5.3053580224514008e-02 + <_> + + 0 -1 930 4.2280308902263641e-02 + + 1.5058529563248158e-02 -9.6623957157135010e-01 + <_> + + 0 -1 931 -7.3401766712777317e-05 + + 8.4438636898994446e-02 -1.0468550026416779e-01 + <_> + + 0 -1 932 4.7503020614385605e-03 + + -3.8135491311550140e-02 4.3066629767417908e-01 + <_> + + 0 -1 933 1.7291309777647257e-03 + + 7.5733587145805359e-02 -1.5384200215339661e-01 + <_> + + 0 -1 934 -4.8985757166519761e-04 + + 1.3722479343414307e-01 -1.2631259858608246e-01 + <_> + + 0 -1 935 -2.2209450253285468e-04 + + 5.1139138638973236e-02 -6.6661313176155090e-02 + <_> + + 0 -1 936 1.1202819878235459e-03 + + -1.0968499630689621e-01 1.5611450374126434e-01 + <_> + + 0 -1 937 -2.0596029236912727e-02 + + -4.5425260066986084e-01 5.6112911552190781e-03 + <_> + + 0 -1 938 -5.1287859678268433e-03 + + -3.9422529935836792e-01 4.4144820421934128e-02 + <_> + + 0 -1 939 -4.3597300536930561e-03 + + 1.9391660392284393e-01 -6.5949328243732452e-02 + <_> + + 0 -1 940 4.7703061136417091e-04 + + -1.1900710314512253e-01 1.6375440359115601e-01 + <_> + + 0 -1 941 -1.0993770323693752e-02 + + -2.9915741086006165e-01 2.8793500736355782e-02 + <_> + + 0 -1 942 8.1108389422297478e-03 + + -4.8145949840545654e-02 3.8399958610534668e-01 + <_> + + 0 -1 943 -3.6698309704661369e-03 + + 8.8712036609649658e-02 -3.0650860071182251e-01 + <_> + + 0 -1 944 1.3895990559831262e-03 + + -5.5156201124191284e-02 3.5109901428222656e-01 + <_> + + 0 -1 945 1.2493750546127558e-03 + + -1.8023060262203217e-01 1.3490100204944611e-01 + <_> + + 0 -1 946 5.5981278419494629e-03 + + 7.9764246940612793e-02 -2.7847459912300110e-01 + <_> + + 0 -1 947 -3.8133479654788971e-02 + + 3.5153418779373169e-01 -1.7089430242776871e-02 + <_> + + 0 -1 948 -4.6064890921115875e-03 + + -2.2194199264049530e-01 1.0675799846649170e-01 + <_> + + 0 -1 949 -2.3793010413646698e-01 + + 4.0079510211944580e-01 -6.2151808291673660e-02 + <_> + + 0 -1 950 1.2010410428047180e-02 + + 5.8646921068429947e-02 -3.5234829783439636e-01 + <_> + + 0 -1 951 8.4618777036666870e-03 + + -4.1455499827861786e-02 3.9362218976020813e-01 + <_> + + 0 -1 952 -1.4482599683105946e-02 + + -2.7049958705902100e-01 6.9400496780872345e-02 + <_> + + 0 -1 953 2.5672810152173042e-03 + + -8.2357987761497498e-02 2.2959560155868530e-01 + <_> + + 0 -1 954 6.8167857825756073e-03 + + 8.5212066769599915e-02 -2.2813120484352112e-01 + <_> + + 0 -1 955 -6.4145028591156006e-04 + + 1.3260249793529510e-01 -8.1091962754726410e-02 + <_> + + 0 -1 956 3.8798429886810482e-04 + + -2.1800529956817627e-01 8.2977667450904846e-02 + <_> + + 0 -1 957 2.6308000087738037e-02 + + -2.5558909401297569e-02 5.8989650011062622e-01 + <_> + + 0 -1 958 2.0907879807054996e-03 + + 5.7611741125583649e-02 -3.0286490917205811e-01 + <_> + + 0 -1 959 -1.1132369749248028e-02 + + -1.3822869956493378e-01 4.2258080095052719e-02 + <_> + + 0 -1 960 -1.5296150231733918e-03 + + 9.1749697923660278e-02 -2.2181099653244019e-01 + <_> + + 0 -1 961 6.7247601691633463e-04 + + -6.7084349691867828e-02 7.9762071371078491e-02 + <_> + + 0 -1 962 1.0386659763753414e-02 + + -7.4621170759201050e-02 2.2916689515113831e-01 + <_> + + 0 -1 963 6.2723900191485882e-04 + + -8.6500599980354309e-02 9.7814910113811493e-02 + <_> + + 0 -1 964 1.5324779786169529e-02 + + 8.0094330012798309e-02 -2.2011950612068176e-01 + <_> + + 0 -1 965 -8.7603963911533356e-03 + + 3.1290820240974426e-01 -5.9373341500759125e-02 + <_> + + 0 -1 966 -2.3745700309518725e-04 + + 1.1855959892272949e-01 -1.4514200389385223e-01 + <_> + + 0 -1 967 -1.0718279518187046e-03 + + 1.2567649781703949e-01 -5.3101938217878342e-02 + <_> + + 0 -1 968 5.3873867727816105e-04 + + -1.0715659707784653e-01 1.6037760674953461e-01 + <_> + + 0 -1 969 -6.9268636405467987e-02 + + -7.9294067621231079e-01 8.2057341933250427e-03 + <_> + + 0 -1 970 1.0430130176246166e-02 + + 5.1620200276374817e-02 -3.3472689986228943e-01 + <_> + + 0 -1 971 7.1888908743858337e-02 + + 1.5941270394250751e-03 -8.5840928554534912e-01 + <_> + + 0 -1 972 2.0217420533299446e-02 + + -3.9817400276660919e-02 4.6351060271263123e-01 + <_> + + 0 -1 973 5.8006029576063156e-03 + + -2.1701389923691750e-02 9.9040143191814423e-02 + <_> + + 0 -1 974 3.5261210054159164e-02 + + 1.7082870006561279e-02 -1.0000469684600830e+00 + <_> + + 0 -1 975 -4.5255878567695618e-01 + + -9.1292119026184082e-01 5.2670161239802837e-03 + <_> + + 0 -1 976 -7.5286221690475941e-03 + + -5.2581560611724854e-01 2.2044740617275238e-02 + <_> + 89 + -3.0780099868774414e+01 + + <_> + + 0 -1 977 2.9085609130561352e-03 + + -2.0195980370044708e-01 1.6118539869785309e-01 + <_> + + 0 -1 978 -6.4552230760455132e-03 + + -1.8676100671291351e-01 3.5359650850296021e-02 + <_> + + 0 -1 979 2.7815890498459339e-03 + + -1.2228749692440033e-01 2.0362569391727448e-01 + <_> + + 0 -1 980 -7.6125850901007652e-03 + + -3.6965709924697876e-01 3.9566628634929657e-02 + <_> + + 0 -1 981 -2.5900858640670776e-01 + + 6.4312630891799927e-01 3.1312569626607001e-04 + <_> + + 0 -1 982 4.6097189188003540e-03 + + -2.7262160554528236e-02 2.1891650557518005e-01 + <_> + + 0 -1 983 -1.4135500416159630e-02 + + 7.6006792485713959e-02 -2.6031088829040527e-01 + <_> + + 0 -1 984 -5.9708990156650543e-03 + + -1.9146460294723511e-01 1.1078900098800659e-01 + <_> + + 0 -1 985 -1.0699110571295023e-03 + + 9.0127058327198029e-02 -1.9876359403133392e-01 + <_> + + 0 -1 986 1.5315730124711990e-02 + + 5.1883369684219360e-02 -3.1069299578666687e-01 + <_> + + 0 -1 987 -7.3937349952757359e-05 + + 1.0555309802293777e-01 -1.6768750548362732e-01 + <_> + + 0 -1 988 -8.1876888871192932e-02 + + 4.6053099632263184e-01 -3.8276348263025284e-02 + <_> + + 0 -1 989 -8.8246334344148636e-03 + + -3.3107680082321167e-01 6.9674566388130188e-02 + <_> + + 0 -1 990 -3.7569031119346619e-03 + + -2.7566310763359070e-01 6.9375626742839813e-02 + <_> + + 0 -1 991 -3.6343189422041178e-03 + + 1.6658850014209747e-01 -1.2031579762697220e-01 + <_> + + 0 -1 992 2.1979490295052528e-02 + + -2.2316349670290947e-02 3.4402579069137573e-01 + <_> + + 0 -1 993 6.1386551707983017e-02 + + 1.7906000837683678e-02 -8.8129872083663940e-01 + <_> + + 0 -1 994 2.7061739936470985e-02 + + -3.2444350421428680e-02 2.8866448998451233e-01 + <_> + + 0 -1 995 -9.5964036881923676e-03 + + -3.0743318796157837e-01 5.2499480545520782e-02 + <_> + + 0 -1 996 -1.7550870543345809e-03 + + 1.0434249788522720e-01 -1.1126209795475006e-01 + <_> + + 0 -1 997 1.6808100044727325e-03 + + -1.1712419986724854e-01 1.5606869757175446e-01 + <_> + + 0 -1 998 -1.3623350532725453e-03 + + 2.2637459635734558e-01 -8.6454801261425018e-02 + <_> + + 0 -1 999 -3.6580429878085852e-03 + + -3.9829111099243164e-01 4.7143589705228806e-02 + <_> + + 0 -1 1000 5.2668720483779907e-02 + + -1.9696790724992752e-02 4.2998239398002625e-01 + <_> + + 0 -1 1001 -3.4802549635060132e-04 + + 9.1115236282348633e-02 -2.0480670034885406e-01 + <_> + + 0 -1 1002 1.2204200029373169e-03 + + 3.3061511814594269e-02 -1.7324869334697723e-01 + <_> + + 0 -1 1003 -9.4577670097351074e-03 + + 2.9774200916290283e-01 -5.8979131281375885e-02 + <_> + + 0 -1 1004 -1.7641530139371753e-03 + + -9.6304766833782196e-02 6.5304636955261230e-02 + <_> + + 0 -1 1005 8.1057827919721603e-03 + + 5.7158369570970535e-02 -3.1123921275138855e-01 + <_> + + 0 -1 1006 1.3963400386273861e-02 + + -3.5234641283750534e-02 3.5719850659370422e-01 + <_> + + 0 -1 1007 -3.1854680273681879e-03 + + -2.1528400480747223e-01 7.6040878891944885e-02 + <_> + + 0 -1 1008 -4.3546650558710098e-03 + + -8.3892293274402618e-02 2.8290690854191780e-02 + <_> + + 0 -1 1009 -1.6740639694035053e-03 + + 1.5145839750766754e-01 -1.1756320297718048e-01 + <_> + + 0 -1 1010 -2.7018489781767130e-03 + + 1.3833570480346680e-01 -5.0832830369472504e-02 + <_> + + 0 -1 1011 2.2117499611340463e-04 + + -2.3960849642753601e-01 7.5004346668720245e-02 + <_> + + 0 -1 1012 2.2773200646042824e-02 + + -2.2433629259467125e-02 3.7049260735511780e-01 + <_> + + 0 -1 1013 9.5928199589252472e-03 + + 9.7205437719821930e-02 -1.7737109959125519e-01 + <_> + + 0 -1 1014 3.3168029040098190e-03 + + -5.6414358317852020e-02 9.1938421130180359e-02 + <_> + + 0 -1 1015 -2.3929888848215342e-03 + + 2.1076680719852448e-01 -9.2880353331565857e-02 + <_> + + 0 -1 1016 -1.0766570456326008e-02 + + -1.2974379956722260e-01 5.9958908706903458e-02 + <_> + + 0 -1 1017 9.9714798852801323e-04 + + -1.4279229938983917e-01 1.4279709756374359e-01 + <_> + + 0 -1 1018 -6.6825798712670803e-03 + + -2.3819839954376221e-01 4.8119660466909409e-02 + <_> + + 0 -1 1019 -3.7201410159468651e-03 + + 1.9953179359436035e-01 -9.0783573687076569e-02 + <_> + + 0 -1 1020 -1.8553409725427628e-02 + + -2.6621541380882263e-01 2.2872749716043472e-02 + <_> + + 0 -1 1021 3.0256200116127729e-03 + + -9.1106131672859192e-02 2.4559549987316132e-01 + <_> + + 0 -1 1022 -6.2146309763193130e-02 + + -1. 5.2797337993979454e-03 + <_> + + 0 -1 1023 1.7690609674900770e-03 + + -1.9379650056362152e-01 9.5696106553077698e-02 + <_> + + 0 -1 1024 -4.3277359509374946e-05 + + 1.1374049633741379e-01 -1.3504849374294281e-01 + <_> + + 0 -1 1025 1.2779419776052237e-03 + + 7.9606160521507263e-02 -2.3597019910812378e-01 + <_> + + 0 -1 1026 -4.4742479920387268e-02 + + 1.8557150661945343e-01 -3.4167829900979996e-02 + <_> + + 0 -1 1027 2.7726130792871118e-04 + + -5.7937718927860260e-02 2.8903219103813171e-01 + <_> + + 0 -1 1028 5.6225471198558807e-02 + + 1.3840789906680584e-02 -7.7199739217758179e-01 + <_> + + 0 -1 1029 8.6825769394636154e-03 + + -1.8263089656829834e-01 1.1423269659280777e-01 + <_> + + 0 -1 1030 -2.4038869887590408e-03 + + -1.9004139304161072e-01 6.5928563475608826e-02 + <_> + + 0 -1 1031 1.2840219773352146e-02 + + -3.6279100924730301e-02 4.5519340038299561e-01 + <_> + + 0 -1 1032 1.1061480036005378e-03 + + -6.3054688274860382e-02 8.1609472632408142e-02 + <_> + + 0 -1 1033 -4.6486179344356060e-03 + + -2.7108541131019592e-01 8.0167703330516815e-02 + <_> + + 0 -1 1034 6.4021991565823555e-03 + + -6.6946588456630707e-02 1.0634910315275192e-01 + <_> + + 0 -1 1035 -8.2370378077030182e-02 + + 3.4517300128936768e-01 -4.8468429595232010e-02 + <_> + + 0 -1 1036 -3.7429828196763992e-02 + + -6.9630950689315796e-01 1.3054380193352699e-02 + <_> + + 0 -1 1037 1.0500400327146053e-02 + + 9.6028283238410950e-02 -2.6362740993499756e-01 + <_> + + 0 -1 1038 6.8851239979267120e-02 + + 3.7341150455176830e-03 -9.9989157915115356e-01 + <_> + + 0 -1 1039 1.0171310277655721e-03 + + -2.3500110208988190e-01 9.1097183525562286e-02 + <_> + + 0 -1 1040 -2.9057949781417847e-02 + + 5.9977847337722778e-01 -3.6899000406265259e-02 + <_> + + 0 -1 1041 2.2022729739546776e-02 + + 5.8034650981426239e-02 -3.2748758792877197e-01 + <_> + + 0 -1 1042 -4.3123541399836540e-03 + + 2.2153949737548828e-01 -6.1332020908594131e-02 + <_> + + 0 -1 1043 1.0949710384011269e-02 + + 2.1837379783391953e-02 -7.4662190675735474e-01 + <_> + + 0 -1 1044 4.3610740453004837e-02 + + -4.5098949223756790e-02 2.8109139204025269e-01 + <_> + + 0 -1 1045 7.7252179384231567e-02 + + 2.0801780745387077e-02 -8.6648237705230713e-01 + <_> + + 0 -1 1046 -2.4023890495300293e-02 + + 3.9884421229362488e-01 -3.5227119922637939e-02 + <_> + + 0 -1 1047 1.9559780135750771e-02 + + 3.5944730043411255e-02 -5.1469117403030396e-01 + <_> + + 0 -1 1048 2.5917299091815948e-02 + + -1.2942669913172722e-02 4.1695970296859741e-01 + <_> + + 0 -1 1049 -4.6949301031418145e-04 + + 1.6665999591350555e-01 -9.0680040419101715e-02 + <_> + + 0 -1 1050 -8.4590032696723938e-02 + + -5.9283781051635742e-01 7.2113061323761940e-03 + <_> + + 0 -1 1051 -8.9234940242022276e-04 + + 1.7458200454711914e-01 -1.0072509944438934e-01 + <_> + + 0 -1 1052 -2.4009350687265396e-02 + + -3.9131438732147217e-01 2.2361040115356445e-02 + <_> + + 0 -1 1053 -4.7586968867108226e-04 + + 1.8306100368499756e-01 -1.2541130185127258e-01 + <_> + + 0 -1 1054 2.9483099933713675e-03 + + 6.5301053225994110e-02 -2.0387080311775208e-01 + <_> + + 0 -1 1055 3.6947780754417181e-03 + + -6.0878321528434753e-02 3.0403020977973938e-01 + <_> + + 0 -1 1056 -2.9413169249892235e-03 + + -3.0284491181373596e-01 4.7550499439239502e-02 + <_> + + 0 -1 1057 -7.1274640504270792e-04 + + 1.6200789809226990e-01 -1.1822160333395004e-01 + <_> + + 0 -1 1058 2.4309750646352768e-02 + + -1.1442789807915688e-02 2.0453959703445435e-01 + <_> + + 0 -1 1059 -9.1473112115636468e-04 + + -2.0707829296588898e-01 7.5701341032981873e-02 + <_> + + 0 -1 1060 -3.6473390646278858e-03 + + 2.4093860387802124e-01 -8.3565562963485718e-02 + <_> + + 0 -1 1061 1.2513220310211182e-02 + + 4.1536040604114532e-02 -3.7487721443176270e-01 + <_> + + 0 -1 1062 6.2148571014404297e-03 + + 2.0434129983186722e-02 -9.0057849884033203e-02 + <_> + + 0 -1 1063 -2.0954229403287172e-03 + + 1.1625260114669800e-01 -1.8561770021915436e-01 + <_> + + 0 -1 1064 -2.1173250675201416e-01 + + -1. 2.4372090119868517e-03 + <_> + + 0 -1 1065 1.0188589803874493e-03 + + -7.5683966279029846e-02 2.9555431008338928e-01 + <_> + 77 + -3.0694400787353516e+01 + + <_> + + 0 -1 1066 -2.4422600865364075e-02 + + 2.0446979999542236e-01 -2.2299669682979584e-01 + <_> + + 0 -1 1067 1.0574000189080834e-03 + + -1.4355170726776123e-01 8.5603542625904083e-02 + <_> + + 0 -1 1068 2.5123930536210537e-03 + + 1.0997679829597473e-01 -2.3044809699058533e-01 + <_> + + 0 -1 1069 1.2112739682197571e-01 + + 3.3267501741647720e-02 -9.9910151958465576e-01 + <_> + + 0 -1 1070 2.9103590641170740e-03 + + -1.0391929745674133e-01 1.9292880594730377e-01 + <_> + + 0 -1 1071 -8.6717177182435989e-03 + + -2.7087220549583435e-01 9.9762901663780212e-02 + <_> + + 0 -1 1072 6.1140959151089191e-03 + + -1.1517100036144257e-01 2.0429219305515289e-01 + <_> + + 0 -1 1073 2.0590990781784058e-02 + + -3.3107578754425049e-02 4.6375459432601929e-01 + <_> + + 0 -1 1074 1.1507490416988730e-03 + + 7.6014623045921326e-02 -2.7485209703445435e-01 + <_> + + 0 -1 1075 6.5449788235127926e-03 + + -1.1266589909791946e-01 5.0031568855047226e-02 + <_> + + 0 -1 1076 1.6102850204333663e-03 + + -1.8794959783554077e-01 1.1234410107135773e-01 + <_> + + 0 -1 1077 2.8527909889817238e-03 + + 4.0457468479871750e-02 -8.4716461598873138e-02 + <_> + + 0 -1 1078 -4.0883300825953484e-03 + + 1.2509189546108246e-01 -1.4850109815597534e-01 + <_> + + 0 -1 1079 1.6648479504510760e-03 + + -1.0346720367670059e-01 5.3585231304168701e-02 + <_> + + 0 -1 1080 -3.1635090708732605e-03 + + -3.3729389309883118e-01 6.1192918568849564e-02 + <_> + + 0 -1 1081 -1.0922599583864212e-02 + + 4.5238488912582397e-01 -5.7903379201889038e-02 + <_> + + 0 -1 1082 -3.3356929197907448e-03 + + 3.3880978822708130e-01 -6.4470112323760986e-02 + <_> + + 0 -1 1083 -3.0014500021934509e-02 + + -8.2835501432418823e-01 2.4696119129657745e-02 + <_> + + 0 -1 1084 -3.0110439658164978e-01 + + -8.3429050445556641e-01 1.4369309879839420e-02 + <_> + + 0 -1 1085 -4.2447918094694614e-03 + + -1.2281739711761475e-01 2.8134100139141083e-02 + <_> + + 0 -1 1086 7.7825621701776981e-03 + + -6.9222308695316315e-02 2.5814509391784668e-01 + <_> + + 0 -1 1087 -1.2726710177958012e-02 + + 1.0745859891176224e-01 -7.6575823128223419e-02 + <_> + + 0 -1 1088 4.7346940264105797e-03 + + 4.4127859175205231e-02 -3.8045680522918701e-01 + <_> + + 0 -1 1089 3.4512639977037907e-03 + + -4.2947210371494293e-02 4.6074831485748291e-01 + <_> + + 0 -1 1090 5.6996050989255309e-04 + + 6.6926121711730957e-02 -2.9685848951339722e-01 + <_> + + 0 -1 1091 -5.3889099508523941e-02 + + -1. 3.9760880172252655e-03 + <_> + + 0 -1 1092 1.0263220174238086e-03 + + -1.1138930171728134e-01 1.7764210700988770e-01 + <_> + + 0 -1 1093 3.9374440908432007e-02 + + 1.2977429665625095e-02 -6.3669937849044800e-01 + <_> + + 0 -1 1094 1.8777979537844658e-02 + + -3.9334569126367569e-02 4.5990169048309326e-01 + <_> + + 0 -1 1095 1.5851920470595360e-03 + + -1.0917869955301285e-01 5.6247789412736893e-02 + <_> + + 0 -1 1096 -1.0857740417122841e-02 + + -2.0176340639591217e-01 9.0685456991195679e-02 + <_> + + 0 -1 1097 4.4399261474609375e-02 + + 1.9891490228474140e-03 -9.9981158971786499e-01 + <_> + + 0 -1 1098 -1.7311190022155643e-03 + + 1.4699029922485352e-01 -1.4069539308547974e-01 + <_> + + 0 -1 1099 -1.6609770245850086e-03 + + 1.6190530359745026e-01 -5.5535599589347839e-02 + <_> + + 0 -1 1100 -4.3332851491868496e-03 + + -3.3971568942070007e-01 4.3209198862314224e-02 + <_> + + 0 -1 1101 -4.4786658691009507e-05 + + 1.0217490047216415e-01 -1.0289809852838516e-01 + <_> + + 0 -1 1102 -1.2255939655005932e-02 + + 4.6331259608268738e-01 -3.8829129189252853e-02 + <_> + + 0 -1 1103 3.1728390604257584e-02 + + -1.0918959975242615e-02 1.9252130389213562e-01 + <_> + + 0 -1 1104 8.6054168641567230e-03 + + 5.3962308913469315e-02 -3.3835870027542114e-01 + <_> + + 0 -1 1105 2.4249579291790724e-03 + + -4.3876059353351593e-02 2.4977789819240570e-01 + <_> + + 0 -1 1106 -1.9957860931754112e-03 + + 1.1398400366306305e-01 -1.7925310134887695e-01 + <_> + + 0 -1 1107 4.6042509377002716e-02 + + 2.0680939778685570e-03 -8.7673932313919067e-01 + <_> + + 0 -1 1108 2.4898271076381207e-03 + + -6.9595612585544586e-02 2.6142540574073792e-01 + <_> + + 0 -1 1109 1.0052820434793830e-03 + + 4.5501660555601120e-02 -1.2399580329656601e-01 + <_> + + 0 -1 1110 9.0297553688287735e-03 + + -7.1272410452365875e-02 2.2919359803199768e-01 + <_> + + 0 -1 1111 1.2028490193188190e-02 + + 2.0230330526828766e-02 -3.4052988886833191e-01 + <_> + + 0 -1 1112 2.3313730489462614e-03 + + 8.7259337306022644e-02 -2.3195190727710724e-01 + <_> + + 0 -1 1113 9.5184362726286054e-04 + + -2.3168809711933136e-01 5.5022191256284714e-02 + <_> + + 0 -1 1114 9.6378661692142487e-03 + + -4.1655559092760086e-02 4.2928260564804077e-01 + <_> + + 0 -1 1115 1.3566980138421059e-02 + + 4.5669659972190857e-02 -2.2501240670681000e-01 + <_> + + 0 -1 1116 3.3653501421213150e-02 + + -6.7861579358577728e-02 3.6967611312866211e-01 + <_> + + 0 -1 1117 -6.0395020991563797e-02 + + -9.0887361764907837e-01 3.8193699438124895e-03 + <_> + + 0 -1 1118 1.3169209705665708e-03 + + -1.5941339731216431e-01 1.4766550064086914e-01 + <_> + + 0 -1 1119 -9.7704064100980759e-03 + + -1.2848410010337830e-01 4.7832399606704712e-02 + <_> + + 0 -1 1120 -4.5100511051714420e-03 + + 1.2574909627437592e-01 -2.1964469552040100e-01 + <_> + + 0 -1 1121 -2.0346629898995161e-03 + + -1.8574400246143341e-01 4.9177091568708420e-02 + <_> + + 0 -1 1122 1.3294390402734280e-02 + + 9.1497242450714111e-02 -2.1343930065631866e-01 + <_> + + 0 -1 1123 -4.0054250508546829e-02 + + 3.1770059466362000e-01 -3.1080769374966621e-02 + <_> + + 0 -1 1124 2.5492990389466286e-02 + + 3.8877040147781372e-02 -4.5658990740776062e-01 + <_> + + 0 -1 1125 -3.8089688867330551e-02 + + 6.6615498065948486e-01 -1.9895339384675026e-02 + <_> + + 0 -1 1126 -2.1308319270610809e-01 + + -8.6534178256988525e-01 2.0898429676890373e-02 + <_> + + 0 -1 1127 -8.9727543294429779e-02 + + 2.5725919008255005e-01 -4.6261668205261230e-02 + <_> + + 0 -1 1128 2.5075700134038925e-02 + + 4.1259508579969406e-02 -3.7666648626327515e-01 + <_> + + 0 -1 1129 2.3366149514913559e-02 + + -7.2202831506729126e-02 2.4737030267715454e-01 + <_> + + 0 -1 1130 2.8038409072905779e-04 + + -7.9473547637462616e-02 2.2478230297565460e-01 + <_> + + 0 -1 1131 8.2364194095134735e-03 + + 5.1211010664701462e-02 -1.3328659534454346e-01 + <_> + + 0 -1 1132 5.3922779858112335e-02 + + 1.7108399420976639e-02 -8.9256042242050171e-01 + <_> + + 0 -1 1133 2.7015779633074999e-03 + + -1.8405599892139435e-01 1.2830390036106110e-01 + <_> + + 0 -1 1134 -1.6505690291523933e-02 + + 6.2239181995391846e-01 -2.6413690298795700e-02 + <_> + + 0 -1 1135 -1.8418730469420552e-03 + + -1.2646800279617310e-01 4.8690851777791977e-02 + <_> + + 0 -1 1136 5.1953629590570927e-03 + + 4.5653700828552246e-02 -3.2519981265068054e-01 + <_> + + 0 -1 1137 5.0785308703780174e-03 + + 4.0703259408473969e-02 -2.0620769262313843e-01 + <_> + + 0 -1 1138 5.0687040202319622e-03 + + -7.6456248760223389e-02 2.5867408514022827e-01 + <_> + + 0 -1 1139 -1.1892319656908512e-02 + + -2.2366219758987427e-01 3.0855409801006317e-02 + <_> + + 0 -1 1140 2.4257500190287828e-03 + + -7.1597889065742493e-02 2.6108819246292114e-01 + <_> + + 0 -1 1141 -1.1990379542112350e-02 + + 2.2678479552268982e-01 -1.0305509716272354e-01 + <_> + + 0 -1 1142 -2.2772200405597687e-02 + + -2.3770140111446381e-01 7.6630853116512299e-02 + <_> + 78 + -3.0664699554443359e+01 + + <_> + + 0 -1 1143 3.3625920768827200e-03 + + -1.8268440663814545e-01 1.5935519337654114e-01 + <_> + + 0 -1 1144 4.4937757775187492e-03 + + -8.9438192546367645e-02 2.8422310948371887e-01 + <_> + + 0 -1 1145 -8.8971032528206706e-04 + + 9.5665588974952698e-02 -1.9407069683074951e-01 + <_> + + 0 -1 1146 2.6789100375026464e-03 + + -1.0152669996023178e-01 1.7864160239696503e-01 + <_> + + 0 -1 1147 -4.0554129518568516e-03 + + -2.3337660729885101e-01 1.2279739975929260e-01 + <_> + + 0 -1 1148 -1.7742250114679337e-02 + + 1.9190870225429535e-01 -3.1710729002952576e-02 + <_> + + 0 -1 1149 3.0996970599517226e-04 + + -1.9344709813594818e-01 9.9541679024696350e-02 + <_> + + 0 -1 1150 -3.7737619131803513e-03 + + -2.0298850536346436e-01 7.9316012561321259e-02 + <_> + + 0 -1 1151 1.4448439469560981e-03 + + -5.9811491519212723e-02 4.1375398635864258e-01 + <_> + + 0 -1 1152 4.1589159518480301e-03 + + -9.2934109270572662e-02 7.7575348317623138e-02 + <_> + + 0 -1 1153 9.7764004021883011e-03 + + 5.3027391433715820e-02 -3.6435180902481079e-01 + <_> + + 0 -1 1154 -2.8739850968122482e-03 + + 1.2728120386600494e-01 -3.2182350754737854e-02 + <_> + + 0 -1 1155 4.3552028946578503e-03 + + -1.4472070336341858e-01 1.4171679317951202e-01 + <_> + + 0 -1 1156 -1.2132039666175842e-01 + + 1.5284240245819092e-01 -2.6948520913720131e-02 + <_> + + 0 -1 1157 7.5531532056629658e-03 + + 1.0153439640998840e-01 -1.8715800344944000e-01 + <_> + + 0 -1 1158 4.8978552222251892e-03 + + 2.8034990653395653e-02 -1.4224380254745483e-01 + <_> + + 0 -1 1159 -1.8711129669100046e-03 + + 1.5129889547824860e-01 -1.3912929594516754e-01 + <_> + + 0 -1 1160 4.1867699474096298e-02 + + 1.8230549991130829e-02 -5.6771957874298096e-01 + <_> + + 0 -1 1161 -8.4031058941036463e-04 + + 1.5392039716243744e-01 -1.2112110108137131e-01 + <_> + + 0 -1 1162 3.6289851414039731e-04 + + -7.9913586378097534e-02 7.0097483694553375e-02 + <_> + + 0 -1 1163 -4.4498889474198222e-04 + + 1.6784679889678955e-01 -1.3805930316448212e-01 + <_> + + 0 -1 1164 2.2194290068000555e-03 + + 5.8453138917684555e-02 -1.2374790012836456e-01 + <_> + + 0 -1 1165 -2.5759059935808182e-03 + + 2.2619499266147614e-01 -8.6251437664031982e-02 + <_> + + 0 -1 1166 5.8989811688661575e-02 + + 6.9204131141304970e-03 -7.3367577791213989e-01 + <_> + + 0 -1 1167 -2.7889141440391541e-01 + + 4.6728101372718811e-01 -3.8612861186265945e-02 + <_> + + 0 -1 1168 -5.3824000060558319e-03 + + -1.6939850151538849e-01 6.1394538730382919e-02 + <_> + + 0 -1 1169 -8.9165568351745605e-04 + + -2.4867910146713257e-01 7.6590277254581451e-02 + <_> + + 0 -1 1170 1.2071889825165272e-02 + + 8.9360373094677925e-03 -2.7028709650039673e-01 + <_> + + 0 -1 1171 3.8453561137430370e-04 + + 9.9488303065299988e-02 -2.1522629261016846e-01 + <_> + + 0 -1 1172 -2.2118990309536457e-03 + + 4.0786389261484146e-02 -1.1563809961080551e-01 + <_> + + 0 -1 1173 2.0960820838809013e-02 + + -3.1355928629636765e-02 7.1006178855895996e-01 + <_> + + 0 -1 1174 -3.9021030534058809e-03 + + -1.7460019886493683e-01 4.0775351226329803e-02 + <_> + + 0 -1 1175 -4.5169141230871901e-05 + + 1.2105180323123932e-01 -1.6618220508098602e-01 + <_> + + 0 -1 1176 6.9195672869682312e-02 + + 7.6447450555860996e-03 -5.9211570024490356e-01 + <_> + + 0 -1 1177 -1.1615910334512591e-03 + + 2.2584970295429230e-01 -9.1772772371768951e-02 + <_> + + 0 -1 1178 4.5347518607741222e-05 + + -2.0863719284534454e-01 9.0364061295986176e-02 + <_> + + 0 -1 1179 -1.9045149907469749e-02 + + 4.2344009876251221e-01 -4.6018179506063461e-02 + <_> + + 0 -1 1180 4.1966438293457031e-03 + + -2.8369670733809471e-02 3.0800709128379822e-01 + <_> + + 0 -1 1181 2.5357000413350761e-04 + + -2.8971961140632629e-01 7.5374223291873932e-02 + <_> + + 0 -1 1182 1.0817909985780716e-01 + + -1.4286429621279240e-02 7.2823339700698853e-01 + <_> + + 0 -1 1183 -5.5140778422355652e-03 + + -1.8854649364948273e-01 1.1378549784421921e-01 + <_> + + 0 -1 1184 5.5264509283006191e-03 + + 7.0834018290042877e-02 -1.8397599458694458e-01 + <_> + + 0 -1 1185 6.4198831096291542e-03 + + -1.1449480056762695e-01 1.9120390713214874e-01 + <_> + + 0 -1 1186 1.9314220547676086e-01 + + 1.4066229574382305e-02 -6.9772118330001831e-01 + <_> + + 0 -1 1187 4.0670208632946014e-02 + + -2.4279089644551277e-02 7.8828179836273193e-01 + <_> + + 0 -1 1188 -2.1965131163597107e-03 + + -2.0105579495429993e-01 5.1050510257482529e-02 + <_> + + 0 -1 1189 -4.7381771728396416e-03 + + 2.5222310423851013e-01 -7.3429226875305176e-02 + <_> + + 0 -1 1190 7.1773640811443329e-02 + + -9.0609909966588020e-03 9.2946898937225342e-01 + <_> + + 0 -1 1191 6.9466611603274941e-04 + + 1.0625690221786499e-01 -1.9162459671497345e-01 + <_> + + 0 -1 1192 2.6388010010123253e-03 + + 6.3330717384815216e-02 -2.0404089987277985e-01 + <_> + + 0 -1 1193 -3.1406691414304078e-04 + + 1.7990510165691376e-01 -9.8495960235595703e-02 + <_> + + 0 -1 1194 -5.8691151207312942e-04 + + 8.5071258246898651e-02 -7.6974540948867798e-02 + <_> + + 0 -1 1195 1.0376359568908811e-03 + + -1.1096309870481491e-01 1.5985070168972015e-01 + <_> + + 0 -1 1196 1.6373570542782545e-03 + + 1.1128730326890945e-01 -1.2352730333805084e-01 + <_> + + 0 -1 1197 -7.3773309122771025e-04 + + 1.2890860438346863e-01 -1.4294579625129700e-01 + <_> + + 0 -1 1198 -1.6841450706124306e-02 + + -2.4231070280075073e-01 2.0597470924258232e-02 + <_> + + 0 -1 1199 -3.0590690672397614e-02 + + 3.3513951301574707e-01 -4.7183569520711899e-02 + <_> + + 0 -1 1200 1.0214540176093578e-02 + + 5.5497199296951294e-02 -2.3405939340591431e-01 + <_> + + 0 -1 1201 -1.1853770120069385e-03 + + 9.2074163258075714e-02 -1.7347140610218048e-01 + <_> + + 0 -1 1202 1.1729650432243943e-03 + + -8.4075942635536194e-02 2.0689530670642853e-01 + <_> + + 0 -1 1203 1.0894170030951500e-02 + + 5.6475941091775894e-02 -3.1677180528640747e-01 + <_> + + 0 -1 1204 -2.0437049679458141e-03 + + 1.8796369433403015e-01 -9.8889023065567017e-02 + <_> + + 0 -1 1205 -5.7676038704812527e-03 + + -2.5189259648323059e-01 7.5108267366886139e-02 + <_> + + 0 -1 1206 6.9624483585357666e-02 + + -1.7661379650235176e-02 4.3390399217605591e-01 + <_> + + 0 -1 1207 -3.1853429391048849e-04 + + -2.9378080368041992e-01 5.8162420988082886e-02 + <_> + + 0 -1 1208 1.7543470021337271e-03 + + 2.6858489960432053e-02 -1.5225639939308167e-01 + <_> + + 0 -1 1209 1.2951970566064119e-03 + + -7.1769118309020996e-02 3.8101229071617126e-01 + <_> + + 0 -1 1210 2.0549140870571136e-02 + + -2.3171430453658104e-02 2.7228319644927979e-01 + <_> + + 0 -1 1211 2.7475480455905199e-03 + + 6.7207306623458862e-02 -2.7162951231002808e-01 + <_> + + 0 -1 1212 5.2633951418101788e-03 + + -1.3931609690189362e-01 1.1821229755878448e-01 + <_> + + 0 -1 1213 -5.2199261263012886e-03 + + -3.3213511109352112e-01 4.7329191118478775e-02 + <_> + + 0 -1 1214 9.9096707999706268e-03 + + -6.9706782698631287e-02 1.9954280555248260e-01 + <_> + + 0 -1 1215 -1.0334379971027374e-01 + + 4.2418560385704041e-01 -3.9896268397569656e-02 + <_> + + 0 -1 1216 -1.3322319835424423e-02 + + -2.5508868694305420e-01 4.1351031512022018e-02 + <_> + + 0 -1 1217 1.7832260346040130e-03 + + -1.7664439976215363e-01 1.0336239635944366e-01 + <_> + + 0 -1 1218 6.3282333314418793e-02 + + 1.2395679950714111e-02 -4.6355250477790833e-01 + <_> + + 0 -1 1219 -5.1022358238697052e-03 + + 4.0670639276504517e-01 -5.0193451344966888e-02 + <_> + + 0 -1 1220 3.9891529828310013e-02 + + 3.7219129502773285e-02 -5.5696451663970947e-01 + + <_> + + <_> + 3 4 12 16 -1. + <_> + 7 4 4 16 3. + <_> + + <_> + 11 0 2 20 -1. + <_> + 11 10 2 10 2. + <_> + + <_> + 4 1 4 22 -1. + <_> + 4 12 4 11 2. + <_> + + <_> + 9 8 7 12 -1. + <_> + 9 14 7 6 2. + <_> + + <_> + 6 0 6 10 -1. + <_> + 6 0 3 5 2. + <_> + 9 5 3 5 2. + <_> + + <_> + 1 18 18 5 -1. + <_> + 1 18 9 5 2. + <_> + + <_> + 4 20 10 3 -1. + <_> + 9 20 5 3 2. + <_> + + <_> + 6 17 10 6 -1. + <_> + 6 20 10 3 2. + <_> + + <_> + 0 0 4 20 -1. + <_> + 0 10 4 10 2. + <_> + + <_> + 3 0 16 14 -1. + <_> + 3 7 16 7 2. + <_> + + <_> + 5 1 4 13 -1. + <_> + 7 1 2 13 2. + <_> + + <_> + 1 8 18 12 -1. + <_> + 10 8 9 6 2. + <_> + 1 14 9 6 2. + <_> + + <_> + 2 0 15 21 -1. + <_> + 7 0 5 21 3. + <_> + + <_> + 1 5 18 18 -1. + <_> + 10 5 9 9 2. + <_> + 1 14 9 9 2. + <_> + + <_> + 2 19 15 3 -1. + <_> + 7 19 5 3 3. + <_> + + <_> + 7 20 12 3 -1. + <_> + 7 20 6 3 2. + <_> + + <_> + 1 21 14 2 -1. + <_> + 8 21 7 2 2. + <_> + + <_> + 0 16 18 6 -1. + <_> + 6 16 6 6 3. + <_> + + <_> + 8 3 4 20 -1. + <_> + 8 13 4 10 2. + <_> + + <_> + 0 19 18 3 -1. + <_> + 9 19 9 3 2. + <_> + + <_> + 5 21 14 2 -1. + <_> + 5 21 7 2 2. + <_> + + <_> + 2 0 9 5 -1. + <_> + 5 0 3 5 3. + <_> + + <_> + 3 20 15 3 -1. + <_> + 8 20 5 3 3. + <_> + + <_> + 3 9 6 14 -1. + <_> + 5 9 2 14 3. + <_> + + <_> + 12 3 3 18 -1. + <_> + 12 12 3 9 2. + <_> + + <_> + 1 14 4 9 -1. + <_> + 3 14 2 9 2. + <_> + + <_> + 7 15 11 8 -1. + <_> + 7 17 11 4 2. + <_> + + <_> + 0 7 6 10 -1. + <_> + 0 7 3 5 2. + <_> + 3 12 3 5 2. + <_> + + <_> + 10 6 4 13 -1. + <_> + 10 6 2 13 2. + <_> + + <_> + 5 6 4 13 -1. + <_> + 7 6 2 13 2. + <_> + + <_> + 8 2 6 8 -1. + <_> + 8 2 6 4 2. + 1 + <_> + + <_> + 0 11 19 12 -1. + <_> + 0 17 19 6 2. + <_> + + <_> + 0 18 6 5 -1. + <_> + 3 18 3 5 2. + <_> + + <_> + 9 17 9 6 -1. + <_> + 12 17 3 6 3. + <_> + + <_> + 0 20 15 3 -1. + <_> + 5 20 5 3 3. + <_> + + <_> + 9 19 8 4 -1. + <_> + 9 19 4 4 2. + <_> + + <_> + 0 17 9 6 -1. + <_> + 3 17 3 6 3. + <_> + + <_> + 14 17 5 6 -1. + <_> + 14 20 5 3 2. + <_> + + <_> + 2 2 15 14 -1. + <_> + 7 2 5 14 3. + <_> + + <_> + 14 17 5 6 -1. + <_> + 14 20 5 3 2. + <_> + + <_> + 0 17 5 6 -1. + <_> + 0 20 5 3 2. + <_> + + <_> + 3 0 13 8 -1. + <_> + 3 4 13 4 2. + <_> + + <_> + 0 21 14 2 -1. + <_> + 7 21 7 2 2. + <_> + + <_> + 8 4 4 15 -1. + <_> + 9 4 2 15 2. + <_> + + <_> + 1 18 8 5 -1. + <_> + 5 18 4 5 2. + <_> + + <_> + 8 4 4 15 -1. + <_> + 9 4 2 15 2. + <_> + + <_> + 7 4 4 15 -1. + <_> + 8 4 2 15 2. + <_> + + <_> + 11 11 8 8 -1. + <_> + 15 11 4 4 2. + <_> + 11 15 4 4 2. + <_> + + <_> + 4 13 6 7 -1. + <_> + 6 13 2 7 3. + <_> + + <_> + 3 1 8 13 -1. + <_> + 7 1 4 13 2. + <_> + + <_> + 5 21 14 2 -1. + <_> + 5 21 7 2 2. + <_> + + <_> + 0 21 18 2 -1. + <_> + 9 21 9 2 2. + <_> + + <_> + 7 18 8 5 -1. + <_> + 7 18 4 5 2. + <_> + + <_> + 4 17 8 6 -1. + <_> + 8 17 4 6 2. + <_> + + <_> + 10 2 7 10 -1. + <_> + 10 2 7 5 2. + 1 + <_> + + <_> + 2 9 2 14 -1. + <_> + 3 9 1 14 2. + <_> + + <_> + 15 7 2 16 -1. + <_> + 15 7 1 16 2. + <_> + + <_> + 1 8 4 15 -1. + <_> + 3 8 2 15 2. + <_> + + <_> + 14 0 3 14 -1. + <_> + 14 0 3 7 2. + 1 + <_> + + <_> + 9 6 8 9 -1. + <_> + 9 6 4 9 2. + 1 + <_> + + <_> + 8 15 11 8 -1. + <_> + 8 17 11 4 2. + <_> + + <_> + 5 7 4 10 -1. + <_> + 7 7 2 10 2. + <_> + + <_> + 10 15 9 8 -1. + <_> + 10 17 9 4 2. + <_> + + <_> + 0 15 9 8 -1. + <_> + 0 17 9 4 2. + <_> + + <_> + 2 1 17 18 -1. + <_> + 2 10 17 9 2. + <_> + + <_> + 2 0 16 2 -1. + <_> + 2 0 8 2 2. + 1 + <_> + + <_> + 8 0 9 5 -1. + <_> + 11 0 3 5 3. + <_> + + <_> + 6 0 6 10 -1. + <_> + 6 0 3 5 2. + <_> + 9 5 3 5 2. + <_> + + <_> + 10 6 4 7 -1. + <_> + 10 6 2 7 2. + <_> + + <_> + 2 4 15 11 -1. + <_> + 7 4 5 11 3. + <_> + + <_> + 15 15 4 8 -1. + <_> + 15 15 2 8 2. + <_> + + <_> + 0 15 4 8 -1. + <_> + 2 15 2 8 2. + <_> + + <_> + 5 6 4 11 -1. + <_> + 7 6 2 11 2. + <_> + + <_> + 3 17 16 4 -1. + <_> + 7 17 8 4 2. + <_> + + <_> + 9 3 10 8 -1. + <_> + 9 3 5 8 2. + 1 + <_> + + <_> + 12 6 7 10 -1. + <_> + 12 6 7 5 2. + 1 + <_> + + <_> + 2 0 6 5 -1. + <_> + 5 0 3 5 2. + <_> + + <_> + 4 18 14 3 -1. + <_> + 4 19 14 1 3. + <_> + + <_> + 2 20 14 3 -1. + <_> + 9 20 7 3 2. + <_> + + <_> + 4 21 14 2 -1. + <_> + 4 21 7 2 2. + <_> + + <_> + 8 8 3 14 -1. + <_> + 9 8 1 14 3. + <_> + + <_> + 8 9 3 14 -1. + <_> + 9 9 1 14 3. + <_> + + <_> + 5 7 9 16 -1. + <_> + 5 11 9 8 2. + <_> + + <_> + 11 13 6 8 -1. + <_> + 11 17 6 4 2. + <_> + + <_> + 4 17 7 6 -1. + <_> + 4 19 7 2 3. + <_> + + <_> + 2 13 16 8 -1. + <_> + 10 13 8 4 2. + <_> + 2 17 8 4 2. + <_> + + <_> + 2 18 15 3 -1. + <_> + 2 19 15 1 3. + <_> + + <_> + 2 13 15 3 -1. + <_> + 7 13 5 3 3. + <_> + + <_> + 8 0 11 16 -1. + <_> + 8 4 11 8 2. + <_> + + <_> + 0 0 19 18 -1. + <_> + 0 6 19 6 3. + <_> + + <_> + 8 0 11 16 -1. + <_> + 8 4 11 8 2. + <_> + + <_> + 0 1 4 20 -1. + <_> + 0 6 4 10 2. + <_> + + <_> + 3 6 15 4 -1. + <_> + 8 6 5 4 3. + <_> + + <_> + 0 9 18 6 -1. + <_> + 0 9 9 3 2. + <_> + 9 12 9 3 2. + <_> + + <_> + 8 5 3 14 -1. + <_> + 9 5 1 14 3. + <_> + + <_> + 1 0 6 8 -1. + <_> + 3 0 2 8 3. + <_> + + <_> + 1 6 18 6 -1. + <_> + 10 6 9 3 2. + <_> + 1 9 9 3 2. + <_> + + <_> + 7 7 4 15 -1. + <_> + 8 7 2 15 2. + <_> + + <_> + 11 5 8 10 -1. + <_> + 11 10 8 5 2. + <_> + + <_> + 0 5 8 10 -1. + <_> + 0 10 8 5 2. + <_> + + <_> + 3 20 15 3 -1. + <_> + 8 20 5 3 3. + <_> + + <_> + 2 16 9 5 -1. + <_> + 5 16 3 5 3. + <_> + + <_> + 13 11 6 11 -1. + <_> + 13 11 3 11 2. + <_> + + <_> + 5 8 4 11 -1. + <_> + 7 8 2 11 2. + <_> + + <_> + 5 7 12 5 -1. + <_> + 8 7 6 5 2. + <_> + + <_> + 2 11 15 3 -1. + <_> + 7 11 5 3 3. + <_> + + <_> + 1 1 18 3 -1. + <_> + 7 1 6 3 3. + <_> + + <_> + 5 1 14 4 -1. + <_> + 5 1 7 4 2. + 1 + <_> + + <_> + 1 9 18 10 -1. + <_> + 10 9 9 5 2. + <_> + 1 14 9 5 2. + <_> + + <_> + 7 9 3 14 -1. + <_> + 8 9 1 14 3. + <_> + + <_> + 8 7 4 14 -1. + <_> + 9 7 2 14 2. + <_> + + <_> + 0 1 19 16 -1. + <_> + 0 9 19 8 2. + <_> + + <_> + 9 7 3 14 -1. + <_> + 10 7 1 14 3. + <_> + + <_> + 2 11 14 6 -1. + <_> + 2 11 7 3 2. + <_> + 9 14 7 3 2. + <_> + + <_> + 9 7 3 14 -1. + <_> + 10 7 1 14 3. + <_> + + <_> + 7 7 3 14 -1. + <_> + 8 7 1 14 3. + <_> + + <_> + 7 17 5 6 -1. + <_> + 7 20 5 3 2. + <_> + + <_> + 2 6 9 15 -1. + <_> + 5 11 3 5 9. + <_> + + <_> + 8 0 6 10 -1. + <_> + 11 0 3 5 2. + <_> + 8 5 3 5 2. + <_> + + <_> + 3 2 6 21 -1. + <_> + 5 9 2 7 9. + <_> + + <_> + 9 19 10 4 -1. + <_> + 9 19 5 4 2. + <_> + + <_> + 2 8 4 8 -1. + <_> + 4 8 2 8 2. + <_> + + <_> + 11 1 2 22 -1. + <_> + 11 12 2 11 2. + <_> + + <_> + 0 20 15 3 -1. + <_> + 5 20 5 3 3. + <_> + + <_> + 10 19 8 4 -1. + <_> + 10 19 4 4 2. + <_> + + <_> + 1 19 8 4 -1. + <_> + 5 19 4 4 2. + <_> + + <_> + 9 0 6 7 -1. + <_> + 11 0 2 7 3. + <_> + + <_> + 4 0 6 7 -1. + <_> + 6 0 2 7 3. + <_> + + <_> + 13 2 3 10 -1. + <_> + 13 2 3 5 2. + 1 + <_> + + <_> + 6 4 6 9 -1. + <_> + 9 4 3 9 2. + <_> + + <_> + 10 7 2 10 -1. + <_> + 10 7 1 10 2. + 1 + <_> + + <_> + 2 1 15 9 -1. + <_> + 7 1 5 9 3. + <_> + + <_> + 8 5 6 7 -1. + <_> + 10 5 2 7 3. + <_> + + <_> + 5 5 6 7 -1. + <_> + 7 5 2 7 3. + <_> + + <_> + 10 7 2 10 -1. + <_> + 10 7 1 10 2. + 1 + <_> + + <_> + 9 7 10 2 -1. + <_> + 9 7 10 1 2. + 1 + <_> + + <_> + 13 16 4 7 -1. + <_> + 13 16 2 7 2. + <_> + + <_> + 6 9 4 10 -1. + <_> + 8 9 2 10 2. + <_> + + <_> + 5 18 14 4 -1. + <_> + 12 18 7 2 2. + <_> + 5 20 7 2 2. + <_> + + <_> + 5 1 12 3 -1. + <_> + 5 1 6 3 2. + 1 + <_> + + <_> + 11 0 2 22 -1. + <_> + 11 11 2 11 2. + <_> + + <_> + 3 15 4 8 -1. + <_> + 5 15 2 8 2. + <_> + + <_> + 11 0 2 14 -1. + <_> + 11 0 1 14 2. + <_> + + <_> + 6 0 2 14 -1. + <_> + 7 0 1 14 2. + <_> + + <_> + 11 0 2 20 -1. + <_> + 11 0 1 20 2. + <_> + + <_> + 1 19 16 4 -1. + <_> + 5 19 8 4 2. + <_> + + <_> + 11 0 2 20 -1. + <_> + 11 0 1 20 2. + <_> + + <_> + 6 0 2 20 -1. + <_> + 7 0 1 20 2. + <_> + + <_> + 11 0 2 22 -1. + <_> + 11 11 2 11 2. + <_> + + <_> + 0 18 14 4 -1. + <_> + 0 18 7 2 2. + <_> + 7 20 7 2 2. + <_> + + <_> + 1 1 18 8 -1. + <_> + 10 1 9 4 2. + <_> + 1 5 9 4 2. + <_> + + <_> + 9 8 10 4 -1. + <_> + 9 8 10 2 2. + 1 + <_> + + <_> + 3 7 15 3 -1. + <_> + 8 7 5 3 3. + <_> + + <_> + 8 1 6 8 -1. + <_> + 8 1 6 4 2. + 1 + <_> + + <_> + 8 3 3 15 -1. + <_> + 9 3 1 15 3. + <_> + + <_> + 1 14 9 6 -1. + <_> + 4 14 3 6 3. + <_> + + <_> + 3 20 15 3 -1. + <_> + 8 20 5 3 3. + <_> + + <_> + 0 18 14 3 -1. + <_> + 0 19 14 1 3. + <_> + + <_> + 5 20 10 3 -1. + <_> + 5 20 5 3 2. + <_> + + <_> + 9 5 10 6 -1. + <_> + 9 5 5 6 2. + 1 + <_> + + <_> + 2 4 15 14 -1. + <_> + 7 4 5 14 3. + <_> + + <_> + 0 16 6 7 -1. + <_> + 3 16 3 7 2. + <_> + + <_> + 7 18 12 5 -1. + <_> + 11 18 4 5 3. + <_> + + <_> + 1 18 15 3 -1. + <_> + 1 19 15 1 3. + <_> + + <_> + 4 19 12 4 -1. + <_> + 8 19 4 4 3. + <_> + + <_> + 5 0 3 12 -1. + <_> + 5 6 3 6 2. + <_> + + <_> + 3 20 16 3 -1. + <_> + 3 20 8 3 2. + <_> + + <_> + 0 15 15 8 -1. + <_> + 0 17 15 4 2. + <_> + + <_> + 12 14 4 7 -1. + <_> + 12 14 2 7 2. + <_> + + <_> + 1 7 15 3 -1. + <_> + 6 7 5 3 3. + <_> + + <_> + 10 0 8 4 -1. + <_> + 10 0 4 4 2. + <_> + + <_> + 0 0 18 4 -1. + <_> + 6 0 6 4 3. + <_> + + <_> + 9 20 10 3 -1. + <_> + 9 20 5 3 2. + <_> + + <_> + 2 4 15 16 -1. + <_> + 7 4 5 16 3. + <_> + + <_> + 4 0 11 12 -1. + <_> + 4 6 11 6 2. + <_> + + <_> + 7 9 3 14 -1. + <_> + 8 9 1 14 3. + <_> + + <_> + 4 21 14 2 -1. + <_> + 4 21 7 2 2. + <_> + + <_> + 0 21 16 2 -1. + <_> + 8 21 8 2 2. + <_> + + <_> + 8 7 4 14 -1. + <_> + 9 7 2 14 2. + <_> + + <_> + 1 0 16 12 -1. + <_> + 5 0 8 12 2. + <_> + + <_> + 3 17 16 5 -1. + <_> + 7 17 8 5 2. + <_> + + <_> + 0 13 6 5 -1. + <_> + 3 13 3 5 2. + <_> + + <_> + 13 12 6 6 -1. + <_> + 13 12 3 6 2. + <_> + + <_> + 0 12 6 6 -1. + <_> + 3 12 3 6 2. + <_> + + <_> + 8 7 4 14 -1. + <_> + 9 7 2 14 2. + <_> + + <_> + 7 3 4 20 -1. + <_> + 7 13 4 10 2. + <_> + + <_> + 8 6 4 15 -1. + <_> + 9 6 2 15 2. + <_> + + <_> + 7 6 4 15 -1. + <_> + 8 6 2 15 2. + <_> + + <_> + 13 11 6 12 -1. + <_> + 16 11 3 6 2. + <_> + 13 17 3 6 2. + <_> + + <_> + 0 11 6 12 -1. + <_> + 0 11 3 6 2. + <_> + 3 17 3 6 2. + <_> + + <_> + 11 2 2 14 -1. + <_> + 11 2 1 14 2. + <_> + + <_> + 6 2 2 14 -1. + <_> + 7 2 1 14 2. + <_> + + <_> + 11 5 3 14 -1. + <_> + 12 5 1 14 3. + <_> + + <_> + 2 4 15 10 -1. + <_> + 7 4 5 10 3. + <_> + + <_> + 4 0 11 22 -1. + <_> + 4 11 11 11 2. + <_> + + <_> + 0 19 14 4 -1. + <_> + 0 19 7 2 2. + <_> + 7 21 7 2 2. + <_> + + <_> + 8 0 4 7 -1. + <_> + 8 0 2 7 2. + <_> + + <_> + 7 0 4 15 -1. + <_> + 8 0 2 15 2. + <_> + + <_> + 5 21 14 2 -1. + <_> + 5 21 7 2 2. + <_> + + <_> + 7 9 3 14 -1. + <_> + 8 9 1 14 3. + <_> + + <_> + 12 9 2 14 -1. + <_> + 12 9 1 14 2. + <_> + + <_> + 5 9 2 14 -1. + <_> + 6 9 1 14 2. + <_> + + <_> + 3 20 15 3 -1. + <_> + 8 20 5 3 3. + <_> + + <_> + 5 0 3 17 -1. + <_> + 6 0 1 17 3. + <_> + + <_> + 4 20 12 3 -1. + <_> + 4 20 6 3 2. + <_> + + <_> + 5 2 3 14 -1. + <_> + 6 2 1 14 3. + <_> + + <_> + 2 3 15 18 -1. + <_> + 7 3 5 18 3. + <_> + + <_> + 7 1 4 7 -1. + <_> + 9 1 2 7 2. + <_> + + <_> + 8 0 9 5 -1. + <_> + 11 0 3 5 3. + <_> + + <_> + 7 0 4 7 -1. + <_> + 9 0 2 7 2. + <_> + + <_> + 5 3 12 19 -1. + <_> + 8 3 6 19 2. + <_> + + <_> + 2 3 12 19 -1. + <_> + 5 3 6 19 2. + <_> + + <_> + 13 8 2 14 -1. + <_> + 13 8 1 14 2. + <_> + + <_> + 1 16 12 6 -1. + <_> + 1 18 12 2 3. + <_> + + <_> + 13 8 2 14 -1. + <_> + 13 8 1 14 2. + <_> + + <_> + 4 8 2 14 -1. + <_> + 5 8 1 14 2. + <_> + + <_> + 9 0 10 4 -1. + <_> + 9 0 5 4 2. + <_> + + <_> + 6 1 7 22 -1. + <_> + 6 12 7 11 2. + <_> + + <_> + 7 17 10 6 -1. + <_> + 12 17 5 3 2. + <_> + 7 20 5 3 2. + <_> + + <_> + 6 6 6 5 -1. + <_> + 9 6 3 5 2. + <_> + + <_> + 3 20 15 3 -1. + <_> + 8 20 5 3 3. + <_> + + <_> + 1 0 15 8 -1. + <_> + 1 4 15 4 2. + <_> + + <_> + 2 0 16 6 -1. + <_> + 6 0 8 6 2. + <_> + + <_> + 2 20 10 3 -1. + <_> + 7 20 5 3 2. + <_> + + <_> + 9 19 10 3 -1. + <_> + 9 19 5 3 2. + <_> + + <_> + 3 18 6 5 -1. + <_> + 6 18 3 5 2. + <_> + + <_> + 9 0 6 9 -1. + <_> + 11 0 2 9 3. + <_> + + <_> + 4 0 6 9 -1. + <_> + 6 0 2 9 3. + <_> + + <_> + 10 9 4 14 -1. + <_> + 12 9 2 7 2. + <_> + 10 16 2 7 2. + <_> + + <_> + 2 11 4 7 -1. + <_> + 4 11 2 7 2. + <_> + + <_> + 12 13 4 9 -1. + <_> + 12 13 2 9 2. + <_> + + <_> + 3 13 4 9 -1. + <_> + 5 13 2 9 2. + <_> + + <_> + 9 13 10 6 -1. + <_> + 14 13 5 3 2. + <_> + 9 16 5 3 2. + <_> + + <_> + 2 10 15 10 -1. + <_> + 7 10 5 10 3. + <_> + + <_> + 10 9 4 14 -1. + <_> + 12 9 2 7 2. + <_> + 10 16 2 7 2. + <_> + + <_> + 5 9 4 14 -1. + <_> + 5 9 2 7 2. + <_> + 7 16 2 7 2. + <_> + + <_> + 12 16 4 7 -1. + <_> + 12 16 2 7 2. + <_> + + <_> + 3 16 4 7 -1. + <_> + 5 16 2 7 2. + <_> + + <_> + 8 17 7 6 -1. + <_> + 8 19 7 2 3. + <_> + + <_> + 0 20 15 3 -1. + <_> + 5 20 5 3 3. + <_> + + <_> + 9 15 6 8 -1. + <_> + 9 19 6 4 2. + <_> + + <_> + 0 0 10 10 -1. + <_> + 0 0 5 5 2. + <_> + 5 5 5 5 2. + <_> + + <_> + 9 0 10 3 -1. + <_> + 9 0 5 3 2. + <_> + + <_> + 0 0 10 3 -1. + <_> + 5 0 5 3 2. + <_> + + <_> + 10 4 4 10 -1. + <_> + 10 4 2 10 2. + 1 + <_> + + <_> + 9 4 10 4 -1. + <_> + 9 4 10 2 2. + 1 + <_> + + <_> + 6 4 12 12 -1. + <_> + 10 8 4 4 9. + <_> + + <_> + 1 4 12 12 -1. + <_> + 5 8 4 4 9. + <_> + + <_> + 5 6 9 8 -1. + <_> + 5 8 9 4 2. + <_> + + <_> + 2 1 15 21 -1. + <_> + 7 8 5 7 9. + <_> + + <_> + 1 16 9 7 -1. + <_> + 4 16 3 7 3. + <_> + + <_> + 4 5 12 18 -1. + <_> + 10 5 6 9 2. + <_> + 4 14 6 9 2. + <_> + + <_> + 1 20 15 3 -1. + <_> + 6 20 5 3 3. + <_> + + <_> + 3 4 16 13 -1. + <_> + 7 4 8 13 2. + <_> + + <_> + 9 3 10 8 -1. + <_> + 9 3 5 8 2. + 1 + <_> + + <_> + 11 19 8 4 -1. + <_> + 11 19 4 4 2. + <_> + + <_> + 0 19 8 4 -1. + <_> + 4 19 4 4 2. + <_> + + <_> + 8 0 9 5 -1. + <_> + 11 0 3 5 3. + <_> + + <_> + 6 0 6 22 -1. + <_> + 6 0 3 11 2. + <_> + 9 11 3 11 2. + <_> + + <_> + 8 7 3 14 -1. + <_> + 9 7 1 14 3. + <_> + + <_> + 5 8 2 14 -1. + <_> + 6 8 1 14 2. + <_> + + <_> + 13 11 3 10 -1. + <_> + 13 16 3 5 2. + <_> + + <_> + 1 0 16 5 -1. + <_> + 5 0 8 5 2. + <_> + + <_> + 9 0 10 7 -1. + <_> + 9 0 5 7 2. + <_> + + <_> + 0 0 18 23 -1. + <_> + 9 0 9 23 2. + <_> + + <_> + 5 8 12 15 -1. + <_> + 9 13 4 5 9. + <_> + + <_> + 3 0 6 7 -1. + <_> + 5 0 2 7 3. + <_> + + <_> + 5 8 12 15 -1. + <_> + 9 13 4 5 9. + <_> + + <_> + 5 2 4 13 -1. + <_> + 7 2 2 13 2. + <_> + + <_> + 3 11 14 2 -1. + <_> + 3 11 7 2 2. + <_> + + <_> + 2 12 15 7 -1. + <_> + 7 12 5 7 3. + <_> + + <_> + 5 8 12 15 -1. + <_> + 9 13 4 5 9. + <_> + + <_> + 0 14 15 9 -1. + <_> + 5 14 5 9 3. + <_> + + <_> + 6 15 12 8 -1. + <_> + 9 15 6 8 2. + <_> + + <_> + 1 15 12 8 -1. + <_> + 4 15 6 8 2. + <_> + + <_> + 8 6 3 14 -1. + <_> + 9 6 1 14 3. + <_> + + <_> + 4 5 4 14 -1. + <_> + 5 5 2 14 2. + <_> + + <_> + 11 5 3 14 -1. + <_> + 12 5 1 14 3. + <_> + + <_> + 1 10 6 9 -1. + <_> + 3 10 2 9 3. + <_> + + <_> + 2 8 16 10 -1. + <_> + 6 8 8 10 2. + <_> + + <_> + 6 17 6 6 -1. + <_> + 6 20 6 3 2. + <_> + + <_> + 1 10 18 10 -1. + <_> + 10 10 9 5 2. + <_> + 1 15 9 5 2. + <_> + + <_> + 6 0 7 4 -1. + <_> + 6 2 7 2 2. + <_> + + <_> + 0 6 19 3 -1. + <_> + 0 7 19 1 3. + <_> + + <_> + 9 11 6 6 -1. + <_> + 9 11 3 6 2. + 1 + <_> + + <_> + 7 0 9 5 -1. + <_> + 10 0 3 5 3. + <_> + + <_> + 0 3 9 4 -1. + <_> + 0 5 9 2 2. + <_> + + <_> + 1 18 17 2 -1. + <_> + 1 19 17 1 2. + <_> + + <_> + 7 3 4 8 -1. + <_> + 9 3 2 8 2. + <_> + + <_> + 9 9 2 14 -1. + <_> + 9 9 1 14 2. + <_> + + <_> + 8 8 3 14 -1. + <_> + 9 8 1 14 3. + <_> + + <_> + 10 1 9 4 -1. + <_> + 10 3 9 2 2. + <_> + + <_> + 0 12 10 3 -1. + <_> + 5 12 5 3 2. + <_> + + <_> + 8 6 4 12 -1. + <_> + 8 12 4 6 2. + <_> + + <_> + 3 12 4 7 -1. + <_> + 5 12 2 7 2. + <_> + + <_> + 6 17 12 6 -1. + <_> + 12 17 6 3 2. + <_> + 6 20 6 3 2. + <_> + + <_> + 0 16 18 6 -1. + <_> + 9 16 9 6 2. + <_> + + <_> + 12 0 4 14 -1. + <_> + 14 0 2 7 2. + <_> + 12 7 2 7 2. + <_> + + <_> + 1 21 14 2 -1. + <_> + 8 21 7 2 2. + <_> + + <_> + 9 19 8 4 -1. + <_> + 9 19 4 4 2. + <_> + + <_> + 1 0 12 4 -1. + <_> + 5 0 4 4 3. + <_> + + <_> + 10 1 8 5 -1. + <_> + 10 1 4 5 2. + <_> + + <_> + 0 13 6 10 -1. + <_> + 2 13 2 10 3. + <_> + + <_> + 8 9 3 14 -1. + <_> + 9 9 1 14 3. + <_> + + <_> + 9 7 10 2 -1. + <_> + 9 7 10 1 2. + 1 + <_> + + <_> + 2 16 15 3 -1. + <_> + 7 16 5 3 3. + <_> + + <_> + 5 1 8 17 -1. + <_> + 9 1 4 17 2. + <_> + + <_> + 9 19 8 4 -1. + <_> + 9 19 4 4 2. + <_> + + <_> + 2 19 8 4 -1. + <_> + 6 19 4 4 2. + <_> + + <_> + 10 0 8 7 -1. + <_> + 10 0 4 7 2. + <_> + + <_> + 1 0 8 7 -1. + <_> + 5 0 4 7 2. + <_> + + <_> + 12 16 7 4 -1. + <_> + 12 18 7 2 2. + <_> + + <_> + 7 0 4 14 -1. + <_> + 9 0 2 14 2. + <_> + + <_> + 2 18 15 3 -1. + <_> + 2 19 15 1 3. + <_> + + <_> + 7 1 4 7 -1. + <_> + 9 1 2 7 2. + <_> + + <_> + 11 5 3 15 -1. + <_> + 12 5 1 15 3. + <_> + + <_> + 0 10 6 10 -1. + <_> + 0 10 3 5 2. + <_> + 3 15 3 5 2. + <_> + + <_> + 11 5 3 15 -1. + <_> + 12 5 1 15 3. + <_> + + <_> + 5 5 3 15 -1. + <_> + 6 5 1 15 3. + <_> + + <_> + 6 5 12 12 -1. + <_> + 6 5 6 12 2. + <_> + + <_> + 1 4 12 16 -1. + <_> + 7 4 6 16 2. + <_> + + <_> + 11 4 6 7 -1. + <_> + 13 4 2 7 3. + <_> + + <_> + 1 7 4 16 -1. + <_> + 1 7 2 8 2. + <_> + 3 15 2 8 2. + <_> + + <_> + 11 1 2 22 -1. + <_> + 11 12 2 11 2. + <_> + + <_> + 1 18 14 3 -1. + <_> + 1 19 14 1 3. + <_> + + <_> + 7 18 12 5 -1. + <_> + 11 18 4 5 3. + <_> + + <_> + 1 0 16 19 -1. + <_> + 5 0 8 19 2. + <_> + + <_> + 6 17 12 6 -1. + <_> + 9 17 6 6 2. + <_> + + <_> + 7 11 8 4 -1. + <_> + 7 11 4 4 2. + 1 + <_> + + <_> + 10 9 3 14 -1. + <_> + 11 9 1 14 3. + <_> + + <_> + 2 11 15 8 -1. + <_> + 7 11 5 8 3. + <_> + + <_> + 11 6 7 8 -1. + <_> + 11 6 7 4 2. + 1 + <_> + + <_> + 8 6 8 7 -1. + <_> + 8 6 4 7 2. + 1 + <_> + + <_> + 10 9 3 14 -1. + <_> + 11 9 1 14 3. + <_> + + <_> + 6 9 3 14 -1. + <_> + 7 9 1 14 3. + <_> + + <_> + 7 0 6 12 -1. + <_> + 7 0 3 12 2. + <_> + + <_> + 5 2 3 16 -1. + <_> + 6 2 1 16 3. + <_> + + <_> + 1 4 15 7 -1. + <_> + 6 4 5 7 3. + <_> + + <_> + 12 13 4 8 -1. + <_> + 12 17 4 4 2. + <_> + + <_> + 2 11 12 12 -1. + <_> + 6 15 4 4 9. + <_> + + <_> + 12 15 5 6 -1. + <_> + 12 18 5 3 2. + <_> + + <_> + 0 0 19 16 -1. + <_> + 0 8 19 8 2. + <_> + + <_> + 4 20 15 3 -1. + <_> + 9 20 5 3 3. + <_> + + <_> + 9 0 4 8 -1. + <_> + 9 0 4 4 2. + 1 + <_> + + <_> + 5 15 12 6 -1. + <_> + 11 15 6 3 2. + <_> + 5 18 6 3 2. + <_> + + <_> + 2 15 12 6 -1. + <_> + 2 15 6 3 2. + <_> + 8 18 6 3 2. + <_> + + <_> + 8 0 9 5 -1. + <_> + 11 0 3 5 3. + <_> + + <_> + 0 19 14 4 -1. + <_> + 0 19 7 2 2. + <_> + 7 21 7 2 2. + <_> + + <_> + 1 14 18 7 -1. + <_> + 1 14 9 7 2. + <_> + + <_> + 5 1 8 8 -1. + <_> + 5 1 4 4 2. + <_> + 9 5 4 4 2. + <_> + + <_> + 9 6 6 12 -1. + <_> + 9 6 3 12 2. + <_> + + <_> + 2 0 14 4 -1. + <_> + 9 0 7 4 2. + <_> + + <_> + 4 20 15 3 -1. + <_> + 9 20 5 3 3. + <_> + + <_> + 0 20 15 3 -1. + <_> + 5 20 5 3 3. + <_> + + <_> + 2 6 16 9 -1. + <_> + 6 6 8 9 2. + <_> + + <_> + 4 6 6 12 -1. + <_> + 7 6 3 12 2. + <_> + + <_> + 9 17 9 6 -1. + <_> + 12 17 3 6 3. + <_> + + <_> + 4 7 4 9 -1. + <_> + 6 7 2 9 2. + <_> + + <_> + 13 6 2 16 -1. + <_> + 13 6 1 16 2. + <_> + + <_> + 1 5 12 9 -1. + <_> + 7 5 6 9 2. + <_> + + <_> + 13 6 2 16 -1. + <_> + 13 6 1 16 2. + <_> + + <_> + 4 6 2 16 -1. + <_> + 5 6 1 16 2. + <_> + + <_> + 12 0 3 15 -1. + <_> + 13 0 1 15 3. + <_> + + <_> + 4 0 3 15 -1. + <_> + 5 0 1 15 3. + <_> + + <_> + 6 2 8 8 -1. + <_> + 8 2 4 8 2. + <_> + + <_> + 6 0 6 5 -1. + <_> + 9 0 3 5 2. + <_> + + <_> + 4 7 11 16 -1. + <_> + 4 11 11 8 2. + <_> + + <_> + 7 8 5 8 -1. + <_> + 7 12 5 4 2. + <_> + + <_> + 4 18 14 3 -1. + <_> + 4 19 14 1 3. + <_> + + <_> + 1 18 17 3 -1. + <_> + 1 19 17 1 3. + <_> + + <_> + 9 20 10 3 -1. + <_> + 9 20 5 3 2. + <_> + + <_> + 1 21 14 2 -1. + <_> + 8 21 7 2 2. + <_> + + <_> + 4 18 14 3 -1. + <_> + 4 19 14 1 3. + <_> + + <_> + 2 16 5 6 -1. + <_> + 2 19 5 3 2. + <_> + + <_> + 13 11 5 12 -1. + <_> + 13 15 5 4 3. + <_> + + <_> + 1 9 16 3 -1. + <_> + 1 10 16 1 3. + <_> + + <_> + 7 6 5 9 -1. + <_> + 7 9 5 3 3. + <_> + + <_> + 6 0 7 14 -1. + <_> + 6 7 7 7 2. + <_> + + <_> + 11 16 6 7 -1. + <_> + 13 16 2 7 3. + <_> + + <_> + 1 4 3 15 -1. + <_> + 2 4 1 15 3. + <_> + + <_> + 10 0 8 8 -1. + <_> + 14 0 4 4 2. + <_> + 10 4 4 4 2. + <_> + + <_> + 1 9 3 14 -1. + <_> + 2 9 1 14 3. + <_> + + <_> + 13 13 5 9 -1. + <_> + 13 16 5 3 3. + <_> + + <_> + 1 13 5 9 -1. + <_> + 1 16 5 3 3. + <_> + + <_> + 12 14 7 6 -1. + <_> + 12 16 7 2 3. + <_> + + <_> + 4 14 9 6 -1. + <_> + 4 17 9 3 2. + <_> + + <_> + 2 13 10 3 -1. + <_> + 7 13 5 3 2. + <_> + + <_> + 9 0 10 5 -1. + <_> + 9 0 5 5 2. + <_> + + <_> + 1 8 2 15 -1. + <_> + 2 8 1 15 2. + <_> + + <_> + 13 0 6 18 -1. + <_> + 15 0 2 18 3. + <_> + + <_> + 0 21 14 2 -1. + <_> + 7 21 7 2 2. + <_> + + <_> + 9 19 8 4 -1. + <_> + 9 19 4 4 2. + <_> + + <_> + 1 21 16 2 -1. + <_> + 9 21 8 2 2. + <_> + + <_> + 2 0 16 4 -1. + <_> + 6 0 8 4 2. + <_> + + <_> + 3 0 9 5 -1. + <_> + 6 0 3 5 3. + <_> + + <_> + 10 5 8 10 -1. + <_> + 10 5 8 5 2. + 1 + <_> + + <_> + 0 1 18 8 -1. + <_> + 0 5 18 4 2. + <_> + + <_> + 10 5 8 10 -1. + <_> + 10 5 8 5 2. + 1 + <_> + + <_> + 4 20 10 3 -1. + <_> + 9 20 5 3 2. + <_> + + <_> + 4 18 14 3 -1. + <_> + 4 19 14 1 3. + <_> + + <_> + 2 16 6 7 -1. + <_> + 4 16 2 7 3. + <_> + + <_> + 4 18 14 3 -1. + <_> + 4 19 14 1 3. + <_> + + <_> + 6 0 6 7 -1. + <_> + 8 0 2 7 3. + <_> + + <_> + 2 2 15 12 -1. + <_> + 7 6 5 4 9. + <_> + + <_> + 5 10 4 9 -1. + <_> + 7 10 2 9 2. + <_> + + <_> + 10 7 8 7 -1. + <_> + 12 9 4 7 2. + 1 + <_> + + <_> + 0 1 18 18 -1. + <_> + 0 1 9 9 2. + <_> + 9 10 9 9 2. + <_> + + <_> + 11 7 8 6 -1. + <_> + 9 9 8 2 3. + 1 + <_> + + <_> + 7 9 3 14 -1. + <_> + 8 9 1 14 3. + <_> + + <_> + 11 7 8 6 -1. + <_> + 9 9 8 2 3. + 1 + <_> + + <_> + 1 0 8 4 -1. + <_> + 5 0 4 4 2. + <_> + + <_> + 11 7 8 6 -1. + <_> + 9 9 8 2 3. + 1 + <_> + + <_> + 8 7 6 8 -1. + <_> + 10 9 2 8 3. + 1 + <_> + + <_> + 13 0 6 19 -1. + <_> + 15 0 2 19 3. + <_> + + <_> + 0 0 6 19 -1. + <_> + 2 0 2 19 3. + <_> + + <_> + 13 8 2 14 -1. + <_> + 13 8 1 14 2. + <_> + + <_> + 0 4 16 3 -1. + <_> + 0 5 16 1 3. + <_> + + <_> + 8 8 4 10 -1. + <_> + 8 13 4 5 2. + <_> + + <_> + 3 17 10 6 -1. + <_> + 3 17 5 3 2. + <_> + 8 20 5 3 2. + <_> + + <_> + 13 8 2 14 -1. + <_> + 13 8 1 14 2. + <_> + + <_> + 1 7 16 5 -1. + <_> + 5 7 8 5 2. + <_> + + <_> + 15 5 4 9 -1. + <_> + 15 5 2 9 2. + 1 + <_> + + <_> + 6 0 3 14 -1. + <_> + 7 0 1 14 3. + <_> + + <_> + 6 4 12 12 -1. + <_> + 10 8 4 4 9. + <_> + + <_> + 7 3 4 9 -1. + <_> + 9 3 2 9 2. + <_> + + <_> + 10 4 7 8 -1. + <_> + 10 6 7 4 2. + <_> + + <_> + 2 4 7 8 -1. + <_> + 2 6 7 4 2. + <_> + + <_> + 4 18 14 3 -1. + <_> + 4 19 14 1 3. + <_> + + <_> + 4 9 2 14 -1. + <_> + 5 9 1 14 2. + <_> + + <_> + 12 15 7 8 -1. + <_> + 12 17 7 4 2. + <_> + + <_> + 6 0 7 20 -1. + <_> + 6 5 7 10 2. + <_> + + <_> + 2 1 16 4 -1. + <_> + 10 1 8 2 2. + <_> + 2 3 8 2 2. + <_> + + <_> + 4 7 3 10 -1. + <_> + 4 12 3 5 2. + <_> + + <_> + 10 6 8 8 -1. + <_> + 12 8 4 8 2. + 1 + <_> + + <_> + 3 10 12 8 -1. + <_> + 3 10 6 4 2. + <_> + 9 14 6 4 2. + <_> + + <_> + 8 4 4 10 -1. + <_> + 8 9 4 5 2. + <_> + + <_> + 7 7 5 9 -1. + <_> + 7 10 5 3 3. + <_> + + <_> + 1 4 17 3 -1. + <_> + 1 5 17 1 3. + <_> + + <_> + 2 3 14 3 -1. + <_> + 2 4 14 1 3. + <_> + + <_> + 2 7 14 2 -1. + <_> + 2 7 7 2 2. + 1 + <_> + + <_> + 10 19 8 4 -1. + <_> + 10 19 4 4 2. + <_> + + <_> + 5 0 5 22 -1. + <_> + 5 11 5 11 2. + <_> + + <_> + 10 19 8 4 -1. + <_> + 10 19 4 4 2. + <_> + + <_> + 1 19 8 4 -1. + <_> + 5 19 4 4 2. + <_> + + <_> + 8 12 4 9 -1. + <_> + 8 12 2 9 2. + <_> + + <_> + 1 16 9 5 -1. + <_> + 4 16 3 5 3. + <_> + + <_> + 3 20 15 3 -1. + <_> + 8 20 5 3 3. + <_> + + <_> + 3 8 10 14 -1. + <_> + 8 8 5 14 2. + <_> + + <_> + 10 5 7 6 -1. + <_> + 10 5 7 3 2. + 1 + <_> + + <_> + 9 5 6 7 -1. + <_> + 9 5 3 7 2. + 1 + <_> + + <_> + 10 4 9 10 -1. + <_> + 10 4 9 5 2. + 1 + <_> + + <_> + 9 4 10 9 -1. + <_> + 9 4 5 9 2. + 1 + <_> + + <_> + 12 15 7 8 -1. + <_> + 12 17 7 4 2. + <_> + + <_> + 0 15 7 8 -1. + <_> + 0 17 7 4 2. + <_> + + <_> + 0 16 19 4 -1. + <_> + 0 17 19 2 2. + <_> + + <_> + 4 20 10 3 -1. + <_> + 9 20 5 3 2. + <_> + + <_> + 9 8 4 15 -1. + <_> + 10 8 2 15 2. + <_> + + <_> + 4 7 4 14 -1. + <_> + 4 7 2 7 2. + <_> + 6 14 2 7 2. + <_> + + <_> + 12 8 2 15 -1. + <_> + 12 8 1 15 2. + <_> + + <_> + 5 8 2 15 -1. + <_> + 6 8 1 15 2. + <_> + + <_> + 8 12 4 11 -1. + <_> + 8 12 2 11 2. + <_> + + <_> + 7 12 4 11 -1. + <_> + 9 12 2 11 2. + <_> + + <_> + 10 4 3 10 -1. + <_> + 10 4 3 5 2. + 1 + <_> + + <_> + 3 16 4 7 -1. + <_> + 5 16 2 7 2. + <_> + + <_> + 3 17 16 3 -1. + <_> + 3 18 16 1 3. + <_> + + <_> + 0 12 4 10 -1. + <_> + 2 12 2 10 2. + <_> + + <_> + 7 14 12 6 -1. + <_> + 10 14 6 6 2. + <_> + + <_> + 0 14 12 6 -1. + <_> + 3 14 6 6 2. + <_> + + <_> + 7 0 12 4 -1. + <_> + 11 0 4 4 3. + <_> + + <_> + 7 0 4 10 -1. + <_> + 9 0 2 10 2. + <_> + + <_> + 9 0 10 3 -1. + <_> + 9 0 5 3 2. + <_> + + <_> + 0 0 10 3 -1. + <_> + 5 0 5 3 2. + <_> + + <_> + 6 5 8 8 -1. + <_> + 10 5 4 4 2. + <_> + 6 9 4 4 2. + <_> + + <_> + 4 6 2 14 -1. + <_> + 5 6 1 14 2. + <_> + + <_> + 10 8 6 10 -1. + <_> + 12 8 2 10 3. + <_> + + <_> + 3 8 6 10 -1. + <_> + 5 8 2 10 3. + <_> + + <_> + 5 15 12 6 -1. + <_> + 9 15 4 6 3. + <_> + + <_> + 2 15 12 6 -1. + <_> + 6 15 4 6 3. + <_> + + <_> + 8 5 5 8 -1. + <_> + 8 9 5 4 2. + <_> + + <_> + 0 2 14 4 -1. + <_> + 7 2 7 4 2. + <_> + + <_> + 7 1 6 7 -1. + <_> + 9 1 2 7 3. + <_> + + <_> + 6 2 4 17 -1. + <_> + 7 2 2 17 2. + <_> + + <_> + 8 1 9 15 -1. + <_> + 11 6 3 5 9. + <_> + + <_> + 0 0 12 4 -1. + <_> + 4 0 4 4 3. + <_> + + <_> + 11 1 8 8 -1. + <_> + 11 5 8 4 2. + <_> + + <_> + 0 1 8 8 -1. + <_> + 0 5 8 4 2. + <_> + + <_> + 10 8 3 14 -1. + <_> + 11 8 1 14 3. + <_> + + <_> + 9 4 10 3 -1. + <_> + 9 4 5 3 2. + 1 + <_> + + <_> + 11 8 2 11 -1. + <_> + 11 8 1 11 2. + 1 + <_> + + <_> + 3 13 4 8 -1. + <_> + 3 17 4 4 2. + <_> + + <_> + 10 11 8 12 -1. + <_> + 10 17 8 6 2. + <_> + + <_> + 6 8 3 14 -1. + <_> + 7 8 1 14 3. + <_> + + <_> + 10 9 2 10 -1. + <_> + 10 9 1 10 2. + 1 + <_> + + <_> + 8 11 6 6 -1. + <_> + 8 11 3 6 2. + 1 + <_> + + <_> + 1 6 16 4 -1. + <_> + 5 6 8 4 2. + <_> + + <_> + 12 0 2 14 -1. + <_> + 12 7 2 7 2. + <_> + + <_> + 7 9 3 14 -1. + <_> + 8 9 1 14 3. + <_> + + <_> + 11 7 2 11 -1. + <_> + 11 7 1 11 2. + 1 + <_> + + <_> + 8 7 11 2 -1. + <_> + 8 7 11 1 2. + 1 + <_> + + <_> + 7 0 6 5 -1. + <_> + 7 0 3 5 2. + <_> + + <_> + 5 0 9 5 -1. + <_> + 8 0 3 5 3. + <_> + + <_> + 7 17 10 6 -1. + <_> + 12 17 5 3 2. + <_> + 7 20 5 3 2. + <_> + + <_> + 7 6 4 15 -1. + <_> + 8 6 2 15 2. + <_> + + <_> + 5 11 10 3 -1. + <_> + 5 11 5 3 2. + <_> + + <_> + 8 7 3 14 -1. + <_> + 9 7 1 14 3. + <_> + + <_> + 10 8 2 10 -1. + <_> + 10 8 1 10 2. + 1 + <_> + + <_> + 3 3 9 18 -1. + <_> + 6 9 3 6 9. + <_> + + <_> + 8 0 10 12 -1. + <_> + 13 0 5 6 2. + <_> + 8 6 5 6 2. + <_> + + <_> + 1 12 12 11 -1. + <_> + 4 12 6 11 2. + <_> + + <_> + 2 4 15 9 -1. + <_> + 7 7 5 3 9. + <_> + + <_> + 3 7 10 10 -1. + <_> + 8 7 5 10 2. + <_> + + <_> + 10 8 2 10 -1. + <_> + 10 8 1 10 2. + 1 + <_> + + <_> + 2 18 6 5 -1. + <_> + 5 18 3 5 2. + <_> + + <_> + 9 20 10 3 -1. + <_> + 9 20 5 3 2. + <_> + + <_> + 5 0 4 14 -1. + <_> + 5 0 2 7 2. + <_> + 7 7 2 7 2. + <_> + + <_> + 8 0 10 12 -1. + <_> + 13 0 5 6 2. + <_> + 8 6 5 6 2. + <_> + + <_> + 2 0 8 18 -1. + <_> + 2 0 4 9 2. + <_> + 6 9 4 9 2. + <_> + + <_> + 10 0 8 4 -1. + <_> + 10 0 4 4 2. + <_> + + <_> + 9 9 9 2 -1. + <_> + 9 9 9 1 2. + 1 + <_> + + <_> + 15 7 3 10 -1. + <_> + 15 12 3 5 2. + <_> + + <_> + 1 7 3 10 -1. + <_> + 1 12 3 5 2. + <_> + + <_> + 15 6 4 7 -1. + <_> + 15 6 2 7 2. + <_> + + <_> + 4 15 6 7 -1. + <_> + 6 15 2 7 3. + <_> + + <_> + 2 2 16 20 -1. + <_> + 10 2 8 10 2. + <_> + 2 12 8 10 2. + <_> + + <_> + 4 17 7 6 -1. + <_> + 4 19 7 2 3. + <_> + + <_> + 3 15 15 6 -1. + <_> + 3 18 15 3 2. + <_> + + <_> + 0 18 14 3 -1. + <_> + 0 19 14 1 3. + <_> + + <_> + 9 20 10 3 -1. + <_> + 9 20 5 3 2. + <_> + + <_> + 2 0 4 18 -1. + <_> + 2 0 2 9 2. + <_> + 4 9 2 9 2. + <_> + + <_> + 10 2 6 8 -1. + <_> + 10 6 6 4 2. + <_> + + <_> + 5 2 8 8 -1. + <_> + 5 2 4 4 2. + <_> + 9 6 4 4 2. + <_> + + <_> + 9 20 10 3 -1. + <_> + 9 20 5 3 2. + <_> + + <_> + 0 0 18 3 -1. + <_> + 6 0 6 3 3. + <_> + + <_> + 10 0 8 4 -1. + <_> + 10 0 4 4 2. + <_> + + <_> + 1 0 8 4 -1. + <_> + 5 0 4 4 2. + <_> + + <_> + 9 20 10 3 -1. + <_> + 9 20 5 3 2. + <_> + + <_> + 9 9 8 2 -1. + <_> + 9 9 8 1 2. + 1 + <_> + + <_> + 4 7 15 9 -1. + <_> + 9 7 5 9 3. + <_> + + <_> + 8 8 3 14 -1. + <_> + 9 8 1 14 3. + <_> + + <_> + 6 6 12 16 -1. + <_> + 9 6 6 16 2. + <_> + + <_> + 1 6 12 16 -1. + <_> + 4 6 6 16 2. + <_> + + <_> + 10 6 4 7 -1. + <_> + 10 6 2 7 2. + <_> + + <_> + 2 15 5 6 -1. + <_> + 2 18 5 3 2. + <_> + + <_> + 7 19 12 4 -1. + <_> + 11 19 4 4 3. + <_> + + <_> + 0 19 12 4 -1. + <_> + 4 19 4 4 3. + <_> + + <_> + 10 9 4 7 -1. + <_> + 10 9 2 7 2. + <_> + + <_> + 5 9 4 9 -1. + <_> + 7 9 2 9 2. + <_> + + <_> + 5 3 4 17 -1. + <_> + 7 3 2 17 2. + <_> + + <_> + 3 21 14 2 -1. + <_> + 3 21 7 2 2. + <_> + + <_> + 0 19 12 3 -1. + <_> + 6 19 6 3 2. + <_> + + <_> + 9 0 3 22 -1. + <_> + 9 11 3 11 2. + <_> + + <_> + 5 9 2 14 -1. + <_> + 6 9 1 14 2. + <_> + + <_> + 7 7 6 16 -1. + <_> + 7 11 6 8 2. + <_> + + <_> + 1 12 4 8 -1. + <_> + 1 16 4 4 2. + <_> + + <_> + 2 12 15 3 -1. + <_> + 7 12 5 3 3. + <_> + + <_> + 1 17 12 6 -1. + <_> + 1 17 6 3 2. + <_> + 7 20 6 3 2. + <_> + + <_> + 8 0 4 9 -1. + <_> + 8 0 2 9 2. + <_> + + <_> + 7 0 4 9 -1. + <_> + 9 0 2 9 2. + <_> + + <_> + 7 1 5 20 -1. + <_> + 7 6 5 10 2. + <_> + + <_> + 1 7 6 16 -1. + <_> + 3 7 2 16 3. + <_> + + <_> + 8 7 4 10 -1. + <_> + 8 12 4 5 2. + <_> + + <_> + 1 3 12 12 -1. + <_> + 5 7 4 4 9. + <_> + + <_> + 8 6 3 14 -1. + <_> + 9 6 1 14 3. + <_> + + <_> + 2 6 6 10 -1. + <_> + 2 6 3 5 2. + <_> + 5 11 3 5 2. + <_> + + <_> + 8 6 4 14 -1. + <_> + 9 6 2 14 2. + <_> + + <_> + 0 10 18 12 -1. + <_> + 0 10 9 6 2. + <_> + 9 16 9 6 2. + <_> + + <_> + 8 6 4 14 -1. + <_> + 9 6 2 14 2. + <_> + + <_> + 7 6 4 14 -1. + <_> + 8 6 2 14 2. + <_> + + <_> + 1 15 18 6 -1. + <_> + 1 15 9 6 2. + <_> + + <_> + 1 17 6 5 -1. + <_> + 4 17 3 5 2. + <_> + + <_> + 6 17 12 6 -1. + <_> + 9 17 6 6 2. + <_> + + <_> + 1 15 12 8 -1. + <_> + 4 15 6 8 2. + <_> + + <_> + 0 7 19 3 -1. + <_> + 0 8 19 1 3. + <_> + + <_> + 1 8 16 3 -1. + <_> + 1 9 16 1 3. + <_> + + <_> + 6 6 7 6 -1. + <_> + 6 8 7 2 3. + <_> + + <_> + 4 7 10 14 -1. + <_> + 4 7 5 7 2. + <_> + 9 14 5 7 2. + <_> + + <_> + 5 0 12 10 -1. + <_> + 5 0 6 10 2. + <_> + + <_> + 2 0 15 13 -1. + <_> + 7 0 5 13 3. + <_> + + <_> + 5 6 12 6 -1. + <_> + 8 6 6 6 2. + <_> + + <_> + 2 16 6 7 -1. + <_> + 4 16 2 7 3. + <_> + + <_> + 10 4 8 8 -1. + <_> + 12 6 4 8 2. + 1 + <_> + + <_> + 9 5 7 6 -1. + <_> + 7 7 7 2 3. + 1 + <_> + + <_> + 1 7 18 3 -1. + <_> + 1 8 18 1 3. + <_> + + <_> + 5 4 9 11 -1. + <_> + 8 4 3 11 3. + <_> + + <_> + 13 0 6 7 -1. + <_> + 15 0 2 7 3. + <_> + + <_> + 3 11 12 6 -1. + <_> + 3 11 6 3 2. + <_> + 9 14 6 3 2. + <_> + + <_> + 13 4 3 16 -1. + <_> + 14 4 1 16 3. + <_> + + <_> + 3 4 3 16 -1. + <_> + 4 4 1 16 3. + <_> + + <_> + 2 9 16 8 -1. + <_> + 10 9 8 4 2. + <_> + 2 13 8 4 2. + <_> + + <_> + 3 0 3 19 -1. + <_> + 4 0 1 19 3. + <_> + + <_> + 6 1 8 10 -1. + <_> + 8 1 4 10 2. + <_> + + <_> + 0 14 18 6 -1. + <_> + 6 14 6 6 3. + <_> + + <_> + 4 6 15 9 -1. + <_> + 9 9 5 3 9. + <_> + + <_> + 0 14 15 8 -1. + <_> + 5 14 5 8 3. + <_> + + <_> + 3 20 15 3 -1. + <_> + 8 20 5 3 3. + <_> + + <_> + 0 15 18 2 -1. + <_> + 0 16 18 1 2. + <_> + + <_> + 2 15 17 3 -1. + <_> + 2 16 17 1 3. + <_> + + <_> + 0 0 19 4 -1. + <_> + 0 2 19 2 2. + <_> + + <_> + 4 0 12 4 -1. + <_> + 4 2 12 2 2. + <_> + + <_> + 3 0 3 21 -1. + <_> + 4 0 1 21 3. + <_> + + <_> + 6 18 8 4 -1. + <_> + 6 20 8 2 2. + <_> + + <_> + 1 18 14 3 -1. + <_> + 1 19 14 1 3. + <_> + + <_> + 9 18 9 5 -1. + <_> + 12 18 3 5 3. + <_> + + <_> + 0 18 19 3 -1. + <_> + 0 19 19 1 3. + <_> + + <_> + 13 8 3 14 -1. + <_> + 14 8 1 14 3. + <_> + + <_> + 2 6 12 7 -1. + <_> + 5 6 6 7 2. + <_> + + <_> + 2 6 16 16 -1. + <_> + 6 6 8 16 2. + <_> + + <_> + 0 1 16 20 -1. + <_> + 4 1 8 20 2. + <_> + + <_> + 12 9 4 14 -1. + <_> + 14 9 2 7 2. + <_> + 12 16 2 7 2. + <_> + + <_> + 3 9 4 14 -1. + <_> + 3 9 2 7 2. + <_> + 5 16 2 7 2. + <_> + + <_> + 11 11 6 10 -1. + <_> + 14 11 3 5 2. + <_> + 11 16 3 5 2. + <_> + + <_> + 2 11 6 10 -1. + <_> + 2 11 3 5 2. + <_> + 5 16 3 5 2. + <_> + + <_> + 2 8 16 9 -1. + <_> + 6 8 8 9 2. + <_> + + <_> + 2 17 10 6 -1. + <_> + 2 17 5 3 2. + <_> + 7 20 5 3 2. + <_> + + <_> + 11 7 8 7 -1. + <_> + 13 9 4 7 2. + 1 + <_> + + <_> + 8 7 7 8 -1. + <_> + 6 9 7 4 2. + 1 + <_> + + <_> + 7 7 6 16 -1. + <_> + 7 11 6 8 2. + <_> + + <_> + 7 4 4 10 -1. + <_> + 7 9 4 5 2. + <_> + + <_> + 5 0 9 5 -1. + <_> + 8 0 3 5 3. + <_> + + <_> + 1 1 16 18 -1. + <_> + 5 1 8 18 2. + <_> + + <_> + 5 21 14 2 -1. + <_> + 5 21 7 2 2. + <_> + + <_> + 0 20 18 3 -1. + <_> + 6 20 6 3 3. + <_> + + <_> + 8 9 3 14 -1. + <_> + 9 9 1 14 3. + <_> + + <_> + 2 4 13 2 -1. + <_> + 2 4 13 1 2. + 1 + <_> + + <_> + 6 0 10 16 -1. + <_> + 11 0 5 8 2. + <_> + 6 8 5 8 2. + <_> + + <_> + 2 14 5 6 -1. + <_> + 2 17 5 3 2. + <_> + + <_> + 12 8 4 8 -1. + <_> + 12 12 4 4 2. + <_> + + <_> + 3 8 4 8 -1. + <_> + 3 12 4 4 2. + <_> + + <_> + 14 6 3 10 -1. + <_> + 14 11 3 5 2. + <_> + + <_> + 2 6 3 10 -1. + <_> + 2 11 3 5 2. + <_> + + <_> + 7 5 12 16 -1. + <_> + 7 9 12 8 2. + <_> + + <_> + 6 11 4 9 -1. + <_> + 8 11 2 9 2. + <_> + + <_> + 7 18 10 5 -1. + <_> + 7 18 5 5 2. + <_> + + <_> + 4 0 11 14 -1. + <_> + 4 7 11 7 2. + <_> + + <_> + 8 1 9 15 -1. + <_> + 11 6 3 5 9. + <_> + + <_> + 0 6 5 8 -1. + <_> + 0 10 5 4 2. + <_> + + <_> + 15 0 4 13 -1. + <_> + 15 0 2 13 2. + 1 + <_> + + <_> + 4 0 13 4 -1. + <_> + 4 0 13 2 2. + 1 + <_> + + <_> + 6 3 9 5 -1. + <_> + 9 3 3 5 3. + <_> + + <_> + 4 3 9 5 -1. + <_> + 7 3 3 5 3. + <_> + + <_> + 7 1 12 4 -1. + <_> + 7 1 6 4 2. + <_> + + <_> + 0 2 6 12 -1. + <_> + 0 8 6 6 2. + <_> + + <_> + 5 0 12 5 -1. + <_> + 5 0 6 5 2. + <_> + + <_> + 2 0 14 5 -1. + <_> + 9 0 7 5 2. + <_> + + <_> + 9 1 4 14 -1. + <_> + 10 1 2 14 2. + <_> + + <_> + 3 5 9 8 -1. + <_> + 3 7 9 4 2. + <_> + + <_> + 2 7 16 9 -1. + <_> + 6 7 8 9 2. + <_> + + <_> + 0 19 14 2 -1. + <_> + 7 19 7 2 2. + <_> + + <_> + 8 20 10 3 -1. + <_> + 8 20 5 3 2. + <_> + + <_> + 1 20 10 3 -1. + <_> + 6 20 5 3 2. + <_> + + <_> + 15 8 3 10 -1. + <_> + 16 9 1 10 3. + 1 + <_> + + <_> + 0 21 16 2 -1. + <_> + 8 21 8 2 2. + <_> + + <_> + 4 6 15 3 -1. + <_> + 4 7 15 1 3. + <_> + + <_> + 6 4 3 14 -1. + <_> + 7 4 1 14 3. + <_> + + <_> + 7 18 10 5 -1. + <_> + 7 18 5 5 2. + <_> + + <_> + 2 18 10 5 -1. + <_> + 7 18 5 5 2. + <_> + + <_> + 6 0 10 16 -1. + <_> + 11 0 5 8 2. + <_> + 6 8 5 8 2. + <_> + + <_> + 3 0 10 16 -1. + <_> + 3 0 5 8 2. + <_> + 8 8 5 8 2. + <_> + + <_> + 6 0 7 4 -1. + <_> + 6 2 7 2 2. + <_> + + <_> + 0 2 19 3 -1. + <_> + 0 3 19 1 3. + <_> + + <_> + 7 0 12 4 -1. + <_> + 7 2 12 2 2. + <_> + + <_> + 0 2 15 3 -1. + <_> + 0 3 15 1 3. + <_> + + <_> + 1 5 18 3 -1. + <_> + 1 6 18 1 3. + <_> + + <_> + 3 0 12 6 -1. + <_> + 3 2 12 2 3. + <_> + + <_> + 5 0 10 10 -1. + <_> + 5 5 10 5 2. + <_> + + <_> + 5 1 9 4 -1. + <_> + 5 3 9 2 2. + <_> + + <_> + 5 2 12 6 -1. + <_> + 5 4 12 2 3. + <_> + + <_> + 1 15 9 6 -1. + <_> + 1 17 9 2 3. + <_> + + <_> + 5 13 14 9 -1. + <_> + 5 16 14 3 3. + <_> + + <_> + 8 12 8 3 -1. + <_> + 7 13 8 1 3. + 1 + <_> + + <_> + 12 8 2 15 -1. + <_> + 12 8 1 15 2. + <_> + + <_> + 5 8 2 15 -1. + <_> + 6 8 1 15 2. + <_> + + <_> + 11 5 3 14 -1. + <_> + 12 5 1 14 3. + <_> + + <_> + 5 8 2 14 -1. + <_> + 6 8 1 14 2. + <_> + + <_> + 11 6 3 14 -1. + <_> + 12 6 1 14 3. + <_> + + <_> + 0 0 8 22 -1. + <_> + 0 0 4 11 2. + <_> + 4 11 4 11 2. + <_> + + <_> + 13 10 4 8 -1. + <_> + 13 10 2 8 2. + <_> + + <_> + 1 13 16 7 -1. + <_> + 5 13 8 7 2. + <_> + + <_> + 13 10 4 8 -1. + <_> + 13 10 2 8 2. + <_> + + <_> + 2 10 4 8 -1. + <_> + 4 10 2 8 2. + <_> + + <_> + 5 7 10 6 -1. + <_> + 10 7 5 3 2. + <_> + 5 10 5 3 2. + <_> + + <_> + 0 19 8 4 -1. + <_> + 4 19 4 4 2. + <_> + + <_> + 3 15 15 3 -1. + <_> + 3 16 15 1 3. + <_> + + <_> + 7 2 4 16 -1. + <_> + 7 2 2 8 2. + <_> + 9 10 2 8 2. + <_> + + <_> + 8 6 4 12 -1. + <_> + 8 10 4 4 3. + <_> + + <_> + 7 6 4 12 -1. + <_> + 7 10 4 4 3. + <_> + + <_> + 3 15 14 2 -1. + <_> + 3 16 14 1 2. + <_> + + <_> + 0 15 17 8 -1. + <_> + 0 17 17 4 2. + <_> + + <_> + 10 3 9 10 -1. + <_> + 10 3 9 5 2. + 1 + <_> + + <_> + 7 8 4 10 -1. + <_> + 7 13 4 5 2. + <_> + + <_> + 7 8 7 15 -1. + <_> + 7 13 7 5 3. + <_> + + <_> + 1 0 16 20 -1. + <_> + 5 0 8 20 2. + <_> + + <_> + 9 18 9 5 -1. + <_> + 12 18 3 5 3. + <_> + + <_> + 1 18 9 5 -1. + <_> + 4 18 3 5 3. + <_> + + <_> + 8 7 8 12 -1. + <_> + 12 7 4 6 2. + <_> + 8 13 4 6 2. + <_> + + <_> + 2 9 4 13 -1. + <_> + 4 9 2 13 2. + <_> + + <_> + 12 14 7 4 -1. + <_> + 12 16 7 2 2. + <_> + + <_> + 0 6 18 3 -1. + <_> + 0 7 18 1 3. + <_> + + <_> + 1 16 18 7 -1. + <_> + 1 16 9 7 2. + <_> + + <_> + 0 18 15 5 -1. + <_> + 5 18 5 5 3. + <_> + + <_> + 10 5 4 8 -1. + <_> + 10 5 2 8 2. + <_> + + <_> + 5 5 4 8 -1. + <_> + 7 5 2 8 2. + <_> + + <_> + 7 0 6 5 -1. + <_> + 7 0 3 5 2. + <_> + + <_> + 6 2 2 15 -1. + <_> + 7 2 1 15 2. + <_> + + <_> + 4 0 12 4 -1. + <_> + 4 0 6 4 2. + <_> + + <_> + 5 0 2 14 -1. + <_> + 5 7 2 7 2. + <_> + + <_> + 5 16 14 4 -1. + <_> + 5 17 14 2 2. + <_> + + <_> + 2 9 2 14 -1. + <_> + 3 9 1 14 2. + <_> + + <_> + 12 0 4 7 -1. + <_> + 12 0 2 7 2. + <_> + + <_> + 3 0 4 7 -1. + <_> + 5 0 2 7 2. + <_> + + <_> + 8 0 9 15 -1. + <_> + 11 5 3 5 9. + <_> + + <_> + 2 0 9 15 -1. + <_> + 5 5 3 5 9. + <_> + + <_> + 16 5 2 16 -1. + <_> + 16 5 1 16 2. + 1 + <_> + + <_> + 3 5 16 2 -1. + <_> + 3 5 16 1 2. + 1 + <_> + + <_> + 9 11 6 9 -1. + <_> + 11 11 2 9 3. + <_> + + <_> + 7 6 8 4 -1. + <_> + 7 6 4 4 2. + 1 + <_> + + <_> + 10 0 8 8 -1. + <_> + 14 0 4 4 2. + <_> + 10 4 4 4 2. + <_> + + <_> + 3 0 12 4 -1. + <_> + 7 0 4 4 3. + <_> + + <_> + 9 11 6 9 -1. + <_> + 11 11 2 9 3. + <_> + + <_> + 3 10 4 10 -1. + <_> + 5 10 2 10 2. + <_> + + <_> + 11 12 6 5 -1. + <_> + 11 12 3 5 2. + <_> + + <_> + 4 11 6 9 -1. + <_> + 6 11 2 9 3. + <_> + + <_> + 12 12 7 4 -1. + <_> + 12 12 7 2 2. + 1 + <_> + + <_> + 1 0 8 8 -1. + <_> + 1 0 4 4 2. + <_> + 5 4 4 4 2. + <_> + + <_> + 10 4 9 10 -1. + <_> + 10 4 9 5 2. + 1 + <_> + + <_> + 1 1 12 8 -1. + <_> + 1 1 6 4 2. + <_> + 7 5 6 4 2. + <_> + + <_> + 2 14 16 2 -1. + <_> + 2 14 8 2 2. + <_> + + <_> + 7 3 4 14 -1. + <_> + 8 3 2 14 2. + <_> + + <_> + 7 1 6 7 -1. + <_> + 9 1 2 7 3. + <_> + + <_> + 3 10 4 12 -1. + <_> + 3 14 4 4 3. + <_> + + <_> + 8 4 6 7 -1. + <_> + 10 4 2 7 3. + <_> + + <_> + 5 4 6 7 -1. + <_> + 7 4 2 7 3. + <_> + + <_> + 5 7 14 8 -1. + <_> + 5 7 7 8 2. + <_> + + <_> + 2 12 6 5 -1. + <_> + 5 12 3 5 2. + <_> + + <_> + 12 9 4 7 -1. + <_> + 12 9 2 7 2. + <_> + + <_> + 3 9 4 7 -1. + <_> + 5 9 2 7 2. + <_> + + <_> + 13 2 4 12 -1. + <_> + 13 6 4 4 3. + <_> + + <_> + 2 2 4 12 -1. + <_> + 2 6 4 4 3. + <_> + + <_> + 2 2 16 8 -1. + <_> + 10 2 8 4 2. + <_> + 2 6 8 4 2. + <_> + + <_> + 2 2 15 9 -1. + <_> + 7 5 5 3 9. + <_> + + <_> + 8 7 3 12 -1. + <_> + 8 13 3 6 2. + <_> + + <_> + 2 0 3 15 -1. + <_> + 3 0 1 15 3. + <_> + + <_> + 1 8 16 4 -1. + <_> + 5 8 8 4 2. + <_> + + <_> + 6 0 8 8 -1. + <_> + 10 0 4 4 2. + <_> + 6 4 4 4 2. + <_> + + <_> + 8 9 2 14 -1. + <_> + 9 9 1 14 2. + <_> + + <_> + 8 5 3 10 -1. + <_> + 8 10 3 5 2. + <_> + + <_> + 8 9 3 14 -1. + <_> + 9 9 1 14 3. + <_> + + <_> + 6 7 12 16 -1. + <_> + 6 11 12 8 2. + <_> + + <_> + 4 0 3 16 -1. + <_> + 5 0 1 16 3. + <_> + + <_> + 13 9 4 11 -1. + <_> + 13 9 2 11 2. + <_> + + <_> + 0 18 14 3 -1. + <_> + 7 18 7 3 2. + <_> + + <_> + 6 9 12 11 -1. + <_> + 9 9 6 11 2. + <_> + + <_> + 1 7 16 9 -1. + <_> + 5 7 8 9 2. + <_> + + <_> + 11 6 4 7 -1. + <_> + 11 6 2 7 2. + <_> + + <_> + 3 11 12 12 -1. + <_> + 7 15 4 4 9. + <_> + + <_> + 11 6 4 7 -1. + <_> + 11 6 2 7 2. + <_> + + <_> + 4 0 6 10 -1. + <_> + 6 0 2 10 3. + <_> + + <_> + 13 9 2 14 -1. + <_> + 13 9 1 14 2. + <_> + + <_> + 4 9 2 14 -1. + <_> + 5 9 1 14 2. + <_> + + <_> + 7 7 6 16 -1. + <_> + 7 11 6 8 2. + <_> + + <_> + 2 16 4 7 -1. + <_> + 4 16 2 7 2. + <_> + + <_> + 9 17 9 6 -1. + <_> + 12 17 3 6 3. + <_> + + <_> + 2 16 6 7 -1. + <_> + 4 16 2 7 3. + <_> + + <_> + 14 13 5 6 -1. + <_> + 14 16 5 3 2. + <_> + + <_> + 0 0 12 6 -1. + <_> + 6 0 6 6 2. + <_> + + <_> + 4 0 14 7 -1. + <_> + 4 0 7 7 2. + <_> + + <_> + 5 0 9 22 -1. + <_> + 5 11 9 11 2. + <_> + + <_> + 11 8 8 4 -1. + <_> + 11 10 8 2 2. + <_> + + <_> + 9 0 4 8 -1. + <_> + 9 0 2 8 2. + 1 + <_> + + <_> + 5 17 14 2 -1. + <_> + 5 18 14 1 2. + <_> + + <_> + 1 17 14 3 -1. + <_> + 1 18 14 1 3. + <_> + + <_> + 6 1 12 12 -1. + <_> + 10 5 4 4 9. + <_> + + <_> + 1 1 12 12 -1. + <_> + 5 5 4 4 9. + <_> + + <_> + 6 0 7 18 -1. + <_> + 6 9 7 9 2. + <_> + + <_> + 0 0 12 9 -1. + <_> + 3 0 6 9 2. + <_> + + <_> + 9 9 3 14 -1. + <_> + 10 9 1 14 3. + <_> + + <_> + 7 5 5 9 -1. + <_> + 7 8 5 3 3. + <_> + + <_> + 9 9 3 14 -1. + <_> + 10 9 1 14 3. + <_> + + <_> + 7 9 3 14 -1. + <_> + 8 9 1 14 3. + <_> + + <_> + 12 10 5 8 -1. + <_> + 12 10 5 4 2. + 1 + <_> + + <_> + 8 6 10 7 -1. + <_> + 8 6 5 7 2. + 1 + <_> + + <_> + 12 15 7 4 -1. + <_> + 12 17 7 2 2. + <_> + + <_> + 0 15 7 4 -1. + <_> + 0 17 7 2 2. + <_> + + <_> + 15 6 2 16 -1. + <_> + 15 6 1 16 2. + <_> + + <_> + 3 9 4 8 -1. + <_> + 3 13 4 4 2. + <_> + + <_> + 0 14 19 3 -1. + <_> + 0 15 19 1 3. + <_> + + <_> + 1 12 4 7 -1. + <_> + 3 12 2 7 2. + <_> + + <_> + 14 12 4 11 -1. + <_> + 14 12 2 11 2. + <_> + + <_> + 0 8 5 6 -1. + <_> + 0 11 5 3 2. + <_> + + <_> + 4 0 14 3 -1. + <_> + 4 0 7 3 2. + <_> + + <_> + 1 0 14 3 -1. + <_> + 8 0 7 3 2. + <_> + + <_> + 12 3 7 4 -1. + <_> + 12 5 7 2 2. + <_> + + <_> + 0 3 7 4 -1. + <_> + 0 5 7 2 2. + <_> + + <_> + 10 8 4 7 -1. + <_> + 10 8 2 7 2. + <_> + + <_> + 1 12 4 11 -1. + <_> + 3 12 2 11 2. + <_> + + <_> + 2 10 16 4 -1. + <_> + 2 11 16 2 2. + <_> + + <_> + 7 11 9 3 -1. + <_> + 6 12 9 1 3. + 1 + <_> + + <_> + 5 6 12 16 -1. + <_> + 8 6 6 16 2. + <_> + + <_> + 2 6 14 4 -1. + <_> + 2 6 7 2 2. + <_> + 9 8 7 2 2. + <_> + + <_> + 5 6 10 6 -1. + <_> + 10 6 5 3 2. + <_> + 5 9 5 3 2. + <_> + + <_> + 0 9 2 14 -1. + <_> + 1 9 1 14 2. + <_> + + <_> + 10 18 9 5 -1. + <_> + 13 18 3 5 3. + <_> + + <_> + 4 9 10 3 -1. + <_> + 3 10 10 1 3. + 1 + <_> + + <_> + 10 18 9 5 -1. + <_> + 13 18 3 5 3. + <_> + + <_> + 0 18 9 5 -1. + <_> + 3 18 3 5 3. + <_> + + <_> + 5 8 12 9 -1. + <_> + 9 8 4 9 3. + <_> + + <_> + 2 8 12 9 -1. + <_> + 6 8 4 9 3. + <_> + + <_> + 9 6 4 14 -1. + <_> + 10 6 2 14 2. + <_> + + <_> + 2 20 15 3 -1. + <_> + 7 20 5 3 3. + <_> + + <_> + 5 4 9 5 -1. + <_> + 8 4 3 5 3. + <_> + + <_> + 6 6 4 14 -1. + <_> + 7 6 2 14 2. + <_> + + <_> + 10 0 2 14 -1. + <_> + 10 0 1 14 2. + <_> + + <_> + 7 0 2 14 -1. + <_> + 8 0 1 14 2. + <_> + + <_> + 12 0 4 8 -1. + <_> + 12 0 2 8 2. + <_> + + <_> + 0 3 14 3 -1. + <_> + 0 4 14 1 3. + <_> + + <_> + 5 20 10 3 -1. + <_> + 5 20 5 3 2. + <_> + + <_> + 6 18 7 4 -1. + <_> + 6 20 7 2 2. + <_> + + <_> + 3 6 6 9 -1. + <_> + 5 6 2 9 3. + <_> + + <_> + 13 0 6 7 -1. + <_> + 15 0 2 7 3. + <_> + + <_> + 3 13 4 10 -1. + <_> + 5 13 2 10 2. + <_> + + <_> + 12 12 4 10 -1. + <_> + 12 12 2 10 2. + <_> + + <_> + 3 12 4 7 -1. + <_> + 5 12 2 7 2. + <_> + + <_> + 13 0 6 14 -1. + <_> + 15 0 2 14 3. + <_> + + <_> + 0 0 6 12 -1. + <_> + 2 0 2 12 3. + <_> + + <_> + 5 19 14 4 -1. + <_> + 12 19 7 2 2. + <_> + 5 21 7 2 2. + <_> + + <_> + 0 12 9 10 -1. + <_> + 0 17 9 5 2. + <_> + + <_> + 14 13 5 6 -1. + <_> + 14 16 5 3 2. + <_> + + <_> + 0 16 8 4 -1. + <_> + 0 18 8 2 2. + <_> + + <_> + 3 16 16 3 -1. + <_> + 3 17 16 1 3. + <_> + + <_> + 6 0 6 7 -1. + <_> + 8 0 2 7 3. + <_> + + <_> + 2 0 16 5 -1. + <_> + 6 0 8 5 2. + <_> + + <_> + 0 0 17 10 -1. + <_> + 0 5 17 5 2. + <_> + + <_> + 8 1 3 15 -1. + <_> + 9 1 1 15 3. + <_> + + <_> + 0 2 8 20 -1. + <_> + 0 7 8 10 2. + <_> + + <_> + 8 7 4 10 -1. + <_> + 8 12 4 5 2. + <_> + + <_> + 7 7 4 10 -1. + <_> + 7 12 4 5 2. + <_> + + <_> + 11 0 3 17 -1. + <_> + 12 0 1 17 3. + <_> + + <_> + 5 0 3 17 -1. + <_> + 6 0 1 17 3. + <_> + + <_> + 12 9 3 14 -1. + <_> + 13 9 1 14 3. + <_> + + <_> + 6 2 6 10 -1. + <_> + 9 2 3 10 2. + <_> + + <_> + 4 21 14 2 -1. + <_> + 4 21 7 2 2. + <_> + + <_> + 5 0 8 4 -1. + <_> + 9 0 4 4 2. + <_> + + <_> + 10 0 4 8 -1. + <_> + 10 0 4 4 2. + 1 + <_> + + <_> + 3 0 12 6 -1. + <_> + 3 0 6 3 2. + <_> + 9 3 6 3 2. + <_> + + <_> + 8 8 6 8 -1. + <_> + 10 8 2 8 3. + <_> + + <_> + 1 13 12 8 -1. + <_> + 4 13 6 8 2. + <_> + + <_> + 8 8 6 8 -1. + <_> + 10 8 2 8 3. + <_> + + <_> + 5 8 6 8 -1. + <_> + 7 8 2 8 3. + <_> + + <_> + 7 13 8 10 -1. + <_> + 9 13 4 10 2. + <_> + + <_> + 4 14 8 9 -1. + <_> + 6 14 4 9 2. + <_> + + <_> + 9 15 9 5 -1. + <_> + 12 15 3 5 3. + <_> + + <_> + 7 15 4 7 -1. + <_> + 9 15 2 7 2. + <_> + + <_> + 4 19 12 4 -1. + <_> + 4 19 6 4 2. + <_> + + <_> + 6 15 6 8 -1. + <_> + 8 15 2 8 3. + <_> + + <_> + 8 5 8 8 -1. + <_> + 12 5 4 4 2. + <_> + 8 9 4 4 2. + <_> + + <_> + 0 14 7 4 -1. + <_> + 0 16 7 2 2. + <_> + + <_> + 10 2 4 8 -1. + <_> + 11 3 2 8 2. + 1 + <_> + + <_> + 1 12 17 3 -1. + <_> + 1 13 17 1 3. + <_> + + <_> + 13 8 4 15 -1. + <_> + 14 8 2 15 2. + <_> + + <_> + 2 12 14 3 -1. + <_> + 2 13 14 1 3. + <_> + + <_> + 6 12 7 6 -1. + <_> + 6 14 7 2 3. + <_> + + <_> + 2 2 12 6 -1. + <_> + 2 2 6 3 2. + <_> + 8 5 6 3 2. + <_> + + <_> + 11 0 8 5 -1. + <_> + 11 0 4 5 2. + <_> + + <_> + 0 0 8 5 -1. + <_> + 4 0 4 5 2. + <_> + + <_> + 1 2 18 20 -1. + <_> + 1 2 9 20 2. + <_> + + <_> + 9 5 10 8 -1. + <_> + 9 5 5 8 2. + 1 + <_> + + <_> + 7 8 7 10 -1. + <_> + 7 13 7 5 2. + <_> + + <_> + 7 7 4 14 -1. + <_> + 8 7 2 14 2. + <_> + + <_> + 15 7 4 16 -1. + <_> + 15 7 2 16 2. + <_> + + <_> + 0 0 12 7 -1. + <_> + 4 0 4 7 3. + <_> + + <_> + 11 7 4 7 -1. + <_> + 11 7 2 7 2. + 1 + <_> + + <_> + 4 4 6 15 -1. + <_> + 7 4 3 15 2. + <_> + + <_> + 6 10 9 13 -1. + <_> + 9 10 3 13 3. + <_> + + <_> + 1 14 4 7 -1. + <_> + 3 14 2 7 2. + <_> + + <_> + 11 1 3 14 -1. + <_> + 12 1 1 14 3. + <_> + + <_> + 5 11 4 8 -1. + <_> + 7 11 2 8 2. + <_> + + <_> + 11 6 4 7 -1. + <_> + 11 6 2 7 2. + <_> + + <_> + 4 6 4 7 -1. + <_> + 6 6 2 7 2. + <_> + + <_> + 7 5 9 9 -1. + <_> + 10 5 3 9 3. + <_> + + <_> + 2 1 12 12 -1. + <_> + 6 5 4 4 9. + <_> + + <_> + 4 19 14 4 -1. + <_> + 11 19 7 2 2. + <_> + 4 21 7 2 2. + <_> + + <_> + 1 19 14 4 -1. + <_> + 1 19 7 2 2. + <_> + 8 21 7 2 2. + <_> + + <_> + 9 18 9 5 -1. + <_> + 12 18 3 5 3. + <_> + + <_> + 1 18 9 5 -1. + <_> + 4 18 3 5 3. + <_> + + <_> + 11 4 8 6 -1. + <_> + 11 4 4 6 2. + 1 + <_> + + <_> + 6 8 7 6 -1. + <_> + 6 10 7 2 3. + <_> + + <_> + 5 17 14 2 -1. + <_> + 5 18 14 1 2. + <_> + + <_> + 6 6 9 3 -1. + <_> + 5 7 9 1 3. + 1 + <_> + + <_> + 13 9 4 11 -1. + <_> + 13 9 2 11 2. + <_> + + <_> + 2 9 4 11 -1. + <_> + 4 9 2 11 2. + <_> + + <_> + 12 0 3 14 -1. + <_> + 13 0 1 14 3. + <_> + + <_> + 4 0 3 14 -1. + <_> + 5 0 1 14 3. + <_> + + <_> + 7 10 5 6 -1. + <_> + 7 13 5 3 2. + <_> + + <_> + 0 12 17 4 -1. + <_> + 0 14 17 2 2. + <_> + + <_> + 10 5 6 10 -1. + <_> + 12 7 2 10 3. + 1 + <_> + + <_> + 2 9 12 12 -1. + <_> + 6 13 4 4 9. + <_> + + <_> + 1 15 12 8 -1. + <_> + 7 15 6 8 2. + <_> + + <_> + 6 0 8 8 -1. + <_> + 10 0 4 4 2. + <_> + 6 4 4 4 2. + <_> + + <_> + 0 15 7 8 -1. + <_> + 0 17 7 4 2. + <_> + + <_> + 8 7 4 8 -1. + <_> + 8 11 4 4 2. + <_> + + <_> + 5 8 2 14 -1. + <_> + 6 8 1 14 2. + <_> + + <_> + 12 8 7 4 -1. + <_> + 12 10 7 2 2. + <_> + + <_> + 0 13 14 4 -1. + <_> + 0 13 7 2 2. + <_> + 7 15 7 2 2. + <_> + + <_> + 6 13 7 8 -1. + <_> + 6 15 7 4 2. + <_> + + <_> + 7 7 4 15 -1. + <_> + 8 7 2 15 2. + <_> + + <_> + 11 16 5 6 -1. + <_> + 11 19 5 3 2. + <_> + + <_> + 4 0 6 10 -1. + <_> + 4 0 3 5 2. + <_> + 7 5 3 5 2. + <_> + + <_> + 11 10 7 6 -1. + <_> + 9 12 7 2 3. + 1 + <_> + + <_> + 2 0 14 2 -1. + <_> + 9 0 7 2 2. + <_> + + <_> + 1 10 18 8 -1. + <_> + 10 10 9 4 2. + <_> + 1 14 9 4 2. + <_> + + <_> + 1 18 15 3 -1. + <_> + 1 19 15 1 3. + <_> + + <_> + 4 18 14 3 -1. + <_> + 4 19 14 1 3. + <_> + + <_> + 0 3 19 18 -1. + <_> + 0 9 19 6 3. + <_> + + <_> + 4 0 11 20 -1. + <_> + 4 10 11 10 2. + <_> + + <_> + 5 0 9 18 -1. + <_> + 5 9 9 9 2. + <_> + + <_> + 9 0 4 20 -1. + <_> + 9 10 4 10 2. + <_> + + <_> + 1 11 6 6 -1. + <_> + 1 14 6 3 2. + <_> + + <_> + 12 16 6 6 -1. + <_> + 12 19 6 3 2. + <_> + + <_> + 3 8 2 14 -1. + <_> + 4 8 1 14 2. + <_> + + <_> + 7 11 5 12 -1. + <_> + 7 15 5 4 3. + <_> + + <_> + 5 11 5 12 -1. + <_> + 5 14 5 6 2. + <_> + + <_> + 13 0 4 16 -1. + <_> + 15 0 2 8 2. + <_> + 13 8 2 8 2. + <_> + + <_> + 1 0 12 8 -1. + <_> + 7 0 6 8 2. + <_> + + <_> + 13 11 6 7 -1. + <_> + 15 11 2 7 3. + <_> + + <_> + 0 8 7 8 -1. + <_> + 0 10 7 4 2. + <_> + + <_> + 6 6 7 6 -1. + <_> + 6 8 7 2 3. + <_> + + <_> + 7 1 4 14 -1. + <_> + 7 8 4 7 2. + <_> + + <_> + 13 17 6 6 -1. + <_> + 13 17 3 6 2. + <_> + + <_> + 5 11 4 12 -1. + <_> + 5 17 4 6 2. + <_> + + <_> + 13 17 6 6 -1. + <_> + 13 17 3 6 2. + <_> + + <_> + 0 8 2 14 -1. + <_> + 0 15 2 7 2. + <_> + + <_> + 13 18 6 5 -1. + <_> + 13 18 3 5 2. + <_> + + <_> + 4 0 2 14 -1. + <_> + 5 0 1 14 2. + <_> + + <_> + 13 11 6 8 -1. + <_> + 15 11 2 8 3. + <_> + + <_> + 1 11 3 12 -1. + <_> + 1 17 3 6 2. + <_> + + <_> + 12 18 6 5 -1. + <_> + 12 18 3 5 2. + <_> + + <_> + 0 15 4 8 -1. + <_> + 0 19 4 4 2. + <_> + + <_> + 13 11 6 8 -1. + <_> + 15 11 2 8 3. + <_> + + <_> + 0 11 6 8 -1. + <_> + 2 11 2 8 3. + <_> + + <_> + 5 17 14 3 -1. + <_> + 5 18 14 1 3. + <_> + + <_> + 0 15 7 6 -1. + <_> + 0 17 7 2 3. + <_> + + <_> + 10 8 4 10 -1. + <_> + 10 8 2 10 2. + 1 + <_> + + <_> + 1 11 16 7 -1. + <_> + 5 11 8 7 2. + <_> + + <_> + 5 0 9 16 -1. + <_> + 8 0 3 16 3. + <_> + + <_> + 6 6 2 14 -1. + <_> + 7 6 1 14 2. + <_> + + <_> + 11 5 4 15 -1. + <_> + 12 5 2 15 2. + <_> + + <_> + 9 8 10 4 -1. + <_> + 9 8 10 2 2. + 1 + <_> + + <_> + 8 1 4 14 -1. + <_> + 8 1 2 14 2. + <_> + + <_> + 7 1 4 14 -1. + <_> + 9 1 2 14 2. + <_> + + <_> + 1 14 18 9 -1. + <_> + 7 17 6 3 9. + <_> + + <_> + 6 9 7 9 -1. + <_> + 6 12 7 3 3. + <_> + + <_> + 1 11 18 2 -1. + <_> + 1 12 18 1 2. + <_> + + <_> + 7 7 4 16 -1. + <_> + 7 11 4 8 2. + <_> + + <_> + 2 10 15 3 -1. + <_> + 2 11 15 1 3. + <_> + + <_> + 6 12 7 9 -1. + <_> + 6 15 7 3 3. + <_> + + <_> + 4 10 15 3 -1. + <_> + 4 11 15 1 3. + <_> + + <_> + 0 19 14 4 -1. + <_> + 0 19 7 2 2. + <_> + 7 21 7 2 2. + <_> + + <_> + 5 17 14 3 -1. + <_> + 5 18 14 1 3. + <_> + + <_> + 1 7 3 14 -1. + <_> + 2 7 1 14 3. + <_> + + <_> + 9 0 6 7 -1. + <_> + 11 0 2 7 3. + <_> + + <_> + 4 0 6 7 -1. + <_> + 6 0 2 7 3. + <_> + + <_> + 6 5 8 6 -1. + <_> + 6 5 4 6 2. + <_> + + <_> + 5 2 3 16 -1. + <_> + 6 2 1 16 3. + <_> + + <_> + 15 4 4 15 -1. + <_> + 16 4 2 15 2. + <_> + + <_> + 6 12 6 5 -1. + <_> + 6 12 3 5 2. + 1 + <_> + + <_> + 8 9 3 14 -1. + <_> + 9 9 1 14 3. + <_> + + <_> + 0 16 7 4 -1. + <_> + 0 18 7 2 2. + <_> + + <_> + 5 16 14 3 -1. + <_> + 5 17 14 1 3. + <_> + + <_> + 0 4 4 15 -1. + <_> + 1 4 2 15 2. + <_> + + <_> + 10 2 8 6 -1. + <_> + 10 4 8 2 3. + <_> + + <_> + 1 2 8 6 -1. + <_> + 1 4 8 2 3. + <_> + + <_> + 10 6 4 16 -1. + <_> + 12 6 2 8 2. + <_> + 10 14 2 8 2. + <_> + + <_> + 7 1 4 18 -1. + <_> + 7 1 2 9 2. + <_> + 9 10 2 9 2. + <_> + + <_> + 8 4 4 7 -1. + <_> + 8 4 2 7 2. + <_> + + <_> + 7 4 4 7 -1. + <_> + 9 4 2 7 2. + <_> + + <_> + 7 0 12 14 -1. + <_> + 7 0 6 14 2. + <_> + + <_> + 2 1 2 14 -1. + <_> + 3 1 1 14 2. + <_> + + <_> + 0 18 14 4 -1. + <_> + 0 18 7 2 2. + <_> + 7 20 7 2 2. + <_> + + <_> + 6 0 8 8 -1. + <_> + 10 0 4 4 2. + <_> + 6 4 4 4 2. + <_> + + <_> + 4 9 6 10 -1. + <_> + 4 9 3 5 2. + <_> + 7 14 3 5 2. + <_> + + <_> + 1 17 18 6 -1. + <_> + 10 17 9 3 2. + <_> + 1 20 9 3 2. + <_> + + <_> + 5 0 6 21 -1. + <_> + 7 7 2 7 9. + <_> + + <_> + 6 7 12 7 -1. + <_> + 6 7 6 7 2. + <_> + + <_> + 7 0 12 3 -1. + <_> + 7 0 6 3 2. + 1 + <_> + + <_> + 5 0 9 5 -1. + <_> + 8 0 3 5 3. + <_> + + <_> + 7 9 3 14 -1. + <_> + 8 9 1 14 3. + <_> + + <_> + 3 14 16 9 -1. + <_> + 3 17 16 3 3. + <_> + + <_> + 1 17 6 6 -1. + <_> + 4 17 3 6 2. + <_> + + <_> + 5 1 10 20 -1. + <_> + 5 6 10 10 2. + <_> + + <_> + 1 16 12 7 -1. + <_> + 4 16 6 7 2. + <_> + + <_> + 5 0 9 4 -1. + <_> + 5 2 9 2 2. + <_> + + <_> + 3 0 13 6 -1. + <_> + 3 2 13 2 3. + <_> + + <_> + 11 13 7 8 -1. + <_> + 11 15 7 4 2. + <_> + + <_> + 3 0 4 8 -1. + <_> + 3 4 4 4 2. + <_> + + <_> + 9 17 9 6 -1. + <_> + 12 17 3 6 3. + <_> + + <_> + 6 5 7 6 -1. + <_> + 6 7 7 2 3. + <_> + + <_> + 8 17 7 6 -1. + <_> + 8 19 7 2 3. + <_> + + <_> + 5 12 5 8 -1. + <_> + 5 16 5 4 2. + <_> + + <_> + 0 15 19 2 -1. + <_> + 0 16 19 1 2. + <_> + + <_> + 6 7 7 4 -1. + <_> + 6 9 7 2 2. + <_> + + <_> + 9 0 2 21 -1. + <_> + 9 7 2 7 3. + <_> + + <_> + 0 19 15 4 -1. + <_> + 5 19 5 4 3. + <_> + + <_> + 9 20 10 3 -1. + <_> + 9 20 5 3 2. + <_> + + <_> + 0 17 15 3 -1. + <_> + 0 18 15 1 3. + <_> + + <_> + 12 13 6 5 -1. + <_> + 12 13 3 5 2. + <_> + + <_> + 6 7 7 6 -1. + <_> + 6 9 7 2 3. + <_> + + <_> + 3 15 14 3 -1. + <_> + 3 16 14 1 3. + <_> + + <_> + 0 20 10 3 -1. + <_> + 5 20 5 3 2. + <_> + + <_> + 6 7 8 4 -1. + <_> + 6 7 4 4 2. + <_> + + <_> + 1 17 7 6 -1. + <_> + 1 19 7 2 3. + <_> + + <_> + 7 17 12 4 -1. + <_> + 11 17 4 4 3. + <_> + + <_> + 3 15 6 7 -1. + <_> + 5 15 2 7 3. + <_> + + <_> + 6 7 12 7 -1. + <_> + 6 7 6 7 2. + <_> + + <_> + 1 9 12 12 -1. + <_> + 1 13 12 4 3. + <_> + + <_> + 12 6 5 9 -1. + <_> + 12 9 5 3 3. + <_> + + <_> + 2 6 5 9 -1. + <_> + 2 9 5 3 3. + <_> + + <_> + 12 6 6 7 -1. + <_> + 14 8 2 7 3. + 1 + <_> + + <_> + 5 9 8 10 -1. + <_> + 5 9 4 5 2. + <_> + 9 14 4 5 2. + <_> + + <_> + 2 11 16 6 -1. + <_> + 10 11 8 3 2. + <_> + 2 14 8 3 2. + <_> + + <_> + 8 4 3 16 -1. + <_> + 9 4 1 16 3. + <_> + + <_> + 8 9 4 14 -1. + <_> + 9 9 2 14 2. + <_> + + <_> + 7 9 4 14 -1. + <_> + 8 9 2 14 2. + <_> + + <_> + 7 17 12 4 -1. + <_> + 11 17 4 4 3. + <_> + + <_> + 0 17 12 4 -1. + <_> + 4 17 4 4 3. + <_> + + <_> + 13 12 6 10 -1. + <_> + 16 12 3 5 2. + <_> + 13 17 3 5 2. + <_> + + <_> + 0 17 6 6 -1. + <_> + 3 17 3 6 2. + <_> + + <_> + 12 4 6 8 -1. + <_> + 12 4 3 8 2. + 1 + <_> + + <_> + 3 6 10 15 -1. + <_> + 8 6 5 15 2. + <_> + + <_> + 10 10 7 4 -1. + <_> + 10 10 7 2 2. + 1 + <_> + + <_> + 1 9 9 7 -1. + <_> + 4 9 3 7 3. + <_> + + <_> + 1 17 18 6 -1. + <_> + 10 17 9 3 2. + <_> + 1 20 9 3 2. + <_> + + <_> + 6 0 13 3 -1. + <_> + 5 1 13 1 3. + 1 + <_> + + <_> + 10 0 3 9 -1. + <_> + 11 1 1 9 3. + 1 + <_> + + <_> + 9 0 9 3 -1. + <_> + 8 1 9 1 3. + 1 + <_> + + <_> + 7 1 12 12 -1. + <_> + 13 1 6 6 2. + <_> + 7 7 6 6 2. + <_> + + <_> + 7 4 8 6 -1. + <_> + 7 4 8 3 2. + 1 + <_> + + <_> + 11 11 8 4 -1. + <_> + 11 11 8 2 2. + 1 + <_> + + <_> + 8 11 4 8 -1. + <_> + 8 11 2 8 2. + 1 + <_> + + <_> + 10 10 7 4 -1. + <_> + 10 10 7 2 2. + 1 + <_> + + <_> + 9 10 4 7 -1. + <_> + 9 10 2 7 2. + 1 + <_> + + <_> + 8 7 3 14 -1. + <_> + 9 7 1 14 3. + <_> + + <_> + 8 6 10 7 -1. + <_> + 8 6 5 7 2. + 1 + <_> + + <_> + 3 6 16 3 -1. + <_> + 3 7 16 1 3. + <_> + + <_> + 4 5 2 17 -1. + <_> + 5 5 1 17 2. + <_> + + <_> + 12 0 6 18 -1. + <_> + 15 0 3 9 2. + <_> + 12 9 3 9 2. + <_> + + <_> + 3 4 6 16 -1. + <_> + 3 4 3 8 2. + <_> + 6 12 3 8 2. + <_> + + <_> + 12 0 6 18 -1. + <_> + 15 0 3 9 2. + <_> + 12 9 3 9 2. + <_> + + <_> + 0 1 16 4 -1. + <_> + 0 1 8 2 2. + <_> + 8 3 8 2 2. + <_> + + <_> + 6 12 12 5 -1. + <_> + 6 12 6 5 2. + <_> + + <_> + 3 7 3 10 -1. + <_> + 3 12 3 5 2. + <_> + + <_> + 11 3 7 12 -1. + <_> + 11 7 7 4 3. + <_> + + <_> + 0 6 8 6 -1. + <_> + 0 8 8 2 3. + <_> + + <_> + 12 3 7 6 -1. + <_> + 12 5 7 2 3. + <_> + + <_> + 0 3 7 6 -1. + <_> + 0 5 7 2 3. + <_> + + <_> + 13 10 6 8 -1. + <_> + 15 10 2 8 3. + <_> + + <_> + 0 17 14 2 -1. + <_> + 0 18 14 1 2. + <_> + + <_> + 13 10 6 8 -1. + <_> + 15 10 2 8 3. + <_> + + <_> + 0 17 14 2 -1. + <_> + 0 18 14 1 2. + <_> + + <_> + 6 0 8 8 -1. + <_> + 10 0 4 4 2. + <_> + 6 4 4 4 2. + <_> + + <_> + 0 10 6 8 -1. + <_> + 2 10 2 8 3. + <_> + + <_> + 13 0 3 14 -1. + <_> + 14 0 1 14 3. + <_> + + <_> + 6 0 6 7 -1. + <_> + 8 0 2 7 3. + <_> + + <_> + 6 0 8 8 -1. + <_> + 10 0 4 4 2. + <_> + 6 4 4 4 2. + <_> + + <_> + 5 0 8 8 -1. + <_> + 5 0 4 4 2. + <_> + 9 4 4 4 2. + <_> + + <_> + 3 7 16 7 -1. + <_> + 3 7 8 7 2. + <_> + + <_> + 0 7 16 7 -1. + <_> + 8 7 8 7 2. + <_> + + <_> + 2 11 10 8 -1. + <_> + 7 11 5 8 2. + <_> + + <_> + 12 8 6 9 -1. + <_> + 14 8 2 9 3. + <_> + + <_> + 1 8 6 9 -1. + <_> + 3 8 2 9 3. + <_> + + <_> + 4 3 14 11 -1. + <_> + 4 3 7 11 2. + <_> + + <_> + 5 5 13 3 -1. + <_> + 4 6 13 1 3. + 1 + <_> + + <_> + 7 0 6 9 -1. + <_> + 9 0 2 9 3. + <_> + + <_> + 1 0 14 12 -1. + <_> + 1 0 7 6 2. + <_> + 8 6 7 6 2. + <_> + + <_> + 10 0 8 4 -1. + <_> + 10 0 4 4 2. + <_> + + <_> + 3 10 4 12 -1. + <_> + 5 10 2 12 2. + <_> + + <_> + 11 0 2 22 -1. + <_> + 11 11 2 11 2. + <_> + + <_> + 0 19 14 4 -1. + <_> + 0 19 7 2 2. + <_> + 7 21 7 2 2. + <_> + + <_> + 10 8 2 8 -1. + <_> + 10 8 1 8 2. + 1 + <_> + + <_> + 5 0 4 14 -1. + <_> + 5 0 2 7 2. + <_> + 7 7 2 7 2. + <_> + + <_> + 8 4 4 10 -1. + <_> + 8 9 4 5 2. + <_> + + <_> + 9 8 8 2 -1. + <_> + 9 8 8 1 2. + 1 + <_> + + <_> + 0 7 19 3 -1. + <_> + 0 8 19 1 3. + <_> + + <_> + 0 8 19 2 -1. + <_> + 0 9 19 1 2. + <_> + + <_> + 1 6 18 4 -1. + <_> + 10 6 9 2 2. + <_> + 1 8 9 2 2. + <_> + + <_> + 2 1 8 18 -1. + <_> + 6 1 4 18 2. + <_> + + <_> + 6 11 10 12 -1. + <_> + 11 11 5 6 2. + <_> + 6 17 5 6 2. + <_> + + <_> + 3 7 9 11 -1. + <_> + 6 7 3 11 3. + <_> + + <_> + 9 0 6 14 -1. + <_> + 11 0 2 14 3. + <_> + + <_> + 2 16 12 7 -1. + <_> + 6 16 4 7 3. + <_> + + <_> + 2 15 15 6 -1. + <_> + 7 15 5 6 3. + <_> + + <_> + 5 2 8 7 -1. + <_> + 7 2 4 7 2. + <_> + + <_> + 8 0 4 14 -1. + <_> + 9 0 2 14 2. + <_> + + <_> + 7 0 4 14 -1. + <_> + 8 0 2 14 2. + <_> + + <_> + 7 18 12 5 -1. + <_> + 11 18 4 5 3. + <_> + + <_> + 1 18 15 3 -1. + <_> + 1 19 15 1 3. + <_> + + <_> + 9 17 9 6 -1. + <_> + 12 17 3 6 3. + <_> + + <_> + 7 8 9 6 -1. + <_> + 5 10 9 2 3. + 1 + <_> + + <_> + 11 10 4 9 -1. + <_> + 12 11 2 9 2. + 1 + <_> + + <_> + 8 10 9 4 -1. + <_> + 7 11 9 2 2. + 1 + <_> + + <_> + 15 3 2 16 -1. + <_> + 15 11 2 8 2. + <_> + + <_> + 1 17 5 6 -1. + <_> + 1 20 5 3 2. + <_> + + <_> + 12 16 5 6 -1. + <_> + 12 19 5 3 2. + <_> + + <_> + 5 2 3 14 -1. + <_> + 6 2 1 14 3. + <_> + + <_> + 9 17 9 6 -1. + <_> + 12 17 3 6 3. + <_> + + <_> + 6 1 6 9 -1. + <_> + 8 1 2 9 3. + <_> + + <_> + 7 7 10 5 -1. + <_> + 7 7 5 5 2. + <_> + + <_> + 6 0 4 20 -1. + <_> + 6 0 2 10 2. + <_> + 8 10 2 10 2. + <_> + + <_> + 13 10 3 9 -1. + <_> + 14 11 1 9 3. + 1 + <_> + + <_> + 6 10 9 3 -1. + <_> + 5 11 9 1 3. + 1 + <_> + + <_> + 5 21 14 2 -1. + <_> + 5 21 7 2 2. + <_> + + <_> + 8 6 3 14 -1. + <_> + 9 6 1 14 3. + <_> + + <_> + 8 1 4 9 -1. + <_> + 8 1 2 9 2. + <_> + + <_> + 7 1 4 9 -1. + <_> + 9 1 2 9 2. + <_> + + <_> + 7 17 12 6 -1. + <_> + 13 17 6 3 2. + <_> + 7 20 6 3 2. + <_> + + <_> + 3 4 10 6 -1. + <_> + 8 4 5 6 2. + <_> + + <_> + 15 0 4 8 -1. + <_> + 15 4 4 4 2. + <_> + + <_> + 3 5 6 8 -1. + <_> + 5 5 2 8 3. + <_> + + <_> + 15 0 4 8 -1. + <_> + 15 4 4 4 2. + <_> + + <_> + 0 0 4 8 -1. + <_> + 0 4 4 4 2. + <_> + + <_> + 7 0 9 5 -1. + <_> + 10 0 3 5 3. + <_> + + <_> + 3 0 6 5 -1. + <_> + 6 0 3 5 2. + <_> + + <_> + 5 21 14 2 -1. + <_> + 5 21 7 2 2. + <_> + + <_> + 9 3 8 9 -1. + <_> + 9 3 4 9 2. + 1 + <_> + + <_> + 6 1 12 8 -1. + <_> + 12 1 6 4 2. + <_> + 6 5 6 4 2. + <_> + + <_> + 4 10 10 11 -1. + <_> + 9 10 5 11 2. + <_> + + <_> + 12 1 3 15 -1. + <_> + 13 1 1 15 3. + <_> + + <_> + 4 3 8 12 -1. + <_> + 8 3 4 12 2. + <_> + + <_> + 8 2 10 8 -1. + <_> + 8 2 5 8 2. + <_> + + <_> + 0 4 19 6 -1. + <_> + 0 6 19 2 3. + <_> + + <_> + 4 0 11 16 -1. + <_> + 4 4 11 8 2. + <_> + + <_> + 4 1 6 5 -1. + <_> + 7 1 3 5 2. + <_> + + <_> + 3 5 14 18 -1. + <_> + 10 5 7 9 2. + <_> + 3 14 7 9 2. + <_> + + <_> + 1 17 5 6 -1. + <_> + 1 20 5 3 2. + <_> + + <_> + 13 0 4 14 -1. + <_> + 15 0 2 7 2. + <_> + 13 7 2 7 2. + <_> + + <_> + 2 0 4 14 -1. + <_> + 2 0 2 7 2. + <_> + 4 7 2 7 2. + <_> + + <_> + 10 2 2 10 -1. + <_> + 10 2 1 10 2. + 1 + <_> + + <_> + 9 1 9 3 -1. + <_> + 8 2 9 1 3. + 1 + <_> + + <_> + 6 2 10 6 -1. + <_> + 11 2 5 3 2. + <_> + 6 5 5 3 2. + <_> + + <_> + 1 12 9 6 -1. + <_> + 1 14 9 2 3. + <_> + + <_> + 6 2 10 6 -1. + <_> + 11 2 5 3 2. + <_> + 6 5 5 3 2. + <_> + + <_> + 3 2 10 6 -1. + <_> + 3 2 5 3 2. + <_> + 8 5 5 3 2. + <_> + + <_> + 7 0 5 20 -1. + <_> + 7 5 5 10 2. + <_> + + <_> + 2 10 12 7 -1. + <_> + 5 10 6 7 2. + <_> + + <_> + 0 18 14 4 -1. + <_> + 0 18 7 2 2. + <_> + 7 20 7 2 2. + <_> + + <_> + 9 7 3 15 -1. + <_> + 10 7 1 15 3. + <_> + + <_> + 6 8 6 5 -1. + <_> + 9 8 3 5 2. + <_> + + <_> + 9 4 2 17 -1. + <_> + 9 4 1 17 2. + <_> + + <_> + 8 4 2 17 -1. + <_> + 9 4 1 17 2. + <_> + + <_> + 8 18 9 5 -1. + <_> + 11 18 3 5 3. + <_> + + <_> + 2 18 9 5 -1. + <_> + 5 18 3 5 3. + <_> + + <_> + 12 18 6 5 -1. + <_> + 12 18 3 5 2. + <_> + + <_> + 5 15 6 5 -1. + <_> + 8 15 3 5 2. + <_> + + <_> + 13 0 6 10 -1. + <_> + 15 0 2 10 3. + <_> + + <_> + 2 14 10 9 -1. + <_> + 2 17 10 3 3. + <_> + + <_> + 13 0 6 10 -1. + <_> + 15 0 2 10 3. + <_> + + <_> + 0 0 6 10 -1. + <_> + 2 0 2 10 3. + <_> + + <_> + 12 5 3 12 -1. + <_> + 12 5 3 6 2. + 1 + <_> + + <_> + 6 18 7 4 -1. + <_> + 6 20 7 2 2. + <_> + + <_> + 14 7 4 12 -1. + <_> + 15 8 2 12 2. + 1 + <_> + + <_> + 5 7 12 4 -1. + <_> + 4 8 12 2 2. + 1 + <_> + + <_> + 14 13 5 9 -1. + <_> + 14 16 5 3 3. + <_> + + <_> + 0 13 5 9 -1. + <_> + 0 16 5 3 3. + <_> + + <_> + 12 14 7 6 -1. + <_> + 12 16 7 2 3. + <_> + + <_> + 1 16 6 6 -1. + <_> + 1 19 6 3 2. + <_> + + <_> + 7 0 9 4 -1. + <_> + 7 2 9 2 2. + <_> + + <_> + 0 9 18 3 -1. + <_> + 0 10 18 1 3. + <_> + + <_> + 9 17 9 6 -1. + <_> + 12 17 3 6 3. + <_> + + <_> + 2 14 15 9 -1. + <_> + 7 17 5 3 9. + <_> + + <_> + 9 13 8 8 -1. + <_> + 9 17 8 4 2. + <_> + + <_> + 4 9 2 14 -1. + <_> + 5 9 1 14 2. + <_> + + <_> + 12 10 4 13 -1. + <_> + 12 10 2 13 2. + <_> + + <_> + 3 10 4 13 -1. + <_> + 5 10 2 13 2. + <_> + + <_> + 5 5 14 2 -1. + <_> + 5 5 7 2 2. + <_> + + <_> + 0 5 14 2 -1. + <_> + 7 5 7 2 2. + <_> + + <_> + 13 12 6 10 -1. + <_> + 16 12 3 5 2. + <_> + 13 17 3 5 2. + <_> + + <_> + 0 12 6 10 -1. + <_> + 0 12 3 5 2. + <_> + 3 17 3 5 2. + <_> + + <_> + 12 8 5 12 -1. + <_> + 12 11 5 6 2. + <_> + + <_> + 2 8 5 12 -1. + <_> + 2 11 5 6 2. + <_> + + <_> + 6 8 7 4 -1. + <_> + 6 10 7 2 2. + <_> + + <_> + 0 17 14 3 -1. + <_> + 0 18 14 1 3. + <_> + + <_> + 12 7 2 15 -1. + <_> + 12 7 1 15 2. + <_> + + <_> + 1 17 9 6 -1. + <_> + 4 17 3 6 3. + <_> + + <_> + 10 6 9 7 -1. + <_> + 13 9 3 7 3. + 1 + <_> + + <_> + 9 6 7 9 -1. + <_> + 6 9 7 3 3. + 1 + <_> + + <_> + 5 8 10 4 -1. + <_> + 5 10 10 2 2. + <_> + + <_> + 0 6 6 14 -1. + <_> + 0 13 6 7 2. + <_> + + <_> + 1 1 18 22 -1. + <_> + 10 1 9 11 2. + <_> + 1 12 9 11 2. + <_> + + <_> + 1 5 17 3 -1. + <_> + 1 6 17 1 3. + <_> + + <_> + 13 12 6 5 -1. + <_> + 13 12 3 5 2. + <_> + + <_> + 0 5 16 3 -1. + <_> + 0 6 16 1 3. + <_> + + <_> + 12 6 6 17 -1. + <_> + 12 6 3 17 2. + <_> + + <_> + 1 6 6 17 -1. + <_> + 4 6 3 17 2. + <_> + + <_> + 1 15 18 2 -1. + <_> + 1 15 9 2 2. + <_> + + <_> + 0 5 2 16 -1. + <_> + 1 5 1 16 2. + <_> + + <_> + 15 12 4 10 -1. + <_> + 15 17 4 5 2. + <_> + + <_> + 1 5 16 3 -1. + <_> + 1 6 16 1 3. + <_> + + <_> + 6 9 9 12 -1. + <_> + 6 12 9 6 2. + <_> + + <_> + 3 13 4 8 -1. + <_> + 3 17 4 4 2. + <_> + + <_> + 9 13 8 8 -1. + <_> + 9 17 8 4 2. + <_> + + <_> + 5 0 8 10 -1. + <_> + 5 0 4 5 2. + <_> + 9 5 4 5 2. + <_> + + <_> + 1 4 18 6 -1. + <_> + 10 4 9 3 2. + <_> + 1 7 9 3 2. + <_> + + <_> + 3 16 9 6 -1. + <_> + 3 18 9 2 3. + <_> + + <_> + 3 17 14 4 -1. + <_> + 3 18 14 2 2. + <_> + + <_> + 2 3 9 6 -1. + <_> + 2 5 9 2 3. + <_> + + <_> + 0 3 19 3 -1. + <_> + 0 4 19 1 3. + <_> + + <_> + 1 3 16 4 -1. + <_> + 1 4 16 2 2. + <_> + + <_> + 11 0 6 14 -1. + <_> + 14 0 3 7 2. + <_> + 11 7 3 7 2. + <_> + + <_> + 0 17 9 6 -1. + <_> + 3 17 3 6 3. + <_> + + <_> + 7 16 8 7 -1. + <_> + 9 16 4 7 2. + <_> + + <_> + 3 14 10 5 -1. + <_> + 8 14 5 5 2. + <_> + + <_> + 12 9 3 14 -1. + <_> + 13 9 1 14 3. + <_> + + <_> + 4 9 3 14 -1. + <_> + 5 9 1 14 3. + <_> + + <_> + 10 9 6 14 -1. + <_> + 13 9 3 7 2. + <_> + 10 16 3 7 2. + <_> + + <_> + 6 0 6 5 -1. + <_> + 9 0 3 5 2. + <_> + + <_> + 7 0 6 8 -1. + <_> + 7 4 6 4 2. + <_> + + <_> + 2 0 11 21 -1. + <_> + 2 7 11 7 3. + <_> + + <_> + 8 8 4 12 -1. + <_> + 8 12 4 4 3. + <_> + + <_> + 3 9 6 14 -1. + <_> + 3 9 3 7 2. + <_> + 6 16 3 7 2. + <_> + + <_> + 10 7 8 7 -1. + <_> + 12 7 4 7 2. + <_> + + <_> + 1 7 8 7 -1. + <_> + 3 7 4 7 2. + <_> + + <_> + 5 2 9 20 -1. + <_> + 8 2 3 20 3. + diff --git a/venv/lib/python3.11/site-packages/cv2/data/haarcascade_profileface.xml b/venv/lib/python3.11/site-packages/cv2/data/haarcascade_profileface.xml new file mode 100644 index 0000000000000000000000000000000000000000..486d8e3d83075578c446be96b75a2414efe75ecb --- /dev/null +++ b/venv/lib/python3.11/site-packages/cv2/data/haarcascade_profileface.xml @@ -0,0 +1,29690 @@ + + + +BOOST + HAAR + 20 + 20 + + 195 + + 0 + 26 + + <_> + 3 + -1.1856809854507446e+00 + + <_> + + 0 -1 0 1.1384399840608239e-03 + + -8.3771979808807373e-01 7.3413830995559692e-01 + <_> + + 0 -1 1 -1.1342350393533707e-02 + + 6.2702018022537231e-01 -7.2396302223205566e-01 + <_> + + 0 -1 2 -1.1023089755326509e-03 + + 3.7600189447402954e-01 -6.6088408231735229e-01 + <_> + 12 + -1.4913179874420166e+00 + + <_> + + 0 -1 3 -1.9553869962692261e-02 + + 4.9245831370353699e-01 -6.3396167755126953e-01 + <_> + + 0 -1 4 2.2794529795646667e-03 + + -6.4604967832565308e-01 3.5818460583686829e-01 + <_> + + 0 -1 5 2.4270440917462111e-03 + + -4.7253230214118958e-01 2.8494310379028320e-01 + <_> + + 0 -1 6 1.9644061103463173e-03 + + 1.6999539732933044e-01 -7.7868157625198364e-01 + <_> + + 0 -1 7 2.2895270958542824e-03 + + 1.5551710128784180e-01 -6.6725099086761475e-01 + <_> + + 0 -1 8 -3.0143910553306341e-03 + + -6.8721300363540649e-01 1.4604569971561432e-01 + <_> + + 0 -1 9 -1.7399009317159653e-02 + + 7.2524380683898926e-01 -1.6572900116443634e-01 + <_> + + 0 -1 10 9.0722442837432027e-04 + + -4.6388080716133118e-01 2.3604999482631683e-01 + <_> + + 0 -1 11 -1.5043979510664940e-03 + + -7.5959628820419312e-01 1.1436919867992401e-01 + <_> + + 0 -1 12 1.0804689675569534e-01 + + -1.2865519523620605e-01 7.9092341661453247e-01 + <_> + + 0 -1 13 -1.1923050042241812e-03 + + -6.2403547763824463e-01 1.4847490191459656e-01 + <_> + + 0 -1 14 -2.0571390166878700e-02 + + 4.0808489918708801e-01 -2.1287000179290771e-01 + <_> + 27 + -1.9596290588378906e+00 + + <_> + + 0 -1 15 -3.6899209022521973e-02 + + 5.3308618068695068e-01 -4.0872651338577271e-01 + <_> + + 0 -1 16 2.4960909504443407e-03 + + -6.9489312171936035e-01 2.7125179767608643e-01 + <_> + + 0 -1 17 2.4068039783742279e-04 + + -5.6208252906799316e-01 2.1930350363254547e-01 + <_> + + 0 -1 18 -5.8021828532218933e-02 + + 6.9060617685317993e-01 -1.5082140266895294e-01 + <_> + + 0 -1 19 1.1526979506015778e-03 + + 1.3925389945507050e-01 -6.6311657428741455e-01 + <_> + + 0 -1 20 7.4388440698385239e-03 + + -3.3333170413970947e-01 3.1699380278587341e-01 + <_> + + 0 -1 21 -1.4158539706841111e-03 + + -6.8007302284240723e-01 1.3243320584297180e-01 + <_> + + 0 -1 22 8.8562711607664824e-04 + + -3.8672161102294922e-01 1.9732959568500519e-01 + <_> + + 0 -1 23 2.5714060757309198e-03 + + 1.2035659700632095e-01 -7.3177069425582886e-01 + <_> + + 0 -1 24 1.8255549948662519e-03 + + 7.7979840338230133e-02 -7.7196091413497925e-01 + <_> + + 0 -1 25 -1.1993020307272673e-03 + + 1.6821229457855225e-01 -4.1479128599166870e-01 + <_> + + 0 -1 26 2.3179080337285995e-02 + + 7.5337320566177368e-02 -7.1047067642211914e-01 + <_> + + 0 -1 27 4.6539418399333954e-02 + + -1.0464839637279510e-01 6.6270697116851807e-01 + <_> + + 0 -1 28 -1.7157640540972352e-03 + + -4.9618211388587952e-01 1.6275240480899811e-01 + <_> + + 0 -1 29 -1.2778829783201218e-02 + + 4.6254539489746094e-01 -1.6027900576591492e-01 + <_> + + 0 -1 30 -1.5214820206165314e-01 + + -7.0592701435089111e-01 1.0022509843111038e-01 + <_> + + 0 -1 31 3.1789899803698063e-03 + + 1.2345749884843826e-01 -3.9093419909477234e-01 + <_> + + 0 -1 32 -2.2882770281285048e-03 + + 3.7081500887870789e-01 -1.6210420429706573e-01 + <_> + + 0 -1 33 -2.9806189704686403e-03 + + 1.8087059259414673e-01 -3.3239859342575073e-01 + <_> + + 0 -1 34 -1.5072739915922284e-03 + + -4.9472311139106750e-01 9.8288856446743011e-02 + <_> + + 0 -1 35 1.9225040450692177e-03 + + -1.7791110277175903e-01 3.0773329734802246e-01 + <_> + + 0 -1 36 1.9025449873879552e-03 + + 8.4794998168945312e-02 -5.9020972251892090e-01 + <_> + + 0 -1 37 -3.5421559587121010e-03 + + 3.1175771355628967e-01 -1.4392930269241333e-01 + <_> + + 0 -1 38 -2.9751660767942667e-03 + + -6.3649141788482666e-01 8.2639887928962708e-02 + <_> + + 0 -1 39 1.0003290139138699e-02 + + -1.1699260026216507e-01 4.2387530207633972e-01 + <_> + + 0 -1 40 -1.9193530315533280e-03 + + -4.7115838527679443e-01 1.1038240045309067e-01 + <_> + + 0 -1 41 2.5070620700716972e-02 + + 4.8775929957628250e-02 -8.0351328849792480e-01 + <_> + 28 + -1.9849590063095093e+00 + + <_> + + 0 -1 42 1.4214799739420414e-02 + + -6.3577878475189209e-01 3.3461728692054749e-01 + <_> + + 0 -1 43 -1.2525909580290318e-02 + + 3.2766130566596985e-01 -4.1331529617309570e-01 + <_> + + 0 -1 44 -2.2514370357384905e-05 + + 2.3102630674839020e-01 -5.4282051324844360e-01 + <_> + + 0 -1 45 1.8600060138851404e-03 + + 1.7933349311351776e-01 -6.9131940603256226e-01 + <_> + + 0 -1 46 7.8344792127609253e-03 + + 9.1071300208568573e-02 -7.8126847743988037e-01 + <_> + + 0 -1 47 -4.2322301305830479e-03 + + 2.0658409595489502e-01 -4.2906031012535095e-01 + <_> + + 0 -1 48 -7.5860600918531418e-04 + + 2.0730710029602051e-01 -4.2070311307907104e-01 + <_> + + 0 -1 49 -3.5626380704343319e-03 + + -6.3227087259292603e-01 1.3118620216846466e-01 + <_> + + 0 -1 50 -4.9960161559283733e-03 + + -7.5112378597259521e-01 7.8203327953815460e-02 + <_> + + 0 -1 51 7.3098740540444851e-03 + + 9.3428641557693481e-02 -6.6310107707977295e-01 + <_> + + 0 -1 52 2.2772040392737836e-04 + + -3.4148821234703064e-01 2.0008200407028198e-01 + <_> + + 0 -1 53 8.3124160300940275e-04 + + -2.5448161363601685e-01 2.5857710838317871e-01 + <_> + + 0 -1 54 -7.5492179021239281e-03 + + -6.6138988733291626e-01 8.3004422485828400e-02 + <_> + + 0 -1 55 -3.8039948791265488e-02 + + -8.2163572311401367e-01 5.9231590479612350e-02 + <_> + + 0 -1 56 2.8484580107033253e-03 + + 8.9729957282543182e-02 -5.8333742618560791e-01 + <_> + + 0 -1 57 4.8181698657572269e-03 + + 9.3960560858249664e-02 -5.7619768381118774e-01 + <_> + + 0 -1 58 -1.1190489865839481e-02 + + -6.2544298171997070e-01 7.3608897626399994e-02 + <_> + + 0 -1 59 -6.4537129364907742e-03 + + 5.5123388767242432e-01 -1.0020790249109268e-01 + <_> + + 0 -1 60 3.3225629013031721e-03 + + -1.0797890275716782e-01 5.3664940595626831e-01 + <_> + + 0 -1 61 4.6705761924386024e-03 + + 8.8321126997470856e-02 -6.7683601379394531e-01 + <_> + + 0 -1 62 -1.1613310314714909e-02 + + -5.0711882114410400e-01 7.6556630432605743e-02 + <_> + + 0 -1 63 -3.7515610456466675e-02 + + -7.2936272621154785e-01 5.9448610991239548e-02 + <_> + + 0 -1 64 2.3086030036211014e-02 + + 5.0718959420919418e-02 -7.8459781408309937e-01 + <_> + + 0 -1 65 -7.1651988946541678e-06 + + 1.6686220467090607e-01 -2.5713220238685608e-01 + <_> + + 0 -1 66 7.1611627936363220e-04 + + 1.0636030137538910e-01 -4.2793640494346619e-01 + <_> + + 0 -1 67 4.1476460173726082e-03 + + -1.2069659680128098e-01 4.1993188858032227e-01 + <_> + + 0 -1 68 -2.5815099943429232e-03 + + 4.8718088865280151e-01 -1.0045810043811798e-01 + <_> + + 0 -1 69 -1.7147070029750466e-03 + + -4.6096310019493103e-01 1.0375110059976578e-01 + <_> + 28 + -1.8260079622268677e+00 + + <_> + + 0 -1 70 -6.1202719807624817e-02 + + 3.9079108834266663e-01 -3.9401251077651978e-01 + <_> + + 0 -1 71 -1.4643670292571187e-03 + + -7.3697841167449951e-01 1.5660220384597778e-01 + <_> + + 0 -1 72 7.2080420795828104e-04 + + 2.1675530076026917e-01 -5.8012658357620239e-01 + <_> + + 0 -1 73 6.4895692048594356e-04 + + -7.2308099269866943e-01 1.2785249948501587e-01 + <_> + + 0 -1 74 -1.7158190021291375e-03 + + -7.7100431919097900e-01 1.0210309922695160e-01 + <_> + + 0 -1 75 -2.2490581031888723e-03 + + -6.0623127222061157e-01 1.2427269667387009e-01 + <_> + + 0 -1 76 5.3841978311538696e-02 + + -1.7169749736785889e-01 5.3350567817687988e-01 + <_> + + 0 -1 77 -1.3288970291614532e-01 + + 5.5924367904663086e-01 -1.8954899907112122e-01 + <_> + + 0 -1 78 9.0965389972552657e-04 + + -4.7166430950164795e-01 1.6924260556697845e-01 + <_> + + 0 -1 79 6.0799147468060255e-04 + + 1.1347220093011856e-01 -5.9846878051757812e-01 + <_> + + 0 -1 80 1.6072629392147064e-01 + + -1.0295519977807999e-01 6.6487199068069458e-01 + <_> + + 0 -1 81 -1.7097239615395665e-03 + + -4.7276279330253601e-01 1.3392050564289093e-01 + <_> + + 0 -1 82 1.1734620202332735e-03 + + -2.2795589268207550e-01 2.6135650277137756e-01 + <_> + + 0 -1 83 -1.5138329472392797e-03 + + -5.5395001173019409e-01 1.1028339713811874e-01 + <_> + + 0 -1 84 -2.1774161141365767e-03 + + -6.2228900194168091e-01 7.8486673533916473e-02 + <_> + + 0 -1 85 -2.7727920096367598e-03 + + 4.6141120791435242e-01 -1.3496559858322144e-01 + <_> + + 0 -1 86 9.3199027469381690e-04 + + 1.0162770003080368e-01 -5.1631838083267212e-01 + <_> + + 0 -1 87 2.9746659565716982e-03 + + -1.2999209761619568e-01 4.2117300629615784e-01 + <_> + + 0 -1 88 -5.0399480387568474e-03 + + -6.3706171512603760e-01 7.7624127268791199e-02 + <_> + + 0 -1 89 2.3414850234985352e-02 + + 7.2182796895503998e-02 -5.9831130504608154e-01 + <_> + + 0 -1 90 -1.0927390540018678e-03 + + -4.1664880514144897e-01 1.1829990148544312e-01 + <_> + + 0 -1 91 -1.6441360348835588e-03 + + 1.8583069741725922e-01 -2.7551019191741943e-01 + <_> + + 0 -1 92 -2.5736279785633087e-02 + + -7.5146478414535522e-01 6.3907749950885773e-02 + <_> + + 0 -1 93 -2.8924590442329645e-03 + + -5.6780880689620972e-01 7.3297739028930664e-02 + <_> + + 0 -1 94 -5.2889231592416763e-03 + + -6.3738888502120972e-01 6.8686947226524353e-02 + <_> + + 0 -1 95 3.2964269630610943e-03 + + -2.5062951445579529e-01 1.5989780426025391e-01 + <_> + + 0 -1 96 2.4914439767599106e-02 + + 5.5260978639125824e-02 -7.6208770275115967e-01 + <_> + + 0 -1 97 -1.5088500455021858e-02 + + 3.7033379077911377e-01 -1.2003959715366364e-01 + <_> + 53 + -1.9446740150451660e+00 + + <_> + + 0 -1 98 -1.1857179924845695e-02 + + 2.9421558976173401e-01 -5.1703310012817383e-01 + <_> + + 0 -1 99 2.0991980563849211e-03 + + -6.1471748352050781e-01 2.0648500323295593e-01 + <_> + + 0 -1 100 -1.5772449842188507e-04 + + 2.2870740294456482e-01 -5.5258047580718994e-01 + <_> + + 0 -1 101 -2.0669099467340857e-04 + + 1.2070009857416153e-01 -5.4926127195358276e-01 + <_> + + 0 -1 102 2.2675560321658850e-03 + + 1.5354810655117035e-01 -4.6074301004409790e-01 + <_> + + 0 -1 103 1.4469499699771404e-02 + + -1.8976309895515442e-01 4.2071411013603210e-01 + <_> + + 0 -1 104 -1.2127560330554843e-03 + + -4.5139861106872559e-01 9.9425867199897766e-02 + <_> + + 0 -1 105 2.1505509503185749e-03 + + 1.0200879722833633e-01 -6.2064242362976074e-01 + <_> + + 0 -1 106 -1.6638869419693947e-03 + + -7.0367491245269775e-01 7.7214680612087250e-02 + <_> + + 0 -1 107 1.0530210565775633e-03 + + -3.2453960180282593e-01 1.7616109549999237e-01 + <_> + + 0 -1 108 1.1836409568786621e-02 + + -1.3507820665836334e-01 4.2641130089759827e-01 + <_> + + 0 -1 109 9.6512871095910668e-04 + + 9.4502769410610199e-02 -4.8544931411743164e-01 + <_> + + 0 -1 110 7.5651629595085979e-04 + + -2.9959529638290405e-01 1.6867619752883911e-01 + <_> + + 0 -1 111 1.0839150287210941e-02 + + -1.1121030151844025e-01 4.6914410591125488e-01 + <_> + + 0 -1 112 -5.1439419388771057e-02 + + 4.1726920008659363e-01 -1.1776400357484818e-01 + <_> + + 0 -1 113 3.4927250817418098e-03 + + 9.2512279748916626e-02 -5.2599352598190308e-01 + <_> + + 0 -1 114 -1.3926399871706963e-02 + + -6.6633498668670654e-01 5.2386458963155746e-02 + <_> + + 0 -1 115 4.5590959489345551e-03 + + -9.3383841216564178e-02 4.3774750828742981e-01 + <_> + + 0 -1 116 -3.7318699061870575e-02 + + -5.9583687782287598e-01 7.2627849876880646e-02 + <_> + + 0 -1 117 1.2496879789978266e-03 + + 6.9537237286567688e-02 -4.8772460222244263e-01 + <_> + + 0 -1 118 -3.7307639140635729e-03 + + 3.2699251174926758e-01 -1.1739090085029602e-01 + <_> + + 0 -1 119 2.1144179627299309e-03 + + 9.2889092862606049e-02 -4.1788020730018616e-01 + <_> + + 0 -1 120 -6.4239342464134097e-04 + + -2.9332190752029419e-01 1.3107809424400330e-01 + <_> + + 0 -1 121 -3.1379980500787497e-03 + + 3.2445520162582397e-01 -1.1506850272417068e-01 + <_> + + 0 -1 122 -3.9186969399452209e-02 + + -7.9360449314117432e-01 5.0053481012582779e-02 + <_> + + 0 -1 123 4.4646807946264744e-03 + + 5.4776020348072052e-02 -5.6535738706588745e-01 + <_> + + 0 -1 124 8.6451368406414986e-04 + + -1.7471200227737427e-01 1.9758160412311554e-01 + <_> + + 0 -1 125 2.4237011093646288e-03 + + -9.5296189188957214e-02 4.0760260820388794e-01 + <_> + + 0 -1 126 -2.5377490092068911e-03 + + -6.2454742193222046e-01 6.9920547306537628e-02 + <_> + + 0 -1 127 -7.3309220169903710e-06 + + 1.2249249964952469e-01 -2.8157269954681396e-01 + <_> + + 0 -1 128 -1.8882560543715954e-03 + + -6.2670397758483887e-01 6.5820932388305664e-02 + <_> + + 0 -1 129 6.0609861975535750e-04 + + -2.5481408834457397e-01 1.2902240455150604e-01 + <_> + + 0 -1 130 2.3213759995996952e-03 + + -9.7430117428302765e-02 3.2456091046333313e-01 + <_> + + 0 -1 131 -1.8534410046413541e-03 + + -4.4065341353416443e-01 8.2968853414058685e-02 + <_> + + 0 -1 132 2.3999500554054976e-03 + + -1.2041269987821579e-01 2.8288060426712036e-01 + <_> + + 0 -1 133 -8.1356197595596313e-02 + + -7.3972231149673462e-01 4.6568300575017929e-02 + <_> + + 0 -1 134 -2.9865680262446404e-03 + + 1.6334620118141174e-01 -1.9834910333156586e-01 + <_> + + 0 -1 135 2.8128880076110363e-03 + + 1.1837379634380341e-01 -2.9398199915885925e-01 + <_> + + 0 -1 136 -1.0060790181159973e-01 + + -7.3717647790908813e-01 4.2510021477937698e-02 + <_> + + 0 -1 137 1.1854549666168168e-04 + + 1.0471060127019882e-01 -2.9139861464500427e-01 + <_> + + 0 -1 138 2.2375308908522129e-03 + + -9.6042059361934662e-02 3.4045928716659546e-01 + <_> + + 0 -1 139 -4.4986992143094540e-03 + + -5.8234661817550659e-01 5.6236840784549713e-02 + <_> + + 0 -1 140 -3.6484538577497005e-04 + + -2.7956131100654602e-01 1.0113990306854248e-01 + <_> + + 0 -1 141 -7.9940296709537506e-03 + + 2.7775949239730835e-01 -1.1941230297088623e-01 + <_> + + 0 -1 142 -5.1547219045460224e-03 + + -6.0229510068893433e-01 4.8917140811681747e-02 + <_> + + 0 -1 143 -8.1772619159892201e-04 + + 1.7660500109195709e-01 -1.6407689452171326e-01 + <_> + + 0 -1 144 6.7434698343276978e-02 + + 4.0761459618806839e-02 -7.1865761280059814e-01 + <_> + + 0 -1 145 -2.4103289470076561e-03 + + 1.7671680450439453e-01 -1.6081850230693817e-01 + <_> + + 0 -1 146 -3.5183799918740988e-03 + + -4.3078601360321045e-01 7.0671632885932922e-02 + <_> + + 0 -1 147 -1.4561560419679154e-05 + + 1.2714700400829315e-01 -2.3387859761714935e-01 + <_> + + 0 -1 148 -4.7951821237802505e-02 + + -7.9085767269134521e-01 3.6803081631660461e-02 + <_> + + 0 -1 149 2.1735159680247307e-03 + + -1.3089279830455780e-01 2.5330349802970886e-01 + <_> + + 0 -1 150 -3.4542270004749298e-03 + + 5.1025247573852539e-01 -7.5337253510951996e-02 + <_> + 54 + -1.8389279842376709e+00 + + <_> + + 0 -1 151 4.5243161730468273e-03 + + -3.0485519766807556e-01 5.1908642053604126e-01 + <_> + + 0 -1 152 2.3372350260615349e-03 + + -4.2904540896415710e-01 2.9052159190177917e-01 + <_> + + 0 -1 153 -4.4243237935006618e-03 + + 2.1068570017814636e-01 -4.5954981446266174e-01 + <_> + + 0 -1 154 -1.2887439690530300e-02 + + 1.9138230383396149e-01 -4.5879068970680237e-01 + <_> + + 0 -1 155 -5.2370920457178727e-05 + + 1.4141489565372467e-01 -5.0267368555068970e-01 + <_> + + 0 -1 156 -4.7738491557538509e-03 + + -4.8760831356048584e-01 1.2341009825468063e-01 + <_> + + 0 -1 157 9.6315861446782947e-04 + + 1.3367399573326111e-01 -4.4793748855590820e-01 + <_> + + 0 -1 158 -8.9140303432941437e-02 + + 5.0387668609619141e-01 -1.5923009812831879e-01 + <_> + + 0 -1 159 1.7201449954882264e-03 + + -2.0535360276699066e-01 2.4340680241584778e-01 + <_> + + 0 -1 160 -2.6712119579315186e-03 + + -6.3319712877273560e-01 5.3035650402307510e-02 + <_> + + 0 -1 161 3.7353280931711197e-02 + + -1.1360249668359756e-01 4.6645331382751465e-01 + <_> + + 0 -1 162 -3.1510960310697556e-02 + + -6.8820482492446899e-01 6.9371856749057770e-02 + <_> + + 0 -1 163 1.5293819829821587e-02 + + -1.0043840110301971e-01 4.6267789602279663e-01 + <_> + + 0 -1 164 5.4966909810900688e-03 + + -9.3514643609523773e-02 4.5127061009407043e-01 + <_> + + 0 -1 165 -4.6311439946293831e-03 + + -6.4314597845077515e-01 8.5003547370433807e-02 + <_> + + 0 -1 166 8.0943357897922397e-04 + + 7.9738967120647430e-02 -4.9320799112319946e-01 + <_> + + 0 -1 167 2.9745940119028091e-02 + + 7.8420467674732208e-02 -5.0482439994812012e-01 + <_> + + 0 -1 168 9.7070122137665749e-04 + + 5.8135438710451126e-02 -5.7035177946090698e-01 + <_> + + 0 -1 169 2.4534659460186958e-03 + + -1.1259060353040695e-01 3.6852970719337463e-01 + <_> + + 0 -1 170 1.9709810148924589e-03 + + 7.7185310423374176e-02 -5.2683860063552856e-01 + <_> + + 0 -1 171 4.8643019981682301e-03 + + -1.0479539632797241e-01 4.1474440693855286e-01 + <_> + + 0 -1 172 1.0143260005861521e-03 + + -1.4731560647487640e-01 2.8671079874038696e-01 + <_> + + 0 -1 173 -9.5099088503047824e-04 + + -3.8070049881935120e-01 8.8108353316783905e-02 + <_> + + 0 -1 174 -5.6730289943516254e-03 + + 2.4818900227546692e-01 -1.3696339726448059e-01 + <_> + + 0 -1 175 1.6987899318337440e-02 + + -8.0896042287349701e-02 5.2781671285629272e-01 + <_> + + 0 -1 176 -7.5278789736330509e-03 + + -4.6880009770393372e-01 8.9389666914939880e-02 + <_> + + 0 -1 177 3.3948529511690140e-02 + + 5.0594791769981384e-02 -6.7399561405181885e-01 + <_> + + 0 -1 178 8.3328841719776392e-04 + + -1.8931360542774200e-01 1.9607099890708923e-01 + <_> + + 0 -1 179 -5.9632491320371628e-04 + + -3.6229288578033447e-01 1.0544770210981369e-01 + <_> + + 0 -1 180 3.0905720777809620e-03 + + 5.7209629565477371e-02 -5.5316972732543945e-01 + <_> + + 0 -1 181 3.5152619238942862e-03 + + -1.2211070209741592e-01 2.9369899630546570e-01 + <_> + + 0 -1 182 7.9333729809150100e-04 + + 7.5977906584739685e-02 -4.4539821147918701e-01 + <_> + + 0 -1 183 -1.1189360171556473e-02 + + -5.0596517324447632e-01 5.7438369840383530e-02 + <_> + + 0 -1 184 -1.1787790572270751e-03 + + 3.0799698829650879e-01 -1.0762230306863785e-01 + <_> + + 0 -1 185 5.4418851505033672e-05 + + -2.5997561216354370e-01 1.3138440251350403e-01 + <_> + + 0 -1 186 -7.2562302193546202e-06 + + 1.5439839661121368e-01 -2.1094700694084167e-01 + <_> + + 0 -1 187 -8.3436258137226105e-04 + + 1.3689869642257690e-01 -2.4367660284042358e-01 + <_> + + 0 -1 188 -3.3380609005689621e-02 + + -6.7477357387542725e-01 5.0986740738153458e-02 + <_> + + 0 -1 189 7.4093497823923826e-04 + + 9.1248527169227600e-02 -3.5220760107040405e-01 + <_> + + 0 -1 190 -2.0966369193047285e-03 + + 1.9110049307346344e-01 -1.6380029916763306e-01 + <_> + + 0 -1 191 -6.9339506328105927e-02 + + -8.7700867652893066e-01 3.5726629197597504e-02 + <_> + + 0 -1 192 -5.7089990004897118e-03 + + -6.8067228794097900e-01 3.5545960068702698e-02 + <_> + + 0 -1 193 6.8668760359287262e-03 + + -6.4886868000030518e-02 5.2265900373458862e-01 + <_> + + 0 -1 194 5.4602831369265914e-04 + + 1.0924419760704041e-01 -3.0285251140594482e-01 + <_> + + 0 -1 195 6.4349039457738400e-03 + + -1.6561950743198395e-01 1.9022129476070404e-01 + <_> + + 0 -1 196 -1.0112419724464417e-02 + + 7.4523001909255981e-01 -3.8347329944372177e-02 + <_> + + 0 -1 197 -7.5152877252548933e-04 + + -2.8147280216217041e-01 1.1321689933538437e-01 + <_> + + 0 -1 198 2.8225290589034557e-03 + + -1.2364400178194046e-01 2.5608530640602112e-01 + <_> + + 0 -1 199 2.2058798931539059e-03 + + 5.7334281504154205e-02 -5.6152081489562988e-01 + <_> + + 0 -1 200 2.8164181113243103e-01 + + 4.2092379182577133e-02 -6.4923799037933350e-01 + <_> + + 0 -1 201 -4.2593148536980152e-03 + + -6.4854997396469116e-01 4.3502658605575562e-02 + <_> + + 0 -1 202 2.6586679741740227e-03 + + -9.3526139855384827e-02 3.4158730506896973e-01 + <_> + + 0 -1 203 2.0971989724785089e-03 + + -1.1068929731845856e-01 3.1760269403457642e-01 + <_> + + 0 -1 204 -1.0267860488966107e-03 + + -3.7612101435661316e-01 9.8973110318183899e-02 + <_> + 56 + -1.8807189464569092e+00 + + <_> + + 0 -1 205 2.6354179717600346e-03 + + -5.2496808767318726e-01 2.7711030840873718e-01 + <_> + + 0 -1 206 2.6279650628566742e-03 + + -3.2195448875427246e-01 3.7013629078865051e-01 + <_> + + 0 -1 207 -5.8889109641313553e-03 + + 2.3777529597282410e-01 -4.1800329089164734e-01 + <_> + + 0 -1 208 1.9291159696877003e-03 + + -4.7122061252593994e-01 1.3692170381546021e-01 + <_> + + 0 -1 209 -1.5205480158329010e-02 + + -3.9618429541587830e-01 1.7402400076389313e-01 + <_> + + 0 -1 210 2.3393579758703709e-03 + + -3.8508901000022888e-01 1.5659110248088837e-01 + <_> + + 0 -1 211 4.2395621538162231e-02 + + 1.0478709638118744e-01 -6.2164002656936646e-01 + <_> + + 0 -1 212 -5.6959640234708786e-02 + + 5.1225858926773071e-01 -1.2684780359268188e-01 + <_> + + 0 -1 213 -7.2845568865886889e-06 + + 1.5136890113353729e-01 -3.1185621023178101e-01 + <_> + + 0 -1 214 -7.9633750021457672e-02 + + -8.4324747323989868e-01 4.4978428632020950e-02 + <_> + + 0 -1 215 5.9168688021600246e-03 + + -1.0745979845523834e-01 4.7434100508689880e-01 + <_> + + 0 -1 216 -1.4736950397491455e-03 + + 3.6067450046539307e-01 -1.4760640263557434e-01 + <_> + + 0 -1 217 -3.9630971848964691e-02 + + -6.5838980674743652e-01 7.4866786599159241e-02 + <_> + + 0 -1 218 6.2401412287726998e-04 + + -2.6195651292800903e-01 1.5652139484882355e-01 + <_> + + 0 -1 219 -2.3399210476782173e-05 + + 1.2157510221004486e-01 -3.0320811271667480e-01 + <_> + + 0 -1 220 3.0802030116319656e-02 + + 4.4408731162548065e-02 -6.6609877347946167e-01 + <_> + + 0 -1 221 1.4787449617870152e-04 + + -2.4449509382247925e-01 1.4723050594329834e-01 + <_> + + 0 -1 222 4.8630568198859692e-03 + + -1.1267810314893723e-01 3.2596799731254578e-01 + <_> + + 0 -1 223 6.2191881239414215e-02 + + 5.7439960539340973e-02 -6.4031070470809937e-01 + <_> + + 0 -1 224 1.4668420189991593e-03 + + 9.5356643199920654e-02 -3.3727881312370300e-01 + <_> + + 0 -1 225 -1.4742349776497576e-05 + + 1.9759610295295715e-01 -1.7083899676799774e-01 + <_> + + 0 -1 226 -3.2495670020580292e-02 + + -3.6848729848861694e-01 9.0363331139087677e-02 + <_> + + 0 -1 227 -1.5333830378949642e-03 + + 3.2256379723548889e-01 -1.0416819900274277e-01 + <_> + + 0 -1 228 -2.7998909354209900e-02 + + -4.9097910523414612e-01 8.2653783261775970e-02 + <_> + + 0 -1 229 4.9783890135586262e-03 + + 7.3238030076026917e-02 -4.4057780504226685e-01 + <_> + + 0 -1 230 6.8226028233766556e-03 + + 7.6766029000282288e-02 -4.1460910439491272e-01 + <_> + + 0 -1 231 1.1497880332171917e-02 + + -9.1440111398696899e-02 4.0099748969078064e-01 + <_> + + 0 -1 232 -1.1003069579601288e-02 + + -5.7417541742324829e-01 7.2776727378368378e-02 + <_> + + 0 -1 233 4.9345887964591384e-04 + + -1.3353590667247772e-01 2.4575209617614746e-01 + <_> + + 0 -1 234 2.2130589932203293e-03 + + -1.0753840208053589e-01 3.1632119417190552e-01 + <_> + + 0 -1 235 5.1011620089411736e-03 + + 7.8985318541526794e-02 -4.2948201298713684e-01 + <_> + + 0 -1 236 -3.7305638194084167e-02 + + -6.7921191453933716e-01 4.5049939304590225e-02 + <_> + + 0 -1 237 -6.1271698214113712e-03 + + 2.3062059283256531e-01 -1.4559289813041687e-01 + <_> + + 0 -1 238 7.6517700217664242e-03 + + -9.0355172753334045e-02 4.3072968721389771e-01 + <_> + + 0 -1 239 -1.1280870065093040e-02 + + -4.7850719094276428e-01 7.4674449861049652e-02 + <_> + + 0 -1 240 -1.4724049833603203e-05 + + 1.4459890127182007e-01 -2.2535640001296997e-01 + <_> + + 0 -1 241 -1.9895960576832294e-03 + + -6.1527568101882935e-01 5.4905921220779419e-02 + <_> + + 0 -1 242 1.6876959707587957e-03 + + -9.7619786858558655e-02 3.3004701137542725e-01 + <_> + + 0 -1 243 9.8390737548470497e-03 + + 4.0972411632537842e-02 -7.5515109300613403e-01 + <_> + + 0 -1 244 1.3243829598650336e-03 + + -1.0046280175447464e-01 3.0665108561515808e-01 + <_> + + 0 -1 245 3.1150300055742264e-03 + + 8.9804470539093018e-02 -3.3524599671363831e-01 + <_> + + 0 -1 246 7.3907422120100819e-06 + + -2.2410400211811066e-01 1.3288240134716034e-01 + <_> + + 0 -1 247 3.2559569925069809e-02 + + 5.0113398581743240e-02 -5.4240328073501587e-01 + <_> + + 0 -1 248 -2.9865119140595198e-03 + + 2.8385341167449951e-01 -1.1164219677448273e-01 + <_> + + 0 -1 249 1.6058710170909762e-03 + + -1.2024080008268356e-01 2.9032671451568604e-01 + <_> + + 0 -1 250 2.2018649615347385e-03 + + 7.8110128641128540e-02 -4.3846049904823303e-01 + <_> + + 0 -1 251 -5.7107508182525635e-03 + + -3.2608801126480103e-01 9.2941299080848694e-02 + <_> + + 0 -1 252 8.9503038907423615e-04 + + -1.3504159450531006e-01 2.2331899404525757e-01 + <_> + + 0 -1 253 7.7259249985218048e-02 + + 7.3221340775489807e-02 -4.1714018583297729e-01 + <_> + + 0 -1 254 -1.0145610198378563e-02 + + -2.7330970764160156e-01 1.4099189639091492e-01 + <_> + + 0 -1 255 -7.0878718361200299e-06 + + 1.2602959573268890e-01 -2.3253719508647919e-01 + <_> + + 0 -1 256 -8.0232005566358566e-03 + + -6.2682849168777466e-01 4.4199578464031219e-02 + <_> + + 0 -1 257 -1.5409339684993029e-03 + + 3.2154878973960876e-01 -9.5819726586341858e-02 + <_> + + 0 -1 258 -1.3815560378134251e-03 + + 2.3909060657024384e-01 -1.0845059901475906e-01 + <_> + + 0 -1 259 -8.5559524595737457e-03 + + -6.2880992889404297e-01 4.6904459595680237e-02 + <_> + + 0 -1 260 1.4967939932830632e-05 + + -1.7331050336360931e-01 1.6265609860420227e-01 + <_> + 68 + -1.7268099784851074e+00 + + <_> + + 0 -1 261 -9.2911375686526299e-03 + + 2.6676508784294128e-01 -4.8681628704071045e-01 + <_> + + 0 -1 262 -1.0201609693467617e-03 + + 2.1469169855117798e-01 -4.2971470952033997e-01 + <_> + + 0 -1 263 1.8099240260198712e-03 + + -4.7085261344909668e-01 1.7293150722980499e-01 + <_> + + 0 -1 264 -6.3195452094078064e-02 + + 5.5868512392044067e-01 -1.1922080069780350e-01 + <_> + + 0 -1 265 1.5157799934968352e-03 + + -3.3087429404258728e-01 1.4256539940834045e-01 + <_> + + 0 -1 266 -3.1134260352700949e-03 + + 3.1897360086441040e-01 -1.5563400089740753e-01 + <_> + + 0 -1 267 6.7187240347266197e-03 + + 1.1308009922504425e-01 -4.6142110228538513e-01 + <_> + + 0 -1 268 -1.4929190001566894e-05 + + 1.1303120106458664e-01 -3.8268089294433594e-01 + <_> + + 0 -1 269 -1.9974811002612114e-03 + + -6.7833811044692993e-01 5.5562671273946762e-02 + <_> + + 0 -1 270 4.4361899199429899e-05 + + -2.1478720009326935e-01 1.7524589598178864e-01 + <_> + + 0 -1 271 -9.4379335641860962e-03 + + -2.9008820652961731e-01 1.0494410246610641e-01 + <_> + + 0 -1 272 1.0263459989801049e-04 + + -3.6809450387954712e-01 1.1580110341310501e-01 + <_> + + 0 -1 273 -4.3512079864740372e-02 + + -5.7967478036880493e-01 4.5160628855228424e-02 + <_> + + 0 -1 274 2.3894330952316523e-03 + + -1.2443830072879791e-01 2.5726899504661560e-01 + <_> + + 0 -1 275 3.6203579511493444e-03 + + 4.8385269939899445e-02 -6.4456540346145630e-01 + <_> + + 0 -1 276 -4.2086638859473169e-04 + + -2.9963639378547668e-01 9.7508132457733154e-02 + <_> + + 0 -1 277 -3.6320161074399948e-02 + + 3.2499030232429504e-01 -1.0373180359601974e-01 + <_> + + 0 -1 278 5.5678240023553371e-03 + + -1.2865519523620605e-01 2.7721390128135681e-01 + <_> + + 0 -1 279 1.4324679505079985e-03 + + 6.3044667243957520e-02 -5.0411659479141235e-01 + <_> + + 0 -1 280 1.2268769787624478e-03 + + -1.7073589563369751e-01 1.7944329977035522e-01 + <_> + + 0 -1 281 4.0125530213117599e-03 + + 7.2100132703781128e-02 -4.1321611404418945e-01 + <_> + + 0 -1 282 4.7377590090036392e-03 + + -9.0100876986980438e-02 3.4303799271583557e-01 + <_> + + 0 -1 283 4.3965759687125683e-03 + + 5.4753091186285019e-02 -5.9175938367843628e-01 + <_> + + 0 -1 284 1.8952810205519199e-03 + + 4.0120709687471390e-02 -6.4907258749008179e-01 + <_> + + 0 -1 285 -1.3425230281427503e-03 + + 3.0321699380874634e-01 -1.1009240150451660e-01 + <_> + + 0 -1 286 -4.6405740082263947e-02 + + -4.6026471257209778e-01 7.0307031273841858e-02 + <_> + + 0 -1 287 2.5875549763441086e-02 + + 3.8987319916486740e-02 -6.4847522974014282e-01 + <_> + + 0 -1 288 1.0986380511894822e-03 + + -1.6458760201931000e-01 1.8133540451526642e-01 + <_> + + 0 -1 289 -3.9583959733135998e-04 + + 9.7805656492710114e-02 -2.7554351091384888e-01 + <_> + + 0 -1 290 -4.5633990317583084e-02 + + -5.4276019334793091e-01 5.4855771362781525e-02 + <_> + + 0 -1 291 -4.7068470157682896e-03 + + 4.0961420536041260e-01 -6.9687090814113617e-02 + <_> + + 0 -1 292 2.0004810357932001e-04 + + 1.2908969819545746e-01 -2.1091359853744507e-01 + <_> + + 0 -1 293 1.1126570170745254e-03 + + -2.2213070094585419e-01 1.2458589673042297e-01 + <_> + + 0 -1 294 -1.4747029636055231e-03 + + 2.9185178875923157e-01 -9.0756237506866455e-02 + <_> + + 0 -1 295 4.3162931688129902e-03 + + 6.1542909592390060e-02 -5.1068651676177979e-01 + <_> + + 0 -1 296 2.0302709890529513e-04 + + -1.5639910101890564e-01 1.6466440260410309e-01 + <_> + + 0 -1 297 3.4639390651136637e-04 + + 1.0773540288209915e-01 -2.5532799959182739e-01 + <_> + + 0 -1 298 1.5631220303475857e-03 + + -9.5428019762039185e-02 2.5450360774993896e-01 + <_> + + 0 -1 299 5.5476918350905180e-04 + + 7.9774253070354462e-02 -3.0791428685188293e-01 + <_> + + 0 -1 300 2.7690480928868055e-03 + + -9.1900892555713654e-02 3.0198639631271362e-01 + <_> + + 0 -1 301 1.1085179867222905e-03 + + 6.2624886631965637e-02 -4.1680490970611572e-01 + <_> + + 0 -1 302 3.4288389142602682e-03 + + -5.7473558932542801e-02 4.7293519973754883e-01 + <_> + + 0 -1 303 -2.0233790855854750e-03 + + -2.4128660559654236e-01 1.0806660354137421e-01 + <_> + + 0 -1 304 -9.1446418082341552e-04 + + 1.7990960180759430e-01 -1.6031919419765472e-01 + <_> + + 0 -1 305 3.8880690932273865e-02 + + 3.9132621139287949e-02 -6.4085322618484497e-01 + <_> + + 0 -1 306 1.2836069799959660e-03 + + 5.2912048995494843e-02 -4.3914559483528137e-01 + <_> + + 0 -1 307 3.5828219261020422e-03 + + -9.7462162375450134e-02 3.0772930383682251e-01 + <_> + + 0 -1 308 2.3203529417514801e-03 + + -1.0929799824953079e-01 2.6735728979110718e-01 + <_> + + 0 -1 309 1.1978139809798449e-04 + + 1.1623129993677139e-01 -2.3586340248584747e-01 + <_> + + 0 -1 310 -2.8259279206395149e-03 + + -4.1935729980468750e-01 5.7008400559425354e-02 + <_> + + 0 -1 311 2.4410230107605457e-03 + + 4.2706880718469620e-02 -5.3362858295440674e-01 + <_> + + 0 -1 312 2.6899650692939758e-03 + + -1.1351829767227173e-01 2.4779020249843597e-01 + <_> + + 0 -1 313 -3.1081750057637691e-03 + + -2.9488921165466309e-01 8.2543209195137024e-02 + <_> + + 0 -1 314 -6.6210748627781868e-03 + + 2.2958689928054810e-01 -1.1443620175123215e-01 + <_> + + 0 -1 315 4.6786409802734852e-03 + + -1.2875209748744965e-01 2.6777699589729309e-01 + <_> + + 0 -1 316 -1.2973829871043563e-03 + + -2.7280429005622864e-01 9.6471726894378662e-02 + <_> + + 0 -1 317 2.9523740522563457e-03 + + -8.7040692567825317e-02 2.9207450151443481e-01 + <_> + + 0 -1 318 -1.6173559706658125e-03 + + -4.0207850933074951e-01 6.5386466681957245e-02 + <_> + + 0 -1 319 -7.5417757034301758e-02 + + -8.9723330736160278e-01 2.4602690711617470e-02 + <_> + + 0 -1 320 -2.5402200408279896e-03 + + 1.5258650481700897e-01 -1.5025460720062256e-01 + <_> + + 0 -1 321 3.7864660844206810e-03 + + 7.6477207243442535e-02 -3.3881941437721252e-01 + <_> + + 0 -1 322 -1.4005510136485100e-02 + + 4.4426390528678894e-01 -5.9003930538892746e-02 + <_> + + 0 -1 323 5.5956508731469512e-04 + + 7.4007123708724976e-02 -3.5604709386825562e-01 + <_> + + 0 -1 324 2.5946850655600429e-04 + + -2.8126189112663269e-01 8.7399207055568695e-02 + <_> + + 0 -1 325 4.4409232214093208e-03 + + 2.8623659163713455e-02 -7.7284187078475952e-01 + <_> + + 0 -1 326 -2.3343560751527548e-03 + + 3.5460600256919861e-01 -7.1207538247108459e-02 + <_> + + 0 -1 327 9.7654951969161630e-04 + + -1.0138420015573502e-01 2.2545370459556580e-01 + <_> + + 0 -1 328 -4.3227209243923426e-04 + + -2.1095879375934601e-01 1.2273149937391281e-01 + <_> + 70 + -1.6056820154190063e+00 + + <_> + + 0 -1 329 -1.2480209581553936e-02 + + 2.6112109422683716e-01 -4.7001519799232483e-01 + <_> + + 0 -1 330 3.5450961440801620e-02 + + -2.0008459687232971e-01 4.7718611359596252e-01 + <_> + + 0 -1 331 2.0369330886751413e-03 + + -4.7703158855438232e-01 1.5132640302181244e-01 + <_> + + 0 -1 332 -4.3946420191787183e-05 + + 1.2288480252027512e-01 -5.1796287298202515e-01 + <_> + + 0 -1 333 -3.8480788934975863e-03 + + 4.1113680601119995e-01 -1.4595329761505127e-01 + <_> + + 0 -1 334 -2.8316550888121128e-03 + + 2.8710970282554626e-01 -1.7629599571228027e-01 + <_> + + 0 -1 335 2.5026081129908562e-03 + + 7.9668842256069183e-02 -5.7808011770248413e-01 + <_> + + 0 -1 336 3.0812958721071482e-04 + + 8.2838706672191620e-02 -4.2540180683135986e-01 + <_> + + 0 -1 337 6.1186961829662323e-04 + + 1.3641810417175293e-01 -3.0591419339179993e-01 + <_> + + 0 -1 338 -1.4354350241774227e-05 + + 1.4197489619255066e-01 -2.5681999325752258e-01 + <_> + + 0 -1 339 1.6148330178111792e-03 + + -2.6239329576492310e-01 1.3288390636444092e-01 + <_> + + 0 -1 340 2.0318101160228252e-03 + + 7.5749568641185760e-02 -4.3141460418701172e-01 + <_> + + 0 -1 341 9.5563679933547974e-03 + + -9.1424480080604553e-02 4.0004569292068481e-01 + <_> + + 0 -1 342 -7.8439561184495687e-04 + + -3.6619931459426880e-01 9.1777816414833069e-02 + <_> + + 0 -1 343 -3.9661130867898464e-03 + + 2.3698210716247559e-01 -1.4281649887561798e-01 + <_> + + 0 -1 344 -2.3194469977170229e-03 + + -4.2245340347290039e-01 7.8684106469154358e-02 + <_> + + 0 -1 345 -7.3490202426910400e-02 + + -6.2218552827835083e-01 4.0496870875358582e-02 + <_> + + 0 -1 346 -3.6803178954869509e-03 + + 1.2612029910087585e-01 -2.0990429818630219e-01 + <_> + + 0 -1 347 -4.1019290685653687e-02 + + -8.0316942930221558e-01 2.7993949130177498e-02 + <_> + + 0 -1 348 -4.8213129048235714e-04 + + 1.4825980365276337e-01 -1.7869630455970764e-01 + <_> + + 0 -1 349 -1.6598250716924667e-02 + + 4.1442281007766724e-01 -6.4051687717437744e-02 + <_> + + 0 -1 350 -1.0631670011207461e-03 + + -3.3466520905494690e-01 8.2425996661186218e-02 + <_> + + 0 -1 351 1.8658409826457500e-03 + + -1.3119789958000183e-01 2.3183380067348480e-01 + <_> + + 0 -1 352 -2.5827190838754177e-03 + + 3.8415950536727905e-01 -8.4121666848659515e-02 + <_> + + 0 -1 353 1.7159619601443410e-03 + + 7.6971538364887238e-02 -4.1098991036415100e-01 + <_> + + 0 -1 354 -3.9140181615948677e-03 + + -6.2508618831634521e-01 3.8418460637331009e-02 + <_> + + 0 -1 355 4.2724498780444264e-04 + + 8.6016573011875153e-02 -2.6975229382514954e-01 + <_> + + 0 -1 356 3.3992920070886612e-03 + + -1.0176510363817215e-01 2.7030828595161438e-01 + <_> + + 0 -1 357 -3.6457281559705734e-02 + + -4.9261981248855591e-01 5.5854249745607376e-02 + <_> + + 0 -1 358 1.6230379696935415e-03 + + 5.7567078620195389e-02 -4.2053499817848206e-01 + <_> + + 0 -1 359 4.6655549667775631e-03 + + -9.1158397495746613e-02 3.2095280289649963e-01 + <_> + + 0 -1 360 3.1331549398601055e-03 + + -9.6932657063007355e-02 3.4073451161384583e-01 + <_> + + 0 -1 361 -1.6835830174386501e-03 + + -3.6766248941421509e-01 8.2226082682609558e-02 + <_> + + 0 -1 362 2.7728650718927383e-02 + + 4.0117498487234116e-02 -6.5198391675949097e-01 + <_> + + 0 -1 363 9.5015309751033783e-02 + + 2.3065119981765747e-02 -8.8881981372833252e-01 + <_> + + 0 -1 364 7.4755616486072540e-02 + + -6.3946872949600220e-02 4.7399708628654480e-01 + <_> + + 0 -1 365 1.6693340614438057e-02 + + 4.6477258205413818e-02 -7.1152418851852417e-01 + <_> + + 0 -1 366 1.2088769581168890e-03 + + -1.1359269917011261e-01 2.2424149513244629e-01 + <_> + + 0 -1 367 -6.1751517932862043e-04 + + -3.1268230080604553e-01 8.5018932819366455e-02 + <_> + + 0 -1 368 8.5786692798137665e-03 + + -1.5559460222721100e-01 1.5640939772129059e-01 + <_> + + 0 -1 369 6.1184767400845885e-04 + + 9.4403937458992004e-02 -2.6520138978958130e-01 + <_> + + 0 -1 370 -3.4570440184324980e-03 + + 1.5146060287952423e-01 -1.6220529377460480e-01 + <_> + + 0 -1 371 1.3953070156276226e-03 + + -9.9996216595172882e-02 2.4998310208320618e-01 + <_> + + 0 -1 372 3.5910680890083313e-03 + + 8.1011682748794556e-02 -3.0081549286842346e-01 + <_> + + 0 -1 373 5.4192831739783287e-03 + + 6.7650042474269867e-02 -3.2355660200119019e-01 + <_> + + 0 -1 374 -1.1379310162737966e-03 + + 1.8887449800968170e-01 -1.2729729712009430e-01 + <_> + + 0 -1 375 9.1047259047627449e-03 + + 1.0160540044307709e-01 -2.2280150651931763e-01 + <_> + + 0 -1 376 6.5050171688199043e-03 + + -7.2986416518688202e-02 3.5770270228385925e-01 + <_> + + 0 -1 377 -1.4676549653813709e-05 + + 1.4693109691143036e-01 -1.7403540015220642e-01 + <_> + + 0 -1 378 -9.4403158873319626e-03 + + -2.6536750793457031e-01 9.6619546413421631e-02 + <_> + + 0 -1 379 -4.2933300137519836e-03 + + 2.5656831264495850e-01 -1.0550209879875183e-01 + <_> + + 0 -1 380 4.3133171275258064e-03 + + 6.5936572849750519e-02 -4.5719939470291138e-01 + <_> + + 0 -1 381 5.8854468166828156e-02 + + 6.7918263375759125e-02 -3.3078071475028992e-01 + <_> + + 0 -1 382 -2.8407620266079903e-03 + + 2.3953500390052795e-01 -9.2092156410217285e-02 + <_> + + 0 -1 383 9.6359942108392715e-04 + + -1.0982380062341690e-01 2.6462998986244202e-01 + <_> + + 0 -1 384 -1.4724590073456056e-05 + + 1.1111160367727280e-01 -2.2704580426216125e-01 + <_> + + 0 -1 385 -8.0675468780100346e-04 + + -3.6335140466690063e-01 7.8122653067111969e-02 + <_> + + 0 -1 386 7.3296198388561606e-04 + + -1.5605129301548004e-01 1.5184900164604187e-01 + <_> + + 0 -1 387 6.3753738068044186e-03 + + -7.1957953274250031e-02 2.9723879694938660e-01 + <_> + + 0 -1 388 4.6390579082071781e-03 + + 3.5969600081443787e-02 -6.1132347583770752e-01 + <_> + + 0 -1 389 -7.1079272311180830e-04 + + -2.8806841373443604e-01 6.9314628839492798e-02 + <_> + + 0 -1 390 2.9162289574742317e-03 + + -7.5968459248542786e-02 3.2681688666343689e-01 + <_> + + 0 -1 391 -1.7853140830993652e-02 + + 4.4206309318542480e-01 -4.8174031078815460e-02 + <_> + + 0 -1 392 8.3874985575675964e-03 + + 4.8913899809122086e-02 -5.4415327310562134e-01 + <_> + + 0 -1 393 2.9458320568664931e-05 + + -2.1131239831447601e-01 1.0629370063543320e-01 + <_> + + 0 -1 394 -9.8192706704139709e-02 + + 3.5318240523338318e-01 -6.9296866655349731e-02 + <_> + + 0 -1 395 4.6140368795022368e-04 + + 9.6270777285099030e-02 -2.5811928510665894e-01 + <_> + + 0 -1 396 -2.4016610404942185e-04 + + -2.2976429760456085e-01 9.9984891712665558e-02 + <_> + + 0 -1 397 3.7882480770349503e-02 + + -1.0365439951419830e-01 2.3164770007133484e-01 + <_> + + 0 -1 398 3.2621581340208650e-04 + + 9.7933940589427948e-02 -2.3689700663089752e-01 + <_> + 85 + -1.5173089504241943e+00 + + <_> + + 0 -1 399 -3.6744121462106705e-02 + + 3.4079340100288391e-01 -3.1779891252517700e-01 + <_> + + 0 -1 400 2.1955010015517473e-03 + + -2.8729590773582458e-01 2.5869798660278320e-01 + <_> + + 0 -1 401 8.3034839481115341e-03 + + -2.1800449490547180e-01 2.6759269833564758e-01 + <_> + + 0 -1 402 2.6289420202374458e-03 + + -3.6006081104278564e-01 1.4639839529991150e-01 + <_> + + 0 -1 403 1.9458869937807322e-03 + + 1.3677720725536346e-01 -4.2058759927749634e-01 + <_> + + 0 -1 404 -2.1704390645027161e-02 + + 4.8903319239616394e-01 -9.8091572523117065e-02 + <_> + + 0 -1 405 4.2956420220434666e-03 + + -2.7825561165809631e-01 1.5712629258632660e-01 + <_> + + 0 -1 406 4.9894629046320915e-04 + + 1.1003810167312622e-01 -3.3779421448707581e-01 + <_> + + 0 -1 407 2.4652799591422081e-02 + + 4.5820660889148712e-02 -5.4710537195205688e-01 + <_> + + 0 -1 408 -2.3075740784406662e-02 + + -4.9801421165466309e-01 6.7044779658317566e-02 + <_> + + 0 -1 409 1.1991280131042004e-02 + + -7.0877023041248322e-02 4.8294249176979065e-01 + <_> + + 0 -1 410 1.5430679544806480e-02 + + -6.5949738025665283e-02 4.5236849784851074e-01 + <_> + + 0 -1 411 -4.5555769465863705e-03 + + -4.4665691256523132e-01 6.7877657711505890e-02 + <_> + + 0 -1 412 -4.4582979753613472e-03 + + 3.3656919002532959e-01 -9.4792358577251434e-02 + <_> + + 0 -1 413 1.3494009908754379e-04 + + -3.0288851261138916e-01 1.0293830186128616e-01 + <_> + + 0 -1 414 -4.2500188574194908e-03 + + 4.2550128698348999e-01 -7.2956383228302002e-02 + <_> + + 0 -1 415 -1.4293759595602751e-03 + + -3.0116760730743408e-01 9.0039253234863281e-02 + <_> + + 0 -1 416 -6.3978550024330616e-03 + + 4.1943550109863281e-01 -7.9320870339870453e-02 + <_> + + 0 -1 417 2.6083870325237513e-03 + + 8.3598926663398743e-02 -4.1897168755531311e-01 + <_> + + 0 -1 418 8.6870808154344559e-03 + + -6.3015699386596680e-02 5.2644741535186768e-01 + <_> + + 0 -1 419 -1.0380990570411086e-03 + + -3.6220151185989380e-01 8.0301038920879364e-02 + <_> + + 0 -1 420 4.4070050120353699e-01 + + 3.4913059324026108e-02 -7.2764492034912109e-01 + <_> + + 0 -1 421 3.3689520787447691e-03 + + 5.7332780212163925e-02 -4.8633271455764771e-01 + <_> + + 0 -1 422 1.7443710239604115e-03 + + -1.0994660109281540e-01 2.7023580670356750e-01 + <_> + + 0 -1 423 5.3788698278367519e-04 + + -2.7439421415328979e-01 1.0063380002975464e-01 + <_> + + 0 -1 424 1.0072899749502540e-03 + + 1.0756769776344299e-01 -2.3221600055694580e-01 + <_> + + 0 -1 425 -8.2518812268972397e-03 + + -6.5216302871704102e-01 3.5704229027032852e-02 + <_> + + 0 -1 426 3.5490558948367834e-03 + + -8.4254868328571320e-02 3.1767430901527405e-01 + <_> + + 0 -1 427 -1.1033359915018082e-02 + + 4.1271620988845825e-01 -6.2587052583694458e-02 + <_> + + 0 -1 428 3.2278439030051231e-03 + + 7.1266986429691315e-02 -4.1172251105308533e-01 + <_> + + 0 -1 429 1.7540389299392700e-01 + + 3.4958980977535248e-02 -6.3775068521499634e-01 + <_> + + 0 -1 430 -4.8067080206237733e-04 + + -2.4503110349178314e-01 9.8930649459362030e-02 + <_> + + 0 -1 431 -1.8284550169482827e-03 + + 1.3486519455909729e-01 -1.9799900054931641e-01 + <_> + + 0 -1 432 1.7096720403060317e-03 + + -1.0525950044393539e-01 2.1005709469318390e-01 + <_> + + 0 -1 433 3.9468301110900939e-04 + + 8.0952547490596771e-02 -2.7405399084091187e-01 + <_> + + 0 -1 434 2.3097719531506300e-03 + + 1.2338220328092575e-01 -1.9958800077438354e-01 + <_> + + 0 -1 435 3.1529190018773079e-03 + + -1.0612549632787704e-01 2.2089600563049316e-01 + <_> + + 0 -1 436 -1.9097010372206569e-03 + + -2.5094708800315857e-01 8.7022580206394196e-02 + <_> + + 0 -1 437 -1.2370609911158681e-03 + + 3.0760520696640015e-01 -7.5937293469905853e-02 + <_> + + 0 -1 438 3.7081091431900859e-04 + + -1.6065080463886261e-01 1.3480199873447418e-01 + <_> + + 0 -1 439 3.4268848598003387e-02 + + 3.5260949283838272e-02 -6.3547158241271973e-01 + <_> + + 0 -1 440 4.6664681285619736e-03 + + -5.2494861185550690e-02 4.3242320418357849e-01 + <_> + + 0 -1 441 1.0423569940030575e-02 + + 5.1612429320812225e-02 -5.0745230913162231e-01 + <_> + + 0 -1 442 1.1215180158615112e-02 + + -3.8614250719547272e-02 5.7645928859710693e-01 + <_> + + 0 -1 443 -7.3029109444178175e-06 + + 1.2052319943904877e-01 -1.7274369299411774e-01 + <_> + + 0 -1 444 -4.9072802066802979e-03 + + -3.4818550944328308e-01 5.9116441756486893e-02 + <_> + + 0 -1 445 1.9488829420879483e-03 + + -8.8861227035522461e-02 2.4020899832248688e-01 + <_> + + 0 -1 446 1.3313010276760906e-04 + + -1.4657719433307648e-01 1.9929920136928558e-01 + <_> + + 0 -1 447 -1.4298240421339869e-03 + + -3.9005228877067566e-01 5.9909418225288391e-02 + <_> + + 0 -1 448 -6.4831459894776344e-03 + + 1.8141369521617889e-01 -1.1655449867248535e-01 + <_> + + 0 -1 449 7.2958500823006034e-06 + + -1.8219240009784698e-01 1.1812780052423477e-01 + <_> + + 0 -1 450 4.1690681246109307e-04 + + 1.0591679811477661e-01 -2.0353710651397705e-01 + <_> + + 0 -1 451 5.1982058212161064e-03 + + -3.5962641239166260e-02 6.0264211893081665e-01 + <_> + + 0 -1 452 -4.0649957954883575e-03 + + 2.0696419477462769e-01 -9.8599843680858612e-02 + <_> + + 0 -1 453 -4.7734950203448534e-04 + + -2.4629549682140350e-01 9.3174271285533905e-02 + <_> + + 0 -1 454 5.2415160462260246e-03 + + 3.6528520286083221e-02 -5.4934787750244141e-01 + <_> + + 0 -1 455 3.7873629480600357e-03 + + -5.7597089558839798e-02 3.8733980059623718e-01 + <_> + + 0 -1 456 -1.4434250260819681e-05 + + 1.1292859911918640e-01 -1.7447079718112946e-01 + <_> + + 0 -1 457 4.2011599987745285e-02 + + -4.6556860208511353e-02 4.5454800128936768e-01 + <_> + + 0 -1 458 7.9663433134555817e-03 + + 4.2258739471435547e-02 -5.3702521324157715e-01 + <_> + + 0 -1 459 5.3092982852831483e-04 + + -9.7918719053268433e-02 2.1795919537544250e-01 + <_> + + 0 -1 460 5.2906107157468796e-04 + + 7.7961057424545288e-02 -2.8867539763450623e-01 + <_> + + 0 -1 461 -1.9556249678134918e-01 + + -7.6475739479064941e-01 2.7276000007987022e-02 + <_> + + 0 -1 462 -1.1559950187802315e-02 + + 3.3526000380516052e-01 -6.3614986836910248e-02 + <_> + + 0 -1 463 -1.4005659520626068e-01 + + -7.6232051849365234e-01 2.8024470433592796e-02 + <_> + + 0 -1 464 4.4643289584200829e-05 + + -2.0320929586887360e-01 9.9391698837280273e-02 + <_> + + 0 -1 465 3.9411801844835281e-03 + + 4.9936279654502869e-02 -3.7584540247917175e-01 + <_> + + 0 -1 466 -4.5965691097080708e-03 + + 3.3031210303306580e-01 -6.3809931278228760e-02 + <_> + + 0 -1 467 -6.9790292764082551e-04 + + 1.6093710064888000e-01 -1.3192920386791229e-01 + <_> + + 0 -1 468 6.1886821640655398e-04 + + 7.4621193110942841e-02 -3.3021458983421326e-01 + <_> + + 0 -1 469 -3.2755140215158463e-02 + + -4.0643560886383057e-01 4.9308661371469498e-02 + <_> + + 0 -1 470 3.3697509206831455e-03 + + 4.0627099573612213e-02 -4.9757328629493713e-01 + <_> + + 0 -1 471 3.7391821388155222e-04 + + -1.4931799471378326e-01 1.6517969965934753e-01 + <_> + + 0 -1 472 -4.0217190980911255e-03 + + 2.9531970620155334e-01 -7.6642103493213654e-02 + <_> + + 0 -1 473 -7.2943832492455840e-04 + + -2.7355810999870300e-01 7.9243987798690796e-02 + <_> + + 0 -1 474 -5.7726111263036728e-03 + + 3.4741240739822388e-01 -7.6087206602096558e-02 + <_> + + 0 -1 475 -2.1122458856552839e-03 + + 1.7290510237216949e-01 -1.2444470077753067e-01 + <_> + + 0 -1 476 4.4956691563129425e-03 + + 3.0218729749321938e-02 -7.4003338813781738e-01 + <_> + + 0 -1 477 -1.1419389629736543e-03 + + -2.3494489490985870e-01 7.6911546289920807e-02 + <_> + + 0 -1 478 2.7658098842948675e-03 + + -9.1666661202907562e-02 2.1009710431098938e-01 + <_> + + 0 -1 479 -7.2281848406419158e-04 + + -2.5587469339370728e-01 7.5378142297267914e-02 + <_> + + 0 -1 480 1.8604539800435305e-03 + + -9.4511069357395172e-02 1.9726920127868652e-01 + <_> + + 0 -1 481 -2.8568008565343916e-04 + + -2.1073310077190399e-01 9.7290039062500000e-02 + <_> + + 0 -1 482 -3.8796100765466690e-02 + + -7.8724592924118042e-01 2.4410309270024300e-02 + <_> + + 0 -1 483 -1.2119869701564312e-02 + + 3.6466810107231140e-01 -5.7907499372959137e-02 + <_> + 93 + -1.6563049554824829e+00 + + <_> + + 0 -1 484 5.6008538231253624e-03 + + -3.8491588830947876e-01 3.3817461133003235e-01 + <_> + + 0 -1 485 -3.7205789703875780e-03 + + 2.4614119529724121e-01 -3.0673781037330627e-01 + <_> + + 0 -1 486 -2.5333440862596035e-03 + + 1.2531200051307678e-01 -4.2720189690589905e-01 + <_> + + 0 -1 487 -7.3425087612122297e-04 + + 1.3314330577850342e-01 -3.5111570358276367e-01 + <_> + + 0 -1 488 -1.4792960428167135e-04 + + 1.2545309960842133e-01 -3.8591191172599792e-01 + <_> + + 0 -1 489 -4.8976339399814606e-02 + + 3.6456748843193054e-01 -1.1494780331850052e-01 + <_> + + 0 -1 490 1.0917349718511105e-03 + + 7.9005338251590729e-02 -4.1399830579757690e-01 + <_> + + 0 -1 491 5.4457997903227806e-03 + + -1.1921840161085129e-01 3.3085560798645020e-01 + <_> + + 0 -1 492 1.5979419695213437e-03 + + 4.1181199252605438e-02 -5.5028229951858521e-01 + <_> + + 0 -1 493 -1.3023250503465533e-03 + + 8.2839436829090118e-02 -3.5719320178031921e-01 + <_> + + 0 -1 494 4.8810569569468498e-04 + + -2.0928630232810974e-01 1.4972810447216034e-01 + <_> + + 0 -1 495 2.1033850498497486e-03 + + 5.1839418709278107e-02 -6.1099958419799805e-01 + <_> + + 0 -1 496 1.1984360404312611e-02 + + 4.1022349148988724e-02 -5.8985722064971924e-01 + <_> + + 0 -1 497 -1.1898590251803398e-02 + + 4.5844998955726624e-01 -6.4714707434177399e-02 + <_> + + 0 -1 498 5.3713661618530750e-03 + + -6.1560470610857010e-02 4.1204369068145752e-01 + <_> + + 0 -1 499 4.3421140871942043e-03 + + 6.0501661151647568e-02 -4.8703390359878540e-01 + <_> + + 0 -1 500 6.6142519935965538e-03 + + 4.6873189508914948e-02 -5.0346171855926514e-01 + <_> + + 0 -1 501 1.2339729582890868e-03 + + -8.1538438796997070e-02 3.0428299307823181e-01 + <_> + + 0 -1 502 -1.2975660152733326e-02 + + -4.7834330797195435e-01 4.8681490123271942e-02 + <_> + + 0 -1 503 -1.7806360265240073e-03 + + 3.7698730826377869e-01 -6.8126037716865540e-02 + <_> + + 0 -1 504 7.8339744359254837e-03 + + 5.4501280188560486e-02 -4.6738588809967041e-01 + <_> + + 0 -1 505 -6.0113701038062572e-03 + + 5.4870051145553589e-01 -4.4434640556573868e-02 + <_> + + 0 -1 506 -2.0694560371339321e-03 + + -3.7755548954010010e-01 6.4383402466773987e-02 + <_> + + 0 -1 507 4.7843591310083866e-03 + + 4.6252150088548660e-02 -5.2633982896804810e-01 + <_> + + 0 -1 508 -6.2808818183839321e-03 + + 3.9451861381530762e-01 -6.9051302969455719e-02 + <_> + + 0 -1 509 1.6099009662866592e-03 + + -1.0316190123558044e-01 2.7321669459342957e-01 + <_> + + 0 -1 510 -8.2392559852451086e-04 + + -2.8039410710334778e-01 8.4601573646068573e-02 + <_> + + 0 -1 511 -1.0123319923877716e-02 + + 3.3635950088500977e-01 -6.1322949826717377e-02 + <_> + + 0 -1 512 1.0525720193982124e-02 + + 4.6165600419044495e-02 -5.1672130823135376e-01 + <_> + + 0 -1 513 -2.6774499565362930e-02 + + -5.0325971841812134e-01 3.9857819676399231e-02 + <_> + + 0 -1 514 4.0248301811516285e-03 + + -6.1501380056142807e-02 3.6659809947013855e-01 + <_> + + 0 -1 515 -4.6271650353446603e-04 + + -2.6439830660820007e-01 8.1311263144016266e-02 + <_> + + 0 -1 516 -5.1834900659741834e-05 + + 1.1154399812221527e-01 -2.0269370079040527e-01 + <_> + + 0 -1 517 4.8874281346797943e-03 + + -6.9644987583160400e-02 3.3612030744552612e-01 + <_> + + 0 -1 518 1.2638230621814728e-01 + + 3.6813639104366302e-02 -6.5849918127059937e-01 + <_> + + 0 -1 519 -8.0248164013028145e-03 + + 4.6601921319961548e-01 -4.8885859549045563e-02 + <_> + + 0 -1 520 -1.1518909595906734e-03 + + -4.0466758608818054e-01 5.8572851121425629e-02 + <_> + + 0 -1 521 9.8190037533640862e-04 + + -1.3197229802608490e-01 1.7744350433349609e-01 + <_> + + 0 -1 522 -1.9447980448603630e-02 + + -6.8489527702331543e-01 3.3834591507911682e-02 + <_> + + 0 -1 523 -7.2442039709130768e-06 + + 1.1553110182285309e-01 -1.8726129829883575e-01 + <_> + + 0 -1 524 -1.7039060592651367e-02 + + -3.5105291008949280e-01 6.7737713456153870e-02 + <_> + + 0 -1 525 1.1186580173671246e-02 + + -9.3420043587684631e-02 2.1077099442481995e-01 + <_> + + 0 -1 526 7.6585268834605813e-04 + + 6.5965756773948669e-02 -3.2127881050109863e-01 + <_> + + 0 -1 527 1.4231950626708567e-04 + + -1.5460130572319031e-01 1.3757640123367310e-01 + <_> + + 0 -1 528 -5.5553209967911243e-03 + + 3.1319350004196167e-01 -6.4753532409667969e-02 + <_> + + 0 -1 529 1.2308239820413291e-04 + + 9.7666621208190918e-02 -2.2251069545745850e-01 + <_> + + 0 -1 530 -1.6092039877548814e-03 + + -3.6215591430664062e-01 6.4452558755874634e-02 + <_> + + 0 -1 531 -1.5626100357621908e-03 + + 2.2588780522346497e-01 -9.5551103353500366e-02 + <_> + + 0 -1 532 -5.0116342026740313e-04 + + -2.2289219498634338e-01 8.9174531400203705e-02 + <_> + + 0 -1 533 3.7322030402719975e-04 + + 9.1969013214111328e-02 -2.1129919588565826e-01 + <_> + + 0 -1 534 -2.2882660850882530e-03 + + 3.8989049196243286e-01 -5.3455859422683716e-02 + <_> + + 0 -1 535 -4.6884030103683472e-02 + + -6.2357091903686523e-01 3.2194521278142929e-02 + <_> + + 0 -1 536 1.8901260336861014e-03 + + -7.2615146636962891e-02 2.7420088648796082e-01 + <_> + + 0 -1 537 1.5805330127477646e-02 + + 2.8601830825209618e-02 -6.9608169794082642e-01 + <_> + + 0 -1 538 3.2644178718328476e-02 + + -4.0772251784801483e-02 5.0873398780822754e-01 + <_> + + 0 -1 539 6.5482832724228501e-04 + + 8.5724912583827972e-02 -2.7580630779266357e-01 + <_> + + 0 -1 540 -1.1142930015921593e-02 + + 8.7326012551784515e-02 -2.0914819836616516e-01 + <_> + + 0 -1 541 -5.8072229148820043e-04 + + -2.9471421241760254e-01 6.6337890923023224e-02 + <_> + + 0 -1 542 -7.4414577102288604e-04 + + 1.8017959594726562e-01 -1.0654629766941071e-01 + <_> + + 0 -1 543 7.6460661366581917e-03 + + -6.3608147203922272e-02 3.1582340598106384e-01 + <_> + + 0 -1 544 3.2617211341857910e-02 + + 3.2606441527605057e-02 -6.0541188716888428e-01 + <_> + + 0 -1 545 -3.4527231007814407e-02 + + -5.9770858287811279e-01 2.7888769283890724e-02 + <_> + + 0 -1 546 3.2211719080805779e-03 + + -4.9183920025825500e-02 4.0305620431900024e-01 + <_> + + 0 -1 547 -4.1549839079380035e-04 + + 1.3533140718936920e-01 -1.5845330059528351e-01 + <_> + + 0 -1 548 2.5140501093119383e-03 + + 6.3218571245670319e-02 -3.0768528580665588e-01 + <_> + + 0 -1 549 -2.0818209648132324e-01 + + -7.5750261545181274e-01 2.2695960476994514e-02 + <_> + + 0 -1 550 -2.6067279279232025e-02 + + -7.4959957599639893e-01 1.9375480711460114e-02 + <_> + + 0 -1 551 -5.8264029212296009e-04 + + 9.4658233225345612e-02 -1.9919820129871368e-01 + <_> + + 0 -1 552 -3.2769259996712208e-03 + + 1.6214330494403839e-01 -1.2322030216455460e-01 + <_> + + 0 -1 553 1.3998829526826739e-03 + + -1.0849200189113617e-01 2.3151659965515137e-01 + <_> + + 0 -1 554 -1.2055980041623116e-02 + + -2.4002850055694580e-01 9.3272961676120758e-02 + <_> + + 0 -1 555 3.1805539038032293e-03 + + 7.6264120638370514e-02 -2.5435069203376770e-01 + <_> + + 0 -1 556 -1.0693799704313278e-03 + + 2.2258889675140381e-01 -9.0730242431163788e-02 + <_> + + 0 -1 557 -2.9467688873410225e-03 + + -3.4242698550224304e-01 6.0581039637327194e-02 + <_> + + 0 -1 558 8.8108901400119066e-04 + + -7.8326202929019928e-02 2.6911988854408264e-01 + <_> + + 0 -1 559 2.8118939371779561e-04 + + 9.8370827734470367e-02 -2.1947909891605377e-01 + <_> + + 0 -1 560 -1.8574869260191917e-02 + + 2.6729720830917358e-01 -7.1240752935409546e-02 + <_> + + 0 -1 561 -2.4810349568724632e-02 + + -6.8322032690048218e-01 2.9446309432387352e-02 + <_> + + 0 -1 562 2.8904930222779512e-03 + + 7.6161012053489685e-02 -2.4025200307369232e-01 + <_> + + 0 -1 563 3.5410430282354355e-03 + + -1.0742089897394180e-01 1.8509419262409210e-01 + <_> + + 0 -1 564 -8.4244477329775691e-04 + + 1.8727229535579681e-01 -1.1407770216464996e-01 + <_> + + 0 -1 565 -2.5338360574096441e-03 + + -3.5870191454887390e-01 5.1251661032438278e-02 + <_> + + 0 -1 566 1.9654980860650539e-03 + + -1.4064720273017883e-01 1.3041019439697266e-01 + <_> + + 0 -1 567 3.1574100255966187e-01 + + 2.9550969600677490e-02 -6.3157892227172852e-01 + <_> + + 0 -1 568 -2.9846638790331781e-04 + + -2.2911080718040466e-01 7.8875422477722168e-02 + <_> + + 0 -1 569 -1.1545480042695999e-01 + + -8.1895941495895386e-01 2.2261450067162514e-02 + <_> + + 0 -1 570 -3.5817299038171768e-02 + + -3.0612939596176147e-01 6.0644190758466721e-02 + <_> + + 0 -1 571 1.7071690410375595e-02 + + -6.1134841293096542e-02 3.2152679562568665e-01 + <_> + + 0 -1 572 -2.1385080181062222e-03 + + -5.4798161983489990e-01 3.8667369633913040e-02 + <_> + + 0 -1 573 6.5424457192420959e-02 + + 1.7884260043501854e-02 -8.5628831386566162e-01 + <_> + + 0 -1 574 -1.3419929891824722e-02 + + 3.0995100736618042e-01 -6.7559666931629181e-02 + <_> + + 0 -1 575 1.8939709290862083e-02 + + 2.8729729354381561e-02 -7.5338190793991089e-01 + <_> + + 0 -1 576 -2.9120460152626038e-02 + + -7.3594617843627930e-01 2.0359549671411514e-02 + <_> + 79 + -1.5920439958572388e+00 + + <_> + + 0 -1 577 -1.3419030234217644e-02 + + 3.0538010597229004e-01 -4.1782331466674805e-01 + <_> + + 0 -1 578 1.7404999816790223e-03 + + -2.7101579308509827e-01 3.5409560799598694e-01 + <_> + + 0 -1 579 7.7174860052764416e-03 + + -3.1271371245384216e-01 2.1189980208873749e-01 + <_> + + 0 -1 580 -1.4514879694615956e-05 + + 1.6157090663909912e-01 -3.3522731065750122e-01 + <_> + + 0 -1 581 -1.4871519852022175e-05 + + 1.4571620523929596e-01 -2.9369521141052246e-01 + <_> + + 0 -1 582 1.5004149463493377e-04 + + -4.0149879455566406e-01 1.0407949984073639e-01 + <_> + + 0 -1 583 1.8634879961609840e-03 + + 4.9062840640544891e-02 -6.5208268165588379e-01 + <_> + + 0 -1 584 -2.9590800404548645e-03 + + 2.8804430365562439e-01 -1.3293409347534180e-01 + <_> + + 0 -1 585 3.3067780896089971e-04 + + 3.9615370333194733e-02 -4.1540861129760742e-01 + <_> + + 0 -1 586 -1.6816710121929646e-03 + + 1.3032579421997070e-01 -2.3237510025501251e-01 + <_> + + 0 -1 587 3.4896740689873695e-03 + + 6.8852916359901428e-02 -4.7176009416580200e-01 + <_> + + 0 -1 588 1.6204500570893288e-03 + + -1.0996960103511810e-01 3.4887188673019409e-01 + <_> + + 0 -1 589 1.9125849939882755e-04 + + -2.0317320525646210e-01 1.4775620400905609e-01 + <_> + + 0 -1 590 2.2485259920358658e-02 + + 5.1929730921983719e-02 -5.4815691709518433e-01 + <_> + + 0 -1 591 1.0035949759185314e-02 + + -1.0943319648504257e-01 2.6000571250915527e-01 + <_> + + 0 -1 592 4.0091630071401596e-02 + + 3.8657050579786301e-02 -7.4724602699279785e-01 + <_> + + 0 -1 593 1.5319019556045532e-02 + + 2.8579369187355042e-02 -7.7717798948287964e-01 + <_> + + 0 -1 594 9.0913427993655205e-04 + + -1.5049549937248230e-01 1.7363379895687103e-01 + <_> + + 0 -1 595 -6.0226190835237503e-03 + + -4.7704491019248962e-01 5.8185670524835587e-02 + <_> + + 0 -1 596 7.8066787682473660e-04 + + -1.6349339485168457e-01 1.6236920654773712e-01 + <_> + + 0 -1 597 -1.1492020450532436e-02 + + -5.6185477972030640e-01 4.6009611338376999e-02 + <_> + + 0 -1 598 8.9691327884793282e-03 + + 6.6570483148097992e-02 -3.3824840188026428e-01 + <_> + + 0 -1 599 7.2241941234096885e-04 + + -1.2882669270038605e-01 1.9002969563007355e-01 + <_> + + 0 -1 600 1.4879239643050823e-05 + + -2.1765929460525513e-01 1.3151009380817413e-01 + <_> + + 0 -1 601 8.7159732356667519e-03 + + 4.8188239336013794e-02 -5.2367717027664185e-01 + <_> + + 0 -1 602 -1.3809900265187025e-03 + + -3.1734630465507507e-01 6.7012362182140350e-02 + <_> + + 0 -1 603 1.4004110358655453e-02 + + -7.2155177593231201e-02 3.4900391101837158e-01 + <_> + + 0 -1 604 -1.2883460149168968e-02 + + -5.9674298763275146e-01 3.9219990372657776e-02 + <_> + + 0 -1 605 9.9220760166645050e-03 + + -7.3617048561573029e-02 3.5491651296615601e-01 + <_> + + 0 -1 606 -1.0360360145568848e-02 + + -4.9655780196189880e-01 5.4516721516847610e-02 + <_> + + 0 -1 607 5.9103948296979070e-04 + + -9.1649092733860016e-02 2.3738409578800201e-01 + <_> + + 0 -1 608 1.4986419955675956e-05 + + -1.5624360740184784e-01 1.4216689765453339e-01 + <_> + + 0 -1 609 6.2526292167603970e-03 + + 4.6570941805839539e-02 -4.3861261010169983e-01 + <_> + + 0 -1 610 9.0722978115081787e-02 + + 2.3544119670987129e-02 -7.5557678937911987e-01 + <_> + + 0 -1 611 1.2880839640274644e-03 + + -1.0999819636344910e-01 1.9954189658164978e-01 + <_> + + 0 -1 612 -5.3202832350507379e-04 + + -2.3681020736694336e-01 9.4349831342697144e-02 + <_> + + 0 -1 613 1.4669039519503713e-03 + + -6.0417938977479935e-02 3.5437929630279541e-01 + <_> + + 0 -1 614 2.5929270312190056e-02 + + 3.0205380171537399e-02 -7.1175122261047363e-01 + <_> + + 0 -1 615 -7.2257839143276215e-02 + + -7.6830059289932251e-01 2.2078540176153183e-02 + <_> + + 0 -1 616 -2.5999830104410648e-03 + + 2.2878250479698181e-01 -9.2575646936893463e-02 + <_> + + 0 -1 617 4.2036110162734985e-01 + + 3.4129150211811066e-02 -6.3944667577743530e-01 + <_> + + 0 -1 618 -2.1722039673477411e-03 + + -2.0458799600601196e-01 9.6727348864078522e-02 + <_> + + 0 -1 619 -1.8573250621557236e-02 + + -7.2321742773056030e-01 2.6587400585412979e-02 + <_> + + 0 -1 620 2.1321140229701996e-03 + + -7.9263173043727875e-02 2.9004418849945068e-01 + <_> + + 0 -1 621 1.4585970347980037e-05 + + -1.5812200307846069e-01 1.2857919931411743e-01 + <_> + + 0 -1 622 -2.5919941067695618e-01 + + -8.3206391334533691e-01 2.1327629685401917e-02 + <_> + + 0 -1 623 -1.2713880278170109e-02 + + -4.8670661449432373e-01 3.5282909870147705e-02 + <_> + + 0 -1 624 2.1182969212532043e-03 + + -4.8141859471797943e-02 4.3498820066452026e-01 + <_> + + 0 -1 625 4.9225408583879471e-03 + + 5.9389010071754456e-02 -3.5719910264015198e-01 + <_> + + 0 -1 626 7.1720690466463566e-03 + + -7.2721220552921295e-02 3.1716778874397278e-01 + <_> + + 0 -1 627 1.5319329686462879e-03 + + 7.6105281710624695e-02 -2.9826408624649048e-01 + <_> + + 0 -1 628 -2.6141680777072906e-02 + + -4.8129829764366150e-01 4.1991200298070908e-02 + <_> + + 0 -1 629 -7.1861818469187710e-06 + + 1.0385909676551819e-01 -2.5540891289710999e-01 + <_> + + 0 -1 630 -5.8513309340924025e-04 + + 2.1552430093288422e-01 -1.0446780174970627e-01 + <_> + + 0 -1 631 7.3564669582992792e-04 + + 8.2850307226181030e-02 -2.3229689896106720e-01 + <_> + + 0 -1 632 -4.4216000242158771e-04 + + 1.9849689304828644e-01 -1.1084359884262085e-01 + <_> + + 0 -1 633 6.6545000299811363e-03 + + 2.9844839125871658e-02 -6.3819402456283569e-01 + <_> + + 0 -1 634 -1.4856060261081439e-05 + + 1.0647810250520706e-01 -1.6304740309715271e-01 + <_> + + 0 -1 635 4.4933347962796688e-03 + + -5.8312181383371353e-02 3.2200211286544800e-01 + <_> + + 0 -1 636 3.8110970053821802e-03 + + 7.1237437427043915e-02 -2.7149480581283569e-01 + <_> + + 0 -1 637 -3.8309019058942795e-02 + + -6.2387478351593018e-01 2.9790399596095085e-02 + <_> + + 0 -1 638 -2.5534629821777344e-03 + + 2.0947620272636414e-01 -9.3472570180892944e-02 + <_> + + 0 -1 639 -2.9908109354437329e-05 + + 1.4771899580955505e-01 -1.2858720123767853e-01 + <_> + + 0 -1 640 2.0549520850181580e-03 + + -9.3603983521461487e-02 2.1911169588565826e-01 + <_> + + 0 -1 641 3.3064800663851202e-04 + + -1.4430660009384155e-01 1.6905060410499573e-01 + <_> + + 0 -1 642 4.0969369001686573e-04 + + 8.9844956994056702e-02 -2.1793210506439209e-01 + <_> + + 0 -1 643 -5.1680381875485182e-04 + + -2.7330860495567322e-01 7.2490707039833069e-02 + <_> + + 0 -1 644 -1.2285299599170685e-02 + + -5.7899951934814453e-01 2.8828129172325134e-02 + <_> + + 0 -1 645 1.4923219569027424e-03 + + -8.9748427271842957e-02 2.1315790712833405e-01 + <_> + + 0 -1 646 3.7809570785611868e-03 + + 5.6869130581617355e-02 -3.2580479979515076e-01 + <_> + + 0 -1 647 -1.3630799949169159e-01 + + -5.1958292722702026e-01 3.4014869481325150e-02 + <_> + + 0 -1 648 2.1192250773310661e-02 + + -5.9815749526023865e-02 4.3134000897407532e-01 + <_> + + 0 -1 649 -2.2501780185848475e-03 + + -3.2725110650062561e-01 6.9494038820266724e-02 + <_> + + 0 -1 650 -1.3309439644217491e-02 + + 5.5684721469879150e-01 -3.8055110722780228e-02 + <_> + + 0 -1 651 -4.8674400895833969e-02 + + 3.7503889203071594e-01 -4.8045299947261810e-02 + <_> + + 0 -1 652 -1.4651560377387796e-05 + + 9.3043543398380280e-02 -2.2984559834003448e-01 + <_> + + 0 -1 653 -7.7605661936104298e-03 + + 3.8858211040496826e-01 -5.4669309407472610e-02 + <_> + + 0 -1 654 2.4429330602288246e-02 + + 4.5898649841547012e-02 -5.1061111688613892e-01 + <_> + + 0 -1 655 -2.1317049686331302e-04 + + -2.0513610541820526e-01 1.0507310181856155e-01 + <_> + 105 + -1.6632529497146606e+00 + + <_> + + 0 -1 656 -5.7014292106032372e-03 + + 2.7576211094856262e-01 -3.3123719692230225e-01 + <_> + + 0 -1 657 -4.4359369203448296e-03 + + 1.5587480366230011e-01 -5.0288617610931396e-01 + <_> + + 0 -1 658 -5.0388257950544357e-03 + + 1.6109010577201843e-01 -3.5196068882942200e-01 + <_> + + 0 -1 659 8.0847437493503094e-04 + + -3.3315700292587280e-01 1.4446459710597992e-01 + <_> + + 0 -1 660 2.1605329588055611e-02 + + -8.6723573505878448e-02 5.9101939201354980e-01 + <_> + + 0 -1 661 -1.8266839906573296e-02 + + 5.0261861085891724e-01 -8.4620863199234009e-02 + <_> + + 0 -1 662 -8.3384668687358499e-04 + + -3.0832511186599731e-01 1.1352760344743729e-01 + <_> + + 0 -1 663 -1.5336600132286549e-02 + + -6.8610608577728271e-01 3.3057838678359985e-02 + <_> + + 0 -1 664 -5.0607877783477306e-03 + + 3.4399279952049255e-01 -9.2118233442306519e-02 + <_> + + 0 -1 665 -1.4741700397280511e-05 + + 1.1778169870376587e-01 -2.5235179066658020e-01 + <_> + + 0 -1 666 -1.1485730065032840e-03 + + -2.9050019383430481e-01 8.3533048629760742e-02 + <_> + + 0 -1 667 2.8824089094996452e-03 + + -9.0674236416816711e-02 3.1274148821830750e-01 + <_> + + 0 -1 668 -2.9224360361695290e-02 + + -6.9156378507614136e-01 3.3279780298471451e-02 + <_> + + 0 -1 669 2.1423520520329475e-03 + + -1.0087729990482330e-01 2.4603089690208435e-01 + <_> + + 0 -1 670 -3.3471059054136276e-02 + + -5.0953942537307739e-01 5.5052071809768677e-02 + <_> + + 0 -1 671 1.4763450053578708e-05 + + -1.7823149263858795e-01 1.2816399335861206e-01 + <_> + + 0 -1 672 1.6341559588909149e-02 + + -1.3254739344120026e-01 1.9663499295711517e-01 + <_> + + 0 -1 673 2.2475779987871647e-03 + + 7.9048447310924530e-02 -2.9476320743560791e-01 + <_> + + 0 -1 674 4.6113221906125546e-03 + + -7.6338447630405426e-02 3.2394409179687500e-01 + <_> + + 0 -1 675 2.8979079797863960e-03 + + -1.0839050263166428e-01 2.6353389024734497e-01 + <_> + + 0 -1 676 1.3482819776982069e-03 + + 7.9134561121463776e-02 -3.4839859604835510e-01 + <_> + + 0 -1 677 4.6576592139899731e-03 + + 7.6356090605258942e-02 -3.1110540032386780e-01 + <_> + + 0 -1 678 -3.9915097877383232e-03 + + -3.4151628613471985e-01 8.2623466849327087e-02 + <_> + + 0 -1 679 6.0268798843026161e-03 + + -9.6277832984924316e-02 2.6347661018371582e-01 + <_> + + 0 -1 680 -4.1388701647520065e-03 + + 2.3571729660034180e-01 -9.4335287809371948e-02 + <_> + + 0 -1 681 -1.0371750220656395e-02 + + -7.2972798347473145e-01 3.3645220100879669e-02 + <_> + + 0 -1 682 1.0373629629611969e-01 + + 3.1347069889307022e-02 -5.8245128393173218e-01 + <_> + + 0 -1 683 -1.8832299974747002e-04 + + 1.6663299500942230e-01 -1.3723160326480865e-01 + <_> + + 0 -1 684 -6.0749921249225736e-04 + + -2.7257540822029114e-01 8.1483371555805206e-02 + <_> + + 0 -1 685 2.3499270901083946e-03 + + -1.0285440087318420e-01 2.1854889392852783e-01 + <_> + + 0 -1 686 -3.1354159582406282e-03 + + -4.9246039986610413e-01 4.4747360050678253e-02 + <_> + + 0 -1 687 1.5564589994028211e-03 + + 5.3096260875463486e-02 -4.0526211261749268e-01 + <_> + + 0 -1 688 6.3236099667847157e-03 + + -7.9116806387901306e-02 2.8413718938827515e-01 + <_> + + 0 -1 689 -4.8074051737785339e-03 + + 2.9990258812904358e-01 -8.2824081182479858e-02 + <_> + + 0 -1 690 7.6432302594184875e-02 + + 3.9146371185779572e-02 -5.7314342260360718e-01 + <_> + + 0 -1 691 7.0249952841550112e-04 + + 5.2832871675491333e-02 -3.3245471119880676e-01 + <_> + + 0 -1 692 -8.2157138967886567e-04 + + -2.1230019629001617e-01 8.8145829737186432e-02 + <_> + + 0 -1 693 -1.0148280300199986e-02 + + -2.2071610391139984e-01 9.6597403287887573e-02 + <_> + + 0 -1 694 -1.7348809540271759e-01 + + -5.9822201728820801e-01 3.2547060400247574e-02 + <_> + + 0 -1 695 4.3031540699303150e-03 + + -6.8253546953201294e-02 2.8981029987335205e-01 + <_> + + 0 -1 696 -7.3378678280278109e-06 + + 7.5155563652515411e-02 -2.5863590836524963e-01 + <_> + + 0 -1 697 1.9277239916846156e-03 + + 1.0856460034847260e-01 -1.6595140099525452e-01 + <_> + + 0 -1 698 -4.2054480873048306e-03 + + 1.9811309874057770e-01 -9.1941706836223602e-02 + <_> + + 0 -1 699 1.1466189753264189e-03 + + 4.2078729718923569e-02 -4.3991029262542725e-01 + <_> + + 0 -1 700 -6.7244949750602245e-03 + + 3.4456861019134521e-01 -5.7096958160400391e-02 + <_> + + 0 -1 701 -1.4554189874615986e-05 + + 1.1632560193538666e-01 -1.6252210736274719e-01 + <_> + + 0 -1 702 -2.6114559732377529e-03 + + 2.8084969520568848e-01 -6.8243041634559631e-02 + <_> + + 0 -1 703 -1.9477460591588169e-04 + + -1.9368860125541687e-01 9.3413226306438446e-02 + <_> + + 0 -1 704 2.6438338682055473e-04 + + 9.9354371428489685e-02 -2.1586629748344421e-01 + <_> + + 0 -1 705 2.0134719088673592e-03 + + -6.1209201812744141e-02 2.9120978713035583e-01 + <_> + + 0 -1 706 -2.6024359464645386e-01 + + -8.3802181482315063e-01 2.1150760352611542e-02 + <_> + + 0 -1 707 -1.5944700688123703e-02 + + -6.3974797725677490e-01 2.2144839167594910e-02 + <_> + + 0 -1 708 6.7249889252707362e-04 + + -1.4014090597629547e-01 1.2326350063085556e-01 + <_> + + 0 -1 709 1.3042770326137543e-02 + + 2.4306889623403549e-02 -6.6303068399429321e-01 + <_> + + 0 -1 710 -1.4540290067088790e-05 + + 9.0137362480163574e-02 -1.7409169673919678e-01 + <_> + + 0 -1 711 1.7920829355716705e-02 + + 2.5644620880484581e-02 -6.5067142248153687e-01 + <_> + + 0 -1 712 1.6542300581932068e-03 + + -1.0385700315237045e-01 1.6688160598278046e-01 + <_> + + 0 -1 713 3.5362090915441513e-02 + + 2.3093009367585182e-02 -6.9009417295455933e-01 + <_> + + 0 -1 714 3.3049840567400679e-05 + + -1.7408940196037292e-01 9.3873098492622375e-02 + <_> + + 0 -1 715 3.3775588963180780e-03 + + -5.8522459119558334e-02 3.0490559339523315e-01 + <_> + + 0 -1 716 7.3239738121628761e-03 + + 4.0999408811330795e-02 -4.6160981059074402e-01 + <_> + + 0 -1 717 -2.9797051101922989e-03 + + 5.1136761903762817e-01 -3.6246869713068008e-02 + <_> + + 0 -1 718 2.0306499209254980e-03 + + 6.5309353172779083e-02 -2.6698499917984009e-01 + <_> + + 0 -1 719 -6.8856950383633375e-04 + + -1.7604120075702667e-01 9.9361896514892578e-02 + <_> + + 0 -1 720 1.5746579738333821e-03 + + -1.0312269628047943e-01 1.6940550506114960e-01 + <_> + + 0 -1 721 1.5011089853942394e-03 + + -8.8128447532653809e-02 1.8899090588092804e-01 + <_> + + 0 -1 722 1.3503979425877333e-04 + + 9.4145476818084717e-02 -1.8483440577983856e-01 + <_> + + 0 -1 723 5.5570588447153568e-03 + + 2.9959060251712799e-02 -5.5482620000839233e-01 + <_> + + 0 -1 724 9.4529995694756508e-03 + + -5.3136389702558517e-02 4.0138289332389832e-01 + <_> + + 0 -1 725 -6.1030662618577480e-04 + + -2.7060449123382568e-01 6.6881351172924042e-02 + <_> + + 0 -1 726 -1.1329240351915359e-01 + + -6.5178507566452026e-01 2.5042990222573280e-02 + <_> + + 0 -1 727 -2.0354389562271535e-04 + + 1.0892420262098312e-01 -1.5174369513988495e-01 + <_> + + 0 -1 728 -1.4983189757913351e-03 + + 2.7388730645179749e-01 -5.8467049151659012e-02 + <_> + + 0 -1 729 7.5277159921824932e-03 + + 4.0991529822349548e-02 -4.2739889025688171e-01 + <_> + + 0 -1 730 3.6209179088473320e-03 + + -6.7309238016605377e-02 2.6064750552177429e-01 + <_> + + 0 -1 731 1.2153049930930138e-02 + + 5.0768271088600159e-02 -3.8319081068038940e-01 + <_> + + 0 -1 732 4.6126339584589005e-02 + + 2.4232989177107811e-02 -6.5039527416229248e-01 + <_> + + 0 -1 733 7.1408541407436132e-04 + + -1.3476370275020599e-01 1.2208549678325653e-01 + <_> + + 0 -1 734 -4.4331620447337627e-03 + + 1.9939610362052917e-01 -1.0218709707260132e-01 + <_> + + 0 -1 735 1.3099729549139738e-03 + + 7.4517026543617249e-02 -2.4503719806671143e-01 + <_> + + 0 -1 736 2.6161450659856200e-04 + + -8.4287956357002258e-02 1.9924600422382355e-01 + <_> + + 0 -1 737 -2.7577539440244436e-03 + + -6.8734467029571533e-01 2.4851109832525253e-02 + <_> + + 0 -1 738 6.9469690322875977e-02 + + 3.8438729941844940e-02 -3.9717179536819458e-01 + <_> + + 0 -1 739 -1.3031469425186515e-03 + + 2.0089949667453766e-01 -9.1723307967185974e-02 + <_> + + 0 -1 740 1.3012000126764178e-03 + + -9.5305852591991425e-02 1.9248190522193909e-01 + <_> + + 0 -1 741 -3.9377259090542793e-03 + + -3.9224091172218323e-01 4.3738011270761490e-02 + <_> + + 0 -1 742 9.6125707030296326e-02 + + -4.3269440531730652e-02 3.7441849708557129e-01 + <_> + + 0 -1 743 -1.9181859493255615e-01 + + -6.1320561170578003e-01 2.8775539249181747e-02 + <_> + + 0 -1 744 -3.2945619896054268e-03 + + -2.2446820139884949e-01 7.7655017375946045e-02 + <_> + + 0 -1 745 -8.5190916433930397e-03 + + 4.4720551371574402e-01 -4.1310388594865799e-02 + <_> + + 0 -1 746 -4.9431469291448593e-02 + + -5.1819682121276855e-01 3.6863740533590317e-02 + <_> + + 0 -1 747 2.3110879585146904e-02 + + -3.3078420907258987e-02 5.9146630764007568e-01 + <_> + + 0 -1 748 -4.3400399590609595e-05 + + 1.1395029723644257e-01 -1.9526299834251404e-01 + <_> + + 0 -1 749 5.4926839657127857e-03 + + 6.1616070568561554e-02 -2.5591990351676941e-01 + <_> + + 0 -1 750 1.1886029969900846e-03 + + -6.8509116768836975e-02 2.4291250109672546e-01 + <_> + + 0 -1 751 8.8473428040742874e-03 + + 7.6467283070087433e-02 -2.3176389932632446e-01 + <_> + + 0 -1 752 2.3952820338308811e-03 + + -4.4620860368013382e-02 4.5811769366264343e-01 + <_> + + 0 -1 753 -1.5011220239102840e-04 + + -1.6560749709606171e-01 1.0622239857912064e-01 + <_> + + 0 -1 754 -2.3465899750590324e-02 + + -2.4931310117244720e-01 6.6179357469081879e-02 + <_> + + 0 -1 755 -6.6368370316922665e-03 + + 1.4358420670032501e-01 -1.1510509997606277e-01 + <_> + + 0 -1 756 1.1986029567196965e-03 + + -9.8347522318363190e-02 1.7605540156364441e-01 + <_> + + 0 -1 757 7.9502072185277939e-03 + + 3.5481378436088562e-02 -5.0176638364791870e-01 + <_> + + 0 -1 758 -4.5950649655424058e-04 + + -1.6928760707378387e-01 9.3400083482265472e-02 + <_> + + 0 -1 759 -1.9301069900393486e-02 + + 4.1836661100387573e-01 -5.1140110939741135e-02 + <_> + + 0 -1 760 4.0163499116897583e-01 + + 2.9358919709920883e-02 -6.4768058061599731e-01 + <_> + 114 + -1.5384509563446045e+00 + + <_> + + 0 -1 761 -3.6284290254116058e-02 + + 4.2841899394989014e-01 -2.5840431451797485e-01 + <_> + + 0 -1 762 3.0520830303430557e-02 + + -2.9715040326118469e-01 2.1756610274314880e-01 + <_> + + 0 -1 763 3.3444820437580347e-03 + + -2.1734359860420227e-01 1.9754439592361450e-01 + <_> + + 0 -1 764 -1.3315919786691666e-03 + + 1.5535929799079895e-01 -2.3133680224418640e-01 + <_> + + 0 -1 765 -1.9773480016738176e-03 + + -4.2001301050186157e-01 8.8554427027702332e-02 + <_> + + 0 -1 766 -3.7038238951936364e-04 + + 1.2769789993762970e-01 -2.3879130184650421e-01 + <_> + + 0 -1 767 -7.3736459016799927e-03 + + -4.0720060467720032e-01 2.9765319079160690e-02 + <_> + + 0 -1 768 -2.1873020159546286e-05 + + 1.2338209897279739e-01 -2.2237089276313782e-01 + <_> + + 0 -1 769 4.5575048716273159e-05 + + -2.3092910647392273e-01 1.2953619658946991e-01 + <_> + + 0 -1 770 -1.1247170157730579e-02 + + -5.4762738943099976e-01 4.1907660663127899e-02 + <_> + + 0 -1 771 -8.9430268853902817e-03 + + 2.7945289015769958e-01 -9.0801216661930084e-02 + <_> + + 0 -1 772 1.4646670024376363e-05 + + -1.6777880489826202e-01 1.4968040585517883e-01 + <_> + + 0 -1 773 -6.5398351289331913e-03 + + 3.3654621243476868e-01 -7.1987256407737732e-02 + <_> + + 0 -1 774 3.3825531136244535e-03 + + 4.9931880086660385e-02 -4.5806300640106201e-01 + <_> + + 0 -1 775 2.7450500056147575e-03 + + 3.6119509488344193e-02 -5.7113862037658691e-01 + <_> + + 0 -1 776 1.0356379672884941e-02 + + -5.3049158304929733e-02 4.2121198773384094e-01 + <_> + + 0 -1 777 3.1687319278717041e-03 + + 6.2849938869476318e-02 -3.4674918651580811e-01 + <_> + + 0 -1 778 1.3616570504382253e-03 + + -9.0661056339740753e-02 2.5257480144500732e-01 + <_> + + 0 -1 779 -2.2238260135054588e-03 + + 2.6595190167427063e-01 -9.6649080514907837e-02 + <_> + + 0 -1 780 1.1090899817645550e-02 + + 8.6638063192367554e-02 -3.0103358626365662e-01 + <_> + + 0 -1 781 -6.7766150459647179e-04 + + 9.4277828931808472e-02 -2.1464149653911591e-01 + <_> + + 0 -1 782 -3.3104580361396074e-03 + + -5.9162640571594238e-01 3.2738488167524338e-02 + <_> + + 0 -1 783 2.3221869487315416e-03 + + -9.5557250082492828e-02 2.0546199381351471e-01 + <_> + + 0 -1 784 3.0947118648327887e-04 + + -1.2992270290851593e-01 1.7704719305038452e-01 + <_> + + 0 -1 785 -3.2214168459177017e-02 + + -6.4662492275238037e-01 3.1749259680509567e-02 + <_> + + 0 -1 786 -8.3192758029326797e-04 + + -3.0666750669479370e-01 6.1040591448545456e-02 + <_> + + 0 -1 787 3.9188290247693658e-04 + + -1.5795469284057617e-01 1.1830350011587143e-01 + <_> + + 0 -1 788 -3.6203738301992416e-02 + + -2.2731229662895203e-01 8.3183012902736664e-02 + <_> + + 0 -1 789 2.6437509804964066e-03 + + -7.6691061258316040e-02 2.3545509576797485e-01 + <_> + + 0 -1 790 -3.4368310589343309e-03 + + 3.6057031154632568e-01 -7.3672987520694733e-02 + <_> + + 0 -1 791 -5.5921601597219706e-04 + + -2.5343179702758789e-01 7.8275643289089203e-02 + <_> + + 0 -1 792 4.3010139052057639e-05 + + -1.8223099410533905e-01 9.7539380192756653e-02 + <_> + + 0 -1 793 5.3192679770290852e-03 + + -7.6901949942111969e-02 2.4221810698509216e-01 + <_> + + 0 -1 794 -6.9484501145780087e-03 + + -5.8275872468948364e-01 3.4601949155330658e-02 + <_> + + 0 -1 795 1.2447779998183250e-02 + + 2.3883659392595291e-02 -6.1712497472763062e-01 + <_> + + 0 -1 796 1.0083100060001016e-03 + + -7.5152181088924408e-02 2.4744270741939545e-01 + <_> + + 0 -1 797 -2.3544009309262037e-03 + + 3.1459400057792664e-01 -6.5026231110095978e-02 + <_> + + 0 -1 798 4.5676861191168427e-04 + + 7.9758197069168091e-02 -2.3777219653129578e-01 + <_> + + 0 -1 799 6.6723190248012543e-03 + + 3.8779199123382568e-02 -4.6045419573783875e-01 + <_> + + 0 -1 800 7.1861818469187710e-06 + + -1.3110539317131042e-01 1.2532530725002289e-01 + <_> + + 0 -1 801 3.0392590910196304e-02 + + 2.9670530930161476e-02 -5.3870928287506104e-01 + <_> + + 0 -1 802 1.4835850379313342e-05 + + -1.5778580307960510e-01 1.0566859692335129e-01 + <_> + + 0 -1 803 1.4415860176086426e-02 + + -7.6271347701549530e-02 3.0597710609436035e-01 + <_> + + 0 -1 804 3.2787520904093981e-03 + + 4.4464308768510818e-02 -3.8928028941154480e-01 + <_> + + 0 -1 805 1.0770520195364952e-02 + + -3.9324011653661728e-02 4.1493979096412659e-01 + <_> + + 0 -1 806 5.4678268497809768e-04 + + 5.8721691370010376e-02 -2.7546930313110352e-01 + <_> + + 0 -1 807 -1.8106499919667840e-03 + + 1.8281750380992889e-01 -9.3675427138805389e-02 + <_> + + 0 -1 808 1.1771249771118164e-01 + + 2.3175759240984917e-02 -7.0696681737899780e-01 + <_> + + 0 -1 809 -3.1166549888439476e-04 + + -2.0585930347442627e-01 7.6573841273784637e-02 + <_> + + 0 -1 810 -9.7939418628811836e-03 + + 4.8732680082321167e-01 -3.4746028482913971e-02 + <_> + + 0 -1 811 1.0002780472859740e-03 + + -1.1003620177507401e-01 1.5490560233592987e-01 + <_> + + 0 -1 812 6.9929230958223343e-03 + + 3.2923609018325806e-02 -5.4326117038726807e-01 + <_> + + 0 -1 813 3.4163020551204681e-02 + + 1.8062820658087730e-02 -7.0809149742126465e-01 + <_> + + 0 -1 814 -2.0808410644531250e-01 + + -6.7879611253738403e-01 2.0255820825695992e-02 + <_> + + 0 -1 815 2.4889659835025668e-04 + + -1.7719520628452301e-01 8.8152356445789337e-02 + <_> + + 0 -1 816 -9.3355607241392136e-03 + + 1.7948059737682343e-01 -9.4474621117115021e-02 + <_> + + 0 -1 817 2.9192469082772732e-04 + + -1.3786169886589050e-01 1.3819259405136108e-01 + <_> + + 0 -1 818 9.1989226639270782e-03 + + -1.0269109904766083e-01 1.7618100345134735e-01 + <_> + + 0 -1 819 6.8165437551215291e-04 + + 7.4821308255195618e-02 -2.3621830344200134e-01 + <_> + + 0 -1 820 -1.4507620107906405e-05 + + 9.5861770212650299e-02 -1.7785739898681641e-01 + <_> + + 0 -1 821 1.7662490427028388e-04 + + -1.3805359601974487e-01 1.3394320011138916e-01 + <_> + + 0 -1 822 -1.7513500060886145e-03 + + 7.7623583376407623e-02 -2.3174029588699341e-01 + <_> + + 0 -1 823 5.1342020742595196e-03 + + 3.0363969504833221e-02 -5.2420848608016968e-01 + <_> + + 0 -1 824 9.4114318490028381e-03 + + -5.8994568884372711e-02 3.0291381478309631e-01 + <_> + + 0 -1 825 -1.0448819957673550e-03 + + -1.7124690115451813e-01 1.0156030207872391e-01 + <_> + + 0 -1 826 -6.3579198904335499e-03 + + 3.1986710429191589e-01 -5.0694450736045837e-02 + <_> + + 0 -1 827 -6.3502117991447449e-03 + + -5.2413272857666016e-01 3.1800068914890289e-02 + <_> + + 0 -1 828 1.2251759879291058e-02 + + 1.6559680923819542e-02 -7.9422187805175781e-01 + <_> + + 0 -1 829 -1.4000720344483852e-02 + + -5.4444402456283569e-01 2.4652559310197830e-02 + <_> + + 0 -1 830 1.9229920580983162e-03 + + -7.6944977045059204e-02 2.1888209879398346e-01 + <_> + + 0 -1 831 -3.4030789975076914e-03 + + 3.0143401026725769e-01 -5.8023329824209213e-02 + <_> + + 0 -1 832 -2.7728609740734100e-02 + + -5.6704998016357422e-01 3.0071720480918884e-02 + <_> + + 0 -1 833 1.4990579802542925e-04 + + 9.1404616832733154e-02 -1.6989429295063019e-01 + <_> + + 0 -1 834 -1.4532960449287202e-05 + + 1.0442660003900528e-01 -1.3983349502086639e-01 + <_> + + 0 -1 835 2.8315950185060501e-02 + + 1.7812129110097885e-02 -8.1201279163360596e-01 + <_> + + 0 -1 836 -1.7363600200042129e-03 + + 1.9688630104064941e-01 -7.6398819684982300e-02 + <_> + + 0 -1 837 -2.2081490606069565e-02 + + 4.4497510790824890e-01 -3.3445868641138077e-02 + <_> + + 0 -1 838 1.2189210392534733e-03 + + 4.9154780805110931e-02 -3.7790310382843018e-01 + <_> + + 0 -1 839 -5.4838892538100481e-04 + + -2.2823029756546021e-01 8.0446496605873108e-02 + <_> + + 0 -1 840 -9.3702552840113640e-04 + + 2.5258961319923401e-01 -6.5389201045036316e-02 + <_> + + 0 -1 841 1.2496720068156719e-02 + + 3.8215879350900650e-02 -4.0465530753135681e-01 + <_> + + 0 -1 842 -1.6764370724558830e-02 + + -1.4508719742298126e-01 1.2119810283184052e-01 + <_> + + 0 -1 843 5.6504327803850174e-03 + + -8.7139137089252472e-02 2.2194419801235199e-01 + <_> + + 0 -1 844 5.2610319107770920e-04 + + 8.7222076952457428e-02 -2.0502470433712006e-01 + <_> + + 0 -1 845 1.5574200078845024e-03 + + -1.7036689817905426e-01 9.4435282051563263e-02 + <_> + + 0 -1 846 2.5609090924263000e-01 + + 1.7790110781788826e-02 -7.4050921201705933e-01 + <_> + + 0 -1 847 3.3561999443918467e-03 + + -4.2667269706726074e-02 3.7573391199111938e-01 + <_> + + 0 -1 848 4.7072928398847580e-02 + + 3.2015219330787659e-02 -6.4522278308868408e-01 + <_> + + 0 -1 849 -2.2168930154293776e-03 + + 2.0757040381431580e-01 -7.7372692525386810e-02 + <_> + + 0 -1 850 5.0796428695321083e-03 + + 4.1829328984022141e-02 -3.7722969055175781e-01 + <_> + + 0 -1 851 7.0120906457304955e-05 + + 8.1031888723373413e-02 -1.8506260216236115e-01 + <_> + + 0 -1 852 -5.2204862004145980e-04 + + 1.2528459727764130e-01 -1.3090319931507111e-01 + <_> + + 0 -1 853 -6.1609707772731781e-03 + + 3.1177788972854614e-01 -5.1252178847789764e-02 + <_> + + 0 -1 854 -2.8424879908561707e-01 + + -7.0340508222579956e-01 2.2811079397797585e-02 + <_> + + 0 -1 855 -4.1746720671653748e-02 + + -7.8914260864257812e-01 1.6686350107192993e-02 + <_> + + 0 -1 856 -1.0051350109279156e-03 + + -2.2181299328804016e-01 6.1887398362159729e-02 + <_> + + 0 -1 857 -1.3900640187785029e-03 + + 1.8797479569911957e-01 -7.6582401990890503e-02 + <_> + + 0 -1 858 -4.0118378819897771e-04 + + -1.7291170358657837e-01 8.6806759238243103e-02 + <_> + + 0 -1 859 -2.9202610676293261e-05 + + 9.2319779098033905e-02 -1.7136460542678833e-01 + <_> + + 0 -1 860 -2.6532830670475960e-03 + + 3.9422848820686340e-01 -3.9826449006795883e-02 + <_> + + 0 -1 861 -7.8933471813797951e-03 + + -4.3326890468597412e-01 3.6603361368179321e-02 + <_> + + 0 -1 862 8.7933447211980820e-03 + + -3.3205948770046234e-02 4.8740789294242859e-01 + <_> + + 0 -1 863 1.2014759704470634e-02 + + 2.2244220599532127e-02 -8.1597268581390381e-01 + <_> + + 0 -1 864 2.1147020161151886e-03 + + 6.4942933619022369e-02 -2.0959229767322540e-01 + <_> + + 0 -1 865 -9.9916034378111362e-04 + + 1.5402349829673767e-01 -1.0149469971656799e-01 + <_> + + 0 -1 866 -7.6499581336975098e-04 + + 2.0236450433731079e-01 -7.1199662983417511e-02 + <_> + + 0 -1 867 -4.2193511035293341e-04 + + 1.1521430313587189e-01 -1.2845459580421448e-01 + <_> + + 0 -1 868 -4.1548791341483593e-04 + + -2.1168529987335205e-01 7.0376142859458923e-02 + <_> + + 0 -1 869 1.5300279483199120e-03 + + 6.1263758689165115e-02 -2.2269320487976074e-01 + <_> + + 0 -1 870 -2.6573969516903162e-03 + + 3.8462328910827637e-01 -3.8276020437479019e-02 + <_> + + 0 -1 871 -2.1988600492477417e-01 + + -5.1546782255172729e-01 2.8099389746785164e-02 + <_> + + 0 -1 872 -8.7377207819372416e-04 + + 1.0149329900741577e-01 -1.3990689814090729e-01 + <_> + + 0 -1 873 7.5169820338487625e-03 + + -6.1671640723943710e-02 2.5486430525779724e-01 + <_> + + 0 -1 874 -1.3438290625344962e-04 + + -1.6618040204048157e-01 8.8938876986503601e-02 + <_> + 117 + -1.5079799890518188e+00 + + <_> + + 0 -1 875 3.5007519181817770e-03 + + -2.8256690502166748e-01 3.3628109097480774e-01 + <_> + + 0 -1 876 4.1042729280889034e-03 + + -1.5877629816532135e-01 3.4091961383819580e-01 + <_> + + 0 -1 877 9.8724407143890858e-04 + + -4.6094760298728943e-01 1.1771719902753830e-01 + <_> + + 0 -1 878 -4.0168981067836285e-03 + + 1.3994920253753662e-01 -3.8476601243019104e-01 + <_> + + 0 -1 879 -4.2784500867128372e-02 + + 3.1519949436187744e-01 -1.1673810333013535e-01 + <_> + + 0 -1 880 -5.6273501832038164e-04 + + 8.2315109670162201e-02 -3.3594700694084167e-01 + <_> + + 0 -1 881 -4.3416650441940874e-05 + + 1.0691779851913452e-01 -2.5068029761314392e-01 + <_> + + 0 -1 882 1.5347570180892944e-02 + + 9.7383828833699226e-03 -6.4612430334091187e-01 + <_> + + 0 -1 883 1.8295480404049158e-03 + + 8.9164443314075470e-02 -2.9637640714645386e-01 + <_> + + 0 -1 884 3.2098879455588758e-04 + + -2.3136790096759796e-01 1.1478479951620102e-01 + <_> + + 0 -1 885 1.0728760389611125e-03 + + -1.2982189655303955e-01 1.9653689861297607e-01 + <_> + + 0 -1 886 -4.9566011875867844e-03 + + 3.5313999652862549e-01 -7.6989777386188507e-02 + <_> + + 0 -1 887 -1.6319400165230036e-03 + + -2.3701989650726318e-01 1.0319659858942032e-01 + <_> + + 0 -1 888 1.9862050190567970e-02 + + 5.9187598526477814e-02 -4.0955111384391785e-01 + <_> + + 0 -1 889 -9.5205483958125114e-03 + + 3.9061769843101501e-01 -5.7647578418254852e-02 + <_> + + 0 -1 890 -1.0885810479521751e-03 + + -5.2902680635452271e-01 4.4961001724004745e-02 + <_> + + 0 -1 891 3.5348529927432537e-03 + + -9.2707537114620209e-02 2.4449980258941650e-01 + <_> + + 0 -1 892 5.7174800895154476e-03 + + 5.7306189090013504e-02 -3.9878991246223450e-01 + <_> + + 0 -1 893 -1.4010589802637696e-03 + + 1.0757780075073242e-01 -1.9520820677280426e-01 + <_> + + 0 -1 894 -2.2306239698082209e-03 + + -6.1328327655792236e-01 2.7875339612364769e-02 + <_> + + 0 -1 895 -5.0583072006702423e-03 + + -5.4739731550216675e-01 3.0482530593872070e-02 + <_> + + 0 -1 896 1.3725720345973969e-01 + + 2.8162300586700439e-02 -6.0817748308181763e-01 + <_> + + 0 -1 897 3.7828299682587385e-03 + + -1.2640979886054993e-01 1.3382309675216675e-01 + <_> + + 0 -1 898 -1.0629029944539070e-02 + + -1.7343379557132721e-01 9.9954582750797272e-02 + <_> + + 0 -1 899 5.6623672135174274e-03 + + -5.2419230341911316e-02 3.2940819859504700e-01 + <_> + + 0 -1 900 -4.5901038683950901e-03 + + 1.8784660100936890e-01 -9.2681042850017548e-02 + <_> + + 0 -1 901 7.1088741533458233e-03 + + 3.2605409622192383e-02 -5.7968139648437500e-01 + <_> + + 0 -1 902 -1.9310249481350183e-03 + + -2.8707239031791687e-01 5.8658700436353683e-02 + <_> + + 0 -1 903 3.5559700336307287e-03 + + -6.2841393053531647e-02 3.0232760310173035e-01 + <_> + + 0 -1 904 2.1007249597460032e-04 + + -1.2029449641704559e-01 2.0722889900207520e-01 + <_> + + 0 -1 905 3.0181880574673414e-03 + + 4.2764421552419662e-02 -4.5567208528518677e-01 + <_> + + 0 -1 906 -2.0919379312545061e-03 + + -5.8067041635513306e-01 2.4772390723228455e-02 + <_> + + 0 -1 907 4.9380292184650898e-03 + + -6.7825779318809509e-02 2.6715460419654846e-01 + <_> + + 0 -1 908 1.0227119782939553e-03 + + -1.1050579696893692e-01 1.7136010527610779e-01 + <_> + + 0 -1 909 -9.1216713190078735e-02 + + -5.5617409944534302e-01 3.1176509335637093e-02 + <_> + + 0 -1 910 1.9377609714865685e-03 + + 5.2470069378614426e-02 -3.3402100205421448e-01 + <_> + + 0 -1 911 -4.5235231518745422e-03 + + -3.8628038763999939e-01 4.4883530586957932e-02 + <_> + + 0 -1 912 1.1070469627156854e-03 + + -9.4648011028766632e-02 1.7694370448589325e-01 + <_> + + 0 -1 913 -1.4522889629006386e-02 + + -4.4854640960693359e-01 4.0654070675373077e-02 + <_> + + 0 -1 914 2.0895639434456825e-02 + + 3.5988390445709229e-02 -4.4317048788070679e-01 + <_> + + 0 -1 915 7.3273790803796146e-06 + + -1.9736979901790619e-01 8.8131763041019440e-02 + <_> + + 0 -1 916 -1.4750339687452652e-05 + + 8.8203012943267822e-02 -1.9387699663639069e-01 + <_> + + 0 -1 917 1.0160019621253014e-02 + + -7.3683522641658783e-02 2.7725589275360107e-01 + <_> + + 0 -1 918 1.4658429790870287e-05 + + -1.3514040410518646e-01 1.1165390163660049e-01 + <_> + + 0 -1 919 2.9789519030600786e-03 + + -5.6356389075517654e-02 2.9033899307250977e-01 + <_> + + 0 -1 920 6.7907930351793766e-03 + + -5.5468060076236725e-02 2.9650750756263733e-01 + <_> + + 0 -1 921 3.5746619105339050e-02 + + 4.4232271611690521e-02 -3.7943100929260254e-01 + <_> + + 0 -1 922 -8.6023868061602116e-04 + + -2.5524240732192993e-01 6.3983328640460968e-02 + <_> + + 0 -1 923 -3.2749359961599112e-03 + + 5.1642370223999023e-01 -3.0802410095930099e-02 + <_> + + 0 -1 924 -1.4287419617176056e-04 + + -1.7014829814434052e-01 9.0200550854206085e-02 + <_> + + 0 -1 925 -5.9252060949802399e-02 + + 4.4787400960922241e-01 -3.4802999347448349e-02 + <_> + + 0 -1 926 4.9169741570949554e-02 + + 4.3797228485345840e-02 -3.9337700605392456e-01 + <_> + + 0 -1 927 2.4047859478741884e-03 + + -8.5982158780097961e-02 1.7597770690917969e-01 + <_> + + 0 -1 928 -8.8569998741149902e-02 + + -2.9694429039955139e-01 5.6752521544694901e-02 + <_> + + 0 -1 929 3.5266599152237177e-03 + + -5.4160539060831070e-02 3.2359990477561951e-01 + <_> + + 0 -1 930 -1.4674359590571839e-05 + + 1.0095299780368805e-01 -1.7195940017700195e-01 + <_> + + 0 -1 931 -1.0672880336642265e-02 + + -3.9103358983993530e-01 3.9687499403953552e-02 + <_> + + 0 -1 932 -1.3177569955587387e-02 + + 2.7460250258445740e-01 -5.5524408817291260e-02 + <_> + + 0 -1 933 -2.0427990239113569e-03 + + -3.2616940140724182e-01 5.1151938736438751e-02 + <_> + + 0 -1 934 2.5430709123611450e-02 + + 3.4412149339914322e-02 -3.9120680093765259e-01 + <_> + + 0 -1 935 6.6575622186064720e-03 + + -6.2124639749526978e-02 2.5493910908699036e-01 + <_> + + 0 -1 936 -2.4922629818320274e-02 + + -7.5617647171020508e-01 2.0520050078630447e-02 + <_> + + 0 -1 937 6.4869478344917297e-02 + + 1.3535760343074799e-02 -8.5182607173919678e-01 + <_> + + 0 -1 938 -1.9129139836877584e-03 + + -2.0609579980373383e-01 6.8809613585472107e-02 + <_> + + 0 -1 939 -2.7280850335955620e-03 + + 1.3853220641613007e-01 -1.1308959871530533e-01 + <_> + + 0 -1 940 3.9647668600082397e-03 + + -8.5980050265789032e-02 1.8867929279804230e-01 + <_> + + 0 -1 941 8.6866566562093794e-05 + + -1.3409359753131866e-01 1.1543890088796616e-01 + <_> + + 0 -1 942 -1.0680439881980419e-03 + + 2.4043959379196167e-01 -5.9584230184555054e-02 + <_> + + 0 -1 943 6.4973197877407074e-03 + + 3.5721741616725922e-02 -4.3827891349792480e-01 + <_> + + 0 -1 944 3.3825050923041999e-04 + + 7.5188770890235901e-02 -1.9240869581699371e-01 + <_> + + 0 -1 945 2.4638089817017317e-03 + + -3.8108248263597488e-02 4.1398531198501587e-01 + <_> + + 0 -1 946 7.1629788726568222e-04 + + 6.7675560712814331e-02 -2.3129940032958984e-01 + <_> + + 0 -1 947 -1.1354340240359306e-03 + + 1.6413919627666473e-01 -9.8224140703678131e-02 + <_> + + 0 -1 948 -4.6024488983675838e-04 + + 7.8879103064537048e-02 -1.8191289901733398e-01 + <_> + + 0 -1 949 -8.1474315375089645e-03 + + -1.8627829849720001e-01 7.7696673572063446e-02 + <_> + + 0 -1 950 -3.3882331103086472e-02 + + 4.1818460822105408e-01 -4.0109351277351379e-02 + <_> + + 0 -1 951 -4.3395790271461010e-03 + + 1.8961839377880096e-01 -8.3509556949138641e-02 + <_> + + 0 -1 952 2.4691419675946236e-03 + + 4.3756991624832153e-02 -3.8284140825271606e-01 + <_> + + 0 -1 953 8.7688177824020386e-02 + + 2.3466430604457855e-02 -5.9991317987442017e-01 + <_> + + 0 -1 954 7.1277258939517196e-06 + + -1.4574949443340302e-01 9.4181038439273834e-02 + <_> + + 0 -1 955 -2.2863550111651421e-03 + + 2.2176849842071533e-01 -6.2630541622638702e-02 + <_> + + 0 -1 956 -1.4718780221301131e-05 + + 1.1210440099239349e-01 -1.3407769799232483e-01 + <_> + + 0 -1 957 2.9124629218131304e-03 + + -6.1113931238651276e-02 2.6921069622039795e-01 + <_> + + 0 -1 958 -7.2532321792095900e-04 + + -1.8317590653896332e-01 9.0204723179340363e-02 + <_> + + 0 -1 959 -1.7109309555962682e-03 + + -2.9150980710983276e-01 5.6865800172090530e-02 + <_> + + 0 -1 960 3.5050138831138611e-02 + + 2.4259999394416809e-02 -5.9926068782806396e-01 + <_> + + 0 -1 961 2.5119259953498840e-02 + + -4.6499390155076981e-02 3.3078059554100037e-01 + <_> + + 0 -1 962 1.3924979604780674e-02 + + 5.4394099861383438e-02 -3.2431459426879883e-01 + <_> + + 0 -1 963 1.2507860083132982e-03 + + -8.6275100708007812e-02 1.6083979606628418e-01 + <_> + + 0 -1 964 3.2347340602427721e-03 + + 4.0214668959379196e-02 -3.3414369821548462e-01 + <_> + + 0 -1 965 2.3993090726435184e-03 + + -3.6099448800086975e-02 4.0332961082458496e-01 + <_> + + 0 -1 966 -6.4468860626220703e-02 + + -9.2355471849441528e-01 1.7104439437389374e-02 + <_> + + 0 -1 967 2.6983879506587982e-02 + + -4.1323971003293991e-02 3.8095420598983765e-01 + <_> + + 0 -1 968 -1.4244250451156404e-05 + + 9.8453678190708160e-02 -1.3854749500751495e-01 + <_> + + 0 -1 969 3.6304299719631672e-03 + + 2.2532820701599121e-02 -5.7740187644958496e-01 + <_> + + 0 -1 970 -2.7509450446814299e-03 + + 2.8656649589538574e-01 -4.9012679606676102e-02 + <_> + + 0 -1 971 3.4084690269082785e-03 + + 3.8566160947084427e-02 -3.5187271237373352e-01 + <_> + + 0 -1 972 -2.0442469976842403e-03 + + 1.5499830245971680e-01 -8.1280998885631561e-02 + <_> + + 0 -1 973 -3.3763761166483164e-04 + + -1.8969820439815521e-01 7.3497541248798370e-02 + <_> + + 0 -1 974 -1.9649739842861891e-03 + + 2.4030299484729767e-01 -5.3698450326919556e-02 + <_> + + 0 -1 975 2.6115038781426847e-04 + + -1.0585899651050568e-01 1.4551800489425659e-01 + <_> + + 0 -1 976 -2.4496200494468212e-03 + + -3.3511948585510254e-01 4.3949641287326813e-02 + <_> + + 0 -1 977 2.5791170075535774e-02 + + 1.9443970173597336e-02 -6.3135677576065063e-01 + <_> + + 0 -1 978 -1.7996380338445306e-03 + + 1.5620160102844238e-01 -8.9669622480869293e-02 + <_> + + 0 -1 979 -5.5190739221870899e-03 + + 3.8429600000381470e-01 -3.9308220148086548e-02 + <_> + + 0 -1 980 9.3076081248000264e-04 + + 5.3146060556173325e-02 -2.7482900023460388e-01 + <_> + + 0 -1 981 2.7754770126193762e-03 + + -5.3488280624151230e-02 2.4878840148448944e-01 + <_> + + 0 -1 982 1.9387940410524607e-03 + + 7.5177863240242004e-02 -1.9432419538497925e-01 + <_> + + 0 -1 983 -4.0069930255413055e-03 + + -2.7330648899078369e-01 6.2000360339879990e-02 + <_> + + 0 -1 984 7.4540930800139904e-03 + + -5.0977949053049088e-02 2.7055469155311584e-01 + <_> + + 0 -1 985 -1.6338729765266180e-03 + + 1.0920850187540054e-01 -1.4821110665798187e-01 + <_> + + 0 -1 986 -1.1626870185136795e-01 + + -9.4307368993759155e-01 1.4511439949274063e-02 + <_> + + 0 -1 987 -1.2051310390233994e-02 + + -3.0964991450309753e-01 3.7726309150457382e-02 + <_> + + 0 -1 988 1.5592000447213650e-02 + + -3.8526348769664764e-02 3.6706140637397766e-01 + <_> + + 0 -1 989 -1.1198739521205425e-03 + + -1.4644260704517365e-01 9.6057042479515076e-02 + <_> + + 0 -1 990 -1.4623399692936800e-05 + + 1.0641819983720779e-01 -1.3394460082054138e-01 + <_> + + 0 -1 991 -1.0319639742374420e-01 + + -7.0196557044982910e-01 1.8891770392656326e-02 + <_> + 121 + -1.4499469995498657e+00 + + <_> + + 0 -1 992 -3.7469431757926941e-02 + + 2.9079249501228333e-01 -3.5205191373825073e-01 + <_> + + 0 -1 993 4.0861819870769978e-03 + + -2.9098600149154663e-01 1.8445029854774475e-01 + <_> + + 0 -1 994 -9.2446897178888321e-04 + + 1.1087530106306076e-01 -4.1064518690109253e-01 + <_> + + 0 -1 995 8.5803697584196925e-04 + + -2.2129820287227631e-01 1.5465059876441956e-01 + <_> + + 0 -1 996 2.3659599537495524e-04 + + -3.2185178995132446e-01 1.1183690279722214e-01 + <_> + + 0 -1 997 -3.5021029412746429e-02 + + 2.2721460461616516e-01 -1.4156529307365417e-01 + <_> + + 0 -1 998 -3.4688229206949472e-03 + + -4.0247380733489990e-01 4.3791528791189194e-02 + <_> + + 0 -1 999 5.0372090190649033e-03 + + -1.2387280166149139e-01 2.2701320052146912e-01 + <_> + + 0 -1 1000 -1.1929610045626760e-03 + + -4.8692488670349121e-01 5.2568510174751282e-02 + <_> + + 0 -1 1001 9.5561221241950989e-03 + + -4.6204000711441040e-02 5.1149028539657593e-01 + <_> + + 0 -1 1002 1.1109219631180167e-03 + + 4.5496881008148193e-02 -4.5278310775756836e-01 + <_> + + 0 -1 1003 5.7835641200654209e-05 + + -1.5641710162162781e-01 1.3276909291744232e-01 + <_> + + 0 -1 1004 -9.4595848349854350e-04 + + -2.8471308946609497e-01 6.4549557864665985e-02 + <_> + + 0 -1 1005 8.8587577920407057e-04 + + 6.5990276634693146e-02 -3.2505878806114197e-01 + <_> + + 0 -1 1006 2.1180589683353901e-03 + + -7.1820907294750214e-02 3.3132740855216980e-01 + <_> + + 0 -1 1007 -1.6004469245672226e-02 + + -4.9266660213470459e-01 3.5758759826421738e-02 + <_> + + 0 -1 1008 1.4956319937482476e-03 + + -8.3095543086528778e-02 2.7613210678100586e-01 + <_> + + 0 -1 1009 7.5204619206488132e-03 + + 2.6987679302692413e-02 -6.5507948398590088e-01 + <_> + + 0 -1 1010 -1.4567610378435347e-05 + + 1.1181929707527161e-01 -1.8279710412025452e-01 + <_> + + 0 -1 1011 1.5564640052616596e-03 + + -1.5681059658527374e-01 1.1271400004625320e-01 + <_> + + 0 -1 1012 -3.6522798240184784e-02 + + -1.4254869520664215e-01 1.3022269308567047e-01 + <_> + + 0 -1 1013 9.4677843153476715e-03 + + -4.3431900441646576e-02 3.6521318554878235e-01 + <_> + + 0 -1 1014 -1.4508370441035368e-05 + + 8.4056511521339417e-02 -2.0373860001564026e-01 + <_> + + 0 -1 1015 9.7979931160807610e-04 + + -9.2570282518863678e-02 1.9765810668468475e-01 + <_> + + 0 -1 1016 1.4909260244166944e-05 + + -1.4167930185794830e-01 1.2542089819908142e-01 + <_> + + 0 -1 1017 -2.1510709484573454e-04 + + 2.0154480636119843e-01 -8.0978751182556152e-02 + <_> + + 0 -1 1018 -1.3552160235121846e-03 + + -3.9648211002349854e-01 4.5137099921703339e-02 + <_> + + 0 -1 1019 8.4163509309291840e-03 + + -7.5962640345096588e-02 2.2327689826488495e-01 + <_> + + 0 -1 1020 -3.0116800917312503e-04 + + -1.9837650656700134e-01 8.5917882621288300e-02 + <_> + + 0 -1 1021 9.7665376961231232e-04 + + 6.1060719192028046e-02 -3.1315010786056519e-01 + <_> + + 0 -1 1022 1.9718110561370850e-03 + + -5.4124880582094193e-02 3.2931008934974670e-01 + <_> + + 0 -1 1023 6.4220376312732697e-02 + + 3.1034920364618301e-02 -5.8339309692382812e-01 + <_> + + 0 -1 1024 -4.8852190375328064e-03 + + 1.8666909635066986e-01 -8.5492432117462158e-02 + <_> + + 0 -1 1025 -2.5309080956503749e-04 + + -1.6574999690055847e-01 9.2472381889820099e-02 + <_> + + 0 -1 1026 2.9818940674886107e-05 + + -1.4195050299167633e-01 1.0154379904270172e-01 + <_> + + 0 -1 1027 -1.0288760066032410e-02 + + 2.5133699178695679e-01 -5.9286661446094513e-02 + <_> + + 0 -1 1028 -2.9165179512347095e-05 + + 1.2957669794559479e-01 -1.1733850091695786e-01 + <_> + + 0 -1 1029 -2.0741471089422703e-03 + + -2.2633939981460571e-01 6.6792942583560944e-02 + <_> + + 0 -1 1030 1.1343799997121096e-03 + + -6.3913702964782715e-02 2.7956250309944153e-01 + <_> + + 0 -1 1031 -1.5007710317149758e-05 + + 1.3454750180244446e-01 -1.1705060303211212e-01 + <_> + + 0 -1 1032 4.9826782196760178e-03 + + 2.6505010202527046e-02 -6.0010671615600586e-01 + <_> + + 0 -1 1033 -3.4576859325170517e-03 + + 3.1286209821701050e-01 -5.4155170917510986e-02 + <_> + + 0 -1 1034 5.4344828240573406e-03 + + 2.8702750802040100e-02 -5.6824082136154175e-01 + <_> + + 0 -1 1035 -1.4558049770130310e-05 + + 1.0756780207157135e-01 -1.3127699494361877e-01 + <_> + + 0 -1 1036 1.5321969985961914e-03 + + -1.1911620199680328e-01 1.4021439850330353e-01 + <_> + + 0 -1 1037 -2.2449430078268051e-02 + + -3.3376368880271912e-01 4.9373220652341843e-02 + <_> + + 0 -1 1038 1.1923030018806458e-02 + + 6.3558742403984070e-02 -2.4746930599212646e-01 + <_> + + 0 -1 1039 2.0685950294137001e-02 + + -6.1905119568109512e-02 2.6367300748825073e-01 + <_> + + 0 -1 1040 5.0756777636706829e-04 + + -1.2528319656848907e-01 1.4505800604820251e-01 + <_> + + 0 -1 1041 9.2508539091795683e-04 + + 5.9009589254856110e-02 -2.6204380393028259e-01 + <_> + + 0 -1 1042 8.6694798665121198e-04 + + -8.8942721486091614e-02 1.7795750498771667e-01 + <_> + + 0 -1 1043 4.7340960009023547e-04 + + 6.8137630820274353e-02 -2.1880300343036652e-01 + <_> + + 0 -1 1044 9.0366601943969727e-02 + + 1.8516469746828079e-02 -6.5736871957778931e-01 + <_> + + 0 -1 1045 2.0585930906236172e-03 + + -4.5568998903036118e-02 3.2879421114921570e-01 + <_> + + 0 -1 1046 -4.0761628188192844e-03 + + -3.5896709561347961e-01 4.0903490036725998e-02 + <_> + + 0 -1 1047 3.2309619709849358e-03 + + -5.8772470802068710e-02 2.5518509745597839e-01 + <_> + + 0 -1 1048 2.0424150861799717e-03 + + 4.3209441006183624e-02 -3.3393308520317078e-01 + <_> + + 0 -1 1049 -2.8341729193925858e-04 + + -1.6685059666633606e-01 8.1555336713790894e-02 + <_> + + 0 -1 1050 -1.0859699686989188e-03 + + 1.7807449400424957e-01 -9.2171236872673035e-02 + <_> + + 0 -1 1051 -2.0089520141482353e-02 + + -3.5236391425132751e-01 4.4607751071453094e-02 + <_> + + 0 -1 1052 -1.8073120154440403e-03 + + 3.0220940709114075e-01 -5.2047580480575562e-02 + <_> + + 0 -1 1053 1.0337149724364281e-02 + + 2.4787139147520065e-02 -6.8838161230087280e-01 + <_> + + 0 -1 1054 -2.4023749865591526e-03 + + 3.3173340559005737e-01 -4.6199489384889603e-02 + <_> + + 0 -1 1055 -5.8347097365185618e-04 + + -1.8856820464134216e-01 7.7347792685031891e-02 + <_> + + 0 -1 1056 -2.1759211085736752e-03 + + 3.3067348599433899e-01 -4.0855869650840759e-02 + <_> + + 0 -1 1057 -1.1984390439465642e-03 + + -2.1580339968204498e-01 6.8534582853317261e-02 + <_> + + 0 -1 1058 1.4474330237135291e-03 + + -5.8074928820133209e-02 2.3362369835376740e-01 + <_> + + 0 -1 1059 5.1625841297209263e-04 + + 7.5655579566955566e-02 -2.0956470072269440e-01 + <_> + + 0 -1 1060 -1.4388939598575234e-03 + + -3.0948141217231750e-01 5.8159999549388885e-02 + <_> + + 0 -1 1061 -1.7495449865236878e-03 + + 1.0236290097236633e-01 -1.5715239942073822e-01 + <_> + + 0 -1 1062 1.6774939373135567e-02 + + 2.3711699992418289e-02 -5.8594572544097900e-01 + <_> + + 0 -1 1063 -8.3265192806720734e-03 + + 3.0943349003791809e-01 -4.8807561397552490e-02 + <_> + + 0 -1 1064 -4.4853150029666722e-05 + + 1.0615509748458862e-01 -1.3089710474014282e-01 + <_> + + 0 -1 1065 5.9908269904553890e-03 + + 8.0168873071670532e-02 -1.6817809641361237e-01 + <_> + + 0 -1 1066 1.4110070187598467e-03 + + -6.9941587746143341e-02 2.2045080363750458e-01 + <_> + + 0 -1 1067 4.1205998510122299e-02 + + 3.1721431761980057e-02 -4.4176858663558960e-01 + <_> + + 0 -1 1068 1.5044870087876916e-04 + + -1.2152300029993057e-01 1.1241420358419418e-01 + <_> + + 0 -1 1069 -4.8399530351161957e-03 + + 2.8244999051094055e-01 -5.1606610417366028e-02 + <_> + + 0 -1 1070 -1.0831269901245832e-03 + + -1.6978019475936890e-01 8.3731047809123993e-02 + <_> + + 0 -1 1071 -1.3483200222253799e-02 + + 2.8269320726394653e-01 -5.2228599786758423e-02 + <_> + + 0 -1 1072 5.9854640858247876e-04 + + -1.3749149441719055e-01 1.2280890345573425e-01 + <_> + + 0 -1 1073 -6.4943352481350303e-04 + + -1.6931599378585815e-01 8.8171690702438354e-02 + <_> + + 0 -1 1074 -6.3191158697009087e-03 + + 1.6245460510253906e-01 -8.6300060153007507e-02 + <_> + + 0 -1 1075 -2.5179239455610514e-03 + + -3.1853398680686951e-01 5.2688188850879669e-02 + <_> + + 0 -1 1076 -4.6924971044063568e-02 + + -6.5773141384124756e-01 2.0505079999566078e-02 + <_> + + 0 -1 1077 -9.6446421230211854e-04 + + -2.7256599068641663e-01 4.5441299676895142e-02 + <_> + + 0 -1 1078 1.5073099639266729e-03 + + -5.0479460507631302e-02 2.8486481308937073e-01 + <_> + + 0 -1 1079 1.6149930655956268e-02 + + 3.8769058883190155e-02 -3.6149570345878601e-01 + <_> + + 0 -1 1080 1.9126510247588158e-02 + + -3.6233641207218170e-02 4.7573548555374146e-01 + <_> + + 0 -1 1081 -1.2546279467642307e-03 + + 1.1009909957647324e-01 -1.5554140508174896e-01 + <_> + + 0 -1 1082 -1.4754529729543719e-05 + + 9.6549153327941895e-02 -1.3947430253028870e-01 + <_> + + 0 -1 1083 1.5680169686675072e-02 + + 2.3214520886540413e-02 -5.7713180780410767e-01 + <_> + + 0 -1 1084 1.2293360196053982e-02 + + -5.7809889316558838e-02 2.3951390385627747e-01 + <_> + + 0 -1 1085 -9.6596255898475647e-03 + + 2.4098740518093109e-01 -6.5823532640933990e-02 + <_> + + 0 -1 1086 4.4940081425011158e-03 + + 5.4532490670681000e-02 -3.1474688649177551e-01 + <_> + + 0 -1 1087 1.1480580084025860e-02 + + 1.7419299110770226e-02 -7.4722832441329956e-01 + <_> + + 0 -1 1088 -6.5499639511108398e-01 + + -4.5483970642089844e-01 2.6187120005488396e-02 + <_> + + 0 -1 1089 -1.5746919962111861e-04 + + 8.4341458976268768e-02 -1.8240310251712799e-01 + <_> + + 0 -1 1090 -1.0111900046467781e-03 + + -2.0862899720668793e-01 6.7676216363906860e-02 + <_> + + 0 -1 1091 1.8488839268684387e-02 + + -3.5499621182680130e-02 4.1342151165008545e-01 + <_> + + 0 -1 1092 -3.8888910785317421e-04 + + 1.5692460536956787e-01 -8.6299479007720947e-02 + <_> + + 0 -1 1093 -4.5315301977097988e-03 + + -4.3912211060523987e-01 3.4103620797395706e-02 + <_> + + 0 -1 1094 3.3536020666360855e-02 + + -3.2231528311967850e-02 4.7096571326255798e-01 + <_> + + 0 -1 1095 2.0854349713772535e-03 + + -7.6001010835170746e-02 1.7373880743980408e-01 + <_> + + 0 -1 1096 -1.4060589819564484e-05 + + 8.5960999131202698e-02 -1.6348780691623688e-01 + <_> + + 0 -1 1097 4.2995680123567581e-02 + + 2.2033119574189186e-02 -5.9274291992187500e-01 + <_> + + 0 -1 1098 2.4928380735218525e-03 + + -6.3020773231983185e-02 2.1398860216140747e-01 + <_> + + 0 -1 1099 1.4520809600071516e-05 + + -1.1218129843473434e-01 1.1997319757938385e-01 + <_> + + 0 -1 1100 2.1152360364794731e-02 + + 3.0270710587501526e-02 -4.4600808620452881e-01 + <_> + + 0 -1 1101 2.1028789342381060e-04 + + 8.0384418368339539e-02 -1.7209020256996155e-01 + <_> + + 0 -1 1102 1.0620340472087264e-03 + + -6.4051970839500427e-02 2.1304920315742493e-01 + <_> + + 0 -1 1103 -2.5768030900508165e-03 + + -5.2309602499008179e-01 2.6146469637751579e-02 + <_> + + 0 -1 1104 4.7555579803884029e-03 + + 3.6213729530572891e-02 -3.4408730268478394e-01 + <_> + + 0 -1 1105 -5.9062540531158447e-01 + + -9.1701269149780273e-01 1.3416379690170288e-02 + <_> + + 0 -1 1106 -9.7031831741333008e-02 + + 4.8288398981094360e-01 -3.2344181090593338e-02 + <_> + + 0 -1 1107 1.4890159945935011e-03 + + 4.0591750293970108e-02 -3.8898488879203796e-01 + <_> + + 0 -1 1108 2.4702500086277723e-03 + + -6.3159219920635223e-02 2.1322609484195709e-01 + <_> + + 0 -1 1109 -2.9705299530178308e-03 + + 1.4960889518260956e-01 -1.0181649774312973e-01 + <_> + + 0 -1 1110 1.5555499494075775e-01 + + 3.6674879491329193e-02 -3.5983988642692566e-01 + <_> + + 0 -1 1111 1.4113659970462322e-02 + + 1.3834640383720398e-02 -8.7112957239151001e-01 + <_> + + 0 -1 1112 -9.5594127196818590e-04 + + -2.2359329462051392e-01 5.5646751075983047e-02 + <_> + 137 + -1.4971179962158203e+00 + + <_> + + 0 -1 1113 2.3068320006132126e-02 + + -3.0734539031982422e-01 2.5758111476898193e-01 + <_> + + 0 -1 1114 -1.1603030376136303e-02 + + 1.7347939312458038e-01 -2.9917559027671814e-01 + <_> + + 0 -1 1115 -1.0232869535684586e-03 + + 1.9289019703865051e-01 -2.4926829338073730e-01 + <_> + + 0 -1 1116 1.2194960378110409e-02 + + 8.7591417133808136e-02 -4.0853890776634216e-01 + <_> + + 0 -1 1117 -1.2484550243243575e-03 + + 1.6345569491386414e-01 -1.8811899423599243e-01 + <_> + + 0 -1 1118 3.2145460136234760e-04 + + 7.9135909676551819e-02 -3.7722501158714294e-01 + <_> + + 0 -1 1119 -7.9707789700478315e-04 + + -2.6377388834953308e-01 9.6936263144016266e-02 + <_> + + 0 -1 1120 7.0924922823905945e-02 + + -1.2538060545921326e-01 2.5267291069030762e-01 + <_> + + 0 -1 1121 2.5408361107110977e-03 + + -1.3923250138759613e-01 1.4974319934844971e-01 + <_> + + 0 -1 1122 -6.9253891706466675e-04 + + -3.1363919377326965e-01 3.9419740438461304e-02 + <_> + + 0 -1 1123 2.5845640338957310e-03 + + -7.0067122578620911e-02 2.8096580505371094e-01 + <_> + + 0 -1 1124 -1.6803950071334839e-02 + + -4.6254080533981323e-01 3.6509469151496887e-02 + <_> + + 0 -1 1125 -2.1332600153982639e-03 + + 2.2691309452056885e-01 -8.4447480738162994e-02 + <_> + + 0 -1 1126 -5.5397138930857182e-04 + + -2.0728160440921783e-01 1.0041700303554535e-01 + <_> + + 0 -1 1127 -1.4573110092896968e-05 + + 8.8534340262413025e-02 -2.0813420414924622e-01 + <_> + + 0 -1 1128 8.0281507689505816e-04 + + -8.8521443307399750e-02 1.9553969800472260e-01 + <_> + + 0 -1 1129 3.6762449890375137e-03 + + -8.3966277539730072e-02 2.4232700467109680e-01 + <_> + + 0 -1 1130 -1.6549570136703551e-04 + + -1.9402000308036804e-01 1.0044509917497635e-01 + <_> + + 0 -1 1131 5.5225789546966553e-03 + + 4.6014141291379929e-02 -4.1095688939094543e-01 + <_> + + 0 -1 1132 1.1023939587175846e-03 + + -2.1053719520568848e-01 8.4169827401638031e-02 + <_> + + 0 -1 1133 -2.1610360592603683e-02 + + -3.4724879264831543e-01 5.1196940243244171e-02 + <_> + + 0 -1 1134 -1.4869699953123927e-05 + + 1.1187150329351425e-01 -1.6249230504035950e-01 + <_> + + 0 -1 1135 3.1727060675621033e-02 + + 3.7546031177043915e-02 -4.5357111096382141e-01 + <_> + + 0 -1 1136 -6.5588178113102913e-03 + + 2.9756790399551392e-01 -6.1539310961961746e-02 + <_> + + 0 -1 1137 3.7398359272629023e-03 + + -6.9362841546535492e-02 2.2881920635700226e-01 + <_> + + 0 -1 1138 -2.1445790771394968e-03 + + -3.0691981315612793e-01 5.7085540145635605e-02 + <_> + + 0 -1 1139 1.4241340104490519e-03 + + 4.7747720032930374e-02 -3.5141488909721375e-01 + <_> + + 0 -1 1140 1.8902820302173495e-03 + + 1.1250650137662888e-01 -1.5074999630451202e-01 + <_> + + 0 -1 1141 -6.4917900599539280e-03 + + 2.8712779283523560e-01 -6.2573678791522980e-02 + <_> + + 0 -1 1142 -8.7750004604458809e-03 + + -5.4141241312026978e-01 2.9559530317783356e-02 + <_> + + 0 -1 1143 9.3647688627243042e-02 + + -5.6943789124488831e-02 2.9638379812240601e-01 + <_> + + 0 -1 1144 -4.4028809497831389e-05 + + 1.0726290196180344e-01 -1.5169329941272736e-01 + <_> + + 0 -1 1145 7.9690842540003359e-05 + + 8.7704338133335114e-02 -1.8157640099525452e-01 + <_> + + 0 -1 1146 -6.6510448232293129e-03 + + 2.1250769495964050e-01 -7.8765399754047394e-02 + <_> + + 0 -1 1147 2.1358320116996765e-01 + + 3.2704930752515793e-02 -4.9895349144935608e-01 + <_> + + 0 -1 1148 -9.8035410046577454e-02 + + -6.3620072603225708e-01 2.4300750344991684e-02 + <_> + + 0 -1 1149 -3.6894609220325947e-03 + + -5.7873171567916870e-01 2.5343220680952072e-02 + <_> + + 0 -1 1150 4.7867568209767342e-03 + + -6.9719798862934113e-02 2.4641029536724091e-01 + <_> + + 0 -1 1151 4.0250780875794590e-04 + + -1.1852599680423737e-01 1.7163689434528351e-01 + <_> + + 0 -1 1152 -3.8258030544966459e-03 + + -3.1708711385726929e-01 5.2796650677919388e-02 + <_> + + 0 -1 1153 2.9255099434521981e-05 + + -1.2157870084047318e-01 1.2443509697914124e-01 + <_> + + 0 -1 1154 -5.5969221284613013e-04 + + -2.3942449688911438e-01 6.1564020812511444e-02 + <_> + + 0 -1 1155 1.6149280127137899e-03 + + -8.9536681771278381e-02 1.9396179914474487e-01 + <_> + + 0 -1 1156 -5.9165759012103081e-03 + + -6.0741347074508667e-01 2.4107500910758972e-02 + <_> + + 0 -1 1157 4.5592039823532104e-03 + + -5.4090119898319244e-02 2.8721129894256592e-01 + <_> + + 0 -1 1158 -5.1767788827419281e-02 + + -6.4853471517562866e-01 2.4329099804162979e-02 + <_> + + 0 -1 1159 -1.0635569691658020e-02 + + 3.2359760999679565e-01 -5.0231788307428360e-02 + <_> + + 0 -1 1160 2.5121110957115889e-04 + + 9.5274448394775391e-02 -1.4859940111637115e-01 + <_> + + 0 -1 1161 1.3107099803164601e-03 + + -1.1612690240144730e-01 1.2647250294685364e-01 + <_> + + 0 -1 1162 -7.3629721999168396e-02 + + -6.2977832555770874e-01 2.4197410792112350e-02 + <_> + + 0 -1 1163 5.1864539273083210e-04 + + 8.0843970179557800e-02 -1.8038350343704224e-01 + <_> + + 0 -1 1164 -2.0541099365800619e-03 + + 2.0690770447254181e-01 -7.1559637784957886e-02 + <_> + + 0 -1 1165 -7.2738518938422203e-03 + + -1.8049220740795135e-01 8.4618158638477325e-02 + <_> + + 0 -1 1166 -7.0418710820376873e-03 + + -5.5255848169326782e-01 2.4243000894784927e-02 + <_> + + 0 -1 1167 2.3678881116211414e-03 + + -7.4315063655376434e-02 2.2013199329376221e-01 + <_> + + 0 -1 1168 -4.1341409087181091e-03 + + -3.1461110711097717e-01 5.7645540684461594e-02 + <_> + + 0 -1 1169 5.9597631916403770e-03 + + 2.1551210433244705e-02 -6.6399222612380981e-01 + <_> + + 0 -1 1170 -1.4643320355389733e-05 + + 1.0325399786233902e-01 -1.4378640055656433e-01 + <_> + + 0 -1 1171 -8.0324069131165743e-04 + + -2.8026849031448364e-01 5.2175540477037430e-02 + <_> + + 0 -1 1172 -1.7860220745205879e-02 + + 3.1547638773918152e-01 -4.7295480966567993e-02 + <_> + + 0 -1 1173 8.5229711839929223e-04 + + -1.0860790312290192e-01 1.6905729472637177e-01 + <_> + + 0 -1 1174 8.8618341833353043e-03 + + 2.0629420876502991e-02 -7.1686798334121704e-01 + <_> + + 0 -1 1175 4.1418620385229588e-03 + + 3.1313210725784302e-02 -3.9753648638725281e-01 + <_> + + 0 -1 1176 -9.6616581082344055e-02 + + 4.2378899455070496e-01 -3.2291099429130554e-02 + <_> + + 0 -1 1177 -8.4853649139404297e-02 + + -4.8360210657119751e-01 3.4420508891344070e-02 + <_> + + 0 -1 1178 -2.7399489656090736e-02 + + -2.8981518745422363e-01 4.6805508434772491e-02 + <_> + + 0 -1 1179 1.9653420895338058e-03 + + -7.6221130788326263e-02 1.8894240260124207e-01 + <_> + + 0 -1 1180 -9.0222749859094620e-03 + + -5.8255058526992798e-01 2.6038780808448792e-02 + <_> + + 0 -1 1181 1.7859010398387909e-01 + + 1.4113079756498337e-02 -7.5876772403717041e-01 + <_> + + 0 -1 1182 2.6170860510319471e-03 + + -4.2011409997940063e-02 3.4582638740539551e-01 + <_> + + 0 -1 1183 -1.8247140105813742e-03 + + -2.5125750899314880e-01 5.4113451391458511e-02 + <_> + + 0 -1 1184 1.0635840008035302e-03 + + -6.9988057017326355e-02 2.1111090481281281e-01 + <_> + + 0 -1 1185 -8.5794121026992798e-02 + + -5.2950221300125122e-01 2.4234309792518616e-02 + <_> + + 0 -1 1186 -2.4844249710440636e-03 + + 2.2798889875411987e-01 -5.7894941419363022e-02 + <_> + + 0 -1 1187 2.4517390411347151e-03 + + 4.7758270055055618e-02 -2.9931840300559998e-01 + <_> + + 0 -1 1188 7.2088139131665230e-03 + + 8.9190460741519928e-02 -1.4663650095462799e-01 + <_> + + 0 -1 1189 -6.0728411190211773e-03 + + 2.9773110151290894e-01 -4.4187791645526886e-02 + <_> + + 0 -1 1190 2.9379719868302345e-02 + + 1.8384920433163643e-02 -7.2799599170684814e-01 + <_> + + 0 -1 1191 3.5265460610389709e-02 + + -4.0345128625631332e-02 3.4369349479675293e-01 + <_> + + 0 -1 1192 8.0668088048696518e-04 + + -1.0171490162611008e-01 1.3324069976806641e-01 + <_> + + 0 -1 1193 -1.4964640140533447e-03 + + -2.3296439647674561e-01 5.9193279594182968e-02 + <_> + + 0 -1 1194 2.6136979460716248e-02 + + 1.7993519082665443e-02 -7.3094600439071655e-01 + <_> + + 0 -1 1195 1.8663259223103523e-02 + + 1.4693800359964371e-02 -7.2105181217193604e-01 + <_> + + 0 -1 1196 -5.0944439863087609e-05 + + 9.8113812506198883e-02 -1.3487009704113007e-01 + <_> + + 0 -1 1197 -5.5268028518185019e-04 + + -1.1313900351524353e-01 1.1931320279836655e-01 + <_> + + 0 -1 1198 5.4916120134294033e-03 + + -6.8996928632259369e-02 2.2312630712985992e-01 + <_> + + 0 -1 1199 3.1243199482560158e-02 + + -3.2394438982009888e-02 3.9250150322914124e-01 + <_> + + 0 -1 1200 2.7375440113246441e-03 + + 3.6713510751724243e-02 -4.0632349252700806e-01 + <_> + + 0 -1 1201 9.0960890054702759e-02 + + 2.7709199115633965e-02 -4.1612899303436279e-01 + <_> + + 0 -1 1202 -4.2210621177218854e-04 + + -1.5993569791316986e-01 7.8440353274345398e-02 + <_> + + 0 -1 1203 -2.3689800873398781e-03 + + 1.4372199773788452e-01 -9.0417243540287018e-02 + <_> + + 0 -1 1204 4.5116269029676914e-03 + + -6.8068206310272217e-02 2.1011069416999817e-01 + <_> + + 0 -1 1205 -1.4441140228882432e-03 + + -1.3376539945602417e-01 1.1816109716892242e-01 + <_> + + 0 -1 1206 2.1477979607880116e-03 + + -9.8067082464694977e-02 1.7571650445461273e-01 + <_> + + 0 -1 1207 2.2534599527716637e-02 + + 5.3246740251779556e-02 -2.8085210919380188e-01 + <_> + + 0 -1 1208 -1.6165290027856827e-02 + + 2.6058629155158997e-01 -5.6349318474531174e-02 + <_> + + 0 -1 1209 1.3157909736037254e-02 + + 4.4960599392652512e-02 -3.1084328889846802e-01 + <_> + + 0 -1 1210 -2.5218630209565163e-02 + + -1.2245389819145203e-01 1.1707650125026703e-01 + <_> + + 0 -1 1211 -1.0043029760709032e-04 + + 6.2668606638908386e-02 -2.3665410280227661e-01 + <_> + + 0 -1 1212 2.2884309291839600e-02 + + -5.6393388658761978e-02 2.6951891183853149e-01 + <_> + + 0 -1 1213 -3.7653960753232241e-03 + + 2.4265049397945404e-01 -6.0327839106321335e-02 + <_> + + 0 -1 1214 -1.2131360126659274e-03 + + -2.2581340372562408e-01 6.3866272568702698e-02 + <_> + + 0 -1 1215 3.6897920072078705e-03 + + -7.5056307017803192e-02 1.7121140658855438e-01 + <_> + + 0 -1 1216 3.9484380977228284e-04 + + 7.2925560176372528e-02 -1.8006080389022827e-01 + <_> + + 0 -1 1217 -2.8756330721080303e-03 + + 2.3332679271697998e-01 -5.8312799781560898e-02 + <_> + + 0 -1 1218 -1.2939549982547760e-02 + + -5.9966820478439331e-01 2.4746209383010864e-02 + <_> + + 0 -1 1219 4.8920139670372009e-03 + + -5.0808548927307129e-02 2.7142828702926636e-01 + <_> + + 0 -1 1220 -6.3685458153486252e-03 + + -1.7759549617767334e-01 7.8720703721046448e-02 + <_> + + 0 -1 1221 9.1700062155723572e-02 + + -2.4316219612956047e-02 5.6610620021820068e-01 + <_> + + 0 -1 1222 -2.9075080528855324e-03 + + -5.3473442792892456e-01 2.6738349348306656e-02 + <_> + + 0 -1 1223 -3.9782752282917500e-03 + + 1.7898949980735779e-01 -7.3634162545204163e-02 + <_> + + 0 -1 1224 3.8189089391380548e-03 + + 9.6640147268772125e-02 -1.2615419924259186e-01 + <_> + + 0 -1 1225 -6.1400169506669044e-03 + + -2.8025910258293152e-01 4.8952069133520126e-02 + <_> + + 0 -1 1226 4.6048378571867943e-03 + + -3.5297919064760208e-02 3.6271721124649048e-01 + <_> + + 0 -1 1227 6.9598153233528137e-02 + + 2.8236450627446175e-02 -4.7523179650306702e-01 + <_> + + 0 -1 1228 8.2954921526834369e-04 + + 6.5010666847229004e-02 -1.9608500599861145e-01 + <_> + + 0 -1 1229 1.0073450393974781e-02 + + 2.4091430008411407e-02 -5.2702528238296509e-01 + <_> + + 0 -1 1230 -4.9964170902967453e-02 + + 2.7060431241989136e-01 -5.2939768880605698e-02 + <_> + + 0 -1 1231 -2.3425720632076263e-02 + + -6.5538042783737183e-01 2.0399950444698334e-02 + <_> + + 0 -1 1232 4.5370758743956685e-04 + + -1.0145729780197144e-01 1.2575489282608032e-01 + <_> + + 0 -1 1233 -9.4329239800572395e-04 + + -2.3677830398082733e-01 5.2147369831800461e-02 + <_> + + 0 -1 1234 -2.5503130163997412e-03 + + 1.8695800006389618e-01 -6.4383536577224731e-02 + <_> + + 0 -1 1235 -2.1031149663031101e-03 + + -4.0381109714508057e-01 2.8763780370354652e-02 + <_> + + 0 -1 1236 2.3942890111356974e-03 + + -5.8961909264326096e-02 2.0151209831237793e-01 + <_> + + 0 -1 1237 3.4859919105656445e-04 + + -1.1594740301370621e-01 1.1559849977493286e-01 + <_> + + 0 -1 1238 6.5279641421511769e-04 + + -9.6583247184753418e-02 1.4546130597591400e-01 + <_> + + 0 -1 1239 6.6208152566105127e-04 + + 5.5666640400886536e-02 -2.3408170044422150e-01 + <_> + + 0 -1 1240 -1.1246719956398010e-01 + + -7.2129100561141968e-01 1.6700809821486473e-02 + <_> + + 0 -1 1241 2.4760260712355375e-03 + + -7.0752441883087158e-02 1.6832010447978973e-01 + <_> + + 0 -1 1242 -8.7723489850759506e-03 + + -4.8666760325431824e-01 2.6006119325757027e-02 + <_> + + 0 -1 1243 2.8840279206633568e-02 + + 3.3308699727058411e-02 -3.4549170732498169e-01 + <_> + + 0 -1 1244 4.7115320921875536e-04 + + 5.8610469102859497e-02 -2.1334120631217957e-01 + <_> + + 0 -1 1245 -7.5157210230827332e-03 + + 3.7866720557212830e-01 -3.6307640373706818e-02 + <_> + + 0 -1 1246 -1.7479779489804059e-04 + + -1.8687920272350311e-01 7.0380441844463348e-02 + <_> + + 0 -1 1247 6.9826189428567886e-03 + + -7.5376212596893311e-02 1.8541449308395386e-01 + <_> + + 0 -1 1248 -2.5053499266505241e-03 + + -4.7345471382141113e-01 2.6765290647745132e-02 + <_> + + 0 -1 1249 6.5240712137892842e-04 + + -1.1398679763078690e-01 1.1460109800100327e-01 + <_> + 153 + -1.5120370388031006e+00 + + <_> + + 0 -1 1250 2.7968829497694969e-02 + + -2.4054290354251862e-01 3.3976718783378601e-01 + <_> + + 0 -1 1251 4.7484100796282291e-03 + + -1.8598410487174988e-01 2.6523759961128235e-01 + <_> + + 0 -1 1252 -9.6774380654096603e-03 + + 1.3574579358100891e-01 -3.1734740734100342e-01 + <_> + + 0 -1 1253 1.0649940231814981e-03 + + -5.0356131792068481e-01 7.0383183658123016e-02 + <_> + + 0 -1 1254 3.0151519458740950e-03 + + -1.7585769295692444e-01 1.6750140488147736e-01 + <_> + + 0 -1 1255 7.6821137918159366e-04 + + -2.3158560693264008e-01 1.2748460471630096e-01 + <_> + + 0 -1 1256 -5.6622780859470367e-02 + + 3.0103230476379395e-01 -1.1525429785251617e-01 + <_> + + 0 -1 1257 4.7889677807688713e-03 + + -6.8797349929809570e-02 3.5774651169776917e-01 + <_> + + 0 -1 1258 3.7908130325376987e-03 + + 1.1250580102205276e-01 -2.3389840126037598e-01 + <_> + + 0 -1 1259 -3.6302749067544937e-03 + + -2.7425950765609741e-01 6.0180071741342545e-02 + <_> + + 0 -1 1260 1.4986160211265087e-02 + + 5.8370150625705719e-02 -3.5088211297988892e-01 + <_> + + 0 -1 1261 6.1338639352470636e-04 + + -1.0045500099658966e-01 1.8004140257835388e-01 + <_> + + 0 -1 1262 1.7827099654823542e-03 + + -5.8504570275545120e-02 2.8165730834007263e-01 + <_> + + 0 -1 1263 1.0279649868607521e-03 + + 4.6049151569604874e-02 -4.1633561253547668e-01 + <_> + + 0 -1 1264 -1.4470520000031684e-05 + + 9.7594477236270905e-02 -1.7005239427089691e-01 + <_> + + 0 -1 1265 7.2919862577691674e-04 + + -8.9277692139148712e-02 1.9683800637722015e-01 + <_> + + 0 -1 1266 -1.2752750189974904e-03 + + -2.1324349939823151e-01 7.7781319618225098e-02 + <_> + + 0 -1 1267 2.7510570362210274e-02 + + 9.8059087991714478e-02 -1.8463979661464691e-01 + <_> + + 0 -1 1268 3.9082998409867287e-03 + + -9.8240077495574951e-02 1.7902830243110657e-01 + <_> + + 0 -1 1269 2.8285238659009337e-04 + + 6.4882382750511169e-02 -2.5903809070587158e-01 + <_> + + 0 -1 1270 5.8698928914964199e-03 + + -4.8436500132083893e-02 3.5584059357643127e-01 + <_> + + 0 -1 1271 5.2106438670307398e-04 + + 6.4200893044471741e-02 -2.4268729984760284e-01 + <_> + + 0 -1 1272 -3.8013618905097246e-03 + + 3.1349530816078186e-01 -4.9372490495443344e-02 + <_> + + 0 -1 1273 -3.5830549895763397e-03 + + -1.9015640020370483e-01 8.5928887128829956e-02 + <_> + + 0 -1 1274 7.3326388373970985e-03 + + -8.7244078516960144e-02 1.8596029281616211e-01 + <_> + + 0 -1 1275 6.8118958733975887e-04 + + 9.0353183448314667e-02 -1.7380879819393158e-01 + <_> + + 0 -1 1276 -2.4127468932420015e-03 + + 2.6583871245384216e-01 -6.2018260359764099e-02 + <_> + + 0 -1 1277 4.4389287941157818e-03 + + 3.8672439754009247e-02 -4.4039198756217957e-01 + <_> + + 0 -1 1278 2.9394390367087908e-05 + + -1.3116660714149475e-01 1.2389960139989853e-01 + <_> + + 0 -1 1279 5.2613918669521809e-03 + + -5.4326139390468597e-02 3.1434679031372070e-01 + <_> + + 0 -1 1280 2.3712380789220333e-03 + + 3.5234931856393814e-02 -4.5936021208763123e-01 + <_> + + 0 -1 1281 -2.4774149060249329e-03 + + -3.2579651474952698e-01 4.1676308959722519e-02 + <_> + + 0 -1 1282 5.1308068213984370e-04 + + -9.8032839596271515e-02 1.5209600329399109e-01 + <_> + + 0 -1 1283 -7.6761870877817273e-04 + + -2.0944289863109589e-01 6.9563657045364380e-02 + <_> + + 0 -1 1284 4.1551832109689713e-03 + + -5.9142418205738068e-02 2.4788859486579895e-01 + <_> + + 0 -1 1285 1.4315149746835232e-02 + + 2.4713350459933281e-02 -6.2663692235946655e-01 + <_> + + 0 -1 1286 8.9347898028790951e-04 + + -1.3387380540370941e-01 1.0626660287380219e-01 + <_> + + 0 -1 1287 -5.8425782481208444e-04 + + -2.1583810448646545e-01 6.7552872002124786e-02 + <_> + + 0 -1 1288 8.9712149929255247e-04 + + -1.5998089313507080e-01 9.6859596669673920e-02 + <_> + + 0 -1 1289 -4.4576660729944706e-03 + + -4.6839779615402222e-01 3.4481108188629150e-02 + <_> + + 0 -1 1290 1.6316650435328484e-02 + + 1.6176480799913406e-02 -7.6990699768066406e-01 + <_> + + 0 -1 1291 -1.9581869710236788e-03 + + 2.3423190414905548e-01 -6.3605003058910370e-02 + <_> + + 0 -1 1292 2.9628631472587585e-01 + + 3.8007281720638275e-02 -3.8991358876228333e-01 + <_> + + 0 -1 1293 -9.1676972806453705e-04 + + 1.2086489796638489e-01 -1.0912480205297470e-01 + <_> + + 0 -1 1294 -2.5543299852870405e-04 + + -1.8755780160427094e-01 7.1104221045970917e-02 + <_> + + 0 -1 1295 8.2945115864276886e-03 + + -3.9912570267915726e-02 3.3551681041717529e-01 + <_> + + 0 -1 1296 -5.8387689292430878e-02 + + -3.3475118875503540e-01 4.1011139750480652e-02 + <_> + + 0 -1 1297 1.0927469702437520e-03 + + -8.3243489265441895e-02 1.6046769917011261e-01 + <_> + + 0 -1 1298 1.0653319768607616e-03 + + -1.1920040100812912e-01 1.0561779886484146e-01 + <_> + + 0 -1 1299 -3.5323720425367355e-02 + + 2.8399449586868286e-01 -4.7650910913944244e-02 + <_> + + 0 -1 1300 6.7976478021591902e-04 + + 5.9223521500825882e-02 -2.2741270065307617e-01 + <_> + + 0 -1 1301 -2.4810519069433212e-02 + + -6.5788549184799194e-01 1.8828939646482468e-02 + <_> + + 0 -1 1302 4.5880349352955818e-03 + + -5.0799869000911713e-02 2.6886260509490967e-01 + <_> + + 0 -1 1303 3.9034360088407993e-03 + + -5.9183020144701004e-02 2.2644530236721039e-01 + <_> + + 0 -1 1304 1.2360659986734390e-01 + + 2.2052299231290817e-02 -6.7844098806381226e-01 + <_> + + 0 -1 1305 -3.7856408744119108e-04 + + -2.1715499460697174e-01 5.7522300630807877e-02 + <_> + + 0 -1 1306 2.8562229126691818e-02 + + -3.4095268696546555e-02 4.2474791407585144e-01 + <_> + + 0 -1 1307 2.2348840720951557e-03 + + -3.5655528306961060e-02 3.5050040483474731e-01 + <_> + + 0 -1 1308 1.9211059436202049e-02 + + 2.5078350678086281e-02 -5.9314918518066406e-01 + <_> + + 0 -1 1309 1.5611639618873596e-01 + + 2.3612640798091888e-02 -4.8740550875663757e-01 + <_> + + 0 -1 1310 -1.2261980446055532e-03 + + -3.0421718955039978e-01 3.9526391774415970e-02 + <_> + + 0 -1 1311 3.6561759188771248e-03 + + -7.7627539634704590e-02 2.0262609422206879e-01 + <_> + + 0 -1 1312 1.1567790061235428e-03 + + 5.5682398378849030e-02 -2.4368490278720856e-01 + <_> + + 0 -1 1313 6.2764538452029228e-03 + + -6.4452603459358215e-02 2.1183019876480103e-01 + <_> + + 0 -1 1314 1.2091239914298058e-02 + + 2.0667979493737221e-02 -6.2231677770614624e-01 + <_> + + 0 -1 1315 3.7568950210697949e-04 + + 7.3670476675033569e-02 -1.7809109389781952e-01 + <_> + + 0 -1 1316 3.8157668896019459e-03 + + 3.3845711499452591e-02 -3.6262959241867065e-01 + <_> + + 0 -1 1317 -1.3252210337668657e-03 + + 1.4732490479946136e-01 -8.1727422773838043e-02 + <_> + + 0 -1 1318 2.1575710270553827e-03 + + -6.8624198436737061e-02 1.7562319338321686e-01 + <_> + + 0 -1 1319 -6.4548188820481300e-03 + + -5.8159267902374268e-01 2.3020049557089806e-02 + <_> + + 0 -1 1320 -8.1042833626270294e-03 + + -3.5549208521842957e-01 3.5372331738471985e-02 + <_> + + 0 -1 1321 1.6489460540469736e-04 + + 7.4472688138484955e-02 -1.5718360245227814e-01 + <_> + + 0 -1 1322 -1.9494029693305492e-03 + + 3.5157081484794617e-01 -3.6213818937540054e-02 + <_> + + 0 -1 1323 -1.5267659910023212e-04 + + -1.4115719497203827e-01 8.4802761673927307e-02 + <_> + + 0 -1 1324 2.3890420794487000e-02 + + 1.9317669793963432e-02 -6.3186031579971313e-01 + <_> + + 0 -1 1325 -4.4950367882847786e-03 + + 2.1254129707813263e-01 -5.9143088757991791e-02 + <_> + + 0 -1 1326 2.8725271113216877e-03 + + 3.2794039696455002e-02 -3.9505231380462646e-01 + <_> + + 0 -1 1327 2.0885460544377565e-03 + + -8.5443787276744843e-02 1.4347669482231140e-01 + <_> + + 0 -1 1328 -4.4343829154968262e-01 + + -4.0052318572998047e-01 2.9428049921989441e-02 + <_> + + 0 -1 1329 2.0199170336127281e-02 + + 4.0000550448894501e-02 -3.1763339042663574e-01 + <_> + + 0 -1 1330 1.4570879749953747e-02 + + 1.3662800192832947e-02 -8.6441951990127563e-01 + <_> + + 0 -1 1331 -3.8080150261521339e-03 + + 4.0930721163749695e-01 -3.3838968724012375e-02 + <_> + + 0 -1 1332 1.0009920224547386e-03 + + -8.2600250840187073e-02 1.3928790390491486e-01 + <_> + + 0 -1 1333 1.1500980472192168e-03 + + 6.9677546620368958e-02 -1.7433060705661774e-01 + <_> + + 0 -1 1334 3.4720861003734171e-04 + + 6.6659383475780487e-02 -1.7403809726238251e-01 + <_> + + 0 -1 1335 2.7565560303628445e-03 + + -2.9285680502653122e-02 4.0243569016456604e-01 + <_> + + 0 -1 1336 -2.4124220013618469e-02 + + -3.2424208521842957e-01 3.7330508232116699e-02 + <_> + + 0 -1 1337 -1.3989120721817017e-01 + + -6.5967488288879395e-01 1.7929619178175926e-02 + <_> + + 0 -1 1338 3.0997680500149727e-02 + + 1.4100589789450169e-02 -6.9532638788223267e-01 + <_> + + 0 -1 1339 4.6191760338842869e-04 + + -6.7944146692752838e-02 1.8066139519214630e-01 + <_> + + 0 -1 1340 3.4264490008354187e-02 + + 2.2298639640212059e-02 -5.8638918399810791e-01 + <_> + + 0 -1 1341 3.9756381884217262e-03 + + -4.1803721338510513e-02 3.1669101119041443e-01 + <_> + + 0 -1 1342 -3.4192908788099885e-04 + + -1.5810790657997131e-01 7.7484056353569031e-02 + <_> + + 0 -1 1343 7.1672953665256500e-02 + + -2.3302769288420677e-02 5.2465027570724487e-01 + <_> + + 0 -1 1344 7.1812322130426764e-04 + + 4.8268780112266541e-02 -2.7771729230880737e-01 + <_> + + 0 -1 1345 -1.8881190335378051e-03 + + 8.3184987306594849e-02 -1.4802010357379913e-01 + <_> + + 0 -1 1346 -1.2498029973357916e-03 + + 2.5329118967056274e-01 -4.9769390374422073e-02 + <_> + + 0 -1 1347 -1.2756100296974182e-01 + + -6.7970567941665649e-01 2.0871700718998909e-02 + <_> + + 0 -1 1348 -1.4621549780713394e-05 + + 7.9338513314723969e-02 -1.5043739974498749e-01 + <_> + + 0 -1 1349 3.5788679961115122e-03 + + -5.5469110608100891e-02 2.4075509607791901e-01 + <_> + + 0 -1 1350 9.4902152195572853e-03 + + 2.8637239709496498e-02 -5.3680288791656494e-01 + <_> + + 0 -1 1351 1.0283050127327442e-02 + + 1.1550529859960079e-02 -7.7501267194747925e-01 + <_> + + 0 -1 1352 -4.2507290840148926e-02 + + -8.8770490884780884e-01 9.7261751070618629e-03 + <_> + + 0 -1 1353 3.6155930138193071e-04 + + 6.4407013356685638e-02 -1.7109510302543640e-01 + <_> + + 0 -1 1354 -3.4245628863573074e-02 + + 2.4231609702110291e-01 -4.7188870608806610e-02 + <_> + + 0 -1 1355 -1.2806710600852966e-01 + + -5.4869401454925537e-01 2.1854300051927567e-02 + <_> + + 0 -1 1356 5.3918339312076569e-02 + + -2.5415059179067612e-02 4.8263218998908997e-01 + <_> + + 0 -1 1357 -3.7711810320615768e-02 + + 1.4176939427852631e-01 -8.8871710002422333e-02 + <_> + + 0 -1 1358 -2.8310909867286682e-01 + + -6.4925712347030640e-01 2.0563820376992226e-02 + <_> + + 0 -1 1359 -1.1926019564270973e-02 + + -2.1756759285926819e-01 5.1851660013198853e-02 + <_> + + 0 -1 1360 3.7750680348835886e-04 + + 7.2340622544288635e-02 -1.6360169649124146e-01 + <_> + + 0 -1 1361 1.5865910798311234e-02 + + -7.9940237104892731e-02 1.6453659534454346e-01 + <_> + + 0 -1 1362 7.1175709366798401e-02 + + 3.1589020043611526e-02 -4.1988191008567810e-01 + <_> + + 0 -1 1363 5.8520520105957985e-03 + + 2.3279080167412758e-02 -4.8604270815849304e-01 + <_> + + 0 -1 1364 -1.3924130471423268e-03 + + 1.6908380389213562e-01 -7.3783926665782928e-02 + <_> + + 0 -1 1365 -1.8412459758110344e-04 + + 1.2232059985399246e-01 -1.0313989967107773e-01 + <_> + + 0 -1 1366 2.2130980505608022e-04 + + -8.1976376473903656e-02 1.6332870721817017e-01 + <_> + + 0 -1 1367 2.0723740453831851e-04 + + 9.2730201780796051e-02 -1.3733580708503723e-01 + <_> + + 0 -1 1368 -3.8736319402232766e-04 + + -2.0004619657993317e-01 8.4838382899761200e-02 + <_> + + 0 -1 1369 3.2468559220433235e-03 + + -5.6439258158206940e-02 2.2364979982376099e-01 + <_> + + 0 -1 1370 9.3086768174543977e-04 + + 3.1926579773426056e-02 -3.9701279997825623e-01 + <_> + + 0 -1 1371 1.0306099429726601e-03 + + -6.0154888778924942e-02 2.0189760625362396e-01 + <_> + + 0 -1 1372 -7.6027261093258858e-04 + + 1.4901119470596313e-01 -9.9665373563766479e-02 + <_> + + 0 -1 1373 -4.0442569297738373e-04 + + -1.9113409519195557e-01 7.4125148355960846e-02 + <_> + + 0 -1 1374 -4.7783120535314083e-03 + + -3.5730269551277161e-01 3.6531679332256317e-02 + <_> + + 0 -1 1375 -7.7672587940469384e-04 + + 1.0242869704961777e-01 -1.2974999845027924e-01 + <_> + + 0 -1 1376 -5.7417969219386578e-03 + + -1.6698950529098511e-01 7.0111282169818878e-02 + <_> + + 0 -1 1377 -1.0879320092499256e-02 + + 4.4120571017265320e-01 -2.9255589470267296e-02 + <_> + + 0 -1 1378 6.4163492061197758e-04 + + -1.1195279657840729e-01 1.0681179910898209e-01 + <_> + + 0 -1 1379 1.8341830000281334e-02 + + 1.6387680172920227e-01 -8.0189116299152374e-02 + <_> + + 0 -1 1380 -1.5051739756017923e-03 + + -2.2313259541988373e-01 6.1541710048913956e-02 + <_> + + 0 -1 1381 4.4345208443701267e-03 + + -6.6646136343479156e-02 2.2299060225486755e-01 + <_> + + 0 -1 1382 -1.4749550246051513e-05 + + 1.1597889661788940e-01 -1.0377810150384903e-01 + <_> + + 0 -1 1383 -2.6539659593254328e-03 + + 1.3116030395030975e-01 -8.6488783359527588e-02 + <_> + + 0 -1 1384 2.7743550017476082e-03 + + 4.1064068675041199e-02 -3.1225061416625977e-01 + <_> + + 0 -1 1385 1.1590829817578197e-03 + + 6.4309477806091309e-02 -1.7413079738616943e-01 + <_> + + 0 -1 1386 9.2315068468451500e-04 + + -8.2974001765251160e-02 1.4439080655574799e-01 + <_> + + 0 -1 1387 -8.2323597744107246e-03 + + 3.0380389094352722e-01 -4.1229110211133957e-02 + <_> + + 0 -1 1388 3.5314110573381186e-03 + + 3.9511259645223618e-02 -3.3097168803215027e-01 + <_> + + 0 -1 1389 5.7490761391818523e-03 + + 1.9821660593152046e-02 -5.8780592679977417e-01 + <_> + + 0 -1 1390 7.8584970906376839e-03 + + -4.9952238798141479e-02 2.7249589562416077e-01 + <_> + + 0 -1 1391 -1.4245980310079176e-05 + + 8.8010340929031372e-02 -1.3228349387645721e-01 + <_> + + 0 -1 1392 6.9364177761599422e-04 + + -6.7391887307167053e-02 1.7463630437850952e-01 + <_> + + 0 -1 1393 -2.9837749898433685e-02 + + -5.1709812879562378e-01 2.4871410802006721e-02 + <_> + + 0 -1 1394 7.1383598260581493e-03 + + 6.7430503666400909e-02 -1.9037249684333801e-01 + <_> + + 0 -1 1395 1.7582569271326065e-02 + + -3.6622371524572372e-02 3.5335469245910645e-01 + <_> + + 0 -1 1396 -1.2527840444818139e-03 + + -2.1730649471282959e-01 6.1200018972158432e-02 + <_> + + 0 -1 1397 7.4575009057298303e-04 + + -6.4467661082744598e-02 1.9775040447711945e-01 + <_> + + 0 -1 1398 -7.2683871258050203e-04 + + -1.7233370244503021e-01 7.1719951927661896e-02 + <_> + + 0 -1 1399 2.6301289908587933e-03 + + -3.9274338632822037e-02 3.3066290616989136e-01 + <_> + + 0 -1 1400 -1.4553769688063767e-05 + + 7.9698577523231506e-02 -1.7852419614791870e-01 + <_> + + 0 -1 1401 -4.5518940896727145e-04 + + -1.6662250459194183e-01 7.5660362839698792e-02 + <_> + + 0 -1 1402 -4.0261688991449773e-04 + + -1.4214369654655457e-01 8.1017293035984039e-02 + <_> + 161 + -1.4741109609603882e+00 + + <_> + + 0 -1 1403 -8.3439666777849197e-03 + + 3.1942158937454224e-01 -2.6766449213027954e-01 + <_> + + 0 -1 1404 7.8073277836665511e-04 + + -3.4852638840675354e-01 1.3628880679607391e-01 + <_> + + 0 -1 1405 8.6505862418562174e-04 + + -2.5323680043220520e-01 1.7417639493942261e-01 + <_> + + 0 -1 1406 -2.0879819930996746e-04 + + 8.8503703474998474e-02 -3.6038509011268616e-01 + <_> + + 0 -1 1407 -7.4667241424322128e-03 + + 1.6120630502700806e-01 -1.7366449534893036e-01 + <_> + + 0 -1 1408 -6.9383758818730712e-04 + + 9.6873007714748383e-02 -2.6793479919433594e-01 + <_> + + 0 -1 1409 -4.7926991101121530e-05 + + 9.1756246984004974e-02 -2.6212221384048462e-01 + <_> + + 0 -1 1410 -1.5861799474805593e-03 + + -6.1400872468948364e-01 -7.4168378487229347e-03 + <_> + + 0 -1 1411 4.4573731429409236e-05 + + -1.4841860532760620e-01 1.3855740427970886e-01 + <_> + + 0 -1 1412 5.0104141701012850e-04 + + 5.9088941663503647e-02 -2.9596069455146790e-01 + <_> + + 0 -1 1413 -4.7243628650903702e-03 + + 1.7092029750347137e-01 -1.0624700039625168e-01 + <_> + + 0 -1 1414 3.9171050302684307e-03 + + 8.8605202734470367e-02 -2.2775200009346008e-01 + <_> + + 0 -1 1415 8.8675727602094412e-04 + + -1.6839639842510223e-01 1.1958680301904678e-01 + <_> + + 0 -1 1416 -4.2634559795260429e-03 + + -3.3663240075111389e-01 4.7266270965337753e-02 + <_> + + 0 -1 1417 6.8006501533091068e-03 + + -5.9237081557512283e-02 3.1675300002098083e-01 + <_> + + 0 -1 1418 -1.3168989680707455e-02 + + 3.7162569165229797e-01 -4.2714890092611313e-02 + <_> + + 0 -1 1419 7.3881301796063781e-04 + + 5.9158101677894592e-02 -3.0953711271286011e-01 + <_> + + 0 -1 1420 1.7939460230991244e-03 + + -8.4615282714366913e-02 2.0452530682086945e-01 + <_> + + 0 -1 1421 1.6819390002638102e-03 + + -8.6703762412071228e-02 2.0580549538135529e-01 + <_> + + 0 -1 1422 -2.5033599231392145e-03 + + -4.3473190069198608e-01 3.8707830011844635e-02 + <_> + + 0 -1 1423 3.3658559550531209e-04 + + -1.0717310011386871e-01 1.5238380432128906e-01 + <_> + + 0 -1 1424 1.3037879951298237e-02 + + 4.4682659208774567e-02 -4.0395650267601013e-01 + <_> + + 0 -1 1425 1.3743729505222291e-04 + + -2.1432510018348694e-01 6.8643413484096527e-02 + <_> + + 0 -1 1426 3.7178888916969299e-01 + + 3.4502930939197540e-02 -4.5998379588127136e-01 + <_> + + 0 -1 1427 -7.1649150922894478e-03 + + 2.6640880107879639e-01 -5.4557949304580688e-02 + <_> + + 0 -1 1428 -7.1985478280112147e-04 + + -1.4415690302848816e-01 9.8254486918449402e-02 + <_> + + 0 -1 1429 1.6854539513587952e-02 + + 2.8428679332137108e-02 -4.5227599143981934e-01 + <_> + + 0 -1 1430 1.3624729588627815e-02 + + -6.0474298894405365e-02 2.2715990245342255e-01 + <_> + + 0 -1 1431 1.3620140030980110e-02 + + 7.9177603125572205e-02 -1.8104650080204010e-01 + <_> + + 0 -1 1432 -4.4976719655096531e-03 + + 2.1300099790096283e-01 -7.1392573416233063e-02 + <_> + + 0 -1 1433 7.1611418388783932e-04 + + -9.4237379729747772e-02 1.5830449759960175e-01 + <_> + + 0 -1 1434 7.0651061832904816e-04 + + 4.8840671777725220e-02 -2.9152449965476990e-01 + <_> + + 0 -1 1435 -3.1002271175384521e-01 + + -3.8511890172958374e-01 3.4369651228189468e-02 + <_> + + 0 -1 1436 4.3721711263060570e-03 + + -4.6880301088094711e-02 2.9952910542488098e-01 + <_> + + 0 -1 1437 -1.4383009634912014e-02 + + -4.5463728904724121e-01 3.4184519201517105e-02 + <_> + + 0 -1 1438 -3.7763800937682390e-03 + + -5.6709027290344238e-01 2.1684719249606133e-02 + <_> + + 0 -1 1439 -3.4393940586596727e-03 + + 2.8183689713478088e-01 -5.2640009671449661e-02 + <_> + + 0 -1 1440 -3.5846829414367676e-03 + + -2.9227399826049805e-01 5.2231520414352417e-02 + <_> + + 0 -1 1441 3.6200750619173050e-03 + + -5.3378768265247345e-02 2.6364138722419739e-01 + <_> + + 0 -1 1442 7.6435408554971218e-03 + + 3.6897629499435425e-02 -3.9242339134216309e-01 + <_> + + 0 -1 1443 3.5417820326983929e-03 + + 3.5689998418092728e-02 -3.5601079463958740e-01 + <_> + + 0 -1 1444 -2.4041049182415009e-03 + + 1.6313059628009796e-01 -8.9239962399005890e-02 + <_> + + 0 -1 1445 6.5479031763970852e-03 + + 3.6708708852529526e-02 -3.4187689423561096e-01 + <_> + + 0 -1 1446 -1.2350000441074371e-02 + + 2.6157799363136292e-01 -5.2475821226835251e-02 + <_> + + 0 -1 1447 1.4726500012329780e-05 + + -1.7869140207767487e-01 7.7807463705539703e-02 + <_> + + 0 -1 1448 -2.1563619375228882e-02 + + -6.3926118612289429e-01 1.9050199538469315e-02 + <_> + + 0 -1 1449 5.0762481987476349e-03 + + -5.1665481179952621e-02 2.9126250743865967e-01 + <_> + + 0 -1 1450 -5.9531949460506439e-02 + + -7.5291550159454346e-01 2.0238230004906654e-02 + <_> + + 0 -1 1451 -1.6808489337563515e-02 + + -4.2833268642425537e-01 2.5997729972004890e-02 + <_> + + 0 -1 1452 3.4431689418852329e-03 + + -5.4912570863962173e-02 2.4233500659465790e-01 + <_> + + 0 -1 1453 -1.0451589478179812e-03 + + -2.6243540644645691e-01 4.5748569071292877e-02 + <_> + + 0 -1 1454 -4.8333409358747303e-04 + + 8.9791953563690186e-02 -1.2892110645771027e-01 + <_> + + 0 -1 1455 -4.7575961798429489e-03 + + -3.1868740916252136e-01 3.6020528525114059e-02 + <_> + + 0 -1 1456 -1.0407149791717529e-01 + + 5.1398742198944092e-01 -2.3598119616508484e-02 + <_> + + 0 -1 1457 9.6292654052376747e-03 + + -4.7965578734874725e-02 2.1790429949760437e-01 + <_> + + 0 -1 1458 5.9226430021226406e-03 + + 6.4275130629539490e-02 -1.8210859596729279e-01 + <_> + + 0 -1 1459 1.6943799331784248e-02 + + -3.7509348243474960e-02 3.1458830833435059e-01 + <_> + + 0 -1 1460 -6.5468349494040012e-03 + + -1.5812429785728455e-01 9.0520747005939484e-02 + <_> + + 0 -1 1461 9.4754863530397415e-03 + + 4.8995878547430038e-02 -2.7853849530220032e-01 + <_> + + 0 -1 1462 -4.9254479818046093e-03 + + 3.1902191042900085e-01 -4.5609470456838608e-02 + <_> + + 0 -1 1463 -9.4199541490525007e-04 + + -1.6472989320755005e-01 7.3966227471828461e-02 + <_> + + 0 -1 1464 7.0046652108430862e-03 + + -3.6342341452836990e-02 3.3846628665924072e-01 + <_> + + 0 -1 1465 -9.1483298456296325e-04 + + 1.0460989922285080e-01 -1.1206439882516861e-01 + <_> + + 0 -1 1466 -1.8404760339763016e-04 + + 1.4215709269046783e-01 -8.7627373635768890e-02 + <_> + + 0 -1 1467 -3.1692520133219659e-04 + + -1.6067850589752197e-01 7.0096842944622040e-02 + <_> + + 0 -1 1468 2.3108009248971939e-02 + + -5.3784500807523727e-02 2.0780019462108612e-01 + <_> + + 0 -1 1469 6.3212551176548004e-03 + + 2.9342239722609520e-02 -3.8378500938415527e-01 + <_> + + 0 -1 1470 7.3698158375918865e-03 + + -4.1625689715147018e-02 2.6526549458503723e-01 + <_> + + 0 -1 1471 3.3730969298630953e-03 + + 3.7753321230411530e-02 -3.0138298869132996e-01 + <_> + + 0 -1 1472 -6.4016957767307758e-03 + + 2.1839860081672668e-01 -5.4551340639591217e-02 + <_> + + 0 -1 1473 1.3553920201957226e-02 + + 2.8121260926127434e-02 -4.3601170182228088e-01 + <_> + + 0 -1 1474 -6.7636291496455669e-03 + + -1.6322250664234161e-01 6.7339658737182617e-02 + <_> + + 0 -1 1475 -1.3078070478513837e-03 + + 1.2315399944782257e-01 -1.0096319764852524e-01 + <_> + + 0 -1 1476 -7.6282368972897530e-03 + + 2.5165349245071411e-01 -5.0460711121559143e-02 + <_> + + 0 -1 1477 7.9994397237896919e-03 + + 7.3020651936531067e-02 -1.8877799808979034e-01 + <_> + + 0 -1 1478 -3.1321209389716387e-03 + + 2.7653199434280396e-01 -4.3276838958263397e-02 + <_> + + 0 -1 1479 -4.0931310504674911e-02 + + -6.5518248081207275e-01 1.8600920215249062e-02 + <_> + + 0 -1 1480 7.0344978012144566e-03 + + 2.1914770826697350e-02 -4.8595818877220154e-01 + <_> + + 0 -1 1481 -2.5299859698861837e-03 + + 1.4030769467353821e-01 -8.0566473305225372e-02 + <_> + + 0 -1 1482 3.8867890834808350e-03 + + -8.9075699448585510e-02 1.6832409799098969e-01 + <_> + + 0 -1 1483 3.8210590719245374e-04 + + 6.5200872719287872e-02 -1.8599529564380646e-01 + <_> + + 0 -1 1484 1.0954789817333221e-01 + + 1.5036020427942276e-02 -8.6908358335494995e-01 + <_> + + 0 -1 1485 -1.4177490083966404e-04 + + -1.4669269323348999e-01 7.9050153493881226e-02 + <_> + + 0 -1 1486 2.0990408957004547e-03 + + -4.6489678323268890e-02 2.3045249283313751e-01 + <_> + + 0 -1 1487 -2.3089480237103999e-04 + + -1.6784009337425232e-01 6.9773100316524506e-02 + <_> + + 0 -1 1488 -4.3103471398353577e-04 + + 8.1758759915828705e-02 -1.2939240038394928e-01 + <_> + + 0 -1 1489 -2.9572288622148335e-04 + + -1.9068230688571930e-01 5.8420080691576004e-02 + <_> + + 0 -1 1490 -4.0046018548309803e-03 + + 1.2948529422283173e-01 -8.1599622964859009e-02 + <_> + + 0 -1 1491 1.4935520084691234e-05 + + -1.3364720344543457e-01 9.8664022982120514e-02 + <_> + + 0 -1 1492 5.7824450777843595e-04 + + 5.9095639735460281e-02 -1.8318089842796326e-01 + <_> + + 0 -1 1493 1.3251320458948612e-02 + + -7.1488671004772186e-02 1.5635989606380463e-01 + <_> + + 0 -1 1494 7.1273561843554489e-06 + + -1.2283089756965637e-01 9.7752511501312256e-02 + <_> + + 0 -1 1495 1.4193489914759994e-03 + + -8.1696748733520508e-02 1.3701570034027100e-01 + <_> + + 0 -1 1496 -8.0165416002273560e-03 + + 2.4697229266166687e-01 -5.6527040898799896e-02 + <_> + + 0 -1 1497 -2.3803471121937037e-03 + + -3.7901589274406433e-01 3.4532550722360611e-02 + <_> + + 0 -1 1498 -4.8633730039000511e-03 + + 6.5441012382507324e-01 -1.9296199083328247e-02 + <_> + + 0 -1 1499 -1.4388219824468251e-05 + + 7.5101882219314575e-02 -1.4394460618495941e-01 + <_> + + 0 -1 1500 1.4798780284763779e-05 + + -1.0807389765977859e-01 9.6213810145854950e-02 + <_> + + 0 -1 1501 2.4176139384508133e-02 + + 2.6983680203557014e-02 -4.0708479285240173e-01 + <_> + + 0 -1 1502 -3.9851912297308445e-03 + + 2.1786700189113617e-01 -5.4170310497283936e-02 + <_> + + 0 -1 1503 -2.5377580896019936e-03 + + -1.5314599871635437e-01 8.8059239089488983e-02 + <_> + + 0 -1 1504 2.1663319785147905e-03 + + 1.0252720117568970e-01 -1.2039250135421753e-01 + <_> + + 0 -1 1505 3.5593929351307452e-04 + + -8.2267768681049347e-02 1.3228890299797058e-01 + <_> + + 0 -1 1506 1.1394560569897294e-03 + + -8.6393490433692932e-02 1.5693899989128113e-01 + <_> + + 0 -1 1507 5.5563818663358688e-02 + + 1.7108110710978508e-02 -7.0473742485046387e-01 + <_> + + 0 -1 1508 5.5514591932296753e-01 + + 1.3345389626920223e-02 -6.9916892051696777e-01 + <_> + + 0 -1 1509 -4.6235490590333939e-03 + + -2.3983679711818695e-01 3.9515350013971329e-02 + <_> + + 0 -1 1510 -4.5803869143128395e-03 + + 4.2900869250297546e-01 -2.6430539786815643e-02 + <_> + + 0 -1 1511 7.0851319469511509e-03 + + 1.1231079697608948e-01 -1.0711509734392166e-01 + <_> + + 0 -1 1512 -4.0524810901843011e-04 + + -2.5740951299667358e-01 4.6670019626617432e-02 + <_> + + 0 -1 1513 -4.9121538177132607e-03 + + 2.7129280567169189e-01 -4.3966241180896759e-02 + <_> + + 0 -1 1514 -1.9348099827766418e-02 + + -4.0643858909606934e-01 2.9176769778132439e-02 + <_> + + 0 -1 1515 -1.3842330081388354e-03 + + 2.3537209630012512e-01 -5.0227548927068710e-02 + <_> + + 0 -1 1516 6.2752598896622658e-03 + + 2.8113570064306259e-02 -3.9913201332092285e-01 + <_> + + 0 -1 1517 1.4853129869152326e-05 + + -1.0750629752874374e-01 1.0206390172243118e-01 + <_> + + 0 -1 1518 -1.1780710192397237e-03 + + 1.8112790584564209e-01 -5.8998040854930878e-02 + <_> + + 0 -1 1519 -3.2166391611099243e-02 + + -9.8135101795196533e-01 1.1817139573395252e-02 + <_> + + 0 -1 1520 2.8749080374836922e-03 + + 5.0774369388818741e-02 -2.0650039613246918e-01 + <_> + + 0 -1 1521 -3.5098160151392221e-03 + + 1.4354039728641510e-01 -7.8006736934185028e-02 + <_> + + 0 -1 1522 -7.2203627787530422e-03 + + 2.3853950202465057e-01 -4.6176180243492126e-02 + <_> + + 0 -1 1523 2.0837699994444847e-03 + + 2.2801460698246956e-02 -5.0945621728897095e-01 + <_> + + 0 -1 1524 3.6175400018692017e-02 + + 1.4734740369021893e-02 -6.1349362134933472e-01 + <_> + + 0 -1 1525 7.5545758008956909e-03 + + 1.6166130080819130e-02 -5.8863008022308350e-01 + <_> + + 0 -1 1526 -2.6058950461447239e-03 + + 3.6436009407043457e-01 -3.4624300897121429e-02 + <_> + + 0 -1 1527 6.4669351559132338e-04 + + 6.3444733619689941e-02 -1.8953520059585571e-01 + <_> + + 0 -1 1528 -3.1747641041874886e-03 + + 4.2877858877182007e-01 -2.6968790218234062e-02 + <_> + + 0 -1 1529 -2.3839730769395828e-02 + + -3.6871370673179626e-01 3.3688500523567200e-02 + <_> + + 0 -1 1530 1.1973649961873889e-03 + + -6.2898509204387665e-02 1.9179169833660126e-01 + <_> + + 0 -1 1531 4.4593929487746209e-05 + + -1.1022660136222839e-01 1.2159959971904755e-01 + <_> + + 0 -1 1532 9.1575905680656433e-03 + + 2.5353889912366867e-02 -4.9928730726242065e-01 + <_> + + 0 -1 1533 2.3933469783514738e-03 + + 4.8282090574502945e-02 -2.2685450315475464e-01 + <_> + + 0 -1 1534 -1.1994830565527081e-03 + + 1.0886570066213608e-01 -1.0669539868831635e-01 + <_> + + 0 -1 1535 2.1603968925774097e-03 + + -7.6076626777648926e-02 1.6507959365844727e-01 + <_> + + 0 -1 1536 -1.6556339338421822e-02 + + -5.4167211055755615e-01 2.0711649209260941e-02 + <_> + + 0 -1 1537 -8.8350269943475723e-03 + + -3.6710909008979797e-01 2.8870400041341782e-02 + <_> + + 0 -1 1538 -1.4592399566026870e-05 + + 7.8724071383476257e-02 -1.3622610270977020e-01 + <_> + + 0 -1 1539 -1.4897900400683284e-03 + + 1.1436119675636292e-01 -1.0104899853467941e-01 + <_> + + 0 -1 1540 -3.9764028042554855e-03 + + -1.0250560194253922e-01 1.0466060042381287e-01 + <_> + + 0 -1 1541 -7.2657042182981968e-03 + + 2.2982269525527954e-01 -4.5155581086874008e-02 + <_> + + 0 -1 1542 8.9115025475621223e-03 + + 2.9681159183382988e-02 -4.4235008955001831e-01 + <_> + + 0 -1 1543 -1.8145949579775333e-03 + + 2.3911419510841370e-01 -4.6856120228767395e-02 + <_> + + 0 -1 1544 -3.7546321749687195e-02 + + -1.8569689989089966e-01 6.1533749103546143e-02 + <_> + + 0 -1 1545 -1.0010029654949903e-03 + + 1.4361350238323212e-01 -8.6990483105182648e-02 + <_> + + 0 -1 1546 -3.7357229739427567e-03 + + 2.0245459675788879e-01 -6.1167530715465546e-02 + <_> + + 0 -1 1547 -1.4672010365757160e-05 + + 8.8180869817733765e-02 -1.3037009537220001e-01 + <_> + + 0 -1 1548 9.4379713118541986e-05 + + 5.5626530200242996e-02 -2.0025369524955750e-01 + <_> + + 0 -1 1549 1.5706509293522686e-04 + + -9.8335877060890198e-02 1.1518850177526474e-01 + <_> + + 0 -1 1550 -8.1810058327391744e-04 + + -2.1701550483703613e-01 5.2880410104990005e-02 + <_> + + 0 -1 1551 -5.1689259707927704e-02 + + 5.7715278863906860e-01 -1.8761100247502327e-02 + <_> + + 0 -1 1552 -9.0719409286975861e-02 + + -3.6278849840164185e-01 3.6741130053997040e-02 + <_> + + 0 -1 1553 -1.0959040373563766e-02 + + 1.6787180304527283e-01 -6.9725647568702698e-02 + <_> + + 0 -1 1554 3.7122920621186495e-03 + + 6.0360308736562729e-02 -2.0567069947719574e-01 + <_> + + 0 -1 1555 -1.9315730780363083e-02 + + -5.7397401332855225e-01 1.9705319777131081e-02 + <_> + + 0 -1 1556 -2.7051189914345741e-02 + + 3.4983208775520325e-01 -3.6084290593862534e-02 + <_> + + 0 -1 1557 2.1742910146713257e-02 + + 2.2767079994082451e-02 -6.5319198369979858e-01 + <_> + + 0 -1 1558 9.9608592689037323e-02 + + -3.1259559094905853e-02 3.8271111249923706e-01 + <_> + + 0 -1 1559 4.6517839655280113e-03 + + 1.0088030248880386e-01 -1.2396019697189331e-01 + <_> + + 0 -1 1560 -1.4784580343984999e-05 + + 7.9683482646942139e-02 -1.5573020279407501e-01 + <_> + + 0 -1 1561 -1.6718909610062838e-03 + + 1.7077329754829407e-01 -6.7733809351921082e-02 + <_> + + 0 -1 1562 1.4456630196946207e-05 + + -1.0106030106544495e-01 1.1116830259561539e-01 + <_> + + 0 -1 1563 -2.7084909379482269e-03 + + 1.1312720179557800e-01 -1.0880629718303680e-01 + <_> + 159 + -1.3943890333175659e+00 + + <_> + + 0 -1 1564 -2.2686859592795372e-02 + + 2.7316910028457642e-01 -2.7358779311180115e-01 + <_> + + 0 -1 1565 4.2952829971909523e-04 + + -2.5107958912849426e-01 1.5740729868412018e-01 + <_> + + 0 -1 1566 2.5115790776908398e-03 + + -2.2002549469470978e-01 1.5660229325294495e-01 + <_> + + 0 -1 1567 -6.3958892133086920e-04 + + 7.2609938681125641e-02 -3.8278979063034058e-01 + <_> + + 0 -1 1568 2.6575280353426933e-03 + + -1.1523439735174179e-01 2.3414239287376404e-01 + <_> + + 0 -1 1569 -7.5916409492492676e-02 + + 3.2517579197883606e-01 -8.2622267305850983e-02 + <_> + + 0 -1 1570 1.4966350136091933e-05 + + -3.5640290379524231e-01 5.2353590726852417e-02 + <_> + + 0 -1 1571 -1.4678399566037115e-05 + + 1.0198219865560532e-01 -2.2452689707279205e-01 + <_> + + 0 -1 1572 5.2314779168227687e-05 + + -1.7757849395275116e-01 1.0107079893350601e-01 + <_> + + 0 -1 1573 1.4088390162214637e-04 + + -1.5139770507812500e-01 1.3872760534286499e-01 + <_> + + 0 -1 1574 -2.3411789909005165e-02 + + -1.6435989737510681e-01 1.0702139884233475e-01 + <_> + + 0 -1 1575 2.3284659255295992e-03 + + -8.0950729548931122e-02 2.2333970665931702e-01 + <_> + + 0 -1 1576 -3.3611140679568052e-03 + + -4.4329941272735596e-01 3.4489039331674576e-02 + <_> + + 0 -1 1577 5.8458978310227394e-04 + + -1.1083470284938812e-01 1.7215029895305634e-01 + <_> + + 0 -1 1578 -3.3180968603119254e-04 + + 6.9152593612670898e-02 -2.6321241259574890e-01 + <_> + + 0 -1 1579 -8.8515877723693848e-04 + + -3.4764730930328369e-01 4.3258201330900192e-02 + <_> + + 0 -1 1580 1.4169749920256436e-04 + + -1.4600689709186554e-01 1.0149820148944855e-01 + <_> + + 0 -1 1581 1.4851680025458336e-03 + + 2.9983170330524445e-02 -4.1786131262779236e-01 + <_> + + 0 -1 1582 -7.5329327955842018e-04 + + -2.1557639539241791e-01 6.4534209668636322e-02 + <_> + + 0 -1 1583 1.4260539785027504e-02 + + -8.0013327300548553e-02 1.9511990249156952e-01 + <_> + + 0 -1 1584 -1.4687920156575274e-05 + + 9.7121663391590118e-02 -1.3502350449562073e-01 + <_> + + 0 -1 1585 -9.8925074562430382e-03 + + -5.1035261154174805e-01 2.9335800558328629e-02 + <_> + + 0 -1 1586 -1.8316040514037013e-03 + + 3.2676079869270325e-01 -4.5014020055532455e-02 + <_> + + 0 -1 1587 8.6495577124878764e-04 + + -7.7836513519287109e-02 1.8764939904212952e-01 + <_> + + 0 -1 1588 1.4902660250663757e-01 + + 1.9568990916013718e-02 -6.2450677156448364e-01 + <_> + + 0 -1 1589 -1.7126720398664474e-02 + + -1.8141449987888336e-01 7.3048681020736694e-02 + <_> + + 0 -1 1590 -1.7061959952116013e-03 + + 3.1236839294433594e-01 -4.4152028858661652e-02 + <_> + + 0 -1 1591 3.8261809386312962e-03 + + 5.1518529653549194e-02 -2.9330030083656311e-01 + <_> + + 0 -1 1592 3.8093670736998320e-03 + + -7.6707206666469574e-02 1.7574439942836761e-01 + <_> + + 0 -1 1593 -3.4228331060148776e-04 + + -2.3458020389080048e-01 6.1726640909910202e-02 + <_> + + 0 -1 1594 -4.1697870939970016e-02 + + 4.3929129838943481e-01 -3.6892820149660110e-02 + <_> + + 0 -1 1595 1.9080520723946393e-04 + + -1.3488939404487610e-01 9.7168661653995514e-02 + <_> + + 0 -1 1596 2.6400710339657962e-04 + + -1.6539520025253296e-01 7.3270231485366821e-02 + <_> + + 0 -1 1597 7.9839164391160011e-03 + + -3.3527340739965439e-02 3.6535859107971191e-01 + <_> + + 0 -1 1598 -1.4267410151660442e-02 + + 4.6739241480827332e-01 -2.7154419571161270e-02 + <_> + + 0 -1 1599 -9.4726070528849959e-05 + + -1.5017749369144440e-01 8.7657302618026733e-02 + <_> + + 0 -1 1600 -2.9629279742948711e-04 + + -1.6194540262222290e-01 7.3863230645656586e-02 + <_> + + 0 -1 1601 2.3301010951399803e-03 + + -7.9925157129764557e-02 1.5778550505638123e-01 + <_> + + 0 -1 1602 3.6623800406232476e-04 + + -8.7019346654415131e-02 2.0495669543743134e-01 + <_> + + 0 -1 1603 -4.4499669224023819e-02 + + -2.9891410470008850e-01 4.5648001134395599e-02 + <_> + + 0 -1 1604 -6.0768700204789639e-03 + + 2.3746150732040405e-01 -5.3580708801746368e-02 + <_> + + 0 -1 1605 6.6064862767234445e-04 + + 5.9221439063549042e-02 -2.3569910228252411e-01 + <_> + + 0 -1 1606 7.4699260294437408e-03 + + 5.1304049789905548e-02 -2.3386649787425995e-01 + <_> + + 0 -1 1607 -6.7128022201359272e-03 + + 2.7061641216278076e-01 -5.0031121820211411e-02 + <_> + + 0 -1 1608 4.6589970588684082e-03 + + 4.4932201504707336e-02 -3.0730488896369934e-01 + <_> + + 0 -1 1609 4.9815201200544834e-03 + + -4.8255410045385361e-02 2.6853010058403015e-01 + <_> + + 0 -1 1610 9.9244136363267899e-03 + + 1.9446769729256630e-02 -7.0352387428283691e-01 + <_> + + 0 -1 1611 6.1988402158021927e-03 + + -3.5107269883155823e-02 3.5460400581359863e-01 + <_> + + 0 -1 1612 8.8433362543582916e-03 + + 4.5328389853239059e-02 -2.7485930919647217e-01 + <_> + + 0 -1 1613 1.1110560037195683e-02 + + 2.2391419857740402e-02 -5.0172042846679688e-01 + <_> + + 0 -1 1614 -6.9408811395987868e-04 + + 1.7079490423202515e-01 -6.3849426805973053e-02 + <_> + + 0 -1 1615 8.0377031117677689e-03 + + 8.8937461376190186e-02 -1.6416129469871521e-01 + <_> + + 0 -1 1616 1.4750069567526225e-05 + + -1.3713030517101288e-01 9.6981123089790344e-02 + <_> + + 0 -1 1617 1.2381490087136626e-03 + + -6.9491222500801086e-02 1.6551379859447479e-01 + <_> + + 0 -1 1618 2.6584148872643709e-04 + + -9.6803613007068634e-02 1.2020370364189148e-01 + <_> + + 0 -1 1619 -5.4076651576906443e-04 + + -2.3185379803180695e-01 4.8987850546836853e-02 + <_> + + 0 -1 1620 -5.1092808134853840e-03 + + 3.0391758680343628e-01 -4.0800470858812332e-02 + <_> + + 0 -1 1621 1.5575919533148408e-03 + + -1.0150980204343796e-01 1.4465929567813873e-01 + <_> + + 0 -1 1622 2.8396019712090492e-02 + + 1.5098540484905243e-01 -8.8314309716224670e-02 + <_> + + 0 -1 1623 1.5096530551090837e-03 + + 5.1589738577604294e-02 -2.6199528574943542e-01 + <_> + + 0 -1 1624 1.4308419777080417e-03 + + -4.5497849583625793e-02 2.7584540843963623e-01 + <_> + + 0 -1 1625 1.3030369579792023e-01 + + 2.0329989492893219e-02 -5.7491821050643921e-01 + <_> + + 0 -1 1626 -3.3548770006746054e-03 + + 1.2289950251579285e-01 -8.9937411248683929e-02 + <_> + + 0 -1 1627 2.7094839140772820e-02 + + 1.4342390000820160e-02 -7.8952521085739136e-01 + <_> + + 0 -1 1628 -3.6210110783576965e-01 + + -6.2560427188873291e-01 1.4021329581737518e-02 + <_> + + 0 -1 1629 -6.6879601217806339e-04 + + 2.1966129541397095e-01 -5.2415199577808380e-02 + <_> + + 0 -1 1630 -3.7389241158962250e-02 + + -4.7313681244850159e-01 2.5704499334096909e-02 + <_> + + 0 -1 1631 -7.4386061169207096e-03 + + -5.2914857864379883e-01 2.0038880407810211e-02 + <_> + + 0 -1 1632 1.0443119704723358e-01 + + -2.2909460589289665e-02 5.1592028141021729e-01 + <_> + + 0 -1 1633 -6.1161867051851004e-05 + + 7.7016606926918030e-02 -1.4625400304794312e-01 + <_> + + 0 -1 1634 6.5830379026010633e-04 + + 7.0015281438827515e-02 -1.5569929778575897e-01 + <_> + + 0 -1 1635 9.7367232665419579e-03 + + -3.1582240015268326e-02 3.2754561305046082e-01 + <_> + + 0 -1 1636 -2.9574360232800245e-03 + + -3.4247711300849915e-01 3.2184720039367676e-02 + <_> + + 0 -1 1637 1.6319820424541831e-03 + + -4.9400478601455688e-02 2.2656440734863281e-01 + <_> + + 0 -1 1638 1.3844939880073071e-02 + + 2.0476659759879112e-02 -5.4600667953491211e-01 + <_> + + 0 -1 1639 3.1580299139022827e-02 + + -4.2422048747539520e-02 2.9091480374336243e-01 + <_> + + 0 -1 1640 8.6624026298522949e-03 + + 5.4432898759841919e-02 -2.1892189979553223e-01 + <_> + + 0 -1 1641 -4.6714721247553825e-04 + + -1.8205730617046356e-01 7.1491912007331848e-02 + <_> + + 0 -1 1642 4.1834521107375622e-03 + + -6.7491203546524048e-02 1.7285770177841187e-01 + <_> + + 0 -1 1643 -5.3335628472268581e-03 + + -8.4681749343872070e-01 1.3804829679429531e-02 + <_> + + 0 -1 1644 7.8782793134450912e-03 + + -4.8166718333959579e-02 2.4242730438709259e-01 + <_> + + 0 -1 1645 3.8775329012423754e-03 + + 2.4311149492859840e-02 -4.9763259291648865e-01 + <_> + + 0 -1 1646 -1.6564880206715316e-04 + + 5.5546380579471588e-02 -1.9554230570793152e-01 + <_> + + 0 -1 1647 1.8993400037288666e-02 + + -3.6479089409112930e-02 2.8472718596458435e-01 + <_> + + 0 -1 1648 -3.4308759495615959e-03 + + -3.2813000679016113e-01 3.6524198949337006e-02 + <_> + + 0 -1 1649 1.4614370229537599e-05 + + -1.0106439888477325e-01 1.0622490197420120e-01 + <_> + + 0 -1 1650 1.5978919342160225e-02 + + 3.0059399083256721e-02 -3.9310181140899658e-01 + <_> + + 0 -1 1651 -2.2245719446800649e-04 + + 1.8586489558219910e-01 -7.2151653468608856e-02 + <_> + + 0 -1 1652 2.0615909248590469e-02 + + 1.5250990167260170e-02 -7.8391200304031372e-01 + <_> + + 0 -1 1653 2.8645060956478119e-04 + + 6.8745598196983337e-02 -1.5308310091495514e-01 + <_> + + 0 -1 1654 -5.9233439969830215e-05 + + -1.2545019388198853e-01 9.8448492586612701e-02 + <_> + + 0 -1 1655 -7.6257862383499742e-04 + + 2.1546240150928497e-01 -5.3760219365358353e-02 + <_> + + 0 -1 1656 -1.4181639999151230e-03 + + -1.9876889884471893e-01 5.1982138305902481e-02 + <_> + + 0 -1 1657 -4.4716868549585342e-02 + + -7.5508397817611694e-01 1.2906449846923351e-02 + <_> + + 0 -1 1658 -1.3735699467360973e-03 + + 2.2003139555454254e-01 -5.1394689828157425e-02 + <_> + + 0 -1 1659 -1.5352779999375343e-02 + + -2.1422849595546722e-01 5.3781170397996902e-02 + <_> + + 0 -1 1660 1.3817439787089825e-02 + + -3.5158120095729828e-02 2.9399091005325317e-01 + <_> + + 0 -1 1661 8.7981626391410828e-02 + + 1.6688749194145203e-02 -7.2053599357604980e-01 + <_> + + 0 -1 1662 4.0486121177673340e-01 + + 9.4695771113038063e-03 -8.2725608348846436e-01 + <_> + + 0 -1 1663 1.9231239566579461e-03 + + -5.8016318827867508e-02 1.7696020007133484e-01 + <_> + + 0 -1 1664 -4.0756969247013330e-04 + + 8.7600946426391602e-02 -1.2633720040321350e-01 + <_> + + 0 -1 1665 -2.3862780071794987e-03 + + -4.0085569024085999e-01 2.7183029800653458e-02 + <_> + + 0 -1 1666 5.6235089898109436e-02 + + -1.7541319131851196e-02 7.3818737268447876e-01 + <_> + + 0 -1 1667 4.9810402560979128e-04 + + -7.6487071812152863e-02 1.2697990238666534e-01 + <_> + + 0 -1 1668 5.3285917965695262e-04 + + 5.9596300125122070e-02 -1.7600339651107788e-01 + <_> + + 0 -1 1669 5.9949647402390838e-04 + + -8.2509063184261322e-02 1.3002809882164001e-01 + <_> + + 0 -1 1670 -2.0725550712086260e-04 + + 9.3374222517013550e-02 -1.1726769804954529e-01 + <_> + + 0 -1 1671 8.1314949784427881e-04 + + -8.0063126981258392e-02 1.4701730012893677e-01 + <_> + + 0 -1 1672 -3.4973450237885118e-04 + + 1.1057929694652557e-01 -1.0881700366735458e-01 + <_> + + 0 -1 1673 -2.1448899805545807e-01 + + -3.1701159477233887e-01 4.1711531579494476e-02 + <_> + + 0 -1 1674 5.9010740369558334e-04 + + 4.6280328184366226e-02 -2.3512250185012817e-01 + <_> + + 0 -1 1675 -1.2093999981880188e-01 + + -6.8957090377807617e-01 1.4982040040194988e-02 + <_> + + 0 -1 1676 1.0181350260972977e-01 + + 1.1298139579594135e-02 -7.1199649572372437e-01 + <_> + + 0 -1 1677 3.5208329558372498e-01 + + 1.2944510206580162e-02 -6.7572408914566040e-01 + <_> + + 0 -1 1678 -1.4602140254282858e-05 + + 6.9550313055515289e-02 -1.4288060367107391e-01 + <_> + + 0 -1 1679 -2.3212860524654388e-01 + + -7.5287401676177979e-01 1.1394330300390720e-02 + <_> + + 0 -1 1680 -1.4764709630981088e-03 + + 1.3547790050506592e-01 -8.5470907390117645e-02 + <_> + + 0 -1 1681 9.9324379116296768e-03 + + -4.8758801072835922e-02 2.4582690000534058e-01 + <_> + + 0 -1 1682 -2.6857290416955948e-02 + + -4.3975710868835449e-01 2.5082239881157875e-02 + <_> + + 0 -1 1683 -7.3618912138044834e-03 + + 1.2384700030088425e-01 -9.7226209938526154e-02 + <_> + + 0 -1 1684 -1.9785730168223381e-02 + + -5.0932317972183228e-01 2.3481979966163635e-02 + <_> + + 0 -1 1685 -1.4635100342275109e-05 + + 9.4043917953968048e-02 -1.2145669758319855e-01 + <_> + + 0 -1 1686 -5.4067030549049377e-02 + + -5.4586207866668701e-01 1.9500140100717545e-02 + <_> + + 0 -1 1687 1.1532169766724110e-02 + + -7.6409153640270233e-02 1.3763970136642456e-01 + <_> + + 0 -1 1688 -4.4358540326356888e-03 + + 1.2359759956598282e-01 -9.1719299554824829e-02 + <_> + + 0 -1 1689 8.3216017810627818e-04 + + 6.3659071922302246e-02 -2.0440760254859924e-01 + <_> + + 0 -1 1690 -1.2503969669342041e-01 + + -4.1524758934974670e-01 2.7199100703001022e-02 + <_> + + 0 -1 1691 4.9618318676948547e-02 + + 1.5955109149217606e-02 -6.1666852235794067e-01 + <_> + + 0 -1 1692 -3.0613599810749292e-03 + + 3.6662209033966064e-01 -3.3449448645114899e-02 + <_> + + 0 -1 1693 3.5273379180580378e-03 + + 3.1757980585098267e-02 -3.8478809595108032e-01 + <_> + + 0 -1 1694 -6.6726570948958397e-03 + + 3.2095840573310852e-01 -3.4408681094646454e-02 + <_> + + 0 -1 1695 -2.5795500259846449e-03 + + -3.7870529294013977e-01 2.8562130406498909e-02 + <_> + + 0 -1 1696 7.8417789191007614e-03 + + -2.0479770377278328e-02 5.1704108715057373e-01 + <_> + + 0 -1 1697 3.1101319473236799e-04 + + -1.0809139907360077e-01 9.7204521298408508e-02 + <_> + + 0 -1 1698 2.6113479398190975e-03 + + -8.1770427525043488e-02 1.4691209793090820e-01 + <_> + + 0 -1 1699 7.3472261428833008e-03 + + 2.5131259113550186e-02 -4.3025061488151550e-01 + <_> + + 0 -1 1700 1.3528259296435863e-04 + + -1.4751060307025909e-01 6.7584678530693054e-02 + <_> + + 0 -1 1701 -5.1026898290729150e-05 + + -1.2161359935998917e-01 8.4333047270774841e-02 + <_> + + 0 -1 1702 1.1552199721336365e-03 + + -5.4663829505443573e-02 1.9773660600185394e-01 + <_> + + 0 -1 1703 -8.2931712269783020e-02 + + -5.1923328638076782e-01 2.0582359284162521e-02 + <_> + + 0 -1 1704 -4.6260739327408373e-04 + + 8.5588268935680389e-02 -1.1725299805402756e-01 + <_> + + 0 -1 1705 6.7906372714787722e-04 + + 4.5980118215084076e-02 -2.2628420591354370e-01 + <_> + + 0 -1 1706 1.4090019976720214e-03 + + -4.7628920525312424e-02 2.2722719609737396e-01 + <_> + + 0 -1 1707 2.8954911231994629e-01 + + 1.6701240092515945e-02 -6.3967019319534302e-01 + <_> + + 0 -1 1708 1.9376130774617195e-02 + + -2.2569410502910614e-02 5.0590497255325317e-01 + <_> + + 0 -1 1709 4.2641081381589174e-04 + + 6.6041722893714905e-02 -1.6666300594806671e-01 + <_> + + 0 -1 1710 1.7502580303698778e-03 + + -5.8077909052371979e-02 1.9512599706649780e-01 + <_> + + 0 -1 1711 -3.2605750020593405e-03 + + -2.9101881384849548e-01 3.8328718394041061e-02 + <_> + + 0 -1 1712 1.9519040361046791e-03 + + 5.9565968811511993e-02 -1.6910600662231445e-01 + <_> + + 0 -1 1713 -3.2053990289568901e-03 + + 1.9927769899368286e-01 -5.6053258478641510e-02 + <_> + + 0 -1 1714 1.7617279663681984e-03 + + 5.0697531551122665e-02 -2.1276649832725525e-01 + <_> + + 0 -1 1715 -6.0043102130293846e-03 + + -1.3699269294738770e-01 8.2275278866291046e-02 + <_> + + 0 -1 1716 2.4830829352140427e-03 + + -5.1561661064624786e-02 2.1684220433235168e-01 + <_> + + 0 -1 1717 -1.0821930319070816e-01 + + -7.8375291824340820e-01 1.4433650299906731e-02 + <_> + + 0 -1 1718 -7.5229378417134285e-03 + + 1.3453729450702667e-01 -9.0582698583602905e-02 + <_> + + 0 -1 1719 3.0750989913940430e-02 + + 1.1081690341234207e-01 -9.9475599825382233e-02 + <_> + + 0 -1 1720 -2.8948320541530848e-03 + + 1.9005739688873291e-01 -5.2639260888099670e-02 + <_> + + 0 -1 1721 2.7011099737137556e-03 + + 5.8573558926582336e-02 -1.9851949810981750e-01 + <_> + + 0 -1 1722 1.2562989722937346e-03 + + -7.3565311729907990e-02 1.5436840057373047e-01 + <_> + 173 + -1.4785599708557129e+00 + + <_> + + 0 -1 1723 -2.1460579708218575e-02 + + 3.2505050301551819e-01 -2.0890380442142487e-01 + <_> + + 0 -1 1724 7.6785432174801826e-03 + + -1.3231310248374939e-01 3.0525839328765869e-01 + <_> + + 0 -1 1725 3.4118059556931257e-03 + + -3.0793079733848572e-01 1.1010979861021042e-01 + <_> + + 0 -1 1726 -1.4710490177094471e-05 + + 9.5858857035636902e-02 -2.9641860723495483e-01 + <_> + + 0 -1 1727 1.0538049973547459e-02 + + -7.9252541065216064e-02 3.7234848737716675e-01 + <_> + + 0 -1 1728 -2.5260078837163746e-04 + + 6.7121110856533051e-02 -3.0784338712692261e-01 + <_> + + 0 -1 1729 -3.5665810573846102e-03 + + 1.4667609333992004e-01 -1.7083789408206940e-01 + <_> + + 0 -1 1730 -1.2677359627559781e-03 + + -4.9063721299171448e-01 2.0374119281768799e-02 + <_> + + 0 -1 1731 -6.7669381387531757e-03 + + 2.5767329335212708e-01 -7.4175901710987091e-02 + <_> + + 0 -1 1732 -6.0447258874773979e-04 + + -1.9196410477161407e-01 9.1349847614765167e-02 + <_> + + 0 -1 1733 -2.5375590194016695e-03 + + -3.5663878917694092e-01 5.1547251641750336e-02 + <_> + + 0 -1 1734 -7.0200557820498943e-03 + + 3.9719080924987793e-01 -4.3967988342046738e-02 + <_> + + 0 -1 1735 -5.7049379684031010e-03 + + -5.0015491247177124e-01 2.9825929552316666e-02 + <_> + + 0 -1 1736 1.4744909713044763e-03 + + 5.8546211570501328e-02 -2.6139810681343079e-01 + <_> + + 0 -1 1737 9.2834811657667160e-03 + + -4.2836759239435196e-02 3.3443170785903931e-01 + <_> + + 0 -1 1738 9.9660153500735760e-04 + + -1.0425110161304474e-01 1.6191780567169189e-01 + <_> + + 0 -1 1739 -7.5932733714580536e-02 + + -3.7356320023536682e-01 4.3075688183307648e-02 + <_> + + 0 -1 1740 5.5370710470015183e-05 + + -1.4570540189743042e-01 1.1560150235891342e-01 + <_> + + 0 -1 1741 1.4746849956281949e-05 + + -1.2972679734230042e-01 1.1747740209102631e-01 + <_> + + 0 -1 1742 -1.4875919441692531e-04 + + -1.8002930283546448e-01 7.8782692551612854e-02 + <_> + + 0 -1 1743 3.3751460723578930e-03 + + -7.7242009341716766e-02 1.8596859276294708e-01 + <_> + + 0 -1 1744 3.4271259210072458e-04 + + -1.5393340587615967e-01 1.0472580045461655e-01 + <_> + + 0 -1 1745 -4.5711229904554784e-04 + + -2.2300529479980469e-01 6.1818670481443405e-02 + <_> + + 0 -1 1746 3.2788628595881164e-04 + + 7.9448707401752472e-02 -1.8889829516410828e-01 + <_> + + 0 -1 1747 -9.6754019614309072e-04 + + 1.3137130439281464e-01 -1.0801070183515549e-01 + <_> + + 0 -1 1748 1.0537009686231613e-02 + + 2.2138269618153572e-02 -5.7479751110076904e-01 + <_> + + 0 -1 1749 5.6796409189701080e-03 + + -5.6034579873085022e-02 2.4849580228328705e-01 + <_> + + 0 -1 1750 -8.8083967566490173e-03 + + -3.7167680263519287e-01 4.2726948857307434e-02 + <_> + + 0 -1 1751 -2.8319710865616798e-02 + + -6.2387847900390625e-01 2.0844049751758575e-02 + <_> + + 0 -1 1752 1.3637860305607319e-02 + + 1.4434239827096462e-02 -7.1537137031555176e-01 + <_> + + 0 -1 1753 1.1822770349681377e-02 + + -4.3181091547012329e-02 3.0682548880577087e-01 + <_> + + 0 -1 1754 -6.1035697581246495e-04 + + -2.0418339967727661e-01 6.2115620821714401e-02 + <_> + + 0 -1 1755 -5.6125568225979805e-03 + + 3.6485010385513306e-01 -3.5448960959911346e-02 + <_> + + 0 -1 1756 1.4603640011046082e-05 + + -9.6096910536289215e-02 1.2142290174961090e-01 + <_> + + 0 -1 1757 1.9061230123043060e-03 + + 5.3135868161916733e-02 -2.2978909313678741e-01 + <_> + + 0 -1 1758 -3.6644220817834139e-03 + + 1.9614529609680176e-01 -6.8556912243366241e-02 + <_> + + 0 -1 1759 1.2336249928921461e-03 + + -8.7000347673892975e-02 1.3920229673385620e-01 + <_> + + 0 -1 1760 5.4660569876432419e-03 + + 2.2660890594124794e-02 -4.8329529166221619e-01 + <_> + + 0 -1 1761 -6.1730947345495224e-04 + + -2.1959540247917175e-01 5.5258519947528839e-02 + <_> + + 0 -1 1762 2.9604700393974781e-03 + + -5.0548229366540909e-02 2.7476710081100464e-01 + <_> + + 0 -1 1763 2.8015000745654106e-02 + + 1.8874650821089745e-02 -6.0498368740081787e-01 + <_> + + 0 -1 1764 -7.1651988946541678e-06 + + 1.0836219787597656e-01 -1.0606969892978668e-01 + <_> + + 0 -1 1765 -1.6367150470614433e-02 + + 2.8645038604736328e-01 -3.7137690931558609e-02 + <_> + + 0 -1 1766 1.0280719725415111e-03 + + 5.6318141520023346e-02 -2.1795029938220978e-01 + <_> + + 0 -1 1767 1.3662660494446754e-03 + + -4.6803500503301620e-02 2.3804000020027161e-01 + <_> + + 0 -1 1768 7.6626739464700222e-03 + + 2.1595260128378868e-02 -5.6847488880157471e-01 + <_> + + 0 -1 1769 -4.5117521658539772e-03 + + -3.5794979333877563e-01 3.0485490337014198e-02 + <_> + + 0 -1 1770 -4.3773967772722244e-03 + + 2.3192660510540009e-01 -5.3999818861484528e-02 + <_> + + 0 -1 1771 -7.2474628686904907e-03 + + -4.3440380692481995e-01 2.6374189183115959e-02 + <_> + + 0 -1 1772 7.9146260395646095e-04 + + -9.9924586713314056e-02 1.1088500171899796e-01 + <_> + + 0 -1 1773 6.4166806638240814e-02 + + 1.8938669934868813e-02 -5.7849419116973877e-01 + <_> + + 0 -1 1774 -1.1797840124927461e-04 + + -1.4889569580554962e-01 6.8777203559875488e-02 + <_> + + 0 -1 1775 1.2801289558410645e-02 + + 5.6179329752922058e-02 -2.0865969359874725e-01 + <_> + + 0 -1 1776 -2.7018740773200989e-02 + + 4.5356890559196472e-01 -2.5054579600691795e-02 + <_> + + 0 -1 1777 -6.9431727752089500e-03 + + -5.2916550636291504e-01 2.1800139918923378e-02 + <_> + + 0 -1 1778 3.3396780490875244e-03 + + -3.7295959889888763e-02 3.1198439002037048e-01 + <_> + + 0 -1 1779 -3.8888349081389606e-04 + + -1.5630130469799042e-01 7.0981830358505249e-02 + <_> + + 0 -1 1780 -7.1400677552446723e-04 + + 2.1799430251121521e-01 -5.4069280624389648e-02 + <_> + + 0 -1 1781 1.2549630366265774e-02 + + 1.7357179895043373e-02 -7.8320449590682983e-01 + <_> + + 0 -1 1782 -1.4623020433646161e-05 + + 7.8640103340148926e-02 -1.4212970435619354e-01 + <_> + + 0 -1 1783 -1.2133170384913683e-03 + + -3.1371229887008667e-01 3.4287638962268829e-02 + <_> + + 0 -1 1784 3.6882720887660980e-03 + + -3.8382381200790405e-02 3.0124679207801819e-01 + <_> + + 0 -1 1785 -1.4818239833402913e-05 + + 1.2561169266700745e-01 -9.1703377664089203e-02 + <_> + + 0 -1 1786 3.0302109662443399e-03 + + -2.9543070122599602e-02 3.7889540195465088e-01 + <_> + + 0 -1 1787 5.9340851294109598e-05 + + -1.7745719850063324e-01 7.0102430880069733e-02 + <_> + + 0 -1 1788 -2.9449560315697454e-05 + + 1.2052319943904877e-01 -1.1128979921340942e-01 + <_> + + 0 -1 1789 -1.7771139740943909e-02 + + -4.7108310461044312e-01 2.5600789114832878e-02 + <_> + + 0 -1 1790 7.6775359921157360e-03 + + -4.0757879614830017e-02 2.7021768689155579e-01 + <_> + + 0 -1 1791 -1.8513019382953644e-01 + + -3.0238750576972961e-01 3.8790911436080933e-02 + <_> + + 0 -1 1792 2.7697190642356873e-02 + + 2.6712810620665550e-02 -4.4166600704193115e-01 + <_> + + 0 -1 1793 -2.0427649840712547e-02 + + 2.5086608529090881e-01 -5.5672701448202133e-02 + <_> + + 0 -1 1794 9.0200370177626610e-03 + + 4.7344069927930832e-02 -2.7445980906486511e-01 + <_> + + 0 -1 1795 -1.2504979968070984e-03 + + -1.4971190690994263e-01 7.9667650163173676e-02 + <_> + + 0 -1 1796 -1.0021160356700420e-02 + + 2.4248859286308289e-01 -4.9217909574508667e-02 + <_> + + 0 -1 1797 2.6042328681796789e-04 + + 6.3192427158355713e-02 -1.8544280529022217e-01 + <_> + + 0 -1 1798 1.1920549441128969e-03 + + -8.6547911167144775e-02 1.3552339375019073e-01 + <_> + + 0 -1 1799 3.0391330365091562e-03 + + -7.2965219616889954e-02 1.6479800641536713e-01 + <_> + + 0 -1 1800 -2.9615699531859718e-05 + + 8.2047976553440094e-02 -1.4502969384193420e-01 + <_> + + 0 -1 1801 -1.2226340360939503e-02 + + -5.3014177083969116e-01 2.0405799150466919e-02 + <_> + + 0 -1 1802 -2.8124889358878136e-02 + + -5.5148762464523315e-01 1.7688119783997536e-02 + <_> + + 0 -1 1803 -4.8307109624147415e-02 + + -8.2579791545867920e-01 1.1020540259778500e-02 + <_> + + 0 -1 1804 4.6184109523892403e-03 + + 3.2069969922304153e-02 -3.0115368962287903e-01 + <_> + + 0 -1 1805 -8.4275740664452314e-04 + + 1.7034439742565155e-01 -6.3009433448314667e-02 + <_> + + 0 -1 1806 6.3863280229270458e-03 + + 1.6307299956679344e-02 -7.1346491575241089e-01 + <_> + + 0 -1 1807 -7.7203067485243082e-04 + + 1.6715280711650848e-01 -6.6192783415317535e-02 + <_> + + 0 -1 1808 -2.2645338904112577e-03 + + -3.5107091069221497e-01 2.8168670833110809e-02 + <_> + + 0 -1 1809 -3.7738790269941092e-03 + + 5.2762818336486816e-01 -2.0222609862685204e-02 + <_> + + 0 -1 1810 5.8204168453812599e-03 + + 7.0864066481590271e-02 -1.4675390720367432e-01 + <_> + + 0 -1 1811 -1.2069250456988811e-02 + + 2.3928099870681763e-01 -4.4312968850135803e-02 + <_> + + 0 -1 1812 3.3203759230673313e-03 + + -6.5749533474445343e-02 2.0277680456638336e-01 + <_> + + 0 -1 1813 2.1621929481625557e-03 + + 6.7407980561256409e-02 -1.8125349283218384e-01 + <_> + + 0 -1 1814 1.2229150161147118e-02 + + 2.2559309378266335e-02 -4.9180999398231506e-01 + <_> + + 0 -1 1815 -6.7253508605062962e-03 + + -1.5290050208568573e-01 6.9786652922630310e-02 + <_> + + 0 -1 1816 2.3579499684274197e-03 + + 4.9212101846933365e-02 -2.0838280022144318e-01 + <_> + + 0 -1 1817 -2.2950689308345318e-03 + + 1.2400440126657486e-01 -9.6624918282032013e-02 + <_> + + 0 -1 1818 1.0958530474454165e-03 + + -7.3270753026008606e-02 1.5208619832992554e-01 + <_> + + 0 -1 1819 -1.3427219819277525e-03 + + 1.2233039736747742e-01 -9.5689877867698669e-02 + <_> + + 0 -1 1820 5.4691417608410120e-04 + + -1.3924160599708557e-01 8.4381736814975739e-02 + <_> + + 0 -1 1821 8.4598818793892860e-03 + + 8.9689873158931732e-02 -1.3318899273872375e-01 + <_> + + 0 -1 1822 -9.1597117483615875e-02 + + -6.1854732036590576e-01 2.2867869585752487e-02 + <_> + + 0 -1 1823 -1.1090439511463046e-03 + + 5.8513749390840530e-02 -1.8806450068950653e-01 + <_> + + 0 -1 1824 2.2256910597207025e-05 + + -8.4488280117511749e-02 1.2780910730361938e-01 + <_> + + 0 -1 1825 -1.5437819820363075e-04 + + -1.2228029966354370e-01 8.6046978831291199e-02 + <_> + + 0 -1 1826 -2.6862788945436478e-03 + + -2.4487000703811646e-01 4.4255960732698441e-02 + <_> + + 0 -1 1827 -4.0478641167283058e-03 + + 2.7030688524246216e-01 -4.2200870811939240e-02 + <_> + + 0 -1 1828 -5.3340241312980652e-02 + + -7.6232349872589111e-01 1.4388039708137512e-02 + <_> + + 0 -1 1829 2.8256059158593416e-03 + + -2.9877070337533951e-02 3.9692971110343933e-01 + <_> + + 0 -1 1830 1.4443730004131794e-02 + + 3.0186710879206657e-02 -3.6606648564338684e-01 + <_> + + 0 -1 1831 1.3111650478094816e-03 + + -4.8140369355678558e-02 2.2434459626674652e-01 + <_> + + 0 -1 1832 1.6730680363252759e-03 + + -5.9983398765325546e-02 1.6394190490245819e-01 + <_> + + 0 -1 1833 2.3517120629549026e-02 + + 2.4109700694680214e-02 -4.0492439270019531e-01 + <_> + + 0 -1 1834 -3.5689130891114473e-03 + + 3.1903558969497681e-01 -3.4295879304409027e-02 + <_> + + 0 -1 1835 -2.8193008620291948e-04 + + -1.4874160289764404e-01 7.0669896900653839e-02 + <_> + + 0 -1 1836 1.0215859860181808e-01 + + 1.2840500101447105e-02 -7.7848541736602783e-01 + <_> + + 0 -1 1837 -1.9175480306148529e-01 + + -7.5706577301025391e-01 1.0587760247290134e-02 + <_> + + 0 -1 1838 5.3162658587098122e-03 + + -4.0066570043563843e-02 2.6050180196762085e-01 + <_> + + 0 -1 1839 -1.1487120063975453e-03 + + -1.8017220497131348e-01 6.1610430479049683e-02 + <_> + + 0 -1 1840 -2.8316730260848999e-01 + + -8.4913408756256104e-01 1.1647139675915241e-02 + <_> + + 0 -1 1841 3.3731758594512939e-02 + + 1.2357609719038010e-01 -7.7482230961322784e-02 + <_> + + 0 -1 1842 9.8635945469141006e-03 + + 4.3958030641078949e-02 -2.5541779398918152e-01 + <_> + + 0 -1 1843 -3.1564768869429827e-03 + + 1.8942989408969879e-01 -5.8221038430929184e-02 + <_> + + 0 -1 1844 1.5572150005027652e-03 + + -1.0376139730215073e-01 1.4107349514961243e-01 + <_> + + 0 -1 1845 6.2360420823097229e-02 + + 9.6462322399020195e-03 -8.5804969072341919e-01 + <_> + + 0 -1 1846 1.1480550165288150e-04 + + -8.4419928491115570e-02 1.1312700062990189e-01 + <_> + + 0 -1 1847 -5.9252730570733547e-03 + + -3.1650778651237488e-01 3.2079849392175674e-02 + <_> + + 0 -1 1848 -2.4660851340740919e-04 + + 8.8697679340839386e-02 -1.1085110157728195e-01 + <_> + + 0 -1 1849 1.6946049872785807e-03 + + -5.9657149016857147e-02 2.0904210209846497e-01 + <_> + + 0 -1 1850 9.0623252617660910e-05 + + 7.7441960573196411e-02 -1.2806339561939240e-01 + <_> + + 0 -1 1851 1.1666920036077499e-03 + + -6.1748579144477844e-02 1.5702450275421143e-01 + <_> + + 0 -1 1852 1.2541549513116479e-03 + + 4.4608380645513535e-02 -2.3140360414981842e-01 + <_> + + 0 -1 1853 -6.0275900177657604e-03 + + 9.5281846821308136e-02 -1.0283090174198151e-01 + <_> + + 0 -1 1854 -2.0472849905490875e-01 + + -4.1114759445190430e-01 2.3537550121545792e-02 + <_> + + 0 -1 1855 1.7691280692815781e-02 + + -3.9257150143384933e-02 2.8564441204071045e-01 + <_> + + 0 -1 1856 -1.2875649333000183e-01 + + -8.2030779123306274e-01 1.1735290288925171e-02 + <_> + + 0 -1 1857 1.2868089834228158e-03 + + 5.0858870148658752e-02 -1.7848010361194611e-01 + <_> + + 0 -1 1858 -4.5859832316637039e-03 + + 1.6802109777927399e-01 -6.1582598835229874e-02 + <_> + + 0 -1 1859 4.6391240903176367e-04 + + 6.6747047007083893e-02 -1.4237800240516663e-01 + <_> + + 0 -1 1860 -4.4439961202442646e-03 + + 4.5714980363845825e-01 -2.1746810525655746e-02 + <_> + + 0 -1 1861 3.8220020942389965e-03 + + 1.8094329163432121e-02 -6.0244542360305786e-01 + <_> + + 0 -1 1862 1.3894500443711877e-03 + + 3.4007851034402847e-02 -2.7153480052947998e-01 + <_> + + 0 -1 1863 -7.2111929766833782e-03 + + 2.7312570810317993e-01 -3.6855131387710571e-02 + <_> + + 0 -1 1864 1.6509749693796039e-03 + + -8.4407016634941101e-02 1.3134449720382690e-01 + <_> + + 0 -1 1865 -5.0506892148405313e-04 + + -1.4193339645862579e-01 7.3628053069114685e-02 + <_> + + 0 -1 1866 -1.1205329559743404e-02 + + 3.0093750357627869e-01 -3.4171391278505325e-02 + <_> + + 0 -1 1867 -3.4860160667449236e-04 + + -2.4538309872150421e-01 5.9823978692293167e-02 + <_> + + 0 -1 1868 7.3347258148714900e-04 + + -6.1770260334014893e-02 1.6367949545383453e-01 + <_> + + 0 -1 1869 -9.2969406396150589e-03 + + -3.0236640572547913e-01 3.9257898926734924e-02 + <_> + + 0 -1 1870 2.3957120254635811e-02 + + -2.3900719359517097e-02 4.8340830206871033e-01 + <_> + + 0 -1 1871 3.6422210541786626e-05 + + -1.2283039838075638e-01 9.1258950531482697e-02 + <_> + + 0 -1 1872 5.0458200275897980e-02 + + 1.3529149815440178e-02 -7.7827727794647217e-01 + <_> + + 0 -1 1873 -9.8683983087539673e-03 + + -4.4060459733009338e-01 2.0404359325766563e-02 + <_> + + 0 -1 1874 -1.0851239785552025e-02 + + 2.0165500044822693e-01 -5.2248589694499969e-02 + <_> + + 0 -1 1875 1.7670930537860841e-04 + + -1.3691440224647522e-01 8.3170592784881592e-02 + <_> + + 0 -1 1876 1.2582179624587297e-04 + + 6.1275351792573929e-02 -1.6542710363864899e-01 + <_> + + 0 -1 1877 -7.0588971721008420e-04 + + 1.5219129621982574e-01 -6.6164620220661163e-02 + <_> + + 0 -1 1878 1.1355109745636582e-03 + + -5.4115369915962219e-02 2.1311099827289581e-01 + <_> + + 0 -1 1879 -3.7436310667544603e-03 + + -2.3469850420951843e-01 4.9591001123189926e-02 + <_> + + 0 -1 1880 1.2309269513934851e-03 + + -7.5196012854576111e-02 1.4646540582180023e-01 + <_> + + 0 -1 1881 3.6228948738425970e-04 + + -9.7789406776428223e-02 1.2091729789972305e-01 + <_> + + 0 -1 1882 7.5996189843863249e-04 + + 6.9713920354843140e-02 -1.6278789937496185e-01 + <_> + + 0 -1 1883 -1.8509250367060304e-03 + + -1.8382890522480011e-01 5.7501520961523056e-02 + <_> + + 0 -1 1884 7.9539678990840912e-03 + + -5.8848708868026733e-02 1.8846440315246582e-01 + <_> + + 0 -1 1885 -3.1013600528240204e-04 + + -1.4575460553169250e-01 7.2403199970722198e-02 + <_> + + 0 -1 1886 1.6956350300461054e-03 + + 7.0550262928009033e-02 -1.6740930080413818e-01 + <_> + + 0 -1 1887 2.9058079235255718e-05 + + -1.0341589897871017e-01 9.5376282930374146e-02 + <_> + + 0 -1 1888 1.4466919936239719e-02 + + -1.7532069236040115e-02 5.4767167568206787e-01 + <_> + + 0 -1 1889 -5.7156499475240707e-02 + + -7.4789309501647949e-01 1.6394419595599174e-02 + <_> + + 0 -1 1890 3.0681469943374395e-03 + + 3.8702819496393204e-02 -2.4164369702339172e-01 + <_> + + 0 -1 1891 3.7490210961550474e-03 + + -5.6555431336164474e-02 2.0308320224285126e-01 + <_> + + 0 -1 1892 -1.0643450077623129e-03 + + -2.8211921453475952e-01 3.5207509994506836e-02 + <_> + + 0 -1 1893 -8.9807435870170593e-03 + + 2.1754769980907440e-01 -5.0628181546926498e-02 + <_> + + 0 -1 1894 2.4643479264341295e-04 + + 7.2727531194686890e-02 -1.4768819510936737e-01 + <_> + + 0 -1 1895 2.2197801154106855e-03 + + -3.6754861474037170e-02 2.6939278841018677e-01 + <_> + 169 + -1.3372850418090820e+00 + + <_> + + 0 -1 1896 -3.5328421741724014e-02 + + 2.4123990535736084e-01 -2.7961900830268860e-01 + <_> + + 0 -1 1897 2.6829841081053019e-03 + + -1.6362559795379639e-01 2.3433500528335571e-01 + <_> + + 0 -1 1898 2.1330378949642181e-03 + + -2.0100639760494232e-01 1.5679529309272766e-01 + <_> + + 0 -1 1899 4.2972870869562030e-04 + + -3.7790980935096741e-01 7.4083693325519562e-02 + <_> + + 0 -1 1900 -3.4645918756723404e-02 + + 3.0556240677833557e-01 -8.3546526730060577e-02 + <_> + + 0 -1 1901 -1.4237920368032064e-05 + + 8.2699142396450043e-02 -2.3583950102329254e-01 + <_> + + 0 -1 1902 4.9165110103785992e-03 + + -1.9556050002574921e-01 9.6965387463569641e-02 + <_> + + 0 -1 1903 6.0989488847553730e-03 + + 7.8470550477504730e-02 -2.3209640383720398e-01 + <_> + + 0 -1 1904 7.4874181300401688e-03 + + 7.1725919842720032e-03 -5.1566261053085327e-01 + <_> + + 0 -1 1905 4.2871991172432899e-03 + + 4.0530510246753693e-02 -4.1086289286613464e-01 + <_> + + 0 -1 1906 1.6856180503964424e-02 + + -7.7506266534328461e-02 2.3657779395580292e-01 + <_> + + 0 -1 1907 -1.0347689967602491e-03 + + -4.6704441308975220e-01 3.4468568861484528e-02 + <_> + + 0 -1 1908 1.6820980235934258e-03 + + -6.7206740379333496e-02 2.3671430349349976e-01 + <_> + + 0 -1 1909 -1.2018240056931973e-02 + + -2.2372600436210632e-01 7.4281953275203705e-02 + <_> + + 0 -1 1910 1.3802549801766872e-03 + + -9.9990189075469971e-02 1.5270860493183136e-01 + <_> + + 0 -1 1911 -1.4281070232391357e-01 + + -2.8344118595123291e-01 6.2299348413944244e-02 + <_> + + 0 -1 1912 -1.5463490039110184e-02 + + 2.9084190726280212e-01 -5.3395688533782959e-02 + <_> + + 0 -1 1913 -9.9617196246981621e-04 + + -3.6011821031570435e-01 4.1922971606254578e-02 + <_> + + 0 -1 1914 -2.6956679299473763e-02 + + -4.3736729025840759e-01 3.1731128692626953e-02 + <_> + + 0 -1 1915 -8.7780617177486420e-03 + + -5.0374472141265869e-01 2.5146849453449249e-02 + <_> + + 0 -1 1916 4.2969950300175697e-05 + + -1.5406499803066254e-01 8.8478356599807739e-02 + <_> + + 0 -1 1917 -6.2619051896035671e-03 + + 2.2435919940471649e-01 -5.9849821031093597e-02 + <_> + + 0 -1 1918 -6.4296770142391324e-04 + + -2.4377089738845825e-01 5.9389740228652954e-02 + <_> + + 0 -1 1919 -1.5573870041407645e-04 + + -1.6867999732494354e-01 7.8476317226886749e-02 + <_> + + 0 -1 1920 4.1139780660159886e-04 + + -8.9017570018768311e-02 1.4019380509853363e-01 + <_> + + 0 -1 1921 1.8635790329426527e-03 + + 3.8603689521551132e-02 -3.2118970155715942e-01 + <_> + + 0 -1 1922 1.6059159534052014e-03 + + -7.8801520168781281e-02 1.5801469981670380e-01 + <_> + + 0 -1 1923 8.6740078404545784e-04 + + 5.4134480655193329e-02 -2.3538430035114288e-01 + <_> + + 0 -1 1924 -7.9801032552495599e-04 + + 1.3330009579658508e-01 -9.5731817185878754e-02 + <_> + + 0 -1 1925 -4.8548211343586445e-03 + + -2.0736059546470642e-01 6.1038620769977570e-02 + <_> + + 0 -1 1926 -1.1426740325987339e-02 + + 1.7201809585094452e-01 -7.1152277290821075e-02 + <_> + + 0 -1 1927 8.7062492966651917e-03 + + -7.2185672819614410e-02 1.9082969427108765e-01 + <_> + + 0 -1 1928 -1.1634400580078363e-03 + + -1.3751690089702606e-01 9.1818131506443024e-02 + <_> + + 0 -1 1929 6.8914610892534256e-03 + + 9.6225969493389130e-02 -1.3246159255504608e-01 + <_> + + 0 -1 1930 -2.2426620125770569e-03 + + 3.5683241486549377e-01 -3.6280050873756409e-02 + <_> + + 0 -1 1931 1.2301520444452763e-02 + + 4.6940989792346954e-02 -3.0623328685760498e-01 + <_> + + 0 -1 1932 3.9963610470294952e-03 + + -8.2999393343925476e-02 1.5486459434032440e-01 + <_> + + 0 -1 1933 -2.2026189981261268e-05 + + 1.1778099834918976e-01 -1.1899650096893311e-01 + <_> + + 0 -1 1934 5.8708270080387592e-04 + + 5.6864660233259201e-02 -2.2509899735450745e-01 + <_> + + 0 -1 1935 -5.8760121464729309e-03 + + 2.6625269651412964e-01 -4.4570129364728928e-02 + <_> + + 0 -1 1936 4.3262130930088460e-04 + + 5.8049838989973068e-02 -2.1173800528049469e-01 + <_> + + 0 -1 1937 4.7852578572928905e-03 + + -4.0710568428039551e-02 2.9509121179580688e-01 + <_> + + 0 -1 1938 4.5480159315047786e-05 + + -1.8201610445976257e-01 6.0179539024829865e-02 + <_> + + 0 -1 1939 2.5633929762989283e-03 + + -8.7039761245250702e-02 1.2692840397357941e-01 + <_> + + 0 -1 1940 -4.7383471392095089e-03 + + 2.3961830139160156e-01 -4.9914900213479996e-02 + <_> + + 0 -1 1941 4.4647231698036194e-03 + + 4.0540020912885666e-02 -3.2467570900917053e-01 + <_> + + 0 -1 1942 -6.7061209119856358e-03 + + -3.2789680361747742e-01 3.2299648970365524e-02 + <_> + + 0 -1 1943 7.1761049330234528e-02 + + -2.3713670670986176e-02 4.7772058844566345e-01 + <_> + + 0 -1 1944 3.0584860593080521e-02 + + 1.6793910413980484e-02 -7.8061228990554810e-01 + <_> + + 0 -1 1945 3.8672669325023890e-03 + + -2.4876890704035759e-02 5.1260662078857422e-01 + <_> + + 0 -1 1946 -5.2802208811044693e-02 + + -5.0759661197662354e-01 2.3873040452599525e-02 + <_> + + 0 -1 1947 -6.5651582553982735e-04 + + -2.0122329890727997e-01 4.9672801047563553e-02 + <_> + + 0 -1 1948 8.5785267874598503e-03 + + -4.5007020235061646e-02 2.3518909513950348e-01 + <_> + + 0 -1 1949 -1.2620680499821901e-03 + + -1.9962050020694733e-01 5.5564209818840027e-02 + <_> + + 0 -1 1950 1.4215289615094662e-02 + + -4.6983979642391205e-02 2.0781150460243225e-01 + <_> + + 0 -1 1951 1.6393810510635376e-01 + + 1.4973269775509834e-02 -6.5025687217712402e-01 + <_> + + 0 -1 1952 1.4837640523910522e-01 + + 8.1885885447263718e-03 -9.4296187162399292e-01 + <_> + + 0 -1 1953 1.4631190424552187e-05 + + -1.2383759766817093e-01 8.2489579916000366e-02 + <_> + + 0 -1 1954 -3.3909391611814499e-02 + + -2.2818760573863983e-01 4.3302498757839203e-02 + <_> + + 0 -1 1955 3.8288589566946030e-03 + + -3.7276919931173325e-02 2.7613049745559692e-01 + <_> + + 0 -1 1956 8.0947913229465485e-03 + + 2.8445359319448471e-02 -3.9388808608055115e-01 + <_> + + 0 -1 1957 -7.0019601844251156e-04 + + 1.2199380248785019e-01 -9.2714257538318634e-02 + <_> + + 0 -1 1958 3.4412490203976631e-03 + + -4.8972681164741516e-02 2.0617230236530304e-01 + <_> + + 0 -1 1959 -1.6337490081787109e-01 + + -6.1850237846374512e-01 1.6467820852994919e-02 + <_> + + 0 -1 1960 6.5640709362924099e-03 + + 1.1007189750671387e-01 -9.2340007424354553e-02 + <_> + + 0 -1 1961 4.4708838686347008e-04 + + -1.3933309912681580e-01 7.7039696276187897e-02 + <_> + + 0 -1 1962 1.7568700015544891e-02 + + 9.7569692879915237e-03 -8.0032902956008911e-01 + <_> + + 0 -1 1963 -1.9571769516915083e-03 + + 2.8000330924987793e-01 -3.6428239196538925e-02 + <_> + + 0 -1 1964 5.1913037896156311e-04 + + 5.3515341132879257e-02 -1.9425579905509949e-01 + <_> + + 0 -1 1965 9.6273031085729599e-03 + + 3.1317751854658127e-02 -3.1802541017532349e-01 + <_> + + 0 -1 1966 -5.0332810729742050e-02 + + 5.6659060716629028e-01 -1.8494980409741402e-02 + <_> + + 0 -1 1967 -6.4624901860952377e-03 + + -4.1894671320915222e-01 2.7350850403308868e-02 + <_> + + 0 -1 1968 -5.2857249975204468e-03 + + 1.7756509780883789e-01 -5.8377739042043686e-02 + <_> + + 0 -1 1969 9.9454462528228760e-02 + + 1.6487719491124153e-02 -5.8526170253753662e-01 + <_> + + 0 -1 1970 2.1917840058449656e-04 + + -1.0714250057935715e-01 9.1884173452854156e-02 + <_> + + 0 -1 1971 -4.3873358663404360e-05 + + 7.8036926686763763e-02 -1.2723919749259949e-01 + <_> + + 0 -1 1972 -6.7227642284706235e-04 + + -2.5709420442581177e-01 3.8843378424644470e-02 + <_> + + 0 -1 1973 1.1754270235542208e-04 + + -7.9695962369441986e-02 1.2093970179557800e-01 + <_> + + 0 -1 1974 4.6061190962791443e-01 + + 1.3886069878935814e-02 -6.5241271257400513e-01 + <_> + + 0 -1 1975 1.1115600354969501e-02 + + 1.3871660456061363e-02 -6.0222518444061279e-01 + <_> + + 0 -1 1976 9.0776477009057999e-03 + + -3.6118660122156143e-02 2.5702419877052307e-01 + <_> + + 0 -1 1977 -4.9597548786550760e-04 + + 1.1017049849033356e-01 -8.9249506592750549e-02 + <_> + + 0 -1 1978 1.5807070303708315e-03 + + 4.8131279647350311e-02 -2.0215910673141479e-01 + <_> + + 0 -1 1979 -6.9012932479381561e-02 + + -8.1536060571670532e-01 1.0660010389983654e-02 + <_> + + 0 -1 1980 1.9330780196469277e-04 + + -1.1231829971075058e-01 8.5046432912349701e-02 + <_> + + 0 -1 1981 7.8813207801431417e-04 + + -5.5200818926095963e-02 1.7654439806938171e-01 + <_> + + 0 -1 1982 9.5367128960788250e-04 + + 5.4411198943853378e-02 -1.8674199283123016e-01 + <_> + + 0 -1 1983 -2.3191540967673063e-03 + + -2.7544409036636353e-01 3.8513321429491043e-02 + <_> + + 0 -1 1984 9.5087959198281169e-04 + + -6.8218901753425598e-02 1.6082139313220978e-01 + <_> + + 0 -1 1985 9.5385108143091202e-03 + + -3.8826879113912582e-02 3.0370831489562988e-01 + <_> + + 0 -1 1986 -1.4489189721643925e-02 + + -4.6989730000495911e-01 2.3550020530819893e-02 + <_> + + 0 -1 1987 1.0756050236523151e-02 + + 2.0565100014209747e-02 -4.7243130207061768e-01 + <_> + + 0 -1 1988 -2.0074830390512943e-03 + + -2.7946698665618896e-01 3.6021549254655838e-02 + <_> + + 0 -1 1989 -1.7316909506917000e-03 + + 2.0902790129184723e-01 -4.6300981193780899e-02 + <_> + + 0 -1 1990 1.5234799683094025e-01 + + 1.4934250153601170e-02 -6.0461127758026123e-01 + <_> + + 0 -1 1991 6.3340878114104271e-04 + + 5.0307150930166245e-02 -1.8277199566364288e-01 + <_> + + 0 -1 1992 -8.2793915644288063e-03 + + 3.6463031172752380e-01 -2.6474289596080780e-02 + <_> + + 0 -1 1993 1.3667670078575611e-02 + + 1.2511620298027992e-02 -8.9023828506469727e-01 + <_> + + 0 -1 1994 2.0979309920221567e-03 + + -8.0247193574905396e-02 1.2989950180053711e-01 + <_> + + 0 -1 1995 -8.9776562526822090e-03 + + 1.7411080002784729e-01 -6.1771109700202942e-02 + <_> + + 0 -1 1996 1.2094390112906694e-03 + + 6.8711720407009125e-02 -1.6561290621757507e-01 + <_> + + 0 -1 1997 6.8200258538126945e-03 + + 5.7795759290456772e-02 -1.8231619894504547e-01 + <_> + + 0 -1 1998 -1.8268059939146042e-03 + + 1.3340330123901367e-01 -7.5343966484069824e-02 + <_> + + 0 -1 1999 7.9908408224582672e-03 + + -4.5094471424818039e-02 2.4594159424304962e-01 + <_> + + 0 -1 2000 -2.5262041017413139e-03 + + -2.0763960480690002e-01 5.2334129810333252e-02 + <_> + + 0 -1 2001 -7.4825510382652283e-02 + + -5.4688757658004761e-01 1.7803389579057693e-02 + <_> + + 0 -1 2002 -3.3099399879574776e-03 + + 3.3455818891525269e-01 -2.8966419398784637e-02 + <_> + + 0 -1 2003 8.2276277244091034e-03 + + 4.1579861193895340e-02 -2.6652270555496216e-01 + <_> + + 0 -1 2004 3.1686299480497837e-03 + + -4.1817110031843185e-02 2.9769781231880188e-01 + <_> + + 0 -1 2005 1.5170290134847164e-02 + + 4.3392360210418701e-02 -2.4617969989776611e-01 + <_> + + 0 -1 2006 -1.5946379862725735e-03 + + 1.5057189762592316e-01 -7.3017738759517670e-02 + <_> + + 0 -1 2007 -8.5226353257894516e-03 + + -1.5050080418586731e-01 6.9656036794185638e-02 + <_> + + 0 -1 2008 -1.1418120004236698e-02 + + 1.2974749505519867e-01 -9.5122329890727997e-02 + <_> + + 0 -1 2009 -2.8856399655342102e-01 + + -2.1124540269374847e-01 4.7410819679498672e-02 + <_> + + 0 -1 2010 -3.9014229550957680e-03 + + -2.6843780279159546e-01 3.8698658347129822e-02 + <_> + + 0 -1 2011 -3.5567739978432655e-03 + + 2.3385030031204224e-01 -4.5723881572484970e-02 + <_> + + 0 -1 2012 -6.4394129440188408e-03 + + -6.0463881492614746e-01 1.6156049445271492e-02 + <_> + + 0 -1 2013 -7.4861319735646248e-03 + + 1.6867969930171967e-01 -5.5975880473852158e-02 + <_> + + 0 -1 2014 2.3621210129931569e-04 + + 5.3596749901771545e-02 -2.1872919797897339e-01 + <_> + + 0 -1 2015 2.6099249720573425e-02 + + -5.3937491029500961e-02 2.2728930413722992e-01 + <_> + + 0 -1 2016 -1.7809759592637420e-03 + + 8.6759522557258606e-02 -1.2009979784488678e-01 + <_> + + 0 -1 2017 -1.1987469770247117e-04 + + -1.5347549319267273e-01 7.0707783102989197e-02 + <_> + + 0 -1 2018 -6.8248361349105835e-03 + + -3.7341019511222839e-01 2.6779960840940475e-02 + <_> + + 0 -1 2019 -1.3119089999236166e-04 + + -1.1640869826078415e-01 8.7211161851882935e-02 + <_> + + 0 -1 2020 -1.8228540429845452e-03 + + 1.5664499998092651e-01 -6.8006090819835663e-02 + <_> + + 0 -1 2021 2.6267999783158302e-03 + + -3.6987219005823135e-02 2.6393121480941772e-01 + <_> + + 0 -1 2022 -7.0677183568477631e-02 + + -2.8295999765396118e-01 3.5035520792007446e-02 + <_> + + 0 -1 2023 1.8061319366097450e-02 + + -2.8041649609804153e-02 3.5313779115676880e-01 + <_> + + 0 -1 2024 9.2649407451972365e-04 + + 4.4600278139114380e-02 -2.2788539528846741e-01 + <_> + + 0 -1 2025 -5.3023721557110548e-04 + + -2.0866680145263672e-01 6.2718503177165985e-02 + <_> + + 0 -1 2026 3.6058931145817041e-03 + + -6.7796908318996429e-02 1.4900009334087372e-01 + <_> + + 0 -1 2027 8.5915643721818924e-03 + + -4.5626759529113770e-02 2.3078480362892151e-01 + <_> + + 0 -1 2028 -8.8329352438449860e-03 + + -4.1117089986801147e-01 2.8230689465999603e-02 + <_> + + 0 -1 2029 4.0959479520097375e-04 + + 5.3656630218029022e-02 -1.8243549764156342e-01 + <_> + + 0 -1 2030 -2.5011589750647545e-03 + + 1.6313549876213074e-01 -6.0954701155424118e-02 + <_> + + 0 -1 2031 -1.4622169546782970e-02 + + -4.9988400936126709e-01 1.8572760745882988e-02 + <_> + + 0 -1 2032 -6.3790678977966309e-02 + + -4.8329600691795349e-01 1.7903389409184456e-02 + <_> + + 0 -1 2033 -1.6671139746904373e-02 + + -2.6661589741706848e-01 3.4886009991168976e-02 + <_> + + 0 -1 2034 -1.2526069767773151e-02 + + 3.4061339497566223e-01 -2.8094800189137459e-02 + <_> + + 0 -1 2035 4.8325158655643463e-02 + + -3.3176191151142120e-02 2.9025658965110779e-01 + <_> + + 0 -1 2036 1.3246550224721432e-03 + + 3.7181440740823746e-02 -2.6850658655166626e-01 + <_> + + 0 -1 2037 -2.2221319377422333e-01 + + -8.9892768859863281e-01 1.0064439848065376e-02 + <_> + + 0 -1 2038 1.2954319827258587e-03 + + -1.0161759704351425e-01 9.0588621795177460e-02 + <_> + + 0 -1 2039 1.3794669881463051e-02 + + -7.4244648218154907e-02 1.4314259588718414e-01 + <_> + + 0 -1 2040 8.5643801139667630e-04 + + 5.9753969311714172e-02 -1.8660190701484680e-01 + <_> + + 0 -1 2041 -2.3317540064454079e-02 + + -6.9259917736053467e-01 1.3667319901287556e-02 + <_> + + 0 -1 2042 1.6281680436804891e-03 + + -6.1060748994350433e-02 1.5505290031433105e-01 + <_> + + 0 -1 2043 -1.2380329892039299e-02 + + -1.5146850049495697e-01 6.1767600476741791e-02 + <_> + + 0 -1 2044 1.8393599893897772e-03 + + -3.7167988717556000e-02 2.4822179973125458e-01 + <_> + + 0 -1 2045 3.5529870074242353e-03 + + -2.9200790449976921e-02 3.3592289686203003e-01 + <_> + + 0 -1 2046 1.0305979521945119e-03 + + 3.7694081664085388e-02 -2.9085698723793030e-01 + <_> + + 0 -1 2047 2.9916960556874983e-05 + + -8.8014192879199982e-02 1.0515210032463074e-01 + <_> + + 0 -1 2048 -4.1505339322611690e-04 + + 6.5726242959499359e-02 -1.5021100640296936e-01 + <_> + + 0 -1 2049 -1.4631619706051424e-05 + + 7.8170351684093475e-02 -1.1962439864873886e-01 + <_> + + 0 -1 2050 -4.3779090046882629e-03 + + 2.0752459764480591e-01 -5.2089329808950424e-02 + <_> + + 0 -1 2051 4.7036199248395860e-04 + + 6.3348479568958282e-02 -1.8767729401588440e-01 + <_> + + 0 -1 2052 1.4788640328333713e-05 + + -9.5828853547573090e-02 1.1213099956512451e-01 + <_> + + 0 -1 2053 3.7048431113362312e-04 + + -9.8723009228706360e-02 9.8647676408290863e-02 + <_> + + 0 -1 2054 -1.8590339459478855e-03 + + -2.6873630285263062e-01 3.8352578878402710e-02 + <_> + + 0 -1 2055 -7.0764529518783092e-03 + + -1.5984000265598297e-01 5.7841330766677856e-02 + <_> + + 0 -1 2056 1.4920010231435299e-02 + + -5.1178149878978729e-02 1.9242909550666809e-01 + <_> + + 0 -1 2057 -5.0713191740214825e-03 + + 1.3863259553909302e-01 -1.1121229827404022e-01 + <_> + + 0 -1 2058 -1.5005500055849552e-02 + + 4.8583930730819702e-01 -1.8811760470271111e-02 + <_> + + 0 -1 2059 -2.0439480431377888e-03 + + -3.2754859328269958e-01 2.7816310524940491e-02 + <_> + + 0 -1 2060 -1.3060690253041685e-04 + + 9.8868042230606079e-02 -8.4957577288150787e-02 + <_> + + 0 -1 2061 8.8742617517709732e-03 + + -2.5235600769519806e-02 3.2389879226684570e-01 + <_> + + 0 -1 2062 7.0397509261965752e-04 + + 5.6327521800994873e-02 -1.7392079532146454e-01 + <_> + + 0 -1 2063 -2.5402469560503960e-02 + + 1.9675390422344208e-01 -4.7362301498651505e-02 + <_> + + 0 -1 2064 -9.3743661418557167e-03 + + -1.5204219520092010e-01 5.9932630509138107e-02 + <_> + 178 + -1.3418790102005005e+00 + + <_> + + 0 -1 2065 4.0453020483255386e-02 + + -2.3637829720973969e-01 2.8865531086921692e-01 + <_> + + 0 -1 2066 -1.1056049726903439e-02 + + 1.6062900424003601e-01 -2.6259741187095642e-01 + <_> + + 0 -1 2067 -3.9778949576430023e-04 + + 1.1591099947690964e-01 -2.7081018686294556e-01 + <_> + + 0 -1 2068 1.0191530454903841e-03 + + -2.0969370007514954e-01 1.3642899692058563e-01 + <_> + + 0 -1 2069 3.6101979203522205e-03 + + -2.1725459396839142e-01 1.2617790699005127e-01 + <_> + + 0 -1 2070 4.4545531272888184e-04 + + -1.5974539518356323e-01 1.2596489489078522e-01 + <_> + + 0 -1 2071 5.8226222172379494e-03 + + -1.5484449267387390e-01 9.7783811390399933e-02 + <_> + + 0 -1 2072 -2.1416260860860348e-03 + + -3.6377671360969543e-01 4.0103349834680557e-02 + <_> + + 0 -1 2073 -2.6691620587371290e-04 + + 8.4470756351947784e-02 -1.7496100068092346e-01 + <_> + + 0 -1 2074 -5.4352330043911934e-03 + + -3.1830930709838867e-01 4.9786038696765900e-02 + <_> + + 0 -1 2075 -1.5426309546455741e-03 + + -2.1333709359169006e-01 6.4884513616561890e-02 + <_> + + 0 -1 2076 -2.7932289522141218e-03 + + 2.5483250617980957e-01 -6.5170928835868835e-02 + <_> + + 0 -1 2077 1.3845940120518208e-03 + + 3.9304580539464951e-02 -3.7404829263687134e-01 + <_> + + 0 -1 2078 -3.2193479128181934e-03 + + 2.6290428638458252e-01 -5.6396361440420151e-02 + <_> + + 0 -1 2079 -9.7977351397275925e-03 + + 3.2044389843940735e-01 -4.6382289379835129e-02 + <_> + + 0 -1 2080 -1.7625789623707533e-03 + + 1.5050819516181946e-01 -8.8892437517642975e-02 + <_> + + 0 -1 2081 -3.6096889525651932e-02 + + -4.3137839436531067e-01 3.1785801053047180e-02 + <_> + + 0 -1 2082 2.0813369192183018e-03 + + -6.5957918763160706e-02 1.9275289773941040e-01 + <_> + + 0 -1 2083 -6.0533690266311169e-03 + + -3.1374609470367432e-01 5.1007431000471115e-02 + <_> + + 0 -1 2084 3.7253410555422306e-03 + + -6.1402589082717896e-02 2.5631371140480042e-01 + <_> + + 0 -1 2085 5.0668260082602501e-03 + + 5.7962730526924133e-02 -2.4340160191059113e-01 + <_> + + 0 -1 2086 2.8038739692419767e-03 + + -7.0329703390598297e-02 2.1375860273838043e-01 + <_> + + 0 -1 2087 1.5925259795039892e-03 + + 2.6637760922312737e-02 -5.1129138469696045e-01 + <_> + + 0 -1 2088 2.9422679290291853e-05 + + -2.1710200607776642e-01 6.4985051751136780e-02 + <_> + + 0 -1 2089 -2.2399190129362978e-05 + + 8.1582568585872650e-02 -1.5135610103607178e-01 + <_> + + 0 -1 2090 6.7072827368974686e-04 + + 1.0502190142869949e-01 -1.1787360161542892e-01 + <_> + + 0 -1 2091 -1.5262300148606300e-03 + + -3.4620371460914612e-01 3.9244089275598526e-02 + <_> + + 0 -1 2092 1.8151829717680812e-03 + + -7.4669457972049713e-02 1.6847759485244751e-01 + <_> + + 0 -1 2093 5.8078771689906716e-04 + + -9.7952410578727722e-02 1.4192749559879303e-01 + <_> + + 0 -1 2094 -8.9623313397169113e-03 + + -1.9601620733737946e-01 6.6268041729927063e-02 + <_> + + 0 -1 2095 1.1146809905767441e-01 + + 1.7000140622258186e-02 -6.4917707443237305e-01 + <_> + + 0 -1 2096 -1.7872039461508393e-04 + + -1.4053599536418915e-01 8.0108702182769775e-02 + <_> + + 0 -1 2097 -4.6587768010795116e-03 + + 1.9530229270458221e-01 -5.8602340519428253e-02 + <_> + + 0 -1 2098 3.4576000180095434e-03 + + 5.9805799275636673e-02 -2.1990789473056793e-01 + <_> + + 0 -1 2099 -1.9979270291514695e-04 + + -1.3726149499416351e-01 8.3430230617523193e-02 + <_> + + 0 -1 2100 -4.8079751431941986e-03 + + 5.5041921138763428e-01 -2.0715299993753433e-02 + <_> + + 0 -1 2101 -7.3389292083447799e-06 + + 7.5302027165889740e-02 -1.4486590027809143e-01 + <_> + + 0 -1 2102 -3.5799799952656031e-03 + + 2.6277220249176025e-01 -4.2550459504127502e-02 + <_> + + 0 -1 2103 1.1689850362017751e-03 + + -1.0984169691801071e-01 1.2971849739551544e-01 + <_> + + 0 -1 2104 3.2639548182487488e-02 + + 3.1038379296660423e-02 -3.9474260807037354e-01 + <_> + + 0 -1 2105 1.1596709955483675e-03 + + 5.2021898329257965e-02 -2.2035829722881317e-01 + <_> + + 0 -1 2106 -1.4262240147218108e-03 + + 1.0745699703693390e-01 -1.0067079961299896e-01 + <_> + + 0 -1 2107 -2.3668329417705536e-01 + + -7.3174351453781128e-01 1.6999609768390656e-02 + <_> + + 0 -1 2108 1.9279429398011416e-04 + + -1.3248440623283386e-01 7.8186027705669403e-02 + <_> + + 0 -1 2109 -1.7292149364948273e-02 + + -9.7199842333793640e-02 1.1069560050964355e-01 + <_> + + 0 -1 2110 -1.2431619688868523e-03 + + 1.7741470038890839e-01 -7.2548337280750275e-02 + <_> + + 0 -1 2111 2.1754560293629766e-05 + + -9.6952050924301147e-02 1.0899409651756287e-01 + <_> + + 0 -1 2112 3.0975879053585231e-04 + + 6.2249891459941864e-02 -1.7384719848632812e-01 + <_> + + 0 -1 2113 -1.1590570211410522e-02 + + 2.6162809133529663e-01 -4.1994079947471619e-02 + <_> + + 0 -1 2114 1.8150920048356056e-02 + + 2.6353549212217331e-02 -4.4685411453247070e-01 + <_> + + 0 -1 2115 8.0223509576171637e-04 + + -1.2143869698047638e-01 8.7092787027359009e-02 + <_> + + 0 -1 2116 -1.4258639421314001e-03 + + 1.9236080348491669e-01 -5.2987430244684219e-02 + <_> + + 0 -1 2117 -2.4536260752938688e-04 + + -1.6683700680732727e-01 6.5604820847511292e-02 + <_> + + 0 -1 2118 2.2050029656384140e-05 + + -9.3477472662925720e-02 1.0711719840764999e-01 + <_> + + 0 -1 2119 4.7658861149102449e-04 + + -8.0596633255481720e-02 1.2512689828872681e-01 + <_> + + 0 -1 2120 4.0533850551582873e-04 + + 6.8990617990493774e-02 -1.5740759670734406e-01 + <_> + + 0 -1 2121 -1.6471749171614647e-02 + + -5.9667861461639404e-01 1.8876109272241592e-02 + <_> + + 0 -1 2122 2.2267159074544907e-03 + + -4.5803830027580261e-02 2.3071089386940002e-01 + <_> + + 0 -1 2123 4.9383189529180527e-02 + + 1.9837729632854462e-02 -5.9306108951568604e-01 + <_> + + 0 -1 2124 8.6411498486995697e-03 + + 2.8697369620203972e-02 -3.5161119699478149e-01 + <_> + + 0 -1 2125 -4.8241391777992249e-03 + + 2.2474339604377747e-01 -4.8463210463523865e-02 + <_> + + 0 -1 2126 -8.6174849420785904e-03 + + -5.7088959217071533e-01 1.9183190539479256e-02 + <_> + + 0 -1 2127 -5.7220697635784745e-04 + + 1.1697269976139069e-01 -8.8938057422637939e-02 + <_> + + 0 -1 2128 1.1997730471193790e-03 + + 8.4181122481822968e-02 -1.2565499544143677e-01 + <_> + + 0 -1 2129 2.6049909647554159e-03 + + 5.9500031173229218e-02 -2.0638149976730347e-01 + <_> + + 0 -1 2130 -1.4789920533075929e-03 + + 2.5114980340003967e-01 -4.7535050660371780e-02 + <_> + + 0 -1 2131 -2.5746721029281616e-01 + + -7.3038768768310547e-01 1.5440680086612701e-02 + <_> + + 0 -1 2132 -1.2104290071874857e-03 + + 1.8646970391273499e-01 -5.5789809674024582e-02 + <_> + + 0 -1 2133 3.4140399657189846e-04 + + 6.7707672715187073e-02 -1.5597160160541534e-01 + <_> + + 0 -1 2134 3.1749058980494738e-03 + + 3.5003460943698883e-02 -2.9529309272766113e-01 + <_> + + 0 -1 2135 4.4338819384574890e-01 + + 1.4550019986927509e-02 -6.1034661531448364e-01 + <_> + + 0 -1 2136 3.9458259940147400e-02 + + -4.5779328793287277e-02 2.2927519679069519e-01 + <_> + + 0 -1 2137 3.0410829931497574e-03 + + 1.6304129734635353e-02 -5.7491117715835571e-01 + <_> + + 0 -1 2138 -1.4853020012378693e-01 + + -5.6220901012420654e-01 1.5771050006151199e-02 + <_> + + 0 -1 2139 4.4339009036775678e-05 + + -9.1284371912479401e-02 1.0920979827642441e-01 + <_> + + 0 -1 2140 2.2139810025691986e-03 + + -4.7668289393186569e-02 2.2291789948940277e-01 + <_> + + 0 -1 2141 8.7831966578960419e-02 + + 2.6718059554696083e-02 -4.0396329760551453e-01 + <_> + + 0 -1 2142 -2.2798930294811726e-03 + + -1.6160930693149567e-01 6.6071107983589172e-02 + <_> + + 0 -1 2143 -1.4653969628852792e-05 + + 8.5298359394073486e-02 -1.2724019587039948e-01 + <_> + + 0 -1 2144 1.2313240440562367e-03 + + -6.5917477011680603e-02 1.6606420278549194e-01 + <_> + + 0 -1 2145 4.5110988616943359e-01 + + 1.3457960449159145e-02 -7.1525502204895020e-01 + <_> + + 0 -1 2146 -2.4518640711903572e-02 + + -4.3282639980316162e-01 2.0400719717144966e-02 + <_> + + 0 -1 2147 -1.1901959805982187e-04 + + 8.9420333504676819e-02 -1.1834760010242462e-01 + <_> + + 0 -1 2148 -1.3584910193458200e-03 + + 2.4722290039062500e-01 -4.3907400220632553e-02 + <_> + + 0 -1 2149 6.9289728999137878e-03 + + -5.6832619011402130e-02 1.6665740311145782e-01 + <_> + + 0 -1 2150 -6.9041848182678223e-03 + + -1.2742209434509277e-01 7.9310603439807892e-02 + <_> + + 0 -1 2151 1.2964820489287376e-03 + + 7.2462439537048340e-02 -1.6863870620727539e-01 + <_> + + 0 -1 2152 2.3060059174895287e-02 + + -5.0913080573081970e-02 2.1664789319038391e-01 + <_> + + 0 -1 2153 -4.0960568934679031e-02 + + -5.6479138135910034e-01 1.9609550014138222e-02 + <_> + + 0 -1 2154 7.4867479270324111e-05 + + -6.9450333714485168e-02 1.4615139365196228e-01 + <_> + + 0 -1 2155 -6.8458272144198418e-03 + + 6.6049978137016296e-02 -2.0840729773044586e-01 + <_> + + 0 -1 2156 1.9395649433135986e-02 + + 1.6168899834156036e-02 -5.6396162509918213e-01 + <_> + + 0 -1 2157 -1.6121419321279973e-04 + + -1.3194569945335388e-01 7.4094116687774658e-02 + <_> + + 0 -1 2158 6.6511691547930241e-03 + + -5.5261820554733276e-02 1.9894389808177948e-01 + <_> + + 0 -1 2159 4.5172171667218208e-03 + + 3.2863661646842957e-02 -3.0980890989303589e-01 + <_> + + 0 -1 2160 -4.0247041732072830e-02 + + -6.8980348110198975e-01 1.2438739649951458e-02 + <_> + + 0 -1 2161 7.2544030444987584e-06 + + -9.5949873328208923e-02 9.7919799387454987e-02 + <_> + + 0 -1 2162 -1.6025650501251221e-01 + + 4.9472638964653015e-01 -1.8643429502844810e-02 + <_> + + 0 -1 2163 5.0598900998011231e-04 + + -1.2216579914093018e-01 8.6699098348617554e-02 + <_> + + 0 -1 2164 -1.0506899654865265e-01 + + -8.5855627059936523e-01 8.2870386540889740e-03 + <_> + + 0 -1 2165 -1.8218380212783813e-01 + + -5.8477312326431274e-01 1.3160600326955318e-02 + <_> + + 0 -1 2166 1.6435410827398300e-02 + + 1.6296360641717911e-02 -5.5137562751770020e-01 + <_> + + 0 -1 2167 1.9282519817352295e-02 + + -2.5027479976415634e-02 4.3645161390304565e-01 + <_> + + 0 -1 2168 3.4772949293255806e-03 + + 3.1632781028747559e-02 -2.9246759414672852e-01 + <_> + + 0 -1 2169 2.2620869800448418e-02 + + -2.3985739797353745e-02 4.3105301260948181e-01 + <_> + + 0 -1 2170 -1.8172320723533630e-01 + + -1.8037860095500946e-01 5.1903489977121353e-02 + <_> + + 0 -1 2171 -4.3819830752909184e-03 + + -2.8302851319313049e-01 3.3024039119482040e-02 + <_> + + 0 -1 2172 -1.5246120281517506e-02 + + 2.3519919812679291e-01 -4.1242249310016632e-02 + <_> + + 0 -1 2173 3.9043289422988892e-01 + + 2.8530629351735115e-02 -3.5845771431922913e-01 + <_> + + 0 -1 2174 3.9103450253605843e-03 + + -5.1523748785257339e-02 1.7829769849777222e-01 + <_> + + 0 -1 2175 -1.0847560130059719e-02 + + -4.8355281352996826e-01 1.8765790387988091e-02 + <_> + + 0 -1 2176 5.7015339843928814e-03 + + 1.2250830419361591e-02 -7.0457488298416138e-01 + <_> + + 0 -1 2177 -1.1917110532522202e-03 + + 1.8404430150985718e-01 -5.0144620239734650e-02 + <_> + + 0 -1 2178 4.0988530963659286e-04 + + -9.7399666905403137e-02 1.0874579846858978e-01 + <_> + + 0 -1 2179 4.5295488089323044e-03 + + 4.5356839895248413e-02 -2.1069140732288361e-01 + <_> + + 0 -1 2180 -5.4893731139600277e-03 + + 2.9642790555953979e-01 -3.5870831459760666e-02 + <_> + + 0 -1 2181 1.9906361121684313e-03 + + 3.4332871437072754e-02 -3.1506469845771790e-01 + <_> + + 0 -1 2182 8.3358466625213623e-02 + + 1.9684519618749619e-02 -4.4279980659484863e-01 + <_> + + 0 -1 2183 3.0363420955836773e-03 + + -3.3693831413984299e-02 2.6669681072235107e-01 + <_> + + 0 -1 2184 5.7799968868494034e-02 + + 8.5875885561108589e-03 -9.8965817689895630e-01 + <_> + + 0 -1 2185 -7.8585641458630562e-03 + + 2.0088459551334381e-01 -4.6583641320466995e-02 + <_> + + 0 -1 2186 1.9253200152888894e-03 + + 4.7922369092702866e-02 -2.2640110552310944e-01 + <_> + + 0 -1 2187 1.0996909812092781e-02 + + 1.6258660703897476e-02 -5.4048168659210205e-01 + <_> + + 0 -1 2188 1.6405170026700944e-04 + + -1.1542510241270065e-01 7.6001413166522980e-02 + <_> + + 0 -1 2189 5.3780381567776203e-03 + + 1.1179029941558838e-01 -8.4179848432540894e-02 + <_> + + 0 -1 2190 2.2905960213392973e-03 + + -5.7969480752944946e-02 1.6899429261684418e-01 + <_> + + 0 -1 2191 6.3102580606937408e-03 + + 4.1471399366855621e-02 -2.0478209853172302e-01 + <_> + + 0 -1 2192 -1.4342570304870605e-01 + + -7.8573477268218994e-01 1.1634309776127338e-02 + <_> + + 0 -1 2193 1.2364640133455396e-03 + + -5.1800731569528580e-02 1.7734350264072418e-01 + <_> + + 0 -1 2194 -2.0046550780534744e-02 + + -3.1420910358428955e-01 2.8849070891737938e-02 + <_> + + 0 -1 2195 1.0868109762668610e-01 + + 1.6183530911803246e-02 -5.1956307888031006e-01 + <_> + + 0 -1 2196 5.1173489540815353e-02 + + -3.2460309565067291e-02 3.1230181455612183e-01 + <_> + + 0 -1 2197 1.3251069933176041e-02 + + 2.3655060678720474e-02 -4.4210249185562134e-01 + <_> + + 0 -1 2198 -2.0110961049795151e-03 + + 1.0359399765729904e-01 -9.3961462378501892e-02 + <_> + + 0 -1 2199 -3.2843051012605429e-03 + + 3.3196929097175598e-01 -2.9921280220150948e-02 + <_> + + 0 -1 2200 8.8341237278655171e-04 + + 5.9891819953918457e-02 -1.6192750632762909e-01 + <_> + + 0 -1 2201 8.4265992045402527e-03 + + -3.6928750574588776e-02 2.3691199719905853e-01 + <_> + + 0 -1 2202 -1.4503750207950361e-05 + + 7.7373847365379333e-02 -1.3290609419345856e-01 + <_> + + 0 -1 2203 8.0891689285635948e-03 + + 2.8817569836974144e-02 -3.0961230397224426e-01 + <_> + + 0 -1 2204 1.0339939966797829e-02 + + -2.4850569665431976e-02 3.7060049176216125e-01 + <_> + + 0 -1 2205 -2.2790539078414440e-03 + + -2.2051370143890381e-01 4.1877530515193939e-02 + <_> + + 0 -1 2206 -1.7716860165819526e-03 + + 1.4205080270767212e-01 -6.5252363681793213e-02 + <_> + + 0 -1 2207 -6.9317207671701908e-03 + + -3.3556079864501953e-01 2.7605969458818436e-02 + <_> + + 0 -1 2208 -4.2506060563027859e-03 + + 2.3591980338096619e-01 -3.7345319986343384e-02 + <_> + + 0 -1 2209 1.5317599754780531e-03 + + 3.9657011628150940e-02 -2.3438200354576111e-01 + <_> + + 0 -1 2210 1.4941049739718437e-03 + + -6.0311999171972275e-02 1.4468440413475037e-01 + <_> + + 0 -1 2211 -5.2249869331717491e-03 + + -4.0660250186920166e-01 2.3257270455360413e-02 + <_> + + 0 -1 2212 6.4759532688185573e-04 + + 6.4828239381313324e-02 -1.2987309694290161e-01 + <_> + + 0 -1 2213 3.2836120226420462e-04 + + 6.1917629092931747e-02 -1.4835810661315918e-01 + <_> + + 0 -1 2214 -3.4691279288381338e-03 + + 1.5662840008735657e-01 -5.7200349867343903e-02 + <_> + + 0 -1 2215 4.5903379213996232e-04 + + 5.2517898380756378e-02 -1.9093179702758789e-01 + <_> + + 0 -1 2216 -2.6641879230737686e-03 + + 1.5235909819602966e-01 -6.8154700100421906e-02 + <_> + + 0 -1 2217 -8.2513149827718735e-03 + + 3.6680310964584351e-01 -2.8480609878897667e-02 + <_> + + 0 -1 2218 7.1076201274991035e-03 + + 1.5445350110530853e-01 -6.7992970347404480e-02 + <_> + + 0 -1 2219 -4.3808001279830933e-01 + + -2.8871530294418335e-01 3.6639489233493805e-02 + <_> + + 0 -1 2220 6.3719082390889525e-04 + + -1.5995030105113983e-01 5.9860341250896454e-02 + <_> + + 0 -1 2221 -1.9303169392514974e-04 + + 8.6703971028327942e-02 -1.0924819856882095e-01 + <_> + + 0 -1 2222 3.0723758973181248e-03 + + 4.8543959856033325e-02 -1.7700059711933136e-01 + <_> + + 0 -1 2223 1.8341860268265009e-03 + + -5.1901239901781082e-02 1.8232129514217377e-01 + <_> + + 0 -1 2224 6.3172310590744019e-02 + + 2.3308899253606796e-02 -4.2870610952377319e-01 + <_> + + 0 -1 2225 2.4458649568259716e-03 + + -8.6425289511680603e-02 1.1974500119686127e-01 + <_> + + 0 -1 2226 1.1953969951719046e-03 + + 1.1685889959335327e-01 -1.0430490225553513e-01 + <_> + + 0 -1 2227 3.1024610507301986e-04 + + 6.2281988561153412e-02 -1.9196020066738129e-01 + <_> + + 0 -1 2228 -3.1970158219337463e-02 + + -6.4184898138046265e-01 1.3087569735944271e-02 + <_> + + 0 -1 2229 -1.0163170518353581e-03 + + -2.5210660696029663e-01 3.4096211194992065e-02 + <_> + + 0 -1 2230 -5.1776540931314230e-04 + + 1.1874090135097504e-01 -8.2813777029514313e-02 + <_> + + 0 -1 2231 -4.0794219821691513e-03 + + -1.6135309636592865e-01 6.5708972513675690e-02 + <_> + + 0 -1 2232 9.9409874528646469e-03 + + -3.0160220339894295e-02 3.5104531049728394e-01 + <_> + + 0 -1 2233 1.9788760691881180e-03 + + -4.4945359230041504e-02 2.3295649886131287e-01 + <_> + + 0 -1 2234 1.0975249856710434e-01 + + 1.6620220616459846e-02 -6.0423362255096436e-01 + <_> + + 0 -1 2235 -9.2024728655815125e-03 + + -5.6000357866287231e-01 1.4122909866273403e-02 + <_> + + 0 -1 2236 5.8626191457733512e-04 + + -1.0622119903564453e-01 8.4198087453842163e-02 + <_> + + 0 -1 2237 3.3601750619709492e-03 + + -2.1583529189229012e-02 4.1820129752159119e-01 + <_> + + 0 -1 2238 -4.8143669962882996e-02 + + -7.2092157602310181e-01 1.4954459853470325e-02 + <_> + + 0 -1 2239 1.2209859676659107e-02 + + 2.1544290706515312e-02 -3.5482150316238403e-01 + <_> + + 0 -1 2240 -3.9961449801921844e-02 + + -8.8848268985748291e-01 9.4328429549932480e-03 + <_> + + 0 -1 2241 1.5312479808926582e-03 + + -6.4070880413055420e-02 1.3569630682468414e-01 + <_> + + 0 -1 2242 8.9791123173199594e-05 + + 5.0932768732309341e-02 -1.8393670022487640e-01 + <_> + 195 + -1.3934370279312134e+00 + + <_> + + 0 -1 2243 -3.8741368800401688e-02 + + 2.8778830170631409e-01 -2.3312190175056458e-01 + <_> + + 0 -1 2244 -2.5511500425636768e-03 + + 2.5108599662780762e-01 -2.1116070449352264e-01 + <_> + + 0 -1 2245 -2.7973129181191325e-04 + + 8.9916922152042389e-02 -3.4069269895553589e-01 + <_> + + 0 -1 2246 1.1981100542470813e-03 + + -2.2542229294776917e-01 1.3602660596370697e-01 + <_> + + 0 -1 2247 -5.6686070747673512e-03 + + 8.2847259938716888e-02 -2.8080710768699646e-01 + <_> + + 0 -1 2248 -2.7642669738270342e-04 + + 1.0485479980707169e-01 -1.8848650157451630e-01 + <_> + + 0 -1 2249 2.0516710355877876e-03 + + 3.4714280627667904e-03 -4.8608478903770447e-01 + <_> + + 0 -1 2250 -1.4435249795496929e-05 + + 8.4275819361209869e-02 -1.9356100261211395e-01 + <_> + + 0 -1 2251 7.4418791336938739e-04 + + -1.2526750564575195e-01 1.1769519746303558e-01 + <_> + + 0 -1 2252 -4.9923241138458252e-02 + + -4.0080299973487854e-01 2.7910390868782997e-02 + <_> + + 0 -1 2253 9.2694535851478577e-03 + + -9.1088913381099701e-02 1.7550450563430786e-01 + <_> + + 0 -1 2254 -7.4646030552685261e-03 + + 1.6380469501018524e-01 -1.0385499894618988e-01 + <_> + + 0 -1 2255 -8.1985909491777420e-03 + + -1.9168980419635773e-01 8.5415020585060120e-02 + <_> + + 0 -1 2256 -8.1690691877156496e-04 + + -3.0793309211730957e-01 4.0833581238985062e-02 + <_> + + 0 -1 2257 2.8902110643684864e-03 + + -5.0324201583862305e-02 2.9259419441223145e-01 + <_> + + 0 -1 2258 8.0008199438452721e-03 + + -4.6863578259944916e-02 3.1964871287345886e-01 + <_> + + 0 -1 2259 -5.8349180035293102e-03 + + -1.5489180386066437e-01 8.8137261569499969e-02 + <_> + + 0 -1 2260 -1.2492289533838630e-03 + + -3.6294621229171753e-01 3.6120988428592682e-02 + <_> + + 0 -1 2261 2.2950479760766029e-02 + + -4.7119770199060440e-02 2.8532719612121582e-01 + <_> + + 0 -1 2262 -6.9193239323794842e-03 + + 1.7873649299144745e-01 -7.3547556996345520e-02 + <_> + + 0 -1 2263 -1.9392240210436285e-04 + + 1.3911420106887817e-01 -9.2489100992679596e-02 + <_> + + 0 -1 2264 1.9811228848993778e-03 + + 4.3448008596897125e-02 -3.0942690372467041e-01 + <_> + + 0 -1 2265 1.6018489375710487e-02 + + -3.9718918502330780e-02 3.4248939156532288e-01 + <_> + + 0 -1 2266 9.3541406095027924e-03 + + 3.2482650130987167e-02 -4.4502100348472595e-01 + <_> + + 0 -1 2267 -1.3822780456393957e-03 + + 2.1627070009708405e-01 -5.6410200893878937e-02 + <_> + + 0 -1 2268 2.5065820664167404e-02 + + 2.3123230785131454e-02 -5.3954011201858521e-01 + <_> + + 0 -1 2269 5.9798579663038254e-02 + + 2.8747579082846642e-02 -3.6572590470314026e-01 + <_> + + 0 -1 2270 -2.7519159484654665e-03 + + 1.7491349577903748e-01 -6.3990972936153412e-02 + <_> + + 0 -1 2271 -3.2093640416860580e-02 + + -2.5695550441741943e-01 4.0945108979940414e-02 + <_> + + 0 -1 2272 -2.3349749390035868e-03 + + 1.5433880686759949e-01 -7.2836689651012421e-02 + <_> + + 0 -1 2273 2.6897678617388010e-04 + + 7.2721242904663086e-02 -1.5513220429420471e-01 + <_> + + 0 -1 2274 -8.9813407976180315e-04 + + -2.0699620246887207e-01 5.3738221526145935e-02 + <_> + + 0 -1 2275 3.8521869573742151e-03 + + 3.6562010645866394e-02 -2.8075969219207764e-01 + <_> + + 0 -1 2276 1.3440090231597424e-02 + + -3.6046478897333145e-02 3.1876960396766663e-01 + <_> + + 0 -1 2277 7.7129118144512177e-03 + + 9.5960013568401337e-02 -1.1787489801645279e-01 + <_> + + 0 -1 2278 2.1991880203131586e-04 + + -1.3249869644641876e-01 8.4939576685428619e-02 + <_> + + 0 -1 2279 -7.4781170114874840e-03 + + -2.3073039948940277e-01 5.0310928374528885e-02 + <_> + + 0 -1 2280 8.9175272732973099e-03 + + -5.3924769163131714e-02 2.0320640504360199e-01 + <_> + + 0 -1 2281 2.2819850128144026e-03 + + 3.5264909267425537e-02 -3.0841338634490967e-01 + <_> + + 0 -1 2282 2.6413009036332369e-03 + + -3.2939229160547256e-02 3.1721460819244385e-01 + <_> + + 0 -1 2283 -1.4605689793825150e-03 + + -1.7154279351234436e-01 6.3374556601047516e-02 + <_> + + 0 -1 2284 -3.1993410084396601e-03 + + 3.4501680731773376e-01 -3.0717490240931511e-02 + <_> + + 0 -1 2285 2.3919229861348867e-03 + + 2.0887520164251328e-02 -4.8564168810844421e-01 + <_> + + 0 -1 2286 -3.5997610539197922e-03 + + 2.8900530934333801e-01 -3.5605821758508682e-02 + <_> + + 0 -1 2287 -1.4754279618500732e-05 + + 7.2744622826576233e-02 -1.4580619335174561e-01 + <_> + + 0 -1 2288 1.5968360006809235e-02 + + 1.2548550032079220e-02 -6.7445451021194458e-01 + <_> + + 0 -1 2289 -4.0752082131803036e-03 + + 3.1447470188140869e-01 -3.2155450433492661e-02 + <_> + + 0 -1 2290 7.5432872108649462e-05 + + -9.9738657474517822e-02 8.9665092527866364e-02 + <_> + + 0 -1 2291 -3.9632249623537064e-02 + + 2.7617400884628296e-01 -3.4800730645656586e-02 + <_> + + 0 -1 2292 2.9354610887821764e-05 + + -1.4023000001907349e-01 8.8519610464572906e-02 + <_> + + 0 -1 2293 3.1818989664316177e-02 + + 2.9925649985671043e-02 -3.3958339691162109e-01 + <_> + + 0 -1 2294 1.2690100073814392e-01 + + 1.1263390071690083e-02 -8.9932328462600708e-01 + <_> + + 0 -1 2295 -3.5952320322394371e-03 + + 1.7751759290695190e-01 -5.8113489300012589e-02 + <_> + + 0 -1 2296 -1.9231259822845459e-02 + + -3.3173981308937073e-01 4.0587101131677628e-02 + <_> + + 0 -1 2297 2.2836721036583185e-03 + + 3.7206009030342102e-02 -2.8370648622512817e-01 + <_> + + 0 -1 2298 -1.6381660243496299e-03 + + 1.4629170298576355e-01 -6.7781522870063782e-02 + <_> + + 0 -1 2299 2.1173330023884773e-03 + + 2.0773969590663910e-02 -4.3928679823875427e-01 + <_> + + 0 -1 2300 6.4710620790719986e-03 + + -7.2133928537368774e-02 1.3981610536575317e-01 + <_> + + 0 -1 2301 -3.1431620009243488e-03 + + -1.9903449714183807e-01 4.7544669359922409e-02 + <_> + + 0 -1 2302 1.6056640306487679e-03 + + -3.9751898497343063e-02 2.5931739807128906e-01 + <_> + + 0 -1 2303 4.8740832135081291e-03 + + 3.4082379192113876e-02 -2.7611988782882690e-01 + <_> + + 0 -1 2304 -9.6354109700769186e-05 + + -1.0709609836339951e-01 8.3503186702728271e-02 + <_> + + 0 -1 2305 7.7706458978354931e-03 + + -3.0095349997282028e-02 2.9493871331214905e-01 + <_> + + 0 -1 2306 1.3028859393671155e-04 + + -1.1232890188694000e-01 9.4578683376312256e-02 + <_> + + 0 -1 2307 1.2239719508215785e-03 + + 5.1999621093273163e-02 -1.8106269836425781e-01 + <_> + + 0 -1 2308 -8.7549741147086024e-04 + + 1.4276699721813202e-01 -7.5098946690559387e-02 + <_> + + 0 -1 2309 -8.8081993162631989e-02 + + -7.0848828554153442e-01 1.4353640377521515e-02 + <_> + + 0 -1 2310 -3.2854160666465759e-01 + + -4.9687421321868896e-01 1.6604600474238396e-02 + <_> + + 0 -1 2311 9.8696127533912659e-03 + + 1.9364370033144951e-02 -4.9978300929069519e-01 + <_> + + 0 -1 2312 -2.7273639570921659e-03 + + 2.9612520337104797e-01 -3.2831400632858276e-02 + <_> + + 0 -1 2313 9.9100142717361450e-02 + + 1.9799079746007919e-02 -4.7344958782196045e-01 + <_> + + 0 -1 2314 -6.3501899130642414e-03 + + -5.1504719257354736e-01 1.6986010596156120e-02 + <_> + + 0 -1 2315 2.9596920285257511e-05 + + -1.0923019796609879e-01 8.9656107127666473e-02 + <_> + + 0 -1 2316 2.1247670054435730e-02 + + -4.1462190449237823e-02 2.2684270143508911e-01 + <_> + + 0 -1 2317 -7.2977989912033081e-02 + + -6.3227838277816772e-01 1.6678869724273682e-02 + <_> + + 0 -1 2318 1.6230919957160950e-01 + + -2.5661909952759743e-02 3.7533140182495117e-01 + <_> + + 0 -1 2319 -1.4590819773729891e-05 + + 8.5613600909709930e-02 -1.1900989711284637e-01 + <_> + + 0 -1 2320 2.7719149366021156e-03 + + -5.4649248719215393e-02 2.0311379432678223e-01 + <_> + + 0 -1 2321 -8.7484354153275490e-03 + + -7.3674517869949341e-01 1.5571890398859978e-02 + <_> + + 0 -1 2322 1.3679199852049351e-02 + + 7.8902930021286011e-02 -1.1590500175952911e-01 + <_> + + 0 -1 2323 -1.1001150123775005e-02 + + 3.1690821051597595e-01 -3.2384991645812988e-02 + <_> + + 0 -1 2324 3.2964799902401865e-04 + + 5.0016529858112335e-02 -2.0451450347900391e-01 + <_> + + 0 -1 2325 2.7753270696848631e-03 + + -6.7407429218292236e-02 1.5935909748077393e-01 + <_> + + 0 -1 2326 -2.8740249108523130e-03 + + 2.2455960512161255e-01 -5.1031488925218582e-02 + <_> + + 0 -1 2327 8.1631669308990240e-04 + + 6.9849550724029541e-02 -1.4791619777679443e-01 + <_> + + 0 -1 2328 3.7573580630123615e-03 + + 3.1594600528478622e-02 -3.1387978792190552e-01 + <_> + + 0 -1 2329 -3.4902389161288738e-03 + + 1.1638429760932922e-01 -8.5947930812835693e-02 + <_> + + 0 -1 2330 -2.9415320605039597e-02 + + 6.8403428792953491e-01 -1.6140609979629517e-02 + <_> + + 0 -1 2331 -8.8095385581254959e-03 + + -2.0775319635868073e-01 4.9950890243053436e-02 + <_> + + 0 -1 2332 -1.5459939837455750e-02 + + -4.8748460412025452e-01 2.0065559074282646e-02 + <_> + + 0 -1 2333 -3.6481369286775589e-02 + + -5.2395141124725342e-01 1.5850989148020744e-02 + <_> + + 0 -1 2334 -8.8937362306751311e-05 + + -1.3299320638179779e-01 6.6926807165145874e-02 + <_> + + 0 -1 2335 1.4536709932144731e-04 + + 8.7170369923114777e-02 -1.0435820370912552e-01 + <_> + + 0 -1 2336 1.5216879546642303e-01 + + 1.6140580177307129e-02 -6.4970171451568604e-01 + <_> + + 0 -1 2337 -4.2344830580987036e-04 + + 1.8045839667320251e-01 -5.2974540740251541e-02 + <_> + + 0 -1 2338 1.0672640055418015e-03 + + 2.0548380911350250e-02 -4.8242041468620300e-01 + <_> + + 0 -1 2339 1.5491680242121220e-02 + + -5.1540851593017578e-02 1.8363960087299347e-01 + <_> + + 0 -1 2340 6.1393307987600565e-04 + + 2.9983729124069214e-02 -3.1031700968742371e-01 + <_> + + 0 -1 2341 -1.4619939975091256e-05 + + 1.0368499904870987e-01 -9.1634131968021393e-02 + <_> + + 0 -1 2342 6.9900648668408394e-03 + + 1.4683909714221954e-02 -5.9485381841659546e-01 + <_> + + 0 -1 2343 -5.3000110201537609e-03 + + -1.2457770109176636e-01 7.0542782545089722e-02 + <_> + + 0 -1 2344 5.0289987120777369e-04 + + -7.7135689556598663e-02 1.2228710204362869e-01 + <_> + + 0 -1 2345 1.1190979741513729e-02 + + 5.0308059900999069e-02 -1.8091809749603271e-01 + <_> + + 0 -1 2346 1.7019819468259811e-02 + + -3.8816768676042557e-02 3.0851981043815613e-01 + <_> + + 0 -1 2347 -5.8241572696715593e-04 + + 1.2537799775600433e-01 -7.6115481555461884e-02 + <_> + + 0 -1 2348 2.0036669448018074e-02 + + 4.9899481236934662e-02 -1.8082989752292633e-01 + <_> + + 0 -1 2349 -5.4328818805515766e-03 + + 2.3409770429134369e-01 -4.2385410517454147e-02 + <_> + + 0 -1 2350 -2.9535360226873308e-05 + + 5.7630240917205811e-02 -1.5753529965877533e-01 + <_> + + 0 -1 2351 -1.0352370142936707e-01 + + 7.1587741374969482e-01 -1.2989929877221584e-02 + <_> + + 0 -1 2352 -1.2122269719839096e-02 + + -1.4788970351219177e-01 6.6566437482833862e-02 + <_> + + 0 -1 2353 3.0254870653152466e-03 + + -5.4378628730773926e-02 1.7140829563140869e-01 + <_> + + 0 -1 2354 -5.8111078105866909e-03 + + 2.4422149360179901e-01 -5.7652641087770462e-02 + <_> + + 0 -1 2355 8.2830740138888359e-03 + + 2.2720400243997574e-02 -4.2961999773979187e-01 + <_> + + 0 -1 2356 1.2375120073556900e-02 + + 2.2810289636254311e-02 -3.7505629658699036e-01 + <_> + + 0 -1 2357 1.9211210310459137e-02 + + 1.1791059747338295e-02 -6.5529459714889526e-01 + <_> + + 0 -1 2358 3.1843129545450211e-04 + + 6.4130060374736786e-02 -1.3995569944381714e-01 + <_> + + 0 -1 2359 8.4224628517404199e-04 + + -5.4134279489517212e-02 1.7525580525398254e-01 + <_> + + 0 -1 2360 -1.6085049510002136e-01 + + -9.4571417570114136e-01 7.8549478203058243e-03 + <_> + + 0 -1 2361 -1.6774870455265045e-03 + + -1.9166129827499390e-01 4.5787028968334198e-02 + <_> + + 0 -1 2362 -1.8989649834111333e-03 + + 1.5783150494098663e-01 -6.5896913409233093e-02 + <_> + + 0 -1 2363 4.0205760160461068e-04 + + -7.3599092662334442e-02 1.3118380308151245e-01 + <_> + + 0 -1 2364 2.4369959719479084e-03 + + 2.3522870615124702e-02 -4.2745968699455261e-01 + <_> + + 0 -1 2365 -2.8488409952842630e-05 + + 6.3280619680881500e-02 -1.3599009811878204e-01 + <_> + + 0 -1 2366 1.9538639113306999e-02 + + -2.1458270028233528e-02 4.7534748911857605e-01 + <_> + + 0 -1 2367 -1.6530340071767569e-03 + + -1.5323260426521301e-01 5.9455979615449905e-02 + <_> + + 0 -1 2368 -2.1052840165793896e-03 + + 1.1017639935016632e-01 -8.3118103444576263e-02 + <_> + + 0 -1 2369 -4.5266482047736645e-03 + + 2.5815379619598389e-01 -3.5743940621614456e-02 + <_> + + 0 -1 2370 -1.6275560483336449e-04 + + -1.3548290729522705e-01 6.9295726716518402e-02 + <_> + + 0 -1 2371 -3.3048219047486782e-03 + + 1.7806029319763184e-01 -5.2156440913677216e-02 + <_> + + 0 -1 2372 -5.1905210129916668e-03 + + -3.4897321462631226e-01 2.5990990921854973e-02 + <_> + + 0 -1 2373 1.1190810054540634e-01 + + 2.9962029308080673e-02 -2.9597550630569458e-01 + <_> + + 0 -1 2374 -5.2873138338327408e-03 + + 1.8564499914646149e-01 -5.0216298550367355e-02 + <_> + + 0 -1 2375 2.6098049711436033e-03 + + -7.3559276759624481e-02 1.4365130662918091e-01 + <_> + + 0 -1 2376 -2.8581928927451372e-03 + + -1.2605139613151550e-01 7.5433082878589630e-02 + <_> + + 0 -1 2377 -2.9555680157500319e-05 + + 1.0733310133218765e-01 -1.0386200249195099e-01 + <_> + + 0 -1 2378 5.9023561334470287e-05 + + -1.3029119372367859e-01 7.6478391885757446e-02 + <_> + + 0 -1 2379 -4.3344721198081970e-02 + + -6.9299221038818359e-01 1.4173300005495548e-02 + <_> + + 0 -1 2380 -4.6946998685598373e-02 + + -5.5803751945495605e-01 1.2422920204699039e-02 + <_> + + 0 -1 2381 -1.5189060010015965e-02 + + 3.7049770355224609e-01 -2.5564119219779968e-02 + <_> + + 0 -1 2382 1.6361879184842110e-02 + + 2.7049979194998741e-02 -3.4278920292854309e-01 + <_> + + 0 -1 2383 4.0752839297056198e-02 + + 9.3995258212089539e-03 -8.8683712482452393e-01 + <_> + + 0 -1 2384 -1.0879869572818279e-02 + + 5.3260582685470581e-01 -1.9450860098004341e-02 + <_> + + 0 -1 2385 -7.7538257755804807e-05 + + -1.1696249991655350e-01 7.7288232743740082e-02 + <_> + + 0 -1 2386 -4.0953079587779939e-04 + + 1.6214360296726227e-01 -5.3711488842964172e-02 + <_> + + 0 -1 2387 -1.8464239314198494e-02 + + -5.0844788551330566e-01 1.9838189706206322e-02 + <_> + + 0 -1 2388 -5.6788129732012749e-03 + + 3.0203920602798462e-01 -3.0203990638256073e-02 + <_> + + 0 -1 2389 3.8324110209941864e-04 + + -1.6841089725494385e-01 5.4902028292417526e-02 + <_> + + 0 -1 2390 6.4761550165712833e-03 + + 9.5140263438224792e-02 -1.0746160149574280e-01 + <_> + + 0 -1 2391 -2.4377859663218260e-03 + + -1.5647719800472260e-01 6.3407607376575470e-02 + <_> + + 0 -1 2392 5.4156291298568249e-04 + + -6.5962299704551697e-02 1.8441629409790039e-01 + <_> + + 0 -1 2393 2.7917029336094856e-02 + + -2.7590230107307434e-02 3.5032740235328674e-01 + <_> + + 0 -1 2394 4.6622849185951054e-04 + + 4.9628820270299911e-02 -2.2624179720878601e-01 + <_> + + 0 -1 2395 -3.7316799163818359e-02 + + -4.2978170514106750e-01 2.1337680518627167e-02 + <_> + + 0 -1 2396 -2.6047111023217440e-03 + + 3.6650991439819336e-01 -2.5405049324035645e-02 + <_> + + 0 -1 2397 5.1927138119935989e-03 + + 2.6877930387854576e-02 -3.3478578925132751e-01 + <_> + + 0 -1 2398 3.0462879221886396e-03 + + -3.0848290771245956e-02 2.9788359999656677e-01 + <_> + + 0 -1 2399 -4.1325599886476994e-04 + + 7.2986789047718048e-02 -1.2147530168294907e-01 + <_> + + 0 -1 2400 -1.1456120014190674e-01 + + 3.1955468654632568e-01 -3.3379800617694855e-02 + <_> + + 0 -1 2401 -1.3044059742242098e-03 + + -2.0625290274620056e-01 5.4634369909763336e-02 + <_> + + 0 -1 2402 4.5045089791528881e-05 + + -1.1376550048589706e-01 7.8123383224010468e-02 + <_> + + 0 -1 2403 1.8890319624915719e-03 + + -6.5578728914260864e-02 1.7001299560070038e-01 + <_> + + 0 -1 2404 -5.4107961477711797e-04 + + -1.8184140324592590e-01 5.1611810922622681e-02 + <_> + + 0 -1 2405 4.4150161556899548e-03 + + -3.6324780434370041e-02 2.4938449263572693e-01 + <_> + + 0 -1 2406 -2.1878050640225410e-02 + + -1.7643679678440094e-01 5.4811108857393265e-02 + <_> + + 0 -1 2407 -2.0328219980001450e-03 + + 9.4266183674335480e-02 -9.7129411995410919e-02 + <_> + + 0 -1 2408 2.6754371356219053e-04 + + 5.7487931102514267e-02 -1.5442019701004028e-01 + <_> + + 0 -1 2409 1.4061420224606991e-03 + + -5.0268959254026413e-02 1.8814170360565186e-01 + <_> + + 0 -1 2410 2.0725419744849205e-04 + + 7.7659189701080322e-02 -1.2538130581378937e-01 + <_> + + 0 -1 2411 1.8001600401476026e-03 + + -4.2675640434026718e-02 2.2430649399757385e-01 + <_> + + 0 -1 2412 -4.6744230203330517e-03 + + -3.3480471372604370e-01 2.9364420101046562e-02 + <_> + + 0 -1 2413 7.2110369801521301e-03 + + -5.2441328763961792e-02 1.8891569972038269e-01 + <_> + + 0 -1 2414 2.3627521004527807e-03 + + 3.4400060772895813e-02 -2.7200448513031006e-01 + <_> + + 0 -1 2415 -1.3181479880586267e-03 + + 1.7767719924449921e-01 -5.6363631039857864e-02 + <_> + + 0 -1 2416 -1.7586319881957024e-04 + + 9.1534242033958435e-02 -1.0412310063838959e-01 + <_> + + 0 -1 2417 -2.5801590527407825e-04 + + -1.1226779967546463e-01 8.1381812691688538e-02 + <_> + + 0 -1 2418 9.6790950919967145e-05 + + -1.1881929636001587e-01 7.1883186697959900e-02 + <_> + + 0 -1 2419 8.2001117989420891e-03 + + -4.0254529565572739e-02 2.2790899872779846e-01 + <_> + + 0 -1 2420 -6.7277951166033745e-04 + + -7.0979103446006775e-02 1.2775769829750061e-01 + <_> + + 0 -1 2421 3.7424470065161586e-04 + + 6.7096449434757233e-02 -1.3645760715007782e-01 + <_> + + 0 -1 2422 2.5741120334714651e-03 + + -5.4319828748703003e-02 1.6720260679721832e-01 + <_> + + 0 -1 2423 4.3884690967388451e-04 + + 8.2114033401012421e-02 -1.1024679988622665e-01 + <_> + + 0 -1 2424 -4.8180628567934036e-02 + + -7.2217732667922974e-01 1.2223210185766220e-02 + <_> + + 0 -1 2425 9.9836904555559158e-03 + + 1.2195640243589878e-02 -6.7448061704635620e-01 + <_> + + 0 -1 2426 -1.2344559654593468e-03 + + 1.7145380377769470e-01 -5.5381339043378830e-02 + <_> + + 0 -1 2427 -2.7302911039441824e-03 + + -1.3044339418411255e-01 7.4266709387302399e-02 + <_> + + 0 -1 2428 5.5562541820108891e-04 + + -1.0187319666147232e-01 1.0454159975051880e-01 + <_> + + 0 -1 2429 1.5140359755605459e-03 + + 8.2843840122222900e-02 -1.1898560076951981e-01 + <_> + + 0 -1 2430 -7.2555973019916564e-05 + + -1.2512299418449402e-01 7.1132406592369080e-02 + <_> + + 0 -1 2431 -2.4981278693303466e-04 + + -1.3125610351562500e-01 6.8963102996349335e-02 + <_> + + 0 -1 2432 -6.0206428170204163e-03 + + 2.1284450590610504e-01 -4.7603111714124680e-02 + <_> + + 0 -1 2433 -7.2469102451577783e-04 + + 1.0499659925699234e-01 -8.5549630224704742e-02 + <_> + + 0 -1 2434 6.3740357290953398e-04 + + 5.4655481129884720e-02 -1.7353290319442749e-01 + <_> + + 0 -1 2435 1.0901190340518951e-02 + + -5.2832279354333878e-02 1.8752649426460266e-01 + <_> + + 0 -1 2436 7.0734010078012943e-03 + + 6.2958806753158569e-02 -1.6468439996242523e-01 + <_> + + 0 -1 2437 1.3333789538592100e-03 + + -1.2590870261192322e-01 9.4716809689998627e-02 + <_> + 171 + -1.2739679813385010e+00 + + <_> + + 0 -1 2438 6.2053989619016647e-02 + + -2.5427028536796570e-01 2.3591099679470062e-01 + <_> + + 0 -1 2439 5.9534627944231033e-03 + + -2.2544360160827637e-01 1.7751939594745636e-01 + <_> + + 0 -1 2440 7.2477371431887150e-03 + + -1.1398050189018250e-01 2.7556711435317993e-01 + <_> + + 0 -1 2441 -2.2824530024081469e-03 + + 8.6277678608894348e-02 -3.1412398815155029e-01 + <_> + + 0 -1 2442 1.1776019819080830e-02 + + -6.2360338866710663e-02 3.4443479776382446e-01 + <_> + + 0 -1 2443 4.3855342082679272e-03 + + 1.8105769529938698e-02 -5.0128728151321411e-01 + <_> + + 0 -1 2444 1.5859069302678108e-02 + + -7.8765146434307098e-02 2.6402598619461060e-01 + <_> + + 0 -1 2445 3.0654110014438629e-03 + + 3.3250238746404648e-02 -4.3427819013595581e-01 + <_> + + 0 -1 2446 2.5912460405379534e-03 + + 4.0578570216894150e-02 -4.9658200144767761e-01 + <_> + + 0 -1 2447 3.0834769131615758e-04 + + -1.4615769684314728e-01 1.2339019775390625e-01 + <_> + + 0 -1 2448 -2.4314899928867817e-03 + + 7.2739332914352417e-02 -1.9999310374259949e-01 + <_> + + 0 -1 2449 -1.8934230320155621e-03 + + -2.3373599350452423e-01 5.6464370340108871e-02 + <_> + + 0 -1 2450 4.4724289327859879e-03 + + 4.7042880207300186e-02 -3.1258741021156311e-01 + <_> + + 0 -1 2451 1.5810050535947084e-04 + + -1.3098309934139252e-01 1.0137090086936951e-01 + <_> + + 0 -1 2452 1.8755989149212837e-02 + + -3.8183789700269699e-02 3.7149110436439514e-01 + <_> + + 0 -1 2453 -7.4876967119053006e-04 + + 1.9981959462165833e-01 -6.0278389602899551e-02 + <_> + + 0 -1 2454 -9.3861011555418372e-04 + + 8.7467707693576813e-02 -1.6001270711421967e-01 + <_> + + 0 -1 2455 -1.3442989438772202e-03 + + -3.3072051405906677e-01 3.6564111709594727e-02 + <_> + + 0 -1 2456 -1.1384190293028951e-03 + + -2.0630060136318207e-01 5.6614480912685394e-02 + <_> + + 0 -1 2457 2.5966269895434380e-03 + + -6.2676019966602325e-02 1.9195850193500519e-01 + <_> + + 0 -1 2458 1.2499650474637747e-03 + + 5.7390280067920685e-02 -1.9605259597301483e-01 + <_> + + 0 -1 2459 1.1832700110971928e-03 + + -8.5788756608963013e-02 1.3682979345321655e-01 + <_> + + 0 -1 2460 -5.1836138591170311e-03 + + 3.1635698676109314e-01 -4.6736460179090500e-02 + <_> + + 0 -1 2461 -1.3185790181159973e-01 + + -6.2279629707336426e-01 1.8798090517520905e-02 + <_> + + 0 -1 2462 1.8653980223461986e-03 + + 3.8837268948554993e-02 -3.0104321241378784e-01 + <_> + + 0 -1 2463 7.3482480365782976e-04 + + -7.6612047851085663e-02 1.5002079308032990e-01 + <_> + + 0 -1 2464 -1.5738410002086312e-04 + + -1.6588360071182251e-01 7.0020452141761780e-02 + <_> + + 0 -1 2465 5.1779212662950158e-04 + + 7.4801079928874969e-02 -1.6358199715614319e-01 + <_> + + 0 -1 2466 7.5904270634055138e-03 + + -5.1050990819931030e-02 2.4487720429897308e-01 + <_> + + 0 -1 2467 -1.1010250076651573e-02 + + -5.8380401134490967e-01 2.0622009411454201e-02 + <_> + + 0 -1 2468 1.1621849983930588e-01 + + 2.5175059214234352e-02 -4.1262671351432800e-01 + <_> + + 0 -1 2469 -7.4468040838837624e-04 + + 1.2729789316654205e-01 -8.9675500988960266e-02 + <_> + + 0 -1 2470 1.1765309609472752e-02 + + 2.0906679332256317e-02 -5.3172761201858521e-01 + <_> + + 0 -1 2471 -4.4441698119044304e-03 + + 1.4282639324665070e-01 -7.8762412071228027e-02 + <_> + + 0 -1 2472 -4.3369788909330964e-04 + + -2.2131459414958954e-01 5.4554950445890427e-02 + <_> + + 0 -1 2473 -1.9204010022804141e-03 + + -2.5610721111297607e-01 4.0600918233394623e-02 + <_> + + 0 -1 2474 -2.9081690590828657e-03 + + 2.0206320285797119e-01 -5.6222829967737198e-02 + <_> + + 0 -1 2475 -1.4549949810316321e-05 + + 9.0000502765178680e-02 -1.1770520359277725e-01 + <_> + + 0 -1 2476 -5.3217669483274221e-04 + + -1.5299430489540100e-01 6.8925492465496063e-02 + <_> + + 0 -1 2477 -1.4590179547667503e-02 + + 2.1776519715785980e-01 -5.1850430667400360e-02 + <_> + + 0 -1 2478 -4.0213059401139617e-04 + + 9.4017893075942993e-02 -1.1027640104293823e-01 + <_> + + 0 -1 2479 -2.3089889436960220e-03 + + 2.4792349338531494e-01 -5.7857040315866470e-02 + <_> + + 0 -1 2480 3.1196139752864838e-04 + + -1.4021940529346466e-01 7.7247492969036102e-02 + <_> + + 0 -1 2481 -9.1317007318139076e-03 + + 4.0242809057235718e-01 -2.8953509405255318e-02 + <_> + + 0 -1 2482 4.2655199649743736e-04 + + 5.3114388138055801e-02 -2.1355339884757996e-01 + <_> + + 0 -1 2483 3.9956220425665379e-03 + + 4.4066920876502991e-02 -2.2994419932365417e-01 + <_> + + 0 -1 2484 -1.4012040337547660e-03 + + 2.7106899023056030e-01 -4.5171830803155899e-02 + <_> + + 0 -1 2485 3.6064770072698593e-02 + + 3.3628080040216446e-02 -3.2830131053924561e-01 + <_> + + 0 -1 2486 -1.3408949598670006e-04 + + -1.3888040184974670e-01 8.0078050494194031e-02 + <_> + + 0 -1 2487 -6.9480319507420063e-03 + + -3.9315450191497803e-01 2.7302930131554604e-02 + <_> + + 0 -1 2488 -1.4855440240353346e-03 + + 1.9761669635772705e-01 -5.1562070846557617e-02 + <_> + + 0 -1 2489 -1.3757539913058281e-02 + + -5.5620980262756348e-01 1.8301570788025856e-02 + <_> + + 0 -1 2490 8.4021147340536118e-03 + + 1.3690480031073093e-02 -6.3171321153640747e-01 + <_> + + 0 -1 2491 -1.7845979891717434e-04 + + -1.4535990357398987e-01 6.3921131193637848e-02 + <_> + + 0 -1 2492 -1.1326850391924381e-02 + + 6.5870612859725952e-01 -1.6460629180073738e-02 + <_> + + 0 -1 2493 1.5268150018528104e-03 + + -6.0389541089534760e-02 1.5454010665416718e-01 + <_> + + 0 -1 2494 -6.0069989413022995e-03 + + 2.5859731435775757e-01 -4.9466971307992935e-02 + <_> + + 0 -1 2495 -7.4241221882402897e-03 + + -3.8806110620498657e-01 2.9393190518021584e-02 + <_> + + 0 -1 2496 -3.9992430247366428e-03 + + -1.3788199424743652e-01 7.7991880476474762e-02 + <_> + + 0 -1 2497 1.0202969860984012e-04 + + 7.2710737586021423e-02 -1.7032580077648163e-01 + <_> + + 0 -1 2498 4.0135599556379020e-04 + + -9.2788018286228180e-02 1.2305440008640289e-01 + <_> + + 0 -1 2499 -9.7611807286739349e-03 + + -3.6630520224571228e-01 2.9748899862170219e-02 + <_> + + 0 -1 2500 -3.0745539069175720e-01 + + -7.8651821613311768e-01 1.3058690354228020e-02 + <_> + + 0 -1 2501 -6.0231718234717846e-03 + + -5.0900238752365112e-01 1.8171619623899460e-02 + <_> + + 0 -1 2502 -2.3784159566275775e-04 + + -9.9822521209716797e-02 1.0530869662761688e-01 + <_> + + 0 -1 2503 1.3516229810193181e-03 + + -6.6444016993045807e-02 1.5425109863281250e-01 + <_> + + 0 -1 2504 -1.6924949595704675e-03 + + -4.4133850932121277e-01 2.5100700557231903e-02 + <_> + + 0 -1 2505 1.0610929457470775e-03 + + -6.0577899217605591e-02 1.7217910289764404e-01 + <_> + + 0 -1 2506 5.6644581491127610e-04 + + -7.8687779605388641e-02 1.6784669458866119e-01 + <_> + + 0 -1 2507 -1.3955390080809593e-02 + + -5.7841098308563232e-01 1.9087139517068863e-02 + <_> + + 0 -1 2508 -1.8862909637391567e-03 + + 6.2118150293827057e-02 -1.6523399949073792e-01 + <_> + + 0 -1 2509 1.6784170642495155e-02 + + -3.0380919575691223e-02 3.6105319857597351e-01 + <_> + + 0 -1 2510 -1.4158519661577884e-05 + + 7.2182632982730865e-02 -1.4407490193843842e-01 + <_> + + 0 -1 2511 7.3750452138483524e-03 + + 2.9791580513119698e-02 -2.9277870059013367e-01 + <_> + + 0 -1 2512 8.0517530441284180e-03 + + -4.4681299477815628e-02 2.1760399639606476e-01 + <_> + + 0 -1 2513 -7.9519696533679962e-02 + + -6.5208691358566284e-01 1.4618909917771816e-02 + <_> + + 0 -1 2514 1.2065700255334377e-02 + + 2.9202880337834358e-02 -2.9454120993614197e-01 + <_> + + 0 -1 2515 -1.0122699663043022e-02 + + 2.7746239304542542e-01 -4.3713569641113281e-02 + <_> + + 0 -1 2516 -1.8515810370445251e-01 + + -4.6136859059333801e-01 2.4093240499496460e-02 + <_> + + 0 -1 2517 -8.0726131796836853e-02 + + -4.4673430919647217e-01 2.0845459774136543e-02 + <_> + + 0 -1 2518 1.5173270367085934e-03 + + -5.1575969904661179e-02 1.8063379824161530e-01 + <_> + + 0 -1 2519 -1.1184819974005222e-02 + + -3.5373958945274353e-01 2.7059540152549744e-02 + <_> + + 0 -1 2520 -3.5008399281650782e-03 + + 2.0548710227012634e-01 -4.6032059937715530e-02 + <_> + + 0 -1 2521 1.4720410108566284e-03 + + -6.3871711492538452e-02 1.8168300390243530e-01 + <_> + + 0 -1 2522 -4.5021830010227859e-04 + + -1.6353920102119446e-01 5.9327740222215652e-02 + <_> + + 0 -1 2523 6.1653478769585490e-04 + + 6.9089323282241821e-02 -1.9156040251255035e-01 + <_> + + 0 -1 2524 1.4797239564359188e-03 + + -5.2241999655961990e-02 1.8631340563297272e-01 + <_> + + 0 -1 2525 -1.4754989933862817e-05 + + 7.3586143553256989e-02 -1.5092320740222931e-01 + <_> + + 0 -1 2526 8.6423632455989718e-04 + + 6.6930077970027924e-02 -1.3976100087165833e-01 + <_> + + 0 -1 2527 -4.1005611419677734e-03 + + 2.0946699380874634e-01 -4.7175008803606033e-02 + <_> + + 0 -1 2528 -2.1505339536815882e-03 + + -5.2753841876983643e-01 1.7665250226855278e-02 + <_> + + 0 -1 2529 7.8334724530577660e-03 + + -4.5125011354684830e-02 2.0374919474124908e-01 + <_> + + 0 -1 2530 -3.2690390944480896e-03 + + -1.3836699724197388e-01 7.0653162896633148e-02 + <_> + + 0 -1 2531 3.9274748414754868e-03 + + 6.8428598344326019e-02 -1.6210170090198517e-01 + <_> + + 0 -1 2532 7.6534547843039036e-03 + + -9.3162156641483307e-02 9.9912680685520172e-02 + <_> + + 0 -1 2533 -3.2620150595903397e-02 + + 3.5453549027442932e-01 -3.0765339732170105e-02 + <_> + + 0 -1 2534 -1.8247209489345551e-02 + + -3.8171181082725525e-01 2.7764180675148964e-02 + <_> + + 0 -1 2535 -8.0104079097509384e-04 + + -1.4329099655151367e-01 6.4936630427837372e-02 + <_> + + 0 -1 2536 -1.0993109643459320e-01 + + 8.7319427728652954e-01 -1.1242670007050037e-02 + <_> + + 0 -1 2537 -3.0508199706673622e-02 + + -6.1269849538803101e-01 1.9372699782252312e-02 + <_> + + 0 -1 2538 -1.9187819212675095e-02 + + 2.8533020615577698e-01 -3.6832328885793686e-02 + <_> + + 0 -1 2539 2.3266570642590523e-03 + + 4.7289360314607620e-02 -2.1252959966659546e-01 + <_> + + 0 -1 2540 -1.4535760274156928e-03 + + 1.3778920471668243e-01 -7.4501492083072662e-02 + <_> + + 0 -1 2541 -1.0573640465736389e-03 + + -2.2186830639839172e-01 4.2039170861244202e-02 + <_> + + 0 -1 2542 1.7203199677169323e-03 + + -6.9299750030040741e-02 1.3794890046119690e-01 + <_> + + 0 -1 2543 -1.4716150471940637e-03 + + 2.4296709895133972e-01 -4.0795009583234787e-02 + <_> + + 0 -1 2544 -5.2822660654783249e-03 + + -3.1959480047225952e-01 3.4215260297060013e-02 + <_> + + 0 -1 2545 -4.7165742143988609e-03 + + 3.0581191182136536e-01 -3.1772918999195099e-02 + <_> + + 0 -1 2546 7.3668370023369789e-03 + + 6.1085078865289688e-02 -1.6390019655227661e-01 + <_> + + 0 -1 2547 -7.6594999991357327e-03 + + -4.6472349762916565e-01 1.8869750201702118e-02 + <_> + + 0 -1 2548 7.6969028450548649e-03 + + -1.8191590905189514e-02 5.5395811796188354e-01 + <_> + + 0 -1 2549 -5.6195858633145690e-04 + + 9.7618483006954193e-02 -1.0844089835882187e-01 + <_> + + 0 -1 2550 -1.4587530131393578e-05 + + 7.4585132300853729e-02 -1.2353610247373581e-01 + <_> + + 0 -1 2551 -9.5779378898441792e-04 + + 1.6370140016078949e-01 -5.8610081672668457e-02 + <_> + + 0 -1 2552 8.0253500491380692e-03 + + 2.6857670396566391e-02 -4.1507768630981445e-01 + <_> + + 0 -1 2553 1.6938529442995787e-03 + + 4.8536270856857300e-02 -1.7888469994068146e-01 + <_> + + 0 -1 2554 -4.3334178626537323e-03 + + 1.9798220694065094e-01 -4.8085059970617294e-02 + <_> + + 0 -1 2555 -2.2440029715653509e-04 + + -1.5113249421119690e-01 6.0428649187088013e-02 + <_> + + 0 -1 2556 -1.1392509564757347e-02 + + 3.2737928628921509e-01 -2.9751259833574295e-02 + <_> + + 0 -1 2557 -9.3984175473451614e-03 + + -1.2912990152835846e-01 7.6302282512187958e-02 + <_> + + 0 -1 2558 8.7430170970037580e-04 + + -9.7556166350841522e-02 9.7808010876178741e-02 + <_> + + 0 -1 2559 7.5171617791056633e-03 + + 6.5084353089332581e-02 -1.5419410169124603e-01 + <_> + + 0 -1 2560 -2.7937069535255432e-03 + + 1.5009529888629913e-01 -6.3355393707752228e-02 + <_> + + 0 -1 2561 -3.4385098842903972e-04 + + 1.2404289841651917e-01 -7.5780630111694336e-02 + <_> + + 0 -1 2562 8.7557926774024963e-02 + + -1.5905940905213356e-02 5.6607347726821899e-01 + <_> + + 0 -1 2563 -9.3594435602426529e-03 + + -3.3039200305938721e-01 3.0874710530042648e-02 + <_> + + 0 -1 2564 -6.7703737877309322e-03 + + 1.7960870265960693e-01 -5.1310319453477859e-02 + <_> + + 0 -1 2565 -6.2513751909136772e-03 + + -5.7952338457107544e-01 1.5425769612193108e-02 + <_> + + 0 -1 2566 -2.5206409394741058e-02 + + -6.3777071237564087e-01 1.3051119633018970e-02 + <_> + + 0 -1 2567 -1.1819769861176610e-03 + + -2.0478110015392303e-01 4.0494531393051147e-02 + <_> + + 0 -1 2568 -1.0458839824423194e-03 + + 1.4812879264354706e-01 -6.2631592154502869e-02 + <_> + + 0 -1 2569 -2.5445020291954279e-03 + + 1.3021010160446167e-01 -6.9430023431777954e-02 + <_> + + 0 -1 2570 -8.0673627555370331e-02 + + -2.8054219484329224e-01 3.8956280797719955e-02 + <_> + + 0 -1 2571 -1.4390920114237815e-04 + + 1.0780519992113113e-01 -9.6550762653350830e-02 + <_> + + 0 -1 2572 7.6481432188302279e-04 + + 6.0667239129543304e-02 -1.5742610394954681e-01 + <_> + + 0 -1 2573 -3.4516688901931047e-04 + + 1.1415769904851913e-01 -8.8832370936870575e-02 + <_> + + 0 -1 2574 -2.2118249908089638e-03 + + 2.2988039255142212e-01 -5.0498738884925842e-02 + <_> + + 0 -1 2575 9.4616543501615524e-03 + + 1.9827060401439667e-02 -5.0633531808853149e-01 + <_> + + 0 -1 2576 1.0567939607426524e-03 + + 3.8744639605283737e-02 -2.3509359359741211e-01 + <_> + + 0 -1 2577 2.9194469098001719e-03 + + -6.1895478516817093e-02 1.5313319861888885e-01 + <_> + + 0 -1 2578 -1.0768010281026363e-02 + + -5.5298101902008057e-01 1.7847239971160889e-02 + <_> + + 0 -1 2579 -1.0197740048170090e-03 + + 1.1559300124645233e-01 -8.0185852944850922e-02 + <_> + + 0 -1 2580 1.8127029761672020e-04 + + 5.6652870029211044e-02 -1.6549369692802429e-01 + <_> + + 0 -1 2581 7.1620188464294188e-06 + + -9.1480091214179993e-02 9.7915090620517731e-02 + <_> + + 0 -1 2582 5.2910070866346359e-02 + + -1.3591200113296509e-02 6.6090220212936401e-01 + <_> + + 0 -1 2583 4.0185371041297913e-01 + + 1.9574489444494247e-02 -4.9015858769416809e-01 + <_> + + 0 -1 2584 -1.7914770171046257e-02 + + -8.8317036628723145e-02 1.0532960295677185e-01 + <_> + + 0 -1 2585 -1.4578569789591711e-05 + + 7.8513152897357941e-02 -1.2300349771976471e-01 + <_> + + 0 -1 2586 6.4994548447430134e-03 + + -4.0843468159437180e-02 2.9337158799171448e-01 + <_> + + 0 -1 2587 9.5762982964515686e-02 + + 1.9332479685544968e-02 -5.3444057703018188e-01 + <_> + + 0 -1 2588 1.4263469893194269e-05 + + -8.8897533714771271e-02 1.0632789880037308e-01 + <_> + + 0 -1 2589 2.2215039934962988e-03 + + -4.0777951478958130e-02 2.6405128836631775e-01 + <_> + + 0 -1 2590 3.1875250861048698e-03 + + 5.9725038707256317e-02 -1.6202959418296814e-01 + <_> + + 0 -1 2591 9.6069589257240295e-02 + + 1.1318460106849670e-02 -7.9110687971115112e-01 + <_> + + 0 -1 2592 1.9584870897233486e-03 + + -3.9252020418643951e-02 2.3639929294586182e-01 + <_> + + 0 -1 2593 -1.8468469381332397e-01 + + -5.8974397182464600e-01 1.5758410096168518e-02 + <_> + + 0 -1 2594 2.1685050160158426e-04 + + 4.6320449560880661e-02 -1.8274679780006409e-01 + <_> + + 0 -1 2595 1.8809709697961807e-02 + + -4.3357118964195251e-02 2.7832600474357605e-01 + <_> + + 0 -1 2596 -6.2639699317514896e-03 + + -1.3891190290451050e-01 7.7115900814533234e-02 + <_> + + 0 -1 2597 3.2622940489090979e-04 + + -9.1803021728992462e-02 1.0588289797306061e-01 + <_> + + 0 -1 2598 5.3745559416711330e-03 + + 1.0803489945828915e-02 -7.6716458797454834e-01 + <_> + + 0 -1 2599 2.8126770630478859e-03 + + -5.9618860483169556e-02 1.6133050620555878e-01 + <_> + + 0 -1 2600 -6.5314618404954672e-04 + + -8.5690811276435852e-02 1.1540769785642624e-01 + <_> + + 0 -1 2601 -1.7845110269263387e-03 + + 8.1831991672515869e-02 -1.2700800597667694e-01 + <_> + + 0 -1 2602 3.0969830695539713e-03 + + 6.8366639316082001e-02 -1.4475439488887787e-01 + <_> + + 0 -1 2603 -4.1442047804594040e-03 + + 1.8632030487060547e-01 -5.4030310362577438e-02 + <_> + + 0 -1 2604 -4.9972519278526306e-02 + + -1.2800359725952148e-01 8.5049159824848175e-02 + <_> + + 0 -1 2605 -1.0743910446763039e-02 + + 1.3701729476451874e-01 -7.7366456389427185e-02 + <_> + + 0 -1 2606 -3.0474149389192462e-04 + + -1.6938340663909912e-01 5.7971168309450150e-02 + <_> + + 0 -1 2607 3.6023318767547607e-02 + + 1.3561300002038479e-02 -6.3279747962951660e-01 + <_> + + 0 -1 2608 2.5479190517216921e-03 + + -4.3824359774589539e-02 2.2150419652462006e-01 + + <_> + + <_> + 8 7 2 6 -1. + <_> + 8 10 2 3 2. + <_> + + <_> + 8 3 10 7 -1. + <_> + 13 3 5 7 2. + <_> + + <_> + 10 11 3 6 -1. + <_> + 10 14 3 3 2. + <_> + + <_> + 10 4 8 8 -1. + <_> + 14 4 4 8 2. + <_> + + <_> + 5 7 5 4 -1. + <_> + 5 9 5 2 2. + <_> + + <_> + 8 4 6 6 -1. + <_> + 8 4 3 3 2. + <_> + 11 7 3 3 2. + <_> + + <_> + 10 14 5 2 -1. + <_> + 10 15 5 1 2. + <_> + + <_> + 7 11 8 4 -1. + <_> + 7 13 8 2 2. + <_> + + <_> + 11 14 3 3 -1. + <_> + 11 15 3 1 3. + <_> + + <_> + 3 5 3 11 -1. + <_> + 4 5 1 11 3. + <_> + + <_> + 8 7 9 6 -1. + <_> + 8 10 9 3 2. + <_> + + <_> + 13 12 1 2 -1. + <_> + 13 13 1 1 2. + <_> + + <_> + 1 3 6 17 -1. + <_> + 4 3 3 17 2. + <_> + + <_> + 11 12 1 3 -1. + <_> + 11 13 1 1 3. + <_> + + <_> + 1 9 6 9 -1. + <_> + 4 9 3 9 2. + <_> + + <_> + 10 5 8 6 -1. + <_> + 14 5 4 6 2. + <_> + + <_> + 7 8 9 6 -1. + <_> + 7 10 9 2 3. + <_> + + <_> + 5 8 6 6 -1. + <_> + 5 8 3 3 2. + <_> + 8 11 3 3 2. + <_> + + <_> + 2 0 4 18 -1. + <_> + 4 0 2 18 2. + <_> + + <_> + 10 12 3 4 -1. + <_> + 10 14 3 2 2. + <_> + + <_> + 7 0 3 9 -1. + <_> + 7 3 3 3 3. + <_> + + <_> + 11 13 1 3 -1. + <_> + 11 14 1 1 3. + <_> + + <_> + 4 8 5 2 -1. + <_> + 4 9 5 1 2. + <_> + + <_> + 11 13 2 3 -1. + <_> + 11 14 2 1 3. + <_> + + <_> + 12 12 1 3 -1. + <_> + 12 13 1 1 3. + <_> + + <_> + 9 12 2 8 -1. + <_> + 9 16 2 4 2. + <_> + + <_> + 6 3 4 13 -1. + <_> + 8 3 2 13 2. + <_> + + <_> + 2 6 4 12 -1. + <_> + 4 6 2 12 2. + <_> + + <_> + 11 13 3 2 -1. + <_> + 12 13 1 2 3. + <_> + + <_> + 3 5 3 11 -1. + <_> + 4 5 1 11 3. + <_> + + <_> + 3 6 13 12 -1. + <_> + 3 12 13 6 2. + <_> + + <_> + 7 7 6 6 -1. + <_> + 7 7 3 3 2. + <_> + 10 10 3 3 2. + <_> + + <_> + 4 7 3 2 -1. + <_> + 5 7 1 2 3. + <_> + + <_> + 5 4 14 3 -1. + <_> + 12 4 7 3 2. + <_> + + <_> + 10 12 3 2 -1. + <_> + 11 12 1 2 3. + <_> + + <_> + 5 10 2 3 -1. + <_> + 5 11 2 1 3. + <_> + + <_> + 12 14 1 3 -1. + <_> + 12 15 1 1 3. + <_> + + <_> + 3 6 3 3 -1. + <_> + 4 6 1 3 3. + <_> + + <_> + 8 4 3 2 -1. + <_> + 9 4 1 2 3. + <_> + + <_> + 3 3 3 13 -1. + <_> + 4 3 1 13 3. + <_> + + <_> + 15 4 2 3 -1. + <_> + 15 5 2 1 3. + <_> + + <_> + 12 8 4 4 -1. + <_> + 12 10 4 2 2. + <_> + + <_> + 8 7 8 9 -1. + <_> + 8 10 8 3 3. + <_> + + <_> + 8 0 12 6 -1. + <_> + 8 0 6 3 2. + <_> + 14 3 6 3 2. + <_> + + <_> + 5 9 3 6 -1. + <_> + 5 12 3 3 2. + <_> + + <_> + 11 12 2 4 -1. + <_> + 12 12 1 4 2. + <_> + + <_> + 10 11 3 8 -1. + <_> + 11 11 1 8 3. + <_> + + <_> + 5 5 5 6 -1. + <_> + 5 7 5 2 3. + <_> + + <_> + 10 13 2 6 -1. + <_> + 10 16 2 3 2. + <_> + + <_> + 10 15 3 4 -1. + <_> + 11 15 1 4 3. + <_> + + <_> + 7 3 3 3 -1. + <_> + 8 3 1 3 3. + <_> + + <_> + 5 8 6 2 -1. + <_> + 8 8 3 2 2. + <_> + + <_> + 8 7 4 2 -1. + <_> + 10 7 2 2 2. + <_> + + <_> + 5 6 2 3 -1. + <_> + 6 6 1 3 2. + <_> + + <_> + 8 0 3 8 -1. + <_> + 9 0 1 8 3. + <_> + + <_> + 5 10 3 8 -1. + <_> + 5 14 3 4 2. + <_> + + <_> + 12 3 3 2 -1. + <_> + 13 3 1 2 3. + <_> + + <_> + 8 2 3 4 -1. + <_> + 9 2 1 4 3. + <_> + + <_> + 14 10 1 8 -1. + <_> + 14 14 1 4 2. + <_> + + <_> + 6 12 2 3 -1. + <_> + 6 13 2 1 3. + <_> + + <_> + 6 12 2 3 -1. + <_> + 6 13 2 1 3. + <_> + + <_> + 9 12 3 2 -1. + <_> + 10 12 1 2 3. + <_> + + <_> + 12 2 1 12 -1. + <_> + 12 6 1 4 3. + <_> + + <_> + 2 8 14 6 -1. + <_> + 2 8 7 3 2. + <_> + 9 11 7 3 2. + <_> + + <_> + 11 3 3 17 -1. + <_> + 12 3 1 17 3. + <_> + + <_> + 12 12 1 2 -1. + <_> + 12 13 1 1 2. + <_> + + <_> + 13 1 2 1 -1. + <_> + 14 1 1 1 2. + <_> + + <_> + 5 10 2 3 -1. + <_> + 5 11 2 1 3. + <_> + + <_> + 5 10 1 3 -1. + <_> + 5 11 1 1 3. + <_> + + <_> + 12 12 2 3 -1. + <_> + 12 13 2 1 3. + <_> + + <_> + 8 2 10 10 -1. + <_> + 13 2 5 10 2. + <_> + + <_> + 11 13 3 1 -1. + <_> + 12 13 1 1 3. + <_> + + <_> + 12 10 1 4 -1. + <_> + 12 12 1 2 2. + <_> + + <_> + 8 7 2 6 -1. + <_> + 8 10 2 3 2. + <_> + + <_> + 12 11 1 3 -1. + <_> + 12 12 1 1 3. + <_> + + <_> + 9 12 3 3 -1. + <_> + 10 12 1 3 3. + <_> + + <_> + 6 0 8 6 -1. + <_> + 6 3 8 3 2. + <_> + + <_> + 0 0 8 19 -1. + <_> + 4 0 4 19 2. + <_> + + <_> + 5 6 4 9 -1. + <_> + 5 9 4 3 3. + <_> + + <_> + 13 14 1 2 -1. + <_> + 13 15 1 1 2. + <_> + + <_> + 1 3 8 15 -1. + <_> + 5 3 4 15 2. + <_> + + <_> + 13 14 2 3 -1. + <_> + 13 15 2 1 3. + <_> + + <_> + 5 7 3 2 -1. + <_> + 6 7 1 2 3. + <_> + + <_> + 8 5 3 1 -1. + <_> + 9 5 1 1 3. + <_> + + <_> + 9 5 3 1 -1. + <_> + 10 5 1 1 3. + <_> + + <_> + 6 11 1 3 -1. + <_> + 6 12 1 1 3. + <_> + + <_> + 18 4 1 2 -1. + <_> + 18 5 1 1 2. + <_> + + <_> + 6 11 2 3 -1. + <_> + 6 12 2 1 3. + <_> + + <_> + 10 10 3 4 -1. + <_> + 11 10 1 4 3. + <_> + + <_> + 6 5 2 14 -1. + <_> + 6 12 2 7 2. + <_> + + <_> + 14 8 3 4 -1. + <_> + 14 10 3 2 2. + <_> + + <_> + 4 5 3 6 -1. + <_> + 4 7 3 2 3. + <_> + + <_> + 5 10 2 8 -1. + <_> + 5 14 2 4 2. + <_> + + <_> + 9 1 3 2 -1. + <_> + 10 1 1 2 3. + <_> + + <_> + 10 1 3 3 -1. + <_> + 11 1 1 3 3. + <_> + + <_> + 9 12 8 8 -1. + <_> + 9 12 4 4 2. + <_> + 13 16 4 4 2. + <_> + + <_> + 8 13 6 4 -1. + <_> + 10 13 2 4 3. + <_> + + <_> + 3 6 3 12 -1. + <_> + 4 6 1 12 3. + <_> + + <_> + 9 3 8 5 -1. + <_> + 13 3 4 5 2. + <_> + + <_> + 7 7 3 6 -1. + <_> + 7 10 3 3 2. + <_> + + <_> + 5 10 10 4 -1. + <_> + 5 12 10 2 2. + <_> + + <_> + 11 12 1 6 -1. + <_> + 11 15 1 3 2. + <_> + + <_> + 5 8 6 2 -1. + <_> + 8 8 3 2 2. + <_> + + <_> + 2 0 8 4 -1. + <_> + 2 0 4 2 2. + <_> + 6 2 4 2 2. + <_> + + <_> + 11 7 3 5 -1. + <_> + 12 7 1 5 3. + <_> + + <_> + 12 13 2 3 -1. + <_> + 12 14 2 1 3. + <_> + + <_> + 12 12 1 2 -1. + <_> + 12 13 1 1 2. + <_> + + <_> + 5 11 6 3 -1. + <_> + 8 11 3 3 2. + <_> + + <_> + 2 6 3 9 -1. + <_> + 3 6 1 9 3. + <_> + + <_> + 12 12 1 3 -1. + <_> + 12 13 1 1 3. + <_> + + <_> + 5 8 4 2 -1. + <_> + 5 9 4 1 2. + <_> + + <_> + 3 8 3 7 -1. + <_> + 4 8 1 7 3. + <_> + + <_> + 1 3 6 15 -1. + <_> + 3 3 2 15 3. + <_> + + <_> + 12 14 4 3 -1. + <_> + 12 15 4 1 3. + <_> + + <_> + 9 0 2 20 -1. + <_> + 9 0 1 10 2. + <_> + 10 10 1 10 2. + <_> + + <_> + 6 12 3 3 -1. + <_> + 6 13 3 1 3. + <_> + + <_> + 5 7 3 10 -1. + <_> + 5 12 3 5 2. + <_> + + <_> + 8 5 2 1 -1. + <_> + 9 5 1 1 2. + <_> + + <_> + 5 12 3 3 -1. + <_> + 5 13 3 1 3. + <_> + + <_> + 15 5 4 2 -1. + <_> + 15 6 4 1 2. + <_> + + <_> + 15 5 3 2 -1. + <_> + 15 6 3 1 2. + <_> + + <_> + 5 11 2 3 -1. + <_> + 5 12 2 1 3. + <_> + + <_> + 6 5 4 12 -1. + <_> + 8 5 2 12 2. + <_> + + <_> + 7 4 3 3 -1. + <_> + 8 4 1 3 3. + <_> + + <_> + 5 6 2 3 -1. + <_> + 6 6 1 3 2. + <_> + + <_> + 4 8 3 1 -1. + <_> + 5 8 1 1 3. + <_> + + <_> + 12 10 2 1 -1. + <_> + 13 10 1 1 2. + <_> + + <_> + 10 13 5 2 -1. + <_> + 10 14 5 1 2. + <_> + + <_> + 11 13 1 3 -1. + <_> + 11 14 1 1 3. + <_> + + <_> + 7 2 3 6 -1. + <_> + 7 4 3 2 3. + <_> + + <_> + 5 11 2 3 -1. + <_> + 5 12 2 1 3. + <_> + + <_> + 12 14 2 3 -1. + <_> + 12 15 2 1 3. + <_> + + <_> + 8 5 3 3 -1. + <_> + 8 6 3 1 3. + <_> + + <_> + 7 6 9 10 -1. + <_> + 7 11 9 5 2. + <_> + + <_> + 0 18 18 2 -1. + <_> + 6 18 6 2 3. + <_> + + <_> + 0 5 1 8 -1. + <_> + 0 9 1 4 2. + <_> + + <_> + 1 3 8 10 -1. + <_> + 1 8 8 5 2. + <_> + + <_> + 9 12 6 2 -1. + <_> + 9 13 6 1 2. + <_> + + <_> + 9 6 2 3 -1. + <_> + 9 7 2 1 3. + <_> + + <_> + 9 4 3 3 -1. + <_> + 10 4 1 3 3. + <_> + + <_> + 13 13 1 3 -1. + <_> + 13 14 1 1 3. + <_> + + <_> + 2 6 13 3 -1. + <_> + 2 7 13 1 3. + <_> + + <_> + 10 15 2 4 -1. + <_> + 11 15 1 4 2. + <_> + + <_> + 7 7 2 3 -1. + <_> + 8 7 1 3 2. + <_> + + <_> + 3 6 12 8 -1. + <_> + 3 6 6 4 2. + <_> + 9 10 6 4 2. + <_> + + <_> + 12 0 8 4 -1. + <_> + 12 0 4 2 2. + <_> + 16 2 4 2 2. + <_> + + <_> + 9 15 3 3 -1. + <_> + 10 15 1 3 3. + <_> + + <_> + 10 14 1 2 -1. + <_> + 10 15 1 1 2. + <_> + + <_> + 6 11 5 6 -1. + <_> + 6 14 5 3 2. + <_> + + <_> + 5 10 2 3 -1. + <_> + 5 11 2 1 3. + <_> + + <_> + 5 10 1 3 -1. + <_> + 5 11 1 1 3. + <_> + + <_> + 5 6 3 4 -1. + <_> + 6 6 1 4 3. + <_> + + <_> + 9 6 6 4 -1. + <_> + 11 6 2 4 3. + <_> + + <_> + 6 5 12 6 -1. + <_> + 6 7 12 2 3. + <_> + + <_> + 3 1 16 7 -1. + <_> + 11 1 8 7 2. + <_> + + <_> + 12 11 1 6 -1. + <_> + 12 14 1 3 2. + <_> + + <_> + 6 6 9 8 -1. + <_> + 6 10 9 4 2. + <_> + + <_> + 5 9 4 6 -1. + <_> + 5 12 4 3 2. + <_> + + <_> + 1 0 6 14 -1. + <_> + 4 0 3 14 2. + <_> + + <_> + 8 1 1 9 -1. + <_> + 8 4 1 3 3. + <_> + + <_> + 11 13 2 2 -1. + <_> + 11 14 2 1 2. + <_> + + <_> + 2 7 4 13 -1. + <_> + 4 7 2 13 2. + <_> + + <_> + 5 8 6 6 -1. + <_> + 8 8 3 6 2. + <_> + + <_> + 18 0 2 20 -1. + <_> + 19 0 1 20 2. + <_> + + <_> + 6 7 3 3 -1. + <_> + 7 7 1 3 3. + <_> + + <_> + 13 10 1 4 -1. + <_> + 13 12 1 2 2. + <_> + + <_> + 12 11 2 2 -1. + <_> + 12 12 2 1 2. + <_> + + <_> + 3 6 12 6 -1. + <_> + 3 6 6 3 2. + <_> + 9 9 6 3 2. + <_> + + <_> + 10 13 2 2 -1. + <_> + 10 14 2 1 2. + <_> + + <_> + 6 13 2 3 -1. + <_> + 6 14 2 1 3. + <_> + + <_> + 13 5 1 3 -1. + <_> + 13 6 1 1 3. + <_> + + <_> + 6 14 3 3 -1. + <_> + 6 15 3 1 3. + <_> + + <_> + 5 15 3 3 -1. + <_> + 5 16 3 1 3. + <_> + + <_> + 15 3 1 3 -1. + <_> + 15 4 1 1 3. + <_> + + <_> + 3 8 3 12 -1. + <_> + 4 8 1 12 3. + <_> + + <_> + 3 4 3 14 -1. + <_> + 4 4 1 14 3. + <_> + + <_> + 6 11 6 2 -1. + <_> + 9 11 3 2 2. + <_> + + <_> + 4 8 8 4 -1. + <_> + 8 8 4 4 2. + <_> + + <_> + 4 5 2 4 -1. + <_> + 5 5 1 4 2. + <_> + + <_> + 7 3 2 1 -1. + <_> + 8 3 1 1 2. + <_> + + <_> + 12 16 2 3 -1. + <_> + 12 17 2 1 3. + <_> + + <_> + 3 16 6 3 -1. + <_> + 3 17 6 1 3. + <_> + + <_> + 13 4 2 1 -1. + <_> + 14 4 1 1 2. + <_> + + <_> + 9 16 4 4 -1. + <_> + 11 16 2 4 2. + <_> + + <_> + 5 9 3 1 -1. + <_> + 6 9 1 1 3. + <_> + + <_> + 6 8 2 2 -1. + <_> + 6 9 2 1 2. + <_> + + <_> + 12 13 2 1 -1. + <_> + 13 13 1 1 2. + <_> + + <_> + 6 7 6 3 -1. + <_> + 8 7 2 3 3. + <_> + + <_> + 5 8 2 10 -1. + <_> + 5 13 2 5 2. + <_> + + <_> + 0 8 1 2 -1. + <_> + 0 9 1 1 2. + <_> + + <_> + 2 11 4 4 -1. + <_> + 4 11 2 4 2. + <_> + + <_> + 1 9 12 3 -1. + <_> + 5 9 4 3 3. + <_> + + <_> + 8 15 2 3 -1. + <_> + 9 15 1 3 2. + <_> + + <_> + 8 6 3 3 -1. + <_> + 8 7 3 1 3. + <_> + + <_> + 1 2 1 2 -1. + <_> + 1 3 1 1 2. + <_> + + <_> + 5 1 7 6 -1. + <_> + 5 3 7 2 3. + <_> + + <_> + 5 10 2 3 -1. + <_> + 5 11 2 1 3. + <_> + + <_> + 13 7 3 4 -1. + <_> + 13 9 3 2 2. + <_> + + <_> + 5 10 3 3 -1. + <_> + 5 11 3 1 3. + <_> + + <_> + 7 5 3 1 -1. + <_> + 8 5 1 1 3. + <_> + + <_> + 0 0 11 16 -1. + <_> + 0 8 11 8 2. + <_> + + <_> + 7 4 3 2 -1. + <_> + 8 4 1 2 3. + <_> + + <_> + 6 12 2 3 -1. + <_> + 6 13 2 1 3. + <_> + + <_> + 6 11 2 3 -1. + <_> + 6 12 2 1 3. + <_> + + <_> + 13 5 2 2 -1. + <_> + 13 6 2 1 2. + <_> + + <_> + 8 8 2 6 -1. + <_> + 8 10 2 2 3. + <_> + + <_> + 5 6 3 4 -1. + <_> + 6 6 1 4 3. + <_> + + <_> + 10 0 10 8 -1. + <_> + 10 0 5 4 2. + <_> + 15 4 5 4 2. + <_> + + <_> + 9 7 2 12 -1. + <_> + 9 11 2 4 3. + <_> + + <_> + 6 3 12 12 -1. + <_> + 6 3 6 6 2. + <_> + 12 9 6 6 2. + <_> + + <_> + 5 7 4 6 -1. + <_> + 5 9 4 2 3. + <_> + + <_> + 5 7 10 10 -1. + <_> + 5 7 5 5 2. + <_> + 10 12 5 5 2. + <_> + + <_> + 2 1 4 15 -1. + <_> + 4 1 2 15 2. + <_> + + <_> + 12 11 2 2 -1. + <_> + 13 11 1 2 2. + <_> + + <_> + 6 11 10 6 -1. + <_> + 6 14 10 3 2. + <_> + + <_> + 5 12 4 3 -1. + <_> + 5 13 4 1 3. + <_> + + <_> + 6 12 1 3 -1. + <_> + 6 13 1 1 3. + <_> + + <_> + 3 7 12 8 -1. + <_> + 3 7 6 4 2. + <_> + 9 11 6 4 2. + <_> + + <_> + 6 2 2 6 -1. + <_> + 6 4 2 2 3. + <_> + + <_> + 11 11 5 4 -1. + <_> + 11 13 5 2 2. + <_> + + <_> + 5 8 6 6 -1. + <_> + 8 8 3 6 2. + <_> + + <_> + 5 12 4 2 -1. + <_> + 7 12 2 2 2. + <_> + + <_> + 3 13 3 7 -1. + <_> + 4 13 1 7 3. + <_> + + <_> + 11 7 5 9 -1. + <_> + 11 10 5 3 3. + <_> + + <_> + 4 3 15 9 -1. + <_> + 4 6 15 3 3. + <_> + + <_> + 15 13 2 2 -1. + <_> + 15 13 1 1 2. + <_> + 16 14 1 1 2. + <_> + + <_> + 6 5 6 13 -1. + <_> + 9 5 3 13 2. + <_> + + <_> + 5 9 3 1 -1. + <_> + 6 9 1 1 3. + <_> + + <_> + 6 1 2 15 -1. + <_> + 6 6 2 5 3. + <_> + + <_> + 11 0 4 3 -1. + <_> + 13 0 2 3 2. + <_> + + <_> + 0 0 2 4 -1. + <_> + 0 2 2 2 2. + <_> + + <_> + 4 8 9 3 -1. + <_> + 4 9 9 1 3. + <_> + + <_> + 6 5 6 2 -1. + <_> + 8 5 2 2 3. + <_> + + <_> + 4 15 2 2 -1. + <_> + 4 15 1 1 2. + <_> + 5 16 1 1 2. + <_> + + <_> + 6 14 2 3 -1. + <_> + 6 15 2 1 3. + <_> + + <_> + 6 12 1 6 -1. + <_> + 6 15 1 3 2. + <_> + + <_> + 5 9 2 10 -1. + <_> + 5 14 2 5 2. + <_> + + <_> + 3 6 3 10 -1. + <_> + 4 6 1 10 3. + <_> + + <_> + 3 7 3 5 -1. + <_> + 4 7 1 5 3. + <_> + + <_> + 11 0 6 2 -1. + <_> + 13 0 2 2 3. + <_> + + <_> + 11 12 2 1 -1. + <_> + 12 12 1 1 2. + <_> + + <_> + 11 12 2 1 -1. + <_> + 12 12 1 1 2. + <_> + + <_> + 6 16 1 3 -1. + <_> + 6 17 1 1 3. + <_> + + <_> + 10 16 5 3 -1. + <_> + 10 17 5 1 3. + <_> + + <_> + 7 13 1 3 -1. + <_> + 7 14 1 1 3. + <_> + + <_> + 12 4 8 2 -1. + <_> + 12 5 8 1 2. + <_> + + <_> + 8 7 4 3 -1. + <_> + 10 7 2 3 2. + <_> + + <_> + 12 10 5 9 -1. + <_> + 12 13 5 3 3. + <_> + + <_> + 5 11 2 3 -1. + <_> + 5 12 2 1 3. + <_> + + <_> + 5 11 3 3 -1. + <_> + 5 12 3 1 3. + <_> + + <_> + 11 0 2 4 -1. + <_> + 12 0 1 4 2. + <_> + + <_> + 5 9 10 6 -1. + <_> + 5 9 5 3 2. + <_> + 10 12 5 3 2. + <_> + + <_> + 6 12 3 3 -1. + <_> + 6 13 3 1 3. + <_> + + <_> + 1 3 6 12 -1. + <_> + 1 9 6 6 2. + <_> + + <_> + 1 5 5 10 -1. + <_> + 1 10 5 5 2. + <_> + + <_> + 10 14 1 2 -1. + <_> + 10 15 1 1 2. + <_> + + <_> + 9 5 2 8 -1. + <_> + 9 5 1 4 2. + <_> + 10 9 1 4 2. + <_> + + <_> + 17 12 3 1 -1. + <_> + 18 12 1 1 3. + <_> + + <_> + 5 16 2 3 -1. + <_> + 5 17 2 1 3. + <_> + + <_> + 11 18 7 2 -1. + <_> + 11 19 7 1 2. + <_> + + <_> + 12 6 3 8 -1. + <_> + 13 6 1 8 3. + <_> + + <_> + 11 6 6 5 -1. + <_> + 14 6 3 5 2. + <_> + + <_> + 9 7 4 6 -1. + <_> + 9 7 2 3 2. + <_> + 11 10 2 3 2. + <_> + + <_> + 10 8 6 6 -1. + <_> + 10 10 6 2 3. + <_> + + <_> + 2 1 4 17 -1. + <_> + 4 1 2 17 2. + <_> + + <_> + 7 1 9 4 -1. + <_> + 7 3 9 2 2. + <_> + + <_> + 7 6 3 4 -1. + <_> + 8 6 1 4 3. + <_> + + <_> + 5 9 8 2 -1. + <_> + 9 9 4 2 2. + <_> + + <_> + 11 12 1 4 -1. + <_> + 11 14 1 2 2. + <_> + + <_> + 13 11 1 3 -1. + <_> + 13 12 1 1 3. + <_> + + <_> + 10 19 4 1 -1. + <_> + 12 19 2 1 2. + <_> + + <_> + 5 4 10 12 -1. + <_> + 5 4 5 6 2. + <_> + 10 10 5 6 2. + <_> + + <_> + 4 6 5 6 -1. + <_> + 4 9 5 3 2. + <_> + + <_> + 5 10 4 8 -1. + <_> + 5 14 4 4 2. + <_> + + <_> + 7 5 3 3 -1. + <_> + 7 6 3 1 3. + <_> + + <_> + 7 4 2 2 -1. + <_> + 8 4 1 2 2. + <_> + + <_> + 0 0 2 1 -1. + <_> + 1 0 1 1 2. + <_> + + <_> + 0 3 6 16 -1. + <_> + 2 3 2 16 3. + <_> + + <_> + 2 6 3 12 -1. + <_> + 3 6 1 12 3. + <_> + + <_> + 12 11 2 2 -1. + <_> + 12 12 2 1 2. + <_> + + <_> + 18 0 2 13 -1. + <_> + 19 0 1 13 2. + <_> + + <_> + 9 14 5 4 -1. + <_> + 9 16 5 2 2. + <_> + + <_> + 5 10 2 3 -1. + <_> + 5 11 2 1 3. + <_> + + <_> + 10 14 4 3 -1. + <_> + 10 15 4 1 3. + <_> + + <_> + 12 13 1 3 -1. + <_> + 12 14 1 1 3. + <_> + + <_> + 5 10 1 3 -1. + <_> + 5 11 1 1 3. + <_> + + <_> + 6 6 6 14 -1. + <_> + 9 6 3 14 2. + <_> + + <_> + 5 11 6 3 -1. + <_> + 8 11 3 3 2. + <_> + + <_> + 5 7 2 4 -1. + <_> + 6 7 1 4 2. + <_> + + <_> + 7 3 11 9 -1. + <_> + 7 6 11 3 3. + <_> + + <_> + 10 4 9 6 -1. + <_> + 10 6 9 2 3. + <_> + + <_> + 8 5 2 3 -1. + <_> + 8 6 2 1 3. + <_> + + <_> + 0 0 3 1 -1. + <_> + 1 0 1 1 3. + <_> + + <_> + 9 4 4 6 -1. + <_> + 9 4 2 3 2. + <_> + 11 7 2 3 2. + <_> + + <_> + 5 9 3 1 -1. + <_> + 6 9 1 1 3. + <_> + + <_> + 6 4 3 2 -1. + <_> + 7 4 1 2 3. + <_> + + <_> + 7 14 1 3 -1. + <_> + 7 15 1 1 3. + <_> + + <_> + 1 3 1 2 -1. + <_> + 1 4 1 1 2. + <_> + + <_> + 7 16 2 3 -1. + <_> + 7 17 2 1 3. + <_> + + <_> + 19 6 1 2 -1. + <_> + 19 7 1 1 2. + <_> + + <_> + 6 15 2 3 -1. + <_> + 6 16 2 1 3. + <_> + + <_> + 11 13 1 3 -1. + <_> + 11 14 1 1 3. + <_> + + <_> + 17 10 3 1 -1. + <_> + 18 10 1 1 3. + <_> + + <_> + 10 0 6 1 -1. + <_> + 13 0 3 1 2. + <_> + + <_> + 14 0 6 4 -1. + <_> + 14 0 3 2 2. + <_> + 17 2 3 2 2. + <_> + + <_> + 12 7 4 6 -1. + <_> + 12 10 4 3 2. + <_> + + <_> + 14 5 1 2 -1. + <_> + 14 6 1 1 2. + <_> + + <_> + 6 13 4 3 -1. + <_> + 6 14 4 1 3. + <_> + + <_> + 5 12 4 3 -1. + <_> + 5 13 4 1 3. + <_> + + <_> + 9 3 2 1 -1. + <_> + 10 3 1 1 2. + <_> + + <_> + 9 3 3 3 -1. + <_> + 10 3 1 3 3. + <_> + + <_> + 9 5 3 1 -1. + <_> + 10 5 1 1 3. + <_> + + <_> + 7 8 4 3 -1. + <_> + 7 9 4 1 3. + <_> + + <_> + 1 4 1 6 -1. + <_> + 1 6 1 2 3. + <_> + + <_> + 3 2 3 11 -1. + <_> + 4 2 1 11 3. + <_> + + <_> + 3 2 3 18 -1. + <_> + 4 2 1 18 3. + <_> + + <_> + 5 12 6 2 -1. + <_> + 8 12 3 2 2. + <_> + + <_> + 6 11 2 3 -1. + <_> + 6 12 2 1 3. + <_> + + <_> + 7 17 3 1 -1. + <_> + 8 17 1 1 3. + <_> + + <_> + 3 10 8 6 -1. + <_> + 3 13 8 3 2. + <_> + + <_> + 3 2 3 17 -1. + <_> + 4 2 1 17 3. + <_> + + <_> + 4 9 8 1 -1. + <_> + 8 9 4 1 2. + <_> + + <_> + 2 7 3 6 -1. + <_> + 3 7 1 6 3. + <_> + + <_> + 18 4 1 2 -1. + <_> + 18 5 1 1 2. + <_> + + <_> + 7 8 2 6 -1. + <_> + 7 10 2 2 3. + <_> + + <_> + 11 12 2 3 -1. + <_> + 11 13 2 1 3. + <_> + + <_> + 16 11 3 1 -1. + <_> + 17 11 1 1 3. + <_> + + <_> + 16 11 3 2 -1. + <_> + 17 11 1 2 3. + <_> + + <_> + 15 3 1 4 -1. + <_> + 15 5 1 2 2. + <_> + + <_> + 11 0 9 11 -1. + <_> + 14 0 3 11 3. + <_> + + <_> + 7 0 5 6 -1. + <_> + 7 3 5 3 2. + <_> + + <_> + 8 7 2 6 -1. + <_> + 8 10 2 3 2. + <_> + + <_> + 11 11 4 6 -1. + <_> + 11 14 4 3 2. + <_> + + <_> + 4 7 3 2 -1. + <_> + 5 7 1 2 3. + <_> + + <_> + 3 7 3 2 -1. + <_> + 4 7 1 2 3. + <_> + + <_> + 11 11 2 3 -1. + <_> + 11 12 2 1 3. + <_> + + <_> + 5 9 4 6 -1. + <_> + 5 12 4 3 2. + <_> + + <_> + 16 4 2 3 -1. + <_> + 17 4 1 3 2. + <_> + + <_> + 12 12 2 1 -1. + <_> + 13 12 1 1 2. + <_> + + <_> + 8 5 6 4 -1. + <_> + 8 5 3 2 2. + <_> + 11 7 3 2 2. + <_> + + <_> + 10 15 3 3 -1. + <_> + 11 15 1 3 3. + <_> + + <_> + 3 7 3 7 -1. + <_> + 4 7 1 7 3. + <_> + + <_> + 11 4 1 2 -1. + <_> + 11 5 1 1 2. + <_> + + <_> + 3 9 3 5 -1. + <_> + 4 9 1 5 3. + <_> + + <_> + 10 15 3 3 -1. + <_> + 11 15 1 3 3. + <_> + + <_> + 3 3 6 12 -1. + <_> + 3 9 6 6 2. + <_> + + <_> + 3 5 5 6 -1. + <_> + 3 7 5 2 3. + <_> + + <_> + 6 6 4 11 -1. + <_> + 8 6 2 11 2. + <_> + + <_> + 6 5 2 6 -1. + <_> + 7 5 1 6 2. + <_> + + <_> + 2 6 3 8 -1. + <_> + 3 6 1 8 3. + <_> + + <_> + 6 4 3 1 -1. + <_> + 7 4 1 1 3. + <_> + + <_> + 5 10 2 3 -1. + <_> + 5 11 2 1 3. + <_> + + <_> + 5 10 1 3 -1. + <_> + 5 11 1 1 3. + <_> + + <_> + 13 14 2 3 -1. + <_> + 13 15 2 1 3. + <_> + + <_> + 10 11 2 3 -1. + <_> + 10 12 2 1 3. + <_> + + <_> + 19 5 1 3 -1. + <_> + 19 6 1 1 3. + <_> + + <_> + 5 14 5 3 -1. + <_> + 5 15 5 1 3. + <_> + + <_> + 4 10 10 4 -1. + <_> + 9 10 5 4 2. + <_> + + <_> + 12 12 2 3 -1. + <_> + 12 13 2 1 3. + <_> + + <_> + 5 13 4 3 -1. + <_> + 5 14 4 1 3. + <_> + + <_> + 6 12 3 3 -1. + <_> + 6 13 3 1 3. + <_> + + <_> + 6 15 3 2 -1. + <_> + 7 15 1 2 3. + <_> + + <_> + 4 11 8 2 -1. + <_> + 8 11 4 2 2. + <_> + + <_> + 14 3 6 8 -1. + <_> + 14 7 6 4 2. + <_> + + <_> + 8 5 12 5 -1. + <_> + 12 5 4 5 3. + <_> + + <_> + 5 14 6 2 -1. + <_> + 7 14 2 2 3. + <_> + + <_> + 6 11 2 3 -1. + <_> + 6 12 2 1 3. + <_> + + <_> + 13 12 1 3 -1. + <_> + 13 13 1 1 3. + <_> + + <_> + 6 3 14 12 -1. + <_> + 6 3 7 6 2. + <_> + 13 9 7 6 2. + <_> + + <_> + 18 6 2 2 -1. + <_> + 18 7 2 1 2. + <_> + + <_> + 14 7 6 10 -1. + <_> + 16 7 2 10 3. + <_> + + <_> + 9 8 2 3 -1. + <_> + 9 9 2 1 3. + <_> + + <_> + 0 6 2 4 -1. + <_> + 0 8 2 2 2. + <_> + + <_> + 9 0 6 2 -1. + <_> + 11 0 2 2 3. + <_> + + <_> + 12 0 8 2 -1. + <_> + 12 0 4 1 2. + <_> + 16 1 4 1 2. + <_> + + <_> + 3 10 14 6 -1. + <_> + 3 12 14 2 3. + <_> + + <_> + 6 7 3 4 -1. + <_> + 7 7 1 4 3. + <_> + + <_> + 10 13 2 1 -1. + <_> + 11 13 1 1 2. + <_> + + <_> + 11 6 5 10 -1. + <_> + 11 11 5 5 2. + <_> + + <_> + 3 16 4 4 -1. + <_> + 3 16 2 2 2. + <_> + 5 18 2 2 2. + <_> + + <_> + 6 2 3 3 -1. + <_> + 7 2 1 3 3. + <_> + + <_> + 4 0 8 20 -1. + <_> + 4 0 4 10 2. + <_> + 8 10 4 10 2. + <_> + + <_> + 3 16 3 4 -1. + <_> + 4 16 1 4 3. + <_> + + <_> + 3 16 3 1 -1. + <_> + 4 16 1 1 3. + <_> + + <_> + 11 13 1 2 -1. + <_> + 11 14 1 1 2. + <_> + + <_> + 11 13 1 3 -1. + <_> + 11 14 1 1 3. + <_> + + <_> + 6 19 14 1 -1. + <_> + 13 19 7 1 2. + <_> + + <_> + 5 7 3 3 -1. + <_> + 6 7 1 3 3. + <_> + + <_> + 7 4 3 2 -1. + <_> + 8 4 1 2 3. + <_> + + <_> + 9 18 2 1 -1. + <_> + 10 18 1 1 2. + <_> + + <_> + 6 17 2 3 -1. + <_> + 6 18 2 1 3. + <_> + + <_> + 9 7 3 6 -1. + <_> + 9 9 3 2 3. + <_> + + <_> + 9 12 3 7 -1. + <_> + 10 12 1 7 3. + <_> + + <_> + 8 9 1 3 -1. + <_> + 8 10 1 1 3. + <_> + + <_> + 8 5 12 11 -1. + <_> + 12 5 4 11 3. + <_> + + <_> + 2 0 1 2 -1. + <_> + 2 1 1 1 2. + <_> + + <_> + 0 0 1 2 -1. + <_> + 0 1 1 1 2. + <_> + + <_> + 8 0 12 16 -1. + <_> + 12 0 4 16 3. + <_> + + <_> + 0 0 1 2 -1. + <_> + 0 1 1 1 2. + <_> + + <_> + 11 0 9 11 -1. + <_> + 14 0 3 11 3. + <_> + + <_> + 5 5 3 6 -1. + <_> + 6 5 1 6 3. + <_> + + <_> + 8 8 3 4 -1. + <_> + 8 10 3 2 2. + <_> + + <_> + 13 2 6 12 -1. + <_> + 13 8 6 6 2. + <_> + + <_> + 10 6 4 14 -1. + <_> + 10 13 4 7 2. + <_> + + <_> + 1 1 10 1 -1. + <_> + 6 1 5 1 2. + <_> + + <_> + 4 2 13 6 -1. + <_> + 4 4 13 2 3. + <_> + + <_> + 11 13 2 3 -1. + <_> + 12 13 1 3 2. + <_> + + <_> + 6 9 4 9 -1. + <_> + 6 12 4 3 3. + <_> + + <_> + 6 6 3 10 -1. + <_> + 6 11 3 5 2. + <_> + + <_> + 2 10 3 4 -1. + <_> + 3 10 1 4 3. + <_> + + <_> + 3 8 3 6 -1. + <_> + 4 8 1 6 3. + <_> + + <_> + 11 12 3 6 -1. + <_> + 12 12 1 6 3. + <_> + + <_> + 8 6 2 3 -1. + <_> + 8 7 2 1 3. + <_> + + <_> + 5 8 6 6 -1. + <_> + 5 8 3 3 2. + <_> + 8 11 3 3 2. + <_> + + <_> + 3 7 3 1 -1. + <_> + 4 7 1 1 3. + <_> + + <_> + 10 12 3 3 -1. + <_> + 10 13 3 1 3. + <_> + + <_> + 5 11 2 3 -1. + <_> + 5 12 2 1 3. + <_> + + <_> + 10 12 4 3 -1. + <_> + 10 13 4 1 3. + <_> + + <_> + 5 11 3 3 -1. + <_> + 5 12 3 1 3. + <_> + + <_> + 9 2 3 1 -1. + <_> + 10 2 1 1 3. + <_> + + <_> + 2 0 18 14 -1. + <_> + 2 7 18 7 2. + <_> + + <_> + 9 2 3 2 -1. + <_> + 10 2 1 2 3. + <_> + + <_> + 8 6 4 3 -1. + <_> + 8 7 4 1 3. + <_> + + <_> + 4 8 5 2 -1. + <_> + 4 9 5 1 2. + <_> + + <_> + 0 3 1 6 -1. + <_> + 0 5 1 2 3. + <_> + + <_> + 13 9 1 6 -1. + <_> + 13 12 1 3 2. + <_> + + <_> + 6 16 3 3 -1. + <_> + 6 17 3 1 3. + <_> + + <_> + 3 16 7 3 -1. + <_> + 3 17 7 1 3. + <_> + + <_> + 10 15 5 3 -1. + <_> + 10 16 5 1 3. + <_> + + <_> + 4 0 5 20 -1. + <_> + 4 10 5 10 2. + <_> + + <_> + 6 2 2 2 -1. + <_> + 7 2 1 2 2. + <_> + + <_> + 18 0 2 15 -1. + <_> + 18 5 2 5 3. + <_> + + <_> + 6 15 7 3 -1. + <_> + 6 16 7 1 3. + <_> + + <_> + 10 13 6 2 -1. + <_> + 10 14 6 1 2. + <_> + + <_> + 13 8 1 9 -1. + <_> + 13 11 1 3 3. + <_> + + <_> + 3 0 4 4 -1. + <_> + 3 0 2 2 2. + <_> + 5 2 2 2 2. + <_> + + <_> + 0 3 1 6 -1. + <_> + 0 5 1 2 3. + <_> + + <_> + 5 8 3 1 -1. + <_> + 6 8 1 1 3. + <_> + + <_> + 5 6 2 3 -1. + <_> + 6 6 1 3 2. + <_> + + <_> + 6 11 6 7 -1. + <_> + 8 11 2 7 3. + <_> + + <_> + 8 7 4 3 -1. + <_> + 8 8 4 1 3. + <_> + + <_> + 3 8 8 1 -1. + <_> + 7 8 4 1 2. + <_> + + <_> + 5 12 3 3 -1. + <_> + 5 13 3 1 3. + <_> + + <_> + 9 7 2 8 -1. + <_> + 9 7 1 4 2. + <_> + 10 11 1 4 2. + <_> + + <_> + 14 2 3 5 -1. + <_> + 15 2 1 5 3. + <_> + + <_> + 6 13 2 3 -1. + <_> + 6 14 2 1 3. + <_> + + <_> + 6 14 1 2 -1. + <_> + 6 15 1 1 2. + <_> + + <_> + 12 10 2 3 -1. + <_> + 12 11 2 1 3. + <_> + + <_> + 1 14 12 3 -1. + <_> + 5 14 4 3 3. + <_> + + <_> + 11 8 3 1 -1. + <_> + 12 8 1 1 3. + <_> + + <_> + 14 4 2 3 -1. + <_> + 14 5 2 1 3. + <_> + + <_> + 7 8 3 2 -1. + <_> + 8 8 1 2 3. + <_> + + <_> + 2 7 3 11 -1. + <_> + 3 7 1 11 3. + <_> + + <_> + 0 14 2 1 -1. + <_> + 1 14 1 1 2. + <_> + + <_> + 6 15 3 2 -1. + <_> + 7 15 1 2 3. + <_> + + <_> + 18 10 2 4 -1. + <_> + 18 10 1 2 2. + <_> + 19 12 1 2 2. + <_> + + <_> + 13 12 2 2 -1. + <_> + 14 12 1 2 2. + <_> + + <_> + 9 5 8 12 -1. + <_> + 13 5 4 12 2. + <_> + + <_> + 11 5 3 3 -1. + <_> + 12 5 1 3 3. + <_> + + <_> + 16 11 2 2 -1. + <_> + 16 11 1 1 2. + <_> + 17 12 1 1 2. + <_> + + <_> + 14 5 1 2 -1. + <_> + 14 6 1 1 2. + <_> + + <_> + 3 0 8 16 -1. + <_> + 3 8 8 8 2. + <_> + + <_> + 3 11 3 5 -1. + <_> + 4 11 1 5 3. + <_> + + <_> + 0 8 12 6 -1. + <_> + 4 8 4 6 3. + <_> + + <_> + 6 9 4 2 -1. + <_> + 6 9 2 1 2. + <_> + 8 10 2 1 2. + <_> + + <_> + 11 15 3 5 -1. + <_> + 12 15 1 5 3. + <_> + + <_> + 18 10 2 6 -1. + <_> + 18 10 1 3 2. + <_> + 19 13 1 3 2. + <_> + + <_> + 13 15 6 1 -1. + <_> + 16 15 3 1 2. + <_> + + <_> + 5 10 7 6 -1. + <_> + 5 13 7 3 2. + <_> + + <_> + 2 11 6 6 -1. + <_> + 2 14 6 3 2. + <_> + + <_> + 11 14 3 3 -1. + <_> + 11 15 3 1 3. + <_> + + <_> + 7 14 6 3 -1. + <_> + 7 15 6 1 3. + <_> + + <_> + 5 14 5 3 -1. + <_> + 5 15 5 1 3. + <_> + + <_> + 6 16 3 1 -1. + <_> + 7 16 1 1 3. + <_> + + <_> + 4 15 4 3 -1. + <_> + 4 16 4 1 3. + <_> + + <_> + 2 2 4 8 -1. + <_> + 2 2 2 4 2. + <_> + 4 6 2 4 2. + <_> + + <_> + 12 13 2 3 -1. + <_> + 12 14 2 1 3. + <_> + + <_> + 9 13 4 3 -1. + <_> + 9 14 4 1 3. + <_> + + <_> + 8 8 5 3 -1. + <_> + 8 9 5 1 3. + <_> + + <_> + 9 12 3 2 -1. + <_> + 10 12 1 2 3. + <_> + + <_> + 4 0 8 2 -1. + <_> + 4 0 4 1 2. + <_> + 8 1 4 1 2. + <_> + + <_> + 0 12 1 2 -1. + <_> + 0 13 1 1 2. + <_> + + <_> + 8 14 8 4 -1. + <_> + 8 16 8 2 2. + <_> + + <_> + 4 17 9 3 -1. + <_> + 4 18 9 1 3. + <_> + + <_> + 10 0 2 8 -1. + <_> + 10 4 2 4 2. + <_> + + <_> + 10 13 2 6 -1. + <_> + 10 16 2 3 2. + <_> + + <_> + 7 2 10 5 -1. + <_> + 12 2 5 5 2. + <_> + + <_> + 9 7 4 6 -1. + <_> + 9 7 2 3 2. + <_> + 11 10 2 3 2. + <_> + + <_> + 12 10 1 6 -1. + <_> + 12 13 1 3 2. + <_> + + <_> + 1 2 6 8 -1. + <_> + 4 2 3 8 2. + <_> + + <_> + 10 12 1 3 -1. + <_> + 10 13 1 1 3. + <_> + + <_> + 5 7 3 2 -1. + <_> + 6 7 1 2 3. + <_> + + <_> + 10 13 1 3 -1. + <_> + 10 14 1 1 3. + <_> + + <_> + 4 3 16 9 -1. + <_> + 4 6 16 3 3. + <_> + + <_> + 5 12 4 3 -1. + <_> + 7 12 2 3 2. + <_> + + <_> + 10 14 1 3 -1. + <_> + 10 15 1 1 3. + <_> + + <_> + 10 6 3 8 -1. + <_> + 11 6 1 8 3. + <_> + + <_> + 1 8 3 5 -1. + <_> + 2 8 1 5 3. + <_> + + <_> + 6 7 3 2 -1. + <_> + 7 7 1 2 3. + <_> + + <_> + 9 10 3 3 -1. + <_> + 10 10 1 3 3. + <_> + + <_> + 11 4 4 3 -1. + <_> + 11 5 4 1 3. + <_> + + <_> + 16 11 3 1 -1. + <_> + 17 11 1 1 3. + <_> + + <_> + 8 0 6 3 -1. + <_> + 10 0 2 3 3. + <_> + + <_> + 17 11 2 2 -1. + <_> + 17 11 1 1 2. + <_> + 18 12 1 1 2. + <_> + + <_> + 11 3 7 3 -1. + <_> + 11 4 7 1 3. + <_> + + <_> + 6 11 1 3 -1. + <_> + 6 12 1 1 3. + <_> + + <_> + 7 4 3 2 -1. + <_> + 8 4 1 2 3. + <_> + + <_> + 7 3 3 3 -1. + <_> + 8 3 1 3 3. + <_> + + <_> + 6 12 2 3 -1. + <_> + 6 13 2 1 3. + <_> + + <_> + 6 12 2 3 -1. + <_> + 6 13 2 1 3. + <_> + + <_> + 10 12 2 3 -1. + <_> + 10 13 2 1 3. + <_> + + <_> + 5 0 12 2 -1. + <_> + 5 1 12 1 2. + <_> + + <_> + 4 11 8 4 -1. + <_> + 4 13 8 2 2. + <_> + + <_> + 6 12 8 4 -1. + <_> + 6 14 8 2 2. + <_> + + <_> + 4 0 4 2 -1. + <_> + 4 0 2 1 2. + <_> + 6 1 2 1 2. + <_> + + <_> + 13 9 4 2 -1. + <_> + 13 10 4 1 2. + <_> + + <_> + 12 10 2 2 -1. + <_> + 13 10 1 2 2. + <_> + + <_> + 9 9 6 1 -1. + <_> + 12 9 3 1 2. + <_> + + <_> + 6 6 14 6 -1. + <_> + 6 9 14 3 2. + <_> + + <_> + 5 10 2 3 -1. + <_> + 5 11 2 1 3. + <_> + + <_> + 11 11 1 3 -1. + <_> + 11 12 1 1 3. + <_> + + <_> + 5 10 2 3 -1. + <_> + 5 11 2 1 3. + <_> + + <_> + 12 11 6 2 -1. + <_> + 14 11 2 2 3. + <_> + + <_> + 11 11 2 1 -1. + <_> + 12 11 1 1 2. + <_> + + <_> + 3 11 14 1 -1. + <_> + 10 11 7 1 2. + <_> + + <_> + 1 13 6 5 -1. + <_> + 3 13 2 5 3. + <_> + + <_> + 14 0 2 1 -1. + <_> + 15 0 1 1 2. + <_> + + <_> + 10 0 10 1 -1. + <_> + 15 0 5 1 2. + <_> + + <_> + 5 15 3 3 -1. + <_> + 5 16 3 1 3. + <_> + + <_> + 12 14 2 2 -1. + <_> + 12 15 2 1 2. + <_> + + <_> + 12 14 2 3 -1. + <_> + 12 15 2 1 3. + <_> + + <_> + 8 6 1 3 -1. + <_> + 8 7 1 1 3. + <_> + + <_> + 0 2 1 3 -1. + <_> + 0 3 1 1 3. + <_> + + <_> + 0 2 1 3 -1. + <_> + 0 3 1 1 3. + <_> + + <_> + 4 8 2 2 -1. + <_> + 4 8 1 1 2. + <_> + 5 9 1 1 2. + <_> + + <_> + 3 6 8 10 -1. + <_> + 3 6 4 5 2. + <_> + 7 11 4 5 2. + <_> + + <_> + 6 15 1 3 -1. + <_> + 6 16 1 1 3. + <_> + + <_> + 12 0 3 8 -1. + <_> + 13 0 1 8 3. + <_> + + <_> + 10 0 10 6 -1. + <_> + 10 0 5 3 2. + <_> + 15 3 5 3 2. + <_> + + <_> + 17 2 2 2 -1. + <_> + 17 3 2 1 2. + <_> + + <_> + 8 0 12 14 -1. + <_> + 14 0 6 14 2. + <_> + + <_> + 10 18 2 1 -1. + <_> + 11 18 1 1 2. + <_> + + <_> + 18 9 2 6 -1. + <_> + 18 9 1 3 2. + <_> + 19 12 1 3 2. + <_> + + <_> + 18 4 2 16 -1. + <_> + 18 4 1 8 2. + <_> + 19 12 1 8 2. + <_> + + <_> + 5 8 6 6 -1. + <_> + 8 8 3 6 2. + <_> + + <_> + 6 5 4 11 -1. + <_> + 8 5 2 11 2. + <_> + + <_> + 6 8 2 2 -1. + <_> + 7 8 1 2 2. + <_> + + <_> + 6 5 2 5 -1. + <_> + 7 5 1 5 2. + <_> + + <_> + 10 16 3 4 -1. + <_> + 11 16 1 4 3. + <_> + + <_> + 3 0 8 18 -1. + <_> + 3 9 8 9 2. + <_> + + <_> + 1 7 7 3 -1. + <_> + 1 8 7 1 3. + <_> + + <_> + 5 5 2 6 -1. + <_> + 5 7 2 2 3. + <_> + + <_> + 3 8 3 10 -1. + <_> + 4 8 1 10 3. + <_> + + <_> + 3 12 3 2 -1. + <_> + 4 12 1 2 3. + <_> + + <_> + 3 9 10 3 -1. + <_> + 8 9 5 3 2. + <_> + + <_> + 6 15 6 2 -1. + <_> + 8 15 2 2 3. + <_> + + <_> + 5 9 3 2 -1. + <_> + 6 9 1 2 3. + <_> + + <_> + 17 5 3 3 -1. + <_> + 17 6 3 1 3. + <_> + + <_> + 8 6 1 3 -1. + <_> + 8 7 1 1 3. + <_> + + <_> + 18 5 1 3 -1. + <_> + 18 6 1 1 3. + <_> + + <_> + 5 2 5 6 -1. + <_> + 5 5 5 3 2. + <_> + + <_> + 11 1 6 3 -1. + <_> + 13 1 2 3 3. + <_> + + <_> + 6 7 2 10 -1. + <_> + 6 12 2 5 2. + <_> + + <_> + 3 14 4 4 -1. + <_> + 5 14 2 4 2. + <_> + + <_> + 2 11 4 1 -1. + <_> + 4 11 2 1 2. + <_> + + <_> + 6 4 3 2 -1. + <_> + 7 4 1 2 3. + <_> + + <_> + 8 3 2 6 -1. + <_> + 8 5 2 2 3. + <_> + + <_> + 0 10 20 10 -1. + <_> + 10 10 10 10 2. + <_> + + <_> + 13 7 2 2 -1. + <_> + 13 8 2 1 2. + <_> + + <_> + 10 8 10 4 -1. + <_> + 15 8 5 4 2. + <_> + + <_> + 0 10 16 2 -1. + <_> + 8 10 8 2 2. + <_> + + <_> + 10 14 6 6 -1. + <_> + 10 14 3 3 2. + <_> + 13 17 3 3 2. + <_> + + <_> + 13 10 1 3 -1. + <_> + 13 11 1 1 3. + <_> + + <_> + 4 4 10 8 -1. + <_> + 4 4 5 4 2. + <_> + 9 8 5 4 2. + <_> + + <_> + 5 1 6 6 -1. + <_> + 5 1 3 3 2. + <_> + 8 4 3 3 2. + <_> + + <_> + 11 10 8 3 -1. + <_> + 11 11 8 1 3. + <_> + + <_> + 3 11 3 6 -1. + <_> + 3 13 3 2 3. + <_> + + <_> + 8 0 12 6 -1. + <_> + 8 0 6 3 2. + <_> + 14 3 6 3 2. + <_> + + <_> + 7 8 2 4 -1. + <_> + 7 8 1 2 2. + <_> + 8 10 1 2 2. + <_> + + <_> + 11 1 7 10 -1. + <_> + 11 6 7 5 2. + <_> + + <_> + 10 15 3 2 -1. + <_> + 10 16 3 1 2. + <_> + + <_> + 11 11 2 3 -1. + <_> + 12 11 1 3 2. + <_> + + <_> + 6 8 3 2 -1. + <_> + 6 9 3 1 2. + <_> + + <_> + 11 14 1 3 -1. + <_> + 11 15 1 1 3. + <_> + + <_> + 5 11 2 3 -1. + <_> + 5 12 2 1 3. + <_> + + <_> + 12 12 2 2 -1. + <_> + 12 13 2 1 2. + <_> + + <_> + 11 3 8 9 -1. + <_> + 11 6 8 3 3. + <_> + + <_> + 10 11 3 3 -1. + <_> + 11 11 1 3 3. + <_> + + <_> + 6 11 1 3 -1. + <_> + 6 12 1 1 3. + <_> + + <_> + 9 6 2 3 -1. + <_> + 10 6 1 3 2. + <_> + + <_> + 7 8 2 6 -1. + <_> + 7 10 2 2 3. + <_> + + <_> + 3 0 4 6 -1. + <_> + 3 0 2 3 2. + <_> + 5 3 2 3 2. + <_> + + <_> + 5 0 3 17 -1. + <_> + 6 0 1 17 3. + <_> + + <_> + 12 9 6 3 -1. + <_> + 12 10 6 1 3. + <_> + + <_> + 10 19 8 1 -1. + <_> + 14 19 4 1 2. + <_> + + <_> + 13 3 5 3 -1. + <_> + 13 4 5 1 3. + <_> + + <_> + 5 7 2 2 -1. + <_> + 6 7 1 2 2. + <_> + + <_> + 12 10 3 10 -1. + <_> + 13 10 1 10 3. + <_> + + <_> + 4 7 6 3 -1. + <_> + 7 7 3 3 2. + <_> + + <_> + 6 10 1 3 -1. + <_> + 6 11 1 1 3. + <_> + + <_> + 6 9 2 3 -1. + <_> + 6 10 2 1 3. + <_> + + <_> + 11 3 6 3 -1. + <_> + 11 4 6 1 3. + <_> + + <_> + 13 14 2 3 -1. + <_> + 13 15 2 1 3. + <_> + + <_> + 6 16 8 4 -1. + <_> + 6 16 4 2 2. + <_> + 10 18 4 2 2. + <_> + + <_> + 10 5 3 15 -1. + <_> + 11 5 1 15 3. + <_> + + <_> + 10 0 10 6 -1. + <_> + 10 0 5 3 2. + <_> + 15 3 5 3 2. + <_> + + <_> + 11 2 3 16 -1. + <_> + 12 2 1 16 3. + <_> + + <_> + 7 12 2 2 -1. + <_> + 7 12 1 1 2. + <_> + 8 13 1 1 2. + <_> + + <_> + 6 4 2 1 -1. + <_> + 7 4 1 1 2. + <_> + + <_> + 6 3 3 4 -1. + <_> + 7 3 1 4 3. + <_> + + <_> + 0 13 16 6 -1. + <_> + 0 15 16 2 3. + <_> + + <_> + 7 14 2 3 -1. + <_> + 7 15 2 1 3. + <_> + + <_> + 15 17 2 2 -1. + <_> + 15 18 2 1 2. + <_> + + <_> + 17 12 2 2 -1. + <_> + 17 12 1 1 2. + <_> + 18 13 1 1 2. + <_> + + <_> + 11 1 3 19 -1. + <_> + 12 1 1 19 3. + <_> + + <_> + 1 11 19 4 -1. + <_> + 1 13 19 2 2. + <_> + + <_> + 17 8 2 10 -1. + <_> + 17 8 1 5 2. + <_> + 18 13 1 5 2. + <_> + + <_> + 9 0 11 20 -1. + <_> + 9 10 11 10 2. + <_> + + <_> + 4 1 12 12 -1. + <_> + 4 1 6 6 2. + <_> + 10 7 6 6 2. + <_> + + <_> + 5 11 3 6 -1. + <_> + 6 11 1 6 3. + <_> + + <_> + 4 8 3 1 -1. + <_> + 5 8 1 1 3. + <_> + + <_> + 18 1 2 4 -1. + <_> + 19 1 1 4 2. + <_> + + <_> + 11 0 8 15 -1. + <_> + 15 0 4 15 2. + <_> + + <_> + 5 5 6 2 -1. + <_> + 7 5 2 2 3. + <_> + + <_> + 17 11 2 2 -1. + <_> + 17 11 1 1 2. + <_> + 18 12 1 1 2. + <_> + + <_> + 6 8 2 8 -1. + <_> + 6 12 2 4 2. + <_> + + <_> + 9 9 2 4 -1. + <_> + 9 11 2 2 2. + <_> + + <_> + 0 8 2 2 -1. + <_> + 0 9 2 1 2. + <_> + + <_> + 7 12 8 4 -1. + <_> + 7 14 8 2 2. + <_> + + <_> + 11 13 3 2 -1. + <_> + 11 14 3 1 2. + <_> + + <_> + 5 8 2 2 -1. + <_> + 5 8 1 1 2. + <_> + 6 9 1 1 2. + <_> + + <_> + 12 11 2 3 -1. + <_> + 12 12 2 1 3. + <_> + + <_> + 10 8 2 2 -1. + <_> + 10 8 1 1 2. + <_> + 11 9 1 1 2. + <_> + + <_> + 6 16 3 2 -1. + <_> + 7 16 1 2 3. + <_> + + <_> + 13 12 2 1 -1. + <_> + 14 12 1 1 2. + <_> + + <_> + 16 9 2 6 -1. + <_> + 16 9 1 3 2. + <_> + 17 12 1 3 2. + <_> + + <_> + 17 2 2 6 -1. + <_> + 17 4 2 2 3. + <_> + + <_> + 13 2 7 6 -1. + <_> + 13 4 7 2 3. + <_> + + <_> + 16 10 4 4 -1. + <_> + 16 10 2 2 2. + <_> + 18 12 2 2 2. + <_> + + <_> + 11 10 2 2 -1. + <_> + 11 11 2 1 2. + <_> + + <_> + 6 13 3 3 -1. + <_> + 6 14 3 1 3. + <_> + + <_> + 4 14 4 2 -1. + <_> + 4 15 4 1 2. + <_> + + <_> + 0 9 2 1 -1. + <_> + 1 9 1 1 2. + <_> + + <_> + 7 6 4 8 -1. + <_> + 7 10 4 4 2. + <_> + + <_> + 9 17 7 3 -1. + <_> + 9 18 7 1 3. + <_> + + <_> + 7 12 2 3 -1. + <_> + 7 13 2 1 3. + <_> + + <_> + 12 17 4 3 -1. + <_> + 12 18 4 1 3. + <_> + + <_> + 11 7 9 11 -1. + <_> + 14 7 3 11 3. + <_> + + <_> + 16 14 4 5 -1. + <_> + 18 14 2 5 2. + <_> + + <_> + 9 2 3 4 -1. + <_> + 10 2 1 4 3. + <_> + + <_> + 3 11 2 8 -1. + <_> + 3 11 1 4 2. + <_> + 4 15 1 4 2. + <_> + + <_> + 13 2 6 18 -1. + <_> + 13 2 3 9 2. + <_> + 16 11 3 9 2. + <_> + + <_> + 9 12 5 2 -1. + <_> + 9 13 5 1 2. + <_> + + <_> + 11 8 4 10 -1. + <_> + 11 8 2 5 2. + <_> + 13 13 2 5 2. + <_> + + <_> + 0 11 20 1 -1. + <_> + 10 11 10 1 2. + <_> + + <_> + 1 12 1 2 -1. + <_> + 1 13 1 1 2. + <_> + + <_> + 6 7 6 3 -1. + <_> + 8 7 2 3 3. + <_> + + <_> + 8 5 10 3 -1. + <_> + 13 5 5 3 2. + <_> + + <_> + 5 5 4 6 -1. + <_> + 5 7 4 2 3. + <_> + + <_> + 5 11 6 3 -1. + <_> + 8 11 3 3 2. + <_> + + <_> + 2 8 3 7 -1. + <_> + 3 8 1 7 3. + <_> + + <_> + 2 10 3 6 -1. + <_> + 3 10 1 6 3. + <_> + + <_> + 14 0 2 2 -1. + <_> + 15 0 1 2 2. + <_> + + <_> + 8 7 4 4 -1. + <_> + 8 7 2 2 2. + <_> + 10 9 2 2 2. + <_> + + <_> + 4 13 4 3 -1. + <_> + 4 14 4 1 3. + <_> + + <_> + 8 11 6 2 -1. + <_> + 8 12 6 1 2. + <_> + + <_> + 17 3 1 4 -1. + <_> + 17 5 1 2 2. + <_> + + <_> + 6 13 2 3 -1. + <_> + 6 14 2 1 3. + <_> + + <_> + 7 9 6 8 -1. + <_> + 7 9 3 4 2. + <_> + 10 13 3 4 2. + <_> + + <_> + 5 15 2 3 -1. + <_> + 5 16 2 1 3. + <_> + + <_> + 7 10 4 9 -1. + <_> + 7 13 4 3 3. + <_> + + <_> + 5 4 2 1 -1. + <_> + 6 4 1 1 2. + <_> + + <_> + 0 1 6 19 -1. + <_> + 2 1 2 19 3. + <_> + + <_> + 5 8 6 2 -1. + <_> + 8 8 3 2 2. + <_> + + <_> + 5 11 3 3 -1. + <_> + 5 12 3 1 3. + <_> + + <_> + 5 10 2 3 -1. + <_> + 5 11 2 1 3. + <_> + + <_> + 9 12 2 4 -1. + <_> + 9 12 1 2 2. + <_> + 10 14 1 2 2. + <_> + + <_> + 12 7 2 10 -1. + <_> + 12 12 2 5 2. + <_> + + <_> + 10 6 6 8 -1. + <_> + 10 10 6 4 2. + <_> + + <_> + 4 3 2 6 -1. + <_> + 5 3 1 6 2. + <_> + + <_> + 4 6 3 3 -1. + <_> + 5 6 1 3 3. + <_> + + <_> + 10 7 2 8 -1. + <_> + 10 7 1 4 2. + <_> + 11 11 1 4 2. + <_> + + <_> + 2 0 6 10 -1. + <_> + 2 5 6 5 2. + <_> + + <_> + 8 10 6 2 -1. + <_> + 8 11 6 1 2. + <_> + + <_> + 10 0 2 1 -1. + <_> + 11 0 1 1 2. + <_> + + <_> + 4 16 4 3 -1. + <_> + 4 17 4 1 3. + <_> + + <_> + 7 4 3 2 -1. + <_> + 8 4 1 2 3. + <_> + + <_> + 7 5 3 1 -1. + <_> + 8 5 1 1 3. + <_> + + <_> + 5 5 6 3 -1. + <_> + 5 6 6 1 3. + <_> + + <_> + 5 5 5 3 -1. + <_> + 5 6 5 1 3. + <_> + + <_> + 10 7 6 9 -1. + <_> + 10 10 6 3 3. + <_> + + <_> + 17 4 1 2 -1. + <_> + 17 5 1 1 2. + <_> + + <_> + 4 9 10 4 -1. + <_> + 4 9 5 2 2. + <_> + 9 11 5 2 2. + <_> + + <_> + 5 6 3 10 -1. + <_> + 5 11 3 5 2. + <_> + + <_> + 2 13 18 5 -1. + <_> + 11 13 9 5 2. + <_> + + <_> + 5 12 3 3 -1. + <_> + 5 13 3 1 3. + <_> + + <_> + 9 12 2 4 -1. + <_> + 9 14 2 2 2. + <_> + + <_> + 5 11 15 6 -1. + <_> + 5 13 15 2 3. + <_> + + <_> + 16 0 4 6 -1. + <_> + 16 0 2 3 2. + <_> + 18 3 2 3 2. + <_> + + <_> + 11 12 2 2 -1. + <_> + 11 12 1 1 2. + <_> + 12 13 1 1 2. + <_> + + <_> + 6 6 3 5 -1. + <_> + 7 6 1 5 3. + <_> + + <_> + 13 13 2 1 -1. + <_> + 14 13 1 1 2. + <_> + + <_> + 5 8 3 2 -1. + <_> + 6 8 1 2 3. + <_> + + <_> + 0 0 2 1 -1. + <_> + 1 0 1 1 2. + <_> + + <_> + 0 0 2 1 -1. + <_> + 1 0 1 1 2. + <_> + + <_> + 16 12 3 1 -1. + <_> + 17 12 1 1 3. + <_> + + <_> + 8 5 12 8 -1. + <_> + 14 5 6 8 2. + <_> + + <_> + 5 13 4 4 -1. + <_> + 5 13 2 2 2. + <_> + 7 15 2 2 2. + <_> + + <_> + 5 7 2 3 -1. + <_> + 6 7 1 3 2. + <_> + + <_> + 9 2 2 10 -1. + <_> + 9 2 1 5 2. + <_> + 10 7 1 5 2. + <_> + + <_> + 9 14 1 2 -1. + <_> + 9 15 1 1 2. + <_> + + <_> + 15 7 2 4 -1. + <_> + 15 9 2 2 2. + <_> + + <_> + 7 5 4 3 -1. + <_> + 7 6 4 1 3. + <_> + + <_> + 3 10 8 2 -1. + <_> + 7 10 4 2 2. + <_> + + <_> + 13 8 2 2 -1. + <_> + 13 9 2 1 2. + <_> + + <_> + 9 6 2 3 -1. + <_> + 9 7 2 1 3. + <_> + + <_> + 13 10 5 2 -1. + <_> + 13 11 5 1 2. + <_> + + <_> + 16 11 2 2 -1. + <_> + 16 11 1 1 2. + <_> + 17 12 1 1 2. + <_> + + <_> + 0 10 2 4 -1. + <_> + 0 10 1 2 2. + <_> + 1 12 1 2 2. + <_> + + <_> + 0 8 2 8 -1. + <_> + 0 8 1 4 2. + <_> + 1 12 1 4 2. + <_> + + <_> + 6 14 5 3 -1. + <_> + 6 15 5 1 3. + <_> + + <_> + 18 8 2 4 -1. + <_> + 19 8 1 4 2. + <_> + + <_> + 14 2 3 1 -1. + <_> + 15 2 1 1 3. + <_> + + <_> + 9 13 3 3 -1. + <_> + 9 14 3 1 3. + <_> + + <_> + 5 13 6 3 -1. + <_> + 5 14 6 1 3. + <_> + + <_> + 12 12 1 3 -1. + <_> + 12 13 1 1 3. + <_> + + <_> + 2 14 14 6 -1. + <_> + 2 17 14 3 2. + <_> + + <_> + 7 5 2 4 -1. + <_> + 7 5 1 2 2. + <_> + 8 7 1 2 2. + <_> + + <_> + 5 17 2 2 -1. + <_> + 5 17 1 1 2. + <_> + 6 18 1 1 2. + <_> + + <_> + 9 3 3 5 -1. + <_> + 10 3 1 5 3. + <_> + + <_> + 6 17 4 3 -1. + <_> + 6 18 4 1 3. + <_> + + <_> + 10 0 6 4 -1. + <_> + 12 0 2 4 3. + <_> + + <_> + 4 8 6 10 -1. + <_> + 4 8 3 5 2. + <_> + 7 13 3 5 2. + <_> + + <_> + 4 3 2 6 -1. + <_> + 5 3 1 6 2. + <_> + + <_> + 3 4 6 6 -1. + <_> + 5 4 2 6 3. + <_> + + <_> + 5 8 2 8 -1. + <_> + 5 12 2 4 2. + <_> + + <_> + 5 11 2 2 -1. + <_> + 5 12 2 1 2. + <_> + + <_> + 12 13 1 3 -1. + <_> + 12 14 1 1 3. + <_> + + <_> + 5 1 4 15 -1. + <_> + 5 6 4 5 3. + <_> + + <_> + 6 11 1 3 -1. + <_> + 6 12 1 1 3. + <_> + + <_> + 6 11 3 3 -1. + <_> + 6 12 3 1 3. + <_> + + <_> + 11 0 3 3 -1. + <_> + 12 0 1 3 3. + <_> + + <_> + 2 2 15 3 -1. + <_> + 7 2 5 3 3. + <_> + + <_> + 4 0 16 5 -1. + <_> + 12 0 8 5 2. + <_> + + <_> + 13 7 6 8 -1. + <_> + 13 11 6 4 2. + <_> + + <_> + 9 9 3 4 -1. + <_> + 9 11 3 2 2. + <_> + + <_> + 5 2 6 16 -1. + <_> + 5 2 3 8 2. + <_> + 8 10 3 8 2. + <_> + + <_> + 10 7 6 3 -1. + <_> + 13 7 3 3 2. + <_> + + <_> + 12 11 2 1 -1. + <_> + 13 11 1 1 2. + <_> + + <_> + 0 0 1 8 -1. + <_> + 0 4 1 4 2. + <_> + + <_> + 9 7 2 3 -1. + <_> + 9 8 2 1 3. + <_> + + <_> + 6 5 4 15 -1. + <_> + 8 5 2 15 2. + <_> + + <_> + 7 7 2 2 -1. + <_> + 8 7 1 2 2. + <_> + + <_> + 1 3 1 2 -1. + <_> + 1 4 1 1 2. + <_> + + <_> + 6 2 6 11 -1. + <_> + 9 2 3 11 2. + <_> + + <_> + 9 6 9 6 -1. + <_> + 9 8 9 2 3. + <_> + + <_> + 9 8 3 3 -1. + <_> + 9 9 3 1 3. + <_> + + <_> + 6 8 2 3 -1. + <_> + 6 9 2 1 3. + <_> + + <_> + 13 1 2 8 -1. + <_> + 13 5 2 4 2. + <_> + + <_> + 6 0 6 4 -1. + <_> + 6 2 6 2 2. + <_> + + <_> + 0 6 20 14 -1. + <_> + 10 6 10 14 2. + <_> + + <_> + 8 0 12 6 -1. + <_> + 8 0 6 3 2. + <_> + 14 3 6 3 2. + <_> + + <_> + 8 7 9 9 -1. + <_> + 8 10 9 3 3. + <_> + + <_> + 10 14 6 6 -1. + <_> + 10 14 3 3 2. + <_> + 13 17 3 3 2. + <_> + + <_> + 8 7 4 10 -1. + <_> + 8 7 2 5 2. + <_> + 10 12 2 5 2. + <_> + + <_> + 15 4 3 3 -1. + <_> + 15 5 3 1 3. + <_> + + <_> + 14 0 6 6 -1. + <_> + 16 0 2 6 3. + <_> + + <_> + 5 9 10 6 -1. + <_> + 5 9 5 3 2. + <_> + 10 12 5 3 2. + <_> + + <_> + 11 12 2 1 -1. + <_> + 12 12 1 1 2. + <_> + + <_> + 11 7 3 7 -1. + <_> + 12 7 1 7 3. + <_> + + <_> + 9 0 2 18 -1. + <_> + 9 0 1 9 2. + <_> + 10 9 1 9 2. + <_> + + <_> + 3 6 3 4 -1. + <_> + 4 6 1 4 3. + <_> + + <_> + 14 10 2 2 -1. + <_> + 14 10 1 1 2. + <_> + 15 11 1 1 2. + <_> + + <_> + 4 7 3 2 -1. + <_> + 5 7 1 2 3. + <_> + + <_> + 10 14 4 3 -1. + <_> + 10 15 4 1 3. + <_> + + <_> + 12 12 2 3 -1. + <_> + 12 13 2 1 3. + <_> + + <_> + 3 0 2 8 -1. + <_> + 3 0 1 4 2. + <_> + 4 4 1 4 2. + <_> + + <_> + 14 4 5 3 -1. + <_> + 14 5 5 1 3. + <_> + + <_> + 6 16 1 3 -1. + <_> + 6 17 1 1 3. + <_> + + <_> + 5 16 2 3 -1. + <_> + 5 17 2 1 3. + <_> + + <_> + 4 6 10 6 -1. + <_> + 4 6 5 3 2. + <_> + 9 9 5 3 2. + <_> + + <_> + 9 14 7 4 -1. + <_> + 9 16 7 2 2. + <_> + + <_> + 10 11 2 4 -1. + <_> + 10 11 1 2 2. + <_> + 11 13 1 2 2. + <_> + + <_> + 5 12 4 3 -1. + <_> + 5 13 4 1 3. + <_> + + <_> + 5 13 3 2 -1. + <_> + 5 14 3 1 2. + <_> + + <_> + 7 13 8 4 -1. + <_> + 7 15 8 2 2. + <_> + + <_> + 8 4 3 1 -1. + <_> + 9 4 1 1 3. + <_> + + <_> + 6 1 1 4 -1. + <_> + 6 3 1 2 2. + <_> + + <_> + 8 0 12 6 -1. + <_> + 8 0 6 3 2. + <_> + 14 3 6 3 2. + <_> + + <_> + 8 5 2 3 -1. + <_> + 8 6 2 1 3. + <_> + + <_> + 8 5 2 3 -1. + <_> + 8 6 2 1 3. + <_> + + <_> + 7 4 3 1 -1. + <_> + 8 4 1 1 3. + <_> + + <_> + 7 9 2 2 -1. + <_> + 7 9 1 1 2. + <_> + 8 10 1 1 2. + <_> + + <_> + 15 14 4 6 -1. + <_> + 15 14 2 3 2. + <_> + 17 17 2 3 2. + <_> + + <_> + 7 9 1 4 -1. + <_> + 7 11 1 2 2. + <_> + + <_> + 10 11 3 9 -1. + <_> + 11 11 1 9 3. + <_> + + <_> + 17 11 3 1 -1. + <_> + 18 11 1 1 3. + <_> + + <_> + 17 11 3 1 -1. + <_> + 18 11 1 1 3. + <_> + + <_> + 0 1 1 2 -1. + <_> + 0 2 1 1 2. + <_> + + <_> + 9 15 7 3 -1. + <_> + 9 16 7 1 3. + <_> + + <_> + 15 0 2 2 -1. + <_> + 16 0 1 2 2. + <_> + + <_> + 5 0 1 14 -1. + <_> + 5 7 1 7 2. + <_> + + <_> + 7 3 1 2 -1. + <_> + 7 4 1 1 2. + <_> + + <_> + 7 0 4 6 -1. + <_> + 7 2 4 2 3. + <_> + + <_> + 7 2 3 2 -1. + <_> + 8 2 1 2 3. + <_> + + <_> + 5 12 4 3 -1. + <_> + 5 13 4 1 3. + <_> + + <_> + 18 5 1 2 -1. + <_> + 18 6 1 1 2. + <_> + + <_> + 18 0 2 10 -1. + <_> + 18 0 1 5 2. + <_> + 19 5 1 5 2. + <_> + + <_> + 0 2 13 6 -1. + <_> + 0 4 13 2 3. + <_> + + <_> + 0 0 2 2 -1. + <_> + 0 0 1 1 2. + <_> + 1 1 1 1 2. + <_> + + <_> + 5 10 2 3 -1. + <_> + 5 11 2 1 3. + <_> + + <_> + 5 10 2 3 -1. + <_> + 5 11 2 1 3. + <_> + + <_> + 6 12 2 4 -1. + <_> + 7 12 1 4 2. + <_> + + <_> + 7 9 4 10 -1. + <_> + 9 9 2 10 2. + <_> + + <_> + 2 0 9 16 -1. + <_> + 2 8 9 8 2. + <_> + + <_> + 10 3 2 8 -1. + <_> + 10 3 1 4 2. + <_> + 11 7 1 4 2. + <_> + + <_> + 1 2 12 3 -1. + <_> + 5 2 4 3 3. + <_> + + <_> + 4 6 2 3 -1. + <_> + 5 6 1 3 2. + <_> + + <_> + 1 7 6 10 -1. + <_> + 3 7 2 10 3. + <_> + + <_> + 1 14 2 1 -1. + <_> + 2 14 1 1 2. + <_> + + <_> + 11 12 1 2 -1. + <_> + 11 13 1 1 2. + <_> + + <_> + 12 8 3 5 -1. + <_> + 13 8 1 5 3. + <_> + + <_> + 6 5 9 6 -1. + <_> + 6 7 9 2 3. + <_> + + <_> + 13 8 2 3 -1. + <_> + 13 9 2 1 3. + <_> + + <_> + 7 15 6 4 -1. + <_> + 7 15 3 2 2. + <_> + 10 17 3 2 2. + <_> + + <_> + 10 15 6 3 -1. + <_> + 10 16 6 1 3. + <_> + + <_> + 3 2 2 6 -1. + <_> + 3 2 1 3 2. + <_> + 4 5 1 3 2. + <_> + + <_> + 10 15 3 5 -1. + <_> + 11 15 1 5 3. + <_> + + <_> + 12 9 5 2 -1. + <_> + 12 10 5 1 2. + <_> + + <_> + 4 11 10 1 -1. + <_> + 9 11 5 1 2. + <_> + + <_> + 6 12 6 2 -1. + <_> + 6 12 3 1 2. + <_> + 9 13 3 1 2. + <_> + + <_> + 6 11 1 3 -1. + <_> + 6 12 1 1 3. + <_> + + <_> + 3 12 8 4 -1. + <_> + 3 12 4 2 2. + <_> + 7 14 4 2 2. + <_> + + <_> + 0 3 1 3 -1. + <_> + 0 4 1 1 3. + <_> + + <_> + 10 12 2 1 -1. + <_> + 11 12 1 1 2. + <_> + + <_> + 3 10 3 6 -1. + <_> + 3 12 3 2 3. + <_> + + <_> + 5 10 2 3 -1. + <_> + 5 11 2 1 3. + <_> + + <_> + 8 7 4 6 -1. + <_> + 8 9 4 2 3. + <_> + + <_> + 12 11 1 3 -1. + <_> + 12 12 1 1 3. + <_> + + <_> + 12 11 2 3 -1. + <_> + 12 12 2 1 3. + <_> + + <_> + 6 10 2 2 -1. + <_> + 6 10 1 1 2. + <_> + 7 11 1 1 2. + <_> + + <_> + 3 10 9 6 -1. + <_> + 3 13 9 3 2. + <_> + + <_> + 4 8 7 10 -1. + <_> + 4 13 7 5 2. + <_> + + <_> + 6 8 11 3 -1. + <_> + 6 9 11 1 3. + <_> + + <_> + 6 5 1 14 -1. + <_> + 6 12 1 7 2. + <_> + + <_> + 13 6 5 10 -1. + <_> + 13 11 5 5 2. + <_> + + <_> + 2 0 13 15 -1. + <_> + 2 5 13 5 3. + <_> + + <_> + 6 7 2 2 -1. + <_> + 7 7 1 2 2. + <_> + + <_> + 4 5 9 4 -1. + <_> + 7 5 3 4 3. + <_> + + <_> + 6 7 3 3 -1. + <_> + 7 7 1 3 3. + <_> + + <_> + 8 1 3 4 -1. + <_> + 9 1 1 4 3. + <_> + + <_> + 8 11 7 2 -1. + <_> + 8 12 7 1 2. + <_> + + <_> + 4 7 3 2 -1. + <_> + 5 7 1 2 3. + <_> + + <_> + 4 14 2 6 -1. + <_> + 4 14 1 3 2. + <_> + 5 17 1 3 2. + <_> + + <_> + 0 7 8 13 -1. + <_> + 4 7 4 13 2. + <_> + + <_> + 6 3 4 9 -1. + <_> + 8 3 2 9 2. + <_> + + <_> + 9 12 2 3 -1. + <_> + 9 13 2 1 3. + <_> + + <_> + 16 14 2 6 -1. + <_> + 16 14 1 3 2. + <_> + 17 17 1 3 2. + <_> + + <_> + 11 14 2 3 -1. + <_> + 11 15 2 1 3. + <_> + + <_> + 11 14 1 2 -1. + <_> + 11 15 1 1 2. + <_> + + <_> + 8 8 3 2 -1. + <_> + 8 9 3 1 2. + <_> + + <_> + 13 1 3 5 -1. + <_> + 14 1 1 5 3. + <_> + + <_> + 6 15 8 2 -1. + <_> + 6 15 4 1 2. + <_> + 10 16 4 1 2. + <_> + + <_> + 13 2 3 4 -1. + <_> + 14 2 1 4 3. + <_> + + <_> + 1 8 1 6 -1. + <_> + 1 10 1 2 3. + <_> + + <_> + 12 0 8 2 -1. + <_> + 12 0 4 1 2. + <_> + 16 1 4 1 2. + <_> + + <_> + 5 8 3 1 -1. + <_> + 6 8 1 1 3. + <_> + + <_> + 7 5 2 4 -1. + <_> + 8 5 1 4 2. + <_> + + <_> + 7 2 2 1 -1. + <_> + 8 2 1 1 2. + <_> + + <_> + 0 4 2 3 -1. + <_> + 0 5 2 1 3. + <_> + + <_> + 3 17 2 2 -1. + <_> + 3 17 1 1 2. + <_> + 4 18 1 1 2. + <_> + + <_> + 6 0 12 9 -1. + <_> + 12 0 6 9 2. + <_> + + <_> + 7 0 12 3 -1. + <_> + 11 0 4 3 3. + <_> + + <_> + 14 0 6 6 -1. + <_> + 14 0 3 3 2. + <_> + 17 3 3 3 2. + <_> + + <_> + 15 2 1 2 -1. + <_> + 15 3 1 1 2. + <_> + + <_> + 8 2 1 6 -1. + <_> + 8 4 1 2 3. + <_> + + <_> + 5 7 3 2 -1. + <_> + 6 7 1 2 3. + <_> + + <_> + 6 7 4 6 -1. + <_> + 6 10 4 3 2. + <_> + + <_> + 8 6 10 2 -1. + <_> + 13 6 5 2 2. + <_> + + <_> + 2 1 4 15 -1. + <_> + 4 1 2 15 2. + <_> + + <_> + 5 9 3 6 -1. + <_> + 5 12 3 3 2. + <_> + + <_> + 12 11 2 1 -1. + <_> + 13 11 1 1 2. + <_> + + <_> + 6 4 6 2 -1. + <_> + 8 4 2 2 3. + <_> + + <_> + 12 9 4 8 -1. + <_> + 12 13 4 4 2. + <_> + + <_> + 15 8 2 4 -1. + <_> + 15 10 2 2 2. + <_> + + <_> + 6 12 3 3 -1. + <_> + 6 13 3 1 3. + <_> + + <_> + 6 12 2 3 -1. + <_> + 6 13 2 1 3. + <_> + + <_> + 5 10 4 6 -1. + <_> + 7 10 2 6 2. + <_> + + <_> + 7 8 2 9 -1. + <_> + 7 11 2 3 3. + <_> + + <_> + 5 13 4 3 -1. + <_> + 5 14 4 1 3. + <_> + + <_> + 11 12 2 2 -1. + <_> + 11 12 1 1 2. + <_> + 12 13 1 1 2. + <_> + + <_> + 5 13 5 3 -1. + <_> + 5 14 5 1 3. + <_> + + <_> + 4 9 8 1 -1. + <_> + 8 9 4 1 2. + <_> + + <_> + 12 0 8 6 -1. + <_> + 12 0 4 3 2. + <_> + 16 3 4 3 2. + <_> + + <_> + 11 12 1 2 -1. + <_> + 11 13 1 1 2. + <_> + + <_> + 8 4 3 3 -1. + <_> + 9 4 1 3 3. + <_> + + <_> + 8 0 7 15 -1. + <_> + 8 5 7 5 3. + <_> + + <_> + 3 0 8 4 -1. + <_> + 3 0 4 2 2. + <_> + 7 2 4 2 2. + <_> + + <_> + 0 11 20 1 -1. + <_> + 10 11 10 1 2. + <_> + + <_> + 3 14 3 2 -1. + <_> + 4 14 1 2 3. + <_> + + <_> + 3 11 3 8 -1. + <_> + 4 11 1 8 3. + <_> + + <_> + 7 13 2 5 -1. + <_> + 8 13 1 5 2. + <_> + + <_> + 14 4 3 3 -1. + <_> + 14 5 3 1 3. + <_> + + <_> + 5 11 2 3 -1. + <_> + 5 12 2 1 3. + <_> + + <_> + 6 12 1 2 -1. + <_> + 6 13 1 1 2. + <_> + + <_> + 5 13 3 1 -1. + <_> + 6 13 1 1 3. + <_> + + <_> + 12 11 1 3 -1. + <_> + 12 12 1 1 3. + <_> + + <_> + 5 10 2 3 -1. + <_> + 5 11 2 1 3. + <_> + + <_> + 5 9 1 3 -1. + <_> + 5 10 1 1 3. + <_> + + <_> + 1 9 12 9 -1. + <_> + 1 12 12 3 3. + <_> + + <_> + 12 14 3 3 -1. + <_> + 12 15 3 1 3. + <_> + + <_> + 10 14 5 3 -1. + <_> + 10 15 5 1 3. + <_> + + <_> + 5 11 3 3 -1. + <_> + 5 12 3 1 3. + <_> + + <_> + 5 11 2 6 -1. + <_> + 5 14 2 3 2. + <_> + + <_> + 6 5 2 14 -1. + <_> + 6 12 2 7 2. + <_> + + <_> + 2 8 5 2 -1. + <_> + 2 9 5 1 2. + <_> + + <_> + 10 14 1 2 -1. + <_> + 10 15 1 1 2. + <_> + + <_> + 7 14 4 6 -1. + <_> + 7 16 4 2 3. + <_> + + <_> + 8 12 3 1 -1. + <_> + 9 12 1 1 3. + <_> + + <_> + 4 8 3 1 -1. + <_> + 5 8 1 1 3. + <_> + + <_> + 3 6 3 4 -1. + <_> + 4 6 1 4 3. + <_> + + <_> + 4 4 3 8 -1. + <_> + 4 8 3 4 2. + <_> + + <_> + 12 5 2 2 -1. + <_> + 12 6 2 1 2. + <_> + + <_> + 16 10 2 2 -1. + <_> + 16 10 1 1 2. + <_> + 17 11 1 1 2. + <_> + + <_> + 0 0 2 1 -1. + <_> + 1 0 1 1 2. + <_> + + <_> + 7 0 5 8 -1. + <_> + 7 4 5 4 2. + <_> + + <_> + 4 5 8 10 -1. + <_> + 4 5 4 5 2. + <_> + 8 10 4 5 2. + <_> + + <_> + 7 5 3 3 -1. + <_> + 7 6 3 1 3. + <_> + + <_> + 10 6 10 14 -1. + <_> + 10 13 10 7 2. + <_> + + <_> + 8 6 2 3 -1. + <_> + 8 7 2 1 3. + <_> + + <_> + 13 10 1 4 -1. + <_> + 13 12 1 2 2. + <_> + + <_> + 3 9 12 4 -1. + <_> + 3 9 6 2 2. + <_> + 9 11 6 2 2. + <_> + + <_> + 7 14 3 6 -1. + <_> + 7 16 3 2 3. + <_> + + <_> + 10 10 3 2 -1. + <_> + 11 10 1 2 3. + <_> + + <_> + 3 4 10 4 -1. + <_> + 3 4 5 2 2. + <_> + 8 6 5 2 2. + <_> + + <_> + 4 10 4 3 -1. + <_> + 4 11 4 1 3. + <_> + + <_> + 5 3 6 4 -1. + <_> + 5 3 3 2 2. + <_> + 8 5 3 2 2. + <_> + + <_> + 6 8 6 10 -1. + <_> + 9 8 3 10 2. + <_> + + <_> + 10 15 6 3 -1. + <_> + 10 16 6 1 3. + <_> + + <_> + 3 4 3 7 -1. + <_> + 4 4 1 7 3. + <_> + + <_> + 3 3 3 11 -1. + <_> + 4 3 1 11 3. + <_> + + <_> + 7 14 5 3 -1. + <_> + 7 15 5 1 3. + <_> + + <_> + 17 11 2 2 -1. + <_> + 17 11 1 1 2. + <_> + 18 12 1 1 2. + <_> + + <_> + 9 0 3 4 -1. + <_> + 10 0 1 4 3. + <_> + + <_> + 11 1 3 1 -1. + <_> + 12 1 1 1 3. + <_> + + <_> + 17 11 2 2 -1. + <_> + 17 11 1 1 2. + <_> + 18 12 1 1 2. + <_> + + <_> + 0 10 2 1 -1. + <_> + 1 10 1 1 2. + <_> + + <_> + 17 0 2 8 -1. + <_> + 17 0 1 4 2. + <_> + 18 4 1 4 2. + <_> + + <_> + 6 7 6 2 -1. + <_> + 8 7 2 2 3. + <_> + + <_> + 5 7 6 9 -1. + <_> + 8 7 3 9 2. + <_> + + <_> + 6 8 9 3 -1. + <_> + 9 8 3 3 3. + <_> + + <_> + 11 7 6 4 -1. + <_> + 13 7 2 4 3. + <_> + + <_> + 8 5 2 2 -1. + <_> + 9 5 1 2 2. + <_> + + <_> + 15 3 4 10 -1. + <_> + 15 8 4 5 2. + <_> + + <_> + 9 2 1 2 -1. + <_> + 9 3 1 1 2. + <_> + + <_> + 7 15 8 2 -1. + <_> + 7 15 4 1 2. + <_> + 11 16 4 1 2. + <_> + + <_> + 6 5 2 9 -1. + <_> + 7 5 1 9 2. + <_> + + <_> + 6 6 2 4 -1. + <_> + 7 6 1 4 2. + <_> + + <_> + 10 15 2 4 -1. + <_> + 11 15 1 4 2. + <_> + + <_> + 9 17 3 2 -1. + <_> + 10 17 1 2 3. + <_> + + <_> + 12 9 7 4 -1. + <_> + 12 11 7 2 2. + <_> + + <_> + 5 9 9 3 -1. + <_> + 8 9 3 3 3. + <_> + + <_> + 5 8 6 5 -1. + <_> + 8 8 3 5 2. + <_> + + <_> + 7 16 4 3 -1. + <_> + 7 17 4 1 3. + <_> + + <_> + 15 4 4 3 -1. + <_> + 15 5 4 1 3. + <_> + + <_> + 16 10 2 2 -1. + <_> + 16 10 1 1 2. + <_> + 17 11 1 1 2. + <_> + + <_> + 5 6 6 9 -1. + <_> + 8 6 3 9 2. + <_> + + <_> + 10 0 10 6 -1. + <_> + 10 0 5 3 2. + <_> + 15 3 5 3 2. + <_> + + <_> + 13 14 1 2 -1. + <_> + 13 15 1 1 2. + <_> + + <_> + 10 4 3 1 -1. + <_> + 11 4 1 1 3. + <_> + + <_> + 6 16 1 3 -1. + <_> + 6 17 1 1 3. + <_> + + <_> + 11 13 4 3 -1. + <_> + 11 14 4 1 3. + <_> + + <_> + 14 10 6 6 -1. + <_> + 14 10 3 3 2. + <_> + 17 13 3 3 2. + <_> + + <_> + 1 1 1 2 -1. + <_> + 1 2 1 1 2. + <_> + + <_> + 6 15 1 3 -1. + <_> + 6 16 1 1 3. + <_> + + <_> + 7 15 1 3 -1. + <_> + 7 16 1 1 3. + <_> + + <_> + 8 16 3 2 -1. + <_> + 9 16 1 2 3. + <_> + + <_> + 5 8 3 9 -1. + <_> + 6 8 1 9 3. + <_> + + <_> + 3 3 2 10 -1. + <_> + 3 3 1 5 2. + <_> + 4 8 1 5 2. + <_> + + <_> + 3 6 3 1 -1. + <_> + 4 6 1 1 3. + <_> + + <_> + 2 0 2 1 -1. + <_> + 3 0 1 1 2. + <_> + + <_> + 7 13 2 3 -1. + <_> + 7 14 2 1 3. + <_> + + <_> + 7 9 1 9 -1. + <_> + 7 12 1 3 3. + <_> + + <_> + 7 8 1 9 -1. + <_> + 7 11 1 3 3. + <_> + + <_> + 15 7 3 10 -1. + <_> + 16 7 1 10 3. + <_> + + <_> + 14 7 6 10 -1. + <_> + 16 7 2 10 3. + <_> + + <_> + 2 12 18 6 -1. + <_> + 2 14 18 2 3. + <_> + + <_> + 0 9 12 1 -1. + <_> + 4 9 4 1 3. + <_> + + <_> + 1 7 3 6 -1. + <_> + 2 7 1 6 3. + <_> + + <_> + 5 6 8 1 -1. + <_> + 9 6 4 1 2. + <_> + + <_> + 10 14 2 1 -1. + <_> + 11 14 1 1 2. + <_> + + <_> + 14 8 6 10 -1. + <_> + 16 8 2 10 3. + <_> + + <_> + 10 5 8 7 -1. + <_> + 14 5 4 7 2. + <_> + + <_> + 8 5 8 4 -1. + <_> + 8 5 4 2 2. + <_> + 12 7 4 2 2. + <_> + + <_> + 11 11 1 8 -1. + <_> + 11 15 1 4 2. + <_> + + <_> + 5 6 2 4 -1. + <_> + 6 6 1 4 2. + <_> + + <_> + 7 8 2 2 -1. + <_> + 7 9 2 1 2. + <_> + + <_> + 0 2 8 11 -1. + <_> + 4 2 4 11 2. + <_> + + <_> + 8 6 8 8 -1. + <_> + 8 10 8 4 2. + <_> + + <_> + 4 4 2 6 -1. + <_> + 5 4 1 6 2. + <_> + + <_> + 13 12 1 2 -1. + <_> + 13 13 1 1 2. + <_> + + <_> + 3 8 3 2 -1. + <_> + 4 8 1 2 3. + <_> + + <_> + 13 12 1 3 -1. + <_> + 13 13 1 1 3. + <_> + + <_> + 9 19 4 1 -1. + <_> + 11 19 2 1 2. + <_> + + <_> + 15 4 2 3 -1. + <_> + 15 5 2 1 3. + <_> + + <_> + 5 11 11 4 -1. + <_> + 5 13 11 2 2. + <_> + + <_> + 7 12 1 3 -1. + <_> + 7 13 1 1 3. + <_> + + <_> + 6 12 4 4 -1. + <_> + 6 14 4 2 2. + <_> + + <_> + 7 11 1 3 -1. + <_> + 7 12 1 1 3. + <_> + + <_> + 9 10 3 3 -1. + <_> + 10 10 1 3 3. + <_> + + <_> + 10 12 2 1 -1. + <_> + 11 12 1 1 2. + <_> + + <_> + 7 1 12 16 -1. + <_> + 7 1 6 8 2. + <_> + 13 9 6 8 2. + <_> + + <_> + 10 5 8 7 -1. + <_> + 14 5 4 7 2. + <_> + + <_> + 18 8 2 10 -1. + <_> + 18 8 1 5 2. + <_> + 19 13 1 5 2. + <_> + + <_> + 12 11 2 2 -1. + <_> + 13 11 1 2 2. + <_> + + <_> + 3 15 3 1 -1. + <_> + 4 15 1 1 3. + <_> + + <_> + 5 14 2 1 -1. + <_> + 6 14 1 1 2. + <_> + + <_> + 11 9 1 2 -1. + <_> + 11 10 1 1 2. + <_> + + <_> + 10 12 3 1 -1. + <_> + 11 12 1 1 3. + <_> + + <_> + 5 9 7 2 -1. + <_> + 5 10 7 1 2. + <_> + + <_> + 11 0 2 1 -1. + <_> + 12 0 1 1 2. + <_> + + <_> + 11 0 2 2 -1. + <_> + 12 0 1 2 2. + <_> + + <_> + 5 0 2 2 -1. + <_> + 5 0 1 1 2. + <_> + 6 1 1 1 2. + <_> + + <_> + 8 3 12 6 -1. + <_> + 8 5 12 2 3. + <_> + + <_> + 17 0 3 12 -1. + <_> + 18 0 1 12 3. + <_> + + <_> + 11 1 2 1 -1. + <_> + 12 1 1 1 2. + <_> + + <_> + 5 5 2 1 -1. + <_> + 6 5 1 1 2. + <_> + + <_> + 7 14 6 6 -1. + <_> + 7 14 3 3 2. + <_> + 10 17 3 3 2. + <_> + + <_> + 11 10 1 2 -1. + <_> + 11 11 1 1 2. + <_> + + <_> + 3 9 12 4 -1. + <_> + 3 9 6 2 2. + <_> + 9 11 6 2 2. + <_> + + <_> + 5 10 1 2 -1. + <_> + 5 11 1 1 2. + <_> + + <_> + 6 10 2 1 -1. + <_> + 7 10 1 1 2. + <_> + + <_> + 8 16 3 2 -1. + <_> + 9 16 1 2 3. + <_> + + <_> + 5 10 1 3 -1. + <_> + 5 11 1 1 3. + <_> + + <_> + 7 15 3 2 -1. + <_> + 8 15 1 2 3. + <_> + + <_> + 8 15 2 1 -1. + <_> + 9 15 1 1 2. + <_> + + <_> + 5 10 4 3 -1. + <_> + 5 11 4 1 3. + <_> + + <_> + 6 7 4 12 -1. + <_> + 8 7 2 12 2. + <_> + + <_> + 5 6 6 7 -1. + <_> + 8 6 3 7 2. + <_> + + <_> + 8 4 6 11 -1. + <_> + 11 4 3 11 2. + <_> + + <_> + 7 9 6 3 -1. + <_> + 9 9 2 3 3. + <_> + + <_> + 0 5 1 2 -1. + <_> + 0 6 1 1 2. + <_> + + <_> + 6 8 3 1 -1. + <_> + 7 8 1 1 3. + <_> + + <_> + 12 1 2 2 -1. + <_> + 13 1 1 2 2. + <_> + + <_> + 4 4 10 12 -1. + <_> + 4 4 5 6 2. + <_> + 9 10 5 6 2. + <_> + + <_> + 5 18 2 2 -1. + <_> + 5 18 1 1 2. + <_> + 6 19 1 1 2. + <_> + + <_> + 6 3 3 3 -1. + <_> + 7 3 1 3 3. + <_> + + <_> + 5 12 2 3 -1. + <_> + 5 13 2 1 3. + <_> + + <_> + 11 15 2 3 -1. + <_> + 11 16 2 1 3. + <_> + + <_> + 11 15 1 3 -1. + <_> + 11 16 1 1 3. + <_> + + <_> + 6 7 3 2 -1. + <_> + 7 7 1 2 3. + <_> + + <_> + 3 11 14 1 -1. + <_> + 10 11 7 1 2. + <_> + + <_> + 5 7 3 1 -1. + <_> + 6 7 1 1 3. + <_> + + <_> + 14 9 3 3 -1. + <_> + 14 10 3 1 3. + <_> + + <_> + 4 17 2 2 -1. + <_> + 4 17 1 1 2. + <_> + 5 18 1 1 2. + <_> + + <_> + 15 16 2 2 -1. + <_> + 15 17 2 1 2. + <_> + + <_> + 18 12 2 2 -1. + <_> + 18 12 1 1 2. + <_> + 19 13 1 1 2. + <_> + + <_> + 5 11 4 3 -1. + <_> + 7 11 2 3 2. + <_> + + <_> + 9 7 2 3 -1. + <_> + 9 8 2 1 3. + <_> + + <_> + 18 6 2 2 -1. + <_> + 18 7 2 1 2. + <_> + + <_> + 18 6 2 2 -1. + <_> + 18 7 2 1 2. + <_> + + <_> + 4 5 2 6 -1. + <_> + 4 7 2 2 3. + <_> + + <_> + 3 11 6 4 -1. + <_> + 3 11 3 2 2. + <_> + 6 13 3 2 2. + <_> + + <_> + 1 10 3 3 -1. + <_> + 2 10 1 3 3. + <_> + + <_> + 15 0 4 4 -1. + <_> + 15 0 2 2 2. + <_> + 17 2 2 2 2. + <_> + + <_> + 5 6 4 10 -1. + <_> + 5 11 4 5 2. + <_> + + <_> + 7 13 1 3 -1. + <_> + 7 14 1 1 3. + <_> + + <_> + 3 10 16 4 -1. + <_> + 3 10 8 2 2. + <_> + 11 12 8 2 2. + <_> + + <_> + 7 14 1 3 -1. + <_> + 7 15 1 1 3. + <_> + + <_> + 5 14 3 3 -1. + <_> + 5 15 3 1 3. + <_> + + <_> + 9 9 3 8 -1. + <_> + 10 9 1 8 3. + <_> + + <_> + 6 0 7 4 -1. + <_> + 6 2 7 2 2. + <_> + + <_> + 8 0 1 4 -1. + <_> + 8 2 1 2 2. + <_> + + <_> + 1 4 1 6 -1. + <_> + 1 6 1 2 3. + <_> + + <_> + 0 2 15 3 -1. + <_> + 5 2 5 3 3. + <_> + + <_> + 0 8 2 2 -1. + <_> + 0 9 2 1 2. + <_> + + <_> + 3 10 6 4 -1. + <_> + 5 10 2 4 3. + <_> + + <_> + 8 5 3 1 -1. + <_> + 9 5 1 1 3. + <_> + + <_> + 15 11 2 2 -1. + <_> + 15 11 1 1 2. + <_> + 16 12 1 1 2. + <_> + + <_> + 4 11 6 2 -1. + <_> + 7 11 3 2 2. + <_> + + <_> + 6 8 6 4 -1. + <_> + 8 8 2 4 3. + <_> + + <_> + 6 5 6 6 -1. + <_> + 8 5 2 6 3. + <_> + + <_> + 14 12 2 3 -1. + <_> + 15 12 1 3 2. + <_> + + <_> + 11 5 3 7 -1. + <_> + 12 5 1 7 3. + <_> + + <_> + 7 16 8 4 -1. + <_> + 7 16 4 2 2. + <_> + 11 18 4 2 2. + <_> + + <_> + 5 16 12 4 -1. + <_> + 5 16 6 2 2. + <_> + 11 18 6 2 2. + <_> + + <_> + 10 17 6 3 -1. + <_> + 10 18 6 1 3. + <_> + + <_> + 6 8 2 3 -1. + <_> + 6 9 2 1 3. + <_> + + <_> + 0 0 20 18 -1. + <_> + 10 0 10 18 2. + <_> + + <_> + 8 0 6 5 -1. + <_> + 11 0 3 5 2. + <_> + + <_> + 13 5 4 2 -1. + <_> + 13 5 2 1 2. + <_> + 15 6 2 1 2. + <_> + + <_> + 10 4 4 11 -1. + <_> + 12 4 2 11 2. + <_> + + <_> + 5 10 3 1 -1. + <_> + 6 10 1 1 3. + <_> + + <_> + 17 4 2 3 -1. + <_> + 17 5 2 1 3. + <_> + + <_> + 6 13 8 6 -1. + <_> + 6 13 4 3 2. + <_> + 10 16 4 3 2. + <_> + + <_> + 17 5 3 10 -1. + <_> + 18 5 1 10 3. + <_> + + <_> + 13 11 2 2 -1. + <_> + 14 11 1 2 2. + <_> + + <_> + 5 9 4 9 -1. + <_> + 5 12 4 3 3. + <_> + + <_> + 5 11 2 3 -1. + <_> + 5 12 2 1 3. + <_> + + <_> + 15 15 2 2 -1. + <_> + 15 15 1 1 2. + <_> + 16 16 1 1 2. + <_> + + <_> + 6 13 6 5 -1. + <_> + 8 13 2 5 3. + <_> + + <_> + 9 7 2 8 -1. + <_> + 9 7 1 4 2. + <_> + 10 11 1 4 2. + <_> + + <_> + 4 12 2 2 -1. + <_> + 4 12 1 1 2. + <_> + 5 13 1 1 2. + <_> + + <_> + 7 4 3 1 -1. + <_> + 8 4 1 1 3. + <_> + + <_> + 12 3 3 4 -1. + <_> + 13 3 1 4 3. + <_> + + <_> + 2 0 18 20 -1. + <_> + 2 10 18 10 2. + <_> + + <_> + 11 2 7 12 -1. + <_> + 11 8 7 6 2. + <_> + + <_> + 13 5 2 2 -1. + <_> + 14 5 1 2 2. + <_> + + <_> + 4 17 4 1 -1. + <_> + 6 17 2 1 2. + <_> + + <_> + 3 14 4 4 -1. + <_> + 5 14 2 4 2. + <_> + + <_> + 0 2 8 18 -1. + <_> + 0 11 8 9 2. + <_> + + <_> + 5 7 3 3 -1. + <_> + 5 8 3 1 3. + <_> + + <_> + 8 2 3 2 -1. + <_> + 9 2 1 2 3. + <_> + + <_> + 5 7 15 4 -1. + <_> + 5 9 15 2 2. + <_> + + <_> + 10 0 10 8 -1. + <_> + 10 0 5 4 2. + <_> + 15 4 5 4 2. + <_> + + <_> + 10 8 4 4 -1. + <_> + 10 8 2 2 2. + <_> + 12 10 2 2 2. + <_> + + <_> + 5 6 3 10 -1. + <_> + 5 11 3 5 2. + <_> + + <_> + 7 6 3 4 -1. + <_> + 8 6 1 4 3. + <_> + + <_> + 12 13 2 2 -1. + <_> + 12 14 2 1 2. + <_> + + <_> + 7 8 4 12 -1. + <_> + 7 12 4 4 3. + <_> + + <_> + 0 0 6 18 -1. + <_> + 2 0 2 18 3. + <_> + + <_> + 6 1 10 6 -1. + <_> + 6 3 10 2 3. + <_> + + <_> + 13 9 3 2 -1. + <_> + 13 10 3 1 2. + <_> + + <_> + 5 10 1 3 -1. + <_> + 5 11 1 1 3. + <_> + + <_> + 6 10 1 10 -1. + <_> + 6 15 1 5 2. + <_> + + <_> + 9 9 3 4 -1. + <_> + 9 11 3 2 2. + <_> + + <_> + 7 4 2 2 -1. + <_> + 7 5 2 1 2. + <_> + + <_> + 12 12 2 1 -1. + <_> + 13 12 1 1 2. + <_> + + <_> + 7 12 1 3 -1. + <_> + 7 13 1 1 3. + <_> + + <_> + 5 11 3 3 -1. + <_> + 5 12 3 1 3. + <_> + + <_> + 1 0 1 2 -1. + <_> + 1 1 1 1 2. + <_> + + <_> + 10 16 6 3 -1. + <_> + 10 17 6 1 3. + <_> + + <_> + 9 4 4 6 -1. + <_> + 9 4 2 3 2. + <_> + 11 7 2 3 2. + <_> + + <_> + 10 9 10 1 -1. + <_> + 15 9 5 1 2. + <_> + + <_> + 9 11 1 2 -1. + <_> + 9 12 1 1 2. + <_> + + <_> + 7 8 3 6 -1. + <_> + 7 10 3 2 3. + <_> + + <_> + 1 18 8 2 -1. + <_> + 1 18 4 1 2. + <_> + 5 19 4 1 2. + <_> + + <_> + 5 13 3 3 -1. + <_> + 5 14 3 1 3. + <_> + + <_> + 4 6 5 6 -1. + <_> + 4 9 5 3 2. + <_> + + <_> + 6 5 2 1 -1. + <_> + 7 5 1 1 2. + <_> + + <_> + 11 6 1 6 -1. + <_> + 11 9 1 3 2. + <_> + + <_> + 6 17 4 3 -1. + <_> + 6 18 4 1 3. + <_> + + <_> + 10 4 2 10 -1. + <_> + 10 4 1 5 2. + <_> + 11 9 1 5 2. + <_> + + <_> + 8 4 9 13 -1. + <_> + 11 4 3 13 3. + <_> + + <_> + 10 11 2 2 -1. + <_> + 11 11 1 2 2. + <_> + + <_> + 13 15 1 2 -1. + <_> + 13 16 1 1 2. + <_> + + <_> + 17 0 3 13 -1. + <_> + 18 0 1 13 3. + <_> + + <_> + 0 0 14 10 -1. + <_> + 0 5 14 5 2. + <_> + + <_> + 12 5 6 15 -1. + <_> + 14 5 2 15 3. + <_> + + <_> + 11 10 2 3 -1. + <_> + 11 11 2 1 3. + <_> + + <_> + 5 14 3 3 -1. + <_> + 5 15 3 1 3. + <_> + + <_> + 5 15 3 2 -1. + <_> + 5 16 3 1 2. + <_> + + <_> + 11 14 3 6 -1. + <_> + 12 14 1 6 3. + <_> + + <_> + 12 18 2 1 -1. + <_> + 13 18 1 1 2. + <_> + + <_> + 16 5 1 2 -1. + <_> + 16 6 1 1 2. + <_> + + <_> + 17 8 3 4 -1. + <_> + 18 8 1 4 3. + <_> + + <_> + 8 15 2 3 -1. + <_> + 9 15 1 3 2. + <_> + + <_> + 6 7 2 4 -1. + <_> + 6 7 1 2 2. + <_> + 7 9 1 2 2. + <_> + + <_> + 3 7 12 2 -1. + <_> + 7 7 4 2 3. + <_> + + <_> + 4 7 3 3 -1. + <_> + 5 7 1 3 3. + <_> + + <_> + 1 10 2 1 -1. + <_> + 2 10 1 1 2. + <_> + + <_> + 4 4 2 5 -1. + <_> + 5 4 1 5 2. + <_> + + <_> + 6 7 14 2 -1. + <_> + 13 7 7 2 2. + <_> + + <_> + 14 17 2 3 -1. + <_> + 14 18 2 1 3. + <_> + + <_> + 6 11 1 3 -1. + <_> + 6 12 1 1 3. + <_> + + <_> + 11 3 8 16 -1. + <_> + 11 11 8 8 2. + <_> + + <_> + 9 12 5 3 -1. + <_> + 9 13 5 1 3. + <_> + + <_> + 5 9 1 3 -1. + <_> + 5 10 1 1 3. + <_> + + <_> + 3 8 8 4 -1. + <_> + 3 8 4 2 2. + <_> + 7 10 4 2 2. + <_> + + <_> + 10 15 2 3 -1. + <_> + 10 16 2 1 3. + <_> + + <_> + 14 9 1 6 -1. + <_> + 14 12 1 3 2. + <_> + + <_> + 13 11 1 3 -1. + <_> + 13 12 1 1 3. + <_> + + <_> + 8 7 6 6 -1. + <_> + 8 9 6 2 3. + <_> + + <_> + 9 8 4 3 -1. + <_> + 9 9 4 1 3. + <_> + + <_> + 8 2 2 5 -1. + <_> + 9 2 1 5 2. + <_> + + <_> + 13 6 3 3 -1. + <_> + 13 7 3 1 3. + <_> + + <_> + 12 0 5 14 -1. + <_> + 12 7 5 7 2. + <_> + + <_> + 2 2 7 10 -1. + <_> + 2 7 7 5 2. + <_> + + <_> + 5 5 6 11 -1. + <_> + 8 5 3 11 2. + <_> + + <_> + 6 17 3 3 -1. + <_> + 6 18 3 1 3. + <_> + + <_> + 9 5 2 8 -1. + <_> + 9 5 1 4 2. + <_> + 10 9 1 4 2. + <_> + + <_> + 14 0 4 16 -1. + <_> + 14 8 4 8 2. + <_> + + <_> + 10 7 1 3 -1. + <_> + 10 8 1 1 3. + <_> + + <_> + 7 16 3 2 -1. + <_> + 8 16 1 2 3. + <_> + + <_> + 10 6 1 3 -1. + <_> + 10 7 1 1 3. + <_> + + <_> + 5 11 14 6 -1. + <_> + 5 14 14 3 2. + <_> + + <_> + 9 6 1 3 -1. + <_> + 9 7 1 1 3. + <_> + + <_> + 6 11 5 4 -1. + <_> + 6 13 5 2 2. + <_> + + <_> + 6 9 10 8 -1. + <_> + 6 9 5 4 2. + <_> + 11 13 5 4 2. + <_> + + <_> + 18 9 2 6 -1. + <_> + 18 9 1 3 2. + <_> + 19 12 1 3 2. + <_> + + <_> + 5 12 8 2 -1. + <_> + 9 12 4 2 2. + <_> + + <_> + 8 8 6 12 -1. + <_> + 8 8 3 6 2. + <_> + 11 14 3 6 2. + <_> + + <_> + 12 7 3 5 -1. + <_> + 13 7 1 5 3. + <_> + + <_> + 10 13 4 3 -1. + <_> + 10 14 4 1 3. + <_> + + <_> + 12 4 3 15 -1. + <_> + 13 4 1 15 3. + <_> + + <_> + 4 12 4 2 -1. + <_> + 6 12 2 2 2. + <_> + + <_> + 14 1 6 1 -1. + <_> + 16 1 2 1 3. + <_> + + <_> + 15 3 2 8 -1. + <_> + 16 3 1 8 2. + <_> + + <_> + 13 16 6 4 -1. + <_> + 13 16 3 2 2. + <_> + 16 18 3 2 2. + <_> + + <_> + 9 5 6 7 -1. + <_> + 12 5 3 7 2. + <_> + + <_> + 18 3 2 2 -1. + <_> + 18 4 2 1 2. + <_> + + <_> + 2 0 18 4 -1. + <_> + 11 0 9 4 2. + <_> + + <_> + 0 8 2 2 -1. + <_> + 1 8 1 2 2. + <_> + + <_> + 4 12 3 6 -1. + <_> + 5 12 1 6 3. + <_> + + <_> + 3 13 4 2 -1. + <_> + 5 13 2 2 2. + <_> + + <_> + 4 14 11 2 -1. + <_> + 4 15 11 1 2. + <_> + + <_> + 4 13 8 3 -1. + <_> + 4 14 8 1 3. + <_> + + <_> + 3 7 6 10 -1. + <_> + 3 7 3 5 2. + <_> + 6 12 3 5 2. + <_> + + <_> + 5 7 6 4 -1. + <_> + 7 7 2 4 3. + <_> + + <_> + 2 11 10 6 -1. + <_> + 2 14 10 3 2. + <_> + + <_> + 5 7 9 12 -1. + <_> + 5 13 9 6 2. + <_> + + <_> + 9 12 7 4 -1. + <_> + 9 14 7 2 2. + <_> + + <_> + 2 0 8 4 -1. + <_> + 2 0 4 2 2. + <_> + 6 2 4 2 2. + <_> + + <_> + 4 0 4 4 -1. + <_> + 4 0 2 2 2. + <_> + 6 2 2 2 2. + <_> + + <_> + 6 2 3 2 -1. + <_> + 7 2 1 2 3. + <_> + + <_> + 2 11 3 4 -1. + <_> + 3 11 1 4 3. + <_> + + <_> + 1 17 2 1 -1. + <_> + 2 17 1 1 2. + <_> + + <_> + 15 12 4 3 -1. + <_> + 15 13 4 1 3. + <_> + + <_> + 9 15 7 3 -1. + <_> + 9 16 7 1 3. + <_> + + <_> + 6 7 3 2 -1. + <_> + 7 7 1 2 3. + <_> + + <_> + 3 5 12 10 -1. + <_> + 3 5 6 5 2. + <_> + 9 10 6 5 2. + <_> + + <_> + 4 2 12 5 -1. + <_> + 10 2 6 5 2. + <_> + + <_> + 9 5 3 1 -1. + <_> + 10 5 1 1 3. + <_> + + <_> + 2 10 3 4 -1. + <_> + 3 10 1 4 3. + <_> + + <_> + 11 5 2 10 -1. + <_> + 11 10 2 5 2. + <_> + + <_> + 8 6 7 8 -1. + <_> + 8 10 7 4 2. + <_> + + <_> + 5 10 1 3 -1. + <_> + 5 11 1 1 3. + <_> + + <_> + 2 8 8 4 -1. + <_> + 6 8 4 4 2. + <_> + + <_> + 0 9 2 2 -1. + <_> + 1 9 1 2 2. + <_> + + <_> + 13 11 4 2 -1. + <_> + 15 11 2 2 2. + <_> + + <_> + 8 6 12 5 -1. + <_> + 12 6 4 5 3. + <_> + + <_> + 11 11 9 1 -1. + <_> + 14 11 3 1 3. + <_> + + <_> + 15 10 2 4 -1. + <_> + 15 10 1 2 2. + <_> + 16 12 1 2 2. + <_> + + <_> + 18 5 1 3 -1. + <_> + 18 6 1 1 3. + <_> + + <_> + 4 10 7 3 -1. + <_> + 4 11 7 1 3. + <_> + + <_> + 8 5 3 1 -1. + <_> + 9 5 1 1 3. + <_> + + <_> + 7 13 2 3 -1. + <_> + 7 14 2 1 3. + <_> + + <_> + 7 14 3 3 -1. + <_> + 7 15 3 1 3. + <_> + + <_> + 7 15 3 3 -1. + <_> + 7 16 3 1 3. + <_> + + <_> + 14 15 1 3 -1. + <_> + 14 16 1 1 3. + <_> + + <_> + 2 14 10 6 -1. + <_> + 2 17 10 3 2. + <_> + + <_> + 5 12 5 3 -1. + <_> + 5 13 5 1 3. + <_> + + <_> + 7 9 1 6 -1. + <_> + 7 11 1 2 3. + <_> + + <_> + 0 6 5 6 -1. + <_> + 0 8 5 2 3. + <_> + + <_> + 6 10 3 4 -1. + <_> + 6 12 3 2 2. + <_> + + <_> + 4 9 9 2 -1. + <_> + 4 10 9 1 2. + <_> + + <_> + 7 3 1 2 -1. + <_> + 7 4 1 1 2. + <_> + + <_> + 8 9 4 4 -1. + <_> + 8 11 4 2 2. + <_> + + <_> + 11 10 3 1 -1. + <_> + 12 10 1 1 3. + <_> + + <_> + 5 7 3 2 -1. + <_> + 5 8 3 1 2. + <_> + + <_> + 7 0 6 6 -1. + <_> + 7 3 6 3 2. + <_> + + <_> + 5 6 3 4 -1. + <_> + 6 6 1 4 3. + <_> + + <_> + 11 1 9 12 -1. + <_> + 14 1 3 12 3. + <_> + + <_> + 6 7 4 9 -1. + <_> + 6 10 4 3 3. + <_> + + <_> + 11 7 8 6 -1. + <_> + 11 7 4 3 2. + <_> + 15 10 4 3 2. + <_> + + <_> + 8 9 7 3 -1. + <_> + 8 10 7 1 3. + <_> + + <_> + 3 2 4 18 -1. + <_> + 5 2 2 18 2. + <_> + + <_> + 6 12 2 3 -1. + <_> + 6 13 2 1 3. + <_> + + <_> + 6 11 8 6 -1. + <_> + 6 11 4 3 2. + <_> + 10 14 4 3 2. + <_> + + <_> + 5 9 4 7 -1. + <_> + 7 9 2 7 2. + <_> + + <_> + 5 8 6 5 -1. + <_> + 8 8 3 5 2. + <_> + + <_> + 7 11 1 3 -1. + <_> + 7 12 1 1 3. + <_> + + <_> + 15 10 3 1 -1. + <_> + 16 10 1 1 3. + <_> + + <_> + 10 12 2 2 -1. + <_> + 10 13 2 1 2. + <_> + + <_> + 11 13 2 1 -1. + <_> + 12 13 1 1 2. + <_> + + <_> + 6 12 2 2 -1. + <_> + 6 13 2 1 2. + <_> + + <_> + 11 2 2 12 -1. + <_> + 11 2 1 6 2. + <_> + 12 8 1 6 2. + <_> + + <_> + 7 0 6 6 -1. + <_> + 7 3 6 3 2. + <_> + + <_> + 4 8 4 2 -1. + <_> + 4 9 4 1 2. + <_> + + <_> + 14 12 1 2 -1. + <_> + 14 13 1 1 2. + <_> + + <_> + 4 0 2 4 -1. + <_> + 4 0 1 2 2. + <_> + 5 2 1 2 2. + <_> + + <_> + 15 2 2 1 -1. + <_> + 16 2 1 1 2. + <_> + + <_> + 3 14 3 1 -1. + <_> + 4 14 1 1 3. + <_> + + <_> + 5 11 10 4 -1. + <_> + 5 11 5 2 2. + <_> + 10 13 5 2 2. + <_> + + <_> + 4 10 12 3 -1. + <_> + 4 11 12 1 3. + <_> + + <_> + 15 2 4 6 -1. + <_> + 15 2 2 3 2. + <_> + 17 5 2 3 2. + <_> + + <_> + 5 8 1 4 -1. + <_> + 5 10 1 2 2. + <_> + + <_> + 6 15 3 2 -1. + <_> + 7 15 1 2 3. + <_> + + <_> + 11 19 2 1 -1. + <_> + 12 19 1 1 2. + <_> + + <_> + 6 7 3 2 -1. + <_> + 7 7 1 2 3. + <_> + + <_> + 6 4 2 1 -1. + <_> + 7 4 1 1 2. + <_> + + <_> + 6 4 3 2 -1. + <_> + 7 4 1 2 3. + <_> + + <_> + 6 8 2 2 -1. + <_> + 6 8 1 1 2. + <_> + 7 9 1 1 2. + <_> + + <_> + 6 15 3 2 -1. + <_> + 7 15 1 2 3. + <_> + + <_> + 4 8 2 4 -1. + <_> + 4 8 1 2 2. + <_> + 5 10 1 2 2. + <_> + + <_> + 10 4 7 3 -1. + <_> + 10 5 7 1 3. + <_> + + <_> + 4 5 2 6 -1. + <_> + 5 5 1 6 2. + <_> + + <_> + 10 13 1 3 -1. + <_> + 10 14 1 1 3. + <_> + + <_> + 6 11 6 3 -1. + <_> + 9 11 3 3 2. + <_> + + <_> + 10 14 3 2 -1. + <_> + 10 15 3 1 2. + <_> + + <_> + 8 8 4 2 -1. + <_> + 10 8 2 2 2. + <_> + + <_> + 17 12 3 1 -1. + <_> + 18 12 1 1 3. + <_> + + <_> + 9 0 11 16 -1. + <_> + 9 8 11 8 2. + <_> + + <_> + 17 0 3 6 -1. + <_> + 17 2 3 2 3. + <_> + + <_> + 0 0 1 2 -1. + <_> + 0 1 1 1 2. + <_> + + <_> + 5 11 3 3 -1. + <_> + 5 12 3 1 3. + <_> + + <_> + 4 10 10 9 -1. + <_> + 4 13 10 3 3. + <_> + + <_> + 3 3 3 5 -1. + <_> + 4 3 1 5 3. + <_> + + <_> + 6 1 2 6 -1. + <_> + 6 3 2 2 3. + <_> + + <_> + 5 0 8 6 -1. + <_> + 5 2 8 2 3. + <_> + + <_> + 0 0 1 2 -1. + <_> + 0 1 1 1 2. + <_> + + <_> + 6 3 6 4 -1. + <_> + 8 3 2 4 3. + <_> + + <_> + 8 6 3 3 -1. + <_> + 8 7 3 1 3. + <_> + + <_> + 9 6 3 6 -1. + <_> + 9 8 3 2 3. + <_> + + <_> + 4 3 12 12 -1. + <_> + 4 3 6 6 2. + <_> + 10 9 6 6 2. + <_> + + <_> + 13 8 3 2 -1. + <_> + 13 9 3 1 2. + <_> + + <_> + 4 3 10 2 -1. + <_> + 9 3 5 2 2. + <_> + + <_> + 18 14 2 2 -1. + <_> + 18 14 1 1 2. + <_> + 19 15 1 1 2. + <_> + + <_> + 5 6 6 2 -1. + <_> + 8 6 3 2 2. + <_> + + <_> + 0 14 20 5 -1. + <_> + 10 14 10 5 2. + <_> + + <_> + 9 17 2 1 -1. + <_> + 10 17 1 1 2. + <_> + + <_> + 5 16 5 3 -1. + <_> + 5 17 5 1 3. + <_> + + <_> + 9 16 3 2 -1. + <_> + 10 16 1 2 3. + <_> + + <_> + 6 5 5 3 -1. + <_> + 6 6 5 1 3. + <_> + + <_> + 11 12 3 8 -1. + <_> + 12 12 1 8 3. + <_> + + <_> + 4 3 3 9 -1. + <_> + 4 6 3 3 3. + <_> + + <_> + 11 0 3 3 -1. + <_> + 12 0 1 3 3. + <_> + + <_> + 5 17 10 2 -1. + <_> + 5 17 5 1 2. + <_> + 10 18 5 1 2. + <_> + + <_> + 5 15 2 3 -1. + <_> + 5 16 2 1 3. + <_> + + <_> + 6 14 2 4 -1. + <_> + 6 14 1 2 2. + <_> + 7 16 1 2 2. + <_> + + <_> + 10 17 6 3 -1. + <_> + 10 18 6 1 3. + <_> + + <_> + 19 5 1 3 -1. + <_> + 19 6 1 1 3. + <_> + + <_> + 16 13 2 2 -1. + <_> + 16 13 1 1 2. + <_> + 17 14 1 1 2. + <_> + + <_> + 0 11 2 1 -1. + <_> + 1 11 1 1 2. + <_> + + <_> + 4 12 6 6 -1. + <_> + 4 12 3 3 2. + <_> + 7 15 3 3 2. + <_> + + <_> + 5 15 4 3 -1. + <_> + 5 16 4 1 3. + <_> + + <_> + 10 16 3 2 -1. + <_> + 11 16 1 2 3. + <_> + + <_> + 1 0 10 2 -1. + <_> + 1 0 5 1 2. + <_> + 6 1 5 1 2. + <_> + + <_> + 2 0 18 14 -1. + <_> + 11 0 9 14 2. + <_> + + <_> + 15 7 4 7 -1. + <_> + 17 7 2 7 2. + <_> + + <_> + 5 10 2 4 -1. + <_> + 6 10 1 4 2. + <_> + + <_> + 15 16 3 1 -1. + <_> + 16 16 1 1 3. + <_> + + <_> + 7 15 5 3 -1. + <_> + 7 16 5 1 3. + <_> + + <_> + 12 1 6 3 -1. + <_> + 14 1 2 3 3. + <_> + + <_> + 16 2 2 1 -1. + <_> + 17 2 1 1 2. + <_> + + <_> + 17 0 2 2 -1. + <_> + 17 0 1 1 2. + <_> + 18 1 1 1 2. + <_> + + <_> + 1 0 4 6 -1. + <_> + 1 2 4 2 3. + <_> + + <_> + 3 1 6 18 -1. + <_> + 3 7 6 6 3. + <_> + + <_> + 5 1 1 12 -1. + <_> + 5 7 1 6 2. + <_> + + <_> + 16 9 2 2 -1. + <_> + 16 9 1 1 2. + <_> + 17 10 1 1 2. + <_> + + <_> + 4 2 2 11 -1. + <_> + 5 2 1 11 2. + <_> + + <_> + 4 8 3 1 -1. + <_> + 5 8 1 1 3. + <_> + + <_> + 14 18 2 2 -1. + <_> + 14 19 2 1 2. + <_> + + <_> + 10 0 10 10 -1. + <_> + 10 0 5 5 2. + <_> + 15 5 5 5 2. + <_> + + <_> + 19 6 1 2 -1. + <_> + 19 7 1 1 2. + <_> + + <_> + 11 0 6 8 -1. + <_> + 11 0 3 4 2. + <_> + 14 4 3 4 2. + <_> + + <_> + 5 0 2 2 -1. + <_> + 5 0 1 1 2. + <_> + 6 1 1 1 2. + <_> + + <_> + 3 1 9 11 -1. + <_> + 6 1 3 11 3. + <_> + + <_> + 10 11 3 2 -1. + <_> + 10 12 3 1 2. + <_> + + <_> + 10 9 4 2 -1. + <_> + 12 9 2 2 2. + <_> + + <_> + 13 7 1 6 -1. + <_> + 13 9 1 2 3. + <_> + + <_> + 8 10 6 2 -1. + <_> + 8 10 3 1 2. + <_> + 11 11 3 1 2. + <_> + + <_> + 4 11 4 6 -1. + <_> + 4 14 4 3 2. + <_> + + <_> + 17 4 2 3 -1. + <_> + 17 5 2 1 3. + <_> + + <_> + 10 2 8 14 -1. + <_> + 10 2 4 7 2. + <_> + 14 9 4 7 2. + <_> + + <_> + 12 8 8 7 -1. + <_> + 16 8 4 7 2. + <_> + + <_> + 1 2 18 1 -1. + <_> + 7 2 6 1 3. + <_> + + <_> + 0 1 8 19 -1. + <_> + 4 1 4 19 2. + <_> + + <_> + 0 0 8 12 -1. + <_> + 4 0 4 12 2. + <_> + + <_> + 13 5 5 12 -1. + <_> + 13 11 5 6 2. + <_> + + <_> + 7 9 1 4 -1. + <_> + 7 11 1 2 2. + <_> + + <_> + 0 13 10 3 -1. + <_> + 5 13 5 3 2. + <_> + + <_> + 2 7 12 4 -1. + <_> + 6 7 4 4 3. + <_> + + <_> + 9 1 2 6 -1. + <_> + 9 1 1 3 2. + <_> + 10 4 1 3 2. + <_> + + <_> + 6 8 3 3 -1. + <_> + 7 8 1 3 3. + <_> + + <_> + 4 11 3 1 -1. + <_> + 5 11 1 1 3. + <_> + + <_> + 5 10 1 2 -1. + <_> + 5 11 1 1 2. + <_> + + <_> + 0 17 4 1 -1. + <_> + 2 17 2 1 2. + <_> + + <_> + 1 16 2 1 -1. + <_> + 2 16 1 1 2. + <_> + + <_> + 7 14 2 3 -1. + <_> + 7 15 2 1 3. + <_> + + <_> + 10 13 2 2 -1. + <_> + 10 14 2 1 2. + <_> + + <_> + 16 11 3 1 -1. + <_> + 17 11 1 1 3. + <_> + + <_> + 16 10 3 2 -1. + <_> + 17 10 1 2 3. + <_> + + <_> + 7 2 3 1 -1. + <_> + 8 2 1 1 3. + <_> + + <_> + 14 4 5 3 -1. + <_> + 14 5 5 1 3. + <_> + + <_> + 7 7 2 3 -1. + <_> + 8 7 1 3 2. + <_> + + <_> + 5 7 6 7 -1. + <_> + 8 7 3 7 2. + <_> + + <_> + 4 2 2 6 -1. + <_> + 4 2 1 3 2. + <_> + 5 5 1 3 2. + <_> + + <_> + 4 9 2 3 -1. + <_> + 4 10 2 1 3. + <_> + + <_> + 8 6 7 12 -1. + <_> + 8 10 7 4 3. + <_> + + <_> + 8 5 2 10 -1. + <_> + 8 10 2 5 2. + <_> + + <_> + 4 3 3 5 -1. + <_> + 5 3 1 5 3. + <_> + + <_> + 9 12 2 1 -1. + <_> + 10 12 1 1 2. + <_> + + <_> + 3 8 3 4 -1. + <_> + 4 8 1 4 3. + <_> + + <_> + 13 14 3 3 -1. + <_> + 13 15 3 1 3. + <_> + + <_> + 1 14 2 3 -1. + <_> + 2 14 1 3 2. + <_> + + <_> + 5 0 2 4 -1. + <_> + 5 0 1 2 2. + <_> + 6 2 1 2 2. + <_> + + <_> + 5 14 4 3 -1. + <_> + 5 15 4 1 3. + <_> + + <_> + 6 12 2 6 -1. + <_> + 6 12 1 3 2. + <_> + 7 15 1 3 2. + <_> + + <_> + 6 13 2 2 -1. + <_> + 7 13 1 2 2. + <_> + + <_> + 9 10 4 5 -1. + <_> + 11 10 2 5 2. + <_> + + <_> + 11 3 2 1 -1. + <_> + 12 3 1 1 2. + <_> + + <_> + 6 7 2 2 -1. + <_> + 6 7 1 1 2. + <_> + 7 8 1 1 2. + <_> + + <_> + 5 3 6 5 -1. + <_> + 7 3 2 5 3. + <_> + + <_> + 5 6 4 8 -1. + <_> + 7 6 2 8 2. + <_> + + <_> + 5 7 6 3 -1. + <_> + 7 7 2 3 3. + <_> + + <_> + 9 12 3 4 -1. + <_> + 10 12 1 4 3. + <_> + + <_> + 16 9 3 1 -1. + <_> + 17 9 1 1 3. + <_> + + <_> + 13 14 3 3 -1. + <_> + 13 15 3 1 3. + <_> + + <_> + 7 13 4 2 -1. + <_> + 7 13 2 1 2. + <_> + 9 14 2 1 2. + <_> + + <_> + 10 13 1 2 -1. + <_> + 10 14 1 1 2. + <_> + + <_> + 9 13 2 3 -1. + <_> + 9 14 2 1 3. + <_> + + <_> + 9 14 2 3 -1. + <_> + 9 15 2 1 3. + <_> + + <_> + 9 6 8 1 -1. + <_> + 13 6 4 1 2. + <_> + + <_> + 6 8 3 2 -1. + <_> + 6 9 3 1 2. + <_> + + <_> + 5 6 2 3 -1. + <_> + 6 6 1 3 2. + <_> + + <_> + 12 10 2 6 -1. + <_> + 12 13 2 3 2. + <_> + + <_> + 1 0 18 2 -1. + <_> + 7 0 6 2 3. + <_> + + <_> + 9 7 4 6 -1. + <_> + 9 7 2 3 2. + <_> + 11 10 2 3 2. + <_> + + <_> + 12 10 2 4 -1. + <_> + 13 10 1 4 2. + <_> + + <_> + 13 12 1 2 -1. + <_> + 13 13 1 1 2. + <_> + + <_> + 13 18 2 2 -1. + <_> + 14 18 1 2 2. + <_> + + <_> + 15 4 2 1 -1. + <_> + 16 4 1 1 2. + <_> + + <_> + 5 7 6 3 -1. + <_> + 7 7 2 3 3. + <_> + + <_> + 5 8 8 3 -1. + <_> + 9 8 4 3 2. + <_> + + <_> + 6 12 6 3 -1. + <_> + 9 12 3 3 2. + <_> + + <_> + 12 14 3 6 -1. + <_> + 13 14 1 6 3. + <_> + + <_> + 18 9 2 8 -1. + <_> + 18 9 1 4 2. + <_> + 19 13 1 4 2. + <_> + + <_> + 5 5 7 3 -1. + <_> + 5 6 7 1 3. + <_> + + <_> + 10 13 2 2 -1. + <_> + 10 13 1 1 2. + <_> + 11 14 1 1 2. + <_> + + <_> + 5 10 1 3 -1. + <_> + 5 11 1 1 3. + <_> + + <_> + 6 11 2 3 -1. + <_> + 6 12 2 1 3. + <_> + + <_> + 9 13 4 2 -1. + <_> + 9 13 2 1 2. + <_> + 11 14 2 1 2. + <_> + + <_> + 7 12 1 3 -1. + <_> + 7 13 1 1 3. + <_> + + <_> + 7 10 3 6 -1. + <_> + 7 12 3 2 3. + <_> + + <_> + 13 8 4 4 -1. + <_> + 13 10 4 2 2. + <_> + + <_> + 8 0 12 18 -1. + <_> + 8 9 12 9 2. + <_> + + <_> + 18 9 2 10 -1. + <_> + 18 9 1 5 2. + <_> + 19 14 1 5 2. + <_> + + <_> + 14 2 3 6 -1. + <_> + 14 5 3 3 2. + <_> + + <_> + 10 0 3 14 -1. + <_> + 11 0 1 14 3. + <_> + + <_> + 6 16 8 4 -1. + <_> + 6 16 4 2 2. + <_> + 10 18 4 2 2. + <_> + + <_> + 5 3 5 12 -1. + <_> + 5 7 5 4 3. + <_> + + <_> + 4 15 6 3 -1. + <_> + 4 16 6 1 3. + <_> + + <_> + 6 15 1 3 -1. + <_> + 6 16 1 1 3. + <_> + + <_> + 13 1 2 1 -1. + <_> + 14 1 1 1 2. + <_> + + <_> + 2 2 18 9 -1. + <_> + 11 2 9 9 2. + <_> + + <_> + 4 16 2 4 -1. + <_> + 4 16 1 2 2. + <_> + 5 18 1 2 2. + <_> + + <_> + 15 1 3 8 -1. + <_> + 16 1 1 8 3. + <_> + + <_> + 11 11 2 3 -1. + <_> + 11 12 2 1 3. + <_> + + <_> + 9 9 2 4 -1. + <_> + 9 11 2 2 2. + <_> + + <_> + 5 9 8 4 -1. + <_> + 5 9 4 2 2. + <_> + 9 11 4 2 2. + <_> + + <_> + 9 6 2 3 -1. + <_> + 9 7 2 1 3. + <_> + + <_> + 7 9 2 3 -1. + <_> + 7 10 2 1 3. + <_> + + <_> + 11 15 4 3 -1. + <_> + 11 16 4 1 3. + <_> + + <_> + 8 6 2 3 -1. + <_> + 8 7 2 1 3. + <_> + + <_> + 6 8 2 3 -1. + <_> + 6 9 2 1 3. + <_> + + <_> + 6 9 6 3 -1. + <_> + 8 9 2 3 3. + <_> + + <_> + 6 9 4 2 -1. + <_> + 6 9 2 1 2. + <_> + 8 10 2 1 2. + <_> + + <_> + 4 7 9 1 -1. + <_> + 7 7 3 1 3. + <_> + + <_> + 5 7 2 6 -1. + <_> + 5 7 1 3 2. + <_> + 6 10 1 3 2. + <_> + + <_> + 4 8 4 8 -1. + <_> + 4 12 4 4 2. + <_> + + <_> + 7 0 2 19 -1. + <_> + 8 0 1 19 2. + <_> + + <_> + 5 9 1 3 -1. + <_> + 5 10 1 1 3. + <_> + + <_> + 9 5 3 1 -1. + <_> + 10 5 1 1 3. + <_> + + <_> + 16 4 3 6 -1. + <_> + 16 6 3 2 3. + <_> + + <_> + 10 15 5 3 -1. + <_> + 10 16 5 1 3. + <_> + + <_> + 13 1 5 14 -1. + <_> + 13 8 5 7 2. + <_> + + <_> + 3 0 4 4 -1. + <_> + 3 0 2 2 2. + <_> + 5 2 2 2 2. + <_> + + <_> + 6 5 4 13 -1. + <_> + 8 5 2 13 2. + <_> + + <_> + 4 2 2 16 -1. + <_> + 4 2 1 8 2. + <_> + 5 10 1 8 2. + <_> + + <_> + 4 8 8 3 -1. + <_> + 8 8 4 3 2. + <_> + + <_> + 5 6 2 12 -1. + <_> + 5 12 2 6 2. + <_> + + <_> + 8 7 2 4 -1. + <_> + 9 7 1 4 2. + <_> + + <_> + 13 9 5 4 -1. + <_> + 13 11 5 2 2. + <_> + + <_> + 12 0 8 2 -1. + <_> + 12 0 4 1 2. + <_> + 16 1 4 1 2. + <_> + + <_> + 14 0 6 4 -1. + <_> + 14 0 3 2 2. + <_> + 17 2 3 2 2. + <_> + + <_> + 4 9 6 2 -1. + <_> + 6 9 2 2 3. + <_> + + <_> + 13 1 2 1 -1. + <_> + 14 1 1 1 2. + <_> + + <_> + 0 0 12 3 -1. + <_> + 6 0 6 3 2. + <_> + + <_> + 5 12 3 3 -1. + <_> + 6 12 1 3 3. + <_> + + <_> + 5 11 4 3 -1. + <_> + 5 12 4 1 3. + <_> + + <_> + 5 13 2 4 -1. + <_> + 5 13 1 2 2. + <_> + 6 15 1 2 2. + <_> + + <_> + 4 11 3 3 -1. + <_> + 4 12 3 1 3. + <_> + + <_> + 1 8 6 2 -1. + <_> + 1 9 6 1 2. + <_> + + <_> + 6 8 4 12 -1. + <_> + 6 12 4 4 3. + <_> + + <_> + 7 14 6 4 -1. + <_> + 7 14 3 2 2. + <_> + 10 16 3 2 2. + <_> + + <_> + 8 16 8 4 -1. + <_> + 8 16 4 2 2. + <_> + 12 18 4 2 2. + <_> + + <_> + 5 10 10 6 -1. + <_> + 5 12 10 2 3. + <_> + + <_> + 6 13 1 3 -1. + <_> + 6 14 1 1 3. + <_> + + <_> + 3 11 4 6 -1. + <_> + 3 13 4 2 3. + <_> + + <_> + 10 14 6 3 -1. + <_> + 10 15 6 1 3. + <_> + + <_> + 3 15 4 2 -1. + <_> + 5 15 2 2 2. + <_> + + <_> + 3 14 4 3 -1. + <_> + 5 14 2 3 2. + <_> + + <_> + 1 2 1 2 -1. + <_> + 1 3 1 1 2. + <_> + + <_> + 0 12 8 4 -1. + <_> + 4 12 4 4 2. + <_> + + <_> + 1 2 1 2 -1. + <_> + 1 3 1 1 2. + <_> + + <_> + 5 11 1 3 -1. + <_> + 5 12 1 1 3. + <_> + + <_> + 10 19 2 1 -1. + <_> + 11 19 1 1 2. + <_> + + <_> + 6 6 4 4 -1. + <_> + 6 6 2 2 2. + <_> + 8 8 2 2 2. + <_> + + <_> + 6 3 1 2 -1. + <_> + 6 4 1 1 2. + <_> + + <_> + 0 4 10 2 -1. + <_> + 5 4 5 2 2. + <_> + + <_> + 4 5 2 1 -1. + <_> + 5 5 1 1 2. + <_> + + <_> + 0 12 2 1 -1. + <_> + 1 12 1 1 2. + <_> + + <_> + 1 4 6 11 -1. + <_> + 3 4 2 11 3. + <_> + + <_> + 6 4 2 1 -1. + <_> + 7 4 1 1 2. + <_> + + <_> + 7 0 1 6 -1. + <_> + 7 2 1 2 3. + <_> + + <_> + 7 0 8 4 -1. + <_> + 7 2 8 2 2. + <_> + + <_> + 13 6 2 2 -1. + <_> + 13 7 2 1 2. + <_> + + <_> + 16 15 2 2 -1. + <_> + 16 15 1 1 2. + <_> + 17 16 1 1 2. + <_> + + <_> + 11 12 1 2 -1. + <_> + 11 13 1 1 2. + <_> + + <_> + 4 4 5 2 -1. + <_> + 4 5 5 1 2. + <_> + + <_> + 4 3 3 9 -1. + <_> + 4 6 3 3 3. + <_> + + <_> + 6 7 2 3 -1. + <_> + 7 7 1 3 2. + <_> + + <_> + 4 8 6 1 -1. + <_> + 7 8 3 1 2. + <_> + + <_> + 3 8 12 5 -1. + <_> + 9 8 6 5 2. + <_> + + <_> + 9 8 1 3 -1. + <_> + 9 9 1 1 3. + <_> + + <_> + 9 9 6 1 -1. + <_> + 12 9 3 1 2. + <_> + + <_> + 13 7 7 6 -1. + <_> + 13 9 7 2 3. + <_> + + <_> + 0 2 20 18 -1. + <_> + 10 2 10 18 2. + <_> + + <_> + 12 5 6 3 -1. + <_> + 12 6 6 1 3. + <_> + + <_> + 8 8 3 2 -1. + <_> + 8 9 3 1 2. + <_> + + <_> + 4 9 11 6 -1. + <_> + 4 11 11 2 3. + <_> + + <_> + 7 7 7 6 -1. + <_> + 7 10 7 3 2. + <_> + + <_> + 15 7 2 8 -1. + <_> + 15 7 1 4 2. + <_> + 16 11 1 4 2. + <_> + + <_> + 4 10 2 6 -1. + <_> + 4 12 2 2 3. + <_> + + <_> + 7 13 2 2 -1. + <_> + 7 13 1 1 2. + <_> + 8 14 1 1 2. + <_> + + <_> + 7 2 3 4 -1. + <_> + 8 2 1 4 3. + <_> + + <_> + 7 3 2 3 -1. + <_> + 8 3 1 3 2. + <_> + + <_> + 5 9 3 1 -1. + <_> + 6 9 1 1 3. + <_> + + <_> + 14 6 3 8 -1. + <_> + 15 6 1 8 3. + <_> + + <_> + 4 10 2 6 -1. + <_> + 4 13 2 3 2. + <_> + + <_> + 0 17 10 3 -1. + <_> + 0 18 10 1 3. + <_> + + <_> + 5 18 7 2 -1. + <_> + 5 19 7 1 2. + <_> + + <_> + 13 12 1 3 -1. + <_> + 13 13 1 1 3. + <_> + + <_> + 9 2 4 16 -1. + <_> + 9 2 2 8 2. + <_> + 11 10 2 8 2. + <_> + + <_> + 6 7 2 3 -1. + <_> + 6 8 2 1 3. + <_> + + <_> + 9 8 2 4 -1. + <_> + 9 10 2 2 2. + <_> + + <_> + 18 4 2 3 -1. + <_> + 18 5 2 1 3. + <_> + + <_> + 16 10 2 2 -1. + <_> + 16 10 1 1 2. + <_> + 17 11 1 1 2. + <_> + + <_> + 14 2 6 6 -1. + <_> + 14 4 6 2 3. + <_> + + <_> + 16 11 3 1 -1. + <_> + 17 11 1 1 3. + <_> + + <_> + 17 10 2 1 -1. + <_> + 18 10 1 1 2. + <_> + + <_> + 16 8 2 4 -1. + <_> + 17 8 1 4 2. + <_> + + <_> + 11 15 6 3 -1. + <_> + 11 16 6 1 3. + <_> + + <_> + 3 7 3 4 -1. + <_> + 4 7 1 4 3. + <_> + + <_> + 3 5 3 5 -1. + <_> + 4 5 1 5 3. + <_> + + <_> + 2 10 6 1 -1. + <_> + 5 10 3 1 2. + <_> + + <_> + 12 0 4 2 -1. + <_> + 14 0 2 2 2. + <_> + + <_> + 9 14 1 2 -1. + <_> + 9 15 1 1 2. + <_> + + <_> + 15 12 5 6 -1. + <_> + 15 14 5 2 3. + <_> + + <_> + 4 13 10 4 -1. + <_> + 4 15 10 2 2. + <_> + + <_> + 7 16 6 4 -1. + <_> + 7 16 3 2 2. + <_> + 10 18 3 2 2. + <_> + + <_> + 9 16 7 3 -1. + <_> + 9 17 7 1 3. + <_> + + <_> + 4 8 2 2 -1. + <_> + 4 8 1 1 2. + <_> + 5 9 1 1 2. + <_> + + <_> + 0 17 20 2 -1. + <_> + 10 17 10 2 2. + <_> + + <_> + 4 8 3 1 -1. + <_> + 5 8 1 1 3. + <_> + + <_> + 4 7 2 6 -1. + <_> + 4 7 1 3 2. + <_> + 5 10 1 3 2. + <_> + + <_> + 11 11 1 2 -1. + <_> + 11 12 1 1 2. + <_> + + <_> + 10 13 5 2 -1. + <_> + 10 14 5 1 2. + <_> + + <_> + 8 16 3 3 -1. + <_> + 8 17 3 1 3. + <_> + + <_> + 9 18 3 1 -1. + <_> + 10 18 1 1 3. + <_> + + <_> + 8 6 11 12 -1. + <_> + 8 10 11 4 3. + <_> + + <_> + 2 4 13 12 -1. + <_> + 2 10 13 6 2. + <_> + + <_> + 0 15 10 4 -1. + <_> + 0 15 5 2 2. + <_> + 5 17 5 2 2. + <_> + + <_> + 4 8 6 2 -1. + <_> + 7 8 3 2 2. + <_> + + <_> + 10 1 6 2 -1. + <_> + 12 1 2 2 3. + <_> + + <_> + 7 8 6 7 -1. + <_> + 9 8 2 7 3. + <_> + + <_> + 9 9 6 2 -1. + <_> + 11 9 2 2 3. + <_> + + <_> + 3 14 15 4 -1. + <_> + 8 14 5 4 3. + <_> + + <_> + 7 3 2 14 -1. + <_> + 7 10 2 7 2. + <_> + + <_> + 11 14 1 2 -1. + <_> + 11 15 1 1 2. + <_> + + <_> + 5 11 1 3 -1. + <_> + 5 12 1 1 3. + <_> + + <_> + 11 14 3 3 -1. + <_> + 11 15 3 1 3. + <_> + + <_> + 10 7 9 4 -1. + <_> + 13 7 3 4 3. + <_> + + <_> + 11 6 6 5 -1. + <_> + 14 6 3 5 2. + <_> + + <_> + 8 9 1 2 -1. + <_> + 8 10 1 1 2. + <_> + + <_> + 16 3 1 10 -1. + <_> + 16 8 1 5 2. + <_> + + <_> + 6 11 10 4 -1. + <_> + 6 13 10 2 2. + <_> + + <_> + 5 7 2 2 -1. + <_> + 6 7 1 2 2. + <_> + + <_> + 1 6 6 11 -1. + <_> + 4 6 3 11 2. + <_> + + <_> + 6 8 3 2 -1. + <_> + 6 9 3 1 2. + <_> + + <_> + 10 15 1 2 -1. + <_> + 10 16 1 1 2. + <_> + + <_> + 8 0 12 1 -1. + <_> + 14 0 6 1 2. + <_> + + <_> + 5 3 2 2 -1. + <_> + 6 3 1 2 2. + <_> + + <_> + 11 6 6 5 -1. + <_> + 14 6 3 5 2. + <_> + + <_> + 6 12 3 3 -1. + <_> + 6 13 3 1 3. + <_> + + <_> + 10 10 3 3 -1. + <_> + 11 10 1 3 3. + <_> + + <_> + 6 13 2 2 -1. + <_> + 6 14 2 1 2. + <_> + + <_> + 4 2 16 8 -1. + <_> + 12 2 8 8 2. + <_> + + <_> + 10 12 2 2 -1. + <_> + 10 12 1 1 2. + <_> + 11 13 1 1 2. + <_> + + <_> + 10 7 2 2 -1. + <_> + 11 7 1 2 2. + <_> + + <_> + 13 13 1 3 -1. + <_> + 13 14 1 1 3. + <_> + + <_> + 13 13 2 3 -1. + <_> + 13 14 2 1 3. + <_> + + <_> + 1 13 6 4 -1. + <_> + 4 13 3 4 2. + <_> + + <_> + 10 13 2 1 -1. + <_> + 11 13 1 1 2. + <_> + + <_> + 10 6 2 10 -1. + <_> + 10 6 1 5 2. + <_> + 11 11 1 5 2. + <_> + + <_> + 16 11 2 2 -1. + <_> + 16 11 1 1 2. + <_> + 17 12 1 1 2. + <_> + + <_> + 16 12 3 1 -1. + <_> + 17 12 1 1 3. + <_> + + <_> + 9 5 7 12 -1. + <_> + 9 9 7 4 3. + <_> + + <_> + 4 1 10 18 -1. + <_> + 4 1 5 9 2. + <_> + 9 10 5 9 2. + <_> + + <_> + 17 12 2 2 -1. + <_> + 17 12 1 1 2. + <_> + 18 13 1 1 2. + <_> + + <_> + 12 5 6 2 -1. + <_> + 12 6 6 1 2. + <_> + + <_> + 4 7 5 2 -1. + <_> + 4 8 5 1 2. + <_> + + <_> + 7 3 1 2 -1. + <_> + 7 4 1 1 2. + <_> + + <_> + 6 0 7 6 -1. + <_> + 6 3 7 3 2. + <_> + + <_> + 13 11 2 8 -1. + <_> + 13 11 1 4 2. + <_> + 14 15 1 4 2. + <_> + + <_> + 8 7 4 2 -1. + <_> + 10 7 2 2 2. + <_> + + <_> + 4 1 2 4 -1. + <_> + 4 1 1 2 2. + <_> + 5 3 1 2 2. + <_> + + <_> + 4 0 2 8 -1. + <_> + 4 0 1 4 2. + <_> + 5 4 1 4 2. + <_> + + <_> + 6 3 2 1 -1. + <_> + 7 3 1 1 2. + <_> + + <_> + 14 12 1 3 -1. + <_> + 14 13 1 1 3. + <_> + + <_> + 5 10 2 3 -1. + <_> + 5 11 2 1 3. + <_> + + <_> + 5 11 2 2 -1. + <_> + 5 12 2 1 2. + <_> + + <_> + 5 1 4 15 -1. + <_> + 5 6 4 5 3. + <_> + + <_> + 11 5 4 14 -1. + <_> + 11 5 2 7 2. + <_> + 13 12 2 7 2. + <_> + + <_> + 9 18 3 1 -1. + <_> + 10 18 1 1 3. + <_> + + <_> + 4 10 5 6 -1. + <_> + 4 12 5 2 3. + <_> + + <_> + 5 13 3 3 -1. + <_> + 5 14 3 1 3. + <_> + + <_> + 8 1 3 5 -1. + <_> + 9 1 1 5 3. + <_> + + <_> + 4 7 3 2 -1. + <_> + 5 7 1 2 3. + <_> + + <_> + 6 14 3 3 -1. + <_> + 7 14 1 3 3. + <_> + + <_> + 7 13 2 3 -1. + <_> + 7 14 2 1 3. + <_> + + <_> + 4 3 2 9 -1. + <_> + 4 6 2 3 3. + <_> + + <_> + 4 8 3 2 -1. + <_> + 4 9 3 1 2. + <_> + + <_> + 10 10 2 2 -1. + <_> + 10 11 2 1 2. + <_> + + <_> + 7 8 12 6 -1. + <_> + 7 8 6 3 2. + <_> + 13 11 6 3 2. + <_> + + <_> + 14 10 3 2 -1. + <_> + 14 11 3 1 2. + <_> + + <_> + 5 16 6 2 -1. + <_> + 5 17 6 1 2. + <_> + + <_> + 8 15 4 3 -1. + <_> + 8 16 4 1 3. + <_> + + <_> + 14 9 2 2 -1. + <_> + 14 10 2 1 2. + <_> + + <_> + 8 5 2 3 -1. + <_> + 8 6 2 1 3. + <_> + + <_> + 8 5 3 3 -1. + <_> + 8 6 3 1 3. + <_> + + <_> + 1 7 17 9 -1. + <_> + 1 10 17 3 3. + <_> + + <_> + 5 10 6 8 -1. + <_> + 5 14 6 4 2. + <_> + + <_> + 18 1 2 2 -1. + <_> + 18 1 1 1 2. + <_> + 19 2 1 1 2. + <_> + + <_> + 0 0 11 6 -1. + <_> + 0 3 11 3 2. + <_> + + <_> + 3 0 16 3 -1. + <_> + 3 1 16 1 3. + <_> + + <_> + 10 10 10 3 -1. + <_> + 10 11 10 1 3. + <_> + + <_> + 0 0 15 18 -1. + <_> + 0 9 15 9 2. + <_> + + <_> + 15 11 2 2 -1. + <_> + 15 11 1 1 2. + <_> + 16 12 1 1 2. + <_> + + <_> + 14 12 6 3 -1. + <_> + 17 12 3 3 2. + <_> + + <_> + 8 4 3 4 -1. + <_> + 9 4 1 4 3. + <_> + + <_> + 8 6 12 4 -1. + <_> + 12 6 4 4 3. + <_> + + <_> + 9 12 2 2 -1. + <_> + 9 13 2 1 2. + <_> + + <_> + 6 3 1 2 -1. + <_> + 6 4 1 1 2. + <_> + + <_> + 4 7 2 8 -1. + <_> + 4 7 1 4 2. + <_> + 5 11 1 4 2. + <_> + + <_> + 9 17 3 2 -1. + <_> + 10 17 1 2 3. + <_> + + <_> + 9 6 1 3 -1. + <_> + 9 7 1 1 3. + <_> + + <_> + 6 4 1 6 -1. + <_> + 6 7 1 3 2. + <_> + + <_> + 5 6 13 6 -1. + <_> + 5 8 13 2 3. + <_> + + <_> + 6 7 4 12 -1. + <_> + 8 7 2 12 2. + <_> + + <_> + 6 12 2 4 -1. + <_> + 7 12 1 4 2. + <_> + + <_> + 5 14 4 3 -1. + <_> + 5 15 4 1 3. + <_> + + <_> + 10 5 3 1 -1. + <_> + 11 5 1 1 3. + <_> + + <_> + 4 15 4 3 -1. + <_> + 4 16 4 1 3. + <_> + + <_> + 11 12 3 2 -1. + <_> + 12 12 1 2 3. + <_> + + <_> + 11 10 8 2 -1. + <_> + 15 10 4 2 2. + <_> + + <_> + 14 18 6 2 -1. + <_> + 17 18 3 2 2. + <_> + + <_> + 7 5 3 2 -1. + <_> + 8 5 1 2 3. + <_> + + <_> + 11 8 2 1 -1. + <_> + 12 8 1 1 2. + <_> + + <_> + 12 6 3 6 -1. + <_> + 12 8 3 2 3. + <_> + + <_> + 11 9 1 2 -1. + <_> + 11 10 1 1 2. + <_> + + <_> + 12 9 3 9 -1. + <_> + 13 9 1 9 3. + <_> + + <_> + 0 8 1 3 -1. + <_> + 0 9 1 1 3. + <_> + + <_> + 0 8 1 3 -1. + <_> + 0 9 1 1 3. + <_> + + <_> + 3 8 2 2 -1. + <_> + 3 8 1 1 2. + <_> + 4 9 1 1 2. + <_> + + <_> + 4 6 2 6 -1. + <_> + 4 9 2 3 2. + <_> + + <_> + 4 9 2 9 -1. + <_> + 4 12 2 3 3. + <_> + + <_> + 7 13 2 2 -1. + <_> + 7 13 1 1 2. + <_> + 8 14 1 1 2. + <_> + + <_> + 3 6 10 6 -1. + <_> + 3 6 5 3 2. + <_> + 8 9 5 3 2. + <_> + + <_> + 9 9 4 6 -1. + <_> + 11 9 2 6 2. + <_> + + <_> + 2 12 14 3 -1. + <_> + 9 12 7 3 2. + <_> + + <_> + 0 0 11 18 -1. + <_> + 0 9 11 9 2. + <_> + + <_> + 4 18 4 2 -1. + <_> + 4 18 2 1 2. + <_> + 6 19 2 1 2. + <_> + + <_> + 7 13 4 6 -1. + <_> + 7 13 2 3 2. + <_> + 9 16 2 3 2. + <_> + + <_> + 8 17 3 1 -1. + <_> + 9 17 1 1 3. + <_> + + <_> + 5 14 8 6 -1. + <_> + 5 14 4 3 2. + <_> + 9 17 4 3 2. + <_> + + <_> + 7 12 2 3 -1. + <_> + 7 13 2 1 3. + <_> + + <_> + 14 4 4 2 -1. + <_> + 14 4 2 1 2. + <_> + 16 5 2 1 2. + <_> + + <_> + 7 13 2 3 -1. + <_> + 7 14 2 1 3. + <_> + + <_> + 7 14 4 2 -1. + <_> + 7 14 2 1 2. + <_> + 9 15 2 1 2. + <_> + + <_> + 10 14 2 6 -1. + <_> + 10 16 2 2 3. + <_> + + <_> + 9 6 9 1 -1. + <_> + 12 6 3 1 3. + <_> + + <_> + 2 5 18 7 -1. + <_> + 11 5 9 7 2. + <_> + + <_> + 18 6 1 2 -1. + <_> + 18 7 1 1 2. + <_> + + <_> + 4 14 14 6 -1. + <_> + 4 17 14 3 2. + <_> + + <_> + 8 0 6 20 -1. + <_> + 10 0 2 20 3. + <_> + + <_> + 12 0 8 18 -1. + <_> + 12 9 8 9 2. + <_> + + <_> + 12 5 2 1 -1. + <_> + 13 5 1 1 2. + <_> + + <_> + 0 6 6 13 -1. + <_> + 3 6 3 13 2. + <_> + + <_> + 3 15 3 4 -1. + <_> + 4 15 1 4 3. + <_> + + <_> + 3 13 3 6 -1. + <_> + 4 13 1 6 3. + <_> + + <_> + 3 11 9 2 -1. + <_> + 6 11 3 2 3. + <_> + + <_> + 0 11 6 8 -1. + <_> + 3 11 3 8 2. + <_> + + <_> + 16 0 3 7 -1. + <_> + 17 0 1 7 3. + <_> + + <_> + 16 1 2 6 -1. + <_> + 16 1 1 3 2. + <_> + 17 4 1 3 2. + <_> + + <_> + 3 7 6 10 -1. + <_> + 3 7 3 5 2. + <_> + 6 12 3 5 2. + <_> + + <_> + 2 0 6 7 -1. + <_> + 5 0 3 7 2. + <_> + + <_> + 1 2 12 2 -1. + <_> + 5 2 4 2 3. + <_> + + <_> + 6 4 1 2 -1. + <_> + 6 5 1 1 2. + <_> + + <_> + 0 14 8 6 -1. + <_> + 4 14 4 6 2. + <_> + + <_> + 3 11 9 3 -1. + <_> + 6 11 3 3 3. + <_> + + <_> + 4 14 2 2 -1. + <_> + 4 14 1 1 2. + <_> + 5 15 1 1 2. + <_> + + <_> + 11 2 3 2 -1. + <_> + 12 2 1 2 3. + <_> + + <_> + 18 5 2 6 -1. + <_> + 18 5 1 3 2. + <_> + 19 8 1 3 2. + <_> + + <_> + 0 5 1 2 -1. + <_> + 0 6 1 1 2. + <_> + + <_> + 8 4 6 1 -1. + <_> + 11 4 3 1 2. + <_> + + <_> + 4 5 2 3 -1. + <_> + 5 5 1 3 2. + <_> + + <_> + 1 3 6 4 -1. + <_> + 3 3 2 4 3. + <_> + + <_> + 12 5 6 1 -1. + <_> + 14 5 2 1 3. + <_> + + <_> + 6 9 3 3 -1. + <_> + 6 10 3 1 3. + <_> + + <_> + 4 3 2 2 -1. + <_> + 4 4 2 1 2. + <_> + + <_> + 8 7 3 3 -1. + <_> + 8 8 3 1 3. + <_> + + <_> + 5 5 10 14 -1. + <_> + 5 5 5 7 2. + <_> + 10 12 5 7 2. + <_> + + <_> + 16 5 2 6 -1. + <_> + 16 7 2 2 3. + <_> + + <_> + 19 5 1 3 -1. + <_> + 19 6 1 1 3. + <_> + + <_> + 3 6 2 2 -1. + <_> + 3 6 1 1 2. + <_> + 4 7 1 1 2. + <_> + + <_> + 0 1 10 10 -1. + <_> + 5 1 5 10 2. + <_> + + <_> + 3 0 8 1 -1. + <_> + 7 0 4 1 2. + <_> + + <_> + 14 5 6 1 -1. + <_> + 16 5 2 1 3. + <_> + + <_> + 6 16 1 3 -1. + <_> + 6 17 1 1 3. + <_> + + <_> + 6 14 2 4 -1. + <_> + 6 14 1 2 2. + <_> + 7 16 1 2 2. + <_> + + <_> + 0 7 2 5 -1. + <_> + 1 7 1 5 2. + <_> + + <_> + 18 0 2 8 -1. + <_> + 18 0 1 4 2. + <_> + 19 4 1 4 2. + <_> + + <_> + 5 8 6 2 -1. + <_> + 8 8 3 2 2. + <_> + + <_> + 4 8 8 3 -1. + <_> + 8 8 4 3 2. + <_> + + <_> + 8 0 2 2 -1. + <_> + 8 1 2 1 2. + <_> + + <_> + 13 8 6 11 -1. + <_> + 15 8 2 11 3. + <_> + + <_> + 11 15 9 5 -1. + <_> + 14 15 3 5 3. + <_> + + <_> + 5 4 12 15 -1. + <_> + 9 4 4 15 3. + <_> + + <_> + 16 12 2 8 -1. + <_> + 16 12 1 4 2. + <_> + 17 16 1 4 2. + <_> + + <_> + 7 13 10 6 -1. + <_> + 7 16 10 3 2. + <_> + + <_> + 6 15 3 4 -1. + <_> + 6 17 3 2 2. + <_> + + <_> + 9 5 8 2 -1. + <_> + 13 5 4 2 2. + <_> + + <_> + 5 6 3 4 -1. + <_> + 6 6 1 4 3. + <_> + + <_> + 10 8 7 6 -1. + <_> + 10 10 7 2 3. + <_> + + <_> + 12 13 1 4 -1. + <_> + 12 15 1 2 2. + <_> + + <_> + 2 10 3 4 -1. + <_> + 3 10 1 4 3. + <_> + + <_> + 8 7 6 6 -1. + <_> + 8 7 3 3 2. + <_> + 11 10 3 3 2. + <_> + + <_> + 2 0 15 2 -1. + <_> + 7 0 5 2 3. + <_> + + <_> + 13 10 1 3 -1. + <_> + 13 11 1 1 3. + <_> + + <_> + 2 9 3 4 -1. + <_> + 3 9 1 4 3. + <_> + + <_> + 6 4 3 2 -1. + <_> + 6 5 3 1 2. + <_> + + <_> + 10 16 2 3 -1. + <_> + 11 16 1 3 2. + <_> + + <_> + 7 13 2 3 -1. + <_> + 7 14 2 1 3. + <_> + + <_> + 6 12 2 4 -1. + <_> + 6 12 1 2 2. + <_> + 7 14 1 2 2. + <_> + + <_> + 9 1 6 1 -1. + <_> + 12 1 3 1 2. + <_> + + <_> + 6 6 3 4 -1. + <_> + 7 6 1 4 3. + <_> + + <_> + 9 8 3 3 -1. + <_> + 9 9 3 1 3. + <_> + + <_> + 8 7 12 3 -1. + <_> + 14 7 6 3 2. + <_> + + <_> + 12 10 4 2 -1. + <_> + 12 10 2 1 2. + <_> + 14 11 2 1 2. + <_> + + <_> + 16 11 1 2 -1. + <_> + 16 12 1 1 2. + <_> + + <_> + 6 2 1 2 -1. + <_> + 6 3 1 1 2. + <_> + + <_> + 5 10 2 3 -1. + <_> + 5 11 2 1 3. + <_> + + <_> + 5 9 2 3 -1. + <_> + 5 10 2 1 3. + <_> + + <_> + 0 0 2 1 -1. + <_> + 1 0 1 1 2. + <_> + + <_> + 0 0 2 1 -1. + <_> + 1 0 1 1 2. + <_> + + <_> + 12 0 8 2 -1. + <_> + 12 0 4 1 2. + <_> + 16 1 4 1 2. + <_> + + <_> + 10 11 3 8 -1. + <_> + 11 11 1 8 3. + <_> + + <_> + 5 11 3 3 -1. + <_> + 5 12 3 1 3. + <_> + + <_> + 5 10 1 6 -1. + <_> + 5 13 1 3 2. + <_> + + <_> + 6 2 6 6 -1. + <_> + 6 2 3 3 2. + <_> + 9 5 3 3 2. + <_> + + <_> + 11 4 1 6 -1. + <_> + 11 6 1 2 3. + <_> + + <_> + 18 3 2 16 -1. + <_> + 18 3 1 8 2. + <_> + 19 11 1 8 2. + <_> + + <_> + 10 12 3 2 -1. + <_> + 11 12 1 2 3. + <_> + + <_> + 7 14 2 3 -1. + <_> + 7 15 2 1 3. + <_> + + <_> + 16 12 2 1 -1. + <_> + 17 12 1 1 2. + <_> + + <_> + 15 6 4 2 -1. + <_> + 15 7 4 1 2. + <_> + + <_> + 4 6 2 3 -1. + <_> + 4 7 2 1 3. + <_> + + <_> + 8 19 6 1 -1. + <_> + 11 19 3 1 2. + <_> + + <_> + 9 12 3 3 -1. + <_> + 9 13 3 1 3. + <_> + + <_> + 10 12 1 3 -1. + <_> + 10 13 1 1 3. + <_> + + <_> + 8 6 2 3 -1. + <_> + 8 7 2 1 3. + <_> + + <_> + 5 7 6 5 -1. + <_> + 8 7 3 5 2. + <_> + + <_> + 14 10 1 2 -1. + <_> + 14 11 1 1 2. + <_> + + <_> + 11 7 6 3 -1. + <_> + 13 7 2 3 3. + <_> + + <_> + 14 6 6 1 -1. + <_> + 16 6 2 1 3. + <_> + + <_> + 9 7 1 3 -1. + <_> + 9 8 1 1 3. + <_> + + <_> + 9 5 2 8 -1. + <_> + 9 5 1 4 2. + <_> + 10 9 1 4 2. + <_> + + <_> + 6 12 1 4 -1. + <_> + 6 14 1 2 2. + <_> + + <_> + 5 13 4 2 -1. + <_> + 5 14 4 1 2. + <_> + + <_> + 12 9 2 4 -1. + <_> + 12 11 2 2 2. + <_> + + <_> + 12 7 3 6 -1. + <_> + 13 7 1 6 3. + <_> + + <_> + 5 0 2 14 -1. + <_> + 5 7 2 7 2. + <_> + + <_> + 9 3 1 2 -1. + <_> + 9 4 1 1 2. + <_> + + <_> + 6 1 14 12 -1. + <_> + 6 5 14 4 3. + <_> + + <_> + 13 6 7 6 -1. + <_> + 13 9 7 3 2. + <_> + + <_> + 14 9 3 3 -1. + <_> + 14 10 3 1 3. + <_> + + <_> + 17 12 3 1 -1. + <_> + 18 12 1 1 3. + <_> + + <_> + 8 2 3 2 -1. + <_> + 9 2 1 2 3. + <_> + + <_> + 7 11 2 1 -1. + <_> + 8 11 1 1 2. + <_> + + <_> + 5 7 3 2 -1. + <_> + 5 8 3 1 2. + <_> + + <_> + 11 11 2 1 -1. + <_> + 12 11 1 1 2. + <_> + + <_> + 11 11 3 1 -1. + <_> + 12 11 1 1 3. + <_> + + <_> + 9 5 1 3 -1. + <_> + 9 6 1 1 3. + <_> + + <_> + 12 9 1 2 -1. + <_> + 12 10 1 1 2. + <_> + + <_> + 12 7 2 3 -1. + <_> + 13 7 1 3 2. + <_> + + <_> + 5 11 6 3 -1. + <_> + 8 11 3 3 2. + <_> + + <_> + 6 10 2 2 -1. + <_> + 6 10 1 1 2. + <_> + 7 11 1 1 2. + <_> + + <_> + 17 2 1 9 -1. + <_> + 17 5 1 3 3. + <_> + + <_> + 4 7 2 6 -1. + <_> + 4 7 1 3 2. + <_> + 5 10 1 3 2. + <_> + + <_> + 0 1 11 18 -1. + <_> + 0 10 11 9 2. + <_> + + <_> + 7 6 2 8 -1. + <_> + 7 10 2 4 2. + <_> + + <_> + 6 2 4 6 -1. + <_> + 6 5 4 3 2. + <_> + + <_> + 2 12 12 4 -1. + <_> + 2 14 12 2 2. + <_> + + <_> + 9 0 6 1 -1. + <_> + 12 0 3 1 2. + <_> + + <_> + 5 0 12 2 -1. + <_> + 5 1 12 1 2. + <_> + + <_> + 10 0 2 1 -1. + <_> + 11 0 1 1 2. + <_> + + <_> + 7 14 3 3 -1. + <_> + 7 15 3 1 3. + <_> + + <_> + 4 13 5 3 -1. + <_> + 4 14 5 1 3. + <_> + + <_> + 9 16 6 2 -1. + <_> + 9 17 6 1 2. + <_> + + <_> + 11 16 5 3 -1. + <_> + 11 17 5 1 3. + <_> + + <_> + 5 0 3 15 -1. + <_> + 6 0 1 15 3. + <_> + + <_> + 9 16 8 4 -1. + <_> + 9 18 8 2 2. + <_> + + <_> + 0 6 3 2 -1. + <_> + 0 7 3 1 2. + <_> + + <_> + 5 9 3 1 -1. + <_> + 6 9 1 1 3. + <_> + + <_> + 9 11 4 2 -1. + <_> + 9 11 2 1 2. + <_> + 11 12 2 1 2. + <_> + + <_> + 4 13 2 2 -1. + <_> + 4 13 1 1 2. + <_> + 5 14 1 1 2. + <_> + + <_> + 6 4 1 2 -1. + <_> + 6 5 1 1 2. + <_> + + <_> + 14 18 2 2 -1. + <_> + 14 18 1 1 2. + <_> + 15 19 1 1 2. + <_> + + <_> + 7 10 5 6 -1. + <_> + 7 12 5 2 3. + <_> + + <_> + 8 7 4 6 -1. + <_> + 8 9 4 2 3. + <_> + + <_> + 7 9 6 2 -1. + <_> + 9 9 2 2 3. + <_> + + <_> + 6 6 6 4 -1. + <_> + 6 6 3 2 2. + <_> + 9 8 3 2 2. + <_> + + <_> + 10 3 1 6 -1. + <_> + 10 5 1 2 3. + <_> + + <_> + 5 2 12 14 -1. + <_> + 5 2 6 7 2. + <_> + 11 9 6 7 2. + <_> + + <_> + 13 5 6 2 -1. + <_> + 13 6 6 1 2. + <_> + + <_> + 16 0 4 8 -1. + <_> + 16 0 2 4 2. + <_> + 18 4 2 4 2. + <_> + + <_> + 3 12 3 1 -1. + <_> + 4 12 1 1 3. + <_> + + <_> + 3 10 3 4 -1. + <_> + 4 10 1 4 3. + <_> + + <_> + 4 6 1 6 -1. + <_> + 4 9 1 3 2. + <_> + + <_> + 3 7 15 1 -1. + <_> + 8 7 5 1 3. + <_> + + <_> + 1 15 6 5 -1. + <_> + 4 15 3 5 2. + <_> + + <_> + 11 9 8 4 -1. + <_> + 15 9 4 4 2. + <_> + + <_> + 15 7 2 4 -1. + <_> + 16 7 1 4 2. + <_> + + <_> + 19 1 1 2 -1. + <_> + 19 2 1 1 2. + <_> + + <_> + 6 15 3 3 -1. + <_> + 7 15 1 3 3. + <_> + + <_> + 3 16 3 1 -1. + <_> + 4 16 1 1 3. + <_> + + <_> + 3 10 3 10 -1. + <_> + 4 10 1 10 3. + <_> + + <_> + 18 17 2 2 -1. + <_> + 18 17 1 1 2. + <_> + 19 18 1 1 2. + <_> + + <_> + 3 12 6 4 -1. + <_> + 3 12 3 2 2. + <_> + 6 14 3 2 2. + <_> + + <_> + 5 17 2 2 -1. + <_> + 5 17 1 1 2. + <_> + 6 18 1 1 2. + <_> + + <_> + 7 16 2 3 -1. + <_> + 7 17 2 1 3. + <_> + + <_> + 5 11 6 3 -1. + <_> + 8 11 3 3 2. + <_> + + <_> + 7 16 1 3 -1. + <_> + 7 17 1 1 3. + <_> + + <_> + 0 16 2 1 -1. + <_> + 1 16 1 1 2. + <_> + + <_> + 11 7 9 6 -1. + <_> + 11 10 9 3 2. + <_> + + <_> + 9 4 9 16 -1. + <_> + 12 4 3 16 3. + <_> + + <_> + 14 12 5 3 -1. + <_> + 14 13 5 1 3. + <_> + + <_> + 8 18 3 2 -1. + <_> + 9 18 1 2 3. + <_> + + <_> + 4 0 11 16 -1. + <_> + 4 8 11 8 2. + <_> + + <_> + 2 4 12 15 -1. + <_> + 2 9 12 5 3. + <_> + + <_> + 3 13 11 4 -1. + <_> + 3 15 11 2 2. + <_> + + <_> + 7 5 4 3 -1. + <_> + 7 6 4 1 3. + <_> + + <_> + 6 5 4 3 -1. + <_> + 6 6 4 1 3. + <_> + + <_> + 5 0 2 9 -1. + <_> + 5 3 2 3 3. + <_> + + <_> + 16 8 2 2 -1. + <_> + 16 8 1 1 2. + <_> + 17 9 1 1 2. + <_> + + <_> + 12 10 8 2 -1. + <_> + 12 10 4 1 2. + <_> + 16 11 4 1 2. + <_> + + <_> + 6 2 2 8 -1. + <_> + 7 2 1 8 2. + <_> + + <_> + 6 6 2 3 -1. + <_> + 7 6 1 3 2. + <_> + + <_> + 17 4 1 3 -1. + <_> + 17 5 1 1 3. + <_> + + <_> + 15 13 3 2 -1. + <_> + 16 13 1 2 3. + <_> + + <_> + 11 13 2 3 -1. + <_> + 11 14 2 1 3. + <_> + + <_> + 14 5 6 11 -1. + <_> + 16 5 2 11 3. + <_> + + <_> + 6 0 12 8 -1. + <_> + 12 0 6 8 2. + <_> + + <_> + 7 15 8 4 -1. + <_> + 7 15 4 2 2. + <_> + 11 17 4 2 2. + <_> + + <_> + 4 14 16 6 -1. + <_> + 4 16 16 2 3. + <_> + + <_> + 6 12 2 6 -1. + <_> + 6 12 1 3 2. + <_> + 7 15 1 3 2. + <_> + + <_> + 7 14 6 4 -1. + <_> + 7 14 3 2 2. + <_> + 10 16 3 2 2. + <_> + + <_> + 0 0 2 4 -1. + <_> + 0 0 1 2 2. + <_> + 1 2 1 2 2. + <_> + + <_> + 15 12 1 3 -1. + <_> + 15 13 1 1 3. + <_> + + <_> + 7 16 3 1 -1. + <_> + 8 16 1 1 3. + <_> + + <_> + 1 8 1 2 -1. + <_> + 1 9 1 1 2. + <_> + + <_> + 3 14 3 2 -1. + <_> + 4 14 1 2 3. + <_> + + <_> + 3 13 3 5 -1. + <_> + 4 13 1 5 3. + <_> + + <_> + 7 2 3 4 -1. + <_> + 8 2 1 4 3. + <_> + + <_> + 10 1 4 4 -1. + <_> + 10 3 4 2 2. + <_> + + <_> + 9 2 1 2 -1. + <_> + 9 3 1 1 2. + <_> + + <_> + 7 12 2 2 -1. + <_> + 7 12 1 1 2. + <_> + 8 13 1 1 2. + <_> + + <_> + 4 11 4 4 -1. + <_> + 4 11 2 2 2. + <_> + 6 13 2 2 2. + <_> + + <_> + 9 10 6 4 -1. + <_> + 12 10 3 4 2. + <_> + + <_> + 8 12 3 2 -1. + <_> + 9 12 1 2 3. + <_> + + <_> + 13 9 6 6 -1. + <_> + 13 9 3 3 2. + <_> + 16 12 3 3 2. + <_> + + <_> + 14 0 3 5 -1. + <_> + 15 0 1 5 3. + <_> + + <_> + 9 8 6 4 -1. + <_> + 9 8 3 2 2. + <_> + 12 10 3 2 2. + <_> + + <_> + 10 6 3 3 -1. + <_> + 11 6 1 3 3. + <_> + + <_> + 13 3 2 1 -1. + <_> + 14 3 1 1 2. + <_> + + <_> + 4 5 2 2 -1. + <_> + 4 5 1 1 2. + <_> + 5 6 1 1 2. + <_> + + <_> + 4 5 2 2 -1. + <_> + 4 5 1 1 2. + <_> + 5 6 1 1 2. + <_> + + <_> + 7 9 2 6 -1. + <_> + 7 11 2 2 3. + <_> + + <_> + 6 12 2 3 -1. + <_> + 6 13 2 1 3. + <_> + + <_> + 6 13 2 3 -1. + <_> + 6 14 2 1 3. + <_> + + <_> + 7 4 3 2 -1. + <_> + 8 4 1 2 3. + <_> + + <_> + 13 1 3 4 -1. + <_> + 14 1 1 4 3. + <_> + + <_> + 6 8 11 3 -1. + <_> + 6 9 11 1 3. + <_> + + <_> + 13 10 5 2 -1. + <_> + 13 11 5 1 2. + <_> + + <_> + 13 9 3 6 -1. + <_> + 13 12 3 3 2. + <_> + + <_> + 3 14 5 2 -1. + <_> + 3 15 5 1 2. + <_> + + <_> + 11 0 8 2 -1. + <_> + 11 0 4 1 2. + <_> + 15 1 4 1 2. + <_> + + <_> + 13 1 7 6 -1. + <_> + 13 3 7 2 3. + <_> + + <_> + 11 0 6 1 -1. + <_> + 13 0 2 1 3. + <_> + + <_> + 8 1 5 3 -1. + <_> + 8 2 5 1 3. + <_> + + <_> + 12 11 1 3 -1. + <_> + 12 12 1 1 3. + <_> + + <_> + 17 13 3 6 -1. + <_> + 17 15 3 2 3. + <_> + + <_> + 12 11 1 3 -1. + <_> + 12 12 1 1 3. + <_> + + <_> + 15 9 3 1 -1. + <_> + 16 9 1 1 3. + <_> + + <_> + 10 4 6 11 -1. + <_> + 13 4 3 11 2. + <_> + + <_> + 13 9 4 4 -1. + <_> + 13 9 2 2 2. + <_> + 15 11 2 2 2. + <_> + + <_> + 8 2 1 6 -1. + <_> + 8 4 1 2 3. + <_> + + <_> + 5 6 4 6 -1. + <_> + 5 9 4 3 2. + <_> + + <_> + 2 6 4 8 -1. + <_> + 4 6 2 8 2. + <_> + + <_> + 11 15 1 2 -1. + <_> + 11 16 1 1 2. + <_> + + <_> + 11 1 7 10 -1. + <_> + 11 6 7 5 2. + <_> + + <_> + 7 11 9 6 -1. + <_> + 7 13 9 2 3. + <_> + + <_> + 4 9 8 1 -1. + <_> + 8 9 4 1 2. + <_> + + <_> + 10 10 3 3 -1. + <_> + 11 10 1 3 3. + <_> + + <_> + 8 0 7 6 -1. + <_> + 8 2 7 2 3. + <_> + + <_> + 11 13 2 2 -1. + <_> + 11 13 1 1 2. + <_> + 12 14 1 1 2. + <_> + + <_> + 7 12 1 3 -1. + <_> + 7 13 1 1 3. + <_> + + <_> + 7 10 3 9 -1. + <_> + 7 13 3 3 3. + <_> + + <_> + 5 9 1 3 -1. + <_> + 5 10 1 1 3. + <_> + + <_> + 2 8 18 6 -1. + <_> + 11 8 9 6 2. + <_> + + <_> + 11 7 6 4 -1. + <_> + 13 7 2 4 3. + <_> + + <_> + 7 8 4 6 -1. + <_> + 7 10 4 2 3. + <_> + + <_> + 10 4 4 6 -1. + <_> + 10 6 4 2 3. + <_> + + <_> + 11 12 6 1 -1. + <_> + 13 12 2 1 3. + <_> + + <_> + 5 7 2 1 -1. + <_> + 6 7 1 1 2. + <_> + + <_> + 5 12 3 3 -1. + <_> + 5 13 3 1 3. + <_> + + <_> + 16 17 1 2 -1. + <_> + 16 18 1 1 2. + <_> + + <_> + 1 0 2 1 -1. + <_> + 2 0 1 1 2. + <_> + + <_> + 5 12 2 2 -1. + <_> + 5 13 2 1 2. + <_> + + <_> + 12 13 2 3 -1. + <_> + 12 14 2 1 3. + <_> + + <_> + 5 11 3 3 -1. + <_> + 5 12 3 1 3. + <_> + + <_> + 1 0 2 1 -1. + <_> + 2 0 1 1 2. + <_> + + <_> + 16 0 4 4 -1. + <_> + 16 0 2 2 2. + <_> + 18 2 2 2 2. + <_> + + <_> + 4 5 8 10 -1. + <_> + 4 5 4 5 2. + <_> + 8 10 4 5 2. + <_> + + <_> + 3 14 4 5 -1. + <_> + 5 14 2 5 2. + <_> + + <_> + 2 16 6 2 -1. + <_> + 5 16 3 2 2. + <_> + + <_> + 8 0 8 1 -1. + <_> + 12 0 4 1 2. + <_> + + <_> + 0 4 15 6 -1. + <_> + 0 7 15 3 2. + <_> + + <_> + 9 9 3 2 -1. + <_> + 9 10 3 1 2. + <_> + + <_> + 7 9 2 6 -1. + <_> + 7 11 2 2 3. + <_> + + <_> + 5 10 4 3 -1. + <_> + 5 11 4 1 3. + <_> + + <_> + 12 10 1 2 -1. + <_> + 12 11 1 1 2. + <_> + + <_> + 17 3 1 3 -1. + <_> + 17 4 1 1 3. + <_> + + <_> + 11 9 4 4 -1. + <_> + 11 9 2 2 2. + <_> + 13 11 2 2 2. + <_> + + <_> + 10 14 6 2 -1. + <_> + 10 15 6 1 2. + <_> + + <_> + 11 12 2 8 -1. + <_> + 11 16 2 4 2. + <_> + + <_> + 11 7 5 6 -1. + <_> + 11 10 5 3 2. + <_> + + <_> + 4 2 2 6 -1. + <_> + 5 2 1 6 2. + <_> + + <_> + 6 0 5 2 -1. + <_> + 6 1 5 1 2. + <_> + + <_> + 10 17 4 3 -1. + <_> + 10 18 4 1 3. + <_> + + <_> + 12 3 7 3 -1. + <_> + 12 4 7 1 3. + <_> + + <_> + 8 1 12 8 -1. + <_> + 8 1 6 4 2. + <_> + 14 5 6 4 2. + <_> + + <_> + 11 0 3 20 -1. + <_> + 12 0 1 20 3. + <_> + + <_> + 17 1 2 2 -1. + <_> + 17 1 1 1 2. + <_> + 18 2 1 1 2. + <_> + + <_> + 2 10 7 6 -1. + <_> + 2 12 7 2 3. + <_> + + <_> + 7 3 3 1 -1. + <_> + 8 3 1 1 3. + <_> + + <_> + 4 17 11 3 -1. + <_> + 4 18 11 1 3. + <_> + + <_> + 7 15 3 2 -1. + <_> + 8 15 1 2 3. + <_> + + <_> + 3 4 3 13 -1. + <_> + 4 4 1 13 3. + <_> + + <_> + 5 2 12 14 -1. + <_> + 5 2 6 7 2. + <_> + 11 9 6 7 2. + <_> + + <_> + 0 0 10 6 -1. + <_> + 0 3 10 3 2. + <_> + + <_> + 5 4 2 1 -1. + <_> + 6 4 1 1 2. + <_> + + <_> + 7 7 6 13 -1. + <_> + 10 7 3 13 2. + <_> + + <_> + 7 2 2 8 -1. + <_> + 7 2 1 4 2. + <_> + 8 6 1 4 2. + <_> + + <_> + 6 1 3 4 -1. + <_> + 7 1 1 4 3. + <_> + + <_> + 7 8 2 1 -1. + <_> + 8 8 1 1 2. + <_> + + <_> + 4 0 4 2 -1. + <_> + 4 0 2 1 2. + <_> + 6 1 2 1 2. + <_> + + <_> + 3 10 16 8 -1. + <_> + 3 14 16 4 2. + <_> + + <_> + 10 5 5 10 -1. + <_> + 10 10 5 5 2. + <_> + + <_> + 13 6 3 4 -1. + <_> + 13 8 3 2 2. + <_> + + <_> + 13 10 5 3 -1. + <_> + 13 11 5 1 3. + <_> + + <_> + 16 12 2 2 -1. + <_> + 16 12 1 1 2. + <_> + 17 13 1 1 2. + <_> + + <_> + 16 3 2 1 -1. + <_> + 17 3 1 1 2. + <_> + + <_> + 5 1 3 5 -1. + <_> + 6 1 1 5 3. + <_> + + <_> + 5 7 8 6 -1. + <_> + 5 9 8 2 3. + <_> + + <_> + 6 10 8 2 -1. + <_> + 6 10 4 1 2. + <_> + 10 11 4 1 2. + <_> + + <_> + 6 9 4 8 -1. + <_> + 6 9 2 4 2. + <_> + 8 13 2 4 2. + <_> + + <_> + 0 7 8 4 -1. + <_> + 4 7 4 4 2. + <_> + + <_> + 14 13 2 6 -1. + <_> + 14 13 1 3 2. + <_> + 15 16 1 3 2. + <_> + + <_> + 12 13 2 1 -1. + <_> + 13 13 1 1 2. + <_> + + <_> + 6 8 2 2 -1. + <_> + 6 9 2 1 2. + <_> + + <_> + 15 12 2 1 -1. + <_> + 16 12 1 1 2. + <_> + + <_> + 0 0 18 14 -1. + <_> + 0 7 18 7 2. + <_> + + <_> + 11 5 3 3 -1. + <_> + 12 5 1 3 3. + <_> + + <_> + 4 7 3 3 -1. + <_> + 5 7 1 3 3. + <_> + + <_> + 4 8 3 1 -1. + <_> + 5 8 1 1 3. + <_> + + <_> + 5 9 1 8 -1. + <_> + 5 13 1 4 2. + <_> + + <_> + 4 2 3 15 -1. + <_> + 5 2 1 15 3. + <_> + + <_> + 15 0 4 4 -1. + <_> + 17 0 2 4 2. + <_> + + <_> + 10 7 1 3 -1. + <_> + 10 8 1 1 3. + <_> + + <_> + 8 17 3 2 -1. + <_> + 9 17 1 2 3. + <_> + + <_> + 8 17 3 2 -1. + <_> + 9 17 1 2 3. + <_> + + <_> + 10 6 1 3 -1. + <_> + 10 7 1 1 3. + <_> + + <_> + 6 7 4 4 -1. + <_> + 6 7 2 2 2. + <_> + 8 9 2 2 2. + <_> + + <_> + 8 7 4 4 -1. + <_> + 8 7 2 2 2. + <_> + 10 9 2 2 2. + <_> + + <_> + 15 8 2 7 -1. + <_> + 16 8 1 7 2. + <_> + + <_> + 8 3 3 2 -1. + <_> + 9 3 1 2 3. + <_> + + <_> + 16 17 3 1 -1. + <_> + 17 17 1 1 3. + <_> + + <_> + 3 2 12 14 -1. + <_> + 3 2 6 7 2. + <_> + 9 9 6 7 2. + <_> + + <_> + 16 16 1 2 -1. + <_> + 16 17 1 1 2. + <_> + + <_> + 7 12 2 3 -1. + <_> + 7 13 2 1 3. + <_> + + <_> + 7 13 2 6 -1. + <_> + 8 13 1 6 2. + <_> + + <_> + 8 14 2 6 -1. + <_> + 8 16 2 2 3. + <_> + + <_> + 6 14 4 6 -1. + <_> + 6 16 4 2 3. + <_> + + <_> + 11 12 3 6 -1. + <_> + 12 12 1 6 3. + <_> + + <_> + 0 6 1 12 -1. + <_> + 0 10 1 4 3. + <_> + + <_> + 3 3 2 10 -1. + <_> + 3 3 1 5 2. + <_> + 4 8 1 5 2. + <_> + + <_> + 3 3 2 8 -1. + <_> + 3 3 1 4 2. + <_> + 4 7 1 4 2. + <_> + + <_> + 9 4 1 12 -1. + <_> + 9 10 1 6 2. + <_> + + <_> + 0 5 6 4 -1. + <_> + 3 5 3 4 2. + <_> + + <_> + 9 9 1 4 -1. + <_> + 9 11 1 2 2. + <_> + + <_> + 4 6 6 4 -1. + <_> + 4 6 3 2 2. + <_> + 7 8 3 2 2. + <_> + + <_> + 6 8 2 2 -1. + <_> + 7 8 1 2 2. + <_> + + <_> + 6 4 4 14 -1. + <_> + 8 4 2 14 2. + <_> + + <_> + 6 7 3 3 -1. + <_> + 7 7 1 3 3. + <_> + + <_> + 4 7 6 5 -1. + <_> + 7 7 3 5 2. + <_> + + <_> + 0 4 8 10 -1. + <_> + 4 4 4 10 2. + <_> + + <_> + 0 6 18 14 -1. + <_> + 9 6 9 14 2. + <_> + + <_> + 11 15 3 5 -1. + <_> + 12 15 1 5 3. + <_> + + <_> + 3 18 4 2 -1. + <_> + 3 18 2 1 2. + <_> + 5 19 2 1 2. + <_> + + <_> + 7 10 2 2 -1. + <_> + 7 11 2 1 2. + <_> + + <_> + 10 1 3 10 -1. + <_> + 10 6 3 5 2. + <_> + + <_> + 9 0 8 10 -1. + <_> + 13 0 4 10 2. + <_> + + <_> + 7 2 8 13 -1. + <_> + 11 2 4 13 2. + <_> + + <_> + 3 3 12 7 -1. + <_> + 9 3 6 7 2. + <_> + + <_> + 11 8 3 2 -1. + <_> + 12 8 1 2 3. + <_> + + <_> + 11 7 2 8 -1. + <_> + 11 7 1 4 2. + <_> + 12 11 1 4 2. + <_> + + <_> + 0 6 3 2 -1. + <_> + 0 7 3 1 2. + <_> + + <_> + 6 17 2 3 -1. + <_> + 6 18 2 1 3. + <_> + + <_> + 4 7 2 2 -1. + <_> + 4 7 1 1 2. + <_> + 5 8 1 1 2. + <_> + + <_> + 9 2 10 9 -1. + <_> + 9 5 10 3 3. + <_> + + <_> + 9 0 10 4 -1. + <_> + 9 0 5 2 2. + <_> + 14 2 5 2 2. + <_> + + <_> + 7 5 2 1 -1. + <_> + 8 5 1 1 2. + <_> + + <_> + 7 5 2 1 -1. + <_> + 8 5 1 1 2. + <_> + + <_> + 4 9 3 3 -1. + <_> + 4 10 3 1 3. + <_> + + <_> + 4 10 4 3 -1. + <_> + 4 11 4 1 3. + <_> + + <_> + 6 7 2 3 -1. + <_> + 6 8 2 1 3. + <_> + + <_> + 18 4 1 3 -1. + <_> + 18 5 1 1 3. + <_> + + <_> + 17 0 3 5 -1. + <_> + 18 0 1 5 3. + <_> + + <_> + 11 2 8 3 -1. + <_> + 11 3 8 1 3. + <_> + + <_> + 14 9 6 5 -1. + <_> + 17 9 3 5 2. + <_> + + <_> + 0 7 4 6 -1. + <_> + 0 9 4 2 3. + <_> + + <_> + 12 7 4 12 -1. + <_> + 12 7 2 6 2. + <_> + 14 13 2 6 2. + <_> + + <_> + 8 7 9 3 -1. + <_> + 11 7 3 3 3. + <_> + + <_> + 12 12 2 3 -1. + <_> + 12 13 2 1 3. + <_> + + <_> + 11 0 6 20 -1. + <_> + 14 0 3 20 2. + <_> + + <_> + 4 5 2 6 -1. + <_> + 5 5 1 6 2. + <_> + + <_> + 1 7 6 11 -1. + <_> + 3 7 2 11 3. + <_> + + <_> + 2 15 2 1 -1. + <_> + 3 15 1 1 2. + <_> + + <_> + 5 11 2 6 -1. + <_> + 5 14 2 3 2. + <_> + + <_> + 6 17 2 3 -1. + <_> + 6 18 2 1 3. + <_> + + <_> + 5 8 11 12 -1. + <_> + 5 12 11 4 3. + <_> + + <_> + 16 10 2 2 -1. + <_> + 16 10 1 1 2. + <_> + 17 11 1 1 2. + <_> + + <_> + 15 11 3 1 -1. + <_> + 16 11 1 1 3. + <_> + + <_> + 13 14 1 3 -1. + <_> + 13 15 1 1 3. + <_> + + <_> + 6 14 3 4 -1. + <_> + 6 16 3 2 2. + <_> + + <_> + 6 6 2 14 -1. + <_> + 6 13 2 7 2. + <_> + + <_> + 11 14 2 1 -1. + <_> + 12 14 1 1 2. + <_> + + <_> + 9 13 6 6 -1. + <_> + 9 13 3 3 2. + <_> + 12 16 3 3 2. + <_> + + <_> + 10 17 3 1 -1. + <_> + 11 17 1 1 3. + <_> + + <_> + 9 13 2 6 -1. + <_> + 9 13 1 3 2. + <_> + 10 16 1 3 2. + <_> + + <_> + 11 18 4 2 -1. + <_> + 13 18 2 2 2. + <_> + + <_> + 9 12 3 3 -1. + <_> + 10 12 1 3 3. + <_> + + <_> + 5 6 1 12 -1. + <_> + 5 12 1 6 2. + <_> + + <_> + 2 4 6 6 -1. + <_> + 4 4 2 6 3. + <_> + + <_> + 1 4 9 3 -1. + <_> + 4 4 3 3 3. + <_> + + <_> + 5 10 3 3 -1. + <_> + 5 11 3 1 3. + <_> + + <_> + 8 9 1 3 -1. + <_> + 8 10 1 1 3. + <_> + + <_> + 11 19 6 1 -1. + <_> + 13 19 2 1 3. + <_> + + <_> + 18 4 2 8 -1. + <_> + 18 4 1 4 2. + <_> + 19 8 1 4 2. + <_> + + <_> + 17 5 2 3 -1. + <_> + 17 6 2 1 3. + <_> + + <_> + 12 15 8 4 -1. + <_> + 16 15 4 4 2. + <_> + + <_> + 14 8 4 10 -1. + <_> + 14 13 4 5 2. + <_> + + <_> + 11 0 3 18 -1. + <_> + 11 6 3 6 3. + <_> + + <_> + 8 5 12 6 -1. + <_> + 8 7 12 2 3. + <_> + + <_> + 10 11 4 2 -1. + <_> + 12 11 2 2 2. + <_> + + <_> + 5 7 2 8 -1. + <_> + 6 7 1 8 2. + <_> + + <_> + 6 3 12 12 -1. + <_> + 6 3 6 6 2. + <_> + 12 9 6 6 2. + <_> + + <_> + 6 10 4 2 -1. + <_> + 6 10 2 1 2. + <_> + 8 11 2 1 2. + <_> + + <_> + 0 2 6 10 -1. + <_> + 2 2 2 10 3. + <_> + + <_> + 10 15 3 2 -1. + <_> + 11 15 1 2 3. + <_> + + <_> + 6 8 10 2 -1. + <_> + 6 8 5 1 2. + <_> + 11 9 5 1 2. + <_> + + <_> + 6 12 1 6 -1. + <_> + 6 15 1 3 2. + <_> + + <_> + 9 0 4 1 -1. + <_> + 11 0 2 1 2. + <_> + + <_> + 8 5 2 3 -1. + <_> + 8 6 2 1 3. + <_> + + <_> + 7 4 2 1 -1. + <_> + 8 4 1 1 2. + <_> + + <_> + 2 11 3 1 -1. + <_> + 3 11 1 1 3. + <_> + + <_> + 1 10 3 3 -1. + <_> + 2 10 1 3 3. + <_> + + <_> + 12 0 8 2 -1. + <_> + 12 0 4 1 2. + <_> + 16 1 4 1 2. + <_> + + <_> + 6 6 6 8 -1. + <_> + 9 6 3 8 2. + <_> + + <_> + 6 10 1 3 -1. + <_> + 6 11 1 1 3. + <_> + + <_> + 8 12 7 2 -1. + <_> + 8 13 7 1 2. + <_> + + <_> + 6 11 2 3 -1. + <_> + 6 12 2 1 3. + <_> + + <_> + 6 6 2 12 -1. + <_> + 6 12 2 6 2. + <_> + + <_> + 6 12 2 3 -1. + <_> + 6 13 2 1 3. + <_> + + <_> + 12 12 1 3 -1. + <_> + 12 13 1 1 3. + <_> + + <_> + 8 9 1 2 -1. + <_> + 8 10 1 1 2. + <_> + + <_> + 7 11 4 6 -1. + <_> + 7 11 2 3 2. + <_> + 9 14 2 3 2. + <_> + + <_> + 10 10 4 3 -1. + <_> + 10 11 4 1 3. + <_> + + <_> + 12 10 2 3 -1. + <_> + 12 11 2 1 3. + <_> + + <_> + 6 13 2 3 -1. + <_> + 6 14 2 1 3. + <_> + + <_> + 7 14 1 3 -1. + <_> + 7 15 1 1 3. + <_> + + <_> + 6 10 8 6 -1. + <_> + 6 12 8 2 3. + <_> + + <_> + 5 8 6 12 -1. + <_> + 5 12 6 4 3. + <_> + + <_> + 1 14 2 1 -1. + <_> + 2 14 1 1 2. + <_> + + <_> + 8 6 2 3 -1. + <_> + 8 7 2 1 3. + <_> + + <_> + 4 6 8 4 -1. + <_> + 4 6 4 2 2. + <_> + 8 8 4 2 2. + <_> + + <_> + 0 14 3 1 -1. + <_> + 1 14 1 1 3. + <_> + + <_> + 4 1 2 2 -1. + <_> + 4 1 1 1 2. + <_> + 5 2 1 1 2. + <_> + + <_> + 14 10 1 6 -1. + <_> + 14 13 1 3 2. + <_> + + <_> + 5 10 1 3 -1. + <_> + 5 11 1 1 3. + <_> + + <_> + 5 10 3 3 -1. + <_> + 5 11 3 1 3. + <_> + + <_> + 2 3 12 4 -1. + <_> + 2 3 6 2 2. + <_> + 8 5 6 2 2. + <_> + + <_> + 10 15 3 2 -1. + <_> + 11 15 1 2 3. + <_> + + <_> + 12 14 8 1 -1. + <_> + 16 14 4 1 2. + <_> + + <_> + 11 0 8 13 -1. + <_> + 15 0 4 13 2. + <_> + + <_> + 12 12 2 8 -1. + <_> + 12 12 1 4 2. + <_> + 13 16 1 4 2. + <_> + + <_> + 4 7 8 12 -1. + <_> + 4 13 8 6 2. + <_> + + <_> + 10 9 2 4 -1. + <_> + 10 11 2 2 2. + <_> + + <_> + 4 4 3 1 -1. + <_> + 5 4 1 1 3. + <_> + + <_> + 18 5 1 3 -1. + <_> + 18 6 1 1 3. + <_> + + <_> + 6 9 9 1 -1. + <_> + 9 9 3 1 3. + <_> + + <_> + 12 5 4 6 -1. + <_> + 12 7 4 2 3. + <_> + + <_> + 16 0 4 4 -1. + <_> + 18 0 2 4 2. + <_> + + <_> + 3 10 2 2 -1. + <_> + 3 10 1 1 2. + <_> + 4 11 1 1 2. + <_> + + <_> + 0 0 2 1 -1. + <_> + 1 0 1 1 2. + <_> + + <_> + 17 4 2 8 -1. + <_> + 17 4 1 4 2. + <_> + 18 8 1 4 2. + <_> + + <_> + 7 15 1 3 -1. + <_> + 7 16 1 1 3. + <_> + + <_> + 0 15 2 1 -1. + <_> + 1 15 1 1 2. + <_> + + <_> + 7 10 2 4 -1. + <_> + 7 12 2 2 2. + <_> + + <_> + 4 19 3 1 -1. + <_> + 5 19 1 1 3. + <_> + + <_> + 2 14 4 5 -1. + <_> + 4 14 2 5 2. + <_> + + <_> + 4 11 4 4 -1. + <_> + 4 11 2 2 2. + <_> + 6 13 2 2 2. + <_> + + <_> + 4 13 2 6 -1. + <_> + 4 13 1 3 2. + <_> + 5 16 1 3 2. + <_> + + <_> + 7 3 3 4 -1. + <_> + 8 3 1 4 3. + <_> + + <_> + 17 11 3 2 -1. + <_> + 18 11 1 2 3. + <_> + + <_> + 10 4 6 2 -1. + <_> + 10 5 6 1 2. + <_> + + <_> + 12 3 6 3 -1. + <_> + 12 4 6 1 3. + <_> + + <_> + 17 12 2 2 -1. + <_> + 17 12 1 1 2. + <_> + 18 13 1 1 2. + <_> + + <_> + 5 12 15 8 -1. + <_> + 10 12 5 8 3. + <_> + + <_> + 4 18 2 2 -1. + <_> + 4 18 1 1 2. + <_> + 5 19 1 1 2. + <_> + + <_> + 0 15 2 2 -1. + <_> + 0 15 1 1 2. + <_> + 1 16 1 1 2. + <_> + + <_> + 5 9 1 6 -1. + <_> + 5 12 1 3 2. + <_> + + <_> + 1 0 18 14 -1. + <_> + 1 7 18 7 2. + <_> + + <_> + 6 2 7 6 -1. + <_> + 6 5 7 3 2. + <_> + + <_> + 6 16 2 1 -1. + <_> + 7 16 1 1 2. + <_> + + <_> + 4 11 16 9 -1. + <_> + 4 14 16 3 3. + <_> + + <_> + 16 9 2 2 -1. + <_> + 17 9 1 2 2. + <_> + + <_> + 6 8 2 2 -1. + <_> + 7 8 1 2 2. + <_> + + <_> + 0 14 12 3 -1. + <_> + 6 14 6 3 2. + <_> + + <_> + 7 6 3 10 -1. + <_> + 7 11 3 5 2. + <_> + + <_> + 10 11 1 2 -1. + <_> + 10 12 1 1 2. + <_> + + <_> + 5 17 2 2 -1. + <_> + 6 17 1 2 2. + <_> + + <_> + 2 0 18 18 -1. + <_> + 11 0 9 18 2. + <_> + + <_> + 12 11 6 3 -1. + <_> + 14 11 2 3 3. + <_> + + <_> + 12 12 6 1 -1. + <_> + 14 12 2 1 3. + <_> + + <_> + 15 10 2 2 -1. + <_> + 15 10 1 1 2. + <_> + 16 11 1 1 2. + <_> + + <_> + 3 11 3 8 -1. + <_> + 4 11 1 8 3. + <_> + + <_> + 6 1 4 12 -1. + <_> + 8 1 2 12 2. + <_> + + <_> + 6 3 4 8 -1. + <_> + 8 3 2 8 2. + <_> + + <_> + 8 4 6 12 -1. + <_> + 11 4 3 12 2. + <_> + + <_> + 16 12 4 5 -1. + <_> + 18 12 2 5 2. + <_> + + <_> + 14 9 2 3 -1. + <_> + 15 9 1 3 2. + <_> + + <_> + 9 7 10 6 -1. + <_> + 14 7 5 6 2. + <_> + + <_> + 12 7 3 11 -1. + <_> + 13 7 1 11 3. + <_> + + <_> + 19 16 1 2 -1. + <_> + 19 17 1 1 2. + <_> + + <_> + 8 15 12 1 -1. + <_> + 14 15 6 1 2. + <_> + + <_> + 10 15 6 3 -1. + <_> + 10 16 6 1 3. + <_> + + <_> + 6 8 10 4 -1. + <_> + 6 8 5 2 2. + <_> + 11 10 5 2 2. + <_> + + <_> + 10 15 1 3 -1. + <_> + 10 16 1 1 3. + <_> + + <_> + 10 1 9 12 -1. + <_> + 10 7 9 6 2. + <_> + + <_> + 10 1 1 4 -1. + <_> + 10 3 1 2 2. + <_> + + <_> + 1 5 18 4 -1. + <_> + 1 7 18 2 2. + <_> + + <_> + 6 4 12 6 -1. + <_> + 12 4 6 6 2. + <_> + + <_> + 13 1 7 3 -1. + <_> + 13 2 7 1 3. + <_> + + <_> + 14 0 6 4 -1. + <_> + 14 0 3 2 2. + <_> + 17 2 3 2 2. + <_> + + <_> + 9 12 3 3 -1. + <_> + 9 13 3 1 3. + <_> + + <_> + 5 14 8 4 -1. + <_> + 5 14 4 2 2. + <_> + 9 16 4 2 2. + <_> + + <_> + 1 6 14 14 -1. + <_> + 8 6 7 14 2. + <_> + + <_> + 13 4 6 2 -1. + <_> + 13 4 3 1 2. + <_> + 16 5 3 1 2. + <_> + + <_> + 8 7 6 6 -1. + <_> + 8 9 6 2 3. + <_> + + <_> + 8 0 12 20 -1. + <_> + 8 10 12 10 2. + <_> + + <_> + 9 8 4 3 -1. + <_> + 9 9 4 1 3. + <_> + + <_> + 10 18 8 2 -1. + <_> + 10 19 8 1 2. + <_> + + <_> + 9 12 4 2 -1. + <_> + 9 12 2 1 2. + <_> + 11 13 2 1 2. + <_> + + <_> + 4 14 2 2 -1. + <_> + 4 14 1 1 2. + <_> + 5 15 1 1 2. + <_> + + <_> + 5 14 3 2 -1. + <_> + 5 15 3 1 2. + <_> + + <_> + 11 1 6 3 -1. + <_> + 13 1 2 3 3. + <_> + + <_> + 6 14 2 3 -1. + <_> + 6 15 2 1 3. + <_> + + <_> + 14 1 2 2 -1. + <_> + 15 1 1 2 2. + <_> + + <_> + 0 13 6 7 -1. + <_> + 3 13 3 7 2. + <_> + + <_> + 17 11 3 1 -1. + <_> + 18 11 1 1 3. + <_> + + <_> + 5 10 8 4 -1. + <_> + 9 10 4 4 2. + <_> + + <_> + 7 16 8 4 -1. + <_> + 7 16 4 2 2. + <_> + 11 18 4 2 2. + <_> + + <_> + 11 16 4 3 -1. + <_> + 11 17 4 1 3. + <_> + + <_> + 3 10 6 2 -1. + <_> + 3 10 3 1 2. + <_> + 6 11 3 1 2. + <_> + + <_> + 11 7 3 2 -1. + <_> + 12 7 1 2 3. + <_> + + <_> + 8 7 9 2 -1. + <_> + 11 7 3 2 3. + <_> + + <_> + 13 6 3 10 -1. + <_> + 14 6 1 10 3. + <_> + + <_> + 15 10 4 3 -1. + <_> + 17 10 2 3 2. + <_> + + <_> + 1 10 6 10 -1. + <_> + 3 10 2 10 3. + <_> + + <_> + 5 0 2 2 -1. + <_> + 5 0 1 1 2. + <_> + 6 1 1 1 2. + <_> + + <_> + 3 11 3 6 -1. + <_> + 3 13 3 2 3. + <_> + + <_> + 4 6 9 10 -1. + <_> + 7 6 3 10 3. + <_> + + <_> + 6 10 9 5 -1. + <_> + 9 10 3 5 3. + <_> + + <_> + 10 5 3 9 -1. + <_> + 11 5 1 9 3. + <_> + + <_> + 3 7 3 4 -1. + <_> + 4 7 1 4 3. + <_> + + <_> + 4 6 2 2 -1. + <_> + 4 6 1 1 2. + <_> + 5 7 1 1 2. + <_> + + <_> + 0 2 2 3 -1. + <_> + 0 3 2 1 3. + <_> + + <_> + 12 0 8 4 -1. + <_> + 12 0 4 2 2. + <_> + 16 2 4 2 2. + <_> + + <_> + 11 1 8 2 -1. + <_> + 11 1 4 1 2. + <_> + 15 2 4 1 2. + <_> + + <_> + 12 2 7 3 -1. + <_> + 12 3 7 1 3. + <_> + + <_> + 3 6 3 2 -1. + <_> + 4 6 1 2 3. + <_> + + <_> + 4 6 4 6 -1. + <_> + 4 9 4 3 2. + <_> + + <_> + 13 12 6 4 -1. + <_> + 13 12 3 2 2. + <_> + 16 14 3 2 2. + <_> + + <_> + 13 10 2 4 -1. + <_> + 13 12 2 2 2. + <_> + + <_> + 15 12 3 3 -1. + <_> + 15 13 3 1 3. + <_> + + <_> + 14 14 2 3 -1. + <_> + 14 15 2 1 3. + <_> + + <_> + 18 4 2 8 -1. + <_> + 18 4 1 4 2. + <_> + 19 8 1 4 2. + <_> + + <_> + 7 14 2 4 -1. + <_> + 7 14 1 2 2. + <_> + 8 16 1 2 2. + <_> + + <_> + 14 3 6 6 -1. + <_> + 14 5 6 2 3. + <_> + + <_> + 19 7 1 2 -1. + <_> + 19 8 1 1 2. + <_> + + <_> + 8 8 6 2 -1. + <_> + 8 8 3 1 2. + <_> + 11 9 3 1 2. + <_> + + <_> + 19 6 1 3 -1. + <_> + 19 7 1 1 3. + <_> + + <_> + 7 8 7 3 -1. + <_> + 7 9 7 1 3. + <_> + + <_> + 18 6 2 6 -1. + <_> + 18 6 1 3 2. + <_> + 19 9 1 3 2. + <_> + + <_> + 5 8 8 6 -1. + <_> + 5 10 8 2 3. + <_> + + <_> + 1 1 18 15 -1. + <_> + 10 1 9 15 2. + <_> + + <_> + 11 7 5 4 -1. + <_> + 11 9 5 2 2. + <_> + + <_> + 10 12 2 3 -1. + <_> + 11 12 1 3 2. + <_> + + <_> + 0 7 2 4 -1. + <_> + 0 9 2 2 2. + <_> + + <_> + 6 12 4 2 -1. + <_> + 6 12 2 1 2. + <_> + 8 13 2 1 2. + <_> + + <_> + 7 7 6 8 -1. + <_> + 7 11 6 4 2. + <_> + + <_> + 9 9 2 4 -1. + <_> + 9 11 2 2 2. + <_> + + <_> + 9 10 6 6 -1. + <_> + 9 12 6 2 3. + <_> + + <_> + 12 13 4 2 -1. + <_> + 12 14 4 1 2. + <_> + + <_> + 0 4 8 1 -1. + <_> + 4 4 4 1 2. + <_> + + <_> + 14 13 1 2 -1. + <_> + 14 14 1 1 2. + <_> + + <_> + 8 7 2 6 -1. + <_> + 8 7 1 3 2. + <_> + 9 10 1 3 2. + <_> + + <_> + 5 8 10 6 -1. + <_> + 5 8 5 3 2. + <_> + 10 11 5 3 2. + <_> + + <_> + 5 12 3 3 -1. + <_> + 5 13 3 1 3. + <_> + + <_> + 5 10 2 2 -1. + <_> + 5 11 2 1 2. + <_> + + <_> + 6 2 4 15 -1. + <_> + 6 7 4 5 3. + <_> + + <_> + 7 6 2 4 -1. + <_> + 7 6 1 2 2. + <_> + 8 8 1 2 2. + <_> + + <_> + 5 9 2 3 -1. + <_> + 5 10 2 1 3. + <_> + + <_> + 15 16 2 2 -1. + <_> + 15 16 1 1 2. + <_> + 16 17 1 1 2. + <_> + + <_> + 4 11 4 6 -1. + <_> + 4 13 4 2 3. + <_> + + <_> + 5 0 3 6 -1. + <_> + 6 0 1 6 3. + <_> + + <_> + 4 11 12 4 -1. + <_> + 4 11 6 2 2. + <_> + 10 13 6 2 2. + <_> + + <_> + 7 13 3 3 -1. + <_> + 7 14 3 1 3. + <_> + + <_> + 9 12 6 2 -1. + <_> + 9 13 6 1 2. + <_> + + <_> + 8 0 12 8 -1. + <_> + 8 0 6 4 2. + <_> + 14 4 6 4 2. + <_> + + <_> + 10 8 4 4 -1. + <_> + 10 8 2 2 2. + <_> + 12 10 2 2 2. + <_> + + <_> + 12 10 1 6 -1. + <_> + 12 13 1 3 2. + <_> + + <_> + 5 5 3 10 -1. + <_> + 6 5 1 10 3. + <_> + + <_> + 4 0 14 6 -1. + <_> + 11 0 7 6 2. + <_> + + <_> + 9 7 2 6 -1. + <_> + 9 7 1 3 2. + <_> + 10 10 1 3 2. + <_> + + <_> + 8 4 3 1 -1. + <_> + 9 4 1 1 3. + <_> + + <_> + 11 14 2 2 -1. + <_> + 11 15 2 1 2. + <_> + + <_> + 9 18 6 2 -1. + <_> + 12 18 3 2 2. + <_> + + <_> + 8 12 8 6 -1. + <_> + 8 15 8 3 2. + <_> + + <_> + 7 0 8 6 -1. + <_> + 7 2 8 2 3. + <_> + + <_> + 1 2 12 3 -1. + <_> + 5 2 4 3 3. + <_> + + <_> + 5 4 10 12 -1. + <_> + 5 4 5 6 2. + <_> + 10 10 5 6 2. + <_> + + <_> + 5 8 3 2 -1. + <_> + 5 9 3 1 2. + <_> + + <_> + 7 12 1 3 -1. + <_> + 7 13 1 1 3. + <_> + + <_> + 5 11 3 3 -1. + <_> + 5 12 3 1 3. + <_> + + <_> + 8 10 6 9 -1. + <_> + 8 13 6 3 3. + <_> + + <_> + 7 8 3 6 -1. + <_> + 7 10 3 2 3. + <_> + + <_> + 3 4 3 14 -1. + <_> + 4 4 1 14 3. + <_> + + <_> + 3 10 3 6 -1. + <_> + 4 10 1 6 3. + <_> + + <_> + 4 8 2 2 -1. + <_> + 4 8 1 1 2. + <_> + 5 9 1 1 2. + <_> + + <_> + 10 13 2 3 -1. + <_> + 10 14 2 1 3. + <_> + + <_> + 6 14 8 4 -1. + <_> + 6 14 4 2 2. + <_> + 10 16 4 2 2. + <_> + + <_> + 5 12 3 4 -1. + <_> + 6 12 1 4 3. + <_> + + <_> + 17 11 2 2 -1. + <_> + 17 11 1 1 2. + <_> + 18 12 1 1 2. + <_> + + <_> + 15 6 1 10 -1. + <_> + 15 11 1 5 2. + <_> + + <_> + 7 1 12 6 -1. + <_> + 7 3 12 2 3. + <_> + + <_> + 4 9 2 4 -1. + <_> + 4 9 1 2 2. + <_> + 5 11 1 2 2. + <_> + + <_> + 6 7 6 12 -1. + <_> + 9 7 3 12 2. + <_> + + <_> + 7 6 2 3 -1. + <_> + 8 6 1 3 2. + <_> + + <_> + 0 1 1 3 -1. + <_> + 0 2 1 1 3. + <_> + + <_> + 0 1 1 3 -1. + <_> + 0 2 1 1 3. + <_> + + <_> + 11 15 3 5 -1. + <_> + 12 15 1 5 3. + <_> + + <_> + 8 6 4 6 -1. + <_> + 8 8 4 2 3. + <_> + + <_> + 5 3 3 12 -1. + <_> + 5 7 3 4 3. + <_> + + <_> + 7 9 2 2 -1. + <_> + 7 9 1 1 2. + <_> + 8 10 1 1 2. + <_> + + <_> + 4 4 2 12 -1. + <_> + 4 8 2 4 3. + <_> + + <_> + 4 5 7 3 -1. + <_> + 4 6 7 1 3. + <_> + + <_> + 13 5 2 3 -1. + <_> + 13 6 2 1 3. + <_> + + <_> + 4 0 2 2 -1. + <_> + 4 0 1 1 2. + <_> + 5 1 1 1 2. + <_> + + <_> + 11 8 3 11 -1. + <_> + 12 8 1 11 3. + <_> + + <_> + 4 0 2 2 -1. + <_> + 4 0 1 1 2. + <_> + 5 1 1 1 2. + <_> + + <_> + 9 3 2 2 -1. + <_> + 9 3 1 1 2. + <_> + 10 4 1 1 2. + <_> + + <_> + 7 11 3 2 -1. + <_> + 8 11 1 2 3. + <_> + + <_> + 11 12 2 1 -1. + <_> + 12 12 1 1 2. + <_> + + <_> + 8 8 4 2 -1. + <_> + 10 8 2 2 2. + <_> + + <_> + 17 15 3 1 -1. + <_> + 18 15 1 1 3. + <_> + + <_> + 12 6 2 4 -1. + <_> + 12 6 1 2 2. + <_> + 13 8 1 2 2. + <_> + + <_> + 8 3 9 11 -1. + <_> + 11 3 3 11 3. + <_> + + <_> + 10 8 2 2 -1. + <_> + 11 8 1 2 2. + <_> + + <_> + 12 5 3 9 -1. + <_> + 12 8 3 3 3. + <_> + + <_> + 13 0 6 17 -1. + <_> + 15 0 2 17 3. + <_> + + <_> + 6 6 3 4 -1. + <_> + 7 6 1 4 3. + <_> + + <_> + 5 6 4 7 -1. + <_> + 7 6 2 7 2. + <_> + + <_> + 7 5 3 2 -1. + <_> + 8 5 1 2 3. + <_> + + <_> + 7 15 6 2 -1. + <_> + 7 15 3 1 2. + <_> + 10 16 3 1 2. + <_> + + <_> + 11 14 1 3 -1. + <_> + 11 15 1 1 3. + <_> + + <_> + 2 12 6 7 -1. + <_> + 4 12 2 7 3. + <_> + + <_> + 11 17 5 3 -1. + <_> + 11 18 5 1 3. + <_> + + <_> + 17 11 2 2 -1. + <_> + 17 11 1 1 2. + <_> + 18 12 1 1 2. + <_> + + <_> + 10 17 6 3 -1. + <_> + 10 18 6 1 3. + <_> + + <_> + 2 15 1 2 -1. + <_> + 2 16 1 1 2. + <_> + + <_> + 8 6 3 3 -1. + <_> + 8 7 3 1 3. + <_> + + <_> + 7 7 1 2 -1. + <_> + 7 8 1 1 2. + <_> + + <_> + 2 15 2 2 -1. + <_> + 2 16 2 1 2. + <_> + + <_> + 3 16 3 1 -1. + <_> + 4 16 1 1 3. + <_> + + <_> + 3 0 3 20 -1. + <_> + 4 0 1 20 3. + <_> + + <_> + 8 2 12 12 -1. + <_> + 14 2 6 12 2. + <_> + + <_> + 5 3 2 3 -1. + <_> + 5 4 2 1 3. + <_> + + <_> + 3 4 2 2 -1. + <_> + 3 4 1 1 2. + <_> + 4 5 1 1 2. + <_> + + <_> + 0 15 20 3 -1. + <_> + 10 15 10 3 2. + <_> + + <_> + 6 13 2 4 -1. + <_> + 6 13 1 2 2. + <_> + 7 15 1 2 2. + <_> + + <_> + 12 8 3 7 -1. + <_> + 13 8 1 7 3. + <_> + + <_> + 8 9 6 10 -1. + <_> + 8 9 3 5 2. + <_> + 11 14 3 5 2. + <_> + + <_> + 2 10 16 2 -1. + <_> + 10 10 8 2 2. + <_> + + <_> + 5 3 15 6 -1. + <_> + 10 3 5 6 3. + <_> + + <_> + 10 14 2 1 -1. + <_> + 11 14 1 1 2. + <_> + + <_> + 9 11 4 4 -1. + <_> + 11 11 2 4 2. + <_> + + <_> + 12 8 2 4 -1. + <_> + 12 10 2 2 2. + <_> + + <_> + 1 3 10 14 -1. + <_> + 1 3 5 7 2. + <_> + 6 10 5 7 2. + <_> + + <_> + 8 0 3 4 -1. + <_> + 8 2 3 2 2. + <_> + + <_> + 10 2 2 1 -1. + <_> + 11 2 1 1 2. + <_> + + <_> + 5 12 5 3 -1. + <_> + 5 13 5 1 3. + <_> + + <_> + 7 12 1 3 -1. + <_> + 7 13 1 1 3. + <_> + + <_> + 10 12 6 3 -1. + <_> + 10 13 6 1 3. + <_> + + <_> + 6 4 1 3 -1. + <_> + 6 5 1 1 3. + <_> + + <_> + 2 0 18 3 -1. + <_> + 2 1 18 1 3. + <_> + + <_> + 8 8 11 6 -1. + <_> + 8 10 11 2 3. + <_> + + <_> + 2 6 10 8 -1. + <_> + 2 6 5 4 2. + <_> + 7 10 5 4 2. + <_> + + <_> + 9 2 6 2 -1. + <_> + 11 2 2 2 3. + <_> + + <_> + 13 9 6 3 -1. + <_> + 15 9 2 3 3. + <_> + + <_> + 5 3 1 2 -1. + <_> + 5 4 1 1 2. + <_> + + <_> + 1 7 3 1 -1. + <_> + 2 7 1 1 3. + <_> + + <_> + 0 6 8 6 -1. + <_> + 4 6 4 6 2. + <_> + + <_> + 11 9 1 2 -1. + <_> + 11 10 1 1 2. + <_> + + <_> + 12 13 1 2 -1. + <_> + 12 14 1 1 2. + <_> + + <_> + 10 15 10 4 -1. + <_> + 10 15 5 2 2. + <_> + 15 17 5 2 2. + <_> + + <_> + 12 11 1 2 -1. + <_> + 12 12 1 1 2. + <_> + + <_> + 6 11 2 1 -1. + <_> + 7 11 1 1 2. + <_> + + <_> + 11 3 3 2 -1. + <_> + 12 3 1 2 3. + <_> + + <_> + 4 7 6 5 -1. + <_> + 7 7 3 5 2. + <_> + + <_> + 3 16 3 1 -1. + <_> + 4 16 1 1 3. + <_> + + <_> + 4 7 6 5 -1. + <_> + 7 7 3 5 2. + <_> + + <_> + 5 7 6 3 -1. + <_> + 7 7 2 3 3. + <_> + + <_> + 7 8 4 8 -1. + <_> + 7 8 2 4 2. + <_> + 9 12 2 4 2. + <_> + + <_> + 4 2 14 12 -1. + <_> + 4 6 14 4 3. + <_> + + <_> + 4 14 2 6 -1. + <_> + 4 14 1 3 2. + <_> + 5 17 1 3 2. + <_> + + <_> + 7 11 2 4 -1. + <_> + 7 13 2 2 2. + <_> + + <_> + 6 4 10 15 -1. + <_> + 6 9 10 5 3. + <_> + + <_> + 6 11 12 6 -1. + <_> + 6 13 12 2 3. + <_> + + <_> + 6 17 4 3 -1. + <_> + 6 18 4 1 3. + <_> + + <_> + 6 17 4 3 -1. + <_> + 6 18 4 1 3. + <_> + + <_> + 9 13 3 7 -1. + <_> + 10 13 1 7 3. + <_> + + <_> + 2 8 5 2 -1. + <_> + 2 9 5 1 2. + <_> + + <_> + 14 1 3 8 -1. + <_> + 15 1 1 8 3. + <_> + + <_> + 2 12 1 2 -1. + <_> + 2 13 1 1 2. + <_> + + <_> + 8 6 2 2 -1. + <_> + 8 6 1 1 2. + <_> + 9 7 1 1 2. + <_> + + <_> + 4 3 10 12 -1. + <_> + 4 9 10 6 2. + <_> + + <_> + 5 9 8 4 -1. + <_> + 5 9 4 2 2. + <_> + 9 11 4 2 2. + <_> + + <_> + 9 9 4 4 -1. + <_> + 9 11 4 2 2. + <_> + + <_> + 5 10 4 2 -1. + <_> + 5 11 4 1 2. + <_> + + <_> + 6 17 2 1 -1. + <_> + 7 17 1 1 2. + <_> + + <_> + 12 12 2 1 -1. + <_> + 13 12 1 1 2. + <_> + + <_> + 11 6 4 8 -1. + <_> + 13 6 2 8 2. + <_> + + <_> + 9 4 3 10 -1. + <_> + 10 4 1 10 3. + <_> + + <_> + 0 18 9 2 -1. + <_> + 3 18 3 2 3. + <_> + + <_> + 15 13 3 3 -1. + <_> + 15 14 3 1 3. + <_> + + <_> + 9 12 2 2 -1. + <_> + 9 12 1 1 2. + <_> + 10 13 1 1 2. + <_> + + <_> + 13 12 7 3 -1. + <_> + 13 13 7 1 3. + <_> + + <_> + 14 10 6 2 -1. + <_> + 14 11 6 1 2. + <_> + + <_> + 14 5 5 14 -1. + <_> + 14 12 5 7 2. + <_> + + <_> + 4 16 5 3 -1. + <_> + 4 17 5 1 3. + <_> + + <_> + 5 16 5 3 -1. + <_> + 5 17 5 1 3. + <_> + + <_> + 8 14 4 5 -1. + <_> + 10 14 2 5 2. + <_> + + <_> + 9 14 2 1 -1. + <_> + 10 14 1 1 2. + <_> + + <_> + 6 10 6 2 -1. + <_> + 6 10 3 1 2. + <_> + 9 11 3 1 2. + <_> + + <_> + 5 8 6 6 -1. + <_> + 8 8 3 6 2. + <_> + + <_> + 10 13 7 6 -1. + <_> + 10 15 7 2 3. + <_> + + <_> + 4 1 2 8 -1. + <_> + 4 1 1 4 2. + <_> + 5 5 1 4 2. + <_> + + <_> + 3 6 6 4 -1. + <_> + 3 6 3 2 2. + <_> + 6 8 3 2 2. + <_> + + <_> + 15 2 3 13 -1. + <_> + 16 2 1 13 3. + <_> + + <_> + 16 10 2 6 -1. + <_> + 16 10 1 3 2. + <_> + 17 13 1 3 2. + <_> + + <_> + 13 19 2 1 -1. + <_> + 14 19 1 1 2. + <_> + + <_> + 7 11 2 1 -1. + <_> + 8 11 1 1 2. + <_> + + <_> + 4 10 3 4 -1. + <_> + 5 10 1 4 3. + <_> + + <_> + 4 7 2 4 -1. + <_> + 4 7 1 2 2. + <_> + 5 9 1 2 2. + <_> + + <_> + 10 7 5 4 -1. + <_> + 10 9 5 2 2. + <_> + + <_> + 7 4 8 16 -1. + <_> + 7 4 4 8 2. + <_> + 11 12 4 8 2. + <_> + + <_> + 5 9 10 6 -1. + <_> + 5 9 5 3 2. + <_> + 10 12 5 3 2. + <_> + + <_> + 5 11 3 2 -1. + <_> + 5 12 3 1 2. + <_> + + <_> + 12 12 4 8 -1. + <_> + 12 16 4 4 2. + <_> + + <_> + 8 13 6 2 -1. + <_> + 8 14 6 1 2. + <_> + + <_> + 3 12 5 6 -1. + <_> + 3 14 5 2 3. + <_> + + <_> + 16 0 2 2 -1. + <_> + 16 0 1 1 2. + <_> + 17 1 1 1 2. + <_> + + <_> + 13 3 3 4 -1. + <_> + 14 3 1 4 3. + <_> + + <_> + 15 11 3 1 -1. + <_> + 16 11 1 1 3. + <_> + + <_> + 14 0 6 5 -1. + <_> + 16 0 2 5 3. + <_> + + <_> + 10 1 8 18 -1. + <_> + 10 10 8 9 2. + <_> + + <_> + 11 5 3 2 -1. + <_> + 11 6 3 1 2. + <_> + + <_> + 5 5 2 1 -1. + <_> + 6 5 1 1 2. + <_> + + <_> + 3 4 3 3 -1. + <_> + 4 4 1 3 3. + <_> + + <_> + 11 14 1 3 -1. + <_> + 11 15 1 1 3. + <_> + + <_> + 16 13 3 3 -1. + <_> + 16 14 3 1 3. + <_> + + <_> + 15 8 5 12 -1. + <_> + 15 14 5 6 2. + <_> + + <_> + 3 0 3 10 -1. + <_> + 4 0 1 10 3. + <_> + + <_> + 15 15 1 2 -1. + <_> + 15 16 1 1 2. + <_> + + <_> + 15 0 4 2 -1. + <_> + 15 0 2 1 2. + <_> + 17 1 2 1 2. + <_> + + <_> + 17 2 2 1 -1. + <_> + 18 2 1 1 2. + <_> + + <_> + 8 13 1 3 -1. + <_> + 8 14 1 1 3. + <_> + + <_> + 9 1 2 6 -1. + <_> + 9 1 1 3 2. + <_> + 10 4 1 3 2. + <_> + + <_> + 1 12 9 3 -1. + <_> + 1 13 9 1 3. + <_> + + <_> + 12 14 3 3 -1. + <_> + 12 15 3 1 3. + <_> + + <_> + 15 10 3 1 -1. + <_> + 16 10 1 1 3. + <_> + + <_> + 9 6 9 1 -1. + <_> + 12 6 3 1 3. + <_> + + <_> + 12 5 3 7 -1. + <_> + 13 5 1 7 3. + <_> + + <_> + 8 2 2 2 -1. + <_> + 8 3 2 1 2. + <_> + + <_> + 7 0 9 2 -1. + <_> + 7 1 9 1 2. + <_> + + <_> + 13 5 2 5 -1. + <_> + 14 5 1 5 2. + <_> + + <_> + 14 2 3 6 -1. + <_> + 15 2 1 6 3. + <_> + + <_> + 8 6 4 3 -1. + <_> + 8 7 4 1 3. + <_> + + <_> + 6 8 1 9 -1. + <_> + 6 11 1 3 3. + <_> + + <_> + 3 9 7 6 -1. + <_> + 3 11 7 2 3. + <_> + + <_> + 6 6 2 3 -1. + <_> + 6 7 2 1 3. + <_> + + <_> + 5 9 3 1 -1. + <_> + 6 9 1 1 3. + <_> + + <_> + 4 5 4 4 -1. + <_> + 4 5 2 2 2. + <_> + 6 7 2 2 2. + <_> + + <_> + 8 5 2 3 -1. + <_> + 8 6 2 1 3. + <_> + + <_> + 5 6 4 7 -1. + <_> + 7 6 2 7 2. + <_> + + <_> + 10 8 3 5 -1. + <_> + 11 8 1 5 3. + <_> + + <_> + 11 4 3 13 -1. + <_> + 12 4 1 13 3. + <_> + + <_> + 2 13 3 3 -1. + <_> + 3 13 1 3 3. + <_> + + <_> + 4 8 3 2 -1. + <_> + 5 8 1 2 3. + <_> + + <_> + 0 4 1 3 -1. + <_> + 0 5 1 1 3. + <_> + + <_> + 7 6 6 6 -1. + <_> + 9 6 2 6 3. + <_> + + <_> + 7 7 4 12 -1. + <_> + 9 7 2 12 2. + <_> + + <_> + 6 12 6 3 -1. + <_> + 9 12 3 3 2. + <_> + + <_> + 8 6 9 12 -1. + <_> + 8 10 9 4 3. + <_> + + <_> + 11 0 3 15 -1. + <_> + 11 5 3 5 3. + <_> + + <_> + 8 16 6 4 -1. + <_> + 8 16 3 2 2. + <_> + 11 18 3 2 2. + <_> + + <_> + 6 5 10 6 -1. + <_> + 6 7 10 2 3. + <_> + + <_> + 2 12 3 4 -1. + <_> + 3 12 1 4 3. + <_> + + <_> + 9 13 4 3 -1. + <_> + 9 14 4 1 3. + <_> + + <_> + 3 0 4 6 -1. + <_> + 3 0 2 3 2. + <_> + 5 3 2 3 2. + <_> + + <_> + 5 9 6 1 -1. + <_> + 8 9 3 1 2. + <_> + + <_> + 11 14 2 3 -1. + <_> + 11 15 2 1 3. + <_> + + <_> + 5 8 2 1 -1. + <_> + 6 8 1 1 2. + <_> + + <_> + 17 0 3 12 -1. + <_> + 17 4 3 4 3. + <_> + + <_> + 10 13 3 6 -1. + <_> + 11 13 1 6 3. + <_> + + <_> + 10 13 3 7 -1. + <_> + 11 13 1 7 3. + <_> + + <_> + 6 5 6 1 -1. + <_> + 8 5 2 1 3. + <_> + + <_> + 18 2 2 8 -1. + <_> + 19 2 1 8 2. + <_> + + <_> + 5 8 3 1 -1. + <_> + 6 8 1 1 3. + <_> + + <_> + 8 7 4 6 -1. + <_> + 8 7 2 3 2. + <_> + 10 10 2 3 2. + <_> + + <_> + 8 3 2 2 -1. + <_> + 8 3 1 1 2. + <_> + 9 4 1 1 2. + <_> + + <_> + 18 5 2 3 -1. + <_> + 18 6 2 1 3. + <_> + + <_> + 17 7 3 4 -1. + <_> + 18 7 1 4 3. + <_> + + <_> + 8 2 2 4 -1. + <_> + 8 2 1 2 2. + <_> + 9 4 1 2 2. + <_> + + <_> + 4 6 2 2 -1. + <_> + 5 6 1 2 2. + <_> + + <_> + 4 8 3 1 -1. + <_> + 5 8 1 1 3. + <_> + + <_> + 10 9 9 10 -1. + <_> + 10 14 9 5 2. + <_> + + <_> + 6 4 3 1 -1. + <_> + 7 4 1 1 3. + <_> + + <_> + 8 14 1 3 -1. + <_> + 8 15 1 1 3. + <_> + + <_> + 6 4 2 1 -1. + <_> + 7 4 1 1 2. + <_> + + <_> + 5 9 3 9 -1. + <_> + 5 12 3 3 3. + <_> + + <_> + 5 13 7 3 -1. + <_> + 5 14 7 1 3. + <_> + + <_> + 9 6 2 10 -1. + <_> + 9 6 1 5 2. + <_> + 10 11 1 5 2. + <_> + + <_> + 13 1 3 18 -1. + <_> + 13 10 3 9 2. + <_> + + <_> + 5 13 2 3 -1. + <_> + 5 14 2 1 3. + <_> + + <_> + 9 10 3 7 -1. + <_> + 10 10 1 7 3. + <_> + + <_> + 17 0 3 13 -1. + <_> + 18 0 1 13 3. + <_> + + <_> + 13 6 1 2 -1. + <_> + 13 7 1 1 2. + <_> + + <_> + 6 15 3 2 -1. + <_> + 7 15 1 2 3. + <_> + + <_> + 5 14 2 3 -1. + <_> + 5 15 2 1 3. + <_> + + <_> + 16 6 1 6 -1. + <_> + 16 8 1 2 3. + <_> + + <_> + 0 6 2 2 -1. + <_> + 1 6 1 2 2. + <_> + + <_> + 3 12 4 8 -1. + <_> + 3 12 2 4 2. + <_> + 5 16 2 4 2. + <_> + + <_> + 6 2 2 8 -1. + <_> + 7 2 1 8 2. + <_> + + <_> + 6 7 2 6 -1. + <_> + 6 7 1 3 2. + <_> + 7 10 1 3 2. + <_> + + <_> + 5 12 4 2 -1. + <_> + 7 12 2 2 2. + <_> + + <_> + 4 9 13 2 -1. + <_> + 4 10 13 1 2. + <_> + + <_> + 19 5 1 2 -1. + <_> + 19 6 1 1 2. + <_> + + <_> + 4 8 9 1 -1. + <_> + 7 8 3 1 3. + <_> + + <_> + 8 8 2 1 -1. + <_> + 9 8 1 1 2. + <_> + + <_> + 3 0 2 10 -1. + <_> + 3 5 2 5 2. + <_> + + <_> + 6 2 2 1 -1. + <_> + 7 2 1 1 2. + <_> + + <_> + 14 5 3 3 -1. + <_> + 15 5 1 3 3. + <_> + + <_> + 4 8 2 2 -1. + <_> + 4 8 1 1 2. + <_> + 5 9 1 1 2. + <_> + + <_> + 8 16 9 2 -1. + <_> + 8 17 9 1 2. + <_> + + <_> + 6 7 2 3 -1. + <_> + 6 8 2 1 3. + <_> + + <_> + 12 11 2 2 -1. + <_> + 12 11 1 1 2. + <_> + 13 12 1 1 2. + <_> + + <_> + 15 9 2 4 -1. + <_> + 15 11 2 2 2. + <_> + + <_> + 5 11 2 3 -1. + <_> + 5 12 2 1 3. + <_> + + <_> + 6 11 2 3 -1. + <_> + 6 12 2 1 3. + <_> + + <_> + 6 12 1 6 -1. + <_> + 6 15 1 3 2. + <_> + + <_> + 6 9 5 9 -1. + <_> + 6 12 5 3 3. + <_> + + <_> + 8 11 2 2 -1. + <_> + 8 12 2 1 2. + <_> + + <_> + 8 10 4 2 -1. + <_> + 10 10 2 2 2. + <_> + + <_> + 8 10 4 6 -1. + <_> + 8 10 2 3 2. + <_> + 10 13 2 3 2. + <_> + + <_> + 2 0 9 20 -1. + <_> + 5 0 3 20 3. + <_> + + <_> + 12 3 2 4 -1. + <_> + 12 3 1 2 2. + <_> + 13 5 1 2 2. + <_> + + <_> + 15 0 2 10 -1. + <_> + 16 0 1 10 2. + <_> + + <_> + 13 7 3 4 -1. + <_> + 14 7 1 4 3. + <_> + + <_> + 14 10 1 2 -1. + <_> + 14 11 1 1 2. + <_> + + <_> + 16 11 3 1 -1. + <_> + 17 11 1 1 3. + <_> + + <_> + 16 11 2 2 -1. + <_> + 16 11 1 1 2. + <_> + 17 12 1 1 2. + <_> + + <_> + 13 12 6 1 -1. + <_> + 15 12 2 1 3. + <_> + + <_> + 3 2 14 9 -1. + <_> + 10 2 7 9 2. + <_> + + <_> + 5 4 12 2 -1. + <_> + 11 4 6 2 2. + <_> + + <_> + 13 6 2 1 -1. + <_> + 14 6 1 1 2. + <_> + + <_> + 7 10 3 3 -1. + <_> + 7 11 3 1 3. + <_> + + <_> + 16 17 4 2 -1. + <_> + 18 17 2 2 2. + <_> + + <_> + 4 12 8 8 -1. + <_> + 4 12 4 4 2. + <_> + 8 16 4 4 2. + <_> + + <_> + 14 8 4 5 -1. + <_> + 16 8 2 5 2. + <_> + + <_> + 11 8 6 2 -1. + <_> + 13 8 2 2 3. + <_> + + <_> + 4 5 16 5 -1. + <_> + 12 5 8 5 2. + <_> + + <_> + 14 9 6 10 -1. + <_> + 16 9 2 10 3. + <_> + + <_> + 4 18 3 1 -1. + <_> + 5 18 1 1 3. + <_> + + <_> + 4 13 4 4 -1. + <_> + 4 13 2 2 2. + <_> + 6 15 2 2 2. + <_> + + <_> + 6 15 2 3 -1. + <_> + 6 16 2 1 3. + <_> + + <_> + 6 15 1 3 -1. + <_> + 6 16 1 1 3. + <_> + + <_> + 7 17 3 1 -1. + <_> + 8 17 1 1 3. + <_> + + <_> + 7 17 3 1 -1. + <_> + 8 17 1 1 3. + <_> + + <_> + 9 10 4 1 -1. + <_> + 11 10 2 1 2. + <_> + + <_> + 11 12 2 1 -1. + <_> + 12 12 1 1 2. + <_> + + <_> + 7 8 1 6 -1. + <_> + 7 11 1 3 2. + <_> + + <_> + 6 7 3 3 -1. + <_> + 7 7 1 3 3. + <_> + + <_> + 13 10 1 3 -1. + <_> + 13 11 1 1 3. + <_> + + <_> + 5 8 2 4 -1. + <_> + 5 10 2 2 2. + <_> + + <_> + 5 8 6 6 -1. + <_> + 8 8 3 6 2. + <_> + + <_> + 6 5 4 13 -1. + <_> + 8 5 2 13 2. + <_> + + <_> + 8 4 10 8 -1. + <_> + 8 4 5 4 2. + <_> + 13 8 5 4 2. + <_> + + <_> + 8 3 9 6 -1. + <_> + 11 3 3 6 3. + <_> + + <_> + 11 0 6 3 -1. + <_> + 13 0 2 3 3. + <_> + + <_> + 11 1 3 15 -1. + <_> + 12 1 1 15 3. + <_> + + <_> + 4 8 14 9 -1. + <_> + 4 11 14 3 3. + <_> + + <_> + 11 2 1 16 -1. + <_> + 11 10 1 8 2. + <_> + + <_> + 12 1 2 14 -1. + <_> + 12 8 2 7 2. + <_> + + <_> + 11 1 3 4 -1. + <_> + 12 1 1 4 3. + <_> + + <_> + 9 8 4 2 -1. + <_> + 9 8 2 1 2. + <_> + 11 9 2 1 2. + <_> + + <_> + 17 3 2 2 -1. + <_> + 18 3 1 2 2. + <_> + + <_> + 2 6 3 2 -1. + <_> + 3 6 1 2 3. + <_> + + <_> + 9 8 2 2 -1. + <_> + 9 9 2 1 2. + <_> + + <_> + 6 15 6 1 -1. + <_> + 8 15 2 1 3. + <_> + + <_> + 16 10 2 4 -1. + <_> + 16 10 1 2 2. + <_> + 17 12 1 2 2. + <_> + + <_> + 6 6 10 6 -1. + <_> + 6 6 5 3 2. + <_> + 11 9 5 3 2. + <_> + + <_> + 13 8 3 3 -1. + <_> + 13 9 3 1 3. + <_> + + <_> + 13 0 4 2 -1. + <_> + 13 0 2 1 2. + <_> + 15 1 2 1 2. + <_> + + <_> + 10 0 10 2 -1. + <_> + 10 0 5 1 2. + <_> + 15 1 5 1 2. + <_> + + <_> + 13 13 2 1 -1. + <_> + 14 13 1 1 2. + <_> + + <_> + 4 9 2 2 -1. + <_> + 4 9 1 1 2. + <_> + 5 10 1 1 2. + <_> + + <_> + 6 8 2 3 -1. + <_> + 6 9 2 1 3. + <_> + + <_> + 2 12 2 3 -1. + <_> + 2 13 2 1 3. + <_> + + <_> + 2 0 10 2 -1. + <_> + 2 0 5 1 2. + <_> + 7 1 5 1 2. + <_> + + <_> + 6 2 2 2 -1. + <_> + 6 3 2 1 2. + <_> + + <_> + 5 10 8 2 -1. + <_> + 5 11 8 1 2. + <_> + + <_> + 11 7 5 10 -1. + <_> + 11 12 5 5 2. + <_> + + <_> + 5 10 4 3 -1. + <_> + 5 11 4 1 3. + <_> + + <_> + 9 6 6 12 -1. + <_> + 9 12 6 6 2. + <_> + + <_> + 16 10 3 5 -1. + <_> + 17 10 1 5 3. + <_> + + <_> + 15 12 2 4 -1. + <_> + 15 12 1 2 2. + <_> + 16 14 1 2 2. + <_> + + <_> + 8 0 12 8 -1. + <_> + 8 0 6 4 2. + <_> + 14 4 6 4 2. + <_> + + <_> + 14 1 5 3 -1. + <_> + 14 2 5 1 3. + <_> + + <_> + 2 2 3 6 -1. + <_> + 3 2 1 6 3. + <_> + + <_> + 6 5 2 2 -1. + <_> + 7 5 1 2 2. + <_> + + <_> + 7 12 12 1 -1. + <_> + 11 12 4 1 3. + <_> + + <_> + 13 9 7 2 -1. + <_> + 13 10 7 1 2. + <_> + + <_> + 5 10 1 3 -1. + <_> + 5 11 1 1 3. + <_> + + <_> + 0 4 15 2 -1. + <_> + 5 4 5 2 3. + <_> + + <_> + 3 0 9 13 -1. + <_> + 6 0 3 13 3. + <_> + + <_> + 5 10 6 2 -1. + <_> + 7 10 2 2 3. + <_> + + <_> + 8 3 4 2 -1. + <_> + 8 3 2 1 2. + <_> + 10 4 2 1 2. + <_> + + <_> + 8 7 2 6 -1. + <_> + 8 7 1 3 2. + <_> + 9 10 1 3 2. + <_> + + <_> + 8 7 2 3 -1. + <_> + 9 7 1 3 2. + <_> + + <_> + 5 11 3 3 -1. + <_> + 6 11 1 3 3. + <_> + + <_> + 0 1 1 2 -1. + <_> + 0 2 1 1 2. + <_> + + <_> + 7 0 1 6 -1. + <_> + 7 2 1 2 3. + <_> + + <_> + 14 0 2 5 -1. + <_> + 15 0 1 5 2. + <_> + + <_> + 3 2 12 1 -1. + <_> + 7 2 4 1 3. + <_> + + <_> + 11 13 5 2 -1. + <_> + 11 14 5 1 2. + <_> + + <_> + 13 14 1 3 -1. + <_> + 13 15 1 1 3. + <_> + + <_> + 7 17 12 2 -1. + <_> + 11 17 4 2 3. + <_> + + <_> + 0 0 13 20 -1. + <_> + 0 10 13 10 2. + <_> + + <_> + 4 7 10 12 -1. + <_> + 4 13 10 6 2. + <_> + + <_> + 10 12 2 2 -1. + <_> + 11 12 1 2 2. + <_> + + <_> + 9 11 4 4 -1. + <_> + 11 11 2 4 2. + <_> + + <_> + 4 9 16 5 -1. + <_> + 12 9 8 5 2. + <_> + + <_> + 16 9 2 4 -1. + <_> + 17 9 1 4 2. + <_> + + <_> + 15 9 3 1 -1. + <_> + 16 9 1 1 3. + <_> + + <_> + 14 3 4 11 -1. + <_> + 16 3 2 11 2. + <_> + + <_> + 4 3 10 10 -1. + <_> + 4 3 5 5 2. + <_> + 9 8 5 5 2. + <_> + + <_> + 16 9 3 1 -1. + <_> + 17 9 1 1 3. + <_> + + <_> + 6 4 14 9 -1. + <_> + 6 7 14 3 3. + <_> + + <_> + 8 11 2 4 -1. + <_> + 8 13 2 2 2. + <_> + + <_> + 5 9 6 8 -1. + <_> + 5 9 3 4 2. + <_> + 8 13 3 4 2. + <_> + + <_> + 5 11 4 4 -1. + <_> + 5 13 4 2 2. + <_> + + <_> + 7 14 1 3 -1. + <_> + 7 15 1 1 3. + <_> + + <_> + 9 10 3 1 -1. + <_> + 10 10 1 1 3. + <_> + + <_> + 4 8 2 4 -1. + <_> + 4 8 1 2 2. + <_> + 5 10 1 2 2. + <_> + + <_> + 14 6 2 5 -1. + <_> + 15 6 1 5 2. + <_> + + <_> + 13 7 6 7 -1. + <_> + 15 7 2 7 3. + <_> + + <_> + 15 6 4 7 -1. + <_> + 17 6 2 7 2. + <_> + + <_> + 9 11 6 5 -1. + <_> + 11 11 2 5 3. + <_> + + <_> + 0 8 20 4 -1. + <_> + 10 8 10 4 2. + <_> + + <_> + 1 2 8 14 -1. + <_> + 1 2 4 7 2. + <_> + 5 9 4 7 2. + <_> + + <_> + 10 13 3 1 -1. + <_> + 11 13 1 1 3. + <_> + + <_> + 7 0 6 4 -1. + <_> + 9 0 2 4 3. + <_> + + <_> + 7 14 6 2 -1. + <_> + 7 14 3 1 2. + <_> + 10 15 3 1 2. + diff --git a/venv/lib/python3.11/site-packages/cv2/data/haarcascade_righteye_2splits.xml b/venv/lib/python3.11/site-packages/cv2/data/haarcascade_righteye_2splits.xml new file mode 100644 index 0000000000000000000000000000000000000000..db4571cde604f8089dc563a5d5652b79e246483d --- /dev/null +++ b/venv/lib/python3.11/site-packages/cv2/data/haarcascade_righteye_2splits.xml @@ -0,0 +1,7407 @@ + + + +BOOST + HAAR + 20 + 20 + + 34 + + 0 + 20 + + <_> + 5 + -2.2325520515441895e+00 + + <_> + + 1 0 0 -4.8210550099611282e-02 -1 -2 1 + -4.1576199233531952e-02 + + -8.6140447854995728e-01 9.1769057512283325e-01 + -2.1284009516239166e-01 + <_> + + 0 1 2 9.3528684228658676e-03 -1 -2 3 -2.2144919785205275e-04 + + -6.9785767793655396e-01 7.9523372650146484e-01 + -4.8948091268539429e-01 + <_> + + 0 1 4 -2.1853350102901459e-02 -1 -2 5 9.9672928452491760e-02 + + 7.0574641227722168e-01 -7.0666241645812988e-01 + 7.9210978746414185e-01 + <_> + + 1 0 6 -2.1664820611476898e-02 -1 -2 7 + -7.5680727604776621e-04 + + -6.0898607969284058e-01 7.1685701608657837e-01 + -3.0464568734169006e-01 + <_> + + 1 0 8 -1.3333049602806568e-02 -1 -2 9 9.2925298959016800e-03 + + -4.6844691038131714e-01 6.4235931634902954e-01 + -5.1180428266525269e-01 + <_> + 5 + -2.1598019599914551e+00 + + <_> + + 0 1 10 -3.3948719501495361e-01 -1 -2 11 + -1.3672479987144470e-01 + + 7.7913260459899902e-01 2.6421278715133667e-01 + -8.7910091876983643e-01 + <_> + + 0 1 12 3.1394500285387039e-02 -1 -2 13 + -1.0828140191733837e-02 + + -6.9956701993942261e-01 7.6504492759704590e-01 + -4.3719211220741272e-01 + <_> + + 1 0 14 -4.2506768368184566e-03 -1 -2 15 + -2.2675469517707825e-02 + + -5.7561582326889038e-01 7.4080592393875122e-01 + -3.6677250266075134e-01 + <_> + + 1 0 16 3.9161480963230133e-02 -1 -2 17 + -3.1934089493006468e-03 + + 6.4045161008834839e-01 1.6047589480876923e-01 + -7.1010977029800415e-01 + <_> + + 1 0 18 2.5321990251541138e-02 -1 -2 19 + 7.7583367237821221e-04 + + 4.9574860930442810e-01 -7.1737897396087646e-01 + -1.8581770360469818e-02 + <_> + 8 + -2.3451159000396729e+00 + + <_> + + 1 0 20 -2.6554059982299805e-01 -1 -2 21 + -2.2532779723405838e-02 + + -8.4712451696395874e-01 8.7977188825607300e-01 + -3.3394691348075867e-01 + <_> + + 0 1 22 8.5310067515820265e-04 -1 -2 23 + 1.5820249973330647e-04 + + -8.2032448053359985e-01 -7.5176358222961426e-01 + 6.7769712209701538e-01 + <_> + + 1 0 24 -1.0837490117410198e-04 -1 -2 25 + 2.6810260023921728e-03 + + -8.3314001560211182e-01 5.3844749927520752e-01 + -7.6534157991409302e-01 + <_> + + 0 1 26 8.5202371701598167e-04 -1 -2 27 + -1.2241739779710770e-02 + + -7.7514898777008057e-01 6.3240152597427368e-01 + -6.3395208120346069e-01 + <_> + + 1 0 28 6.2314196838997304e-05 -1 -2 29 + -7.1911108493804932e-01 + + 4.4290411472320557e-01 8.0135929584503174e-01 + -5.3431099653244019e-01 + <_> + + 1 0 30 -2.4280339479446411e-02 -1 -2 31 + 3.4558640327304602e-03 + + -6.7797917127609253e-01 4.9030610918998718e-01 + -8.8447982072830200e-01 + <_> + + 1 0 32 -6.2993327446747571e-05 -1 -2 33 + -4.6443562023341656e-03 + + -5.7883417606353760e-01 -8.5878807306289673e-01 + 5.2454602718353271e-01 + <_> + + 1 0 34 -4.0299328247783706e-05 -1 -2 35 + -3.7485519424080849e-03 + + -5.2713459730148315e-01 -8.5626190900802612e-01 + 4.8944610357284546e-01 + <_> + 10 + -2.3431489467620850e+00 + + <_> + + 0 1 36 -3.8377079367637634e-01 -1 -2 37 + -1.3837030529975891e-01 + + 7.1715021133422852e-01 3.4392359852790833e-01 + -7.9931277036666870e-01 + <_> + + 0 1 38 3.3107071067206562e-04 -1 -2 39 + -5.1273438148200512e-03 + + -6.8352431058883667e-01 5.8250617980957031e-01 + -4.0955001115798950e-01 + <_> + + 1 0 40 -2.6100680232048035e-02 -1 -2 41 + -1.0628979653120041e-03 + + -4.3713301420211792e-01 7.0680737495422363e-01 + -2.6817938685417175e-01 + <_> + + 0 1 42 -9.7854852676391602e-02 -1 -2 43 + -1.1829820275306702e-01 + + 7.3940038681030273e-01 6.3814181089401245e-01 + -3.8721871376037598e-01 + <_> + + 1 0 44 -7.5409049168229103e-03 -1 -2 45 + 2.6851659640669823e-03 + + -4.8803019523620605e-01 3.9083468914031982e-01 + -6.5561538934707642e-01 + <_> + + 0 1 46 1.6870240215212107e-03 -1 -2 47 + -3.8136160001158714e-03 + + -4.9891749024391174e-01 -6.6405588388442993e-01 + 4.0650749206542969e-01 + <_> + + 1 0 48 2.0289309322834015e-03 -1 -2 49 + -7.6308869756758213e-03 + + -6.9989210367202759e-01 4.3206840753555298e-01 + -2.9664969444274902e-01 + <_> + + 1 0 50 -3.3815231290645897e-04 -1 -2 51 + 7.5163291767239571e-03 + + -4.6808540821075439e-01 3.6521491408348083e-01 + -7.6014542579650879e-01 + <_> + + 1 0 52 6.1479508876800537e-02 -1 -2 53 + -4.6286579221487045e-02 + + 5.6990629434585571e-01 2.2625060379505157e-01 + -4.5330780744552612e-01 + <_> + + 1 0 54 4.6903551556169987e-03 -1 -2 55 + 1.8803169950842857e-03 + + -7.7286708354949951e-01 2.7349120378494263e-01 + -6.6667830944061279e-01 + <_> + 8 + -2.1268370151519775e+00 + + <_> + + 1 0 56 -5.5420672893524170e-01 -1 -2 57 + -6.9329799152910709e-03 + + -6.0620260238647461e-01 7.8542029857635498e-01 + -3.5522121191024780e-01 + <_> + + 0 1 58 -2.1169960498809814e-02 -1 -2 59 + -6.7428398132324219e-01 + + 5.2947688102722168e-01 4.6065220236778259e-01 + -7.0058208703994751e-01 + <_> + + 1 0 60 -4.2725078761577606e-02 -1 -2 61 + -1.0109329596161842e-02 + + -5.9904807806015015e-01 6.8109220266342163e-01 + -2.0731879770755768e-01 + <_> + + 0 1 62 6.5861130133271217e-03 -1 -2 63 + -7.6380418613553047e-03 + + -5.2420848608016968e-01 -7.0169782638549805e-01 + 4.4100138545036316e-01 + <_> + + 0 1 64 -9.7681581974029541e-02 -1 -2 65 + 1.0197360068559647e-02 + + 5.7708740234375000e-01 -9.8518550395965576e-02 + -8.8111698627471924e-01 + <_> + + 0 1 66 -2.5724549777805805e-03 -1 -2 67 + 2.6594230439513922e-03 + + -8.3233338594436646e-01 3.0995351076126099e-01 + -8.1609177589416504e-01 + <_> + + 1 0 68 -1.0042720241472125e-03 -1 -2 69 + 2.6080000679939985e-03 + + -4.3558520078659058e-01 3.3566600084304810e-01 + -8.1889331340789795e-01 + <_> + + 1 0 70 4.9724509008228779e-03 -1 -2 71 + 1.2243240140378475e-02 + + -7.7048182487487793e-01 2.2534200549125671e-01 + -6.8695551156997681e-01 + <_> + 10 + -2.0604379177093506e+00 + + <_> + + 1 0 72 -5.7784929871559143e-02 -1 -2 73 + -1.7517809756100178e-03 + + -7.0516008138656616e-01 8.5655921697616577e-01 + -9.2403419315814972e-02 + <_> + + 1 0 74 -1.1522379703819752e-02 -1 -2 75 + -3.8323760963976383e-03 + + -4.2749640345573425e-01 7.5913530588150024e-01 + -1.0894049704074860e-01 + <_> + + 1 0 76 -8.0922387540340424e-02 -1 -2 77 + -6.2537011690437794e-03 + + -3.1364768743515015e-01 6.9995921850204468e-01 + -1.1805690079927444e-01 + <_> + + 0 1 78 -1.2227860093116760e-01 -1 -2 79 + -6.4168110489845276e-02 + + 5.2072501182556152e-01 3.9272749423980713e-01 + -4.2194411158561707e-01 + <_> + + 1 0 80 -5.3712888620793819e-04 -1 -2 81 + -2.8175620827823877e-03 + + -4.9524548649787903e-01 4.1350141167640686e-01 + -3.8919278979301453e-01 + <_> + + 0 1 82 -3.6368549335747957e-03 -1 -2 83 + -1.3223909772932529e-03 + + 6.7615020275115967e-01 4.3426999449729919e-01 + -3.7642130255699158e-01 + <_> + + 0 1 84 3.7143539520911872e-04 -1 -2 85 + -5.0255712121725082e-03 + + -5.5630880594253540e-01 -5.2328592538833618e-01 + 3.4646821022033691e-01 + <_> + + 1 0 86 -9.2711612523999065e-05 -1 -2 87 + 1.9847028888761997e-03 + + -4.9652668833732605e-01 3.3401641249656677e-01 + -6.2446892261505127e-01 + <_> + + 1 0 88 4.7203440219163895e-02 -1 -2 89 + -6.8562600063160062e-05 + + 5.7562619447708130e-01 2.6172660291194916e-02 + -6.0849070549011230e-01 + <_> + + 1 0 90 7.5034219771623611e-03 -1 -2 91 + 6.3834791071712971e-03 + + -6.8576759099960327e-01 -1.7312510311603546e-01 + 3.8560429215431213e-01 + <_> + 12 + -2.3187489509582520e+00 + + <_> + + 1 0 92 -1.5584450215101242e-02 -1 -2 93 + 1.4557019807398319e-02 + + -6.6648960113525391e-01 -4.3745130300521851e-01 + 7.2227817773818970e-01 + <_> + + 1 0 94 -5.7889888994395733e-03 -1 -2 95 + -8.1936769187450409e-02 + + -4.3183240294456482e-01 6.8467652797698975e-01 + -2.2546729445457458e-01 + <_> + + 1 0 96 -4.2995368130505085e-03 -1 -2 97 + -1.3736640103161335e-02 + + -5.2409631013870239e-01 6.1626207828521729e-01 + -3.5893160104751587e-01 + <_> + + 1 0 98 -4.8069912008941174e-03 -1 -2 99 + -7.7131099998950958e-02 + + -4.2382389307022095e-01 6.0599362850189209e-01 + -3.1555330753326416e-01 + <_> + + 0 1 100 4.4640208943746984e-04 -1 -2 101 + 3.4841578453779221e-02 + + -4.9206110835075378e-01 -4.1017889976501465e-02 + 6.1330878734588623e-01 + <_> + + 0 1 102 8.2969048526138067e-04 -1 -2 103 + -7.8510129242204130e-05 + + -4.5479419827461243e-01 4.0007328987121582e-01 + -2.0888769626617432e-01 + <_> + + 1 0 104 4.6054688282310963e-03 -1 -2 105 + -7.1904482319951057e-03 + + -6.7931377887725830e-01 4.7060671448707581e-01 + -1.4138610661029816e-01 + <_> + + 0 1 106 -5.5724480189383030e-03 -1 -2 107 + -7.0458237314596772e-04 + + -7.0525509119033813e-01 3.6097851395606995e-01 + -1.8361540138721466e-01 + <_> + + 1 0 108 1.8595060333609581e-02 -1 -2 109 + 5.0072550773620605e-02 + + 4.1765761375427246e-01 -4.1869449615478516e-01 + 2.8186509013175964e-01 + <_> + + 1 0 110 -2.0355919376015663e-02 -1 -2 111 + -2.8686519712209702e-02 + + -3.6494150757789612e-01 -5.3867787122726440e-01 + 3.4767881035804749e-01 + <_> + + 1 0 112 -7.1101690991781652e-05 -1 -2 113 + 2.0686469506472349e-03 + + -4.0156790614128113e-01 3.2963660359382629e-01 + -7.0951050519943237e-01 + <_> + + 1 0 114 1.1430920567363501e-03 -1 -2 115 + -8.8636036962270737e-03 + + 4.4172981381416321e-01 1.8426130712032318e-01 + -4.1275170445442200e-01 + <_> + 15 + -2.2203750610351562e+00 + + <_> + + 1 0 116 -7.7637642621994019e-02 -1 -2 117 + -8.4830820560455322e-03 + + -4.9321529269218445e-01 7.8138542175292969e-01 + -3.6062291264533997e-01 + <_> + + 1 0 118 -1.7180460272356868e-03 -1 -2 119 + 2.4740949273109436e-02 + + -4.7690048813819885e-01 -3.2420080900192261e-01 + 5.9280002117156982e-01 + <_> + + 0 1 120 3.3028100151568651e-03 -1 -2 121 + -3.4622039645910263e-02 + + -5.3991597890853882e-01 5.2076727151870728e-01 + -3.3530798554420471e-01 + <_> + + 1 0 122 -7.1505777304992080e-04 -1 -2 123 + -9.0145105496048927e-03 + + -4.8981699347496033e-01 -7.7969801425933838e-01 + 3.6586359143257141e-01 + <_> + + 1 0 124 -1.0250939521938562e-03 -1 -2 125 + -5.5693178437650204e-03 + + -4.6970510482788086e-01 -6.9695621728897095e-01 + 3.5025438666343689e-01 + <_> + + 0 1 126 1.3235070509836078e-03 -1 -2 127 + -3.3737940248101950e-03 + + -4.4707980751991272e-01 -5.6195151805877686e-01 + 3.1833809614181519e-01 + <_> + + 1 0 128 -6.4095242123585194e-05 -1 -2 129 + -2.7294119354337454e-03 + + -3.5473638772964478e-01 4.1285240650177002e-01 + -3.1416821479797363e-01 + <_> + + 0 1 130 6.3087652961257845e-05 -1 -2 131 + -1.5436099842190742e-02 + + -3.5946568846702576e-01 -6.1329078674316406e-01 + 3.4301999211311340e-01 + <_> + + 0 1 132 -2.1025019232183695e-03 -1 -2 133 + -1.6849569976329803e-02 + + -7.6962250471115112e-01 3.6569809913635254e-01 + -2.1210379898548126e-01 + <_> + + 0 1 134 5.6847798987291753e-05 -1 -2 135 + 5.9984489344060421e-03 + + -4.0466558933258057e-01 2.8503778576850891e-01 + -5.8756178617477417e-01 + <_> + + 1 0 136 6.1389962211251259e-03 -1 -2 137 + -2.8117469628341496e-04 + + -8.7189829349517822e-01 2.5182509422302246e-01 + -3.1868219375610352e-01 + <_> + + 1 0 138 -4.5429798774421215e-03 -1 -2 139 + -3.2167110592126846e-02 + + -3.6724218726158142e-01 -7.9481202363967896e-01 + 2.8887200355529785e-01 + <_> + + 1 0 140 5.0912089645862579e-03 -1 -2 141 + -1.5173070132732391e-03 + + -7.1477490663528442e-01 4.4514629244804382e-01 + -9.5207341015338898e-02 + <_> + + 1 0 142 -6.0079508693888783e-04 -1 -2 143 + 4.4868541881442070e-03 + + -3.6021450161933899e-01 2.8276360034942627e-01 + -7.2084128856658936e-01 + <_> + + 1 0 144 -3.7957848981022835e-03 -1 -2 145 + -9.1829998418688774e-03 + + -2.8717440366744995e-01 5.0479042530059814e-01 + -7.0781037211418152e-02 + <_> + 17 + -2.1757249832153320e+00 + + <_> + + 1 0 146 -5.5760249495506287e-02 -1 -2 147 + -5.9436690062284470e-02 + + -5.5854648351669312e-01 6.8943697214126587e-01 + -3.7195080518722534e-01 + <_> + + 0 1 148 -5.4637178778648376e-02 -1 -2 149 + 2.3608359694480896e-01 + + 5.3040331602096558e-01 -4.7355309128761292e-01 + 4.6322488784790039e-01 + <_> + + 1 0 150 -9.4560505822300911e-03 -1 -2 151 + -5.3182709962129593e-02 + + -3.2544779777526855e-01 6.3468569517135620e-01 + -2.8268361091613770e-01 + <_> + + 1 0 152 -1.0638199746608734e-02 -1 -2 153 + -2.1207019686698914e-02 + + -5.5776351690292358e-01 3.9049190282821655e-01 + -4.2111930251121521e-01 + <_> + + 1 0 154 -5.6731878430582583e-05 -1 -2 155 + -4.4976451317779720e-04 + + -4.1803309321403503e-01 3.7355789542198181e-01 + -3.9199641346931458e-01 + <_> + + 1 0 156 2.7574670966714621e-03 -1 -2 157 + 2.5649419985711575e-03 + + -7.9104632139205933e-01 1.9258180260658264e-01 + -7.5344461202621460e-01 + <_> + + 0 1 158 -9.4359368085861206e-03 -1 -2 159 + 1.4136210083961487e-03 + + 4.4834750890731812e-01 -3.3878430724143982e-01 + 4.4291919469833374e-01 + <_> + + 1 0 160 3.9976350963115692e-03 -1 -2 161 + -1.5278969658538699e-03 + + -6.6637581586837769e-01 3.1292399764060974e-01 + -2.8027990460395813e-01 + <_> + + 1 0 162 -3.2376639865105972e-05 -1 -2 163 + 1.6323389718309045e-03 + + -4.6672090888023376e-01 2.7995559573173523e-01 + -6.1321508884429932e-01 + <_> + + 1 0 164 7.7096219174563885e-03 -1 -2 165 + -7.8599318861961365e-02 + + 2.0352549850940704e-01 7.2726912796497345e-02 + -6.8677097558975220e-01 + <_> + + 0 1 166 -3.6581400781869888e-03 -1 -2 167 + -4.2612198740243912e-02 + + -6.8079459667205811e-01 -8.4551781415939331e-01 + 1.5990570187568665e-01 + <_> + + 1 0 168 -4.8822778626345098e-04 -1 -2 169 + -4.6951142139732838e-03 + + -4.7945699095726013e-01 -8.2234281301498413e-01 + 2.0431579649448395e-01 + <_> + + 0 1 170 6.1706348787993193e-05 -1 -2 171 + 1.3809910044074059e-02 + + -3.1742820143699646e-01 3.0769300460815430e-01 + -4.3544968962669373e-01 + <_> + + 0 1 172 -4.2187729850411415e-03 -1 -2 173 + -3.9540808647871017e-03 + + 6.2499982118606567e-01 1.3225209712982178e-01 + -3.9745101332664490e-01 + <_> + + 1 0 174 2.2203531116247177e-03 -1 -2 175 + 6.2806582718621939e-05 + + -6.0045331716537476e-01 -2.2429980337619781e-01 + 2.9768520593643188e-01 + <_> + + 1 0 176 2.3292789701372385e-03 -1 -2 177 + -5.3711822256445885e-03 + + -7.5982081890106201e-01 2.6484918594360352e-01 + -2.6005539298057556e-01 + <_> + + 0 1 178 6.4782587287481874e-05 -1 -2 179 + 7.6606678776443005e-03 + + -3.2119300961494446e-01 2.4176409840583801e-01 + -8.3822727203369141e-01 + <_> + 19 + -2.2618789672851562e+00 + + <_> + + 1 0 180 -1.4848279766738415e-02 -1 -2 181 + -1.6066679963842034e-03 + + -5.3391128778457642e-01 7.6002711057662964e-01 + -2.1091739833354950e-01 + <_> + + 1 0 182 -1.5651920437812805e-01 -1 -2 183 + -5.5439779534935951e-03 + + -4.2818549275398254e-01 6.5620750188827515e-01 + -2.2949840128421783e-01 + <_> + + 1 0 184 -1.9448339939117432e-02 -1 -2 185 + 7.6653067953884602e-03 + + -4.4212520122528076e-01 -3.3950591087341309e-01 + 4.6587219834327698e-01 + <_> + + 0 1 186 -2.1142010390758514e-01 -1 -2 187 + -1.0628429800271988e-01 + + 5.5007970333099365e-01 6.8280947208404541e-01 + -3.0987739562988281e-01 + <_> + + 1 0 188 -5.2653599530458450e-02 -1 -2 189 + -5.3522300731856376e-05 + + -3.4818819165229797e-01 5.0566762685775757e-01 + -2.5229519605636597e-01 + <_> + + 0 1 190 -5.7972650974988937e-03 -1 -2 191 + -3.7428899668157101e-03 + + 3.0238011479377747e-01 2.2873230278491974e-01 + -4.8366579413414001e-01 + <_> + + 1 0 192 -5.2694038458866999e-05 -1 -2 193 + -1.1983739677816629e-03 + + -3.7988960742950439e-01 -6.7442452907562256e-01 + 2.8611260652542114e-01 + <_> + + 1 0 194 2.2544799372553825e-02 -1 -2 195 + 3.1783939339220524e-03 + + 4.7565719485282898e-01 -2.8893348574638367e-01 + 5.5509638786315918e-01 + <_> + + 1 0 196 3.4742769785225391e-03 -1 -2 197 + -8.1408787518739700e-03 + + -5.9826552867889404e-01 -5.5933791399002075e-01 + 2.2349210083484650e-01 + <_> + + 0 1 198 -3.0238809995353222e-03 -1 -2 199 + -5.9159598313271999e-03 + + 4.5917978882789612e-01 6.2234902381896973e-01 + -2.4468150734901428e-01 + <_> + + 1 0 200 2.3184430319815874e-03 -1 -2 201 + 7.7198208309710026e-03 + + -6.0478079319000244e-01 2.1004509925842285e-01 + -6.4331281185150146e-01 + <_> + + 0 1 202 -5.5973320268094540e-03 -1 -2 203 + 2.0320380281191319e-04 + + -7.1625810861587524e-01 -3.8018029928207397e-01 + 2.1336899697780609e-01 + <_> + + 1 0 204 -3.8205389864742756e-03 -1 -2 205 + 4.8883338458836079e-03 + + -3.5957258939743042e-01 2.6471930742263794e-01 + -5.8996689319610596e-01 + <_> + + 0 1 206 -1.3334590476006269e-03 -1 -2 207 + -1.5447080368176103e-03 + + 3.2258489727973938e-01 3.6971050500869751e-01 + -3.1308570504188538e-01 + <_> + + 0 1 208 7.5150746852159500e-05 -1 -2 209 + -1.1108840117231011e-03 + + -3.4674531221389771e-01 -5.7477539777755737e-01 + 2.9201140999794006e-01 + <_> + + 1 0 210 -1.6881119518075138e-04 -1 -2 211 + -1.2814450019504875e-04 + + -3.6041781306266785e-01 3.5043209791183472e-01 + -2.2014050185680389e-01 + <_> + + 1 0 212 1.9546970725059509e-02 -1 -2 213 + -1.1061180382966995e-02 + + 4.1295918822288513e-01 2.5962719321250916e-01 + -3.4875950217247009e-01 + <_> + + 1 0 214 1.8147419905290008e-03 -1 -2 215 + -7.1724010631442070e-03 + + -5.2019888162612915e-01 2.7452668547630310e-01 + -2.6828849315643311e-01 + <_> + + 1 0 216 2.2158189676702023e-03 -1 -2 217 + -9.6856858581304550e-03 + + -5.7340908050537109e-01 -5.8028572797775269e-01 + 1.8564410507678986e-01 + <_> + 19 + -2.0994780063629150e+00 + + <_> + + 0 1 218 -1.2065219692885876e-02 -1 -2 219 + -4.9067771434783936e-01 + + 6.1679571866989136e-01 1.4063939452171326e-01 + -5.5357742309570312e-01 + <_> + + 1 0 220 -6.6585717722773552e-03 -1 -2 221 + 1.5827560797333717e-02 + + -5.1332288980484009e-01 -3.6301520466804504e-01 + 4.3343341350555420e-01 + <_> + + 0 1 222 -1.4081180095672607e-02 -1 -2 223 + -1.2139449827373028e-02 + + 5.4223722219467163e-01 4.4281288981437683e-01 + -3.4171119332313538e-01 + <_> + + 0 1 224 7.8055798076093197e-03 -1 -2 225 + -7.0759910158813000e-05 + + -4.8659759759902954e-01 3.4818679094314575e-01 + -3.2806739211082458e-01 + <_> + + 0 1 226 -1.8199630081653595e-02 -1 -2 227 + -2.5289389304816723e-03 + + 5.6594151258468628e-01 1.1310060322284698e-01 + -4.0772381424903870e-01 + <_> + + 1 0 228 1.0156990028917789e-03 -1 -2 229 + 2.9432660085149109e-04 + + -5.9842979907989502e-01 2.8439450263977051e-01 + -3.2190230488777161e-01 + <_> + + 1 0 230 2.0865290425717831e-03 -1 -2 231 + -1.7371569992974401e-03 + + -7.8285712003707886e-01 3.3585301041603088e-01 + -2.0582370460033417e-01 + <_> + + 1 0 232 -7.0026202592998743e-05 -1 -2 233 + -1.4891549944877625e-03 + + -3.9109349250793457e-01 -4.6953418850898743e-01 + 2.7609241008758545e-01 + <_> + + 1 0 234 -1.1788429692387581e-02 -1 -2 235 + -1.5155089786276221e-03 + + -4.0114149451255798e-01 -7.4290478229522705e-01 + 2.7695629000663757e-01 + <_> + + 1 0 236 6.8396717309951782e-02 -1 -2 237 + -7.6441407203674316e-02 + + 4.5235648751258850e-01 4.2848169803619385e-01 + -3.1636309623718262e-01 + <_> + + 1 0 238 6.8310201168060303e-02 -1 -2 239 + -6.4508013427257538e-02 + + 5.1404279470443726e-01 1.8081870675086975e-01 + -3.4217950701713562e-01 + <_> + + 0 1 240 -2.8335719835013151e-03 -1 -2 241 + -9.9732237868010998e-04 + + -6.9509768486022949e-01 -4.3724590539932251e-01 + 2.0226080715656281e-01 + <_> + + 0 1 242 -2.2869910299777985e-01 -1 -2 243 + 2.9855249449610710e-03 + + 6.4662200212478638e-01 8.1149758771061897e-03 + -6.0210299491882324e-01 + <_> + + 0 1 244 -2.9535989742726088e-03 -1 -2 245 + -2.1225619129836559e-03 + + -7.2013127803802490e-01 5.0875622034072876e-01 + -5.9366609901189804e-02 + <_> + + 0 1 246 -2.9382819775491953e-03 -1 -2 247 + -5.8961478061974049e-03 + + 3.9287531375885010e-01 4.1866040229797363e-01 + -2.5405511260032654e-01 + <_> + + 1 0 248 2.5730929337441921e-03 -1 -2 249 + 1.6647739335894585e-02 + + -5.8707278966903687e-01 1.9208480417728424e-01 + -6.0388940572738647e-01 + <_> + + 1 0 250 2.4041840806603432e-03 -1 -2 251 + -9.0452830772846937e-04 + + -5.7192337512969971e-01 3.4860768914222717e-01 + -1.3049240410327911e-01 + <_> + + 1 0 252 4.0814210660755634e-03 -1 -2 253 + 3.3811479806900024e-03 + + 5.1778018474578857e-01 -6.3828541897237301e-03 + -6.1447817087173462e-01 + <_> + + 0 1 254 -2.7499340940266848e-03 -1 -2 255 + -4.8207710497081280e-03 + + -6.5407788753509521e-01 -6.0029619932174683e-01 + 1.4374589920043945e-01 + <_> + 21 + -2.1254189014434814e+00 + + <_> + + 0 1 256 7.9710120335221291e-03 -1 -2 257 + -9.7160867881029844e-04 + + -6.1992239952087402e-01 5.4877161979675293e-01 + -4.0606960654258728e-01 + <_> + + 0 1 258 -1.0945869609713554e-02 -1 -2 259 + -6.1174821108579636e-02 + + 4.6936869621276855e-01 3.0570849776268005e-01 + -4.4459891319274902e-01 + <_> + + 1 0 260 -2.3100150283426046e-03 -1 -2 261 + -4.7585051506757736e-02 + + -3.7816441059112549e-01 4.8865839838981628e-01 + -2.9728868603706360e-01 + <_> + + 1 0 262 -2.5944279041141272e-03 -1 -2 263 + -3.9469371549785137e-03 + + -5.4405367374420166e-01 3.6382490396499634e-01 + -3.0469849705696106e-01 + <_> + + 0 1 264 3.1871569808572531e-04 -1 -2 265 + -2.6655721012502909e-03 + + -4.6822971105575562e-01 3.3131968975067139e-01 + -2.9918238520622253e-01 + <_> + + 1 0 266 -3.9534650743007660e-02 -1 -2 267 + -9.4085611635819077e-04 + + -3.5316830873489380e-01 4.4447100162506104e-01 + -1.1088660359382629e-01 + <_> + + 0 1 268 6.9526307925116271e-05 -1 -2 269 + -9.6976682543754578e-03 + + -3.9403268694877625e-01 5.7181888818740845e-01 + -1.6370950266718864e-02 + <_> + + 1 0 270 3.9469040930271149e-02 -1 -2 271 + -8.2811042666435242e-03 + + 6.9152122735977173e-01 1.3349990546703339e-01 + -4.7064480185508728e-01 + <_> + + 0 1 272 -4.3219728395342827e-03 -1 -2 273 + -5.5436040274798870e-03 + + 3.8239258527755737e-01 1.5645879507064819e-01 + -4.1088208556175232e-01 + <_> + + 1 0 274 -5.9953341406071559e-05 -1 -2 275 + -5.9089371934533119e-03 + + -3.9221799373626709e-01 -5.9083867073059082e-01 + 2.7924481034278870e-01 + <_> + + 0 1 276 -4.4721391052007675e-02 -1 -2 277 + 4.1267018765211105e-02 + + 4.1454491019248962e-01 -3.2242009043693542e-01 + 3.7849879264831543e-01 + <_> + + 0 1 278 5.6728709751041606e-05 -1 -2 279 + -6.2427870929241180e-02 + + -3.2228040695190430e-01 -5.9666448831558228e-01 + 2.8915780782699585e-01 + <_> + + 0 1 280 -5.6994128972291946e-03 -1 -2 281 + 7.5202910229563713e-03 + + 3.7499341368675232e-01 -2.8132459521293640e-01 + 5.0988858938217163e-01 + <_> + + 0 1 282 -3.3640549518167973e-03 -1 -2 283 + -6.8076648749411106e-03 + + -6.3978207111358643e-01 -7.3105818033218384e-01 + 1.4475250244140625e-01 + <_> + + 1 0 284 1.2633459642529488e-02 -1 -2 285 + -2.9199919663369656e-03 + + -7.7725297212600708e-01 2.3258599638938904e-01 + -2.0490600168704987e-01 + <_> + + 0 1 286 -3.0582249164581299e-02 -1 -2 287 + -2.7796169742941856e-03 + + -6.5738821029663086e-01 -5.4888349771499634e-01 + 1.3837890326976776e-01 + <_> + + 0 1 288 -7.6163080520927906e-03 -1 -2 289 + -1.8409560434520245e-03 + + -3.5912349820137024e-01 2.2404469549655914e-01 + -3.7881860136985779e-01 + <_> + + 0 1 290 -3.9200261235237122e-02 -1 -2 291 + -2.2543789818882942e-03 + + 5.0090551376342773e-01 3.1364008784294128e-01 + -2.2131860256195068e-01 + <_> + + 1 0 292 2.3894659243524075e-03 -1 -2 293 + -1.0725490283221006e-03 + + -5.8699512481689453e-01 4.7141209244728088e-01 + -3.2570488750934601e-02 + <_> + + 0 1 294 8.9095337898470461e-05 -1 -2 295 + 1.6920049674808979e-03 + + -3.0444309115409851e-01 3.0280891060829163e-01 + -3.8902729749679565e-01 + <_> + + 1 0 296 1.1784000322222710e-02 -1 -2 297 + 3.9335917681455612e-03 + + -6.8993437290191650e-01 -6.7763939499855042e-02 + 4.6499788761138916e-01 + <_> + 22 + -2.0614759922027588e+00 + + <_> + + 0 1 298 1.1430840007960796e-02 -1 -2 299 + -3.2242920249700546e-02 + + -3.9274570345878601e-01 6.5568798780441284e-01 + -3.1068810820579529e-01 + <_> + + 1 0 300 -1.8382760463282466e-03 -1 -2 301 + -1.0764399915933609e-01 + + -4.0825068950653076e-01 4.3280079960823059e-01 + -4.2263451218605042e-01 + <_> + + 1 0 302 -2.3866090923547745e-03 -1 -2 303 + 8.6586214601993561e-03 + + -4.6435201168060303e-01 -4.0673071146011353e-01 + 4.1267868876457214e-01 + <_> + + 1 0 304 -1.6437229933217168e-03 -1 -2 305 + -9.8511137068271637e-02 + + -2.1344049274921417e-01 6.8432319164276123e-01 + -9.7035013139247894e-02 + <_> + + 0 1 306 4.4292360544204712e-03 -1 -2 307 + 4.6966210938990116e-03 + + -3.9498910307884216e-01 -1.1345980316400528e-01 + 4.9681991338729858e-01 + <_> + + 1 0 308 -8.8480701670050621e-03 -1 -2 309 + -6.7258379422128201e-03 + + -3.1293100118637085e-01 -6.1635792255401611e-01 + 3.1764769554138184e-01 + <_> + + 1 0 310 2.0052040927112103e-03 -1 -2 311 + -1.3407340273261070e-02 + + 3.1724271178245544e-01 1.9735060632228851e-01 + -3.7199181318283081e-01 + <_> + + 0 1 312 -4.4199679978191853e-03 -1 -2 313 + -3.2800938934087753e-02 + + -5.7164478302001953e-01 3.0599930882453918e-01 + -1.7397969961166382e-01 + <_> + + 0 1 314 4.9407979531679302e-05 -1 -2 315 + 4.1550169698894024e-03 + + -2.8270530700683594e-01 2.9686808586120605e-01 + -4.8494309186935425e-01 + <_> + + 1 0 316 -7.5589967309497297e-05 -1 -2 317 + -3.2147730235010386e-03 + + -3.8531139492988586e-01 -6.3306808471679688e-01 + 2.3434750735759735e-01 + <_> + + 0 1 318 1.6021779738366604e-03 -1 -2 319 + -1.9478019326925278e-02 + + -2.9579049348831177e-01 -4.9625208973884583e-01 + 2.6092579960823059e-01 + <_> + + 0 1 320 -2.5193750858306885e-02 -1 -2 321 + -4.6487729996442795e-02 + + 3.9384880661964417e-01 2.2168830037117004e-01 + -2.9691740870475769e-01 + <_> + + 1 0 322 4.3414267711341381e-03 -1 -2 323 + -2.4886759929358959e-03 + + -6.7661178112030029e-01 2.0509929955005646e-01 + -2.9771140217781067e-01 + <_> + + 0 1 324 -5.8827269822359085e-03 -1 -2 325 + 9.0498890494927764e-04 + + -6.1301797628402710e-01 -3.4023219347000122e-01 + 1.8168209493160248e-01 + <_> + + 0 1 326 -9.8338901996612549e-02 -1 -2 327 + 5.6141808629035950e-02 + + 4.7729569673538208e-01 -2.2904439270496368e-01 + 3.4410089254379272e-01 + <_> + + 1 0 328 -5.5787130258977413e-03 -1 -2 329 + 1.5108759980648756e-03 + + -3.5910171270370483e-01 2.4900430440902710e-01 + -4.3798071146011353e-01 + <_> + + 0 1 330 -6.0129738412797451e-03 -1 -2 331 + -7.9341192031279206e-04 + + 3.1164181232452393e-01 2.6759660243988037e-01 + -3.6802908778190613e-01 + <_> + + 1 0 332 6.1855330131947994e-03 -1 -2 333 + -7.3785060085356236e-03 + + -7.2153317928314209e-01 -5.3714382648468018e-01 + 1.3824890553951263e-01 + <_> + + 0 1 334 -6.7488732747733593e-04 -1 -2 335 + -1.3102099765092134e-03 + + 3.7406051158905029e-01 1.9003790616989136e-01 + -3.1632271409034729e-01 + <_> + + 0 1 336 4.9453211249783635e-04 -1 -2 337 + 1.2824690202251077e-03 + + -2.3283170163631439e-01 3.0463808774948120e-01 + -4.8092108964920044e-01 + <_> + + 0 1 338 -2.2624820470809937e-02 -1 -2 339 + 4.3685249984264374e-03 + + -6.8783479928970337e-01 1.2403090298175812e-01 + -7.9220730066299438e-01 + <_> + + 1 0 340 5.6756488047540188e-03 -1 -2 341 + -8.1769213080406189e-02 + + 1.7611420154571533e-01 3.8942161202430725e-01 + -4.5094010233879089e-01 + <_> + 24 + -1.9795049428939819e+00 + + <_> + + 1 0 342 -2.0003549754619598e-02 -1 -2 343 + -3.2621208578348160e-02 + + -5.6650751829147339e-01 5.0807082653045654e-01 + -4.5345708727836609e-01 + <_> + + 0 1 344 1.0668139904737473e-02 -1 -2 345 + -1.6276689246296883e-02 + + -3.2316839694976807e-01 6.0189497470855713e-01 + -2.4059510231018066e-01 + <_> + + 1 0 346 -2.8211208991706371e-03 -1 -2 347 + -1.4291180297732353e-02 + + -4.7181150317192078e-01 5.1280087232589722e-01 + -1.0744000226259232e-01 + <_> + + 0 1 348 1.0120410006493330e-03 -1 -2 349 + -5.9822672046720982e-03 + + -3.8844698667526245e-01 4.6928858757019043e-01 + -9.1355919837951660e-02 + <_> + + 1 0 350 -2.4705699179321527e-03 -1 -2 351 + 2.4079859722405672e-03 + + -4.5964410901069641e-01 2.1830670535564423e-01 + -5.9373402595520020e-01 + <_> + + 1 0 352 -1.4312269631773233e-03 -1 -2 353 + 2.9141810955479741e-04 + + -2.4731670320034027e-01 -2.5972241163253784e-01 + 3.8206368684768677e-01 + <_> + + 0 1 354 -3.2818811014294624e-03 -1 -2 355 + -1.0365940397605300e-03 + + -7.7180129289627075e-01 2.3569859564304352e-01 + -2.2067700326442719e-01 + <_> + + 0 1 356 -2.2078400943428278e-03 -1 -2 357 + 3.5239339340478182e-03 + + 3.0886119604110718e-01 -2.8496000170707703e-01 + 4.7544300556182861e-01 + <_> + + 0 1 358 -6.1774807982146740e-03 -1 -2 359 + -3.2023619860410690e-03 + + -7.0318382978439331e-01 -5.1361310482025146e-01 + 1.5656259655952454e-01 + <_> + + 1 0 360 -8.7003601947799325e-04 -1 -2 361 + -3.8079950027167797e-03 + + -2.9925128817558289e-01 5.5215638875961304e-01 + -8.0608041025698185e-04 + <_> + + 1 0 362 4.9994210712611675e-03 -1 -2 363 + -1.0323170572519302e-03 + + -4.3541741371154785e-01 5.4992151260375977e-01 + -5.0770761445164680e-03 + <_> + + 1 0 364 6.9215619005262852e-03 -1 -2 365 + -8.1578325480222702e-03 + + 3.3900010585784912e-01 3.4354889392852783e-01 + -2.4483889341354370e-01 + <_> + + 0 1 366 -1.6159559600055218e-03 -1 -2 367 + 4.7165839932858944e-03 + + -7.4653702974319458e-01 1.1855059862136841e-01 + -7.1803867816925049e-01 + <_> + + 1 0 368 -1.6093119978904724e-02 -1 -2 369 + -5.9861610643565655e-03 + + -3.2987210154533386e-01 3.1263980269432068e-01 + -2.3194029927253723e-01 + <_> + + 1 0 370 6.4122617244720459e-02 -1 -2 371 + 2.1518159657716751e-02 + + 4.6239149570465088e-01 -2.4277320504188538e-01 + 4.0963909029960632e-01 + <_> + + 0 1 372 -2.8541380167007446e-01 -1 -2 373 + 2.7372559998184443e-04 + + 4.4521799683570862e-01 -4.7307610511779785e-01 + 7.6739721000194550e-02 + <_> + + 0 1 374 -6.4039281569421291e-03 -1 -2 375 + 1.4279670082032681e-02 + + -5.6167787313461304e-01 -6.7311890423297882e-02 + 4.3806758522987366e-01 + <_> + + 0 1 376 -1.3179860077798367e-02 -1 -2 377 + 6.6828072071075439e-02 + + -6.7672669887542725e-01 -3.2182909548282623e-02 + 5.1308721303939819e-01 + <_> + + 0 1 378 6.3021448440849781e-03 -1 -2 379 + -1.6806010389700532e-03 + + -2.0082660019397736e-01 -5.1767241954803467e-01 + 3.8576510548591614e-01 + <_> + + 0 1 380 -1.5057720011100173e-03 -1 -2 381 + 1.1699240421876311e-03 + + 3.9358091354370117e-01 -2.5579568743705750e-01 + 3.1927299499511719e-01 + <_> + + 1 0 382 7.2735180146992207e-03 -1 -2 383 + 7.8693883551750332e-05 + + -7.1667242050170898e-01 -1.8908829987049103e-01 + 2.3849080502986908e-01 + <_> + + 1 0 384 1.9624589476734400e-03 -1 -2 385 + -3.1472831033170223e-03 + + -5.1583772897720337e-01 4.8033049702644348e-01 + -3.6237910389900208e-02 + <_> + + 1 0 386 5.0133569166064262e-03 -1 -2 387 + -6.5994369797408581e-03 + + -5.2729338407516479e-01 -6.9400531053543091e-01 + 1.2275890260934830e-01 + <_> + + 0 1 388 -4.2700361460447311e-02 -1 -2 389 + -3.5096149076707661e-05 + + -6.8218547105789185e-01 1.2160310149192810e-01 + -4.2142289876937866e-01 + <_> + 24 + -1.9048260450363159e+00 + + <_> + + 0 1 390 8.7128365412354469e-03 -1 -2 391 + -4.0675927884876728e-03 + + -4.4048839807510376e-01 6.0030102729797363e-01 + -2.6042649149894714e-01 + <_> + + 1 0 392 -8.3933398127555847e-02 -1 -2 393 + -2.2626180201768875e-02 + + -3.7943989038467407e-01 5.2529489994049072e-01 + -3.2733321189880371e-01 + <_> + + 1 0 394 -3.5725389607250690e-03 -1 -2 395 + -1.6297569964081049e-03 + + -2.6030939817428589e-01 4.8434230685234070e-01 + -3.8363268971443176e-01 + <_> + + 0 1 396 -8.0011576414108276e-02 -1 -2 397 + -9.6061453223228455e-02 + + 3.9579561352729797e-01 4.2874181270599365e-01 + -2.9096639156341553e-01 + <_> + + 1 0 398 -9.3183852732181549e-03 -1 -2 399 + 9.2205153778195381e-03 + + -3.9325499534606934e-01 -2.9857379198074341e-01 + 3.1733301281929016e-01 + <_> + + 1 0 400 2.3208750411868095e-02 -1 -2 401 + 1.6389730153605342e-03 + + 3.9295229315757751e-01 -5.4035997390747070e-01 + -2.1836880594491959e-02 + <_> + + 1 0 402 2.8872499242424965e-03 -1 -2 403 + 4.7465260140597820e-03 + + -7.8172737360000610e-01 1.4474189281463623e-01 + -6.4237701892852783e-01 + <_> + + 0 1 404 -5.7432148605585098e-03 -1 -2 405 + -8.5324952378869057e-03 + + -6.5556287765502930e-01 2.2090309858322144e-01 + -2.5790300965309143e-01 + <_> + + 0 1 406 -8.8752172887325287e-03 -1 -2 407 + -7.7129527926445007e-03 + + 4.6596860885620117e-01 2.5279781222343445e-01 + -2.6170450448989868e-01 + <_> + + 1 0 408 7.6909800991415977e-03 -1 -2 409 + 2.6657560374587774e-03 + + -5.9350818395614624e-01 1.6969729959964752e-01 + -5.4123950004577637e-01 + <_> + + 1 0 410 -4.4685939792543650e-04 -1 -2 411 + -1.5998890157788992e-03 + + -3.0383870005607605e-01 -5.4817748069763184e-01 + 2.4971559643745422e-01 + <_> + + 1 0 412 1.9368670182302594e-03 -1 -2 413 + -2.4878541007637978e-03 + + -6.3200348615646362e-01 4.7051379084587097e-01 + -4.5187219977378845e-02 + <_> + + 0 1 414 -2.8134910389780998e-03 -1 -2 415 + -1.4107710449025035e-03 + + 3.9270851016044617e-01 1.8017080426216125e-01 + -2.5714579224586487e-01 + <_> + + 0 1 416 -6.9013070315122604e-03 -1 -2 417 + -1.1458620429039001e-03 + + -5.3386241197586060e-01 2.8174358606338501e-01 + -1.6080249845981598e-01 + <_> + + 0 1 418 9.2800445854663849e-03 -1 -2 419 + -4.1281301528215408e-02 + + -3.0028960108757019e-01 -6.2409067153930664e-01 + 2.0549909770488739e-01 + <_> + + 0 1 420 -3.5625360906124115e-02 -1 -2 421 + -4.1647539474070072e-03 + + -5.2529340982437134e-01 -6.3538008928298950e-01 + 1.2846650183200836e-01 + <_> + + 0 1 422 -9.5598259940743446e-04 -1 -2 423 + -8.9347851462662220e-04 + + 2.6505509018898010e-01 1.8266810476779938e-01 + -3.7531790137290955e-01 + <_> + + 1 0 424 2.5431478861719370e-03 -1 -2 425 + -1.5853889286518097e-02 + + -6.1057221889495850e-01 3.0754768848419189e-01 + -9.8143920302391052e-02 + <_> + + 0 1 426 -4.1315760463476181e-02 -1 -2 427 + -6.8226549774408340e-04 + + 4.9247589707374573e-01 6.2975943088531494e-02 + -4.2634299397468567e-01 + <_> + + 1 0 428 6.3098431564867496e-04 -1 -2 429 + -2.8946860693395138e-03 + + 3.1397339701652527e-01 2.8590971231460571e-01 + -2.5623229146003723e-01 + <_> + + 0 1 430 -1.0244140401482582e-02 -1 -2 431 + -1.6979850828647614e-02 + + -6.9737482070922852e-01 -7.3125731945037842e-01 + 1.0389179736375809e-01 + <_> + + 1 0 432 -7.0198569446802139e-03 -1 -2 433 + -6.0688778758049011e-03 + + -3.5070639848709106e-01 -5.3395807743072510e-01 + 1.7334850132465363e-01 + <_> + + 0 1 434 -9.6911415457725525e-03 -1 -2 435 + 8.5460003465414047e-03 + + 5.6399798393249512e-01 -2.4716490507125854e-01 + 1.8216520547866821e-01 + <_> + + 1 0 436 -4.9479231238365173e-03 -1 -2 437 + 1.9269150216132402e-03 + + -2.8333988785743713e-01 -6.8196073174476624e-02 + 3.7787199020385742e-01 + <_> + 28 + -1.9407349824905396e+00 + + <_> + + 1 0 438 -2.8639819473028183e-02 -1 -2 439 + -4.2176660150289536e-02 + + -3.7718260288238525e-01 7.2298699617385864e-01 + -7.6141163706779480e-02 + <_> + + 1 0 440 -2.2537210024893284e-03 -1 -2 441 + -3.0683329328894615e-02 + + -3.2727459073066711e-01 5.1505237817764282e-01 + -2.2235199809074402e-01 + <_> + + 0 1 442 -1.2341269850730896e-01 -1 -2 443 + -2.3674150928854942e-02 + + 4.4699010252952576e-01 3.4708538651466370e-01 + -3.1773900985717773e-01 + <_> + + 0 1 444 3.1951239798218012e-03 -1 -2 445 + -1.4915530337020755e-03 + + -4.9775049090385437e-01 2.6384419202804565e-01 + -3.8912549614906311e-01 + <_> + + 0 1 446 8.8097527623176575e-04 -1 -2 447 + -5.8355771005153656e-02 + + -4.0939790010452271e-01 3.2287618517875671e-01 + -2.3045599460601807e-01 + <_> + + 1 0 448 5.1132370717823505e-03 -1 -2 449 + -4.5418320223689079e-03 + + -5.1353681087493896e-01 5.3011757135391235e-01 + -3.0649330466985703e-02 + <_> + + 1 0 450 1.6811339883133769e-03 -1 -2 451 + 2.8129699639976025e-03 + + -5.3161472082138062e-01 -6.7524053156375885e-02 + 3.8542249798774719e-01 + <_> + + 1 0 452 2.1835418883711100e-03 -1 -2 453 + -2.4335379712283611e-03 + + -6.4298832416534424e-01 -6.6313308477401733e-01 + 1.3882370293140411e-01 + <_> + + 1 0 454 3.0736608896404505e-03 -1 -2 455 + -9.6425544470548630e-03 + + -6.3433158397674561e-01 3.8696160912513733e-01 + -6.8737797439098358e-02 + <_> + + 0 1 456 -7.2082108817994595e-03 -1 -2 457 + -8.0191977322101593e-03 + + 1.6121250391006470e-01 3.8011130690574646e-01 + -4.1397979855537415e-01 + <_> + + 0 1 458 -7.2479159571230412e-03 -1 -2 459 + -2.2631640732288361e-01 + + 2.4351879954338074e-01 6.0667949914932251e-01 + -2.2521880269050598e-01 + <_> + + 0 1 460 -7.0091613451950252e-05 -1 -2 461 + -1.8161399662494659e-01 + + 1.7115320265293121e-01 5.2725982666015625e-01 + -3.5247540473937988e-01 + <_> + + 0 1 462 -9.4038434326648712e-03 -1 -2 463 + -2.1289030555635691e-03 + + 3.4970518946647644e-01 5.5878698825836182e-02 + -4.9816590547561646e-01 + <_> + + 0 1 464 -5.1798550412058830e-03 -1 -2 465 + -6.5030192490667105e-04 + + -6.3095641136169434e-01 3.5856458544731140e-01 + -7.8281052410602570e-02 + <_> + + 0 1 466 -1.0555930435657501e-02 -1 -2 467 + -5.1852981559932232e-03 + + -5.5502831935882568e-01 3.5548681020736694e-01 + -6.8892292678356171e-02 + <_> + + 0 1 468 -7.8725479543209076e-03 -1 -2 469 + -6.5342970192432404e-03 + + -4.8596179485321045e-01 2.1178959310054779e-01 + -2.3174080252647400e-01 + <_> + + 0 1 470 -1.3909920118749142e-02 -1 -2 471 + 1.5418450348079205e-03 + + 5.9936982393264771e-01 -9.5086917281150818e-03 + -6.4796131849288940e-01 + <_> + + 1 0 472 -1.1549900518730283e-03 -1 -2 473 + -3.2687030732631683e-02 + + -2.7501720190048218e-01 -6.7336207628250122e-01 + 1.9520400464534760e-01 + <_> + + 0 1 474 -2.6422590017318726e-01 -1 -2 475 + 6.9438670761883259e-03 + + 3.6986869573593140e-01 -3.0029740929603577e-01 + 1.4998969435691833e-01 + <_> + + 0 1 476 -1.2077920138835907e-02 -1 -2 477 + -1.3986700214445591e-03 + + 4.1644129157066345e-01 4.1248729825019836e-01 + -1.9533659517765045e-01 + <_> + + 1 0 478 1.3138339854776859e-02 -1 -2 479 + 7.2417110204696655e-03 + + -6.4204931259155273e-01 1.1359360069036484e-01 + -7.3838871717453003e-01 + <_> + + 0 1 480 -7.4837901629507542e-03 -1 -2 481 + 6.8022231571376324e-03 + + -6.9246298074722290e-01 9.2873439192771912e-02 + -6.0047471523284912e-01 + <_> + + 1 0 482 4.5322909951210022e-01 -1 -2 483 + -5.5721630342304707e-03 + + 5.6260532140731812e-01 7.7820159494876862e-02 + -3.3990600705146790e-01 + <_> + + 1 0 484 3.1583961099386215e-02 -1 -2 485 + -5.7926177978515625e-03 + + 3.2292670011520386e-01 1.5534450113773346e-01 + -3.5717839002609253e-01 + <_> + + 0 1 486 -7.6025379821658134e-03 -1 -2 487 + 9.5151038840413094e-04 + + -5.1859498023986816e-01 -2.9570670798420906e-02 + 4.6027511358261108e-01 + <_> + + 1 0 488 1.9723300356417894e-03 -1 -2 489 + 2.3158260155469179e-03 + + 3.6926651000976562e-01 -2.1299740672111511e-01 + 2.6948541402816772e-01 + <_> + + 1 0 490 2.1179600153118372e-03 -1 -2 491 + -2.6946600992232561e-03 + + -4.8369500041007996e-01 1.8545660376548767e-01 + -2.9411968588829041e-01 + <_> + + 1 0 492 5.8865409344434738e-02 -1 -2 493 + -6.8408921360969543e-03 + + -4.6770378947257996e-01 -6.6371321678161621e-01 + 1.2721349298954010e-01 + <_> + 26 + -1.8931059837341309e+00 + + <_> + + 1 0 494 -1.2766489759087563e-02 -1 -2 495 + 3.7821640726178885e-03 + + -3.7968099117279053e-01 -1.6001829504966736e-01 + 6.1953288316726685e-01 + <_> + + 1 0 496 -3.3049881458282471e-02 -1 -2 497 + 4.5050241053104401e-02 + + -3.6825481057167053e-01 9.3770343810319901e-03 + 7.1570581197738647e-01 + <_> + + 1 0 498 -3.5275409463793039e-03 -1 -2 499 + 2.2250709589570761e-03 + + -3.7336608767509460e-01 -6.6712491214275360e-02 + 4.9906119704246521e-01 + <_> + + 1 0 500 1.3609490124508739e-03 -1 -2 501 + -2.9087859392166138e-01 + + 1.7162929475307465e-01 3.6158901453018188e-01 + -5.0871372222900391e-01 + <_> + + 1 0 502 3.3148950897157192e-03 -1 -2 503 + -8.8641437469050288e-04 + + -7.1788138151168823e-01 2.5713619589805603e-01 + -1.7978949844837189e-01 + <_> + + 1 0 504 1.1313590221107006e-03 -1 -2 505 + -3.0621800106018782e-03 + + 3.5387420654296875e-01 3.0790808796882629e-01 + -3.1217241287231445e-01 + <_> + + 1 0 506 2.5443620979785919e-03 -1 -2 507 + -6.7088878713548183e-03 + + -5.6788551807403564e-01 2.1222899854183197e-01 + -2.6821109652519226e-01 + <_> + + 0 1 508 -1.6446809470653534e-01 -1 -2 509 + 4.0828108787536621e-02 + + 4.9016961455345154e-01 -3.1217470765113831e-01 + 2.4748149514198303e-01 + <_> + + 0 1 510 -3.6051510833203793e-03 -1 -2 511 + -2.3608640767633915e-03 + + 3.4355860948562622e-01 2.6566460728645325e-01 + -2.8644719719886780e-01 + <_> + + 0 1 512 1.2965350179001689e-03 -1 -2 513 + 6.0111000202596188e-03 + + -2.9317760467529297e-01 2.1941700577735901e-01 + -6.0014218091964722e-01 + <_> + + 1 0 514 -6.1628420371562243e-04 -1 -2 515 + 2.0573718938976526e-03 + + -3.1292331218719482e-01 2.8763169050216675e-01 + -3.7320709228515625e-01 + <_> + + 0 1 516 -7.7166007831692696e-03 -1 -2 517 + -2.8222459368407726e-03 + + -7.1683251857757568e-01 4.2501831054687500e-01 + -5.3294889628887177e-02 + <_> + + 0 1 518 -7.3861207056324929e-05 -1 -2 519 + 5.8680498041212559e-03 + + 1.4903450012207031e-01 -5.8436650037765503e-01 + 1.0724759846925735e-01 + <_> + + 1 0 520 -7.9013723880052567e-03 -1 -2 521 + 2.7825690340250731e-03 + + -3.4319949150085449e-01 1.7655360698699951e-01 + -6.1473757028579712e-01 + <_> + + 0 1 522 3.2751538674347103e-04 -1 -2 523 + 3.0700899660587311e-02 + + -3.3837568759918213e-01 1.8566130101680756e-01 + -5.3450268507003784e-01 + <_> + + 1 0 524 5.6932470761239529e-03 -1 -2 525 + 2.1375140547752380e-01 + + -5.1750451326370239e-01 1.2332399934530258e-01 + -6.4288139343261719e-01 + <_> + + 0 1 526 -4.4024959206581116e-03 -1 -2 527 + -4.5719969784840941e-04 + + 5.8535677194595337e-01 2.3368820548057556e-01 + -1.9039009511470795e-01 + <_> + + 0 1 528 -4.2587839998304844e-03 -1 -2 529 + -2.3462621029466391e-03 + + -5.1190847158432007e-01 -4.7164770960807800e-01 + 1.4783400297164917e-01 + <_> + + 1 0 530 -6.5065571106970310e-05 -1 -2 531 + -5.5082160979509354e-03 + + -2.9886341094970703e-01 -4.8508960008621216e-01 + 2.0014910399913788e-01 + <_> + + 1 0 532 1.8942790105938911e-02 -1 -2 533 + 6.9123771972954273e-03 + + 3.1028950214385986e-01 -2.8701239824295044e-01 + 2.0534069836139679e-01 + <_> + + 1 0 534 8.1696882843971252e-03 -1 -2 535 + 1.0069769807159901e-02 + + 4.5810830593109131e-01 -2.4175919592380524e-01 + 1.7593820393085480e-01 + <_> + + 1 0 536 2.1663580555468798e-03 -1 -2 537 + 1.0505730286240578e-02 + + -4.9877908825874329e-01 1.6231280565261841e-01 + -4.2988869547843933e-01 + <_> + + 1 0 538 5.7576788822188973e-04 -1 -2 539 + -3.0608899891376495e-02 + + -3.1012570858001709e-01 -7.4064302444458008e-01 + 1.6217179596424103e-01 + <_> + + 0 1 540 -1.3430659659206867e-02 -1 -2 541 + 1.1859040241688490e-03 + + 4.5505639910697937e-01 -2.7227258682250977e-01 + 2.2475010156631470e-01 + <_> + + 0 1 542 -4.9311347538605332e-04 -1 -2 543 + -2.4509918875992298e-03 + + -3.9598318934440613e-01 2.5004211068153381e-01 + -1.6140510141849518e-01 + <_> + + 1 0 544 1.3641949743032455e-02 -1 -2 545 + -3.6733329296112061e-02 + + -6.4525490999221802e-01 3.4197059273719788e-01 + -6.5968327224254608e-02 + <_> + 29 + -1.9677840471267700e+00 + + <_> + + 0 1 546 1.3613830087706447e-03 -1 -2 547 + 1.2211060151457787e-02 + + -3.4383928775787354e-01 -4.0358600020408630e-01 + 5.7873630523681641e-01 + <_> + + 0 1 548 3.2929528970271349e-03 -1 -2 549 + -2.4831980466842651e-02 + + -2.2164349257946014e-01 5.4256910085678101e-01 + -4.7585600614547729e-01 + <_> + + 0 1 550 -3.4081530570983887e-01 -1 -2 551 + 6.0929641127586365e-02 + + 5.3438740968704224e-01 -2.6015359163284302e-01 + 3.7626558542251587e-01 + <_> + + 1 0 552 -1.4399300562217832e-03 -1 -2 553 + -7.5711178779602051e-01 + + -4.1635149717330933e-01 4.7764539718627930e-01 + -1.2374229729175568e-01 + <_> + + 0 1 554 -5.9891431592404842e-03 -1 -2 555 + -8.9398561976850033e-04 + + 2.1848620474338531e-01 1.7726029455661774e-01 + -5.4815018177032471e-01 + <_> + + 1 0 556 2.9013510793447495e-03 -1 -2 557 + 4.4361278414726257e-03 + + -5.6709182262420654e-01 1.4183780550956726e-01 + -5.8784419298171997e-01 + <_> + + 1 0 558 -5.3319290600484237e-05 -1 -2 559 + 2.5481029879301786e-03 + + -3.4821888804435730e-01 1.9745320081710815e-01 + -5.5979222059249878e-01 + <_> + + 1 0 560 7.4882939457893372e-02 -1 -2 561 + 4.8816308379173279e-02 + + 4.6647951006889343e-01 -2.2575210034847260e-01 + 3.2325819134712219e-01 + <_> + + 0 1 562 -3.9128339849412441e-03 -1 -2 563 + -1.3820629566907883e-02 + + -5.9772872924804688e-01 2.6031211018562317e-01 + -2.0211410522460938e-01 + <_> + + 0 1 564 9.4047200400382280e-04 -1 -2 565 + -4.6419431455433369e-03 + + -3.4005248546600342e-01 -4.5187801122665405e-01 + 2.1054859459400177e-01 + <_> + + 1 0 566 -3.1960941851139069e-02 -1 -2 567 + -1.2651160068344325e-04 + + -2.0826019346714020e-01 3.8553190231323242e-01 + -2.3116420209407806e-01 + <_> + + 0 1 568 -5.0413709133863449e-02 -1 -2 569 + -2.0950778853148222e-03 + + 2.2846159338951111e-01 3.2639551162719727e-01 + -3.4385430812835693e-01 + <_> + + 0 1 570 -1.1017880402505398e-02 -1 -2 571 + -9.7415763884782791e-03 + + -7.7388781309127808e-01 3.6731991171836853e-01 + -6.5746001899242401e-02 + <_> + + 0 1 572 5.3386680519906804e-05 -1 -2 573 + 5.9820311143994331e-03 + + -3.5571750998497009e-01 1.7653119564056396e-01 + -4.6110078692436218e-01 + <_> + + 1 0 574 -1.9558269996196032e-03 -1 -2 575 + 7.6739699579775333e-03 + + -3.6172690987586975e-01 1.8038579821586609e-01 + -4.0452030301094055e-01 + <_> + + 1 0 576 4.2935381643474102e-03 -1 -2 577 + 1.4181300066411495e-03 + + 5.2086359262466431e-01 -2.2085809707641602e-01 + 2.7357560396194458e-01 + <_> + + 0 1 578 -2.8263099491596222e-02 -1 -2 579 + 6.3434068579226732e-04 + + -6.3833731412887573e-01 1.5636380016803741e-01 + -3.2148900628089905e-01 + <_> + + 0 1 580 -7.2387307882308960e-03 -1 -2 581 + -9.9928081035614014e-03 + + 2.3126259446144104e-01 3.0397319793701172e-01 + -2.4478439986705780e-01 + <_> + + 1 0 582 6.4995248976629227e-05 -1 -2 583 + -5.3049270063638687e-03 + + 1.5132980048656464e-01 2.0417870581150055e-01 + -4.6260431408882141e-01 + <_> + + 0 1 584 -1.6613099724054337e-02 -1 -2 585 + -1.1630290187895298e-02 + + 3.3399769663810730e-01 3.7053430080413818e-01 + -1.9361549615859985e-01 + <_> + + 1 0 586 1.9068180117756128e-03 -1 -2 587 + -5.6926468387246132e-03 + + -3.8105058670043945e-01 5.0645208358764648e-01 + 6.5170922316610813e-03 + <_> + + 1 0 588 -2.2453670680988580e-04 -1 -2 589 + 9.5565039664506912e-03 + + -3.1526011228561401e-01 -5.3035598993301392e-01 + 2.0532760024070740e-01 + <_> + + 1 0 590 3.1540619675070047e-03 -1 -2 591 + -3.0681329965591431e-01 + + -4.5928329229354858e-01 5.0717717409133911e-01 + -1.4439250342547894e-02 + <_> + + 0 1 592 2.8239809907972813e-03 -1 -2 593 + -3.3063529990613461e-03 + + -1.5437939763069153e-01 -4.3571388721466064e-01 + 3.9342719316482544e-01 + <_> + + 1 0 594 3.7848789361305535e-04 -1 -2 595 + -3.0488630291074514e-03 + + 2.5212600827217102e-01 4.6662339568138123e-01 + -2.2792230546474457e-01 + <_> + + 0 1 596 -1.4724380336701870e-02 -1 -2 597 + 3.6062300205230713e-02 + + -7.8602111339569092e-01 -6.8571321666240692e-02 + 3.6698839068412781e-01 + <_> + + 0 1 598 -2.2327410988509655e-03 -1 -2 599 + -7.8541820403188467e-04 + + -5.9740197658538818e-01 2.0273469388484955e-01 + -1.7221680283546448e-01 + <_> + + 1 0 600 7.8553898492828012e-04 -1 -2 601 + 1.0078109800815582e-02 + + -4.3407449126243591e-01 1.2464140355587006e-01 + -4.8391419649124146e-01 + <_> + + 1 0 602 2.0928790792822838e-02 -1 -2 603 + 1.3340089935809374e-03 + + 5.6864207983016968e-01 1.4524639584124088e-02 + -4.6003210544586182e-01 + <_> + 34 + -1.9657919406890869e+00 + + <_> + + 1 0 604 -1.5313959680497646e-02 -1 -2 605 + -1.4265860430896282e-02 + + -3.4347689151763916e-01 5.8209532499313354e-01 + -3.5527399182319641e-01 + <_> + + 0 1 606 1.2652979930862784e-03 -1 -2 607 + -7.3807648732326925e-05 + + -3.1498318910598755e-01 4.7249591350555420e-01 + -2.6380801200866699e-01 + <_> + + 0 1 608 -3.8527030497789383e-02 -1 -2 609 + -1.4758770354092121e-02 + + 4.1556850075721741e-01 1.5677249431610107e-01 + -3.7650239467620850e-01 + <_> + + 1 0 610 -1.5448270132765174e-03 -1 -2 611 + 6.4564580097794533e-03 + + -3.5932019352912903e-01 2.1276639401912689e-01 + -7.2287178039550781e-01 + <_> + + 0 1 612 1.0267349891364574e-02 -1 -2 613 + -8.6422899039462209e-04 + + -4.6045809984207153e-01 2.4920259416103363e-01 + -2.6721361279487610e-01 + <_> + + 0 1 614 3.2311889808624983e-03 -1 -2 615 + 1.3676529750227928e-02 + + -4.0939199924468994e-01 -2.7391690760850906e-02 + 4.5259070396423340e-01 + <_> + + 1 0 616 3.2787120435386896e-03 -1 -2 617 + -1.4256529975682497e-03 + + -7.0025652647018433e-01 2.5787800550460815e-01 + -1.5093439817428589e-01 + <_> + + 0 1 618 -2.2095029707998037e-03 -1 -2 619 + -8.7701372802257538e-02 + + 3.5148110985755920e-01 4.1978740692138672e-01 + -2.3600180447101593e-01 + <_> + + 0 1 620 -2.8805620968341827e-03 -1 -2 621 + -2.5028509553521872e-03 + + 3.0479869246482849e-01 1.3316699862480164e-01 + -3.1691300868988037e-01 + <_> + + 1 0 622 -5.1710562547668815e-04 -1 -2 623 + 6.7088729701936245e-03 + + -3.5199090838432312e-01 2.0163150131702423e-01 + -6.0948008298873901e-01 + <_> + + 0 1 624 -7.6058752834796906e-02 -1 -2 625 + -3.0889140907675028e-03 + + -6.3694208860397339e-01 -7.9025340080261230e-01 + 1.0366079956293106e-01 + <_> + + 1 0 626 2.5740528944879770e-03 -1 -2 627 + -5.4877097718417645e-03 + + -4.5424199104309082e-01 2.1481299400329590e-01 + -1.9329510629177094e-01 + <_> + + 1 0 628 -1.2507289648056030e-03 -1 -2 629 + -4.3231048621237278e-03 + + -2.1651449799537659e-01 -6.2799078226089478e-01 + 2.4270740151405334e-01 + <_> + + 1 0 630 4.3724630959331989e-03 -1 -2 631 + 7.4632692849263549e-04 + + -5.1889377832412720e-01 -1.1378680169582367e-01 + 2.8224378824234009e-01 + <_> + + 0 1 632 -1.3375070411711931e-03 -1 -2 633 + -2.9367550741881132e-03 + + 2.4589119851589203e-01 2.4335819482803345e-01 + -2.9112818837165833e-01 + <_> + + 0 1 634 6.3193867390509695e-05 -1 -2 635 + -5.1338938064873219e-03 + + -2.5806590914726257e-01 -4.6110409498214722e-01 + 2.4333980679512024e-01 + <_> + + 1 0 636 4.9400608986616135e-03 -1 -2 637 + -5.6112580932676792e-03 + + -3.9632990956306458e-01 2.4502380192279816e-01 + -1.5639010071754456e-01 + <_> + + 1 0 638 4.2950599454343319e-03 -1 -2 639 + 4.5142881572246552e-03 + + -4.7671678662300110e-01 1.0698430240154266e-01 + -9.0471321344375610e-01 + <_> + + 1 0 640 7.5297639705240726e-03 -1 -2 641 + -1.2225280515849590e-03 + + 4.1239809989929199e-01 2.8488171100616455e-01 + -1.9815699756145477e-01 + <_> + + 0 1 642 -3.4703810233622789e-03 -1 -2 643 + 8.3724651485681534e-03 + + -4.4967961311340332e-01 1.5324249863624573e-01 + -3.8666850328445435e-01 + <_> + + 1 0 644 -3.3934618841158226e-05 -1 -2 645 + -2.7241709828376770e-01 + + -3.1429070234298706e-01 -5.5842101573944092e-01 + 1.6627819836139679e-01 + <_> + + 0 1 646 -2.7582740876823664e-03 -1 -2 647 + 2.5530489161610603e-02 + + 2.7189570665359497e-01 -1.9172009825706482e-01 + 4.3780499696731567e-01 + <_> + + 1 0 648 4.2080380953848362e-03 -1 -2 649 + -8.2151442766189575e-03 + + -4.4684138894081116e-01 2.2786709666252136e-01 + -1.7441789805889130e-01 + <_> + + 0 1 650 -2.9405429959297180e-03 -1 -2 651 + -9.4840265810489655e-03 + + -7.2643548250198364e-01 2.0794290304183960e-01 + -1.5239919722080231e-01 + <_> + + 1 0 652 4.2596450075507164e-03 -1 -2 653 + -1.7117479583248496e-03 + + 6.1772680282592773e-01 -7.1106612682342529e-01 + -6.1875251121819019e-03 + <_> + + 0 1 654 -1.3266160385683179e-03 -1 -2 655 + 9.1314306482672691e-03 + + 1.7181269824504852e-01 -4.1138759255409241e-01 + 1.8124279379844666e-01 + <_> + + 1 0 656 6.8382360041141510e-03 -1 -2 657 + 7.5181988067924976e-03 + + -5.7601082324981689e-01 -1.0819079726934433e-01 + 2.9561421275138855e-01 + <_> + + 0 1 658 -7.2788819670677185e-03 -1 -2 659 + -1.8039470538496971e-02 + + -5.8113521337509155e-01 4.5183068513870239e-01 + -2.7083089575171471e-02 + <_> + + 0 1 660 -1.0126599809154868e-03 -1 -2 661 + -6.7263199016451836e-03 + + 2.4344119429588318e-01 1.6870440542697906e-01 + -2.7007728815078735e-01 + <_> + + 0 1 662 -3.2334970310330391e-03 -1 -2 663 + -7.7852200774941593e-05 + + -6.0048222541809082e-01 2.4241769313812256e-01 + -1.2413249909877777e-01 + <_> + + 0 1 664 -6.7774722992908210e-05 -1 -2 665 + 7.1789676439948380e-05 + + 1.5729150176048279e-01 -5.2893507480621338e-01 + -3.1665571033954620e-02 + <_> + + 1 0 666 1.0024299845099449e-02 -1 -2 667 + 9.4298496842384338e-03 + + -4.8646959662437439e-01 1.1240869760513306e-01 + -4.2570489645004272e-01 + <_> + + 0 1 668 -7.4433721601963043e-04 -1 -2 669 + 1.1660560034215450e-02 + + 2.7540761232376099e-01 -2.3117260634899139e-01 + 2.2442330420017242e-01 + <_> + + 1 0 670 3.9079408161342144e-03 -1 -2 671 + 1.6550149768590927e-02 + + -6.3519638776779175e-01 1.0619100183248520e-01 + -4.7654989361763000e-01 + <_> + 32 + -1.7649420499801636e+00 + + <_> + + 1 0 672 -1.8439030274748802e-02 -1 -2 673 + -5.3364519029855728e-02 + + -4.8745709657669067e-01 5.1037812232971191e-01 + -2.2670130431652069e-01 + <_> + + 0 1 674 -7.5706318020820618e-02 -1 -2 675 + -1.5329009620472789e-03 + + 4.1487750411033630e-01 8.5764937102794647e-02 + -4.3470910191535950e-01 + <_> + + 1 0 676 -2.4494890123605728e-02 -1 -2 677 + -3.8144161226227880e-04 + + -2.7532699704170227e-01 3.8043969869613647e-01 + -4.3967849016189575e-01 + <_> + + 1 0 678 -8.8816778734326363e-03 -1 -2 679 + -3.9625130593776703e-02 + + -4.3258818984031677e-01 2.4481220543384552e-01 + -2.6193639636039734e-01 + <_> + + 1 0 680 -3.5907390993088484e-03 -1 -2 681 + 3.7008870393037796e-02 + + -3.6199480295181274e-01 2.2637460380792618e-02 + 5.5778437852859497e-01 + <_> + + 0 1 682 7.8503930126316845e-05 -1 -2 683 + -4.7969701699912548e-03 + + -3.3861130475997925e-01 3.1856098771095276e-01 + -1.6600249707698822e-01 + <_> + + 0 1 684 -1.1298010125756264e-02 -1 -2 685 + -4.4886539690196514e-03 + + 3.7305471301078796e-01 2.9692959785461426e-01 + -2.5235760211944580e-01 + <_> + + 0 1 686 -2.2497780155390501e-03 -1 -2 687 + 2.9247230850160122e-03 + + 3.4263029694557190e-01 -5.6593239307403564e-02 + -7.0626032352447510e-01 + <_> + + 1 0 688 1.7976630479097366e-03 -1 -2 689 + 1.9808609504252672e-03 + + -5.4180228710174561e-01 -2.5643008947372437e-01 + 1.8446870148181915e-01 + <_> + + 0 1 690 -4.7688339836895466e-03 -1 -2 691 + -1.5755610540509224e-02 + + -2.9698228836059570e-01 2.8959378600120544e-01 + -1.6480749845504761e-01 + <_> + + 0 1 692 -1.1919640004634857e-02 -1 -2 693 + 4.2308131232857704e-03 + + -5.8567219972610474e-01 1.3601270318031311e-01 + -4.8162451386451721e-01 + <_> + + 1 0 694 2.0548550412058830e-02 -1 -2 695 + -7.3943338356912136e-03 + + 3.0143499374389648e-01 4.6367760747671127e-02 + -4.2379519343376160e-01 + <_> + + 0 1 696 -6.2137800268828869e-03 -1 -2 697 + 1.4182809973135591e-03 + + 4.5724278688430786e-01 -3.0143639445304871e-01 + 1.8204510211944580e-01 + <_> + + 1 0 698 4.1609420441091061e-03 -1 -2 699 + -3.7915320135653019e-03 + + -5.2654838562011719e-01 -5.8677071332931519e-01 + 1.1703660339117050e-01 + <_> + + 1 0 700 2.0879150833934546e-03 -1 -2 701 + 1.5018540434539318e-03 + + -3.5307729244232178e-01 1.8624800443649292e-01 + -3.2729730010032654e-01 + <_> + + 1 0 702 2.1248809993267059e-02 -1 -2 703 + -5.5249751312658191e-04 + + -3.1979259848594666e-01 2.3370230197906494e-01 + -1.7386199533939362e-01 + <_> + + 0 1 704 -3.0085169710218906e-03 -1 -2 705 + -1.1611919617280364e-03 + + 1.7596049606800079e-01 1.6033430397510529e-01 + -3.9680978655815125e-01 + <_> + + 0 1 706 -3.9655580185353756e-03 -1 -2 707 + -6.5836100839078426e-03 + + 3.6691769957542419e-01 -6.2966358661651611e-01 + -2.4926450103521347e-02 + <_> + + 0 1 708 -9.0950471349060535e-04 -1 -2 709 + -5.7984529994428158e-03 + + 3.9574980735778809e-01 1.7492240667343140e-01 + -2.6837408542633057e-01 + <_> + + 0 1 710 -5.7758802175521851e-01 -1 -2 711 + -1.5161310322582722e-02 + + 5.9611392021179199e-01 -6.6131639480590820e-01 + 3.3608361263759434e-04 + <_> + + 1 0 712 7.6604672358371317e-05 -1 -2 713 + 2.7769979089498520e-02 + + 2.0401589572429657e-01 -3.2097330689430237e-01 + 2.2317400574684143e-01 + <_> + + 0 1 714 -2.6336179580539465e-03 -1 -2 715 + 8.3722146227955818e-03 + + -3.9656499028205872e-01 1.3883970677852631e-01 + -5.8006221055984497e-01 + <_> + + 0 1 716 -7.0203031646087766e-04 -1 -2 717 + -4.8448870074935257e-04 + + 2.7777281403541565e-01 2.1628519892692566e-01 + -2.9692250490188599e-01 + <_> + + 0 1 718 -3.3638171851634979e-02 -1 -2 719 + 4.4241230934858322e-03 + + 3.5791969299316406e-01 -8.6632027523592114e-04 + -5.5872720479965210e-01 + <_> + + 1 0 720 1.1545260436832905e-02 -1 -2 721 + -1.5816639643162489e-03 + + 3.3837619423866272e-01 2.8660699725151062e-02 + -3.5041970014572144e-01 + <_> + + 1 0 722 1.3838140293955803e-02 -1 -2 723 + 2.8327409178018570e-02 + + -7.7886807918548584e-01 -1.8604910001158714e-02 + 6.2147867679595947e-01 + <_> + + 0 1 724 -8.8482163846492767e-03 -1 -2 725 + -1.1661020107567310e-03 + + 2.6369819045066833e-01 1.0302580147981644e-01 + -3.2680010795593262e-01 + <_> + + 0 1 726 -3.2252211123704910e-02 -1 -2 727 + -9.4921119511127472e-02 + + -5.0046241283416748e-01 -7.2761011123657227e-01 + 1.0330100357532501e-01 + <_> + + 1 0 728 2.5177269708365202e-03 -1 -2 729 + -4.0892168879508972e-02 + + -6.3938027620315552e-01 -5.7345229387283325e-01 + 8.1502526998519897e-02 + <_> + + 0 1 730 -1.9293189980089664e-03 -1 -2 731 + -1.4116390375420451e-03 + + 2.4177229404449463e-01 8.0363817512989044e-02 + -3.6146539449691772e-01 + <_> + + 0 1 732 -3.8812779821455479e-03 -1 -2 733 + 4.4630360789597034e-03 + + -5.7638782262802124e-01 9.1835789382457733e-02 + -6.8039101362228394e-01 + <_> + + 0 1 734 2.9870839789509773e-03 -1 -2 735 + 9.4975335523486137e-03 + + -1.0236640274524689e-01 4.9150609970092773e-01 + -3.8011389970779419e-01 + + <_> + + <_> + 8 7 3 12 -1. + <_> + 8 11 3 4 3. + <_> + + <_> + 8 7 8 3 -1. + <_> + 10 9 4 3 2. + 1 + <_> + + <_> + 9 13 2 6 -1. + <_> + 9 16 2 3 2. + <_> + + <_> + 8 2 12 8 -1. + <_> + 11 2 6 8 2. + <_> + + <_> + 14 0 6 6 -1. + <_> + 14 3 6 3 2. + <_> + + <_> + 8 1 5 12 -1. + <_> + 8 4 5 6 2. + <_> + + <_> + 1 8 3 12 -1. + <_> + 1 12 3 4 3. + <_> + + <_> + 0 11 2 7 -1. + <_> + 1 11 1 7 2. + <_> + + <_> + 6 12 9 7 -1. + <_> + 9 12 3 7 3. + <_> + + <_> + 13 4 6 9 -1. + <_> + 15 4 2 9 3. + <_> + + <_> + 4 7 12 12 -1. + <_> + 8 11 4 4 9. + <_> + + <_> + 15 0 4 20 -1. + <_> + 15 5 4 10 2. + <_> + + <_> + 0 12 5 8 -1. + <_> + 0 16 5 4 2. + <_> + + <_> + 8 2 12 8 -1. + <_> + 12 2 4 8 3. + <_> + + <_> + 19 0 1 8 -1. + <_> + 19 4 1 4 2. + <_> + + <_> + 9 7 3 12 -1. + <_> + 9 11 3 4 3. + <_> + + <_> + 1 2 8 8 -1. + <_> + 1 6 8 4 2. + <_> + + <_> + 0 12 4 4 -1. + <_> + 2 12 2 4 2. + <_> + + <_> + 9 7 6 8 -1. + <_> + 9 7 3 4 2. + <_> + 12 11 3 4 2. + <_> + + <_> + 13 18 7 2 -1. + <_> + 13 19 7 1 2. + <_> + + <_> + 4 7 12 12 -1. + <_> + 8 11 4 4 9. + <_> + + <_> + 0 8 5 12 -1. + <_> + 0 12 5 4 3. + <_> + + <_> + 16 0 4 8 -1. + <_> + 18 0 2 8 2. + <_> + + <_> + 16 12 1 8 -1. + <_> + 16 16 1 4 2. + <_> + + <_> + 9 1 9 9 -1. + <_> + 12 1 3 9 3. + <_> + + <_> + 16 16 1 3 -1. + <_> + 15 17 1 1 3. + 1 + <_> + + <_> + 2 14 2 4 -1. + <_> + 2 16 2 2 2. + <_> + + <_> + 6 12 9 3 -1. + <_> + 9 12 3 3 3. + <_> + + <_> + 0 18 5 2 -1. + <_> + 0 19 5 1 2. + <_> + + <_> + 1 7 18 12 -1. + <_> + 7 11 6 4 9. + <_> + + <_> + 4 0 16 12 -1. + <_> + 4 0 8 6 2. + <_> + 12 6 8 6 2. + <_> + + <_> + 8 3 2 5 -1. + <_> + 9 3 1 5 2. + <_> + + <_> + 17 17 1 2 -1. + <_> + 17 17 1 1 2. + 1 + <_> + + <_> + 18 16 1 3 -1. + <_> + 17 17 1 1 3. + 1 + <_> + + <_> + 0 9 2 6 -1. + <_> + 1 9 1 6 2. + <_> + + <_> + 3 3 3 4 -1. + <_> + 4 3 1 4 3. + <_> + + <_> + 4 7 12 12 -1. + <_> + 8 11 4 4 9. + <_> + + <_> + 10 0 7 8 -1. + <_> + 10 4 7 4 2. + <_> + + <_> + 18 0 2 9 -1. + <_> + 19 0 1 9 2. + <_> + + <_> + 4 13 1 4 -1. + <_> + 4 13 1 2 2. + 1 + <_> + + <_> + 10 8 6 2 -1. + <_> + 12 10 2 2 3. + 1 + <_> + + <_> + 14 11 4 7 -1. + <_> + 15 11 2 7 2. + <_> + + <_> + 4 0 13 8 -1. + <_> + 4 2 13 4 2. + <_> + + <_> + 9 1 7 8 -1. + <_> + 9 5 7 4 2. + <_> + + <_> + 7 0 12 9 -1. + <_> + 10 0 6 9 2. + <_> + + <_> + 14 3 4 4 -1. + <_> + 15 3 2 4 2. + <_> + + <_> + 0 16 4 4 -1. + <_> + 0 18 4 2 2. + <_> + + <_> + 3 17 2 1 -1. + <_> + 3 17 1 1 2. + 1 + <_> + + <_> + 17 16 1 3 -1. + <_> + 16 17 1 1 3. + 1 + <_> + + <_> + 11 10 6 4 -1. + <_> + 10 11 6 2 2. + 1 + <_> + + <_> + 19 0 1 4 -1. + <_> + 19 2 1 2 2. + <_> + + <_> + 17 0 3 3 -1. + <_> + 18 1 1 1 9. + <_> + + <_> + 2 1 12 6 -1. + <_> + 2 4 12 3 2. + <_> + + <_> + 19 2 1 16 -1. + <_> + 15 6 1 8 2. + 1 + <_> + + <_> + 12 2 4 6 -1. + <_> + 13 2 2 6 2. + <_> + + <_> + 11 3 3 3 -1. + <_> + 12 3 1 3 3. + <_> + + <_> + 1 7 18 12 -1. + <_> + 7 11 6 4 9. + <_> + + <_> + 8 1 12 9 -1. + <_> + 12 1 4 9 3. + <_> + + <_> + 18 0 2 10 -1. + <_> + 18 5 2 5 2. + <_> + + <_> + 4 5 12 15 -1. + <_> + 8 10 4 5 9. + <_> + + <_> + 1 8 4 12 -1. + <_> + 1 12 4 4 3. + <_> + + <_> + 6 13 8 2 -1. + <_> + 8 13 4 2 2. + <_> + + <_> + 16 0 4 15 -1. + <_> + 18 0 2 15 2. + <_> + + <_> + 14 0 4 8 -1. + <_> + 15 0 2 8 2. + <_> + + <_> + 5 0 8 9 -1. + <_> + 5 3 8 3 3. + <_> + + <_> + 8 0 6 6 -1. + <_> + 10 0 2 6 3. + <_> + + <_> + 10 17 3 3 -1. + <_> + 11 17 1 3 3. + <_> + + <_> + 10 17 4 3 -1. + <_> + 11 17 2 3 2. + <_> + + <_> + 14 12 4 4 -1. + <_> + 15 12 2 4 2. + <_> + + <_> + 8 18 4 2 -1. + <_> + 9 18 2 2 2. + <_> + + <_> + 6 1 4 5 -1. + <_> + 7 1 2 5 2. + <_> + + <_> + 2 0 6 5 -1. + <_> + 4 0 2 5 3. + <_> + + <_> + 8 7 8 3 -1. + <_> + 10 9 4 3 2. + 1 + <_> + + <_> + 14 12 4 3 -1. + <_> + 15 12 2 3 2. + <_> + + <_> + 10 10 3 4 -1. + <_> + 9 11 3 2 2. + 1 + <_> + + <_> + 17 0 2 6 -1. + <_> + 17 3 2 3 2. + <_> + + <_> + 1 9 6 9 -1. + <_> + 3 12 2 3 9. + <_> + + <_> + 5 11 8 4 -1. + <_> + 9 11 4 4 2. + <_> + + <_> + 1 0 16 6 -1. + <_> + 1 3 16 3 2. + <_> + + <_> + 2 0 14 6 -1. + <_> + 2 2 14 2 3. + <_> + + <_> + 0 11 2 9 -1. + <_> + 1 11 1 9 2. + <_> + + <_> + 18 11 1 8 -1. + <_> + 18 11 1 4 2. + 1 + <_> + + <_> + 10 12 3 2 -1. + <_> + 11 12 1 2 3. + <_> + + <_> + 11 13 3 1 -1. + <_> + 12 13 1 1 3. + <_> + + <_> + 15 0 4 8 -1. + <_> + 17 0 2 8 2. + <_> + + <_> + 12 17 4 3 -1. + <_> + 14 17 2 3 2. + <_> + + <_> + 15 17 1 2 -1. + <_> + 15 17 1 1 2. + 1 + <_> + + <_> + 15 16 1 3 -1. + <_> + 14 17 1 1 3. + 1 + <_> + + <_> + 3 0 14 8 -1. + <_> + 3 2 14 4 2. + <_> + + <_> + 18 1 1 2 -1. + <_> + 18 2 1 1 2. + <_> + + <_> + 6 0 8 3 -1. + <_> + 8 0 4 3 2. + <_> + + <_> + 9 4 1 9 -1. + <_> + 9 7 1 3 3. + <_> + + <_> + 6 13 9 2 -1. + <_> + 9 13 3 2 3. + <_> + + <_> + 0 13 5 6 -1. + <_> + 0 16 5 3 2. + <_> + + <_> + 13 12 6 4 -1. + <_> + 15 12 2 4 3. + <_> + + <_> + 4 6 12 2 -1. + <_> + 8 10 4 2 3. + 1 + <_> + + <_> + 19 0 1 8 -1. + <_> + 19 4 1 4 2. + <_> + + <_> + 8 2 12 8 -1. + <_> + 11 2 6 8 2. + <_> + + <_> + 0 12 4 4 -1. + <_> + 2 12 2 4 2. + <_> + + <_> + 7 8 13 9 -1. + <_> + 7 11 13 3 3. + <_> + + <_> + 18 1 2 6 -1. + <_> + 19 1 1 6 2. + <_> + + <_> + 7 4 5 8 -1. + <_> + 7 6 5 4 2. + <_> + + <_> + 11 18 9 2 -1. + <_> + 11 19 9 1 2. + <_> + + <_> + 10 7 2 3 -1. + <_> + 11 7 1 3 2. + <_> + + <_> + 4 18 6 2 -1. + <_> + 6 18 2 2 3. + <_> + + <_> + 6 13 6 7 -1. + <_> + 8 13 2 7 3. + <_> + + <_> + 5 18 6 2 -1. + <_> + 7 18 2 2 3. + <_> + + <_> + 18 5 2 2 -1. + <_> + 18 6 2 1 2. + <_> + + <_> + 6 2 9 4 -1. + <_> + 6 4 9 2 2. + <_> + + <_> + 13 0 7 4 -1. + <_> + 13 0 7 2 2. + 1 + <_> + + <_> + 13 9 3 6 -1. + <_> + 11 11 3 2 3. + 1 + <_> + + <_> + 16 8 4 6 -1. + <_> + 16 11 4 3 2. + <_> + + <_> + 19 2 1 2 -1. + <_> + 19 3 1 1 2. + <_> + + <_> + 19 1 1 3 -1. + <_> + 19 2 1 1 3. + <_> + + <_> + 13 12 2 4 -1. + <_> + 13 12 1 2 2. + <_> + 14 14 1 2 2. + <_> + + <_> + 14 9 3 5 -1. + <_> + 15 10 1 5 3. + 1 + <_> + + <_> + 8 7 8 3 -1. + <_> + 10 9 4 3 2. + 1 + <_> + + <_> + 7 7 9 4 -1. + <_> + 6 8 9 2 2. + 1 + <_> + + <_> + 0 11 2 6 -1. + <_> + 1 11 1 6 2. + <_> + + <_> + 0 13 5 6 -1. + <_> + 0 16 5 3 2. + <_> + + <_> + 16 2 4 6 -1. + <_> + 18 2 2 6 2. + <_> + + <_> + 13 5 6 7 -1. + <_> + 15 7 2 7 3. + 1 + <_> + + <_> + 19 2 1 4 -1. + <_> + 19 4 1 2 2. + <_> + + <_> + 14 1 6 2 -1. + <_> + 16 1 2 2 3. + <_> + + <_> + 14 12 4 5 -1. + <_> + 15 12 2 5 2. + <_> + + <_> + 18 15 2 3 -1. + <_> + 17 16 2 1 3. + 1 + <_> + + <_> + 14 16 3 4 -1. + <_> + 14 18 3 2 2. + <_> + + <_> + 16 16 1 2 -1. + <_> + 16 16 1 1 2. + 1 + <_> + + <_> + 18 0 1 2 -1. + <_> + 18 1 1 1 2. + <_> + + <_> + 9 8 1 6 -1. + <_> + 9 11 1 3 2. + <_> + + <_> + 18 5 2 1 -1. + <_> + 19 5 1 1 2. + <_> + + <_> + 14 3 6 4 -1. + <_> + 16 3 2 4 3. + <_> + + <_> + 8 18 4 2 -1. + <_> + 9 18 2 2 2. + <_> + + <_> + 6 13 9 7 -1. + <_> + 9 13 3 7 3. + <_> + + <_> + 1 16 2 2 -1. + <_> + 1 17 2 1 2. + <_> + + <_> + 0 16 3 4 -1. + <_> + 0 17 3 2 2. + <_> + + <_> + 8 1 4 5 -1. + <_> + 9 1 2 5 2. + <_> + + <_> + 10 1 6 9 -1. + <_> + 12 1 2 9 3. + <_> + + <_> + 10 8 10 4 -1. + <_> + 10 10 10 2 2. + <_> + + <_> + 15 8 5 4 -1. + <_> + 15 10 5 2 2. + <_> + + <_> + 17 1 3 2 -1. + <_> + 18 2 1 2 3. + 1 + <_> + + <_> + 13 11 3 5 -1. + <_> + 14 11 1 5 3. + <_> + + <_> + 8 7 4 3 -1. + <_> + 10 7 2 3 2. + <_> + + <_> + 3 0 8 1 -1. + <_> + 5 0 4 1 2. + <_> + + <_> + 1 13 6 5 -1. + <_> + 3 13 2 5 3. + <_> + + <_> + 13 9 3 5 -1. + <_> + 14 10 1 5 3. + 1 + <_> + + <_> + 11 8 4 6 -1. + <_> + 9 10 4 2 3. + 1 + <_> + + <_> + 11 7 6 6 -1. + <_> + 13 9 2 6 3. + 1 + <_> + + <_> + 7 0 7 6 -1. + <_> + 7 3 7 3 2. + <_> + + <_> + 3 1 10 12 -1. + <_> + 3 5 10 4 3. + <_> + + <_> + 13 12 6 4 -1. + <_> + 15 12 2 4 3. + <_> + + <_> + 0 9 6 9 -1. + <_> + 2 12 2 3 9. + <_> + + <_> + 8 0 12 11 -1. + <_> + 12 0 4 11 3. + <_> + + <_> + 13 11 1 8 -1. + <_> + 13 11 1 4 2. + 1 + <_> + + <_> + 19 4 1 2 -1. + <_> + 19 5 1 1 2. + <_> + + <_> + 2 15 1 2 -1. + <_> + 2 15 1 1 2. + 1 + <_> + + <_> + 17 16 2 2 -1. + <_> + 17 16 2 1 2. + 1 + <_> + + <_> + 16 16 1 3 -1. + <_> + 15 17 1 1 3. + 1 + <_> + + <_> + 5 11 3 2 -1. + <_> + 6 12 1 2 3. + 1 + <_> + + <_> + 4 11 2 2 -1. + <_> + 4 11 1 1 2. + <_> + 5 12 1 1 2. + <_> + + <_> + 17 7 3 2 -1. + <_> + 18 8 1 2 3. + 1 + <_> + + <_> + 16 9 3 8 -1. + <_> + 16 11 3 4 2. + <_> + + <_> + 19 0 1 4 -1. + <_> + 19 2 1 2 2. + <_> + + <_> + 19 0 1 3 -1. + <_> + 19 1 1 1 3. + <_> + + <_> + 9 0 10 3 -1. + <_> + 14 0 5 3 2. + <_> + + <_> + 3 3 15 17 -1. + <_> + 8 3 5 17 3. + <_> + + <_> + 8 0 4 4 -1. + <_> + 9 0 2 4 2. + <_> + + <_> + 1 11 8 1 -1. + <_> + 1 11 4 1 2. + 1 + <_> + + <_> + 4 10 2 4 -1. + <_> + 3 11 2 2 2. + 1 + <_> + + <_> + 4 17 4 3 -1. + <_> + 5 17 2 3 2. + <_> + + <_> + 18 7 2 1 -1. + <_> + 19 7 1 1 2. + <_> + + <_> + 2 7 18 3 -1. + <_> + 11 7 9 3 2. + <_> + + <_> + 4 11 4 2 -1. + <_> + 4 11 2 1 2. + <_> + 6 12 2 1 2. + <_> + + <_> + 4 9 2 4 -1. + <_> + 4 11 2 2 2. + <_> + + <_> + 16 1 3 1 -1. + <_> + 17 2 1 1 3. + 1 + <_> + + <_> + 4 18 1 2 -1. + <_> + 4 19 1 1 2. + <_> + + <_> + 9 18 4 2 -1. + <_> + 10 18 2 2 2. + <_> + + <_> + 12 11 5 4 -1. + <_> + 11 12 5 2 2. + 1 + <_> + + <_> + 18 2 2 1 -1. + <_> + 19 2 1 1 2. + <_> + + <_> + 7 0 6 2 -1. + <_> + 9 0 2 2 3. + <_> + + <_> + 6 13 8 2 -1. + <_> + 8 13 4 2 2. + <_> + + <_> + 14 12 4 4 -1. + <_> + 15 12 2 4 2. + <_> + + <_> + 3 8 17 9 -1. + <_> + 3 11 17 3 3. + <_> + + <_> + 0 12 4 3 -1. + <_> + 2 12 2 3 2. + <_> + + <_> + 8 3 12 6 -1. + <_> + 12 3 4 6 3. + <_> + + <_> + 0 14 3 6 -1. + <_> + 0 17 3 3 2. + <_> + + <_> + 3 0 13 9 -1. + <_> + 3 3 13 3 3. + <_> + + <_> + 8 2 8 6 -1. + <_> + 8 5 8 3 2. + <_> + + <_> + 1 11 18 3 -1. + <_> + 7 11 6 3 3. + <_> + + <_> + 16 17 1 2 -1. + <_> + 16 17 1 1 2. + 1 + <_> + + <_> + 14 12 6 4 -1. + <_> + 16 12 2 4 3. + <_> + + <_> + 13 11 4 5 -1. + <_> + 14 11 2 5 2. + <_> + + <_> + 19 3 1 2 -1. + <_> + 19 4 1 1 2. + <_> + + <_> + 19 0 1 3 -1. + <_> + 19 1 1 1 3. + <_> + + <_> + 7 2 8 4 -1. + <_> + 7 4 8 2 2. + <_> + + <_> + 9 12 3 2 -1. + <_> + 10 12 1 2 3. + <_> + + <_> + 15 8 3 2 -1. + <_> + 16 9 1 2 3. + 1 + <_> + + <_> + 16 15 3 2 -1. + <_> + 16 15 3 1 2. + 1 + <_> + + <_> + 6 12 3 3 -1. + <_> + 7 12 1 3 3. + <_> + + <_> + 13 12 3 1 -1. + <_> + 14 13 1 1 3. + 1 + <_> + + <_> + 4 0 1 3 -1. + <_> + 3 1 1 1 3. + 1 + <_> + + <_> + 8 2 6 4 -1. + <_> + 10 2 2 4 3. + <_> + + <_> + 15 15 2 3 -1. + <_> + 14 16 2 1 3. + 1 + <_> + + <_> + 12 18 8 2 -1. + <_> + 12 19 8 1 2. + <_> + + <_> + 7 12 6 7 -1. + <_> + 9 12 2 7 3. + <_> + + <_> + 4 18 6 2 -1. + <_> + 6 18 2 2 3. + <_> + + <_> + 11 12 3 3 -1. + <_> + 12 12 1 3 3. + <_> + + <_> + 12 12 2 2 -1. + <_> + 13 12 1 2 2. + <_> + + <_> + 18 5 2 1 -1. + <_> + 19 5 1 1 2. + <_> + + <_> + 5 19 4 1 -1. + <_> + 6 19 2 1 2. + <_> + + <_> + 0 11 5 2 -1. + <_> + 0 12 5 1 2. + <_> + + <_> + 18 0 2 2 -1. + <_> + 18 1 2 1 2. + <_> + + <_> + 1 0 12 6 -1. + <_> + 1 2 12 2 3. + <_> + + <_> + 1 1 6 1 -1. + <_> + 3 3 2 1 3. + 1 + <_> + + <_> + 16 9 3 1 -1. + <_> + 17 10 1 1 3. + 1 + <_> + + <_> + 14 10 1 6 -1. + <_> + 12 12 1 2 3. + 1 + <_> + + <_> + 3 1 1 3 -1. + <_> + 2 2 1 1 3. + 1 + <_> + + <_> + 3 0 4 3 -1. + <_> + 2 1 4 1 3. + 1 + <_> + + <_> + 6 14 8 1 -1. + <_> + 8 14 4 1 2. + <_> + + <_> + 1 8 18 9 -1. + <_> + 7 11 6 3 9. + <_> + + <_> + 19 0 1 18 -1. + <_> + 19 6 1 6 3. + <_> + + <_> + 1 13 3 6 -1. + <_> + 1 16 3 3 2. + <_> + + <_> + 6 10 7 3 -1. + <_> + 6 11 7 1 3. + <_> + + <_> + 6 9 7 3 -1. + <_> + 6 10 7 1 3. + <_> + + <_> + 14 1 6 8 -1. + <_> + 17 1 3 8 2. + <_> + + <_> + 9 6 2 4 -1. + <_> + 10 6 1 4 2. + <_> + + <_> + 6 11 7 2 -1. + <_> + 6 12 7 1 2. + <_> + + <_> + 17 11 3 6 -1. + <_> + 18 12 1 6 3. + 1 + <_> + + <_> + 19 17 1 2 -1. + <_> + 19 17 1 1 2. + 1 + <_> + + <_> + 16 9 4 2 -1. + <_> + 17 10 2 2 2. + 1 + <_> + + <_> + 6 18 4 2 -1. + <_> + 7 18 2 2 2. + <_> + + <_> + 2 12 4 4 -1. + <_> + 3 12 2 4 2. + <_> + + <_> + 19 2 1 2 -1. + <_> + 19 3 1 1 2. + <_> + + <_> + 19 2 1 3 -1. + <_> + 19 3 1 1 3. + <_> + + <_> + 1 12 12 3 -1. + <_> + 7 12 6 3 2. + <_> + + <_> + 6 18 4 1 -1. + <_> + 7 18 2 1 2. + <_> + + <_> + 5 2 12 6 -1. + <_> + 5 5 12 3 2. + <_> + + <_> + 9 1 6 6 -1. + <_> + 9 4 6 3 2. + <_> + + <_> + 7 0 11 9 -1. + <_> + 7 3 11 3 3. + <_> + + <_> + 2 0 8 9 -1. + <_> + 2 3 8 3 3. + <_> + + <_> + 5 3 4 3 -1. + <_> + 6 3 2 3 2. + <_> + + <_> + 0 18 3 2 -1. + <_> + 0 19 3 1 2. + <_> + + <_> + 1 0 10 19 -1. + <_> + 6 0 5 19 2. + <_> + + <_> + 3 8 2 3 -1. + <_> + 2 9 2 1 3. + 1 + <_> + + <_> + 10 17 4 3 -1. + <_> + 11 17 2 3 2. + <_> + + <_> + 11 13 3 2 -1. + <_> + 12 13 1 2 3. + <_> + + <_> + 10 12 3 2 -1. + <_> + 11 12 1 2 3. + <_> + + <_> + 9 11 3 3 -1. + <_> + 10 11 1 3 3. + <_> + + <_> + 17 2 3 1 -1. + <_> + 18 3 1 1 3. + 1 + <_> + + <_> + 12 0 6 13 -1. + <_> + 14 0 2 13 3. + <_> + + <_> + 16 0 3 1 -1. + <_> + 17 1 1 1 3. + 1 + <_> + + <_> + 5 11 1 2 -1. + <_> + 5 12 1 1 2. + <_> + + <_> + 2 11 4 2 -1. + <_> + 2 11 2 1 2. + <_> + 4 12 2 1 2. + <_> + + <_> + 16 15 2 3 -1. + <_> + 15 16 2 1 3. + 1 + <_> + + <_> + 8 17 4 2 -1. + <_> + 9 17 2 2 2. + <_> + + <_> + 0 16 4 3 -1. + <_> + 0 17 4 1 3. + <_> + + <_> + 9 13 6 2 -1. + <_> + 12 13 3 2 2. + <_> + + <_> + 2 14 1 2 -1. + <_> + 2 14 1 1 2. + 1 + <_> + + <_> + 5 10 8 3 -1. + <_> + 5 11 8 1 3. + <_> + + <_> + 15 0 3 8 -1. + <_> + 13 2 3 4 2. + 1 + <_> + + <_> + 14 11 4 7 -1. + <_> + 15 11 2 7 2. + <_> + + <_> + 3 11 15 4 -1. + <_> + 8 11 5 4 3. + <_> + + <_> + 9 1 9 9 -1. + <_> + 12 1 3 9 3. + <_> + + <_> + 0 11 4 7 -1. + <_> + 2 11 2 7 2. + <_> + + <_> + 0 16 1 4 -1. + <_> + 0 18 1 2 2. + <_> + + <_> + 19 0 1 6 -1. + <_> + 19 3 1 3 2. + <_> + + <_> + 11 8 9 9 -1. + <_> + 11 11 9 3 3. + <_> + + <_> + 9 17 8 3 -1. + <_> + 11 17 4 3 2. + <_> + + <_> + 18 4 2 2 -1. + <_> + 19 4 1 2 2. + <_> + + <_> + 8 11 3 3 -1. + <_> + 9 12 1 1 9. + <_> + + <_> + 13 2 3 4 -1. + <_> + 13 2 3 2 2. + 1 + <_> + + <_> + 4 6 16 3 -1. + <_> + 12 6 8 3 2. + <_> + + <_> + 10 12 1 3 -1. + <_> + 9 13 1 1 3. + 1 + <_> + + <_> + 8 12 3 3 -1. + <_> + 9 13 1 1 9. + <_> + + <_> + 17 17 1 2 -1. + <_> + 17 17 1 1 2. + 1 + <_> + + <_> + 16 16 2 2 -1. + <_> + 16 16 2 1 2. + 1 + <_> + + <_> + 6 0 9 6 -1. + <_> + 6 2 9 2 3. + <_> + + <_> + 5 0 10 8 -1. + <_> + 5 2 10 4 2. + <_> + + <_> + 17 5 2 1 -1. + <_> + 18 5 1 1 2. + <_> + + <_> + 11 0 9 9 -1. + <_> + 14 0 3 9 3. + <_> + + <_> + 6 9 7 3 -1. + <_> + 6 10 7 1 3. + <_> + + <_> + 3 12 6 2 -1. + <_> + 3 12 3 1 2. + <_> + 6 13 3 1 2. + <_> + + <_> + 2 10 1 2 -1. + <_> + 2 10 1 1 2. + 1 + <_> + + <_> + 13 15 2 3 -1. + <_> + 12 16 2 1 3. + 1 + <_> + + <_> + 7 2 6 5 -1. + <_> + 9 2 2 5 3. + <_> + + <_> + 13 13 6 3 -1. + <_> + 15 13 2 3 3. + <_> + + <_> + 17 9 3 8 -1. + <_> + 17 11 3 4 2. + <_> + + <_> + 8 3 4 3 -1. + <_> + 9 3 2 3 2. + <_> + + <_> + 15 6 2 12 -1. + <_> + 15 6 1 12 2. + 1 + <_> + + <_> + 11 14 4 2 -1. + <_> + 11 14 4 1 2. + 1 + <_> + + <_> + 9 2 5 4 -1. + <_> + 9 4 5 2 2. + <_> + + <_> + 13 12 3 3 -1. + <_> + 14 12 1 3 3. + <_> + + <_> + 18 1 2 3 -1. + <_> + 18 2 2 1 3. + <_> + + <_> + 5 13 4 1 -1. + <_> + 6 13 2 1 2. + <_> + + <_> + 5 10 2 2 -1. + <_> + 5 10 2 1 2. + 1 + <_> + + <_> + 2 11 1 2 -1. + <_> + 2 11 1 1 2. + 1 + <_> + + <_> + 18 3 2 6 -1. + <_> + 18 5 2 2 3. + <_> + + <_> + 10 4 6 2 -1. + <_> + 10 5 6 1 2. + <_> + + <_> + 11 13 6 2 -1. + <_> + 13 13 2 2 3. + <_> + + <_> + 9 11 3 4 -1. + <_> + 9 11 3 2 2. + 1 + <_> + + <_> + 0 11 2 5 -1. + <_> + 1 11 1 5 2. + <_> + + <_> + 0 8 20 9 -1. + <_> + 0 11 20 3 3. + <_> + + <_> + 18 0 1 6 -1. + <_> + 18 3 1 3 2. + <_> + + <_> + 14 1 6 7 -1. + <_> + 17 1 3 7 2. + <_> + + <_> + 4 13 2 4 -1. + <_> + 4 13 1 2 2. + <_> + 5 15 1 2 2. + <_> + + <_> + 1 9 18 6 -1. + <_> + 7 9 6 6 3. + <_> + + <_> + 0 16 5 4 -1. + <_> + 0 18 5 2 2. + <_> + + <_> + 8 14 3 4 -1. + <_> + 8 15 3 2 2. + <_> + + <_> + 7 7 8 3 -1. + <_> + 11 7 4 3 2. + <_> + + <_> + 12 3 4 7 -1. + <_> + 13 3 2 7 2. + <_> + + <_> + 13 12 2 8 -1. + <_> + 13 12 1 4 2. + <_> + 14 16 1 4 2. + <_> + + <_> + 13 10 3 5 -1. + <_> + 14 11 1 5 3. + 1 + <_> + + <_> + 10 5 4 5 -1. + <_> + 11 5 2 5 2. + <_> + + <_> + 2 11 18 2 -1. + <_> + 8 11 6 2 3. + <_> + + <_> + 2 0 1 2 -1. + <_> + 2 0 1 1 2. + 1 + <_> + + <_> + 2 0 1 2 -1. + <_> + 2 0 1 1 2. + 1 + <_> + + <_> + 15 17 1 2 -1. + <_> + 15 17 1 1 2. + 1 + <_> + + <_> + 17 16 1 3 -1. + <_> + 16 17 1 1 3. + 1 + <_> + + <_> + 18 0 2 10 -1. + <_> + 19 0 1 10 2. + <_> + + <_> + 14 2 6 7 -1. + <_> + 16 2 2 7 3. + <_> + + <_> + 12 0 4 4 -1. + <_> + 12 0 4 2 2. + 1 + <_> + + <_> + 0 3 15 6 -1. + <_> + 0 5 15 2 3. + <_> + + <_> + 5 1 4 4 -1. + <_> + 6 1 2 4 2. + <_> + + <_> + 7 13 6 7 -1. + <_> + 9 13 2 7 3. + <_> + + <_> + 6 18 6 2 -1. + <_> + 8 18 2 2 3. + <_> + + <_> + 0 15 5 2 -1. + <_> + 0 16 5 1 2. + <_> + + <_> + 4 1 12 6 -1. + <_> + 4 3 12 2 3. + <_> + + <_> + 5 0 13 8 -1. + <_> + 5 2 13 4 2. + <_> + + <_> + 13 10 6 6 -1. + <_> + 15 12 2 2 9. + <_> + + <_> + 15 9 3 1 -1. + <_> + 16 10 1 1 3. + 1 + <_> + + <_> + 5 11 3 3 -1. + <_> + 6 12 1 1 9. + <_> + + <_> + 6 11 2 2 -1. + <_> + 6 11 1 1 2. + <_> + 7 12 1 1 2. + <_> + + <_> + 17 3 3 2 -1. + <_> + 18 4 1 2 3. + 1 + <_> + + <_> + 16 3 3 3 -1. + <_> + 17 4 1 3 3. + 1 + <_> + + <_> + 12 13 3 1 -1. + <_> + 13 13 1 1 3. + <_> + + <_> + 11 12 3 2 -1. + <_> + 12 12 1 2 3. + <_> + + <_> + 10 0 1 2 -1. + <_> + 10 0 1 1 2. + 1 + <_> + + <_> + 17 13 1 6 -1. + <_> + 17 13 1 3 2. + 1 + <_> + + <_> + 16 14 2 4 -1. + <_> + 16 14 2 2 2. + 1 + <_> + + <_> + 3 0 4 3 -1. + <_> + 4 0 2 3 2. + <_> + + <_> + 6 0 14 1 -1. + <_> + 13 0 7 1 2. + <_> + + <_> + 2 15 18 5 -1. + <_> + 8 15 6 5 3. + <_> + + <_> + 6 11 8 5 -1. + <_> + 8 11 4 5 2. + <_> + + <_> + 0 8 5 12 -1. + <_> + 0 11 5 6 2. + <_> + + <_> + 14 0 6 2 -1. + <_> + 14 0 6 1 2. + 1 + <_> + + <_> + 13 8 4 5 -1. + <_> + 14 9 2 5 2. + 1 + <_> + + <_> + 0 11 4 9 -1. + <_> + 2 11 2 9 2. + <_> + + <_> + 6 9 2 6 -1. + <_> + 6 11 2 2 3. + <_> + + <_> + 12 18 4 2 -1. + <_> + 12 19 4 1 2. + <_> + + <_> + 14 13 6 2 -1. + <_> + 16 13 2 2 3. + <_> + + <_> + 19 9 1 10 -1. + <_> + 19 9 1 5 2. + 1 + <_> + + <_> + 11 5 4 4 -1. + <_> + 12 5 2 4 2. + <_> + + <_> + 14 12 3 5 -1. + <_> + 15 12 1 5 3. + <_> + + <_> + 17 0 2 6 -1. + <_> + 18 0 1 6 2. + <_> + + <_> + 13 16 3 3 -1. + <_> + 14 16 1 3 3. + <_> + + <_> + 19 0 1 4 -1. + <_> + 19 2 1 2 2. + <_> + + <_> + 6 13 4 2 -1. + <_> + 7 13 2 2 2. + <_> + + <_> + 9 11 3 3 -1. + <_> + 10 11 1 3 3. + <_> + + <_> + 14 15 2 3 -1. + <_> + 13 16 2 1 3. + 1 + <_> + + <_> + 11 7 3 4 -1. + <_> + 12 7 1 4 3. + <_> + + <_> + 5 12 1 3 -1. + <_> + 4 13 1 1 3. + 1 + <_> + + <_> + 1 11 6 2 -1. + <_> + 1 11 3 1 2. + <_> + 4 12 3 1 2. + <_> + + <_> + 5 7 2 3 -1. + <_> + 4 8 2 1 3. + 1 + <_> + + <_> + 5 12 2 2 -1. + <_> + 5 12 1 1 2. + <_> + 6 13 1 1 2. + <_> + + <_> + 8 8 4 3 -1. + <_> + 8 9 4 1 3. + <_> + + <_> + 7 8 5 3 -1. + <_> + 7 9 5 1 3. + <_> + + <_> + 6 19 4 1 -1. + <_> + 7 19 2 1 2. + <_> + + <_> + 5 0 4 4 -1. + <_> + 6 0 2 4 2. + <_> + + <_> + 4 0 16 8 -1. + <_> + 8 0 8 8 2. + <_> + + <_> + 12 11 3 4 -1. + <_> + 11 12 3 2 2. + 1 + <_> + + <_> + 0 4 20 6 -1. + <_> + 5 4 10 6 2. + <_> + + <_> + 13 2 2 4 -1. + <_> + 13 2 2 2 2. + 1 + <_> + + <_> + 0 5 14 15 -1. + <_> + 7 5 7 15 2. + <_> + + <_> + 1 18 3 2 -1. + <_> + 1 19 3 1 2. + <_> + + <_> + 3 6 3 3 -1. + <_> + 2 7 3 1 3. + 1 + <_> + + <_> + 0 1 6 8 -1. + <_> + 0 1 3 4 2. + <_> + 3 5 3 4 2. + <_> + + <_> + 5 0 6 6 -1. + <_> + 7 0 2 6 3. + <_> + + <_> + 1 1 15 8 -1. + <_> + 1 3 15 4 2. + <_> + + <_> + 0 0 16 1 -1. + <_> + 8 0 8 1 2. + <_> + + <_> + 3 0 1 2 -1. + <_> + 3 0 1 1 2. + 1 + <_> + + <_> + 3 13 4 1 -1. + <_> + 4 13 2 1 2. + <_> + + <_> + 4 11 2 2 -1. + <_> + 4 11 1 1 2. + <_> + 5 12 1 1 2. + <_> + + <_> + 17 2 3 3 -1. + <_> + 18 3 1 1 9. + <_> + + <_> + 16 3 2 1 -1. + <_> + 17 3 1 1 2. + <_> + + <_> + 0 11 3 2 -1. + <_> + 0 12 3 1 2. + <_> + + <_> + 4 11 4 2 -1. + <_> + 4 11 2 1 2. + <_> + 6 12 2 1 2. + <_> + + <_> + 10 0 4 11 -1. + <_> + 11 0 2 11 2. + <_> + + <_> + 18 15 2 3 -1. + <_> + 17 16 2 1 3. + 1 + <_> + + <_> + 2 11 8 1 -1. + <_> + 2 11 4 1 2. + 1 + <_> + + <_> + 17 13 1 6 -1. + <_> + 17 13 1 3 2. + 1 + <_> + + <_> + 11 13 6 2 -1. + <_> + 13 13 2 2 3. + <_> + + <_> + 19 0 1 10 -1. + <_> + 19 5 1 5 2. + <_> + + <_> + 2 8 7 9 -1. + <_> + 2 11 7 3 3. + <_> + + <_> + 0 11 20 2 -1. + <_> + 5 11 10 2 2. + <_> + + <_> + 6 14 6 1 -1. + <_> + 8 14 2 1 3. + <_> + + <_> + 10 3 8 7 -1. + <_> + 12 3 4 7 2. + <_> + + <_> + 7 0 5 9 -1. + <_> + 7 3 5 3 3. + <_> + + <_> + 0 0 16 6 -1. + <_> + 0 2 16 2 3. + <_> + + <_> + 6 10 2 6 -1. + <_> + 4 12 2 2 3. + 1 + <_> + + <_> + 16 0 4 14 -1. + <_> + 18 0 2 14 2. + <_> + + <_> + 6 0 9 6 -1. + <_> + 6 2 9 2 3. + <_> + + <_> + 8 18 12 2 -1. + <_> + 8 19 12 1 2. + <_> + + <_> + 10 17 4 3 -1. + <_> + 11 17 2 3 2. + <_> + + <_> + 5 0 1 4 -1. + <_> + 4 1 1 2 2. + 1 + <_> + + <_> + 18 6 2 2 -1. + <_> + 18 6 1 2 2. + 1 + <_> + + <_> + 12 10 3 4 -1. + <_> + 11 11 3 2 2. + 1 + <_> + + <_> + 9 9 4 3 -1. + <_> + 9 10 4 1 3. + <_> + + <_> + 9 10 4 3 -1. + <_> + 9 11 4 1 3. + <_> + + <_> + 17 4 3 4 -1. + <_> + 18 5 1 4 3. + 1 + <_> + + <_> + 18 0 2 3 -1. + <_> + 18 1 2 1 3. + <_> + + <_> + 18 1 2 2 -1. + <_> + 18 2 2 1 2. + <_> + + <_> + 19 1 1 3 -1. + <_> + 19 2 1 1 3. + <_> + + <_> + 8 18 4 2 -1. + <_> + 9 18 2 2 2. + <_> + + <_> + 2 13 4 2 -1. + <_> + 2 13 2 1 2. + <_> + 4 14 2 1 2. + <_> + + <_> + 3 11 4 2 -1. + <_> + 3 11 2 1 2. + <_> + 5 12 2 1 2. + <_> + + <_> + 2 10 4 2 -1. + <_> + 2 10 2 1 2. + <_> + 4 11 2 1 2. + <_> + + <_> + 5 9 2 3 -1. + <_> + 4 10 2 1 3. + 1 + <_> + + <_> + 2 10 4 6 -1. + <_> + 3 10 2 6 2. + <_> + + <_> + 13 0 6 8 -1. + <_> + 16 0 3 8 2. + <_> + + <_> + 10 0 8 9 -1. + <_> + 12 0 4 9 2. + <_> + + <_> + 1 11 8 1 -1. + <_> + 1 11 4 1 2. + 1 + <_> + + <_> + 3 0 1 3 -1. + <_> + 2 1 1 1 3. + 1 + <_> + + <_> + 13 13 2 2 -1. + <_> + 14 13 1 2 2. + <_> + + <_> + 4 12 3 4 -1. + <_> + 5 12 1 4 3. + <_> + + <_> + 6 17 4 3 -1. + <_> + 7 17 2 3 2. + <_> + + <_> + 14 1 2 6 -1. + <_> + 14 1 2 3 2. + 1 + <_> + + <_> + 8 4 8 4 -1. + <_> + 8 6 8 2 2. + <_> + + <_> + 8 3 4 5 -1. + <_> + 10 3 2 5 2. + <_> + + <_> + 13 12 2 2 -1. + <_> + 13 12 1 1 2. + <_> + 14 13 1 1 2. + <_> + + <_> + 6 12 3 3 -1. + <_> + 7 12 1 3 3. + <_> + + <_> + 5 7 3 3 -1. + <_> + 4 8 3 1 3. + 1 + <_> + + <_> + 15 10 5 4 -1. + <_> + 15 11 5 2 2. + <_> + + <_> + 14 8 4 9 -1. + <_> + 14 11 4 3 3. + <_> + + <_> + 16 9 4 3 -1. + <_> + 16 10 4 1 3. + <_> + + <_> + 18 7 2 13 -1. + <_> + 19 7 1 13 2. + <_> + + <_> + 0 0 16 1 -1. + <_> + 8 0 8 1 2. + <_> + + <_> + 12 11 5 4 -1. + <_> + 11 12 5 2 2. + 1 + <_> + + <_> + 17 13 2 4 -1. + <_> + 18 13 1 4 2. + <_> + + <_> + 6 13 9 2 -1. + <_> + 9 13 3 2 3. + <_> + + <_> + 3 8 6 8 -1. + <_> + 3 10 6 4 2. + <_> + + <_> + 14 12 4 3 -1. + <_> + 15 12 2 3 2. + <_> + + <_> + 12 6 6 4 -1. + <_> + 14 8 2 4 3. + 1 + <_> + + <_> + 4 0 12 6 -1. + <_> + 4 3 12 3 2. + <_> + + <_> + 0 0 17 2 -1. + <_> + 0 1 17 1 2. + <_> + + <_> + 2 14 1 6 -1. + <_> + 2 17 1 3 2. + <_> + + <_> + 3 10 3 3 -1. + <_> + 2 11 3 1 3. + 1 + <_> + + <_> + 18 2 2 9 -1. + <_> + 19 2 1 9 2. + <_> + + <_> + 7 9 13 8 -1. + <_> + 7 11 13 4 2. + <_> + + <_> + 17 6 3 4 -1. + <_> + 18 7 1 4 3. + 1 + <_> + + <_> + 6 13 2 2 -1. + <_> + 7 13 1 2 2. + <_> + + <_> + 15 16 1 3 -1. + <_> + 14 17 1 1 3. + 1 + <_> + + <_> + 11 16 6 4 -1. + <_> + 11 16 3 2 2. + <_> + 14 18 3 2 2. + <_> + + <_> + 19 0 1 4 -1. + <_> + 19 1 1 2 2. + <_> + + <_> + 19 0 1 2 -1. + <_> + 19 1 1 1 2. + <_> + + <_> + 12 3 3 6 -1. + <_> + 13 3 1 6 3. + <_> + + <_> + 8 10 4 3 -1. + <_> + 8 11 4 1 3. + <_> + + <_> + 19 0 1 8 -1. + <_> + 19 4 1 4 2. + <_> + + <_> + 14 0 6 6 -1. + <_> + 14 0 3 3 2. + <_> + 17 3 3 3 2. + <_> + + <_> + 8 11 3 3 -1. + <_> + 9 12 1 1 9. + <_> + + <_> + 1 6 10 12 -1. + <_> + 6 6 5 12 2. + <_> + + <_> + 10 6 2 1 -1. + <_> + 11 6 1 1 2. + <_> + + <_> + 8 1 7 10 -1. + <_> + 8 6 7 5 2. + <_> + + <_> + 13 11 3 3 -1. + <_> + 14 12 1 3 3. + 1 + <_> + + <_> + 10 13 4 4 -1. + <_> + 10 13 2 2 2. + <_> + 12 15 2 2 2. + <_> + + <_> + 15 15 2 3 -1. + <_> + 14 16 2 1 3. + 1 + <_> + + <_> + 13 13 3 1 -1. + <_> + 14 13 1 1 3. + <_> + + <_> + 10 4 6 3 -1. + <_> + 12 4 2 3 3. + <_> + + <_> + 1 7 6 4 -1. + <_> + 1 7 3 2 2. + <_> + 4 9 3 2 2. + <_> + + <_> + 15 7 4 2 -1. + <_> + 16 8 2 2 2. + 1 + <_> + + <_> + 10 4 9 6 -1. + <_> + 13 4 3 6 3. + <_> + + <_> + 14 2 6 2 -1. + <_> + 14 2 6 1 2. + 1 + <_> + + <_> + 5 18 4 2 -1. + <_> + 6 18 2 2 2. + <_> + + <_> + 0 12 2 8 -1. + <_> + 1 12 1 8 2. + <_> + + <_> + 1 19 18 1 -1. + <_> + 10 19 9 1 2. + <_> + + <_> + 2 0 12 20 -1. + <_> + 8 0 6 20 2. + <_> + + <_> + 2 0 14 1 -1. + <_> + 9 0 7 1 2. + <_> + + <_> + 7 9 8 3 -1. + <_> + 7 10 8 1 3. + <_> + + <_> + 3 11 2 2 -1. + <_> + 3 11 1 1 2. + <_> + 4 12 1 1 2. + <_> + + <_> + 11 0 9 2 -1. + <_> + 14 0 3 2 3. + <_> + + <_> + 6 0 9 1 -1. + <_> + 9 0 3 1 3. + <_> + + <_> + 4 8 1 4 -1. + <_> + 3 9 1 2 2. + 1 + <_> + + <_> + 0 9 3 3 -1. + <_> + 0 10 3 1 3. + <_> + + <_> + 3 4 15 12 -1. + <_> + 8 8 5 4 9. + <_> + + <_> + 7 13 6 6 -1. + <_> + 9 13 2 6 3. + <_> + + <_> + 2 1 12 6 -1. + <_> + 2 3 12 2 3. + <_> + + <_> + 1 1 6 1 -1. + <_> + 3 3 2 1 3. + 1 + <_> + + <_> + 3 4 5 3 -1. + <_> + 2 5 5 1 3. + 1 + <_> + + <_> + 2 12 2 2 -1. + <_> + 2 12 1 1 2. + <_> + 3 13 1 1 2. + <_> + + <_> + 8 11 3 3 -1. + <_> + 9 11 1 3 3. + <_> + + <_> + 9 11 3 4 -1. + <_> + 10 11 1 4 3. + <_> + + <_> + 17 2 3 1 -1. + <_> + 18 3 1 1 3. + 1 + <_> + + <_> + 5 11 6 3 -1. + <_> + 8 11 3 3 2. + <_> + + <_> + 2 12 12 8 -1. + <_> + 2 12 6 4 2. + <_> + 8 16 6 4 2. + <_> + + <_> + 13 15 2 3 -1. + <_> + 12 16 2 1 3. + 1 + <_> + + <_> + 5 14 9 1 -1. + <_> + 8 14 3 1 3. + <_> + + <_> + 13 13 4 6 -1. + <_> + 13 13 2 3 2. + <_> + 15 16 2 3 2. + <_> + + <_> + 8 7 9 1 -1. + <_> + 11 10 3 1 3. + 1 + <_> + + <_> + 16 0 4 4 -1. + <_> + 16 0 4 2 2. + 1 + <_> + + <_> + 2 13 2 2 -1. + <_> + 2 13 2 1 2. + 1 + <_> + + <_> + 5 12 2 2 -1. + <_> + 5 13 2 1 2. + <_> + + <_> + 0 16 2 4 -1. + <_> + 0 18 2 2 2. + <_> + + <_> + 0 8 14 11 -1. + <_> + 7 8 7 11 2. + <_> + + <_> + 4 17 4 3 -1. + <_> + 5 17 2 3 2. + <_> + + <_> + 3 12 3 5 -1. + <_> + 4 12 1 5 3. + <_> + + <_> + 5 11 1 3 -1. + <_> + 5 12 1 1 3. + <_> + + <_> + 4 10 4 2 -1. + <_> + 4 10 2 1 2. + <_> + 6 11 2 1 2. + <_> + + <_> + 15 9 3 1 -1. + <_> + 16 10 1 1 3. + 1 + <_> + + <_> + 3 0 16 7 -1. + <_> + 7 0 8 7 2. + <_> + + <_> + 2 2 17 6 -1. + <_> + 2 5 17 3 2. + <_> + + <_> + 2 4 14 6 -1. + <_> + 2 6 14 2 3. + <_> + + <_> + 2 9 6 2 -1. + <_> + 2 9 3 1 2. + <_> + 5 10 3 1 2. + <_> + + <_> + 3 11 4 2 -1. + <_> + 3 11 2 1 2. + <_> + 5 12 2 1 2. + <_> + + <_> + 16 13 4 2 -1. + <_> + 18 13 2 2 2. + <_> + + <_> + 15 7 3 2 -1. + <_> + 16 8 1 2 3. + 1 + <_> + + <_> + 0 11 4 2 -1. + <_> + 0 12 4 1 2. + <_> + + <_> + 4 9 2 3 -1. + <_> + 3 10 2 1 3. + 1 + <_> + + <_> + 3 18 6 2 -1. + <_> + 5 18 2 2 3. + <_> + + <_> + 11 12 3 2 -1. + <_> + 12 12 1 2 3. + <_> + + <_> + 19 0 1 2 -1. + <_> + 19 1 1 1 2. + <_> + + <_> + 0 0 14 1 -1. + <_> + 7 0 7 1 2. + <_> + + <_> + 11 10 3 4 -1. + <_> + 10 11 3 2 2. + 1 + <_> + + <_> + 14 16 1 3 -1. + <_> + 13 17 1 1 3. + 1 + <_> + + <_> + 18 1 2 4 -1. + <_> + 19 1 1 4 2. + <_> + + <_> + 15 13 5 6 -1. + <_> + 15 15 5 2 3. + <_> + + <_> + 16 4 3 3 -1. + <_> + 17 5 1 3 3. + 1 + <_> + + <_> + 4 6 16 14 -1. + <_> + 12 6 8 14 2. + <_> + + <_> + 10 12 3 1 -1. + <_> + 11 12 1 1 3. + <_> + + <_> + 5 12 2 2 -1. + <_> + 5 12 1 1 2. + <_> + 6 13 1 1 2. + <_> + + <_> + 9 3 4 5 -1. + <_> + 10 3 2 5 2. + <_> + + <_> + 18 1 2 3 -1. + <_> + 18 2 2 1 3. + <_> + + <_> + 19 17 1 2 -1. + <_> + 19 17 1 1 2. + 1 + <_> + + <_> + 17 16 2 2 -1. + <_> + 17 16 2 1 2. + 1 + <_> + + <_> + 10 2 7 6 -1. + <_> + 10 4 7 2 3. + <_> + + <_> + 2 0 13 4 -1. + <_> + 2 1 13 2 2. + <_> + + <_> + 2 0 2 2 -1. + <_> + 2 0 1 2 2. + 1 + <_> + + <_> + 0 3 6 8 -1. + <_> + 3 3 3 8 2. + <_> + + <_> + 3 0 1 3 -1. + <_> + 2 1 1 1 3. + 1 + <_> + + <_> + 8 0 6 9 -1. + <_> + 10 0 2 9 3. + <_> + + <_> + 17 9 3 2 -1. + <_> + 18 10 1 2 3. + 1 + <_> + + <_> + 16 8 4 6 -1. + <_> + 16 10 4 2 3. + <_> + + <_> + 6 9 7 3 -1. + <_> + 6 10 7 1 3. + <_> + + <_> + 2 10 3 4 -1. + <_> + 2 11 3 2 2. + <_> + + <_> + 15 8 1 6 -1. + <_> + 15 8 1 3 2. + 1 + <_> + + <_> + 19 3 1 12 -1. + <_> + 19 7 1 4 3. + <_> + + <_> + 2 0 5 2 -1. + <_> + 2 0 5 1 2. + 1 + <_> + + <_> + 1 3 11 6 -1. + <_> + 1 5 11 2 3. + <_> + + <_> + 14 13 2 4 -1. + <_> + 14 13 1 2 2. + <_> + 15 15 1 2 2. + <_> + + <_> + 8 11 10 3 -1. + <_> + 13 11 5 3 2. + <_> + + <_> + 6 11 1 4 -1. + <_> + 6 13 1 2 2. + <_> + + <_> + 2 9 3 9 -1. + <_> + 3 12 1 3 9. + <_> + + <_> + 4 0 15 9 -1. + <_> + 9 3 5 3 9. + <_> + + <_> + 12 0 6 4 -1. + <_> + 12 0 6 2 2. + 1 + <_> + + <_> + 10 5 4 5 -1. + <_> + 12 5 2 5 2. + <_> + + <_> + 1 7 18 12 -1. + <_> + 7 11 6 4 9. + <_> + + <_> + 14 12 6 4 -1. + <_> + 16 12 2 4 3. + <_> + + <_> + 13 12 3 3 -1. + <_> + 14 12 1 3 3. + <_> + + <_> + 14 9 4 1 -1. + <_> + 15 10 2 1 2. + 1 + <_> + + <_> + 17 7 3 2 -1. + <_> + 18 8 1 2 3. + 1 + <_> + + <_> + 19 3 1 2 -1. + <_> + 19 4 1 1 2. + <_> + + <_> + 19 1 1 4 -1. + <_> + 19 2 1 2 2. + <_> + + <_> + 3 2 12 8 -1. + <_> + 3 4 12 4 2. + <_> + + <_> + 1 0 16 6 -1. + <_> + 1 2 16 2 3. + <_> + + <_> + 16 8 3 1 -1. + <_> + 17 9 1 1 3. + 1 + <_> + + <_> + 7 13 6 3 -1. + <_> + 9 14 2 1 9. + <_> + + <_> + 11 18 6 2 -1. + <_> + 11 19 6 1 2. + <_> + + <_> + 15 17 5 3 -1. + <_> + 15 18 5 1 3. + <_> + + <_> + 2 1 18 4 -1. + <_> + 8 1 6 4 3. + <_> + + <_> + 5 0 1 2 -1. + <_> + 5 1 1 1 2. + <_> + + <_> + 1 11 6 6 -1. + <_> + 3 13 2 2 9. + <_> + + <_> + 3 12 4 2 -1. + <_> + 3 12 2 1 2. + <_> + 5 13 2 1 2. + <_> + + <_> + 3 0 3 3 -1. + <_> + 2 1 3 1 3. + 1 + <_> + + <_> + 8 10 3 3 -1. + <_> + 9 11 1 1 9. + <_> + + <_> + 0 16 2 2 -1. + <_> + 0 17 2 1 2. + <_> + + <_> + 0 16 4 3 -1. + <_> + 0 17 4 1 3. + <_> + + <_> + 0 13 12 1 -1. + <_> + 6 13 6 1 2. + <_> + + <_> + 13 2 6 9 -1. + <_> + 15 2 2 9 3. + <_> + + <_> + 8 11 3 3 -1. + <_> + 9 11 1 3 3. + <_> + + <_> + 9 11 3 4 -1. + <_> + 10 11 1 4 3. + <_> + + <_> + 13 0 6 10 -1. + <_> + 15 0 2 10 3. + <_> + + <_> + 4 10 1 4 -1. + <_> + 3 11 1 2 2. + 1 + <_> + + <_> + 9 11 3 3 -1. + <_> + 10 12 1 1 9. + <_> + + <_> + 6 12 3 3 -1. + <_> + 5 13 3 1 3. + 1 + <_> + + <_> + 17 6 2 1 -1. + <_> + 18 6 1 1 2. + <_> + + <_> + 16 2 1 4 -1. + <_> + 16 2 1 2 2. + 1 + <_> + + <_> + 2 5 13 4 -1. + <_> + 2 6 13 2 2. + <_> + + <_> + 14 4 6 2 -1. + <_> + 14 4 6 1 2. + 1 + <_> + + <_> + 3 8 1 3 -1. + <_> + 2 9 1 1 3. + 1 + <_> + + <_> + 7 7 8 3 -1. + <_> + 7 8 8 1 3. + <_> + + <_> + 8 8 4 3 -1. + <_> + 10 8 2 3 2. + <_> + + <_> + 10 11 3 8 -1. + <_> + 10 15 3 4 2. + <_> + + <_> + 13 15 2 3 -1. + <_> + 12 16 2 1 3. + 1 + <_> + + <_> + 0 0 12 20 -1. + <_> + 6 0 6 20 2. + <_> + + <_> + 0 0 10 1 -1. + <_> + 5 0 5 1 2. + <_> + + <_> + 0 0 6 3 -1. + <_> + 0 1 6 1 3. + <_> + + <_> + 14 13 2 2 -1. + <_> + 14 13 1 1 2. + <_> + 15 14 1 1 2. + <_> + + <_> + 12 10 4 2 -1. + <_> + 12 10 2 1 2. + <_> + 14 11 2 1 2. + <_> + + <_> + 7 0 6 4 -1. + <_> + 9 0 2 4 3. + <_> + + <_> + 0 0 10 10 -1. + <_> + 0 0 5 5 2. + <_> + 5 5 5 5 2. + <_> + + <_> + 6 3 4 2 -1. + <_> + 7 3 2 2 2. + <_> + + <_> + 1 5 4 11 -1. + <_> + 2 5 2 11 2. + <_> + + <_> + 12 8 3 1 -1. + <_> + 13 8 1 1 3. + <_> + + <_> + 2 2 6 2 -1. + <_> + 2 2 6 1 2. + 1 + <_> + + <_> + 13 5 7 3 -1. + <_> + 12 6 7 1 3. + 1 + <_> + + <_> + 13 7 3 4 -1. + <_> + 14 7 1 4 3. + <_> + + <_> + 8 12 3 2 -1. + <_> + 8 12 3 1 2. + 1 + <_> + + <_> + 0 10 4 8 -1. + <_> + 0 12 4 4 2. + <_> + + <_> + 14 13 2 6 -1. + <_> + 14 13 1 3 2. + <_> + 15 16 1 3 2. + <_> + + <_> + 16 17 1 2 -1. + <_> + 16 17 1 1 2. + 1 + <_> + + <_> + 12 0 3 6 -1. + <_> + 10 2 3 2 3. + 1 + <_> + + <_> + 4 10 14 3 -1. + <_> + 4 11 14 1 3. + <_> + + <_> + 19 4 1 12 -1. + <_> + 19 8 1 4 3. + <_> + + <_> + 19 2 1 6 -1. + <_> + 19 4 1 2 3. + <_> + + <_> + 8 12 12 3 -1. + <_> + 14 12 6 3 2. + <_> + + <_> + 0 13 2 3 -1. + <_> + 1 13 1 3 2. + <_> + + <_> + 16 0 4 9 -1. + <_> + 18 0 2 9 2. + <_> + + <_> + 9 2 6 4 -1. + <_> + 9 4 6 2 2. + <_> + + <_> + 16 2 3 1 -1. + <_> + 17 3 1 1 3. + 1 + <_> + + <_> + 15 12 3 6 -1. + <_> + 16 12 1 6 3. + <_> + + <_> + 13 12 3 3 -1. + <_> + 14 12 1 3 3. + <_> + + <_> + 3 3 15 4 -1. + <_> + 3 5 15 2 2. + <_> + + <_> + 11 11 3 4 -1. + <_> + 12 11 1 4 3. + <_> + + <_> + 10 11 3 3 -1. + <_> + 11 11 1 3 3. + <_> + + <_> + 19 0 1 4 -1. + <_> + 19 2 1 2 2. + <_> + + <_> + 14 0 3 3 -1. + <_> + 15 1 1 3 3. + 1 + <_> + + <_> + 2 10 8 2 -1. + <_> + 2 10 4 2 2. + 1 + <_> + + <_> + 9 18 4 2 -1. + <_> + 10 18 2 2 2. + <_> + + <_> + 10 0 4 9 -1. + <_> + 11 0 2 9 2. + <_> + + <_> + 15 10 5 6 -1. + <_> + 15 12 5 2 3. + <_> + + <_> + 2 13 4 2 -1. + <_> + 3 13 2 2 2. + <_> + + <_> + 2 15 4 1 -1. + <_> + 3 16 2 1 2. + 1 + <_> + + <_> + 15 8 3 2 -1. + <_> + 16 9 1 2 3. + 1 + <_> + + <_> + 0 6 4 2 -1. + <_> + 2 6 2 2 2. + <_> + + <_> + 9 17 6 1 -1. + <_> + 12 17 3 1 2. + <_> + + <_> + 14 19 6 1 -1. + <_> + 17 19 3 1 2. + <_> + + <_> + 17 18 1 2 -1. + <_> + 17 19 1 1 2. + <_> + + <_> + 17 16 2 2 -1. + <_> + 17 16 2 1 2. + 1 + <_> + + <_> + 19 3 1 9 -1. + <_> + 19 6 1 3 3. + <_> + + <_> + 10 10 3 3 -1. + <_> + 9 11 3 1 3. + 1 + <_> + + <_> + 3 0 3 3 -1. + <_> + 2 1 3 1 3. + 1 + <_> + + <_> + 17 16 2 2 -1. + <_> + 17 16 2 1 2. + 1 + <_> + + <_> + 5 11 3 3 -1. + <_> + 6 12 1 3 3. + 1 + <_> + + <_> + 3 11 2 2 -1. + <_> + 3 11 1 1 2. + <_> + 4 12 1 1 2. + <_> + + <_> + 16 9 2 2 -1. + <_> + 16 9 1 2 2. + 1 + <_> + + <_> + 4 9 2 2 -1. + <_> + 4 9 2 1 2. + 1 + <_> + + <_> + 3 10 2 3 -1. + <_> + 2 11 2 1 3. + 1 + <_> + + <_> + 0 0 20 20 -1. + <_> + 0 0 10 10 2. + <_> + 10 10 10 10 2. + <_> + + <_> + 7 16 5 3 -1. + <_> + 7 17 5 1 3. + <_> + + <_> + 14 1 3 6 -1. + <_> + 12 3 3 2 3. + 1 + <_> + + <_> + 6 0 4 7 -1. + <_> + 7 0 2 7 2. + <_> + + <_> + 9 5 9 6 -1. + <_> + 12 5 3 6 3. + <_> + + <_> + 5 18 4 2 -1. + <_> + 6 18 2 2 2. + <_> + + <_> + 7 7 6 8 -1. + <_> + 9 7 2 8 3. + <_> + + <_> + 18 16 2 4 -1. + <_> + 18 16 1 2 2. + <_> + 19 18 1 2 2. + <_> + + <_> + 11 18 2 2 -1. + <_> + 12 18 1 2 2. + <_> + + <_> + 3 2 5 2 -1. + <_> + 3 3 5 1 2. + <_> + + <_> + 7 1 6 4 -1. + <_> + 7 3 6 2 2. + <_> + + <_> + 2 0 2 2 -1. + <_> + 2 0 2 1 2. + 1 + <_> + + <_> + 0 1 16 1 -1. + <_> + 8 1 8 1 2. + <_> + + <_> + 11 1 3 10 -1. + <_> + 12 1 1 10 3. + <_> + + <_> + 4 0 4 4 -1. + <_> + 5 1 2 4 2. + 1 + <_> + + <_> + 4 13 3 2 -1. + <_> + 5 13 1 2 3. + <_> + + <_> + 8 11 4 3 -1. + <_> + 7 12 4 1 3. + 1 + <_> + + <_> + 7 17 4 3 -1. + <_> + 8 17 2 3 2. + <_> + + <_> + 5 19 2 1 -1. + <_> + 6 19 1 1 2. + <_> + + <_> + 0 9 2 2 -1. + <_> + 0 9 1 1 2. + <_> + 1 10 1 1 2. + <_> + + <_> + 0 9 2 2 -1. + <_> + 0 9 1 1 2. + <_> + 1 10 1 1 2. + <_> + + <_> + 6 9 2 2 -1. + <_> + 6 9 2 1 2. + 1 + <_> + + <_> + 0 10 5 3 -1. + <_> + 0 11 5 1 3. + <_> + + <_> + 3 10 2 2 -1. + <_> + 3 10 1 1 2. + <_> + 4 11 1 1 2. + <_> + + <_> + 0 10 18 1 -1. + <_> + 6 10 6 1 3. + <_> + + <_> + 17 4 3 1 -1. + <_> + 18 5 1 1 3. + 1 + <_> + + <_> + 17 1 2 7 -1. + <_> + 17 1 1 7 2. + 1 + <_> + + <_> + 6 13 9 2 -1. + <_> + 9 13 3 2 3. + <_> + + <_> + 4 9 16 6 -1. + <_> + 4 11 16 2 3. + <_> + + <_> + 1 1 16 4 -1. + <_> + 1 3 16 2 2. + <_> + + <_> + 14 12 3 3 -1. + <_> + 15 12 1 3 3. + <_> + + <_> + 2 9 6 2 -1. + <_> + 4 11 2 2 3. + 1 + <_> + + <_> + 10 0 8 10 -1. + <_> + 12 0 4 10 2. + <_> + + <_> + 1 12 16 4 -1. + <_> + 5 12 8 4 2. + <_> + + <_> + 13 8 6 9 -1. + <_> + 15 11 2 3 9. + <_> + + <_> + 19 0 1 8 -1. + <_> + 19 4 1 4 2. + <_> + + <_> + 8 2 10 6 -1. + <_> + 8 5 10 3 2. + <_> + + <_> + 18 7 2 1 -1. + <_> + 19 7 1 1 2. + <_> + + <_> + 19 4 1 12 -1. + <_> + 19 7 1 6 2. + <_> + + <_> + 8 11 3 3 -1. + <_> + 9 12 1 1 9. + <_> + + <_> + 7 12 3 3 -1. + <_> + 8 12 1 3 3. + <_> + + <_> + 6 13 3 2 -1. + <_> + 7 13 1 2 3. + <_> + + <_> + 17 15 3 2 -1. + <_> + 17 15 3 1 2. + 1 + <_> + + <_> + 11 6 3 3 -1. + <_> + 12 6 1 3 3. + <_> + + <_> + 0 15 2 4 -1. + <_> + 0 17 2 2 2. + <_> + + <_> + 12 9 7 2 -1. + <_> + 12 9 7 1 2. + 1 + <_> + + <_> + 6 5 8 7 -1. + <_> + 10 5 4 7 2. + <_> + + <_> + 6 17 8 3 -1. + <_> + 8 17 4 3 2. + <_> + + <_> + 0 17 4 3 -1. + <_> + 0 18 4 1 3. + <_> + + <_> + 5 1 10 6 -1. + <_> + 5 3 10 2 3. + <_> + + <_> + 0 2 18 2 -1. + <_> + 6 2 6 2 3. + <_> + + <_> + 7 8 6 3 -1. + <_> + 7 9 6 1 3. + <_> + + <_> + 10 8 1 3 -1. + <_> + 10 9 1 1 3. + <_> + + <_> + 16 1 3 2 -1. + <_> + 17 2 1 2 3. + 1 + <_> + + <_> + 2 10 1 2 -1. + <_> + 2 10 1 1 2. + 1 + <_> + + <_> + 2 9 1 2 -1. + <_> + 2 9 1 1 2. + 1 + <_> + + <_> + 3 9 2 3 -1. + <_> + 2 10 2 1 3. + 1 + <_> + + <_> + 2 14 12 6 -1. + <_> + 2 14 6 3 2. + <_> + 8 17 6 3 2. + <_> + + <_> + 15 17 1 2 -1. + <_> + 15 17 1 1 2. + 1 + <_> + + <_> + 17 11 3 3 -1. + <_> + 18 12 1 3 3. + 1 + <_> + + <_> + 13 12 3 2 -1. + <_> + 14 12 1 2 3. + <_> + + <_> + 16 18 4 2 -1. + <_> + 18 18 2 2 2. + <_> + + <_> + 18 14 2 4 -1. + <_> + 17 15 2 2 2. + 1 + <_> + + <_> + 12 13 3 1 -1. + <_> + 13 13 1 1 3. + <_> + + <_> + 11 12 3 3 -1. + <_> + 12 13 1 1 9. + <_> + + <_> + 0 0 16 20 -1. + <_> + 8 0 8 20 2. + <_> + + <_> + 3 0 8 5 -1. + <_> + 5 0 4 5 2. + <_> + + <_> + 0 0 2 1 -1. + <_> + 1 0 1 1 2. + <_> + + <_> + 1 2 19 4 -1. + <_> + 1 4 19 2 2. + <_> + + <_> + 12 7 3 4 -1. + <_> + 13 7 1 4 3. + <_> + + <_> + 15 6 3 3 -1. + <_> + 16 7 1 3 3. + 1 + <_> + + <_> + 3 13 2 2 -1. + <_> + 3 13 1 1 2. + <_> + 4 14 1 1 2. + <_> + + <_> + 2 12 2 2 -1. + <_> + 2 12 1 1 2. + <_> + 3 13 1 1 2. + <_> + + <_> + 0 3 19 4 -1. + <_> + 0 4 19 2 2. + <_> + + <_> + 17 7 3 4 -1. + <_> + 18 8 1 4 3. + 1 + <_> + + <_> + 4 8 3 4 -1. + <_> + 5 9 1 4 3. + 1 + <_> + + <_> + 14 11 4 6 -1. + <_> + 15 11 2 6 2. + <_> + + <_> + 18 3 2 6 -1. + <_> + 18 5 2 2 3. + <_> + + <_> + 14 3 2 4 -1. + <_> + 14 3 2 2 2. + 1 + <_> + + <_> + 7 9 5 4 -1. + <_> + 7 10 5 2 2. + <_> + + <_> + 12 11 8 2 -1. + <_> + 12 12 8 1 2. + <_> + + <_> + 16 13 3 4 -1. + <_> + 16 13 3 2 2. + 1 + <_> + + <_> + 14 7 5 9 -1. + <_> + 14 10 5 3 3. + <_> + + <_> + 0 12 1 3 -1. + <_> + 0 13 1 1 3. + <_> + + <_> + 6 6 3 6 -1. + <_> + 4 8 3 2 3. + 1 + <_> + + <_> + 0 9 9 1 -1. + <_> + 3 9 3 1 3. + <_> + + <_> + 0 9 6 2 -1. + <_> + 0 9 3 1 2. + <_> + 3 10 3 1 2. + <_> + + <_> + 3 2 4 4 -1. + <_> + 4 2 2 4 2. + <_> + + <_> + 18 3 2 3 -1. + <_> + 18 4 2 1 3. + <_> + + <_> + 6 16 3 3 -1. + <_> + 6 17 3 1 3. + <_> + + <_> + 1 16 6 3 -1. + <_> + 1 17 6 1 3. + diff --git a/venv/lib/python3.11/site-packages/cv2/data/haarcascade_russian_plate_number.xml b/venv/lib/python3.11/site-packages/cv2/data/haarcascade_russian_plate_number.xml new file mode 100644 index 0000000000000000000000000000000000000000..39f5fcdd8b0de656af7d21ca20dc9cefa3906af1 --- /dev/null +++ b/venv/lib/python3.11/site-packages/cv2/data/haarcascade_russian_plate_number.xml @@ -0,0 +1,2656 @@ + + + + BOOST + HAAR + 20 + 60 + + GAB + 9.9500000476837158e-001 + 5.0000000000000000e-001 + 9.4999999999999996e-001 + 1 + 100 + + 0 + 1 + ALL + 20 + + + <_> + 6 + -1.3110191822052002e+000 + + <_> + + 0 -1 193 1.0079263709485531e-002 + + -8.1339186429977417e-001 5.0277775526046753e-001 + <_> + + 0 -1 94 -2.2060684859752655e-002 + + 7.9418992996215820e-001 -5.0896102190017700e-001 + <_> + + 0 -1 18 -4.8777908086776733e-002 + + 7.1656656265258789e-001 -4.1640335321426392e-001 + <_> + + 0 -1 35 1.0387318208813667e-002 + + 3.7618312239646912e-001 -8.5504144430160522e-001 + <_> + + 0 -1 191 -9.4083719886839390e-004 + + 4.2658549547195435e-001 -5.7729166746139526e-001 + <_> + + 0 -1 48 -8.2391249015927315e-003 + + 8.2346975803375244e-001 -3.7503159046173096e-001 + + <_> + 6 + -1.1759783029556274e+000 + + <_> + + 0 -1 21 1.7386786639690399e-001 + + -6.8139964342117310e-001 6.0767590999603271e-001 + <_> + + 0 -1 28 -1.9797295331954956e-002 + + 7.8072130680084229e-001 -4.4399836659431458e-001 + <_> + + 0 -1 46 -1.0154811898246408e-003 + + 3.3383268117904663e-001 -7.6357340812683105e-001 + <_> + + 0 -1 138 2.4954911321401596e-002 + + -3.9979115128517151e-001 6.8620890378952026e-001 + <_> + + 0 -1 25 2.8837744612246752e-003 + + -2.7928480505943298e-001 7.9980146884918213e-001 + <_> + + 0 -1 26 -3.8839362561702728e-002 + + -7.8442335128784180e-001 3.4929576516151428e-001 + + <_> + 6 + -1.7856997251510620e+000 + + <_> + + 0 -1 34 2.7977079153060913e-002 + + -5.8424139022827148e-001 6.6850829124450684e-001 + <_> + + 0 -1 171 1.9148588180541992e-002 + + -6.5457659959793091e-001 4.0804430842399597e-001 + <_> + + 0 -1 7 1.1955041438341141e-002 + + -4.2002618312835693e-001 5.6217432022094727e-001 + <_> + + 0 -1 45 -2.1218564361333847e-002 + + 7.1812576055526733e-001 -3.0354043841362000e-001 + <_> + + 0 -1 108 2.0117280655540526e-004 + + -6.1749500036239624e-001 3.5549193620681763e-001 + <_> + + 0 -1 122 3.9725980604998767e-004 + + -2.6844096183776855e-001 7.6771658658981323e-001 + + <_> + 9 + -1.1837021112442017e+000 + + <_> + + 0 -1 202 -1.3291766867041588e-002 + + 4.5248869061470032e-001 -5.8849954605102539e-001 + <_> + + 0 -1 79 -4.8353265970945358e-002 + + 7.0951640605926514e-001 -3.2546108961105347e-001 + <_> + + 0 -1 22 2.6532993651926517e-003 + + -2.5343564152717590e-001 7.6588714122772217e-001 + <_> + + 0 -1 66 -3.8548894226551056e-002 + + 5.8126109838485718e-001 -3.0813106894493103e-001 + <_> + + 0 -1 41 -6.8602780811488628e-004 + + 2.6361095905303955e-001 -7.2226840257644653e-001 + <_> + + 0 -1 69 -2.5726919993758202e-002 + + -8.7153857946395874e-001 1.9438524544239044e-001 + <_> + + 0 -1 24 8.4192806389182806e-004 + + -3.6150649189949036e-001 5.2065432071685791e-001 + <_> + + 0 -1 62 -2.6956878136843443e-003 + + 5.9945529699325562e-001 -2.8344830870628357e-001 + <_> + + 0 -1 112 3.0572075396776199e-002 + + -3.0688971281051636e-001 5.7261526584625244e-001 + + <_> + 8 + -1.4687808752059937e+000 + + <_> + + 0 -1 5 3.1486168503761292e-002 + + -5.7836848497390747e-001 3.7931033968925476e-001 + <_> + + 0 -1 150 2.8311354108154774e-003 + + -5.7888329029083252e-001 3.2841828465461731e-001 + <_> + + 0 -1 76 -4.2060948908329010e-002 + + 5.5578106641769409e-001 -3.2662427425384521e-001 + <_> + + 0 -1 115 6.2936875037848949e-003 + + -2.1032968163490295e-001 7.8646916151046753e-001 + <_> + + 0 -1 51 7.0570126175880432e-002 + + -4.3683132529258728e-001 4.0298295021057129e-001 + <_> + + 0 -1 135 2.5173835456371307e-003 + + -2.0461565256118774e-001 8.2858163118362427e-001 + <_> + + 0 -1 102 1.5648975968360901e-003 + + -2.4848082661628723e-001 6.0209411382675171e-001 + <_> + + 0 -1 177 -3.5970686003565788e-003 + + 2.3294737935066223e-001 -6.5612471103668213e-001 + + <_> + 9 + -1.1029583215713501e+000 + + <_> + + 0 -1 27 -1.1257569491863251e-001 + + 3.3181819319725037e-001 -5.3901344537734985e-001 + <_> + + 0 -1 142 3.8014666642993689e-003 + + -3.6430206894874573e-001 4.5984184741973877e-001 + <_> + + 0 -1 57 9.8789634648710489e-004 + + -2.6661416888237000e-001 5.6971323490142822e-001 + <_> + + 0 -1 55 2.1719809621572495e-002 + + 1.8432702124118805e-001 -8.2999354600906372e-001 + <_> + + 0 -1 111 5.1051773130893707e-002 + + 1.4391148090362549e-001 -9.4541704654693604e-001 + <_> + + 0 -1 164 1.8956036074087024e-003 + + -6.0830104351043701e-001 2.6091885566711426e-001 + <_> + + 0 -1 81 -5.8700828813016415e-003 + + 6.9104760885238647e-001 -2.6916843652725220e-001 + <_> + + 0 -1 116 -1.1522199492901564e-003 + + -6.9503885507583618e-001 2.4749211966991425e-001 + <_> + + 0 -1 90 -5.1933946087956429e-003 + + 5.8551025390625000e-001 -3.0389472842216492e-001 + + <_> + 9 + -9.0274518728256226e-001 + + <_> + + 0 -1 205 -1.4383997768163681e-002 + + 4.5400592684745789e-001 -4.9917897582054138e-001 + <_> + + 0 -1 114 -3.3369414508342743e-002 + + -9.3247985839843750e-001 1.4586758613586426e-001 + <_> + + 0 -1 128 5.2380945999175310e-004 + + -2.8349643945693970e-001 6.4983856678009033e-001 + <_> + + 0 -1 143 6.1231426661834121e-004 + + -1.8502233922481537e-001 6.5052211284637451e-001 + <_> + + 0 -1 49 1.7017847858369350e-003 + + 2.2008989751338959e-001 -7.2277534008026123e-001 + <_> + + 0 -1 133 2.6139442343264818e-003 + + 1.8238025903701782e-001 -7.6262325048446655e-001 + <_> + + 0 -1 43 -2.0020073279738426e-003 + + 5.6799399852752686e-001 -2.8219676017761230e-001 + <_> + + 0 -1 119 1.9273828947916627e-003 + + -2.0913636684417725e-001 7.9203850030899048e-001 + <_> + + 0 -1 134 -9.4476283993571997e-004 + + -8.2361942529678345e-001 2.4256958067417145e-001 + + <_> + 10 + -1.4518526792526245e+000 + + <_> + + 0 -1 162 1.6756314784288406e-002 + + -6.9359332323074341e-001 5.1373954862356186e-002 + <_> + + 0 -1 16 2.4082964286208153e-002 + + -3.3989402651786804e-001 4.5332714915275574e-001 + <_> + + 0 -1 186 1.2284796684980392e-003 + + -2.2297365963459015e-001 6.1439812183380127e-001 + <_> + + 0 -1 59 -1.4379122294485569e-003 + + -6.9444245100021362e-001 2.0446482300758362e-001 + <_> + + 0 -1 185 -1.8713285680860281e-003 + + 6.7942184209823608e-001 -2.7580419182777405e-001 + <_> + + 0 -1 190 -4.7389674000442028e-003 + + -7.0437240600585938e-001 2.6915156841278076e-001 + <_> + + 0 -1 156 7.4071279959753156e-004 + + -2.9220902919769287e-001 5.3538239002227783e-001 + <_> + + 0 -1 11 -2.2739455103874207e-001 + + 6.6916191577911377e-001 -2.1987228095531464e-001 + <_> + + 0 -1 155 -1.0255509987473488e-003 + + 6.3346290588378906e-001 -2.2717863321304321e-001 + <_> + + 0 -1 167 2.4775355122983456e-003 + + -5.4297816753387451e-001 3.1877547502517700e-001 + + <_> + 11 + -1.3153649568557739e+000 + + <_> + + 0 -1 6 1.9131936132907867e-002 + + -6.0168600082397461e-001 1.9141913950443268e-001 + <_> + + 0 -1 42 -4.5855185016989708e-003 + + 2.1901632845401764e-001 -5.7136750221252441e-001 + <_> + + 0 -1 53 -1.9026801455765963e-003 + + -8.0075079202651978e-001 1.6502076387405396e-001 + <_> + + 0 -1 19 -3.2767035067081451e-002 + + 5.1496404409408569e-001 -2.5474679470062256e-001 + <_> + + 0 -1 129 6.3941581174731255e-004 + + -1.9851709902286530e-001 6.7218667268753052e-001 + <_> + + 0 -1 201 1.5573646873235703e-002 + + -1.7564551532268524e-001 7.0536541938781738e-001 + <_> + + 0 -1 200 9.5508026424795389e-004 + + -1.9691802561283112e-001 6.1125624179840088e-001 + <_> + + 0 -1 67 9.0427603572607040e-003 + + 1.6518253087997437e-001 -8.7012130022048950e-001 + <_> + + 0 -1 77 8.1576988101005554e-002 + + 1.4075902104377747e-001 -8.4871828556060791e-001 + <_> + + 0 -1 166 -5.1994959358125925e-004 + + 2.1803210675716400e-001 -5.4628211259841919e-001 + <_> + + 0 -1 70 -2.3009868338704109e-002 + + -7.9586231708526611e-001 1.5989699959754944e-001 + + <_> + 13 + -1.4625015258789063e+000 + + <_> + + 0 -1 1 2.6759501546621323e-002 + + -6.0482984781265259e-001 1.4906832575798035e-001 + <_> + + 0 -1 165 3.0343931168317795e-002 + + -4.7357541322708130e-001 2.6279065012931824e-001 + <_> + + 0 -1 161 1.2678599450737238e-003 + + -1.9493983685970306e-001 6.9734728336334229e-001 + <_> + + 0 -1 30 1.8607920501381159e-003 + + 1.5611934661865234e-001 -9.0542370080947876e-001 + <_> + + 0 -1 157 -1.3872641138732433e-003 + + 5.3263407945632935e-001 -3.0192303657531738e-001 + <_> + + 0 -1 180 -6.9969398900866508e-003 + + -9.4549953937530518e-001 1.5575224161148071e-001 + <_> + + 0 -1 158 1.1245720088481903e-003 + + -2.6688691973686218e-001 5.5608308315277100e-001 + <_> + + 0 -1 160 -2.8279949910938740e-003 + + -9.1861122846603394e-001 1.3309663534164429e-001 + <_> + + 0 -1 58 7.1019242750480771e-004 + + -3.0977895855903625e-001 4.3846300244331360e-001 + <_> + + 0 -1 8 -4.1933014988899231e-002 + + -8.9102542400360107e-001 1.5866196155548096e-001 + <_> + + 0 -1 87 1.6568358987569809e-002 + + 1.2731756269931793e-001 -8.5553413629531860e-001 + <_> + + 0 -1 64 2.0309074316173792e-003 + + -2.3260365426540375e-001 6.7330485582351685e-001 + <_> + + 0 -1 159 -1.7069760942831635e-003 + + -7.1925789117813110e-001 1.9108834862709045e-001 + + <_> + 14 + -1.4959813356399536e+000 + + <_> + + 0 -1 4 1.4695923775434494e-002 + + -6.2167906761169434e-001 2.1172638237476349e-001 + <_> + + 0 -1 50 -1.6501215286552906e-003 + + 1.9353884458541870e-001 -5.7780367136001587e-001 + <_> + + 0 -1 123 7.0121872704476118e-004 + + -2.2979106009006500e-001 5.3033334016799927e-001 + <_> + + 0 -1 52 9.4158272258937359e-004 + + 1.6849038004875183e-001 -7.4897718429565430e-001 + <_> + + 0 -1 124 -2.0684124901890755e-003 + + 6.7936712503433228e-001 -1.9317412376403809e-001 + <_> + + 0 -1 23 -1.8305826233699918e-004 + + -7.0275229215621948e-001 1.7971208691596985e-001 + <_> + + 0 -1 198 5.5587477982044220e-004 + + -2.4448128044605255e-001 5.0703984498977661e-001 + <_> + + 0 -1 152 4.3448276119306684e-004 + + 1.3497908413410187e-001 -8.5621362924575806e-001 + <_> + + 0 -1 197 -1.2359691318124533e-003 + + 6.1710417270660400e-001 -2.2301279008388519e-001 + <_> + + 0 -1 153 -6.9627340417355299e-004 + + -6.4706987142562866e-001 2.3951497673988342e-001 + <_> + + 0 -1 175 1.0683680884540081e-003 + + -2.8343605995178223e-001 4.9318629503250122e-001 + <_> + + 0 -1 168 1.7104238213505596e-004 + + -2.7171039581298828e-001 4.2520308494567871e-001 + <_> + + 0 -1 144 8.2368971779942513e-003 + + 1.6359315812587738e-001 -7.3864609003067017e-001 + <_> + + 0 -1 131 -5.9884190559387207e-003 + + 3.8030940294265747e-001 -3.0763563513755798e-001 + + <_> + 9 + -1.1183819770812988e+000 + + <_> + + 0 -1 187 -1.4863962307572365e-002 + + 1.1989101022481918e-001 -6.6138857603073120e-001 + <_> + + 0 -1 117 2.4736612103879452e-003 + + -5.2778661251068115e-001 2.3012125492095947e-001 + <_> + + 0 -1 71 -4.8899287357926369e-003 + + 6.0186779499053955e-001 -2.0681641995906830e-001 + <_> + + 0 -1 174 1.5796069055795670e-002 + + 1.4610521495342255e-001 -8.2099527120590210e-001 + <_> + + 0 -1 104 5.9720675926655531e-004 + + -2.3587301373481750e-001 4.8323699831962585e-001 + <_> + + 0 -1 103 -1.9448818638920784e-003 + + 6.4417767524719238e-001 -2.0953170955181122e-001 + <_> + + 0 -1 154 1.9433414854574949e-004 + + 2.0600238442420959e-001 -7.2418999671936035e-001 + <_> + + 0 -1 163 -1.5097535215318203e-002 + + -8.7151485681533813e-001 1.2594890594482422e-001 + <_> + + 0 -1 82 -3.9843879640102386e-003 + + 4.3801131844520569e-001 -2.9676589369773865e-001 + + <_> + 12 + -1.5434337854385376e+000 + + <_> + + 0 -1 105 1.1273270938545465e-003 + + -4.7976878285408020e-001 3.6627906560897827e-001 + <_> + + 0 -1 95 9.7806821577250957e-004 + + -2.7689707279205322e-001 5.1295894384384155e-001 + <_> + + 0 -1 15 1.6528377309441566e-002 + + -4.5259797573089600e-001 2.4290211498737335e-001 + <_> + + 0 -1 137 1.1040373938158154e-003 + + -3.2714816927909851e-001 3.4566244482994080e-001 + <_> + + 0 -1 109 -1.7780361231416464e-003 + + -6.9511681795120239e-001 1.8829824030399323e-001 + <_> + + 0 -1 92 4.6280334936454892e-004 + + -2.3864887654781342e-001 5.3136289119720459e-001 + <_> + + 0 -1 100 -1.4975425438024104e-004 + + -6.6509884595870972e-001 2.1483559906482697e-001 + <_> + + 0 -1 83 -1.4625370968133211e-003 + + 2.6556470990180969e-001 -4.9002227187156677e-001 + <_> + + 0 -1 14 -2.6019819779321551e-004 + + -7.0160359144210815e-001 1.6359129548072815e-001 + <_> + + 0 -1 14 2.2371641534846276e-004 + + 1.2919521331787109e-001 -6.9767206907272339e-001 + <_> + + 0 -1 194 -1.0447315871715546e-002 + + 2.1837629377841949e-001 -4.6482038497924805e-001 + <_> + + 0 -1 20 -9.2897024005651474e-003 + + 6.4918082952499390e-001 -2.0495061576366425e-001 + + <_> + 12 + -1.4440233707427979e+000 + + <_> + + 0 -1 9 8.5356216877698898e-003 + + -5.3151458501815796e-001 2.2357723116874695e-001 + <_> + + 0 -1 182 1.5294685726985335e-003 + + -6.0895460844039917e-001 1.7429886758327484e-001 + <_> + + 0 -1 40 1.8610086990520358e-003 + + -2.5480428338050842e-001 4.2150071263313293e-001 + <_> + + 0 -1 176 1.5735558699816465e-003 + + -1.6832062602043152e-001 4.8567819595336914e-001 + <_> + + 0 -1 179 -6.7992787808179855e-004 + + 3.9894598722457886e-001 -3.0744269490242004e-001 + <_> + + 0 -1 151 4.9857296049594879e-002 + + -1.5370152890682220e-001 6.7523348331451416e-001 + <_> + + 0 -1 139 -2.8339058160781860e-002 + + 5.0540882349014282e-001 -2.9473617672920227e-001 + <_> + + 0 -1 72 -7.7956825494766235e-002 + + 4.0387043356895447e-001 -3.0287107825279236e-001 + <_> + + 0 -1 89 -3.6115488037467003e-003 + + 6.3856112957000732e-001 -1.6917882859706879e-001 + <_> + + 0 -1 207 3.3940275898203254e-004 + + 1.3713537156581879e-001 -7.8120291233062744e-001 + <_> + + 0 -1 39 4.0043061599135399e-003 + + 1.5233094990253448e-001 -6.3939732313156128e-001 + <_> + + 0 -1 65 -4.4601649278774858e-004 + + 2.1333815157413483e-001 -4.7728902101516724e-001 + + <_> + 13 + -1.2532578706741333e+000 + + <_> + + 0 -1 204 -2.0341124385595322e-002 + + 2.4170616269111633e-001 -4.9161517620086670e-001 + <_> + + 0 -1 169 8.9040049351751804e-004 + + -2.8570893406867981e-001 4.2666998505592346e-001 + <_> + + 0 -1 60 -3.3259526826441288e-003 + + 4.2626520991325378e-001 -2.3811897635459900e-001 + <_> + + 0 -1 38 -3.1714607030153275e-002 + + -8.5494768619537354e-001 1.1712870001792908e-001 + <_> + + 0 -1 31 -1.1553820222616196e-002 + + 2.2675493359565735e-001 -4.9640509486198425e-001 + <_> + + 0 -1 80 -6.7727260291576385e-002 + + -8.6705064773559570e-001 9.8765812814235687e-002 + <_> + + 0 -1 63 -3.1611192971467972e-003 + + 3.9449846744537354e-001 -2.8210711479187012e-001 + <_> + + 0 -1 149 4.3221906526014209e-004 + + 1.1805476248264313e-001 -9.0178310871124268e-001 + <_> + + 0 -1 188 -2.2296360111795366e-004 + + 1.7324598133563995e-001 -5.2877873182296753e-001 + <_> + + 0 -1 120 -2.1440195851027966e-003 + + 5.5513423681259155e-001 -1.9791823625564575e-001 + <_> + + 0 -1 113 -4.5122690498828888e-003 + + 5.5083745718002319e-001 -1.8810540437698364e-001 + <_> + + 0 -1 130 -3.5149464383721352e-003 + + 5.5467557907104492e-001 -2.2856147587299347e-001 + <_> + + 0 -1 121 -4.4786706566810608e-003 + + -7.9106998443603516e-001 1.7836479842662811e-001 + + <_> + 15 + -1.1898330450057983e+000 + + <_> + + 0 -1 0 1.5206767246127129e-002 + + -4.9173194169998169e-001 2.7093595266342163e-001 + <_> + + 0 -1 125 6.9564773002639413e-004 + + -2.3066598176956177e-001 5.4028344154357910e-001 + <_> + + 0 -1 125 -8.3668017759919167e-004 + + 4.4658055901527405e-001 -2.7778497338294983e-001 + <_> + + 0 -1 91 -3.8321319967508316e-002 + + -7.9069298505783081e-001 1.8700349330902100e-001 + <_> + + 0 -1 207 -2.1063965687062591e-004 + + -6.3163763284683228e-001 1.8656146526336670e-001 + <_> + + 0 -1 61 3.6907330155372620e-002 + + 9.9319733679294586e-002 -7.6762360334396362e-001 + <_> + + 0 -1 85 8.1071127206087112e-003 + + -2.8561261296272278e-001 3.4748569130897522e-001 + <_> + + 0 -1 189 6.2815943965688348e-004 + + 1.6656193137168884e-001 -5.4635977745056152e-001 + <_> + + 0 -1 86 2.8582263621501625e-004 + + -2.4100163578987122e-001 4.5410770177841187e-001 + <_> + + 0 -1 173 -1.9862279295921326e-002 + + -9.4317340850830078e-001 1.2513674795627594e-001 + <_> + + 0 -1 96 1.1506280861794949e-003 + + -2.4514634907245636e-001 4.6452957391738892e-001 + <_> + + 0 -1 29 2.3451185552403331e-004 + + 1.2489952147006989e-001 -8.0278074741363525e-001 + <_> + + 0 -1 101 6.7837134702131152e-004 + + -2.5017899274826050e-001 4.3841627240180969e-001 + <_> + + 0 -1 17 3.1583159579895437e-004 + + 1.5951988101005554e-001 -7.4524724483489990e-001 + <_> + + 0 -1 110 7.2623658925294876e-003 + + 1.2511830031871796e-001 -6.5659755468368530e-001 + + <_> + 15 + -1.2416906356811523e+000 + + <_> + + 0 -1 2 7.5144092552363873e-003 + + -5.9518074989318848e-001 5.3793102502822876e-002 + <_> + + 0 -1 98 -6.4494344405829906e-004 + + 2.0429474115371704e-001 -4.3661779165267944e-001 + <_> + + 0 -1 196 3.3831471228040755e-004 + + -2.1566553413867950e-001 4.7118204832077026e-001 + <_> + + 0 -1 73 2.8320802375674248e-003 + + 1.3322307169437408e-001 -8.3729231357574463e-001 + <_> + + 0 -1 199 1.6218879027292132e-003 + + -2.0889574289321899e-001 4.7114694118499756e-001 + <_> + + 0 -1 10 2.7122153551317751e-004 + + 1.1475630849599838e-001 -7.8029519319534302e-001 + <_> + + 0 -1 170 8.8358242064714432e-003 + + 1.2460929155349731e-001 -7.6791721582412720e-001 + <_> + + 0 -1 106 9.7634072881191969e-004 + + -2.0806105434894562e-001 5.1318311691284180e-001 + <_> + + 0 -1 107 -2.1239042282104492e-002 + + -8.7171542644500732e-001 1.2721680104732513e-001 + <_> + + 0 -1 97 7.1797124110162258e-004 + + -3.0763280391693115e-001 3.7504923343658447e-001 + <_> + + 0 -1 32 2.7504155412316322e-002 + + 1.5651945769786835e-001 -7.9516488313674927e-001 + <_> + + 0 -1 178 1.0624636197462678e-003 + + 1.3473348319530487e-001 -6.9174814224243164e-001 + <_> + + 0 -1 33 -8.1248432397842407e-002 + + -8.5117286443710327e-001 1.0601779073476791e-001 + <_> + + 0 -1 140 -2.2936165332794189e-002 + + 3.9202499389648438e-001 -2.9867398738861084e-001 + <_> + + 0 -1 146 -1.3326616026461124e-003 + + 4.7240665555000305e-001 -2.6287403702735901e-001 + + <_> + 13 + -1.3383979797363281e+000 + + <_> + + 0 -1 3 3.2254494726657867e-002 + + -6.5151512622833252e-001 7.9947575926780701e-002 + <_> + + 0 -1 172 -1.1810796568170190e-003 + + 2.5173431634902954e-001 -4.5536977052688599e-001 + <_> + + 0 -1 88 8.0361258005723357e-004 + + -2.1178695559501648e-001 4.9318632483482361e-001 + <_> + + 0 -1 93 6.6201295703649521e-004 + + -1.9441033899784088e-001 4.6225026249885559e-001 + <_> + + 0 -1 84 3.4565184614621103e-004 + + -2.1175089478492737e-001 4.6985754370689392e-001 + <_> + + 0 -1 132 -5.6433549616485834e-004 + + -7.9713624715805054e-001 1.8714086711406708e-001 + <_> + + 0 -1 56 5.8492692187428474e-004 + + -3.9330720901489258e-001 2.4242231249809265e-001 + <_> + + 0 -1 13 2.5043603032827377e-002 + + 1.3490234315395355e-001 -7.5923883914947510e-001 + <_> + + 0 -1 37 -1.8510785885155201e-003 + + 4.1279399394989014e-001 -2.7271771430969238e-001 + <_> + + 0 -1 68 -2.5741360150277615e-004 + + -6.3662034273147583e-001 1.8135882914066315e-001 + <_> + + 0 -1 184 -1.5121832489967346e-002 + + 2.5249326229095459e-001 -3.8438034057617188e-001 + <_> + + 0 -1 203 -1.5006031841039658e-002 + + -8.4878319501876831e-001 1.1718367785215378e-001 + <_> + + 0 -1 74 4.9880752339959145e-004 + + -2.6755046844482422e-001 4.5769825577735901e-001 + + <_> + 12 + -1.2097512483596802e+000 + + <_> + + 0 -1 195 -1.1614991351962090e-002 + + 1.4465409517288208e-001 -5.9521216154098511e-001 + <_> + + 0 -1 75 3.9767110138200223e-004 + + -4.2697989940643311e-001 2.4382311105728149e-001 + <_> + + 0 -1 47 -4.6969857066869736e-002 + + -9.3969690799713135e-001 1.2196484953165054e-001 + <_> + + 0 -1 136 5.5550434626638889e-004 + + -1.8246935307979584e-001 6.5156191587448120e-001 + <_> + + 0 -1 99 2.9468833236023784e-004 + + 1.5099152922630310e-001 -7.8840750455856323e-001 + <_> + + 0 -1 44 1.2439775280654430e-002 + + 1.4981375634670258e-001 -7.5917595624923706e-001 + <_> + + 0 -1 147 6.6337559837847948e-004 + + -2.5185841321945190e-001 5.9387433528900146e-001 + <_> + + 0 -1 148 -6.8454549182206392e-004 + + 5.1199448108673096e-001 -2.5247576832771301e-001 + <_> + + 0 -1 141 1.4808592386543751e-003 + + 2.2439701855182648e-001 -5.8184891939163208e-001 + <_> + + 0 -1 12 6.0307271778583527e-003 + + -4.3553912639617920e-001 2.8183382749557495e-001 + <_> + + 0 -1 78 -1.9170897081494331e-002 + + -8.5707378387451172e-001 1.4850790798664093e-001 + <_> + + 0 -1 122 3.0278289341367781e-004 + + -3.1547480821609497e-001 4.1798374056816101e-001 + + <_> + 10 + -1.2253109216690063e+000 + + <_> + + 0 -1 181 4.6847470104694366e-002 + + -4.9239391088485718e-001 5.2287584543228149e-001 + <_> + + 0 -1 118 2.2181579843163490e-003 + + -4.2569425702095032e-001 3.6892616748809814e-001 + <_> + + 0 -1 145 6.1082182219251990e-004 + + 1.7654621601104736e-001 -8.2656937837600708e-001 + <_> + + 0 -1 127 1.7401995137333870e-002 + + 2.7770876884460449e-001 -5.6393522024154663e-001 + <_> + + 0 -1 54 5.2314018830657005e-004 + + -3.6257097125053406e-001 4.6126455068588257e-001 + <_> + + 0 -1 206 2.1581796463578939e-003 + + 1.9110183417797089e-001 -6.8012320995330811e-001 + <_> + + 0 -1 192 -1.3209994649514556e-003 + + 6.7618584632873535e-001 -2.6087108254432678e-001 + <_> + + 0 -1 126 -1.2237254530191422e-002 + + -5.7184767723083496e-001 3.0778104066848755e-001 + <_> + + 0 -1 36 8.7829465046525002e-003 + + 1.6890920698642731e-001 -7.8835797309875488e-001 + <_> + + 0 -1 183 7.5588272884488106e-003 + + 1.5143942832946777e-001 -8.2572847604751587e-001 + + <_> + + <_> + 0 0 10 10 -1. + <_> + 0 0 5 5 2. + <_> + 5 5 5 5 2. + 0 + <_> + + <_> + 0 0 12 16 -1. + <_> + 6 0 6 16 2. + 0 + <_> + + <_> + 0 3 10 6 -1. + <_> + 5 3 5 6 2. + 0 + <_> + + <_> + 0 3 21 16 -1. + <_> + 7 3 7 16 3. + 0 + <_> + + <_> + 0 4 16 9 -1. + <_> + 4 4 8 9 2. + 0 + <_> + + <_> + 0 4 10 12 -1. + <_> + 5 4 5 12 2. + 0 + <_> + + <_> + 0 7 14 7 -1. + <_> + 7 7 7 7 2. + 0 + <_> + + <_> + 0 9 12 7 -1. + <_> + 6 9 6 7 2. + 0 + <_> + + <_> + 0 9 60 3 -1. + <_> + 30 9 30 3 2. + 0 + <_> + + <_> + 0 10 8 3 -1. + <_> + 4 10 4 3 2. + 0 + <_> + + <_> + 0 11 1 2 -1. + <_> + 0 12 1 1 2. + 0 + <_> + + <_> + 1 0 51 12 -1. + <_> + 1 4 51 4 3. + 0 + <_> + + <_> + 1 3 15 7 -1. + <_> + 6 3 5 7 3. + 0 + <_> + + <_> + 1 7 30 6 -1. + <_> + 1 7 15 3 2. + <_> + 16 10 15 3 2. + 0 + <_> + + <_> + 1 12 1 2 -1. + <_> + 1 13 1 1 2. + 0 + <_> + + <_> + 2 2 18 16 -1. + <_> + 2 6 18 8 2. + 0 + <_> + + <_> + 2 3 29 4 -1. + <_> + 2 5 29 2 2. + 0 + <_> + + <_> + 2 9 1 2 -1. + <_> + 2 10 1 1 2. + 0 + <_> + + <_> + 2 14 40 6 -1. + <_> + 2 17 40 3 2. + 0 + <_> + + <_> + 3 0 22 6 -1. + <_> + 3 2 22 2 3. + 0 + <_> + + <_> + 3 2 38 2 -1. + <_> + 3 2 19 1 2. + <_> + 22 3 19 1 2. + 0 + <_> + + <_> + 3 4 51 16 -1. + <_> + 3 8 51 8 2. + 0 + <_> + + <_> + 3 7 3 8 -1. + <_> + 4 7 1 8 3. + 0 + <_> + + <_> + 3 9 1 3 -1. + <_> + 3 10 1 1 3. + 0 + <_> + + <_> + 4 8 3 5 -1. + <_> + 5 8 1 5 3. + 0 + <_> + + <_> + 4 8 4 9 -1. + <_> + 5 8 2 9 2. + 0 + <_> + + <_> + 4 11 36 9 -1. + <_> + 16 11 12 9 3. + 0 + <_> + + <_> + 4 14 49 6 -1. + <_> + 4 17 49 3 2. + 0 + <_> + + <_> + 5 0 17 6 -1. + <_> + 5 2 17 2 3. + 0 + <_> + + <_> + 5 1 3 1 -1. + <_> + 6 1 1 1 3. + 0 + <_> + + <_> + 5 1 8 2 -1. + <_> + 7 1 4 2 2. + 0 + <_> + + <_> + 5 2 36 9 -1. + <_> + 17 2 12 9 3. + 0 + <_> + + <_> + 5 3 33 17 -1. + <_> + 16 3 11 17 3. + 0 + <_> + + <_> + 6 0 30 19 -1. + <_> + 16 0 10 19 3. + 0 + <_> + + <_> + 6 3 29 4 -1. + <_> + 6 5 29 2 2. + 0 + <_> + + <_> + 6 4 16 16 -1. + <_> + 14 4 8 16 2. + 0 + <_> + + <_> + 6 9 54 1 -1. + <_> + 33 9 27 1 2. + 0 + <_> + + <_> + 7 0 4 18 -1. + <_> + 8 0 2 18 2. + 0 + <_> + + <_> + 7 3 12 15 -1. + <_> + 13 3 6 15 2. + 0 + <_> + + <_> + 7 4 20 5 -1. + <_> + 12 4 10 5 2. + 0 + <_> + + <_> + 7 4 6 3 -1. + <_> + 7 5 6 1 3. + 0 + <_> + + <_> + 7 4 36 6 -1. + <_> + 19 4 12 6 3. + 0 + <_> + + <_> + 7 5 28 4 -1. + <_> + 14 5 14 4 2. + 0 + <_> + + <_> + 7 7 4 11 -1. + <_> + 8 7 2 11 2. + 0 + <_> + + <_> + 7 9 12 7 -1. + <_> + 13 9 6 7 2. + 0 + <_> + + <_> + 8 1 21 4 -1. + <_> + 8 3 21 2 2. + 0 + <_> + + <_> + 8 4 28 6 -1. + <_> + 15 4 14 6 2. + 0 + <_> + + <_> + 8 8 38 6 -1. + <_> + 8 10 38 2 3. + 0 + <_> + + <_> + 8 14 25 4 -1. + <_> + 8 15 25 2 2. + 0 + <_> + + <_> + 9 2 12 4 -1. + <_> + 12 2 6 4 2. + 0 + <_> + + <_> + 9 5 24 3 -1. + <_> + 15 5 12 3 2. + 0 + <_> + + <_> + 9 8 40 12 -1. + <_> + 9 12 40 4 3. + 0 + <_> + + <_> + 10 2 8 2 -1. + <_> + 12 2 4 2 2. + 0 + <_> + + <_> + 10 2 9 2 -1. + <_> + 13 2 3 2 3. + 0 + <_> + + <_> + 10 5 3 3 -1. + <_> + 11 6 1 1 9. + 0 + <_> + + <_> + 11 0 32 20 -1. + <_> + 19 0 16 20 2. + 0 + <_> + + <_> + 11 3 1 4 -1. + <_> + 11 5 1 2 2. + 0 + <_> + + <_> + 11 9 4 3 -1. + <_> + 12 9 2 3 2. + 0 + <_> + + <_> + 11 9 3 7 -1. + <_> + 12 9 1 7 3. + 0 + <_> + + <_> + 12 3 9 2 -1. + <_> + 15 3 3 2 3. + 0 + <_> + + <_> + 12 6 6 6 -1. + <_> + 14 6 2 6 3. + 0 + <_> + + <_> + 12 10 42 10 -1. + <_> + 26 10 14 10 3. + 0 + <_> + + <_> + 12 14 11 3 -1. + <_> + 12 15 11 1 3. + 0 + <_> + + <_> + 13 4 6 14 -1. + <_> + 15 4 2 14 3. + 0 + <_> + + <_> + 13 8 3 6 -1. + <_> + 14 8 1 6 3. + 0 + <_> + + <_> + 13 11 32 2 -1. + <_> + 21 11 16 2 2. + 0 + <_> + + <_> + 13 13 25 6 -1. + <_> + 13 16 25 3 2. + 0 + <_> + + <_> + 13 16 21 3 -1. + <_> + 20 16 7 3 3. + 0 + <_> + + <_> + 14 2 3 2 -1. + <_> + 15 2 1 2 3. + 0 + <_> + + <_> + 14 2 24 8 -1. + <_> + 20 2 12 8 2. + 0 + <_> + + <_> + 14 13 36 6 -1. + <_> + 23 13 18 6 2. + 0 + <_> + + <_> + 14 14 8 3 -1. + <_> + 14 15 8 1 3. + 0 + <_> + + <_> + 14 14 45 6 -1. + <_> + 14 17 45 3 2. + 0 + <_> + + <_> + 14 18 9 2 -1. + <_> + 17 18 3 2 3. + 0 + <_> + + <_> + 15 9 4 1 -1. + <_> + 16 9 2 1 2. + 0 + <_> + + <_> + 15 10 19 4 -1. + <_> + 15 12 19 2 2. + 0 + <_> + + <_> + 16 0 28 8 -1. + <_> + 16 2 28 4 2. + 0 + <_> + + <_> + 16 2 36 18 -1. + <_> + 28 2 12 18 3. + 0 + <_> + + <_> + 16 6 24 6 -1. + <_> + 22 6 12 6 2. + 0 + <_> + + <_> + 17 1 24 6 -1. + <_> + 17 3 24 2 3. + 0 + <_> + + <_> + 17 3 15 12 -1. + <_> + 22 7 5 4 9. + 0 + <_> + + <_> + 17 15 11 3 -1. + <_> + 17 16 11 1 3. + 0 + <_> + + <_> + 18 5 6 10 -1. + <_> + 20 5 2 10 3. + 0 + <_> + + <_> + 18 6 18 3 -1. + <_> + 24 6 6 3 3. + 0 + <_> + + <_> + 18 11 3 1 -1. + <_> + 19 11 1 1 3. + 0 + <_> + + <_> + 19 6 32 2 -1. + <_> + 27 6 16 2 2. + 0 + <_> + + <_> + 19 8 3 1 -1. + <_> + 20 8 1 1 3. + 0 + <_> + + <_> + 19 9 14 11 -1. + <_> + 26 9 7 11 2. + 0 + <_> + + <_> + 19 10 3 3 -1. + <_> + 20 10 1 3 3. + 0 + <_> + + <_> + 19 13 7 3 -1. + <_> + 19 14 7 1 3. + 0 + <_> + + <_> + 19 14 13 3 -1. + <_> + 19 15 13 1 3. + 0 + <_> + + <_> + 20 0 15 20 -1. + <_> + 25 0 5 20 3. + 0 + <_> + + <_> + 20 9 3 1 -1. + <_> + 21 9 1 1 3. + 0 + <_> + + <_> + 20 10 3 2 -1. + <_> + 21 10 1 2 3. + 0 + <_> + + <_> + 21 1 21 6 -1. + <_> + 21 3 21 2 3. + 0 + <_> + + <_> + 21 8 4 3 -1. + <_> + 22 8 2 3 2. + 0 + <_> + + <_> + 21 9 3 4 -1. + <_> + 22 9 1 4 3. + 0 + <_> + + <_> + 21 10 4 2 -1. + <_> + 22 10 2 2 2. + 0 + <_> + + <_> + 21 11 24 2 -1. + <_> + 27 11 12 2 2. + 0 + <_> + + <_> + 21 18 4 1 -1. + <_> + 22 18 2 1 2. + 0 + <_> + + <_> + 22 3 4 1 -1. + <_> + 23 3 2 1 2. + 0 + <_> + + <_> + 22 6 2 6 -1. + <_> + 22 6 1 3 2. + <_> + 23 9 1 3 2. + 0 + <_> + + <_> + 22 7 3 3 -1. + <_> + 23 8 1 1 9. + 0 + <_> + + <_> + 22 8 3 5 -1. + <_> + 23 8 1 5 3. + 0 + <_> + + <_> + 22 9 3 2 -1. + <_> + 23 9 1 2 3. + 0 + <_> + + <_> + 23 8 3 3 -1. + <_> + 24 8 1 3 3. + 0 + <_> + + <_> + 23 10 3 2 -1. + <_> + 24 10 1 2 3. + 0 + <_> + + <_> + 24 3 20 17 -1. + <_> + 29 3 10 17 2. + 0 + <_> + + <_> + 24 4 14 6 -1. + <_> + 31 4 7 6 2. + 0 + <_> + + <_> + 24 18 9 2 -1. + <_> + 27 18 3 2 3. + 0 + <_> + + <_> + 25 5 8 4 -1. + <_> + 25 5 4 4 2. + 1 + <_> + + <_> + 25 6 22 14 -1. + <_> + 36 6 11 14 2. + 0 + <_> + + <_> + 25 12 28 8 -1. + <_> + 25 14 28 4 2. + 0 + <_> + + <_> + 25 14 9 3 -1. + <_> + 25 15 9 1 3. + 0 + <_> + + <_> + 26 2 27 18 -1. + <_> + 35 2 9 18 3. + 0 + <_> + + <_> + 26 3 22 3 -1. + <_> + 26 4 22 1 3. + 0 + <_> + + <_> + 26 4 8 4 -1. + <_> + 30 4 4 4 2. + 0 + <_> + + <_> + 26 4 20 6 -1. + <_> + 31 4 10 6 2. + 0 + <_> + + <_> + 26 7 1 12 -1. + <_> + 22 11 1 4 3. + 1 + <_> + + <_> + 26 9 3 3 -1. + <_> + 27 9 1 3 3. + 0 + <_> + + <_> + 26 13 9 3 -1. + <_> + 26 14 9 1 3. + 0 + <_> + + <_> + 27 3 15 6 -1. + <_> + 32 3 5 6 3. + 0 + <_> + + <_> + 27 9 3 1 -1. + <_> + 28 9 1 1 3. + 0 + <_> + + <_> + 27 9 3 2 -1. + <_> + 28 9 1 2 3. + 0 + <_> + + <_> + 27 10 3 3 -1. + <_> + 28 10 1 3 3. + 0 + <_> + + <_> + 27 11 3 2 -1. + <_> + 28 11 1 2 3. + 0 + <_> + + <_> + 28 2 10 4 -1. + <_> + 28 2 10 2 2. + 1 + <_> + + <_> + 28 8 32 6 -1. + <_> + 28 10 32 2 3. + 0 + <_> + + <_> + 28 10 3 1 -1. + <_> + 29 10 1 1 3. + 0 + <_> + + <_> + 28 11 3 1 -1. + <_> + 29 11 1 1 3. + 0 + <_> + + <_> + 28 15 5 4 -1. + <_> + 28 16 5 2 2. + 0 + <_> + + <_> + 28 16 23 4 -1. + <_> + 28 17 23 2 2. + 0 + <_> + + <_> + 28 19 6 1 -1. + <_> + 30 19 2 1 3. + 0 + <_> + + <_> + 29 3 9 4 -1. + <_> + 32 3 3 4 3. + 0 + <_> + + <_> + 29 5 9 1 -1. + <_> + 32 5 3 1 3. + 0 + <_> + + <_> + 29 8 3 6 -1. + <_> + 30 8 1 6 3. + 0 + <_> + + <_> + 29 9 3 1 -1. + <_> + 30 9 1 1 3. + 0 + <_> + + <_> + 29 11 10 4 -1. + <_> + 29 13 10 2 2. + 0 + <_> + + <_> + 29 11 26 8 -1. + <_> + 29 13 26 4 2. + 0 + <_> + + <_> + 30 0 16 6 -1. + <_> + 30 3 16 3 2. + 0 + <_> + + <_> + 30 2 30 6 -1. + <_> + 30 2 15 3 2. + <_> + 45 5 15 3 2. + 0 + <_> + + <_> + 30 3 9 4 -1. + <_> + 33 3 3 4 3. + 0 + <_> + + <_> + 30 5 9 4 -1. + <_> + 30 6 9 2 2. + 0 + <_> + + <_> + 30 10 3 2 -1. + <_> + 31 10 1 2 3. + 0 + <_> + + <_> + 30 14 18 6 -1. + <_> + 36 14 6 6 3. + 0 + <_> + + <_> + 31 3 4 3 -1. + <_> + 32 3 2 3 2. + 0 + <_> + + <_> + 31 7 4 9 -1. + <_> + 32 7 2 9 2. + 0 + <_> + + <_> + 31 11 3 2 -1. + <_> + 32 11 1 2 3. + 0 + <_> + + <_> + 31 11 3 3 -1. + <_> + 32 11 1 3 3. + 0 + <_> + + <_> + 32 4 3 2 -1. + <_> + 33 4 1 2 3. + 0 + <_> + + <_> + 32 6 18 6 -1. + <_> + 32 6 9 3 2. + <_> + 41 9 9 3 2. + 0 + <_> + + <_> + 33 1 22 6 -1. + <_> + 33 4 22 3 2. + 0 + <_> + + <_> + 33 3 4 2 -1. + <_> + 34 3 2 2 2. + 0 + <_> + + <_> + 33 3 4 4 -1. + <_> + 34 3 2 4 2. + 0 + <_> + + <_> + 33 5 4 1 -1. + <_> + 34 5 2 1 2. + 0 + <_> + + <_> + 33 9 3 6 -1. + <_> + 34 9 1 6 3. + 0 + <_> + + <_> + 33 10 3 3 -1. + <_> + 34 10 1 3 3. + 0 + <_> + + <_> + 34 8 4 7 -1. + <_> + 35 8 2 7 2. + 0 + <_> + + <_> + 34 9 3 5 -1. + <_> + 35 9 1 5 3. + 0 + <_> + + <_> + 34 18 9 2 -1. + <_> + 37 18 3 2 3. + 0 + <_> + + <_> + 35 0 8 6 -1. + <_> + 37 0 4 6 2. + 0 + <_> + + <_> + 35 9 3 2 -1. + <_> + 36 9 1 2 3. + 0 + <_> + + <_> + 36 9 24 9 -1. + <_> + 42 9 12 9 2. + 0 + <_> + + <_> + 37 1 16 18 -1. + <_> + 41 1 8 18 2. + 0 + <_> + + <_> + 37 11 20 8 -1. + <_> + 42 11 10 8 2. + 0 + <_> + + <_> + 38 8 15 12 -1. + <_> + 38 12 15 4 3. + 0 + <_> + + <_> + 39 6 12 8 -1. + <_> + 45 6 6 8 2. + 0 + <_> + + <_> + 40 8 8 4 -1. + <_> + 40 8 8 2 2. + 1 + <_> + + <_> + 40 10 3 1 -1. + <_> + 41 10 1 1 3. + 0 + <_> + + <_> + 40 10 3 5 -1. + <_> + 41 10 1 5 3. + 0 + <_> + + <_> + 40 13 12 6 -1. + <_> + 43 13 6 6 2. + 0 + <_> + + <_> + 41 5 7 15 -1. + <_> + 41 10 7 5 3. + 0 + <_> + + <_> + 41 6 12 6 -1. + <_> + 45 6 4 6 3. + 0 + <_> + + <_> + 41 7 12 7 -1. + <_> + 45 7 4 7 3. + 0 + <_> + + <_> + 41 8 12 12 -1. + <_> + 45 8 4 12 3. + 0 + <_> + + <_> + 41 9 3 6 -1. + <_> + 42 9 1 6 3. + 0 + <_> + + <_> + 42 2 3 13 -1. + <_> + 43 2 1 13 3. + 0 + <_> + + <_> + 42 4 18 10 -1. + <_> + 42 4 9 5 2. + <_> + 51 9 9 5 2. + 0 + <_> + + <_> + 42 5 18 8 -1. + <_> + 42 5 9 4 2. + <_> + 51 9 9 4 2. + 0 + <_> + + <_> + 42 7 2 7 -1. + <_> + 43 7 1 7 2. + 0 + <_> + + <_> + 42 14 12 5 -1. + <_> + 46 14 4 5 3. + 0 + <_> + + <_> + 43 1 10 9 -1. + <_> + 40 4 10 3 3. + 1 + <_> + + <_> + 43 6 6 6 -1. + <_> + 43 9 6 3 2. + 0 + <_> + + <_> + 44 0 8 20 -1. + <_> + 46 0 4 20 2. + 0 + <_> + + <_> + 44 2 16 12 -1. + <_> + 44 2 8 6 2. + <_> + 52 8 8 6 2. + 0 + <_> + + <_> + 44 5 3 8 -1. + <_> + 45 5 1 8 3. + 0 + <_> + + <_> + 44 8 3 4 -1. + <_> + 45 8 1 4 3. + 0 + <_> + + <_> + 44 12 16 4 -1. + <_> + 52 12 8 4 2. + 0 + <_> + + <_> + 44 13 10 3 -1. + <_> + 49 13 5 3 2. + 0 + <_> + + <_> + 45 19 9 1 -1. + <_> + 48 19 3 1 3. + 0 + <_> + + <_> + 46 3 8 8 -1. + <_> + 50 3 4 8 2. + 0 + <_> + + <_> + 47 12 10 6 -1. + <_> + 52 12 5 6 2. + 0 + <_> + + <_> + 48 0 4 13 -1. + <_> + 49 0 2 13 2. + 0 + <_> + + <_> + 48 5 3 12 -1. + <_> + 45 8 3 6 2. + 1 + <_> + + <_> + 48 9 12 8 -1. + <_> + 54 9 6 8 2. + 0 + <_> + + <_> + 48 13 12 4 -1. + <_> + 54 13 6 4 2. + 0 + <_> + + <_> + 49 8 3 1 -1. + <_> + 50 8 1 1 3. + 0 + <_> + + <_> + 49 8 3 2 -1. + <_> + 50 8 1 2 3. + 0 + <_> + + <_> + 49 8 3 3 -1. + <_> + 50 8 1 3 3. + 0 + <_> + + <_> + 50 9 3 3 -1. + <_> + 51 10 1 1 9. + 0 + <_> + + <_> + 51 8 3 3 -1. + <_> + 52 8 1 3 3. + 0 + <_> + + <_> + 52 6 6 10 -1. + <_> + 54 6 2 10 3. + 0 + <_> + + <_> + 52 7 8 7 -1. + <_> + 56 7 4 7 2. + 0 + <_> + + <_> + 52 8 8 4 -1. + <_> + 52 8 8 2 2. + 1 + <_> + + <_> + 54 3 6 15 -1. + <_> + 57 3 3 15 2. + 0 + <_> + + <_> + 54 8 6 7 -1. + <_> + 57 8 3 7 2. + 0 + <_> + + <_> + 57 11 3 6 -1. + <_> + 57 13 3 2 3. + 0 + <_> + + <_> + 59 8 1 3 -1. + <_> + 59 9 1 1 3. + 0 + diff --git a/venv/lib/python3.11/site-packages/cv2/data/haarcascade_smile.xml b/venv/lib/python3.11/site-packages/cv2/data/haarcascade_smile.xml new file mode 100644 index 0000000000000000000000000000000000000000..bbdd896add956536207a3183311a6b6ba1d0ba29 --- /dev/null +++ b/venv/lib/python3.11/site-packages/cv2/data/haarcascade_smile.xml @@ -0,0 +1,6729 @@ + + + +BOOST + HAAR + 18 + 36 + + 53 + + 0 + 20 + + <_> + 11 + -1.2678639888763428e+00 + + <_> + + 0 -1 0 -4.8783610691316426e-04 + + 5.9219348430633545e-01 -4.4163608551025391e-01 + <_> + + 0 -1 1 -4.2209611274302006e-04 + + 3.0318650603294373e-01 -3.2912918925285339e-01 + <_> + + 0 -1 2 -4.9940118333324790e-04 + + 4.8563310503959656e-01 -4.2923060059547424e-01 + <_> + + 0 -1 3 3.7289198487997055e-02 + + -2.8667300939559937e-01 5.9979999065399170e-01 + <_> + + 0 -1 4 1.4334049774333835e-03 + + -3.4893131256103516e-01 4.0482750535011292e-01 + <_> + + 0 -1 5 -7.7213020995259285e-03 + + 7.5714188814163208e-01 -1.2225949764251709e-01 + <_> + + 0 -1 6 8.1067271530628204e-03 + + -1.6657720506191254e-01 7.5096148252487183e-01 + <_> + + 0 -1 7 -7.7238711528480053e-03 + + 6.2662792205810547e-01 -1.9127459824085236e-01 + <_> + + 0 -1 8 4.4225031160749495e-04 + + -2.3944470286369324e-01 4.4840618968009949e-01 + <_> + + 0 -1 9 -1.6867710510268807e-03 + + -1.8439069390296936e-01 9.1782413423061371e-02 + <_> + + 0 -1 10 1.4625620096921921e-02 + + 1.6168059408664703e-01 -8.1501179933547974e-01 + <_> + 11 + -1.5844069719314575e+00 + + <_> + + 0 -1 11 3.8141138851642609e-02 + + -3.3275881409645081e-01 7.7833342552185059e-01 + <_> + + 0 -1 12 -1.3136120105627924e-04 + + 3.6353090405464172e-01 -3.2043468952178955e-01 + <_> + + 0 -1 13 -3.8757019210606813e-03 + + 7.1352392435073853e-01 -3.5185989737510681e-01 + <_> + + 0 -1 14 1.4266290236264467e-03 + + 6.8100847303867340e-02 -6.1727327108383179e-01 + <_> + + 0 -1 15 -2.4605958606116474e-04 + + 5.7271498441696167e-01 -3.7860998511314392e-01 + <_> + + 0 -1 16 -3.1822640448808670e-02 + + -6.3484561443328857e-01 1.1641839891672134e-01 + <_> + + 0 -1 17 -1.7130950465798378e-02 + + -6.2793147563934326e-01 3.2479470968246460e-01 + <_> + + 0 -1 18 -9.3903783708810806e-03 + + -2.7578958868980408e-01 2.2330729663372040e-01 + <_> + + 0 -1 19 2.2802520543336868e-03 + + 1.8977640569210052e-01 -6.8817621469497681e-01 + <_> + + 0 -1 20 2.6840099599212408e-03 + + -2.2350500524044037e-01 1.3725799322128296e-01 + <_> + + 0 -1 21 1.0604639537632465e-02 + + -2.1426230669021606e-01 5.6207871437072754e-01 + <_> + 17 + -1.3820559978485107e+00 + + <_> + + 0 -1 22 -3.1677199876867235e-04 + + 4.6595481038093567e-01 -3.7425819039344788e-01 + <_> + + 0 -1 23 -5.5120628327131271e-02 + + 5.4179787635803223e-01 -2.2657650709152222e-01 + <_> + + 0 -1 24 -6.4742640824988484e-04 + + 3.7703070044517517e-01 -3.3486440777778625e-01 + <_> + + 0 -1 25 3.9507839083671570e-01 + + -1.8144419789314270e-01 8.1325918436050415e-01 + <_> + + 0 -1 26 4.0509410202503204e-02 + + -9.5369413495063782e-02 8.0595618486404419e-01 + <_> + + 0 -1 27 4.8735421150922775e-03 + + -1.4023660123348236e-01 6.1643028259277344e-01 + <_> + + 0 -1 28 1.0578040033578873e-02 + + 1.2932670116424561e-01 -7.4823349714279175e-01 + <_> + + 0 -1 29 9.2986393719911575e-03 + + 5.8940600603818893e-02 -4.4107300043106079e-01 + <_> + + 0 -1 30 -5.0301607698202133e-03 + + -6.6309732198715210e-01 1.8104769289493561e-01 + <_> + + 0 -1 31 -1.0947990085696802e-04 + + 2.2112590074539185e-01 -2.7309039235115051e-01 + <_> + + 0 -1 32 -1.1685509979724884e-01 + + -7.7205967903137207e-01 1.2481659650802612e-01 + <_> + + 0 -1 33 -4.3603649828583002e-05 + + 1.3670609891414642e-01 -1.6127939522266388e-01 + <_> + + 0 -1 34 -1.5056360280141234e-04 + + 4.4860461354255676e-01 -2.1711289882659912e-01 + <_> + + 0 -1 35 -1.6394609585404396e-02 + + -6.5827351808547974e-01 1.6745500266551971e-01 + <_> + + 0 -1 36 -1.4482860453426838e-02 + + -6.8345147371292114e-01 1.3456159830093384e-01 + <_> + + 0 -1 37 3.9269471017178148e-05 + + -1.4998139441013336e-01 1.6017720103263855e-01 + <_> + + 0 -1 38 7.4323131702840328e-03 + + -1.6848459839820862e-01 5.3963989019393921e-01 + <_> + 18 + -1.3879380226135254e+00 + + <_> + + 0 -1 39 -4.3472499237395823e-04 + + 4.3949240446090698e-01 -4.2248758673667908e-01 + <_> + + 0 -1 40 3.2995320856571198e-02 + + -1.9798250496387482e-01 5.9534871578216553e-01 + <_> + + 0 -1 41 -4.1011828579939902e-04 + + 4.4403061270713806e-01 -3.0748468637466431e-01 + <_> + + 0 -1 42 -8.1969738006591797e-02 + + -5.3334367275238037e-01 1.6718100011348724e-01 + <_> + + 0 -1 43 1.7778700217604637e-02 + + -2.0450179278850555e-01 5.1444131135940552e-01 + <_> + + 0 -1 44 2.2834699600934982e-02 + + -1.4846070110797882e-01 5.6242787837982178e-01 + <_> + + 0 -1 45 3.8604341447353363e-02 + + -1.2731470167636871e-01 8.1494480371475220e-01 + <_> + + 0 -1 46 -7.3286908445879817e-04 + + -3.7193441390991211e-01 6.7616499960422516e-02 + <_> + + 0 -1 47 -2.3229040205478668e-02 + + 7.1232062578201294e-01 -1.1589390039443970e-01 + <_> + + 0 -1 48 -1.9575359299778938e-02 + + -6.8990731239318848e-01 1.3999509811401367e-01 + <_> + + 0 -1 49 4.1991271427832544e-04 + + -1.8354649841785431e-01 4.9435558915138245e-01 + <_> + + 0 -1 50 -5.7089749723672867e-02 + + 6.2607848644256592e-01 -7.8576847910881042e-02 + <_> + + 0 -1 51 2.5699699297547340e-02 + + 1.1557140201330185e-01 -8.1935191154479980e-01 + <_> + + 0 -1 52 3.2579619437456131e-02 + + -1.1767739802598953e-01 4.2776221036911011e-01 + <_> + + 0 -1 53 -2.0592249929904938e-02 + + 4.8685240745544434e-01 -2.1318539977073669e-01 + <_> + + 0 -1 54 -1.7485279589891434e-02 + + -5.2287340164184570e-01 1.3397049903869629e-01 + <_> + + 0 -1 55 8.9153228327631950e-04 + + 9.6304491162300110e-02 -6.8863070011138916e-01 + <_> + + 0 -1 56 5.7533901184797287e-02 + + -8.7080523371696472e-02 4.0480649471282959e-01 + <_> + 25 + -1.3538850545883179e+00 + + <_> + + 0 -1 57 -4.6606198884546757e-04 + + 4.2773741483688354e-01 -3.5420769453048706e-01 + <_> + + 0 -1 58 3.0554559826850891e-01 + + -1.6392810642719269e-01 8.6065232753753662e-01 + <_> + + 0 -1 59 -1.1449400335550308e-02 + + 5.9727329015731812e-01 -2.3234340548515320e-01 + <_> + + 0 -1 60 6.3891541212797165e-03 + + -1.2915410101413727e-01 6.1052042245864868e-01 + <_> + + 0 -1 61 -8.4334248676896095e-03 + + 4.7928538918495178e-01 -1.9002729654312134e-01 + <_> + + 0 -1 62 5.3808931261301041e-02 + + -1.1493770033121109e-01 5.3394538164138794e-01 + <_> + + 0 -1 63 -4.7580219688825309e-04 + + -3.4598541259765625e-01 2.5488048791885376e-01 + <_> + + 0 -1 64 -1.3450840197037905e-04 + + 2.2414590418338776e-01 -1.9550070166587830e-01 + <_> + + 0 -1 65 5.0016911700367928e-04 + + -1.9720549881458282e-01 4.9677640199661255e-01 + <_> + + 0 -1 66 1.5063269995152950e-02 + + 1.0630770027637482e-01 -4.1138210892677307e-01 + <_> + + 0 -1 67 7.7588870190083981e-03 + + -1.5373119711875916e-01 4.8931619524955750e-01 + <_> + + 0 -1 68 4.5410118997097015e-02 + + -7.3559306561946869e-02 2.7737921476364136e-01 + <_> + + 0 -1 69 -1.4599669724702835e-02 + + -7.0966827869415283e-01 9.7515560686588287e-02 + <_> + + 0 -1 70 1.7236070707440376e-02 + + 1.6869539394974709e-02 -5.7388329505920410e-01 + <_> + + 0 -1 71 1.4230710454285145e-02 + + 9.4714500010013580e-02 -7.8395259380340576e-01 + <_> + + 0 -1 72 -4.3706860393285751e-02 + + 6.0979652404785156e-01 -1.5601889789104462e-01 + <_> + + 0 -1 73 -6.2343222089111805e-04 + + 3.4851190447807312e-01 -2.1704910695552826e-01 + <_> + + 0 -1 74 1.9245050847530365e-02 + + -1.1710979789495468e-01 3.0701160430908203e-01 + <_> + + 0 -1 75 2.7035778760910034e-01 + + -9.0096436440944672e-02 7.6656961441040039e-01 + <_> + + 0 -1 76 -3.5394480801187456e-04 + + -2.0024789869785309e-01 1.2493360042572021e-01 + <_> + + 0 -1 77 -3.6013960838317871e-02 + + 6.7028558254241943e-01 -1.0571879893541336e-01 + <_> + + 0 -1 78 9.2952791601419449e-03 + + -1.0574710369110107e-01 4.5093879103660583e-01 + <_> + + 0 -1 79 -3.3304709359072149e-04 + + 2.7933821082115173e-01 -2.4576769769191742e-01 + <_> + + 0 -1 80 -2.9147620807634667e-05 + + 8.5813812911510468e-02 -9.5469586551189423e-02 + <_> + + 0 -1 81 4.4382669148035347e-04 + + -2.0220080018043518e-01 5.4543578624725342e-01 + <_> + 23 + -1.3707510232925415e+00 + + <_> + + 0 -1 82 7.9610757529735565e-03 + + -3.6722078919410706e-01 4.3154349923133850e-01 + <_> + + 0 -1 83 6.3394829630851746e-02 + + -2.0739710330963135e-01 5.7426017522811890e-01 + <_> + + 0 -1 84 -5.3193349391222000e-02 + + 7.2550922632217407e-01 -1.4342020452022552e-01 + <_> + + 0 -1 85 1.5460769645869732e-02 + + -9.6053816378116608e-02 7.5785237550735474e-01 + <_> + + 0 -1 86 -1.7643140628933907e-02 + + 6.6815620660781860e-01 -1.4176729321479797e-01 + <_> + + 0 -1 87 9.5065636560320854e-03 + + -9.6259742975234985e-02 4.6996331214904785e-01 + <_> + + 0 -1 88 4.0446049533784389e-03 + + -1.9732519984245300e-01 4.2838010191917419e-01 + <_> + + 0 -1 89 3.2312041148543358e-03 + + 1.1861690133810043e-01 -6.1039632558822632e-01 + <_> + + 0 -1 90 -4.0159050375223160e-02 + + -4.1664341092109680e-01 2.1672329306602478e-01 + <_> + + 0 -1 91 2.8524258732795715e-01 + + -1.0435750335454941e-01 8.5733968019485474e-01 + <_> + + 0 -1 92 -4.9264221452176571e-03 + + 4.7060468792915344e-01 -1.3997459411621094e-01 + <_> + + 0 -1 93 1.3781700283288956e-02 + + -1.2713569402694702e-01 4.4618919491767883e-01 + <_> + + 0 -1 94 -4.9873598618432879e-04 + + 4.7026631236076355e-01 -1.5483739972114563e-01 + <_> + + 0 -1 95 -1.5621389320585877e-04 + + 1.8854810297489166e-01 -7.7839776873588562e-02 + <_> + + 0 -1 96 -3.7597760092467070e-04 + + 5.7697701454162598e-01 -1.3356220722198486e-01 + <_> + + 0 -1 97 -1.0665910318493843e-02 + + -4.1065299510955811e-01 1.5562120079994202e-01 + <_> + + 0 -1 98 -3.4135230816900730e-03 + + -7.6363432407379150e-01 1.0209649801254272e-01 + <_> + + 0 -1 99 5.6471868447260931e-05 + + -1.6443930566310883e-01 2.2908419370651245e-01 + <_> + + 0 -1 100 2.1611599368043244e-04 + + -1.6290329396724701e-01 4.5756360888481140e-01 + <_> + + 0 -1 101 -1.0822719894349575e-02 + + -2.4462530016899109e-01 1.3888940215110779e-01 + <_> + + 0 -1 102 -1.5084910206496716e-02 + + -5.7813477516174316e-01 1.1564119905233383e-01 + <_> + + 0 -1 103 2.5715960189700127e-02 + + 3.9631199091672897e-02 -6.5270012617111206e-01 + <_> + + 0 -1 104 2.6093570049852133e-03 + + 1.1421889811754227e-01 -5.6801080703735352e-01 + <_> + 26 + -1.3303329944610596e+00 + + <_> + + 0 -1 105 -5.1861900836229324e-02 + + 7.0431172847747803e-01 -2.2143700718879700e-01 + <_> + + 0 -1 106 -5.0341628491878510e-02 + + -4.6397829055786133e-01 2.8047460317611694e-01 + <_> + + 0 -1 107 2.5709730386734009e-01 + + -1.3124279677867889e-01 8.2395941019058228e-01 + <_> + + 0 -1 108 1.1031899601221085e-02 + + -1.4258140325546265e-01 6.3823902606964111e-01 + <_> + + 0 -1 109 1.8565090373158455e-02 + + -1.5123879909515381e-01 5.9881192445755005e-01 + <_> + + 0 -1 110 1.7502350732684135e-02 + + -1.2619799375534058e-01 3.8178038597106934e-01 + <_> + + 0 -1 111 7.2723729535937309e-03 + + -1.5103289484977722e-01 5.8128422498703003e-01 + <_> + + 0 -1 112 8.1504750996828079e-03 + + -6.5464757382869720e-02 5.6397551298141479e-01 + <_> + + 0 -1 113 -1.8552739173173904e-02 + + 5.3157097101211548e-01 -1.2526570260524750e-01 + <_> + + 0 -1 114 -2.3101480677723885e-02 + + -6.7949390411376953e-01 1.1046259850263596e-01 + <_> + + 0 -1 115 -1.8539339362177998e-04 + + 3.0100038647651672e-01 -2.1206699311733246e-01 + <_> + + 0 -1 116 1.7319120466709137e-02 + + -9.3738131225109100e-02 2.1008560061454773e-01 + <_> + + 0 -1 117 1.4305620454251766e-02 + + 1.8005949258804321e-01 -3.9776718616485596e-01 + <_> + + 0 -1 118 2.5763340294361115e-02 + + 8.7056998163461685e-03 -6.2894952297210693e-01 + <_> + + 0 -1 119 -1.5383340418338776e-02 + + -5.3415471315383911e-01 1.0380730032920837e-01 + <_> + + 0 -1 120 1.0605469578877091e-03 + + -9.0128518640995026e-02 1.6792120039463043e-01 + <_> + + 0 -1 121 3.5230729263275862e-03 + + -1.7110690474510193e-01 3.2596540451049805e-01 + <_> + + 0 -1 122 -1.0789279825985432e-02 + + 3.6109921336174011e-01 -6.6339150071144104e-02 + <_> + + 0 -1 123 2.7950939536094666e-01 + + -7.4605897068977356e-02 7.3369878530502319e-01 + <_> + + 0 -1 124 3.8369540125131607e-03 + + 4.4873539358377457e-02 -1.8602700531482697e-01 + <_> + + 0 -1 125 1.6195949865505099e-03 + + -1.3922490179538727e-01 4.3437001109123230e-01 + <_> + + 0 -1 126 1.1647949926555157e-02 + + -7.4357591569423676e-02 5.4201442003250122e-01 + <_> + + 0 -1 127 -5.9066400863230228e-03 + + -7.0557588338851929e-01 8.6433619260787964e-02 + <_> + + 0 -1 128 3.9686840772628784e-01 + + -7.4898369610309601e-02 9.4062858819961548e-01 + <_> + + 0 -1 129 5.7663779705762863e-02 + + -9.6558406949043274e-02 5.4182428121566772e-01 + <_> + + 0 -1 130 6.0319568961858749e-02 + + -6.6501073539257050e-02 6.4023548364639282e-01 + <_> + 37 + -1.5300060510635376e+00 + + <_> + + 0 -1 131 1.9050249829888344e-02 + + -4.4433408975601196e-01 4.3948569893836975e-01 + <_> + + 0 -1 132 -2.0198300480842590e-02 + + -3.1706219911575317e-01 1.0432930290699005e-01 + <_> + + 0 -1 133 2.1478030830621719e-02 + + -3.5024839639663696e-01 2.6355370879173279e-01 + <_> + + 0 -1 134 -1.0187759995460510e-01 + + -5.9889578819274902e-01 1.7685799300670624e-01 + <_> + + 0 -1 135 1.0974160395562649e-02 + + -1.4895239472389221e-01 6.0115218162536621e-01 + <_> + + 0 -1 136 -1.1476710438728333e-02 + + 4.0665709972381592e-01 -1.2404689937829971e-01 + <_> + + 0 -1 137 -2.3431150242686272e-02 + + -7.1487832069396973e-01 1.4278119802474976e-01 + <_> + + 0 -1 138 1.4963559806346893e-03 + + -1.7045859992504120e-01 1.7193080484867096e-01 + <_> + + 0 -1 139 -5.4855772759765387e-04 + + 3.1553238630294800e-01 -2.1444450318813324e-01 + <_> + + 0 -1 140 7.4912630021572113e-02 + + 9.1240562498569489e-02 -6.3951212167739868e-01 + <_> + + 0 -1 141 6.8816398270428181e-03 + + -1.4904409646987915e-01 4.7952368855476379e-01 + <_> + + 0 -1 142 -3.8212578743696213e-02 + + 5.2887737751007080e-01 -6.1894729733467102e-02 + <_> + + 0 -1 143 4.4051730073988438e-03 + + -1.1934129893779755e-01 5.0613421201705933e-01 + <_> + + 0 -1 144 2.3966899141669273e-02 + + -8.9720509946346283e-02 3.3152779936790466e-01 + <_> + + 0 -1 145 -3.4162990748882294e-02 + + 5.3134781122207642e-01 -1.4666500687599182e-01 + <_> + + 0 -1 146 1.9642219413071871e-03 + + 9.0783588588237762e-02 -4.3032559752464294e-01 + <_> + + 0 -1 147 9.6757910796441138e-05 + + 2.2552539408206940e-01 -2.8220710158348083e-01 + <_> + + 0 -1 148 -3.2862399239093065e-03 + + 4.0515020489692688e-01 -1.1776199936866760e-01 + <_> + + 0 -1 149 1.1688309721648693e-02 + + -9.1857127845287323e-02 6.2834888696670532e-01 + <_> + + 0 -1 150 -6.0287420637905598e-03 + + 3.9261808991432190e-01 -1.2287150323390961e-01 + <_> + + 0 -1 151 -1.3721340335905552e-02 + + -5.5298799276351929e-01 9.1041281819343567e-02 + <_> + + 0 -1 152 7.5626641511917114e-02 + + -4.4929590076208115e-02 1.7442759871482849e-01 + <_> + + 0 -1 153 9.3434482812881470e-02 + + -8.4593951702117920e-02 6.0131162405014038e-01 + <_> + + 0 -1 154 5.8748829178512096e-03 + + -4.4131498783826828e-02 3.9565709233283997e-01 + <_> + + 0 -1 155 4.0064537897706032e-03 + + -1.1414399743080139e-01 3.7925380468368530e-01 + <_> + + 0 -1 156 2.2945459932088852e-02 + + 2.4673189967870712e-02 -4.1521999239921570e-01 + <_> + + 0 -1 157 -1.2810460291802883e-02 + + -5.1557427644729614e-01 9.1319613158702850e-02 + <_> + + 0 -1 158 2.0425529778003693e-01 + + -6.5927542746067047e-02 7.5942492485046387e-01 + <_> + + 0 -1 159 4.9796327948570251e-03 + + 1.0806279629468918e-01 -5.0016272068023682e-01 + <_> + + 0 -1 160 2.8397630900144577e-02 + + -3.7152960896492004e-02 5.4010647535324097e-01 + <_> + + 0 -1 161 6.0867150314152241e-03 + + -1.1978609859943390e-01 3.5692268610000610e-01 + <_> + + 0 -1 162 -2.1456899412441999e-04 + + 1.8740150332450867e-01 -8.8417202234268188e-02 + <_> + + 0 -1 163 2.8941858909092844e-04 + + -1.2597979605197906e-01 3.9982271194458008e-01 + <_> + + 0 -1 164 -1.3047619722783566e-03 + + 1.5499970316886902e-01 -7.5386047363281250e-02 + <_> + + 0 -1 165 -1.2975010089576244e-02 + + -5.5344110727310181e-01 8.2354247570037842e-02 + <_> + + 0 -1 166 7.7442410401999950e-03 + + 2.7699800208210945e-02 -3.4835991263389587e-01 + <_> + + 0 -1 167 2.4850629270076752e-03 + + -1.2976129353046417e-01 3.7908831238746643e-01 + <_> + 21 + -1.4114329814910889e+00 + + <_> + + 0 -1 168 -4.0386881679296494e-02 + + 5.9603548049926758e-01 -3.5741761326789856e-01 + <_> + + 0 -1 169 -6.6068649175576866e-05 + + 4.4628980755805969e-01 -3.5959470272064209e-01 + <_> + + 0 -1 170 3.7622239906340837e-03 + + 1.7947019636631012e-01 -7.5631511211395264e-01 + <_> + + 0 -1 171 -3.0967719852924347e-02 + + -2.8847050666809082e-01 7.6870530843734741e-02 + <_> + + 0 -1 172 3.0566560104489326e-02 + + 1.4003600180149078e-01 -7.1755367517471313e-01 + <_> + + 0 -1 173 9.9054910242557526e-04 + + 8.2915589213371277e-02 -2.9197171330451965e-01 + <_> + + 0 -1 174 1.2577700428664684e-02 + + 1.5380719304084778e-01 -4.6882930397987366e-01 + <_> + + 0 -1 175 1.2392920255661011e-01 + + -9.0823858976364136e-02 7.3837572336196899e-01 + <_> + + 0 -1 176 3.7737488746643066e-01 + + -5.4232951253652573e-02 9.2291218042373657e-01 + <_> + + 0 -1 177 1.0996370017528534e-01 + + 9.1596268117427826e-02 -6.5977168083190918e-01 + <_> + + 0 -1 178 -1.2721329694613814e-03 + + 3.3475750684738159e-01 -1.8290689587593079e-01 + <_> + + 0 -1 179 4.6906251460313797e-02 + + -8.3971053361892700e-02 6.9847589731216431e-01 + <_> + + 0 -1 180 3.2869930146262050e-04 + + 1.8794630467891693e-01 -2.9290059208869934e-01 + <_> + + 0 -1 181 1.7333080177195370e-04 + + -2.6964160799980164e-01 3.4947571158409119e-01 + <_> + + 0 -1 182 1.9800959154963493e-02 + + -1.4679229259490967e-01 4.3995618820190430e-01 + <_> + + 0 -1 183 2.0056760695297271e-04 + + -1.3727410137653351e-01 2.2213310003280640e-01 + <_> + + 0 -1 184 -1.4923149719834328e-03 + + 3.4735259413719177e-01 -1.5948210656642914e-01 + <_> + + 0 -1 185 -4.2736999603221193e-05 + + 3.1527870893478394e-01 -2.3066949844360352e-01 + <_> + + 0 -1 186 6.6625140607357025e-04 + + -2.0131100714206696e-01 2.8691890835762024e-01 + <_> + + 0 -1 187 1.3850460163666867e-05 + + -2.0219239592552185e-01 2.3073309659957886e-01 + <_> + + 0 -1 188 4.0972631424665451e-02 + + 7.9543180763721466e-02 -8.0795639753341675e-01 + <_> + 23 + -1.3777890205383301e+00 + + <_> + + 0 -1 189 -4.6982929110527039e-02 + + 7.0822530984878540e-01 -3.7034240365028381e-01 + <_> + + 0 -1 190 -7.5753079727292061e-04 + + -1.2550309300422668e-01 1.3944420218467712e-01 + <_> + + 0 -1 191 1.5327299945056438e-02 + + 2.1613539755344391e-01 -5.6293952465057373e-01 + <_> + + 0 -1 192 1.8147040158510208e-02 + + -3.2079648226499557e-02 3.2347559928894043e-01 + <_> + + 0 -1 193 4.7347191721200943e-02 + + -1.7381580173969269e-01 5.7580447196960449e-01 + <_> + + 0 -1 194 -5.9837941080331802e-02 + + 4.7797870635986328e-01 -1.0260280221700668e-01 + <_> + + 0 -1 195 -5.2796799689531326e-02 + + -4.7988489270210266e-01 1.8787759542465210e-01 + <_> + + 0 -1 196 -2.4385429918766022e-02 + + -3.0841669440269470e-01 8.7605630978941917e-03 + <_> + + 0 -1 197 2.5288300588726997e-02 + + 1.3914039731025696e-01 -7.1094942092895508e-01 + <_> + + 0 -1 198 -2.1612450480461121e-02 + + -2.3282539844512939e-01 8.0994680523872375e-02 + <_> + + 0 -1 199 3.4023479092866182e-03 + + -2.2989900410175323e-01 3.7889510393142700e-01 + <_> + + 0 -1 200 1.1274600028991699e-01 + + -1.5474709682166576e-02 5.7030540704727173e-01 + <_> + + 0 -1 201 3.4516870975494385e-02 + + -1.2300080060958862e-01 5.6775367259979248e-01 + <_> + + 0 -1 202 7.8984811902046204e-02 + + -1.4242169260978699e-01 4.6941858530044556e-01 + <_> + + 0 -1 203 -1.5377859584987164e-02 + + 6.3946861028671265e-01 -1.1236190050840378e-01 + <_> + + 0 -1 204 -2.2373620595317334e-04 + + 5.5583298206329346e-01 -2.7247580885887146e-01 + <_> + + 0 -1 205 -2.4762390181422234e-02 + + -5.0404858589172363e-01 1.4077790081501007e-01 + <_> + + 0 -1 206 -9.4061157142277807e-05 + + 3.7195280194282532e-01 -2.2502990067005157e-01 + <_> + + 0 -1 207 -2.0256359130144119e-02 + + 5.1051008701324463e-01 -1.4298759400844574e-01 + <_> + + 0 -1 208 4.8122879117727280e-02 + + -6.6979512572288513e-02 3.6622309684753418e-01 + <_> + + 0 -1 209 -2.3787800222635269e-02 + + 5.0813251733779907e-01 -1.2908150255680084e-01 + <_> + + 0 -1 210 -1.0520319920033216e-03 + + -1.5604670345783234e-01 6.6213317215442657e-02 + <_> + + 0 -1 211 -2.6640200521796942e-03 + + -7.2545582056045532e-01 8.2365453243255615e-02 + <_> + 25 + -1.3266400098800659e+00 + + <_> + + 0 -1 212 -5.0224620848894119e-02 + + 7.0845657587051392e-01 -2.5585499405860901e-01 + <_> + + 0 -1 213 1.4072869904339314e-02 + + 6.3033178448677063e-02 -5.9838529676198959e-02 + <_> + + 0 -1 214 1.7804009839892387e-02 + + 1.9414719939231873e-01 -5.8444267511367798e-01 + <_> + + 0 -1 215 1.3046739995479584e-01 + + -1.1516980081796646e-01 8.5040301084518433e-01 + <_> + + 0 -1 216 1.7506800591945648e-02 + + -2.0718969404697418e-01 4.6438288688659668e-01 + <_> + + 0 -1 217 -7.4240020476281643e-03 + + -6.6565167903900146e-01 1.4034989476203918e-01 + <_> + + 0 -1 218 -3.4571118652820587e-02 + + 6.5112978219985962e-01 -1.4901919662952423e-01 + <_> + + 0 -1 219 4.2270249687135220e-03 + + -1.6027219826355577e-03 3.8956061005592346e-01 + <_> + + 0 -1 220 -5.0662040710449219e-02 + + 5.8035767078399658e-01 -1.5141439437866211e-01 + <_> + + 0 -1 221 -7.0715770125389099e-03 + + 5.3008967638015747e-01 -1.4498309791088104e-01 + <_> + + 0 -1 222 -1.1863510124385357e-02 + + 6.7297422885894775e-01 -1.1063549667596817e-01 + <_> + + 0 -1 223 -6.0520030558109283e-02 + + -3.3164489269256592e-01 2.1195560693740845e-01 + <_> + + 0 -1 224 -7.7340779826045036e-03 + + -6.9414401054382324e-01 7.2705313563346863e-02 + <_> + + 0 -1 225 -3.2486140727996826e-02 + + -5.1850819587707520e-01 5.9212621301412582e-02 + <_> + + 0 -1 226 8.3279706537723541e-02 + + 1.2067940086126328e-01 -5.3095632791519165e-01 + <_> + + 0 -1 227 7.8782817581668496e-04 + + -2.7376559376716614e-01 2.7162519097328186e-01 + <_> + + 0 -1 228 -1.7539180815219879e-02 + + -5.6902301311492920e-01 1.2287370115518570e-01 + <_> + + 0 -1 229 -5.8226347900927067e-03 + + 4.3865859508514404e-01 -1.4937420189380646e-01 + <_> + + 0 -1 230 -1.0057560168206692e-02 + + -6.6168862581253052e-01 1.1445429921150208e-01 + <_> + + 0 -1 231 9.0345427393913269e-02 + + -6.6665247082710266e-02 2.8706479072570801e-01 + <_> + + 0 -1 232 -6.7587293684482574e-02 + + -5.3637611865997314e-01 1.1237519979476929e-01 + <_> + + 0 -1 233 -8.1747528165578842e-03 + + 4.4342419505119324e-01 -1.2977659702301025e-01 + <_> + + 0 -1 234 -1.1550550349056721e-02 + + 3.2731580734252930e-01 -1.7007610201835632e-01 + <_> + + 0 -1 235 -1.7406829283572733e-04 + + 1.3278679549694061e-01 -1.0812939703464508e-01 + <_> + + 0 -1 236 4.6040047891438007e-03 + + -1.2265820056200027e-01 4.4125801324844360e-01 + <_> + 17 + -1.4497200250625610e+00 + + <_> + + 0 -1 237 -4.6943280845880508e-02 + + 6.0943442583084106e-01 -2.6378008723258972e-01 + <_> + + 0 -1 238 -1.6899159527383745e-04 + + 1.6658750176429749e-01 -1.2541960179805756e-01 + <_> + + 0 -1 239 2.7983370237052441e-03 + + 1.9057449698448181e-01 -6.5680772066116333e-01 + <_> + + 0 -1 240 4.0413960814476013e-03 + + -1.7317469418048859e-01 6.3620752096176147e-01 + <_> + + 0 -1 241 -8.6033362895250320e-03 + + 6.0258418321609497e-01 -2.3169369995594025e-01 + <_> + + 0 -1 242 8.8247945532202721e-03 + + -1.7565830051898956e-01 7.1041667461395264e-01 + <_> + + 0 -1 243 -9.2786159366369247e-03 + + -6.8908572196960449e-01 1.7896500229835510e-01 + <_> + + 0 -1 244 6.0826768167316914e-03 + + -1.7063720524311066e-01 5.3757482767105103e-01 + <_> + + 0 -1 245 -3.9007369428873062e-02 + + -6.8346357345581055e-01 1.4417080581188202e-01 + <_> + + 0 -1 246 -7.0337951183319092e-02 + + -6.5085667371749878e-01 1.0085479915142059e-01 + <_> + + 0 -1 247 3.3166699111461639e-02 + + -1.9325719773769379e-01 4.7798651456832886e-01 + <_> + + 0 -1 248 7.5288906693458557e-02 + + -6.9567732512950897e-02 4.1250649094581604e-01 + <_> + + 0 -1 249 -7.0501729846000671e-02 + + 7.1573007106781006e-01 -1.0222700238227844e-01 + <_> + + 0 -1 250 1.2249490246176720e-02 + + -1.0612429678440094e-01 6.2959581613540649e-01 + <_> + + 0 -1 251 7.0644676685333252e-02 + + -9.7374632954597473e-02 6.7622041702270508e-01 + <_> + + 0 -1 252 1.6248880326747894e-01 + + 5.2713360637426376e-02 -8.4946572780609131e-01 + <_> + + 0 -1 253 1.3808250427246094e-01 + + 1.4064790308475494e-01 -4.7647210955619812e-01 + <_> + 20 + -1.4622910022735596e+00 + + <_> + + 0 -1 254 -4.1882339864969254e-02 + + -8.0774527788162231e-01 2.6409670710563660e-01 + <_> + + 0 -1 255 -5.3622990846633911e-02 + + 5.5807042121887207e-01 -2.4989689886569977e-01 + <_> + + 0 -1 256 9.3709938228130341e-03 + + 2.6501700282096863e-01 -5.9906947612762451e-01 + <_> + + 0 -1 257 1.3909730128943920e-02 + + -1.4709180593490601e-01 7.3546671867370605e-01 + <_> + + 0 -1 258 1.9003570079803467e-02 + + -1.8875110149383545e-01 7.4874222278594971e-01 + <_> + + 0 -1 259 5.9199850074946880e-03 + + -1.5995639562606812e-01 5.6735777854919434e-01 + <_> + + 0 -1 260 -2.4705139920115471e-02 + + 7.5569921731948853e-01 -1.2350880354642868e-01 + <_> + + 0 -1 261 1.6058359295129776e-02 + + -1.2824609875679016e-01 5.1294547319412231e-01 + <_> + + 0 -1 262 8.8288700208067894e-03 + + -1.6866639256477356e-01 6.1521852016448975e-01 + <_> + + 0 -1 263 1.7556339502334595e-02 + + -1.0901699960231781e-01 5.8031761646270752e-01 + <_> + + 0 -1 264 4.2188119143247604e-02 + + 1.4866240322589874e-01 -6.9222331047058105e-01 + <_> + + 0 -1 265 5.0687207840383053e-04 + + 3.1580869108438492e-02 -3.7009951472282410e-01 + <_> + + 0 -1 266 2.7651190757751465e-03 + + -2.1337540447711945e-01 4.7043010592460632e-01 + <_> + + 0 -1 267 -1.2231520377099514e-03 + + -7.8189671039581299e-01 2.0954260602593422e-02 + <_> + + 0 -1 268 8.5432287305593491e-03 + + -1.4553520083427429e-01 6.7895042896270752e-01 + <_> + + 0 -1 269 -2.0657219283748418e-04 + + 2.4376240372657776e-01 -6.7558802664279938e-02 + <_> + + 0 -1 270 -4.6798270195722580e-03 + + 6.6841697692871094e-01 -1.3887880742549896e-01 + <_> + + 0 -1 271 1.2201759964227676e-01 + + 1.1028160154819489e-01 -7.5307422876358032e-01 + <_> + + 0 -1 272 2.0404340699315071e-02 + + 1.6453839838504791e-01 -5.2231621742248535e-01 + <_> + + 0 -1 273 8.0343370791524649e-04 + + -1.3012850284576416e-01 2.6358529925346375e-01 + <_> + 28 + -1.3885619640350342e+00 + + <_> + + 0 -1 274 7.2791710495948792e-02 + + -1.3727900385856628e-01 8.2915747165679932e-01 + <_> + + 0 -1 275 7.5939209200441837e-03 + + -1.6780120134353638e-01 5.6839722394943237e-01 + <_> + + 0 -1 276 -2.3562390357255936e-02 + + 6.5005600452423096e-01 -1.4245350658893585e-01 + <_> + + 0 -1 277 1.7392950132489204e-02 + + -1.5291449427604675e-01 3.4253540635108948e-01 + <_> + + 0 -1 278 7.1825802326202393e-02 + + -9.9131137132644653e-02 8.2796788215637207e-01 + <_> + + 0 -1 279 1.3673800043761730e-02 + + -4.1787270456552505e-02 5.0781482458114624e-01 + <_> + + 0 -1 280 -2.8585959225893021e-02 + + 7.0115321874618530e-01 -1.3144710659980774e-01 + <_> + + 0 -1 281 -4.1845720261335373e-04 + + 2.8454670310020447e-01 -3.1232029199600220e-01 + <_> + + 0 -1 282 -5.2095681428909302e-02 + + 4.1812941431999207e-01 -1.6993130743503571e-01 + <_> + + 0 -1 283 3.2256329432129860e-03 + + -9.0466208755970001e-02 3.0086231231689453e-01 + <_> + + 0 -1 284 3.4771639853715897e-02 + + -8.4216788411140442e-02 7.8016638755798340e-01 + <_> + + 0 -1 285 -1.3356630224734545e-03 + + 3.3164530992507935e-01 -1.6960920393466949e-01 + <_> + + 0 -1 286 2.5101980566978455e-01 + + -1.3920469582080841e-01 6.6338932514190674e-01 + <_> + + 0 -1 287 -9.9689997732639313e-03 + + -3.7138170003890991e-01 1.2900120019912720e-01 + <_> + + 0 -1 288 1.4303729869425297e-02 + + 1.5729199349880219e-01 -5.0938212871551514e-01 + <_> + + 0 -1 289 -7.0856059901416302e-03 + + 4.6567910909652710e-01 -6.6270820796489716e-02 + <_> + + 0 -1 290 -4.6260809176601470e-04 + + 2.9337310791015625e-01 -2.3339860141277313e-01 + <_> + + 0 -1 291 -3.4435480833053589e-02 + + 7.0024740695953369e-01 -1.0133510082960129e-01 + <_> + + 0 -1 292 -7.2570890188217163e-03 + + -5.6286412477493286e-01 1.3148620724678040e-01 + <_> + + 0 -1 293 4.8352940939366817e-04 + + 2.6227489113807678e-02 -2.6050800085067749e-01 + <_> + + 0 -1 294 -1.2999939732253551e-02 + + 5.3117001056671143e-01 -1.2023050338029861e-01 + <_> + + 0 -1 295 -1.0009329998865724e-03 + + 3.9641299843788147e-01 -1.5995159745216370e-01 + <_> + + 0 -1 296 4.1314200498163700e-03 + + -1.4929920434951782e-01 4.2959120869636536e-01 + <_> + + 0 -1 297 8.7364455685019493e-03 + + -1.1271020025014877e-01 4.9456471204757690e-01 + <_> + + 0 -1 298 2.6352869463153183e-04 + + -1.2124919891357422e-01 4.9439379572868347e-01 + <_> + + 0 -1 299 -5.3885959088802338e-02 + + 7.0355987548828125e-01 -1.3230550102889538e-02 + <_> + + 0 -1 300 4.2885672301054001e-03 + + -1.7540550231933594e-01 3.5679468512535095e-01 + <_> + + 0 -1 301 7.9539399594068527e-03 + + -9.9884003400802612e-02 3.1371670961380005e-01 + <_> + 53 + -1.2766569852828979e+00 + + <_> + + 0 -1 302 5.6752368807792664e-02 + + -3.2576480507850647e-01 3.7375938892364502e-01 + <_> + + 0 -1 303 7.0906039327383041e-03 + + -1.3918629288673401e-01 1.5039840340614319e-01 + <_> + + 0 -1 304 -4.1298821568489075e-02 + + 4.7026079893112183e-01 -1.6179360449314117e-01 + <_> + + 0 -1 305 4.7750189900398254e-01 + + -1.0061579942703247e-01 7.6350742578506470e-01 + <_> + + 0 -1 306 4.2266491055488586e-01 + + -3.5190910100936890e-02 8.3031260967254639e-01 + <_> + + 0 -1 307 -3.3031899482011795e-02 + + -3.7505549192428589e-01 4.8902619630098343e-02 + <_> + + 0 -1 308 1.1923770216526464e-04 + + -2.6614668965339661e-01 2.2346520423889160e-01 + <_> + + 0 -1 309 4.2101400904357433e-03 + + 8.7575968354940414e-03 -5.9383517503738403e-01 + <_> + + 0 -1 310 3.3337279455736279e-04 + + -2.1227659285068512e-01 2.4735039472579956e-01 + <_> + + 0 -1 311 1.1793890036642551e-02 + + -6.8997949361801147e-02 5.8980828523635864e-01 + <_> + + 0 -1 312 -1.1432079970836639e-01 + + -7.7333682775497437e-01 6.2862291932106018e-02 + <_> + + 0 -1 313 8.2401007413864136e-02 + + 1.6825279220938683e-02 -6.1700117588043213e-01 + <_> + + 0 -1 314 1.8126150593161583e-02 + + 9.9533468484878540e-02 -3.8309159874916077e-01 + <_> + + 0 -1 315 8.9282449334859848e-03 + + -1.0109739750623703e-01 2.9483050107955933e-01 + <_> + + 0 -1 316 -1.7437100410461426e-02 + + 4.6149870753288269e-01 -1.0506360232830048e-01 + <_> + + 0 -1 317 -1.1280310340225697e-02 + + 4.5611649751663208e-01 -1.0131160169839859e-01 + <_> + + 0 -1 318 7.0190089754760265e-03 + + -1.3686269521713257e-01 4.1732659935951233e-01 + <_> + + 0 -1 319 -3.2439709175378084e-03 + + 2.3216480016708374e-01 -1.7915369570255280e-01 + <_> + + 0 -1 320 3.5615891218185425e-01 + + -4.8626810312271118e-02 9.5373457670211792e-01 + <_> + + 0 -1 321 3.8440749049186707e-03 + + -1.0288280248641968e-01 3.6717781424522400e-01 + <_> + + 0 -1 322 6.0950029641389847e-02 + + 5.6141741573810577e-02 -6.4585697650909424e-01 + <_> + + 0 -1 323 1.8149229884147644e-01 + + 3.0806390568614006e-02 -4.6048960089683533e-01 + <_> + + 0 -1 324 -9.2359259724617004e-02 + + -4.5248210430145264e-01 8.8152237236499786e-02 + <_> + + 0 -1 325 7.6072998344898224e-03 + + -9.7122326493263245e-02 2.1552249789237976e-01 + <_> + + 0 -1 326 -4.6946710790507495e-04 + + -4.0893718600273132e-01 8.0042190849781036e-02 + <_> + + 0 -1 327 1.0301820293534547e-04 + + -1.1530359834432602e-01 2.7955350279808044e-01 + <_> + + 0 -1 328 2.7936851256527007e-04 + + -1.1396100372076035e-01 2.9316601157188416e-01 + <_> + + 0 -1 329 2.4675959348678589e-01 + + -3.8595631718635559e-02 8.2649981975555420e-01 + <_> + + 0 -1 330 -8.4232958033680916e-03 + + 3.2995969057083130e-01 -1.1645369976758957e-01 + <_> + + 0 -1 331 -4.2311567813158035e-03 + + 2.7142119407653809e-01 -1.0811480134725571e-01 + <_> + + 0 -1 332 1.5653009759262204e-03 + + 7.8253783285617828e-02 -5.2097660303115845e-01 + <_> + + 0 -1 333 -5.0341398455202579e-03 + + 2.9488059878349304e-01 -4.6960510313510895e-02 + <_> + + 0 -1 334 1.4283140189945698e-03 + + -1.3794599473476410e-01 2.4323709309101105e-01 + <_> + + 0 -1 335 1.9031369686126709e-01 + + -5.2093509584665298e-02 6.8708032369613647e-01 + <_> + + 0 -1 336 8.1368777900934219e-03 + + -5.3311519324779510e-02 5.8272719383239746e-01 + <_> + + 0 -1 337 -4.6728368848562241e-02 + + 3.5525360703468323e-01 -1.7806259915232658e-02 + <_> + + 0 -1 338 1.4317169785499573e-02 + + -1.2626640498638153e-01 2.6961010694503784e-01 + <_> + + 0 -1 339 -9.6109732985496521e-02 + + 3.4117481112480164e-01 -3.9217609912157059e-02 + <_> + + 0 -1 340 7.4878811836242676e-02 + + -6.4819902181625366e-02 5.6711381673812866e-01 + <_> + + 0 -1 341 -5.1972299843328074e-05 + + 2.8742098808288574e-01 -1.6428899765014648e-01 + <_> + + 0 -1 342 -2.0099039829801768e-04 + + 2.6590210199356079e-01 -1.2990359961986542e-01 + <_> + + 0 -1 343 1.5583490021526814e-02 + + 3.6322619765996933e-02 -8.8743317127227783e-01 + <_> + + 0 -1 344 6.7313341423869133e-03 + + 1.6281859576702118e-01 -1.9716200232505798e-01 + <_> + + 0 -1 345 -4.5251410454511642e-02 + + -2.0315009355545044e-01 1.5734089910984039e-01 + <_> + + 0 -1 346 2.8729529003612697e-04 + + -1.2449590116739273e-01 2.5658228993415833e-01 + <_> + + 0 -1 347 -2.1028579212725163e-03 + + -5.0887292623519897e-01 3.4083180129528046e-02 + <_> + + 0 -1 348 -3.9328099228441715e-03 + + -3.3933758735656738e-01 9.3055568635463715e-02 + <_> + + 0 -1 349 3.1205590348690748e-03 + + -2.2794060409069061e-02 2.3793530464172363e-01 + <_> + + 0 -1 350 7.8028678894042969e-02 + + -4.4503621757030487e-02 6.7763942480087280e-01 + <_> + + 0 -1 351 4.2476978152990341e-02 + + 9.2582106590270996e-02 -3.5363018512725830e-01 + <_> + + 0 -1 352 -2.5768300518393517e-02 + + -9.0919911861419678e-01 2.6692839339375496e-02 + <_> + + 0 -1 353 6.1444669961929321e-02 + + -2.4954399093985558e-02 7.2120499610900879e-01 + <_> + + 0 -1 354 3.5776318982243538e-03 + + 1.7728990316390991e-01 -1.9723449647426605e-01 + <_> + 38 + -1.4061349630355835e+00 + + <_> + + 0 -1 355 2.8585961461067200e-01 + + -1.5396049618721008e-01 6.6246771812438965e-01 + <_> + + 0 -1 356 9.2271259054541588e-03 + + -1.0746339708566666e-01 4.3118068575859070e-01 + <_> + + 0 -1 357 2.2924109362065792e-03 + + -1.9830130040645599e-01 3.8422289490699768e-01 + <_> + + 0 -1 358 1.4004509896039963e-02 + + -1.9249489903450012e-01 3.4424918889999390e-01 + <_> + + 0 -1 359 9.6023201942443848e-02 + + 1.2990599870681763e-01 -6.0653048753738403e-01 + <_> + + 0 -1 360 6.1803720891475677e-03 + + -1.9046460092067719e-01 1.8918620049953461e-01 + <_> + + 0 -1 361 8.2172285765409470e-03 + + -2.5182679295539856e-01 2.6644590497016907e-01 + <_> + + 0 -1 362 -1.4542760327458382e-03 + + 2.7102690935134888e-01 -1.2041489779949188e-01 + <_> + + 0 -1 363 3.0185449868440628e-03 + + -1.3538609445095062e-01 4.7336030006408691e-01 + <_> + + 0 -1 364 -3.4214779734611511e-03 + + -5.0499719381332397e-01 1.0424809902906418e-01 + <_> + + 0 -1 365 9.5980763435363770e-03 + + -1.0347290337085724e-01 5.8372837305068970e-01 + <_> + + 0 -1 366 4.1849957779049873e-03 + + 5.8896709233522415e-02 -4.6232289075851440e-01 + <_> + + 0 -1 367 -4.6107750385999680e-03 + + 3.7835618853569031e-01 -1.2590229511260986e-01 + <_> + + 0 -1 368 2.8978679329156876e-03 + + -1.3699549436569214e-01 2.5951480865478516e-01 + <_> + + 0 -1 369 4.2606070637702942e-03 + + 8.8233962655067444e-02 -6.3902848958969116e-01 + <_> + + 0 -1 370 -4.2996238917112350e-03 + + -7.9539728164672852e-01 1.7093559727072716e-02 + <_> + + 0 -1 371 3.5423618555068970e-01 + + -5.9345040470361710e-02 8.5579198598861694e-01 + <_> + + 0 -1 372 -3.0245838570408523e-04 + + 3.1470650434494019e-01 -1.4486099779605865e-01 + <_> + + 0 -1 373 2.7169490233063698e-02 + + -1.2492950260639191e-01 4.2809039354324341e-01 + <_> + + 0 -1 374 3.4571529831737280e-03 + + 3.9709329605102539e-02 -7.0891571044921875e-01 + <_> + + 0 -1 375 2.1742798853665590e-03 + + 6.5872453153133392e-02 -6.9496941566467285e-01 + <_> + + 0 -1 376 2.5263810530304909e-02 + + -1.1693959683179855e-01 1.9049769639968872e-01 + <_> + + 0 -1 377 -2.4720989167690277e-02 + + -4.9657958745956421e-01 1.0175380110740662e-01 + <_> + + 0 -1 378 1.0384880006313324e-02 + + -1.1486739665269852e-01 3.3741530776023865e-01 + <_> + + 0 -1 379 5.0045028328895569e-03 + + -1.0963550209999084e-01 3.9255198836326599e-01 + <_> + + 0 -1 380 7.1279620751738548e-03 + + -6.4908191561698914e-02 4.0420401096343994e-01 + <_> + + 0 -1 381 1.9700419157743454e-02 + + -7.9375877976417542e-02 5.3082340955734253e-01 + <_> + + 0 -1 382 4.2097331024706364e-03 + + 4.0797021239995956e-02 -6.0440987348556519e-01 + <_> + + 0 -1 383 4.4459570199251175e-03 + + -1.0386230051517487e-01 4.0935981273651123e-01 + <_> + + 0 -1 384 -5.9610428288578987e-03 + + -5.2914947271347046e-01 8.0539450049400330e-02 + <_> + + 0 -1 385 5.7519221445545554e-04 + + 6.3804402947425842e-02 -5.8636617660522461e-01 + <_> + + 0 -1 386 6.0524851083755493e-02 + + -3.3712800592184067e-02 2.6311159133911133e-01 + <_> + + 0 -1 387 -1.0353810153901577e-02 + + -4.7920021414756775e-01 8.0043956637382507e-02 + <_> + + 0 -1 388 -2.2777510806918144e-02 + + -3.1162750720977783e-01 1.1899980157613754e-01 + <_> + + 0 -1 389 -2.2468879818916321e-02 + + -6.6083461046218872e-01 5.2234489470720291e-02 + <_> + + 0 -1 390 5.8432162040844560e-04 + + 5.4630339145660400e-02 -4.6395659446716309e-01 + <_> + + 0 -1 391 -3.6177870351821184e-03 + + 6.7447042465209961e-01 -5.8789528906345367e-02 + <_> + + 0 -1 392 3.0088860541582108e-02 + + 3.3133521676063538e-02 -4.6461370587348938e-01 + <_> + 40 + -1.3384460210800171e+00 + + <_> + + 0 -1 393 -7.2600990533828735e-02 + + 6.3907092809677124e-01 -1.5124550461769104e-01 + <_> + + 0 -1 394 3.4712558984756470e-01 + + -7.9024657607078552e-02 7.9550421237945557e-01 + <_> + + 0 -1 395 3.4297230839729309e-01 + + -1.2300959974527359e-01 6.5728098154067993e-01 + <_> + + 0 -1 396 3.5616940259933472e-01 + + -5.3733438253402710e-02 8.2851082086563110e-01 + <_> + + 0 -1 397 6.0840700753033161e-03 + + -1.2847210466861725e-01 3.3822679519653320e-01 + <_> + + 0 -1 398 -1.6281309945043176e-04 + + 3.0356609821319580e-01 -2.5182029604911804e-01 + <_> + + 0 -1 399 1.1281900107860565e-02 + + -8.3914346992969513e-02 4.3475928902626038e-01 + <_> + + 0 -1 400 7.4357059784233570e-03 + + -6.7088037729263306e-02 3.7227979302406311e-01 + <_> + + 0 -1 401 -9.0576216578483582e-02 + + -5.8319610357284546e-01 8.0146759748458862e-02 + <_> + + 0 -1 402 8.8247694075107574e-03 + + 1.2901930510997772e-01 -4.7603130340576172e-01 + <_> + + 0 -1 403 -2.6147770695388317e-03 + + -4.0002208948135376e-01 1.1246310174465179e-01 + <_> + + 0 -1 404 -2.5541300419718027e-04 + + 3.2386159896850586e-01 -2.3331870138645172e-01 + <_> + + 0 -1 405 2.6547629386186600e-02 + + 7.2333872318267822e-02 -5.8378398418426514e-01 + <_> + + 0 -1 406 -5.1383141428232193e-02 + + -2.2446189820766449e-01 4.0949739515781403e-02 + <_> + + 0 -1 407 3.3701129723340273e-03 + + -1.6717089712619781e-01 2.5526970624923706e-01 + <_> + + 0 -1 408 -2.2581920493394136e-03 + + -9.2079228162765503e-01 3.4371060319244862e-03 + <_> + + 0 -1 409 -1.3282749569043517e-04 + + 1.8573220074176788e-01 -2.2498969733715057e-01 + <_> + + 0 -1 410 -2.8032590635120869e-03 + + -8.5897541046142578e-01 4.6384520828723907e-02 + <_> + + 0 -1 411 1.3141379458829761e-03 + + 7.9627066850662231e-02 -4.6105968952178955e-01 + <_> + + 0 -1 412 6.3884541392326355e-02 + + -5.3440149873495102e-02 8.1045001745223999e-01 + <_> + + 0 -1 413 -1.9811019301414490e-03 + + -6.3825148344039917e-01 7.6643556356430054e-02 + <_> + + 0 -1 414 1.3359859585762024e-02 + + -9.5037549734115601e-02 6.2533348798751831e-02 + <_> + + 0 -1 415 -1.0935300088021904e-04 + + 1.7479540407657623e-01 -2.2876030206680298e-01 + <_> + + 0 -1 416 1.1910630390048027e-02 + + -7.7041983604431152e-02 5.0458377599716187e-01 + <_> + + 0 -1 417 2.3951700329780579e-01 + + -6.5122887492179871e-02 5.0420749187469482e-01 + <_> + + 0 -1 418 3.9831408858299255e-01 + + -2.9999820515513420e-02 7.9685479402542114e-01 + <_> + + 0 -1 419 6.1875800602138042e-03 + + -8.5339173674583435e-02 3.9451768994331360e-01 + <_> + + 0 -1 420 -9.4047123566269875e-03 + + -4.3441331386566162e-01 8.2619100809097290e-02 + <_> + + 0 -1 421 1.1736630462110043e-02 + + 6.9483160972595215e-02 -4.8706498742103577e-01 + <_> + + 0 -1 422 -1.5176770277321339e-02 + + -5.8541208505630493e-01 3.2879561185836792e-02 + <_> + + 0 -1 423 3.0744259711354971e-03 + + -1.3146080076694489e-01 2.5466740131378174e-01 + <_> + + 0 -1 424 2.9391339048743248e-03 + + -1.0860230028629303e-01 2.7834960818290710e-01 + <_> + + 0 -1 425 2.1510310471057892e-03 + + -1.5750579535961151e-01 2.0877860486507416e-01 + <_> + + 0 -1 426 5.3775361739099026e-03 + + -1.3207030296325684e-01 3.7672939896583557e-01 + <_> + + 0 -1 427 2.2174179553985596e-02 + + -9.0180292725563049e-02 4.1575270891189575e-01 + <_> + + 0 -1 428 -1.9948610570281744e-03 + + 2.5608581304550171e-01 -9.9084928631782532e-02 + <_> + + 0 -1 429 3.1557559967041016e-02 + + 7.4188999831676483e-02 -5.4940229654312134e-01 + <_> + + 0 -1 430 -4.3111158447572961e-05 + + 3.0324628949165344e-01 -1.7781810462474823e-01 + <_> + + 0 -1 431 -3.2675920519977808e-03 + + -6.7212432622909546e-01 5.9188328683376312e-02 + <_> + + 0 -1 432 4.2293380829505622e-04 + + -1.1034099757671356e-01 1.2573179602622986e-01 + <_> + 45 + -1.2722699642181396e+00 + + <_> + + 0 -1 433 -4.2562019079923630e-02 + + 3.3346658945083618e-01 -2.9861980676651001e-01 + <_> + + 0 -1 434 4.1827198863029480e-01 + + -9.5138698816299438e-02 7.5709921121597290e-01 + <_> + + 0 -1 435 -2.0256379619240761e-02 + + 4.7783890366554260e-01 -1.4592100679874420e-01 + <_> + + 0 -1 436 -1.8948309123516083e-02 + + -3.8727501034736633e-01 5.2479889243841171e-02 + <_> + + 0 -1 437 -4.0550589561462402e-02 + + 5.4646247625350952e-01 -8.1399857997894287e-02 + <_> + + 0 -1 438 5.1872748136520386e-01 + + -2.7930539101362228e-02 8.4580981731414795e-01 + <_> + + 0 -1 439 2.0713619887828827e-01 + + -5.8850869536399841e-02 7.9601562023162842e-01 + <_> + + 0 -1 440 8.1972572952508926e-03 + + -9.9966369569301605e-02 4.9831560254096985e-01 + <_> + + 0 -1 441 1.7445389181375504e-02 + + 6.8040959537029266e-02 -5.6699818372726440e-01 + <_> + + 0 -1 442 -5.6310281157493591e-02 + + -6.8628042936325073e-01 7.4222557246685028e-02 + <_> + + 0 -1 443 1.8095560371875763e-01 + + -5.2808128297328949e-02 8.4483182430267334e-01 + <_> + + 0 -1 444 -2.3450690787285566e-03 + + 2.8396940231323242e-01 -1.1123369634151459e-01 + <_> + + 0 -1 445 3.8937770295888186e-03 + + 6.5499313175678253e-02 -5.7920962572097778e-01 + <_> + + 0 -1 446 3.9383721741614863e-05 + + -3.0930471420288086e-01 4.2237108945846558e-01 + <_> + + 0 -1 447 3.3899158239364624e-02 + + 3.0707539990544319e-02 -7.2299808263778687e-01 + <_> + + 0 -1 448 -3.3644389361143112e-02 + + 4.2664441466331482e-01 -7.2005778551101685e-02 + <_> + + 0 -1 449 3.8807760924100876e-02 + + -4.1713520884513855e-02 6.5995568037033081e-01 + <_> + + 0 -1 450 -3.9149548683781177e-05 + + 4.9335500597953796e-01 -2.4260109663009644e-01 + <_> + + 0 -1 451 -2.7580570895224810e-04 + + 1.7910109460353851e-01 -2.1925190091133118e-01 + <_> + + 0 -1 452 1.2636659666895866e-02 + + -7.1233622729778290e-02 2.5342619419097900e-01 + <_> + + 0 -1 453 -3.3681739587336779e-03 + + 3.3100861310958862e-01 -1.0207779705524445e-01 + <_> + + 0 -1 454 -4.1184529662132263e-02 + + -4.7871989011764526e-01 2.7444809675216675e-02 + <_> + + 0 -1 455 1.7285279929637909e-02 + + -2.3733820021152496e-01 1.5414300560951233e-01 + <_> + + 0 -1 456 -5.8373320847749710e-02 + + 3.6355251073837280e-01 -6.2911927700042725e-02 + <_> + + 0 -1 457 2.5229319930076599e-02 + + -9.4345822930335999e-02 4.3224421143531799e-01 + <_> + + 0 -1 458 4.7925519756972790e-03 + + 4.8664271831512451e-02 -4.7046890854835510e-01 + <_> + + 0 -1 459 -1.3549529830925167e-04 + + 1.9361880421638489e-01 -1.9338470697402954e-01 + <_> + + 0 -1 460 -1.7969410866498947e-02 + + 2.9000860452651978e-01 -5.4545279592275620e-02 + <_> + + 0 -1 461 1.1141040362417698e-02 + + -1.0802250355482101e-01 3.3327960968017578e-01 + <_> + + 0 -1 462 3.9759509265422821e-02 + + 1.9240869209170341e-02 -4.8899960517883301e-01 + <_> + + 0 -1 463 -2.2652709856629372e-02 + + -5.0369280576705933e-01 8.0773733556270599e-02 + <_> + + 0 -1 464 1.0915650054812431e-03 + + 6.5554052591323853e-02 -2.4443879723548889e-01 + <_> + + 0 -1 465 6.8754747509956360e-02 + + 8.9196808636188507e-02 -3.5653901100158691e-01 + <_> + + 0 -1 466 -3.3071058988571167e-01 + + 4.6495699882507324e-01 -5.8183699846267700e-02 + <_> + + 0 -1 467 -1.9307229667901993e-02 + + -4.4157180190086365e-01 8.3050116896629333e-02 + <_> + + 0 -1 468 3.4808758646249771e-02 + + 5.3480580449104309e-02 -5.0377398729324341e-01 + <_> + + 0 -1 469 -3.8908151327632368e-04 + + 3.4271261096000671e-01 -8.9923180639743805e-02 + <_> + + 0 -1 470 -2.1421869751065969e-03 + + -6.0642802715301514e-01 5.5589240044355392e-02 + <_> + + 0 -1 471 1.1015810072422028e-01 + + -5.4774720221757889e-02 6.8780910968780518e-01 + <_> + + 0 -1 472 3.0875208904035389e-04 + + -5.5834218859672546e-02 9.3168236315250397e-02 + <_> + + 0 -1 473 2.1960400044918060e-03 + + 5.3955748677253723e-02 -6.0503059625625610e-01 + <_> + + 0 -1 474 -1.2606250122189522e-02 + + -4.6864029765129089e-01 5.9943869709968567e-02 + <_> + + 0 -1 475 -2.7497899718582630e-03 + + 2.8942531347274780e-01 -1.1297850310802460e-01 + <_> + + 0 -1 476 6.0962641239166260e-01 + + -4.7885991632938385e-02 5.9465491771697998e-01 + <_> + + 0 -1 477 4.5023251324892044e-02 + + 6.3831068575382233e-02 -5.2956801652908325e-01 + <_> + 44 + -1.3022350072860718e+00 + + <_> + + 0 -1 478 1.5907280147075653e-02 + + -3.8192328810691833e-01 2.9411768913269043e-01 + <_> + + 0 -1 479 -3.0483009293675423e-02 + + 6.4014548063278198e-01 -1.1338239908218384e-01 + <_> + + 0 -1 480 2.5841239839792252e-02 + + -1.7654690146446228e-01 2.5563400983810425e-01 + <_> + + 0 -1 481 1.2160619720816612e-02 + + -4.9461990594863892e-02 3.4733989834785461e-01 + <_> + + 0 -1 482 -1.5910159796476364e-02 + + 4.7966769337654114e-01 -1.3009509444236755e-01 + <_> + + 0 -1 483 3.5282061435282230e-04 + + -3.4184929728507996e-01 2.3091129958629608e-01 + <_> + + 0 -1 484 6.7633582511916757e-04 + + -1.5432509779930115e-01 2.6687300205230713e-01 + <_> + + 0 -1 485 -5.9936139732599258e-02 + + -4.8802581429481506e-01 9.3327447772026062e-02 + <_> + + 0 -1 486 -1.1342409998178482e-01 + + -6.5771442651748657e-01 5.9166818857192993e-02 + <_> + + 0 -1 487 -4.3361280113458633e-03 + + -1.5936520695686340e-01 5.0237040966749191e-02 + <_> + + 0 -1 488 -1.8627740209922194e-03 + + 3.0730259418487549e-01 -1.2540669739246368e-01 + <_> + + 0 -1 489 1.2653009966015816e-02 + + -1.0044930130243301e-01 3.7496179342269897e-01 + <_> + + 0 -1 490 6.9118577241897583e-01 + + -4.7146409749984741e-02 8.3212441205978394e-01 + <_> + + 0 -1 491 -2.6093868655152619e-04 + + 3.1987738609313965e-01 -2.7183309197425842e-01 + <_> + + 0 -1 492 -7.6345056295394897e-02 + + 4.3091300129890442e-01 -9.0888269245624542e-02 + <_> + + 0 -1 493 2.8098300099372864e-03 + + 5.8731120079755783e-02 -6.1996752023696899e-01 + <_> + + 0 -1 494 -1.3322039740160108e-04 + + 2.0000059902667999e-01 -2.0120109617710114e-01 + <_> + + 0 -1 495 -1.3717629946768284e-02 + + -7.3095452785491943e-01 2.7178529649972916e-02 + <_> + + 0 -1 496 -6.2303808517754078e-03 + + -5.4780989885330200e-01 6.8749949336051941e-02 + <_> + + 0 -1 497 4.9922719597816467e-02 + + -4.7304309904575348e-02 8.2423102855682373e-01 + <_> + + 0 -1 498 -1.9126719562336802e-03 + + -5.3940171003341675e-01 7.7447593212127686e-02 + <_> + + 0 -1 499 1.1384560493752360e-03 + + -9.6537686884403229e-02 1.5485690534114838e-01 + <_> + + 0 -1 500 -2.4732090532779694e-03 + + 3.5590788722038269e-01 -9.3169830739498138e-02 + <_> + + 0 -1 501 -7.1464257780462503e-04 + + 1.4520190656185150e-01 -7.4194207787513733e-02 + <_> + + 0 -1 502 -2.0437149330973625e-02 + + 4.4163769483566284e-01 -8.0942437052726746e-02 + <_> + + 0 -1 503 -4.0483791381120682e-03 + + -5.9992778301239014e-01 3.3025380223989487e-02 + <_> + + 0 -1 504 1.1148050427436829e-02 + + -1.1358329653739929e-01 3.2644999027252197e-01 + <_> + + 0 -1 505 9.8842009902000427e-03 + + 5.5404480546712875e-02 -3.2730978727340698e-01 + <_> + + 0 -1 506 3.1296359375119209e-03 + + 7.7408656477928162e-02 -4.5953071117401123e-01 + <_> + + 0 -1 507 2.9721839819103479e-03 + + -1.2917269766330719e-01 1.5523110330104828e-01 + <_> + + 0 -1 508 2.0554479211568832e-02 + + 8.7600469589233398e-02 -4.5774188637733459e-01 + <_> + + 0 -1 509 -2.3027280345559120e-02 + + 3.5488089919090271e-01 -2.0566919818520546e-02 + <_> + + 0 -1 510 -8.3903772756457329e-03 + + -4.3240728974342346e-01 9.2067979276180267e-02 + <_> + + 0 -1 511 -1.1431539896875620e-03 + + 3.9591339230537415e-01 -2.3192889988422394e-02 + <_> + + 0 -1 512 -4.9133709399029613e-04 + + 4.2749640345573425e-01 -8.5524216294288635e-02 + <_> + + 0 -1 513 5.1292928401380777e-04 + + -1.6196739673614502e-01 1.9614970684051514e-01 + <_> + + 0 -1 514 -5.8478871360421181e-03 + + -5.9116369485855103e-01 6.2448240816593170e-02 + <_> + + 0 -1 515 -9.4133049249649048e-02 + + 4.7701609134674072e-01 -5.6710161268711090e-02 + <_> + + 0 -1 516 1.0079269850393757e-04 + + -1.6257099807262421e-01 2.1402290463447571e-01 + <_> + + 0 -1 517 3.2930231100181118e-05 + + -1.8596050143241882e-01 1.9647690653800964e-01 + <_> + + 0 -1 518 -1.1743210052372888e-04 + + 3.1821349263191223e-01 -1.3287380337715149e-01 + <_> + + 0 -1 519 1.2751810252666473e-01 + + 3.0140079557895660e-02 -7.4110358953475952e-01 + <_> + + 0 -1 520 8.0326296389102936e-02 + + 4.1555039584636688e-02 -8.2636839151382446e-01 + <_> + + 0 -1 521 1.6904190415516496e-03 + + -1.0290619730949402e-01 2.9724180698394775e-01 + <_> + 47 + -1.1933319568634033e+00 + + <_> + + 0 -1 522 -4.6122789382934570e-02 + + 4.4252589344978333e-01 -2.9913198947906494e-01 + <_> + + 0 -1 523 3.6723318696022034e-01 + + -6.3011750578880310e-02 7.7125382423400879e-01 + <_> + + 0 -1 524 -3.0962929595261812e-03 + + 3.5142418742179871e-01 -1.7306439578533173e-01 + <_> + + 0 -1 525 9.2647131532430649e-03 + + -1.6072809696197510e-01 1.8532909452915192e-01 + <_> + + 0 -1 526 3.1748649198561907e-03 + + -1.9688999652862549e-01 2.4097280204296112e-01 + <_> + + 0 -1 527 8.0439839512109756e-03 + + 8.9862972497940063e-02 -3.6552259325981140e-01 + <_> + + 0 -1 528 3.2752490043640137e-01 + + -5.6879680603742599e-02 7.7493369579315186e-01 + <_> + + 0 -1 529 -1.9074430689215660e-02 + + -2.8953808546066284e-01 6.2291670590639114e-02 + <_> + + 0 -1 530 -2.0501749590039253e-02 + + -6.2625300884246826e-01 6.8276971578598022e-02 + <_> + + 0 -1 531 5.3187010053079575e-05 + + -2.5149559974670410e-01 2.6131960749626160e-01 + <_> + + 0 -1 532 3.3275580499321222e-03 + + -1.1990779638290405e-01 3.6519300937652588e-01 + <_> + + 0 -1 533 5.8408430777490139e-03 + + -8.2748517394065857e-02 2.3650820553302765e-01 + <_> + + 0 -1 534 -4.6462330967187881e-02 + + -6.9285649061203003e-01 7.8197672963142395e-02 + <_> + + 0 -1 535 -3.7785700988024473e-03 + + 3.4372571110725403e-01 -1.0275450348854065e-01 + <_> + + 0 -1 536 1.6655459767207503e-03 + + -1.1605279892683029e-01 3.7162029743194580e-01 + <_> + + 0 -1 537 -5.7107670727418736e-05 + + 4.5893669128417969e-01 -2.1236430108547211e-01 + <_> + + 0 -1 538 -9.0066380798816681e-03 + + -5.9533411264419556e-01 8.0876402556896210e-02 + <_> + + 0 -1 539 -1.3789710402488708e-01 + + 3.9570671319961548e-01 -8.9885376393795013e-02 + <_> + + 0 -1 540 5.7599872350692749e-01 + + -5.3810819983482361e-02 8.1703948974609375e-01 + <_> + + 0 -1 541 -2.3918158840388060e-03 + + 1.3933740556240082e-01 -4.2155928909778595e-02 + <_> + + 0 -1 542 2.4896071408875287e-04 + + -1.4858660101890564e-01 2.6263329386711121e-01 + <_> + + 0 -1 543 3.3062491565942764e-02 + + 3.0659910291433334e-02 -3.2318601012229919e-01 + <_> + + 0 -1 544 4.4321879744529724e-02 + + 4.7853820025920868e-02 -7.8135901689529419e-01 + <_> + + 0 -1 545 -1.8718190491199493e-02 + + 1.2012620270252228e-01 -1.1211469769477844e-01 + <_> + + 0 -1 546 9.2309370636940002e-02 + + 4.2463079094886780e-02 -8.0097001791000366e-01 + <_> + + 0 -1 547 9.0665437281131744e-02 + + -2.2304529324173927e-02 1.2847979366779327e-01 + <_> + + 0 -1 548 -5.8294929563999176e-02 + + -3.9368540048599243e-01 9.5482140779495239e-02 + <_> + + 0 -1 549 4.6649780124425888e-03 + + -6.5641947090625763e-02 3.6407178640365601e-01 + <_> + + 0 -1 550 5.2480432204902172e-03 + + 6.8765781819820404e-02 -5.0508302450180054e-01 + <_> + + 0 -1 551 2.5315659586340189e-03 + + -9.3347169458866119e-02 1.6496129333972931e-01 + <_> + + 0 -1 552 2.4391160695813596e-04 + + -1.8885439634323120e-01 1.6956700384616852e-01 + <_> + + 0 -1 553 -6.3037211075425148e-03 + + 3.8263529539108276e-01 -5.9042099863290787e-02 + <_> + + 0 -1 554 2.2754059173166752e-03 + + -1.2248820066452026e-01 2.8283658623695374e-01 + <_> + + 0 -1 555 -2.7694869041442871e-01 + + 4.8514971137046814e-01 -4.0482539683580399e-02 + <_> + + 0 -1 556 5.8051547966897488e-03 + + -8.3558417856693268e-02 4.2151498794555664e-01 + <_> + + 0 -1 557 2.4654529988765717e-03 + + -1.2816859781742096e-01 2.0776629447937012e-01 + <_> + + 0 -1 558 7.8863510861992836e-03 + + -1.7197540402412415e-01 2.0790819823741913e-01 + <_> + + 0 -1 559 -1.1817130260169506e-02 + + -5.7880669832229614e-01 5.8959141373634338e-02 + <_> + + 0 -1 560 -6.4139917492866516e-02 + + -6.3689261674880981e-01 4.1797500103712082e-02 + <_> + + 0 -1 561 -1.2179970508441329e-03 + + 2.3568700253963470e-01 -8.0515258014202118e-02 + <_> + + 0 -1 562 2.8652620967477560e-03 + + -9.3137197196483612e-02 3.9025950431823730e-01 + <_> + + 0 -1 563 -5.7746102102100849e-03 + + -5.7539868354797363e-01 5.9677690267562866e-02 + <_> + + 0 -1 564 6.5377086400985718e-02 + + 3.4166071563959122e-02 -7.4253422021865845e-01 + <_> + + 0 -1 565 1.6265710815787315e-02 + + 5.3654260933399200e-02 -2.3658609390258789e-01 + <_> + + 0 -1 566 2.2717609535902739e-03 + + 5.3359109908342361e-02 -5.4940742254257202e-01 + <_> + + 0 -1 567 2.2626020014286041e-01 + + -4.2046058923006058e-02 7.7912521362304688e-01 + <_> + + 0 -1 568 -2.9377460479736328e-02 + + -5.9470587968826294e-01 5.4817870259284973e-02 + + <_> + + <_> + 0 0 2 4 -1. + <_> + 0 2 2 2 2. + <_> + + <_> + 34 10 2 8 -1. + <_> + 34 14 2 4 2. + <_> + + <_> + 0 10 2 8 -1. + <_> + 0 14 2 4 2. + <_> + + <_> + 15 0 18 10 -1. + <_> + 24 0 9 5 2. + <_> + 15 5 9 5 2. + <_> + + <_> + 7 0 4 4 -1. + <_> + 7 0 2 4 2. + 1 + <_> + + <_> + 15 5 6 4 -1. + <_> + 15 6 6 2 2. + <_> + + <_> + 13 6 8 3 -1. + <_> + 13 7 8 1 3. + <_> + + <_> + 14 6 8 4 -1. + <_> + 14 7 8 2 2. + <_> + + <_> + 0 10 2 8 -1. + <_> + 0 14 2 4 2. + <_> + + <_> + 34 0 2 16 -1. + <_> + 35 0 1 8 2. + <_> + 34 8 1 8 2. + <_> + + <_> + 1 0 4 7 -1. + <_> + 3 0 2 7 2. + <_> + + <_> + 4 7 28 3 -1. + <_> + 11 7 14 3 2. + <_> + + <_> + 34 0 2 2 -1. + <_> + 34 1 2 1 2. + <_> + + <_> + 0 12 4 6 -1. + <_> + 0 15 4 3 2. + <_> + + <_> + 34 0 2 2 -1. + <_> + 34 1 2 1 2. + <_> + + <_> + 0 0 2 2 -1. + <_> + 0 1 2 1 2. + <_> + + <_> + 17 5 9 12 -1. + <_> + 20 5 3 12 3. + <_> + + <_> + 10 5 9 12 -1. + <_> + 13 5 3 12 3. + <_> + + <_> + 4 0 32 1 -1. + <_> + 4 0 16 1 2. + <_> + + <_> + 0 0 3 3 -1. + <_> + 1 0 1 3 3. + <_> + + <_> + 32 7 4 7 -1. + <_> + 33 8 2 7 2. + 1 + <_> + + <_> + 7 0 8 6 -1. + <_> + 7 0 4 3 2. + <_> + 11 3 4 3 2. + <_> + + <_> + 0 0 2 2 -1. + <_> + 0 1 2 1 2. + <_> + + <_> + 27 1 8 9 -1. + <_> + 29 3 4 9 2. + 1 + <_> + + <_> + 1 10 1 8 -1. + <_> + 1 14 1 4 2. + <_> + + <_> + 3 6 30 9 -1. + <_> + 13 9 10 3 9. + <_> + + <_> + 12 5 8 6 -1. + <_> + 12 7 8 2 3. + <_> + + <_> + 16 4 6 3 -1. + <_> + 16 5 6 1 3. + <_> + + <_> + 0 0 2 18 -1. + <_> + 0 0 1 9 2. + <_> + 1 9 1 9 2. + <_> + + <_> + 34 2 2 14 -1. + <_> + 35 2 1 7 2. + <_> + 34 9 1 7 2. + <_> + + <_> + 0 2 2 14 -1. + <_> + 0 2 1 7 2. + <_> + 1 9 1 7 2. + <_> + + <_> + 35 0 1 4 -1. + <_> + 35 2 1 2 2. + <_> + + <_> + 5 0 24 18 -1. + <_> + 5 0 12 9 2. + <_> + 17 9 12 9 2. + <_> + + <_> + 35 16 1 2 -1. + <_> + 35 17 1 1 2. + <_> + + <_> + 0 16 1 2 -1. + <_> + 0 17 1 1 2. + <_> + + <_> + 17 6 8 12 -1. + <_> + 19 6 4 12 2. + <_> + + <_> + 11 5 8 13 -1. + <_> + 13 5 4 13 2. + <_> + + <_> + 35 16 1 2 -1. + <_> + 35 17 1 1 2. + <_> + + <_> + 10 9 12 3 -1. + <_> + 10 10 12 1 3. + <_> + + <_> + 0 10 1 8 -1. + <_> + 0 14 1 4 2. + <_> + + <_> + 20 0 10 10 -1. + <_> + 25 0 5 5 2. + <_> + 20 5 5 5 2. + <_> + + <_> + 0 0 1 4 -1. + <_> + 0 2 1 2 2. + <_> + + <_> + 19 0 13 18 -1. + <_> + 19 9 13 9 2. + <_> + + <_> + 4 0 14 6 -1. + <_> + 4 0 7 3 2. + <_> + 11 3 7 3 2. + <_> + + <_> + 16 5 6 6 -1. + <_> + 16 7 6 2 3. + <_> + + <_> + 13 7 7 8 -1. + <_> + 13 9 7 4 2. + <_> + + <_> + 33 0 3 1 -1. + <_> + 34 0 1 1 3. + <_> + + <_> + 7 1 10 4 -1. + <_> + 6 2 10 2 2. + 1 + <_> + + <_> + 15 2 6 16 -1. + <_> + 18 2 3 8 2. + <_> + 15 10 3 8 2. + <_> + + <_> + 0 10 1 8 -1. + <_> + 0 14 1 4 2. + <_> + + <_> + 27 4 6 6 -1. + <_> + 29 6 2 6 3. + 1 + <_> + + <_> + 14 5 8 8 -1. + <_> + 16 5 4 8 2. + <_> + + <_> + 27 5 6 6 -1. + <_> + 29 7 2 6 3. + 1 + <_> + + <_> + 9 5 6 6 -1. + <_> + 7 7 6 2 3. + 1 + <_> + + <_> + 12 5 12 9 -1. + <_> + 15 5 6 9 2. + <_> + + <_> + 0 0 3 1 -1. + <_> + 1 0 1 1 3. + <_> + + <_> + 15 4 18 6 -1. + <_> + 15 6 18 2 3. + <_> + + <_> + 0 10 1 6 -1. + <_> + 0 13 1 3 2. + <_> + + <_> + 3 6 30 6 -1. + <_> + 13 8 10 2 9. + <_> + + <_> + 11 7 12 4 -1. + <_> + 11 8 12 2 2. + <_> + + <_> + 14 8 9 3 -1. + <_> + 14 9 9 1 3. + <_> + + <_> + 14 8 7 4 -1. + <_> + 14 9 7 2 2. + <_> + + <_> + 12 7 18 6 -1. + <_> + 12 9 18 2 3. + <_> + + <_> + 7 8 3 10 -1. + <_> + 7 13 3 5 2. + <_> + + <_> + 35 10 1 6 -1. + <_> + 35 13 1 3 2. + <_> + + <_> + 0 10 1 6 -1. + <_> + 0 13 1 3 2. + <_> + + <_> + 18 13 9 5 -1. + <_> + 21 13 3 5 3. + <_> + + <_> + 15 9 6 4 -1. + <_> + 15 10 6 2 2. + <_> + + <_> + 16 4 18 8 -1. + <_> + 16 6 18 4 2. + <_> + + <_> + 9 14 9 3 -1. + <_> + 12 14 3 3 3. + <_> + + <_> + 32 0 4 6 -1. + <_> + 32 0 2 6 2. + <_> + + <_> + 0 0 4 6 -1. + <_> + 2 0 2 6 2. + <_> + + <_> + 27 0 6 7 -1. + <_> + 29 2 2 7 3. + 1 + <_> + + <_> + 0 0 1 4 -1. + <_> + 0 2 1 2 2. + <_> + + <_> + 27 8 6 4 -1. + <_> + 29 10 2 4 3. + 1 + <_> + + <_> + 4 9 27 6 -1. + <_> + 13 11 9 2 9. + <_> + + <_> + 31 14 2 3 -1. + <_> + 31 14 1 3 2. + <_> + + <_> + 10 0 5 6 -1. + <_> + 8 2 5 2 3. + 1 + <_> + + <_> + 14 7 11 3 -1. + <_> + 14 8 11 1 3. + <_> + + <_> + 0 12 2 6 -1. + <_> + 0 15 2 3 2. + <_> + + <_> + 34 13 2 4 -1. + <_> + 34 15 2 2 2. + <_> + + <_> + 0 13 2 4 -1. + <_> + 0 15 2 2 2. + <_> + + <_> + 3 6 4 12 -1. + <_> + 3 10 4 4 3. + <_> + + <_> + 14 0 22 12 -1. + <_> + 25 0 11 6 2. + <_> + 14 6 11 6 2. + <_> + + <_> + 8 1 7 6 -1. + <_> + 6 3 7 2 3. + 1 + <_> + + <_> + 12 5 14 3 -1. + <_> + 12 6 14 1 3. + <_> + + <_> + 7 6 7 4 -1. + <_> + 6 7 7 2 2. + 1 + <_> + + <_> + 18 3 6 4 -1. + <_> + 18 4 6 2 2. + <_> + + <_> + 4 5 5 6 -1. + <_> + 4 7 5 2 3. + <_> + + <_> + 33 0 3 4 -1. + <_> + 34 0 1 4 3. + <_> + + <_> + 9 0 6 18 -1. + <_> + 9 9 6 9 2. + <_> + + <_> + 6 6 24 6 -1. + <_> + 14 8 8 2 9. + <_> + + <_> + 16 8 4 4 -1. + <_> + 16 9 4 2 2. + <_> + + <_> + 13 8 13 4 -1. + <_> + 13 9 13 2 2. + <_> + + <_> + 0 16 2 2 -1. + <_> + 0 17 2 1 2. + <_> + + <_> + 35 14 1 4 -1. + <_> + 35 15 1 2 2. + <_> + + <_> + 0 14 1 4 -1. + <_> + 0 15 1 2 2. + <_> + + <_> + 15 6 9 7 -1. + <_> + 18 6 3 7 3. + <_> + + <_> + 0 0 3 4 -1. + <_> + 1 0 1 4 3. + <_> + + <_> + 34 16 2 2 -1. + <_> + 35 16 1 1 2. + <_> + 34 17 1 1 2. + <_> + + <_> + 0 16 2 2 -1. + <_> + 0 16 1 1 2. + <_> + 1 17 1 1 2. + <_> + + <_> + 22 0 10 4 -1. + <_> + 22 0 5 4 2. + 1 + <_> + + <_> + 15 4 6 14 -1. + <_> + 15 4 3 7 2. + <_> + 18 11 3 7 2. + <_> + + <_> + 15 3 8 10 -1. + <_> + 17 3 4 10 2. + <_> + + <_> + 0 0 2 5 -1. + <_> + 1 0 1 5 2. + <_> + + <_> + 7 1 8 6 -1. + <_> + 5 3 8 2 3. + 1 + <_> + + <_> + 19 0 11 18 -1. + <_> + 19 9 11 9 2. + <_> + + <_> + 6 8 24 6 -1. + <_> + 14 10 8 2 9. + <_> + + <_> + 14 6 10 3 -1. + <_> + 14 7 10 1 3. + <_> + + <_> + 12 7 11 4 -1. + <_> + 12 8 11 2 2. + <_> + + <_> + 18 0 16 6 -1. + <_> + 26 0 8 3 2. + <_> + 18 3 8 3 2. + <_> + + <_> + 5 3 7 3 -1. + <_> + 4 4 7 1 3. + 1 + <_> + + <_> + 18 4 4 4 -1. + <_> + 18 5 4 2 2. + <_> + + <_> + 5 3 10 4 -1. + <_> + 4 4 10 2 2. + 1 + <_> + + <_> + 14 8 8 10 -1. + <_> + 18 8 4 5 2. + <_> + 14 13 4 5 2. + <_> + + <_> + 3 0 4 1 -1. + <_> + 5 0 2 1 2. + <_> + + <_> + 20 0 10 8 -1. + <_> + 25 0 5 4 2. + <_> + 20 4 5 4 2. + <_> + + <_> + 13 0 10 8 -1. + <_> + 13 0 5 4 2. + <_> + 18 4 5 4 2. + <_> + + <_> + 21 5 6 13 -1. + <_> + 23 5 2 13 3. + <_> + + <_> + 9 5 6 13 -1. + <_> + 11 5 2 13 3. + <_> + + <_> + 27 5 5 3 -1. + <_> + 27 6 5 1 3. + <_> + + <_> + 10 0 3 6 -1. + <_> + 10 2 3 2 3. + <_> + + <_> + 26 6 3 6 -1. + <_> + 26 8 3 2 3. + <_> + + <_> + 0 11 36 7 -1. + <_> + 18 11 18 7 2. + <_> + + <_> + 27 5 5 3 -1. + <_> + 27 6 5 1 3. + <_> + + <_> + 4 5 5 3 -1. + <_> + 4 6 5 1 3. + <_> + + <_> + 28 6 4 4 -1. + <_> + 29 7 2 4 2. + 1 + <_> + + <_> + 14 15 8 2 -1. + <_> + 16 15 4 2 2. + <_> + + <_> + 3 5 30 6 -1. + <_> + 13 7 10 2 9. + <_> + + <_> + 6 7 16 6 -1. + <_> + 6 9 16 2 3. + <_> + + <_> + 14 10 12 6 -1. + <_> + 14 12 12 2 3. + <_> + + <_> + 6 0 12 10 -1. + <_> + 6 0 6 5 2. + <_> + 12 5 6 5 2. + <_> + + <_> + 25 2 7 16 -1. + <_> + 25 10 7 8 2. + <_> + + <_> + 9 6 18 7 -1. + <_> + 15 6 6 7 3. + <_> + + <_> + 5 0 26 18 -1. + <_> + 18 0 13 9 2. + <_> + 5 9 13 9 2. + <_> + + <_> + 10 6 10 3 -1. + <_> + 10 7 10 1 3. + <_> + + <_> + 17 6 6 4 -1. + <_> + 17 7 6 2 2. + <_> + + <_> + 15 6 6 7 -1. + <_> + 18 6 3 7 2. + <_> + + <_> + 26 6 5 4 -1. + <_> + 26 7 5 2 2. + <_> + + <_> + 0 12 1 6 -1. + <_> + 0 15 1 3 2. + <_> + + <_> + 9 4 18 14 -1. + <_> + 18 4 9 7 2. + <_> + 9 11 9 7 2. + <_> + + <_> + 7 5 6 3 -1. + <_> + 6 6 6 1 3. + 1 + <_> + + <_> + 27 5 6 3 -1. + <_> + 29 7 2 3 3. + 1 + <_> + + <_> + 7 8 3 3 -1. + <_> + 6 9 3 1 3. + 1 + <_> + + <_> + 28 5 6 5 -1. + <_> + 30 7 2 5 3. + 1 + <_> + + <_> + 8 5 5 6 -1. + <_> + 6 7 5 2 3. + 1 + <_> + + <_> + 31 0 4 1 -1. + <_> + 31 0 2 1 2. + <_> + + <_> + 1 0 4 1 -1. + <_> + 3 0 2 1 2. + <_> + + <_> + 17 11 4 3 -1. + <_> + 17 12 4 1 3. + <_> + + <_> + 12 3 7 4 -1. + <_> + 12 4 7 2 2. + <_> + + <_> + 14 9 9 3 -1. + <_> + 14 10 9 1 3. + <_> + + <_> + 1 17 21 1 -1. + <_> + 8 17 7 1 3. + <_> + + <_> + 12 9 20 4 -1. + <_> + 12 9 10 4 2. + <_> + + <_> + 3 9 22 4 -1. + <_> + 14 9 11 4 2. + <_> + + <_> + 25 0 3 3 -1. + <_> + 26 1 1 3 3. + 1 + <_> + + <_> + 14 9 4 3 -1. + <_> + 14 10 4 1 3. + <_> + + <_> + 19 4 9 3 -1. + <_> + 22 4 3 3 3. + <_> + + <_> + 8 4 9 3 -1. + <_> + 11 4 3 3 3. + <_> + + <_> + 0 15 36 3 -1. + <_> + 12 16 12 1 9. + <_> + + <_> + 2 0 4 2 -1. + <_> + 2 0 4 1 2. + 1 + <_> + + <_> + 19 9 2 9 -1. + <_> + 19 12 2 3 3. + <_> + + <_> + 13 7 8 3 -1. + <_> + 13 8 8 1 3. + <_> + + <_> + 30 4 2 2 -1. + <_> + 31 4 1 1 2. + <_> + 30 5 1 1 2. + <_> + + <_> + 4 4 2 2 -1. + <_> + 4 4 1 1 2. + <_> + 5 5 1 1 2. + <_> + + <_> + 18 7 4 3 -1. + <_> + 18 8 4 1 3. + <_> + + <_> + 9 0 1 8 -1. + <_> + 9 0 1 4 2. + 1 + <_> + + <_> + 25 6 10 3 -1. + <_> + 25 7 10 1 3. + <_> + + <_> + 1 6 10 3 -1. + <_> + 1 7 10 1 3. + <_> + + <_> + 6 6 14 12 -1. + <_> + 6 6 7 6 2. + <_> + 13 12 7 6 2. + <_> + + <_> + 31 14 3 4 -1. + <_> + 31 16 3 2 2. + <_> + + <_> + 1 12 2 4 -1. + <_> + 1 14 2 2 2. + <_> + + <_> + 15 0 12 5 -1. + <_> + 19 0 4 5 3. + <_> + + <_> + 10 0 8 14 -1. + <_> + 12 0 4 14 2. + <_> + + <_> + 28 1 8 7 -1. + <_> + 30 3 4 7 2. + 1 + <_> + + <_> + 8 14 20 4 -1. + <_> + 8 14 10 2 2. + <_> + 18 16 10 2 2. + <_> + + <_> + 6 11 24 3 -1. + <_> + 14 12 8 1 9. + <_> + + <_> + 4 5 27 6 -1. + <_> + 13 7 9 2 9. + <_> + + <_> + 7 0 22 18 -1. + <_> + 18 0 11 9 2. + <_> + 7 9 11 9 2. + <_> + + <_> + 16 0 3 2 -1. + <_> + 16 1 3 1 2. + <_> + + <_> + 0 17 36 1 -1. + <_> + 9 17 18 1 2. + <_> + + <_> + 5 5 12 1 -1. + <_> + 5 5 6 1 2. + 1 + <_> + + <_> + 34 15 2 1 -1. + <_> + 34 15 1 1 2. + 1 + <_> + + <_> + 7 8 16 4 -1. + <_> + 7 9 16 2 2. + <_> + + <_> + 35 10 1 6 -1. + <_> + 35 12 1 2 3. + <_> + + <_> + 13 8 3 4 -1. + <_> + 13 9 3 2 2. + <_> + + <_> + 35 10 1 6 -1. + <_> + 35 12 1 2 3. + <_> + + <_> + 12 0 1 4 -1. + <_> + 11 1 1 2 2. + 1 + <_> + + <_> + 35 10 1 6 -1. + <_> + 35 12 1 2 3. + <_> + + <_> + 18 0 1 14 -1. + <_> + 18 0 1 7 2. + 1 + <_> + + <_> + 5 6 16 12 -1. + <_> + 5 6 8 6 2. + <_> + 13 12 8 6 2. + <_> + + <_> + 18 1 7 8 -1. + <_> + 16 3 7 4 2. + 1 + <_> + + <_> + 14 4 8 10 -1. + <_> + 14 4 4 5 2. + <_> + 18 9 4 5 2. + <_> + + <_> + 22 0 9 3 -1. + <_> + 25 0 3 3 3. + <_> + + <_> + 0 10 26 8 -1. + <_> + 0 10 13 4 2. + <_> + 13 14 13 4 2. + <_> + + <_> + 15 10 16 8 -1. + <_> + 23 10 8 4 2. + <_> + 15 14 8 4 2. + <_> + + <_> + 6 0 24 18 -1. + <_> + 6 0 12 9 2. + <_> + 18 9 12 9 2. + <_> + + <_> + 18 0 9 6 -1. + <_> + 21 0 3 6 3. + <_> + + <_> + 9 0 9 6 -1. + <_> + 12 0 3 6 3. + <_> + + <_> + 30 1 5 14 -1. + <_> + 30 8 5 7 2. + <_> + + <_> + 1 1 5 14 -1. + <_> + 1 8 5 7 2. + <_> + + <_> + 10 8 26 6 -1. + <_> + 23 8 13 3 2. + <_> + 10 11 13 3 2. + <_> + + <_> + 0 8 28 6 -1. + <_> + 0 8 14 3 2. + <_> + 14 11 14 3 2. + <_> + + <_> + 12 0 24 12 -1. + <_> + 24 0 12 6 2. + <_> + 12 6 12 6 2. + <_> + + <_> + 3 1 14 2 -1. + <_> + 3 1 14 1 2. + 1 + <_> + + <_> + 33 16 3 2 -1. + <_> + 33 17 3 1 2. + <_> + + <_> + 12 0 9 14 -1. + <_> + 15 0 3 14 3. + <_> + + <_> + 28 16 8 2 -1. + <_> + 32 16 4 1 2. + <_> + 28 17 4 1 2. + <_> + + <_> + 15 8 6 6 -1. + <_> + 15 10 6 2 3. + <_> + + <_> + 13 6 22 6 -1. + <_> + 24 6 11 3 2. + <_> + 13 9 11 3 2. + <_> + + <_> + 0 10 26 4 -1. + <_> + 0 10 13 2 2. + <_> + 13 12 13 2 2. + <_> + + <_> + 24 16 4 2 -1. + <_> + 24 17 4 1 2. + <_> + + <_> + 9 16 3 2 -1. + <_> + 9 17 3 1 2. + <_> + + <_> + 3 7 18 8 -1. + <_> + 3 7 9 4 2. + <_> + 12 11 9 4 2. + <_> + + <_> + 23 0 8 4 -1. + <_> + 23 0 4 4 2. + <_> + + <_> + 5 0 8 4 -1. + <_> + 9 0 4 4 2. + <_> + + <_> + 6 10 24 3 -1. + <_> + 14 11 8 1 9. + <_> + + <_> + 7 5 5 6 -1. + <_> + 5 7 5 2 3. + 1 + <_> + + <_> + 5 16 26 2 -1. + <_> + 18 16 13 1 2. + <_> + 5 17 13 1 2. + <_> + + <_> + 0 7 24 4 -1. + <_> + 0 7 12 2 2. + <_> + 12 9 12 2 2. + <_> + + <_> + 23 14 13 4 -1. + <_> + 23 15 13 2 2. + <_> + + <_> + 2 10 18 8 -1. + <_> + 2 10 9 4 2. + <_> + 11 14 9 4 2. + <_> + + <_> + 15 10 6 4 -1. + <_> + 15 11 6 2 2. + <_> + + <_> + 0 6 24 2 -1. + <_> + 0 6 12 1 2. + <_> + 12 7 12 1 2. + <_> + + <_> + 17 0 18 18 -1. + <_> + 17 9 18 9 2. + <_> + + <_> + 1 0 11 2 -1. + <_> + 1 1 11 1 2. + <_> + + <_> + 15 6 8 12 -1. + <_> + 19 6 4 6 2. + <_> + 15 12 4 6 2. + <_> + + <_> + 2 1 32 12 -1. + <_> + 2 1 16 6 2. + <_> + 18 7 16 6 2. + <_> + + <_> + 29 10 7 8 -1. + <_> + 29 12 7 4 2. + <_> + + <_> + 12 2 8 10 -1. + <_> + 12 2 4 5 2. + <_> + 16 7 4 5 2. + <_> + + <_> + 15 12 6 4 -1. + <_> + 15 13 6 2 2. + <_> + + <_> + 0 12 8 6 -1. + <_> + 0 14 8 2 3. + <_> + + <_> + 10 9 26 8 -1. + <_> + 23 9 13 4 2. + <_> + 10 13 13 4 2. + <_> + + <_> + 7 8 22 10 -1. + <_> + 7 8 11 5 2. + <_> + 18 13 11 5 2. + <_> + + <_> + 14 9 8 3 -1. + <_> + 14 10 8 1 3. + <_> + + <_> + 11 3 4 9 -1. + <_> + 11 6 4 3 3. + <_> + + <_> + 29 14 2 2 -1. + <_> + 29 14 2 1 2. + 1 + <_> + + <_> + 14 13 8 3 -1. + <_> + 14 14 8 1 3. + <_> + + <_> + 11 3 7 8 -1. + <_> + 9 5 7 4 2. + 1 + <_> + + <_> + 28 13 1 4 -1. + <_> + 28 13 1 2 2. + 1 + <_> + + <_> + 8 13 4 1 -1. + <_> + 8 13 2 1 2. + 1 + <_> + + <_> + 16 9 4 3 -1. + <_> + 16 10 4 1 3. + <_> + + <_> + 13 8 10 4 -1. + <_> + 13 9 10 2 2. + <_> + + <_> + 14 8 8 3 -1. + <_> + 14 9 8 1 3. + <_> + + <_> + 2 10 6 2 -1. + <_> + 4 12 2 2 3. + 1 + <_> + + <_> + 16 10 6 3 -1. + <_> + 16 11 6 1 3. + <_> + + <_> + 8 5 8 13 -1. + <_> + 12 5 4 13 2. + <_> + + <_> + 0 0 36 8 -1. + <_> + 18 0 18 4 2. + <_> + 0 4 18 4 2. + <_> + + <_> + 1 5 8 12 -1. + <_> + 1 5 4 6 2. + <_> + 5 11 4 6 2. + <_> + + <_> + 18 8 18 10 -1. + <_> + 27 8 9 5 2. + <_> + 18 13 9 5 2. + <_> + + <_> + 0 8 18 10 -1. + <_> + 0 8 9 5 2. + <_> + 9 13 9 5 2. + <_> + + <_> + 11 5 14 3 -1. + <_> + 11 6 14 1 3. + <_> + + <_> + 10 6 16 6 -1. + <_> + 10 8 16 2 3. + <_> + + <_> + 7 2 24 16 -1. + <_> + 19 2 12 8 2. + <_> + 7 10 12 8 2. + <_> + + <_> + 0 1 18 15 -1. + <_> + 6 6 6 5 9. + <_> + + <_> + 4 5 16 6 -1. + <_> + 12 5 8 6 2. + <_> + + <_> + 29 0 6 11 -1. + <_> + 31 2 2 11 3. + 1 + <_> + + <_> + 2 8 9 1 -1. + <_> + 5 11 3 1 3. + 1 + <_> + + <_> + 10 6 17 3 -1. + <_> + 10 7 17 1 3. + <_> + + <_> + 18 6 6 2 -1. + <_> + 20 8 2 2 3. + 1 + <_> + + <_> + 13 11 12 3 -1. + <_> + 13 12 12 1 3. + <_> + + <_> + 2 3 8 8 -1. + <_> + 2 3 4 4 2. + <_> + 6 7 4 4 2. + <_> + + <_> + 18 12 18 4 -1. + <_> + 27 12 9 2 2. + <_> + 18 14 9 2 2. + <_> + + <_> + 11 5 11 3 -1. + <_> + 11 6 11 1 3. + <_> + + <_> + 14 7 14 4 -1. + <_> + 14 8 14 2 2. + <_> + + <_> + 9 8 16 10 -1. + <_> + 9 8 8 5 2. + <_> + 17 13 8 5 2. + <_> + + <_> + 18 17 2 1 -1. + <_> + 18 17 1 1 2. + <_> + + <_> + 13 10 5 3 -1. + <_> + 13 11 5 1 3. + <_> + + <_> + 18 17 2 1 -1. + <_> + 18 17 1 1 2. + <_> + + <_> + 7 5 8 3 -1. + <_> + 6 6 8 1 3. + 1 + <_> + + <_> + 18 17 2 1 -1. + <_> + 18 17 1 1 2. + <_> + + <_> + 10 5 5 3 -1. + <_> + 10 6 5 1 3. + <_> + + <_> + 2 5 34 10 -1. + <_> + 19 5 17 5 2. + <_> + 2 10 17 5 2. + <_> + + <_> + 3 2 12 3 -1. + <_> + 6 5 6 3 2. + 1 + <_> + + <_> + 35 6 1 6 -1. + <_> + 35 8 1 2 3. + <_> + + <_> + 10 6 13 6 -1. + <_> + 10 8 13 2 3. + <_> + + <_> + 15 5 6 4 -1. + <_> + 15 6 6 2 2. + <_> + + <_> + 5 2 11 4 -1. + <_> + 4 3 11 2 2. + 1 + <_> + + <_> + 26 6 10 6 -1. + <_> + 31 6 5 3 2. + <_> + 26 9 5 3 2. + <_> + + <_> + 10 7 11 8 -1. + <_> + 10 9 11 4 2. + <_> + + <_> + 28 2 4 9 -1. + <_> + 29 3 2 9 2. + 1 + <_> + + <_> + 8 2 10 4 -1. + <_> + 7 3 10 2 2. + 1 + <_> + + <_> + 31 0 5 2 -1. + <_> + 31 1 5 1 2. + <_> + + <_> + 10 6 16 12 -1. + <_> + 10 10 16 4 3. + <_> + + <_> + 18 4 4 3 -1. + <_> + 18 5 4 1 3. + <_> + + <_> + 11 10 6 6 -1. + <_> + 11 12 6 2 3. + <_> + + <_> + 35 8 1 10 -1. + <_> + 35 13 1 5 2. + <_> + + <_> + 0 10 36 8 -1. + <_> + 18 10 18 8 2. + <_> + + <_> + 16 7 6 8 -1. + <_> + 19 7 3 4 2. + <_> + 16 11 3 4 2. + <_> + + <_> + 7 6 8 4 -1. + <_> + 7 6 4 4 2. + 1 + <_> + + <_> + 21 11 4 3 -1. + <_> + 21 12 4 1 3. + <_> + + <_> + 0 9 1 8 -1. + <_> + 0 13 1 4 2. + <_> + + <_> + 27 7 6 4 -1. + <_> + 29 9 2 4 3. + 1 + <_> + + <_> + 10 14 8 4 -1. + <_> + 12 14 4 4 2. + <_> + + <_> + 18 17 2 1 -1. + <_> + 18 17 1 1 2. + <_> + + <_> + 10 4 11 4 -1. + <_> + 10 5 11 2 2. + <_> + + <_> + 17 12 2 4 -1. + <_> + 17 13 2 2 2. + <_> + + <_> + 13 4 5 3 -1. + <_> + 13 5 5 1 3. + <_> + + <_> + 13 12 11 2 -1. + <_> + 13 13 11 1 2. + <_> + + <_> + 1 16 2 2 -1. + <_> + 1 16 1 1 2. + <_> + 2 17 1 1 2. + <_> + + <_> + 27 7 6 4 -1. + <_> + 29 9 2 4 3. + 1 + <_> + + <_> + 4 7 6 6 -1. + <_> + 4 9 6 2 3. + <_> + + <_> + 30 6 4 5 -1. + <_> + 31 7 2 5 2. + 1 + <_> + + <_> + 8 5 20 7 -1. + <_> + 13 5 10 7 2. + <_> + + <_> + 30 2 3 12 -1. + <_> + 30 8 3 6 2. + <_> + + <_> + 4 2 12 4 -1. + <_> + 4 2 12 2 2. + 1 + <_> + + <_> + 0 8 36 6 -1. + <_> + 12 10 12 2 9. + <_> + + <_> + 3 5 30 6 -1. + <_> + 13 7 10 2 9. + <_> + + <_> + 14 4 12 9 -1. + <_> + 18 4 4 9 3. + <_> + + <_> + 0 17 6 1 -1. + <_> + 3 17 3 1 2. + <_> + + <_> + 34 0 1 2 -1. + <_> + 34 0 1 1 2. + 1 + <_> + + <_> + 2 0 2 1 -1. + <_> + 2 0 1 1 2. + 1 + <_> + + <_> + 31 3 3 8 -1. + <_> + 32 4 1 8 3. + 1 + <_> + + <_> + 5 6 26 12 -1. + <_> + 5 6 13 6 2. + <_> + 18 12 13 6 2. + <_> + + <_> + 14 4 12 9 -1. + <_> + 18 4 4 9 3. + <_> + + <_> + 13 7 10 10 -1. + <_> + 13 7 5 5 2. + <_> + 18 12 5 5 2. + <_> + + <_> + 30 5 4 6 -1. + <_> + 31 6 2 6 2. + 1 + <_> + + <_> + 6 5 6 4 -1. + <_> + 5 6 6 2 2. + 1 + <_> + + <_> + 29 5 4 5 -1. + <_> + 30 6 2 5 2. + 1 + <_> + + <_> + 7 5 5 4 -1. + <_> + 6 6 5 2 2. + 1 + <_> + + <_> + 0 0 36 1 -1. + <_> + 12 0 12 1 3. + <_> + + <_> + 6 3 24 6 -1. + <_> + 14 5 8 2 9. + <_> + + <_> + 15 12 6 3 -1. + <_> + 15 13 6 1 3. + <_> + + <_> + 11 1 9 17 -1. + <_> + 14 1 3 17 3. + <_> + + <_> + 18 1 18 10 -1. + <_> + 18 1 9 10 2. + <_> + + <_> + 0 1 18 10 -1. + <_> + 9 1 9 10 2. + <_> + + <_> + 30 7 4 5 -1. + <_> + 31 8 2 5 2. + 1 + <_> + + <_> + 0 10 1 3 -1. + <_> + 0 11 1 1 3. + <_> + + <_> + 33 16 2 2 -1. + <_> + 34 16 1 1 2. + <_> + 33 17 1 1 2. + <_> + + <_> + 1 16 2 2 -1. + <_> + 1 16 1 1 2. + <_> + 2 17 1 1 2. + <_> + + <_> + 0 8 36 3 -1. + <_> + 12 9 12 1 9. + <_> + + <_> + 14 7 8 4 -1. + <_> + 14 8 8 2 2. + <_> + + <_> + 17 9 5 3 -1. + <_> + 17 10 5 1 3. + <_> + + <_> + 4 0 1 2 -1. + <_> + 4 0 1 1 2. + 1 + <_> + + <_> + 31 0 3 2 -1. + <_> + 31 0 3 1 2. + 1 + <_> + + <_> + 5 0 2 3 -1. + <_> + 5 0 1 3 2. + 1 + <_> + + <_> + 0 13 36 5 -1. + <_> + 0 13 18 5 2. + <_> + + <_> + 6 3 4 3 -1. + <_> + 5 4 4 1 3. + 1 + <_> + + <_> + 28 7 6 3 -1. + <_> + 30 9 2 3 3. + 1 + <_> + + <_> + 8 7 3 6 -1. + <_> + 6 9 3 2 3. + 1 + <_> + + <_> + 14 5 18 10 -1. + <_> + 23 5 9 5 2. + <_> + 14 10 9 5 2. + <_> + + <_> + 4 5 18 10 -1. + <_> + 4 5 9 5 2. + <_> + 13 10 9 5 2. + <_> + + <_> + 32 17 3 1 -1. + <_> + 33 17 1 1 3. + <_> + + <_> + 1 17 3 1 -1. + <_> + 2 17 1 1 3. + <_> + + <_> + 5 0 26 2 -1. + <_> + 18 0 13 1 2. + <_> + 5 1 13 1 2. + <_> + + <_> + 0 3 27 9 -1. + <_> + 9 6 9 3 9. + <_> + + <_> + 13 0 18 12 -1. + <_> + 13 6 18 6 2. + <_> + + <_> + 0 17 4 1 -1. + <_> + 1 17 2 1 2. + <_> + + <_> + 29 13 1 3 -1. + <_> + 28 14 1 1 3. + 1 + <_> + + <_> + 0 12 8 6 -1. + <_> + 0 14 8 2 3. + <_> + + <_> + 23 7 3 3 -1. + <_> + 24 7 1 3 3. + <_> + + <_> + 11 1 12 6 -1. + <_> + 11 3 12 2 3. + <_> + + <_> + 5 10 26 8 -1. + <_> + 18 10 13 4 2. + <_> + 5 14 13 4 2. + <_> + + <_> + 11 12 9 6 -1. + <_> + 14 12 3 6 3. + <_> + + <_> + 14 12 12 3 -1. + <_> + 18 13 4 1 9. + <_> + + <_> + 10 12 12 3 -1. + <_> + 14 13 4 1 9. + <_> + + <_> + 4 6 27 6 -1. + <_> + 13 8 9 2 9. + <_> + + <_> + 17 9 5 4 -1. + <_> + 17 10 5 2 2. + <_> + + <_> + 0 0 16 2 -1. + <_> + 0 0 8 1 2. + <_> + 8 1 8 1 2. + <_> + + <_> + 22 0 8 8 -1. + <_> + 26 0 4 4 2. + <_> + 22 4 4 4 2. + <_> + + <_> + 1 0 32 12 -1. + <_> + 1 0 16 6 2. + <_> + 17 6 16 6 2. + <_> + + <_> + 28 7 6 10 -1. + <_> + 31 7 3 5 2. + <_> + 28 12 3 5 2. + <_> + + <_> + 2 7 6 10 -1. + <_> + 2 7 3 5 2. + <_> + 5 12 3 5 2. + <_> + + <_> + 20 10 3 3 -1. + <_> + 20 11 3 1 3. + <_> + + <_> + 13 10 3 3 -1. + <_> + 13 11 3 1 3. + <_> + + <_> + 17 16 6 2 -1. + <_> + 19 16 2 2 3. + <_> + + <_> + 13 11 7 3 -1. + <_> + 13 12 7 1 3. + <_> + + <_> + 25 13 3 2 -1. + <_> + 25 13 3 1 2. + 1 + <_> + + <_> + 13 10 4 4 -1. + <_> + 13 11 4 2 2. + <_> + + <_> + 17 16 18 2 -1. + <_> + 26 16 9 1 2. + <_> + 17 17 9 1 2. + <_> + + <_> + 9 13 4 1 -1. + <_> + 9 13 2 1 2. + 1 + <_> + + <_> + 34 1 2 1 -1. + <_> + 34 1 1 1 2. + 1 + <_> + + <_> + 5 4 24 6 -1. + <_> + 13 6 8 2 9. + <_> + + <_> + 33 16 3 2 -1. + <_> + 33 17 3 1 2. + <_> + + <_> + 0 17 36 1 -1. + <_> + 18 17 18 1 2. + <_> + + <_> + 34 1 2 1 -1. + <_> + 34 1 1 1 2. + 1 + <_> + + <_> + 2 1 1 2 -1. + <_> + 2 1 1 1 2. + 1 + <_> + + <_> + 22 0 8 10 -1. + <_> + 24 2 4 10 2. + 1 + <_> + + <_> + 12 4 8 12 -1. + <_> + 12 4 4 6 2. + <_> + 16 10 4 6 2. + <_> + + <_> + 26 6 6 6 -1. + <_> + 29 6 3 3 2. + <_> + 26 9 3 3 2. + <_> + + <_> + 5 6 4 6 -1. + <_> + 5 6 2 3 2. + <_> + 7 9 2 3 2. + <_> + + <_> + 29 5 2 4 -1. + <_> + 29 5 1 4 2. + 1 + <_> + + <_> + 7 4 18 3 -1. + <_> + 7 5 18 1 3. + <_> + + <_> + 29 13 2 3 -1. + <_> + 28 14 2 1 3. + 1 + <_> + + <_> + 9 5 3 3 -1. + <_> + 8 6 3 1 3. + 1 + <_> + + <_> + 7 16 22 2 -1. + <_> + 18 16 11 1 2. + <_> + 7 17 11 1 2. + <_> + + <_> + 0 2 1 3 -1. + <_> + 0 3 1 1 3. + <_> + + <_> + 16 3 20 6 -1. + <_> + 26 3 10 3 2. + <_> + 16 6 10 3 2. + <_> + + <_> + 10 5 8 6 -1. + <_> + 12 5 4 6 2. + <_> + + <_> + 1 8 34 8 -1. + <_> + 18 8 17 4 2. + <_> + 1 12 17 4 2. + <_> + + <_> + 14 9 8 8 -1. + <_> + 14 9 4 4 2. + <_> + 18 13 4 4 2. + <_> + + <_> + 35 0 1 3 -1. + <_> + 35 1 1 1 3. + <_> + + <_> + 15 8 3 5 -1. + <_> + 16 8 1 5 3. + <_> + + <_> + 19 0 10 1 -1. + <_> + 19 0 5 1 2. + 1 + <_> + + <_> + 9 3 9 6 -1. + <_> + 7 5 9 2 3. + 1 + <_> + + <_> + 6 6 24 6 -1. + <_> + 14 8 8 2 9. + <_> + + <_> + 4 8 27 6 -1. + <_> + 13 10 9 2 9. + <_> + + <_> + 5 4 27 6 -1. + <_> + 14 6 9 2 9. + <_> + + <_> + 5 6 5 6 -1. + <_> + 5 8 5 2 3. + <_> + + <_> + 35 0 1 2 -1. + <_> + 35 1 1 1 2. + <_> + + <_> + 4 3 10 3 -1. + <_> + 3 4 10 1 3. + 1 + <_> + + <_> + 29 5 2 4 -1. + <_> + 29 5 1 4 2. + 1 + <_> + + <_> + 3 0 28 16 -1. + <_> + 3 0 14 8 2. + <_> + 17 8 14 8 2. + <_> + + <_> + 31 0 4 2 -1. + <_> + 31 0 2 2 2. + 1 + <_> + + <_> + 4 9 3 9 -1. + <_> + 4 12 3 3 3. + <_> + + <_> + 32 16 4 2 -1. + <_> + 32 17 4 1 2. + <_> + + <_> + 17 0 1 10 -1. + <_> + 17 0 1 5 2. + 1 + <_> + + <_> + 17 4 14 8 -1. + <_> + 17 4 7 8 2. + <_> + + <_> + 6 0 11 4 -1. + <_> + 6 2 11 2 2. + <_> + + <_> + 35 0 1 2 -1. + <_> + 35 1 1 1 2. + <_> + + <_> + 0 0 1 2 -1. + <_> + 0 1 1 1 2. + <_> + + <_> + 33 0 2 1 -1. + <_> + 33 0 1 1 2. + 1 + <_> + + <_> + 3 0 1 2 -1. + <_> + 3 0 1 1 2. + 1 + <_> + + <_> + 0 17 36 1 -1. + <_> + 9 17 18 1 2. + <_> + + <_> + 7 13 3 1 -1. + <_> + 8 14 1 1 3. + 1 + <_> + + <_> + 17 4 14 8 -1. + <_> + 17 4 7 8 2. + <_> + + <_> + 0 16 4 2 -1. + <_> + 0 17 4 1 2. + <_> + + <_> + 13 12 10 3 -1. + <_> + 13 13 10 1 3. + <_> + + <_> + 0 12 36 6 -1. + <_> + 18 12 18 6 2. + <_> + + <_> + 5 3 27 6 -1. + <_> + 14 5 9 2 9. + <_> + + <_> + 9 5 5 3 -1. + <_> + 8 6 5 1 3. + 1 + <_> + + <_> + 12 7 12 4 -1. + <_> + 15 7 6 4 2. + <_> + + <_> + 13 5 8 4 -1. + <_> + 15 5 4 4 2. + <_> + + <_> + 16 14 6 4 -1. + <_> + 16 14 3 4 2. + <_> + + <_> + 14 10 5 3 -1. + <_> + 14 11 5 1 3. + <_> + + <_> + 25 3 6 4 -1. + <_> + 25 4 6 2 2. + <_> + + <_> + 3 6 6 8 -1. + <_> + 3 8 6 4 2. + <_> + + <_> + 27 4 5 6 -1. + <_> + 27 6 5 2 3. + <_> + + <_> + 4 1 6 9 -1. + <_> + 4 4 6 3 3. + <_> + + <_> + 21 9 2 4 -1. + <_> + 21 10 2 2 2. + <_> + + <_> + 1 10 34 4 -1. + <_> + 1 10 17 2 2. + <_> + 18 12 17 2 2. + <_> + + <_> + 34 15 2 3 -1. + <_> + 34 16 2 1 3. + <_> + + <_> + 3 0 2 2 -1. + <_> + 3 0 2 1 2. + 1 + <_> + + <_> + 33 0 1 2 -1. + <_> + 33 0 1 1 2. + 1 + <_> + + <_> + 8 0 10 8 -1. + <_> + 6 2 10 4 2. + 1 + <_> + + <_> + 3 6 30 6 -1. + <_> + 13 8 10 2 9. + <_> + + <_> + 13 7 10 4 -1. + <_> + 13 8 10 2 2. + <_> + + <_> + 16 5 6 12 -1. + <_> + 19 5 3 6 2. + <_> + 16 11 3 6 2. + <_> + + <_> + 10 1 4 6 -1. + <_> + 8 3 4 2 3. + 1 + <_> + + <_> + 2 7 33 6 -1. + <_> + 13 9 11 2 9. + <_> + + <_> + 3 6 30 3 -1. + <_> + 13 7 10 1 9. + <_> + + <_> + 15 11 6 3 -1. + <_> + 15 12 6 1 3. + <_> + + <_> + 14 5 6 12 -1. + <_> + 14 5 3 6 2. + <_> + 17 11 3 6 2. + <_> + + <_> + 5 12 26 6 -1. + <_> + 18 12 13 3 2. + <_> + 5 15 13 3 2. + <_> + + <_> + 4 12 27 3 -1. + <_> + 13 13 9 1 9. + <_> + + <_> + 16 11 4 3 -1. + <_> + 16 12 4 1 3. + <_> + + <_> + 5 12 4 2 -1. + <_> + 6 13 2 2 2. + 1 + <_> + + <_> + 34 17 2 1 -1. + <_> + 34 17 1 1 2. + <_> + + <_> + 16 0 1 12 -1. + <_> + 16 0 1 6 2. + 1 + <_> + + <_> + 2 17 34 1 -1. + <_> + 2 17 17 1 2. + <_> + + <_> + 5 3 18 4 -1. + <_> + 5 4 18 2 2. + <_> + + <_> + 34 17 2 1 -1. + <_> + 34 17 1 1 2. + <_> + + <_> + 0 0 2 2 -1. + <_> + 0 1 2 1 2. + <_> + + <_> + 15 5 16 3 -1. + <_> + 15 6 16 1 3. + <_> + + <_> + 13 9 3 3 -1. + <_> + 13 10 3 1 3. + <_> + + <_> + 20 4 8 14 -1. + <_> + 22 4 4 14 2. + <_> + + <_> + 7 5 20 6 -1. + <_> + 12 5 10 6 2. + <_> + + <_> + 26 3 6 6 -1. + <_> + 28 5 2 6 3. + 1 + <_> + + <_> + 10 3 6 6 -1. + <_> + 8 5 6 2 3. + 1 + <_> + + <_> + 34 0 2 3 -1. + <_> + 34 0 1 3 2. + 1 + <_> + + <_> + 0 16 2 2 -1. + <_> + 0 17 2 1 2. + <_> + + <_> + 30 6 4 8 -1. + <_> + 31 7 2 8 2. + 1 + <_> + + <_> + 6 6 7 4 -1. + <_> + 5 7 7 2 2. + 1 + <_> + + <_> + 20 4 8 14 -1. + <_> + 22 4 4 14 2. + <_> + + <_> + 8 4 8 14 -1. + <_> + 10 4 4 14 2. + <_> + + <_> + 17 17 6 1 -1. + <_> + 19 17 2 1 3. + <_> + + <_> + 0 0 20 6 -1. + <_> + 10 0 10 6 2. + <_> + + <_> + 8 0 22 18 -1. + <_> + 8 0 11 18 2. + <_> + + <_> + 13 2 8 12 -1. + <_> + 13 2 4 6 2. + <_> + 17 8 4 6 2. + <_> + + <_> + 11 10 14 8 -1. + <_> + 18 10 7 4 2. + <_> + 11 14 7 4 2. + <_> + + <_> + 1 16 2 2 -1. + <_> + 1 16 1 1 2. + <_> + 2 17 1 1 2. + <_> + + <_> + 34 0 2 1 -1. + <_> + 34 0 1 1 2. + 1 + <_> + + <_> + 6 3 24 4 -1. + <_> + 12 3 12 4 2. + <_> + + <_> + 19 1 2 3 -1. + <_> + 19 2 2 1 3. + <_> + + <_> + 2 0 1 2 -1. + <_> + 2 0 1 1 2. + 1 + <_> + + <_> + 15 3 6 8 -1. + <_> + 18 3 3 4 2. + <_> + 15 7 3 4 2. + <_> + + <_> + 14 5 4 2 -1. + <_> + 14 6 4 1 2. + <_> + + <_> + 3 7 30 9 -1. + <_> + 13 10 10 3 9. + <_> + + <_> + 9 8 12 9 -1. + <_> + 12 8 6 9 2. + <_> + + <_> + 10 8 16 5 -1. + <_> + 14 8 8 5 2. + <_> + + <_> + 30 1 4 10 -1. + <_> + 31 2 2 10 2. + 1 + <_> + + <_> + 13 0 10 8 -1. + <_> + 11 2 10 4 2. + 1 + <_> + + <_> + 32 2 2 14 -1. + <_> + 32 2 1 14 2. + 1 + <_> + + <_> + 4 2 14 2 -1. + <_> + 4 2 14 1 2. + 1 + <_> + + <_> + 30 14 6 4 -1. + <_> + 30 14 3 4 2. + <_> + + <_> + 11 13 1 4 -1. + <_> + 11 15 1 2 2. + <_> + + <_> + 11 0 14 18 -1. + <_> + 18 0 7 9 2. + <_> + 11 9 7 9 2. + <_> + + <_> + 0 1 20 9 -1. + <_> + 10 1 10 9 2. + <_> + + <_> + 21 3 8 3 -1. + <_> + 23 3 4 3 2. + <_> + + <_> + 13 9 2 4 -1. + <_> + 13 10 2 2 2. + <_> + + <_> + 14 9 11 2 -1. + <_> + 14 10 11 1 2. + <_> + + <_> + 0 2 36 9 -1. + <_> + 12 5 12 3 9. + <_> + + <_> + 34 12 2 6 -1. + <_> + 34 15 2 3 2. + <_> + + <_> + 11 4 14 6 -1. + <_> + 11 6 14 2 3. + <_> + + <_> + 31 0 4 1 -1. + <_> + 31 0 2 1 2. + <_> + + <_> + 1 0 4 1 -1. + <_> + 3 0 2 1 2. + <_> + + <_> + 19 14 6 4 -1. + <_> + 21 14 2 4 3. + <_> + + <_> + 11 14 6 4 -1. + <_> + 13 14 2 4 3. + <_> + + <_> + 0 14 36 1 -1. + <_> + 9 14 18 1 2. + <_> + + <_> + 5 0 2 2 -1. + <_> + 5 0 2 1 2. + 1 + <_> + + <_> + 26 3 5 3 -1. + <_> + 26 4 5 1 3. + <_> + + <_> + 16 8 1 3 -1. + <_> + 15 9 1 1 3. + 1 + <_> + + <_> + 21 11 2 3 -1. + <_> + 21 12 2 1 3. + <_> + + <_> + 9 5 6 4 -1. + <_> + 8 6 6 2 2. + 1 + <_> + + <_> + 31 0 2 2 -1. + <_> + 31 0 1 2 2. + 1 + <_> + + <_> + 6 4 3 9 -1. + <_> + 6 7 3 3 3. + <_> + + <_> + 19 0 11 2 -1. + <_> + 19 0 11 1 2. + 1 + <_> + + <_> + 5 0 2 2 -1. + <_> + 5 0 2 1 2. + 1 + <_> + + <_> + 22 0 14 4 -1. + <_> + 29 0 7 2 2. + <_> + 22 2 7 2 2. + <_> + + <_> + 15 1 4 13 -1. + <_> + 15 1 2 13 2. + 1 + <_> + + <_> + 21 3 8 4 -1. + <_> + 23 3 4 4 2. + <_> + + <_> + 7 3 8 4 -1. + <_> + 9 3 4 4 2. + <_> + + <_> + 32 14 2 2 -1. + <_> + 33 14 1 1 2. + <_> + 32 15 1 1 2. + <_> + + <_> + 2 14 2 2 -1. + <_> + 2 14 1 1 2. + <_> + 3 15 1 1 2. + <_> + + <_> + 35 5 1 12 -1. + <_> + 35 9 1 4 3. + <_> + + <_> + 0 7 1 9 -1. + <_> + 0 10 1 3 3. + <_> + + <_> + 12 2 15 6 -1. + <_> + 12 4 15 2 3. + <_> + + <_> + 0 17 2 1 -1. + <_> + 1 17 1 1 2. + <_> + + <_> + 34 17 2 1 -1. + <_> + 34 17 1 1 2. + <_> + + <_> + 0 17 2 1 -1. + <_> + 1 17 1 1 2. + <_> + + <_> + 11 0 16 10 -1. + <_> + 15 0 8 10 2. + <_> + + <_> + 5 10 24 8 -1. + <_> + 5 10 12 4 2. + <_> + 17 14 12 4 2. + <_> + + <_> + 27 4 3 3 -1. + <_> + 27 5 3 1 3. + <_> + + <_> + 6 6 14 12 -1. + <_> + 6 6 7 6 2. + <_> + 13 12 7 6 2. + <_> + + <_> + 6 5 24 6 -1. + <_> + 14 7 8 2 9. + <_> + + <_> + 12 6 3 4 -1. + <_> + 12 7 3 2 2. + <_> + + <_> + 30 7 6 10 -1. + <_> + 33 7 3 5 2. + <_> + 30 12 3 5 2. + <_> + + <_> + 3 12 6 6 -1. + <_> + 3 12 3 3 2. + <_> + 6 15 3 3 2. + <_> + + <_> + 20 0 13 2 -1. + <_> + 20 0 13 1 2. + 1 + <_> + + <_> + 6 10 24 6 -1. + <_> + 14 12 8 2 9. + <_> + + <_> + 15 4 8 8 -1. + <_> + 19 4 4 4 2. + <_> + 15 8 4 4 2. + <_> + + <_> + 13 4 8 8 -1. + <_> + 13 4 4 4 2. + <_> + 17 8 4 4 2. + <_> + + <_> + 34 16 2 2 -1. + <_> + 34 16 1 2 2. + <_> + + <_> + 12 6 3 3 -1. + <_> + 12 7 3 1 3. + <_> + + <_> + 21 7 4 4 -1. + <_> + 21 8 4 2 2. + <_> + + <_> + 2 8 30 4 -1. + <_> + 2 8 15 2 2. + <_> + 17 10 15 2 2. + <_> + + <_> + 27 4 3 4 -1. + <_> + 27 5 3 2 2. + <_> + + <_> + 5 4 3 4 -1. + <_> + 5 5 3 2 2. + <_> + + <_> + 34 16 2 2 -1. + <_> + 34 16 1 2 2. + <_> + + <_> + 0 16 34 2 -1. + <_> + 0 16 17 1 2. + <_> + 17 17 17 1 2. + <_> + + <_> + 12 5 15 12 -1. + <_> + 12 9 15 4 3. + <_> + + <_> + 0 8 36 6 -1. + <_> + 12 10 12 2 9. + <_> + + <_> + 25 4 6 2 -1. + <_> + 25 5 6 1 2. + <_> + + <_> + 0 17 2 1 -1. + <_> + 1 17 1 1 2. + <_> + + <_> + 16 0 9 9 -1. + <_> + 19 0 3 9 3. + <_> + + <_> + 11 0 9 9 -1. + <_> + 14 0 3 9 3. + <_> + + <_> + 20 5 16 5 -1. + <_> + 24 5 8 5 2. + <_> + + <_> + 0 3 16 9 -1. + <_> + 4 3 8 9 2. + <_> + + <_> + 7 6 26 12 -1. + <_> + 20 6 13 6 2. + <_> + 7 12 13 6 2. + <_> + + <_> + 5 6 24 12 -1. + <_> + 5 6 12 6 2. + <_> + 17 12 12 6 2. + <_> + + <_> + 17 4 3 12 -1. + <_> + 18 4 1 12 3. + <_> + + <_> + 1 11 6 1 -1. + <_> + 3 13 2 1 3. + 1 + <_> + + <_> + 21 12 14 2 -1. + <_> + 28 12 7 1 2. + <_> + 21 13 7 1 2. + <_> + + <_> + 1 13 2 3 -1. + <_> + 2 13 1 3 2. + <_> + + <_> + 26 8 3 2 -1. + <_> + 27 9 1 2 3. + 1 + <_> + + <_> + 10 8 2 3 -1. + <_> + 9 9 2 1 3. + 1 + <_> + + <_> + 12 0 18 18 -1. + <_> + 12 0 9 18 2. + <_> + + <_> + 8 9 3 3 -1. + <_> + 7 10 3 1 3. + 1 + <_> + + <_> + 28 5 5 6 -1. + <_> + 28 7 5 2 3. + <_> + + <_> + 9 1 9 8 -1. + <_> + 9 1 9 4 2. + 1 + <_> + + <_> + 0 0 36 2 -1. + <_> + 18 0 18 1 2. + <_> + 0 1 18 1 2. + <_> + + <_> + 5 0 26 6 -1. + <_> + 5 0 13 3 2. + <_> + 18 3 13 3 2. + <_> + + <_> + 28 3 3 3 -1. + <_> + 28 4 3 1 3. + <_> + + <_> + 5 3 5 3 -1. + <_> + 5 4 5 1 3. + <_> + + <_> + 14 12 8 2 -1. + <_> + 16 12 4 2 2. + <_> + + <_> + 13 0 9 14 -1. + <_> + 16 0 3 14 3. + <_> + + <_> + 23 0 10 1 -1. + <_> + 23 0 5 1 2. + 1 + <_> + + <_> + 8 14 2 2 -1. + <_> + 8 14 1 2 2. + 1 + <_> + + <_> + 0 12 36 3 -1. + <_> + 12 13 12 1 9. + <_> + + <_> + 0 13 34 4 -1. + <_> + 0 13 17 2 2. + <_> + 17 15 17 2 2. + diff --git a/venv/lib/python3.11/site-packages/cv2/data/haarcascade_upperbody.xml b/venv/lib/python3.11/site-packages/cv2/data/haarcascade_upperbody.xml new file mode 100644 index 0000000000000000000000000000000000000000..3c75aa6927762b1a54a104c9926cd0a8d4891e17 --- /dev/null +++ b/venv/lib/python3.11/site-packages/cv2/data/haarcascade_upperbody.xml @@ -0,0 +1,28134 @@ + + + +BOOST + HAAR + 18 + 22 + + 152 + + 0 + 30 + + <_> + 20 + -1.1264339685440063e+00 + + <_> + + 0 -1 0 -1.3696029782295227e-02 + + 4.5076468586921692e-01 -4.2179030179977417e-01 + <_> + + 0 -1 1 1.2441449798643589e-02 + + 1.6493250429630280e-01 -7.4793487787246704e-01 + <_> + + 0 -1 2 -2.7094660326838493e-03 + + 3.1004700064659119e-01 -3.7617141008377075e-01 + <_> + + 0 -1 3 -1.0008010268211365e-01 + + 7.6182198524475098e-01 -7.4556976556777954e-02 + <_> + + 0 -1 4 -2.5114119052886963e-01 + + -6.4154028892517090e-01 1.5139220654964447e-01 + <_> + + 0 -1 5 -1.0510650277137756e-01 + + 7.1459370851516724e-01 -1.4498579502105713e-01 + <_> + + 0 -1 6 -8.8448017835617065e-02 + + 7.5773179531097412e-01 -6.8586893379688263e-02 + <_> + + 0 -1 7 1.0874910280108452e-02 + + 1.4610609412193298e-01 -5.4263710975646973e-01 + <_> + + 0 -1 8 1.2690570205450058e-02 + + 1.1674589663743973e-01 -4.9649459123611450e-01 + <_> + + 0 -1 9 -3.2198399305343628e-02 + + -3.8529390096664429e-01 9.8437972366809845e-02 + <_> + + 0 -1 10 -3.4077179152518511e-03 + + 2.5200870633125305e-01 -2.2382549941539764e-01 + <_> + + 0 -1 11 3.0324390158057213e-02 + + -1.0534449666738510e-01 6.5735417604446411e-01 + <_> + + 0 -1 12 4.1930507868528366e-03 + + 1.2872399389743805e-01 -5.3160661458969116e-01 + <_> + + 0 -1 13 8.0501407384872437e-02 + + 4.1696660220623016e-02 -7.2123032808303833e-01 + <_> + + 0 -1 14 -3.4822080284357071e-02 + + -4.9751108884811401e-01 1.3959939777851105e-01 + <_> + + 0 -1 15 7.5519368983805180e-03 + + -9.2147678136825562e-02 1.1294340342283249e-01 + <_> + + 0 -1 16 -1.7572140321135521e-02 + + -5.6784427165985107e-01 9.3572810292243958e-02 + <_> + + 0 -1 17 5.2012042142450809e-03 + + -7.9238079488277435e-02 6.1878960579633713e-02 + <_> + + 0 -1 18 -3.0798919498920441e-02 + + -5.6658512353897095e-01 9.5271490514278412e-02 + <_> + + 0 -1 19 -1.3465429656207561e-03 + + 2.4011470377445221e-01 -2.6026639342308044e-01 + <_> + 33 + -1.1226719617843628e+00 + + <_> + + 0 -1 20 1.9108939450234175e-03 + + -4.6240958571434021e-01 3.0612170696258545e-01 + <_> + + 0 -1 21 9.5464065670967102e-03 + + 9.1956138610839844e-02 -5.3501170873641968e-01 + <_> + + 0 -1 22 -4.3402809649705887e-02 + + 5.6817841529846191e-01 -1.1284930258989334e-01 + <_> + + 0 -1 23 5.0386030226945877e-02 + + -8.0316931009292603e-02 7.3521858453750610e-01 + <_> + + 0 -1 24 -6.8480317713692784e-04 + + 2.5798648595809937e-01 -2.8049409389495850e-01 + <_> + + 0 -1 25 1.1548049747943878e-01 + + 9.2065572738647461e-02 -7.5556892156600952e-01 + <_> + + 0 -1 26 -1.9348369678482413e-03 + + 2.9440790414810181e-01 -2.4102710187435150e-01 + <_> + + 0 -1 27 -4.3528810143470764e-02 + + 4.9202969670295715e-01 -3.9650101214647293e-02 + <_> + + 0 -1 28 -3.0218150466680527e-02 + + 7.7227920293807983e-01 -8.6786523461341858e-02 + <_> + + 0 -1 29 2.4536589160561562e-02 + + 9.5944821834564209e-02 -4.8642969131469727e-01 + <_> + + 0 -1 30 2.3958990350365639e-02 + + 1.0437840223312378e-01 -5.1219838857650757e-01 + <_> + + 0 -1 31 -2.5370830669999123e-02 + + -3.1981548666954041e-01 9.1486573219299316e-02 + <_> + + 0 -1 32 -1.8606419907882810e-03 + + 2.2783969342708588e-01 -2.4307970702648163e-01 + <_> + + 0 -1 33 2.2550800815224648e-02 + + 6.9207556545734406e-02 -3.0054280161857605e-01 + <_> + + 0 -1 34 -4.9752090126276016e-02 + + -6.1078047752380371e-01 9.4472773373126984e-02 + <_> + + 0 -1 35 -2.6602389290928841e-02 + + 5.9581768512725830e-01 -9.2046052217483521e-02 + <_> + + 0 -1 36 1.0760000348091125e-01 + + 1.0278519988059998e-01 -5.4303371906280518e-01 + <_> + + 0 -1 37 1.7690699547529221e-02 + + 6.6057138144969940e-02 -6.3213908672332764e-01 + <_> + + 0 -1 38 -6.2409918755292892e-02 + + 6.8724197149276733e-01 -6.7070558667182922e-02 + <_> + + 0 -1 39 -1.9801619928330183e-03 + + 9.4411551952362061e-02 -8.7819486856460571e-02 + <_> + + 0 -1 40 6.3668429851531982e-02 + + 1.1531739681959152e-01 -4.8129761219024658e-01 + <_> + + 0 -1 41 -3.0797829851508141e-02 + + 3.5854768753051758e-01 -1.2593799829483032e-01 + <_> + + 0 -1 42 -1.8353419727645814e-04 + + 1.4788399636745453e-01 -2.8546810150146484e-01 + <_> + + 0 -1 43 1.7074620118364692e-03 + + 7.9929657280445099e-02 -2.5233370065689087e-01 + <_> + + 0 -1 44 -1.5325199812650681e-02 + + -5.7711857557296753e-01 9.8908327519893646e-02 + <_> + + 0 -1 45 4.1389189660549164e-02 + + -6.5550796687602997e-02 5.7363802194595337e-01 + <_> + + 0 -1 46 -4.5577771379612386e-04 + + 2.2593089938163757e-01 -1.9105580449104309e-01 + <_> + + 0 -1 47 -1.3455689884722233e-02 + + -4.0233930945396423e-01 8.6477622389793396e-02 + <_> + + 0 -1 48 -3.7978399544954300e-02 + + 5.5257588624954224e-01 -8.1541016697883606e-02 + <_> + + 0 -1 49 -1.7197500914335251e-02 + + -1.8363009393215179e-01 5.1999870687723160e-02 + <_> + + 0 -1 50 -1.2581580085679889e-03 + + 1.8830040097236633e-01 -2.5726661086082458e-01 + <_> + + 0 -1 51 6.7725107073783875e-02 + + -8.0956451594829559e-02 7.1803241968154907e-01 + <_> + + 0 -1 52 3.5489428788423538e-02 + + 1.0068070143461227e-01 -5.3774142265319824e-01 + <_> + 29 + -1.0127470493316650e+00 + + <_> + + 0 -1 53 -5.3695798851549625e-03 + + 2.7479499578475952e-01 -3.4178960323333740e-01 + <_> + + 0 -1 54 6.2695867381989956e-04 + + -9.8646633327007294e-02 1.0728420317173004e-01 + <_> + + 0 -1 55 -1.6484269872307777e-02 + + -6.4972907304763794e-01 9.6037752926349640e-02 + <_> + + 0 -1 56 -2.2104099392890930e-02 + + -4.5984488725662231e-01 1.6304630041122437e-01 + <_> + + 0 -1 57 1.1904139816761017e-01 + + -9.9600397050380707e-02 7.3729759454727173e-01 + <_> + + 0 -1 58 -2.0222070161253214e-03 + + 2.1029269695281982e-01 -2.4577130377292633e-01 + <_> + + 0 -1 59 6.7500352859497070e-02 + + -1.2467789649963379e-01 5.7654231786727905e-01 + <_> + + 0 -1 60 -1.9655939936637878e-01 + + -6.0891747474670410e-01 9.9672056734561920e-02 + <_> + + 0 -1 61 4.9431171268224716e-02 + + 1.3752749562263489e-01 -4.5580869913101196e-01 + <_> + + 0 -1 62 2.3380089551210403e-02 + + 4.7141890972852707e-02 -3.5027709603309631e-01 + <_> + + 0 -1 63 1.3998650247231126e-03 + + -2.0643049478530884e-01 2.4322299659252167e-01 + <_> + + 0 -1 64 1.1432689614593983e-02 + + 5.5187370628118515e-02 -3.2619899511337280e-01 + <_> + + 0 -1 65 4.8775069415569305e-02 + + -6.8992510437965393e-02 7.1171808242797852e-01 + <_> + + 0 -1 66 6.5284021198749542e-02 + + 3.7155740428715944e-03 5.9318971633911133e-01 + <_> + + 0 -1 67 6.1603228095918894e-04 + + -2.3272520303726196e-01 2.0441530644893646e-01 + <_> + + 0 -1 68 -1.0527499951422215e-02 + + -3.1773790717124939e-01 1.0171309858560562e-01 + <_> + + 0 -1 69 1.6231339424848557e-02 + + 9.1734193265438080e-02 -4.7143009305000305e-01 + <_> + + 0 -1 70 3.8958500954322517e-04 + + -1.2997549772262573e-01 1.3475489616394043e-01 + <_> + + 0 -1 71 -4.4165689498186111e-02 + + -6.0331028699874878e-01 6.4766876399517059e-02 + <_> + + 0 -1 72 -1.3663209974765778e-02 + + -5.2762842178344727e-01 6.3485741615295410e-02 + <_> + + 0 -1 73 -8.8231859263032675e-04 + + 1.4510250091552734e-01 -2.7845200896263123e-01 + <_> + + 0 -1 74 -2.7819190174341202e-02 + + 4.3640869855880737e-01 -8.5191860795021057e-02 + <_> + + 0 -1 75 6.2560990452766418e-02 + + 1.0027889907360077e-01 -4.2235919833183289e-01 + <_> + + 0 -1 76 -4.4808178790844977e-04 + + 1.4851489663124084e-01 -1.7731289565563202e-01 + <_> + + 0 -1 77 -2.1363180130720139e-02 + + -6.1334460973739624e-01 6.0539398342370987e-02 + <_> + + 0 -1 78 -6.9122329354286194e-02 + + -8.6845761537551880e-01 3.9347749203443527e-02 + <_> + + 0 -1 79 -3.0542839318513870e-02 + + -6.4021718502044678e-01 4.9593821167945862e-02 + <_> + + 0 -1 80 -1.0101160034537315e-02 + + -1.6199150681495667e-01 5.7256899774074554e-02 + <_> + + 0 -1 81 -2.2010109387338161e-04 + + 2.1350930631160736e-01 -2.0198999345302582e-01 + <_> + 42 + -1.0684469938278198e+00 + + <_> + + 0 -1 82 5.7967850007116795e-03 + + -3.3844178915023804e-01 2.5066271424293518e-01 + <_> + + 0 -1 83 6.3795179128646851e-02 + + -4.2111620306968689e-02 3.5746571421623230e-01 + <_> + + 0 -1 84 -6.4332038164138794e-02 + + -5.0660789012908936e-01 1.1717739701271057e-01 + <_> + + 0 -1 85 -1.1574289947748184e-01 + + -5.6678497791290283e-01 9.5880903303623199e-02 + <_> + + 0 -1 86 -3.9005130529403687e-03 + + -4.1498228907585144e-01 1.4858320355415344e-01 + <_> + + 0 -1 87 1.2512929737567902e-02 + + 5.3696669638156891e-02 -1.4163960516452789e-01 + <_> + + 0 -1 88 1.5871099894866347e-03 + + -2.5962340831756592e-01 1.9418330490589142e-01 + <_> + + 0 -1 89 1.6291120648384094e-01 + + -6.1243768781423569e-02 7.8567212820053101e-01 + <_> + + 0 -1 90 -3.3258220553398132e-01 + + 7.8020131587982178e-01 -4.4036459177732468e-02 + <_> + + 0 -1 91 -1.0288899764418602e-02 + + -1.5289680659770966e-01 6.2096230685710907e-02 + <_> + + 0 -1 92 2.8956029564142227e-02 + + 8.4707796573638916e-02 -4.7820711135864258e-01 + <_> + + 0 -1 93 -3.2221511355601251e-04 + + 1.3951259851455688e-01 -1.8819390237331390e-01 + <_> + + 0 -1 94 1.5835289657115936e-01 + + 6.6667810082435608e-02 -5.4572361707687378e-01 + <_> + + 0 -1 95 -4.2584311217069626e-02 + + 2.7040338516235352e-01 -5.6654509156942368e-02 + <_> + + 0 -1 96 2.7505140751600266e-02 + + 4.9271158874034882e-02 -7.3157638311386108e-01 + <_> + + 0 -1 97 8.6879700422286987e-02 + + -1.7532400786876678e-02 8.6782652139663696e-01 + <_> + + 0 -1 98 -2.0130439661443233e-03 + + 1.6593940556049347e-01 -2.5266230106353760e-01 + <_> + + 0 -1 99 4.2330170981585979e-04 + + 9.4223551452159882e-02 -2.4629700183868408e-01 + <_> + + 0 -1 100 1.5194499865174294e-02 + + 7.3695637285709381e-02 -5.0068622827529907e-01 + <_> + + 0 -1 101 -6.1203669756650925e-03 + + 2.1381899714469910e-01 -1.6738100349903107e-01 + <_> + + 0 -1 102 2.0660240203142166e-02 + + -8.0636158585548401e-02 5.7828348875045776e-01 + <_> + + 0 -1 103 -6.0398250818252563e-02 + + -6.3411772251129150e-01 5.0899010151624680e-02 + <_> + + 0 -1 104 3.5386480391025543e-02 + + 7.3191151022911072e-02 -5.6426662206649780e-01 + <_> + + 0 -1 105 -6.5997838973999023e-02 + + 3.2833808660507202e-01 -2.6310259476304054e-02 + <_> + + 0 -1 106 1.1004590196534991e-03 + + -2.3114609718322754e-01 2.0206519961357117e-01 + <_> + + 0 -1 107 8.4488153457641602e-02 + + 7.4589841067790985e-02 -4.3710339069366455e-01 + <_> + + 0 -1 108 -2.9235990718007088e-02 + + 6.5064769983291626e-01 -5.4531838744878769e-02 + <_> + + 0 -1 109 -3.3916950225830078e-02 + + -2.8804349899291992e-01 3.2172881066799164e-02 + <_> + + 0 -1 110 -7.9108700156211853e-03 + + -3.3660379052162170e-01 1.0100690275430679e-01 + <_> + + 0 -1 111 5.1930431276559830e-02 + + 3.2920960336923599e-02 -1.3176530599594116e-01 + <_> + + 0 -1 112 -6.8586103618144989e-02 + + 5.2153557538986206e-01 -6.6718578338623047e-02 + <_> + + 0 -1 113 -1.9451669650152326e-03 + + 1.5396790206432343e-01 -1.9895760715007782e-01 + <_> + + 0 -1 114 7.1366228163242340e-02 + + -8.2927159965038300e-02 4.5292338728904724e-01 + <_> + + 0 -1 115 -2.6624239981174469e-02 + + -4.4009739160537720e-01 1.0267119854688644e-01 + <_> + + 0 -1 116 2.5266060605645180e-02 + + 5.5799201130867004e-02 -5.5569338798522949e-01 + <_> + + 0 -1 117 5.5255689658224583e-03 + + -1.3640299439430237e-01 2.8255200386047363e-01 + <_> + + 0 -1 118 -2.9929999727755785e-03 + + -3.2421571016311646e-01 1.2122060358524323e-01 + <_> + + 0 -1 119 2.2192109376192093e-02 + + -6.0741018503904343e-02 4.3473160266876221e-01 + <_> + + 0 -1 120 -9.4268741086125374e-03 + + -3.3458408713340759e-01 1.0029699653387070e-01 + <_> + + 0 -1 121 3.4395330585539341e-03 + + -8.3829909563064575e-02 1.7925940454006195e-01 + <_> + + 0 -1 122 -3.2996390946209431e-03 + + 1.9990429282188416e-01 -2.1068470180034637e-01 + <_> + + 0 -1 123 2.6152150705456734e-02 + + -8.0667406320571899e-02 3.5581269860267639e-01 + <_> + 45 + -1.1520069837570190e+00 + + <_> + + 0 -1 124 -2.2792650386691093e-02 + + 4.0725260972976685e-01 -3.3609920740127563e-01 + <_> + + 0 -1 125 -5.7334620505571365e-03 + + 2.6882189512252808e-01 -2.2775350511074066e-01 + <_> + + 0 -1 126 9.6941202878952026e-02 + + -8.0905012786388397e-02 7.4328738451004028e-01 + <_> + + 0 -1 127 -2.8288999572396278e-02 + + 4.5610108971595764e-01 -6.1096340417861938e-02 + <_> + + 0 -1 128 3.8522849790751934e-03 + + -2.5241801142692566e-01 2.0907109975814819e-01 + <_> + + 0 -1 129 2.3100129328668118e-03 + + -1.4713400602340698e-01 1.5460389852523804e-01 + <_> + + 0 -1 130 1.1361920041963458e-03 + + 1.7680479586124420e-01 -3.0537289381027222e-01 + <_> + + 0 -1 131 2.4962890893220901e-02 + + -1.2652909755706787e-01 3.7442651391029358e-01 + <_> + + 0 -1 132 -5.8984099887311459e-03 + + 2.6738989353179932e-01 -1.7762570083141327e-01 + <_> + + 0 -1 133 1.1804900132119656e-02 + + 6.6077977418899536e-02 -3.3482131361961365e-01 + <_> + + 0 -1 134 6.4400159753859043e-03 + + 1.0994800180196762e-01 -3.6303481459617615e-01 + <_> + + 0 -1 135 -8.9407369494438171e-02 + + -4.3580460548400879e-01 1.4944310300052166e-02 + <_> + + 0 -1 136 -3.1404230743646622e-02 + + 6.9523447751998901e-01 -5.4854288697242737e-02 + <_> + + 0 -1 137 -1.4607949554920197e-01 + + -2.5650060176849365e-01 5.6956540793180466e-02 + <_> + + 0 -1 138 2.1142649929970503e-03 + + -2.4987550079822540e-01 1.6792559623718262e-01 + <_> + + 0 -1 139 -1.5119359828531742e-02 + + -3.0179870128631592e-01 1.0393589735031128e-01 + <_> + + 0 -1 140 2.5620959699153900e-02 + + -7.4821300804615021e-02 5.3600782155990601e-01 + <_> + + 0 -1 141 -1.4417800307273865e-01 + + -2.0490899682044983e-01 7.4457786977291107e-02 + <_> + + 0 -1 142 2.5954779237508774e-02 + + -9.0574868023395538e-02 4.8442208766937256e-01 + <_> + + 0 -1 143 -2.1130720153450966e-02 + + -2.2689810395240784e-01 6.4876057207584381e-02 + <_> + + 0 -1 144 1.6474459320306778e-02 + + 1.0768000036478043e-01 -3.6570599675178528e-01 + <_> + + 0 -1 145 1.0922150313854218e-01 + + 5.6827351450920105e-02 -3.4728559851646423e-01 + <_> + + 0 -1 146 -7.4581061198841780e-05 + + 1.3904270529747009e-01 -2.5942608714103699e-01 + <_> + + 0 -1 147 -2.7753600850701332e-02 + + 3.8111299276351929e-01 -4.2896129190921783e-02 + <_> + + 0 -1 148 3.2721430063247681e-02 + + -9.0872153639793396e-02 3.9289179444313049e-01 + <_> + + 0 -1 149 5.5606258101761341e-03 + + 8.4002248942852020e-02 -1.9396039843559265e-01 + <_> + + 0 -1 150 -1.0710290074348450e-01 + + -5.8981472253799438e-01 5.6862760335206985e-02 + <_> + + 0 -1 151 -8.0517623573541641e-03 + + 1.1790599673986435e-01 -1.1595659703016281e-01 + <_> + + 0 -1 152 -1.3850019872188568e-01 + + -9.0805321931838989e-01 4.1411358863115311e-02 + <_> + + 0 -1 153 2.8620919212698936e-02 + + 1.9928589463233948e-02 -7.3697662353515625e-01 + <_> + + 0 -1 154 2.6208970695734024e-02 + + -6.1577551066875458e-02 6.0899931192398071e-01 + <_> + + 0 -1 155 2.6527039706707001e-02 + + 5.7193860411643982e-02 -6.2992326915264130e-02 + <_> + + 0 -1 156 -4.4622488319873810e-02 + + -3.3318150043487549e-01 9.3214571475982666e-02 + <_> + + 0 -1 157 -1.4283119700849056e-02 + + 1.9125230610370636e-01 -1.1530569940805435e-01 + <_> + + 0 -1 158 -1.9681209232658148e-03 + + -3.1295120716094971e-01 9.9682807922363281e-02 + <_> + + 0 -1 159 5.2851080894470215e-02 + + -5.8919548988342285e-02 5.7887911796569824e-01 + <_> + + 0 -1 160 -6.3711861148476601e-03 + + 1.9182190299034119e-01 -1.9094540178775787e-01 + <_> + + 0 -1 161 -6.4727910794317722e-03 + + -2.4721039831638336e-01 1.2252929806709290e-01 + <_> + + 0 -1 162 -1.6690989956259727e-02 + + -4.9174660444259644e-01 5.0315100699663162e-02 + <_> + + 0 -1 163 -1.4882409945130348e-02 + + 1.9646610319614410e-01 -5.8250389993190765e-02 + <_> + + 0 -1 164 1.7529709264636040e-02 + + 7.6357498764991760e-02 -3.6559268832206726e-01 + <_> + + 0 -1 165 4.2221389710903168e-02 + + -3.1560491770505905e-02 3.6011269688606262e-01 + <_> + + 0 -1 166 -6.5581746399402618e-02 + + 3.4334710240364075e-01 -8.8556960225105286e-02 + <_> + + 0 -1 167 1.6703210771083832e-02 + + 4.8210039734840393e-02 -1.5273620188236237e-01 + <_> + + 0 -1 168 -6.9328742101788521e-03 + + -3.0573639273643494e-01 1.1821140348911285e-01 + <_> + 46 + -1.0648390054702759e+00 + + <_> + + 0 -1 169 -6.3434438779950142e-03 + + 3.3840280771255493e-01 -3.3474850654602051e-01 + <_> + + 0 -1 170 5.2472548559308052e-03 + + -9.3596532940864563e-02 1.6791179776191711e-01 + <_> + + 0 -1 171 -3.6585088819265366e-02 + + 5.3676098585128784e-01 -8.5433527827262878e-02 + <_> + + 0 -1 172 5.3153699263930321e-03 + + -1.2804119288921356e-01 1.4443910121917725e-01 + <_> + + 0 -1 173 -3.9569609798491001e-03 + + 1.8605449795722961e-01 -2.2311410307884216e-01 + <_> + + 0 -1 174 3.3965419977903366e-02 + + 2.7835709974169731e-02 -5.1203387975692749e-01 + <_> + + 0 -1 175 -1.4852879568934441e-02 + + -4.6814951300621033e-01 1.1351560056209564e-01 + <_> + + 0 -1 176 -2.9641329310834408e-03 + + 2.6591798663139343e-01 -2.8183770179748535e-01 + <_> + + 0 -1 177 -1.0795590281486511e-01 + + -5.7527697086334229e-01 1.0991639643907547e-01 + <_> + + 0 -1 178 2.1237600594758987e-02 + + -1.0451590269804001e-01 4.6613770723342896e-01 + <_> + + 0 -1 179 -2.6189640164375305e-02 + + 4.2544820904731750e-01 -9.2278912663459778e-02 + <_> + + 0 -1 180 -3.5010561347007751e-02 + + -7.1801197528839111e-01 7.2877250611782074e-02 + <_> + + 0 -1 181 1.5026619621494319e-05 + + -2.7199760079383850e-01 1.0682159662246704e-01 + <_> + + 0 -1 182 -2.7760250493884087e-02 + + -5.0185692310333252e-01 1.0118210315704346e-01 + <_> + + 0 -1 183 -3.7439178675413132e-02 + + -3.7141519784927368e-01 8.3709038794040680e-02 + <_> + + 0 -1 184 -1.4152259565889835e-02 + + 3.0982801318168640e-01 -7.3767662048339844e-02 + <_> + + 0 -1 185 -1.2331079691648483e-02 + + -3.9507681131362915e-01 8.3215177059173584e-02 + <_> + + 0 -1 186 2.6666349731385708e-03 + + -1.3776129484176636e-01 2.4245689809322357e-01 + <_> + + 0 -1 187 -2.9443199746310711e-03 + + 2.4460780620574951e-01 -1.3937890529632568e-01 + <_> + + 0 -1 188 -1.5788920223712921e-01 + + -5.6832242012023926e-01 3.6140721291303635e-02 + <_> + + 0 -1 189 2.1553030237555504e-03 + + 8.3660557866096497e-02 -4.1380259394645691e-01 + <_> + + 0 -1 190 -8.5367091000080109e-02 + + -5.7053291797637939e-01 5.2995659410953522e-02 + <_> + + 0 -1 191 3.4761740826070309e-03 + + -1.2189819663763046e-01 2.6553291082382202e-01 + <_> + + 0 -1 192 -2.4104220792651176e-02 + + -5.2315437793731689e-01 2.5505660101771355e-02 + <_> + + 0 -1 193 -3.0729150399565697e-02 + + -4.6735408902168274e-01 7.0844426751136780e-02 + <_> + + 0 -1 194 -1.1937420349568129e-03 + + 1.4596860110759735e-01 -2.3086270689964294e-01 + <_> + + 0 -1 195 3.2304100692272186e-02 + + -6.5350927412509918e-02 5.5091381072998047e-01 + <_> + + 0 -1 196 1.4955499768257141e-01 + + 1.5002089552581310e-02 -8.9400452375411987e-01 + <_> + + 0 -1 197 -4.7254669480025768e-03 + + 1.4857460558414459e-01 -2.1019940078258514e-01 + <_> + + 0 -1 198 3.6360718309879303e-02 + + 2.8547950088977814e-02 -6.3668930530548096e-01 + <_> + + 0 -1 199 -2.7109999209642410e-02 + + 4.9661910533905029e-01 -7.3661573231220245e-02 + <_> + + 0 -1 200 -9.5398407429456711e-03 + + -1.9384680688381195e-01 5.8507081121206284e-02 + <_> + + 0 -1 201 1.0541989654302597e-01 + + -7.4785731732845306e-02 4.3781110644340515e-01 + <_> + + 0 -1 202 6.3801761716604233e-03 + + 5.3971529006958008e-02 -3.3829790353775024e-01 + <_> + + 0 -1 203 -2.2759849205613136e-02 + + -5.9374898672103882e-01 4.8046529293060303e-02 + <_> + + 0 -1 204 -1.7323749139904976e-02 + + -1.6034699976444244e-01 1.5187160111963749e-02 + <_> + + 0 -1 205 2.9854409396648407e-02 + + -6.5698243677616119e-02 4.5057341456413269e-01 + <_> + + 0 -1 206 2.3269839584827423e-02 + + 3.8805499672889709e-02 -3.5354879498481750e-01 + <_> + + 0 -1 207 4.0833871811628342e-02 + + 4.9404840916395187e-02 -5.6222450733184814e-01 + <_> + + 0 -1 208 -1.2498889863491058e-01 + + 6.7763668298721313e-01 -1.5484940260648727e-02 + <_> + + 0 -1 209 -6.5579377114772797e-02 + + 6.7363232374191284e-01 -4.5269690454006195e-02 + <_> + + 0 -1 210 -3.7901759147644043e-01 + + -4.9853721261024475e-01 2.3955229669809341e-02 + <_> + + 0 -1 211 2.9792459681630135e-03 + + -1.8436419963836670e-01 1.6265830397605896e-01 + <_> + + 0 -1 212 1.3803659938275814e-02 + + 6.3698217272758484e-02 -4.3389800190925598e-01 + <_> + + 0 -1 213 3.5606899764388800e-03 + + -1.1455070227384567e-01 2.3618610203266144e-01 + <_> + + 0 -1 214 8.8772783055901527e-03 + + 8.6416840553283691e-02 -1.7590980231761932e-01 + <_> + 45 + -9.5069932937622070e-01 + + <_> + + 0 -1 215 -6.7344820126891136e-03 + + 3.0758589506149292e-01 -2.9761791229248047e-01 + <_> + + 0 -1 216 -1.3902880251407623e-02 + + 2.0400699973106384e-01 -2.2967250645160675e-01 + <_> + + 0 -1 217 -4.1963551193475723e-02 + + -5.6575411558151245e-01 8.6745493113994598e-02 + <_> + + 0 -1 218 -5.9794791013700888e-05 + + 1.5832610428333282e-01 -2.3109050095081329e-01 + <_> + + 0 -1 219 8.4739532321691513e-03 + + -1.1501230299472809e-01 3.9758589863777161e-01 + <_> + + 0 -1 220 -6.5317057073116302e-02 + + -2.3887279629707336e-01 1.1391709744930267e-01 + <_> + + 0 -1 221 -4.2358501814305782e-03 + + 2.2337220609188080e-01 -2.4218839406967163e-01 + <_> + + 0 -1 222 4.6229299157857895e-02 + + 9.6837401390075684e-02 -5.3427702188491821e-01 + <_> + + 0 -1 223 5.2246701670810580e-05 + + -2.4189360439777374e-01 1.5932360291481018e-01 + <_> + + 0 -1 224 -4.1420090943574905e-02 + + -3.4044981002807617e-01 4.3712481856346130e-02 + <_> + + 0 -1 225 -1.0224279947578907e-02 + + -2.4752390384674072e-01 1.5512530505657196e-01 + <_> + + 0 -1 226 6.8581208586692810e-02 + + 9.7173796966671944e-03 -6.1821222305297852e-01 + <_> + + 0 -1 227 -4.0700301527976990e-02 + + -6.0284787416458130e-01 7.0963069796562195e-02 + <_> + + 0 -1 228 -8.9998699724674225e-02 + + 4.6664720773696899e-01 -4.8549890518188477e-02 + <_> + + 0 -1 229 1.5307360328733921e-02 + + 1.4783670008182526e-01 -2.7114608883857727e-01 + <_> + + 0 -1 230 3.7016849964857101e-03 + + -1.5153409540653229e-01 2.0931409299373627e-01 + <_> + + 0 -1 231 -3.1937099993228912e-02 + + -7.2332257032394409e-01 3.7420161068439484e-02 + <_> + + 0 -1 232 4.7493908554315567e-02 + + 4.9000091850757599e-02 -4.8303189873695374e-01 + <_> + + 0 -1 233 4.4620381668210030e-03 + + -1.7698319256305695e-01 1.9820910692214966e-01 + <_> + + 0 -1 234 -8.1284176558256149e-03 + + 1.1222189664840698e-01 -5.0805520266294479e-02 + <_> + + 0 -1 235 -1.2596019543707371e-02 + + 4.3889060616493225e-01 -8.2898952066898346e-02 + <_> + + 0 -1 236 -1.0689930059015751e-03 + + 6.8766087293624878e-02 -8.2667008042335510e-02 + <_> + + 0 -1 237 -4.8213090747594833e-02 + + -4.6671348810195923e-01 7.4310712516307831e-02 + <_> + + 0 -1 238 -2.3418650380335748e-04 + + 8.8725142180919647e-02 -1.0919640213251114e-01 + <_> + + 0 -1 239 1.0095000267028809e-01 + + 5.5444270372390747e-02 -5.5205368995666504e-01 + <_> + + 0 -1 240 3.2340411096811295e-02 + + 4.9762740731239319e-02 -3.6636400222778320e-01 + <_> + + 0 -1 241 1.7699210345745087e-01 + + -7.3765642940998077e-02 5.4300791025161743e-01 + <_> + + 0 -1 242 -1.8634319712873548e-04 + + 9.5718666911125183e-02 -1.8214109539985657e-01 + <_> + + 0 -1 243 6.6473139449954033e-03 + + -1.2173130363225937e-01 3.0331039428710938e-01 + <_> + + 0 -1 244 -9.9276658147573471e-03 + + 3.2638520002365112e-01 -8.8533706963062286e-02 + <_> + + 0 -1 245 5.2587099373340607e-02 + + 1.1303950101137161e-01 -3.3436870574951172e-01 + <_> + + 0 -1 246 4.9553681164979935e-03 + + -1.3183289766311646e-01 9.7614809870719910e-02 + <_> + + 0 -1 247 -2.3817660287022591e-02 + + -4.1027650237083435e-01 8.4849812090396881e-02 + <_> + + 0 -1 248 -1.1363780125975609e-02 + + 1.8874420225620270e-01 -8.3536416292190552e-02 + <_> + + 0 -1 249 -1.9515539752319455e-03 + + 1.8985089659690857e-01 -1.7776779830455780e-01 + <_> + + 0 -1 250 -1.3576669618487358e-02 + + 2.0975759625434875e-01 -3.7115450948476791e-02 + <_> + + 0 -1 251 1.6466820612549782e-02 + + -8.2349412143230438e-02 3.8047221302986145e-01 + <_> + + 0 -1 252 -1.0136260092258453e-01 + + -1.1633230000734329e-01 6.7804910242557526e-02 + <_> + + 0 -1 253 -1.0248430073261261e-01 + + -2.8850209712982178e-01 1.2139680236577988e-01 + <_> + + 0 -1 254 -2.8717568516731262e-01 + + 4.6935141086578369e-01 -8.2954309880733490e-02 + <_> + + 0 -1 255 5.0812978297472000e-02 + + 5.5393878370523453e-02 -6.2383282184600830e-01 + <_> + + 0 -1 256 9.1063417494297028e-02 + + -2.3379560559988022e-02 4.7155299782752991e-01 + <_> + + 0 -1 257 -5.1845338195562363e-02 + + -6.9031542539596558e-01 4.5454118400812149e-02 + <_> + + 0 -1 258 1.5031239390373230e-01 + + 4.5906711369752884e-02 -5.2067738771438599e-01 + <_> + + 0 -1 259 4.1596319526433945e-02 + + 5.3706299513578415e-02 -4.8782169818878174e-01 + <_> + 43 + -8.5045951604843140e-01 + + <_> + + 0 -1 260 -5.9847710654139519e-03 + + 2.7858960628509521e-01 -3.0923390388488770e-01 + <_> + + 0 -1 261 -3.9032639469951391e-03 + + 2.2257049381732941e-01 -2.8928229212760925e-01 + <_> + + 0 -1 262 -2.2362179151969030e-05 + + 1.4084370434284210e-01 -3.0143168568611145e-01 + <_> + + 0 -1 263 -9.1167002916336060e-02 + + -6.7608010768890381e-01 5.6040819734334946e-02 + <_> + + 0 -1 264 5.2755638957023621e-02 + + 7.4688747525215149e-02 -6.3256257772445679e-01 + <_> + + 0 -1 265 6.9458536803722382e-02 + + -1.1754920333623886e-01 6.3863641023635864e-01 + <_> + + 0 -1 266 -4.8209438100457191e-03 + + 2.9225930571556091e-01 -1.3872410356998444e-01 + <_> + + 0 -1 267 3.2156750559806824e-02 + + 7.5575239956378937e-02 -5.7927912473678589e-01 + <_> + + 0 -1 268 -4.4298470020294189e-02 + + 4.0226811170578003e-01 -1.0264609754085541e-01 + <_> + + 0 -1 269 -7.0452108047902584e-03 + + 1.5128499269485474e-01 -5.6725870817899704e-02 + <_> + + 0 -1 270 5.1606830675154924e-04 + + -2.3022100329399109e-01 1.6343879699707031e-01 + <_> + + 0 -1 271 -6.1528358608484268e-02 + + 2.5559040904045105e-01 -4.6751510351896286e-02 + <_> + + 0 -1 272 -5.1367811858654022e-02 + + -2.4755829572677612e-01 1.4305450022220612e-01 + <_> + + 0 -1 273 9.0107098221778870e-03 + + -1.0648769885301590e-01 3.1271860003471375e-01 + <_> + + 0 -1 274 2.2352259606122971e-02 + + 1.5494219958782196e-01 -3.1736290454864502e-01 + <_> + + 0 -1 275 3.1493891030550003e-02 + + 7.2037532925605774e-02 -2.8946670889854431e-01 + <_> + + 0 -1 276 -5.2064459770917892e-02 + + -2.7082020044326782e-01 1.2260189652442932e-01 + <_> + + 0 -1 277 -6.1549381352961063e-03 + + 1.6442950069904327e-01 -1.0657779872417450e-01 + <_> + + 0 -1 278 3.0305041000247002e-03 + + -1.5234139561653137e-01 2.0446379482746124e-01 + <_> + + 0 -1 279 -6.8027540110051632e-03 + + 7.1448147296905518e-02 -4.1458301246166229e-02 + <_> + + 0 -1 280 6.8647533655166626e-02 + + -5.2833538502454758e-02 5.7638901472091675e-01 + <_> + + 0 -1 281 -9.2883080244064331e-02 + + -2.6236709952354431e-01 8.2425810396671295e-02 + <_> + + 0 -1 282 -5.2907038480043411e-03 + + 1.4090450108051300e-01 -2.2050650417804718e-01 + <_> + + 0 -1 283 1.5640209894627333e-03 + + -1.0143549740314484e-01 1.3026970624923706e-01 + <_> + + 0 -1 284 1.0752620175480843e-02 + + 9.1515362262725830e-02 -3.2133978605270386e-01 + <_> + + 0 -1 285 -2.1106360480189323e-02 + + -2.7410230040550232e-01 9.1773197054862976e-03 + <_> + + 0 -1 286 4.8663117922842503e-03 + + -1.5258720517158508e-01 1.9711069762706757e-01 + <_> + + 0 -1 287 6.5396472811698914e-02 + + 6.5921088680624962e-03 -6.4343088865280151e-01 + <_> + + 0 -1 288 4.4902609661221504e-03 + + -1.0377249866724014e-01 2.8005209565162659e-01 + <_> + + 0 -1 289 4.6614840626716614e-02 + + 5.4715849459171295e-02 -5.2179151773452759e-01 + <_> + + 0 -1 290 1.1597450077533722e-01 + + 3.9613999426364899e-02 -6.4784902334213257e-01 + <_> + + 0 -1 291 5.7222661562263966e-03 + + -5.4838169366121292e-02 1.2828019261360168e-01 + <_> + + 0 -1 292 -4.1633259505033493e-02 + + -8.0665838718414307e-01 3.5942289978265762e-02 + <_> + + 0 -1 293 -4.7252390533685684e-02 + + -7.9193192720413208e-01 1.2737370096147060e-02 + <_> + + 0 -1 294 -1.6451090341433883e-03 + + 2.0376729965209961e-01 -1.3230639696121216e-01 + <_> + + 0 -1 295 2.5758889969438314e-03 + + -6.3503406941890717e-02 1.3530080020427704e-01 + <_> + + 0 -1 296 2.0758589729666710e-02 + + 4.7286979854106903e-02 -5.8212000131607056e-01 + <_> + + 0 -1 297 -2.8601480647921562e-02 + + -4.1221970319747925e-01 2.4210980162024498e-02 + <_> + + 0 -1 298 -2.8691580519080162e-02 + + -5.5404680967330933e-01 4.5068629086017609e-02 + <_> + + 0 -1 299 -2.6637869887053967e-03 + + 1.2570230662822723e-01 -1.6319499909877777e-01 + <_> + + 0 -1 300 -4.4750720262527466e-03 + + -2.7138069272041321e-01 1.0293100029230118e-01 + <_> + + 0 -1 301 4.0937099605798721e-02 + + -3.2065469771623611e-02 1.3092640042304993e-01 + <_> + + 0 -1 302 7.5827181339263916e-02 + + -5.1221519708633423e-02 5.6596297025680542e-01 + <_> + 58 + -9.1252201795578003e-01 + + <_> + + 0 -1 303 -4.2669968679547310e-03 + + 1.7704419791698456e-01 -2.8265419602394104e-01 + <_> + + 0 -1 304 -2.2577939555048943e-02 + + 2.3657959699630737e-01 -4.2326368391513824e-02 + <_> + + 0 -1 305 -9.8107997328042984e-03 + + -3.8568308949470520e-01 9.0982303023338318e-02 + <_> + + 0 -1 306 3.8510379381477833e-03 + + -1.0270400345325470e-01 1.9267590343952179e-01 + <_> + + 0 -1 307 -2.0688450895249844e-03 + + 1.6656570136547089e-01 -2.1394389867782593e-01 + <_> + + 0 -1 308 -5.8368500322103500e-02 + + 3.4833571314811707e-01 -8.0605462193489075e-02 + <_> + + 0 -1 309 5.6290920823812485e-02 + + -6.1617989093065262e-02 6.9421827793121338e-01 + <_> + + 0 -1 310 5.5776340886950493e-03 + + 7.8374862670898438e-02 -4.0764930844306946e-01 + <_> + + 0 -1 311 5.0974669866263866e-03 + + 1.5001790225505829e-01 -2.7620849013328552e-01 + <_> + + 0 -1 312 2.4134019389748573e-02 + + -3.7685971707105637e-02 4.0111309289932251e-01 + <_> + + 0 -1 313 2.6251180097460747e-03 + + -1.8986889719963074e-01 1.6666570305824280e-01 + <_> + + 0 -1 314 -2.3179719224572182e-02 + + -6.0807460546493530e-01 3.3016931265592575e-02 + <_> + + 0 -1 315 -1.7960369586944580e-03 + + 1.8328389525413513e-01 -1.6300560534000397e-01 + <_> + + 0 -1 316 1.1327250301837921e-01 + + 1.6392359510064125e-02 -3.8521450757980347e-01 + <_> + + 0 -1 317 -1.1120930314064026e-02 + + -2.6789391040802002e-01 1.2030880153179169e-01 + <_> + + 0 -1 318 8.9298561215400696e-03 + + -6.4766243100166321e-02 5.2446700632572174e-02 + <_> + + 0 -1 319 3.0264519155025482e-02 + + -5.3343709558248520e-02 4.9170601367950439e-01 + <_> + + 0 -1 320 1.3036240637302399e-01 + + 9.9123492836952209e-03 -8.0775249004364014e-01 + <_> + + 0 -1 321 -4.8941900022327900e-03 + + 1.4153289794921875e-01 -2.4222679436206818e-01 + <_> + + 0 -1 322 -1.8009349703788757e-02 + + -1.8352709710597992e-01 5.3784269839525223e-02 + <_> + + 0 -1 323 6.3028637669049203e-05 + + -2.0836220681667328e-01 1.3861179351806641e-01 + <_> + + 0 -1 324 -3.8127291202545166e-01 + + -7.6527822017669678e-01 3.4578099846839905e-02 + <_> + + 0 -1 325 1.6168570145964622e-02 + + -7.8577049076557159e-02 3.6086350679397583e-01 + <_> + + 0 -1 326 -2.0725380629301071e-02 + + -3.2905191183090210e-01 8.1693336367607117e-02 + <_> + + 0 -1 327 -1.4763489889446646e-04 + + 1.0449170321226120e-01 -2.7624139189720154e-01 + <_> + + 0 -1 328 -1.6959169879555702e-02 + + -2.4150790274143219e-01 5.4569680243730545e-02 + <_> + + 0 -1 329 -1.5221100300550461e-02 + + 4.1033148765563965e-01 -6.8333253264427185e-02 + <_> + + 0 -1 330 -9.6041243523359299e-03 + + -3.3569648861885071e-01 8.6250491440296173e-02 + <_> + + 0 -1 331 -1.6476860037073493e-03 + + 1.6236330568790436e-01 -1.9044490158557892e-01 + <_> + + 0 -1 332 -1.0705839842557907e-01 + + -8.6767107248306274e-01 7.3941340669989586e-03 + <_> + + 0 -1 333 -1.8818160519003868e-02 + + -3.6879110336303711e-01 6.8846642971038818e-02 + <_> + + 0 -1 334 -5.6142187677323818e-03 + + 1.7322039604187012e-01 -1.2514470517635345e-01 + <_> + + 0 -1 335 7.3969298973679543e-03 + + -8.5467368364334106e-02 3.2027161121368408e-01 + <_> + + 0 -1 336 9.4870915636420250e-03 + + 6.3168406486511230e-02 -2.0918910205364227e-01 + <_> + + 0 -1 337 1.8458140548318624e-03 + + -1.5436279773712158e-01 1.8517020344734192e-01 + <_> + + 0 -1 338 -1.9747359678149223e-02 + + 3.3071118593215942e-01 -7.6775848865509033e-02 + <_> + + 0 -1 339 3.2421160489320755e-02 + + 8.2021132111549377e-02 -4.0147501230239868e-01 + <_> + + 0 -1 340 2.9075390193611383e-03 + + -7.7174037694931030e-02 1.0620699822902679e-01 + <_> + + 0 -1 341 1.5189359895884991e-02 + + 6.0363899916410446e-02 -4.1365239024162292e-01 + <_> + + 0 -1 342 -3.0683739110827446e-02 + + 4.3470621109008789e-01 -5.9381321072578430e-02 + <_> + + 0 -1 343 -1.0973449796438217e-02 + + -2.9535230994224548e-01 8.5516467690467834e-02 + <_> + + 0 -1 344 -3.9540361613035202e-02 + + -2.8765881061553955e-01 3.4472968429327011e-02 + <_> + + 0 -1 345 -3.7935871630907059e-02 + + 3.8199868798255920e-01 -8.5364766418933868e-02 + <_> + + 0 -1 346 3.0669810250401497e-02 + + 4.4738098978996277e-02 -1.7703640460968018e-01 + <_> + + 0 -1 347 1.7194509506225586e-01 + + -5.9214178472757339e-02 4.9291038513183594e-01 + <_> + + 0 -1 348 -6.7055500112473965e-03 + + 1.6410259902477264e-01 -2.1826469898223877e-01 + <_> + + 0 -1 349 -3.8577869534492493e-01 + + -6.7176771163940430e-01 4.2349591851234436e-02 + <_> + + 0 -1 350 2.7213040739297867e-02 + + 1.2266149744391441e-02 -2.2954210638999939e-01 + <_> + + 0 -1 351 -1.9294980913400650e-02 + + -5.8373439311981201e-01 3.8380999118089676e-02 + <_> + + 0 -1 352 7.6792249456048012e-03 + + -4.7490350902080536e-02 1.5964460372924805e-01 + <_> + + 0 -1 353 6.0242269682930782e-05 + + -1.1734239757061005e-01 1.8236650526523590e-01 + <_> + + 0 -1 354 -6.6498141677584499e-05 + + 7.4745140969753265e-02 -1.6989439725875854e-01 + <_> + + 0 -1 355 4.3275849893689156e-03 + + 7.3789797723293304e-02 -2.8444349765777588e-01 + <_> + + 0 -1 356 -3.3140469342470169e-02 + + -4.0606608986854553e-01 1.0028730146586895e-02 + <_> + + 0 -1 357 9.9181402474641800e-03 + + -7.9339787364006042e-02 2.8190010786056519e-01 + <_> + + 0 -1 358 -2.3577339015901089e-03 + + 1.5301220118999481e-01 -1.0475979745388031e-01 + <_> + + 0 -1 359 -2.6200819760560989e-02 + + -5.4185032844543457e-01 4.4369250535964966e-02 + <_> + + 0 -1 360 4.7328658401966095e-02 + + 1.8897749483585358e-02 -8.2665932178497314e-01 + <_> + 44 + -1.1653599739074707e+00 + + <_> + + 0 -1 361 2.9921719804406166e-02 + + -3.2315000891685486e-01 5.1092821359634399e-01 + <_> + + 0 -1 362 5.6147608906030655e-02 + + -1.2574400007724762e-01 6.6749179363250732e-01 + <_> + + 0 -1 363 -1.3759849593043327e-02 + + 4.0691190958023071e-01 -2.1075299382209778e-01 + <_> + + 0 -1 364 -4.3788701295852661e-03 + + 2.7940139174461365e-01 -2.0955459773540497e-01 + <_> + + 0 -1 365 1.9208889454603195e-02 + + -8.9800693094730377e-02 5.0936561822891235e-01 + <_> + + 0 -1 366 -8.9393591042608023e-04 + + 1.0703620314598083e-01 -1.2294200062751770e-01 + <_> + + 0 -1 367 -6.2918022740632296e-04 + + -3.7847930192947388e-01 1.3008819520473480e-01 + <_> + + 0 -1 368 -1.6248769825324416e-03 + + 1.7750020325183868e-01 -2.7811211347579956e-01 + <_> + + 0 -1 369 -4.6151960268616676e-03 + + 2.4071510136127472e-01 -1.4269010722637177e-01 + <_> + + 0 -1 370 5.7162828743457794e-02 + + -1.8474869430065155e-02 4.5086058974266052e-01 + <_> + + 0 -1 371 -3.8265369366854429e-03 + + 2.5951761007308960e-01 -1.1455159634351730e-01 + <_> + + 0 -1 372 -4.5235190540552139e-02 + + -3.3849009871482849e-01 3.4538950771093369e-02 + <_> + + 0 -1 373 3.8135750219225883e-03 + + 1.1333999782800674e-01 -2.7620390057563782e-01 + <_> + + 0 -1 374 4.5108258724212646e-02 + + 2.8602050617337227e-02 -1.5837669372558594e-01 + <_> + + 0 -1 375 -2.7794970665127039e-03 + + 2.8897428512573242e-01 -1.0822720080614090e-01 + <_> + + 0 -1 376 5.6366869248449802e-03 + + -1.0184790194034576e-01 7.8787103295326233e-02 + <_> + + 0 -1 377 -5.2986819297075272e-02 + + 5.2964997291564941e-01 -6.5543353557586670e-02 + <_> + + 0 -1 378 7.4737891554832458e-02 + + 2.6320660486817360e-02 -3.0487209558486938e-01 + <_> + + 0 -1 379 4.1559520177543163e-03 + + -2.2977170348167419e-01 1.5662179887294769e-01 + <_> + + 0 -1 380 -2.9388200491666794e-03 + + -1.6916410624980927e-01 9.6996672451496124e-02 + <_> + + 0 -1 381 -1.3065510429441929e-02 + + 4.0258568525314331e-01 -7.1614369750022888e-02 + <_> + + 0 -1 382 -3.4928251057863235e-02 + + -4.9449989199638367e-01 2.2547820582985878e-02 + <_> + + 0 -1 383 2.1728971041738987e-03 + + -1.5552569925785065e-01 2.0136219263076782e-01 + <_> + + 0 -1 384 1.4387349598109722e-02 + + 3.6348100751638412e-02 -2.9468619823455811e-01 + <_> + + 0 -1 385 6.7830132320523262e-03 + + -8.2248352468013763e-02 3.3857500553131104e-01 + <_> + + 0 -1 386 -7.2883836925029755e-02 + + -3.4577670693397522e-01 1.9601320847868919e-02 + <_> + + 0 -1 387 -4.5158518478274345e-03 + + 1.7059490084648132e-01 -1.9742819666862488e-01 + <_> + + 0 -1 388 -1.3742079958319664e-02 + + -2.1214349567890167e-01 3.3953689038753510e-02 + <_> + + 0 -1 389 7.8056701458990574e-03 + + 7.1426697075366974e-02 -3.4223988652229309e-01 + <_> + + 0 -1 390 2.1649990230798721e-02 + + -6.1925049871206284e-02 3.7267661094665527e-01 + <_> + + 0 -1 391 -6.7706637084484100e-02 + + -3.0304160714149475e-01 9.4357587397098541e-02 + <_> + + 0 -1 392 -2.1855749655514956e-03 + + 1.0831770300865173e-01 -1.5530540049076080e-01 + <_> + + 0 -1 393 -2.5483060162514448e-03 + + -2.4103440344333649e-01 9.2916287481784821e-02 + <_> + + 0 -1 394 -6.7207813262939453e-02 + + -6.6259348392486572e-01 1.6074649989604950e-02 + <_> + + 0 -1 395 4.7799371182918549e-02 + + -4.4412638992071152e-02 6.0569787025451660e-01 + <_> + + 0 -1 396 -9.1178417205810547e-02 + + 2.4761490523815155e-01 -3.4762401133775711e-02 + <_> + + 0 -1 397 -3.8592480123043060e-03 + + -2.5366741418838501e-01 1.0194999724626541e-01 + <_> + + 0 -1 398 2.4100970476865768e-03 + + -1.2133970111608505e-01 1.9767910242080688e-01 + <_> + + 0 -1 399 -5.3831469267606735e-03 + + 1.7103940248489380e-01 -1.6189830005168915e-01 + <_> + + 0 -1 400 9.1004222631454468e-03 + + -6.0921549797058105e-02 1.7695249617099762e-01 + <_> + + 0 -1 401 2.2724110167473555e-03 + + -9.0476967394351959e-02 2.7440631389617920e-01 + <_> + + 0 -1 402 -8.0621562898159027e-02 + + -8.8045567274093628e-01 1.7193239182233810e-02 + <_> + + 0 -1 403 3.8965709973126650e-03 + + -1.7037920653820038e-01 1.7979580163955688e-01 + <_> + + 0 -1 404 -4.3093641288578510e-03 + + -2.9382050037384033e-01 8.6317472159862518e-02 + <_> + 44 + -9.4284927845001221e-01 + + <_> + + 0 -1 405 -6.3116192817687988e-02 + + 5.5512517690658569e-01 -3.5997709631919861e-01 + <_> + + 0 -1 406 8.4350287914276123e-02 + + -1.2531270086765289e-01 5.3567689657211304e-01 + <_> + + 0 -1 407 -2.1390730142593384e-01 + + 7.5156861543655396e-01 -8.8270872831344604e-02 + <_> + + 0 -1 408 -2.9744980856776237e-02 + + 2.0106209814548492e-01 -1.2106689810752869e-01 + <_> + + 0 -1 409 -1.1987680196762085e-01 + + 6.4692199230194092e-01 -7.7747613191604614e-02 + <_> + + 0 -1 410 3.0843529384583235e-03 + + -6.3067637383937836e-02 7.7889077365398407e-02 + <_> + + 0 -1 411 -4.5560211874544621e-03 + + 1.8972270190715790e-01 -1.9929079711437225e-01 + <_> + + 0 -1 412 4.4629329931922257e-04 + + 1.4051589369773865e-01 -3.0292418599128723e-01 + <_> + + 0 -1 413 -6.4954371191561222e-03 + + 3.1942290067672729e-01 -1.1072000116109848e-01 + <_> + + 0 -1 414 -2.1751760505139828e-03 + + 1.6477259993553162e-01 -8.0424778163433075e-02 + <_> + + 0 -1 415 6.5875840373337269e-03 + + 1.4716550707817078e-01 -3.0198150873184204e-01 + <_> + + 0 -1 416 2.0701209083199501e-02 + + -4.2996689677238464e-02 4.0123820304870605e-01 + <_> + + 0 -1 417 2.5877119041979313e-03 + + 1.2630540132522583e-01 -2.7518120408058167e-01 + <_> + + 0 -1 418 -1.0545079596340656e-02 + + 1.9637629389762878e-01 -3.9772778749465942e-02 + <_> + + 0 -1 419 6.2396968714892864e-03 + + -8.3563409745693207e-02 3.6655488610267639e-01 + <_> + + 0 -1 420 1.4458670280873775e-02 + + 6.3301697373390198e-02 -5.8498907089233398e-01 + <_> + + 0 -1 421 3.1263440847396851e-02 + + -1.0675270110368729e-01 3.4852859377861023e-01 + <_> + + 0 -1 422 1.4865349512547255e-03 + + 1.3709670305252075e-01 -1.3731659948825836e-01 + <_> + + 0 -1 423 -1.7898039368446916e-04 + + 1.7839649319648743e-01 -2.5751718878746033e-01 + <_> + + 0 -1 424 7.7714473009109497e-02 + + 5.7081848382949829e-02 -2.4273400008678436e-01 + <_> + + 0 -1 425 2.2228270769119263e-02 + + 1.4593790471553802e-01 -2.0994609594345093e-01 + <_> + + 0 -1 426 1.6969949938356876e-03 + + -1.4418889582157135e-01 2.7375409007072449e-01 + <_> + + 0 -1 427 -2.0023470744490623e-02 + + -3.7556248903274536e-01 8.1627696752548218e-02 + <_> + + 0 -1 428 3.8644319865852594e-03 + + -6.4490430057048798e-02 1.5921689569950104e-01 + <_> + + 0 -1 429 -3.0527650378644466e-03 + + 2.6751521229743958e-01 -1.0531850159168243e-01 + <_> + + 0 -1 430 5.6112320162355900e-03 + + -6.8567730486392975e-02 2.1234990656375885e-01 + <_> + + 0 -1 431 4.6622268855571747e-03 + + 1.4254149794578552e-01 -2.0892719924449921e-01 + <_> + + 0 -1 432 2.4710448924452066e-03 + + 7.2614386677742004e-02 -1.8833909928798676e-01 + <_> + + 0 -1 433 1.2655000202357769e-02 + + -8.3605259656906128e-02 4.3262240290641785e-01 + <_> + + 0 -1 434 -1.7724519595503807e-02 + + 1.7432230710983276e-01 -2.8479820117354393e-02 + <_> + + 0 -1 435 -7.2321272455155849e-04 + + 1.5343970060348511e-01 -2.4012179672718048e-01 + <_> + + 0 -1 436 -6.2155709601938725e-03 + + 2.5166681408882141e-01 -8.5519887506961823e-02 + <_> + + 0 -1 437 4.1632771492004395e-02 + + 5.0593800842761993e-02 -6.0965442657470703e-01 + <_> + + 0 -1 438 2.3918300867080688e-02 + + -3.6809660494327545e-02 3.9055478572845459e-01 + <_> + + 0 -1 439 -7.4353138916194439e-03 + + 1.5018579363822937e-01 -1.8627819418907166e-01 + <_> + + 0 -1 440 -2.0571449771523476e-02 + + -2.8574559092521667e-01 4.8302378505468369e-02 + <_> + + 0 -1 441 -7.3831980116665363e-03 + + 3.6680561304092407e-01 -9.6067756414413452e-02 + <_> + + 0 -1 442 9.7222924232482910e-03 + + 6.3898019492626190e-02 -1.7262579500675201e-01 + <_> + + 0 -1 443 -2.1807629615068436e-02 + + 1.8027269840240479e-01 -1.9109119474887848e-01 + <_> + + 0 -1 444 5.8147668838500977e-02 + + 8.5709961131215096e-03 -4.6250829100608826e-01 + <_> + + 0 -1 445 -9.4539504498243332e-03 + + -2.8908729553222656e-01 1.1421570181846619e-01 + <_> + + 0 -1 446 -2.1080709993839264e-02 + + 3.7570050358772278e-01 -2.5591030716896057e-02 + <_> + + 0 -1 447 -4.0629571303725243e-03 + + 2.7146670222282410e-01 -1.0845380276441574e-01 + <_> + + 0 -1 448 -1.2826620042324066e-01 + + 1. -1.0962430387735367e-03 + <_> + 61 + -9.5620310306549072e-01 + + <_> + + 0 -1 449 -1.2662290036678314e-01 + + 6.2268221378326416e-01 -1.4810459315776825e-01 + <_> + + 0 -1 450 -7.0846290327608585e-03 + + 2.0133779942989349e-01 -1.7728950083255768e-01 + <_> + + 0 -1 451 1.1459200084209442e-01 + + -8.8975846767425537e-02 5.7395541667938232e-01 + <_> + + 0 -1 452 3.3472150098532438e-03 + + 7.5708203017711639e-02 -2.8222179412841797e-01 + <_> + + 0 -1 453 5.1924228668212891e-02 + + -1.3948489725589752e-01 2.5681090354919434e-01 + <_> + + 0 -1 454 -4.1343908756971359e-02 + + 2.2414180636405945e-01 -4.3653670698404312e-02 + <_> + + 0 -1 455 -3.2056469470262527e-02 + + -5.9409761428833008e-01 5.1891159266233444e-02 + <_> + + 0 -1 456 -4.0590870194137096e-03 + + 1.6402080655097961e-01 -1.5528389811515808e-01 + <_> + + 0 -1 457 -9.1876718215644360e-05 + + 1.0587870329618454e-01 -2.8261598944664001e-01 + <_> + + 0 -1 458 2.8358219191431999e-02 + + 5.7384029030799866e-02 -6.7094147205352783e-02 + <_> + + 0 -1 459 -7.4662521481513977e-02 + + 5.6916707754135132e-01 -4.8785641789436340e-02 + <_> + + 0 -1 460 -3.6556490231305361e-03 + + 2.2369490563869476e-01 -1.2202149629592896e-01 + <_> + + 0 -1 461 3.1778779812157154e-03 + + 1.2240319699048996e-01 -2.7681729197502136e-01 + <_> + + 0 -1 462 3.8044340908527374e-02 + + 2.3216400295495987e-02 -5.3732901811599731e-01 + <_> + + 0 -1 463 8.7831392884254456e-03 + + -7.4337556958198547e-02 3.2851231098175049e-01 + <_> + + 0 -1 464 -5.9818099252879620e-03 + + -1.9504779577255249e-01 6.6976852715015411e-02 + <_> + + 0 -1 465 -1.6369449440389872e-03 + + 1.4674800634384155e-01 -1.8024149537086487e-01 + <_> + + 0 -1 466 -9.9193133413791656e-02 + + 6.8363517522811890e-01 -2.9652720317244530e-02 + <_> + + 0 -1 467 -1.0352009907364845e-02 + + 3.4225308895111084e-01 -8.1141538918018341e-02 + <_> + + 0 -1 468 2.5637909770011902e-02 + + 5.1416900008916855e-02 -1.6697999835014343e-01 + <_> + + 0 -1 469 -1.2416959507390857e-03 + + 1.2488900125026703e-01 -2.1346220374107361e-01 + <_> + + 0 -1 470 1.5018839621916413e-03 + + 9.7934387624263763e-02 -2.6385021209716797e-01 + <_> + + 0 -1 471 -3.2703679054975510e-02 + + 5.7504880428314209e-01 -4.5875400304794312e-02 + <_> + + 0 -1 472 2.1297169849276543e-02 + + 6.1069380491971970e-02 -2.2480219602584839e-01 + <_> + + 0 -1 473 -8.8358018547296524e-04 + + 9.5625787973403931e-02 -2.7564591169357300e-01 + <_> + + 0 -1 474 -3.6556860432028770e-03 + + 2.4107089638710022e-01 -1.0359519720077515e-01 + <_> + + 0 -1 475 3.4300461411476135e-02 + + 3.9062701165676117e-02 -6.2445348501205444e-01 + <_> + + 0 -1 476 1.1492350138723850e-02 + + -6.9246053695678711e-02 3.8258171081542969e-01 + <_> + + 0 -1 477 -3.1294790096580982e-03 + + 1.1273369938135147e-01 -2.3122510313987732e-01 + <_> + + 0 -1 478 -4.0945871733129025e-03 + + -1.7195980250835419e-01 1.3112659752368927e-01 + <_> + + 0 -1 479 -3.0921408906579018e-03 + + -2.5460389256477356e-01 9.6659161150455475e-02 + <_> + + 0 -1 480 -4.1672129184007645e-02 + + 2.7327769994735718e-01 -6.3094623386859894e-02 + <_> + + 0 -1 481 1.1384460143744946e-02 + + -7.1872517466545105e-02 4.1160398721694946e-01 + <_> + + 0 -1 482 -2.3934150114655495e-02 + + 1.3192340731620789e-01 -1.7954839766025543e-01 + <_> + + 0 -1 483 -3.1554169952869415e-02 + + -5.8792132139205933e-01 4.1782889515161514e-02 + <_> + + 0 -1 484 -2.4033859372138977e-02 + + -1.5534760057926178e-01 2.7700260281562805e-02 + <_> + + 0 -1 485 3.1589470803737640e-02 + + -3.9150279015302658e-02 6.0951721668243408e-01 + <_> + + 0 -1 486 -2.4214860051870346e-02 + + -2.4587619304656982e-01 9.1133296489715576e-02 + <_> + + 0 -1 487 1.9322870066389441e-03 + + -1.1647839844226837e-01 1.8819290399551392e-01 + <_> + + 0 -1 488 -3.6017759703099728e-03 + + 9.7600512206554413e-02 -4.8918090760707855e-02 + <_> + + 0 -1 489 3.1516118906438351e-03 + + 6.5808869898319244e-02 -3.1577658653259277e-01 + <_> + + 0 -1 490 -6.3677072525024414e-02 + + -8.6415481567382812e-01 -9.9097320344299078e-04 + <_> + + 0 -1 491 -3.9085028693079948e-03 + + 2.0826210081577301e-01 -1.0560230165719986e-01 + <_> + + 0 -1 492 -2.6837719604372978e-02 + + -1.8375129997730255e-01 2.9545329511165619e-02 + <_> + + 0 -1 493 3.1312298960983753e-03 + + -1.2626689672470093e-01 1.6888590157032013e-01 + <_> + + 0 -1 494 -7.3491871356964111e-02 + + -1. 5.6774187833070755e-03 + <_> + + 0 -1 495 1.8034819513559341e-02 + + -6.8617410957813263e-02 3.3438131213188171e-01 + <_> + + 0 -1 496 6.8655997514724731e-02 + + 4.6462309546768665e-03 -8.0664628744125366e-01 + <_> + + 0 -1 497 -4.6970890834927559e-03 + + -2.0121769607067108e-01 1.1580040305852890e-01 + <_> + + 0 -1 498 4.6783890575170517e-02 + + -3.5802699625492096e-02 4.1625639796257019e-01 + <_> + + 0 -1 499 4.5946058817207813e-03 + + 8.8457576930522919e-02 -2.6894488930702209e-01 + <_> + + 0 -1 500 -1.3852829579263926e-03 + + 8.1391222774982452e-02 -1.4880420267581940e-01 + <_> + + 0 -1 501 2.1788759157061577e-02 + + -9.1640457510948181e-02 2.1261249482631683e-01 + <_> + + 0 -1 502 -1.3380090240389109e-04 + + 9.6424743533134460e-02 -1.4717370271682739e-01 + <_> + + 0 -1 503 -4.7990411520004272e-02 + + -6.1987131834030151e-01 3.8760710507631302e-02 + <_> + + 0 -1 504 2.0026009529829025e-02 + + -3.5972420126199722e-02 1.9393420219421387e-01 + <_> + + 0 -1 505 1.0723130544647574e-03 + + -1.9447499513626099e-01 1.2064950168132782e-01 + <_> + + 0 -1 506 2.2665090858936310e-02 + + 4.8719439655542374e-02 -2.3640799522399902e-01 + <_> + + 0 -1 507 -1.1042109690606594e-02 + + -2.6107341051101685e-01 1.0075490176677704e-01 + <_> + + 0 -1 508 -1.2811049818992615e-02 + + 1.5199629962444305e-01 -8.8552959263324738e-02 + <_> + + 0 -1 509 -3.6628648638725281e-02 + + 3.8858860731124878e-01 -7.7304549515247345e-02 + <_> + 72 + -8.7708407640457153e-01 + + <_> + + 0 -1 510 -5.4606638848781586e-02 + + 5.5801349878311157e-01 -1.4168889820575714e-01 + <_> + + 0 -1 511 3.3533740788698196e-02 + + -2.7386279776692390e-02 4.4381770491600037e-01 + <_> + + 0 -1 512 -9.9635301157832146e-03 + + 2.5193908810615540e-01 -1.4647540450096130e-01 + <_> + + 0 -1 513 1.8188880058005452e-03 + + -1.1264120042324066e-01 1.1523260176181793e-01 + <_> + + 0 -1 514 -4.8793829977512360e-02 + + 5.1317107677459717e-01 -7.8665018081665039e-02 + <_> + + 0 -1 515 -1.3357769697904587e-02 + + -1.4197979867458344e-01 1.1862599849700928e-01 + <_> + + 0 -1 516 1.1562240542843938e-03 + + -2.0949220657348633e-01 1.5693040192127228e-01 + <_> + + 0 -1 517 -6.2384512275457382e-03 + + -1.4336450397968292e-01 1.1303550004959106e-01 + <_> + + 0 -1 518 4.4234818778932095e-03 + + -1.0358580201864243e-01 2.4589489400386810e-01 + <_> + + 0 -1 519 5.2964448928833008e-02 + + 1.2561550363898277e-02 -6.2551808357238770e-01 + <_> + + 0 -1 520 5.5844681337475777e-03 + + 8.3967886865139008e-02 -2.4653799831867218e-01 + <_> + + 0 -1 521 -4.1809541289694607e-04 + + 6.9588072597980499e-02 -1.3558819890022278e-01 + <_> + + 0 -1 522 -8.9637134224176407e-03 + + -3.0442738533020020e-01 6.9894723594188690e-02 + <_> + + 0 -1 523 2.4479050189256668e-02 + + -3.1651828438043594e-02 2.0308789610862732e-01 + <_> + + 0 -1 524 -2.5842329487204552e-02 + + 5.0401061773300171e-01 -6.3922062516212463e-02 + <_> + + 0 -1 525 -2.0785620436072350e-03 + + 1.0980220139026642e-01 -1.1839559674263000e-01 + <_> + + 0 -1 526 6.8030342459678650e-02 + + 4.2290739715099335e-02 -5.1855510473251343e-01 + <_> + + 0 -1 527 -7.0639760233461857e-03 + + -2.0031100511550903e-01 2.4955609813332558e-02 + <_> + + 0 -1 528 -3.4848200157284737e-03 + + 2.3135329782962799e-01 -9.6989557147026062e-02 + <_> + + 0 -1 529 1.3147160410881042e-02 + + -3.7450950592756271e-02 2.5842788815498352e-01 + <_> + + 0 -1 530 -1.4271659776568413e-02 + + -3.0110171437263489e-01 7.9672336578369141e-02 + <_> + + 0 -1 531 1.2653480283915997e-02 + + 4.9039140343666077e-02 -1.4988109469413757e-01 + <_> + + 0 -1 532 -4.4893440790474415e-03 + + 1.7208859324455261e-01 -1.5355649590492249e-01 + <_> + + 0 -1 533 3.2365400344133377e-02 + + -9.0493112802505493e-02 3.5779160261154175e-01 + <_> + + 0 -1 534 4.6125808730721474e-03 + + 1.1445190012454987e-01 -2.6519489288330078e-01 + <_> + + 0 -1 535 2.8645930811762810e-02 + + -3.5988539457321167e-02 3.0025520920753479e-01 + <_> + + 0 -1 536 -2.3571979254484177e-02 + + -2.4872820079326630e-01 9.1967120766639709e-02 + <_> + + 0 -1 537 -1.0739799588918686e-02 + + -2.1367760002613068e-01 9.6477411687374115e-02 + <_> + + 0 -1 538 2.3728659376502037e-02 + + -7.0916198194026947e-02 4.3828758597373962e-01 + <_> + + 0 -1 539 -3.2800701260566711e-01 + + 5.8840030431747437e-01 -3.1756788492202759e-02 + <_> + + 0 -1 540 7.5008560997957829e-06 + + -1.8288560211658478e-01 1.2022940069437027e-01 + <_> + + 0 -1 541 3.0071409419178963e-02 + + 2.7802020311355591e-02 -4.3224281072616577e-01 + <_> + + 0 -1 542 -2.1936609409749508e-03 + + 1.3592420518398285e-01 -1.4038629829883575e-01 + <_> + + 0 -1 543 2.0174339413642883e-02 + + -6.1628919094800949e-02 3.1579768657684326e-01 + <_> + + 0 -1 544 9.7460206598043442e-03 + + 8.8958032429218292e-02 -2.2594009339809418e-01 + <_> + + 0 -1 545 -1.2958340346813202e-02 + + -1.2200850248336792e-01 8.6518086493015289e-02 + <_> + + 0 -1 546 1.1445499956607819e-02 + + -6.4182333648204803e-02 3.0279749631881714e-01 + <_> + + 0 -1 547 -3.3802569378167391e-03 + + 1.1177670210599899e-01 -1.2922379374504089e-01 + <_> + + 0 -1 548 2.0366210490465164e-02 + + 1.0104539990425110e-01 -2.5991159677505493e-01 + <_> + + 0 -1 549 3.8058649748563766e-02 + + 1.3168349862098694e-02 -7.5580632686614990e-01 + <_> + + 0 -1 550 2.3050000891089439e-03 + + -1.0766649991273880e-01 1.8757669627666473e-01 + <_> + + 0 -1 551 5.1847118884325027e-02 + + -2.2320529446005821e-02 1.8795830011367798e-01 + <_> + + 0 -1 552 1.1383029632270336e-02 + + 6.0226161032915115e-02 -3.5961788892745972e-01 + <_> + + 0 -1 553 8.2553178071975708e-03 + + -8.5131391882896423e-02 2.3493440449237823e-01 + <_> + + 0 -1 554 -2.6984339579939842e-02 + + -2.1479399502277374e-01 9.3656733632087708e-02 + <_> + + 0 -1 555 -1.0289980098605156e-02 + + 5.8254890143871307e-02 -8.3950929343700409e-02 + <_> + + 0 -1 556 -1.4419780200114474e-05 + + 1.0392870008945465e-01 -1.7317299544811249e-01 + <_> + + 0 -1 557 1.0065140202641487e-02 + + -4.1311118751764297e-02 1.7616020143032074e-01 + <_> + + 0 -1 558 -1.4870229642838240e-04 + + 1.5657539665699005e-01 -1.2030059844255447e-01 + <_> + + 0 -1 559 -3.1059589236974716e-03 + + 1.1674880236387253e-01 -9.1372460126876831e-02 + <_> + + 0 -1 560 1.0708030313253403e-02 + + -7.7608227729797363e-02 2.7916100621223450e-01 + <_> + + 0 -1 561 -9.7792129963636398e-03 + + -2.9060921072959900e-01 7.1562640368938446e-02 + <_> + + 0 -1 562 2.0121980458498001e-02 + + 4.3994959443807602e-02 -4.2539501190185547e-01 + <_> + + 0 -1 563 -6.3295163214206696e-02 + + 3.7034231424331665e-01 -5.2549809217453003e-02 + <_> + + 0 -1 564 -8.7289556860923767e-02 + + -6.4299279451370239e-01 3.1952869147062302e-02 + <_> + + 0 -1 565 2.0398540422320366e-02 + + -4.5955598354339600e-02 4.6266159415245056e-01 + <_> + + 0 -1 566 -4.0313000790774822e-03 + + 1.3840849697589874e-01 -1.7980839312076569e-01 + <_> + + 0 -1 567 -1.5734519809484482e-02 + + -1.8477180600166321e-01 6.9983080029487610e-02 + <_> + + 0 -1 568 3.3332880120724440e-03 + + 1.1277650296688080e-01 -1.9513790309429169e-01 + <_> + + 0 -1 569 4.3689161539077759e-02 + + 5.9510939754545689e-03 -5.5423438549041748e-01 + <_> + + 0 -1 570 -2.0920610986649990e-03 + + 1.9163469970226288e-01 -9.7136110067367554e-02 + <_> + + 0 -1 571 2.0574270747601986e-03 + + -1.0197430104017258e-01 1.4083810150623322e-01 + <_> + + 0 -1 572 8.8018123060464859e-03 + + 1.1987809836864471e-01 -1.5638549625873566e-01 + <_> + + 0 -1 573 -1.6882529482245445e-02 + + -1.8438099324703217e-01 1.9492870196700096e-02 + <_> + + 0 -1 574 -6.1647890834137797e-04 + + 1.0665109753608704e-01 -2.2164009511470795e-01 + <_> + + 0 -1 575 1.0317339911125600e-04 + + -1.1228899657726288e-01 1.3858650624752045e-01 + <_> + + 0 -1 576 1.5316329896450043e-02 + + -5.0639409571886063e-02 4.1119828820228577e-01 + <_> + + 0 -1 577 1.0660690255463123e-02 + + 5.8820810168981552e-02 -1.6454669833183289e-01 + <_> + + 0 -1 578 -1.9296869635581970e-02 + + 3.9260959625244141e-01 -5.2761189639568329e-02 + <_> + + 0 -1 579 1.0018110275268555e-02 + + 1.0068470239639282e-01 -1.9756269454956055e-01 + <_> + + 0 -1 580 -2.7263790369033813e-02 + + 3.5332089662551880e-01 -5.5305551737546921e-02 + <_> + + 0 -1 581 5.4494310170412064e-03 + + 6.7253768444061279e-02 -1.8384470045566559e-01 + <_> + 75 + -8.5267168283462524e-01 + + <_> + + 0 -1 582 -5.7434860616922379e-02 + + 5.0582551956176758e-01 -1.2274570018053055e-01 + <_> + + 0 -1 583 -1.2750659883022308e-01 + + 5.7605969905853271e-01 -4.3710928410291672e-02 + <_> + + 0 -1 584 -6.3675642013549805e-02 + + 5.7122522592544556e-01 -4.9968320876359940e-02 + <_> + + 0 -1 585 -1.1928480118513107e-02 + + 2.1641939878463745e-01 -1.8480269610881805e-01 + <_> + + 0 -1 586 1.3247699826024473e-04 + + -2.2685679793357849e-01 1.0648279637098312e-01 + <_> + + 0 -1 587 6.4140267204493284e-04 + + 9.4751678407192230e-02 -2.6892009377479553e-01 + <_> + + 0 -1 588 -2.9463530518114567e-03 + + 1.3910910487174988e-01 -1.7091070115566254e-01 + <_> + + 0 -1 589 5.3384741768240929e-03 + + 8.3969242870807648e-02 -9.5441989600658417e-02 + <_> + + 0 -1 590 5.8703150600194931e-02 + + -6.9647520780563354e-02 3.3629441261291504e-01 + <_> + + 0 -1 591 -2.5406300555914640e-03 + + 9.6176013350486755e-02 -1.5758140385150909e-01 + <_> + + 0 -1 592 -3.1899519264698029e-02 + + -2.7956488728523254e-01 7.0359513163566589e-02 + <_> + + 0 -1 593 -3.2022708654403687e-01 + + -9.0805047750473022e-01 7.5922380201518536e-03 + <_> + + 0 -1 594 3.5796251147985458e-02 + + -5.0070770084857941e-02 4.2101579904556274e-01 + <_> + + 0 -1 595 -1.9079160690307617e-01 + + -2.2061030566692352e-01 6.5184786915779114e-02 + <_> + + 0 -1 596 -1.2181829661130905e-02 + + 1.3479439914226532e-01 -1.6667750477790833e-01 + <_> + + 0 -1 597 -3.2165799289941788e-02 + + -2.5105410814285278e-01 1.9344560801982880e-02 + <_> + + 0 -1 598 3.6299630999565125e-02 + + -5.9490781277418137e-02 4.0007731318473816e-01 + <_> + + 0 -1 599 2.0224580541253090e-02 + + 5.6489799171686172e-02 -1.3418239355087280e-01 + <_> + + 0 -1 600 -2.5393130257725716e-02 + + 3.6507838964462280e-01 -6.6002182662487030e-02 + <_> + + 0 -1 601 -1.2022369541227818e-02 + + -1.7655059695243835e-01 7.3997639119625092e-02 + <_> + + 0 -1 602 4.7965139150619507e-02 + + 4.4668558984994888e-02 -4.4584980607032776e-01 + <_> + + 0 -1 603 -2.0564019680023193e-01 + + -7.3254501819610596e-01 1.9955230876803398e-02 + <_> + + 0 -1 604 -1.6601709648966789e-03 + + 1.1633270233869553e-01 -1.5488509833812714e-01 + <_> + + 0 -1 605 8.6899623274803162e-02 + + -5.4107550531625748e-02 2.6952400803565979e-01 + <_> + + 0 -1 606 -1.1374129680916667e-03 + + -1.4314429461956024e-01 1.2444330006837845e-01 + <_> + + 0 -1 607 3.0976340174674988e-02 + + 2.9864860698580742e-02 -3.2607930898666382e-01 + <_> + + 0 -1 608 2.6978010311722755e-02 + + -4.5098248869180679e-02 3.6128848791122437e-01 + <_> + + 0 -1 609 1.9421820342540741e-01 + + 3.2255191355943680e-02 -6.8981701135635376e-01 + <_> + + 0 -1 610 -2.0443359389901161e-02 + + 2.9300108551979065e-01 -6.4483217895030975e-02 + <_> + + 0 -1 611 -4.0420450270175934e-02 + + -7.6823359727859497e-01 1.2281980365514755e-02 + <_> + + 0 -1 612 -1.2641429901123047e-02 + + -2.7573791146278381e-01 6.1901118606328964e-02 + <_> + + 0 -1 613 -3.9670299738645554e-02 + + 3.2828390598297119e-01 -2.0364999771118164e-02 + <_> + + 0 -1 614 2.0246729254722595e-02 + + -5.8393601328134537e-02 3.3060538768768311e-01 + <_> + + 0 -1 615 8.9611168950796127e-03 + + 9.0096317231655121e-02 -2.2343009710311890e-01 + <_> + + 0 -1 616 -8.3055719733238220e-03 + + 1.4175349473953247e-01 -1.2607260048389435e-01 + <_> + + 0 -1 617 -2.8248139642528258e-05 + + 9.4516962766647339e-02 -2.1810370683670044e-01 + <_> + + 0 -1 618 -5.1939398981630802e-03 + + 1.3304319977760315e-01 -1.3341580331325531e-01 + <_> + + 0 -1 619 1.1773110181093216e-01 + + 2.9586199671030045e-02 -2.4020829796791077e-01 + <_> + + 0 -1 620 6.7896701395511627e-02 + + 8.0913707613945007e-02 -2.3454460501670837e-01 + <_> + + 0 -1 621 -2.6683699339628220e-02 + + 3.0590981245040894e-01 -6.4152047038078308e-02 + <_> + + 0 -1 622 3.5058211069554090e-03 + + 8.9341968297958374e-02 -2.2773680090904236e-01 + <_> + + 0 -1 623 -6.5844372147694230e-04 + + 1.2458139657974243e-01 -9.1352440416812897e-02 + <_> + + 0 -1 624 7.2530400939285755e-03 + + -6.9285176694393158e-02 2.5482881069183350e-01 + <_> + + 0 -1 625 -2.8056129813194275e-02 + + -2.0867039263248444e-01 3.3539578318595886e-02 + <_> + + 0 -1 626 -5.1205180585384369e-02 + + -2.4107429385185242e-01 6.4439408481121063e-02 + <_> + + 0 -1 627 2.9234649613499641e-02 + + -5.0803840160369873e-02 3.6485049128532410e-01 + <_> + + 0 -1 628 -1.0219520330429077e-01 + + 4.0123480558395386e-01 -4.2902119457721710e-02 + <_> + + 0 -1 629 1.5104969963431358e-02 + + 1.0481490194797516e-01 -1.8472430109977722e-01 + <_> + + 0 -1 630 -1.2570650316774845e-02 + + -2.0540939271450043e-01 9.3013197183609009e-02 + <_> + + 0 -1 631 1.2253070250153542e-02 + + -5.9285100549459457e-02 2.3927310109138489e-01 + <_> + + 0 -1 632 -2.6166990399360657e-02 + + -6.9966787099838257e-01 2.4906709790229797e-02 + <_> + + 0 -1 633 7.0817661471664906e-03 + + 2.4173120036721230e-02 -5.5144792795181274e-01 + <_> + + 0 -1 634 2.1426850929856300e-02 + + 6.4168840646743774e-02 -2.5997900962829590e-01 + <_> + + 0 -1 635 1.8189709633588791e-02 + + 3.5838250070810318e-02 -1.8020580708980560e-01 + <_> + + 0 -1 636 1.7415799200534821e-02 + + -8.3862036466598511e-02 3.3338528871536255e-01 + <_> + + 0 -1 637 -1.4878029469400644e-03 + + 1.2078859657049179e-01 -1.2769320607185364e-01 + <_> + + 0 -1 638 7.5296638533473015e-03 + + -7.0014707744121552e-02 3.2181090116500854e-01 + <_> + + 0 -1 639 -6.1499018222093582e-02 + + 4.6469798684120178e-01 -1.0073710232973099e-02 + <_> + + 0 -1 640 -1.9133290334139019e-04 + + -1.4094290137290955e-01 1.3830110430717468e-01 + <_> + + 0 -1 641 -2.4422289803624153e-02 + + -2.5292310118675232e-01 6.7684173583984375e-02 + <_> + + 0 -1 642 -2.6136320829391479e-01 + + 3.4003540873527527e-01 -5.8462549000978470e-02 + <_> + + 0 -1 643 -7.6046779751777649e-02 + + -7.8514158725738525e-01 5.2708541043102741e-03 + <_> + + 0 -1 644 -3.0279329512268305e-03 + + 1.8527059257030487e-01 -9.0691961348056793e-02 + <_> + + 0 -1 645 -8.0219199880957603e-03 + + -1.2540580332279205e-01 3.0594889074563980e-02 + <_> + + 0 -1 646 -2.0705960690975189e-01 + + -7.5411921739578247e-01 2.1201130002737045e-02 + <_> + + 0 -1 647 -9.5322817564010620e-02 + + -2.9623070359230042e-01 1.3138709589838982e-02 + <_> + + 0 -1 648 9.5921624451875687e-03 + + 8.4324322640895844e-02 -2.1746580302715302e-01 + <_> + + 0 -1 649 -1.3089469633996487e-02 + + 9.3607500195503235e-02 -6.5754130482673645e-02 + <_> + + 0 -1 650 1.1732880026102066e-02 + + -8.0039046704769135e-02 2.3291939496994019e-01 + <_> + + 0 -1 651 1.5239049494266510e-01 + + 9.9299130961298943e-03 -6.5196067094802856e-01 + <_> + + 0 -1 652 -6.4591512084007263e-02 + + 2.8372219204902649e-01 -6.0058828443288803e-02 + <_> + + 0 -1 653 -5.5493030697107315e-02 + + 2.6659101247787476e-01 -1.0336419567465782e-02 + <_> + + 0 -1 654 -5.0287410616874695e-02 + + -6.9501471519470215e-01 2.7849879115819931e-02 + <_> + + 0 -1 655 -4.7794249653816223e-01 + + -9.2871952056884766e-01 5.9050112031400204e-03 + <_> + + 0 -1 656 -1.4398519881069660e-02 + + -4.5541068911552429e-01 3.6409981548786163e-02 + <_> + 67 + -7.4186658859252930e-01 + + <_> + + 0 -1 657 1.9511899445205927e-03 + + -2.4936990439891815e-01 1.4111639559268951e-01 + <_> + + 0 -1 658 -4.6634670346975327e-02 + + 3.7840589880943298e-01 -7.8401736915111542e-02 + <_> + + 0 -1 659 1.6193749383091927e-02 + + 7.5213313102722168e-02 -4.1991469264030457e-01 + <_> + + 0 -1 660 -1.2459639401640743e-04 + + 6.8576186895370483e-02 -1.7935420572757721e-01 + <_> + + 0 -1 661 7.3257791809737682e-03 + + 1.0322099924087524e-01 -2.6099279522895813e-01 + <_> + + 0 -1 662 -1.5020779756014235e-05 + + 7.3122598230838776e-02 -1.6718889772891998e-01 + <_> + + 0 -1 663 -3.4522008150815964e-02 + + -3.9326989650726318e-01 7.6727166771888733e-02 + <_> + + 0 -1 664 -8.2679510116577148e-02 + + -7.4677819013595581e-01 1.5530600212514400e-02 + <_> + + 0 -1 665 8.2162402570247650e-02 + + -6.9249503314495087e-02 3.7914600968360901e-01 + <_> + + 0 -1 666 3.4187830984592438e-02 + + 4.2608659714460373e-02 -1.5429890155792236e-01 + <_> + + 0 -1 667 -1.7891369760036469e-02 + + -3.0639570951461792e-01 7.8118398785591125e-02 + <_> + + 0 -1 668 3.3130999654531479e-02 + + -5.6183800101280212e-02 3.7405240535736084e-01 + <_> + + 0 -1 669 -5.7486710138618946e-03 + + 1.2490350008010864e-01 -2.0527860522270203e-01 + <_> + + 0 -1 670 3.3536829054355621e-02 + + -4.8344220966100693e-02 2.6724401116371155e-01 + <_> + + 0 -1 671 2.4723829701542854e-02 + + 8.3678968250751495e-02 -3.3730649948120117e-01 + <_> + + 0 -1 672 2.2355809342116117e-03 + + 1.0374590009450912e-01 -1.3071919977664948e-01 + <_> + + 0 -1 673 -2.4322168901562691e-03 + + 1.5645089745521545e-01 -1.3284459710121155e-01 + <_> + + 0 -1 674 2.5999119505286217e-02 + + -8.0343127250671387e-02 2.1610119938850403e-01 + <_> + + 0 -1 675 3.6965688195778057e-05 + + -1.7871010303497314e-01 1.0563120245933533e-01 + <_> + + 0 -1 676 -1.6291500627994537e-01 + + -6.9141697883605957e-01 2.2374730557203293e-02 + <_> + + 0 -1 677 1.3008140027523041e-01 + + -4.2769040912389755e-02 4.6373569965362549e-01 + <_> + + 0 -1 678 2.7658540755510330e-02 + + -3.7108600139617920e-02 3.8386580348014832e-01 + <_> + + 0 -1 679 -1.0020419955253601e-02 + + -2.6328051090240479e-01 7.4858680367469788e-02 + <_> + + 0 -1 680 -3.0459940433502197e-02 + + 3.2300901412963867e-01 -2.5858370587229729e-02 + <_> + + 0 -1 681 1.3251040363684297e-03 + + 1.4447669684886932e-01 -2.1082170307636261e-01 + <_> + + 0 -1 682 -2.7931010350584984e-02 + + 1.4374519884586334e-01 -1.6162300109863281e-01 + <_> + + 0 -1 683 -8.8642723858356476e-03 + + 2.3000620305538177e-01 -9.5095098018646240e-02 + <_> + + 0 -1 684 -1.2213969603180885e-02 + + -2.4646399915218353e-01 6.5522022545337677e-02 + <_> + + 0 -1 685 -4.8737529665231705e-02 + + -7.9127711057662964e-01 2.5416409596800804e-02 + <_> + + 0 -1 686 6.1185289174318314e-02 + + -1.2226430408190936e-04 -9.0545868873596191e-01 + <_> + + 0 -1 687 2.6453679427504539e-02 + + 2.6562800630927086e-02 -6.3954341411590576e-01 + <_> + + 0 -1 688 8.8589917868375778e-03 + + 5.4145850241184235e-02 -2.1601280570030212e-01 + <_> + + 0 -1 689 3.4847941249608994e-02 + + -4.5749358832836151e-02 4.3935400247573853e-01 + <_> + + 0 -1 690 -1.4598210155963898e-01 + + -5.5561769008636475e-01 9.5249973237514496e-03 + <_> + + 0 -1 691 -5.0456568598747253e-02 + + -7.5287848711013794e-01 2.0214710384607315e-02 + <_> + + 0 -1 692 -8.5443779826164246e-02 + + -1. -1.3681349810212851e-03 + <_> + + 0 -1 693 1.3248980045318604e-02 + + 6.3400700688362122e-02 -2.5411811470985413e-01 + <_> + + 0 -1 694 -6.5935611724853516e-01 + + -1. 7.7378489077091217e-03 + <_> + + 0 -1 695 5.0879311747848988e-03 + + -8.3207741379737854e-02 1.8876290321350098e-01 + <_> + + 0 -1 696 -3.4071630798280239e-03 + + 1.4578290283679962e-01 -9.1960333287715912e-02 + <_> + + 0 -1 697 -2.1656269207596779e-02 + + -6.5364891290664673e-01 2.7129750698804855e-02 + <_> + + 0 -1 698 9.4357347115874290e-03 + + 6.4360111951828003e-02 -2.3885479569435120e-01 + <_> + + 0 -1 699 -7.5177568942308426e-03 + + 2.4519060552120209e-01 -6.8221837282180786e-02 + <_> + + 0 -1 700 1.6067629680037498e-02 + + 7.6069780625402927e-03 -3.1668719649314880e-01 + <_> + + 0 -1 701 -1.8057749839499593e-03 + + 1.2710370123386383e-01 -1.2145719677209854e-01 + <_> + + 0 -1 702 -4.4154901057481766e-02 + + -4.8579609394073486e-01 2.3444859310984612e-02 + <_> + + 0 -1 703 7.5462698005139828e-03 + + 6.8430766463279724e-02 -2.3316520452499390e-01 + <_> + + 0 -1 704 1.0868260264396667e-01 + + -4.1663911193609238e-02 3.9452219009399414e-01 + <_> + + 0 -1 705 6.1248701810836792e-01 + + 2.0702170208096504e-02 -9.8494791984558105e-01 + <_> + + 0 -1 706 4.9828290939331055e-02 + + 2.7304550167173147e-03 -4.0181699395179749e-01 + <_> + + 0 -1 707 -7.2768718004226685e-02 + + 3.2676479220390320e-01 -4.9144338816404343e-02 + <_> + + 0 -1 708 2.4314310401678085e-02 + + -7.8135710209608078e-03 5.8223301172256470e-01 + <_> + + 0 -1 709 -1.7177179688587785e-04 + + 8.1669911742210388e-02 -2.0376220345497131e-01 + <_> + + 0 -1 710 -4.0095269680023193e-02 + + 5.4681521654129028e-01 -1.7179539427161217e-02 + <_> + + 0 -1 711 -8.9634567499160767e-02 + + -8.1614011526107788e-01 2.1283889189362526e-02 + <_> + + 0 -1 712 1.8692140281200409e-01 + + 8.3980746567249298e-03 -6.0185301303863525e-01 + <_> + + 0 -1 713 -4.3038379400968552e-02 + + -8.7898987531661987e-01 1.4930729754269123e-02 + <_> + + 0 -1 714 -1.8602630007080734e-04 + + 4.0156241506338120e-02 -8.2604438066482544e-02 + <_> + + 0 -1 715 -1.4392189914360642e-03 + + -1.7102399468421936e-01 9.1203540563583374e-02 + <_> + + 0 -1 716 4.2160619050264359e-02 + + -3.5861019045114517e-02 1.5174309909343719e-01 + <_> + + 0 -1 717 7.5991409830749035e-03 + + 1.0874529927968979e-01 -1.6147160530090332e-01 + <_> + + 0 -1 718 -5.7539329864084721e-03 + + -2.5677061080932617e-01 5.8457151055335999e-02 + <_> + + 0 -1 719 -2.7736749500036240e-02 + + 2.2325170040130615e-01 -7.4071511626243591e-02 + <_> + + 0 -1 720 -2.5676110759377480e-02 + + 1.8831080198287964e-01 -5.3860381245613098e-02 + <_> + + 0 -1 721 1.5890730544924736e-02 + + 5.1709540188312531e-02 -3.8476571440696716e-01 + <_> + + 0 -1 722 -8.6374267935752869e-02 + + -5.5680698156356812e-01 9.4922119751572609e-03 + <_> + + 0 -1 723 1.9480630289763212e-03 + + -1.0807219892740250e-01 1.4771680533885956e-01 + <_> + 88 + -8.3640968799591064e-01 + + <_> + + 0 -1 724 -6.8531660363078117e-03 + + 2.8935509920120239e-01 -2.7689141035079956e-01 + <_> + + 0 -1 725 -6.9217637181282043e-02 + + 3.4909790754318237e-01 -4.9741089344024658e-02 + <_> + + 0 -1 726 -1.3092979788780212e-01 + + 4.2791560292243958e-01 -9.6156008541584015e-02 + <_> + + 0 -1 727 -2.9759139579255134e-05 + + 1.1675780266523361e-01 -2.4678389728069305e-01 + <_> + + 0 -1 728 -4.7100789844989777e-02 + + 3.7259110808372498e-01 -5.9072919189929962e-02 + <_> + + 0 -1 729 4.4124510139226913e-02 + + 7.8904099762439728e-02 -2.5528541207313538e-01 + <_> + + 0 -1 730 4.2540309950709343e-03 + + -2.3612380027770996e-01 1.2856779992580414e-01 + <_> + + 0 -1 731 -1.0833570268005133e-03 + + 1.4347310364246368e-01 -1.4203630387783051e-01 + <_> + + 0 -1 732 5.9925230743829161e-05 + + -1.9927270710468292e-01 8.8502913713455200e-02 + <_> + + 0 -1 733 -7.3021486401557922e-02 + + -8.0666261911392212e-01 3.2041858881711960e-02 + <_> + + 0 -1 734 7.9495050013065338e-03 + + -6.5878443419933319e-02 2.7071261405944824e-01 + <_> + + 0 -1 735 -3.3911041100509465e-04 + + 1.3490739464759827e-01 -1.3354760408401489e-01 + <_> + + 0 -1 736 -2.6010179892182350e-02 + + -2.8074580430984497e-01 7.7902659773826599e-02 + <_> + + 0 -1 737 -3.1153090298175812e-02 + + 2.7022659778594971e-01 -2.6994340121746063e-02 + <_> + + 0 -1 738 1.0946249589323997e-02 + + -1.5993720293045044e-01 1.0350699722766876e-01 + <_> + + 0 -1 739 7.3101207613945007e-02 + + -4.1365791112184525e-03 5.2339828014373779e-01 + <_> + + 0 -1 740 3.0207149684429169e-02 + + -4.9229420721530914e-02 4.2848989367485046e-01 + <_> + + 0 -1 741 6.4985260367393494e-02 + + 3.9118612185120583e-03 -1.0003379583358765e+00 + <_> + + 0 -1 742 -2.9119249433279037e-02 + + -7.7025991678237915e-01 2.3930810391902924e-02 + <_> + + 0 -1 743 5.0458308309316635e-02 + + 6.9283558987081051e-03 -5.1854777336120605e-01 + <_> + + 0 -1 744 -3.8890179246664047e-02 + + -4.8176848888397217e-01 3.0270289629697800e-02 + <_> + + 0 -1 745 5.8319371193647385e-02 + + -2.2101389244198799e-02 2.8393501043319702e-01 + <_> + + 0 -1 746 -1.0803690180182457e-02 + + 1.2842060625553131e-01 -1.3849779963493347e-01 + <_> + + 0 -1 747 9.4525264576077461e-03 + + -5.7194419205188751e-02 1.7759050428867340e-01 + <_> + + 0 -1 748 1.5229170210659504e-02 + + 1.0501170158386230e-01 -2.0518389344215393e-01 + <_> + + 0 -1 749 -8.9435698464512825e-04 + + 6.8668253719806671e-02 -1.4666010439395905e-01 + <_> + + 0 -1 750 -1.8322499468922615e-02 + + -2.3613719642162323e-01 8.3538331091403961e-02 + <_> + + 0 -1 751 2.5474189314991236e-03 + + -8.4731526672840118e-02 1.7211520671844482e-01 + <_> + + 0 -1 752 -1.4951790217310190e-03 + + 1.8642990291118622e-01 -1.2753330171108246e-01 + <_> + + 0 -1 753 2.4796150624752045e-02 + + 3.2923560589551926e-02 -4.0954729914665222e-01 + <_> + + 0 -1 754 -2.8976860921829939e-03 + + 1.4480039477348328e-01 -1.0404679924249649e-01 + <_> + + 0 -1 755 7.0361169055104256e-03 + + -6.7916557192802429e-02 2.1544350683689117e-01 + <_> + + 0 -1 756 -1.1870389804244041e-02 + + -2.5537449121475220e-01 7.4443407356739044e-02 + <_> + + 0 -1 757 2.4765899870544672e-03 + + 6.8313367664813995e-02 -1.6111320257186890e-01 + <_> + + 0 -1 758 2.1284550428390503e-02 + + 3.7090871483087540e-02 -4.6916520595550537e-01 + <_> + + 0 -1 759 -1.0369479656219482e-02 + + 1.0807839781045914e-01 -6.0489870607852936e-02 + <_> + + 0 -1 760 1.0732480324804783e-02 + + -5.8582380414009094e-02 3.1958609819412231e-01 + <_> + + 0 -1 761 -2.3235160112380981e-01 + + -1. 8.2511743530631065e-03 + <_> + + 0 -1 762 -6.0572529037017375e-05 + + 8.0201767385005951e-02 -2.3583050072193146e-01 + <_> + + 0 -1 763 -2.7367009315639734e-03 + + 1.5369090437889099e-01 -7.8800879418849945e-02 + <_> + + 0 -1 764 3.1168010085821152e-02 + + -4.1852951049804688e-02 3.7374469637870789e-01 + <_> + + 0 -1 765 4.5415129512548447e-02 + + 6.6594500094652176e-03 -9.9975287914276123e-01 + <_> + + 0 -1 766 -1.3742819428443909e-03 + + 1.0587850213050842e-01 -1.9234779477119446e-01 + <_> + + 0 -1 767 3.0089360661804676e-03 + + 9.4038642942905426e-02 -1.5442730486392975e-01 + <_> + + 0 -1 768 -7.1071386337280273e-02 + + -5.4955267906188965e-01 2.5523129850625992e-02 + <_> + + 0 -1 769 1.0958979837596416e-03 + + -6.1327658593654633e-02 5.7677619159221649e-02 + <_> + + 0 -1 770 -2.3706799373030663e-02 + + 2.9486098885536194e-01 -6.6553473472595215e-02 + <_> + + 0 -1 771 6.8882037885487080e-03 + + 7.3861703276634216e-02 -2.5727730989456177e-01 + <_> + + 0 -1 772 -4.9158040434122086e-02 + + 3.2406309247016907e-01 -5.2785839885473251e-02 + <_> + + 0 -1 773 7.1369417011737823e-02 + + 1.3209920376539230e-02 -7.4821132421493530e-01 + <_> + + 0 -1 774 -8.4517486393451691e-03 + + -2.0652799308300018e-01 9.3139596283435822e-02 + <_> + + 0 -1 775 -1.5554410219192505e-01 + + -5.0736141204833984e-01 1.1575420387089252e-02 + <_> + + 0 -1 776 -4.5976821333169937e-02 + + 3.3433321118354797e-01 -5.6558281183242798e-02 + <_> + + 0 -1 777 1.7900219187140465e-02 + + 3.4091990441083908e-02 -2.8565031290054321e-01 + <_> + + 0 -1 778 6.7351139150559902e-03 + + -6.6538818180561066e-02 2.3322120308876038e-01 + <_> + + 0 -1 779 6.4544100314378738e-03 + + 4.7224499285221100e-02 -1.4422370493412018e-01 + <_> + + 0 -1 780 -1.1029049754142761e-02 + + -2.6442399621009827e-01 6.2542691826820374e-02 + <_> + + 0 -1 781 -3.3727919217199087e-03 + + 1.2575919926166534e-01 -6.8357646465301514e-02 + <_> + + 0 -1 782 -2.2960419300943613e-03 + + -1.5573309361934662e-01 9.4681970775127411e-02 + <_> + + 0 -1 783 -7.9503163695335388e-02 + + -3.8246139883995056e-01 1.7201259732246399e-02 + <_> + + 0 -1 784 -2.5240880250930786e-01 + + 3.0139809846878052e-01 -5.8942809700965881e-02 + <_> + + 0 -1 785 3.6313079297542572e-02 + + 2.1105870604515076e-02 -2.0811690390110016e-01 + <_> + + 0 -1 786 6.8737521767616272e-02 + + -3.2400298863649368e-02 5.1345300674438477e-01 + <_> + + 0 -1 787 -2.1814550459384918e-01 + + -7.0093291997909546e-01 1.6260979697108269e-02 + <_> + + 0 -1 788 -1.9770899415016174e-01 + + -6.7817360162734985e-01 1.7937550321221352e-02 + <_> + + 0 -1 789 -1.0131119936704636e-01 + + 3.6470630764961243e-01 -4.9969438463449478e-02 + <_> + + 0 -1 790 5.4146698676049709e-03 + + 6.6086590290069580e-02 -2.3327399790287018e-01 + <_> + + 0 -1 791 -4.0590178221464157e-02 + + 2.1464720368385315e-01 -4.3033309280872345e-02 + <_> + + 0 -1 792 -1.3324919855222106e-03 + + 1.2975679337978363e-01 -1.2794280052185059e-01 + <_> + + 0 -1 793 5.7570589706301689e-03 + + 4.3469998985528946e-02 -1.1977300047874451e-01 + <_> + + 0 -1 794 -4.0872758254408836e-03 + + -2.0180100202560425e-01 9.2624872922897339e-02 + <_> + + 0 -1 795 2.1345280110836029e-02 + + -2.6310870423913002e-02 2.9142528772354126e-01 + <_> + + 0 -1 796 -2.4241849314421415e-03 + + 1.7131569981575012e-01 -1.1723010241985321e-01 + <_> + + 0 -1 797 6.0677550733089447e-02 + + -4.8347217962145805e-03 5.6577122211456299e-01 + <_> + + 0 -1 798 3.1573011074215174e-04 + + -1.1499550193548203e-01 1.3094860315322876e-01 + <_> + + 0 -1 799 -1.4639530563727021e-03 + + 1.0708429664373398e-01 -8.2188747823238373e-02 + <_> + + 0 -1 800 -8.1629276275634766e-02 + + -7.0090162754058838e-01 2.1318640559911728e-02 + <_> + + 0 -1 801 -2.2923630604054779e-04 + + 5.2449010312557220e-02 -5.7273399084806442e-02 + <_> + + 0 -1 802 8.6732655763626099e-03 + + -1.0944409668445587e-01 1.4530800282955170e-01 + <_> + + 0 -1 803 -9.5603411318734288e-04 + + 5.4728660732507706e-02 -7.6677009463310242e-02 + <_> + + 0 -1 804 -5.6814689189195633e-02 + + -7.2493737936019897e-01 1.7791330814361572e-02 + <_> + + 0 -1 805 6.4268838614225388e-03 + + -3.7768699228763580e-02 8.3454750478267670e-02 + <_> + + 0 -1 806 5.2451258525252342e-03 + + -7.5806751847267151e-02 2.1549069881439209e-01 + <_> + + 0 -1 807 6.7577441222965717e-03 + + 7.7163867652416229e-02 -2.4957199394702911e-01 + <_> + + 0 -1 808 -5.7494179345667362e-03 + + 1.4245559275150299e-01 -1.2740920484066010e-01 + <_> + + 0 -1 809 -6.7760650999844074e-03 + + -2.3316009342670441e-01 3.9975211024284363e-02 + <_> + + 0 -1 810 3.5247279447503388e-04 + + -1.3083159923553467e-01 1.1577410250902176e-01 + <_> + + 0 -1 811 1.4523849822580814e-03 + + -9.2724457383155823e-02 6.5486960113048553e-02 + <_> + 80 + -7.2322398424148560e-01 + + <_> + + 0 -1 812 -3.1163799762725830e-01 + + 3.8062000274658203e-01 -1.1115840077400208e-01 + <_> + + 0 -1 813 -3.0338248610496521e-01 + + 5.1236808300018311e-01 -5.0459731370210648e-02 + <_> + + 0 -1 814 -1.0945170186460018e-02 + + -2.2292029857635498e-01 1.0548099875450134e-01 + <_> + + 0 -1 815 -2.8011079877614975e-02 + + 7.0687793195247650e-02 -8.6478509008884430e-02 + <_> + + 0 -1 816 -5.2256159484386444e-02 + + 5.7856267690658569e-01 -8.7944902479648590e-03 + <_> + + 0 -1 817 -5.9455442242324352e-03 + + -2.5641980767250061e-01 9.4584532082080841e-02 + <_> + + 0 -1 818 2.5594399776309729e-03 + + -2.5718480348587036e-01 1.2882429361343384e-01 + <_> + + 0 -1 819 -1.2099260091781616e-01 + + -1.2293220311403275e-01 2.5829430669546127e-02 + <_> + + 0 -1 820 -4.4208219647407532e-01 + + -7.4546551704406738e-01 4.2586710304021835e-02 + <_> + + 0 -1 821 -6.6842641681432724e-03 + + 1.3515649735927582e-01 -1.6409300267696381e-01 + <_> + + 0 -1 822 9.8270708695054054e-03 + + -8.0305352807044983e-02 2.9853299260139465e-01 + <_> + + 0 -1 823 5.8638598769903183e-02 + + 2.7556419372558594e-02 -8.2242500782012939e-01 + <_> + + 0 -1 824 -3.0546959023922682e-03 + + -1.9292749464511871e-01 1.1082729697227478e-01 + <_> + + 0 -1 825 -7.3340102098882198e-03 + + -2.4307939410209656e-01 6.6744603216648102e-02 + <_> + + 0 -1 826 -1.0526229627430439e-02 + + -3.1136021018028259e-01 6.2850847840309143e-02 + <_> + + 0 -1 827 1.0481160134077072e-01 + + 1.2621720321476460e-02 -6.7376089096069336e-01 + <_> + + 0 -1 828 9.4269379042088985e-04 + + -1.7071670293807983e-01 1.0280650109052658e-01 + <_> + + 0 -1 829 8.4397383034229279e-03 + + -5.3014568984508514e-02 8.8599078357219696e-02 + <_> + + 0 -1 830 -3.0551670119166374e-02 + + 3.5264891386032104e-01 -6.9148473441600800e-02 + <_> + + 0 -1 831 -4.9112379550933838e-02 + + -5.8219379186630249e-01 1.4043220318853855e-02 + <_> + + 0 -1 832 5.8098030276596546e-03 + + 7.0872433483600616e-02 -2.5362819433212280e-01 + <_> + + 0 -1 833 2.5541070848703384e-02 + + -4.5136939734220505e-02 4.0674450993537903e-01 + <_> + + 0 -1 834 -4.8711288720369339e-02 + + -7.0240157842636108e-01 2.4317869916558266e-02 + <_> + + 0 -1 835 -3.2624390721321106e-01 + + -5.0619047880172729e-01 5.5445302277803421e-03 + <_> + + 0 -1 836 -1.8120040476787835e-04 + + 1.3132590055465698e-01 -1.2139549851417542e-01 + <_> + + 0 -1 837 -1.2980769574642181e-01 + + -6.8208992481231689e-01 1.6414549201726913e-02 + <_> + + 0 -1 838 8.3528067916631699e-03 + + 3.0040390789508820e-02 -5.0909137725830078e-01 + <_> + + 0 -1 839 5.4547088220715523e-03 + + -8.2402072846889496e-02 1.8007980287075043e-01 + <_> + + 0 -1 840 -3.1699541211128235e-01 + + -8.6613011360168457e-01 1.8229139968752861e-02 + <_> + + 0 -1 841 5.8424862800166011e-04 + + 4.2409729212522507e-02 -1.3118089735507965e-01 + <_> + + 0 -1 842 -9.7046848386526108e-03 + + -2.7432689070701599e-01 5.5920429527759552e-02 + <_> + + 0 -1 843 1.6834320500493050e-02 + + -8.3306416869163513e-02 6.7792758345603943e-02 + <_> + + 0 -1 844 -3.0685380101203918e-02 + + 4.2126908898353577e-01 -4.5339331030845642e-02 + <_> + + 0 -1 845 4.1394919157028198e-02 + + 1.9971750676631927e-02 -1.9722190499305725e-01 + <_> + + 0 -1 846 3.4910149872303009e-02 + + -5.3826879709959030e-02 3.5040271282196045e-01 + <_> + + 0 -1 847 -5.2495039999485016e-03 + + -1.1363890022039413e-01 5.5080570280551910e-02 + <_> + + 0 -1 848 1.2045619636774063e-01 + + 1.7451599240303040e-02 -9.3958032131195068e-01 + <_> + + 0 -1 849 4.2130421847105026e-02 + + -1.4343280345201492e-02 6.0059851408004761e-01 + <_> + + 0 -1 850 1.9120849668979645e-02 + + 8.5864506661891937e-02 -1.8586499989032745e-01 + <_> + + 0 -1 851 8.4470612928271294e-03 + + -6.9452181458473206e-02 7.3461420834064484e-02 + <_> + + 0 -1 852 1.7696130089461803e-03 + + -7.9996660351753235e-02 1.9479809701442719e-01 + <_> + + 0 -1 853 5.7995948940515518e-02 + + 2.7633000165224075e-02 -5.4097008705139160e-01 + <_> + + 0 -1 854 -7.9884022474288940e-02 + + -5.4307681322097778e-01 2.3219829425215721e-02 + <_> + + 0 -1 855 6.6576242446899414e-02 + + 6.8416809663176537e-03 -8.1224560737609863e-01 + <_> + + 0 -1 856 6.4169943332672119e-02 + + -2.4846689775586128e-02 6.0798132419586182e-01 + <_> + + 0 -1 857 -2.9404780268669128e-01 + + -1. 4.6440181322395802e-03 + <_> + + 0 -1 858 -9.5727723091840744e-03 + + -1.4157359302043915e-01 1.0121650248765945e-01 + <_> + + 0 -1 859 -2.3574449121952057e-02 + + 1.1715450137853622e-01 -1.3184690475463867e-01 + <_> + + 0 -1 860 -5.1256217993795872e-03 + + -1.7623250186443329e-01 1.0177359730005264e-01 + <_> + + 0 -1 861 9.7663059830665588e-02 + + 4.4896239414811134e-03 -8.0415552854537964e-01 + <_> + + 0 -1 862 3.2088689506053925e-02 + + -5.8048430830240250e-02 3.0194890499114990e-01 + <_> + + 0 -1 863 -8.6517207324504852e-02 + + -7.5529891252517700e-01 2.8089359402656555e-03 + <_> + + 0 -1 864 -2.8540970757603645e-02 + + -3.5085019469261169e-01 4.4081591069698334e-02 + <_> + + 0 -1 865 -5.3844689391553402e-03 + + 9.2348903417587280e-02 -7.0033848285675049e-02 + <_> + + 0 -1 866 -2.2280439734458923e-02 + + 2.4949419498443604e-01 -7.0658676326274872e-02 + <_> + + 0 -1 867 5.1025422289967537e-03 + + 6.0899689793586731e-02 -1.5473949909210205e-01 + <_> + + 0 -1 868 3.7133800797164440e-03 + + -8.7124302983283997e-02 1.7195260524749756e-01 + <_> + + 0 -1 869 -4.0405280888080597e-03 + + 1.5054519474506378e-01 -9.9685050547122955e-02 + <_> + + 0 -1 870 4.8944901674985886e-02 + + 2.0637780427932739e-02 -7.1113997697830200e-01 + <_> + + 0 -1 871 -4.0832208469510078e-03 + + -1.6104909777641296e-01 8.8675007224082947e-02 + <_> + + 0 -1 872 -2.2145630791783333e-03 + + -2.1901540458202362e-01 1.0045240074396133e-01 + <_> + + 0 -1 873 -6.4257450401782990e-02 + + -5.7694709300994873e-01 1.0253880172967911e-02 + <_> + + 0 -1 874 1.1895420029759407e-02 + + -7.0560596883296967e-02 2.6147291064262390e-01 + <_> + + 0 -1 875 -4.4988259673118591e-02 + + -6.8440282344818115e-01 9.9674779921770096e-03 + <_> + + 0 -1 876 6.3484339043498039e-03 + + 8.4738656878471375e-02 -1.6299989819526672e-01 + <_> + + 0 -1 877 -5.6587439030408859e-02 + + 4.8960050940513611e-01 -1.9641140475869179e-02 + <_> + + 0 -1 878 3.5853400826454163e-02 + + 1.9695440307259560e-02 -6.8108338117599487e-01 + <_> + + 0 -1 879 -4.5450981706380844e-03 + + 6.9072656333446503e-02 -9.1276638209819794e-02 + <_> + + 0 -1 880 1.0608570277690887e-01 + + -4.9993991851806641e-02 3.2139471173286438e-01 + <_> + + 0 -1 881 -4.5924410223960876e-02 + + -8.2744181156158447e-01 1.2149419635534286e-02 + <_> + + 0 -1 882 -1.2273239903151989e-02 + + -3.0669289827346802e-01 5.1693398505449295e-02 + <_> + + 0 -1 883 8.0667391419410706e-02 + + 2.1730009466409683e-03 -1.0002529621124268e+00 + <_> + + 0 -1 884 -2.3044859990477562e-02 + + 4.5085349678993225e-01 -3.6273978650569916e-02 + <_> + + 0 -1 885 1.8702909350395203e-02 + + 4.6945460140705109e-02 -2.1796269714832306e-01 + <_> + + 0 -1 886 -9.6820026636123657e-02 + + 4.0398910641670227e-01 -3.7819091230630875e-02 + <_> + + 0 -1 887 6.0525789856910706e-02 + + 1.5727160498499870e-02 -4.5661678910255432e-01 + <_> + + 0 -1 888 1.0418569669127464e-02 + + 6.2726646661758423e-02 -2.4441179633140564e-01 + <_> + + 0 -1 889 1.0726209729909897e-02 + + -7.1968853473663330e-02 2.2099970281124115e-01 + <_> + + 0 -1 890 -2.7160700410604477e-03 + + 1.2882749736309052e-01 -1.4629630744457245e-01 + <_> + + 0 -1 891 8.5867568850517273e-03 + + -6.8645663559436798e-02 2.5840589404106140e-01 + <_> + 103 + -7.6886308193206787e-01 + + <_> + + 0 -1 892 -2.5851670652627945e-02 + + 1.8011799454689026e-01 -2.4745930731296539e-01 + <_> + + 0 -1 893 1.4054620265960693e-01 + + -5.1319289952516556e-02 4.0766909718513489e-01 + <_> + + 0 -1 894 -2.7255079150199890e-01 + + 4.9941259622573853e-01 -4.5033931732177734e-02 + <_> + + 0 -1 895 1.3978329952806234e-03 + + 5.3600508719682693e-02 -2.1793389320373535e-01 + <_> + + 0 -1 896 -3.5059880465269089e-02 + + -2.9943290352821350e-01 8.9991323649883270e-02 + <_> + + 0 -1 897 -3.2894399482756853e-03 + + 1.0264199972152710e-01 -9.4711251556873322e-02 + <_> + + 0 -1 898 1.8242290616035461e-01 + + 2.5626670569181442e-02 -6.8765729665756226e-01 + <_> + + 0 -1 899 -7.8741081058979034e-02 + + 1.0810419917106628e-01 -1.4497520029544830e-01 + <_> + + 0 -1 900 1.3945129700005054e-02 + + -7.1371912956237793e-02 3.1315749883651733e-01 + <_> + + 0 -1 901 4.4680278748273849e-02 + + -3.0446149408817291e-02 3.9263629913330078e-01 + <_> + + 0 -1 902 -2.6441770605742931e-03 + + 1.1596699804067612e-01 -1.7800450325012207e-01 + <_> + + 0 -1 903 -5.1071979105472565e-03 + + -1.1739940196275711e-01 6.7823447287082672e-02 + <_> + + 0 -1 904 -3.2582178711891174e-02 + + -5.9129017591476440e-01 3.3352021127939224e-02 + <_> + + 0 -1 905 -2.7755839750170708e-02 + + -7.0649361610412598e-01 1.6761489212512970e-02 + <_> + + 0 -1 906 -6.0038521041860804e-05 + + 7.3832668364048004e-02 -2.2933359444141388e-01 + <_> + + 0 -1 907 3.0506180599331856e-02 + + -3.8056060671806335e-02 4.4115358591079712e-01 + <_> + + 0 -1 908 -6.2056961469352245e-03 + + -1.7757239937782288e-01 9.3707472085952759e-02 + <_> + + 0 -1 909 -8.0766230821609497e-03 + + -2.0256699621677399e-01 7.4059642851352692e-02 + <_> + + 0 -1 910 -3.3209908753633499e-02 + + 4.6372228860855103e-01 -3.4903008490800858e-02 + <_> + + 0 -1 911 3.5530608147382736e-02 + + -3.1679518520832062e-02 4.5202499628067017e-01 + <_> + + 0 -1 912 1.6297640278935432e-02 + + 4.4189039617776871e-02 -3.4845370054244995e-01 + <_> + + 0 -1 913 9.9985357373952866e-03 + + -4.8255320638418198e-02 1.6078050434589386e-01 + <_> + + 0 -1 914 -5.2390778437256813e-03 + + 2.3236599564552307e-01 -7.6032742857933044e-02 + <_> + + 0 -1 915 -3.2508899457752705e-03 + + 5.4369390010833740e-02 -9.1040253639221191e-02 + <_> + + 0 -1 916 5.5640790611505508e-02 + + -3.8811128586530685e-02 4.2034021019935608e-01 + <_> + + 0 -1 917 3.3998981118202209e-02 + + 2.2251330316066742e-02 -3.5615360736846924e-01 + <_> + + 0 -1 918 -4.3103890493512154e-03 + + 1.1287429928779602e-01 -1.7630730569362640e-01 + <_> + + 0 -1 919 -7.9246461391448975e-03 + + -1.0992339998483658e-01 3.5099629312753677e-02 + <_> + + 0 -1 920 4.4273380190134048e-02 + + 2.8094569221138954e-02 -6.0921418666839600e-01 + <_> + + 0 -1 921 5.9907328337430954e-02 + + 9.7544339951127768e-04 -9.0523207187652588e-01 + <_> + + 0 -1 922 3.3378869295120239e-02 + + 1.7723279073834419e-02 -8.5254609584808350e-01 + <_> + + 0 -1 923 1.4694170095026493e-02 + + -4.9031510949134827e-02 2.7998331189155579e-01 + <_> + + 0 -1 924 -5.3877499885857105e-03 + + 1.8219049274921417e-01 -8.2382522523403168e-02 + <_> + + 0 -1 925 -1.7976889386773109e-02 + + -1.9384689629077911e-01 8.4984757006168365e-02 + <_> + + 0 -1 926 -4.4651641510426998e-03 + + 1.7632910609245300e-01 -9.5075771212577820e-02 + <_> + + 0 -1 927 6.9372296333312988e-02 + + 3.1770321074873209e-03 -6.7554402351379395e-01 + <_> + + 0 -1 928 -1.7002269625663757e-02 + + -3.3827948570251465e-01 4.4731728732585907e-02 + <_> + + 0 -1 929 1.7274240031838417e-02 + + -2.4769710376858711e-02 1.1852029711008072e-01 + <_> + + 0 -1 930 4.0388729423284531e-02 + + -3.2967679202556610e-02 4.7323140501976013e-01 + <_> + + 0 -1 931 1.4215400442481041e-02 + + 2.9846860095858574e-02 -4.4157060980796814e-01 + <_> + + 0 -1 932 4.1627719998359680e-02 + + -4.5953918248414993e-02 3.2978388667106628e-01 + <_> + + 0 -1 933 -1.7416840419173241e-03 + + 8.7286308407783508e-02 -8.8862203061580658e-02 + <_> + + 0 -1 934 -9.8077040165662766e-03 + + -2.1026679873466492e-01 7.7401876449584961e-02 + <_> + + 0 -1 935 2.1836649626493454e-02 + + 4.3211769312620163e-02 -1.5330420434474945e-01 + <_> + + 0 -1 936 -7.0743098855018616e-02 + + 3.3019039034843445e-01 -5.2747949957847595e-02 + <_> + + 0 -1 937 -1.1181020177900791e-02 + + -1.1493939906358719e-01 2.7858460322022438e-02 + <_> + + 0 -1 938 -1.4623560011386871e-02 + + 3.2327070832252502e-01 -4.4166058301925659e-02 + <_> + + 0 -1 939 -9.6702557057142258e-03 + + -1.8157319724559784e-01 3.6154530942440033e-02 + <_> + + 0 -1 940 8.3439601585268974e-03 + + -5.2473910152912140e-02 2.7444839477539062e-01 + <_> + + 0 -1 941 2.2970559075474739e-02 + + 3.4930050373077393e-02 -1.5773670375347137e-01 + <_> + + 0 -1 942 -8.2734245806932449e-03 + + 1.1612790077924728e-01 -1.1965770274400711e-01 + <_> + + 0 -1 943 8.7074404582381248e-03 + + -4.0829788893461227e-02 1.0481330007314682e-01 + <_> + + 0 -1 944 -1.8825819715857506e-02 + + -3.8794550299644470e-01 4.7350700944662094e-02 + <_> + + 0 -1 945 -7.2092940099537373e-03 + + -1.9886960089206696e-01 7.5952850282192230e-02 + <_> + + 0 -1 946 1.6543369565624744e-04 + + -1.0674829781055450e-01 1.5510599315166473e-01 + <_> + + 0 -1 947 8.9294537901878357e-03 + + -6.7059643566608429e-02 9.0206786990165710e-02 + <_> + + 0 -1 948 3.1991640571504831e-03 + + 7.4445746839046478e-02 -1.9682839512825012e-01 + <_> + + 0 -1 949 -1.1280879698460922e-04 + + 7.9703390598297119e-02 -1.3661189377307892e-01 + <_> + + 0 -1 950 -6.9613799452781677e-02 + + -2.1010529994964600e-01 6.5771616995334625e-02 + <_> + + 0 -1 951 -2.6066679507493973e-02 + + 2.8696510195732117e-01 -5.7495791465044022e-02 + <_> + + 0 -1 952 1.2050740420818329e-02 + + -4.6820510178804398e-02 2.7994769811630249e-01 + <_> + + 0 -1 953 -3.9625849574804306e-02 + + -3.7054508924484253e-01 1.1476139537990093e-02 + <_> + + 0 -1 954 -2.7379901148378849e-03 + + 9.4371132552623749e-02 -1.6203230619430542e-01 + <_> + + 0 -1 955 -6.5262563526630402e-02 + + -6.7808389663696289e-01 1.9430469721555710e-02 + <_> + + 0 -1 956 2.3191619664430618e-02 + + 2.6134310290217400e-02 -4.6664249897003174e-01 + <_> + + 0 -1 957 4.7741930931806564e-02 + + -2.5291189551353455e-02 2.9092490673065186e-01 + <_> + + 0 -1 958 -1.2830020487308502e-01 + + -8.7187117338180542e-01 1.3883540406823158e-02 + <_> + + 0 -1 959 -4.2689260095357895e-02 + + -6.7644822597503662e-01 6.8771280348300934e-03 + <_> + + 0 -1 960 6.2811248935759068e-03 + + -6.4803749322891235e-02 2.0994420349597931e-01 + <_> + + 0 -1 961 2.7532080188393593e-02 + + 1.5366540290415287e-02 -2.1457369625568390e-01 + <_> + + 0 -1 962 -3.4494648571126163e-04 + + 1.1829499900341034e-01 -1.0641119629144669e-01 + <_> + + 0 -1 963 -3.2187011092901230e-02 + + 2.0676319301128387e-01 -2.7804749086499214e-02 + <_> + + 0 -1 964 -2.4451729841530323e-03 + + -1.8970219790935516e-01 7.6612837612628937e-02 + <_> + + 0 -1 965 3.9631120860576630e-02 + + 1.1457280255854130e-02 -4.4112280011177063e-01 + <_> + + 0 -1 966 -9.0082110837101936e-03 + + -2.0329099893569946e-01 7.1997888386249542e-02 + <_> + + 0 -1 967 -6.0594908893108368e-02 + + 2.5831830501556396e-01 -3.2274000346660614e-02 + <_> + + 0 -1 968 3.3678639680147171e-02 + + 3.6565639078617096e-02 -3.3233150839805603e-01 + <_> + + 0 -1 969 1.4565410092473030e-02 + + -4.9269210547208786e-02 1.8280670046806335e-01 + <_> + + 0 -1 970 4.0103439241647720e-03 + + -1.2435600161552429e-01 1.1247640103101730e-01 + <_> + + 0 -1 971 1.7989509506151080e-03 + + -5.4675988852977753e-02 1.0701840370893478e-01 + <_> + + 0 -1 972 -1.6359580331481993e-04 + + 8.1755228340625763e-02 -1.6235500574111938e-01 + <_> + + 0 -1 973 -3.1993899494409561e-02 + + 1.8631230294704437e-01 -1.7350630834698677e-02 + <_> + + 0 -1 974 -8.1737667322158813e-02 + + -7.5961482524871826e-01 1.4419900253415108e-02 + <_> + + 0 -1 975 -8.8262550532817841e-02 + + -1. 5.3146481513977051e-04 + <_> + + 0 -1 976 -5.7997900992631912e-02 + + -8.9391511678695679e-01 1.2495099566876888e-02 + <_> + + 0 -1 977 2.0691409707069397e-02 + + -3.7167508155107498e-02 9.7208552062511444e-02 + <_> + + 0 -1 978 -6.0336058959364891e-03 + + 1.7547790706157684e-01 -8.6916856467723846e-02 + <_> + + 0 -1 979 1.5789760649204254e-01 + + 3.0604960396885872e-02 -2.2199299931526184e-01 + <_> + + 0 -1 980 3.3271119464188814e-03 + + 1.1201520264148712e-01 -1.6384710371494293e-01 + <_> + + 0 -1 981 1.1383239924907684e-01 + + 1.8078039865940809e-03 -9.9981439113616943e-01 + <_> + + 0 -1 982 3.9188969880342484e-02 + + -3.9494428783655167e-02 3.4139481186866760e-01 + <_> + + 0 -1 983 -4.7382968477904797e-03 + + -8.1601403653621674e-02 3.5498451441526413e-02 + <_> + + 0 -1 984 2.3458160459995270e-02 + + -4.0767479687929153e-02 3.4792768955230713e-01 + <_> + + 0 -1 985 1.6505220904946327e-02 + + 2.0170280709862709e-02 -1.5532009303569794e-01 + <_> + + 0 -1 986 2.0262949168682098e-02 + + 2.1292379125952721e-02 -6.2611502408981323e-01 + <_> + + 0 -1 987 -9.1393236070871353e-03 + + -1.3637480139732361e-01 6.3891842961311340e-02 + <_> + + 0 -1 988 -5.6207980960607529e-02 + + 4.0671119093894958e-01 -3.3258218318223953e-02 + <_> + + 0 -1 989 6.6868839785456657e-03 + + 6.4174309372901917e-02 -9.3966238200664520e-02 + <_> + + 0 -1 990 5.8862278237938881e-03 + + -6.5789960324764252e-02 2.0181339979171753e-01 + <_> + + 0 -1 991 -1.1517380177974701e-01 + + -1. 2.5347759947180748e-03 + <_> + + 0 -1 992 5.5793710052967072e-03 + + 7.0642203092575073e-02 -1.9637429714202881e-01 + <_> + + 0 -1 993 3.2180000096559525e-02 + + -1.4737719669938087e-02 2.2420160472393036e-01 + <_> + + 0 -1 994 -9.1598782455548644e-04 + + 1.1478749662637711e-01 -1.1767079681158066e-01 + <_> + 83 + -7.7573090791702271e-01 + + <_> + + 0 -1 995 9.1346232220530510e-03 + + 8.8698662817478180e-02 -3.8595649600028992e-01 + <_> + + 0 -1 996 -2.4696369655430317e-03 + + 1.6772060096263885e-01 -1.4649170637130737e-01 + <_> + + 0 -1 997 5.8935020118951797e-02 + + -1.3394000008702278e-02 6.1832672357559204e-01 + <_> + + 0 -1 998 -8.9100059121847153e-03 + + -2.6950231194496155e-01 7.2939813137054443e-02 + <_> + + 0 -1 999 1.7743879929184914e-02 + + -5.0217188894748688e-02 4.3166020512580872e-01 + <_> + + 0 -1 1000 1.1056650429964066e-02 + + 3.9155859500169754e-02 -5.2860772609710693e-01 + <_> + + 0 -1 1001 1.6161320731043816e-02 + + 6.9581039249897003e-02 -3.7610140442848206e-01 + <_> + + 0 -1 1002 -2.7879089117050171e-02 + + 2.3220659792423248e-01 -5.5979579687118530e-02 + <_> + + 0 -1 1003 -1.1556839570403099e-02 + + -3.1231081485748291e-01 7.4339963495731354e-02 + <_> + + 0 -1 1004 -6.9651477038860321e-02 + + -4.1905689239501953e-01 6.9694789126515388e-03 + <_> + + 0 -1 1005 -5.0344727933406830e-03 + + 1.3183620572090149e-01 -1.9702030718326569e-01 + <_> + + 0 -1 1006 -8.6098119616508484e-02 + + 6.5727752447128296e-01 -9.5664570108056068e-03 + <_> + + 0 -1 1007 2.5546319782733917e-02 + + -4.0136341005563736e-02 5.4847037792205811e-01 + <_> + + 0 -1 1008 -2.6870880275964737e-02 + + -2.5306650996208191e-01 4.4181719422340393e-02 + <_> + + 0 -1 1009 9.5859682187438011e-03 + + -8.1882461905479431e-02 2.6894670724868774e-01 + <_> + + 0 -1 1010 2.6683809235692024e-02 + + 2.6593349874019623e-02 -4.4127041101455688e-01 + <_> + + 0 -1 1011 -1.4490840025246143e-02 + + -3.5697469115257263e-01 7.0072941482067108e-02 + <_> + + 0 -1 1012 -2.2448399104177952e-03 + + 2.0088230073451996e-01 -1.2228170037269592e-01 + <_> + + 0 -1 1013 4.8795710317790508e-03 + + 4.5820981264114380e-02 -3.9498189091682434e-01 + <_> + + 0 -1 1014 -6.1262990348041058e-03 + + -1.8826089799404144e-01 7.8812077641487122e-02 + <_> + + 0 -1 1015 1.6952969133853912e-02 + + -6.1684221029281616e-02 3.3603700995445251e-01 + <_> + + 0 -1 1016 -4.5547191984951496e-03 + + -1.9471390545368195e-01 5.3147189319133759e-02 + <_> + + 0 -1 1017 -1.2753040064126253e-03 + + 1.4800879359245300e-01 -1.4244349300861359e-01 + <_> + + 0 -1 1018 2.2060280665755272e-02 + + -3.5406738519668579e-02 3.3775308728218079e-01 + <_> + + 0 -1 1019 2.1050389856100082e-02 + + 4.2289130389690399e-02 -4.5886451005935669e-01 + <_> + + 0 -1 1020 9.5637209713459015e-02 + + -1.3171649537980556e-02 5.5534982681274414e-01 + <_> + + 0 -1 1021 -3.6728319246321917e-03 + + -1.8842899799346924e-01 9.5458142459392548e-02 + <_> + + 0 -1 1022 1.6345079347956926e-04 + + -6.0444809496402740e-02 1.0536730289459229e-01 + <_> + + 0 -1 1023 2.5338289141654968e-01 + + 1.6026260331273079e-02 -9.9994468688964844e-01 + <_> + + 0 -1 1024 -4.6113330870866776e-02 + + 5.4247987270355225e-01 -2.7890209108591080e-02 + <_> + + 0 -1 1025 5.2588270045816898e-03 + + 7.9867303371429443e-02 -2.0700709521770477e-01 + <_> + + 0 -1 1026 -1.3449570536613464e-01 + + -4.1270101070404053e-01 8.1500215455889702e-03 + <_> + + 0 -1 1027 1.6953679732978344e-03 + + 1.1035349965095520e-01 -1.6802120208740234e-01 + <_> + + 0 -1 1028 3.9492141455411911e-02 + + -1.3410010375082493e-02 3.8447639346122742e-01 + <_> + + 0 -1 1029 -9.3634781660512090e-04 + + 1.0986819863319397e-01 -1.7310489714145660e-01 + <_> + + 0 -1 1030 -4.4495709240436554e-02 + + 1.9471199810504913e-01 -4.0768899023532867e-02 + <_> + + 0 -1 1031 6.0630109161138535e-02 + + -4.2252369225025177e-02 5.1412987709045410e-01 + <_> + + 0 -1 1032 7.5067640282213688e-03 + + 4.2086970061063766e-02 -1.6080400347709656e-01 + <_> + + 0 -1 1033 9.9260415881872177e-03 + + 6.4119532704353333e-02 -2.6215308904647827e-01 + <_> + + 0 -1 1034 6.0528520494699478e-02 + + 2.4189969524741173e-02 -3.6608389019966125e-01 + <_> + + 0 -1 1035 -6.8054231815040112e-03 + + 1.2508389353752136e-01 -1.3889710605144501e-01 + <_> + + 0 -1 1036 -2.0940289832651615e-03 + + 1.3996599614620209e-01 -8.2706399261951447e-02 + <_> + + 0 -1 1037 -9.6904346719384193e-03 + + 2.6681360602378845e-01 -7.1576990187168121e-02 + <_> + + 0 -1 1038 1.8320349976420403e-02 + + 3.1321980059146881e-02 -2.3460610210895538e-01 + <_> + + 0 -1 1039 5.0429959082975984e-04 + + -1.1669719964265823e-01 1.6514649987220764e-01 + <_> + + 0 -1 1040 -4.7016288153827190e-03 + + -1.2006150186061859e-01 5.9200428426265717e-02 + <_> + + 0 -1 1041 -1.9926870241761208e-02 + + -3.9485099911689758e-01 4.1143018752336502e-02 + <_> + + 0 -1 1042 7.4013080447912216e-03 + + -7.6331257820129395e-02 2.1065360307693481e-01 + <_> + + 0 -1 1043 1.4879629947245121e-02 + + 4.7979071736335754e-02 -3.4014761447906494e-01 + <_> + + 0 -1 1044 1.5527559816837311e-01 + + 3.2225880771875381e-02 -4.6938079595565796e-01 + <_> + + 0 -1 1045 -7.0786331780254841e-03 + + 1.2199480086565018e-01 -1.2004940211772919e-01 + <_> + + 0 -1 1046 2.9872169718146324e-02 + + -4.3677508831024170e-02 2.3529820144176483e-01 + <_> + + 0 -1 1047 3.0555170029401779e-02 + + 3.1775880604982376e-02 -5.7825452089309692e-01 + <_> + + 0 -1 1048 1.0284570045769215e-02 + + 4.7202810645103455e-02 -2.9566499590873718e-01 + <_> + + 0 -1 1049 1.9808709621429443e-02 + + -4.5775938779115677e-02 3.3231019973754883e-01 + <_> + + 0 -1 1050 2.7218880131840706e-02 + + 2.5577219203114510e-02 -3.3180880546569824e-01 + <_> + + 0 -1 1051 1.4097680337727070e-02 + + 5.2157420665025711e-02 -2.9358381032943726e-01 + <_> + + 0 -1 1052 2.4286569654941559e-01 + + 1.4692460186779499e-02 -6.9854879379272461e-01 + <_> + + 0 -1 1053 1.2419570237398148e-02 + + -4.7105878591537476e-02 3.6695051193237305e-01 + <_> + + 0 -1 1054 1.3503880472853780e-03 + + 5.3791359066963196e-02 -2.0953659713268280e-01 + <_> + + 0 -1 1055 -1.5626290813088417e-02 + + 2.7888458967208862e-01 -6.0053750872612000e-02 + <_> + + 0 -1 1056 1.5850139781832695e-02 + + -3.0324909836053848e-02 1.0287520289421082e-01 + <_> + + 0 -1 1057 -4.0868919342756271e-02 + + -8.0402207374572754e-01 1.7601499333977699e-02 + <_> + + 0 -1 1058 6.4108639955520630e-02 + + 2.5845379568636417e-03 -5.3854942321777344e-01 + <_> + + 0 -1 1059 4.9927100539207458e-02 + + 2.1863300353288651e-02 -6.1780720949172974e-01 + <_> + + 0 -1 1060 1.4655419625341892e-02 + + 1.9663369283080101e-02 -2.0426170527935028e-01 + <_> + + 0 -1 1061 -2.4094810709357262e-02 + + 3.7609130144119263e-01 -4.0954101830720901e-02 + <_> + + 0 -1 1062 2.9417769983410835e-02 + + -8.6903842166066170e-03 4.0447419881820679e-01 + <_> + + 0 -1 1063 -1.4158640056848526e-02 + + 3.7811711430549622e-01 -4.0321640670299530e-02 + <_> + + 0 -1 1064 -4.6754989773035049e-02 + + 2.2104309499263763e-01 -2.8996109962463379e-02 + <_> + + 0 -1 1065 -1.1437949724495411e-02 + + -2.5033089518547058e-01 5.8214288204908371e-02 + <_> + + 0 -1 1066 -4.2598780244588852e-02 + + 3.7562200427055359e-01 -1.6349090263247490e-02 + <_> + + 0 -1 1067 -1.5201159752905369e-02 + + -3.5637819766998291e-01 3.8690369576215744e-02 + <_> + + 0 -1 1068 4.3378848582506180e-02 + + 3.3045639283955097e-03 -4.6729469299316406e-01 + <_> + + 0 -1 1069 5.5153011344373226e-03 + + -8.3583608269691467e-02 1.8793170154094696e-01 + <_> + + 0 -1 1070 -7.8126927837729454e-03 + + -1.6586859524250031e-01 4.3801128864288330e-02 + <_> + + 0 -1 1071 4.1652601212263107e-02 + + -3.1804520636796951e-02 4.3517521023750305e-01 + <_> + + 0 -1 1072 3.4417589195072651e-03 + + 4.2282279580831528e-02 -1.3088959455490112e-01 + <_> + + 0 -1 1073 1.3004569336771965e-04 + + -1.1260010302066803e-01 1.3964599370956421e-01 + <_> + + 0 -1 1074 -7.7347733080387115e-02 + + 7.0750647783279419e-01 -5.4134069941937923e-03 + <_> + + 0 -1 1075 -1.6143550164997578e-03 + + 1.1920420080423355e-01 -1.1884269863367081e-01 + <_> + + 0 -1 1076 -9.8279246594756842e-04 + + 6.3156276941299438e-02 -5.2781101316213608e-02 + <_> + + 0 -1 1077 -4.5667469501495361e-02 + + -3.4500870108604431e-01 4.4600728899240494e-02 + <_> + 101 + -6.9763368368148804e-01 + + <_> + + 0 -1 1078 7.3315978050231934e-02 + + -1.1410109698772430e-01 4.0035811066627502e-01 + <_> + + 0 -1 1079 2.5275669991970062e-02 + + -7.2013877332210541e-02 3.6095780134201050e-01 + <_> + + 0 -1 1080 1.8873859196901321e-02 + + -1.7234370112419128e-01 1.8223220109939575e-01 + <_> + + 0 -1 1081 7.4607720307540148e-05 + + -8.1627286970615387e-02 8.8888503611087799e-02 + <_> + + 0 -1 1082 4.2250280966982245e-04 + + -1.2840239703655243e-01 1.1791419982910156e-01 + <_> + + 0 -1 1083 1.4402460306882858e-02 + + 2.0960340276360512e-02 1.9024699926376343e-01 + <_> + + 0 -1 1084 -2.0460959058254957e-03 + + 9.5712497830390930e-02 -2.1517060697078705e-01 + <_> + + 0 -1 1085 7.1128448471426964e-03 + + -5.6100480258464813e-02 2.0984320342540741e-01 + <_> + + 0 -1 1086 -6.5832170657813549e-03 + + -2.1138189733028412e-01 7.6094150543212891e-02 + <_> + + 0 -1 1087 -4.1252959636040032e-04 + + 1.3107340037822723e-01 -1.5670859813690186e-01 + <_> + + 0 -1 1088 -4.4330831617116928e-02 + + 5.4048037528991699e-01 -1.9059479236602783e-02 + <_> + + 0 -1 1089 1.1700130067765713e-02 + + 5.1712401211261749e-02 -1.7216169834136963e-01 + <_> + + 0 -1 1090 3.5091140307486057e-03 + + -7.6767951250076294e-02 1.7776259779930115e-01 + <_> + + 0 -1 1091 1.5597569756209850e-02 + + 3.8307890295982361e-02 -1.4730019867420197e-01 + <_> + + 0 -1 1092 -3.6285370588302612e-02 + + 3.5347661375999451e-01 -4.5018490403890610e-02 + <_> + + 0 -1 1093 -4.5118298381567001e-02 + + -5.7074141502380371e-01 1.0646710172295570e-02 + <_> + + 0 -1 1094 1.3734580017626286e-02 + + 6.6018357872962952e-02 -2.0480890572071075e-01 + <_> + + 0 -1 1095 -2.7120979502797127e-02 + + 4.8094209283590317e-02 -5.1394961774349213e-02 + <_> + + 0 -1 1096 -1.5354059869423509e-03 + + -2.3548009991645813e-01 5.3074609488248825e-02 + <_> + + 0 -1 1097 3.6000818945467472e-03 + + -5.8944340795278549e-02 1.1825410276651382e-01 + <_> + + 0 -1 1098 6.8916529417037964e-03 + + -5.0014488399028778e-02 2.6909399032592773e-01 + <_> + + 0 -1 1099 3.5373449791222811e-03 + + -1.2947039306163788e-01 8.8697038590908051e-02 + <_> + + 0 -1 1100 -4.1431561112403870e-03 + + -1.7883630096912384e-01 6.9098107516765594e-02 + <_> + + 0 -1 1101 -1.0762579739093781e-01 + + -1. 4.7263409942388535e-03 + <_> + + 0 -1 1102 9.7946207970380783e-03 + + -5.4038770496845245e-02 2.4115470051765442e-01 + <_> + + 0 -1 1103 1.0054280050098896e-02 + + -8.0624893307685852e-02 1.1627560108900070e-01 + <_> + + 0 -1 1104 -8.7350717512890697e-04 + + -1.8193979561328888e-01 7.7468506991863251e-02 + <_> + + 0 -1 1105 9.4283261569216847e-04 + + 4.6265050768852234e-02 -2.2732029855251312e-01 + <_> + + 0 -1 1106 3.5424059024080634e-04 + + -1.1824289709329605e-01 1.1095699667930603e-01 + <_> + + 0 -1 1107 -3.8587789982557297e-02 + + -3.0286869406700134e-01 3.1856179703027010e-03 + <_> + + 0 -1 1108 -4.9504679627716541e-03 + + 1.3758100569248199e-01 -9.1690346598625183e-02 + <_> + + 0 -1 1109 -2.5453630834817886e-02 + + -2.3013520240783691e-01 1.9747929647564888e-02 + <_> + + 0 -1 1110 1.5836700797080994e-02 + + -4.5252159237861633e-02 2.9337081313133240e-01 + <_> + + 0 -1 1111 1.0379879735410213e-02 + + 5.9706691652536392e-02 -1.6415530443191528e-01 + <_> + + 0 -1 1112 4.3178450316190720e-02 + + 6.3460536301136017e-02 -2.1360489726066589e-01 + <_> + + 0 -1 1113 -2.2508678957819939e-03 + + 1.0645110160112381e-01 -5.9539180248975754e-02 + <_> + + 0 -1 1114 5.0743711180984974e-03 + + -9.4377033412456512e-02 2.2999720275402069e-01 + <_> + + 0 -1 1115 -3.0670650303363800e-02 + + 2.5975760817527771e-01 -2.3188209161162376e-02 + <_> + + 0 -1 1116 2.4162670597434044e-03 + + 8.7919056415557861e-02 -1.9287380576133728e-01 + <_> + + 0 -1 1117 -9.3405842781066895e-03 + + -1.0935559868812561e-01 2.9358500614762306e-02 + <_> + + 0 -1 1118 2.0513730123639107e-02 + + -5.2511349320411682e-02 3.0545449256896973e-01 + <_> + + 0 -1 1119 -4.3630380183458328e-02 + + -4.5310449600219727e-01 1.8261570483446121e-02 + <_> + + 0 -1 1120 3.4857920836657286e-03 + + -9.7093120217323303e-02 1.4877100288867950e-01 + <_> + + 0 -1 1121 1.0411609895527363e-02 + + 4.2915731668472290e-02 -2.4849639832973480e-01 + <_> + + 0 -1 1122 -7.5155291706323624e-03 + + -2.6623341441154480e-01 5.1602318882942200e-02 + <_> + + 0 -1 1123 7.2157550603151321e-03 + + -6.1878159642219543e-02 1.8314969539642334e-01 + <_> + + 0 -1 1124 9.1090862406417727e-04 + + -9.7420282661914825e-02 1.2223699688911438e-01 + <_> + + 0 -1 1125 -4.0069910883903503e-01 + + -8.1831091642379761e-01 4.7453590668737888e-03 + <_> + + 0 -1 1126 -4.8033627681434155e-03 + + 9.4193987548351288e-02 -1.4436510205268860e-01 + <_> + + 0 -1 1127 -2.1147429943084717e-02 + + 2.9532408714294434e-01 -4.4751271605491638e-02 + <_> + + 0 -1 1128 1.8602259457111359e-02 + + -4.2993780225515366e-02 2.9706719517707825e-01 + <_> + + 0 -1 1129 -8.1051718443632126e-03 + + 1.2369229644536972e-01 -1.3246449828147888e-01 + <_> + + 0 -1 1130 -8.3215925842523575e-03 + + -1.9022589921951294e-01 8.9151017367839813e-02 + <_> + + 0 -1 1131 3.1376329716295004e-03 + + 4.1584819555282593e-02 -7.9552896320819855e-02 + <_> + + 0 -1 1132 1.6556069254875183e-02 + + 4.4908858835697174e-02 -3.6947301030158997e-01 + <_> + + 0 -1 1133 2.9919730499386787e-02 + + -3.7720259279012680e-02 2.4280619621276855e-01 + <_> + + 0 -1 1134 -5.1988288760185242e-02 + + -6.9372260570526123e-01 1.8926780670881271e-02 + <_> + + 0 -1 1135 7.5528107583522797e-02 + + -1.2611350044608116e-02 2.5732690095901489e-01 + <_> + + 0 -1 1136 -2.5031189434230328e-03 + + 1.3807280361652374e-01 -9.1662466526031494e-02 + <_> + + 0 -1 1137 -5.9646938461810350e-04 + + -6.3654616475105286e-02 2.5937270373106003e-02 + <_> + + 0 -1 1138 1.0319340042769909e-02 + + 8.3791837096214294e-02 -1.7408309876918793e-01 + <_> + + 0 -1 1139 9.3816686421632767e-03 + + 2.7871530503034592e-02 -1.1141580343246460e-01 + <_> + + 0 -1 1140 1.0023410432040691e-02 + + -6.9966249167919159e-02 2.1900640428066254e-01 + <_> + + 0 -1 1141 -8.3700200775638223e-04 + + 1.0097689926624298e-01 -1.4261360466480255e-01 + <_> + + 0 -1 1142 2.2468710318207741e-02 + + 9.4028212130069733e-02 -1.3807420432567596e-01 + <_> + + 0 -1 1143 3.9115209132432938e-02 + + -5.3969398140907288e-03 6.5187507867813110e-01 + <_> + + 0 -1 1144 -1.5670569846406579e-03 + + 7.0886030793190002e-02 -2.0010609924793243e-01 + <_> + + 0 -1 1145 6.0749892145395279e-03 + + 3.5395938903093338e-02 -4.3918590992689133e-02 + <_> + + 0 -1 1146 -4.3166890740394592e-02 + + 5.9881848096847534e-01 -2.3480180650949478e-02 + <_> + + 0 -1 1147 2.3302088957279921e-03 + + -7.2818689048290253e-02 4.3940208852291107e-02 + <_> + + 0 -1 1148 5.5236589163541794e-02 + + -3.5117920488119125e-02 3.6355149745941162e-01 + <_> + + 0 -1 1149 2.7774399146437645e-02 + + 3.0074290931224823e-02 -1.0026770085096359e-01 + <_> + + 0 -1 1150 8.4784086793661118e-03 + + -5.6243300437927246e-02 2.1711349487304688e-01 + <_> + + 0 -1 1151 1.3269360177218914e-02 + + 4.3138369917869568e-02 -1.6429780423641205e-01 + <_> + + 0 -1 1152 -3.4072279930114746e-02 + + 3.9418798685073853e-01 -3.2914638519287109e-02 + <_> + + 0 -1 1153 -5.9365970082581043e-03 + + 6.4854122698307037e-02 -8.6971588432788849e-02 + <_> + + 0 -1 1154 -5.1997308619320393e-03 + + -2.1710740029811859e-01 6.5441012382507324e-02 + <_> + + 0 -1 1155 3.0441130511462688e-03 + + -4.7171641141176224e-02 9.4662867486476898e-02 + <_> + + 0 -1 1156 -2.2375459957402200e-04 + + 1.1739899963140488e-01 -1.0451590269804001e-01 + <_> + + 0 -1 1157 4.9494139850139618e-02 + + 9.9552040919661522e-03 -8.8205021619796753e-01 + <_> + + 0 -1 1158 7.7127031981945038e-02 + + -3.6638759076595306e-02 3.7156999111175537e-01 + <_> + + 0 -1 1159 -3.7054829299449921e-03 + + 4.6213079243898392e-02 -7.9498499631881714e-02 + <_> + + 0 -1 1160 1.3655430078506470e-01 + + 2.0802579820156097e-02 -6.4692282676696777e-01 + <_> + + 0 -1 1161 -1.6919399797916412e-01 + + -9.0144991874694824e-01 4.3158119660802186e-04 + <_> + + 0 -1 1162 5.2525149658322334e-03 + + 8.6686216294765472e-02 -1.5751640498638153e-01 + <_> + + 0 -1 1163 5.7952258735895157e-02 + + 1.3485850067809224e-03 -1.0001620054244995e+00 + <_> + + 0 -1 1164 -3.0681459233164787e-02 + + -6.7346888780593872e-01 1.7730809748172760e-02 + <_> + + 0 -1 1165 -2.8556400910019875e-02 + + 2.4913530051708221e-01 -2.1807359531521797e-02 + <_> + + 0 -1 1166 5.8311191387474537e-03 + + 1.0109650343656540e-01 -1.2586539983749390e-01 + <_> + + 0 -1 1167 2.8870739042758942e-03 + + -4.5462280511856079e-02 1.4794190227985382e-01 + <_> + + 0 -1 1168 -5.3575891070067883e-03 + + 1.0845459997653961e-01 -2.0636059343814850e-01 + <_> + + 0 -1 1169 2.0851830020546913e-02 + + -2.5641430169343948e-02 1.2000799924135208e-01 + <_> + + 0 -1 1170 2.9372319113463163e-03 + + -5.8832980692386627e-02 2.3967139422893524e-01 + <_> + + 0 -1 1171 1.0109069757163525e-02 + + 4.4724740087985992e-02 -2.5024959444999695e-01 + <_> + + 0 -1 1172 6.2002640217542648e-02 + + 3.1236680224537849e-02 -3.8775479793548584e-01 + <_> + + 0 -1 1173 1.7331680282950401e-03 + + -7.6642520725727081e-02 5.8738309890031815e-02 + <_> + + 0 -1 1174 -4.6648900955915451e-02 + + 4.7800371050834656e-01 -2.8223259374499321e-02 + <_> + + 0 -1 1175 -4.0585011243820190e-02 + + 1.9591329991817474e-01 -2.9608549550175667e-02 + <_> + + 0 -1 1176 1.4297359623014927e-02 + + 8.0422781407833099e-02 -2.0024399459362030e-01 + <_> + + 0 -1 1177 -1.4215649571269751e-03 + + 9.7693942487239838e-02 -1.3090120255947113e-01 + <_> + + 0 -1 1178 5.2683628164231777e-03 + + -5.8376371860504150e-02 2.4378040432929993e-01 + <_> + 104 + -6.8976742029190063e-01 + + <_> + + 0 -1 1179 -2.6198190171271563e-03 + + 1.8673700094223022e-01 -1.9126529991626740e-01 + <_> + + 0 -1 1180 -2.8629099950194359e-02 + + 1.2887109816074371e-01 -2.6186849921941757e-02 + <_> + + 0 -1 1181 7.1718869730830193e-03 + + 8.8158592581748962e-02 -2.0327340066432953e-01 + <_> + + 0 -1 1182 1.1641040444374084e-02 + + -2.1058250218629837e-02 1.7591789364814758e-01 + <_> + + 0 -1 1183 5.6764329783618450e-03 + + 4.9941159784793854e-02 -2.7329298853874207e-01 + <_> + + 0 -1 1184 -4.4392690062522888e-02 + + 5.6766128540039062e-01 -1.8674779683351517e-02 + <_> + + 0 -1 1185 1.3367610517889261e-04 + + -1.2990309298038483e-01 1.3542290031909943e-01 + <_> + + 0 -1 1186 -4.4111948460340500e-02 + + 2.2684830427169800e-01 -1.3318399898707867e-02 + <_> + + 0 -1 1187 2.9443150851875544e-03 + + 4.3161459267139435e-02 -2.9311171174049377e-01 + <_> + + 0 -1 1188 3.5300010349601507e-03 + + 7.7193722128868103e-02 -2.6324981451034546e-01 + <_> + + 0 -1 1189 1.0119210183620453e-01 + + -5.4924260824918747e-02 3.2430219650268555e-01 + <_> + + 0 -1 1190 -2.2348569706082344e-02 + + 3.0803111195564270e-01 -2.2518489509820938e-02 + <_> + + 0 -1 1191 6.4755380153656006e-03 + + -1.2045770138502121e-01 1.3186110556125641e-01 + <_> + + 0 -1 1192 1.0904319584369659e-02 + + 1.0217989981174469e-01 -1.8308849632740021e-01 + <_> + + 0 -1 1193 -1.1256629601120949e-02 + + -2.9186639189720154e-01 5.5491220206022263e-02 + <_> + + 0 -1 1194 3.6791800521314144e-03 + + -5.0614688545465469e-02 8.2663312554359436e-02 + <_> + + 0 -1 1195 -9.1721288859844208e-02 + + -7.7127552032470703e-01 1.9312959164381027e-02 + <_> + + 0 -1 1196 4.0099889039993286e-02 + + 7.8663527965545654e-03 -8.1302827596664429e-01 + <_> + + 0 -1 1197 -5.4956428706645966e-02 + + 2.9059520363807678e-01 -5.9825580567121506e-02 + <_> + + 0 -1 1198 2.4804650247097015e-01 + + 1.1665189638733864e-02 -6.9121950864791870e-01 + <_> + + 0 -1 1199 -3.4284800291061401e-02 + + 4.5358398556709290e-01 -3.2071251422166824e-02 + <_> + + 0 -1 1200 2.5439230725169182e-02 + + 1.9467150792479515e-02 -3.7927991151809692e-01 + <_> + + 0 -1 1201 -1.2720660306513309e-02 + + -2.1211430430412292e-01 6.1533831059932709e-02 + <_> + + 0 -1 1202 1.0831000283360481e-02 + + -5.1443681120872498e-02 1.6947689652442932e-01 + <_> + + 0 -1 1203 -2.1931570023298264e-02 + + 2.4839389324188232e-01 -5.6636359542608261e-02 + <_> + + 0 -1 1204 2.9397898912429810e-01 + + 1.1411529965698719e-02 -9.3696069717407227e-01 + <_> + + 0 -1 1205 -1.6342259943485260e-02 + + -3.1589549779891968e-01 4.4371981173753738e-02 + <_> + + 0 -1 1206 -4.4280499219894409e-02 + + 2.0337340235710144e-01 -2.1462319418787956e-02 + <_> + + 0 -1 1207 2.6503309607505798e-01 + + 1.1633150279521942e-02 -9.1220170259475708e-01 + <_> + + 0 -1 1208 -7.6378479599952698e-02 + + 1.8688270449638367e-01 -1.9672080874443054e-02 + <_> + + 0 -1 1209 -1.0061570443212986e-02 + + -2.6462039351463318e-01 4.6620260924100876e-02 + <_> + + 0 -1 1210 2.4921730160713196e-02 + + -1.9131390377879143e-02 2.0154500007629395e-01 + <_> + + 0 -1 1211 1.5098409676284064e-05 + + -1.6241690516471863e-01 7.6183967292308807e-02 + <_> + + 0 -1 1212 -1.0081910341978073e-01 + + -1. 7.4751500505954027e-04 + <_> + + 0 -1 1213 6.5058596432209015e-02 + + -4.0468640625476837e-02 3.5160079598426819e-01 + <_> + + 0 -1 1214 -1.2190239876508713e-01 + + -5.3624558448791504e-01 1.8637020140886307e-02 + <_> + + 0 -1 1215 -9.8520738538354635e-04 + + 1.1398199945688248e-01 -1.1298830062150955e-01 + <_> + + 0 -1 1216 -2.5300619006156921e-01 + + -4.3375909328460693e-01 1.2367400340735912e-02 + <_> + + 0 -1 1217 7.5246659107506275e-03 + + 6.7355476319789886e-02 -1.8583969771862030e-01 + <_> + + 0 -1 1218 4.8102210275828838e-03 + + -6.5870061516761780e-02 1.2848910689353943e-01 + <_> + + 0 -1 1219 -1.4562129508703947e-03 + + 1.8110689520835876e-01 -1.1248459666967392e-01 + <_> + + 0 -1 1220 -5.6546321138739586e-03 + + 1.0369840264320374e-01 -1.4115570485591888e-01 + <_> + + 0 -1 1221 -3.1951289623975754e-02 + + -3.2971608638763428e-01 4.8281811177730560e-02 + <_> + + 0 -1 1222 4.2190380394458771e-02 + + -1.1644810438156128e-02 1.3701300323009491e-01 + <_> + + 0 -1 1223 1.2606659904122353e-02 + + -6.0395881533622742e-02 2.4210059642791748e-01 + <_> + + 0 -1 1224 -6.0083861462771893e-03 + + 9.5677606761455536e-02 -2.0248259603977203e-01 + <_> + + 0 -1 1225 4.0676388889551163e-02 + + -3.8506429642438889e-02 3.9824029803276062e-01 + <_> + + 0 -1 1226 -1.3010219670832157e-02 + + -7.7870443463325500e-02 3.2533310353755951e-02 + <_> + + 0 -1 1227 -5.6646969169378281e-02 + + -9.5293551683425903e-01 1.7375659197568893e-02 + <_> + + 0 -1 1228 3.7307970225811005e-02 + + -3.3261440694332123e-02 4.6856319904327393e-01 + <_> + + 0 -1 1229 -2.7986379340291023e-02 + + -4.6356698870658875e-01 2.8524029999971390e-02 + <_> + + 0 -1 1230 -7.5014896690845490e-02 + + 2.4519899487495422e-01 -1.5830159187316895e-02 + <_> + + 0 -1 1231 2.7673080563545227e-02 + + -3.6458358168601990e-02 3.7215578556060791e-01 + <_> + + 0 -1 1232 -1.7312960699200630e-02 + + -2.2117659449577332e-01 4.3232619762420654e-02 + <_> + + 0 -1 1233 -5.8893948793411255e-02 + + 3.9726749062538147e-01 -3.7632528692483902e-02 + <_> + + 0 -1 1234 1.3193679973483086e-02 + + 2.4857729673385620e-02 -1.7514359951019287e-01 + <_> + + 0 -1 1235 3.8230679929256439e-02 + + 2.9635110870003700e-02 -4.3452748656272888e-01 + <_> + + 0 -1 1236 1.6845399513840675e-02 + + 3.9338748902082443e-02 -2.3765720427036285e-01 + <_> + + 0 -1 1237 -1.1559460312128067e-01 + + -4.0006878972053528e-01 3.2390538603067398e-02 + <_> + + 0 -1 1238 -1.7385910032317042e-03 + + 4.8545818775892258e-02 -6.1474680900573730e-02 + <_> + + 0 -1 1239 -3.3697668462991714e-02 + + 2.4345000088214874e-01 -6.5504603087902069e-02 + <_> + + 0 -1 1240 -3.4722799062728882e-01 + + -3.3612060546875000e-01 1.5501200221478939e-02 + <_> + + 0 -1 1241 5.8668039739131927e-02 + + 6.8068057298660278e-02 -2.2104929387569427e-01 + <_> + + 0 -1 1242 2.3718189448118210e-02 + + -1.4779569581151009e-02 4.7328341007232666e-01 + <_> + + 0 -1 1243 2.8812700882554054e-02 + + 3.3309880644083023e-02 -4.6797698736190796e-01 + <_> + + 0 -1 1244 4.1023749858140945e-02 + + -2.8293000534176826e-02 4.9427551031112671e-01 + <_> + + 0 -1 1245 -1.2017590051982552e-04 + + 1.0363650321960449e-01 -1.2107490003108978e-01 + <_> + + 0 -1 1246 -1.0908070206642151e-01 + + -1. 3.2971999607980251e-03 + <_> + + 0 -1 1247 -4.5967359095811844e-02 + + 6.4819461107254028e-01 -1.9233519211411476e-02 + <_> + + 0 -1 1248 -1.9345719367265701e-02 + + -3.3145549893379211e-01 3.9008539170026779e-02 + <_> + + 0 -1 1249 1.2312790378928185e-02 + + 4.1029628366231918e-02 -2.7943921089172363e-01 + <_> + + 0 -1 1250 2.1535221021622419e-03 + + -6.7545056343078613e-02 1.1647740006446838e-01 + <_> + + 0 -1 1251 -3.2158788293600082e-02 + + 5.4741638898849487e-01 -2.3730229586362839e-02 + <_> + + 0 -1 1252 -2.7592359110713005e-02 + + -7.5319421291351318e-01 8.4066214039921761e-03 + <_> + + 0 -1 1253 2.2264510393142700e-02 + + 1.2146740220487118e-02 -9.0291297435760498e-01 + <_> + + 0 -1 1254 1.5361379832029343e-02 + + -3.1641189008951187e-02 3.2132801413536072e-01 + <_> + + 0 -1 1255 -1.2360660359263420e-02 + + 2.9248631000518799e-01 -4.5303758233785629e-02 + <_> + + 0 -1 1256 2.2978749126195908e-02 + + -1.2054479680955410e-02 1.9060949981212616e-01 + <_> + + 0 -1 1257 2.3296380415558815e-02 + + 3.1409051269292831e-02 -5.1856082677841187e-01 + <_> + + 0 -1 1258 5.7384249521419406e-04 + + -1.0293489694595337e-01 8.1548452377319336e-02 + <_> + + 0 -1 1259 -3.3020470291376114e-02 + + 4.2470559477806091e-01 -4.4794678688049316e-02 + <_> + + 0 -1 1260 -2.1713029593229294e-02 + + -1.4825260639190674e-01 1.2959879823029041e-02 + <_> + + 0 -1 1261 -9.7430922323837876e-05 + + 1.1899639666080475e-01 -1.4753970503807068e-01 + <_> + + 0 -1 1262 -9.2907734215259552e-03 + + -1.1635430157184601e-01 5.4104641079902649e-02 + <_> + + 0 -1 1263 3.7244848906993866e-02 + + -3.4421201795339584e-02 3.7943929433822632e-01 + <_> + + 0 -1 1264 1.5277029573917389e-01 + + 7.2725401259958744e-03 -3.4155088663101196e-01 + <_> + + 0 -1 1265 -1.2663450092077255e-02 + + -3.0596670508384705e-01 3.8231261074542999e-02 + <_> + + 0 -1 1266 -7.4888423085212708e-02 + + -3.4658950567245483e-01 1.5501650050282478e-02 + <_> + + 0 -1 1267 -4.0114589035511017e-02 + + 3.2629820704460144e-01 -4.1313670575618744e-02 + <_> + + 0 -1 1268 -9.6492111682891846e-02 + + 1.0172849893569946e-01 -1.7156010493636131e-02 + <_> + + 0 -1 1269 -1.6712839901447296e-01 + + -7.7655118703842163e-01 1.8029559403657913e-02 + <_> + + 0 -1 1270 -8.2981940358877182e-03 + + -1.4397139847278595e-01 5.8948140591382980e-02 + <_> + + 0 -1 1271 -3.7844169419258833e-03 + + 1.7095179855823517e-01 -7.8256443142890930e-02 + <_> + + 0 -1 1272 -1.6076420247554779e-01 + + 2.3138229548931122e-01 -1.3428050093352795e-02 + <_> + + 0 -1 1273 6.4544437918812037e-04 + + -1.4424400031566620e-01 8.3287820219993591e-02 + <_> + + 0 -1 1274 2.2737309336662292e-02 + + -3.4155819565057755e-02 3.5519808530807495e-01 + <_> + + 0 -1 1275 -3.9030050393193960e-03 + + -1.8736769258975983e-01 6.4628012478351593e-02 + <_> + + 0 -1 1276 -5.1145430654287338e-02 + + 6.6892707347869873e-01 -1.1180049739778042e-02 + <_> + + 0 -1 1277 -6.0482369735836983e-03 + + 1.8622750043869019e-01 -6.3018701970577240e-02 + <_> + + 0 -1 1278 1.1743569746613503e-02 + + 2.5449279695749283e-02 -1.3331249356269836e-01 + <_> + + 0 -1 1279 8.4120890824124217e-04 + + -9.3333467841148376e-02 1.3315880298614502e-01 + <_> + + 0 -1 1280 -3.7756171077489853e-02 + + -2.3138800263404846e-01 4.0569789707660675e-02 + <_> + + 0 -1 1281 -2.0867560058832169e-02 + + 1.0056090354919434e-01 -1.1744190007448196e-01 + <_> + + 0 -1 1282 -3.9802178740501404e-02 + + -1.1585719883441925e-01 1.2668189406394958e-01 + <_> + 111 + -6.8169009685516357e-01 + + <_> + + 0 -1 1283 8.4546189755201340e-03 + + -1.6289660334587097e-01 1.9834390282630920e-01 + <_> + + 0 -1 1284 5.1610451191663742e-02 + + -3.0827090144157410e-02 3.3742550015449524e-01 + <_> + + 0 -1 1285 -6.4909443259239197e-02 + + 2.8602281212806702e-01 -5.9848651289939880e-02 + <_> + + 0 -1 1286 -4.3951408006250858e-03 + + 1.1302659660577774e-01 -1.2632089853286743e-01 + <_> + + 0 -1 1287 -8.2756802439689636e-02 + + -6.0790950059890747e-01 2.1967180073261261e-02 + <_> + + 0 -1 1288 -4.8698862083256245e-03 + + 8.5866190493106842e-02 -8.9009523391723633e-02 + <_> + + 0 -1 1289 9.1512441635131836e-02 + + -5.3345348685979843e-02 2.6732870936393738e-01 + <_> + + 0 -1 1290 3.6815661005675793e-03 + + 7.0915699005126953e-02 -1.7941209673881531e-01 + <_> + + 0 -1 1291 6.3032708130776882e-03 + + 1.2378150224685669e-01 -1.2391480058431625e-01 + <_> + + 0 -1 1292 5.8764131972566247e-04 + + -6.3813656568527222e-02 9.5545768737792969e-02 + <_> + + 0 -1 1293 1.4680320397019386e-02 + + -4.9183528870344162e-02 2.9040598869323730e-01 + <_> + + 0 -1 1294 3.5624930169433355e-03 + + -9.7563147544860840e-02 4.8932831734418869e-02 + <_> + + 0 -1 1295 -7.4473340064287186e-03 + + -1.5952460467815399e-01 8.4772646427154541e-02 + <_> + + 0 -1 1296 5.4010991007089615e-02 + + -2.0565150305628777e-02 5.7340717315673828e-01 + <_> + + 0 -1 1297 -2.3613919038325548e-03 + + 1.4957650005817413e-01 -7.5148113071918488e-02 + <_> + + 0 -1 1298 4.0665458887815475e-02 + + 1.4762399718165398e-02 -5.9685671329498291e-01 + <_> + + 0 -1 1299 9.3258380889892578e-02 + + 1.3036210089921951e-02 -6.8643862009048462e-01 + <_> + + 0 -1 1300 2.8593749739229679e-03 + + -5.4904639720916748e-02 9.8074667155742645e-02 + <_> + + 0 -1 1301 -4.9756402149796486e-03 + + 1.6751970350742340e-01 -8.2563832402229309e-02 + <_> + + 0 -1 1302 -2.2061138879507780e-03 + + 7.1486182510852814e-02 -8.4684796631336212e-02 + <_> + + 0 -1 1303 4.3787518516182899e-03 + + 7.5296439230442047e-02 -1.6988970339298248e-01 + <_> + + 0 -1 1304 -4.9143321812152863e-03 + + 1.6274330019950867e-01 -5.7579189538955688e-02 + <_> + + 0 -1 1305 -3.0191219411790371e-03 + + -1.2450099736452103e-01 1.1526980251073837e-01 + <_> + + 0 -1 1306 6.8227178417146206e-03 + + 3.7166971713304520e-02 -1.0093449801206589e-01 + <_> + + 0 -1 1307 3.5116981714963913e-02 + + -4.2997431010007858e-02 3.2959198951721191e-01 + <_> + + 0 -1 1308 -1.4400649815797806e-03 + + -9.8922260105609894e-02 6.7108891904354095e-02 + <_> + + 0 -1 1309 -4.6699359081685543e-03 + + -1.8003439903259277e-01 6.8038396537303925e-02 + <_> + + 0 -1 1310 3.7647720426321030e-02 + + -2.1031750366091728e-02 1.6627119481563568e-01 + <_> + + 0 -1 1311 5.1745469681918621e-03 + + -1.1846090108156204e-01 1.0919190198183060e-01 + <_> + + 0 -1 1312 7.7274879440665245e-03 + + -5.5097330361604691e-02 2.2752280533313751e-01 + <_> + + 0 -1 1313 2.9158849269151688e-02 + + 7.7885583043098450e-02 -1.7775520682334900e-01 + <_> + + 0 -1 1314 2.9885378899052739e-04 + + -7.8875280916690826e-02 5.1163110882043839e-02 + <_> + + 0 -1 1315 1.4456070493906736e-04 + + -1.6097649931907654e-01 8.1574030220508575e-02 + <_> + + 0 -1 1316 4.7840740531682968e-02 + + 1.4210550114512444e-02 -3.1316679716110229e-01 + <_> + + 0 -1 1317 4.3943468481302261e-02 + + -3.1002480536699295e-02 4.2450350522994995e-01 + <_> + + 0 -1 1318 -1.7603389918804169e-01 + + -2.1625219285488129e-01 1.3710640370845795e-02 + <_> + + 0 -1 1319 -2.7010550722479820e-02 + + 4.5448291301727295e-01 -2.8507620096206665e-02 + <_> + + 0 -1 1320 6.4534661360085011e-03 + + -4.9660708755254745e-02 8.3071723580360413e-02 + <_> + + 0 -1 1321 -7.1115070022642612e-03 + + -2.2509810328483582e-01 6.5033361315727234e-02 + <_> + + 0 -1 1322 -2.5184849277138710e-02 + + -1.7480330169200897e-01 1.8751099705696106e-02 + <_> + + 0 -1 1323 -8.8047432655002922e-05 + + 1.2677890062332153e-01 -1.0704579949378967e-01 + <_> + + 0 -1 1324 -3.6020219326019287e-02 + + 2.4649600684642792e-01 -4.9772080034017563e-02 + <_> + + 0 -1 1325 7.6084570027887821e-03 + + 1.0041440278291702e-01 -1.3673840463161469e-01 + <_> + + 0 -1 1326 -8.2404967397451401e-03 + + 1.1703260242938995e-01 -5.2781961858272552e-02 + <_> + + 0 -1 1327 -7.2474818443879485e-04 + + -1.1650030314922333e-01 1.1333490163087845e-01 + <_> + + 0 -1 1328 -7.8272278187796474e-05 + + 6.4425677061080933e-02 -1.5894609689712524e-01 + <_> + + 0 -1 1329 -2.0254699047654867e-03 + + -1.7027080059051514e-01 7.1216866374015808e-02 + <_> + + 0 -1 1330 -1.1882030218839645e-01 + + 3.2878550887107849e-01 -1.5325210057199001e-02 + <_> + + 0 -1 1331 -1.6258429735898972e-02 + + 2.1848890185356140e-01 -5.6253198534250259e-02 + <_> + + 0 -1 1332 -6.8429792299866676e-03 + + -2.3313499987125397e-01 5.7107821106910706e-02 + <_> + + 0 -1 1333 3.4939710050821304e-02 + + -2.7333829551935196e-02 4.5651969313621521e-01 + <_> + + 0 -1 1334 2.2979779541492462e-01 + + 1.4508989639580250e-02 -8.7165087461471558e-01 + <_> + + 0 -1 1335 4.3360598385334015e-02 + + 8.4467595443129539e-03 -8.7500327825546265e-01 + <_> + + 0 -1 1336 -1.1806190013885498e-03 + + 7.8186698257923126e-02 -5.2834209054708481e-02 + <_> + + 0 -1 1337 -4.1772681474685669e-01 + + -8.0729222297668457e-01 1.3048130087554455e-02 + <_> + + 0 -1 1338 -4.6315230429172516e-02 + + 2.9375079274177551e-01 -3.5192389041185379e-02 + <_> + + 0 -1 1339 -4.0271300822496414e-02 + + -5.8174532651901245e-01 1.9768500700592995e-02 + <_> + + 0 -1 1340 -4.3012440204620361e-02 + + 1.0882510244846344e-01 -2.6977609843015671e-02 + <_> + + 0 -1 1341 2.8285770677030087e-03 + + 7.6837047934532166e-02 -1.5720550715923309e-01 + <_> + + 0 -1 1342 -3.3204611390829086e-02 + + -2.3152589797973633e-01 1.5932539477944374e-02 + <_> + + 0 -1 1343 -4.8097351100295782e-04 + + 1.1043740063905716e-01 -1.1589460074901581e-01 + <_> + + 0 -1 1344 2.9704240150749683e-03 + + -3.4243740141391754e-02 6.9107398390769958e-02 + <_> + + 0 -1 1345 1.1893190443515778e-02 + + 8.0122880637645721e-02 -2.0503090322017670e-01 + <_> + + 0 -1 1346 -6.3963606953620911e-02 + + -8.5530751943588257e-01 6.4783529378473759e-03 + <_> + + 0 -1 1347 -5.6093540042638779e-03 + + 1.6278949379920959e-01 -1.0079070180654526e-01 + <_> + + 0 -1 1348 7.5979339890182018e-03 + + 5.4123409092426300e-02 -1.2431269884109497e-01 + <_> + + 0 -1 1349 1.3480819761753082e-02 + + -6.3751302659511566e-02 2.5250628590583801e-01 + <_> + + 0 -1 1350 -9.4613758847117424e-04 + + 4.2835868895053864e-02 -7.6837100088596344e-02 + <_> + + 0 -1 1351 -3.8062490522861481e-02 + + 1.9252179563045502e-01 -6.3947133719921112e-02 + <_> + + 0 -1 1352 1.2410899996757507e-01 + + 7.9416595399379730e-03 -4.2653021216392517e-01 + <_> + + 0 -1 1353 -9.2228442430496216e-02 + + -5.5210620164871216e-01 2.8964910656213760e-02 + <_> + + 0 -1 1354 1.5106770209968090e-02 + + 2.7609340846538544e-02 -1.6688449680805206e-01 + <_> + + 0 -1 1355 -2.3654250428080559e-02 + + -3.4379678964614868e-01 3.9513330906629562e-02 + <_> + + 0 -1 1356 4.7881390899419785e-02 + + 8.0661084502935410e-03 -1.8185199797153473e-01 + <_> + + 0 -1 1357 8.5415288805961609e-02 + + -4.6752408146858215e-02 2.7169001102447510e-01 + <_> + + 0 -1 1358 3.1524940859526396e-03 + + -8.6421400308609009e-02 6.8336002528667450e-02 + <_> + + 0 -1 1359 -3.0099870637059212e-03 + + 8.9336208999156952e-02 -1.3626849651336670e-01 + <_> + + 0 -1 1360 -5.8112520724534988e-02 + + -1.9748120009899139e-01 2.6536440476775169e-02 + <_> + + 0 -1 1361 1.2775669991970062e-01 + + -4.9838040024042130e-02 3.4896400570869446e-01 + <_> + + 0 -1 1362 1.2011290341615677e-01 + + -6.3313432037830353e-03 3.7937548756599426e-01 + <_> + + 0 -1 1363 4.7567482106387615e-03 + + 1.0490419715642929e-01 -1.3542570173740387e-01 + <_> + + 0 -1 1364 -1.5902349725365639e-02 + + 6.1786301434040070e-02 -9.8376080393791199e-02 + <_> + + 0 -1 1365 -5.6423708796501160e-02 + + -6.3371032476425171e-01 2.0224599167704582e-02 + <_> + + 0 -1 1366 -7.9641327261924744e-02 + + -1. 8.7428308324888349e-04 + <_> + + 0 -1 1367 -2.0731301046907902e-03 + + 1.3846459984779358e-01 -9.5865301787853241e-02 + <_> + + 0 -1 1368 5.8470368385314941e-03 + + -5.7033840566873550e-02 1.1691799759864807e-01 + <_> + + 0 -1 1369 -2.6138950139284134e-02 + + -2.2362439334392548e-01 5.5546630173921585e-02 + <_> + + 0 -1 1370 -6.5781630109995604e-04 + + 9.2999227344989777e-02 -8.4152117371559143e-02 + <_> + + 0 -1 1371 -5.6041389703750610e-02 + + 3.5072851181030273e-01 -3.1472280621528625e-02 + <_> + + 0 -1 1372 9.7799800336360931e-02 + + 1.0124430060386658e-02 -3.7714061141014099e-01 + <_> + + 0 -1 1373 4.5515140518546104e-03 + + -7.8311361372470856e-02 1.4166970551013947e-01 + <_> + + 0 -1 1374 1.0168380104005337e-02 + + 5.2113991230726242e-02 -2.4422790110111237e-01 + <_> + + 0 -1 1375 6.2885403633117676e-02 + + -1.8255509436130524e-02 6.2847292423248291e-01 + <_> + + 0 -1 1376 -4.8064131289720535e-02 + + -8.6817431449890137e-01 6.6064838320016861e-03 + <_> + + 0 -1 1377 1.8479900434613228e-02 + + 6.9977812469005585e-02 -1.5929399430751801e-01 + <_> + + 0 -1 1378 2.4549840018153191e-02 + + -1.7519120126962662e-02 1.7961919307708740e-01 + <_> + + 0 -1 1379 3.9227470755577087e-02 + + -4.7417990863323212e-02 2.7945789694786072e-01 + <_> + + 0 -1 1380 4.1248198598623276e-02 + + 1.1459370143711567e-02 -4.3477478623390198e-01 + <_> + + 0 -1 1381 -8.4321142639964819e-04 + + 1.2758859992027283e-01 -9.7010560333728790e-02 + <_> + + 0 -1 1382 -1.3688740320503712e-02 + + -1.6236190497875214e-01 4.3290950357913971e-02 + <_> + + 0 -1 1383 -5.5982511490583420e-02 + + -7.5431138277053833e-01 1.5797710046172142e-02 + <_> + + 0 -1 1384 7.3578268289566040e-02 + + -1.4777439646422863e-03 -1.0000350475311279e+00 + <_> + + 0 -1 1385 3.7084969226270914e-03 + + -9.7184643149375916e-02 1.2435329705476761e-01 + <_> + + 0 -1 1386 -1.4889879821566865e-05 + + 7.1465343236923218e-02 -1.6840849816799164e-01 + <_> + + 0 -1 1387 1.0487560182809830e-01 + + 1.5076650306582451e-02 -7.1159482002258301e-01 + <_> + + 0 -1 1388 1.2587489560246468e-02 + + -2.0771300420165062e-02 1.7468680441379547e-01 + <_> + + 0 -1 1389 -2.2228389570955187e-04 + + 1.1781640350818634e-01 -9.2627458274364471e-02 + <_> + + 0 -1 1390 -7.7760413289070129e-02 + + -7.4605411291122437e-01 3.6328181158751249e-03 + <_> + + 0 -1 1391 4.5043420046567917e-02 + + 2.2217869758605957e-02 -5.0052911043167114e-01 + <_> + + 0 -1 1392 3.5614410880953074e-03 + + -5.1213219761848450e-02 8.9986503124237061e-02 + <_> + + 0 -1 1393 -7.4102368671447039e-04 + + 1.3938049972057343e-01 -1.0272219777107239e-01 + <_> + 107 + -6.0689288377761841e-01 + + <_> + + 0 -1 1394 -8.5600130259990692e-03 + + 1.6578909754753113e-01 -1.6412919759750366e-01 + <_> + + 0 -1 1395 3.0798809602856636e-02 + + -3.3495649695396423e-02 2.8578650951385498e-01 + <_> + + 0 -1 1396 -3.7319411057978868e-04 + + 1.2523449957370758e-01 -1.2115170061588287e-01 + <_> + + 0 -1 1397 -1.9253849983215332e-02 + + -8.7740883231163025e-02 3.9066571742296219e-02 + <_> + + 0 -1 1398 -8.5401646792888641e-03 + + 1.3152270019054413e-01 -1.3007740676403046e-01 + <_> + + 0 -1 1399 1.2424349784851074e-01 + + 1.9019979983568192e-02 -7.8247052431106567e-01 + <_> + + 0 -1 1400 4.0093418210744858e-02 + + -4.0743768215179443e-02 3.8851749897003174e-01 + <_> + + 0 -1 1401 -4.4169559259898961e-05 + + 4.5526970177888870e-02 -8.8063806295394897e-02 + <_> + + 0 -1 1402 -1.7662849277257919e-02 + + -3.1371811032295227e-01 5.1794338971376419e-02 + <_> + + 0 -1 1403 5.2368510514497757e-02 + + -3.5845998674631119e-02 1.5009739995002747e-01 + <_> + + 0 -1 1404 -2.8719279915094376e-02 + + -1.9849379360675812e-01 7.8099071979522705e-02 + <_> + + 0 -1 1405 6.9435790181159973e-02 + + -5.5073730647563934e-02 2.1780849993228912e-01 + <_> + + 0 -1 1406 5.4794438183307648e-02 + + -3.0223689973354340e-02 6.2993967533111572e-01 + <_> + + 0 -1 1407 -1.5315500088036060e-02 + + -1.5052799880504608e-01 2.0194370299577713e-02 + <_> + + 0 -1 1408 2.9001969844102859e-02 + + -2.0738989114761353e-02 4.5645099878311157e-01 + <_> + + 0 -1 1409 -2.3264769464731216e-02 + + 1.4672529697418213e-01 -3.8081351667642593e-02 + <_> + + 0 -1 1410 1.9063109531998634e-02 + + 7.2921238839626312e-02 -2.2723700106143951e-01 + <_> + + 0 -1 1411 1.2208239641040564e-03 + + 7.3471322655677795e-02 -1.9122929871082306e-01 + <_> + + 0 -1 1412 -1.7565910518169403e-01 + + 2.5924688577651978e-01 -5.6015118956565857e-02 + <_> + + 0 -1 1413 -3.8042131811380386e-02 + + 1.6113610565662384e-01 -4.3758820742368698e-02 + <_> + + 0 -1 1414 3.0130259692668915e-02 + + 5.7830829173326492e-02 -2.9774171113967896e-01 + <_> + + 0 -1 1415 2.0089220255613327e-02 + + -6.0509629547595978e-02 3.3441681414842606e-02 + <_> + + 0 -1 1416 2.6193389203399420e-04 + + -1.5175449848175049e-01 1.1094109714031219e-01 + <_> + + 0 -1 1417 4.0310628712177277e-02 + + 1.7477119341492653e-02 -1.4185379445552826e-01 + <_> + + 0 -1 1418 -2.9343019705265760e-03 + + -1.6960139572620392e-01 9.3530252575874329e-02 + <_> + + 0 -1 1419 1.4554520137608051e-02 + + -7.5844526290893555e-02 2.7771660685539246e-01 + <_> + + 0 -1 1420 3.4086001105606556e-03 + + 7.3933310806751251e-02 -1.9626590609550476e-01 + <_> + + 0 -1 1421 -6.7988429218530655e-03 + + -2.0132480561733246e-01 5.8276038616895676e-02 + <_> + + 0 -1 1422 -5.0457930192351341e-03 + + 1.9446060061454773e-01 -7.1691580116748810e-02 + <_> + + 0 -1 1423 1.0465010069310665e-02 + + -4.7314591705799103e-02 1.9316110014915466e-01 + <_> + + 0 -1 1424 -1.6713530058041215e-03 + + 9.2915147542953491e-02 -1.1890129745006561e-01 + <_> + + 0 -1 1425 -4.2704358696937561e-02 + + 1.6961039602756500e-01 -2.0632650703191757e-02 + <_> + + 0 -1 1426 2.0367829501628876e-01 + + 2.3246899247169495e-02 -4.9420261383056641e-01 + <_> + + 0 -1 1427 -8.3379482384771109e-04 + + 5.0001069903373718e-02 -7.3779806494712830e-02 + <_> + + 0 -1 1428 1.7854769527912140e-01 + + 1.5588290058076382e-02 -7.7650082111358643e-01 + <_> + + 0 -1 1429 -1.3535289466381073e-01 + + -5.2299112081527710e-01 3.1595760956406593e-03 + <_> + + 0 -1 1430 4.6555269509553909e-02 + + -4.1891060769557953e-02 3.0324798822402954e-01 + <_> + + 0 -1 1431 2.2663649171590805e-02 + + 3.8851160556077957e-02 -8.5196226835250854e-02 + <_> + + 0 -1 1432 -2.3027729988098145e-01 + + -9.3503099679946899e-01 1.3942349702119827e-02 + <_> + + 0 -1 1433 2.5714140385389328e-02 + + -9.1460775583982468e-03 7.8063201904296875e-01 + <_> + + 0 -1 1434 -7.3728510869841557e-06 + + 6.2730923295021057e-02 -2.0042170584201813e-01 + <_> + + 0 -1 1435 -1.9757889211177826e-02 + + -2.3434729874134064e-01 1.4600900001823902e-02 + <_> + + 0 -1 1436 -4.1893101297318935e-03 + + 1.4971399307250977e-01 -6.9368869066238403e-02 + <_> + + 0 -1 1437 1.1314969742670655e-03 + + -6.9203592836856842e-02 1.0447440296411514e-01 + <_> + + 0 -1 1438 6.3914088532328606e-03 + + 5.6134030222892761e-02 -1.9862769544124603e-01 + <_> + + 0 -1 1439 -3.7047569639980793e-03 + + 9.6817292273044586e-02 -9.5282286405563354e-02 + <_> + + 0 -1 1440 3.0627459287643433e-02 + + -5.0079640001058578e-02 2.6023888587951660e-01 + <_> + + 0 -1 1441 3.2444439828395844e-02 + + 3.1099939718842506e-02 -2.0788609981536865e-01 + <_> + + 0 -1 1442 1.1651559732854366e-02 + + -5.8311950415372849e-02 2.5374108552932739e-01 + <_> + + 0 -1 1443 -3.6515220999717712e-02 + + -2.6749190688133240e-01 2.0536249503493309e-02 + <_> + + 0 -1 1444 1.7474630847573280e-02 + + 4.7416981309652328e-02 -3.3719009160995483e-01 + <_> + + 0 -1 1445 -1.5204170485958457e-03 + + 5.8933809399604797e-02 -9.5844946801662445e-02 + <_> + + 0 -1 1446 4.7761179506778717e-02 + + 1.0849700309336185e-02 -8.6635017395019531e-01 + <_> + + 0 -1 1447 -6.3569113612174988e-02 + + 2.5858598947525024e-01 -1.8156580626964569e-02 + <_> + + 0 -1 1448 -1.7476839711889625e-03 + + 7.5750246644020081e-02 -1.4295279979705811e-01 + <_> + + 0 -1 1449 -4.6762558631598949e-03 + + -9.1223396360874176e-02 1.3135279715061188e-01 + <_> + + 0 -1 1450 2.2202100604772568e-02 + + -5.3397450596094131e-02 2.0743979513645172e-01 + <_> + + 0 -1 1451 -2.4647359549999237e-01 + + -4.5610219240188599e-01 3.5777890589088202e-03 + <_> + + 0 -1 1452 5.0148782320320606e-03 + + 8.8871829211711884e-02 -1.6236490011215210e-01 + <_> + + 0 -1 1453 -4.2023971676826477e-02 + + 1.2805579602718353e-01 -1.1926759965717793e-02 + <_> + + 0 -1 1454 -1.0895519703626633e-01 + + -6.6466122865676880e-01 1.5905549749732018e-02 + <_> + + 0 -1 1455 -3.6672928929328918e-01 + + 3.6374801397323608e-01 -3.1206229701638222e-02 + <_> + + 0 -1 1456 9.5884501934051514e-03 + + 9.1073550283908844e-02 -1.2492360174655914e-01 + <_> + + 0 -1 1457 1.6124530229717493e-03 + + 3.3751979470252991e-02 -5.8749239891767502e-02 + <_> + + 0 -1 1458 -1.7882430925965309e-02 + + 2.0992769300937653e-01 -6.3215233385562897e-02 + <_> + + 0 -1 1459 -6.6655018599703908e-05 + + 5.5020030587911606e-02 -1.7908810079097748e-01 + <_> + + 0 -1 1460 -1.0912610217928886e-02 + + -1.7878860235214233e-01 6.4088903367519379e-02 + <_> + + 0 -1 1461 -1.9031569827347994e-03 + + 1.1012560129165649e-01 -6.2576442956924438e-02 + <_> + + 0 -1 1462 4.7322059981524944e-03 + + 6.0611810535192490e-02 -1.7521250247955322e-01 + <_> + + 0 -1 1463 1.7955000698566437e-01 + + -2.6413710787892342e-02 5.1463198661804199e-01 + <_> + + 0 -1 1464 -1.8869279883801937e-03 + + 7.0732869207859039e-02 -1.8977560102939606e-01 + <_> + + 0 -1 1465 -3.5322420299053192e-03 + + 9.5800288021564484e-02 -4.9251660704612732e-02 + <_> + + 0 -1 1466 1.0818409500643611e-03 + + -9.7082488238811493e-02 1.4092449843883514e-01 + <_> + + 0 -1 1467 -9.5455259084701538e-02 + + -6.8376517295837402e-01 8.8187018409371376e-03 + <_> + + 0 -1 1468 1.6179149970412254e-03 + + -9.5129579305648804e-02 1.1351480334997177e-01 + <_> + + 0 -1 1469 6.5547877550125122e-01 + + 9.7635984420776367e-03 -5.6581187248229980e-01 + <_> + + 0 -1 1470 -7.7973723411560059e-02 + + 3.5573729872703552e-01 -3.3126130700111389e-02 + <_> + + 0 -1 1471 2.0209029316902161e-02 + + 3.9301611483097076e-02 -1.3580250740051270e-01 + <_> + + 0 -1 1472 9.0323589742183685e-02 + + -1.5932930633425713e-02 6.9409132003784180e-01 + <_> + + 0 -1 1473 -6.2048831023275852e-03 + + -1.7037659883499146e-01 6.8090677261352539e-02 + <_> + + 0 -1 1474 -1.5737250447273254e-02 + + 1.6250109672546387e-01 -6.6528938710689545e-02 + <_> + + 0 -1 1475 -3.5397041589021683e-02 + + -8.9766547083854675e-02 4.9135740846395493e-02 + <_> + + 0 -1 1476 3.2850861549377441e-02 + + 8.5158139467239380e-02 -1.3002319633960724e-01 + <_> + + 0 -1 1477 -8.4024056792259216e-02 + + 3.0658489465713501e-01 -3.9313621819019318e-02 + <_> + + 0 -1 1478 2.1347659640014172e-03 + + 8.3386950194835663e-02 -1.2239480018615723e-01 + <_> + + 0 -1 1479 1.7922610044479370e-01 + + 2.6004109531641006e-03 -9.9989092350006104e-01 + <_> + + 0 -1 1480 1.1854390054941177e-01 + + 1.1098369956016541e-02 -8.9629507064819336e-01 + <_> + + 0 -1 1481 -2.7351840399205685e-03 + + 1.1589130014181137e-01 -6.3589207828044891e-02 + <_> + + 0 -1 1482 6.6092880442738533e-03 + + -7.9491429030895233e-02 1.8501229584217072e-01 + <_> + + 0 -1 1483 -2.1072009578347206e-02 + + -1.4708499610424042e-01 2.6071280241012573e-02 + <_> + + 0 -1 1484 1.3411619700491428e-02 + + 4.8645589500665665e-02 -2.2041800618171692e-01 + <_> + + 0 -1 1485 -2.0661540329456329e-02 + + 2.1374049782752991e-01 -2.2243229672312737e-02 + <_> + + 0 -1 1486 -1.0939250141382217e-01 + + -7.9235088825225830e-01 1.1932499706745148e-02 + <_> + + 0 -1 1487 5.4573271423578262e-02 + + -8.7064085528254509e-03 3.8226109743118286e-01 + <_> + + 0 -1 1488 -2.7845989912748337e-02 + + 4.2096340656280518e-01 -3.4300819039344788e-02 + <_> + + 0 -1 1489 1.4973179996013641e-01 + + 5.5857440456748009e-03 -7.1027070283889771e-01 + <_> + + 0 -1 1490 5.4548021405935287e-02 + + 1.9289769232273102e-02 -5.5061852931976318e-01 + <_> + + 0 -1 1491 5.4990737698972225e-03 + + 4.3643891811370850e-02 -1.2233699858188629e-01 + <_> + + 0 -1 1492 3.5988059244118631e-04 + + -9.5005020499229431e-02 1.2501640617847443e-01 + <_> + + 0 -1 1493 -5.1003068685531616e-02 + + -3.4648188948631287e-01 1.4124399982392788e-02 + <_> + + 0 -1 1494 -5.9379130601882935e-02 + + 6.8840432167053223e-01 -2.0780999213457108e-02 + <_> + + 0 -1 1495 6.8976037204265594e-02 + + 8.5678137838840485e-03 -6.9098550081253052e-01 + <_> + + 0 -1 1496 -4.3954830616712570e-03 + + -1.7382889986038208e-01 6.9105990231037140e-02 + <_> + + 0 -1 1497 1.3838030397891998e-02 + + -2.9398119077086449e-02 1.9685789942741394e-01 + <_> + + 0 -1 1498 -7.5316978618502617e-03 + + -3.5790848731994629e-01 3.9685450494289398e-02 + <_> + + 0 -1 1499 -8.8299706578254700e-02 + + -2.3770420253276825e-01 3.0232321005314589e-03 + <_> + + 0 -1 1500 -4.4138759374618530e-02 + + 2.6541408896446228e-01 -5.1865179091691971e-02 + <_> + 107 + -5.6881058216094971e-01 + + <_> + + 0 -1 1501 -9.2582583427429199e-02 + + 3.6183288693428040e-01 -7.8275963664054871e-02 + <_> + + 0 -1 1502 -4.8143980093300343e-03 + + -1.2681719660758972e-01 6.7723788321018219e-02 + <_> + + 0 -1 1503 3.2365128397941589e-02 + + -4.6087108552455902e-02 3.2692021131515503e-01 + <_> + + 0 -1 1504 -1.7028570175170898e-02 + + 9.1306403279304504e-02 -1.1660590022802353e-01 + <_> + + 0 -1 1505 -1.1308620125055313e-01 + + -7.9631358385086060e-01 5.8426991105079651e-02 + <_> + + 0 -1 1506 -3.5633759107440710e-03 + + -8.2610622048377991e-02 1.0166700184345245e-01 + <_> + + 0 -1 1507 -2.4109560251235962e-01 + + 2.7927228808403015e-01 -8.0744966864585876e-02 + <_> + + 0 -1 1508 2.2599289193749428e-02 + + 5.1744598895311356e-02 -2.8865408897399902e-01 + <_> + + 0 -1 1509 2.0002270117402077e-02 + + -5.7962361723184586e-02 2.9044789075851440e-01 + <_> + + 0 -1 1510 -1.9348099594935775e-03 + + 9.8808683454990387e-02 -1.2368459999561310e-01 + <_> + + 0 -1 1511 -7.5757717713713646e-03 + + -2.0071910321712494e-01 9.2741288244724274e-02 + <_> + + 0 -1 1512 3.3381819725036621e-02 + + -3.4530758857727051e-02 3.0876499414443970e-01 + <_> + + 0 -1 1513 4.7418981790542603e-02 + + -1.3563269376754761e-01 1.1016750335693359e-01 + <_> + + 0 -1 1514 -5.4173129610717297e-03 + + -1.6050089895725250e-01 7.2612293064594269e-02 + <_> + + 0 -1 1515 -9.6942558884620667e-03 + + -1.6376489400863647e-01 8.4426470100879669e-02 + <_> + + 0 -1 1516 -6.0632169246673584e-02 + + 1.6474419832229614e-01 -2.6981400325894356e-02 + <_> + + 0 -1 1517 5.0302860327064991e-03 + + -1.0996829718351364e-01 1.3480730354785919e-01 + <_> + + 0 -1 1518 -8.7792202830314636e-02 + + -6.8317967653274536e-01 1.0834610089659691e-02 + <_> + + 0 -1 1519 3.0390409752726555e-02 + + -4.2450569570064545e-02 3.0770599842071533e-01 + <_> + + 0 -1 1520 -5.1566340029239655e-02 + + -6.2840008735656738e-01 9.7069833427667618e-03 + <_> + + 0 -1 1521 -4.2446999577805400e-04 + + 8.4595613181591034e-02 -1.8075129389762878e-01 + <_> + + 0 -1 1522 -1.2135359644889832e-01 + + -1.2717489898204803e-01 9.6575058996677399e-02 + <_> + + 0 -1 1523 -1.5150560066103935e-02 + + 9.3037553131580353e-02 -1.3127900660037994e-01 + <_> + + 0 -1 1524 3.9446409791707993e-02 + + 2.5543639436364174e-02 -1.1460640281438828e-01 + <_> + + 0 -1 1525 -8.2465475425124168e-03 + + 2.4008710682392120e-01 -5.1680248230695724e-02 + <_> + + 0 -1 1526 3.5262361168861389e-02 + + -3.3555049449205399e-02 2.0575499534606934e-01 + <_> + + 0 -1 1527 1.1703060008585453e-02 + + 2.3529250174760818e-02 -4.9983900785446167e-01 + <_> + + 0 -1 1528 4.2969968169927597e-02 + + -1.2683330103754997e-02 5.4043388366699219e-01 + <_> + + 0 -1 1529 -1.5811799094080925e-02 + + 3.9564150571823120e-01 -3.5568390041589737e-02 + <_> + + 0 -1 1530 4.6253358013927937e-03 + + 5.2370540797710419e-02 -2.2989930212497711e-01 + <_> + + 0 -1 1531 -1.5898230485618114e-03 + + 1.3792009651660919e-01 -8.6783193051815033e-02 + <_> + + 0 -1 1532 6.2329089269042015e-04 + + -8.6643829941749573e-02 5.7710029184818268e-02 + <_> + + 0 -1 1533 7.0994929410517216e-03 + + 7.5797617435455322e-02 -1.6898870468139648e-01 + <_> + + 0 -1 1534 6.9608777761459351e-02 + + -1.2454699724912643e-02 2.0845200121402740e-01 + <_> + + 0 -1 1535 -1.8759520724415779e-02 + + -5.5008620023727417e-01 2.1040279418230057e-02 + <_> + + 0 -1 1536 4.6513788402080536e-02 + + -2.5904009118676186e-02 1.8322019279003143e-01 + <_> + + 0 -1 1537 2.1638579666614532e-02 + + -3.8873910903930664e-02 2.9919698834419250e-01 + <_> + + 0 -1 1538 -7.6772570610046387e-02 + + -1. 3.9020550902932882e-03 + <_> + + 0 -1 1539 4.0535528212785721e-02 + + 1.8880680203437805e-02 -6.6033887863159180e-01 + <_> + + 0 -1 1540 4.0338758379220963e-02 + + 9.2877401039004326e-03 -3.4422031044960022e-01 + <_> + + 0 -1 1541 4.3404240161180496e-02 + + -2.2111779078841209e-02 5.1227712631225586e-01 + <_> + + 0 -1 1542 1.6895130276679993e-02 + + 3.0058480799198151e-02 -1.8648600578308105e-01 + <_> + + 0 -1 1543 3.0269259586930275e-03 + + -1.3979099690914154e-01 8.7544560432434082e-02 + <_> + + 0 -1 1544 -3.7171840667724609e-01 + + -2.9676678776741028e-01 1.6241550445556641e-02 + <_> + + 0 -1 1545 -2.5798739865422249e-02 + + -4.3713501095771790e-01 2.6768149808049202e-02 + <_> + + 0 -1 1546 -9.0826600790023804e-03 + + 9.9548496305942535e-02 -3.8500539958477020e-02 + <_> + + 0 -1 1547 -1.7977179959416389e-03 + + 1.3810199499130249e-01 -7.5387232005596161e-02 + <_> + + 0 -1 1548 1.2435699999332428e-01 + + 4.6064029447734356e-03 -3.6909800767898560e-01 + <_> + + 0 -1 1549 -1.2901489622890949e-02 + + -2.0433300733566284e-01 5.3133610635995865e-02 + <_> + + 0 -1 1550 -1.3352099806070328e-02 + + -1.0512170195579529e-01 5.9746239334344864e-02 + <_> + + 0 -1 1551 -3.0650520697236061e-02 + + 3.4366500377655029e-01 -3.9617810398340225e-02 + <_> + + 0 -1 1552 2.0778391044586897e-03 + + -5.0755288451910019e-02 7.2930753231048584e-02 + <_> + + 0 -1 1553 -6.1161179095506668e-02 + + 7.8371667861938477e-01 -1.3940130360424519e-02 + <_> + + 0 -1 1554 -6.6681973636150360e-02 + + -6.7010307312011719e-01 4.2770858854055405e-03 + <_> + + 0 -1 1555 2.7359850704669952e-02 + + 2.4253180250525475e-02 -4.2671859264373779e-01 + <_> + + 0 -1 1556 -2.4731201119720936e-03 + + 9.6493236720561981e-02 -5.7433839887380600e-02 + <_> + + 0 -1 1557 -1.0721489787101746e-02 + + -2.1575610339641571e-01 4.4256970286369324e-02 + <_> + + 0 -1 1558 -1.3936980068683624e-01 + + -3.6377531290054321e-01 1.0005139745771885e-02 + <_> + + 0 -1 1559 -5.6867711246013641e-02 + + 3.0327269434928894e-01 -3.7230789661407471e-02 + <_> + + 0 -1 1560 -6.5776512026786804e-02 + + -1. 1.2443619780242443e-03 + <_> + + 0 -1 1561 -1.5500129666179419e-03 + + 1.2898580729961395e-01 -8.5528247058391571e-02 + <_> + + 0 -1 1562 8.7909551803022623e-04 + + -7.9906381666660309e-02 1.2847130000591278e-01 + <_> + + 0 -1 1563 2.9614660888910294e-03 + + 8.9433841407299042e-02 -1.7047980427742004e-01 + <_> + + 0 -1 1564 -5.0735038518905640e-01 + + -8.4197628498077393e-01 2.3592109791934490e-03 + <_> + + 0 -1 1565 3.5409200936555862e-02 + + 1.7137490212917328e-02 -5.9052079916000366e-01 + <_> + + 0 -1 1566 -4.6220239251852036e-02 + + 4.7383689880371094e-01 -1.1423089541494846e-02 + <_> + + 0 -1 1567 4.0875099599361420e-02 + + -2.6714079082012177e-02 4.2139878869056702e-01 + <_> + + 0 -1 1568 -5.7651810348033905e-02 + + 5.6021291017532349e-01 -9.5757292583584785e-03 + <_> + + 0 -1 1569 3.3733060117810965e-03 + + 7.2323620319366455e-02 -1.5510480105876923e-01 + <_> + + 0 -1 1570 -3.4096160531044006e-01 + + -1. -3.1605950789526105e-04 + <_> + + 0 -1 1571 -5.5850511416792870e-03 + + -1.5768070518970490e-01 7.3625743389129639e-02 + <_> + + 0 -1 1572 -1.1067239940166473e-01 + + 2.3640440404415131e-01 -1.2670779600739479e-02 + <_> + + 0 -1 1573 4.3246410787105560e-02 + + -4.9346420913934708e-02 3.0113101005554199e-01 + <_> + + 0 -1 1574 -5.8916499838232994e-03 + + -1.4727650582790375e-01 6.1345700174570084e-02 + <_> + + 0 -1 1575 -2.8674090572167188e-05 + + 1.1539240181446075e-01 -1.4692650735378265e-01 + <_> + + 0 -1 1576 2.6174910366535187e-02 + + -2.2960580885410309e-02 2.1004410088062286e-01 + <_> + + 0 -1 1577 -1.9902619533240795e-03 + + 9.7250632941722870e-02 -1.3244929909706116e-01 + <_> + + 0 -1 1578 -1.6960840672254562e-02 + + -3.1949061155319214e-01 3.6188289523124695e-02 + <_> + + 0 -1 1579 -1.5634739398956299e-01 + + 3.1934529542922974e-01 -4.1917070746421814e-02 + <_> + + 0 -1 1580 -2.3863950371742249e-01 + + 3.8183578848838806e-01 -8.6567532271146774e-03 + <_> + + 0 -1 1581 -7.7641502022743225e-02 + + -3.3156651258468628e-01 3.3491149544715881e-02 + <_> + + 0 -1 1582 -4.5257899910211563e-02 + + 4.6058529615402222e-01 -3.1354859471321106e-02 + <_> + + 0 -1 1583 -3.3390790224075317e-02 + + -7.2974747419357300e-01 1.6206990927457809e-02 + <_> + + 0 -1 1584 7.3079466819763184e-02 + + -1.9201450049877167e-02 3.4011909365653992e-01 + <_> + + 0 -1 1585 -5.4536230862140656e-02 + + 3.3227160573005676e-01 -3.3163428306579590e-02 + <_> + + 0 -1 1586 3.9552688598632812e-02 + + 1.1817559599876404e-02 -3.2131719589233398e-01 + <_> + + 0 -1 1587 5.9160130331292748e-04 + + -1.1766350269317627e-01 8.8002361357212067e-02 + <_> + + 0 -1 1588 3.5379730165004730e-02 + + 1.8286190927028656e-02 -1.6206890344619751e-01 + <_> + + 0 -1 1589 2.0152490586042404e-02 + + 2.2825939580798149e-02 -4.3034788966178894e-01 + <_> + + 0 -1 1590 -2.9185289517045021e-02 + + 1.8256959319114685e-01 -1.6376309096813202e-02 + <_> + + 0 -1 1591 -2.1705780178308487e-02 + + -6.6977721452713013e-01 1.6782360151410103e-02 + <_> + + 0 -1 1592 4.2584270238876343e-02 + + -1.6852499917149544e-02 3.4360399842262268e-01 + <_> + + 0 -1 1593 -1.2663739919662476e-01 + + 2.6748588681221008e-01 -3.6107789725065231e-02 + <_> + + 0 -1 1594 1.4260070025920868e-01 + + 1.4445270411670208e-02 -1.9729509949684143e-01 + <_> + + 0 -1 1595 5.3560931235551834e-02 + + 1.7324799671769142e-02 -5.9609222412109375e-01 + <_> + + 0 -1 1596 -5.9380959719419479e-03 + + -6.5156273543834686e-02 5.9645600616931915e-02 + <_> + + 0 -1 1597 -6.6497321240603924e-03 + + 1.4270019531250000e-01 -7.9669818282127380e-02 + <_> + + 0 -1 1598 -3.0137640424072742e-03 + + 1.3996289670467377e-01 -9.4831757247447968e-02 + <_> + + 0 -1 1599 -1.7213050276041031e-02 + + -1.7265740036964417e-01 6.9451652467250824e-02 + <_> + + 0 -1 1600 1.0775709897279739e-01 + + -4.6757548116147518e-03 9.2161870002746582e-01 + <_> + + 0 -1 1601 5.8738540858030319e-02 + + -4.2458981275558472e-02 2.8832349181175232e-01 + <_> + + 0 -1 1602 -3.0475479364395142e-01 + + -1. 2.6918480216409080e-05 + <_> + + 0 -1 1603 2.0395779609680176e-01 + + 2.5317989289760590e-02 -5.0275158882141113e-01 + <_> + + 0 -1 1604 -9.7794281318783760e-03 + + -1.9060879945755005e-01 3.0577139928936958e-02 + <_> + + 0 -1 1605 -2.2775499150156975e-02 + + 2.7048370242118835e-01 -5.1001209765672684e-02 + <_> + + 0 -1 1606 9.8080374300479889e-03 + + 2.4180250242352486e-02 -7.5000837445259094e-02 + <_> + + 0 -1 1607 -1.1130969971418381e-02 + + -2.3825749754905701e-01 6.4388722181320190e-02 + <_> + 123 + -6.5824240446090698e-01 + + <_> + + 0 -1 1608 -2.1380689740180969e-01 + + 2.7686640620231628e-01 -9.2777818441390991e-02 + <_> + + 0 -1 1609 -3.3374479971826077e-03 + + 1.4119230210781097e-01 -5.1907159388065338e-02 + <_> + + 0 -1 1610 -2.8738550841808319e-02 + + -3.6243250966072083e-01 3.1938020139932632e-02 + <_> + + 0 -1 1611 -3.5554158966988325e-03 + + 1.1969120055437088e-01 -5.2306748926639557e-02 + <_> + + 0 -1 1612 -1.0732459835708141e-02 + + 2.8602668642997742e-01 -6.0555059462785721e-02 + <_> + + 0 -1 1613 8.7310239672660828e-02 + + -3.3613391220569611e-02 4.7786781191825867e-01 + <_> + + 0 -1 1614 2.1971999667584896e-03 + + 6.0207970440387726e-02 -2.1543750166893005e-01 + <_> + + 0 -1 1615 -7.4302748544141650e-05 + + 1.4141289889812469e-01 -1.2711560726165771e-01 + <_> + + 0 -1 1616 -2.9314011335372925e-01 + + -5.5598288774490356e-01 7.8105749562382698e-03 + <_> + + 0 -1 1617 7.7996537089347839e-02 + + -2.0238140597939491e-02 2.2233769297599792e-01 + <_> + + 0 -1 1618 4.9733570776879787e-03 + + -1.5410329401493073e-01 9.8874516785144806e-02 + <_> + + 0 -1 1619 -6.2232650816440582e-02 + + -2.5253909826278687e-01 2.5864329189062119e-02 + <_> + + 0 -1 1620 -7.4750548228621483e-03 + + -1.9071790575981140e-01 8.4528200328350067e-02 + <_> + + 0 -1 1621 2.2246010601520538e-02 + + -3.1024629250168800e-02 1.5289239585399628e-01 + <_> + + 0 -1 1622 -1.2305259704589844e-02 + + 1.1693249642848969e-01 -1.1092559993267059e-01 + <_> + + 0 -1 1623 -1.3985290424898267e-03 + + -2.0435670018196106e-01 8.7592259049415588e-02 + <_> + + 0 -1 1624 3.6361250281333923e-01 + + -1.8750319257378578e-02 8.5054528713226318e-01 + <_> + + 0 -1 1625 -3.8815739098936319e-03 + + 8.0643877387046814e-02 -1.0520999878644943e-01 + <_> + + 0 -1 1626 -5.2500631660223007e-02 + + 3.8002520799636841e-01 -3.6049079149961472e-02 + <_> + + 0 -1 1627 -7.9602311598137021e-04 + + 3.3794969320297241e-02 -7.5603879988193512e-02 + <_> + + 0 -1 1628 -2.0066089928150177e-02 + + -4.3842989206314087e-01 3.3389199525117874e-02 + <_> + + 0 -1 1629 -2.4233239237219095e-03 + + -9.3005247414112091e-02 4.9772828817367554e-02 + <_> + + 0 -1 1630 -6.8737422116100788e-03 + + 2.0374830067157745e-01 -5.8165848255157471e-02 + <_> + + 0 -1 1631 6.5535600297152996e-03 + + -7.0293396711349487e-02 1.4400149881839752e-01 + <_> + + 0 -1 1632 -1.6780680045485497e-02 + + -3.2226520776748657e-01 4.3717250227928162e-02 + <_> + + 0 -1 1633 2.5448070839047432e-02 + + 4.3461918830871582e-02 -1.5376989543437958e-01 + <_> + + 0 -1 1634 3.4656568896025419e-03 + + -6.3119992613792419e-02 2.1394529938697815e-01 + <_> + + 0 -1 1635 1.0132250189781189e-01 + + -1.7095830291509628e-02 1.8853299319744110e-01 + <_> + + 0 -1 1636 1.0714309662580490e-01 + + 3.5406891256570816e-02 -3.4869039058685303e-01 + <_> + + 0 -1 1637 -1.4500999823212624e-02 + + 3.7903580814599991e-02 -4.9169208854436874e-02 + <_> + + 0 -1 1638 -1.5354759991168976e-01 + + 3.5048320889472961e-01 -3.2774008810520172e-02 + <_> + + 0 -1 1639 -6.5137587487697601e-02 + + -4.1380020976066589e-01 7.3137627914547920e-03 + <_> + + 0 -1 1640 -2.9204839374870062e-03 + + -1.3756680488586426e-01 9.0795390307903290e-02 + <_> + + 0 -1 1641 -3.4104570746421814e-01 + + -6.7252027988433838e-01 1.5200230292975903e-02 + <_> + + 0 -1 1642 -4.4478259951574728e-05 + + 9.6579946577548981e-02 -1.0403420031070709e-01 + <_> + + 0 -1 1643 -1.1172229796648026e-01 + + -4.2234420776367188e-01 4.9457307904958725e-03 + <_> + + 0 -1 1644 2.0429869182407856e-03 + + 9.9474698305130005e-02 -1.0384540259838104e-01 + <_> + + 0 -1 1645 -7.2571309283375740e-03 + + -1.5049630403518677e-01 2.9724840074777603e-02 + <_> + + 0 -1 1646 -8.4451176226139069e-03 + + 9.5648579299449921e-02 -1.1805369704961777e-01 + <_> + + 0 -1 1647 -3.0194969847798347e-02 + + 4.6570628881454468e-01 -1.4386899769306183e-02 + <_> + + 0 -1 1648 5.7423918042331934e-04 + + -1.0382310301065445e-01 1.5052829682826996e-01 + <_> + + 0 -1 1649 8.2014611689373851e-04 + + -7.5132526457309723e-02 1.0363759845495224e-01 + <_> + + 0 -1 1650 7.0748180150985718e-03 + + 6.6062167286872864e-02 -1.7638419568538666e-01 + <_> + + 0 -1 1651 4.8304669559001923e-02 + + -1.7767660319805145e-02 2.6820158958435059e-01 + <_> + + 0 -1 1652 7.9041812568902969e-03 + + 5.1522739231586456e-02 -2.0632369816303253e-01 + <_> + + 0 -1 1653 8.4705486893653870e-02 + + 7.2250380180776119e-03 -5.9514737129211426e-01 + <_> + + 0 -1 1654 3.9120440487749875e-04 + + -1.0663530230522156e-01 1.1103810369968414e-01 + <_> + + 0 -1 1655 1.5959320589900017e-02 + + -4.8573691397905350e-02 2.5832009315490723e-01 + <_> + + 0 -1 1656 -1.8649259582161903e-03 + + 1.1551269888877869e-01 -1.5048590302467346e-01 + <_> + + 0 -1 1657 1.2727979570627213e-02 + + 4.7930240631103516e-02 -3.0310231447219849e-01 + <_> + + 0 -1 1658 -1.5954229747876525e-03 + + -1.5537570416927338e-01 8.3214886486530304e-02 + <_> + + 0 -1 1659 2.0234890282154083e-01 + + 1.1625860352069139e-03 -1.0000209808349609e+00 + <_> + + 0 -1 1660 -3.9196871221065521e-02 + + 3.0884549021720886e-01 -4.4524021446704865e-02 + <_> + + 0 -1 1661 1.5810640528798103e-02 + + -1.5927329659461975e-02 1.0144449770450592e-01 + <_> + + 0 -1 1662 -2.1568681113421917e-03 + + 9.5205381512641907e-02 -1.2910960614681244e-01 + <_> + + 0 -1 1663 -3.4604359418153763e-02 + + 2.7843558788299561e-01 -1.0775060392916203e-02 + <_> + + 0 -1 1664 -2.6206790935248137e-03 + + -1.3744530081748962e-01 9.2945456504821777e-02 + <_> + + 0 -1 1665 4.6692821197211742e-03 + + -5.8331821113824844e-02 1.5733839571475983e-01 + <_> + + 0 -1 1666 7.8623533248901367e-02 + + 1.1130830273032188e-02 -9.7138148546218872e-01 + <_> + + 0 -1 1667 3.9556730538606644e-02 + + 2.1708509884774685e-03 -4.3425449728965759e-01 + <_> + + 0 -1 1668 4.0571438148617744e-03 + + 8.6120717227458954e-02 -1.5579399466514587e-01 + <_> + + 0 -1 1669 -1.5014669857919216e-02 + + 1.3523979485034943e-01 -2.5724019855260849e-02 + <_> + + 0 -1 1670 4.6183250378817320e-04 + + -1.0766889899969101e-01 1.3633869588375092e-01 + <_> + + 0 -1 1671 5.2875209599733353e-02 + + 5.4555749520659447e-03 -3.9382910728454590e-01 + <_> + + 0 -1 1672 -5.9510860592126846e-02 + + 2.8690820932388306e-01 -4.2876079678535461e-02 + <_> + + 0 -1 1673 1.6650360077619553e-02 + + 2.8605299070477486e-02 -3.0349490046501160e-01 + <_> + + 0 -1 1674 1.4959629625082016e-02 + + -5.2699029445648193e-02 2.1825259923934937e-01 + <_> + + 0 -1 1675 -9.6224267035722733e-03 + + -2.1431450545787811e-01 4.8350628465414047e-02 + <_> + + 0 -1 1676 -4.5304261147975922e-02 + + -8.7308478355407715e-01 1.2449770234525204e-02 + <_> + + 0 -1 1677 -7.4465242214500904e-03 + + -1.3586209714412689e-01 3.3087320625782013e-02 + <_> + + 0 -1 1678 -1.1953880311921239e-03 + + 1.4848570525646210e-01 -8.5291646420955658e-02 + <_> + + 0 -1 1679 5.6622507981956005e-03 + + -5.3212448954582214e-02 1.2967950105667114e-01 + <_> + + 0 -1 1680 1.3971360400319099e-02 + + 2.5338830426335335e-02 -4.2097410559654236e-01 + <_> + + 0 -1 1681 -4.5216218568384647e-03 + + 1.2621529400348663e-01 -6.3135430216789246e-02 + <_> + + 0 -1 1682 4.7776158899068832e-03 + + -6.2899917364120483e-02 1.7724449932575226e-01 + <_> + + 0 -1 1683 -5.8305878192186356e-03 + + 8.7906002998352051e-02 -1.5553380548954010e-01 + <_> + + 0 -1 1684 -1.5879280865192413e-02 + + -1.2694430351257324e-01 1.0280299931764603e-01 + <_> + + 0 -1 1685 1.9526369869709015e-03 + + -7.6803453266620636e-02 4.7297749668359756e-02 + <_> + + 0 -1 1686 2.4521650746464729e-02 + + -2.7714680880308151e-02 4.0350469946861267e-01 + <_> + + 0 -1 1687 -8.4529399871826172e-02 + + 1. -2.1367999725043774e-03 + <_> + + 0 -1 1688 1.6844070050865412e-03 + + 7.4043400585651398e-02 -1.6334819793701172e-01 + <_> + + 0 -1 1689 1.3399059884250164e-02 + + -4.2453180998563766e-02 2.4164129793643951e-01 + <_> + + 0 -1 1690 4.4182639569044113e-02 + + 1.8039569258689880e-02 -6.4396840333938599e-01 + <_> + + 0 -1 1691 3.8327239453792572e-02 + + 7.5849238783121109e-03 -3.6534211039543152e-01 + <_> + + 0 -1 1692 2.5997089687734842e-03 + + -8.8553480803966522e-02 1.3763660192489624e-01 + <_> + + 0 -1 1693 1.0775480419397354e-02 + + 4.5753169804811478e-02 -1.1956000328063965e-01 + <_> + + 0 -1 1694 -2.0433649420738220e-02 + + 2.2020170092582703e-01 -5.1925841718912125e-02 + <_> + + 0 -1 1695 -1.2402729690074921e-01 + + 8.8846582174301147e-01 -5.1234480924904346e-03 + <_> + + 0 -1 1696 4.7838478349149227e-03 + + 5.3047031164169312e-02 -2.1085900068283081e-01 + <_> + + 0 -1 1697 -4.5895349234342575e-02 + + 4.4482690095901489e-01 -1.5117119997739792e-02 + <_> + + 0 -1 1698 1.4473790302872658e-02 + + -4.5201409608125687e-02 2.3556250333786011e-01 + <_> + + 0 -1 1699 1.8887920305132866e-03 + + 7.6443381607532501e-02 -1.6385370492935181e-01 + <_> + + 0 -1 1700 -1.9082069396972656e-01 + + 6.4662021398544312e-01 -1.8242619931697845e-02 + <_> + + 0 -1 1701 7.2158463299274445e-02 + + 6.2836478464305401e-03 -7.4822348356246948e-01 + <_> + + 0 -1 1702 9.7802944947034121e-04 + + 7.9063102602958679e-02 -1.3163650035858154e-01 + <_> + + 0 -1 1703 4.8602250171825290e-04 + + -4.2594909667968750e-02 6.9462761282920837e-02 + <_> + + 0 -1 1704 -1.0882800444960594e-02 + + -2.4503070116043091e-01 5.2326161414384842e-02 + <_> + + 0 -1 1705 1.1573769734241068e-04 + + -6.6729307174682617e-02 8.7088912725448608e-02 + <_> + + 0 -1 1706 2.0960739348083735e-03 + + -7.6154567301273346e-02 1.3598169386386871e-01 + <_> + + 0 -1 1707 4.3664351105690002e-02 + + 8.4812156856060028e-03 -8.1097167730331421e-01 + <_> + + 0 -1 1708 -1.1464370181784034e-03 + + 1.2721230089664459e-01 -8.4783419966697693e-02 + <_> + + 0 -1 1709 -5.5613541044294834e-03 + + -1.9722530245780945e-01 5.4411068558692932e-02 + <_> + + 0 -1 1710 3.4083850681781769e-02 + + -3.2338548451662064e-02 3.4062281250953674e-01 + <_> + + 0 -1 1711 5.1227081567049026e-02 + + -1.3262039981782436e-02 2.3953630030155182e-01 + <_> + + 0 -1 1712 3.3531729131937027e-02 + + 2.0279919728636742e-02 -4.8339051008224487e-01 + <_> + + 0 -1 1713 1.5396219678223133e-02 + + -2.9320189729332924e-02 1.5866099298000336e-01 + <_> + + 0 -1 1714 -1.7550770193338394e-02 + + 2.7488970756530762e-01 -3.7798319011926651e-02 + <_> + + 0 -1 1715 -7.5705647468566895e-02 + + -8.2214397192001343e-01 3.8814740255475044e-03 + <_> + + 0 -1 1716 -5.3475350141525269e-03 + + -1.6710759699344635e-01 7.7180616557598114e-02 + <_> + + 0 -1 1717 -3.3435279037803411e-03 + + -1.0673490166664124e-01 4.7575470060110092e-02 + <_> + + 0 -1 1718 1.9328270107507706e-02 + + -4.6563290059566498e-02 2.4716560542583466e-01 + <_> + + 0 -1 1719 8.5368983447551727e-02 + + 2.3296920582652092e-02 -5.0002247095108032e-01 + <_> + + 0 -1 1720 2.5927850510925055e-03 + + -1.1182250082492828e-01 1.1046089977025986e-01 + <_> + + 0 -1 1721 -9.1061238199472427e-03 + + 4.7107011079788208e-02 -5.5807661265134811e-02 + <_> + + 0 -1 1722 1.0170699656009674e-01 + + -1.5966609120368958e-02 6.9857317209243774e-01 + <_> + + 0 -1 1723 2.2854980081319809e-02 + + -1.7226219177246094e-02 1.2225689738988876e-01 + <_> + + 0 -1 1724 -1.6577079892158508e-02 + + -2.2225829958915710e-01 5.6578300893306732e-02 + <_> + + 0 -1 1725 -2.3641420528292656e-02 + + -2.7734050154685974e-01 1.6076890751719475e-02 + <_> + + 0 -1 1726 5.6385230273008347e-03 + + 4.5439280569553375e-02 -2.2549630701541901e-01 + <_> + + 0 -1 1727 5.7422029785811901e-03 + + -7.8568778932094574e-02 1.5234960615634918e-01 + <_> + + 0 -1 1728 -4.3363519944250584e-04 + + 9.5920950174331665e-02 -1.1274240165948868e-01 + <_> + + 0 -1 1729 1.0267919860780239e-02 + + -4.9332991242408752e-02 2.4810829758644104e-01 + <_> + + 0 -1 1730 1.3865719549357891e-02 + + 7.0547938346862793e-02 -1.8594330549240112e-01 + <_> + 127 + -3.0620599746704102e+01 + + <_> + + 0 -1 1731 -4.6980630606412888e-02 + + 1.7078550159931183e-01 -1.5687310695648193e-01 + <_> + + 0 -1 1732 -1.1967960000038147e-01 + + 5.1738417148590088e-01 -1.1747590266168118e-02 + <_> + + 0 -1 1733 -2.8477180749177933e-02 + + 2.3505200445652008e-01 -5.7424411177635193e-02 + <_> + + 0 -1 1734 1.9697479903697968e-01 + + -9.3123828992247581e-04 1.0037239789962769e+00 + <_> + + 0 -1 1735 7.9039083793759346e-03 + + 8.3357498049736023e-02 -1.6527499258518219e-01 + <_> + + 0 -1 1736 3.9338979870080948e-02 + + -6.5605872077867389e-04 3.2361468672752380e-01 + <_> + + 0 -1 1737 -1.5762429684400558e-03 + + 9.1129466891288757e-02 -1.4164330065250397e-01 + <_> + + 0 -1 1738 2.0851049339398742e-04 + + -1.3802680373191833e-01 7.7212989330291748e-02 + <_> + + 0 -1 1739 -2.6843539671972394e-04 + + 1.3646720349788666e-01 -9.4255752861499786e-02 + <_> + + 0 -1 1740 8.8506387546658516e-03 + + 2.4603420868515968e-02 -1.6884680092334747e-01 + <_> + + 0 -1 1741 -8.4813922876492143e-04 + + -1.3972400128841400e-01 1.1566729843616486e-01 + <_> + + 0 -1 1742 -3.7090150726726279e-05 + + 7.5284272432327271e-02 -1.7708149552345276e-01 + <_> + + 0 -1 1743 -2.1533910185098648e-02 + + 2.0233030617237091e-01 -6.6978476941585541e-02 + <_> + + 0 -1 1744 1.1713660322129726e-02 + + 8.6853489279747009e-02 -1.1251810193061829e-01 + <_> + + 0 -1 1745 -9.8365638405084610e-03 + + 3.0164790153503418e-01 -5.0179660320281982e-02 + <_> + + 0 -1 1746 -6.2104999087750912e-03 + + 6.8224228918552399e-02 -9.4441823661327362e-02 + <_> + + 0 -1 1747 -2.0034300163388252e-02 + + -2.8657549619674683e-01 4.5728500932455063e-02 + <_> + + 0 -1 1748 -2.2154829639475793e-04 + + 7.1603760123252869e-02 -8.7115049362182617e-02 + <_> + + 0 -1 1749 -5.2436119876801968e-03 + + 1.3439500331878662e-01 -9.0288907289505005e-02 + <_> + + 0 -1 1750 -1.1711229570209980e-02 + + 1.4874699711799622e-01 -2.5951780378818512e-02 + <_> + + 0 -1 1751 5.8587929233908653e-03 + + -6.6982023417949677e-02 1.8096329271793365e-01 + <_> + + 0 -1 1752 1.0432569682598114e-01 + + 1.0209330357611179e-02 -7.9540812969207764e-01 + <_> + + 0 -1 1753 -1.7049130052328110e-02 + + -2.0516310632228851e-01 6.4470991492271423e-02 + <_> + + 0 -1 1754 2.5877699255943298e-02 + + -3.0079720541834831e-02 1.6041970252990723e-01 + <_> + + 0 -1 1755 -4.0637338533997536e-03 + + 1.0870960354804993e-01 -1.1665400117635727e-01 + <_> + + 0 -1 1756 -1.9286720082163811e-02 + + -1.2503950297832489e-01 2.8055189177393913e-02 + <_> + + 0 -1 1757 -7.2130301305151079e-06 + + 1.1845260113477707e-01 -1.2367019802331924e-01 + <_> + + 0 -1 1758 -2.6098350062966347e-03 + + -1.4498670399188995e-01 8.2318760454654694e-02 + <_> + + 0 -1 1759 3.2303779153153300e-04 + + -9.5855496823787689e-02 1.1992660164833069e-01 + <_> + + 0 -1 1760 -1.1308960383757949e-03 + + 1.2882959842681885e-01 -8.2697473466396332e-02 + <_> + + 0 -1 1761 1.7176469787955284e-02 + + 3.6024659872055054e-02 -3.0873811244964600e-01 + <_> + + 0 -1 1762 -1.0515330359339714e-02 + + 9.6330337226390839e-02 -1.0785780102014542e-01 + <_> + + 0 -1 1763 5.0583500415086746e-02 + + -3.4715801477432251e-02 4.5134508609771729e-01 + <_> + + 0 -1 1764 8.7582931155338883e-04 + + -9.5677152276039124e-02 7.3631688952445984e-02 + <_> + + 0 -1 1765 -3.1957220286130905e-02 + + -3.1473490595817566e-01 3.6329280585050583e-02 + <_> + + 0 -1 1766 5.9863331262022257e-04 + + -4.2676690965890884e-02 5.4342899471521378e-02 + <_> + + 0 -1 1767 -6.6270949319005013e-03 + + 7.3510922491550446e-02 -1.7309080064296722e-01 + <_> + + 0 -1 1768 -7.3186516761779785e-02 + + 6.8777692317962646e-01 -5.6781149469316006e-03 + <_> + + 0 -1 1769 2.0290840417146683e-02 + + -4.0720541030168533e-02 3.0450868606567383e-01 + <_> + + 0 -1 1770 -3.0989840161055326e-03 + + -1.2787370383739471e-01 5.4329689592123032e-02 + <_> + + 0 -1 1771 -1.1258859885856509e-03 + + 1.1980079859495163e-01 -8.3477236330509186e-02 + <_> + + 0 -1 1772 3.9993048994801939e-04 + + -9.5427073538303375e-02 7.6952911913394928e-02 + <_> + + 0 -1 1773 1.1202540248632431e-02 + + 2.5125309824943542e-02 -4.0314701199531555e-01 + <_> + + 0 -1 1774 -2.1753970533609390e-02 + + -2.3042400181293488e-01 1.5338519588112831e-02 + <_> + + 0 -1 1775 7.6912459917366505e-05 + + -9.5581486821174622e-02 1.0388170182704926e-01 + <_> + + 0 -1 1776 9.1011539101600647e-02 + + -8.7168300524353981e-03 7.5593751668930054e-01 + <_> + + 0 -1 1777 -4.3160789646208286e-03 + + 1.3494439423084259e-01 -7.0152096450328827e-02 + <_> + + 0 -1 1778 -5.0581190735101700e-02 + + -6.6112691164016724e-01 2.2676400840282440e-03 + <_> + + 0 -1 1779 -8.3926003426313400e-03 + + -1.2883609533309937e-01 7.7920481562614441e-02 + <_> + + 0 -1 1780 5.5040661245584488e-02 + + 7.7853789553046227e-03 -2.7820050716400146e-01 + <_> + + 0 -1 1781 -4.1862551122903824e-02 + + 4.3335449695587158e-01 -2.9194639995694160e-02 + <_> + + 0 -1 1782 -7.4230520986020565e-03 + + 1.3154500722885132e-01 -3.2047510147094727e-02 + <_> + + 0 -1 1783 1.9948489498347044e-03 + + 8.3299688994884491e-02 -1.1662559956312180e-01 + <_> + + 0 -1 1784 4.1851431131362915e-02 + + 4.1461169719696045e-02 -1.2815159559249878e-01 + <_> + + 0 -1 1785 2.7844381332397461e-01 + + -2.2612810134887695e-02 5.2236318588256836e-01 + <_> + + 0 -1 1786 -7.1095931343734264e-03 + + 1.2902510166168213e-01 -2.7944799512624741e-02 + <_> + + 0 -1 1787 1.1175610125064850e-02 + + 5.1366660743951797e-02 -1.9559539854526520e-01 + <_> + + 0 -1 1788 -1.0364210233092308e-02 + + -7.2631381452083588e-02 1.5199509263038635e-01 + <_> + + 0 -1 1789 -9.4094304367899895e-03 + + -2.0993369817733765e-01 5.3346861153841019e-02 + <_> + + 0 -1 1790 -1.0375010222196579e-01 + + -3.3693191409111023e-01 3.9442018605768681e-03 + <_> + + 0 -1 1791 -9.5977628370746970e-04 + + 1.0307610034942627e-01 -1.0574100166559219e-01 + <_> + + 0 -1 1792 -5.5816810578107834e-02 + + 2.6074001193046570e-01 -4.4885180890560150e-02 + <_> + + 0 -1 1793 -1.3430939614772797e-01 + + -8.1660747528076172e-01 1.5410860069096088e-02 + <_> + + 0 -1 1794 6.0456950217485428e-02 + + -3.0265029054135084e-03 -9.9991780519485474e-01 + <_> + + 0 -1 1795 2.4359079077839851e-02 + + 2.4191310629248619e-02 -4.6632158756256104e-01 + <_> + + 0 -1 1796 5.2735779434442520e-02 + + -2.4266760796308517e-02 2.1460479497909546e-01 + <_> + + 0 -1 1797 -5.5626039393246174e-03 + + 1.0879939794540405e-01 -1.2120909988880157e-01 + <_> + + 0 -1 1798 9.0855263173580170e-02 + + 1.0956900223391131e-04 -9.9975770711898804e-01 + <_> + + 0 -1 1799 -3.4681189805269241e-02 + + -4.5409980416297913e-01 2.3691149428486824e-02 + <_> + + 0 -1 1800 -2.9579090551123954e-05 + + 4.8031318932771683e-02 -4.9872968345880508e-02 + <_> + + 0 -1 1801 2.6277130469679832e-02 + + -2.9456760734319687e-02 3.3974370360374451e-01 + <_> + + 0 -1 1802 -4.6276021748781204e-02 + + 4.5496609807014465e-01 -1.0359579697251320e-02 + <_> + + 0 -1 1803 1.2048200005665421e-04 + + -1.0575199872255325e-01 1.0096730291843414e-01 + <_> + + 0 -1 1804 6.8154390901327133e-03 + + 2.8495609760284424e-02 -9.9765069782733917e-02 + <_> + + 0 -1 1805 1.6169620212167501e-03 + + -1.3256169855594635e-01 8.7828978896141052e-02 + <_> + + 0 -1 1806 1.4563379809260368e-02 + + -4.3079901486635208e-02 2.5113260746002197e-01 + <_> + + 0 -1 1807 2.0352909341454506e-02 + + 3.9463639259338379e-02 -3.2518970966339111e-01 + <_> + + 0 -1 1808 -2.0789269357919693e-02 + + 1.8993359804153442e-01 -2.1271999925374985e-02 + <_> + + 0 -1 1809 3.1780101358890533e-02 + + -2.3768220096826553e-02 4.3957829475402832e-01 + <_> + + 0 -1 1810 1.2459229677915573e-01 + + 6.5275398083031178e-03 -9.9991798400878906e-01 + <_> + + 0 -1 1811 -8.4007039666175842e-02 + + -3.5620281100273132e-01 2.8916560113430023e-02 + <_> + + 0 -1 1812 9.6772145479917526e-03 + + 6.4073942601680756e-02 -1.5482710301876068e-01 + <_> + + 0 -1 1813 1.0405039787292480e-01 + + -2.2652050480246544e-02 5.7623207569122314e-01 + <_> + + 0 -1 1814 4.0814410895109177e-02 + + -3.7368569523096085e-02 7.7298507094383240e-02 + <_> + + 0 -1 1815 -4.6916189789772034e-01 + + -7.7304631471633911e-01 1.3607080094516277e-02 + <_> + + 0 -1 1816 -1.3723419606685638e-01 + + -1. -1.7328710528090596e-03 + <_> + + 0 -1 1817 3.7569448351860046e-02 + + 3.1412709504365921e-02 -3.5512429475784302e-01 + <_> + + 0 -1 1818 -1.2645379640161991e-02 + + -7.1322880685329437e-02 4.1889548301696777e-02 + <_> + + 0 -1 1819 3.9933860301971436e-02 + + -3.3447001129388809e-02 3.5932940244674683e-01 + <_> + + 0 -1 1820 1.7207439988851547e-02 + + 2.6126530021429062e-02 -7.7634379267692566e-02 + <_> + + 0 -1 1821 5.9702228754758835e-02 + + -2.3717980831861496e-02 5.7321798801422119e-01 + <_> + + 0 -1 1822 7.9917803406715393e-02 + + -9.7547564655542374e-03 4.3467441201210022e-01 + <_> + + 0 -1 1823 1.1351720243692398e-01 + + -3.8921970874071121e-02 2.6120808720588684e-01 + <_> + + 0 -1 1824 4.8379451036453247e-01 + + 7.8452667221426964e-03 -6.5024161338806152e-01 + <_> + + 0 -1 1825 -1.0045070201158524e-01 + + -8.0072021484375000e-01 1.2250199913978577e-02 + <_> + + 0 -1 1826 2.7176019549369812e-01 + + 4.4636582024395466e-03 -6.9393122196197510e-01 + <_> + + 0 -1 1827 -1.2301249802112579e-01 + + 3.2483839988708496e-01 -3.3841550350189209e-02 + <_> + + 0 -1 1828 6.1188749969005585e-02 + + 7.1536018513143063e-03 -7.7817517518997192e-01 + <_> + + 0 -1 1829 -7.8828241676092148e-03 + + -1.9754239916801453e-01 6.7795433104038239e-02 + <_> + + 0 -1 1830 -2.5584879517555237e-01 + + -1. 1.4300020411610603e-03 + <_> + + 0 -1 1831 1.3098469376564026e-01 + + -1.6668310388922691e-02 7.4547207355499268e-01 + <_> + + 0 -1 1832 -8.4553077816963196e-02 + + -6.3423901796340942e-01 8.3142798393964767e-03 + <_> + + 0 -1 1833 -8.8297717273235321e-02 + + -8.5705971717834473e-01 1.0549940168857574e-02 + <_> + + 0 -1 1834 -1.0374879837036133e-01 + + 1.2073180079460144e-01 -2.2488579154014587e-02 + <_> + + 0 -1 1835 1.4872249448671937e-03 + + -1.1096440255641937e-01 1.0405410081148148e-01 + <_> + + 0 -1 1836 2.1364030241966248e-01 + + 7.3841079138219357e-03 -4.9760338664054871e-01 + <_> + + 0 -1 1837 2.6294309645891190e-02 + + -6.3212700188159943e-02 2.6284760236740112e-01 + <_> + + 0 -1 1838 -2.6777000166475773e-03 + + 5.6488350033760071e-02 -1.0174310207366943e-01 + <_> + + 0 -1 1839 -2.1261540241539478e-03 + + -1.6442880034446716e-01 6.6159963607788086e-02 + <_> + + 0 -1 1840 -8.2200914621353149e-03 + + -1.6132779419422150e-01 8.3515472710132599e-02 + <_> + + 0 -1 1841 -1.1701880022883415e-02 + + 2.1516199409961700e-01 -5.9116050601005554e-02 + <_> + + 0 -1 1842 -7.0460740244016051e-04 + + 9.6142299473285675e-02 -1.3008759915828705e-01 + <_> + + 0 -1 1843 -1.9671309273689985e-03 + + 1.2605039775371552e-01 -8.8542640209197998e-02 + <_> + + 0 -1 1844 -9.5004076138138771e-03 + + -2.3604579269886017e-01 4.5922629535198212e-02 + <_> + + 0 -1 1845 2.6802370324730873e-02 + + -4.8966769129037857e-02 2.3887130618095398e-01 + <_> + + 0 -1 1846 2.2177420556545258e-02 + + -1.2560590170323849e-02 2.7084270119667053e-01 + <_> + + 0 -1 1847 9.3382880091667175e-02 + + 3.3835850656032562e-02 -3.9707890152931213e-01 + <_> + + 0 -1 1848 -1.3151080347597599e-02 + + -1.1364260315895081e-01 2.5930739939212799e-02 + <_> + + 0 -1 1849 2.6929581072181463e-03 + + 6.8202346563339233e-02 -1.6290910542011261e-01 + <_> + + 0 -1 1850 -5.7519129477441311e-03 + + 1.3197720050811768e-01 -5.7711899280548096e-02 + <_> + + 0 -1 1851 -1.1071159970015287e-03 + + 1.4550089836120605e-01 -7.7300041913986206e-02 + <_> + + 0 -1 1852 3.1805180013179779e-02 + + 1.4181279577314854e-02 -2.1803429722785950e-01 + <_> + + 0 -1 1853 4.0729498863220215e-01 + + -1.3772940263152122e-02 7.4853348731994629e-01 + <_> + + 0 -1 1854 7.0173077285289764e-02 + + 1.1535810306668282e-02 -8.6094629764556885e-01 + <_> + + 0 -1 1855 -1.9437450100667775e-04 + + 6.3009992241859436e-02 -1.5111440420150757e-01 + <_> + + 0 -1 1856 3.9425559341907501e-02 + + 2.4115329608321190e-02 -4.7253820300102234e-01 + <_> + + 0 -1 1857 2.6128459721803665e-03 + + 5.3963150829076767e-02 -1.7429760098457336e-01 + <_> + 152 + -3.0691600799560547e+01 + + <_> + + 0 -1 1858 1.0468430072069168e-01 + + -4.7570109367370605e-02 4.2454048991203308e-01 + <_> + + 0 -1 1859 -4.2946420609951019e-02 + + 1.6328890621662140e-01 -1.2655169703066349e-02 + <_> + + 0 -1 1860 -8.1577729433774948e-03 + + 1.0235799849033356e-01 -1.0876630246639252e-01 + <_> + + 0 -1 1861 2.1813691128045321e-03 + + 8.7985247373580933e-02 -5.5899761617183685e-02 + <_> + + 0 -1 1862 -6.5157511271536350e-03 + + 8.2863852381706238e-02 -1.3736319541931152e-01 + <_> + + 0 -1 1863 2.4716500192880630e-02 + + 1.6755210235714912e-02 1.3371250033378601e-01 + <_> + + 0 -1 1864 -5.9396267170086503e-04 + + -1.3771370053291321e-01 1.0501290112733841e-01 + <_> + + 0 -1 1865 2.9373820871114731e-02 + + -4.4581398367881775e-02 4.2731860280036926e-01 + <_> + + 0 -1 1866 -1.6576919704675674e-02 + + -2.9827460646629333e-01 2.9718369245529175e-02 + <_> + + 0 -1 1867 9.4569493085145950e-03 + + 5.3616948425769806e-02 -7.6675526797771454e-02 + <_> + + 0 -1 1868 7.4581913650035858e-02 + + -4.6554408967494965e-02 3.0179610848426819e-01 + <_> + + 0 -1 1869 -3.8055621087551117e-02 + + -2.8255119919776917e-01 2.0355690270662308e-02 + <_> + + 0 -1 1870 1.1065539903938770e-02 + + -5.3942598402500153e-02 2.3132629692554474e-01 + <_> + + 0 -1 1871 1.3538219965994358e-02 + + 2.8102980926632881e-02 -2.1802890300750732e-01 + <_> + + 0 -1 1872 4.6914750710129738e-03 + + 6.3617020845413208e-02 -1.7460820078849792e-01 + <_> + + 0 -1 1873 4.3054440617561340e-01 + + -2.1062379702925682e-02 5.7197797298431396e-01 + <_> + + 0 -1 1874 1.4298999449238181e-03 + + -1.6780039668083191e-01 7.6851062476634979e-02 + <_> + + 0 -1 1875 2.7855230495333672e-02 + + -3.5647969692945480e-02 2.8956910967826843e-01 + <_> + + 0 -1 1876 1.4391670003533363e-02 + + 8.3300426602363586e-02 -1.2951320409774780e-01 + <_> + + 0 -1 1877 -7.7637381851673126e-02 + + -1. 8.1426621181890368e-04 + <_> + + 0 -1 1878 1.6051199287176132e-02 + + -5.4008588194847107e-02 2.1967799961566925e-01 + <_> + + 0 -1 1879 -7.0988729596138000e-02 + + 6.1602139472961426e-01 -1.6476400196552277e-02 + <_> + + 0 -1 1880 -5.8310989290475845e-02 + + -9.5955359935760498e-01 1.2517100200057030e-02 + <_> + + 0 -1 1881 -7.9547446221113205e-03 + + -9.3684002757072449e-02 3.3896960318088531e-02 + <_> + + 0 -1 1882 -4.9685798585414886e-02 + + 3.1466799974441528e-01 -2.9716050252318382e-02 + <_> + + 0 -1 1883 9.7751528024673462e-02 + + 7.5905729318037629e-04 -6.7009872198104858e-01 + <_> + + 0 -1 1884 7.5908802449703217e-02 + + 1.6073329374194145e-02 -6.6251361370086670e-01 + <_> + + 0 -1 1885 1.3333460083231330e-03 + + 5.2241399884223938e-02 -1.8808710575103760e-01 + <_> + + 0 -1 1886 6.9728610105812550e-04 + + -8.9044801890850067e-02 1.6642339527606964e-01 + <_> + + 0 -1 1887 2.0889509469270706e-02 + + 2.1368719637393951e-02 -1.6083440184593201e-01 + <_> + + 0 -1 1888 -1.7649700166657567e-03 + + 1.2398529797792435e-01 -8.5922397673130035e-02 + <_> + + 0 -1 1889 2.7779850643128157e-03 + + -4.4366151094436646e-02 2.9322549700737000e-02 + <_> + + 0 -1 1890 7.9974532127380371e-04 + + -1.2351520359516144e-01 8.8818296790122986e-02 + <_> + + 0 -1 1891 7.0215959567576647e-04 + + -8.0154180526733398e-02 1.4544290304183960e-01 + <_> + + 0 -1 1892 -4.0604420006275177e-02 + + -3.6047580838203430e-01 3.4314859658479691e-02 + <_> + + 0 -1 1893 -4.1686851531267166e-02 + + -2.0927760004997253e-01 8.5808392614126205e-03 + <_> + + 0 -1 1894 -4.6390198171138763e-02 + + 5.3768527507781982e-01 -2.2632500156760216e-02 + <_> + + 0 -1 1895 -1.5822030603885651e-01 + + -1. 1.4312319690361619e-03 + <_> + + 0 -1 1896 -7.5683370232582092e-02 + + -8.0503028631210327e-01 1.2843839824199677e-02 + <_> + + 0 -1 1897 -5.7808328419923782e-02 + + 3.8675680756568909e-01 -1.2630320154130459e-02 + <_> + + 0 -1 1898 -4.5112581574358046e-05 + + 7.4958987534046173e-02 -1.3433749973773956e-01 + <_> + + 0 -1 1899 3.9205480366945267e-02 + + 2.1980579942464828e-02 -4.5748621225357056e-01 + <_> + + 0 -1 1900 4.4945240020751953e-02 + + -2.3763459175825119e-02 4.8715281486511230e-01 + <_> + + 0 -1 1901 -5.7849191129207611e-02 + + 3.5563638806343079e-01 -6.2380530871450901e-03 + <_> + + 0 -1 1902 -1.0397239774465561e-01 + + -6.2262791395187378e-01 1.5022880397737026e-02 + <_> + + 0 -1 1903 -2.5238281488418579e-01 + + -5.9059482812881470e-01 -1.9238379900343716e-04 + <_> + + 0 -1 1904 1.9675880670547485e-01 + + 1.2625159695744514e-02 -7.2753208875656128e-01 + <_> + + 0 -1 1905 3.7412419915199280e-02 + + -2.3478340357542038e-02 1.2147639691829681e-01 + <_> + + 0 -1 1906 -8.0470675602555275e-03 + + -1.8167789280414581e-01 4.9743499606847763e-02 + <_> + + 0 -1 1907 4.1297491639852524e-02 + + 1.0259049944579601e-02 -1.4679500460624695e-01 + <_> + + 0 -1 1908 -5.0735730677843094e-02 + + 2.2679640352725983e-01 -4.9807049334049225e-02 + <_> + + 0 -1 1909 -3.6145109334029257e-04 + + 4.1798278689384460e-02 -7.0410832762718201e-02 + <_> + + 0 -1 1910 -1.2359450012445450e-01 + + 5.8283501863479614e-01 -1.6822429373860359e-02 + <_> + + 0 -1 1911 5.7071618735790253e-02 + + -4.0532071143388748e-02 1.7078270018100739e-01 + <_> + + 0 -1 1912 5.8561540208756924e-03 + + -1.3827900588512421e-01 8.2565233111381531e-02 + <_> + + 0 -1 1913 -1.1472850292921066e-01 + + -4.6754041314125061e-01 3.4348990302532911e-03 + <_> + + 0 -1 1914 2.0518699660897255e-02 + + 8.1507943570613861e-02 -1.6894109547138214e-01 + <_> + + 0 -1 1915 5.4629769176244736e-02 + + -7.4763749726116657e-03 2.3640379309654236e-01 + <_> + + 0 -1 1916 -6.9312967360019684e-02 + + 3.0071571469306946e-01 -3.4785300493240356e-02 + <_> + + 0 -1 1917 -7.4176848866045475e-03 + + -2.8766560554504395e-01 4.7531820833683014e-02 + <_> + + 0 -1 1918 1.0223260149359703e-02 + + -3.0834799632430077e-02 3.9249539375305176e-01 + <_> + + 0 -1 1919 -2.7346659451723099e-02 + + -1.5695489943027496e-01 1.3967529870569706e-02 + <_> + + 0 -1 1920 3.3875100314617157e-02 + + 2.6063309982419014e-02 -3.9006409049034119e-01 + <_> + + 0 -1 1921 4.5174721628427505e-02 + + 8.9199207723140717e-03 -5.6769150495529175e-01 + <_> + + 0 -1 1922 1.1488229967653751e-02 + + -4.5491419732570648e-02 2.5109928846359253e-01 + <_> + + 0 -1 1923 -1.0496149770915508e-02 + + 6.4895443618297577e-02 -1.0623539984226227e-01 + <_> + + 0 -1 1924 6.0881208628416061e-03 + + 8.0929182469844818e-02 -1.4776149392127991e-01 + <_> + + 0 -1 1925 -2.6524660643190145e-03 + + 1.2062519788742065e-01 -7.2674863040447235e-02 + <_> + + 0 -1 1926 2.3559860419481993e-03 + + -8.1811271607875824e-02 1.4126540720462799e-01 + <_> + + 0 -1 1927 -2.6777219772338867e-01 + + -7.8083831071853638e-01 4.4526048004627228e-03 + <_> + + 0 -1 1928 1.5965799987316132e-01 + + 2.8381649404764175e-02 -3.8967838883399963e-01 + <_> + + 0 -1 1929 5.1899369806051254e-02 + + -3.4305319190025330e-02 1.5921010076999664e-01 + <_> + + 0 -1 1930 -1.3652780326083302e-03 + + -1.3755479454994202e-01 7.2719998657703400e-02 + <_> + + 0 -1 1931 2.2497299313545227e-01 + + -4.8017292283475399e-03 9.9994850158691406e-01 + <_> + + 0 -1 1932 3.1434150878340006e-03 + + 5.5151570588350296e-02 -1.6643160581588745e-01 + <_> + + 0 -1 1933 -6.2940339557826519e-03 + + 6.2896028161048889e-02 -6.0436379164457321e-02 + <_> + + 0 -1 1934 5.1301911473274231e-02 + + -3.1671810895204544e-02 3.8534939289093018e-01 + <_> + + 0 -1 1935 -6.6980808973312378e-02 + + -1.0925900191068649e-01 8.9958757162094116e-03 + <_> + + 0 -1 1936 5.1464758813381195e-02 + + 2.6210019364953041e-02 -4.2159339785575867e-01 + <_> + + 0 -1 1937 -9.0982139110565186e-02 + + 3.2760378718376160e-01 -7.8134387731552124e-03 + <_> + + 0 -1 1938 5.2848970517516136e-03 + + -7.9399570822715759e-02 1.4998179674148560e-01 + <_> + + 0 -1 1939 -1.5017699915915728e-03 + + 9.7703106701374054e-02 -7.3532037436962128e-02 + <_> + + 0 -1 1940 -2.5415199343115091e-03 + + 6.7801132798194885e-02 -1.4883249998092651e-01 + <_> + + 0 -1 1941 4.4252820312976837e-02 + + 1.6475830227136612e-02 -2.2880180180072784e-01 + <_> + + 0 -1 1942 -3.3457159996032715e-02 + + 4.1966789960861206e-01 -3.2553531229496002e-02 + <_> + + 0 -1 1943 1.3529899716377258e-01 + + 9.0894084423780441e-03 -7.3839122056961060e-01 + <_> + + 0 -1 1944 -3.7440970540046692e-02 + + -4.2613020539283752e-01 2.3972390219569206e-02 + <_> + + 0 -1 1945 -1.4479730452876538e-05 + + 5.6783780455589294e-02 -1.5888829529285431e-01 + <_> + + 0 -1 1946 -1.1839280277490616e-01 + + 5.0500631332397461e-01 -2.1859649568796158e-02 + <_> + + 0 -1 1947 -8.5000684484839439e-03 + + 5.2339930087327957e-02 -4.5925021171569824e-02 + <_> + + 0 -1 1948 -1.4189509674906731e-02 + + -2.3597060143947601e-01 4.0358349680900574e-02 + <_> + + 0 -1 1949 7.3599420487880707e-02 + + 3.2680039294064045e-03 -5.8853602409362793e-01 + <_> + + 0 -1 1950 5.4971270263195038e-02 + + -2.0196519792079926e-02 5.5482727289199829e-01 + <_> + + 0 -1 1951 -2.2816160693764687e-02 + + -1.7589579522609711e-01 1.7851740121841431e-02 + <_> + + 0 -1 1952 2.3204670287668705e-03 + + -8.1749923527240753e-02 1.2833079695701599e-01 + <_> + + 0 -1 1953 -1.0797909647226334e-01 + + -1. 1.7423679819330573e-03 + <_> + + 0 -1 1954 -4.1111931204795837e-02 + + 5.8432698249816895e-01 -1.8878869712352753e-02 + <_> + + 0 -1 1955 -3.5695650149136782e-03 + + -1.7558470368385315e-01 6.4731426537036896e-02 + <_> + + 0 -1 1956 -6.6358670592308044e-02 + + -1. 9.2067662626504898e-03 + <_> + + 0 -1 1957 -1.8944580107927322e-02 + + 2.5783088803291321e-01 -1.8944939598441124e-02 + <_> + + 0 -1 1958 -1.2871269881725311e-01 + + -5.8477258682250977e-01 1.4466489665210247e-02 + <_> + + 0 -1 1959 2.4218629114329815e-03 + + -7.3590897023677826e-02 7.0332102477550507e-02 + <_> + + 0 -1 1960 2.9718460515141487e-02 + + -2.3011969402432442e-02 4.0542769432067871e-01 + <_> + + 0 -1 1961 1.7555029690265656e-01 + + 2.0808730274438858e-02 -3.7285649776458740e-01 + <_> + + 0 -1 1962 3.7122450768947601e-02 + + -2.7959629893302917e-02 3.5908779501914978e-01 + <_> + + 0 -1 1963 -3.8044541142880917e-03 + + -1.3337990641593933e-01 9.2061348259449005e-02 + <_> + + 0 -1 1964 -1.0930700227618217e-02 + + 2.3196309804916382e-01 -4.4535879045724869e-02 + <_> + + 0 -1 1965 1.6103629767894745e-01 + + -8.7691349908709526e-03 2.2045169770717621e-01 + <_> + + 0 -1 1966 2.5971230119466782e-02 + + 6.4421012997627258e-02 -1.8919080495834351e-01 + <_> + + 0 -1 1967 1.2638209760189056e-01 + + -1.0362179949879646e-02 1.7057189345359802e-01 + <_> + + 0 -1 1968 -9.1393403708934784e-03 + + -1.3828249275684357e-01 8.6790062487125397e-02 + <_> + + 0 -1 1969 1.7722090706229210e-02 + + 3.9719890803098679e-02 -1.2294259667396545e-01 + <_> + + 0 -1 1970 -8.2425750792026520e-02 + + 3.0023100972175598e-01 -3.3165920525789261e-02 + <_> + + 0 -1 1971 4.3892528861761093e-02 + + -1.3056339696049690e-02 9.8728686571121216e-02 + <_> + + 0 -1 1972 3.5575369838625193e-03 + + 1.1186280101537704e-01 -9.2797823250293732e-02 + <_> + + 0 -1 1973 -1.5298820100724697e-02 + + -1.3007879257202148e-01 2.3159010335803032e-02 + <_> + + 0 -1 1974 -2.6504450943320990e-03 + + 1.3526280224323273e-01 -7.3355458676815033e-02 + <_> + + 0 -1 1975 4.1636861860752106e-02 + + -1.9068980589509010e-02 3.5857999324798584e-01 + <_> + + 0 -1 1976 -7.5290258973836899e-03 + + -1.8672360479831696e-01 5.8248449116945267e-02 + <_> + + 0 -1 1977 -4.0031488984823227e-02 + + 2.2969779372215271e-01 -1.4608230441808701e-02 + <_> + + 0 -1 1978 -1.3624709844589233e-01 + + -8.7086462974548340e-01 1.1211199685931206e-02 + <_> + + 0 -1 1979 4.5124008320271969e-03 + + -3.5644959658384323e-02 1.0103099793195724e-01 + <_> + + 0 -1 1980 5.4118070751428604e-02 + + -1.4689410105347633e-02 6.7652267217636108e-01 + <_> + + 0 -1 1981 -3.4553959965705872e-02 + + 2.1854560077190399e-01 -9.7846649587154388e-03 + <_> + + 0 -1 1982 -2.5520840659737587e-02 + + -4.6898001432418823e-01 2.4060370400547981e-02 + <_> + + 0 -1 1983 -3.5473700612783432e-02 + + 1.3427549600601196e-01 -2.1438699215650558e-02 + <_> + + 0 -1 1984 2.8683411073870957e-04 + + -9.7300283610820770e-02 1.0760939866304398e-01 + <_> + + 0 -1 1985 -7.8717589378356934e-02 + + -1. 2.7187850791960955e-03 + <_> + + 0 -1 1986 -1.5701749362051487e-04 + + 1.1199659854173660e-01 -9.9441379308700562e-02 + <_> + + 0 -1 1987 1.6026569530367851e-02 + + 3.4198261797428131e-02 -1.9100490212440491e-01 + <_> + + 0 -1 1988 -1.9164729863405228e-02 + + 8.9024826884269714e-02 -1.1919700354337692e-01 + <_> + + 0 -1 1989 -3.9445150643587112e-02 + + -1.0717990249395370e-01 3.7615209817886353e-02 + <_> + + 0 -1 1990 2.2417430300265551e-03 + + -9.0581007301807404e-02 1.7547470331192017e-01 + <_> + + 0 -1 1991 -3.8842540234327316e-03 + + 9.2697329819202423e-02 -4.2431369423866272e-02 + <_> + + 0 -1 1992 -2.1914629265666008e-02 + + -2.8017508983612061e-01 3.7537671625614166e-02 + <_> + + 0 -1 1993 -3.7512119859457016e-02 + + 3.6218520998954773e-01 -1.7507450655102730e-02 + <_> + + 0 -1 1994 -8.4374047582969069e-04 + + 1.2348400056362152e-01 -8.0245867371559143e-02 + <_> + + 0 -1 1995 -2.6424999814480543e-03 + + 5.2565738558769226e-02 -8.3335436880588531e-02 + <_> + + 0 -1 1996 -9.2836812138557434e-02 + + -4.2060381174087524e-01 2.3360429331660271e-02 + <_> + + 0 -1 1997 8.2463070750236511e-02 + + -2.9815400484949350e-03 7.8999197483062744e-01 + <_> + + 0 -1 1998 -6.9864951074123383e-02 + + 7.3802971839904785e-01 -1.4021299779415131e-02 + <_> + + 0 -1 1999 4.5439340174198151e-02 + + -1.1321160010993481e-02 1.9973699748516083e-01 + <_> + + 0 -1 2000 -5.0297789275646210e-02 + + 6.0764670372009277e-01 -1.7632890492677689e-02 + <_> + + 0 -1 2001 6.0456149280071259e-02 + + -5.9354598633944988e-03 3.1622889637947083e-01 + <_> + + 0 -1 2002 -4.6769347973167896e-03 + + -1.8090610206127167e-01 5.9660188853740692e-02 + <_> + + 0 -1 2003 3.6530068609863520e-04 + + -9.1220043599605560e-02 1.1092729866504669e-01 + <_> + + 0 -1 2004 -1.9491260871291161e-02 + + -3.7075570225715637e-01 2.8416309505701065e-02 + <_> + + 0 -1 2005 2.0056450739502907e-02 + + -5.8159679174423218e-02 7.8105233609676361e-02 + <_> + + 0 -1 2006 -3.9371181279420853e-02 + + 2.9012489318847656e-01 -4.1875660419464111e-02 + <_> + + 0 -1 2007 2.1523650735616684e-02 + + 1.6573080793023109e-02 -2.3614850640296936e-01 + <_> + + 0 -1 2008 -3.1294699292629957e-03 + + -1.6466400027275085e-01 6.2233809381723404e-02 + <_> + + 0 -1 2009 2.8589619323611259e-03 + + -3.8098409771919250e-02 5.5751629173755646e-02 + <_> + 135 + -3.0609300613403320e+01 + + <_> + + 0 -1 2010 -2.0576130598783493e-02 + + 1.7351129651069641e-01 -1.5058030188083649e-01 + <_> + + 0 -1 2011 1.6125949099659920e-02 + + -4.1612371802330017e-02 2.3984450101852417e-01 + <_> + + 0 -1 2012 -1.2352580204606056e-02 + + 9.7780853509902954e-02 -1.2391830235719681e-01 + <_> + + 0 -1 2013 -5.7473899796605110e-03 + + 7.7615208923816681e-02 -9.6236728131771088e-02 + <_> + + 0 -1 2014 2.9579061083495617e-03 + + -6.7683719098567963e-02 2.6594209671020508e-01 + <_> + + 0 -1 2015 -8.3472225815057755e-03 + + -1.1188179999589920e-01 1.3736370205879211e-01 + <_> + + 0 -1 2016 -5.8408780023455620e-04 + + 4.5943111181259155e-02 -1.6486530005931854e-01 + <_> + + 0 -1 2017 -3.5136839142069221e-04 + + 9.7791008651256561e-02 -6.4357861876487732e-02 + <_> + + 0 -1 2018 8.4126877482049167e-05 + + -1.3847629725933075e-01 8.8727742433547974e-02 + <_> + + 0 -1 2019 -2.6592490077018738e-01 + + -6.7525398731231689e-01 1.6188669949769974e-02 + <_> + + 0 -1 2020 4.3727741576731205e-03 + + 7.2884798049926758e-02 -1.2560360133647919e-01 + <_> + + 0 -1 2021 -2.2660531103610992e-03 + + 8.7269246578216553e-02 -6.8355433642864227e-02 + <_> + + 0 -1 2022 -6.5290732309222221e-03 + + -1.2197560071945190e-01 8.0927930772304535e-02 + <_> + + 0 -1 2023 9.6436247229576111e-02 + + -8.2637304440140724e-03 4.9127399921417236e-01 + <_> + + 0 -1 2024 -4.3594818562269211e-02 + + 4.5575308799743652e-01 -2.5600390508770943e-02 + <_> + + 0 -1 2025 -2.1098319441080093e-02 + + -1.1892750114202499e-01 2.3539589717984200e-02 + <_> + + 0 -1 2026 -2.5200019590556622e-03 + + 1.2724469602108002e-01 -9.0751722455024719e-02 + <_> + + 0 -1 2027 -8.9241685345768929e-03 + + -1.1514320224523544e-01 4.3497029691934586e-02 + <_> + + 0 -1 2028 3.4590170253068209e-03 + + 6.3537172973155975e-02 -1.8261429667472839e-01 + <_> + + 0 -1 2029 -3.6076800897717476e-03 + + 1.2005910277366638e-01 -5.2449110895395279e-02 + <_> + + 0 -1 2030 5.3778890520334244e-02 + + -1.8675789237022400e-02 5.2313017845153809e-01 + <_> + + 0 -1 2031 4.5245189219713211e-02 + + -1.7504919320344925e-02 2.1871849894523621e-01 + <_> + + 0 -1 2032 1.3272929936647415e-03 + + 7.8659959137439728e-02 -1.3551670312881470e-01 + <_> + + 0 -1 2033 1.2393640354275703e-02 + + 2.8952300548553467e-02 -7.2149537503719330e-02 + <_> + + 0 -1 2034 -3.7702780216932297e-02 + + 4.1850051283836365e-01 -3.0355349183082581e-02 + <_> + + 0 -1 2035 -4.8910409212112427e-02 + + 3.7365001440048218e-01 -5.6771109811961651e-03 + <_> + + 0 -1 2036 -5.9961699880659580e-03 + + -2.0756420493125916e-01 7.0438846945762634e-02 + <_> + + 0 -1 2037 5.6631930172443390e-02 + + -1.7292939126491547e-02 2.5498399138450623e-01 + <_> + + 0 -1 2038 3.1650230288505554e-02 + + -2.0658250898122787e-02 4.8398271203041077e-01 + <_> + + 0 -1 2039 -2.1152989938855171e-02 + + 2.0028789341449738e-01 -2.4872610345482826e-02 + <_> + + 0 -1 2040 8.7676532566547394e-02 + + -2.4999700486660004e-02 4.1126599907875061e-01 + <_> + + 0 -1 2041 5.3299881517887115e-02 + + -8.6766229942440987e-03 3.7446591258049011e-01 + <_> + + 0 -1 2042 -2.6251509552821517e-04 + + 9.9231846630573273e-02 -1.1989200115203857e-01 + <_> + + 0 -1 2043 -8.5897604003548622e-03 + + -1.8593010306358337e-01 3.4370779991149902e-02 + <_> + + 0 -1 2044 1.6940470784902573e-02 + + -3.4768261015415192e-02 2.7288261055946350e-01 + <_> + + 0 -1 2045 5.0596110522747040e-02 + + 3.6170349922031164e-03 -3.9460760354995728e-01 + <_> + + 0 -1 2046 -8.3048436790704727e-03 + + 9.8577797412872314e-02 -1.1666280031204224e-01 + <_> + + 0 -1 2047 1.0586270131170750e-02 + + 3.9117150008678436e-02 -8.5843667387962341e-02 + <_> + + 0 -1 2048 -3.2558601349592209e-02 + + -3.7352150678634644e-01 2.5410100817680359e-02 + <_> + + 0 -1 2049 -3.2352130860090256e-02 + + 2.6129978895187378e-01 -2.8631040826439857e-02 + <_> + + 0 -1 2050 2.5547049939632416e-02 + + 3.3884890377521515e-02 -3.0452328920364380e-01 + <_> + + 0 -1 2051 4.2252440005540848e-02 + + 8.9510334655642509e-03 -2.4091260135173798e-01 + <_> + + 0 -1 2052 3.8109479937702417e-03 + + -7.2638936340808868e-02 1.4634390175342560e-01 + <_> + + 0 -1 2053 2.0821709185838699e-02 + + -3.6271940916776657e-02 1.8324719369411469e-01 + <_> + + 0 -1 2054 2.6497790589928627e-02 + + 2.8160110116004944e-02 -3.9517199993133545e-01 + <_> + + 0 -1 2055 2.0283530652523041e-01 + + -9.3782292678952217e-03 4.4868949055671692e-01 + <_> + + 0 -1 2056 -1.7996610701084137e-01 + + -7.9595959186553955e-01 1.2027840130031109e-02 + <_> + + 0 -1 2057 -7.0968091487884521e-02 + + -7.6951277256011963e-01 1.0918079642578959e-03 + <_> + + 0 -1 2058 2.7555041015148163e-03 + + 7.0150263607501984e-02 -1.2915180623531342e-01 + <_> + + 0 -1 2059 -7.7004402875900269e-02 + + -4.9155071377754211e-01 2.8067480307072401e-03 + <_> + + 0 -1 2060 -2.0257910713553429e-02 + + 2.3568239808082581e-01 -4.3432798236608505e-02 + <_> + + 0 -1 2061 -8.6421817541122437e-02 + + -3.4541681408882141e-01 1.1248850263655186e-02 + <_> + + 0 -1 2062 -6.7245952785015106e-02 + + -6.8752902746200562e-01 1.1868669651448727e-02 + <_> + + 0 -1 2063 -1.2990389764308929e-01 + + -7.9069268703460693e-01 2.5537670589983463e-03 + <_> + + 0 -1 2064 -3.0394670367240906e-01 + + -8.9989352226257324e-01 8.1501724198460579e-03 + <_> + + 0 -1 2065 -4.1988548636436462e-01 + + -7.7303320169448853e-01 1.3665149454027414e-03 + <_> + + 0 -1 2066 -1.6851289570331573e-01 + + 2.4319399893283844e-01 -4.1280739009380341e-02 + <_> + + 0 -1 2067 2.8788880445063114e-03 + + 2.0577169954776764e-02 -1.8590900301933289e-01 + <_> + + 0 -1 2068 -4.0223840624094009e-02 + + 4.3099269270896912e-01 -2.3104710504412651e-02 + <_> + + 0 -1 2069 3.9687040261924267e-03 + + 4.3601520359516144e-02 -9.2233568429946899e-02 + <_> + + 0 -1 2070 -2.7650719508528709e-02 + + -6.1707872152328491e-01 1.4680569991469383e-02 + <_> + + 0 -1 2071 -2.3034301120787859e-03 + + 9.0349592268466949e-02 -6.1664551496505737e-02 + <_> + + 0 -1 2072 -2.9040789231657982e-02 + + 2.7737939357757568e-01 -3.9218869060277939e-02 + <_> + + 0 -1 2073 1.3288260437548161e-02 + + 3.1138259917497635e-02 -1.3558749854564667e-01 + <_> + + 0 -1 2074 3.3968928619287908e-05 + + -1.3562929630279541e-01 7.6467581093311310e-02 + <_> + + 0 -1 2075 -6.8583860993385315e-03 + + -1.0365810245275497e-01 2.5939159095287323e-02 + <_> + + 0 -1 2076 -1.4360919594764709e-02 + + -2.1136499941349030e-01 5.2973140031099319e-02 + <_> + + 0 -1 2077 -1.7468679696321487e-02 + + -1.0518109798431396e-01 1.7715079709887505e-02 + <_> + + 0 -1 2078 -9.8544567823410034e-02 + + 2.5649461150169373e-01 -4.4229641556739807e-02 + <_> + + 0 -1 2079 -2.8123459778726101e-03 + + -7.3800362646579742e-02 1.5400940179824829e-01 + <_> + + 0 -1 2080 2.1941340528428555e-03 + + -1.4216299355030060e-01 8.9139223098754883e-02 + <_> + + 0 -1 2081 4.6820759773254395e-02 + + 2.9364090412855148e-02 -6.2754891812801361e-02 + <_> + + 0 -1 2082 3.2891759276390076e-01 + + 1.3015690259635448e-02 -7.8347128629684448e-01 + <_> + + 0 -1 2083 -2.0470520481467247e-02 + + -7.6814353466033936e-02 3.9800468832254410e-02 + <_> + + 0 -1 2084 8.8677026331424713e-02 + + -4.0312368422746658e-02 2.8453868627548218e-01 + <_> + + 0 -1 2085 -1.1557979742065072e-03 + + 4.2199321091175079e-02 -4.1446208953857422e-02 + <_> + + 0 -1 2086 6.0524538159370422e-02 + + -1.6918700188398361e-02 6.7237138748168945e-01 + <_> + + 0 -1 2087 4.0830459445714951e-02 + + 1.3364840298891068e-02 -3.1113299727439880e-01 + <_> + + 0 -1 2088 -3.1132870353758335e-03 + + -1.7262780666351318e-01 5.9382218867540359e-02 + <_> + + 0 -1 2089 -4.3638627976179123e-03 + + 1.7265330255031586e-01 -6.2423970550298691e-02 + <_> + + 0 -1 2090 -3.2834090292453766e-02 + + 4.0275371074676514e-01 -2.5799039751291275e-02 + <_> + + 0 -1 2091 6.4377002418041229e-02 + + -4.7380630858242512e-03 7.5221067667007446e-01 + <_> + + 0 -1 2092 2.7642730623483658e-02 + + 3.7644479423761368e-02 -2.9220271110534668e-01 + <_> + + 0 -1 2093 2.2171199321746826e-02 + + -2.4654069915413857e-02 2.0533810555934906e-01 + <_> + + 0 -1 2094 1.5859310515224934e-03 + + 8.9463792741298676e-02 -1.2611730396747589e-01 + <_> + + 0 -1 2095 -1.8872050568461418e-02 + + 1.3072650134563446e-01 -3.6953710019588470e-02 + <_> + + 0 -1 2096 -1.3306169770658016e-02 + + -2.2963209450244904e-01 4.2687188833951950e-02 + <_> + + 0 -1 2097 -7.0407122373580933e-02 + + -7.1117508411407471e-01 6.6957580856978893e-03 + <_> + + 0 -1 2098 4.1748929768800735e-02 + + -3.2927870750427246e-02 3.0035281181335449e-01 + <_> + + 0 -1 2099 5.3282231092453003e-03 + + 5.1811750978231430e-02 -1.9069090485572815e-01 + <_> + + 0 -1 2100 2.4094989057630301e-03 + + -8.0687969923019409e-02 1.2510129809379578e-01 + <_> + + 0 -1 2101 -6.2405979260802269e-03 + + 1.0740630328655243e-01 -3.9979010820388794e-02 + <_> + + 0 -1 2102 -6.7312467098236084e-01 + + -1. 1.0070810094475746e-02 + <_> + + 0 -1 2103 -9.2983558773994446e-02 + + -1. -2.4261360522359610e-03 + <_> + + 0 -1 2104 3.3629760146141052e-02 + + 2.4122869595885277e-02 -4.1387900710105896e-01 + <_> + + 0 -1 2105 2.3880619555711746e-02 + + 9.6614202484488487e-03 -2.1973779797554016e-01 + <_> + + 0 -1 2106 1.2738780351355672e-03 + + -8.3555117249488831e-02 1.2269689887762070e-01 + <_> + + 0 -1 2107 1.8414139747619629e-02 + + 3.0798140913248062e-02 -3.5609170794487000e-01 + <_> + + 0 -1 2108 -5.6469578295946121e-02 + + 8.8631778955459595e-01 -1.2698300182819366e-02 + <_> + + 0 -1 2109 -4.6219761134125292e-04 + + 3.4681901335716248e-02 -8.2850828766822815e-02 + <_> + + 0 -1 2110 -1.9060859456658363e-02 + + 3.5369411110877991e-01 -2.7611760422587395e-02 + <_> + + 0 -1 2111 1.5762279508635402e-03 + + 4.0939908474683762e-02 -2.2517409920692444e-01 + <_> + + 0 -1 2112 2.0101880654692650e-02 + + -2.3995550349354744e-02 4.1091251373291016e-01 + <_> + + 0 -1 2113 2.7211669366806746e-03 + + 2.8122449293732643e-02 -1.4200119674205780e-01 + <_> + + 0 -1 2114 -1.0944429785013199e-01 + + 9.5085740089416504e-01 -9.4355372712016106e-03 + <_> + + 0 -1 2115 -1.2755279894918203e-03 + + 5.6902900338172913e-02 -8.3429783582687378e-02 + <_> + + 0 -1 2116 -8.0578401684761047e-02 + + -9.5139288902282715e-01 8.2268668338656425e-03 + <_> + + 0 -1 2117 -1.2047989666461945e-01 + + -3.0273869633674622e-01 2.8489340096712112e-02 + <_> + + 0 -1 2118 -1.8294970691204071e-01 + + 2.3866130411624908e-01 -6.2773942947387695e-02 + <_> + + 0 -1 2119 -1.7106409370899200e-01 + + -5.9394681453704834e-01 3.1515269074589014e-03 + <_> + + 0 -1 2120 -7.3414877057075500e-02 + + -8.6933082342147827e-01 1.0084389708936214e-02 + <_> + + 0 -1 2121 2.4238299578428268e-02 + + -2.1756110712885857e-02 1.6218559443950653e-01 + <_> + + 0 -1 2122 -7.1713668294250965e-03 + + -9.7345590591430664e-02 9.2148497700691223e-02 + <_> + + 0 -1 2123 -3.3344399183988571e-02 + + 7.4645392596721649e-02 -2.2160679101943970e-02 + <_> + + 0 -1 2124 7.2907900903373957e-04 + + -9.4971813261508942e-02 1.1826740205287933e-01 + <_> + + 0 -1 2125 -1.0217289673164487e-03 + + 5.6426230818033218e-02 -3.7573829293251038e-02 + <_> + + 0 -1 2126 -8.4900937508791685e-04 + + -1.3883149623870850e-01 7.0047326385974884e-02 + <_> + + 0 -1 2127 9.9850513041019440e-02 + + -1.4011589810252190e-02 2.6115679740905762e-01 + <_> + + 0 -1 2128 -1.3090069591999054e-01 + + 7.1379351615905762e-01 -1.1643799953162670e-02 + <_> + + 0 -1 2129 9.1210529208183289e-03 + + 4.5402809977531433e-02 -2.1830010414123535e-01 + <_> + + 0 -1 2130 2.0106479525566101e-01 + + -2.0753270015120506e-02 5.1230221986770630e-01 + <_> + + 0 -1 2131 4.7389309853315353e-02 + + 9.4779124483466148e-03 -4.7942391037940979e-01 + <_> + + 0 -1 2132 -5.7118538767099380e-02 + + 3.9166051149368286e-01 -2.6703910902142525e-02 + <_> + + 0 -1 2133 -8.3700623363256454e-03 + + -1.3399459421634674e-01 4.8460900783538818e-02 + <_> + + 0 -1 2134 4.0913890115916729e-03 + + -5.9489779174327850e-02 1.7438539862632751e-01 + <_> + + 0 -1 2135 7.1899488568305969e-02 + + 1.1723180301487446e-02 -3.6274778842926025e-01 + <_> + + 0 -1 2136 -3.6888250615447760e-03 + + 7.5763627886772156e-02 -1.5033599734306335e-01 + <_> + + 0 -1 2137 -7.4795219115912914e-03 + + 1.5027859807014465e-01 -4.5870490372180939e-02 + <_> + + 0 -1 2138 -1.2582589872181416e-02 + + -1.9915549457073212e-01 6.3917450606822968e-02 + <_> + + 0 -1 2139 3.5687079653143883e-03 + + -1.2117239832878113e-01 1.0956080257892609e-01 + <_> + + 0 -1 2140 1.7363800434395671e-03 + + 1.2258529663085938e-01 -9.3556262552738190e-02 + <_> + + 0 -1 2141 -1.4523629797622561e-03 + + 9.6722528338432312e-02 -8.0739699304103851e-02 + <_> + + 0 -1 2142 3.1017749570310116e-03 + + -6.9076471030712128e-02 1.5396459400653839e-01 + <_> + + 0 -1 2143 -8.5509587079286575e-03 + + -1.5186290442943573e-01 4.0346920490264893e-02 + <_> + + 0 -1 2144 -1.8966189818456769e-03 + + 1.2172549962997437e-01 -9.8543442785739899e-02 + <_> + 135 + -3.0601499557495117e+01 + + <_> + + 0 -1 2145 -2.3754740133881569e-02 + + 1.7095300555229187e-01 -1.1534280329942703e-01 + <_> + + 0 -1 2146 -7.3806629516184330e-03 + + 8.8067196309566498e-02 -4.0317770093679428e-02 + <_> + + 0 -1 2147 1.1198900174349546e-03 + + -7.9895302653312683e-02 1.3448899984359741e-01 + <_> + + 0 -1 2148 3.3718731254339218e-02 + + -1.5220030210912228e-02 2.9914170503616333e-01 + <_> + + 0 -1 2149 -2.8022660990245640e-04 + + 6.3599728047847748e-02 -1.5619190037250519e-01 + <_> + + 0 -1 2150 -3.9523928426206112e-03 + + -9.7961323335766792e-03 1.0571649670600891e-01 + <_> + + 0 -1 2151 2.1397129166871309e-03 + + 8.9953586459159851e-02 -1.4483779668807983e-01 + <_> + + 0 -1 2152 -6.7521296441555023e-02 + + 2.0932430028915405e-01 -5.3923811763525009e-02 + <_> + + 0 -1 2153 1.0378950275480747e-02 + + -6.4177162945270538e-02 2.7814629673957825e-01 + <_> + + 0 -1 2154 6.2903137877583504e-03 + + -4.9253720790147781e-02 8.2168422639369965e-02 + <_> + + 0 -1 2155 9.3974275514483452e-03 + + 8.4537737071514130e-02 -2.2885300219058990e-01 + <_> + + 0 -1 2156 1.0120930150151253e-02 + + 3.3337119966745377e-02 -8.1664256751537323e-02 + <_> + + 0 -1 2157 3.1531939748674631e-03 + + -1.0220990329980850e-01 1.1837360262870789e-01 + <_> + + 0 -1 2158 7.5137287378311157e-02 + + 2.7504051104187965e-03 -1.0000959634780884e+00 + <_> + + 0 -1 2159 -2.3692219983786345e-03 + + 9.9092483520507812e-02 -1.1425189673900604e-01 + <_> + + 0 -1 2160 -2.4510379880666733e-02 + + 2.8708320856094360e-01 -1.6148800030350685e-02 + <_> + + 0 -1 2161 -1.9670750480145216e-03 + + -1.1531370133161545e-01 8.6816556751728058e-02 + <_> + + 0 -1 2162 3.0845379456877708e-02 + + -2.4090610444545746e-02 1.9607549905776978e-01 + <_> + + 0 -1 2163 2.3816309869289398e-02 + + 3.2824039459228516e-02 -3.5710439085960388e-01 + <_> + + 0 -1 2164 -4.0199130773544312e-02 + + -5.2850788831710815e-01 6.0749719850718975e-03 + <_> + + 0 -1 2165 -6.8876100704073906e-03 + + 2.2058850526809692e-01 -5.9151489287614822e-02 + <_> + + 0 -1 2166 -2.5466730585321784e-04 + + 7.1897879242897034e-02 -8.4962032735347748e-02 + <_> + + 0 -1 2167 9.8468195647001266e-03 + + 4.1366759687662125e-02 -2.3984520137310028e-01 + <_> + + 0 -1 2168 2.7934400364756584e-02 + + -2.3647159337997437e-02 2.4738009274005890e-01 + <_> + + 0 -1 2169 -2.2960390895605087e-02 + + -4.5187929272651672e-01 2.2305779159069061e-02 + <_> + + 0 -1 2170 3.2323438790626824e-04 + + -8.7536007165908813e-02 7.8490957617759705e-02 + <_> + + 0 -1 2171 3.1954899430274963e-02 + + -2.6202389970421791e-02 3.9204901456832886e-01 + <_> + + 0 -1 2172 1.9027979578822851e-03 + + 6.2762781977653503e-02 -1.6107350587844849e-01 + <_> + + 0 -1 2173 -3.2691629603505135e-03 + + 1.0168000310659409e-01 -1.0432480275630951e-01 + <_> + + 0 -1 2174 1.0040200315415859e-02 + + -2.8046580031514168e-02 1.2117899954319000e-01 + <_> + + 0 -1 2175 -3.4158680588006973e-02 + + -2.8974449634552002e-01 3.5282660275697708e-02 + <_> + + 0 -1 2176 1.7615250544622540e-03 + + -5.5583070963621140e-02 7.4158452451229095e-02 + <_> + + 0 -1 2177 -2.1134650334715843e-02 + + 2.5130590796470642e-01 -4.0354639291763306e-02 + <_> + + 0 -1 2178 2.9759369790554047e-02 + + 3.8029540330171585e-02 -1.4226369559764862e-01 + <_> + + 0 -1 2179 1.4866080135107040e-02 + + -3.9721690118312836e-02 2.7522540092468262e-01 + <_> + + 0 -1 2180 -3.5829428583383560e-02 + + -3.3451971411705017e-01 9.6839247271418571e-03 + <_> + + 0 -1 2181 -3.2887340057641268e-03 + + -1.4258219301700592e-01 6.8576209247112274e-02 + <_> + + 0 -1 2182 4.2714878916740417e-02 + + -1.4240439981222153e-02 3.8765299320220947e-01 + <_> + + 0 -1 2183 1.2328879674896598e-03 + + 7.8623853623867035e-02 -1.1869420111179352e-01 + <_> + + 0 -1 2184 -1.0447620414197445e-02 + + -1.4882990717887878e-01 3.1571168452501297e-02 + <_> + + 0 -1 2185 1.2656359933316708e-02 + + -4.6572461724281311e-02 2.6212608814239502e-01 + <_> + + 0 -1 2186 4.9849718809127808e-02 + + 1.7015339806675911e-02 -1.4268730580806732e-01 + <_> + + 0 -1 2187 -1.8607240170240402e-02 + + 2.3338650166988373e-01 -4.7094941139221191e-02 + <_> + + 0 -1 2188 -5.4397370666265488e-02 + + -4.0511301159858704e-01 8.1606470048427582e-03 + <_> + + 0 -1 2189 2.9153900686651468e-03 + + -8.9313946664333344e-02 1.3335379958152771e-01 + <_> + + 0 -1 2190 -5.9154080227017403e-03 + + -2.0414529740810394e-01 4.8475701361894608e-02 + <_> + + 0 -1 2191 -1.9841329194605350e-03 + + 1.3428109884262085e-01 -7.5892791152000427e-02 + <_> + + 0 -1 2192 -4.4047520495951176e-03 + + 4.1852138936519623e-02 -1.0119090229272842e-01 + <_> + + 0 -1 2193 1.7982879653573036e-02 + + 4.3978679925203323e-02 -2.5054019689559937e-01 + <_> + + 0 -1 2194 -7.8059501945972443e-02 + + -3.3025071024894714e-01 6.3089421018958092e-03 + <_> + + 0 -1 2195 7.2548650205135345e-03 + + -1.0872170329093933e-01 9.9411018192768097e-02 + <_> + + 0 -1 2196 -2.7871869970113039e-03 + + 1.3659299910068512e-01 -8.4799639880657196e-02 + <_> + + 0 -1 2197 -9.3798413872718811e-03 + + -1.1872450262308121e-01 7.9108059406280518e-02 + <_> + + 0 -1 2198 -5.4926410317420959e-02 + + 1.4382070302963257e-01 -3.0072269961237907e-02 + <_> + + 0 -1 2199 -4.4219079427421093e-03 + + 1.0666429996490479e-01 -1.0838100314140320e-01 + <_> + + 0 -1 2200 1.0763059835880995e-03 + + 2.7380989864468575e-02 -5.5446051061153412e-02 + <_> + + 0 -1 2201 -7.2514012455940247e-02 + + -1.0893449932336807e-01 1.0097540169954300e-01 + <_> + + 0 -1 2202 -1.6472190618515015e-01 + + 3.0365368723869324e-01 -4.3666210025548935e-02 + <_> + + 0 -1 2203 7.9837806522846222e-02 + + -1.0828680358827114e-02 8.9977437257766724e-01 + <_> + + 0 -1 2204 -5.2413612138479948e-04 + + 8.5230633616447449e-02 -1.2053979933261871e-01 + <_> + + 0 -1 2205 -2.1632270887494087e-02 + + -2.1092039346694946e-01 6.5582543611526489e-02 + <_> + + 0 -1 2206 1.2691530585289001e-01 + + -4.5935749076306820e-03 4.5089641213417053e-01 + <_> + + 0 -1 2207 9.5472350716590881e-02 + + -2.0798899233341217e-02 5.2474659681320190e-01 + <_> + + 0 -1 2208 -8.2936078310012817e-02 + + 8.4976738691329956e-01 -5.0510508008301258e-03 + <_> + + 0 -1 2209 7.7482969500124454e-03 + + -5.5318288505077362e-02 1.7145830392837524e-01 + <_> + + 0 -1 2210 -2.1768439561128616e-02 + + -1.5947930514812469e-01 6.0873799026012421e-02 + <_> + + 0 -1 2211 -1.1072609777329490e-04 + + 7.8877292573451996e-02 -1.3177630305290222e-01 + <_> + + 0 -1 2212 3.1122909858822823e-03 + + -4.3046839535236359e-02 6.2392581254243851e-02 + <_> + + 0 -1 2213 -2.8692940250039101e-03 + + 1.3746979832649231e-01 -8.0494217574596405e-02 + <_> + + 0 -1 2214 1.0575760155916214e-01 + + 1.0569440200924873e-03 -9.9993818998336792e-01 + <_> + + 0 -1 2215 4.6192679554224014e-02 + + 1.7228020355105400e-02 -5.2604919672012329e-01 + <_> + + 0 -1 2216 -2.5476190447807312e-01 + + -6.2927299737930298e-01 1.3698619790375233e-02 + <_> + + 0 -1 2217 -2.7374029159545898e-03 + + 1.2747539579868317e-01 -6.9591522216796875e-02 + <_> + + 0 -1 2218 2.1854760125279427e-03 + + 4.1854761540889740e-02 -2.6481458544731140e-01 + <_> + + 0 -1 2219 -2.4050710722804070e-02 + + -2.6191109418869019e-01 3.4489940851926804e-02 + <_> + + 0 -1 2220 1.0211429744958878e-01 + + -1.5302860178053379e-02 3.9992758631706238e-01 + <_> + + 0 -1 2221 1.0281659662723541e-01 + + -2.9020670801401138e-02 3.6887159943580627e-01 + <_> + + 0 -1 2222 3.9206489920616150e-02 + + 8.9045017957687378e-03 -4.3242999911308289e-01 + <_> + + 0 -1 2223 -3.7830859422683716e-02 + + -6.2731212377548218e-01 1.4882829971611500e-02 + <_> + + 0 -1 2224 1.2507890351116657e-02 + + -1.7865059897303581e-02 1.4156140387058258e-01 + <_> + + 0 -1 2225 -1.5477590262889862e-02 + + 3.1676650047302246e-01 -3.3510830253362656e-02 + <_> + + 0 -1 2226 -4.5885699801146984e-03 + + -1.5222150087356567e-01 7.3211863636970520e-02 + <_> + + 0 -1 2227 -2.0505970343947411e-02 + + 1.1725380271673203e-01 -9.7457922995090485e-02 + <_> + + 0 -1 2228 -1.3098320364952087e-01 + + 5.4338067770004272e-01 -5.8803129941225052e-03 + <_> + + 0 -1 2229 4.7888278961181641e-02 + + -2.7120810002088547e-02 3.5723638534545898e-01 + <_> + + 0 -1 2230 2.5441530346870422e-01 + + 2.5680949911475182e-03 -9.9988257884979248e-01 + <_> + + 0 -1 2231 2.0652529783546925e-03 + + -9.4255000352859497e-02 1.0068359971046448e-01 + <_> + + 0 -1 2232 3.0141780152916908e-02 + + -1.5984520316123962e-02 2.4209509789943695e-01 + <_> + + 0 -1 2233 1.2305500358343124e-01 + + 4.3902460485696793e-02 -2.9046860337257385e-01 + <_> + + 0 -1 2234 1.1436889879405499e-02 + + 3.1826701015233994e-02 -1.0569609701633453e-01 + <_> + + 0 -1 2235 1.4229659922420979e-02 + + -6.4518727362155914e-02 1.6178989410400391e-01 + <_> + + 0 -1 2236 -1.9808039069175720e-02 + + 2.0909899473190308e-01 -2.7245460078120232e-02 + <_> + + 0 -1 2237 -3.2634709030389786e-02 + + -4.6265149116516113e-01 2.3877989500761032e-02 + <_> + + 0 -1 2238 8.1568211317062378e-02 + + -1.0983820073306561e-02 7.4517530202865601e-01 + <_> + + 0 -1 2239 1.7331159906461835e-03 + + 6.2832579016685486e-02 -1.5800160169601440e-01 + <_> + + 0 -1 2240 4.1524558328092098e-03 + + 2.8520949184894562e-02 -8.3923816680908203e-02 + <_> + + 0 -1 2241 2.0917340589221567e-04 + + -1.6536650061607361e-01 8.3170376718044281e-02 + <_> + + 0 -1 2242 -6.9550168700516224e-04 + + 5.7298898696899414e-02 -9.8668128252029419e-02 + <_> + + 0 -1 2243 1.0114730149507523e-01 + + -2.7031859382987022e-02 5.0937288999557495e-01 + <_> + + 0 -1 2244 2.0371530205011368e-02 + + -1.5991339460015297e-02 2.1110190451145172e-01 + <_> + + 0 -1 2245 1.9490359723567963e-01 + + 1.1169149540364742e-02 -8.0626577138900757e-01 + <_> + + 0 -1 2246 -1.5187750104814768e-03 + + 8.8670432567596436e-02 -6.5779693424701691e-02 + <_> + + 0 -1 2247 -2.2300280761555769e-05 + + 7.0237100124359131e-02 -1.3656799495220184e-01 + <_> + + 0 -1 2248 7.0241810753941536e-03 + + 4.5264270156621933e-02 -1.2246630340814590e-01 + <_> + + 0 -1 2249 -5.8513730764389038e-03 + + 1.4548699557781219e-01 -7.7512867748737335e-02 + <_> + + 0 -1 2250 -1.2228869833052158e-02 + + -1.5762320160865784e-01 3.3091600984334946e-02 + <_> + + 0 -1 2251 -2.7475339174270630e-01 + + 4.1415899991989136e-01 -2.3306179791688919e-02 + <_> + + 0 -1 2252 -8.3073312416672707e-03 + + -6.6158972680568695e-02 4.5423369854688644e-02 + <_> + + 0 -1 2253 1.4967099763453007e-02 + + 3.9580021053552628e-02 -2.4474979937076569e-01 + <_> + + 0 -1 2254 3.5121920518577099e-03 + + -3.2608591020107269e-02 7.2080552577972412e-02 + <_> + + 0 -1 2255 6.0676191933453083e-03 + + -6.6284246742725372e-02 1.6455779969692230e-01 + <_> + + 0 -1 2256 -6.0948841273784637e-03 + + -1.6784119606018066e-01 6.8097747862339020e-02 + <_> + + 0 -1 2257 -4.4710501097142696e-03 + + 1.4348860085010529e-01 -7.5286053121089935e-02 + <_> + + 0 -1 2258 2.7629999443888664e-02 + + -6.0715568251907825e-03 4.6235299110412598e-01 + <_> + + 0 -1 2259 -4.1778348386287689e-03 + + -9.4480186700820923e-02 1.0268689692020416e-01 + <_> + + 0 -1 2260 -1.4997010293882340e-04 + + 4.5903969556093216e-02 -1.2689989805221558e-01 + <_> + + 0 -1 2261 9.3421656638383865e-03 + + -4.7851350158452988e-02 2.3776920139789581e-01 + <_> + + 0 -1 2262 -9.0454798191785812e-03 + + -1.4881759881973267e-01 2.5717660784721375e-02 + <_> + + 0 -1 2263 -1.0563050163909793e-03 + + -1.2465219944715500e-01 8.2118943333625793e-02 + <_> + + 0 -1 2264 -1.5602169558405876e-02 + + 3.0471551418304443e-01 -2.4503290653228760e-02 + <_> + + 0 -1 2265 -8.9588612318038940e-03 + + -2.3624059557914734e-01 4.6290140599012375e-02 + <_> + + 0 -1 2266 -7.6452922075986862e-03 + + 1.1393140256404877e-01 -2.6573060080409050e-02 + <_> + + 0 -1 2267 -1.9294900819659233e-02 + + 2.8820019960403442e-01 -3.5906881093978882e-02 + <_> + + 0 -1 2268 8.6250286549329758e-03 + + 6.1006020754575729e-02 -1.6832630336284637e-01 + <_> + + 0 -1 2269 2.5883490219712257e-02 + + -4.0142849087715149e-02 2.3263120651245117e-01 + <_> + + 0 -1 2270 -7.4946112930774689e-02 + + 7.1168798208236694e-01 -6.0237408615648746e-03 + <_> + + 0 -1 2271 -2.6808120310306549e-04 + + 7.7717900276184082e-02 -1.5358750522136688e-01 + <_> + + 0 -1 2272 6.1041440814733505e-02 + + -3.4070160239934921e-02 2.5833290815353394e-01 + <_> + + 0 -1 2273 -4.7920648939907551e-03 + + -1.5077829360961914e-01 8.4577240049839020e-02 + <_> + + 0 -1 2274 -1.2610630691051483e-01 + + -4.8404538631439209e-01 8.6965439841151237e-03 + <_> + + 0 -1 2275 -2.2879270836710930e-02 + + 6.7734187841415405e-01 -1.4856100082397461e-02 + <_> + + 0 -1 2276 -6.2760512810200453e-04 + + 5.0910349935293198e-02 -1.4076440036296844e-01 + <_> + + 0 -1 2277 -1.0543179698288441e-02 + + -9.0707249939441681e-02 1.1281900107860565e-01 + <_> + + 0 -1 2278 -2.4953829124569893e-03 + + 8.9523762464523315e-02 -7.5541287660598755e-02 + <_> + + 0 -1 2279 6.0986150056123734e-02 + + -3.2006978988647461e-02 3.3000910282135010e-01 + <_> + 143 + -3.0555000305175781e+01 + + <_> + + 0 -1 2280 -4.1241809725761414e-02 + + 2.4841840565204620e-01 -6.9879129528999329e-02 + <_> + + 0 -1 2281 -7.4663497507572174e-02 + + -7.5433689355850220e-01 4.0493709966540337e-03 + <_> + + 0 -1 2282 -2.3803679272532463e-02 + + 2.4313099682331085e-01 -4.5283928513526917e-02 + <_> + + 0 -1 2283 3.2028619199991226e-02 + + -1.2230539694428444e-02 3.9811220765113831e-01 + <_> + + 0 -1 2284 3.8454410969279706e-04 + + 6.9244839251041412e-02 -1.7288799583911896e-01 + <_> + + 0 -1 2285 -2.0599530544131994e-03 + + 4.5083250850439072e-02 -6.3824482262134552e-02 + <_> + + 0 -1 2286 5.9174500405788422e-02 + + 1.3756089843809605e-02 5.8063977956771851e-01 + <_> + + 0 -1 2287 -8.1204501911997795e-03 + + -7.9060196876525879e-02 3.2097879797220230e-02 + <_> + + 0 -1 2288 -5.4362448863685131e-03 + + 8.0285012722015381e-02 -1.3880789279937744e-01 + <_> + + 0 -1 2289 4.0768779814243317e-02 + + 3.5265129059553146e-02 -1.6821040213108063e-01 + <_> + + 0 -1 2290 -1.0705769993364811e-02 + + -1.3227799534797668e-01 9.7147703170776367e-02 + <_> + + 0 -1 2291 -2.1374409552663565e-03 + + -1.1135129630565643e-01 1.0501199960708618e-01 + <_> + + 0 -1 2292 -6.0069030150771141e-03 + + 7.9701423645019531e-02 -1.4503550529479980e-01 + <_> + + 0 -1 2293 6.8584359250962734e-03 + + -2.8629170730710030e-02 1.5494349598884583e-01 + <_> + + 0 -1 2294 8.4308702498674393e-03 + + -6.8725876510143280e-02 1.3571439683437347e-01 + <_> + + 0 -1 2295 -3.1918209046125412e-02 + + -9.0021647512912750e-02 7.0172756910324097e-02 + <_> + + 0 -1 2296 1.4346960186958313e-01 + + 3.7936199456453323e-02 -3.3849731087684631e-01 + <_> + + 0 -1 2297 -5.3501531481742859e-02 + + -1. -1.3069049455225468e-03 + <_> + + 0 -1 2298 -4.3198501225560904e-04 + + 6.3140459358692169e-02 -1.4891080558300018e-01 + <_> + + 0 -1 2299 -3.6825511604547501e-02 + + 1.6418960690498352e-01 -3.6547198891639709e-02 + <_> + + 0 -1 2300 -9.3230612576007843e-02 + + -8.1855481863021851e-01 1.0488729923963547e-02 + <_> + + 0 -1 2301 -7.5886500999331474e-03 + + 9.6189923584461212e-02 -3.2392729073762894e-02 + <_> + + 0 -1 2302 1.9316580146551132e-03 + + -9.7133457660675049e-02 9.6836537122726440e-02 + <_> + + 0 -1 2303 -1.7610849440097809e-01 + + -1. 3.9064860902726650e-04 + <_> + + 0 -1 2304 -4.5753358863294125e-03 + + -1.4245940744876862e-01 7.2629533708095551e-02 + <_> + + 0 -1 2305 -7.1555696427822113e-02 + + 7.0124769210815430e-01 -8.1192785874009132e-03 + <_> + + 0 -1 2306 -5.1939189434051514e-03 + + -1.7593400180339813e-01 6.6920258104801178e-02 + <_> + + 0 -1 2307 9.7410175949335098e-03 + + -4.0632858872413635e-02 1.5366269648075104e-01 + <_> + + 0 -1 2308 -1.9197730347514153e-02 + + 8.8404722511768341e-02 -1.1119589954614639e-01 + <_> + + 0 -1 2309 7.7713979408144951e-03 + + -5.1531080156564713e-02 2.3341870307922363e-01 + <_> + + 0 -1 2310 4.6741779893636703e-02 + + 5.8658950030803680e-02 -2.1825340390205383e-01 + <_> + + 0 -1 2311 -6.7051820456981659e-02 + + -7.6968950033187866e-01 2.2733330260962248e-03 + <_> + + 0 -1 2312 1.0403609834611416e-02 + + -5.7208269834518433e-02 1.9874769449234009e-01 + <_> + + 0 -1 2313 6.8136617541313171e-02 + + 1.0924750007688999e-02 -2.3514769971370697e-01 + <_> + + 0 -1 2314 5.5462731979787350e-03 + + 7.6430208981037140e-02 -1.5048150718212128e-01 + <_> + + 0 -1 2315 3.5827890038490295e-02 + + 5.2330200560390949e-03 -9.0509557723999023e-01 + <_> + + 0 -1 2316 1.0099080391228199e-02 + + -4.9438349902629852e-02 1.9236649572849274e-01 + <_> + + 0 -1 2317 -7.3000352131202817e-04 + + 8.0038689076900482e-02 -5.9875860810279846e-02 + <_> + + 0 -1 2318 -6.2627308070659637e-02 + + -6.8771952390670776e-01 1.4409339986741543e-02 + <_> + + 0 -1 2319 4.1463607922196388e-03 + + 6.2068879604339600e-02 -1.4138600230216980e-01 + <_> + + 0 -1 2320 -1.4136059582233429e-01 + + 5.9439867734909058e-01 -1.6910530626773834e-02 + <_> + + 0 -1 2321 7.0147067308425903e-02 + + 3.5781029146164656e-03 -8.4541380405426025e-01 + <_> + + 0 -1 2322 1.8181180348619819e-03 + + -5.9031128883361816e-02 1.7709979414939880e-01 + <_> + + 0 -1 2323 6.3149541616439819e-02 + + -7.9691512510180473e-03 2.4575470387935638e-01 + <_> + + 0 -1 2324 1.7065559513866901e-03 + + -1.3776679337024689e-01 7.2286598384380341e-02 + <_> + + 0 -1 2325 -4.1844159364700317e-02 + + -1.0204549878835678e-01 1.9412880763411522e-02 + <_> + + 0 -1 2326 6.1876028776168823e-02 + + 1.7572570592164993e-02 -5.9611201286315918e-01 + <_> + + 0 -1 2327 8.6206607520580292e-02 + + -8.3246696740388870e-03 5.9274739027023315e-01 + <_> + + 0 -1 2328 1.5561250038444996e-02 + + 5.5908791720867157e-02 -2.0174680650234222e-01 + <_> + + 0 -1 2329 1.9683360587805510e-03 + + 8.4109783172607422e-02 -9.5114283263683319e-02 + <_> + + 0 -1 2330 -3.2295130658894777e-03 + + 1.9859789311885834e-01 -6.0371041297912598e-02 + <_> + + 0 -1 2331 4.3861459940671921e-02 + + -7.5495638884603977e-03 2.7785310149192810e-01 + <_> + + 0 -1 2332 -7.1588042192161083e-04 + + 1.0671679675579071e-01 -1.1605340242385864e-01 + <_> + + 0 -1 2333 -1.1585080064833164e-02 + + 1.3923209905624390e-01 -7.2681717574596405e-02 + <_> + + 0 -1 2334 -2.4132030084729195e-02 + + -3.4343299269676208e-01 2.8587639331817627e-02 + <_> + + 0 -1 2335 -5.9670167975127697e-03 + + 6.2854968011379242e-02 -6.3237912952899933e-02 + <_> + + 0 -1 2336 -5.7298261672258377e-02 + + 3.3512100577354431e-01 -3.4425679594278336e-02 + <_> + + 0 -1 2337 -1.4440530538558960e-01 + + -1. -2.0486500579863787e-04 + <_> + + 0 -1 2338 -1.6152009367942810e-02 + + -1.8017260730266571e-01 6.0698080807924271e-02 + <_> + + 0 -1 2339 3.1132341246120632e-04 + + -8.7393969297409058e-02 1.0814479738473892e-01 + <_> + + 0 -1 2340 -3.4905138891190290e-03 + + 1.3089099526405334e-01 -8.2502506673336029e-02 + <_> + + 0 -1 2341 -5.1078200340270996e-02 + + -6.6744989156723022e-01 9.7670806571841240e-03 + <_> + + 0 -1 2342 2.3027899861335754e-01 + + 8.9318687096238136e-03 -8.8892549276351929e-01 + <_> + + 0 -1 2343 3.3260289579629898e-02 + + -3.8846820592880249e-02 1.1871550232172012e-01 + <_> + + 0 -1 2344 3.6332090385258198e-03 + + -8.1865288317203522e-02 1.2006369978189468e-01 + <_> + + 0 -1 2345 -1.3659459364134818e-04 + + 2.9094040393829346e-02 -8.6412712931632996e-02 + <_> + + 0 -1 2346 4.2663831263780594e-03 + + 5.9642590582370758e-02 -1.6777870059013367e-01 + <_> + + 0 -1 2347 -3.7726368755102158e-02 + + 2.5201418995857239e-01 -1.1480459943413734e-02 + <_> + + 0 -1 2348 -3.7723951041698456e-02 + + 3.6150801181793213e-01 -2.5164980441331863e-02 + <_> + + 0 -1 2349 -3.5217531025409698e-02 + + -2.0768259465694427e-01 1.5659499913454056e-02 + <_> + + 0 -1 2350 -2.6250150054693222e-02 + + 6.4363038539886475e-01 -1.3971080072224140e-02 + <_> + + 0 -1 2351 7.1132831275463104e-02 + + 5.0701410509645939e-03 -8.1053668260574341e-01 + <_> + + 0 -1 2352 2.8358760755509138e-03 + + 8.0034732818603516e-02 -1.1766050010919571e-01 + <_> + + 0 -1 2353 3.4837881103157997e-03 + + 6.9709457457065582e-02 -1.2136720120906830e-01 + <_> + + 0 -1 2354 2.9538539820350707e-05 + + -1.7090520262718201e-01 7.0092067122459412e-02 + <_> + + 0 -1 2355 2.6345230638980865e-02 + + -1.1046449653804302e-02 3.5467839241027832e-01 + <_> + + 0 -1 2356 3.3180779428221285e-04 + + -8.9763849973678589e-02 1.0402739793062210e-01 + <_> + + 0 -1 2357 9.9607985466718674e-03 + + -1.0574670135974884e-01 8.7481163442134857e-02 + <_> + + 0 -1 2358 6.9068476557731628e-02 + + -2.3135760799050331e-02 3.7765979766845703e-01 + <_> + + 0 -1 2359 -3.3804871141910553e-02 + + -8.0052927136421204e-02 6.6171988844871521e-02 + <_> + + 0 -1 2360 -2.1103899925947189e-03 + + 7.2913236916065216e-02 -1.6986669600009918e-01 + <_> + + 0 -1 2361 7.1675583720207214e-02 + + -2.2668020799756050e-02 4.3757459521293640e-01 + <_> + + 0 -1 2362 -1.7637129873037338e-02 + + 1.4710550010204315e-01 -7.7648147940635681e-02 + <_> + + 0 -1 2363 2.1559430751949549e-03 + + -4.4561479240655899e-02 8.0616250634193420e-02 + <_> + + 0 -1 2364 -2.9923371039330959e-03 + + 1.6013230383396149e-01 -7.2628170251846313e-02 + <_> + + 0 -1 2365 -2.8351619839668274e-02 + + -2.4835529923439026e-01 7.8493626788258553e-03 + <_> + + 0 -1 2366 -5.3842412307858467e-03 + + -1.3290390372276306e-01 7.8615352511405945e-02 + <_> + + 0 -1 2367 1.6513720154762268e-02 + + -3.0867580324411392e-02 2.2910499572753906e-01 + <_> + + 0 -1 2368 -2.3480059579014778e-02 + + -3.4656900167465210e-01 2.8477910906076431e-02 + <_> + + 0 -1 2369 6.4804457128047943e-02 + + 3.2681180164217949e-03 -8.1848317384719849e-01 + <_> + + 0 -1 2370 2.9363438952714205e-03 + + 6.8371996283531189e-02 -1.6038259863853455e-01 + <_> + + 0 -1 2371 1.9352639093995094e-02 + + 1.2330809608101845e-02 -1.7751510441303253e-01 + <_> + + 0 -1 2372 -1.4157049590721726e-03 + + 1.6248740255832672e-01 -8.4821969270706177e-02 + <_> + + 0 -1 2373 -3.2165680080652237e-02 + + 2.5495579838752747e-01 -1.5387820079922676e-02 + <_> + + 0 -1 2374 9.9883928894996643e-02 + + 1.1630980297923088e-02 -8.6939221620559692e-01 + <_> + + 0 -1 2375 -8.5509859491139650e-04 + + 3.7509139627218246e-02 -4.1315130889415741e-02 + <_> + + 0 -1 2376 1.9948679953813553e-02 + + -3.3211439847946167e-02 2.6546698808670044e-01 + <_> + + 0 -1 2377 -1.6821360215544701e-02 + + -1.9504530727863312e-01 4.5578271150588989e-02 + <_> + + 0 -1 2378 -8.1685081124305725e-02 + + 8.0823719501495361e-01 -1.0028379969298840e-02 + <_> + + 0 -1 2379 -3.9467110764235258e-04 + + 3.7868868559598923e-02 -7.4321702122688293e-02 + <_> + + 0 -1 2380 -4.1939578950405121e-02 + + -7.5310271978378296e-01 1.2494780123233795e-02 + <_> + + 0 -1 2381 1.2319780141115189e-01 + + 1.5212129801511765e-03 -8.7456828355789185e-01 + <_> + + 0 -1 2382 4.3162349611520767e-03 + + 9.5917366445064545e-02 -9.8286882042884827e-02 + <_> + + 0 -1 2383 1.7064419807866216e-03 + + -6.7283846437931061e-02 5.8372668921947479e-02 + <_> + + 0 -1 2384 6.8853497505187988e-02 + + 3.9853271096944809e-02 -2.7014040946960449e-01 + <_> + + 0 -1 2385 1.5133110573515296e-03 + + 3.6803830415010452e-02 -7.8638777136802673e-02 + <_> + + 0 -1 2386 1.6671700403094292e-02 + + -5.2208479493856430e-02 2.5476139783859253e-01 + <_> + + 0 -1 2387 -2.4927379563450813e-03 + + -6.8352922797203064e-02 3.9182528853416443e-02 + <_> + + 0 -1 2388 1.7946650041267276e-03 + + 7.5641617178916931e-02 -1.8443019688129425e-01 + <_> + + 0 -1 2389 6.5764516592025757e-02 + + -2.7957379817962646e-02 1.3770729303359985e-01 + <_> + + 0 -1 2390 -3.2415628433227539e-02 + + 2.4957719445228577e-01 -3.8401741534471512e-02 + <_> + + 0 -1 2391 1.5985220670700073e-01 + + 2.3139530792832375e-02 -4.5876979827880859e-01 + <_> + + 0 -1 2392 3.3003050833940506e-02 + + -2.8549650683999062e-02 3.6482268571853638e-01 + <_> + + 0 -1 2393 8.3292415365576744e-03 + + 2.3422110825777054e-02 -1.2992739677429199e-01 + <_> + + 0 -1 2394 -1.4707380533218384e-01 + + -1. 1.0342770256102085e-02 + <_> + + 0 -1 2395 1.0625930130481720e-01 + + 2.8901589103043079e-03 -6.2105101346969604e-01 + <_> + + 0 -1 2396 4.7905001789331436e-02 + + -2.5437310338020325e-02 3.8595038652420044e-01 + <_> + + 0 -1 2397 4.3562948703765869e-02 + + 1.2963670305907726e-02 -3.1574508547782898e-01 + <_> + + 0 -1 2398 -6.6401511430740356e-02 + + 3.7184339761734009e-01 -2.4248229339718819e-02 + <_> + + 0 -1 2399 1.0357169667258859e-03 + + -3.3857159316539764e-02 7.2818137705326080e-02 + <_> + + 0 -1 2400 -1.0010260343551636e-01 + + -2.6162430644035339e-01 4.0561348199844360e-02 + <_> + + 0 -1 2401 -1.4029429852962494e-01 + + 1.6186380386352539e-01 -3.7463869899511337e-02 + <_> + + 0 -1 2402 -3.6629181355237961e-02 + + -3.7988689541816711e-01 2.2493759170174599e-02 + <_> + + 0 -1 2403 1.8527939915657043e-01 + + -3.4648380242288113e-03 9.9972921609878540e-01 + <_> + + 0 -1 2404 1.3452930375933647e-02 + + 6.6191017627716064e-02 -1.5208050608634949e-01 + <_> + + 0 -1 2405 8.4628060460090637e-02 + + -3.2134260982275009e-02 2.2877800464630127e-01 + <_> + + 0 -1 2406 -8.7568372488021851e-02 + + 4.3229681253433228e-01 -2.4735029786825180e-02 + <_> + + 0 -1 2407 2.6502339169383049e-02 + + 2.3526629433035851e-02 -2.9849499464035034e-01 + <_> + + 0 -1 2408 -1.8273059278726578e-02 + + 5.0878030061721802e-01 -1.9735949113965034e-02 + <_> + + 0 -1 2409 -1.1995369568467140e-03 + + 7.4867762625217438e-02 -7.3861390352249146e-02 + <_> + + 0 -1 2410 3.1381230801343918e-02 + + -2.6280479505658150e-02 3.6583951115608215e-01 + <_> + + 0 -1 2411 2.3178670555353165e-02 + + 3.7155259400606155e-02 -2.5468569993972778e-01 + <_> + + 0 -1 2412 -1.3644699938595295e-02 + + 2.0717699825763702e-01 -4.2792771011590958e-02 + <_> + + 0 -1 2413 7.8315278515219688e-03 + + 3.6028519272804260e-02 -8.0337040126323700e-02 + <_> + + 0 -1 2414 -1.0035780258476734e-02 + + -2.2253769636154175e-01 4.2950030416250229e-02 + <_> + + 0 -1 2415 -5.1132131367921829e-02 + + 3.0586650967597961e-01 -2.7054589241743088e-02 + <_> + + 0 -1 2416 -6.9544702768325806e-02 + + 3.4688460826873779e-01 -3.1736221164464951e-02 + <_> + + 0 -1 2417 -2.4079360067844391e-02 + + 1.3291560113430023e-01 -3.0277779325842857e-02 + <_> + + 0 -1 2418 -6.6630518995225430e-03 + + -1.8473480641841888e-01 7.8750252723693848e-02 + <_> + + 0 -1 2419 4.3147690594196320e-02 + + -9.1566536575555801e-03 2.9485818743705750e-01 + <_> + + 0 -1 2420 -1.3808339834213257e-02 + + -2.8479158878326416e-01 3.2622188329696655e-02 + <_> + + 0 -1 2421 1.6351899504661560e-01 + + -3.7377059925347567e-03 5.6042182445526123e-01 + <_> + + 0 -1 2422 -2.4086149409413338e-02 + + 1.5841430425643921e-01 -6.6294513642787933e-02 + + <_> + + <_> + 5 5 12 6 -1. + <_> + 9 5 4 6 3. + <_> + + <_> + 7 13 10 4 -1. + <_> + 7 15 10 2 2. + <_> + + <_> + 3 14 9 4 -1. + <_> + 6 14 3 4 3. + <_> + + <_> + 15 6 5 6 -1. + <_> + 15 6 5 3 2. + 1 + <_> + + <_> + 0 1 22 14 -1. + <_> + 11 1 11 14 2. + <_> + + <_> + 1 11 20 4 -1. + <_> + 6 11 10 4 2. + <_> + + <_> + 7 6 6 5 -1. + <_> + 7 6 3 5 2. + 1 + <_> + + <_> + 5 13 12 4 -1. + <_> + 11 13 6 2 2. + <_> + 5 15 6 2 2. + <_> + + <_> + 7 12 8 6 -1. + <_> + 7 12 4 3 2. + <_> + 11 15 4 3 2. + <_> + + <_> + 20 0 2 18 -1. + <_> + 20 9 2 9 2. + <_> + + <_> + 8 6 6 12 -1. + <_> + 10 6 2 12 3. + <_> + + <_> + 8 5 6 6 -1. + <_> + 10 5 2 6 3. + <_> + + <_> + 5 15 12 2 -1. + <_> + 5 16 12 1 2. + <_> + + <_> + 20 0 2 18 -1. + <_> + 20 9 2 9 2. + <_> + + <_> + 0 0 2 18 -1. + <_> + 0 9 2 9 2. + <_> + + <_> + 13 7 6 4 -1. + <_> + 13 7 6 2 2. + 1 + <_> + + <_> + 2 14 7 4 -1. + <_> + 2 16 7 2 2. + <_> + + <_> + 13 7 7 4 -1. + <_> + 13 7 7 2 2. + 1 + <_> + + <_> + 4 6 4 12 -1. + <_> + 4 10 4 4 3. + <_> + + <_> + 8 4 6 10 -1. + <_> + 11 4 3 5 2. + <_> + 8 9 3 5 2. + <_> + + <_> + 6 8 6 10 -1. + <_> + 6 8 3 5 2. + <_> + 9 13 3 5 2. + <_> + + <_> + 11 12 6 6 -1. + <_> + 11 15 6 3 2. + <_> + + <_> + 1 15 8 3 -1. + <_> + 5 15 4 3 2. + <_> + + <_> + 6 9 10 4 -1. + <_> + 6 11 10 2 2. + <_> + + <_> + 11 5 8 3 -1. + <_> + 10 6 8 1 3. + 1 + <_> + + <_> + 0 13 22 5 -1. + <_> + 0 13 11 5 2. + <_> + + <_> + 2 13 14 3 -1. + <_> + 9 13 7 3 2. + <_> + + <_> + 11 5 2 10 -1. + <_> + 11 5 1 10 2. + 1 + <_> + + <_> + 11 5 10 2 -1. + <_> + 11 5 10 1 2. + 1 + <_> + + <_> + 14 0 8 8 -1. + <_> + 18 0 4 4 2. + <_> + 14 4 4 4 2. + <_> + + <_> + 5 0 3 10 -1. + <_> + 5 5 3 5 2. + <_> + + <_> + 16 0 3 12 -1. + <_> + 16 6 3 6 2. + <_> + + <_> + 3 3 12 4 -1. + <_> + 3 3 6 2 2. + <_> + 9 5 6 2 2. + <_> + + <_> + 2 2 20 3 -1. + <_> + 7 2 10 3 2. + <_> + + <_> + 11 7 3 8 -1. + <_> + 11 7 3 4 2. + 1 + <_> + + <_> + 4 9 18 3 -1. + <_> + 4 10 18 1 3. + <_> + + <_> + 3 3 16 14 -1. + <_> + 3 3 8 7 2. + <_> + 11 10 8 7 2. + <_> + + <_> + 7 14 8 4 -1. + <_> + 7 14 4 4 2. + <_> + + <_> + 10 7 4 7 -1. + <_> + 10 7 2 7 2. + 1 + <_> + + <_> + 11 9 6 5 -1. + <_> + 11 9 3 5 2. + <_> + + <_> + 0 6 22 4 -1. + <_> + 11 6 11 4 2. + <_> + + <_> + 14 6 6 12 -1. + <_> + 17 6 3 6 2. + <_> + 14 12 3 6 2. + <_> + + <_> + 4 14 6 4 -1. + <_> + 4 16 6 2 2. + <_> + + <_> + 12 14 6 4 -1. + <_> + 12 16 6 2 2. + <_> + + <_> + 4 14 6 4 -1. + <_> + 4 16 6 2 2. + <_> + + <_> + 10 6 6 6 -1. + <_> + 12 6 2 6 3. + <_> + + <_> + 9 0 11 3 -1. + <_> + 8 1 11 1 3. + 1 + <_> + + <_> + 7 0 12 4 -1. + <_> + 13 0 6 2 2. + <_> + 7 2 6 2 2. + <_> + + <_> + 6 6 6 6 -1. + <_> + 8 6 2 6 3. + <_> + + <_> + 15 5 3 8 -1. + <_> + 15 9 3 4 2. + <_> + + <_> + 5 2 12 7 -1. + <_> + 9 2 4 7 3. + <_> + + <_> + 5 5 12 4 -1. + <_> + 9 5 4 4 3. + <_> + + <_> + 7 3 4 7 -1. + <_> + 7 3 2 7 2. + 1 + <_> + + <_> + 2 14 6 4 -1. + <_> + 5 14 3 4 2. + <_> + + <_> + 11 4 6 6 -1. + <_> + 13 4 2 6 3. + <_> + + <_> + 5 14 12 4 -1. + <_> + 5 14 6 2 2. + <_> + 11 16 6 2 2. + <_> + + <_> + 3 12 16 6 -1. + <_> + 11 12 8 3 2. + <_> + 3 15 8 3 2. + <_> + + <_> + 1 11 20 4 -1. + <_> + 6 11 10 4 2. + <_> + + <_> + 9 0 10 10 -1. + <_> + 14 0 5 5 2. + <_> + 9 5 5 5 2. + <_> + + <_> + 8 8 4 6 -1. + <_> + 8 8 2 6 2. + 1 + <_> + + <_> + 1 7 20 11 -1. + <_> + 1 7 10 11 2. + <_> + + <_> + 9 0 12 3 -1. + <_> + 9 0 6 3 2. + 1 + <_> + + <_> + 13 0 6 6 -1. + <_> + 13 0 3 6 2. + <_> + + <_> + 5 0 12 8 -1. + <_> + 5 2 12 4 2. + <_> + + <_> + 14 0 8 6 -1. + <_> + 18 0 4 3 2. + <_> + 14 3 4 3 2. + <_> + + <_> + 7 6 8 6 -1. + <_> + 9 6 4 6 2. + <_> + + <_> + 11 3 6 6 -1. + <_> + 13 3 2 6 3. + <_> + + <_> + 5 3 6 6 -1. + <_> + 7 3 2 6 3. + <_> + + <_> + 13 0 8 6 -1. + <_> + 17 0 4 3 2. + <_> + 13 3 4 3 2. + <_> + + <_> + 0 0 8 6 -1. + <_> + 0 0 4 3 2. + <_> + 4 3 4 3 2. + <_> + + <_> + 7 0 10 6 -1. + <_> + 12 0 5 3 2. + <_> + 7 3 5 3 2. + <_> + + <_> + 0 15 22 2 -1. + <_> + 11 15 11 2 2. + <_> + + <_> + 5 14 12 4 -1. + <_> + 5 15 12 2 2. + <_> + + <_> + 5 13 6 4 -1. + <_> + 5 15 6 2 2. + <_> + + <_> + 3 9 17 3 -1. + <_> + 3 10 17 1 3. + <_> + + <_> + 3 8 16 10 -1. + <_> + 3 8 8 5 2. + <_> + 11 13 8 5 2. + <_> + + <_> + 9 0 10 6 -1. + <_> + 14 0 5 3 2. + <_> + 9 3 5 3 2. + <_> + + <_> + 3 0 12 4 -1. + <_> + 3 0 6 2 2. + <_> + 9 2 6 2 2. + <_> + + <_> + 4 10 14 3 -1. + <_> + 4 10 7 3 2. + <_> + + <_> + 1 14 11 4 -1. + <_> + 1 16 11 2 2. + <_> + + <_> + 7 0 12 6 -1. + <_> + 13 0 6 3 2. + <_> + 7 3 6 3 2. + <_> + + <_> + 3 0 10 6 -1. + <_> + 3 0 5 3 2. + <_> + 8 3 5 3 2. + <_> + + <_> + 6 0 10 3 -1. + <_> + 6 0 5 3 2. + 1 + <_> + + <_> + 14 8 6 4 -1. + <_> + 14 8 6 2 2. + 1 + <_> + + <_> + 0 2 5 16 -1. + <_> + 0 10 5 8 2. + <_> + + <_> + 0 3 22 5 -1. + <_> + 0 3 11 5 2. + <_> + + <_> + 6 15 8 3 -1. + <_> + 10 15 4 3 2. + <_> + + <_> + 15 0 2 14 -1. + <_> + 15 0 1 14 2. + 1 + <_> + + <_> + 7 0 14 2 -1. + <_> + 7 0 14 1 2. + 1 + <_> + + <_> + 1 11 20 5 -1. + <_> + 6 11 10 5 2. + <_> + + <_> + 5 3 12 9 -1. + <_> + 9 6 4 3 9. + <_> + + <_> + 10 1 12 3 -1. + <_> + 14 1 4 3 3. + <_> + + <_> + 0 1 12 3 -1. + <_> + 4 1 4 3 3. + <_> + + <_> + 14 12 4 6 -1. + <_> + 14 12 2 6 2. + <_> + + <_> + 0 10 22 7 -1. + <_> + 11 10 11 7 2. + <_> + + <_> + 11 2 4 11 -1. + <_> + 11 2 2 11 2. + 1 + <_> + + <_> + 3 14 16 4 -1. + <_> + 3 14 8 2 2. + <_> + 11 16 8 2 2. + <_> + + <_> + 12 12 6 6 -1. + <_> + 14 12 2 6 3. + <_> + + <_> + 4 12 6 6 -1. + <_> + 6 12 2 6 3. + <_> + + <_> + 11 14 6 4 -1. + <_> + 11 16 6 2 2. + <_> + + <_> + 0 0 12 4 -1. + <_> + 0 0 6 2 2. + <_> + 6 2 6 2 2. + <_> + + <_> + 15 11 4 6 -1. + <_> + 15 11 2 6 2. + <_> + + <_> + 3 11 4 6 -1. + <_> + 5 11 2 6 2. + <_> + + <_> + 18 5 4 7 -1. + <_> + 18 5 2 7 2. + 1 + <_> + + <_> + 4 5 7 4 -1. + <_> + 4 5 7 2 2. + 1 + <_> + + <_> + 9 6 12 3 -1. + <_> + 13 6 4 3 3. + <_> + + <_> + 1 6 12 3 -1. + <_> + 5 6 4 3 3. + <_> + + <_> + 0 0 22 10 -1. + <_> + 11 0 11 5 2. + <_> + 0 5 11 5 2. + <_> + + <_> + 2 4 14 3 -1. + <_> + 2 5 14 1 3. + <_> + + <_> + 13 3 8 6 -1. + <_> + 17 3 4 3 2. + <_> + 13 6 4 3 2. + <_> + + <_> + 4 14 14 4 -1. + <_> + 4 14 7 2 2. + <_> + 11 16 7 2 2. + <_> + + <_> + 11 2 4 11 -1. + <_> + 11 2 2 11 2. + 1 + <_> + + <_> + 11 2 11 4 -1. + <_> + 11 2 11 2 2. + 1 + <_> + + <_> + 10 7 12 3 -1. + <_> + 10 7 6 3 2. + <_> + + <_> + 9 7 4 6 -1. + <_> + 9 7 2 6 2. + 1 + <_> + + <_> + 3 11 16 6 -1. + <_> + 11 11 8 3 2. + <_> + 3 14 8 3 2. + <_> + + <_> + 1 3 8 6 -1. + <_> + 1 3 4 3 2. + <_> + 5 6 4 3 2. + <_> + + <_> + 5 4 12 3 -1. + <_> + 5 5 12 1 3. + <_> + + <_> + 7 14 8 4 -1. + <_> + 11 14 4 4 2. + <_> + + <_> + 7 3 15 3 -1. + <_> + 7 4 15 1 3. + <_> + + <_> + 6 8 6 4 -1. + <_> + 6 8 6 2 2. + 1 + <_> + + <_> + 10 7 12 3 -1. + <_> + 10 7 6 3 2. + <_> + + <_> + 0 7 12 3 -1. + <_> + 6 7 6 3 2. + <_> + + <_> + 7 7 9 4 -1. + <_> + 10 7 3 4 3. + <_> + + <_> + 6 2 4 16 -1. + <_> + 6 10 4 8 2. + <_> + + <_> + 8 4 6 6 -1. + <_> + 10 4 2 6 3. + <_> + + <_> + 1 11 20 3 -1. + <_> + 6 11 10 3 2. + <_> + + <_> + 14 9 6 8 -1. + <_> + 17 9 3 4 2. + <_> + 14 13 3 4 2. + <_> + + <_> + 11 0 9 4 -1. + <_> + 11 0 9 2 2. + 1 + <_> + + <_> + 11 10 6 8 -1. + <_> + 14 10 3 4 2. + <_> + 11 14 3 4 2. + <_> + + <_> + 5 16 12 2 -1. + <_> + 5 17 12 1 2. + <_> + + <_> + 5 9 14 4 -1. + <_> + 5 11 14 2 2. + <_> + + <_> + 2 9 6 8 -1. + <_> + 2 9 3 4 2. + <_> + 5 13 3 4 2. + <_> + + <_> + 15 8 6 4 -1. + <_> + 15 8 3 4 2. + <_> + + <_> + 1 8 6 4 -1. + <_> + 4 8 3 4 2. + <_> + + <_> + 13 5 8 5 -1. + <_> + 13 5 4 5 2. + 1 + <_> + + <_> + 11 5 9 2 -1. + <_> + 11 5 9 1 2. + 1 + <_> + + <_> + 12 6 9 12 -1. + <_> + 15 10 3 4 9. + <_> + + <_> + 5 10 6 8 -1. + <_> + 5 10 3 4 2. + <_> + 8 14 3 4 2. + <_> + + <_> + 9 5 5 12 -1. + <_> + 9 8 5 6 2. + <_> + + <_> + 11 5 9 2 -1. + <_> + 11 5 9 1 2. + 1 + <_> + + <_> + 5 0 15 12 -1. + <_> + 10 4 5 4 9. + <_> + + <_> + 1 13 8 5 -1. + <_> + 5 13 4 5 2. + <_> + + <_> + 14 8 6 4 -1. + <_> + 14 8 3 4 2. + 1 + <_> + + <_> + 8 8 4 6 -1. + <_> + 8 8 4 3 2. + 1 + <_> + + <_> + 7 0 12 9 -1. + <_> + 11 3 4 3 9. + <_> + + <_> + 7 13 6 4 -1. + <_> + 7 15 6 2 2. + <_> + + <_> + 10 7 6 10 -1. + <_> + 13 7 3 5 2. + <_> + 10 12 3 5 2. + <_> + + <_> + 6 7 6 10 -1. + <_> + 6 7 3 5 2. + <_> + 9 12 3 5 2. + <_> + + <_> + 7 0 12 2 -1. + <_> + 7 0 6 2 2. + <_> + + <_> + 2 0 18 9 -1. + <_> + 2 3 18 3 3. + <_> + + <_> + 12 2 6 15 -1. + <_> + 12 2 3 15 2. + <_> + + <_> + 4 2 6 15 -1. + <_> + 7 2 3 15 2. + <_> + + <_> + 7 12 12 4 -1. + <_> + 7 13 12 2 2. + <_> + + <_> + 4 4 4 14 -1. + <_> + 4 4 2 7 2. + <_> + 6 11 2 7 2. + <_> + + <_> + 12 6 9 12 -1. + <_> + 15 10 3 4 9. + <_> + + <_> + 1 6 9 12 -1. + <_> + 4 10 3 4 9. + <_> + + <_> + 13 6 8 12 -1. + <_> + 17 6 4 6 2. + <_> + 13 12 4 6 2. + <_> + + <_> + 7 14 8 3 -1. + <_> + 11 14 4 3 2. + <_> + + <_> + 5 5 12 3 -1. + <_> + 9 5 4 3 3. + <_> + + <_> + 10 0 2 18 -1. + <_> + 10 6 2 6 3. + <_> + + <_> + 4 14 14 2 -1. + <_> + 4 14 7 2 2. + <_> + + <_> + 3 0 6 4 -1. + <_> + 6 0 3 4 2. + <_> + + <_> + 13 12 6 4 -1. + <_> + 13 12 3 4 2. + <_> + + <_> + 1 0 8 4 -1. + <_> + 5 0 4 4 2. + <_> + + <_> + 7 9 14 4 -1. + <_> + 14 9 7 2 2. + <_> + 7 11 7 2 2. + <_> + + <_> + 1 0 8 18 -1. + <_> + 1 0 4 9 2. + <_> + 5 9 4 9 2. + <_> + + <_> + 13 8 6 4 -1. + <_> + 13 8 3 4 2. + 1 + <_> + + <_> + 9 8 4 6 -1. + <_> + 9 8 4 3 2. + 1 + <_> + + <_> + 3 13 6 4 -1. + <_> + 6 13 3 4 2. + <_> + + <_> + 11 4 6 7 -1. + <_> + 13 4 2 7 3. + <_> + + <_> + 6 8 6 4 -1. + <_> + 6 8 3 4 2. + 1 + <_> + + <_> + 10 7 12 5 -1. + <_> + 13 7 6 5 2. + <_> + + <_> + 3 5 12 3 -1. + <_> + 9 5 6 3 2. + <_> + + <_> + 13 5 4 6 -1. + <_> + 13 8 4 3 2. + <_> + + <_> + 5 5 4 6 -1. + <_> + 5 8 4 3 2. + <_> + + <_> + 13 12 6 6 -1. + <_> + 15 12 2 6 3. + <_> + + <_> + 10 2 4 10 -1. + <_> + 10 2 4 5 2. + 1 + <_> + + <_> + 13 12 6 6 -1. + <_> + 15 12 2 6 3. + <_> + + <_> + 3 12 6 6 -1. + <_> + 5 12 2 6 3. + <_> + + <_> + 11 12 6 6 -1. + <_> + 11 14 6 2 3. + <_> + + <_> + 5 12 8 6 -1. + <_> + 5 12 4 3 2. + <_> + 9 15 4 3 2. + <_> + + <_> + 5 11 12 6 -1. + <_> + 11 11 6 3 2. + <_> + 5 14 6 3 2. + <_> + + <_> + 0 9 22 8 -1. + <_> + 0 9 11 4 2. + <_> + 11 13 11 4 2. + <_> + + <_> + 6 9 13 3 -1. + <_> + 6 10 13 1 3. + <_> + + <_> + 0 2 8 6 -1. + <_> + 0 2 4 3 2. + <_> + 4 5 4 3 2. + <_> + + <_> + 4 9 16 3 -1. + <_> + 4 10 16 1 3. + <_> + + <_> + 4 9 12 3 -1. + <_> + 4 10 12 1 3. + <_> + + <_> + 16 2 5 16 -1. + <_> + 16 10 5 8 2. + <_> + + <_> + 6 13 7 4 -1. + <_> + 6 15 7 2 2. + <_> + + <_> + 1 7 20 8 -1. + <_> + 11 7 10 4 2. + <_> + 1 11 10 4 2. + <_> + + <_> + 5 2 12 3 -1. + <_> + 5 3 12 1 3. + <_> + + <_> + 13 13 6 4 -1. + <_> + 13 15 6 2 2. + <_> + + <_> + 1 0 5 8 -1. + <_> + 1 4 5 4 2. + <_> + + <_> + 5 0 13 8 -1. + <_> + 5 4 13 4 2. + <_> + + <_> + 9 1 4 8 -1. + <_> + 9 5 4 4 2. + <_> + + <_> + 11 2 8 8 -1. + <_> + 9 4 8 4 2. + 1 + <_> + + <_> + 11 2 8 8 -1. + <_> + 13 4 4 8 2. + 1 + <_> + + <_> + 8 0 14 4 -1. + <_> + 15 0 7 2 2. + <_> + 8 2 7 2 2. + <_> + + <_> + 0 10 12 4 -1. + <_> + 0 10 6 2 2. + <_> + 6 12 6 2 2. + <_> + + <_> + 8 0 14 4 -1. + <_> + 15 0 7 2 2. + <_> + 8 2 7 2 2. + <_> + + <_> + 3 4 16 14 -1. + <_> + 7 4 8 14 2. + <_> + + <_> + 13 13 6 4 -1. + <_> + 13 15 6 2 2. + <_> + + <_> + 3 13 6 4 -1. + <_> + 3 15 6 2 2. + <_> + + <_> + 11 5 2 10 -1. + <_> + 11 5 1 10 2. + 1 + <_> + + <_> + 11 5 10 2 -1. + <_> + 11 5 10 1 2. + 1 + <_> + + <_> + 4 0 18 4 -1. + <_> + 13 0 9 2 2. + <_> + 4 2 9 2 2. + <_> + + <_> + 6 5 4 6 -1. + <_> + 6 5 2 6 2. + 1 + <_> + + <_> + 16 6 6 6 -1. + <_> + 14 8 6 2 3. + 1 + <_> + + <_> + 6 6 6 6 -1. + <_> + 8 8 2 6 3. + 1 + <_> + + <_> + 4 0 18 12 -1. + <_> + 4 0 9 12 2. + <_> + + <_> + 0 12 8 6 -1. + <_> + 2 12 4 6 2. + <_> + + <_> + 7 12 8 6 -1. + <_> + 7 12 4 6 2. + <_> + + <_> + 7 6 3 12 -1. + <_> + 8 6 1 12 3. + <_> + + <_> + 15 5 6 6 -1. + <_> + 15 5 3 6 2. + 1 + <_> + + <_> + 2 12 8 3 -1. + <_> + 6 12 4 3 2. + <_> + + <_> + 2 6 18 3 -1. + <_> + 8 6 6 3 3. + <_> + + <_> + 0 11 22 2 -1. + <_> + 11 11 11 2 2. + <_> + + <_> + 10 14 6 4 -1. + <_> + 10 16 6 2 2. + <_> + + <_> + 3 12 6 4 -1. + <_> + 6 12 3 4 2. + <_> + + <_> + 14 0 4 12 -1. + <_> + 14 0 4 6 2. + 1 + <_> + + <_> + 5 10 6 4 -1. + <_> + 8 10 3 4 2. + <_> + + <_> + 1 12 20 6 -1. + <_> + 11 12 10 3 2. + <_> + 1 15 10 3 2. + <_> + + <_> + 5 15 12 3 -1. + <_> + 9 15 4 3 3. + <_> + + <_> + 13 1 3 10 -1. + <_> + 13 6 3 5 2. + <_> + + <_> + 9 0 10 4 -1. + <_> + 9 0 5 4 2. + 1 + <_> + + <_> + 13 1 3 10 -1. + <_> + 13 6 3 5 2. + <_> + + <_> + 6 1 3 10 -1. + <_> + 6 6 3 5 2. + <_> + + <_> + 11 4 10 4 -1. + <_> + 11 4 10 2 2. + 1 + <_> + + <_> + 0 10 20 8 -1. + <_> + 0 10 10 4 2. + <_> + 10 14 10 4 2. + <_> + + <_> + 15 11 6 7 -1. + <_> + 17 11 2 7 3. + <_> + + <_> + 4 14 9 4 -1. + <_> + 4 16 9 2 2. + <_> + + <_> + 15 0 6 8 -1. + <_> + 15 4 6 4 2. + <_> + + <_> + 1 11 6 7 -1. + <_> + 3 11 2 7 3. + <_> + + <_> + 12 6 8 4 -1. + <_> + 12 6 8 2 2. + 1 + <_> + + <_> + 11 2 6 2 -1. + <_> + 11 2 6 1 2. + 1 + <_> + + <_> + 11 0 11 8 -1. + <_> + 11 4 11 4 2. + <_> + + <_> + 0 1 22 6 -1. + <_> + 0 1 11 3 2. + <_> + 11 4 11 3 2. + <_> + + <_> + 11 6 3 12 -1. + <_> + 12 6 1 12 3. + <_> + + <_> + 0 1 14 7 -1. + <_> + 7 1 7 7 2. + <_> + + <_> + 16 8 4 6 -1. + <_> + 16 8 2 6 2. + 1 + <_> + + <_> + 1 11 20 7 -1. + <_> + 6 11 10 7 2. + <_> + + <_> + 13 12 4 6 -1. + <_> + 13 15 4 3 2. + <_> + + <_> + 0 3 13 3 -1. + <_> + 0 4 13 1 3. + <_> + + <_> + 6 3 12 3 -1. + <_> + 6 4 12 1 3. + <_> + + <_> + 0 4 22 10 -1. + <_> + 0 4 11 5 2. + <_> + 11 9 11 5 2. + <_> + + <_> + 14 3 8 4 -1. + <_> + 14 3 8 2 2. + 1 + <_> + + <_> + 5 5 12 6 -1. + <_> + 5 5 6 3 2. + <_> + 11 8 6 3 2. + <_> + + <_> + 11 6 6 6 -1. + <_> + 13 6 2 6 3. + <_> + + <_> + 9 4 4 13 -1. + <_> + 10 4 2 13 2. + <_> + + <_> + 11 3 3 13 -1. + <_> + 12 3 1 13 3. + <_> + + <_> + 9 5 4 6 -1. + <_> + 11 5 2 6 2. + <_> + + <_> + 7 2 12 15 -1. + <_> + 11 7 4 5 9. + <_> + + <_> + 3 2 12 15 -1. + <_> + 7 7 4 5 9. + <_> + + <_> + 5 2 12 12 -1. + <_> + 9 6 4 4 9. + <_> + + <_> + 8 5 4 12 -1. + <_> + 8 8 4 6 2. + <_> + + <_> + 8 9 8 7 -1. + <_> + 10 9 4 7 2. + <_> + + <_> + 6 9 8 7 -1. + <_> + 8 9 4 7 2. + <_> + + <_> + 0 4 22 14 -1. + <_> + 11 4 11 7 2. + <_> + 0 11 11 7 2. + <_> + + <_> + 2 12 18 6 -1. + <_> + 2 14 18 2 3. + <_> + + <_> + 6 5 6 5 -1. + <_> + 9 5 3 5 2. + <_> + + <_> + 11 14 9 4 -1. + <_> + 14 14 3 4 3. + <_> + + <_> + 6 14 6 4 -1. + <_> + 6 16 6 2 2. + <_> + + <_> + 15 6 6 5 -1. + <_> + 15 6 3 5 2. + 1 + <_> + + <_> + 7 6 5 6 -1. + <_> + 7 6 5 3 2. + 1 + <_> + + <_> + 13 12 8 6 -1. + <_> + 13 12 4 6 2. + <_> + + <_> + 6 10 10 8 -1. + <_> + 6 12 10 4 2. + <_> + + <_> + 2 13 18 2 -1. + <_> + 2 13 9 2 2. + <_> + + <_> + 1 15 8 3 -1. + <_> + 5 15 4 3 2. + <_> + + <_> + 14 7 6 4 -1. + <_> + 14 7 6 2 2. + 1 + <_> + + <_> + 10 0 7 2 -1. + <_> + 10 0 7 1 2. + 1 + <_> + + <_> + 17 8 4 6 -1. + <_> + 17 8 4 3 2. + 1 + <_> + + <_> + 2 0 15 9 -1. + <_> + 7 3 5 3 9. + <_> + + <_> + 9 3 4 6 -1. + <_> + 9 6 4 3 2. + <_> + + <_> + 3 0 16 12 -1. + <_> + 3 6 16 6 2. + <_> + + <_> + 11 0 3 10 -1. + <_> + 11 0 3 5 2. + 1 + <_> + + <_> + 0 3 22 14 -1. + <_> + 11 3 11 14 2. + <_> + + <_> + 10 3 6 7 -1. + <_> + 12 3 2 7 3. + <_> + + <_> + 11 1 11 4 -1. + <_> + 10 2 11 2 2. + 1 + <_> + + <_> + 14 7 6 4 -1. + <_> + 14 7 6 2 2. + 1 + <_> + + <_> + 5 5 4 12 -1. + <_> + 5 11 4 6 2. + <_> + + <_> + 2 6 20 9 -1. + <_> + 2 6 10 9 2. + <_> + + <_> + 1 9 18 3 -1. + <_> + 7 9 6 3 3. + <_> + + <_> + 11 6 6 6 -1. + <_> + 13 6 2 6 3. + <_> + + <_> + 8 13 6 4 -1. + <_> + 11 13 3 4 2. + <_> + + <_> + 10 14 6 4 -1. + <_> + 10 14 3 4 2. + <_> + + <_> + 5 6 6 6 -1. + <_> + 7 6 2 6 3. + <_> + + <_> + 15 0 3 8 -1. + <_> + 16 1 1 8 3. + 1 + <_> + + <_> + 5 8 12 3 -1. + <_> + 9 8 4 3 3. + <_> + + <_> + 2 7 18 4 -1. + <_> + 2 9 18 2 2. + <_> + + <_> + 11 1 10 4 -1. + <_> + 11 1 5 4 2. + 1 + <_> + + <_> + 15 0 3 8 -1. + <_> + 16 1 1 8 3. + 1 + <_> + + <_> + 7 0 8 3 -1. + <_> + 6 1 8 1 3. + 1 + <_> + + <_> + 10 0 12 4 -1. + <_> + 16 0 6 2 2. + <_> + 10 2 6 2 2. + <_> + + <_> + 5 2 12 3 -1. + <_> + 5 3 12 1 3. + <_> + + <_> + 8 2 14 3 -1. + <_> + 8 3 14 1 3. + <_> + + <_> + 0 0 12 4 -1. + <_> + 0 0 6 2 2. + <_> + 6 2 6 2 2. + <_> + + <_> + 8 0 14 4 -1. + <_> + 15 0 7 2 2. + <_> + 8 2 7 2 2. + <_> + + <_> + 0 5 8 6 -1. + <_> + 0 5 4 3 2. + <_> + 4 8 4 3 2. + <_> + + <_> + 14 14 6 4 -1. + <_> + 14 14 3 4 2. + <_> + + <_> + 6 12 10 4 -1. + <_> + 11 12 5 4 2. + <_> + + <_> + 14 6 6 6 -1. + <_> + 12 8 6 2 3. + 1 + <_> + + <_> + 8 6 6 6 -1. + <_> + 10 8 2 6 3. + 1 + <_> + + <_> + 2 8 6 10 -1. + <_> + 2 8 3 5 2. + <_> + 5 13 3 5 2. + <_> + + <_> + 11 3 4 9 -1. + <_> + 12 4 2 9 2. + 1 + <_> + + <_> + 2 0 12 4 -1. + <_> + 2 0 6 2 2. + <_> + 8 2 6 2 2. + <_> + + <_> + 11 5 3 9 -1. + <_> + 12 6 1 9 3. + 1 + <_> + + <_> + 11 3 9 4 -1. + <_> + 10 4 9 2 2. + 1 + <_> + + <_> + 13 13 8 5 -1. + <_> + 13 13 4 5 2. + <_> + + <_> + 1 13 8 5 -1. + <_> + 5 13 4 5 2. + <_> + + <_> + 7 13 8 3 -1. + <_> + 7 13 4 3 2. + <_> + + <_> + 8 13 6 4 -1. + <_> + 11 13 3 4 2. + <_> + + <_> + 11 7 3 8 -1. + <_> + 12 8 1 8 3. + 1 + <_> + + <_> + 5 1 6 8 -1. + <_> + 7 1 2 8 3. + <_> + + <_> + 14 14 6 4 -1. + <_> + 14 16 6 2 2. + <_> + + <_> + 11 7 8 3 -1. + <_> + 10 8 8 1 3. + 1 + <_> + + <_> + 12 3 3 12 -1. + <_> + 8 7 3 4 3. + 1 + <_> + + <_> + 8 5 5 6 -1. + <_> + 8 8 5 3 2. + <_> + + <_> + 11 3 8 4 -1. + <_> + 11 3 8 2 2. + 1 + <_> + + <_> + 7 5 8 6 -1. + <_> + 9 5 4 6 2. + <_> + + <_> + 11 4 6 6 -1. + <_> + 9 6 6 2 3. + 1 + <_> + + <_> + 11 4 6 6 -1. + <_> + 13 6 2 6 3. + 1 + <_> + + <_> + 12 8 6 4 -1. + <_> + 12 8 3 4 2. + 1 + <_> + + <_> + 5 15 8 3 -1. + <_> + 9 15 4 3 2. + <_> + + <_> + 0 5 22 13 -1. + <_> + 0 5 11 13 2. + <_> + + <_> + 2 12 9 6 -1. + <_> + 5 12 3 6 3. + <_> + + <_> + 19 1 3 10 -1. + <_> + 19 6 3 5 2. + <_> + + <_> + 5 14 12 4 -1. + <_> + 5 16 12 2 2. + <_> + + <_> + 10 14 10 4 -1. + <_> + 10 16 10 2 2. + <_> + + <_> + 1 3 14 3 -1. + <_> + 1 4 14 1 3. + <_> + + <_> + 3 14 16 4 -1. + <_> + 11 14 8 2 2. + <_> + 3 16 8 2 2. + <_> + + <_> + 0 14 6 4 -1. + <_> + 3 14 3 4 2. + <_> + + <_> + 10 1 11 4 -1. + <_> + 10 3 11 2 2. + <_> + + <_> + 1 1 11 4 -1. + <_> + 1 3 11 2 2. + <_> + + <_> + 9 3 6 6 -1. + <_> + 9 5 6 2 3. + <_> + + <_> + 4 5 12 3 -1. + <_> + 4 6 12 1 3. + <_> + + <_> + 12 0 7 6 -1. + <_> + 12 3 7 3 2. + <_> + + <_> + 1 3 16 4 -1. + <_> + 1 4 16 2 2. + <_> + + <_> + 4 9 15 3 -1. + <_> + 4 10 15 1 3. + <_> + + <_> + 2 4 18 6 -1. + <_> + 2 4 9 3 2. + <_> + 11 7 9 3 2. + <_> + + <_> + 13 5 4 13 -1. + <_> + 14 5 2 13 2. + <_> + + <_> + 4 6 6 4 -1. + <_> + 4 8 6 2 2. + <_> + + <_> + 8 7 6 5 -1. + <_> + 8 7 3 5 2. + <_> + + <_> + 10 8 4 6 -1. + <_> + 10 8 4 3 2. + 1 + <_> + + <_> + 6 12 12 4 -1. + <_> + 6 12 6 4 2. + <_> + + <_> + 3 11 10 3 -1. + <_> + 8 11 5 3 2. + <_> + + <_> + 12 2 3 12 -1. + <_> + 12 2 3 6 2. + 1 + <_> + + <_> + 0 2 14 16 -1. + <_> + 7 2 7 16 2. + <_> + + <_> + 1 5 20 4 -1. + <_> + 6 5 10 4 2. + <_> + + <_> + 0 1 18 15 -1. + <_> + 9 1 9 15 2. + <_> + + <_> + 15 2 6 8 -1. + <_> + 15 4 6 4 2. + <_> + + <_> + 4 14 13 4 -1. + <_> + 4 15 13 2 2. + <_> + + <_> + 11 2 3 12 -1. + <_> + 12 2 1 12 3. + <_> + + <_> + 0 16 15 2 -1. + <_> + 0 17 15 1 2. + <_> + + <_> + 12 14 6 4 -1. + <_> + 12 16 6 2 2. + <_> + + <_> + 5 13 12 4 -1. + <_> + 5 14 12 2 2. + <_> + + <_> + 12 12 6 6 -1. + <_> + 12 14 6 2 3. + <_> + + <_> + 0 9 15 3 -1. + <_> + 0 10 15 1 3. + <_> + + <_> + 6 9 14 3 -1. + <_> + 6 10 14 1 3. + <_> + + <_> + 4 12 7 6 -1. + <_> + 4 14 7 2 3. + <_> + + <_> + 6 6 10 6 -1. + <_> + 11 6 5 3 2. + <_> + 6 9 5 3 2. + <_> + + <_> + 3 0 16 2 -1. + <_> + 3 0 8 2 2. + 1 + <_> + + <_> + 5 9 12 9 -1. + <_> + 5 12 12 3 3. + <_> + + <_> + 6 9 10 6 -1. + <_> + 6 12 10 3 2. + <_> + + <_> + 7 4 8 6 -1. + <_> + 7 6 8 2 3. + <_> + + <_> + 6 5 3 12 -1. + <_> + 6 11 3 6 2. + <_> + + <_> + 12 12 6 6 -1. + <_> + 14 12 2 6 3. + <_> + + <_> + 6 15 8 3 -1. + <_> + 10 15 4 3 2. + <_> + + <_> + 4 13 14 4 -1. + <_> + 4 15 14 2 2. + <_> + + <_> + 10 4 11 3 -1. + <_> + 9 5 11 1 3. + 1 + <_> + + <_> + 11 4 4 9 -1. + <_> + 12 5 2 9 2. + 1 + <_> + + <_> + 0 8 13 3 -1. + <_> + 0 9 13 1 3. + <_> + + <_> + 13 2 6 10 -1. + <_> + 16 2 3 5 2. + <_> + 13 7 3 5 2. + <_> + + <_> + 3 2 6 10 -1. + <_> + 3 2 3 5 2. + <_> + 6 7 3 5 2. + <_> + + <_> + 11 2 4 11 -1. + <_> + 11 2 2 11 2. + 1 + <_> + + <_> + 4 2 12 3 -1. + <_> + 4 3 12 1 3. + <_> + + <_> + 12 1 4 12 -1. + <_> + 12 1 2 12 2. + 1 + <_> + + <_> + 11 2 11 4 -1. + <_> + 11 2 11 2 2. + 1 + <_> + + <_> + 11 0 4 9 -1. + <_> + 11 0 2 9 2. + 1 + <_> + + <_> + 11 0 9 4 -1. + <_> + 11 0 9 2 2. + 1 + <_> + + <_> + 16 2 6 10 -1. + <_> + 19 2 3 5 2. + <_> + 16 7 3 5 2. + <_> + + <_> + 11 0 6 3 -1. + <_> + 10 1 6 1 3. + 1 + <_> + + <_> + 11 0 3 8 -1. + <_> + 12 1 1 8 3. + 1 + <_> + + <_> + 11 0 8 3 -1. + <_> + 10 1 8 1 3. + 1 + <_> + + <_> + 17 1 4 12 -1. + <_> + 19 1 2 6 2. + <_> + 17 7 2 6 2. + <_> + + <_> + 8 4 6 4 -1. + <_> + 8 6 6 2 2. + <_> + + <_> + 8 5 8 5 -1. + <_> + 8 5 4 5 2. + <_> + + <_> + 8 4 6 13 -1. + <_> + 10 4 2 13 3. + <_> + + <_> + 16 3 6 8 -1. + <_> + 19 3 3 4 2. + <_> + 16 7 3 4 2. + <_> + + <_> + 0 3 6 8 -1. + <_> + 0 3 3 4 2. + <_> + 3 7 3 4 2. + <_> + + <_> + 10 9 12 4 -1. + <_> + 16 9 6 2 2. + <_> + 10 11 6 2 2. + <_> + + <_> + 1 2 9 12 -1. + <_> + 4 6 3 4 9. + <_> + + <_> + 15 12 4 6 -1. + <_> + 15 12 2 6 2. + <_> + + <_> + 5 15 12 3 -1. + <_> + 11 15 6 3 2. + <_> + + <_> + 2 16 20 2 -1. + <_> + 2 16 10 2 2. + <_> + + <_> + 1 8 10 6 -1. + <_> + 1 8 5 3 2. + <_> + 6 11 5 3 2. + <_> + + <_> + 6 3 16 14 -1. + <_> + 14 3 8 7 2. + <_> + 6 10 8 7 2. + <_> + + <_> + 1 4 6 8 -1. + <_> + 1 4 3 4 2. + <_> + 4 8 3 4 2. + <_> + + <_> + 7 2 12 4 -1. + <_> + 7 3 12 2 2. + <_> + + <_> + 1 9 6 9 -1. + <_> + 4 9 3 9 2. + <_> + + <_> + 12 14 10 4 -1. + <_> + 12 14 5 4 2. + <_> + + <_> + 2 12 12 5 -1. + <_> + 5 12 6 5 2. + <_> + + <_> + 15 12 6 6 -1. + <_> + 17 12 2 6 3. + <_> + + <_> + 1 12 6 6 -1. + <_> + 3 12 2 6 3. + <_> + + <_> + 8 12 6 6 -1. + <_> + 10 12 2 6 3. + <_> + + <_> + 5 2 12 16 -1. + <_> + 5 10 12 8 2. + <_> + + <_> + 4 2 18 14 -1. + <_> + 4 9 18 7 2. + <_> + + <_> + 5 4 12 14 -1. + <_> + 5 11 12 7 2. + <_> + + <_> + 2 5 20 8 -1. + <_> + 7 5 10 8 2. + <_> + + <_> + 8 0 10 7 -1. + <_> + 8 0 5 7 2. + 1 + <_> + + <_> + 12 0 5 8 -1. + <_> + 12 0 5 4 2. + 1 + <_> + + <_> + 7 4 6 13 -1. + <_> + 10 4 3 13 2. + <_> + + <_> + 7 14 8 4 -1. + <_> + 7 16 8 2 2. + <_> + + <_> + 8 0 3 12 -1. + <_> + 9 0 1 12 3. + <_> + + <_> + 11 6 3 12 -1. + <_> + 12 6 1 12 3. + <_> + + <_> + 4 0 3 12 -1. + <_> + 4 4 3 4 3. + <_> + + <_> + 11 3 3 15 -1. + <_> + 12 3 1 15 3. + <_> + + <_> + 5 12 7 6 -1. + <_> + 5 14 7 2 3. + <_> + + <_> + 11 6 3 12 -1. + <_> + 12 6 1 12 3. + <_> + + <_> + 8 6 3 12 -1. + <_> + 9 6 1 12 3. + <_> + + <_> + 5 16 12 2 -1. + <_> + 5 16 6 2 2. + <_> + + <_> + 1 12 20 6 -1. + <_> + 6 12 10 6 2. + <_> + + <_> + 8 11 9 4 -1. + <_> + 11 11 3 4 3. + <_> + + <_> + 5 11 9 4 -1. + <_> + 8 11 3 4 3. + <_> + + <_> + 11 6 9 12 -1. + <_> + 14 10 3 4 9. + <_> + + <_> + 2 6 9 12 -1. + <_> + 5 10 3 4 9. + <_> + + <_> + 5 9 12 2 -1. + <_> + 5 10 12 1 2. + <_> + + <_> + 0 3 16 3 -1. + <_> + 4 3 8 3 2. + <_> + + <_> + 11 6 3 12 -1. + <_> + 12 6 1 12 3. + <_> + + <_> + 0 2 14 3 -1. + <_> + 0 3 14 1 3. + <_> + + <_> + 10 2 12 3 -1. + <_> + 10 3 12 1 3. + <_> + + <_> + 5 14 12 3 -1. + <_> + 11 14 6 3 2. + <_> + + <_> + 8 13 8 3 -1. + <_> + 8 13 4 3 2. + <_> + + <_> + 9 2 4 8 -1. + <_> + 9 6 4 4 2. + <_> + + <_> + 15 1 3 11 -1. + <_> + 16 2 1 11 3. + 1 + <_> + + <_> + 8 1 10 4 -1. + <_> + 7 2 10 2 2. + 1 + <_> + + <_> + 5 5 15 3 -1. + <_> + 5 6 15 1 3. + <_> + + <_> + 5 1 9 5 -1. + <_> + 8 1 3 5 3. + <_> + + <_> + 14 0 4 18 -1. + <_> + 15 0 2 18 2. + <_> + + <_> + 6 0 5 16 -1. + <_> + 6 8 5 8 2. + <_> + + <_> + 12 4 4 8 -1. + <_> + 12 8 4 4 2. + <_> + + <_> + 11 4 10 2 -1. + <_> + 11 4 10 1 2. + 1 + <_> + + <_> + 10 0 12 3 -1. + <_> + 14 0 4 3 3. + <_> + + <_> + 0 2 20 13 -1. + <_> + 5 2 10 13 2. + <_> + + <_> + 12 4 4 8 -1. + <_> + 12 8 4 4 2. + <_> + + <_> + 6 4 4 8 -1. + <_> + 6 8 4 4 2. + <_> + + <_> + 11 6 3 12 -1. + <_> + 12 6 1 12 3. + <_> + + <_> + 8 6 3 12 -1. + <_> + 9 6 1 12 3. + <_> + + <_> + 7 1 14 2 -1. + <_> + 7 1 7 2 2. + <_> + + <_> + 4 8 14 10 -1. + <_> + 4 13 14 5 2. + <_> + + <_> + 11 14 9 4 -1. + <_> + 14 14 3 4 3. + <_> + + <_> + 1 7 17 8 -1. + <_> + 1 11 17 4 2. + <_> + + <_> + 10 12 7 6 -1. + <_> + 10 15 7 3 2. + <_> + + <_> + 10 1 8 9 -1. + <_> + 10 1 4 9 2. + 1 + <_> + + <_> + 11 2 4 11 -1. + <_> + 11 2 2 11 2. + 1 + <_> + + <_> + 6 9 4 9 -1. + <_> + 8 9 2 9 2. + <_> + + <_> + 8 3 12 4 -1. + <_> + 14 3 6 2 2. + <_> + 8 5 6 2 2. + <_> + + <_> + 5 14 7 4 -1. + <_> + 5 16 7 2 2. + <_> + + <_> + 13 0 4 13 -1. + <_> + 13 0 2 13 2. + 1 + <_> + + <_> + 9 0 13 4 -1. + <_> + 9 0 13 2 2. + 1 + <_> + + <_> + 12 9 4 9 -1. + <_> + 12 12 4 3 3. + <_> + + <_> + 7 4 12 2 -1. + <_> + 7 4 12 1 2. + 1 + <_> + + <_> + 12 5 10 6 -1. + <_> + 17 5 5 3 2. + <_> + 12 8 5 3 2. + <_> + + <_> + 1 0 17 3 -1. + <_> + 1 1 17 1 3. + <_> + + <_> + 15 4 6 8 -1. + <_> + 18 4 3 4 2. + <_> + 15 8 3 4 2. + <_> + + <_> + 3 2 4 14 -1. + <_> + 3 2 2 7 2. + <_> + 5 9 2 7 2. + <_> + + <_> + 14 8 6 4 -1. + <_> + 14 8 6 2 2. + 1 + <_> + + <_> + 8 8 4 6 -1. + <_> + 8 8 2 6 2. + 1 + <_> + + <_> + 12 1 4 16 -1. + <_> + 14 1 2 8 2. + <_> + 12 9 2 8 2. + <_> + + <_> + 7 0 6 8 -1. + <_> + 7 0 3 4 2. + <_> + 10 4 3 4 2. + <_> + + <_> + 8 12 6 5 -1. + <_> + 8 12 3 5 2. + <_> + + <_> + 7 5 6 12 -1. + <_> + 7 5 3 6 2. + <_> + 10 11 3 6 2. + <_> + + <_> + 15 5 6 6 -1. + <_> + 15 5 3 6 2. + 1 + <_> + + <_> + 6 10 3 8 -1. + <_> + 6 14 3 4 2. + <_> + + <_> + 4 0 14 3 -1. + <_> + 4 1 14 1 3. + <_> + + <_> + 0 9 8 3 -1. + <_> + 4 9 4 3 2. + <_> + + <_> + 9 3 4 6 -1. + <_> + 9 6 4 3 2. + <_> + + <_> + 3 0 10 10 -1. + <_> + 3 0 5 5 2. + <_> + 8 5 5 5 2. + <_> + + <_> + 5 13 12 4 -1. + <_> + 5 13 6 4 2. + <_> + + <_> + 6 12 10 3 -1. + <_> + 11 12 5 3 2. + <_> + + <_> + 12 15 10 3 -1. + <_> + 12 15 5 3 2. + <_> + + <_> + 0 15 10 3 -1. + <_> + 5 15 5 3 2. + <_> + + <_> + 3 0 17 14 -1. + <_> + 3 7 17 7 2. + <_> + + <_> + 9 0 4 16 -1. + <_> + 9 0 2 8 2. + <_> + 11 8 2 8 2. + <_> + + <_> + 11 4 6 8 -1. + <_> + 11 8 6 4 2. + <_> + + <_> + 0 9 12 3 -1. + <_> + 0 10 12 1 3. + <_> + + <_> + 1 5 20 8 -1. + <_> + 11 5 10 4 2. + <_> + 1 9 10 4 2. + <_> + + <_> + 1 8 13 3 -1. + <_> + 1 9 13 1 3. + <_> + + <_> + 8 8 14 3 -1. + <_> + 8 9 14 1 3. + <_> + + <_> + 4 16 14 2 -1. + <_> + 4 17 14 1 2. + <_> + + <_> + 11 1 3 6 -1. + <_> + 12 2 1 6 3. + 1 + <_> + + <_> + 11 1 6 3 -1. + <_> + 10 2 6 1 3. + 1 + <_> + + <_> + 13 1 6 10 -1. + <_> + 16 1 3 5 2. + <_> + 13 6 3 5 2. + <_> + + <_> + 11 0 10 3 -1. + <_> + 10 1 10 1 3. + 1 + <_> + + <_> + 12 1 3 12 -1. + <_> + 13 2 1 12 3. + 1 + <_> + + <_> + 10 1 12 3 -1. + <_> + 9 2 12 1 3. + 1 + <_> + + <_> + 13 1 6 10 -1. + <_> + 16 1 3 5 2. + <_> + 13 6 3 5 2. + <_> + + <_> + 3 1 6 10 -1. + <_> + 3 1 3 5 2. + <_> + 6 6 3 5 2. + <_> + + <_> + 14 7 6 10 -1. + <_> + 17 7 3 5 2. + <_> + 14 12 3 5 2. + <_> + + <_> + 3 2 6 8 -1. + <_> + 3 2 3 4 2. + <_> + 6 6 3 4 2. + <_> + + <_> + 11 14 9 4 -1. + <_> + 14 14 3 4 3. + <_> + + <_> + 1 8 15 8 -1. + <_> + 1 12 15 4 2. + <_> + + <_> + 9 12 8 4 -1. + <_> + 9 14 8 2 2. + <_> + + <_> + 6 5 7 6 -1. + <_> + 6 7 7 2 3. + <_> + + <_> + 9 5 6 5 -1. + <_> + 9 5 3 5 2. + <_> + + <_> + 0 12 8 6 -1. + <_> + 2 12 4 6 2. + <_> + + <_> + 14 8 6 4 -1. + <_> + 14 8 3 4 2. + 1 + <_> + + <_> + 8 8 4 6 -1. + <_> + 8 8 4 3 2. + 1 + <_> + + <_> + 9 4 6 8 -1. + <_> + 11 4 2 8 3. + <_> + + <_> + 7 4 6 8 -1. + <_> + 9 4 2 8 3. + <_> + + <_> + 0 15 10 3 -1. + <_> + 5 15 5 3 2. + <_> + + <_> + 11 5 3 9 -1. + <_> + 12 6 1 9 3. + 1 + <_> + + <_> + 11 5 9 3 -1. + <_> + 10 6 9 1 3. + 1 + <_> + + <_> + 12 6 8 4 -1. + <_> + 12 6 8 2 2. + 1 + <_> + + <_> + 10 6 4 8 -1. + <_> + 10 6 2 8 2. + 1 + <_> + + <_> + 13 0 5 12 -1. + <_> + 13 0 5 6 2. + 1 + <_> + + <_> + 1 3 12 4 -1. + <_> + 4 3 6 4 2. + <_> + + <_> + 15 7 6 5 -1. + <_> + 15 7 3 5 2. + <_> + + <_> + 1 7 12 3 -1. + <_> + 1 8 12 1 3. + <_> + + <_> + 15 7 6 5 -1. + <_> + 15 7 3 5 2. + <_> + + <_> + 1 7 6 5 -1. + <_> + 4 7 3 5 2. + <_> + + <_> + 12 13 6 4 -1. + <_> + 12 15 6 2 2. + <_> + + <_> + 5 12 12 6 -1. + <_> + 5 12 6 3 2. + <_> + 11 15 6 3 2. + <_> + + <_> + 11 5 2 9 -1. + <_> + 11 5 1 9 2. + 1 + <_> + + <_> + 11 5 9 2 -1. + <_> + 11 5 9 1 2. + 1 + <_> + + <_> + 10 12 9 4 -1. + <_> + 13 12 3 4 3. + <_> + + <_> + 8 6 6 6 -1. + <_> + 8 6 6 3 2. + 1 + <_> + + <_> + 10 14 6 4 -1. + <_> + 10 14 3 4 2. + <_> + + <_> + 0 2 14 3 -1. + <_> + 0 3 14 1 3. + <_> + + <_> + 8 2 12 3 -1. + <_> + 8 3 12 1 3. + <_> + + <_> + 8 7 5 6 -1. + <_> + 8 7 5 3 2. + 1 + <_> + + <_> + 12 6 8 3 -1. + <_> + 12 6 4 3 2. + 1 + <_> + + <_> + 4 10 4 6 -1. + <_> + 6 10 2 6 2. + <_> + + <_> + 1 11 20 4 -1. + <_> + 6 11 10 4 2. + <_> + + <_> + 6 10 8 7 -1. + <_> + 8 10 4 7 2. + <_> + + <_> + 11 3 3 9 -1. + <_> + 12 4 1 9 3. + 1 + <_> + + <_> + 0 8 22 4 -1. + <_> + 11 8 11 4 2. + <_> + + <_> + 3 10 16 3 -1. + <_> + 3 10 8 3 2. + <_> + + <_> + 11 3 9 3 -1. + <_> + 10 4 9 1 3. + 1 + <_> + + <_> + 5 3 12 9 -1. + <_> + 9 6 4 3 9. + <_> + + <_> + 7 12 4 6 -1. + <_> + 9 12 2 6 2. + <_> + + <_> + 9 12 6 6 -1. + <_> + 9 12 3 6 2. + <_> + + <_> + 2 13 16 5 -1. + <_> + 10 13 8 5 2. + <_> + + <_> + 12 12 8 3 -1. + <_> + 12 12 4 3 2. + <_> + + <_> + 10 4 12 2 -1. + <_> + 10 4 6 2 2. + 1 + <_> + + <_> + 11 3 8 4 -1. + <_> + 11 3 4 4 2. + 1 + <_> + + <_> + 4 6 10 3 -1. + <_> + 9 6 5 3 2. + <_> + + <_> + 10 1 6 8 -1. + <_> + 13 1 3 4 2. + <_> + 10 5 3 4 2. + <_> + + <_> + 11 1 6 6 -1. + <_> + 11 1 6 3 2. + 1 + <_> + + <_> + 11 6 6 4 -1. + <_> + 11 8 6 2 2. + <_> + + <_> + 2 2 12 3 -1. + <_> + 2 3 12 1 3. + <_> + + <_> + 11 3 8 4 -1. + <_> + 11 3 4 4 2. + 1 + <_> + + <_> + 1 0 8 6 -1. + <_> + 1 0 4 3 2. + <_> + 5 3 4 3 2. + <_> + + <_> + 8 3 14 3 -1. + <_> + 8 4 14 1 3. + <_> + + <_> + 11 3 4 8 -1. + <_> + 11 3 4 4 2. + 1 + <_> + + <_> + 6 0 12 10 -1. + <_> + 9 0 6 10 2. + <_> + + <_> + 4 16 14 2 -1. + <_> + 4 17 14 1 2. + <_> + + <_> + 10 11 12 3 -1. + <_> + 10 12 12 1 3. + <_> + + <_> + 3 0 4 6 -1. + <_> + 5 0 2 6 2. + <_> + + <_> + 16 12 6 4 -1. + <_> + 16 12 3 4 2. + <_> + + <_> + 0 13 10 4 -1. + <_> + 5 13 5 4 2. + <_> + + <_> + 3 1 16 4 -1. + <_> + 11 1 8 2 2. + <_> + 3 3 8 2 2. + <_> + + <_> + 0 1 11 4 -1. + <_> + 0 3 11 2 2. + <_> + + <_> + 6 8 11 6 -1. + <_> + 6 11 11 3 2. + <_> + + <_> + 8 5 5 10 -1. + <_> + 8 10 5 5 2. + <_> + + <_> + 9 2 4 6 -1. + <_> + 9 5 4 3 2. + <_> + + <_> + 2 3 12 6 -1. + <_> + 2 3 6 3 2. + <_> + 8 6 6 3 2. + <_> + + <_> + 13 3 7 9 -1. + <_> + 13 6 7 3 3. + <_> + + <_> + 2 3 7 9 -1. + <_> + 2 6 7 3 3. + <_> + + <_> + 11 0 3 6 -1. + <_> + 12 1 1 6 3. + 1 + <_> + + <_> + 3 3 13 3 -1. + <_> + 3 4 13 1 3. + <_> + + <_> + 8 3 14 3 -1. + <_> + 8 4 14 1 3. + <_> + + <_> + 3 6 7 12 -1. + <_> + 3 9 7 6 2. + <_> + + <_> + 12 13 6 4 -1. + <_> + 12 15 6 2 2. + <_> + + <_> + 4 13 6 4 -1. + <_> + 4 15 6 2 2. + <_> + + <_> + 6 1 15 2 -1. + <_> + 6 2 15 1 2. + <_> + + <_> + 4 3 3 12 -1. + <_> + 5 3 1 12 3. + <_> + + <_> + 14 4 2 12 -1. + <_> + 14 4 2 6 2. + 1 + <_> + + <_> + 11 0 6 3 -1. + <_> + 10 1 6 1 3. + 1 + <_> + + <_> + 4 9 14 5 -1. + <_> + 4 9 7 5 2. + <_> + + <_> + 11 2 10 3 -1. + <_> + 10 3 10 1 3. + 1 + <_> + + <_> + 9 12 7 6 -1. + <_> + 9 14 7 2 3. + <_> + + <_> + 1 8 8 10 -1. + <_> + 1 8 4 5 2. + <_> + 5 13 4 5 2. + <_> + + <_> + 5 5 12 5 -1. + <_> + 9 5 4 5 3. + <_> + + <_> + 8 8 4 6 -1. + <_> + 8 8 2 6 2. + 1 + <_> + + <_> + 7 6 8 10 -1. + <_> + 7 11 8 5 2. + <_> + + <_> + 6 14 6 4 -1. + <_> + 9 14 3 4 2. + <_> + + <_> + 5 15 12 2 -1. + <_> + 5 16 12 1 2. + <_> + + <_> + 6 4 10 6 -1. + <_> + 6 6 10 2 3. + <_> + + <_> + 9 12 8 6 -1. + <_> + 9 14 8 2 3. + <_> + + <_> + 1 11 20 5 -1. + <_> + 6 11 10 5 2. + <_> + + <_> + 10 8 8 4 -1. + <_> + 10 8 4 4 2. + <_> + + <_> + 2 4 18 6 -1. + <_> + 2 6 18 2 3. + <_> + + <_> + 8 4 12 11 -1. + <_> + 8 4 6 11 2. + <_> + + <_> + 11 5 11 2 -1. + <_> + 11 5 11 1 2. + 1 + <_> + + <_> + 3 6 18 9 -1. + <_> + 9 9 6 3 9. + <_> + + <_> + 3 2 10 9 -1. + <_> + 8 2 5 9 2. + <_> + + <_> + 14 5 6 6 -1. + <_> + 16 5 2 6 3. + <_> + + <_> + 5 5 12 6 -1. + <_> + 8 5 6 6 2. + <_> + + <_> + 11 3 10 4 -1. + <_> + 11 3 5 4 2. + 1 + <_> + + <_> + 6 3 8 6 -1. + <_> + 6 3 4 3 2. + <_> + 10 6 4 3 2. + <_> + + <_> + 16 0 3 15 -1. + <_> + 16 5 3 5 3. + <_> + + <_> + 3 0 3 15 -1. + <_> + 3 5 3 5 3. + <_> + + <_> + 5 2 12 16 -1. + <_> + 8 2 6 16 2. + <_> + + <_> + 6 8 4 6 -1. + <_> + 8 8 2 6 2. + <_> + + <_> + 5 9 13 9 -1. + <_> + 5 12 13 3 3. + <_> + + <_> + 11 7 8 3 -1. + <_> + 11 7 4 3 2. + 1 + <_> + + <_> + 7 0 9 4 -1. + <_> + 10 0 3 4 3. + <_> + + <_> + 7 6 6 5 -1. + <_> + 10 6 3 5 2. + <_> + + <_> + 2 7 18 6 -1. + <_> + 8 9 6 2 9. + <_> + + <_> + 11 4 10 3 -1. + <_> + 10 5 10 1 3. + 1 + <_> + + <_> + 13 14 8 4 -1. + <_> + 13 16 8 2 2. + <_> + + <_> + 1 14 8 4 -1. + <_> + 1 16 8 2 2. + <_> + + <_> + 11 4 3 10 -1. + <_> + 12 5 1 10 3. + 1 + <_> + + <_> + 11 4 10 3 -1. + <_> + 10 5 10 1 3. + 1 + <_> + + <_> + 2 12 18 6 -1. + <_> + 11 12 9 3 2. + <_> + 2 15 9 3 2. + <_> + + <_> + 5 2 8 6 -1. + <_> + 5 2 4 3 2. + <_> + 9 5 4 3 2. + <_> + + <_> + 8 14 6 4 -1. + <_> + 8 16 6 2 2. + <_> + + <_> + 1 10 6 8 -1. + <_> + 1 10 3 4 2. + <_> + 4 14 3 4 2. + <_> + + <_> + 7 2 15 9 -1. + <_> + 12 5 5 3 9. + <_> + + <_> + 0 2 15 9 -1. + <_> + 5 5 5 3 9. + <_> + + <_> + 10 5 6 7 -1. + <_> + 12 5 2 7 3. + <_> + + <_> + 5 14 12 4 -1. + <_> + 5 14 6 2 2. + <_> + 11 16 6 2 2. + <_> + + <_> + 10 1 12 3 -1. + <_> + 10 2 12 1 3. + <_> + + <_> + 8 1 3 12 -1. + <_> + 9 1 1 12 3. + <_> + + <_> + 14 2 6 7 -1. + <_> + 14 2 3 7 2. + <_> + + <_> + 1 0 12 9 -1. + <_> + 5 3 4 3 9. + <_> + + <_> + 8 3 7 6 -1. + <_> + 8 6 7 3 2. + <_> + + <_> + 1 12 20 3 -1. + <_> + 6 12 10 3 2. + <_> + + <_> + 5 2 12 16 -1. + <_> + 5 6 12 8 2. + <_> + + <_> + 4 3 7 6 -1. + <_> + 4 6 7 3 2. + <_> + + <_> + 9 5 6 6 -1. + <_> + 11 5 2 6 3. + <_> + + <_> + 7 0 8 2 -1. + <_> + 7 0 8 1 2. + 1 + <_> + + <_> + 5 14 12 2 -1. + <_> + 5 15 12 1 2. + <_> + + <_> + 3 11 16 6 -1. + <_> + 3 13 16 2 3. + <_> + + <_> + 11 5 3 8 -1. + <_> + 11 5 3 4 2. + 1 + <_> + + <_> + 2 15 12 3 -1. + <_> + 8 15 6 3 2. + <_> + + <_> + 4 13 15 3 -1. + <_> + 9 13 5 3 3. + <_> + + <_> + 2 3 12 4 -1. + <_> + 2 3 6 2 2. + <_> + 8 5 6 2 2. + <_> + + <_> + 17 5 4 7 -1. + <_> + 17 5 2 7 2. + 1 + <_> + + <_> + 5 4 7 4 -1. + <_> + 5 4 7 2 2. + 1 + <_> + + <_> + 2 2 18 3 -1. + <_> + 8 2 6 3 3. + <_> + + <_> + 2 2 18 9 -1. + <_> + 8 5 6 3 9. + <_> + + <_> + 15 6 6 4 -1. + <_> + 15 6 3 4 2. + <_> + + <_> + 0 1 12 3 -1. + <_> + 0 2 12 1 3. + <_> + + <_> + 16 2 6 4 -1. + <_> + 16 2 6 2 2. + 1 + <_> + + <_> + 0 9 14 6 -1. + <_> + 7 9 7 6 2. + <_> + + <_> + 13 5 8 4 -1. + <_> + 13 5 4 4 2. + 1 + <_> + + <_> + 9 5 4 8 -1. + <_> + 9 5 4 4 2. + 1 + <_> + + <_> + 12 4 3 14 -1. + <_> + 12 11 3 7 2. + <_> + + <_> + 1 13 20 5 -1. + <_> + 6 13 10 5 2. + <_> + + <_> + 12 4 3 14 -1. + <_> + 12 11 3 7 2. + <_> + + <_> + 7 4 3 14 -1. + <_> + 7 11 3 7 2. + <_> + + <_> + 16 2 6 4 -1. + <_> + 16 2 6 2 2. + 1 + <_> + + <_> + 6 2 4 6 -1. + <_> + 6 2 2 6 2. + 1 + <_> + + <_> + 7 4 15 14 -1. + <_> + 7 11 15 7 2. + <_> + + <_> + 1 16 16 2 -1. + <_> + 1 17 16 1 2. + <_> + + <_> + 0 6 12 4 -1. + <_> + 3 6 6 4 2. + <_> + + <_> + 6 9 10 9 -1. + <_> + 6 12 10 3 3. + <_> + + <_> + 0 6 6 5 -1. + <_> + 3 6 3 5 2. + <_> + + <_> + 11 14 7 4 -1. + <_> + 11 16 7 2 2. + <_> + + <_> + 7 8 8 2 -1. + <_> + 7 8 8 1 2. + 1 + <_> + + <_> + 10 13 7 4 -1. + <_> + 10 15 7 2 2. + <_> + + <_> + 1 16 20 2 -1. + <_> + 11 16 10 2 2. + <_> + + <_> + 5 12 14 4 -1. + <_> + 5 12 7 4 2. + <_> + + <_> + 8 8 4 6 -1. + <_> + 8 8 2 6 2. + 1 + <_> + + <_> + 17 2 2 14 -1. + <_> + 17 2 2 7 2. + 1 + <_> + + <_> + 7 1 8 4 -1. + <_> + 11 1 4 4 2. + <_> + + <_> + 5 7 12 3 -1. + <_> + 9 7 4 3 3. + <_> + + <_> + 2 14 6 4 -1. + <_> + 5 14 3 4 2. + <_> + + <_> + 10 9 12 4 -1. + <_> + 16 9 6 2 2. + <_> + 10 11 6 2 2. + <_> + + <_> + 6 14 9 4 -1. + <_> + 9 14 3 4 3. + <_> + + <_> + 11 9 2 6 -1. + <_> + 11 9 1 6 2. + 1 + <_> + + <_> + 3 9 14 9 -1. + <_> + 3 12 14 3 3. + <_> + + <_> + 5 10 16 6 -1. + <_> + 5 12 16 2 3. + <_> + + <_> + 5 12 10 6 -1. + <_> + 5 12 5 3 2. + <_> + 10 15 5 3 2. + <_> + + <_> + 4 13 18 5 -1. + <_> + 4 13 9 5 2. + <_> + + <_> + 0 13 18 5 -1. + <_> + 9 13 9 5 2. + <_> + + <_> + 4 9 16 3 -1. + <_> + 4 10 16 1 3. + <_> + + <_> + 5 1 15 2 -1. + <_> + 5 1 15 1 2. + 1 + <_> + + <_> + 13 5 2 9 -1. + <_> + 13 5 1 9 2. + 1 + <_> + + <_> + 9 5 9 2 -1. + <_> + 9 5 9 1 2. + 1 + <_> + + <_> + 1 11 20 5 -1. + <_> + 6 11 10 5 2. + <_> + + <_> + 3 9 13 3 -1. + <_> + 3 10 13 1 3. + <_> + + <_> + 18 5 4 12 -1. + <_> + 20 5 2 6 2. + <_> + 18 11 2 6 2. + <_> + + <_> + 4 12 5 6 -1. + <_> + 4 15 5 3 2. + <_> + + <_> + 15 1 2 8 -1. + <_> + 15 1 1 8 2. + 1 + <_> + + <_> + 7 1 8 2 -1. + <_> + 7 1 8 1 2. + 1 + <_> + + <_> + 18 5 4 12 -1. + <_> + 20 5 2 6 2. + <_> + 18 11 2 6 2. + <_> + + <_> + 10 4 10 2 -1. + <_> + 10 4 10 1 2. + 1 + <_> + + <_> + 2 4 20 4 -1. + <_> + 7 4 10 4 2. + <_> + + <_> + 1 9 8 3 -1. + <_> + 5 9 4 3 2. + <_> + + <_> + 18 5 4 12 -1. + <_> + 20 5 2 6 2. + <_> + 18 11 2 6 2. + <_> + + <_> + 0 5 4 12 -1. + <_> + 0 5 2 6 2. + <_> + 2 11 2 6 2. + <_> + + <_> + 6 0 14 18 -1. + <_> + 6 9 14 9 2. + <_> + + <_> + 4 4 12 3 -1. + <_> + 4 5 12 1 3. + <_> + + <_> + 8 4 14 3 -1. + <_> + 8 5 14 1 3. + <_> + + <_> + 4 13 14 3 -1. + <_> + 4 14 14 1 3. + <_> + + <_> + 8 2 6 14 -1. + <_> + 11 2 3 7 2. + <_> + 8 9 3 7 2. + <_> + + <_> + 0 13 15 4 -1. + <_> + 0 14 15 2 2. + <_> + + <_> + 11 14 7 4 -1. + <_> + 11 16 7 2 2. + <_> + + <_> + 11 7 7 3 -1. + <_> + 10 8 7 1 3. + 1 + <_> + + <_> + 10 6 6 6 -1. + <_> + 10 9 6 3 2. + <_> + + <_> + 2 0 4 14 -1. + <_> + 2 0 2 7 2. + <_> + 4 7 2 7 2. + <_> + + <_> + 2 6 18 5 -1. + <_> + 8 6 6 5 3. + <_> + + <_> + 2 0 18 18 -1. + <_> + 8 0 6 18 3. + <_> + + <_> + 13 1 4 8 -1. + <_> + 14 2 2 8 2. + 1 + <_> + + <_> + 4 0 12 18 -1. + <_> + 4 0 6 9 2. + <_> + 10 9 6 9 2. + <_> + + <_> + 12 14 6 4 -1. + <_> + 12 16 6 2 2. + <_> + + <_> + 4 14 6 4 -1. + <_> + 4 16 6 2 2. + <_> + + <_> + 11 8 2 6 -1. + <_> + 11 8 1 6 2. + 1 + <_> + + <_> + 1 10 20 6 -1. + <_> + 1 10 10 3 2. + <_> + 11 13 10 3 2. + <_> + + <_> + 13 1 7 9 -1. + <_> + 10 4 7 3 3. + 1 + <_> + + <_> + 5 3 4 6 -1. + <_> + 5 6 4 3 2. + <_> + + <_> + 13 0 2 12 -1. + <_> + 13 6 2 6 2. + <_> + + <_> + 7 11 8 3 -1. + <_> + 11 11 4 3 2. + <_> + + <_> + 9 6 12 11 -1. + <_> + 12 6 6 11 2. + <_> + + <_> + 6 8 10 9 -1. + <_> + 11 8 5 9 2. + <_> + + <_> + 11 14 6 4 -1. + <_> + 11 14 3 4 2. + <_> + + <_> + 3 6 12 4 -1. + <_> + 7 6 4 4 3. + <_> + + <_> + 10 5 6 7 -1. + <_> + 12 5 2 7 3. + <_> + + <_> + 8 0 6 4 -1. + <_> + 11 0 3 4 2. + <_> + + <_> + 10 6 6 12 -1. + <_> + 12 6 2 12 3. + <_> + + <_> + 6 6 6 12 -1. + <_> + 8 6 2 12 3. + <_> + + <_> + 6 9 9 6 -1. + <_> + 6 12 9 3 2. + <_> + + <_> + 14 6 6 6 -1. + <_> + 14 6 6 3 2. + 1 + <_> + + <_> + 1 13 20 5 -1. + <_> + 6 13 10 5 2. + <_> + + <_> + 8 14 6 4 -1. + <_> + 8 16 6 2 2. + <_> + + <_> + 4 7 8 3 -1. + <_> + 4 7 4 3 2. + 1 + <_> + + <_> + 16 0 2 15 -1. + <_> + 16 0 1 15 2. + 1 + <_> + + <_> + 9 3 12 2 -1. + <_> + 9 3 12 1 2. + 1 + <_> + + <_> + 7 1 8 6 -1. + <_> + 9 1 4 6 2. + <_> + + <_> + 6 15 8 3 -1. + <_> + 10 15 4 3 2. + <_> + + <_> + 8 3 6 6 -1. + <_> + 10 3 2 6 3. + <_> + + <_> + 1 1 16 3 -1. + <_> + 1 2 16 1 3. + <_> + + <_> + 9 1 12 3 -1. + <_> + 9 2 12 1 3. + <_> + + <_> + 0 0 22 6 -1. + <_> + 0 0 11 3 2. + <_> + 11 3 11 3 2. + <_> + + <_> + 10 5 4 6 -1. + <_> + 10 5 2 6 2. + <_> + + <_> + 10 0 8 5 -1. + <_> + 10 0 4 5 2. + 1 + <_> + + <_> + 12 4 4 10 -1. + <_> + 13 5 2 10 2. + 1 + <_> + + <_> + 10 4 10 4 -1. + <_> + 9 5 10 2 2. + 1 + <_> + + <_> + 15 1 2 8 -1. + <_> + 15 1 1 8 2. + 1 + <_> + + <_> + 7 1 8 2 -1. + <_> + 7 1 8 1 2. + 1 + <_> + + <_> + 17 0 3 11 -1. + <_> + 18 1 1 11 3. + 1 + <_> + + <_> + 9 8 4 6 -1. + <_> + 9 8 4 3 2. + 1 + <_> + + <_> + 14 6 6 12 -1. + <_> + 17 6 3 6 2. + <_> + 14 12 3 6 2. + <_> + + <_> + 2 12 18 6 -1. + <_> + 8 14 6 2 9. + <_> + + <_> + 14 7 3 10 -1. + <_> + 14 12 3 5 2. + <_> + + <_> + 3 8 16 10 -1. + <_> + 3 8 8 5 2. + <_> + 11 13 8 5 2. + <_> + + <_> + 15 12 4 6 -1. + <_> + 15 15 4 3 2. + <_> + + <_> + 2 8 18 10 -1. + <_> + 2 8 9 5 2. + <_> + 11 13 9 5 2. + <_> + + <_> + 10 1 12 3 -1. + <_> + 10 2 12 1 3. + <_> + + <_> + 1 1 12 3 -1. + <_> + 1 2 12 1 3. + <_> + + <_> + 8 0 14 4 -1. + <_> + 15 0 7 2 2. + <_> + 8 2 7 2 2. + <_> + + <_> + 2 4 14 4 -1. + <_> + 2 5 14 2 2. + <_> + + <_> + 8 4 12 3 -1. + <_> + 8 5 12 1 3. + <_> + + <_> + 1 0 8 8 -1. + <_> + 1 0 4 4 2. + <_> + 5 4 4 4 2. + <_> + + <_> + 13 0 8 6 -1. + <_> + 17 0 4 3 2. + <_> + 13 3 4 3 2. + <_> + + <_> + 1 0 8 6 -1. + <_> + 1 0 4 3 2. + <_> + 5 3 4 3 2. + <_> + + <_> + 9 6 6 5 -1. + <_> + 9 6 3 5 2. + <_> + + <_> + 5 6 8 3 -1. + <_> + 9 6 4 3 2. + <_> + + <_> + 13 3 6 9 -1. + <_> + 10 6 6 3 3. + 1 + <_> + + <_> + 9 3 9 6 -1. + <_> + 12 6 3 6 3. + 1 + <_> + + <_> + 4 11 18 3 -1. + <_> + 4 12 18 1 3. + <_> + + <_> + 0 13 15 4 -1. + <_> + 5 13 5 4 3. + <_> + + <_> + 15 12 4 6 -1. + <_> + 15 15 4 3 2. + <_> + + <_> + 3 12 4 6 -1. + <_> + 3 15 4 3 2. + <_> + + <_> + 9 12 6 6 -1. + <_> + 11 12 2 6 3. + <_> + + <_> + 6 9 9 7 -1. + <_> + 9 9 3 7 3. + <_> + + <_> + 13 10 6 8 -1. + <_> + 16 10 3 4 2. + <_> + 13 14 3 4 2. + <_> + + <_> + 3 10 6 8 -1. + <_> + 3 10 3 4 2. + <_> + 6 14 3 4 2. + <_> + + <_> + 7 10 8 4 -1. + <_> + 7 10 4 4 2. + <_> + + <_> + 7 5 6 11 -1. + <_> + 10 5 3 11 2. + <_> + + <_> + 10 6 6 6 -1. + <_> + 10 9 6 3 2. + <_> + + <_> + 6 6 6 6 -1. + <_> + 6 9 6 3 2. + <_> + + <_> + 8 6 12 8 -1. + <_> + 12 6 4 8 3. + <_> + + <_> + 2 11 12 3 -1. + <_> + 6 11 4 3 3. + <_> + + <_> + 14 3 6 8 -1. + <_> + 17 3 3 4 2. + <_> + 14 7 3 4 2. + <_> + + <_> + 0 5 13 3 -1. + <_> + 0 6 13 1 3. + <_> + + <_> + 14 0 6 6 -1. + <_> + 14 2 6 2 3. + <_> + + <_> + 3 0 6 6 -1. + <_> + 3 2 6 2 3. + <_> + + <_> + 8 8 14 3 -1. + <_> + 8 9 14 1 3. + <_> + + <_> + 7 2 2 15 -1. + <_> + 8 2 1 15 2. + <_> + + <_> + 4 14 16 4 -1. + <_> + 4 14 8 4 2. + <_> + + <_> + 1 6 20 12 -1. + <_> + 6 6 10 12 2. + <_> + + <_> + 5 10 16 6 -1. + <_> + 13 10 8 3 2. + <_> + 5 13 8 3 2. + <_> + + <_> + 1 10 16 6 -1. + <_> + 1 10 8 3 2. + <_> + 9 13 8 3 2. + <_> + + <_> + 8 8 14 6 -1. + <_> + 8 8 7 6 2. + <_> + + <_> + 0 8 14 6 -1. + <_> + 7 8 7 6 2. + <_> + + <_> + 5 6 12 11 -1. + <_> + 8 6 6 11 2. + <_> + + <_> + 1 3 8 6 -1. + <_> + 1 3 4 3 2. + <_> + 5 6 4 3 2. + <_> + + <_> + 13 1 7 6 -1. + <_> + 13 1 7 3 2. + 1 + <_> + + <_> + 1 4 5 10 -1. + <_> + 1 9 5 5 2. + <_> + + <_> + 18 6 3 8 -1. + <_> + 18 10 3 4 2. + <_> + + <_> + 1 6 3 8 -1. + <_> + 1 10 3 4 2. + <_> + + <_> + 8 5 13 3 -1. + <_> + 8 6 13 1 3. + <_> + + <_> + 1 5 13 3 -1. + <_> + 1 6 13 1 3. + <_> + + <_> + 18 0 3 12 -1. + <_> + 19 0 1 12 3. + <_> + + <_> + 1 0 3 12 -1. + <_> + 2 0 1 12 3. + <_> + + <_> + 4 2 18 2 -1. + <_> + 4 2 9 2 2. + <_> + + <_> + 6 3 6 6 -1. + <_> + 9 3 3 6 2. + <_> + + <_> + 9 5 12 11 -1. + <_> + 12 5 6 11 2. + <_> + + <_> + 1 5 12 11 -1. + <_> + 4 5 6 11 2. + <_> + + <_> + 8 4 8 8 -1. + <_> + 8 4 4 8 2. + <_> + + <_> + 0 8 22 4 -1. + <_> + 0 8 11 2 2. + <_> + 11 10 11 2 2. + <_> + + <_> + 8 6 8 4 -1. + <_> + 8 6 4 4 2. + <_> + + <_> + 6 3 8 8 -1. + <_> + 10 3 4 8 2. + <_> + + <_> + 3 6 16 4 -1. + <_> + 11 6 8 2 2. + <_> + 3 8 8 2 2. + <_> + + <_> + 2 14 16 4 -1. + <_> + 10 14 8 4 2. + <_> + + <_> + 11 13 6 5 -1. + <_> + 11 13 3 5 2. + <_> + + <_> + 5 13 6 5 -1. + <_> + 8 13 3 5 2. + <_> + + <_> + 12 2 2 7 -1. + <_> + 12 2 1 7 2. + 1 + <_> + + <_> + 0 9 21 9 -1. + <_> + 7 12 7 3 9. + <_> + + <_> + 5 3 12 9 -1. + <_> + 9 6 4 3 9. + <_> + + <_> + 3 9 16 8 -1. + <_> + 3 9 8 4 2. + <_> + 11 13 8 4 2. + <_> + + <_> + 7 0 14 18 -1. + <_> + 7 0 7 18 2. + <_> + + <_> + 5 8 6 4 -1. + <_> + 5 8 3 4 2. + 1 + <_> + + <_> + 3 11 16 4 -1. + <_> + 11 11 8 2 2. + <_> + 3 13 8 2 2. + <_> + + <_> + 6 9 6 8 -1. + <_> + 6 9 3 4 2. + <_> + 9 13 3 4 2. + <_> + + <_> + 7 0 14 18 -1. + <_> + 7 0 7 18 2. + <_> + + <_> + 1 0 14 18 -1. + <_> + 8 0 7 18 2. + <_> + + <_> + 13 14 8 3 -1. + <_> + 13 14 4 3 2. + <_> + + <_> + 8 4 6 4 -1. + <_> + 8 6 6 2 2. + <_> + + <_> + 6 6 14 4 -1. + <_> + 13 6 7 2 2. + <_> + 6 8 7 2 2. + <_> + + <_> + 7 3 11 4 -1. + <_> + 6 4 11 2 2. + 1 + <_> + + <_> + 7 0 12 4 -1. + <_> + 13 0 6 2 2. + <_> + 7 2 6 2 2. + <_> + + <_> + 4 0 14 4 -1. + <_> + 4 0 7 2 2. + <_> + 11 2 7 2 2. + <_> + + <_> + 15 8 6 9 -1. + <_> + 17 8 2 9 3. + <_> + + <_> + 1 8 6 9 -1. + <_> + 3 8 2 9 3. + <_> + + <_> + 12 5 5 9 -1. + <_> + 12 8 5 3 3. + <_> + + <_> + 5 5 5 9 -1. + <_> + 5 8 5 3 3. + <_> + + <_> + 17 9 4 6 -1. + <_> + 17 9 2 6 2. + <_> + + <_> + 1 9 4 6 -1. + <_> + 3 9 2 6 2. + <_> + + <_> + 4 3 14 3 -1. + <_> + 4 4 14 1 3. + <_> + + <_> + 6 0 10 3 -1. + <_> + 5 1 10 1 3. + 1 + <_> + + <_> + 10 4 11 14 -1. + <_> + 10 11 11 7 2. + <_> + + <_> + 2 5 6 6 -1. + <_> + 2 7 6 2 3. + <_> + + <_> + 12 2 5 12 -1. + <_> + 12 6 5 4 3. + <_> + + <_> + 5 16 12 2 -1. + <_> + 5 17 12 1 2. + <_> + + <_> + 3 4 18 3 -1. + <_> + 3 5 18 1 3. + <_> + + <_> + 1 4 11 14 -1. + <_> + 1 11 11 7 2. + <_> + + <_> + 8 12 11 4 -1. + <_> + 8 14 11 2 2. + <_> + + <_> + 7 11 8 7 -1. + <_> + 11 11 4 7 2. + <_> + + <_> + 12 2 4 11 -1. + <_> + 12 2 2 11 2. + 1 + <_> + + <_> + 10 4 11 2 -1. + <_> + 10 4 11 1 2. + 1 + <_> + + <_> + 16 0 2 14 -1. + <_> + 16 0 1 14 2. + 1 + <_> + + <_> + 6 0 14 2 -1. + <_> + 6 0 14 1 2. + 1 + <_> + + <_> + 19 4 2 12 -1. + <_> + 19 4 1 12 2. + 1 + <_> + + <_> + 8 2 6 10 -1. + <_> + 8 7 6 5 2. + <_> + + <_> + 19 4 2 12 -1. + <_> + 19 4 1 12 2. + 1 + <_> + + <_> + 11 3 6 8 -1. + <_> + 11 3 6 4 2. + 1 + <_> + + <_> + 11 2 10 6 -1. + <_> + 11 2 5 6 2. + 1 + <_> + + <_> + 3 5 13 2 -1. + <_> + 3 6 13 1 2. + <_> + + <_> + 5 4 12 6 -1. + <_> + 5 6 12 2 3. + <_> + + <_> + 6 9 9 9 -1. + <_> + 9 9 3 9 3. + <_> + + <_> + 19 1 3 12 -1. + <_> + 20 2 1 12 3. + 1 + <_> + + <_> + 2 13 9 5 -1. + <_> + 5 13 3 5 3. + <_> + + <_> + 11 2 10 6 -1. + <_> + 11 2 5 6 2. + 1 + <_> + + <_> + 11 2 6 10 -1. + <_> + 11 2 6 5 2. + 1 + <_> + + <_> + 1 6 21 3 -1. + <_> + 8 6 7 3 3. + <_> + + <_> + 5 5 3 8 -1. + <_> + 5 9 3 4 2. + <_> + + <_> + 10 5 7 6 -1. + <_> + 10 7 7 2 3. + <_> + + <_> + 10 0 7 6 -1. + <_> + 8 2 7 2 3. + 1 + <_> + + <_> + 13 5 6 6 -1. + <_> + 13 7 6 2 3. + <_> + + <_> + 5 5 7 6 -1. + <_> + 5 7 7 2 3. + <_> + + <_> + 9 1 6 8 -1. + <_> + 12 1 3 4 2. + <_> + 9 5 3 4 2. + <_> + + <_> + 7 1 6 8 -1. + <_> + 7 1 3 4 2. + <_> + 10 5 3 4 2. + <_> + + <_> + 7 0 9 4 -1. + <_> + 10 0 3 4 3. + <_> + + <_> + 1 9 14 3 -1. + <_> + 1 10 14 1 3. + <_> + + <_> + 5 9 15 3 -1. + <_> + 5 10 15 1 3. + <_> + + <_> + 3 1 12 3 -1. + <_> + 2 2 12 1 3. + 1 + <_> + + <_> + 5 12 12 6 -1. + <_> + 11 12 6 3 2. + <_> + 5 15 6 3 2. + <_> + + <_> + 5 12 12 4 -1. + <_> + 5 12 6 2 2. + <_> + 11 14 6 2 2. + <_> + + <_> + 15 4 3 9 -1. + <_> + 16 5 1 9 3. + 1 + <_> + + <_> + 7 4 9 3 -1. + <_> + 6 5 9 1 3. + 1 + <_> + + <_> + 13 3 7 4 -1. + <_> + 13 5 7 2 2. + <_> + + <_> + 4 0 9 5 -1. + <_> + 7 0 3 5 3. + <_> + + <_> + 10 6 6 6 -1. + <_> + 12 6 2 6 3. + <_> + + <_> + 0 6 12 4 -1. + <_> + 0 6 6 2 2. + <_> + 6 8 6 2 2. + <_> + + <_> + 10 11 9 6 -1. + <_> + 13 11 3 6 3. + <_> + + <_> + 2 6 16 8 -1. + <_> + 2 10 16 4 2. + <_> + + <_> + 17 0 2 10 -1. + <_> + 17 0 1 10 2. + 1 + <_> + + <_> + 5 0 10 2 -1. + <_> + 5 0 10 1 2. + 1 + <_> + + <_> + 9 11 13 3 -1. + <_> + 9 12 13 1 3. + <_> + + <_> + 0 11 13 3 -1. + <_> + 0 12 13 1 3. + <_> + + <_> + 18 6 4 12 -1. + <_> + 18 9 4 6 2. + <_> + + <_> + 6 4 9 7 -1. + <_> + 9 4 3 7 3. + <_> + + <_> + 11 9 6 7 -1. + <_> + 13 9 2 7 3. + <_> + + <_> + 5 9 6 7 -1. + <_> + 7 9 2 7 3. + <_> + + <_> + 1 13 20 5 -1. + <_> + 6 13 10 5 2. + <_> + + <_> + 7 9 8 6 -1. + <_> + 9 9 4 6 2. + <_> + + <_> + 5 5 12 4 -1. + <_> + 8 5 6 4 2. + <_> + + <_> + 1 11 20 6 -1. + <_> + 6 11 10 6 2. + <_> + + <_> + 1 8 20 7 -1. + <_> + 6 8 10 7 2. + <_> + + <_> + 2 9 18 6 -1. + <_> + 8 11 6 2 9. + <_> + + <_> + 8 13 9 4 -1. + <_> + 8 15 9 2 2. + <_> + + <_> + 1 12 9 6 -1. + <_> + 1 15 9 3 2. + <_> + + <_> + 9 2 8 6 -1. + <_> + 13 2 4 3 2. + <_> + 9 5 4 3 2. + <_> + + <_> + 0 5 22 5 -1. + <_> + 11 5 11 5 2. + <_> + + <_> + 2 0 18 18 -1. + <_> + 2 9 18 9 2. + <_> + + <_> + 6 7 3 8 -1. + <_> + 6 11 3 4 2. + <_> + + <_> + 11 12 8 6 -1. + <_> + 13 12 4 6 2. + <_> + + <_> + 3 8 6 8 -1. + <_> + 3 8 3 4 2. + <_> + 6 12 3 4 2. + <_> + + <_> + 11 6 7 4 -1. + <_> + 11 8 7 2 2. + <_> + + <_> + 9 2 4 6 -1. + <_> + 11 2 2 6 2. + <_> + + <_> + 3 14 16 4 -1. + <_> + 11 14 8 2 2. + <_> + 3 16 8 2 2. + <_> + + <_> + 5 14 6 4 -1. + <_> + 5 16 6 2 2. + <_> + + <_> + 9 5 4 6 -1. + <_> + 9 5 2 6 2. + <_> + + <_> + 5 12 12 6 -1. + <_> + 8 12 6 6 2. + <_> + + <_> + 7 14 8 4 -1. + <_> + 7 16 8 2 2. + <_> + + <_> + 1 3 18 3 -1. + <_> + 1 4 18 1 3. + <_> + + <_> + 8 3 14 3 -1. + <_> + 8 4 14 1 3. + <_> + + <_> + 1 0 14 4 -1. + <_> + 1 0 7 2 2. + <_> + 8 2 7 2 2. + <_> + + <_> + 10 10 12 3 -1. + <_> + 10 11 12 1 3. + <_> + + <_> + 1 10 12 3 -1. + <_> + 1 11 12 1 3. + <_> + + <_> + 10 7 8 3 -1. + <_> + 10 7 4 3 2. + <_> + + <_> + 11 0 6 6 -1. + <_> + 9 2 6 2 3. + 1 + <_> + + <_> + 17 0 2 10 -1. + <_> + 17 0 1 10 2. + 1 + <_> + + <_> + 4 7 8 3 -1. + <_> + 8 7 4 3 2. + <_> + + <_> + 13 0 8 6 -1. + <_> + 13 2 8 2 3. + <_> + + <_> + 1 0 8 6 -1. + <_> + 1 2 8 2 3. + <_> + + <_> + 17 0 2 10 -1. + <_> + 17 0 1 10 2. + 1 + <_> + + <_> + 5 0 10 2 -1. + <_> + 5 0 10 1 2. + 1 + <_> + + <_> + 10 6 6 4 -1. + <_> + 10 6 3 4 2. + <_> + + <_> + 0 4 14 3 -1. + <_> + 0 5 14 1 3. + <_> + + <_> + 3 3 16 10 -1. + <_> + 11 3 8 5 2. + <_> + 3 8 8 5 2. + <_> + + <_> + 1 5 12 3 -1. + <_> + 1 6 12 1 3. + <_> + + <_> + 9 6 13 4 -1. + <_> + 9 8 13 2 2. + <_> + + <_> + 7 5 8 6 -1. + <_> + 7 5 4 3 2. + <_> + 11 8 4 3 2. + <_> + + <_> + 13 3 4 11 -1. + <_> + 14 4 2 11 2. + 1 + <_> + + <_> + 9 2 11 2 -1. + <_> + 9 2 11 1 2. + 1 + <_> + + <_> + 5 13 12 4 -1. + <_> + 5 14 12 2 2. + <_> + + <_> + 0 9 16 4 -1. + <_> + 0 9 8 2 2. + <_> + 8 11 8 2 2. + <_> + + <_> + 7 10 9 7 -1. + <_> + 10 10 3 7 3. + <_> + + <_> + 10 7 5 6 -1. + <_> + 10 7 5 3 2. + 1 + <_> + + <_> + 11 5 10 3 -1. + <_> + 11 5 5 3 2. + 1 + <_> + + <_> + 2 13 12 5 -1. + <_> + 5 13 6 5 2. + <_> + + <_> + 17 9 4 7 -1. + <_> + 17 9 2 7 2. + <_> + + <_> + 0 6 12 3 -1. + <_> + 0 7 12 1 3. + <_> + + <_> + 18 6 2 10 -1. + <_> + 18 6 1 10 2. + 1 + <_> + + <_> + 1 14 8 3 -1. + <_> + 5 14 4 3 2. + <_> + + <_> + 6 11 12 3 -1. + <_> + 10 11 4 3 3. + <_> + + <_> + 0 14 8 3 -1. + <_> + 4 14 4 3 2. + <_> + + <_> + 5 11 16 3 -1. + <_> + 9 11 8 3 2. + <_> + + <_> + 1 9 4 7 -1. + <_> + 3 9 2 7 2. + <_> + + <_> + 6 12 10 6 -1. + <_> + 6 14 10 2 3. + <_> + + <_> + 0 16 12 2 -1. + <_> + 0 17 12 1 2. + <_> + + <_> + 12 5 4 12 -1. + <_> + 14 5 2 6 2. + <_> + 12 11 2 6 2. + <_> + + <_> + 6 11 6 6 -1. + <_> + 8 11 2 6 3. + <_> + + <_> + 4 16 15 2 -1. + <_> + 4 17 15 1 2. + <_> + + <_> + 5 0 12 9 -1. + <_> + 9 3 4 3 9. + <_> + + <_> + 8 0 6 9 -1. + <_> + 8 3 6 3 3. + <_> + + <_> + 1 0 3 13 -1. + <_> + 2 0 1 13 3. + <_> + + <_> + 10 1 6 4 -1. + <_> + 10 1 3 4 2. + <_> + + <_> + 8 1 6 9 -1. + <_> + 10 1 2 9 3. + <_> + + <_> + 8 3 6 6 -1. + <_> + 10 3 2 6 3. + <_> + + <_> + 3 5 11 2 -1. + <_> + 3 5 11 1 2. + 1 + <_> + + <_> + 9 5 6 6 -1. + <_> + 11 5 2 6 3. + <_> + + <_> + 6 4 6 10 -1. + <_> + 6 9 6 5 2. + <_> + + <_> + 11 2 3 12 -1. + <_> + 12 2 1 12 3. + <_> + + <_> + 8 2 3 12 -1. + <_> + 9 2 1 12 3. + <_> + + <_> + 18 9 4 9 -1. + <_> + 18 9 2 9 2. + <_> + + <_> + 1 5 6 6 -1. + <_> + 1 8 6 3 2. + <_> + + <_> + 10 6 6 6 -1. + <_> + 12 6 2 6 3. + <_> + + <_> + 10 2 2 12 -1. + <_> + 11 2 1 12 2. + <_> + + <_> + 11 0 5 6 -1. + <_> + 11 3 5 3 2. + <_> + + <_> + 6 0 5 6 -1. + <_> + 6 3 5 3 2. + <_> + + <_> + 13 9 5 8 -1. + <_> + 13 13 5 4 2. + <_> + + <_> + 0 9 20 2 -1. + <_> + 10 9 10 2 2. + <_> + + <_> + 14 7 3 10 -1. + <_> + 14 12 3 5 2. + <_> + + <_> + 11 5 11 2 -1. + <_> + 11 5 11 1 2. + 1 + <_> + + <_> + 14 7 3 10 -1. + <_> + 14 12 3 5 2. + <_> + + <_> + 5 13 12 2 -1. + <_> + 5 14 12 1 2. + <_> + + <_> + 11 8 4 9 -1. + <_> + 11 11 4 3 3. + <_> + + <_> + 1 8 12 6 -1. + <_> + 1 10 12 2 3. + <_> + + <_> + 16 8 3 8 -1. + <_> + 16 12 3 4 2. + <_> + + <_> + 3 8 3 8 -1. + <_> + 3 12 3 4 2. + <_> + + <_> + 11 8 4 9 -1. + <_> + 11 11 4 3 3. + <_> + + <_> + 7 8 4 9 -1. + <_> + 7 11 4 3 3. + <_> + + <_> + 7 3 15 12 -1. + <_> + 12 7 5 4 9. + <_> + + <_> + 4 10 14 4 -1. + <_> + 4 10 7 2 2. + <_> + 11 12 7 2 2. + <_> + + <_> + 9 10 10 6 -1. + <_> + 14 10 5 3 2. + <_> + 9 13 5 3 2. + <_> + + <_> + 3 10 10 6 -1. + <_> + 3 10 5 3 2. + <_> + 8 13 5 3 2. + <_> + + <_> + 16 7 6 6 -1. + <_> + 18 7 2 6 3. + <_> + + <_> + 3 5 14 2 -1. + <_> + 10 5 7 2 2. + <_> + + <_> + 18 2 4 12 -1. + <_> + 20 2 2 6 2. + <_> + 18 8 2 6 2. + <_> + + <_> + 3 14 12 4 -1. + <_> + 3 15 12 2 2. + <_> + + <_> + 7 6 9 6 -1. + <_> + 7 9 9 3 2. + <_> + + <_> + 1 14 6 4 -1. + <_> + 4 14 3 4 2. + <_> + + <_> + 12 5 5 12 -1. + <_> + 12 8 5 6 2. + <_> + + <_> + 5 0 3 17 -1. + <_> + 6 0 1 17 3. + <_> + + <_> + 16 7 6 6 -1. + <_> + 18 7 2 6 3. + <_> + + <_> + 0 7 6 6 -1. + <_> + 2 7 2 6 3. + <_> + + <_> + 14 0 3 18 -1. + <_> + 15 0 1 18 3. + <_> + + <_> + 0 5 5 10 -1. + <_> + 0 10 5 5 2. + <_> + + <_> + 5 12 12 4 -1. + <_> + 5 13 12 2 2. + <_> + + <_> + 7 9 8 6 -1. + <_> + 7 11 8 2 3. + <_> + + <_> + 2 10 15 4 -1. + <_> + 2 12 15 2 2. + <_> + + <_> + 5 15 12 3 -1. + <_> + 5 15 6 3 2. + <_> + + <_> + 7 4 3 14 -1. + <_> + 8 4 1 14 3. + <_> + + <_> + 7 15 8 3 -1. + <_> + 7 15 4 3 2. + <_> + + <_> + 1 2 8 6 -1. + <_> + 1 2 4 3 2. + <_> + 5 5 4 3 2. + <_> + + <_> + 14 9 6 8 -1. + <_> + 17 9 3 4 2. + <_> + 14 13 3 4 2. + <_> + + <_> + 0 0 6 8 -1. + <_> + 0 0 3 4 2. + <_> + 3 4 3 4 2. + <_> + + <_> + 14 9 6 8 -1. + <_> + 17 9 3 4 2. + <_> + 14 13 3 4 2. + <_> + + <_> + 2 9 6 8 -1. + <_> + 2 9 3 4 2. + <_> + 5 13 3 4 2. + <_> + + <_> + 14 10 6 8 -1. + <_> + 17 10 3 4 2. + <_> + 14 14 3 4 2. + <_> + + <_> + 2 10 6 8 -1. + <_> + 2 10 3 4 2. + <_> + 5 14 3 4 2. + <_> + + <_> + 13 1 6 8 -1. + <_> + 16 1 3 4 2. + <_> + 13 5 3 4 2. + <_> + + <_> + 3 3 12 3 -1. + <_> + 3 4 12 1 3. + <_> + + <_> + 13 1 6 8 -1. + <_> + 16 1 3 4 2. + <_> + 13 5 3 4 2. + <_> + + <_> + 3 1 6 8 -1. + <_> + 3 1 3 4 2. + <_> + 6 5 3 4 2. + <_> + + <_> + 3 3 16 3 -1. + <_> + 3 4 16 1 3. + <_> + + <_> + 7 13 6 4 -1. + <_> + 7 15 6 2 2. + <_> + + <_> + 10 14 6 4 -1. + <_> + 10 16 6 2 2. + <_> + + <_> + 2 10 15 3 -1. + <_> + 2 11 15 1 3. + <_> + + <_> + 8 12 8 6 -1. + <_> + 10 12 4 6 2. + <_> + + <_> + 2 4 13 4 -1. + <_> + 2 5 13 2 2. + <_> + + <_> + 9 9 12 3 -1. + <_> + 9 10 12 1 3. + <_> + + <_> + 3 13 16 4 -1. + <_> + 3 13 8 2 2. + <_> + 11 15 8 2 2. + <_> + + <_> + 8 12 8 6 -1. + <_> + 10 12 4 6 2. + <_> + + <_> + 6 12 8 6 -1. + <_> + 8 12 4 6 2. + <_> + + <_> + 9 4 13 2 -1. + <_> + 9 5 13 1 2. + <_> + + <_> + 7 3 8 12 -1. + <_> + 7 9 8 6 2. + <_> + + <_> + 3 6 17 3 -1. + <_> + 3 7 17 1 3. + <_> + + <_> + 3 0 14 4 -1. + <_> + 3 0 7 2 2. + <_> + 10 2 7 2 2. + <_> + + <_> + 11 4 6 5 -1. + <_> + 11 4 3 5 2. + 1 + <_> + + <_> + 11 4 5 6 -1. + <_> + 11 4 5 3 2. + 1 + <_> + + <_> + 10 5 4 6 -1. + <_> + 10 5 2 6 2. + <_> + + <_> + 4 12 12 3 -1. + <_> + 8 12 4 3 3. + <_> + + <_> + 8 6 8 7 -1. + <_> + 8 6 4 7 2. + <_> + + <_> + 5 0 8 12 -1. + <_> + 5 0 4 6 2. + <_> + 9 6 4 6 2. + <_> + + <_> + 7 0 12 4 -1. + <_> + 13 0 6 2 2. + <_> + 7 2 6 2 2. + <_> + + <_> + 1 4 6 5 -1. + <_> + 4 4 3 5 2. + <_> + + <_> + 15 0 7 4 -1. + <_> + 15 0 7 2 2. + 1 + <_> + + <_> + 5 2 8 6 -1. + <_> + 5 2 4 3 2. + <_> + 9 5 4 3 2. + <_> + + <_> + 4 2 15 3 -1. + <_> + 4 3 15 1 3. + <_> + + <_> + 4 1 14 3 -1. + <_> + 4 2 14 1 3. + <_> + + <_> + 15 5 4 6 -1. + <_> + 15 8 4 3 2. + <_> + + <_> + 0 1 17 2 -1. + <_> + 0 2 17 1 2. + <_> + + <_> + 15 5 4 6 -1. + <_> + 15 8 4 3 2. + <_> + + <_> + 3 5 4 6 -1. + <_> + 3 8 4 3 2. + <_> + + <_> + 3 0 18 3 -1. + <_> + 3 1 18 1 3. + <_> + + <_> + 7 1 6 4 -1. + <_> + 10 1 3 4 2. + <_> + + <_> + 0 11 22 7 -1. + <_> + 0 11 11 7 2. + <_> + + <_> + 3 5 4 12 -1. + <_> + 3 5 2 6 2. + <_> + 5 11 2 6 2. + <_> + + <_> + 14 7 3 10 -1. + <_> + 14 12 3 5 2. + <_> + + <_> + 4 11 14 4 -1. + <_> + 4 11 7 2 2. + <_> + 11 13 7 2 2. + <_> + + <_> + 7 11 8 6 -1. + <_> + 11 11 4 3 2. + <_> + 7 14 4 3 2. + <_> + + <_> + 3 5 3 13 -1. + <_> + 4 5 1 13 3. + <_> + + <_> + 17 1 4 12 -1. + <_> + 19 1 2 6 2. + <_> + 17 7 2 6 2. + <_> + + <_> + 1 1 4 12 -1. + <_> + 1 1 2 6 2. + <_> + 3 7 2 6 2. + <_> + + <_> + 7 0 13 16 -1. + <_> + 7 4 13 8 2. + <_> + + <_> + 1 4 13 2 -1. + <_> + 1 5 13 1 2. + <_> + + <_> + 9 14 6 4 -1. + <_> + 9 16 6 2 2. + <_> + + <_> + 2 4 17 3 -1. + <_> + 2 5 17 1 3. + <_> + + <_> + 14 0 3 10 -1. + <_> + 15 1 1 10 3. + 1 + <_> + + <_> + 7 0 8 3 -1. + <_> + 6 1 8 1 3. + 1 + <_> + + <_> + 14 0 3 10 -1. + <_> + 15 1 1 10 3. + 1 + <_> + + <_> + 8 0 10 3 -1. + <_> + 7 1 10 1 3. + 1 + <_> + + <_> + 11 1 2 7 -1. + <_> + 11 1 1 7 2. + 1 + <_> + + <_> + 8 0 3 14 -1. + <_> + 9 0 1 14 3. + <_> + + <_> + 11 1 2 7 -1. + <_> + 11 1 1 7 2. + 1 + <_> + + <_> + 11 1 7 2 -1. + <_> + 11 1 7 1 2. + 1 + <_> + + <_> + 7 9 9 8 -1. + <_> + 10 9 3 8 3. + <_> + + <_> + 1 7 4 8 -1. + <_> + 3 7 2 8 2. + <_> + + <_> + 17 11 4 6 -1. + <_> + 17 11 2 6 2. + <_> + + <_> + 8 12 6 6 -1. + <_> + 10 12 2 6 3. + <_> + + <_> + 11 0 3 6 -1. + <_> + 12 1 1 6 3. + 1 + <_> + + <_> + 11 0 6 3 -1. + <_> + 10 1 6 1 3. + 1 + <_> + + <_> + 9 14 9 4 -1. + <_> + 12 14 3 4 3. + <_> + + <_> + 8 2 6 4 -1. + <_> + 8 2 6 2 2. + 1 + <_> + + <_> + 10 10 4 6 -1. + <_> + 10 10 2 6 2. + <_> + + <_> + 1 8 18 2 -1. + <_> + 1 9 18 1 2. + <_> + + <_> + 8 8 14 3 -1. + <_> + 8 9 14 1 3. + <_> + + <_> + 3 15 14 3 -1. + <_> + 10 15 7 3 2. + <_> + + <_> + 8 8 14 3 -1. + <_> + 8 9 14 1 3. + <_> + + <_> + 4 14 9 4 -1. + <_> + 7 14 3 4 3. + <_> + + <_> + 10 6 4 8 -1. + <_> + 10 6 2 8 2. + 1 + <_> + + <_> + 2 11 18 3 -1. + <_> + 8 11 6 3 3. + <_> + + <_> + 10 0 12 4 -1. + <_> + 10 0 12 2 2. + 1 + <_> + + <_> + 6 6 16 4 -1. + <_> + 14 6 8 2 2. + <_> + 6 8 8 2 2. + <_> + + <_> + 6 3 4 14 -1. + <_> + 7 3 2 14 2. + <_> + + <_> + 12 12 6 6 -1. + <_> + 14 12 2 6 3. + <_> + + <_> + 4 12 6 6 -1. + <_> + 6 12 2 6 3. + <_> + + <_> + 14 8 3 8 -1. + <_> + 14 12 3 4 2. + <_> + + <_> + 0 6 16 4 -1. + <_> + 0 6 8 2 2. + <_> + 8 8 8 2 2. + <_> + + <_> + 9 10 5 6 -1. + <_> + 9 13 5 3 2. + <_> + + <_> + 7 5 6 12 -1. + <_> + 7 5 3 6 2. + <_> + 10 11 3 6 2. + <_> + + <_> + 1 5 21 9 -1. + <_> + 8 8 7 3 9. + <_> + + <_> + 8 6 3 12 -1. + <_> + 9 6 1 12 3. + <_> + + <_> + 11 3 3 11 -1. + <_> + 12 4 1 11 3. + 1 + <_> + + <_> + 11 5 9 3 -1. + <_> + 10 6 9 1 3. + 1 + <_> + + <_> + 12 11 6 6 -1. + <_> + 12 13 6 2 3. + <_> + + <_> + 0 1 9 9 -1. + <_> + 3 1 3 9 3. + <_> + + <_> + 6 0 12 12 -1. + <_> + 9 0 6 12 2. + <_> + + <_> + 7 14 6 4 -1. + <_> + 10 14 3 4 2. + <_> + + <_> + 8 7 13 3 -1. + <_> + 8 8 13 1 3. + <_> + + <_> + 2 13 12 4 -1. + <_> + 5 13 6 4 2. + <_> + + <_> + 15 3 2 13 -1. + <_> + 15 3 1 13 2. + 1 + <_> + + <_> + 9 5 11 2 -1. + <_> + 9 5 11 1 2. + 1 + <_> + + <_> + 13 2 2 16 -1. + <_> + 13 10 2 8 2. + <_> + + <_> + 7 2 2 16 -1. + <_> + 7 10 2 8 2. + <_> + + <_> + 14 0 7 6 -1. + <_> + 12 2 7 2 3. + 1 + <_> + + <_> + 7 3 6 12 -1. + <_> + 7 3 3 6 2. + <_> + 10 9 3 6 2. + <_> + + <_> + 9 14 8 4 -1. + <_> + 9 16 8 2 2. + <_> + + <_> + 11 3 11 3 -1. + <_> + 10 4 11 1 3. + 1 + <_> + + <_> + 11 1 4 6 -1. + <_> + 12 2 2 6 2. + 1 + <_> + + <_> + 11 1 6 4 -1. + <_> + 10 2 6 2 2. + 1 + <_> + + <_> + 10 10 6 8 -1. + <_> + 12 10 2 8 3. + <_> + + <_> + 2 4 12 4 -1. + <_> + 2 4 6 2 2. + <_> + 8 6 6 2 2. + <_> + + <_> + 14 1 3 10 -1. + <_> + 15 2 1 10 3. + 1 + <_> + + <_> + 0 7 22 7 -1. + <_> + 11 7 11 7 2. + <_> + + <_> + 8 2 14 3 -1. + <_> + 8 3 14 1 3. + <_> + + <_> + 0 2 14 3 -1. + <_> + 0 3 14 1 3. + <_> + + <_> + 14 1 3 10 -1. + <_> + 15 2 1 10 3. + 1 + <_> + + <_> + 8 1 10 3 -1. + <_> + 7 2 10 1 3. + 1 + <_> + + <_> + 12 3 3 10 -1. + <_> + 13 4 1 10 3. + 1 + <_> + + <_> + 11 4 10 3 -1. + <_> + 10 5 10 1 3. + 1 + <_> + + <_> + 12 1 7 6 -1. + <_> + 12 3 7 2 3. + <_> + + <_> + 0 3 14 3 -1. + <_> + 0 4 14 1 3. + <_> + + <_> + 8 0 12 4 -1. + <_> + 14 0 6 2 2. + <_> + 8 2 6 2 2. + <_> + + <_> + 2 0 12 4 -1. + <_> + 2 0 6 2 2. + <_> + 8 2 6 2 2. + <_> + + <_> + 8 4 12 3 -1. + <_> + 8 5 12 1 3. + <_> + + <_> + 0 1 14 2 -1. + <_> + 7 1 7 2 2. + <_> + + <_> + 5 0 15 11 -1. + <_> + 10 0 5 11 3. + <_> + + <_> + 2 0 15 11 -1. + <_> + 7 0 5 11 3. + <_> + + <_> + 11 6 6 12 -1. + <_> + 14 6 3 6 2. + <_> + 11 12 3 6 2. + <_> + + <_> + 7 5 6 6 -1. + <_> + 9 5 2 6 3. + <_> + + <_> + 14 13 6 5 -1. + <_> + 14 13 3 5 2. + <_> + + <_> + 6 10 6 8 -1. + <_> + 8 10 2 8 3. + <_> + + <_> + 10 10 6 6 -1. + <_> + 12 10 2 6 3. + <_> + + <_> + 6 10 6 6 -1. + <_> + 8 10 2 6 3. + <_> + + <_> + 6 11 14 3 -1. + <_> + 6 11 7 3 2. + <_> + + <_> + 3 1 7 6 -1. + <_> + 3 3 7 2 3. + <_> + + <_> + 11 8 6 10 -1. + <_> + 14 8 3 5 2. + <_> + 11 13 3 5 2. + <_> + + <_> + 8 5 3 13 -1. + <_> + 9 5 1 13 3. + <_> + + <_> + 11 0 6 4 -1. + <_> + 11 0 3 4 2. + 1 + <_> + + <_> + 11 0 4 6 -1. + <_> + 11 0 4 3 2. + 1 + <_> + + <_> + 14 3 2 12 -1. + <_> + 14 3 2 6 2. + 1 + <_> + + <_> + 5 4 10 7 -1. + <_> + 10 4 5 7 2. + <_> + + <_> + 8 9 6 6 -1. + <_> + 10 9 2 6 3. + <_> + + <_> + 0 8 12 9 -1. + <_> + 4 11 4 3 9. + <_> + + <_> + 13 12 4 6 -1. + <_> + 13 15 4 3 2. + <_> + + <_> + 5 12 5 6 -1. + <_> + 5 15 5 3 2. + <_> + + <_> + 12 4 2 11 -1. + <_> + 12 4 1 11 2. + 1 + <_> + + <_> + 9 4 11 2 -1. + <_> + 9 4 11 1 2. + 1 + <_> + + <_> + 11 8 6 10 -1. + <_> + 14 8 3 5 2. + <_> + 11 13 3 5 2. + <_> + + <_> + 5 8 6 10 -1. + <_> + 5 8 3 5 2. + <_> + 8 13 3 5 2. + <_> + + <_> + 11 7 6 10 -1. + <_> + 14 7 3 5 2. + <_> + 11 12 3 5 2. + <_> + + <_> + 2 1 18 3 -1. + <_> + 2 2 18 1 3. + <_> + + <_> + 16 4 6 7 -1. + <_> + 16 4 3 7 2. + <_> + + <_> + 5 7 6 10 -1. + <_> + 5 7 3 5 2. + <_> + 8 12 3 5 2. + <_> + + <_> + 12 0 3 14 -1. + <_> + 12 7 3 7 2. + <_> + + <_> + 7 10 8 7 -1. + <_> + 11 10 4 7 2. + <_> + + <_> + 8 0 12 3 -1. + <_> + 8 1 12 1 3. + <_> + + <_> + 3 0 13 4 -1. + <_> + 3 1 13 2 2. + <_> + + <_> + 7 11 12 4 -1. + <_> + 7 12 12 2 2. + <_> + + <_> + 0 0 8 18 -1. + <_> + 4 0 4 18 2. + <_> + + <_> + 14 13 6 5 -1. + <_> + 14 13 3 5 2. + <_> + + <_> + 0 5 22 4 -1. + <_> + 11 5 11 4 2. + <_> + + <_> + 11 2 10 9 -1. + <_> + 11 5 10 3 3. + <_> + + <_> + 1 2 10 9 -1. + <_> + 1 5 10 3 3. + <_> + + <_> + 18 6 2 12 -1. + <_> + 18 6 1 12 2. + <_> + + <_> + 2 6 2 12 -1. + <_> + 3 6 1 12 2. + <_> + + <_> + 15 6 4 12 -1. + <_> + 15 9 4 6 2. + <_> + + <_> + 3 6 4 12 -1. + <_> + 3 9 4 6 2. + <_> + + <_> + 14 13 6 5 -1. + <_> + 14 13 3 5 2. + <_> + + <_> + 2 13 6 5 -1. + <_> + 5 13 3 5 2. + <_> + + <_> + 8 12 12 5 -1. + <_> + 11 12 6 5 2. + <_> + + <_> + 2 12 12 5 -1. + <_> + 5 12 6 5 2. + <_> + + <_> + 12 12 6 6 -1. + <_> + 12 14 6 2 3. + <_> + + <_> + 0 10 16 8 -1. + <_> + 4 10 8 8 2. + <_> + + <_> + 13 1 8 8 -1. + <_> + 15 1 4 8 2. + <_> + + <_> + 1 1 8 8 -1. + <_> + 3 1 4 8 2. + <_> + + <_> + 14 8 3 8 -1. + <_> + 14 12 3 4 2. + <_> + + <_> + 10 4 7 6 -1. + <_> + 10 4 7 3 2. + 1 + <_> + + <_> + 9 10 4 8 -1. + <_> + 9 14 4 4 2. + <_> + + <_> + 5 8 3 8 -1. + <_> + 5 12 3 4 2. + <_> + + <_> + 6 9 4 9 -1. + <_> + 6 12 4 3 3. + <_> + + <_> + 6 3 16 4 -1. + <_> + 14 3 8 2 2. + <_> + 6 5 8 2 2. + <_> + + <_> + 1 3 20 4 -1. + <_> + 1 3 10 2 2. + <_> + 11 5 10 2 2. + <_> + + <_> + 9 5 6 12 -1. + <_> + 12 5 3 6 2. + <_> + 9 11 3 6 2. + <_> + + <_> + 1 6 2 12 -1. + <_> + 2 6 1 12 2. + <_> + + <_> + 19 0 2 16 -1. + <_> + 19 0 1 16 2. + <_> + + <_> + 1 0 2 16 -1. + <_> + 2 0 1 16 2. + <_> + + <_> + 13 5 5 9 -1. + <_> + 13 8 5 3 3. + <_> + + <_> + 5 16 12 2 -1. + <_> + 5 17 12 1 2. + <_> + + <_> + 5 14 12 4 -1. + <_> + 5 15 12 2 2. + <_> + + <_> + 5 3 12 9 -1. + <_> + 9 6 4 3 9. + <_> + + <_> + 7 5 13 2 -1. + <_> + 7 6 13 1 2. + <_> + + <_> + 8 1 12 2 -1. + <_> + 8 1 12 1 2. + 1 + <_> + + <_> + 0 4 22 8 -1. + <_> + 11 4 11 4 2. + <_> + 0 8 11 4 2. + <_> + + <_> + 2 3 6 4 -1. + <_> + 5 3 3 4 2. + <_> + + <_> + 7 11 15 3 -1. + <_> + 7 12 15 1 3. + <_> + + <_> + 5 7 6 7 -1. + <_> + 8 7 3 7 2. + <_> + + <_> + 7 12 12 4 -1. + <_> + 13 12 6 2 2. + <_> + 7 14 6 2 2. + <_> + + <_> + 0 11 16 2 -1. + <_> + 8 11 8 2 2. + <_> + + <_> + 18 3 4 10 -1. + <_> + 18 3 4 5 2. + 1 + <_> + + <_> + 2 2 17 3 -1. + <_> + 2 3 17 1 3. + <_> + + <_> + 10 14 12 4 -1. + <_> + 16 14 6 2 2. + <_> + 10 16 6 2 2. + <_> + + <_> + 1 9 11 6 -1. + <_> + 1 11 11 2 3. + <_> + + <_> + 4 9 18 3 -1. + <_> + 4 10 18 1 3. + <_> + + <_> + 0 9 18 3 -1. + <_> + 0 10 18 1 3. + <_> + + <_> + 11 5 11 12 -1. + <_> + 11 11 11 6 2. + <_> + + <_> + 5 12 6 6 -1. + <_> + 5 14 6 2 3. + <_> + + <_> + 14 10 6 8 -1. + <_> + 17 10 3 4 2. + <_> + 14 14 3 4 2. + <_> + + <_> + 0 5 11 12 -1. + <_> + 0 11 11 6 2. + <_> + + <_> + 15 3 2 12 -1. + <_> + 15 3 2 6 2. + 1 + <_> + + <_> + 3 0 12 4 -1. + <_> + 3 0 6 2 2. + <_> + 9 2 6 2 2. + <_> + + <_> + 14 10 6 8 -1. + <_> + 17 10 3 4 2. + <_> + 14 14 3 4 2. + <_> + + <_> + 5 12 8 6 -1. + <_> + 5 12 4 3 2. + <_> + 9 15 4 3 2. + <_> + + <_> + 8 11 10 5 -1. + <_> + 8 11 5 5 2. + <_> + + <_> + 4 11 10 5 -1. + <_> + 9 11 5 5 2. + <_> + + <_> + 6 6 12 12 -1. + <_> + 12 6 6 6 2. + <_> + 6 12 6 6 2. + <_> + + <_> + 7 10 6 8 -1. + <_> + 7 12 6 4 2. + <_> + + <_> + 7 8 15 10 -1. + <_> + 7 13 15 5 2. + <_> + + <_> + 0 0 22 4 -1. + <_> + 0 0 11 2 2. + <_> + 11 2 11 2 2. + <_> + + <_> + 10 3 12 3 -1. + <_> + 10 4 12 1 3. + <_> + + <_> + 0 3 13 3 -1. + <_> + 0 4 13 1 3. + <_> + + <_> + 9 3 4 12 -1. + <_> + 9 6 4 6 2. + <_> + + <_> + 4 5 9 6 -1. + <_> + 4 8 9 3 2. + <_> + + <_> + 11 6 2 9 -1. + <_> + 11 6 1 9 2. + 1 + <_> + + <_> + 9 2 4 8 -1. + <_> + 9 6 4 4 2. + <_> + + <_> + 7 0 8 10 -1. + <_> + 7 5 8 5 2. + <_> + + <_> + 11 5 9 2 -1. + <_> + 11 5 9 1 2. + 1 + <_> + + <_> + 17 0 3 11 -1. + <_> + 18 1 1 11 3. + 1 + <_> + + <_> + 5 0 11 3 -1. + <_> + 4 1 11 1 3. + 1 + <_> + + <_> + 9 6 4 7 -1. + <_> + 9 6 2 7 2. + <_> + + <_> + 3 11 6 6 -1. + <_> + 3 13 6 2 3. + <_> + + <_> + 6 10 16 8 -1. + <_> + 6 12 16 4 2. + <_> + + <_> + 11 6 9 3 -1. + <_> + 10 7 9 1 3. + 1 + <_> + + <_> + 12 11 8 6 -1. + <_> + 12 13 8 2 3. + <_> + + <_> + 0 10 16 8 -1. + <_> + 0 12 16 4 2. + <_> + + <_> + 10 14 12 4 -1. + <_> + 16 14 6 2 2. + <_> + 10 16 6 2 2. + <_> + + <_> + 2 11 8 6 -1. + <_> + 2 13 8 2 3. + <_> + + <_> + 6 11 16 4 -1. + <_> + 14 11 8 2 2. + <_> + 6 13 8 2 2. + <_> + + <_> + 0 11 22 6 -1. + <_> + 11 11 11 6 2. + <_> + + <_> + 14 10 6 8 -1. + <_> + 17 10 3 4 2. + <_> + 14 14 3 4 2. + <_> + + <_> + 2 10 6 8 -1. + <_> + 2 10 3 4 2. + <_> + 5 14 3 4 2. + <_> + + <_> + 6 4 15 12 -1. + <_> + 11 8 5 4 9. + <_> + + <_> + 0 4 18 12 -1. + <_> + 6 8 6 4 9. + <_> + + <_> + 15 7 2 8 -1. + <_> + 15 7 1 8 2. + 1 + <_> + + <_> + 3 3 10 3 -1. + <_> + 2 4 10 1 3. + 1 + <_> + + <_> + 4 2 14 3 -1. + <_> + 4 3 14 1 3. + <_> + + <_> + 10 8 8 2 -1. + <_> + 10 8 8 1 2. + 1 + <_> + + <_> + 15 5 4 7 -1. + <_> + 15 5 2 7 2. + 1 + <_> + + <_> + 3 6 5 6 -1. + <_> + 3 9 5 3 2. + <_> + + <_> + 14 1 8 6 -1. + <_> + 18 1 4 3 2. + <_> + 14 4 4 3 2. + <_> + + <_> + 0 1 8 6 -1. + <_> + 0 1 4 3 2. + <_> + 4 4 4 3 2. + <_> + + <_> + 17 0 4 12 -1. + <_> + 18 0 2 12 2. + <_> + + <_> + 1 0 4 12 -1. + <_> + 2 0 2 12 2. + <_> + + <_> + 9 16 12 2 -1. + <_> + 9 17 12 1 2. + <_> + + <_> + 1 16 12 2 -1. + <_> + 1 17 12 1 2. + <_> + + <_> + 10 15 12 3 -1. + <_> + 10 16 12 1 3. + <_> + + <_> + 0 15 12 3 -1. + <_> + 0 16 12 1 3. + <_> + + <_> + 10 14 12 4 -1. + <_> + 16 14 6 2 2. + <_> + 10 16 6 2 2. + <_> + + <_> + 0 14 12 4 -1. + <_> + 0 14 6 2 2. + <_> + 6 16 6 2 2. + <_> + + <_> + 9 11 12 4 -1. + <_> + 15 11 6 2 2. + <_> + 9 13 6 2 2. + <_> + + <_> + 0 11 16 4 -1. + <_> + 0 11 8 2 2. + <_> + 8 13 8 2 2. + <_> + + <_> + 8 12 9 6 -1. + <_> + 8 14 9 2 3. + <_> + + <_> + 5 12 9 6 -1. + <_> + 5 14 9 2 3. + <_> + + <_> + 4 5 16 2 -1. + <_> + 4 5 8 2 2. + <_> + + <_> + 1 10 10 8 -1. + <_> + 1 10 5 4 2. + <_> + 6 14 5 4 2. + <_> + + <_> + 16 2 5 9 -1. + <_> + 13 5 5 3 3. + 1 + <_> + + <_> + 4 4 4 6 -1. + <_> + 6 4 2 6 2. + <_> + + <_> + 9 2 9 7 -1. + <_> + 12 2 3 7 3. + <_> + + <_> + 4 2 9 7 -1. + <_> + 7 2 3 7 3. + <_> + + <_> + 16 2 5 9 -1. + <_> + 13 5 5 3 3. + 1 + <_> + + <_> + 6 2 9 5 -1. + <_> + 9 5 3 5 3. + 1 + <_> + + <_> + 5 12 14 6 -1. + <_> + 5 14 14 2 3. + <_> + + <_> + 6 4 4 12 -1. + <_> + 6 4 2 6 2. + <_> + 8 10 2 6 2. + <_> + + <_> + 9 4 10 8 -1. + <_> + 9 4 5 8 2. + <_> + + <_> + 7 5 6 8 -1. + <_> + 7 5 3 4 2. + <_> + 10 9 3 4 2. + <_> + + <_> + 8 7 6 8 -1. + <_> + 11 7 3 4 2. + <_> + 8 11 3 4 2. + <_> + + <_> + 2 4 11 2 -1. + <_> + 2 4 11 1 2. + 1 + <_> + + <_> + 16 0 3 13 -1. + <_> + 17 0 1 13 3. + <_> + + <_> + 2 0 18 3 -1. + <_> + 2 1 18 1 3. + <_> + + <_> + 15 8 6 4 -1. + <_> + 15 8 3 4 2. + <_> + + <_> + 2 0 13 3 -1. + <_> + 2 1 13 1 3. + <_> + + <_> + 4 4 18 4 -1. + <_> + 4 6 18 2 2. + <_> + + <_> + 3 3 10 9 -1. + <_> + 8 3 5 9 2. + <_> + + <_> + 2 7 18 6 -1. + <_> + 8 9 6 2 9. + <_> + + <_> + 10 4 11 2 -1. + <_> + 10 4 11 1 2. + 1 + <_> + + <_> + 14 6 6 12 -1. + <_> + 17 6 3 6 2. + <_> + 14 12 3 6 2. + <_> + + <_> + 2 6 6 12 -1. + <_> + 2 6 3 6 2. + <_> + 5 12 3 6 2. + <_> + + <_> + 3 4 16 6 -1. + <_> + 3 6 16 2 3. + <_> + + <_> + 1 11 16 3 -1. + <_> + 5 11 8 3 2. + <_> + + <_> + 12 10 8 3 -1. + <_> + 12 10 4 3 2. + <_> + + <_> + 0 9 17 9 -1. + <_> + 0 12 17 3 3. + <_> + + <_> + 8 4 6 10 -1. + <_> + 11 4 3 5 2. + <_> + 8 9 3 5 2. + <_> + + <_> + 2 4 16 8 -1. + <_> + 2 4 8 4 2. + <_> + 10 8 8 4 2. + <_> + + <_> + 9 6 12 4 -1. + <_> + 15 6 6 2 2. + <_> + 9 8 6 2 2. + <_> + + <_> + 9 3 4 6 -1. + <_> + 9 6 4 3 2. + <_> + + <_> + 15 5 7 4 -1. + <_> + 15 5 7 2 2. + 1 + <_> + + <_> + 0 6 18 6 -1. + <_> + 0 6 9 3 2. + <_> + 9 9 9 3 2. + <_> + + <_> + 4 2 15 3 -1. + <_> + 4 3 15 1 3. + <_> + + <_> + 2 0 6 6 -1. + <_> + 5 0 3 6 2. + <_> + + <_> + 13 4 8 6 -1. + <_> + 17 4 4 3 2. + <_> + 13 7 4 3 2. + <_> + + <_> + 4 2 13 6 -1. + <_> + 4 4 13 2 3. + <_> + + <_> + 9 8 12 3 -1. + <_> + 9 9 12 1 3. + <_> + + <_> + 1 8 16 3 -1. + <_> + 1 9 16 1 3. + <_> + + <_> + 11 4 5 8 -1. + <_> + 11 8 5 4 2. + <_> + + <_> + 3 4 11 2 -1. + <_> + 3 4 11 1 2. + 1 + <_> + + <_> + 10 7 12 3 -1. + <_> + 10 8 12 1 3. + <_> + + <_> + 9 3 7 8 -1. + <_> + 9 3 7 4 2. + 1 + <_> + + <_> + 13 2 2 12 -1. + <_> + 13 2 2 6 2. + 1 + <_> + + <_> + 0 9 12 4 -1. + <_> + 0 9 6 2 2. + <_> + 6 11 6 2 2. + <_> + + <_> + 11 7 8 6 -1. + <_> + 13 7 4 6 2. + <_> + + <_> + 0 8 6 6 -1. + <_> + 2 8 2 6 3. + <_> + + <_> + 11 7 8 6 -1. + <_> + 13 7 4 6 2. + <_> + + <_> + 3 7 8 6 -1. + <_> + 5 7 4 6 2. + <_> + + <_> + 10 6 6 4 -1. + <_> + 10 6 3 4 2. + <_> + + <_> + 4 8 12 10 -1. + <_> + 4 8 6 5 2. + <_> + 10 13 6 5 2. + <_> + + <_> + 15 7 6 10 -1. + <_> + 17 7 2 10 3. + <_> + + <_> + 6 14 6 4 -1. + <_> + 9 14 3 4 2. + <_> + + <_> + 8 13 10 4 -1. + <_> + 8 13 5 4 2. + <_> + + <_> + 2 0 4 18 -1. + <_> + 4 0 2 18 2. + <_> + + <_> + 11 0 8 10 -1. + <_> + 11 0 8 5 2. + 1 + <_> + + <_> + 0 7 12 3 -1. + <_> + 0 8 12 1 3. + <_> + + <_> + 17 0 2 10 -1. + <_> + 17 0 1 10 2. + 1 + <_> + + <_> + 5 6 6 4 -1. + <_> + 5 8 6 2 2. + <_> + + <_> + 15 10 7 6 -1. + <_> + 15 12 7 2 3. + <_> + + <_> + 0 10 7 6 -1. + <_> + 0 12 7 2 3. + <_> + + <_> + 13 12 6 6 -1. + <_> + 15 12 2 6 3. + <_> + + <_> + 1 11 20 7 -1. + <_> + 11 11 10 7 2. + <_> + + <_> + 13 5 4 9 -1. + <_> + 13 8 4 3 3. + <_> + + <_> + 2 12 8 6 -1. + <_> + 2 12 4 3 2. + <_> + 6 15 4 3 2. + <_> + + <_> + 9 14 6 4 -1. + <_> + 9 16 6 2 2. + <_> + + <_> + 7 12 8 6 -1. + <_> + 7 12 4 3 2. + <_> + 11 15 4 3 2. + <_> + + <_> + 6 1 12 14 -1. + <_> + 12 1 6 7 2. + <_> + 6 8 6 7 2. + <_> + + <_> + 5 5 4 9 -1. + <_> + 5 8 4 3 3. + <_> + + <_> + 5 13 12 4 -1. + <_> + 11 13 6 2 2. + <_> + 5 15 6 2 2. + <_> + + <_> + 9 7 8 3 -1. + <_> + 8 8 8 1 3. + 1 + <_> + + <_> + 7 5 8 10 -1. + <_> + 7 10 8 5 2. + <_> + + <_> + 7 1 8 3 -1. + <_> + 6 2 8 1 3. + 1 + <_> + + <_> + 10 14 12 3 -1. + <_> + 10 15 12 1 3. + <_> + + <_> + 0 6 18 12 -1. + <_> + 0 12 18 6 2. + <_> + + <_> + 9 8 6 6 -1. + <_> + 9 11 6 3 2. + <_> + + <_> + 3 2 4 12 -1. + <_> + 3 2 2 6 2. + <_> + 5 8 2 6 2. + <_> + + <_> + 13 2 2 12 -1. + <_> + 13 2 2 6 2. + 1 + <_> + + <_> + 2 4 6 8 -1. + <_> + 2 4 3 4 2. + <_> + 5 8 3 4 2. + <_> + + <_> + 14 10 4 6 -1. + <_> + 14 10 2 6 2. + <_> + + <_> + 0 0 2 12 -1. + <_> + 0 6 2 6 2. + <_> + + <_> + 13 2 2 12 -1. + <_> + 13 2 2 6 2. + 1 + <_> + + <_> + 9 2 12 2 -1. + <_> + 9 2 6 2 2. + 1 + <_> + + <_> + 10 9 12 4 -1. + <_> + 16 9 6 2 2. + <_> + 10 11 6 2 2. + <_> + + <_> + 0 9 12 4 -1. + <_> + 0 9 6 2 2. + <_> + 6 11 6 2 2. + <_> + + <_> + 17 9 4 9 -1. + <_> + 17 12 4 3 3. + <_> + + <_> + 1 9 10 6 -1. + <_> + 1 9 5 3 2. + <_> + 6 12 5 3 2. + <_> + + <_> + 8 12 9 4 -1. + <_> + 8 14 9 2 2. + <_> + + <_> + 2 8 6 10 -1. + <_> + 2 8 3 5 2. + <_> + 5 13 3 5 2. + <_> + + <_> + 7 10 12 6 -1. + <_> + 10 10 6 6 2. + <_> + + <_> + 3 10 12 6 -1. + <_> + 6 10 6 6 2. + <_> + + <_> + 20 0 2 12 -1. + <_> + 20 6 2 6 2. + <_> + + <_> + 0 0 2 12 -1. + <_> + 0 6 2 6 2. + <_> + + <_> + 14 3 4 15 -1. + <_> + 14 3 2 15 2. + <_> + + <_> + 0 1 16 14 -1. + <_> + 0 1 8 7 2. + <_> + 8 8 8 7 2. + <_> + + <_> + 11 0 8 10 -1. + <_> + 11 0 8 5 2. + 1 + <_> + + <_> + 0 3 16 4 -1. + <_> + 0 3 8 2 2. + <_> + 8 5 8 2 2. + <_> + + <_> + 13 0 7 12 -1. + <_> + 13 4 7 4 3. + <_> + + <_> + 5 3 11 15 -1. + <_> + 5 8 11 5 3. + <_> + + <_> + 13 0 7 12 -1. + <_> + 13 4 7 4 3. + <_> + + <_> + 2 0 7 12 -1. + <_> + 2 4 7 4 3. + <_> + + <_> + 4 5 18 12 -1. + <_> + 10 9 6 4 9. + <_> + + <_> + 4 7 14 6 -1. + <_> + 4 7 7 3 2. + <_> + 11 10 7 3 2. + <_> + + <_> + 7 9 13 3 -1. + <_> + 7 10 13 1 3. + <_> + + <_> + 2 9 13 3 -1. + <_> + 2 10 13 1 3. + <_> + + <_> + 5 9 17 3 -1. + <_> + 5 10 17 1 3. + <_> + + <_> + 1 1 10 9 -1. + <_> + 1 4 10 3 3. + <_> + + <_> + 4 1 16 8 -1. + <_> + 4 3 16 4 2. + <_> + + <_> + 6 5 6 12 -1. + <_> + 8 5 2 12 3. + <_> + + <_> + 11 7 6 5 -1. + <_> + 11 7 3 5 2. + 1 + <_> + + <_> + 5 4 9 5 -1. + <_> + 8 4 3 5 3. + <_> + + <_> + 2 12 18 4 -1. + <_> + 11 12 9 2 2. + <_> + 2 14 9 2 2. + <_> + + <_> + 11 4 9 3 -1. + <_> + 10 5 9 1 3. + 1 + <_> + + <_> + 15 0 2 10 -1. + <_> + 15 0 1 10 2. + 1 + <_> + + <_> + 0 5 18 12 -1. + <_> + 6 9 6 4 9. + <_> + + <_> + 14 9 4 6 -1. + <_> + 14 9 2 6 2. + <_> + + <_> + 5 6 3 12 -1. + <_> + 5 10 3 4 3. + <_> + + <_> + 11 0 3 9 -1. + <_> + 12 1 1 9 3. + 1 + <_> + + <_> + 1 9 4 9 -1. + <_> + 1 12 4 3 3. + <_> + + <_> + 18 9 4 9 -1. + <_> + 18 12 4 3 3. + <_> + + <_> + 6 9 6 4 -1. + <_> + 9 9 3 4 2. + <_> + + <_> + 11 0 3 9 -1. + <_> + 12 1 1 9 3. + 1 + <_> + + <_> + 11 0 9 3 -1. + <_> + 10 1 9 1 3. + 1 + <_> + + <_> + 5 15 12 2 -1. + <_> + 5 16 12 1 2. + <_> + + <_> + 0 0 22 2 -1. + <_> + 11 0 11 2 2. + <_> + + <_> + 20 0 2 13 -1. + <_> + 20 0 1 13 2. + <_> + + <_> + 0 0 2 13 -1. + <_> + 1 0 1 13 2. + <_> + + <_> + 10 1 6 6 -1. + <_> + 12 1 2 6 3. + <_> + + <_> + 6 1 6 6 -1. + <_> + 8 1 2 6 3. + <_> + + <_> + 10 7 12 3 -1. + <_> + 10 8 12 1 3. + <_> + + <_> + 0 7 12 3 -1. + <_> + 0 8 12 1 3. + <_> + + <_> + 1 9 8 6 -1. + <_> + 1 9 4 3 2. + <_> + 5 12 4 3 2. + <_> + + <_> + 10 10 7 4 -1. + <_> + 10 12 7 2 2. + <_> + + <_> + 8 10 4 6 -1. + <_> + 10 10 2 6 2. + <_> + + <_> + 13 6 8 4 -1. + <_> + 13 6 4 4 2. + 1 + <_> + + <_> + 10 1 8 7 -1. + <_> + 12 3 4 7 2. + 1 + <_> + + <_> + 8 5 8 7 -1. + <_> + 8 5 4 7 2. + <_> + + <_> + 6 5 8 7 -1. + <_> + 10 5 4 7 2. + <_> + + <_> + 6 3 16 12 -1. + <_> + 14 3 8 6 2. + <_> + 6 9 8 6 2. + <_> + + <_> + 4 11 6 6 -1. + <_> + 4 13 6 2 3. + <_> + + <_> + 4 2 18 14 -1. + <_> + 13 2 9 7 2. + <_> + 4 9 9 7 2. + <_> + + <_> + 5 0 11 12 -1. + <_> + 5 3 11 6 2. + <_> + + <_> + 4 7 16 9 -1. + <_> + 4 10 16 3 3. + <_> + + <_> + 0 1 18 3 -1. + <_> + 0 2 18 1 3. + <_> + + <_> + 12 13 6 4 -1. + <_> + 12 15 6 2 2. + <_> + + <_> + 1 10 6 8 -1. + <_> + 1 10 3 4 2. + <_> + 4 14 3 4 2. + <_> + + <_> + 14 12 8 6 -1. + <_> + 18 12 4 3 2. + <_> + 14 15 4 3 2. + <_> + + <_> + 9 3 12 3 -1. + <_> + 13 7 4 3 3. + 1 + <_> + + <_> + 8 12 6 6 -1. + <_> + 8 12 3 6 2. + <_> + + <_> + 4 8 14 10 -1. + <_> + 4 13 14 5 2. + <_> + + <_> + 11 2 8 8 -1. + <_> + 11 2 4 8 2. + 1 + <_> + + <_> + 9 6 4 8 -1. + <_> + 9 6 4 4 2. + 1 + <_> + + <_> + 18 3 4 10 -1. + <_> + 18 3 4 5 2. + 1 + <_> + + <_> + 5 15 12 3 -1. + <_> + 9 15 4 3 3. + <_> + + <_> + 11 8 4 6 -1. + <_> + 11 8 4 3 2. + 1 + <_> + + <_> + 11 8 6 4 -1. + <_> + 11 8 3 4 2. + 1 + <_> + + <_> + 3 13 16 5 -1. + <_> + 7 13 8 5 2. + <_> + + <_> + 6 2 4 12 -1. + <_> + 6 2 2 6 2. + <_> + 8 8 2 6 2. + <_> + + <_> + 2 14 18 4 -1. + <_> + 11 14 9 2 2. + <_> + 2 16 9 2 2. + <_> + + <_> + 3 1 12 3 -1. + <_> + 3 2 12 1 3. + <_> + + <_> + 6 1 16 3 -1. + <_> + 6 2 16 1 3. + <_> + + <_> + 5 3 8 3 -1. + <_> + 9 3 4 3 2. + <_> + + <_> + 16 3 4 6 -1. + <_> + 16 3 4 3 2. + 1 + <_> + + <_> + 4 3 10 4 -1. + <_> + 4 3 5 4 2. + 1 + <_> + + <_> + 14 5 6 8 -1. + <_> + 17 5 3 4 2. + <_> + 14 9 3 4 2. + <_> + + <_> + 1 2 14 12 -1. + <_> + 1 5 14 6 2. + <_> + + <_> + 11 2 6 12 -1. + <_> + 11 5 6 6 2. + <_> + + <_> + 5 2 6 12 -1. + <_> + 5 5 6 6 2. + <_> + + <_> + 11 5 8 5 -1. + <_> + 11 5 4 5 2. + 1 + <_> + + <_> + 4 0 9 18 -1. + <_> + 7 0 3 18 3. + <_> + + <_> + 11 14 6 4 -1. + <_> + 11 16 6 2 2. + <_> + + <_> + 5 14 6 4 -1. + <_> + 5 16 6 2 2. + <_> + + <_> + 12 13 6 4 -1. + <_> + 12 15 6 2 2. + <_> + + <_> + 1 6 13 3 -1. + <_> + 1 7 13 1 3. + <_> + + <_> + 10 6 12 3 -1. + <_> + 10 7 12 1 3. + <_> + + <_> + 1 8 6 4 -1. + <_> + 4 8 3 4 2. + <_> + + <_> + 14 12 6 6 -1. + <_> + 16 12 2 6 3. + <_> + + <_> + 2 12 6 6 -1. + <_> + 4 12 2 6 3. + <_> + + <_> + 7 15 12 3 -1. + <_> + 11 15 4 3 3. + <_> + + <_> + 1 12 8 5 -1. + <_> + 5 12 4 5 2. + <_> + + <_> + 14 5 6 8 -1. + <_> + 17 5 3 4 2. + <_> + 14 9 3 4 2. + <_> + + <_> + 2 5 6 8 -1. + <_> + 2 5 3 4 2. + <_> + 5 9 3 4 2. + <_> + + <_> + 14 11 8 6 -1. + <_> + 18 11 4 3 2. + <_> + 14 14 4 3 2. + <_> + + <_> + 4 0 8 6 -1. + <_> + 4 0 4 3 2. + <_> + 8 3 4 3 2. + <_> + + <_> + 14 3 7 4 -1. + <_> + 14 3 7 2 2. + 1 + <_> + + <_> + 0 11 8 6 -1. + <_> + 0 11 4 3 2. + <_> + 4 14 4 3 2. + <_> + + <_> + 4 13 14 4 -1. + <_> + 4 15 14 2 2. + <_> + + <_> + 5 3 9 8 -1. + <_> + 8 3 3 8 3. + <_> + + <_> + 5 0 15 8 -1. + <_> + 10 0 5 8 3. + <_> + + <_> + 2 0 15 8 -1. + <_> + 7 0 5 8 3. + <_> + + <_> + 14 0 6 11 -1. + <_> + 16 0 2 11 3. + <_> + + <_> + 0 16 18 2 -1. + <_> + 6 16 6 2 3. + <_> + + <_> + 5 3 12 9 -1. + <_> + 9 6 4 3 9. + <_> + + <_> + 8 3 4 7 -1. + <_> + 8 3 2 7 2. + 1 + <_> + + <_> + 10 3 6 8 -1. + <_> + 12 3 2 8 3. + <_> + + <_> + 6 3 6 8 -1. + <_> + 8 3 2 8 3. + <_> + + <_> + 7 13 12 4 -1. + <_> + 7 15 12 2 2. + <_> + + <_> + 3 9 16 8 -1. + <_> + 3 9 8 4 2. + <_> + 11 13 8 4 2. + <_> + + <_> + 9 0 13 3 -1. + <_> + 9 1 13 1 3. + <_> + + <_> + 4 0 4 12 -1. + <_> + 4 0 2 6 2. + <_> + 6 6 2 6 2. + <_> + + <_> + 1 11 20 4 -1. + <_> + 6 11 10 4 2. + <_> + + <_> + 3 14 6 4 -1. + <_> + 6 14 3 4 2. + <_> + + <_> + 10 6 12 3 -1. + <_> + 10 7 12 1 3. + <_> + + <_> + 0 6 12 3 -1. + <_> + 0 7 12 1 3. + <_> + + <_> + 6 2 14 6 -1. + <_> + 6 4 14 2 3. + <_> + + <_> + 4 1 6 4 -1. + <_> + 4 1 6 2 2. + 1 + <_> + + <_> + 1 0 21 18 -1. + <_> + 8 0 7 18 3. + <_> + + <_> + 5 0 14 2 -1. + <_> + 5 0 7 2 2. + 1 + <_> + + <_> + 14 8 4 9 -1. + <_> + 14 11 4 3 3. + <_> + + <_> + 2 0 6 10 -1. + <_> + 4 0 2 10 3. + <_> + + <_> + 5 11 12 4 -1. + <_> + 11 11 6 2 2. + <_> + 5 13 6 2 2. + <_> + + <_> + 8 5 4 6 -1. + <_> + 10 5 2 6 2. + <_> + + <_> + 7 1 15 9 -1. + <_> + 12 4 5 3 9. + <_> + + <_> + 0 1 15 9 -1. + <_> + 5 4 5 3 9. + <_> + + <_> + 5 0 12 16 -1. + <_> + 11 0 6 8 2. + <_> + 5 8 6 8 2. + <_> + + <_> + 8 10 6 5 -1. + <_> + 11 10 3 5 2. + <_> + + <_> + 10 4 8 9 -1. + <_> + 10 7 8 3 3. + <_> + + <_> + 4 4 8 9 -1. + <_> + 4 7 8 3 3. + <_> + + <_> + 8 3 12 3 -1. + <_> + 8 4 12 1 3. + <_> + + <_> + 0 3 13 3 -1. + <_> + 0 4 13 1 3. + <_> + + <_> + 10 1 12 3 -1. + <_> + 14 1 4 3 3. + <_> + + <_> + 0 1 12 3 -1. + <_> + 4 1 4 3 3. + <_> + + <_> + 8 3 12 3 -1. + <_> + 8 4 12 1 3. + <_> + + <_> + 8 4 6 4 -1. + <_> + 8 4 3 4 2. + 1 + <_> + + <_> + 13 2 2 11 -1. + <_> + 13 2 1 11 2. + 1 + <_> + + <_> + 9 2 11 2 -1. + <_> + 9 2 11 1 2. + 1 + <_> + + <_> + 11 1 3 16 -1. + <_> + 11 9 3 8 2. + <_> + + <_> + 7 1 4 9 -1. + <_> + 7 4 4 3 3. + <_> + + <_> + 12 4 4 8 -1. + <_> + 12 8 4 4 2. + <_> + + <_> + 1 7 6 4 -1. + <_> + 1 9 6 2 2. + <_> + + <_> + 12 4 4 8 -1. + <_> + 12 8 4 4 2. + <_> + + <_> + 6 4 4 8 -1. + <_> + 6 8 4 4 2. + <_> + + <_> + 19 3 3 12 -1. + <_> + 20 4 1 12 3. + 1 + <_> + + <_> + 3 3 12 3 -1. + <_> + 2 4 12 1 3. + 1 + <_> + + <_> + 13 6 3 7 -1. + <_> + 14 7 1 7 3. + 1 + <_> + + <_> + 8 12 6 4 -1. + <_> + 11 12 3 4 2. + <_> + + <_> + 10 8 10 10 -1. + <_> + 15 8 5 5 2. + <_> + 10 13 5 5 2. + <_> + + <_> + 2 8 10 10 -1. + <_> + 2 8 5 5 2. + <_> + 7 13 5 5 2. + <_> + + <_> + 1 11 20 3 -1. + <_> + 6 11 10 3 2. + <_> + + <_> + 13 8 6 4 -1. + <_> + 13 8 3 4 2. + 1 + <_> + + <_> + 4 11 8 4 -1. + <_> + 8 11 4 4 2. + <_> + + <_> + 9 5 10 6 -1. + <_> + 9 5 5 6 2. + <_> + + <_> + 4 8 6 9 -1. + <_> + 7 8 3 9 2. + <_> + + <_> + 4 5 16 4 -1. + <_> + 4 5 8 4 2. + <_> + + <_> + 2 4 18 6 -1. + <_> + 8 6 6 2 9. + <_> + + <_> + 11 1 2 11 -1. + <_> + 11 1 1 11 2. + 1 + <_> + + <_> + 7 1 6 8 -1. + <_> + 7 1 3 4 2. + <_> + 10 5 3 4 2. + <_> + + <_> + 7 10 8 6 -1. + <_> + 9 10 4 6 2. + <_> + + <_> + 6 12 9 4 -1. + <_> + 9 12 3 4 3. + <_> + + <_> + 10 12 9 4 -1. + <_> + 13 12 3 4 3. + <_> + + <_> + 8 0 10 8 -1. + <_> + 8 0 5 8 2. + 1 + <_> + + <_> + 9 6 12 4 -1. + <_> + 15 6 6 2 2. + <_> + 9 8 6 2 2. + <_> + + <_> + 4 9 14 5 -1. + <_> + 11 9 7 5 2. + <_> + + <_> + 14 6 6 6 -1. + <_> + 12 8 6 2 3. + 1 + <_> + + <_> + 6 4 6 7 -1. + <_> + 8 4 2 7 3. + <_> + + <_> + 14 9 6 6 -1. + <_> + 14 12 6 3 2. + <_> + + <_> + 2 9 6 6 -1. + <_> + 2 12 6 3 2. + <_> + + <_> + 13 8 4 8 -1. + <_> + 13 8 2 8 2. + <_> + + <_> + 5 8 4 9 -1. + <_> + 7 8 2 9 2. + <_> + + <_> + 2 4 18 12 -1. + <_> + 8 8 6 4 9. + <_> + + <_> + 3 5 10 6 -1. + <_> + 8 5 5 6 2. + <_> + + <_> + 6 0 12 8 -1. + <_> + 6 0 6 8 2. + <_> + + <_> + 0 11 8 7 -1. + <_> + 2 11 4 7 2. + <_> + + <_> + 15 11 6 7 -1. + <_> + 17 11 2 7 3. + <_> + + <_> + 3 16 14 2 -1. + <_> + 3 17 14 1 2. + <_> + + <_> + 9 15 13 3 -1. + <_> + 9 16 13 1 3. + <_> + + <_> + 0 15 13 3 -1. + <_> + 0 16 13 1 3. + <_> + + <_> + 5 13 12 3 -1. + <_> + 5 14 12 1 3. + <_> + + <_> + 0 14 14 3 -1. + <_> + 0 15 14 1 3. + <_> + + <_> + 13 5 6 6 -1. + <_> + 15 5 2 6 3. + <_> + + <_> + 3 5 6 6 -1. + <_> + 5 5 2 6 3. + <_> + + <_> + 2 3 20 4 -1. + <_> + 7 3 10 4 2. + <_> + + <_> + 4 13 12 2 -1. + <_> + 4 14 12 1 2. + <_> + + <_> + 9 6 9 6 -1. + <_> + 12 6 3 6 3. + <_> + + <_> + 8 5 6 7 -1. + <_> + 10 5 2 7 3. + <_> + + <_> + 15 0 3 10 -1. + <_> + 16 1 1 10 3. + 1 + <_> + + <_> + 7 0 10 3 -1. + <_> + 6 1 10 1 3. + 1 + <_> + + <_> + 11 4 8 6 -1. + <_> + 15 4 4 3 2. + <_> + 11 7 4 3 2. + <_> + + <_> + 7 0 12 3 -1. + <_> + 6 1 12 1 3. + 1 + <_> + + <_> + 19 4 3 11 -1. + <_> + 20 5 1 11 3. + 1 + <_> + + <_> + 1 11 6 7 -1. + <_> + 3 11 2 7 3. + <_> + + <_> + 7 4 15 14 -1. + <_> + 7 11 15 7 2. + <_> + + <_> + 3 4 11 3 -1. + <_> + 2 5 11 1 3. + 1 + <_> + + <_> + 14 6 3 8 -1. + <_> + 15 7 1 8 3. + 1 + <_> + + <_> + 3 0 3 18 -1. + <_> + 4 0 1 18 3. + <_> + + <_> + 14 3 8 4 -1. + <_> + 14 3 8 2 2. + 1 + <_> + + <_> + 8 3 4 8 -1. + <_> + 8 3 2 8 2. + 1 + <_> + + <_> + 18 2 4 12 -1. + <_> + 15 5 4 6 2. + 1 + <_> + + <_> + 2 9 17 3 -1. + <_> + 2 10 17 1 3. + <_> + + <_> + 7 9 14 3 -1. + <_> + 7 10 14 1 3. + <_> + + <_> + 8 2 6 8 -1. + <_> + 8 2 3 4 2. + <_> + 11 6 3 4 2. + <_> + + <_> + 11 4 8 6 -1. + <_> + 15 4 4 3 2. + <_> + 11 7 4 3 2. + <_> + + <_> + 3 4 8 6 -1. + <_> + 3 4 4 3 2. + <_> + 7 7 4 3 2. + <_> + + <_> + 3 1 18 3 -1. + <_> + 3 2 18 1 3. + <_> + + <_> + 0 9 8 3 -1. + <_> + 4 9 4 3 2. + <_> + + <_> + 13 2 9 10 -1. + <_> + 13 7 9 5 2. + <_> + + <_> + 1 2 8 12 -1. + <_> + 1 2 4 6 2. + <_> + 5 8 4 6 2. + <_> + + <_> + 12 5 8 6 -1. + <_> + 16 5 4 3 2. + <_> + 12 8 4 3 2. + <_> + + <_> + 1 0 17 3 -1. + <_> + 1 1 17 1 3. + <_> + + <_> + 4 0 15 2 -1. + <_> + 4 1 15 1 2. + <_> + + <_> + 5 0 12 4 -1. + <_> + 5 2 12 2 2. + <_> + + <_> + 7 4 15 14 -1. + <_> + 7 11 15 7 2. + <_> + + <_> + 8 2 9 2 -1. + <_> + 8 2 9 1 2. + 1 + <_> + + <_> + 16 0 2 13 -1. + <_> + 16 0 1 13 2. + 1 + <_> + + <_> + 6 0 13 2 -1. + <_> + 6 0 13 1 2. + 1 + <_> + + <_> + 12 7 2 9 -1. + <_> + 12 7 1 9 2. + 1 + <_> + + <_> + 10 7 9 2 -1. + <_> + 10 7 9 1 2. + 1 + <_> + + <_> + 9 0 11 10 -1. + <_> + 9 5 11 5 2. + <_> + + <_> + 8 5 9 2 -1. + <_> + 8 5 9 1 2. + 1 + <_> + + <_> + 13 2 9 10 -1. + <_> + 13 7 9 5 2. + <_> + + <_> + 0 2 9 10 -1. + <_> + 0 7 9 5 2. + <_> + + <_> + 17 2 3 8 -1. + <_> + 17 6 3 4 2. + <_> + + <_> + 2 2 3 8 -1. + <_> + 2 6 3 4 2. + <_> + + <_> + 4 4 18 4 -1. + <_> + 13 4 9 2 2. + <_> + 4 6 9 2 2. + <_> + + <_> + 0 4 18 4 -1. + <_> + 0 4 9 2 2. + <_> + 9 6 9 2 2. + <_> + + <_> + 4 1 14 4 -1. + <_> + 11 1 7 2 2. + <_> + 4 3 7 2 2. + <_> + + <_> + 0 0 21 8 -1. + <_> + 7 0 7 8 3. + <_> + + <_> + 5 0 14 18 -1. + <_> + 12 0 7 9 2. + <_> + 5 9 7 9 2. + <_> + + <_> + 1 11 16 4 -1. + <_> + 5 11 8 4 2. + <_> + + <_> + 6 9 10 6 -1. + <_> + 6 11 10 2 3. + <_> + + <_> + 5 10 12 4 -1. + <_> + 5 11 12 2 2. + <_> + + <_> + 15 4 6 6 -1. + <_> + 15 4 3 6 2. + 1 + <_> + + <_> + 7 4 6 6 -1. + <_> + 7 4 6 3 2. + 1 + <_> + + <_> + 12 5 8 6 -1. + <_> + 16 5 4 3 2. + <_> + 12 8 4 3 2. + <_> + + <_> + 5 5 8 4 -1. + <_> + 5 5 8 2 2. + 1 + <_> + + <_> + 17 6 3 12 -1. + <_> + 17 10 3 4 3. + <_> + + <_> + 5 7 9 2 -1. + <_> + 5 7 9 1 2. + 1 + <_> + + <_> + 14 6 3 8 -1. + <_> + 15 7 1 8 3. + 1 + <_> + + <_> + 5 7 12 2 -1. + <_> + 5 8 12 1 2. + <_> + + <_> + 4 5 18 3 -1. + <_> + 4 6 18 1 3. + <_> + + <_> + 1 6 15 9 -1. + <_> + 6 6 5 9 3. + <_> + + <_> + 19 4 3 10 -1. + <_> + 19 4 3 5 2. + 1 + <_> + + <_> + 0 12 18 6 -1. + <_> + 0 15 18 3 2. + <_> + + <_> + 6 13 13 4 -1. + <_> + 6 15 13 2 2. + <_> + + <_> + 3 5 8 9 -1. + <_> + 3 8 8 3 3. + <_> + + <_> + 6 8 10 8 -1. + <_> + 6 10 10 4 2. + <_> + + <_> + 4 6 13 6 -1. + <_> + 4 9 13 3 2. + <_> + + <_> + 14 3 2 12 -1. + <_> + 14 3 2 6 2. + 1 + <_> + + <_> + 8 3 12 2 -1. + <_> + 8 3 6 2 2. + 1 + <_> + + <_> + 13 1 5 12 -1. + <_> + 13 1 5 6 2. + 1 + <_> + + <_> + 9 1 12 5 -1. + <_> + 9 1 6 5 2. + 1 + <_> + + <_> + 8 12 8 3 -1. + <_> + 8 12 4 3 2. + <_> + + <_> + 5 12 12 4 -1. + <_> + 8 12 6 4 2. + <_> + + <_> + 13 8 6 4 -1. + <_> + 13 8 3 4 2. + 1 + <_> + + <_> + 9 8 4 6 -1. + <_> + 9 8 4 3 2. + 1 + <_> + + <_> + 1 7 20 11 -1. + <_> + 6 7 10 11 2. + <_> + + <_> + 10 13 12 3 -1. + <_> + 10 14 12 1 3. + <_> + + <_> + 1 10 6 4 -1. + <_> + 4 10 3 4 2. + <_> + + <_> + 15 10 6 4 -1. + <_> + 15 10 3 4 2. + <_> + + <_> + 0 13 12 3 -1. + <_> + 0 14 12 1 3. + <_> + + <_> + 4 10 14 8 -1. + <_> + 4 14 14 4 2. + <_> + + <_> + 5 14 12 4 -1. + <_> + 5 15 12 2 2. + <_> + + <_> + 5 16 12 2 -1. + <_> + 5 17 12 1 2. + <_> + + <_> + 1 0 20 12 -1. + <_> + 6 0 10 12 2. + <_> + + <_> + 7 12 15 5 -1. + <_> + 12 12 5 5 3. + <_> + + <_> + 6 0 15 2 -1. + <_> + 6 0 15 1 2. + 1 + <_> + + <_> + 6 5 12 8 -1. + <_> + 12 5 6 4 2. + <_> + 6 9 6 4 2. + <_> + + <_> + 4 5 12 8 -1. + <_> + 4 5 6 4 2. + <_> + 10 9 6 4 2. + <_> + + <_> + 6 2 16 6 -1. + <_> + 14 2 8 3 2. + <_> + 6 5 8 3 2. + <_> + + <_> + 1 2 16 14 -1. + <_> + 1 2 8 7 2. + <_> + 9 9 8 7 2. + <_> + + <_> + 11 14 6 4 -1. + <_> + 11 14 3 4 2. + <_> + + <_> + 3 8 12 9 -1. + <_> + 7 11 4 3 9. + <_> + + <_> + 8 3 14 4 -1. + <_> + 15 3 7 2 2. + <_> + 8 5 7 2 2. + <_> + + <_> + 9 0 6 8 -1. + <_> + 11 2 2 8 3. + 1 + <_> + + <_> + 12 13 6 4 -1. + <_> + 12 15 6 2 2. + <_> + + <_> + 4 13 6 4 -1. + <_> + 4 15 6 2 2. + <_> + + <_> + 6 16 16 2 -1. + <_> + 6 17 16 1 2. + <_> + + <_> + 0 3 12 3 -1. + <_> + 0 4 12 1 3. + <_> + + <_> + 8 3 14 3 -1. + <_> + 8 4 14 1 3. + <_> + + <_> + 6 2 3 16 -1. + <_> + 6 6 3 8 2. + <_> + + <_> + 5 2 14 14 -1. + <_> + 12 2 7 7 2. + <_> + 5 9 7 7 2. + <_> + + <_> + 5 8 3 8 -1. + <_> + 5 12 3 4 2. + <_> + + <_> + 14 7 7 4 -1. + <_> + 14 7 7 2 2. + 1 + <_> + + <_> + 4 6 12 9 -1. + <_> + 8 9 4 3 9. + <_> + + <_> + 7 11 15 6 -1. + <_> + 12 11 5 6 3. + <_> + + <_> + 0 11 15 6 -1. + <_> + 5 11 5 6 3. + <_> + + <_> + 15 7 6 8 -1. + <_> + 18 7 3 4 2. + <_> + 15 11 3 4 2. + <_> + + <_> + 0 7 22 10 -1. + <_> + 0 7 11 5 2. + <_> + 11 12 11 5 2. + <_> + + <_> + 1 8 20 8 -1. + <_> + 6 8 10 8 2. + <_> + + <_> + 2 5 7 6 -1. + <_> + 2 7 7 2 3. + <_> + + <_> + 7 2 15 8 -1. + <_> + 7 4 15 4 2. + <_> + + <_> + 3 1 14 8 -1. + <_> + 3 3 14 4 2. + <_> + + <_> + 9 2 13 2 -1. + <_> + 9 3 13 1 2. + <_> + + <_> + 8 3 6 8 -1. + <_> + 10 3 2 8 3. + <_> + + <_> + 7 1 15 2 -1. + <_> + 7 2 15 1 2. + <_> + + <_> + 0 1 15 2 -1. + <_> + 0 2 15 1 2. + <_> + + <_> + 6 0 12 3 -1. + <_> + 6 1 12 1 3. + <_> + + <_> + 4 0 9 4 -1. + <_> + 7 0 3 4 3. + <_> + + <_> + 12 3 8 3 -1. + <_> + 12 3 4 3 2. + 1 + <_> + + <_> + 8 12 6 4 -1. + <_> + 11 12 3 4 2. + <_> + + <_> + 12 1 10 4 -1. + <_> + 12 1 5 4 2. + <_> + + <_> + 0 1 10 4 -1. + <_> + 5 1 5 4 2. + <_> + + <_> + 16 13 6 5 -1. + <_> + 16 13 3 5 2. + <_> + + <_> + 0 13 6 5 -1. + <_> + 3 13 3 5 2. + <_> + + <_> + 18 11 4 7 -1. + <_> + 18 11 2 7 2. + <_> + + <_> + 0 11 4 7 -1. + <_> + 2 11 2 7 2. + <_> + + <_> + 15 0 6 14 -1. + <_> + 17 0 2 14 3. + <_> + + <_> + 1 0 6 14 -1. + <_> + 3 0 2 14 3. + <_> + + <_> + 13 0 4 14 -1. + <_> + 15 0 2 7 2. + <_> + 13 7 2 7 2. + <_> + + <_> + 5 0 4 14 -1. + <_> + 5 0 2 7 2. + <_> + 7 7 2 7 2. + <_> + + <_> + 13 2 6 4 -1. + <_> + 13 2 3 4 2. + <_> + + <_> + 1 7 12 4 -1. + <_> + 1 7 6 2 2. + <_> + 7 9 6 2 2. + <_> + + <_> + 4 13 18 3 -1. + <_> + 4 14 18 1 3. + <_> + + <_> + 2 6 2 12 -1. + <_> + 2 12 2 6 2. + <_> + + <_> + 4 11 16 4 -1. + <_> + 12 11 8 2 2. + <_> + 4 13 8 2 2. + <_> + + <_> + 2 11 16 4 -1. + <_> + 2 11 8 2 2. + <_> + 10 13 8 2 2. + <_> + + <_> + 10 12 12 4 -1. + <_> + 16 12 6 2 2. + <_> + 10 14 6 2 2. + <_> + + <_> + 0 12 12 4 -1. + <_> + 0 12 6 2 2. + <_> + 6 14 6 2 2. + <_> + + <_> + 12 12 10 6 -1. + <_> + 17 12 5 3 2. + <_> + 12 15 5 3 2. + <_> + + <_> + 0 10 10 8 -1. + <_> + 0 10 5 4 2. + <_> + 5 14 5 4 2. + <_> + + <_> + 8 0 7 4 -1. + <_> + 8 2 7 2 2. + <_> + + <_> + 0 3 14 3 -1. + <_> + 0 4 14 1 3. + <_> + + <_> + 15 1 6 8 -1. + <_> + 18 1 3 4 2. + <_> + 15 5 3 4 2. + <_> + + <_> + 2 3 7 4 -1. + <_> + 2 5 7 2 2. + <_> + + <_> + 13 2 6 4 -1. + <_> + 13 2 3 4 2. + <_> + + <_> + 3 2 6 4 -1. + <_> + 6 2 3 4 2. + <_> + + <_> + 5 1 16 4 -1. + <_> + 5 2 16 2 2. + <_> + + <_> + 4 15 13 3 -1. + <_> + 4 16 13 1 3. + <_> + + <_> + 12 6 3 12 -1. + <_> + 13 6 1 12 3. + <_> + + <_> + 0 16 16 2 -1. + <_> + 8 16 8 2 2. + <_> + + <_> + 3 2 16 10 -1. + <_> + 3 7 16 5 2. + <_> + + <_> + 7 1 12 4 -1. + <_> + 10 4 6 4 2. + 1 + <_> + + <_> + 14 1 2 9 -1. + <_> + 14 1 1 9 2. + 1 + <_> + + <_> + 4 10 3 8 -1. + <_> + 4 14 3 4 2. + <_> + + <_> + 11 12 6 6 -1. + <_> + 11 14 6 2 3. + <_> + + <_> + 5 12 6 6 -1. + <_> + 5 14 6 2 3. + <_> + + <_> + 12 6 3 12 -1. + <_> + 13 6 1 12 3. + <_> + + <_> + 10 6 8 3 -1. + <_> + 9 7 8 1 3. + 1 + <_> + + <_> + 12 6 3 12 -1. + <_> + 13 6 1 12 3. + <_> + + <_> + 7 6 3 12 -1. + <_> + 8 6 1 12 3. + <_> + + <_> + 14 1 2 9 -1. + <_> + 14 1 1 9 2. + 1 + <_> + + <_> + 11 4 10 3 -1. + <_> + 10 5 10 1 3. + 1 + <_> + + <_> + 8 11 9 4 -1. + <_> + 11 11 3 4 3. + <_> + + <_> + 7 5 2 12 -1. + <_> + 8 5 1 12 2. + <_> + + <_> + 13 1 3 16 -1. + <_> + 14 1 1 16 3. + <_> + + <_> + 7 4 6 6 -1. + <_> + 9 4 2 6 3. + <_> + + <_> + 10 4 2 12 -1. + <_> + 10 4 1 12 2. + <_> + + <_> + 0 0 18 5 -1. + <_> + 9 0 9 5 2. + <_> + + <_> + 16 3 2 12 -1. + <_> + 16 3 1 12 2. + 1 + <_> + + <_> + 6 3 12 2 -1. + <_> + 6 3 12 1 2. + 1 + <_> + + <_> + 13 6 4 7 -1. + <_> + 14 7 2 7 2. + 1 + <_> + + <_> + 7 3 13 2 -1. + <_> + 7 3 13 1 2. + 1 + <_> + + <_> + 5 14 17 4 -1. + <_> + 5 15 17 2 2. + <_> + + <_> + 0 13 18 3 -1. + <_> + 0 14 18 1 3. + <_> + + <_> + 6 13 14 3 -1. + <_> + 6 14 14 1 3. + <_> + + <_> + 2 13 14 3 -1. + <_> + 2 14 14 1 3. + <_> + + <_> + 5 13 12 2 -1. + <_> + 5 14 12 1 2. + <_> + + <_> + 0 5 4 8 -1. + <_> + 0 9 4 4 2. + <_> + + <_> + 15 7 6 8 -1. + <_> + 18 7 3 4 2. + <_> + 15 11 3 4 2. + <_> + + <_> + 9 2 4 7 -1. + <_> + 11 2 2 7 2. + <_> + + <_> + 8 4 14 3 -1. + <_> + 8 5 14 1 3. + <_> + + <_> + 0 4 12 3 -1. + <_> + 0 5 12 1 3. + <_> + + <_> + 13 2 4 9 -1. + <_> + 13 5 4 3 3. + <_> + + <_> + 5 2 4 9 -1. + <_> + 5 5 4 3 3. + <_> + + <_> + 12 6 6 4 -1. + <_> + 12 8 6 2 2. + <_> + + <_> + 5 5 12 3 -1. + <_> + 11 5 6 3 2. + <_> + + <_> + 7 1 8 12 -1. + <_> + 7 4 8 6 2. + <_> + + <_> + 9 3 6 7 -1. + <_> + 11 5 2 7 3. + 1 + <_> + + <_> + 12 1 9 6 -1. + <_> + 10 3 9 2 3. + 1 + <_> + + <_> + 11 7 8 3 -1. + <_> + 11 7 4 3 2. + 1 + <_> + + <_> + 14 1 2 9 -1. + <_> + 14 1 1 9 2. + 1 + <_> + + <_> + 1 7 6 8 -1. + <_> + 1 7 3 4 2. + <_> + 4 11 3 4 2. + <_> + + <_> + 11 0 4 6 -1. + <_> + 11 0 2 6 2. + <_> + + <_> + 7 0 4 6 -1. + <_> + 9 0 2 6 2. + <_> + + <_> + 0 7 22 4 -1. + <_> + 11 7 11 2 2. + <_> + 0 9 11 2 2. + <_> + + <_> + 3 5 4 8 -1. + <_> + 3 9 4 4 2. + <_> + + <_> + 5 4 12 3 -1. + <_> + 9 4 4 3 3. + <_> + + <_> + 10 2 12 3 -1. + <_> + 10 2 6 3 2. + 1 + <_> + + <_> + 5 2 6 16 -1. + <_> + 5 10 6 8 2. + <_> + + <_> + 12 6 8 4 -1. + <_> + 12 6 8 2 2. + 1 + <_> + + <_> + 3 12 6 6 -1. + <_> + 5 12 2 6 3. + <_> + + <_> + 12 1 3 12 -1. + <_> + 12 1 3 6 2. + 1 + <_> + + <_> + 10 1 12 3 -1. + <_> + 10 1 6 3 2. + 1 + <_> + + <_> + 4 8 16 4 -1. + <_> + 8 8 8 4 2. + <_> + + <_> + 6 10 4 6 -1. + <_> + 8 10 2 6 2. + <_> + + <_> + 7 14 9 4 -1. + <_> + 10 14 3 4 3. + <_> + + <_> + 8 10 4 7 -1. + <_> + 10 10 2 7 2. + <_> + + <_> + 12 12 4 6 -1. + <_> + 12 12 2 6 2. + <_> + + <_> + 6 12 4 6 -1. + <_> + 8 12 2 6 2. + <_> + + <_> + 9 12 4 6 -1. + <_> + 9 15 4 3 2. + <_> + + <_> + 5 12 6 6 -1. + <_> + 7 12 2 6 3. + <_> + + <_> + 6 2 11 16 -1. + <_> + 6 6 11 8 2. + <_> + + <_> + 11 2 6 2 -1. + <_> + 11 2 6 1 2. + 1 + <_> + + <_> + 10 1 6 8 -1. + <_> + 13 1 3 4 2. + <_> + 10 5 3 4 2. + <_> + + <_> + 5 2 12 2 -1. + <_> + 11 2 6 2 2. + <_> + + <_> + 10 13 8 3 -1. + <_> + 10 13 4 3 2. + <_> + + <_> + 5 0 12 6 -1. + <_> + 11 0 6 6 2. + <_> + + <_> + 10 7 12 3 -1. + <_> + 10 8 12 1 3. + <_> + + <_> + 0 7 12 3 -1. + <_> + 0 8 12 1 3. + <_> + + <_> + 20 0 2 18 -1. + <_> + 20 9 2 9 2. + <_> + + <_> + 0 0 2 18 -1. + <_> + 0 9 2 9 2. + <_> + + <_> + 14 6 6 12 -1. + <_> + 17 6 3 6 2. + <_> + 14 12 3 6 2. + <_> + + <_> + 1 5 6 10 -1. + <_> + 1 10 6 5 2. + <_> + + <_> + 16 1 4 12 -1. + <_> + 16 5 4 4 3. + <_> + + <_> + 2 1 4 12 -1. + <_> + 2 5 4 4 3. + <_> + + <_> + 3 12 16 4 -1. + <_> + 11 12 8 2 2. + <_> + 3 14 8 2 2. + <_> + + <_> + 0 2 12 2 -1. + <_> + 0 3 12 1 2. + <_> + + <_> + 6 2 13 3 -1. + <_> + 6 3 13 1 3. + <_> + + <_> + 1 0 10 6 -1. + <_> + 1 0 5 3 2. + <_> + 6 3 5 3 2. + <_> + + <_> + 9 11 12 5 -1. + <_> + 13 11 4 5 3. + <_> + + <_> + 2 6 6 12 -1. + <_> + 2 6 3 6 2. + <_> + 5 12 3 6 2. + <_> + + <_> + 9 12 8 6 -1. + <_> + 13 12 4 3 2. + <_> + 9 15 4 3 2. + <_> + + <_> + 1 7 6 8 -1. + <_> + 1 7 3 4 2. + <_> + 4 11 3 4 2. + <_> + + <_> + 14 6 3 8 -1. + <_> + 15 7 1 8 3. + 1 + <_> + + <_> + 2 14 12 4 -1. + <_> + 6 14 4 4 3. + <_> + + <_> + 14 4 2 11 -1. + <_> + 14 4 1 11 2. + 1 + <_> + + <_> + 8 6 8 3 -1. + <_> + 7 7 8 1 3. + 1 + <_> + + <_> + 6 12 12 3 -1. + <_> + 6 13 12 1 3. + <_> + + <_> + 2 3 18 3 -1. + <_> + 2 4 18 1 3. + <_> + + <_> + 11 6 9 9 -1. + <_> + 14 6 3 9 3. + <_> + + <_> + 3 13 11 4 -1. + <_> + 3 15 11 2 2. + <_> + + <_> + 17 5 4 6 -1. + <_> + 17 5 2 6 2. + <_> + + <_> + 1 5 4 6 -1. + <_> + 3 5 2 6 2. + <_> + + <_> + 6 0 16 3 -1. + <_> + 10 0 8 3 2. + <_> + + <_> + 8 6 3 12 -1. + <_> + 9 6 1 12 3. + <_> + + <_> + 14 2 2 8 -1. + <_> + 14 2 1 8 2. + 1 + <_> + + <_> + 9 0 12 3 -1. + <_> + 9 0 6 3 2. + 1 + <_> + + <_> + 6 0 16 3 -1. + <_> + 10 0 8 3 2. + <_> + + <_> + 0 0 16 3 -1. + <_> + 4 0 8 3 2. + <_> + + <_> + 8 12 14 3 -1. + <_> + 8 13 14 1 3. + <_> + + <_> + 8 4 11 2 -1. + <_> + 8 4 11 1 2. + 1 + <_> + + <_> + 2 5 20 13 -1. + <_> + 2 5 10 13 2. + <_> + + <_> + 0 2 18 9 -1. + <_> + 6 5 6 3 9. + <_> + + <_> + 10 13 12 3 -1. + <_> + 10 14 12 1 3. + <_> + + <_> + 8 11 6 7 -1. + <_> + 10 11 2 7 3. + <_> + + <_> + 5 6 12 11 -1. + <_> + 9 6 4 11 3. + <_> + + <_> + 3 6 6 6 -1. + <_> + 5 6 2 6 3. + <_> + + <_> + 13 4 6 13 -1. + <_> + 15 4 2 13 3. + <_> + + <_> + 3 4 6 13 -1. + <_> + 5 4 2 13 3. + <_> + + <_> + 5 10 12 3 -1. + <_> + 9 10 4 3 3. + <_> + + <_> + 5 8 12 6 -1. + <_> + 8 8 6 6 2. + <_> + + <_> + 14 2 2 8 -1. + <_> + 14 2 1 8 2. + 1 + <_> + + <_> + 8 2 8 2 -1. + <_> + 8 2 8 1 2. + 1 + <_> + + <_> + 8 6 9 5 -1. + <_> + 11 6 3 5 3. + <_> + + <_> + 0 3 14 4 -1. + <_> + 0 3 7 2 2. + <_> + 7 5 7 2 2. + <_> + + <_> + 12 1 3 8 -1. + <_> + 13 2 1 8 3. + 1 + <_> + + <_> + 10 1 8 3 -1. + <_> + 9 2 8 1 3. + 1 + <_> + + <_> + 14 3 6 6 -1. + <_> + 14 5 6 2 3. + <_> + + <_> + 4 1 6 10 -1. + <_> + 4 1 3 5 2. + <_> + 7 6 3 5 2. + <_> + + <_> + 18 1 3 13 -1. + <_> + 19 1 1 13 3. + <_> + + <_> + 1 1 3 13 -1. + <_> + 2 1 1 13 3. + <_> + + <_> + 11 1 2 8 -1. + <_> + 11 1 1 8 2. + 1 + <_> + + <_> + 11 1 8 2 -1. + <_> + 11 1 8 1 2. + 1 + <_> + + <_> + 8 4 6 6 -1. + <_> + 8 6 6 2 3. + <_> + + <_> + 5 4 7 6 -1. + <_> + 5 6 7 2 3. + <_> + + <_> + 9 11 13 3 -1. + <_> + 9 12 13 1 3. + <_> + + <_> + 0 11 13 3 -1. + <_> + 0 12 13 1 3. + <_> + + <_> + 12 10 9 8 -1. + <_> + 12 14 9 4 2. + <_> + + <_> + 1 10 9 8 -1. + <_> + 1 14 9 4 2. + <_> + + <_> + 4 10 18 8 -1. + <_> + 13 10 9 4 2. + <_> + 4 14 9 4 2. + <_> + + <_> + 0 10 18 8 -1. + <_> + 0 10 9 4 2. + <_> + 9 14 9 4 2. + <_> + + <_> + 12 2 4 12 -1. + <_> + 12 2 2 12 2. + 1 + <_> + + <_> + 0 5 20 13 -1. + <_> + 10 5 10 13 2. + <_> + + <_> + 10 6 9 6 -1. + <_> + 10 8 9 2 3. + <_> + + <_> + 3 6 9 6 -1. + <_> + 3 8 9 2 3. + <_> + + <_> + 7 4 15 8 -1. + <_> + 7 6 15 4 2. + <_> + + <_> + 9 2 12 2 -1. + <_> + 9 2 12 1 2. + 1 + <_> + + <_> + 12 6 6 4 -1. + <_> + 12 6 6 2 2. + 1 + <_> + + <_> + 7 0 13 3 -1. + <_> + 6 1 13 1 3. + 1 + <_> + + <_> + 3 0 18 2 -1. + <_> + 3 0 9 2 2. + <_> + + <_> + 4 5 13 12 -1. + <_> + 4 9 13 4 3. + <_> + + <_> + 4 6 18 9 -1. + <_> + 10 9 6 3 9. + <_> + + <_> + 8 5 6 11 -1. + <_> + 10 5 2 11 3. + <_> + + <_> + 6 2 16 16 -1. + <_> + 6 6 16 8 2. + <_> + + <_> + 0 2 16 16 -1. + <_> + 0 6 16 8 2. + <_> + + <_> + 18 1 2 12 -1. + <_> + 18 7 2 6 2. + <_> + + <_> + 2 1 2 12 -1. + <_> + 2 7 2 6 2. + <_> + + <_> + 8 3 14 9 -1. + <_> + 8 6 14 3 3. + <_> + + <_> + 0 3 14 9 -1. + <_> + 0 6 14 3 3. + <_> + + <_> + 10 6 4 9 -1. + <_> + 10 9 4 3 3. + <_> + + <_> + 0 6 3 12 -1. + <_> + 0 12 3 6 2. + <_> + + <_> + 16 2 6 9 -1. + <_> + 13 5 6 3 3. + 1 + <_> + + <_> + 10 0 12 4 -1. + <_> + 9 1 12 2 2. + 1 + <_> + + <_> + 11 0 10 18 -1. + <_> + 16 0 5 9 2. + <_> + 11 9 5 9 2. + <_> + + <_> + 1 0 10 18 -1. + <_> + 1 0 5 9 2. + <_> + 6 9 5 9 2. + <_> + + <_> + 7 12 14 3 -1. + <_> + 7 12 7 3 2. + <_> + + <_> + 7 11 8 3 -1. + <_> + 11 11 4 3 2. + <_> + + <_> + 2 13 18 4 -1. + <_> + 2 13 9 4 2. + <_> + + <_> + 10 6 4 6 -1. + <_> + 10 6 2 6 2. + 1 + <_> + + <_> + 8 9 6 9 -1. + <_> + 10 9 2 9 3. + <_> + + <_> + 3 11 13 3 -1. + <_> + 3 12 13 1 3. + <_> + + <_> + 18 10 4 6 -1. + <_> + 18 10 2 6 2. + <_> + + <_> + 5 5 9 5 -1. + <_> + 8 5 3 5 3. + <_> + + <_> + 13 0 2 14 -1. + <_> + 13 0 1 14 2. + <_> + + <_> + 2 0 18 7 -1. + <_> + 8 0 6 7 3. + <_> + + <_> + 13 4 6 8 -1. + <_> + 16 4 3 4 2. + <_> + 13 8 3 4 2. + <_> + + <_> + 3 4 6 8 -1. + <_> + 3 4 3 4 2. + <_> + 6 8 3 4 2. + <_> + + <_> + 8 5 12 2 -1. + <_> + 8 6 12 1 2. + <_> + + <_> + 7 0 3 12 -1. + <_> + 8 0 1 12 3. + <_> + + <_> + 15 0 3 10 -1. + <_> + 16 1 1 10 3. + 1 + <_> + + <_> + 2 4 12 12 -1. + <_> + 6 8 4 4 9. + <_> + + <_> + 5 10 13 3 -1. + <_> + 5 11 13 1 3. + <_> + + <_> + 5 15 12 2 -1. + <_> + 5 16 12 1 2. + <_> + + <_> + 17 8 5 6 -1. + <_> + 17 11 5 3 2. + <_> + + <_> + 5 12 6 6 -1. + <_> + 5 14 6 2 3. + <_> + + <_> + 10 6 4 7 -1. + <_> + 10 6 2 7 2. + 1 + <_> + + <_> + 12 3 4 10 -1. + <_> + 13 4 2 10 2. + 1 + <_> + + <_> + 10 3 10 4 -1. + <_> + 9 4 10 2 2. + 1 + <_> + + <_> + 12 4 2 12 -1. + <_> + 12 4 1 12 2. + 1 + <_> + + <_> + 1 11 15 3 -1. + <_> + 6 11 5 3 3. + <_> + + <_> + 11 6 6 9 -1. + <_> + 13 6 2 9 3. + <_> + + <_> + 5 6 6 9 -1. + <_> + 7 6 2 9 3. + <_> + + <_> + 8 5 6 6 -1. + <_> + 10 5 2 6 3. + <_> + + <_> + 1 2 6 8 -1. + <_> + 1 2 3 4 2. + <_> + 4 6 3 4 2. + <_> + + <_> + 14 0 4 9 -1. + <_> + 14 3 4 3 3. + <_> + + <_> + 0 0 18 9 -1. + <_> + 0 3 18 3 3. + <_> + + <_> + 9 5 5 12 -1. + <_> + 9 8 5 6 2. + <_> + + <_> + 3 5 16 3 -1. + <_> + 3 6 16 1 3. + <_> + + <_> + 16 2 6 8 -1. + <_> + 19 2 3 4 2. + <_> + 16 6 3 4 2. + <_> + + <_> + 0 2 6 8 -1. + <_> + 0 2 3 4 2. + <_> + 3 6 3 4 2. + <_> + + <_> + 5 2 12 16 -1. + <_> + 5 10 12 8 2. + <_> + + <_> + 5 11 8 6 -1. + <_> + 5 11 4 3 2. + <_> + 9 14 4 3 2. + <_> + + <_> + 8 2 6 8 -1. + <_> + 11 2 3 4 2. + <_> + 8 6 3 4 2. + <_> + + <_> + 0 6 7 12 -1. + <_> + 0 10 7 4 3. + <_> + + <_> + 16 8 6 8 -1. + <_> + 16 10 6 4 2. + <_> + + <_> + 0 8 6 8 -1. + <_> + 0 10 6 4 2. + <_> + + <_> + 4 0 17 3 -1. + <_> + 4 1 17 1 3. + <_> + + <_> + 7 4 4 14 -1. + <_> + 8 4 2 14 2. + <_> + + <_> + 9 5 5 12 -1. + <_> + 9 8 5 6 2. + <_> + + <_> + 10 4 10 4 -1. + <_> + 9 5 10 2 2. + 1 + <_> + + <_> + 13 1 3 13 -1. + <_> + 14 2 1 13 3. + 1 + <_> + + <_> + 9 1 13 3 -1. + <_> + 8 2 13 1 3. + 1 + <_> + + <_> + 4 16 14 2 -1. + <_> + 4 17 14 1 2. + <_> + + <_> + 0 16 15 2 -1. + <_> + 0 17 15 1 2. + <_> + + <_> + 11 4 2 6 -1. + <_> + 11 4 1 6 2. + 1 + <_> + + <_> + 0 6 4 9 -1. + <_> + 0 9 4 3 3. + <_> + + <_> + 14 0 7 6 -1. + <_> + 12 2 7 2 3. + 1 + <_> + + <_> + 8 4 6 10 -1. + <_> + 8 4 3 5 2. + <_> + 11 9 3 5 2. + <_> + + <_> + 7 7 8 10 -1. + <_> + 11 7 4 5 2. + <_> + 7 12 4 5 2. + <_> + + <_> + 5 6 12 8 -1. + <_> + 5 6 6 4 2. + <_> + 11 10 6 4 2. + <_> + + <_> + 8 6 8 8 -1. + <_> + 12 6 4 4 2. + <_> + 8 10 4 4 2. + <_> + + <_> + 6 6 8 8 -1. + <_> + 6 6 4 4 2. + <_> + 10 10 4 4 2. + <_> + + <_> + 12 4 6 6 -1. + <_> + 10 6 6 2 3. + 1 + <_> + + <_> + 5 7 10 8 -1. + <_> + 5 7 5 4 2. + <_> + 10 11 5 4 2. + <_> + + <_> + 4 5 18 3 -1. + <_> + 4 6 18 1 3. + <_> + + <_> + 3 16 15 2 -1. + <_> + 3 17 15 1 2. + <_> + + <_> + 3 10 16 2 -1. + <_> + 3 11 16 1 2. + <_> + + <_> + 3 12 6 6 -1. + <_> + 5 12 2 6 3. + <_> + + <_> + 18 2 3 13 -1. + <_> + 19 2 1 13 3. + <_> + + <_> + 4 10 12 4 -1. + <_> + 8 10 4 4 3. + <_> + + <_> + 7 7 14 7 -1. + <_> + 7 7 7 7 2. + <_> + + <_> + 1 7 14 7 -1. + <_> + 8 7 7 7 2. + <_> + + <_> + 11 0 8 13 -1. + <_> + 11 0 4 13 2. + <_> + + <_> + 0 6 4 12 -1. + <_> + 0 6 2 6 2. + <_> + 2 12 2 6 2. + <_> + + <_> + 14 2 2 12 -1. + <_> + 14 2 1 12 2. + 1 + <_> + + <_> + 2 2 8 12 -1. + <_> + 2 2 4 6 2. + <_> + 6 8 4 6 2. + <_> + + <_> + 17 0 4 16 -1. + <_> + 17 8 4 8 2. + <_> + + <_> + 1 0 4 16 -1. + <_> + 1 8 4 8 2. + <_> + + <_> + 6 1 16 16 -1. + <_> + 6 9 16 8 2. + <_> + + <_> + 8 0 6 7 -1. + <_> + 10 2 2 7 3. + 1 + <_> + + <_> + 15 1 6 6 -1. + <_> + 13 3 6 2 3. + 1 + <_> + + <_> + 7 1 6 6 -1. + <_> + 9 3 2 6 3. + 1 + <_> + + <_> + 14 2 2 12 -1. + <_> + 14 2 1 12 2. + 1 + <_> + + <_> + 5 11 12 6 -1. + <_> + 5 14 12 3 2. + <_> + + <_> + 5 13 12 4 -1. + <_> + 5 14 12 2 2. + <_> + + <_> + 2 15 18 2 -1. + <_> + 2 16 18 1 2. + <_> + + <_> + 18 4 4 14 -1. + <_> + 20 4 2 7 2. + <_> + 18 11 2 7 2. + <_> + + <_> + 0 4 4 14 -1. + <_> + 0 4 2 7 2. + <_> + 2 11 2 7 2. + <_> + + <_> + 11 0 3 12 -1. + <_> + 12 0 1 12 3. + <_> + + <_> + 9 3 4 6 -1. + <_> + 9 6 4 3 2. + <_> + + <_> + 7 4 15 10 -1. + <_> + 7 9 15 5 2. + <_> + + <_> + 4 2 9 12 -1. + <_> + 4 6 9 4 3. + <_> + + <_> + 3 1 17 3 -1. + <_> + 3 2 17 1 3. + <_> + + <_> + 0 1 16 3 -1. + <_> + 0 2 16 1 3. + <_> + + <_> + 7 4 15 10 -1. + <_> + 7 9 15 5 2. + <_> + + <_> + 0 4 15 10 -1. + <_> + 0 9 15 5 2. + <_> + + <_> + 15 0 6 18 -1. + <_> + 15 9 6 9 2. + <_> + + <_> + 3 14 12 4 -1. + <_> + 3 14 6 2 2. + <_> + 9 16 6 2 2. + <_> + + <_> + 13 0 9 5 -1. + <_> + 16 3 3 5 3. + 1 + <_> + + <_> + 9 7 9 2 -1. + <_> + 9 7 9 1 2. + 1 + <_> + + <_> + 12 6 3 7 -1. + <_> + 13 7 1 7 3. + 1 + <_> + + <_> + 3 4 8 8 -1. + <_> + 7 4 4 8 2. + <_> + + <_> + 7 8 12 3 -1. + <_> + 11 8 4 3 3. + <_> + + <_> + 8 6 5 6 -1. + <_> + 8 6 5 3 2. + 1 + <_> + + <_> + 10 7 10 6 -1. + <_> + 10 10 10 3 2. + <_> + + <_> + 0 9 16 3 -1. + <_> + 0 10 16 1 3. + <_> + + <_> + 7 9 12 3 -1. + <_> + 7 10 12 1 3. + <_> + + <_> + 2 10 8 6 -1. + <_> + 2 13 8 3 2. + <_> + + <_> + 16 6 4 12 -1. + <_> + 16 9 4 6 2. + <_> + + <_> + 3 11 8 6 -1. + <_> + 3 11 4 3 2. + <_> + 7 14 4 3 2. + <_> + + <_> + 4 5 16 10 -1. + <_> + 12 5 8 5 2. + <_> + 4 10 8 5 2. + <_> + + <_> + 7 10 3 8 -1. + <_> + 7 14 3 4 2. + <_> + + <_> + 9 14 6 4 -1. + <_> + 9 16 6 2 2. + <_> + + <_> + 2 9 15 9 -1. + <_> + 2 12 15 3 3. + <_> + + <_> + 11 2 8 6 -1. + <_> + 15 2 4 3 2. + <_> + 11 5 4 3 2. + <_> + + <_> + 4 11 8 6 -1. + <_> + 4 13 8 2 3. + <_> + + <_> + 16 0 2 14 -1. + <_> + 16 0 1 14 2. + 1 + <_> + + <_> + 6 0 14 2 -1. + <_> + 6 0 14 1 2. + 1 + <_> + + <_> + 13 9 7 6 -1. + <_> + 13 11 7 2 3. + <_> + + <_> + 10 6 7 3 -1. + <_> + 9 7 7 1 3. + 1 + <_> + + <_> + 18 2 3 13 -1. + <_> + 19 2 1 13 3. + <_> + + <_> + 1 2 3 13 -1. + <_> + 2 2 1 13 3. + <_> + + <_> + 5 1 12 4 -1. + <_> + 11 1 6 2 2. + <_> + 5 3 6 2 2. + <_> + + <_> + 7 8 6 6 -1. + <_> + 7 10 6 2 3. + <_> + + <_> + 8 13 14 3 -1. + <_> + 8 14 14 1 3. + <_> + + <_> + 10 5 6 6 -1. + <_> + 12 7 2 6 3. + 1 + <_> + + <_> + 15 6 4 8 -1. + <_> + 16 7 2 8 2. + 1 + <_> + + <_> + 0 13 14 4 -1. + <_> + 0 13 7 2 2. + <_> + 7 15 7 2 2. + <_> + + <_> + 1 7 21 6 -1. + <_> + 8 9 7 2 9. + <_> + + <_> + 7 4 6 8 -1. + <_> + 7 4 3 4 2. + <_> + 10 8 3 4 2. + <_> + + <_> + 7 4 8 8 -1. + <_> + 11 4 4 4 2. + <_> + 7 8 4 4 2. + <_> + + <_> + 10 6 7 4 -1. + <_> + 9 7 7 2 2. + 1 + <_> + + <_> + 11 2 6 7 -1. + <_> + 11 2 3 7 2. + 1 + <_> + + <_> + 11 2 7 6 -1. + <_> + 11 2 7 3 2. + 1 + <_> + + <_> + 11 4 8 6 -1. + <_> + 11 4 4 6 2. + 1 + <_> + + <_> + 11 4 6 8 -1. + <_> + 11 4 6 4 2. + 1 + <_> + + <_> + 12 3 8 5 -1. + <_> + 12 3 4 5 2. + 1 + <_> + + <_> + 10 3 5 8 -1. + <_> + 10 3 5 4 2. + 1 + <_> + + <_> + 13 0 9 5 -1. + <_> + 16 3 3 5 3. + 1 + <_> + + <_> + 2 6 10 12 -1. + <_> + 2 9 10 6 2. + <_> + + <_> + 15 6 5 12 -1. + <_> + 15 9 5 6 2. + <_> + + <_> + 3 7 13 3 -1. + <_> + 3 8 13 1 3. + <_> + + <_> + 4 7 17 3 -1. + <_> + 4 8 17 1 3. + <_> + + <_> + 2 9 7 6 -1. + <_> + 2 11 7 2 3. + <_> + + <_> + 13 9 9 4 -1. + <_> + 13 11 9 2 2. + <_> + + <_> + 9 0 5 9 -1. + <_> + 6 3 5 3 3. + 1 + <_> + + <_> + 9 3 8 3 -1. + <_> + 9 3 4 3 2. + <_> + + <_> + 3 0 4 13 -1. + <_> + 4 0 2 13 2. + <_> + + <_> + 13 0 8 6 -1. + <_> + 15 0 4 6 2. + <_> + + <_> + 3 0 6 5 -1. + <_> + 6 0 3 5 2. + <_> + + <_> + 9 0 12 5 -1. + <_> + 9 0 6 5 2. + <_> + + <_> + 1 2 6 8 -1. + <_> + 3 2 2 8 3. + <_> + + <_> + 18 2 4 6 -1. + <_> + 18 2 2 6 2. + <_> + + <_> + 0 2 4 6 -1. + <_> + 2 2 2 6 2. + <_> + + <_> + 16 9 6 6 -1. + <_> + 16 11 6 2 3. + <_> + + <_> + 10 0 12 6 -1. + <_> + 13 3 6 6 2. + 1 + <_> + + <_> + 14 2 3 12 -1. + <_> + 10 6 3 4 3. + 1 + <_> + + <_> + 8 3 6 7 -1. + <_> + 11 3 3 7 2. + <_> + + <_> + 16 1 3 15 -1. + <_> + 17 1 1 15 3. + <_> + + <_> + 0 1 6 8 -1. + <_> + 2 1 2 8 3. + <_> + + <_> + 13 0 3 14 -1. + <_> + 14 0 1 14 3. + <_> + + <_> + 6 0 3 14 -1. + <_> + 7 0 1 14 3. + <_> + + <_> + 4 13 18 2 -1. + <_> + 4 13 9 2 2. + <_> + + <_> + 2 9 15 3 -1. + <_> + 7 9 5 3 3. + <_> + + <_> + 9 5 10 6 -1. + <_> + 14 5 5 3 2. + <_> + 9 8 5 3 2. + <_> + + <_> + 3 5 10 6 -1. + <_> + 3 5 5 3 2. + <_> + 8 8 5 3 2. + <_> + + <_> + 14 3 2 12 -1. + <_> + 14 3 1 12 2. + 1 + <_> + + <_> + 8 3 12 2 -1. + <_> + 8 3 12 1 2. + 1 + <_> + + <_> + 12 7 6 6 -1. + <_> + 14 7 2 6 3. + <_> + + <_> + 4 7 6 6 -1. + <_> + 6 7 2 6 3. + <_> + + <_> + 7 0 8 3 -1. + <_> + 7 0 4 3 2. + <_> + + <_> + 9 0 4 6 -1. + <_> + 11 0 2 6 2. + <_> + + <_> + 10 0 12 12 -1. + <_> + 13 0 6 12 2. + <_> + + <_> + 0 0 12 12 -1. + <_> + 3 0 6 12 2. + <_> + + <_> + 16 5 6 4 -1. + <_> + 16 5 3 4 2. + <_> + + <_> + 0 5 6 4 -1. + <_> + 3 5 3 4 2. + <_> + + <_> + 9 0 12 5 -1. + <_> + 9 0 6 5 2. + <_> + + <_> + 1 8 8 10 -1. + <_> + 1 8 4 5 2. + <_> + 5 13 4 5 2. + <_> + + <_> + 8 16 14 2 -1. + <_> + 8 16 7 2 2. + <_> + + <_> + 0 11 16 3 -1. + <_> + 8 11 8 3 2. + <_> + + <_> + 10 16 12 2 -1. + <_> + 10 16 6 2 2. + <_> + + <_> + 0 16 12 2 -1. + <_> + 6 16 6 2 2. + <_> + + <_> + 3 11 18 6 -1. + <_> + 12 11 9 3 2. + <_> + 3 14 9 3 2. + <_> + + <_> + 7 13 6 4 -1. + <_> + 7 15 6 2 2. + <_> + + <_> + 10 11 6 6 -1. + <_> + 10 13 6 2 3. + <_> + + <_> + 6 14 9 4 -1. + <_> + 9 14 3 4 3. + <_> + + <_> + 5 4 16 10 -1. + <_> + 5 9 16 5 2. + <_> + + <_> + 11 7 3 8 -1. + <_> + 11 7 3 4 2. + 1 + <_> + + <_> + 13 10 6 6 -1. + <_> + 13 12 6 2 3. + <_> + + <_> + 0 6 22 12 -1. + <_> + 0 6 11 6 2. + <_> + 11 12 11 6 2. + <_> + + <_> + 9 5 6 12 -1. + <_> + 12 5 3 6 2. + <_> + 9 11 3 6 2. + <_> + + <_> + 7 5 6 12 -1. + <_> + 7 5 3 6 2. + <_> + 10 11 3 6 2. + <_> + + <_> + 14 1 6 9 -1. + <_> + 14 4 6 3 3. + <_> + + <_> + 2 1 6 9 -1. + <_> + 2 4 6 3 3. + <_> + + <_> + 13 4 4 6 -1. + <_> + 13 7 4 3 2. + <_> + + <_> + 5 4 4 6 -1. + <_> + 5 7 4 3 2. + <_> + + <_> + 10 13 12 3 -1. + <_> + 10 14 12 1 3. + <_> + + <_> + 3 3 15 3 -1. + <_> + 3 4 15 1 3. + <_> + + <_> + 13 5 2 9 -1. + <_> + 13 5 1 9 2. + 1 + <_> + + <_> + 9 5 9 2 -1. + <_> + 9 5 9 1 2. + 1 + <_> + + <_> + 6 2 14 10 -1. + <_> + 6 2 7 10 2. + <_> + + <_> + 8 2 12 2 -1. + <_> + 8 2 12 1 2. + 1 + <_> + + <_> + 17 0 2 13 -1. + <_> + 17 0 1 13 2. + 1 + <_> + + <_> + 5 0 13 2 -1. + <_> + 5 0 13 1 2. + 1 + <_> + + <_> + 12 4 3 10 -1. + <_> + 12 4 3 5 2. + 1 + <_> + + <_> + 0 6 12 3 -1. + <_> + 0 7 12 1 3. + <_> + + <_> + 6 6 15 3 -1. + <_> + 6 7 15 1 3. + <_> + + <_> + 8 8 5 9 -1. + <_> + 8 11 5 3 3. + <_> + + <_> + 10 11 7 6 -1. + <_> + 10 13 7 2 3. + <_> + + <_> + 5 11 7 6 -1. + <_> + 5 13 7 2 3. + <_> + + <_> + 5 12 13 4 -1. + <_> + 5 13 13 2 2. + <_> + + <_> + 9 4 4 6 -1. + <_> + 9 7 4 3 2. + <_> + + <_> + 13 1 2 9 -1. + <_> + 13 1 1 9 2. + 1 + <_> + + <_> + 5 2 8 6 -1. + <_> + 5 2 4 3 2. + <_> + 9 5 4 3 2. + <_> + + <_> + 11 0 4 8 -1. + <_> + 12 1 2 8 2. + 1 + <_> + + <_> + 11 0 8 4 -1. + <_> + 10 1 8 2 2. + 1 + <_> + + <_> + 7 9 15 3 -1. + <_> + 7 10 15 1 3. + <_> + + <_> + 5 10 12 3 -1. + <_> + 5 11 12 1 3. + <_> + + <_> + 15 2 7 6 -1. + <_> + 15 4 7 2 3. + <_> + + <_> + 0 2 7 6 -1. + <_> + 0 4 7 2 3. + <_> + + <_> + 12 3 2 7 -1. + <_> + 12 3 1 7 2. + 1 + <_> + + <_> + 10 3 7 2 -1. + <_> + 10 3 7 1 2. + 1 + <_> + + <_> + 2 3 20 14 -1. + <_> + 12 3 10 7 2. + <_> + 2 10 10 7 2. + <_> + + <_> + 5 2 12 8 -1. + <_> + 11 2 6 8 2. + <_> + + <_> + 18 4 4 8 -1. + <_> + 18 8 4 4 2. + <_> + + <_> + 6 4 6 8 -1. + <_> + 6 4 3 4 2. + <_> + 9 8 3 4 2. + <_> + + <_> + 12 2 4 6 -1. + <_> + 12 2 2 6 2. + 1 + <_> + + <_> + 10 2 6 4 -1. + <_> + 10 2 6 2 2. + 1 + <_> + + <_> + 9 3 8 15 -1. + <_> + 11 3 4 15 2. + <_> + + <_> + 1 11 8 7 -1. + <_> + 3 11 4 7 2. + <_> + + <_> + 13 7 6 10 -1. + <_> + 15 7 2 10 3. + <_> + + <_> + 2 3 10 14 -1. + <_> + 7 3 5 14 2. + <_> + + <_> + 6 5 15 12 -1. + <_> + 11 5 5 12 3. + <_> + + <_> + 1 5 15 12 -1. + <_> + 6 5 5 12 3. + <_> + + <_> + 9 14 8 4 -1. + <_> + 9 16 8 2 2. + <_> + + <_> + 9 6 4 10 -1. + <_> + 11 6 2 10 2. + <_> + + <_> + 8 6 10 4 -1. + <_> + 8 8 10 2 2. + <_> + + <_> + 2 14 7 4 -1. + <_> + 2 16 7 2 2. + <_> + + <_> + 7 9 15 3 -1. + <_> + 7 10 15 1 3. + <_> + + <_> + 0 10 16 4 -1. + <_> + 0 10 8 2 2. + <_> + 8 12 8 2 2. + <_> + + <_> + 10 11 6 7 -1. + <_> + 12 11 2 7 3. + <_> + + <_> + 8 13 6 5 -1. + <_> + 11 13 3 5 2. + <_> + + <_> + 10 11 6 7 -1. + <_> + 12 11 2 7 3. + <_> + + <_> + 6 11 6 7 -1. + <_> + 8 11 2 7 3. + <_> + + <_> + 18 4 4 8 -1. + <_> + 18 8 4 4 2. + <_> + + <_> + 4 6 8 11 -1. + <_> + 8 6 4 11 2. + <_> + + <_> + 7 5 8 12 -1. + <_> + 9 5 4 12 2. + <_> + + <_> + 5 3 6 6 -1. + <_> + 7 3 2 6 3. + <_> + + <_> + 11 2 10 6 -1. + <_> + 11 2 10 3 2. + 1 + <_> + + <_> + 11 1 8 9 -1. + <_> + 11 1 4 9 2. + 1 + <_> + + <_> + 12 4 3 10 -1. + <_> + 12 4 3 5 2. + 1 + <_> + + <_> + 11 1 11 4 -1. + <_> + 11 1 11 2 2. + 1 + <_> + + <_> + 18 4 4 8 -1. + <_> + 18 8 4 4 2. + <_> + + <_> + 0 4 4 8 -1. + <_> + 0 8 4 4 2. + <_> + + <_> + 12 2 2 12 -1. + <_> + 12 2 1 12 2. + 1 + <_> + + <_> + 4 12 12 3 -1. + <_> + 4 13 12 1 3. + <_> + + <_> + 2 12 18 3 -1. + <_> + 2 13 18 1 3. + <_> + + <_> + 0 0 16 3 -1. + <_> + 0 1 16 1 3. + <_> + + <_> + 12 2 2 12 -1. + <_> + 12 2 1 12 2. + 1 + <_> + + <_> + 10 2 12 2 -1. + <_> + 10 2 12 1 2. + 1 + <_> + + <_> + 13 10 6 7 -1. + <_> + 15 10 2 7 3. + <_> + + <_> + 5 13 12 2 -1. + <_> + 11 13 6 2 2. + <_> + + <_> + 16 8 6 8 -1. + <_> + 19 8 3 4 2. + <_> + 16 12 3 4 2. + <_> + + <_> + 4 1 8 6 -1. + <_> + 4 3 8 2 3. + <_> + + <_> + 18 0 4 9 -1. + <_> + 18 3 4 3 3. + <_> + + <_> + 8 2 6 8 -1. + <_> + 8 6 6 4 2. + <_> + + <_> + 8 1 6 4 -1. + <_> + 8 3 6 2 2. + <_> + + <_> + 1 2 12 3 -1. + <_> + 1 3 12 1 3. + <_> + + <_> + 7 2 12 3 -1. + <_> + 7 3 12 1 3. + <_> + + <_> + 1 0 16 18 -1. + <_> + 1 9 16 9 2. + <_> + + <_> + 16 8 6 8 -1. + <_> + 19 8 3 4 2. + <_> + 16 12 3 4 2. + <_> + + <_> + 0 8 6 8 -1. + <_> + 0 8 3 4 2. + <_> + 3 12 3 4 2. + <_> + + <_> + 18 4 4 6 -1. + <_> + 18 7 4 3 2. + <_> + + <_> + 0 12 14 3 -1. + <_> + 0 13 14 1 3. + <_> + + <_> + 3 12 16 3 -1. + <_> + 3 13 16 1 3. + <_> + + <_> + 0 4 4 6 -1. + <_> + 0 7 4 3 2. + <_> + + <_> + 9 14 8 4 -1. + <_> + 9 16 8 2 2. + <_> + + <_> + 0 13 14 3 -1. + <_> + 0 14 14 1 3. + <_> + + <_> + 4 14 14 2 -1. + <_> + 4 15 14 1 2. + <_> + + <_> + 3 12 15 6 -1. + <_> + 3 15 15 3 2. + <_> + + <_> + 7 12 14 6 -1. + <_> + 7 15 14 3 2. + <_> + + <_> + 0 0 14 4 -1. + <_> + 0 2 14 2 2. + <_> + + <_> + 13 10 6 7 -1. + <_> + 15 10 2 7 3. + <_> + + <_> + 3 10 6 7 -1. + <_> + 5 10 2 7 3. + <_> + + <_> + 2 4 18 4 -1. + <_> + 8 4 6 4 3. + <_> + + <_> + 5 3 12 9 -1. + <_> + 9 6 4 3 9. + <_> + + <_> + 10 8 10 7 -1. + <_> + 10 8 5 7 2. + <_> + + <_> + 5 2 4 16 -1. + <_> + 5 6 4 8 2. + <_> + + <_> + 16 8 6 8 -1. + <_> + 19 8 3 4 2. + <_> + 16 12 3 4 2. + <_> + + <_> + 0 12 17 4 -1. + <_> + 0 14 17 2 2. + <_> + + <_> + 7 12 14 6 -1. + <_> + 7 15 14 3 2. + <_> + + <_> + 0 13 12 4 -1. + <_> + 0 13 6 2 2. + <_> + 6 15 6 2 2. + <_> + + <_> + 10 13 12 3 -1. + <_> + 10 14 12 1 3. + <_> + + <_> + 7 11 8 6 -1. + <_> + 7 11 4 3 2. + <_> + 11 14 4 3 2. + <_> + + <_> + 9 6 12 9 -1. + <_> + 12 6 6 9 2. + <_> + + <_> + 1 6 12 8 -1. + <_> + 4 6 6 8 2. + <_> + + <_> + 8 12 6 6 -1. + <_> + 8 14 6 2 3. + <_> + + <_> + 1 4 20 14 -1. + <_> + 1 4 10 7 2. + <_> + 11 11 10 7 2. + <_> + + <_> + 18 0 4 10 -1. + <_> + 19 1 2 10 2. + 1 + <_> + + <_> + 2 2 6 12 -1. + <_> + 2 5 6 6 2. + <_> + + <_> + 16 5 4 9 -1. + <_> + 16 8 4 3 3. + <_> + + <_> + 6 9 8 4 -1. + <_> + 10 9 4 4 2. + <_> + + <_> + 7 8 14 3 -1. + <_> + 7 8 7 3 2. + <_> + + <_> + 0 8 18 3 -1. + <_> + 9 8 9 3 2. + <_> + + <_> + 14 6 8 4 -1. + <_> + 14 6 8 2 2. + 1 + <_> + + <_> + 0 3 18 2 -1. + <_> + 9 3 9 2 2. + <_> + + <_> + 6 6 10 8 -1. + <_> + 6 8 10 4 2. + <_> + + <_> + 1 5 10 12 -1. + <_> + 1 8 10 6 2. + <_> + + <_> + 11 6 3 12 -1. + <_> + 12 6 1 12 3. + <_> + + <_> + 8 6 3 12 -1. + <_> + 9 6 1 12 3. + <_> + + <_> + 11 1 3 13 -1. + <_> + 12 1 1 13 3. + <_> + + <_> + 8 2 3 13 -1. + <_> + 9 2 1 13 3. + <_> + + <_> + 6 6 2 12 -1. + <_> + 6 12 2 6 2. + <_> + + <_> + 17 4 2 9 -1. + <_> + 17 4 1 9 2. + 1 + <_> + + <_> + 0 0 12 4 -1. + <_> + 0 1 12 2 2. + <_> + + <_> + 8 4 12 4 -1. + <_> + 14 4 6 2 2. + <_> + 8 6 6 2 2. + <_> + + <_> + 6 13 6 4 -1. + <_> + 6 15 6 2 2. + <_> + + <_> + 7 13 12 4 -1. + <_> + 7 15 12 2 2. + <_> + + <_> + 1 8 6 4 -1. + <_> + 4 8 3 4 2. + <_> + + <_> + 15 8 6 10 -1. + <_> + 15 8 3 10 2. + <_> + + <_> + 1 8 6 10 -1. + <_> + 4 8 3 10 2. + <_> + + <_> + 16 12 6 4 -1. + <_> + 16 12 3 4 2. + <_> + + <_> + 1 6 6 8 -1. + <_> + 1 6 3 4 2. + <_> + 4 10 3 4 2. + <_> + + <_> + 11 1 4 11 -1. + <_> + 12 2 2 11 2. + 1 + <_> + + <_> + 11 1 11 4 -1. + <_> + 10 2 11 2 2. + 1 + <_> + + <_> + 12 0 4 7 -1. + <_> + 13 1 2 7 2. + 1 + <_> + + <_> + 10 0 7 4 -1. + <_> + 9 1 7 2 2. + 1 + <_> + + <_> + 13 5 2 12 -1. + <_> + 13 5 1 12 2. + <_> + + <_> + 7 5 2 12 -1. + <_> + 8 5 1 12 2. + <_> + + <_> + 8 5 9 4 -1. + <_> + 11 5 3 4 3. + <_> + + <_> + 7 0 10 3 -1. + <_> + 6 1 10 1 3. + 1 + <_> + + <_> + 17 4 2 9 -1. + <_> + 17 4 1 9 2. + 1 + <_> + + <_> + 5 4 9 2 -1. + <_> + 5 4 9 1 2. + 1 + <_> + + <_> + 12 10 4 8 -1. + <_> + 12 10 2 8 2. + <_> + + <_> + 2 0 12 4 -1. + <_> + 2 0 6 2 2. + <_> + 8 2 6 2 2. + <_> + + <_> + 7 7 15 3 -1. + <_> + 7 8 15 1 3. + <_> + + <_> + 2 0 12 4 -1. + <_> + 2 0 6 2 2. + <_> + 8 2 6 2 2. + <_> + + <_> + 10 14 6 4 -1. + <_> + 10 14 3 4 2. + <_> + + <_> + 0 8 17 3 -1. + <_> + 0 9 17 1 3. + <_> + + <_> + 6 13 10 5 -1. + <_> + 6 13 5 5 2. + <_> + + <_> + 5 11 8 5 -1. + <_> + 9 11 4 5 2. + <_> + + <_> + 14 8 4 6 -1. + <_> + 14 8 2 6 2. + <_> + + <_> + 0 10 5 8 -1. + <_> + 0 14 5 4 2. + <_> + + <_> + 7 7 15 3 -1. + <_> + 7 8 15 1 3. + <_> + + <_> + 2 11 7 4 -1. + <_> + 2 13 7 2 2. + <_> + + <_> + 8 3 11 12 -1. + <_> + 8 6 11 6 2. + <_> + + <_> + 2 4 12 4 -1. + <_> + 2 4 6 2 2. + <_> + 8 6 6 2 2. + <_> + + <_> + 19 2 3 12 -1. + <_> + 20 3 1 12 3. + 1 + <_> + + <_> + 1 6 12 4 -1. + <_> + 1 6 6 2 2. + <_> + 7 8 6 2 2. + <_> + + <_> + 9 9 13 3 -1. + <_> + 9 10 13 1 3. + <_> + + <_> + 0 5 12 6 -1. + <_> + 0 5 6 3 2. + <_> + 6 8 6 3 2. + <_> + + <_> + 11 0 3 13 -1. + <_> + 12 0 1 13 3. + <_> + + <_> + 8 0 3 13 -1. + <_> + 9 0 1 13 3. + <_> + + <_> + 14 6 8 8 -1. + <_> + 14 10 8 4 2. + <_> + + <_> + 0 8 8 6 -1. + <_> + 0 10 8 2 3. + <_> + + <_> + 9 9 13 3 -1. + <_> + 9 10 13 1 3. + <_> + + <_> + 0 9 13 3 -1. + <_> + 0 10 13 1 3. + <_> + + <_> + 4 14 14 4 -1. + <_> + 11 14 7 2 2. + <_> + 4 16 7 2 2. + <_> + + <_> + 0 3 6 6 -1. + <_> + 2 3 2 6 3. + <_> + + <_> + 2 6 20 4 -1. + <_> + 7 6 10 4 2. + <_> + + <_> + 2 7 6 6 -1. + <_> + 4 7 2 6 3. + <_> + + <_> + 15 8 6 10 -1. + <_> + 17 8 2 10 3. + <_> + + <_> + 1 8 6 10 -1. + <_> + 3 8 2 10 3. + <_> + + <_> + 9 9 13 3 -1. + <_> + 9 10 13 1 3. + <_> + + <_> + 6 8 4 6 -1. + <_> + 6 8 4 3 2. + 1 + <_> + + <_> + 16 5 6 13 -1. + <_> + 16 5 3 13 2. + <_> + + <_> + 0 5 6 13 -1. + <_> + 3 5 3 13 2. + <_> + + <_> + 4 10 18 2 -1. + <_> + 4 10 9 2 2. + <_> + + <_> + 0 7 21 7 -1. + <_> + 7 7 7 7 3. + <_> + + <_> + 5 6 12 12 -1. + <_> + 9 6 4 12 3. + <_> + + <_> + 10 4 10 3 -1. + <_> + 9 5 10 1 3. + 1 + <_> + + <_> + 9 9 9 7 -1. + <_> + 12 9 3 7 3. + <_> + + <_> + 11 5 9 4 -1. + <_> + 14 8 3 4 3. + 1 + <_> + + <_> + 12 3 3 10 -1. + <_> + 12 3 3 5 2. + 1 + <_> + + <_> + 8 3 12 2 -1. + <_> + 8 3 6 2 2. + 1 + <_> + + <_> + 14 6 4 8 -1. + <_> + 14 10 4 4 2. + <_> + + <_> + 4 6 4 8 -1. + <_> + 4 10 4 4 2. + <_> + + <_> + 6 0 11 12 -1. + <_> + 6 3 11 6 2. + <_> + + <_> + 8 0 6 6 -1. + <_> + 8 3 6 3 2. + <_> + + <_> + 10 0 10 4 -1. + <_> + 10 0 5 4 2. + <_> + + <_> + 2 0 10 4 -1. + <_> + 7 0 5 4 2. + <_> + + <_> + 10 3 8 8 -1. + <_> + 14 3 4 4 2. + <_> + 10 7 4 4 2. + <_> + + <_> + 4 3 8 8 -1. + <_> + 4 3 4 4 2. + <_> + 8 7 4 4 2. + <_> + + <_> + 2 9 18 5 -1. + <_> + 8 9 6 5 3. + <_> + + <_> + 0 15 16 3 -1. + <_> + 0 16 16 1 3. + <_> + + <_> + 6 16 12 2 -1. + <_> + 6 17 12 1 2. + <_> + + <_> + 3 0 4 8 -1. + <_> + 3 4 4 4 2. + <_> + + <_> + 15 6 6 6 -1. + <_> + 13 8 6 2 3. + 1 + <_> + + <_> + 7 6 6 6 -1. + <_> + 9 8 2 6 3. + 1 + <_> + + <_> + 13 12 6 6 -1. + <_> + 13 14 6 2 3. + <_> + + <_> + 3 12 6 6 -1. + <_> + 3 14 6 2 3. + <_> + + <_> + 8 13 14 4 -1. + <_> + 8 14 14 2 2. + <_> + + <_> + 0 13 14 4 -1. + <_> + 0 14 14 2 2. + <_> + + <_> + 3 13 17 2 -1. + <_> + 3 14 17 1 2. + <_> + + <_> + 4 6 12 4 -1. + <_> + 8 6 4 4 3. + <_> + + <_> + 8 7 9 4 -1. + <_> + 11 7 3 4 3. + <_> + + <_> + 10 0 6 8 -1. + <_> + 8 2 6 4 2. + 1 + <_> + + <_> + 9 2 12 12 -1. + <_> + 9 6 12 4 3. + <_> + + <_> + 11 0 6 3 -1. + <_> + 10 1 6 1 3. + 1 + <_> + + <_> + 13 1 3 7 -1. + <_> + 14 2 1 7 3. + 1 + <_> + + <_> + 2 3 12 9 -1. + <_> + 6 6 4 3 9. + <_> + + <_> + 19 2 3 12 -1. + <_> + 20 3 1 12 3. + 1 + <_> + + <_> + 3 5 12 5 -1. + <_> + 7 5 4 5 3. + <_> + + <_> + 13 1 3 7 -1. + <_> + 14 2 1 7 3. + 1 + <_> + + <_> + 9 1 7 3 -1. + <_> + 8 2 7 1 3. + 1 + <_> + + <_> + 9 7 8 6 -1. + <_> + 13 7 4 3 2. + <_> + 9 10 4 3 2. + <_> + + <_> + 4 14 14 4 -1. + <_> + 4 15 14 2 2. + <_> + + <_> + 10 14 6 4 -1. + <_> + 10 14 3 4 2. + <_> + + <_> + 6 14 6 4 -1. + <_> + 9 14 3 4 2. + <_> + + <_> + 14 0 4 16 -1. + <_> + 16 0 2 8 2. + <_> + 14 8 2 8 2. + <_> + + <_> + 0 15 20 3 -1. + <_> + 5 15 10 3 2. + <_> + + <_> + 16 5 3 13 -1. + <_> + 17 5 1 13 3. + <_> + + <_> + 2 6 13 8 -1. + <_> + 2 10 13 4 2. + <_> + + <_> + 16 5 3 13 -1. + <_> + 17 5 1 13 3. + <_> + + <_> + 7 12 7 4 -1. + <_> + 7 14 7 2 2. + <_> + + <_> + 15 1 4 9 -1. + <_> + 15 4 4 3 3. + <_> + + <_> + 0 4 16 2 -1. + <_> + 0 5 16 1 2. + <_> + + <_> + 8 4 12 2 -1. + <_> + 8 5 12 1 2. + <_> + + <_> + 6 3 9 15 -1. + <_> + 9 8 3 5 9. + <_> + + <_> + 12 3 3 8 -1. + <_> + 12 7 3 4 2. + <_> + + <_> + 5 6 12 4 -1. + <_> + 5 6 6 2 2. + <_> + 11 8 6 2 2. + <_> + + <_> + 16 3 3 14 -1. + <_> + 17 3 1 14 3. + <_> + + <_> + 3 3 3 14 -1. + <_> + 4 3 1 14 3. + <_> + + <_> + 0 4 22 4 -1. + <_> + 11 4 11 2 2. + <_> + 0 6 11 2 2. + <_> + + <_> + 1 4 4 9 -1. + <_> + 1 7 4 3 3. + <_> + + <_> + 7 13 12 4 -1. + <_> + 7 15 12 2 2. + <_> + + <_> + 3 13 12 4 -1. + <_> + 3 15 12 2 2. + <_> + + <_> + 11 14 6 4 -1. + <_> + 11 16 6 2 2. + <_> + + <_> + 1 0 13 3 -1. + <_> + 1 1 13 1 3. + <_> + + <_> + 11 0 6 4 -1. + <_> + 11 2 6 2 2. + <_> + + <_> + 4 14 14 4 -1. + <_> + 4 14 7 2 2. + <_> + 11 16 7 2 2. + <_> + + <_> + 6 0 12 2 -1. + <_> + 6 1 12 1 2. + <_> + + <_> + 5 0 6 4 -1. + <_> + 5 2 6 2 2. + <_> + + <_> + 11 0 3 6 -1. + <_> + 12 1 1 6 3. + 1 + <_> + + <_> + 11 0 6 3 -1. + <_> + 10 1 6 1 3. + 1 + <_> + + <_> + 7 12 8 6 -1. + <_> + 9 12 4 6 2. + <_> + + <_> + 1 1 5 10 -1. + <_> + 1 6 5 5 2. + <_> + + <_> + 13 0 2 12 -1. + <_> + 13 6 2 6 2. + <_> + + <_> + 7 0 2 12 -1. + <_> + 7 6 2 6 2. + <_> + + <_> + 12 1 8 14 -1. + <_> + 16 1 4 7 2. + <_> + 12 8 4 7 2. + <_> + + <_> + 1 0 8 10 -1. + <_> + 1 0 4 5 2. + <_> + 5 5 4 5 2. + <_> + + <_> + 6 6 16 4 -1. + <_> + 10 6 8 4 2. + <_> + + <_> + 1 14 13 2 -1. + <_> + 1 15 13 1 2. + <_> + + <_> + 2 7 20 3 -1. + <_> + 7 7 10 3 2. + <_> + + <_> + 11 2 9 4 -1. + <_> + 14 5 3 4 3. + 1 + <_> + + <_> + 6 5 13 2 -1. + <_> + 6 6 13 1 2. + <_> + + <_> + 3 0 6 15 -1. + <_> + 6 0 3 15 2. + <_> + + <_> + 3 12 8 6 -1. + <_> + 5 12 4 6 2. + <_> + + <_> + 13 1 4 7 -1. + <_> + 14 2 2 7 2. + 1 + <_> + + <_> + 9 1 7 4 -1. + <_> + 8 2 7 2 2. + 1 + <_> + + <_> + 11 11 6 4 -1. + <_> + 11 13 6 2 2. + <_> + + <_> + 0 12 8 6 -1. + <_> + 0 12 4 3 2. + <_> + 4 15 4 3 2. + <_> + + <_> + 11 11 6 4 -1. + <_> + 11 13 6 2 2. + <_> + + <_> + 2 6 6 12 -1. + <_> + 2 6 3 6 2. + <_> + 5 12 3 6 2. + <_> + + <_> + 11 11 6 4 -1. + <_> + 11 13 6 2 2. + <_> + + <_> + 5 11 9 4 -1. + <_> + 8 11 3 4 3. + <_> + + <_> + 8 13 9 5 -1. + <_> + 11 13 3 5 3. + <_> + + <_> + 3 15 8 3 -1. + <_> + 7 15 4 3 2. + <_> + + <_> + 4 12 14 6 -1. + <_> + 11 12 7 3 2. + <_> + 4 15 7 3 2. + <_> + + <_> + 2 15 8 3 -1. + <_> + 6 15 4 3 2. + <_> + + <_> + 11 11 6 4 -1. + <_> + 11 13 6 2 2. + <_> + + <_> + 6 5 6 7 -1. + <_> + 8 5 2 7 3. + <_> + + <_> + 8 4 9 12 -1. + <_> + 11 8 3 4 9. + <_> + + <_> + 5 4 9 12 -1. + <_> + 8 8 3 4 9. + <_> + + <_> + 14 12 6 4 -1. + <_> + 14 14 6 2 2. + <_> + + <_> + 2 12 6 4 -1. + <_> + 2 14 6 2 2. + <_> + + <_> + 9 6 6 8 -1. + <_> + 11 6 2 8 3. + <_> + + <_> + 7 4 8 6 -1. + <_> + 7 6 8 2 3. + <_> + + <_> + 13 7 6 4 -1. + <_> + 13 7 6 2 2. + 1 + <_> + + <_> + 10 2 12 3 -1. + <_> + 9 3 12 1 3. + 1 + <_> + + <_> + 12 4 6 6 -1. + <_> + 14 6 2 6 3. + 1 + <_> + + <_> + 10 4 6 6 -1. + <_> + 8 6 6 2 3. + 1 + <_> + + <_> + 11 5 3 9 -1. + <_> + 12 6 1 9 3. + 1 + <_> + + <_> + 4 0 16 2 -1. + <_> + 4 0 16 1 2. + 1 + <_> + + <_> + 12 12 8 3 -1. + <_> + 12 12 4 3 2. + <_> + + <_> + 10 0 12 6 -1. + <_> + 13 3 6 6 2. + 1 + <_> + + <_> + 9 2 4 6 -1. + <_> + 9 5 4 3 2. + <_> + + <_> + 0 2 18 9 -1. + <_> + 6 5 6 3 9. + <_> + + <_> + 16 2 3 9 -1. + <_> + 17 3 1 9 3. + 1 + <_> + + <_> + 6 2 9 3 -1. + <_> + 5 3 9 1 3. + 1 + <_> + + <_> + 10 1 12 4 -1. + <_> + 14 1 4 4 3. + <_> + + <_> + 0 1 12 4 -1. + <_> + 4 1 4 4 3. + <_> + + <_> + 6 14 12 4 -1. + <_> + 12 14 6 2 2. + <_> + 6 16 6 2 2. + <_> + + <_> + 4 2 13 3 -1. + <_> + 4 3 13 1 3. + <_> + + <_> + 7 2 13 3 -1. + <_> + 7 3 13 1 3. + <_> + + <_> + 1 12 20 2 -1. + <_> + 11 12 10 2 2. + <_> + + <_> + 5 2 12 3 -1. + <_> + 9 2 4 3 3. + <_> + + <_> + 4 8 14 9 -1. + <_> + 11 8 7 9 2. + <_> + + <_> + 10 2 4 8 -1. + <_> + 10 2 2 8 2. + <_> + + <_> + 8 2 4 8 -1. + <_> + 10 2 2 8 2. + <_> + + <_> + 16 1 2 16 -1. + <_> + 16 9 2 8 2. + <_> + + <_> + 2 8 9 4 -1. + <_> + 5 8 3 4 3. + <_> + + <_> + 16 1 2 16 -1. + <_> + 16 9 2 8 2. + <_> + + <_> + 4 1 2 16 -1. + <_> + 4 9 2 8 2. + <_> + + <_> + 10 7 8 6 -1. + <_> + 14 7 4 3 2. + <_> + 10 10 4 3 2. + <_> + + <_> + 4 7 8 6 -1. + <_> + 4 7 4 3 2. + <_> + 8 10 4 3 2. + <_> + + <_> + 12 8 2 7 -1. + <_> + 12 8 1 7 2. + 1 + <_> + + <_> + 5 8 6 8 -1. + <_> + 5 8 3 4 2. + <_> + 8 12 3 4 2. + <_> + + <_> + 12 8 2 7 -1. + <_> + 12 8 1 7 2. + 1 + <_> + + <_> + 10 8 7 2 -1. + <_> + 10 8 7 1 2. + 1 + <_> + + <_> + 5 9 13 8 -1. + <_> + 5 11 13 4 2. + <_> + + <_> + 7 9 4 9 -1. + <_> + 9 9 2 9 2. + <_> + + <_> + 9 6 6 10 -1. + <_> + 11 6 2 10 3. + <_> + + <_> + 7 6 6 10 -1. + <_> + 9 6 2 10 3. + <_> + + <_> + 6 0 14 6 -1. + <_> + 13 0 7 3 2. + <_> + 6 3 7 3 2. + <_> + + <_> + 2 0 14 6 -1. + <_> + 2 0 7 3 2. + <_> + 9 3 7 3 2. + <_> + + <_> + 3 6 16 3 -1. + <_> + 3 7 16 1 3. + <_> + + <_> + 1 6 15 3 -1. + <_> + 1 7 15 1 3. + <_> + + <_> + 8 5 8 4 -1. + <_> + 8 7 8 2 2. + <_> + + <_> + 2 4 12 10 -1. + <_> + 8 4 6 10 2. + <_> + + <_> + 7 0 14 16 -1. + <_> + 7 0 7 16 2. + <_> + + <_> + 1 1 18 3 -1. + <_> + 10 1 9 3 2. + <_> + + <_> + 8 8 12 2 -1. + <_> + 8 8 6 2 2. + <_> + + <_> + 8 1 6 4 -1. + <_> + 11 1 3 4 2. + <_> + + <_> + 11 0 4 10 -1. + <_> + 12 1 2 10 2. + 1 + <_> + + <_> + 11 0 10 4 -1. + <_> + 10 1 10 2 2. + 1 + <_> + + <_> + 13 7 9 4 -1. + <_> + 16 7 3 4 3. + <_> + + <_> + 11 1 6 2 -1. + <_> + 11 1 6 1 2. + 1 + <_> + + <_> + 8 8 12 2 -1. + <_> + 8 8 6 2 2. + <_> + + <_> + 7 12 6 5 -1. + <_> + 10 12 3 5 2. + <_> + + <_> + 10 7 9 11 -1. + <_> + 13 7 3 11 3. + <_> + + <_> + 6 15 8 3 -1. + <_> + 10 15 4 3 2. + <_> + + <_> + 19 3 2 12 -1. + <_> + 19 3 1 12 2. + <_> + + <_> + 1 3 2 12 -1. + <_> + 2 3 1 12 2. + <_> + + <_> + 11 1 9 10 -1. + <_> + 14 1 3 10 3. + <_> + + <_> + 1 3 16 6 -1. + <_> + 5 3 8 6 2. + <_> + + <_> + 7 1 12 12 -1. + <_> + 11 1 4 12 3. + <_> + + <_> + 2 8 12 2 -1. + <_> + 8 8 6 2 2. + <_> + + <_> + 14 7 3 10 -1. + <_> + 14 12 3 5 2. + <_> + + <_> + 1 15 18 3 -1. + <_> + 10 15 9 3 2. + <_> + + <_> + 9 0 13 3 -1. + <_> + 9 1 13 1 3. + <_> + + <_> + 5 0 12 3 -1. + <_> + 5 1 12 1 3. + <_> + + <_> + 12 1 2 15 -1. + <_> + 12 1 1 15 2. + <_> + + <_> + 8 1 2 15 -1. + <_> + 9 1 1 15 2. + <_> + + <_> + 12 2 3 13 -1. + <_> + 13 2 1 13 3. + <_> + + <_> + 1 6 4 8 -1. + <_> + 3 6 2 8 2. + <_> + + <_> + 17 1 4 12 -1. + <_> + 19 1 2 6 2. + <_> + 17 7 2 6 2. + <_> + + <_> + 1 1 4 12 -1. + <_> + 1 1 2 6 2. + <_> + 3 7 2 6 2. + <_> + + <_> + 17 0 4 7 -1. + <_> + 17 0 2 7 2. + <_> + + <_> + 1 0 4 7 -1. + <_> + 3 0 2 7 2. + <_> + + <_> + 12 2 3 13 -1. + <_> + 13 2 1 13 3. + <_> + + <_> + 7 4 5 9 -1. + <_> + 7 7 5 3 3. + <_> + + <_> + 12 2 3 13 -1. + <_> + 13 2 1 13 3. + <_> + + <_> + 7 2 3 13 -1. + <_> + 8 2 1 13 3. + <_> + + <_> + 3 5 17 4 -1. + <_> + 3 6 17 2 2. + <_> + + <_> + 2 3 18 3 -1. + <_> + 2 4 18 1 3. + <_> + + <_> + 11 11 6 4 -1. + <_> + 11 13 6 2 2. + <_> + + <_> + 5 11 6 4 -1. + <_> + 5 13 6 2 2. + <_> + + <_> + 15 5 6 4 -1. + <_> + 15 5 6 2 2. + 1 + <_> + + <_> + 7 5 4 6 -1. + <_> + 7 5 2 6 2. + 1 + <_> + + <_> + 13 1 8 8 -1. + <_> + 15 1 4 8 2. + <_> + + <_> + 3 1 12 12 -1. + <_> + 7 1 4 12 3. + <_> + + <_> + 14 2 4 12 -1. + <_> + 14 2 2 12 2. + <_> + + <_> + 4 2 4 12 -1. + <_> + 6 2 2 12 2. + <_> + + <_> + 15 0 2 14 -1. + <_> + 15 0 1 14 2. + <_> + + <_> + 5 0 2 14 -1. + <_> + 6 0 1 14 2. + <_> + + <_> + 15 1 7 15 -1. + <_> + 15 6 7 5 3. + <_> + + <_> + 6 1 7 6 -1. + <_> + 4 3 7 2 3. + 1 + <_> + + <_> + 1 4 20 14 -1. + <_> + 11 4 10 7 2. + <_> + 1 11 10 7 2. + <_> + + <_> + 1 2 6 8 -1. + <_> + 3 2 2 8 3. + <_> + + <_> + 15 0 2 13 -1. + <_> + 15 0 1 13 2. + <_> + + <_> + 2 1 9 10 -1. + <_> + 5 1 3 10 3. + <_> + + <_> + 9 9 6 6 -1. + <_> + 11 9 2 6 3. + <_> + + <_> + 5 5 8 4 -1. + <_> + 5 5 8 2 2. + 1 + <_> + + <_> + 5 8 14 4 -1. + <_> + 5 9 14 2 2. + <_> + + <_> + 0 7 20 2 -1. + <_> + 10 7 10 2 2. + <_> + + <_> + 8 0 10 10 -1. + <_> + 8 0 5 10 2. + <_> + + <_> + 4 0 10 10 -1. + <_> + 9 0 5 10 2. + <_> + + <_> + 5 1 15 10 -1. + <_> + 10 1 5 10 3. + <_> + + <_> + 0 9 18 4 -1. + <_> + 0 10 18 2 2. + <_> + + <_> + 8 8 10 6 -1. + <_> + 8 10 10 2 3. + <_> + + <_> + 4 8 10 6 -1. + <_> + 4 10 10 2 3. + <_> + + <_> + 11 6 10 12 -1. + <_> + 11 10 10 4 3. + <_> + + <_> + 8 5 4 8 -1. + <_> + 8 5 4 4 2. + 1 + <_> + + <_> + 17 8 5 6 -1. + <_> + 17 11 5 3 2. + <_> + + <_> + 8 11 4 7 -1. + <_> + 10 11 2 7 2. + <_> + + <_> + 9 5 12 3 -1. + <_> + 9 6 12 1 3. + <_> + + <_> + 2 9 13 3 -1. + <_> + 2 10 13 1 3. + <_> + + <_> + 3 13 16 3 -1. + <_> + 3 13 8 3 2. + <_> + + <_> + 5 12 8 4 -1. + <_> + 9 12 4 4 2. + <_> + + <_> + 14 8 6 9 -1. + <_> + 14 11 6 3 3. + <_> + + <_> + 4 10 12 3 -1. + <_> + 4 11 12 1 3. + <_> + + <_> + 6 7 11 9 -1. + <_> + 6 10 11 3 3. + <_> + + <_> + 4 1 9 4 -1. + <_> + 7 4 3 4 3. + 1 + <_> + + <_> + 12 1 9 9 -1. + <_> + 15 1 3 9 3. + <_> + + <_> + 1 1 9 9 -1. + <_> + 4 1 3 9 3. + <_> + + <_> + 14 1 6 6 -1. + <_> + 16 1 2 6 3. + <_> + + <_> + 4 6 4 6 -1. + <_> + 6 6 2 6 2. + <_> + + <_> + 7 5 12 7 -1. + <_> + 10 5 6 7 2. + <_> + + <_> + 3 5 12 7 -1. + <_> + 6 5 6 7 2. + diff --git a/venv/lib/python3.11/site-packages/cv2/detail/__init__.pyi b/venv/lib/python3.11/site-packages/cv2/detail/__init__.pyi new file mode 100644 index 0000000000000000000000000000000000000000..71917cce8679bbfddc13b7fcc650b713f12d9251 --- /dev/null +++ b/venv/lib/python3.11/site-packages/cv2/detail/__init__.pyi @@ -0,0 +1,600 @@ +__all__: list[str] = [] + +import cv2 +import cv2.gapi +import cv2.gapi.ie +import cv2.gapi.onnx +import cv2.gapi.ov +import cv2.typing +import numpy +import typing as _typing + + +# Enumerations +TEST_CUSTOM: int +TEST_EQ: int +TEST_NE: int +TEST_LE: int +TEST_LT: int +TEST_GE: int +TEST_GT: int +TestOp = int +"""One of [TEST_CUSTOM, TEST_EQ, TEST_NE, TEST_LE, TEST_LT, TEST_GE, TEST_GT]""" + +WAVE_CORRECT_HORIZ: int +WAVE_CORRECT_VERT: int +WAVE_CORRECT_AUTO: int +WaveCorrectKind = int +"""One of [WAVE_CORRECT_HORIZ, WAVE_CORRECT_VERT, WAVE_CORRECT_AUTO]""" + +OpaqueKind_CV_UNKNOWN: int +OPAQUE_KIND_CV_UNKNOWN: int +OpaqueKind_CV_BOOL: int +OPAQUE_KIND_CV_BOOL: int +OpaqueKind_CV_INT: int +OPAQUE_KIND_CV_INT: int +OpaqueKind_CV_INT64: int +OPAQUE_KIND_CV_INT64: int +OpaqueKind_CV_DOUBLE: int +OPAQUE_KIND_CV_DOUBLE: int +OpaqueKind_CV_FLOAT: int +OPAQUE_KIND_CV_FLOAT: int +OpaqueKind_CV_UINT64: int +OPAQUE_KIND_CV_UINT64: int +OpaqueKind_CV_STRING: int +OPAQUE_KIND_CV_STRING: int +OpaqueKind_CV_POINT: int +OPAQUE_KIND_CV_POINT: int +OpaqueKind_CV_POINT2F: int +OPAQUE_KIND_CV_POINT2F: int +OpaqueKind_CV_POINT3F: int +OPAQUE_KIND_CV_POINT3F: int +OpaqueKind_CV_SIZE: int +OPAQUE_KIND_CV_SIZE: int +OpaqueKind_CV_RECT: int +OPAQUE_KIND_CV_RECT: int +OpaqueKind_CV_SCALAR: int +OPAQUE_KIND_CV_SCALAR: int +OpaqueKind_CV_MAT: int +OPAQUE_KIND_CV_MAT: int +OpaqueKind_CV_DRAW_PRIM: int +OPAQUE_KIND_CV_DRAW_PRIM: int +OpaqueKind = int +"""One of [OpaqueKind_CV_UNKNOWN, OPAQUE_KIND_CV_UNKNOWN, OpaqueKind_CV_BOOL, OPAQUE_KIND_CV_BOOL, OpaqueKind_CV_INT, OPAQUE_KIND_CV_INT, OpaqueKind_CV_INT64, OPAQUE_KIND_CV_INT64, OpaqueKind_CV_DOUBLE, OPAQUE_KIND_CV_DOUBLE, OpaqueKind_CV_FLOAT, OPAQUE_KIND_CV_FLOAT, OpaqueKind_CV_UINT64, OPAQUE_KIND_CV_UINT64, OpaqueKind_CV_STRING, OPAQUE_KIND_CV_STRING, OpaqueKind_CV_POINT, OPAQUE_KIND_CV_POINT, OpaqueKind_CV_POINT2F, OPAQUE_KIND_CV_POINT2F, OpaqueKind_CV_POINT3F, OPAQUE_KIND_CV_POINT3F, OpaqueKind_CV_SIZE, OPAQUE_KIND_CV_SIZE, OpaqueKind_CV_RECT, OPAQUE_KIND_CV_RECT, OpaqueKind_CV_SCALAR, OPAQUE_KIND_CV_SCALAR, OpaqueKind_CV_MAT, OPAQUE_KIND_CV_MAT, OpaqueKind_CV_DRAW_PRIM, OPAQUE_KIND_CV_DRAW_PRIM]""" + +ArgKind_OPAQUE_VAL: int +ARG_KIND_OPAQUE_VAL: int +ArgKind_OPAQUE: int +ARG_KIND_OPAQUE: int +ArgKind_GOBJREF: int +ARG_KIND_GOBJREF: int +ArgKind_GMAT: int +ARG_KIND_GMAT: int +ArgKind_GMATP: int +ARG_KIND_GMATP: int +ArgKind_GFRAME: int +ARG_KIND_GFRAME: int +ArgKind_GSCALAR: int +ARG_KIND_GSCALAR: int +ArgKind_GARRAY: int +ARG_KIND_GARRAY: int +ArgKind_GOPAQUE: int +ARG_KIND_GOPAQUE: int +ArgKind = int +"""One of [ArgKind_OPAQUE_VAL, ARG_KIND_OPAQUE_VAL, ArgKind_OPAQUE, ARG_KIND_OPAQUE, ArgKind_GOBJREF, ARG_KIND_GOBJREF, ArgKind_GMAT, ARG_KIND_GMAT, ArgKind_GMATP, ARG_KIND_GMATP, ArgKind_GFRAME, ARG_KIND_GFRAME, ArgKind_GSCALAR, ARG_KIND_GSCALAR, ArgKind_GARRAY, ARG_KIND_GARRAY, ArgKind_GOPAQUE, ARG_KIND_GOPAQUE]""" + + +Blender_NO: int +BLENDER_NO: int +Blender_FEATHER: int +BLENDER_FEATHER: int +Blender_MULTI_BAND: int +BLENDER_MULTI_BAND: int + +ExposureCompensator_NO: int +EXPOSURE_COMPENSATOR_NO: int +ExposureCompensator_GAIN: int +EXPOSURE_COMPENSATOR_GAIN: int +ExposureCompensator_GAIN_BLOCKS: int +EXPOSURE_COMPENSATOR_GAIN_BLOCKS: int +ExposureCompensator_CHANNELS: int +EXPOSURE_COMPENSATOR_CHANNELS: int +ExposureCompensator_CHANNELS_BLOCKS: int +EXPOSURE_COMPENSATOR_CHANNELS_BLOCKS: int + +SeamFinder_NO: int +SEAM_FINDER_NO: int +SeamFinder_VORONOI_SEAM: int +SEAM_FINDER_VORONOI_SEAM: int +SeamFinder_DP_SEAM: int +SEAM_FINDER_DP_SEAM: int + +DpSeamFinder_COLOR: int +DP_SEAM_FINDER_COLOR: int +DpSeamFinder_COLOR_GRAD: int +DP_SEAM_FINDER_COLOR_GRAD: int +DpSeamFinder_CostFunction = int +"""One of [DpSeamFinder_COLOR, DP_SEAM_FINDER_COLOR, DpSeamFinder_COLOR_GRAD, DP_SEAM_FINDER_COLOR_GRAD]""" + +Timelapser_AS_IS: int +TIMELAPSER_AS_IS: int +Timelapser_CROP: int +TIMELAPSER_CROP: int + +GraphCutSeamFinderBase_COST_COLOR: int +GRAPH_CUT_SEAM_FINDER_BASE_COST_COLOR: int +GraphCutSeamFinderBase_COST_COLOR_GRAD: int +GRAPH_CUT_SEAM_FINDER_BASE_COST_COLOR_GRAD: int +GraphCutSeamFinderBase_CostType = int +"""One of [GraphCutSeamFinderBase_COST_COLOR, GRAPH_CUT_SEAM_FINDER_BASE_COST_COLOR, GraphCutSeamFinderBase_COST_COLOR_GRAD, GRAPH_CUT_SEAM_FINDER_BASE_COST_COLOR_GRAD]""" + +TrackerSamplerCSC_MODE_INIT_POS: int +TRACKER_SAMPLER_CSC_MODE_INIT_POS: int +TrackerSamplerCSC_MODE_INIT_NEG: int +TRACKER_SAMPLER_CSC_MODE_INIT_NEG: int +TrackerSamplerCSC_MODE_TRACK_POS: int +TRACKER_SAMPLER_CSC_MODE_TRACK_POS: int +TrackerSamplerCSC_MODE_TRACK_NEG: int +TRACKER_SAMPLER_CSC_MODE_TRACK_NEG: int +TrackerSamplerCSC_MODE_DETECT: int +TRACKER_SAMPLER_CSC_MODE_DETECT: int +TrackerSamplerCSC_MODE = int +"""One of [TrackerSamplerCSC_MODE_INIT_POS, TRACKER_SAMPLER_CSC_MODE_INIT_POS, TrackerSamplerCSC_MODE_INIT_NEG, TRACKER_SAMPLER_CSC_MODE_INIT_NEG, TrackerSamplerCSC_MODE_TRACK_POS, TRACKER_SAMPLER_CSC_MODE_TRACK_POS, TrackerSamplerCSC_MODE_TRACK_NEG, TRACKER_SAMPLER_CSC_MODE_TRACK_NEG, TrackerSamplerCSC_MODE_DETECT, TRACKER_SAMPLER_CSC_MODE_DETECT]""" + + +# Classes +class Blender: + # Functions + @classmethod + def createDefault(cls, type: int, try_gpu: bool = ...) -> Blender: ... + + @_typing.overload + def prepare(self, corners: _typing.Sequence[cv2.typing.Point], sizes: _typing.Sequence[cv2.typing.Size]) -> None: ... + @_typing.overload + def prepare(self, dst_roi: cv2.typing.Rect) -> None: ... + + @_typing.overload + def feed(self, img: cv2.typing.MatLike, mask: cv2.typing.MatLike, tl: cv2.typing.Point) -> None: ... + @_typing.overload + def feed(self, img: cv2.UMat, mask: cv2.UMat, tl: cv2.typing.Point) -> None: ... + + @_typing.overload + def blend(self, dst: cv2.typing.MatLike, dst_mask: cv2.typing.MatLike) -> tuple[cv2.typing.MatLike, cv2.typing.MatLike]: ... + @_typing.overload + def blend(self, dst: cv2.UMat, dst_mask: cv2.UMat) -> tuple[cv2.UMat, cv2.UMat]: ... + + +class FeatherBlender(Blender): + # Functions + def __init__(self, sharpness: float = ...) -> None: ... + + def sharpness(self) -> float: ... + + def setSharpness(self, val: float) -> None: ... + + def prepare(self, dst_roi: cv2.typing.Rect) -> None: ... + + @_typing.overload + def feed(self, img: cv2.typing.MatLike, mask: cv2.typing.MatLike, tl: cv2.typing.Point) -> None: ... + @_typing.overload + def feed(self, img: cv2.UMat, mask: cv2.UMat, tl: cv2.typing.Point) -> None: ... + + @_typing.overload + def blend(self, dst: cv2.typing.MatLike, dst_mask: cv2.typing.MatLike) -> tuple[cv2.typing.MatLike, cv2.typing.MatLike]: ... + @_typing.overload + def blend(self, dst: cv2.UMat, dst_mask: cv2.UMat) -> tuple[cv2.UMat, cv2.UMat]: ... + + def createWeightMaps(self, masks: _typing.Sequence[cv2.UMat], corners: _typing.Sequence[cv2.typing.Point], weight_maps: _typing.Sequence[cv2.UMat]) -> tuple[cv2.typing.Rect, _typing.Sequence[cv2.UMat]]: ... + + +class MultiBandBlender(Blender): + # Functions + def __init__(self, try_gpu: int = ..., num_bands: int = ..., weight_type: int = ...) -> None: ... + + def numBands(self) -> int: ... + + def setNumBands(self, val: int) -> None: ... + + def prepare(self, dst_roi: cv2.typing.Rect) -> None: ... + + @_typing.overload + def feed(self, img: cv2.typing.MatLike, mask: cv2.typing.MatLike, tl: cv2.typing.Point) -> None: ... + @_typing.overload + def feed(self, img: cv2.UMat, mask: cv2.UMat, tl: cv2.typing.Point) -> None: ... + + @_typing.overload + def blend(self, dst: cv2.typing.MatLike, dst_mask: cv2.typing.MatLike) -> tuple[cv2.typing.MatLike, cv2.typing.MatLike]: ... + @_typing.overload + def blend(self, dst: cv2.UMat, dst_mask: cv2.UMat) -> tuple[cv2.UMat, cv2.UMat]: ... + + +class CameraParams: + focal: float + aspect: float + ppx: float + ppy: float + R: cv2.typing.MatLike + t: cv2.typing.MatLike + + # Functions + def K(self) -> cv2.typing.MatLike: ... + + +class ExposureCompensator: + # Functions + @classmethod + def createDefault(cls, type: int) -> ExposureCompensator: ... + + def feed(self, corners: _typing.Sequence[cv2.typing.Point], images: _typing.Sequence[cv2.UMat], masks: _typing.Sequence[cv2.UMat]) -> None: ... + + @_typing.overload + def apply(self, index: int, corner: cv2.typing.Point, image: cv2.typing.MatLike, mask: cv2.typing.MatLike) -> cv2.typing.MatLike: ... + @_typing.overload + def apply(self, index: int, corner: cv2.typing.Point, image: cv2.UMat, mask: cv2.UMat) -> cv2.UMat: ... + + def getMatGains(self, arg1: _typing.Sequence[cv2.typing.MatLike] | None = ...) -> _typing.Sequence[cv2.typing.MatLike]: ... + + def setMatGains(self, arg1: _typing.Sequence[cv2.typing.MatLike]) -> None: ... + + def setUpdateGain(self, b: bool) -> None: ... + + def getUpdateGain(self) -> bool: ... + + +class NoExposureCompensator(ExposureCompensator): + # Functions + @_typing.overload + def apply(self, arg1: int, arg2: cv2.typing.Point, arg3: cv2.typing.MatLike, arg4: cv2.typing.MatLike) -> cv2.typing.MatLike: ... + @_typing.overload + def apply(self, arg1: int, arg2: cv2.typing.Point, arg3: cv2.UMat, arg4: cv2.UMat) -> cv2.UMat: ... + + def getMatGains(self, umv: _typing.Sequence[cv2.typing.MatLike] | None = ...) -> _typing.Sequence[cv2.typing.MatLike]: ... + + def setMatGains(self, umv: _typing.Sequence[cv2.typing.MatLike]) -> None: ... + + +class GainCompensator(ExposureCompensator): + # Functions + @_typing.overload + def __init__(self) -> None: ... + @_typing.overload + def __init__(self, nr_feeds: int) -> None: ... + + @_typing.overload + def apply(self, index: int, corner: cv2.typing.Point, image: cv2.typing.MatLike, mask: cv2.typing.MatLike) -> cv2.typing.MatLike: ... + @_typing.overload + def apply(self, index: int, corner: cv2.typing.Point, image: cv2.UMat, mask: cv2.UMat) -> cv2.UMat: ... + + def getMatGains(self, umv: _typing.Sequence[cv2.typing.MatLike] | None = ...) -> _typing.Sequence[cv2.typing.MatLike]: ... + + def setMatGains(self, umv: _typing.Sequence[cv2.typing.MatLike]) -> None: ... + + def setNrFeeds(self, nr_feeds: int) -> None: ... + + def getNrFeeds(self) -> int: ... + + def setSimilarityThreshold(self, similarity_threshold: float) -> None: ... + + def getSimilarityThreshold(self) -> float: ... + + +class ChannelsCompensator(ExposureCompensator): + # Functions + def __init__(self, nr_feeds: int = ...) -> None: ... + + @_typing.overload + def apply(self, index: int, corner: cv2.typing.Point, image: cv2.typing.MatLike, mask: cv2.typing.MatLike) -> cv2.typing.MatLike: ... + @_typing.overload + def apply(self, index: int, corner: cv2.typing.Point, image: cv2.UMat, mask: cv2.UMat) -> cv2.UMat: ... + + def getMatGains(self, umv: _typing.Sequence[cv2.typing.MatLike] | None = ...) -> _typing.Sequence[cv2.typing.MatLike]: ... + + def setMatGains(self, umv: _typing.Sequence[cv2.typing.MatLike]) -> None: ... + + def setNrFeeds(self, nr_feeds: int) -> None: ... + + def getNrFeeds(self) -> int: ... + + def setSimilarityThreshold(self, similarity_threshold: float) -> None: ... + + def getSimilarityThreshold(self) -> float: ... + + +class BlocksCompensator(ExposureCompensator): + # Functions + @_typing.overload + def apply(self, index: int, corner: cv2.typing.Point, image: cv2.typing.MatLike, mask: cv2.typing.MatLike) -> cv2.typing.MatLike: ... + @_typing.overload + def apply(self, index: int, corner: cv2.typing.Point, image: cv2.UMat, mask: cv2.UMat) -> cv2.UMat: ... + + def getMatGains(self, umv: _typing.Sequence[cv2.typing.MatLike] | None = ...) -> _typing.Sequence[cv2.typing.MatLike]: ... + + def setMatGains(self, umv: _typing.Sequence[cv2.typing.MatLike]) -> None: ... + + def setNrFeeds(self, nr_feeds: int) -> None: ... + + def getNrFeeds(self) -> int: ... + + def setSimilarityThreshold(self, similarity_threshold: float) -> None: ... + + def getSimilarityThreshold(self) -> float: ... + + @_typing.overload + def setBlockSize(self, width: int, height: int) -> None: ... + @_typing.overload + def setBlockSize(self, size: cv2.typing.Size) -> None: ... + + def getBlockSize(self) -> cv2.typing.Size: ... + + def setNrGainsFilteringIterations(self, nr_iterations: int) -> None: ... + + def getNrGainsFilteringIterations(self) -> int: ... + + +class BlocksGainCompensator(BlocksCompensator): + # Functions + @_typing.overload + def __init__(self, bl_width: int = ..., bl_height: int = ...) -> None: ... + @_typing.overload + def __init__(self, bl_width: int, bl_height: int, nr_feeds: int) -> None: ... + + @_typing.overload + def apply(self, index: int, corner: cv2.typing.Point, image: cv2.typing.MatLike, mask: cv2.typing.MatLike) -> cv2.typing.MatLike: ... + @_typing.overload + def apply(self, index: int, corner: cv2.typing.Point, image: cv2.UMat, mask: cv2.UMat) -> cv2.UMat: ... + + def getMatGains(self, umv: _typing.Sequence[cv2.typing.MatLike] | None = ...) -> _typing.Sequence[cv2.typing.MatLike]: ... + + def setMatGains(self, umv: _typing.Sequence[cv2.typing.MatLike]) -> None: ... + + +class BlocksChannelsCompensator(BlocksCompensator): + # Functions + def __init__(self, bl_width: int = ..., bl_height: int = ..., nr_feeds: int = ...) -> None: ... + + +class ImageFeatures: + img_idx: int + img_size: cv2.typing.Size + keypoints: _typing.Sequence[cv2.KeyPoint] + descriptors: cv2.UMat + + # Functions + def getKeypoints(self) -> _typing.Sequence[cv2.KeyPoint]: ... + + +class MatchesInfo: + src_img_idx: int + dst_img_idx: int + matches: _typing.Sequence[cv2.DMatch] + inliers_mask: numpy.ndarray[_typing.Any, numpy.dtype[numpy.uint8]] + num_inliers: int + H: cv2.typing.MatLike + confidence: float + + # Functions + def getMatches(self) -> _typing.Sequence[cv2.DMatch]: ... + + def getInliers(self) -> numpy.ndarray[_typing.Any, numpy.dtype[numpy.uint8]]: ... + + +class FeaturesMatcher: + # Functions + def apply(self, features1: ImageFeatures, features2: ImageFeatures) -> MatchesInfo: ... + + def apply2(self, features: _typing.Sequence[ImageFeatures], mask: cv2.UMat | None = ...) -> _typing.Sequence[MatchesInfo]: ... + + def isThreadSafe(self) -> bool: ... + + def collectGarbage(self) -> None: ... + + +class BestOf2NearestMatcher(FeaturesMatcher): + # Functions + def __init__(self, try_use_gpu: bool = ..., match_conf: float = ..., num_matches_thresh1: int = ..., num_matches_thresh2: int = ..., matches_confindece_thresh: float = ...) -> None: ... + + def collectGarbage(self) -> None: ... + + @classmethod + def create(cls, try_use_gpu: bool = ..., match_conf: float = ..., num_matches_thresh1: int = ..., num_matches_thresh2: int = ..., matches_confindece_thresh: float = ...) -> BestOf2NearestMatcher: ... + + +class BestOf2NearestRangeMatcher(BestOf2NearestMatcher): + # Functions + def __init__(self, range_width: int = ..., try_use_gpu: bool = ..., match_conf: float = ..., num_matches_thresh1: int = ..., num_matches_thresh2: int = ...) -> None: ... + + +class AffineBestOf2NearestMatcher(BestOf2NearestMatcher): + # Functions + def __init__(self, full_affine: bool = ..., try_use_gpu: bool = ..., match_conf: float = ..., num_matches_thresh1: int = ...) -> None: ... + + +class Estimator: + # Functions + def apply(self, features: _typing.Sequence[ImageFeatures], pairwise_matches: _typing.Sequence[MatchesInfo], cameras: _typing.Sequence[CameraParams]) -> tuple[bool, _typing.Sequence[CameraParams]]: ... + + +class HomographyBasedEstimator(Estimator): + # Functions + def __init__(self, is_focals_estimated: bool = ...) -> None: ... + + +class AffineBasedEstimator(Estimator): + # Functions + def __init__(self) -> None: ... + + +class BundleAdjusterBase(Estimator): + # Functions + def refinementMask(self) -> cv2.typing.MatLike: ... + + def setRefinementMask(self, mask: cv2.typing.MatLike) -> None: ... + + def confThresh(self) -> float: ... + + def setConfThresh(self, conf_thresh: float) -> None: ... + + def termCriteria(self) -> cv2.typing.TermCriteria: ... + + def setTermCriteria(self, term_criteria: cv2.typing.TermCriteria) -> None: ... + + +class NoBundleAdjuster(BundleAdjusterBase): + # Functions + def __init__(self) -> None: ... + + +class BundleAdjusterReproj(BundleAdjusterBase): + # Functions + def __init__(self) -> None: ... + + +class BundleAdjusterRay(BundleAdjusterBase): + # Functions + def __init__(self) -> None: ... + + +class BundleAdjusterAffine(BundleAdjusterBase): + # Functions + def __init__(self) -> None: ... + + +class BundleAdjusterAffinePartial(BundleAdjusterBase): + # Functions + def __init__(self) -> None: ... + + +class SeamFinder: + # Functions + def find(self, src: _typing.Sequence[cv2.UMat], corners: _typing.Sequence[cv2.typing.Point], masks: _typing.Sequence[cv2.UMat]) -> _typing.Sequence[cv2.UMat]: ... + + @classmethod + def createDefault(cls, type: int) -> SeamFinder: ... + + +class NoSeamFinder(SeamFinder): + # Functions + def find(self, arg1: _typing.Sequence[cv2.UMat], arg2: _typing.Sequence[cv2.typing.Point], arg3: _typing.Sequence[cv2.UMat]) -> _typing.Sequence[cv2.UMat]: ... + + +class PairwiseSeamFinder(SeamFinder): + # Functions + def find(self, src: _typing.Sequence[cv2.UMat], corners: _typing.Sequence[cv2.typing.Point], masks: _typing.Sequence[cv2.UMat]) -> _typing.Sequence[cv2.UMat]: ... + + +class VoronoiSeamFinder(PairwiseSeamFinder): + # Functions + def find(self, src: _typing.Sequence[cv2.UMat], corners: _typing.Sequence[cv2.typing.Point], masks: _typing.Sequence[cv2.UMat]) -> _typing.Sequence[cv2.UMat]: ... + + +class DpSeamFinder(SeamFinder): + # Functions + def __init__(self, costFunc: str) -> None: ... + + def setCostFunction(self, val: str) -> None: ... + + +class GraphCutSeamFinder: + # Functions + def __init__(self, cost_type: str, terminal_cost: float = ..., bad_region_penalty: float = ...) -> None: ... + + def find(self, src: _typing.Sequence[cv2.UMat], corners: _typing.Sequence[cv2.typing.Point], masks: _typing.Sequence[cv2.UMat]) -> _typing.Sequence[cv2.UMat]: ... + + +class Timelapser: + # Functions + @classmethod + def createDefault(cls, type: int) -> Timelapser: ... + + def initialize(self, corners: _typing.Sequence[cv2.typing.Point], sizes: _typing.Sequence[cv2.typing.Size]) -> None: ... + + @_typing.overload + def process(self, img: cv2.typing.MatLike, mask: cv2.typing.MatLike, tl: cv2.typing.Point) -> None: ... + @_typing.overload + def process(self, img: cv2.UMat, mask: cv2.UMat, tl: cv2.typing.Point) -> None: ... + + def getDst(self) -> cv2.UMat: ... + + +class TimelapserCrop(Timelapser): + ... + +class ProjectorBase: + ... + +class SphericalProjector(ProjectorBase): + # Functions + def mapForward(self, x: float, y: float, u: float, v: float) -> None: ... + + def mapBackward(self, u: float, v: float, x: float, y: float) -> None: ... + + + +# Functions +def calibrateRotatingCamera(Hs: _typing.Sequence[cv2.typing.MatLike], K: cv2.typing.MatLike | None = ...) -> tuple[bool, cv2.typing.MatLike]: ... + +@_typing.overload +def computeImageFeatures(featuresFinder: cv2.Feature2D, images: _typing.Sequence[cv2.typing.MatLike], masks: _typing.Sequence[cv2.typing.MatLike] | None = ...) -> _typing.Sequence[ImageFeatures]: ... +@_typing.overload +def computeImageFeatures(featuresFinder: cv2.Feature2D, images: _typing.Sequence[cv2.UMat], masks: _typing.Sequence[cv2.UMat] | None = ...) -> _typing.Sequence[ImageFeatures]: ... + +@_typing.overload +def computeImageFeatures2(featuresFinder: cv2.Feature2D, image: cv2.typing.MatLike, mask: cv2.typing.MatLike | None = ...) -> ImageFeatures: ... +@_typing.overload +def computeImageFeatures2(featuresFinder: cv2.Feature2D, image: cv2.UMat, mask: cv2.UMat | None = ...) -> ImageFeatures: ... + +@_typing.overload +def createLaplacePyr(img: cv2.typing.MatLike, num_levels: int, pyr: _typing.Sequence[cv2.UMat]) -> _typing.Sequence[cv2.UMat]: ... +@_typing.overload +def createLaplacePyr(img: cv2.UMat, num_levels: int, pyr: _typing.Sequence[cv2.UMat]) -> _typing.Sequence[cv2.UMat]: ... + +@_typing.overload +def createLaplacePyrGpu(img: cv2.typing.MatLike, num_levels: int, pyr: _typing.Sequence[cv2.UMat]) -> _typing.Sequence[cv2.UMat]: ... +@_typing.overload +def createLaplacePyrGpu(img: cv2.UMat, num_levels: int, pyr: _typing.Sequence[cv2.UMat]) -> _typing.Sequence[cv2.UMat]: ... + +@_typing.overload +def createWeightMap(mask: cv2.typing.MatLike, sharpness: float, weight: cv2.typing.MatLike) -> cv2.typing.MatLike: ... +@_typing.overload +def createWeightMap(mask: cv2.UMat, sharpness: float, weight: cv2.UMat) -> cv2.UMat: ... + +def focalsFromHomography(H: cv2.typing.MatLike, f0: float, f1: float, f0_ok: bool, f1_ok: bool) -> None: ... + +def leaveBiggestComponent(features: _typing.Sequence[ImageFeatures], pairwise_matches: _typing.Sequence[MatchesInfo], conf_threshold: float) -> _typing.Sequence[int]: ... + +def matchesGraphAsString(paths: _typing.Sequence[str], pairwise_matches: _typing.Sequence[MatchesInfo], conf_threshold: float) -> str: ... + +@_typing.overload +def normalizeUsingWeightMap(weight: cv2.typing.MatLike, src: cv2.typing.MatLike) -> cv2.typing.MatLike: ... +@_typing.overload +def normalizeUsingWeightMap(weight: cv2.UMat, src: cv2.UMat) -> cv2.UMat: ... + +def overlapRoi(tl1: cv2.typing.Point, tl2: cv2.typing.Point, sz1: cv2.typing.Size, sz2: cv2.typing.Size, roi: cv2.typing.Rect) -> bool: ... + +def restoreImageFromLaplacePyr(pyr: _typing.Sequence[cv2.UMat]) -> _typing.Sequence[cv2.UMat]: ... + +def restoreImageFromLaplacePyrGpu(pyr: _typing.Sequence[cv2.UMat]) -> _typing.Sequence[cv2.UMat]: ... + +@_typing.overload +def resultRoi(corners: _typing.Sequence[cv2.typing.Point], images: _typing.Sequence[cv2.UMat]) -> cv2.typing.Rect: ... +@_typing.overload +def resultRoi(corners: _typing.Sequence[cv2.typing.Point], sizes: _typing.Sequence[cv2.typing.Size]) -> cv2.typing.Rect: ... + +def resultRoiIntersection(corners: _typing.Sequence[cv2.typing.Point], sizes: _typing.Sequence[cv2.typing.Size]) -> cv2.typing.Rect: ... + +def resultTl(corners: _typing.Sequence[cv2.typing.Point]) -> cv2.typing.Point: ... + +def selectRandomSubset(count: int, size: int, subset: _typing.Sequence[int]) -> None: ... + +def stitchingLogLevel() -> int: ... + +@_typing.overload +def strip(params: cv2.gapi.ie.PyParams) -> cv2.gapi.GNetParam: ... +@_typing.overload +def strip(params: cv2.gapi.onnx.PyParams) -> cv2.gapi.GNetParam: ... +@_typing.overload +def strip(params: cv2.gapi.ov.PyParams) -> cv2.gapi.GNetParam: ... + +def waveCorrect(rmats: _typing.Sequence[cv2.typing.MatLike], kind: WaveCorrectKind) -> _typing.Sequence[cv2.typing.MatLike]: ... + + diff --git a/venv/lib/python3.11/site-packages/cv2/dnn/__init__.pyi b/venv/lib/python3.11/site-packages/cv2/dnn/__init__.pyi new file mode 100644 index 0000000000000000000000000000000000000000..9679b1d0709122576f4c55608824df8ce44df4aa --- /dev/null +++ b/venv/lib/python3.11/site-packages/cv2/dnn/__init__.pyi @@ -0,0 +1,530 @@ +__all__: list[str] = [] + +import cv2 +import cv2.typing +import numpy +import sys +import typing as _typing +if sys.version_info >= (3, 8): + from typing import Protocol +else: + from typing_extensions import Protocol + + +# Enumerations +DNN_BACKEND_DEFAULT: int +DNN_BACKEND_HALIDE: int +DNN_BACKEND_INFERENCE_ENGINE: int +DNN_BACKEND_OPENCV: int +DNN_BACKEND_VKCOM: int +DNN_BACKEND_CUDA: int +DNN_BACKEND_WEBNN: int +DNN_BACKEND_TIMVX: int +DNN_BACKEND_CANN: int +Backend = int +"""One of [DNN_BACKEND_DEFAULT, DNN_BACKEND_HALIDE, DNN_BACKEND_INFERENCE_ENGINE, DNN_BACKEND_OPENCV, DNN_BACKEND_VKCOM, DNN_BACKEND_CUDA, DNN_BACKEND_WEBNN, DNN_BACKEND_TIMVX, DNN_BACKEND_CANN]""" + +DNN_TARGET_CPU: int +DNN_TARGET_OPENCL: int +DNN_TARGET_OPENCL_FP16: int +DNN_TARGET_MYRIAD: int +DNN_TARGET_VULKAN: int +DNN_TARGET_FPGA: int +DNN_TARGET_CUDA: int +DNN_TARGET_CUDA_FP16: int +DNN_TARGET_HDDL: int +DNN_TARGET_NPU: int +DNN_TARGET_CPU_FP16: int +Target = int +"""One of [DNN_TARGET_CPU, DNN_TARGET_OPENCL, DNN_TARGET_OPENCL_FP16, DNN_TARGET_MYRIAD, DNN_TARGET_VULKAN, DNN_TARGET_FPGA, DNN_TARGET_CUDA, DNN_TARGET_CUDA_FP16, DNN_TARGET_HDDL, DNN_TARGET_NPU, DNN_TARGET_CPU_FP16]""" + +DNN_LAYOUT_UNKNOWN: int +DNN_LAYOUT_ND: int +DNN_LAYOUT_NCHW: int +DNN_LAYOUT_NCDHW: int +DNN_LAYOUT_NHWC: int +DNN_LAYOUT_NDHWC: int +DNN_LAYOUT_PLANAR: int +DataLayout = int +"""One of [DNN_LAYOUT_UNKNOWN, DNN_LAYOUT_ND, DNN_LAYOUT_NCHW, DNN_LAYOUT_NCDHW, DNN_LAYOUT_NHWC, DNN_LAYOUT_NDHWC, DNN_LAYOUT_PLANAR]""" + +DNN_PMODE_NULL: int +DNN_PMODE_CROP_CENTER: int +DNN_PMODE_LETTERBOX: int +ImagePaddingMode = int +"""One of [DNN_PMODE_NULL, DNN_PMODE_CROP_CENTER, DNN_PMODE_LETTERBOX]""" + +SoftNMSMethod_SOFTNMS_LINEAR: int +SOFT_NMSMETHOD_SOFTNMS_LINEAR: int +SoftNMSMethod_SOFTNMS_GAUSSIAN: int +SOFT_NMSMETHOD_SOFTNMS_GAUSSIAN: int +SoftNMSMethod = int +"""One of [SoftNMSMethod_SOFTNMS_LINEAR, SOFT_NMSMETHOD_SOFTNMS_LINEAR, SoftNMSMethod_SOFTNMS_GAUSSIAN, SOFT_NMSMETHOD_SOFTNMS_GAUSSIAN]""" + + + +# Classes +class DictValue: + # Functions + @_typing.overload + def __init__(self, i: int) -> None: ... + @_typing.overload + def __init__(self, p: float) -> None: ... + @_typing.overload + def __init__(self, s: str) -> None: ... + + def isInt(self) -> bool: ... + + def isString(self) -> bool: ... + + def isReal(self) -> bool: ... + + def getIntValue(self, idx: int = ...) -> int: ... + + def getRealValue(self, idx: int = ...) -> float: ... + + def getStringValue(self, idx: int = ...) -> str: ... + + +class Layer(cv2.Algorithm): + blobs: _typing.Sequence[cv2.typing.MatLike] + @property + def name(self) -> str: ... + @property + def type(self) -> str: ... + @property + def preferableTarget(self) -> int: ... + + # Functions + @_typing.overload + def finalize(self, inputs: _typing.Sequence[cv2.typing.MatLike], outputs: _typing.Sequence[cv2.typing.MatLike] | None = ...) -> _typing.Sequence[cv2.typing.MatLike]: ... + @_typing.overload + def finalize(self, inputs: _typing.Sequence[cv2.UMat], outputs: _typing.Sequence[cv2.UMat] | None = ...) -> _typing.Sequence[cv2.UMat]: ... + + def run(self, inputs: _typing.Sequence[cv2.typing.MatLike], internals: _typing.Sequence[cv2.typing.MatLike], outputs: _typing.Sequence[cv2.typing.MatLike] | None = ...) -> tuple[_typing.Sequence[cv2.typing.MatLike], _typing.Sequence[cv2.typing.MatLike]]: ... + + def outputNameToIndex(self, outputName: str) -> int: ... + + +class Net: + # Functions + def __init__(self) -> None: ... + + @classmethod + @_typing.overload + def readFromModelOptimizer(cls, xml: str, bin: str) -> Net: ... + @classmethod + @_typing.overload + def readFromModelOptimizer(cls, bufferModelConfig: numpy.ndarray[_typing.Any, numpy.dtype[numpy.uint8]], bufferWeights: numpy.ndarray[_typing.Any, numpy.dtype[numpy.uint8]]) -> Net: ... + + def empty(self) -> bool: ... + + def dump(self) -> str: ... + + def dumpToFile(self, path: str) -> None: ... + + def dumpToPbtxt(self, path: str) -> None: ... + + def getLayerId(self, layer: str) -> int: ... + + def getLayerNames(self) -> _typing.Sequence[str]: ... + + @_typing.overload + def getLayer(self, layerId: int) -> Layer: ... + @_typing.overload + def getLayer(self, layerName: str) -> Layer: ... + @_typing.overload + def getLayer(self, layerId: cv2.typing.LayerId) -> Layer: ... + + def connect(self, outPin: str, inpPin: str) -> None: ... + + def setInputsNames(self, inputBlobNames: _typing.Sequence[str]) -> None: ... + + def setInputShape(self, inputName: str, shape: cv2.typing.MatShape) -> None: ... + + @_typing.overload + def forward(self, outputName: str = ...) -> cv2.typing.MatLike: ... + @_typing.overload + def forward(self, outputBlobs: _typing.Sequence[cv2.typing.MatLike] | None = ..., outputName: str = ...) -> _typing.Sequence[cv2.typing.MatLike]: ... + @_typing.overload + def forward(self, outputBlobs: _typing.Sequence[cv2.UMat] | None = ..., outputName: str = ...) -> _typing.Sequence[cv2.UMat]: ... + @_typing.overload + def forward(self, outBlobNames: _typing.Sequence[str], outputBlobs: _typing.Sequence[cv2.typing.MatLike] | None = ...) -> _typing.Sequence[cv2.typing.MatLike]: ... + @_typing.overload + def forward(self, outBlobNames: _typing.Sequence[str], outputBlobs: _typing.Sequence[cv2.UMat] | None = ...) -> _typing.Sequence[cv2.UMat]: ... + + def forwardAsync(self, outputName: str = ...) -> cv2.AsyncArray: ... + + def forwardAndRetrieve(self, outBlobNames: _typing.Sequence[str]) -> _typing.Sequence[_typing.Sequence[cv2.typing.MatLike]]: ... + + @_typing.overload + def quantize(self, calibData: _typing.Sequence[cv2.typing.MatLike], inputsDtype: int, outputsDtype: int, perChannel: bool = ...) -> Net: ... + @_typing.overload + def quantize(self, calibData: _typing.Sequence[cv2.UMat], inputsDtype: int, outputsDtype: int, perChannel: bool = ...) -> Net: ... + + def getInputDetails(self) -> tuple[_typing.Sequence[float], _typing.Sequence[int]]: ... + + def getOutputDetails(self) -> tuple[_typing.Sequence[float], _typing.Sequence[int]]: ... + + def setHalideScheduler(self, scheduler: str) -> None: ... + + def setPreferableBackend(self, backendId: int) -> None: ... + + def setPreferableTarget(self, targetId: int) -> None: ... + + @_typing.overload + def setInput(self, blob: cv2.typing.MatLike, name: str = ..., scalefactor: float = ..., mean: cv2.typing.Scalar = ...) -> None: ... + @_typing.overload + def setInput(self, blob: cv2.UMat, name: str = ..., scalefactor: float = ..., mean: cv2.typing.Scalar = ...) -> None: ... + + @_typing.overload + def setParam(self, layer: int, numParam: int, blob: cv2.typing.MatLike) -> None: ... + @_typing.overload + def setParam(self, layerName: str, numParam: int, blob: cv2.typing.MatLike) -> None: ... + + @_typing.overload + def getParam(self, layer: int, numParam: int = ...) -> cv2.typing.MatLike: ... + @_typing.overload + def getParam(self, layerName: str, numParam: int = ...) -> cv2.typing.MatLike: ... + + def getUnconnectedOutLayers(self) -> _typing.Sequence[int]: ... + + def getUnconnectedOutLayersNames(self) -> _typing.Sequence[str]: ... + + @_typing.overload + def getLayersShapes(self, netInputShapes: _typing.Sequence[cv2.typing.MatShape]) -> tuple[_typing.Sequence[int], _typing.Sequence[_typing.Sequence[cv2.typing.MatShape]], _typing.Sequence[_typing.Sequence[cv2.typing.MatShape]]]: ... + @_typing.overload + def getLayersShapes(self, netInputShape: cv2.typing.MatShape) -> tuple[_typing.Sequence[int], _typing.Sequence[_typing.Sequence[cv2.typing.MatShape]], _typing.Sequence[_typing.Sequence[cv2.typing.MatShape]]]: ... + + @_typing.overload + def getFLOPS(self, netInputShapes: _typing.Sequence[cv2.typing.MatShape]) -> int: ... + @_typing.overload + def getFLOPS(self, netInputShape: cv2.typing.MatShape) -> int: ... + @_typing.overload + def getFLOPS(self, layerId: int, netInputShapes: _typing.Sequence[cv2.typing.MatShape]) -> int: ... + @_typing.overload + def getFLOPS(self, layerId: int, netInputShape: cv2.typing.MatShape) -> int: ... + + def getLayerTypes(self) -> _typing.Sequence[str]: ... + + def getLayersCount(self, layerType: str) -> int: ... + + @_typing.overload + def getMemoryConsumption(self, netInputShape: cv2.typing.MatShape) -> tuple[int, int]: ... + @_typing.overload + def getMemoryConsumption(self, layerId: int, netInputShapes: _typing.Sequence[cv2.typing.MatShape]) -> tuple[int, int]: ... + @_typing.overload + def getMemoryConsumption(self, layerId: int, netInputShape: cv2.typing.MatShape) -> tuple[int, int]: ... + + def enableFusion(self, fusion: bool) -> None: ... + + def enableWinograd(self, useWinograd: bool) -> None: ... + + def getPerfProfile(self) -> tuple[int, _typing.Sequence[float]]: ... + + +class Image2BlobParams: + scalefactor: cv2.typing.Scalar + size: cv2.typing.Size + mean: cv2.typing.Scalar + swapRB: bool + ddepth: int + datalayout: DataLayout + paddingmode: ImagePaddingMode + borderValue: cv2.typing.Scalar + + # Functions + @_typing.overload + def __init__(self) -> None: ... + @_typing.overload + def __init__(self, scalefactor: cv2.typing.Scalar, size: cv2.typing.Size = ..., mean: cv2.typing.Scalar = ..., swapRB: bool = ..., ddepth: int = ..., datalayout: DataLayout = ..., mode: ImagePaddingMode = ..., borderValue: cv2.typing.Scalar = ...) -> None: ... + + def blobRectToImageRect(self, rBlob: cv2.typing.Rect, size: cv2.typing.Size) -> cv2.typing.Rect: ... + + def blobRectsToImageRects(self, rBlob: _typing.Sequence[cv2.typing.Rect], size: cv2.typing.Size) -> _typing.Sequence[cv2.typing.Rect]: ... + + +class Model: + # Functions + @_typing.overload + def __init__(self, model: str, config: str = ...) -> None: ... + @_typing.overload + def __init__(self, network: Net) -> None: ... + + @_typing.overload + def setInputSize(self, size: cv2.typing.Size) -> Model: ... + @_typing.overload + def setInputSize(self, width: int, height: int) -> Model: ... + + def setInputMean(self, mean: cv2.typing.Scalar) -> Model: ... + + def setInputScale(self, scale: cv2.typing.Scalar) -> Model: ... + + def setInputCrop(self, crop: bool) -> Model: ... + + def setInputSwapRB(self, swapRB: bool) -> Model: ... + + def setOutputNames(self, outNames: _typing.Sequence[str]) -> Model: ... + + def setInputParams(self, scale: float = ..., size: cv2.typing.Size = ..., mean: cv2.typing.Scalar = ..., swapRB: bool = ..., crop: bool = ...) -> None: ... + + @_typing.overload + def predict(self, frame: cv2.typing.MatLike, outs: _typing.Sequence[cv2.typing.MatLike] | None = ...) -> _typing.Sequence[cv2.typing.MatLike]: ... + @_typing.overload + def predict(self, frame: cv2.UMat, outs: _typing.Sequence[cv2.UMat] | None = ...) -> _typing.Sequence[cv2.UMat]: ... + + def setPreferableBackend(self, backendId: Backend) -> Model: ... + + def setPreferableTarget(self, targetId: Target) -> Model: ... + + def enableWinograd(self, useWinograd: bool) -> Model: ... + + +class ClassificationModel(Model): + # Functions + @_typing.overload + def __init__(self, model: str, config: str = ...) -> None: ... + @_typing.overload + def __init__(self, network: Net) -> None: ... + + def setEnableSoftmaxPostProcessing(self, enable: bool) -> ClassificationModel: ... + + def getEnableSoftmaxPostProcessing(self) -> bool: ... + + @_typing.overload + def classify(self, frame: cv2.typing.MatLike) -> tuple[int, float]: ... + @_typing.overload + def classify(self, frame: cv2.UMat) -> tuple[int, float]: ... + + +class KeypointsModel(Model): + # Functions + @_typing.overload + def __init__(self, model: str, config: str = ...) -> None: ... + @_typing.overload + def __init__(self, network: Net) -> None: ... + + @_typing.overload + def estimate(self, frame: cv2.typing.MatLike, thresh: float = ...) -> _typing.Sequence[cv2.typing.Point2f]: ... + @_typing.overload + def estimate(self, frame: cv2.UMat, thresh: float = ...) -> _typing.Sequence[cv2.typing.Point2f]: ... + + +class SegmentationModel(Model): + # Functions + @_typing.overload + def __init__(self, model: str, config: str = ...) -> None: ... + @_typing.overload + def __init__(self, network: Net) -> None: ... + + @_typing.overload + def segment(self, frame: cv2.typing.MatLike, mask: cv2.typing.MatLike | None = ...) -> cv2.typing.MatLike: ... + @_typing.overload + def segment(self, frame: cv2.UMat, mask: cv2.UMat | None = ...) -> cv2.UMat: ... + + +class DetectionModel(Model): + # Functions + @_typing.overload + def __init__(self, model: str, config: str = ...) -> None: ... + @_typing.overload + def __init__(self, network: Net) -> None: ... + + def setNmsAcrossClasses(self, value: bool) -> DetectionModel: ... + + def getNmsAcrossClasses(self) -> bool: ... + + @_typing.overload + def detect(self, frame: cv2.typing.MatLike, confThreshold: float = ..., nmsThreshold: float = ...) -> tuple[_typing.Sequence[int], _typing.Sequence[float], _typing.Sequence[cv2.typing.Rect]]: ... + @_typing.overload + def detect(self, frame: cv2.UMat, confThreshold: float = ..., nmsThreshold: float = ...) -> tuple[_typing.Sequence[int], _typing.Sequence[float], _typing.Sequence[cv2.typing.Rect]]: ... + + +class TextRecognitionModel(Model): + # Functions + @_typing.overload + def __init__(self, network: Net) -> None: ... + @_typing.overload + def __init__(self, model: str, config: str = ...) -> None: ... + + def setDecodeType(self, decodeType: str) -> TextRecognitionModel: ... + + def getDecodeType(self) -> str: ... + + def setDecodeOptsCTCPrefixBeamSearch(self, beamSize: int, vocPruneSize: int = ...) -> TextRecognitionModel: ... + + def setVocabulary(self, vocabulary: _typing.Sequence[str]) -> TextRecognitionModel: ... + + def getVocabulary(self) -> _typing.Sequence[str]: ... + + @_typing.overload + def recognize(self, frame: cv2.typing.MatLike) -> str: ... + @_typing.overload + def recognize(self, frame: cv2.UMat) -> str: ... + @_typing.overload + def recognize(self, frame: cv2.typing.MatLike, roiRects: _typing.Sequence[cv2.typing.MatLike]) -> _typing.Sequence[str]: ... + @_typing.overload + def recognize(self, frame: cv2.UMat, roiRects: _typing.Sequence[cv2.UMat]) -> _typing.Sequence[str]: ... + + +class TextDetectionModel(Model): + # Functions + @_typing.overload + def detect(self, frame: cv2.typing.MatLike) -> tuple[_typing.Sequence[_typing.Sequence[cv2.typing.Point]], _typing.Sequence[float]]: ... + @_typing.overload + def detect(self, frame: cv2.UMat) -> tuple[_typing.Sequence[_typing.Sequence[cv2.typing.Point]], _typing.Sequence[float]]: ... + @_typing.overload + def detect(self, frame: cv2.typing.MatLike) -> _typing.Sequence[_typing.Sequence[cv2.typing.Point]]: ... + @_typing.overload + def detect(self, frame: cv2.UMat) -> _typing.Sequence[_typing.Sequence[cv2.typing.Point]]: ... + + @_typing.overload + def detectTextRectangles(self, frame: cv2.typing.MatLike) -> tuple[_typing.Sequence[cv2.typing.RotatedRect], _typing.Sequence[float]]: ... + @_typing.overload + def detectTextRectangles(self, frame: cv2.UMat) -> tuple[_typing.Sequence[cv2.typing.RotatedRect], _typing.Sequence[float]]: ... + @_typing.overload + def detectTextRectangles(self, frame: cv2.typing.MatLike) -> _typing.Sequence[cv2.typing.RotatedRect]: ... + @_typing.overload + def detectTextRectangles(self, frame: cv2.UMat) -> _typing.Sequence[cv2.typing.RotatedRect]: ... + + +class TextDetectionModel_EAST(TextDetectionModel): + # Functions + @_typing.overload + def __init__(self, network: Net) -> None: ... + @_typing.overload + def __init__(self, model: str, config: str = ...) -> None: ... + + def setConfidenceThreshold(self, confThreshold: float) -> TextDetectionModel_EAST: ... + + def getConfidenceThreshold(self) -> float: ... + + def setNMSThreshold(self, nmsThreshold: float) -> TextDetectionModel_EAST: ... + + def getNMSThreshold(self) -> float: ... + + +class TextDetectionModel_DB(TextDetectionModel): + # Functions + @_typing.overload + def __init__(self, network: Net) -> None: ... + @_typing.overload + def __init__(self, model: str, config: str = ...) -> None: ... + + def setBinaryThreshold(self, binaryThreshold: float) -> TextDetectionModel_DB: ... + + def getBinaryThreshold(self) -> float: ... + + def setPolygonThreshold(self, polygonThreshold: float) -> TextDetectionModel_DB: ... + + def getPolygonThreshold(self) -> float: ... + + def setUnclipRatio(self, unclipRatio: float) -> TextDetectionModel_DB: ... + + def getUnclipRatio(self) -> float: ... + + def setMaxCandidates(self, maxCandidates: int) -> TextDetectionModel_DB: ... + + def getMaxCandidates(self) -> int: ... + + +class LayerProtocol(Protocol): + # Functions + def __init__(self, params: dict[str, DictValue], blobs: _typing.Sequence[cv2.typing.MatLike]) -> None: ... + + def getMemoryShapes(self, inputs: _typing.Sequence[_typing.Sequence[int]]) -> _typing.Sequence[_typing.Sequence[int]]: ... + + def forward(self, inputs: _typing.Sequence[cv2.typing.MatLike]) -> _typing.Sequence[cv2.typing.MatLike]: ... + + + +# Functions +def NMSBoxes(bboxes: _typing.Sequence[cv2.typing.Rect2d], scores: _typing.Sequence[float], score_threshold: float, nms_threshold: float, eta: float = ..., top_k: int = ...) -> _typing.Sequence[int]: ... + +def NMSBoxesBatched(bboxes: _typing.Sequence[cv2.typing.Rect2d], scores: _typing.Sequence[float], class_ids: _typing.Sequence[int], score_threshold: float, nms_threshold: float, eta: float = ..., top_k: int = ...) -> _typing.Sequence[int]: ... + +def NMSBoxesRotated(bboxes: _typing.Sequence[cv2.typing.RotatedRect], scores: _typing.Sequence[float], score_threshold: float, nms_threshold: float, eta: float = ..., top_k: int = ...) -> _typing.Sequence[int]: ... + +@_typing.overload +def blobFromImage(image: cv2.typing.MatLike, scalefactor: float = ..., size: cv2.typing.Size = ..., mean: cv2.typing.Scalar = ..., swapRB: bool = ..., crop: bool = ..., ddepth: int = ...) -> cv2.typing.MatLike: ... +@_typing.overload +def blobFromImage(image: cv2.UMat, scalefactor: float = ..., size: cv2.typing.Size = ..., mean: cv2.typing.Scalar = ..., swapRB: bool = ..., crop: bool = ..., ddepth: int = ...) -> cv2.typing.MatLike: ... + +@_typing.overload +def blobFromImageWithParams(image: cv2.typing.MatLike, param: Image2BlobParams = ...) -> cv2.typing.MatLike: ... +@_typing.overload +def blobFromImageWithParams(image: cv2.UMat, param: Image2BlobParams = ...) -> cv2.typing.MatLike: ... +@_typing.overload +def blobFromImageWithParams(image: cv2.typing.MatLike, blob: cv2.typing.MatLike | None = ..., param: Image2BlobParams = ...) -> cv2.typing.MatLike: ... +@_typing.overload +def blobFromImageWithParams(image: cv2.UMat, blob: cv2.UMat | None = ..., param: Image2BlobParams = ...) -> cv2.UMat: ... + +@_typing.overload +def blobFromImages(images: _typing.Sequence[cv2.typing.MatLike], scalefactor: float = ..., size: cv2.typing.Size = ..., mean: cv2.typing.Scalar = ..., swapRB: bool = ..., crop: bool = ..., ddepth: int = ...) -> cv2.typing.MatLike: ... +@_typing.overload +def blobFromImages(images: _typing.Sequence[cv2.UMat], scalefactor: float = ..., size: cv2.typing.Size = ..., mean: cv2.typing.Scalar = ..., swapRB: bool = ..., crop: bool = ..., ddepth: int = ...) -> cv2.typing.MatLike: ... + +@_typing.overload +def blobFromImagesWithParams(images: _typing.Sequence[cv2.typing.MatLike], param: Image2BlobParams = ...) -> cv2.typing.MatLike: ... +@_typing.overload +def blobFromImagesWithParams(images: _typing.Sequence[cv2.UMat], param: Image2BlobParams = ...) -> cv2.typing.MatLike: ... +@_typing.overload +def blobFromImagesWithParams(images: _typing.Sequence[cv2.typing.MatLike], blob: cv2.typing.MatLike | None = ..., param: Image2BlobParams = ...) -> cv2.typing.MatLike: ... +@_typing.overload +def blobFromImagesWithParams(images: _typing.Sequence[cv2.UMat], blob: cv2.UMat | None = ..., param: Image2BlobParams = ...) -> cv2.UMat: ... + +def getAvailableTargets(be: Backend) -> _typing.Sequence[Target]: ... + +@_typing.overload +def imagesFromBlob(blob_: cv2.typing.MatLike, images_: _typing.Sequence[cv2.typing.MatLike] | None = ...) -> _typing.Sequence[cv2.typing.MatLike]: ... +@_typing.overload +def imagesFromBlob(blob_: cv2.typing.MatLike, images_: _typing.Sequence[cv2.UMat] | None = ...) -> _typing.Sequence[cv2.UMat]: ... + +@_typing.overload +def readNet(model: str, config: str = ..., framework: str = ...) -> Net: ... +@_typing.overload +def readNet(framework: str, bufferModel: numpy.ndarray[_typing.Any, numpy.dtype[numpy.uint8]], bufferConfig: numpy.ndarray[_typing.Any, numpy.dtype[numpy.uint8]] = ...) -> Net: ... + +@_typing.overload +def readNetFromCaffe(prototxt: str, caffeModel: str = ...) -> Net: ... +@_typing.overload +def readNetFromCaffe(bufferProto: numpy.ndarray[_typing.Any, numpy.dtype[numpy.uint8]], bufferModel: numpy.ndarray[_typing.Any, numpy.dtype[numpy.uint8]] = ...) -> Net: ... + +@_typing.overload +def readNetFromDarknet(cfgFile: str, darknetModel: str = ...) -> Net: ... +@_typing.overload +def readNetFromDarknet(bufferCfg: numpy.ndarray[_typing.Any, numpy.dtype[numpy.uint8]], bufferModel: numpy.ndarray[_typing.Any, numpy.dtype[numpy.uint8]] = ...) -> Net: ... + +@_typing.overload +def readNetFromModelOptimizer(xml: str, bin: str = ...) -> Net: ... +@_typing.overload +def readNetFromModelOptimizer(bufferModelConfig: numpy.ndarray[_typing.Any, numpy.dtype[numpy.uint8]], bufferWeights: numpy.ndarray[_typing.Any, numpy.dtype[numpy.uint8]]) -> Net: ... + +@_typing.overload +def readNetFromONNX(onnxFile: str) -> Net: ... +@_typing.overload +def readNetFromONNX(buffer: numpy.ndarray[_typing.Any, numpy.dtype[numpy.uint8]]) -> Net: ... + +@_typing.overload +def readNetFromTFLite(model: str) -> Net: ... +@_typing.overload +def readNetFromTFLite(bufferModel: numpy.ndarray[_typing.Any, numpy.dtype[numpy.uint8]]) -> Net: ... + +@_typing.overload +def readNetFromTensorflow(model: str, config: str = ...) -> Net: ... +@_typing.overload +def readNetFromTensorflow(bufferModel: numpy.ndarray[_typing.Any, numpy.dtype[numpy.uint8]], bufferConfig: numpy.ndarray[_typing.Any, numpy.dtype[numpy.uint8]] = ...) -> Net: ... + +def readNetFromTorch(model: str, isBinary: bool = ..., evaluate: bool = ...) -> Net: ... + +def readTensorFromONNX(path: str) -> cv2.typing.MatLike: ... + +def readTorchBlob(filename: str, isBinary: bool = ...) -> cv2.typing.MatLike: ... + +def shrinkCaffeModel(src: str, dst: str, layersTypes: _typing.Sequence[str] = ...) -> None: ... + +def softNMSBoxes(bboxes: _typing.Sequence[cv2.typing.Rect], scores: _typing.Sequence[float], score_threshold: float, nms_threshold: float, top_k: int = ..., sigma: float = ..., method: SoftNMSMethod = ...) -> tuple[_typing.Sequence[float], _typing.Sequence[int]]: ... + +def writeTextGraph(model: str, output: str) -> None: ... + + diff --git a/venv/lib/python3.11/site-packages/cv2/fisheye/__init__.pyi b/venv/lib/python3.11/site-packages/cv2/fisheye/__init__.pyi new file mode 100644 index 0000000000000000000000000000000000000000..76bcea50f6fa267fd47027120c78360b4cc21f43 --- /dev/null +++ b/venv/lib/python3.11/site-packages/cv2/fisheye/__init__.pyi @@ -0,0 +1,79 @@ +__all__: list[str] = [] + +import cv2 +import cv2.typing +import typing as _typing + + +# Enumerations +CALIB_USE_INTRINSIC_GUESS: int +CALIB_RECOMPUTE_EXTRINSIC: int +CALIB_CHECK_COND: int +CALIB_FIX_SKEW: int +CALIB_FIX_K1: int +CALIB_FIX_K2: int +CALIB_FIX_K3: int +CALIB_FIX_K4: int +CALIB_FIX_INTRINSIC: int +CALIB_FIX_PRINCIPAL_POINT: int +CALIB_ZERO_DISPARITY: int +CALIB_FIX_FOCAL_LENGTH: int + + + +# Functions +@_typing.overload +def calibrate(objectPoints: _typing.Sequence[cv2.typing.MatLike], imagePoints: _typing.Sequence[cv2.typing.MatLike], image_size: cv2.typing.Size, K: cv2.typing.MatLike, D: cv2.typing.MatLike, rvecs: _typing.Sequence[cv2.typing.MatLike] | None = ..., tvecs: _typing.Sequence[cv2.typing.MatLike] | None = ..., flags: int = ..., criteria: cv2.typing.TermCriteria = ...) -> tuple[float, cv2.typing.MatLike, cv2.typing.MatLike, _typing.Sequence[cv2.typing.MatLike], _typing.Sequence[cv2.typing.MatLike]]: ... +@_typing.overload +def calibrate(objectPoints: _typing.Sequence[cv2.UMat], imagePoints: _typing.Sequence[cv2.UMat], image_size: cv2.typing.Size, K: cv2.UMat, D: cv2.UMat, rvecs: _typing.Sequence[cv2.UMat] | None = ..., tvecs: _typing.Sequence[cv2.UMat] | None = ..., flags: int = ..., criteria: cv2.typing.TermCriteria = ...) -> tuple[float, cv2.UMat, cv2.UMat, _typing.Sequence[cv2.UMat], _typing.Sequence[cv2.UMat]]: ... + +@_typing.overload +def distortPoints(undistorted: cv2.typing.MatLike, K: cv2.typing.MatLike, D: cv2.typing.MatLike, distorted: cv2.typing.MatLike | None = ..., alpha: float = ...) -> cv2.typing.MatLike: ... +@_typing.overload +def distortPoints(undistorted: cv2.UMat, K: cv2.UMat, D: cv2.UMat, distorted: cv2.UMat | None = ..., alpha: float = ...) -> cv2.UMat: ... + +@_typing.overload +def estimateNewCameraMatrixForUndistortRectify(K: cv2.typing.MatLike, D: cv2.typing.MatLike, image_size: cv2.typing.Size, R: cv2.typing.MatLike, P: cv2.typing.MatLike | None = ..., balance: float = ..., new_size: cv2.typing.Size = ..., fov_scale: float = ...) -> cv2.typing.MatLike: ... +@_typing.overload +def estimateNewCameraMatrixForUndistortRectify(K: cv2.UMat, D: cv2.UMat, image_size: cv2.typing.Size, R: cv2.UMat, P: cv2.UMat | None = ..., balance: float = ..., new_size: cv2.typing.Size = ..., fov_scale: float = ...) -> cv2.UMat: ... + +@_typing.overload +def initUndistortRectifyMap(K: cv2.typing.MatLike, D: cv2.typing.MatLike, R: cv2.typing.MatLike, P: cv2.typing.MatLike, size: cv2.typing.Size, m1type: int, map1: cv2.typing.MatLike | None = ..., map2: cv2.typing.MatLike | None = ...) -> tuple[cv2.typing.MatLike, cv2.typing.MatLike]: ... +@_typing.overload +def initUndistortRectifyMap(K: cv2.UMat, D: cv2.UMat, R: cv2.UMat, P: cv2.UMat, size: cv2.typing.Size, m1type: int, map1: cv2.UMat | None = ..., map2: cv2.UMat | None = ...) -> tuple[cv2.UMat, cv2.UMat]: ... + +@_typing.overload +def projectPoints(objectPoints: cv2.typing.MatLike, rvec: cv2.typing.MatLike, tvec: cv2.typing.MatLike, K: cv2.typing.MatLike, D: cv2.typing.MatLike, imagePoints: cv2.typing.MatLike | None = ..., alpha: float = ..., jacobian: cv2.typing.MatLike | None = ...) -> tuple[cv2.typing.MatLike, cv2.typing.MatLike]: ... +@_typing.overload +def projectPoints(objectPoints: cv2.UMat, rvec: cv2.UMat, tvec: cv2.UMat, K: cv2.UMat, D: cv2.UMat, imagePoints: cv2.UMat | None = ..., alpha: float = ..., jacobian: cv2.UMat | None = ...) -> tuple[cv2.UMat, cv2.UMat]: ... + +@_typing.overload +def solvePnP(objectPoints: cv2.typing.MatLike, imagePoints: cv2.typing.MatLike, cameraMatrix: cv2.typing.MatLike, distCoeffs: cv2.typing.MatLike, rvec: cv2.typing.MatLike | None = ..., tvec: cv2.typing.MatLike | None = ..., useExtrinsicGuess: bool = ..., flags: int = ..., criteria: cv2.typing.TermCriteria = ...) -> tuple[bool, cv2.typing.MatLike, cv2.typing.MatLike]: ... +@_typing.overload +def solvePnP(objectPoints: cv2.UMat, imagePoints: cv2.UMat, cameraMatrix: cv2.UMat, distCoeffs: cv2.UMat, rvec: cv2.UMat | None = ..., tvec: cv2.UMat | None = ..., useExtrinsicGuess: bool = ..., flags: int = ..., criteria: cv2.typing.TermCriteria = ...) -> tuple[bool, cv2.UMat, cv2.UMat]: ... + +@_typing.overload +def stereoCalibrate(objectPoints: _typing.Sequence[cv2.typing.MatLike], imagePoints1: _typing.Sequence[cv2.typing.MatLike], imagePoints2: _typing.Sequence[cv2.typing.MatLike], K1: cv2.typing.MatLike, D1: cv2.typing.MatLike, K2: cv2.typing.MatLike, D2: cv2.typing.MatLike, imageSize: cv2.typing.Size, R: cv2.typing.MatLike | None = ..., T: cv2.typing.MatLike | None = ..., rvecs: _typing.Sequence[cv2.typing.MatLike] | None = ..., tvecs: _typing.Sequence[cv2.typing.MatLike] | None = ..., flags: int = ..., criteria: cv2.typing.TermCriteria = ...) -> tuple[float, cv2.typing.MatLike, cv2.typing.MatLike, cv2.typing.MatLike, cv2.typing.MatLike, cv2.typing.MatLike, cv2.typing.MatLike, _typing.Sequence[cv2.typing.MatLike], _typing.Sequence[cv2.typing.MatLike]]: ... +@_typing.overload +def stereoCalibrate(objectPoints: _typing.Sequence[cv2.UMat], imagePoints1: _typing.Sequence[cv2.UMat], imagePoints2: _typing.Sequence[cv2.UMat], K1: cv2.UMat, D1: cv2.UMat, K2: cv2.UMat, D2: cv2.UMat, imageSize: cv2.typing.Size, R: cv2.UMat | None = ..., T: cv2.UMat | None = ..., rvecs: _typing.Sequence[cv2.UMat] | None = ..., tvecs: _typing.Sequence[cv2.UMat] | None = ..., flags: int = ..., criteria: cv2.typing.TermCriteria = ...) -> tuple[float, cv2.UMat, cv2.UMat, cv2.UMat, cv2.UMat, cv2.UMat, cv2.UMat, _typing.Sequence[cv2.UMat], _typing.Sequence[cv2.UMat]]: ... +@_typing.overload +def stereoCalibrate(objectPoints: _typing.Sequence[cv2.typing.MatLike], imagePoints1: _typing.Sequence[cv2.typing.MatLike], imagePoints2: _typing.Sequence[cv2.typing.MatLike], K1: cv2.typing.MatLike, D1: cv2.typing.MatLike, K2: cv2.typing.MatLike, D2: cv2.typing.MatLike, imageSize: cv2.typing.Size, R: cv2.typing.MatLike | None = ..., T: cv2.typing.MatLike | None = ..., flags: int = ..., criteria: cv2.typing.TermCriteria = ...) -> tuple[float, cv2.typing.MatLike, cv2.typing.MatLike, cv2.typing.MatLike, cv2.typing.MatLike, cv2.typing.MatLike, cv2.typing.MatLike]: ... +@_typing.overload +def stereoCalibrate(objectPoints: _typing.Sequence[cv2.UMat], imagePoints1: _typing.Sequence[cv2.UMat], imagePoints2: _typing.Sequence[cv2.UMat], K1: cv2.UMat, D1: cv2.UMat, K2: cv2.UMat, D2: cv2.UMat, imageSize: cv2.typing.Size, R: cv2.UMat | None = ..., T: cv2.UMat | None = ..., flags: int = ..., criteria: cv2.typing.TermCriteria = ...) -> tuple[float, cv2.UMat, cv2.UMat, cv2.UMat, cv2.UMat, cv2.UMat, cv2.UMat]: ... + +@_typing.overload +def stereoRectify(K1: cv2.typing.MatLike, D1: cv2.typing.MatLike, K2: cv2.typing.MatLike, D2: cv2.typing.MatLike, imageSize: cv2.typing.Size, R: cv2.typing.MatLike, tvec: cv2.typing.MatLike, flags: int, R1: cv2.typing.MatLike | None = ..., R2: cv2.typing.MatLike | None = ..., P1: cv2.typing.MatLike | None = ..., P2: cv2.typing.MatLike | None = ..., Q: cv2.typing.MatLike | None = ..., newImageSize: cv2.typing.Size = ..., balance: float = ..., fov_scale: float = ...) -> tuple[cv2.typing.MatLike, cv2.typing.MatLike, cv2.typing.MatLike, cv2.typing.MatLike, cv2.typing.MatLike]: ... +@_typing.overload +def stereoRectify(K1: cv2.UMat, D1: cv2.UMat, K2: cv2.UMat, D2: cv2.UMat, imageSize: cv2.typing.Size, R: cv2.UMat, tvec: cv2.UMat, flags: int, R1: cv2.UMat | None = ..., R2: cv2.UMat | None = ..., P1: cv2.UMat | None = ..., P2: cv2.UMat | None = ..., Q: cv2.UMat | None = ..., newImageSize: cv2.typing.Size = ..., balance: float = ..., fov_scale: float = ...) -> tuple[cv2.UMat, cv2.UMat, cv2.UMat, cv2.UMat, cv2.UMat]: ... + +@_typing.overload +def undistortImage(distorted: cv2.typing.MatLike, K: cv2.typing.MatLike, D: cv2.typing.MatLike, undistorted: cv2.typing.MatLike | None = ..., Knew: cv2.typing.MatLike | None = ..., new_size: cv2.typing.Size = ...) -> cv2.typing.MatLike: ... +@_typing.overload +def undistortImage(distorted: cv2.UMat, K: cv2.UMat, D: cv2.UMat, undistorted: cv2.UMat | None = ..., Knew: cv2.UMat | None = ..., new_size: cv2.typing.Size = ...) -> cv2.UMat: ... + +@_typing.overload +def undistortPoints(distorted: cv2.typing.MatLike, K: cv2.typing.MatLike, D: cv2.typing.MatLike, undistorted: cv2.typing.MatLike | None = ..., R: cv2.typing.MatLike | None = ..., P: cv2.typing.MatLike | None = ..., criteria: cv2.typing.TermCriteria = ...) -> cv2.typing.MatLike: ... +@_typing.overload +def undistortPoints(distorted: cv2.UMat, K: cv2.UMat, D: cv2.UMat, undistorted: cv2.UMat | None = ..., R: cv2.UMat | None = ..., P: cv2.UMat | None = ..., criteria: cv2.typing.TermCriteria = ...) -> cv2.UMat: ... + + diff --git a/venv/lib/python3.11/site-packages/cv2/flann/__init__.pyi b/venv/lib/python3.11/site-packages/cv2/flann/__init__.pyi new file mode 100644 index 0000000000000000000000000000000000000000..a107c75226d71aa41e3e225d318761cf754527e4 --- /dev/null +++ b/venv/lib/python3.11/site-packages/cv2/flann/__init__.pyi @@ -0,0 +1,64 @@ +__all__: list[str] = [] + +import cv2 +import cv2.typing +import typing as _typing + + +# Enumerations +FLANN_INDEX_TYPE_8U: int +FLANN_INDEX_TYPE_8S: int +FLANN_INDEX_TYPE_16U: int +FLANN_INDEX_TYPE_16S: int +FLANN_INDEX_TYPE_32S: int +FLANN_INDEX_TYPE_32F: int +FLANN_INDEX_TYPE_64F: int +FLANN_INDEX_TYPE_STRING: int +FLANN_INDEX_TYPE_BOOL: int +FLANN_INDEX_TYPE_ALGORITHM: int +LAST_VALUE_FLANN_INDEX_TYPE: int +FlannIndexType = int +"""One of [FLANN_INDEX_TYPE_8U, FLANN_INDEX_TYPE_8S, FLANN_INDEX_TYPE_16U, FLANN_INDEX_TYPE_16S, FLANN_INDEX_TYPE_32S, FLANN_INDEX_TYPE_32F, FLANN_INDEX_TYPE_64F, FLANN_INDEX_TYPE_STRING, FLANN_INDEX_TYPE_BOOL, FLANN_INDEX_TYPE_ALGORITHM, LAST_VALUE_FLANN_INDEX_TYPE]""" + + + +# Classes +class Index: + # Functions + @_typing.overload + def __init__(self) -> None: ... + @_typing.overload + def __init__(self, features: cv2.typing.MatLike, params: cv2.typing.IndexParams, distType: int = ...) -> None: ... + @_typing.overload + def __init__(self, features: cv2.UMat, params: cv2.typing.IndexParams, distType: int = ...) -> None: ... + + @_typing.overload + def build(self, features: cv2.typing.MatLike, params: cv2.typing.IndexParams, distType: int = ...) -> None: ... + @_typing.overload + def build(self, features: cv2.UMat, params: cv2.typing.IndexParams, distType: int = ...) -> None: ... + + @_typing.overload + def knnSearch(self, query: cv2.typing.MatLike, knn: int, indices: cv2.typing.MatLike | None = ..., dists: cv2.typing.MatLike | None = ..., params: cv2.typing.SearchParams = ...) -> tuple[cv2.typing.MatLike, cv2.typing.MatLike]: ... + @_typing.overload + def knnSearch(self, query: cv2.UMat, knn: int, indices: cv2.UMat | None = ..., dists: cv2.UMat | None = ..., params: cv2.typing.SearchParams = ...) -> tuple[cv2.UMat, cv2.UMat]: ... + + @_typing.overload + def radiusSearch(self, query: cv2.typing.MatLike, radius: float, maxResults: int, indices: cv2.typing.MatLike | None = ..., dists: cv2.typing.MatLike | None = ..., params: cv2.typing.SearchParams = ...) -> tuple[int, cv2.typing.MatLike, cv2.typing.MatLike]: ... + @_typing.overload + def radiusSearch(self, query: cv2.UMat, radius: float, maxResults: int, indices: cv2.UMat | None = ..., dists: cv2.UMat | None = ..., params: cv2.typing.SearchParams = ...) -> tuple[int, cv2.UMat, cv2.UMat]: ... + + def save(self, filename: str) -> None: ... + + @_typing.overload + def load(self, features: cv2.typing.MatLike, filename: str) -> bool: ... + @_typing.overload + def load(self, features: cv2.UMat, filename: str) -> bool: ... + + def release(self) -> None: ... + + def getDistance(self) -> int: ... + + def getAlgorithm(self) -> int: ... + + + diff --git a/venv/lib/python3.11/site-packages/cv2/gapi/__init__.py b/venv/lib/python3.11/site-packages/cv2/gapi/__init__.py new file mode 100644 index 0000000000000000000000000000000000000000..2b21e54e4195658f71a4d90d8a1d8b993710010b --- /dev/null +++ b/venv/lib/python3.11/site-packages/cv2/gapi/__init__.py @@ -0,0 +1,323 @@ +__all__ = ['op', 'kernel'] + +import sys +import cv2 as cv + +# NB: Register function in specific module +def register(mname): + def parameterized(func): + sys.modules[mname].__dict__[func.__name__] = func + return func + return parameterized + + +@register('cv2.gapi') +def networks(*args): + return cv.gapi_GNetPackage(list(map(cv.detail.strip, args))) + + +@register('cv2.gapi') +def compile_args(*args): + return list(map(cv.GCompileArg, args)) + + +@register('cv2') +def GIn(*args): + return [*args] + + +@register('cv2') +def GOut(*args): + return [*args] + + +@register('cv2') +def gin(*args): + return [*args] + + +@register('cv2.gapi') +def descr_of(*args): + return [*args] + + +@register('cv2') +class GOpaque(): + # NB: Inheritance from c++ class cause segfault. + # So just aggregate cv.GOpaqueT instead of inheritance + def __new__(cls, argtype): + return cv.GOpaqueT(argtype) + + class Bool(): + def __new__(self): + return cv.GOpaqueT(cv.gapi.CV_BOOL) + + class Int(): + def __new__(self): + return cv.GOpaqueT(cv.gapi.CV_INT) + + class Int64(): + def __new__(self): + return cv.GOpaqueT(cv.gapi.CV_INT64) + + class UInt64(): + def __new__(self): + return cv.GOpaqueT(cv.gapi.CV_UINT64) + + class Double(): + def __new__(self): + return cv.GOpaqueT(cv.gapi.CV_DOUBLE) + + class Float(): + def __new__(self): + return cv.GOpaqueT(cv.gapi.CV_FLOAT) + + class String(): + def __new__(self): + return cv.GOpaqueT(cv.gapi.CV_STRING) + + class Point(): + def __new__(self): + return cv.GOpaqueT(cv.gapi.CV_POINT) + + class Point2f(): + def __new__(self): + return cv.GOpaqueT(cv.gapi.CV_POINT2F) + + class Point3f(): + def __new__(self): + return cv.GOpaqueT(cv.gapi.CV_POINT3F) + + class Size(): + def __new__(self): + return cv.GOpaqueT(cv.gapi.CV_SIZE) + + class Rect(): + def __new__(self): + return cv.GOpaqueT(cv.gapi.CV_RECT) + + class Prim(): + def __new__(self): + return cv.GOpaqueT(cv.gapi.CV_DRAW_PRIM) + + class Any(): + def __new__(self): + return cv.GOpaqueT(cv.gapi.CV_ANY) + +@register('cv2') +class GArray(): + # NB: Inheritance from c++ class cause segfault. + # So just aggregate cv.GArrayT instead of inheritance + def __new__(cls, argtype): + return cv.GArrayT(argtype) + + class Bool(): + def __new__(self): + return cv.GArrayT(cv.gapi.CV_BOOL) + + class Int(): + def __new__(self): + return cv.GArrayT(cv.gapi.CV_INT) + + class Int64(): + def __new__(self): + return cv.GArrayT(cv.gapi.CV_INT64) + + class UInt64(): + def __new__(self): + return cv.GArrayT(cv.gapi.CV_UINT64) + + class Double(): + def __new__(self): + return cv.GArrayT(cv.gapi.CV_DOUBLE) + + class Float(): + def __new__(self): + return cv.GArrayT(cv.gapi.CV_FLOAT) + + class String(): + def __new__(self): + return cv.GArrayT(cv.gapi.CV_STRING) + + class Point(): + def __new__(self): + return cv.GArrayT(cv.gapi.CV_POINT) + + class Point2f(): + def __new__(self): + return cv.GArrayT(cv.gapi.CV_POINT2F) + + class Point3f(): + def __new__(self): + return cv.GArrayT(cv.gapi.CV_POINT3F) + + class Size(): + def __new__(self): + return cv.GArrayT(cv.gapi.CV_SIZE) + + class Rect(): + def __new__(self): + return cv.GArrayT(cv.gapi.CV_RECT) + + class Scalar(): + def __new__(self): + return cv.GArrayT(cv.gapi.CV_SCALAR) + + class Mat(): + def __new__(self): + return cv.GArrayT(cv.gapi.CV_MAT) + + class GMat(): + def __new__(self): + return cv.GArrayT(cv.gapi.CV_GMAT) + + class Prim(): + def __new__(self): + return cv.GArray(cv.gapi.CV_DRAW_PRIM) + + class Any(): + def __new__(self): + return cv.GArray(cv.gapi.CV_ANY) + + +# NB: Top lvl decorator takes arguments +def op(op_id, in_types, out_types): + + garray_types= { + cv.GArray.Bool: cv.gapi.CV_BOOL, + cv.GArray.Int: cv.gapi.CV_INT, + cv.GArray.Int64: cv.gapi.CV_INT64, + cv.GArray.UInt64: cv.gapi.CV_UINT64, + cv.GArray.Double: cv.gapi.CV_DOUBLE, + cv.GArray.Float: cv.gapi.CV_FLOAT, + cv.GArray.String: cv.gapi.CV_STRING, + cv.GArray.Point: cv.gapi.CV_POINT, + cv.GArray.Point2f: cv.gapi.CV_POINT2F, + cv.GArray.Point3f: cv.gapi.CV_POINT3F, + cv.GArray.Size: cv.gapi.CV_SIZE, + cv.GArray.Rect: cv.gapi.CV_RECT, + cv.GArray.Scalar: cv.gapi.CV_SCALAR, + cv.GArray.Mat: cv.gapi.CV_MAT, + cv.GArray.GMat: cv.gapi.CV_GMAT, + cv.GArray.Prim: cv.gapi.CV_DRAW_PRIM, + cv.GArray.Any: cv.gapi.CV_ANY + } + + gopaque_types= { + cv.GOpaque.Size: cv.gapi.CV_SIZE, + cv.GOpaque.Rect: cv.gapi.CV_RECT, + cv.GOpaque.Bool: cv.gapi.CV_BOOL, + cv.GOpaque.Int: cv.gapi.CV_INT, + cv.GOpaque.Int64: cv.gapi.CV_INT64, + cv.GOpaque.UInt64: cv.gapi.CV_UINT64, + cv.GOpaque.Double: cv.gapi.CV_DOUBLE, + cv.GOpaque.Float: cv.gapi.CV_FLOAT, + cv.GOpaque.String: cv.gapi.CV_STRING, + cv.GOpaque.Point: cv.gapi.CV_POINT, + cv.GOpaque.Point2f: cv.gapi.CV_POINT2F, + cv.GOpaque.Point3f: cv.gapi.CV_POINT3F, + cv.GOpaque.Size: cv.gapi.CV_SIZE, + cv.GOpaque.Rect: cv.gapi.CV_RECT, + cv.GOpaque.Prim: cv.gapi.CV_DRAW_PRIM, + cv.GOpaque.Any: cv.gapi.CV_ANY + } + + type2str = { + cv.gapi.CV_BOOL: 'cv.gapi.CV_BOOL' , + cv.gapi.CV_INT: 'cv.gapi.CV_INT' , + cv.gapi.CV_INT64: 'cv.gapi.CV_INT64' , + cv.gapi.CV_UINT64: 'cv.gapi.CV_UINT64' , + cv.gapi.CV_DOUBLE: 'cv.gapi.CV_DOUBLE' , + cv.gapi.CV_FLOAT: 'cv.gapi.CV_FLOAT' , + cv.gapi.CV_STRING: 'cv.gapi.CV_STRING' , + cv.gapi.CV_POINT: 'cv.gapi.CV_POINT' , + cv.gapi.CV_POINT2F: 'cv.gapi.CV_POINT2F' , + cv.gapi.CV_POINT3F: 'cv.gapi.CV_POINT3F' , + cv.gapi.CV_SIZE: 'cv.gapi.CV_SIZE', + cv.gapi.CV_RECT: 'cv.gapi.CV_RECT', + cv.gapi.CV_SCALAR: 'cv.gapi.CV_SCALAR', + cv.gapi.CV_MAT: 'cv.gapi.CV_MAT', + cv.gapi.CV_GMAT: 'cv.gapi.CV_GMAT', + cv.gapi.CV_DRAW_PRIM: 'cv.gapi.CV_DRAW_PRIM' + } + + # NB: Second lvl decorator takes class to decorate + def op_with_params(cls): + if not in_types: + raise Exception('{} operation should have at least one input!'.format(cls.__name__)) + + if not out_types: + raise Exception('{} operation should have at least one output!'.format(cls.__name__)) + + for i, t in enumerate(out_types): + if t not in [cv.GMat, cv.GScalar, *garray_types, *gopaque_types]: + raise Exception('{} unsupported output type: {} in position: {}' + .format(cls.__name__, t.__name__, i)) + + def on(*args): + if len(in_types) != len(args): + raise Exception('Invalid number of input elements!\nExpected: {}, Actual: {}' + .format(len(in_types), len(args))) + + for i, (t, a) in enumerate(zip(in_types, args)): + if t in garray_types: + if not isinstance(a, cv.GArrayT): + raise Exception("{} invalid type for argument {}.\nExpected: {}, Actual: {}" + .format(cls.__name__, i, cv.GArrayT.__name__, type(a).__name__)) + + elif a.type() != garray_types[t]: + raise Exception("{} invalid GArrayT type for argument {}.\nExpected: {}, Actual: {}" + .format(cls.__name__, i, type2str[garray_types[t]], type2str[a.type()])) + + elif t in gopaque_types: + if not isinstance(a, cv.GOpaqueT): + raise Exception("{} invalid type for argument {}.\nExpected: {}, Actual: {}" + .format(cls.__name__, i, cv.GOpaqueT.__name__, type(a).__name__)) + + elif a.type() != gopaque_types[t]: + raise Exception("{} invalid GOpaque type for argument {}.\nExpected: {}, Actual: {}" + .format(cls.__name__, i, type2str[gopaque_types[t]], type2str[a.type()])) + + else: + if t != type(a): + raise Exception('{} invalid input type for argument {}.\nExpected: {}, Actual: {}' + .format(cls.__name__, i, t.__name__, type(a).__name__)) + + op = cv.gapi.__op(op_id, cls.outMeta, *args) + + out_protos = [] + for i, out_type in enumerate(out_types): + if out_type == cv.GMat: + out_protos.append(op.getGMat()) + elif out_type == cv.GScalar: + out_protos.append(op.getGScalar()) + elif out_type in gopaque_types: + out_protos.append(op.getGOpaque(gopaque_types[out_type])) + elif out_type in garray_types: + out_protos.append(op.getGArray(garray_types[out_type])) + else: + raise Exception("""In {}: G-API operation can't produce the output with type: {} in position: {}""" + .format(cls.__name__, out_type.__name__, i)) + + return tuple(out_protos) if len(out_protos) != 1 else out_protos[0] + + # NB: Extend operation class + cls.id = op_id + cls.on = staticmethod(on) + return cls + + return op_with_params + + +def kernel(op_cls): + # NB: Second lvl decorator takes class to decorate + def kernel_with_params(cls): + # NB: Add new members to kernel class + cls.id = op_cls.id + cls.outMeta = op_cls.outMeta + return cls + + return kernel_with_params + + +cv.gapi.wip.GStreamerPipeline = cv.gapi_wip_gst_GStreamerPipeline diff --git a/venv/lib/python3.11/site-packages/cv2/gapi/__init__.pyi b/venv/lib/python3.11/site-packages/cv2/gapi/__init__.pyi new file mode 100644 index 0000000000000000000000000000000000000000..bdc68bd69c5b275a02c29b8605e8502d84f55bbe --- /dev/null +++ b/venv/lib/python3.11/site-packages/cv2/gapi/__init__.pyi @@ -0,0 +1,349 @@ +__all__: list[str] = [] + +import cv2 +import cv2.typing +import typing as _typing + + +from cv2.gapi import core as core +from cv2.gapi import ie as ie +from cv2.gapi import imgproc as imgproc +from cv2.gapi import oak as oak +from cv2.gapi import onnx as onnx +from cv2.gapi import ot as ot +from cv2.gapi import ov as ov +from cv2.gapi import own as own +from cv2.gapi import render as render +from cv2.gapi import streaming as streaming +from cv2.gapi import video as video +from cv2.gapi import wip as wip + + +# Enumerations +StereoOutputFormat_DEPTH_FLOAT16: int +STEREO_OUTPUT_FORMAT_DEPTH_FLOAT16: int +StereoOutputFormat_DEPTH_FLOAT32: int +STEREO_OUTPUT_FORMAT_DEPTH_FLOAT32: int +StereoOutputFormat_DISPARITY_FIXED16_11_5: int +STEREO_OUTPUT_FORMAT_DISPARITY_FIXED16_11_5: int +StereoOutputFormat_DISPARITY_FIXED16_12_4: int +STEREO_OUTPUT_FORMAT_DISPARITY_FIXED16_12_4: int +StereoOutputFormat_DEPTH_16F: int +STEREO_OUTPUT_FORMAT_DEPTH_16F: int +StereoOutputFormat_DEPTH_32F: int +STEREO_OUTPUT_FORMAT_DEPTH_32F: int +StereoOutputFormat_DISPARITY_16Q_10_5: int +STEREO_OUTPUT_FORMAT_DISPARITY_16Q_10_5: int +StereoOutputFormat_DISPARITY_16Q_11_4: int +STEREO_OUTPUT_FORMAT_DISPARITY_16Q_11_4: int +StereoOutputFormat = int +"""One of [StereoOutputFormat_DEPTH_FLOAT16, STEREO_OUTPUT_FORMAT_DEPTH_FLOAT16, StereoOutputFormat_DEPTH_FLOAT32, STEREO_OUTPUT_FORMAT_DEPTH_FLOAT32, StereoOutputFormat_DISPARITY_FIXED16_11_5, STEREO_OUTPUT_FORMAT_DISPARITY_FIXED16_11_5, StereoOutputFormat_DISPARITY_FIXED16_12_4, STEREO_OUTPUT_FORMAT_DISPARITY_FIXED16_12_4, StereoOutputFormat_DEPTH_16F, STEREO_OUTPUT_FORMAT_DEPTH_16F, StereoOutputFormat_DEPTH_32F, STEREO_OUTPUT_FORMAT_DEPTH_32F, StereoOutputFormat_DISPARITY_16Q_10_5, STEREO_OUTPUT_FORMAT_DISPARITY_16Q_10_5, StereoOutputFormat_DISPARITY_16Q_11_4, STEREO_OUTPUT_FORMAT_DISPARITY_16Q_11_4]""" + +CV_BOOL: int +CV_INT: int +CV_INT64: int +CV_UINT64: int +CV_DOUBLE: int +CV_FLOAT: int +CV_STRING: int +CV_POINT: int +CV_POINT2F: int +CV_POINT3F: int +CV_SIZE: int +CV_RECT: int +CV_SCALAR: int +CV_MAT: int +CV_GMAT: int +CV_DRAW_PRIM: int +CV_ANY: int +ArgType = int +"""One of [CV_BOOL, CV_INT, CV_INT64, CV_UINT64, CV_DOUBLE, CV_FLOAT, CV_STRING, CV_POINT, CV_POINT2F, CV_POINT3F, CV_SIZE, CV_RECT, CV_SCALAR, CV_MAT, CV_GMAT, CV_DRAW_PRIM, CV_ANY]""" + + + +# Classes +class GNetParam: + ... + +class GNetPackage: + # Functions + @_typing.overload + def __init__(self) -> None: ... + @_typing.overload + def __init__(self, nets: _typing.Sequence[GNetParam]) -> None: ... + + + +# Functions +def BGR2Gray(src: cv2.GMat) -> cv2.GMat: ... + +def BGR2I420(src: cv2.GMat) -> cv2.GMat: ... + +def BGR2LUV(src: cv2.GMat) -> cv2.GMat: ... + +def BGR2RGB(src: cv2.GMat) -> cv2.GMat: ... + +def BGR2YUV(src: cv2.GMat) -> cv2.GMat: ... + +def BayerGR2RGB(src_gr: cv2.GMat) -> cv2.GMat: ... + +def Canny(image: cv2.GMat, threshold1: float, threshold2: float, apertureSize: int = ..., L2gradient: bool = ...) -> cv2.GMat: ... + +def I4202BGR(src: cv2.GMat) -> cv2.GMat: ... + +def I4202RGB(src: cv2.GMat) -> cv2.GMat: ... + +def LUT(src: cv2.GMat, lut: cv2.typing.MatLike) -> cv2.GMat: ... + +def LUV2BGR(src: cv2.GMat) -> cv2.GMat: ... + +def Laplacian(src: cv2.GMat, ddepth: int, ksize: int = ..., scale: float = ..., delta: float = ..., borderType: int = ...) -> cv2.GMat: ... + +def NV12toBGR(src_y: cv2.GMat, src_uv: cv2.GMat) -> cv2.GMat: ... + +def NV12toGray(src_y: cv2.GMat, src_uv: cv2.GMat) -> cv2.GMat: ... + +def NV12toRGB(src_y: cv2.GMat, src_uv: cv2.GMat) -> cv2.GMat: ... + +@_typing.overload +def RGB2Gray(src: cv2.GMat) -> cv2.GMat: ... +@_typing.overload +def RGB2Gray(src: cv2.GMat, rY: float, gY: float, bY: float) -> cv2.GMat: ... + +def RGB2HSV(src: cv2.GMat) -> cv2.GMat: ... + +def RGB2I420(src: cv2.GMat) -> cv2.GMat: ... + +def RGB2Lab(src: cv2.GMat) -> cv2.GMat: ... + +def RGB2YUV(src: cv2.GMat) -> cv2.GMat: ... + +def RGB2YUV422(src: cv2.GMat) -> cv2.GMat: ... + +def Sobel(src: cv2.GMat, ddepth: int, dx: int, dy: int, ksize: int = ..., scale: float = ..., delta: float = ..., borderType: int = ..., borderValue: cv2.typing.Scalar = ...) -> cv2.GMat: ... + +def SobelXY(src: cv2.GMat, ddepth: int, order: int, ksize: int = ..., scale: float = ..., delta: float = ..., borderType: int = ..., borderValue: cv2.typing.Scalar = ...) -> tuple[cv2.GMat, cv2.GMat]: ... + +def YUV2BGR(src: cv2.GMat) -> cv2.GMat: ... + +def YUV2RGB(src: cv2.GMat) -> cv2.GMat: ... + +def absDiff(src1: cv2.GMat, src2: cv2.GMat) -> cv2.GMat: ... + +def absDiffC(src: cv2.GMat, c: cv2.GScalar) -> cv2.GMat: ... + +def add(src1: cv2.GMat, src2: cv2.GMat, ddepth: int = ...) -> cv2.GMat: ... + +@_typing.overload +def addC(src1: cv2.GMat, c: cv2.GScalar, ddepth: int = ...) -> cv2.GMat: ... +@_typing.overload +def addC(c: cv2.GScalar, src1: cv2.GMat, ddepth: int = ...) -> cv2.GMat: ... + +def addWeighted(src1: cv2.GMat, alpha: float, src2: cv2.GMat, beta: float, gamma: float, ddepth: int = ...) -> cv2.GMat: ... + +def bilateralFilter(src: cv2.GMat, d: int, sigmaColor: float, sigmaSpace: float, borderType: int = ...) -> cv2.GMat: ... + +@_typing.overload +def bitwise_and(src1: cv2.GMat, src2: cv2.GMat) -> cv2.GMat: ... +@_typing.overload +def bitwise_and(src1: cv2.GMat, src2: cv2.GScalar) -> cv2.GMat: ... + +def bitwise_not(src: cv2.GMat) -> cv2.GMat: ... + +@_typing.overload +def bitwise_or(src1: cv2.GMat, src2: cv2.GMat) -> cv2.GMat: ... +@_typing.overload +def bitwise_or(src1: cv2.GMat, src2: cv2.GScalar) -> cv2.GMat: ... + +@_typing.overload +def bitwise_xor(src1: cv2.GMat, src2: cv2.GMat) -> cv2.GMat: ... +@_typing.overload +def bitwise_xor(src1: cv2.GMat, src2: cv2.GScalar) -> cv2.GMat: ... + +def blur(src: cv2.GMat, ksize: cv2.typing.Size, anchor: cv2.typing.Point = ..., borderType: int = ..., borderValue: cv2.typing.Scalar = ...) -> cv2.GMat: ... + +@_typing.overload +def boundingRect(src: cv2.GMat) -> cv2.GOpaqueT: ... +@_typing.overload +def boundingRect(src: cv2.GArrayT) -> cv2.GOpaqueT: ... +@_typing.overload +def boundingRect(src: cv2.GArrayT) -> cv2.GOpaqueT: ... + +def boxFilter(src: cv2.GMat, dtype: int, ksize: cv2.typing.Size, anchor: cv2.typing.Point = ..., normalize: bool = ..., borderType: int = ..., borderValue: cv2.typing.Scalar = ...) -> cv2.GMat: ... + +def cartToPolar(x: cv2.GMat, y: cv2.GMat, angleInDegrees: bool = ...) -> tuple[cv2.GMat, cv2.GMat]: ... + +@_typing.overload +def cmpEQ(src1: cv2.GMat, src2: cv2.GMat) -> cv2.GMat: ... +@_typing.overload +def cmpEQ(src1: cv2.GMat, src2: cv2.GScalar) -> cv2.GMat: ... + +@_typing.overload +def cmpGE(src1: cv2.GMat, src2: cv2.GMat) -> cv2.GMat: ... +@_typing.overload +def cmpGE(src1: cv2.GMat, src2: cv2.GScalar) -> cv2.GMat: ... + +@_typing.overload +def cmpGT(src1: cv2.GMat, src2: cv2.GMat) -> cv2.GMat: ... +@_typing.overload +def cmpGT(src1: cv2.GMat, src2: cv2.GScalar) -> cv2.GMat: ... + +@_typing.overload +def cmpLE(src1: cv2.GMat, src2: cv2.GMat) -> cv2.GMat: ... +@_typing.overload +def cmpLE(src1: cv2.GMat, src2: cv2.GScalar) -> cv2.GMat: ... + +@_typing.overload +def cmpLT(src1: cv2.GMat, src2: cv2.GMat) -> cv2.GMat: ... +@_typing.overload +def cmpLT(src1: cv2.GMat, src2: cv2.GScalar) -> cv2.GMat: ... + +@_typing.overload +def cmpNE(src1: cv2.GMat, src2: cv2.GMat) -> cv2.GMat: ... +@_typing.overload +def cmpNE(src1: cv2.GMat, src2: cv2.GScalar) -> cv2.GMat: ... + +def combine(lhs: cv2.GKernelPackage, rhs: cv2.GKernelPackage) -> cv2.GKernelPackage: ... + +@_typing.overload +def concatHor(src1: cv2.GMat, src2: cv2.GMat) -> cv2.GMat: ... +@_typing.overload +def concatHor(v: _typing.Sequence[cv2.GMat]) -> cv2.GMat: ... + +@_typing.overload +def concatVert(src1: cv2.GMat, src2: cv2.GMat) -> cv2.GMat: ... +@_typing.overload +def concatVert(v: _typing.Sequence[cv2.GMat]) -> cv2.GMat: ... + +def convertTo(src: cv2.GMat, rdepth: int, alpha: float = ..., beta: float = ...) -> cv2.GMat: ... + +def copy(in_: cv2.GMat) -> cv2.GMat: ... + +def countNonZero(src: cv2.GMat) -> cv2.GOpaqueT: ... + +def crop(src: cv2.GMat, rect: cv2.typing.Rect) -> cv2.GMat: ... + +def dilate(src: cv2.GMat, kernel: cv2.typing.MatLike, anchor: cv2.typing.Point = ..., iterations: int = ..., borderType: int = ..., borderValue: cv2.typing.Scalar = ...) -> cv2.GMat: ... + +def dilate3x3(src: cv2.GMat, iterations: int = ..., borderType: int = ..., borderValue: cv2.typing.Scalar = ...) -> cv2.GMat: ... + +def div(src1: cv2.GMat, src2: cv2.GMat, scale: float, ddepth: int = ...) -> cv2.GMat: ... + +def divC(src: cv2.GMat, divisor: cv2.GScalar, scale: float, ddepth: int = ...) -> cv2.GMat: ... + +def divRC(divident: cv2.GScalar, src: cv2.GMat, scale: float, ddepth: int = ...) -> cv2.GMat: ... + +def equalizeHist(src: cv2.GMat) -> cv2.GMat: ... + +def erode(src: cv2.GMat, kernel: cv2.typing.MatLike, anchor: cv2.typing.Point = ..., iterations: int = ..., borderType: int = ..., borderValue: cv2.typing.Scalar = ...) -> cv2.GMat: ... + +def erode3x3(src: cv2.GMat, iterations: int = ..., borderType: int = ..., borderValue: cv2.typing.Scalar = ...) -> cv2.GMat: ... + +def filter2D(src: cv2.GMat, ddepth: int, kernel: cv2.typing.MatLike, anchor: cv2.typing.Point = ..., delta: cv2.typing.Scalar = ..., borderType: int = ..., borderValue: cv2.typing.Scalar = ...) -> cv2.GMat: ... + +def flip(src: cv2.GMat, flipCode: int) -> cv2.GMat: ... + +def gaussianBlur(src: cv2.GMat, ksize: cv2.typing.Size, sigmaX: float, sigmaY: float = ..., borderType: int = ..., borderValue: cv2.typing.Scalar = ...) -> cv2.GMat: ... + +def goodFeaturesToTrack(image: cv2.GMat, maxCorners: int, qualityLevel: float, minDistance: float, mask: cv2.typing.MatLike | None = ..., blockSize: int = ..., useHarrisDetector: bool = ..., k: float = ...) -> cv2.GArrayT: ... + +def inRange(src: cv2.GMat, threshLow: cv2.GScalar, threshUp: cv2.GScalar) -> cv2.GMat: ... + +@_typing.overload +def infer(name: str, inputs: cv2.GInferInputs) -> cv2.GInferOutputs: ... +@_typing.overload +def infer(name: str, roi: cv2.GOpaqueT, inputs: cv2.GInferInputs) -> cv2.GInferOutputs: ... +@_typing.overload +def infer(name: str, rois: cv2.GArrayT, inputs: cv2.GInferInputs) -> cv2.GInferListOutputs: ... + +def infer2(name: str, in_: cv2.GMat, inputs: cv2.GInferListInputs) -> cv2.GInferListOutputs: ... + +def integral(src: cv2.GMat, sdepth: int = ..., sqdepth: int = ...) -> tuple[cv2.GMat, cv2.GMat]: ... + +@_typing.overload +def kmeans(data: cv2.GMat, K: int, bestLabels: cv2.GMat, criteria: cv2.typing.TermCriteria, attempts: int, flags: cv2.KmeansFlags) -> tuple[cv2.GOpaqueT, cv2.GMat, cv2.GMat]: ... +@_typing.overload +def kmeans(data: cv2.GMat, K: int, criteria: cv2.typing.TermCriteria, attempts: int, flags: cv2.KmeansFlags) -> tuple[cv2.GOpaqueT, cv2.GMat, cv2.GMat]: ... +@_typing.overload +def kmeans(data: cv2.GArrayT, K: int, bestLabels: cv2.GArrayT, criteria: cv2.typing.TermCriteria, attempts: int, flags: cv2.KmeansFlags) -> tuple[cv2.GOpaqueT, cv2.GArrayT, cv2.GArrayT]: ... +@_typing.overload +def kmeans(data: cv2.GArrayT, K: int, bestLabels: cv2.GArrayT, criteria: cv2.typing.TermCriteria, attempts: int, flags: cv2.KmeansFlags) -> tuple[cv2.GOpaqueT, cv2.GArrayT, cv2.GArrayT]: ... + +def mask(src: cv2.GMat, mask: cv2.GMat) -> cv2.GMat: ... + +def max(src1: cv2.GMat, src2: cv2.GMat) -> cv2.GMat: ... + +def mean(src: cv2.GMat) -> cv2.GScalar: ... + +def medianBlur(src: cv2.GMat, ksize: int) -> cv2.GMat: ... + +def merge3(src1: cv2.GMat, src2: cv2.GMat, src3: cv2.GMat) -> cv2.GMat: ... + +def merge4(src1: cv2.GMat, src2: cv2.GMat, src3: cv2.GMat, src4: cv2.GMat) -> cv2.GMat: ... + +def min(src1: cv2.GMat, src2: cv2.GMat) -> cv2.GMat: ... + +def morphologyEx(src: cv2.GMat, op: cv2.MorphTypes, kernel: cv2.typing.MatLike, anchor: cv2.typing.Point = ..., iterations: int = ..., borderType: cv2.BorderTypes = ..., borderValue: cv2.typing.Scalar = ...) -> cv2.GMat: ... + +def mul(src1: cv2.GMat, src2: cv2.GMat, scale: float = ..., ddepth: int = ...) -> cv2.GMat: ... + +@_typing.overload +def mulC(src: cv2.GMat, multiplier: float, ddepth: int = ...) -> cv2.GMat: ... +@_typing.overload +def mulC(src: cv2.GMat, multiplier: cv2.GScalar, ddepth: int = ...) -> cv2.GMat: ... +@_typing.overload +def mulC(multiplier: cv2.GScalar, src: cv2.GMat, ddepth: int = ...) -> cv2.GMat: ... + +def normInf(src: cv2.GMat) -> cv2.GScalar: ... + +def normL1(src: cv2.GMat) -> cv2.GScalar: ... + +def normL2(src: cv2.GMat) -> cv2.GScalar: ... + +def normalize(src: cv2.GMat, alpha: float, beta: float, norm_type: int, ddepth: int = ...) -> cv2.GMat: ... + +@_typing.overload +def parseSSD(in_: cv2.GMat, inSz: cv2.GOpaqueT, confidenceThreshold: float = ..., filterLabel: int = ...) -> tuple[cv2.GArrayT, cv2.GArrayT]: ... +@_typing.overload +def parseSSD(in_: cv2.GMat, inSz: cv2.GOpaqueT, confidenceThreshold: float, alignmentToSquare: bool, filterOutOfBounds: bool) -> cv2.GArrayT: ... + +def parseYolo(in_: cv2.GMat, inSz: cv2.GOpaqueT, confidenceThreshold: float = ..., nmsThreshold: float = ..., anchors: _typing.Sequence[float] = ...) -> tuple[cv2.GArrayT, cv2.GArrayT]: ... + +def phase(x: cv2.GMat, y: cv2.GMat, angleInDegrees: bool = ...) -> cv2.GMat: ... + +def polarToCart(magnitude: cv2.GMat, angle: cv2.GMat, angleInDegrees: bool = ...) -> tuple[cv2.GMat, cv2.GMat]: ... + +def remap(src: cv2.GMat, map1: cv2.typing.MatLike, map2: cv2.typing.MatLike, interpolation: int, borderMode: int = ..., borderValue: cv2.typing.Scalar = ...) -> cv2.GMat: ... + +def resize(src: cv2.GMat, dsize: cv2.typing.Size, fx: float = ..., fy: float = ..., interpolation: int = ...) -> cv2.GMat: ... + +def select(src1: cv2.GMat, src2: cv2.GMat, mask: cv2.GMat) -> cv2.GMat: ... + +def sepFilter(src: cv2.GMat, ddepth: int, kernelX: cv2.typing.MatLike, kernelY: cv2.typing.MatLike, anchor: cv2.typing.Point, delta: cv2.typing.Scalar, borderType: int = ..., borderValue: cv2.typing.Scalar = ...) -> cv2.GMat: ... + +def split3(src: cv2.GMat) -> tuple[cv2.GMat, cv2.GMat, cv2.GMat]: ... + +def split4(src: cv2.GMat) -> tuple[cv2.GMat, cv2.GMat, cv2.GMat, cv2.GMat]: ... + +def sqrt(src: cv2.GMat) -> cv2.GMat: ... + +def sub(src1: cv2.GMat, src2: cv2.GMat, ddepth: int = ...) -> cv2.GMat: ... + +def subC(src: cv2.GMat, c: cv2.GScalar, ddepth: int = ...) -> cv2.GMat: ... + +def subRC(c: cv2.GScalar, src: cv2.GMat, ddepth: int = ...) -> cv2.GMat: ... + +def sum(src: cv2.GMat) -> cv2.GScalar: ... + +@_typing.overload +def threshold(src: cv2.GMat, thresh: cv2.GScalar, maxval: cv2.GScalar, type: int) -> cv2.GMat: ... +@_typing.overload +def threshold(src: cv2.GMat, maxval: cv2.GScalar, type: int) -> tuple[cv2.GMat, cv2.GScalar]: ... + +def transpose(src: cv2.GMat) -> cv2.GMat: ... + +def warpAffine(src: cv2.GMat, M: cv2.typing.MatLike, dsize: cv2.typing.Size, flags: int = ..., borderMode: int = ..., borderValue: cv2.typing.Scalar = ...) -> cv2.GMat: ... + +def warpPerspective(src: cv2.GMat, M: cv2.typing.MatLike, dsize: cv2.typing.Size, flags: int = ..., borderMode: int = ..., borderValue: cv2.typing.Scalar = ...) -> cv2.GMat: ... + + diff --git a/venv/lib/python3.11/site-packages/cv2/gapi/core/__init__.pyi b/venv/lib/python3.11/site-packages/cv2/gapi/core/__init__.pyi new file mode 100644 index 0000000000000000000000000000000000000000..a418f70ab798fcac580de697773d460ea9a12055 --- /dev/null +++ b/venv/lib/python3.11/site-packages/cv2/gapi/core/__init__.pyi @@ -0,0 +1,7 @@ +__all__: list[str] = [] + +from cv2.gapi.core import cpu as cpu +from cv2.gapi.core import fluid as fluid +from cv2.gapi.core import ocl as ocl + + diff --git a/venv/lib/python3.11/site-packages/cv2/gapi/core/cpu/__init__.pyi b/venv/lib/python3.11/site-packages/cv2/gapi/core/cpu/__init__.pyi new file mode 100644 index 0000000000000000000000000000000000000000..b85ebb121e506c99a5bf55d46d4b61f31b62da80 --- /dev/null +++ b/venv/lib/python3.11/site-packages/cv2/gapi/core/cpu/__init__.pyi @@ -0,0 +1,9 @@ +__all__: list[str] = [] + +import cv2 + + +# Functions +def kernels() -> cv2.GKernelPackage: ... + + diff --git a/venv/lib/python3.11/site-packages/cv2/gapi/core/fluid/__init__.pyi b/venv/lib/python3.11/site-packages/cv2/gapi/core/fluid/__init__.pyi new file mode 100644 index 0000000000000000000000000000000000000000..b85ebb121e506c99a5bf55d46d4b61f31b62da80 --- /dev/null +++ b/venv/lib/python3.11/site-packages/cv2/gapi/core/fluid/__init__.pyi @@ -0,0 +1,9 @@ +__all__: list[str] = [] + +import cv2 + + +# Functions +def kernels() -> cv2.GKernelPackage: ... + + diff --git a/venv/lib/python3.11/site-packages/cv2/gapi/core/ocl/__init__.pyi b/venv/lib/python3.11/site-packages/cv2/gapi/core/ocl/__init__.pyi new file mode 100644 index 0000000000000000000000000000000000000000..b85ebb121e506c99a5bf55d46d4b61f31b62da80 --- /dev/null +++ b/venv/lib/python3.11/site-packages/cv2/gapi/core/ocl/__init__.pyi @@ -0,0 +1,9 @@ +__all__: list[str] = [] + +import cv2 + + +# Functions +def kernels() -> cv2.GKernelPackage: ... + + diff --git a/venv/lib/python3.11/site-packages/cv2/gapi/ie/__init__.pyi b/venv/lib/python3.11/site-packages/cv2/gapi/ie/__init__.pyi new file mode 100644 index 0000000000000000000000000000000000000000..700ce621174e38511b7d9c32ced225fbfcca0338 --- /dev/null +++ b/venv/lib/python3.11/site-packages/cv2/gapi/ie/__init__.pyi @@ -0,0 +1,51 @@ +__all__: list[str] = [] + +import cv2.typing +import typing as _typing + + +from cv2.gapi.ie import detail as detail + + +# Enumerations +TraitAs_TENSOR: int +TRAIT_AS_TENSOR: int +TraitAs_IMAGE: int +TRAIT_AS_IMAGE: int +TraitAs = int +"""One of [TraitAs_TENSOR, TRAIT_AS_TENSOR, TraitAs_IMAGE, TRAIT_AS_IMAGE]""" + +Sync: int +SYNC: int +Async: int +ASYNC: int +InferMode = int +"""One of [Sync, SYNC, Async, ASYNC]""" + + + +# Classes +class PyParams: + # Functions + @_typing.overload + def __init__(self) -> None: ... + @_typing.overload + def __init__(self, tag: str, model: str, weights: str, device: str) -> None: ... + @_typing.overload + def __init__(self, tag: str, model: str, device: str) -> None: ... + + def constInput(self, layer_name: str, data: cv2.typing.MatLike, hint: TraitAs = ...) -> PyParams: ... + + def cfgNumRequests(self, nireq: int) -> PyParams: ... + + def cfgBatchSize(self, size: int) -> PyParams: ... + + + +# Functions +@_typing.overload +def params(tag: str, model: str, weights: str, device: str) -> PyParams: ... +@_typing.overload +def params(tag: str, model: str, device: str) -> PyParams: ... + + diff --git a/venv/lib/python3.11/site-packages/cv2/gapi/ie/detail/__init__.pyi b/venv/lib/python3.11/site-packages/cv2/gapi/ie/detail/__init__.pyi new file mode 100644 index 0000000000000000000000000000000000000000..e9aa68c68a73a2a25a419d64f5781581931251ab --- /dev/null +++ b/venv/lib/python3.11/site-packages/cv2/gapi/ie/detail/__init__.pyi @@ -0,0 +1,12 @@ +__all__: list[str] = [] + +ParamDesc_Kind_Load: int +PARAM_DESC_KIND_LOAD: int +ParamDesc_Kind_Import: int +PARAM_DESC_KIND_IMPORT: int +ParamDesc_Kind = int +"""One of [ParamDesc_Kind_Load, PARAM_DESC_KIND_LOAD, ParamDesc_Kind_Import, PARAM_DESC_KIND_IMPORT]""" + + +# Classes + diff --git a/venv/lib/python3.11/site-packages/cv2/gapi/imgproc/__init__.pyi b/venv/lib/python3.11/site-packages/cv2/gapi/imgproc/__init__.pyi new file mode 100644 index 0000000000000000000000000000000000000000..0d4b571303e9fa6f30f5928b113a0a5403b61069 --- /dev/null +++ b/venv/lib/python3.11/site-packages/cv2/gapi/imgproc/__init__.pyi @@ -0,0 +1,5 @@ +__all__: list[str] = [] + +from cv2.gapi.imgproc import fluid as fluid + + diff --git a/venv/lib/python3.11/site-packages/cv2/gapi/imgproc/fluid/__init__.pyi b/venv/lib/python3.11/site-packages/cv2/gapi/imgproc/fluid/__init__.pyi new file mode 100644 index 0000000000000000000000000000000000000000..b85ebb121e506c99a5bf55d46d4b61f31b62da80 --- /dev/null +++ b/venv/lib/python3.11/site-packages/cv2/gapi/imgproc/fluid/__init__.pyi @@ -0,0 +1,9 @@ +__all__: list[str] = [] + +import cv2 + + +# Functions +def kernels() -> cv2.GKernelPackage: ... + + diff --git a/venv/lib/python3.11/site-packages/cv2/gapi/oak/__init__.pyi b/venv/lib/python3.11/site-packages/cv2/gapi/oak/__init__.pyi new file mode 100644 index 0000000000000000000000000000000000000000..2a871fab56aa9149d1fd71986bd024d1d6b2a9d4 --- /dev/null +++ b/venv/lib/python3.11/site-packages/cv2/gapi/oak/__init__.pyi @@ -0,0 +1,37 @@ +__all__: list[str] = [] + +EncoderConfig_RateControlMode_CBR: int +ENCODER_CONFIG_RATE_CONTROL_MODE_CBR: int +EncoderConfig_RateControlMode_VBR: int +ENCODER_CONFIG_RATE_CONTROL_MODE_VBR: int +EncoderConfig_RateControlMode = int +"""One of [EncoderConfig_RateControlMode_CBR, ENCODER_CONFIG_RATE_CONTROL_MODE_CBR, EncoderConfig_RateControlMode_VBR, ENCODER_CONFIG_RATE_CONTROL_MODE_VBR]""" + +EncoderConfig_Profile_H264_BASELINE: int +ENCODER_CONFIG_PROFILE_H264_BASELINE: int +EncoderConfig_Profile_H264_HIGH: int +ENCODER_CONFIG_PROFILE_H264_HIGH: int +EncoderConfig_Profile_H264_MAIN: int +ENCODER_CONFIG_PROFILE_H264_MAIN: int +EncoderConfig_Profile_H265_MAIN: int +ENCODER_CONFIG_PROFILE_H265_MAIN: int +EncoderConfig_Profile_MJPEG: int +ENCODER_CONFIG_PROFILE_MJPEG: int +EncoderConfig_Profile = int +"""One of [EncoderConfig_Profile_H264_BASELINE, ENCODER_CONFIG_PROFILE_H264_BASELINE, EncoderConfig_Profile_H264_HIGH, ENCODER_CONFIG_PROFILE_H264_HIGH, EncoderConfig_Profile_H264_MAIN, ENCODER_CONFIG_PROFILE_H264_MAIN, EncoderConfig_Profile_H265_MAIN, ENCODER_CONFIG_PROFILE_H265_MAIN, EncoderConfig_Profile_MJPEG, ENCODER_CONFIG_PROFILE_MJPEG]""" + +ColorCameraParams_BoardSocket_RGB: int +COLOR_CAMERA_PARAMS_BOARD_SOCKET_RGB: int +ColorCameraParams_BoardSocket_BGR: int +COLOR_CAMERA_PARAMS_BOARD_SOCKET_BGR: int +ColorCameraParams_BoardSocket = int +"""One of [ColorCameraParams_BoardSocket_RGB, COLOR_CAMERA_PARAMS_BOARD_SOCKET_RGB, ColorCameraParams_BoardSocket_BGR, COLOR_CAMERA_PARAMS_BOARD_SOCKET_BGR]""" + +ColorCameraParams_Resolution_THE_1080_P: int +COLOR_CAMERA_PARAMS_RESOLUTION_THE_1080_P: int +ColorCameraParams_Resolution = int +"""One of [ColorCameraParams_Resolution_THE_1080_P, COLOR_CAMERA_PARAMS_RESOLUTION_THE_1080_P]""" + + +# Classes + diff --git a/venv/lib/python3.11/site-packages/cv2/gapi/onnx/__init__.pyi b/venv/lib/python3.11/site-packages/cv2/gapi/onnx/__init__.pyi new file mode 100644 index 0000000000000000000000000000000000000000..9185d6504fd6c541560b79c0e88e75b27d24a1fe --- /dev/null +++ b/venv/lib/python3.11/site-packages/cv2/gapi/onnx/__init__.pyi @@ -0,0 +1,51 @@ +__all__: list[str] = [] + +import cv2.gapi.onnx.ep +import cv2.typing +import typing as _typing + + +from cv2.gapi.onnx import ep as ep + + +# Enumerations +TraitAs_TENSOR: int +TRAIT_AS_TENSOR: int +TraitAs_IMAGE: int +TRAIT_AS_IMAGE: int +TraitAs = int +"""One of [TraitAs_TENSOR, TRAIT_AS_TENSOR, TraitAs_IMAGE, TRAIT_AS_IMAGE]""" + + + +# Classes +class PyParams: + # Functions + @_typing.overload + def __init__(self) -> None: ... + @_typing.overload + def __init__(self, tag: str, model_path: str) -> None: ... + + def cfgMeanStd(self, layer_name: str, m: cv2.typing.Scalar, s: cv2.typing.Scalar) -> PyParams: ... + + def cfgNormalize(self, layer_name: str, flag: bool) -> PyParams: ... + + @_typing.overload + def cfgAddExecutionProvider(self, ep: cv2.gapi.onnx.ep.OpenVINO) -> PyParams: ... + @_typing.overload + def cfgAddExecutionProvider(self, ep: cv2.gapi.onnx.ep.DirectML) -> PyParams: ... + @_typing.overload + def cfgAddExecutionProvider(self, ep: cv2.gapi.onnx.ep.CoreML) -> PyParams: ... + @_typing.overload + def cfgAddExecutionProvider(self, ep: cv2.gapi.onnx.ep.CUDA) -> PyParams: ... + @_typing.overload + def cfgAddExecutionProvider(self, ep: cv2.gapi.onnx.ep.TensorRT) -> PyParams: ... + + def cfgDisableMemPattern(self) -> PyParams: ... + + + +# Functions +def params(tag: str, model_path: str) -> PyParams: ... + + diff --git a/venv/lib/python3.11/site-packages/cv2/gapi/onnx/ep/__init__.pyi b/venv/lib/python3.11/site-packages/cv2/gapi/onnx/ep/__init__.pyi new file mode 100644 index 0000000000000000000000000000000000000000..e32f039760ac0f095f7d1aa6112e6e1ac692fc85 --- /dev/null +++ b/venv/lib/python3.11/site-packages/cv2/gapi/onnx/ep/__init__.pyi @@ -0,0 +1,63 @@ +__all__: list[str] = [] + +import cv2.typing +import typing as _typing + + +# Classes +class CoreML: + # Functions + def __init__(self) -> None: ... + + def cfgUseCPUOnly(self) -> CoreML: ... + + def cfgEnableOnSubgraph(self) -> CoreML: ... + + def cfgEnableOnlyNeuralEngine(self) -> CoreML: ... + + +class CUDA: + # Functions + @_typing.overload + def __init__(self) -> None: ... + @_typing.overload + def __init__(self, dev_id: int) -> None: ... + + +class TensorRT: + # Functions + @_typing.overload + def __init__(self) -> None: ... + @_typing.overload + def __init__(self, dev_id: int) -> None: ... + + +class OpenVINO: + # Functions + @_typing.overload + def __init__(self) -> None: ... + @_typing.overload + def __init__(self, dev_type: str) -> None: ... + @_typing.overload + def __init__(self, params: cv2.typing.map_string_and_string) -> None: ... + + def cfgCacheDir(self, dir: str) -> OpenVINO: ... + + def cfgNumThreads(self, nthreads: int) -> OpenVINO: ... + + def cfgEnableOpenCLThrottling(self) -> OpenVINO: ... + + def cfgEnableDynamicShapes(self) -> OpenVINO: ... + + +class DirectML: + # Functions + @_typing.overload + def __init__(self) -> None: ... + @_typing.overload + def __init__(self, device_id: int) -> None: ... + @_typing.overload + def __init__(self, adapter_name: str) -> None: ... + + + diff --git a/venv/lib/python3.11/site-packages/cv2/gapi/ot/__init__.pyi b/venv/lib/python3.11/site-packages/cv2/gapi/ot/__init__.pyi new file mode 100644 index 0000000000000000000000000000000000000000..09e95e7c124d443526e47c881e8066923a58a26e --- /dev/null +++ b/venv/lib/python3.11/site-packages/cv2/gapi/ot/__init__.pyi @@ -0,0 +1,32 @@ +__all__: list[str] = [] + +import cv2 +import typing as _typing + + +from cv2.gapi.ot import cpu as cpu + + +# Enumerations +NEW: int +TRACKED: int +LOST: int +TrackingStatus = int +"""One of [NEW, TRACKED, LOST]""" + + + +# Classes +class ObjectTrackerParams: + max_num_objects: int + input_image_format: int + tracking_per_class: bool + + +# Functions +@_typing.overload +def track(mat: cv2.GMat, detected_rects: cv2.GArrayT, detected_class_labels: cv2.GArrayT, delta: float) -> tuple[cv2.GArrayT, cv2.GArrayT, cv2.GArrayT, cv2.GArrayT]: ... +@_typing.overload +def track(frame: cv2.GFrame, detected_rects: cv2.GArrayT, detected_class_labels: cv2.GArrayT, delta: float) -> tuple[cv2.GArrayT, cv2.GArrayT, cv2.GArrayT, cv2.GArrayT]: ... + + diff --git a/venv/lib/python3.11/site-packages/cv2/gapi/ot/cpu/__init__.pyi b/venv/lib/python3.11/site-packages/cv2/gapi/ot/cpu/__init__.pyi new file mode 100644 index 0000000000000000000000000000000000000000..b85ebb121e506c99a5bf55d46d4b61f31b62da80 --- /dev/null +++ b/venv/lib/python3.11/site-packages/cv2/gapi/ot/cpu/__init__.pyi @@ -0,0 +1,9 @@ +__all__: list[str] = [] + +import cv2 + + +# Functions +def kernels() -> cv2.GKernelPackage: ... + + diff --git a/venv/lib/python3.11/site-packages/cv2/gapi/ov/__init__.pyi b/venv/lib/python3.11/site-packages/cv2/gapi/ov/__init__.pyi new file mode 100644 index 0000000000000000000000000000000000000000..9bc2c8683cd47aa3c2466a9c40832c7a04e464fb --- /dev/null +++ b/venv/lib/python3.11/site-packages/cv2/gapi/ov/__init__.pyi @@ -0,0 +1,74 @@ +__all__: list[str] = [] + +import cv2.typing +import typing as _typing + + +# Classes +class PyParams: + # Functions + @_typing.overload + def __init__(self) -> None: ... + @_typing.overload + def __init__(self, tag: str, model_path: str, bin_path: str, device: str) -> None: ... + @_typing.overload + def __init__(self, tag: str, blob_path: str, device: str) -> None: ... + + def cfgPluginConfig(self, config: cv2.typing.map_string_and_string) -> PyParams: ... + + @_typing.overload + def cfgInputTensorLayout(self, tensor_layout: str) -> PyParams: ... + @_typing.overload + def cfgInputTensorLayout(self, layout_map: cv2.typing.map_string_and_string) -> PyParams: ... + + @_typing.overload + def cfgInputModelLayout(self, tensor_layout: str) -> PyParams: ... + @_typing.overload + def cfgInputModelLayout(self, layout_map: cv2.typing.map_string_and_string) -> PyParams: ... + + @_typing.overload + def cfgOutputTensorLayout(self, tensor_layout: str) -> PyParams: ... + @_typing.overload + def cfgOutputTensorLayout(self, layout_map: cv2.typing.map_string_and_string) -> PyParams: ... + + @_typing.overload + def cfgOutputModelLayout(self, tensor_layout: str) -> PyParams: ... + @_typing.overload + def cfgOutputModelLayout(self, layout_map: cv2.typing.map_string_and_string) -> PyParams: ... + + @_typing.overload + def cfgOutputTensorPrecision(self, precision: int) -> PyParams: ... + @_typing.overload + def cfgOutputTensorPrecision(self, precision_map: cv2.typing.map_string_and_int) -> PyParams: ... + + @_typing.overload + def cfgReshape(self, new_shape: _typing.Sequence[int]) -> PyParams: ... + @_typing.overload + def cfgReshape(self, new_shape_map: cv2.typing.map_string_and_vector_size_t) -> PyParams: ... + + def cfgNumRequests(self, nireq: int) -> PyParams: ... + + @_typing.overload + def cfgMean(self, mean_values: _typing.Sequence[float]) -> PyParams: ... + @_typing.overload + def cfgMean(self, mean_map: cv2.typing.map_string_and_vector_float) -> PyParams: ... + + @_typing.overload + def cfgScale(self, scale_values: _typing.Sequence[float]) -> PyParams: ... + @_typing.overload + def cfgScale(self, scale_map: cv2.typing.map_string_and_vector_float) -> PyParams: ... + + @_typing.overload + def cfgResize(self, interpolation: int) -> PyParams: ... + @_typing.overload + def cfgResize(self, interpolation: cv2.typing.map_string_and_int) -> PyParams: ... + + + +# Functions +@_typing.overload +def params(tag: str, model_path: str, weights: str, device: str) -> PyParams: ... +@_typing.overload +def params(tag: str, bin_path: str, device: str) -> PyParams: ... + + diff --git a/venv/lib/python3.11/site-packages/cv2/gapi/own/__init__.pyi b/venv/lib/python3.11/site-packages/cv2/gapi/own/__init__.pyi new file mode 100644 index 0000000000000000000000000000000000000000..9ac6ecc9d0061d0cda93097f6a4fe9d154c2fcab --- /dev/null +++ b/venv/lib/python3.11/site-packages/cv2/gapi/own/__init__.pyi @@ -0,0 +1,5 @@ +__all__: list[str] = [] + +from cv2.gapi.own import detail as detail + + diff --git a/venv/lib/python3.11/site-packages/cv2/gapi/own/detail/__init__.pyi b/venv/lib/python3.11/site-packages/cv2/gapi/own/detail/__init__.pyi new file mode 100644 index 0000000000000000000000000000000000000000..cde2a28e5daddbafa3c4354eb4db93053629d49a --- /dev/null +++ b/venv/lib/python3.11/site-packages/cv2/gapi/own/detail/__init__.pyi @@ -0,0 +1,10 @@ +__all__: list[str] = [] + +MatHeader_AUTO_STEP: int +MAT_HEADER_AUTO_STEP: int +MatHeader_TYPE_MASK: int +MAT_HEADER_TYPE_MASK: int + + +# Classes + diff --git a/venv/lib/python3.11/site-packages/cv2/gapi/render/__init__.pyi b/venv/lib/python3.11/site-packages/cv2/gapi/render/__init__.pyi new file mode 100644 index 0000000000000000000000000000000000000000..229877aa6c1063c56e3162c9d5c76d95cc6f472b --- /dev/null +++ b/venv/lib/python3.11/site-packages/cv2/gapi/render/__init__.pyi @@ -0,0 +1,5 @@ +__all__: list[str] = [] + +from cv2.gapi.render import ocv as ocv + + diff --git a/venv/lib/python3.11/site-packages/cv2/gapi/render/ocv/__init__.pyi b/venv/lib/python3.11/site-packages/cv2/gapi/render/ocv/__init__.pyi new file mode 100644 index 0000000000000000000000000000000000000000..b85ebb121e506c99a5bf55d46d4b61f31b62da80 --- /dev/null +++ b/venv/lib/python3.11/site-packages/cv2/gapi/render/ocv/__init__.pyi @@ -0,0 +1,9 @@ +__all__: list[str] = [] + +import cv2 + + +# Functions +def kernels() -> cv2.GKernelPackage: ... + + diff --git a/venv/lib/python3.11/site-packages/cv2/gapi/streaming/__init__.pyi b/venv/lib/python3.11/site-packages/cv2/gapi/streaming/__init__.pyi new file mode 100644 index 0000000000000000000000000000000000000000..2b70ce7ed2dcf40e9d89607cb3fa7c99e69f2d03 --- /dev/null +++ b/venv/lib/python3.11/site-packages/cv2/gapi/streaming/__init__.pyi @@ -0,0 +1,42 @@ +__all__: list[str] = [] + +import cv2 +import typing as _typing + + +# Enumerations +sync_policy_dont_sync: int +SYNC_POLICY_DONT_SYNC: int +sync_policy_drop: int +SYNC_POLICY_DROP: int +sync_policy = int +"""One of [sync_policy_dont_sync, SYNC_POLICY_DONT_SYNC, sync_policy_drop, SYNC_POLICY_DROP]""" + + + +# Classes +class queue_capacity: + capacity: int + + # Functions + def __init__(self, cap: int = ...) -> None: ... + + + +# Functions +def desync(g: cv2.GMat) -> cv2.GMat: ... + +def seqNo(arg1: cv2.GMat) -> cv2.GOpaqueT: ... + +def seq_id(arg1: cv2.GMat) -> cv2.GOpaqueT: ... + +@_typing.overload +def size(src: cv2.GMat) -> cv2.GOpaqueT: ... +@_typing.overload +def size(r: cv2.GOpaqueT) -> cv2.GOpaqueT: ... +@_typing.overload +def size(src: cv2.GFrame) -> cv2.GOpaqueT: ... + +def timestamp(arg1: cv2.GMat) -> cv2.GOpaqueT: ... + + diff --git a/venv/lib/python3.11/site-packages/cv2/gapi/video/__init__.pyi b/venv/lib/python3.11/site-packages/cv2/gapi/video/__init__.pyi new file mode 100644 index 0000000000000000000000000000000000000000..e1c5477db9927fbfd260bdc490a8e80739764b2d --- /dev/null +++ b/venv/lib/python3.11/site-packages/cv2/gapi/video/__init__.pyi @@ -0,0 +1,10 @@ +__all__: list[str] = [] + +# Enumerations +TYPE_BS_MOG2: int +TYPE_BS_KNN: int +BackgroundSubtractorType = int +"""One of [TYPE_BS_MOG2, TYPE_BS_KNN]""" + + + diff --git a/venv/lib/python3.11/site-packages/cv2/gapi/wip/__init__.pyi b/venv/lib/python3.11/site-packages/cv2/gapi/wip/__init__.pyi new file mode 100644 index 0000000000000000000000000000000000000000..c38bca4c5085c288bf8921b8ed8624f22d2dba90 --- /dev/null +++ b/venv/lib/python3.11/site-packages/cv2/gapi/wip/__init__.pyi @@ -0,0 +1,41 @@ +__all__: list[str] = [] + +import cv2 +import cv2.gapi +import cv2.gapi.wip.gst +import cv2.typing +import typing as _typing + + +from cv2.gapi.wip import draw as draw +from cv2.gapi.wip import gst as gst +from cv2.gapi.wip import onevpl as onevpl + + +# Classes +class GOutputs: + # Functions + def getGMat(self) -> cv2.GMat: ... + + def getGScalar(self) -> cv2.GScalar: ... + + def getGArray(self, type: cv2.gapi.ArgType) -> cv2.GArrayT: ... + + def getGOpaque(self, type: cv2.gapi.ArgType) -> cv2.GOpaqueT: ... + + +class IStreamSource: + ... + + +# Functions +def get_streaming_source(pipeline: cv2.gapi.wip.gst.GStreamerPipeline, appsinkName: str, outputType: cv2.gapi.wip.gst.GStreamerSource_OutputType = ...) -> IStreamSource: ... + +@_typing.overload +def make_capture_src(path: str, properties: cv2.typing.map_int_and_double = ...) -> IStreamSource: ... +@_typing.overload +def make_capture_src(id: int, properties: cv2.typing.map_int_and_double = ...) -> IStreamSource: ... + +def make_gst_src(pipeline: str, outputType: cv2.gapi.wip.gst.GStreamerSource_OutputType = ...) -> IStreamSource: ... + + diff --git a/venv/lib/python3.11/site-packages/cv2/gapi/wip/draw/__init__.pyi b/venv/lib/python3.11/site-packages/cv2/gapi/wip/draw/__init__.pyi new file mode 100644 index 0000000000000000000000000000000000000000..075337837eaf411a536bb5ea8ca0d7084b9ad52b --- /dev/null +++ b/venv/lib/python3.11/site-packages/cv2/gapi/wip/draw/__init__.pyi @@ -0,0 +1,119 @@ +__all__: list[str] = [] + +import cv2 +import cv2.typing +import typing as _typing + + +# Classes +class Text: + text: str + org: cv2.typing.Point + ff: int + fs: float + color: cv2.typing.Scalar + thick: int + lt: int + bottom_left_origin: bool + + # Functions + @_typing.overload + def __init__(self, text_: str, org_: cv2.typing.Point, ff_: int, fs_: float, color_: cv2.typing.Scalar, thick_: int = ..., lt_: int = ..., bottom_left_origin_: bool = ...) -> None: ... + @_typing.overload + def __init__(self) -> None: ... + + +class Rect: + rect: cv2.typing.Rect + color: cv2.typing.Scalar + thick: int + lt: int + shift: int + + # Functions + @_typing.overload + def __init__(self) -> None: ... + @_typing.overload + def __init__(self, rect_: cv2.typing.Rect2i, color_: cv2.typing.Scalar, thick_: int = ..., lt_: int = ..., shift_: int = ...) -> None: ... + + +class Circle: + center: cv2.typing.Point + radius: int + color: cv2.typing.Scalar + thick: int + lt: int + shift: int + + # Functions + @_typing.overload + def __init__(self, center_: cv2.typing.Point, radius_: int, color_: cv2.typing.Scalar, thick_: int = ..., lt_: int = ..., shift_: int = ...) -> None: ... + @_typing.overload + def __init__(self) -> None: ... + + +class Line: + pt1: cv2.typing.Point + pt2: cv2.typing.Point + color: cv2.typing.Scalar + thick: int + lt: int + shift: int + + # Functions + @_typing.overload + def __init__(self, pt1_: cv2.typing.Point, pt2_: cv2.typing.Point, color_: cv2.typing.Scalar, thick_: int = ..., lt_: int = ..., shift_: int = ...) -> None: ... + @_typing.overload + def __init__(self) -> None: ... + + +class Mosaic: + mos: cv2.typing.Rect + cellSz: int + decim: int + + # Functions + @_typing.overload + def __init__(self) -> None: ... + @_typing.overload + def __init__(self, mos_: cv2.typing.Rect2i, cellSz_: int, decim_: int) -> None: ... + + +class Image: + org: cv2.typing.Point + img: cv2.typing.MatLike + alpha: cv2.typing.MatLike + + # Functions + @_typing.overload + def __init__(self, org_: cv2.typing.Point, img_: cv2.typing.MatLike, alpha_: cv2.typing.MatLike) -> None: ... + @_typing.overload + def __init__(self) -> None: ... + + +class Poly: + points: _typing.Sequence[cv2.typing.Point] + color: cv2.typing.Scalar + thick: int + lt: int + shift: int + + # Functions + @_typing.overload + def __init__(self, points_: _typing.Sequence[cv2.typing.Point], color_: cv2.typing.Scalar, thick_: int = ..., lt_: int = ..., shift_: int = ...) -> None: ... + @_typing.overload + def __init__(self) -> None: ... + + + +# Functions +@_typing.overload +def render(bgr: cv2.typing.MatLike, prims: _typing.Sequence[cv2.typing.Prim], args: _typing.Sequence[cv2.GCompileArg] = ...) -> None: ... +@_typing.overload +def render(y_plane: cv2.typing.MatLike, uv_plane: cv2.typing.MatLike, prims: _typing.Sequence[cv2.typing.Prim], args: _typing.Sequence[cv2.GCompileArg] = ...) -> None: ... + +def render3ch(src: cv2.GMat, prims: cv2.GArrayT) -> cv2.GMat: ... + +def renderNV12(y: cv2.GMat, uv: cv2.GMat, prims: cv2.GArrayT) -> tuple[cv2.GMat, cv2.GMat]: ... + + diff --git a/venv/lib/python3.11/site-packages/cv2/gapi/wip/gst/__init__.pyi b/venv/lib/python3.11/site-packages/cv2/gapi/wip/gst/__init__.pyi new file mode 100644 index 0000000000000000000000000000000000000000..739778186a9ea96cb71a4f06244f895653524a44 --- /dev/null +++ b/venv/lib/python3.11/site-packages/cv2/gapi/wip/gst/__init__.pyi @@ -0,0 +1,17 @@ +__all__: list[str] = [] + +GStreamerSource_OutputType_FRAME: int +GSTREAMER_SOURCE_OUTPUT_TYPE_FRAME: int +GStreamerSource_OutputType_MAT: int +GSTREAMER_SOURCE_OUTPUT_TYPE_MAT: int +GStreamerSource_OutputType = int +"""One of [GStreamerSource_OutputType_FRAME, GSTREAMER_SOURCE_OUTPUT_TYPE_FRAME, GStreamerSource_OutputType_MAT, GSTREAMER_SOURCE_OUTPUT_TYPE_MAT]""" + + +# Classes +class GStreamerPipeline: + # Functions + def __init__(self, pipeline: str) -> None: ... + + + diff --git a/venv/lib/python3.11/site-packages/cv2/gapi/wip/onevpl/__init__.pyi b/venv/lib/python3.11/site-packages/cv2/gapi/wip/onevpl/__init__.pyi new file mode 100644 index 0000000000000000000000000000000000000000..46acf87b226d3a40736df7bbe985f714eb803887 --- /dev/null +++ b/venv/lib/python3.11/site-packages/cv2/gapi/wip/onevpl/__init__.pyi @@ -0,0 +1,16 @@ +__all__: list[str] = [] + +# Enumerations +AccelType_HOST: int +ACCEL_TYPE_HOST: int +AccelType_DX11: int +ACCEL_TYPE_DX11: int +AccelType_VAAPI: int +ACCEL_TYPE_VAAPI: int +AccelType_LAST_VALUE: int +ACCEL_TYPE_LAST_VALUE: int +AccelType = int +"""One of [AccelType_HOST, ACCEL_TYPE_HOST, AccelType_DX11, ACCEL_TYPE_DX11, AccelType_VAAPI, ACCEL_TYPE_VAAPI, AccelType_LAST_VALUE, ACCEL_TYPE_LAST_VALUE]""" + + + diff --git a/venv/lib/python3.11/site-packages/cv2/ipp/__init__.pyi b/venv/lib/python3.11/site-packages/cv2/ipp/__init__.pyi new file mode 100644 index 0000000000000000000000000000000000000000..23b6636ee899355b99cfe4fd3c2d5f897e538b33 --- /dev/null +++ b/venv/lib/python3.11/site-packages/cv2/ipp/__init__.pyi @@ -0,0 +1,14 @@ +__all__: list[str] = [] + +# Functions +def getIppVersion() -> str: ... + +def setUseIPP(flag: bool) -> None: ... + +def setUseIPP_NotExact(flag: bool) -> None: ... + +def useIPP() -> bool: ... + +def useIPP_NotExact() -> bool: ... + + diff --git a/venv/lib/python3.11/site-packages/cv2/load_config_py2.py b/venv/lib/python3.11/site-packages/cv2/load_config_py2.py new file mode 100644 index 0000000000000000000000000000000000000000..07fbae9f7aa704c64acfa4bbce187dc9dbf24759 --- /dev/null +++ b/venv/lib/python3.11/site-packages/cv2/load_config_py2.py @@ -0,0 +1,6 @@ +# flake8: noqa +import sys + +if sys.version_info[:2] < (3, 0): + def exec_file_wrapper(fpath, g_vars, l_vars): + execfile(fpath, g_vars, l_vars) diff --git a/venv/lib/python3.11/site-packages/cv2/load_config_py3.py b/venv/lib/python3.11/site-packages/cv2/load_config_py3.py new file mode 100644 index 0000000000000000000000000000000000000000..6f3b21ab862d42ed4572bcd52c2c41a72dbc0521 --- /dev/null +++ b/venv/lib/python3.11/site-packages/cv2/load_config_py3.py @@ -0,0 +1,9 @@ +# flake8: noqa +import os +import sys + +if sys.version_info[:2] >= (3, 0): + def exec_file_wrapper(fpath, g_vars, l_vars): + with open(fpath) as f: + code = compile(f.read(), os.path.basename(fpath), 'exec') + exec(code, g_vars, l_vars) diff --git a/venv/lib/python3.11/site-packages/cv2/mat_wrapper/__init__.py b/venv/lib/python3.11/site-packages/cv2/mat_wrapper/__init__.py new file mode 100644 index 0000000000000000000000000000000000000000..8a1e4580c9830128b44272fc86e86d60d06d0970 --- /dev/null +++ b/venv/lib/python3.11/site-packages/cv2/mat_wrapper/__init__.py @@ -0,0 +1,40 @@ +__all__ = [] + +import numpy as np +import cv2 as cv +from typing import TYPE_CHECKING, Any + +# Same as cv2.typing.NumPyArrayNumeric, but avoids circular dependencies +if TYPE_CHECKING: + _NumPyArrayNumeric = np.ndarray[Any, np.dtype[np.integer[Any] | np.floating[Any]]] +else: + _NumPyArrayNumeric = np.ndarray + +# NumPy documentation: https://numpy.org/doc/stable/user/basics.subclassing.html + + +class Mat(_NumPyArrayNumeric): + ''' + cv.Mat wrapper for numpy array. + + Stores extra metadata information how to interpret and process of numpy array for underlying C++ code. + ''' + + def __new__(cls, arr, **kwargs): + obj = arr.view(Mat) + return obj + + def __init__(self, arr, **kwargs): + self.wrap_channels = kwargs.pop('wrap_channels', getattr(arr, 'wrap_channels', False)) + if len(kwargs) > 0: + raise TypeError('Unknown parameters: {}'.format(repr(kwargs))) + + def __array_finalize__(self, obj): + if obj is None: + return + self.wrap_channels = getattr(obj, 'wrap_channels', None) + + +Mat.__module__ = cv.__name__ +cv.Mat = Mat +cv._registerMatType(Mat) diff --git a/venv/lib/python3.11/site-packages/cv2/misc/__init__.py b/venv/lib/python3.11/site-packages/cv2/misc/__init__.py new file mode 100644 index 0000000000000000000000000000000000000000..3e0559d3d4718e454eb687530f262bcf244e70e5 --- /dev/null +++ b/venv/lib/python3.11/site-packages/cv2/misc/__init__.py @@ -0,0 +1 @@ +from .version import get_ocv_version diff --git a/venv/lib/python3.11/site-packages/cv2/misc/version.py b/venv/lib/python3.11/site-packages/cv2/misc/version.py new file mode 100644 index 0000000000000000000000000000000000000000..d34705872edab5e755e896f9d85a0534b9ab7657 --- /dev/null +++ b/venv/lib/python3.11/site-packages/cv2/misc/version.py @@ -0,0 +1,5 @@ +import cv2 + + +def get_ocv_version(): + return getattr(cv2, "__version__", "unavailable") diff --git a/venv/lib/python3.11/site-packages/cv2/ml/__init__.pyi b/venv/lib/python3.11/site-packages/cv2/ml/__init__.pyi new file mode 100644 index 0000000000000000000000000000000000000000..688da1a1f289f0430e5bacc246444709075d2b33 --- /dev/null +++ b/venv/lib/python3.11/site-packages/cv2/ml/__init__.pyi @@ -0,0 +1,695 @@ +__all__: list[str] = [] + +import cv2 +import cv2.typing +import typing as _typing + + +# Enumerations +VAR_NUMERICAL: int +VAR_ORDERED: int +VAR_CATEGORICAL: int +VariableTypes = int +"""One of [VAR_NUMERICAL, VAR_ORDERED, VAR_CATEGORICAL]""" + +TEST_ERROR: int +TRAIN_ERROR: int +ErrorTypes = int +"""One of [TEST_ERROR, TRAIN_ERROR]""" + +ROW_SAMPLE: int +COL_SAMPLE: int +SampleTypes = int +"""One of [ROW_SAMPLE, COL_SAMPLE]""" + + +StatModel_UPDATE_MODEL: int +STAT_MODEL_UPDATE_MODEL: int +StatModel_RAW_OUTPUT: int +STAT_MODEL_RAW_OUTPUT: int +StatModel_COMPRESSED_INPUT: int +STAT_MODEL_COMPRESSED_INPUT: int +StatModel_PREPROCESSED_INPUT: int +STAT_MODEL_PREPROCESSED_INPUT: int +StatModel_Flags = int +"""One of [StatModel_UPDATE_MODEL, STAT_MODEL_UPDATE_MODEL, StatModel_RAW_OUTPUT, STAT_MODEL_RAW_OUTPUT, StatModel_COMPRESSED_INPUT, STAT_MODEL_COMPRESSED_INPUT, StatModel_PREPROCESSED_INPUT, STAT_MODEL_PREPROCESSED_INPUT]""" + +KNearest_BRUTE_FORCE: int +KNEAREST_BRUTE_FORCE: int +KNearest_KDTREE: int +KNEAREST_KDTREE: int +KNearest_Types = int +"""One of [KNearest_BRUTE_FORCE, KNEAREST_BRUTE_FORCE, KNearest_KDTREE, KNEAREST_KDTREE]""" + +SVM_C_SVC: int +SVM_NU_SVC: int +SVM_ONE_CLASS: int +SVM_EPS_SVR: int +SVM_NU_SVR: int +SVM_Types = int +"""One of [SVM_C_SVC, SVM_NU_SVC, SVM_ONE_CLASS, SVM_EPS_SVR, SVM_NU_SVR]""" + +SVM_CUSTOM: int +SVM_LINEAR: int +SVM_POLY: int +SVM_RBF: int +SVM_SIGMOID: int +SVM_CHI2: int +SVM_INTER: int +SVM_KernelTypes = int +"""One of [SVM_CUSTOM, SVM_LINEAR, SVM_POLY, SVM_RBF, SVM_SIGMOID, SVM_CHI2, SVM_INTER]""" + +SVM_C: int +SVM_GAMMA: int +SVM_P: int +SVM_NU: int +SVM_COEF: int +SVM_DEGREE: int +SVM_ParamTypes = int +"""One of [SVM_C, SVM_GAMMA, SVM_P, SVM_NU, SVM_COEF, SVM_DEGREE]""" + +EM_COV_MAT_SPHERICAL: int +EM_COV_MAT_DIAGONAL: int +EM_COV_MAT_GENERIC: int +EM_COV_MAT_DEFAULT: int +EM_Types = int +"""One of [EM_COV_MAT_SPHERICAL, EM_COV_MAT_DIAGONAL, EM_COV_MAT_GENERIC, EM_COV_MAT_DEFAULT]""" + +EM_DEFAULT_NCLUSTERS: int +EM_DEFAULT_MAX_ITERS: int +EM_START_E_STEP: int +EM_START_M_STEP: int +EM_START_AUTO_STEP: int + +DTrees_PREDICT_AUTO: int +DTREES_PREDICT_AUTO: int +DTrees_PREDICT_SUM: int +DTREES_PREDICT_SUM: int +DTrees_PREDICT_MAX_VOTE: int +DTREES_PREDICT_MAX_VOTE: int +DTrees_PREDICT_MASK: int +DTREES_PREDICT_MASK: int +DTrees_Flags = int +"""One of [DTrees_PREDICT_AUTO, DTREES_PREDICT_AUTO, DTrees_PREDICT_SUM, DTREES_PREDICT_SUM, DTrees_PREDICT_MAX_VOTE, DTREES_PREDICT_MAX_VOTE, DTrees_PREDICT_MASK, DTREES_PREDICT_MASK]""" + +Boost_DISCRETE: int +BOOST_DISCRETE: int +Boost_REAL: int +BOOST_REAL: int +Boost_LOGIT: int +BOOST_LOGIT: int +Boost_GENTLE: int +BOOST_GENTLE: int +Boost_Types = int +"""One of [Boost_DISCRETE, BOOST_DISCRETE, Boost_REAL, BOOST_REAL, Boost_LOGIT, BOOST_LOGIT, Boost_GENTLE, BOOST_GENTLE]""" + +ANN_MLP_BACKPROP: int +ANN_MLP_RPROP: int +ANN_MLP_ANNEAL: int +ANN_MLP_TrainingMethods = int +"""One of [ANN_MLP_BACKPROP, ANN_MLP_RPROP, ANN_MLP_ANNEAL]""" + +ANN_MLP_IDENTITY: int +ANN_MLP_SIGMOID_SYM: int +ANN_MLP_GAUSSIAN: int +ANN_MLP_RELU: int +ANN_MLP_LEAKYRELU: int +ANN_MLP_ActivationFunctions = int +"""One of [ANN_MLP_IDENTITY, ANN_MLP_SIGMOID_SYM, ANN_MLP_GAUSSIAN, ANN_MLP_RELU, ANN_MLP_LEAKYRELU]""" + +ANN_MLP_UPDATE_WEIGHTS: int +ANN_MLP_NO_INPUT_SCALE: int +ANN_MLP_NO_OUTPUT_SCALE: int +ANN_MLP_TrainFlags = int +"""One of [ANN_MLP_UPDATE_WEIGHTS, ANN_MLP_NO_INPUT_SCALE, ANN_MLP_NO_OUTPUT_SCALE]""" + +LogisticRegression_REG_DISABLE: int +LOGISTIC_REGRESSION_REG_DISABLE: int +LogisticRegression_REG_L1: int +LOGISTIC_REGRESSION_REG_L1: int +LogisticRegression_REG_L2: int +LOGISTIC_REGRESSION_REG_L2: int +LogisticRegression_RegKinds = int +"""One of [LogisticRegression_REG_DISABLE, LOGISTIC_REGRESSION_REG_DISABLE, LogisticRegression_REG_L1, LOGISTIC_REGRESSION_REG_L1, LogisticRegression_REG_L2, LOGISTIC_REGRESSION_REG_L2]""" + +LogisticRegression_BATCH: int +LOGISTIC_REGRESSION_BATCH: int +LogisticRegression_MINI_BATCH: int +LOGISTIC_REGRESSION_MINI_BATCH: int +LogisticRegression_Methods = int +"""One of [LogisticRegression_BATCH, LOGISTIC_REGRESSION_BATCH, LogisticRegression_MINI_BATCH, LOGISTIC_REGRESSION_MINI_BATCH]""" + +SVMSGD_SGD: int +SVMSGD_ASGD: int +SVMSGD_SvmsgdType = int +"""One of [SVMSGD_SGD, SVMSGD_ASGD]""" + +SVMSGD_SOFT_MARGIN: int +SVMSGD_HARD_MARGIN: int +SVMSGD_MarginType = int +"""One of [SVMSGD_SOFT_MARGIN, SVMSGD_HARD_MARGIN]""" + + +# Classes +class ParamGrid: + minVal: float + maxVal: float + logStep: float + + # Functions + @classmethod + def create(cls, minVal: float = ..., maxVal: float = ..., logstep: float = ...) -> ParamGrid: ... + + +class TrainData: + # Functions + def getLayout(self) -> int: ... + + def getNTrainSamples(self) -> int: ... + + def getNTestSamples(self) -> int: ... + + def getNSamples(self) -> int: ... + + def getNVars(self) -> int: ... + + def getNAllVars(self) -> int: ... + + @_typing.overload + def getSample(self, varIdx: cv2.typing.MatLike, sidx: int, buf: float) -> None: ... + @_typing.overload + def getSample(self, varIdx: cv2.UMat, sidx: int, buf: float) -> None: ... + + def getSamples(self) -> cv2.typing.MatLike: ... + + def getMissing(self) -> cv2.typing.MatLike: ... + + def getTrainSamples(self, layout: int = ..., compressSamples: bool = ..., compressVars: bool = ...) -> cv2.typing.MatLike: ... + + def getTrainResponses(self) -> cv2.typing.MatLike: ... + + def getTrainNormCatResponses(self) -> cv2.typing.MatLike: ... + + def getTestResponses(self) -> cv2.typing.MatLike: ... + + def getTestNormCatResponses(self) -> cv2.typing.MatLike: ... + + def getResponses(self) -> cv2.typing.MatLike: ... + + def getNormCatResponses(self) -> cv2.typing.MatLike: ... + + def getSampleWeights(self) -> cv2.typing.MatLike: ... + + def getTrainSampleWeights(self) -> cv2.typing.MatLike: ... + + def getTestSampleWeights(self) -> cv2.typing.MatLike: ... + + def getVarIdx(self) -> cv2.typing.MatLike: ... + + def getVarType(self) -> cv2.typing.MatLike: ... + + def getVarSymbolFlags(self) -> cv2.typing.MatLike: ... + + def getResponseType(self) -> int: ... + + def getTrainSampleIdx(self) -> cv2.typing.MatLike: ... + + def getTestSampleIdx(self) -> cv2.typing.MatLike: ... + + @_typing.overload + def getValues(self, vi: int, sidx: cv2.typing.MatLike, values: float) -> None: ... + @_typing.overload + def getValues(self, vi: int, sidx: cv2.UMat, values: float) -> None: ... + + def getDefaultSubstValues(self) -> cv2.typing.MatLike: ... + + def getCatCount(self, vi: int) -> int: ... + + def getClassLabels(self) -> cv2.typing.MatLike: ... + + def getCatOfs(self) -> cv2.typing.MatLike: ... + + def getCatMap(self) -> cv2.typing.MatLike: ... + + def setTrainTestSplit(self, count: int, shuffle: bool = ...) -> None: ... + + def setTrainTestSplitRatio(self, ratio: float, shuffle: bool = ...) -> None: ... + + def shuffleTrainTest(self) -> None: ... + + def getTestSamples(self) -> cv2.typing.MatLike: ... + + def getNames(self, names: _typing.Sequence[str]) -> None: ... + + @staticmethod + def getSubVector(vec: cv2.typing.MatLike, idx: cv2.typing.MatLike) -> cv2.typing.MatLike: ... + + @staticmethod + def getSubMatrix(matrix: cv2.typing.MatLike, idx: cv2.typing.MatLike, layout: int) -> cv2.typing.MatLike: ... + + @classmethod + @_typing.overload + def create(cls, samples: cv2.typing.MatLike, layout: int, responses: cv2.typing.MatLike, varIdx: cv2.typing.MatLike | None = ..., sampleIdx: cv2.typing.MatLike | None = ..., sampleWeights: cv2.typing.MatLike | None = ..., varType: cv2.typing.MatLike | None = ...) -> TrainData: ... + @classmethod + @_typing.overload + def create(cls, samples: cv2.UMat, layout: int, responses: cv2.UMat, varIdx: cv2.UMat | None = ..., sampleIdx: cv2.UMat | None = ..., sampleWeights: cv2.UMat | None = ..., varType: cv2.UMat | None = ...) -> TrainData: ... + + +class StatModel(cv2.Algorithm): + # Functions + def getVarCount(self) -> int: ... + + def empty(self) -> bool: ... + + def isTrained(self) -> bool: ... + + def isClassifier(self) -> bool: ... + + @_typing.overload + def train(self, trainData: TrainData, flags: int = ...) -> bool: ... + @_typing.overload + def train(self, samples: cv2.typing.MatLike, layout: int, responses: cv2.typing.MatLike) -> bool: ... + @_typing.overload + def train(self, samples: cv2.UMat, layout: int, responses: cv2.UMat) -> bool: ... + + @_typing.overload + def calcError(self, data: TrainData, test: bool, resp: cv2.typing.MatLike | None = ...) -> tuple[float, cv2.typing.MatLike]: ... + @_typing.overload + def calcError(self, data: TrainData, test: bool, resp: cv2.UMat | None = ...) -> tuple[float, cv2.UMat]: ... + + @_typing.overload + def predict(self, samples: cv2.typing.MatLike, results: cv2.typing.MatLike | None = ..., flags: int = ...) -> tuple[float, cv2.typing.MatLike]: ... + @_typing.overload + def predict(self, samples: cv2.UMat, results: cv2.UMat | None = ..., flags: int = ...) -> tuple[float, cv2.UMat]: ... + + +class NormalBayesClassifier(StatModel): + # Functions + @_typing.overload + def predictProb(self, inputs: cv2.typing.MatLike, outputs: cv2.typing.MatLike | None = ..., outputProbs: cv2.typing.MatLike | None = ..., flags: int = ...) -> tuple[float, cv2.typing.MatLike, cv2.typing.MatLike]: ... + @_typing.overload + def predictProb(self, inputs: cv2.UMat, outputs: cv2.UMat | None = ..., outputProbs: cv2.UMat | None = ..., flags: int = ...) -> tuple[float, cv2.UMat, cv2.UMat]: ... + + @classmethod + def create(cls) -> NormalBayesClassifier: ... + + @classmethod + def load(cls, filepath: str, nodeName: str = ...) -> NormalBayesClassifier: ... + + +class KNearest(StatModel): + # Functions + def getDefaultK(self) -> int: ... + + def setDefaultK(self, val: int) -> None: ... + + def getIsClassifier(self) -> bool: ... + + def setIsClassifier(self, val: bool) -> None: ... + + def getEmax(self) -> int: ... + + def setEmax(self, val: int) -> None: ... + + def getAlgorithmType(self) -> int: ... + + def setAlgorithmType(self, val: int) -> None: ... + + @_typing.overload + def findNearest(self, samples: cv2.typing.MatLike, k: int, results: cv2.typing.MatLike | None = ..., neighborResponses: cv2.typing.MatLike | None = ..., dist: cv2.typing.MatLike | None = ...) -> tuple[float, cv2.typing.MatLike, cv2.typing.MatLike, cv2.typing.MatLike]: ... + @_typing.overload + def findNearest(self, samples: cv2.UMat, k: int, results: cv2.UMat | None = ..., neighborResponses: cv2.UMat | None = ..., dist: cv2.UMat | None = ...) -> tuple[float, cv2.UMat, cv2.UMat, cv2.UMat]: ... + + @classmethod + def create(cls) -> KNearest: ... + + @classmethod + def load(cls, filepath: str) -> KNearest: ... + + +class SVM(StatModel): + # Functions + def getType(self) -> int: ... + + def setType(self, val: int) -> None: ... + + def getGamma(self) -> float: ... + + def setGamma(self, val: float) -> None: ... + + def getCoef0(self) -> float: ... + + def setCoef0(self, val: float) -> None: ... + + def getDegree(self) -> float: ... + + def setDegree(self, val: float) -> None: ... + + def getC(self) -> float: ... + + def setC(self, val: float) -> None: ... + + def getNu(self) -> float: ... + + def setNu(self, val: float) -> None: ... + + def getP(self) -> float: ... + + def setP(self, val: float) -> None: ... + + def getClassWeights(self) -> cv2.typing.MatLike: ... + + def setClassWeights(self, val: cv2.typing.MatLike) -> None: ... + + def getTermCriteria(self) -> cv2.typing.TermCriteria: ... + + def setTermCriteria(self, val: cv2.typing.TermCriteria) -> None: ... + + def getKernelType(self) -> int: ... + + def setKernel(self, kernelType: int) -> None: ... + + @_typing.overload + def trainAuto(self, samples: cv2.typing.MatLike, layout: int, responses: cv2.typing.MatLike, kFold: int = ..., Cgrid: ParamGrid = ..., gammaGrid: ParamGrid = ..., pGrid: ParamGrid = ..., nuGrid: ParamGrid = ..., coeffGrid: ParamGrid = ..., degreeGrid: ParamGrid = ..., balanced: bool = ...) -> bool: ... + @_typing.overload + def trainAuto(self, samples: cv2.UMat, layout: int, responses: cv2.UMat, kFold: int = ..., Cgrid: ParamGrid = ..., gammaGrid: ParamGrid = ..., pGrid: ParamGrid = ..., nuGrid: ParamGrid = ..., coeffGrid: ParamGrid = ..., degreeGrid: ParamGrid = ..., balanced: bool = ...) -> bool: ... + + def getSupportVectors(self) -> cv2.typing.MatLike: ... + + def getUncompressedSupportVectors(self) -> cv2.typing.MatLike: ... + + @_typing.overload + def getDecisionFunction(self, i: int, alpha: cv2.typing.MatLike | None = ..., svidx: cv2.typing.MatLike | None = ...) -> tuple[float, cv2.typing.MatLike, cv2.typing.MatLike]: ... + @_typing.overload + def getDecisionFunction(self, i: int, alpha: cv2.UMat | None = ..., svidx: cv2.UMat | None = ...) -> tuple[float, cv2.UMat, cv2.UMat]: ... + + @staticmethod + def getDefaultGridPtr(param_id: int) -> ParamGrid: ... + + @classmethod + def create(cls) -> SVM: ... + + @classmethod + def load(cls, filepath: str) -> SVM: ... + + +class EM(StatModel): + # Functions + def getClustersNumber(self) -> int: ... + + def setClustersNumber(self, val: int) -> None: ... + + def getCovarianceMatrixType(self) -> int: ... + + def setCovarianceMatrixType(self, val: int) -> None: ... + + def getTermCriteria(self) -> cv2.typing.TermCriteria: ... + + def setTermCriteria(self, val: cv2.typing.TermCriteria) -> None: ... + + def getWeights(self) -> cv2.typing.MatLike: ... + + def getMeans(self) -> cv2.typing.MatLike: ... + + def getCovs(self, covs: _typing.Sequence[cv2.typing.MatLike] | None = ...) -> _typing.Sequence[cv2.typing.MatLike]: ... + + @_typing.overload + def predict(self, samples: cv2.typing.MatLike, results: cv2.typing.MatLike | None = ..., flags: int = ...) -> tuple[float, cv2.typing.MatLike]: ... + @_typing.overload + def predict(self, samples: cv2.UMat, results: cv2.UMat | None = ..., flags: int = ...) -> tuple[float, cv2.UMat]: ... + + @_typing.overload + def predict2(self, sample: cv2.typing.MatLike, probs: cv2.typing.MatLike | None = ...) -> tuple[cv2.typing.Vec2d, cv2.typing.MatLike]: ... + @_typing.overload + def predict2(self, sample: cv2.UMat, probs: cv2.UMat | None = ...) -> tuple[cv2.typing.Vec2d, cv2.UMat]: ... + + @_typing.overload + def trainEM(self, samples: cv2.typing.MatLike, logLikelihoods: cv2.typing.MatLike | None = ..., labels: cv2.typing.MatLike | None = ..., probs: cv2.typing.MatLike | None = ...) -> tuple[bool, cv2.typing.MatLike, cv2.typing.MatLike, cv2.typing.MatLike]: ... + @_typing.overload + def trainEM(self, samples: cv2.UMat, logLikelihoods: cv2.UMat | None = ..., labels: cv2.UMat | None = ..., probs: cv2.UMat | None = ...) -> tuple[bool, cv2.UMat, cv2.UMat, cv2.UMat]: ... + + @_typing.overload + def trainE(self, samples: cv2.typing.MatLike, means0: cv2.typing.MatLike, covs0: cv2.typing.MatLike | None = ..., weights0: cv2.typing.MatLike | None = ..., logLikelihoods: cv2.typing.MatLike | None = ..., labels: cv2.typing.MatLike | None = ..., probs: cv2.typing.MatLike | None = ...) -> tuple[bool, cv2.typing.MatLike, cv2.typing.MatLike, cv2.typing.MatLike]: ... + @_typing.overload + def trainE(self, samples: cv2.UMat, means0: cv2.UMat, covs0: cv2.UMat | None = ..., weights0: cv2.UMat | None = ..., logLikelihoods: cv2.UMat | None = ..., labels: cv2.UMat | None = ..., probs: cv2.UMat | None = ...) -> tuple[bool, cv2.UMat, cv2.UMat, cv2.UMat]: ... + + @_typing.overload + def trainM(self, samples: cv2.typing.MatLike, probs0: cv2.typing.MatLike, logLikelihoods: cv2.typing.MatLike | None = ..., labels: cv2.typing.MatLike | None = ..., probs: cv2.typing.MatLike | None = ...) -> tuple[bool, cv2.typing.MatLike, cv2.typing.MatLike, cv2.typing.MatLike]: ... + @_typing.overload + def trainM(self, samples: cv2.UMat, probs0: cv2.UMat, logLikelihoods: cv2.UMat | None = ..., labels: cv2.UMat | None = ..., probs: cv2.UMat | None = ...) -> tuple[bool, cv2.UMat, cv2.UMat, cv2.UMat]: ... + + @classmethod + def create(cls) -> EM: ... + + @classmethod + def load(cls, filepath: str, nodeName: str = ...) -> EM: ... + + +class DTrees(StatModel): + # Functions + def getMaxCategories(self) -> int: ... + + def setMaxCategories(self, val: int) -> None: ... + + def getMaxDepth(self) -> int: ... + + def setMaxDepth(self, val: int) -> None: ... + + def getMinSampleCount(self) -> int: ... + + def setMinSampleCount(self, val: int) -> None: ... + + def getCVFolds(self) -> int: ... + + def setCVFolds(self, val: int) -> None: ... + + def getUseSurrogates(self) -> bool: ... + + def setUseSurrogates(self, val: bool) -> None: ... + + def getUse1SERule(self) -> bool: ... + + def setUse1SERule(self, val: bool) -> None: ... + + def getTruncatePrunedTree(self) -> bool: ... + + def setTruncatePrunedTree(self, val: bool) -> None: ... + + def getRegressionAccuracy(self) -> float: ... + + def setRegressionAccuracy(self, val: float) -> None: ... + + def getPriors(self) -> cv2.typing.MatLike: ... + + def setPriors(self, val: cv2.typing.MatLike) -> None: ... + + @classmethod + def create(cls) -> DTrees: ... + + @classmethod + def load(cls, filepath: str, nodeName: str = ...) -> DTrees: ... + + +class RTrees(DTrees): + # Functions + def getCalculateVarImportance(self) -> bool: ... + + def setCalculateVarImportance(self, val: bool) -> None: ... + + def getActiveVarCount(self) -> int: ... + + def setActiveVarCount(self, val: int) -> None: ... + + def getTermCriteria(self) -> cv2.typing.TermCriteria: ... + + def setTermCriteria(self, val: cv2.typing.TermCriteria) -> None: ... + + def getVarImportance(self) -> cv2.typing.MatLike: ... + + @_typing.overload + def getVotes(self, samples: cv2.typing.MatLike, flags: int, results: cv2.typing.MatLike | None = ...) -> cv2.typing.MatLike: ... + @_typing.overload + def getVotes(self, samples: cv2.UMat, flags: int, results: cv2.UMat | None = ...) -> cv2.UMat: ... + + def getOOBError(self) -> float: ... + + @classmethod + def create(cls) -> RTrees: ... + + @classmethod + def load(cls, filepath: str, nodeName: str = ...) -> RTrees: ... + + +class Boost(DTrees): + # Functions + def getBoostType(self) -> int: ... + + def setBoostType(self, val: int) -> None: ... + + def getWeakCount(self) -> int: ... + + def setWeakCount(self, val: int) -> None: ... + + def getWeightTrimRate(self) -> float: ... + + def setWeightTrimRate(self, val: float) -> None: ... + + @classmethod + def create(cls) -> Boost: ... + + @classmethod + def load(cls, filepath: str, nodeName: str = ...) -> Boost: ... + + +class ANN_MLP(StatModel): + # Functions + def setTrainMethod(self, method: int, param1: float = ..., param2: float = ...) -> None: ... + + def getTrainMethod(self) -> int: ... + + def setActivationFunction(self, type: int, param1: float = ..., param2: float = ...) -> None: ... + + @_typing.overload + def setLayerSizes(self, _layer_sizes: cv2.typing.MatLike) -> None: ... + @_typing.overload + def setLayerSizes(self, _layer_sizes: cv2.UMat) -> None: ... + + def getLayerSizes(self) -> cv2.typing.MatLike: ... + + def getTermCriteria(self) -> cv2.typing.TermCriteria: ... + + def setTermCriteria(self, val: cv2.typing.TermCriteria) -> None: ... + + def getBackpropWeightScale(self) -> float: ... + + def setBackpropWeightScale(self, val: float) -> None: ... + + def getBackpropMomentumScale(self) -> float: ... + + def setBackpropMomentumScale(self, val: float) -> None: ... + + def getRpropDW0(self) -> float: ... + + def setRpropDW0(self, val: float) -> None: ... + + def getRpropDWPlus(self) -> float: ... + + def setRpropDWPlus(self, val: float) -> None: ... + + def getRpropDWMinus(self) -> float: ... + + def setRpropDWMinus(self, val: float) -> None: ... + + def getRpropDWMin(self) -> float: ... + + def setRpropDWMin(self, val: float) -> None: ... + + def getRpropDWMax(self) -> float: ... + + def setRpropDWMax(self, val: float) -> None: ... + + def getAnnealInitialT(self) -> float: ... + + def setAnnealInitialT(self, val: float) -> None: ... + + def getAnnealFinalT(self) -> float: ... + + def setAnnealFinalT(self, val: float) -> None: ... + + def getAnnealCoolingRatio(self) -> float: ... + + def setAnnealCoolingRatio(self, val: float) -> None: ... + + def getAnnealItePerStep(self) -> int: ... + + def setAnnealItePerStep(self, val: int) -> None: ... + + def getWeights(self, layerIdx: int) -> cv2.typing.MatLike: ... + + @classmethod + def create(cls) -> ANN_MLP: ... + + @classmethod + def load(cls, filepath: str) -> ANN_MLP: ... + + +class LogisticRegression(StatModel): + # Functions + def getLearningRate(self) -> float: ... + + def setLearningRate(self, val: float) -> None: ... + + def getIterations(self) -> int: ... + + def setIterations(self, val: int) -> None: ... + + def getRegularization(self) -> int: ... + + def setRegularization(self, val: int) -> None: ... + + def getTrainMethod(self) -> int: ... + + def setTrainMethod(self, val: int) -> None: ... + + def getMiniBatchSize(self) -> int: ... + + def setMiniBatchSize(self, val: int) -> None: ... + + def getTermCriteria(self) -> cv2.typing.TermCriteria: ... + + def setTermCriteria(self, val: cv2.typing.TermCriteria) -> None: ... + + @_typing.overload + def predict(self, samples: cv2.typing.MatLike, results: cv2.typing.MatLike | None = ..., flags: int = ...) -> tuple[float, cv2.typing.MatLike]: ... + @_typing.overload + def predict(self, samples: cv2.UMat, results: cv2.UMat | None = ..., flags: int = ...) -> tuple[float, cv2.UMat]: ... + + def get_learnt_thetas(self) -> cv2.typing.MatLike: ... + + @classmethod + def create(cls) -> LogisticRegression: ... + + @classmethod + def load(cls, filepath: str, nodeName: str = ...) -> LogisticRegression: ... + + +class SVMSGD(StatModel): + # Functions + def getWeights(self) -> cv2.typing.MatLike: ... + + def getShift(self) -> float: ... + + @classmethod + def create(cls) -> SVMSGD: ... + + @classmethod + def load(cls, filepath: str, nodeName: str = ...) -> SVMSGD: ... + + def setOptimalParameters(self, svmsgdType: int = ..., marginType: int = ...) -> None: ... + + def getSvmsgdType(self) -> int: ... + + def setSvmsgdType(self, svmsgdType: int) -> None: ... + + def getMarginType(self) -> int: ... + + def setMarginType(self, marginType: int) -> None: ... + + def getMarginRegularization(self) -> float: ... + + def setMarginRegularization(self, marginRegularization: float) -> None: ... + + def getInitialStepSize(self) -> float: ... + + def setInitialStepSize(self, InitialStepSize: float) -> None: ... + + def getStepDecreasingPower(self) -> float: ... + + def setStepDecreasingPower(self, stepDecreasingPower: float) -> None: ... + + def getTermCriteria(self) -> cv2.typing.TermCriteria: ... + + def setTermCriteria(self, val: cv2.typing.TermCriteria) -> None: ... + + + diff --git a/venv/lib/python3.11/site-packages/cv2/ocl/__init__.pyi b/venv/lib/python3.11/site-packages/cv2/ocl/__init__.pyi new file mode 100644 index 0000000000000000000000000000000000000000..1bf5bb2590c25ca1d490537a9b7ac2350031ac6f --- /dev/null +++ b/venv/lib/python3.11/site-packages/cv2/ocl/__init__.pyi @@ -0,0 +1,252 @@ +__all__: list[str] = [] + +# Enumerations +OCL_VECTOR_OWN: int +OCL_VECTOR_MAX: int +OCL_VECTOR_DEFAULT: int +OclVectorStrategy = int +"""One of [OCL_VECTOR_OWN, OCL_VECTOR_MAX, OCL_VECTOR_DEFAULT]""" + + +Device_TYPE_DEFAULT: int +DEVICE_TYPE_DEFAULT: int +Device_TYPE_CPU: int +DEVICE_TYPE_CPU: int +Device_TYPE_GPU: int +DEVICE_TYPE_GPU: int +Device_TYPE_ACCELERATOR: int +DEVICE_TYPE_ACCELERATOR: int +Device_TYPE_DGPU: int +DEVICE_TYPE_DGPU: int +Device_TYPE_IGPU: int +DEVICE_TYPE_IGPU: int +Device_TYPE_ALL: int +DEVICE_TYPE_ALL: int +Device_FP_DENORM: int +DEVICE_FP_DENORM: int +Device_FP_INF_NAN: int +DEVICE_FP_INF_NAN: int +Device_FP_ROUND_TO_NEAREST: int +DEVICE_FP_ROUND_TO_NEAREST: int +Device_FP_ROUND_TO_ZERO: int +DEVICE_FP_ROUND_TO_ZERO: int +Device_FP_ROUND_TO_INF: int +DEVICE_FP_ROUND_TO_INF: int +Device_FP_FMA: int +DEVICE_FP_FMA: int +Device_FP_SOFT_FLOAT: int +DEVICE_FP_SOFT_FLOAT: int +Device_FP_CORRECTLY_ROUNDED_DIVIDE_SQRT: int +DEVICE_FP_CORRECTLY_ROUNDED_DIVIDE_SQRT: int +Device_EXEC_KERNEL: int +DEVICE_EXEC_KERNEL: int +Device_EXEC_NATIVE_KERNEL: int +DEVICE_EXEC_NATIVE_KERNEL: int +Device_NO_CACHE: int +DEVICE_NO_CACHE: int +Device_READ_ONLY_CACHE: int +DEVICE_READ_ONLY_CACHE: int +Device_READ_WRITE_CACHE: int +DEVICE_READ_WRITE_CACHE: int +Device_NO_LOCAL_MEM: int +DEVICE_NO_LOCAL_MEM: int +Device_LOCAL_IS_LOCAL: int +DEVICE_LOCAL_IS_LOCAL: int +Device_LOCAL_IS_GLOBAL: int +DEVICE_LOCAL_IS_GLOBAL: int +Device_UNKNOWN_VENDOR: int +DEVICE_UNKNOWN_VENDOR: int +Device_VENDOR_AMD: int +DEVICE_VENDOR_AMD: int +Device_VENDOR_INTEL: int +DEVICE_VENDOR_INTEL: int +Device_VENDOR_NVIDIA: int +DEVICE_VENDOR_NVIDIA: int + +KernelArg_LOCAL: int +KERNEL_ARG_LOCAL: int +KernelArg_READ_ONLY: int +KERNEL_ARG_READ_ONLY: int +KernelArg_WRITE_ONLY: int +KERNEL_ARG_WRITE_ONLY: int +KernelArg_READ_WRITE: int +KERNEL_ARG_READ_WRITE: int +KernelArg_CONSTANT: int +KERNEL_ARG_CONSTANT: int +KernelArg_PTR_ONLY: int +KERNEL_ARG_PTR_ONLY: int +KernelArg_NO_SIZE: int +KERNEL_ARG_NO_SIZE: int + + +# Classes +class Device: + # Functions + def __init__(self) -> None: ... + + def name(self) -> str: ... + + def extensions(self) -> str: ... + + def isExtensionSupported(self, extensionName: str) -> bool: ... + + def version(self) -> str: ... + + def vendorName(self) -> str: ... + + def OpenCL_C_Version(self) -> str: ... + + def OpenCLVersion(self) -> str: ... + + def deviceVersionMajor(self) -> int: ... + + def deviceVersionMinor(self) -> int: ... + + def driverVersion(self) -> str: ... + + def type(self) -> int: ... + + def addressBits(self) -> int: ... + + def available(self) -> bool: ... + + def compilerAvailable(self) -> bool: ... + + def linkerAvailable(self) -> bool: ... + + def doubleFPConfig(self) -> int: ... + + def singleFPConfig(self) -> int: ... + + def halfFPConfig(self) -> int: ... + + def hasFP64(self) -> bool: ... + + def hasFP16(self) -> bool: ... + + def endianLittle(self) -> bool: ... + + def errorCorrectionSupport(self) -> bool: ... + + def executionCapabilities(self) -> int: ... + + def globalMemCacheSize(self) -> int: ... + + def globalMemCacheType(self) -> int: ... + + def globalMemCacheLineSize(self) -> int: ... + + def globalMemSize(self) -> int: ... + + def localMemSize(self) -> int: ... + + def localMemType(self) -> int: ... + + def hostUnifiedMemory(self) -> bool: ... + + def imageSupport(self) -> bool: ... + + def imageFromBufferSupport(self) -> bool: ... + + def intelSubgroupsSupport(self) -> bool: ... + + def image2DMaxWidth(self) -> int: ... + + def image2DMaxHeight(self) -> int: ... + + def image3DMaxWidth(self) -> int: ... + + def image3DMaxHeight(self) -> int: ... + + def image3DMaxDepth(self) -> int: ... + + def imageMaxBufferSize(self) -> int: ... + + def imageMaxArraySize(self) -> int: ... + + def vendorID(self) -> int: ... + + def isAMD(self) -> bool: ... + + def isIntel(self) -> bool: ... + + def isNVidia(self) -> bool: ... + + def maxClockFrequency(self) -> int: ... + + def maxComputeUnits(self) -> int: ... + + def maxConstantArgs(self) -> int: ... + + def maxConstantBufferSize(self) -> int: ... + + def maxMemAllocSize(self) -> int: ... + + def maxParameterSize(self) -> int: ... + + def maxReadImageArgs(self) -> int: ... + + def maxWriteImageArgs(self) -> int: ... + + def maxSamplers(self) -> int: ... + + def maxWorkGroupSize(self) -> int: ... + + def maxWorkItemDims(self) -> int: ... + + def memBaseAddrAlign(self) -> int: ... + + def nativeVectorWidthChar(self) -> int: ... + + def nativeVectorWidthShort(self) -> int: ... + + def nativeVectorWidthInt(self) -> int: ... + + def nativeVectorWidthLong(self) -> int: ... + + def nativeVectorWidthFloat(self) -> int: ... + + def nativeVectorWidthDouble(self) -> int: ... + + def nativeVectorWidthHalf(self) -> int: ... + + def preferredVectorWidthChar(self) -> int: ... + + def preferredVectorWidthShort(self) -> int: ... + + def preferredVectorWidthInt(self) -> int: ... + + def preferredVectorWidthLong(self) -> int: ... + + def preferredVectorWidthFloat(self) -> int: ... + + def preferredVectorWidthDouble(self) -> int: ... + + def preferredVectorWidthHalf(self) -> int: ... + + def printfBufferSize(self) -> int: ... + + def profilingTimerResolution(self) -> int: ... + + @classmethod + def getDefault(cls) -> Device: ... + + +class OpenCLExecutionContext: + ... + + +# Functions +def finish() -> None: ... + +def haveAmdBlas() -> bool: ... + +def haveAmdFft() -> bool: ... + +def haveOpenCL() -> bool: ... + +def setUseOpenCL(flag: bool) -> None: ... + +def useOpenCL() -> bool: ... + + diff --git a/venv/lib/python3.11/site-packages/cv2/ogl/__init__.pyi b/venv/lib/python3.11/site-packages/cv2/ogl/__init__.pyi new file mode 100644 index 0000000000000000000000000000000000000000..503e1a837721dd524bd7b1f6b34250c98459f274 --- /dev/null +++ b/venv/lib/python3.11/site-packages/cv2/ogl/__init__.pyi @@ -0,0 +1,51 @@ +__all__: list[str] = [] + +# Enumerations +POINTS: int +LINES: int +LINE_LOOP: int +LINE_STRIP: int +TRIANGLES: int +TRIANGLE_STRIP: int +TRIANGLE_FAN: int +QUADS: int +QUAD_STRIP: int +POLYGON: int +RenderModes = int +"""One of [POINTS, LINES, LINE_LOOP, LINE_STRIP, TRIANGLES, TRIANGLE_STRIP, TRIANGLE_FAN, QUADS, QUAD_STRIP, POLYGON]""" + + +Buffer_ARRAY_BUFFER: int +BUFFER_ARRAY_BUFFER: int +Buffer_ELEMENT_ARRAY_BUFFER: int +BUFFER_ELEMENT_ARRAY_BUFFER: int +Buffer_PIXEL_PACK_BUFFER: int +BUFFER_PIXEL_PACK_BUFFER: int +Buffer_PIXEL_UNPACK_BUFFER: int +BUFFER_PIXEL_UNPACK_BUFFER: int +Buffer_Target = int +"""One of [Buffer_ARRAY_BUFFER, BUFFER_ARRAY_BUFFER, Buffer_ELEMENT_ARRAY_BUFFER, BUFFER_ELEMENT_ARRAY_BUFFER, Buffer_PIXEL_PACK_BUFFER, BUFFER_PIXEL_PACK_BUFFER, Buffer_PIXEL_UNPACK_BUFFER, BUFFER_PIXEL_UNPACK_BUFFER]""" + +Buffer_READ_ONLY: int +BUFFER_READ_ONLY: int +Buffer_WRITE_ONLY: int +BUFFER_WRITE_ONLY: int +Buffer_READ_WRITE: int +BUFFER_READ_WRITE: int +Buffer_Access = int +"""One of [Buffer_READ_ONLY, BUFFER_READ_ONLY, Buffer_WRITE_ONLY, BUFFER_WRITE_ONLY, Buffer_READ_WRITE, BUFFER_READ_WRITE]""" + +Texture2D_NONE: int +TEXTURE2D_NONE: int +Texture2D_DEPTH_COMPONENT: int +TEXTURE2D_DEPTH_COMPONENT: int +Texture2D_RGB: int +TEXTURE2D_RGB: int +Texture2D_RGBA: int +TEXTURE2D_RGBA: int +Texture2D_Format = int +"""One of [Texture2D_NONE, TEXTURE2D_NONE, Texture2D_DEPTH_COMPONENT, TEXTURE2D_DEPTH_COMPONENT, Texture2D_RGB, TEXTURE2D_RGB, Texture2D_RGBA, TEXTURE2D_RGBA]""" + + +# Classes + diff --git a/venv/lib/python3.11/site-packages/cv2/parallel/__init__.pyi b/venv/lib/python3.11/site-packages/cv2/parallel/__init__.pyi new file mode 100644 index 0000000000000000000000000000000000000000..50b6311be205a2c04750ef667717bd225a07bd76 --- /dev/null +++ b/venv/lib/python3.11/site-packages/cv2/parallel/__init__.pyi @@ -0,0 +1,6 @@ +__all__: list[str] = [] + +# Functions +def setParallelForBackend(backendName: str, propagateNumThreads: bool = ...) -> bool: ... + + diff --git a/venv/lib/python3.11/site-packages/cv2/py.typed b/venv/lib/python3.11/site-packages/cv2/py.typed new file mode 100644 index 0000000000000000000000000000000000000000..e69de29bb2d1d6434b8b29ae775ad8c2e48c5391 diff --git a/venv/lib/python3.11/site-packages/cv2/qt/fonts/DejaVuSans-Bold.ttf b/venv/lib/python3.11/site-packages/cv2/qt/fonts/DejaVuSans-Bold.ttf new file mode 100644 index 0000000000000000000000000000000000000000..d375dc1dee74b3795888e95e7f7ca2e6eede0602 --- /dev/null +++ b/venv/lib/python3.11/site-packages/cv2/qt/fonts/DejaVuSans-Bold.ttf @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:e49221bbf17c0361274143169f7e6f16d8715f65d49f1d9f216eb3d661400308 +size 672300 diff --git a/venv/lib/python3.11/site-packages/cv2/qt/fonts/DejaVuSans-BoldOblique.ttf b/venv/lib/python3.11/site-packages/cv2/qt/fonts/DejaVuSans-BoldOblique.ttf new file mode 100644 index 0000000000000000000000000000000000000000..0d67fa43858c06c7dc3bafa38a8929edd3b56815 --- /dev/null +++ b/venv/lib/python3.11/site-packages/cv2/qt/fonts/DejaVuSans-BoldOblique.ttf @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:735f3dd7381b6f4e0ca519b72620c75aa953ee8ee89b88cbe4f38ca3c23d6a79 +size 611212 diff --git a/venv/lib/python3.11/site-packages/cv2/qt/fonts/DejaVuSans-ExtraLight.ttf b/venv/lib/python3.11/site-packages/cv2/qt/fonts/DejaVuSans-ExtraLight.ttf new file mode 100644 index 0000000000000000000000000000000000000000..a104dbf7fa6ac6b1bc1f088544502310c01c8a1c --- /dev/null +++ b/venv/lib/python3.11/site-packages/cv2/qt/fonts/DejaVuSans-ExtraLight.ttf @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:908d6ec802f28155c8de86192b5a77a9fb41792f072e03526f0536c234f3e9a0 +size 345204 diff --git a/venv/lib/python3.11/site-packages/cv2/qt/fonts/DejaVuSans-Oblique.ttf b/venv/lib/python3.11/site-packages/cv2/qt/fonts/DejaVuSans-Oblique.ttf new file mode 100644 index 0000000000000000000000000000000000000000..9944cdd6a22da9b76dcb879a7b710c7f6d7114f5 --- /dev/null +++ b/venv/lib/python3.11/site-packages/cv2/qt/fonts/DejaVuSans-Oblique.ttf @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:3bc9c02fefcadd517e5a158b2f34233dd354d67f4302486d88e84bca467d1d43 +size 611556 diff --git a/venv/lib/python3.11/site-packages/cv2/qt/fonts/DejaVuSans.ttf b/venv/lib/python3.11/site-packages/cv2/qt/fonts/DejaVuSans.ttf new file mode 100644 index 0000000000000000000000000000000000000000..8c80a32611676de4bbf2975f0ba0c5882560f609 --- /dev/null +++ b/venv/lib/python3.11/site-packages/cv2/qt/fonts/DejaVuSans.ttf @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:15da2d8f12e6950001b1cc8225c1ba72ddce1938837d37702ff3e9bf6d79bd5e +size 720012 diff --git a/venv/lib/python3.11/site-packages/cv2/qt/fonts/DejaVuSansCondensed-Bold.ttf b/venv/lib/python3.11/site-packages/cv2/qt/fonts/DejaVuSansCondensed-Bold.ttf new file mode 100644 index 0000000000000000000000000000000000000000..9f326bf225091bacbcef4529a2e5240340bf9c4a --- /dev/null +++ b/venv/lib/python3.11/site-packages/cv2/qt/fonts/DejaVuSansCondensed-Bold.ttf @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:f86c6d40a52ffe2b40f19d0b972ca4b9ce347fc04dcfc4d0b4e9277a8712c0dd +size 631992 diff --git a/venv/lib/python3.11/site-packages/cv2/qt/fonts/DejaVuSansCondensed-BoldOblique.ttf b/venv/lib/python3.11/site-packages/cv2/qt/fonts/DejaVuSansCondensed-BoldOblique.ttf new file mode 100644 index 0000000000000000000000000000000000000000..4cc12324520dd52cb54f8b867f7d241d15a96865 --- /dev/null +++ b/venv/lib/python3.11/site-packages/cv2/qt/fonts/DejaVuSansCondensed-BoldOblique.ttf @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:6657693a18ecefee2667d9d0ecb1abb68524d627999bd8365039c19e04b42381 +size 580168 diff --git a/venv/lib/python3.11/site-packages/cv2/qt/fonts/DejaVuSansCondensed-Oblique.ttf b/venv/lib/python3.11/site-packages/cv2/qt/fonts/DejaVuSansCondensed-Oblique.ttf new file mode 100644 index 0000000000000000000000000000000000000000..70b3dc1f48d97574e470784c98a15e7511c82750 --- /dev/null +++ b/venv/lib/python3.11/site-packages/cv2/qt/fonts/DejaVuSansCondensed-Oblique.ttf @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:48f994e81284666ab4bf89ef4d73085b07fae6c2c7e28820ab243e9941c4829e +size 576004 diff --git a/venv/lib/python3.11/site-packages/cv2/qt/fonts/DejaVuSansCondensed.ttf b/venv/lib/python3.11/site-packages/cv2/qt/fonts/DejaVuSansCondensed.ttf new file mode 100644 index 0000000000000000000000000000000000000000..0a5db4d95da618635b71569c61ab434c447eeb46 --- /dev/null +++ b/venv/lib/python3.11/site-packages/cv2/qt/fonts/DejaVuSansCondensed.ttf @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:69f1355c9eef0a3d11a6c06f3cbf1d46eabfdadcc993589a3be93a44ed8678b4 +size 643852 diff --git a/venv/lib/python3.11/site-packages/cv2/qt/plugins/platforms/libqxcb.so b/venv/lib/python3.11/site-packages/cv2/qt/plugins/platforms/libqxcb.so new file mode 100644 index 0000000000000000000000000000000000000000..39d4ced6edb53960004ea67d18643afde064b3e6 Binary files /dev/null and b/venv/lib/python3.11/site-packages/cv2/qt/plugins/platforms/libqxcb.so differ diff --git a/venv/lib/python3.11/site-packages/cv2/samples/__init__.pyi b/venv/lib/python3.11/site-packages/cv2/samples/__init__.pyi new file mode 100644 index 0000000000000000000000000000000000000000..03f2f9633de8ff81541a0ae6d15538100ed78aa5 --- /dev/null +++ b/venv/lib/python3.11/site-packages/cv2/samples/__init__.pyi @@ -0,0 +1,12 @@ +__all__: list[str] = [] + +# Functions +def addSamplesDataSearchPath(path: str) -> None: ... + +def addSamplesDataSearchSubDirectory(subdir: str) -> None: ... + +def findFile(relative_path: str, required: bool = ..., silentMode: bool = ...) -> str: ... + +def findFileOrKeep(relative_path: str, silentMode: bool = ...) -> str: ... + + diff --git a/venv/lib/python3.11/site-packages/cv2/segmentation/__init__.pyi b/venv/lib/python3.11/site-packages/cv2/segmentation/__init__.pyi new file mode 100644 index 0000000000000000000000000000000000000000..7baa0d1932b720547a9e5155bfe4eab9b5681822 --- /dev/null +++ b/venv/lib/python3.11/site-packages/cv2/segmentation/__init__.pyi @@ -0,0 +1,39 @@ +__all__: list[str] = [] + +import cv2 +import cv2.typing +import typing as _typing + + +# Classes +class IntelligentScissorsMB: + # Functions + def __init__(self) -> None: ... + + def setWeights(self, weight_non_edge: float, weight_gradient_direction: float, weight_gradient_magnitude: float) -> IntelligentScissorsMB: ... + + def setGradientMagnitudeMaxLimit(self, gradient_magnitude_threshold_max: float = ...) -> IntelligentScissorsMB: ... + + def setEdgeFeatureZeroCrossingParameters(self, gradient_magnitude_min_value: float = ...) -> IntelligentScissorsMB: ... + + def setEdgeFeatureCannyParameters(self, threshold1: float, threshold2: float, apertureSize: int = ..., L2gradient: bool = ...) -> IntelligentScissorsMB: ... + + @_typing.overload + def applyImage(self, image: cv2.typing.MatLike) -> IntelligentScissorsMB: ... + @_typing.overload + def applyImage(self, image: cv2.UMat) -> IntelligentScissorsMB: ... + + @_typing.overload + def applyImageFeatures(self, non_edge: cv2.typing.MatLike, gradient_direction: cv2.typing.MatLike, gradient_magnitude: cv2.typing.MatLike, image: cv2.typing.MatLike | None = ...) -> IntelligentScissorsMB: ... + @_typing.overload + def applyImageFeatures(self, non_edge: cv2.UMat, gradient_direction: cv2.UMat, gradient_magnitude: cv2.UMat, image: cv2.UMat | None = ...) -> IntelligentScissorsMB: ... + + def buildMap(self, sourcePt: cv2.typing.Point) -> None: ... + + @_typing.overload + def getContour(self, targetPt: cv2.typing.Point, contour: cv2.typing.MatLike | None = ..., backward: bool = ...) -> cv2.typing.MatLike: ... + @_typing.overload + def getContour(self, targetPt: cv2.typing.Point, contour: cv2.UMat | None = ..., backward: bool = ...) -> cv2.UMat: ... + + + diff --git a/venv/lib/python3.11/site-packages/cv2/typing/__init__.py b/venv/lib/python3.11/site-packages/cv2/typing/__init__.py new file mode 100644 index 0000000000000000000000000000000000000000..9146aac633a6db8f86722aaeec13edc33bdca4f2 --- /dev/null +++ b/venv/lib/python3.11/site-packages/cv2/typing/__init__.py @@ -0,0 +1,178 @@ +__all__ = [ + "IntPointer", + "MatLike", + "MatShape", + "Size", + "Size2f", + "Scalar", + "Point", + "Point2i", + "Point2f", + "Point2d", + "Point3i", + "Point3f", + "Point3d", + "Range", + "Rect", + "Rect2i", + "Rect2f", + "Rect2d", + "Moments", + "RotatedRect", + "TermCriteria", + "Vec2i", + "Vec2f", + "Vec2d", + "Vec3i", + "Vec3f", + "Vec3d", + "Vec4i", + "Vec4f", + "Vec4d", + "Vec6f", + "FeatureDetector", + "DescriptorExtractor", + "FeatureExtractor", + "GProtoArg", + "GProtoInputArgs", + "GProtoOutputArgs", + "GRunArg", + "GOptRunArg", + "GMetaArg", + "Prim", + "Matx33f", + "Matx33d", + "Matx44f", + "Matx44d", + "GTypeInfo", + "ExtractArgsCallback", + "ExtractMetaCallback", + "LayerId", + "IndexParams", + "SearchParams", + "map_string_and_string", + "map_string_and_int", + "map_string_and_vector_size_t", + "map_string_and_vector_float", + "map_int_and_double", +] + +import cv2.dnn +import cv2.mat_wrapper +import typing as _typing +import cv2.gapi.wip.draw +import numpy +import cv2 + + +if _typing.TYPE_CHECKING: + NumPyArrayNumeric = numpy.ndarray[_typing.Any, numpy.dtype[numpy.integer[_typing.Any] | numpy.floating[_typing.Any]]] +else: + NumPyArrayNumeric = numpy.ndarray + + +if _typing.TYPE_CHECKING: + NumPyArrayFloat32 = numpy.ndarray[_typing.Any, numpy.dtype[numpy.float32]] +else: + NumPyArrayFloat32 = numpy.ndarray + + +if _typing.TYPE_CHECKING: + NumPyArrayFloat64 = numpy.ndarray[_typing.Any, numpy.dtype[numpy.float64]] +else: + NumPyArrayFloat64 = numpy.ndarray + + +if _typing.TYPE_CHECKING: + TermCriteria_Type = cv2.TermCriteria_Type +else: + TermCriteria_Type = int + + +IntPointer = int +"""Represents an arbitrary pointer""" +MatLike = _typing.Union[cv2.mat_wrapper.Mat, NumPyArrayNumeric] +MatShape = _typing.Sequence[int] +Size = _typing.Sequence[int] +"""Required length is 2""" +Size2f = _typing.Sequence[float] +"""Required length is 2""" +Scalar = _typing.Sequence[float] +"""Required length is at most 4""" +Point = _typing.Sequence[int] +"""Required length is 2""" +Point2i = Point +Point2f = _typing.Sequence[float] +"""Required length is 2""" +Point2d = _typing.Sequence[float] +"""Required length is 2""" +Point3i = _typing.Sequence[int] +"""Required length is 3""" +Point3f = _typing.Sequence[float] +"""Required length is 3""" +Point3d = _typing.Sequence[float] +"""Required length is 3""" +Range = _typing.Sequence[int] +"""Required length is 2""" +Rect = _typing.Sequence[int] +"""Required length is 4""" +Rect2i = _typing.Sequence[int] +"""Required length is 4""" +Rect2f = _typing.Sequence[float] +"""Required length is 4""" +Rect2d = _typing.Sequence[float] +"""Required length is 4""" +Moments = _typing.Dict[str, float] +RotatedRect = _typing.Tuple[Point2f, Size2f, float] +"""Any type providing sequence protocol is supported""" +TermCriteria = _typing.Tuple[TermCriteria_Type, int, float] +"""Any type providing sequence protocol is supported""" +Vec2i = _typing.Sequence[int] +"""Required length is 2""" +Vec2f = _typing.Sequence[float] +"""Required length is 2""" +Vec2d = _typing.Sequence[float] +"""Required length is 2""" +Vec3i = _typing.Sequence[int] +"""Required length is 3""" +Vec3f = _typing.Sequence[float] +"""Required length is 3""" +Vec3d = _typing.Sequence[float] +"""Required length is 3""" +Vec4i = _typing.Sequence[int] +"""Required length is 4""" +Vec4f = _typing.Sequence[float] +"""Required length is 4""" +Vec4d = _typing.Sequence[float] +"""Required length is 4""" +Vec6f = _typing.Sequence[float] +"""Required length is 6""" +FeatureDetector = cv2.Feature2D +DescriptorExtractor = cv2.Feature2D +FeatureExtractor = cv2.Feature2D +GProtoArg = _typing.Union[Scalar, cv2.GMat, cv2.GOpaqueT, cv2.GArrayT] +GProtoInputArgs = _typing.Sequence[GProtoArg] +GProtoOutputArgs = _typing.Sequence[GProtoArg] +GRunArg = _typing.Union[MatLike, Scalar, cv2.GOpaqueT, cv2.GArrayT, _typing.Sequence[_typing.Any], None] +GOptRunArg = _typing.Optional[GRunArg] +GMetaArg = _typing.Union[cv2.GMat, Scalar, cv2.GOpaqueT, cv2.GArrayT] +Prim = _typing.Union[cv2.gapi.wip.draw.Text, cv2.gapi.wip.draw.Circle, cv2.gapi.wip.draw.Image, cv2.gapi.wip.draw.Line, cv2.gapi.wip.draw.Rect, cv2.gapi.wip.draw.Mosaic, cv2.gapi.wip.draw.Poly] +Matx33f = NumPyArrayFloat32 +"""NDArray(shape=(3, 3), dtype=numpy.float32)""" +Matx33d = NumPyArrayFloat64 +"""NDArray(shape=(3, 3), dtype=numpy.float64)""" +Matx44f = NumPyArrayFloat32 +"""NDArray(shape=(4, 4), dtype=numpy.float32)""" +Matx44d = NumPyArrayFloat64 +"""NDArray(shape=(4, 4), dtype=numpy.float64)""" +GTypeInfo = _typing.Union[cv2.GMat, Scalar, cv2.GOpaqueT, cv2.GArrayT] +ExtractArgsCallback = _typing.Callable[[_typing.Sequence[GTypeInfo]], _typing.Sequence[GRunArg]] +ExtractMetaCallback = _typing.Callable[[_typing.Sequence[GTypeInfo]], _typing.Sequence[GMetaArg]] +LayerId = cv2.dnn.DictValue +IndexParams = _typing.Dict[str, _typing.Union[bool, int, float, str]] +SearchParams = _typing.Dict[str, _typing.Union[bool, int, float, str]] +map_string_and_string = _typing.Dict[str, str] +map_string_and_int = _typing.Dict[str, int] +map_string_and_vector_size_t = _typing.Dict[str, _typing.Sequence[int]] +map_string_and_vector_float = _typing.Dict[str, _typing.Sequence[float]] +map_int_and_double = _typing.Dict[int, float] diff --git a/venv/lib/python3.11/site-packages/cv2/utils/__init__.py b/venv/lib/python3.11/site-packages/cv2/utils/__init__.py new file mode 100644 index 0000000000000000000000000000000000000000..49cd40ba2db2d47df1043faf7e293aa978efa5a1 --- /dev/null +++ b/venv/lib/python3.11/site-packages/cv2/utils/__init__.py @@ -0,0 +1,14 @@ +from collections import namedtuple + +import cv2 + + +NativeMethodPatchedResult = namedtuple("NativeMethodPatchedResult", + ("py", "native")) + + +def testOverwriteNativeMethod(arg): + return NativeMethodPatchedResult( + arg + 1, + cv2.utils._native.testOverwriteNativeMethod(arg) + ) diff --git a/venv/lib/python3.11/site-packages/cv2/utils/__init__.pyi b/venv/lib/python3.11/site-packages/cv2/utils/__init__.pyi new file mode 100644 index 0000000000000000000000000000000000000000..8825e79b4bb48b409b28cc4c5c90556594d54bee --- /dev/null +++ b/venv/lib/python3.11/site-packages/cv2/utils/__init__.pyi @@ -0,0 +1,109 @@ +__all__: list[str] = [] + +import cv2 +import cv2.typing +import typing as _typing + + +from cv2.utils import fs as fs +from cv2.utils import nested as nested + + +# Classes +class ClassWithKeywordProperties: + lambda_: int + @property + def except_(self) -> int: ... + + # Functions + def __init__(self, lambda_arg: int = ..., except_arg: int = ...) -> None: ... + + + +# Functions +@_typing.overload +def copyMatAndDumpNamedArguments(src: cv2.typing.MatLike, dst: cv2.typing.MatLike | None = ..., lambda_: int = ..., sigma: float = ...) -> tuple[str, cv2.typing.MatLike]: ... +@_typing.overload +def copyMatAndDumpNamedArguments(src: cv2.UMat, dst: cv2.UMat | None = ..., lambda_: int = ..., sigma: float = ...) -> tuple[str, cv2.UMat]: ... + +def dumpBool(argument: bool) -> str: ... + +def dumpCString(argument: str) -> str: ... + +def dumpDouble(argument: float) -> str: ... + +def dumpFloat(argument: float) -> str: ... + +@_typing.overload +def dumpInputArray(argument: cv2.typing.MatLike) -> str: ... +@_typing.overload +def dumpInputArray(argument: cv2.UMat) -> str: ... + +@_typing.overload +def dumpInputArrayOfArrays(argument: _typing.Sequence[cv2.typing.MatLike]) -> str: ... +@_typing.overload +def dumpInputArrayOfArrays(argument: _typing.Sequence[cv2.UMat]) -> str: ... + +@_typing.overload +def dumpInputOutputArray(argument: cv2.typing.MatLike) -> tuple[str, cv2.typing.MatLike]: ... +@_typing.overload +def dumpInputOutputArray(argument: cv2.UMat) -> tuple[str, cv2.UMat]: ... + +@_typing.overload +def dumpInputOutputArrayOfArrays(argument: _typing.Sequence[cv2.typing.MatLike]) -> tuple[str, _typing.Sequence[cv2.typing.MatLike]]: ... +@_typing.overload +def dumpInputOutputArrayOfArrays(argument: _typing.Sequence[cv2.UMat]) -> tuple[str, _typing.Sequence[cv2.UMat]]: ... + +def dumpInt(argument: int) -> str: ... + +def dumpInt64(argument: int) -> str: ... + +def dumpRange(argument: cv2.typing.Range) -> str: ... + +def dumpRect(argument: cv2.typing.Rect) -> str: ... + +def dumpRotatedRect(argument: cv2.typing.RotatedRect) -> str: ... + +def dumpSizeT(argument: int) -> str: ... + +def dumpString(argument: str) -> str: ... + +def dumpTermCriteria(argument: cv2.typing.TermCriteria) -> str: ... + +def dumpVec2i(value: cv2.typing.Vec2i = ...) -> str: ... + +def dumpVectorOfDouble(vec: _typing.Sequence[float]) -> str: ... + +def dumpVectorOfInt(vec: _typing.Sequence[int]) -> str: ... + +def dumpVectorOfRect(vec: _typing.Sequence[cv2.typing.Rect]) -> str: ... + +def generateVectorOfInt(len: int) -> _typing.Sequence[int]: ... + +def generateVectorOfMat(len: int, rows: int, cols: int, dtype: int, vec: _typing.Sequence[cv2.typing.MatLike] | None = ...) -> _typing.Sequence[cv2.typing.MatLike]: ... + +def generateVectorOfRect(len: int) -> _typing.Sequence[cv2.typing.Rect]: ... + +@_typing.overload +def testAsyncArray(argument: cv2.typing.MatLike) -> cv2.AsyncArray: ... +@_typing.overload +def testAsyncArray(argument: cv2.UMat) -> cv2.AsyncArray: ... + +def testAsyncException() -> cv2.AsyncArray: ... + +@_typing.overload +def testOverloadResolution(value: int, point: cv2.typing.Point = ...) -> str: ... +@_typing.overload +def testOverloadResolution(rect: cv2.typing.Rect) -> str: ... + +def testOverwriteNativeMethod(argument: int) -> int: ... + +def testRaiseGeneralException() -> None: ... + +def testReservedKeywordConversion(positional_argument: int, lambda_: int = ..., from_: int = ...) -> str: ... + +def testRotatedRect(x: float, y: float, w: float, h: float, angle: float) -> cv2.typing.RotatedRect: ... + +def testRotatedRectVector(x: float, y: float, w: float, h: float, angle: float) -> _typing.Sequence[cv2.typing.RotatedRect]: ... + + diff --git a/venv/lib/python3.11/site-packages/cv2/utils/fs/__init__.pyi b/venv/lib/python3.11/site-packages/cv2/utils/fs/__init__.pyi new file mode 100644 index 0000000000000000000000000000000000000000..3a7234f5fa1fd340f40523b5e5d7cf7e21d02bab --- /dev/null +++ b/venv/lib/python3.11/site-packages/cv2/utils/fs/__init__.pyi @@ -0,0 +1,6 @@ +__all__: list[str] = [] + +# Functions +def getCacheDirectoryForDownloads() -> str: ... + + diff --git a/venv/lib/python3.11/site-packages/cv2/utils/nested/__init__.pyi b/venv/lib/python3.11/site-packages/cv2/utils/nested/__init__.pyi new file mode 100644 index 0000000000000000000000000000000000000000..1b30f925015ec5e9794d28e6185d0458b905925f --- /dev/null +++ b/venv/lib/python3.11/site-packages/cv2/utils/nested/__init__.pyi @@ -0,0 +1,31 @@ +__all__: list[str] = [] + +# Classes +class ExportClassName: + # Classes + class Params: + int_value: int + float_value: float + + # Functions + def __init__(self, int_param: int = ..., float_param: float = ...) -> None: ... + + + + # Functions + def getIntParam(self) -> int: ... + + def getFloatParam(self) -> float: ... + + @staticmethod + def originalName() -> str: ... + + @classmethod + def create(cls, params: ExportClassName.Params = ...) -> ExportClassName: ... + + + +# Functions +def testEchoBooleanFunction(flag: bool) -> bool: ... + + diff --git a/venv/lib/python3.11/site-packages/cv2/version.py b/venv/lib/python3.11/site-packages/cv2/version.py new file mode 100644 index 0000000000000000000000000000000000000000..05e3354e999a9078a73bccd6bfc5aa3d3cf87b14 --- /dev/null +++ b/venv/lib/python3.11/site-packages/cv2/version.py @@ -0,0 +1,5 @@ +opencv_version = "4.10.0.84" +contrib = False +headless = False +rolling = False +ci_build = True \ No newline at end of file diff --git a/venv/lib/python3.11/site-packages/cv2/videoio_registry/__init__.pyi b/venv/lib/python3.11/site-packages/cv2/videoio_registry/__init__.pyi new file mode 100644 index 0000000000000000000000000000000000000000..cd13628e703f790dc795eeffc3e2f8b90051e34c --- /dev/null +++ b/venv/lib/python3.11/site-packages/cv2/videoio_registry/__init__.pyi @@ -0,0 +1,27 @@ +__all__: list[str] = [] + +import cv2 + + +# Functions +def getBackendName(api: cv2.VideoCaptureAPIs) -> str: ... + +def getBackends() -> _typing.Sequence[cv2.VideoCaptureAPIs]: ... + +def getCameraBackendPluginVersion(api: cv2.VideoCaptureAPIs) -> tuple[str, int, int]: ... + +def getCameraBackends() -> _typing.Sequence[cv2.VideoCaptureAPIs]: ... + +def getStreamBackendPluginVersion(api: cv2.VideoCaptureAPIs) -> tuple[str, int, int]: ... + +def getStreamBackends() -> _typing.Sequence[cv2.VideoCaptureAPIs]: ... + +def getWriterBackendPluginVersion(api: cv2.VideoCaptureAPIs) -> tuple[str, int, int]: ... + +def getWriterBackends() -> _typing.Sequence[cv2.VideoCaptureAPIs]: ... + +def hasBackend(api: cv2.VideoCaptureAPIs) -> bool: ... + +def isBackendBuiltIn(api: cv2.VideoCaptureAPIs) -> bool: ... + + diff --git a/venv/lib/python3.11/site-packages/dateutil/__init__.py b/venv/lib/python3.11/site-packages/dateutil/__init__.py new file mode 100644 index 0000000000000000000000000000000000000000..a2c19c06fe14476a9bfa4f1f60de7a997a41191c --- /dev/null +++ b/venv/lib/python3.11/site-packages/dateutil/__init__.py @@ -0,0 +1,24 @@ +# -*- coding: utf-8 -*- +import sys + +try: + from ._version import version as __version__ +except ImportError: + __version__ = 'unknown' + +__all__ = ['easter', 'parser', 'relativedelta', 'rrule', 'tz', + 'utils', 'zoneinfo'] + +def __getattr__(name): + import importlib + + if name in __all__: + return importlib.import_module("." + name, __name__) + raise AttributeError( + "module {!r} has not attribute {!r}".format(__name__, name) + ) + + +def __dir__(): + # __dir__ should include all the lazy-importable modules as well. + return [x for x in globals() if x not in sys.modules] + __all__ diff --git a/venv/lib/python3.11/site-packages/dateutil/_common.py b/venv/lib/python3.11/site-packages/dateutil/_common.py new file mode 100644 index 0000000000000000000000000000000000000000..4eb2659bd2986125fcfb4afea5bae9efc2dcd1a0 --- /dev/null +++ b/venv/lib/python3.11/site-packages/dateutil/_common.py @@ -0,0 +1,43 @@ +""" +Common code used in multiple modules. +""" + + +class weekday(object): + __slots__ = ["weekday", "n"] + + def __init__(self, weekday, n=None): + self.weekday = weekday + self.n = n + + def __call__(self, n): + if n == self.n: + return self + else: + return self.__class__(self.weekday, n) + + def __eq__(self, other): + try: + if self.weekday != other.weekday or self.n != other.n: + return False + except AttributeError: + return False + return True + + def __hash__(self): + return hash(( + self.weekday, + self.n, + )) + + def __ne__(self, other): + return not (self == other) + + def __repr__(self): + s = ("MO", "TU", "WE", "TH", "FR", "SA", "SU")[self.weekday] + if not self.n: + return s + else: + return "%s(%+d)" % (s, self.n) + +# vim:ts=4:sw=4:et diff --git a/venv/lib/python3.11/site-packages/dateutil/_version.py b/venv/lib/python3.11/site-packages/dateutil/_version.py new file mode 100644 index 0000000000000000000000000000000000000000..ddda98098527a73348e694c2edb691fd625475fc --- /dev/null +++ b/venv/lib/python3.11/site-packages/dateutil/_version.py @@ -0,0 +1,4 @@ +# file generated by setuptools_scm +# don't change, don't track in version control +__version__ = version = '2.9.0.post0' +__version_tuple__ = version_tuple = (2, 9, 0) diff --git a/venv/lib/python3.11/site-packages/dateutil/easter.py b/venv/lib/python3.11/site-packages/dateutil/easter.py new file mode 100644 index 0000000000000000000000000000000000000000..f74d1f7442473997245ac683b8a269a3574d1ba4 --- /dev/null +++ b/venv/lib/python3.11/site-packages/dateutil/easter.py @@ -0,0 +1,89 @@ +# -*- coding: utf-8 -*- +""" +This module offers a generic Easter computing method for any given year, using +Western, Orthodox or Julian algorithms. +""" + +import datetime + +__all__ = ["easter", "EASTER_JULIAN", "EASTER_ORTHODOX", "EASTER_WESTERN"] + +EASTER_JULIAN = 1 +EASTER_ORTHODOX = 2 +EASTER_WESTERN = 3 + + +def easter(year, method=EASTER_WESTERN): + """ + This method was ported from the work done by GM Arts, + on top of the algorithm by Claus Tondering, which was + based in part on the algorithm of Ouding (1940), as + quoted in "Explanatory Supplement to the Astronomical + Almanac", P. Kenneth Seidelmann, editor. + + This algorithm implements three different Easter + calculation methods: + + 1. Original calculation in Julian calendar, valid in + dates after 326 AD + 2. Original method, with date converted to Gregorian + calendar, valid in years 1583 to 4099 + 3. Revised method, in Gregorian calendar, valid in + years 1583 to 4099 as well + + These methods are represented by the constants: + + * ``EASTER_JULIAN = 1`` + * ``EASTER_ORTHODOX = 2`` + * ``EASTER_WESTERN = 3`` + + The default method is method 3. + + More about the algorithm may be found at: + + `GM Arts: Easter Algorithms `_ + + and + + `The Calendar FAQ: Easter `_ + + """ + + if not (1 <= method <= 3): + raise ValueError("invalid method") + + # g - Golden year - 1 + # c - Century + # h - (23 - Epact) mod 30 + # i - Number of days from March 21 to Paschal Full Moon + # j - Weekday for PFM (0=Sunday, etc) + # p - Number of days from March 21 to Sunday on or before PFM + # (-6 to 28 methods 1 & 3, to 56 for method 2) + # e - Extra days to add for method 2 (converting Julian + # date to Gregorian date) + + y = year + g = y % 19 + e = 0 + if method < 3: + # Old method + i = (19*g + 15) % 30 + j = (y + y//4 + i) % 7 + if method == 2: + # Extra dates to convert Julian to Gregorian date + e = 10 + if y > 1600: + e = e + y//100 - 16 - (y//100 - 16)//4 + else: + # New method + c = y//100 + h = (c - c//4 - (8*c + 13)//25 + 19*g + 15) % 30 + i = h - (h//28)*(1 - (h//28)*(29//(h + 1))*((21 - g)//11)) + j = (y + y//4 + i + 2 - c + c//4) % 7 + + # p can be from -6 to 56 corresponding to dates 22 March to 23 May + # (later dates apply to method 2, although 23 May never actually occurs) + p = i - j + e + d = 1 + (p + 27 + (p + 6)//40) % 31 + m = 3 + (p + 26)//30 + return datetime.date(int(y), int(m), int(d)) diff --git a/venv/lib/python3.11/site-packages/dateutil/parser/__init__.py b/venv/lib/python3.11/site-packages/dateutil/parser/__init__.py new file mode 100644 index 0000000000000000000000000000000000000000..d174b0e4dcc472999b75e55ebb88af320ae38081 --- /dev/null +++ b/venv/lib/python3.11/site-packages/dateutil/parser/__init__.py @@ -0,0 +1,61 @@ +# -*- coding: utf-8 -*- +from ._parser import parse, parser, parserinfo, ParserError +from ._parser import DEFAULTPARSER, DEFAULTTZPARSER +from ._parser import UnknownTimezoneWarning + +from ._parser import __doc__ + +from .isoparser import isoparser, isoparse + +__all__ = ['parse', 'parser', 'parserinfo', + 'isoparse', 'isoparser', + 'ParserError', + 'UnknownTimezoneWarning'] + + +### +# Deprecate portions of the private interface so that downstream code that +# is improperly relying on it is given *some* notice. + + +def __deprecated_private_func(f): + from functools import wraps + import warnings + + msg = ('{name} is a private function and may break without warning, ' + 'it will be moved and or renamed in future versions.') + msg = msg.format(name=f.__name__) + + @wraps(f) + def deprecated_func(*args, **kwargs): + warnings.warn(msg, DeprecationWarning) + return f(*args, **kwargs) + + return deprecated_func + +def __deprecate_private_class(c): + import warnings + + msg = ('{name} is a private class and may break without warning, ' + 'it will be moved and or renamed in future versions.') + msg = msg.format(name=c.__name__) + + class private_class(c): + __doc__ = c.__doc__ + + def __init__(self, *args, **kwargs): + warnings.warn(msg, DeprecationWarning) + super(private_class, self).__init__(*args, **kwargs) + + private_class.__name__ = c.__name__ + + return private_class + + +from ._parser import _timelex, _resultbase +from ._parser import _tzparser, _parsetz + +_timelex = __deprecate_private_class(_timelex) +_tzparser = __deprecate_private_class(_tzparser) +_resultbase = __deprecate_private_class(_resultbase) +_parsetz = __deprecated_private_func(_parsetz) diff --git a/venv/lib/python3.11/site-packages/dateutil/parser/_parser.py b/venv/lib/python3.11/site-packages/dateutil/parser/_parser.py new file mode 100644 index 0000000000000000000000000000000000000000..37d1663b2f72447800d9a553929e3de932244289 --- /dev/null +++ b/venv/lib/python3.11/site-packages/dateutil/parser/_parser.py @@ -0,0 +1,1613 @@ +# -*- coding: utf-8 -*- +""" +This module offers a generic date/time string parser which is able to parse +most known formats to represent a date and/or time. + +This module attempts to be forgiving with regards to unlikely input formats, +returning a datetime object even for dates which are ambiguous. If an element +of a date/time stamp is omitted, the following rules are applied: + +- If AM or PM is left unspecified, a 24-hour clock is assumed, however, an hour + on a 12-hour clock (``0 <= hour <= 12``) *must* be specified if AM or PM is + specified. +- If a time zone is omitted, a timezone-naive datetime is returned. + +If any other elements are missing, they are taken from the +:class:`datetime.datetime` object passed to the parameter ``default``. If this +results in a day number exceeding the valid number of days per month, the +value falls back to the end of the month. + +Additional resources about date/time string formats can be found below: + +- `A summary of the international standard date and time notation + `_ +- `W3C Date and Time Formats `_ +- `Time Formats (Planetary Rings Node) `_ +- `CPAN ParseDate module + `_ +- `Java SimpleDateFormat Class + `_ +""" +from __future__ import unicode_literals + +import datetime +import re +import string +import time +import warnings + +from calendar import monthrange +from io import StringIO + +import six +from six import integer_types, text_type + +from decimal import Decimal + +from warnings import warn + +from .. import relativedelta +from .. import tz + +__all__ = ["parse", "parserinfo", "ParserError"] + + +# TODO: pandas.core.tools.datetimes imports this explicitly. Might be worth +# making public and/or figuring out if there is something we can +# take off their plate. +class _timelex(object): + # Fractional seconds are sometimes split by a comma + _split_decimal = re.compile("([.,])") + + def __init__(self, instream): + if isinstance(instream, (bytes, bytearray)): + instream = instream.decode() + + if isinstance(instream, text_type): + instream = StringIO(instream) + elif getattr(instream, 'read', None) is None: + raise TypeError('Parser must be a string or character stream, not ' + '{itype}'.format(itype=instream.__class__.__name__)) + + self.instream = instream + self.charstack = [] + self.tokenstack = [] + self.eof = False + + def get_token(self): + """ + This function breaks the time string into lexical units (tokens), which + can be parsed by the parser. Lexical units are demarcated by changes in + the character set, so any continuous string of letters is considered + one unit, any continuous string of numbers is considered one unit. + + The main complication arises from the fact that dots ('.') can be used + both as separators (e.g. "Sep.20.2009") or decimal points (e.g. + "4:30:21.447"). As such, it is necessary to read the full context of + any dot-separated strings before breaking it into tokens; as such, this + function maintains a "token stack", for when the ambiguous context + demands that multiple tokens be parsed at once. + """ + if self.tokenstack: + return self.tokenstack.pop(0) + + seenletters = False + token = None + state = None + + while not self.eof: + # We only realize that we've reached the end of a token when we + # find a character that's not part of the current token - since + # that character may be part of the next token, it's stored in the + # charstack. + if self.charstack: + nextchar = self.charstack.pop(0) + else: + nextchar = self.instream.read(1) + while nextchar == '\x00': + nextchar = self.instream.read(1) + + if not nextchar: + self.eof = True + break + elif not state: + # First character of the token - determines if we're starting + # to parse a word, a number or something else. + token = nextchar + if self.isword(nextchar): + state = 'a' + elif self.isnum(nextchar): + state = '0' + elif self.isspace(nextchar): + token = ' ' + break # emit token + else: + break # emit token + elif state == 'a': + # If we've already started reading a word, we keep reading + # letters until we find something that's not part of a word. + seenletters = True + if self.isword(nextchar): + token += nextchar + elif nextchar == '.': + token += nextchar + state = 'a.' + else: + self.charstack.append(nextchar) + break # emit token + elif state == '0': + # If we've already started reading a number, we keep reading + # numbers until we find something that doesn't fit. + if self.isnum(nextchar): + token += nextchar + elif nextchar == '.' or (nextchar == ',' and len(token) >= 2): + token += nextchar + state = '0.' + else: + self.charstack.append(nextchar) + break # emit token + elif state == 'a.': + # If we've seen some letters and a dot separator, continue + # parsing, and the tokens will be broken up later. + seenletters = True + if nextchar == '.' or self.isword(nextchar): + token += nextchar + elif self.isnum(nextchar) and token[-1] == '.': + token += nextchar + state = '0.' + else: + self.charstack.append(nextchar) + break # emit token + elif state == '0.': + # If we've seen at least one dot separator, keep going, we'll + # break up the tokens later. + if nextchar == '.' or self.isnum(nextchar): + token += nextchar + elif self.isword(nextchar) and token[-1] == '.': + token += nextchar + state = 'a.' + else: + self.charstack.append(nextchar) + break # emit token + + if (state in ('a.', '0.') and (seenletters or token.count('.') > 1 or + token[-1] in '.,')): + l = self._split_decimal.split(token) + token = l[0] + for tok in l[1:]: + if tok: + self.tokenstack.append(tok) + + if state == '0.' and token.count('.') == 0: + token = token.replace(',', '.') + + return token + + def __iter__(self): + return self + + def __next__(self): + token = self.get_token() + if token is None: + raise StopIteration + + return token + + def next(self): + return self.__next__() # Python 2.x support + + @classmethod + def split(cls, s): + return list(cls(s)) + + @classmethod + def isword(cls, nextchar): + """ Whether or not the next character is part of a word """ + return nextchar.isalpha() + + @classmethod + def isnum(cls, nextchar): + """ Whether the next character is part of a number """ + return nextchar.isdigit() + + @classmethod + def isspace(cls, nextchar): + """ Whether the next character is whitespace """ + return nextchar.isspace() + + +class _resultbase(object): + + def __init__(self): + for attr in self.__slots__: + setattr(self, attr, None) + + def _repr(self, classname): + l = [] + for attr in self.__slots__: + value = getattr(self, attr) + if value is not None: + l.append("%s=%s" % (attr, repr(value))) + return "%s(%s)" % (classname, ", ".join(l)) + + def __len__(self): + return (sum(getattr(self, attr) is not None + for attr in self.__slots__)) + + def __repr__(self): + return self._repr(self.__class__.__name__) + + +class parserinfo(object): + """ + Class which handles what inputs are accepted. Subclass this to customize + the language and acceptable values for each parameter. + + :param dayfirst: + Whether to interpret the first value in an ambiguous 3-integer date + (e.g. 01/05/09) as the day (``True``) or month (``False``). If + ``yearfirst`` is set to ``True``, this distinguishes between YDM + and YMD. Default is ``False``. + + :param yearfirst: + Whether to interpret the first value in an ambiguous 3-integer date + (e.g. 01/05/09) as the year. If ``True``, the first number is taken + to be the year, otherwise the last number is taken to be the year. + Default is ``False``. + """ + + # m from a.m/p.m, t from ISO T separator + JUMP = [" ", ".", ",", ";", "-", "/", "'", + "at", "on", "and", "ad", "m", "t", "of", + "st", "nd", "rd", "th"] + + WEEKDAYS = [("Mon", "Monday"), + ("Tue", "Tuesday"), # TODO: "Tues" + ("Wed", "Wednesday"), + ("Thu", "Thursday"), # TODO: "Thurs" + ("Fri", "Friday"), + ("Sat", "Saturday"), + ("Sun", "Sunday")] + MONTHS = [("Jan", "January"), + ("Feb", "February"), # TODO: "Febr" + ("Mar", "March"), + ("Apr", "April"), + ("May", "May"), + ("Jun", "June"), + ("Jul", "July"), + ("Aug", "August"), + ("Sep", "Sept", "September"), + ("Oct", "October"), + ("Nov", "November"), + ("Dec", "December")] + HMS = [("h", "hour", "hours"), + ("m", "minute", "minutes"), + ("s", "second", "seconds")] + AMPM = [("am", "a"), + ("pm", "p")] + UTCZONE = ["UTC", "GMT", "Z", "z"] + PERTAIN = ["of"] + TZOFFSET = {} + # TODO: ERA = ["AD", "BC", "CE", "BCE", "Stardate", + # "Anno Domini", "Year of Our Lord"] + + def __init__(self, dayfirst=False, yearfirst=False): + self._jump = self._convert(self.JUMP) + self._weekdays = self._convert(self.WEEKDAYS) + self._months = self._convert(self.MONTHS) + self._hms = self._convert(self.HMS) + self._ampm = self._convert(self.AMPM) + self._utczone = self._convert(self.UTCZONE) + self._pertain = self._convert(self.PERTAIN) + + self.dayfirst = dayfirst + self.yearfirst = yearfirst + + self._year = time.localtime().tm_year + self._century = self._year // 100 * 100 + + def _convert(self, lst): + dct = {} + for i, v in enumerate(lst): + if isinstance(v, tuple): + for v in v: + dct[v.lower()] = i + else: + dct[v.lower()] = i + return dct + + def jump(self, name): + return name.lower() in self._jump + + def weekday(self, name): + try: + return self._weekdays[name.lower()] + except KeyError: + pass + return None + + def month(self, name): + try: + return self._months[name.lower()] + 1 + except KeyError: + pass + return None + + def hms(self, name): + try: + return self._hms[name.lower()] + except KeyError: + return None + + def ampm(self, name): + try: + return self._ampm[name.lower()] + except KeyError: + return None + + def pertain(self, name): + return name.lower() in self._pertain + + def utczone(self, name): + return name.lower() in self._utczone + + def tzoffset(self, name): + if name in self._utczone: + return 0 + + return self.TZOFFSET.get(name) + + def convertyear(self, year, century_specified=False): + """ + Converts two-digit years to year within [-50, 49] + range of self._year (current local time) + """ + + # Function contract is that the year is always positive + assert year >= 0 + + if year < 100 and not century_specified: + # assume current century to start + year += self._century + + if year >= self._year + 50: # if too far in future + year -= 100 + elif year < self._year - 50: # if too far in past + year += 100 + + return year + + def validate(self, res): + # move to info + if res.year is not None: + res.year = self.convertyear(res.year, res.century_specified) + + if ((res.tzoffset == 0 and not res.tzname) or + (res.tzname == 'Z' or res.tzname == 'z')): + res.tzname = "UTC" + res.tzoffset = 0 + elif res.tzoffset != 0 and res.tzname and self.utczone(res.tzname): + res.tzoffset = 0 + return True + + +class _ymd(list): + def __init__(self, *args, **kwargs): + super(self.__class__, self).__init__(*args, **kwargs) + self.century_specified = False + self.dstridx = None + self.mstridx = None + self.ystridx = None + + @property + def has_year(self): + return self.ystridx is not None + + @property + def has_month(self): + return self.mstridx is not None + + @property + def has_day(self): + return self.dstridx is not None + + def could_be_day(self, value): + if self.has_day: + return False + elif not self.has_month: + return 1 <= value <= 31 + elif not self.has_year: + # Be permissive, assume leap year + month = self[self.mstridx] + return 1 <= value <= monthrange(2000, month)[1] + else: + month = self[self.mstridx] + year = self[self.ystridx] + return 1 <= value <= monthrange(year, month)[1] + + def append(self, val, label=None): + if hasattr(val, '__len__'): + if val.isdigit() and len(val) > 2: + self.century_specified = True + if label not in [None, 'Y']: # pragma: no cover + raise ValueError(label) + label = 'Y' + elif val > 100: + self.century_specified = True + if label not in [None, 'Y']: # pragma: no cover + raise ValueError(label) + label = 'Y' + + super(self.__class__, self).append(int(val)) + + if label == 'M': + if self.has_month: + raise ValueError('Month is already set') + self.mstridx = len(self) - 1 + elif label == 'D': + if self.has_day: + raise ValueError('Day is already set') + self.dstridx = len(self) - 1 + elif label == 'Y': + if self.has_year: + raise ValueError('Year is already set') + self.ystridx = len(self) - 1 + + def _resolve_from_stridxs(self, strids): + """ + Try to resolve the identities of year/month/day elements using + ystridx, mstridx, and dstridx, if enough of these are specified. + """ + if len(self) == 3 and len(strids) == 2: + # we can back out the remaining stridx value + missing = [x for x in range(3) if x not in strids.values()] + key = [x for x in ['y', 'm', 'd'] if x not in strids] + assert len(missing) == len(key) == 1 + key = key[0] + val = missing[0] + strids[key] = val + + assert len(self) == len(strids) # otherwise this should not be called + out = {key: self[strids[key]] for key in strids} + return (out.get('y'), out.get('m'), out.get('d')) + + def resolve_ymd(self, yearfirst, dayfirst): + len_ymd = len(self) + year, month, day = (None, None, None) + + strids = (('y', self.ystridx), + ('m', self.mstridx), + ('d', self.dstridx)) + + strids = {key: val for key, val in strids if val is not None} + if (len(self) == len(strids) > 0 or + (len(self) == 3 and len(strids) == 2)): + return self._resolve_from_stridxs(strids) + + mstridx = self.mstridx + + if len_ymd > 3: + raise ValueError("More than three YMD values") + elif len_ymd == 1 or (mstridx is not None and len_ymd == 2): + # One member, or two members with a month string + if mstridx is not None: + month = self[mstridx] + # since mstridx is 0 or 1, self[mstridx-1] always + # looks up the other element + other = self[mstridx - 1] + else: + other = self[0] + + if len_ymd > 1 or mstridx is None: + if other > 31: + year = other + else: + day = other + + elif len_ymd == 2: + # Two members with numbers + if self[0] > 31: + # 99-01 + year, month = self + elif self[1] > 31: + # 01-99 + month, year = self + elif dayfirst and self[1] <= 12: + # 13-01 + day, month = self + else: + # 01-13 + month, day = self + + elif len_ymd == 3: + # Three members + if mstridx == 0: + if self[1] > 31: + # Apr-2003-25 + month, year, day = self + else: + month, day, year = self + elif mstridx == 1: + if self[0] > 31 or (yearfirst and self[2] <= 31): + # 99-Jan-01 + year, month, day = self + else: + # 01-Jan-01 + # Give precedence to day-first, since + # two-digit years is usually hand-written. + day, month, year = self + + elif mstridx == 2: + # WTF!? + if self[1] > 31: + # 01-99-Jan + day, year, month = self + else: + # 99-01-Jan + year, day, month = self + + else: + if (self[0] > 31 or + self.ystridx == 0 or + (yearfirst and self[1] <= 12 and self[2] <= 31)): + # 99-01-01 + if dayfirst and self[2] <= 12: + year, day, month = self + else: + year, month, day = self + elif self[0] > 12 or (dayfirst and self[1] <= 12): + # 13-01-01 + day, month, year = self + else: + # 01-13-01 + month, day, year = self + + return year, month, day + + +class parser(object): + def __init__(self, info=None): + self.info = info or parserinfo() + + def parse(self, timestr, default=None, + ignoretz=False, tzinfos=None, **kwargs): + """ + Parse the date/time string into a :class:`datetime.datetime` object. + + :param timestr: + Any date/time string using the supported formats. + + :param default: + The default datetime object, if this is a datetime object and not + ``None``, elements specified in ``timestr`` replace elements in the + default object. + + :param ignoretz: + If set ``True``, time zones in parsed strings are ignored and a + naive :class:`datetime.datetime` object is returned. + + :param tzinfos: + Additional time zone names / aliases which may be present in the + string. This argument maps time zone names (and optionally offsets + from those time zones) to time zones. This parameter can be a + dictionary with timezone aliases mapping time zone names to time + zones or a function taking two parameters (``tzname`` and + ``tzoffset``) and returning a time zone. + + The timezones to which the names are mapped can be an integer + offset from UTC in seconds or a :class:`tzinfo` object. + + .. doctest:: + :options: +NORMALIZE_WHITESPACE + + >>> from dateutil.parser import parse + >>> from dateutil.tz import gettz + >>> tzinfos = {"BRST": -7200, "CST": gettz("America/Chicago")} + >>> parse("2012-01-19 17:21:00 BRST", tzinfos=tzinfos) + datetime.datetime(2012, 1, 19, 17, 21, tzinfo=tzoffset(u'BRST', -7200)) + >>> parse("2012-01-19 17:21:00 CST", tzinfos=tzinfos) + datetime.datetime(2012, 1, 19, 17, 21, + tzinfo=tzfile('/usr/share/zoneinfo/America/Chicago')) + + This parameter is ignored if ``ignoretz`` is set. + + :param \\*\\*kwargs: + Keyword arguments as passed to ``_parse()``. + + :return: + Returns a :class:`datetime.datetime` object or, if the + ``fuzzy_with_tokens`` option is ``True``, returns a tuple, the + first element being a :class:`datetime.datetime` object, the second + a tuple containing the fuzzy tokens. + + :raises ParserError: + Raised for invalid or unknown string format, if the provided + :class:`tzinfo` is not in a valid format, or if an invalid date + would be created. + + :raises TypeError: + Raised for non-string or character stream input. + + :raises OverflowError: + Raised if the parsed date exceeds the largest valid C integer on + your system. + """ + + if default is None: + default = datetime.datetime.now().replace(hour=0, minute=0, + second=0, microsecond=0) + + res, skipped_tokens = self._parse(timestr, **kwargs) + + if res is None: + raise ParserError("Unknown string format: %s", timestr) + + if len(res) == 0: + raise ParserError("String does not contain a date: %s", timestr) + + try: + ret = self._build_naive(res, default) + except ValueError as e: + six.raise_from(ParserError(str(e) + ": %s", timestr), e) + + if not ignoretz: + ret = self._build_tzaware(ret, res, tzinfos) + + if kwargs.get('fuzzy_with_tokens', False): + return ret, skipped_tokens + else: + return ret + + class _result(_resultbase): + __slots__ = ["year", "month", "day", "weekday", + "hour", "minute", "second", "microsecond", + "tzname", "tzoffset", "ampm","any_unused_tokens"] + + def _parse(self, timestr, dayfirst=None, yearfirst=None, fuzzy=False, + fuzzy_with_tokens=False): + """ + Private method which performs the heavy lifting of parsing, called from + ``parse()``, which passes on its ``kwargs`` to this function. + + :param timestr: + The string to parse. + + :param dayfirst: + Whether to interpret the first value in an ambiguous 3-integer date + (e.g. 01/05/09) as the day (``True``) or month (``False``). If + ``yearfirst`` is set to ``True``, this distinguishes between YDM + and YMD. If set to ``None``, this value is retrieved from the + current :class:`parserinfo` object (which itself defaults to + ``False``). + + :param yearfirst: + Whether to interpret the first value in an ambiguous 3-integer date + (e.g. 01/05/09) as the year. If ``True``, the first number is taken + to be the year, otherwise the last number is taken to be the year. + If this is set to ``None``, the value is retrieved from the current + :class:`parserinfo` object (which itself defaults to ``False``). + + :param fuzzy: + Whether to allow fuzzy parsing, allowing for string like "Today is + January 1, 2047 at 8:21:00AM". + + :param fuzzy_with_tokens: + If ``True``, ``fuzzy`` is automatically set to True, and the parser + will return a tuple where the first element is the parsed + :class:`datetime.datetime` datetimestamp and the second element is + a tuple containing the portions of the string which were ignored: + + .. doctest:: + + >>> from dateutil.parser import parse + >>> parse("Today is January 1, 2047 at 8:21:00AM", fuzzy_with_tokens=True) + (datetime.datetime(2047, 1, 1, 8, 21), (u'Today is ', u' ', u'at ')) + + """ + if fuzzy_with_tokens: + fuzzy = True + + info = self.info + + if dayfirst is None: + dayfirst = info.dayfirst + + if yearfirst is None: + yearfirst = info.yearfirst + + res = self._result() + l = _timelex.split(timestr) # Splits the timestr into tokens + + skipped_idxs = [] + + # year/month/day list + ymd = _ymd() + + len_l = len(l) + i = 0 + try: + while i < len_l: + + # Check if it's a number + value_repr = l[i] + try: + value = float(value_repr) + except ValueError: + value = None + + if value is not None: + # Numeric token + i = self._parse_numeric_token(l, i, info, ymd, res, fuzzy) + + # Check weekday + elif info.weekday(l[i]) is not None: + value = info.weekday(l[i]) + res.weekday = value + + # Check month name + elif info.month(l[i]) is not None: + value = info.month(l[i]) + ymd.append(value, 'M') + + if i + 1 < len_l: + if l[i + 1] in ('-', '/'): + # Jan-01[-99] + sep = l[i + 1] + ymd.append(l[i + 2]) + + if i + 3 < len_l and l[i + 3] == sep: + # Jan-01-99 + ymd.append(l[i + 4]) + i += 2 + + i += 2 + + elif (i + 4 < len_l and l[i + 1] == l[i + 3] == ' ' and + info.pertain(l[i + 2])): + # Jan of 01 + # In this case, 01 is clearly year + if l[i + 4].isdigit(): + # Convert it here to become unambiguous + value = int(l[i + 4]) + year = str(info.convertyear(value)) + ymd.append(year, 'Y') + else: + # Wrong guess + pass + # TODO: not hit in tests + i += 4 + + # Check am/pm + elif info.ampm(l[i]) is not None: + value = info.ampm(l[i]) + val_is_ampm = self._ampm_valid(res.hour, res.ampm, fuzzy) + + if val_is_ampm: + res.hour = self._adjust_ampm(res.hour, value) + res.ampm = value + + elif fuzzy: + skipped_idxs.append(i) + + # Check for a timezone name + elif self._could_be_tzname(res.hour, res.tzname, res.tzoffset, l[i]): + res.tzname = l[i] + res.tzoffset = info.tzoffset(res.tzname) + + # Check for something like GMT+3, or BRST+3. Notice + # that it doesn't mean "I am 3 hours after GMT", but + # "my time +3 is GMT". If found, we reverse the + # logic so that timezone parsing code will get it + # right. + if i + 1 < len_l and l[i + 1] in ('+', '-'): + l[i + 1] = ('+', '-')[l[i + 1] == '+'] + res.tzoffset = None + if info.utczone(res.tzname): + # With something like GMT+3, the timezone + # is *not* GMT. + res.tzname = None + + # Check for a numbered timezone + elif res.hour is not None and l[i] in ('+', '-'): + signal = (-1, 1)[l[i] == '+'] + len_li = len(l[i + 1]) + + # TODO: check that l[i + 1] is integer? + if len_li == 4: + # -0300 + hour_offset = int(l[i + 1][:2]) + min_offset = int(l[i + 1][2:]) + elif i + 2 < len_l and l[i + 2] == ':': + # -03:00 + hour_offset = int(l[i + 1]) + min_offset = int(l[i + 3]) # TODO: Check that l[i+3] is minute-like? + i += 2 + elif len_li <= 2: + # -[0]3 + hour_offset = int(l[i + 1][:2]) + min_offset = 0 + else: + raise ValueError(timestr) + + res.tzoffset = signal * (hour_offset * 3600 + min_offset * 60) + + # Look for a timezone name between parenthesis + if (i + 5 < len_l and + info.jump(l[i + 2]) and l[i + 3] == '(' and + l[i + 5] == ')' and + 3 <= len(l[i + 4]) and + self._could_be_tzname(res.hour, res.tzname, + None, l[i + 4])): + # -0300 (BRST) + res.tzname = l[i + 4] + i += 4 + + i += 1 + + # Check jumps + elif not (info.jump(l[i]) or fuzzy): + raise ValueError(timestr) + + else: + skipped_idxs.append(i) + i += 1 + + # Process year/month/day + year, month, day = ymd.resolve_ymd(yearfirst, dayfirst) + + res.century_specified = ymd.century_specified + res.year = year + res.month = month + res.day = day + + except (IndexError, ValueError): + return None, None + + if not info.validate(res): + return None, None + + if fuzzy_with_tokens: + skipped_tokens = self._recombine_skipped(l, skipped_idxs) + return res, tuple(skipped_tokens) + else: + return res, None + + def _parse_numeric_token(self, tokens, idx, info, ymd, res, fuzzy): + # Token is a number + value_repr = tokens[idx] + try: + value = self._to_decimal(value_repr) + except Exception as e: + six.raise_from(ValueError('Unknown numeric token'), e) + + len_li = len(value_repr) + + len_l = len(tokens) + + if (len(ymd) == 3 and len_li in (2, 4) and + res.hour is None and + (idx + 1 >= len_l or + (tokens[idx + 1] != ':' and + info.hms(tokens[idx + 1]) is None))): + # 19990101T23[59] + s = tokens[idx] + res.hour = int(s[:2]) + + if len_li == 4: + res.minute = int(s[2:]) + + elif len_li == 6 or (len_li > 6 and tokens[idx].find('.') == 6): + # YYMMDD or HHMMSS[.ss] + s = tokens[idx] + + if not ymd and '.' not in tokens[idx]: + ymd.append(s[:2]) + ymd.append(s[2:4]) + ymd.append(s[4:]) + else: + # 19990101T235959[.59] + + # TODO: Check if res attributes already set. + res.hour = int(s[:2]) + res.minute = int(s[2:4]) + res.second, res.microsecond = self._parsems(s[4:]) + + elif len_li in (8, 12, 14): + # YYYYMMDD + s = tokens[idx] + ymd.append(s[:4], 'Y') + ymd.append(s[4:6]) + ymd.append(s[6:8]) + + if len_li > 8: + res.hour = int(s[8:10]) + res.minute = int(s[10:12]) + + if len_li > 12: + res.second = int(s[12:]) + + elif self._find_hms_idx(idx, tokens, info, allow_jump=True) is not None: + # HH[ ]h or MM[ ]m or SS[.ss][ ]s + hms_idx = self._find_hms_idx(idx, tokens, info, allow_jump=True) + (idx, hms) = self._parse_hms(idx, tokens, info, hms_idx) + if hms is not None: + # TODO: checking that hour/minute/second are not + # already set? + self._assign_hms(res, value_repr, hms) + + elif idx + 2 < len_l and tokens[idx + 1] == ':': + # HH:MM[:SS[.ss]] + res.hour = int(value) + value = self._to_decimal(tokens[idx + 2]) # TODO: try/except for this? + (res.minute, res.second) = self._parse_min_sec(value) + + if idx + 4 < len_l and tokens[idx + 3] == ':': + res.second, res.microsecond = self._parsems(tokens[idx + 4]) + + idx += 2 + + idx += 2 + + elif idx + 1 < len_l and tokens[idx + 1] in ('-', '/', '.'): + sep = tokens[idx + 1] + ymd.append(value_repr) + + if idx + 2 < len_l and not info.jump(tokens[idx + 2]): + if tokens[idx + 2].isdigit(): + # 01-01[-01] + ymd.append(tokens[idx + 2]) + else: + # 01-Jan[-01] + value = info.month(tokens[idx + 2]) + + if value is not None: + ymd.append(value, 'M') + else: + raise ValueError() + + if idx + 3 < len_l and tokens[idx + 3] == sep: + # We have three members + value = info.month(tokens[idx + 4]) + + if value is not None: + ymd.append(value, 'M') + else: + ymd.append(tokens[idx + 4]) + idx += 2 + + idx += 1 + idx += 1 + + elif idx + 1 >= len_l or info.jump(tokens[idx + 1]): + if idx + 2 < len_l and info.ampm(tokens[idx + 2]) is not None: + # 12 am + hour = int(value) + res.hour = self._adjust_ampm(hour, info.ampm(tokens[idx + 2])) + idx += 1 + else: + # Year, month or day + ymd.append(value) + idx += 1 + + elif info.ampm(tokens[idx + 1]) is not None and (0 <= value < 24): + # 12am + hour = int(value) + res.hour = self._adjust_ampm(hour, info.ampm(tokens[idx + 1])) + idx += 1 + + elif ymd.could_be_day(value): + ymd.append(value) + + elif not fuzzy: + raise ValueError() + + return idx + + def _find_hms_idx(self, idx, tokens, info, allow_jump): + len_l = len(tokens) + + if idx+1 < len_l and info.hms(tokens[idx+1]) is not None: + # There is an "h", "m", or "s" label following this token. We take + # assign the upcoming label to the current token. + # e.g. the "12" in 12h" + hms_idx = idx + 1 + + elif (allow_jump and idx+2 < len_l and tokens[idx+1] == ' ' and + info.hms(tokens[idx+2]) is not None): + # There is a space and then an "h", "m", or "s" label. + # e.g. the "12" in "12 h" + hms_idx = idx + 2 + + elif idx > 0 and info.hms(tokens[idx-1]) is not None: + # There is a "h", "m", or "s" preceding this token. Since neither + # of the previous cases was hit, there is no label following this + # token, so we use the previous label. + # e.g. the "04" in "12h04" + hms_idx = idx-1 + + elif (1 < idx == len_l-1 and tokens[idx-1] == ' ' and + info.hms(tokens[idx-2]) is not None): + # If we are looking at the final token, we allow for a + # backward-looking check to skip over a space. + # TODO: Are we sure this is the right condition here? + hms_idx = idx - 2 + + else: + hms_idx = None + + return hms_idx + + def _assign_hms(self, res, value_repr, hms): + # See GH issue #427, fixing float rounding + value = self._to_decimal(value_repr) + + if hms == 0: + # Hour + res.hour = int(value) + if value % 1: + res.minute = int(60*(value % 1)) + + elif hms == 1: + (res.minute, res.second) = self._parse_min_sec(value) + + elif hms == 2: + (res.second, res.microsecond) = self._parsems(value_repr) + + def _could_be_tzname(self, hour, tzname, tzoffset, token): + return (hour is not None and + tzname is None and + tzoffset is None and + len(token) <= 5 and + (all(x in string.ascii_uppercase for x in token) + or token in self.info.UTCZONE)) + + def _ampm_valid(self, hour, ampm, fuzzy): + """ + For fuzzy parsing, 'a' or 'am' (both valid English words) + may erroneously trigger the AM/PM flag. Deal with that + here. + """ + val_is_ampm = True + + # If there's already an AM/PM flag, this one isn't one. + if fuzzy and ampm is not None: + val_is_ampm = False + + # If AM/PM is found and hour is not, raise a ValueError + if hour is None: + if fuzzy: + val_is_ampm = False + else: + raise ValueError('No hour specified with AM or PM flag.') + elif not 0 <= hour <= 12: + # If AM/PM is found, it's a 12 hour clock, so raise + # an error for invalid range + if fuzzy: + val_is_ampm = False + else: + raise ValueError('Invalid hour specified for 12-hour clock.') + + return val_is_ampm + + def _adjust_ampm(self, hour, ampm): + if hour < 12 and ampm == 1: + hour += 12 + elif hour == 12 and ampm == 0: + hour = 0 + return hour + + def _parse_min_sec(self, value): + # TODO: Every usage of this function sets res.second to the return + # value. Are there any cases where second will be returned as None and + # we *don't* want to set res.second = None? + minute = int(value) + second = None + + sec_remainder = value % 1 + if sec_remainder: + second = int(60 * sec_remainder) + return (minute, second) + + def _parse_hms(self, idx, tokens, info, hms_idx): + # TODO: Is this going to admit a lot of false-positives for when we + # just happen to have digits and "h", "m" or "s" characters in non-date + # text? I guess hex hashes won't have that problem, but there's plenty + # of random junk out there. + if hms_idx is None: + hms = None + new_idx = idx + elif hms_idx > idx: + hms = info.hms(tokens[hms_idx]) + new_idx = hms_idx + else: + # Looking backwards, increment one. + hms = info.hms(tokens[hms_idx]) + 1 + new_idx = idx + + return (new_idx, hms) + + # ------------------------------------------------------------------ + # Handling for individual tokens. These are kept as methods instead + # of functions for the sake of customizability via subclassing. + + def _parsems(self, value): + """Parse a I[.F] seconds value into (seconds, microseconds).""" + if "." not in value: + return int(value), 0 + else: + i, f = value.split(".") + return int(i), int(f.ljust(6, "0")[:6]) + + def _to_decimal(self, val): + try: + decimal_value = Decimal(val) + # See GH 662, edge case, infinite value should not be converted + # via `_to_decimal` + if not decimal_value.is_finite(): + raise ValueError("Converted decimal value is infinite or NaN") + except Exception as e: + msg = "Could not convert %s to decimal" % val + six.raise_from(ValueError(msg), e) + else: + return decimal_value + + # ------------------------------------------------------------------ + # Post-Parsing construction of datetime output. These are kept as + # methods instead of functions for the sake of customizability via + # subclassing. + + def _build_tzinfo(self, tzinfos, tzname, tzoffset): + if callable(tzinfos): + tzdata = tzinfos(tzname, tzoffset) + else: + tzdata = tzinfos.get(tzname) + # handle case where tzinfo is paased an options that returns None + # eg tzinfos = {'BRST' : None} + if isinstance(tzdata, datetime.tzinfo) or tzdata is None: + tzinfo = tzdata + elif isinstance(tzdata, text_type): + tzinfo = tz.tzstr(tzdata) + elif isinstance(tzdata, integer_types): + tzinfo = tz.tzoffset(tzname, tzdata) + else: + raise TypeError("Offset must be tzinfo subclass, tz string, " + "or int offset.") + return tzinfo + + def _build_tzaware(self, naive, res, tzinfos): + if (callable(tzinfos) or (tzinfos and res.tzname in tzinfos)): + tzinfo = self._build_tzinfo(tzinfos, res.tzname, res.tzoffset) + aware = naive.replace(tzinfo=tzinfo) + aware = self._assign_tzname(aware, res.tzname) + + elif res.tzname and res.tzname in time.tzname: + aware = naive.replace(tzinfo=tz.tzlocal()) + + # Handle ambiguous local datetime + aware = self._assign_tzname(aware, res.tzname) + + # This is mostly relevant for winter GMT zones parsed in the UK + if (aware.tzname() != res.tzname and + res.tzname in self.info.UTCZONE): + aware = aware.replace(tzinfo=tz.UTC) + + elif res.tzoffset == 0: + aware = naive.replace(tzinfo=tz.UTC) + + elif res.tzoffset: + aware = naive.replace(tzinfo=tz.tzoffset(res.tzname, res.tzoffset)) + + elif not res.tzname and not res.tzoffset: + # i.e. no timezone information was found. + aware = naive + + elif res.tzname: + # tz-like string was parsed but we don't know what to do + # with it + warnings.warn("tzname {tzname} identified but not understood. " + "Pass `tzinfos` argument in order to correctly " + "return a timezone-aware datetime. In a future " + "version, this will raise an " + "exception.".format(tzname=res.tzname), + category=UnknownTimezoneWarning) + aware = naive + + return aware + + def _build_naive(self, res, default): + repl = {} + for attr in ("year", "month", "day", "hour", + "minute", "second", "microsecond"): + value = getattr(res, attr) + if value is not None: + repl[attr] = value + + if 'day' not in repl: + # If the default day exceeds the last day of the month, fall back + # to the end of the month. + cyear = default.year if res.year is None else res.year + cmonth = default.month if res.month is None else res.month + cday = default.day if res.day is None else res.day + + if cday > monthrange(cyear, cmonth)[1]: + repl['day'] = monthrange(cyear, cmonth)[1] + + naive = default.replace(**repl) + + if res.weekday is not None and not res.day: + naive = naive + relativedelta.relativedelta(weekday=res.weekday) + + return naive + + def _assign_tzname(self, dt, tzname): + if dt.tzname() != tzname: + new_dt = tz.enfold(dt, fold=1) + if new_dt.tzname() == tzname: + return new_dt + + return dt + + def _recombine_skipped(self, tokens, skipped_idxs): + """ + >>> tokens = ["foo", " ", "bar", " ", "19June2000", "baz"] + >>> skipped_idxs = [0, 1, 2, 5] + >>> _recombine_skipped(tokens, skipped_idxs) + ["foo bar", "baz"] + """ + skipped_tokens = [] + for i, idx in enumerate(sorted(skipped_idxs)): + if i > 0 and idx - 1 == skipped_idxs[i - 1]: + skipped_tokens[-1] = skipped_tokens[-1] + tokens[idx] + else: + skipped_tokens.append(tokens[idx]) + + return skipped_tokens + + +DEFAULTPARSER = parser() + + +def parse(timestr, parserinfo=None, **kwargs): + """ + + Parse a string in one of the supported formats, using the + ``parserinfo`` parameters. + + :param timestr: + A string containing a date/time stamp. + + :param parserinfo: + A :class:`parserinfo` object containing parameters for the parser. + If ``None``, the default arguments to the :class:`parserinfo` + constructor are used. + + The ``**kwargs`` parameter takes the following keyword arguments: + + :param default: + The default datetime object, if this is a datetime object and not + ``None``, elements specified in ``timestr`` replace elements in the + default object. + + :param ignoretz: + If set ``True``, time zones in parsed strings are ignored and a naive + :class:`datetime` object is returned. + + :param tzinfos: + Additional time zone names / aliases which may be present in the + string. This argument maps time zone names (and optionally offsets + from those time zones) to time zones. This parameter can be a + dictionary with timezone aliases mapping time zone names to time + zones or a function taking two parameters (``tzname`` and + ``tzoffset``) and returning a time zone. + + The timezones to which the names are mapped can be an integer + offset from UTC in seconds or a :class:`tzinfo` object. + + .. doctest:: + :options: +NORMALIZE_WHITESPACE + + >>> from dateutil.parser import parse + >>> from dateutil.tz import gettz + >>> tzinfos = {"BRST": -7200, "CST": gettz("America/Chicago")} + >>> parse("2012-01-19 17:21:00 BRST", tzinfos=tzinfos) + datetime.datetime(2012, 1, 19, 17, 21, tzinfo=tzoffset(u'BRST', -7200)) + >>> parse("2012-01-19 17:21:00 CST", tzinfos=tzinfos) + datetime.datetime(2012, 1, 19, 17, 21, + tzinfo=tzfile('/usr/share/zoneinfo/America/Chicago')) + + This parameter is ignored if ``ignoretz`` is set. + + :param dayfirst: + Whether to interpret the first value in an ambiguous 3-integer date + (e.g. 01/05/09) as the day (``True``) or month (``False``). If + ``yearfirst`` is set to ``True``, this distinguishes between YDM and + YMD. If set to ``None``, this value is retrieved from the current + :class:`parserinfo` object (which itself defaults to ``False``). + + :param yearfirst: + Whether to interpret the first value in an ambiguous 3-integer date + (e.g. 01/05/09) as the year. If ``True``, the first number is taken to + be the year, otherwise the last number is taken to be the year. If + this is set to ``None``, the value is retrieved from the current + :class:`parserinfo` object (which itself defaults to ``False``). + + :param fuzzy: + Whether to allow fuzzy parsing, allowing for string like "Today is + January 1, 2047 at 8:21:00AM". + + :param fuzzy_with_tokens: + If ``True``, ``fuzzy`` is automatically set to True, and the parser + will return a tuple where the first element is the parsed + :class:`datetime.datetime` datetimestamp and the second element is + a tuple containing the portions of the string which were ignored: + + .. doctest:: + + >>> from dateutil.parser import parse + >>> parse("Today is January 1, 2047 at 8:21:00AM", fuzzy_with_tokens=True) + (datetime.datetime(2047, 1, 1, 8, 21), (u'Today is ', u' ', u'at ')) + + :return: + Returns a :class:`datetime.datetime` object or, if the + ``fuzzy_with_tokens`` option is ``True``, returns a tuple, the + first element being a :class:`datetime.datetime` object, the second + a tuple containing the fuzzy tokens. + + :raises ParserError: + Raised for invalid or unknown string formats, if the provided + :class:`tzinfo` is not in a valid format, or if an invalid date would + be created. + + :raises OverflowError: + Raised if the parsed date exceeds the largest valid C integer on + your system. + """ + if parserinfo: + return parser(parserinfo).parse(timestr, **kwargs) + else: + return DEFAULTPARSER.parse(timestr, **kwargs) + + +class _tzparser(object): + + class _result(_resultbase): + + __slots__ = ["stdabbr", "stdoffset", "dstabbr", "dstoffset", + "start", "end"] + + class _attr(_resultbase): + __slots__ = ["month", "week", "weekday", + "yday", "jyday", "day", "time"] + + def __repr__(self): + return self._repr("") + + def __init__(self): + _resultbase.__init__(self) + self.start = self._attr() + self.end = self._attr() + + def parse(self, tzstr): + res = self._result() + l = [x for x in re.split(r'([,:.]|[a-zA-Z]+|[0-9]+)',tzstr) if x] + used_idxs = list() + try: + + len_l = len(l) + + i = 0 + while i < len_l: + # BRST+3[BRDT[+2]] + j = i + while j < len_l and not [x for x in l[j] + if x in "0123456789:,-+"]: + j += 1 + if j != i: + if not res.stdabbr: + offattr = "stdoffset" + res.stdabbr = "".join(l[i:j]) + else: + offattr = "dstoffset" + res.dstabbr = "".join(l[i:j]) + + for ii in range(j): + used_idxs.append(ii) + i = j + if (i < len_l and (l[i] in ('+', '-') or l[i][0] in + "0123456789")): + if l[i] in ('+', '-'): + # Yes, that's right. See the TZ variable + # documentation. + signal = (1, -1)[l[i] == '+'] + used_idxs.append(i) + i += 1 + else: + signal = -1 + len_li = len(l[i]) + if len_li == 4: + # -0300 + setattr(res, offattr, (int(l[i][:2]) * 3600 + + int(l[i][2:]) * 60) * signal) + elif i + 1 < len_l and l[i + 1] == ':': + # -03:00 + setattr(res, offattr, + (int(l[i]) * 3600 + + int(l[i + 2]) * 60) * signal) + used_idxs.append(i) + i += 2 + elif len_li <= 2: + # -[0]3 + setattr(res, offattr, + int(l[i][:2]) * 3600 * signal) + else: + return None + used_idxs.append(i) + i += 1 + if res.dstabbr: + break + else: + break + + + if i < len_l: + for j in range(i, len_l): + if l[j] == ';': + l[j] = ',' + + assert l[i] == ',' + + i += 1 + + if i >= len_l: + pass + elif (8 <= l.count(',') <= 9 and + not [y for x in l[i:] if x != ',' + for y in x if y not in "0123456789+-"]): + # GMT0BST,3,0,30,3600,10,0,26,7200[,3600] + for x in (res.start, res.end): + x.month = int(l[i]) + used_idxs.append(i) + i += 2 + if l[i] == '-': + value = int(l[i + 1]) * -1 + used_idxs.append(i) + i += 1 + else: + value = int(l[i]) + used_idxs.append(i) + i += 2 + if value: + x.week = value + x.weekday = (int(l[i]) - 1) % 7 + else: + x.day = int(l[i]) + used_idxs.append(i) + i += 2 + x.time = int(l[i]) + used_idxs.append(i) + i += 2 + if i < len_l: + if l[i] in ('-', '+'): + signal = (-1, 1)[l[i] == "+"] + used_idxs.append(i) + i += 1 + else: + signal = 1 + used_idxs.append(i) + res.dstoffset = (res.stdoffset + int(l[i]) * signal) + + # This was a made-up format that is not in normal use + warn(('Parsed time zone "%s"' % tzstr) + + 'is in a non-standard dateutil-specific format, which ' + + 'is now deprecated; support for parsing this format ' + + 'will be removed in future versions. It is recommended ' + + 'that you switch to a standard format like the GNU ' + + 'TZ variable format.', tz.DeprecatedTzFormatWarning) + elif (l.count(',') == 2 and l[i:].count('/') <= 2 and + not [y for x in l[i:] if x not in (',', '/', 'J', 'M', + '.', '-', ':') + for y in x if y not in "0123456789"]): + for x in (res.start, res.end): + if l[i] == 'J': + # non-leap year day (1 based) + used_idxs.append(i) + i += 1 + x.jyday = int(l[i]) + elif l[i] == 'M': + # month[-.]week[-.]weekday + used_idxs.append(i) + i += 1 + x.month = int(l[i]) + used_idxs.append(i) + i += 1 + assert l[i] in ('-', '.') + used_idxs.append(i) + i += 1 + x.week = int(l[i]) + if x.week == 5: + x.week = -1 + used_idxs.append(i) + i += 1 + assert l[i] in ('-', '.') + used_idxs.append(i) + i += 1 + x.weekday = (int(l[i]) - 1) % 7 + else: + # year day (zero based) + x.yday = int(l[i]) + 1 + + used_idxs.append(i) + i += 1 + + if i < len_l and l[i] == '/': + used_idxs.append(i) + i += 1 + # start time + len_li = len(l[i]) + if len_li == 4: + # -0300 + x.time = (int(l[i][:2]) * 3600 + + int(l[i][2:]) * 60) + elif i + 1 < len_l and l[i + 1] == ':': + # -03:00 + x.time = int(l[i]) * 3600 + int(l[i + 2]) * 60 + used_idxs.append(i) + i += 2 + if i + 1 < len_l and l[i + 1] == ':': + used_idxs.append(i) + i += 2 + x.time += int(l[i]) + elif len_li <= 2: + # -[0]3 + x.time = (int(l[i][:2]) * 3600) + else: + return None + used_idxs.append(i) + i += 1 + + assert i == len_l or l[i] == ',' + + i += 1 + + assert i >= len_l + + except (IndexError, ValueError, AssertionError): + return None + + unused_idxs = set(range(len_l)).difference(used_idxs) + res.any_unused_tokens = not {l[n] for n in unused_idxs}.issubset({",",":"}) + return res + + +DEFAULTTZPARSER = _tzparser() + + +def _parsetz(tzstr): + return DEFAULTTZPARSER.parse(tzstr) + + +class ParserError(ValueError): + """Exception subclass used for any failure to parse a datetime string. + + This is a subclass of :py:exc:`ValueError`, and should be raised any time + earlier versions of ``dateutil`` would have raised ``ValueError``. + + .. versionadded:: 2.8.1 + """ + def __str__(self): + try: + return self.args[0] % self.args[1:] + except (TypeError, IndexError): + return super(ParserError, self).__str__() + + def __repr__(self): + args = ", ".join("'%s'" % arg for arg in self.args) + return "%s(%s)" % (self.__class__.__name__, args) + + +class UnknownTimezoneWarning(RuntimeWarning): + """Raised when the parser finds a timezone it cannot parse into a tzinfo. + + .. versionadded:: 2.7.0 + """ +# vim:ts=4:sw=4:et diff --git a/venv/lib/python3.11/site-packages/dateutil/parser/isoparser.py b/venv/lib/python3.11/site-packages/dateutil/parser/isoparser.py new file mode 100644 index 0000000000000000000000000000000000000000..7060087df4776a07347cbb60127a70db393e3a65 --- /dev/null +++ b/venv/lib/python3.11/site-packages/dateutil/parser/isoparser.py @@ -0,0 +1,416 @@ +# -*- coding: utf-8 -*- +""" +This module offers a parser for ISO-8601 strings + +It is intended to support all valid date, time and datetime formats per the +ISO-8601 specification. + +..versionadded:: 2.7.0 +""" +from datetime import datetime, timedelta, time, date +import calendar +from dateutil import tz + +from functools import wraps + +import re +import six + +__all__ = ["isoparse", "isoparser"] + + +def _takes_ascii(f): + @wraps(f) + def func(self, str_in, *args, **kwargs): + # If it's a stream, read the whole thing + str_in = getattr(str_in, 'read', lambda: str_in)() + + # If it's unicode, turn it into bytes, since ISO-8601 only covers ASCII + if isinstance(str_in, six.text_type): + # ASCII is the same in UTF-8 + try: + str_in = str_in.encode('ascii') + except UnicodeEncodeError as e: + msg = 'ISO-8601 strings should contain only ASCII characters' + six.raise_from(ValueError(msg), e) + + return f(self, str_in, *args, **kwargs) + + return func + + +class isoparser(object): + def __init__(self, sep=None): + """ + :param sep: + A single character that separates date and time portions. If + ``None``, the parser will accept any single character. + For strict ISO-8601 adherence, pass ``'T'``. + """ + if sep is not None: + if (len(sep) != 1 or ord(sep) >= 128 or sep in '0123456789'): + raise ValueError('Separator must be a single, non-numeric ' + + 'ASCII character') + + sep = sep.encode('ascii') + + self._sep = sep + + @_takes_ascii + def isoparse(self, dt_str): + """ + Parse an ISO-8601 datetime string into a :class:`datetime.datetime`. + + An ISO-8601 datetime string consists of a date portion, followed + optionally by a time portion - the date and time portions are separated + by a single character separator, which is ``T`` in the official + standard. Incomplete date formats (such as ``YYYY-MM``) may *not* be + combined with a time portion. + + Supported date formats are: + + Common: + + - ``YYYY`` + - ``YYYY-MM`` + - ``YYYY-MM-DD`` or ``YYYYMMDD`` + + Uncommon: + + - ``YYYY-Www`` or ``YYYYWww`` - ISO week (day defaults to 0) + - ``YYYY-Www-D`` or ``YYYYWwwD`` - ISO week and day + + The ISO week and day numbering follows the same logic as + :func:`datetime.date.isocalendar`. + + Supported time formats are: + + - ``hh`` + - ``hh:mm`` or ``hhmm`` + - ``hh:mm:ss`` or ``hhmmss`` + - ``hh:mm:ss.ssssss`` (Up to 6 sub-second digits) + + Midnight is a special case for `hh`, as the standard supports both + 00:00 and 24:00 as a representation. The decimal separator can be + either a dot or a comma. + + + .. caution:: + + Support for fractional components other than seconds is part of the + ISO-8601 standard, but is not currently implemented in this parser. + + Supported time zone offset formats are: + + - `Z` (UTC) + - `±HH:MM` + - `±HHMM` + - `±HH` + + Offsets will be represented as :class:`dateutil.tz.tzoffset` objects, + with the exception of UTC, which will be represented as + :class:`dateutil.tz.tzutc`. Time zone offsets equivalent to UTC (such + as `+00:00`) will also be represented as :class:`dateutil.tz.tzutc`. + + :param dt_str: + A string or stream containing only an ISO-8601 datetime string + + :return: + Returns a :class:`datetime.datetime` representing the string. + Unspecified components default to their lowest value. + + .. warning:: + + As of version 2.7.0, the strictness of the parser should not be + considered a stable part of the contract. Any valid ISO-8601 string + that parses correctly with the default settings will continue to + parse correctly in future versions, but invalid strings that + currently fail (e.g. ``2017-01-01T00:00+00:00:00``) are not + guaranteed to continue failing in future versions if they encode + a valid date. + + .. versionadded:: 2.7.0 + """ + components, pos = self._parse_isodate(dt_str) + + if len(dt_str) > pos: + if self._sep is None or dt_str[pos:pos + 1] == self._sep: + components += self._parse_isotime(dt_str[pos + 1:]) + else: + raise ValueError('String contains unknown ISO components') + + if len(components) > 3 and components[3] == 24: + components[3] = 0 + return datetime(*components) + timedelta(days=1) + + return datetime(*components) + + @_takes_ascii + def parse_isodate(self, datestr): + """ + Parse the date portion of an ISO string. + + :param datestr: + The string portion of an ISO string, without a separator + + :return: + Returns a :class:`datetime.date` object + """ + components, pos = self._parse_isodate(datestr) + if pos < len(datestr): + raise ValueError('String contains unknown ISO ' + + 'components: {!r}'.format(datestr.decode('ascii'))) + return date(*components) + + @_takes_ascii + def parse_isotime(self, timestr): + """ + Parse the time portion of an ISO string. + + :param timestr: + The time portion of an ISO string, without a separator + + :return: + Returns a :class:`datetime.time` object + """ + components = self._parse_isotime(timestr) + if components[0] == 24: + components[0] = 0 + return time(*components) + + @_takes_ascii + def parse_tzstr(self, tzstr, zero_as_utc=True): + """ + Parse a valid ISO time zone string. + + See :func:`isoparser.isoparse` for details on supported formats. + + :param tzstr: + A string representing an ISO time zone offset + + :param zero_as_utc: + Whether to return :class:`dateutil.tz.tzutc` for zero-offset zones + + :return: + Returns :class:`dateutil.tz.tzoffset` for offsets and + :class:`dateutil.tz.tzutc` for ``Z`` and (if ``zero_as_utc`` is + specified) offsets equivalent to UTC. + """ + return self._parse_tzstr(tzstr, zero_as_utc=zero_as_utc) + + # Constants + _DATE_SEP = b'-' + _TIME_SEP = b':' + _FRACTION_REGEX = re.compile(b'[\\.,]([0-9]+)') + + def _parse_isodate(self, dt_str): + try: + return self._parse_isodate_common(dt_str) + except ValueError: + return self._parse_isodate_uncommon(dt_str) + + def _parse_isodate_common(self, dt_str): + len_str = len(dt_str) + components = [1, 1, 1] + + if len_str < 4: + raise ValueError('ISO string too short') + + # Year + components[0] = int(dt_str[0:4]) + pos = 4 + if pos >= len_str: + return components, pos + + has_sep = dt_str[pos:pos + 1] == self._DATE_SEP + if has_sep: + pos += 1 + + # Month + if len_str - pos < 2: + raise ValueError('Invalid common month') + + components[1] = int(dt_str[pos:pos + 2]) + pos += 2 + + if pos >= len_str: + if has_sep: + return components, pos + else: + raise ValueError('Invalid ISO format') + + if has_sep: + if dt_str[pos:pos + 1] != self._DATE_SEP: + raise ValueError('Invalid separator in ISO string') + pos += 1 + + # Day + if len_str - pos < 2: + raise ValueError('Invalid common day') + components[2] = int(dt_str[pos:pos + 2]) + return components, pos + 2 + + def _parse_isodate_uncommon(self, dt_str): + if len(dt_str) < 4: + raise ValueError('ISO string too short') + + # All ISO formats start with the year + year = int(dt_str[0:4]) + + has_sep = dt_str[4:5] == self._DATE_SEP + + pos = 4 + has_sep # Skip '-' if it's there + if dt_str[pos:pos + 1] == b'W': + # YYYY-?Www-?D? + pos += 1 + weekno = int(dt_str[pos:pos + 2]) + pos += 2 + + dayno = 1 + if len(dt_str) > pos: + if (dt_str[pos:pos + 1] == self._DATE_SEP) != has_sep: + raise ValueError('Inconsistent use of dash separator') + + pos += has_sep + + dayno = int(dt_str[pos:pos + 1]) + pos += 1 + + base_date = self._calculate_weekdate(year, weekno, dayno) + else: + # YYYYDDD or YYYY-DDD + if len(dt_str) - pos < 3: + raise ValueError('Invalid ordinal day') + + ordinal_day = int(dt_str[pos:pos + 3]) + pos += 3 + + if ordinal_day < 1 or ordinal_day > (365 + calendar.isleap(year)): + raise ValueError('Invalid ordinal day' + + ' {} for year {}'.format(ordinal_day, year)) + + base_date = date(year, 1, 1) + timedelta(days=ordinal_day - 1) + + components = [base_date.year, base_date.month, base_date.day] + return components, pos + + def _calculate_weekdate(self, year, week, day): + """ + Calculate the day of corresponding to the ISO year-week-day calendar. + + This function is effectively the inverse of + :func:`datetime.date.isocalendar`. + + :param year: + The year in the ISO calendar + + :param week: + The week in the ISO calendar - range is [1, 53] + + :param day: + The day in the ISO calendar - range is [1 (MON), 7 (SUN)] + + :return: + Returns a :class:`datetime.date` + """ + if not 0 < week < 54: + raise ValueError('Invalid week: {}'.format(week)) + + if not 0 < day < 8: # Range is 1-7 + raise ValueError('Invalid weekday: {}'.format(day)) + + # Get week 1 for the specific year: + jan_4 = date(year, 1, 4) # Week 1 always has January 4th in it + week_1 = jan_4 - timedelta(days=jan_4.isocalendar()[2] - 1) + + # Now add the specific number of weeks and days to get what we want + week_offset = (week - 1) * 7 + (day - 1) + return week_1 + timedelta(days=week_offset) + + def _parse_isotime(self, timestr): + len_str = len(timestr) + components = [0, 0, 0, 0, None] + pos = 0 + comp = -1 + + if len_str < 2: + raise ValueError('ISO time too short') + + has_sep = False + + while pos < len_str and comp < 5: + comp += 1 + + if timestr[pos:pos + 1] in b'-+Zz': + # Detect time zone boundary + components[-1] = self._parse_tzstr(timestr[pos:]) + pos = len_str + break + + if comp == 1 and timestr[pos:pos+1] == self._TIME_SEP: + has_sep = True + pos += 1 + elif comp == 2 and has_sep: + if timestr[pos:pos+1] != self._TIME_SEP: + raise ValueError('Inconsistent use of colon separator') + pos += 1 + + if comp < 3: + # Hour, minute, second + components[comp] = int(timestr[pos:pos + 2]) + pos += 2 + + if comp == 3: + # Fraction of a second + frac = self._FRACTION_REGEX.match(timestr[pos:]) + if not frac: + continue + + us_str = frac.group(1)[:6] # Truncate to microseconds + components[comp] = int(us_str) * 10**(6 - len(us_str)) + pos += len(frac.group()) + + if pos < len_str: + raise ValueError('Unused components in ISO string') + + if components[0] == 24: + # Standard supports 00:00 and 24:00 as representations of midnight + if any(component != 0 for component in components[1:4]): + raise ValueError('Hour may only be 24 at 24:00:00.000') + + return components + + def _parse_tzstr(self, tzstr, zero_as_utc=True): + if tzstr == b'Z' or tzstr == b'z': + return tz.UTC + + if len(tzstr) not in {3, 5, 6}: + raise ValueError('Time zone offset must be 1, 3, 5 or 6 characters') + + if tzstr[0:1] == b'-': + mult = -1 + elif tzstr[0:1] == b'+': + mult = 1 + else: + raise ValueError('Time zone offset requires sign') + + hours = int(tzstr[1:3]) + if len(tzstr) == 3: + minutes = 0 + else: + minutes = int(tzstr[(4 if tzstr[3:4] == self._TIME_SEP else 3):]) + + if zero_as_utc and hours == 0 and minutes == 0: + return tz.UTC + else: + if minutes > 59: + raise ValueError('Invalid minutes in time zone offset') + + if hours > 23: + raise ValueError('Invalid hours in time zone offset') + + return tz.tzoffset(None, mult * (hours * 60 + minutes) * 60) + + +DEFAULT_ISOPARSER = isoparser() +isoparse = DEFAULT_ISOPARSER.isoparse diff --git a/venv/lib/python3.11/site-packages/dateutil/relativedelta.py b/venv/lib/python3.11/site-packages/dateutil/relativedelta.py new file mode 100644 index 0000000000000000000000000000000000000000..cd323a549e0f182541ebcde2d2ea1adfbbd9701e --- /dev/null +++ b/venv/lib/python3.11/site-packages/dateutil/relativedelta.py @@ -0,0 +1,599 @@ +# -*- coding: utf-8 -*- +import datetime +import calendar + +import operator +from math import copysign + +from six import integer_types +from warnings import warn + +from ._common import weekday + +MO, TU, WE, TH, FR, SA, SU = weekdays = tuple(weekday(x) for x in range(7)) + +__all__ = ["relativedelta", "MO", "TU", "WE", "TH", "FR", "SA", "SU"] + + +class relativedelta(object): + """ + The relativedelta type is designed to be applied to an existing datetime and + can replace specific components of that datetime, or represents an interval + of time. + + It is based on the specification of the excellent work done by M.-A. Lemburg + in his + `mx.DateTime `_ extension. + However, notice that this type does *NOT* implement the same algorithm as + his work. Do *NOT* expect it to behave like mx.DateTime's counterpart. + + There are two different ways to build a relativedelta instance. The + first one is passing it two date/datetime classes:: + + relativedelta(datetime1, datetime2) + + The second one is passing it any number of the following keyword arguments:: + + relativedelta(arg1=x,arg2=y,arg3=z...) + + year, month, day, hour, minute, second, microsecond: + Absolute information (argument is singular); adding or subtracting a + relativedelta with absolute information does not perform an arithmetic + operation, but rather REPLACES the corresponding value in the + original datetime with the value(s) in relativedelta. + + years, months, weeks, days, hours, minutes, seconds, microseconds: + Relative information, may be negative (argument is plural); adding + or subtracting a relativedelta with relative information performs + the corresponding arithmetic operation on the original datetime value + with the information in the relativedelta. + + weekday: + One of the weekday instances (MO, TU, etc) available in the + relativedelta module. These instances may receive a parameter N, + specifying the Nth weekday, which could be positive or negative + (like MO(+1) or MO(-2)). Not specifying it is the same as specifying + +1. You can also use an integer, where 0=MO. This argument is always + relative e.g. if the calculated date is already Monday, using MO(1) + or MO(-1) won't change the day. To effectively make it absolute, use + it in combination with the day argument (e.g. day=1, MO(1) for first + Monday of the month). + + leapdays: + Will add given days to the date found, if year is a leap + year, and the date found is post 28 of february. + + yearday, nlyearday: + Set the yearday or the non-leap year day (jump leap days). + These are converted to day/month/leapdays information. + + There are relative and absolute forms of the keyword + arguments. The plural is relative, and the singular is + absolute. For each argument in the order below, the absolute form + is applied first (by setting each attribute to that value) and + then the relative form (by adding the value to the attribute). + + The order of attributes considered when this relativedelta is + added to a datetime is: + + 1. Year + 2. Month + 3. Day + 4. Hours + 5. Minutes + 6. Seconds + 7. Microseconds + + Finally, weekday is applied, using the rule described above. + + For example + + >>> from datetime import datetime + >>> from dateutil.relativedelta import relativedelta, MO + >>> dt = datetime(2018, 4, 9, 13, 37, 0) + >>> delta = relativedelta(hours=25, day=1, weekday=MO(1)) + >>> dt + delta + datetime.datetime(2018, 4, 2, 14, 37) + + First, the day is set to 1 (the first of the month), then 25 hours + are added, to get to the 2nd day and 14th hour, finally the + weekday is applied, but since the 2nd is already a Monday there is + no effect. + + """ + + def __init__(self, dt1=None, dt2=None, + years=0, months=0, days=0, leapdays=0, weeks=0, + hours=0, minutes=0, seconds=0, microseconds=0, + year=None, month=None, day=None, weekday=None, + yearday=None, nlyearday=None, + hour=None, minute=None, second=None, microsecond=None): + + if dt1 and dt2: + # datetime is a subclass of date. So both must be date + if not (isinstance(dt1, datetime.date) and + isinstance(dt2, datetime.date)): + raise TypeError("relativedelta only diffs datetime/date") + + # We allow two dates, or two datetimes, so we coerce them to be + # of the same type + if (isinstance(dt1, datetime.datetime) != + isinstance(dt2, datetime.datetime)): + if not isinstance(dt1, datetime.datetime): + dt1 = datetime.datetime.fromordinal(dt1.toordinal()) + elif not isinstance(dt2, datetime.datetime): + dt2 = datetime.datetime.fromordinal(dt2.toordinal()) + + self.years = 0 + self.months = 0 + self.days = 0 + self.leapdays = 0 + self.hours = 0 + self.minutes = 0 + self.seconds = 0 + self.microseconds = 0 + self.year = None + self.month = None + self.day = None + self.weekday = None + self.hour = None + self.minute = None + self.second = None + self.microsecond = None + self._has_time = 0 + + # Get year / month delta between the two + months = (dt1.year - dt2.year) * 12 + (dt1.month - dt2.month) + self._set_months(months) + + # Remove the year/month delta so the timedelta is just well-defined + # time units (seconds, days and microseconds) + dtm = self.__radd__(dt2) + + # If we've overshot our target, make an adjustment + if dt1 < dt2: + compare = operator.gt + increment = 1 + else: + compare = operator.lt + increment = -1 + + while compare(dt1, dtm): + months += increment + self._set_months(months) + dtm = self.__radd__(dt2) + + # Get the timedelta between the "months-adjusted" date and dt1 + delta = dt1 - dtm + self.seconds = delta.seconds + delta.days * 86400 + self.microseconds = delta.microseconds + else: + # Check for non-integer values in integer-only quantities + if any(x is not None and x != int(x) for x in (years, months)): + raise ValueError("Non-integer years and months are " + "ambiguous and not currently supported.") + + # Relative information + self.years = int(years) + self.months = int(months) + self.days = days + weeks * 7 + self.leapdays = leapdays + self.hours = hours + self.minutes = minutes + self.seconds = seconds + self.microseconds = microseconds + + # Absolute information + self.year = year + self.month = month + self.day = day + self.hour = hour + self.minute = minute + self.second = second + self.microsecond = microsecond + + if any(x is not None and int(x) != x + for x in (year, month, day, hour, + minute, second, microsecond)): + # For now we'll deprecate floats - later it'll be an error. + warn("Non-integer value passed as absolute information. " + + "This is not a well-defined condition and will raise " + + "errors in future versions.", DeprecationWarning) + + if isinstance(weekday, integer_types): + self.weekday = weekdays[weekday] + else: + self.weekday = weekday + + yday = 0 + if nlyearday: + yday = nlyearday + elif yearday: + yday = yearday + if yearday > 59: + self.leapdays = -1 + if yday: + ydayidx = [31, 59, 90, 120, 151, 181, 212, + 243, 273, 304, 334, 366] + for idx, ydays in enumerate(ydayidx): + if yday <= ydays: + self.month = idx+1 + if idx == 0: + self.day = yday + else: + self.day = yday-ydayidx[idx-1] + break + else: + raise ValueError("invalid year day (%d)" % yday) + + self._fix() + + def _fix(self): + if abs(self.microseconds) > 999999: + s = _sign(self.microseconds) + div, mod = divmod(self.microseconds * s, 1000000) + self.microseconds = mod * s + self.seconds += div * s + if abs(self.seconds) > 59: + s = _sign(self.seconds) + div, mod = divmod(self.seconds * s, 60) + self.seconds = mod * s + self.minutes += div * s + if abs(self.minutes) > 59: + s = _sign(self.minutes) + div, mod = divmod(self.minutes * s, 60) + self.minutes = mod * s + self.hours += div * s + if abs(self.hours) > 23: + s = _sign(self.hours) + div, mod = divmod(self.hours * s, 24) + self.hours = mod * s + self.days += div * s + if abs(self.months) > 11: + s = _sign(self.months) + div, mod = divmod(self.months * s, 12) + self.months = mod * s + self.years += div * s + if (self.hours or self.minutes or self.seconds or self.microseconds + or self.hour is not None or self.minute is not None or + self.second is not None or self.microsecond is not None): + self._has_time = 1 + else: + self._has_time = 0 + + @property + def weeks(self): + return int(self.days / 7.0) + + @weeks.setter + def weeks(self, value): + self.days = self.days - (self.weeks * 7) + value * 7 + + def _set_months(self, months): + self.months = months + if abs(self.months) > 11: + s = _sign(self.months) + div, mod = divmod(self.months * s, 12) + self.months = mod * s + self.years = div * s + else: + self.years = 0 + + def normalized(self): + """ + Return a version of this object represented entirely using integer + values for the relative attributes. + + >>> relativedelta(days=1.5, hours=2).normalized() + relativedelta(days=+1, hours=+14) + + :return: + Returns a :class:`dateutil.relativedelta.relativedelta` object. + """ + # Cascade remainders down (rounding each to roughly nearest microsecond) + days = int(self.days) + + hours_f = round(self.hours + 24 * (self.days - days), 11) + hours = int(hours_f) + + minutes_f = round(self.minutes + 60 * (hours_f - hours), 10) + minutes = int(minutes_f) + + seconds_f = round(self.seconds + 60 * (minutes_f - minutes), 8) + seconds = int(seconds_f) + + microseconds = round(self.microseconds + 1e6 * (seconds_f - seconds)) + + # Constructor carries overflow back up with call to _fix() + return self.__class__(years=self.years, months=self.months, + days=days, hours=hours, minutes=minutes, + seconds=seconds, microseconds=microseconds, + leapdays=self.leapdays, year=self.year, + month=self.month, day=self.day, + weekday=self.weekday, hour=self.hour, + minute=self.minute, second=self.second, + microsecond=self.microsecond) + + def __add__(self, other): + if isinstance(other, relativedelta): + return self.__class__(years=other.years + self.years, + months=other.months + self.months, + days=other.days + self.days, + hours=other.hours + self.hours, + minutes=other.minutes + self.minutes, + seconds=other.seconds + self.seconds, + microseconds=(other.microseconds + + self.microseconds), + leapdays=other.leapdays or self.leapdays, + year=(other.year if other.year is not None + else self.year), + month=(other.month if other.month is not None + else self.month), + day=(other.day if other.day is not None + else self.day), + weekday=(other.weekday if other.weekday is not None + else self.weekday), + hour=(other.hour if other.hour is not None + else self.hour), + minute=(other.minute if other.minute is not None + else self.minute), + second=(other.second if other.second is not None + else self.second), + microsecond=(other.microsecond if other.microsecond + is not None else + self.microsecond)) + if isinstance(other, datetime.timedelta): + return self.__class__(years=self.years, + months=self.months, + days=self.days + other.days, + hours=self.hours, + minutes=self.minutes, + seconds=self.seconds + other.seconds, + microseconds=self.microseconds + other.microseconds, + leapdays=self.leapdays, + year=self.year, + month=self.month, + day=self.day, + weekday=self.weekday, + hour=self.hour, + minute=self.minute, + second=self.second, + microsecond=self.microsecond) + if not isinstance(other, datetime.date): + return NotImplemented + elif self._has_time and not isinstance(other, datetime.datetime): + other = datetime.datetime.fromordinal(other.toordinal()) + year = (self.year or other.year)+self.years + month = self.month or other.month + if self.months: + assert 1 <= abs(self.months) <= 12 + month += self.months + if month > 12: + year += 1 + month -= 12 + elif month < 1: + year -= 1 + month += 12 + day = min(calendar.monthrange(year, month)[1], + self.day or other.day) + repl = {"year": year, "month": month, "day": day} + for attr in ["hour", "minute", "second", "microsecond"]: + value = getattr(self, attr) + if value is not None: + repl[attr] = value + days = self.days + if self.leapdays and month > 2 and calendar.isleap(year): + days += self.leapdays + ret = (other.replace(**repl) + + datetime.timedelta(days=days, + hours=self.hours, + minutes=self.minutes, + seconds=self.seconds, + microseconds=self.microseconds)) + if self.weekday: + weekday, nth = self.weekday.weekday, self.weekday.n or 1 + jumpdays = (abs(nth) - 1) * 7 + if nth > 0: + jumpdays += (7 - ret.weekday() + weekday) % 7 + else: + jumpdays += (ret.weekday() - weekday) % 7 + jumpdays *= -1 + ret += datetime.timedelta(days=jumpdays) + return ret + + def __radd__(self, other): + return self.__add__(other) + + def __rsub__(self, other): + return self.__neg__().__radd__(other) + + def __sub__(self, other): + if not isinstance(other, relativedelta): + return NotImplemented # In case the other object defines __rsub__ + return self.__class__(years=self.years - other.years, + months=self.months - other.months, + days=self.days - other.days, + hours=self.hours - other.hours, + minutes=self.minutes - other.minutes, + seconds=self.seconds - other.seconds, + microseconds=self.microseconds - other.microseconds, + leapdays=self.leapdays or other.leapdays, + year=(self.year if self.year is not None + else other.year), + month=(self.month if self.month is not None else + other.month), + day=(self.day if self.day is not None else + other.day), + weekday=(self.weekday if self.weekday is not None else + other.weekday), + hour=(self.hour if self.hour is not None else + other.hour), + minute=(self.minute if self.minute is not None else + other.minute), + second=(self.second if self.second is not None else + other.second), + microsecond=(self.microsecond if self.microsecond + is not None else + other.microsecond)) + + def __abs__(self): + return self.__class__(years=abs(self.years), + months=abs(self.months), + days=abs(self.days), + hours=abs(self.hours), + minutes=abs(self.minutes), + seconds=abs(self.seconds), + microseconds=abs(self.microseconds), + leapdays=self.leapdays, + year=self.year, + month=self.month, + day=self.day, + weekday=self.weekday, + hour=self.hour, + minute=self.minute, + second=self.second, + microsecond=self.microsecond) + + def __neg__(self): + return self.__class__(years=-self.years, + months=-self.months, + days=-self.days, + hours=-self.hours, + minutes=-self.minutes, + seconds=-self.seconds, + microseconds=-self.microseconds, + leapdays=self.leapdays, + year=self.year, + month=self.month, + day=self.day, + weekday=self.weekday, + hour=self.hour, + minute=self.minute, + second=self.second, + microsecond=self.microsecond) + + def __bool__(self): + return not (not self.years and + not self.months and + not self.days and + not self.hours and + not self.minutes and + not self.seconds and + not self.microseconds and + not self.leapdays and + self.year is None and + self.month is None and + self.day is None and + self.weekday is None and + self.hour is None and + self.minute is None and + self.second is None and + self.microsecond is None) + # Compatibility with Python 2.x + __nonzero__ = __bool__ + + def __mul__(self, other): + try: + f = float(other) + except TypeError: + return NotImplemented + + return self.__class__(years=int(self.years * f), + months=int(self.months * f), + days=int(self.days * f), + hours=int(self.hours * f), + minutes=int(self.minutes * f), + seconds=int(self.seconds * f), + microseconds=int(self.microseconds * f), + leapdays=self.leapdays, + year=self.year, + month=self.month, + day=self.day, + weekday=self.weekday, + hour=self.hour, + minute=self.minute, + second=self.second, + microsecond=self.microsecond) + + __rmul__ = __mul__ + + def __eq__(self, other): + if not isinstance(other, relativedelta): + return NotImplemented + if self.weekday or other.weekday: + if not self.weekday or not other.weekday: + return False + if self.weekday.weekday != other.weekday.weekday: + return False + n1, n2 = self.weekday.n, other.weekday.n + if n1 != n2 and not ((not n1 or n1 == 1) and (not n2 or n2 == 1)): + return False + return (self.years == other.years and + self.months == other.months and + self.days == other.days and + self.hours == other.hours and + self.minutes == other.minutes and + self.seconds == other.seconds and + self.microseconds == other.microseconds and + self.leapdays == other.leapdays and + self.year == other.year and + self.month == other.month and + self.day == other.day and + self.hour == other.hour and + self.minute == other.minute and + self.second == other.second and + self.microsecond == other.microsecond) + + def __hash__(self): + return hash(( + self.weekday, + self.years, + self.months, + self.days, + self.hours, + self.minutes, + self.seconds, + self.microseconds, + self.leapdays, + self.year, + self.month, + self.day, + self.hour, + self.minute, + self.second, + self.microsecond, + )) + + def __ne__(self, other): + return not self.__eq__(other) + + def __div__(self, other): + try: + reciprocal = 1 / float(other) + except TypeError: + return NotImplemented + + return self.__mul__(reciprocal) + + __truediv__ = __div__ + + def __repr__(self): + l = [] + for attr in ["years", "months", "days", "leapdays", + "hours", "minutes", "seconds", "microseconds"]: + value = getattr(self, attr) + if value: + l.append("{attr}={value:+g}".format(attr=attr, value=value)) + for attr in ["year", "month", "day", "weekday", + "hour", "minute", "second", "microsecond"]: + value = getattr(self, attr) + if value is not None: + l.append("{attr}={value}".format(attr=attr, value=repr(value))) + return "{classname}({attrs})".format(classname=self.__class__.__name__, + attrs=", ".join(l)) + + +def _sign(x): + return int(copysign(1, x)) + +# vim:ts=4:sw=4:et diff --git a/venv/lib/python3.11/site-packages/dateutil/rrule.py b/venv/lib/python3.11/site-packages/dateutil/rrule.py new file mode 100644 index 0000000000000000000000000000000000000000..571a0d2bc886a7ea4c06196b2f52e740c2ed6e9f --- /dev/null +++ b/venv/lib/python3.11/site-packages/dateutil/rrule.py @@ -0,0 +1,1737 @@ +# -*- coding: utf-8 -*- +""" +The rrule module offers a small, complete, and very fast, implementation of +the recurrence rules documented in the +`iCalendar RFC `_, +including support for caching of results. +""" +import calendar +import datetime +import heapq +import itertools +import re +import sys +from functools import wraps +# For warning about deprecation of until and count +from warnings import warn + +from six import advance_iterator, integer_types + +from six.moves import _thread, range + +from ._common import weekday as weekdaybase + +try: + from math import gcd +except ImportError: + from fractions import gcd + +__all__ = ["rrule", "rruleset", "rrulestr", + "YEARLY", "MONTHLY", "WEEKLY", "DAILY", + "HOURLY", "MINUTELY", "SECONDLY", + "MO", "TU", "WE", "TH", "FR", "SA", "SU"] + +# Every mask is 7 days longer to handle cross-year weekly periods. +M366MASK = tuple([1]*31+[2]*29+[3]*31+[4]*30+[5]*31+[6]*30 + + [7]*31+[8]*31+[9]*30+[10]*31+[11]*30+[12]*31+[1]*7) +M365MASK = list(M366MASK) +M29, M30, M31 = list(range(1, 30)), list(range(1, 31)), list(range(1, 32)) +MDAY366MASK = tuple(M31+M29+M31+M30+M31+M30+M31+M31+M30+M31+M30+M31+M31[:7]) +MDAY365MASK = list(MDAY366MASK) +M29, M30, M31 = list(range(-29, 0)), list(range(-30, 0)), list(range(-31, 0)) +NMDAY366MASK = tuple(M31+M29+M31+M30+M31+M30+M31+M31+M30+M31+M30+M31+M31[:7]) +NMDAY365MASK = list(NMDAY366MASK) +M366RANGE = (0, 31, 60, 91, 121, 152, 182, 213, 244, 274, 305, 335, 366) +M365RANGE = (0, 31, 59, 90, 120, 151, 181, 212, 243, 273, 304, 334, 365) +WDAYMASK = [0, 1, 2, 3, 4, 5, 6]*55 +del M29, M30, M31, M365MASK[59], MDAY365MASK[59], NMDAY365MASK[31] +MDAY365MASK = tuple(MDAY365MASK) +M365MASK = tuple(M365MASK) + +FREQNAMES = ['YEARLY', 'MONTHLY', 'WEEKLY', 'DAILY', 'HOURLY', 'MINUTELY', 'SECONDLY'] + +(YEARLY, + MONTHLY, + WEEKLY, + DAILY, + HOURLY, + MINUTELY, + SECONDLY) = list(range(7)) + +# Imported on demand. +easter = None +parser = None + + +class weekday(weekdaybase): + """ + This version of weekday does not allow n = 0. + """ + def __init__(self, wkday, n=None): + if n == 0: + raise ValueError("Can't create weekday with n==0") + + super(weekday, self).__init__(wkday, n) + + +MO, TU, WE, TH, FR, SA, SU = weekdays = tuple(weekday(x) for x in range(7)) + + +def _invalidates_cache(f): + """ + Decorator for rruleset methods which may invalidate the + cached length. + """ + @wraps(f) + def inner_func(self, *args, **kwargs): + rv = f(self, *args, **kwargs) + self._invalidate_cache() + return rv + + return inner_func + + +class rrulebase(object): + def __init__(self, cache=False): + if cache: + self._cache = [] + self._cache_lock = _thread.allocate_lock() + self._invalidate_cache() + else: + self._cache = None + self._cache_complete = False + self._len = None + + def __iter__(self): + if self._cache_complete: + return iter(self._cache) + elif self._cache is None: + return self._iter() + else: + return self._iter_cached() + + def _invalidate_cache(self): + if self._cache is not None: + self._cache = [] + self._cache_complete = False + self._cache_gen = self._iter() + + if self._cache_lock.locked(): + self._cache_lock.release() + + self._len = None + + def _iter_cached(self): + i = 0 + gen = self._cache_gen + cache = self._cache + acquire = self._cache_lock.acquire + release = self._cache_lock.release + while gen: + if i == len(cache): + acquire() + if self._cache_complete: + break + try: + for j in range(10): + cache.append(advance_iterator(gen)) + except StopIteration: + self._cache_gen = gen = None + self._cache_complete = True + break + release() + yield cache[i] + i += 1 + while i < self._len: + yield cache[i] + i += 1 + + def __getitem__(self, item): + if self._cache_complete: + return self._cache[item] + elif isinstance(item, slice): + if item.step and item.step < 0: + return list(iter(self))[item] + else: + return list(itertools.islice(self, + item.start or 0, + item.stop or sys.maxsize, + item.step or 1)) + elif item >= 0: + gen = iter(self) + try: + for i in range(item+1): + res = advance_iterator(gen) + except StopIteration: + raise IndexError + return res + else: + return list(iter(self))[item] + + def __contains__(self, item): + if self._cache_complete: + return item in self._cache + else: + for i in self: + if i == item: + return True + elif i > item: + return False + return False + + # __len__() introduces a large performance penalty. + def count(self): + """ Returns the number of recurrences in this set. It will have go + through the whole recurrence, if this hasn't been done before. """ + if self._len is None: + for x in self: + pass + return self._len + + def before(self, dt, inc=False): + """ Returns the last recurrence before the given datetime instance. The + inc keyword defines what happens if dt is an occurrence. With + inc=True, if dt itself is an occurrence, it will be returned. """ + if self._cache_complete: + gen = self._cache + else: + gen = self + last = None + if inc: + for i in gen: + if i > dt: + break + last = i + else: + for i in gen: + if i >= dt: + break + last = i + return last + + def after(self, dt, inc=False): + """ Returns the first recurrence after the given datetime instance. The + inc keyword defines what happens if dt is an occurrence. With + inc=True, if dt itself is an occurrence, it will be returned. """ + if self._cache_complete: + gen = self._cache + else: + gen = self + if inc: + for i in gen: + if i >= dt: + return i + else: + for i in gen: + if i > dt: + return i + return None + + def xafter(self, dt, count=None, inc=False): + """ + Generator which yields up to `count` recurrences after the given + datetime instance, equivalent to `after`. + + :param dt: + The datetime at which to start generating recurrences. + + :param count: + The maximum number of recurrences to generate. If `None` (default), + dates are generated until the recurrence rule is exhausted. + + :param inc: + If `dt` is an instance of the rule and `inc` is `True`, it is + included in the output. + + :yields: Yields a sequence of `datetime` objects. + """ + + if self._cache_complete: + gen = self._cache + else: + gen = self + + # Select the comparison function + if inc: + comp = lambda dc, dtc: dc >= dtc + else: + comp = lambda dc, dtc: dc > dtc + + # Generate dates + n = 0 + for d in gen: + if comp(d, dt): + if count is not None: + n += 1 + if n > count: + break + + yield d + + def between(self, after, before, inc=False, count=1): + """ Returns all the occurrences of the rrule between after and before. + The inc keyword defines what happens if after and/or before are + themselves occurrences. With inc=True, they will be included in the + list, if they are found in the recurrence set. """ + if self._cache_complete: + gen = self._cache + else: + gen = self + started = False + l = [] + if inc: + for i in gen: + if i > before: + break + elif not started: + if i >= after: + started = True + l.append(i) + else: + l.append(i) + else: + for i in gen: + if i >= before: + break + elif not started: + if i > after: + started = True + l.append(i) + else: + l.append(i) + return l + + +class rrule(rrulebase): + """ + That's the base of the rrule operation. It accepts all the keywords + defined in the RFC as its constructor parameters (except byday, + which was renamed to byweekday) and more. The constructor prototype is:: + + rrule(freq) + + Where freq must be one of YEARLY, MONTHLY, WEEKLY, DAILY, HOURLY, MINUTELY, + or SECONDLY. + + .. note:: + Per RFC section 3.3.10, recurrence instances falling on invalid dates + and times are ignored rather than coerced: + + Recurrence rules may generate recurrence instances with an invalid + date (e.g., February 30) or nonexistent local time (e.g., 1:30 AM + on a day where the local time is moved forward by an hour at 1:00 + AM). Such recurrence instances MUST be ignored and MUST NOT be + counted as part of the recurrence set. + + This can lead to possibly surprising behavior when, for example, the + start date occurs at the end of the month: + + >>> from dateutil.rrule import rrule, MONTHLY + >>> from datetime import datetime + >>> start_date = datetime(2014, 12, 31) + >>> list(rrule(freq=MONTHLY, count=4, dtstart=start_date)) + ... # doctest: +NORMALIZE_WHITESPACE + [datetime.datetime(2014, 12, 31, 0, 0), + datetime.datetime(2015, 1, 31, 0, 0), + datetime.datetime(2015, 3, 31, 0, 0), + datetime.datetime(2015, 5, 31, 0, 0)] + + Additionally, it supports the following keyword arguments: + + :param dtstart: + The recurrence start. Besides being the base for the recurrence, + missing parameters in the final recurrence instances will also be + extracted from this date. If not given, datetime.now() will be used + instead. + :param interval: + The interval between each freq iteration. For example, when using + YEARLY, an interval of 2 means once every two years, but with HOURLY, + it means once every two hours. The default interval is 1. + :param wkst: + The week start day. Must be one of the MO, TU, WE constants, or an + integer, specifying the first day of the week. This will affect + recurrences based on weekly periods. The default week start is got + from calendar.firstweekday(), and may be modified by + calendar.setfirstweekday(). + :param count: + If given, this determines how many occurrences will be generated. + + .. note:: + As of version 2.5.0, the use of the keyword ``until`` in conjunction + with ``count`` is deprecated, to make sure ``dateutil`` is fully + compliant with `RFC-5545 Sec. 3.3.10 `_. Therefore, ``until`` and ``count`` + **must not** occur in the same call to ``rrule``. + :param until: + If given, this must be a datetime instance specifying the upper-bound + limit of the recurrence. The last recurrence in the rule is the greatest + datetime that is less than or equal to the value specified in the + ``until`` parameter. + + .. note:: + As of version 2.5.0, the use of the keyword ``until`` in conjunction + with ``count`` is deprecated, to make sure ``dateutil`` is fully + compliant with `RFC-5545 Sec. 3.3.10 `_. Therefore, ``until`` and ``count`` + **must not** occur in the same call to ``rrule``. + :param bysetpos: + If given, it must be either an integer, or a sequence of integers, + positive or negative. Each given integer will specify an occurrence + number, corresponding to the nth occurrence of the rule inside the + frequency period. For example, a bysetpos of -1 if combined with a + MONTHLY frequency, and a byweekday of (MO, TU, WE, TH, FR), will + result in the last work day of every month. + :param bymonth: + If given, it must be either an integer, or a sequence of integers, + meaning the months to apply the recurrence to. + :param bymonthday: + If given, it must be either an integer, or a sequence of integers, + meaning the month days to apply the recurrence to. + :param byyearday: + If given, it must be either an integer, or a sequence of integers, + meaning the year days to apply the recurrence to. + :param byeaster: + If given, it must be either an integer, or a sequence of integers, + positive or negative. Each integer will define an offset from the + Easter Sunday. Passing the offset 0 to byeaster will yield the Easter + Sunday itself. This is an extension to the RFC specification. + :param byweekno: + If given, it must be either an integer, or a sequence of integers, + meaning the week numbers to apply the recurrence to. Week numbers + have the meaning described in ISO8601, that is, the first week of + the year is that containing at least four days of the new year. + :param byweekday: + If given, it must be either an integer (0 == MO), a sequence of + integers, one of the weekday constants (MO, TU, etc), or a sequence + of these constants. When given, these variables will define the + weekdays where the recurrence will be applied. It's also possible to + use an argument n for the weekday instances, which will mean the nth + occurrence of this weekday in the period. For example, with MONTHLY, + or with YEARLY and BYMONTH, using FR(+1) in byweekday will specify the + first friday of the month where the recurrence happens. Notice that in + the RFC documentation, this is specified as BYDAY, but was renamed to + avoid the ambiguity of that keyword. + :param byhour: + If given, it must be either an integer, or a sequence of integers, + meaning the hours to apply the recurrence to. + :param byminute: + If given, it must be either an integer, or a sequence of integers, + meaning the minutes to apply the recurrence to. + :param bysecond: + If given, it must be either an integer, or a sequence of integers, + meaning the seconds to apply the recurrence to. + :param cache: + If given, it must be a boolean value specifying to enable or disable + caching of results. If you will use the same rrule instance multiple + times, enabling caching will improve the performance considerably. + """ + def __init__(self, freq, dtstart=None, + interval=1, wkst=None, count=None, until=None, bysetpos=None, + bymonth=None, bymonthday=None, byyearday=None, byeaster=None, + byweekno=None, byweekday=None, + byhour=None, byminute=None, bysecond=None, + cache=False): + super(rrule, self).__init__(cache) + global easter + if not dtstart: + if until and until.tzinfo: + dtstart = datetime.datetime.now(tz=until.tzinfo).replace(microsecond=0) + else: + dtstart = datetime.datetime.now().replace(microsecond=0) + elif not isinstance(dtstart, datetime.datetime): + dtstart = datetime.datetime.fromordinal(dtstart.toordinal()) + else: + dtstart = dtstart.replace(microsecond=0) + self._dtstart = dtstart + self._tzinfo = dtstart.tzinfo + self._freq = freq + self._interval = interval + self._count = count + + # Cache the original byxxx rules, if they are provided, as the _byxxx + # attributes do not necessarily map to the inputs, and this can be + # a problem in generating the strings. Only store things if they've + # been supplied (the string retrieval will just use .get()) + self._original_rule = {} + + if until and not isinstance(until, datetime.datetime): + until = datetime.datetime.fromordinal(until.toordinal()) + self._until = until + + if self._dtstart and self._until: + if (self._dtstart.tzinfo is not None) != (self._until.tzinfo is not None): + # According to RFC5545 Section 3.3.10: + # https://tools.ietf.org/html/rfc5545#section-3.3.10 + # + # > If the "DTSTART" property is specified as a date with UTC + # > time or a date with local time and time zone reference, + # > then the UNTIL rule part MUST be specified as a date with + # > UTC time. + raise ValueError( + 'RRULE UNTIL values must be specified in UTC when DTSTART ' + 'is timezone-aware' + ) + + if count is not None and until: + warn("Using both 'count' and 'until' is inconsistent with RFC 5545" + " and has been deprecated in dateutil. Future versions will " + "raise an error.", DeprecationWarning) + + if wkst is None: + self._wkst = calendar.firstweekday() + elif isinstance(wkst, integer_types): + self._wkst = wkst + else: + self._wkst = wkst.weekday + + if bysetpos is None: + self._bysetpos = None + elif isinstance(bysetpos, integer_types): + if bysetpos == 0 or not (-366 <= bysetpos <= 366): + raise ValueError("bysetpos must be between 1 and 366, " + "or between -366 and -1") + self._bysetpos = (bysetpos,) + else: + self._bysetpos = tuple(bysetpos) + for pos in self._bysetpos: + if pos == 0 or not (-366 <= pos <= 366): + raise ValueError("bysetpos must be between 1 and 366, " + "or between -366 and -1") + + if self._bysetpos: + self._original_rule['bysetpos'] = self._bysetpos + + if (byweekno is None and byyearday is None and bymonthday is None and + byweekday is None and byeaster is None): + if freq == YEARLY: + if bymonth is None: + bymonth = dtstart.month + self._original_rule['bymonth'] = None + bymonthday = dtstart.day + self._original_rule['bymonthday'] = None + elif freq == MONTHLY: + bymonthday = dtstart.day + self._original_rule['bymonthday'] = None + elif freq == WEEKLY: + byweekday = dtstart.weekday() + self._original_rule['byweekday'] = None + + # bymonth + if bymonth is None: + self._bymonth = None + else: + if isinstance(bymonth, integer_types): + bymonth = (bymonth,) + + self._bymonth = tuple(sorted(set(bymonth))) + + if 'bymonth' not in self._original_rule: + self._original_rule['bymonth'] = self._bymonth + + # byyearday + if byyearday is None: + self._byyearday = None + else: + if isinstance(byyearday, integer_types): + byyearday = (byyearday,) + + self._byyearday = tuple(sorted(set(byyearday))) + self._original_rule['byyearday'] = self._byyearday + + # byeaster + if byeaster is not None: + if not easter: + from dateutil import easter + if isinstance(byeaster, integer_types): + self._byeaster = (byeaster,) + else: + self._byeaster = tuple(sorted(byeaster)) + + self._original_rule['byeaster'] = self._byeaster + else: + self._byeaster = None + + # bymonthday + if bymonthday is None: + self._bymonthday = () + self._bynmonthday = () + else: + if isinstance(bymonthday, integer_types): + bymonthday = (bymonthday,) + + bymonthday = set(bymonthday) # Ensure it's unique + + self._bymonthday = tuple(sorted(x for x in bymonthday if x > 0)) + self._bynmonthday = tuple(sorted(x for x in bymonthday if x < 0)) + + # Storing positive numbers first, then negative numbers + if 'bymonthday' not in self._original_rule: + self._original_rule['bymonthday'] = tuple( + itertools.chain(self._bymonthday, self._bynmonthday)) + + # byweekno + if byweekno is None: + self._byweekno = None + else: + if isinstance(byweekno, integer_types): + byweekno = (byweekno,) + + self._byweekno = tuple(sorted(set(byweekno))) + + self._original_rule['byweekno'] = self._byweekno + + # byweekday / bynweekday + if byweekday is None: + self._byweekday = None + self._bynweekday = None + else: + # If it's one of the valid non-sequence types, convert to a + # single-element sequence before the iterator that builds the + # byweekday set. + if isinstance(byweekday, integer_types) or hasattr(byweekday, "n"): + byweekday = (byweekday,) + + self._byweekday = set() + self._bynweekday = set() + for wday in byweekday: + if isinstance(wday, integer_types): + self._byweekday.add(wday) + elif not wday.n or freq > MONTHLY: + self._byweekday.add(wday.weekday) + else: + self._bynweekday.add((wday.weekday, wday.n)) + + if not self._byweekday: + self._byweekday = None + elif not self._bynweekday: + self._bynweekday = None + + if self._byweekday is not None: + self._byweekday = tuple(sorted(self._byweekday)) + orig_byweekday = [weekday(x) for x in self._byweekday] + else: + orig_byweekday = () + + if self._bynweekday is not None: + self._bynweekday = tuple(sorted(self._bynweekday)) + orig_bynweekday = [weekday(*x) for x in self._bynweekday] + else: + orig_bynweekday = () + + if 'byweekday' not in self._original_rule: + self._original_rule['byweekday'] = tuple(itertools.chain( + orig_byweekday, orig_bynweekday)) + + # byhour + if byhour is None: + if freq < HOURLY: + self._byhour = {dtstart.hour} + else: + self._byhour = None + else: + if isinstance(byhour, integer_types): + byhour = (byhour,) + + if freq == HOURLY: + self._byhour = self.__construct_byset(start=dtstart.hour, + byxxx=byhour, + base=24) + else: + self._byhour = set(byhour) + + self._byhour = tuple(sorted(self._byhour)) + self._original_rule['byhour'] = self._byhour + + # byminute + if byminute is None: + if freq < MINUTELY: + self._byminute = {dtstart.minute} + else: + self._byminute = None + else: + if isinstance(byminute, integer_types): + byminute = (byminute,) + + if freq == MINUTELY: + self._byminute = self.__construct_byset(start=dtstart.minute, + byxxx=byminute, + base=60) + else: + self._byminute = set(byminute) + + self._byminute = tuple(sorted(self._byminute)) + self._original_rule['byminute'] = self._byminute + + # bysecond + if bysecond is None: + if freq < SECONDLY: + self._bysecond = ((dtstart.second,)) + else: + self._bysecond = None + else: + if isinstance(bysecond, integer_types): + bysecond = (bysecond,) + + self._bysecond = set(bysecond) + + if freq == SECONDLY: + self._bysecond = self.__construct_byset(start=dtstart.second, + byxxx=bysecond, + base=60) + else: + self._bysecond = set(bysecond) + + self._bysecond = tuple(sorted(self._bysecond)) + self._original_rule['bysecond'] = self._bysecond + + if self._freq >= HOURLY: + self._timeset = None + else: + self._timeset = [] + for hour in self._byhour: + for minute in self._byminute: + for second in self._bysecond: + self._timeset.append( + datetime.time(hour, minute, second, + tzinfo=self._tzinfo)) + self._timeset.sort() + self._timeset = tuple(self._timeset) + + def __str__(self): + """ + Output a string that would generate this RRULE if passed to rrulestr. + This is mostly compatible with RFC5545, except for the + dateutil-specific extension BYEASTER. + """ + + output = [] + h, m, s = [None] * 3 + if self._dtstart: + output.append(self._dtstart.strftime('DTSTART:%Y%m%dT%H%M%S')) + h, m, s = self._dtstart.timetuple()[3:6] + + parts = ['FREQ=' + FREQNAMES[self._freq]] + if self._interval != 1: + parts.append('INTERVAL=' + str(self._interval)) + + if self._wkst: + parts.append('WKST=' + repr(weekday(self._wkst))[0:2]) + + if self._count is not None: + parts.append('COUNT=' + str(self._count)) + + if self._until: + parts.append(self._until.strftime('UNTIL=%Y%m%dT%H%M%S')) + + if self._original_rule.get('byweekday') is not None: + # The str() method on weekday objects doesn't generate + # RFC5545-compliant strings, so we should modify that. + original_rule = dict(self._original_rule) + wday_strings = [] + for wday in original_rule['byweekday']: + if wday.n: + wday_strings.append('{n:+d}{wday}'.format( + n=wday.n, + wday=repr(wday)[0:2])) + else: + wday_strings.append(repr(wday)) + + original_rule['byweekday'] = wday_strings + else: + original_rule = self._original_rule + + partfmt = '{name}={vals}' + for name, key in [('BYSETPOS', 'bysetpos'), + ('BYMONTH', 'bymonth'), + ('BYMONTHDAY', 'bymonthday'), + ('BYYEARDAY', 'byyearday'), + ('BYWEEKNO', 'byweekno'), + ('BYDAY', 'byweekday'), + ('BYHOUR', 'byhour'), + ('BYMINUTE', 'byminute'), + ('BYSECOND', 'bysecond'), + ('BYEASTER', 'byeaster')]: + value = original_rule.get(key) + if value: + parts.append(partfmt.format(name=name, vals=(','.join(str(v) + for v in value)))) + + output.append('RRULE:' + ';'.join(parts)) + return '\n'.join(output) + + def replace(self, **kwargs): + """Return new rrule with same attributes except for those attributes given new + values by whichever keyword arguments are specified.""" + new_kwargs = {"interval": self._interval, + "count": self._count, + "dtstart": self._dtstart, + "freq": self._freq, + "until": self._until, + "wkst": self._wkst, + "cache": False if self._cache is None else True } + new_kwargs.update(self._original_rule) + new_kwargs.update(kwargs) + return rrule(**new_kwargs) + + def _iter(self): + year, month, day, hour, minute, second, weekday, yearday, _ = \ + self._dtstart.timetuple() + + # Some local variables to speed things up a bit + freq = self._freq + interval = self._interval + wkst = self._wkst + until = self._until + bymonth = self._bymonth + byweekno = self._byweekno + byyearday = self._byyearday + byweekday = self._byweekday + byeaster = self._byeaster + bymonthday = self._bymonthday + bynmonthday = self._bynmonthday + bysetpos = self._bysetpos + byhour = self._byhour + byminute = self._byminute + bysecond = self._bysecond + + ii = _iterinfo(self) + ii.rebuild(year, month) + + getdayset = {YEARLY: ii.ydayset, + MONTHLY: ii.mdayset, + WEEKLY: ii.wdayset, + DAILY: ii.ddayset, + HOURLY: ii.ddayset, + MINUTELY: ii.ddayset, + SECONDLY: ii.ddayset}[freq] + + if freq < HOURLY: + timeset = self._timeset + else: + gettimeset = {HOURLY: ii.htimeset, + MINUTELY: ii.mtimeset, + SECONDLY: ii.stimeset}[freq] + if ((freq >= HOURLY and + self._byhour and hour not in self._byhour) or + (freq >= MINUTELY and + self._byminute and minute not in self._byminute) or + (freq >= SECONDLY and + self._bysecond and second not in self._bysecond)): + timeset = () + else: + timeset = gettimeset(hour, minute, second) + + total = 0 + count = self._count + while True: + # Get dayset with the right frequency + dayset, start, end = getdayset(year, month, day) + + # Do the "hard" work ;-) + filtered = False + for i in dayset[start:end]: + if ((bymonth and ii.mmask[i] not in bymonth) or + (byweekno and not ii.wnomask[i]) or + (byweekday and ii.wdaymask[i] not in byweekday) or + (ii.nwdaymask and not ii.nwdaymask[i]) or + (byeaster and not ii.eastermask[i]) or + ((bymonthday or bynmonthday) and + ii.mdaymask[i] not in bymonthday and + ii.nmdaymask[i] not in bynmonthday) or + (byyearday and + ((i < ii.yearlen and i+1 not in byyearday and + -ii.yearlen+i not in byyearday) or + (i >= ii.yearlen and i+1-ii.yearlen not in byyearday and + -ii.nextyearlen+i-ii.yearlen not in byyearday)))): + dayset[i] = None + filtered = True + + # Output results + if bysetpos and timeset: + poslist = [] + for pos in bysetpos: + if pos < 0: + daypos, timepos = divmod(pos, len(timeset)) + else: + daypos, timepos = divmod(pos-1, len(timeset)) + try: + i = [x for x in dayset[start:end] + if x is not None][daypos] + time = timeset[timepos] + except IndexError: + pass + else: + date = datetime.date.fromordinal(ii.yearordinal+i) + res = datetime.datetime.combine(date, time) + if res not in poslist: + poslist.append(res) + poslist.sort() + for res in poslist: + if until and res > until: + self._len = total + return + elif res >= self._dtstart: + if count is not None: + count -= 1 + if count < 0: + self._len = total + return + total += 1 + yield res + else: + for i in dayset[start:end]: + if i is not None: + date = datetime.date.fromordinal(ii.yearordinal + i) + for time in timeset: + res = datetime.datetime.combine(date, time) + if until and res > until: + self._len = total + return + elif res >= self._dtstart: + if count is not None: + count -= 1 + if count < 0: + self._len = total + return + + total += 1 + yield res + + # Handle frequency and interval + fixday = False + if freq == YEARLY: + year += interval + if year > datetime.MAXYEAR: + self._len = total + return + ii.rebuild(year, month) + elif freq == MONTHLY: + month += interval + if month > 12: + div, mod = divmod(month, 12) + month = mod + year += div + if month == 0: + month = 12 + year -= 1 + if year > datetime.MAXYEAR: + self._len = total + return + ii.rebuild(year, month) + elif freq == WEEKLY: + if wkst > weekday: + day += -(weekday+1+(6-wkst))+self._interval*7 + else: + day += -(weekday-wkst)+self._interval*7 + weekday = wkst + fixday = True + elif freq == DAILY: + day += interval + fixday = True + elif freq == HOURLY: + if filtered: + # Jump to one iteration before next day + hour += ((23-hour)//interval)*interval + + if byhour: + ndays, hour = self.__mod_distance(value=hour, + byxxx=self._byhour, + base=24) + else: + ndays, hour = divmod(hour+interval, 24) + + if ndays: + day += ndays + fixday = True + + timeset = gettimeset(hour, minute, second) + elif freq == MINUTELY: + if filtered: + # Jump to one iteration before next day + minute += ((1439-(hour*60+minute))//interval)*interval + + valid = False + rep_rate = (24*60) + for j in range(rep_rate // gcd(interval, rep_rate)): + if byminute: + nhours, minute = \ + self.__mod_distance(value=minute, + byxxx=self._byminute, + base=60) + else: + nhours, minute = divmod(minute+interval, 60) + + div, hour = divmod(hour+nhours, 24) + if div: + day += div + fixday = True + filtered = False + + if not byhour or hour in byhour: + valid = True + break + + if not valid: + raise ValueError('Invalid combination of interval and ' + + 'byhour resulting in empty rule.') + + timeset = gettimeset(hour, minute, second) + elif freq == SECONDLY: + if filtered: + # Jump to one iteration before next day + second += (((86399 - (hour * 3600 + minute * 60 + second)) + // interval) * interval) + + rep_rate = (24 * 3600) + valid = False + for j in range(0, rep_rate // gcd(interval, rep_rate)): + if bysecond: + nminutes, second = \ + self.__mod_distance(value=second, + byxxx=self._bysecond, + base=60) + else: + nminutes, second = divmod(second+interval, 60) + + div, minute = divmod(minute+nminutes, 60) + if div: + hour += div + div, hour = divmod(hour, 24) + if div: + day += div + fixday = True + + if ((not byhour or hour in byhour) and + (not byminute or minute in byminute) and + (not bysecond or second in bysecond)): + valid = True + break + + if not valid: + raise ValueError('Invalid combination of interval, ' + + 'byhour and byminute resulting in empty' + + ' rule.') + + timeset = gettimeset(hour, minute, second) + + if fixday and day > 28: + daysinmonth = calendar.monthrange(year, month)[1] + if day > daysinmonth: + while day > daysinmonth: + day -= daysinmonth + month += 1 + if month == 13: + month = 1 + year += 1 + if year > datetime.MAXYEAR: + self._len = total + return + daysinmonth = calendar.monthrange(year, month)[1] + ii.rebuild(year, month) + + def __construct_byset(self, start, byxxx, base): + """ + If a `BYXXX` sequence is passed to the constructor at the same level as + `FREQ` (e.g. `FREQ=HOURLY,BYHOUR={2,4,7},INTERVAL=3`), there are some + specifications which cannot be reached given some starting conditions. + + This occurs whenever the interval is not coprime with the base of a + given unit and the difference between the starting position and the + ending position is not coprime with the greatest common denominator + between the interval and the base. For example, with a FREQ of hourly + starting at 17:00 and an interval of 4, the only valid values for + BYHOUR would be {21, 1, 5, 9, 13, 17}, because 4 and 24 are not + coprime. + + :param start: + Specifies the starting position. + :param byxxx: + An iterable containing the list of allowed values. + :param base: + The largest allowable value for the specified frequency (e.g. + 24 hours, 60 minutes). + + This does not preserve the type of the iterable, returning a set, since + the values should be unique and the order is irrelevant, this will + speed up later lookups. + + In the event of an empty set, raises a :exception:`ValueError`, as this + results in an empty rrule. + """ + + cset = set() + + # Support a single byxxx value. + if isinstance(byxxx, integer_types): + byxxx = (byxxx, ) + + for num in byxxx: + i_gcd = gcd(self._interval, base) + # Use divmod rather than % because we need to wrap negative nums. + if i_gcd == 1 or divmod(num - start, i_gcd)[1] == 0: + cset.add(num) + + if len(cset) == 0: + raise ValueError("Invalid rrule byxxx generates an empty set.") + + return cset + + def __mod_distance(self, value, byxxx, base): + """ + Calculates the next value in a sequence where the `FREQ` parameter is + specified along with a `BYXXX` parameter at the same "level" + (e.g. `HOURLY` specified with `BYHOUR`). + + :param value: + The old value of the component. + :param byxxx: + The `BYXXX` set, which should have been generated by + `rrule._construct_byset`, or something else which checks that a + valid rule is present. + :param base: + The largest allowable value for the specified frequency (e.g. + 24 hours, 60 minutes). + + If a valid value is not found after `base` iterations (the maximum + number before the sequence would start to repeat), this raises a + :exception:`ValueError`, as no valid values were found. + + This returns a tuple of `divmod(n*interval, base)`, where `n` is the + smallest number of `interval` repetitions until the next specified + value in `byxxx` is found. + """ + accumulator = 0 + for ii in range(1, base + 1): + # Using divmod() over % to account for negative intervals + div, value = divmod(value + self._interval, base) + accumulator += div + if value in byxxx: + return (accumulator, value) + + +class _iterinfo(object): + __slots__ = ["rrule", "lastyear", "lastmonth", + "yearlen", "nextyearlen", "yearordinal", "yearweekday", + "mmask", "mrange", "mdaymask", "nmdaymask", + "wdaymask", "wnomask", "nwdaymask", "eastermask"] + + def __init__(self, rrule): + for attr in self.__slots__: + setattr(self, attr, None) + self.rrule = rrule + + def rebuild(self, year, month): + # Every mask is 7 days longer to handle cross-year weekly periods. + rr = self.rrule + if year != self.lastyear: + self.yearlen = 365 + calendar.isleap(year) + self.nextyearlen = 365 + calendar.isleap(year + 1) + firstyday = datetime.date(year, 1, 1) + self.yearordinal = firstyday.toordinal() + self.yearweekday = firstyday.weekday() + + wday = datetime.date(year, 1, 1).weekday() + if self.yearlen == 365: + self.mmask = M365MASK + self.mdaymask = MDAY365MASK + self.nmdaymask = NMDAY365MASK + self.wdaymask = WDAYMASK[wday:] + self.mrange = M365RANGE + else: + self.mmask = M366MASK + self.mdaymask = MDAY366MASK + self.nmdaymask = NMDAY366MASK + self.wdaymask = WDAYMASK[wday:] + self.mrange = M366RANGE + + if not rr._byweekno: + self.wnomask = None + else: + self.wnomask = [0]*(self.yearlen+7) + # no1wkst = firstwkst = self.wdaymask.index(rr._wkst) + no1wkst = firstwkst = (7-self.yearweekday+rr._wkst) % 7 + if no1wkst >= 4: + no1wkst = 0 + # Number of days in the year, plus the days we got + # from last year. + wyearlen = self.yearlen+(self.yearweekday-rr._wkst) % 7 + else: + # Number of days in the year, minus the days we + # left in last year. + wyearlen = self.yearlen-no1wkst + div, mod = divmod(wyearlen, 7) + numweeks = div+mod//4 + for n in rr._byweekno: + if n < 0: + n += numweeks+1 + if not (0 < n <= numweeks): + continue + if n > 1: + i = no1wkst+(n-1)*7 + if no1wkst != firstwkst: + i -= 7-firstwkst + else: + i = no1wkst + for j in range(7): + self.wnomask[i] = 1 + i += 1 + if self.wdaymask[i] == rr._wkst: + break + if 1 in rr._byweekno: + # Check week number 1 of next year as well + # TODO: Check -numweeks for next year. + i = no1wkst+numweeks*7 + if no1wkst != firstwkst: + i -= 7-firstwkst + if i < self.yearlen: + # If week starts in next year, we + # don't care about it. + for j in range(7): + self.wnomask[i] = 1 + i += 1 + if self.wdaymask[i] == rr._wkst: + break + if no1wkst: + # Check last week number of last year as + # well. If no1wkst is 0, either the year + # started on week start, or week number 1 + # got days from last year, so there are no + # days from last year's last week number in + # this year. + if -1 not in rr._byweekno: + lyearweekday = datetime.date(year-1, 1, 1).weekday() + lno1wkst = (7-lyearweekday+rr._wkst) % 7 + lyearlen = 365+calendar.isleap(year-1) + if lno1wkst >= 4: + lno1wkst = 0 + lnumweeks = 52+(lyearlen + + (lyearweekday-rr._wkst) % 7) % 7//4 + else: + lnumweeks = 52+(self.yearlen-no1wkst) % 7//4 + else: + lnumweeks = -1 + if lnumweeks in rr._byweekno: + for i in range(no1wkst): + self.wnomask[i] = 1 + + if (rr._bynweekday and (month != self.lastmonth or + year != self.lastyear)): + ranges = [] + if rr._freq == YEARLY: + if rr._bymonth: + for month in rr._bymonth: + ranges.append(self.mrange[month-1:month+1]) + else: + ranges = [(0, self.yearlen)] + elif rr._freq == MONTHLY: + ranges = [self.mrange[month-1:month+1]] + if ranges: + # Weekly frequency won't get here, so we may not + # care about cross-year weekly periods. + self.nwdaymask = [0]*self.yearlen + for first, last in ranges: + last -= 1 + for wday, n in rr._bynweekday: + if n < 0: + i = last+(n+1)*7 + i -= (self.wdaymask[i]-wday) % 7 + else: + i = first+(n-1)*7 + i += (7-self.wdaymask[i]+wday) % 7 + if first <= i <= last: + self.nwdaymask[i] = 1 + + if rr._byeaster: + self.eastermask = [0]*(self.yearlen+7) + eyday = easter.easter(year).toordinal()-self.yearordinal + for offset in rr._byeaster: + self.eastermask[eyday+offset] = 1 + + self.lastyear = year + self.lastmonth = month + + def ydayset(self, year, month, day): + return list(range(self.yearlen)), 0, self.yearlen + + def mdayset(self, year, month, day): + dset = [None]*self.yearlen + start, end = self.mrange[month-1:month+1] + for i in range(start, end): + dset[i] = i + return dset, start, end + + def wdayset(self, year, month, day): + # We need to handle cross-year weeks here. + dset = [None]*(self.yearlen+7) + i = datetime.date(year, month, day).toordinal()-self.yearordinal + start = i + for j in range(7): + dset[i] = i + i += 1 + # if (not (0 <= i < self.yearlen) or + # self.wdaymask[i] == self.rrule._wkst): + # This will cross the year boundary, if necessary. + if self.wdaymask[i] == self.rrule._wkst: + break + return dset, start, i + + def ddayset(self, year, month, day): + dset = [None] * self.yearlen + i = datetime.date(year, month, day).toordinal() - self.yearordinal + dset[i] = i + return dset, i, i + 1 + + def htimeset(self, hour, minute, second): + tset = [] + rr = self.rrule + for minute in rr._byminute: + for second in rr._bysecond: + tset.append(datetime.time(hour, minute, second, + tzinfo=rr._tzinfo)) + tset.sort() + return tset + + def mtimeset(self, hour, minute, second): + tset = [] + rr = self.rrule + for second in rr._bysecond: + tset.append(datetime.time(hour, minute, second, tzinfo=rr._tzinfo)) + tset.sort() + return tset + + def stimeset(self, hour, minute, second): + return (datetime.time(hour, minute, second, + tzinfo=self.rrule._tzinfo),) + + +class rruleset(rrulebase): + """ The rruleset type allows more complex recurrence setups, mixing + multiple rules, dates, exclusion rules, and exclusion dates. The type + constructor takes the following keyword arguments: + + :param cache: If True, caching of results will be enabled, improving + performance of multiple queries considerably. """ + + class _genitem(object): + def __init__(self, genlist, gen): + try: + self.dt = advance_iterator(gen) + genlist.append(self) + except StopIteration: + pass + self.genlist = genlist + self.gen = gen + + def __next__(self): + try: + self.dt = advance_iterator(self.gen) + except StopIteration: + if self.genlist[0] is self: + heapq.heappop(self.genlist) + else: + self.genlist.remove(self) + heapq.heapify(self.genlist) + + next = __next__ + + def __lt__(self, other): + return self.dt < other.dt + + def __gt__(self, other): + return self.dt > other.dt + + def __eq__(self, other): + return self.dt == other.dt + + def __ne__(self, other): + return self.dt != other.dt + + def __init__(self, cache=False): + super(rruleset, self).__init__(cache) + self._rrule = [] + self._rdate = [] + self._exrule = [] + self._exdate = [] + + @_invalidates_cache + def rrule(self, rrule): + """ Include the given :py:class:`rrule` instance in the recurrence set + generation. """ + self._rrule.append(rrule) + + @_invalidates_cache + def rdate(self, rdate): + """ Include the given :py:class:`datetime` instance in the recurrence + set generation. """ + self._rdate.append(rdate) + + @_invalidates_cache + def exrule(self, exrule): + """ Include the given rrule instance in the recurrence set exclusion + list. Dates which are part of the given recurrence rules will not + be generated, even if some inclusive rrule or rdate matches them. + """ + self._exrule.append(exrule) + + @_invalidates_cache + def exdate(self, exdate): + """ Include the given datetime instance in the recurrence set + exclusion list. Dates included that way will not be generated, + even if some inclusive rrule or rdate matches them. """ + self._exdate.append(exdate) + + def _iter(self): + rlist = [] + self._rdate.sort() + self._genitem(rlist, iter(self._rdate)) + for gen in [iter(x) for x in self._rrule]: + self._genitem(rlist, gen) + exlist = [] + self._exdate.sort() + self._genitem(exlist, iter(self._exdate)) + for gen in [iter(x) for x in self._exrule]: + self._genitem(exlist, gen) + lastdt = None + total = 0 + heapq.heapify(rlist) + heapq.heapify(exlist) + while rlist: + ritem = rlist[0] + if not lastdt or lastdt != ritem.dt: + while exlist and exlist[0] < ritem: + exitem = exlist[0] + advance_iterator(exitem) + if exlist and exlist[0] is exitem: + heapq.heapreplace(exlist, exitem) + if not exlist or ritem != exlist[0]: + total += 1 + yield ritem.dt + lastdt = ritem.dt + advance_iterator(ritem) + if rlist and rlist[0] is ritem: + heapq.heapreplace(rlist, ritem) + self._len = total + + + + +class _rrulestr(object): + """ Parses a string representation of a recurrence rule or set of + recurrence rules. + + :param s: + Required, a string defining one or more recurrence rules. + + :param dtstart: + If given, used as the default recurrence start if not specified in the + rule string. + + :param cache: + If set ``True`` caching of results will be enabled, improving + performance of multiple queries considerably. + + :param unfold: + If set ``True`` indicates that a rule string is split over more + than one line and should be joined before processing. + + :param forceset: + If set ``True`` forces a :class:`dateutil.rrule.rruleset` to + be returned. + + :param compatible: + If set ``True`` forces ``unfold`` and ``forceset`` to be ``True``. + + :param ignoretz: + If set ``True``, time zones in parsed strings are ignored and a naive + :class:`datetime.datetime` object is returned. + + :param tzids: + If given, a callable or mapping used to retrieve a + :class:`datetime.tzinfo` from a string representation. + Defaults to :func:`dateutil.tz.gettz`. + + :param tzinfos: + Additional time zone names / aliases which may be present in a string + representation. See :func:`dateutil.parser.parse` for more + information. + + :return: + Returns a :class:`dateutil.rrule.rruleset` or + :class:`dateutil.rrule.rrule` + """ + + _freq_map = {"YEARLY": YEARLY, + "MONTHLY": MONTHLY, + "WEEKLY": WEEKLY, + "DAILY": DAILY, + "HOURLY": HOURLY, + "MINUTELY": MINUTELY, + "SECONDLY": SECONDLY} + + _weekday_map = {"MO": 0, "TU": 1, "WE": 2, "TH": 3, + "FR": 4, "SA": 5, "SU": 6} + + def _handle_int(self, rrkwargs, name, value, **kwargs): + rrkwargs[name.lower()] = int(value) + + def _handle_int_list(self, rrkwargs, name, value, **kwargs): + rrkwargs[name.lower()] = [int(x) for x in value.split(',')] + + _handle_INTERVAL = _handle_int + _handle_COUNT = _handle_int + _handle_BYSETPOS = _handle_int_list + _handle_BYMONTH = _handle_int_list + _handle_BYMONTHDAY = _handle_int_list + _handle_BYYEARDAY = _handle_int_list + _handle_BYEASTER = _handle_int_list + _handle_BYWEEKNO = _handle_int_list + _handle_BYHOUR = _handle_int_list + _handle_BYMINUTE = _handle_int_list + _handle_BYSECOND = _handle_int_list + + def _handle_FREQ(self, rrkwargs, name, value, **kwargs): + rrkwargs["freq"] = self._freq_map[value] + + def _handle_UNTIL(self, rrkwargs, name, value, **kwargs): + global parser + if not parser: + from dateutil import parser + try: + rrkwargs["until"] = parser.parse(value, + ignoretz=kwargs.get("ignoretz"), + tzinfos=kwargs.get("tzinfos")) + except ValueError: + raise ValueError("invalid until date") + + def _handle_WKST(self, rrkwargs, name, value, **kwargs): + rrkwargs["wkst"] = self._weekday_map[value] + + def _handle_BYWEEKDAY(self, rrkwargs, name, value, **kwargs): + """ + Two ways to specify this: +1MO or MO(+1) + """ + l = [] + for wday in value.split(','): + if '(' in wday: + # If it's of the form TH(+1), etc. + splt = wday.split('(') + w = splt[0] + n = int(splt[1][:-1]) + elif len(wday): + # If it's of the form +1MO + for i in range(len(wday)): + if wday[i] not in '+-0123456789': + break + n = wday[:i] or None + w = wday[i:] + if n: + n = int(n) + else: + raise ValueError("Invalid (empty) BYDAY specification.") + + l.append(weekdays[self._weekday_map[w]](n)) + rrkwargs["byweekday"] = l + + _handle_BYDAY = _handle_BYWEEKDAY + + def _parse_rfc_rrule(self, line, + dtstart=None, + cache=False, + ignoretz=False, + tzinfos=None): + if line.find(':') != -1: + name, value = line.split(':') + if name != "RRULE": + raise ValueError("unknown parameter name") + else: + value = line + rrkwargs = {} + for pair in value.split(';'): + name, value = pair.split('=') + name = name.upper() + value = value.upper() + try: + getattr(self, "_handle_"+name)(rrkwargs, name, value, + ignoretz=ignoretz, + tzinfos=tzinfos) + except AttributeError: + raise ValueError("unknown parameter '%s'" % name) + except (KeyError, ValueError): + raise ValueError("invalid '%s': %s" % (name, value)) + return rrule(dtstart=dtstart, cache=cache, **rrkwargs) + + def _parse_date_value(self, date_value, parms, rule_tzids, + ignoretz, tzids, tzinfos): + global parser + if not parser: + from dateutil import parser + + datevals = [] + value_found = False + TZID = None + + for parm in parms: + if parm.startswith("TZID="): + try: + tzkey = rule_tzids[parm.split('TZID=')[-1]] + except KeyError: + continue + if tzids is None: + from . import tz + tzlookup = tz.gettz + elif callable(tzids): + tzlookup = tzids + else: + tzlookup = getattr(tzids, 'get', None) + if tzlookup is None: + msg = ('tzids must be a callable, mapping, or None, ' + 'not %s' % tzids) + raise ValueError(msg) + + TZID = tzlookup(tzkey) + continue + + # RFC 5445 3.8.2.4: The VALUE parameter is optional, but may be found + # only once. + if parm not in {"VALUE=DATE-TIME", "VALUE=DATE"}: + raise ValueError("unsupported parm: " + parm) + else: + if value_found: + msg = ("Duplicate value parameter found in: " + parm) + raise ValueError(msg) + value_found = True + + for datestr in date_value.split(','): + date = parser.parse(datestr, ignoretz=ignoretz, tzinfos=tzinfos) + if TZID is not None: + if date.tzinfo is None: + date = date.replace(tzinfo=TZID) + else: + raise ValueError('DTSTART/EXDATE specifies multiple timezone') + datevals.append(date) + + return datevals + + def _parse_rfc(self, s, + dtstart=None, + cache=False, + unfold=False, + forceset=False, + compatible=False, + ignoretz=False, + tzids=None, + tzinfos=None): + global parser + if compatible: + forceset = True + unfold = True + + TZID_NAMES = dict(map( + lambda x: (x.upper(), x), + re.findall('TZID=(?P[^:]+):', s) + )) + s = s.upper() + if not s.strip(): + raise ValueError("empty string") + if unfold: + lines = s.splitlines() + i = 0 + while i < len(lines): + line = lines[i].rstrip() + if not line: + del lines[i] + elif i > 0 and line[0] == " ": + lines[i-1] += line[1:] + del lines[i] + else: + i += 1 + else: + lines = s.split() + if (not forceset and len(lines) == 1 and (s.find(':') == -1 or + s.startswith('RRULE:'))): + return self._parse_rfc_rrule(lines[0], cache=cache, + dtstart=dtstart, ignoretz=ignoretz, + tzinfos=tzinfos) + else: + rrulevals = [] + rdatevals = [] + exrulevals = [] + exdatevals = [] + for line in lines: + if not line: + continue + if line.find(':') == -1: + name = "RRULE" + value = line + else: + name, value = line.split(':', 1) + parms = name.split(';') + if not parms: + raise ValueError("empty property name") + name = parms[0] + parms = parms[1:] + if name == "RRULE": + for parm in parms: + raise ValueError("unsupported RRULE parm: "+parm) + rrulevals.append(value) + elif name == "RDATE": + for parm in parms: + if parm != "VALUE=DATE-TIME": + raise ValueError("unsupported RDATE parm: "+parm) + rdatevals.append(value) + elif name == "EXRULE": + for parm in parms: + raise ValueError("unsupported EXRULE parm: "+parm) + exrulevals.append(value) + elif name == "EXDATE": + exdatevals.extend( + self._parse_date_value(value, parms, + TZID_NAMES, ignoretz, + tzids, tzinfos) + ) + elif name == "DTSTART": + dtvals = self._parse_date_value(value, parms, TZID_NAMES, + ignoretz, tzids, tzinfos) + if len(dtvals) != 1: + raise ValueError("Multiple DTSTART values specified:" + + value) + dtstart = dtvals[0] + else: + raise ValueError("unsupported property: "+name) + if (forceset or len(rrulevals) > 1 or rdatevals + or exrulevals or exdatevals): + if not parser and (rdatevals or exdatevals): + from dateutil import parser + rset = rruleset(cache=cache) + for value in rrulevals: + rset.rrule(self._parse_rfc_rrule(value, dtstart=dtstart, + ignoretz=ignoretz, + tzinfos=tzinfos)) + for value in rdatevals: + for datestr in value.split(','): + rset.rdate(parser.parse(datestr, + ignoretz=ignoretz, + tzinfos=tzinfos)) + for value in exrulevals: + rset.exrule(self._parse_rfc_rrule(value, dtstart=dtstart, + ignoretz=ignoretz, + tzinfos=tzinfos)) + for value in exdatevals: + rset.exdate(value) + if compatible and dtstart: + rset.rdate(dtstart) + return rset + else: + return self._parse_rfc_rrule(rrulevals[0], + dtstart=dtstart, + cache=cache, + ignoretz=ignoretz, + tzinfos=tzinfos) + + def __call__(self, s, **kwargs): + return self._parse_rfc(s, **kwargs) + + +rrulestr = _rrulestr() + +# vim:ts=4:sw=4:et diff --git a/venv/lib/python3.11/site-packages/dateutil/tz/__init__.py b/venv/lib/python3.11/site-packages/dateutil/tz/__init__.py new file mode 100644 index 0000000000000000000000000000000000000000..af1352c47292f4eebc5cae8da45641b5544558e3 --- /dev/null +++ b/venv/lib/python3.11/site-packages/dateutil/tz/__init__.py @@ -0,0 +1,12 @@ +# -*- coding: utf-8 -*- +from .tz import * +from .tz import __doc__ + +__all__ = ["tzutc", "tzoffset", "tzlocal", "tzfile", "tzrange", + "tzstr", "tzical", "tzwin", "tzwinlocal", "gettz", + "enfold", "datetime_ambiguous", "datetime_exists", + "resolve_imaginary", "UTC", "DeprecatedTzFormatWarning"] + + +class DeprecatedTzFormatWarning(Warning): + """Warning raised when time zones are parsed from deprecated formats.""" diff --git a/venv/lib/python3.11/site-packages/dateutil/tz/_common.py b/venv/lib/python3.11/site-packages/dateutil/tz/_common.py new file mode 100644 index 0000000000000000000000000000000000000000..e6ac11831522b266114d5b68ee1da298e3aeb14a --- /dev/null +++ b/venv/lib/python3.11/site-packages/dateutil/tz/_common.py @@ -0,0 +1,419 @@ +from six import PY2 + +from functools import wraps + +from datetime import datetime, timedelta, tzinfo + + +ZERO = timedelta(0) + +__all__ = ['tzname_in_python2', 'enfold'] + + +def tzname_in_python2(namefunc): + """Change unicode output into bytestrings in Python 2 + + tzname() API changed in Python 3. It used to return bytes, but was changed + to unicode strings + """ + if PY2: + @wraps(namefunc) + def adjust_encoding(*args, **kwargs): + name = namefunc(*args, **kwargs) + if name is not None: + name = name.encode() + + return name + + return adjust_encoding + else: + return namefunc + + +# The following is adapted from Alexander Belopolsky's tz library +# https://github.com/abalkin/tz +if hasattr(datetime, 'fold'): + # This is the pre-python 3.6 fold situation + def enfold(dt, fold=1): + """ + Provides a unified interface for assigning the ``fold`` attribute to + datetimes both before and after the implementation of PEP-495. + + :param fold: + The value for the ``fold`` attribute in the returned datetime. This + should be either 0 or 1. + + :return: + Returns an object for which ``getattr(dt, 'fold', 0)`` returns + ``fold`` for all versions of Python. In versions prior to + Python 3.6, this is a ``_DatetimeWithFold`` object, which is a + subclass of :py:class:`datetime.datetime` with the ``fold`` + attribute added, if ``fold`` is 1. + + .. versionadded:: 2.6.0 + """ + return dt.replace(fold=fold) + +else: + class _DatetimeWithFold(datetime): + """ + This is a class designed to provide a PEP 495-compliant interface for + Python versions before 3.6. It is used only for dates in a fold, so + the ``fold`` attribute is fixed at ``1``. + + .. versionadded:: 2.6.0 + """ + __slots__ = () + + def replace(self, *args, **kwargs): + """ + Return a datetime with the same attributes, except for those + attributes given new values by whichever keyword arguments are + specified. Note that tzinfo=None can be specified to create a naive + datetime from an aware datetime with no conversion of date and time + data. + + This is reimplemented in ``_DatetimeWithFold`` because pypy3 will + return a ``datetime.datetime`` even if ``fold`` is unchanged. + """ + argnames = ( + 'year', 'month', 'day', 'hour', 'minute', 'second', + 'microsecond', 'tzinfo' + ) + + for arg, argname in zip(args, argnames): + if argname in kwargs: + raise TypeError('Duplicate argument: {}'.format(argname)) + + kwargs[argname] = arg + + for argname in argnames: + if argname not in kwargs: + kwargs[argname] = getattr(self, argname) + + dt_class = self.__class__ if kwargs.get('fold', 1) else datetime + + return dt_class(**kwargs) + + @property + def fold(self): + return 1 + + def enfold(dt, fold=1): + """ + Provides a unified interface for assigning the ``fold`` attribute to + datetimes both before and after the implementation of PEP-495. + + :param fold: + The value for the ``fold`` attribute in the returned datetime. This + should be either 0 or 1. + + :return: + Returns an object for which ``getattr(dt, 'fold', 0)`` returns + ``fold`` for all versions of Python. In versions prior to + Python 3.6, this is a ``_DatetimeWithFold`` object, which is a + subclass of :py:class:`datetime.datetime` with the ``fold`` + attribute added, if ``fold`` is 1. + + .. versionadded:: 2.6.0 + """ + if getattr(dt, 'fold', 0) == fold: + return dt + + args = dt.timetuple()[:6] + args += (dt.microsecond, dt.tzinfo) + + if fold: + return _DatetimeWithFold(*args) + else: + return datetime(*args) + + +def _validate_fromutc_inputs(f): + """ + The CPython version of ``fromutc`` checks that the input is a ``datetime`` + object and that ``self`` is attached as its ``tzinfo``. + """ + @wraps(f) + def fromutc(self, dt): + if not isinstance(dt, datetime): + raise TypeError("fromutc() requires a datetime argument") + if dt.tzinfo is not self: + raise ValueError("dt.tzinfo is not self") + + return f(self, dt) + + return fromutc + + +class _tzinfo(tzinfo): + """ + Base class for all ``dateutil`` ``tzinfo`` objects. + """ + + def is_ambiguous(self, dt): + """ + Whether or not the "wall time" of a given datetime is ambiguous in this + zone. + + :param dt: + A :py:class:`datetime.datetime`, naive or time zone aware. + + + :return: + Returns ``True`` if ambiguous, ``False`` otherwise. + + .. versionadded:: 2.6.0 + """ + + dt = dt.replace(tzinfo=self) + + wall_0 = enfold(dt, fold=0) + wall_1 = enfold(dt, fold=1) + + same_offset = wall_0.utcoffset() == wall_1.utcoffset() + same_dt = wall_0.replace(tzinfo=None) == wall_1.replace(tzinfo=None) + + return same_dt and not same_offset + + def _fold_status(self, dt_utc, dt_wall): + """ + Determine the fold status of a "wall" datetime, given a representation + of the same datetime as a (naive) UTC datetime. This is calculated based + on the assumption that ``dt.utcoffset() - dt.dst()`` is constant for all + datetimes, and that this offset is the actual number of hours separating + ``dt_utc`` and ``dt_wall``. + + :param dt_utc: + Representation of the datetime as UTC + + :param dt_wall: + Representation of the datetime as "wall time". This parameter must + either have a `fold` attribute or have a fold-naive + :class:`datetime.tzinfo` attached, otherwise the calculation may + fail. + """ + if self.is_ambiguous(dt_wall): + delta_wall = dt_wall - dt_utc + _fold = int(delta_wall == (dt_utc.utcoffset() - dt_utc.dst())) + else: + _fold = 0 + + return _fold + + def _fold(self, dt): + return getattr(dt, 'fold', 0) + + def _fromutc(self, dt): + """ + Given a timezone-aware datetime in a given timezone, calculates a + timezone-aware datetime in a new timezone. + + Since this is the one time that we *know* we have an unambiguous + datetime object, we take this opportunity to determine whether the + datetime is ambiguous and in a "fold" state (e.g. if it's the first + occurrence, chronologically, of the ambiguous datetime). + + :param dt: + A timezone-aware :class:`datetime.datetime` object. + """ + + # Re-implement the algorithm from Python's datetime.py + dtoff = dt.utcoffset() + if dtoff is None: + raise ValueError("fromutc() requires a non-None utcoffset() " + "result") + + # The original datetime.py code assumes that `dst()` defaults to + # zero during ambiguous times. PEP 495 inverts this presumption, so + # for pre-PEP 495 versions of python, we need to tweak the algorithm. + dtdst = dt.dst() + if dtdst is None: + raise ValueError("fromutc() requires a non-None dst() result") + delta = dtoff - dtdst + + dt += delta + # Set fold=1 so we can default to being in the fold for + # ambiguous dates. + dtdst = enfold(dt, fold=1).dst() + if dtdst is None: + raise ValueError("fromutc(): dt.dst gave inconsistent " + "results; cannot convert") + return dt + dtdst + + @_validate_fromutc_inputs + def fromutc(self, dt): + """ + Given a timezone-aware datetime in a given timezone, calculates a + timezone-aware datetime in a new timezone. + + Since this is the one time that we *know* we have an unambiguous + datetime object, we take this opportunity to determine whether the + datetime is ambiguous and in a "fold" state (e.g. if it's the first + occurrence, chronologically, of the ambiguous datetime). + + :param dt: + A timezone-aware :class:`datetime.datetime` object. + """ + dt_wall = self._fromutc(dt) + + # Calculate the fold status given the two datetimes. + _fold = self._fold_status(dt, dt_wall) + + # Set the default fold value for ambiguous dates + return enfold(dt_wall, fold=_fold) + + +class tzrangebase(_tzinfo): + """ + This is an abstract base class for time zones represented by an annual + transition into and out of DST. Child classes should implement the following + methods: + + * ``__init__(self, *args, **kwargs)`` + * ``transitions(self, year)`` - this is expected to return a tuple of + datetimes representing the DST on and off transitions in standard + time. + + A fully initialized ``tzrangebase`` subclass should also provide the + following attributes: + * ``hasdst``: Boolean whether or not the zone uses DST. + * ``_dst_offset`` / ``_std_offset``: :class:`datetime.timedelta` objects + representing the respective UTC offsets. + * ``_dst_abbr`` / ``_std_abbr``: Strings representing the timezone short + abbreviations in DST and STD, respectively. + * ``_hasdst``: Whether or not the zone has DST. + + .. versionadded:: 2.6.0 + """ + def __init__(self): + raise NotImplementedError('tzrangebase is an abstract base class') + + def utcoffset(self, dt): + isdst = self._isdst(dt) + + if isdst is None: + return None + elif isdst: + return self._dst_offset + else: + return self._std_offset + + def dst(self, dt): + isdst = self._isdst(dt) + + if isdst is None: + return None + elif isdst: + return self._dst_base_offset + else: + return ZERO + + @tzname_in_python2 + def tzname(self, dt): + if self._isdst(dt): + return self._dst_abbr + else: + return self._std_abbr + + def fromutc(self, dt): + """ Given a datetime in UTC, return local time """ + if not isinstance(dt, datetime): + raise TypeError("fromutc() requires a datetime argument") + + if dt.tzinfo is not self: + raise ValueError("dt.tzinfo is not self") + + # Get transitions - if there are none, fixed offset + transitions = self.transitions(dt.year) + if transitions is None: + return dt + self.utcoffset(dt) + + # Get the transition times in UTC + dston, dstoff = transitions + + dston -= self._std_offset + dstoff -= self._std_offset + + utc_transitions = (dston, dstoff) + dt_utc = dt.replace(tzinfo=None) + + isdst = self._naive_isdst(dt_utc, utc_transitions) + + if isdst: + dt_wall = dt + self._dst_offset + else: + dt_wall = dt + self._std_offset + + _fold = int(not isdst and self.is_ambiguous(dt_wall)) + + return enfold(dt_wall, fold=_fold) + + def is_ambiguous(self, dt): + """ + Whether or not the "wall time" of a given datetime is ambiguous in this + zone. + + :param dt: + A :py:class:`datetime.datetime`, naive or time zone aware. + + + :return: + Returns ``True`` if ambiguous, ``False`` otherwise. + + .. versionadded:: 2.6.0 + """ + if not self.hasdst: + return False + + start, end = self.transitions(dt.year) + + dt = dt.replace(tzinfo=None) + return (end <= dt < end + self._dst_base_offset) + + def _isdst(self, dt): + if not self.hasdst: + return False + elif dt is None: + return None + + transitions = self.transitions(dt.year) + + if transitions is None: + return False + + dt = dt.replace(tzinfo=None) + + isdst = self._naive_isdst(dt, transitions) + + # Handle ambiguous dates + if not isdst and self.is_ambiguous(dt): + return not self._fold(dt) + else: + return isdst + + def _naive_isdst(self, dt, transitions): + dston, dstoff = transitions + + dt = dt.replace(tzinfo=None) + + if dston < dstoff: + isdst = dston <= dt < dstoff + else: + isdst = not dstoff <= dt < dston + + return isdst + + @property + def _dst_base_offset(self): + return self._dst_offset - self._std_offset + + __hash__ = None + + def __ne__(self, other): + return not (self == other) + + def __repr__(self): + return "%s(...)" % self.__class__.__name__ + + __reduce__ = object.__reduce__ diff --git a/venv/lib/python3.11/site-packages/dateutil/tz/_factories.py b/venv/lib/python3.11/site-packages/dateutil/tz/_factories.py new file mode 100644 index 0000000000000000000000000000000000000000..f8a65891a023ebf9eb0c24d391ba67541b7133f1 --- /dev/null +++ b/venv/lib/python3.11/site-packages/dateutil/tz/_factories.py @@ -0,0 +1,80 @@ +from datetime import timedelta +import weakref +from collections import OrderedDict + +from six.moves import _thread + + +class _TzSingleton(type): + def __init__(cls, *args, **kwargs): + cls.__instance = None + super(_TzSingleton, cls).__init__(*args, **kwargs) + + def __call__(cls): + if cls.__instance is None: + cls.__instance = super(_TzSingleton, cls).__call__() + return cls.__instance + + +class _TzFactory(type): + def instance(cls, *args, **kwargs): + """Alternate constructor that returns a fresh instance""" + return type.__call__(cls, *args, **kwargs) + + +class _TzOffsetFactory(_TzFactory): + def __init__(cls, *args, **kwargs): + cls.__instances = weakref.WeakValueDictionary() + cls.__strong_cache = OrderedDict() + cls.__strong_cache_size = 8 + + cls._cache_lock = _thread.allocate_lock() + + def __call__(cls, name, offset): + if isinstance(offset, timedelta): + key = (name, offset.total_seconds()) + else: + key = (name, offset) + + instance = cls.__instances.get(key, None) + if instance is None: + instance = cls.__instances.setdefault(key, + cls.instance(name, offset)) + + # This lock may not be necessary in Python 3. See GH issue #901 + with cls._cache_lock: + cls.__strong_cache[key] = cls.__strong_cache.pop(key, instance) + + # Remove an item if the strong cache is overpopulated + if len(cls.__strong_cache) > cls.__strong_cache_size: + cls.__strong_cache.popitem(last=False) + + return instance + + +class _TzStrFactory(_TzFactory): + def __init__(cls, *args, **kwargs): + cls.__instances = weakref.WeakValueDictionary() + cls.__strong_cache = OrderedDict() + cls.__strong_cache_size = 8 + + cls.__cache_lock = _thread.allocate_lock() + + def __call__(cls, s, posix_offset=False): + key = (s, posix_offset) + instance = cls.__instances.get(key, None) + + if instance is None: + instance = cls.__instances.setdefault(key, + cls.instance(s, posix_offset)) + + # This lock may not be necessary in Python 3. See GH issue #901 + with cls.__cache_lock: + cls.__strong_cache[key] = cls.__strong_cache.pop(key, instance) + + # Remove an item if the strong cache is overpopulated + if len(cls.__strong_cache) > cls.__strong_cache_size: + cls.__strong_cache.popitem(last=False) + + return instance + diff --git a/venv/lib/python3.11/site-packages/dateutil/tz/tz.py b/venv/lib/python3.11/site-packages/dateutil/tz/tz.py new file mode 100644 index 0000000000000000000000000000000000000000..617591446bd92eb1cc7b7d67fa3f17435e691cdd --- /dev/null +++ b/venv/lib/python3.11/site-packages/dateutil/tz/tz.py @@ -0,0 +1,1849 @@ +# -*- coding: utf-8 -*- +""" +This module offers timezone implementations subclassing the abstract +:py:class:`datetime.tzinfo` type. There are classes to handle tzfile format +files (usually are in :file:`/etc/localtime`, :file:`/usr/share/zoneinfo`, +etc), TZ environment string (in all known formats), given ranges (with help +from relative deltas), local machine timezone, fixed offset timezone, and UTC +timezone. +""" +import datetime +import struct +import time +import sys +import os +import bisect +import weakref +from collections import OrderedDict + +import six +from six import string_types +from six.moves import _thread +from ._common import tzname_in_python2, _tzinfo +from ._common import tzrangebase, enfold +from ._common import _validate_fromutc_inputs + +from ._factories import _TzSingleton, _TzOffsetFactory +from ._factories import _TzStrFactory +try: + from .win import tzwin, tzwinlocal +except ImportError: + tzwin = tzwinlocal = None + +# For warning about rounding tzinfo +from warnings import warn + +ZERO = datetime.timedelta(0) +EPOCH = datetime.datetime(1970, 1, 1, 0, 0) +EPOCHORDINAL = EPOCH.toordinal() + + +@six.add_metaclass(_TzSingleton) +class tzutc(datetime.tzinfo): + """ + This is a tzinfo object that represents the UTC time zone. + + **Examples:** + + .. doctest:: + + >>> from datetime import * + >>> from dateutil.tz import * + + >>> datetime.now() + datetime.datetime(2003, 9, 27, 9, 40, 1, 521290) + + >>> datetime.now(tzutc()) + datetime.datetime(2003, 9, 27, 12, 40, 12, 156379, tzinfo=tzutc()) + + >>> datetime.now(tzutc()).tzname() + 'UTC' + + .. versionchanged:: 2.7.0 + ``tzutc()`` is now a singleton, so the result of ``tzutc()`` will + always return the same object. + + .. doctest:: + + >>> from dateutil.tz import tzutc, UTC + >>> tzutc() is tzutc() + True + >>> tzutc() is UTC + True + """ + def utcoffset(self, dt): + return ZERO + + def dst(self, dt): + return ZERO + + @tzname_in_python2 + def tzname(self, dt): + return "UTC" + + def is_ambiguous(self, dt): + """ + Whether or not the "wall time" of a given datetime is ambiguous in this + zone. + + :param dt: + A :py:class:`datetime.datetime`, naive or time zone aware. + + + :return: + Returns ``True`` if ambiguous, ``False`` otherwise. + + .. versionadded:: 2.6.0 + """ + return False + + @_validate_fromutc_inputs + def fromutc(self, dt): + """ + Fast track version of fromutc() returns the original ``dt`` object for + any valid :py:class:`datetime.datetime` object. + """ + return dt + + def __eq__(self, other): + if not isinstance(other, (tzutc, tzoffset)): + return NotImplemented + + return (isinstance(other, tzutc) or + (isinstance(other, tzoffset) and other._offset == ZERO)) + + __hash__ = None + + def __ne__(self, other): + return not (self == other) + + def __repr__(self): + return "%s()" % self.__class__.__name__ + + __reduce__ = object.__reduce__ + + +#: Convenience constant providing a :class:`tzutc()` instance +#: +#: .. versionadded:: 2.7.0 +UTC = tzutc() + + +@six.add_metaclass(_TzOffsetFactory) +class tzoffset(datetime.tzinfo): + """ + A simple class for representing a fixed offset from UTC. + + :param name: + The timezone name, to be returned when ``tzname()`` is called. + :param offset: + The time zone offset in seconds, or (since version 2.6.0, represented + as a :py:class:`datetime.timedelta` object). + """ + def __init__(self, name, offset): + self._name = name + + try: + # Allow a timedelta + offset = offset.total_seconds() + except (TypeError, AttributeError): + pass + + self._offset = datetime.timedelta(seconds=_get_supported_offset(offset)) + + def utcoffset(self, dt): + return self._offset + + def dst(self, dt): + return ZERO + + @tzname_in_python2 + def tzname(self, dt): + return self._name + + @_validate_fromutc_inputs + def fromutc(self, dt): + return dt + self._offset + + def is_ambiguous(self, dt): + """ + Whether or not the "wall time" of a given datetime is ambiguous in this + zone. + + :param dt: + A :py:class:`datetime.datetime`, naive or time zone aware. + :return: + Returns ``True`` if ambiguous, ``False`` otherwise. + + .. versionadded:: 2.6.0 + """ + return False + + def __eq__(self, other): + if not isinstance(other, tzoffset): + return NotImplemented + + return self._offset == other._offset + + __hash__ = None + + def __ne__(self, other): + return not (self == other) + + def __repr__(self): + return "%s(%s, %s)" % (self.__class__.__name__, + repr(self._name), + int(self._offset.total_seconds())) + + __reduce__ = object.__reduce__ + + +class tzlocal(_tzinfo): + """ + A :class:`tzinfo` subclass built around the ``time`` timezone functions. + """ + def __init__(self): + super(tzlocal, self).__init__() + + self._std_offset = datetime.timedelta(seconds=-time.timezone) + if time.daylight: + self._dst_offset = datetime.timedelta(seconds=-time.altzone) + else: + self._dst_offset = self._std_offset + + self._dst_saved = self._dst_offset - self._std_offset + self._hasdst = bool(self._dst_saved) + self._tznames = tuple(time.tzname) + + def utcoffset(self, dt): + if dt is None and self._hasdst: + return None + + if self._isdst(dt): + return self._dst_offset + else: + return self._std_offset + + def dst(self, dt): + if dt is None and self._hasdst: + return None + + if self._isdst(dt): + return self._dst_offset - self._std_offset + else: + return ZERO + + @tzname_in_python2 + def tzname(self, dt): + return self._tznames[self._isdst(dt)] + + def is_ambiguous(self, dt): + """ + Whether or not the "wall time" of a given datetime is ambiguous in this + zone. + + :param dt: + A :py:class:`datetime.datetime`, naive or time zone aware. + + + :return: + Returns ``True`` if ambiguous, ``False`` otherwise. + + .. versionadded:: 2.6.0 + """ + naive_dst = self._naive_is_dst(dt) + return (not naive_dst and + (naive_dst != self._naive_is_dst(dt - self._dst_saved))) + + def _naive_is_dst(self, dt): + timestamp = _datetime_to_timestamp(dt) + return time.localtime(timestamp + time.timezone).tm_isdst + + def _isdst(self, dt, fold_naive=True): + # We can't use mktime here. It is unstable when deciding if + # the hour near to a change is DST or not. + # + # timestamp = time.mktime((dt.year, dt.month, dt.day, dt.hour, + # dt.minute, dt.second, dt.weekday(), 0, -1)) + # return time.localtime(timestamp).tm_isdst + # + # The code above yields the following result: + # + # >>> import tz, datetime + # >>> t = tz.tzlocal() + # >>> datetime.datetime(2003,2,15,23,tzinfo=t).tzname() + # 'BRDT' + # >>> datetime.datetime(2003,2,16,0,tzinfo=t).tzname() + # 'BRST' + # >>> datetime.datetime(2003,2,15,23,tzinfo=t).tzname() + # 'BRST' + # >>> datetime.datetime(2003,2,15,22,tzinfo=t).tzname() + # 'BRDT' + # >>> datetime.datetime(2003,2,15,23,tzinfo=t).tzname() + # 'BRDT' + # + # Here is a more stable implementation: + # + if not self._hasdst: + return False + + # Check for ambiguous times: + dstval = self._naive_is_dst(dt) + fold = getattr(dt, 'fold', None) + + if self.is_ambiguous(dt): + if fold is not None: + return not self._fold(dt) + else: + return True + + return dstval + + def __eq__(self, other): + if isinstance(other, tzlocal): + return (self._std_offset == other._std_offset and + self._dst_offset == other._dst_offset) + elif isinstance(other, tzutc): + return (not self._hasdst and + self._tznames[0] in {'UTC', 'GMT'} and + self._std_offset == ZERO) + elif isinstance(other, tzoffset): + return (not self._hasdst and + self._tznames[0] == other._name and + self._std_offset == other._offset) + else: + return NotImplemented + + __hash__ = None + + def __ne__(self, other): + return not (self == other) + + def __repr__(self): + return "%s()" % self.__class__.__name__ + + __reduce__ = object.__reduce__ + + +class _ttinfo(object): + __slots__ = ["offset", "delta", "isdst", "abbr", + "isstd", "isgmt", "dstoffset"] + + def __init__(self): + for attr in self.__slots__: + setattr(self, attr, None) + + def __repr__(self): + l = [] + for attr in self.__slots__: + value = getattr(self, attr) + if value is not None: + l.append("%s=%s" % (attr, repr(value))) + return "%s(%s)" % (self.__class__.__name__, ", ".join(l)) + + def __eq__(self, other): + if not isinstance(other, _ttinfo): + return NotImplemented + + return (self.offset == other.offset and + self.delta == other.delta and + self.isdst == other.isdst and + self.abbr == other.abbr and + self.isstd == other.isstd and + self.isgmt == other.isgmt and + self.dstoffset == other.dstoffset) + + __hash__ = None + + def __ne__(self, other): + return not (self == other) + + def __getstate__(self): + state = {} + for name in self.__slots__: + state[name] = getattr(self, name, None) + return state + + def __setstate__(self, state): + for name in self.__slots__: + if name in state: + setattr(self, name, state[name]) + + +class _tzfile(object): + """ + Lightweight class for holding the relevant transition and time zone + information read from binary tzfiles. + """ + attrs = ['trans_list', 'trans_list_utc', 'trans_idx', 'ttinfo_list', + 'ttinfo_std', 'ttinfo_dst', 'ttinfo_before', 'ttinfo_first'] + + def __init__(self, **kwargs): + for attr in self.attrs: + setattr(self, attr, kwargs.get(attr, None)) + + +class tzfile(_tzinfo): + """ + This is a ``tzinfo`` subclass that allows one to use the ``tzfile(5)`` + format timezone files to extract current and historical zone information. + + :param fileobj: + This can be an opened file stream or a file name that the time zone + information can be read from. + + :param filename: + This is an optional parameter specifying the source of the time zone + information in the event that ``fileobj`` is a file object. If omitted + and ``fileobj`` is a file stream, this parameter will be set either to + ``fileobj``'s ``name`` attribute or to ``repr(fileobj)``. + + See `Sources for Time Zone and Daylight Saving Time Data + `_ for more information. + Time zone files can be compiled from the `IANA Time Zone database files + `_ with the `zic time zone compiler + `_ + + .. note:: + + Only construct a ``tzfile`` directly if you have a specific timezone + file on disk that you want to read into a Python ``tzinfo`` object. + If you want to get a ``tzfile`` representing a specific IANA zone, + (e.g. ``'America/New_York'``), you should call + :func:`dateutil.tz.gettz` with the zone identifier. + + + **Examples:** + + Using the US Eastern time zone as an example, we can see that a ``tzfile`` + provides time zone information for the standard Daylight Saving offsets: + + .. testsetup:: tzfile + + from dateutil.tz import gettz + from datetime import datetime + + .. doctest:: tzfile + + >>> NYC = gettz('America/New_York') + >>> NYC + tzfile('/usr/share/zoneinfo/America/New_York') + + >>> print(datetime(2016, 1, 3, tzinfo=NYC)) # EST + 2016-01-03 00:00:00-05:00 + + >>> print(datetime(2016, 7, 7, tzinfo=NYC)) # EDT + 2016-07-07 00:00:00-04:00 + + + The ``tzfile`` structure contains a fully history of the time zone, + so historical dates will also have the right offsets. For example, before + the adoption of the UTC standards, New York used local solar mean time: + + .. doctest:: tzfile + + >>> print(datetime(1901, 4, 12, tzinfo=NYC)) # LMT + 1901-04-12 00:00:00-04:56 + + And during World War II, New York was on "Eastern War Time", which was a + state of permanent daylight saving time: + + .. doctest:: tzfile + + >>> print(datetime(1944, 2, 7, tzinfo=NYC)) # EWT + 1944-02-07 00:00:00-04:00 + + """ + + def __init__(self, fileobj, filename=None): + super(tzfile, self).__init__() + + file_opened_here = False + if isinstance(fileobj, string_types): + self._filename = fileobj + fileobj = open(fileobj, 'rb') + file_opened_here = True + elif filename is not None: + self._filename = filename + elif hasattr(fileobj, "name"): + self._filename = fileobj.name + else: + self._filename = repr(fileobj) + + if fileobj is not None: + if not file_opened_here: + fileobj = _nullcontext(fileobj) + + with fileobj as file_stream: + tzobj = self._read_tzfile(file_stream) + + self._set_tzdata(tzobj) + + def _set_tzdata(self, tzobj): + """ Set the time zone data of this object from a _tzfile object """ + # Copy the relevant attributes over as private attributes + for attr in _tzfile.attrs: + setattr(self, '_' + attr, getattr(tzobj, attr)) + + def _read_tzfile(self, fileobj): + out = _tzfile() + + # From tzfile(5): + # + # The time zone information files used by tzset(3) + # begin with the magic characters "TZif" to identify + # them as time zone information files, followed by + # sixteen bytes reserved for future use, followed by + # six four-byte values of type long, written in a + # ``standard'' byte order (the high-order byte + # of the value is written first). + if fileobj.read(4).decode() != "TZif": + raise ValueError("magic not found") + + fileobj.read(16) + + ( + # The number of UTC/local indicators stored in the file. + ttisgmtcnt, + + # The number of standard/wall indicators stored in the file. + ttisstdcnt, + + # The number of leap seconds for which data is + # stored in the file. + leapcnt, + + # The number of "transition times" for which data + # is stored in the file. + timecnt, + + # The number of "local time types" for which data + # is stored in the file (must not be zero). + typecnt, + + # The number of characters of "time zone + # abbreviation strings" stored in the file. + charcnt, + + ) = struct.unpack(">6l", fileobj.read(24)) + + # The above header is followed by tzh_timecnt four-byte + # values of type long, sorted in ascending order. + # These values are written in ``standard'' byte order. + # Each is used as a transition time (as returned by + # time(2)) at which the rules for computing local time + # change. + + if timecnt: + out.trans_list_utc = list(struct.unpack(">%dl" % timecnt, + fileobj.read(timecnt*4))) + else: + out.trans_list_utc = [] + + # Next come tzh_timecnt one-byte values of type unsigned + # char; each one tells which of the different types of + # ``local time'' types described in the file is associated + # with the same-indexed transition time. These values + # serve as indices into an array of ttinfo structures that + # appears next in the file. + + if timecnt: + out.trans_idx = struct.unpack(">%dB" % timecnt, + fileobj.read(timecnt)) + else: + out.trans_idx = [] + + # Each ttinfo structure is written as a four-byte value + # for tt_gmtoff of type long, in a standard byte + # order, followed by a one-byte value for tt_isdst + # and a one-byte value for tt_abbrind. In each + # structure, tt_gmtoff gives the number of + # seconds to be added to UTC, tt_isdst tells whether + # tm_isdst should be set by localtime(3), and + # tt_abbrind serves as an index into the array of + # time zone abbreviation characters that follow the + # ttinfo structure(s) in the file. + + ttinfo = [] + + for i in range(typecnt): + ttinfo.append(struct.unpack(">lbb", fileobj.read(6))) + + abbr = fileobj.read(charcnt).decode() + + # Then there are tzh_leapcnt pairs of four-byte + # values, written in standard byte order; the + # first value of each pair gives the time (as + # returned by time(2)) at which a leap second + # occurs; the second gives the total number of + # leap seconds to be applied after the given time. + # The pairs of values are sorted in ascending order + # by time. + + # Not used, for now (but seek for correct file position) + if leapcnt: + fileobj.seek(leapcnt * 8, os.SEEK_CUR) + + # Then there are tzh_ttisstdcnt standard/wall + # indicators, each stored as a one-byte value; + # they tell whether the transition times associated + # with local time types were specified as standard + # time or wall clock time, and are used when + # a time zone file is used in handling POSIX-style + # time zone environment variables. + + if ttisstdcnt: + isstd = struct.unpack(">%db" % ttisstdcnt, + fileobj.read(ttisstdcnt)) + + # Finally, there are tzh_ttisgmtcnt UTC/local + # indicators, each stored as a one-byte value; + # they tell whether the transition times associated + # with local time types were specified as UTC or + # local time, and are used when a time zone file + # is used in handling POSIX-style time zone envi- + # ronment variables. + + if ttisgmtcnt: + isgmt = struct.unpack(">%db" % ttisgmtcnt, + fileobj.read(ttisgmtcnt)) + + # Build ttinfo list + out.ttinfo_list = [] + for i in range(typecnt): + gmtoff, isdst, abbrind = ttinfo[i] + gmtoff = _get_supported_offset(gmtoff) + tti = _ttinfo() + tti.offset = gmtoff + tti.dstoffset = datetime.timedelta(0) + tti.delta = datetime.timedelta(seconds=gmtoff) + tti.isdst = isdst + tti.abbr = abbr[abbrind:abbr.find('\x00', abbrind)] + tti.isstd = (ttisstdcnt > i and isstd[i] != 0) + tti.isgmt = (ttisgmtcnt > i and isgmt[i] != 0) + out.ttinfo_list.append(tti) + + # Replace ttinfo indexes for ttinfo objects. + out.trans_idx = [out.ttinfo_list[idx] for idx in out.trans_idx] + + # Set standard, dst, and before ttinfos. before will be + # used when a given time is before any transitions, + # and will be set to the first non-dst ttinfo, or to + # the first dst, if all of them are dst. + out.ttinfo_std = None + out.ttinfo_dst = None + out.ttinfo_before = None + if out.ttinfo_list: + if not out.trans_list_utc: + out.ttinfo_std = out.ttinfo_first = out.ttinfo_list[0] + else: + for i in range(timecnt-1, -1, -1): + tti = out.trans_idx[i] + if not out.ttinfo_std and not tti.isdst: + out.ttinfo_std = tti + elif not out.ttinfo_dst and tti.isdst: + out.ttinfo_dst = tti + + if out.ttinfo_std and out.ttinfo_dst: + break + else: + if out.ttinfo_dst and not out.ttinfo_std: + out.ttinfo_std = out.ttinfo_dst + + for tti in out.ttinfo_list: + if not tti.isdst: + out.ttinfo_before = tti + break + else: + out.ttinfo_before = out.ttinfo_list[0] + + # Now fix transition times to become relative to wall time. + # + # I'm not sure about this. In my tests, the tz source file + # is setup to wall time, and in the binary file isstd and + # isgmt are off, so it should be in wall time. OTOH, it's + # always in gmt time. Let me know if you have comments + # about this. + lastdst = None + lastoffset = None + lastdstoffset = None + lastbaseoffset = None + out.trans_list = [] + + for i, tti in enumerate(out.trans_idx): + offset = tti.offset + dstoffset = 0 + + if lastdst is not None: + if tti.isdst: + if not lastdst: + dstoffset = offset - lastoffset + + if not dstoffset and lastdstoffset: + dstoffset = lastdstoffset + + tti.dstoffset = datetime.timedelta(seconds=dstoffset) + lastdstoffset = dstoffset + + # If a time zone changes its base offset during a DST transition, + # then you need to adjust by the previous base offset to get the + # transition time in local time. Otherwise you use the current + # base offset. Ideally, I would have some mathematical proof of + # why this is true, but I haven't really thought about it enough. + baseoffset = offset - dstoffset + adjustment = baseoffset + if (lastbaseoffset is not None and baseoffset != lastbaseoffset + and tti.isdst != lastdst): + # The base DST has changed + adjustment = lastbaseoffset + + lastdst = tti.isdst + lastoffset = offset + lastbaseoffset = baseoffset + + out.trans_list.append(out.trans_list_utc[i] + adjustment) + + out.trans_idx = tuple(out.trans_idx) + out.trans_list = tuple(out.trans_list) + out.trans_list_utc = tuple(out.trans_list_utc) + + return out + + def _find_last_transition(self, dt, in_utc=False): + # If there's no list, there are no transitions to find + if not self._trans_list: + return None + + timestamp = _datetime_to_timestamp(dt) + + # Find where the timestamp fits in the transition list - if the + # timestamp is a transition time, it's part of the "after" period. + trans_list = self._trans_list_utc if in_utc else self._trans_list + idx = bisect.bisect_right(trans_list, timestamp) + + # We want to know when the previous transition was, so subtract off 1 + return idx - 1 + + def _get_ttinfo(self, idx): + # For no list or after the last transition, default to _ttinfo_std + if idx is None or (idx + 1) >= len(self._trans_list): + return self._ttinfo_std + + # If there is a list and the time is before it, return _ttinfo_before + if idx < 0: + return self._ttinfo_before + + return self._trans_idx[idx] + + def _find_ttinfo(self, dt): + idx = self._resolve_ambiguous_time(dt) + + return self._get_ttinfo(idx) + + def fromutc(self, dt): + """ + The ``tzfile`` implementation of :py:func:`datetime.tzinfo.fromutc`. + + :param dt: + A :py:class:`datetime.datetime` object. + + :raises TypeError: + Raised if ``dt`` is not a :py:class:`datetime.datetime` object. + + :raises ValueError: + Raised if this is called with a ``dt`` which does not have this + ``tzinfo`` attached. + + :return: + Returns a :py:class:`datetime.datetime` object representing the + wall time in ``self``'s time zone. + """ + # These isinstance checks are in datetime.tzinfo, so we'll preserve + # them, even if we don't care about duck typing. + if not isinstance(dt, datetime.datetime): + raise TypeError("fromutc() requires a datetime argument") + + if dt.tzinfo is not self: + raise ValueError("dt.tzinfo is not self") + + # First treat UTC as wall time and get the transition we're in. + idx = self._find_last_transition(dt, in_utc=True) + tti = self._get_ttinfo(idx) + + dt_out = dt + datetime.timedelta(seconds=tti.offset) + + fold = self.is_ambiguous(dt_out, idx=idx) + + return enfold(dt_out, fold=int(fold)) + + def is_ambiguous(self, dt, idx=None): + """ + Whether or not the "wall time" of a given datetime is ambiguous in this + zone. + + :param dt: + A :py:class:`datetime.datetime`, naive or time zone aware. + + + :return: + Returns ``True`` if ambiguous, ``False`` otherwise. + + .. versionadded:: 2.6.0 + """ + if idx is None: + idx = self._find_last_transition(dt) + + # Calculate the difference in offsets from current to previous + timestamp = _datetime_to_timestamp(dt) + tti = self._get_ttinfo(idx) + + if idx is None or idx <= 0: + return False + + od = self._get_ttinfo(idx - 1).offset - tti.offset + tt = self._trans_list[idx] # Transition time + + return timestamp < tt + od + + def _resolve_ambiguous_time(self, dt): + idx = self._find_last_transition(dt) + + # If we have no transitions, return the index + _fold = self._fold(dt) + if idx is None or idx == 0: + return idx + + # If it's ambiguous and we're in a fold, shift to a different index. + idx_offset = int(not _fold and self.is_ambiguous(dt, idx)) + + return idx - idx_offset + + def utcoffset(self, dt): + if dt is None: + return None + + if not self._ttinfo_std: + return ZERO + + return self._find_ttinfo(dt).delta + + def dst(self, dt): + if dt is None: + return None + + if not self._ttinfo_dst: + return ZERO + + tti = self._find_ttinfo(dt) + + if not tti.isdst: + return ZERO + + # The documentation says that utcoffset()-dst() must + # be constant for every dt. + return tti.dstoffset + + @tzname_in_python2 + def tzname(self, dt): + if not self._ttinfo_std or dt is None: + return None + return self._find_ttinfo(dt).abbr + + def __eq__(self, other): + if not isinstance(other, tzfile): + return NotImplemented + return (self._trans_list == other._trans_list and + self._trans_idx == other._trans_idx and + self._ttinfo_list == other._ttinfo_list) + + __hash__ = None + + def __ne__(self, other): + return not (self == other) + + def __repr__(self): + return "%s(%s)" % (self.__class__.__name__, repr(self._filename)) + + def __reduce__(self): + return self.__reduce_ex__(None) + + def __reduce_ex__(self, protocol): + return (self.__class__, (None, self._filename), self.__dict__) + + +class tzrange(tzrangebase): + """ + The ``tzrange`` object is a time zone specified by a set of offsets and + abbreviations, equivalent to the way the ``TZ`` variable can be specified + in POSIX-like systems, but using Python delta objects to specify DST + start, end and offsets. + + :param stdabbr: + The abbreviation for standard time (e.g. ``'EST'``). + + :param stdoffset: + An integer or :class:`datetime.timedelta` object or equivalent + specifying the base offset from UTC. + + If unspecified, +00:00 is used. + + :param dstabbr: + The abbreviation for DST / "Summer" time (e.g. ``'EDT'``). + + If specified, with no other DST information, DST is assumed to occur + and the default behavior or ``dstoffset``, ``start`` and ``end`` is + used. If unspecified and no other DST information is specified, it + is assumed that this zone has no DST. + + If this is unspecified and other DST information is *is* specified, + DST occurs in the zone but the time zone abbreviation is left + unchanged. + + :param dstoffset: + A an integer or :class:`datetime.timedelta` object or equivalent + specifying the UTC offset during DST. If unspecified and any other DST + information is specified, it is assumed to be the STD offset +1 hour. + + :param start: + A :class:`relativedelta.relativedelta` object or equivalent specifying + the time and time of year that daylight savings time starts. To + specify, for example, that DST starts at 2AM on the 2nd Sunday in + March, pass: + + ``relativedelta(hours=2, month=3, day=1, weekday=SU(+2))`` + + If unspecified and any other DST information is specified, the default + value is 2 AM on the first Sunday in April. + + :param end: + A :class:`relativedelta.relativedelta` object or equivalent + representing the time and time of year that daylight savings time + ends, with the same specification method as in ``start``. One note is + that this should point to the first time in the *standard* zone, so if + a transition occurs at 2AM in the DST zone and the clocks are set back + 1 hour to 1AM, set the ``hours`` parameter to +1. + + + **Examples:** + + .. testsetup:: tzrange + + from dateutil.tz import tzrange, tzstr + + .. doctest:: tzrange + + >>> tzstr('EST5EDT') == tzrange("EST", -18000, "EDT") + True + + >>> from dateutil.relativedelta import * + >>> range1 = tzrange("EST", -18000, "EDT") + >>> range2 = tzrange("EST", -18000, "EDT", -14400, + ... relativedelta(hours=+2, month=4, day=1, + ... weekday=SU(+1)), + ... relativedelta(hours=+1, month=10, day=31, + ... weekday=SU(-1))) + >>> tzstr('EST5EDT') == range1 == range2 + True + + """ + def __init__(self, stdabbr, stdoffset=None, + dstabbr=None, dstoffset=None, + start=None, end=None): + + global relativedelta + from dateutil import relativedelta + + self._std_abbr = stdabbr + self._dst_abbr = dstabbr + + try: + stdoffset = stdoffset.total_seconds() + except (TypeError, AttributeError): + pass + + try: + dstoffset = dstoffset.total_seconds() + except (TypeError, AttributeError): + pass + + if stdoffset is not None: + self._std_offset = datetime.timedelta(seconds=stdoffset) + else: + self._std_offset = ZERO + + if dstoffset is not None: + self._dst_offset = datetime.timedelta(seconds=dstoffset) + elif dstabbr and stdoffset is not None: + self._dst_offset = self._std_offset + datetime.timedelta(hours=+1) + else: + self._dst_offset = ZERO + + if dstabbr and start is None: + self._start_delta = relativedelta.relativedelta( + hours=+2, month=4, day=1, weekday=relativedelta.SU(+1)) + else: + self._start_delta = start + + if dstabbr and end is None: + self._end_delta = relativedelta.relativedelta( + hours=+1, month=10, day=31, weekday=relativedelta.SU(-1)) + else: + self._end_delta = end + + self._dst_base_offset_ = self._dst_offset - self._std_offset + self.hasdst = bool(self._start_delta) + + def transitions(self, year): + """ + For a given year, get the DST on and off transition times, expressed + always on the standard time side. For zones with no transitions, this + function returns ``None``. + + :param year: + The year whose transitions you would like to query. + + :return: + Returns a :class:`tuple` of :class:`datetime.datetime` objects, + ``(dston, dstoff)`` for zones with an annual DST transition, or + ``None`` for fixed offset zones. + """ + if not self.hasdst: + return None + + base_year = datetime.datetime(year, 1, 1) + + start = base_year + self._start_delta + end = base_year + self._end_delta + + return (start, end) + + def __eq__(self, other): + if not isinstance(other, tzrange): + return NotImplemented + + return (self._std_abbr == other._std_abbr and + self._dst_abbr == other._dst_abbr and + self._std_offset == other._std_offset and + self._dst_offset == other._dst_offset and + self._start_delta == other._start_delta and + self._end_delta == other._end_delta) + + @property + def _dst_base_offset(self): + return self._dst_base_offset_ + + +@six.add_metaclass(_TzStrFactory) +class tzstr(tzrange): + """ + ``tzstr`` objects are time zone objects specified by a time-zone string as + it would be passed to a ``TZ`` variable on POSIX-style systems (see + the `GNU C Library: TZ Variable`_ for more details). + + There is one notable exception, which is that POSIX-style time zones use an + inverted offset format, so normally ``GMT+3`` would be parsed as an offset + 3 hours *behind* GMT. The ``tzstr`` time zone object will parse this as an + offset 3 hours *ahead* of GMT. If you would like to maintain the POSIX + behavior, pass a ``True`` value to ``posix_offset``. + + The :class:`tzrange` object provides the same functionality, but is + specified using :class:`relativedelta.relativedelta` objects. rather than + strings. + + :param s: + A time zone string in ``TZ`` variable format. This can be a + :class:`bytes` (2.x: :class:`str`), :class:`str` (2.x: + :class:`unicode`) or a stream emitting unicode characters + (e.g. :class:`StringIO`). + + :param posix_offset: + Optional. If set to ``True``, interpret strings such as ``GMT+3`` or + ``UTC+3`` as being 3 hours *behind* UTC rather than ahead, per the + POSIX standard. + + .. caution:: + + Prior to version 2.7.0, this function also supported time zones + in the format: + + * ``EST5EDT,4,0,6,7200,10,0,26,7200,3600`` + * ``EST5EDT,4,1,0,7200,10,-1,0,7200,3600`` + + This format is non-standard and has been deprecated; this function + will raise a :class:`DeprecatedTZFormatWarning` until + support is removed in a future version. + + .. _`GNU C Library: TZ Variable`: + https://www.gnu.org/software/libc/manual/html_node/TZ-Variable.html + """ + def __init__(self, s, posix_offset=False): + global parser + from dateutil.parser import _parser as parser + + self._s = s + + res = parser._parsetz(s) + if res is None or res.any_unused_tokens: + raise ValueError("unknown string format") + + # Here we break the compatibility with the TZ variable handling. + # GMT-3 actually *means* the timezone -3. + if res.stdabbr in ("GMT", "UTC") and not posix_offset: + res.stdoffset *= -1 + + # We must initialize it first, since _delta() needs + # _std_offset and _dst_offset set. Use False in start/end + # to avoid building it two times. + tzrange.__init__(self, res.stdabbr, res.stdoffset, + res.dstabbr, res.dstoffset, + start=False, end=False) + + if not res.dstabbr: + self._start_delta = None + self._end_delta = None + else: + self._start_delta = self._delta(res.start) + if self._start_delta: + self._end_delta = self._delta(res.end, isend=1) + + self.hasdst = bool(self._start_delta) + + def _delta(self, x, isend=0): + from dateutil import relativedelta + kwargs = {} + if x.month is not None: + kwargs["month"] = x.month + if x.weekday is not None: + kwargs["weekday"] = relativedelta.weekday(x.weekday, x.week) + if x.week > 0: + kwargs["day"] = 1 + else: + kwargs["day"] = 31 + elif x.day: + kwargs["day"] = x.day + elif x.yday is not None: + kwargs["yearday"] = x.yday + elif x.jyday is not None: + kwargs["nlyearday"] = x.jyday + if not kwargs: + # Default is to start on first sunday of april, and end + # on last sunday of october. + if not isend: + kwargs["month"] = 4 + kwargs["day"] = 1 + kwargs["weekday"] = relativedelta.SU(+1) + else: + kwargs["month"] = 10 + kwargs["day"] = 31 + kwargs["weekday"] = relativedelta.SU(-1) + if x.time is not None: + kwargs["seconds"] = x.time + else: + # Default is 2AM. + kwargs["seconds"] = 7200 + if isend: + # Convert to standard time, to follow the documented way + # of working with the extra hour. See the documentation + # of the tzinfo class. + delta = self._dst_offset - self._std_offset + kwargs["seconds"] -= delta.seconds + delta.days * 86400 + return relativedelta.relativedelta(**kwargs) + + def __repr__(self): + return "%s(%s)" % (self.__class__.__name__, repr(self._s)) + + +class _tzicalvtzcomp(object): + def __init__(self, tzoffsetfrom, tzoffsetto, isdst, + tzname=None, rrule=None): + self.tzoffsetfrom = datetime.timedelta(seconds=tzoffsetfrom) + self.tzoffsetto = datetime.timedelta(seconds=tzoffsetto) + self.tzoffsetdiff = self.tzoffsetto - self.tzoffsetfrom + self.isdst = isdst + self.tzname = tzname + self.rrule = rrule + + +class _tzicalvtz(_tzinfo): + def __init__(self, tzid, comps=[]): + super(_tzicalvtz, self).__init__() + + self._tzid = tzid + self._comps = comps + self._cachedate = [] + self._cachecomp = [] + self._cache_lock = _thread.allocate_lock() + + def _find_comp(self, dt): + if len(self._comps) == 1: + return self._comps[0] + + dt = dt.replace(tzinfo=None) + + try: + with self._cache_lock: + return self._cachecomp[self._cachedate.index( + (dt, self._fold(dt)))] + except ValueError: + pass + + lastcompdt = None + lastcomp = None + + for comp in self._comps: + compdt = self._find_compdt(comp, dt) + + if compdt and (not lastcompdt or lastcompdt < compdt): + lastcompdt = compdt + lastcomp = comp + + if not lastcomp: + # RFC says nothing about what to do when a given + # time is before the first onset date. We'll look for the + # first standard component, or the first component, if + # none is found. + for comp in self._comps: + if not comp.isdst: + lastcomp = comp + break + else: + lastcomp = comp[0] + + with self._cache_lock: + self._cachedate.insert(0, (dt, self._fold(dt))) + self._cachecomp.insert(0, lastcomp) + + if len(self._cachedate) > 10: + self._cachedate.pop() + self._cachecomp.pop() + + return lastcomp + + def _find_compdt(self, comp, dt): + if comp.tzoffsetdiff < ZERO and self._fold(dt): + dt -= comp.tzoffsetdiff + + compdt = comp.rrule.before(dt, inc=True) + + return compdt + + def utcoffset(self, dt): + if dt is None: + return None + + return self._find_comp(dt).tzoffsetto + + def dst(self, dt): + comp = self._find_comp(dt) + if comp.isdst: + return comp.tzoffsetdiff + else: + return ZERO + + @tzname_in_python2 + def tzname(self, dt): + return self._find_comp(dt).tzname + + def __repr__(self): + return "" % repr(self._tzid) + + __reduce__ = object.__reduce__ + + +class tzical(object): + """ + This object is designed to parse an iCalendar-style ``VTIMEZONE`` structure + as set out in `RFC 5545`_ Section 4.6.5 into one or more `tzinfo` objects. + + :param `fileobj`: + A file or stream in iCalendar format, which should be UTF-8 encoded + with CRLF endings. + + .. _`RFC 5545`: https://tools.ietf.org/html/rfc5545 + """ + def __init__(self, fileobj): + global rrule + from dateutil import rrule + + if isinstance(fileobj, string_types): + self._s = fileobj + # ical should be encoded in UTF-8 with CRLF + fileobj = open(fileobj, 'r') + else: + self._s = getattr(fileobj, 'name', repr(fileobj)) + fileobj = _nullcontext(fileobj) + + self._vtz = {} + + with fileobj as fobj: + self._parse_rfc(fobj.read()) + + def keys(self): + """ + Retrieves the available time zones as a list. + """ + return list(self._vtz.keys()) + + def get(self, tzid=None): + """ + Retrieve a :py:class:`datetime.tzinfo` object by its ``tzid``. + + :param tzid: + If there is exactly one time zone available, omitting ``tzid`` + or passing :py:const:`None` value returns it. Otherwise a valid + key (which can be retrieved from :func:`keys`) is required. + + :raises ValueError: + Raised if ``tzid`` is not specified but there are either more + or fewer than 1 zone defined. + + :returns: + Returns either a :py:class:`datetime.tzinfo` object representing + the relevant time zone or :py:const:`None` if the ``tzid`` was + not found. + """ + if tzid is None: + if len(self._vtz) == 0: + raise ValueError("no timezones defined") + elif len(self._vtz) > 1: + raise ValueError("more than one timezone available") + tzid = next(iter(self._vtz)) + + return self._vtz.get(tzid) + + def _parse_offset(self, s): + s = s.strip() + if not s: + raise ValueError("empty offset") + if s[0] in ('+', '-'): + signal = (-1, +1)[s[0] == '+'] + s = s[1:] + else: + signal = +1 + if len(s) == 4: + return (int(s[:2]) * 3600 + int(s[2:]) * 60) * signal + elif len(s) == 6: + return (int(s[:2]) * 3600 + int(s[2:4]) * 60 + int(s[4:])) * signal + else: + raise ValueError("invalid offset: " + s) + + def _parse_rfc(self, s): + lines = s.splitlines() + if not lines: + raise ValueError("empty string") + + # Unfold + i = 0 + while i < len(lines): + line = lines[i].rstrip() + if not line: + del lines[i] + elif i > 0 and line[0] == " ": + lines[i-1] += line[1:] + del lines[i] + else: + i += 1 + + tzid = None + comps = [] + invtz = False + comptype = None + for line in lines: + if not line: + continue + name, value = line.split(':', 1) + parms = name.split(';') + if not parms: + raise ValueError("empty property name") + name = parms[0].upper() + parms = parms[1:] + if invtz: + if name == "BEGIN": + if value in ("STANDARD", "DAYLIGHT"): + # Process component + pass + else: + raise ValueError("unknown component: "+value) + comptype = value + founddtstart = False + tzoffsetfrom = None + tzoffsetto = None + rrulelines = [] + tzname = None + elif name == "END": + if value == "VTIMEZONE": + if comptype: + raise ValueError("component not closed: "+comptype) + if not tzid: + raise ValueError("mandatory TZID not found") + if not comps: + raise ValueError( + "at least one component is needed") + # Process vtimezone + self._vtz[tzid] = _tzicalvtz(tzid, comps) + invtz = False + elif value == comptype: + if not founddtstart: + raise ValueError("mandatory DTSTART not found") + if tzoffsetfrom is None: + raise ValueError( + "mandatory TZOFFSETFROM not found") + if tzoffsetto is None: + raise ValueError( + "mandatory TZOFFSETFROM not found") + # Process component + rr = None + if rrulelines: + rr = rrule.rrulestr("\n".join(rrulelines), + compatible=True, + ignoretz=True, + cache=True) + comp = _tzicalvtzcomp(tzoffsetfrom, tzoffsetto, + (comptype == "DAYLIGHT"), + tzname, rr) + comps.append(comp) + comptype = None + else: + raise ValueError("invalid component end: "+value) + elif comptype: + if name == "DTSTART": + # DTSTART in VTIMEZONE takes a subset of valid RRULE + # values under RFC 5545. + for parm in parms: + if parm != 'VALUE=DATE-TIME': + msg = ('Unsupported DTSTART param in ' + + 'VTIMEZONE: ' + parm) + raise ValueError(msg) + rrulelines.append(line) + founddtstart = True + elif name in ("RRULE", "RDATE", "EXRULE", "EXDATE"): + rrulelines.append(line) + elif name == "TZOFFSETFROM": + if parms: + raise ValueError( + "unsupported %s parm: %s " % (name, parms[0])) + tzoffsetfrom = self._parse_offset(value) + elif name == "TZOFFSETTO": + if parms: + raise ValueError( + "unsupported TZOFFSETTO parm: "+parms[0]) + tzoffsetto = self._parse_offset(value) + elif name == "TZNAME": + if parms: + raise ValueError( + "unsupported TZNAME parm: "+parms[0]) + tzname = value + elif name == "COMMENT": + pass + else: + raise ValueError("unsupported property: "+name) + else: + if name == "TZID": + if parms: + raise ValueError( + "unsupported TZID parm: "+parms[0]) + tzid = value + elif name in ("TZURL", "LAST-MODIFIED", "COMMENT"): + pass + else: + raise ValueError("unsupported property: "+name) + elif name == "BEGIN" and value == "VTIMEZONE": + tzid = None + comps = [] + invtz = True + + def __repr__(self): + return "%s(%s)" % (self.__class__.__name__, repr(self._s)) + + +if sys.platform != "win32": + TZFILES = ["/etc/localtime", "localtime"] + TZPATHS = ["/usr/share/zoneinfo", + "/usr/lib/zoneinfo", + "/usr/share/lib/zoneinfo", + "/etc/zoneinfo"] +else: + TZFILES = [] + TZPATHS = [] + + +def __get_gettz(): + tzlocal_classes = (tzlocal,) + if tzwinlocal is not None: + tzlocal_classes += (tzwinlocal,) + + class GettzFunc(object): + """ + Retrieve a time zone object from a string representation + + This function is intended to retrieve the :py:class:`tzinfo` subclass + that best represents the time zone that would be used if a POSIX + `TZ variable`_ were set to the same value. + + If no argument or an empty string is passed to ``gettz``, local time + is returned: + + .. code-block:: python3 + + >>> gettz() + tzfile('/etc/localtime') + + This function is also the preferred way to map IANA tz database keys + to :class:`tzfile` objects: + + .. code-block:: python3 + + >>> gettz('Pacific/Kiritimati') + tzfile('/usr/share/zoneinfo/Pacific/Kiritimati') + + On Windows, the standard is extended to include the Windows-specific + zone names provided by the operating system: + + .. code-block:: python3 + + >>> gettz('Egypt Standard Time') + tzwin('Egypt Standard Time') + + Passing a GNU ``TZ`` style string time zone specification returns a + :class:`tzstr` object: + + .. code-block:: python3 + + >>> gettz('AEST-10AEDT-11,M10.1.0/2,M4.1.0/3') + tzstr('AEST-10AEDT-11,M10.1.0/2,M4.1.0/3') + + :param name: + A time zone name (IANA, or, on Windows, Windows keys), location of + a ``tzfile(5)`` zoneinfo file or ``TZ`` variable style time zone + specifier. An empty string, no argument or ``None`` is interpreted + as local time. + + :return: + Returns an instance of one of ``dateutil``'s :py:class:`tzinfo` + subclasses. + + .. versionchanged:: 2.7.0 + + After version 2.7.0, any two calls to ``gettz`` using the same + input strings will return the same object: + + .. code-block:: python3 + + >>> tz.gettz('America/Chicago') is tz.gettz('America/Chicago') + True + + In addition to improving performance, this ensures that + `"same zone" semantics`_ are used for datetimes in the same zone. + + + .. _`TZ variable`: + https://www.gnu.org/software/libc/manual/html_node/TZ-Variable.html + + .. _`"same zone" semantics`: + https://blog.ganssle.io/articles/2018/02/aware-datetime-arithmetic.html + """ + def __init__(self): + + self.__instances = weakref.WeakValueDictionary() + self.__strong_cache_size = 8 + self.__strong_cache = OrderedDict() + self._cache_lock = _thread.allocate_lock() + + def __call__(self, name=None): + with self._cache_lock: + rv = self.__instances.get(name, None) + + if rv is None: + rv = self.nocache(name=name) + if not (name is None + or isinstance(rv, tzlocal_classes) + or rv is None): + # tzlocal is slightly more complicated than the other + # time zone providers because it depends on environment + # at construction time, so don't cache that. + # + # We also cannot store weak references to None, so we + # will also not store that. + self.__instances[name] = rv + else: + # No need for strong caching, return immediately + return rv + + self.__strong_cache[name] = self.__strong_cache.pop(name, rv) + + if len(self.__strong_cache) > self.__strong_cache_size: + self.__strong_cache.popitem(last=False) + + return rv + + def set_cache_size(self, size): + with self._cache_lock: + self.__strong_cache_size = size + while len(self.__strong_cache) > size: + self.__strong_cache.popitem(last=False) + + def cache_clear(self): + with self._cache_lock: + self.__instances = weakref.WeakValueDictionary() + self.__strong_cache.clear() + + @staticmethod + def nocache(name=None): + """A non-cached version of gettz""" + tz = None + if not name: + try: + name = os.environ["TZ"] + except KeyError: + pass + if name is None or name in ("", ":"): + for filepath in TZFILES: + if not os.path.isabs(filepath): + filename = filepath + for path in TZPATHS: + filepath = os.path.join(path, filename) + if os.path.isfile(filepath): + break + else: + continue + if os.path.isfile(filepath): + try: + tz = tzfile(filepath) + break + except (IOError, OSError, ValueError): + pass + else: + tz = tzlocal() + else: + try: + if name.startswith(":"): + name = name[1:] + except TypeError as e: + if isinstance(name, bytes): + new_msg = "gettz argument should be str, not bytes" + six.raise_from(TypeError(new_msg), e) + else: + raise + if os.path.isabs(name): + if os.path.isfile(name): + tz = tzfile(name) + else: + tz = None + else: + for path in TZPATHS: + filepath = os.path.join(path, name) + if not os.path.isfile(filepath): + filepath = filepath.replace(' ', '_') + if not os.path.isfile(filepath): + continue + try: + tz = tzfile(filepath) + break + except (IOError, OSError, ValueError): + pass + else: + tz = None + if tzwin is not None: + try: + tz = tzwin(name) + except (WindowsError, UnicodeEncodeError): + # UnicodeEncodeError is for Python 2.7 compat + tz = None + + if not tz: + from dateutil.zoneinfo import get_zonefile_instance + tz = get_zonefile_instance().get(name) + + if not tz: + for c in name: + # name is not a tzstr unless it has at least + # one offset. For short values of "name", an + # explicit for loop seems to be the fastest way + # To determine if a string contains a digit + if c in "0123456789": + try: + tz = tzstr(name) + except ValueError: + pass + break + else: + if name in ("GMT", "UTC"): + tz = UTC + elif name in time.tzname: + tz = tzlocal() + return tz + + return GettzFunc() + + +gettz = __get_gettz() +del __get_gettz + + +def datetime_exists(dt, tz=None): + """ + Given a datetime and a time zone, determine whether or not a given datetime + would fall in a gap. + + :param dt: + A :class:`datetime.datetime` (whose time zone will be ignored if ``tz`` + is provided.) + + :param tz: + A :class:`datetime.tzinfo` with support for the ``fold`` attribute. If + ``None`` or not provided, the datetime's own time zone will be used. + + :return: + Returns a boolean value whether or not the "wall time" exists in + ``tz``. + + .. versionadded:: 2.7.0 + """ + if tz is None: + if dt.tzinfo is None: + raise ValueError('Datetime is naive and no time zone provided.') + tz = dt.tzinfo + + dt = dt.replace(tzinfo=None) + + # This is essentially a test of whether or not the datetime can survive + # a round trip to UTC. + dt_rt = dt.replace(tzinfo=tz).astimezone(UTC).astimezone(tz) + dt_rt = dt_rt.replace(tzinfo=None) + + return dt == dt_rt + + +def datetime_ambiguous(dt, tz=None): + """ + Given a datetime and a time zone, determine whether or not a given datetime + is ambiguous (i.e if there are two times differentiated only by their DST + status). + + :param dt: + A :class:`datetime.datetime` (whose time zone will be ignored if ``tz`` + is provided.) + + :param tz: + A :class:`datetime.tzinfo` with support for the ``fold`` attribute. If + ``None`` or not provided, the datetime's own time zone will be used. + + :return: + Returns a boolean value whether or not the "wall time" is ambiguous in + ``tz``. + + .. versionadded:: 2.6.0 + """ + if tz is None: + if dt.tzinfo is None: + raise ValueError('Datetime is naive and no time zone provided.') + + tz = dt.tzinfo + + # If a time zone defines its own "is_ambiguous" function, we'll use that. + is_ambiguous_fn = getattr(tz, 'is_ambiguous', None) + if is_ambiguous_fn is not None: + try: + return tz.is_ambiguous(dt) + except Exception: + pass + + # If it doesn't come out and tell us it's ambiguous, we'll just check if + # the fold attribute has any effect on this particular date and time. + dt = dt.replace(tzinfo=tz) + wall_0 = enfold(dt, fold=0) + wall_1 = enfold(dt, fold=1) + + same_offset = wall_0.utcoffset() == wall_1.utcoffset() + same_dst = wall_0.dst() == wall_1.dst() + + return not (same_offset and same_dst) + + +def resolve_imaginary(dt): + """ + Given a datetime that may be imaginary, return an existing datetime. + + This function assumes that an imaginary datetime represents what the + wall time would be in a zone had the offset transition not occurred, so + it will always fall forward by the transition's change in offset. + + .. doctest:: + + >>> from dateutil import tz + >>> from datetime import datetime + >>> NYC = tz.gettz('America/New_York') + >>> print(tz.resolve_imaginary(datetime(2017, 3, 12, 2, 30, tzinfo=NYC))) + 2017-03-12 03:30:00-04:00 + + >>> KIR = tz.gettz('Pacific/Kiritimati') + >>> print(tz.resolve_imaginary(datetime(1995, 1, 1, 12, 30, tzinfo=KIR))) + 1995-01-02 12:30:00+14:00 + + As a note, :func:`datetime.astimezone` is guaranteed to produce a valid, + existing datetime, so a round-trip to and from UTC is sufficient to get + an extant datetime, however, this generally "falls back" to an earlier time + rather than falling forward to the STD side (though no guarantees are made + about this behavior). + + :param dt: + A :class:`datetime.datetime` which may or may not exist. + + :return: + Returns an existing :class:`datetime.datetime`. If ``dt`` was not + imaginary, the datetime returned is guaranteed to be the same object + passed to the function. + + .. versionadded:: 2.7.0 + """ + if dt.tzinfo is not None and not datetime_exists(dt): + + curr_offset = (dt + datetime.timedelta(hours=24)).utcoffset() + old_offset = (dt - datetime.timedelta(hours=24)).utcoffset() + + dt += curr_offset - old_offset + + return dt + + +def _datetime_to_timestamp(dt): + """ + Convert a :class:`datetime.datetime` object to an epoch timestamp in + seconds since January 1, 1970, ignoring the time zone. + """ + return (dt.replace(tzinfo=None) - EPOCH).total_seconds() + + +if sys.version_info >= (3, 6): + def _get_supported_offset(second_offset): + return second_offset +else: + def _get_supported_offset(second_offset): + # For python pre-3.6, round to full-minutes if that's not the case. + # Python's datetime doesn't accept sub-minute timezones. Check + # http://python.org/sf/1447945 or https://bugs.python.org/issue5288 + # for some information. + old_offset = second_offset + calculated_offset = 60 * ((second_offset + 30) // 60) + return calculated_offset + + +try: + # Python 3.7 feature + from contextlib import nullcontext as _nullcontext +except ImportError: + class _nullcontext(object): + """ + Class for wrapping contexts so that they are passed through in a + with statement. + """ + def __init__(self, context): + self.context = context + + def __enter__(self): + return self.context + + def __exit__(*args, **kwargs): + pass + +# vim:ts=4:sw=4:et diff --git a/venv/lib/python3.11/site-packages/dateutil/tz/win.py b/venv/lib/python3.11/site-packages/dateutil/tz/win.py new file mode 100644 index 0000000000000000000000000000000000000000..cde07ba792c40903f0c334839140173b39fd8124 --- /dev/null +++ b/venv/lib/python3.11/site-packages/dateutil/tz/win.py @@ -0,0 +1,370 @@ +# -*- coding: utf-8 -*- +""" +This module provides an interface to the native time zone data on Windows, +including :py:class:`datetime.tzinfo` implementations. + +Attempting to import this module on a non-Windows platform will raise an +:py:obj:`ImportError`. +""" +# This code was originally contributed by Jeffrey Harris. +import datetime +import struct + +from six.moves import winreg +from six import text_type + +try: + import ctypes + from ctypes import wintypes +except ValueError: + # ValueError is raised on non-Windows systems for some horrible reason. + raise ImportError("Running tzwin on non-Windows system") + +from ._common import tzrangebase + +__all__ = ["tzwin", "tzwinlocal", "tzres"] + +ONEWEEK = datetime.timedelta(7) + +TZKEYNAMENT = r"SOFTWARE\Microsoft\Windows NT\CurrentVersion\Time Zones" +TZKEYNAME9X = r"SOFTWARE\Microsoft\Windows\CurrentVersion\Time Zones" +TZLOCALKEYNAME = r"SYSTEM\CurrentControlSet\Control\TimeZoneInformation" + + +def _settzkeyname(): + handle = winreg.ConnectRegistry(None, winreg.HKEY_LOCAL_MACHINE) + try: + winreg.OpenKey(handle, TZKEYNAMENT).Close() + TZKEYNAME = TZKEYNAMENT + except WindowsError: + TZKEYNAME = TZKEYNAME9X + handle.Close() + return TZKEYNAME + + +TZKEYNAME = _settzkeyname() + + +class tzres(object): + """ + Class for accessing ``tzres.dll``, which contains timezone name related + resources. + + .. versionadded:: 2.5.0 + """ + p_wchar = ctypes.POINTER(wintypes.WCHAR) # Pointer to a wide char + + def __init__(self, tzres_loc='tzres.dll'): + # Load the user32 DLL so we can load strings from tzres + user32 = ctypes.WinDLL('user32') + + # Specify the LoadStringW function + user32.LoadStringW.argtypes = (wintypes.HINSTANCE, + wintypes.UINT, + wintypes.LPWSTR, + ctypes.c_int) + + self.LoadStringW = user32.LoadStringW + self._tzres = ctypes.WinDLL(tzres_loc) + self.tzres_loc = tzres_loc + + def load_name(self, offset): + """ + Load a timezone name from a DLL offset (integer). + + >>> from dateutil.tzwin import tzres + >>> tzr = tzres() + >>> print(tzr.load_name(112)) + 'Eastern Standard Time' + + :param offset: + A positive integer value referring to a string from the tzres dll. + + .. note:: + + Offsets found in the registry are generally of the form + ``@tzres.dll,-114``. The offset in this case is 114, not -114. + + """ + resource = self.p_wchar() + lpBuffer = ctypes.cast(ctypes.byref(resource), wintypes.LPWSTR) + nchar = self.LoadStringW(self._tzres._handle, offset, lpBuffer, 0) + return resource[:nchar] + + def name_from_string(self, tzname_str): + """ + Parse strings as returned from the Windows registry into the time zone + name as defined in the registry. + + >>> from dateutil.tzwin import tzres + >>> tzr = tzres() + >>> print(tzr.name_from_string('@tzres.dll,-251')) + 'Dateline Daylight Time' + >>> print(tzr.name_from_string('Eastern Standard Time')) + 'Eastern Standard Time' + + :param tzname_str: + A timezone name string as returned from a Windows registry key. + + :return: + Returns the localized timezone string from tzres.dll if the string + is of the form `@tzres.dll,-offset`, else returns the input string. + """ + if not tzname_str.startswith('@'): + return tzname_str + + name_splt = tzname_str.split(',-') + try: + offset = int(name_splt[1]) + except: + raise ValueError("Malformed timezone string.") + + return self.load_name(offset) + + +class tzwinbase(tzrangebase): + """tzinfo class based on win32's timezones available in the registry.""" + def __init__(self): + raise NotImplementedError('tzwinbase is an abstract base class') + + def __eq__(self, other): + # Compare on all relevant dimensions, including name. + if not isinstance(other, tzwinbase): + return NotImplemented + + return (self._std_offset == other._std_offset and + self._dst_offset == other._dst_offset and + self._stddayofweek == other._stddayofweek and + self._dstdayofweek == other._dstdayofweek and + self._stdweeknumber == other._stdweeknumber and + self._dstweeknumber == other._dstweeknumber and + self._stdhour == other._stdhour and + self._dsthour == other._dsthour and + self._stdminute == other._stdminute and + self._dstminute == other._dstminute and + self._std_abbr == other._std_abbr and + self._dst_abbr == other._dst_abbr) + + @staticmethod + def list(): + """Return a list of all time zones known to the system.""" + with winreg.ConnectRegistry(None, winreg.HKEY_LOCAL_MACHINE) as handle: + with winreg.OpenKey(handle, TZKEYNAME) as tzkey: + result = [winreg.EnumKey(tzkey, i) + for i in range(winreg.QueryInfoKey(tzkey)[0])] + return result + + def display(self): + """ + Return the display name of the time zone. + """ + return self._display + + def transitions(self, year): + """ + For a given year, get the DST on and off transition times, expressed + always on the standard time side. For zones with no transitions, this + function returns ``None``. + + :param year: + The year whose transitions you would like to query. + + :return: + Returns a :class:`tuple` of :class:`datetime.datetime` objects, + ``(dston, dstoff)`` for zones with an annual DST transition, or + ``None`` for fixed offset zones. + """ + + if not self.hasdst: + return None + + dston = picknthweekday(year, self._dstmonth, self._dstdayofweek, + self._dsthour, self._dstminute, + self._dstweeknumber) + + dstoff = picknthweekday(year, self._stdmonth, self._stddayofweek, + self._stdhour, self._stdminute, + self._stdweeknumber) + + # Ambiguous dates default to the STD side + dstoff -= self._dst_base_offset + + return dston, dstoff + + def _get_hasdst(self): + return self._dstmonth != 0 + + @property + def _dst_base_offset(self): + return self._dst_base_offset_ + + +class tzwin(tzwinbase): + """ + Time zone object created from the zone info in the Windows registry + + These are similar to :py:class:`dateutil.tz.tzrange` objects in that + the time zone data is provided in the format of a single offset rule + for either 0 or 2 time zone transitions per year. + + :param: name + The name of a Windows time zone key, e.g. "Eastern Standard Time". + The full list of keys can be retrieved with :func:`tzwin.list`. + """ + + def __init__(self, name): + self._name = name + + with winreg.ConnectRegistry(None, winreg.HKEY_LOCAL_MACHINE) as handle: + tzkeyname = text_type("{kn}\\{name}").format(kn=TZKEYNAME, name=name) + with winreg.OpenKey(handle, tzkeyname) as tzkey: + keydict = valuestodict(tzkey) + + self._std_abbr = keydict["Std"] + self._dst_abbr = keydict["Dlt"] + + self._display = keydict["Display"] + + # See http://ww_winreg.jsiinc.com/SUBA/tip0300/rh0398.htm + tup = struct.unpack("=3l16h", keydict["TZI"]) + stdoffset = -tup[0]-tup[1] # Bias + StandardBias * -1 + dstoffset = stdoffset-tup[2] # + DaylightBias * -1 + self._std_offset = datetime.timedelta(minutes=stdoffset) + self._dst_offset = datetime.timedelta(minutes=dstoffset) + + # for the meaning see the win32 TIME_ZONE_INFORMATION structure docs + # http://msdn.microsoft.com/en-us/library/windows/desktop/ms725481(v=vs.85).aspx + (self._stdmonth, + self._stddayofweek, # Sunday = 0 + self._stdweeknumber, # Last = 5 + self._stdhour, + self._stdminute) = tup[4:9] + + (self._dstmonth, + self._dstdayofweek, # Sunday = 0 + self._dstweeknumber, # Last = 5 + self._dsthour, + self._dstminute) = tup[12:17] + + self._dst_base_offset_ = self._dst_offset - self._std_offset + self.hasdst = self._get_hasdst() + + def __repr__(self): + return "tzwin(%s)" % repr(self._name) + + def __reduce__(self): + return (self.__class__, (self._name,)) + + +class tzwinlocal(tzwinbase): + """ + Class representing the local time zone information in the Windows registry + + While :class:`dateutil.tz.tzlocal` makes system calls (via the :mod:`time` + module) to retrieve time zone information, ``tzwinlocal`` retrieves the + rules directly from the Windows registry and creates an object like + :class:`dateutil.tz.tzwin`. + + Because Windows does not have an equivalent of :func:`time.tzset`, on + Windows, :class:`dateutil.tz.tzlocal` instances will always reflect the + time zone settings *at the time that the process was started*, meaning + changes to the machine's time zone settings during the run of a program + on Windows will **not** be reflected by :class:`dateutil.tz.tzlocal`. + Because ``tzwinlocal`` reads the registry directly, it is unaffected by + this issue. + """ + def __init__(self): + with winreg.ConnectRegistry(None, winreg.HKEY_LOCAL_MACHINE) as handle: + with winreg.OpenKey(handle, TZLOCALKEYNAME) as tzlocalkey: + keydict = valuestodict(tzlocalkey) + + self._std_abbr = keydict["StandardName"] + self._dst_abbr = keydict["DaylightName"] + + try: + tzkeyname = text_type('{kn}\\{sn}').format(kn=TZKEYNAME, + sn=self._std_abbr) + with winreg.OpenKey(handle, tzkeyname) as tzkey: + _keydict = valuestodict(tzkey) + self._display = _keydict["Display"] + except OSError: + self._display = None + + stdoffset = -keydict["Bias"]-keydict["StandardBias"] + dstoffset = stdoffset-keydict["DaylightBias"] + + self._std_offset = datetime.timedelta(minutes=stdoffset) + self._dst_offset = datetime.timedelta(minutes=dstoffset) + + # For reasons unclear, in this particular key, the day of week has been + # moved to the END of the SYSTEMTIME structure. + tup = struct.unpack("=8h", keydict["StandardStart"]) + + (self._stdmonth, + self._stdweeknumber, # Last = 5 + self._stdhour, + self._stdminute) = tup[1:5] + + self._stddayofweek = tup[7] + + tup = struct.unpack("=8h", keydict["DaylightStart"]) + + (self._dstmonth, + self._dstweeknumber, # Last = 5 + self._dsthour, + self._dstminute) = tup[1:5] + + self._dstdayofweek = tup[7] + + self._dst_base_offset_ = self._dst_offset - self._std_offset + self.hasdst = self._get_hasdst() + + def __repr__(self): + return "tzwinlocal()" + + def __str__(self): + # str will return the standard name, not the daylight name. + return "tzwinlocal(%s)" % repr(self._std_abbr) + + def __reduce__(self): + return (self.__class__, ()) + + +def picknthweekday(year, month, dayofweek, hour, minute, whichweek): + """ dayofweek == 0 means Sunday, whichweek 5 means last instance """ + first = datetime.datetime(year, month, 1, hour, minute) + + # This will work if dayofweek is ISO weekday (1-7) or Microsoft-style (0-6), + # Because 7 % 7 = 0 + weekdayone = first.replace(day=((dayofweek - first.isoweekday()) % 7) + 1) + wd = weekdayone + ((whichweek - 1) * ONEWEEK) + if (wd.month != month): + wd -= ONEWEEK + + return wd + + +def valuestodict(key): + """Convert a registry key's values to a dictionary.""" + dout = {} + size = winreg.QueryInfoKey(key)[1] + tz_res = None + + for i in range(size): + key_name, value, dtype = winreg.EnumValue(key, i) + if dtype == winreg.REG_DWORD or dtype == winreg.REG_DWORD_LITTLE_ENDIAN: + # If it's a DWORD (32-bit integer), it's stored as unsigned - convert + # that to a proper signed integer + if value & (1 << 31): + value = value - (1 << 32) + elif dtype == winreg.REG_SZ: + # If it's a reference to the tzres DLL, load the actual string + if value.startswith('@tzres'): + tz_res = tz_res or tzres() + value = tz_res.name_from_string(value) + + value = value.rstrip('\x00') # Remove trailing nulls + + dout[key_name] = value + + return dout diff --git a/venv/lib/python3.11/site-packages/dateutil/tzwin.py b/venv/lib/python3.11/site-packages/dateutil/tzwin.py new file mode 100644 index 0000000000000000000000000000000000000000..cebc673e40fc376653ebf037e96f0a6d0b33e906 --- /dev/null +++ b/venv/lib/python3.11/site-packages/dateutil/tzwin.py @@ -0,0 +1,2 @@ +# tzwin has moved to dateutil.tz.win +from .tz.win import * diff --git a/venv/lib/python3.11/site-packages/dateutil/utils.py b/venv/lib/python3.11/site-packages/dateutil/utils.py new file mode 100644 index 0000000000000000000000000000000000000000..dd2d245a0bebcd5fc37ac20526aabbd5358dab0e --- /dev/null +++ b/venv/lib/python3.11/site-packages/dateutil/utils.py @@ -0,0 +1,71 @@ +# -*- coding: utf-8 -*- +""" +This module offers general convenience and utility functions for dealing with +datetimes. + +.. versionadded:: 2.7.0 +""" +from __future__ import unicode_literals + +from datetime import datetime, time + + +def today(tzinfo=None): + """ + Returns a :py:class:`datetime` representing the current day at midnight + + :param tzinfo: + The time zone to attach (also used to determine the current day). + + :return: + A :py:class:`datetime.datetime` object representing the current day + at midnight. + """ + + dt = datetime.now(tzinfo) + return datetime.combine(dt.date(), time(0, tzinfo=tzinfo)) + + +def default_tzinfo(dt, tzinfo): + """ + Sets the ``tzinfo`` parameter on naive datetimes only + + This is useful for example when you are provided a datetime that may have + either an implicit or explicit time zone, such as when parsing a time zone + string. + + .. doctest:: + + >>> from dateutil.tz import tzoffset + >>> from dateutil.parser import parse + >>> from dateutil.utils import default_tzinfo + >>> dflt_tz = tzoffset("EST", -18000) + >>> print(default_tzinfo(parse('2014-01-01 12:30 UTC'), dflt_tz)) + 2014-01-01 12:30:00+00:00 + >>> print(default_tzinfo(parse('2014-01-01 12:30'), dflt_tz)) + 2014-01-01 12:30:00-05:00 + + :param dt: + The datetime on which to replace the time zone + + :param tzinfo: + The :py:class:`datetime.tzinfo` subclass instance to assign to + ``dt`` if (and only if) it is naive. + + :return: + Returns an aware :py:class:`datetime.datetime`. + """ + if dt.tzinfo is not None: + return dt + else: + return dt.replace(tzinfo=tzinfo) + + +def within_delta(dt1, dt2, delta): + """ + Useful for comparing two datetimes that may have a negligible difference + to be considered equal. + """ + delta = abs(delta) + difference = dt1 - dt2 + return -delta <= difference <= delta diff --git a/venv/lib/python3.11/site-packages/dateutil/zoneinfo/__init__.py b/venv/lib/python3.11/site-packages/dateutil/zoneinfo/__init__.py new file mode 100644 index 0000000000000000000000000000000000000000..34f11ad66c88047f2c049a4cdcc937b4b78ea6d6 --- /dev/null +++ b/venv/lib/python3.11/site-packages/dateutil/zoneinfo/__init__.py @@ -0,0 +1,167 @@ +# -*- coding: utf-8 -*- +import warnings +import json + +from tarfile import TarFile +from pkgutil import get_data +from io import BytesIO + +from dateutil.tz import tzfile as _tzfile + +__all__ = ["get_zonefile_instance", "gettz", "gettz_db_metadata"] + +ZONEFILENAME = "dateutil-zoneinfo.tar.gz" +METADATA_FN = 'METADATA' + + +class tzfile(_tzfile): + def __reduce__(self): + return (gettz, (self._filename,)) + + +def getzoneinfofile_stream(): + try: + return BytesIO(get_data(__name__, ZONEFILENAME)) + except IOError as e: # TODO switch to FileNotFoundError? + warnings.warn("I/O error({0}): {1}".format(e.errno, e.strerror)) + return None + + +class ZoneInfoFile(object): + def __init__(self, zonefile_stream=None): + if zonefile_stream is not None: + with TarFile.open(fileobj=zonefile_stream) as tf: + self.zones = {zf.name: tzfile(tf.extractfile(zf), filename=zf.name) + for zf in tf.getmembers() + if zf.isfile() and zf.name != METADATA_FN} + # deal with links: They'll point to their parent object. Less + # waste of memory + links = {zl.name: self.zones[zl.linkname] + for zl in tf.getmembers() if + zl.islnk() or zl.issym()} + self.zones.update(links) + try: + metadata_json = tf.extractfile(tf.getmember(METADATA_FN)) + metadata_str = metadata_json.read().decode('UTF-8') + self.metadata = json.loads(metadata_str) + except KeyError: + # no metadata in tar file + self.metadata = None + else: + self.zones = {} + self.metadata = None + + def get(self, name, default=None): + """ + Wrapper for :func:`ZoneInfoFile.zones.get`. This is a convenience method + for retrieving zones from the zone dictionary. + + :param name: + The name of the zone to retrieve. (Generally IANA zone names) + + :param default: + The value to return in the event of a missing key. + + .. versionadded:: 2.6.0 + + """ + return self.zones.get(name, default) + + +# The current API has gettz as a module function, although in fact it taps into +# a stateful class. So as a workaround for now, without changing the API, we +# will create a new "global" class instance the first time a user requests a +# timezone. Ugly, but adheres to the api. +# +# TODO: Remove after deprecation period. +_CLASS_ZONE_INSTANCE = [] + + +def get_zonefile_instance(new_instance=False): + """ + This is a convenience function which provides a :class:`ZoneInfoFile` + instance using the data provided by the ``dateutil`` package. By default, it + caches a single instance of the ZoneInfoFile object and returns that. + + :param new_instance: + If ``True``, a new instance of :class:`ZoneInfoFile` is instantiated and + used as the cached instance for the next call. Otherwise, new instances + are created only as necessary. + + :return: + Returns a :class:`ZoneInfoFile` object. + + .. versionadded:: 2.6 + """ + if new_instance: + zif = None + else: + zif = getattr(get_zonefile_instance, '_cached_instance', None) + + if zif is None: + zif = ZoneInfoFile(getzoneinfofile_stream()) + + get_zonefile_instance._cached_instance = zif + + return zif + + +def gettz(name): + """ + This retrieves a time zone from the local zoneinfo tarball that is packaged + with dateutil. + + :param name: + An IANA-style time zone name, as found in the zoneinfo file. + + :return: + Returns a :class:`dateutil.tz.tzfile` time zone object. + + .. warning:: + It is generally inadvisable to use this function, and it is only + provided for API compatibility with earlier versions. This is *not* + equivalent to ``dateutil.tz.gettz()``, which selects an appropriate + time zone based on the inputs, favoring system zoneinfo. This is ONLY + for accessing the dateutil-specific zoneinfo (which may be out of + date compared to the system zoneinfo). + + .. deprecated:: 2.6 + If you need to use a specific zoneinfofile over the system zoneinfo, + instantiate a :class:`dateutil.zoneinfo.ZoneInfoFile` object and call + :func:`dateutil.zoneinfo.ZoneInfoFile.get(name)` instead. + + Use :func:`get_zonefile_instance` to retrieve an instance of the + dateutil-provided zoneinfo. + """ + warnings.warn("zoneinfo.gettz() will be removed in future versions, " + "to use the dateutil-provided zoneinfo files, instantiate a " + "ZoneInfoFile object and use ZoneInfoFile.zones.get() " + "instead. See the documentation for details.", + DeprecationWarning) + + if len(_CLASS_ZONE_INSTANCE) == 0: + _CLASS_ZONE_INSTANCE.append(ZoneInfoFile(getzoneinfofile_stream())) + return _CLASS_ZONE_INSTANCE[0].zones.get(name) + + +def gettz_db_metadata(): + """ Get the zonefile metadata + + See `zonefile_metadata`_ + + :returns: + A dictionary with the database metadata + + .. deprecated:: 2.6 + See deprecation warning in :func:`zoneinfo.gettz`. To get metadata, + query the attribute ``zoneinfo.ZoneInfoFile.metadata``. + """ + warnings.warn("zoneinfo.gettz_db_metadata() will be removed in future " + "versions, to use the dateutil-provided zoneinfo files, " + "ZoneInfoFile object and query the 'metadata' attribute " + "instead. See the documentation for details.", + DeprecationWarning) + + if len(_CLASS_ZONE_INSTANCE) == 0: + _CLASS_ZONE_INSTANCE.append(ZoneInfoFile(getzoneinfofile_stream())) + return _CLASS_ZONE_INSTANCE[0].metadata diff --git a/venv/lib/python3.11/site-packages/dateutil/zoneinfo/dateutil-zoneinfo.tar.gz b/venv/lib/python3.11/site-packages/dateutil/zoneinfo/dateutil-zoneinfo.tar.gz new file mode 100644 index 0000000000000000000000000000000000000000..ff62a934a5009337271c60501278a7a34913a20b --- /dev/null +++ b/venv/lib/python3.11/site-packages/dateutil/zoneinfo/dateutil-zoneinfo.tar.gz @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:d3ea52e7b6e968de0d884df1288193596fa95b803db4f92a18279a7398004475 +size 156400 diff --git a/venv/lib/python3.11/site-packages/dateutil/zoneinfo/rebuild.py b/venv/lib/python3.11/site-packages/dateutil/zoneinfo/rebuild.py new file mode 100644 index 0000000000000000000000000000000000000000..684c6586f091350c347f2b6150935f5214ffec27 --- /dev/null +++ b/venv/lib/python3.11/site-packages/dateutil/zoneinfo/rebuild.py @@ -0,0 +1,75 @@ +import logging +import os +import tempfile +import shutil +import json +from subprocess import check_call, check_output +from tarfile import TarFile + +from dateutil.zoneinfo import METADATA_FN, ZONEFILENAME + + +def rebuild(filename, tag=None, format="gz", zonegroups=[], metadata=None): + """Rebuild the internal timezone info in dateutil/zoneinfo/zoneinfo*tar* + + filename is the timezone tarball from ``ftp.iana.org/tz``. + + """ + tmpdir = tempfile.mkdtemp() + zonedir = os.path.join(tmpdir, "zoneinfo") + moduledir = os.path.dirname(__file__) + try: + with TarFile.open(filename) as tf: + for name in zonegroups: + tf.extract(name, tmpdir) + filepaths = [os.path.join(tmpdir, n) for n in zonegroups] + + _run_zic(zonedir, filepaths) + + # write metadata file + with open(os.path.join(zonedir, METADATA_FN), 'w') as f: + json.dump(metadata, f, indent=4, sort_keys=True) + target = os.path.join(moduledir, ZONEFILENAME) + with TarFile.open(target, "w:%s" % format) as tf: + for entry in os.listdir(zonedir): + entrypath = os.path.join(zonedir, entry) + tf.add(entrypath, entry) + finally: + shutil.rmtree(tmpdir) + + +def _run_zic(zonedir, filepaths): + """Calls the ``zic`` compiler in a compatible way to get a "fat" binary. + + Recent versions of ``zic`` default to ``-b slim``, while older versions + don't even have the ``-b`` option (but default to "fat" binaries). The + current version of dateutil does not support Version 2+ TZif files, which + causes problems when used in conjunction with "slim" binaries, so this + function is used to ensure that we always get a "fat" binary. + """ + + try: + help_text = check_output(["zic", "--help"]) + except OSError as e: + _print_on_nosuchfile(e) + raise + + if b"-b " in help_text: + bloat_args = ["-b", "fat"] + else: + bloat_args = [] + + check_call(["zic"] + bloat_args + ["-d", zonedir] + filepaths) + + +def _print_on_nosuchfile(e): + """Print helpful troubleshooting message + + e is an exception raised by subprocess.check_call() + + """ + if e.errno == 2: + logging.error( + "Could not find zic. Perhaps you need to install " + "libc-bin or some other package that provides it, " + "or it's not in your PATH?") diff --git a/venv/lib/python3.11/site-packages/diffusers/__init__.py b/venv/lib/python3.11/site-packages/diffusers/__init__.py new file mode 100644 index 0000000000000000000000000000000000000000..bd9bd80d346ea33b95ef452af752250486d9d172 --- /dev/null +++ b/venv/lib/python3.11/site-packages/diffusers/__init__.py @@ -0,0 +1,1014 @@ +__version__ = "0.32.1" + +from typing import TYPE_CHECKING + +from .utils import ( + DIFFUSERS_SLOW_IMPORT, + OptionalDependencyNotAvailable, + _LazyModule, + is_flax_available, + is_k_diffusion_available, + is_librosa_available, + is_note_seq_available, + is_onnx_available, + is_scipy_available, + is_sentencepiece_available, + is_torch_available, + is_torchsde_available, + is_transformers_available, +) + + +# Lazy Import based on +# https://github.com/huggingface/transformers/blob/main/src/transformers/__init__.py + +# When adding a new object to this init, please add it to `_import_structure`. The `_import_structure` is a dictionary submodule to list of object names, +# and is used to defer the actual importing for when the objects are requested. +# This way `import diffusers` provides the names in the namespace without actually importing anything (and especially none of the backends). + +_import_structure = { + "configuration_utils": ["ConfigMixin"], + "loaders": ["FromOriginalModelMixin"], + "models": [], + "pipelines": [], + "quantizers.quantization_config": ["BitsAndBytesConfig", "GGUFQuantizationConfig", "TorchAoConfig"], + "schedulers": [], + "utils": [ + "OptionalDependencyNotAvailable", + "is_flax_available", + "is_inflect_available", + "is_invisible_watermark_available", + "is_k_diffusion_available", + "is_k_diffusion_version", + "is_librosa_available", + "is_note_seq_available", + "is_onnx_available", + "is_scipy_available", + "is_torch_available", + "is_torchsde_available", + "is_transformers_available", + "is_transformers_version", + "is_unidecode_available", + "logging", + ], +} + +try: + if not is_onnx_available(): + raise OptionalDependencyNotAvailable() +except OptionalDependencyNotAvailable: + from .utils import dummy_onnx_objects # noqa F403 + + _import_structure["utils.dummy_onnx_objects"] = [ + name for name in dir(dummy_onnx_objects) if not name.startswith("_") + ] + +else: + _import_structure["pipelines"].extend(["OnnxRuntimeModel"]) + +try: + if not is_torch_available(): + raise OptionalDependencyNotAvailable() +except OptionalDependencyNotAvailable: + from .utils import dummy_pt_objects # noqa F403 + + _import_structure["utils.dummy_pt_objects"] = [name for name in dir(dummy_pt_objects) if not name.startswith("_")] + +else: + _import_structure["models"].extend( + [ + "AllegroTransformer3DModel", + "AsymmetricAutoencoderKL", + "AuraFlowTransformer2DModel", + "AutoencoderDC", + "AutoencoderKL", + "AutoencoderKLAllegro", + "AutoencoderKLCogVideoX", + "AutoencoderKLHunyuanVideo", + "AutoencoderKLLTXVideo", + "AutoencoderKLMochi", + "AutoencoderKLTemporalDecoder", + "AutoencoderOobleck", + "AutoencoderTiny", + "CogVideoXTransformer3DModel", + "CogView3PlusTransformer2DModel", + "ConsistencyDecoderVAE", + "ControlNetModel", + "ControlNetUnionModel", + "ControlNetXSAdapter", + "DiTTransformer2DModel", + "FluxControlNetModel", + "FluxMultiControlNetModel", + "FluxTransformer2DModel", + "HunyuanDiT2DControlNetModel", + "HunyuanDiT2DModel", + "HunyuanDiT2DMultiControlNetModel", + "HunyuanVideoTransformer3DModel", + "I2VGenXLUNet", + "Kandinsky3UNet", + "LatteTransformer3DModel", + "LTXVideoTransformer3DModel", + "LuminaNextDiT2DModel", + "MochiTransformer3DModel", + "ModelMixin", + "MotionAdapter", + "MultiAdapter", + "MultiControlNetModel", + "PixArtTransformer2DModel", + "PriorTransformer", + "SanaTransformer2DModel", + "SD3ControlNetModel", + "SD3MultiControlNetModel", + "SD3Transformer2DModel", + "SparseControlNetModel", + "StableAudioDiTModel", + "StableCascadeUNet", + "T2IAdapter", + "T5FilmDecoder", + "Transformer2DModel", + "UNet1DModel", + "UNet2DConditionModel", + "UNet2DModel", + "UNet3DConditionModel", + "UNetControlNetXSModel", + "UNetMotionModel", + "UNetSpatioTemporalConditionModel", + "UVit2DModel", + "VQModel", + ] + ) + _import_structure["optimization"] = [ + "get_constant_schedule", + "get_constant_schedule_with_warmup", + "get_cosine_schedule_with_warmup", + "get_cosine_with_hard_restarts_schedule_with_warmup", + "get_linear_schedule_with_warmup", + "get_polynomial_decay_schedule_with_warmup", + "get_scheduler", + ] + _import_structure["pipelines"].extend( + [ + "AudioPipelineOutput", + "AutoPipelineForImage2Image", + "AutoPipelineForInpainting", + "AutoPipelineForText2Image", + "ConsistencyModelPipeline", + "DanceDiffusionPipeline", + "DDIMPipeline", + "DDPMPipeline", + "DiffusionPipeline", + "DiTPipeline", + "ImagePipelineOutput", + "KarrasVePipeline", + "LDMPipeline", + "LDMSuperResolutionPipeline", + "PNDMPipeline", + "RePaintPipeline", + "ScoreSdeVePipeline", + "StableDiffusionMixin", + ] + ) + _import_structure["quantizers"] = ["DiffusersQuantizer"] + _import_structure["schedulers"].extend( + [ + "AmusedScheduler", + "CMStochasticIterativeScheduler", + "CogVideoXDDIMScheduler", + "CogVideoXDPMScheduler", + "DDIMInverseScheduler", + "DDIMParallelScheduler", + "DDIMScheduler", + "DDPMParallelScheduler", + "DDPMScheduler", + "DDPMWuerstchenScheduler", + "DEISMultistepScheduler", + "DPMSolverMultistepInverseScheduler", + "DPMSolverMultistepScheduler", + "DPMSolverSinglestepScheduler", + "EDMDPMSolverMultistepScheduler", + "EDMEulerScheduler", + "EulerAncestralDiscreteScheduler", + "EulerDiscreteScheduler", + "FlowMatchEulerDiscreteScheduler", + "FlowMatchHeunDiscreteScheduler", + "HeunDiscreteScheduler", + "IPNDMScheduler", + "KarrasVeScheduler", + "KDPM2AncestralDiscreteScheduler", + "KDPM2DiscreteScheduler", + "LCMScheduler", + "PNDMScheduler", + "RePaintScheduler", + "SASolverScheduler", + "SchedulerMixin", + "ScoreSdeVeScheduler", + "TCDScheduler", + "UnCLIPScheduler", + "UniPCMultistepScheduler", + "VQDiffusionScheduler", + ] + ) + _import_structure["training_utils"] = ["EMAModel"] + +try: + if not (is_torch_available() and is_scipy_available()): + raise OptionalDependencyNotAvailable() +except OptionalDependencyNotAvailable: + from .utils import dummy_torch_and_scipy_objects # noqa F403 + + _import_structure["utils.dummy_torch_and_scipy_objects"] = [ + name for name in dir(dummy_torch_and_scipy_objects) if not name.startswith("_") + ] + +else: + _import_structure["schedulers"].extend(["LMSDiscreteScheduler"]) + +try: + if not (is_torch_available() and is_torchsde_available()): + raise OptionalDependencyNotAvailable() +except OptionalDependencyNotAvailable: + from .utils import dummy_torch_and_torchsde_objects # noqa F403 + + _import_structure["utils.dummy_torch_and_torchsde_objects"] = [ + name for name in dir(dummy_torch_and_torchsde_objects) if not name.startswith("_") + ] + +else: + _import_structure["schedulers"].extend(["CosineDPMSolverMultistepScheduler", "DPMSolverSDEScheduler"]) + +try: + if not (is_torch_available() and is_transformers_available()): + raise OptionalDependencyNotAvailable() +except OptionalDependencyNotAvailable: + from .utils import dummy_torch_and_transformers_objects # noqa F403 + + _import_structure["utils.dummy_torch_and_transformers_objects"] = [ + name for name in dir(dummy_torch_and_transformers_objects) if not name.startswith("_") + ] + +else: + _import_structure["pipelines"].extend( + [ + "AllegroPipeline", + "AltDiffusionImg2ImgPipeline", + "AltDiffusionPipeline", + "AmusedImg2ImgPipeline", + "AmusedInpaintPipeline", + "AmusedPipeline", + "AnimateDiffControlNetPipeline", + "AnimateDiffPAGPipeline", + "AnimateDiffPipeline", + "AnimateDiffSDXLPipeline", + "AnimateDiffSparseControlNetPipeline", + "AnimateDiffVideoToVideoControlNetPipeline", + "AnimateDiffVideoToVideoPipeline", + "AudioLDM2Pipeline", + "AudioLDM2ProjectionModel", + "AudioLDM2UNet2DConditionModel", + "AudioLDMPipeline", + "AuraFlowPipeline", + "BlipDiffusionControlNetPipeline", + "BlipDiffusionPipeline", + "CLIPImageProjection", + "CogVideoXFunControlPipeline", + "CogVideoXImageToVideoPipeline", + "CogVideoXPipeline", + "CogVideoXVideoToVideoPipeline", + "CogView3PlusPipeline", + "CycleDiffusionPipeline", + "FluxControlImg2ImgPipeline", + "FluxControlInpaintPipeline", + "FluxControlNetImg2ImgPipeline", + "FluxControlNetInpaintPipeline", + "FluxControlNetPipeline", + "FluxControlPipeline", + "FluxFillPipeline", + "FluxImg2ImgPipeline", + "FluxInpaintPipeline", + "FluxPipeline", + "FluxPriorReduxPipeline", + "HunyuanDiTControlNetPipeline", + "HunyuanDiTPAGPipeline", + "HunyuanDiTPipeline", + "HunyuanVideoPipeline", + "I2VGenXLPipeline", + "IFImg2ImgPipeline", + "IFImg2ImgSuperResolutionPipeline", + "IFInpaintingPipeline", + "IFInpaintingSuperResolutionPipeline", + "IFPipeline", + "IFSuperResolutionPipeline", + "ImageTextPipelineOutput", + "Kandinsky3Img2ImgPipeline", + "Kandinsky3Pipeline", + "KandinskyCombinedPipeline", + "KandinskyImg2ImgCombinedPipeline", + "KandinskyImg2ImgPipeline", + "KandinskyInpaintCombinedPipeline", + "KandinskyInpaintPipeline", + "KandinskyPipeline", + "KandinskyPriorPipeline", + "KandinskyV22CombinedPipeline", + "KandinskyV22ControlnetImg2ImgPipeline", + "KandinskyV22ControlnetPipeline", + "KandinskyV22Img2ImgCombinedPipeline", + "KandinskyV22Img2ImgPipeline", + "KandinskyV22InpaintCombinedPipeline", + "KandinskyV22InpaintPipeline", + "KandinskyV22Pipeline", + "KandinskyV22PriorEmb2EmbPipeline", + "KandinskyV22PriorPipeline", + "LatentConsistencyModelImg2ImgPipeline", + "LatentConsistencyModelPipeline", + "LattePipeline", + "LDMTextToImagePipeline", + "LEditsPPPipelineStableDiffusion", + "LEditsPPPipelineStableDiffusionXL", + "LTXImageToVideoPipeline", + "LTXPipeline", + "LuminaText2ImgPipeline", + "MarigoldDepthPipeline", + "MarigoldNormalsPipeline", + "MochiPipeline", + "MusicLDMPipeline", + "PaintByExamplePipeline", + "PIAPipeline", + "PixArtAlphaPipeline", + "PixArtSigmaPAGPipeline", + "PixArtSigmaPipeline", + "ReduxImageEncoder", + "SanaPAGPipeline", + "SanaPipeline", + "SemanticStableDiffusionPipeline", + "ShapEImg2ImgPipeline", + "ShapEPipeline", + "StableAudioPipeline", + "StableAudioProjectionModel", + "StableCascadeCombinedPipeline", + "StableCascadeDecoderPipeline", + "StableCascadePriorPipeline", + "StableDiffusion3ControlNetInpaintingPipeline", + "StableDiffusion3ControlNetPipeline", + "StableDiffusion3Img2ImgPipeline", + "StableDiffusion3InpaintPipeline", + "StableDiffusion3PAGImg2ImgPipeline", + "StableDiffusion3PAGImg2ImgPipeline", + "StableDiffusion3PAGPipeline", + "StableDiffusion3Pipeline", + "StableDiffusionAdapterPipeline", + "StableDiffusionAttendAndExcitePipeline", + "StableDiffusionControlNetImg2ImgPipeline", + "StableDiffusionControlNetInpaintPipeline", + "StableDiffusionControlNetPAGInpaintPipeline", + "StableDiffusionControlNetPAGPipeline", + "StableDiffusionControlNetPipeline", + "StableDiffusionControlNetXSPipeline", + "StableDiffusionDepth2ImgPipeline", + "StableDiffusionDiffEditPipeline", + "StableDiffusionGLIGENPipeline", + "StableDiffusionGLIGENTextImagePipeline", + "StableDiffusionImageVariationPipeline", + "StableDiffusionImg2ImgPipeline", + "StableDiffusionInpaintPipeline", + "StableDiffusionInpaintPipelineLegacy", + "StableDiffusionInstructPix2PixPipeline", + "StableDiffusionLatentUpscalePipeline", + "StableDiffusionLDM3DPipeline", + "StableDiffusionModelEditingPipeline", + "StableDiffusionPAGImg2ImgPipeline", + "StableDiffusionPAGInpaintPipeline", + "StableDiffusionPAGPipeline", + "StableDiffusionPanoramaPipeline", + "StableDiffusionParadigmsPipeline", + "StableDiffusionPipeline", + "StableDiffusionPipelineSafe", + "StableDiffusionPix2PixZeroPipeline", + "StableDiffusionSAGPipeline", + "StableDiffusionUpscalePipeline", + "StableDiffusionXLAdapterPipeline", + "StableDiffusionXLControlNetImg2ImgPipeline", + "StableDiffusionXLControlNetInpaintPipeline", + "StableDiffusionXLControlNetPAGImg2ImgPipeline", + "StableDiffusionXLControlNetPAGPipeline", + "StableDiffusionXLControlNetPipeline", + "StableDiffusionXLControlNetUnionImg2ImgPipeline", + "StableDiffusionXLControlNetUnionInpaintPipeline", + "StableDiffusionXLControlNetUnionPipeline", + "StableDiffusionXLControlNetXSPipeline", + "StableDiffusionXLImg2ImgPipeline", + "StableDiffusionXLInpaintPipeline", + "StableDiffusionXLInstructPix2PixPipeline", + "StableDiffusionXLPAGImg2ImgPipeline", + "StableDiffusionXLPAGInpaintPipeline", + "StableDiffusionXLPAGPipeline", + "StableDiffusionXLPipeline", + "StableUnCLIPImg2ImgPipeline", + "StableUnCLIPPipeline", + "StableVideoDiffusionPipeline", + "TextToVideoSDPipeline", + "TextToVideoZeroPipeline", + "TextToVideoZeroSDXLPipeline", + "UnCLIPImageVariationPipeline", + "UnCLIPPipeline", + "UniDiffuserModel", + "UniDiffuserPipeline", + "UniDiffuserTextDecoder", + "VersatileDiffusionDualGuidedPipeline", + "VersatileDiffusionImageVariationPipeline", + "VersatileDiffusionPipeline", + "VersatileDiffusionTextToImagePipeline", + "VideoToVideoSDPipeline", + "VQDiffusionPipeline", + "WuerstchenCombinedPipeline", + "WuerstchenDecoderPipeline", + "WuerstchenPriorPipeline", + ] + ) + +try: + if not (is_torch_available() and is_transformers_available() and is_k_diffusion_available()): + raise OptionalDependencyNotAvailable() +except OptionalDependencyNotAvailable: + from .utils import dummy_torch_and_transformers_and_k_diffusion_objects # noqa F403 + + _import_structure["utils.dummy_torch_and_transformers_and_k_diffusion_objects"] = [ + name for name in dir(dummy_torch_and_transformers_and_k_diffusion_objects) if not name.startswith("_") + ] + +else: + _import_structure["pipelines"].extend(["StableDiffusionKDiffusionPipeline", "StableDiffusionXLKDiffusionPipeline"]) + +try: + if not (is_torch_available() and is_transformers_available() and is_sentencepiece_available()): + raise OptionalDependencyNotAvailable() +except OptionalDependencyNotAvailable: + from .utils import dummy_torch_and_transformers_and_sentencepiece_objects # noqa F403 + + _import_structure["utils.dummy_torch_and_transformers_and_sentencepiece_objects"] = [ + name for name in dir(dummy_torch_and_transformers_and_sentencepiece_objects) if not name.startswith("_") + ] + +else: + _import_structure["pipelines"].extend(["KolorsImg2ImgPipeline", "KolorsPAGPipeline", "KolorsPipeline"]) + +try: + if not (is_torch_available() and is_transformers_available() and is_onnx_available()): + raise OptionalDependencyNotAvailable() +except OptionalDependencyNotAvailable: + from .utils import dummy_torch_and_transformers_and_onnx_objects # noqa F403 + + _import_structure["utils.dummy_torch_and_transformers_and_onnx_objects"] = [ + name for name in dir(dummy_torch_and_transformers_and_onnx_objects) if not name.startswith("_") + ] + +else: + _import_structure["pipelines"].extend( + [ + "OnnxStableDiffusionImg2ImgPipeline", + "OnnxStableDiffusionInpaintPipeline", + "OnnxStableDiffusionInpaintPipelineLegacy", + "OnnxStableDiffusionPipeline", + "OnnxStableDiffusionUpscalePipeline", + "StableDiffusionOnnxPipeline", + ] + ) + +try: + if not (is_torch_available() and is_librosa_available()): + raise OptionalDependencyNotAvailable() +except OptionalDependencyNotAvailable: + from .utils import dummy_torch_and_librosa_objects # noqa F403 + + _import_structure["utils.dummy_torch_and_librosa_objects"] = [ + name for name in dir(dummy_torch_and_librosa_objects) if not name.startswith("_") + ] + +else: + _import_structure["pipelines"].extend(["AudioDiffusionPipeline", "Mel"]) + +try: + if not (is_transformers_available() and is_torch_available() and is_note_seq_available()): + raise OptionalDependencyNotAvailable() +except OptionalDependencyNotAvailable: + from .utils import dummy_transformers_and_torch_and_note_seq_objects # noqa F403 + + _import_structure["utils.dummy_transformers_and_torch_and_note_seq_objects"] = [ + name for name in dir(dummy_transformers_and_torch_and_note_seq_objects) if not name.startswith("_") + ] + + +else: + _import_structure["pipelines"].extend(["SpectrogramDiffusionPipeline"]) + +try: + if not is_flax_available(): + raise OptionalDependencyNotAvailable() +except OptionalDependencyNotAvailable: + from .utils import dummy_flax_objects # noqa F403 + + _import_structure["utils.dummy_flax_objects"] = [ + name for name in dir(dummy_flax_objects) if not name.startswith("_") + ] + + +else: + _import_structure["models.controlnets.controlnet_flax"] = ["FlaxControlNetModel"] + _import_structure["models.modeling_flax_utils"] = ["FlaxModelMixin"] + _import_structure["models.unets.unet_2d_condition_flax"] = ["FlaxUNet2DConditionModel"] + _import_structure["models.vae_flax"] = ["FlaxAutoencoderKL"] + _import_structure["pipelines"].extend(["FlaxDiffusionPipeline"]) + _import_structure["schedulers"].extend( + [ + "FlaxDDIMScheduler", + "FlaxDDPMScheduler", + "FlaxDPMSolverMultistepScheduler", + "FlaxEulerDiscreteScheduler", + "FlaxKarrasVeScheduler", + "FlaxLMSDiscreteScheduler", + "FlaxPNDMScheduler", + "FlaxSchedulerMixin", + "FlaxScoreSdeVeScheduler", + ] + ) + + +try: + if not (is_flax_available() and is_transformers_available()): + raise OptionalDependencyNotAvailable() +except OptionalDependencyNotAvailable: + from .utils import dummy_flax_and_transformers_objects # noqa F403 + + _import_structure["utils.dummy_flax_and_transformers_objects"] = [ + name for name in dir(dummy_flax_and_transformers_objects) if not name.startswith("_") + ] + + +else: + _import_structure["pipelines"].extend( + [ + "FlaxStableDiffusionControlNetPipeline", + "FlaxStableDiffusionImg2ImgPipeline", + "FlaxStableDiffusionInpaintPipeline", + "FlaxStableDiffusionPipeline", + "FlaxStableDiffusionXLPipeline", + ] + ) + +try: + if not (is_note_seq_available()): + raise OptionalDependencyNotAvailable() +except OptionalDependencyNotAvailable: + from .utils import dummy_note_seq_objects # noqa F403 + + _import_structure["utils.dummy_note_seq_objects"] = [ + name for name in dir(dummy_note_seq_objects) if not name.startswith("_") + ] + + +else: + _import_structure["pipelines"].extend(["MidiProcessor"]) + +if TYPE_CHECKING or DIFFUSERS_SLOW_IMPORT: + from .configuration_utils import ConfigMixin + from .quantizers.quantization_config import BitsAndBytesConfig, GGUFQuantizationConfig, TorchAoConfig + + try: + if not is_onnx_available(): + raise OptionalDependencyNotAvailable() + except OptionalDependencyNotAvailable: + from .utils.dummy_onnx_objects import * # noqa F403 + else: + from .pipelines import OnnxRuntimeModel + + try: + if not is_torch_available(): + raise OptionalDependencyNotAvailable() + except OptionalDependencyNotAvailable: + from .utils.dummy_pt_objects import * # noqa F403 + else: + from .models import ( + AllegroTransformer3DModel, + AsymmetricAutoencoderKL, + AuraFlowTransformer2DModel, + AutoencoderDC, + AutoencoderKL, + AutoencoderKLAllegro, + AutoencoderKLCogVideoX, + AutoencoderKLHunyuanVideo, + AutoencoderKLLTXVideo, + AutoencoderKLMochi, + AutoencoderKLTemporalDecoder, + AutoencoderOobleck, + AutoencoderTiny, + CogVideoXTransformer3DModel, + CogView3PlusTransformer2DModel, + ConsistencyDecoderVAE, + ControlNetModel, + ControlNetUnionModel, + ControlNetXSAdapter, + DiTTransformer2DModel, + FluxControlNetModel, + FluxMultiControlNetModel, + FluxTransformer2DModel, + HunyuanDiT2DControlNetModel, + HunyuanDiT2DModel, + HunyuanDiT2DMultiControlNetModel, + HunyuanVideoTransformer3DModel, + I2VGenXLUNet, + Kandinsky3UNet, + LatteTransformer3DModel, + LTXVideoTransformer3DModel, + LuminaNextDiT2DModel, + MochiTransformer3DModel, + ModelMixin, + MotionAdapter, + MultiAdapter, + MultiControlNetModel, + PixArtTransformer2DModel, + PriorTransformer, + SanaTransformer2DModel, + SD3ControlNetModel, + SD3MultiControlNetModel, + SD3Transformer2DModel, + SparseControlNetModel, + StableAudioDiTModel, + T2IAdapter, + T5FilmDecoder, + Transformer2DModel, + UNet1DModel, + UNet2DConditionModel, + UNet2DModel, + UNet3DConditionModel, + UNetControlNetXSModel, + UNetMotionModel, + UNetSpatioTemporalConditionModel, + UVit2DModel, + VQModel, + ) + from .optimization import ( + get_constant_schedule, + get_constant_schedule_with_warmup, + get_cosine_schedule_with_warmup, + get_cosine_with_hard_restarts_schedule_with_warmup, + get_linear_schedule_with_warmup, + get_polynomial_decay_schedule_with_warmup, + get_scheduler, + ) + from .pipelines import ( + AudioPipelineOutput, + AutoPipelineForImage2Image, + AutoPipelineForInpainting, + AutoPipelineForText2Image, + BlipDiffusionControlNetPipeline, + BlipDiffusionPipeline, + CLIPImageProjection, + ConsistencyModelPipeline, + DanceDiffusionPipeline, + DDIMPipeline, + DDPMPipeline, + DiffusionPipeline, + DiTPipeline, + ImagePipelineOutput, + KarrasVePipeline, + LDMPipeline, + LDMSuperResolutionPipeline, + PNDMPipeline, + RePaintPipeline, + ScoreSdeVePipeline, + StableDiffusionMixin, + ) + from .quantizers import DiffusersQuantizer + from .schedulers import ( + AmusedScheduler, + CMStochasticIterativeScheduler, + CogVideoXDDIMScheduler, + CogVideoXDPMScheduler, + DDIMInverseScheduler, + DDIMParallelScheduler, + DDIMScheduler, + DDPMParallelScheduler, + DDPMScheduler, + DDPMWuerstchenScheduler, + DEISMultistepScheduler, + DPMSolverMultistepInverseScheduler, + DPMSolverMultistepScheduler, + DPMSolverSinglestepScheduler, + EDMDPMSolverMultistepScheduler, + EDMEulerScheduler, + EulerAncestralDiscreteScheduler, + EulerDiscreteScheduler, + FlowMatchEulerDiscreteScheduler, + FlowMatchHeunDiscreteScheduler, + HeunDiscreteScheduler, + IPNDMScheduler, + KarrasVeScheduler, + KDPM2AncestralDiscreteScheduler, + KDPM2DiscreteScheduler, + LCMScheduler, + PNDMScheduler, + RePaintScheduler, + SASolverScheduler, + SchedulerMixin, + ScoreSdeVeScheduler, + TCDScheduler, + UnCLIPScheduler, + UniPCMultistepScheduler, + VQDiffusionScheduler, + ) + from .training_utils import EMAModel + + try: + if not (is_torch_available() and is_scipy_available()): + raise OptionalDependencyNotAvailable() + except OptionalDependencyNotAvailable: + from .utils.dummy_torch_and_scipy_objects import * # noqa F403 + else: + from .schedulers import LMSDiscreteScheduler + + try: + if not (is_torch_available() and is_torchsde_available()): + raise OptionalDependencyNotAvailable() + except OptionalDependencyNotAvailable: + from .utils.dummy_torch_and_torchsde_objects import * # noqa F403 + else: + from .schedulers import CosineDPMSolverMultistepScheduler, DPMSolverSDEScheduler + + try: + if not (is_torch_available() and is_transformers_available()): + raise OptionalDependencyNotAvailable() + except OptionalDependencyNotAvailable: + from .utils.dummy_torch_and_transformers_objects import * # noqa F403 + else: + from .pipelines import ( + AllegroPipeline, + AltDiffusionImg2ImgPipeline, + AltDiffusionPipeline, + AmusedImg2ImgPipeline, + AmusedInpaintPipeline, + AmusedPipeline, + AnimateDiffControlNetPipeline, + AnimateDiffPAGPipeline, + AnimateDiffPipeline, + AnimateDiffSDXLPipeline, + AnimateDiffSparseControlNetPipeline, + AnimateDiffVideoToVideoControlNetPipeline, + AnimateDiffVideoToVideoPipeline, + AudioLDM2Pipeline, + AudioLDM2ProjectionModel, + AudioLDM2UNet2DConditionModel, + AudioLDMPipeline, + AuraFlowPipeline, + CLIPImageProjection, + CogVideoXFunControlPipeline, + CogVideoXImageToVideoPipeline, + CogVideoXPipeline, + CogVideoXVideoToVideoPipeline, + CogView3PlusPipeline, + CycleDiffusionPipeline, + FluxControlImg2ImgPipeline, + FluxControlInpaintPipeline, + FluxControlNetImg2ImgPipeline, + FluxControlNetInpaintPipeline, + FluxControlNetPipeline, + FluxControlPipeline, + FluxFillPipeline, + FluxImg2ImgPipeline, + FluxInpaintPipeline, + FluxPipeline, + FluxPriorReduxPipeline, + HunyuanDiTControlNetPipeline, + HunyuanDiTPAGPipeline, + HunyuanDiTPipeline, + HunyuanVideoPipeline, + I2VGenXLPipeline, + IFImg2ImgPipeline, + IFImg2ImgSuperResolutionPipeline, + IFInpaintingPipeline, + IFInpaintingSuperResolutionPipeline, + IFPipeline, + IFSuperResolutionPipeline, + ImageTextPipelineOutput, + Kandinsky3Img2ImgPipeline, + Kandinsky3Pipeline, + KandinskyCombinedPipeline, + KandinskyImg2ImgCombinedPipeline, + KandinskyImg2ImgPipeline, + KandinskyInpaintCombinedPipeline, + KandinskyInpaintPipeline, + KandinskyPipeline, + KandinskyPriorPipeline, + KandinskyV22CombinedPipeline, + KandinskyV22ControlnetImg2ImgPipeline, + KandinskyV22ControlnetPipeline, + KandinskyV22Img2ImgCombinedPipeline, + KandinskyV22Img2ImgPipeline, + KandinskyV22InpaintCombinedPipeline, + KandinskyV22InpaintPipeline, + KandinskyV22Pipeline, + KandinskyV22PriorEmb2EmbPipeline, + KandinskyV22PriorPipeline, + LatentConsistencyModelImg2ImgPipeline, + LatentConsistencyModelPipeline, + LattePipeline, + LDMTextToImagePipeline, + LEditsPPPipelineStableDiffusion, + LEditsPPPipelineStableDiffusionXL, + LTXImageToVideoPipeline, + LTXPipeline, + LuminaText2ImgPipeline, + MarigoldDepthPipeline, + MarigoldNormalsPipeline, + MochiPipeline, + MusicLDMPipeline, + PaintByExamplePipeline, + PIAPipeline, + PixArtAlphaPipeline, + PixArtSigmaPAGPipeline, + PixArtSigmaPipeline, + ReduxImageEncoder, + SanaPAGPipeline, + SanaPipeline, + SemanticStableDiffusionPipeline, + ShapEImg2ImgPipeline, + ShapEPipeline, + StableAudioPipeline, + StableAudioProjectionModel, + StableCascadeCombinedPipeline, + StableCascadeDecoderPipeline, + StableCascadePriorPipeline, + StableDiffusion3ControlNetPipeline, + StableDiffusion3Img2ImgPipeline, + StableDiffusion3InpaintPipeline, + StableDiffusion3PAGImg2ImgPipeline, + StableDiffusion3PAGPipeline, + StableDiffusion3Pipeline, + StableDiffusionAdapterPipeline, + StableDiffusionAttendAndExcitePipeline, + StableDiffusionControlNetImg2ImgPipeline, + StableDiffusionControlNetInpaintPipeline, + StableDiffusionControlNetPAGInpaintPipeline, + StableDiffusionControlNetPAGPipeline, + StableDiffusionControlNetPipeline, + StableDiffusionControlNetXSPipeline, + StableDiffusionDepth2ImgPipeline, + StableDiffusionDiffEditPipeline, + StableDiffusionGLIGENPipeline, + StableDiffusionGLIGENTextImagePipeline, + StableDiffusionImageVariationPipeline, + StableDiffusionImg2ImgPipeline, + StableDiffusionInpaintPipeline, + StableDiffusionInpaintPipelineLegacy, + StableDiffusionInstructPix2PixPipeline, + StableDiffusionLatentUpscalePipeline, + StableDiffusionLDM3DPipeline, + StableDiffusionModelEditingPipeline, + StableDiffusionPAGImg2ImgPipeline, + StableDiffusionPAGInpaintPipeline, + StableDiffusionPAGPipeline, + StableDiffusionPanoramaPipeline, + StableDiffusionParadigmsPipeline, + StableDiffusionPipeline, + StableDiffusionPipelineSafe, + StableDiffusionPix2PixZeroPipeline, + StableDiffusionSAGPipeline, + StableDiffusionUpscalePipeline, + StableDiffusionXLAdapterPipeline, + StableDiffusionXLControlNetImg2ImgPipeline, + StableDiffusionXLControlNetInpaintPipeline, + StableDiffusionXLControlNetPAGImg2ImgPipeline, + StableDiffusionXLControlNetPAGPipeline, + StableDiffusionXLControlNetPipeline, + StableDiffusionXLControlNetUnionImg2ImgPipeline, + StableDiffusionXLControlNetUnionInpaintPipeline, + StableDiffusionXLControlNetUnionPipeline, + StableDiffusionXLControlNetXSPipeline, + StableDiffusionXLImg2ImgPipeline, + StableDiffusionXLInpaintPipeline, + StableDiffusionXLInstructPix2PixPipeline, + StableDiffusionXLPAGImg2ImgPipeline, + StableDiffusionXLPAGInpaintPipeline, + StableDiffusionXLPAGPipeline, + StableDiffusionXLPipeline, + StableUnCLIPImg2ImgPipeline, + StableUnCLIPPipeline, + StableVideoDiffusionPipeline, + TextToVideoSDPipeline, + TextToVideoZeroPipeline, + TextToVideoZeroSDXLPipeline, + UnCLIPImageVariationPipeline, + UnCLIPPipeline, + UniDiffuserModel, + UniDiffuserPipeline, + UniDiffuserTextDecoder, + VersatileDiffusionDualGuidedPipeline, + VersatileDiffusionImageVariationPipeline, + VersatileDiffusionPipeline, + VersatileDiffusionTextToImagePipeline, + VideoToVideoSDPipeline, + VQDiffusionPipeline, + WuerstchenCombinedPipeline, + WuerstchenDecoderPipeline, + WuerstchenPriorPipeline, + ) + + try: + if not (is_torch_available() and is_transformers_available() and is_k_diffusion_available()): + raise OptionalDependencyNotAvailable() + except OptionalDependencyNotAvailable: + from .utils.dummy_torch_and_transformers_and_k_diffusion_objects import * # noqa F403 + else: + from .pipelines import StableDiffusionKDiffusionPipeline, StableDiffusionXLKDiffusionPipeline + + try: + if not (is_torch_available() and is_transformers_available() and is_sentencepiece_available()): + raise OptionalDependencyNotAvailable() + except OptionalDependencyNotAvailable: + from .utils.dummy_torch_and_transformers_and_sentencepiece_objects import * # noqa F403 + else: + from .pipelines import KolorsImg2ImgPipeline, KolorsPAGPipeline, KolorsPipeline + try: + if not (is_torch_available() and is_transformers_available() and is_onnx_available()): + raise OptionalDependencyNotAvailable() + except OptionalDependencyNotAvailable: + from .utils.dummy_torch_and_transformers_and_onnx_objects import * # noqa F403 + else: + from .pipelines import ( + OnnxStableDiffusionImg2ImgPipeline, + OnnxStableDiffusionInpaintPipeline, + OnnxStableDiffusionInpaintPipelineLegacy, + OnnxStableDiffusionPipeline, + OnnxStableDiffusionUpscalePipeline, + StableDiffusionOnnxPipeline, + ) + + try: + if not (is_torch_available() and is_librosa_available()): + raise OptionalDependencyNotAvailable() + except OptionalDependencyNotAvailable: + from .utils.dummy_torch_and_librosa_objects import * # noqa F403 + else: + from .pipelines import AudioDiffusionPipeline, Mel + + try: + if not (is_transformers_available() and is_torch_available() and is_note_seq_available()): + raise OptionalDependencyNotAvailable() + except OptionalDependencyNotAvailable: + from .utils.dummy_transformers_and_torch_and_note_seq_objects import * # noqa F403 + else: + from .pipelines import SpectrogramDiffusionPipeline + + try: + if not is_flax_available(): + raise OptionalDependencyNotAvailable() + except OptionalDependencyNotAvailable: + from .utils.dummy_flax_objects import * # noqa F403 + else: + from .models.controlnets.controlnet_flax import FlaxControlNetModel + from .models.modeling_flax_utils import FlaxModelMixin + from .models.unets.unet_2d_condition_flax import FlaxUNet2DConditionModel + from .models.vae_flax import FlaxAutoencoderKL + from .pipelines import FlaxDiffusionPipeline + from .schedulers import ( + FlaxDDIMScheduler, + FlaxDDPMScheduler, + FlaxDPMSolverMultistepScheduler, + FlaxEulerDiscreteScheduler, + FlaxKarrasVeScheduler, + FlaxLMSDiscreteScheduler, + FlaxPNDMScheduler, + FlaxSchedulerMixin, + FlaxScoreSdeVeScheduler, + ) + + try: + if not (is_flax_available() and is_transformers_available()): + raise OptionalDependencyNotAvailable() + except OptionalDependencyNotAvailable: + from .utils.dummy_flax_and_transformers_objects import * # noqa F403 + else: + from .pipelines import ( + FlaxStableDiffusionControlNetPipeline, + FlaxStableDiffusionImg2ImgPipeline, + FlaxStableDiffusionInpaintPipeline, + FlaxStableDiffusionPipeline, + FlaxStableDiffusionXLPipeline, + ) + + try: + if not (is_note_seq_available()): + raise OptionalDependencyNotAvailable() + except OptionalDependencyNotAvailable: + from .utils.dummy_note_seq_objects import * # noqa F403 + else: + from .pipelines import MidiProcessor + +else: + import sys + + sys.modules[__name__] = _LazyModule( + __name__, + globals()["__file__"], + _import_structure, + module_spec=__spec__, + extra_objects={"__version__": __version__}, + ) diff --git a/venv/lib/python3.11/site-packages/diffusers/callbacks.py b/venv/lib/python3.11/site-packages/diffusers/callbacks.py new file mode 100644 index 0000000000000000000000000000000000000000..4b8b15368c4736ce54282e92231a752558663cb6 --- /dev/null +++ b/venv/lib/python3.11/site-packages/diffusers/callbacks.py @@ -0,0 +1,209 @@ +from typing import Any, Dict, List + +from .configuration_utils import ConfigMixin, register_to_config +from .utils import CONFIG_NAME + + +class PipelineCallback(ConfigMixin): + """ + Base class for all the official callbacks used in a pipeline. This class provides a structure for implementing + custom callbacks and ensures that all callbacks have a consistent interface. + + Please implement the following: + `tensor_inputs`: This should return a list of tensor inputs specific to your callback. You will only be able to + include + variables listed in the `._callback_tensor_inputs` attribute of your pipeline class. + `callback_fn`: This method defines the core functionality of your callback. + """ + + config_name = CONFIG_NAME + + @register_to_config + def __init__(self, cutoff_step_ratio=1.0, cutoff_step_index=None): + super().__init__() + + if (cutoff_step_ratio is None and cutoff_step_index is None) or ( + cutoff_step_ratio is not None and cutoff_step_index is not None + ): + raise ValueError("Either cutoff_step_ratio or cutoff_step_index should be provided, not both or none.") + + if cutoff_step_ratio is not None and ( + not isinstance(cutoff_step_ratio, float) or not (0.0 <= cutoff_step_ratio <= 1.0) + ): + raise ValueError("cutoff_step_ratio must be a float between 0.0 and 1.0.") + + @property + def tensor_inputs(self) -> List[str]: + raise NotImplementedError(f"You need to set the attribute `tensor_inputs` for {self.__class__}") + + def callback_fn(self, pipeline, step_index, timesteps, callback_kwargs) -> Dict[str, Any]: + raise NotImplementedError(f"You need to implement the method `callback_fn` for {self.__class__}") + + def __call__(self, pipeline, step_index, timestep, callback_kwargs) -> Dict[str, Any]: + return self.callback_fn(pipeline, step_index, timestep, callback_kwargs) + + +class MultiPipelineCallbacks: + """ + This class is designed to handle multiple pipeline callbacks. It accepts a list of PipelineCallback objects and + provides a unified interface for calling all of them. + """ + + def __init__(self, callbacks: List[PipelineCallback]): + self.callbacks = callbacks + + @property + def tensor_inputs(self) -> List[str]: + return [input for callback in self.callbacks for input in callback.tensor_inputs] + + def __call__(self, pipeline, step_index, timestep, callback_kwargs) -> Dict[str, Any]: + """ + Calls all the callbacks in order with the given arguments and returns the final callback_kwargs. + """ + for callback in self.callbacks: + callback_kwargs = callback(pipeline, step_index, timestep, callback_kwargs) + + return callback_kwargs + + +class SDCFGCutoffCallback(PipelineCallback): + """ + Callback function for Stable Diffusion Pipelines. After certain number of steps (set by `cutoff_step_ratio` or + `cutoff_step_index`), this callback will disable the CFG. + + Note: This callback mutates the pipeline by changing the `_guidance_scale` attribute to 0.0 after the cutoff step. + """ + + tensor_inputs = ["prompt_embeds"] + + def callback_fn(self, pipeline, step_index, timestep, callback_kwargs) -> Dict[str, Any]: + cutoff_step_ratio = self.config.cutoff_step_ratio + cutoff_step_index = self.config.cutoff_step_index + + # Use cutoff_step_index if it's not None, otherwise use cutoff_step_ratio + cutoff_step = ( + cutoff_step_index if cutoff_step_index is not None else int(pipeline.num_timesteps * cutoff_step_ratio) + ) + + if step_index == cutoff_step: + prompt_embeds = callback_kwargs[self.tensor_inputs[0]] + prompt_embeds = prompt_embeds[-1:] # "-1" denotes the embeddings for conditional text tokens. + + pipeline._guidance_scale = 0.0 + + callback_kwargs[self.tensor_inputs[0]] = prompt_embeds + return callback_kwargs + + +class SDXLCFGCutoffCallback(PipelineCallback): + """ + Callback function for the base Stable Diffusion XL Pipelines. After certain number of steps (set by + `cutoff_step_ratio` or `cutoff_step_index`), this callback will disable the CFG. + + Note: This callback mutates the pipeline by changing the `_guidance_scale` attribute to 0.0 after the cutoff step. + """ + + tensor_inputs = [ + "prompt_embeds", + "add_text_embeds", + "add_time_ids", + ] + + def callback_fn(self, pipeline, step_index, timestep, callback_kwargs) -> Dict[str, Any]: + cutoff_step_ratio = self.config.cutoff_step_ratio + cutoff_step_index = self.config.cutoff_step_index + + # Use cutoff_step_index if it's not None, otherwise use cutoff_step_ratio + cutoff_step = ( + cutoff_step_index if cutoff_step_index is not None else int(pipeline.num_timesteps * cutoff_step_ratio) + ) + + if step_index == cutoff_step: + prompt_embeds = callback_kwargs[self.tensor_inputs[0]] + prompt_embeds = prompt_embeds[-1:] # "-1" denotes the embeddings for conditional text tokens. + + add_text_embeds = callback_kwargs[self.tensor_inputs[1]] + add_text_embeds = add_text_embeds[-1:] # "-1" denotes the embeddings for conditional pooled text tokens + + add_time_ids = callback_kwargs[self.tensor_inputs[2]] + add_time_ids = add_time_ids[-1:] # "-1" denotes the embeddings for conditional added time vector + + pipeline._guidance_scale = 0.0 + + callback_kwargs[self.tensor_inputs[0]] = prompt_embeds + callback_kwargs[self.tensor_inputs[1]] = add_text_embeds + callback_kwargs[self.tensor_inputs[2]] = add_time_ids + + return callback_kwargs + + +class SDXLControlnetCFGCutoffCallback(PipelineCallback): + """ + Callback function for the Controlnet Stable Diffusion XL Pipelines. After certain number of steps (set by + `cutoff_step_ratio` or `cutoff_step_index`), this callback will disable the CFG. + + Note: This callback mutates the pipeline by changing the `_guidance_scale` attribute to 0.0 after the cutoff step. + """ + + tensor_inputs = [ + "prompt_embeds", + "add_text_embeds", + "add_time_ids", + "image", + ] + + def callback_fn(self, pipeline, step_index, timestep, callback_kwargs) -> Dict[str, Any]: + cutoff_step_ratio = self.config.cutoff_step_ratio + cutoff_step_index = self.config.cutoff_step_index + + # Use cutoff_step_index if it's not None, otherwise use cutoff_step_ratio + cutoff_step = ( + cutoff_step_index if cutoff_step_index is not None else int(pipeline.num_timesteps * cutoff_step_ratio) + ) + + if step_index == cutoff_step: + prompt_embeds = callback_kwargs[self.tensor_inputs[0]] + prompt_embeds = prompt_embeds[-1:] # "-1" denotes the embeddings for conditional text tokens. + + add_text_embeds = callback_kwargs[self.tensor_inputs[1]] + add_text_embeds = add_text_embeds[-1:] # "-1" denotes the embeddings for conditional pooled text tokens + + add_time_ids = callback_kwargs[self.tensor_inputs[2]] + add_time_ids = add_time_ids[-1:] # "-1" denotes the embeddings for conditional added time vector + + # For Controlnet + image = callback_kwargs[self.tensor_inputs[3]] + image = image[-1:] + + pipeline._guidance_scale = 0.0 + + callback_kwargs[self.tensor_inputs[0]] = prompt_embeds + callback_kwargs[self.tensor_inputs[1]] = add_text_embeds + callback_kwargs[self.tensor_inputs[2]] = add_time_ids + callback_kwargs[self.tensor_inputs[3]] = image + + return callback_kwargs + + +class IPAdapterScaleCutoffCallback(PipelineCallback): + """ + Callback function for any pipeline that inherits `IPAdapterMixin`. After certain number of steps (set by + `cutoff_step_ratio` or `cutoff_step_index`), this callback will set the IP Adapter scale to `0.0`. + + Note: This callback mutates the IP Adapter attention processors by setting the scale to 0.0 after the cutoff step. + """ + + tensor_inputs = [] + + def callback_fn(self, pipeline, step_index, timestep, callback_kwargs) -> Dict[str, Any]: + cutoff_step_ratio = self.config.cutoff_step_ratio + cutoff_step_index = self.config.cutoff_step_index + + # Use cutoff_step_index if it's not None, otherwise use cutoff_step_ratio + cutoff_step = ( + cutoff_step_index if cutoff_step_index is not None else int(pipeline.num_timesteps * cutoff_step_ratio) + ) + + if step_index == cutoff_step: + pipeline.set_ip_adapter_scale(0.0) + return callback_kwargs diff --git a/venv/lib/python3.11/site-packages/diffusers/commands/__init__.py b/venv/lib/python3.11/site-packages/diffusers/commands/__init__.py new file mode 100644 index 0000000000000000000000000000000000000000..8208283f6e40a8e46175b1672d6bf44f9d83a02b --- /dev/null +++ b/venv/lib/python3.11/site-packages/diffusers/commands/__init__.py @@ -0,0 +1,27 @@ +# Copyright 2024 The HuggingFace Team. All rights reserved. +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. + +from abc import ABC, abstractmethod +from argparse import ArgumentParser + + +class BaseDiffusersCLICommand(ABC): + @staticmethod + @abstractmethod + def register_subcommand(parser: ArgumentParser): + raise NotImplementedError() + + @abstractmethod + def run(self): + raise NotImplementedError() diff --git a/venv/lib/python3.11/site-packages/diffusers/commands/diffusers_cli.py b/venv/lib/python3.11/site-packages/diffusers/commands/diffusers_cli.py new file mode 100644 index 0000000000000000000000000000000000000000..f582c3bcd0df0c5167a8de18123b4474e64bb344 --- /dev/null +++ b/venv/lib/python3.11/site-packages/diffusers/commands/diffusers_cli.py @@ -0,0 +1,43 @@ +#!/usr/bin/env python +# Copyright 2024 The HuggingFace Team. All rights reserved. +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. + +from argparse import ArgumentParser + +from .env import EnvironmentCommand +from .fp16_safetensors import FP16SafetensorsCommand + + +def main(): + parser = ArgumentParser("Diffusers CLI tool", usage="diffusers-cli []") + commands_parser = parser.add_subparsers(help="diffusers-cli command helpers") + + # Register commands + EnvironmentCommand.register_subcommand(commands_parser) + FP16SafetensorsCommand.register_subcommand(commands_parser) + + # Let's go + args = parser.parse_args() + + if not hasattr(args, "func"): + parser.print_help() + exit(1) + + # Run + service = args.func(args) + service.run() + + +if __name__ == "__main__": + main() diff --git a/venv/lib/python3.11/site-packages/diffusers/commands/env.py b/venv/lib/python3.11/site-packages/diffusers/commands/env.py new file mode 100644 index 0000000000000000000000000000000000000000..d0af30bf1c65984c25a484c7f77b35f80f1a9fa9 --- /dev/null +++ b/venv/lib/python3.11/site-packages/diffusers/commands/env.py @@ -0,0 +1,180 @@ +# Copyright 2024 The HuggingFace Team. All rights reserved. +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. + +import platform +import subprocess +from argparse import ArgumentParser + +import huggingface_hub + +from .. import __version__ as version +from ..utils import ( + is_accelerate_available, + is_bitsandbytes_available, + is_flax_available, + is_google_colab, + is_peft_available, + is_safetensors_available, + is_torch_available, + is_transformers_available, + is_xformers_available, +) +from . import BaseDiffusersCLICommand + + +def info_command_factory(_): + return EnvironmentCommand() + + +class EnvironmentCommand(BaseDiffusersCLICommand): + @staticmethod + def register_subcommand(parser: ArgumentParser) -> None: + download_parser = parser.add_parser("env") + download_parser.set_defaults(func=info_command_factory) + + def run(self) -> dict: + hub_version = huggingface_hub.__version__ + + safetensors_version = "not installed" + if is_safetensors_available(): + import safetensors + + safetensors_version = safetensors.__version__ + + pt_version = "not installed" + pt_cuda_available = "NA" + if is_torch_available(): + import torch + + pt_version = torch.__version__ + pt_cuda_available = torch.cuda.is_available() + + flax_version = "not installed" + jax_version = "not installed" + jaxlib_version = "not installed" + jax_backend = "NA" + if is_flax_available(): + import flax + import jax + import jaxlib + + flax_version = flax.__version__ + jax_version = jax.__version__ + jaxlib_version = jaxlib.__version__ + jax_backend = jax.lib.xla_bridge.get_backend().platform + + transformers_version = "not installed" + if is_transformers_available(): + import transformers + + transformers_version = transformers.__version__ + + accelerate_version = "not installed" + if is_accelerate_available(): + import accelerate + + accelerate_version = accelerate.__version__ + + peft_version = "not installed" + if is_peft_available(): + import peft + + peft_version = peft.__version__ + + bitsandbytes_version = "not installed" + if is_bitsandbytes_available(): + import bitsandbytes + + bitsandbytes_version = bitsandbytes.__version__ + + xformers_version = "not installed" + if is_xformers_available(): + import xformers + + xformers_version = xformers.__version__ + + platform_info = platform.platform() + + is_google_colab_str = "Yes" if is_google_colab() else "No" + + accelerator = "NA" + if platform.system() in {"Linux", "Windows"}: + try: + sp = subprocess.Popen( + ["nvidia-smi", "--query-gpu=gpu_name,memory.total", "--format=csv,noheader"], + stdout=subprocess.PIPE, + stderr=subprocess.PIPE, + ) + out_str, _ = sp.communicate() + out_str = out_str.decode("utf-8") + + if len(out_str) > 0: + accelerator = out_str.strip() + except FileNotFoundError: + pass + elif platform.system() == "Darwin": # Mac OS + try: + sp = subprocess.Popen( + ["system_profiler", "SPDisplaysDataType"], + stdout=subprocess.PIPE, + stderr=subprocess.PIPE, + ) + out_str, _ = sp.communicate() + out_str = out_str.decode("utf-8") + + start = out_str.find("Chipset Model:") + if start != -1: + start += len("Chipset Model:") + end = out_str.find("\n", start) + accelerator = out_str[start:end].strip() + + start = out_str.find("VRAM (Total):") + if start != -1: + start += len("VRAM (Total):") + end = out_str.find("\n", start) + accelerator += " VRAM: " + out_str[start:end].strip() + except FileNotFoundError: + pass + else: + print("It seems you are running an unusual OS. Could you fill in the accelerator manually?") + + info = { + "🤗 Diffusers version": version, + "Platform": platform_info, + "Running on Google Colab?": is_google_colab_str, + "Python version": platform.python_version(), + "PyTorch version (GPU?)": f"{pt_version} ({pt_cuda_available})", + "Flax version (CPU?/GPU?/TPU?)": f"{flax_version} ({jax_backend})", + "Jax version": jax_version, + "JaxLib version": jaxlib_version, + "Huggingface_hub version": hub_version, + "Transformers version": transformers_version, + "Accelerate version": accelerate_version, + "PEFT version": peft_version, + "Bitsandbytes version": bitsandbytes_version, + "Safetensors version": safetensors_version, + "xFormers version": xformers_version, + "Accelerator": accelerator, + "Using GPU in script?": "", + "Using distributed or parallel set-up in script?": "", + } + + print("\nCopy-and-paste the text below in your GitHub issue and FILL OUT the two last points.\n") + print(self.format_dict(info)) + + return info + + @staticmethod + def format_dict(d: dict) -> str: + return "\n".join([f"- {prop}: {val}" for prop, val in d.items()]) + "\n" diff --git a/venv/lib/python3.11/site-packages/diffusers/commands/fp16_safetensors.py b/venv/lib/python3.11/site-packages/diffusers/commands/fp16_safetensors.py new file mode 100644 index 0000000000000000000000000000000000000000..b26b8816bc4cf1a6272d3eebf5ab2be8a5dd865b --- /dev/null +++ b/venv/lib/python3.11/site-packages/diffusers/commands/fp16_safetensors.py @@ -0,0 +1,132 @@ +# Copyright 2024 The HuggingFace Team. All rights reserved. +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. + +""" +Usage example: + diffusers-cli fp16_safetensors --ckpt_id=openai/shap-e --fp16 --use_safetensors +""" + +import glob +import json +import warnings +from argparse import ArgumentParser, Namespace +from importlib import import_module + +import huggingface_hub +import torch +from huggingface_hub import hf_hub_download +from packaging import version + +from ..utils import logging +from . import BaseDiffusersCLICommand + + +def conversion_command_factory(args: Namespace): + if args.use_auth_token: + warnings.warn( + "The `--use_auth_token` flag is deprecated and will be removed in a future version. Authentication is now" + " handled automatically if user is logged in." + ) + return FP16SafetensorsCommand(args.ckpt_id, args.fp16, args.use_safetensors) + + +class FP16SafetensorsCommand(BaseDiffusersCLICommand): + @staticmethod + def register_subcommand(parser: ArgumentParser): + conversion_parser = parser.add_parser("fp16_safetensors") + conversion_parser.add_argument( + "--ckpt_id", + type=str, + help="Repo id of the checkpoints on which to run the conversion. Example: 'openai/shap-e'.", + ) + conversion_parser.add_argument( + "--fp16", action="store_true", help="If serializing the variables in FP16 precision." + ) + conversion_parser.add_argument( + "--use_safetensors", action="store_true", help="If serializing in the safetensors format." + ) + conversion_parser.add_argument( + "--use_auth_token", + action="store_true", + help="When working with checkpoints having private visibility. When used `huggingface-cli login` needs to be run beforehand.", + ) + conversion_parser.set_defaults(func=conversion_command_factory) + + def __init__(self, ckpt_id: str, fp16: bool, use_safetensors: bool): + self.logger = logging.get_logger("diffusers-cli/fp16_safetensors") + self.ckpt_id = ckpt_id + self.local_ckpt_dir = f"/tmp/{ckpt_id}" + self.fp16 = fp16 + + self.use_safetensors = use_safetensors + + if not self.use_safetensors and not self.fp16: + raise NotImplementedError( + "When `use_safetensors` and `fp16` both are False, then this command is of no use." + ) + + def run(self): + if version.parse(huggingface_hub.__version__) < version.parse("0.9.0"): + raise ImportError( + "The huggingface_hub version must be >= 0.9.0 to use this command. Please update your huggingface_hub" + " installation." + ) + else: + from huggingface_hub import create_commit + from huggingface_hub._commit_api import CommitOperationAdd + + model_index = hf_hub_download(repo_id=self.ckpt_id, filename="model_index.json") + with open(model_index, "r") as f: + pipeline_class_name = json.load(f)["_class_name"] + pipeline_class = getattr(import_module("diffusers"), pipeline_class_name) + self.logger.info(f"Pipeline class imported: {pipeline_class_name}.") + + # Load the appropriate pipeline. We could have use `DiffusionPipeline` + # here, but just to avoid any rough edge cases. + pipeline = pipeline_class.from_pretrained( + self.ckpt_id, torch_dtype=torch.float16 if self.fp16 else torch.float32 + ) + pipeline.save_pretrained( + self.local_ckpt_dir, + safe_serialization=True if self.use_safetensors else False, + variant="fp16" if self.fp16 else None, + ) + self.logger.info(f"Pipeline locally saved to {self.local_ckpt_dir}.") + + # Fetch all the paths. + if self.fp16: + modified_paths = glob.glob(f"{self.local_ckpt_dir}/*/*.fp16.*") + elif self.use_safetensors: + modified_paths = glob.glob(f"{self.local_ckpt_dir}/*/*.safetensors") + + # Prepare for the PR. + commit_message = f"Serialize variables with FP16: {self.fp16} and safetensors: {self.use_safetensors}." + operations = [] + for path in modified_paths: + operations.append(CommitOperationAdd(path_in_repo="/".join(path.split("/")[4:]), path_or_fileobj=path)) + + # Open the PR. + commit_description = ( + "Variables converted by the [`diffusers`' `fp16_safetensors`" + " CLI](https://github.com/huggingface/diffusers/blob/main/src/diffusers/commands/fp16_safetensors.py)." + ) + hub_pr_url = create_commit( + repo_id=self.ckpt_id, + operations=operations, + commit_message=commit_message, + commit_description=commit_description, + repo_type="model", + create_pr=True, + ).pr_url + self.logger.info(f"PR created here: {hub_pr_url}.") diff --git a/venv/lib/python3.11/site-packages/diffusers/configuration_utils.py b/venv/lib/python3.11/site-packages/diffusers/configuration_utils.py new file mode 100644 index 0000000000000000000000000000000000000000..d21ada6fbe609f5a4b866f069b7c39eeb1a8f51f --- /dev/null +++ b/venv/lib/python3.11/site-packages/diffusers/configuration_utils.py @@ -0,0 +1,732 @@ +# coding=utf-8 +# Copyright 2024 The HuggingFace Inc. team. +# Copyright (c) 2022, NVIDIA CORPORATION. All rights reserved. +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. +"""ConfigMixin base class and utilities.""" + +import dataclasses +import functools +import importlib +import inspect +import json +import os +import re +from collections import OrderedDict +from pathlib import Path +from typing import Any, Dict, Tuple, Union + +import numpy as np +from huggingface_hub import create_repo, hf_hub_download +from huggingface_hub.utils import ( + EntryNotFoundError, + RepositoryNotFoundError, + RevisionNotFoundError, + validate_hf_hub_args, +) +from requests import HTTPError + +from . import __version__ +from .utils import ( + HUGGINGFACE_CO_RESOLVE_ENDPOINT, + DummyObject, + deprecate, + extract_commit_hash, + http_user_agent, + logging, +) + + +logger = logging.get_logger(__name__) + +_re_configuration_file = re.compile(r"config\.(.*)\.json") + + +class FrozenDict(OrderedDict): + def __init__(self, *args, **kwargs): + super().__init__(*args, **kwargs) + + for key, value in self.items(): + setattr(self, key, value) + + self.__frozen = True + + def __delitem__(self, *args, **kwargs): + raise Exception(f"You cannot use ``__delitem__`` on a {self.__class__.__name__} instance.") + + def setdefault(self, *args, **kwargs): + raise Exception(f"You cannot use ``setdefault`` on a {self.__class__.__name__} instance.") + + def pop(self, *args, **kwargs): + raise Exception(f"You cannot use ``pop`` on a {self.__class__.__name__} instance.") + + def update(self, *args, **kwargs): + raise Exception(f"You cannot use ``update`` on a {self.__class__.__name__} instance.") + + def __setattr__(self, name, value): + if hasattr(self, "__frozen") and self.__frozen: + raise Exception(f"You cannot use ``__setattr__`` on a {self.__class__.__name__} instance.") + super().__setattr__(name, value) + + def __setitem__(self, name, value): + if hasattr(self, "__frozen") and self.__frozen: + raise Exception(f"You cannot use ``__setattr__`` on a {self.__class__.__name__} instance.") + super().__setitem__(name, value) + + +class ConfigMixin: + r""" + Base class for all configuration classes. All configuration parameters are stored under `self.config`. Also + provides the [`~ConfigMixin.from_config`] and [`~ConfigMixin.save_config`] methods for loading, downloading, and + saving classes that inherit from [`ConfigMixin`]. + + Class attributes: + - **config_name** (`str`) -- A filename under which the config should stored when calling + [`~ConfigMixin.save_config`] (should be overridden by parent class). + - **ignore_for_config** (`List[str]`) -- A list of attributes that should not be saved in the config (should be + overridden by subclass). + - **has_compatibles** (`bool`) -- Whether the class has compatible classes (should be overridden by subclass). + - **_deprecated_kwargs** (`List[str]`) -- Keyword arguments that are deprecated. Note that the `init` function + should only have a `kwargs` argument if at least one argument is deprecated (should be overridden by + subclass). + """ + + config_name = None + ignore_for_config = [] + has_compatibles = False + + _deprecated_kwargs = [] + + def register_to_config(self, **kwargs): + if self.config_name is None: + raise NotImplementedError(f"Make sure that {self.__class__} has defined a class name `config_name`") + # Special case for `kwargs` used in deprecation warning added to schedulers + # TODO: remove this when we remove the deprecation warning, and the `kwargs` argument, + # or solve in a more general way. + kwargs.pop("kwargs", None) + + if not hasattr(self, "_internal_dict"): + internal_dict = kwargs + else: + previous_dict = dict(self._internal_dict) + internal_dict = {**self._internal_dict, **kwargs} + logger.debug(f"Updating config from {previous_dict} to {internal_dict}") + + self._internal_dict = FrozenDict(internal_dict) + + def __getattr__(self, name: str) -> Any: + """The only reason we overwrite `getattr` here is to gracefully deprecate accessing + config attributes directly. See https://github.com/huggingface/diffusers/pull/3129 + + This function is mostly copied from PyTorch's __getattr__ overwrite: + https://pytorch.org/docs/stable/_modules/torch/nn/modules/module.html#Module + """ + + is_in_config = "_internal_dict" in self.__dict__ and hasattr(self.__dict__["_internal_dict"], name) + is_attribute = name in self.__dict__ + + if is_in_config and not is_attribute: + deprecation_message = f"Accessing config attribute `{name}` directly via '{type(self).__name__}' object attribute is deprecated. Please access '{name}' over '{type(self).__name__}'s config object instead, e.g. 'scheduler.config.{name}'." + deprecate("direct config name access", "1.0.0", deprecation_message, standard_warn=False) + return self._internal_dict[name] + + raise AttributeError(f"'{type(self).__name__}' object has no attribute '{name}'") + + def save_config(self, save_directory: Union[str, os.PathLike], push_to_hub: bool = False, **kwargs): + """ + Save a configuration object to the directory specified in `save_directory` so that it can be reloaded using the + [`~ConfigMixin.from_config`] class method. + + Args: + save_directory (`str` or `os.PathLike`): + Directory where the configuration JSON file is saved (will be created if it does not exist). + push_to_hub (`bool`, *optional*, defaults to `False`): + Whether or not to push your model to the Hugging Face Hub after saving it. You can specify the + repository you want to push to with `repo_id` (will default to the name of `save_directory` in your + namespace). + kwargs (`Dict[str, Any]`, *optional*): + Additional keyword arguments passed along to the [`~utils.PushToHubMixin.push_to_hub`] method. + """ + if os.path.isfile(save_directory): + raise AssertionError(f"Provided path ({save_directory}) should be a directory, not a file") + + os.makedirs(save_directory, exist_ok=True) + + # If we save using the predefined names, we can load using `from_config` + output_config_file = os.path.join(save_directory, self.config_name) + + self.to_json_file(output_config_file) + logger.info(f"Configuration saved in {output_config_file}") + + if push_to_hub: + commit_message = kwargs.pop("commit_message", None) + private = kwargs.pop("private", None) + create_pr = kwargs.pop("create_pr", False) + token = kwargs.pop("token", None) + repo_id = kwargs.pop("repo_id", save_directory.split(os.path.sep)[-1]) + repo_id = create_repo(repo_id, exist_ok=True, private=private, token=token).repo_id + + self._upload_folder( + save_directory, + repo_id, + token=token, + commit_message=commit_message, + create_pr=create_pr, + ) + + @classmethod + def from_config(cls, config: Union[FrozenDict, Dict[str, Any]] = None, return_unused_kwargs=False, **kwargs): + r""" + Instantiate a Python class from a config dictionary. + + Parameters: + config (`Dict[str, Any]`): + A config dictionary from which the Python class is instantiated. Make sure to only load configuration + files of compatible classes. + return_unused_kwargs (`bool`, *optional*, defaults to `False`): + Whether kwargs that are not consumed by the Python class should be returned or not. + kwargs (remaining dictionary of keyword arguments, *optional*): + Can be used to update the configuration object (after it is loaded) and initiate the Python class. + `**kwargs` are passed directly to the underlying scheduler/model's `__init__` method and eventually + overwrite the same named arguments in `config`. + + Returns: + [`ModelMixin`] or [`SchedulerMixin`]: + A model or scheduler object instantiated from a config dictionary. + + Examples: + + ```python + >>> from diffusers import DDPMScheduler, DDIMScheduler, PNDMScheduler + + >>> # Download scheduler from huggingface.co and cache. + >>> scheduler = DDPMScheduler.from_pretrained("google/ddpm-cifar10-32") + + >>> # Instantiate DDIM scheduler class with same config as DDPM + >>> scheduler = DDIMScheduler.from_config(scheduler.config) + + >>> # Instantiate PNDM scheduler class with same config as DDPM + >>> scheduler = PNDMScheduler.from_config(scheduler.config) + ``` + """ + # <===== TO BE REMOVED WITH DEPRECATION + # TODO(Patrick) - make sure to remove the following lines when config=="model_path" is deprecated + if "pretrained_model_name_or_path" in kwargs: + config = kwargs.pop("pretrained_model_name_or_path") + + if config is None: + raise ValueError("Please make sure to provide a config as the first positional argument.") + # ======> + + if not isinstance(config, dict): + deprecation_message = "It is deprecated to pass a pretrained model name or path to `from_config`." + if "Scheduler" in cls.__name__: + deprecation_message += ( + f"If you were trying to load a scheduler, please use {cls}.from_pretrained(...) instead." + " Otherwise, please make sure to pass a configuration dictionary instead. This functionality will" + " be removed in v1.0.0." + ) + elif "Model" in cls.__name__: + deprecation_message += ( + f"If you were trying to load a model, please use {cls}.load_config(...) followed by" + f" {cls}.from_config(...) instead. Otherwise, please make sure to pass a configuration dictionary" + " instead. This functionality will be removed in v1.0.0." + ) + deprecate("config-passed-as-path", "1.0.0", deprecation_message, standard_warn=False) + config, kwargs = cls.load_config(pretrained_model_name_or_path=config, return_unused_kwargs=True, **kwargs) + + init_dict, unused_kwargs, hidden_dict = cls.extract_init_dict(config, **kwargs) + + # Allow dtype to be specified on initialization + if "dtype" in unused_kwargs: + init_dict["dtype"] = unused_kwargs.pop("dtype") + + # add possible deprecated kwargs + for deprecated_kwarg in cls._deprecated_kwargs: + if deprecated_kwarg in unused_kwargs: + init_dict[deprecated_kwarg] = unused_kwargs.pop(deprecated_kwarg) + + # Return model and optionally state and/or unused_kwargs + model = cls(**init_dict) + + # make sure to also save config parameters that might be used for compatible classes + # update _class_name + if "_class_name" in hidden_dict: + hidden_dict["_class_name"] = cls.__name__ + + model.register_to_config(**hidden_dict) + + # add hidden kwargs of compatible classes to unused_kwargs + unused_kwargs = {**unused_kwargs, **hidden_dict} + + if return_unused_kwargs: + return (model, unused_kwargs) + else: + return model + + @classmethod + def get_config_dict(cls, *args, **kwargs): + deprecation_message = ( + f" The function get_config_dict is deprecated. Please use {cls}.load_config instead. This function will be" + " removed in version v1.0.0" + ) + deprecate("get_config_dict", "1.0.0", deprecation_message, standard_warn=False) + return cls.load_config(*args, **kwargs) + + @classmethod + @validate_hf_hub_args + def load_config( + cls, + pretrained_model_name_or_path: Union[str, os.PathLike], + return_unused_kwargs=False, + return_commit_hash=False, + **kwargs, + ) -> Tuple[Dict[str, Any], Dict[str, Any]]: + r""" + Load a model or scheduler configuration. + + Parameters: + pretrained_model_name_or_path (`str` or `os.PathLike`, *optional*): + Can be either: + + - A string, the *model id* (for example `google/ddpm-celebahq-256`) of a pretrained model hosted on + the Hub. + - A path to a *directory* (for example `./my_model_directory`) containing model weights saved with + [`~ConfigMixin.save_config`]. + + cache_dir (`Union[str, os.PathLike]`, *optional*): + Path to a directory where a downloaded pretrained model configuration is cached if the standard cache + is not used. + force_download (`bool`, *optional*, defaults to `False`): + Whether or not to force the (re-)download of the model weights and configuration files, overriding the + cached versions if they exist. + proxies (`Dict[str, str]`, *optional*): + A dictionary of proxy servers to use by protocol or endpoint, for example, `{'http': 'foo.bar:3128', + 'http://hostname': 'foo.bar:4012'}`. The proxies are used on each request. + output_loading_info(`bool`, *optional*, defaults to `False`): + Whether or not to also return a dictionary containing missing keys, unexpected keys and error messages. + local_files_only (`bool`, *optional*, defaults to `False`): + Whether to only load local model weights and configuration files or not. If set to `True`, the model + won't be downloaded from the Hub. + token (`str` or *bool*, *optional*): + The token to use as HTTP bearer authorization for remote files. If `True`, the token generated from + `diffusers-cli login` (stored in `~/.huggingface`) is used. + revision (`str`, *optional*, defaults to `"main"`): + The specific model version to use. It can be a branch name, a tag name, a commit id, or any identifier + allowed by Git. + subfolder (`str`, *optional*, defaults to `""`): + The subfolder location of a model file within a larger model repository on the Hub or locally. + return_unused_kwargs (`bool`, *optional*, defaults to `False): + Whether unused keyword arguments of the config are returned. + return_commit_hash (`bool`, *optional*, defaults to `False): + Whether the `commit_hash` of the loaded configuration are returned. + + Returns: + `dict`: + A dictionary of all the parameters stored in a JSON configuration file. + + """ + cache_dir = kwargs.pop("cache_dir", None) + local_dir = kwargs.pop("local_dir", None) + local_dir_use_symlinks = kwargs.pop("local_dir_use_symlinks", "auto") + force_download = kwargs.pop("force_download", False) + proxies = kwargs.pop("proxies", None) + token = kwargs.pop("token", None) + local_files_only = kwargs.pop("local_files_only", False) + revision = kwargs.pop("revision", None) + _ = kwargs.pop("mirror", None) + subfolder = kwargs.pop("subfolder", None) + user_agent = kwargs.pop("user_agent", {}) + + user_agent = {**user_agent, "file_type": "config"} + user_agent = http_user_agent(user_agent) + + pretrained_model_name_or_path = str(pretrained_model_name_or_path) + + if cls.config_name is None: + raise ValueError( + "`self.config_name` is not defined. Note that one should not load a config from " + "`ConfigMixin`. Please make sure to define `config_name` in a class inheriting from `ConfigMixin`" + ) + + if os.path.isfile(pretrained_model_name_or_path): + config_file = pretrained_model_name_or_path + elif os.path.isdir(pretrained_model_name_or_path): + if subfolder is not None and os.path.isfile( + os.path.join(pretrained_model_name_or_path, subfolder, cls.config_name) + ): + config_file = os.path.join(pretrained_model_name_or_path, subfolder, cls.config_name) + elif os.path.isfile(os.path.join(pretrained_model_name_or_path, cls.config_name)): + # Load from a PyTorch checkpoint + config_file = os.path.join(pretrained_model_name_or_path, cls.config_name) + else: + raise EnvironmentError( + f"Error no file named {cls.config_name} found in directory {pretrained_model_name_or_path}." + ) + else: + try: + # Load from URL or cache if already cached + config_file = hf_hub_download( + pretrained_model_name_or_path, + filename=cls.config_name, + cache_dir=cache_dir, + force_download=force_download, + proxies=proxies, + local_files_only=local_files_only, + token=token, + user_agent=user_agent, + subfolder=subfolder, + revision=revision, + local_dir=local_dir, + local_dir_use_symlinks=local_dir_use_symlinks, + ) + except RepositoryNotFoundError: + raise EnvironmentError( + f"{pretrained_model_name_or_path} is not a local folder and is not a valid model identifier" + " listed on 'https://huggingface.co/models'\nIf this is a private repository, make sure to pass a" + " token having permission to this repo with `token` or log in with `huggingface-cli login`." + ) + except RevisionNotFoundError: + raise EnvironmentError( + f"{revision} is not a valid git identifier (branch name, tag name or commit id) that exists for" + " this model name. Check the model page at" + f" 'https://huggingface.co/{pretrained_model_name_or_path}' for available revisions." + ) + except EntryNotFoundError: + raise EnvironmentError( + f"{pretrained_model_name_or_path} does not appear to have a file named {cls.config_name}." + ) + except HTTPError as err: + raise EnvironmentError( + "There was a specific connection error when trying to load" + f" {pretrained_model_name_or_path}:\n{err}" + ) + except ValueError: + raise EnvironmentError( + f"We couldn't connect to '{HUGGINGFACE_CO_RESOLVE_ENDPOINT}' to load this model, couldn't find it" + f" in the cached files and it looks like {pretrained_model_name_or_path} is not the path to a" + f" directory containing a {cls.config_name} file.\nCheckout your internet connection or see how to" + " run the library in offline mode at" + " 'https://huggingface.co/docs/diffusers/installation#offline-mode'." + ) + except EnvironmentError: + raise EnvironmentError( + f"Can't load config for '{pretrained_model_name_or_path}'. If you were trying to load it from " + "'https://huggingface.co/models', make sure you don't have a local directory with the same name. " + f"Otherwise, make sure '{pretrained_model_name_or_path}' is the correct path to a directory " + f"containing a {cls.config_name} file" + ) + + try: + # Load config dict + config_dict = cls._dict_from_json_file(config_file) + + commit_hash = extract_commit_hash(config_file) + except (json.JSONDecodeError, UnicodeDecodeError): + raise EnvironmentError(f"It looks like the config file at '{config_file}' is not a valid JSON file.") + + if not (return_unused_kwargs or return_commit_hash): + return config_dict + + outputs = (config_dict,) + + if return_unused_kwargs: + outputs += (kwargs,) + + if return_commit_hash: + outputs += (commit_hash,) + + return outputs + + @staticmethod + def _get_init_keys(input_class): + return set(dict(inspect.signature(input_class.__init__).parameters).keys()) + + @classmethod + def extract_init_dict(cls, config_dict, **kwargs): + # Skip keys that were not present in the original config, so default __init__ values were used + used_defaults = config_dict.get("_use_default_values", []) + config_dict = {k: v for k, v in config_dict.items() if k not in used_defaults and k != "_use_default_values"} + + # 0. Copy origin config dict + original_dict = dict(config_dict.items()) + + # 1. Retrieve expected config attributes from __init__ signature + expected_keys = cls._get_init_keys(cls) + expected_keys.remove("self") + # remove general kwargs if present in dict + if "kwargs" in expected_keys: + expected_keys.remove("kwargs") + # remove flax internal keys + if hasattr(cls, "_flax_internal_args"): + for arg in cls._flax_internal_args: + expected_keys.remove(arg) + + # 2. Remove attributes that cannot be expected from expected config attributes + # remove keys to be ignored + if len(cls.ignore_for_config) > 0: + expected_keys = expected_keys - set(cls.ignore_for_config) + + # load diffusers library to import compatible and original scheduler + diffusers_library = importlib.import_module(__name__.split(".")[0]) + + if cls.has_compatibles: + compatible_classes = [c for c in cls._get_compatibles() if not isinstance(c, DummyObject)] + else: + compatible_classes = [] + + expected_keys_comp_cls = set() + for c in compatible_classes: + expected_keys_c = cls._get_init_keys(c) + expected_keys_comp_cls = expected_keys_comp_cls.union(expected_keys_c) + expected_keys_comp_cls = expected_keys_comp_cls - cls._get_init_keys(cls) + config_dict = {k: v for k, v in config_dict.items() if k not in expected_keys_comp_cls} + + # remove attributes from orig class that cannot be expected + orig_cls_name = config_dict.pop("_class_name", cls.__name__) + if ( + isinstance(orig_cls_name, str) + and orig_cls_name != cls.__name__ + and hasattr(diffusers_library, orig_cls_name) + ): + orig_cls = getattr(diffusers_library, orig_cls_name) + unexpected_keys_from_orig = cls._get_init_keys(orig_cls) - expected_keys + config_dict = {k: v for k, v in config_dict.items() if k not in unexpected_keys_from_orig} + elif not isinstance(orig_cls_name, str) and not isinstance(orig_cls_name, (list, tuple)): + raise ValueError( + "Make sure that the `_class_name` is of type string or list of string (for custom pipelines)." + ) + + # remove private attributes + config_dict = {k: v for k, v in config_dict.items() if not k.startswith("_")} + + # remove quantization_config + config_dict = {k: v for k, v in config_dict.items() if k != "quantization_config"} + + # 3. Create keyword arguments that will be passed to __init__ from expected keyword arguments + init_dict = {} + for key in expected_keys: + # if config param is passed to kwarg and is present in config dict + # it should overwrite existing config dict key + if key in kwargs and key in config_dict: + config_dict[key] = kwargs.pop(key) + + if key in kwargs: + # overwrite key + init_dict[key] = kwargs.pop(key) + elif key in config_dict: + # use value from config dict + init_dict[key] = config_dict.pop(key) + + # 4. Give nice warning if unexpected values have been passed + if len(config_dict) > 0: + logger.warning( + f"The config attributes {config_dict} were passed to {cls.__name__}, " + "but are not expected and will be ignored. Please verify your " + f"{cls.config_name} configuration file." + ) + + # 5. Give nice info if config attributes are initialized to default because they have not been passed + passed_keys = set(init_dict.keys()) + if len(expected_keys - passed_keys) > 0: + logger.info( + f"{expected_keys - passed_keys} was not found in config. Values will be initialized to default values." + ) + + # 6. Define unused keyword arguments + unused_kwargs = {**config_dict, **kwargs} + + # 7. Define "hidden" config parameters that were saved for compatible classes + hidden_config_dict = {k: v for k, v in original_dict.items() if k not in init_dict} + + return init_dict, unused_kwargs, hidden_config_dict + + @classmethod + def _dict_from_json_file(cls, json_file: Union[str, os.PathLike]): + with open(json_file, "r", encoding="utf-8") as reader: + text = reader.read() + return json.loads(text) + + def __repr__(self): + return f"{self.__class__.__name__} {self.to_json_string()}" + + @property + def config(self) -> Dict[str, Any]: + """ + Returns the config of the class as a frozen dictionary + + Returns: + `Dict[str, Any]`: Config of the class. + """ + return self._internal_dict + + def to_json_string(self) -> str: + """ + Serializes the configuration instance to a JSON string. + + Returns: + `str`: + String containing all the attributes that make up the configuration instance in JSON format. + """ + config_dict = self._internal_dict if hasattr(self, "_internal_dict") else {} + config_dict["_class_name"] = self.__class__.__name__ + config_dict["_diffusers_version"] = __version__ + + def to_json_saveable(value): + if isinstance(value, np.ndarray): + value = value.tolist() + elif isinstance(value, Path): + value = value.as_posix() + return value + + if "quantization_config" in config_dict: + config_dict["quantization_config"] = ( + config_dict.quantization_config.to_dict() + if not isinstance(config_dict.quantization_config, dict) + else config_dict.quantization_config + ) + + config_dict = {k: to_json_saveable(v) for k, v in config_dict.items()} + # Don't save "_ignore_files" or "_use_default_values" + config_dict.pop("_ignore_files", None) + config_dict.pop("_use_default_values", None) + # pop the `_pre_quantization_dtype` as torch.dtypes are not serializable. + _ = config_dict.pop("_pre_quantization_dtype", None) + + return json.dumps(config_dict, indent=2, sort_keys=True) + "\n" + + def to_json_file(self, json_file_path: Union[str, os.PathLike]): + """ + Save the configuration instance's parameters to a JSON file. + + Args: + json_file_path (`str` or `os.PathLike`): + Path to the JSON file to save a configuration instance's parameters. + """ + with open(json_file_path, "w", encoding="utf-8") as writer: + writer.write(self.to_json_string()) + + +def register_to_config(init): + r""" + Decorator to apply on the init of classes inheriting from [`ConfigMixin`] so that all the arguments are + automatically sent to `self.register_for_config`. To ignore a specific argument accepted by the init but that + shouldn't be registered in the config, use the `ignore_for_config` class variable + + Warning: Once decorated, all private arguments (beginning with an underscore) are trashed and not sent to the init! + """ + + @functools.wraps(init) + def inner_init(self, *args, **kwargs): + # Ignore private kwargs in the init. + init_kwargs = {k: v for k, v in kwargs.items() if not k.startswith("_")} + config_init_kwargs = {k: v for k, v in kwargs.items() if k.startswith("_")} + if not isinstance(self, ConfigMixin): + raise RuntimeError( + f"`@register_for_config` was applied to {self.__class__.__name__} init method, but this class does " + "not inherit from `ConfigMixin`." + ) + + ignore = getattr(self, "ignore_for_config", []) + # Get positional arguments aligned with kwargs + new_kwargs = {} + signature = inspect.signature(init) + parameters = { + name: p.default for i, (name, p) in enumerate(signature.parameters.items()) if i > 0 and name not in ignore + } + for arg, name in zip(args, parameters.keys()): + new_kwargs[name] = arg + + # Then add all kwargs + new_kwargs.update( + { + k: init_kwargs.get(k, default) + for k, default in parameters.items() + if k not in ignore and k not in new_kwargs + } + ) + + # Take note of the parameters that were not present in the loaded config + if len(set(new_kwargs.keys()) - set(init_kwargs)) > 0: + new_kwargs["_use_default_values"] = list(set(new_kwargs.keys()) - set(init_kwargs)) + + new_kwargs = {**config_init_kwargs, **new_kwargs} + getattr(self, "register_to_config")(**new_kwargs) + init(self, *args, **init_kwargs) + + return inner_init + + +def flax_register_to_config(cls): + original_init = cls.__init__ + + @functools.wraps(original_init) + def init(self, *args, **kwargs): + if not isinstance(self, ConfigMixin): + raise RuntimeError( + f"`@register_for_config` was applied to {self.__class__.__name__} init method, but this class does " + "not inherit from `ConfigMixin`." + ) + + # Ignore private kwargs in the init. Retrieve all passed attributes + init_kwargs = dict(kwargs.items()) + + # Retrieve default values + fields = dataclasses.fields(self) + default_kwargs = {} + for field in fields: + # ignore flax specific attributes + if field.name in self._flax_internal_args: + continue + if type(field.default) == dataclasses._MISSING_TYPE: + default_kwargs[field.name] = None + else: + default_kwargs[field.name] = getattr(self, field.name) + + # Make sure init_kwargs override default kwargs + new_kwargs = {**default_kwargs, **init_kwargs} + # dtype should be part of `init_kwargs`, but not `new_kwargs` + if "dtype" in new_kwargs: + new_kwargs.pop("dtype") + + # Get positional arguments aligned with kwargs + for i, arg in enumerate(args): + name = fields[i].name + new_kwargs[name] = arg + + # Take note of the parameters that were not present in the loaded config + if len(set(new_kwargs.keys()) - set(init_kwargs)) > 0: + new_kwargs["_use_default_values"] = list(set(new_kwargs.keys()) - set(init_kwargs)) + + getattr(self, "register_to_config")(**new_kwargs) + original_init(self, *args, **kwargs) + + cls.__init__ = init + return cls + + +class LegacyConfigMixin(ConfigMixin): + r""" + A subclass of `ConfigMixin` to resolve class mapping from legacy classes (like `Transformer2DModel`) to more + pipeline-specific classes (like `DiTTransformer2DModel`). + """ + + @classmethod + def from_config(cls, config: Union[FrozenDict, Dict[str, Any]] = None, return_unused_kwargs=False, **kwargs): + # To prevent dependency import problem. + from .models.model_loading_utils import _fetch_remapped_cls_from_config + + # resolve remapping + remapped_class = _fetch_remapped_cls_from_config(config, cls) + + return remapped_class.from_config(config, return_unused_kwargs, **kwargs) diff --git a/venv/lib/python3.11/site-packages/diffusers/dependency_versions_check.py b/venv/lib/python3.11/site-packages/diffusers/dependency_versions_check.py new file mode 100644 index 0000000000000000000000000000000000000000..0728b3a7c0932cd06c920947e1ea57f3864f239a --- /dev/null +++ b/venv/lib/python3.11/site-packages/diffusers/dependency_versions_check.py @@ -0,0 +1,34 @@ +# Copyright 2024 The HuggingFace Team. All rights reserved. +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. + +from .dependency_versions_table import deps +from .utils.versions import require_version, require_version_core + + +# define which module versions we always want to check at run time +# (usually the ones defined in `install_requires` in setup.py) +# +# order specific notes: +# - tqdm must be checked before tokenizers + +pkgs_to_check_at_runtime = "python requests filelock numpy".split() +for pkg in pkgs_to_check_at_runtime: + if pkg in deps: + require_version_core(deps[pkg]) + else: + raise ValueError(f"can't find {pkg} in {deps.keys()}, check dependency_versions_table.py") + + +def dep_version_check(pkg, hint=None): + require_version(deps[pkg], hint) diff --git a/venv/lib/python3.11/site-packages/diffusers/dependency_versions_table.py b/venv/lib/python3.11/site-packages/diffusers/dependency_versions_table.py new file mode 100644 index 0000000000000000000000000000000000000000..9e7bf242eca78aca87da4c01b0e3a9830c781299 --- /dev/null +++ b/venv/lib/python3.11/site-packages/diffusers/dependency_versions_table.py @@ -0,0 +1,46 @@ +# THIS FILE HAS BEEN AUTOGENERATED. To update: +# 1. modify the `_deps` dict in setup.py +# 2. run `make deps_table_update` +deps = { + "Pillow": "Pillow", + "accelerate": "accelerate>=0.31.0", + "compel": "compel==0.1.8", + "datasets": "datasets", + "filelock": "filelock", + "flax": "flax>=0.4.1", + "hf-doc-builder": "hf-doc-builder>=0.3.0", + "huggingface-hub": "huggingface-hub>=0.23.2", + "requests-mock": "requests-mock==1.10.0", + "importlib_metadata": "importlib_metadata", + "invisible-watermark": "invisible-watermark>=0.2.0", + "isort": "isort>=5.5.4", + "jax": "jax>=0.4.1", + "jaxlib": "jaxlib>=0.4.1", + "Jinja2": "Jinja2", + "k-diffusion": "k-diffusion>=0.0.12", + "torchsde": "torchsde", + "note_seq": "note_seq", + "librosa": "librosa", + "numpy": "numpy", + "parameterized": "parameterized", + "peft": "peft>=0.6.0", + "protobuf": "protobuf>=3.20.3,<4", + "pytest": "pytest", + "pytest-timeout": "pytest-timeout", + "pytest-xdist": "pytest-xdist", + "python": "python>=3.8.0", + "ruff": "ruff==0.1.5", + "safetensors": "safetensors>=0.3.1", + "sentencepiece": "sentencepiece>=0.1.91,!=0.1.92", + "GitPython": "GitPython<3.1.19", + "scipy": "scipy", + "onnx": "onnx", + "regex": "regex!=2019.12.17", + "requests": "requests", + "tensorboard": "tensorboard", + "torch": "torch>=1.4", + "torchvision": "torchvision", + "transformers": "transformers>=4.41.2", + "urllib3": "urllib3<=2.0.0", + "black": "black", +} diff --git a/venv/lib/python3.11/site-packages/diffusers/experimental/__init__.py b/venv/lib/python3.11/site-packages/diffusers/experimental/__init__.py new file mode 100644 index 0000000000000000000000000000000000000000..ebc8155403016dfd8ad7fb78d246f9da9098ac50 --- /dev/null +++ b/venv/lib/python3.11/site-packages/diffusers/experimental/__init__.py @@ -0,0 +1 @@ +from .rl import ValueGuidedRLPipeline diff --git a/venv/lib/python3.11/site-packages/diffusers/experimental/rl/__init__.py b/venv/lib/python3.11/site-packages/diffusers/experimental/rl/__init__.py new file mode 100644 index 0000000000000000000000000000000000000000..7b338d3173e12d478b6b6d6fd0e50650a0ab5a4c --- /dev/null +++ b/venv/lib/python3.11/site-packages/diffusers/experimental/rl/__init__.py @@ -0,0 +1 @@ +from .value_guided_sampling import ValueGuidedRLPipeline diff --git a/venv/lib/python3.11/site-packages/diffusers/experimental/rl/value_guided_sampling.py b/venv/lib/python3.11/site-packages/diffusers/experimental/rl/value_guided_sampling.py new file mode 100644 index 0000000000000000000000000000000000000000..2f9de857480ec590ae1f795bb2d29bbeccec1331 --- /dev/null +++ b/venv/lib/python3.11/site-packages/diffusers/experimental/rl/value_guided_sampling.py @@ -0,0 +1,153 @@ +# Copyright 2024 The HuggingFace Team. All rights reserved. +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. + +import numpy as np +import torch +import tqdm + +from ...models.unets.unet_1d import UNet1DModel +from ...pipelines import DiffusionPipeline +from ...utils.dummy_pt_objects import DDPMScheduler +from ...utils.torch_utils import randn_tensor + + +class ValueGuidedRLPipeline(DiffusionPipeline): + r""" + Pipeline for value-guided sampling from a diffusion model trained to predict sequences of states. + + This model inherits from [`DiffusionPipeline`]. Check the superclass documentation for the generic methods + implemented for all pipelines (downloading, saving, running on a particular device, etc.). + + Parameters: + value_function ([`UNet1DModel`]): + A specialized UNet for fine-tuning trajectories base on reward. + unet ([`UNet1DModel`]): + UNet architecture to denoise the encoded trajectories. + scheduler ([`SchedulerMixin`]): + A scheduler to be used in combination with `unet` to denoise the encoded trajectories. Default for this + application is [`DDPMScheduler`]. + env (): + An environment following the OpenAI gym API to act in. For now only Hopper has pretrained models. + """ + + def __init__( + self, + value_function: UNet1DModel, + unet: UNet1DModel, + scheduler: DDPMScheduler, + env, + ): + super().__init__() + + self.register_modules(value_function=value_function, unet=unet, scheduler=scheduler, env=env) + + self.data = env.get_dataset() + self.means = {} + for key in self.data.keys(): + try: + self.means[key] = self.data[key].mean() + except: # noqa: E722 + pass + self.stds = {} + for key in self.data.keys(): + try: + self.stds[key] = self.data[key].std() + except: # noqa: E722 + pass + self.state_dim = env.observation_space.shape[0] + self.action_dim = env.action_space.shape[0] + + def normalize(self, x_in, key): + return (x_in - self.means[key]) / self.stds[key] + + def de_normalize(self, x_in, key): + return x_in * self.stds[key] + self.means[key] + + def to_torch(self, x_in): + if isinstance(x_in, dict): + return {k: self.to_torch(v) for k, v in x_in.items()} + elif torch.is_tensor(x_in): + return x_in.to(self.unet.device) + return torch.tensor(x_in, device=self.unet.device) + + def reset_x0(self, x_in, cond, act_dim): + for key, val in cond.items(): + x_in[:, key, act_dim:] = val.clone() + return x_in + + def run_diffusion(self, x, conditions, n_guide_steps, scale): + batch_size = x.shape[0] + y = None + for i in tqdm.tqdm(self.scheduler.timesteps): + # create batch of timesteps to pass into model + timesteps = torch.full((batch_size,), i, device=self.unet.device, dtype=torch.long) + for _ in range(n_guide_steps): + with torch.enable_grad(): + x.requires_grad_() + + # permute to match dimension for pre-trained models + y = self.value_function(x.permute(0, 2, 1), timesteps).sample + grad = torch.autograd.grad([y.sum()], [x])[0] + + posterior_variance = self.scheduler._get_variance(i) + model_std = torch.exp(0.5 * posterior_variance) + grad = model_std * grad + + grad[timesteps < 2] = 0 + x = x.detach() + x = x + scale * grad + x = self.reset_x0(x, conditions, self.action_dim) + + prev_x = self.unet(x.permute(0, 2, 1), timesteps).sample.permute(0, 2, 1) + + # TODO: verify deprecation of this kwarg + x = self.scheduler.step(prev_x, i, x)["prev_sample"] + + # apply conditions to the trajectory (set the initial state) + x = self.reset_x0(x, conditions, self.action_dim) + x = self.to_torch(x) + return x, y + + def __call__(self, obs, batch_size=64, planning_horizon=32, n_guide_steps=2, scale=0.1): + # normalize the observations and create batch dimension + obs = self.normalize(obs, "observations") + obs = obs[None].repeat(batch_size, axis=0) + + conditions = {0: self.to_torch(obs)} + shape = (batch_size, planning_horizon, self.state_dim + self.action_dim) + + # generate initial noise and apply our conditions (to make the trajectories start at current state) + x1 = randn_tensor(shape, device=self.unet.device) + x = self.reset_x0(x1, conditions, self.action_dim) + x = self.to_torch(x) + + # run the diffusion process + x, y = self.run_diffusion(x, conditions, n_guide_steps, scale) + + # sort output trajectories by value + sorted_idx = y.argsort(0, descending=True).squeeze() + sorted_values = x[sorted_idx] + actions = sorted_values[:, :, : self.action_dim] + actions = actions.detach().cpu().numpy() + denorm_actions = self.de_normalize(actions, key="actions") + + # select the action with the highest value + if y is not None: + selected_index = 0 + else: + # if we didn't run value guiding, select a random action + selected_index = np.random.randint(0, batch_size) + + denorm_actions = denorm_actions[selected_index, 0] + return denorm_actions diff --git a/venv/lib/python3.11/site-packages/diffusers/image_processor.py b/venv/lib/python3.11/site-packages/diffusers/image_processor.py new file mode 100644 index 0000000000000000000000000000000000000000..d6913f045ad260145f7fcf8d3eb4527d8dc67c5b --- /dev/null +++ b/venv/lib/python3.11/site-packages/diffusers/image_processor.py @@ -0,0 +1,1314 @@ +# Copyright 2024 The HuggingFace Team. All rights reserved. +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. + +import math +import warnings +from typing import List, Optional, Tuple, Union + +import numpy as np +import PIL.Image +import torch +import torch.nn.functional as F +from PIL import Image, ImageFilter, ImageOps + +from .configuration_utils import ConfigMixin, register_to_config +from .utils import CONFIG_NAME, PIL_INTERPOLATION, deprecate + + +PipelineImageInput = Union[ + PIL.Image.Image, + np.ndarray, + torch.Tensor, + List[PIL.Image.Image], + List[np.ndarray], + List[torch.Tensor], +] + +PipelineDepthInput = PipelineImageInput + + +def is_valid_image(image) -> bool: + r""" + Checks if the input is a valid image. + + A valid image can be: + - A `PIL.Image.Image`. + - A 2D or 3D `np.ndarray` or `torch.Tensor` (grayscale or color image). + + Args: + image (`Union[PIL.Image.Image, np.ndarray, torch.Tensor]`): + The image to validate. It can be a PIL image, a NumPy array, or a torch tensor. + + Returns: + `bool`: + `True` if the input is a valid image, `False` otherwise. + """ + return isinstance(image, PIL.Image.Image) or isinstance(image, (np.ndarray, torch.Tensor)) and image.ndim in (2, 3) + + +def is_valid_image_imagelist(images): + r""" + Checks if the input is a valid image or list of images. + + The input can be one of the following formats: + - A 4D tensor or numpy array (batch of images). + - A valid single image: `PIL.Image.Image`, 2D `np.ndarray` or `torch.Tensor` (grayscale image), 3D `np.ndarray` or + `torch.Tensor`. + - A list of valid images. + + Args: + images (`Union[np.ndarray, torch.Tensor, PIL.Image.Image, List]`): + The image(s) to check. Can be a batch of images (4D tensor/array), a single image, or a list of valid + images. + + Returns: + `bool`: + `True` if the input is valid, `False` otherwise. + """ + if isinstance(images, (np.ndarray, torch.Tensor)) and images.ndim == 4: + return True + elif is_valid_image(images): + return True + elif isinstance(images, list): + return all(is_valid_image(image) for image in images) + return False + + +class VaeImageProcessor(ConfigMixin): + """ + Image processor for VAE. + + Args: + do_resize (`bool`, *optional*, defaults to `True`): + Whether to downscale the image's (height, width) dimensions to multiples of `vae_scale_factor`. Can accept + `height` and `width` arguments from [`image_processor.VaeImageProcessor.preprocess`] method. + vae_scale_factor (`int`, *optional*, defaults to `8`): + VAE scale factor. If `do_resize` is `True`, the image is automatically resized to multiples of this factor. + resample (`str`, *optional*, defaults to `lanczos`): + Resampling filter to use when resizing the image. + do_normalize (`bool`, *optional*, defaults to `True`): + Whether to normalize the image to [-1,1]. + do_binarize (`bool`, *optional*, defaults to `False`): + Whether to binarize the image to 0/1. + do_convert_rgb (`bool`, *optional*, defaults to be `False`): + Whether to convert the images to RGB format. + do_convert_grayscale (`bool`, *optional*, defaults to be `False`): + Whether to convert the images to grayscale format. + """ + + config_name = CONFIG_NAME + + @register_to_config + def __init__( + self, + do_resize: bool = True, + vae_scale_factor: int = 8, + vae_latent_channels: int = 4, + resample: str = "lanczos", + do_normalize: bool = True, + do_binarize: bool = False, + do_convert_rgb: bool = False, + do_convert_grayscale: bool = False, + ): + super().__init__() + if do_convert_rgb and do_convert_grayscale: + raise ValueError( + "`do_convert_rgb` and `do_convert_grayscale` can not both be set to `True`," + " if you intended to convert the image into RGB format, please set `do_convert_grayscale = False`.", + " if you intended to convert the image into grayscale format, please set `do_convert_rgb = False`", + ) + + @staticmethod + def numpy_to_pil(images: np.ndarray) -> List[PIL.Image.Image]: + r""" + Convert a numpy image or a batch of images to a PIL image. + + Args: + images (`np.ndarray`): + The image array to convert to PIL format. + + Returns: + `List[PIL.Image.Image]`: + A list of PIL images. + """ + if images.ndim == 3: + images = images[None, ...] + images = (images * 255).round().astype("uint8") + if images.shape[-1] == 1: + # special case for grayscale (single channel) images + pil_images = [Image.fromarray(image.squeeze(), mode="L") for image in images] + else: + pil_images = [Image.fromarray(image) for image in images] + + return pil_images + + @staticmethod + def pil_to_numpy(images: Union[List[PIL.Image.Image], PIL.Image.Image]) -> np.ndarray: + r""" + Convert a PIL image or a list of PIL images to NumPy arrays. + + Args: + images (`PIL.Image.Image` or `List[PIL.Image.Image]`): + The PIL image or list of images to convert to NumPy format. + + Returns: + `np.ndarray`: + A NumPy array representation of the images. + """ + if not isinstance(images, list): + images = [images] + images = [np.array(image).astype(np.float32) / 255.0 for image in images] + images = np.stack(images, axis=0) + + return images + + @staticmethod + def numpy_to_pt(images: np.ndarray) -> torch.Tensor: + r""" + Convert a NumPy image to a PyTorch tensor. + + Args: + images (`np.ndarray`): + The NumPy image array to convert to PyTorch format. + + Returns: + `torch.Tensor`: + A PyTorch tensor representation of the images. + """ + if images.ndim == 3: + images = images[..., None] + + images = torch.from_numpy(images.transpose(0, 3, 1, 2)) + return images + + @staticmethod + def pt_to_numpy(images: torch.Tensor) -> np.ndarray: + r""" + Convert a PyTorch tensor to a NumPy image. + + Args: + images (`torch.Tensor`): + The PyTorch tensor to convert to NumPy format. + + Returns: + `np.ndarray`: + A NumPy array representation of the images. + """ + images = images.cpu().permute(0, 2, 3, 1).float().numpy() + return images + + @staticmethod + def normalize(images: Union[np.ndarray, torch.Tensor]) -> Union[np.ndarray, torch.Tensor]: + r""" + Normalize an image array to [-1,1]. + + Args: + images (`np.ndarray` or `torch.Tensor`): + The image array to normalize. + + Returns: + `np.ndarray` or `torch.Tensor`: + The normalized image array. + """ + return 2.0 * images - 1.0 + + @staticmethod + def denormalize(images: Union[np.ndarray, torch.Tensor]) -> Union[np.ndarray, torch.Tensor]: + r""" + Denormalize an image array to [0,1]. + + Args: + images (`np.ndarray` or `torch.Tensor`): + The image array to denormalize. + + Returns: + `np.ndarray` or `torch.Tensor`: + The denormalized image array. + """ + return (images * 0.5 + 0.5).clamp(0, 1) + + @staticmethod + def convert_to_rgb(image: PIL.Image.Image) -> PIL.Image.Image: + r""" + Converts a PIL image to RGB format. + + Args: + image (`PIL.Image.Image`): + The PIL image to convert to RGB. + + Returns: + `PIL.Image.Image`: + The RGB-converted PIL image. + """ + image = image.convert("RGB") + + return image + + @staticmethod + def convert_to_grayscale(image: PIL.Image.Image) -> PIL.Image.Image: + r""" + Converts a given PIL image to grayscale. + + Args: + image (`PIL.Image.Image`): + The input image to convert. + + Returns: + `PIL.Image.Image`: + The image converted to grayscale. + """ + image = image.convert("L") + + return image + + @staticmethod + def blur(image: PIL.Image.Image, blur_factor: int = 4) -> PIL.Image.Image: + r""" + Applies Gaussian blur to an image. + + Args: + image (`PIL.Image.Image`): + The PIL image to convert to grayscale. + + Returns: + `PIL.Image.Image`: + The grayscale-converted PIL image. + """ + image = image.filter(ImageFilter.GaussianBlur(blur_factor)) + + return image + + @staticmethod + def get_crop_region(mask_image: PIL.Image.Image, width: int, height: int, pad=0): + r""" + Finds a rectangular region that contains all masked ares in an image, and expands region to match the aspect + ratio of the original image; for example, if user drew mask in a 128x32 region, and the dimensions for + processing are 512x512, the region will be expanded to 128x128. + + Args: + mask_image (PIL.Image.Image): Mask image. + width (int): Width of the image to be processed. + height (int): Height of the image to be processed. + pad (int, optional): Padding to be added to the crop region. Defaults to 0. + + Returns: + tuple: (x1, y1, x2, y2) represent a rectangular region that contains all masked ares in an image and + matches the original aspect ratio. + """ + + mask_image = mask_image.convert("L") + mask = np.array(mask_image) + + # 1. find a rectangular region that contains all masked ares in an image + h, w = mask.shape + crop_left = 0 + for i in range(w): + if not (mask[:, i] == 0).all(): + break + crop_left += 1 + + crop_right = 0 + for i in reversed(range(w)): + if not (mask[:, i] == 0).all(): + break + crop_right += 1 + + crop_top = 0 + for i in range(h): + if not (mask[i] == 0).all(): + break + crop_top += 1 + + crop_bottom = 0 + for i in reversed(range(h)): + if not (mask[i] == 0).all(): + break + crop_bottom += 1 + + # 2. add padding to the crop region + x1, y1, x2, y2 = ( + int(max(crop_left - pad, 0)), + int(max(crop_top - pad, 0)), + int(min(w - crop_right + pad, w)), + int(min(h - crop_bottom + pad, h)), + ) + + # 3. expands crop region to match the aspect ratio of the image to be processed + ratio_crop_region = (x2 - x1) / (y2 - y1) + ratio_processing = width / height + + if ratio_crop_region > ratio_processing: + desired_height = (x2 - x1) / ratio_processing + desired_height_diff = int(desired_height - (y2 - y1)) + y1 -= desired_height_diff // 2 + y2 += desired_height_diff - desired_height_diff // 2 + if y2 >= mask_image.height: + diff = y2 - mask_image.height + y2 -= diff + y1 -= diff + if y1 < 0: + y2 -= y1 + y1 -= y1 + if y2 >= mask_image.height: + y2 = mask_image.height + else: + desired_width = (y2 - y1) * ratio_processing + desired_width_diff = int(desired_width - (x2 - x1)) + x1 -= desired_width_diff // 2 + x2 += desired_width_diff - desired_width_diff // 2 + if x2 >= mask_image.width: + diff = x2 - mask_image.width + x2 -= diff + x1 -= diff + if x1 < 0: + x2 -= x1 + x1 -= x1 + if x2 >= mask_image.width: + x2 = mask_image.width + + return x1, y1, x2, y2 + + def _resize_and_fill( + self, + image: PIL.Image.Image, + width: int, + height: int, + ) -> PIL.Image.Image: + r""" + Resize the image to fit within the specified width and height, maintaining the aspect ratio, and then center + the image within the dimensions, filling empty with data from image. + + Args: + image (`PIL.Image.Image`): + The image to resize and fill. + width (`int`): + The width to resize the image to. + height (`int`): + The height to resize the image to. + + Returns: + `PIL.Image.Image`: + The resized and filled image. + """ + + ratio = width / height + src_ratio = image.width / image.height + + src_w = width if ratio < src_ratio else image.width * height // image.height + src_h = height if ratio >= src_ratio else image.height * width // image.width + + resized = image.resize((src_w, src_h), resample=PIL_INTERPOLATION["lanczos"]) + res = Image.new("RGB", (width, height)) + res.paste(resized, box=(width // 2 - src_w // 2, height // 2 - src_h // 2)) + + if ratio < src_ratio: + fill_height = height // 2 - src_h // 2 + if fill_height > 0: + res.paste(resized.resize((width, fill_height), box=(0, 0, width, 0)), box=(0, 0)) + res.paste( + resized.resize((width, fill_height), box=(0, resized.height, width, resized.height)), + box=(0, fill_height + src_h), + ) + elif ratio > src_ratio: + fill_width = width // 2 - src_w // 2 + if fill_width > 0: + res.paste(resized.resize((fill_width, height), box=(0, 0, 0, height)), box=(0, 0)) + res.paste( + resized.resize((fill_width, height), box=(resized.width, 0, resized.width, height)), + box=(fill_width + src_w, 0), + ) + + return res + + def _resize_and_crop( + self, + image: PIL.Image.Image, + width: int, + height: int, + ) -> PIL.Image.Image: + r""" + Resize the image to fit within the specified width and height, maintaining the aspect ratio, and then center + the image within the dimensions, cropping the excess. + + Args: + image (`PIL.Image.Image`): + The image to resize and crop. + width (`int`): + The width to resize the image to. + height (`int`): + The height to resize the image to. + + Returns: + `PIL.Image.Image`: + The resized and cropped image. + """ + ratio = width / height + src_ratio = image.width / image.height + + src_w = width if ratio > src_ratio else image.width * height // image.height + src_h = height if ratio <= src_ratio else image.height * width // image.width + + resized = image.resize((src_w, src_h), resample=PIL_INTERPOLATION["lanczos"]) + res = Image.new("RGB", (width, height)) + res.paste(resized, box=(width // 2 - src_w // 2, height // 2 - src_h // 2)) + return res + + def resize( + self, + image: Union[PIL.Image.Image, np.ndarray, torch.Tensor], + height: int, + width: int, + resize_mode: str = "default", # "default", "fill", "crop" + ) -> Union[PIL.Image.Image, np.ndarray, torch.Tensor]: + """ + Resize image. + + Args: + image (`PIL.Image.Image`, `np.ndarray` or `torch.Tensor`): + The image input, can be a PIL image, numpy array or pytorch tensor. + height (`int`): + The height to resize to. + width (`int`): + The width to resize to. + resize_mode (`str`, *optional*, defaults to `default`): + The resize mode to use, can be one of `default` or `fill`. If `default`, will resize the image to fit + within the specified width and height, and it may not maintaining the original aspect ratio. If `fill`, + will resize the image to fit within the specified width and height, maintaining the aspect ratio, and + then center the image within the dimensions, filling empty with data from image. If `crop`, will resize + the image to fit within the specified width and height, maintaining the aspect ratio, and then center + the image within the dimensions, cropping the excess. Note that resize_mode `fill` and `crop` are only + supported for PIL image input. + + Returns: + `PIL.Image.Image`, `np.ndarray` or `torch.Tensor`: + The resized image. + """ + if resize_mode != "default" and not isinstance(image, PIL.Image.Image): + raise ValueError(f"Only PIL image input is supported for resize_mode {resize_mode}") + if isinstance(image, PIL.Image.Image): + if resize_mode == "default": + image = image.resize((width, height), resample=PIL_INTERPOLATION[self.config.resample]) + elif resize_mode == "fill": + image = self._resize_and_fill(image, width, height) + elif resize_mode == "crop": + image = self._resize_and_crop(image, width, height) + else: + raise ValueError(f"resize_mode {resize_mode} is not supported") + + elif isinstance(image, torch.Tensor): + image = torch.nn.functional.interpolate( + image, + size=(height, width), + ) + elif isinstance(image, np.ndarray): + image = self.numpy_to_pt(image) + image = torch.nn.functional.interpolate( + image, + size=(height, width), + ) + image = self.pt_to_numpy(image) + return image + + def binarize(self, image: PIL.Image.Image) -> PIL.Image.Image: + """ + Create a mask. + + Args: + image (`PIL.Image.Image`): + The image input, should be a PIL image. + + Returns: + `PIL.Image.Image`: + The binarized image. Values less than 0.5 are set to 0, values greater than 0.5 are set to 1. + """ + image[image < 0.5] = 0 + image[image >= 0.5] = 1 + + return image + + def _denormalize_conditionally( + self, images: torch.Tensor, do_denormalize: Optional[List[bool]] = None + ) -> torch.Tensor: + r""" + Denormalize a batch of images based on a condition list. + + Args: + images (`torch.Tensor`): + The input image tensor. + do_denormalize (`Optional[List[bool]`, *optional*, defaults to `None`): + A list of booleans indicating whether to denormalize each image in the batch. If `None`, will use the + value of `do_normalize` in the `VaeImageProcessor` config. + """ + if do_denormalize is None: + return self.denormalize(images) if self.config.do_normalize else images + + return torch.stack( + [self.denormalize(images[i]) if do_denormalize[i] else images[i] for i in range(images.shape[0])] + ) + + def get_default_height_width( + self, + image: Union[PIL.Image.Image, np.ndarray, torch.Tensor], + height: Optional[int] = None, + width: Optional[int] = None, + ) -> Tuple[int, int]: + r""" + Returns the height and width of the image, downscaled to the next integer multiple of `vae_scale_factor`. + + Args: + image (`Union[PIL.Image.Image, np.ndarray, torch.Tensor]`): + The image input, which can be a PIL image, NumPy array, or PyTorch tensor. If it is a NumPy array, it + should have shape `[batch, height, width]` or `[batch, height, width, channels]`. If it is a PyTorch + tensor, it should have shape `[batch, channels, height, width]`. + height (`Optional[int]`, *optional*, defaults to `None`): + The height of the preprocessed image. If `None`, the height of the `image` input will be used. + width (`Optional[int]`, *optional*, defaults to `None`): + The width of the preprocessed image. If `None`, the width of the `image` input will be used. + + Returns: + `Tuple[int, int]`: + A tuple containing the height and width, both resized to the nearest integer multiple of + `vae_scale_factor`. + """ + + if height is None: + if isinstance(image, PIL.Image.Image): + height = image.height + elif isinstance(image, torch.Tensor): + height = image.shape[2] + else: + height = image.shape[1] + + if width is None: + if isinstance(image, PIL.Image.Image): + width = image.width + elif isinstance(image, torch.Tensor): + width = image.shape[3] + else: + width = image.shape[2] + + width, height = ( + x - x % self.config.vae_scale_factor for x in (width, height) + ) # resize to integer multiple of vae_scale_factor + + return height, width + + def preprocess( + self, + image: PipelineImageInput, + height: Optional[int] = None, + width: Optional[int] = None, + resize_mode: str = "default", # "default", "fill", "crop" + crops_coords: Optional[Tuple[int, int, int, int]] = None, + ) -> torch.Tensor: + """ + Preprocess the image input. + + Args: + image (`PipelineImageInput`): + The image input, accepted formats are PIL images, NumPy arrays, PyTorch tensors; Also accept list of + supported formats. + height (`int`, *optional*): + The height in preprocessed image. If `None`, will use the `get_default_height_width()` to get default + height. + width (`int`, *optional*): + The width in preprocessed. If `None`, will use get_default_height_width()` to get the default width. + resize_mode (`str`, *optional*, defaults to `default`): + The resize mode, can be one of `default` or `fill`. If `default`, will resize the image to fit within + the specified width and height, and it may not maintaining the original aspect ratio. If `fill`, will + resize the image to fit within the specified width and height, maintaining the aspect ratio, and then + center the image within the dimensions, filling empty with data from image. If `crop`, will resize the + image to fit within the specified width and height, maintaining the aspect ratio, and then center the + image within the dimensions, cropping the excess. Note that resize_mode `fill` and `crop` are only + supported for PIL image input. + crops_coords (`List[Tuple[int, int, int, int]]`, *optional*, defaults to `None`): + The crop coordinates for each image in the batch. If `None`, will not crop the image. + + Returns: + `torch.Tensor`: + The preprocessed image. + """ + supported_formats = (PIL.Image.Image, np.ndarray, torch.Tensor) + + # Expand the missing dimension for 3-dimensional pytorch tensor or numpy array that represents grayscale image + if self.config.do_convert_grayscale and isinstance(image, (torch.Tensor, np.ndarray)) and image.ndim == 3: + if isinstance(image, torch.Tensor): + # if image is a pytorch tensor could have 2 possible shapes: + # 1. batch x height x width: we should insert the channel dimension at position 1 + # 2. channel x height x width: we should insert batch dimension at position 0, + # however, since both channel and batch dimension has same size 1, it is same to insert at position 1 + # for simplicity, we insert a dimension of size 1 at position 1 for both cases + image = image.unsqueeze(1) + else: + # if it is a numpy array, it could have 2 possible shapes: + # 1. batch x height x width: insert channel dimension on last position + # 2. height x width x channel: insert batch dimension on first position + if image.shape[-1] == 1: + image = np.expand_dims(image, axis=0) + else: + image = np.expand_dims(image, axis=-1) + + if isinstance(image, list) and isinstance(image[0], np.ndarray) and image[0].ndim == 4: + warnings.warn( + "Passing `image` as a list of 4d np.ndarray is deprecated." + "Please concatenate the list along the batch dimension and pass it as a single 4d np.ndarray", + FutureWarning, + ) + image = np.concatenate(image, axis=0) + if isinstance(image, list) and isinstance(image[0], torch.Tensor) and image[0].ndim == 4: + warnings.warn( + "Passing `image` as a list of 4d torch.Tensor is deprecated." + "Please concatenate the list along the batch dimension and pass it as a single 4d torch.Tensor", + FutureWarning, + ) + image = torch.cat(image, axis=0) + + if not is_valid_image_imagelist(image): + raise ValueError( + f"Input is in incorrect format. Currently, we only support {', '.join(str(x) for x in supported_formats)}" + ) + if not isinstance(image, list): + image = [image] + + if isinstance(image[0], PIL.Image.Image): + if crops_coords is not None: + image = [i.crop(crops_coords) for i in image] + if self.config.do_resize: + height, width = self.get_default_height_width(image[0], height, width) + image = [self.resize(i, height, width, resize_mode=resize_mode) for i in image] + if self.config.do_convert_rgb: + image = [self.convert_to_rgb(i) for i in image] + elif self.config.do_convert_grayscale: + image = [self.convert_to_grayscale(i) for i in image] + image = self.pil_to_numpy(image) # to np + image = self.numpy_to_pt(image) # to pt + + elif isinstance(image[0], np.ndarray): + image = np.concatenate(image, axis=0) if image[0].ndim == 4 else np.stack(image, axis=0) + + image = self.numpy_to_pt(image) + + height, width = self.get_default_height_width(image, height, width) + if self.config.do_resize: + image = self.resize(image, height, width) + + elif isinstance(image[0], torch.Tensor): + image = torch.cat(image, axis=0) if image[0].ndim == 4 else torch.stack(image, axis=0) + + if self.config.do_convert_grayscale and image.ndim == 3: + image = image.unsqueeze(1) + + channel = image.shape[1] + # don't need any preprocess if the image is latents + if channel == self.config.vae_latent_channels: + return image + + height, width = self.get_default_height_width(image, height, width) + if self.config.do_resize: + image = self.resize(image, height, width) + + # expected range [0,1], normalize to [-1,1] + do_normalize = self.config.do_normalize + if do_normalize and image.min() < 0: + warnings.warn( + "Passing `image` as torch tensor with value range in [-1,1] is deprecated. The expected value range for image tensor is [0,1] " + f"when passing as pytorch tensor or numpy Array. You passed `image` with value range [{image.min()},{image.max()}]", + FutureWarning, + ) + do_normalize = False + if do_normalize: + image = self.normalize(image) + + if self.config.do_binarize: + image = self.binarize(image) + + return image + + def postprocess( + self, + image: torch.Tensor, + output_type: str = "pil", + do_denormalize: Optional[List[bool]] = None, + ) -> Union[PIL.Image.Image, np.ndarray, torch.Tensor]: + """ + Postprocess the image output from tensor to `output_type`. + + Args: + image (`torch.Tensor`): + The image input, should be a pytorch tensor with shape `B x C x H x W`. + output_type (`str`, *optional*, defaults to `pil`): + The output type of the image, can be one of `pil`, `np`, `pt`, `latent`. + do_denormalize (`List[bool]`, *optional*, defaults to `None`): + Whether to denormalize the image to [0,1]. If `None`, will use the value of `do_normalize` in the + `VaeImageProcessor` config. + + Returns: + `PIL.Image.Image`, `np.ndarray` or `torch.Tensor`: + The postprocessed image. + """ + if not isinstance(image, torch.Tensor): + raise ValueError( + f"Input for postprocessing is in incorrect format: {type(image)}. We only support pytorch tensor" + ) + if output_type not in ["latent", "pt", "np", "pil"]: + deprecation_message = ( + f"the output_type {output_type} is outdated and has been set to `np`. Please make sure to set it to one of these instead: " + "`pil`, `np`, `pt`, `latent`" + ) + deprecate("Unsupported output_type", "1.0.0", deprecation_message, standard_warn=False) + output_type = "np" + + if output_type == "latent": + return image + + image = self._denormalize_conditionally(image, do_denormalize) + + if output_type == "pt": + return image + + image = self.pt_to_numpy(image) + + if output_type == "np": + return image + + if output_type == "pil": + return self.numpy_to_pil(image) + + def apply_overlay( + self, + mask: PIL.Image.Image, + init_image: PIL.Image.Image, + image: PIL.Image.Image, + crop_coords: Optional[Tuple[int, int, int, int]] = None, + ) -> PIL.Image.Image: + r""" + Applies an overlay of the mask and the inpainted image on the original image. + + Args: + mask (`PIL.Image.Image`): + The mask image that highlights regions to overlay. + init_image (`PIL.Image.Image`): + The original image to which the overlay is applied. + image (`PIL.Image.Image`): + The image to overlay onto the original. + crop_coords (`Tuple[int, int, int, int]`, *optional*): + Coordinates to crop the image. If provided, the image will be cropped accordingly. + + Returns: + `PIL.Image.Image`: + The final image with the overlay applied. + """ + + width, height = init_image.width, init_image.height + + init_image_masked = PIL.Image.new("RGBa", (width, height)) + init_image_masked.paste(init_image.convert("RGBA").convert("RGBa"), mask=ImageOps.invert(mask.convert("L"))) + + init_image_masked = init_image_masked.convert("RGBA") + + if crop_coords is not None: + x, y, x2, y2 = crop_coords + w = x2 - x + h = y2 - y + base_image = PIL.Image.new("RGBA", (width, height)) + image = self.resize(image, height=h, width=w, resize_mode="crop") + base_image.paste(image, (x, y)) + image = base_image.convert("RGB") + + image = image.convert("RGBA") + image.alpha_composite(init_image_masked) + image = image.convert("RGB") + + return image + + +class VaeImageProcessorLDM3D(VaeImageProcessor): + """ + Image processor for VAE LDM3D. + + Args: + do_resize (`bool`, *optional*, defaults to `True`): + Whether to downscale the image's (height, width) dimensions to multiples of `vae_scale_factor`. + vae_scale_factor (`int`, *optional*, defaults to `8`): + VAE scale factor. If `do_resize` is `True`, the image is automatically resized to multiples of this factor. + resample (`str`, *optional*, defaults to `lanczos`): + Resampling filter to use when resizing the image. + do_normalize (`bool`, *optional*, defaults to `True`): + Whether to normalize the image to [-1,1]. + """ + + config_name = CONFIG_NAME + + @register_to_config + def __init__( + self, + do_resize: bool = True, + vae_scale_factor: int = 8, + resample: str = "lanczos", + do_normalize: bool = True, + ): + super().__init__() + + @staticmethod + def numpy_to_pil(images: np.ndarray) -> List[PIL.Image.Image]: + r""" + Convert a NumPy image or a batch of images to a list of PIL images. + + Args: + images (`np.ndarray`): + The input NumPy array of images, which can be a single image or a batch. + + Returns: + `List[PIL.Image.Image]`: + A list of PIL images converted from the input NumPy array. + """ + if images.ndim == 3: + images = images[None, ...] + images = (images * 255).round().astype("uint8") + if images.shape[-1] == 1: + # special case for grayscale (single channel) images + pil_images = [Image.fromarray(image.squeeze(), mode="L") for image in images] + else: + pil_images = [Image.fromarray(image[:, :, :3]) for image in images] + + return pil_images + + @staticmethod + def depth_pil_to_numpy(images: Union[List[PIL.Image.Image], PIL.Image.Image]) -> np.ndarray: + r""" + Convert a PIL image or a list of PIL images to NumPy arrays. + + Args: + images (`Union[List[PIL.Image.Image], PIL.Image.Image]`): + The input image or list of images to be converted. + + Returns: + `np.ndarray`: + A NumPy array of the converted images. + """ + if not isinstance(images, list): + images = [images] + + images = [np.array(image).astype(np.float32) / (2**16 - 1) for image in images] + images = np.stack(images, axis=0) + return images + + @staticmethod + def rgblike_to_depthmap(image: Union[np.ndarray, torch.Tensor]) -> Union[np.ndarray, torch.Tensor]: + r""" + Convert an RGB-like depth image to a depth map. + + Args: + image (`Union[np.ndarray, torch.Tensor]`): + The RGB-like depth image to convert. + + Returns: + `Union[np.ndarray, torch.Tensor]`: + The corresponding depth map. + """ + return image[:, :, 1] * 2**8 + image[:, :, 2] + + def numpy_to_depth(self, images: np.ndarray) -> List[PIL.Image.Image]: + r""" + Convert a NumPy depth image or a batch of images to a list of PIL images. + + Args: + images (`np.ndarray`): + The input NumPy array of depth images, which can be a single image or a batch. + + Returns: + `List[PIL.Image.Image]`: + A list of PIL images converted from the input NumPy depth images. + """ + if images.ndim == 3: + images = images[None, ...] + images_depth = images[:, :, :, 3:] + if images.shape[-1] == 6: + images_depth = (images_depth * 255).round().astype("uint8") + pil_images = [ + Image.fromarray(self.rgblike_to_depthmap(image_depth), mode="I;16") for image_depth in images_depth + ] + elif images.shape[-1] == 4: + images_depth = (images_depth * 65535.0).astype(np.uint16) + pil_images = [Image.fromarray(image_depth, mode="I;16") for image_depth in images_depth] + else: + raise Exception("Not supported") + + return pil_images + + def postprocess( + self, + image: torch.Tensor, + output_type: str = "pil", + do_denormalize: Optional[List[bool]] = None, + ) -> Union[PIL.Image.Image, np.ndarray, torch.Tensor]: + """ + Postprocess the image output from tensor to `output_type`. + + Args: + image (`torch.Tensor`): + The image input, should be a pytorch tensor with shape `B x C x H x W`. + output_type (`str`, *optional*, defaults to `pil`): + The output type of the image, can be one of `pil`, `np`, `pt`, `latent`. + do_denormalize (`List[bool]`, *optional*, defaults to `None`): + Whether to denormalize the image to [0,1]. If `None`, will use the value of `do_normalize` in the + `VaeImageProcessor` config. + + Returns: + `PIL.Image.Image`, `np.ndarray` or `torch.Tensor`: + The postprocessed image. + """ + if not isinstance(image, torch.Tensor): + raise ValueError( + f"Input for postprocessing is in incorrect format: {type(image)}. We only support pytorch tensor" + ) + if output_type not in ["latent", "pt", "np", "pil"]: + deprecation_message = ( + f"the output_type {output_type} is outdated and has been set to `np`. Please make sure to set it to one of these instead: " + "`pil`, `np`, `pt`, `latent`" + ) + deprecate("Unsupported output_type", "1.0.0", deprecation_message, standard_warn=False) + output_type = "np" + + image = self._denormalize_conditionally(image, do_denormalize) + + image = self.pt_to_numpy(image) + + if output_type == "np": + if image.shape[-1] == 6: + image_depth = np.stack([self.rgblike_to_depthmap(im[:, :, 3:]) for im in image], axis=0) + else: + image_depth = image[:, :, :, 3:] + return image[:, :, :, :3], image_depth + + if output_type == "pil": + return self.numpy_to_pil(image), self.numpy_to_depth(image) + else: + raise Exception(f"This type {output_type} is not supported") + + def preprocess( + self, + rgb: Union[torch.Tensor, PIL.Image.Image, np.ndarray], + depth: Union[torch.Tensor, PIL.Image.Image, np.ndarray], + height: Optional[int] = None, + width: Optional[int] = None, + target_res: Optional[int] = None, + ) -> torch.Tensor: + r""" + Preprocess the image input. Accepted formats are PIL images, NumPy arrays, or PyTorch tensors. + + Args: + rgb (`Union[torch.Tensor, PIL.Image.Image, np.ndarray]`): + The RGB input image, which can be a single image or a batch. + depth (`Union[torch.Tensor, PIL.Image.Image, np.ndarray]`): + The depth input image, which can be a single image or a batch. + height (`Optional[int]`, *optional*, defaults to `None`): + The desired height of the processed image. If `None`, defaults to the height of the input image. + width (`Optional[int]`, *optional*, defaults to `None`): + The desired width of the processed image. If `None`, defaults to the width of the input image. + target_res (`Optional[int]`, *optional*, defaults to `None`): + Target resolution for resizing the images. If specified, overrides height and width. + + Returns: + `Tuple[torch.Tensor, torch.Tensor]`: + A tuple containing the processed RGB and depth images as PyTorch tensors. + """ + supported_formats = (PIL.Image.Image, np.ndarray, torch.Tensor) + + # Expand the missing dimension for 3-dimensional pytorch tensor or numpy array that represents grayscale image + if self.config.do_convert_grayscale and isinstance(rgb, (torch.Tensor, np.ndarray)) and rgb.ndim == 3: + raise Exception("This is not yet supported") + + if isinstance(rgb, supported_formats): + rgb = [rgb] + depth = [depth] + elif not (isinstance(rgb, list) and all(isinstance(i, supported_formats) for i in rgb)): + raise ValueError( + f"Input is in incorrect format: {[type(i) for i in rgb]}. Currently, we only support {', '.join(supported_formats)}" + ) + + if isinstance(rgb[0], PIL.Image.Image): + if self.config.do_convert_rgb: + raise Exception("This is not yet supported") + # rgb = [self.convert_to_rgb(i) for i in rgb] + # depth = [self.convert_to_depth(i) for i in depth] #TODO define convert_to_depth + if self.config.do_resize or target_res: + height, width = self.get_default_height_width(rgb[0], height, width) if not target_res else target_res + rgb = [self.resize(i, height, width) for i in rgb] + depth = [self.resize(i, height, width) for i in depth] + rgb = self.pil_to_numpy(rgb) # to np + rgb = self.numpy_to_pt(rgb) # to pt + + depth = self.depth_pil_to_numpy(depth) # to np + depth = self.numpy_to_pt(depth) # to pt + + elif isinstance(rgb[0], np.ndarray): + rgb = np.concatenate(rgb, axis=0) if rgb[0].ndim == 4 else np.stack(rgb, axis=0) + rgb = self.numpy_to_pt(rgb) + height, width = self.get_default_height_width(rgb, height, width) + if self.config.do_resize: + rgb = self.resize(rgb, height, width) + + depth = np.concatenate(depth, axis=0) if rgb[0].ndim == 4 else np.stack(depth, axis=0) + depth = self.numpy_to_pt(depth) + height, width = self.get_default_height_width(depth, height, width) + if self.config.do_resize: + depth = self.resize(depth, height, width) + + elif isinstance(rgb[0], torch.Tensor): + raise Exception("This is not yet supported") + # rgb = torch.cat(rgb, axis=0) if rgb[0].ndim == 4 else torch.stack(rgb, axis=0) + + # if self.config.do_convert_grayscale and rgb.ndim == 3: + # rgb = rgb.unsqueeze(1) + + # channel = rgb.shape[1] + + # height, width = self.get_default_height_width(rgb, height, width) + # if self.config.do_resize: + # rgb = self.resize(rgb, height, width) + + # depth = torch.cat(depth, axis=0) if depth[0].ndim == 4 else torch.stack(depth, axis=0) + + # if self.config.do_convert_grayscale and depth.ndim == 3: + # depth = depth.unsqueeze(1) + + # channel = depth.shape[1] + # # don't need any preprocess if the image is latents + # if depth == 4: + # return rgb, depth + + # height, width = self.get_default_height_width(depth, height, width) + # if self.config.do_resize: + # depth = self.resize(depth, height, width) + # expected range [0,1], normalize to [-1,1] + do_normalize = self.config.do_normalize + if rgb.min() < 0 and do_normalize: + warnings.warn( + "Passing `image` as torch tensor with value range in [-1,1] is deprecated. The expected value range for image tensor is [0,1] " + f"when passing as pytorch tensor or numpy Array. You passed `image` with value range [{rgb.min()},{rgb.max()}]", + FutureWarning, + ) + do_normalize = False + + if do_normalize: + rgb = self.normalize(rgb) + depth = self.normalize(depth) + + if self.config.do_binarize: + rgb = self.binarize(rgb) + depth = self.binarize(depth) + + return rgb, depth + + +class IPAdapterMaskProcessor(VaeImageProcessor): + """ + Image processor for IP Adapter image masks. + + Args: + do_resize (`bool`, *optional*, defaults to `True`): + Whether to downscale the image's (height, width) dimensions to multiples of `vae_scale_factor`. + vae_scale_factor (`int`, *optional*, defaults to `8`): + VAE scale factor. If `do_resize` is `True`, the image is automatically resized to multiples of this factor. + resample (`str`, *optional*, defaults to `lanczos`): + Resampling filter to use when resizing the image. + do_normalize (`bool`, *optional*, defaults to `False`): + Whether to normalize the image to [-1,1]. + do_binarize (`bool`, *optional*, defaults to `True`): + Whether to binarize the image to 0/1. + do_convert_grayscale (`bool`, *optional*, defaults to be `True`): + Whether to convert the images to grayscale format. + + """ + + config_name = CONFIG_NAME + + @register_to_config + def __init__( + self, + do_resize: bool = True, + vae_scale_factor: int = 8, + resample: str = "lanczos", + do_normalize: bool = False, + do_binarize: bool = True, + do_convert_grayscale: bool = True, + ): + super().__init__( + do_resize=do_resize, + vae_scale_factor=vae_scale_factor, + resample=resample, + do_normalize=do_normalize, + do_binarize=do_binarize, + do_convert_grayscale=do_convert_grayscale, + ) + + @staticmethod + def downsample(mask: torch.Tensor, batch_size: int, num_queries: int, value_embed_dim: int): + """ + Downsamples the provided mask tensor to match the expected dimensions for scaled dot-product attention. If the + aspect ratio of the mask does not match the aspect ratio of the output image, a warning is issued. + + Args: + mask (`torch.Tensor`): + The input mask tensor generated with `IPAdapterMaskProcessor.preprocess()`. + batch_size (`int`): + The batch size. + num_queries (`int`): + The number of queries. + value_embed_dim (`int`): + The dimensionality of the value embeddings. + + Returns: + `torch.Tensor`: + The downsampled mask tensor. + + """ + o_h = mask.shape[1] + o_w = mask.shape[2] + ratio = o_w / o_h + mask_h = int(math.sqrt(num_queries / ratio)) + mask_h = int(mask_h) + int((num_queries % int(mask_h)) != 0) + mask_w = num_queries // mask_h + + mask_downsample = F.interpolate(mask.unsqueeze(0), size=(mask_h, mask_w), mode="bicubic").squeeze(0) + + # Repeat batch_size times + if mask_downsample.shape[0] < batch_size: + mask_downsample = mask_downsample.repeat(batch_size, 1, 1) + + mask_downsample = mask_downsample.view(mask_downsample.shape[0], -1) + + downsampled_area = mask_h * mask_w + # If the output image and the mask do not have the same aspect ratio, tensor shapes will not match + # Pad tensor if downsampled_mask.shape[1] is smaller than num_queries + if downsampled_area < num_queries: + warnings.warn( + "The aspect ratio of the mask does not match the aspect ratio of the output image. " + "Please update your masks or adjust the output size for optimal performance.", + UserWarning, + ) + mask_downsample = F.pad(mask_downsample, (0, num_queries - mask_downsample.shape[1]), value=0.0) + # Discard last embeddings if downsampled_mask.shape[1] is bigger than num_queries + if downsampled_area > num_queries: + warnings.warn( + "The aspect ratio of the mask does not match the aspect ratio of the output image. " + "Please update your masks or adjust the output size for optimal performance.", + UserWarning, + ) + mask_downsample = mask_downsample[:, :num_queries] + + # Repeat last dimension to match SDPA output shape + mask_downsample = mask_downsample.view(mask_downsample.shape[0], mask_downsample.shape[1], 1).repeat( + 1, 1, value_embed_dim + ) + + return mask_downsample + + +class PixArtImageProcessor(VaeImageProcessor): + """ + Image processor for PixArt image resize and crop. + + Args: + do_resize (`bool`, *optional*, defaults to `True`): + Whether to downscale the image's (height, width) dimensions to multiples of `vae_scale_factor`. Can accept + `height` and `width` arguments from [`image_processor.VaeImageProcessor.preprocess`] method. + vae_scale_factor (`int`, *optional*, defaults to `8`): + VAE scale factor. If `do_resize` is `True`, the image is automatically resized to multiples of this factor. + resample (`str`, *optional*, defaults to `lanczos`): + Resampling filter to use when resizing the image. + do_normalize (`bool`, *optional*, defaults to `True`): + Whether to normalize the image to [-1,1]. + do_binarize (`bool`, *optional*, defaults to `False`): + Whether to binarize the image to 0/1. + do_convert_rgb (`bool`, *optional*, defaults to be `False`): + Whether to convert the images to RGB format. + do_convert_grayscale (`bool`, *optional*, defaults to be `False`): + Whether to convert the images to grayscale format. + """ + + @register_to_config + def __init__( + self, + do_resize: bool = True, + vae_scale_factor: int = 8, + resample: str = "lanczos", + do_normalize: bool = True, + do_binarize: bool = False, + do_convert_grayscale: bool = False, + ): + super().__init__( + do_resize=do_resize, + vae_scale_factor=vae_scale_factor, + resample=resample, + do_normalize=do_normalize, + do_binarize=do_binarize, + do_convert_grayscale=do_convert_grayscale, + ) + + @staticmethod + def classify_height_width_bin(height: int, width: int, ratios: dict) -> Tuple[int, int]: + r""" + Returns the binned height and width based on the aspect ratio. + + Args: + height (`int`): The height of the image. + width (`int`): The width of the image. + ratios (`dict`): A dictionary where keys are aspect ratios and values are tuples of (height, width). + + Returns: + `Tuple[int, int]`: The closest binned height and width. + """ + ar = float(height / width) + closest_ratio = min(ratios.keys(), key=lambda ratio: abs(float(ratio) - ar)) + default_hw = ratios[closest_ratio] + return int(default_hw[0]), int(default_hw[1]) + + @staticmethod + def resize_and_crop_tensor(samples: torch.Tensor, new_width: int, new_height: int) -> torch.Tensor: + r""" + Resizes and crops a tensor of images to the specified dimensions. + + Args: + samples (`torch.Tensor`): + A tensor of shape (N, C, H, W) where N is the batch size, C is the number of channels, H is the height, + and W is the width. + new_width (`int`): The desired width of the output images. + new_height (`int`): The desired height of the output images. + + Returns: + `torch.Tensor`: A tensor containing the resized and cropped images. + """ + orig_height, orig_width = samples.shape[2], samples.shape[3] + + # Check if resizing is needed + if orig_height != new_height or orig_width != new_width: + ratio = max(new_height / orig_height, new_width / orig_width) + resized_width = int(orig_width * ratio) + resized_height = int(orig_height * ratio) + + # Resize + samples = F.interpolate( + samples, size=(resized_height, resized_width), mode="bilinear", align_corners=False + ) + + # Center Crop + start_x = (resized_width - new_width) // 2 + end_x = start_x + new_width + start_y = (resized_height - new_height) // 2 + end_y = start_y + new_height + samples = samples[:, :, start_y:end_y, start_x:end_x] + + return samples diff --git a/venv/lib/python3.11/site-packages/diffusers/loaders/__init__.py b/venv/lib/python3.11/site-packages/diffusers/loaders/__init__.py new file mode 100644 index 0000000000000000000000000000000000000000..2db8b53db4986b637852894843878abaa0e3ae6c --- /dev/null +++ b/venv/lib/python3.11/site-packages/diffusers/loaders/__init__.py @@ -0,0 +1,121 @@ +from typing import TYPE_CHECKING + +from ..utils import DIFFUSERS_SLOW_IMPORT, _LazyModule, deprecate +from ..utils.import_utils import is_peft_available, is_torch_available, is_transformers_available + + +def text_encoder_lora_state_dict(text_encoder): + deprecate( + "text_encoder_load_state_dict in `models`", + "0.27.0", + "`text_encoder_lora_state_dict` is deprecated and will be removed in 0.27.0. Make sure to retrieve the weights using `get_peft_model`. See https://huggingface.co/docs/peft/v0.6.2/en/quicktour#peftmodel for more information.", + ) + state_dict = {} + + for name, module in text_encoder_attn_modules(text_encoder): + for k, v in module.q_proj.lora_linear_layer.state_dict().items(): + state_dict[f"{name}.q_proj.lora_linear_layer.{k}"] = v + + for k, v in module.k_proj.lora_linear_layer.state_dict().items(): + state_dict[f"{name}.k_proj.lora_linear_layer.{k}"] = v + + for k, v in module.v_proj.lora_linear_layer.state_dict().items(): + state_dict[f"{name}.v_proj.lora_linear_layer.{k}"] = v + + for k, v in module.out_proj.lora_linear_layer.state_dict().items(): + state_dict[f"{name}.out_proj.lora_linear_layer.{k}"] = v + + return state_dict + + +if is_transformers_available(): + + def text_encoder_attn_modules(text_encoder): + deprecate( + "text_encoder_attn_modules in `models`", + "0.27.0", + "`text_encoder_lora_state_dict` is deprecated and will be removed in 0.27.0. Make sure to retrieve the weights using `get_peft_model`. See https://huggingface.co/docs/peft/v0.6.2/en/quicktour#peftmodel for more information.", + ) + from transformers import CLIPTextModel, CLIPTextModelWithProjection + + attn_modules = [] + + if isinstance(text_encoder, (CLIPTextModel, CLIPTextModelWithProjection)): + for i, layer in enumerate(text_encoder.text_model.encoder.layers): + name = f"text_model.encoder.layers.{i}.self_attn" + mod = layer.self_attn + attn_modules.append((name, mod)) + else: + raise ValueError(f"do not know how to get attention modules for: {text_encoder.__class__.__name__}") + + return attn_modules + + +_import_structure = {} + +if is_torch_available(): + _import_structure["single_file_model"] = ["FromOriginalModelMixin"] + _import_structure["transformer_flux"] = ["FluxTransformer2DLoadersMixin"] + _import_structure["transformer_sd3"] = ["SD3Transformer2DLoadersMixin"] + _import_structure["unet"] = ["UNet2DConditionLoadersMixin"] + _import_structure["utils"] = ["AttnProcsLayers"] + if is_transformers_available(): + _import_structure["single_file"] = ["FromSingleFileMixin"] + _import_structure["lora_pipeline"] = [ + "AmusedLoraLoaderMixin", + "StableDiffusionLoraLoaderMixin", + "SD3LoraLoaderMixin", + "StableDiffusionXLLoraLoaderMixin", + "LTXVideoLoraLoaderMixin", + "LoraLoaderMixin", + "FluxLoraLoaderMixin", + "CogVideoXLoraLoaderMixin", + "Mochi1LoraLoaderMixin", + "HunyuanVideoLoraLoaderMixin", + "SanaLoraLoaderMixin", + ] + _import_structure["textual_inversion"] = ["TextualInversionLoaderMixin"] + _import_structure["ip_adapter"] = [ + "IPAdapterMixin", + "FluxIPAdapterMixin", + "SD3IPAdapterMixin", + ] + +_import_structure["peft"] = ["PeftAdapterMixin"] + + +if TYPE_CHECKING or DIFFUSERS_SLOW_IMPORT: + if is_torch_available(): + from .single_file_model import FromOriginalModelMixin + from .transformer_flux import FluxTransformer2DLoadersMixin + from .transformer_sd3 import SD3Transformer2DLoadersMixin + from .unet import UNet2DConditionLoadersMixin + from .utils import AttnProcsLayers + + if is_transformers_available(): + from .ip_adapter import ( + FluxIPAdapterMixin, + IPAdapterMixin, + SD3IPAdapterMixin, + ) + from .lora_pipeline import ( + AmusedLoraLoaderMixin, + CogVideoXLoraLoaderMixin, + FluxLoraLoaderMixin, + HunyuanVideoLoraLoaderMixin, + LoraLoaderMixin, + LTXVideoLoraLoaderMixin, + Mochi1LoraLoaderMixin, + SanaLoraLoaderMixin, + SD3LoraLoaderMixin, + StableDiffusionLoraLoaderMixin, + StableDiffusionXLLoraLoaderMixin, + ) + from .single_file import FromSingleFileMixin + from .textual_inversion import TextualInversionLoaderMixin + + from .peft import PeftAdapterMixin +else: + import sys + + sys.modules[__name__] = _LazyModule(__name__, globals()["__file__"], _import_structure, module_spec=__spec__) diff --git a/venv/lib/python3.11/site-packages/diffusers/loaders/ip_adapter.py b/venv/lib/python3.11/site-packages/diffusers/loaders/ip_adapter.py new file mode 100644 index 0000000000000000000000000000000000000000..7b691d1fe16e2653d6ab885ed069f70ea73078a2 --- /dev/null +++ b/venv/lib/python3.11/site-packages/diffusers/loaders/ip_adapter.py @@ -0,0 +1,871 @@ +# Copyright 2024 The HuggingFace Team. All rights reserved. +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. + +from pathlib import Path +from typing import Dict, List, Optional, Union + +import torch +import torch.nn.functional as F +from huggingface_hub.utils import validate_hf_hub_args +from safetensors import safe_open + +from ..models.modeling_utils import _LOW_CPU_MEM_USAGE_DEFAULT, load_state_dict +from ..utils import ( + USE_PEFT_BACKEND, + _get_model_file, + is_accelerate_available, + is_torch_version, + is_transformers_available, + logging, +) +from .unet_loader_utils import _maybe_expand_lora_scales + + +if is_transformers_available(): + from transformers import CLIPImageProcessor, CLIPVisionModelWithProjection, SiglipImageProcessor, SiglipVisionModel + +from ..models.attention_processor import ( + AttnProcessor, + AttnProcessor2_0, + FluxAttnProcessor2_0, + FluxIPAdapterJointAttnProcessor2_0, + IPAdapterAttnProcessor, + IPAdapterAttnProcessor2_0, + IPAdapterXFormersAttnProcessor, + JointAttnProcessor2_0, + SD3IPAdapterJointAttnProcessor2_0, +) + + +logger = logging.get_logger(__name__) + + +class IPAdapterMixin: + """Mixin for handling IP Adapters.""" + + @validate_hf_hub_args + def load_ip_adapter( + self, + pretrained_model_name_or_path_or_dict: Union[str, List[str], Dict[str, torch.Tensor]], + subfolder: Union[str, List[str]], + weight_name: Union[str, List[str]], + image_encoder_folder: Optional[str] = "image_encoder", + **kwargs, + ): + """ + Parameters: + pretrained_model_name_or_path_or_dict (`str` or `List[str]` or `os.PathLike` or `List[os.PathLike]` or `dict` or `List[dict]`): + Can be either: + + - A string, the *model id* (for example `google/ddpm-celebahq-256`) of a pretrained model hosted on + the Hub. + - A path to a *directory* (for example `./my_model_directory`) containing the model weights saved + with [`ModelMixin.save_pretrained`]. + - A [torch state + dict](https://pytorch.org/tutorials/beginner/saving_loading_models.html#what-is-a-state-dict). + subfolder (`str` or `List[str]`): + The subfolder location of a model file within a larger model repository on the Hub or locally. If a + list is passed, it should have the same length as `weight_name`. + weight_name (`str` or `List[str]`): + The name of the weight file to load. If a list is passed, it should have the same length as + `subfolder`. + image_encoder_folder (`str`, *optional*, defaults to `image_encoder`): + The subfolder location of the image encoder within a larger model repository on the Hub or locally. + Pass `None` to not load the image encoder. If the image encoder is located in a folder inside + `subfolder`, you only need to pass the name of the folder that contains image encoder weights, e.g. + `image_encoder_folder="image_encoder"`. If the image encoder is located in a folder other than + `subfolder`, you should pass the path to the folder that contains image encoder weights, for example, + `image_encoder_folder="different_subfolder/image_encoder"`. + cache_dir (`Union[str, os.PathLike]`, *optional*): + Path to a directory where a downloaded pretrained model configuration is cached if the standard cache + is not used. + force_download (`bool`, *optional*, defaults to `False`): + Whether or not to force the (re-)download of the model weights and configuration files, overriding the + cached versions if they exist. + + proxies (`Dict[str, str]`, *optional*): + A dictionary of proxy servers to use by protocol or endpoint, for example, `{'http': 'foo.bar:3128', + 'http://hostname': 'foo.bar:4012'}`. The proxies are used on each request. + local_files_only (`bool`, *optional*, defaults to `False`): + Whether to only load local model weights and configuration files or not. If set to `True`, the model + won't be downloaded from the Hub. + token (`str` or *bool*, *optional*): + The token to use as HTTP bearer authorization for remote files. If `True`, the token generated from + `diffusers-cli login` (stored in `~/.huggingface`) is used. + revision (`str`, *optional*, defaults to `"main"`): + The specific model version to use. It can be a branch name, a tag name, a commit id, or any identifier + allowed by Git. + low_cpu_mem_usage (`bool`, *optional*, defaults to `True` if torch version >= 1.9.0 else `False`): + Speed up model loading only loading the pretrained weights and not initializing the weights. This also + tries to not use more than 1x model size in CPU memory (including peak memory) while loading the model. + Only supported for PyTorch >= 1.9.0. If you are using an older version of PyTorch, setting this + argument to `True` will raise an error. + """ + + # handle the list inputs for multiple IP Adapters + if not isinstance(weight_name, list): + weight_name = [weight_name] + + if not isinstance(pretrained_model_name_or_path_or_dict, list): + pretrained_model_name_or_path_or_dict = [pretrained_model_name_or_path_or_dict] + if len(pretrained_model_name_or_path_or_dict) == 1: + pretrained_model_name_or_path_or_dict = pretrained_model_name_or_path_or_dict * len(weight_name) + + if not isinstance(subfolder, list): + subfolder = [subfolder] + if len(subfolder) == 1: + subfolder = subfolder * len(weight_name) + + if len(weight_name) != len(pretrained_model_name_or_path_or_dict): + raise ValueError("`weight_name` and `pretrained_model_name_or_path_or_dict` must have the same length.") + + if len(weight_name) != len(subfolder): + raise ValueError("`weight_name` and `subfolder` must have the same length.") + + # Load the main state dict first. + cache_dir = kwargs.pop("cache_dir", None) + force_download = kwargs.pop("force_download", False) + proxies = kwargs.pop("proxies", None) + local_files_only = kwargs.pop("local_files_only", None) + token = kwargs.pop("token", None) + revision = kwargs.pop("revision", None) + low_cpu_mem_usage = kwargs.pop("low_cpu_mem_usage", _LOW_CPU_MEM_USAGE_DEFAULT) + + if low_cpu_mem_usage and not is_accelerate_available(): + low_cpu_mem_usage = False + logger.warning( + "Cannot initialize model with low cpu memory usage because `accelerate` was not found in the" + " environment. Defaulting to `low_cpu_mem_usage=False`. It is strongly recommended to install" + " `accelerate` for faster and less memory-intense model loading. You can do so with: \n```\npip" + " install accelerate\n```\n." + ) + + if low_cpu_mem_usage is True and not is_torch_version(">=", "1.9.0"): + raise NotImplementedError( + "Low memory initialization requires torch >= 1.9.0. Please either update your PyTorch version or set" + " `low_cpu_mem_usage=False`." + ) + + user_agent = { + "file_type": "attn_procs_weights", + "framework": "pytorch", + } + state_dicts = [] + for pretrained_model_name_or_path_or_dict, weight_name, subfolder in zip( + pretrained_model_name_or_path_or_dict, weight_name, subfolder + ): + if not isinstance(pretrained_model_name_or_path_or_dict, dict): + model_file = _get_model_file( + pretrained_model_name_or_path_or_dict, + weights_name=weight_name, + cache_dir=cache_dir, + force_download=force_download, + proxies=proxies, + local_files_only=local_files_only, + token=token, + revision=revision, + subfolder=subfolder, + user_agent=user_agent, + ) + if weight_name.endswith(".safetensors"): + state_dict = {"image_proj": {}, "ip_adapter": {}} + with safe_open(model_file, framework="pt", device="cpu") as f: + for key in f.keys(): + if key.startswith("image_proj."): + state_dict["image_proj"][key.replace("image_proj.", "")] = f.get_tensor(key) + elif key.startswith("ip_adapter."): + state_dict["ip_adapter"][key.replace("ip_adapter.", "")] = f.get_tensor(key) + else: + state_dict = load_state_dict(model_file) + else: + state_dict = pretrained_model_name_or_path_or_dict + + keys = list(state_dict.keys()) + if "image_proj" not in keys and "ip_adapter" not in keys: + raise ValueError("Required keys are (`image_proj` and `ip_adapter`) missing from the state dict.") + + state_dicts.append(state_dict) + + # load CLIP image encoder here if it has not been registered to the pipeline yet + if hasattr(self, "image_encoder") and getattr(self, "image_encoder", None) is None: + if image_encoder_folder is not None: + if not isinstance(pretrained_model_name_or_path_or_dict, dict): + logger.info(f"loading image_encoder from {pretrained_model_name_or_path_or_dict}") + if image_encoder_folder.count("/") == 0: + image_encoder_subfolder = Path(subfolder, image_encoder_folder).as_posix() + else: + image_encoder_subfolder = Path(image_encoder_folder).as_posix() + + image_encoder = CLIPVisionModelWithProjection.from_pretrained( + pretrained_model_name_or_path_or_dict, + subfolder=image_encoder_subfolder, + low_cpu_mem_usage=low_cpu_mem_usage, + cache_dir=cache_dir, + local_files_only=local_files_only, + ).to(self.device, dtype=self.dtype) + self.register_modules(image_encoder=image_encoder) + else: + raise ValueError( + "`image_encoder` cannot be loaded because `pretrained_model_name_or_path_or_dict` is a state dict." + ) + else: + logger.warning( + "image_encoder is not loaded since `image_encoder_folder=None` passed. You will not be able to use `ip_adapter_image` when calling the pipeline with IP-Adapter." + "Use `ip_adapter_image_embeds` to pass pre-generated image embedding instead." + ) + + # create feature extractor if it has not been registered to the pipeline yet + if hasattr(self, "feature_extractor") and getattr(self, "feature_extractor", None) is None: + # FaceID IP adapters don't need the image encoder so it's not present, in this case we default to 224 + default_clip_size = 224 + clip_image_size = ( + self.image_encoder.config.image_size if self.image_encoder is not None else default_clip_size + ) + feature_extractor = CLIPImageProcessor(size=clip_image_size, crop_size=clip_image_size) + self.register_modules(feature_extractor=feature_extractor) + + # load ip-adapter into unet + unet = getattr(self, self.unet_name) if not hasattr(self, "unet") else self.unet + unet._load_ip_adapter_weights(state_dicts, low_cpu_mem_usage=low_cpu_mem_usage) + + extra_loras = unet._load_ip_adapter_loras(state_dicts) + if extra_loras != {}: + if not USE_PEFT_BACKEND: + logger.warning("PEFT backend is required to load these weights.") + else: + # apply the IP Adapter Face ID LoRA weights + peft_config = getattr(unet, "peft_config", {}) + for k, lora in extra_loras.items(): + if f"faceid_{k}" not in peft_config: + self.load_lora_weights(lora, adapter_name=f"faceid_{k}") + self.set_adapters([f"faceid_{k}"], adapter_weights=[1.0]) + + def set_ip_adapter_scale(self, scale): + """ + Set IP-Adapter scales per-transformer block. Input `scale` could be a single config or a list of configs for + granular control over each IP-Adapter behavior. A config can be a float or a dictionary. + + Example: + + ```py + # To use original IP-Adapter + scale = 1.0 + pipeline.set_ip_adapter_scale(scale) + + # To use style block only + scale = { + "up": {"block_0": [0.0, 1.0, 0.0]}, + } + pipeline.set_ip_adapter_scale(scale) + + # To use style+layout blocks + scale = { + "down": {"block_2": [0.0, 1.0]}, + "up": {"block_0": [0.0, 1.0, 0.0]}, + } + pipeline.set_ip_adapter_scale(scale) + + # To use style and layout from 2 reference images + scales = [{"down": {"block_2": [0.0, 1.0]}}, {"up": {"block_0": [0.0, 1.0, 0.0]}}] + pipeline.set_ip_adapter_scale(scales) + ``` + """ + unet = getattr(self, self.unet_name) if not hasattr(self, "unet") else self.unet + if not isinstance(scale, list): + scale = [scale] + scale_configs = _maybe_expand_lora_scales(unet, scale, default_scale=0.0) + + for attn_name, attn_processor in unet.attn_processors.items(): + if isinstance( + attn_processor, (IPAdapterAttnProcessor, IPAdapterAttnProcessor2_0, IPAdapterXFormersAttnProcessor) + ): + if len(scale_configs) != len(attn_processor.scale): + raise ValueError( + f"Cannot assign {len(scale_configs)} scale_configs to " + f"{len(attn_processor.scale)} IP-Adapter." + ) + elif len(scale_configs) == 1: + scale_configs = scale_configs * len(attn_processor.scale) + for i, scale_config in enumerate(scale_configs): + if isinstance(scale_config, dict): + for k, s in scale_config.items(): + if attn_name.startswith(k): + attn_processor.scale[i] = s + else: + attn_processor.scale[i] = scale_config + + def unload_ip_adapter(self): + """ + Unloads the IP Adapter weights + + Examples: + + ```python + >>> # Assuming `pipeline` is already loaded with the IP Adapter weights. + >>> pipeline.unload_ip_adapter() + >>> ... + ``` + """ + # remove CLIP image encoder + if hasattr(self, "image_encoder") and getattr(self, "image_encoder", None) is not None: + self.image_encoder = None + self.register_to_config(image_encoder=[None, None]) + + # remove feature extractor only when safety_checker is None as safety_checker uses + # the feature_extractor later + if not hasattr(self, "safety_checker"): + if hasattr(self, "feature_extractor") and getattr(self, "feature_extractor", None) is not None: + self.feature_extractor = None + self.register_to_config(feature_extractor=[None, None]) + + # remove hidden encoder + self.unet.encoder_hid_proj = None + self.unet.config.encoder_hid_dim_type = None + + # Kolors: restore `encoder_hid_proj` with `text_encoder_hid_proj` + if hasattr(self.unet, "text_encoder_hid_proj") and self.unet.text_encoder_hid_proj is not None: + self.unet.encoder_hid_proj = self.unet.text_encoder_hid_proj + self.unet.text_encoder_hid_proj = None + self.unet.config.encoder_hid_dim_type = "text_proj" + + # restore original Unet attention processors layers + attn_procs = {} + for name, value in self.unet.attn_processors.items(): + attn_processor_class = ( + AttnProcessor2_0() if hasattr(F, "scaled_dot_product_attention") else AttnProcessor() + ) + attn_procs[name] = ( + attn_processor_class + if isinstance( + value, (IPAdapterAttnProcessor, IPAdapterAttnProcessor2_0, IPAdapterXFormersAttnProcessor) + ) + else value.__class__() + ) + self.unet.set_attn_processor(attn_procs) + + +class FluxIPAdapterMixin: + """Mixin for handling Flux IP Adapters.""" + + @validate_hf_hub_args + def load_ip_adapter( + self, + pretrained_model_name_or_path_or_dict: Union[str, List[str], Dict[str, torch.Tensor]], + weight_name: Union[str, List[str]], + subfolder: Optional[Union[str, List[str]]] = "", + image_encoder_pretrained_model_name_or_path: Optional[str] = "image_encoder", + image_encoder_subfolder: Optional[str] = "", + image_encoder_dtype: torch.dtype = torch.float16, + **kwargs, + ): + """ + Parameters: + pretrained_model_name_or_path_or_dict (`str` or `List[str]` or `os.PathLike` or `List[os.PathLike]` or `dict` or `List[dict]`): + Can be either: + + - A string, the *model id* (for example `google/ddpm-celebahq-256`) of a pretrained model hosted on + the Hub. + - A path to a *directory* (for example `./my_model_directory`) containing the model weights saved + with [`ModelMixin.save_pretrained`]. + - A [torch state + dict](https://pytorch.org/tutorials/beginner/saving_loading_models.html#what-is-a-state-dict). + subfolder (`str` or `List[str]`): + The subfolder location of a model file within a larger model repository on the Hub or locally. If a + list is passed, it should have the same length as `weight_name`. + weight_name (`str` or `List[str]`): + The name of the weight file to load. If a list is passed, it should have the same length as + `weight_name`. + image_encoder_pretrained_model_name_or_path (`str`, *optional*, defaults to `./image_encoder`): + Can be either: + + - A string, the *model id* (for example `openai/clip-vit-large-patch14`) of a pretrained model + hosted on the Hub. + - A path to a *directory* (for example `./my_model_directory`) containing the model weights saved + with [`ModelMixin.save_pretrained`]. + cache_dir (`Union[str, os.PathLike]`, *optional*): + Path to a directory where a downloaded pretrained model configuration is cached if the standard cache + is not used. + force_download (`bool`, *optional*, defaults to `False`): + Whether or not to force the (re-)download of the model weights and configuration files, overriding the + cached versions if they exist. + + proxies (`Dict[str, str]`, *optional*): + A dictionary of proxy servers to use by protocol or endpoint, for example, `{'http': 'foo.bar:3128', + 'http://hostname': 'foo.bar:4012'}`. The proxies are used on each request. + local_files_only (`bool`, *optional*, defaults to `False`): + Whether to only load local model weights and configuration files or not. If set to `True`, the model + won't be downloaded from the Hub. + token (`str` or *bool*, *optional*): + The token to use as HTTP bearer authorization for remote files. If `True`, the token generated from + `diffusers-cli login` (stored in `~/.huggingface`) is used. + revision (`str`, *optional*, defaults to `"main"`): + The specific model version to use. It can be a branch name, a tag name, a commit id, or any identifier + allowed by Git. + low_cpu_mem_usage (`bool`, *optional*, defaults to `True` if torch version >= 1.9.0 else `False`): + Speed up model loading only loading the pretrained weights and not initializing the weights. This also + tries to not use more than 1x model size in CPU memory (including peak memory) while loading the model. + Only supported for PyTorch >= 1.9.0. If you are using an older version of PyTorch, setting this + argument to `True` will raise an error. + """ + + # handle the list inputs for multiple IP Adapters + if not isinstance(weight_name, list): + weight_name = [weight_name] + + if not isinstance(pretrained_model_name_or_path_or_dict, list): + pretrained_model_name_or_path_or_dict = [pretrained_model_name_or_path_or_dict] + if len(pretrained_model_name_or_path_or_dict) == 1: + pretrained_model_name_or_path_or_dict = pretrained_model_name_or_path_or_dict * len(weight_name) + + if not isinstance(subfolder, list): + subfolder = [subfolder] + if len(subfolder) == 1: + subfolder = subfolder * len(weight_name) + + if len(weight_name) != len(pretrained_model_name_or_path_or_dict): + raise ValueError("`weight_name` and `pretrained_model_name_or_path_or_dict` must have the same length.") + + if len(weight_name) != len(subfolder): + raise ValueError("`weight_name` and `subfolder` must have the same length.") + + # Load the main state dict first. + cache_dir = kwargs.pop("cache_dir", None) + force_download = kwargs.pop("force_download", False) + proxies = kwargs.pop("proxies", None) + local_files_only = kwargs.pop("local_files_only", None) + token = kwargs.pop("token", None) + revision = kwargs.pop("revision", None) + low_cpu_mem_usage = kwargs.pop("low_cpu_mem_usage", _LOW_CPU_MEM_USAGE_DEFAULT) + + if low_cpu_mem_usage and not is_accelerate_available(): + low_cpu_mem_usage = False + logger.warning( + "Cannot initialize model with low cpu memory usage because `accelerate` was not found in the" + " environment. Defaulting to `low_cpu_mem_usage=False`. It is strongly recommended to install" + " `accelerate` for faster and less memory-intense model loading. You can do so with: \n```\npip" + " install accelerate\n```\n." + ) + + if low_cpu_mem_usage is True and not is_torch_version(">=", "1.9.0"): + raise NotImplementedError( + "Low memory initialization requires torch >= 1.9.0. Please either update your PyTorch version or set" + " `low_cpu_mem_usage=False`." + ) + + user_agent = { + "file_type": "attn_procs_weights", + "framework": "pytorch", + } + state_dicts = [] + for pretrained_model_name_or_path_or_dict, weight_name, subfolder in zip( + pretrained_model_name_or_path_or_dict, weight_name, subfolder + ): + if not isinstance(pretrained_model_name_or_path_or_dict, dict): + model_file = _get_model_file( + pretrained_model_name_or_path_or_dict, + weights_name=weight_name, + cache_dir=cache_dir, + force_download=force_download, + proxies=proxies, + local_files_only=local_files_only, + token=token, + revision=revision, + subfolder=subfolder, + user_agent=user_agent, + ) + if weight_name.endswith(".safetensors"): + state_dict = {"image_proj": {}, "ip_adapter": {}} + with safe_open(model_file, framework="pt", device="cpu") as f: + image_proj_keys = ["ip_adapter_proj_model.", "image_proj."] + ip_adapter_keys = ["double_blocks.", "ip_adapter."] + for key in f.keys(): + if any(key.startswith(prefix) for prefix in image_proj_keys): + diffusers_name = ".".join(key.split(".")[1:]) + state_dict["image_proj"][diffusers_name] = f.get_tensor(key) + elif any(key.startswith(prefix) for prefix in ip_adapter_keys): + diffusers_name = ( + ".".join(key.split(".")[1:]) + .replace("ip_adapter_double_stream_k_proj", "to_k_ip") + .replace("ip_adapter_double_stream_v_proj", "to_v_ip") + .replace("processor.", "") + ) + state_dict["ip_adapter"][diffusers_name] = f.get_tensor(key) + else: + state_dict = load_state_dict(model_file) + else: + state_dict = pretrained_model_name_or_path_or_dict + + keys = list(state_dict.keys()) + if keys != ["image_proj", "ip_adapter"]: + raise ValueError("Required keys are (`image_proj` and `ip_adapter`) missing from the state dict.") + + state_dicts.append(state_dict) + + # load CLIP image encoder here if it has not been registered to the pipeline yet + if hasattr(self, "image_encoder") and getattr(self, "image_encoder", None) is None: + if image_encoder_pretrained_model_name_or_path is not None: + if not isinstance(pretrained_model_name_or_path_or_dict, dict): + logger.info(f"loading image_encoder from {image_encoder_pretrained_model_name_or_path}") + image_encoder = ( + CLIPVisionModelWithProjection.from_pretrained( + image_encoder_pretrained_model_name_or_path, + subfolder=image_encoder_subfolder, + low_cpu_mem_usage=low_cpu_mem_usage, + cache_dir=cache_dir, + local_files_only=local_files_only, + ) + .to(self.device, dtype=image_encoder_dtype) + .eval() + ) + self.register_modules(image_encoder=image_encoder) + else: + raise ValueError( + "`image_encoder` cannot be loaded because `pretrained_model_name_or_path_or_dict` is a state dict." + ) + else: + logger.warning( + "image_encoder is not loaded since `image_encoder_folder=None` passed. You will not be able to use `ip_adapter_image` when calling the pipeline with IP-Adapter." + "Use `ip_adapter_image_embeds` to pass pre-generated image embedding instead." + ) + + # create feature extractor if it has not been registered to the pipeline yet + if hasattr(self, "feature_extractor") and getattr(self, "feature_extractor", None) is None: + # FaceID IP adapters don't need the image encoder so it's not present, in this case we default to 224 + default_clip_size = 224 + clip_image_size = ( + self.image_encoder.config.image_size if self.image_encoder is not None else default_clip_size + ) + feature_extractor = CLIPImageProcessor(size=clip_image_size, crop_size=clip_image_size) + self.register_modules(feature_extractor=feature_extractor) + + # load ip-adapter into transformer + self.transformer._load_ip_adapter_weights(state_dicts, low_cpu_mem_usage=low_cpu_mem_usage) + + def set_ip_adapter_scale(self, scale: Union[float, List[float], List[List[float]]]): + """ + Set IP-Adapter scales per-transformer block. Input `scale` could be a single config or a list of configs for + granular control over each IP-Adapter behavior. A config can be a float or a list. + + `float` is converted to list and repeated for the number of blocks and the number of IP adapters. `List[float]` + length match the number of blocks, it is repeated for each IP adapter. `List[List[float]]` must match the + number of IP adapters and each must match the number of blocks. + + Example: + + ```py + # To use original IP-Adapter + scale = 1.0 + pipeline.set_ip_adapter_scale(scale) + + + def LinearStrengthModel(start, finish, size): + return [(start + (finish - start) * (i / (size - 1))) for i in range(size)] + + + ip_strengths = LinearStrengthModel(0.3, 0.92, 19) + pipeline.set_ip_adapter_scale(ip_strengths) + ``` + """ + transformer = self.transformer + if not isinstance(scale, list): + scale = [[scale] * transformer.config.num_layers] + elif isinstance(scale, list) and isinstance(scale[0], int) or isinstance(scale[0], float): + if len(scale) != transformer.config.num_layers: + raise ValueError(f"Expected list of {transformer.config.num_layers} scales, got {len(scale)}.") + scale = [scale] + + scale_configs = scale + + key_id = 0 + for attn_name, attn_processor in transformer.attn_processors.items(): + if isinstance(attn_processor, (FluxIPAdapterJointAttnProcessor2_0)): + if len(scale_configs) != len(attn_processor.scale): + raise ValueError( + f"Cannot assign {len(scale_configs)} scale_configs to " + f"{len(attn_processor.scale)} IP-Adapter." + ) + elif len(scale_configs) == 1: + scale_configs = scale_configs * len(attn_processor.scale) + for i, scale_config in enumerate(scale_configs): + attn_processor.scale[i] = scale_config[key_id] + key_id += 1 + + def unload_ip_adapter(self): + """ + Unloads the IP Adapter weights + + Examples: + + ```python + >>> # Assuming `pipeline` is already loaded with the IP Adapter weights. + >>> pipeline.unload_ip_adapter() + >>> ... + ``` + """ + # remove CLIP image encoder + if hasattr(self, "image_encoder") and getattr(self, "image_encoder", None) is not None: + self.image_encoder = None + self.register_to_config(image_encoder=[None, None]) + + # remove feature extractor only when safety_checker is None as safety_checker uses + # the feature_extractor later + if not hasattr(self, "safety_checker"): + if hasattr(self, "feature_extractor") and getattr(self, "feature_extractor", None) is not None: + self.feature_extractor = None + self.register_to_config(feature_extractor=[None, None]) + + # remove hidden encoder + self.transformer.encoder_hid_proj = None + self.transformer.config.encoder_hid_dim_type = None + + # restore original Transformer attention processors layers + attn_procs = {} + for name, value in self.transformer.attn_processors.items(): + attn_processor_class = FluxAttnProcessor2_0() + attn_procs[name] = ( + attn_processor_class if isinstance(value, (FluxIPAdapterJointAttnProcessor2_0)) else value.__class__() + ) + self.transformer.set_attn_processor(attn_procs) + + +class SD3IPAdapterMixin: + """Mixin for handling StableDiffusion 3 IP Adapters.""" + + @property + def is_ip_adapter_active(self) -> bool: + """Checks if IP-Adapter is loaded and scale > 0. + + IP-Adapter scale controls the influence of the image prompt versus text prompt. When this value is set to 0, + the image context is irrelevant. + + Returns: + `bool`: True when IP-Adapter is loaded and any layer has scale > 0. + """ + scales = [ + attn_proc.scale + for attn_proc in self.transformer.attn_processors.values() + if isinstance(attn_proc, SD3IPAdapterJointAttnProcessor2_0) + ] + + return len(scales) > 0 and any(scale > 0 for scale in scales) + + @validate_hf_hub_args + def load_ip_adapter( + self, + pretrained_model_name_or_path_or_dict: Union[str, Dict[str, torch.Tensor]], + weight_name: str = "ip-adapter.safetensors", + subfolder: Optional[str] = None, + image_encoder_folder: Optional[str] = "image_encoder", + **kwargs, + ) -> None: + """ + Parameters: + pretrained_model_name_or_path_or_dict (`str` or `os.PathLike` or `dict`): + Can be either: + - A string, the *model id* (for example `google/ddpm-celebahq-256`) of a pretrained model hosted on + the Hub. + - A path to a *directory* (for example `./my_model_directory`) containing the model weights saved + with [`ModelMixin.save_pretrained`]. + - A [torch state + dict](https://pytorch.org/tutorials/beginner/saving_loading_models.html#what-is-a-state-dict). + weight_name (`str`, defaults to "ip-adapter.safetensors"): + The name of the weight file to load. If a list is passed, it should have the same length as + `subfolder`. + subfolder (`str`, *optional*): + The subfolder location of a model file within a larger model repository on the Hub or locally. If a + list is passed, it should have the same length as `weight_name`. + image_encoder_folder (`str`, *optional*, defaults to `image_encoder`): + The subfolder location of the image encoder within a larger model repository on the Hub or locally. + Pass `None` to not load the image encoder. If the image encoder is located in a folder inside + `subfolder`, you only need to pass the name of the folder that contains image encoder weights, e.g. + `image_encoder_folder="image_encoder"`. If the image encoder is located in a folder other than + `subfolder`, you should pass the path to the folder that contains image encoder weights, for example, + `image_encoder_folder="different_subfolder/image_encoder"`. + cache_dir (`Union[str, os.PathLike]`, *optional*): + Path to a directory where a downloaded pretrained model configuration is cached if the standard cache + is not used. + force_download (`bool`, *optional*, defaults to `False`): + Whether or not to force the (re-)download of the model weights and configuration files, overriding the + cached versions if they exist. + proxies (`Dict[str, str]`, *optional*): + A dictionary of proxy servers to use by protocol or endpoint, for example, `{'http': 'foo.bar:3128', + 'http://hostname': 'foo.bar:4012'}`. The proxies are used on each request. + local_files_only (`bool`, *optional*, defaults to `False`): + Whether to only load local model weights and configuration files or not. If set to `True`, the model + won't be downloaded from the Hub. + token (`str` or *bool*, *optional*): + The token to use as HTTP bearer authorization for remote files. If `True`, the token generated from + `diffusers-cli login` (stored in `~/.huggingface`) is used. + revision (`str`, *optional*, defaults to `"main"`): + The specific model version to use. It can be a branch name, a tag name, a commit id, or any identifier + allowed by Git. + low_cpu_mem_usage (`bool`, *optional*, defaults to `True` if torch version >= 1.9.0 else `False`): + Speed up model loading only loading the pretrained weights and not initializing the weights. This also + tries to not use more than 1x model size in CPU memory (including peak memory) while loading the model. + Only supported for PyTorch >= 1.9.0. If you are using an older version of PyTorch, setting this + argument to `True` will raise an error. + """ + # Load the main state dict first + cache_dir = kwargs.pop("cache_dir", None) + force_download = kwargs.pop("force_download", False) + proxies = kwargs.pop("proxies", None) + local_files_only = kwargs.pop("local_files_only", None) + token = kwargs.pop("token", None) + revision = kwargs.pop("revision", None) + low_cpu_mem_usage = kwargs.pop("low_cpu_mem_usage", _LOW_CPU_MEM_USAGE_DEFAULT) + + if low_cpu_mem_usage and not is_accelerate_available(): + low_cpu_mem_usage = False + logger.warning( + "Cannot initialize model with low cpu memory usage because `accelerate` was not found in the" + " environment. Defaulting to `low_cpu_mem_usage=False`. It is strongly recommended to install" + " `accelerate` for faster and less memory-intense model loading. You can do so with: \n```\npip" + " install accelerate\n```\n." + ) + + if low_cpu_mem_usage is True and not is_torch_version(">=", "1.9.0"): + raise NotImplementedError( + "Low memory initialization requires torch >= 1.9.0. Please either update your PyTorch version or set" + " `low_cpu_mem_usage=False`." + ) + + user_agent = { + "file_type": "attn_procs_weights", + "framework": "pytorch", + } + + if not isinstance(pretrained_model_name_or_path_or_dict, dict): + model_file = _get_model_file( + pretrained_model_name_or_path_or_dict, + weights_name=weight_name, + cache_dir=cache_dir, + force_download=force_download, + proxies=proxies, + local_files_only=local_files_only, + token=token, + revision=revision, + subfolder=subfolder, + user_agent=user_agent, + ) + if weight_name.endswith(".safetensors"): + state_dict = {"image_proj": {}, "ip_adapter": {}} + with safe_open(model_file, framework="pt", device="cpu") as f: + for key in f.keys(): + if key.startswith("image_proj."): + state_dict["image_proj"][key.replace("image_proj.", "")] = f.get_tensor(key) + elif key.startswith("ip_adapter."): + state_dict["ip_adapter"][key.replace("ip_adapter.", "")] = f.get_tensor(key) + else: + state_dict = load_state_dict(model_file) + else: + state_dict = pretrained_model_name_or_path_or_dict + + keys = list(state_dict.keys()) + if "image_proj" not in keys and "ip_adapter" not in keys: + raise ValueError("Required keys are (`image_proj` and `ip_adapter`) missing from the state dict.") + + # Load image_encoder and feature_extractor here if they haven't been registered to the pipeline yet + if hasattr(self, "image_encoder") and getattr(self, "image_encoder", None) is None: + if image_encoder_folder is not None: + if not isinstance(pretrained_model_name_or_path_or_dict, dict): + logger.info(f"loading image_encoder from {pretrained_model_name_or_path_or_dict}") + if image_encoder_folder.count("/") == 0: + image_encoder_subfolder = Path(subfolder, image_encoder_folder).as_posix() + else: + image_encoder_subfolder = Path(image_encoder_folder).as_posix() + + # Commons args for loading image encoder and image processor + kwargs = { + "low_cpu_mem_usage": low_cpu_mem_usage, + "cache_dir": cache_dir, + "local_files_only": local_files_only, + } + + self.register_modules( + feature_extractor=SiglipImageProcessor.from_pretrained(image_encoder_subfolder, **kwargs).to( + self.device, dtype=self.dtype + ), + image_encoder=SiglipVisionModel.from_pretrained(image_encoder_subfolder, **kwargs).to( + self.device, dtype=self.dtype + ), + ) + else: + raise ValueError( + "`image_encoder` cannot be loaded because `pretrained_model_name_or_path_or_dict` is a state dict." + ) + else: + logger.warning( + "image_encoder is not loaded since `image_encoder_folder=None` passed. You will not be able to use `ip_adapter_image` when calling the pipeline with IP-Adapter." + "Use `ip_adapter_image_embeds` to pass pre-generated image embedding instead." + ) + + # Load IP-Adapter into transformer + self.transformer._load_ip_adapter_weights(state_dict, low_cpu_mem_usage=low_cpu_mem_usage) + + def set_ip_adapter_scale(self, scale: float) -> None: + """ + Set IP-Adapter scale, which controls image prompt conditioning. A value of 1.0 means the model is only + conditioned on the image prompt, and 0.0 only conditioned by the text prompt. Lowering this value encourages + the model to produce more diverse images, but they may not be as aligned with the image prompt. + + Example: + + ```python + >>> # Assuming `pipeline` is already loaded with the IP Adapter weights. + >>> pipeline.set_ip_adapter_scale(0.6) + >>> ... + ``` + + Args: + scale (float): + IP-Adapter scale to be set. + + """ + for attn_processor in self.transformer.attn_processors.values(): + if isinstance(attn_processor, SD3IPAdapterJointAttnProcessor2_0): + attn_processor.scale = scale + + def unload_ip_adapter(self) -> None: + """ + Unloads the IP Adapter weights. + + Example: + + ```python + >>> # Assuming `pipeline` is already loaded with the IP Adapter weights. + >>> pipeline.unload_ip_adapter() + >>> ... + ``` + """ + # Remove image encoder + if hasattr(self, "image_encoder") and getattr(self, "image_encoder", None) is not None: + self.image_encoder = None + self.register_to_config(image_encoder=None) + + # Remove feature extractor + if hasattr(self, "feature_extractor") and getattr(self, "feature_extractor", None) is not None: + self.feature_extractor = None + self.register_to_config(feature_extractor=None) + + # Remove image projection + self.transformer.image_proj = None + + # Restore original attention processors layers + attn_procs = { + name: ( + JointAttnProcessor2_0() if isinstance(value, SD3IPAdapterJointAttnProcessor2_0) else value.__class__() + ) + for name, value in self.transformer.attn_processors.items() + } + self.transformer.set_attn_processor(attn_procs) diff --git a/venv/lib/python3.11/site-packages/diffusers/loaders/lora_base.py b/venv/lib/python3.11/site-packages/diffusers/loaders/lora_base.py new file mode 100644 index 0000000000000000000000000000000000000000..286d0a12bc7129b5980e2bfd84ad770469f4d30b --- /dev/null +++ b/venv/lib/python3.11/site-packages/diffusers/loaders/lora_base.py @@ -0,0 +1,765 @@ +# Copyright 2024 The HuggingFace Team. All rights reserved. +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. + +import copy +import inspect +import os +from pathlib import Path +from typing import Callable, Dict, List, Optional, Union + +import safetensors +import torch +import torch.nn as nn +from huggingface_hub import model_info +from huggingface_hub.constants import HF_HUB_OFFLINE + +from ..models.modeling_utils import ModelMixin, load_state_dict +from ..utils import ( + USE_PEFT_BACKEND, + _get_model_file, + delete_adapter_layers, + deprecate, + is_accelerate_available, + is_peft_available, + is_transformers_available, + logging, + recurse_remove_peft_layers, + set_adapter_layers, + set_weights_and_activate_adapters, +) + + +if is_transformers_available(): + from transformers import PreTrainedModel + +if is_peft_available(): + from peft.tuners.tuners_utils import BaseTunerLayer + +if is_accelerate_available(): + from accelerate.hooks import AlignDevicesHook, CpuOffload, remove_hook_from_module + +logger = logging.get_logger(__name__) + +LORA_WEIGHT_NAME = "pytorch_lora_weights.bin" +LORA_WEIGHT_NAME_SAFE = "pytorch_lora_weights.safetensors" + + +def fuse_text_encoder_lora(text_encoder, lora_scale=1.0, safe_fusing=False, adapter_names=None): + """ + Fuses LoRAs for the text encoder. + + Args: + text_encoder (`torch.nn.Module`): + The text encoder module to set the adapter layers for. If `None`, it will try to get the `text_encoder` + attribute. + lora_scale (`float`, defaults to 1.0): + Controls how much to influence the outputs with the LoRA parameters. + safe_fusing (`bool`, defaults to `False`): + Whether to check fused weights for NaN values before fusing and if values are NaN not fusing them. + adapter_names (`List[str]` or `str`): + The names of the adapters to use. + """ + merge_kwargs = {"safe_merge": safe_fusing} + + for module in text_encoder.modules(): + if isinstance(module, BaseTunerLayer): + if lora_scale != 1.0: + module.scale_layer(lora_scale) + + # For BC with previous PEFT versions, we need to check the signature + # of the `merge` method to see if it supports the `adapter_names` argument. + supported_merge_kwargs = list(inspect.signature(module.merge).parameters) + if "adapter_names" in supported_merge_kwargs: + merge_kwargs["adapter_names"] = adapter_names + elif "adapter_names" not in supported_merge_kwargs and adapter_names is not None: + raise ValueError( + "The `adapter_names` argument is not supported with your PEFT version. " + "Please upgrade to the latest version of PEFT. `pip install -U peft`" + ) + + module.merge(**merge_kwargs) + + +def unfuse_text_encoder_lora(text_encoder): + """ + Unfuses LoRAs for the text encoder. + + Args: + text_encoder (`torch.nn.Module`): + The text encoder module to set the adapter layers for. If `None`, it will try to get the `text_encoder` + attribute. + """ + for module in text_encoder.modules(): + if isinstance(module, BaseTunerLayer): + module.unmerge() + + +def set_adapters_for_text_encoder( + adapter_names: Union[List[str], str], + text_encoder: Optional["PreTrainedModel"] = None, # noqa: F821 + text_encoder_weights: Optional[Union[float, List[float], List[None]]] = None, +): + """ + Sets the adapter layers for the text encoder. + + Args: + adapter_names (`List[str]` or `str`): + The names of the adapters to use. + text_encoder (`torch.nn.Module`, *optional*): + The text encoder module to set the adapter layers for. If `None`, it will try to get the `text_encoder` + attribute. + text_encoder_weights (`List[float]`, *optional*): + The weights to use for the text encoder. If `None`, the weights are set to `1.0` for all the adapters. + """ + if text_encoder is None: + raise ValueError( + "The pipeline does not have a default `pipe.text_encoder` class. Please make sure to pass a `text_encoder` instead." + ) + + def process_weights(adapter_names, weights): + # Expand weights into a list, one entry per adapter + # e.g. for 2 adapters: 7 -> [7,7] ; [3, None] -> [3, None] + if not isinstance(weights, list): + weights = [weights] * len(adapter_names) + + if len(adapter_names) != len(weights): + raise ValueError( + f"Length of adapter names {len(adapter_names)} is not equal to the length of the weights {len(weights)}" + ) + + # Set None values to default of 1.0 + # e.g. [7,7] -> [7,7] ; [3, None] -> [3,1] + weights = [w if w is not None else 1.0 for w in weights] + + return weights + + adapter_names = [adapter_names] if isinstance(adapter_names, str) else adapter_names + text_encoder_weights = process_weights(adapter_names, text_encoder_weights) + set_weights_and_activate_adapters(text_encoder, adapter_names, text_encoder_weights) + + +def disable_lora_for_text_encoder(text_encoder: Optional["PreTrainedModel"] = None): + """ + Disables the LoRA layers for the text encoder. + + Args: + text_encoder (`torch.nn.Module`, *optional*): + The text encoder module to disable the LoRA layers for. If `None`, it will try to get the `text_encoder` + attribute. + """ + if text_encoder is None: + raise ValueError("Text Encoder not found.") + set_adapter_layers(text_encoder, enabled=False) + + +def enable_lora_for_text_encoder(text_encoder: Optional["PreTrainedModel"] = None): + """ + Enables the LoRA layers for the text encoder. + + Args: + text_encoder (`torch.nn.Module`, *optional*): + The text encoder module to enable the LoRA layers for. If `None`, it will try to get the `text_encoder` + attribute. + """ + if text_encoder is None: + raise ValueError("Text Encoder not found.") + set_adapter_layers(text_encoder, enabled=True) + + +def _remove_text_encoder_monkey_patch(text_encoder): + recurse_remove_peft_layers(text_encoder) + if getattr(text_encoder, "peft_config", None) is not None: + del text_encoder.peft_config + text_encoder._hf_peft_config_loaded = None + + +def _fetch_state_dict( + pretrained_model_name_or_path_or_dict, + weight_name, + use_safetensors, + local_files_only, + cache_dir, + force_download, + proxies, + token, + revision, + subfolder, + user_agent, + allow_pickle, +): + model_file = None + if not isinstance(pretrained_model_name_or_path_or_dict, dict): + # Let's first try to load .safetensors weights + if (use_safetensors and weight_name is None) or ( + weight_name is not None and weight_name.endswith(".safetensors") + ): + try: + # Here we're relaxing the loading check to enable more Inference API + # friendliness where sometimes, it's not at all possible to automatically + # determine `weight_name`. + if weight_name is None: + weight_name = _best_guess_weight_name( + pretrained_model_name_or_path_or_dict, + file_extension=".safetensors", + local_files_only=local_files_only, + ) + model_file = _get_model_file( + pretrained_model_name_or_path_or_dict, + weights_name=weight_name or LORA_WEIGHT_NAME_SAFE, + cache_dir=cache_dir, + force_download=force_download, + proxies=proxies, + local_files_only=local_files_only, + token=token, + revision=revision, + subfolder=subfolder, + user_agent=user_agent, + ) + state_dict = safetensors.torch.load_file(model_file, device="cpu") + except (IOError, safetensors.SafetensorError) as e: + if not allow_pickle: + raise e + # try loading non-safetensors weights + model_file = None + pass + + if model_file is None: + if weight_name is None: + weight_name = _best_guess_weight_name( + pretrained_model_name_or_path_or_dict, file_extension=".bin", local_files_only=local_files_only + ) + model_file = _get_model_file( + pretrained_model_name_or_path_or_dict, + weights_name=weight_name or LORA_WEIGHT_NAME, + cache_dir=cache_dir, + force_download=force_download, + proxies=proxies, + local_files_only=local_files_only, + token=token, + revision=revision, + subfolder=subfolder, + user_agent=user_agent, + ) + state_dict = load_state_dict(model_file) + else: + state_dict = pretrained_model_name_or_path_or_dict + + return state_dict + + +def _best_guess_weight_name( + pretrained_model_name_or_path_or_dict, file_extension=".safetensors", local_files_only=False +): + if local_files_only or HF_HUB_OFFLINE: + raise ValueError("When using the offline mode, you must specify a `weight_name`.") + + targeted_files = [] + + if os.path.isfile(pretrained_model_name_or_path_or_dict): + return + elif os.path.isdir(pretrained_model_name_or_path_or_dict): + targeted_files = [f for f in os.listdir(pretrained_model_name_or_path_or_dict) if f.endswith(file_extension)] + else: + files_in_repo = model_info(pretrained_model_name_or_path_or_dict).siblings + targeted_files = [f.rfilename for f in files_in_repo if f.rfilename.endswith(file_extension)] + if len(targeted_files) == 0: + return + + # "scheduler" does not correspond to a LoRA checkpoint. + # "optimizer" does not correspond to a LoRA checkpoint + # only top-level checkpoints are considered and not the other ones, hence "checkpoint". + unallowed_substrings = {"scheduler", "optimizer", "checkpoint"} + targeted_files = list( + filter(lambda x: all(substring not in x for substring in unallowed_substrings), targeted_files) + ) + + if any(f.endswith(LORA_WEIGHT_NAME) for f in targeted_files): + targeted_files = list(filter(lambda x: x.endswith(LORA_WEIGHT_NAME), targeted_files)) + elif any(f.endswith(LORA_WEIGHT_NAME_SAFE) for f in targeted_files): + targeted_files = list(filter(lambda x: x.endswith(LORA_WEIGHT_NAME_SAFE), targeted_files)) + + if len(targeted_files) > 1: + raise ValueError( + f"Provided path contains more than one weights file in the {file_extension} format. Either specify `weight_name` in `load_lora_weights` or make sure there's only one `.safetensors` or `.bin` file in {pretrained_model_name_or_path_or_dict}." + ) + weight_name = targeted_files[0] + return weight_name + + +class LoraBaseMixin: + """Utility class for handling LoRAs.""" + + _lora_loadable_modules = [] + num_fused_loras = 0 + + def load_lora_weights(self, **kwargs): + raise NotImplementedError("`load_lora_weights()` is not implemented.") + + @classmethod + def save_lora_weights(cls, **kwargs): + raise NotImplementedError("`save_lora_weights()` not implemented.") + + @classmethod + def lora_state_dict(cls, **kwargs): + raise NotImplementedError("`lora_state_dict()` is not implemented.") + + @classmethod + def _optionally_disable_offloading(cls, _pipeline): + """ + Optionally removes offloading in case the pipeline has been already sequentially offloaded to CPU. + + Args: + _pipeline (`DiffusionPipeline`): + The pipeline to disable offloading for. + + Returns: + tuple: + A tuple indicating if `is_model_cpu_offload` or `is_sequential_cpu_offload` is True. + """ + is_model_cpu_offload = False + is_sequential_cpu_offload = False + + if _pipeline is not None and _pipeline.hf_device_map is None: + for _, component in _pipeline.components.items(): + if isinstance(component, nn.Module) and hasattr(component, "_hf_hook"): + if not is_model_cpu_offload: + is_model_cpu_offload = isinstance(component._hf_hook, CpuOffload) + if not is_sequential_cpu_offload: + is_sequential_cpu_offload = ( + isinstance(component._hf_hook, AlignDevicesHook) + or hasattr(component._hf_hook, "hooks") + and isinstance(component._hf_hook.hooks[0], AlignDevicesHook) + ) + + logger.info( + "Accelerate hooks detected. Since you have called `load_lora_weights()`, the previous hooks will be first removed. Then the LoRA parameters will be loaded and the hooks will be applied again." + ) + remove_hook_from_module(component, recurse=is_sequential_cpu_offload) + + return (is_model_cpu_offload, is_sequential_cpu_offload) + + @classmethod + def _fetch_state_dict(cls, *args, **kwargs): + deprecation_message = f"Using the `_fetch_state_dict()` method from {cls} has been deprecated and will be removed in a future version. Please use `from diffusers.loaders.lora_base import _fetch_state_dict`." + deprecate("_fetch_state_dict", "0.35.0", deprecation_message) + return _fetch_state_dict(*args, **kwargs) + + @classmethod + def _best_guess_weight_name(cls, *args, **kwargs): + deprecation_message = f"Using the `_best_guess_weight_name()` method from {cls} has been deprecated and will be removed in a future version. Please use `from diffusers.loaders.lora_base import _best_guess_weight_name`." + deprecate("_best_guess_weight_name", "0.35.0", deprecation_message) + return _best_guess_weight_name(*args, **kwargs) + + def unload_lora_weights(self): + """ + Unloads the LoRA parameters. + + Examples: + + ```python + >>> # Assuming `pipeline` is already loaded with the LoRA parameters. + >>> pipeline.unload_lora_weights() + >>> ... + ``` + """ + if not USE_PEFT_BACKEND: + raise ValueError("PEFT backend is required for this method.") + + for component in self._lora_loadable_modules: + model = getattr(self, component, None) + if model is not None: + if issubclass(model.__class__, ModelMixin): + model.unload_lora() + elif issubclass(model.__class__, PreTrainedModel): + _remove_text_encoder_monkey_patch(model) + + def fuse_lora( + self, + components: List[str] = [], + lora_scale: float = 1.0, + safe_fusing: bool = False, + adapter_names: Optional[List[str]] = None, + **kwargs, + ): + r""" + Fuses the LoRA parameters into the original parameters of the corresponding blocks. + + + + This is an experimental API. + + + + Args: + components: (`List[str]`): List of LoRA-injectable components to fuse the LoRAs into. + lora_scale (`float`, defaults to 1.0): + Controls how much to influence the outputs with the LoRA parameters. + safe_fusing (`bool`, defaults to `False`): + Whether to check fused weights for NaN values before fusing and if values are NaN not fusing them. + adapter_names (`List[str]`, *optional*): + Adapter names to be used for fusing. If nothing is passed, all active adapters will be fused. + + Example: + + ```py + from diffusers import DiffusionPipeline + import torch + + pipeline = DiffusionPipeline.from_pretrained( + "stabilityai/stable-diffusion-xl-base-1.0", torch_dtype=torch.float16 + ).to("cuda") + pipeline.load_lora_weights("nerijs/pixel-art-xl", weight_name="pixel-art-xl.safetensors", adapter_name="pixel") + pipeline.fuse_lora(lora_scale=0.7) + ``` + """ + if "fuse_unet" in kwargs: + depr_message = "Passing `fuse_unet` to `fuse_lora()` is deprecated and will be ignored. Please use the `components` argument and provide a list of the components whose LoRAs are to be fused. `fuse_unet` will be removed in a future version." + deprecate( + "fuse_unet", + "1.0.0", + depr_message, + ) + if "fuse_transformer" in kwargs: + depr_message = "Passing `fuse_transformer` to `fuse_lora()` is deprecated and will be ignored. Please use the `components` argument and provide a list of the components whose LoRAs are to be fused. `fuse_transformer` will be removed in a future version." + deprecate( + "fuse_transformer", + "1.0.0", + depr_message, + ) + if "fuse_text_encoder" in kwargs: + depr_message = "Passing `fuse_text_encoder` to `fuse_lora()` is deprecated and will be ignored. Please use the `components` argument and provide a list of the components whose LoRAs are to be fused. `fuse_text_encoder` will be removed in a future version." + deprecate( + "fuse_text_encoder", + "1.0.0", + depr_message, + ) + + if len(components) == 0: + raise ValueError("`components` cannot be an empty list.") + + for fuse_component in components: + if fuse_component not in self._lora_loadable_modules: + raise ValueError(f"{fuse_component} is not found in {self._lora_loadable_modules=}.") + + model = getattr(self, fuse_component, None) + if model is not None: + # check if diffusers model + if issubclass(model.__class__, ModelMixin): + model.fuse_lora(lora_scale, safe_fusing=safe_fusing, adapter_names=adapter_names) + # handle transformers models. + if issubclass(model.__class__, PreTrainedModel): + fuse_text_encoder_lora( + model, lora_scale=lora_scale, safe_fusing=safe_fusing, adapter_names=adapter_names + ) + + self.num_fused_loras += 1 + + def unfuse_lora(self, components: List[str] = [], **kwargs): + r""" + Reverses the effect of + [`pipe.fuse_lora()`](https://huggingface.co/docs/diffusers/main/en/api/loaders#diffusers.loaders.LoraBaseMixin.fuse_lora). + + + + This is an experimental API. + + + + Args: + components (`List[str]`): List of LoRA-injectable components to unfuse LoRA from. + unfuse_unet (`bool`, defaults to `True`): Whether to unfuse the UNet LoRA parameters. + unfuse_text_encoder (`bool`, defaults to `True`): + Whether to unfuse the text encoder LoRA parameters. If the text encoder wasn't monkey-patched with the + LoRA parameters then it won't have any effect. + """ + if "unfuse_unet" in kwargs: + depr_message = "Passing `unfuse_unet` to `unfuse_lora()` is deprecated and will be ignored. Please use the `components` argument. `unfuse_unet` will be removed in a future version." + deprecate( + "unfuse_unet", + "1.0.0", + depr_message, + ) + if "unfuse_transformer" in kwargs: + depr_message = "Passing `unfuse_transformer` to `unfuse_lora()` is deprecated and will be ignored. Please use the `components` argument. `unfuse_transformer` will be removed in a future version." + deprecate( + "unfuse_transformer", + "1.0.0", + depr_message, + ) + if "unfuse_text_encoder" in kwargs: + depr_message = "Passing `unfuse_text_encoder` to `unfuse_lora()` is deprecated and will be ignored. Please use the `components` argument. `unfuse_text_encoder` will be removed in a future version." + deprecate( + "unfuse_text_encoder", + "1.0.0", + depr_message, + ) + + if len(components) == 0: + raise ValueError("`components` cannot be an empty list.") + + for fuse_component in components: + if fuse_component not in self._lora_loadable_modules: + raise ValueError(f"{fuse_component} is not found in {self._lora_loadable_modules=}.") + + model = getattr(self, fuse_component, None) + if model is not None: + if issubclass(model.__class__, (ModelMixin, PreTrainedModel)): + for module in model.modules(): + if isinstance(module, BaseTunerLayer): + module.unmerge() + + self.num_fused_loras -= 1 + + def set_adapters( + self, + adapter_names: Union[List[str], str], + adapter_weights: Optional[Union[float, Dict, List[float], List[Dict]]] = None, + ): + adapter_names = [adapter_names] if isinstance(adapter_names, str) else adapter_names + + adapter_weights = copy.deepcopy(adapter_weights) + + # Expand weights into a list, one entry per adapter + if not isinstance(adapter_weights, list): + adapter_weights = [adapter_weights] * len(adapter_names) + + if len(adapter_names) != len(adapter_weights): + raise ValueError( + f"Length of adapter names {len(adapter_names)} is not equal to the length of the weights {len(adapter_weights)}" + ) + + list_adapters = self.get_list_adapters() # eg {"unet": ["adapter1", "adapter2"], "text_encoder": ["adapter2"]} + # eg ["adapter1", "adapter2"] + all_adapters = {adapter for adapters in list_adapters.values() for adapter in adapters} + missing_adapters = set(adapter_names) - all_adapters + if len(missing_adapters) > 0: + raise ValueError( + f"Adapter name(s) {missing_adapters} not in the list of present adapters: {all_adapters}." + ) + + # eg {"adapter1": ["unet"], "adapter2": ["unet", "text_encoder"]} + invert_list_adapters = { + adapter: [part for part, adapters in list_adapters.items() if adapter in adapters] + for adapter in all_adapters + } + + # Decompose weights into weights for denoiser and text encoders. + _component_adapter_weights = {} + for component in self._lora_loadable_modules: + model = getattr(self, component) + + for adapter_name, weights in zip(adapter_names, adapter_weights): + if isinstance(weights, dict): + component_adapter_weights = weights.pop(component, None) + + if component_adapter_weights is not None and not hasattr(self, component): + logger.warning( + f"Lora weight dict contains {component} weights but will be ignored because pipeline does not have {component}." + ) + + if component_adapter_weights is not None and component not in invert_list_adapters[adapter_name]: + logger.warning( + ( + f"Lora weight dict for adapter '{adapter_name}' contains {component}," + f"but this will be ignored because {adapter_name} does not contain weights for {component}." + f"Valid parts for {adapter_name} are: {invert_list_adapters[adapter_name]}." + ) + ) + + else: + component_adapter_weights = weights + + _component_adapter_weights.setdefault(component, []) + _component_adapter_weights[component].append(component_adapter_weights) + + if issubclass(model.__class__, ModelMixin): + model.set_adapters(adapter_names, _component_adapter_weights[component]) + elif issubclass(model.__class__, PreTrainedModel): + set_adapters_for_text_encoder(adapter_names, model, _component_adapter_weights[component]) + + def disable_lora(self): + if not USE_PEFT_BACKEND: + raise ValueError("PEFT backend is required for this method.") + + for component in self._lora_loadable_modules: + model = getattr(self, component, None) + if model is not None: + if issubclass(model.__class__, ModelMixin): + model.disable_lora() + elif issubclass(model.__class__, PreTrainedModel): + disable_lora_for_text_encoder(model) + + def enable_lora(self): + if not USE_PEFT_BACKEND: + raise ValueError("PEFT backend is required for this method.") + + for component in self._lora_loadable_modules: + model = getattr(self, component, None) + if model is not None: + if issubclass(model.__class__, ModelMixin): + model.enable_lora() + elif issubclass(model.__class__, PreTrainedModel): + enable_lora_for_text_encoder(model) + + def delete_adapters(self, adapter_names: Union[List[str], str]): + """ + Args: + Deletes the LoRA layers of `adapter_name` for the unet and text-encoder(s). + adapter_names (`Union[List[str], str]`): + The names of the adapter to delete. Can be a single string or a list of strings + """ + if not USE_PEFT_BACKEND: + raise ValueError("PEFT backend is required for this method.") + + if isinstance(adapter_names, str): + adapter_names = [adapter_names] + + for component in self._lora_loadable_modules: + model = getattr(self, component, None) + if model is not None: + if issubclass(model.__class__, ModelMixin): + model.delete_adapters(adapter_names) + elif issubclass(model.__class__, PreTrainedModel): + for adapter_name in adapter_names: + delete_adapter_layers(model, adapter_name) + + def get_active_adapters(self) -> List[str]: + """ + Gets the list of the current active adapters. + + Example: + + ```python + from diffusers import DiffusionPipeline + + pipeline = DiffusionPipeline.from_pretrained( + "stabilityai/stable-diffusion-xl-base-1.0", + ).to("cuda") + pipeline.load_lora_weights("CiroN2022/toy-face", weight_name="toy_face_sdxl.safetensors", adapter_name="toy") + pipeline.get_active_adapters() + ``` + """ + if not USE_PEFT_BACKEND: + raise ValueError( + "PEFT backend is required for this method. Please install the latest version of PEFT `pip install -U peft`" + ) + + active_adapters = [] + + for component in self._lora_loadable_modules: + model = getattr(self, component, None) + if model is not None and issubclass(model.__class__, ModelMixin): + for module in model.modules(): + if isinstance(module, BaseTunerLayer): + active_adapters = module.active_adapters + break + + return active_adapters + + def get_list_adapters(self) -> Dict[str, List[str]]: + """ + Gets the current list of all available adapters in the pipeline. + """ + if not USE_PEFT_BACKEND: + raise ValueError( + "PEFT backend is required for this method. Please install the latest version of PEFT `pip install -U peft`" + ) + + set_adapters = {} + + for component in self._lora_loadable_modules: + model = getattr(self, component, None) + if ( + model is not None + and issubclass(model.__class__, (ModelMixin, PreTrainedModel)) + and hasattr(model, "peft_config") + ): + set_adapters[component] = list(model.peft_config.keys()) + + return set_adapters + + def set_lora_device(self, adapter_names: List[str], device: Union[torch.device, str, int]) -> None: + """ + Moves the LoRAs listed in `adapter_names` to a target device. Useful for offloading the LoRA to the CPU in case + you want to load multiple adapters and free some GPU memory. + + Args: + adapter_names (`List[str]`): + List of adapters to send device to. + device (`Union[torch.device, str, int]`): + Device to send the adapters to. Can be either a torch device, a str or an integer. + """ + if not USE_PEFT_BACKEND: + raise ValueError("PEFT backend is required for this method.") + + for component in self._lora_loadable_modules: + model = getattr(self, component, None) + if model is not None: + for module in model.modules(): + if isinstance(module, BaseTunerLayer): + for adapter_name in adapter_names: + module.lora_A[adapter_name].to(device) + module.lora_B[adapter_name].to(device) + # this is a param, not a module, so device placement is not in-place -> re-assign + if hasattr(module, "lora_magnitude_vector") and module.lora_magnitude_vector is not None: + if adapter_name in module.lora_magnitude_vector: + module.lora_magnitude_vector[adapter_name] = module.lora_magnitude_vector[ + adapter_name + ].to(device) + + @staticmethod + def pack_weights(layers, prefix): + layers_weights = layers.state_dict() if isinstance(layers, torch.nn.Module) else layers + layers_state_dict = {f"{prefix}.{module_name}": param for module_name, param in layers_weights.items()} + return layers_state_dict + + @staticmethod + def write_lora_layers( + state_dict: Dict[str, torch.Tensor], + save_directory: str, + is_main_process: bool, + weight_name: str, + save_function: Callable, + safe_serialization: bool, + ): + if os.path.isfile(save_directory): + logger.error(f"Provided path ({save_directory}) should be a directory, not a file") + return + + if save_function is None: + if safe_serialization: + + def save_function(weights, filename): + return safetensors.torch.save_file(weights, filename, metadata={"format": "pt"}) + + else: + save_function = torch.save + + os.makedirs(save_directory, exist_ok=True) + + if weight_name is None: + if safe_serialization: + weight_name = LORA_WEIGHT_NAME_SAFE + else: + weight_name = LORA_WEIGHT_NAME + + save_path = Path(save_directory, weight_name).as_posix() + save_function(state_dict, save_path) + logger.info(f"Model weights saved in {save_path}") + + @property + def lora_scale(self) -> float: + # property function that returns the lora scale which can be set at run time by the pipeline. + # if _lora_scale has not been set, return 1 + return self._lora_scale if hasattr(self, "_lora_scale") else 1.0 diff --git a/venv/lib/python3.11/site-packages/diffusers/loaders/lora_conversion_utils.py b/venv/lib/python3.11/site-packages/diffusers/loaders/lora_conversion_utils.py new file mode 100644 index 0000000000000000000000000000000000000000..07c2c22724227013d8e620ad27322308a1bc03e6 --- /dev/null +++ b/venv/lib/python3.11/site-packages/diffusers/loaders/lora_conversion_utils.py @@ -0,0 +1,975 @@ +# Copyright 2024 The HuggingFace Team. All rights reserved. +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. + +import re + +import torch + +from ..utils import is_peft_version, logging + + +logger = logging.get_logger(__name__) + + +def _maybe_map_sgm_blocks_to_diffusers(state_dict, unet_config, delimiter="_", block_slice_pos=5): + # 1. get all state_dict_keys + all_keys = list(state_dict.keys()) + sgm_patterns = ["input_blocks", "middle_block", "output_blocks"] + + # 2. check if needs remapping, if not return original dict + is_in_sgm_format = False + for key in all_keys: + if any(p in key for p in sgm_patterns): + is_in_sgm_format = True + break + + if not is_in_sgm_format: + return state_dict + + # 3. Else remap from SGM patterns + new_state_dict = {} + inner_block_map = ["resnets", "attentions", "upsamplers"] + + # Retrieves # of down, mid and up blocks + input_block_ids, middle_block_ids, output_block_ids = set(), set(), set() + + for layer in all_keys: + if "text" in layer: + new_state_dict[layer] = state_dict.pop(layer) + else: + layer_id = int(layer.split(delimiter)[:block_slice_pos][-1]) + if sgm_patterns[0] in layer: + input_block_ids.add(layer_id) + elif sgm_patterns[1] in layer: + middle_block_ids.add(layer_id) + elif sgm_patterns[2] in layer: + output_block_ids.add(layer_id) + else: + raise ValueError(f"Checkpoint not supported because layer {layer} not supported.") + + input_blocks = { + layer_id: [key for key in state_dict if f"input_blocks{delimiter}{layer_id}" in key] + for layer_id in input_block_ids + } + middle_blocks = { + layer_id: [key for key in state_dict if f"middle_block{delimiter}{layer_id}" in key] + for layer_id in middle_block_ids + } + output_blocks = { + layer_id: [key for key in state_dict if f"output_blocks{delimiter}{layer_id}" in key] + for layer_id in output_block_ids + } + + # Rename keys accordingly + for i in input_block_ids: + block_id = (i - 1) // (unet_config.layers_per_block + 1) + layer_in_block_id = (i - 1) % (unet_config.layers_per_block + 1) + + for key in input_blocks[i]: + inner_block_id = int(key.split(delimiter)[block_slice_pos]) + inner_block_key = inner_block_map[inner_block_id] if "op" not in key else "downsamplers" + inner_layers_in_block = str(layer_in_block_id) if "op" not in key else "0" + new_key = delimiter.join( + key.split(delimiter)[: block_slice_pos - 1] + + [str(block_id), inner_block_key, inner_layers_in_block] + + key.split(delimiter)[block_slice_pos + 1 :] + ) + new_state_dict[new_key] = state_dict.pop(key) + + for i in middle_block_ids: + key_part = None + if i == 0: + key_part = [inner_block_map[0], "0"] + elif i == 1: + key_part = [inner_block_map[1], "0"] + elif i == 2: + key_part = [inner_block_map[0], "1"] + else: + raise ValueError(f"Invalid middle block id {i}.") + + for key in middle_blocks[i]: + new_key = delimiter.join( + key.split(delimiter)[: block_slice_pos - 1] + key_part + key.split(delimiter)[block_slice_pos:] + ) + new_state_dict[new_key] = state_dict.pop(key) + + for i in output_block_ids: + block_id = i // (unet_config.layers_per_block + 1) + layer_in_block_id = i % (unet_config.layers_per_block + 1) + + for key in output_blocks[i]: + inner_block_id = int(key.split(delimiter)[block_slice_pos]) + inner_block_key = inner_block_map[inner_block_id] + inner_layers_in_block = str(layer_in_block_id) if inner_block_id < 2 else "0" + new_key = delimiter.join( + key.split(delimiter)[: block_slice_pos - 1] + + [str(block_id), inner_block_key, inner_layers_in_block] + + key.split(delimiter)[block_slice_pos + 1 :] + ) + new_state_dict[new_key] = state_dict.pop(key) + + if len(state_dict) > 0: + raise ValueError("At this point all state dict entries have to be converted.") + + return new_state_dict + + +def _convert_non_diffusers_lora_to_diffusers(state_dict, unet_name="unet", text_encoder_name="text_encoder"): + """ + Converts a non-Diffusers LoRA state dict to a Diffusers compatible state dict. + + Args: + state_dict (`dict`): The state dict to convert. + unet_name (`str`, optional): The name of the U-Net module in the Diffusers model. Defaults to "unet". + text_encoder_name (`str`, optional): The name of the text encoder module in the Diffusers model. Defaults to + "text_encoder". + + Returns: + `tuple`: A tuple containing the converted state dict and a dictionary of alphas. + """ + unet_state_dict = {} + te_state_dict = {} + te2_state_dict = {} + network_alphas = {} + + # Check for DoRA-enabled LoRAs. + dora_present_in_unet = any("dora_scale" in k and "lora_unet_" in k for k in state_dict) + dora_present_in_te = any("dora_scale" in k and ("lora_te_" in k or "lora_te1_" in k) for k in state_dict) + dora_present_in_te2 = any("dora_scale" in k and "lora_te2_" in k for k in state_dict) + if dora_present_in_unet or dora_present_in_te or dora_present_in_te2: + if is_peft_version("<", "0.9.0"): + raise ValueError( + "You need `peft` 0.9.0 at least to use DoRA-enabled LoRAs. Please upgrade your installation of `peft`." + ) + + # Iterate over all LoRA weights. + all_lora_keys = list(state_dict.keys()) + for key in all_lora_keys: + if not key.endswith("lora_down.weight"): + continue + + # Extract LoRA name. + lora_name = key.split(".")[0] + + # Find corresponding up weight and alpha. + lora_name_up = lora_name + ".lora_up.weight" + lora_name_alpha = lora_name + ".alpha" + + # Handle U-Net LoRAs. + if lora_name.startswith("lora_unet_"): + diffusers_name = _convert_unet_lora_key(key) + + # Store down and up weights. + unet_state_dict[diffusers_name] = state_dict.pop(key) + unet_state_dict[diffusers_name.replace(".down.", ".up.")] = state_dict.pop(lora_name_up) + + # Store DoRA scale if present. + if dora_present_in_unet: + dora_scale_key_to_replace = "_lora.down." if "_lora.down." in diffusers_name else ".lora.down." + unet_state_dict[ + diffusers_name.replace(dora_scale_key_to_replace, ".lora_magnitude_vector.") + ] = state_dict.pop(key.replace("lora_down.weight", "dora_scale")) + + # Handle text encoder LoRAs. + elif lora_name.startswith(("lora_te_", "lora_te1_", "lora_te2_")): + diffusers_name = _convert_text_encoder_lora_key(key, lora_name) + + # Store down and up weights for te or te2. + if lora_name.startswith(("lora_te_", "lora_te1_")): + te_state_dict[diffusers_name] = state_dict.pop(key) + te_state_dict[diffusers_name.replace(".down.", ".up.")] = state_dict.pop(lora_name_up) + else: + te2_state_dict[diffusers_name] = state_dict.pop(key) + te2_state_dict[diffusers_name.replace(".down.", ".up.")] = state_dict.pop(lora_name_up) + + # Store DoRA scale if present. + if dora_present_in_te or dora_present_in_te2: + dora_scale_key_to_replace_te = ( + "_lora.down." if "_lora.down." in diffusers_name else ".lora_linear_layer." + ) + if lora_name.startswith(("lora_te_", "lora_te1_")): + te_state_dict[ + diffusers_name.replace(dora_scale_key_to_replace_te, ".lora_magnitude_vector.") + ] = state_dict.pop(key.replace("lora_down.weight", "dora_scale")) + elif lora_name.startswith("lora_te2_"): + te2_state_dict[ + diffusers_name.replace(dora_scale_key_to_replace_te, ".lora_magnitude_vector.") + ] = state_dict.pop(key.replace("lora_down.weight", "dora_scale")) + + # Store alpha if present. + if lora_name_alpha in state_dict: + alpha = state_dict.pop(lora_name_alpha).item() + network_alphas.update(_get_alpha_name(lora_name_alpha, diffusers_name, alpha)) + + # Check if any keys remain. + if len(state_dict) > 0: + raise ValueError(f"The following keys have not been correctly renamed: \n\n {', '.join(state_dict.keys())}") + + logger.info("Non-diffusers checkpoint detected.") + + # Construct final state dict. + unet_state_dict = {f"{unet_name}.{module_name}": params for module_name, params in unet_state_dict.items()} + te_state_dict = {f"{text_encoder_name}.{module_name}": params for module_name, params in te_state_dict.items()} + te2_state_dict = ( + {f"text_encoder_2.{module_name}": params for module_name, params in te2_state_dict.items()} + if len(te2_state_dict) > 0 + else None + ) + if te2_state_dict is not None: + te_state_dict.update(te2_state_dict) + + new_state_dict = {**unet_state_dict, **te_state_dict} + return new_state_dict, network_alphas + + +def _convert_unet_lora_key(key): + """ + Converts a U-Net LoRA key to a Diffusers compatible key. + """ + diffusers_name = key.replace("lora_unet_", "").replace("_", ".") + + # Replace common U-Net naming patterns. + diffusers_name = diffusers_name.replace("input.blocks", "down_blocks") + diffusers_name = diffusers_name.replace("down.blocks", "down_blocks") + diffusers_name = diffusers_name.replace("middle.block", "mid_block") + diffusers_name = diffusers_name.replace("mid.block", "mid_block") + diffusers_name = diffusers_name.replace("output.blocks", "up_blocks") + diffusers_name = diffusers_name.replace("up.blocks", "up_blocks") + diffusers_name = diffusers_name.replace("transformer.blocks", "transformer_blocks") + diffusers_name = diffusers_name.replace("to.q.lora", "to_q_lora") + diffusers_name = diffusers_name.replace("to.k.lora", "to_k_lora") + diffusers_name = diffusers_name.replace("to.v.lora", "to_v_lora") + diffusers_name = diffusers_name.replace("to.out.0.lora", "to_out_lora") + diffusers_name = diffusers_name.replace("proj.in", "proj_in") + diffusers_name = diffusers_name.replace("proj.out", "proj_out") + diffusers_name = diffusers_name.replace("emb.layers", "time_emb_proj") + + # SDXL specific conversions. + if "emb" in diffusers_name and "time.emb.proj" not in diffusers_name: + pattern = r"\.\d+(?=\D*$)" + diffusers_name = re.sub(pattern, "", diffusers_name, count=1) + if ".in." in diffusers_name: + diffusers_name = diffusers_name.replace("in.layers.2", "conv1") + if ".out." in diffusers_name: + diffusers_name = diffusers_name.replace("out.layers.3", "conv2") + if "downsamplers" in diffusers_name or "upsamplers" in diffusers_name: + diffusers_name = diffusers_name.replace("op", "conv") + if "skip" in diffusers_name: + diffusers_name = diffusers_name.replace("skip.connection", "conv_shortcut") + + # LyCORIS specific conversions. + if "time.emb.proj" in diffusers_name: + diffusers_name = diffusers_name.replace("time.emb.proj", "time_emb_proj") + if "conv.shortcut" in diffusers_name: + diffusers_name = diffusers_name.replace("conv.shortcut", "conv_shortcut") + + # General conversions. + if "transformer_blocks" in diffusers_name: + if "attn1" in diffusers_name or "attn2" in diffusers_name: + diffusers_name = diffusers_name.replace("attn1", "attn1.processor") + diffusers_name = diffusers_name.replace("attn2", "attn2.processor") + elif "ff" in diffusers_name: + pass + elif any(key in diffusers_name for key in ("proj_in", "proj_out")): + pass + else: + pass + + return diffusers_name + + +def _convert_text_encoder_lora_key(key, lora_name): + """ + Converts a text encoder LoRA key to a Diffusers compatible key. + """ + if lora_name.startswith(("lora_te_", "lora_te1_")): + key_to_replace = "lora_te_" if lora_name.startswith("lora_te_") else "lora_te1_" + else: + key_to_replace = "lora_te2_" + + diffusers_name = key.replace(key_to_replace, "").replace("_", ".") + diffusers_name = diffusers_name.replace("text.model", "text_model") + diffusers_name = diffusers_name.replace("self.attn", "self_attn") + diffusers_name = diffusers_name.replace("q.proj.lora", "to_q_lora") + diffusers_name = diffusers_name.replace("k.proj.lora", "to_k_lora") + diffusers_name = diffusers_name.replace("v.proj.lora", "to_v_lora") + diffusers_name = diffusers_name.replace("out.proj.lora", "to_out_lora") + diffusers_name = diffusers_name.replace("text.projection", "text_projection") + + if "self_attn" in diffusers_name or "text_projection" in diffusers_name: + pass + elif "mlp" in diffusers_name: + # Be aware that this is the new diffusers convention and the rest of the code might + # not utilize it yet. + diffusers_name = diffusers_name.replace(".lora.", ".lora_linear_layer.") + return diffusers_name + + +def _get_alpha_name(lora_name_alpha, diffusers_name, alpha): + """ + Gets the correct alpha name for the Diffusers model. + """ + if lora_name_alpha.startswith("lora_unet_"): + prefix = "unet." + elif lora_name_alpha.startswith(("lora_te_", "lora_te1_")): + prefix = "text_encoder." + else: + prefix = "text_encoder_2." + new_name = prefix + diffusers_name.split(".lora.")[0] + ".alpha" + return {new_name: alpha} + + +# The utilities under `_convert_kohya_flux_lora_to_diffusers()` +# are taken from https://github.com/kohya-ss/sd-scripts/blob/a61cf73a5cb5209c3f4d1a3688dd276a4dfd1ecb/networks/convert_flux_lora.py +# All credits go to `kohya-ss`. +def _convert_kohya_flux_lora_to_diffusers(state_dict): + def _convert_to_ai_toolkit(sds_sd, ait_sd, sds_key, ait_key): + if sds_key + ".lora_down.weight" not in sds_sd: + return + down_weight = sds_sd.pop(sds_key + ".lora_down.weight") + + # scale weight by alpha and dim + rank = down_weight.shape[0] + alpha = sds_sd.pop(sds_key + ".alpha").item() # alpha is scalar + scale = alpha / rank # LoRA is scaled by 'alpha / rank' in forward pass, so we need to scale it back here + + # calculate scale_down and scale_up to keep the same value. if scale is 4, scale_down is 2 and scale_up is 2 + scale_down = scale + scale_up = 1.0 + while scale_down * 2 < scale_up: + scale_down *= 2 + scale_up /= 2 + + ait_sd[ait_key + ".lora_A.weight"] = down_weight * scale_down + ait_sd[ait_key + ".lora_B.weight"] = sds_sd.pop(sds_key + ".lora_up.weight") * scale_up + + def _convert_to_ai_toolkit_cat(sds_sd, ait_sd, sds_key, ait_keys, dims=None): + if sds_key + ".lora_down.weight" not in sds_sd: + return + down_weight = sds_sd.pop(sds_key + ".lora_down.weight") + up_weight = sds_sd.pop(sds_key + ".lora_up.weight") + sd_lora_rank = down_weight.shape[0] + + # scale weight by alpha and dim + alpha = sds_sd.pop(sds_key + ".alpha") + scale = alpha / sd_lora_rank + + # calculate scale_down and scale_up + scale_down = scale + scale_up = 1.0 + while scale_down * 2 < scale_up: + scale_down *= 2 + scale_up /= 2 + + down_weight = down_weight * scale_down + up_weight = up_weight * scale_up + + # calculate dims if not provided + num_splits = len(ait_keys) + if dims is None: + dims = [up_weight.shape[0] // num_splits] * num_splits + else: + assert sum(dims) == up_weight.shape[0] + + # check upweight is sparse or not + is_sparse = False + if sd_lora_rank % num_splits == 0: + ait_rank = sd_lora_rank // num_splits + is_sparse = True + i = 0 + for j in range(len(dims)): + for k in range(len(dims)): + if j == k: + continue + is_sparse = is_sparse and torch.all( + up_weight[i : i + dims[j], k * ait_rank : (k + 1) * ait_rank] == 0 + ) + i += dims[j] + if is_sparse: + logger.info(f"weight is sparse: {sds_key}") + + # make ai-toolkit weight + ait_down_keys = [k + ".lora_A.weight" for k in ait_keys] + ait_up_keys = [k + ".lora_B.weight" for k in ait_keys] + if not is_sparse: + # down_weight is copied to each split + ait_sd.update({k: down_weight for k in ait_down_keys}) + + # up_weight is split to each split + ait_sd.update({k: v for k, v in zip(ait_up_keys, torch.split(up_weight, dims, dim=0))}) # noqa: C416 + else: + # down_weight is chunked to each split + ait_sd.update({k: v for k, v in zip(ait_down_keys, torch.chunk(down_weight, num_splits, dim=0))}) # noqa: C416 + + # up_weight is sparse: only non-zero values are copied to each split + i = 0 + for j in range(len(dims)): + ait_sd[ait_up_keys[j]] = up_weight[i : i + dims[j], j * ait_rank : (j + 1) * ait_rank].contiguous() + i += dims[j] + + def _convert_sd_scripts_to_ai_toolkit(sds_sd): + ait_sd = {} + for i in range(19): + _convert_to_ai_toolkit( + sds_sd, + ait_sd, + f"lora_unet_double_blocks_{i}_img_attn_proj", + f"transformer.transformer_blocks.{i}.attn.to_out.0", + ) + _convert_to_ai_toolkit_cat( + sds_sd, + ait_sd, + f"lora_unet_double_blocks_{i}_img_attn_qkv", + [ + f"transformer.transformer_blocks.{i}.attn.to_q", + f"transformer.transformer_blocks.{i}.attn.to_k", + f"transformer.transformer_blocks.{i}.attn.to_v", + ], + ) + _convert_to_ai_toolkit( + sds_sd, + ait_sd, + f"lora_unet_double_blocks_{i}_img_mlp_0", + f"transformer.transformer_blocks.{i}.ff.net.0.proj", + ) + _convert_to_ai_toolkit( + sds_sd, + ait_sd, + f"lora_unet_double_blocks_{i}_img_mlp_2", + f"transformer.transformer_blocks.{i}.ff.net.2", + ) + _convert_to_ai_toolkit( + sds_sd, + ait_sd, + f"lora_unet_double_blocks_{i}_img_mod_lin", + f"transformer.transformer_blocks.{i}.norm1.linear", + ) + _convert_to_ai_toolkit( + sds_sd, + ait_sd, + f"lora_unet_double_blocks_{i}_txt_attn_proj", + f"transformer.transformer_blocks.{i}.attn.to_add_out", + ) + _convert_to_ai_toolkit_cat( + sds_sd, + ait_sd, + f"lora_unet_double_blocks_{i}_txt_attn_qkv", + [ + f"transformer.transformer_blocks.{i}.attn.add_q_proj", + f"transformer.transformer_blocks.{i}.attn.add_k_proj", + f"transformer.transformer_blocks.{i}.attn.add_v_proj", + ], + ) + _convert_to_ai_toolkit( + sds_sd, + ait_sd, + f"lora_unet_double_blocks_{i}_txt_mlp_0", + f"transformer.transformer_blocks.{i}.ff_context.net.0.proj", + ) + _convert_to_ai_toolkit( + sds_sd, + ait_sd, + f"lora_unet_double_blocks_{i}_txt_mlp_2", + f"transformer.transformer_blocks.{i}.ff_context.net.2", + ) + _convert_to_ai_toolkit( + sds_sd, + ait_sd, + f"lora_unet_double_blocks_{i}_txt_mod_lin", + f"transformer.transformer_blocks.{i}.norm1_context.linear", + ) + + for i in range(38): + _convert_to_ai_toolkit_cat( + sds_sd, + ait_sd, + f"lora_unet_single_blocks_{i}_linear1", + [ + f"transformer.single_transformer_blocks.{i}.attn.to_q", + f"transformer.single_transformer_blocks.{i}.attn.to_k", + f"transformer.single_transformer_blocks.{i}.attn.to_v", + f"transformer.single_transformer_blocks.{i}.proj_mlp", + ], + dims=[3072, 3072, 3072, 12288], + ) + _convert_to_ai_toolkit( + sds_sd, + ait_sd, + f"lora_unet_single_blocks_{i}_linear2", + f"transformer.single_transformer_blocks.{i}.proj_out", + ) + _convert_to_ai_toolkit( + sds_sd, + ait_sd, + f"lora_unet_single_blocks_{i}_modulation_lin", + f"transformer.single_transformer_blocks.{i}.norm.linear", + ) + + remaining_keys = list(sds_sd.keys()) + te_state_dict = {} + if remaining_keys: + if not all(k.startswith("lora_te1") for k in remaining_keys): + raise ValueError(f"Incompatible keys detected: \n\n {', '.join(remaining_keys)}") + for key in remaining_keys: + if not key.endswith("lora_down.weight"): + continue + + lora_name = key.split(".")[0] + lora_name_up = f"{lora_name}.lora_up.weight" + lora_name_alpha = f"{lora_name}.alpha" + diffusers_name = _convert_text_encoder_lora_key(key, lora_name) + + if lora_name.startswith(("lora_te_", "lora_te1_")): + down_weight = sds_sd.pop(key) + sd_lora_rank = down_weight.shape[0] + te_state_dict[diffusers_name] = down_weight + te_state_dict[diffusers_name.replace(".down.", ".up.")] = sds_sd.pop(lora_name_up) + + if lora_name_alpha in sds_sd: + alpha = sds_sd.pop(lora_name_alpha).item() + scale = alpha / sd_lora_rank + + scale_down = scale + scale_up = 1.0 + while scale_down * 2 < scale_up: + scale_down *= 2 + scale_up /= 2 + + te_state_dict[diffusers_name] *= scale_down + te_state_dict[diffusers_name.replace(".down.", ".up.")] *= scale_up + + if len(sds_sd) > 0: + logger.warning(f"Unsupported keys for ai-toolkit: {sds_sd.keys()}") + + if te_state_dict: + te_state_dict = {f"text_encoder.{module_name}": params for module_name, params in te_state_dict.items()} + + new_state_dict = {**ait_sd, **te_state_dict} + return new_state_dict + + return _convert_sd_scripts_to_ai_toolkit(state_dict) + + +# Adapted from https://gist.github.com/Leommm-byte/6b331a1e9bd53271210b26543a7065d6 +# Some utilities were reused from +# https://github.com/kohya-ss/sd-scripts/blob/a61cf73a5cb5209c3f4d1a3688dd276a4dfd1ecb/networks/convert_flux_lora.py +def _convert_xlabs_flux_lora_to_diffusers(old_state_dict): + new_state_dict = {} + orig_keys = list(old_state_dict.keys()) + + def handle_qkv(sds_sd, ait_sd, sds_key, ait_keys, dims=None): + down_weight = sds_sd.pop(sds_key) + up_weight = sds_sd.pop(sds_key.replace(".down.weight", ".up.weight")) + + # calculate dims if not provided + num_splits = len(ait_keys) + if dims is None: + dims = [up_weight.shape[0] // num_splits] * num_splits + else: + assert sum(dims) == up_weight.shape[0] + + # make ai-toolkit weight + ait_down_keys = [k + ".lora_A.weight" for k in ait_keys] + ait_up_keys = [k + ".lora_B.weight" for k in ait_keys] + + # down_weight is copied to each split + ait_sd.update({k: down_weight for k in ait_down_keys}) + + # up_weight is split to each split + ait_sd.update({k: v for k, v in zip(ait_up_keys, torch.split(up_weight, dims, dim=0))}) # noqa: C416 + + for old_key in orig_keys: + # Handle double_blocks + if old_key.startswith(("diffusion_model.double_blocks", "double_blocks")): + block_num = re.search(r"double_blocks\.(\d+)", old_key).group(1) + new_key = f"transformer.transformer_blocks.{block_num}" + + if "processor.proj_lora1" in old_key: + new_key += ".attn.to_out.0" + elif "processor.proj_lora2" in old_key: + new_key += ".attn.to_add_out" + # Handle text latents. + elif "processor.qkv_lora2" in old_key and "up" not in old_key: + handle_qkv( + old_state_dict, + new_state_dict, + old_key, + [ + f"transformer.transformer_blocks.{block_num}.attn.add_q_proj", + f"transformer.transformer_blocks.{block_num}.attn.add_k_proj", + f"transformer.transformer_blocks.{block_num}.attn.add_v_proj", + ], + ) + # continue + # Handle image latents. + elif "processor.qkv_lora1" in old_key and "up" not in old_key: + handle_qkv( + old_state_dict, + new_state_dict, + old_key, + [ + f"transformer.transformer_blocks.{block_num}.attn.to_q", + f"transformer.transformer_blocks.{block_num}.attn.to_k", + f"transformer.transformer_blocks.{block_num}.attn.to_v", + ], + ) + # continue + + if "down" in old_key: + new_key += ".lora_A.weight" + elif "up" in old_key: + new_key += ".lora_B.weight" + + # Handle single_blocks + elif old_key.startswith(("diffusion_model.single_blocks", "single_blocks")): + block_num = re.search(r"single_blocks\.(\d+)", old_key).group(1) + new_key = f"transformer.single_transformer_blocks.{block_num}" + + if "proj_lora" in old_key: + new_key += ".proj_out" + elif "qkv_lora" in old_key and "up" not in old_key: + handle_qkv( + old_state_dict, + new_state_dict, + old_key, + [ + f"transformer.single_transformer_blocks.{block_num}.attn.to_q", + f"transformer.single_transformer_blocks.{block_num}.attn.to_k", + f"transformer.single_transformer_blocks.{block_num}.attn.to_v", + ], + ) + + if "down" in old_key: + new_key += ".lora_A.weight" + elif "up" in old_key: + new_key += ".lora_B.weight" + + else: + # Handle other potential key patterns here + new_key = old_key + + # Since we already handle qkv above. + if "qkv" not in old_key: + new_state_dict[new_key] = old_state_dict.pop(old_key) + + if len(old_state_dict) > 0: + raise ValueError(f"`old_state_dict` should be at this point but has: {list(old_state_dict.keys())}.") + + return new_state_dict + + +def _convert_bfl_flux_control_lora_to_diffusers(original_state_dict): + converted_state_dict = {} + original_state_dict_keys = list(original_state_dict.keys()) + num_layers = 19 + num_single_layers = 38 + inner_dim = 3072 + mlp_ratio = 4.0 + + def swap_scale_shift(weight): + shift, scale = weight.chunk(2, dim=0) + new_weight = torch.cat([scale, shift], dim=0) + return new_weight + + for lora_key in ["lora_A", "lora_B"]: + ## time_text_embed.timestep_embedder <- time_in + converted_state_dict[ + f"time_text_embed.timestep_embedder.linear_1.{lora_key}.weight" + ] = original_state_dict.pop(f"time_in.in_layer.{lora_key}.weight") + if f"time_in.in_layer.{lora_key}.bias" in original_state_dict_keys: + converted_state_dict[ + f"time_text_embed.timestep_embedder.linear_1.{lora_key}.bias" + ] = original_state_dict.pop(f"time_in.in_layer.{lora_key}.bias") + + converted_state_dict[ + f"time_text_embed.timestep_embedder.linear_2.{lora_key}.weight" + ] = original_state_dict.pop(f"time_in.out_layer.{lora_key}.weight") + if f"time_in.out_layer.{lora_key}.bias" in original_state_dict_keys: + converted_state_dict[ + f"time_text_embed.timestep_embedder.linear_2.{lora_key}.bias" + ] = original_state_dict.pop(f"time_in.out_layer.{lora_key}.bias") + + ## time_text_embed.text_embedder <- vector_in + converted_state_dict[f"time_text_embed.text_embedder.linear_1.{lora_key}.weight"] = original_state_dict.pop( + f"vector_in.in_layer.{lora_key}.weight" + ) + if f"vector_in.in_layer.{lora_key}.bias" in original_state_dict_keys: + converted_state_dict[f"time_text_embed.text_embedder.linear_1.{lora_key}.bias"] = original_state_dict.pop( + f"vector_in.in_layer.{lora_key}.bias" + ) + + converted_state_dict[f"time_text_embed.text_embedder.linear_2.{lora_key}.weight"] = original_state_dict.pop( + f"vector_in.out_layer.{lora_key}.weight" + ) + if f"vector_in.out_layer.{lora_key}.bias" in original_state_dict_keys: + converted_state_dict[f"time_text_embed.text_embedder.linear_2.{lora_key}.bias"] = original_state_dict.pop( + f"vector_in.out_layer.{lora_key}.bias" + ) + + # guidance + has_guidance = any("guidance" in k for k in original_state_dict) + if has_guidance: + converted_state_dict[ + f"time_text_embed.guidance_embedder.linear_1.{lora_key}.weight" + ] = original_state_dict.pop(f"guidance_in.in_layer.{lora_key}.weight") + if f"guidance_in.in_layer.{lora_key}.bias" in original_state_dict_keys: + converted_state_dict[ + f"time_text_embed.guidance_embedder.linear_1.{lora_key}.bias" + ] = original_state_dict.pop(f"guidance_in.in_layer.{lora_key}.bias") + + converted_state_dict[ + f"time_text_embed.guidance_embedder.linear_2.{lora_key}.weight" + ] = original_state_dict.pop(f"guidance_in.out_layer.{lora_key}.weight") + if f"guidance_in.out_layer.{lora_key}.bias" in original_state_dict_keys: + converted_state_dict[ + f"time_text_embed.guidance_embedder.linear_2.{lora_key}.bias" + ] = original_state_dict.pop(f"guidance_in.out_layer.{lora_key}.bias") + + # context_embedder + converted_state_dict[f"context_embedder.{lora_key}.weight"] = original_state_dict.pop( + f"txt_in.{lora_key}.weight" + ) + if f"txt_in.{lora_key}.bias" in original_state_dict_keys: + converted_state_dict[f"context_embedder.{lora_key}.bias"] = original_state_dict.pop( + f"txt_in.{lora_key}.bias" + ) + + # x_embedder + converted_state_dict[f"x_embedder.{lora_key}.weight"] = original_state_dict.pop(f"img_in.{lora_key}.weight") + if f"img_in.{lora_key}.bias" in original_state_dict_keys: + converted_state_dict[f"x_embedder.{lora_key}.bias"] = original_state_dict.pop(f"img_in.{lora_key}.bias") + + # double transformer blocks + for i in range(num_layers): + block_prefix = f"transformer_blocks.{i}." + + for lora_key in ["lora_A", "lora_B"]: + # norms + converted_state_dict[f"{block_prefix}norm1.linear.{lora_key}.weight"] = original_state_dict.pop( + f"double_blocks.{i}.img_mod.lin.{lora_key}.weight" + ) + if f"double_blocks.{i}.img_mod.lin.{lora_key}.bias" in original_state_dict_keys: + converted_state_dict[f"{block_prefix}norm1.linear.{lora_key}.bias"] = original_state_dict.pop( + f"double_blocks.{i}.img_mod.lin.{lora_key}.bias" + ) + + converted_state_dict[f"{block_prefix}norm1_context.linear.{lora_key}.weight"] = original_state_dict.pop( + f"double_blocks.{i}.txt_mod.lin.{lora_key}.weight" + ) + if f"double_blocks.{i}.txt_mod.lin.{lora_key}.bias" in original_state_dict_keys: + converted_state_dict[f"{block_prefix}norm1_context.linear.{lora_key}.bias"] = original_state_dict.pop( + f"double_blocks.{i}.txt_mod.lin.{lora_key}.bias" + ) + + # Q, K, V + if lora_key == "lora_A": + sample_lora_weight = original_state_dict.pop(f"double_blocks.{i}.img_attn.qkv.{lora_key}.weight") + converted_state_dict[f"{block_prefix}attn.to_v.{lora_key}.weight"] = torch.cat([sample_lora_weight]) + converted_state_dict[f"{block_prefix}attn.to_q.{lora_key}.weight"] = torch.cat([sample_lora_weight]) + converted_state_dict[f"{block_prefix}attn.to_k.{lora_key}.weight"] = torch.cat([sample_lora_weight]) + + context_lora_weight = original_state_dict.pop(f"double_blocks.{i}.txt_attn.qkv.{lora_key}.weight") + converted_state_dict[f"{block_prefix}attn.add_q_proj.{lora_key}.weight"] = torch.cat( + [context_lora_weight] + ) + converted_state_dict[f"{block_prefix}attn.add_k_proj.{lora_key}.weight"] = torch.cat( + [context_lora_weight] + ) + converted_state_dict[f"{block_prefix}attn.add_v_proj.{lora_key}.weight"] = torch.cat( + [context_lora_weight] + ) + else: + sample_q, sample_k, sample_v = torch.chunk( + original_state_dict.pop(f"double_blocks.{i}.img_attn.qkv.{lora_key}.weight"), 3, dim=0 + ) + converted_state_dict[f"{block_prefix}attn.to_q.{lora_key}.weight"] = torch.cat([sample_q]) + converted_state_dict[f"{block_prefix}attn.to_k.{lora_key}.weight"] = torch.cat([sample_k]) + converted_state_dict[f"{block_prefix}attn.to_v.{lora_key}.weight"] = torch.cat([sample_v]) + + context_q, context_k, context_v = torch.chunk( + original_state_dict.pop(f"double_blocks.{i}.txt_attn.qkv.{lora_key}.weight"), 3, dim=0 + ) + converted_state_dict[f"{block_prefix}attn.add_q_proj.{lora_key}.weight"] = torch.cat([context_q]) + converted_state_dict[f"{block_prefix}attn.add_k_proj.{lora_key}.weight"] = torch.cat([context_k]) + converted_state_dict[f"{block_prefix}attn.add_v_proj.{lora_key}.weight"] = torch.cat([context_v]) + + if f"double_blocks.{i}.img_attn.qkv.{lora_key}.bias" in original_state_dict_keys: + sample_q_bias, sample_k_bias, sample_v_bias = torch.chunk( + original_state_dict.pop(f"double_blocks.{i}.img_attn.qkv.{lora_key}.bias"), 3, dim=0 + ) + converted_state_dict[f"{block_prefix}attn.to_q.{lora_key}.bias"] = torch.cat([sample_q_bias]) + converted_state_dict[f"{block_prefix}attn.to_k.{lora_key}.bias"] = torch.cat([sample_k_bias]) + converted_state_dict[f"{block_prefix}attn.to_v.{lora_key}.bias"] = torch.cat([sample_v_bias]) + + if f"double_blocks.{i}.txt_attn.qkv.{lora_key}.bias" in original_state_dict_keys: + context_q_bias, context_k_bias, context_v_bias = torch.chunk( + original_state_dict.pop(f"double_blocks.{i}.txt_attn.qkv.{lora_key}.bias"), 3, dim=0 + ) + converted_state_dict[f"{block_prefix}attn.add_q_proj.{lora_key}.bias"] = torch.cat([context_q_bias]) + converted_state_dict[f"{block_prefix}attn.add_k_proj.{lora_key}.bias"] = torch.cat([context_k_bias]) + converted_state_dict[f"{block_prefix}attn.add_v_proj.{lora_key}.bias"] = torch.cat([context_v_bias]) + + # ff img_mlp + converted_state_dict[f"{block_prefix}ff.net.0.proj.{lora_key}.weight"] = original_state_dict.pop( + f"double_blocks.{i}.img_mlp.0.{lora_key}.weight" + ) + if f"double_blocks.{i}.img_mlp.0.{lora_key}.bias" in original_state_dict_keys: + converted_state_dict[f"{block_prefix}ff.net.0.proj.{lora_key}.bias"] = original_state_dict.pop( + f"double_blocks.{i}.img_mlp.0.{lora_key}.bias" + ) + + converted_state_dict[f"{block_prefix}ff.net.2.{lora_key}.weight"] = original_state_dict.pop( + f"double_blocks.{i}.img_mlp.2.{lora_key}.weight" + ) + if f"double_blocks.{i}.img_mlp.2.{lora_key}.bias" in original_state_dict_keys: + converted_state_dict[f"{block_prefix}ff.net.2.{lora_key}.bias"] = original_state_dict.pop( + f"double_blocks.{i}.img_mlp.2.{lora_key}.bias" + ) + + converted_state_dict[f"{block_prefix}ff_context.net.0.proj.{lora_key}.weight"] = original_state_dict.pop( + f"double_blocks.{i}.txt_mlp.0.{lora_key}.weight" + ) + if f"double_blocks.{i}.txt_mlp.0.{lora_key}.bias" in original_state_dict_keys: + converted_state_dict[f"{block_prefix}ff_context.net.0.proj.{lora_key}.bias"] = original_state_dict.pop( + f"double_blocks.{i}.txt_mlp.0.{lora_key}.bias" + ) + + converted_state_dict[f"{block_prefix}ff_context.net.2.{lora_key}.weight"] = original_state_dict.pop( + f"double_blocks.{i}.txt_mlp.2.{lora_key}.weight" + ) + if f"double_blocks.{i}.txt_mlp.2.{lora_key}.bias" in original_state_dict_keys: + converted_state_dict[f"{block_prefix}ff_context.net.2.{lora_key}.bias"] = original_state_dict.pop( + f"double_blocks.{i}.txt_mlp.2.{lora_key}.bias" + ) + + # output projections. + converted_state_dict[f"{block_prefix}attn.to_out.0.{lora_key}.weight"] = original_state_dict.pop( + f"double_blocks.{i}.img_attn.proj.{lora_key}.weight" + ) + if f"double_blocks.{i}.img_attn.proj.{lora_key}.bias" in original_state_dict_keys: + converted_state_dict[f"{block_prefix}attn.to_out.0.{lora_key}.bias"] = original_state_dict.pop( + f"double_blocks.{i}.img_attn.proj.{lora_key}.bias" + ) + converted_state_dict[f"{block_prefix}attn.to_add_out.{lora_key}.weight"] = original_state_dict.pop( + f"double_blocks.{i}.txt_attn.proj.{lora_key}.weight" + ) + if f"double_blocks.{i}.txt_attn.proj.{lora_key}.bias" in original_state_dict_keys: + converted_state_dict[f"{block_prefix}attn.to_add_out.{lora_key}.bias"] = original_state_dict.pop( + f"double_blocks.{i}.txt_attn.proj.{lora_key}.bias" + ) + + # qk_norm + converted_state_dict[f"{block_prefix}attn.norm_q.weight"] = original_state_dict.pop( + f"double_blocks.{i}.img_attn.norm.query_norm.scale" + ) + converted_state_dict[f"{block_prefix}attn.norm_k.weight"] = original_state_dict.pop( + f"double_blocks.{i}.img_attn.norm.key_norm.scale" + ) + converted_state_dict[f"{block_prefix}attn.norm_added_q.weight"] = original_state_dict.pop( + f"double_blocks.{i}.txt_attn.norm.query_norm.scale" + ) + converted_state_dict[f"{block_prefix}attn.norm_added_k.weight"] = original_state_dict.pop( + f"double_blocks.{i}.txt_attn.norm.key_norm.scale" + ) + + # single transfomer blocks + for i in range(num_single_layers): + block_prefix = f"single_transformer_blocks.{i}." + + for lora_key in ["lora_A", "lora_B"]: + # norm.linear <- single_blocks.0.modulation.lin + converted_state_dict[f"{block_prefix}norm.linear.{lora_key}.weight"] = original_state_dict.pop( + f"single_blocks.{i}.modulation.lin.{lora_key}.weight" + ) + if f"single_blocks.{i}.modulation.lin.{lora_key}.bias" in original_state_dict_keys: + converted_state_dict[f"{block_prefix}norm.linear.{lora_key}.bias"] = original_state_dict.pop( + f"single_blocks.{i}.modulation.lin.{lora_key}.bias" + ) + + # Q, K, V, mlp + mlp_hidden_dim = int(inner_dim * mlp_ratio) + split_size = (inner_dim, inner_dim, inner_dim, mlp_hidden_dim) + + if lora_key == "lora_A": + lora_weight = original_state_dict.pop(f"single_blocks.{i}.linear1.{lora_key}.weight") + converted_state_dict[f"{block_prefix}attn.to_q.{lora_key}.weight"] = torch.cat([lora_weight]) + converted_state_dict[f"{block_prefix}attn.to_k.{lora_key}.weight"] = torch.cat([lora_weight]) + converted_state_dict[f"{block_prefix}attn.to_v.{lora_key}.weight"] = torch.cat([lora_weight]) + converted_state_dict[f"{block_prefix}proj_mlp.{lora_key}.weight"] = torch.cat([lora_weight]) + + if f"single_blocks.{i}.linear1.{lora_key}.bias" in original_state_dict_keys: + lora_bias = original_state_dict.pop(f"single_blocks.{i}.linear1.{lora_key}.bias") + converted_state_dict[f"{block_prefix}attn.to_q.{lora_key}.bias"] = torch.cat([lora_bias]) + converted_state_dict[f"{block_prefix}attn.to_k.{lora_key}.bias"] = torch.cat([lora_bias]) + converted_state_dict[f"{block_prefix}attn.to_v.{lora_key}.bias"] = torch.cat([lora_bias]) + converted_state_dict[f"{block_prefix}proj_mlp.{lora_key}.bias"] = torch.cat([lora_bias]) + else: + q, k, v, mlp = torch.split( + original_state_dict.pop(f"single_blocks.{i}.linear1.{lora_key}.weight"), split_size, dim=0 + ) + converted_state_dict[f"{block_prefix}attn.to_q.{lora_key}.weight"] = torch.cat([q]) + converted_state_dict[f"{block_prefix}attn.to_k.{lora_key}.weight"] = torch.cat([k]) + converted_state_dict[f"{block_prefix}attn.to_v.{lora_key}.weight"] = torch.cat([v]) + converted_state_dict[f"{block_prefix}proj_mlp.{lora_key}.weight"] = torch.cat([mlp]) + + if f"single_blocks.{i}.linear1.{lora_key}.bias" in original_state_dict_keys: + q_bias, k_bias, v_bias, mlp_bias = torch.split( + original_state_dict.pop(f"single_blocks.{i}.linear1.{lora_key}.bias"), split_size, dim=0 + ) + converted_state_dict[f"{block_prefix}attn.to_q.{lora_key}.bias"] = torch.cat([q_bias]) + converted_state_dict[f"{block_prefix}attn.to_k.{lora_key}.bias"] = torch.cat([k_bias]) + converted_state_dict[f"{block_prefix}attn.to_v.{lora_key}.bias"] = torch.cat([v_bias]) + converted_state_dict[f"{block_prefix}proj_mlp.{lora_key}.bias"] = torch.cat([mlp_bias]) + + # output projections. + converted_state_dict[f"{block_prefix}proj_out.{lora_key}.weight"] = original_state_dict.pop( + f"single_blocks.{i}.linear2.{lora_key}.weight" + ) + if f"single_blocks.{i}.linear2.{lora_key}.bias" in original_state_dict_keys: + converted_state_dict[f"{block_prefix}proj_out.{lora_key}.bias"] = original_state_dict.pop( + f"single_blocks.{i}.linear2.{lora_key}.bias" + ) + + # qk norm + converted_state_dict[f"{block_prefix}attn.norm_q.weight"] = original_state_dict.pop( + f"single_blocks.{i}.norm.query_norm.scale" + ) + converted_state_dict[f"{block_prefix}attn.norm_k.weight"] = original_state_dict.pop( + f"single_blocks.{i}.norm.key_norm.scale" + ) + + for lora_key in ["lora_A", "lora_B"]: + converted_state_dict[f"proj_out.{lora_key}.weight"] = original_state_dict.pop( + f"final_layer.linear.{lora_key}.weight" + ) + if f"final_layer.linear.{lora_key}.bias" in original_state_dict_keys: + converted_state_dict[f"proj_out.{lora_key}.bias"] = original_state_dict.pop( + f"final_layer.linear.{lora_key}.bias" + ) + + converted_state_dict[f"norm_out.linear.{lora_key}.weight"] = swap_scale_shift( + original_state_dict.pop(f"final_layer.adaLN_modulation.1.{lora_key}.weight") + ) + if f"final_layer.adaLN_modulation.1.{lora_key}.bias" in original_state_dict_keys: + converted_state_dict[f"norm_out.linear.{lora_key}.bias"] = swap_scale_shift( + original_state_dict.pop(f"final_layer.adaLN_modulation.1.{lora_key}.bias") + ) + + if len(original_state_dict) > 0: + raise ValueError(f"`original_state_dict` should be empty at this point but has {original_state_dict.keys()=}.") + + for key in list(converted_state_dict.keys()): + converted_state_dict[f"transformer.{key}"] = converted_state_dict.pop(key) + + return converted_state_dict diff --git a/venv/lib/python3.11/site-packages/diffusers/loaders/lora_pipeline.py b/venv/lib/python3.11/site-packages/diffusers/loaders/lora_pipeline.py new file mode 100644 index 0000000000000000000000000000000000000000..e69681611a4aaca5a723557b8373352be03139cf --- /dev/null +++ b/venv/lib/python3.11/site-packages/diffusers/loaders/lora_pipeline.py @@ -0,0 +1,4238 @@ +# Copyright 2024 The HuggingFace Team. All rights reserved. +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. + +import os +from typing import Callable, Dict, List, Optional, Union + +import torch +from huggingface_hub.utils import validate_hf_hub_args + +from ..utils import ( + USE_PEFT_BACKEND, + convert_state_dict_to_diffusers, + convert_state_dict_to_peft, + deprecate, + get_adapter_name, + get_peft_kwargs, + is_peft_available, + is_peft_version, + is_torch_version, + is_transformers_available, + is_transformers_version, + logging, + scale_lora_layers, +) +from .lora_base import LORA_WEIGHT_NAME, LORA_WEIGHT_NAME_SAFE, LoraBaseMixin, _fetch_state_dict # noqa +from .lora_conversion_utils import ( + _convert_bfl_flux_control_lora_to_diffusers, + _convert_kohya_flux_lora_to_diffusers, + _convert_non_diffusers_lora_to_diffusers, + _convert_xlabs_flux_lora_to_diffusers, + _maybe_map_sgm_blocks_to_diffusers, +) + + +_LOW_CPU_MEM_USAGE_DEFAULT_LORA = False +if is_torch_version(">=", "1.9.0"): + if ( + is_peft_available() + and is_peft_version(">=", "0.13.1") + and is_transformers_available() + and is_transformers_version(">", "4.45.2") + ): + _LOW_CPU_MEM_USAGE_DEFAULT_LORA = True + + +if is_transformers_available(): + from ..models.lora import text_encoder_attn_modules, text_encoder_mlp_modules + +logger = logging.get_logger(__name__) + +TEXT_ENCODER_NAME = "text_encoder" +UNET_NAME = "unet" +TRANSFORMER_NAME = "transformer" + +_MODULE_NAME_TO_ATTRIBUTE_MAP_FLUX = {"x_embedder": "in_channels"} + + +class StableDiffusionLoraLoaderMixin(LoraBaseMixin): + r""" + Load LoRA layers into Stable Diffusion [`UNet2DConditionModel`] and + [`CLIPTextModel`](https://huggingface.co/docs/transformers/model_doc/clip#transformers.CLIPTextModel). + """ + + _lora_loadable_modules = ["unet", "text_encoder"] + unet_name = UNET_NAME + text_encoder_name = TEXT_ENCODER_NAME + + def load_lora_weights( + self, pretrained_model_name_or_path_or_dict: Union[str, Dict[str, torch.Tensor]], adapter_name=None, **kwargs + ): + """ + Load LoRA weights specified in `pretrained_model_name_or_path_or_dict` into `self.unet` and + `self.text_encoder`. + + All kwargs are forwarded to `self.lora_state_dict`. + + See [`~loaders.StableDiffusionLoraLoaderMixin.lora_state_dict`] for more details on how the state dict is + loaded. + + See [`~loaders.StableDiffusionLoraLoaderMixin.load_lora_into_unet`] for more details on how the state dict is + loaded into `self.unet`. + + See [`~loaders.StableDiffusionLoraLoaderMixin.load_lora_into_text_encoder`] for more details on how the state + dict is loaded into `self.text_encoder`. + + Parameters: + pretrained_model_name_or_path_or_dict (`str` or `os.PathLike` or `dict`): + See [`~loaders.StableDiffusionLoraLoaderMixin.lora_state_dict`]. + adapter_name (`str`, *optional*): + Adapter name to be used for referencing the loaded adapter model. If not specified, it will use + `default_{i}` where i is the total number of adapters being loaded. + low_cpu_mem_usage (`bool`, *optional*): + Speed up model loading by only loading the pretrained LoRA weights and not initializing the random + weights. + kwargs (`dict`, *optional*): + See [`~loaders.StableDiffusionLoraLoaderMixin.lora_state_dict`]. + """ + if not USE_PEFT_BACKEND: + raise ValueError("PEFT backend is required for this method.") + + low_cpu_mem_usage = kwargs.pop("low_cpu_mem_usage", _LOW_CPU_MEM_USAGE_DEFAULT_LORA) + if low_cpu_mem_usage and not is_peft_version(">=", "0.13.1"): + raise ValueError( + "`low_cpu_mem_usage=True` is not compatible with this `peft` version. Please update it with `pip install -U peft`." + ) + + # if a dict is passed, copy it instead of modifying it inplace + if isinstance(pretrained_model_name_or_path_or_dict, dict): + pretrained_model_name_or_path_or_dict = pretrained_model_name_or_path_or_dict.copy() + + # First, ensure that the checkpoint is a compatible one and can be successfully loaded. + state_dict, network_alphas = self.lora_state_dict(pretrained_model_name_or_path_or_dict, **kwargs) + + is_correct_format = all("lora" in key for key in state_dict.keys()) + if not is_correct_format: + raise ValueError("Invalid LoRA checkpoint.") + + self.load_lora_into_unet( + state_dict, + network_alphas=network_alphas, + unet=getattr(self, self.unet_name) if not hasattr(self, "unet") else self.unet, + adapter_name=adapter_name, + _pipeline=self, + low_cpu_mem_usage=low_cpu_mem_usage, + ) + self.load_lora_into_text_encoder( + state_dict, + network_alphas=network_alphas, + text_encoder=getattr(self, self.text_encoder_name) + if not hasattr(self, "text_encoder") + else self.text_encoder, + lora_scale=self.lora_scale, + adapter_name=adapter_name, + _pipeline=self, + low_cpu_mem_usage=low_cpu_mem_usage, + ) + + @classmethod + @validate_hf_hub_args + def lora_state_dict( + cls, + pretrained_model_name_or_path_or_dict: Union[str, Dict[str, torch.Tensor]], + **kwargs, + ): + r""" + Return state dict for lora weights and the network alphas. + + + + We support loading A1111 formatted LoRA checkpoints in a limited capacity. + + This function is experimental and might change in the future. + + + + Parameters: + pretrained_model_name_or_path_or_dict (`str` or `os.PathLike` or `dict`): + Can be either: + + - A string, the *model id* (for example `google/ddpm-celebahq-256`) of a pretrained model hosted on + the Hub. + - A path to a *directory* (for example `./my_model_directory`) containing the model weights saved + with [`ModelMixin.save_pretrained`]. + - A [torch state + dict](https://pytorch.org/tutorials/beginner/saving_loading_models.html#what-is-a-state-dict). + + cache_dir (`Union[str, os.PathLike]`, *optional*): + Path to a directory where a downloaded pretrained model configuration is cached if the standard cache + is not used. + force_download (`bool`, *optional*, defaults to `False`): + Whether or not to force the (re-)download of the model weights and configuration files, overriding the + cached versions if they exist. + + proxies (`Dict[str, str]`, *optional*): + A dictionary of proxy servers to use by protocol or endpoint, for example, `{'http': 'foo.bar:3128', + 'http://hostname': 'foo.bar:4012'}`. The proxies are used on each request. + local_files_only (`bool`, *optional*, defaults to `False`): + Whether to only load local model weights and configuration files or not. If set to `True`, the model + won't be downloaded from the Hub. + token (`str` or *bool*, *optional*): + The token to use as HTTP bearer authorization for remote files. If `True`, the token generated from + `diffusers-cli login` (stored in `~/.huggingface`) is used. + revision (`str`, *optional*, defaults to `"main"`): + The specific model version to use. It can be a branch name, a tag name, a commit id, or any identifier + allowed by Git. + subfolder (`str`, *optional*, defaults to `""`): + The subfolder location of a model file within a larger model repository on the Hub or locally. + weight_name (`str`, *optional*, defaults to None): + Name of the serialized state dict file. + """ + # Load the main state dict first which has the LoRA layers for either of + # UNet and text encoder or both. + cache_dir = kwargs.pop("cache_dir", None) + force_download = kwargs.pop("force_download", False) + proxies = kwargs.pop("proxies", None) + local_files_only = kwargs.pop("local_files_only", None) + token = kwargs.pop("token", None) + revision = kwargs.pop("revision", None) + subfolder = kwargs.pop("subfolder", None) + weight_name = kwargs.pop("weight_name", None) + unet_config = kwargs.pop("unet_config", None) + use_safetensors = kwargs.pop("use_safetensors", None) + + allow_pickle = False + if use_safetensors is None: + use_safetensors = True + allow_pickle = True + + user_agent = { + "file_type": "attn_procs_weights", + "framework": "pytorch", + } + + state_dict = _fetch_state_dict( + pretrained_model_name_or_path_or_dict=pretrained_model_name_or_path_or_dict, + weight_name=weight_name, + use_safetensors=use_safetensors, + local_files_only=local_files_only, + cache_dir=cache_dir, + force_download=force_download, + proxies=proxies, + token=token, + revision=revision, + subfolder=subfolder, + user_agent=user_agent, + allow_pickle=allow_pickle, + ) + is_dora_scale_present = any("dora_scale" in k for k in state_dict) + if is_dora_scale_present: + warn_msg = "It seems like you are using a DoRA checkpoint that is not compatible in Diffusers at the moment. So, we are going to filter out the keys associated to 'dora_scale` from the state dict. If you think this is a mistake please open an issue https://github.com/huggingface/diffusers/issues/new." + logger.warning(warn_msg) + state_dict = {k: v for k, v in state_dict.items() if "dora_scale" not in k} + + network_alphas = None + # TODO: replace it with a method from `state_dict_utils` + if all( + ( + k.startswith("lora_te_") + or k.startswith("lora_unet_") + or k.startswith("lora_te1_") + or k.startswith("lora_te2_") + ) + for k in state_dict.keys() + ): + # Map SDXL blocks correctly. + if unet_config is not None: + # use unet config to remap block numbers + state_dict = _maybe_map_sgm_blocks_to_diffusers(state_dict, unet_config) + state_dict, network_alphas = _convert_non_diffusers_lora_to_diffusers(state_dict) + + return state_dict, network_alphas + + @classmethod + def load_lora_into_unet( + cls, state_dict, network_alphas, unet, adapter_name=None, _pipeline=None, low_cpu_mem_usage=False + ): + """ + This will load the LoRA layers specified in `state_dict` into `unet`. + + Parameters: + state_dict (`dict`): + A standard state dict containing the lora layer parameters. The keys can either be indexed directly + into the unet or prefixed with an additional `unet` which can be used to distinguish between text + encoder lora layers. + network_alphas (`Dict[str, float]`): + The value of the network alpha used for stable learning and preventing underflow. This value has the + same meaning as the `--network_alpha` option in the kohya-ss trainer script. Refer to [this + link](https://github.com/darkstorm2150/sd-scripts/blob/main/docs/train_network_README-en.md#execute-learning). + unet (`UNet2DConditionModel`): + The UNet model to load the LoRA layers into. + adapter_name (`str`, *optional*): + Adapter name to be used for referencing the loaded adapter model. If not specified, it will use + `default_{i}` where i is the total number of adapters being loaded. + low_cpu_mem_usage (`bool`, *optional*): + Speed up model loading only loading the pretrained LoRA weights and not initializing the random + weights. + """ + if not USE_PEFT_BACKEND: + raise ValueError("PEFT backend is required for this method.") + + if low_cpu_mem_usage and not is_peft_version(">=", "0.13.1"): + raise ValueError( + "`low_cpu_mem_usage=True` is not compatible with this `peft` version. Please update it with `pip install -U peft`." + ) + + # If the serialization format is new (introduced in https://github.com/huggingface/diffusers/pull/2918), + # then the `state_dict` keys should have `cls.unet_name` and/or `cls.text_encoder_name` as + # their prefixes. + keys = list(state_dict.keys()) + only_text_encoder = all(key.startswith(cls.text_encoder_name) for key in keys) + if not only_text_encoder: + # Load the layers corresponding to UNet. + logger.info(f"Loading {cls.unet_name}.") + unet.load_lora_adapter( + state_dict, + prefix=cls.unet_name, + network_alphas=network_alphas, + adapter_name=adapter_name, + _pipeline=_pipeline, + low_cpu_mem_usage=low_cpu_mem_usage, + ) + + @classmethod + def load_lora_into_text_encoder( + cls, + state_dict, + network_alphas, + text_encoder, + prefix=None, + lora_scale=1.0, + adapter_name=None, + _pipeline=None, + low_cpu_mem_usage=False, + ): + """ + This will load the LoRA layers specified in `state_dict` into `text_encoder` + + Parameters: + state_dict (`dict`): + A standard state dict containing the lora layer parameters. The key should be prefixed with an + additional `text_encoder` to distinguish between unet lora layers. + network_alphas (`Dict[str, float]`): + The value of the network alpha used for stable learning and preventing underflow. This value has the + same meaning as the `--network_alpha` option in the kohya-ss trainer script. Refer to [this + link](https://github.com/darkstorm2150/sd-scripts/blob/main/docs/train_network_README-en.md#execute-learning). + text_encoder (`CLIPTextModel`): + The text encoder model to load the LoRA layers into. + prefix (`str`): + Expected prefix of the `text_encoder` in the `state_dict`. + lora_scale (`float`): + How much to scale the output of the lora linear layer before it is added with the output of the regular + lora layer. + adapter_name (`str`, *optional*): + Adapter name to be used for referencing the loaded adapter model. If not specified, it will use + `default_{i}` where i is the total number of adapters being loaded. + low_cpu_mem_usage (`bool`, *optional*): + Speed up model loading by only loading the pretrained LoRA weights and not initializing the random + weights. + """ + if not USE_PEFT_BACKEND: + raise ValueError("PEFT backend is required for this method.") + + peft_kwargs = {} + if low_cpu_mem_usage: + if not is_peft_version(">=", "0.13.1"): + raise ValueError( + "`low_cpu_mem_usage=True` is not compatible with this `peft` version. Please update it with `pip install -U peft`." + ) + if not is_transformers_version(">", "4.45.2"): + # Note from sayakpaul: It's not in `transformers` stable yet. + # https://github.com/huggingface/transformers/pull/33725/ + raise ValueError( + "`low_cpu_mem_usage=True` is not compatible with this `transformers` version. Please update it with `pip install -U transformers`." + ) + peft_kwargs["low_cpu_mem_usage"] = low_cpu_mem_usage + + from peft import LoraConfig + + # If the serialization format is new (introduced in https://github.com/huggingface/diffusers/pull/2918), + # then the `state_dict` keys should have `self.unet_name` and/or `self.text_encoder_name` as + # their prefixes. + keys = list(state_dict.keys()) + prefix = cls.text_encoder_name if prefix is None else prefix + + # Safe prefix to check with. + if any(cls.text_encoder_name in key for key in keys): + # Load the layers corresponding to text encoder and make necessary adjustments. + text_encoder_keys = [k for k in keys if k.startswith(prefix) and k.split(".")[0] == prefix] + text_encoder_lora_state_dict = { + k.replace(f"{prefix}.", ""): v for k, v in state_dict.items() if k in text_encoder_keys + } + + if len(text_encoder_lora_state_dict) > 0: + logger.info(f"Loading {prefix}.") + rank = {} + text_encoder_lora_state_dict = convert_state_dict_to_diffusers(text_encoder_lora_state_dict) + + # convert state dict + text_encoder_lora_state_dict = convert_state_dict_to_peft(text_encoder_lora_state_dict) + + for name, _ in text_encoder_attn_modules(text_encoder): + for module in ("out_proj", "q_proj", "k_proj", "v_proj"): + rank_key = f"{name}.{module}.lora_B.weight" + if rank_key not in text_encoder_lora_state_dict: + continue + rank[rank_key] = text_encoder_lora_state_dict[rank_key].shape[1] + + for name, _ in text_encoder_mlp_modules(text_encoder): + for module in ("fc1", "fc2"): + rank_key = f"{name}.{module}.lora_B.weight" + if rank_key not in text_encoder_lora_state_dict: + continue + rank[rank_key] = text_encoder_lora_state_dict[rank_key].shape[1] + + if network_alphas is not None: + alpha_keys = [ + k for k in network_alphas.keys() if k.startswith(prefix) and k.split(".")[0] == prefix + ] + network_alphas = { + k.replace(f"{prefix}.", ""): v for k, v in network_alphas.items() if k in alpha_keys + } + + lora_config_kwargs = get_peft_kwargs(rank, network_alphas, text_encoder_lora_state_dict, is_unet=False) + + if "use_dora" in lora_config_kwargs: + if lora_config_kwargs["use_dora"]: + if is_peft_version("<", "0.9.0"): + raise ValueError( + "You need `peft` 0.9.0 at least to use DoRA-enabled LoRAs. Please upgrade your installation of `peft`." + ) + else: + if is_peft_version("<", "0.9.0"): + lora_config_kwargs.pop("use_dora") + + if "lora_bias" in lora_config_kwargs: + if lora_config_kwargs["lora_bias"]: + if is_peft_version("<=", "0.13.2"): + raise ValueError( + "You need `peft` 0.14.0 at least to use `bias` in LoRAs. Please upgrade your installation of `peft`." + ) + else: + if is_peft_version("<=", "0.13.2"): + lora_config_kwargs.pop("lora_bias") + + lora_config = LoraConfig(**lora_config_kwargs) + + # adapter_name + if adapter_name is None: + adapter_name = get_adapter_name(text_encoder) + + is_model_cpu_offload, is_sequential_cpu_offload = cls._optionally_disable_offloading(_pipeline) + + # inject LoRA layers and load the state dict + # in transformers we automatically check whether the adapter name is already in use or not + text_encoder.load_adapter( + adapter_name=adapter_name, + adapter_state_dict=text_encoder_lora_state_dict, + peft_config=lora_config, + **peft_kwargs, + ) + + # scale LoRA layers with `lora_scale` + scale_lora_layers(text_encoder, weight=lora_scale) + + text_encoder.to(device=text_encoder.device, dtype=text_encoder.dtype) + + # Offload back. + if is_model_cpu_offload: + _pipeline.enable_model_cpu_offload() + elif is_sequential_cpu_offload: + _pipeline.enable_sequential_cpu_offload() + # Unsafe code /> + + @classmethod + def save_lora_weights( + cls, + save_directory: Union[str, os.PathLike], + unet_lora_layers: Dict[str, Union[torch.nn.Module, torch.Tensor]] = None, + text_encoder_lora_layers: Dict[str, torch.nn.Module] = None, + is_main_process: bool = True, + weight_name: str = None, + save_function: Callable = None, + safe_serialization: bool = True, + ): + r""" + Save the LoRA parameters corresponding to the UNet and text encoder. + + Arguments: + save_directory (`str` or `os.PathLike`): + Directory to save LoRA parameters to. Will be created if it doesn't exist. + unet_lora_layers (`Dict[str, torch.nn.Module]` or `Dict[str, torch.Tensor]`): + State dict of the LoRA layers corresponding to the `unet`. + text_encoder_lora_layers (`Dict[str, torch.nn.Module]` or `Dict[str, torch.Tensor]`): + State dict of the LoRA layers corresponding to the `text_encoder`. Must explicitly pass the text + encoder LoRA state dict because it comes from 🤗 Transformers. + is_main_process (`bool`, *optional*, defaults to `True`): + Whether the process calling this is the main process or not. Useful during distributed training and you + need to call this function on all processes. In this case, set `is_main_process=True` only on the main + process to avoid race conditions. + save_function (`Callable`): + The function to use to save the state dictionary. Useful during distributed training when you need to + replace `torch.save` with another method. Can be configured with the environment variable + `DIFFUSERS_SAVE_MODE`. + safe_serialization (`bool`, *optional*, defaults to `True`): + Whether to save the model using `safetensors` or the traditional PyTorch way with `pickle`. + """ + state_dict = {} + + if not (unet_lora_layers or text_encoder_lora_layers): + raise ValueError("You must pass at least one of `unet_lora_layers` and `text_encoder_lora_layers`.") + + if unet_lora_layers: + state_dict.update(cls.pack_weights(unet_lora_layers, cls.unet_name)) + + if text_encoder_lora_layers: + state_dict.update(cls.pack_weights(text_encoder_lora_layers, cls.text_encoder_name)) + + # Save the model + cls.write_lora_layers( + state_dict=state_dict, + save_directory=save_directory, + is_main_process=is_main_process, + weight_name=weight_name, + save_function=save_function, + safe_serialization=safe_serialization, + ) + + def fuse_lora( + self, + components: List[str] = ["unet", "text_encoder"], + lora_scale: float = 1.0, + safe_fusing: bool = False, + adapter_names: Optional[List[str]] = None, + **kwargs, + ): + r""" + Fuses the LoRA parameters into the original parameters of the corresponding blocks. + + + + This is an experimental API. + + + + Args: + components: (`List[str]`): List of LoRA-injectable components to fuse the LoRAs into. + lora_scale (`float`, defaults to 1.0): + Controls how much to influence the outputs with the LoRA parameters. + safe_fusing (`bool`, defaults to `False`): + Whether to check fused weights for NaN values before fusing and if values are NaN not fusing them. + adapter_names (`List[str]`, *optional*): + Adapter names to be used for fusing. If nothing is passed, all active adapters will be fused. + + Example: + + ```py + from diffusers import DiffusionPipeline + import torch + + pipeline = DiffusionPipeline.from_pretrained( + "stabilityai/stable-diffusion-xl-base-1.0", torch_dtype=torch.float16 + ).to("cuda") + pipeline.load_lora_weights("nerijs/pixel-art-xl", weight_name="pixel-art-xl.safetensors", adapter_name="pixel") + pipeline.fuse_lora(lora_scale=0.7) + ``` + """ + super().fuse_lora( + components=components, lora_scale=lora_scale, safe_fusing=safe_fusing, adapter_names=adapter_names + ) + + def unfuse_lora(self, components: List[str] = ["unet", "text_encoder"], **kwargs): + r""" + Reverses the effect of + [`pipe.fuse_lora()`](https://huggingface.co/docs/diffusers/main/en/api/loaders#diffusers.loaders.LoraBaseMixin.fuse_lora). + + + + This is an experimental API. + + + + Args: + components (`List[str]`): List of LoRA-injectable components to unfuse LoRA from. + unfuse_unet (`bool`, defaults to `True`): Whether to unfuse the UNet LoRA parameters. + unfuse_text_encoder (`bool`, defaults to `True`): + Whether to unfuse the text encoder LoRA parameters. If the text encoder wasn't monkey-patched with the + LoRA parameters then it won't have any effect. + """ + super().unfuse_lora(components=components) + + +class StableDiffusionXLLoraLoaderMixin(LoraBaseMixin): + r""" + Load LoRA layers into Stable Diffusion XL [`UNet2DConditionModel`], + [`CLIPTextModel`](https://huggingface.co/docs/transformers/model_doc/clip#transformers.CLIPTextModel), and + [`CLIPTextModelWithProjection`](https://huggingface.co/docs/transformers/model_doc/clip#transformers.CLIPTextModelWithProjection). + """ + + _lora_loadable_modules = ["unet", "text_encoder", "text_encoder_2"] + unet_name = UNET_NAME + text_encoder_name = TEXT_ENCODER_NAME + + def load_lora_weights( + self, + pretrained_model_name_or_path_or_dict: Union[str, Dict[str, torch.Tensor]], + adapter_name: Optional[str] = None, + **kwargs, + ): + """ + Load LoRA weights specified in `pretrained_model_name_or_path_or_dict` into `self.unet` and + `self.text_encoder`. + + All kwargs are forwarded to `self.lora_state_dict`. + + See [`~loaders.StableDiffusionLoraLoaderMixin.lora_state_dict`] for more details on how the state dict is + loaded. + + See [`~loaders.StableDiffusionLoraLoaderMixin.load_lora_into_unet`] for more details on how the state dict is + loaded into `self.unet`. + + See [`~loaders.StableDiffusionLoraLoaderMixin.load_lora_into_text_encoder`] for more details on how the state + dict is loaded into `self.text_encoder`. + + Parameters: + pretrained_model_name_or_path_or_dict (`str` or `os.PathLike` or `dict`): + See [`~loaders.StableDiffusionLoraLoaderMixin.lora_state_dict`]. + adapter_name (`str`, *optional*): + Adapter name to be used for referencing the loaded adapter model. If not specified, it will use + `default_{i}` where i is the total number of adapters being loaded. + low_cpu_mem_usage (`bool`, *optional*): + Speed up model loading by only loading the pretrained LoRA weights and not initializing the random + weights. + kwargs (`dict`, *optional*): + See [`~loaders.StableDiffusionLoraLoaderMixin.lora_state_dict`]. + """ + if not USE_PEFT_BACKEND: + raise ValueError("PEFT backend is required for this method.") + + low_cpu_mem_usage = kwargs.pop("low_cpu_mem_usage", _LOW_CPU_MEM_USAGE_DEFAULT_LORA) + if low_cpu_mem_usage and not is_peft_version(">=", "0.13.1"): + raise ValueError( + "`low_cpu_mem_usage=True` is not compatible with this `peft` version. Please update it with `pip install -U peft`." + ) + + # We could have accessed the unet config from `lora_state_dict()` too. We pass + # it here explicitly to be able to tell that it's coming from an SDXL + # pipeline. + + # if a dict is passed, copy it instead of modifying it inplace + if isinstance(pretrained_model_name_or_path_or_dict, dict): + pretrained_model_name_or_path_or_dict = pretrained_model_name_or_path_or_dict.copy() + + # First, ensure that the checkpoint is a compatible one and can be successfully loaded. + state_dict, network_alphas = self.lora_state_dict( + pretrained_model_name_or_path_or_dict, + unet_config=self.unet.config, + **kwargs, + ) + + is_correct_format = all("lora" in key for key in state_dict.keys()) + if not is_correct_format: + raise ValueError("Invalid LoRA checkpoint.") + + self.load_lora_into_unet( + state_dict, + network_alphas=network_alphas, + unet=self.unet, + adapter_name=adapter_name, + _pipeline=self, + low_cpu_mem_usage=low_cpu_mem_usage, + ) + text_encoder_state_dict = {k: v for k, v in state_dict.items() if "text_encoder." in k} + if len(text_encoder_state_dict) > 0: + self.load_lora_into_text_encoder( + text_encoder_state_dict, + network_alphas=network_alphas, + text_encoder=self.text_encoder, + prefix="text_encoder", + lora_scale=self.lora_scale, + adapter_name=adapter_name, + _pipeline=self, + low_cpu_mem_usage=low_cpu_mem_usage, + ) + + text_encoder_2_state_dict = {k: v for k, v in state_dict.items() if "text_encoder_2." in k} + if len(text_encoder_2_state_dict) > 0: + self.load_lora_into_text_encoder( + text_encoder_2_state_dict, + network_alphas=network_alphas, + text_encoder=self.text_encoder_2, + prefix="text_encoder_2", + lora_scale=self.lora_scale, + adapter_name=adapter_name, + _pipeline=self, + low_cpu_mem_usage=low_cpu_mem_usage, + ) + + @classmethod + @validate_hf_hub_args + # Copied from diffusers.loaders.lora_pipeline.StableDiffusionLoraLoaderMixin.lora_state_dict + def lora_state_dict( + cls, + pretrained_model_name_or_path_or_dict: Union[str, Dict[str, torch.Tensor]], + **kwargs, + ): + r""" + Return state dict for lora weights and the network alphas. + + + + We support loading A1111 formatted LoRA checkpoints in a limited capacity. + + This function is experimental and might change in the future. + + + + Parameters: + pretrained_model_name_or_path_or_dict (`str` or `os.PathLike` or `dict`): + Can be either: + + - A string, the *model id* (for example `google/ddpm-celebahq-256`) of a pretrained model hosted on + the Hub. + - A path to a *directory* (for example `./my_model_directory`) containing the model weights saved + with [`ModelMixin.save_pretrained`]. + - A [torch state + dict](https://pytorch.org/tutorials/beginner/saving_loading_models.html#what-is-a-state-dict). + + cache_dir (`Union[str, os.PathLike]`, *optional*): + Path to a directory where a downloaded pretrained model configuration is cached if the standard cache + is not used. + force_download (`bool`, *optional*, defaults to `False`): + Whether or not to force the (re-)download of the model weights and configuration files, overriding the + cached versions if they exist. + + proxies (`Dict[str, str]`, *optional*): + A dictionary of proxy servers to use by protocol or endpoint, for example, `{'http': 'foo.bar:3128', + 'http://hostname': 'foo.bar:4012'}`. The proxies are used on each request. + local_files_only (`bool`, *optional*, defaults to `False`): + Whether to only load local model weights and configuration files or not. If set to `True`, the model + won't be downloaded from the Hub. + token (`str` or *bool*, *optional*): + The token to use as HTTP bearer authorization for remote files. If `True`, the token generated from + `diffusers-cli login` (stored in `~/.huggingface`) is used. + revision (`str`, *optional*, defaults to `"main"`): + The specific model version to use. It can be a branch name, a tag name, a commit id, or any identifier + allowed by Git. + subfolder (`str`, *optional*, defaults to `""`): + The subfolder location of a model file within a larger model repository on the Hub or locally. + weight_name (`str`, *optional*, defaults to None): + Name of the serialized state dict file. + """ + # Load the main state dict first which has the LoRA layers for either of + # UNet and text encoder or both. + cache_dir = kwargs.pop("cache_dir", None) + force_download = kwargs.pop("force_download", False) + proxies = kwargs.pop("proxies", None) + local_files_only = kwargs.pop("local_files_only", None) + token = kwargs.pop("token", None) + revision = kwargs.pop("revision", None) + subfolder = kwargs.pop("subfolder", None) + weight_name = kwargs.pop("weight_name", None) + unet_config = kwargs.pop("unet_config", None) + use_safetensors = kwargs.pop("use_safetensors", None) + + allow_pickle = False + if use_safetensors is None: + use_safetensors = True + allow_pickle = True + + user_agent = { + "file_type": "attn_procs_weights", + "framework": "pytorch", + } + + state_dict = _fetch_state_dict( + pretrained_model_name_or_path_or_dict=pretrained_model_name_or_path_or_dict, + weight_name=weight_name, + use_safetensors=use_safetensors, + local_files_only=local_files_only, + cache_dir=cache_dir, + force_download=force_download, + proxies=proxies, + token=token, + revision=revision, + subfolder=subfolder, + user_agent=user_agent, + allow_pickle=allow_pickle, + ) + is_dora_scale_present = any("dora_scale" in k for k in state_dict) + if is_dora_scale_present: + warn_msg = "It seems like you are using a DoRA checkpoint that is not compatible in Diffusers at the moment. So, we are going to filter out the keys associated to 'dora_scale` from the state dict. If you think this is a mistake please open an issue https://github.com/huggingface/diffusers/issues/new." + logger.warning(warn_msg) + state_dict = {k: v for k, v in state_dict.items() if "dora_scale" not in k} + + network_alphas = None + # TODO: replace it with a method from `state_dict_utils` + if all( + ( + k.startswith("lora_te_") + or k.startswith("lora_unet_") + or k.startswith("lora_te1_") + or k.startswith("lora_te2_") + ) + for k in state_dict.keys() + ): + # Map SDXL blocks correctly. + if unet_config is not None: + # use unet config to remap block numbers + state_dict = _maybe_map_sgm_blocks_to_diffusers(state_dict, unet_config) + state_dict, network_alphas = _convert_non_diffusers_lora_to_diffusers(state_dict) + + return state_dict, network_alphas + + @classmethod + # Copied from diffusers.loaders.lora_pipeline.StableDiffusionLoraLoaderMixin.load_lora_into_unet + def load_lora_into_unet( + cls, state_dict, network_alphas, unet, adapter_name=None, _pipeline=None, low_cpu_mem_usage=False + ): + """ + This will load the LoRA layers specified in `state_dict` into `unet`. + + Parameters: + state_dict (`dict`): + A standard state dict containing the lora layer parameters. The keys can either be indexed directly + into the unet or prefixed with an additional `unet` which can be used to distinguish between text + encoder lora layers. + network_alphas (`Dict[str, float]`): + The value of the network alpha used for stable learning and preventing underflow. This value has the + same meaning as the `--network_alpha` option in the kohya-ss trainer script. Refer to [this + link](https://github.com/darkstorm2150/sd-scripts/blob/main/docs/train_network_README-en.md#execute-learning). + unet (`UNet2DConditionModel`): + The UNet model to load the LoRA layers into. + adapter_name (`str`, *optional*): + Adapter name to be used for referencing the loaded adapter model. If not specified, it will use + `default_{i}` where i is the total number of adapters being loaded. + low_cpu_mem_usage (`bool`, *optional*): + Speed up model loading only loading the pretrained LoRA weights and not initializing the random + weights. + """ + if not USE_PEFT_BACKEND: + raise ValueError("PEFT backend is required for this method.") + + if low_cpu_mem_usage and not is_peft_version(">=", "0.13.1"): + raise ValueError( + "`low_cpu_mem_usage=True` is not compatible with this `peft` version. Please update it with `pip install -U peft`." + ) + + # If the serialization format is new (introduced in https://github.com/huggingface/diffusers/pull/2918), + # then the `state_dict` keys should have `cls.unet_name` and/or `cls.text_encoder_name` as + # their prefixes. + keys = list(state_dict.keys()) + only_text_encoder = all(key.startswith(cls.text_encoder_name) for key in keys) + if not only_text_encoder: + # Load the layers corresponding to UNet. + logger.info(f"Loading {cls.unet_name}.") + unet.load_lora_adapter( + state_dict, + prefix=cls.unet_name, + network_alphas=network_alphas, + adapter_name=adapter_name, + _pipeline=_pipeline, + low_cpu_mem_usage=low_cpu_mem_usage, + ) + + @classmethod + # Copied from diffusers.loaders.lora_pipeline.StableDiffusionLoraLoaderMixin.load_lora_into_text_encoder + def load_lora_into_text_encoder( + cls, + state_dict, + network_alphas, + text_encoder, + prefix=None, + lora_scale=1.0, + adapter_name=None, + _pipeline=None, + low_cpu_mem_usage=False, + ): + """ + This will load the LoRA layers specified in `state_dict` into `text_encoder` + + Parameters: + state_dict (`dict`): + A standard state dict containing the lora layer parameters. The key should be prefixed with an + additional `text_encoder` to distinguish between unet lora layers. + network_alphas (`Dict[str, float]`): + The value of the network alpha used for stable learning and preventing underflow. This value has the + same meaning as the `--network_alpha` option in the kohya-ss trainer script. Refer to [this + link](https://github.com/darkstorm2150/sd-scripts/blob/main/docs/train_network_README-en.md#execute-learning). + text_encoder (`CLIPTextModel`): + The text encoder model to load the LoRA layers into. + prefix (`str`): + Expected prefix of the `text_encoder` in the `state_dict`. + lora_scale (`float`): + How much to scale the output of the lora linear layer before it is added with the output of the regular + lora layer. + adapter_name (`str`, *optional*): + Adapter name to be used for referencing the loaded adapter model. If not specified, it will use + `default_{i}` where i is the total number of adapters being loaded. + low_cpu_mem_usage (`bool`, *optional*): + Speed up model loading by only loading the pretrained LoRA weights and not initializing the random + weights. + """ + if not USE_PEFT_BACKEND: + raise ValueError("PEFT backend is required for this method.") + + peft_kwargs = {} + if low_cpu_mem_usage: + if not is_peft_version(">=", "0.13.1"): + raise ValueError( + "`low_cpu_mem_usage=True` is not compatible with this `peft` version. Please update it with `pip install -U peft`." + ) + if not is_transformers_version(">", "4.45.2"): + # Note from sayakpaul: It's not in `transformers` stable yet. + # https://github.com/huggingface/transformers/pull/33725/ + raise ValueError( + "`low_cpu_mem_usage=True` is not compatible with this `transformers` version. Please update it with `pip install -U transformers`." + ) + peft_kwargs["low_cpu_mem_usage"] = low_cpu_mem_usage + + from peft import LoraConfig + + # If the serialization format is new (introduced in https://github.com/huggingface/diffusers/pull/2918), + # then the `state_dict` keys should have `self.unet_name` and/or `self.text_encoder_name` as + # their prefixes. + keys = list(state_dict.keys()) + prefix = cls.text_encoder_name if prefix is None else prefix + + # Safe prefix to check with. + if any(cls.text_encoder_name in key for key in keys): + # Load the layers corresponding to text encoder and make necessary adjustments. + text_encoder_keys = [k for k in keys if k.startswith(prefix) and k.split(".")[0] == prefix] + text_encoder_lora_state_dict = { + k.replace(f"{prefix}.", ""): v for k, v in state_dict.items() if k in text_encoder_keys + } + + if len(text_encoder_lora_state_dict) > 0: + logger.info(f"Loading {prefix}.") + rank = {} + text_encoder_lora_state_dict = convert_state_dict_to_diffusers(text_encoder_lora_state_dict) + + # convert state dict + text_encoder_lora_state_dict = convert_state_dict_to_peft(text_encoder_lora_state_dict) + + for name, _ in text_encoder_attn_modules(text_encoder): + for module in ("out_proj", "q_proj", "k_proj", "v_proj"): + rank_key = f"{name}.{module}.lora_B.weight" + if rank_key not in text_encoder_lora_state_dict: + continue + rank[rank_key] = text_encoder_lora_state_dict[rank_key].shape[1] + + for name, _ in text_encoder_mlp_modules(text_encoder): + for module in ("fc1", "fc2"): + rank_key = f"{name}.{module}.lora_B.weight" + if rank_key not in text_encoder_lora_state_dict: + continue + rank[rank_key] = text_encoder_lora_state_dict[rank_key].shape[1] + + if network_alphas is not None: + alpha_keys = [ + k for k in network_alphas.keys() if k.startswith(prefix) and k.split(".")[0] == prefix + ] + network_alphas = { + k.replace(f"{prefix}.", ""): v for k, v in network_alphas.items() if k in alpha_keys + } + + lora_config_kwargs = get_peft_kwargs(rank, network_alphas, text_encoder_lora_state_dict, is_unet=False) + + if "use_dora" in lora_config_kwargs: + if lora_config_kwargs["use_dora"]: + if is_peft_version("<", "0.9.0"): + raise ValueError( + "You need `peft` 0.9.0 at least to use DoRA-enabled LoRAs. Please upgrade your installation of `peft`." + ) + else: + if is_peft_version("<", "0.9.0"): + lora_config_kwargs.pop("use_dora") + + if "lora_bias" in lora_config_kwargs: + if lora_config_kwargs["lora_bias"]: + if is_peft_version("<=", "0.13.2"): + raise ValueError( + "You need `peft` 0.14.0 at least to use `bias` in LoRAs. Please upgrade your installation of `peft`." + ) + else: + if is_peft_version("<=", "0.13.2"): + lora_config_kwargs.pop("lora_bias") + + lora_config = LoraConfig(**lora_config_kwargs) + + # adapter_name + if adapter_name is None: + adapter_name = get_adapter_name(text_encoder) + + is_model_cpu_offload, is_sequential_cpu_offload = cls._optionally_disable_offloading(_pipeline) + + # inject LoRA layers and load the state dict + # in transformers we automatically check whether the adapter name is already in use or not + text_encoder.load_adapter( + adapter_name=adapter_name, + adapter_state_dict=text_encoder_lora_state_dict, + peft_config=lora_config, + **peft_kwargs, + ) + + # scale LoRA layers with `lora_scale` + scale_lora_layers(text_encoder, weight=lora_scale) + + text_encoder.to(device=text_encoder.device, dtype=text_encoder.dtype) + + # Offload back. + if is_model_cpu_offload: + _pipeline.enable_model_cpu_offload() + elif is_sequential_cpu_offload: + _pipeline.enable_sequential_cpu_offload() + # Unsafe code /> + + @classmethod + def save_lora_weights( + cls, + save_directory: Union[str, os.PathLike], + unet_lora_layers: Dict[str, Union[torch.nn.Module, torch.Tensor]] = None, + text_encoder_lora_layers: Dict[str, Union[torch.nn.Module, torch.Tensor]] = None, + text_encoder_2_lora_layers: Dict[str, Union[torch.nn.Module, torch.Tensor]] = None, + is_main_process: bool = True, + weight_name: str = None, + save_function: Callable = None, + safe_serialization: bool = True, + ): + r""" + Save the LoRA parameters corresponding to the UNet and text encoder. + + Arguments: + save_directory (`str` or `os.PathLike`): + Directory to save LoRA parameters to. Will be created if it doesn't exist. + unet_lora_layers (`Dict[str, torch.nn.Module]` or `Dict[str, torch.Tensor]`): + State dict of the LoRA layers corresponding to the `unet`. + text_encoder_lora_layers (`Dict[str, torch.nn.Module]` or `Dict[str, torch.Tensor]`): + State dict of the LoRA layers corresponding to the `text_encoder`. Must explicitly pass the text + encoder LoRA state dict because it comes from 🤗 Transformers. + text_encoder_2_lora_layers (`Dict[str, torch.nn.Module]` or `Dict[str, torch.Tensor]`): + State dict of the LoRA layers corresponding to the `text_encoder_2`. Must explicitly pass the text + encoder LoRA state dict because it comes from 🤗 Transformers. + is_main_process (`bool`, *optional*, defaults to `True`): + Whether the process calling this is the main process or not. Useful during distributed training and you + need to call this function on all processes. In this case, set `is_main_process=True` only on the main + process to avoid race conditions. + save_function (`Callable`): + The function to use to save the state dictionary. Useful during distributed training when you need to + replace `torch.save` with another method. Can be configured with the environment variable + `DIFFUSERS_SAVE_MODE`. + safe_serialization (`bool`, *optional*, defaults to `True`): + Whether to save the model using `safetensors` or the traditional PyTorch way with `pickle`. + """ + state_dict = {} + + if not (unet_lora_layers or text_encoder_lora_layers or text_encoder_2_lora_layers): + raise ValueError( + "You must pass at least one of `unet_lora_layers`, `text_encoder_lora_layers` or `text_encoder_2_lora_layers`." + ) + + if unet_lora_layers: + state_dict.update(cls.pack_weights(unet_lora_layers, "unet")) + + if text_encoder_lora_layers: + state_dict.update(cls.pack_weights(text_encoder_lora_layers, "text_encoder")) + + if text_encoder_2_lora_layers: + state_dict.update(cls.pack_weights(text_encoder_2_lora_layers, "text_encoder_2")) + + cls.write_lora_layers( + state_dict=state_dict, + save_directory=save_directory, + is_main_process=is_main_process, + weight_name=weight_name, + save_function=save_function, + safe_serialization=safe_serialization, + ) + + def fuse_lora( + self, + components: List[str] = ["unet", "text_encoder", "text_encoder_2"], + lora_scale: float = 1.0, + safe_fusing: bool = False, + adapter_names: Optional[List[str]] = None, + **kwargs, + ): + r""" + Fuses the LoRA parameters into the original parameters of the corresponding blocks. + + + + This is an experimental API. + + + + Args: + components: (`List[str]`): List of LoRA-injectable components to fuse the LoRAs into. + lora_scale (`float`, defaults to 1.0): + Controls how much to influence the outputs with the LoRA parameters. + safe_fusing (`bool`, defaults to `False`): + Whether to check fused weights for NaN values before fusing and if values are NaN not fusing them. + adapter_names (`List[str]`, *optional*): + Adapter names to be used for fusing. If nothing is passed, all active adapters will be fused. + + Example: + + ```py + from diffusers import DiffusionPipeline + import torch + + pipeline = DiffusionPipeline.from_pretrained( + "stabilityai/stable-diffusion-xl-base-1.0", torch_dtype=torch.float16 + ).to("cuda") + pipeline.load_lora_weights("nerijs/pixel-art-xl", weight_name="pixel-art-xl.safetensors", adapter_name="pixel") + pipeline.fuse_lora(lora_scale=0.7) + ``` + """ + super().fuse_lora( + components=components, lora_scale=lora_scale, safe_fusing=safe_fusing, adapter_names=adapter_names + ) + + def unfuse_lora(self, components: List[str] = ["unet", "text_encoder", "text_encoder_2"], **kwargs): + r""" + Reverses the effect of + [`pipe.fuse_lora()`](https://huggingface.co/docs/diffusers/main/en/api/loaders#diffusers.loaders.LoraBaseMixin.fuse_lora). + + + + This is an experimental API. + + + + Args: + components (`List[str]`): List of LoRA-injectable components to unfuse LoRA from. + unfuse_unet (`bool`, defaults to `True`): Whether to unfuse the UNet LoRA parameters. + unfuse_text_encoder (`bool`, defaults to `True`): + Whether to unfuse the text encoder LoRA parameters. If the text encoder wasn't monkey-patched with the + LoRA parameters then it won't have any effect. + """ + super().unfuse_lora(components=components) + + +class SD3LoraLoaderMixin(LoraBaseMixin): + r""" + Load LoRA layers into [`SD3Transformer2DModel`], + [`CLIPTextModel`](https://huggingface.co/docs/transformers/model_doc/clip#transformers.CLIPTextModel), and + [`CLIPTextModelWithProjection`](https://huggingface.co/docs/transformers/model_doc/clip#transformers.CLIPTextModelWithProjection). + + Specific to [`StableDiffusion3Pipeline`]. + """ + + _lora_loadable_modules = ["transformer", "text_encoder", "text_encoder_2"] + transformer_name = TRANSFORMER_NAME + text_encoder_name = TEXT_ENCODER_NAME + + @classmethod + @validate_hf_hub_args + def lora_state_dict( + cls, + pretrained_model_name_or_path_or_dict: Union[str, Dict[str, torch.Tensor]], + **kwargs, + ): + r""" + Return state dict for lora weights and the network alphas. + + + + We support loading A1111 formatted LoRA checkpoints in a limited capacity. + + This function is experimental and might change in the future. + + + + Parameters: + pretrained_model_name_or_path_or_dict (`str` or `os.PathLike` or `dict`): + Can be either: + + - A string, the *model id* (for example `google/ddpm-celebahq-256`) of a pretrained model hosted on + the Hub. + - A path to a *directory* (for example `./my_model_directory`) containing the model weights saved + with [`ModelMixin.save_pretrained`]. + - A [torch state + dict](https://pytorch.org/tutorials/beginner/saving_loading_models.html#what-is-a-state-dict). + + cache_dir (`Union[str, os.PathLike]`, *optional*): + Path to a directory where a downloaded pretrained model configuration is cached if the standard cache + is not used. + force_download (`bool`, *optional*, defaults to `False`): + Whether or not to force the (re-)download of the model weights and configuration files, overriding the + cached versions if they exist. + + proxies (`Dict[str, str]`, *optional*): + A dictionary of proxy servers to use by protocol or endpoint, for example, `{'http': 'foo.bar:3128', + 'http://hostname': 'foo.bar:4012'}`. The proxies are used on each request. + local_files_only (`bool`, *optional*, defaults to `False`): + Whether to only load local model weights and configuration files or not. If set to `True`, the model + won't be downloaded from the Hub. + token (`str` or *bool*, *optional*): + The token to use as HTTP bearer authorization for remote files. If `True`, the token generated from + `diffusers-cli login` (stored in `~/.huggingface`) is used. + revision (`str`, *optional*, defaults to `"main"`): + The specific model version to use. It can be a branch name, a tag name, a commit id, or any identifier + allowed by Git. + subfolder (`str`, *optional*, defaults to `""`): + The subfolder location of a model file within a larger model repository on the Hub or locally. + + """ + # Load the main state dict first which has the LoRA layers for either of + # transformer and text encoder or both. + cache_dir = kwargs.pop("cache_dir", None) + force_download = kwargs.pop("force_download", False) + proxies = kwargs.pop("proxies", None) + local_files_only = kwargs.pop("local_files_only", None) + token = kwargs.pop("token", None) + revision = kwargs.pop("revision", None) + subfolder = kwargs.pop("subfolder", None) + weight_name = kwargs.pop("weight_name", None) + use_safetensors = kwargs.pop("use_safetensors", None) + + allow_pickle = False + if use_safetensors is None: + use_safetensors = True + allow_pickle = True + + user_agent = { + "file_type": "attn_procs_weights", + "framework": "pytorch", + } + + state_dict = _fetch_state_dict( + pretrained_model_name_or_path_or_dict=pretrained_model_name_or_path_or_dict, + weight_name=weight_name, + use_safetensors=use_safetensors, + local_files_only=local_files_only, + cache_dir=cache_dir, + force_download=force_download, + proxies=proxies, + token=token, + revision=revision, + subfolder=subfolder, + user_agent=user_agent, + allow_pickle=allow_pickle, + ) + + is_dora_scale_present = any("dora_scale" in k for k in state_dict) + if is_dora_scale_present: + warn_msg = "It seems like you are using a DoRA checkpoint that is not compatible in Diffusers at the moment. So, we are going to filter out the keys associated to 'dora_scale` from the state dict. If you think this is a mistake please open an issue https://github.com/huggingface/diffusers/issues/new." + logger.warning(warn_msg) + state_dict = {k: v for k, v in state_dict.items() if "dora_scale" not in k} + + return state_dict + + def load_lora_weights( + self, pretrained_model_name_or_path_or_dict: Union[str, Dict[str, torch.Tensor]], adapter_name=None, **kwargs + ): + """ + Load LoRA weights specified in `pretrained_model_name_or_path_or_dict` into `self.unet` and + `self.text_encoder`. + + All kwargs are forwarded to `self.lora_state_dict`. + + See [`~loaders.StableDiffusionLoraLoaderMixin.lora_state_dict`] for more details on how the state dict is + loaded. + + See [`~loaders.StableDiffusionLoraLoaderMixin.load_lora_into_transformer`] for more details on how the state + dict is loaded into `self.transformer`. + + Parameters: + pretrained_model_name_or_path_or_dict (`str` or `os.PathLike` or `dict`): + See [`~loaders.StableDiffusionLoraLoaderMixin.lora_state_dict`]. + adapter_name (`str`, *optional*): + Adapter name to be used for referencing the loaded adapter model. If not specified, it will use + `default_{i}` where i is the total number of adapters being loaded. + low_cpu_mem_usage (`bool`, *optional*): + Speed up model loading by only loading the pretrained LoRA weights and not initializing the random + weights. + kwargs (`dict`, *optional*): + See [`~loaders.StableDiffusionLoraLoaderMixin.lora_state_dict`]. + """ + if not USE_PEFT_BACKEND: + raise ValueError("PEFT backend is required for this method.") + + low_cpu_mem_usage = kwargs.pop("low_cpu_mem_usage", _LOW_CPU_MEM_USAGE_DEFAULT_LORA) + if low_cpu_mem_usage and is_peft_version("<", "0.13.0"): + raise ValueError( + "`low_cpu_mem_usage=True` is not compatible with this `peft` version. Please update it with `pip install -U peft`." + ) + + # if a dict is passed, copy it instead of modifying it inplace + if isinstance(pretrained_model_name_or_path_or_dict, dict): + pretrained_model_name_or_path_or_dict = pretrained_model_name_or_path_or_dict.copy() + + # First, ensure that the checkpoint is a compatible one and can be successfully loaded. + state_dict = self.lora_state_dict(pretrained_model_name_or_path_or_dict, **kwargs) + + is_correct_format = all("lora" in key for key in state_dict.keys()) + if not is_correct_format: + raise ValueError("Invalid LoRA checkpoint.") + + transformer_state_dict = {k: v for k, v in state_dict.items() if "transformer." in k} + if len(transformer_state_dict) > 0: + self.load_lora_into_transformer( + state_dict, + transformer=getattr(self, self.transformer_name) + if not hasattr(self, "transformer") + else self.transformer, + adapter_name=adapter_name, + _pipeline=self, + low_cpu_mem_usage=low_cpu_mem_usage, + ) + + text_encoder_state_dict = {k: v for k, v in state_dict.items() if "text_encoder." in k} + if len(text_encoder_state_dict) > 0: + self.load_lora_into_text_encoder( + text_encoder_state_dict, + network_alphas=None, + text_encoder=self.text_encoder, + prefix="text_encoder", + lora_scale=self.lora_scale, + adapter_name=adapter_name, + _pipeline=self, + low_cpu_mem_usage=low_cpu_mem_usage, + ) + + text_encoder_2_state_dict = {k: v for k, v in state_dict.items() if "text_encoder_2." in k} + if len(text_encoder_2_state_dict) > 0: + self.load_lora_into_text_encoder( + text_encoder_2_state_dict, + network_alphas=None, + text_encoder=self.text_encoder_2, + prefix="text_encoder_2", + lora_scale=self.lora_scale, + adapter_name=adapter_name, + _pipeline=self, + low_cpu_mem_usage=low_cpu_mem_usage, + ) + + @classmethod + def load_lora_into_transformer( + cls, state_dict, transformer, adapter_name=None, _pipeline=None, low_cpu_mem_usage=False + ): + """ + This will load the LoRA layers specified in `state_dict` into `transformer`. + + Parameters: + state_dict (`dict`): + A standard state dict containing the lora layer parameters. The keys can either be indexed directly + into the unet or prefixed with an additional `unet` which can be used to distinguish between text + encoder lora layers. + transformer (`SD3Transformer2DModel`): + The Transformer model to load the LoRA layers into. + adapter_name (`str`, *optional*): + Adapter name to be used for referencing the loaded adapter model. If not specified, it will use + `default_{i}` where i is the total number of adapters being loaded. + low_cpu_mem_usage (`bool`, *optional*): + Speed up model loading by only loading the pretrained LoRA weights and not initializing the random + weights. + """ + if low_cpu_mem_usage and is_peft_version("<", "0.13.0"): + raise ValueError( + "`low_cpu_mem_usage=True` is not compatible with this `peft` version. Please update it with `pip install -U peft`." + ) + + # Load the layers corresponding to transformer. + logger.info(f"Loading {cls.transformer_name}.") + transformer.load_lora_adapter( + state_dict, + network_alphas=None, + adapter_name=adapter_name, + _pipeline=_pipeline, + low_cpu_mem_usage=low_cpu_mem_usage, + ) + + @classmethod + # Copied from diffusers.loaders.lora_pipeline.StableDiffusionLoraLoaderMixin.load_lora_into_text_encoder + def load_lora_into_text_encoder( + cls, + state_dict, + network_alphas, + text_encoder, + prefix=None, + lora_scale=1.0, + adapter_name=None, + _pipeline=None, + low_cpu_mem_usage=False, + ): + """ + This will load the LoRA layers specified in `state_dict` into `text_encoder` + + Parameters: + state_dict (`dict`): + A standard state dict containing the lora layer parameters. The key should be prefixed with an + additional `text_encoder` to distinguish between unet lora layers. + network_alphas (`Dict[str, float]`): + The value of the network alpha used for stable learning and preventing underflow. This value has the + same meaning as the `--network_alpha` option in the kohya-ss trainer script. Refer to [this + link](https://github.com/darkstorm2150/sd-scripts/blob/main/docs/train_network_README-en.md#execute-learning). + text_encoder (`CLIPTextModel`): + The text encoder model to load the LoRA layers into. + prefix (`str`): + Expected prefix of the `text_encoder` in the `state_dict`. + lora_scale (`float`): + How much to scale the output of the lora linear layer before it is added with the output of the regular + lora layer. + adapter_name (`str`, *optional*): + Adapter name to be used for referencing the loaded adapter model. If not specified, it will use + `default_{i}` where i is the total number of adapters being loaded. + low_cpu_mem_usage (`bool`, *optional*): + Speed up model loading by only loading the pretrained LoRA weights and not initializing the random + weights. + """ + if not USE_PEFT_BACKEND: + raise ValueError("PEFT backend is required for this method.") + + peft_kwargs = {} + if low_cpu_mem_usage: + if not is_peft_version(">=", "0.13.1"): + raise ValueError( + "`low_cpu_mem_usage=True` is not compatible with this `peft` version. Please update it with `pip install -U peft`." + ) + if not is_transformers_version(">", "4.45.2"): + # Note from sayakpaul: It's not in `transformers` stable yet. + # https://github.com/huggingface/transformers/pull/33725/ + raise ValueError( + "`low_cpu_mem_usage=True` is not compatible with this `transformers` version. Please update it with `pip install -U transformers`." + ) + peft_kwargs["low_cpu_mem_usage"] = low_cpu_mem_usage + + from peft import LoraConfig + + # If the serialization format is new (introduced in https://github.com/huggingface/diffusers/pull/2918), + # then the `state_dict` keys should have `self.unet_name` and/or `self.text_encoder_name` as + # their prefixes. + keys = list(state_dict.keys()) + prefix = cls.text_encoder_name if prefix is None else prefix + + # Safe prefix to check with. + if any(cls.text_encoder_name in key for key in keys): + # Load the layers corresponding to text encoder and make necessary adjustments. + text_encoder_keys = [k for k in keys if k.startswith(prefix) and k.split(".")[0] == prefix] + text_encoder_lora_state_dict = { + k.replace(f"{prefix}.", ""): v for k, v in state_dict.items() if k in text_encoder_keys + } + + if len(text_encoder_lora_state_dict) > 0: + logger.info(f"Loading {prefix}.") + rank = {} + text_encoder_lora_state_dict = convert_state_dict_to_diffusers(text_encoder_lora_state_dict) + + # convert state dict + text_encoder_lora_state_dict = convert_state_dict_to_peft(text_encoder_lora_state_dict) + + for name, _ in text_encoder_attn_modules(text_encoder): + for module in ("out_proj", "q_proj", "k_proj", "v_proj"): + rank_key = f"{name}.{module}.lora_B.weight" + if rank_key not in text_encoder_lora_state_dict: + continue + rank[rank_key] = text_encoder_lora_state_dict[rank_key].shape[1] + + for name, _ in text_encoder_mlp_modules(text_encoder): + for module in ("fc1", "fc2"): + rank_key = f"{name}.{module}.lora_B.weight" + if rank_key not in text_encoder_lora_state_dict: + continue + rank[rank_key] = text_encoder_lora_state_dict[rank_key].shape[1] + + if network_alphas is not None: + alpha_keys = [ + k for k in network_alphas.keys() if k.startswith(prefix) and k.split(".")[0] == prefix + ] + network_alphas = { + k.replace(f"{prefix}.", ""): v for k, v in network_alphas.items() if k in alpha_keys + } + + lora_config_kwargs = get_peft_kwargs(rank, network_alphas, text_encoder_lora_state_dict, is_unet=False) + + if "use_dora" in lora_config_kwargs: + if lora_config_kwargs["use_dora"]: + if is_peft_version("<", "0.9.0"): + raise ValueError( + "You need `peft` 0.9.0 at least to use DoRA-enabled LoRAs. Please upgrade your installation of `peft`." + ) + else: + if is_peft_version("<", "0.9.0"): + lora_config_kwargs.pop("use_dora") + + if "lora_bias" in lora_config_kwargs: + if lora_config_kwargs["lora_bias"]: + if is_peft_version("<=", "0.13.2"): + raise ValueError( + "You need `peft` 0.14.0 at least to use `bias` in LoRAs. Please upgrade your installation of `peft`." + ) + else: + if is_peft_version("<=", "0.13.2"): + lora_config_kwargs.pop("lora_bias") + + lora_config = LoraConfig(**lora_config_kwargs) + + # adapter_name + if adapter_name is None: + adapter_name = get_adapter_name(text_encoder) + + is_model_cpu_offload, is_sequential_cpu_offload = cls._optionally_disable_offloading(_pipeline) + + # inject LoRA layers and load the state dict + # in transformers we automatically check whether the adapter name is already in use or not + text_encoder.load_adapter( + adapter_name=adapter_name, + adapter_state_dict=text_encoder_lora_state_dict, + peft_config=lora_config, + **peft_kwargs, + ) + + # scale LoRA layers with `lora_scale` + scale_lora_layers(text_encoder, weight=lora_scale) + + text_encoder.to(device=text_encoder.device, dtype=text_encoder.dtype) + + # Offload back. + if is_model_cpu_offload: + _pipeline.enable_model_cpu_offload() + elif is_sequential_cpu_offload: + _pipeline.enable_sequential_cpu_offload() + # Unsafe code /> + + @classmethod + def save_lora_weights( + cls, + save_directory: Union[str, os.PathLike], + transformer_lora_layers: Dict[str, torch.nn.Module] = None, + text_encoder_lora_layers: Dict[str, Union[torch.nn.Module, torch.Tensor]] = None, + text_encoder_2_lora_layers: Dict[str, Union[torch.nn.Module, torch.Tensor]] = None, + is_main_process: bool = True, + weight_name: str = None, + save_function: Callable = None, + safe_serialization: bool = True, + ): + r""" + Save the LoRA parameters corresponding to the UNet and text encoder. + + Arguments: + save_directory (`str` or `os.PathLike`): + Directory to save LoRA parameters to. Will be created if it doesn't exist. + transformer_lora_layers (`Dict[str, torch.nn.Module]` or `Dict[str, torch.Tensor]`): + State dict of the LoRA layers corresponding to the `transformer`. + text_encoder_lora_layers (`Dict[str, torch.nn.Module]` or `Dict[str, torch.Tensor]`): + State dict of the LoRA layers corresponding to the `text_encoder`. Must explicitly pass the text + encoder LoRA state dict because it comes from 🤗 Transformers. + text_encoder_2_lora_layers (`Dict[str, torch.nn.Module]` or `Dict[str, torch.Tensor]`): + State dict of the LoRA layers corresponding to the `text_encoder_2`. Must explicitly pass the text + encoder LoRA state dict because it comes from 🤗 Transformers. + is_main_process (`bool`, *optional*, defaults to `True`): + Whether the process calling this is the main process or not. Useful during distributed training and you + need to call this function on all processes. In this case, set `is_main_process=True` only on the main + process to avoid race conditions. + save_function (`Callable`): + The function to use to save the state dictionary. Useful during distributed training when you need to + replace `torch.save` with another method. Can be configured with the environment variable + `DIFFUSERS_SAVE_MODE`. + safe_serialization (`bool`, *optional*, defaults to `True`): + Whether to save the model using `safetensors` or the traditional PyTorch way with `pickle`. + """ + state_dict = {} + + if not (transformer_lora_layers or text_encoder_lora_layers or text_encoder_2_lora_layers): + raise ValueError( + "You must pass at least one of `transformer_lora_layers`, `text_encoder_lora_layers`, `text_encoder_2_lora_layers`." + ) + + if transformer_lora_layers: + state_dict.update(cls.pack_weights(transformer_lora_layers, cls.transformer_name)) + + if text_encoder_lora_layers: + state_dict.update(cls.pack_weights(text_encoder_lora_layers, "text_encoder")) + + if text_encoder_2_lora_layers: + state_dict.update(cls.pack_weights(text_encoder_2_lora_layers, "text_encoder_2")) + + # Save the model + cls.write_lora_layers( + state_dict=state_dict, + save_directory=save_directory, + is_main_process=is_main_process, + weight_name=weight_name, + save_function=save_function, + safe_serialization=safe_serialization, + ) + + def fuse_lora( + self, + components: List[str] = ["transformer", "text_encoder", "text_encoder_2"], + lora_scale: float = 1.0, + safe_fusing: bool = False, + adapter_names: Optional[List[str]] = None, + **kwargs, + ): + r""" + Fuses the LoRA parameters into the original parameters of the corresponding blocks. + + + + This is an experimental API. + + + + Args: + components: (`List[str]`): List of LoRA-injectable components to fuse the LoRAs into. + lora_scale (`float`, defaults to 1.0): + Controls how much to influence the outputs with the LoRA parameters. + safe_fusing (`bool`, defaults to `False`): + Whether to check fused weights for NaN values before fusing and if values are NaN not fusing them. + adapter_names (`List[str]`, *optional*): + Adapter names to be used for fusing. If nothing is passed, all active adapters will be fused. + + Example: + + ```py + from diffusers import DiffusionPipeline + import torch + + pipeline = DiffusionPipeline.from_pretrained( + "stabilityai/stable-diffusion-xl-base-1.0", torch_dtype=torch.float16 + ).to("cuda") + pipeline.load_lora_weights("nerijs/pixel-art-xl", weight_name="pixel-art-xl.safetensors", adapter_name="pixel") + pipeline.fuse_lora(lora_scale=0.7) + ``` + """ + super().fuse_lora( + components=components, lora_scale=lora_scale, safe_fusing=safe_fusing, adapter_names=adapter_names + ) + + def unfuse_lora(self, components: List[str] = ["transformer", "text_encoder", "text_encoder_2"], **kwargs): + r""" + Reverses the effect of + [`pipe.fuse_lora()`](https://huggingface.co/docs/diffusers/main/en/api/loaders#diffusers.loaders.LoraBaseMixin.fuse_lora). + + + + This is an experimental API. + + + + Args: + components (`List[str]`): List of LoRA-injectable components to unfuse LoRA from. + unfuse_unet (`bool`, defaults to `True`): Whether to unfuse the UNet LoRA parameters. + unfuse_text_encoder (`bool`, defaults to `True`): + Whether to unfuse the text encoder LoRA parameters. If the text encoder wasn't monkey-patched with the + LoRA parameters then it won't have any effect. + """ + super().unfuse_lora(components=components) + + +class FluxLoraLoaderMixin(LoraBaseMixin): + r""" + Load LoRA layers into [`FluxTransformer2DModel`], + [`CLIPTextModel`](https://huggingface.co/docs/transformers/model_doc/clip#transformers.CLIPTextModel). + + Specific to [`StableDiffusion3Pipeline`]. + """ + + _lora_loadable_modules = ["transformer", "text_encoder"] + transformer_name = TRANSFORMER_NAME + text_encoder_name = TEXT_ENCODER_NAME + _control_lora_supported_norm_keys = ["norm_q", "norm_k", "norm_added_q", "norm_added_k"] + + @classmethod + @validate_hf_hub_args + def lora_state_dict( + cls, + pretrained_model_name_or_path_or_dict: Union[str, Dict[str, torch.Tensor]], + return_alphas: bool = False, + **kwargs, + ): + r""" + Return state dict for lora weights and the network alphas. + + + + We support loading A1111 formatted LoRA checkpoints in a limited capacity. + + This function is experimental and might change in the future. + + + + Parameters: + pretrained_model_name_or_path_or_dict (`str` or `os.PathLike` or `dict`): + Can be either: + + - A string, the *model id* (for example `google/ddpm-celebahq-256`) of a pretrained model hosted on + the Hub. + - A path to a *directory* (for example `./my_model_directory`) containing the model weights saved + with [`ModelMixin.save_pretrained`]. + - A [torch state + dict](https://pytorch.org/tutorials/beginner/saving_loading_models.html#what-is-a-state-dict). + + cache_dir (`Union[str, os.PathLike]`, *optional*): + Path to a directory where a downloaded pretrained model configuration is cached if the standard cache + is not used. + force_download (`bool`, *optional*, defaults to `False`): + Whether or not to force the (re-)download of the model weights and configuration files, overriding the + cached versions if they exist. + + proxies (`Dict[str, str]`, *optional*): + A dictionary of proxy servers to use by protocol or endpoint, for example, `{'http': 'foo.bar:3128', + 'http://hostname': 'foo.bar:4012'}`. The proxies are used on each request. + local_files_only (`bool`, *optional*, defaults to `False`): + Whether to only load local model weights and configuration files or not. If set to `True`, the model + won't be downloaded from the Hub. + token (`str` or *bool*, *optional*): + The token to use as HTTP bearer authorization for remote files. If `True`, the token generated from + `diffusers-cli login` (stored in `~/.huggingface`) is used. + revision (`str`, *optional*, defaults to `"main"`): + The specific model version to use. It can be a branch name, a tag name, a commit id, or any identifier + allowed by Git. + subfolder (`str`, *optional*, defaults to `""`): + The subfolder location of a model file within a larger model repository on the Hub or locally. + + """ + # Load the main state dict first which has the LoRA layers for either of + # transformer and text encoder or both. + cache_dir = kwargs.pop("cache_dir", None) + force_download = kwargs.pop("force_download", False) + proxies = kwargs.pop("proxies", None) + local_files_only = kwargs.pop("local_files_only", None) + token = kwargs.pop("token", None) + revision = kwargs.pop("revision", None) + subfolder = kwargs.pop("subfolder", None) + weight_name = kwargs.pop("weight_name", None) + use_safetensors = kwargs.pop("use_safetensors", None) + + allow_pickle = False + if use_safetensors is None: + use_safetensors = True + allow_pickle = True + + user_agent = { + "file_type": "attn_procs_weights", + "framework": "pytorch", + } + + state_dict = _fetch_state_dict( + pretrained_model_name_or_path_or_dict=pretrained_model_name_or_path_or_dict, + weight_name=weight_name, + use_safetensors=use_safetensors, + local_files_only=local_files_only, + cache_dir=cache_dir, + force_download=force_download, + proxies=proxies, + token=token, + revision=revision, + subfolder=subfolder, + user_agent=user_agent, + allow_pickle=allow_pickle, + ) + is_dora_scale_present = any("dora_scale" in k for k in state_dict) + if is_dora_scale_present: + warn_msg = "It seems like you are using a DoRA checkpoint that is not compatible in Diffusers at the moment. So, we are going to filter out the keys associated to 'dora_scale` from the state dict. If you think this is a mistake please open an issue https://github.com/huggingface/diffusers/issues/new." + logger.warning(warn_msg) + state_dict = {k: v for k, v in state_dict.items() if "dora_scale" not in k} + + # TODO (sayakpaul): to a follow-up to clean and try to unify the conditions. + is_kohya = any(".lora_down.weight" in k for k in state_dict) + if is_kohya: + state_dict = _convert_kohya_flux_lora_to_diffusers(state_dict) + # Kohya already takes care of scaling the LoRA parameters with alpha. + return (state_dict, None) if return_alphas else state_dict + + is_xlabs = any("processor" in k for k in state_dict) + if is_xlabs: + state_dict = _convert_xlabs_flux_lora_to_diffusers(state_dict) + # xlabs doesn't use `alpha`. + return (state_dict, None) if return_alphas else state_dict + + is_bfl_control = any("query_norm.scale" in k for k in state_dict) + if is_bfl_control: + state_dict = _convert_bfl_flux_control_lora_to_diffusers(state_dict) + return (state_dict, None) if return_alphas else state_dict + + # For state dicts like + # https://huggingface.co/TheLastBen/Jon_Snow_Flux_LoRA + keys = list(state_dict.keys()) + network_alphas = {} + for k in keys: + if "alpha" in k: + alpha_value = state_dict.get(k) + if (torch.is_tensor(alpha_value) and torch.is_floating_point(alpha_value)) or isinstance( + alpha_value, float + ): + network_alphas[k] = state_dict.pop(k) + else: + raise ValueError( + f"The alpha key ({k}) seems to be incorrect. If you think this error is unexpected, please open as issue." + ) + + if return_alphas: + return state_dict, network_alphas + else: + return state_dict + + def load_lora_weights( + self, pretrained_model_name_or_path_or_dict: Union[str, Dict[str, torch.Tensor]], adapter_name=None, **kwargs + ): + """ + Load LoRA weights specified in `pretrained_model_name_or_path_or_dict` into `self.transformer` and + `self.text_encoder`. + + All kwargs are forwarded to `self.lora_state_dict`. + + See [`~loaders.StableDiffusionLoraLoaderMixin.lora_state_dict`] for more details on how the state dict is + loaded. + + See [`~loaders.StableDiffusionLoraLoaderMixin.load_lora_into_transformer`] for more details on how the state + dict is loaded into `self.transformer`. + + Parameters: + pretrained_model_name_or_path_or_dict (`str` or `os.PathLike` or `dict`): + See [`~loaders.StableDiffusionLoraLoaderMixin.lora_state_dict`]. + kwargs (`dict`, *optional*): + See [`~loaders.StableDiffusionLoraLoaderMixin.lora_state_dict`]. + adapter_name (`str`, *optional*): + Adapter name to be used for referencing the loaded adapter model. If not specified, it will use + `default_{i}` where i is the total number of adapters being loaded. + low_cpu_mem_usage (`bool`, *optional*): + `Speed up model loading by only loading the pretrained LoRA weights and not initializing the random + weights. + """ + if not USE_PEFT_BACKEND: + raise ValueError("PEFT backend is required for this method.") + + low_cpu_mem_usage = kwargs.pop("low_cpu_mem_usage", _LOW_CPU_MEM_USAGE_DEFAULT_LORA) + if low_cpu_mem_usage and not is_peft_version(">=", "0.13.1"): + raise ValueError( + "`low_cpu_mem_usage=True` is not compatible with this `peft` version. Please update it with `pip install -U peft`." + ) + + # if a dict is passed, copy it instead of modifying it inplace + if isinstance(pretrained_model_name_or_path_or_dict, dict): + pretrained_model_name_or_path_or_dict = pretrained_model_name_or_path_or_dict.copy() + + # First, ensure that the checkpoint is a compatible one and can be successfully loaded. + state_dict, network_alphas = self.lora_state_dict( + pretrained_model_name_or_path_or_dict, return_alphas=True, **kwargs + ) + + has_lora_keys = any("lora" in key for key in state_dict.keys()) + + # Flux Control LoRAs also have norm keys + has_norm_keys = any( + norm_key in key for key in state_dict.keys() for norm_key in self._control_lora_supported_norm_keys + ) + + if not (has_lora_keys or has_norm_keys): + raise ValueError("Invalid LoRA checkpoint.") + + transformer_lora_state_dict = { + k: state_dict.pop(k) for k in list(state_dict.keys()) if "transformer." in k and "lora" in k + } + transformer_norm_state_dict = { + k: state_dict.pop(k) + for k in list(state_dict.keys()) + if "transformer." in k and any(norm_key in k for norm_key in self._control_lora_supported_norm_keys) + } + + transformer = getattr(self, self.transformer_name) if not hasattr(self, "transformer") else self.transformer + has_param_with_expanded_shape = self._maybe_expand_transformer_param_shape_or_error_( + transformer, transformer_lora_state_dict, transformer_norm_state_dict + ) + + if has_param_with_expanded_shape: + logger.info( + "The LoRA weights contain parameters that have different shapes that expected by the transformer. " + "As a result, the state_dict of the transformer has been expanded to match the LoRA parameter shapes. " + "To get a comprehensive list of parameter names that were modified, enable debug logging." + ) + transformer_lora_state_dict = self._maybe_expand_lora_state_dict( + transformer=transformer, lora_state_dict=transformer_lora_state_dict + ) + + if len(transformer_lora_state_dict) > 0: + self.load_lora_into_transformer( + transformer_lora_state_dict, + network_alphas=network_alphas, + transformer=transformer, + adapter_name=adapter_name, + _pipeline=self, + low_cpu_mem_usage=low_cpu_mem_usage, + ) + + if len(transformer_norm_state_dict) > 0: + transformer._transformer_norm_layers = self._load_norm_into_transformer( + transformer_norm_state_dict, + transformer=transformer, + discard_original_layers=False, + ) + + text_encoder_state_dict = {k: v for k, v in state_dict.items() if "text_encoder." in k} + if len(text_encoder_state_dict) > 0: + self.load_lora_into_text_encoder( + text_encoder_state_dict, + network_alphas=network_alphas, + text_encoder=self.text_encoder, + prefix="text_encoder", + lora_scale=self.lora_scale, + adapter_name=adapter_name, + _pipeline=self, + low_cpu_mem_usage=low_cpu_mem_usage, + ) + + @classmethod + def load_lora_into_transformer( + cls, state_dict, network_alphas, transformer, adapter_name=None, _pipeline=None, low_cpu_mem_usage=False + ): + """ + This will load the LoRA layers specified in `state_dict` into `transformer`. + + Parameters: + state_dict (`dict`): + A standard state dict containing the lora layer parameters. The keys can either be indexed directly + into the unet or prefixed with an additional `unet` which can be used to distinguish between text + encoder lora layers. + network_alphas (`Dict[str, float]`): + The value of the network alpha used for stable learning and preventing underflow. This value has the + same meaning as the `--network_alpha` option in the kohya-ss trainer script. Refer to [this + link](https://github.com/darkstorm2150/sd-scripts/blob/main/docs/train_network_README-en.md#execute-learning). + transformer (`FluxTransformer2DModel`): + The Transformer model to load the LoRA layers into. + adapter_name (`str`, *optional*): + Adapter name to be used for referencing the loaded adapter model. If not specified, it will use + `default_{i}` where i is the total number of adapters being loaded. + low_cpu_mem_usage (`bool`, *optional*): + Speed up model loading by only loading the pretrained LoRA weights and not initializing the random + weights. + """ + if low_cpu_mem_usage and not is_peft_version(">=", "0.13.1"): + raise ValueError( + "`low_cpu_mem_usage=True` is not compatible with this `peft` version. Please update it with `pip install -U peft`." + ) + + # Load the layers corresponding to transformer. + keys = list(state_dict.keys()) + transformer_present = any(key.startswith(cls.transformer_name) for key in keys) + if transformer_present: + logger.info(f"Loading {cls.transformer_name}.") + transformer.load_lora_adapter( + state_dict, + network_alphas=network_alphas, + adapter_name=adapter_name, + _pipeline=_pipeline, + low_cpu_mem_usage=low_cpu_mem_usage, + ) + + @classmethod + def _load_norm_into_transformer( + cls, + state_dict, + transformer, + prefix=None, + discard_original_layers=False, + ) -> Dict[str, torch.Tensor]: + # Remove prefix if present + prefix = prefix or cls.transformer_name + for key in list(state_dict.keys()): + if key.split(".")[0] == prefix: + state_dict[key[len(f"{prefix}.") :]] = state_dict.pop(key) + + # Find invalid keys + transformer_state_dict = transformer.state_dict() + transformer_keys = set(transformer_state_dict.keys()) + state_dict_keys = set(state_dict.keys()) + extra_keys = list(state_dict_keys - transformer_keys) + + if extra_keys: + logger.warning( + f"Unsupported keys found in state dict when trying to load normalization layers into the transformer. The following keys will be ignored:\n{extra_keys}." + ) + + for key in extra_keys: + state_dict.pop(key) + + # Save the layers that are going to be overwritten so that unload_lora_weights can work as expected + overwritten_layers_state_dict = {} + if not discard_original_layers: + for key in state_dict.keys(): + overwritten_layers_state_dict[key] = transformer_state_dict[key].clone() + + logger.info( + "The provided state dict contains normalization layers in addition to LoRA layers. The normalization layers will directly update the state_dict of the transformer " + 'as opposed to the LoRA layers that will co-exist separately until the "fuse_lora()" method is called. That is to say, the normalization layers will always be directly ' + "fused into the transformer and can only be unfused if `discard_original_layers=True` is passed. This might also have implications when dealing with multiple LoRAs. " + "If you notice something unexpected, please open an issue: https://github.com/huggingface/diffusers/issues." + ) + + # We can't load with strict=True because the current state_dict does not contain all the transformer keys + incompatible_keys = transformer.load_state_dict(state_dict, strict=False) + unexpected_keys = getattr(incompatible_keys, "unexpected_keys", None) + + # We shouldn't expect to see the supported norm keys here being present in the unexpected keys. + if unexpected_keys: + if any(norm_key in k for k in unexpected_keys for norm_key in cls._control_lora_supported_norm_keys): + raise ValueError( + f"Found {unexpected_keys} as unexpected keys while trying to load norm layers into the transformer." + ) + + return overwritten_layers_state_dict + + @classmethod + # Copied from diffusers.loaders.lora_pipeline.StableDiffusionLoraLoaderMixin.load_lora_into_text_encoder + def load_lora_into_text_encoder( + cls, + state_dict, + network_alphas, + text_encoder, + prefix=None, + lora_scale=1.0, + adapter_name=None, + _pipeline=None, + low_cpu_mem_usage=False, + ): + """ + This will load the LoRA layers specified in `state_dict` into `text_encoder` + + Parameters: + state_dict (`dict`): + A standard state dict containing the lora layer parameters. The key should be prefixed with an + additional `text_encoder` to distinguish between unet lora layers. + network_alphas (`Dict[str, float]`): + The value of the network alpha used for stable learning and preventing underflow. This value has the + same meaning as the `--network_alpha` option in the kohya-ss trainer script. Refer to [this + link](https://github.com/darkstorm2150/sd-scripts/blob/main/docs/train_network_README-en.md#execute-learning). + text_encoder (`CLIPTextModel`): + The text encoder model to load the LoRA layers into. + prefix (`str`): + Expected prefix of the `text_encoder` in the `state_dict`. + lora_scale (`float`): + How much to scale the output of the lora linear layer before it is added with the output of the regular + lora layer. + adapter_name (`str`, *optional*): + Adapter name to be used for referencing the loaded adapter model. If not specified, it will use + `default_{i}` where i is the total number of adapters being loaded. + low_cpu_mem_usage (`bool`, *optional*): + Speed up model loading by only loading the pretrained LoRA weights and not initializing the random + weights. + """ + if not USE_PEFT_BACKEND: + raise ValueError("PEFT backend is required for this method.") + + peft_kwargs = {} + if low_cpu_mem_usage: + if not is_peft_version(">=", "0.13.1"): + raise ValueError( + "`low_cpu_mem_usage=True` is not compatible with this `peft` version. Please update it with `pip install -U peft`." + ) + if not is_transformers_version(">", "4.45.2"): + # Note from sayakpaul: It's not in `transformers` stable yet. + # https://github.com/huggingface/transformers/pull/33725/ + raise ValueError( + "`low_cpu_mem_usage=True` is not compatible with this `transformers` version. Please update it with `pip install -U transformers`." + ) + peft_kwargs["low_cpu_mem_usage"] = low_cpu_mem_usage + + from peft import LoraConfig + + # If the serialization format is new (introduced in https://github.com/huggingface/diffusers/pull/2918), + # then the `state_dict` keys should have `self.unet_name` and/or `self.text_encoder_name` as + # their prefixes. + keys = list(state_dict.keys()) + prefix = cls.text_encoder_name if prefix is None else prefix + + # Safe prefix to check with. + if any(cls.text_encoder_name in key for key in keys): + # Load the layers corresponding to text encoder and make necessary adjustments. + text_encoder_keys = [k for k in keys if k.startswith(prefix) and k.split(".")[0] == prefix] + text_encoder_lora_state_dict = { + k.replace(f"{prefix}.", ""): v for k, v in state_dict.items() if k in text_encoder_keys + } + + if len(text_encoder_lora_state_dict) > 0: + logger.info(f"Loading {prefix}.") + rank = {} + text_encoder_lora_state_dict = convert_state_dict_to_diffusers(text_encoder_lora_state_dict) + + # convert state dict + text_encoder_lora_state_dict = convert_state_dict_to_peft(text_encoder_lora_state_dict) + + for name, _ in text_encoder_attn_modules(text_encoder): + for module in ("out_proj", "q_proj", "k_proj", "v_proj"): + rank_key = f"{name}.{module}.lora_B.weight" + if rank_key not in text_encoder_lora_state_dict: + continue + rank[rank_key] = text_encoder_lora_state_dict[rank_key].shape[1] + + for name, _ in text_encoder_mlp_modules(text_encoder): + for module in ("fc1", "fc2"): + rank_key = f"{name}.{module}.lora_B.weight" + if rank_key not in text_encoder_lora_state_dict: + continue + rank[rank_key] = text_encoder_lora_state_dict[rank_key].shape[1] + + if network_alphas is not None: + alpha_keys = [ + k for k in network_alphas.keys() if k.startswith(prefix) and k.split(".")[0] == prefix + ] + network_alphas = { + k.replace(f"{prefix}.", ""): v for k, v in network_alphas.items() if k in alpha_keys + } + + lora_config_kwargs = get_peft_kwargs(rank, network_alphas, text_encoder_lora_state_dict, is_unet=False) + + if "use_dora" in lora_config_kwargs: + if lora_config_kwargs["use_dora"]: + if is_peft_version("<", "0.9.0"): + raise ValueError( + "You need `peft` 0.9.0 at least to use DoRA-enabled LoRAs. Please upgrade your installation of `peft`." + ) + else: + if is_peft_version("<", "0.9.0"): + lora_config_kwargs.pop("use_dora") + + if "lora_bias" in lora_config_kwargs: + if lora_config_kwargs["lora_bias"]: + if is_peft_version("<=", "0.13.2"): + raise ValueError( + "You need `peft` 0.14.0 at least to use `bias` in LoRAs. Please upgrade your installation of `peft`." + ) + else: + if is_peft_version("<=", "0.13.2"): + lora_config_kwargs.pop("lora_bias") + + lora_config = LoraConfig(**lora_config_kwargs) + + # adapter_name + if adapter_name is None: + adapter_name = get_adapter_name(text_encoder) + + is_model_cpu_offload, is_sequential_cpu_offload = cls._optionally_disable_offloading(_pipeline) + + # inject LoRA layers and load the state dict + # in transformers we automatically check whether the adapter name is already in use or not + text_encoder.load_adapter( + adapter_name=adapter_name, + adapter_state_dict=text_encoder_lora_state_dict, + peft_config=lora_config, + **peft_kwargs, + ) + + # scale LoRA layers with `lora_scale` + scale_lora_layers(text_encoder, weight=lora_scale) + + text_encoder.to(device=text_encoder.device, dtype=text_encoder.dtype) + + # Offload back. + if is_model_cpu_offload: + _pipeline.enable_model_cpu_offload() + elif is_sequential_cpu_offload: + _pipeline.enable_sequential_cpu_offload() + # Unsafe code /> + + @classmethod + # Copied from diffusers.loaders.lora_pipeline.StableDiffusionLoraLoaderMixin.save_lora_weights with unet->transformer + def save_lora_weights( + cls, + save_directory: Union[str, os.PathLike], + transformer_lora_layers: Dict[str, Union[torch.nn.Module, torch.Tensor]] = None, + text_encoder_lora_layers: Dict[str, torch.nn.Module] = None, + is_main_process: bool = True, + weight_name: str = None, + save_function: Callable = None, + safe_serialization: bool = True, + ): + r""" + Save the LoRA parameters corresponding to the UNet and text encoder. + + Arguments: + save_directory (`str` or `os.PathLike`): + Directory to save LoRA parameters to. Will be created if it doesn't exist. + transformer_lora_layers (`Dict[str, torch.nn.Module]` or `Dict[str, torch.Tensor]`): + State dict of the LoRA layers corresponding to the `transformer`. + text_encoder_lora_layers (`Dict[str, torch.nn.Module]` or `Dict[str, torch.Tensor]`): + State dict of the LoRA layers corresponding to the `text_encoder`. Must explicitly pass the text + encoder LoRA state dict because it comes from 🤗 Transformers. + is_main_process (`bool`, *optional*, defaults to `True`): + Whether the process calling this is the main process or not. Useful during distributed training and you + need to call this function on all processes. In this case, set `is_main_process=True` only on the main + process to avoid race conditions. + save_function (`Callable`): + The function to use to save the state dictionary. Useful during distributed training when you need to + replace `torch.save` with another method. Can be configured with the environment variable + `DIFFUSERS_SAVE_MODE`. + safe_serialization (`bool`, *optional*, defaults to `True`): + Whether to save the model using `safetensors` or the traditional PyTorch way with `pickle`. + """ + state_dict = {} + + if not (transformer_lora_layers or text_encoder_lora_layers): + raise ValueError("You must pass at least one of `transformer_lora_layers` and `text_encoder_lora_layers`.") + + if transformer_lora_layers: + state_dict.update(cls.pack_weights(transformer_lora_layers, cls.transformer_name)) + + if text_encoder_lora_layers: + state_dict.update(cls.pack_weights(text_encoder_lora_layers, cls.text_encoder_name)) + + # Save the model + cls.write_lora_layers( + state_dict=state_dict, + save_directory=save_directory, + is_main_process=is_main_process, + weight_name=weight_name, + save_function=save_function, + safe_serialization=safe_serialization, + ) + + def fuse_lora( + self, + components: List[str] = ["transformer", "text_encoder"], + lora_scale: float = 1.0, + safe_fusing: bool = False, + adapter_names: Optional[List[str]] = None, + **kwargs, + ): + r""" + Fuses the LoRA parameters into the original parameters of the corresponding blocks. + + + + This is an experimental API. + + + + Args: + components: (`List[str]`): List of LoRA-injectable components to fuse the LoRAs into. + lora_scale (`float`, defaults to 1.0): + Controls how much to influence the outputs with the LoRA parameters. + safe_fusing (`bool`, defaults to `False`): + Whether to check fused weights for NaN values before fusing and if values are NaN not fusing them. + adapter_names (`List[str]`, *optional*): + Adapter names to be used for fusing. If nothing is passed, all active adapters will be fused. + + Example: + + ```py + from diffusers import DiffusionPipeline + import torch + + pipeline = DiffusionPipeline.from_pretrained( + "stabilityai/stable-diffusion-xl-base-1.0", torch_dtype=torch.float16 + ).to("cuda") + pipeline.load_lora_weights("nerijs/pixel-art-xl", weight_name="pixel-art-xl.safetensors", adapter_name="pixel") + pipeline.fuse_lora(lora_scale=0.7) + ``` + """ + + transformer = getattr(self, self.transformer_name) if not hasattr(self, "transformer") else self.transformer + if ( + hasattr(transformer, "_transformer_norm_layers") + and isinstance(transformer._transformer_norm_layers, dict) + and len(transformer._transformer_norm_layers.keys()) > 0 + ): + logger.info( + "The provided state dict contains normalization layers in addition to LoRA layers. The normalization layers will be directly updated the state_dict of the transformer " + "as opposed to the LoRA layers that will co-exist separately until the 'fuse_lora()' method is called. That is to say, the normalization layers will always be directly " + "fused into the transformer and can only be unfused if `discard_original_layers=True` is passed." + ) + + super().fuse_lora( + components=components, lora_scale=lora_scale, safe_fusing=safe_fusing, adapter_names=adapter_names + ) + + def unfuse_lora(self, components: List[str] = ["transformer", "text_encoder"], **kwargs): + r""" + Reverses the effect of + [`pipe.fuse_lora()`](https://huggingface.co/docs/diffusers/main/en/api/loaders#diffusers.loaders.LoraBaseMixin.fuse_lora). + + + + This is an experimental API. + + + + Args: + components (`List[str]`): List of LoRA-injectable components to unfuse LoRA from. + """ + transformer = getattr(self, self.transformer_name) if not hasattr(self, "transformer") else self.transformer + if hasattr(transformer, "_transformer_norm_layers") and transformer._transformer_norm_layers: + transformer.load_state_dict(transformer._transformer_norm_layers, strict=False) + + super().unfuse_lora(components=components) + + # We override this here account for `_transformer_norm_layers`. + def unload_lora_weights(self): + super().unload_lora_weights() + + transformer = getattr(self, self.transformer_name) if not hasattr(self, "transformer") else self.transformer + if hasattr(transformer, "_transformer_norm_layers") and transformer._transformer_norm_layers: + transformer.load_state_dict(transformer._transformer_norm_layers, strict=False) + transformer._transformer_norm_layers = None + + @classmethod + def _maybe_expand_transformer_param_shape_or_error_( + cls, + transformer: torch.nn.Module, + lora_state_dict=None, + norm_state_dict=None, + prefix=None, + ) -> bool: + """ + Control LoRA expands the shape of the input layer from (3072, 64) to (3072, 128). This method handles that and + generalizes things a bit so that any parameter that needs expansion receives appropriate treatement. + """ + state_dict = {} + if lora_state_dict is not None: + state_dict.update(lora_state_dict) + if norm_state_dict is not None: + state_dict.update(norm_state_dict) + + # Remove prefix if present + prefix = prefix or cls.transformer_name + for key in list(state_dict.keys()): + if key.split(".")[0] == prefix: + state_dict[key[len(f"{prefix}.") :]] = state_dict.pop(key) + + # Expand transformer parameter shapes if they don't match lora + has_param_with_shape_update = False + is_peft_loaded = getattr(transformer, "peft_config", None) is not None + for name, module in transformer.named_modules(): + if isinstance(module, torch.nn.Linear): + module_weight = module.weight.data + module_bias = module.bias.data if module.bias is not None else None + bias = module_bias is not None + + lora_base_name = name.replace(".base_layer", "") if is_peft_loaded else name + lora_A_weight_name = f"{lora_base_name}.lora_A.weight" + lora_B_weight_name = f"{lora_base_name}.lora_B.weight" + if lora_A_weight_name not in state_dict: + continue + + in_features = state_dict[lora_A_weight_name].shape[1] + out_features = state_dict[lora_B_weight_name].shape[0] + + # This means there's no need for an expansion in the params, so we simply skip. + if tuple(module_weight.shape) == (out_features, in_features): + continue + + module_out_features, module_in_features = module_weight.shape + debug_message = "" + if in_features > module_in_features: + debug_message += ( + f'Expanding the nn.Linear input/output features for module="{name}" because the provided LoRA ' + f"checkpoint contains higher number of features than expected. The number of input_features will be " + f"expanded from {module_in_features} to {in_features}" + ) + if out_features > module_out_features: + debug_message += ( + ", and the number of output features will be " + f"expanded from {module_out_features} to {out_features}." + ) + else: + debug_message += "." + if debug_message: + logger.debug(debug_message) + + if out_features > module_out_features or in_features > module_in_features: + has_param_with_shape_update = True + parent_module_name, _, current_module_name = name.rpartition(".") + parent_module = transformer.get_submodule(parent_module_name) + + with torch.device("meta"): + expanded_module = torch.nn.Linear( + in_features, out_features, bias=bias, dtype=module_weight.dtype + ) + # Only weights are expanded and biases are not. This is because only the input dimensions + # are changed while the output dimensions remain the same. The shape of the weight tensor + # is (out_features, in_features), while the shape of bias tensor is (out_features,), which + # explains the reason why only weights are expanded. + new_weight = torch.zeros_like( + expanded_module.weight.data, device=module_weight.device, dtype=module_weight.dtype + ) + slices = tuple(slice(0, dim) for dim in module_weight.shape) + new_weight[slices] = module_weight + tmp_state_dict = {"weight": new_weight} + if module_bias is not None: + tmp_state_dict["bias"] = module_bias + expanded_module.load_state_dict(tmp_state_dict, strict=True, assign=True) + + setattr(parent_module, current_module_name, expanded_module) + + del tmp_state_dict + + if current_module_name in _MODULE_NAME_TO_ATTRIBUTE_MAP_FLUX: + attribute_name = _MODULE_NAME_TO_ATTRIBUTE_MAP_FLUX[current_module_name] + new_value = int(expanded_module.weight.data.shape[1]) + old_value = getattr(transformer.config, attribute_name) + setattr(transformer.config, attribute_name, new_value) + logger.info( + f"Set the {attribute_name} attribute of the model to {new_value} from {old_value}." + ) + + return has_param_with_shape_update + + @classmethod + def _maybe_expand_lora_state_dict(cls, transformer, lora_state_dict): + expanded_module_names = set() + transformer_state_dict = transformer.state_dict() + prefix = f"{cls.transformer_name}." + + lora_module_names = [ + key[: -len(".lora_A.weight")] for key in lora_state_dict if key.endswith(".lora_A.weight") + ] + lora_module_names = [name[len(prefix) :] for name in lora_module_names if name.startswith(prefix)] + lora_module_names = sorted(set(lora_module_names)) + transformer_module_names = sorted({name for name, _ in transformer.named_modules()}) + unexpected_modules = set(lora_module_names) - set(transformer_module_names) + if unexpected_modules: + logger.debug(f"Found unexpected modules: {unexpected_modules}. These will be ignored.") + + is_peft_loaded = getattr(transformer, "peft_config", None) is not None + for k in lora_module_names: + if k in unexpected_modules: + continue + + base_param_name = ( + f"{k.replace(prefix, '')}.base_layer.weight" if is_peft_loaded else f"{k.replace(prefix, '')}.weight" + ) + base_weight_param = transformer_state_dict[base_param_name] + lora_A_param = lora_state_dict[f"{prefix}{k}.lora_A.weight"] + + if base_weight_param.shape[1] > lora_A_param.shape[1]: + shape = (lora_A_param.shape[0], base_weight_param.shape[1]) + expanded_state_dict_weight = torch.zeros(shape, device=base_weight_param.device) + expanded_state_dict_weight[:, : lora_A_param.shape[1]].copy_(lora_A_param) + lora_state_dict[f"{prefix}{k}.lora_A.weight"] = expanded_state_dict_weight + expanded_module_names.add(k) + elif base_weight_param.shape[1] < lora_A_param.shape[1]: + raise NotImplementedError( + f"This LoRA param ({k}.lora_A.weight) has an incompatible shape {lora_A_param.shape}. Please open an issue to file for a feature request - https://github.com/huggingface/diffusers/issues/new." + ) + + if expanded_module_names: + logger.info( + f"The following LoRA modules were zero padded to match the state dict of {cls.transformer_name}: {expanded_module_names}. Please open an issue if you think this was unexpected - https://github.com/huggingface/diffusers/issues/new." + ) + + return lora_state_dict + + +# The reason why we subclass from `StableDiffusionLoraLoaderMixin` here is because Amused initially +# relied on `StableDiffusionLoraLoaderMixin` for its LoRA support. +class AmusedLoraLoaderMixin(StableDiffusionLoraLoaderMixin): + _lora_loadable_modules = ["transformer", "text_encoder"] + transformer_name = TRANSFORMER_NAME + text_encoder_name = TEXT_ENCODER_NAME + + @classmethod + # Copied from diffusers.loaders.lora_pipeline.FluxLoraLoaderMixin.load_lora_into_transformer with FluxTransformer2DModel->UVit2DModel + def load_lora_into_transformer( + cls, state_dict, network_alphas, transformer, adapter_name=None, _pipeline=None, low_cpu_mem_usage=False + ): + """ + This will load the LoRA layers specified in `state_dict` into `transformer`. + + Parameters: + state_dict (`dict`): + A standard state dict containing the lora layer parameters. The keys can either be indexed directly + into the unet or prefixed with an additional `unet` which can be used to distinguish between text + encoder lora layers. + network_alphas (`Dict[str, float]`): + The value of the network alpha used for stable learning and preventing underflow. This value has the + same meaning as the `--network_alpha` option in the kohya-ss trainer script. Refer to [this + link](https://github.com/darkstorm2150/sd-scripts/blob/main/docs/train_network_README-en.md#execute-learning). + transformer (`UVit2DModel`): + The Transformer model to load the LoRA layers into. + adapter_name (`str`, *optional*): + Adapter name to be used for referencing the loaded adapter model. If not specified, it will use + `default_{i}` where i is the total number of adapters being loaded. + low_cpu_mem_usage (`bool`, *optional*): + Speed up model loading by only loading the pretrained LoRA weights and not initializing the random + weights. + """ + if low_cpu_mem_usage and not is_peft_version(">=", "0.13.1"): + raise ValueError( + "`low_cpu_mem_usage=True` is not compatible with this `peft` version. Please update it with `pip install -U peft`." + ) + + # Load the layers corresponding to transformer. + keys = list(state_dict.keys()) + transformer_present = any(key.startswith(cls.transformer_name) for key in keys) + if transformer_present: + logger.info(f"Loading {cls.transformer_name}.") + transformer.load_lora_adapter( + state_dict, + network_alphas=network_alphas, + adapter_name=adapter_name, + _pipeline=_pipeline, + low_cpu_mem_usage=low_cpu_mem_usage, + ) + + @classmethod + # Copied from diffusers.loaders.lora_pipeline.StableDiffusionLoraLoaderMixin.load_lora_into_text_encoder + def load_lora_into_text_encoder( + cls, + state_dict, + network_alphas, + text_encoder, + prefix=None, + lora_scale=1.0, + adapter_name=None, + _pipeline=None, + low_cpu_mem_usage=False, + ): + """ + This will load the LoRA layers specified in `state_dict` into `text_encoder` + + Parameters: + state_dict (`dict`): + A standard state dict containing the lora layer parameters. The key should be prefixed with an + additional `text_encoder` to distinguish between unet lora layers. + network_alphas (`Dict[str, float]`): + The value of the network alpha used for stable learning and preventing underflow. This value has the + same meaning as the `--network_alpha` option in the kohya-ss trainer script. Refer to [this + link](https://github.com/darkstorm2150/sd-scripts/blob/main/docs/train_network_README-en.md#execute-learning). + text_encoder (`CLIPTextModel`): + The text encoder model to load the LoRA layers into. + prefix (`str`): + Expected prefix of the `text_encoder` in the `state_dict`. + lora_scale (`float`): + How much to scale the output of the lora linear layer before it is added with the output of the regular + lora layer. + adapter_name (`str`, *optional*): + Adapter name to be used for referencing the loaded adapter model. If not specified, it will use + `default_{i}` where i is the total number of adapters being loaded. + low_cpu_mem_usage (`bool`, *optional*): + Speed up model loading by only loading the pretrained LoRA weights and not initializing the random + weights. + """ + if not USE_PEFT_BACKEND: + raise ValueError("PEFT backend is required for this method.") + + peft_kwargs = {} + if low_cpu_mem_usage: + if not is_peft_version(">=", "0.13.1"): + raise ValueError( + "`low_cpu_mem_usage=True` is not compatible with this `peft` version. Please update it with `pip install -U peft`." + ) + if not is_transformers_version(">", "4.45.2"): + # Note from sayakpaul: It's not in `transformers` stable yet. + # https://github.com/huggingface/transformers/pull/33725/ + raise ValueError( + "`low_cpu_mem_usage=True` is not compatible with this `transformers` version. Please update it with `pip install -U transformers`." + ) + peft_kwargs["low_cpu_mem_usage"] = low_cpu_mem_usage + + from peft import LoraConfig + + # If the serialization format is new (introduced in https://github.com/huggingface/diffusers/pull/2918), + # then the `state_dict` keys should have `self.unet_name` and/or `self.text_encoder_name` as + # their prefixes. + keys = list(state_dict.keys()) + prefix = cls.text_encoder_name if prefix is None else prefix + + # Safe prefix to check with. + if any(cls.text_encoder_name in key for key in keys): + # Load the layers corresponding to text encoder and make necessary adjustments. + text_encoder_keys = [k for k in keys if k.startswith(prefix) and k.split(".")[0] == prefix] + text_encoder_lora_state_dict = { + k.replace(f"{prefix}.", ""): v for k, v in state_dict.items() if k in text_encoder_keys + } + + if len(text_encoder_lora_state_dict) > 0: + logger.info(f"Loading {prefix}.") + rank = {} + text_encoder_lora_state_dict = convert_state_dict_to_diffusers(text_encoder_lora_state_dict) + + # convert state dict + text_encoder_lora_state_dict = convert_state_dict_to_peft(text_encoder_lora_state_dict) + + for name, _ in text_encoder_attn_modules(text_encoder): + for module in ("out_proj", "q_proj", "k_proj", "v_proj"): + rank_key = f"{name}.{module}.lora_B.weight" + if rank_key not in text_encoder_lora_state_dict: + continue + rank[rank_key] = text_encoder_lora_state_dict[rank_key].shape[1] + + for name, _ in text_encoder_mlp_modules(text_encoder): + for module in ("fc1", "fc2"): + rank_key = f"{name}.{module}.lora_B.weight" + if rank_key not in text_encoder_lora_state_dict: + continue + rank[rank_key] = text_encoder_lora_state_dict[rank_key].shape[1] + + if network_alphas is not None: + alpha_keys = [ + k for k in network_alphas.keys() if k.startswith(prefix) and k.split(".")[0] == prefix + ] + network_alphas = { + k.replace(f"{prefix}.", ""): v for k, v in network_alphas.items() if k in alpha_keys + } + + lora_config_kwargs = get_peft_kwargs(rank, network_alphas, text_encoder_lora_state_dict, is_unet=False) + + if "use_dora" in lora_config_kwargs: + if lora_config_kwargs["use_dora"]: + if is_peft_version("<", "0.9.0"): + raise ValueError( + "You need `peft` 0.9.0 at least to use DoRA-enabled LoRAs. Please upgrade your installation of `peft`." + ) + else: + if is_peft_version("<", "0.9.0"): + lora_config_kwargs.pop("use_dora") + + if "lora_bias" in lora_config_kwargs: + if lora_config_kwargs["lora_bias"]: + if is_peft_version("<=", "0.13.2"): + raise ValueError( + "You need `peft` 0.14.0 at least to use `bias` in LoRAs. Please upgrade your installation of `peft`." + ) + else: + if is_peft_version("<=", "0.13.2"): + lora_config_kwargs.pop("lora_bias") + + lora_config = LoraConfig(**lora_config_kwargs) + + # adapter_name + if adapter_name is None: + adapter_name = get_adapter_name(text_encoder) + + is_model_cpu_offload, is_sequential_cpu_offload = cls._optionally_disable_offloading(_pipeline) + + # inject LoRA layers and load the state dict + # in transformers we automatically check whether the adapter name is already in use or not + text_encoder.load_adapter( + adapter_name=adapter_name, + adapter_state_dict=text_encoder_lora_state_dict, + peft_config=lora_config, + **peft_kwargs, + ) + + # scale LoRA layers with `lora_scale` + scale_lora_layers(text_encoder, weight=lora_scale) + + text_encoder.to(device=text_encoder.device, dtype=text_encoder.dtype) + + # Offload back. + if is_model_cpu_offload: + _pipeline.enable_model_cpu_offload() + elif is_sequential_cpu_offload: + _pipeline.enable_sequential_cpu_offload() + # Unsafe code /> + + @classmethod + def save_lora_weights( + cls, + save_directory: Union[str, os.PathLike], + text_encoder_lora_layers: Dict[str, torch.nn.Module] = None, + transformer_lora_layers: Dict[str, torch.nn.Module] = None, + is_main_process: bool = True, + weight_name: str = None, + save_function: Callable = None, + safe_serialization: bool = True, + ): + r""" + Save the LoRA parameters corresponding to the UNet and text encoder. + + Arguments: + save_directory (`str` or `os.PathLike`): + Directory to save LoRA parameters to. Will be created if it doesn't exist. + unet_lora_layers (`Dict[str, torch.nn.Module]` or `Dict[str, torch.Tensor]`): + State dict of the LoRA layers corresponding to the `unet`. + text_encoder_lora_layers (`Dict[str, torch.nn.Module]` or `Dict[str, torch.Tensor]`): + State dict of the LoRA layers corresponding to the `text_encoder`. Must explicitly pass the text + encoder LoRA state dict because it comes from 🤗 Transformers. + is_main_process (`bool`, *optional*, defaults to `True`): + Whether the process calling this is the main process or not. Useful during distributed training and you + need to call this function on all processes. In this case, set `is_main_process=True` only on the main + process to avoid race conditions. + save_function (`Callable`): + The function to use to save the state dictionary. Useful during distributed training when you need to + replace `torch.save` with another method. Can be configured with the environment variable + `DIFFUSERS_SAVE_MODE`. + safe_serialization (`bool`, *optional*, defaults to `True`): + Whether to save the model using `safetensors` or the traditional PyTorch way with `pickle`. + """ + state_dict = {} + + if not (transformer_lora_layers or text_encoder_lora_layers): + raise ValueError("You must pass at least one of `transformer_lora_layers` or `text_encoder_lora_layers`.") + + if transformer_lora_layers: + state_dict.update(cls.pack_weights(transformer_lora_layers, cls.transformer_name)) + + if text_encoder_lora_layers: + state_dict.update(cls.pack_weights(text_encoder_lora_layers, cls.text_encoder_name)) + + # Save the model + cls.write_lora_layers( + state_dict=state_dict, + save_directory=save_directory, + is_main_process=is_main_process, + weight_name=weight_name, + save_function=save_function, + safe_serialization=safe_serialization, + ) + + +class CogVideoXLoraLoaderMixin(LoraBaseMixin): + r""" + Load LoRA layers into [`CogVideoXTransformer3DModel`]. Specific to [`CogVideoXPipeline`]. + """ + + _lora_loadable_modules = ["transformer"] + transformer_name = TRANSFORMER_NAME + + @classmethod + @validate_hf_hub_args + # Copied from diffusers.loaders.lora_pipeline.SD3LoraLoaderMixin.lora_state_dict + def lora_state_dict( + cls, + pretrained_model_name_or_path_or_dict: Union[str, Dict[str, torch.Tensor]], + **kwargs, + ): + r""" + Return state dict for lora weights and the network alphas. + + + + We support loading A1111 formatted LoRA checkpoints in a limited capacity. + + This function is experimental and might change in the future. + + + + Parameters: + pretrained_model_name_or_path_or_dict (`str` or `os.PathLike` or `dict`): + Can be either: + + - A string, the *model id* (for example `google/ddpm-celebahq-256`) of a pretrained model hosted on + the Hub. + - A path to a *directory* (for example `./my_model_directory`) containing the model weights saved + with [`ModelMixin.save_pretrained`]. + - A [torch state + dict](https://pytorch.org/tutorials/beginner/saving_loading_models.html#what-is-a-state-dict). + + cache_dir (`Union[str, os.PathLike]`, *optional*): + Path to a directory where a downloaded pretrained model configuration is cached if the standard cache + is not used. + force_download (`bool`, *optional*, defaults to `False`): + Whether or not to force the (re-)download of the model weights and configuration files, overriding the + cached versions if they exist. + + proxies (`Dict[str, str]`, *optional*): + A dictionary of proxy servers to use by protocol or endpoint, for example, `{'http': 'foo.bar:3128', + 'http://hostname': 'foo.bar:4012'}`. The proxies are used on each request. + local_files_only (`bool`, *optional*, defaults to `False`): + Whether to only load local model weights and configuration files or not. If set to `True`, the model + won't be downloaded from the Hub. + token (`str` or *bool*, *optional*): + The token to use as HTTP bearer authorization for remote files. If `True`, the token generated from + `diffusers-cli login` (stored in `~/.huggingface`) is used. + revision (`str`, *optional*, defaults to `"main"`): + The specific model version to use. It can be a branch name, a tag name, a commit id, or any identifier + allowed by Git. + subfolder (`str`, *optional*, defaults to `""`): + The subfolder location of a model file within a larger model repository on the Hub or locally. + + """ + # Load the main state dict first which has the LoRA layers for either of + # transformer and text encoder or both. + cache_dir = kwargs.pop("cache_dir", None) + force_download = kwargs.pop("force_download", False) + proxies = kwargs.pop("proxies", None) + local_files_only = kwargs.pop("local_files_only", None) + token = kwargs.pop("token", None) + revision = kwargs.pop("revision", None) + subfolder = kwargs.pop("subfolder", None) + weight_name = kwargs.pop("weight_name", None) + use_safetensors = kwargs.pop("use_safetensors", None) + + allow_pickle = False + if use_safetensors is None: + use_safetensors = True + allow_pickle = True + + user_agent = { + "file_type": "attn_procs_weights", + "framework": "pytorch", + } + + state_dict = _fetch_state_dict( + pretrained_model_name_or_path_or_dict=pretrained_model_name_or_path_or_dict, + weight_name=weight_name, + use_safetensors=use_safetensors, + local_files_only=local_files_only, + cache_dir=cache_dir, + force_download=force_download, + proxies=proxies, + token=token, + revision=revision, + subfolder=subfolder, + user_agent=user_agent, + allow_pickle=allow_pickle, + ) + + is_dora_scale_present = any("dora_scale" in k for k in state_dict) + if is_dora_scale_present: + warn_msg = "It seems like you are using a DoRA checkpoint that is not compatible in Diffusers at the moment. So, we are going to filter out the keys associated to 'dora_scale` from the state dict. If you think this is a mistake please open an issue https://github.com/huggingface/diffusers/issues/new." + logger.warning(warn_msg) + state_dict = {k: v for k, v in state_dict.items() if "dora_scale" not in k} + + return state_dict + + def load_lora_weights( + self, pretrained_model_name_or_path_or_dict: Union[str, Dict[str, torch.Tensor]], adapter_name=None, **kwargs + ): + """ + Load LoRA weights specified in `pretrained_model_name_or_path_or_dict` into `self.transformer` and + `self.text_encoder`. All kwargs are forwarded to `self.lora_state_dict`. See + [`~loaders.StableDiffusionLoraLoaderMixin.lora_state_dict`] for more details on how the state dict is loaded. + See [`~loaders.StableDiffusionLoraLoaderMixin.load_lora_into_transformer`] for more details on how the state + dict is loaded into `self.transformer`. + + Parameters: + pretrained_model_name_or_path_or_dict (`str` or `os.PathLike` or `dict`): + See [`~loaders.StableDiffusionLoraLoaderMixin.lora_state_dict`]. + adapter_name (`str`, *optional*): + Adapter name to be used for referencing the loaded adapter model. If not specified, it will use + `default_{i}` where i is the total number of adapters being loaded. + low_cpu_mem_usage (`bool`, *optional*): + Speed up model loading by only loading the pretrained LoRA weights and not initializing the random + weights. + kwargs (`dict`, *optional*): + See [`~loaders.StableDiffusionLoraLoaderMixin.lora_state_dict`]. + """ + if not USE_PEFT_BACKEND: + raise ValueError("PEFT backend is required for this method.") + + low_cpu_mem_usage = kwargs.pop("low_cpu_mem_usage", _LOW_CPU_MEM_USAGE_DEFAULT_LORA) + if low_cpu_mem_usage and is_peft_version("<", "0.13.0"): + raise ValueError( + "`low_cpu_mem_usage=True` is not compatible with this `peft` version. Please update it with `pip install -U peft`." + ) + + # if a dict is passed, copy it instead of modifying it inplace + if isinstance(pretrained_model_name_or_path_or_dict, dict): + pretrained_model_name_or_path_or_dict = pretrained_model_name_or_path_or_dict.copy() + + # First, ensure that the checkpoint is a compatible one and can be successfully loaded. + state_dict = self.lora_state_dict(pretrained_model_name_or_path_or_dict, **kwargs) + + is_correct_format = all("lora" in key for key in state_dict.keys()) + if not is_correct_format: + raise ValueError("Invalid LoRA checkpoint.") + + self.load_lora_into_transformer( + state_dict, + transformer=getattr(self, self.transformer_name) if not hasattr(self, "transformer") else self.transformer, + adapter_name=adapter_name, + _pipeline=self, + low_cpu_mem_usage=low_cpu_mem_usage, + ) + + @classmethod + # Copied from diffusers.loaders.lora_pipeline.SD3LoraLoaderMixin.load_lora_into_transformer with SD3Transformer2DModel->CogVideoXTransformer3DModel + def load_lora_into_transformer( + cls, state_dict, transformer, adapter_name=None, _pipeline=None, low_cpu_mem_usage=False + ): + """ + This will load the LoRA layers specified in `state_dict` into `transformer`. + + Parameters: + state_dict (`dict`): + A standard state dict containing the lora layer parameters. The keys can either be indexed directly + into the unet or prefixed with an additional `unet` which can be used to distinguish between text + encoder lora layers. + transformer (`CogVideoXTransformer3DModel`): + The Transformer model to load the LoRA layers into. + adapter_name (`str`, *optional*): + Adapter name to be used for referencing the loaded adapter model. If not specified, it will use + `default_{i}` where i is the total number of adapters being loaded. + low_cpu_mem_usage (`bool`, *optional*): + Speed up model loading by only loading the pretrained LoRA weights and not initializing the random + weights. + """ + if low_cpu_mem_usage and is_peft_version("<", "0.13.0"): + raise ValueError( + "`low_cpu_mem_usage=True` is not compatible with this `peft` version. Please update it with `pip install -U peft`." + ) + + # Load the layers corresponding to transformer. + logger.info(f"Loading {cls.transformer_name}.") + transformer.load_lora_adapter( + state_dict, + network_alphas=None, + adapter_name=adapter_name, + _pipeline=_pipeline, + low_cpu_mem_usage=low_cpu_mem_usage, + ) + + @classmethod + # Adapted from diffusers.loaders.lora_pipeline.StableDiffusionLoraLoaderMixin.save_lora_weights without support for text encoder + def save_lora_weights( + cls, + save_directory: Union[str, os.PathLike], + transformer_lora_layers: Dict[str, Union[torch.nn.Module, torch.Tensor]] = None, + is_main_process: bool = True, + weight_name: str = None, + save_function: Callable = None, + safe_serialization: bool = True, + ): + r""" + Save the LoRA parameters corresponding to the UNet and text encoder. + + Arguments: + save_directory (`str` or `os.PathLike`): + Directory to save LoRA parameters to. Will be created if it doesn't exist. + transformer_lora_layers (`Dict[str, torch.nn.Module]` or `Dict[str, torch.Tensor]`): + State dict of the LoRA layers corresponding to the `transformer`. + is_main_process (`bool`, *optional*, defaults to `True`): + Whether the process calling this is the main process or not. Useful during distributed training and you + need to call this function on all processes. In this case, set `is_main_process=True` only on the main + process to avoid race conditions. + save_function (`Callable`): + The function to use to save the state dictionary. Useful during distributed training when you need to + replace `torch.save` with another method. Can be configured with the environment variable + `DIFFUSERS_SAVE_MODE`. + safe_serialization (`bool`, *optional*, defaults to `True`): + Whether to save the model using `safetensors` or the traditional PyTorch way with `pickle`. + """ + state_dict = {} + + if not transformer_lora_layers: + raise ValueError("You must pass `transformer_lora_layers`.") + + if transformer_lora_layers: + state_dict.update(cls.pack_weights(transformer_lora_layers, cls.transformer_name)) + + # Save the model + cls.write_lora_layers( + state_dict=state_dict, + save_directory=save_directory, + is_main_process=is_main_process, + weight_name=weight_name, + save_function=save_function, + safe_serialization=safe_serialization, + ) + + # Copied from diffusers.loaders.lora_pipeline.StableDiffusionLoraLoaderMixin.fuse_lora with unet->transformer + def fuse_lora( + self, + components: List[str] = ["transformer", "text_encoder"], + lora_scale: float = 1.0, + safe_fusing: bool = False, + adapter_names: Optional[List[str]] = None, + **kwargs, + ): + r""" + Fuses the LoRA parameters into the original parameters of the corresponding blocks. + + + + This is an experimental API. + + + + Args: + components: (`List[str]`): List of LoRA-injectable components to fuse the LoRAs into. + lora_scale (`float`, defaults to 1.0): + Controls how much to influence the outputs with the LoRA parameters. + safe_fusing (`bool`, defaults to `False`): + Whether to check fused weights for NaN values before fusing and if values are NaN not fusing them. + adapter_names (`List[str]`, *optional*): + Adapter names to be used for fusing. If nothing is passed, all active adapters will be fused. + + Example: + + ```py + from diffusers import DiffusionPipeline + import torch + + pipeline = DiffusionPipeline.from_pretrained( + "stabilityai/stable-diffusion-xl-base-1.0", torch_dtype=torch.float16 + ).to("cuda") + pipeline.load_lora_weights("nerijs/pixel-art-xl", weight_name="pixel-art-xl.safetensors", adapter_name="pixel") + pipeline.fuse_lora(lora_scale=0.7) + ``` + """ + super().fuse_lora( + components=components, lora_scale=lora_scale, safe_fusing=safe_fusing, adapter_names=adapter_names + ) + + # Copied from diffusers.loaders.lora_pipeline.StableDiffusionLoraLoaderMixin.unfuse_lora with unet->transformer + def unfuse_lora(self, components: List[str] = ["transformer", "text_encoder"], **kwargs): + r""" + Reverses the effect of + [`pipe.fuse_lora()`](https://huggingface.co/docs/diffusers/main/en/api/loaders#diffusers.loaders.LoraBaseMixin.fuse_lora). + + + + This is an experimental API. + + + + Args: + components (`List[str]`): List of LoRA-injectable components to unfuse LoRA from. + unfuse_transformer (`bool`, defaults to `True`): Whether to unfuse the UNet LoRA parameters. + unfuse_text_encoder (`bool`, defaults to `True`): + Whether to unfuse the text encoder LoRA parameters. If the text encoder wasn't monkey-patched with the + LoRA parameters then it won't have any effect. + """ + super().unfuse_lora(components=components) + + +class Mochi1LoraLoaderMixin(LoraBaseMixin): + r""" + Load LoRA layers into [`MochiTransformer3DModel`]. Specific to [`MochiPipeline`]. + """ + + _lora_loadable_modules = ["transformer"] + transformer_name = TRANSFORMER_NAME + + @classmethod + @validate_hf_hub_args + # Copied from diffusers.loaders.lora_pipeline.SD3LoraLoaderMixin.lora_state_dict + def lora_state_dict( + cls, + pretrained_model_name_or_path_or_dict: Union[str, Dict[str, torch.Tensor]], + **kwargs, + ): + r""" + Return state dict for lora weights and the network alphas. + + + + We support loading A1111 formatted LoRA checkpoints in a limited capacity. + + This function is experimental and might change in the future. + + + + Parameters: + pretrained_model_name_or_path_or_dict (`str` or `os.PathLike` or `dict`): + Can be either: + + - A string, the *model id* (for example `google/ddpm-celebahq-256`) of a pretrained model hosted on + the Hub. + - A path to a *directory* (for example `./my_model_directory`) containing the model weights saved + with [`ModelMixin.save_pretrained`]. + - A [torch state + dict](https://pytorch.org/tutorials/beginner/saving_loading_models.html#what-is-a-state-dict). + + cache_dir (`Union[str, os.PathLike]`, *optional*): + Path to a directory where a downloaded pretrained model configuration is cached if the standard cache + is not used. + force_download (`bool`, *optional*, defaults to `False`): + Whether or not to force the (re-)download of the model weights and configuration files, overriding the + cached versions if they exist. + + proxies (`Dict[str, str]`, *optional*): + A dictionary of proxy servers to use by protocol or endpoint, for example, `{'http': 'foo.bar:3128', + 'http://hostname': 'foo.bar:4012'}`. The proxies are used on each request. + local_files_only (`bool`, *optional*, defaults to `False`): + Whether to only load local model weights and configuration files or not. If set to `True`, the model + won't be downloaded from the Hub. + token (`str` or *bool*, *optional*): + The token to use as HTTP bearer authorization for remote files. If `True`, the token generated from + `diffusers-cli login` (stored in `~/.huggingface`) is used. + revision (`str`, *optional*, defaults to `"main"`): + The specific model version to use. It can be a branch name, a tag name, a commit id, or any identifier + allowed by Git. + subfolder (`str`, *optional*, defaults to `""`): + The subfolder location of a model file within a larger model repository on the Hub or locally. + + """ + # Load the main state dict first which has the LoRA layers for either of + # transformer and text encoder or both. + cache_dir = kwargs.pop("cache_dir", None) + force_download = kwargs.pop("force_download", False) + proxies = kwargs.pop("proxies", None) + local_files_only = kwargs.pop("local_files_only", None) + token = kwargs.pop("token", None) + revision = kwargs.pop("revision", None) + subfolder = kwargs.pop("subfolder", None) + weight_name = kwargs.pop("weight_name", None) + use_safetensors = kwargs.pop("use_safetensors", None) + + allow_pickle = False + if use_safetensors is None: + use_safetensors = True + allow_pickle = True + + user_agent = { + "file_type": "attn_procs_weights", + "framework": "pytorch", + } + + state_dict = _fetch_state_dict( + pretrained_model_name_or_path_or_dict=pretrained_model_name_or_path_or_dict, + weight_name=weight_name, + use_safetensors=use_safetensors, + local_files_only=local_files_only, + cache_dir=cache_dir, + force_download=force_download, + proxies=proxies, + token=token, + revision=revision, + subfolder=subfolder, + user_agent=user_agent, + allow_pickle=allow_pickle, + ) + + is_dora_scale_present = any("dora_scale" in k for k in state_dict) + if is_dora_scale_present: + warn_msg = "It seems like you are using a DoRA checkpoint that is not compatible in Diffusers at the moment. So, we are going to filter out the keys associated to 'dora_scale` from the state dict. If you think this is a mistake please open an issue https://github.com/huggingface/diffusers/issues/new." + logger.warning(warn_msg) + state_dict = {k: v for k, v in state_dict.items() if "dora_scale" not in k} + + return state_dict + + # Copied from diffusers.loaders.lora_pipeline.CogVideoXLoraLoaderMixin.load_lora_weights + def load_lora_weights( + self, pretrained_model_name_or_path_or_dict: Union[str, Dict[str, torch.Tensor]], adapter_name=None, **kwargs + ): + """ + Load LoRA weights specified in `pretrained_model_name_or_path_or_dict` into `self.transformer` and + `self.text_encoder`. All kwargs are forwarded to `self.lora_state_dict`. See + [`~loaders.StableDiffusionLoraLoaderMixin.lora_state_dict`] for more details on how the state dict is loaded. + See [`~loaders.StableDiffusionLoraLoaderMixin.load_lora_into_transformer`] for more details on how the state + dict is loaded into `self.transformer`. + + Parameters: + pretrained_model_name_or_path_or_dict (`str` or `os.PathLike` or `dict`): + See [`~loaders.StableDiffusionLoraLoaderMixin.lora_state_dict`]. + adapter_name (`str`, *optional*): + Adapter name to be used for referencing the loaded adapter model. If not specified, it will use + `default_{i}` where i is the total number of adapters being loaded. + low_cpu_mem_usage (`bool`, *optional*): + Speed up model loading by only loading the pretrained LoRA weights and not initializing the random + weights. + kwargs (`dict`, *optional*): + See [`~loaders.StableDiffusionLoraLoaderMixin.lora_state_dict`]. + """ + if not USE_PEFT_BACKEND: + raise ValueError("PEFT backend is required for this method.") + + low_cpu_mem_usage = kwargs.pop("low_cpu_mem_usage", _LOW_CPU_MEM_USAGE_DEFAULT_LORA) + if low_cpu_mem_usage and is_peft_version("<", "0.13.0"): + raise ValueError( + "`low_cpu_mem_usage=True` is not compatible with this `peft` version. Please update it with `pip install -U peft`." + ) + + # if a dict is passed, copy it instead of modifying it inplace + if isinstance(pretrained_model_name_or_path_or_dict, dict): + pretrained_model_name_or_path_or_dict = pretrained_model_name_or_path_or_dict.copy() + + # First, ensure that the checkpoint is a compatible one and can be successfully loaded. + state_dict = self.lora_state_dict(pretrained_model_name_or_path_or_dict, **kwargs) + + is_correct_format = all("lora" in key for key in state_dict.keys()) + if not is_correct_format: + raise ValueError("Invalid LoRA checkpoint.") + + self.load_lora_into_transformer( + state_dict, + transformer=getattr(self, self.transformer_name) if not hasattr(self, "transformer") else self.transformer, + adapter_name=adapter_name, + _pipeline=self, + low_cpu_mem_usage=low_cpu_mem_usage, + ) + + @classmethod + # Copied from diffusers.loaders.lora_pipeline.SD3LoraLoaderMixin.load_lora_into_transformer with SD3Transformer2DModel->MochiTransformer3DModel + def load_lora_into_transformer( + cls, state_dict, transformer, adapter_name=None, _pipeline=None, low_cpu_mem_usage=False + ): + """ + This will load the LoRA layers specified in `state_dict` into `transformer`. + + Parameters: + state_dict (`dict`): + A standard state dict containing the lora layer parameters. The keys can either be indexed directly + into the unet or prefixed with an additional `unet` which can be used to distinguish between text + encoder lora layers. + transformer (`MochiTransformer3DModel`): + The Transformer model to load the LoRA layers into. + adapter_name (`str`, *optional*): + Adapter name to be used for referencing the loaded adapter model. If not specified, it will use + `default_{i}` where i is the total number of adapters being loaded. + low_cpu_mem_usage (`bool`, *optional*): + Speed up model loading by only loading the pretrained LoRA weights and not initializing the random + weights. + """ + if low_cpu_mem_usage and is_peft_version("<", "0.13.0"): + raise ValueError( + "`low_cpu_mem_usage=True` is not compatible with this `peft` version. Please update it with `pip install -U peft`." + ) + + # Load the layers corresponding to transformer. + logger.info(f"Loading {cls.transformer_name}.") + transformer.load_lora_adapter( + state_dict, + network_alphas=None, + adapter_name=adapter_name, + _pipeline=_pipeline, + low_cpu_mem_usage=low_cpu_mem_usage, + ) + + @classmethod + # Copied from diffusers.loaders.lora_pipeline.CogVideoXLoraLoaderMixin.save_lora_weights + def save_lora_weights( + cls, + save_directory: Union[str, os.PathLike], + transformer_lora_layers: Dict[str, Union[torch.nn.Module, torch.Tensor]] = None, + is_main_process: bool = True, + weight_name: str = None, + save_function: Callable = None, + safe_serialization: bool = True, + ): + r""" + Save the LoRA parameters corresponding to the UNet and text encoder. + + Arguments: + save_directory (`str` or `os.PathLike`): + Directory to save LoRA parameters to. Will be created if it doesn't exist. + transformer_lora_layers (`Dict[str, torch.nn.Module]` or `Dict[str, torch.Tensor]`): + State dict of the LoRA layers corresponding to the `transformer`. + is_main_process (`bool`, *optional*, defaults to `True`): + Whether the process calling this is the main process or not. Useful during distributed training and you + need to call this function on all processes. In this case, set `is_main_process=True` only on the main + process to avoid race conditions. + save_function (`Callable`): + The function to use to save the state dictionary. Useful during distributed training when you need to + replace `torch.save` with another method. Can be configured with the environment variable + `DIFFUSERS_SAVE_MODE`. + safe_serialization (`bool`, *optional*, defaults to `True`): + Whether to save the model using `safetensors` or the traditional PyTorch way with `pickle`. + """ + state_dict = {} + + if not transformer_lora_layers: + raise ValueError("You must pass `transformer_lora_layers`.") + + if transformer_lora_layers: + state_dict.update(cls.pack_weights(transformer_lora_layers, cls.transformer_name)) + + # Save the model + cls.write_lora_layers( + state_dict=state_dict, + save_directory=save_directory, + is_main_process=is_main_process, + weight_name=weight_name, + save_function=save_function, + safe_serialization=safe_serialization, + ) + + # Copied from diffusers.loaders.lora_pipeline.StableDiffusionLoraLoaderMixin.fuse_lora with unet->transformer + def fuse_lora( + self, + components: List[str] = ["transformer", "text_encoder"], + lora_scale: float = 1.0, + safe_fusing: bool = False, + adapter_names: Optional[List[str]] = None, + **kwargs, + ): + r""" + Fuses the LoRA parameters into the original parameters of the corresponding blocks. + + + + This is an experimental API. + + + + Args: + components: (`List[str]`): List of LoRA-injectable components to fuse the LoRAs into. + lora_scale (`float`, defaults to 1.0): + Controls how much to influence the outputs with the LoRA parameters. + safe_fusing (`bool`, defaults to `False`): + Whether to check fused weights for NaN values before fusing and if values are NaN not fusing them. + adapter_names (`List[str]`, *optional*): + Adapter names to be used for fusing. If nothing is passed, all active adapters will be fused. + + Example: + + ```py + from diffusers import DiffusionPipeline + import torch + + pipeline = DiffusionPipeline.from_pretrained( + "stabilityai/stable-diffusion-xl-base-1.0", torch_dtype=torch.float16 + ).to("cuda") + pipeline.load_lora_weights("nerijs/pixel-art-xl", weight_name="pixel-art-xl.safetensors", adapter_name="pixel") + pipeline.fuse_lora(lora_scale=0.7) + ``` + """ + super().fuse_lora( + components=components, lora_scale=lora_scale, safe_fusing=safe_fusing, adapter_names=adapter_names + ) + + # Copied from diffusers.loaders.lora_pipeline.StableDiffusionLoraLoaderMixin.unfuse_lora with unet->transformer + def unfuse_lora(self, components: List[str] = ["transformer", "text_encoder"], **kwargs): + r""" + Reverses the effect of + [`pipe.fuse_lora()`](https://huggingface.co/docs/diffusers/main/en/api/loaders#diffusers.loaders.LoraBaseMixin.fuse_lora). + + + + This is an experimental API. + + + + Args: + components (`List[str]`): List of LoRA-injectable components to unfuse LoRA from. + unfuse_transformer (`bool`, defaults to `True`): Whether to unfuse the UNet LoRA parameters. + unfuse_text_encoder (`bool`, defaults to `True`): + Whether to unfuse the text encoder LoRA parameters. If the text encoder wasn't monkey-patched with the + LoRA parameters then it won't have any effect. + """ + super().unfuse_lora(components=components) + + +class LTXVideoLoraLoaderMixin(LoraBaseMixin): + r""" + Load LoRA layers into [`LTXVideoTransformer3DModel`]. Specific to [`LTXPipeline`]. + """ + + _lora_loadable_modules = ["transformer"] + transformer_name = TRANSFORMER_NAME + + @classmethod + @validate_hf_hub_args + # Copied from diffusers.loaders.lora_pipeline.CogVideoXLoraLoaderMixin.lora_state_dict + def lora_state_dict( + cls, + pretrained_model_name_or_path_or_dict: Union[str, Dict[str, torch.Tensor]], + **kwargs, + ): + r""" + Return state dict for lora weights and the network alphas. + + + + We support loading A1111 formatted LoRA checkpoints in a limited capacity. + + This function is experimental and might change in the future. + + + + Parameters: + pretrained_model_name_or_path_or_dict (`str` or `os.PathLike` or `dict`): + Can be either: + + - A string, the *model id* (for example `google/ddpm-celebahq-256`) of a pretrained model hosted on + the Hub. + - A path to a *directory* (for example `./my_model_directory`) containing the model weights saved + with [`ModelMixin.save_pretrained`]. + - A [torch state + dict](https://pytorch.org/tutorials/beginner/saving_loading_models.html#what-is-a-state-dict). + + cache_dir (`Union[str, os.PathLike]`, *optional*): + Path to a directory where a downloaded pretrained model configuration is cached if the standard cache + is not used. + force_download (`bool`, *optional*, defaults to `False`): + Whether or not to force the (re-)download of the model weights and configuration files, overriding the + cached versions if they exist. + + proxies (`Dict[str, str]`, *optional*): + A dictionary of proxy servers to use by protocol or endpoint, for example, `{'http': 'foo.bar:3128', + 'http://hostname': 'foo.bar:4012'}`. The proxies are used on each request. + local_files_only (`bool`, *optional*, defaults to `False`): + Whether to only load local model weights and configuration files or not. If set to `True`, the model + won't be downloaded from the Hub. + token (`str` or *bool*, *optional*): + The token to use as HTTP bearer authorization for remote files. If `True`, the token generated from + `diffusers-cli login` (stored in `~/.huggingface`) is used. + revision (`str`, *optional*, defaults to `"main"`): + The specific model version to use. It can be a branch name, a tag name, a commit id, or any identifier + allowed by Git. + subfolder (`str`, *optional*, defaults to `""`): + The subfolder location of a model file within a larger model repository on the Hub or locally. + + """ + # Load the main state dict first which has the LoRA layers for either of + # transformer and text encoder or both. + cache_dir = kwargs.pop("cache_dir", None) + force_download = kwargs.pop("force_download", False) + proxies = kwargs.pop("proxies", None) + local_files_only = kwargs.pop("local_files_only", None) + token = kwargs.pop("token", None) + revision = kwargs.pop("revision", None) + subfolder = kwargs.pop("subfolder", None) + weight_name = kwargs.pop("weight_name", None) + use_safetensors = kwargs.pop("use_safetensors", None) + + allow_pickle = False + if use_safetensors is None: + use_safetensors = True + allow_pickle = True + + user_agent = { + "file_type": "attn_procs_weights", + "framework": "pytorch", + } + + state_dict = _fetch_state_dict( + pretrained_model_name_or_path_or_dict=pretrained_model_name_or_path_or_dict, + weight_name=weight_name, + use_safetensors=use_safetensors, + local_files_only=local_files_only, + cache_dir=cache_dir, + force_download=force_download, + proxies=proxies, + token=token, + revision=revision, + subfolder=subfolder, + user_agent=user_agent, + allow_pickle=allow_pickle, + ) + + is_dora_scale_present = any("dora_scale" in k for k in state_dict) + if is_dora_scale_present: + warn_msg = "It seems like you are using a DoRA checkpoint that is not compatible in Diffusers at the moment. So, we are going to filter out the keys associated to 'dora_scale` from the state dict. If you think this is a mistake please open an issue https://github.com/huggingface/diffusers/issues/new." + logger.warning(warn_msg) + state_dict = {k: v for k, v in state_dict.items() if "dora_scale" not in k} + + return state_dict + + # Copied from diffusers.loaders.lora_pipeline.CogVideoXLoraLoaderMixin.load_lora_weights + def load_lora_weights( + self, pretrained_model_name_or_path_or_dict: Union[str, Dict[str, torch.Tensor]], adapter_name=None, **kwargs + ): + """ + Load LoRA weights specified in `pretrained_model_name_or_path_or_dict` into `self.transformer` and + `self.text_encoder`. All kwargs are forwarded to `self.lora_state_dict`. See + [`~loaders.StableDiffusionLoraLoaderMixin.lora_state_dict`] for more details on how the state dict is loaded. + See [`~loaders.StableDiffusionLoraLoaderMixin.load_lora_into_transformer`] for more details on how the state + dict is loaded into `self.transformer`. + + Parameters: + pretrained_model_name_or_path_or_dict (`str` or `os.PathLike` or `dict`): + See [`~loaders.StableDiffusionLoraLoaderMixin.lora_state_dict`]. + adapter_name (`str`, *optional*): + Adapter name to be used for referencing the loaded adapter model. If not specified, it will use + `default_{i}` where i is the total number of adapters being loaded. + low_cpu_mem_usage (`bool`, *optional*): + Speed up model loading by only loading the pretrained LoRA weights and not initializing the random + weights. + kwargs (`dict`, *optional*): + See [`~loaders.StableDiffusionLoraLoaderMixin.lora_state_dict`]. + """ + if not USE_PEFT_BACKEND: + raise ValueError("PEFT backend is required for this method.") + + low_cpu_mem_usage = kwargs.pop("low_cpu_mem_usage", _LOW_CPU_MEM_USAGE_DEFAULT_LORA) + if low_cpu_mem_usage and is_peft_version("<", "0.13.0"): + raise ValueError( + "`low_cpu_mem_usage=True` is not compatible with this `peft` version. Please update it with `pip install -U peft`." + ) + + # if a dict is passed, copy it instead of modifying it inplace + if isinstance(pretrained_model_name_or_path_or_dict, dict): + pretrained_model_name_or_path_or_dict = pretrained_model_name_or_path_or_dict.copy() + + # First, ensure that the checkpoint is a compatible one and can be successfully loaded. + state_dict = self.lora_state_dict(pretrained_model_name_or_path_or_dict, **kwargs) + + is_correct_format = all("lora" in key for key in state_dict.keys()) + if not is_correct_format: + raise ValueError("Invalid LoRA checkpoint.") + + self.load_lora_into_transformer( + state_dict, + transformer=getattr(self, self.transformer_name) if not hasattr(self, "transformer") else self.transformer, + adapter_name=adapter_name, + _pipeline=self, + low_cpu_mem_usage=low_cpu_mem_usage, + ) + + @classmethod + # Copied from diffusers.loaders.lora_pipeline.SD3LoraLoaderMixin.load_lora_into_transformer with SD3Transformer2DModel->LTXVideoTransformer3DModel + def load_lora_into_transformer( + cls, state_dict, transformer, adapter_name=None, _pipeline=None, low_cpu_mem_usage=False + ): + """ + This will load the LoRA layers specified in `state_dict` into `transformer`. + + Parameters: + state_dict (`dict`): + A standard state dict containing the lora layer parameters. The keys can either be indexed directly + into the unet or prefixed with an additional `unet` which can be used to distinguish between text + encoder lora layers. + transformer (`LTXVideoTransformer3DModel`): + The Transformer model to load the LoRA layers into. + adapter_name (`str`, *optional*): + Adapter name to be used for referencing the loaded adapter model. If not specified, it will use + `default_{i}` where i is the total number of adapters being loaded. + low_cpu_mem_usage (`bool`, *optional*): + Speed up model loading by only loading the pretrained LoRA weights and not initializing the random + weights. + """ + if low_cpu_mem_usage and is_peft_version("<", "0.13.0"): + raise ValueError( + "`low_cpu_mem_usage=True` is not compatible with this `peft` version. Please update it with `pip install -U peft`." + ) + + # Load the layers corresponding to transformer. + logger.info(f"Loading {cls.transformer_name}.") + transformer.load_lora_adapter( + state_dict, + network_alphas=None, + adapter_name=adapter_name, + _pipeline=_pipeline, + low_cpu_mem_usage=low_cpu_mem_usage, + ) + + @classmethod + # Copied from diffusers.loaders.lora_pipeline.CogVideoXLoraLoaderMixin.save_lora_weights + def save_lora_weights( + cls, + save_directory: Union[str, os.PathLike], + transformer_lora_layers: Dict[str, Union[torch.nn.Module, torch.Tensor]] = None, + is_main_process: bool = True, + weight_name: str = None, + save_function: Callable = None, + safe_serialization: bool = True, + ): + r""" + Save the LoRA parameters corresponding to the UNet and text encoder. + + Arguments: + save_directory (`str` or `os.PathLike`): + Directory to save LoRA parameters to. Will be created if it doesn't exist. + transformer_lora_layers (`Dict[str, torch.nn.Module]` or `Dict[str, torch.Tensor]`): + State dict of the LoRA layers corresponding to the `transformer`. + is_main_process (`bool`, *optional*, defaults to `True`): + Whether the process calling this is the main process or not. Useful during distributed training and you + need to call this function on all processes. In this case, set `is_main_process=True` only on the main + process to avoid race conditions. + save_function (`Callable`): + The function to use to save the state dictionary. Useful during distributed training when you need to + replace `torch.save` with another method. Can be configured with the environment variable + `DIFFUSERS_SAVE_MODE`. + safe_serialization (`bool`, *optional*, defaults to `True`): + Whether to save the model using `safetensors` or the traditional PyTorch way with `pickle`. + """ + state_dict = {} + + if not transformer_lora_layers: + raise ValueError("You must pass `transformer_lora_layers`.") + + if transformer_lora_layers: + state_dict.update(cls.pack_weights(transformer_lora_layers, cls.transformer_name)) + + # Save the model + cls.write_lora_layers( + state_dict=state_dict, + save_directory=save_directory, + is_main_process=is_main_process, + weight_name=weight_name, + save_function=save_function, + safe_serialization=safe_serialization, + ) + + # Copied from diffusers.loaders.lora_pipeline.StableDiffusionLoraLoaderMixin.fuse_lora with unet->transformer + def fuse_lora( + self, + components: List[str] = ["transformer", "text_encoder"], + lora_scale: float = 1.0, + safe_fusing: bool = False, + adapter_names: Optional[List[str]] = None, + **kwargs, + ): + r""" + Fuses the LoRA parameters into the original parameters of the corresponding blocks. + + + + This is an experimental API. + + + + Args: + components: (`List[str]`): List of LoRA-injectable components to fuse the LoRAs into. + lora_scale (`float`, defaults to 1.0): + Controls how much to influence the outputs with the LoRA parameters. + safe_fusing (`bool`, defaults to `False`): + Whether to check fused weights for NaN values before fusing and if values are NaN not fusing them. + adapter_names (`List[str]`, *optional*): + Adapter names to be used for fusing. If nothing is passed, all active adapters will be fused. + + Example: + + ```py + from diffusers import DiffusionPipeline + import torch + + pipeline = DiffusionPipeline.from_pretrained( + "stabilityai/stable-diffusion-xl-base-1.0", torch_dtype=torch.float16 + ).to("cuda") + pipeline.load_lora_weights("nerijs/pixel-art-xl", weight_name="pixel-art-xl.safetensors", adapter_name="pixel") + pipeline.fuse_lora(lora_scale=0.7) + ``` + """ + super().fuse_lora( + components=components, lora_scale=lora_scale, safe_fusing=safe_fusing, adapter_names=adapter_names + ) + + # Copied from diffusers.loaders.lora_pipeline.StableDiffusionLoraLoaderMixin.unfuse_lora with unet->transformer + def unfuse_lora(self, components: List[str] = ["transformer", "text_encoder"], **kwargs): + r""" + Reverses the effect of + [`pipe.fuse_lora()`](https://huggingface.co/docs/diffusers/main/en/api/loaders#diffusers.loaders.LoraBaseMixin.fuse_lora). + + + + This is an experimental API. + + + + Args: + components (`List[str]`): List of LoRA-injectable components to unfuse LoRA from. + unfuse_transformer (`bool`, defaults to `True`): Whether to unfuse the UNet LoRA parameters. + unfuse_text_encoder (`bool`, defaults to `True`): + Whether to unfuse the text encoder LoRA parameters. If the text encoder wasn't monkey-patched with the + LoRA parameters then it won't have any effect. + """ + super().unfuse_lora(components=components) + + +class SanaLoraLoaderMixin(LoraBaseMixin): + r""" + Load LoRA layers into [`SanaTransformer2DModel`]. Specific to [`SanaPipeline`]. + """ + + _lora_loadable_modules = ["transformer"] + transformer_name = TRANSFORMER_NAME + + @classmethod + @validate_hf_hub_args + # Copied from diffusers.loaders.lora_pipeline.SD3LoraLoaderMixin.lora_state_dict + def lora_state_dict( + cls, + pretrained_model_name_or_path_or_dict: Union[str, Dict[str, torch.Tensor]], + **kwargs, + ): + r""" + Return state dict for lora weights and the network alphas. + + + + We support loading A1111 formatted LoRA checkpoints in a limited capacity. + + This function is experimental and might change in the future. + + + + Parameters: + pretrained_model_name_or_path_or_dict (`str` or `os.PathLike` or `dict`): + Can be either: + + - A string, the *model id* (for example `google/ddpm-celebahq-256`) of a pretrained model hosted on + the Hub. + - A path to a *directory* (for example `./my_model_directory`) containing the model weights saved + with [`ModelMixin.save_pretrained`]. + - A [torch state + dict](https://pytorch.org/tutorials/beginner/saving_loading_models.html#what-is-a-state-dict). + + cache_dir (`Union[str, os.PathLike]`, *optional*): + Path to a directory where a downloaded pretrained model configuration is cached if the standard cache + is not used. + force_download (`bool`, *optional*, defaults to `False`): + Whether or not to force the (re-)download of the model weights and configuration files, overriding the + cached versions if they exist. + + proxies (`Dict[str, str]`, *optional*): + A dictionary of proxy servers to use by protocol or endpoint, for example, `{'http': 'foo.bar:3128', + 'http://hostname': 'foo.bar:4012'}`. The proxies are used on each request. + local_files_only (`bool`, *optional*, defaults to `False`): + Whether to only load local model weights and configuration files or not. If set to `True`, the model + won't be downloaded from the Hub. + token (`str` or *bool*, *optional*): + The token to use as HTTP bearer authorization for remote files. If `True`, the token generated from + `diffusers-cli login` (stored in `~/.huggingface`) is used. + revision (`str`, *optional*, defaults to `"main"`): + The specific model version to use. It can be a branch name, a tag name, a commit id, or any identifier + allowed by Git. + subfolder (`str`, *optional*, defaults to `""`): + The subfolder location of a model file within a larger model repository on the Hub or locally. + + """ + # Load the main state dict first which has the LoRA layers for either of + # transformer and text encoder or both. + cache_dir = kwargs.pop("cache_dir", None) + force_download = kwargs.pop("force_download", False) + proxies = kwargs.pop("proxies", None) + local_files_only = kwargs.pop("local_files_only", None) + token = kwargs.pop("token", None) + revision = kwargs.pop("revision", None) + subfolder = kwargs.pop("subfolder", None) + weight_name = kwargs.pop("weight_name", None) + use_safetensors = kwargs.pop("use_safetensors", None) + + allow_pickle = False + if use_safetensors is None: + use_safetensors = True + allow_pickle = True + + user_agent = { + "file_type": "attn_procs_weights", + "framework": "pytorch", + } + + state_dict = _fetch_state_dict( + pretrained_model_name_or_path_or_dict=pretrained_model_name_or_path_or_dict, + weight_name=weight_name, + use_safetensors=use_safetensors, + local_files_only=local_files_only, + cache_dir=cache_dir, + force_download=force_download, + proxies=proxies, + token=token, + revision=revision, + subfolder=subfolder, + user_agent=user_agent, + allow_pickle=allow_pickle, + ) + + is_dora_scale_present = any("dora_scale" in k for k in state_dict) + if is_dora_scale_present: + warn_msg = "It seems like you are using a DoRA checkpoint that is not compatible in Diffusers at the moment. So, we are going to filter out the keys associated to 'dora_scale` from the state dict. If you think this is a mistake please open an issue https://github.com/huggingface/diffusers/issues/new." + logger.warning(warn_msg) + state_dict = {k: v for k, v in state_dict.items() if "dora_scale" not in k} + + return state_dict + + # Copied from diffusers.loaders.lora_pipeline.CogVideoXLoraLoaderMixin.load_lora_weights + def load_lora_weights( + self, pretrained_model_name_or_path_or_dict: Union[str, Dict[str, torch.Tensor]], adapter_name=None, **kwargs + ): + """ + Load LoRA weights specified in `pretrained_model_name_or_path_or_dict` into `self.transformer` and + `self.text_encoder`. All kwargs are forwarded to `self.lora_state_dict`. See + [`~loaders.StableDiffusionLoraLoaderMixin.lora_state_dict`] for more details on how the state dict is loaded. + See [`~loaders.StableDiffusionLoraLoaderMixin.load_lora_into_transformer`] for more details on how the state + dict is loaded into `self.transformer`. + + Parameters: + pretrained_model_name_or_path_or_dict (`str` or `os.PathLike` or `dict`): + See [`~loaders.StableDiffusionLoraLoaderMixin.lora_state_dict`]. + adapter_name (`str`, *optional*): + Adapter name to be used for referencing the loaded adapter model. If not specified, it will use + `default_{i}` where i is the total number of adapters being loaded. + low_cpu_mem_usage (`bool`, *optional*): + Speed up model loading by only loading the pretrained LoRA weights and not initializing the random + weights. + kwargs (`dict`, *optional*): + See [`~loaders.StableDiffusionLoraLoaderMixin.lora_state_dict`]. + """ + if not USE_PEFT_BACKEND: + raise ValueError("PEFT backend is required for this method.") + + low_cpu_mem_usage = kwargs.pop("low_cpu_mem_usage", _LOW_CPU_MEM_USAGE_DEFAULT_LORA) + if low_cpu_mem_usage and is_peft_version("<", "0.13.0"): + raise ValueError( + "`low_cpu_mem_usage=True` is not compatible with this `peft` version. Please update it with `pip install -U peft`." + ) + + # if a dict is passed, copy it instead of modifying it inplace + if isinstance(pretrained_model_name_or_path_or_dict, dict): + pretrained_model_name_or_path_or_dict = pretrained_model_name_or_path_or_dict.copy() + + # First, ensure that the checkpoint is a compatible one and can be successfully loaded. + state_dict = self.lora_state_dict(pretrained_model_name_or_path_or_dict, **kwargs) + + is_correct_format = all("lora" in key for key in state_dict.keys()) + if not is_correct_format: + raise ValueError("Invalid LoRA checkpoint.") + + self.load_lora_into_transformer( + state_dict, + transformer=getattr(self, self.transformer_name) if not hasattr(self, "transformer") else self.transformer, + adapter_name=adapter_name, + _pipeline=self, + low_cpu_mem_usage=low_cpu_mem_usage, + ) + + @classmethod + # Copied from diffusers.loaders.lora_pipeline.SD3LoraLoaderMixin.load_lora_into_transformer with SD3Transformer2DModel->SanaTransformer2DModel + def load_lora_into_transformer( + cls, state_dict, transformer, adapter_name=None, _pipeline=None, low_cpu_mem_usage=False + ): + """ + This will load the LoRA layers specified in `state_dict` into `transformer`. + + Parameters: + state_dict (`dict`): + A standard state dict containing the lora layer parameters. The keys can either be indexed directly + into the unet or prefixed with an additional `unet` which can be used to distinguish between text + encoder lora layers. + transformer (`SanaTransformer2DModel`): + The Transformer model to load the LoRA layers into. + adapter_name (`str`, *optional*): + Adapter name to be used for referencing the loaded adapter model. If not specified, it will use + `default_{i}` where i is the total number of adapters being loaded. + low_cpu_mem_usage (`bool`, *optional*): + Speed up model loading by only loading the pretrained LoRA weights and not initializing the random + weights. + """ + if low_cpu_mem_usage and is_peft_version("<", "0.13.0"): + raise ValueError( + "`low_cpu_mem_usage=True` is not compatible with this `peft` version. Please update it with `pip install -U peft`." + ) + + # Load the layers corresponding to transformer. + logger.info(f"Loading {cls.transformer_name}.") + transformer.load_lora_adapter( + state_dict, + network_alphas=None, + adapter_name=adapter_name, + _pipeline=_pipeline, + low_cpu_mem_usage=low_cpu_mem_usage, + ) + + @classmethod + # Copied from diffusers.loaders.lora_pipeline.CogVideoXLoraLoaderMixin.save_lora_weights + def save_lora_weights( + cls, + save_directory: Union[str, os.PathLike], + transformer_lora_layers: Dict[str, Union[torch.nn.Module, torch.Tensor]] = None, + is_main_process: bool = True, + weight_name: str = None, + save_function: Callable = None, + safe_serialization: bool = True, + ): + r""" + Save the LoRA parameters corresponding to the UNet and text encoder. + + Arguments: + save_directory (`str` or `os.PathLike`): + Directory to save LoRA parameters to. Will be created if it doesn't exist. + transformer_lora_layers (`Dict[str, torch.nn.Module]` or `Dict[str, torch.Tensor]`): + State dict of the LoRA layers corresponding to the `transformer`. + is_main_process (`bool`, *optional*, defaults to `True`): + Whether the process calling this is the main process or not. Useful during distributed training and you + need to call this function on all processes. In this case, set `is_main_process=True` only on the main + process to avoid race conditions. + save_function (`Callable`): + The function to use to save the state dictionary. Useful during distributed training when you need to + replace `torch.save` with another method. Can be configured with the environment variable + `DIFFUSERS_SAVE_MODE`. + safe_serialization (`bool`, *optional*, defaults to `True`): + Whether to save the model using `safetensors` or the traditional PyTorch way with `pickle`. + """ + state_dict = {} + + if not transformer_lora_layers: + raise ValueError("You must pass `transformer_lora_layers`.") + + if transformer_lora_layers: + state_dict.update(cls.pack_weights(transformer_lora_layers, cls.transformer_name)) + + # Save the model + cls.write_lora_layers( + state_dict=state_dict, + save_directory=save_directory, + is_main_process=is_main_process, + weight_name=weight_name, + save_function=save_function, + safe_serialization=safe_serialization, + ) + + # Copied from diffusers.loaders.lora_pipeline.StableDiffusionLoraLoaderMixin.fuse_lora with unet->transformer + def fuse_lora( + self, + components: List[str] = ["transformer", "text_encoder"], + lora_scale: float = 1.0, + safe_fusing: bool = False, + adapter_names: Optional[List[str]] = None, + **kwargs, + ): + r""" + Fuses the LoRA parameters into the original parameters of the corresponding blocks. + + + + This is an experimental API. + + + + Args: + components: (`List[str]`): List of LoRA-injectable components to fuse the LoRAs into. + lora_scale (`float`, defaults to 1.0): + Controls how much to influence the outputs with the LoRA parameters. + safe_fusing (`bool`, defaults to `False`): + Whether to check fused weights for NaN values before fusing and if values are NaN not fusing them. + adapter_names (`List[str]`, *optional*): + Adapter names to be used for fusing. If nothing is passed, all active adapters will be fused. + + Example: + + ```py + from diffusers import DiffusionPipeline + import torch + + pipeline = DiffusionPipeline.from_pretrained( + "stabilityai/stable-diffusion-xl-base-1.0", torch_dtype=torch.float16 + ).to("cuda") + pipeline.load_lora_weights("nerijs/pixel-art-xl", weight_name="pixel-art-xl.safetensors", adapter_name="pixel") + pipeline.fuse_lora(lora_scale=0.7) + ``` + """ + super().fuse_lora( + components=components, lora_scale=lora_scale, safe_fusing=safe_fusing, adapter_names=adapter_names + ) + + # Copied from diffusers.loaders.lora_pipeline.StableDiffusionLoraLoaderMixin.unfuse_lora with unet->transformer + def unfuse_lora(self, components: List[str] = ["transformer", "text_encoder"], **kwargs): + r""" + Reverses the effect of + [`pipe.fuse_lora()`](https://huggingface.co/docs/diffusers/main/en/api/loaders#diffusers.loaders.LoraBaseMixin.fuse_lora). + + + + This is an experimental API. + + + + Args: + components (`List[str]`): List of LoRA-injectable components to unfuse LoRA from. + unfuse_transformer (`bool`, defaults to `True`): Whether to unfuse the UNet LoRA parameters. + unfuse_text_encoder (`bool`, defaults to `True`): + Whether to unfuse the text encoder LoRA parameters. If the text encoder wasn't monkey-patched with the + LoRA parameters then it won't have any effect. + """ + super().unfuse_lora(components=components) + + +class HunyuanVideoLoraLoaderMixin(LoraBaseMixin): + r""" + Load LoRA layers into [`HunyuanVideoTransformer3DModel`]. Specific to [`HunyuanVideoPipeline`]. + """ + + _lora_loadable_modules = ["transformer"] + transformer_name = TRANSFORMER_NAME + + @classmethod + @validate_hf_hub_args + # Copied from diffusers.loaders.lora_pipeline.SD3LoraLoaderMixin.lora_state_dict + def lora_state_dict( + cls, + pretrained_model_name_or_path_or_dict: Union[str, Dict[str, torch.Tensor]], + **kwargs, + ): + r""" + Return state dict for lora weights and the network alphas. + + + + We support loading A1111 formatted LoRA checkpoints in a limited capacity. + + This function is experimental and might change in the future. + + + + Parameters: + pretrained_model_name_or_path_or_dict (`str` or `os.PathLike` or `dict`): + Can be either: + + - A string, the *model id* (for example `google/ddpm-celebahq-256`) of a pretrained model hosted on + the Hub. + - A path to a *directory* (for example `./my_model_directory`) containing the model weights saved + with [`ModelMixin.save_pretrained`]. + - A [torch state + dict](https://pytorch.org/tutorials/beginner/saving_loading_models.html#what-is-a-state-dict). + + cache_dir (`Union[str, os.PathLike]`, *optional*): + Path to a directory where a downloaded pretrained model configuration is cached if the standard cache + is not used. + force_download (`bool`, *optional*, defaults to `False`): + Whether or not to force the (re-)download of the model weights and configuration files, overriding the + cached versions if they exist. + + proxies (`Dict[str, str]`, *optional*): + A dictionary of proxy servers to use by protocol or endpoint, for example, `{'http': 'foo.bar:3128', + 'http://hostname': 'foo.bar:4012'}`. The proxies are used on each request. + local_files_only (`bool`, *optional*, defaults to `False`): + Whether to only load local model weights and configuration files or not. If set to `True`, the model + won't be downloaded from the Hub. + token (`str` or *bool*, *optional*): + The token to use as HTTP bearer authorization for remote files. If `True`, the token generated from + `diffusers-cli login` (stored in `~/.huggingface`) is used. + revision (`str`, *optional*, defaults to `"main"`): + The specific model version to use. It can be a branch name, a tag name, a commit id, or any identifier + allowed by Git. + subfolder (`str`, *optional*, defaults to `""`): + The subfolder location of a model file within a larger model repository on the Hub or locally. + + """ + # Load the main state dict first which has the LoRA layers for either of + # transformer and text encoder or both. + cache_dir = kwargs.pop("cache_dir", None) + force_download = kwargs.pop("force_download", False) + proxies = kwargs.pop("proxies", None) + local_files_only = kwargs.pop("local_files_only", None) + token = kwargs.pop("token", None) + revision = kwargs.pop("revision", None) + subfolder = kwargs.pop("subfolder", None) + weight_name = kwargs.pop("weight_name", None) + use_safetensors = kwargs.pop("use_safetensors", None) + + allow_pickle = False + if use_safetensors is None: + use_safetensors = True + allow_pickle = True + + user_agent = { + "file_type": "attn_procs_weights", + "framework": "pytorch", + } + + state_dict = _fetch_state_dict( + pretrained_model_name_or_path_or_dict=pretrained_model_name_or_path_or_dict, + weight_name=weight_name, + use_safetensors=use_safetensors, + local_files_only=local_files_only, + cache_dir=cache_dir, + force_download=force_download, + proxies=proxies, + token=token, + revision=revision, + subfolder=subfolder, + user_agent=user_agent, + allow_pickle=allow_pickle, + ) + + is_dora_scale_present = any("dora_scale" in k for k in state_dict) + if is_dora_scale_present: + warn_msg = "It seems like you are using a DoRA checkpoint that is not compatible in Diffusers at the moment. So, we are going to filter out the keys associated to 'dora_scale` from the state dict. If you think this is a mistake please open an issue https://github.com/huggingface/diffusers/issues/new." + logger.warning(warn_msg) + state_dict = {k: v for k, v in state_dict.items() if "dora_scale" not in k} + + return state_dict + + # Copied from diffusers.loaders.lora_pipeline.CogVideoXLoraLoaderMixin.load_lora_weights + def load_lora_weights( + self, pretrained_model_name_or_path_or_dict: Union[str, Dict[str, torch.Tensor]], adapter_name=None, **kwargs + ): + """ + Load LoRA weights specified in `pretrained_model_name_or_path_or_dict` into `self.transformer` and + `self.text_encoder`. All kwargs are forwarded to `self.lora_state_dict`. See + [`~loaders.StableDiffusionLoraLoaderMixin.lora_state_dict`] for more details on how the state dict is loaded. + See [`~loaders.StableDiffusionLoraLoaderMixin.load_lora_into_transformer`] for more details on how the state + dict is loaded into `self.transformer`. + + Parameters: + pretrained_model_name_or_path_or_dict (`str` or `os.PathLike` or `dict`): + See [`~loaders.StableDiffusionLoraLoaderMixin.lora_state_dict`]. + adapter_name (`str`, *optional*): + Adapter name to be used for referencing the loaded adapter model. If not specified, it will use + `default_{i}` where i is the total number of adapters being loaded. + low_cpu_mem_usage (`bool`, *optional*): + Speed up model loading by only loading the pretrained LoRA weights and not initializing the random + weights. + kwargs (`dict`, *optional*): + See [`~loaders.StableDiffusionLoraLoaderMixin.lora_state_dict`]. + """ + if not USE_PEFT_BACKEND: + raise ValueError("PEFT backend is required for this method.") + + low_cpu_mem_usage = kwargs.pop("low_cpu_mem_usage", _LOW_CPU_MEM_USAGE_DEFAULT_LORA) + if low_cpu_mem_usage and is_peft_version("<", "0.13.0"): + raise ValueError( + "`low_cpu_mem_usage=True` is not compatible with this `peft` version. Please update it with `pip install -U peft`." + ) + + # if a dict is passed, copy it instead of modifying it inplace + if isinstance(pretrained_model_name_or_path_or_dict, dict): + pretrained_model_name_or_path_or_dict = pretrained_model_name_or_path_or_dict.copy() + + # First, ensure that the checkpoint is a compatible one and can be successfully loaded. + state_dict = self.lora_state_dict(pretrained_model_name_or_path_or_dict, **kwargs) + + is_correct_format = all("lora" in key for key in state_dict.keys()) + if not is_correct_format: + raise ValueError("Invalid LoRA checkpoint.") + + self.load_lora_into_transformer( + state_dict, + transformer=getattr(self, self.transformer_name) if not hasattr(self, "transformer") else self.transformer, + adapter_name=adapter_name, + _pipeline=self, + low_cpu_mem_usage=low_cpu_mem_usage, + ) + + @classmethod + # Copied from diffusers.loaders.lora_pipeline.SD3LoraLoaderMixin.load_lora_into_transformer with SD3Transformer2DModel->HunyuanVideoTransformer3DModel + def load_lora_into_transformer( + cls, state_dict, transformer, adapter_name=None, _pipeline=None, low_cpu_mem_usage=False + ): + """ + This will load the LoRA layers specified in `state_dict` into `transformer`. + + Parameters: + state_dict (`dict`): + A standard state dict containing the lora layer parameters. The keys can either be indexed directly + into the unet or prefixed with an additional `unet` which can be used to distinguish between text + encoder lora layers. + transformer (`HunyuanVideoTransformer3DModel`): + The Transformer model to load the LoRA layers into. + adapter_name (`str`, *optional*): + Adapter name to be used for referencing the loaded adapter model. If not specified, it will use + `default_{i}` where i is the total number of adapters being loaded. + low_cpu_mem_usage (`bool`, *optional*): + Speed up model loading by only loading the pretrained LoRA weights and not initializing the random + weights. + """ + if low_cpu_mem_usage and is_peft_version("<", "0.13.0"): + raise ValueError( + "`low_cpu_mem_usage=True` is not compatible with this `peft` version. Please update it with `pip install -U peft`." + ) + + # Load the layers corresponding to transformer. + logger.info(f"Loading {cls.transformer_name}.") + transformer.load_lora_adapter( + state_dict, + network_alphas=None, + adapter_name=adapter_name, + _pipeline=_pipeline, + low_cpu_mem_usage=low_cpu_mem_usage, + ) + + @classmethod + # Copied from diffusers.loaders.lora_pipeline.CogVideoXLoraLoaderMixin.save_lora_weights + def save_lora_weights( + cls, + save_directory: Union[str, os.PathLike], + transformer_lora_layers: Dict[str, Union[torch.nn.Module, torch.Tensor]] = None, + is_main_process: bool = True, + weight_name: str = None, + save_function: Callable = None, + safe_serialization: bool = True, + ): + r""" + Save the LoRA parameters corresponding to the UNet and text encoder. + + Arguments: + save_directory (`str` or `os.PathLike`): + Directory to save LoRA parameters to. Will be created if it doesn't exist. + transformer_lora_layers (`Dict[str, torch.nn.Module]` or `Dict[str, torch.Tensor]`): + State dict of the LoRA layers corresponding to the `transformer`. + is_main_process (`bool`, *optional*, defaults to `True`): + Whether the process calling this is the main process or not. Useful during distributed training and you + need to call this function on all processes. In this case, set `is_main_process=True` only on the main + process to avoid race conditions. + save_function (`Callable`): + The function to use to save the state dictionary. Useful during distributed training when you need to + replace `torch.save` with another method. Can be configured with the environment variable + `DIFFUSERS_SAVE_MODE`. + safe_serialization (`bool`, *optional*, defaults to `True`): + Whether to save the model using `safetensors` or the traditional PyTorch way with `pickle`. + """ + state_dict = {} + + if not transformer_lora_layers: + raise ValueError("You must pass `transformer_lora_layers`.") + + if transformer_lora_layers: + state_dict.update(cls.pack_weights(transformer_lora_layers, cls.transformer_name)) + + # Save the model + cls.write_lora_layers( + state_dict=state_dict, + save_directory=save_directory, + is_main_process=is_main_process, + weight_name=weight_name, + save_function=save_function, + safe_serialization=safe_serialization, + ) + + # Copied from diffusers.loaders.lora_pipeline.StableDiffusionLoraLoaderMixin.fuse_lora with unet->transformer + def fuse_lora( + self, + components: List[str] = ["transformer", "text_encoder"], + lora_scale: float = 1.0, + safe_fusing: bool = False, + adapter_names: Optional[List[str]] = None, + **kwargs, + ): + r""" + Fuses the LoRA parameters into the original parameters of the corresponding blocks. + + + + This is an experimental API. + + + + Args: + components: (`List[str]`): List of LoRA-injectable components to fuse the LoRAs into. + lora_scale (`float`, defaults to 1.0): + Controls how much to influence the outputs with the LoRA parameters. + safe_fusing (`bool`, defaults to `False`): + Whether to check fused weights for NaN values before fusing and if values are NaN not fusing them. + adapter_names (`List[str]`, *optional*): + Adapter names to be used for fusing. If nothing is passed, all active adapters will be fused. + + Example: + + ```py + from diffusers import DiffusionPipeline + import torch + + pipeline = DiffusionPipeline.from_pretrained( + "stabilityai/stable-diffusion-xl-base-1.0", torch_dtype=torch.float16 + ).to("cuda") + pipeline.load_lora_weights("nerijs/pixel-art-xl", weight_name="pixel-art-xl.safetensors", adapter_name="pixel") + pipeline.fuse_lora(lora_scale=0.7) + ``` + """ + super().fuse_lora( + components=components, lora_scale=lora_scale, safe_fusing=safe_fusing, adapter_names=adapter_names + ) + + # Copied from diffusers.loaders.lora_pipeline.StableDiffusionLoraLoaderMixin.unfuse_lora with unet->transformer + def unfuse_lora(self, components: List[str] = ["transformer", "text_encoder"], **kwargs): + r""" + Reverses the effect of + [`pipe.fuse_lora()`](https://huggingface.co/docs/diffusers/main/en/api/loaders#diffusers.loaders.LoraBaseMixin.fuse_lora). + + + + This is an experimental API. + + + + Args: + components (`List[str]`): List of LoRA-injectable components to unfuse LoRA from. + unfuse_transformer (`bool`, defaults to `True`): Whether to unfuse the UNet LoRA parameters. + unfuse_text_encoder (`bool`, defaults to `True`): + Whether to unfuse the text encoder LoRA parameters. If the text encoder wasn't monkey-patched with the + LoRA parameters then it won't have any effect. + """ + super().unfuse_lora(components=components) + + +class LoraLoaderMixin(StableDiffusionLoraLoaderMixin): + def __init__(self, *args, **kwargs): + deprecation_message = "LoraLoaderMixin is deprecated and this will be removed in a future version. Please use `StableDiffusionLoraLoaderMixin`, instead." + deprecate("LoraLoaderMixin", "1.0.0", deprecation_message) + super().__init__(*args, **kwargs) diff --git a/venv/lib/python3.11/site-packages/diffusers/loaders/peft.py b/venv/lib/python3.11/site-packages/diffusers/loaders/peft.py new file mode 100644 index 0000000000000000000000000000000000000000..9c00012ebc654b70fe587756d4c267c2b59209f6 --- /dev/null +++ b/venv/lib/python3.11/site-packages/diffusers/loaders/peft.py @@ -0,0 +1,775 @@ +# coding=utf-8 +# Copyright 2024 The HuggingFace Inc. team. +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. +import inspect +import os +from functools import partial +from pathlib import Path +from typing import Dict, List, Optional, Union + +import safetensors +import torch +import torch.nn as nn + +from ..utils import ( + MIN_PEFT_VERSION, + USE_PEFT_BACKEND, + check_peft_version, + convert_unet_state_dict_to_peft, + delete_adapter_layers, + get_adapter_name, + get_peft_kwargs, + is_accelerate_available, + is_peft_available, + is_peft_version, + logging, + set_adapter_layers, + set_weights_and_activate_adapters, +) +from .lora_base import _fetch_state_dict +from .unet_loader_utils import _maybe_expand_lora_scales + + +if is_accelerate_available(): + from accelerate.hooks import AlignDevicesHook, CpuOffload, remove_hook_from_module + +logger = logging.get_logger(__name__) + +_SET_ADAPTER_SCALE_FN_MAPPING = { + "UNet2DConditionModel": _maybe_expand_lora_scales, + "UNetMotionModel": _maybe_expand_lora_scales, + "SD3Transformer2DModel": lambda model_cls, weights: weights, + "FluxTransformer2DModel": lambda model_cls, weights: weights, + "CogVideoXTransformer3DModel": lambda model_cls, weights: weights, + "MochiTransformer3DModel": lambda model_cls, weights: weights, + "HunyuanVideoTransformer3DModel": lambda model_cls, weights: weights, + "LTXVideoTransformer3DModel": lambda model_cls, weights: weights, + "SanaTransformer2DModel": lambda model_cls, weights: weights, +} + + +def _maybe_adjust_config(config): + """ + We may run into some ambiguous configuration values when a model has module names, sharing a common prefix + (`proj_out.weight` and `blocks.transformer.proj_out.weight`, for example) and they have different LoRA ranks. This + method removes the ambiguity by following what is described here: + https://github.com/huggingface/diffusers/pull/9985#issuecomment-2493840028. + """ + rank_pattern = config["rank_pattern"].copy() + target_modules = config["target_modules"] + original_r = config["r"] + + for key in list(rank_pattern.keys()): + key_rank = rank_pattern[key] + + # try to detect ambiguity + # `target_modules` can also be a str, in which case this loop would loop + # over the chars of the str. The technically correct way to match LoRA keys + # in PEFT is to use LoraModel._check_target_module_exists (lora_config, key). + # But this cuts it for now. + exact_matches = [mod for mod in target_modules if mod == key] + substring_matches = [mod for mod in target_modules if key in mod and mod != key] + ambiguous_key = key + + if exact_matches and substring_matches: + # if ambiguous we update the rank associated with the ambiguous key (`proj_out`, for example) + config["r"] = key_rank + # remove the ambiguous key from `rank_pattern` and update its rank to `r`, instead + del config["rank_pattern"][key] + for mod in substring_matches: + # avoid overwriting if the module already has a specific rank + if mod not in config["rank_pattern"]: + config["rank_pattern"][mod] = original_r + + # update the rest of the keys with the `original_r` + for mod in target_modules: + if mod != ambiguous_key and mod not in config["rank_pattern"]: + config["rank_pattern"][mod] = original_r + + # handle alphas to deal with cases like + # https://github.com/huggingface/diffusers/pull/9999#issuecomment-2516180777 + has_different_ranks = len(config["rank_pattern"]) > 1 and list(config["rank_pattern"])[0] != config["r"] + if has_different_ranks: + config["lora_alpha"] = config["r"] + alpha_pattern = {} + for module_name, rank in config["rank_pattern"].items(): + alpha_pattern[module_name] = rank + config["alpha_pattern"] = alpha_pattern + + return config + + +class PeftAdapterMixin: + """ + A class containing all functions for loading and using adapters weights that are supported in PEFT library. For + more details about adapters and injecting them in a base model, check out the PEFT + [documentation](https://huggingface.co/docs/peft/index). + + Install the latest version of PEFT, and use this mixin to: + + - Attach new adapters in the model. + - Attach multiple adapters and iteratively activate/deactivate them. + - Activate/deactivate all adapters from the model. + - Get a list of the active adapters. + """ + + _hf_peft_config_loaded = False + + @classmethod + # Copied from diffusers.loaders.lora_base.LoraBaseMixin._optionally_disable_offloading + def _optionally_disable_offloading(cls, _pipeline): + """ + Optionally removes offloading in case the pipeline has been already sequentially offloaded to CPU. + + Args: + _pipeline (`DiffusionPipeline`): + The pipeline to disable offloading for. + + Returns: + tuple: + A tuple indicating if `is_model_cpu_offload` or `is_sequential_cpu_offload` is True. + """ + is_model_cpu_offload = False + is_sequential_cpu_offload = False + + if _pipeline is not None and _pipeline.hf_device_map is None: + for _, component in _pipeline.components.items(): + if isinstance(component, nn.Module) and hasattr(component, "_hf_hook"): + if not is_model_cpu_offload: + is_model_cpu_offload = isinstance(component._hf_hook, CpuOffload) + if not is_sequential_cpu_offload: + is_sequential_cpu_offload = ( + isinstance(component._hf_hook, AlignDevicesHook) + or hasattr(component._hf_hook, "hooks") + and isinstance(component._hf_hook.hooks[0], AlignDevicesHook) + ) + + logger.info( + "Accelerate hooks detected. Since you have called `load_lora_weights()`, the previous hooks will be first removed. Then the LoRA parameters will be loaded and the hooks will be applied again." + ) + remove_hook_from_module(component, recurse=is_sequential_cpu_offload) + + return (is_model_cpu_offload, is_sequential_cpu_offload) + + def load_lora_adapter(self, pretrained_model_name_or_path_or_dict, prefix="transformer", **kwargs): + r""" + Loads a LoRA adapter into the underlying model. + + Parameters: + pretrained_model_name_or_path_or_dict (`str` or `os.PathLike` or `dict`): + Can be either: + + - A string, the *model id* (for example `google/ddpm-celebahq-256`) of a pretrained model hosted on + the Hub. + - A path to a *directory* (for example `./my_model_directory`) containing the model weights saved + with [`ModelMixin.save_pretrained`]. + - A [torch state + dict](https://pytorch.org/tutorials/beginner/saving_loading_models.html#what-is-a-state-dict). + + prefix (`str`, *optional*): Prefix to filter the state dict. + + cache_dir (`Union[str, os.PathLike]`, *optional*): + Path to a directory where a downloaded pretrained model configuration is cached if the standard cache + is not used. + force_download (`bool`, *optional*, defaults to `False`): + Whether or not to force the (re-)download of the model weights and configuration files, overriding the + cached versions if they exist. + proxies (`Dict[str, str]`, *optional*): + A dictionary of proxy servers to use by protocol or endpoint, for example, `{'http': 'foo.bar:3128', + 'http://hostname': 'foo.bar:4012'}`. The proxies are used on each request. + local_files_only (`bool`, *optional*, defaults to `False`): + Whether to only load local model weights and configuration files or not. If set to `True`, the model + won't be downloaded from the Hub. + token (`str` or *bool*, *optional*): + The token to use as HTTP bearer authorization for remote files. If `True`, the token generated from + `diffusers-cli login` (stored in `~/.huggingface`) is used. + revision (`str`, *optional*, defaults to `"main"`): + The specific model version to use. It can be a branch name, a tag name, a commit id, or any identifier + allowed by Git. + subfolder (`str`, *optional*, defaults to `""`): + The subfolder location of a model file within a larger model repository on the Hub or locally. + network_alphas (`Dict[str, float]`): + The value of the network alpha used for stable learning and preventing underflow. This value has the + same meaning as the `--network_alpha` option in the kohya-ss trainer script. Refer to [this + link](https://github.com/darkstorm2150/sd-scripts/blob/main/docs/train_network_README-en.md#execute-learning). + low_cpu_mem_usage (`bool`, *optional*): + Speed up model loading by only loading the pretrained LoRA weights and not initializing the random + weights. + """ + from peft import LoraConfig, inject_adapter_in_model, set_peft_model_state_dict + from peft.tuners.tuners_utils import BaseTunerLayer + + cache_dir = kwargs.pop("cache_dir", None) + force_download = kwargs.pop("force_download", False) + proxies = kwargs.pop("proxies", None) + local_files_only = kwargs.pop("local_files_only", None) + token = kwargs.pop("token", None) + revision = kwargs.pop("revision", None) + subfolder = kwargs.pop("subfolder", None) + weight_name = kwargs.pop("weight_name", None) + use_safetensors = kwargs.pop("use_safetensors", None) + adapter_name = kwargs.pop("adapter_name", None) + network_alphas = kwargs.pop("network_alphas", None) + _pipeline = kwargs.pop("_pipeline", None) + low_cpu_mem_usage = kwargs.pop("low_cpu_mem_usage", False) + allow_pickle = False + + if low_cpu_mem_usage and is_peft_version("<=", "0.13.0"): + raise ValueError( + "`low_cpu_mem_usage=True` is not compatible with this `peft` version. Please update it with `pip install -U peft`." + ) + + user_agent = { + "file_type": "attn_procs_weights", + "framework": "pytorch", + } + + state_dict = _fetch_state_dict( + pretrained_model_name_or_path_or_dict=pretrained_model_name_or_path_or_dict, + weight_name=weight_name, + use_safetensors=use_safetensors, + local_files_only=local_files_only, + cache_dir=cache_dir, + force_download=force_download, + proxies=proxies, + token=token, + revision=revision, + subfolder=subfolder, + user_agent=user_agent, + allow_pickle=allow_pickle, + ) + if network_alphas is not None and prefix is None: + raise ValueError("`network_alphas` cannot be None when `prefix` is None.") + + if prefix is not None: + keys = list(state_dict.keys()) + model_keys = [k for k in keys if k.startswith(f"{prefix}.")] + if len(model_keys) > 0: + state_dict = {k.replace(f"{prefix}.", ""): v for k, v in state_dict.items() if k in model_keys} + + if len(state_dict) > 0: + if adapter_name in getattr(self, "peft_config", {}): + raise ValueError( + f"Adapter name {adapter_name} already in use in the model - please select a new adapter name." + ) + + # check with first key if is not in peft format + first_key = next(iter(state_dict.keys())) + if "lora_A" not in first_key: + state_dict = convert_unet_state_dict_to_peft(state_dict) + + rank = {} + for key, val in state_dict.items(): + # Cannot figure out rank from lora layers that don't have atleast 2 dimensions. + # Bias layers in LoRA only have a single dimension + if "lora_B" in key and val.ndim > 1: + rank[key] = val.shape[1] + + if network_alphas is not None and len(network_alphas) >= 1: + alpha_keys = [k for k in network_alphas.keys() if k.startswith(f"{prefix}.")] + network_alphas = {k.replace(f"{prefix}.", ""): v for k, v in network_alphas.items() if k in alpha_keys} + + lora_config_kwargs = get_peft_kwargs(rank, network_alpha_dict=network_alphas, peft_state_dict=state_dict) + lora_config_kwargs = _maybe_adjust_config(lora_config_kwargs) + + if "use_dora" in lora_config_kwargs: + if lora_config_kwargs["use_dora"]: + if is_peft_version("<", "0.9.0"): + raise ValueError( + "You need `peft` 0.9.0 at least to use DoRA-enabled LoRAs. Please upgrade your installation of `peft`." + ) + else: + if is_peft_version("<", "0.9.0"): + lora_config_kwargs.pop("use_dora") + + if "lora_bias" in lora_config_kwargs: + if lora_config_kwargs["lora_bias"]: + if is_peft_version("<=", "0.13.2"): + raise ValueError( + "You need `peft` 0.14.0 at least to use `lora_bias` in LoRAs. Please upgrade your installation of `peft`." + ) + else: + if is_peft_version("<=", "0.13.2"): + lora_config_kwargs.pop("lora_bias") + + lora_config = LoraConfig(**lora_config_kwargs) + # adapter_name + if adapter_name is None: + adapter_name = get_adapter_name(self) + + # =", "0.13.1"): + peft_kwargs["low_cpu_mem_usage"] = low_cpu_mem_usage + + # To handle scenarios where we cannot successfully set state dict. If it's unsucessful, + # we should also delete the `peft_config` associated to the `adapter_name`. + try: + inject_adapter_in_model(lora_config, self, adapter_name=adapter_name, **peft_kwargs) + incompatible_keys = set_peft_model_state_dict(self, state_dict, adapter_name, **peft_kwargs) + except RuntimeError as e: + for module in self.modules(): + if isinstance(module, BaseTunerLayer): + active_adapters = module.active_adapters + for active_adapter in active_adapters: + if adapter_name in active_adapter: + module.delete_adapter(adapter_name) + + self.peft_config.pop(adapter_name) + logger.error(f"Loading {adapter_name} was unsucessful with the following error: \n{e}") + raise + + warn_msg = "" + if incompatible_keys is not None: + # Check only for unexpected keys. + unexpected_keys = getattr(incompatible_keys, "unexpected_keys", None) + if unexpected_keys: + lora_unexpected_keys = [k for k in unexpected_keys if "lora_" in k and adapter_name in k] + if lora_unexpected_keys: + warn_msg = ( + f"Loading adapter weights from state_dict led to unexpected keys found in the model:" + f" {', '.join(lora_unexpected_keys)}. " + ) + + # Filter missing keys specific to the current adapter. + missing_keys = getattr(incompatible_keys, "missing_keys", None) + if missing_keys: + lora_missing_keys = [k for k in missing_keys if "lora_" in k and adapter_name in k] + if lora_missing_keys: + warn_msg += ( + f"Loading adapter weights from state_dict led to missing keys in the model:" + f" {', '.join(lora_missing_keys)}." + ) + + if warn_msg: + logger.warning(warn_msg) + + # Offload back. + if is_model_cpu_offload: + _pipeline.enable_model_cpu_offload() + elif is_sequential_cpu_offload: + _pipeline.enable_sequential_cpu_offload() + # Unsafe code /> + + def save_lora_adapter( + self, + save_directory, + adapter_name: str = "default", + upcast_before_saving: bool = False, + safe_serialization: bool = True, + weight_name: Optional[str] = None, + ): + """ + Save the LoRA parameters corresponding to the underlying model. + + Arguments: + save_directory (`str` or `os.PathLike`): + Directory to save LoRA parameters to. Will be created if it doesn't exist. + adapter_name: (`str`, defaults to "default"): The name of the adapter to serialize. Useful when the + underlying model has multiple adapters loaded. + upcast_before_saving (`bool`, defaults to `False`): + Whether to cast the underlying model to `torch.float32` before serialization. + save_function (`Callable`): + The function to use to save the state dictionary. Useful during distributed training when you need to + replace `torch.save` with another method. Can be configured with the environment variable + `DIFFUSERS_SAVE_MODE`. + safe_serialization (`bool`, *optional*, defaults to `True`): + Whether to save the model using `safetensors` or the traditional PyTorch way with `pickle`. + weight_name: (`str`, *optional*, defaults to `None`): Name of the file to serialize the state dict with. + """ + from peft.utils import get_peft_model_state_dict + + from .lora_base import LORA_WEIGHT_NAME, LORA_WEIGHT_NAME_SAFE + + if adapter_name is None: + adapter_name = get_adapter_name(self) + + if adapter_name not in getattr(self, "peft_config", {}): + raise ValueError(f"Adapter name {adapter_name} not found in the model.") + + lora_layers_to_save = get_peft_model_state_dict( + self.to(dtype=torch.float32 if upcast_before_saving else None), adapter_name=adapter_name + ) + if os.path.isfile(save_directory): + raise ValueError(f"Provided path ({save_directory}) should be a directory, not a file") + + if safe_serialization: + + def save_function(weights, filename): + return safetensors.torch.save_file(weights, filename, metadata={"format": "pt"}) + + else: + save_function = torch.save + + os.makedirs(save_directory, exist_ok=True) + + if weight_name is None: + if safe_serialization: + weight_name = LORA_WEIGHT_NAME_SAFE + else: + weight_name = LORA_WEIGHT_NAME + + # TODO: we could consider saving the `peft_config` as well. + save_path = Path(save_directory, weight_name).as_posix() + save_function(lora_layers_to_save, save_path) + logger.info(f"Model weights saved in {save_path}") + + def set_adapters( + self, + adapter_names: Union[List[str], str], + weights: Optional[Union[float, Dict, List[float], List[Dict], List[None]]] = None, + ): + """ + Set the currently active adapters for use in the UNet. + + Args: + adapter_names (`List[str]` or `str`): + The names of the adapters to use. + adapter_weights (`Union[List[float], float]`, *optional*): + The adapter(s) weights to use with the UNet. If `None`, the weights are set to `1.0` for all the + adapters. + + Example: + + ```py + from diffusers import AutoPipelineForText2Image + import torch + + pipeline = AutoPipelineForText2Image.from_pretrained( + "stabilityai/stable-diffusion-xl-base-1.0", torch_dtype=torch.float16 + ).to("cuda") + pipeline.load_lora_weights( + "jbilcke-hf/sdxl-cinematic-1", weight_name="pytorch_lora_weights.safetensors", adapter_name="cinematic" + ) + pipeline.load_lora_weights("nerijs/pixel-art-xl", weight_name="pixel-art-xl.safetensors", adapter_name="pixel") + pipeline.set_adapters(["cinematic", "pixel"], adapter_weights=[0.5, 0.5]) + ``` + """ + if not USE_PEFT_BACKEND: + raise ValueError("PEFT backend is required for `set_adapters()`.") + + adapter_names = [adapter_names] if isinstance(adapter_names, str) else adapter_names + + # Expand weights into a list, one entry per adapter + # examples for e.g. 2 adapters: [{...}, 7] -> [7,7] ; None -> [None, None] + if not isinstance(weights, list): + weights = [weights] * len(adapter_names) + + if len(adapter_names) != len(weights): + raise ValueError( + f"Length of adapter names {len(adapter_names)} is not equal to the length of their weights {len(weights)}." + ) + + # Set None values to default of 1.0 + # e.g. [{...}, 7] -> [{...}, 7] ; [None, None] -> [1.0, 1.0] + weights = [w if w is not None else 1.0 for w in weights] + + # e.g. [{...}, 7] -> [{expanded dict...}, 7] + scale_expansion_fn = _SET_ADAPTER_SCALE_FN_MAPPING[self.__class__.__name__] + weights = scale_expansion_fn(self, weights) + + set_weights_and_activate_adapters(self, adapter_names, weights) + + def add_adapter(self, adapter_config, adapter_name: str = "default") -> None: + r""" + Adds a new adapter to the current model for training. If no adapter name is passed, a default name is assigned + to the adapter to follow the convention of the PEFT library. + + If you are not familiar with adapters and PEFT methods, we invite you to read more about them in the PEFT + [documentation](https://huggingface.co/docs/peft). + + Args: + adapter_config (`[~peft.PeftConfig]`): + The configuration of the adapter to add; supported adapters are non-prefix tuning and adaption prompt + methods. + adapter_name (`str`, *optional*, defaults to `"default"`): + The name of the adapter to add. If no name is passed, a default name is assigned to the adapter. + """ + check_peft_version(min_version=MIN_PEFT_VERSION) + + if not is_peft_available(): + raise ImportError("PEFT is not available. Please install PEFT to use this function: `pip install peft`.") + + from peft import PeftConfig, inject_adapter_in_model + + if not self._hf_peft_config_loaded: + self._hf_peft_config_loaded = True + elif adapter_name in self.peft_config: + raise ValueError(f"Adapter with name {adapter_name} already exists. Please use a different name.") + + if not isinstance(adapter_config, PeftConfig): + raise ValueError( + f"adapter_config should be an instance of PeftConfig. Got {type(adapter_config)} instead." + ) + + # Unlike transformers, here we don't need to retrieve the name_or_path of the unet as the loading logic is + # handled by the `load_lora_layers` or `StableDiffusionLoraLoaderMixin`. Therefore we set it to `None` here. + adapter_config.base_model_name_or_path = None + inject_adapter_in_model(adapter_config, self, adapter_name) + self.set_adapter(adapter_name) + + def set_adapter(self, adapter_name: Union[str, List[str]]) -> None: + """ + Sets a specific adapter by forcing the model to only use that adapter and disables the other adapters. + + If you are not familiar with adapters and PEFT methods, we invite you to read more about them on the PEFT + [documentation](https://huggingface.co/docs/peft). + + Args: + adapter_name (Union[str, List[str]])): + The list of adapters to set or the adapter name in the case of a single adapter. + """ + check_peft_version(min_version=MIN_PEFT_VERSION) + + if not self._hf_peft_config_loaded: + raise ValueError("No adapter loaded. Please load an adapter first.") + + if isinstance(adapter_name, str): + adapter_name = [adapter_name] + + missing = set(adapter_name) - set(self.peft_config) + if len(missing) > 0: + raise ValueError( + f"Following adapter(s) could not be found: {', '.join(missing)}. Make sure you are passing the correct adapter name(s)." + f" current loaded adapters are: {list(self.peft_config.keys())}" + ) + + from peft.tuners.tuners_utils import BaseTunerLayer + + _adapters_has_been_set = False + + for _, module in self.named_modules(): + if isinstance(module, BaseTunerLayer): + if hasattr(module, "set_adapter"): + module.set_adapter(adapter_name) + # Previous versions of PEFT does not support multi-adapter inference + elif not hasattr(module, "set_adapter") and len(adapter_name) != 1: + raise ValueError( + "You are trying to set multiple adapters and you have a PEFT version that does not support multi-adapter inference. Please upgrade to the latest version of PEFT." + " `pip install -U peft` or `pip install -U git+https://github.com/huggingface/peft.git`" + ) + else: + module.active_adapter = adapter_name + _adapters_has_been_set = True + + if not _adapters_has_been_set: + raise ValueError( + "Did not succeeded in setting the adapter. Please make sure you are using a model that supports adapters." + ) + + def disable_adapters(self) -> None: + r""" + Disable all adapters attached to the model and fallback to inference with the base model only. + + If you are not familiar with adapters and PEFT methods, we invite you to read more about them on the PEFT + [documentation](https://huggingface.co/docs/peft). + """ + check_peft_version(min_version=MIN_PEFT_VERSION) + + if not self._hf_peft_config_loaded: + raise ValueError("No adapter loaded. Please load an adapter first.") + + from peft.tuners.tuners_utils import BaseTunerLayer + + for _, module in self.named_modules(): + if isinstance(module, BaseTunerLayer): + if hasattr(module, "enable_adapters"): + module.enable_adapters(enabled=False) + else: + # support for older PEFT versions + module.disable_adapters = True + + def enable_adapters(self) -> None: + """ + Enable adapters that are attached to the model. The model uses `self.active_adapters()` to retrieve the list of + adapters to enable. + + If you are not familiar with adapters and PEFT methods, we invite you to read more about them on the PEFT + [documentation](https://huggingface.co/docs/peft). + """ + check_peft_version(min_version=MIN_PEFT_VERSION) + + if not self._hf_peft_config_loaded: + raise ValueError("No adapter loaded. Please load an adapter first.") + + from peft.tuners.tuners_utils import BaseTunerLayer + + for _, module in self.named_modules(): + if isinstance(module, BaseTunerLayer): + if hasattr(module, "enable_adapters"): + module.enable_adapters(enabled=True) + else: + # support for older PEFT versions + module.disable_adapters = False + + def active_adapters(self) -> List[str]: + """ + Gets the current list of active adapters of the model. + + If you are not familiar with adapters and PEFT methods, we invite you to read more about them on the PEFT + [documentation](https://huggingface.co/docs/peft). + """ + check_peft_version(min_version=MIN_PEFT_VERSION) + + if not is_peft_available(): + raise ImportError("PEFT is not available. Please install PEFT to use this function: `pip install peft`.") + + if not self._hf_peft_config_loaded: + raise ValueError("No adapter loaded. Please load an adapter first.") + + from peft.tuners.tuners_utils import BaseTunerLayer + + for _, module in self.named_modules(): + if isinstance(module, BaseTunerLayer): + return module.active_adapter + + def fuse_lora(self, lora_scale=1.0, safe_fusing=False, adapter_names=None): + if not USE_PEFT_BACKEND: + raise ValueError("PEFT backend is required for `fuse_lora()`.") + + self.lora_scale = lora_scale + self._safe_fusing = safe_fusing + self.apply(partial(self._fuse_lora_apply, adapter_names=adapter_names)) + + def _fuse_lora_apply(self, module, adapter_names=None): + from peft.tuners.tuners_utils import BaseTunerLayer + + merge_kwargs = {"safe_merge": self._safe_fusing} + + if isinstance(module, BaseTunerLayer): + if self.lora_scale != 1.0: + module.scale_layer(self.lora_scale) + + # For BC with prevous PEFT versions, we need to check the signature + # of the `merge` method to see if it supports the `adapter_names` argument. + supported_merge_kwargs = list(inspect.signature(module.merge).parameters) + if "adapter_names" in supported_merge_kwargs: + merge_kwargs["adapter_names"] = adapter_names + elif "adapter_names" not in supported_merge_kwargs and adapter_names is not None: + raise ValueError( + "The `adapter_names` argument is not supported with your PEFT version. Please upgrade" + " to the latest version of PEFT. `pip install -U peft`" + ) + + module.merge(**merge_kwargs) + + def unfuse_lora(self): + if not USE_PEFT_BACKEND: + raise ValueError("PEFT backend is required for `unfuse_lora()`.") + self.apply(self._unfuse_lora_apply) + + def _unfuse_lora_apply(self, module): + from peft.tuners.tuners_utils import BaseTunerLayer + + if isinstance(module, BaseTunerLayer): + module.unmerge() + + def unload_lora(self): + if not USE_PEFT_BACKEND: + raise ValueError("PEFT backend is required for `unload_lora()`.") + + from ..utils import recurse_remove_peft_layers + + recurse_remove_peft_layers(self) + if hasattr(self, "peft_config"): + del self.peft_config + + def disable_lora(self): + """ + Disables the active LoRA layers of the underlying model. + + Example: + + ```py + from diffusers import AutoPipelineForText2Image + import torch + + pipeline = AutoPipelineForText2Image.from_pretrained( + "stabilityai/stable-diffusion-xl-base-1.0", torch_dtype=torch.float16 + ).to("cuda") + pipeline.load_lora_weights( + "jbilcke-hf/sdxl-cinematic-1", weight_name="pytorch_lora_weights.safetensors", adapter_name="cinematic" + ) + pipeline.disable_lora() + ``` + """ + if not USE_PEFT_BACKEND: + raise ValueError("PEFT backend is required for this method.") + set_adapter_layers(self, enabled=False) + + def enable_lora(self): + """ + Enables the active LoRA layers of the underlying model. + + Example: + + ```py + from diffusers import AutoPipelineForText2Image + import torch + + pipeline = AutoPipelineForText2Image.from_pretrained( + "stabilityai/stable-diffusion-xl-base-1.0", torch_dtype=torch.float16 + ).to("cuda") + pipeline.load_lora_weights( + "jbilcke-hf/sdxl-cinematic-1", weight_name="pytorch_lora_weights.safetensors", adapter_name="cinematic" + ) + pipeline.enable_lora() + ``` + """ + if not USE_PEFT_BACKEND: + raise ValueError("PEFT backend is required for this method.") + set_adapter_layers(self, enabled=True) + + def delete_adapters(self, adapter_names: Union[List[str], str]): + """ + Delete an adapter's LoRA layers from the underlying model. + + Args: + adapter_names (`Union[List[str], str]`): + The names (single string or list of strings) of the adapter to delete. + + Example: + + ```py + from diffusers import AutoPipelineForText2Image + import torch + + pipeline = AutoPipelineForText2Image.from_pretrained( + "stabilityai/stable-diffusion-xl-base-1.0", torch_dtype=torch.float16 + ).to("cuda") + pipeline.load_lora_weights( + "jbilcke-hf/sdxl-cinematic-1", weight_name="pytorch_lora_weights.safetensors", adapter_names="cinematic" + ) + pipeline.delete_adapters("cinematic") + ``` + """ + if not USE_PEFT_BACKEND: + raise ValueError("PEFT backend is required for this method.") + + if isinstance(adapter_names, str): + adapter_names = [adapter_names] + + for adapter_name in adapter_names: + delete_adapter_layers(self, adapter_name) + + # Pop also the corresponding adapter from the config + if hasattr(self, "peft_config"): + self.peft_config.pop(adapter_name, None) diff --git a/venv/lib/python3.11/site-packages/diffusers/loaders/single_file.py b/venv/lib/python3.11/site-packages/diffusers/loaders/single_file.py new file mode 100644 index 0000000000000000000000000000000000000000..c0cbfc7138572d0c6aa74e51776920eeed29d864 --- /dev/null +++ b/venv/lib/python3.11/site-packages/diffusers/loaders/single_file.py @@ -0,0 +1,550 @@ +# Copyright 2024 The HuggingFace Team. All rights reserved. +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. +import importlib +import inspect +import os + +import torch +from huggingface_hub import snapshot_download +from huggingface_hub.utils import LocalEntryNotFoundError, validate_hf_hub_args +from packaging import version + +from ..utils import deprecate, is_transformers_available, logging +from .single_file_utils import ( + SingleFileComponentError, + _is_legacy_scheduler_kwargs, + _is_model_weights_in_cached_folder, + _legacy_load_clip_tokenizer, + _legacy_load_safety_checker, + _legacy_load_scheduler, + create_diffusers_clip_model_from_ldm, + create_diffusers_t5_model_from_checkpoint, + fetch_diffusers_config, + fetch_original_config, + is_clip_model_in_single_file, + is_t5_in_single_file, + load_single_file_checkpoint, +) + + +logger = logging.get_logger(__name__) + +# Legacy behaviour. `from_single_file` does not load the safety checker unless explicitly provided +SINGLE_FILE_OPTIONAL_COMPONENTS = ["safety_checker"] + +if is_transformers_available(): + import transformers + from transformers import PreTrainedModel, PreTrainedTokenizer + + +def load_single_file_sub_model( + library_name, + class_name, + name, + checkpoint, + pipelines, + is_pipeline_module, + cached_model_config_path, + original_config=None, + local_files_only=False, + torch_dtype=None, + is_legacy_loading=False, + **kwargs, +): + if is_pipeline_module: + pipeline_module = getattr(pipelines, library_name) + class_obj = getattr(pipeline_module, class_name) + else: + # else we just import it from the library. + library = importlib.import_module(library_name) + class_obj = getattr(library, class_name) + + if is_transformers_available(): + transformers_version = version.parse(version.parse(transformers.__version__).base_version) + else: + transformers_version = "N/A" + + is_transformers_model = ( + is_transformers_available() + and issubclass(class_obj, PreTrainedModel) + and transformers_version >= version.parse("4.20.0") + ) + is_tokenizer = ( + is_transformers_available() + and issubclass(class_obj, PreTrainedTokenizer) + and transformers_version >= version.parse("4.20.0") + ) + + diffusers_module = importlib.import_module(__name__.split(".")[0]) + is_diffusers_single_file_model = issubclass(class_obj, diffusers_module.FromOriginalModelMixin) + is_diffusers_model = issubclass(class_obj, diffusers_module.ModelMixin) + is_diffusers_scheduler = issubclass(class_obj, diffusers_module.SchedulerMixin) + + if is_diffusers_single_file_model: + load_method = getattr(class_obj, "from_single_file") + + # We cannot provide two different config options to the `from_single_file` method + # Here we have to ignore loading the config from `cached_model_config_path` if `original_config` is provided + if original_config: + cached_model_config_path = None + + loaded_sub_model = load_method( + pretrained_model_link_or_path_or_dict=checkpoint, + original_config=original_config, + config=cached_model_config_path, + subfolder=name, + torch_dtype=torch_dtype, + local_files_only=local_files_only, + **kwargs, + ) + + elif is_transformers_model and is_clip_model_in_single_file(class_obj, checkpoint): + loaded_sub_model = create_diffusers_clip_model_from_ldm( + class_obj, + checkpoint=checkpoint, + config=cached_model_config_path, + subfolder=name, + torch_dtype=torch_dtype, + local_files_only=local_files_only, + is_legacy_loading=is_legacy_loading, + ) + + elif is_transformers_model and is_t5_in_single_file(checkpoint): + loaded_sub_model = create_diffusers_t5_model_from_checkpoint( + class_obj, + checkpoint=checkpoint, + config=cached_model_config_path, + subfolder=name, + torch_dtype=torch_dtype, + local_files_only=local_files_only, + ) + + elif is_tokenizer and is_legacy_loading: + loaded_sub_model = _legacy_load_clip_tokenizer( + class_obj, checkpoint=checkpoint, config=cached_model_config_path, local_files_only=local_files_only + ) + + elif is_diffusers_scheduler and (is_legacy_loading or _is_legacy_scheduler_kwargs(kwargs)): + loaded_sub_model = _legacy_load_scheduler( + class_obj, checkpoint=checkpoint, component_name=name, original_config=original_config, **kwargs + ) + + else: + if not hasattr(class_obj, "from_pretrained"): + raise ValueError( + ( + f"The component {class_obj.__name__} cannot be loaded as it does not seem to have" + " a supported loading method." + ) + ) + + loading_kwargs = {} + loading_kwargs.update( + { + "pretrained_model_name_or_path": cached_model_config_path, + "subfolder": name, + "local_files_only": local_files_only, + } + ) + + # Schedulers and Tokenizers don't make use of torch_dtype + # Skip passing it to those objects + if issubclass(class_obj, torch.nn.Module): + loading_kwargs.update({"torch_dtype": torch_dtype}) + + if is_diffusers_model or is_transformers_model: + if not _is_model_weights_in_cached_folder(cached_model_config_path, name): + raise SingleFileComponentError( + f"Failed to load {class_name}. Weights for this component appear to be missing in the checkpoint." + ) + + load_method = getattr(class_obj, "from_pretrained") + loaded_sub_model = load_method(**loading_kwargs) + + return loaded_sub_model + + +def _map_component_types_to_config_dict(component_types): + diffusers_module = importlib.import_module(__name__.split(".")[0]) + config_dict = {} + component_types.pop("self", None) + + if is_transformers_available(): + transformers_version = version.parse(version.parse(transformers.__version__).base_version) + else: + transformers_version = "N/A" + + for component_name, component_value in component_types.items(): + is_diffusers_model = issubclass(component_value[0], diffusers_module.ModelMixin) + is_scheduler_enum = component_value[0].__name__ == "KarrasDiffusionSchedulers" + is_scheduler = issubclass(component_value[0], diffusers_module.SchedulerMixin) + + is_transformers_model = ( + is_transformers_available() + and issubclass(component_value[0], PreTrainedModel) + and transformers_version >= version.parse("4.20.0") + ) + is_transformers_tokenizer = ( + is_transformers_available() + and issubclass(component_value[0], PreTrainedTokenizer) + and transformers_version >= version.parse("4.20.0") + ) + + if is_diffusers_model and component_name not in SINGLE_FILE_OPTIONAL_COMPONENTS: + config_dict[component_name] = ["diffusers", component_value[0].__name__] + + elif is_scheduler_enum or is_scheduler: + if is_scheduler_enum: + # Since we cannot fetch a scheduler config from the hub, we default to DDIMScheduler + # if the type hint is a KarrassDiffusionSchedulers enum + config_dict[component_name] = ["diffusers", "DDIMScheduler"] + + elif is_scheduler: + config_dict[component_name] = ["diffusers", component_value[0].__name__] + + elif ( + is_transformers_model or is_transformers_tokenizer + ) and component_name not in SINGLE_FILE_OPTIONAL_COMPONENTS: + config_dict[component_name] = ["transformers", component_value[0].__name__] + + else: + config_dict[component_name] = [None, None] + + return config_dict + + +def _infer_pipeline_config_dict(pipeline_class): + parameters = inspect.signature(pipeline_class.__init__).parameters + required_parameters = {k: v for k, v in parameters.items() if v.default == inspect._empty} + component_types = pipeline_class._get_signature_types() + + # Ignore parameters that are not required for the pipeline + component_types = {k: v for k, v in component_types.items() if k in required_parameters} + config_dict = _map_component_types_to_config_dict(component_types) + + return config_dict + + +def _download_diffusers_model_config_from_hub( + pretrained_model_name_or_path, + cache_dir, + revision, + proxies, + force_download=None, + local_files_only=None, + token=None, +): + allow_patterns = ["**/*.json", "*.json", "*.txt", "**/*.txt", "**/*.model"] + cached_model_path = snapshot_download( + pretrained_model_name_or_path, + cache_dir=cache_dir, + revision=revision, + proxies=proxies, + force_download=force_download, + local_files_only=local_files_only, + token=token, + allow_patterns=allow_patterns, + ) + + return cached_model_path + + +class FromSingleFileMixin: + """ + Load model weights saved in the `.ckpt` format into a [`DiffusionPipeline`]. + """ + + @classmethod + @validate_hf_hub_args + def from_single_file(cls, pretrained_model_link_or_path, **kwargs): + r""" + Instantiate a [`DiffusionPipeline`] from pretrained pipeline weights saved in the `.ckpt` or `.safetensors` + format. The pipeline is set in evaluation mode (`model.eval()`) by default. + + Parameters: + pretrained_model_link_or_path (`str` or `os.PathLike`, *optional*): + Can be either: + - A link to the `.ckpt` file (for example + `"https://huggingface.co//blob/main/.ckpt"`) on the Hub. + - A path to a *file* containing all pipeline weights. + torch_dtype (`str` or `torch.dtype`, *optional*): + Override the default `torch.dtype` and load the model with another dtype. + force_download (`bool`, *optional*, defaults to `False`): + Whether or not to force the (re-)download of the model weights and configuration files, overriding the + cached versions if they exist. + cache_dir (`Union[str, os.PathLike]`, *optional*): + Path to a directory where a downloaded pretrained model configuration is cached if the standard cache + is not used. + + proxies (`Dict[str, str]`, *optional*): + A dictionary of proxy servers to use by protocol or endpoint, for example, `{'http': 'foo.bar:3128', + 'http://hostname': 'foo.bar:4012'}`. The proxies are used on each request. + local_files_only (`bool`, *optional*, defaults to `False`): + Whether to only load local model weights and configuration files or not. If set to `True`, the model + won't be downloaded from the Hub. + token (`str` or *bool*, *optional*): + The token to use as HTTP bearer authorization for remote files. If `True`, the token generated from + `diffusers-cli login` (stored in `~/.huggingface`) is used. + revision (`str`, *optional*, defaults to `"main"`): + The specific model version to use. It can be a branch name, a tag name, a commit id, or any identifier + allowed by Git. + original_config_file (`str`, *optional*): + The path to the original config file that was used to train the model. If not provided, the config file + will be inferred from the checkpoint file. + config (`str`, *optional*): + Can be either: + - A string, the *repo id* (for example `CompVis/ldm-text2im-large-256`) of a pretrained pipeline + hosted on the Hub. + - A path to a *directory* (for example `./my_pipeline_directory/`) containing the pipeline + component configs in Diffusers format. + kwargs (remaining dictionary of keyword arguments, *optional*): + Can be used to overwrite load and saveable variables (the pipeline components of the specific pipeline + class). The overwritten components are passed directly to the pipelines `__init__` method. See example + below for more information. + + Examples: + + ```py + >>> from diffusers import StableDiffusionPipeline + + >>> # Download pipeline from huggingface.co and cache. + >>> pipeline = StableDiffusionPipeline.from_single_file( + ... "https://huggingface.co/WarriorMama777/OrangeMixs/blob/main/Models/AbyssOrangeMix/AbyssOrangeMix.safetensors" + ... ) + + >>> # Download pipeline from local file + >>> # file is downloaded under ./v1-5-pruned-emaonly.ckpt + >>> pipeline = StableDiffusionPipeline.from_single_file("./v1-5-pruned-emaonly.ckpt") + + >>> # Enable float16 and move to GPU + >>> pipeline = StableDiffusionPipeline.from_single_file( + ... "https://huggingface.co/runwayml/stable-diffusion-v1-5/blob/main/v1-5-pruned-emaonly.ckpt", + ... torch_dtype=torch.float16, + ... ) + >>> pipeline.to("cuda") + ``` + + """ + original_config_file = kwargs.pop("original_config_file", None) + config = kwargs.pop("config", None) + original_config = kwargs.pop("original_config", None) + + if original_config_file is not None: + deprecation_message = ( + "`original_config_file` argument is deprecated and will be removed in future versions." + "please use the `original_config` argument instead." + ) + deprecate("original_config_file", "1.0.0", deprecation_message) + original_config = original_config_file + + force_download = kwargs.pop("force_download", False) + proxies = kwargs.pop("proxies", None) + token = kwargs.pop("token", None) + cache_dir = kwargs.pop("cache_dir", None) + local_files_only = kwargs.pop("local_files_only", False) + revision = kwargs.pop("revision", None) + torch_dtype = kwargs.pop("torch_dtype", None) + + is_legacy_loading = False + + # We shouldn't allow configuring individual models components through a Pipeline creation method + # These model kwargs should be deprecated + scaling_factor = kwargs.get("scaling_factor", None) + if scaling_factor is not None: + deprecation_message = ( + "Passing the `scaling_factor` argument to `from_single_file is deprecated " + "and will be ignored in future versions." + ) + deprecate("scaling_factor", "1.0.0", deprecation_message) + + if original_config is not None: + original_config = fetch_original_config(original_config, local_files_only=local_files_only) + + from ..pipelines.pipeline_utils import _get_pipeline_class + + pipeline_class = _get_pipeline_class(cls, config=None) + + checkpoint = load_single_file_checkpoint( + pretrained_model_link_or_path, + force_download=force_download, + proxies=proxies, + token=token, + cache_dir=cache_dir, + local_files_only=local_files_only, + revision=revision, + ) + + if config is None: + config = fetch_diffusers_config(checkpoint) + default_pretrained_model_config_name = config["pretrained_model_name_or_path"] + else: + default_pretrained_model_config_name = config + + if not os.path.isdir(default_pretrained_model_config_name): + # Provided config is a repo_id + if default_pretrained_model_config_name.count("/") > 1: + raise ValueError( + f'The provided config "{config}"' + " is neither a valid local path nor a valid repo id. Please check the parameter." + ) + try: + # Attempt to download the config files for the pipeline + cached_model_config_path = _download_diffusers_model_config_from_hub( + default_pretrained_model_config_name, + cache_dir=cache_dir, + revision=revision, + proxies=proxies, + force_download=force_download, + local_files_only=local_files_only, + token=token, + ) + config_dict = pipeline_class.load_config(cached_model_config_path) + + except LocalEntryNotFoundError: + # `local_files_only=True` but a local diffusers format model config is not available in the cache + # If `original_config` is not provided, we need override `local_files_only` to False + # to fetch the config files from the hub so that we have a way + # to configure the pipeline components. + + if original_config is None: + logger.warning( + "`local_files_only` is True but no local configs were found for this checkpoint.\n" + "Attempting to download the necessary config files for this pipeline.\n" + ) + cached_model_config_path = _download_diffusers_model_config_from_hub( + default_pretrained_model_config_name, + cache_dir=cache_dir, + revision=revision, + proxies=proxies, + force_download=force_download, + local_files_only=False, + token=token, + ) + config_dict = pipeline_class.load_config(cached_model_config_path) + + else: + # For backwards compatibility + # If `original_config` is provided, then we need to assume we are using legacy loading for pipeline components + logger.warning( + "Detected legacy `from_single_file` loading behavior. Attempting to create the pipeline based on inferred components.\n" + "This may lead to errors if the model components are not correctly inferred. \n" + "To avoid this warning, please explicity pass the `config` argument to `from_single_file` with a path to a local diffusers model repo \n" + "e.g. `from_single_file(, config=) \n" + "or run `from_single_file` with `local_files_only=False` first to update the local cache directory with " + "the necessary config files.\n" + ) + is_legacy_loading = True + cached_model_config_path = None + + config_dict = _infer_pipeline_config_dict(pipeline_class) + config_dict["_class_name"] = pipeline_class.__name__ + + else: + # Provided config is a path to a local directory attempt to load directly. + cached_model_config_path = default_pretrained_model_config_name + config_dict = pipeline_class.load_config(cached_model_config_path) + + # pop out "_ignore_files" as it is only needed for download + config_dict.pop("_ignore_files", None) + + expected_modules, optional_kwargs = pipeline_class._get_signature_keys(cls) + passed_class_obj = {k: kwargs.pop(k) for k in expected_modules if k in kwargs} + passed_pipe_kwargs = {k: kwargs.pop(k) for k in optional_kwargs if k in kwargs} + + init_dict, unused_kwargs, _ = pipeline_class.extract_init_dict(config_dict, **kwargs) + init_kwargs = {k: init_dict.pop(k) for k in optional_kwargs if k in init_dict} + init_kwargs = {**init_kwargs, **passed_pipe_kwargs} + + from diffusers import pipelines + + # remove `null` components + def load_module(name, value): + if value[0] is None: + return False + if name in passed_class_obj and passed_class_obj[name] is None: + return False + if name in SINGLE_FILE_OPTIONAL_COMPONENTS: + return False + + return True + + init_dict = {k: v for k, v in init_dict.items() if load_module(k, v)} + + for name, (library_name, class_name) in logging.tqdm( + sorted(init_dict.items()), desc="Loading pipeline components..." + ): + loaded_sub_model = None + is_pipeline_module = hasattr(pipelines, library_name) + + if name in passed_class_obj: + loaded_sub_model = passed_class_obj[name] + + else: + try: + loaded_sub_model = load_single_file_sub_model( + library_name=library_name, + class_name=class_name, + name=name, + checkpoint=checkpoint, + is_pipeline_module=is_pipeline_module, + cached_model_config_path=cached_model_config_path, + pipelines=pipelines, + torch_dtype=torch_dtype, + original_config=original_config, + local_files_only=local_files_only, + is_legacy_loading=is_legacy_loading, + **kwargs, + ) + except SingleFileComponentError as e: + raise SingleFileComponentError( + ( + f"{e.message}\n" + f"Please load the component before passing it in as an argument to `from_single_file`.\n" + f"\n" + f"{name} = {class_name}.from_pretrained('...')\n" + f"pipe = {pipeline_class.__name__}.from_single_file(, {name}={name})\n" + f"\n" + ) + ) + + init_kwargs[name] = loaded_sub_model + + missing_modules = set(expected_modules) - set(init_kwargs.keys()) + passed_modules = list(passed_class_obj.keys()) + optional_modules = pipeline_class._optional_components + + if len(missing_modules) > 0 and missing_modules <= set(passed_modules + optional_modules): + for module in missing_modules: + init_kwargs[module] = passed_class_obj.get(module, None) + elif len(missing_modules) > 0: + passed_modules = set(list(init_kwargs.keys()) + list(passed_class_obj.keys())) - optional_kwargs + raise ValueError( + f"Pipeline {pipeline_class} expected {expected_modules}, but only {passed_modules} were passed." + ) + + # deprecated kwargs + load_safety_checker = kwargs.pop("load_safety_checker", None) + if load_safety_checker is not None: + deprecation_message = ( + "Please pass instances of `StableDiffusionSafetyChecker` and `AutoImageProcessor`" + "using the `safety_checker` and `feature_extractor` arguments in `from_single_file`" + ) + deprecate("load_safety_checker", "1.0.0", deprecation_message) + + safety_checker_components = _legacy_load_safety_checker(local_files_only, torch_dtype) + init_kwargs.update(safety_checker_components) + + pipe = pipeline_class(**init_kwargs) + + return pipe diff --git a/venv/lib/python3.11/site-packages/diffusers/loaders/single_file_model.py b/venv/lib/python3.11/site-packages/diffusers/loaders/single_file_model.py new file mode 100644 index 0000000000000000000000000000000000000000..79dc2691b9e424c4c645ee94eb7c5dd7a70ce94e --- /dev/null +++ b/venv/lib/python3.11/site-packages/diffusers/loaders/single_file_model.py @@ -0,0 +1,385 @@ +# Copyright 2024 The HuggingFace Team. All rights reserved. +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. +import importlib +import inspect +import re +from contextlib import nullcontext +from typing import Optional + +import torch +from huggingface_hub.utils import validate_hf_hub_args + +from ..quantizers import DiffusersAutoQuantizer +from ..utils import deprecate, is_accelerate_available, logging +from .single_file_utils import ( + SingleFileComponentError, + convert_animatediff_checkpoint_to_diffusers, + convert_autoencoder_dc_checkpoint_to_diffusers, + convert_controlnet_checkpoint, + convert_flux_transformer_checkpoint_to_diffusers, + convert_hunyuan_video_transformer_to_diffusers, + convert_ldm_unet_checkpoint, + convert_ldm_vae_checkpoint, + convert_ltx_transformer_checkpoint_to_diffusers, + convert_ltx_vae_checkpoint_to_diffusers, + convert_mochi_transformer_checkpoint_to_diffusers, + convert_sd3_transformer_checkpoint_to_diffusers, + convert_stable_cascade_unet_single_file_to_diffusers, + create_controlnet_diffusers_config_from_ldm, + create_unet_diffusers_config_from_ldm, + create_vae_diffusers_config_from_ldm, + fetch_diffusers_config, + fetch_original_config, + load_single_file_checkpoint, +) + + +logger = logging.get_logger(__name__) + + +if is_accelerate_available(): + from accelerate import init_empty_weights + + from ..models.modeling_utils import load_model_dict_into_meta + + +SINGLE_FILE_LOADABLE_CLASSES = { + "StableCascadeUNet": { + "checkpoint_mapping_fn": convert_stable_cascade_unet_single_file_to_diffusers, + }, + "UNet2DConditionModel": { + "checkpoint_mapping_fn": convert_ldm_unet_checkpoint, + "config_mapping_fn": create_unet_diffusers_config_from_ldm, + "default_subfolder": "unet", + "legacy_kwargs": { + "num_in_channels": "in_channels", # Legacy kwargs supported by `from_single_file` mapped to new args + }, + }, + "AutoencoderKL": { + "checkpoint_mapping_fn": convert_ldm_vae_checkpoint, + "config_mapping_fn": create_vae_diffusers_config_from_ldm, + "default_subfolder": "vae", + }, + "ControlNetModel": { + "checkpoint_mapping_fn": convert_controlnet_checkpoint, + "config_mapping_fn": create_controlnet_diffusers_config_from_ldm, + }, + "SD3Transformer2DModel": { + "checkpoint_mapping_fn": convert_sd3_transformer_checkpoint_to_diffusers, + "default_subfolder": "transformer", + }, + "MotionAdapter": { + "checkpoint_mapping_fn": convert_animatediff_checkpoint_to_diffusers, + }, + "SparseControlNetModel": { + "checkpoint_mapping_fn": convert_animatediff_checkpoint_to_diffusers, + }, + "FluxTransformer2DModel": { + "checkpoint_mapping_fn": convert_flux_transformer_checkpoint_to_diffusers, + "default_subfolder": "transformer", + }, + "LTXVideoTransformer3DModel": { + "checkpoint_mapping_fn": convert_ltx_transformer_checkpoint_to_diffusers, + "default_subfolder": "transformer", + }, + "AutoencoderKLLTXVideo": { + "checkpoint_mapping_fn": convert_ltx_vae_checkpoint_to_diffusers, + "default_subfolder": "vae", + }, + "AutoencoderDC": {"checkpoint_mapping_fn": convert_autoencoder_dc_checkpoint_to_diffusers}, + "MochiTransformer3DModel": { + "checkpoint_mapping_fn": convert_mochi_transformer_checkpoint_to_diffusers, + "default_subfolder": "transformer", + }, + "HunyuanVideoTransformer3DModel": { + "checkpoint_mapping_fn": convert_hunyuan_video_transformer_to_diffusers, + "default_subfolder": "transformer", + }, +} + + +def _get_single_file_loadable_mapping_class(cls): + diffusers_module = importlib.import_module(__name__.split(".")[0]) + for loadable_class_str in SINGLE_FILE_LOADABLE_CLASSES: + loadable_class = getattr(diffusers_module, loadable_class_str) + + if issubclass(cls, loadable_class): + return loadable_class_str + + return None + + +def _get_mapping_function_kwargs(mapping_fn, **kwargs): + parameters = inspect.signature(mapping_fn).parameters + + mapping_kwargs = {} + for parameter in parameters: + if parameter in kwargs: + mapping_kwargs[parameter] = kwargs[parameter] + + return mapping_kwargs + + +class FromOriginalModelMixin: + """ + Load pretrained weights saved in the `.ckpt` or `.safetensors` format into a model. + """ + + @classmethod + @validate_hf_hub_args + def from_single_file(cls, pretrained_model_link_or_path_or_dict: Optional[str] = None, **kwargs): + r""" + Instantiate a model from pretrained weights saved in the original `.ckpt` or `.safetensors` format. The model + is set in evaluation mode (`model.eval()`) by default. + + Parameters: + pretrained_model_link_or_path_or_dict (`str`, *optional*): + Can be either: + - A link to the `.safetensors` or `.ckpt` file (for example + `"https://huggingface.co//blob/main/.safetensors"`) on the Hub. + - A path to a local *file* containing the weights of the component model. + - A state dict containing the component model weights. + config (`str`, *optional*): + - A string, the *repo id* (for example `CompVis/ldm-text2im-large-256`) of a pretrained pipeline hosted + on the Hub. + - A path to a *directory* (for example `./my_pipeline_directory/`) containing the pipeline component + configs in Diffusers format. + subfolder (`str`, *optional*, defaults to `""`): + The subfolder location of a model file within a larger model repository on the Hub or locally. + original_config (`str`, *optional*): + Dict or path to a yaml file containing the configuration for the model in its original format. + If a dict is provided, it will be used to initialize the model configuration. + torch_dtype (`str` or `torch.dtype`, *optional*): + Override the default `torch.dtype` and load the model with another dtype. If `"auto"` is passed, the + dtype is automatically derived from the model's weights. + force_download (`bool`, *optional*, defaults to `False`): + Whether or not to force the (re-)download of the model weights and configuration files, overriding the + cached versions if they exist. + cache_dir (`Union[str, os.PathLike]`, *optional*): + Path to a directory where a downloaded pretrained model configuration is cached if the standard cache + is not used. + + proxies (`Dict[str, str]`, *optional*): + A dictionary of proxy servers to use by protocol or endpoint, for example, `{'http': 'foo.bar:3128', + 'http://hostname': 'foo.bar:4012'}`. The proxies are used on each request. + local_files_only (`bool`, *optional*, defaults to `False`): + Whether to only load local model weights and configuration files or not. If set to True, the model + won't be downloaded from the Hub. + token (`str` or *bool*, *optional*): + The token to use as HTTP bearer authorization for remote files. If `True`, the token generated from + `diffusers-cli login` (stored in `~/.huggingface`) is used. + revision (`str`, *optional*, defaults to `"main"`): + The specific model version to use. It can be a branch name, a tag name, a commit id, or any identifier + allowed by Git. + kwargs (remaining dictionary of keyword arguments, *optional*): + Can be used to overwrite load and saveable variables (for example the pipeline components of the + specific pipeline class). The overwritten components are directly passed to the pipelines `__init__` + method. See example below for more information. + + ```py + >>> from diffusers import StableCascadeUNet + + >>> ckpt_path = "https://huggingface.co/stabilityai/stable-cascade/blob/main/stage_b_lite.safetensors" + >>> model = StableCascadeUNet.from_single_file(ckpt_path) + ``` + """ + + mapping_class_name = _get_single_file_loadable_mapping_class(cls) + # if class_name not in SINGLE_FILE_LOADABLE_CLASSES: + if mapping_class_name is None: + raise ValueError( + f"FromOriginalModelMixin is currently only compatible with {', '.join(SINGLE_FILE_LOADABLE_CLASSES.keys())}" + ) + + pretrained_model_link_or_path = kwargs.get("pretrained_model_link_or_path", None) + if pretrained_model_link_or_path is not None: + deprecation_message = ( + "Please use `pretrained_model_link_or_path_or_dict` argument instead for model classes" + ) + deprecate("pretrained_model_link_or_path", "1.0.0", deprecation_message) + pretrained_model_link_or_path_or_dict = pretrained_model_link_or_path + + config = kwargs.pop("config", None) + original_config = kwargs.pop("original_config", None) + + if config is not None and original_config is not None: + raise ValueError( + "`from_single_file` cannot accept both `config` and `original_config` arguments. Please provide only one of these arguments" + ) + + force_download = kwargs.pop("force_download", False) + proxies = kwargs.pop("proxies", None) + token = kwargs.pop("token", None) + cache_dir = kwargs.pop("cache_dir", None) + local_files_only = kwargs.pop("local_files_only", None) + subfolder = kwargs.pop("subfolder", None) + revision = kwargs.pop("revision", None) + config_revision = kwargs.pop("config_revision", None) + torch_dtype = kwargs.pop("torch_dtype", None) + quantization_config = kwargs.pop("quantization_config", None) + device = kwargs.pop("device", None) + + if isinstance(pretrained_model_link_or_path_or_dict, dict): + checkpoint = pretrained_model_link_or_path_or_dict + else: + checkpoint = load_single_file_checkpoint( + pretrained_model_link_or_path_or_dict, + force_download=force_download, + proxies=proxies, + token=token, + cache_dir=cache_dir, + local_files_only=local_files_only, + revision=revision, + ) + if quantization_config is not None: + hf_quantizer = DiffusersAutoQuantizer.from_config(quantization_config) + hf_quantizer.validate_environment() + + else: + hf_quantizer = None + + mapping_functions = SINGLE_FILE_LOADABLE_CLASSES[mapping_class_name] + + checkpoint_mapping_fn = mapping_functions["checkpoint_mapping_fn"] + if original_config is not None: + if "config_mapping_fn" in mapping_functions: + config_mapping_fn = mapping_functions["config_mapping_fn"] + else: + config_mapping_fn = None + + if config_mapping_fn is None: + raise ValueError( + ( + f"`original_config` has been provided for {mapping_class_name} but no mapping function" + "was found to convert the original config to a Diffusers config in" + "`diffusers.loaders.single_file_utils`" + ) + ) + + if isinstance(original_config, str): + # If original_config is a URL or filepath fetch the original_config dict + original_config = fetch_original_config(original_config, local_files_only=local_files_only) + + config_mapping_kwargs = _get_mapping_function_kwargs(config_mapping_fn, **kwargs) + diffusers_model_config = config_mapping_fn( + original_config=original_config, checkpoint=checkpoint, **config_mapping_kwargs + ) + else: + if config is not None: + if isinstance(config, str): + default_pretrained_model_config_name = config + else: + raise ValueError( + ( + "Invalid `config` argument. Please provide a string representing a repo id" + "or path to a local Diffusers model repo." + ) + ) + + else: + config = fetch_diffusers_config(checkpoint) + default_pretrained_model_config_name = config["pretrained_model_name_or_path"] + + if "default_subfolder" in mapping_functions: + subfolder = mapping_functions["default_subfolder"] + + subfolder = subfolder or config.pop( + "subfolder", None + ) # some configs contain a subfolder key, e.g. StableCascadeUNet + + diffusers_model_config = cls.load_config( + pretrained_model_name_or_path=default_pretrained_model_config_name, + subfolder=subfolder, + local_files_only=local_files_only, + token=token, + revision=config_revision, + ) + expected_kwargs, optional_kwargs = cls._get_signature_keys(cls) + + # Map legacy kwargs to new kwargs + if "legacy_kwargs" in mapping_functions: + legacy_kwargs = mapping_functions["legacy_kwargs"] + for legacy_key, new_key in legacy_kwargs.items(): + if legacy_key in kwargs: + kwargs[new_key] = kwargs.pop(legacy_key) + + model_kwargs = {k: kwargs.get(k) for k in kwargs if k in expected_kwargs or k in optional_kwargs} + diffusers_model_config.update(model_kwargs) + + checkpoint_mapping_kwargs = _get_mapping_function_kwargs(checkpoint_mapping_fn, **kwargs) + diffusers_format_checkpoint = checkpoint_mapping_fn( + config=diffusers_model_config, checkpoint=checkpoint, **checkpoint_mapping_kwargs + ) + if not diffusers_format_checkpoint: + raise SingleFileComponentError( + f"Failed to load {mapping_class_name}. Weights for this component appear to be missing in the checkpoint." + ) + + ctx = init_empty_weights if is_accelerate_available() else nullcontext + with ctx(): + model = cls.from_config(diffusers_model_config) + + # Check if `_keep_in_fp32_modules` is not None + use_keep_in_fp32_modules = (cls._keep_in_fp32_modules is not None) and ( + (torch_dtype == torch.float16) or hasattr(hf_quantizer, "use_keep_in_fp32_modules") + ) + if use_keep_in_fp32_modules: + keep_in_fp32_modules = cls._keep_in_fp32_modules + if not isinstance(keep_in_fp32_modules, list): + keep_in_fp32_modules = [keep_in_fp32_modules] + + else: + keep_in_fp32_modules = [] + + if hf_quantizer is not None: + hf_quantizer.preprocess_model( + model=model, + device_map=None, + state_dict=diffusers_format_checkpoint, + keep_in_fp32_modules=keep_in_fp32_modules, + ) + + if is_accelerate_available(): + param_device = torch.device(device) if device else torch.device("cpu") + unexpected_keys = load_model_dict_into_meta( + model, + diffusers_format_checkpoint, + dtype=torch_dtype, + device=param_device, + hf_quantizer=hf_quantizer, + keep_in_fp32_modules=keep_in_fp32_modules, + ) + + else: + _, unexpected_keys = model.load_state_dict(diffusers_format_checkpoint, strict=False) + + if model._keys_to_ignore_on_load_unexpected is not None: + for pat in model._keys_to_ignore_on_load_unexpected: + unexpected_keys = [k for k in unexpected_keys if re.search(pat, k) is None] + + if len(unexpected_keys) > 0: + logger.warning( + f"Some weights of the model checkpoint were not used when initializing {cls.__name__}: \n {[', '.join(unexpected_keys)]}" + ) + + if hf_quantizer is not None: + hf_quantizer.postprocess_model(model) + model.hf_quantizer = hf_quantizer + + if torch_dtype is not None and hf_quantizer is None: + model.to(torch_dtype) + + model.eval() + + return model diff --git a/venv/lib/python3.11/site-packages/diffusers/loaders/single_file_utils.py b/venv/lib/python3.11/site-packages/diffusers/loaders/single_file_utils.py new file mode 100644 index 0000000000000000000000000000000000000000..b623576e3990cb89e208fb22851c7ccdb56aacde --- /dev/null +++ b/venv/lib/python3.11/site-packages/diffusers/loaders/single_file_utils.py @@ -0,0 +1,2683 @@ +# coding=utf-8 +# Copyright 2024 The HuggingFace Inc. team. +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. +"""Conversion script for the Stable Diffusion checkpoints.""" + +import copy +import os +import re +from contextlib import nullcontext +from io import BytesIO +from urllib.parse import urlparse + +import requests +import torch +import yaml + +from ..models.modeling_utils import load_state_dict +from ..schedulers import ( + DDIMScheduler, + DPMSolverMultistepScheduler, + EDMDPMSolverMultistepScheduler, + EulerAncestralDiscreteScheduler, + EulerDiscreteScheduler, + HeunDiscreteScheduler, + LMSDiscreteScheduler, + PNDMScheduler, +) +from ..utils import ( + SAFETENSORS_WEIGHTS_NAME, + WEIGHTS_NAME, + deprecate, + is_accelerate_available, + is_transformers_available, + logging, +) +from ..utils.hub_utils import _get_model_file + + +if is_transformers_available(): + from transformers import AutoImageProcessor + +if is_accelerate_available(): + from accelerate import init_empty_weights + + from ..models.modeling_utils import load_model_dict_into_meta + +logger = logging.get_logger(__name__) # pylint: disable=invalid-name + +CHECKPOINT_KEY_NAMES = { + "v2": "model.diffusion_model.input_blocks.2.1.transformer_blocks.0.attn2.to_k.weight", + "xl_base": "conditioner.embedders.1.model.transformer.resblocks.9.mlp.c_proj.bias", + "xl_refiner": "conditioner.embedders.0.model.transformer.resblocks.9.mlp.c_proj.bias", + "upscale": "model.diffusion_model.input_blocks.10.0.skip_connection.bias", + "controlnet": [ + "control_model.time_embed.0.weight", + "controlnet_cond_embedding.conv_in.weight", + ], + # TODO: find non-Diffusers keys for controlnet_xl + "controlnet_xl": "add_embedding.linear_1.weight", + "controlnet_xl_large": "down_blocks.1.attentions.0.transformer_blocks.0.attn1.to_k.weight", + "controlnet_xl_mid": "down_blocks.1.attentions.0.norm.weight", + "playground-v2-5": "edm_mean", + "inpainting": "model.diffusion_model.input_blocks.0.0.weight", + "clip": "cond_stage_model.transformer.text_model.embeddings.position_embedding.weight", + "clip_sdxl": "conditioner.embedders.0.transformer.text_model.embeddings.position_embedding.weight", + "clip_sd3": "text_encoders.clip_l.transformer.text_model.embeddings.position_embedding.weight", + "open_clip": "cond_stage_model.model.token_embedding.weight", + "open_clip_sdxl": "conditioner.embedders.1.model.positional_embedding", + "open_clip_sdxl_refiner": "conditioner.embedders.0.model.text_projection", + "open_clip_sd3": "text_encoders.clip_g.transformer.text_model.embeddings.position_embedding.weight", + "stable_cascade_stage_b": "down_blocks.1.0.channelwise.0.weight", + "stable_cascade_stage_c": "clip_txt_mapper.weight", + "sd3": [ + "joint_blocks.0.context_block.adaLN_modulation.1.bias", + "model.diffusion_model.joint_blocks.0.context_block.adaLN_modulation.1.bias", + ], + "sd35_large": [ + "joint_blocks.37.x_block.mlp.fc1.weight", + "model.diffusion_model.joint_blocks.37.x_block.mlp.fc1.weight", + ], + "animatediff": "down_blocks.0.motion_modules.0.temporal_transformer.transformer_blocks.0.attention_blocks.0.pos_encoder.pe", + "animatediff_v2": "mid_block.motion_modules.0.temporal_transformer.norm.bias", + "animatediff_sdxl_beta": "up_blocks.2.motion_modules.0.temporal_transformer.norm.weight", + "animatediff_scribble": "controlnet_cond_embedding.conv_in.weight", + "animatediff_rgb": "controlnet_cond_embedding.weight", + "flux": [ + "double_blocks.0.img_attn.norm.key_norm.scale", + "model.diffusion_model.double_blocks.0.img_attn.norm.key_norm.scale", + ], + "ltx-video": [ + "model.diffusion_model.patchify_proj.weight", + "model.diffusion_model.transformer_blocks.27.scale_shift_table", + "patchify_proj.weight", + "transformer_blocks.27.scale_shift_table", + "vae.per_channel_statistics.mean-of-means", + ], + "autoencoder-dc": "decoder.stages.1.op_list.0.main.conv.conv.bias", + "autoencoder-dc-sana": "encoder.project_in.conv.bias", + "mochi-1-preview": ["model.diffusion_model.blocks.0.attn.qkv_x.weight", "blocks.0.attn.qkv_x.weight"], + "hunyuan-video": "txt_in.individual_token_refiner.blocks.0.adaLN_modulation.1.bias", +} + +DIFFUSERS_DEFAULT_PIPELINE_PATHS = { + "xl_base": {"pretrained_model_name_or_path": "stabilityai/stable-diffusion-xl-base-1.0"}, + "xl_refiner": {"pretrained_model_name_or_path": "stabilityai/stable-diffusion-xl-refiner-1.0"}, + "xl_inpaint": {"pretrained_model_name_or_path": "diffusers/stable-diffusion-xl-1.0-inpainting-0.1"}, + "playground-v2-5": {"pretrained_model_name_or_path": "playgroundai/playground-v2.5-1024px-aesthetic"}, + "upscale": {"pretrained_model_name_or_path": "stabilityai/stable-diffusion-x4-upscaler"}, + "inpainting": {"pretrained_model_name_or_path": "stable-diffusion-v1-5/stable-diffusion-inpainting"}, + "inpainting_v2": {"pretrained_model_name_or_path": "stabilityai/stable-diffusion-2-inpainting"}, + "controlnet": {"pretrained_model_name_or_path": "lllyasviel/control_v11p_sd15_canny"}, + "controlnet_xl_large": {"pretrained_model_name_or_path": "diffusers/controlnet-canny-sdxl-1.0"}, + "controlnet_xl_mid": {"pretrained_model_name_or_path": "diffusers/controlnet-canny-sdxl-1.0-mid"}, + "controlnet_xl_small": {"pretrained_model_name_or_path": "diffusers/controlnet-canny-sdxl-1.0-small"}, + "v2": {"pretrained_model_name_or_path": "stabilityai/stable-diffusion-2-1"}, + "v1": {"pretrained_model_name_or_path": "stable-diffusion-v1-5/stable-diffusion-v1-5"}, + "stable_cascade_stage_b": {"pretrained_model_name_or_path": "stabilityai/stable-cascade", "subfolder": "decoder"}, + "stable_cascade_stage_b_lite": { + "pretrained_model_name_or_path": "stabilityai/stable-cascade", + "subfolder": "decoder_lite", + }, + "stable_cascade_stage_c": { + "pretrained_model_name_or_path": "stabilityai/stable-cascade-prior", + "subfolder": "prior", + }, + "stable_cascade_stage_c_lite": { + "pretrained_model_name_or_path": "stabilityai/stable-cascade-prior", + "subfolder": "prior_lite", + }, + "sd3": { + "pretrained_model_name_or_path": "stabilityai/stable-diffusion-3-medium-diffusers", + }, + "sd35_large": { + "pretrained_model_name_or_path": "stabilityai/stable-diffusion-3.5-large", + }, + "sd35_medium": { + "pretrained_model_name_or_path": "stabilityai/stable-diffusion-3.5-medium", + }, + "animatediff_v1": {"pretrained_model_name_or_path": "guoyww/animatediff-motion-adapter-v1-5"}, + "animatediff_v2": {"pretrained_model_name_or_path": "guoyww/animatediff-motion-adapter-v1-5-2"}, + "animatediff_v3": {"pretrained_model_name_or_path": "guoyww/animatediff-motion-adapter-v1-5-3"}, + "animatediff_sdxl_beta": {"pretrained_model_name_or_path": "guoyww/animatediff-motion-adapter-sdxl-beta"}, + "animatediff_scribble": {"pretrained_model_name_or_path": "guoyww/animatediff-sparsectrl-scribble"}, + "animatediff_rgb": {"pretrained_model_name_or_path": "guoyww/animatediff-sparsectrl-rgb"}, + "flux-dev": {"pretrained_model_name_or_path": "black-forest-labs/FLUX.1-dev"}, + "flux-fill": {"pretrained_model_name_or_path": "black-forest-labs/FLUX.1-Fill-dev"}, + "flux-depth": {"pretrained_model_name_or_path": "black-forest-labs/FLUX.1-Depth-dev"}, + "flux-schnell": {"pretrained_model_name_or_path": "black-forest-labs/FLUX.1-schnell"}, + "ltx-video": {"pretrained_model_name_or_path": "diffusers/LTX-Video-0.9.0"}, + "ltx-video-0.9.1": {"pretrained_model_name_or_path": "diffusers/LTX-Video-0.9.1"}, + "autoencoder-dc-f128c512": {"pretrained_model_name_or_path": "mit-han-lab/dc-ae-f128c512-mix-1.0-diffusers"}, + "autoencoder-dc-f64c128": {"pretrained_model_name_or_path": "mit-han-lab/dc-ae-f64c128-mix-1.0-diffusers"}, + "autoencoder-dc-f32c32": {"pretrained_model_name_or_path": "mit-han-lab/dc-ae-f32c32-mix-1.0-diffusers"}, + "autoencoder-dc-f32c32-sana": {"pretrained_model_name_or_path": "mit-han-lab/dc-ae-f32c32-sana-1.0-diffusers"}, + "mochi-1-preview": {"pretrained_model_name_or_path": "genmo/mochi-1-preview"}, + "hunyuan-video": {"pretrained_model_name_or_path": "hunyuanvideo-community/HunyuanVideo"}, +} + +# Use to configure model sample size when original config is provided +DIFFUSERS_TO_LDM_DEFAULT_IMAGE_SIZE_MAP = { + "xl_base": 1024, + "xl_refiner": 1024, + "xl_inpaint": 1024, + "playground-v2-5": 1024, + "upscale": 512, + "inpainting": 512, + "inpainting_v2": 512, + "controlnet": 512, + "v2": 768, + "v1": 512, +} + + +DIFFUSERS_TO_LDM_MAPPING = { + "unet": { + "layers": { + "time_embedding.linear_1.weight": "time_embed.0.weight", + "time_embedding.linear_1.bias": "time_embed.0.bias", + "time_embedding.linear_2.weight": "time_embed.2.weight", + "time_embedding.linear_2.bias": "time_embed.2.bias", + "conv_in.weight": "input_blocks.0.0.weight", + "conv_in.bias": "input_blocks.0.0.bias", + "conv_norm_out.weight": "out.0.weight", + "conv_norm_out.bias": "out.0.bias", + "conv_out.weight": "out.2.weight", + "conv_out.bias": "out.2.bias", + }, + "class_embed_type": { + "class_embedding.linear_1.weight": "label_emb.0.0.weight", + "class_embedding.linear_1.bias": "label_emb.0.0.bias", + "class_embedding.linear_2.weight": "label_emb.0.2.weight", + "class_embedding.linear_2.bias": "label_emb.0.2.bias", + }, + "addition_embed_type": { + "add_embedding.linear_1.weight": "label_emb.0.0.weight", + "add_embedding.linear_1.bias": "label_emb.0.0.bias", + "add_embedding.linear_2.weight": "label_emb.0.2.weight", + "add_embedding.linear_2.bias": "label_emb.0.2.bias", + }, + }, + "controlnet": { + "layers": { + "time_embedding.linear_1.weight": "time_embed.0.weight", + "time_embedding.linear_1.bias": "time_embed.0.bias", + "time_embedding.linear_2.weight": "time_embed.2.weight", + "time_embedding.linear_2.bias": "time_embed.2.bias", + "conv_in.weight": "input_blocks.0.0.weight", + "conv_in.bias": "input_blocks.0.0.bias", + "controlnet_cond_embedding.conv_in.weight": "input_hint_block.0.weight", + "controlnet_cond_embedding.conv_in.bias": "input_hint_block.0.bias", + "controlnet_cond_embedding.conv_out.weight": "input_hint_block.14.weight", + "controlnet_cond_embedding.conv_out.bias": "input_hint_block.14.bias", + }, + "class_embed_type": { + "class_embedding.linear_1.weight": "label_emb.0.0.weight", + "class_embedding.linear_1.bias": "label_emb.0.0.bias", + "class_embedding.linear_2.weight": "label_emb.0.2.weight", + "class_embedding.linear_2.bias": "label_emb.0.2.bias", + }, + "addition_embed_type": { + "add_embedding.linear_1.weight": "label_emb.0.0.weight", + "add_embedding.linear_1.bias": "label_emb.0.0.bias", + "add_embedding.linear_2.weight": "label_emb.0.2.weight", + "add_embedding.linear_2.bias": "label_emb.0.2.bias", + }, + }, + "vae": { + "encoder.conv_in.weight": "encoder.conv_in.weight", + "encoder.conv_in.bias": "encoder.conv_in.bias", + "encoder.conv_out.weight": "encoder.conv_out.weight", + "encoder.conv_out.bias": "encoder.conv_out.bias", + "encoder.conv_norm_out.weight": "encoder.norm_out.weight", + "encoder.conv_norm_out.bias": "encoder.norm_out.bias", + "decoder.conv_in.weight": "decoder.conv_in.weight", + "decoder.conv_in.bias": "decoder.conv_in.bias", + "decoder.conv_out.weight": "decoder.conv_out.weight", + "decoder.conv_out.bias": "decoder.conv_out.bias", + "decoder.conv_norm_out.weight": "decoder.norm_out.weight", + "decoder.conv_norm_out.bias": "decoder.norm_out.bias", + "quant_conv.weight": "quant_conv.weight", + "quant_conv.bias": "quant_conv.bias", + "post_quant_conv.weight": "post_quant_conv.weight", + "post_quant_conv.bias": "post_quant_conv.bias", + }, + "openclip": { + "layers": { + "text_model.embeddings.position_embedding.weight": "positional_embedding", + "text_model.embeddings.token_embedding.weight": "token_embedding.weight", + "text_model.final_layer_norm.weight": "ln_final.weight", + "text_model.final_layer_norm.bias": "ln_final.bias", + "text_projection.weight": "text_projection", + }, + "transformer": { + "text_model.encoder.layers.": "resblocks.", + "layer_norm1": "ln_1", + "layer_norm2": "ln_2", + ".fc1.": ".c_fc.", + ".fc2.": ".c_proj.", + ".self_attn": ".attn", + "transformer.text_model.final_layer_norm.": "ln_final.", + "transformer.text_model.embeddings.token_embedding.weight": "token_embedding.weight", + "transformer.text_model.embeddings.position_embedding.weight": "positional_embedding", + }, + }, +} + +SD_2_TEXT_ENCODER_KEYS_TO_IGNORE = [ + "cond_stage_model.model.transformer.resblocks.23.attn.in_proj_bias", + "cond_stage_model.model.transformer.resblocks.23.attn.in_proj_weight", + "cond_stage_model.model.transformer.resblocks.23.attn.out_proj.bias", + "cond_stage_model.model.transformer.resblocks.23.attn.out_proj.weight", + "cond_stage_model.model.transformer.resblocks.23.ln_1.bias", + "cond_stage_model.model.transformer.resblocks.23.ln_1.weight", + "cond_stage_model.model.transformer.resblocks.23.ln_2.bias", + "cond_stage_model.model.transformer.resblocks.23.ln_2.weight", + "cond_stage_model.model.transformer.resblocks.23.mlp.c_fc.bias", + "cond_stage_model.model.transformer.resblocks.23.mlp.c_fc.weight", + "cond_stage_model.model.transformer.resblocks.23.mlp.c_proj.bias", + "cond_stage_model.model.transformer.resblocks.23.mlp.c_proj.weight", + "cond_stage_model.model.text_projection", +] + +# To support legacy scheduler_type argument +SCHEDULER_DEFAULT_CONFIG = { + "beta_schedule": "scaled_linear", + "beta_start": 0.00085, + "beta_end": 0.012, + "interpolation_type": "linear", + "num_train_timesteps": 1000, + "prediction_type": "epsilon", + "sample_max_value": 1.0, + "set_alpha_to_one": False, + "skip_prk_steps": True, + "steps_offset": 1, + "timestep_spacing": "leading", +} + +LDM_VAE_KEYS = ["first_stage_model.", "vae."] +LDM_VAE_DEFAULT_SCALING_FACTOR = 0.18215 +PLAYGROUND_VAE_SCALING_FACTOR = 0.5 +LDM_UNET_KEY = "model.diffusion_model." +LDM_CONTROLNET_KEY = "control_model." +LDM_CLIP_PREFIX_TO_REMOVE = [ + "cond_stage_model.transformer.", + "conditioner.embedders.0.transformer.", +] +LDM_OPEN_CLIP_TEXT_PROJECTION_DIM = 1024 +SCHEDULER_LEGACY_KWARGS = ["prediction_type", "scheduler_type"] + +VALID_URL_PREFIXES = ["https://huggingface.co/", "huggingface.co/", "hf.co/", "https://hf.co/"] + + +class SingleFileComponentError(Exception): + def __init__(self, message=None): + self.message = message + super().__init__(self.message) + + +def is_valid_url(url): + result = urlparse(url) + if result.scheme and result.netloc: + return True + + return False + + +def _extract_repo_id_and_weights_name(pretrained_model_name_or_path): + if not is_valid_url(pretrained_model_name_or_path): + raise ValueError("Invalid `pretrained_model_name_or_path` provided. Please set it to a valid URL.") + + pattern = r"([^/]+)/([^/]+)/(?:blob/main/)?(.+)" + weights_name = None + repo_id = (None,) + for prefix in VALID_URL_PREFIXES: + pretrained_model_name_or_path = pretrained_model_name_or_path.replace(prefix, "") + match = re.match(pattern, pretrained_model_name_or_path) + if not match: + logger.warning("Unable to identify the repo_id and weights_name from the provided URL.") + return repo_id, weights_name + + repo_id = f"{match.group(1)}/{match.group(2)}" + weights_name = match.group(3) + + return repo_id, weights_name + + +def _is_model_weights_in_cached_folder(cached_folder, name): + pretrained_model_name_or_path = os.path.join(cached_folder, name) + weights_exist = False + + for weights_name in [WEIGHTS_NAME, SAFETENSORS_WEIGHTS_NAME]: + if os.path.isfile(os.path.join(pretrained_model_name_or_path, weights_name)): + weights_exist = True + + return weights_exist + + +def _is_legacy_scheduler_kwargs(kwargs): + return any(k in SCHEDULER_LEGACY_KWARGS for k in kwargs.keys()) + + +def load_single_file_checkpoint( + pretrained_model_link_or_path, + force_download=False, + proxies=None, + token=None, + cache_dir=None, + local_files_only=None, + revision=None, +): + if os.path.isfile(pretrained_model_link_or_path): + pretrained_model_link_or_path = pretrained_model_link_or_path + + else: + repo_id, weights_name = _extract_repo_id_and_weights_name(pretrained_model_link_or_path) + pretrained_model_link_or_path = _get_model_file( + repo_id, + weights_name=weights_name, + force_download=force_download, + cache_dir=cache_dir, + proxies=proxies, + local_files_only=local_files_only, + token=token, + revision=revision, + ) + + checkpoint = load_state_dict(pretrained_model_link_or_path) + + # some checkpoints contain the model state dict under a "state_dict" key + while "state_dict" in checkpoint: + checkpoint = checkpoint["state_dict"] + + return checkpoint + + +def fetch_original_config(original_config_file, local_files_only=False): + if os.path.isfile(original_config_file): + with open(original_config_file, "r") as fp: + original_config_file = fp.read() + + elif is_valid_url(original_config_file): + if local_files_only: + raise ValueError( + "`local_files_only` is set to True, but a URL was provided as `original_config_file`. " + "Please provide a valid local file path." + ) + + original_config_file = BytesIO(requests.get(original_config_file).content) + + else: + raise ValueError("Invalid `original_config_file` provided. Please set it to a valid file path or URL.") + + original_config = yaml.safe_load(original_config_file) + + return original_config + + +def is_clip_model(checkpoint): + if CHECKPOINT_KEY_NAMES["clip"] in checkpoint: + return True + + return False + + +def is_clip_sdxl_model(checkpoint): + if CHECKPOINT_KEY_NAMES["clip_sdxl"] in checkpoint: + return True + + return False + + +def is_clip_sd3_model(checkpoint): + if CHECKPOINT_KEY_NAMES["clip_sd3"] in checkpoint: + return True + + return False + + +def is_open_clip_model(checkpoint): + if CHECKPOINT_KEY_NAMES["open_clip"] in checkpoint: + return True + + return False + + +def is_open_clip_sdxl_model(checkpoint): + if CHECKPOINT_KEY_NAMES["open_clip_sdxl"] in checkpoint: + return True + + return False + + +def is_open_clip_sd3_model(checkpoint): + if CHECKPOINT_KEY_NAMES["open_clip_sd3"] in checkpoint: + return True + + return False + + +def is_open_clip_sdxl_refiner_model(checkpoint): + if CHECKPOINT_KEY_NAMES["open_clip_sdxl_refiner"] in checkpoint: + return True + + return False + + +def is_clip_model_in_single_file(class_obj, checkpoint): + is_clip_in_checkpoint = any( + [ + is_clip_model(checkpoint), + is_clip_sd3_model(checkpoint), + is_open_clip_model(checkpoint), + is_open_clip_sdxl_model(checkpoint), + is_open_clip_sdxl_refiner_model(checkpoint), + is_open_clip_sd3_model(checkpoint), + ] + ) + if ( + class_obj.__name__ == "CLIPTextModel" or class_obj.__name__ == "CLIPTextModelWithProjection" + ) and is_clip_in_checkpoint: + return True + + return False + + +def infer_diffusers_model_type(checkpoint): + if ( + CHECKPOINT_KEY_NAMES["inpainting"] in checkpoint + and checkpoint[CHECKPOINT_KEY_NAMES["inpainting"]].shape[1] == 9 + ): + if CHECKPOINT_KEY_NAMES["v2"] in checkpoint and checkpoint[CHECKPOINT_KEY_NAMES["v2"]].shape[-1] == 1024: + model_type = "inpainting_v2" + elif CHECKPOINT_KEY_NAMES["xl_base"] in checkpoint: + model_type = "xl_inpaint" + else: + model_type = "inpainting" + + elif CHECKPOINT_KEY_NAMES["v2"] in checkpoint and checkpoint[CHECKPOINT_KEY_NAMES["v2"]].shape[-1] == 1024: + model_type = "v2" + + elif CHECKPOINT_KEY_NAMES["playground-v2-5"] in checkpoint: + model_type = "playground-v2-5" + + elif CHECKPOINT_KEY_NAMES["xl_base"] in checkpoint: + model_type = "xl_base" + + elif CHECKPOINT_KEY_NAMES["xl_refiner"] in checkpoint: + model_type = "xl_refiner" + + elif CHECKPOINT_KEY_NAMES["upscale"] in checkpoint: + model_type = "upscale" + + elif any(key in checkpoint for key in CHECKPOINT_KEY_NAMES["controlnet"]): + if CHECKPOINT_KEY_NAMES["controlnet_xl"] in checkpoint: + if CHECKPOINT_KEY_NAMES["controlnet_xl_large"] in checkpoint: + model_type = "controlnet_xl_large" + elif CHECKPOINT_KEY_NAMES["controlnet_xl_mid"] in checkpoint: + model_type = "controlnet_xl_mid" + else: + model_type = "controlnet_xl_small" + else: + model_type = "controlnet" + + elif ( + CHECKPOINT_KEY_NAMES["stable_cascade_stage_c"] in checkpoint + and checkpoint[CHECKPOINT_KEY_NAMES["stable_cascade_stage_c"]].shape[0] == 1536 + ): + model_type = "stable_cascade_stage_c_lite" + + elif ( + CHECKPOINT_KEY_NAMES["stable_cascade_stage_c"] in checkpoint + and checkpoint[CHECKPOINT_KEY_NAMES["stable_cascade_stage_c"]].shape[0] == 2048 + ): + model_type = "stable_cascade_stage_c" + + elif ( + CHECKPOINT_KEY_NAMES["stable_cascade_stage_b"] in checkpoint + and checkpoint[CHECKPOINT_KEY_NAMES["stable_cascade_stage_b"]].shape[-1] == 576 + ): + model_type = "stable_cascade_stage_b_lite" + + elif ( + CHECKPOINT_KEY_NAMES["stable_cascade_stage_b"] in checkpoint + and checkpoint[CHECKPOINT_KEY_NAMES["stable_cascade_stage_b"]].shape[-1] == 640 + ): + model_type = "stable_cascade_stage_b" + + elif any(key in checkpoint for key in CHECKPOINT_KEY_NAMES["sd3"]) and any( + checkpoint[key].shape[-1] == 9216 if key in checkpoint else False for key in CHECKPOINT_KEY_NAMES["sd3"] + ): + if "model.diffusion_model.pos_embed" in checkpoint: + key = "model.diffusion_model.pos_embed" + else: + key = "pos_embed" + + if checkpoint[key].shape[1] == 36864: + model_type = "sd3" + elif checkpoint[key].shape[1] == 147456: + model_type = "sd35_medium" + + elif any(key in checkpoint for key in CHECKPOINT_KEY_NAMES["sd35_large"]): + model_type = "sd35_large" + + elif CHECKPOINT_KEY_NAMES["animatediff"] in checkpoint: + if CHECKPOINT_KEY_NAMES["animatediff_scribble"] in checkpoint: + model_type = "animatediff_scribble" + + elif CHECKPOINT_KEY_NAMES["animatediff_rgb"] in checkpoint: + model_type = "animatediff_rgb" + + elif CHECKPOINT_KEY_NAMES["animatediff_v2"] in checkpoint: + model_type = "animatediff_v2" + + elif checkpoint[CHECKPOINT_KEY_NAMES["animatediff_sdxl_beta"]].shape[-1] == 320: + model_type = "animatediff_sdxl_beta" + + elif checkpoint[CHECKPOINT_KEY_NAMES["animatediff"]].shape[1] == 24: + model_type = "animatediff_v1" + + else: + model_type = "animatediff_v3" + + elif any(key in checkpoint for key in CHECKPOINT_KEY_NAMES["flux"]): + if any( + g in checkpoint for g in ["guidance_in.in_layer.bias", "model.diffusion_model.guidance_in.in_layer.bias"] + ): + if checkpoint["img_in.weight"].shape[1] == 384: + model_type = "flux-fill" + + elif checkpoint["img_in.weight"].shape[1] == 128: + model_type = "flux-depth" + else: + model_type = "flux-dev" + else: + model_type = "flux-schnell" + + elif any(key in checkpoint for key in CHECKPOINT_KEY_NAMES["ltx-video"]): + if "vae.decoder.last_time_embedder.timestep_embedder.linear_1.weight" in checkpoint: + model_type = "ltx-video-0.9.1" + else: + model_type = "ltx-video" + + elif CHECKPOINT_KEY_NAMES["autoencoder-dc"] in checkpoint: + encoder_key = "encoder.project_in.conv.conv.bias" + decoder_key = "decoder.project_in.main.conv.weight" + + if CHECKPOINT_KEY_NAMES["autoencoder-dc-sana"] in checkpoint: + model_type = "autoencoder-dc-f32c32-sana" + + elif checkpoint[encoder_key].shape[-1] == 64 and checkpoint[decoder_key].shape[1] == 32: + model_type = "autoencoder-dc-f32c32" + + elif checkpoint[encoder_key].shape[-1] == 64 and checkpoint[decoder_key].shape[1] == 128: + model_type = "autoencoder-dc-f64c128" + + else: + model_type = "autoencoder-dc-f128c512" + + elif any(key in checkpoint for key in CHECKPOINT_KEY_NAMES["mochi-1-preview"]): + model_type = "mochi-1-preview" + + elif CHECKPOINT_KEY_NAMES["hunyuan-video"] in checkpoint: + model_type = "hunyuan-video" + + else: + model_type = "v1" + + return model_type + + +def fetch_diffusers_config(checkpoint): + model_type = infer_diffusers_model_type(checkpoint) + model_path = DIFFUSERS_DEFAULT_PIPELINE_PATHS[model_type] + model_path = copy.deepcopy(model_path) + + return model_path + + +def set_image_size(checkpoint, image_size=None): + if image_size: + return image_size + + model_type = infer_diffusers_model_type(checkpoint) + image_size = DIFFUSERS_TO_LDM_DEFAULT_IMAGE_SIZE_MAP[model_type] + + return image_size + + +# Copied from diffusers.pipelines.stable_diffusion.convert_from_ckpt.conv_attn_to_linear +def conv_attn_to_linear(checkpoint): + keys = list(checkpoint.keys()) + attn_keys = ["query.weight", "key.weight", "value.weight"] + for key in keys: + if ".".join(key.split(".")[-2:]) in attn_keys: + if checkpoint[key].ndim > 2: + checkpoint[key] = checkpoint[key][:, :, 0, 0] + elif "proj_attn.weight" in key: + if checkpoint[key].ndim > 2: + checkpoint[key] = checkpoint[key][:, :, 0] + + +def create_unet_diffusers_config_from_ldm( + original_config, checkpoint, image_size=None, upcast_attention=None, num_in_channels=None +): + """ + Creates a config for the diffusers based on the config of the LDM model. + """ + if image_size is not None: + deprecation_message = ( + "Configuring UNet2DConditionModel with the `image_size` argument to `from_single_file`" + "is deprecated and will be ignored in future versions." + ) + deprecate("image_size", "1.0.0", deprecation_message) + + image_size = set_image_size(checkpoint, image_size=image_size) + + if ( + "unet_config" in original_config["model"]["params"] + and original_config["model"]["params"]["unet_config"] is not None + ): + unet_params = original_config["model"]["params"]["unet_config"]["params"] + else: + unet_params = original_config["model"]["params"]["network_config"]["params"] + + if num_in_channels is not None: + deprecation_message = ( + "Configuring UNet2DConditionModel with the `num_in_channels` argument to `from_single_file`" + "is deprecated and will be ignored in future versions." + ) + deprecate("image_size", "1.0.0", deprecation_message) + in_channels = num_in_channels + else: + in_channels = unet_params["in_channels"] + + vae_params = original_config["model"]["params"]["first_stage_config"]["params"]["ddconfig"] + block_out_channels = [unet_params["model_channels"] * mult for mult in unet_params["channel_mult"]] + + down_block_types = [] + resolution = 1 + for i in range(len(block_out_channels)): + block_type = "CrossAttnDownBlock2D" if resolution in unet_params["attention_resolutions"] else "DownBlock2D" + down_block_types.append(block_type) + if i != len(block_out_channels) - 1: + resolution *= 2 + + up_block_types = [] + for i in range(len(block_out_channels)): + block_type = "CrossAttnUpBlock2D" if resolution in unet_params["attention_resolutions"] else "UpBlock2D" + up_block_types.append(block_type) + resolution //= 2 + + if unet_params["transformer_depth"] is not None: + transformer_layers_per_block = ( + unet_params["transformer_depth"] + if isinstance(unet_params["transformer_depth"], int) + else list(unet_params["transformer_depth"]) + ) + else: + transformer_layers_per_block = 1 + + vae_scale_factor = 2 ** (len(vae_params["ch_mult"]) - 1) + + head_dim = unet_params["num_heads"] if "num_heads" in unet_params else None + use_linear_projection = ( + unet_params["use_linear_in_transformer"] if "use_linear_in_transformer" in unet_params else False + ) + if use_linear_projection: + # stable diffusion 2-base-512 and 2-768 + if head_dim is None: + head_dim_mult = unet_params["model_channels"] // unet_params["num_head_channels"] + head_dim = [head_dim_mult * c for c in list(unet_params["channel_mult"])] + + class_embed_type = None + addition_embed_type = None + addition_time_embed_dim = None + projection_class_embeddings_input_dim = None + context_dim = None + + if unet_params["context_dim"] is not None: + context_dim = ( + unet_params["context_dim"] + if isinstance(unet_params["context_dim"], int) + else unet_params["context_dim"][0] + ) + + if "num_classes" in unet_params: + if unet_params["num_classes"] == "sequential": + if context_dim in [2048, 1280]: + # SDXL + addition_embed_type = "text_time" + addition_time_embed_dim = 256 + else: + class_embed_type = "projection" + assert "adm_in_channels" in unet_params + projection_class_embeddings_input_dim = unet_params["adm_in_channels"] + + config = { + "sample_size": image_size // vae_scale_factor, + "in_channels": in_channels, + "down_block_types": down_block_types, + "block_out_channels": block_out_channels, + "layers_per_block": unet_params["num_res_blocks"], + "cross_attention_dim": context_dim, + "attention_head_dim": head_dim, + "use_linear_projection": use_linear_projection, + "class_embed_type": class_embed_type, + "addition_embed_type": addition_embed_type, + "addition_time_embed_dim": addition_time_embed_dim, + "projection_class_embeddings_input_dim": projection_class_embeddings_input_dim, + "transformer_layers_per_block": transformer_layers_per_block, + } + + if upcast_attention is not None: + deprecation_message = ( + "Configuring UNet2DConditionModel with the `upcast_attention` argument to `from_single_file`" + "is deprecated and will be ignored in future versions." + ) + deprecate("image_size", "1.0.0", deprecation_message) + config["upcast_attention"] = upcast_attention + + if "disable_self_attentions" in unet_params: + config["only_cross_attention"] = unet_params["disable_self_attentions"] + + if "num_classes" in unet_params and isinstance(unet_params["num_classes"], int): + config["num_class_embeds"] = unet_params["num_classes"] + + config["out_channels"] = unet_params["out_channels"] + config["up_block_types"] = up_block_types + + return config + + +def create_controlnet_diffusers_config_from_ldm(original_config, checkpoint, image_size=None, **kwargs): + if image_size is not None: + deprecation_message = ( + "Configuring ControlNetModel with the `image_size` argument" + "is deprecated and will be ignored in future versions." + ) + deprecate("image_size", "1.0.0", deprecation_message) + + image_size = set_image_size(checkpoint, image_size=image_size) + + unet_params = original_config["model"]["params"]["control_stage_config"]["params"] + diffusers_unet_config = create_unet_diffusers_config_from_ldm(original_config, image_size=image_size) + + controlnet_config = { + "conditioning_channels": unet_params["hint_channels"], + "in_channels": diffusers_unet_config["in_channels"], + "down_block_types": diffusers_unet_config["down_block_types"], + "block_out_channels": diffusers_unet_config["block_out_channels"], + "layers_per_block": diffusers_unet_config["layers_per_block"], + "cross_attention_dim": diffusers_unet_config["cross_attention_dim"], + "attention_head_dim": diffusers_unet_config["attention_head_dim"], + "use_linear_projection": diffusers_unet_config["use_linear_projection"], + "class_embed_type": diffusers_unet_config["class_embed_type"], + "addition_embed_type": diffusers_unet_config["addition_embed_type"], + "addition_time_embed_dim": diffusers_unet_config["addition_time_embed_dim"], + "projection_class_embeddings_input_dim": diffusers_unet_config["projection_class_embeddings_input_dim"], + "transformer_layers_per_block": diffusers_unet_config["transformer_layers_per_block"], + } + + return controlnet_config + + +def create_vae_diffusers_config_from_ldm(original_config, checkpoint, image_size=None, scaling_factor=None): + """ + Creates a config for the diffusers based on the config of the LDM model. + """ + if image_size is not None: + deprecation_message = ( + "Configuring AutoencoderKL with the `image_size` argument" + "is deprecated and will be ignored in future versions." + ) + deprecate("image_size", "1.0.0", deprecation_message) + + image_size = set_image_size(checkpoint, image_size=image_size) + + if "edm_mean" in checkpoint and "edm_std" in checkpoint: + latents_mean = checkpoint["edm_mean"] + latents_std = checkpoint["edm_std"] + else: + latents_mean = None + latents_std = None + + vae_params = original_config["model"]["params"]["first_stage_config"]["params"]["ddconfig"] + if (scaling_factor is None) and (latents_mean is not None) and (latents_std is not None): + scaling_factor = PLAYGROUND_VAE_SCALING_FACTOR + + elif (scaling_factor is None) and ("scale_factor" in original_config["model"]["params"]): + scaling_factor = original_config["model"]["params"]["scale_factor"] + + elif scaling_factor is None: + scaling_factor = LDM_VAE_DEFAULT_SCALING_FACTOR + + block_out_channels = [vae_params["ch"] * mult for mult in vae_params["ch_mult"]] + down_block_types = ["DownEncoderBlock2D"] * len(block_out_channels) + up_block_types = ["UpDecoderBlock2D"] * len(block_out_channels) + + config = { + "sample_size": image_size, + "in_channels": vae_params["in_channels"], + "out_channels": vae_params["out_ch"], + "down_block_types": down_block_types, + "up_block_types": up_block_types, + "block_out_channels": block_out_channels, + "latent_channels": vae_params["z_channels"], + "layers_per_block": vae_params["num_res_blocks"], + "scaling_factor": scaling_factor, + } + if latents_mean is not None and latents_std is not None: + config.update({"latents_mean": latents_mean, "latents_std": latents_std}) + + return config + + +def update_unet_resnet_ldm_to_diffusers(ldm_keys, new_checkpoint, checkpoint, mapping=None): + for ldm_key in ldm_keys: + diffusers_key = ( + ldm_key.replace("in_layers.0", "norm1") + .replace("in_layers.2", "conv1") + .replace("out_layers.0", "norm2") + .replace("out_layers.3", "conv2") + .replace("emb_layers.1", "time_emb_proj") + .replace("skip_connection", "conv_shortcut") + ) + if mapping: + diffusers_key = diffusers_key.replace(mapping["old"], mapping["new"]) + new_checkpoint[diffusers_key] = checkpoint.get(ldm_key) + + +def update_unet_attention_ldm_to_diffusers(ldm_keys, new_checkpoint, checkpoint, mapping): + for ldm_key in ldm_keys: + diffusers_key = ldm_key.replace(mapping["old"], mapping["new"]) + new_checkpoint[diffusers_key] = checkpoint.get(ldm_key) + + +def update_vae_resnet_ldm_to_diffusers(keys, new_checkpoint, checkpoint, mapping): + for ldm_key in keys: + diffusers_key = ldm_key.replace(mapping["old"], mapping["new"]).replace("nin_shortcut", "conv_shortcut") + new_checkpoint[diffusers_key] = checkpoint.get(ldm_key) + + +def update_vae_attentions_ldm_to_diffusers(keys, new_checkpoint, checkpoint, mapping): + for ldm_key in keys: + diffusers_key = ( + ldm_key.replace(mapping["old"], mapping["new"]) + .replace("norm.weight", "group_norm.weight") + .replace("norm.bias", "group_norm.bias") + .replace("q.weight", "to_q.weight") + .replace("q.bias", "to_q.bias") + .replace("k.weight", "to_k.weight") + .replace("k.bias", "to_k.bias") + .replace("v.weight", "to_v.weight") + .replace("v.bias", "to_v.bias") + .replace("proj_out.weight", "to_out.0.weight") + .replace("proj_out.bias", "to_out.0.bias") + ) + new_checkpoint[diffusers_key] = checkpoint.get(ldm_key) + + # proj_attn.weight has to be converted from conv 1D to linear + shape = new_checkpoint[diffusers_key].shape + + if len(shape) == 3: + new_checkpoint[diffusers_key] = new_checkpoint[diffusers_key][:, :, 0] + elif len(shape) == 4: + new_checkpoint[diffusers_key] = new_checkpoint[diffusers_key][:, :, 0, 0] + + +def convert_stable_cascade_unet_single_file_to_diffusers(checkpoint, **kwargs): + is_stage_c = "clip_txt_mapper.weight" in checkpoint + + if is_stage_c: + state_dict = {} + for key in checkpoint.keys(): + if key.endswith("in_proj_weight"): + weights = checkpoint[key].chunk(3, 0) + state_dict[key.replace("attn.in_proj_weight", "to_q.weight")] = weights[0] + state_dict[key.replace("attn.in_proj_weight", "to_k.weight")] = weights[1] + state_dict[key.replace("attn.in_proj_weight", "to_v.weight")] = weights[2] + elif key.endswith("in_proj_bias"): + weights = checkpoint[key].chunk(3, 0) + state_dict[key.replace("attn.in_proj_bias", "to_q.bias")] = weights[0] + state_dict[key.replace("attn.in_proj_bias", "to_k.bias")] = weights[1] + state_dict[key.replace("attn.in_proj_bias", "to_v.bias")] = weights[2] + elif key.endswith("out_proj.weight"): + weights = checkpoint[key] + state_dict[key.replace("attn.out_proj.weight", "to_out.0.weight")] = weights + elif key.endswith("out_proj.bias"): + weights = checkpoint[key] + state_dict[key.replace("attn.out_proj.bias", "to_out.0.bias")] = weights + else: + state_dict[key] = checkpoint[key] + else: + state_dict = {} + for key in checkpoint.keys(): + if key.endswith("in_proj_weight"): + weights = checkpoint[key].chunk(3, 0) + state_dict[key.replace("attn.in_proj_weight", "to_q.weight")] = weights[0] + state_dict[key.replace("attn.in_proj_weight", "to_k.weight")] = weights[1] + state_dict[key.replace("attn.in_proj_weight", "to_v.weight")] = weights[2] + elif key.endswith("in_proj_bias"): + weights = checkpoint[key].chunk(3, 0) + state_dict[key.replace("attn.in_proj_bias", "to_q.bias")] = weights[0] + state_dict[key.replace("attn.in_proj_bias", "to_k.bias")] = weights[1] + state_dict[key.replace("attn.in_proj_bias", "to_v.bias")] = weights[2] + elif key.endswith("out_proj.weight"): + weights = checkpoint[key] + state_dict[key.replace("attn.out_proj.weight", "to_out.0.weight")] = weights + elif key.endswith("out_proj.bias"): + weights = checkpoint[key] + state_dict[key.replace("attn.out_proj.bias", "to_out.0.bias")] = weights + # rename clip_mapper to clip_txt_pooled_mapper + elif key.endswith("clip_mapper.weight"): + weights = checkpoint[key] + state_dict[key.replace("clip_mapper.weight", "clip_txt_pooled_mapper.weight")] = weights + elif key.endswith("clip_mapper.bias"): + weights = checkpoint[key] + state_dict[key.replace("clip_mapper.bias", "clip_txt_pooled_mapper.bias")] = weights + else: + state_dict[key] = checkpoint[key] + + return state_dict + + +def convert_ldm_unet_checkpoint(checkpoint, config, extract_ema=False, **kwargs): + """ + Takes a state dict and a config, and returns a converted checkpoint. + """ + # extract state_dict for UNet + unet_state_dict = {} + keys = list(checkpoint.keys()) + unet_key = LDM_UNET_KEY + + # at least a 100 parameters have to start with `model_ema` in order for the checkpoint to be EMA + if sum(k.startswith("model_ema") for k in keys) > 100 and extract_ema: + logger.warning("Checkpoint has both EMA and non-EMA weights.") + logger.warning( + "In this conversion only the EMA weights are extracted. If you want to instead extract the non-EMA" + " weights (useful to continue fine-tuning), please make sure to remove the `--extract_ema` flag." + ) + for key in keys: + if key.startswith("model.diffusion_model"): + flat_ema_key = "model_ema." + "".join(key.split(".")[1:]) + unet_state_dict[key.replace(unet_key, "")] = checkpoint.get(flat_ema_key) + else: + if sum(k.startswith("model_ema") for k in keys) > 100: + logger.warning( + "In this conversion only the non-EMA weights are extracted. If you want to instead extract the EMA" + " weights (usually better for inference), please make sure to add the `--extract_ema` flag." + ) + for key in keys: + if key.startswith(unet_key): + unet_state_dict[key.replace(unet_key, "")] = checkpoint.get(key) + + new_checkpoint = {} + ldm_unet_keys = DIFFUSERS_TO_LDM_MAPPING["unet"]["layers"] + for diffusers_key, ldm_key in ldm_unet_keys.items(): + if ldm_key not in unet_state_dict: + continue + new_checkpoint[diffusers_key] = unet_state_dict[ldm_key] + + if ("class_embed_type" in config) and (config["class_embed_type"] in ["timestep", "projection"]): + class_embed_keys = DIFFUSERS_TO_LDM_MAPPING["unet"]["class_embed_type"] + for diffusers_key, ldm_key in class_embed_keys.items(): + new_checkpoint[diffusers_key] = unet_state_dict[ldm_key] + + if ("addition_embed_type" in config) and (config["addition_embed_type"] == "text_time"): + addition_embed_keys = DIFFUSERS_TO_LDM_MAPPING["unet"]["addition_embed_type"] + for diffusers_key, ldm_key in addition_embed_keys.items(): + new_checkpoint[diffusers_key] = unet_state_dict[ldm_key] + + # Relevant to StableDiffusionUpscalePipeline + if "num_class_embeds" in config: + if (config["num_class_embeds"] is not None) and ("label_emb.weight" in unet_state_dict): + new_checkpoint["class_embedding.weight"] = unet_state_dict["label_emb.weight"] + + # Retrieves the keys for the input blocks only + num_input_blocks = len({".".join(layer.split(".")[:2]) for layer in unet_state_dict if "input_blocks" in layer}) + input_blocks = { + layer_id: [key for key in unet_state_dict if f"input_blocks.{layer_id}" in key] + for layer_id in range(num_input_blocks) + } + + # Retrieves the keys for the middle blocks only + num_middle_blocks = len({".".join(layer.split(".")[:2]) for layer in unet_state_dict if "middle_block" in layer}) + middle_blocks = { + layer_id: [key for key in unet_state_dict if f"middle_block.{layer_id}" in key] + for layer_id in range(num_middle_blocks) + } + + # Retrieves the keys for the output blocks only + num_output_blocks = len({".".join(layer.split(".")[:2]) for layer in unet_state_dict if "output_blocks" in layer}) + output_blocks = { + layer_id: [key for key in unet_state_dict if f"output_blocks.{layer_id}" in key] + for layer_id in range(num_output_blocks) + } + + # Down blocks + for i in range(1, num_input_blocks): + block_id = (i - 1) // (config["layers_per_block"] + 1) + layer_in_block_id = (i - 1) % (config["layers_per_block"] + 1) + + resnets = [ + key for key in input_blocks[i] if f"input_blocks.{i}.0" in key and f"input_blocks.{i}.0.op" not in key + ] + update_unet_resnet_ldm_to_diffusers( + resnets, + new_checkpoint, + unet_state_dict, + {"old": f"input_blocks.{i}.0", "new": f"down_blocks.{block_id}.resnets.{layer_in_block_id}"}, + ) + + if f"input_blocks.{i}.0.op.weight" in unet_state_dict: + new_checkpoint[f"down_blocks.{block_id}.downsamplers.0.conv.weight"] = unet_state_dict.get( + f"input_blocks.{i}.0.op.weight" + ) + new_checkpoint[f"down_blocks.{block_id}.downsamplers.0.conv.bias"] = unet_state_dict.get( + f"input_blocks.{i}.0.op.bias" + ) + + attentions = [key for key in input_blocks[i] if f"input_blocks.{i}.1" in key] + if attentions: + update_unet_attention_ldm_to_diffusers( + attentions, + new_checkpoint, + unet_state_dict, + {"old": f"input_blocks.{i}.1", "new": f"down_blocks.{block_id}.attentions.{layer_in_block_id}"}, + ) + + # Mid blocks + for key in middle_blocks.keys(): + diffusers_key = max(key - 1, 0) + if key % 2 == 0: + update_unet_resnet_ldm_to_diffusers( + middle_blocks[key], + new_checkpoint, + unet_state_dict, + mapping={"old": f"middle_block.{key}", "new": f"mid_block.resnets.{diffusers_key}"}, + ) + else: + update_unet_attention_ldm_to_diffusers( + middle_blocks[key], + new_checkpoint, + unet_state_dict, + mapping={"old": f"middle_block.{key}", "new": f"mid_block.attentions.{diffusers_key}"}, + ) + + # Up Blocks + for i in range(num_output_blocks): + block_id = i // (config["layers_per_block"] + 1) + layer_in_block_id = i % (config["layers_per_block"] + 1) + + resnets = [ + key for key in output_blocks[i] if f"output_blocks.{i}.0" in key and f"output_blocks.{i}.0.op" not in key + ] + update_unet_resnet_ldm_to_diffusers( + resnets, + new_checkpoint, + unet_state_dict, + {"old": f"output_blocks.{i}.0", "new": f"up_blocks.{block_id}.resnets.{layer_in_block_id}"}, + ) + + attentions = [ + key for key in output_blocks[i] if f"output_blocks.{i}.1" in key and f"output_blocks.{i}.1.conv" not in key + ] + if attentions: + update_unet_attention_ldm_to_diffusers( + attentions, + new_checkpoint, + unet_state_dict, + {"old": f"output_blocks.{i}.1", "new": f"up_blocks.{block_id}.attentions.{layer_in_block_id}"}, + ) + + if f"output_blocks.{i}.1.conv.weight" in unet_state_dict: + new_checkpoint[f"up_blocks.{block_id}.upsamplers.0.conv.weight"] = unet_state_dict[ + f"output_blocks.{i}.1.conv.weight" + ] + new_checkpoint[f"up_blocks.{block_id}.upsamplers.0.conv.bias"] = unet_state_dict[ + f"output_blocks.{i}.1.conv.bias" + ] + if f"output_blocks.{i}.2.conv.weight" in unet_state_dict: + new_checkpoint[f"up_blocks.{block_id}.upsamplers.0.conv.weight"] = unet_state_dict[ + f"output_blocks.{i}.2.conv.weight" + ] + new_checkpoint[f"up_blocks.{block_id}.upsamplers.0.conv.bias"] = unet_state_dict[ + f"output_blocks.{i}.2.conv.bias" + ] + + return new_checkpoint + + +def convert_controlnet_checkpoint( + checkpoint, + config, + **kwargs, +): + # Return checkpoint if it's already been converted + if "time_embedding.linear_1.weight" in checkpoint: + return checkpoint + # Some controlnet ckpt files are distributed independently from the rest of the + # model components i.e. https://huggingface.co/thibaud/controlnet-sd21/ + if "time_embed.0.weight" in checkpoint: + controlnet_state_dict = checkpoint + + else: + controlnet_state_dict = {} + keys = list(checkpoint.keys()) + controlnet_key = LDM_CONTROLNET_KEY + for key in keys: + if key.startswith(controlnet_key): + controlnet_state_dict[key.replace(controlnet_key, "")] = checkpoint.get(key) + + new_checkpoint = {} + ldm_controlnet_keys = DIFFUSERS_TO_LDM_MAPPING["controlnet"]["layers"] + for diffusers_key, ldm_key in ldm_controlnet_keys.items(): + if ldm_key not in controlnet_state_dict: + continue + new_checkpoint[diffusers_key] = controlnet_state_dict[ldm_key] + + # Retrieves the keys for the input blocks only + num_input_blocks = len( + {".".join(layer.split(".")[:2]) for layer in controlnet_state_dict if "input_blocks" in layer} + ) + input_blocks = { + layer_id: [key for key in controlnet_state_dict if f"input_blocks.{layer_id}" in key] + for layer_id in range(num_input_blocks) + } + + # Down blocks + for i in range(1, num_input_blocks): + block_id = (i - 1) // (config["layers_per_block"] + 1) + layer_in_block_id = (i - 1) % (config["layers_per_block"] + 1) + + resnets = [ + key for key in input_blocks[i] if f"input_blocks.{i}.0" in key and f"input_blocks.{i}.0.op" not in key + ] + update_unet_resnet_ldm_to_diffusers( + resnets, + new_checkpoint, + controlnet_state_dict, + {"old": f"input_blocks.{i}.0", "new": f"down_blocks.{block_id}.resnets.{layer_in_block_id}"}, + ) + + if f"input_blocks.{i}.0.op.weight" in controlnet_state_dict: + new_checkpoint[f"down_blocks.{block_id}.downsamplers.0.conv.weight"] = controlnet_state_dict.get( + f"input_blocks.{i}.0.op.weight" + ) + new_checkpoint[f"down_blocks.{block_id}.downsamplers.0.conv.bias"] = controlnet_state_dict.get( + f"input_blocks.{i}.0.op.bias" + ) + + attentions = [key for key in input_blocks[i] if f"input_blocks.{i}.1" in key] + if attentions: + update_unet_attention_ldm_to_diffusers( + attentions, + new_checkpoint, + controlnet_state_dict, + {"old": f"input_blocks.{i}.1", "new": f"down_blocks.{block_id}.attentions.{layer_in_block_id}"}, + ) + + # controlnet down blocks + for i in range(num_input_blocks): + new_checkpoint[f"controlnet_down_blocks.{i}.weight"] = controlnet_state_dict.get(f"zero_convs.{i}.0.weight") + new_checkpoint[f"controlnet_down_blocks.{i}.bias"] = controlnet_state_dict.get(f"zero_convs.{i}.0.bias") + + # Retrieves the keys for the middle blocks only + num_middle_blocks = len( + {".".join(layer.split(".")[:2]) for layer in controlnet_state_dict if "middle_block" in layer} + ) + middle_blocks = { + layer_id: [key for key in controlnet_state_dict if f"middle_block.{layer_id}" in key] + for layer_id in range(num_middle_blocks) + } + + # Mid blocks + for key in middle_blocks.keys(): + diffusers_key = max(key - 1, 0) + if key % 2 == 0: + update_unet_resnet_ldm_to_diffusers( + middle_blocks[key], + new_checkpoint, + controlnet_state_dict, + mapping={"old": f"middle_block.{key}", "new": f"mid_block.resnets.{diffusers_key}"}, + ) + else: + update_unet_attention_ldm_to_diffusers( + middle_blocks[key], + new_checkpoint, + controlnet_state_dict, + mapping={"old": f"middle_block.{key}", "new": f"mid_block.attentions.{diffusers_key}"}, + ) + + # mid block + new_checkpoint["controlnet_mid_block.weight"] = controlnet_state_dict.get("middle_block_out.0.weight") + new_checkpoint["controlnet_mid_block.bias"] = controlnet_state_dict.get("middle_block_out.0.bias") + + # controlnet cond embedding blocks + cond_embedding_blocks = { + ".".join(layer.split(".")[:2]) + for layer in controlnet_state_dict + if "input_hint_block" in layer and ("input_hint_block.0" not in layer) and ("input_hint_block.14" not in layer) + } + num_cond_embedding_blocks = len(cond_embedding_blocks) + + for idx in range(1, num_cond_embedding_blocks + 1): + diffusers_idx = idx - 1 + cond_block_id = 2 * idx + + new_checkpoint[f"controlnet_cond_embedding.blocks.{diffusers_idx}.weight"] = controlnet_state_dict.get( + f"input_hint_block.{cond_block_id}.weight" + ) + new_checkpoint[f"controlnet_cond_embedding.blocks.{diffusers_idx}.bias"] = controlnet_state_dict.get( + f"input_hint_block.{cond_block_id}.bias" + ) + + return new_checkpoint + + +def convert_ldm_vae_checkpoint(checkpoint, config): + # extract state dict for VAE + # remove the LDM_VAE_KEY prefix from the ldm checkpoint keys so that it is easier to map them to diffusers keys + vae_state_dict = {} + keys = list(checkpoint.keys()) + vae_key = "" + for ldm_vae_key in LDM_VAE_KEYS: + if any(k.startswith(ldm_vae_key) for k in keys): + vae_key = ldm_vae_key + + for key in keys: + if key.startswith(vae_key): + vae_state_dict[key.replace(vae_key, "")] = checkpoint.get(key) + + new_checkpoint = {} + vae_diffusers_ldm_map = DIFFUSERS_TO_LDM_MAPPING["vae"] + for diffusers_key, ldm_key in vae_diffusers_ldm_map.items(): + if ldm_key not in vae_state_dict: + continue + new_checkpoint[diffusers_key] = vae_state_dict[ldm_key] + + # Retrieves the keys for the encoder down blocks only + num_down_blocks = len(config["down_block_types"]) + down_blocks = { + layer_id: [key for key in vae_state_dict if f"down.{layer_id}" in key] for layer_id in range(num_down_blocks) + } + + for i in range(num_down_blocks): + resnets = [key for key in down_blocks[i] if f"down.{i}" in key and f"down.{i}.downsample" not in key] + update_vae_resnet_ldm_to_diffusers( + resnets, + new_checkpoint, + vae_state_dict, + mapping={"old": f"down.{i}.block", "new": f"down_blocks.{i}.resnets"}, + ) + if f"encoder.down.{i}.downsample.conv.weight" in vae_state_dict: + new_checkpoint[f"encoder.down_blocks.{i}.downsamplers.0.conv.weight"] = vae_state_dict.get( + f"encoder.down.{i}.downsample.conv.weight" + ) + new_checkpoint[f"encoder.down_blocks.{i}.downsamplers.0.conv.bias"] = vae_state_dict.get( + f"encoder.down.{i}.downsample.conv.bias" + ) + + mid_resnets = [key for key in vae_state_dict if "encoder.mid.block" in key] + num_mid_res_blocks = 2 + for i in range(1, num_mid_res_blocks + 1): + resnets = [key for key in mid_resnets if f"encoder.mid.block_{i}" in key] + update_vae_resnet_ldm_to_diffusers( + resnets, + new_checkpoint, + vae_state_dict, + mapping={"old": f"mid.block_{i}", "new": f"mid_block.resnets.{i - 1}"}, + ) + + mid_attentions = [key for key in vae_state_dict if "encoder.mid.attn" in key] + update_vae_attentions_ldm_to_diffusers( + mid_attentions, new_checkpoint, vae_state_dict, mapping={"old": "mid.attn_1", "new": "mid_block.attentions.0"} + ) + + # Retrieves the keys for the decoder up blocks only + num_up_blocks = len(config["up_block_types"]) + up_blocks = { + layer_id: [key for key in vae_state_dict if f"up.{layer_id}" in key] for layer_id in range(num_up_blocks) + } + + for i in range(num_up_blocks): + block_id = num_up_blocks - 1 - i + resnets = [ + key for key in up_blocks[block_id] if f"up.{block_id}" in key and f"up.{block_id}.upsample" not in key + ] + update_vae_resnet_ldm_to_diffusers( + resnets, + new_checkpoint, + vae_state_dict, + mapping={"old": f"up.{block_id}.block", "new": f"up_blocks.{i}.resnets"}, + ) + if f"decoder.up.{block_id}.upsample.conv.weight" in vae_state_dict: + new_checkpoint[f"decoder.up_blocks.{i}.upsamplers.0.conv.weight"] = vae_state_dict[ + f"decoder.up.{block_id}.upsample.conv.weight" + ] + new_checkpoint[f"decoder.up_blocks.{i}.upsamplers.0.conv.bias"] = vae_state_dict[ + f"decoder.up.{block_id}.upsample.conv.bias" + ] + + mid_resnets = [key for key in vae_state_dict if "decoder.mid.block" in key] + num_mid_res_blocks = 2 + for i in range(1, num_mid_res_blocks + 1): + resnets = [key for key in mid_resnets if f"decoder.mid.block_{i}" in key] + update_vae_resnet_ldm_to_diffusers( + resnets, + new_checkpoint, + vae_state_dict, + mapping={"old": f"mid.block_{i}", "new": f"mid_block.resnets.{i - 1}"}, + ) + + mid_attentions = [key for key in vae_state_dict if "decoder.mid.attn" in key] + update_vae_attentions_ldm_to_diffusers( + mid_attentions, new_checkpoint, vae_state_dict, mapping={"old": "mid.attn_1", "new": "mid_block.attentions.0"} + ) + conv_attn_to_linear(new_checkpoint) + + return new_checkpoint + + +def convert_ldm_clip_checkpoint(checkpoint, remove_prefix=None): + keys = list(checkpoint.keys()) + text_model_dict = {} + + remove_prefixes = [] + remove_prefixes.extend(LDM_CLIP_PREFIX_TO_REMOVE) + if remove_prefix: + remove_prefixes.append(remove_prefix) + + for key in keys: + for prefix in remove_prefixes: + if key.startswith(prefix): + diffusers_key = key.replace(prefix, "") + text_model_dict[diffusers_key] = checkpoint.get(key) + + return text_model_dict + + +def convert_open_clip_checkpoint( + text_model, + checkpoint, + prefix="cond_stage_model.model.", +): + text_model_dict = {} + text_proj_key = prefix + "text_projection" + + if text_proj_key in checkpoint: + text_proj_dim = int(checkpoint[text_proj_key].shape[0]) + elif hasattr(text_model.config, "projection_dim"): + text_proj_dim = text_model.config.projection_dim + else: + text_proj_dim = LDM_OPEN_CLIP_TEXT_PROJECTION_DIM + + keys = list(checkpoint.keys()) + keys_to_ignore = SD_2_TEXT_ENCODER_KEYS_TO_IGNORE + + openclip_diffusers_ldm_map = DIFFUSERS_TO_LDM_MAPPING["openclip"]["layers"] + for diffusers_key, ldm_key in openclip_diffusers_ldm_map.items(): + ldm_key = prefix + ldm_key + if ldm_key not in checkpoint: + continue + if ldm_key in keys_to_ignore: + continue + if ldm_key.endswith("text_projection"): + text_model_dict[diffusers_key] = checkpoint[ldm_key].T.contiguous() + else: + text_model_dict[diffusers_key] = checkpoint[ldm_key] + + for key in keys: + if key in keys_to_ignore: + continue + + if not key.startswith(prefix + "transformer."): + continue + + diffusers_key = key.replace(prefix + "transformer.", "") + transformer_diffusers_to_ldm_map = DIFFUSERS_TO_LDM_MAPPING["openclip"]["transformer"] + for new_key, old_key in transformer_diffusers_to_ldm_map.items(): + diffusers_key = ( + diffusers_key.replace(old_key, new_key).replace(".in_proj_weight", "").replace(".in_proj_bias", "") + ) + + if key.endswith(".in_proj_weight"): + weight_value = checkpoint.get(key) + + text_model_dict[diffusers_key + ".q_proj.weight"] = weight_value[:text_proj_dim, :].clone().detach() + text_model_dict[diffusers_key + ".k_proj.weight"] = ( + weight_value[text_proj_dim : text_proj_dim * 2, :].clone().detach() + ) + text_model_dict[diffusers_key + ".v_proj.weight"] = weight_value[text_proj_dim * 2 :, :].clone().detach() + + elif key.endswith(".in_proj_bias"): + weight_value = checkpoint.get(key) + text_model_dict[diffusers_key + ".q_proj.bias"] = weight_value[:text_proj_dim].clone().detach() + text_model_dict[diffusers_key + ".k_proj.bias"] = ( + weight_value[text_proj_dim : text_proj_dim * 2].clone().detach() + ) + text_model_dict[diffusers_key + ".v_proj.bias"] = weight_value[text_proj_dim * 2 :].clone().detach() + else: + text_model_dict[diffusers_key] = checkpoint.get(key) + + return text_model_dict + + +def create_diffusers_clip_model_from_ldm( + cls, + checkpoint, + subfolder="", + config=None, + torch_dtype=None, + local_files_only=None, + is_legacy_loading=False, +): + if config: + config = {"pretrained_model_name_or_path": config} + else: + config = fetch_diffusers_config(checkpoint) + + # For backwards compatibility + # Older versions of `from_single_file` expected CLIP configs to be placed in their original transformers model repo + # in the cache_dir, rather than in a subfolder of the Diffusers model + if is_legacy_loading: + logger.warning( + ( + "Detected legacy CLIP loading behavior. Please run `from_single_file` with `local_files_only=False once to update " + "the local cache directory with the necessary CLIP model config files. " + "Attempting to load CLIP model from legacy cache directory." + ) + ) + + if is_clip_model(checkpoint) or is_clip_sdxl_model(checkpoint): + clip_config = "openai/clip-vit-large-patch14" + config["pretrained_model_name_or_path"] = clip_config + subfolder = "" + + elif is_open_clip_model(checkpoint): + clip_config = "stabilityai/stable-diffusion-2" + config["pretrained_model_name_or_path"] = clip_config + subfolder = "text_encoder" + + else: + clip_config = "laion/CLIP-ViT-bigG-14-laion2B-39B-b160k" + config["pretrained_model_name_or_path"] = clip_config + subfolder = "" + + model_config = cls.config_class.from_pretrained(**config, subfolder=subfolder, local_files_only=local_files_only) + ctx = init_empty_weights if is_accelerate_available() else nullcontext + with ctx(): + model = cls(model_config) + + position_embedding_dim = model.text_model.embeddings.position_embedding.weight.shape[-1] + + if is_clip_model(checkpoint): + diffusers_format_checkpoint = convert_ldm_clip_checkpoint(checkpoint) + + elif ( + is_clip_sdxl_model(checkpoint) + and checkpoint[CHECKPOINT_KEY_NAMES["clip_sdxl"]].shape[-1] == position_embedding_dim + ): + diffusers_format_checkpoint = convert_ldm_clip_checkpoint(checkpoint) + + elif ( + is_clip_sd3_model(checkpoint) + and checkpoint[CHECKPOINT_KEY_NAMES["clip_sd3"]].shape[-1] == position_embedding_dim + ): + diffusers_format_checkpoint = convert_ldm_clip_checkpoint(checkpoint, "text_encoders.clip_l.transformer.") + diffusers_format_checkpoint["text_projection.weight"] = torch.eye(position_embedding_dim) + + elif is_open_clip_model(checkpoint): + prefix = "cond_stage_model.model." + diffusers_format_checkpoint = convert_open_clip_checkpoint(model, checkpoint, prefix=prefix) + + elif ( + is_open_clip_sdxl_model(checkpoint) + and checkpoint[CHECKPOINT_KEY_NAMES["open_clip_sdxl"]].shape[-1] == position_embedding_dim + ): + prefix = "conditioner.embedders.1.model." + diffusers_format_checkpoint = convert_open_clip_checkpoint(model, checkpoint, prefix=prefix) + + elif is_open_clip_sdxl_refiner_model(checkpoint): + prefix = "conditioner.embedders.0.model." + diffusers_format_checkpoint = convert_open_clip_checkpoint(model, checkpoint, prefix=prefix) + + elif ( + is_open_clip_sd3_model(checkpoint) + and checkpoint[CHECKPOINT_KEY_NAMES["open_clip_sd3"]].shape[-1] == position_embedding_dim + ): + diffusers_format_checkpoint = convert_ldm_clip_checkpoint(checkpoint, "text_encoders.clip_g.transformer.") + + else: + raise ValueError("The provided checkpoint does not seem to contain a valid CLIP model.") + + if is_accelerate_available(): + unexpected_keys = load_model_dict_into_meta(model, diffusers_format_checkpoint, dtype=torch_dtype) + else: + _, unexpected_keys = model.load_state_dict(diffusers_format_checkpoint, strict=False) + + if model._keys_to_ignore_on_load_unexpected is not None: + for pat in model._keys_to_ignore_on_load_unexpected: + unexpected_keys = [k for k in unexpected_keys if re.search(pat, k) is None] + + if len(unexpected_keys) > 0: + logger.warning( + f"Some weights of the model checkpoint were not used when initializing {cls.__name__}: \n {[', '.join(unexpected_keys)]}" + ) + + if torch_dtype is not None: + model.to(torch_dtype) + + model.eval() + + return model + + +def _legacy_load_scheduler( + cls, + checkpoint, + component_name, + original_config=None, + **kwargs, +): + scheduler_type = kwargs.get("scheduler_type", None) + prediction_type = kwargs.get("prediction_type", None) + + if scheduler_type is not None: + deprecation_message = ( + "Please pass an instance of a Scheduler object directly to the `scheduler` argument in `from_single_file`\n\n" + "Example:\n\n" + "from diffusers import StableDiffusionPipeline, DDIMScheduler\n\n" + "scheduler = DDIMScheduler()\n" + "pipe = StableDiffusionPipeline.from_single_file(, scheduler=scheduler)\n" + ) + deprecate("scheduler_type", "1.0.0", deprecation_message) + + if prediction_type is not None: + deprecation_message = ( + "Please configure an instance of a Scheduler with the appropriate `prediction_type` and " + "pass the object directly to the `scheduler` argument in `from_single_file`.\n\n" + "Example:\n\n" + "from diffusers import StableDiffusionPipeline, DDIMScheduler\n\n" + 'scheduler = DDIMScheduler(prediction_type="v_prediction")\n' + "pipe = StableDiffusionPipeline.from_single_file(, scheduler=scheduler)\n" + ) + deprecate("prediction_type", "1.0.0", deprecation_message) + + scheduler_config = SCHEDULER_DEFAULT_CONFIG + model_type = infer_diffusers_model_type(checkpoint=checkpoint) + + global_step = checkpoint["global_step"] if "global_step" in checkpoint else None + + if original_config: + num_train_timesteps = getattr(original_config["model"]["params"], "timesteps", 1000) + else: + num_train_timesteps = 1000 + + scheduler_config["num_train_timesteps"] = num_train_timesteps + + if model_type == "v2": + if prediction_type is None: + # NOTE: For stable diffusion 2 base it is recommended to pass `prediction_type=="epsilon"` # as it relies on a brittle global step parameter here + prediction_type = "epsilon" if global_step == 875000 else "v_prediction" + + else: + prediction_type = prediction_type or "epsilon" + + scheduler_config["prediction_type"] = prediction_type + + if model_type in ["xl_base", "xl_refiner"]: + scheduler_type = "euler" + elif model_type == "playground": + scheduler_type = "edm_dpm_solver_multistep" + else: + if original_config: + beta_start = original_config["model"]["params"].get("linear_start") + beta_end = original_config["model"]["params"].get("linear_end") + + else: + beta_start = 0.02 + beta_end = 0.085 + + scheduler_config["beta_start"] = beta_start + scheduler_config["beta_end"] = beta_end + scheduler_config["beta_schedule"] = "scaled_linear" + scheduler_config["clip_sample"] = False + scheduler_config["set_alpha_to_one"] = False + + # to deal with an edge case StableDiffusionUpscale pipeline has two schedulers + if component_name == "low_res_scheduler": + return cls.from_config( + { + "beta_end": 0.02, + "beta_schedule": "scaled_linear", + "beta_start": 0.0001, + "clip_sample": True, + "num_train_timesteps": 1000, + "prediction_type": "epsilon", + "trained_betas": None, + "variance_type": "fixed_small", + } + ) + + if scheduler_type is None: + return cls.from_config(scheduler_config) + + elif scheduler_type == "pndm": + scheduler_config["skip_prk_steps"] = True + scheduler = PNDMScheduler.from_config(scheduler_config) + + elif scheduler_type == "lms": + scheduler = LMSDiscreteScheduler.from_config(scheduler_config) + + elif scheduler_type == "heun": + scheduler = HeunDiscreteScheduler.from_config(scheduler_config) + + elif scheduler_type == "euler": + scheduler = EulerDiscreteScheduler.from_config(scheduler_config) + + elif scheduler_type == "euler-ancestral": + scheduler = EulerAncestralDiscreteScheduler.from_config(scheduler_config) + + elif scheduler_type == "dpm": + scheduler = DPMSolverMultistepScheduler.from_config(scheduler_config) + + elif scheduler_type == "ddim": + scheduler = DDIMScheduler.from_config(scheduler_config) + + elif scheduler_type == "edm_dpm_solver_multistep": + scheduler_config = { + "algorithm_type": "dpmsolver++", + "dynamic_thresholding_ratio": 0.995, + "euler_at_final": False, + "final_sigmas_type": "zero", + "lower_order_final": True, + "num_train_timesteps": 1000, + "prediction_type": "epsilon", + "rho": 7.0, + "sample_max_value": 1.0, + "sigma_data": 0.5, + "sigma_max": 80.0, + "sigma_min": 0.002, + "solver_order": 2, + "solver_type": "midpoint", + "thresholding": False, + } + scheduler = EDMDPMSolverMultistepScheduler(**scheduler_config) + + else: + raise ValueError(f"Scheduler of type {scheduler_type} doesn't exist!") + + return scheduler + + +def _legacy_load_clip_tokenizer(cls, checkpoint, config=None, local_files_only=False): + if config: + config = {"pretrained_model_name_or_path": config} + else: + config = fetch_diffusers_config(checkpoint) + + if is_clip_model(checkpoint) or is_clip_sdxl_model(checkpoint): + clip_config = "openai/clip-vit-large-patch14" + config["pretrained_model_name_or_path"] = clip_config + subfolder = "" + + elif is_open_clip_model(checkpoint): + clip_config = "stabilityai/stable-diffusion-2" + config["pretrained_model_name_or_path"] = clip_config + subfolder = "tokenizer" + + else: + clip_config = "laion/CLIP-ViT-bigG-14-laion2B-39B-b160k" + config["pretrained_model_name_or_path"] = clip_config + subfolder = "" + + tokenizer = cls.from_pretrained(**config, subfolder=subfolder, local_files_only=local_files_only) + + return tokenizer + + +def _legacy_load_safety_checker(local_files_only, torch_dtype): + # Support for loading safety checker components using the deprecated + # `load_safety_checker` argument. + + from ..pipelines.stable_diffusion.safety_checker import StableDiffusionSafetyChecker + + feature_extractor = AutoImageProcessor.from_pretrained( + "CompVis/stable-diffusion-safety-checker", local_files_only=local_files_only, torch_dtype=torch_dtype + ) + safety_checker = StableDiffusionSafetyChecker.from_pretrained( + "CompVis/stable-diffusion-safety-checker", local_files_only=local_files_only, torch_dtype=torch_dtype + ) + + return {"safety_checker": safety_checker, "feature_extractor": feature_extractor} + + +# in SD3 original implementation of AdaLayerNormContinuous, it split linear projection output into shift, scale; +# while in diffusers it split into scale, shift. Here we swap the linear projection weights in order to be able to use diffusers implementation +def swap_scale_shift(weight, dim): + shift, scale = weight.chunk(2, dim=0) + new_weight = torch.cat([scale, shift], dim=0) + return new_weight + + +def swap_proj_gate(weight): + proj, gate = weight.chunk(2, dim=0) + new_weight = torch.cat([gate, proj], dim=0) + return new_weight + + +def get_attn2_layers(state_dict): + attn2_layers = [] + for key in state_dict.keys(): + if "attn2." in key: + # Extract the layer number from the key + layer_num = int(key.split(".")[1]) + attn2_layers.append(layer_num) + + return tuple(sorted(set(attn2_layers))) + + +def get_caption_projection_dim(state_dict): + caption_projection_dim = state_dict["context_embedder.weight"].shape[0] + return caption_projection_dim + + +def convert_sd3_transformer_checkpoint_to_diffusers(checkpoint, **kwargs): + converted_state_dict = {} + keys = list(checkpoint.keys()) + for k in keys: + if "model.diffusion_model." in k: + checkpoint[k.replace("model.diffusion_model.", "")] = checkpoint.pop(k) + + num_layers = list(set(int(k.split(".", 2)[1]) for k in checkpoint if "joint_blocks" in k))[-1] + 1 # noqa: C401 + dual_attention_layers = get_attn2_layers(checkpoint) + + caption_projection_dim = get_caption_projection_dim(checkpoint) + has_qk_norm = any("ln_q" in key for key in checkpoint.keys()) + + # Positional and patch embeddings. + converted_state_dict["pos_embed.pos_embed"] = checkpoint.pop("pos_embed") + converted_state_dict["pos_embed.proj.weight"] = checkpoint.pop("x_embedder.proj.weight") + converted_state_dict["pos_embed.proj.bias"] = checkpoint.pop("x_embedder.proj.bias") + + # Timestep embeddings. + converted_state_dict["time_text_embed.timestep_embedder.linear_1.weight"] = checkpoint.pop( + "t_embedder.mlp.0.weight" + ) + converted_state_dict["time_text_embed.timestep_embedder.linear_1.bias"] = checkpoint.pop("t_embedder.mlp.0.bias") + converted_state_dict["time_text_embed.timestep_embedder.linear_2.weight"] = checkpoint.pop( + "t_embedder.mlp.2.weight" + ) + converted_state_dict["time_text_embed.timestep_embedder.linear_2.bias"] = checkpoint.pop("t_embedder.mlp.2.bias") + + # Context projections. + converted_state_dict["context_embedder.weight"] = checkpoint.pop("context_embedder.weight") + converted_state_dict["context_embedder.bias"] = checkpoint.pop("context_embedder.bias") + + # Pooled context projection. + converted_state_dict["time_text_embed.text_embedder.linear_1.weight"] = checkpoint.pop("y_embedder.mlp.0.weight") + converted_state_dict["time_text_embed.text_embedder.linear_1.bias"] = checkpoint.pop("y_embedder.mlp.0.bias") + converted_state_dict["time_text_embed.text_embedder.linear_2.weight"] = checkpoint.pop("y_embedder.mlp.2.weight") + converted_state_dict["time_text_embed.text_embedder.linear_2.bias"] = checkpoint.pop("y_embedder.mlp.2.bias") + + # Transformer blocks 🎸. + for i in range(num_layers): + # Q, K, V + sample_q, sample_k, sample_v = torch.chunk( + checkpoint.pop(f"joint_blocks.{i}.x_block.attn.qkv.weight"), 3, dim=0 + ) + context_q, context_k, context_v = torch.chunk( + checkpoint.pop(f"joint_blocks.{i}.context_block.attn.qkv.weight"), 3, dim=0 + ) + sample_q_bias, sample_k_bias, sample_v_bias = torch.chunk( + checkpoint.pop(f"joint_blocks.{i}.x_block.attn.qkv.bias"), 3, dim=0 + ) + context_q_bias, context_k_bias, context_v_bias = torch.chunk( + checkpoint.pop(f"joint_blocks.{i}.context_block.attn.qkv.bias"), 3, dim=0 + ) + + converted_state_dict[f"transformer_blocks.{i}.attn.to_q.weight"] = torch.cat([sample_q]) + converted_state_dict[f"transformer_blocks.{i}.attn.to_q.bias"] = torch.cat([sample_q_bias]) + converted_state_dict[f"transformer_blocks.{i}.attn.to_k.weight"] = torch.cat([sample_k]) + converted_state_dict[f"transformer_blocks.{i}.attn.to_k.bias"] = torch.cat([sample_k_bias]) + converted_state_dict[f"transformer_blocks.{i}.attn.to_v.weight"] = torch.cat([sample_v]) + converted_state_dict[f"transformer_blocks.{i}.attn.to_v.bias"] = torch.cat([sample_v_bias]) + + converted_state_dict[f"transformer_blocks.{i}.attn.add_q_proj.weight"] = torch.cat([context_q]) + converted_state_dict[f"transformer_blocks.{i}.attn.add_q_proj.bias"] = torch.cat([context_q_bias]) + converted_state_dict[f"transformer_blocks.{i}.attn.add_k_proj.weight"] = torch.cat([context_k]) + converted_state_dict[f"transformer_blocks.{i}.attn.add_k_proj.bias"] = torch.cat([context_k_bias]) + converted_state_dict[f"transformer_blocks.{i}.attn.add_v_proj.weight"] = torch.cat([context_v]) + converted_state_dict[f"transformer_blocks.{i}.attn.add_v_proj.bias"] = torch.cat([context_v_bias]) + + # qk norm + if has_qk_norm: + converted_state_dict[f"transformer_blocks.{i}.attn.norm_q.weight"] = checkpoint.pop( + f"joint_blocks.{i}.x_block.attn.ln_q.weight" + ) + converted_state_dict[f"transformer_blocks.{i}.attn.norm_k.weight"] = checkpoint.pop( + f"joint_blocks.{i}.x_block.attn.ln_k.weight" + ) + converted_state_dict[f"transformer_blocks.{i}.attn.norm_added_q.weight"] = checkpoint.pop( + f"joint_blocks.{i}.context_block.attn.ln_q.weight" + ) + converted_state_dict[f"transformer_blocks.{i}.attn.norm_added_k.weight"] = checkpoint.pop( + f"joint_blocks.{i}.context_block.attn.ln_k.weight" + ) + + # output projections. + converted_state_dict[f"transformer_blocks.{i}.attn.to_out.0.weight"] = checkpoint.pop( + f"joint_blocks.{i}.x_block.attn.proj.weight" + ) + converted_state_dict[f"transformer_blocks.{i}.attn.to_out.0.bias"] = checkpoint.pop( + f"joint_blocks.{i}.x_block.attn.proj.bias" + ) + if not (i == num_layers - 1): + converted_state_dict[f"transformer_blocks.{i}.attn.to_add_out.weight"] = checkpoint.pop( + f"joint_blocks.{i}.context_block.attn.proj.weight" + ) + converted_state_dict[f"transformer_blocks.{i}.attn.to_add_out.bias"] = checkpoint.pop( + f"joint_blocks.{i}.context_block.attn.proj.bias" + ) + + if i in dual_attention_layers: + # Q, K, V + sample_q2, sample_k2, sample_v2 = torch.chunk( + checkpoint.pop(f"joint_blocks.{i}.x_block.attn2.qkv.weight"), 3, dim=0 + ) + sample_q2_bias, sample_k2_bias, sample_v2_bias = torch.chunk( + checkpoint.pop(f"joint_blocks.{i}.x_block.attn2.qkv.bias"), 3, dim=0 + ) + converted_state_dict[f"transformer_blocks.{i}.attn2.to_q.weight"] = torch.cat([sample_q2]) + converted_state_dict[f"transformer_blocks.{i}.attn2.to_q.bias"] = torch.cat([sample_q2_bias]) + converted_state_dict[f"transformer_blocks.{i}.attn2.to_k.weight"] = torch.cat([sample_k2]) + converted_state_dict[f"transformer_blocks.{i}.attn2.to_k.bias"] = torch.cat([sample_k2_bias]) + converted_state_dict[f"transformer_blocks.{i}.attn2.to_v.weight"] = torch.cat([sample_v2]) + converted_state_dict[f"transformer_blocks.{i}.attn2.to_v.bias"] = torch.cat([sample_v2_bias]) + + # qk norm + if has_qk_norm: + converted_state_dict[f"transformer_blocks.{i}.attn2.norm_q.weight"] = checkpoint.pop( + f"joint_blocks.{i}.x_block.attn2.ln_q.weight" + ) + converted_state_dict[f"transformer_blocks.{i}.attn2.norm_k.weight"] = checkpoint.pop( + f"joint_blocks.{i}.x_block.attn2.ln_k.weight" + ) + + # output projections. + converted_state_dict[f"transformer_blocks.{i}.attn2.to_out.0.weight"] = checkpoint.pop( + f"joint_blocks.{i}.x_block.attn2.proj.weight" + ) + converted_state_dict[f"transformer_blocks.{i}.attn2.to_out.0.bias"] = checkpoint.pop( + f"joint_blocks.{i}.x_block.attn2.proj.bias" + ) + + # norms. + converted_state_dict[f"transformer_blocks.{i}.norm1.linear.weight"] = checkpoint.pop( + f"joint_blocks.{i}.x_block.adaLN_modulation.1.weight" + ) + converted_state_dict[f"transformer_blocks.{i}.norm1.linear.bias"] = checkpoint.pop( + f"joint_blocks.{i}.x_block.adaLN_modulation.1.bias" + ) + if not (i == num_layers - 1): + converted_state_dict[f"transformer_blocks.{i}.norm1_context.linear.weight"] = checkpoint.pop( + f"joint_blocks.{i}.context_block.adaLN_modulation.1.weight" + ) + converted_state_dict[f"transformer_blocks.{i}.norm1_context.linear.bias"] = checkpoint.pop( + f"joint_blocks.{i}.context_block.adaLN_modulation.1.bias" + ) + else: + converted_state_dict[f"transformer_blocks.{i}.norm1_context.linear.weight"] = swap_scale_shift( + checkpoint.pop(f"joint_blocks.{i}.context_block.adaLN_modulation.1.weight"), + dim=caption_projection_dim, + ) + converted_state_dict[f"transformer_blocks.{i}.norm1_context.linear.bias"] = swap_scale_shift( + checkpoint.pop(f"joint_blocks.{i}.context_block.adaLN_modulation.1.bias"), + dim=caption_projection_dim, + ) + + # ffs. + converted_state_dict[f"transformer_blocks.{i}.ff.net.0.proj.weight"] = checkpoint.pop( + f"joint_blocks.{i}.x_block.mlp.fc1.weight" + ) + converted_state_dict[f"transformer_blocks.{i}.ff.net.0.proj.bias"] = checkpoint.pop( + f"joint_blocks.{i}.x_block.mlp.fc1.bias" + ) + converted_state_dict[f"transformer_blocks.{i}.ff.net.2.weight"] = checkpoint.pop( + f"joint_blocks.{i}.x_block.mlp.fc2.weight" + ) + converted_state_dict[f"transformer_blocks.{i}.ff.net.2.bias"] = checkpoint.pop( + f"joint_blocks.{i}.x_block.mlp.fc2.bias" + ) + if not (i == num_layers - 1): + converted_state_dict[f"transformer_blocks.{i}.ff_context.net.0.proj.weight"] = checkpoint.pop( + f"joint_blocks.{i}.context_block.mlp.fc1.weight" + ) + converted_state_dict[f"transformer_blocks.{i}.ff_context.net.0.proj.bias"] = checkpoint.pop( + f"joint_blocks.{i}.context_block.mlp.fc1.bias" + ) + converted_state_dict[f"transformer_blocks.{i}.ff_context.net.2.weight"] = checkpoint.pop( + f"joint_blocks.{i}.context_block.mlp.fc2.weight" + ) + converted_state_dict[f"transformer_blocks.{i}.ff_context.net.2.bias"] = checkpoint.pop( + f"joint_blocks.{i}.context_block.mlp.fc2.bias" + ) + + # Final blocks. + converted_state_dict["proj_out.weight"] = checkpoint.pop("final_layer.linear.weight") + converted_state_dict["proj_out.bias"] = checkpoint.pop("final_layer.linear.bias") + converted_state_dict["norm_out.linear.weight"] = swap_scale_shift( + checkpoint.pop("final_layer.adaLN_modulation.1.weight"), dim=caption_projection_dim + ) + converted_state_dict["norm_out.linear.bias"] = swap_scale_shift( + checkpoint.pop("final_layer.adaLN_modulation.1.bias"), dim=caption_projection_dim + ) + + return converted_state_dict + + +def is_t5_in_single_file(checkpoint): + if "text_encoders.t5xxl.transformer.shared.weight" in checkpoint: + return True + + return False + + +def convert_sd3_t5_checkpoint_to_diffusers(checkpoint): + keys = list(checkpoint.keys()) + text_model_dict = {} + + remove_prefixes = ["text_encoders.t5xxl.transformer."] + + for key in keys: + for prefix in remove_prefixes: + if key.startswith(prefix): + diffusers_key = key.replace(prefix, "") + text_model_dict[diffusers_key] = checkpoint.get(key) + + return text_model_dict + + +def create_diffusers_t5_model_from_checkpoint( + cls, + checkpoint, + subfolder="", + config=None, + torch_dtype=None, + local_files_only=None, +): + if config: + config = {"pretrained_model_name_or_path": config} + else: + config = fetch_diffusers_config(checkpoint) + + model_config = cls.config_class.from_pretrained(**config, subfolder=subfolder, local_files_only=local_files_only) + ctx = init_empty_weights if is_accelerate_available() else nullcontext + with ctx(): + model = cls(model_config) + + diffusers_format_checkpoint = convert_sd3_t5_checkpoint_to_diffusers(checkpoint) + + if is_accelerate_available(): + unexpected_keys = load_model_dict_into_meta(model, diffusers_format_checkpoint, dtype=torch_dtype) + if model._keys_to_ignore_on_load_unexpected is not None: + for pat in model._keys_to_ignore_on_load_unexpected: + unexpected_keys = [k for k in unexpected_keys if re.search(pat, k) is None] + + if len(unexpected_keys) > 0: + logger.warning( + f"Some weights of the model checkpoint were not used when initializing {cls.__name__}: \n {[', '.join(unexpected_keys)]}" + ) + + else: + model.load_state_dict(diffusers_format_checkpoint) + + use_keep_in_fp32_modules = (cls._keep_in_fp32_modules is not None) and (torch_dtype == torch.float16) + if use_keep_in_fp32_modules: + keep_in_fp32_modules = model._keep_in_fp32_modules + else: + keep_in_fp32_modules = [] + + if keep_in_fp32_modules is not None: + for name, param in model.named_parameters(): + if any(module_to_keep_in_fp32 in name.split(".") for module_to_keep_in_fp32 in keep_in_fp32_modules): + # param = param.to(torch.float32) does not work here as only in the local scope. + param.data = param.data.to(torch.float32) + + return model + + +def convert_animatediff_checkpoint_to_diffusers(checkpoint, **kwargs): + converted_state_dict = {} + for k, v in checkpoint.items(): + if "pos_encoder" in k: + continue + + else: + converted_state_dict[ + k.replace(".norms.0", ".norm1") + .replace(".norms.1", ".norm2") + .replace(".ff_norm", ".norm3") + .replace(".attention_blocks.0", ".attn1") + .replace(".attention_blocks.1", ".attn2") + .replace(".temporal_transformer", "") + ] = v + + return converted_state_dict + + +def convert_flux_transformer_checkpoint_to_diffusers(checkpoint, **kwargs): + converted_state_dict = {} + keys = list(checkpoint.keys()) + for k in keys: + if "model.diffusion_model." in k: + checkpoint[k.replace("model.diffusion_model.", "")] = checkpoint.pop(k) + + num_layers = list(set(int(k.split(".", 2)[1]) for k in checkpoint if "double_blocks." in k))[-1] + 1 # noqa: C401 + num_single_layers = list(set(int(k.split(".", 2)[1]) for k in checkpoint if "single_blocks." in k))[-1] + 1 # noqa: C401 + mlp_ratio = 4.0 + inner_dim = 3072 + + # in SD3 original implementation of AdaLayerNormContinuous, it split linear projection output into shift, scale; + # while in diffusers it split into scale, shift. Here we swap the linear projection weights in order to be able to use diffusers implementation + def swap_scale_shift(weight): + shift, scale = weight.chunk(2, dim=0) + new_weight = torch.cat([scale, shift], dim=0) + return new_weight + + ## time_text_embed.timestep_embedder <- time_in + converted_state_dict["time_text_embed.timestep_embedder.linear_1.weight"] = checkpoint.pop( + "time_in.in_layer.weight" + ) + converted_state_dict["time_text_embed.timestep_embedder.linear_1.bias"] = checkpoint.pop("time_in.in_layer.bias") + converted_state_dict["time_text_embed.timestep_embedder.linear_2.weight"] = checkpoint.pop( + "time_in.out_layer.weight" + ) + converted_state_dict["time_text_embed.timestep_embedder.linear_2.bias"] = checkpoint.pop("time_in.out_layer.bias") + + ## time_text_embed.text_embedder <- vector_in + converted_state_dict["time_text_embed.text_embedder.linear_1.weight"] = checkpoint.pop("vector_in.in_layer.weight") + converted_state_dict["time_text_embed.text_embedder.linear_1.bias"] = checkpoint.pop("vector_in.in_layer.bias") + converted_state_dict["time_text_embed.text_embedder.linear_2.weight"] = checkpoint.pop( + "vector_in.out_layer.weight" + ) + converted_state_dict["time_text_embed.text_embedder.linear_2.bias"] = checkpoint.pop("vector_in.out_layer.bias") + + # guidance + has_guidance = any("guidance" in k for k in checkpoint) + if has_guidance: + converted_state_dict["time_text_embed.guidance_embedder.linear_1.weight"] = checkpoint.pop( + "guidance_in.in_layer.weight" + ) + converted_state_dict["time_text_embed.guidance_embedder.linear_1.bias"] = checkpoint.pop( + "guidance_in.in_layer.bias" + ) + converted_state_dict["time_text_embed.guidance_embedder.linear_2.weight"] = checkpoint.pop( + "guidance_in.out_layer.weight" + ) + converted_state_dict["time_text_embed.guidance_embedder.linear_2.bias"] = checkpoint.pop( + "guidance_in.out_layer.bias" + ) + + # context_embedder + converted_state_dict["context_embedder.weight"] = checkpoint.pop("txt_in.weight") + converted_state_dict["context_embedder.bias"] = checkpoint.pop("txt_in.bias") + + # x_embedder + converted_state_dict["x_embedder.weight"] = checkpoint.pop("img_in.weight") + converted_state_dict["x_embedder.bias"] = checkpoint.pop("img_in.bias") + + # double transformer blocks + for i in range(num_layers): + block_prefix = f"transformer_blocks.{i}." + # norms. + ## norm1 + converted_state_dict[f"{block_prefix}norm1.linear.weight"] = checkpoint.pop( + f"double_blocks.{i}.img_mod.lin.weight" + ) + converted_state_dict[f"{block_prefix}norm1.linear.bias"] = checkpoint.pop( + f"double_blocks.{i}.img_mod.lin.bias" + ) + ## norm1_context + converted_state_dict[f"{block_prefix}norm1_context.linear.weight"] = checkpoint.pop( + f"double_blocks.{i}.txt_mod.lin.weight" + ) + converted_state_dict[f"{block_prefix}norm1_context.linear.bias"] = checkpoint.pop( + f"double_blocks.{i}.txt_mod.lin.bias" + ) + # Q, K, V + sample_q, sample_k, sample_v = torch.chunk(checkpoint.pop(f"double_blocks.{i}.img_attn.qkv.weight"), 3, dim=0) + context_q, context_k, context_v = torch.chunk( + checkpoint.pop(f"double_blocks.{i}.txt_attn.qkv.weight"), 3, dim=0 + ) + sample_q_bias, sample_k_bias, sample_v_bias = torch.chunk( + checkpoint.pop(f"double_blocks.{i}.img_attn.qkv.bias"), 3, dim=0 + ) + context_q_bias, context_k_bias, context_v_bias = torch.chunk( + checkpoint.pop(f"double_blocks.{i}.txt_attn.qkv.bias"), 3, dim=0 + ) + converted_state_dict[f"{block_prefix}attn.to_q.weight"] = torch.cat([sample_q]) + converted_state_dict[f"{block_prefix}attn.to_q.bias"] = torch.cat([sample_q_bias]) + converted_state_dict[f"{block_prefix}attn.to_k.weight"] = torch.cat([sample_k]) + converted_state_dict[f"{block_prefix}attn.to_k.bias"] = torch.cat([sample_k_bias]) + converted_state_dict[f"{block_prefix}attn.to_v.weight"] = torch.cat([sample_v]) + converted_state_dict[f"{block_prefix}attn.to_v.bias"] = torch.cat([sample_v_bias]) + converted_state_dict[f"{block_prefix}attn.add_q_proj.weight"] = torch.cat([context_q]) + converted_state_dict[f"{block_prefix}attn.add_q_proj.bias"] = torch.cat([context_q_bias]) + converted_state_dict[f"{block_prefix}attn.add_k_proj.weight"] = torch.cat([context_k]) + converted_state_dict[f"{block_prefix}attn.add_k_proj.bias"] = torch.cat([context_k_bias]) + converted_state_dict[f"{block_prefix}attn.add_v_proj.weight"] = torch.cat([context_v]) + converted_state_dict[f"{block_prefix}attn.add_v_proj.bias"] = torch.cat([context_v_bias]) + # qk_norm + converted_state_dict[f"{block_prefix}attn.norm_q.weight"] = checkpoint.pop( + f"double_blocks.{i}.img_attn.norm.query_norm.scale" + ) + converted_state_dict[f"{block_prefix}attn.norm_k.weight"] = checkpoint.pop( + f"double_blocks.{i}.img_attn.norm.key_norm.scale" + ) + converted_state_dict[f"{block_prefix}attn.norm_added_q.weight"] = checkpoint.pop( + f"double_blocks.{i}.txt_attn.norm.query_norm.scale" + ) + converted_state_dict[f"{block_prefix}attn.norm_added_k.weight"] = checkpoint.pop( + f"double_blocks.{i}.txt_attn.norm.key_norm.scale" + ) + # ff img_mlp + converted_state_dict[f"{block_prefix}ff.net.0.proj.weight"] = checkpoint.pop( + f"double_blocks.{i}.img_mlp.0.weight" + ) + converted_state_dict[f"{block_prefix}ff.net.0.proj.bias"] = checkpoint.pop(f"double_blocks.{i}.img_mlp.0.bias") + converted_state_dict[f"{block_prefix}ff.net.2.weight"] = checkpoint.pop(f"double_blocks.{i}.img_mlp.2.weight") + converted_state_dict[f"{block_prefix}ff.net.2.bias"] = checkpoint.pop(f"double_blocks.{i}.img_mlp.2.bias") + converted_state_dict[f"{block_prefix}ff_context.net.0.proj.weight"] = checkpoint.pop( + f"double_blocks.{i}.txt_mlp.0.weight" + ) + converted_state_dict[f"{block_prefix}ff_context.net.0.proj.bias"] = checkpoint.pop( + f"double_blocks.{i}.txt_mlp.0.bias" + ) + converted_state_dict[f"{block_prefix}ff_context.net.2.weight"] = checkpoint.pop( + f"double_blocks.{i}.txt_mlp.2.weight" + ) + converted_state_dict[f"{block_prefix}ff_context.net.2.bias"] = checkpoint.pop( + f"double_blocks.{i}.txt_mlp.2.bias" + ) + # output projections. + converted_state_dict[f"{block_prefix}attn.to_out.0.weight"] = checkpoint.pop( + f"double_blocks.{i}.img_attn.proj.weight" + ) + converted_state_dict[f"{block_prefix}attn.to_out.0.bias"] = checkpoint.pop( + f"double_blocks.{i}.img_attn.proj.bias" + ) + converted_state_dict[f"{block_prefix}attn.to_add_out.weight"] = checkpoint.pop( + f"double_blocks.{i}.txt_attn.proj.weight" + ) + converted_state_dict[f"{block_prefix}attn.to_add_out.bias"] = checkpoint.pop( + f"double_blocks.{i}.txt_attn.proj.bias" + ) + + # single transfomer blocks + for i in range(num_single_layers): + block_prefix = f"single_transformer_blocks.{i}." + # norm.linear <- single_blocks.0.modulation.lin + converted_state_dict[f"{block_prefix}norm.linear.weight"] = checkpoint.pop( + f"single_blocks.{i}.modulation.lin.weight" + ) + converted_state_dict[f"{block_prefix}norm.linear.bias"] = checkpoint.pop( + f"single_blocks.{i}.modulation.lin.bias" + ) + # Q, K, V, mlp + mlp_hidden_dim = int(inner_dim * mlp_ratio) + split_size = (inner_dim, inner_dim, inner_dim, mlp_hidden_dim) + q, k, v, mlp = torch.split(checkpoint.pop(f"single_blocks.{i}.linear1.weight"), split_size, dim=0) + q_bias, k_bias, v_bias, mlp_bias = torch.split( + checkpoint.pop(f"single_blocks.{i}.linear1.bias"), split_size, dim=0 + ) + converted_state_dict[f"{block_prefix}attn.to_q.weight"] = torch.cat([q]) + converted_state_dict[f"{block_prefix}attn.to_q.bias"] = torch.cat([q_bias]) + converted_state_dict[f"{block_prefix}attn.to_k.weight"] = torch.cat([k]) + converted_state_dict[f"{block_prefix}attn.to_k.bias"] = torch.cat([k_bias]) + converted_state_dict[f"{block_prefix}attn.to_v.weight"] = torch.cat([v]) + converted_state_dict[f"{block_prefix}attn.to_v.bias"] = torch.cat([v_bias]) + converted_state_dict[f"{block_prefix}proj_mlp.weight"] = torch.cat([mlp]) + converted_state_dict[f"{block_prefix}proj_mlp.bias"] = torch.cat([mlp_bias]) + # qk norm + converted_state_dict[f"{block_prefix}attn.norm_q.weight"] = checkpoint.pop( + f"single_blocks.{i}.norm.query_norm.scale" + ) + converted_state_dict[f"{block_prefix}attn.norm_k.weight"] = checkpoint.pop( + f"single_blocks.{i}.norm.key_norm.scale" + ) + # output projections. + converted_state_dict[f"{block_prefix}proj_out.weight"] = checkpoint.pop(f"single_blocks.{i}.linear2.weight") + converted_state_dict[f"{block_prefix}proj_out.bias"] = checkpoint.pop(f"single_blocks.{i}.linear2.bias") + + converted_state_dict["proj_out.weight"] = checkpoint.pop("final_layer.linear.weight") + converted_state_dict["proj_out.bias"] = checkpoint.pop("final_layer.linear.bias") + converted_state_dict["norm_out.linear.weight"] = swap_scale_shift( + checkpoint.pop("final_layer.adaLN_modulation.1.weight") + ) + converted_state_dict["norm_out.linear.bias"] = swap_scale_shift( + checkpoint.pop("final_layer.adaLN_modulation.1.bias") + ) + + return converted_state_dict + + +def convert_ltx_transformer_checkpoint_to_diffusers(checkpoint, **kwargs): + converted_state_dict = {key: checkpoint.pop(key) for key in list(checkpoint.keys()) if "vae" not in key} + + TRANSFORMER_KEYS_RENAME_DICT = { + "model.diffusion_model.": "", + "patchify_proj": "proj_in", + "adaln_single": "time_embed", + "q_norm": "norm_q", + "k_norm": "norm_k", + } + + TRANSFORMER_SPECIAL_KEYS_REMAP = {} + + for key in list(converted_state_dict.keys()): + new_key = key + for replace_key, rename_key in TRANSFORMER_KEYS_RENAME_DICT.items(): + new_key = new_key.replace(replace_key, rename_key) + converted_state_dict[new_key] = converted_state_dict.pop(key) + + for key in list(converted_state_dict.keys()): + for special_key, handler_fn_inplace in TRANSFORMER_SPECIAL_KEYS_REMAP.items(): + if special_key not in key: + continue + handler_fn_inplace(key, converted_state_dict) + + return converted_state_dict + + +def convert_ltx_vae_checkpoint_to_diffusers(checkpoint, **kwargs): + converted_state_dict = {key: checkpoint.pop(key) for key in list(checkpoint.keys()) if "vae." in key} + + def remove_keys_(key: str, state_dict): + state_dict.pop(key) + + VAE_KEYS_RENAME_DICT = { + # common + "vae.": "", + # decoder + "up_blocks.0": "mid_block", + "up_blocks.1": "up_blocks.0", + "up_blocks.2": "up_blocks.1.upsamplers.0", + "up_blocks.3": "up_blocks.1", + "up_blocks.4": "up_blocks.2.conv_in", + "up_blocks.5": "up_blocks.2.upsamplers.0", + "up_blocks.6": "up_blocks.2", + "up_blocks.7": "up_blocks.3.conv_in", + "up_blocks.8": "up_blocks.3.upsamplers.0", + "up_blocks.9": "up_blocks.3", + # encoder + "down_blocks.0": "down_blocks.0", + "down_blocks.1": "down_blocks.0.downsamplers.0", + "down_blocks.2": "down_blocks.0.conv_out", + "down_blocks.3": "down_blocks.1", + "down_blocks.4": "down_blocks.1.downsamplers.0", + "down_blocks.5": "down_blocks.1.conv_out", + "down_blocks.6": "down_blocks.2", + "down_blocks.7": "down_blocks.2.downsamplers.0", + "down_blocks.8": "down_blocks.3", + "down_blocks.9": "mid_block", + # common + "conv_shortcut": "conv_shortcut.conv", + "res_blocks": "resnets", + "norm3.norm": "norm3", + "per_channel_statistics.mean-of-means": "latents_mean", + "per_channel_statistics.std-of-means": "latents_std", + } + + VAE_091_RENAME_DICT = { + # decoder + "up_blocks.0": "mid_block", + "up_blocks.1": "up_blocks.0.upsamplers.0", + "up_blocks.2": "up_blocks.0", + "up_blocks.3": "up_blocks.1.upsamplers.0", + "up_blocks.4": "up_blocks.1", + "up_blocks.5": "up_blocks.2.upsamplers.0", + "up_blocks.6": "up_blocks.2", + "up_blocks.7": "up_blocks.3.upsamplers.0", + "up_blocks.8": "up_blocks.3", + # common + "last_time_embedder": "time_embedder", + "last_scale_shift_table": "scale_shift_table", + } + + VAE_SPECIAL_KEYS_REMAP = { + "per_channel_statistics.channel": remove_keys_, + "per_channel_statistics.mean-of-means": remove_keys_, + "per_channel_statistics.mean-of-stds": remove_keys_, + "timestep_scale_multiplier": remove_keys_, + } + + if "vae.decoder.last_time_embedder.timestep_embedder.linear_1.weight" in converted_state_dict: + VAE_KEYS_RENAME_DICT.update(VAE_091_RENAME_DICT) + + for key in list(converted_state_dict.keys()): + new_key = key + for replace_key, rename_key in VAE_KEYS_RENAME_DICT.items(): + new_key = new_key.replace(replace_key, rename_key) + converted_state_dict[new_key] = converted_state_dict.pop(key) + + for key in list(converted_state_dict.keys()): + for special_key, handler_fn_inplace in VAE_SPECIAL_KEYS_REMAP.items(): + if special_key not in key: + continue + handler_fn_inplace(key, converted_state_dict) + + return converted_state_dict + + +def convert_autoencoder_dc_checkpoint_to_diffusers(checkpoint, **kwargs): + converted_state_dict = {key: checkpoint.pop(key) for key in list(checkpoint.keys())} + + def remap_qkv_(key: str, state_dict): + qkv = state_dict.pop(key) + q, k, v = torch.chunk(qkv, 3, dim=0) + parent_module, _, _ = key.rpartition(".qkv.conv.weight") + state_dict[f"{parent_module}.to_q.weight"] = q.squeeze() + state_dict[f"{parent_module}.to_k.weight"] = k.squeeze() + state_dict[f"{parent_module}.to_v.weight"] = v.squeeze() + + def remap_proj_conv_(key: str, state_dict): + parent_module, _, _ = key.rpartition(".proj.conv.weight") + state_dict[f"{parent_module}.to_out.weight"] = state_dict.pop(key).squeeze() + + AE_KEYS_RENAME_DICT = { + # common + "main.": "", + "op_list.": "", + "context_module": "attn", + "local_module": "conv_out", + # NOTE: The below two lines work because scales in the available configs only have a tuple length of 1 + # If there were more scales, there would be more layers, so a loop would be better to handle this + "aggreg.0.0": "to_qkv_multiscale.0.proj_in", + "aggreg.0.1": "to_qkv_multiscale.0.proj_out", + "depth_conv.conv": "conv_depth", + "inverted_conv.conv": "conv_inverted", + "point_conv.conv": "conv_point", + "point_conv.norm": "norm", + "conv.conv.": "conv.", + "conv1.conv": "conv1", + "conv2.conv": "conv2", + "conv2.norm": "norm", + "proj.norm": "norm_out", + # encoder + "encoder.project_in.conv": "encoder.conv_in", + "encoder.project_out.0.conv": "encoder.conv_out", + "encoder.stages": "encoder.down_blocks", + # decoder + "decoder.project_in.conv": "decoder.conv_in", + "decoder.project_out.0": "decoder.norm_out", + "decoder.project_out.2.conv": "decoder.conv_out", + "decoder.stages": "decoder.up_blocks", + } + + AE_F32C32_F64C128_F128C512_KEYS = { + "encoder.project_in.conv": "encoder.conv_in.conv", + "decoder.project_out.2.conv": "decoder.conv_out.conv", + } + + AE_SPECIAL_KEYS_REMAP = { + "qkv.conv.weight": remap_qkv_, + "proj.conv.weight": remap_proj_conv_, + } + if "encoder.project_in.conv.bias" not in converted_state_dict: + AE_KEYS_RENAME_DICT.update(AE_F32C32_F64C128_F128C512_KEYS) + + for key in list(converted_state_dict.keys()): + new_key = key[:] + for replace_key, rename_key in AE_KEYS_RENAME_DICT.items(): + new_key = new_key.replace(replace_key, rename_key) + converted_state_dict[new_key] = converted_state_dict.pop(key) + + for key in list(converted_state_dict.keys()): + for special_key, handler_fn_inplace in AE_SPECIAL_KEYS_REMAP.items(): + if special_key not in key: + continue + handler_fn_inplace(key, converted_state_dict) + + return converted_state_dict + + +def convert_mochi_transformer_checkpoint_to_diffusers(checkpoint, **kwargs): + new_state_dict = {} + + # Comfy checkpoints add this prefix + keys = list(checkpoint.keys()) + for k in keys: + if "model.diffusion_model." in k: + checkpoint[k.replace("model.diffusion_model.", "")] = checkpoint.pop(k) + + # Convert patch_embed + new_state_dict["patch_embed.proj.weight"] = checkpoint.pop("x_embedder.proj.weight") + new_state_dict["patch_embed.proj.bias"] = checkpoint.pop("x_embedder.proj.bias") + + # Convert time_embed + new_state_dict["time_embed.timestep_embedder.linear_1.weight"] = checkpoint.pop("t_embedder.mlp.0.weight") + new_state_dict["time_embed.timestep_embedder.linear_1.bias"] = checkpoint.pop("t_embedder.mlp.0.bias") + new_state_dict["time_embed.timestep_embedder.linear_2.weight"] = checkpoint.pop("t_embedder.mlp.2.weight") + new_state_dict["time_embed.timestep_embedder.linear_2.bias"] = checkpoint.pop("t_embedder.mlp.2.bias") + new_state_dict["time_embed.pooler.to_kv.weight"] = checkpoint.pop("t5_y_embedder.to_kv.weight") + new_state_dict["time_embed.pooler.to_kv.bias"] = checkpoint.pop("t5_y_embedder.to_kv.bias") + new_state_dict["time_embed.pooler.to_q.weight"] = checkpoint.pop("t5_y_embedder.to_q.weight") + new_state_dict["time_embed.pooler.to_q.bias"] = checkpoint.pop("t5_y_embedder.to_q.bias") + new_state_dict["time_embed.pooler.to_out.weight"] = checkpoint.pop("t5_y_embedder.to_out.weight") + new_state_dict["time_embed.pooler.to_out.bias"] = checkpoint.pop("t5_y_embedder.to_out.bias") + new_state_dict["time_embed.caption_proj.weight"] = checkpoint.pop("t5_yproj.weight") + new_state_dict["time_embed.caption_proj.bias"] = checkpoint.pop("t5_yproj.bias") + + # Convert transformer blocks + num_layers = 48 + for i in range(num_layers): + block_prefix = f"transformer_blocks.{i}." + old_prefix = f"blocks.{i}." + + # norm1 + new_state_dict[block_prefix + "norm1.linear.weight"] = checkpoint.pop(old_prefix + "mod_x.weight") + new_state_dict[block_prefix + "norm1.linear.bias"] = checkpoint.pop(old_prefix + "mod_x.bias") + if i < num_layers - 1: + new_state_dict[block_prefix + "norm1_context.linear.weight"] = checkpoint.pop(old_prefix + "mod_y.weight") + new_state_dict[block_prefix + "norm1_context.linear.bias"] = checkpoint.pop(old_prefix + "mod_y.bias") + else: + new_state_dict[block_prefix + "norm1_context.linear_1.weight"] = checkpoint.pop( + old_prefix + "mod_y.weight" + ) + new_state_dict[block_prefix + "norm1_context.linear_1.bias"] = checkpoint.pop(old_prefix + "mod_y.bias") + + # Visual attention + qkv_weight = checkpoint.pop(old_prefix + "attn.qkv_x.weight") + q, k, v = qkv_weight.chunk(3, dim=0) + + new_state_dict[block_prefix + "attn1.to_q.weight"] = q + new_state_dict[block_prefix + "attn1.to_k.weight"] = k + new_state_dict[block_prefix + "attn1.to_v.weight"] = v + new_state_dict[block_prefix + "attn1.norm_q.weight"] = checkpoint.pop(old_prefix + "attn.q_norm_x.weight") + new_state_dict[block_prefix + "attn1.norm_k.weight"] = checkpoint.pop(old_prefix + "attn.k_norm_x.weight") + new_state_dict[block_prefix + "attn1.to_out.0.weight"] = checkpoint.pop(old_prefix + "attn.proj_x.weight") + new_state_dict[block_prefix + "attn1.to_out.0.bias"] = checkpoint.pop(old_prefix + "attn.proj_x.bias") + + # Context attention + qkv_weight = checkpoint.pop(old_prefix + "attn.qkv_y.weight") + q, k, v = qkv_weight.chunk(3, dim=0) + + new_state_dict[block_prefix + "attn1.add_q_proj.weight"] = q + new_state_dict[block_prefix + "attn1.add_k_proj.weight"] = k + new_state_dict[block_prefix + "attn1.add_v_proj.weight"] = v + new_state_dict[block_prefix + "attn1.norm_added_q.weight"] = checkpoint.pop( + old_prefix + "attn.q_norm_y.weight" + ) + new_state_dict[block_prefix + "attn1.norm_added_k.weight"] = checkpoint.pop( + old_prefix + "attn.k_norm_y.weight" + ) + if i < num_layers - 1: + new_state_dict[block_prefix + "attn1.to_add_out.weight"] = checkpoint.pop( + old_prefix + "attn.proj_y.weight" + ) + new_state_dict[block_prefix + "attn1.to_add_out.bias"] = checkpoint.pop(old_prefix + "attn.proj_y.bias") + + # MLP + new_state_dict[block_prefix + "ff.net.0.proj.weight"] = swap_proj_gate( + checkpoint.pop(old_prefix + "mlp_x.w1.weight") + ) + new_state_dict[block_prefix + "ff.net.2.weight"] = checkpoint.pop(old_prefix + "mlp_x.w2.weight") + if i < num_layers - 1: + new_state_dict[block_prefix + "ff_context.net.0.proj.weight"] = swap_proj_gate( + checkpoint.pop(old_prefix + "mlp_y.w1.weight") + ) + new_state_dict[block_prefix + "ff_context.net.2.weight"] = checkpoint.pop(old_prefix + "mlp_y.w2.weight") + + # Output layers + new_state_dict["norm_out.linear.weight"] = swap_scale_shift(checkpoint.pop("final_layer.mod.weight"), dim=0) + new_state_dict["norm_out.linear.bias"] = swap_scale_shift(checkpoint.pop("final_layer.mod.bias"), dim=0) + new_state_dict["proj_out.weight"] = checkpoint.pop("final_layer.linear.weight") + new_state_dict["proj_out.bias"] = checkpoint.pop("final_layer.linear.bias") + + new_state_dict["pos_frequencies"] = checkpoint.pop("pos_frequencies") + + return new_state_dict + + +def convert_hunyuan_video_transformer_to_diffusers(checkpoint, **kwargs): + def remap_norm_scale_shift_(key, state_dict): + weight = state_dict.pop(key) + shift, scale = weight.chunk(2, dim=0) + new_weight = torch.cat([scale, shift], dim=0) + state_dict[key.replace("final_layer.adaLN_modulation.1", "norm_out.linear")] = new_weight + + def remap_txt_in_(key, state_dict): + def rename_key(key): + new_key = key.replace("individual_token_refiner.blocks", "token_refiner.refiner_blocks") + new_key = new_key.replace("adaLN_modulation.1", "norm_out.linear") + new_key = new_key.replace("txt_in", "context_embedder") + new_key = new_key.replace("t_embedder.mlp.0", "time_text_embed.timestep_embedder.linear_1") + new_key = new_key.replace("t_embedder.mlp.2", "time_text_embed.timestep_embedder.linear_2") + new_key = new_key.replace("c_embedder", "time_text_embed.text_embedder") + new_key = new_key.replace("mlp", "ff") + return new_key + + if "self_attn_qkv" in key: + weight = state_dict.pop(key) + to_q, to_k, to_v = weight.chunk(3, dim=0) + state_dict[rename_key(key.replace("self_attn_qkv", "attn.to_q"))] = to_q + state_dict[rename_key(key.replace("self_attn_qkv", "attn.to_k"))] = to_k + state_dict[rename_key(key.replace("self_attn_qkv", "attn.to_v"))] = to_v + else: + state_dict[rename_key(key)] = state_dict.pop(key) + + def remap_img_attn_qkv_(key, state_dict): + weight = state_dict.pop(key) + to_q, to_k, to_v = weight.chunk(3, dim=0) + state_dict[key.replace("img_attn_qkv", "attn.to_q")] = to_q + state_dict[key.replace("img_attn_qkv", "attn.to_k")] = to_k + state_dict[key.replace("img_attn_qkv", "attn.to_v")] = to_v + + def remap_txt_attn_qkv_(key, state_dict): + weight = state_dict.pop(key) + to_q, to_k, to_v = weight.chunk(3, dim=0) + state_dict[key.replace("txt_attn_qkv", "attn.add_q_proj")] = to_q + state_dict[key.replace("txt_attn_qkv", "attn.add_k_proj")] = to_k + state_dict[key.replace("txt_attn_qkv", "attn.add_v_proj")] = to_v + + def remap_single_transformer_blocks_(key, state_dict): + hidden_size = 3072 + + if "linear1.weight" in key: + linear1_weight = state_dict.pop(key) + split_size = (hidden_size, hidden_size, hidden_size, linear1_weight.size(0) - 3 * hidden_size) + q, k, v, mlp = torch.split(linear1_weight, split_size, dim=0) + new_key = key.replace("single_blocks", "single_transformer_blocks").removesuffix(".linear1.weight") + state_dict[f"{new_key}.attn.to_q.weight"] = q + state_dict[f"{new_key}.attn.to_k.weight"] = k + state_dict[f"{new_key}.attn.to_v.weight"] = v + state_dict[f"{new_key}.proj_mlp.weight"] = mlp + + elif "linear1.bias" in key: + linear1_bias = state_dict.pop(key) + split_size = (hidden_size, hidden_size, hidden_size, linear1_bias.size(0) - 3 * hidden_size) + q_bias, k_bias, v_bias, mlp_bias = torch.split(linear1_bias, split_size, dim=0) + new_key = key.replace("single_blocks", "single_transformer_blocks").removesuffix(".linear1.bias") + state_dict[f"{new_key}.attn.to_q.bias"] = q_bias + state_dict[f"{new_key}.attn.to_k.bias"] = k_bias + state_dict[f"{new_key}.attn.to_v.bias"] = v_bias + state_dict[f"{new_key}.proj_mlp.bias"] = mlp_bias + + else: + new_key = key.replace("single_blocks", "single_transformer_blocks") + new_key = new_key.replace("linear2", "proj_out") + new_key = new_key.replace("q_norm", "attn.norm_q") + new_key = new_key.replace("k_norm", "attn.norm_k") + state_dict[new_key] = state_dict.pop(key) + + TRANSFORMER_KEYS_RENAME_DICT = { + "img_in": "x_embedder", + "time_in.mlp.0": "time_text_embed.timestep_embedder.linear_1", + "time_in.mlp.2": "time_text_embed.timestep_embedder.linear_2", + "guidance_in.mlp.0": "time_text_embed.guidance_embedder.linear_1", + "guidance_in.mlp.2": "time_text_embed.guidance_embedder.linear_2", + "vector_in.in_layer": "time_text_embed.text_embedder.linear_1", + "vector_in.out_layer": "time_text_embed.text_embedder.linear_2", + "double_blocks": "transformer_blocks", + "img_attn_q_norm": "attn.norm_q", + "img_attn_k_norm": "attn.norm_k", + "img_attn_proj": "attn.to_out.0", + "txt_attn_q_norm": "attn.norm_added_q", + "txt_attn_k_norm": "attn.norm_added_k", + "txt_attn_proj": "attn.to_add_out", + "img_mod.linear": "norm1.linear", + "img_norm1": "norm1.norm", + "img_norm2": "norm2", + "img_mlp": "ff", + "txt_mod.linear": "norm1_context.linear", + "txt_norm1": "norm1.norm", + "txt_norm2": "norm2_context", + "txt_mlp": "ff_context", + "self_attn_proj": "attn.to_out.0", + "modulation.linear": "norm.linear", + "pre_norm": "norm.norm", + "final_layer.norm_final": "norm_out.norm", + "final_layer.linear": "proj_out", + "fc1": "net.0.proj", + "fc2": "net.2", + "input_embedder": "proj_in", + } + + TRANSFORMER_SPECIAL_KEYS_REMAP = { + "txt_in": remap_txt_in_, + "img_attn_qkv": remap_img_attn_qkv_, + "txt_attn_qkv": remap_txt_attn_qkv_, + "single_blocks": remap_single_transformer_blocks_, + "final_layer.adaLN_modulation.1": remap_norm_scale_shift_, + } + + def update_state_dict_(state_dict, old_key, new_key): + state_dict[new_key] = state_dict.pop(old_key) + + for key in list(checkpoint.keys()): + new_key = key[:] + for replace_key, rename_key in TRANSFORMER_KEYS_RENAME_DICT.items(): + new_key = new_key.replace(replace_key, rename_key) + update_state_dict_(checkpoint, key, new_key) + + for key in list(checkpoint.keys()): + for special_key, handler_fn_inplace in TRANSFORMER_SPECIAL_KEYS_REMAP.items(): + if special_key not in key: + continue + handler_fn_inplace(key, checkpoint) + + return checkpoint diff --git a/venv/lib/python3.11/site-packages/diffusers/loaders/textual_inversion.py b/venv/lib/python3.11/site-packages/diffusers/loaders/textual_inversion.py new file mode 100644 index 0000000000000000000000000000000000000000..0162d67a340cfe2862f7646f563a82b53d2d0418 --- /dev/null +++ b/venv/lib/python3.11/site-packages/diffusers/loaders/textual_inversion.py @@ -0,0 +1,580 @@ +# Copyright 2024 The HuggingFace Team. All rights reserved. +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. +from typing import Dict, List, Optional, Union + +import safetensors +import torch +from huggingface_hub.utils import validate_hf_hub_args +from torch import nn + +from ..models.modeling_utils import load_state_dict +from ..utils import _get_model_file, is_accelerate_available, is_transformers_available, logging + + +if is_transformers_available(): + from transformers import PreTrainedModel, PreTrainedTokenizer + +if is_accelerate_available(): + from accelerate.hooks import AlignDevicesHook, CpuOffload, remove_hook_from_module + +logger = logging.get_logger(__name__) + +TEXT_INVERSION_NAME = "learned_embeds.bin" +TEXT_INVERSION_NAME_SAFE = "learned_embeds.safetensors" + + +@validate_hf_hub_args +def load_textual_inversion_state_dicts(pretrained_model_name_or_paths, **kwargs): + cache_dir = kwargs.pop("cache_dir", None) + force_download = kwargs.pop("force_download", False) + proxies = kwargs.pop("proxies", None) + local_files_only = kwargs.pop("local_files_only", None) + token = kwargs.pop("token", None) + revision = kwargs.pop("revision", None) + subfolder = kwargs.pop("subfolder", None) + weight_name = kwargs.pop("weight_name", None) + use_safetensors = kwargs.pop("use_safetensors", None) + + allow_pickle = False + if use_safetensors is None: + use_safetensors = True + allow_pickle = True + + user_agent = { + "file_type": "text_inversion", + "framework": "pytorch", + } + state_dicts = [] + for pretrained_model_name_or_path in pretrained_model_name_or_paths: + if not isinstance(pretrained_model_name_or_path, (dict, torch.Tensor)): + # 3.1. Load textual inversion file + model_file = None + + # Let's first try to load .safetensors weights + if (use_safetensors and weight_name is None) or ( + weight_name is not None and weight_name.endswith(".safetensors") + ): + try: + model_file = _get_model_file( + pretrained_model_name_or_path, + weights_name=weight_name or TEXT_INVERSION_NAME_SAFE, + cache_dir=cache_dir, + force_download=force_download, + proxies=proxies, + local_files_only=local_files_only, + token=token, + revision=revision, + subfolder=subfolder, + user_agent=user_agent, + ) + state_dict = safetensors.torch.load_file(model_file, device="cpu") + except Exception as e: + if not allow_pickle: + raise e + + model_file = None + + if model_file is None: + model_file = _get_model_file( + pretrained_model_name_or_path, + weights_name=weight_name or TEXT_INVERSION_NAME, + cache_dir=cache_dir, + force_download=force_download, + proxies=proxies, + local_files_only=local_files_only, + token=token, + revision=revision, + subfolder=subfolder, + user_agent=user_agent, + ) + state_dict = load_state_dict(model_file) + else: + state_dict = pretrained_model_name_or_path + + state_dicts.append(state_dict) + + return state_dicts + + +class TextualInversionLoaderMixin: + r""" + Load Textual Inversion tokens and embeddings to the tokenizer and text encoder. + """ + + def maybe_convert_prompt(self, prompt: Union[str, List[str]], tokenizer: "PreTrainedTokenizer"): # noqa: F821 + r""" + Processes prompts that include a special token corresponding to a multi-vector textual inversion embedding to + be replaced with multiple special tokens each corresponding to one of the vectors. If the prompt has no textual + inversion token or if the textual inversion token is a single vector, the input prompt is returned. + + Parameters: + prompt (`str` or list of `str`): + The prompt or prompts to guide the image generation. + tokenizer (`PreTrainedTokenizer`): + The tokenizer responsible for encoding the prompt into input tokens. + + Returns: + `str` or list of `str`: The converted prompt + """ + if not isinstance(prompt, List): + prompts = [prompt] + else: + prompts = prompt + + prompts = [self._maybe_convert_prompt(p, tokenizer) for p in prompts] + + if not isinstance(prompt, List): + return prompts[0] + + return prompts + + def _maybe_convert_prompt(self, prompt: str, tokenizer: "PreTrainedTokenizer"): # noqa: F821 + r""" + Maybe convert a prompt into a "multi vector"-compatible prompt. If the prompt includes a token that corresponds + to a multi-vector textual inversion embedding, this function will process the prompt so that the special token + is replaced with multiple special tokens each corresponding to one of the vectors. If the prompt has no textual + inversion token or a textual inversion token that is a single vector, the input prompt is simply returned. + + Parameters: + prompt (`str`): + The prompt to guide the image generation. + tokenizer (`PreTrainedTokenizer`): + The tokenizer responsible for encoding the prompt into input tokens. + + Returns: + `str`: The converted prompt + """ + tokens = tokenizer.tokenize(prompt) + unique_tokens = set(tokens) + for token in unique_tokens: + if token in tokenizer.added_tokens_encoder: + replacement = token + i = 1 + while f"{token}_{i}" in tokenizer.added_tokens_encoder: + replacement += f" {token}_{i}" + i += 1 + + prompt = prompt.replace(token, replacement) + + return prompt + + def _check_text_inv_inputs(self, tokenizer, text_encoder, pretrained_model_name_or_paths, tokens): + if tokenizer is None: + raise ValueError( + f"{self.__class__.__name__} requires `self.tokenizer` or passing a `tokenizer` of type `PreTrainedTokenizer` for calling" + f" `{self.load_textual_inversion.__name__}`" + ) + + if text_encoder is None: + raise ValueError( + f"{self.__class__.__name__} requires `self.text_encoder` or passing a `text_encoder` of type `PreTrainedModel` for calling" + f" `{self.load_textual_inversion.__name__}`" + ) + + if len(pretrained_model_name_or_paths) > 1 and len(pretrained_model_name_or_paths) != len(tokens): + raise ValueError( + f"You have passed a list of models of length {len(pretrained_model_name_or_paths)}, and list of tokens of length {len(tokens)} " + f"Make sure both lists have the same length." + ) + + valid_tokens = [t for t in tokens if t is not None] + if len(set(valid_tokens)) < len(valid_tokens): + raise ValueError(f"You have passed a list of tokens that contains duplicates: {tokens}") + + @staticmethod + def _retrieve_tokens_and_embeddings(tokens, state_dicts, tokenizer): + all_tokens = [] + all_embeddings = [] + for state_dict, token in zip(state_dicts, tokens): + if isinstance(state_dict, torch.Tensor): + if token is None: + raise ValueError( + "You are trying to load a textual inversion embedding that has been saved as a PyTorch tensor. Make sure to pass the name of the corresponding token in this case: `token=...`." + ) + loaded_token = token + embedding = state_dict + elif len(state_dict) == 1: + # diffusers + loaded_token, embedding = next(iter(state_dict.items())) + elif "string_to_param" in state_dict: + # A1111 + loaded_token = state_dict["name"] + embedding = state_dict["string_to_param"]["*"] + else: + raise ValueError( + f"Loaded state dictionary is incorrect: {state_dict}. \n\n" + "Please verify that the loaded state dictionary of the textual embedding either only has a single key or includes the `string_to_param`" + " input key." + ) + + if token is not None and loaded_token != token: + logger.info(f"The loaded token: {loaded_token} is overwritten by the passed token {token}.") + else: + token = loaded_token + + if token in tokenizer.get_vocab(): + raise ValueError( + f"Token {token} already in tokenizer vocabulary. Please choose a different token name or remove {token} and embedding from the tokenizer and text encoder." + ) + + all_tokens.append(token) + all_embeddings.append(embedding) + + return all_tokens, all_embeddings + + @staticmethod + def _extend_tokens_and_embeddings(tokens, embeddings, tokenizer): + all_tokens = [] + all_embeddings = [] + + for embedding, token in zip(embeddings, tokens): + if f"{token}_1" in tokenizer.get_vocab(): + multi_vector_tokens = [token] + i = 1 + while f"{token}_{i}" in tokenizer.added_tokens_encoder: + multi_vector_tokens.append(f"{token}_{i}") + i += 1 + + raise ValueError( + f"Multi-vector Token {multi_vector_tokens} already in tokenizer vocabulary. Please choose a different token name or remove the {multi_vector_tokens} and embedding from the tokenizer and text encoder." + ) + + is_multi_vector = len(embedding.shape) > 1 and embedding.shape[0] > 1 + if is_multi_vector: + all_tokens += [token] + [f"{token}_{i}" for i in range(1, embedding.shape[0])] + all_embeddings += [e for e in embedding] # noqa: C416 + else: + all_tokens += [token] + all_embeddings += [embedding[0]] if len(embedding.shape) > 1 else [embedding] + + return all_tokens, all_embeddings + + @validate_hf_hub_args + def load_textual_inversion( + self, + pretrained_model_name_or_path: Union[str, List[str], Dict[str, torch.Tensor], List[Dict[str, torch.Tensor]]], + token: Optional[Union[str, List[str]]] = None, + tokenizer: Optional["PreTrainedTokenizer"] = None, # noqa: F821 + text_encoder: Optional["PreTrainedModel"] = None, # noqa: F821 + **kwargs, + ): + r""" + Load Textual Inversion embeddings into the text encoder of [`StableDiffusionPipeline`] (both 🤗 Diffusers and + Automatic1111 formats are supported). + + Parameters: + pretrained_model_name_or_path (`str` or `os.PathLike` or `List[str or os.PathLike]` or `Dict` or `List[Dict]`): + Can be either one of the following or a list of them: + + - A string, the *model id* (for example `sd-concepts-library/low-poly-hd-logos-icons`) of a + pretrained model hosted on the Hub. + - A path to a *directory* (for example `./my_text_inversion_directory/`) containing the textual + inversion weights. + - A path to a *file* (for example `./my_text_inversions.pt`) containing textual inversion weights. + - A [torch state + dict](https://pytorch.org/tutorials/beginner/saving_loading_models.html#what-is-a-state-dict). + + token (`str` or `List[str]`, *optional*): + Override the token to use for the textual inversion weights. If `pretrained_model_name_or_path` is a + list, then `token` must also be a list of equal length. + text_encoder ([`~transformers.CLIPTextModel`], *optional*): + Frozen text-encoder ([clip-vit-large-patch14](https://huggingface.co/openai/clip-vit-large-patch14)). + If not specified, function will take self.tokenizer. + tokenizer ([`~transformers.CLIPTokenizer`], *optional*): + A `CLIPTokenizer` to tokenize text. If not specified, function will take self.tokenizer. + weight_name (`str`, *optional*): + Name of a custom weight file. This should be used when: + + - The saved textual inversion file is in 🤗 Diffusers format, but was saved under a specific weight + name such as `text_inv.bin`. + - The saved textual inversion file is in the Automatic1111 format. + cache_dir (`Union[str, os.PathLike]`, *optional*): + Path to a directory where a downloaded pretrained model configuration is cached if the standard cache + is not used. + force_download (`bool`, *optional*, defaults to `False`): + Whether or not to force the (re-)download of the model weights and configuration files, overriding the + cached versions if they exist. + + proxies (`Dict[str, str]`, *optional*): + A dictionary of proxy servers to use by protocol or endpoint, for example, `{'http': 'foo.bar:3128', + 'http://hostname': 'foo.bar:4012'}`. The proxies are used on each request. + local_files_only (`bool`, *optional*, defaults to `False`): + Whether to only load local model weights and configuration files or not. If set to `True`, the model + won't be downloaded from the Hub. + token (`str` or *bool*, *optional*): + The token to use as HTTP bearer authorization for remote files. If `True`, the token generated from + `diffusers-cli login` (stored in `~/.huggingface`) is used. + revision (`str`, *optional*, defaults to `"main"`): + The specific model version to use. It can be a branch name, a tag name, a commit id, or any identifier + allowed by Git. + subfolder (`str`, *optional*, defaults to `""`): + The subfolder location of a model file within a larger model repository on the Hub or locally. + mirror (`str`, *optional*): + Mirror source to resolve accessibility issues if you're downloading a model in China. We do not + guarantee the timeliness or safety of the source, and you should refer to the mirror site for more + information. + + Example: + + To load a Textual Inversion embedding vector in 🤗 Diffusers format: + + ```py + from diffusers import StableDiffusionPipeline + import torch + + model_id = "runwayml/stable-diffusion-v1-5" + pipe = StableDiffusionPipeline.from_pretrained(model_id, torch_dtype=torch.float16).to("cuda") + + pipe.load_textual_inversion("sd-concepts-library/cat-toy") + + prompt = "A backpack" + + image = pipe(prompt, num_inference_steps=50).images[0] + image.save("cat-backpack.png") + ``` + + To load a Textual Inversion embedding vector in Automatic1111 format, make sure to download the vector first + (for example from [civitAI](https://civitai.com/models/3036?modelVersionId=9857)) and then load the vector + locally: + + ```py + from diffusers import StableDiffusionPipeline + import torch + + model_id = "runwayml/stable-diffusion-v1-5" + pipe = StableDiffusionPipeline.from_pretrained(model_id, torch_dtype=torch.float16).to("cuda") + + pipe.load_textual_inversion("./charturnerv2.pt", token="charturnerv2") + + prompt = "charturnerv2, multiple views of the same character in the same outfit, a character turnaround of a woman wearing a black jacket and red shirt, best quality, intricate details." + + image = pipe(prompt, num_inference_steps=50).images[0] + image.save("character.png") + ``` + + """ + # 1. Set correct tokenizer and text encoder + tokenizer = tokenizer or getattr(self, "tokenizer", None) + text_encoder = text_encoder or getattr(self, "text_encoder", None) + + # 2. Normalize inputs + pretrained_model_name_or_paths = ( + [pretrained_model_name_or_path] + if not isinstance(pretrained_model_name_or_path, list) + else pretrained_model_name_or_path + ) + tokens = [token] if not isinstance(token, list) else token + if tokens[0] is None: + tokens = tokens * len(pretrained_model_name_or_paths) + + # 3. Check inputs + self._check_text_inv_inputs(tokenizer, text_encoder, pretrained_model_name_or_paths, tokens) + + # 4. Load state dicts of textual embeddings + state_dicts = load_textual_inversion_state_dicts(pretrained_model_name_or_paths, **kwargs) + + # 4.1 Handle the special case when state_dict is a tensor that contains n embeddings for n tokens + if len(tokens) > 1 and len(state_dicts) == 1: + if isinstance(state_dicts[0], torch.Tensor): + state_dicts = list(state_dicts[0]) + if len(tokens) != len(state_dicts): + raise ValueError( + f"You have passed a state_dict contains {len(state_dicts)} embeddings, and list of tokens of length {len(tokens)} " + f"Make sure both have the same length." + ) + + # 4. Retrieve tokens and embeddings + tokens, embeddings = self._retrieve_tokens_and_embeddings(tokens, state_dicts, tokenizer) + + # 5. Extend tokens and embeddings for multi vector + tokens, embeddings = self._extend_tokens_and_embeddings(tokens, embeddings, tokenizer) + + # 6. Make sure all embeddings have the correct size + expected_emb_dim = text_encoder.get_input_embeddings().weight.shape[-1] + if any(expected_emb_dim != emb.shape[-1] for emb in embeddings): + raise ValueError( + "Loaded embeddings are of incorrect shape. Expected each textual inversion embedding " + "to be of shape {input_embeddings.shape[-1]}, but are {embeddings.shape[-1]} " + ) + + # 7. Now we can be sure that loading the embedding matrix works + # < Unsafe code: + + # 7.1 Offload all hooks in case the pipeline was cpu offloaded before make sure, we offload and onload again + is_model_cpu_offload = False + is_sequential_cpu_offload = False + if self.hf_device_map is None: + for _, component in self.components.items(): + if isinstance(component, nn.Module): + if hasattr(component, "_hf_hook"): + is_model_cpu_offload = isinstance(getattr(component, "_hf_hook"), CpuOffload) + is_sequential_cpu_offload = ( + isinstance(getattr(component, "_hf_hook"), AlignDevicesHook) + or hasattr(component._hf_hook, "hooks") + and isinstance(component._hf_hook.hooks[0], AlignDevicesHook) + ) + logger.info( + "Accelerate hooks detected. Since you have called `load_textual_inversion()`, the previous hooks will be first removed. Then the textual inversion parameters will be loaded and the hooks will be applied again." + ) + remove_hook_from_module(component, recurse=is_sequential_cpu_offload) + + # 7.2 save expected device and dtype + device = text_encoder.device + dtype = text_encoder.dtype + + # 7.3 Increase token embedding matrix + text_encoder.resize_token_embeddings(len(tokenizer) + len(tokens)) + input_embeddings = text_encoder.get_input_embeddings().weight + + # 7.4 Load token and embedding + for token, embedding in zip(tokens, embeddings): + # add tokens and get ids + tokenizer.add_tokens(token) + token_id = tokenizer.convert_tokens_to_ids(token) + input_embeddings.data[token_id] = embedding + logger.info(f"Loaded textual inversion embedding for {token}.") + + input_embeddings.to(dtype=dtype, device=device) + + # 7.5 Offload the model again + if is_model_cpu_offload: + self.enable_model_cpu_offload() + elif is_sequential_cpu_offload: + self.enable_sequential_cpu_offload() + + # / Unsafe Code > + + def unload_textual_inversion( + self, + tokens: Optional[Union[str, List[str]]] = None, + tokenizer: Optional["PreTrainedTokenizer"] = None, + text_encoder: Optional["PreTrainedModel"] = None, + ): + r""" + Unload Textual Inversion embeddings from the text encoder of [`StableDiffusionPipeline`] + + Example: + ```py + from diffusers import AutoPipelineForText2Image + import torch + + pipeline = AutoPipelineForText2Image.from_pretrained("runwayml/stable-diffusion-v1-5") + + # Example 1 + pipeline.load_textual_inversion("sd-concepts-library/gta5-artwork") + pipeline.load_textual_inversion("sd-concepts-library/moeb-style") + + # Remove all token embeddings + pipeline.unload_textual_inversion() + + # Example 2 + pipeline.load_textual_inversion("sd-concepts-library/moeb-style") + pipeline.load_textual_inversion("sd-concepts-library/gta5-artwork") + + # Remove just one token + pipeline.unload_textual_inversion("") + + # Example 3: unload from SDXL + pipeline = AutoPipelineForText2Image.from_pretrained("stabilityai/stable-diffusion-xl-base-1.0") + embedding_path = hf_hub_download( + repo_id="linoyts/web_y2k", filename="web_y2k_emb.safetensors", repo_type="model" + ) + + # load embeddings to the text encoders + state_dict = load_file(embedding_path) + + # load embeddings of text_encoder 1 (CLIP ViT-L/14) + pipeline.load_textual_inversion( + state_dict["clip_l"], + tokens=["", ""], + text_encoder=pipeline.text_encoder, + tokenizer=pipeline.tokenizer, + ) + # load embeddings of text_encoder 2 (CLIP ViT-G/14) + pipeline.load_textual_inversion( + state_dict["clip_g"], + tokens=["", ""], + text_encoder=pipeline.text_encoder_2, + tokenizer=pipeline.tokenizer_2, + ) + + # Unload explicitly from both text encoders and tokenizers + pipeline.unload_textual_inversion( + tokens=["", ""], text_encoder=pipeline.text_encoder, tokenizer=pipeline.tokenizer + ) + pipeline.unload_textual_inversion( + tokens=["", ""], text_encoder=pipeline.text_encoder_2, tokenizer=pipeline.tokenizer_2 + ) + ``` + """ + + tokenizer = tokenizer or getattr(self, "tokenizer", None) + text_encoder = text_encoder or getattr(self, "text_encoder", None) + + # Get textual inversion tokens and ids + token_ids = [] + last_special_token_id = None + + if tokens: + if isinstance(tokens, str): + tokens = [tokens] + for added_token_id, added_token in tokenizer.added_tokens_decoder.items(): + if not added_token.special: + if added_token.content in tokens: + token_ids.append(added_token_id) + else: + last_special_token_id = added_token_id + if len(token_ids) == 0: + raise ValueError("No tokens to remove found") + else: + tokens = [] + for added_token_id, added_token in tokenizer.added_tokens_decoder.items(): + if not added_token.special: + token_ids.append(added_token_id) + tokens.append(added_token.content) + else: + last_special_token_id = added_token_id + + # Delete from tokenizer + for token_id, token_to_remove in zip(token_ids, tokens): + del tokenizer._added_tokens_decoder[token_id] + del tokenizer._added_tokens_encoder[token_to_remove] + + # Make all token ids sequential in tokenizer + key_id = 1 + for token_id in tokenizer.added_tokens_decoder: + if token_id > last_special_token_id and token_id > last_special_token_id + key_id: + token = tokenizer._added_tokens_decoder[token_id] + tokenizer._added_tokens_decoder[last_special_token_id + key_id] = token + del tokenizer._added_tokens_decoder[token_id] + tokenizer._added_tokens_encoder[token.content] = last_special_token_id + key_id + key_id += 1 + tokenizer._update_trie() + # set correct total vocab size after removing tokens + tokenizer._update_total_vocab_size() + + # Delete from text encoder + text_embedding_dim = text_encoder.get_input_embeddings().embedding_dim + temp_text_embedding_weights = text_encoder.get_input_embeddings().weight + text_embedding_weights = temp_text_embedding_weights[: last_special_token_id + 1] + to_append = [] + for i in range(last_special_token_id + 1, temp_text_embedding_weights.shape[0]): + if i not in token_ids: + to_append.append(temp_text_embedding_weights[i].unsqueeze(0)) + if len(to_append) > 0: + to_append = torch.cat(to_append, dim=0) + text_embedding_weights = torch.cat([text_embedding_weights, to_append], dim=0) + text_embeddings_filtered = nn.Embedding(text_embedding_weights.shape[0], text_embedding_dim) + text_embeddings_filtered.weight.data = text_embedding_weights + text_encoder.set_input_embeddings(text_embeddings_filtered) diff --git a/venv/lib/python3.11/site-packages/diffusers/loaders/transformer_flux.py b/venv/lib/python3.11/site-packages/diffusers/loaders/transformer_flux.py new file mode 100644 index 0000000000000000000000000000000000000000..9fe712bb12e98f0484387824260e17fc8cea33f1 --- /dev/null +++ b/venv/lib/python3.11/site-packages/diffusers/loaders/transformer_flux.py @@ -0,0 +1,181 @@ +# Copyright 2024 The HuggingFace Team. All rights reserved. +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. +from contextlib import nullcontext + +from ..models.embeddings import ( + ImageProjection, + MultiIPAdapterImageProjection, +) +from ..models.modeling_utils import load_model_dict_into_meta +from ..utils import ( + is_accelerate_available, + is_torch_version, + logging, +) + + +if is_accelerate_available(): + pass + +logger = logging.get_logger(__name__) + + +class FluxTransformer2DLoadersMixin: + """ + Load layers into a [`FluxTransformer2DModel`]. + """ + + def _convert_ip_adapter_image_proj_to_diffusers(self, state_dict, low_cpu_mem_usage=False): + if low_cpu_mem_usage: + if is_accelerate_available(): + from accelerate import init_empty_weights + + else: + low_cpu_mem_usage = False + logger.warning( + "Cannot initialize model with low cpu memory usage because `accelerate` was not found in the" + " environment. Defaulting to `low_cpu_mem_usage=False`. It is strongly recommended to install" + " `accelerate` for faster and less memory-intense model loading. You can do so with: \n```\npip" + " install accelerate\n```\n." + ) + + if low_cpu_mem_usage is True and not is_torch_version(">=", "1.9.0"): + raise NotImplementedError( + "Low memory initialization requires torch >= 1.9.0. Please either update your PyTorch version or set" + " `low_cpu_mem_usage=False`." + ) + + updated_state_dict = {} + image_projection = None + init_context = init_empty_weights if low_cpu_mem_usage else nullcontext + + if "proj.weight" in state_dict: + # IP-Adapter + num_image_text_embeds = 4 + if state_dict["proj.weight"].shape[0] == 65536: + num_image_text_embeds = 16 + clip_embeddings_dim = state_dict["proj.weight"].shape[-1] + cross_attention_dim = state_dict["proj.weight"].shape[0] // num_image_text_embeds + + with init_context(): + image_projection = ImageProjection( + cross_attention_dim=cross_attention_dim, + image_embed_dim=clip_embeddings_dim, + num_image_text_embeds=num_image_text_embeds, + ) + + for key, value in state_dict.items(): + diffusers_name = key.replace("proj", "image_embeds") + updated_state_dict[diffusers_name] = value + + if not low_cpu_mem_usage: + image_projection.load_state_dict(updated_state_dict, strict=True) + else: + load_model_dict_into_meta(image_projection, updated_state_dict, device=self.device, dtype=self.dtype) + + return image_projection + + def _convert_ip_adapter_attn_to_diffusers(self, state_dicts, low_cpu_mem_usage=False): + from ..models.attention_processor import ( + FluxIPAdapterJointAttnProcessor2_0, + ) + + if low_cpu_mem_usage: + if is_accelerate_available(): + from accelerate import init_empty_weights + + else: + low_cpu_mem_usage = False + logger.warning( + "Cannot initialize model with low cpu memory usage because `accelerate` was not found in the" + " environment. Defaulting to `low_cpu_mem_usage=False`. It is strongly recommended to install" + " `accelerate` for faster and less memory-intense model loading. You can do so with: \n```\npip" + " install accelerate\n```\n." + ) + + if low_cpu_mem_usage is True and not is_torch_version(">=", "1.9.0"): + raise NotImplementedError( + "Low memory initialization requires torch >= 1.9.0. Please either update your PyTorch version or set" + " `low_cpu_mem_usage=False`." + ) + + # set ip-adapter cross-attention processors & load state_dict + attn_procs = {} + key_id = 0 + init_context = init_empty_weights if low_cpu_mem_usage else nullcontext + for name in self.attn_processors.keys(): + if name.startswith("single_transformer_blocks"): + attn_processor_class = self.attn_processors[name].__class__ + attn_procs[name] = attn_processor_class() + else: + cross_attention_dim = self.config.joint_attention_dim + hidden_size = self.inner_dim + attn_processor_class = FluxIPAdapterJointAttnProcessor2_0 + num_image_text_embeds = [] + for state_dict in state_dicts: + if "proj.weight" in state_dict["image_proj"]: + num_image_text_embed = 4 + if state_dict["image_proj"]["proj.weight"].shape[0] == 65536: + num_image_text_embed = 16 + # IP-Adapter + num_image_text_embeds += [num_image_text_embed] + + with init_context(): + attn_procs[name] = attn_processor_class( + hidden_size=hidden_size, + cross_attention_dim=cross_attention_dim, + scale=1.0, + num_tokens=num_image_text_embeds, + dtype=self.dtype, + device=self.device, + ) + + value_dict = {} + for i, state_dict in enumerate(state_dicts): + value_dict.update({f"to_k_ip.{i}.weight": state_dict["ip_adapter"][f"{key_id}.to_k_ip.weight"]}) + value_dict.update({f"to_v_ip.{i}.weight": state_dict["ip_adapter"][f"{key_id}.to_v_ip.weight"]}) + value_dict.update({f"to_k_ip.{i}.bias": state_dict["ip_adapter"][f"{key_id}.to_k_ip.bias"]}) + value_dict.update({f"to_v_ip.{i}.bias": state_dict["ip_adapter"][f"{key_id}.to_v_ip.bias"]}) + + if not low_cpu_mem_usage: + attn_procs[name].load_state_dict(value_dict) + else: + device = self.device + dtype = self.dtype + load_model_dict_into_meta(attn_procs[name], value_dict, device=device, dtype=dtype) + + key_id += 1 + + return attn_procs + + def _load_ip_adapter_weights(self, state_dicts, low_cpu_mem_usage=False): + if not isinstance(state_dicts, list): + state_dicts = [state_dicts] + + self.encoder_hid_proj = None + + attn_procs = self._convert_ip_adapter_attn_to_diffusers(state_dicts, low_cpu_mem_usage=low_cpu_mem_usage) + self.set_attn_processor(attn_procs) + + image_projection_layers = [] + for state_dict in state_dicts: + image_projection_layer = self._convert_ip_adapter_image_proj_to_diffusers( + state_dict["image_proj"], low_cpu_mem_usage=low_cpu_mem_usage + ) + image_projection_layers.append(image_projection_layer) + + self.encoder_hid_proj = MultiIPAdapterImageProjection(image_projection_layers) + self.config.encoder_hid_dim_type = "ip_image_proj" + + self.to(dtype=self.dtype, device=self.device) diff --git a/venv/lib/python3.11/site-packages/diffusers/loaders/transformer_sd3.py b/venv/lib/python3.11/site-packages/diffusers/loaders/transformer_sd3.py new file mode 100644 index 0000000000000000000000000000000000000000..435d1da06ca1dfc84fdc3c52b7ba18dae5c970b4 --- /dev/null +++ b/venv/lib/python3.11/site-packages/diffusers/loaders/transformer_sd3.py @@ -0,0 +1,89 @@ +# Copyright 2024 The HuggingFace Team. All rights reserved. +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. +from typing import Dict + +from ..models.attention_processor import SD3IPAdapterJointAttnProcessor2_0 +from ..models.embeddings import IPAdapterTimeImageProjection +from ..models.modeling_utils import _LOW_CPU_MEM_USAGE_DEFAULT, load_model_dict_into_meta + + +class SD3Transformer2DLoadersMixin: + """Load IP-Adapters and LoRA layers into a `[SD3Transformer2DModel]`.""" + + def _load_ip_adapter_weights(self, state_dict: Dict, low_cpu_mem_usage: bool = _LOW_CPU_MEM_USAGE_DEFAULT) -> None: + """Sets IP-Adapter attention processors, image projection, and loads state_dict. + + Args: + state_dict (`Dict`): + State dict with keys "ip_adapter", which contains parameters for attention processors, and + "image_proj", which contains parameters for image projection net. + low_cpu_mem_usage (`bool`, *optional*, defaults to `True` if torch version >= 1.9.0 else `False`): + Speed up model loading only loading the pretrained weights and not initializing the weights. This also + tries to not use more than 1x model size in CPU memory (including peak memory) while loading the model. + Only supported for PyTorch >= 1.9.0. If you are using an older version of PyTorch, setting this + argument to `True` will raise an error. + """ + # IP-Adapter cross attention parameters + hidden_size = self.config.attention_head_dim * self.config.num_attention_heads + ip_hidden_states_dim = self.config.attention_head_dim * self.config.num_attention_heads + timesteps_emb_dim = state_dict["ip_adapter"]["0.norm_ip.linear.weight"].shape[1] + + # Dict where key is transformer layer index, value is attention processor's state dict + # ip_adapter state dict keys example: "0.norm_ip.linear.weight" + layer_state_dict = {idx: {} for idx in range(len(self.attn_processors))} + for key, weights in state_dict["ip_adapter"].items(): + idx, name = key.split(".", maxsplit=1) + layer_state_dict[int(idx)][name] = weights + + # Create IP-Adapter attention processor + attn_procs = {} + for idx, name in enumerate(self.attn_processors.keys()): + attn_procs[name] = SD3IPAdapterJointAttnProcessor2_0( + hidden_size=hidden_size, + ip_hidden_states_dim=ip_hidden_states_dim, + head_dim=self.config.attention_head_dim, + timesteps_emb_dim=timesteps_emb_dim, + ).to(self.device, dtype=self.dtype) + + if not low_cpu_mem_usage: + attn_procs[name].load_state_dict(layer_state_dict[idx], strict=True) + else: + load_model_dict_into_meta( + attn_procs[name], layer_state_dict[idx], device=self.device, dtype=self.dtype + ) + + self.set_attn_processor(attn_procs) + + # Image projetion parameters + embed_dim = state_dict["image_proj"]["proj_in.weight"].shape[1] + output_dim = state_dict["image_proj"]["proj_out.weight"].shape[0] + hidden_dim = state_dict["image_proj"]["proj_in.weight"].shape[0] + heads = state_dict["image_proj"]["layers.0.attn.to_q.weight"].shape[0] // 64 + num_queries = state_dict["image_proj"]["latents"].shape[1] + timestep_in_dim = state_dict["image_proj"]["time_embedding.linear_1.weight"].shape[1] + + # Image projection + self.image_proj = IPAdapterTimeImageProjection( + embed_dim=embed_dim, + output_dim=output_dim, + hidden_dim=hidden_dim, + heads=heads, + num_queries=num_queries, + timestep_in_dim=timestep_in_dim, + ).to(device=self.device, dtype=self.dtype) + + if not low_cpu_mem_usage: + self.image_proj.load_state_dict(state_dict["image_proj"], strict=True) + else: + load_model_dict_into_meta(self.image_proj, state_dict["image_proj"], device=self.device, dtype=self.dtype) diff --git a/venv/lib/python3.11/site-packages/diffusers/loaders/unet.py b/venv/lib/python3.11/site-packages/diffusers/loaders/unet.py new file mode 100644 index 0000000000000000000000000000000000000000..7050968b6de52702eb0c24028ac8de48f276b353 --- /dev/null +++ b/venv/lib/python3.11/site-packages/diffusers/loaders/unet.py @@ -0,0 +1,950 @@ +# Copyright 2024 The HuggingFace Team. All rights reserved. +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. +import os +from collections import defaultdict +from contextlib import nullcontext +from pathlib import Path +from typing import Callable, Dict, Union + +import safetensors +import torch +import torch.nn.functional as F +from huggingface_hub.utils import validate_hf_hub_args +from torch import nn + +from ..models.embeddings import ( + ImageProjection, + IPAdapterFaceIDImageProjection, + IPAdapterFaceIDPlusImageProjection, + IPAdapterFullImageProjection, + IPAdapterPlusImageProjection, + MultiIPAdapterImageProjection, +) +from ..models.modeling_utils import load_model_dict_into_meta, load_state_dict +from ..utils import ( + USE_PEFT_BACKEND, + _get_model_file, + convert_unet_state_dict_to_peft, + deprecate, + get_adapter_name, + get_peft_kwargs, + is_accelerate_available, + is_peft_version, + is_torch_version, + logging, +) +from .lora_pipeline import LORA_WEIGHT_NAME, LORA_WEIGHT_NAME_SAFE, TEXT_ENCODER_NAME, UNET_NAME +from .utils import AttnProcsLayers + + +if is_accelerate_available(): + from accelerate.hooks import AlignDevicesHook, CpuOffload, remove_hook_from_module + +logger = logging.get_logger(__name__) + + +CUSTOM_DIFFUSION_WEIGHT_NAME = "pytorch_custom_diffusion_weights.bin" +CUSTOM_DIFFUSION_WEIGHT_NAME_SAFE = "pytorch_custom_diffusion_weights.safetensors" + + +class UNet2DConditionLoadersMixin: + """ + Load LoRA layers into a [`UNet2DCondtionModel`]. + """ + + text_encoder_name = TEXT_ENCODER_NAME + unet_name = UNET_NAME + + @validate_hf_hub_args + def load_attn_procs(self, pretrained_model_name_or_path_or_dict: Union[str, Dict[str, torch.Tensor]], **kwargs): + r""" + Load pretrained attention processor layers into [`UNet2DConditionModel`]. Attention processor layers have to be + defined in + [`attention_processor.py`](https://github.com/huggingface/diffusers/blob/main/src/diffusers/models/attention_processor.py) + and be a `torch.nn.Module` class. Currently supported: LoRA, Custom Diffusion. For LoRA, one must install + `peft`: `pip install -U peft`. + + Parameters: + pretrained_model_name_or_path_or_dict (`str` or `os.PathLike` or `dict`): + Can be either: + + - A string, the model id (for example `google/ddpm-celebahq-256`) of a pretrained model hosted on + the Hub. + - A path to a directory (for example `./my_model_directory`) containing the model weights saved + with [`ModelMixin.save_pretrained`]. + - A [torch state + dict](https://pytorch.org/tutorials/beginner/saving_loading_models.html#what-is-a-state-dict). + + cache_dir (`Union[str, os.PathLike]`, *optional*): + Path to a directory where a downloaded pretrained model configuration is cached if the standard cache + is not used. + force_download (`bool`, *optional*, defaults to `False`): + Whether or not to force the (re-)download of the model weights and configuration files, overriding the + cached versions if they exist. + + proxies (`Dict[str, str]`, *optional*): + A dictionary of proxy servers to use by protocol or endpoint, for example, `{'http': 'foo.bar:3128', + 'http://hostname': 'foo.bar:4012'}`. The proxies are used on each request. + local_files_only (`bool`, *optional*, defaults to `False`): + Whether to only load local model weights and configuration files or not. If set to `True`, the model + won't be downloaded from the Hub. + token (`str` or *bool*, *optional*): + The token to use as HTTP bearer authorization for remote files. If `True`, the token generated from + `diffusers-cli login` (stored in `~/.huggingface`) is used. + revision (`str`, *optional*, defaults to `"main"`): + The specific model version to use. It can be a branch name, a tag name, a commit id, or any identifier + allowed by Git. + subfolder (`str`, *optional*, defaults to `""`): + The subfolder location of a model file within a larger model repository on the Hub or locally. + network_alphas (`Dict[str, float]`): + The value of the network alpha used for stable learning and preventing underflow. This value has the + same meaning as the `--network_alpha` option in the kohya-ss trainer script. Refer to [this + link](https://github.com/darkstorm2150/sd-scripts/blob/main/docs/train_network_README-en.md#execute-learning). + adapter_name (`str`, *optional*, defaults to None): + Adapter name to be used for referencing the loaded adapter model. If not specified, it will use + `default_{i}` where i is the total number of adapters being loaded. + weight_name (`str`, *optional*, defaults to None): + Name of the serialized state dict file. + low_cpu_mem_usage (`bool`, *optional*): + Speed up model loading by only loading the pretrained LoRA weights and not initializing the random + weights. + + Example: + + ```py + from diffusers import AutoPipelineForText2Image + import torch + + pipeline = AutoPipelineForText2Image.from_pretrained( + "stabilityai/stable-diffusion-xl-base-1.0", torch_dtype=torch.float16 + ).to("cuda") + pipeline.unet.load_attn_procs( + "jbilcke-hf/sdxl-cinematic-1", weight_name="pytorch_lora_weights.safetensors", adapter_name="cinematic" + ) + ``` + """ + cache_dir = kwargs.pop("cache_dir", None) + force_download = kwargs.pop("force_download", False) + proxies = kwargs.pop("proxies", None) + local_files_only = kwargs.pop("local_files_only", None) + token = kwargs.pop("token", None) + revision = kwargs.pop("revision", None) + subfolder = kwargs.pop("subfolder", None) + weight_name = kwargs.pop("weight_name", None) + use_safetensors = kwargs.pop("use_safetensors", None) + adapter_name = kwargs.pop("adapter_name", None) + _pipeline = kwargs.pop("_pipeline", None) + network_alphas = kwargs.pop("network_alphas", None) + low_cpu_mem_usage = kwargs.pop("low_cpu_mem_usage", False) + allow_pickle = False + + if low_cpu_mem_usage and is_peft_version("<=", "0.13.0"): + raise ValueError( + "`low_cpu_mem_usage=True` is not compatible with this `peft` version. Please update it with `pip install -U peft`." + ) + + if use_safetensors is None: + use_safetensors = True + allow_pickle = True + + user_agent = { + "file_type": "attn_procs_weights", + "framework": "pytorch", + } + + model_file = None + if not isinstance(pretrained_model_name_or_path_or_dict, dict): + # Let's first try to load .safetensors weights + if (use_safetensors and weight_name is None) or ( + weight_name is not None and weight_name.endswith(".safetensors") + ): + try: + model_file = _get_model_file( + pretrained_model_name_or_path_or_dict, + weights_name=weight_name or LORA_WEIGHT_NAME_SAFE, + cache_dir=cache_dir, + force_download=force_download, + proxies=proxies, + local_files_only=local_files_only, + token=token, + revision=revision, + subfolder=subfolder, + user_agent=user_agent, + ) + state_dict = safetensors.torch.load_file(model_file, device="cpu") + except IOError as e: + if not allow_pickle: + raise e + # try loading non-safetensors weights + pass + if model_file is None: + model_file = _get_model_file( + pretrained_model_name_or_path_or_dict, + weights_name=weight_name or LORA_WEIGHT_NAME, + cache_dir=cache_dir, + force_download=force_download, + proxies=proxies, + local_files_only=local_files_only, + token=token, + revision=revision, + subfolder=subfolder, + user_agent=user_agent, + ) + state_dict = load_state_dict(model_file) + else: + state_dict = pretrained_model_name_or_path_or_dict + + is_custom_diffusion = any("custom_diffusion" in k for k in state_dict.keys()) + is_lora = all(("lora" in k or k.endswith(".alpha")) for k in state_dict.keys()) + is_model_cpu_offload = False + is_sequential_cpu_offload = False + + if is_lora: + deprecation_message = "Using the `load_attn_procs()` method has been deprecated and will be removed in a future version. Please use `load_lora_adapter()`." + deprecate("load_attn_procs", "0.40.0", deprecation_message) + + if is_custom_diffusion: + attn_processors = self._process_custom_diffusion(state_dict=state_dict) + elif is_lora: + is_model_cpu_offload, is_sequential_cpu_offload = self._process_lora( + state_dict=state_dict, + unet_identifier_key=self.unet_name, + network_alphas=network_alphas, + adapter_name=adapter_name, + _pipeline=_pipeline, + low_cpu_mem_usage=low_cpu_mem_usage, + ) + else: + raise ValueError( + f"{model_file} does not seem to be in the correct format expected by Custom Diffusion training." + ) + + # + + def _process_custom_diffusion(self, state_dict): + from ..models.attention_processor import CustomDiffusionAttnProcessor + + attn_processors = {} + custom_diffusion_grouped_dict = defaultdict(dict) + for key, value in state_dict.items(): + if len(value) == 0: + custom_diffusion_grouped_dict[key] = {} + else: + if "to_out" in key: + attn_processor_key, sub_key = ".".join(key.split(".")[:-3]), ".".join(key.split(".")[-3:]) + else: + attn_processor_key, sub_key = ".".join(key.split(".")[:-2]), ".".join(key.split(".")[-2:]) + custom_diffusion_grouped_dict[attn_processor_key][sub_key] = value + + for key, value_dict in custom_diffusion_grouped_dict.items(): + if len(value_dict) == 0: + attn_processors[key] = CustomDiffusionAttnProcessor( + train_kv=False, train_q_out=False, hidden_size=None, cross_attention_dim=None + ) + else: + cross_attention_dim = value_dict["to_k_custom_diffusion.weight"].shape[1] + hidden_size = value_dict["to_k_custom_diffusion.weight"].shape[0] + train_q_out = True if "to_q_custom_diffusion.weight" in value_dict else False + attn_processors[key] = CustomDiffusionAttnProcessor( + train_kv=True, + train_q_out=train_q_out, + hidden_size=hidden_size, + cross_attention_dim=cross_attention_dim, + ) + attn_processors[key].load_state_dict(value_dict) + + return attn_processors + + def _process_lora( + self, state_dict, unet_identifier_key, network_alphas, adapter_name, _pipeline, low_cpu_mem_usage + ): + # This method does the following things: + # 1. Filters the `state_dict` with keys matching `unet_identifier_key` when using the non-legacy + # format. For legacy format no filtering is applied. + # 2. Converts the `state_dict` to the `peft` compatible format. + # 3. Creates a `LoraConfig` and then injects the converted `state_dict` into the UNet per the + # `LoraConfig` specs. + # 4. It also reports if the underlying `_pipeline` has any kind of offloading inside of it. + if not USE_PEFT_BACKEND: + raise ValueError("PEFT backend is required for this method.") + + from peft import LoraConfig, inject_adapter_in_model, set_peft_model_state_dict + + keys = list(state_dict.keys()) + + unet_keys = [k for k in keys if k.startswith(unet_identifier_key)] + unet_state_dict = { + k.replace(f"{unet_identifier_key}.", ""): v for k, v in state_dict.items() if k in unet_keys + } + + if network_alphas is not None: + alpha_keys = [k for k in network_alphas.keys() if k.startswith(unet_identifier_key)] + network_alphas = { + k.replace(f"{unet_identifier_key}.", ""): v for k, v in network_alphas.items() if k in alpha_keys + } + + is_model_cpu_offload = False + is_sequential_cpu_offload = False + state_dict_to_be_used = unet_state_dict if len(unet_state_dict) > 0 else state_dict + + if len(state_dict_to_be_used) > 0: + if adapter_name in getattr(self, "peft_config", {}): + raise ValueError( + f"Adapter name {adapter_name} already in use in the Unet - please select a new adapter name." + ) + + state_dict = convert_unet_state_dict_to_peft(state_dict_to_be_used) + + if network_alphas is not None: + # The alphas state dict have the same structure as Unet, thus we convert it to peft format using + # `convert_unet_state_dict_to_peft` method. + network_alphas = convert_unet_state_dict_to_peft(network_alphas) + + rank = {} + for key, val in state_dict.items(): + if "lora_B" in key: + rank[key] = val.shape[1] + + lora_config_kwargs = get_peft_kwargs(rank, network_alphas, state_dict, is_unet=True) + if "use_dora" in lora_config_kwargs: + if lora_config_kwargs["use_dora"]: + if is_peft_version("<", "0.9.0"): + raise ValueError( + "You need `peft` 0.9.0 at least to use DoRA-enabled LoRAs. Please upgrade your installation of `peft`." + ) + else: + if is_peft_version("<", "0.9.0"): + lora_config_kwargs.pop("use_dora") + lora_config = LoraConfig(**lora_config_kwargs) + + # adapter_name + if adapter_name is None: + adapter_name = get_adapter_name(self) + + # In case the pipeline has been already offloaded to CPU - temporarily remove the hooks + # otherwise loading LoRA weights will lead to an error + is_model_cpu_offload, is_sequential_cpu_offload = self._optionally_disable_offloading(_pipeline) + peft_kwargs = {} + if is_peft_version(">=", "0.13.1"): + peft_kwargs["low_cpu_mem_usage"] = low_cpu_mem_usage + + inject_adapter_in_model(lora_config, self, adapter_name=adapter_name, **peft_kwargs) + incompatible_keys = set_peft_model_state_dict(self, state_dict, adapter_name, **peft_kwargs) + + warn_msg = "" + if incompatible_keys is not None: + # Check only for unexpected keys. + unexpected_keys = getattr(incompatible_keys, "unexpected_keys", None) + if unexpected_keys: + lora_unexpected_keys = [k for k in unexpected_keys if "lora_" in k and adapter_name in k] + if lora_unexpected_keys: + warn_msg = ( + f"Loading adapter weights from state_dict led to unexpected keys found in the model:" + f" {', '.join(lora_unexpected_keys)}. " + ) + + # Filter missing keys specific to the current adapter. + missing_keys = getattr(incompatible_keys, "missing_keys", None) + if missing_keys: + lora_missing_keys = [k for k in missing_keys if "lora_" in k and adapter_name in k] + if lora_missing_keys: + warn_msg += ( + f"Loading adapter weights from state_dict led to missing keys in the model:" + f" {', '.join(lora_missing_keys)}." + ) + + if warn_msg: + logger.warning(warn_msg) + + return is_model_cpu_offload, is_sequential_cpu_offload + + @classmethod + # Copied from diffusers.loaders.lora_base.LoraBaseMixin._optionally_disable_offloading + def _optionally_disable_offloading(cls, _pipeline): + """ + Optionally removes offloading in case the pipeline has been already sequentially offloaded to CPU. + + Args: + _pipeline (`DiffusionPipeline`): + The pipeline to disable offloading for. + + Returns: + tuple: + A tuple indicating if `is_model_cpu_offload` or `is_sequential_cpu_offload` is True. + """ + is_model_cpu_offload = False + is_sequential_cpu_offload = False + + if _pipeline is not None and _pipeline.hf_device_map is None: + for _, component in _pipeline.components.items(): + if isinstance(component, nn.Module) and hasattr(component, "_hf_hook"): + if not is_model_cpu_offload: + is_model_cpu_offload = isinstance(component._hf_hook, CpuOffload) + if not is_sequential_cpu_offload: + is_sequential_cpu_offload = ( + isinstance(component._hf_hook, AlignDevicesHook) + or hasattr(component._hf_hook, "hooks") + and isinstance(component._hf_hook.hooks[0], AlignDevicesHook) + ) + + logger.info( + "Accelerate hooks detected. Since you have called `load_lora_weights()`, the previous hooks will be first removed. Then the LoRA parameters will be loaded and the hooks will be applied again." + ) + remove_hook_from_module(component, recurse=is_sequential_cpu_offload) + + return (is_model_cpu_offload, is_sequential_cpu_offload) + + def save_attn_procs( + self, + save_directory: Union[str, os.PathLike], + is_main_process: bool = True, + weight_name: str = None, + save_function: Callable = None, + safe_serialization: bool = True, + **kwargs, + ): + r""" + Save attention processor layers to a directory so that it can be reloaded with the + [`~loaders.UNet2DConditionLoadersMixin.load_attn_procs`] method. + + Arguments: + save_directory (`str` or `os.PathLike`): + Directory to save an attention processor to (will be created if it doesn't exist). + is_main_process (`bool`, *optional*, defaults to `True`): + Whether the process calling this is the main process or not. Useful during distributed training and you + need to call this function on all processes. In this case, set `is_main_process=True` only on the main + process to avoid race conditions. + save_function (`Callable`): + The function to use to save the state dictionary. Useful during distributed training when you need to + replace `torch.save` with another method. Can be configured with the environment variable + `DIFFUSERS_SAVE_MODE`. + safe_serialization (`bool`, *optional*, defaults to `True`): + Whether to save the model using `safetensors` or with `pickle`. + + Example: + + ```py + import torch + from diffusers import DiffusionPipeline + + pipeline = DiffusionPipeline.from_pretrained( + "CompVis/stable-diffusion-v1-4", + torch_dtype=torch.float16, + ).to("cuda") + pipeline.unet.load_attn_procs("path-to-save-model", weight_name="pytorch_custom_diffusion_weights.bin") + pipeline.unet.save_attn_procs("path-to-save-model", weight_name="pytorch_custom_diffusion_weights.bin") + ``` + """ + from ..models.attention_processor import ( + CustomDiffusionAttnProcessor, + CustomDiffusionAttnProcessor2_0, + CustomDiffusionXFormersAttnProcessor, + ) + + if os.path.isfile(save_directory): + logger.error(f"Provided path ({save_directory}) should be a directory, not a file") + return + + is_custom_diffusion = any( + isinstance( + x, + (CustomDiffusionAttnProcessor, CustomDiffusionAttnProcessor2_0, CustomDiffusionXFormersAttnProcessor), + ) + for (_, x) in self.attn_processors.items() + ) + if is_custom_diffusion: + state_dict = self._get_custom_diffusion_state_dict() + if save_function is None and safe_serialization: + # safetensors does not support saving dicts with non-tensor values + empty_state_dict = {k: v for k, v in state_dict.items() if not isinstance(v, torch.Tensor)} + if len(empty_state_dict) > 0: + logger.warning( + f"Safetensors does not support saving dicts with non-tensor values. " + f"The following keys will be ignored: {empty_state_dict.keys()}" + ) + state_dict = {k: v for k, v in state_dict.items() if isinstance(v, torch.Tensor)} + else: + deprecation_message = "Using the `save_attn_procs()` method has been deprecated and will be removed in a future version. Please use `save_lora_adapter()`." + deprecate("save_attn_procs", "0.40.0", deprecation_message) + + if not USE_PEFT_BACKEND: + raise ValueError("PEFT backend is required for saving LoRAs using the `save_attn_procs()` method.") + + from peft.utils import get_peft_model_state_dict + + state_dict = get_peft_model_state_dict(self) + + if save_function is None: + if safe_serialization: + + def save_function(weights, filename): + return safetensors.torch.save_file(weights, filename, metadata={"format": "pt"}) + + else: + save_function = torch.save + + os.makedirs(save_directory, exist_ok=True) + + if weight_name is None: + if safe_serialization: + weight_name = CUSTOM_DIFFUSION_WEIGHT_NAME_SAFE if is_custom_diffusion else LORA_WEIGHT_NAME_SAFE + else: + weight_name = CUSTOM_DIFFUSION_WEIGHT_NAME if is_custom_diffusion else LORA_WEIGHT_NAME + + # Save the model + save_path = Path(save_directory, weight_name).as_posix() + save_function(state_dict, save_path) + logger.info(f"Model weights saved in {save_path}") + + def _get_custom_diffusion_state_dict(self): + from ..models.attention_processor import ( + CustomDiffusionAttnProcessor, + CustomDiffusionAttnProcessor2_0, + CustomDiffusionXFormersAttnProcessor, + ) + + model_to_save = AttnProcsLayers( + { + y: x + for (y, x) in self.attn_processors.items() + if isinstance( + x, + ( + CustomDiffusionAttnProcessor, + CustomDiffusionAttnProcessor2_0, + CustomDiffusionXFormersAttnProcessor, + ), + ) + } + ) + state_dict = model_to_save.state_dict() + for name, attn in self.attn_processors.items(): + if len(attn.state_dict()) == 0: + state_dict[name] = {} + + return state_dict + + def _convert_ip_adapter_image_proj_to_diffusers(self, state_dict, low_cpu_mem_usage=False): + if low_cpu_mem_usage: + if is_accelerate_available(): + from accelerate import init_empty_weights + + else: + low_cpu_mem_usage = False + logger.warning( + "Cannot initialize model with low cpu memory usage because `accelerate` was not found in the" + " environment. Defaulting to `low_cpu_mem_usage=False`. It is strongly recommended to install" + " `accelerate` for faster and less memory-intense model loading. You can do so with: \n```\npip" + " install accelerate\n```\n." + ) + + if low_cpu_mem_usage is True and not is_torch_version(">=", "1.9.0"): + raise NotImplementedError( + "Low memory initialization requires torch >= 1.9.0. Please either update your PyTorch version or set" + " `low_cpu_mem_usage=False`." + ) + + updated_state_dict = {} + image_projection = None + init_context = init_empty_weights if low_cpu_mem_usage else nullcontext + + if "proj.weight" in state_dict: + # IP-Adapter + num_image_text_embeds = 4 + clip_embeddings_dim = state_dict["proj.weight"].shape[-1] + cross_attention_dim = state_dict["proj.weight"].shape[0] // 4 + + with init_context(): + image_projection = ImageProjection( + cross_attention_dim=cross_attention_dim, + image_embed_dim=clip_embeddings_dim, + num_image_text_embeds=num_image_text_embeds, + ) + + for key, value in state_dict.items(): + diffusers_name = key.replace("proj", "image_embeds") + updated_state_dict[diffusers_name] = value + + elif "proj.3.weight" in state_dict: + # IP-Adapter Full + clip_embeddings_dim = state_dict["proj.0.weight"].shape[0] + cross_attention_dim = state_dict["proj.3.weight"].shape[0] + + with init_context(): + image_projection = IPAdapterFullImageProjection( + cross_attention_dim=cross_attention_dim, image_embed_dim=clip_embeddings_dim + ) + + for key, value in state_dict.items(): + diffusers_name = key.replace("proj.0", "ff.net.0.proj") + diffusers_name = diffusers_name.replace("proj.2", "ff.net.2") + diffusers_name = diffusers_name.replace("proj.3", "norm") + updated_state_dict[diffusers_name] = value + + elif "perceiver_resampler.proj_in.weight" in state_dict: + # IP-Adapter Face ID Plus + id_embeddings_dim = state_dict["proj.0.weight"].shape[1] + embed_dims = state_dict["perceiver_resampler.proj_in.weight"].shape[0] + hidden_dims = state_dict["perceiver_resampler.proj_in.weight"].shape[1] + output_dims = state_dict["perceiver_resampler.proj_out.weight"].shape[0] + heads = state_dict["perceiver_resampler.layers.0.0.to_q.weight"].shape[0] // 64 + + with init_context(): + image_projection = IPAdapterFaceIDPlusImageProjection( + embed_dims=embed_dims, + output_dims=output_dims, + hidden_dims=hidden_dims, + heads=heads, + id_embeddings_dim=id_embeddings_dim, + ) + + for key, value in state_dict.items(): + diffusers_name = key.replace("perceiver_resampler.", "") + diffusers_name = diffusers_name.replace("0.to", "attn.to") + diffusers_name = diffusers_name.replace("0.1.0.", "0.ff.0.") + diffusers_name = diffusers_name.replace("0.1.1.weight", "0.ff.1.net.0.proj.weight") + diffusers_name = diffusers_name.replace("0.1.3.weight", "0.ff.1.net.2.weight") + diffusers_name = diffusers_name.replace("1.1.0.", "1.ff.0.") + diffusers_name = diffusers_name.replace("1.1.1.weight", "1.ff.1.net.0.proj.weight") + diffusers_name = diffusers_name.replace("1.1.3.weight", "1.ff.1.net.2.weight") + diffusers_name = diffusers_name.replace("2.1.0.", "2.ff.0.") + diffusers_name = diffusers_name.replace("2.1.1.weight", "2.ff.1.net.0.proj.weight") + diffusers_name = diffusers_name.replace("2.1.3.weight", "2.ff.1.net.2.weight") + diffusers_name = diffusers_name.replace("3.1.0.", "3.ff.0.") + diffusers_name = diffusers_name.replace("3.1.1.weight", "3.ff.1.net.0.proj.weight") + diffusers_name = diffusers_name.replace("3.1.3.weight", "3.ff.1.net.2.weight") + diffusers_name = diffusers_name.replace("layers.0.0", "layers.0.ln0") + diffusers_name = diffusers_name.replace("layers.0.1", "layers.0.ln1") + diffusers_name = diffusers_name.replace("layers.1.0", "layers.1.ln0") + diffusers_name = diffusers_name.replace("layers.1.1", "layers.1.ln1") + diffusers_name = diffusers_name.replace("layers.2.0", "layers.2.ln0") + diffusers_name = diffusers_name.replace("layers.2.1", "layers.2.ln1") + diffusers_name = diffusers_name.replace("layers.3.0", "layers.3.ln0") + diffusers_name = diffusers_name.replace("layers.3.1", "layers.3.ln1") + + if "norm1" in diffusers_name: + updated_state_dict[diffusers_name.replace("0.norm1", "0")] = value + elif "norm2" in diffusers_name: + updated_state_dict[diffusers_name.replace("0.norm2", "1")] = value + elif "to_kv" in diffusers_name: + v_chunk = value.chunk(2, dim=0) + updated_state_dict[diffusers_name.replace("to_kv", "to_k")] = v_chunk[0] + updated_state_dict[diffusers_name.replace("to_kv", "to_v")] = v_chunk[1] + elif "to_out" in diffusers_name: + updated_state_dict[diffusers_name.replace("to_out", "to_out.0")] = value + elif "proj.0.weight" == diffusers_name: + updated_state_dict["proj.net.0.proj.weight"] = value + elif "proj.0.bias" == diffusers_name: + updated_state_dict["proj.net.0.proj.bias"] = value + elif "proj.2.weight" == diffusers_name: + updated_state_dict["proj.net.2.weight"] = value + elif "proj.2.bias" == diffusers_name: + updated_state_dict["proj.net.2.bias"] = value + else: + updated_state_dict[diffusers_name] = value + + elif "norm.weight" in state_dict: + # IP-Adapter Face ID + id_embeddings_dim_in = state_dict["proj.0.weight"].shape[1] + id_embeddings_dim_out = state_dict["proj.0.weight"].shape[0] + multiplier = id_embeddings_dim_out // id_embeddings_dim_in + norm_layer = "norm.weight" + cross_attention_dim = state_dict[norm_layer].shape[0] + num_tokens = state_dict["proj.2.weight"].shape[0] // cross_attention_dim + + with init_context(): + image_projection = IPAdapterFaceIDImageProjection( + cross_attention_dim=cross_attention_dim, + image_embed_dim=id_embeddings_dim_in, + mult=multiplier, + num_tokens=num_tokens, + ) + + for key, value in state_dict.items(): + diffusers_name = key.replace("proj.0", "ff.net.0.proj") + diffusers_name = diffusers_name.replace("proj.2", "ff.net.2") + updated_state_dict[diffusers_name] = value + + else: + # IP-Adapter Plus + num_image_text_embeds = state_dict["latents"].shape[1] + embed_dims = state_dict["proj_in.weight"].shape[1] + output_dims = state_dict["proj_out.weight"].shape[0] + hidden_dims = state_dict["latents"].shape[2] + attn_key_present = any("attn" in k for k in state_dict) + heads = ( + state_dict["layers.0.attn.to_q.weight"].shape[0] // 64 + if attn_key_present + else state_dict["layers.0.0.to_q.weight"].shape[0] // 64 + ) + + with init_context(): + image_projection = IPAdapterPlusImageProjection( + embed_dims=embed_dims, + output_dims=output_dims, + hidden_dims=hidden_dims, + heads=heads, + num_queries=num_image_text_embeds, + ) + + for key, value in state_dict.items(): + diffusers_name = key.replace("0.to", "2.to") + + diffusers_name = diffusers_name.replace("0.0.norm1", "0.ln0") + diffusers_name = diffusers_name.replace("0.0.norm2", "0.ln1") + diffusers_name = diffusers_name.replace("1.0.norm1", "1.ln0") + diffusers_name = diffusers_name.replace("1.0.norm2", "1.ln1") + diffusers_name = diffusers_name.replace("2.0.norm1", "2.ln0") + diffusers_name = diffusers_name.replace("2.0.norm2", "2.ln1") + diffusers_name = diffusers_name.replace("3.0.norm1", "3.ln0") + diffusers_name = diffusers_name.replace("3.0.norm2", "3.ln1") + + if "to_kv" in diffusers_name: + parts = diffusers_name.split(".") + parts[2] = "attn" + diffusers_name = ".".join(parts) + v_chunk = value.chunk(2, dim=0) + updated_state_dict[diffusers_name.replace("to_kv", "to_k")] = v_chunk[0] + updated_state_dict[diffusers_name.replace("to_kv", "to_v")] = v_chunk[1] + elif "to_q" in diffusers_name: + parts = diffusers_name.split(".") + parts[2] = "attn" + diffusers_name = ".".join(parts) + updated_state_dict[diffusers_name] = value + elif "to_out" in diffusers_name: + parts = diffusers_name.split(".") + parts[2] = "attn" + diffusers_name = ".".join(parts) + updated_state_dict[diffusers_name.replace("to_out", "to_out.0")] = value + else: + diffusers_name = diffusers_name.replace("0.1.0", "0.ff.0") + diffusers_name = diffusers_name.replace("0.1.1", "0.ff.1.net.0.proj") + diffusers_name = diffusers_name.replace("0.1.3", "0.ff.1.net.2") + + diffusers_name = diffusers_name.replace("1.1.0", "1.ff.0") + diffusers_name = diffusers_name.replace("1.1.1", "1.ff.1.net.0.proj") + diffusers_name = diffusers_name.replace("1.1.3", "1.ff.1.net.2") + + diffusers_name = diffusers_name.replace("2.1.0", "2.ff.0") + diffusers_name = diffusers_name.replace("2.1.1", "2.ff.1.net.0.proj") + diffusers_name = diffusers_name.replace("2.1.3", "2.ff.1.net.2") + + diffusers_name = diffusers_name.replace("3.1.0", "3.ff.0") + diffusers_name = diffusers_name.replace("3.1.1", "3.ff.1.net.0.proj") + diffusers_name = diffusers_name.replace("3.1.3", "3.ff.1.net.2") + updated_state_dict[diffusers_name] = value + + if not low_cpu_mem_usage: + image_projection.load_state_dict(updated_state_dict, strict=True) + else: + load_model_dict_into_meta(image_projection, updated_state_dict, device=self.device, dtype=self.dtype) + + return image_projection + + def _convert_ip_adapter_attn_to_diffusers(self, state_dicts, low_cpu_mem_usage=False): + from ..models.attention_processor import ( + IPAdapterAttnProcessor, + IPAdapterAttnProcessor2_0, + IPAdapterXFormersAttnProcessor, + ) + + if low_cpu_mem_usage: + if is_accelerate_available(): + from accelerate import init_empty_weights + + else: + low_cpu_mem_usage = False + logger.warning( + "Cannot initialize model with low cpu memory usage because `accelerate` was not found in the" + " environment. Defaulting to `low_cpu_mem_usage=False`. It is strongly recommended to install" + " `accelerate` for faster and less memory-intense model loading. You can do so with: \n```\npip" + " install accelerate\n```\n." + ) + + if low_cpu_mem_usage is True and not is_torch_version(">=", "1.9.0"): + raise NotImplementedError( + "Low memory initialization requires torch >= 1.9.0. Please either update your PyTorch version or set" + " `low_cpu_mem_usage=False`." + ) + + # set ip-adapter cross-attention processors & load state_dict + attn_procs = {} + key_id = 1 + init_context = init_empty_weights if low_cpu_mem_usage else nullcontext + for name in self.attn_processors.keys(): + cross_attention_dim = None if name.endswith("attn1.processor") else self.config.cross_attention_dim + if name.startswith("mid_block"): + hidden_size = self.config.block_out_channels[-1] + elif name.startswith("up_blocks"): + block_id = int(name[len("up_blocks.")]) + hidden_size = list(reversed(self.config.block_out_channels))[block_id] + elif name.startswith("down_blocks"): + block_id = int(name[len("down_blocks.")]) + hidden_size = self.config.block_out_channels[block_id] + + if cross_attention_dim is None or "motion_modules" in name: + attn_processor_class = self.attn_processors[name].__class__ + attn_procs[name] = attn_processor_class() + else: + if "XFormers" in str(self.attn_processors[name].__class__): + attn_processor_class = IPAdapterXFormersAttnProcessor + else: + attn_processor_class = ( + IPAdapterAttnProcessor2_0 + if hasattr(F, "scaled_dot_product_attention") + else IPAdapterAttnProcessor + ) + num_image_text_embeds = [] + for state_dict in state_dicts: + if "proj.weight" in state_dict["image_proj"]: + # IP-Adapter + num_image_text_embeds += [4] + elif "proj.3.weight" in state_dict["image_proj"]: + # IP-Adapter Full Face + num_image_text_embeds += [257] # 256 CLIP tokens + 1 CLS token + elif "perceiver_resampler.proj_in.weight" in state_dict["image_proj"]: + # IP-Adapter Face ID Plus + num_image_text_embeds += [4] + elif "norm.weight" in state_dict["image_proj"]: + # IP-Adapter Face ID + num_image_text_embeds += [4] + else: + # IP-Adapter Plus + num_image_text_embeds += [state_dict["image_proj"]["latents"].shape[1]] + + with init_context(): + attn_procs[name] = attn_processor_class( + hidden_size=hidden_size, + cross_attention_dim=cross_attention_dim, + scale=1.0, + num_tokens=num_image_text_embeds, + ) + + value_dict = {} + for i, state_dict in enumerate(state_dicts): + value_dict.update({f"to_k_ip.{i}.weight": state_dict["ip_adapter"][f"{key_id}.to_k_ip.weight"]}) + value_dict.update({f"to_v_ip.{i}.weight": state_dict["ip_adapter"][f"{key_id}.to_v_ip.weight"]}) + + if not low_cpu_mem_usage: + attn_procs[name].load_state_dict(value_dict) + else: + device = next(iter(value_dict.values())).device + dtype = next(iter(value_dict.values())).dtype + load_model_dict_into_meta(attn_procs[name], value_dict, device=device, dtype=dtype) + + key_id += 2 + + return attn_procs + + def _load_ip_adapter_weights(self, state_dicts, low_cpu_mem_usage=False): + if not isinstance(state_dicts, list): + state_dicts = [state_dicts] + + # Kolors Unet already has a `encoder_hid_proj` + if ( + self.encoder_hid_proj is not None + and self.config.encoder_hid_dim_type == "text_proj" + and not hasattr(self, "text_encoder_hid_proj") + ): + self.text_encoder_hid_proj = self.encoder_hid_proj + + # Set encoder_hid_proj after loading ip_adapter weights, + # because `IPAdapterPlusImageProjection` also has `attn_processors`. + self.encoder_hid_proj = None + + attn_procs = self._convert_ip_adapter_attn_to_diffusers(state_dicts, low_cpu_mem_usage=low_cpu_mem_usage) + self.set_attn_processor(attn_procs) + + # convert IP-Adapter Image Projection layers to diffusers + image_projection_layers = [] + for state_dict in state_dicts: + image_projection_layer = self._convert_ip_adapter_image_proj_to_diffusers( + state_dict["image_proj"], low_cpu_mem_usage=low_cpu_mem_usage + ) + image_projection_layers.append(image_projection_layer) + + self.encoder_hid_proj = MultiIPAdapterImageProjection(image_projection_layers) + self.config.encoder_hid_dim_type = "ip_image_proj" + + self.to(dtype=self.dtype, device=self.device) + + def _load_ip_adapter_loras(self, state_dicts): + lora_dicts = {} + for key_id, name in enumerate(self.attn_processors.keys()): + for i, state_dict in enumerate(state_dicts): + if f"{key_id}.to_k_lora.down.weight" in state_dict["ip_adapter"]: + if i not in lora_dicts: + lora_dicts[i] = {} + lora_dicts[i].update( + { + f"unet.{name}.to_k_lora.down.weight": state_dict["ip_adapter"][ + f"{key_id}.to_k_lora.down.weight" + ] + } + ) + lora_dicts[i].update( + { + f"unet.{name}.to_q_lora.down.weight": state_dict["ip_adapter"][ + f"{key_id}.to_q_lora.down.weight" + ] + } + ) + lora_dicts[i].update( + { + f"unet.{name}.to_v_lora.down.weight": state_dict["ip_adapter"][ + f"{key_id}.to_v_lora.down.weight" + ] + } + ) + lora_dicts[i].update( + { + f"unet.{name}.to_out_lora.down.weight": state_dict["ip_adapter"][ + f"{key_id}.to_out_lora.down.weight" + ] + } + ) + lora_dicts[i].update( + {f"unet.{name}.to_k_lora.up.weight": state_dict["ip_adapter"][f"{key_id}.to_k_lora.up.weight"]} + ) + lora_dicts[i].update( + {f"unet.{name}.to_q_lora.up.weight": state_dict["ip_adapter"][f"{key_id}.to_q_lora.up.weight"]} + ) + lora_dicts[i].update( + {f"unet.{name}.to_v_lora.up.weight": state_dict["ip_adapter"][f"{key_id}.to_v_lora.up.weight"]} + ) + lora_dicts[i].update( + { + f"unet.{name}.to_out_lora.up.weight": state_dict["ip_adapter"][ + f"{key_id}.to_out_lora.up.weight" + ] + } + ) + return lora_dicts diff --git a/venv/lib/python3.11/site-packages/diffusers/loaders/unet_loader_utils.py b/venv/lib/python3.11/site-packages/diffusers/loaders/unet_loader_utils.py new file mode 100644 index 0000000000000000000000000000000000000000..8f202ed4d44bdf0965dcf6e02efbfe26c42c8705 --- /dev/null +++ b/venv/lib/python3.11/site-packages/diffusers/loaders/unet_loader_utils.py @@ -0,0 +1,163 @@ +# Copyright 2024 The HuggingFace Team. All rights reserved. +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. +import copy +from typing import TYPE_CHECKING, Dict, List, Union + +from ..utils import logging + + +if TYPE_CHECKING: + # import here to avoid circular imports + from ..models import UNet2DConditionModel + +logger = logging.get_logger(__name__) # pylint: disable=invalid-name + + +def _translate_into_actual_layer_name(name): + """Translate user-friendly name (e.g. 'mid') into actual layer name (e.g. 'mid_block.attentions.0')""" + if name == "mid": + return "mid_block.attentions.0" + + updown, block, attn = name.split(".") + + updown = updown.replace("down", "down_blocks").replace("up", "up_blocks") + block = block.replace("block_", "") + attn = "attentions." + attn + + return ".".join((updown, block, attn)) + + +def _maybe_expand_lora_scales( + unet: "UNet2DConditionModel", weight_scales: List[Union[float, Dict]], default_scale=1.0 +): + blocks_with_transformer = { + "down": [i for i, block in enumerate(unet.down_blocks) if hasattr(block, "attentions")], + "up": [i for i, block in enumerate(unet.up_blocks) if hasattr(block, "attentions")], + } + transformer_per_block = {"down": unet.config.layers_per_block, "up": unet.config.layers_per_block + 1} + + expanded_weight_scales = [ + _maybe_expand_lora_scales_for_one_adapter( + weight_for_adapter, + blocks_with_transformer, + transformer_per_block, + unet.state_dict(), + default_scale=default_scale, + ) + for weight_for_adapter in weight_scales + ] + + return expanded_weight_scales + + +def _maybe_expand_lora_scales_for_one_adapter( + scales: Union[float, Dict], + blocks_with_transformer: Dict[str, int], + transformer_per_block: Dict[str, int], + state_dict: None, + default_scale: float = 1.0, +): + """ + Expands the inputs into a more granular dictionary. See the example below for more details. + + Parameters: + scales (`Union[float, Dict]`): + Scales dict to expand. + blocks_with_transformer (`Dict[str, int]`): + Dict with keys 'up' and 'down', showing which blocks have transformer layers + transformer_per_block (`Dict[str, int]`): + Dict with keys 'up' and 'down', showing how many transformer layers each block has + + E.g. turns + ```python + scales = {"down": 2, "mid": 3, "up": {"block_0": 4, "block_1": [5, 6, 7]}} + blocks_with_transformer = {"down": [1, 2], "up": [0, 1]} + transformer_per_block = {"down": 2, "up": 3} + ``` + into + ```python + { + "down.block_1.0": 2, + "down.block_1.1": 2, + "down.block_2.0": 2, + "down.block_2.1": 2, + "mid": 3, + "up.block_0.0": 4, + "up.block_0.1": 4, + "up.block_0.2": 4, + "up.block_1.0": 5, + "up.block_1.1": 6, + "up.block_1.2": 7, + } + ``` + """ + if sorted(blocks_with_transformer.keys()) != ["down", "up"]: + raise ValueError("blocks_with_transformer needs to be a dict with keys `'down' and `'up'`") + + if sorted(transformer_per_block.keys()) != ["down", "up"]: + raise ValueError("transformer_per_block needs to be a dict with keys `'down' and `'up'`") + + if not isinstance(scales, dict): + # don't expand if scales is a single number + return scales + + scales = copy.deepcopy(scales) + + if "mid" not in scales: + scales["mid"] = default_scale + elif isinstance(scales["mid"], list): + if len(scales["mid"]) == 1: + scales["mid"] = scales["mid"][0] + else: + raise ValueError(f"Expected 1 scales for mid, got {len(scales['mid'])}.") + + for updown in ["up", "down"]: + if updown not in scales: + scales[updown] = default_scale + + # eg {"down": 1} to {"down": {"block_1": 1, "block_2": 1}}} + if not isinstance(scales[updown], dict): + scales[updown] = {f"block_{i}": copy.deepcopy(scales[updown]) for i in blocks_with_transformer[updown]} + + # eg {"down": {"block_1": 1}} to {"down": {"block_1": [1, 1]}} + for i in blocks_with_transformer[updown]: + block = f"block_{i}" + # set not assigned blocks to default scale + if block not in scales[updown]: + scales[updown][block] = default_scale + if not isinstance(scales[updown][block], list): + scales[updown][block] = [scales[updown][block] for _ in range(transformer_per_block[updown])] + elif len(scales[updown][block]) == 1: + # a list specifying scale to each masked IP input + scales[updown][block] = scales[updown][block] * transformer_per_block[updown] + elif len(scales[updown][block]) != transformer_per_block[updown]: + raise ValueError( + f"Expected {transformer_per_block[updown]} scales for {updown}.{block}, got {len(scales[updown][block])}." + ) + + # eg {"down": "block_1": [1, 1]}} to {"down.block_1.0": 1, "down.block_1.1": 1} + for i in blocks_with_transformer[updown]: + block = f"block_{i}" + for tf_idx, value in enumerate(scales[updown][block]): + scales[f"{updown}.{block}.{tf_idx}"] = value + + del scales[updown] + + for layer in scales.keys(): + if not any(_translate_into_actual_layer_name(layer) in module for module in state_dict.keys()): + raise ValueError( + f"Can't set lora scale for layer {layer}. It either doesn't exist in this unet or it has no attentions." + ) + + return {_translate_into_actual_layer_name(name): weight for name, weight in scales.items()} diff --git a/venv/lib/python3.11/site-packages/diffusers/loaders/utils.py b/venv/lib/python3.11/site-packages/diffusers/loaders/utils.py new file mode 100644 index 0000000000000000000000000000000000000000..142d72bf6b77edf4af72ee0d30d3d190cd4b3eef --- /dev/null +++ b/venv/lib/python3.11/site-packages/diffusers/loaders/utils.py @@ -0,0 +1,59 @@ +# Copyright 2024 The HuggingFace Team. All rights reserved. +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. + +from typing import Dict + +import torch + + +class AttnProcsLayers(torch.nn.Module): + def __init__(self, state_dict: Dict[str, torch.Tensor]): + super().__init__() + self.layers = torch.nn.ModuleList(state_dict.values()) + self.mapping = dict(enumerate(state_dict.keys())) + self.rev_mapping = {v: k for k, v in enumerate(state_dict.keys())} + + # .processor for unet, .self_attn for text encoder + self.split_keys = [".processor", ".self_attn"] + + # we add a hook to state_dict() and load_state_dict() so that the + # naming fits with `unet.attn_processors` + def map_to(module, state_dict, *args, **kwargs): + new_state_dict = {} + for key, value in state_dict.items(): + num = int(key.split(".")[1]) # 0 is always "layers" + new_key = key.replace(f"layers.{num}", module.mapping[num]) + new_state_dict[new_key] = value + + return new_state_dict + + def remap_key(key, state_dict): + for k in self.split_keys: + if k in key: + return key.split(k)[0] + k + + raise ValueError( + f"There seems to be a problem with the state_dict: {set(state_dict.keys())}. {key} has to have one of {self.split_keys}." + ) + + def map_from(module, state_dict, *args, **kwargs): + all_keys = list(state_dict.keys()) + for key in all_keys: + replace_key = remap_key(key, state_dict) + new_key = key.replace(replace_key, f"layers.{module.rev_mapping[replace_key]}") + state_dict[new_key] = state_dict[key] + del state_dict[key] + + self._register_state_dict_hook(map_to) + self._register_load_state_dict_pre_hook(map_from, with_module=True) diff --git a/venv/lib/python3.11/site-packages/diffusers/models/__init__.py b/venv/lib/python3.11/site-packages/diffusers/models/__init__.py new file mode 100644 index 0000000000000000000000000000000000000000..01e67b01d91a3f1969016a132235e6e160c4e3d3 --- /dev/null +++ b/venv/lib/python3.11/site-packages/diffusers/models/__init__.py @@ -0,0 +1,172 @@ +# Copyright 2024 The HuggingFace Team. All rights reserved. +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. + +from typing import TYPE_CHECKING + +from ..utils import ( + DIFFUSERS_SLOW_IMPORT, + _LazyModule, + is_flax_available, + is_torch_available, +) + + +_import_structure = {} + +if is_torch_available(): + _import_structure["adapter"] = ["MultiAdapter", "T2IAdapter"] + _import_structure["autoencoders.autoencoder_asym_kl"] = ["AsymmetricAutoencoderKL"] + _import_structure["autoencoders.autoencoder_dc"] = ["AutoencoderDC"] + _import_structure["autoencoders.autoencoder_kl"] = ["AutoencoderKL"] + _import_structure["autoencoders.autoencoder_kl_allegro"] = ["AutoencoderKLAllegro"] + _import_structure["autoencoders.autoencoder_kl_cogvideox"] = ["AutoencoderKLCogVideoX"] + _import_structure["autoencoders.autoencoder_kl_hunyuan_video"] = ["AutoencoderKLHunyuanVideo"] + _import_structure["autoencoders.autoencoder_kl_ltx"] = ["AutoencoderKLLTXVideo"] + _import_structure["autoencoders.autoencoder_kl_mochi"] = ["AutoencoderKLMochi"] + _import_structure["autoencoders.autoencoder_kl_temporal_decoder"] = ["AutoencoderKLTemporalDecoder"] + _import_structure["autoencoders.autoencoder_oobleck"] = ["AutoencoderOobleck"] + _import_structure["autoencoders.autoencoder_tiny"] = ["AutoencoderTiny"] + _import_structure["autoencoders.consistency_decoder_vae"] = ["ConsistencyDecoderVAE"] + _import_structure["autoencoders.vq_model"] = ["VQModel"] + _import_structure["controlnets.controlnet"] = ["ControlNetModel"] + _import_structure["controlnets.controlnet_flux"] = ["FluxControlNetModel", "FluxMultiControlNetModel"] + _import_structure["controlnets.controlnet_hunyuan"] = [ + "HunyuanDiT2DControlNetModel", + "HunyuanDiT2DMultiControlNetModel", + ] + _import_structure["controlnets.controlnet_sd3"] = ["SD3ControlNetModel", "SD3MultiControlNetModel"] + _import_structure["controlnets.controlnet_sparsectrl"] = ["SparseControlNetModel"] + _import_structure["controlnets.controlnet_union"] = ["ControlNetUnionModel"] + _import_structure["controlnets.controlnet_xs"] = ["ControlNetXSAdapter", "UNetControlNetXSModel"] + _import_structure["controlnets.multicontrolnet"] = ["MultiControlNetModel"] + _import_structure["embeddings"] = ["ImageProjection"] + _import_structure["modeling_utils"] = ["ModelMixin"] + _import_structure["transformers.auraflow_transformer_2d"] = ["AuraFlowTransformer2DModel"] + _import_structure["transformers.cogvideox_transformer_3d"] = ["CogVideoXTransformer3DModel"] + _import_structure["transformers.dit_transformer_2d"] = ["DiTTransformer2DModel"] + _import_structure["transformers.dual_transformer_2d"] = ["DualTransformer2DModel"] + _import_structure["transformers.hunyuan_transformer_2d"] = ["HunyuanDiT2DModel"] + _import_structure["transformers.latte_transformer_3d"] = ["LatteTransformer3DModel"] + _import_structure["transformers.lumina_nextdit2d"] = ["LuminaNextDiT2DModel"] + _import_structure["transformers.pixart_transformer_2d"] = ["PixArtTransformer2DModel"] + _import_structure["transformers.prior_transformer"] = ["PriorTransformer"] + _import_structure["transformers.sana_transformer"] = ["SanaTransformer2DModel"] + _import_structure["transformers.stable_audio_transformer"] = ["StableAudioDiTModel"] + _import_structure["transformers.t5_film_transformer"] = ["T5FilmDecoder"] + _import_structure["transformers.transformer_2d"] = ["Transformer2DModel"] + _import_structure["transformers.transformer_allegro"] = ["AllegroTransformer3DModel"] + _import_structure["transformers.transformer_cogview3plus"] = ["CogView3PlusTransformer2DModel"] + _import_structure["transformers.transformer_flux"] = ["FluxTransformer2DModel"] + _import_structure["transformers.transformer_hunyuan_video"] = ["HunyuanVideoTransformer3DModel"] + _import_structure["transformers.transformer_ltx"] = ["LTXVideoTransformer3DModel"] + _import_structure["transformers.transformer_mochi"] = ["MochiTransformer3DModel"] + _import_structure["transformers.transformer_sd3"] = ["SD3Transformer2DModel"] + _import_structure["transformers.transformer_temporal"] = ["TransformerTemporalModel"] + _import_structure["unets.unet_1d"] = ["UNet1DModel"] + _import_structure["unets.unet_2d"] = ["UNet2DModel"] + _import_structure["unets.unet_2d_condition"] = ["UNet2DConditionModel"] + _import_structure["unets.unet_3d_condition"] = ["UNet3DConditionModel"] + _import_structure["unets.unet_i2vgen_xl"] = ["I2VGenXLUNet"] + _import_structure["unets.unet_kandinsky3"] = ["Kandinsky3UNet"] + _import_structure["unets.unet_motion_model"] = ["MotionAdapter", "UNetMotionModel"] + _import_structure["unets.unet_spatio_temporal_condition"] = ["UNetSpatioTemporalConditionModel"] + _import_structure["unets.unet_stable_cascade"] = ["StableCascadeUNet"] + _import_structure["unets.uvit_2d"] = ["UVit2DModel"] + +if is_flax_available(): + _import_structure["controlnets.controlnet_flax"] = ["FlaxControlNetModel"] + _import_structure["unets.unet_2d_condition_flax"] = ["FlaxUNet2DConditionModel"] + _import_structure["vae_flax"] = ["FlaxAutoencoderKL"] + + +if TYPE_CHECKING or DIFFUSERS_SLOW_IMPORT: + if is_torch_available(): + from .adapter import MultiAdapter, T2IAdapter + from .autoencoders import ( + AsymmetricAutoencoderKL, + AutoencoderDC, + AutoencoderKL, + AutoencoderKLAllegro, + AutoencoderKLCogVideoX, + AutoencoderKLHunyuanVideo, + AutoencoderKLLTXVideo, + AutoencoderKLMochi, + AutoencoderKLTemporalDecoder, + AutoencoderOobleck, + AutoencoderTiny, + ConsistencyDecoderVAE, + VQModel, + ) + from .controlnets import ( + ControlNetModel, + ControlNetUnionModel, + ControlNetXSAdapter, + FluxControlNetModel, + FluxMultiControlNetModel, + HunyuanDiT2DControlNetModel, + HunyuanDiT2DMultiControlNetModel, + MultiControlNetModel, + SD3ControlNetModel, + SD3MultiControlNetModel, + SparseControlNetModel, + UNetControlNetXSModel, + ) + from .embeddings import ImageProjection + from .modeling_utils import ModelMixin + from .transformers import ( + AllegroTransformer3DModel, + AuraFlowTransformer2DModel, + CogVideoXTransformer3DModel, + CogView3PlusTransformer2DModel, + DiTTransformer2DModel, + DualTransformer2DModel, + FluxTransformer2DModel, + HunyuanDiT2DModel, + HunyuanVideoTransformer3DModel, + LatteTransformer3DModel, + LTXVideoTransformer3DModel, + LuminaNextDiT2DModel, + MochiTransformer3DModel, + PixArtTransformer2DModel, + PriorTransformer, + SanaTransformer2DModel, + SD3Transformer2DModel, + StableAudioDiTModel, + T5FilmDecoder, + Transformer2DModel, + TransformerTemporalModel, + ) + from .unets import ( + I2VGenXLUNet, + Kandinsky3UNet, + MotionAdapter, + StableCascadeUNet, + UNet1DModel, + UNet2DConditionModel, + UNet2DModel, + UNet3DConditionModel, + UNetMotionModel, + UNetSpatioTemporalConditionModel, + UVit2DModel, + ) + + if is_flax_available(): + from .controlnets import FlaxControlNetModel + from .unets import FlaxUNet2DConditionModel + from .vae_flax import FlaxAutoencoderKL + +else: + import sys + + sys.modules[__name__] = _LazyModule(__name__, globals()["__file__"], _import_structure, module_spec=__spec__) diff --git a/venv/lib/python3.11/site-packages/diffusers/models/activations.py b/venv/lib/python3.11/site-packages/diffusers/models/activations.py new file mode 100644 index 0000000000000000000000000000000000000000..c61baefa08f433503ff628513305f0eb02deebac --- /dev/null +++ b/venv/lib/python3.11/site-packages/diffusers/models/activations.py @@ -0,0 +1,178 @@ +# coding=utf-8 +# Copyright 2024 HuggingFace Inc. +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. + +import torch +import torch.nn.functional as F +from torch import nn + +from ..utils import deprecate +from ..utils.import_utils import is_torch_npu_available, is_torch_version + + +if is_torch_npu_available(): + import torch_npu + +ACTIVATION_FUNCTIONS = { + "swish": nn.SiLU(), + "silu": nn.SiLU(), + "mish": nn.Mish(), + "gelu": nn.GELU(), + "relu": nn.ReLU(), +} + + +def get_activation(act_fn: str) -> nn.Module: + """Helper function to get activation function from string. + + Args: + act_fn (str): Name of activation function. + + Returns: + nn.Module: Activation function. + """ + + act_fn = act_fn.lower() + if act_fn in ACTIVATION_FUNCTIONS: + return ACTIVATION_FUNCTIONS[act_fn] + else: + raise ValueError(f"Unsupported activation function: {act_fn}") + + +class FP32SiLU(nn.Module): + r""" + SiLU activation function with input upcasted to torch.float32. + """ + + def __init__(self): + super().__init__() + + def forward(self, inputs: torch.Tensor) -> torch.Tensor: + return F.silu(inputs.float(), inplace=False).to(inputs.dtype) + + +class GELU(nn.Module): + r""" + GELU activation function with tanh approximation support with `approximate="tanh"`. + + Parameters: + dim_in (`int`): The number of channels in the input. + dim_out (`int`): The number of channels in the output. + approximate (`str`, *optional*, defaults to `"none"`): If `"tanh"`, use tanh approximation. + bias (`bool`, defaults to True): Whether to use a bias in the linear layer. + """ + + def __init__(self, dim_in: int, dim_out: int, approximate: str = "none", bias: bool = True): + super().__init__() + self.proj = nn.Linear(dim_in, dim_out, bias=bias) + self.approximate = approximate + + def gelu(self, gate: torch.Tensor) -> torch.Tensor: + if gate.device.type == "mps" and is_torch_version("<", "2.0.0"): + # fp16 gelu not supported on mps before torch 2.0 + return F.gelu(gate.to(dtype=torch.float32), approximate=self.approximate).to(dtype=gate.dtype) + return F.gelu(gate, approximate=self.approximate) + + def forward(self, hidden_states): + hidden_states = self.proj(hidden_states) + hidden_states = self.gelu(hidden_states) + return hidden_states + + +class GEGLU(nn.Module): + r""" + A [variant](https://arxiv.org/abs/2002.05202) of the gated linear unit activation function. + + Parameters: + dim_in (`int`): The number of channels in the input. + dim_out (`int`): The number of channels in the output. + bias (`bool`, defaults to True): Whether to use a bias in the linear layer. + """ + + def __init__(self, dim_in: int, dim_out: int, bias: bool = True): + super().__init__() + self.proj = nn.Linear(dim_in, dim_out * 2, bias=bias) + + def gelu(self, gate: torch.Tensor) -> torch.Tensor: + if gate.device.type == "mps" and is_torch_version("<", "2.0.0"): + # fp16 gelu not supported on mps before torch 2.0 + return F.gelu(gate.to(dtype=torch.float32)).to(dtype=gate.dtype) + return F.gelu(gate) + + def forward(self, hidden_states, *args, **kwargs): + if len(args) > 0 or kwargs.get("scale", None) is not None: + deprecation_message = "The `scale` argument is deprecated and will be ignored. Please remove it, as passing it will raise an error in the future. `scale` should directly be passed while calling the underlying pipeline component i.e., via `cross_attention_kwargs`." + deprecate("scale", "1.0.0", deprecation_message) + hidden_states = self.proj(hidden_states) + if is_torch_npu_available(): + # using torch_npu.npu_geglu can run faster and save memory on NPU. + return torch_npu.npu_geglu(hidden_states, dim=-1, approximate=1)[0] + else: + hidden_states, gate = hidden_states.chunk(2, dim=-1) + return hidden_states * self.gelu(gate) + + +class SwiGLU(nn.Module): + r""" + A [variant](https://arxiv.org/abs/2002.05202) of the gated linear unit activation function. It's similar to `GEGLU` + but uses SiLU / Swish instead of GeLU. + + Parameters: + dim_in (`int`): The number of channels in the input. + dim_out (`int`): The number of channels in the output. + bias (`bool`, defaults to True): Whether to use a bias in the linear layer. + """ + + def __init__(self, dim_in: int, dim_out: int, bias: bool = True): + super().__init__() + + self.proj = nn.Linear(dim_in, dim_out * 2, bias=bias) + self.activation = nn.SiLU() + + def forward(self, hidden_states): + hidden_states = self.proj(hidden_states) + hidden_states, gate = hidden_states.chunk(2, dim=-1) + return hidden_states * self.activation(gate) + + +class ApproximateGELU(nn.Module): + r""" + The approximate form of the Gaussian Error Linear Unit (GELU). For more details, see section 2 of this + [paper](https://arxiv.org/abs/1606.08415). + + Parameters: + dim_in (`int`): The number of channels in the input. + dim_out (`int`): The number of channels in the output. + bias (`bool`, defaults to True): Whether to use a bias in the linear layer. + """ + + def __init__(self, dim_in: int, dim_out: int, bias: bool = True): + super().__init__() + self.proj = nn.Linear(dim_in, dim_out, bias=bias) + + def forward(self, x: torch.Tensor) -> torch.Tensor: + x = self.proj(x) + return x * torch.sigmoid(1.702 * x) + + +class LinearActivation(nn.Module): + def __init__(self, dim_in: int, dim_out: int, bias: bool = True, activation: str = "silu"): + super().__init__() + + self.proj = nn.Linear(dim_in, dim_out, bias=bias) + self.activation = get_activation(activation) + + def forward(self, hidden_states): + hidden_states = self.proj(hidden_states) + return self.activation(hidden_states) diff --git a/venv/lib/python3.11/site-packages/diffusers/models/adapter.py b/venv/lib/python3.11/site-packages/diffusers/models/adapter.py new file mode 100644 index 0000000000000000000000000000000000000000..677a991f055e47c5fe0b1d6ed88738d8ec3732e5 --- /dev/null +++ b/venv/lib/python3.11/site-packages/diffusers/models/adapter.py @@ -0,0 +1,584 @@ +# Copyright 2022 The HuggingFace Team. All rights reserved. +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. +import os +from typing import Callable, List, Optional, Union + +import torch +import torch.nn as nn + +from ..configuration_utils import ConfigMixin, register_to_config +from ..utils import logging +from .modeling_utils import ModelMixin + + +logger = logging.get_logger(__name__) + + +class MultiAdapter(ModelMixin): + r""" + MultiAdapter is a wrapper model that contains multiple adapter models and merges their outputs according to + user-assigned weighting. + + This model inherits from [`ModelMixin`]. Check the superclass documentation for common methods such as downloading + or saving. + + Args: + adapters (`List[T2IAdapter]`, *optional*, defaults to None): + A list of `T2IAdapter` model instances. + """ + + def __init__(self, adapters: List["T2IAdapter"]): + super(MultiAdapter, self).__init__() + + self.num_adapter = len(adapters) + self.adapters = nn.ModuleList(adapters) + + if len(adapters) == 0: + raise ValueError("Expecting at least one adapter") + + if len(adapters) == 1: + raise ValueError("For a single adapter, please use the `T2IAdapter` class instead of `MultiAdapter`") + + # The outputs from each adapter are added together with a weight. + # This means that the change in dimensions from downsampling must + # be the same for all adapters. Inductively, it also means the + # downscale_factor and total_downscale_factor must be the same for all + # adapters. + first_adapter_total_downscale_factor = adapters[0].total_downscale_factor + first_adapter_downscale_factor = adapters[0].downscale_factor + for idx in range(1, len(adapters)): + if ( + adapters[idx].total_downscale_factor != first_adapter_total_downscale_factor + or adapters[idx].downscale_factor != first_adapter_downscale_factor + ): + raise ValueError( + f"Expecting all adapters to have the same downscaling behavior, but got:\n" + f"adapters[0].total_downscale_factor={first_adapter_total_downscale_factor}\n" + f"adapters[0].downscale_factor={first_adapter_downscale_factor}\n" + f"adapter[`{idx}`].total_downscale_factor={adapters[idx].total_downscale_factor}\n" + f"adapter[`{idx}`].downscale_factor={adapters[idx].downscale_factor}" + ) + + self.total_downscale_factor = first_adapter_total_downscale_factor + self.downscale_factor = first_adapter_downscale_factor + + def forward(self, xs: torch.Tensor, adapter_weights: Optional[List[float]] = None) -> List[torch.Tensor]: + r""" + Args: + xs (`torch.Tensor`): + A tensor of shape (batch, channel, height, width) representing input images for multiple adapter + models, concatenated along dimension 1(channel dimension). The `channel` dimension should be equal to + `num_adapter` * number of channel per image. + + adapter_weights (`List[float]`, *optional*, defaults to None): + A list of floats representing the weights which will be multiplied by each adapter's output before + summing them together. If `None`, equal weights will be used for all adapters. + """ + if adapter_weights is None: + adapter_weights = torch.tensor([1 / self.num_adapter] * self.num_adapter) + else: + adapter_weights = torch.tensor(adapter_weights) + + accume_state = None + for x, w, adapter in zip(xs, adapter_weights, self.adapters): + features = adapter(x) + if accume_state is None: + accume_state = features + for i in range(len(accume_state)): + accume_state[i] = w * accume_state[i] + else: + for i in range(len(features)): + accume_state[i] += w * features[i] + return accume_state + + def save_pretrained( + self, + save_directory: Union[str, os.PathLike], + is_main_process: bool = True, + save_function: Callable = None, + safe_serialization: bool = True, + variant: Optional[str] = None, + ): + """ + Save a model and its configuration file to a specified directory, allowing it to be re-loaded with the + `[`~models.adapter.MultiAdapter.from_pretrained`]` class method. + + Args: + save_directory (`str` or `os.PathLike`): + The directory where the model will be saved. If the directory does not exist, it will be created. + is_main_process (`bool`, optional, defaults=True): + Indicates whether current process is the main process or not. Useful for distributed training (e.g., + TPUs) and need to call this function on all processes. In this case, set `is_main_process=True` only + for the main process to avoid race conditions. + save_function (`Callable`): + Function used to save the state dictionary. Useful for distributed training (e.g., TPUs) to replace + `torch.save` with another method. Can also be configured using`DIFFUSERS_SAVE_MODE` environment + variable. + safe_serialization (`bool`, optional, defaults=True): + If `True`, save the model using `safetensors`. If `False`, save the model with `pickle`. + variant (`str`, *optional*): + If specified, weights are saved in the format `pytorch_model..bin`. + """ + idx = 0 + model_path_to_save = save_directory + for adapter in self.adapters: + adapter.save_pretrained( + model_path_to_save, + is_main_process=is_main_process, + save_function=save_function, + safe_serialization=safe_serialization, + variant=variant, + ) + + idx += 1 + model_path_to_save = model_path_to_save + f"_{idx}" + + @classmethod + def from_pretrained(cls, pretrained_model_path: Optional[Union[str, os.PathLike]], **kwargs): + r""" + Instantiate a pretrained `MultiAdapter` model from multiple pre-trained adapter models. + + The model is set in evaluation mode by default using `model.eval()` (Dropout modules are deactivated). To train + the model, set it back to training mode using `model.train()`. + + Warnings: + *Weights from XXX not initialized from pretrained model* means that the weights of XXX are not pretrained + with the rest of the model. It is up to you to train those weights with a downstream fine-tuning. *Weights + from XXX not used in YYY* means that the layer XXX is not used by YYY, so those weights are discarded. + + Args: + pretrained_model_path (`os.PathLike`): + A path to a *directory* containing model weights saved using + [`~diffusers.models.adapter.MultiAdapter.save_pretrained`], e.g., `./my_model_directory/adapter`. + torch_dtype (`str` or `torch.dtype`, *optional*): + Override the default `torch.dtype` and load the model under this dtype. If `"auto"` is passed the dtype + will be automatically derived from the model's weights. + output_loading_info(`bool`, *optional*, defaults to `False`): + Whether or not to also return a dictionary containing missing keys, unexpected keys and error messages. + device_map (`str` or `Dict[str, Union[int, str, torch.device]]`, *optional*): + A map that specifies where each submodule should go. It doesn't need to be refined to each + parameter/buffer name, once a given module name is inside, every submodule of it will be sent to the + same device. + + To have Accelerate compute the most optimized `device_map` automatically, set `device_map="auto"`. For + more information about each option see [designing a device + map](https://hf.co/docs/accelerate/main/en/usage_guides/big_modeling#designing-a-device-map). + max_memory (`Dict`, *optional*): + A dictionary mapping device identifiers to their maximum memory. Default to the maximum memory + available for each GPU and the available CPU RAM if unset. + low_cpu_mem_usage (`bool`, *optional*, defaults to `True` if torch version >= 1.9.0 else `False`): + Speed up model loading by not initializing the weights and only loading the pre-trained weights. This + also tries to not use more than 1x model size in CPU memory (including peak memory) while loading the + model. This is only supported when torch version >= 1.9.0. If you are using an older version of torch, + setting this argument to `True` will raise an error. + variant (`str`, *optional*): + If specified, load weights from a `variant` file (*e.g.* pytorch_model..bin). `variant` will + be ignored when using `from_flax`. + use_safetensors (`bool`, *optional*, defaults to `None`): + If `None`, the `safetensors` weights will be downloaded if available **and** if`safetensors` library is + installed. If `True`, the model will be forcibly loaded from`safetensors` weights. If `False`, + `safetensors` is not used. + """ + idx = 0 + adapters = [] + + # load adapter and append to list until no adapter directory exists anymore + # first adapter has to be saved under `./mydirectory/adapter` to be compliant with `DiffusionPipeline.from_pretrained` + # second, third, ... adapters have to be saved under `./mydirectory/adapter_1`, `./mydirectory/adapter_2`, ... + model_path_to_load = pretrained_model_path + while os.path.isdir(model_path_to_load): + adapter = T2IAdapter.from_pretrained(model_path_to_load, **kwargs) + adapters.append(adapter) + + idx += 1 + model_path_to_load = pretrained_model_path + f"_{idx}" + + logger.info(f"{len(adapters)} adapters loaded from {pretrained_model_path}.") + + if len(adapters) == 0: + raise ValueError( + f"No T2IAdapters found under {os.path.dirname(pretrained_model_path)}. Expected at least {pretrained_model_path + '_0'}." + ) + + return cls(adapters) + + +class T2IAdapter(ModelMixin, ConfigMixin): + r""" + A simple ResNet-like model that accepts images containing control signals such as keyposes and depth. The model + generates multiple feature maps that are used as additional conditioning in [`UNet2DConditionModel`]. The model's + architecture follows the original implementation of + [Adapter](https://github.com/TencentARC/T2I-Adapter/blob/686de4681515662c0ac2ffa07bf5dda83af1038a/ldm/modules/encoders/adapter.py#L97) + and + [AdapterLight](https://github.com/TencentARC/T2I-Adapter/blob/686de4681515662c0ac2ffa07bf5dda83af1038a/ldm/modules/encoders/adapter.py#L235). + + This model inherits from [`ModelMixin`]. Check the superclass documentation for the common methods, such as + downloading or saving. + + Args: + in_channels (`int`, *optional*, defaults to `3`): + The number of channels in the adapter's input (*control image*). Set it to 1 if you're using a gray scale + image. + channels (`List[int]`, *optional*, defaults to `(320, 640, 1280, 1280)`): + The number of channels in each downsample block's output hidden state. The `len(block_out_channels)` + determines the number of downsample blocks in the adapter. + num_res_blocks (`int`, *optional*, defaults to `2`): + Number of ResNet blocks in each downsample block. + downscale_factor (`int`, *optional*, defaults to `8`): + A factor that determines the total downscale factor of the Adapter. + adapter_type (`str`, *optional*, defaults to `full_adapter`): + Adapter type (`full_adapter` or `full_adapter_xl` or `light_adapter`) to use. + """ + + @register_to_config + def __init__( + self, + in_channels: int = 3, + channels: List[int] = [320, 640, 1280, 1280], + num_res_blocks: int = 2, + downscale_factor: int = 8, + adapter_type: str = "full_adapter", + ): + super().__init__() + + if adapter_type == "full_adapter": + self.adapter = FullAdapter(in_channels, channels, num_res_blocks, downscale_factor) + elif adapter_type == "full_adapter_xl": + self.adapter = FullAdapterXL(in_channels, channels, num_res_blocks, downscale_factor) + elif adapter_type == "light_adapter": + self.adapter = LightAdapter(in_channels, channels, num_res_blocks, downscale_factor) + else: + raise ValueError( + f"Unsupported adapter_type: '{adapter_type}'. Choose either 'full_adapter' or " + "'full_adapter_xl' or 'light_adapter'." + ) + + def forward(self, x: torch.Tensor) -> List[torch.Tensor]: + r""" + This function processes the input tensor `x` through the adapter model and returns a list of feature tensors, + each representing information extracted at a different scale from the input. The length of the list is + determined by the number of downsample blocks in the Adapter, as specified by the `channels` and + `num_res_blocks` parameters during initialization. + """ + return self.adapter(x) + + @property + def total_downscale_factor(self): + return self.adapter.total_downscale_factor + + @property + def downscale_factor(self): + """The downscale factor applied in the T2I-Adapter's initial pixel unshuffle operation. If an input image's dimensions are + not evenly divisible by the downscale_factor then an exception will be raised. + """ + return self.adapter.unshuffle.downscale_factor + + +# full adapter + + +class FullAdapter(nn.Module): + r""" + See [`T2IAdapter`] for more information. + """ + + def __init__( + self, + in_channels: int = 3, + channels: List[int] = [320, 640, 1280, 1280], + num_res_blocks: int = 2, + downscale_factor: int = 8, + ): + super().__init__() + + in_channels = in_channels * downscale_factor**2 + + self.unshuffle = nn.PixelUnshuffle(downscale_factor) + self.conv_in = nn.Conv2d(in_channels, channels[0], kernel_size=3, padding=1) + + self.body = nn.ModuleList( + [ + AdapterBlock(channels[0], channels[0], num_res_blocks), + *[ + AdapterBlock(channels[i - 1], channels[i], num_res_blocks, down=True) + for i in range(1, len(channels)) + ], + ] + ) + + self.total_downscale_factor = downscale_factor * 2 ** (len(channels) - 1) + + def forward(self, x: torch.Tensor) -> List[torch.Tensor]: + r""" + This method processes the input tensor `x` through the FullAdapter model and performs operations including + pixel unshuffling, convolution, and a stack of AdapterBlocks. It returns a list of feature tensors, each + capturing information at a different stage of processing within the FullAdapter model. The number of feature + tensors in the list is determined by the number of downsample blocks specified during initialization. + """ + x = self.unshuffle(x) + x = self.conv_in(x) + + features = [] + + for block in self.body: + x = block(x) + features.append(x) + + return features + + +class FullAdapterXL(nn.Module): + r""" + See [`T2IAdapter`] for more information. + """ + + def __init__( + self, + in_channels: int = 3, + channels: List[int] = [320, 640, 1280, 1280], + num_res_blocks: int = 2, + downscale_factor: int = 16, + ): + super().__init__() + + in_channels = in_channels * downscale_factor**2 + + self.unshuffle = nn.PixelUnshuffle(downscale_factor) + self.conv_in = nn.Conv2d(in_channels, channels[0], kernel_size=3, padding=1) + + self.body = [] + # blocks to extract XL features with dimensions of [320, 64, 64], [640, 64, 64], [1280, 32, 32], [1280, 32, 32] + for i in range(len(channels)): + if i == 1: + self.body.append(AdapterBlock(channels[i - 1], channels[i], num_res_blocks)) + elif i == 2: + self.body.append(AdapterBlock(channels[i - 1], channels[i], num_res_blocks, down=True)) + else: + self.body.append(AdapterBlock(channels[i], channels[i], num_res_blocks)) + + self.body = nn.ModuleList(self.body) + # XL has only one downsampling AdapterBlock. + self.total_downscale_factor = downscale_factor * 2 + + def forward(self, x: torch.Tensor) -> List[torch.Tensor]: + r""" + This method takes the tensor x as input and processes it through FullAdapterXL model. It consists of operations + including unshuffling pixels, applying convolution layer and appending each block into list of feature tensors. + """ + x = self.unshuffle(x) + x = self.conv_in(x) + + features = [] + + for block in self.body: + x = block(x) + features.append(x) + + return features + + +class AdapterBlock(nn.Module): + r""" + An AdapterBlock is a helper model that contains multiple ResNet-like blocks. It is used in the `FullAdapter` and + `FullAdapterXL` models. + + Args: + in_channels (`int`): + Number of channels of AdapterBlock's input. + out_channels (`int`): + Number of channels of AdapterBlock's output. + num_res_blocks (`int`): + Number of ResNet blocks in the AdapterBlock. + down (`bool`, *optional*, defaults to `False`): + If `True`, perform downsampling on AdapterBlock's input. + """ + + def __init__(self, in_channels: int, out_channels: int, num_res_blocks: int, down: bool = False): + super().__init__() + + self.downsample = None + if down: + self.downsample = nn.AvgPool2d(kernel_size=2, stride=2, ceil_mode=True) + + self.in_conv = None + if in_channels != out_channels: + self.in_conv = nn.Conv2d(in_channels, out_channels, kernel_size=1) + + self.resnets = nn.Sequential( + *[AdapterResnetBlock(out_channels) for _ in range(num_res_blocks)], + ) + + def forward(self, x: torch.Tensor) -> torch.Tensor: + r""" + This method takes tensor x as input and performs operations downsampling and convolutional layers if the + self.downsample and self.in_conv properties of AdapterBlock model are specified. Then it applies a series of + residual blocks to the input tensor. + """ + if self.downsample is not None: + x = self.downsample(x) + + if self.in_conv is not None: + x = self.in_conv(x) + + x = self.resnets(x) + + return x + + +class AdapterResnetBlock(nn.Module): + r""" + An `AdapterResnetBlock` is a helper model that implements a ResNet-like block. + + Args: + channels (`int`): + Number of channels of AdapterResnetBlock's input and output. + """ + + def __init__(self, channels: int): + super().__init__() + self.block1 = nn.Conv2d(channels, channels, kernel_size=3, padding=1) + self.act = nn.ReLU() + self.block2 = nn.Conv2d(channels, channels, kernel_size=1) + + def forward(self, x: torch.Tensor) -> torch.Tensor: + r""" + This method takes input tensor x and applies a convolutional layer, ReLU activation, and another convolutional + layer on the input tensor. It returns addition with the input tensor. + """ + + h = self.act(self.block1(x)) + h = self.block2(h) + + return h + x + + +# light adapter + + +class LightAdapter(nn.Module): + r""" + See [`T2IAdapter`] for more information. + """ + + def __init__( + self, + in_channels: int = 3, + channels: List[int] = [320, 640, 1280], + num_res_blocks: int = 4, + downscale_factor: int = 8, + ): + super().__init__() + + in_channels = in_channels * downscale_factor**2 + + self.unshuffle = nn.PixelUnshuffle(downscale_factor) + + self.body = nn.ModuleList( + [ + LightAdapterBlock(in_channels, channels[0], num_res_blocks), + *[ + LightAdapterBlock(channels[i], channels[i + 1], num_res_blocks, down=True) + for i in range(len(channels) - 1) + ], + LightAdapterBlock(channels[-1], channels[-1], num_res_blocks, down=True), + ] + ) + + self.total_downscale_factor = downscale_factor * (2 ** len(channels)) + + def forward(self, x: torch.Tensor) -> List[torch.Tensor]: + r""" + This method takes the input tensor x and performs downscaling and appends it in list of feature tensors. Each + feature tensor corresponds to a different level of processing within the LightAdapter. + """ + x = self.unshuffle(x) + + features = [] + + for block in self.body: + x = block(x) + features.append(x) + + return features + + +class LightAdapterBlock(nn.Module): + r""" + A `LightAdapterBlock` is a helper model that contains multiple `LightAdapterResnetBlocks`. It is used in the + `LightAdapter` model. + + Args: + in_channels (`int`): + Number of channels of LightAdapterBlock's input. + out_channels (`int`): + Number of channels of LightAdapterBlock's output. + num_res_blocks (`int`): + Number of LightAdapterResnetBlocks in the LightAdapterBlock. + down (`bool`, *optional*, defaults to `False`): + If `True`, perform downsampling on LightAdapterBlock's input. + """ + + def __init__(self, in_channels: int, out_channels: int, num_res_blocks: int, down: bool = False): + super().__init__() + mid_channels = out_channels // 4 + + self.downsample = None + if down: + self.downsample = nn.AvgPool2d(kernel_size=2, stride=2, ceil_mode=True) + + self.in_conv = nn.Conv2d(in_channels, mid_channels, kernel_size=1) + self.resnets = nn.Sequential(*[LightAdapterResnetBlock(mid_channels) for _ in range(num_res_blocks)]) + self.out_conv = nn.Conv2d(mid_channels, out_channels, kernel_size=1) + + def forward(self, x: torch.Tensor) -> torch.Tensor: + r""" + This method takes tensor x as input and performs downsampling if required. Then it applies in convolution + layer, a sequence of residual blocks, and out convolutional layer. + """ + if self.downsample is not None: + x = self.downsample(x) + + x = self.in_conv(x) + x = self.resnets(x) + x = self.out_conv(x) + + return x + + +class LightAdapterResnetBlock(nn.Module): + """ + A `LightAdapterResnetBlock` is a helper model that implements a ResNet-like block with a slightly different + architecture than `AdapterResnetBlock`. + + Args: + channels (`int`): + Number of channels of LightAdapterResnetBlock's input and output. + """ + + def __init__(self, channels: int): + super().__init__() + self.block1 = nn.Conv2d(channels, channels, kernel_size=3, padding=1) + self.act = nn.ReLU() + self.block2 = nn.Conv2d(channels, channels, kernel_size=3, padding=1) + + def forward(self, x: torch.Tensor) -> torch.Tensor: + r""" + This function takes input tensor x and processes it through one convolutional layer, ReLU activation, and + another convolutional layer and adds it to input tensor. + """ + + h = self.act(self.block1(x)) + h = self.block2(h) + + return h + x diff --git a/venv/lib/python3.11/site-packages/diffusers/models/attention.py b/venv/lib/python3.11/site-packages/diffusers/models/attention.py new file mode 100644 index 0000000000000000000000000000000000000000..4d1dae879f11269a8fe20b02b3c21e0837f5710d --- /dev/null +++ b/venv/lib/python3.11/site-packages/diffusers/models/attention.py @@ -0,0 +1,1252 @@ +# Copyright 2024 The HuggingFace Team. All rights reserved. +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. +from typing import Any, Dict, List, Optional, Tuple + +import torch +import torch.nn.functional as F +from torch import nn + +from ..utils import deprecate, logging +from ..utils.torch_utils import maybe_allow_in_graph +from .activations import GEGLU, GELU, ApproximateGELU, FP32SiLU, LinearActivation, SwiGLU +from .attention_processor import Attention, JointAttnProcessor2_0 +from .embeddings import SinusoidalPositionalEmbedding +from .normalization import AdaLayerNorm, AdaLayerNormContinuous, AdaLayerNormZero, RMSNorm, SD35AdaLayerNormZeroX + + +logger = logging.get_logger(__name__) + + +def _chunked_feed_forward(ff: nn.Module, hidden_states: torch.Tensor, chunk_dim: int, chunk_size: int): + # "feed_forward_chunk_size" can be used to save memory + if hidden_states.shape[chunk_dim] % chunk_size != 0: + raise ValueError( + f"`hidden_states` dimension to be chunked: {hidden_states.shape[chunk_dim]} has to be divisible by chunk size: {chunk_size}. Make sure to set an appropriate `chunk_size` when calling `unet.enable_forward_chunking`." + ) + + num_chunks = hidden_states.shape[chunk_dim] // chunk_size + ff_output = torch.cat( + [ff(hid_slice) for hid_slice in hidden_states.chunk(num_chunks, dim=chunk_dim)], + dim=chunk_dim, + ) + return ff_output + + +@maybe_allow_in_graph +class GatedSelfAttentionDense(nn.Module): + r""" + A gated self-attention dense layer that combines visual features and object features. + + Parameters: + query_dim (`int`): The number of channels in the query. + context_dim (`int`): The number of channels in the context. + n_heads (`int`): The number of heads to use for attention. + d_head (`int`): The number of channels in each head. + """ + + def __init__(self, query_dim: int, context_dim: int, n_heads: int, d_head: int): + super().__init__() + + # we need a linear projection since we need cat visual feature and obj feature + self.linear = nn.Linear(context_dim, query_dim) + + self.attn = Attention(query_dim=query_dim, heads=n_heads, dim_head=d_head) + self.ff = FeedForward(query_dim, activation_fn="geglu") + + self.norm1 = nn.LayerNorm(query_dim) + self.norm2 = nn.LayerNorm(query_dim) + + self.register_parameter("alpha_attn", nn.Parameter(torch.tensor(0.0))) + self.register_parameter("alpha_dense", nn.Parameter(torch.tensor(0.0))) + + self.enabled = True + + def forward(self, x: torch.Tensor, objs: torch.Tensor) -> torch.Tensor: + if not self.enabled: + return x + + n_visual = x.shape[1] + objs = self.linear(objs) + + x = x + self.alpha_attn.tanh() * self.attn(self.norm1(torch.cat([x, objs], dim=1)))[:, :n_visual, :] + x = x + self.alpha_dense.tanh() * self.ff(self.norm2(x)) + + return x + + +@maybe_allow_in_graph +class JointTransformerBlock(nn.Module): + r""" + A Transformer block following the MMDiT architecture, introduced in Stable Diffusion 3. + + Reference: https://arxiv.org/abs/2403.03206 + + Parameters: + dim (`int`): The number of channels in the input and output. + num_attention_heads (`int`): The number of heads to use for multi-head attention. + attention_head_dim (`int`): The number of channels in each head. + context_pre_only (`bool`): Boolean to determine if we should add some blocks associated with the + processing of `context` conditions. + """ + + def __init__( + self, + dim: int, + num_attention_heads: int, + attention_head_dim: int, + context_pre_only: bool = False, + qk_norm: Optional[str] = None, + use_dual_attention: bool = False, + ): + super().__init__() + + self.use_dual_attention = use_dual_attention + self.context_pre_only = context_pre_only + context_norm_type = "ada_norm_continous" if context_pre_only else "ada_norm_zero" + + if use_dual_attention: + self.norm1 = SD35AdaLayerNormZeroX(dim) + else: + self.norm1 = AdaLayerNormZero(dim) + + if context_norm_type == "ada_norm_continous": + self.norm1_context = AdaLayerNormContinuous( + dim, dim, elementwise_affine=False, eps=1e-6, bias=True, norm_type="layer_norm" + ) + elif context_norm_type == "ada_norm_zero": + self.norm1_context = AdaLayerNormZero(dim) + else: + raise ValueError( + f"Unknown context_norm_type: {context_norm_type}, currently only support `ada_norm_continous`, `ada_norm_zero`" + ) + + if hasattr(F, "scaled_dot_product_attention"): + processor = JointAttnProcessor2_0() + else: + raise ValueError( + "The current PyTorch version does not support the `scaled_dot_product_attention` function." + ) + + self.attn = Attention( + query_dim=dim, + cross_attention_dim=None, + added_kv_proj_dim=dim, + dim_head=attention_head_dim, + heads=num_attention_heads, + out_dim=dim, + context_pre_only=context_pre_only, + bias=True, + processor=processor, + qk_norm=qk_norm, + eps=1e-6, + ) + + if use_dual_attention: + self.attn2 = Attention( + query_dim=dim, + cross_attention_dim=None, + dim_head=attention_head_dim, + heads=num_attention_heads, + out_dim=dim, + bias=True, + processor=processor, + qk_norm=qk_norm, + eps=1e-6, + ) + else: + self.attn2 = None + + self.norm2 = nn.LayerNorm(dim, elementwise_affine=False, eps=1e-6) + self.ff = FeedForward(dim=dim, dim_out=dim, activation_fn="gelu-approximate") + + if not context_pre_only: + self.norm2_context = nn.LayerNorm(dim, elementwise_affine=False, eps=1e-6) + self.ff_context = FeedForward(dim=dim, dim_out=dim, activation_fn="gelu-approximate") + else: + self.norm2_context = None + self.ff_context = None + + # let chunk size default to None + self._chunk_size = None + self._chunk_dim = 0 + + # Copied from diffusers.models.attention.BasicTransformerBlock.set_chunk_feed_forward + def set_chunk_feed_forward(self, chunk_size: Optional[int], dim: int = 0): + # Sets chunk feed-forward + self._chunk_size = chunk_size + self._chunk_dim = dim + + def forward( + self, + hidden_states: torch.FloatTensor, + encoder_hidden_states: torch.FloatTensor, + temb: torch.FloatTensor, + joint_attention_kwargs: Optional[Dict[str, Any]] = None, + ): + joint_attention_kwargs = joint_attention_kwargs or {} + if self.use_dual_attention: + norm_hidden_states, gate_msa, shift_mlp, scale_mlp, gate_mlp, norm_hidden_states2, gate_msa2 = self.norm1( + hidden_states, emb=temb + ) + else: + norm_hidden_states, gate_msa, shift_mlp, scale_mlp, gate_mlp = self.norm1(hidden_states, emb=temb) + + if self.context_pre_only: + norm_encoder_hidden_states = self.norm1_context(encoder_hidden_states, temb) + else: + norm_encoder_hidden_states, c_gate_msa, c_shift_mlp, c_scale_mlp, c_gate_mlp = self.norm1_context( + encoder_hidden_states, emb=temb + ) + + # Attention. + attn_output, context_attn_output = self.attn( + hidden_states=norm_hidden_states, + encoder_hidden_states=norm_encoder_hidden_states, + **joint_attention_kwargs, + ) + + # Process attention outputs for the `hidden_states`. + attn_output = gate_msa.unsqueeze(1) * attn_output + hidden_states = hidden_states + attn_output + + if self.use_dual_attention: + attn_output2 = self.attn2(hidden_states=norm_hidden_states2, **joint_attention_kwargs) + attn_output2 = gate_msa2.unsqueeze(1) * attn_output2 + hidden_states = hidden_states + attn_output2 + + norm_hidden_states = self.norm2(hidden_states) + norm_hidden_states = norm_hidden_states * (1 + scale_mlp[:, None]) + shift_mlp[:, None] + if self._chunk_size is not None: + # "feed_forward_chunk_size" can be used to save memory + ff_output = _chunked_feed_forward(self.ff, norm_hidden_states, self._chunk_dim, self._chunk_size) + else: + ff_output = self.ff(norm_hidden_states) + ff_output = gate_mlp.unsqueeze(1) * ff_output + + hidden_states = hidden_states + ff_output + + # Process attention outputs for the `encoder_hidden_states`. + if self.context_pre_only: + encoder_hidden_states = None + else: + context_attn_output = c_gate_msa.unsqueeze(1) * context_attn_output + encoder_hidden_states = encoder_hidden_states + context_attn_output + + norm_encoder_hidden_states = self.norm2_context(encoder_hidden_states) + norm_encoder_hidden_states = norm_encoder_hidden_states * (1 + c_scale_mlp[:, None]) + c_shift_mlp[:, None] + if self._chunk_size is not None: + # "feed_forward_chunk_size" can be used to save memory + context_ff_output = _chunked_feed_forward( + self.ff_context, norm_encoder_hidden_states, self._chunk_dim, self._chunk_size + ) + else: + context_ff_output = self.ff_context(norm_encoder_hidden_states) + encoder_hidden_states = encoder_hidden_states + c_gate_mlp.unsqueeze(1) * context_ff_output + + return encoder_hidden_states, hidden_states + + +@maybe_allow_in_graph +class BasicTransformerBlock(nn.Module): + r""" + A basic Transformer block. + + Parameters: + dim (`int`): The number of channels in the input and output. + num_attention_heads (`int`): The number of heads to use for multi-head attention. + attention_head_dim (`int`): The number of channels in each head. + dropout (`float`, *optional*, defaults to 0.0): The dropout probability to use. + cross_attention_dim (`int`, *optional*): The size of the encoder_hidden_states vector for cross attention. + activation_fn (`str`, *optional*, defaults to `"geglu"`): Activation function to be used in feed-forward. + num_embeds_ada_norm (: + obj: `int`, *optional*): The number of diffusion steps used during training. See `Transformer2DModel`. + attention_bias (: + obj: `bool`, *optional*, defaults to `False`): Configure if the attentions should contain a bias parameter. + only_cross_attention (`bool`, *optional*): + Whether to use only cross-attention layers. In this case two cross attention layers are used. + double_self_attention (`bool`, *optional*): + Whether to use two self-attention layers. In this case no cross attention layers are used. + upcast_attention (`bool`, *optional*): + Whether to upcast the attention computation to float32. This is useful for mixed precision training. + norm_elementwise_affine (`bool`, *optional*, defaults to `True`): + Whether to use learnable elementwise affine parameters for normalization. + norm_type (`str`, *optional*, defaults to `"layer_norm"`): + The normalization layer to use. Can be `"layer_norm"`, `"ada_norm"` or `"ada_norm_zero"`. + final_dropout (`bool` *optional*, defaults to False): + Whether to apply a final dropout after the last feed-forward layer. + attention_type (`str`, *optional*, defaults to `"default"`): + The type of attention to use. Can be `"default"` or `"gated"` or `"gated-text-image"`. + positional_embeddings (`str`, *optional*, defaults to `None`): + The type of positional embeddings to apply to. + num_positional_embeddings (`int`, *optional*, defaults to `None`): + The maximum number of positional embeddings to apply. + """ + + def __init__( + self, + dim: int, + num_attention_heads: int, + attention_head_dim: int, + dropout=0.0, + cross_attention_dim: Optional[int] = None, + activation_fn: str = "geglu", + num_embeds_ada_norm: Optional[int] = None, + attention_bias: bool = False, + only_cross_attention: bool = False, + double_self_attention: bool = False, + upcast_attention: bool = False, + norm_elementwise_affine: bool = True, + norm_type: str = "layer_norm", # 'layer_norm', 'ada_norm', 'ada_norm_zero', 'ada_norm_single', 'ada_norm_continuous', 'layer_norm_i2vgen' + norm_eps: float = 1e-5, + final_dropout: bool = False, + attention_type: str = "default", + positional_embeddings: Optional[str] = None, + num_positional_embeddings: Optional[int] = None, + ada_norm_continous_conditioning_embedding_dim: Optional[int] = None, + ada_norm_bias: Optional[int] = None, + ff_inner_dim: Optional[int] = None, + ff_bias: bool = True, + attention_out_bias: bool = True, + ): + super().__init__() + self.dim = dim + self.num_attention_heads = num_attention_heads + self.attention_head_dim = attention_head_dim + self.dropout = dropout + self.cross_attention_dim = cross_attention_dim + self.activation_fn = activation_fn + self.attention_bias = attention_bias + self.double_self_attention = double_self_attention + self.norm_elementwise_affine = norm_elementwise_affine + self.positional_embeddings = positional_embeddings + self.num_positional_embeddings = num_positional_embeddings + self.only_cross_attention = only_cross_attention + + # We keep these boolean flags for backward-compatibility. + self.use_ada_layer_norm_zero = (num_embeds_ada_norm is not None) and norm_type == "ada_norm_zero" + self.use_ada_layer_norm = (num_embeds_ada_norm is not None) and norm_type == "ada_norm" + self.use_ada_layer_norm_single = norm_type == "ada_norm_single" + self.use_layer_norm = norm_type == "layer_norm" + self.use_ada_layer_norm_continuous = norm_type == "ada_norm_continuous" + + if norm_type in ("ada_norm", "ada_norm_zero") and num_embeds_ada_norm is None: + raise ValueError( + f"`norm_type` is set to {norm_type}, but `num_embeds_ada_norm` is not defined. Please make sure to" + f" define `num_embeds_ada_norm` if setting `norm_type` to {norm_type}." + ) + + self.norm_type = norm_type + self.num_embeds_ada_norm = num_embeds_ada_norm + + if positional_embeddings and (num_positional_embeddings is None): + raise ValueError( + "If `positional_embedding` type is defined, `num_positition_embeddings` must also be defined." + ) + + if positional_embeddings == "sinusoidal": + self.pos_embed = SinusoidalPositionalEmbedding(dim, max_seq_length=num_positional_embeddings) + else: + self.pos_embed = None + + # Define 3 blocks. Each block has its own normalization layer. + # 1. Self-Attn + if norm_type == "ada_norm": + self.norm1 = AdaLayerNorm(dim, num_embeds_ada_norm) + elif norm_type == "ada_norm_zero": + self.norm1 = AdaLayerNormZero(dim, num_embeds_ada_norm) + elif norm_type == "ada_norm_continuous": + self.norm1 = AdaLayerNormContinuous( + dim, + ada_norm_continous_conditioning_embedding_dim, + norm_elementwise_affine, + norm_eps, + ada_norm_bias, + "rms_norm", + ) + else: + self.norm1 = nn.LayerNorm(dim, elementwise_affine=norm_elementwise_affine, eps=norm_eps) + + self.attn1 = Attention( + query_dim=dim, + heads=num_attention_heads, + dim_head=attention_head_dim, + dropout=dropout, + bias=attention_bias, + cross_attention_dim=cross_attention_dim if only_cross_attention else None, + upcast_attention=upcast_attention, + out_bias=attention_out_bias, + ) + + # 2. Cross-Attn + if cross_attention_dim is not None or double_self_attention: + # We currently only use AdaLayerNormZero for self attention where there will only be one attention block. + # I.e. the number of returned modulation chunks from AdaLayerZero would not make sense if returned during + # the second cross attention block. + if norm_type == "ada_norm": + self.norm2 = AdaLayerNorm(dim, num_embeds_ada_norm) + elif norm_type == "ada_norm_continuous": + self.norm2 = AdaLayerNormContinuous( + dim, + ada_norm_continous_conditioning_embedding_dim, + norm_elementwise_affine, + norm_eps, + ada_norm_bias, + "rms_norm", + ) + else: + self.norm2 = nn.LayerNorm(dim, norm_eps, norm_elementwise_affine) + + self.attn2 = Attention( + query_dim=dim, + cross_attention_dim=cross_attention_dim if not double_self_attention else None, + heads=num_attention_heads, + dim_head=attention_head_dim, + dropout=dropout, + bias=attention_bias, + upcast_attention=upcast_attention, + out_bias=attention_out_bias, + ) # is self-attn if encoder_hidden_states is none + else: + if norm_type == "ada_norm_single": # For Latte + self.norm2 = nn.LayerNorm(dim, norm_eps, norm_elementwise_affine) + else: + self.norm2 = None + self.attn2 = None + + # 3. Feed-forward + if norm_type == "ada_norm_continuous": + self.norm3 = AdaLayerNormContinuous( + dim, + ada_norm_continous_conditioning_embedding_dim, + norm_elementwise_affine, + norm_eps, + ada_norm_bias, + "layer_norm", + ) + + elif norm_type in ["ada_norm_zero", "ada_norm", "layer_norm"]: + self.norm3 = nn.LayerNorm(dim, norm_eps, norm_elementwise_affine) + elif norm_type == "layer_norm_i2vgen": + self.norm3 = None + + self.ff = FeedForward( + dim, + dropout=dropout, + activation_fn=activation_fn, + final_dropout=final_dropout, + inner_dim=ff_inner_dim, + bias=ff_bias, + ) + + # 4. Fuser + if attention_type == "gated" or attention_type == "gated-text-image": + self.fuser = GatedSelfAttentionDense(dim, cross_attention_dim, num_attention_heads, attention_head_dim) + + # 5. Scale-shift for PixArt-Alpha. + if norm_type == "ada_norm_single": + self.scale_shift_table = nn.Parameter(torch.randn(6, dim) / dim**0.5) + + # let chunk size default to None + self._chunk_size = None + self._chunk_dim = 0 + + def set_chunk_feed_forward(self, chunk_size: Optional[int], dim: int = 0): + # Sets chunk feed-forward + self._chunk_size = chunk_size + self._chunk_dim = dim + + def forward( + self, + hidden_states: torch.Tensor, + attention_mask: Optional[torch.Tensor] = None, + encoder_hidden_states: Optional[torch.Tensor] = None, + encoder_attention_mask: Optional[torch.Tensor] = None, + timestep: Optional[torch.LongTensor] = None, + cross_attention_kwargs: Dict[str, Any] = None, + class_labels: Optional[torch.LongTensor] = None, + added_cond_kwargs: Optional[Dict[str, torch.Tensor]] = None, + ) -> torch.Tensor: + if cross_attention_kwargs is not None: + if cross_attention_kwargs.get("scale", None) is not None: + logger.warning("Passing `scale` to `cross_attention_kwargs` is deprecated. `scale` will be ignored.") + + # Notice that normalization is always applied before the real computation in the following blocks. + # 0. Self-Attention + batch_size = hidden_states.shape[0] + + if self.norm_type == "ada_norm": + norm_hidden_states = self.norm1(hidden_states, timestep) + elif self.norm_type == "ada_norm_zero": + norm_hidden_states, gate_msa, shift_mlp, scale_mlp, gate_mlp = self.norm1( + hidden_states, timestep, class_labels, hidden_dtype=hidden_states.dtype + ) + elif self.norm_type in ["layer_norm", "layer_norm_i2vgen"]: + norm_hidden_states = self.norm1(hidden_states) + elif self.norm_type == "ada_norm_continuous": + norm_hidden_states = self.norm1(hidden_states, added_cond_kwargs["pooled_text_emb"]) + elif self.norm_type == "ada_norm_single": + shift_msa, scale_msa, gate_msa, shift_mlp, scale_mlp, gate_mlp = ( + self.scale_shift_table[None] + timestep.reshape(batch_size, 6, -1) + ).chunk(6, dim=1) + norm_hidden_states = self.norm1(hidden_states) + norm_hidden_states = norm_hidden_states * (1 + scale_msa) + shift_msa + else: + raise ValueError("Incorrect norm used") + + if self.pos_embed is not None: + norm_hidden_states = self.pos_embed(norm_hidden_states) + + # 1. Prepare GLIGEN inputs + cross_attention_kwargs = cross_attention_kwargs.copy() if cross_attention_kwargs is not None else {} + gligen_kwargs = cross_attention_kwargs.pop("gligen", None) + + attn_output = self.attn1( + norm_hidden_states, + encoder_hidden_states=encoder_hidden_states if self.only_cross_attention else None, + attention_mask=attention_mask, + **cross_attention_kwargs, + ) + + if self.norm_type == "ada_norm_zero": + attn_output = gate_msa.unsqueeze(1) * attn_output + elif self.norm_type == "ada_norm_single": + attn_output = gate_msa * attn_output + + hidden_states = attn_output + hidden_states + if hidden_states.ndim == 4: + hidden_states = hidden_states.squeeze(1) + + # 1.2 GLIGEN Control + if gligen_kwargs is not None: + hidden_states = self.fuser(hidden_states, gligen_kwargs["objs"]) + + # 3. Cross-Attention + if self.attn2 is not None: + if self.norm_type == "ada_norm": + norm_hidden_states = self.norm2(hidden_states, timestep) + elif self.norm_type in ["ada_norm_zero", "layer_norm", "layer_norm_i2vgen"]: + norm_hidden_states = self.norm2(hidden_states) + elif self.norm_type == "ada_norm_single": + # For PixArt norm2 isn't applied here: + # https://github.com/PixArt-alpha/PixArt-alpha/blob/0f55e922376d8b797edd44d25d0e7464b260dcab/diffusion/model/nets/PixArtMS.py#L70C1-L76C103 + norm_hidden_states = hidden_states + elif self.norm_type == "ada_norm_continuous": + norm_hidden_states = self.norm2(hidden_states, added_cond_kwargs["pooled_text_emb"]) + else: + raise ValueError("Incorrect norm") + + if self.pos_embed is not None and self.norm_type != "ada_norm_single": + norm_hidden_states = self.pos_embed(norm_hidden_states) + + attn_output = self.attn2( + norm_hidden_states, + encoder_hidden_states=encoder_hidden_states, + attention_mask=encoder_attention_mask, + **cross_attention_kwargs, + ) + hidden_states = attn_output + hidden_states + + # 4. Feed-forward + # i2vgen doesn't have this norm 🤷‍♂️ + if self.norm_type == "ada_norm_continuous": + norm_hidden_states = self.norm3(hidden_states, added_cond_kwargs["pooled_text_emb"]) + elif not self.norm_type == "ada_norm_single": + norm_hidden_states = self.norm3(hidden_states) + + if self.norm_type == "ada_norm_zero": + norm_hidden_states = norm_hidden_states * (1 + scale_mlp[:, None]) + shift_mlp[:, None] + + if self.norm_type == "ada_norm_single": + norm_hidden_states = self.norm2(hidden_states) + norm_hidden_states = norm_hidden_states * (1 + scale_mlp) + shift_mlp + + if self._chunk_size is not None: + # "feed_forward_chunk_size" can be used to save memory + ff_output = _chunked_feed_forward(self.ff, norm_hidden_states, self._chunk_dim, self._chunk_size) + else: + ff_output = self.ff(norm_hidden_states) + + if self.norm_type == "ada_norm_zero": + ff_output = gate_mlp.unsqueeze(1) * ff_output + elif self.norm_type == "ada_norm_single": + ff_output = gate_mlp * ff_output + + hidden_states = ff_output + hidden_states + if hidden_states.ndim == 4: + hidden_states = hidden_states.squeeze(1) + + return hidden_states + + +class LuminaFeedForward(nn.Module): + r""" + A feed-forward layer. + + Parameters: + hidden_size (`int`): + The dimensionality of the hidden layers in the model. This parameter determines the width of the model's + hidden representations. + intermediate_size (`int`): The intermediate dimension of the feedforward layer. + multiple_of (`int`, *optional*): Value to ensure hidden dimension is a multiple + of this value. + ffn_dim_multiplier (float, *optional*): Custom multiplier for hidden + dimension. Defaults to None. + """ + + def __init__( + self, + dim: int, + inner_dim: int, + multiple_of: Optional[int] = 256, + ffn_dim_multiplier: Optional[float] = None, + ): + super().__init__() + inner_dim = int(2 * inner_dim / 3) + # custom hidden_size factor multiplier + if ffn_dim_multiplier is not None: + inner_dim = int(ffn_dim_multiplier * inner_dim) + inner_dim = multiple_of * ((inner_dim + multiple_of - 1) // multiple_of) + + self.linear_1 = nn.Linear( + dim, + inner_dim, + bias=False, + ) + self.linear_2 = nn.Linear( + inner_dim, + dim, + bias=False, + ) + self.linear_3 = nn.Linear( + dim, + inner_dim, + bias=False, + ) + self.silu = FP32SiLU() + + def forward(self, x): + return self.linear_2(self.silu(self.linear_1(x)) * self.linear_3(x)) + + +@maybe_allow_in_graph +class TemporalBasicTransformerBlock(nn.Module): + r""" + A basic Transformer block for video like data. + + Parameters: + dim (`int`): The number of channels in the input and output. + time_mix_inner_dim (`int`): The number of channels for temporal attention. + num_attention_heads (`int`): The number of heads to use for multi-head attention. + attention_head_dim (`int`): The number of channels in each head. + cross_attention_dim (`int`, *optional*): The size of the encoder_hidden_states vector for cross attention. + """ + + def __init__( + self, + dim: int, + time_mix_inner_dim: int, + num_attention_heads: int, + attention_head_dim: int, + cross_attention_dim: Optional[int] = None, + ): + super().__init__() + self.is_res = dim == time_mix_inner_dim + + self.norm_in = nn.LayerNorm(dim) + + # Define 3 blocks. Each block has its own normalization layer. + # 1. Self-Attn + self.ff_in = FeedForward( + dim, + dim_out=time_mix_inner_dim, + activation_fn="geglu", + ) + + self.norm1 = nn.LayerNorm(time_mix_inner_dim) + self.attn1 = Attention( + query_dim=time_mix_inner_dim, + heads=num_attention_heads, + dim_head=attention_head_dim, + cross_attention_dim=None, + ) + + # 2. Cross-Attn + if cross_attention_dim is not None: + # We currently only use AdaLayerNormZero for self attention where there will only be one attention block. + # I.e. the number of returned modulation chunks from AdaLayerZero would not make sense if returned during + # the second cross attention block. + self.norm2 = nn.LayerNorm(time_mix_inner_dim) + self.attn2 = Attention( + query_dim=time_mix_inner_dim, + cross_attention_dim=cross_attention_dim, + heads=num_attention_heads, + dim_head=attention_head_dim, + ) # is self-attn if encoder_hidden_states is none + else: + self.norm2 = None + self.attn2 = None + + # 3. Feed-forward + self.norm3 = nn.LayerNorm(time_mix_inner_dim) + self.ff = FeedForward(time_mix_inner_dim, activation_fn="geglu") + + # let chunk size default to None + self._chunk_size = None + self._chunk_dim = None + + def set_chunk_feed_forward(self, chunk_size: Optional[int], **kwargs): + # Sets chunk feed-forward + self._chunk_size = chunk_size + # chunk dim should be hardcoded to 1 to have better speed vs. memory trade-off + self._chunk_dim = 1 + + def forward( + self, + hidden_states: torch.Tensor, + num_frames: int, + encoder_hidden_states: Optional[torch.Tensor] = None, + ) -> torch.Tensor: + # Notice that normalization is always applied before the real computation in the following blocks. + # 0. Self-Attention + batch_size = hidden_states.shape[0] + + batch_frames, seq_length, channels = hidden_states.shape + batch_size = batch_frames // num_frames + + hidden_states = hidden_states[None, :].reshape(batch_size, num_frames, seq_length, channels) + hidden_states = hidden_states.permute(0, 2, 1, 3) + hidden_states = hidden_states.reshape(batch_size * seq_length, num_frames, channels) + + residual = hidden_states + hidden_states = self.norm_in(hidden_states) + + if self._chunk_size is not None: + hidden_states = _chunked_feed_forward(self.ff_in, hidden_states, self._chunk_dim, self._chunk_size) + else: + hidden_states = self.ff_in(hidden_states) + + if self.is_res: + hidden_states = hidden_states + residual + + norm_hidden_states = self.norm1(hidden_states) + attn_output = self.attn1(norm_hidden_states, encoder_hidden_states=None) + hidden_states = attn_output + hidden_states + + # 3. Cross-Attention + if self.attn2 is not None: + norm_hidden_states = self.norm2(hidden_states) + attn_output = self.attn2(norm_hidden_states, encoder_hidden_states=encoder_hidden_states) + hidden_states = attn_output + hidden_states + + # 4. Feed-forward + norm_hidden_states = self.norm3(hidden_states) + + if self._chunk_size is not None: + ff_output = _chunked_feed_forward(self.ff, norm_hidden_states, self._chunk_dim, self._chunk_size) + else: + ff_output = self.ff(norm_hidden_states) + + if self.is_res: + hidden_states = ff_output + hidden_states + else: + hidden_states = ff_output + + hidden_states = hidden_states[None, :].reshape(batch_size, seq_length, num_frames, channels) + hidden_states = hidden_states.permute(0, 2, 1, 3) + hidden_states = hidden_states.reshape(batch_size * num_frames, seq_length, channels) + + return hidden_states + + +class SkipFFTransformerBlock(nn.Module): + def __init__( + self, + dim: int, + num_attention_heads: int, + attention_head_dim: int, + kv_input_dim: int, + kv_input_dim_proj_use_bias: bool, + dropout=0.0, + cross_attention_dim: Optional[int] = None, + attention_bias: bool = False, + attention_out_bias: bool = True, + ): + super().__init__() + if kv_input_dim != dim: + self.kv_mapper = nn.Linear(kv_input_dim, dim, kv_input_dim_proj_use_bias) + else: + self.kv_mapper = None + + self.norm1 = RMSNorm(dim, 1e-06) + + self.attn1 = Attention( + query_dim=dim, + heads=num_attention_heads, + dim_head=attention_head_dim, + dropout=dropout, + bias=attention_bias, + cross_attention_dim=cross_attention_dim, + out_bias=attention_out_bias, + ) + + self.norm2 = RMSNorm(dim, 1e-06) + + self.attn2 = Attention( + query_dim=dim, + cross_attention_dim=cross_attention_dim, + heads=num_attention_heads, + dim_head=attention_head_dim, + dropout=dropout, + bias=attention_bias, + out_bias=attention_out_bias, + ) + + def forward(self, hidden_states, encoder_hidden_states, cross_attention_kwargs): + cross_attention_kwargs = cross_attention_kwargs.copy() if cross_attention_kwargs is not None else {} + + if self.kv_mapper is not None: + encoder_hidden_states = self.kv_mapper(F.silu(encoder_hidden_states)) + + norm_hidden_states = self.norm1(hidden_states) + + attn_output = self.attn1( + norm_hidden_states, + encoder_hidden_states=encoder_hidden_states, + **cross_attention_kwargs, + ) + + hidden_states = attn_output + hidden_states + + norm_hidden_states = self.norm2(hidden_states) + + attn_output = self.attn2( + norm_hidden_states, + encoder_hidden_states=encoder_hidden_states, + **cross_attention_kwargs, + ) + + hidden_states = attn_output + hidden_states + + return hidden_states + + +@maybe_allow_in_graph +class FreeNoiseTransformerBlock(nn.Module): + r""" + A FreeNoise Transformer block. + + Parameters: + dim (`int`): + The number of channels in the input and output. + num_attention_heads (`int`): + The number of heads to use for multi-head attention. + attention_head_dim (`int`): + The number of channels in each head. + dropout (`float`, *optional*, defaults to 0.0): + The dropout probability to use. + cross_attention_dim (`int`, *optional*): + The size of the encoder_hidden_states vector for cross attention. + activation_fn (`str`, *optional*, defaults to `"geglu"`): + Activation function to be used in feed-forward. + num_embeds_ada_norm (`int`, *optional*): + The number of diffusion steps used during training. See `Transformer2DModel`. + attention_bias (`bool`, defaults to `False`): + Configure if the attentions should contain a bias parameter. + only_cross_attention (`bool`, defaults to `False`): + Whether to use only cross-attention layers. In this case two cross attention layers are used. + double_self_attention (`bool`, defaults to `False`): + Whether to use two self-attention layers. In this case no cross attention layers are used. + upcast_attention (`bool`, defaults to `False`): + Whether to upcast the attention computation to float32. This is useful for mixed precision training. + norm_elementwise_affine (`bool`, defaults to `True`): + Whether to use learnable elementwise affine parameters for normalization. + norm_type (`str`, defaults to `"layer_norm"`): + The normalization layer to use. Can be `"layer_norm"`, `"ada_norm"` or `"ada_norm_zero"`. + final_dropout (`bool` defaults to `False`): + Whether to apply a final dropout after the last feed-forward layer. + attention_type (`str`, defaults to `"default"`): + The type of attention to use. Can be `"default"` or `"gated"` or `"gated-text-image"`. + positional_embeddings (`str`, *optional*): + The type of positional embeddings to apply to. + num_positional_embeddings (`int`, *optional*, defaults to `None`): + The maximum number of positional embeddings to apply. + ff_inner_dim (`int`, *optional*): + Hidden dimension of feed-forward MLP. + ff_bias (`bool`, defaults to `True`): + Whether or not to use bias in feed-forward MLP. + attention_out_bias (`bool`, defaults to `True`): + Whether or not to use bias in attention output project layer. + context_length (`int`, defaults to `16`): + The maximum number of frames that the FreeNoise block processes at once. + context_stride (`int`, defaults to `4`): + The number of frames to be skipped before starting to process a new batch of `context_length` frames. + weighting_scheme (`str`, defaults to `"pyramid"`): + The weighting scheme to use for weighting averaging of processed latent frames. As described in the + Equation 9. of the [FreeNoise](https://arxiv.org/abs/2310.15169) paper, "pyramid" is the default setting + used. + """ + + def __init__( + self, + dim: int, + num_attention_heads: int, + attention_head_dim: int, + dropout: float = 0.0, + cross_attention_dim: Optional[int] = None, + activation_fn: str = "geglu", + num_embeds_ada_norm: Optional[int] = None, + attention_bias: bool = False, + only_cross_attention: bool = False, + double_self_attention: bool = False, + upcast_attention: bool = False, + norm_elementwise_affine: bool = True, + norm_type: str = "layer_norm", + norm_eps: float = 1e-5, + final_dropout: bool = False, + positional_embeddings: Optional[str] = None, + num_positional_embeddings: Optional[int] = None, + ff_inner_dim: Optional[int] = None, + ff_bias: bool = True, + attention_out_bias: bool = True, + context_length: int = 16, + context_stride: int = 4, + weighting_scheme: str = "pyramid", + ): + super().__init__() + self.dim = dim + self.num_attention_heads = num_attention_heads + self.attention_head_dim = attention_head_dim + self.dropout = dropout + self.cross_attention_dim = cross_attention_dim + self.activation_fn = activation_fn + self.attention_bias = attention_bias + self.double_self_attention = double_self_attention + self.norm_elementwise_affine = norm_elementwise_affine + self.positional_embeddings = positional_embeddings + self.num_positional_embeddings = num_positional_embeddings + self.only_cross_attention = only_cross_attention + + self.set_free_noise_properties(context_length, context_stride, weighting_scheme) + + # We keep these boolean flags for backward-compatibility. + self.use_ada_layer_norm_zero = (num_embeds_ada_norm is not None) and norm_type == "ada_norm_zero" + self.use_ada_layer_norm = (num_embeds_ada_norm is not None) and norm_type == "ada_norm" + self.use_ada_layer_norm_single = norm_type == "ada_norm_single" + self.use_layer_norm = norm_type == "layer_norm" + self.use_ada_layer_norm_continuous = norm_type == "ada_norm_continuous" + + if norm_type in ("ada_norm", "ada_norm_zero") and num_embeds_ada_norm is None: + raise ValueError( + f"`norm_type` is set to {norm_type}, but `num_embeds_ada_norm` is not defined. Please make sure to" + f" define `num_embeds_ada_norm` if setting `norm_type` to {norm_type}." + ) + + self.norm_type = norm_type + self.num_embeds_ada_norm = num_embeds_ada_norm + + if positional_embeddings and (num_positional_embeddings is None): + raise ValueError( + "If `positional_embedding` type is defined, `num_positition_embeddings` must also be defined." + ) + + if positional_embeddings == "sinusoidal": + self.pos_embed = SinusoidalPositionalEmbedding(dim, max_seq_length=num_positional_embeddings) + else: + self.pos_embed = None + + # Define 3 blocks. Each block has its own normalization layer. + # 1. Self-Attn + self.norm1 = nn.LayerNorm(dim, elementwise_affine=norm_elementwise_affine, eps=norm_eps) + + self.attn1 = Attention( + query_dim=dim, + heads=num_attention_heads, + dim_head=attention_head_dim, + dropout=dropout, + bias=attention_bias, + cross_attention_dim=cross_attention_dim if only_cross_attention else None, + upcast_attention=upcast_attention, + out_bias=attention_out_bias, + ) + + # 2. Cross-Attn + if cross_attention_dim is not None or double_self_attention: + self.norm2 = nn.LayerNorm(dim, norm_eps, norm_elementwise_affine) + + self.attn2 = Attention( + query_dim=dim, + cross_attention_dim=cross_attention_dim if not double_self_attention else None, + heads=num_attention_heads, + dim_head=attention_head_dim, + dropout=dropout, + bias=attention_bias, + upcast_attention=upcast_attention, + out_bias=attention_out_bias, + ) # is self-attn if encoder_hidden_states is none + + # 3. Feed-forward + self.ff = FeedForward( + dim, + dropout=dropout, + activation_fn=activation_fn, + final_dropout=final_dropout, + inner_dim=ff_inner_dim, + bias=ff_bias, + ) + + self.norm3 = nn.LayerNorm(dim, norm_eps, norm_elementwise_affine) + + # let chunk size default to None + self._chunk_size = None + self._chunk_dim = 0 + + def _get_frame_indices(self, num_frames: int) -> List[Tuple[int, int]]: + frame_indices = [] + for i in range(0, num_frames - self.context_length + 1, self.context_stride): + window_start = i + window_end = min(num_frames, i + self.context_length) + frame_indices.append((window_start, window_end)) + return frame_indices + + def _get_frame_weights(self, num_frames: int, weighting_scheme: str = "pyramid") -> List[float]: + if weighting_scheme == "flat": + weights = [1.0] * num_frames + + elif weighting_scheme == "pyramid": + if num_frames % 2 == 0: + # num_frames = 4 => [1, 2, 2, 1] + mid = num_frames // 2 + weights = list(range(1, mid + 1)) + weights = weights + weights[::-1] + else: + # num_frames = 5 => [1, 2, 3, 2, 1] + mid = (num_frames + 1) // 2 + weights = list(range(1, mid)) + weights = weights + [mid] + weights[::-1] + + elif weighting_scheme == "delayed_reverse_sawtooth": + if num_frames % 2 == 0: + # num_frames = 4 => [0.01, 2, 2, 1] + mid = num_frames // 2 + weights = [0.01] * (mid - 1) + [mid] + weights = weights + list(range(mid, 0, -1)) + else: + # num_frames = 5 => [0.01, 0.01, 3, 2, 1] + mid = (num_frames + 1) // 2 + weights = [0.01] * mid + weights = weights + list(range(mid, 0, -1)) + else: + raise ValueError(f"Unsupported value for weighting_scheme={weighting_scheme}") + + return weights + + def set_free_noise_properties( + self, context_length: int, context_stride: int, weighting_scheme: str = "pyramid" + ) -> None: + self.context_length = context_length + self.context_stride = context_stride + self.weighting_scheme = weighting_scheme + + def set_chunk_feed_forward(self, chunk_size: Optional[int], dim: int = 0) -> None: + # Sets chunk feed-forward + self._chunk_size = chunk_size + self._chunk_dim = dim + + def forward( + self, + hidden_states: torch.Tensor, + attention_mask: Optional[torch.Tensor] = None, + encoder_hidden_states: Optional[torch.Tensor] = None, + encoder_attention_mask: Optional[torch.Tensor] = None, + cross_attention_kwargs: Dict[str, Any] = None, + *args, + **kwargs, + ) -> torch.Tensor: + if cross_attention_kwargs is not None: + if cross_attention_kwargs.get("scale", None) is not None: + logger.warning("Passing `scale` to `cross_attention_kwargs` is deprecated. `scale` will be ignored.") + + cross_attention_kwargs = cross_attention_kwargs.copy() if cross_attention_kwargs is not None else {} + + # hidden_states: [B x H x W, F, C] + device = hidden_states.device + dtype = hidden_states.dtype + + num_frames = hidden_states.size(1) + frame_indices = self._get_frame_indices(num_frames) + frame_weights = self._get_frame_weights(self.context_length, self.weighting_scheme) + frame_weights = torch.tensor(frame_weights, device=device, dtype=dtype).unsqueeze(0).unsqueeze(-1) + is_last_frame_batch_complete = frame_indices[-1][1] == num_frames + + # Handle out-of-bounds case if num_frames isn't perfectly divisible by context_length + # For example, num_frames=25, context_length=16, context_stride=4, then we expect the ranges: + # [(0, 16), (4, 20), (8, 24), (10, 26)] + if not is_last_frame_batch_complete: + if num_frames < self.context_length: + raise ValueError(f"Expected {num_frames=} to be greater or equal than {self.context_length=}") + last_frame_batch_length = num_frames - frame_indices[-1][1] + frame_indices.append((num_frames - self.context_length, num_frames)) + + num_times_accumulated = torch.zeros((1, num_frames, 1), device=device) + accumulated_values = torch.zeros_like(hidden_states) + + for i, (frame_start, frame_end) in enumerate(frame_indices): + # The reason for slicing here is to ensure that if (frame_end - frame_start) is to handle + # cases like frame_indices=[(0, 16), (16, 20)], if the user provided a video with 19 frames, or + # essentially a non-multiple of `context_length`. + weights = torch.ones_like(num_times_accumulated[:, frame_start:frame_end]) + weights *= frame_weights + + hidden_states_chunk = hidden_states[:, frame_start:frame_end] + + # Notice that normalization is always applied before the real computation in the following blocks. + # 1. Self-Attention + norm_hidden_states = self.norm1(hidden_states_chunk) + + if self.pos_embed is not None: + norm_hidden_states = self.pos_embed(norm_hidden_states) + + attn_output = self.attn1( + norm_hidden_states, + encoder_hidden_states=encoder_hidden_states if self.only_cross_attention else None, + attention_mask=attention_mask, + **cross_attention_kwargs, + ) + + hidden_states_chunk = attn_output + hidden_states_chunk + if hidden_states_chunk.ndim == 4: + hidden_states_chunk = hidden_states_chunk.squeeze(1) + + # 2. Cross-Attention + if self.attn2 is not None: + norm_hidden_states = self.norm2(hidden_states_chunk) + + if self.pos_embed is not None and self.norm_type != "ada_norm_single": + norm_hidden_states = self.pos_embed(norm_hidden_states) + + attn_output = self.attn2( + norm_hidden_states, + encoder_hidden_states=encoder_hidden_states, + attention_mask=encoder_attention_mask, + **cross_attention_kwargs, + ) + hidden_states_chunk = attn_output + hidden_states_chunk + + if i == len(frame_indices) - 1 and not is_last_frame_batch_complete: + accumulated_values[:, -last_frame_batch_length:] += ( + hidden_states_chunk[:, -last_frame_batch_length:] * weights[:, -last_frame_batch_length:] + ) + num_times_accumulated[:, -last_frame_batch_length:] += weights[:, -last_frame_batch_length] + else: + accumulated_values[:, frame_start:frame_end] += hidden_states_chunk * weights + num_times_accumulated[:, frame_start:frame_end] += weights + + # TODO(aryan): Maybe this could be done in a better way. + # + # Previously, this was: + # hidden_states = torch.where( + # num_times_accumulated > 0, accumulated_values / num_times_accumulated, accumulated_values + # ) + # + # The reasoning for the change here is `torch.where` became a bottleneck at some point when golfing memory + # spikes. It is particularly noticeable when the number of frames is high. My understanding is that this comes + # from tensors being copied - which is why we resort to spliting and concatenating here. I've not particularly + # looked into this deeply because other memory optimizations led to more pronounced reductions. + hidden_states = torch.cat( + [ + torch.where(num_times_split > 0, accumulated_split / num_times_split, accumulated_split) + for accumulated_split, num_times_split in zip( + accumulated_values.split(self.context_length, dim=1), + num_times_accumulated.split(self.context_length, dim=1), + ) + ], + dim=1, + ).to(dtype) + + # 3. Feed-forward + norm_hidden_states = self.norm3(hidden_states) + + if self._chunk_size is not None: + ff_output = _chunked_feed_forward(self.ff, norm_hidden_states, self._chunk_dim, self._chunk_size) + else: + ff_output = self.ff(norm_hidden_states) + + hidden_states = ff_output + hidden_states + if hidden_states.ndim == 4: + hidden_states = hidden_states.squeeze(1) + + return hidden_states + + +class FeedForward(nn.Module): + r""" + A feed-forward layer. + + Parameters: + dim (`int`): The number of channels in the input. + dim_out (`int`, *optional*): The number of channels in the output. If not given, defaults to `dim`. + mult (`int`, *optional*, defaults to 4): The multiplier to use for the hidden dimension. + dropout (`float`, *optional*, defaults to 0.0): The dropout probability to use. + activation_fn (`str`, *optional*, defaults to `"geglu"`): Activation function to be used in feed-forward. + final_dropout (`bool` *optional*, defaults to False): Apply a final dropout. + bias (`bool`, defaults to True): Whether to use a bias in the linear layer. + """ + + def __init__( + self, + dim: int, + dim_out: Optional[int] = None, + mult: int = 4, + dropout: float = 0.0, + activation_fn: str = "geglu", + final_dropout: bool = False, + inner_dim=None, + bias: bool = True, + ): + super().__init__() + if inner_dim is None: + inner_dim = int(dim * mult) + dim_out = dim_out if dim_out is not None else dim + + if activation_fn == "gelu": + act_fn = GELU(dim, inner_dim, bias=bias) + if activation_fn == "gelu-approximate": + act_fn = GELU(dim, inner_dim, approximate="tanh", bias=bias) + elif activation_fn == "geglu": + act_fn = GEGLU(dim, inner_dim, bias=bias) + elif activation_fn == "geglu-approximate": + act_fn = ApproximateGELU(dim, inner_dim, bias=bias) + elif activation_fn == "swiglu": + act_fn = SwiGLU(dim, inner_dim, bias=bias) + elif activation_fn == "linear-silu": + act_fn = LinearActivation(dim, inner_dim, bias=bias, activation="silu") + + self.net = nn.ModuleList([]) + # project in + self.net.append(act_fn) + # project dropout + self.net.append(nn.Dropout(dropout)) + # project out + self.net.append(nn.Linear(inner_dim, dim_out, bias=bias)) + # FF as used in Vision Transformer, MLP-Mixer, etc. have a final dropout + if final_dropout: + self.net.append(nn.Dropout(dropout)) + + def forward(self, hidden_states: torch.Tensor, *args, **kwargs) -> torch.Tensor: + if len(args) > 0 or kwargs.get("scale", None) is not None: + deprecation_message = "The `scale` argument is deprecated and will be ignored. Please remove it, as passing it will raise an error in the future. `scale` should directly be passed while calling the underlying pipeline component i.e., via `cross_attention_kwargs`." + deprecate("scale", "1.0.0", deprecation_message) + for module in self.net: + hidden_states = module(hidden_states) + return hidden_states diff --git a/venv/lib/python3.11/site-packages/diffusers/models/attention_flax.py b/venv/lib/python3.11/site-packages/diffusers/models/attention_flax.py new file mode 100644 index 0000000000000000000000000000000000000000..246f3afaf57cf5c123a28c6c489df4cd4b99276d --- /dev/null +++ b/venv/lib/python3.11/site-packages/diffusers/models/attention_flax.py @@ -0,0 +1,494 @@ +# Copyright 2024 The HuggingFace Team. All rights reserved. +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. + +import functools +import math + +import flax.linen as nn +import jax +import jax.numpy as jnp + + +def _query_chunk_attention(query, key, value, precision, key_chunk_size: int = 4096): + """Multi-head dot product attention with a limited number of queries.""" + num_kv, num_heads, k_features = key.shape[-3:] + v_features = value.shape[-1] + key_chunk_size = min(key_chunk_size, num_kv) + query = query / jnp.sqrt(k_features) + + @functools.partial(jax.checkpoint, prevent_cse=False) + def summarize_chunk(query, key, value): + attn_weights = jnp.einsum("...qhd,...khd->...qhk", query, key, precision=precision) + + max_score = jnp.max(attn_weights, axis=-1, keepdims=True) + max_score = jax.lax.stop_gradient(max_score) + exp_weights = jnp.exp(attn_weights - max_score) + + exp_values = jnp.einsum("...vhf,...qhv->...qhf", value, exp_weights, precision=precision) + max_score = jnp.einsum("...qhk->...qh", max_score) + + return (exp_values, exp_weights.sum(axis=-1), max_score) + + def chunk_scanner(chunk_idx): + # julienne key array + key_chunk = jax.lax.dynamic_slice( + operand=key, + start_indices=[0] * (key.ndim - 3) + [chunk_idx, 0, 0], # [...,k,h,d] + slice_sizes=list(key.shape[:-3]) + [key_chunk_size, num_heads, k_features], # [...,k,h,d] + ) + + # julienne value array + value_chunk = jax.lax.dynamic_slice( + operand=value, + start_indices=[0] * (value.ndim - 3) + [chunk_idx, 0, 0], # [...,v,h,d] + slice_sizes=list(value.shape[:-3]) + [key_chunk_size, num_heads, v_features], # [...,v,h,d] + ) + + return summarize_chunk(query, key_chunk, value_chunk) + + chunk_values, chunk_weights, chunk_max = jax.lax.map(f=chunk_scanner, xs=jnp.arange(0, num_kv, key_chunk_size)) + + global_max = jnp.max(chunk_max, axis=0, keepdims=True) + max_diffs = jnp.exp(chunk_max - global_max) + + chunk_values *= jnp.expand_dims(max_diffs, axis=-1) + chunk_weights *= max_diffs + + all_values = chunk_values.sum(axis=0) + all_weights = jnp.expand_dims(chunk_weights, -1).sum(axis=0) + + return all_values / all_weights + + +def jax_memory_efficient_attention( + query, key, value, precision=jax.lax.Precision.HIGHEST, query_chunk_size: int = 1024, key_chunk_size: int = 4096 +): + r""" + Flax Memory-efficient multi-head dot product attention. https://arxiv.org/abs/2112.05682v2 + https://github.com/AminRezaei0x443/memory-efficient-attention + + Args: + query (`jnp.ndarray`): (batch..., query_length, head, query_key_depth_per_head) + key (`jnp.ndarray`): (batch..., key_value_length, head, query_key_depth_per_head) + value (`jnp.ndarray`): (batch..., key_value_length, head, value_depth_per_head) + precision (`jax.lax.Precision`, *optional*, defaults to `jax.lax.Precision.HIGHEST`): + numerical precision for computation + query_chunk_size (`int`, *optional*, defaults to 1024): + chunk size to divide query array value must divide query_length equally without remainder + key_chunk_size (`int`, *optional*, defaults to 4096): + chunk size to divide key and value array value must divide key_value_length equally without remainder + + Returns: + (`jnp.ndarray`) with shape of (batch..., query_length, head, value_depth_per_head) + """ + num_q, num_heads, q_features = query.shape[-3:] + + def chunk_scanner(chunk_idx, _): + # julienne query array + query_chunk = jax.lax.dynamic_slice( + operand=query, + start_indices=([0] * (query.ndim - 3)) + [chunk_idx, 0, 0], # [...,q,h,d] + slice_sizes=list(query.shape[:-3]) + [min(query_chunk_size, num_q), num_heads, q_features], # [...,q,h,d] + ) + + return ( + chunk_idx + query_chunk_size, # unused ignore it + _query_chunk_attention( + query=query_chunk, key=key, value=value, precision=precision, key_chunk_size=key_chunk_size + ), + ) + + _, res = jax.lax.scan( + f=chunk_scanner, + init=0, + xs=None, + length=math.ceil(num_q / query_chunk_size), # start counter # stop counter + ) + + return jnp.concatenate(res, axis=-3) # fuse the chunked result back + + +class FlaxAttention(nn.Module): + r""" + A Flax multi-head attention module as described in: https://arxiv.org/abs/1706.03762 + + Parameters: + query_dim (:obj:`int`): + Input hidden states dimension + heads (:obj:`int`, *optional*, defaults to 8): + Number of heads + dim_head (:obj:`int`, *optional*, defaults to 64): + Hidden states dimension inside each head + dropout (:obj:`float`, *optional*, defaults to 0.0): + Dropout rate + use_memory_efficient_attention (`bool`, *optional*, defaults to `False`): + enable memory efficient attention https://arxiv.org/abs/2112.05682 + split_head_dim (`bool`, *optional*, defaults to `False`): + Whether to split the head dimension into a new axis for the self-attention computation. In most cases, + enabling this flag should speed up the computation for Stable Diffusion 2.x and Stable Diffusion XL. + dtype (:obj:`jnp.dtype`, *optional*, defaults to jnp.float32): + Parameters `dtype` + + """ + + query_dim: int + heads: int = 8 + dim_head: int = 64 + dropout: float = 0.0 + use_memory_efficient_attention: bool = False + split_head_dim: bool = False + dtype: jnp.dtype = jnp.float32 + + def setup(self): + inner_dim = self.dim_head * self.heads + self.scale = self.dim_head**-0.5 + + # Weights were exported with old names {to_q, to_k, to_v, to_out} + self.query = nn.Dense(inner_dim, use_bias=False, dtype=self.dtype, name="to_q") + self.key = nn.Dense(inner_dim, use_bias=False, dtype=self.dtype, name="to_k") + self.value = nn.Dense(inner_dim, use_bias=False, dtype=self.dtype, name="to_v") + + self.proj_attn = nn.Dense(self.query_dim, dtype=self.dtype, name="to_out_0") + self.dropout_layer = nn.Dropout(rate=self.dropout) + + def reshape_heads_to_batch_dim(self, tensor): + batch_size, seq_len, dim = tensor.shape + head_size = self.heads + tensor = tensor.reshape(batch_size, seq_len, head_size, dim // head_size) + tensor = jnp.transpose(tensor, (0, 2, 1, 3)) + tensor = tensor.reshape(batch_size * head_size, seq_len, dim // head_size) + return tensor + + def reshape_batch_dim_to_heads(self, tensor): + batch_size, seq_len, dim = tensor.shape + head_size = self.heads + tensor = tensor.reshape(batch_size // head_size, head_size, seq_len, dim) + tensor = jnp.transpose(tensor, (0, 2, 1, 3)) + tensor = tensor.reshape(batch_size // head_size, seq_len, dim * head_size) + return tensor + + def __call__(self, hidden_states, context=None, deterministic=True): + context = hidden_states if context is None else context + + query_proj = self.query(hidden_states) + key_proj = self.key(context) + value_proj = self.value(context) + + if self.split_head_dim: + b = hidden_states.shape[0] + query_states = jnp.reshape(query_proj, (b, -1, self.heads, self.dim_head)) + key_states = jnp.reshape(key_proj, (b, -1, self.heads, self.dim_head)) + value_states = jnp.reshape(value_proj, (b, -1, self.heads, self.dim_head)) + else: + query_states = self.reshape_heads_to_batch_dim(query_proj) + key_states = self.reshape_heads_to_batch_dim(key_proj) + value_states = self.reshape_heads_to_batch_dim(value_proj) + + if self.use_memory_efficient_attention: + query_states = query_states.transpose(1, 0, 2) + key_states = key_states.transpose(1, 0, 2) + value_states = value_states.transpose(1, 0, 2) + + # this if statement create a chunk size for each layer of the unet + # the chunk size is equal to the query_length dimension of the deepest layer of the unet + + flatten_latent_dim = query_states.shape[-3] + if flatten_latent_dim % 64 == 0: + query_chunk_size = int(flatten_latent_dim / 64) + elif flatten_latent_dim % 16 == 0: + query_chunk_size = int(flatten_latent_dim / 16) + elif flatten_latent_dim % 4 == 0: + query_chunk_size = int(flatten_latent_dim / 4) + else: + query_chunk_size = int(flatten_latent_dim) + + hidden_states = jax_memory_efficient_attention( + query_states, key_states, value_states, query_chunk_size=query_chunk_size, key_chunk_size=4096 * 4 + ) + hidden_states = hidden_states.transpose(1, 0, 2) + hidden_states = self.reshape_batch_dim_to_heads(hidden_states) + else: + # compute attentions + if self.split_head_dim: + attention_scores = jnp.einsum("b t n h, b f n h -> b n f t", key_states, query_states) + else: + attention_scores = jnp.einsum("b i d, b j d->b i j", query_states, key_states) + + attention_scores = attention_scores * self.scale + attention_probs = nn.softmax(attention_scores, axis=-1 if self.split_head_dim else 2) + + # attend to values + if self.split_head_dim: + hidden_states = jnp.einsum("b n f t, b t n h -> b f n h", attention_probs, value_states) + b = hidden_states.shape[0] + hidden_states = jnp.reshape(hidden_states, (b, -1, self.heads * self.dim_head)) + else: + hidden_states = jnp.einsum("b i j, b j d -> b i d", attention_probs, value_states) + hidden_states = self.reshape_batch_dim_to_heads(hidden_states) + + hidden_states = self.proj_attn(hidden_states) + return self.dropout_layer(hidden_states, deterministic=deterministic) + + +class FlaxBasicTransformerBlock(nn.Module): + r""" + A Flax transformer block layer with `GLU` (Gated Linear Unit) activation function as described in: + https://arxiv.org/abs/1706.03762 + + + Parameters: + dim (:obj:`int`): + Inner hidden states dimension + n_heads (:obj:`int`): + Number of heads + d_head (:obj:`int`): + Hidden states dimension inside each head + dropout (:obj:`float`, *optional*, defaults to 0.0): + Dropout rate + only_cross_attention (`bool`, defaults to `False`): + Whether to only apply cross attention. + dtype (:obj:`jnp.dtype`, *optional*, defaults to jnp.float32): + Parameters `dtype` + use_memory_efficient_attention (`bool`, *optional*, defaults to `False`): + enable memory efficient attention https://arxiv.org/abs/2112.05682 + split_head_dim (`bool`, *optional*, defaults to `False`): + Whether to split the head dimension into a new axis for the self-attention computation. In most cases, + enabling this flag should speed up the computation for Stable Diffusion 2.x and Stable Diffusion XL. + """ + + dim: int + n_heads: int + d_head: int + dropout: float = 0.0 + only_cross_attention: bool = False + dtype: jnp.dtype = jnp.float32 + use_memory_efficient_attention: bool = False + split_head_dim: bool = False + + def setup(self): + # self attention (or cross_attention if only_cross_attention is True) + self.attn1 = FlaxAttention( + self.dim, + self.n_heads, + self.d_head, + self.dropout, + self.use_memory_efficient_attention, + self.split_head_dim, + dtype=self.dtype, + ) + # cross attention + self.attn2 = FlaxAttention( + self.dim, + self.n_heads, + self.d_head, + self.dropout, + self.use_memory_efficient_attention, + self.split_head_dim, + dtype=self.dtype, + ) + self.ff = FlaxFeedForward(dim=self.dim, dropout=self.dropout, dtype=self.dtype) + self.norm1 = nn.LayerNorm(epsilon=1e-5, dtype=self.dtype) + self.norm2 = nn.LayerNorm(epsilon=1e-5, dtype=self.dtype) + self.norm3 = nn.LayerNorm(epsilon=1e-5, dtype=self.dtype) + self.dropout_layer = nn.Dropout(rate=self.dropout) + + def __call__(self, hidden_states, context, deterministic=True): + # self attention + residual = hidden_states + if self.only_cross_attention: + hidden_states = self.attn1(self.norm1(hidden_states), context, deterministic=deterministic) + else: + hidden_states = self.attn1(self.norm1(hidden_states), deterministic=deterministic) + hidden_states = hidden_states + residual + + # cross attention + residual = hidden_states + hidden_states = self.attn2(self.norm2(hidden_states), context, deterministic=deterministic) + hidden_states = hidden_states + residual + + # feed forward + residual = hidden_states + hidden_states = self.ff(self.norm3(hidden_states), deterministic=deterministic) + hidden_states = hidden_states + residual + + return self.dropout_layer(hidden_states, deterministic=deterministic) + + +class FlaxTransformer2DModel(nn.Module): + r""" + A Spatial Transformer layer with Gated Linear Unit (GLU) activation function as described in: + https://arxiv.org/pdf/1506.02025.pdf + + + Parameters: + in_channels (:obj:`int`): + Input number of channels + n_heads (:obj:`int`): + Number of heads + d_head (:obj:`int`): + Hidden states dimension inside each head + depth (:obj:`int`, *optional*, defaults to 1): + Number of transformers block + dropout (:obj:`float`, *optional*, defaults to 0.0): + Dropout rate + use_linear_projection (`bool`, defaults to `False`): tbd + only_cross_attention (`bool`, defaults to `False`): tbd + dtype (:obj:`jnp.dtype`, *optional*, defaults to jnp.float32): + Parameters `dtype` + use_memory_efficient_attention (`bool`, *optional*, defaults to `False`): + enable memory efficient attention https://arxiv.org/abs/2112.05682 + split_head_dim (`bool`, *optional*, defaults to `False`): + Whether to split the head dimension into a new axis for the self-attention computation. In most cases, + enabling this flag should speed up the computation for Stable Diffusion 2.x and Stable Diffusion XL. + """ + + in_channels: int + n_heads: int + d_head: int + depth: int = 1 + dropout: float = 0.0 + use_linear_projection: bool = False + only_cross_attention: bool = False + dtype: jnp.dtype = jnp.float32 + use_memory_efficient_attention: bool = False + split_head_dim: bool = False + + def setup(self): + self.norm = nn.GroupNorm(num_groups=32, epsilon=1e-5) + + inner_dim = self.n_heads * self.d_head + if self.use_linear_projection: + self.proj_in = nn.Dense(inner_dim, dtype=self.dtype) + else: + self.proj_in = nn.Conv( + inner_dim, + kernel_size=(1, 1), + strides=(1, 1), + padding="VALID", + dtype=self.dtype, + ) + + self.transformer_blocks = [ + FlaxBasicTransformerBlock( + inner_dim, + self.n_heads, + self.d_head, + dropout=self.dropout, + only_cross_attention=self.only_cross_attention, + dtype=self.dtype, + use_memory_efficient_attention=self.use_memory_efficient_attention, + split_head_dim=self.split_head_dim, + ) + for _ in range(self.depth) + ] + + if self.use_linear_projection: + self.proj_out = nn.Dense(inner_dim, dtype=self.dtype) + else: + self.proj_out = nn.Conv( + inner_dim, + kernel_size=(1, 1), + strides=(1, 1), + padding="VALID", + dtype=self.dtype, + ) + + self.dropout_layer = nn.Dropout(rate=self.dropout) + + def __call__(self, hidden_states, context, deterministic=True): + batch, height, width, channels = hidden_states.shape + residual = hidden_states + hidden_states = self.norm(hidden_states) + if self.use_linear_projection: + hidden_states = hidden_states.reshape(batch, height * width, channels) + hidden_states = self.proj_in(hidden_states) + else: + hidden_states = self.proj_in(hidden_states) + hidden_states = hidden_states.reshape(batch, height * width, channels) + + for transformer_block in self.transformer_blocks: + hidden_states = transformer_block(hidden_states, context, deterministic=deterministic) + + if self.use_linear_projection: + hidden_states = self.proj_out(hidden_states) + hidden_states = hidden_states.reshape(batch, height, width, channels) + else: + hidden_states = hidden_states.reshape(batch, height, width, channels) + hidden_states = self.proj_out(hidden_states) + + hidden_states = hidden_states + residual + return self.dropout_layer(hidden_states, deterministic=deterministic) + + +class FlaxFeedForward(nn.Module): + r""" + Flax module that encapsulates two Linear layers separated by a non-linearity. It is the counterpart of PyTorch's + [`FeedForward`] class, with the following simplifications: + - The activation function is currently hardcoded to a gated linear unit from: + https://arxiv.org/abs/2002.05202 + - `dim_out` is equal to `dim`. + - The number of hidden dimensions is hardcoded to `dim * 4` in [`FlaxGELU`]. + + Parameters: + dim (:obj:`int`): + Inner hidden states dimension + dropout (:obj:`float`, *optional*, defaults to 0.0): + Dropout rate + dtype (:obj:`jnp.dtype`, *optional*, defaults to jnp.float32): + Parameters `dtype` + """ + + dim: int + dropout: float = 0.0 + dtype: jnp.dtype = jnp.float32 + + def setup(self): + # The second linear layer needs to be called + # net_2 for now to match the index of the Sequential layer + self.net_0 = FlaxGEGLU(self.dim, self.dropout, self.dtype) + self.net_2 = nn.Dense(self.dim, dtype=self.dtype) + + def __call__(self, hidden_states, deterministic=True): + hidden_states = self.net_0(hidden_states, deterministic=deterministic) + hidden_states = self.net_2(hidden_states) + return hidden_states + + +class FlaxGEGLU(nn.Module): + r""" + Flax implementation of a Linear layer followed by the variant of the gated linear unit activation function from + https://arxiv.org/abs/2002.05202. + + Parameters: + dim (:obj:`int`): + Input hidden states dimension + dropout (:obj:`float`, *optional*, defaults to 0.0): + Dropout rate + dtype (:obj:`jnp.dtype`, *optional*, defaults to jnp.float32): + Parameters `dtype` + """ + + dim: int + dropout: float = 0.0 + dtype: jnp.dtype = jnp.float32 + + def setup(self): + inner_dim = self.dim * 4 + self.proj = nn.Dense(inner_dim * 2, dtype=self.dtype) + self.dropout_layer = nn.Dropout(rate=self.dropout) + + def __call__(self, hidden_states, deterministic=True): + hidden_states = self.proj(hidden_states) + hidden_linear, hidden_gelu = jnp.split(hidden_states, 2, axis=2) + return self.dropout_layer(hidden_linear * nn.gelu(hidden_gelu), deterministic=deterministic) diff --git a/venv/lib/python3.11/site-packages/diffusers/models/attention_processor.py b/venv/lib/python3.11/site-packages/diffusers/models/attention_processor.py new file mode 100644 index 0000000000000000000000000000000000000000..6e1dc1037c20f49c26f3502adc5bc4a44d81768c --- /dev/null +++ b/venv/lib/python3.11/site-packages/diffusers/models/attention_processor.py @@ -0,0 +1,6097 @@ +# Copyright 2024 The HuggingFace Team. All rights reserved. +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. +import inspect +import math +from typing import Callable, List, Optional, Tuple, Union + +import torch +import torch.nn.functional as F +from torch import nn + +from ..image_processor import IPAdapterMaskProcessor +from ..utils import deprecate, is_torch_xla_available, logging +from ..utils.import_utils import is_torch_npu_available, is_torch_xla_version, is_xformers_available +from ..utils.torch_utils import is_torch_version, maybe_allow_in_graph + + +logger = logging.get_logger(__name__) # pylint: disable=invalid-name + +if is_torch_npu_available(): + import torch_npu + +if is_xformers_available(): + import xformers + import xformers.ops +else: + xformers = None + +if is_torch_xla_available(): + # flash attention pallas kernel is introduced in the torch_xla 2.3 release. + if is_torch_xla_version(">", "2.2"): + from torch_xla.experimental.custom_kernel import flash_attention + from torch_xla.runtime import is_spmd + XLA_AVAILABLE = True +else: + XLA_AVAILABLE = False + + +@maybe_allow_in_graph +class Attention(nn.Module): + r""" + A cross attention layer. + + Parameters: + query_dim (`int`): + The number of channels in the query. + cross_attention_dim (`int`, *optional*): + The number of channels in the encoder_hidden_states. If not given, defaults to `query_dim`. + heads (`int`, *optional*, defaults to 8): + The number of heads to use for multi-head attention. + kv_heads (`int`, *optional*, defaults to `None`): + The number of key and value heads to use for multi-head attention. Defaults to `heads`. If + `kv_heads=heads`, the model will use Multi Head Attention (MHA), if `kv_heads=1` the model will use Multi + Query Attention (MQA) otherwise GQA is used. + dim_head (`int`, *optional*, defaults to 64): + The number of channels in each head. + dropout (`float`, *optional*, defaults to 0.0): + The dropout probability to use. + bias (`bool`, *optional*, defaults to False): + Set to `True` for the query, key, and value linear layers to contain a bias parameter. + upcast_attention (`bool`, *optional*, defaults to False): + Set to `True` to upcast the attention computation to `float32`. + upcast_softmax (`bool`, *optional*, defaults to False): + Set to `True` to upcast the softmax computation to `float32`. + cross_attention_norm (`str`, *optional*, defaults to `None`): + The type of normalization to use for the cross attention. Can be `None`, `layer_norm`, or `group_norm`. + cross_attention_norm_num_groups (`int`, *optional*, defaults to 32): + The number of groups to use for the group norm in the cross attention. + added_kv_proj_dim (`int`, *optional*, defaults to `None`): + The number of channels to use for the added key and value projections. If `None`, no projection is used. + norm_num_groups (`int`, *optional*, defaults to `None`): + The number of groups to use for the group norm in the attention. + spatial_norm_dim (`int`, *optional*, defaults to `None`): + The number of channels to use for the spatial normalization. + out_bias (`bool`, *optional*, defaults to `True`): + Set to `True` to use a bias in the output linear layer. + scale_qk (`bool`, *optional*, defaults to `True`): + Set to `True` to scale the query and key by `1 / sqrt(dim_head)`. + only_cross_attention (`bool`, *optional*, defaults to `False`): + Set to `True` to only use cross attention and not added_kv_proj_dim. Can only be set to `True` if + `added_kv_proj_dim` is not `None`. + eps (`float`, *optional*, defaults to 1e-5): + An additional value added to the denominator in group normalization that is used for numerical stability. + rescale_output_factor (`float`, *optional*, defaults to 1.0): + A factor to rescale the output by dividing it with this value. + residual_connection (`bool`, *optional*, defaults to `False`): + Set to `True` to add the residual connection to the output. + _from_deprecated_attn_block (`bool`, *optional*, defaults to `False`): + Set to `True` if the attention block is loaded from a deprecated state dict. + processor (`AttnProcessor`, *optional*, defaults to `None`): + The attention processor to use. If `None`, defaults to `AttnProcessor2_0` if `torch 2.x` is used and + `AttnProcessor` otherwise. + """ + + def __init__( + self, + query_dim: int, + cross_attention_dim: Optional[int] = None, + heads: int = 8, + kv_heads: Optional[int] = None, + dim_head: int = 64, + dropout: float = 0.0, + bias: bool = False, + upcast_attention: bool = False, + upcast_softmax: bool = False, + cross_attention_norm: Optional[str] = None, + cross_attention_norm_num_groups: int = 32, + qk_norm: Optional[str] = None, + added_kv_proj_dim: Optional[int] = None, + added_proj_bias: Optional[bool] = True, + norm_num_groups: Optional[int] = None, + spatial_norm_dim: Optional[int] = None, + out_bias: bool = True, + scale_qk: bool = True, + only_cross_attention: bool = False, + eps: float = 1e-5, + rescale_output_factor: float = 1.0, + residual_connection: bool = False, + _from_deprecated_attn_block: bool = False, + processor: Optional["AttnProcessor"] = None, + out_dim: int = None, + out_context_dim: int = None, + context_pre_only=None, + pre_only=False, + elementwise_affine: bool = True, + is_causal: bool = False, + ): + super().__init__() + + # To prevent circular import. + from .normalization import FP32LayerNorm, LpNorm, RMSNorm + + self.inner_dim = out_dim if out_dim is not None else dim_head * heads + self.inner_kv_dim = self.inner_dim if kv_heads is None else dim_head * kv_heads + self.query_dim = query_dim + self.use_bias = bias + self.is_cross_attention = cross_attention_dim is not None + self.cross_attention_dim = cross_attention_dim if cross_attention_dim is not None else query_dim + self.upcast_attention = upcast_attention + self.upcast_softmax = upcast_softmax + self.rescale_output_factor = rescale_output_factor + self.residual_connection = residual_connection + self.dropout = dropout + self.fused_projections = False + self.out_dim = out_dim if out_dim is not None else query_dim + self.out_context_dim = out_context_dim if out_context_dim is not None else query_dim + self.context_pre_only = context_pre_only + self.pre_only = pre_only + self.is_causal = is_causal + + # we make use of this private variable to know whether this class is loaded + # with an deprecated state dict so that we can convert it on the fly + self._from_deprecated_attn_block = _from_deprecated_attn_block + + self.scale_qk = scale_qk + self.scale = dim_head**-0.5 if self.scale_qk else 1.0 + + self.heads = out_dim // dim_head if out_dim is not None else heads + # for slice_size > 0 the attention score computation + # is split across the batch axis to save memory + # You can set slice_size with `set_attention_slice` + self.sliceable_head_dim = heads + + self.added_kv_proj_dim = added_kv_proj_dim + self.only_cross_attention = only_cross_attention + + if self.added_kv_proj_dim is None and self.only_cross_attention: + raise ValueError( + "`only_cross_attention` can only be set to True if `added_kv_proj_dim` is not None. Make sure to set either `only_cross_attention=False` or define `added_kv_proj_dim`." + ) + + if norm_num_groups is not None: + self.group_norm = nn.GroupNorm(num_channels=query_dim, num_groups=norm_num_groups, eps=eps, affine=True) + else: + self.group_norm = None + + if spatial_norm_dim is not None: + self.spatial_norm = SpatialNorm(f_channels=query_dim, zq_channels=spatial_norm_dim) + else: + self.spatial_norm = None + + if qk_norm is None: + self.norm_q = None + self.norm_k = None + elif qk_norm == "layer_norm": + self.norm_q = nn.LayerNorm(dim_head, eps=eps, elementwise_affine=elementwise_affine) + self.norm_k = nn.LayerNorm(dim_head, eps=eps, elementwise_affine=elementwise_affine) + elif qk_norm == "fp32_layer_norm": + self.norm_q = FP32LayerNorm(dim_head, elementwise_affine=False, bias=False, eps=eps) + self.norm_k = FP32LayerNorm(dim_head, elementwise_affine=False, bias=False, eps=eps) + elif qk_norm == "layer_norm_across_heads": + # Lumina applies qk norm across all heads + self.norm_q = nn.LayerNorm(dim_head * heads, eps=eps) + self.norm_k = nn.LayerNorm(dim_head * kv_heads, eps=eps) + elif qk_norm == "rms_norm": + self.norm_q = RMSNorm(dim_head, eps=eps) + self.norm_k = RMSNorm(dim_head, eps=eps) + elif qk_norm == "rms_norm_across_heads": + # LTX applies qk norm across all heads + self.norm_q = RMSNorm(dim_head * heads, eps=eps) + self.norm_k = RMSNorm(dim_head * kv_heads, eps=eps) + elif qk_norm == "l2": + self.norm_q = LpNorm(p=2, dim=-1, eps=eps) + self.norm_k = LpNorm(p=2, dim=-1, eps=eps) + else: + raise ValueError(f"unknown qk_norm: {qk_norm}. Should be None,'layer_norm','fp32_layer_norm','rms_norm'") + + if cross_attention_norm is None: + self.norm_cross = None + elif cross_attention_norm == "layer_norm": + self.norm_cross = nn.LayerNorm(self.cross_attention_dim) + elif cross_attention_norm == "group_norm": + if self.added_kv_proj_dim is not None: + # The given `encoder_hidden_states` are initially of shape + # (batch_size, seq_len, added_kv_proj_dim) before being projected + # to (batch_size, seq_len, cross_attention_dim). The norm is applied + # before the projection, so we need to use `added_kv_proj_dim` as + # the number of channels for the group norm. + norm_cross_num_channels = added_kv_proj_dim + else: + norm_cross_num_channels = self.cross_attention_dim + + self.norm_cross = nn.GroupNorm( + num_channels=norm_cross_num_channels, num_groups=cross_attention_norm_num_groups, eps=1e-5, affine=True + ) + else: + raise ValueError( + f"unknown cross_attention_norm: {cross_attention_norm}. Should be None, 'layer_norm' or 'group_norm'" + ) + + self.to_q = nn.Linear(query_dim, self.inner_dim, bias=bias) + + if not self.only_cross_attention: + # only relevant for the `AddedKVProcessor` classes + self.to_k = nn.Linear(self.cross_attention_dim, self.inner_kv_dim, bias=bias) + self.to_v = nn.Linear(self.cross_attention_dim, self.inner_kv_dim, bias=bias) + else: + self.to_k = None + self.to_v = None + + self.added_proj_bias = added_proj_bias + if self.added_kv_proj_dim is not None: + self.add_k_proj = nn.Linear(added_kv_proj_dim, self.inner_kv_dim, bias=added_proj_bias) + self.add_v_proj = nn.Linear(added_kv_proj_dim, self.inner_kv_dim, bias=added_proj_bias) + if self.context_pre_only is not None: + self.add_q_proj = nn.Linear(added_kv_proj_dim, self.inner_dim, bias=added_proj_bias) + else: + self.add_q_proj = None + self.add_k_proj = None + self.add_v_proj = None + + if not self.pre_only: + self.to_out = nn.ModuleList([]) + self.to_out.append(nn.Linear(self.inner_dim, self.out_dim, bias=out_bias)) + self.to_out.append(nn.Dropout(dropout)) + else: + self.to_out = None + + if self.context_pre_only is not None and not self.context_pre_only: + self.to_add_out = nn.Linear(self.inner_dim, self.out_context_dim, bias=out_bias) + else: + self.to_add_out = None + + if qk_norm is not None and added_kv_proj_dim is not None: + if qk_norm == "fp32_layer_norm": + self.norm_added_q = FP32LayerNorm(dim_head, elementwise_affine=False, bias=False, eps=eps) + self.norm_added_k = FP32LayerNorm(dim_head, elementwise_affine=False, bias=False, eps=eps) + elif qk_norm == "rms_norm": + self.norm_added_q = RMSNorm(dim_head, eps=eps) + self.norm_added_k = RMSNorm(dim_head, eps=eps) + else: + raise ValueError( + f"unknown qk_norm: {qk_norm}. Should be one of `None,'layer_norm','fp32_layer_norm','rms_norm'`" + ) + else: + self.norm_added_q = None + self.norm_added_k = None + + # set attention processor + # We use the AttnProcessor2_0 by default when torch 2.x is used which uses + # torch.nn.functional.scaled_dot_product_attention for native Flash/memory_efficient_attention + # but only if it has the default `scale` argument. TODO remove scale_qk check when we move to torch 2.1 + if processor is None: + processor = ( + AttnProcessor2_0() if hasattr(F, "scaled_dot_product_attention") and self.scale_qk else AttnProcessor() + ) + self.set_processor(processor) + + def set_use_xla_flash_attention( + self, use_xla_flash_attention: bool, partition_spec: Optional[Tuple[Optional[str], ...]] = None + ) -> None: + r""" + Set whether to use xla flash attention from `torch_xla` or not. + + Args: + use_xla_flash_attention (`bool`): + Whether to use pallas flash attention kernel from `torch_xla` or not. + partition_spec (`Tuple[]`, *optional*): + Specify the partition specification if using SPMD. Otherwise None. + """ + if use_xla_flash_attention: + if not is_torch_xla_available: + raise "torch_xla is not available" + elif is_torch_xla_version("<", "2.3"): + raise "flash attention pallas kernel is supported from torch_xla version 2.3" + elif is_spmd() and is_torch_xla_version("<", "2.4"): + raise "flash attention pallas kernel using SPMD is supported from torch_xla version 2.4" + else: + processor = XLAFlashAttnProcessor2_0(partition_spec) + else: + processor = ( + AttnProcessor2_0() if hasattr(F, "scaled_dot_product_attention") and self.scale_qk else AttnProcessor() + ) + self.set_processor(processor) + + def set_use_npu_flash_attention(self, use_npu_flash_attention: bool) -> None: + r""" + Set whether to use npu flash attention from `torch_npu` or not. + + """ + if use_npu_flash_attention: + processor = AttnProcessorNPU() + else: + # set attention processor + # We use the AttnProcessor2_0 by default when torch 2.x is used which uses + # torch.nn.functional.scaled_dot_product_attention for native Flash/memory_efficient_attention + # but only if it has the default `scale` argument. TODO remove scale_qk check when we move to torch 2.1 + processor = ( + AttnProcessor2_0() if hasattr(F, "scaled_dot_product_attention") and self.scale_qk else AttnProcessor() + ) + self.set_processor(processor) + + def set_use_memory_efficient_attention_xformers( + self, use_memory_efficient_attention_xformers: bool, attention_op: Optional[Callable] = None + ) -> None: + r""" + Set whether to use memory efficient attention from `xformers` or not. + + Args: + use_memory_efficient_attention_xformers (`bool`): + Whether to use memory efficient attention from `xformers` or not. + attention_op (`Callable`, *optional*): + The attention operation to use. Defaults to `None` which uses the default attention operation from + `xformers`. + """ + is_custom_diffusion = hasattr(self, "processor") and isinstance( + self.processor, + (CustomDiffusionAttnProcessor, CustomDiffusionXFormersAttnProcessor, CustomDiffusionAttnProcessor2_0), + ) + is_added_kv_processor = hasattr(self, "processor") and isinstance( + self.processor, + ( + AttnAddedKVProcessor, + AttnAddedKVProcessor2_0, + SlicedAttnAddedKVProcessor, + XFormersAttnAddedKVProcessor, + ), + ) + is_ip_adapter = hasattr(self, "processor") and isinstance( + self.processor, + (IPAdapterAttnProcessor, IPAdapterAttnProcessor2_0, IPAdapterXFormersAttnProcessor), + ) + is_joint_processor = hasattr(self, "processor") and isinstance( + self.processor, + ( + JointAttnProcessor2_0, + XFormersJointAttnProcessor, + ), + ) + + if use_memory_efficient_attention_xformers: + if is_added_kv_processor and is_custom_diffusion: + raise NotImplementedError( + f"Memory efficient attention is currently not supported for custom diffusion for attention processor type {self.processor}" + ) + if not is_xformers_available(): + raise ModuleNotFoundError( + ( + "Refer to https://github.com/facebookresearch/xformers for more information on how to install" + " xformers" + ), + name="xformers", + ) + elif not torch.cuda.is_available(): + raise ValueError( + "torch.cuda.is_available() should be True but is False. xformers' memory efficient attention is" + " only available for GPU " + ) + else: + try: + # Make sure we can run the memory efficient attention + _ = xformers.ops.memory_efficient_attention( + torch.randn((1, 2, 40), device="cuda"), + torch.randn((1, 2, 40), device="cuda"), + torch.randn((1, 2, 40), device="cuda"), + ) + except Exception as e: + raise e + + if is_custom_diffusion: + processor = CustomDiffusionXFormersAttnProcessor( + train_kv=self.processor.train_kv, + train_q_out=self.processor.train_q_out, + hidden_size=self.processor.hidden_size, + cross_attention_dim=self.processor.cross_attention_dim, + attention_op=attention_op, + ) + processor.load_state_dict(self.processor.state_dict()) + if hasattr(self.processor, "to_k_custom_diffusion"): + processor.to(self.processor.to_k_custom_diffusion.weight.device) + elif is_added_kv_processor: + # TODO(Patrick, Suraj, William) - currently xformers doesn't work for UnCLIP + # which uses this type of cross attention ONLY because the attention mask of format + # [0, ..., -10.000, ..., 0, ...,] is not supported + # throw warning + logger.info( + "Memory efficient attention with `xformers` might currently not work correctly if an attention mask is required for the attention operation." + ) + processor = XFormersAttnAddedKVProcessor(attention_op=attention_op) + elif is_ip_adapter: + processor = IPAdapterXFormersAttnProcessor( + hidden_size=self.processor.hidden_size, + cross_attention_dim=self.processor.cross_attention_dim, + num_tokens=self.processor.num_tokens, + scale=self.processor.scale, + attention_op=attention_op, + ) + processor.load_state_dict(self.processor.state_dict()) + if hasattr(self.processor, "to_k_ip"): + processor.to( + device=self.processor.to_k_ip[0].weight.device, dtype=self.processor.to_k_ip[0].weight.dtype + ) + elif is_joint_processor: + processor = XFormersJointAttnProcessor(attention_op=attention_op) + else: + processor = XFormersAttnProcessor(attention_op=attention_op) + else: + if is_custom_diffusion: + attn_processor_class = ( + CustomDiffusionAttnProcessor2_0 + if hasattr(F, "scaled_dot_product_attention") + else CustomDiffusionAttnProcessor + ) + processor = attn_processor_class( + train_kv=self.processor.train_kv, + train_q_out=self.processor.train_q_out, + hidden_size=self.processor.hidden_size, + cross_attention_dim=self.processor.cross_attention_dim, + ) + processor.load_state_dict(self.processor.state_dict()) + if hasattr(self.processor, "to_k_custom_diffusion"): + processor.to(self.processor.to_k_custom_diffusion.weight.device) + elif is_ip_adapter: + processor = IPAdapterAttnProcessor2_0( + hidden_size=self.processor.hidden_size, + cross_attention_dim=self.processor.cross_attention_dim, + num_tokens=self.processor.num_tokens, + scale=self.processor.scale, + ) + processor.load_state_dict(self.processor.state_dict()) + if hasattr(self.processor, "to_k_ip"): + processor.to( + device=self.processor.to_k_ip[0].weight.device, dtype=self.processor.to_k_ip[0].weight.dtype + ) + else: + # set attention processor + # We use the AttnProcessor2_0 by default when torch 2.x is used which uses + # torch.nn.functional.scaled_dot_product_attention for native Flash/memory_efficient_attention + # but only if it has the default `scale` argument. TODO remove scale_qk check when we move to torch 2.1 + processor = ( + AttnProcessor2_0() + if hasattr(F, "scaled_dot_product_attention") and self.scale_qk + else AttnProcessor() + ) + + self.set_processor(processor) + + def set_attention_slice(self, slice_size: int) -> None: + r""" + Set the slice size for attention computation. + + Args: + slice_size (`int`): + The slice size for attention computation. + """ + if slice_size is not None and slice_size > self.sliceable_head_dim: + raise ValueError(f"slice_size {slice_size} has to be smaller or equal to {self.sliceable_head_dim}.") + + if slice_size is not None and self.added_kv_proj_dim is not None: + processor = SlicedAttnAddedKVProcessor(slice_size) + elif slice_size is not None: + processor = SlicedAttnProcessor(slice_size) + elif self.added_kv_proj_dim is not None: + processor = AttnAddedKVProcessor() + else: + # set attention processor + # We use the AttnProcessor2_0 by default when torch 2.x is used which uses + # torch.nn.functional.scaled_dot_product_attention for native Flash/memory_efficient_attention + # but only if it has the default `scale` argument. TODO remove scale_qk check when we move to torch 2.1 + processor = ( + AttnProcessor2_0() if hasattr(F, "scaled_dot_product_attention") and self.scale_qk else AttnProcessor() + ) + + self.set_processor(processor) + + def set_processor(self, processor: "AttnProcessor") -> None: + r""" + Set the attention processor to use. + + Args: + processor (`AttnProcessor`): + The attention processor to use. + """ + # if current processor is in `self._modules` and if passed `processor` is not, we need to + # pop `processor` from `self._modules` + if ( + hasattr(self, "processor") + and isinstance(self.processor, torch.nn.Module) + and not isinstance(processor, torch.nn.Module) + ): + logger.info(f"You are removing possibly trained weights of {self.processor} with {processor}") + self._modules.pop("processor") + + self.processor = processor + + def get_processor(self, return_deprecated_lora: bool = False) -> "AttentionProcessor": + r""" + Get the attention processor in use. + + Args: + return_deprecated_lora (`bool`, *optional*, defaults to `False`): + Set to `True` to return the deprecated LoRA attention processor. + + Returns: + "AttentionProcessor": The attention processor in use. + """ + if not return_deprecated_lora: + return self.processor + + def forward( + self, + hidden_states: torch.Tensor, + encoder_hidden_states: Optional[torch.Tensor] = None, + attention_mask: Optional[torch.Tensor] = None, + **cross_attention_kwargs, + ) -> torch.Tensor: + r""" + The forward method of the `Attention` class. + + Args: + hidden_states (`torch.Tensor`): + The hidden states of the query. + encoder_hidden_states (`torch.Tensor`, *optional*): + The hidden states of the encoder. + attention_mask (`torch.Tensor`, *optional*): + The attention mask to use. If `None`, no mask is applied. + **cross_attention_kwargs: + Additional keyword arguments to pass along to the cross attention. + + Returns: + `torch.Tensor`: The output of the attention layer. + """ + # The `Attention` class can call different attention processors / attention functions + # here we simply pass along all tensors to the selected processor class + # For standard processors that are defined here, `**cross_attention_kwargs` is empty + + attn_parameters = set(inspect.signature(self.processor.__call__).parameters.keys()) + quiet_attn_parameters = {"ip_adapter_masks", "ip_hidden_states"} + unused_kwargs = [ + k for k, _ in cross_attention_kwargs.items() if k not in attn_parameters and k not in quiet_attn_parameters + ] + if len(unused_kwargs) > 0: + logger.warning( + f"cross_attention_kwargs {unused_kwargs} are not expected by {self.processor.__class__.__name__} and will be ignored." + ) + cross_attention_kwargs = {k: w for k, w in cross_attention_kwargs.items() if k in attn_parameters} + + return self.processor( + self, + hidden_states, + encoder_hidden_states=encoder_hidden_states, + attention_mask=attention_mask, + **cross_attention_kwargs, + ) + + def batch_to_head_dim(self, tensor: torch.Tensor) -> torch.Tensor: + r""" + Reshape the tensor from `[batch_size, seq_len, dim]` to `[batch_size // heads, seq_len, dim * heads]`. `heads` + is the number of heads initialized while constructing the `Attention` class. + + Args: + tensor (`torch.Tensor`): The tensor to reshape. + + Returns: + `torch.Tensor`: The reshaped tensor. + """ + head_size = self.heads + batch_size, seq_len, dim = tensor.shape + tensor = tensor.reshape(batch_size // head_size, head_size, seq_len, dim) + tensor = tensor.permute(0, 2, 1, 3).reshape(batch_size // head_size, seq_len, dim * head_size) + return tensor + + def head_to_batch_dim(self, tensor: torch.Tensor, out_dim: int = 3) -> torch.Tensor: + r""" + Reshape the tensor from `[batch_size, seq_len, dim]` to `[batch_size, seq_len, heads, dim // heads]` `heads` is + the number of heads initialized while constructing the `Attention` class. + + Args: + tensor (`torch.Tensor`): The tensor to reshape. + out_dim (`int`, *optional*, defaults to `3`): The output dimension of the tensor. If `3`, the tensor is + reshaped to `[batch_size * heads, seq_len, dim // heads]`. + + Returns: + `torch.Tensor`: The reshaped tensor. + """ + head_size = self.heads + if tensor.ndim == 3: + batch_size, seq_len, dim = tensor.shape + extra_dim = 1 + else: + batch_size, extra_dim, seq_len, dim = tensor.shape + tensor = tensor.reshape(batch_size, seq_len * extra_dim, head_size, dim // head_size) + tensor = tensor.permute(0, 2, 1, 3) + + if out_dim == 3: + tensor = tensor.reshape(batch_size * head_size, seq_len * extra_dim, dim // head_size) + + return tensor + + def get_attention_scores( + self, query: torch.Tensor, key: torch.Tensor, attention_mask: Optional[torch.Tensor] = None + ) -> torch.Tensor: + r""" + Compute the attention scores. + + Args: + query (`torch.Tensor`): The query tensor. + key (`torch.Tensor`): The key tensor. + attention_mask (`torch.Tensor`, *optional*): The attention mask to use. If `None`, no mask is applied. + + Returns: + `torch.Tensor`: The attention probabilities/scores. + """ + dtype = query.dtype + if self.upcast_attention: + query = query.float() + key = key.float() + + if attention_mask is None: + baddbmm_input = torch.empty( + query.shape[0], query.shape[1], key.shape[1], dtype=query.dtype, device=query.device + ) + beta = 0 + else: + baddbmm_input = attention_mask + beta = 1 + + attention_scores = torch.baddbmm( + baddbmm_input, + query, + key.transpose(-1, -2), + beta=beta, + alpha=self.scale, + ) + del baddbmm_input + + if self.upcast_softmax: + attention_scores = attention_scores.float() + + attention_probs = attention_scores.softmax(dim=-1) + del attention_scores + + attention_probs = attention_probs.to(dtype) + + return attention_probs + + def prepare_attention_mask( + self, attention_mask: torch.Tensor, target_length: int, batch_size: int, out_dim: int = 3 + ) -> torch.Tensor: + r""" + Prepare the attention mask for the attention computation. + + Args: + attention_mask (`torch.Tensor`): + The attention mask to prepare. + target_length (`int`): + The target length of the attention mask. This is the length of the attention mask after padding. + batch_size (`int`): + The batch size, which is used to repeat the attention mask. + out_dim (`int`, *optional*, defaults to `3`): + The output dimension of the attention mask. Can be either `3` or `4`. + + Returns: + `torch.Tensor`: The prepared attention mask. + """ + head_size = self.heads + if attention_mask is None: + return attention_mask + + current_length: int = attention_mask.shape[-1] + if current_length != target_length: + if attention_mask.device.type == "mps": + # HACK: MPS: Does not support padding by greater than dimension of input tensor. + # Instead, we can manually construct the padding tensor. + padding_shape = (attention_mask.shape[0], attention_mask.shape[1], target_length) + padding = torch.zeros(padding_shape, dtype=attention_mask.dtype, device=attention_mask.device) + attention_mask = torch.cat([attention_mask, padding], dim=2) + else: + # TODO: for pipelines such as stable-diffusion, padding cross-attn mask: + # we want to instead pad by (0, remaining_length), where remaining_length is: + # remaining_length: int = target_length - current_length + # TODO: re-enable tests/models/test_models_unet_2d_condition.py#test_model_xattn_padding + attention_mask = F.pad(attention_mask, (0, target_length), value=0.0) + + if out_dim == 3: + if attention_mask.shape[0] < batch_size * head_size: + attention_mask = attention_mask.repeat_interleave(head_size, dim=0) + elif out_dim == 4: + attention_mask = attention_mask.unsqueeze(1) + attention_mask = attention_mask.repeat_interleave(head_size, dim=1) + + return attention_mask + + def norm_encoder_hidden_states(self, encoder_hidden_states: torch.Tensor) -> torch.Tensor: + r""" + Normalize the encoder hidden states. Requires `self.norm_cross` to be specified when constructing the + `Attention` class. + + Args: + encoder_hidden_states (`torch.Tensor`): Hidden states of the encoder. + + Returns: + `torch.Tensor`: The normalized encoder hidden states. + """ + assert self.norm_cross is not None, "self.norm_cross must be defined to call self.norm_encoder_hidden_states" + + if isinstance(self.norm_cross, nn.LayerNorm): + encoder_hidden_states = self.norm_cross(encoder_hidden_states) + elif isinstance(self.norm_cross, nn.GroupNorm): + # Group norm norms along the channels dimension and expects + # input to be in the shape of (N, C, *). In this case, we want + # to norm along the hidden dimension, so we need to move + # (batch_size, sequence_length, hidden_size) -> + # (batch_size, hidden_size, sequence_length) + encoder_hidden_states = encoder_hidden_states.transpose(1, 2) + encoder_hidden_states = self.norm_cross(encoder_hidden_states) + encoder_hidden_states = encoder_hidden_states.transpose(1, 2) + else: + assert False + + return encoder_hidden_states + + @torch.no_grad() + def fuse_projections(self, fuse=True): + device = self.to_q.weight.data.device + dtype = self.to_q.weight.data.dtype + + if not self.is_cross_attention: + # fetch weight matrices. + concatenated_weights = torch.cat([self.to_q.weight.data, self.to_k.weight.data, self.to_v.weight.data]) + in_features = concatenated_weights.shape[1] + out_features = concatenated_weights.shape[0] + + # create a new single projection layer and copy over the weights. + self.to_qkv = nn.Linear(in_features, out_features, bias=self.use_bias, device=device, dtype=dtype) + self.to_qkv.weight.copy_(concatenated_weights) + if self.use_bias: + concatenated_bias = torch.cat([self.to_q.bias.data, self.to_k.bias.data, self.to_v.bias.data]) + self.to_qkv.bias.copy_(concatenated_bias) + + else: + concatenated_weights = torch.cat([self.to_k.weight.data, self.to_v.weight.data]) + in_features = concatenated_weights.shape[1] + out_features = concatenated_weights.shape[0] + + self.to_kv = nn.Linear(in_features, out_features, bias=self.use_bias, device=device, dtype=dtype) + self.to_kv.weight.copy_(concatenated_weights) + if self.use_bias: + concatenated_bias = torch.cat([self.to_k.bias.data, self.to_v.bias.data]) + self.to_kv.bias.copy_(concatenated_bias) + + # handle added projections for SD3 and others. + if ( + getattr(self, "add_q_proj", None) is not None + and getattr(self, "add_k_proj", None) is not None + and getattr(self, "add_v_proj", None) is not None + ): + concatenated_weights = torch.cat( + [self.add_q_proj.weight.data, self.add_k_proj.weight.data, self.add_v_proj.weight.data] + ) + in_features = concatenated_weights.shape[1] + out_features = concatenated_weights.shape[0] + + self.to_added_qkv = nn.Linear( + in_features, out_features, bias=self.added_proj_bias, device=device, dtype=dtype + ) + self.to_added_qkv.weight.copy_(concatenated_weights) + if self.added_proj_bias: + concatenated_bias = torch.cat( + [self.add_q_proj.bias.data, self.add_k_proj.bias.data, self.add_v_proj.bias.data] + ) + self.to_added_qkv.bias.copy_(concatenated_bias) + + self.fused_projections = fuse + + +class SanaMultiscaleAttentionProjection(nn.Module): + def __init__( + self, + in_channels: int, + num_attention_heads: int, + kernel_size: int, + ) -> None: + super().__init__() + + channels = 3 * in_channels + self.proj_in = nn.Conv2d( + channels, + channels, + kernel_size, + padding=kernel_size // 2, + groups=channels, + bias=False, + ) + self.proj_out = nn.Conv2d(channels, channels, 1, 1, 0, groups=3 * num_attention_heads, bias=False) + + def forward(self, hidden_states: torch.Tensor) -> torch.Tensor: + hidden_states = self.proj_in(hidden_states) + hidden_states = self.proj_out(hidden_states) + return hidden_states + + +class SanaMultiscaleLinearAttention(nn.Module): + r"""Lightweight multi-scale linear attention""" + + def __init__( + self, + in_channels: int, + out_channels: int, + num_attention_heads: Optional[int] = None, + attention_head_dim: int = 8, + mult: float = 1.0, + norm_type: str = "batch_norm", + kernel_sizes: Tuple[int, ...] = (5,), + eps: float = 1e-15, + residual_connection: bool = False, + ): + super().__init__() + + # To prevent circular import + from .normalization import get_normalization + + self.eps = eps + self.attention_head_dim = attention_head_dim + self.norm_type = norm_type + self.residual_connection = residual_connection + + num_attention_heads = ( + int(in_channels // attention_head_dim * mult) if num_attention_heads is None else num_attention_heads + ) + inner_dim = num_attention_heads * attention_head_dim + + self.to_q = nn.Linear(in_channels, inner_dim, bias=False) + self.to_k = nn.Linear(in_channels, inner_dim, bias=False) + self.to_v = nn.Linear(in_channels, inner_dim, bias=False) + + self.to_qkv_multiscale = nn.ModuleList() + for kernel_size in kernel_sizes: + self.to_qkv_multiscale.append( + SanaMultiscaleAttentionProjection(inner_dim, num_attention_heads, kernel_size) + ) + + self.nonlinearity = nn.ReLU() + self.to_out = nn.Linear(inner_dim * (1 + len(kernel_sizes)), out_channels, bias=False) + self.norm_out = get_normalization(norm_type, num_features=out_channels) + + self.processor = SanaMultiscaleAttnProcessor2_0() + + def apply_linear_attention(self, query: torch.Tensor, key: torch.Tensor, value: torch.Tensor) -> torch.Tensor: + value = F.pad(value, (0, 0, 0, 1), mode="constant", value=1) # Adds padding + scores = torch.matmul(value, key.transpose(-1, -2)) + hidden_states = torch.matmul(scores, query) + + hidden_states = hidden_states.to(dtype=torch.float32) + hidden_states = hidden_states[:, :, :-1] / (hidden_states[:, :, -1:] + self.eps) + return hidden_states + + def apply_quadratic_attention(self, query: torch.Tensor, key: torch.Tensor, value: torch.Tensor) -> torch.Tensor: + scores = torch.matmul(key.transpose(-1, -2), query) + scores = scores.to(dtype=torch.float32) + scores = scores / (torch.sum(scores, dim=2, keepdim=True) + self.eps) + hidden_states = torch.matmul(value, scores) + return hidden_states + + def forward(self, hidden_states: torch.Tensor) -> torch.Tensor: + return self.processor(self, hidden_states) + + +class MochiAttention(nn.Module): + def __init__( + self, + query_dim: int, + added_kv_proj_dim: int, + processor: "MochiAttnProcessor2_0", + heads: int = 8, + dim_head: int = 64, + dropout: float = 0.0, + bias: bool = False, + added_proj_bias: bool = True, + out_dim: Optional[int] = None, + out_context_dim: Optional[int] = None, + out_bias: bool = True, + context_pre_only: bool = False, + eps: float = 1e-5, + ): + super().__init__() + from .normalization import MochiRMSNorm + + self.inner_dim = out_dim if out_dim is not None else dim_head * heads + self.out_dim = out_dim if out_dim is not None else query_dim + self.out_context_dim = out_context_dim if out_context_dim else query_dim + self.context_pre_only = context_pre_only + + self.heads = out_dim // dim_head if out_dim is not None else heads + + self.norm_q = MochiRMSNorm(dim_head, eps, True) + self.norm_k = MochiRMSNorm(dim_head, eps, True) + self.norm_added_q = MochiRMSNorm(dim_head, eps, True) + self.norm_added_k = MochiRMSNorm(dim_head, eps, True) + + self.to_q = nn.Linear(query_dim, self.inner_dim, bias=bias) + self.to_k = nn.Linear(query_dim, self.inner_dim, bias=bias) + self.to_v = nn.Linear(query_dim, self.inner_dim, bias=bias) + + self.add_k_proj = nn.Linear(added_kv_proj_dim, self.inner_dim, bias=added_proj_bias) + self.add_v_proj = nn.Linear(added_kv_proj_dim, self.inner_dim, bias=added_proj_bias) + if self.context_pre_only is not None: + self.add_q_proj = nn.Linear(added_kv_proj_dim, self.inner_dim, bias=added_proj_bias) + + self.to_out = nn.ModuleList([]) + self.to_out.append(nn.Linear(self.inner_dim, self.out_dim, bias=out_bias)) + self.to_out.append(nn.Dropout(dropout)) + + if not self.context_pre_only: + self.to_add_out = nn.Linear(self.inner_dim, self.out_context_dim, bias=out_bias) + + self.processor = processor + + def forward( + self, + hidden_states: torch.Tensor, + encoder_hidden_states: Optional[torch.Tensor] = None, + attention_mask: Optional[torch.Tensor] = None, + **kwargs, + ): + return self.processor( + self, + hidden_states, + encoder_hidden_states=encoder_hidden_states, + attention_mask=attention_mask, + **kwargs, + ) + + +class MochiAttnProcessor2_0: + """Attention processor used in Mochi.""" + + def __init__(self): + if not hasattr(F, "scaled_dot_product_attention"): + raise ImportError("MochiAttnProcessor2_0 requires PyTorch 2.0. To use it, please upgrade PyTorch to 2.0.") + + def __call__( + self, + attn: "MochiAttention", + hidden_states: torch.Tensor, + encoder_hidden_states: torch.Tensor, + attention_mask: torch.Tensor, + image_rotary_emb: Optional[torch.Tensor] = None, + ) -> torch.Tensor: + query = attn.to_q(hidden_states) + key = attn.to_k(hidden_states) + value = attn.to_v(hidden_states) + + query = query.unflatten(2, (attn.heads, -1)) + key = key.unflatten(2, (attn.heads, -1)) + value = value.unflatten(2, (attn.heads, -1)) + + if attn.norm_q is not None: + query = attn.norm_q(query) + if attn.norm_k is not None: + key = attn.norm_k(key) + + encoder_query = attn.add_q_proj(encoder_hidden_states) + encoder_key = attn.add_k_proj(encoder_hidden_states) + encoder_value = attn.add_v_proj(encoder_hidden_states) + + encoder_query = encoder_query.unflatten(2, (attn.heads, -1)) + encoder_key = encoder_key.unflatten(2, (attn.heads, -1)) + encoder_value = encoder_value.unflatten(2, (attn.heads, -1)) + + if attn.norm_added_q is not None: + encoder_query = attn.norm_added_q(encoder_query) + if attn.norm_added_k is not None: + encoder_key = attn.norm_added_k(encoder_key) + + if image_rotary_emb is not None: + + def apply_rotary_emb(x, freqs_cos, freqs_sin): + x_even = x[..., 0::2].float() + x_odd = x[..., 1::2].float() + + cos = (x_even * freqs_cos - x_odd * freqs_sin).to(x.dtype) + sin = (x_even * freqs_sin + x_odd * freqs_cos).to(x.dtype) + + return torch.stack([cos, sin], dim=-1).flatten(-2) + + query = apply_rotary_emb(query, *image_rotary_emb) + key = apply_rotary_emb(key, *image_rotary_emb) + + query, key, value = query.transpose(1, 2), key.transpose(1, 2), value.transpose(1, 2) + encoder_query, encoder_key, encoder_value = ( + encoder_query.transpose(1, 2), + encoder_key.transpose(1, 2), + encoder_value.transpose(1, 2), + ) + + sequence_length = query.size(2) + encoder_sequence_length = encoder_query.size(2) + total_length = sequence_length + encoder_sequence_length + + batch_size, heads, _, dim = query.shape + attn_outputs = [] + for idx in range(batch_size): + mask = attention_mask[idx][None, :] + valid_prompt_token_indices = torch.nonzero(mask.flatten(), as_tuple=False).flatten() + + valid_encoder_query = encoder_query[idx : idx + 1, :, valid_prompt_token_indices, :] + valid_encoder_key = encoder_key[idx : idx + 1, :, valid_prompt_token_indices, :] + valid_encoder_value = encoder_value[idx : idx + 1, :, valid_prompt_token_indices, :] + + valid_query = torch.cat([query[idx : idx + 1], valid_encoder_query], dim=2) + valid_key = torch.cat([key[idx : idx + 1], valid_encoder_key], dim=2) + valid_value = torch.cat([value[idx : idx + 1], valid_encoder_value], dim=2) + + attn_output = F.scaled_dot_product_attention( + valid_query, valid_key, valid_value, dropout_p=0.0, is_causal=False + ) + valid_sequence_length = attn_output.size(2) + attn_output = F.pad(attn_output, (0, 0, 0, total_length - valid_sequence_length)) + attn_outputs.append(attn_output) + + hidden_states = torch.cat(attn_outputs, dim=0) + hidden_states = hidden_states.transpose(1, 2).flatten(2, 3) + + hidden_states, encoder_hidden_states = hidden_states.split_with_sizes( + (sequence_length, encoder_sequence_length), dim=1 + ) + + # linear proj + hidden_states = attn.to_out[0](hidden_states) + # dropout + hidden_states = attn.to_out[1](hidden_states) + + if hasattr(attn, "to_add_out"): + encoder_hidden_states = attn.to_add_out(encoder_hidden_states) + + return hidden_states, encoder_hidden_states + + +class AttnProcessor: + r""" + Default processor for performing attention-related computations. + """ + + def __call__( + self, + attn: Attention, + hidden_states: torch.Tensor, + encoder_hidden_states: Optional[torch.Tensor] = None, + attention_mask: Optional[torch.Tensor] = None, + temb: Optional[torch.Tensor] = None, + *args, + **kwargs, + ) -> torch.Tensor: + if len(args) > 0 or kwargs.get("scale", None) is not None: + deprecation_message = "The `scale` argument is deprecated and will be ignored. Please remove it, as passing it will raise an error in the future. `scale` should directly be passed while calling the underlying pipeline component i.e., via `cross_attention_kwargs`." + deprecate("scale", "1.0.0", deprecation_message) + + residual = hidden_states + + if attn.spatial_norm is not None: + hidden_states = attn.spatial_norm(hidden_states, temb) + + input_ndim = hidden_states.ndim + + if input_ndim == 4: + batch_size, channel, height, width = hidden_states.shape + hidden_states = hidden_states.view(batch_size, channel, height * width).transpose(1, 2) + + batch_size, sequence_length, _ = ( + hidden_states.shape if encoder_hidden_states is None else encoder_hidden_states.shape + ) + attention_mask = attn.prepare_attention_mask(attention_mask, sequence_length, batch_size) + + if attn.group_norm is not None: + hidden_states = attn.group_norm(hidden_states.transpose(1, 2)).transpose(1, 2) + + query = attn.to_q(hidden_states) + + if encoder_hidden_states is None: + encoder_hidden_states = hidden_states + elif attn.norm_cross: + encoder_hidden_states = attn.norm_encoder_hidden_states(encoder_hidden_states) + + key = attn.to_k(encoder_hidden_states) + value = attn.to_v(encoder_hidden_states) + + query = attn.head_to_batch_dim(query) + key = attn.head_to_batch_dim(key) + value = attn.head_to_batch_dim(value) + + attention_probs = attn.get_attention_scores(query, key, attention_mask) + hidden_states = torch.bmm(attention_probs, value) + hidden_states = attn.batch_to_head_dim(hidden_states) + + # linear proj + hidden_states = attn.to_out[0](hidden_states) + # dropout + hidden_states = attn.to_out[1](hidden_states) + + if input_ndim == 4: + hidden_states = hidden_states.transpose(-1, -2).reshape(batch_size, channel, height, width) + + if attn.residual_connection: + hidden_states = hidden_states + residual + + hidden_states = hidden_states / attn.rescale_output_factor + + return hidden_states + + +class CustomDiffusionAttnProcessor(nn.Module): + r""" + Processor for implementing attention for the Custom Diffusion method. + + Args: + train_kv (`bool`, defaults to `True`): + Whether to newly train the key and value matrices corresponding to the text features. + train_q_out (`bool`, defaults to `True`): + Whether to newly train query matrices corresponding to the latent image features. + hidden_size (`int`, *optional*, defaults to `None`): + The hidden size of the attention layer. + cross_attention_dim (`int`, *optional*, defaults to `None`): + The number of channels in the `encoder_hidden_states`. + out_bias (`bool`, defaults to `True`): + Whether to include the bias parameter in `train_q_out`. + dropout (`float`, *optional*, defaults to 0.0): + The dropout probability to use. + """ + + def __init__( + self, + train_kv: bool = True, + train_q_out: bool = True, + hidden_size: Optional[int] = None, + cross_attention_dim: Optional[int] = None, + out_bias: bool = True, + dropout: float = 0.0, + ): + super().__init__() + self.train_kv = train_kv + self.train_q_out = train_q_out + + self.hidden_size = hidden_size + self.cross_attention_dim = cross_attention_dim + + # `_custom_diffusion` id for easy serialization and loading. + if self.train_kv: + self.to_k_custom_diffusion = nn.Linear(cross_attention_dim or hidden_size, hidden_size, bias=False) + self.to_v_custom_diffusion = nn.Linear(cross_attention_dim or hidden_size, hidden_size, bias=False) + if self.train_q_out: + self.to_q_custom_diffusion = nn.Linear(hidden_size, hidden_size, bias=False) + self.to_out_custom_diffusion = nn.ModuleList([]) + self.to_out_custom_diffusion.append(nn.Linear(hidden_size, hidden_size, bias=out_bias)) + self.to_out_custom_diffusion.append(nn.Dropout(dropout)) + + def __call__( + self, + attn: Attention, + hidden_states: torch.Tensor, + encoder_hidden_states: Optional[torch.Tensor] = None, + attention_mask: Optional[torch.Tensor] = None, + ) -> torch.Tensor: + batch_size, sequence_length, _ = hidden_states.shape + attention_mask = attn.prepare_attention_mask(attention_mask, sequence_length, batch_size) + if self.train_q_out: + query = self.to_q_custom_diffusion(hidden_states).to(attn.to_q.weight.dtype) + else: + query = attn.to_q(hidden_states.to(attn.to_q.weight.dtype)) + + if encoder_hidden_states is None: + crossattn = False + encoder_hidden_states = hidden_states + else: + crossattn = True + if attn.norm_cross: + encoder_hidden_states = attn.norm_encoder_hidden_states(encoder_hidden_states) + + if self.train_kv: + key = self.to_k_custom_diffusion(encoder_hidden_states.to(self.to_k_custom_diffusion.weight.dtype)) + value = self.to_v_custom_diffusion(encoder_hidden_states.to(self.to_v_custom_diffusion.weight.dtype)) + key = key.to(attn.to_q.weight.dtype) + value = value.to(attn.to_q.weight.dtype) + else: + key = attn.to_k(encoder_hidden_states) + value = attn.to_v(encoder_hidden_states) + + if crossattn: + detach = torch.ones_like(key) + detach[:, :1, :] = detach[:, :1, :] * 0.0 + key = detach * key + (1 - detach) * key.detach() + value = detach * value + (1 - detach) * value.detach() + + query = attn.head_to_batch_dim(query) + key = attn.head_to_batch_dim(key) + value = attn.head_to_batch_dim(value) + + attention_probs = attn.get_attention_scores(query, key, attention_mask) + hidden_states = torch.bmm(attention_probs, value) + hidden_states = attn.batch_to_head_dim(hidden_states) + + if self.train_q_out: + # linear proj + hidden_states = self.to_out_custom_diffusion[0](hidden_states) + # dropout + hidden_states = self.to_out_custom_diffusion[1](hidden_states) + else: + # linear proj + hidden_states = attn.to_out[0](hidden_states) + # dropout + hidden_states = attn.to_out[1](hidden_states) + + return hidden_states + + +class AttnAddedKVProcessor: + r""" + Processor for performing attention-related computations with extra learnable key and value matrices for the text + encoder. + """ + + def __call__( + self, + attn: Attention, + hidden_states: torch.Tensor, + encoder_hidden_states: Optional[torch.Tensor] = None, + attention_mask: Optional[torch.Tensor] = None, + *args, + **kwargs, + ) -> torch.Tensor: + if len(args) > 0 or kwargs.get("scale", None) is not None: + deprecation_message = "The `scale` argument is deprecated and will be ignored. Please remove it, as passing it will raise an error in the future. `scale` should directly be passed while calling the underlying pipeline component i.e., via `cross_attention_kwargs`." + deprecate("scale", "1.0.0", deprecation_message) + + residual = hidden_states + + hidden_states = hidden_states.view(hidden_states.shape[0], hidden_states.shape[1], -1).transpose(1, 2) + batch_size, sequence_length, _ = hidden_states.shape + + attention_mask = attn.prepare_attention_mask(attention_mask, sequence_length, batch_size) + + if encoder_hidden_states is None: + encoder_hidden_states = hidden_states + elif attn.norm_cross: + encoder_hidden_states = attn.norm_encoder_hidden_states(encoder_hidden_states) + + hidden_states = attn.group_norm(hidden_states.transpose(1, 2)).transpose(1, 2) + + query = attn.to_q(hidden_states) + query = attn.head_to_batch_dim(query) + + encoder_hidden_states_key_proj = attn.add_k_proj(encoder_hidden_states) + encoder_hidden_states_value_proj = attn.add_v_proj(encoder_hidden_states) + encoder_hidden_states_key_proj = attn.head_to_batch_dim(encoder_hidden_states_key_proj) + encoder_hidden_states_value_proj = attn.head_to_batch_dim(encoder_hidden_states_value_proj) + + if not attn.only_cross_attention: + key = attn.to_k(hidden_states) + value = attn.to_v(hidden_states) + key = attn.head_to_batch_dim(key) + value = attn.head_to_batch_dim(value) + key = torch.cat([encoder_hidden_states_key_proj, key], dim=1) + value = torch.cat([encoder_hidden_states_value_proj, value], dim=1) + else: + key = encoder_hidden_states_key_proj + value = encoder_hidden_states_value_proj + + attention_probs = attn.get_attention_scores(query, key, attention_mask) + hidden_states = torch.bmm(attention_probs, value) + hidden_states = attn.batch_to_head_dim(hidden_states) + + # linear proj + hidden_states = attn.to_out[0](hidden_states) + # dropout + hidden_states = attn.to_out[1](hidden_states) + + hidden_states = hidden_states.transpose(-1, -2).reshape(residual.shape) + hidden_states = hidden_states + residual + + return hidden_states + + +class AttnAddedKVProcessor2_0: + r""" + Processor for performing scaled dot-product attention (enabled by default if you're using PyTorch 2.0), with extra + learnable key and value matrices for the text encoder. + """ + + def __init__(self): + if not hasattr(F, "scaled_dot_product_attention"): + raise ImportError( + "AttnAddedKVProcessor2_0 requires PyTorch 2.0, to use it, please upgrade PyTorch to 2.0." + ) + + def __call__( + self, + attn: Attention, + hidden_states: torch.Tensor, + encoder_hidden_states: Optional[torch.Tensor] = None, + attention_mask: Optional[torch.Tensor] = None, + *args, + **kwargs, + ) -> torch.Tensor: + if len(args) > 0 or kwargs.get("scale", None) is not None: + deprecation_message = "The `scale` argument is deprecated and will be ignored. Please remove it, as passing it will raise an error in the future. `scale` should directly be passed while calling the underlying pipeline component i.e., via `cross_attention_kwargs`." + deprecate("scale", "1.0.0", deprecation_message) + + residual = hidden_states + + hidden_states = hidden_states.view(hidden_states.shape[0], hidden_states.shape[1], -1).transpose(1, 2) + batch_size, sequence_length, _ = hidden_states.shape + + attention_mask = attn.prepare_attention_mask(attention_mask, sequence_length, batch_size, out_dim=4) + + if encoder_hidden_states is None: + encoder_hidden_states = hidden_states + elif attn.norm_cross: + encoder_hidden_states = attn.norm_encoder_hidden_states(encoder_hidden_states) + + hidden_states = attn.group_norm(hidden_states.transpose(1, 2)).transpose(1, 2) + + query = attn.to_q(hidden_states) + query = attn.head_to_batch_dim(query, out_dim=4) + + encoder_hidden_states_key_proj = attn.add_k_proj(encoder_hidden_states) + encoder_hidden_states_value_proj = attn.add_v_proj(encoder_hidden_states) + encoder_hidden_states_key_proj = attn.head_to_batch_dim(encoder_hidden_states_key_proj, out_dim=4) + encoder_hidden_states_value_proj = attn.head_to_batch_dim(encoder_hidden_states_value_proj, out_dim=4) + + if not attn.only_cross_attention: + key = attn.to_k(hidden_states) + value = attn.to_v(hidden_states) + key = attn.head_to_batch_dim(key, out_dim=4) + value = attn.head_to_batch_dim(value, out_dim=4) + key = torch.cat([encoder_hidden_states_key_proj, key], dim=2) + value = torch.cat([encoder_hidden_states_value_proj, value], dim=2) + else: + key = encoder_hidden_states_key_proj + value = encoder_hidden_states_value_proj + + # the output of sdp = (batch, num_heads, seq_len, head_dim) + # TODO: add support for attn.scale when we move to Torch 2.1 + hidden_states = F.scaled_dot_product_attention( + query, key, value, attn_mask=attention_mask, dropout_p=0.0, is_causal=False + ) + hidden_states = hidden_states.transpose(1, 2).reshape(batch_size, -1, residual.shape[1]) + + # linear proj + hidden_states = attn.to_out[0](hidden_states) + # dropout + hidden_states = attn.to_out[1](hidden_states) + + hidden_states = hidden_states.transpose(-1, -2).reshape(residual.shape) + hidden_states = hidden_states + residual + + return hidden_states + + +class JointAttnProcessor2_0: + """Attention processor used typically in processing the SD3-like self-attention projections.""" + + def __init__(self): + if not hasattr(F, "scaled_dot_product_attention"): + raise ImportError("AttnProcessor2_0 requires PyTorch 2.0, to use it, please upgrade PyTorch to 2.0.") + + def __call__( + self, + attn: Attention, + hidden_states: torch.FloatTensor, + encoder_hidden_states: torch.FloatTensor = None, + attention_mask: Optional[torch.FloatTensor] = None, + *args, + **kwargs, + ) -> torch.FloatTensor: + residual = hidden_states + + batch_size = hidden_states.shape[0] + + # `sample` projections. + query = attn.to_q(hidden_states) + key = attn.to_k(hidden_states) + value = attn.to_v(hidden_states) + + inner_dim = key.shape[-1] + head_dim = inner_dim // attn.heads + + query = query.view(batch_size, -1, attn.heads, head_dim).transpose(1, 2) + key = key.view(batch_size, -1, attn.heads, head_dim).transpose(1, 2) + value = value.view(batch_size, -1, attn.heads, head_dim).transpose(1, 2) + + if attn.norm_q is not None: + query = attn.norm_q(query) + if attn.norm_k is not None: + key = attn.norm_k(key) + + # `context` projections. + if encoder_hidden_states is not None: + encoder_hidden_states_query_proj = attn.add_q_proj(encoder_hidden_states) + encoder_hidden_states_key_proj = attn.add_k_proj(encoder_hidden_states) + encoder_hidden_states_value_proj = attn.add_v_proj(encoder_hidden_states) + + encoder_hidden_states_query_proj = encoder_hidden_states_query_proj.view( + batch_size, -1, attn.heads, head_dim + ).transpose(1, 2) + encoder_hidden_states_key_proj = encoder_hidden_states_key_proj.view( + batch_size, -1, attn.heads, head_dim + ).transpose(1, 2) + encoder_hidden_states_value_proj = encoder_hidden_states_value_proj.view( + batch_size, -1, attn.heads, head_dim + ).transpose(1, 2) + + if attn.norm_added_q is not None: + encoder_hidden_states_query_proj = attn.norm_added_q(encoder_hidden_states_query_proj) + if attn.norm_added_k is not None: + encoder_hidden_states_key_proj = attn.norm_added_k(encoder_hidden_states_key_proj) + + query = torch.cat([query, encoder_hidden_states_query_proj], dim=2) + key = torch.cat([key, encoder_hidden_states_key_proj], dim=2) + value = torch.cat([value, encoder_hidden_states_value_proj], dim=2) + + hidden_states = F.scaled_dot_product_attention(query, key, value, dropout_p=0.0, is_causal=False) + hidden_states = hidden_states.transpose(1, 2).reshape(batch_size, -1, attn.heads * head_dim) + hidden_states = hidden_states.to(query.dtype) + + if encoder_hidden_states is not None: + # Split the attention outputs. + hidden_states, encoder_hidden_states = ( + hidden_states[:, : residual.shape[1]], + hidden_states[:, residual.shape[1] :], + ) + if not attn.context_pre_only: + encoder_hidden_states = attn.to_add_out(encoder_hidden_states) + + # linear proj + hidden_states = attn.to_out[0](hidden_states) + # dropout + hidden_states = attn.to_out[1](hidden_states) + + if encoder_hidden_states is not None: + return hidden_states, encoder_hidden_states + else: + return hidden_states + + +class PAGJointAttnProcessor2_0: + """Attention processor used typically in processing the SD3-like self-attention projections.""" + + def __init__(self): + if not hasattr(F, "scaled_dot_product_attention"): + raise ImportError( + "PAGJointAttnProcessor2_0 requires PyTorch 2.0, to use it, please upgrade PyTorch to 2.0." + ) + + def __call__( + self, + attn: Attention, + hidden_states: torch.FloatTensor, + encoder_hidden_states: torch.FloatTensor = None, + attention_mask: Optional[torch.FloatTensor] = None, + ) -> torch.FloatTensor: + residual = hidden_states + + input_ndim = hidden_states.ndim + if input_ndim == 4: + batch_size, channel, height, width = hidden_states.shape + hidden_states = hidden_states.view(batch_size, channel, height * width).transpose(1, 2) + context_input_ndim = encoder_hidden_states.ndim + if context_input_ndim == 4: + batch_size, channel, height, width = encoder_hidden_states.shape + encoder_hidden_states = encoder_hidden_states.view(batch_size, channel, height * width).transpose(1, 2) + + # store the length of image patch sequences to create a mask that prevents interaction between patches + # similar to making the self-attention map an identity matrix + identity_block_size = hidden_states.shape[1] + + # chunk + hidden_states_org, hidden_states_ptb = hidden_states.chunk(2) + encoder_hidden_states_org, encoder_hidden_states_ptb = encoder_hidden_states.chunk(2) + + ################## original path ################## + batch_size = encoder_hidden_states_org.shape[0] + + # `sample` projections. + query_org = attn.to_q(hidden_states_org) + key_org = attn.to_k(hidden_states_org) + value_org = attn.to_v(hidden_states_org) + + # `context` projections. + encoder_hidden_states_org_query_proj = attn.add_q_proj(encoder_hidden_states_org) + encoder_hidden_states_org_key_proj = attn.add_k_proj(encoder_hidden_states_org) + encoder_hidden_states_org_value_proj = attn.add_v_proj(encoder_hidden_states_org) + + # attention + query_org = torch.cat([query_org, encoder_hidden_states_org_query_proj], dim=1) + key_org = torch.cat([key_org, encoder_hidden_states_org_key_proj], dim=1) + value_org = torch.cat([value_org, encoder_hidden_states_org_value_proj], dim=1) + + inner_dim = key_org.shape[-1] + head_dim = inner_dim // attn.heads + query_org = query_org.view(batch_size, -1, attn.heads, head_dim).transpose(1, 2) + key_org = key_org.view(batch_size, -1, attn.heads, head_dim).transpose(1, 2) + value_org = value_org.view(batch_size, -1, attn.heads, head_dim).transpose(1, 2) + + hidden_states_org = F.scaled_dot_product_attention( + query_org, key_org, value_org, dropout_p=0.0, is_causal=False + ) + hidden_states_org = hidden_states_org.transpose(1, 2).reshape(batch_size, -1, attn.heads * head_dim) + hidden_states_org = hidden_states_org.to(query_org.dtype) + + # Split the attention outputs. + hidden_states_org, encoder_hidden_states_org = ( + hidden_states_org[:, : residual.shape[1]], + hidden_states_org[:, residual.shape[1] :], + ) + + # linear proj + hidden_states_org = attn.to_out[0](hidden_states_org) + # dropout + hidden_states_org = attn.to_out[1](hidden_states_org) + if not attn.context_pre_only: + encoder_hidden_states_org = attn.to_add_out(encoder_hidden_states_org) + + if input_ndim == 4: + hidden_states_org = hidden_states_org.transpose(-1, -2).reshape(batch_size, channel, height, width) + if context_input_ndim == 4: + encoder_hidden_states_org = encoder_hidden_states_org.transpose(-1, -2).reshape( + batch_size, channel, height, width + ) + + ################## perturbed path ################## + + batch_size = encoder_hidden_states_ptb.shape[0] + + # `sample` projections. + query_ptb = attn.to_q(hidden_states_ptb) + key_ptb = attn.to_k(hidden_states_ptb) + value_ptb = attn.to_v(hidden_states_ptb) + + # `context` projections. + encoder_hidden_states_ptb_query_proj = attn.add_q_proj(encoder_hidden_states_ptb) + encoder_hidden_states_ptb_key_proj = attn.add_k_proj(encoder_hidden_states_ptb) + encoder_hidden_states_ptb_value_proj = attn.add_v_proj(encoder_hidden_states_ptb) + + # attention + query_ptb = torch.cat([query_ptb, encoder_hidden_states_ptb_query_proj], dim=1) + key_ptb = torch.cat([key_ptb, encoder_hidden_states_ptb_key_proj], dim=1) + value_ptb = torch.cat([value_ptb, encoder_hidden_states_ptb_value_proj], dim=1) + + inner_dim = key_ptb.shape[-1] + head_dim = inner_dim // attn.heads + query_ptb = query_ptb.view(batch_size, -1, attn.heads, head_dim).transpose(1, 2) + key_ptb = key_ptb.view(batch_size, -1, attn.heads, head_dim).transpose(1, 2) + value_ptb = value_ptb.view(batch_size, -1, attn.heads, head_dim).transpose(1, 2) + + # create a full mask with all entries set to 0 + seq_len = query_ptb.size(2) + full_mask = torch.zeros((seq_len, seq_len), device=query_ptb.device, dtype=query_ptb.dtype) + + # set the attention value between image patches to -inf + full_mask[:identity_block_size, :identity_block_size] = float("-inf") + + # set the diagonal of the attention value between image patches to 0 + full_mask[:identity_block_size, :identity_block_size].fill_diagonal_(0) + + # expand the mask to match the attention weights shape + full_mask = full_mask.unsqueeze(0).unsqueeze(0) # Add batch and num_heads dimensions + + hidden_states_ptb = F.scaled_dot_product_attention( + query_ptb, key_ptb, value_ptb, attn_mask=full_mask, dropout_p=0.0, is_causal=False + ) + hidden_states_ptb = hidden_states_ptb.transpose(1, 2).reshape(batch_size, -1, attn.heads * head_dim) + hidden_states_ptb = hidden_states_ptb.to(query_ptb.dtype) + + # split the attention outputs. + hidden_states_ptb, encoder_hidden_states_ptb = ( + hidden_states_ptb[:, : residual.shape[1]], + hidden_states_ptb[:, residual.shape[1] :], + ) + + # linear proj + hidden_states_ptb = attn.to_out[0](hidden_states_ptb) + # dropout + hidden_states_ptb = attn.to_out[1](hidden_states_ptb) + if not attn.context_pre_only: + encoder_hidden_states_ptb = attn.to_add_out(encoder_hidden_states_ptb) + + if input_ndim == 4: + hidden_states_ptb = hidden_states_ptb.transpose(-1, -2).reshape(batch_size, channel, height, width) + if context_input_ndim == 4: + encoder_hidden_states_ptb = encoder_hidden_states_ptb.transpose(-1, -2).reshape( + batch_size, channel, height, width + ) + + ################ concat ############### + hidden_states = torch.cat([hidden_states_org, hidden_states_ptb]) + encoder_hidden_states = torch.cat([encoder_hidden_states_org, encoder_hidden_states_ptb]) + + return hidden_states, encoder_hidden_states + + +class PAGCFGJointAttnProcessor2_0: + """Attention processor used typically in processing the SD3-like self-attention projections.""" + + def __init__(self): + if not hasattr(F, "scaled_dot_product_attention"): + raise ImportError( + "PAGCFGJointAttnProcessor2_0 requires PyTorch 2.0, to use it, please upgrade PyTorch to 2.0." + ) + + def __call__( + self, + attn: Attention, + hidden_states: torch.FloatTensor, + encoder_hidden_states: torch.FloatTensor = None, + attention_mask: Optional[torch.FloatTensor] = None, + *args, + **kwargs, + ) -> torch.FloatTensor: + residual = hidden_states + + input_ndim = hidden_states.ndim + if input_ndim == 4: + batch_size, channel, height, width = hidden_states.shape + hidden_states = hidden_states.view(batch_size, channel, height * width).transpose(1, 2) + context_input_ndim = encoder_hidden_states.ndim + if context_input_ndim == 4: + batch_size, channel, height, width = encoder_hidden_states.shape + encoder_hidden_states = encoder_hidden_states.view(batch_size, channel, height * width).transpose(1, 2) + + identity_block_size = hidden_states.shape[ + 1 + ] # patch embeddings width * height (correspond to self-attention map width or height) + + # chunk + hidden_states_uncond, hidden_states_org, hidden_states_ptb = hidden_states.chunk(3) + hidden_states_org = torch.cat([hidden_states_uncond, hidden_states_org]) + + ( + encoder_hidden_states_uncond, + encoder_hidden_states_org, + encoder_hidden_states_ptb, + ) = encoder_hidden_states.chunk(3) + encoder_hidden_states_org = torch.cat([encoder_hidden_states_uncond, encoder_hidden_states_org]) + + ################## original path ################## + batch_size = encoder_hidden_states_org.shape[0] + + # `sample` projections. + query_org = attn.to_q(hidden_states_org) + key_org = attn.to_k(hidden_states_org) + value_org = attn.to_v(hidden_states_org) + + # `context` projections. + encoder_hidden_states_org_query_proj = attn.add_q_proj(encoder_hidden_states_org) + encoder_hidden_states_org_key_proj = attn.add_k_proj(encoder_hidden_states_org) + encoder_hidden_states_org_value_proj = attn.add_v_proj(encoder_hidden_states_org) + + # attention + query_org = torch.cat([query_org, encoder_hidden_states_org_query_proj], dim=1) + key_org = torch.cat([key_org, encoder_hidden_states_org_key_proj], dim=1) + value_org = torch.cat([value_org, encoder_hidden_states_org_value_proj], dim=1) + + inner_dim = key_org.shape[-1] + head_dim = inner_dim // attn.heads + query_org = query_org.view(batch_size, -1, attn.heads, head_dim).transpose(1, 2) + key_org = key_org.view(batch_size, -1, attn.heads, head_dim).transpose(1, 2) + value_org = value_org.view(batch_size, -1, attn.heads, head_dim).transpose(1, 2) + + hidden_states_org = F.scaled_dot_product_attention( + query_org, key_org, value_org, dropout_p=0.0, is_causal=False + ) + hidden_states_org = hidden_states_org.transpose(1, 2).reshape(batch_size, -1, attn.heads * head_dim) + hidden_states_org = hidden_states_org.to(query_org.dtype) + + # Split the attention outputs. + hidden_states_org, encoder_hidden_states_org = ( + hidden_states_org[:, : residual.shape[1]], + hidden_states_org[:, residual.shape[1] :], + ) + + # linear proj + hidden_states_org = attn.to_out[0](hidden_states_org) + # dropout + hidden_states_org = attn.to_out[1](hidden_states_org) + if not attn.context_pre_only: + encoder_hidden_states_org = attn.to_add_out(encoder_hidden_states_org) + + if input_ndim == 4: + hidden_states_org = hidden_states_org.transpose(-1, -2).reshape(batch_size, channel, height, width) + if context_input_ndim == 4: + encoder_hidden_states_org = encoder_hidden_states_org.transpose(-1, -2).reshape( + batch_size, channel, height, width + ) + + ################## perturbed path ################## + + batch_size = encoder_hidden_states_ptb.shape[0] + + # `sample` projections. + query_ptb = attn.to_q(hidden_states_ptb) + key_ptb = attn.to_k(hidden_states_ptb) + value_ptb = attn.to_v(hidden_states_ptb) + + # `context` projections. + encoder_hidden_states_ptb_query_proj = attn.add_q_proj(encoder_hidden_states_ptb) + encoder_hidden_states_ptb_key_proj = attn.add_k_proj(encoder_hidden_states_ptb) + encoder_hidden_states_ptb_value_proj = attn.add_v_proj(encoder_hidden_states_ptb) + + # attention + query_ptb = torch.cat([query_ptb, encoder_hidden_states_ptb_query_proj], dim=1) + key_ptb = torch.cat([key_ptb, encoder_hidden_states_ptb_key_proj], dim=1) + value_ptb = torch.cat([value_ptb, encoder_hidden_states_ptb_value_proj], dim=1) + + inner_dim = key_ptb.shape[-1] + head_dim = inner_dim // attn.heads + query_ptb = query_ptb.view(batch_size, -1, attn.heads, head_dim).transpose(1, 2) + key_ptb = key_ptb.view(batch_size, -1, attn.heads, head_dim).transpose(1, 2) + value_ptb = value_ptb.view(batch_size, -1, attn.heads, head_dim).transpose(1, 2) + + # create a full mask with all entries set to 0 + seq_len = query_ptb.size(2) + full_mask = torch.zeros((seq_len, seq_len), device=query_ptb.device, dtype=query_ptb.dtype) + + # set the attention value between image patches to -inf + full_mask[:identity_block_size, :identity_block_size] = float("-inf") + + # set the diagonal of the attention value between image patches to 0 + full_mask[:identity_block_size, :identity_block_size].fill_diagonal_(0) + + # expand the mask to match the attention weights shape + full_mask = full_mask.unsqueeze(0).unsqueeze(0) # Add batch and num_heads dimensions + + hidden_states_ptb = F.scaled_dot_product_attention( + query_ptb, key_ptb, value_ptb, attn_mask=full_mask, dropout_p=0.0, is_causal=False + ) + hidden_states_ptb = hidden_states_ptb.transpose(1, 2).reshape(batch_size, -1, attn.heads * head_dim) + hidden_states_ptb = hidden_states_ptb.to(query_ptb.dtype) + + # split the attention outputs. + hidden_states_ptb, encoder_hidden_states_ptb = ( + hidden_states_ptb[:, : residual.shape[1]], + hidden_states_ptb[:, residual.shape[1] :], + ) + + # linear proj + hidden_states_ptb = attn.to_out[0](hidden_states_ptb) + # dropout + hidden_states_ptb = attn.to_out[1](hidden_states_ptb) + if not attn.context_pre_only: + encoder_hidden_states_ptb = attn.to_add_out(encoder_hidden_states_ptb) + + if input_ndim == 4: + hidden_states_ptb = hidden_states_ptb.transpose(-1, -2).reshape(batch_size, channel, height, width) + if context_input_ndim == 4: + encoder_hidden_states_ptb = encoder_hidden_states_ptb.transpose(-1, -2).reshape( + batch_size, channel, height, width + ) + + ################ concat ############### + hidden_states = torch.cat([hidden_states_org, hidden_states_ptb]) + encoder_hidden_states = torch.cat([encoder_hidden_states_org, encoder_hidden_states_ptb]) + + return hidden_states, encoder_hidden_states + + +class FusedJointAttnProcessor2_0: + """Attention processor used typically in processing the SD3-like self-attention projections.""" + + def __init__(self): + if not hasattr(F, "scaled_dot_product_attention"): + raise ImportError("AttnProcessor2_0 requires PyTorch 2.0, to use it, please upgrade PyTorch to 2.0.") + + def __call__( + self, + attn: Attention, + hidden_states: torch.FloatTensor, + encoder_hidden_states: torch.FloatTensor = None, + attention_mask: Optional[torch.FloatTensor] = None, + *args, + **kwargs, + ) -> torch.FloatTensor: + residual = hidden_states + + input_ndim = hidden_states.ndim + if input_ndim == 4: + batch_size, channel, height, width = hidden_states.shape + hidden_states = hidden_states.view(batch_size, channel, height * width).transpose(1, 2) + context_input_ndim = encoder_hidden_states.ndim + if context_input_ndim == 4: + batch_size, channel, height, width = encoder_hidden_states.shape + encoder_hidden_states = encoder_hidden_states.view(batch_size, channel, height * width).transpose(1, 2) + + batch_size = encoder_hidden_states.shape[0] + + # `sample` projections. + qkv = attn.to_qkv(hidden_states) + split_size = qkv.shape[-1] // 3 + query, key, value = torch.split(qkv, split_size, dim=-1) + + # `context` projections. + encoder_qkv = attn.to_added_qkv(encoder_hidden_states) + split_size = encoder_qkv.shape[-1] // 3 + ( + encoder_hidden_states_query_proj, + encoder_hidden_states_key_proj, + encoder_hidden_states_value_proj, + ) = torch.split(encoder_qkv, split_size, dim=-1) + + # attention + query = torch.cat([query, encoder_hidden_states_query_proj], dim=1) + key = torch.cat([key, encoder_hidden_states_key_proj], dim=1) + value = torch.cat([value, encoder_hidden_states_value_proj], dim=1) + + inner_dim = key.shape[-1] + head_dim = inner_dim // attn.heads + query = query.view(batch_size, -1, attn.heads, head_dim).transpose(1, 2) + key = key.view(batch_size, -1, attn.heads, head_dim).transpose(1, 2) + value = value.view(batch_size, -1, attn.heads, head_dim).transpose(1, 2) + + hidden_states = F.scaled_dot_product_attention(query, key, value, dropout_p=0.0, is_causal=False) + hidden_states = hidden_states.transpose(1, 2).reshape(batch_size, -1, attn.heads * head_dim) + hidden_states = hidden_states.to(query.dtype) + + # Split the attention outputs. + hidden_states, encoder_hidden_states = ( + hidden_states[:, : residual.shape[1]], + hidden_states[:, residual.shape[1] :], + ) + + # linear proj + hidden_states = attn.to_out[0](hidden_states) + # dropout + hidden_states = attn.to_out[1](hidden_states) + if not attn.context_pre_only: + encoder_hidden_states = attn.to_add_out(encoder_hidden_states) + + if input_ndim == 4: + hidden_states = hidden_states.transpose(-1, -2).reshape(batch_size, channel, height, width) + if context_input_ndim == 4: + encoder_hidden_states = encoder_hidden_states.transpose(-1, -2).reshape(batch_size, channel, height, width) + + return hidden_states, encoder_hidden_states + + +class XFormersJointAttnProcessor: + r""" + Processor for implementing memory efficient attention using xFormers. + + Args: + attention_op (`Callable`, *optional*, defaults to `None`): + The base + [operator](https://facebookresearch.github.io/xformers/components/ops.html#xformers.ops.AttentionOpBase) to + use as the attention operator. It is recommended to set to `None`, and allow xFormers to choose the best + operator. + """ + + def __init__(self, attention_op: Optional[Callable] = None): + self.attention_op = attention_op + + def __call__( + self, + attn: Attention, + hidden_states: torch.FloatTensor, + encoder_hidden_states: torch.FloatTensor = None, + attention_mask: Optional[torch.FloatTensor] = None, + *args, + **kwargs, + ) -> torch.FloatTensor: + residual = hidden_states + + # `sample` projections. + query = attn.to_q(hidden_states) + key = attn.to_k(hidden_states) + value = attn.to_v(hidden_states) + + query = attn.head_to_batch_dim(query).contiguous() + key = attn.head_to_batch_dim(key).contiguous() + value = attn.head_to_batch_dim(value).contiguous() + + if attn.norm_q is not None: + query = attn.norm_q(query) + if attn.norm_k is not None: + key = attn.norm_k(key) + + # `context` projections. + if encoder_hidden_states is not None: + encoder_hidden_states_query_proj = attn.add_q_proj(encoder_hidden_states) + encoder_hidden_states_key_proj = attn.add_k_proj(encoder_hidden_states) + encoder_hidden_states_value_proj = attn.add_v_proj(encoder_hidden_states) + + encoder_hidden_states_query_proj = attn.head_to_batch_dim(encoder_hidden_states_query_proj).contiguous() + encoder_hidden_states_key_proj = attn.head_to_batch_dim(encoder_hidden_states_key_proj).contiguous() + encoder_hidden_states_value_proj = attn.head_to_batch_dim(encoder_hidden_states_value_proj).contiguous() + + if attn.norm_added_q is not None: + encoder_hidden_states_query_proj = attn.norm_added_q(encoder_hidden_states_query_proj) + if attn.norm_added_k is not None: + encoder_hidden_states_key_proj = attn.norm_added_k(encoder_hidden_states_key_proj) + + query = torch.cat([query, encoder_hidden_states_query_proj], dim=1) + key = torch.cat([key, encoder_hidden_states_key_proj], dim=1) + value = torch.cat([value, encoder_hidden_states_value_proj], dim=1) + + hidden_states = xformers.ops.memory_efficient_attention( + query, key, value, attn_bias=attention_mask, op=self.attention_op, scale=attn.scale + ) + hidden_states = hidden_states.to(query.dtype) + hidden_states = attn.batch_to_head_dim(hidden_states) + + if encoder_hidden_states is not None: + # Split the attention outputs. + hidden_states, encoder_hidden_states = ( + hidden_states[:, : residual.shape[1]], + hidden_states[:, residual.shape[1] :], + ) + if not attn.context_pre_only: + encoder_hidden_states = attn.to_add_out(encoder_hidden_states) + + # linear proj + hidden_states = attn.to_out[0](hidden_states) + # dropout + hidden_states = attn.to_out[1](hidden_states) + + if encoder_hidden_states is not None: + return hidden_states, encoder_hidden_states + else: + return hidden_states + + +class AllegroAttnProcessor2_0: + r""" + Processor for implementing scaled dot-product attention (enabled by default if you're using PyTorch 2.0). This is + used in the Allegro model. It applies a normalization layer and rotary embedding on the query and key vector. + """ + + def __init__(self): + if not hasattr(F, "scaled_dot_product_attention"): + raise ImportError( + "AllegroAttnProcessor2_0 requires PyTorch 2.0, to use it, please upgrade PyTorch to 2.0." + ) + + def __call__( + self, + attn: Attention, + hidden_states: torch.Tensor, + encoder_hidden_states: Optional[torch.Tensor] = None, + attention_mask: Optional[torch.Tensor] = None, + temb: Optional[torch.Tensor] = None, + image_rotary_emb: Optional[torch.Tensor] = None, + ) -> torch.Tensor: + residual = hidden_states + + if attn.spatial_norm is not None: + hidden_states = attn.spatial_norm(hidden_states, temb) + + input_ndim = hidden_states.ndim + + if input_ndim == 4: + batch_size, channel, height, width = hidden_states.shape + hidden_states = hidden_states.view(batch_size, channel, height * width).transpose(1, 2) + + batch_size, sequence_length, _ = ( + hidden_states.shape if encoder_hidden_states is None else encoder_hidden_states.shape + ) + + if attention_mask is not None: + attention_mask = attn.prepare_attention_mask(attention_mask, sequence_length, batch_size) + # scaled_dot_product_attention expects attention_mask shape to be + # (batch, heads, source_length, target_length) + attention_mask = attention_mask.view(batch_size, attn.heads, -1, attention_mask.shape[-1]) + + if attn.group_norm is not None: + hidden_states = attn.group_norm(hidden_states.transpose(1, 2)).transpose(1, 2) + + query = attn.to_q(hidden_states) + + if encoder_hidden_states is None: + encoder_hidden_states = hidden_states + elif attn.norm_cross: + encoder_hidden_states = attn.norm_encoder_hidden_states(encoder_hidden_states) + + key = attn.to_k(encoder_hidden_states) + value = attn.to_v(encoder_hidden_states) + + inner_dim = key.shape[-1] + head_dim = inner_dim // attn.heads + + query = query.view(batch_size, -1, attn.heads, head_dim).transpose(1, 2) + key = key.view(batch_size, -1, attn.heads, head_dim).transpose(1, 2) + value = value.view(batch_size, -1, attn.heads, head_dim).transpose(1, 2) + + # Apply RoPE if needed + if image_rotary_emb is not None and not attn.is_cross_attention: + from .embeddings import apply_rotary_emb_allegro + + query = apply_rotary_emb_allegro(query, image_rotary_emb[0], image_rotary_emb[1]) + key = apply_rotary_emb_allegro(key, image_rotary_emb[0], image_rotary_emb[1]) + + # the output of sdp = (batch, num_heads, seq_len, head_dim) + # TODO: add support for attn.scale when we move to Torch 2.1 + hidden_states = F.scaled_dot_product_attention( + query, key, value, attn_mask=attention_mask, dropout_p=0.0, is_causal=False + ) + + hidden_states = hidden_states.transpose(1, 2).reshape(batch_size, -1, attn.heads * head_dim) + hidden_states = hidden_states.to(query.dtype) + + # linear proj + hidden_states = attn.to_out[0](hidden_states) + # dropout + hidden_states = attn.to_out[1](hidden_states) + + if input_ndim == 4: + hidden_states = hidden_states.transpose(-1, -2).reshape(batch_size, channel, height, width) + + if attn.residual_connection: + hidden_states = hidden_states + residual + + hidden_states = hidden_states / attn.rescale_output_factor + + return hidden_states + + +class AuraFlowAttnProcessor2_0: + """Attention processor used typically in processing Aura Flow.""" + + def __init__(self): + if not hasattr(F, "scaled_dot_product_attention") and is_torch_version("<", "2.1"): + raise ImportError( + "AuraFlowAttnProcessor2_0 requires PyTorch 2.0, to use it, please upgrade PyTorch to at least 2.1 or above as we use `scale` in `F.scaled_dot_product_attention()`. " + ) + + def __call__( + self, + attn: Attention, + hidden_states: torch.FloatTensor, + encoder_hidden_states: torch.FloatTensor = None, + *args, + **kwargs, + ) -> torch.FloatTensor: + batch_size = hidden_states.shape[0] + + # `sample` projections. + query = attn.to_q(hidden_states) + key = attn.to_k(hidden_states) + value = attn.to_v(hidden_states) + + # `context` projections. + if encoder_hidden_states is not None: + encoder_hidden_states_query_proj = attn.add_q_proj(encoder_hidden_states) + encoder_hidden_states_key_proj = attn.add_k_proj(encoder_hidden_states) + encoder_hidden_states_value_proj = attn.add_v_proj(encoder_hidden_states) + + # Reshape. + inner_dim = key.shape[-1] + head_dim = inner_dim // attn.heads + query = query.view(batch_size, -1, attn.heads, head_dim) + key = key.view(batch_size, -1, attn.heads, head_dim) + value = value.view(batch_size, -1, attn.heads, head_dim) + + # Apply QK norm. + if attn.norm_q is not None: + query = attn.norm_q(query) + if attn.norm_k is not None: + key = attn.norm_k(key) + + # Concatenate the projections. + if encoder_hidden_states is not None: + encoder_hidden_states_query_proj = encoder_hidden_states_query_proj.view( + batch_size, -1, attn.heads, head_dim + ) + encoder_hidden_states_key_proj = encoder_hidden_states_key_proj.view(batch_size, -1, attn.heads, head_dim) + encoder_hidden_states_value_proj = encoder_hidden_states_value_proj.view( + batch_size, -1, attn.heads, head_dim + ) + + if attn.norm_added_q is not None: + encoder_hidden_states_query_proj = attn.norm_added_q(encoder_hidden_states_query_proj) + if attn.norm_added_k is not None: + encoder_hidden_states_key_proj = attn.norm_added_q(encoder_hidden_states_key_proj) + + query = torch.cat([encoder_hidden_states_query_proj, query], dim=1) + key = torch.cat([encoder_hidden_states_key_proj, key], dim=1) + value = torch.cat([encoder_hidden_states_value_proj, value], dim=1) + + query = query.transpose(1, 2) + key = key.transpose(1, 2) + value = value.transpose(1, 2) + + # Attention. + hidden_states = F.scaled_dot_product_attention( + query, key, value, dropout_p=0.0, scale=attn.scale, is_causal=False + ) + hidden_states = hidden_states.transpose(1, 2).reshape(batch_size, -1, attn.heads * head_dim) + hidden_states = hidden_states.to(query.dtype) + + # Split the attention outputs. + if encoder_hidden_states is not None: + hidden_states, encoder_hidden_states = ( + hidden_states[:, encoder_hidden_states.shape[1] :], + hidden_states[:, : encoder_hidden_states.shape[1]], + ) + + # linear proj + hidden_states = attn.to_out[0](hidden_states) + # dropout + hidden_states = attn.to_out[1](hidden_states) + if encoder_hidden_states is not None: + encoder_hidden_states = attn.to_add_out(encoder_hidden_states) + + if encoder_hidden_states is not None: + return hidden_states, encoder_hidden_states + else: + return hidden_states + + +class FusedAuraFlowAttnProcessor2_0: + """Attention processor used typically in processing Aura Flow with fused projections.""" + + def __init__(self): + if not hasattr(F, "scaled_dot_product_attention") and is_torch_version("<", "2.1"): + raise ImportError( + "FusedAuraFlowAttnProcessor2_0 requires PyTorch 2.0, to use it, please upgrade PyTorch to at least 2.1 or above as we use `scale` in `F.scaled_dot_product_attention()`. " + ) + + def __call__( + self, + attn: Attention, + hidden_states: torch.FloatTensor, + encoder_hidden_states: torch.FloatTensor = None, + *args, + **kwargs, + ) -> torch.FloatTensor: + batch_size = hidden_states.shape[0] + + # `sample` projections. + qkv = attn.to_qkv(hidden_states) + split_size = qkv.shape[-1] // 3 + query, key, value = torch.split(qkv, split_size, dim=-1) + + # `context` projections. + if encoder_hidden_states is not None: + encoder_qkv = attn.to_added_qkv(encoder_hidden_states) + split_size = encoder_qkv.shape[-1] // 3 + ( + encoder_hidden_states_query_proj, + encoder_hidden_states_key_proj, + encoder_hidden_states_value_proj, + ) = torch.split(encoder_qkv, split_size, dim=-1) + + # Reshape. + inner_dim = key.shape[-1] + head_dim = inner_dim // attn.heads + query = query.view(batch_size, -1, attn.heads, head_dim) + key = key.view(batch_size, -1, attn.heads, head_dim) + value = value.view(batch_size, -1, attn.heads, head_dim) + + # Apply QK norm. + if attn.norm_q is not None: + query = attn.norm_q(query) + if attn.norm_k is not None: + key = attn.norm_k(key) + + # Concatenate the projections. + if encoder_hidden_states is not None: + encoder_hidden_states_query_proj = encoder_hidden_states_query_proj.view( + batch_size, -1, attn.heads, head_dim + ) + encoder_hidden_states_key_proj = encoder_hidden_states_key_proj.view(batch_size, -1, attn.heads, head_dim) + encoder_hidden_states_value_proj = encoder_hidden_states_value_proj.view( + batch_size, -1, attn.heads, head_dim + ) + + if attn.norm_added_q is not None: + encoder_hidden_states_query_proj = attn.norm_added_q(encoder_hidden_states_query_proj) + if attn.norm_added_k is not None: + encoder_hidden_states_key_proj = attn.norm_added_q(encoder_hidden_states_key_proj) + + query = torch.cat([encoder_hidden_states_query_proj, query], dim=1) + key = torch.cat([encoder_hidden_states_key_proj, key], dim=1) + value = torch.cat([encoder_hidden_states_value_proj, value], dim=1) + + query = query.transpose(1, 2) + key = key.transpose(1, 2) + value = value.transpose(1, 2) + + # Attention. + hidden_states = F.scaled_dot_product_attention( + query, key, value, dropout_p=0.0, scale=attn.scale, is_causal=False + ) + hidden_states = hidden_states.transpose(1, 2).reshape(batch_size, -1, attn.heads * head_dim) + hidden_states = hidden_states.to(query.dtype) + + # Split the attention outputs. + if encoder_hidden_states is not None: + hidden_states, encoder_hidden_states = ( + hidden_states[:, encoder_hidden_states.shape[1] :], + hidden_states[:, : encoder_hidden_states.shape[1]], + ) + + # linear proj + hidden_states = attn.to_out[0](hidden_states) + # dropout + hidden_states = attn.to_out[1](hidden_states) + if encoder_hidden_states is not None: + encoder_hidden_states = attn.to_add_out(encoder_hidden_states) + + if encoder_hidden_states is not None: + return hidden_states, encoder_hidden_states + else: + return hidden_states + + +class FluxAttnProcessor2_0: + """Attention processor used typically in processing the SD3-like self-attention projections.""" + + def __init__(self): + if not hasattr(F, "scaled_dot_product_attention"): + raise ImportError("FluxAttnProcessor2_0 requires PyTorch 2.0, to use it, please upgrade PyTorch to 2.0.") + + def __call__( + self, + attn: Attention, + hidden_states: torch.FloatTensor, + encoder_hidden_states: torch.FloatTensor = None, + attention_mask: Optional[torch.FloatTensor] = None, + image_rotary_emb: Optional[torch.Tensor] = None, + ) -> torch.FloatTensor: + batch_size, _, _ = hidden_states.shape if encoder_hidden_states is None else encoder_hidden_states.shape + + # `sample` projections. + query = attn.to_q(hidden_states) + key = attn.to_k(hidden_states) + value = attn.to_v(hidden_states) + + inner_dim = key.shape[-1] + head_dim = inner_dim // attn.heads + + query = query.view(batch_size, -1, attn.heads, head_dim).transpose(1, 2) + key = key.view(batch_size, -1, attn.heads, head_dim).transpose(1, 2) + value = value.view(batch_size, -1, attn.heads, head_dim).transpose(1, 2) + + if attn.norm_q is not None: + query = attn.norm_q(query) + if attn.norm_k is not None: + key = attn.norm_k(key) + + # the attention in FluxSingleTransformerBlock does not use `encoder_hidden_states` + if encoder_hidden_states is not None: + # `context` projections. + encoder_hidden_states_query_proj = attn.add_q_proj(encoder_hidden_states) + encoder_hidden_states_key_proj = attn.add_k_proj(encoder_hidden_states) + encoder_hidden_states_value_proj = attn.add_v_proj(encoder_hidden_states) + + encoder_hidden_states_query_proj = encoder_hidden_states_query_proj.view( + batch_size, -1, attn.heads, head_dim + ).transpose(1, 2) + encoder_hidden_states_key_proj = encoder_hidden_states_key_proj.view( + batch_size, -1, attn.heads, head_dim + ).transpose(1, 2) + encoder_hidden_states_value_proj = encoder_hidden_states_value_proj.view( + batch_size, -1, attn.heads, head_dim + ).transpose(1, 2) + + if attn.norm_added_q is not None: + encoder_hidden_states_query_proj = attn.norm_added_q(encoder_hidden_states_query_proj) + if attn.norm_added_k is not None: + encoder_hidden_states_key_proj = attn.norm_added_k(encoder_hidden_states_key_proj) + + # attention + query = torch.cat([encoder_hidden_states_query_proj, query], dim=2) + key = torch.cat([encoder_hidden_states_key_proj, key], dim=2) + value = torch.cat([encoder_hidden_states_value_proj, value], dim=2) + + if image_rotary_emb is not None: + from .embeddings import apply_rotary_emb + + query = apply_rotary_emb(query, image_rotary_emb) + key = apply_rotary_emb(key, image_rotary_emb) + + hidden_states = F.scaled_dot_product_attention( + query, key, value, attn_mask=attention_mask, dropout_p=0.0, is_causal=False + ) + hidden_states = hidden_states.transpose(1, 2).reshape(batch_size, -1, attn.heads * head_dim) + hidden_states = hidden_states.to(query.dtype) + + if encoder_hidden_states is not None: + encoder_hidden_states, hidden_states = ( + hidden_states[:, : encoder_hidden_states.shape[1]], + hidden_states[:, encoder_hidden_states.shape[1] :], + ) + + # linear proj + hidden_states = attn.to_out[0](hidden_states) + # dropout + hidden_states = attn.to_out[1](hidden_states) + + encoder_hidden_states = attn.to_add_out(encoder_hidden_states) + + return hidden_states, encoder_hidden_states + else: + return hidden_states + + +class FluxAttnProcessor2_0_NPU: + """Attention processor used typically in processing the SD3-like self-attention projections.""" + + def __init__(self): + if not hasattr(F, "scaled_dot_product_attention"): + raise ImportError( + "FluxAttnProcessor2_0_NPU requires PyTorch 2.0 and torch NPU, to use it, please upgrade PyTorch to 2.0 and install torch NPU" + ) + + def __call__( + self, + attn: Attention, + hidden_states: torch.FloatTensor, + encoder_hidden_states: torch.FloatTensor = None, + attention_mask: Optional[torch.FloatTensor] = None, + image_rotary_emb: Optional[torch.Tensor] = None, + ) -> torch.FloatTensor: + batch_size, _, _ = hidden_states.shape if encoder_hidden_states is None else encoder_hidden_states.shape + + # `sample` projections. + query = attn.to_q(hidden_states) + key = attn.to_k(hidden_states) + value = attn.to_v(hidden_states) + + inner_dim = key.shape[-1] + head_dim = inner_dim // attn.heads + + query = query.view(batch_size, -1, attn.heads, head_dim).transpose(1, 2) + key = key.view(batch_size, -1, attn.heads, head_dim).transpose(1, 2) + value = value.view(batch_size, -1, attn.heads, head_dim).transpose(1, 2) + + if attn.norm_q is not None: + query = attn.norm_q(query) + if attn.norm_k is not None: + key = attn.norm_k(key) + + # the attention in FluxSingleTransformerBlock does not use `encoder_hidden_states` + if encoder_hidden_states is not None: + # `context` projections. + encoder_hidden_states_query_proj = attn.add_q_proj(encoder_hidden_states) + encoder_hidden_states_key_proj = attn.add_k_proj(encoder_hidden_states) + encoder_hidden_states_value_proj = attn.add_v_proj(encoder_hidden_states) + + encoder_hidden_states_query_proj = encoder_hidden_states_query_proj.view( + batch_size, -1, attn.heads, head_dim + ).transpose(1, 2) + encoder_hidden_states_key_proj = encoder_hidden_states_key_proj.view( + batch_size, -1, attn.heads, head_dim + ).transpose(1, 2) + encoder_hidden_states_value_proj = encoder_hidden_states_value_proj.view( + batch_size, -1, attn.heads, head_dim + ).transpose(1, 2) + + if attn.norm_added_q is not None: + encoder_hidden_states_query_proj = attn.norm_added_q(encoder_hidden_states_query_proj) + if attn.norm_added_k is not None: + encoder_hidden_states_key_proj = attn.norm_added_k(encoder_hidden_states_key_proj) + + # attention + query = torch.cat([encoder_hidden_states_query_proj, query], dim=2) + key = torch.cat([encoder_hidden_states_key_proj, key], dim=2) + value = torch.cat([encoder_hidden_states_value_proj, value], dim=2) + + if image_rotary_emb is not None: + from .embeddings import apply_rotary_emb + + query = apply_rotary_emb(query, image_rotary_emb) + key = apply_rotary_emb(key, image_rotary_emb) + + if query.dtype in (torch.float16, torch.bfloat16): + hidden_states = torch_npu.npu_fusion_attention( + query, + key, + value, + attn.heads, + input_layout="BNSD", + pse=None, + scale=1.0 / math.sqrt(query.shape[-1]), + pre_tockens=65536, + next_tockens=65536, + keep_prob=1.0, + sync=False, + inner_precise=0, + )[0] + else: + hidden_states = F.scaled_dot_product_attention(query, key, value, dropout_p=0.0, is_causal=False) + hidden_states = hidden_states.transpose(1, 2).reshape(batch_size, -1, attn.heads * head_dim) + hidden_states = hidden_states.to(query.dtype) + + if encoder_hidden_states is not None: + encoder_hidden_states, hidden_states = ( + hidden_states[:, : encoder_hidden_states.shape[1]], + hidden_states[:, encoder_hidden_states.shape[1] :], + ) + + # linear proj + hidden_states = attn.to_out[0](hidden_states) + # dropout + hidden_states = attn.to_out[1](hidden_states) + encoder_hidden_states = attn.to_add_out(encoder_hidden_states) + + return hidden_states, encoder_hidden_states + else: + return hidden_states + + +class FusedFluxAttnProcessor2_0: + """Attention processor used typically in processing the SD3-like self-attention projections.""" + + def __init__(self): + if not hasattr(F, "scaled_dot_product_attention"): + raise ImportError( + "FusedFluxAttnProcessor2_0 requires PyTorch 2.0, to use it, please upgrade PyTorch to 2.0." + ) + + def __call__( + self, + attn: Attention, + hidden_states: torch.FloatTensor, + encoder_hidden_states: torch.FloatTensor = None, + attention_mask: Optional[torch.FloatTensor] = None, + image_rotary_emb: Optional[torch.Tensor] = None, + ) -> torch.FloatTensor: + batch_size, _, _ = hidden_states.shape if encoder_hidden_states is None else encoder_hidden_states.shape + + # `sample` projections. + qkv = attn.to_qkv(hidden_states) + split_size = qkv.shape[-1] // 3 + query, key, value = torch.split(qkv, split_size, dim=-1) + + inner_dim = key.shape[-1] + head_dim = inner_dim // attn.heads + + query = query.view(batch_size, -1, attn.heads, head_dim).transpose(1, 2) + key = key.view(batch_size, -1, attn.heads, head_dim).transpose(1, 2) + value = value.view(batch_size, -1, attn.heads, head_dim).transpose(1, 2) + + if attn.norm_q is not None: + query = attn.norm_q(query) + if attn.norm_k is not None: + key = attn.norm_k(key) + + # the attention in FluxSingleTransformerBlock does not use `encoder_hidden_states` + # `context` projections. + if encoder_hidden_states is not None: + encoder_qkv = attn.to_added_qkv(encoder_hidden_states) + split_size = encoder_qkv.shape[-1] // 3 + ( + encoder_hidden_states_query_proj, + encoder_hidden_states_key_proj, + encoder_hidden_states_value_proj, + ) = torch.split(encoder_qkv, split_size, dim=-1) + + encoder_hidden_states_query_proj = encoder_hidden_states_query_proj.view( + batch_size, -1, attn.heads, head_dim + ).transpose(1, 2) + encoder_hidden_states_key_proj = encoder_hidden_states_key_proj.view( + batch_size, -1, attn.heads, head_dim + ).transpose(1, 2) + encoder_hidden_states_value_proj = encoder_hidden_states_value_proj.view( + batch_size, -1, attn.heads, head_dim + ).transpose(1, 2) + + if attn.norm_added_q is not None: + encoder_hidden_states_query_proj = attn.norm_added_q(encoder_hidden_states_query_proj) + if attn.norm_added_k is not None: + encoder_hidden_states_key_proj = attn.norm_added_k(encoder_hidden_states_key_proj) + + # attention + query = torch.cat([encoder_hidden_states_query_proj, query], dim=2) + key = torch.cat([encoder_hidden_states_key_proj, key], dim=2) + value = torch.cat([encoder_hidden_states_value_proj, value], dim=2) + + if image_rotary_emb is not None: + from .embeddings import apply_rotary_emb + + query = apply_rotary_emb(query, image_rotary_emb) + key = apply_rotary_emb(key, image_rotary_emb) + + hidden_states = F.scaled_dot_product_attention(query, key, value, dropout_p=0.0, is_causal=False) + hidden_states = hidden_states.transpose(1, 2).reshape(batch_size, -1, attn.heads * head_dim) + hidden_states = hidden_states.to(query.dtype) + + if encoder_hidden_states is not None: + encoder_hidden_states, hidden_states = ( + hidden_states[:, : encoder_hidden_states.shape[1]], + hidden_states[:, encoder_hidden_states.shape[1] :], + ) + + # linear proj + hidden_states = attn.to_out[0](hidden_states) + # dropout + hidden_states = attn.to_out[1](hidden_states) + encoder_hidden_states = attn.to_add_out(encoder_hidden_states) + + return hidden_states, encoder_hidden_states + else: + return hidden_states + + +class FusedFluxAttnProcessor2_0_NPU: + """Attention processor used typically in processing the SD3-like self-attention projections.""" + + def __init__(self): + if not hasattr(F, "scaled_dot_product_attention"): + raise ImportError( + "FluxAttnProcessor2_0_NPU requires PyTorch 2.0 and torch NPU, to use it, please upgrade PyTorch to 2.0, and install torch NPU" + ) + + def __call__( + self, + attn: Attention, + hidden_states: torch.FloatTensor, + encoder_hidden_states: torch.FloatTensor = None, + attention_mask: Optional[torch.FloatTensor] = None, + image_rotary_emb: Optional[torch.Tensor] = None, + ) -> torch.FloatTensor: + batch_size, _, _ = hidden_states.shape if encoder_hidden_states is None else encoder_hidden_states.shape + + # `sample` projections. + qkv = attn.to_qkv(hidden_states) + split_size = qkv.shape[-1] // 3 + query, key, value = torch.split(qkv, split_size, dim=-1) + + inner_dim = key.shape[-1] + head_dim = inner_dim // attn.heads + + query = query.view(batch_size, -1, attn.heads, head_dim).transpose(1, 2) + key = key.view(batch_size, -1, attn.heads, head_dim).transpose(1, 2) + value = value.view(batch_size, -1, attn.heads, head_dim).transpose(1, 2) + + if attn.norm_q is not None: + query = attn.norm_q(query) + if attn.norm_k is not None: + key = attn.norm_k(key) + + # the attention in FluxSingleTransformerBlock does not use `encoder_hidden_states` + # `context` projections. + if encoder_hidden_states is not None: + encoder_qkv = attn.to_added_qkv(encoder_hidden_states) + split_size = encoder_qkv.shape[-1] // 3 + ( + encoder_hidden_states_query_proj, + encoder_hidden_states_key_proj, + encoder_hidden_states_value_proj, + ) = torch.split(encoder_qkv, split_size, dim=-1) + + encoder_hidden_states_query_proj = encoder_hidden_states_query_proj.view( + batch_size, -1, attn.heads, head_dim + ).transpose(1, 2) + encoder_hidden_states_key_proj = encoder_hidden_states_key_proj.view( + batch_size, -1, attn.heads, head_dim + ).transpose(1, 2) + encoder_hidden_states_value_proj = encoder_hidden_states_value_proj.view( + batch_size, -1, attn.heads, head_dim + ).transpose(1, 2) + + if attn.norm_added_q is not None: + encoder_hidden_states_query_proj = attn.norm_added_q(encoder_hidden_states_query_proj) + if attn.norm_added_k is not None: + encoder_hidden_states_key_proj = attn.norm_added_k(encoder_hidden_states_key_proj) + + # attention + query = torch.cat([encoder_hidden_states_query_proj, query], dim=2) + key = torch.cat([encoder_hidden_states_key_proj, key], dim=2) + value = torch.cat([encoder_hidden_states_value_proj, value], dim=2) + + if image_rotary_emb is not None: + from .embeddings import apply_rotary_emb + + query = apply_rotary_emb(query, image_rotary_emb) + key = apply_rotary_emb(key, image_rotary_emb) + + if query.dtype in (torch.float16, torch.bfloat16): + hidden_states = torch_npu.npu_fusion_attention( + query, + key, + value, + attn.heads, + input_layout="BNSD", + pse=None, + scale=1.0 / math.sqrt(query.shape[-1]), + pre_tockens=65536, + next_tockens=65536, + keep_prob=1.0, + sync=False, + inner_precise=0, + )[0] + else: + hidden_states = F.scaled_dot_product_attention(query, key, value, dropout_p=0.0, is_causal=False) + + hidden_states = hidden_states.transpose(1, 2).reshape(batch_size, -1, attn.heads * head_dim) + hidden_states = hidden_states.to(query.dtype) + + if encoder_hidden_states is not None: + encoder_hidden_states, hidden_states = ( + hidden_states[:, : encoder_hidden_states.shape[1]], + hidden_states[:, encoder_hidden_states.shape[1] :], + ) + + # linear proj + hidden_states = attn.to_out[0](hidden_states) + # dropout + hidden_states = attn.to_out[1](hidden_states) + encoder_hidden_states = attn.to_add_out(encoder_hidden_states) + + return hidden_states, encoder_hidden_states + else: + return hidden_states + + +class FluxIPAdapterJointAttnProcessor2_0(torch.nn.Module): + """Flux Attention processor for IP-Adapter.""" + + def __init__( + self, hidden_size: int, cross_attention_dim: int, num_tokens=(4,), scale=1.0, device=None, dtype=None + ): + super().__init__() + + if not hasattr(F, "scaled_dot_product_attention"): + raise ImportError( + f"{self.__class__.__name__} requires PyTorch 2.0, to use it, please upgrade PyTorch to 2.0." + ) + + self.hidden_size = hidden_size + self.cross_attention_dim = cross_attention_dim + + if not isinstance(num_tokens, (tuple, list)): + num_tokens = [num_tokens] + + if not isinstance(scale, list): + scale = [scale] * len(num_tokens) + if len(scale) != len(num_tokens): + raise ValueError("`scale` should be a list of integers with the same length as `num_tokens`.") + self.scale = scale + + self.to_k_ip = nn.ModuleList( + [ + nn.Linear(cross_attention_dim, hidden_size, bias=True, device=device, dtype=dtype) + for _ in range(len(num_tokens)) + ] + ) + self.to_v_ip = nn.ModuleList( + [ + nn.Linear(cross_attention_dim, hidden_size, bias=True, device=device, dtype=dtype) + for _ in range(len(num_tokens)) + ] + ) + + def __call__( + self, + attn: Attention, + hidden_states: torch.FloatTensor, + encoder_hidden_states: torch.FloatTensor = None, + attention_mask: Optional[torch.FloatTensor] = None, + image_rotary_emb: Optional[torch.Tensor] = None, + ip_hidden_states: Optional[List[torch.Tensor]] = None, + ip_adapter_masks: Optional[torch.Tensor] = None, + ) -> torch.FloatTensor: + batch_size, _, _ = hidden_states.shape if encoder_hidden_states is None else encoder_hidden_states.shape + + # `sample` projections. + hidden_states_query_proj = attn.to_q(hidden_states) + key = attn.to_k(hidden_states) + value = attn.to_v(hidden_states) + + inner_dim = key.shape[-1] + head_dim = inner_dim // attn.heads + + hidden_states_query_proj = hidden_states_query_proj.view(batch_size, -1, attn.heads, head_dim).transpose(1, 2) + key = key.view(batch_size, -1, attn.heads, head_dim).transpose(1, 2) + value = value.view(batch_size, -1, attn.heads, head_dim).transpose(1, 2) + + if attn.norm_q is not None: + hidden_states_query_proj = attn.norm_q(hidden_states_query_proj) + if attn.norm_k is not None: + key = attn.norm_k(key) + + # the attention in FluxSingleTransformerBlock does not use `encoder_hidden_states` + if encoder_hidden_states is not None: + # `context` projections. + encoder_hidden_states_query_proj = attn.add_q_proj(encoder_hidden_states) + encoder_hidden_states_key_proj = attn.add_k_proj(encoder_hidden_states) + encoder_hidden_states_value_proj = attn.add_v_proj(encoder_hidden_states) + + encoder_hidden_states_query_proj = encoder_hidden_states_query_proj.view( + batch_size, -1, attn.heads, head_dim + ).transpose(1, 2) + encoder_hidden_states_key_proj = encoder_hidden_states_key_proj.view( + batch_size, -1, attn.heads, head_dim + ).transpose(1, 2) + encoder_hidden_states_value_proj = encoder_hidden_states_value_proj.view( + batch_size, -1, attn.heads, head_dim + ).transpose(1, 2) + + if attn.norm_added_q is not None: + encoder_hidden_states_query_proj = attn.norm_added_q(encoder_hidden_states_query_proj) + if attn.norm_added_k is not None: + encoder_hidden_states_key_proj = attn.norm_added_k(encoder_hidden_states_key_proj) + + # attention + query = torch.cat([encoder_hidden_states_query_proj, hidden_states_query_proj], dim=2) + key = torch.cat([encoder_hidden_states_key_proj, key], dim=2) + value = torch.cat([encoder_hidden_states_value_proj, value], dim=2) + + if image_rotary_emb is not None: + from .embeddings import apply_rotary_emb + + query = apply_rotary_emb(query, image_rotary_emb) + key = apply_rotary_emb(key, image_rotary_emb) + + hidden_states = F.scaled_dot_product_attention(query, key, value, dropout_p=0.0, is_causal=False) + hidden_states = hidden_states.transpose(1, 2).reshape(batch_size, -1, attn.heads * head_dim) + hidden_states = hidden_states.to(query.dtype) + + if encoder_hidden_states is not None: + encoder_hidden_states, hidden_states = ( + hidden_states[:, : encoder_hidden_states.shape[1]], + hidden_states[:, encoder_hidden_states.shape[1] :], + ) + + # linear proj + hidden_states = attn.to_out[0](hidden_states) + # dropout + hidden_states = attn.to_out[1](hidden_states) + encoder_hidden_states = attn.to_add_out(encoder_hidden_states) + + # IP-adapter + ip_query = hidden_states_query_proj + ip_attn_output = None + # for ip-adapter + # TODO: support for multiple adapters + for current_ip_hidden_states, scale, to_k_ip, to_v_ip in zip( + ip_hidden_states, self.scale, self.to_k_ip, self.to_v_ip + ): + ip_key = to_k_ip(current_ip_hidden_states) + ip_value = to_v_ip(current_ip_hidden_states) + + ip_key = ip_key.view(batch_size, -1, attn.heads, head_dim).transpose(1, 2) + ip_value = ip_value.view(batch_size, -1, attn.heads, head_dim).transpose(1, 2) + # the output of sdp = (batch, num_heads, seq_len, head_dim) + # TODO: add support for attn.scale when we move to Torch 2.1 + ip_attn_output = F.scaled_dot_product_attention( + ip_query, ip_key, ip_value, attn_mask=None, dropout_p=0.0, is_causal=False + ) + ip_attn_output = ip_attn_output.transpose(1, 2).reshape(batch_size, -1, attn.heads * head_dim) + ip_attn_output = scale * ip_attn_output + ip_attn_output = ip_attn_output.to(ip_query.dtype) + + return hidden_states, encoder_hidden_states, ip_attn_output + else: + return hidden_states + + +class CogVideoXAttnProcessor2_0: + r""" + Processor for implementing scaled dot-product attention for the CogVideoX model. It applies a rotary embedding on + query and key vectors, but does not include spatial normalization. + """ + + def __init__(self): + if not hasattr(F, "scaled_dot_product_attention"): + raise ImportError("CogVideoXAttnProcessor requires PyTorch 2.0, to use it, please upgrade PyTorch to 2.0.") + + def __call__( + self, + attn: Attention, + hidden_states: torch.Tensor, + encoder_hidden_states: torch.Tensor, + attention_mask: Optional[torch.Tensor] = None, + image_rotary_emb: Optional[torch.Tensor] = None, + ) -> torch.Tensor: + text_seq_length = encoder_hidden_states.size(1) + + hidden_states = torch.cat([encoder_hidden_states, hidden_states], dim=1) + + batch_size, sequence_length, _ = ( + hidden_states.shape if encoder_hidden_states is None else encoder_hidden_states.shape + ) + + if attention_mask is not None: + attention_mask = attn.prepare_attention_mask(attention_mask, sequence_length, batch_size) + attention_mask = attention_mask.view(batch_size, attn.heads, -1, attention_mask.shape[-1]) + + query = attn.to_q(hidden_states) + key = attn.to_k(hidden_states) + value = attn.to_v(hidden_states) + + inner_dim = key.shape[-1] + head_dim = inner_dim // attn.heads + + query = query.view(batch_size, -1, attn.heads, head_dim).transpose(1, 2) + key = key.view(batch_size, -1, attn.heads, head_dim).transpose(1, 2) + value = value.view(batch_size, -1, attn.heads, head_dim).transpose(1, 2) + + if attn.norm_q is not None: + query = attn.norm_q(query) + if attn.norm_k is not None: + key = attn.norm_k(key) + + # Apply RoPE if needed + if image_rotary_emb is not None: + from .embeddings import apply_rotary_emb + + query[:, :, text_seq_length:] = apply_rotary_emb(query[:, :, text_seq_length:], image_rotary_emb) + if not attn.is_cross_attention: + key[:, :, text_seq_length:] = apply_rotary_emb(key[:, :, text_seq_length:], image_rotary_emb) + + hidden_states = F.scaled_dot_product_attention( + query, key, value, attn_mask=attention_mask, dropout_p=0.0, is_causal=False + ) + + hidden_states = hidden_states.transpose(1, 2).reshape(batch_size, -1, attn.heads * head_dim) + + # linear proj + hidden_states = attn.to_out[0](hidden_states) + # dropout + hidden_states = attn.to_out[1](hidden_states) + + encoder_hidden_states, hidden_states = hidden_states.split( + [text_seq_length, hidden_states.size(1) - text_seq_length], dim=1 + ) + return hidden_states, encoder_hidden_states + + +class FusedCogVideoXAttnProcessor2_0: + r""" + Processor for implementing scaled dot-product attention for the CogVideoX model. It applies a rotary embedding on + query and key vectors, but does not include spatial normalization. + """ + + def __init__(self): + if not hasattr(F, "scaled_dot_product_attention"): + raise ImportError("CogVideoXAttnProcessor requires PyTorch 2.0, to use it, please upgrade PyTorch to 2.0.") + + def __call__( + self, + attn: Attention, + hidden_states: torch.Tensor, + encoder_hidden_states: torch.Tensor, + attention_mask: Optional[torch.Tensor] = None, + image_rotary_emb: Optional[torch.Tensor] = None, + ) -> torch.Tensor: + text_seq_length = encoder_hidden_states.size(1) + + hidden_states = torch.cat([encoder_hidden_states, hidden_states], dim=1) + + batch_size, sequence_length, _ = ( + hidden_states.shape if encoder_hidden_states is None else encoder_hidden_states.shape + ) + + if attention_mask is not None: + attention_mask = attn.prepare_attention_mask(attention_mask, sequence_length, batch_size) + attention_mask = attention_mask.view(batch_size, attn.heads, -1, attention_mask.shape[-1]) + + qkv = attn.to_qkv(hidden_states) + split_size = qkv.shape[-1] // 3 + query, key, value = torch.split(qkv, split_size, dim=-1) + + inner_dim = key.shape[-1] + head_dim = inner_dim // attn.heads + + query = query.view(batch_size, -1, attn.heads, head_dim).transpose(1, 2) + key = key.view(batch_size, -1, attn.heads, head_dim).transpose(1, 2) + value = value.view(batch_size, -1, attn.heads, head_dim).transpose(1, 2) + + if attn.norm_q is not None: + query = attn.norm_q(query) + if attn.norm_k is not None: + key = attn.norm_k(key) + + # Apply RoPE if needed + if image_rotary_emb is not None: + from .embeddings import apply_rotary_emb + + query[:, :, text_seq_length:] = apply_rotary_emb(query[:, :, text_seq_length:], image_rotary_emb) + if not attn.is_cross_attention: + key[:, :, text_seq_length:] = apply_rotary_emb(key[:, :, text_seq_length:], image_rotary_emb) + + hidden_states = F.scaled_dot_product_attention( + query, key, value, attn_mask=attention_mask, dropout_p=0.0, is_causal=False + ) + + hidden_states = hidden_states.transpose(1, 2).reshape(batch_size, -1, attn.heads * head_dim) + + # linear proj + hidden_states = attn.to_out[0](hidden_states) + # dropout + hidden_states = attn.to_out[1](hidden_states) + + encoder_hidden_states, hidden_states = hidden_states.split( + [text_seq_length, hidden_states.size(1) - text_seq_length], dim=1 + ) + return hidden_states, encoder_hidden_states + + +class XFormersAttnAddedKVProcessor: + r""" + Processor for implementing memory efficient attention using xFormers. + + Args: + attention_op (`Callable`, *optional*, defaults to `None`): + The base + [operator](https://facebookresearch.github.io/xformers/components/ops.html#xformers.ops.AttentionOpBase) to + use as the attention operator. It is recommended to set to `None`, and allow xFormers to choose the best + operator. + """ + + def __init__(self, attention_op: Optional[Callable] = None): + self.attention_op = attention_op + + def __call__( + self, + attn: Attention, + hidden_states: torch.Tensor, + encoder_hidden_states: Optional[torch.Tensor] = None, + attention_mask: Optional[torch.Tensor] = None, + ) -> torch.Tensor: + residual = hidden_states + hidden_states = hidden_states.view(hidden_states.shape[0], hidden_states.shape[1], -1).transpose(1, 2) + batch_size, sequence_length, _ = hidden_states.shape + + attention_mask = attn.prepare_attention_mask(attention_mask, sequence_length, batch_size) + + if encoder_hidden_states is None: + encoder_hidden_states = hidden_states + elif attn.norm_cross: + encoder_hidden_states = attn.norm_encoder_hidden_states(encoder_hidden_states) + + hidden_states = attn.group_norm(hidden_states.transpose(1, 2)).transpose(1, 2) + + query = attn.to_q(hidden_states) + query = attn.head_to_batch_dim(query) + + encoder_hidden_states_key_proj = attn.add_k_proj(encoder_hidden_states) + encoder_hidden_states_value_proj = attn.add_v_proj(encoder_hidden_states) + encoder_hidden_states_key_proj = attn.head_to_batch_dim(encoder_hidden_states_key_proj) + encoder_hidden_states_value_proj = attn.head_to_batch_dim(encoder_hidden_states_value_proj) + + if not attn.only_cross_attention: + key = attn.to_k(hidden_states) + value = attn.to_v(hidden_states) + key = attn.head_to_batch_dim(key) + value = attn.head_to_batch_dim(value) + key = torch.cat([encoder_hidden_states_key_proj, key], dim=1) + value = torch.cat([encoder_hidden_states_value_proj, value], dim=1) + else: + key = encoder_hidden_states_key_proj + value = encoder_hidden_states_value_proj + + hidden_states = xformers.ops.memory_efficient_attention( + query, key, value, attn_bias=attention_mask, op=self.attention_op, scale=attn.scale + ) + hidden_states = hidden_states.to(query.dtype) + hidden_states = attn.batch_to_head_dim(hidden_states) + + # linear proj + hidden_states = attn.to_out[0](hidden_states) + # dropout + hidden_states = attn.to_out[1](hidden_states) + + hidden_states = hidden_states.transpose(-1, -2).reshape(residual.shape) + hidden_states = hidden_states + residual + + return hidden_states + + +class XFormersAttnProcessor: + r""" + Processor for implementing memory efficient attention using xFormers. + + Args: + attention_op (`Callable`, *optional*, defaults to `None`): + The base + [operator](https://facebookresearch.github.io/xformers/components/ops.html#xformers.ops.AttentionOpBase) to + use as the attention operator. It is recommended to set to `None`, and allow xFormers to choose the best + operator. + """ + + def __init__(self, attention_op: Optional[Callable] = None): + self.attention_op = attention_op + + def __call__( + self, + attn: Attention, + hidden_states: torch.Tensor, + encoder_hidden_states: Optional[torch.Tensor] = None, + attention_mask: Optional[torch.Tensor] = None, + temb: Optional[torch.Tensor] = None, + *args, + **kwargs, + ) -> torch.Tensor: + if len(args) > 0 or kwargs.get("scale", None) is not None: + deprecation_message = "The `scale` argument is deprecated and will be ignored. Please remove it, as passing it will raise an error in the future. `scale` should directly be passed while calling the underlying pipeline component i.e., via `cross_attention_kwargs`." + deprecate("scale", "1.0.0", deprecation_message) + + residual = hidden_states + + if attn.spatial_norm is not None: + hidden_states = attn.spatial_norm(hidden_states, temb) + + input_ndim = hidden_states.ndim + + if input_ndim == 4: + batch_size, channel, height, width = hidden_states.shape + hidden_states = hidden_states.view(batch_size, channel, height * width).transpose(1, 2) + + batch_size, key_tokens, _ = ( + hidden_states.shape if encoder_hidden_states is None else encoder_hidden_states.shape + ) + + attention_mask = attn.prepare_attention_mask(attention_mask, key_tokens, batch_size) + if attention_mask is not None: + # expand our mask's singleton query_tokens dimension: + # [batch*heads, 1, key_tokens] -> + # [batch*heads, query_tokens, key_tokens] + # so that it can be added as a bias onto the attention scores that xformers computes: + # [batch*heads, query_tokens, key_tokens] + # we do this explicitly because xformers doesn't broadcast the singleton dimension for us. + _, query_tokens, _ = hidden_states.shape + attention_mask = attention_mask.expand(-1, query_tokens, -1) + + if attn.group_norm is not None: + hidden_states = attn.group_norm(hidden_states.transpose(1, 2)).transpose(1, 2) + + query = attn.to_q(hidden_states) + + if encoder_hidden_states is None: + encoder_hidden_states = hidden_states + elif attn.norm_cross: + encoder_hidden_states = attn.norm_encoder_hidden_states(encoder_hidden_states) + + key = attn.to_k(encoder_hidden_states) + value = attn.to_v(encoder_hidden_states) + + query = attn.head_to_batch_dim(query).contiguous() + key = attn.head_to_batch_dim(key).contiguous() + value = attn.head_to_batch_dim(value).contiguous() + + hidden_states = xformers.ops.memory_efficient_attention( + query, key, value, attn_bias=attention_mask, op=self.attention_op, scale=attn.scale + ) + hidden_states = hidden_states.to(query.dtype) + hidden_states = attn.batch_to_head_dim(hidden_states) + + # linear proj + hidden_states = attn.to_out[0](hidden_states) + # dropout + hidden_states = attn.to_out[1](hidden_states) + + if input_ndim == 4: + hidden_states = hidden_states.transpose(-1, -2).reshape(batch_size, channel, height, width) + + if attn.residual_connection: + hidden_states = hidden_states + residual + + hidden_states = hidden_states / attn.rescale_output_factor + + return hidden_states + + +class AttnProcessorNPU: + r""" + Processor for implementing flash attention using torch_npu. Torch_npu supports only fp16 and bf16 data types. If + fp32 is used, F.scaled_dot_product_attention will be used for computation, but the acceleration effect on NPU is + not significant. + + """ + + def __init__(self): + if not is_torch_npu_available(): + raise ImportError("AttnProcessorNPU requires torch_npu extensions and is supported only on npu devices.") + + def __call__( + self, + attn: Attention, + hidden_states: torch.Tensor, + encoder_hidden_states: Optional[torch.Tensor] = None, + attention_mask: Optional[torch.Tensor] = None, + temb: Optional[torch.Tensor] = None, + *args, + **kwargs, + ) -> torch.Tensor: + if len(args) > 0 or kwargs.get("scale", None) is not None: + deprecation_message = "The `scale` argument is deprecated and will be ignored. Please remove it, as passing it will raise an error in the future. `scale` should directly be passed while calling the underlying pipeline component i.e., via `cross_attention_kwargs`." + deprecate("scale", "1.0.0", deprecation_message) + + residual = hidden_states + if attn.spatial_norm is not None: + hidden_states = attn.spatial_norm(hidden_states, temb) + + input_ndim = hidden_states.ndim + + if input_ndim == 4: + batch_size, channel, height, width = hidden_states.shape + hidden_states = hidden_states.view(batch_size, channel, height * width).transpose(1, 2) + + batch_size, sequence_length, _ = ( + hidden_states.shape if encoder_hidden_states is None else encoder_hidden_states.shape + ) + + if attention_mask is not None: + attention_mask = attn.prepare_attention_mask(attention_mask, sequence_length, batch_size) + # scaled_dot_product_attention expects attention_mask shape to be + # (batch, heads, source_length, target_length) + attention_mask = attention_mask.view(batch_size, attn.heads, -1, attention_mask.shape[-1]) + + if attn.group_norm is not None: + hidden_states = attn.group_norm(hidden_states.transpose(1, 2)).transpose(1, 2) + + query = attn.to_q(hidden_states) + + if encoder_hidden_states is None: + encoder_hidden_states = hidden_states + elif attn.norm_cross: + encoder_hidden_states = attn.norm_encoder_hidden_states(encoder_hidden_states) + + key = attn.to_k(encoder_hidden_states) + value = attn.to_v(encoder_hidden_states) + + inner_dim = key.shape[-1] + head_dim = inner_dim // attn.heads + + query = query.view(batch_size, -1, attn.heads, head_dim).transpose(1, 2) + + key = key.view(batch_size, -1, attn.heads, head_dim).transpose(1, 2) + value = value.view(batch_size, -1, attn.heads, head_dim).transpose(1, 2) + + # the output of sdp = (batch, num_heads, seq_len, head_dim) + if query.dtype in (torch.float16, torch.bfloat16): + hidden_states = torch_npu.npu_fusion_attention( + query, + key, + value, + attn.heads, + input_layout="BNSD", + pse=None, + atten_mask=attention_mask, + scale=1.0 / math.sqrt(query.shape[-1]), + pre_tockens=65536, + next_tockens=65536, + keep_prob=1.0, + sync=False, + inner_precise=0, + )[0] + else: + # TODO: add support for attn.scale when we move to Torch 2.1 + hidden_states = F.scaled_dot_product_attention( + query, key, value, attn_mask=attention_mask, dropout_p=0.0, is_causal=False + ) + + hidden_states = hidden_states.transpose(1, 2).reshape(batch_size, -1, attn.heads * head_dim) + hidden_states = hidden_states.to(query.dtype) + + # linear proj + hidden_states = attn.to_out[0](hidden_states) + # dropout + hidden_states = attn.to_out[1](hidden_states) + + if input_ndim == 4: + hidden_states = hidden_states.transpose(-1, -2).reshape(batch_size, channel, height, width) + + if attn.residual_connection: + hidden_states = hidden_states + residual + + hidden_states = hidden_states / attn.rescale_output_factor + + return hidden_states + + +class AttnProcessor2_0: + r""" + Processor for implementing scaled dot-product attention (enabled by default if you're using PyTorch 2.0). + """ + + def __init__(self): + if not hasattr(F, "scaled_dot_product_attention"): + raise ImportError("AttnProcessor2_0 requires PyTorch 2.0, to use it, please upgrade PyTorch to 2.0.") + + def __call__( + self, + attn: Attention, + hidden_states: torch.Tensor, + encoder_hidden_states: Optional[torch.Tensor] = None, + attention_mask: Optional[torch.Tensor] = None, + temb: Optional[torch.Tensor] = None, + *args, + **kwargs, + ) -> torch.Tensor: + if len(args) > 0 or kwargs.get("scale", None) is not None: + deprecation_message = "The `scale` argument is deprecated and will be ignored. Please remove it, as passing it will raise an error in the future. `scale` should directly be passed while calling the underlying pipeline component i.e., via `cross_attention_kwargs`." + deprecate("scale", "1.0.0", deprecation_message) + + residual = hidden_states + if attn.spatial_norm is not None: + hidden_states = attn.spatial_norm(hidden_states, temb) + + input_ndim = hidden_states.ndim + + if input_ndim == 4: + batch_size, channel, height, width = hidden_states.shape + hidden_states = hidden_states.view(batch_size, channel, height * width).transpose(1, 2) + + batch_size, sequence_length, _ = ( + hidden_states.shape if encoder_hidden_states is None else encoder_hidden_states.shape + ) + + if attention_mask is not None: + attention_mask = attn.prepare_attention_mask(attention_mask, sequence_length, batch_size) + # scaled_dot_product_attention expects attention_mask shape to be + # (batch, heads, source_length, target_length) + attention_mask = attention_mask.view(batch_size, attn.heads, -1, attention_mask.shape[-1]) + + if attn.group_norm is not None: + hidden_states = attn.group_norm(hidden_states.transpose(1, 2)).transpose(1, 2) + + query = attn.to_q(hidden_states) + + if encoder_hidden_states is None: + encoder_hidden_states = hidden_states + elif attn.norm_cross: + encoder_hidden_states = attn.norm_encoder_hidden_states(encoder_hidden_states) + + key = attn.to_k(encoder_hidden_states) + value = attn.to_v(encoder_hidden_states) + + inner_dim = key.shape[-1] + head_dim = inner_dim // attn.heads + + query = query.view(batch_size, -1, attn.heads, head_dim).transpose(1, 2) + + key = key.view(batch_size, -1, attn.heads, head_dim).transpose(1, 2) + value = value.view(batch_size, -1, attn.heads, head_dim).transpose(1, 2) + + if attn.norm_q is not None: + query = attn.norm_q(query) + if attn.norm_k is not None: + key = attn.norm_k(key) + + # the output of sdp = (batch, num_heads, seq_len, head_dim) + # TODO: add support for attn.scale when we move to Torch 2.1 + hidden_states = F.scaled_dot_product_attention( + query, key, value, attn_mask=attention_mask, dropout_p=0.0, is_causal=False + ) + + hidden_states = hidden_states.transpose(1, 2).reshape(batch_size, -1, attn.heads * head_dim) + hidden_states = hidden_states.to(query.dtype) + + # linear proj + hidden_states = attn.to_out[0](hidden_states) + # dropout + hidden_states = attn.to_out[1](hidden_states) + + if input_ndim == 4: + hidden_states = hidden_states.transpose(-1, -2).reshape(batch_size, channel, height, width) + + if attn.residual_connection: + hidden_states = hidden_states + residual + + hidden_states = hidden_states / attn.rescale_output_factor + + return hidden_states + + +class XLAFlashAttnProcessor2_0: + r""" + Processor for implementing scaled dot-product attention with pallas flash attention kernel if using `torch_xla`. + """ + + def __init__(self, partition_spec: Optional[Tuple[Optional[str], ...]] = None): + if not hasattr(F, "scaled_dot_product_attention"): + raise ImportError( + "XLAFlashAttnProcessor2_0 requires PyTorch 2.0, to use it, please upgrade PyTorch to 2.0." + ) + if is_torch_xla_version("<", "2.3"): + raise ImportError("XLA flash attention requires torch_xla version >= 2.3.") + if is_spmd() and is_torch_xla_version("<", "2.4"): + raise ImportError("SPMD support for XLA flash attention needs torch_xla version >= 2.4.") + self.partition_spec = partition_spec + + def __call__( + self, + attn: Attention, + hidden_states: torch.Tensor, + encoder_hidden_states: Optional[torch.Tensor] = None, + attention_mask: Optional[torch.Tensor] = None, + temb: Optional[torch.Tensor] = None, + *args, + **kwargs, + ) -> torch.Tensor: + residual = hidden_states + if attn.spatial_norm is not None: + hidden_states = attn.spatial_norm(hidden_states, temb) + + input_ndim = hidden_states.ndim + + if input_ndim == 4: + batch_size, channel, height, width = hidden_states.shape + hidden_states = hidden_states.view(batch_size, channel, height * width).transpose(1, 2) + + batch_size, sequence_length, _ = ( + hidden_states.shape if encoder_hidden_states is None else encoder_hidden_states.shape + ) + + if attention_mask is not None: + attention_mask = attn.prepare_attention_mask(attention_mask, sequence_length, batch_size) + # scaled_dot_product_attention expects attention_mask shape to be + # (batch, heads, source_length, target_length) + attention_mask = attention_mask.view(batch_size, attn.heads, -1, attention_mask.shape[-1]) + + if attn.group_norm is not None: + hidden_states = attn.group_norm(hidden_states.transpose(1, 2)).transpose(1, 2) + + query = attn.to_q(hidden_states) + + if encoder_hidden_states is None: + encoder_hidden_states = hidden_states + elif attn.norm_cross: + encoder_hidden_states = attn.norm_encoder_hidden_states(encoder_hidden_states) + + key = attn.to_k(encoder_hidden_states) + value = attn.to_v(encoder_hidden_states) + + inner_dim = key.shape[-1] + head_dim = inner_dim // attn.heads + + query = query.view(batch_size, -1, attn.heads, head_dim).transpose(1, 2) + + key = key.view(batch_size, -1, attn.heads, head_dim).transpose(1, 2) + value = value.view(batch_size, -1, attn.heads, head_dim).transpose(1, 2) + + if attn.norm_q is not None: + query = attn.norm_q(query) + if attn.norm_k is not None: + key = attn.norm_k(key) + + # the output of sdp = (batch, num_heads, seq_len, head_dim) + # TODO: add support for attn.scale when we move to Torch 2.1 + if all(tensor.shape[2] >= 4096 for tensor in [query, key, value]): + if attention_mask is not None: + attention_mask = attention_mask.view(batch_size, 1, 1, attention_mask.shape[-1]) + # Convert mask to float and replace 0s with -inf and 1s with 0 + attention_mask = ( + attention_mask.float() + .masked_fill(attention_mask == 0, float("-inf")) + .masked_fill(attention_mask == 1, float(0.0)) + ) + + # Apply attention mask to key + key = key + attention_mask + query /= math.sqrt(query.shape[3]) + partition_spec = self.partition_spec if is_spmd() else None + hidden_states = flash_attention(query, key, value, causal=False, partition_spec=partition_spec) + else: + logger.warning( + "Unable to use the flash attention pallas kernel API call due to QKV sequence length < 4096." + ) + hidden_states = F.scaled_dot_product_attention( + query, key, value, attn_mask=attention_mask, dropout_p=0.0, is_causal=False + ) + + hidden_states = hidden_states.transpose(1, 2).reshape(batch_size, -1, attn.heads * head_dim) + hidden_states = hidden_states.to(query.dtype) + + # linear proj + hidden_states = attn.to_out[0](hidden_states) + # dropout + hidden_states = attn.to_out[1](hidden_states) + + if input_ndim == 4: + hidden_states = hidden_states.transpose(-1, -2).reshape(batch_size, channel, height, width) + + if attn.residual_connection: + hidden_states = hidden_states + residual + + hidden_states = hidden_states / attn.rescale_output_factor + + return hidden_states + + +class MochiVaeAttnProcessor2_0: + r""" + Attention processor used in Mochi VAE. + """ + + def __init__(self): + if not hasattr(F, "scaled_dot_product_attention"): + raise ImportError("AttnProcessor2_0 requires PyTorch 2.0, to use it, please upgrade PyTorch to 2.0.") + + def __call__( + self, + attn: Attention, + hidden_states: torch.Tensor, + encoder_hidden_states: Optional[torch.Tensor] = None, + attention_mask: Optional[torch.Tensor] = None, + ) -> torch.Tensor: + residual = hidden_states + is_single_frame = hidden_states.shape[1] == 1 + + batch_size, sequence_length, _ = ( + hidden_states.shape if encoder_hidden_states is None else encoder_hidden_states.shape + ) + + if attention_mask is not None: + attention_mask = attn.prepare_attention_mask(attention_mask, sequence_length, batch_size) + # scaled_dot_product_attention expects attention_mask shape to be + # (batch, heads, source_length, target_length) + attention_mask = attention_mask.view(batch_size, attn.heads, -1, attention_mask.shape[-1]) + + if is_single_frame: + hidden_states = attn.to_v(hidden_states) + + # linear proj + hidden_states = attn.to_out[0](hidden_states) + # dropout + hidden_states = attn.to_out[1](hidden_states) + + if attn.residual_connection: + hidden_states = hidden_states + residual + + hidden_states = hidden_states / attn.rescale_output_factor + return hidden_states + + query = attn.to_q(hidden_states) + + if encoder_hidden_states is None: + encoder_hidden_states = hidden_states + + key = attn.to_k(encoder_hidden_states) + value = attn.to_v(encoder_hidden_states) + + inner_dim = key.shape[-1] + head_dim = inner_dim // attn.heads + + query = query.view(batch_size, -1, attn.heads, head_dim).transpose(1, 2) + key = key.view(batch_size, -1, attn.heads, head_dim).transpose(1, 2) + value = value.view(batch_size, -1, attn.heads, head_dim).transpose(1, 2) + + if attn.norm_q is not None: + query = attn.norm_q(query) + if attn.norm_k is not None: + key = attn.norm_k(key) + + # the output of sdp = (batch, num_heads, seq_len, head_dim) + # TODO: add support for attn.scale when we move to Torch 2.1 + hidden_states = F.scaled_dot_product_attention( + query, key, value, attn_mask=attention_mask, dropout_p=0.0, is_causal=attn.is_causal + ) + + hidden_states = hidden_states.transpose(1, 2).reshape(batch_size, -1, attn.heads * head_dim) + hidden_states = hidden_states.to(query.dtype) + + # linear proj + hidden_states = attn.to_out[0](hidden_states) + # dropout + hidden_states = attn.to_out[1](hidden_states) + + if attn.residual_connection: + hidden_states = hidden_states + residual + + hidden_states = hidden_states / attn.rescale_output_factor + + return hidden_states + + +class StableAudioAttnProcessor2_0: + r""" + Processor for implementing scaled dot-product attention (enabled by default if you're using PyTorch 2.0). This is + used in the Stable Audio model. It applies rotary embedding on query and key vector, and allows MHA, GQA or MQA. + """ + + def __init__(self): + if not hasattr(F, "scaled_dot_product_attention"): + raise ImportError( + "StableAudioAttnProcessor2_0 requires PyTorch 2.0, to use it, please upgrade PyTorch to 2.0." + ) + + def apply_partial_rotary_emb( + self, + x: torch.Tensor, + freqs_cis: Tuple[torch.Tensor], + ) -> torch.Tensor: + from .embeddings import apply_rotary_emb + + rot_dim = freqs_cis[0].shape[-1] + x_to_rotate, x_unrotated = x[..., :rot_dim], x[..., rot_dim:] + + x_rotated = apply_rotary_emb(x_to_rotate, freqs_cis, use_real=True, use_real_unbind_dim=-2) + + out = torch.cat((x_rotated, x_unrotated), dim=-1) + return out + + def __call__( + self, + attn: Attention, + hidden_states: torch.Tensor, + encoder_hidden_states: Optional[torch.Tensor] = None, + attention_mask: Optional[torch.Tensor] = None, + rotary_emb: Optional[torch.Tensor] = None, + ) -> torch.Tensor: + from .embeddings import apply_rotary_emb + + residual = hidden_states + + input_ndim = hidden_states.ndim + + if input_ndim == 4: + batch_size, channel, height, width = hidden_states.shape + hidden_states = hidden_states.view(batch_size, channel, height * width).transpose(1, 2) + + batch_size, sequence_length, _ = ( + hidden_states.shape if encoder_hidden_states is None else encoder_hidden_states.shape + ) + + if attention_mask is not None: + attention_mask = attn.prepare_attention_mask(attention_mask, sequence_length, batch_size) + # scaled_dot_product_attention expects attention_mask shape to be + # (batch, heads, source_length, target_length) + attention_mask = attention_mask.view(batch_size, attn.heads, -1, attention_mask.shape[-1]) + + query = attn.to_q(hidden_states) + + if encoder_hidden_states is None: + encoder_hidden_states = hidden_states + elif attn.norm_cross: + encoder_hidden_states = attn.norm_encoder_hidden_states(encoder_hidden_states) + + key = attn.to_k(encoder_hidden_states) + value = attn.to_v(encoder_hidden_states) + + head_dim = query.shape[-1] // attn.heads + kv_heads = key.shape[-1] // head_dim + + query = query.view(batch_size, -1, attn.heads, head_dim).transpose(1, 2) + + key = key.view(batch_size, -1, kv_heads, head_dim).transpose(1, 2) + value = value.view(batch_size, -1, kv_heads, head_dim).transpose(1, 2) + + if kv_heads != attn.heads: + # if GQA or MQA, repeat the key/value heads to reach the number of query heads. + heads_per_kv_head = attn.heads // kv_heads + key = torch.repeat_interleave(key, heads_per_kv_head, dim=1) + value = torch.repeat_interleave(value, heads_per_kv_head, dim=1) + + if attn.norm_q is not None: + query = attn.norm_q(query) + if attn.norm_k is not None: + key = attn.norm_k(key) + + # Apply RoPE if needed + if rotary_emb is not None: + query_dtype = query.dtype + key_dtype = key.dtype + query = query.to(torch.float32) + key = key.to(torch.float32) + + rot_dim = rotary_emb[0].shape[-1] + query_to_rotate, query_unrotated = query[..., :rot_dim], query[..., rot_dim:] + query_rotated = apply_rotary_emb(query_to_rotate, rotary_emb, use_real=True, use_real_unbind_dim=-2) + + query = torch.cat((query_rotated, query_unrotated), dim=-1) + + if not attn.is_cross_attention: + key_to_rotate, key_unrotated = key[..., :rot_dim], key[..., rot_dim:] + key_rotated = apply_rotary_emb(key_to_rotate, rotary_emb, use_real=True, use_real_unbind_dim=-2) + + key = torch.cat((key_rotated, key_unrotated), dim=-1) + + query = query.to(query_dtype) + key = key.to(key_dtype) + + # the output of sdp = (batch, num_heads, seq_len, head_dim) + # TODO: add support for attn.scale when we move to Torch 2.1 + hidden_states = F.scaled_dot_product_attention( + query, key, value, attn_mask=attention_mask, dropout_p=0.0, is_causal=False + ) + + hidden_states = hidden_states.transpose(1, 2).reshape(batch_size, -1, attn.heads * head_dim) + hidden_states = hidden_states.to(query.dtype) + + # linear proj + hidden_states = attn.to_out[0](hidden_states) + # dropout + hidden_states = attn.to_out[1](hidden_states) + + if input_ndim == 4: + hidden_states = hidden_states.transpose(-1, -2).reshape(batch_size, channel, height, width) + + if attn.residual_connection: + hidden_states = hidden_states + residual + + hidden_states = hidden_states / attn.rescale_output_factor + + return hidden_states + + +class HunyuanAttnProcessor2_0: + r""" + Processor for implementing scaled dot-product attention (enabled by default if you're using PyTorch 2.0). This is + used in the HunyuanDiT model. It applies a s normalization layer and rotary embedding on query and key vector. + """ + + def __init__(self): + if not hasattr(F, "scaled_dot_product_attention"): + raise ImportError("AttnProcessor2_0 requires PyTorch 2.0, to use it, please upgrade PyTorch to 2.0.") + + def __call__( + self, + attn: Attention, + hidden_states: torch.Tensor, + encoder_hidden_states: Optional[torch.Tensor] = None, + attention_mask: Optional[torch.Tensor] = None, + temb: Optional[torch.Tensor] = None, + image_rotary_emb: Optional[torch.Tensor] = None, + ) -> torch.Tensor: + from .embeddings import apply_rotary_emb + + residual = hidden_states + if attn.spatial_norm is not None: + hidden_states = attn.spatial_norm(hidden_states, temb) + + input_ndim = hidden_states.ndim + + if input_ndim == 4: + batch_size, channel, height, width = hidden_states.shape + hidden_states = hidden_states.view(batch_size, channel, height * width).transpose(1, 2) + + batch_size, sequence_length, _ = ( + hidden_states.shape if encoder_hidden_states is None else encoder_hidden_states.shape + ) + + if attention_mask is not None: + attention_mask = attn.prepare_attention_mask(attention_mask, sequence_length, batch_size) + # scaled_dot_product_attention expects attention_mask shape to be + # (batch, heads, source_length, target_length) + attention_mask = attention_mask.view(batch_size, attn.heads, -1, attention_mask.shape[-1]) + + if attn.group_norm is not None: + hidden_states = attn.group_norm(hidden_states.transpose(1, 2)).transpose(1, 2) + + query = attn.to_q(hidden_states) + + if encoder_hidden_states is None: + encoder_hidden_states = hidden_states + elif attn.norm_cross: + encoder_hidden_states = attn.norm_encoder_hidden_states(encoder_hidden_states) + + key = attn.to_k(encoder_hidden_states) + value = attn.to_v(encoder_hidden_states) + + inner_dim = key.shape[-1] + head_dim = inner_dim // attn.heads + + query = query.view(batch_size, -1, attn.heads, head_dim).transpose(1, 2) + + key = key.view(batch_size, -1, attn.heads, head_dim).transpose(1, 2) + value = value.view(batch_size, -1, attn.heads, head_dim).transpose(1, 2) + + if attn.norm_q is not None: + query = attn.norm_q(query) + if attn.norm_k is not None: + key = attn.norm_k(key) + + # Apply RoPE if needed + if image_rotary_emb is not None: + query = apply_rotary_emb(query, image_rotary_emb) + if not attn.is_cross_attention: + key = apply_rotary_emb(key, image_rotary_emb) + + # the output of sdp = (batch, num_heads, seq_len, head_dim) + # TODO: add support for attn.scale when we move to Torch 2.1 + hidden_states = F.scaled_dot_product_attention( + query, key, value, attn_mask=attention_mask, dropout_p=0.0, is_causal=False + ) + + hidden_states = hidden_states.transpose(1, 2).reshape(batch_size, -1, attn.heads * head_dim) + hidden_states = hidden_states.to(query.dtype) + + # linear proj + hidden_states = attn.to_out[0](hidden_states) + # dropout + hidden_states = attn.to_out[1](hidden_states) + + if input_ndim == 4: + hidden_states = hidden_states.transpose(-1, -2).reshape(batch_size, channel, height, width) + + if attn.residual_connection: + hidden_states = hidden_states + residual + + hidden_states = hidden_states / attn.rescale_output_factor + + return hidden_states + + +class FusedHunyuanAttnProcessor2_0: + r""" + Processor for implementing scaled dot-product attention (enabled by default if you're using PyTorch 2.0) with fused + projection layers. This is used in the HunyuanDiT model. It applies a s normalization layer and rotary embedding on + query and key vector. + """ + + def __init__(self): + if not hasattr(F, "scaled_dot_product_attention"): + raise ImportError( + "FusedHunyuanAttnProcessor2_0 requires PyTorch 2.0, to use it, please upgrade PyTorch to 2.0." + ) + + def __call__( + self, + attn: Attention, + hidden_states: torch.Tensor, + encoder_hidden_states: Optional[torch.Tensor] = None, + attention_mask: Optional[torch.Tensor] = None, + temb: Optional[torch.Tensor] = None, + image_rotary_emb: Optional[torch.Tensor] = None, + ) -> torch.Tensor: + from .embeddings import apply_rotary_emb + + residual = hidden_states + if attn.spatial_norm is not None: + hidden_states = attn.spatial_norm(hidden_states, temb) + + input_ndim = hidden_states.ndim + + if input_ndim == 4: + batch_size, channel, height, width = hidden_states.shape + hidden_states = hidden_states.view(batch_size, channel, height * width).transpose(1, 2) + + batch_size, sequence_length, _ = ( + hidden_states.shape if encoder_hidden_states is None else encoder_hidden_states.shape + ) + + if attention_mask is not None: + attention_mask = attn.prepare_attention_mask(attention_mask, sequence_length, batch_size) + # scaled_dot_product_attention expects attention_mask shape to be + # (batch, heads, source_length, target_length) + attention_mask = attention_mask.view(batch_size, attn.heads, -1, attention_mask.shape[-1]) + + if attn.group_norm is not None: + hidden_states = attn.group_norm(hidden_states.transpose(1, 2)).transpose(1, 2) + + if encoder_hidden_states is None: + qkv = attn.to_qkv(hidden_states) + split_size = qkv.shape[-1] // 3 + query, key, value = torch.split(qkv, split_size, dim=-1) + else: + if attn.norm_cross: + encoder_hidden_states = attn.norm_encoder_hidden_states(encoder_hidden_states) + query = attn.to_q(hidden_states) + + kv = attn.to_kv(encoder_hidden_states) + split_size = kv.shape[-1] // 2 + key, value = torch.split(kv, split_size, dim=-1) + + inner_dim = key.shape[-1] + head_dim = inner_dim // attn.heads + + query = query.view(batch_size, -1, attn.heads, head_dim).transpose(1, 2) + key = key.view(batch_size, -1, attn.heads, head_dim).transpose(1, 2) + value = value.view(batch_size, -1, attn.heads, head_dim).transpose(1, 2) + + if attn.norm_q is not None: + query = attn.norm_q(query) + if attn.norm_k is not None: + key = attn.norm_k(key) + + # Apply RoPE if needed + if image_rotary_emb is not None: + query = apply_rotary_emb(query, image_rotary_emb) + if not attn.is_cross_attention: + key = apply_rotary_emb(key, image_rotary_emb) + + # the output of sdp = (batch, num_heads, seq_len, head_dim) + # TODO: add support for attn.scale when we move to Torch 2.1 + hidden_states = F.scaled_dot_product_attention( + query, key, value, attn_mask=attention_mask, dropout_p=0.0, is_causal=False + ) + + hidden_states = hidden_states.transpose(1, 2).reshape(batch_size, -1, attn.heads * head_dim) + hidden_states = hidden_states.to(query.dtype) + + # linear proj + hidden_states = attn.to_out[0](hidden_states) + # dropout + hidden_states = attn.to_out[1](hidden_states) + + if input_ndim == 4: + hidden_states = hidden_states.transpose(-1, -2).reshape(batch_size, channel, height, width) + + if attn.residual_connection: + hidden_states = hidden_states + residual + + hidden_states = hidden_states / attn.rescale_output_factor + + return hidden_states + + +class PAGHunyuanAttnProcessor2_0: + r""" + Processor for implementing scaled dot-product attention (enabled by default if you're using PyTorch 2.0). This is + used in the HunyuanDiT model. It applies a normalization layer and rotary embedding on query and key vector. This + variant of the processor employs [Pertubed Attention Guidance](https://arxiv.org/abs/2403.17377). + """ + + def __init__(self): + if not hasattr(F, "scaled_dot_product_attention"): + raise ImportError( + "PAGHunyuanAttnProcessor2_0 requires PyTorch 2.0, to use it, please upgrade PyTorch to 2.0." + ) + + def __call__( + self, + attn: Attention, + hidden_states: torch.Tensor, + encoder_hidden_states: Optional[torch.Tensor] = None, + attention_mask: Optional[torch.Tensor] = None, + temb: Optional[torch.Tensor] = None, + image_rotary_emb: Optional[torch.Tensor] = None, + ) -> torch.Tensor: + from .embeddings import apply_rotary_emb + + residual = hidden_states + if attn.spatial_norm is not None: + hidden_states = attn.spatial_norm(hidden_states, temb) + + input_ndim = hidden_states.ndim + + if input_ndim == 4: + batch_size, channel, height, width = hidden_states.shape + hidden_states = hidden_states.view(batch_size, channel, height * width).transpose(1, 2) + + # chunk + hidden_states_org, hidden_states_ptb = hidden_states.chunk(2) + + # 1. Original Path + batch_size, sequence_length, _ = ( + hidden_states_org.shape if encoder_hidden_states is None else encoder_hidden_states.shape + ) + + if attention_mask is not None: + attention_mask = attn.prepare_attention_mask(attention_mask, sequence_length, batch_size) + # scaled_dot_product_attention expects attention_mask shape to be + # (batch, heads, source_length, target_length) + attention_mask = attention_mask.view(batch_size, attn.heads, -1, attention_mask.shape[-1]) + + if attn.group_norm is not None: + hidden_states_org = attn.group_norm(hidden_states_org.transpose(1, 2)).transpose(1, 2) + + query = attn.to_q(hidden_states_org) + + if encoder_hidden_states is None: + encoder_hidden_states = hidden_states_org + elif attn.norm_cross: + encoder_hidden_states = attn.norm_encoder_hidden_states(encoder_hidden_states) + + key = attn.to_k(encoder_hidden_states) + value = attn.to_v(encoder_hidden_states) + + inner_dim = key.shape[-1] + head_dim = inner_dim // attn.heads + + query = query.view(batch_size, -1, attn.heads, head_dim).transpose(1, 2) + + key = key.view(batch_size, -1, attn.heads, head_dim).transpose(1, 2) + value = value.view(batch_size, -1, attn.heads, head_dim).transpose(1, 2) + + if attn.norm_q is not None: + query = attn.norm_q(query) + if attn.norm_k is not None: + key = attn.norm_k(key) + + # Apply RoPE if needed + if image_rotary_emb is not None: + query = apply_rotary_emb(query, image_rotary_emb) + if not attn.is_cross_attention: + key = apply_rotary_emb(key, image_rotary_emb) + + # the output of sdp = (batch, num_heads, seq_len, head_dim) + # TODO: add support for attn.scale when we move to Torch 2.1 + hidden_states_org = F.scaled_dot_product_attention( + query, key, value, attn_mask=attention_mask, dropout_p=0.0, is_causal=False + ) + + hidden_states_org = hidden_states_org.transpose(1, 2).reshape(batch_size, -1, attn.heads * head_dim) + hidden_states_org = hidden_states_org.to(query.dtype) + + # linear proj + hidden_states_org = attn.to_out[0](hidden_states_org) + # dropout + hidden_states_org = attn.to_out[1](hidden_states_org) + + if input_ndim == 4: + hidden_states_org = hidden_states_org.transpose(-1, -2).reshape(batch_size, channel, height, width) + + # 2. Perturbed Path + if attn.group_norm is not None: + hidden_states_ptb = attn.group_norm(hidden_states_ptb.transpose(1, 2)).transpose(1, 2) + + hidden_states_ptb = attn.to_v(hidden_states_ptb) + hidden_states_ptb = hidden_states_ptb.to(query.dtype) + + # linear proj + hidden_states_ptb = attn.to_out[0](hidden_states_ptb) + # dropout + hidden_states_ptb = attn.to_out[1](hidden_states_ptb) + + if input_ndim == 4: + hidden_states_ptb = hidden_states_ptb.transpose(-1, -2).reshape(batch_size, channel, height, width) + + # cat + hidden_states = torch.cat([hidden_states_org, hidden_states_ptb]) + + if attn.residual_connection: + hidden_states = hidden_states + residual + + hidden_states = hidden_states / attn.rescale_output_factor + + return hidden_states + + +class PAGCFGHunyuanAttnProcessor2_0: + r""" + Processor for implementing scaled dot-product attention (enabled by default if you're using PyTorch 2.0). This is + used in the HunyuanDiT model. It applies a normalization layer and rotary embedding on query and key vector. This + variant of the processor employs [Pertubed Attention Guidance](https://arxiv.org/abs/2403.17377). + """ + + def __init__(self): + if not hasattr(F, "scaled_dot_product_attention"): + raise ImportError( + "PAGCFGHunyuanAttnProcessor2_0 requires PyTorch 2.0, to use it, please upgrade PyTorch to 2.0." + ) + + def __call__( + self, + attn: Attention, + hidden_states: torch.Tensor, + encoder_hidden_states: Optional[torch.Tensor] = None, + attention_mask: Optional[torch.Tensor] = None, + temb: Optional[torch.Tensor] = None, + image_rotary_emb: Optional[torch.Tensor] = None, + ) -> torch.Tensor: + from .embeddings import apply_rotary_emb + + residual = hidden_states + if attn.spatial_norm is not None: + hidden_states = attn.spatial_norm(hidden_states, temb) + + input_ndim = hidden_states.ndim + + if input_ndim == 4: + batch_size, channel, height, width = hidden_states.shape + hidden_states = hidden_states.view(batch_size, channel, height * width).transpose(1, 2) + + # chunk + hidden_states_uncond, hidden_states_org, hidden_states_ptb = hidden_states.chunk(3) + hidden_states_org = torch.cat([hidden_states_uncond, hidden_states_org]) + + # 1. Original Path + batch_size, sequence_length, _ = ( + hidden_states_org.shape if encoder_hidden_states is None else encoder_hidden_states.shape + ) + + if attention_mask is not None: + attention_mask = attn.prepare_attention_mask(attention_mask, sequence_length, batch_size) + # scaled_dot_product_attention expects attention_mask shape to be + # (batch, heads, source_length, target_length) + attention_mask = attention_mask.view(batch_size, attn.heads, -1, attention_mask.shape[-1]) + + if attn.group_norm is not None: + hidden_states_org = attn.group_norm(hidden_states_org.transpose(1, 2)).transpose(1, 2) + + query = attn.to_q(hidden_states_org) + + if encoder_hidden_states is None: + encoder_hidden_states = hidden_states_org + elif attn.norm_cross: + encoder_hidden_states = attn.norm_encoder_hidden_states(encoder_hidden_states) + + key = attn.to_k(encoder_hidden_states) + value = attn.to_v(encoder_hidden_states) + + inner_dim = key.shape[-1] + head_dim = inner_dim // attn.heads + + query = query.view(batch_size, -1, attn.heads, head_dim).transpose(1, 2) + + key = key.view(batch_size, -1, attn.heads, head_dim).transpose(1, 2) + value = value.view(batch_size, -1, attn.heads, head_dim).transpose(1, 2) + + if attn.norm_q is not None: + query = attn.norm_q(query) + if attn.norm_k is not None: + key = attn.norm_k(key) + + # Apply RoPE if needed + if image_rotary_emb is not None: + query = apply_rotary_emb(query, image_rotary_emb) + if not attn.is_cross_attention: + key = apply_rotary_emb(key, image_rotary_emb) + + # the output of sdp = (batch, num_heads, seq_len, head_dim) + # TODO: add support for attn.scale when we move to Torch 2.1 + hidden_states_org = F.scaled_dot_product_attention( + query, key, value, attn_mask=attention_mask, dropout_p=0.0, is_causal=False + ) + + hidden_states_org = hidden_states_org.transpose(1, 2).reshape(batch_size, -1, attn.heads * head_dim) + hidden_states_org = hidden_states_org.to(query.dtype) + + # linear proj + hidden_states_org = attn.to_out[0](hidden_states_org) + # dropout + hidden_states_org = attn.to_out[1](hidden_states_org) + + if input_ndim == 4: + hidden_states_org = hidden_states_org.transpose(-1, -2).reshape(batch_size, channel, height, width) + + # 2. Perturbed Path + if attn.group_norm is not None: + hidden_states_ptb = attn.group_norm(hidden_states_ptb.transpose(1, 2)).transpose(1, 2) + + hidden_states_ptb = attn.to_v(hidden_states_ptb) + hidden_states_ptb = hidden_states_ptb.to(query.dtype) + + # linear proj + hidden_states_ptb = attn.to_out[0](hidden_states_ptb) + # dropout + hidden_states_ptb = attn.to_out[1](hidden_states_ptb) + + if input_ndim == 4: + hidden_states_ptb = hidden_states_ptb.transpose(-1, -2).reshape(batch_size, channel, height, width) + + # cat + hidden_states = torch.cat([hidden_states_org, hidden_states_ptb]) + + if attn.residual_connection: + hidden_states = hidden_states + residual + + hidden_states = hidden_states / attn.rescale_output_factor + + return hidden_states + + +class LuminaAttnProcessor2_0: + r""" + Processor for implementing scaled dot-product attention (enabled by default if you're using PyTorch 2.0). This is + used in the LuminaNextDiT model. It applies a s normalization layer and rotary embedding on query and key vector. + """ + + def __init__(self): + if not hasattr(F, "scaled_dot_product_attention"): + raise ImportError("AttnProcessor2_0 requires PyTorch 2.0, to use it, please upgrade PyTorch to 2.0.") + + def __call__( + self, + attn: Attention, + hidden_states: torch.Tensor, + encoder_hidden_states: torch.Tensor, + attention_mask: Optional[torch.Tensor] = None, + query_rotary_emb: Optional[torch.Tensor] = None, + key_rotary_emb: Optional[torch.Tensor] = None, + base_sequence_length: Optional[int] = None, + ) -> torch.Tensor: + from .embeddings import apply_rotary_emb + + input_ndim = hidden_states.ndim + + if input_ndim == 4: + batch_size, channel, height, width = hidden_states.shape + hidden_states = hidden_states.view(batch_size, channel, height * width).transpose(1, 2) + + batch_size, sequence_length, _ = hidden_states.shape + + # Get Query-Key-Value Pair + query = attn.to_q(hidden_states) + key = attn.to_k(encoder_hidden_states) + value = attn.to_v(encoder_hidden_states) + + query_dim = query.shape[-1] + inner_dim = key.shape[-1] + head_dim = query_dim // attn.heads + dtype = query.dtype + + # Get key-value heads + kv_heads = inner_dim // head_dim + + # Apply Query-Key Norm if needed + if attn.norm_q is not None: + query = attn.norm_q(query) + if attn.norm_k is not None: + key = attn.norm_k(key) + + query = query.view(batch_size, -1, attn.heads, head_dim) + + key = key.view(batch_size, -1, kv_heads, head_dim) + value = value.view(batch_size, -1, kv_heads, head_dim) + + # Apply RoPE if needed + if query_rotary_emb is not None: + query = apply_rotary_emb(query, query_rotary_emb, use_real=False) + if key_rotary_emb is not None: + key = apply_rotary_emb(key, key_rotary_emb, use_real=False) + + query, key = query.to(dtype), key.to(dtype) + + # Apply proportional attention if true + if key_rotary_emb is None: + softmax_scale = None + else: + if base_sequence_length is not None: + softmax_scale = math.sqrt(math.log(sequence_length, base_sequence_length)) * attn.scale + else: + softmax_scale = attn.scale + + # perform Grouped-qurey Attention (GQA) + n_rep = attn.heads // kv_heads + if n_rep >= 1: + key = key.unsqueeze(3).repeat(1, 1, 1, n_rep, 1).flatten(2, 3) + value = value.unsqueeze(3).repeat(1, 1, 1, n_rep, 1).flatten(2, 3) + + # scaled_dot_product_attention expects attention_mask shape to be + # (batch, heads, source_length, target_length) + attention_mask = attention_mask.bool().view(batch_size, 1, 1, -1) + attention_mask = attention_mask.expand(-1, attn.heads, sequence_length, -1) + + query = query.transpose(1, 2) + key = key.transpose(1, 2) + value = value.transpose(1, 2) + + # the output of sdp = (batch, num_heads, seq_len, head_dim) + # TODO: add support for attn.scale when we move to Torch 2.1 + hidden_states = F.scaled_dot_product_attention( + query, key, value, attn_mask=attention_mask, scale=softmax_scale + ) + hidden_states = hidden_states.transpose(1, 2).to(dtype) + + return hidden_states + + +class FusedAttnProcessor2_0: + r""" + Processor for implementing scaled dot-product attention (enabled by default if you're using PyTorch 2.0). It uses + fused projection layers. For self-attention modules, all projection matrices (i.e., query, key, value) are fused. + For cross-attention modules, key and value projection matrices are fused. + + + + This API is currently 🧪 experimental in nature and can change in future. + + + """ + + def __init__(self): + if not hasattr(F, "scaled_dot_product_attention"): + raise ImportError( + "FusedAttnProcessor2_0 requires at least PyTorch 2.0, to use it. Please upgrade PyTorch to > 2.0." + ) + + def __call__( + self, + attn: Attention, + hidden_states: torch.Tensor, + encoder_hidden_states: Optional[torch.Tensor] = None, + attention_mask: Optional[torch.Tensor] = None, + temb: Optional[torch.Tensor] = None, + *args, + **kwargs, + ) -> torch.Tensor: + if len(args) > 0 or kwargs.get("scale", None) is not None: + deprecation_message = "The `scale` argument is deprecated and will be ignored. Please remove it, as passing it will raise an error in the future. `scale` should directly be passed while calling the underlying pipeline component i.e., via `cross_attention_kwargs`." + deprecate("scale", "1.0.0", deprecation_message) + + residual = hidden_states + if attn.spatial_norm is not None: + hidden_states = attn.spatial_norm(hidden_states, temb) + + input_ndim = hidden_states.ndim + + if input_ndim == 4: + batch_size, channel, height, width = hidden_states.shape + hidden_states = hidden_states.view(batch_size, channel, height * width).transpose(1, 2) + + batch_size, sequence_length, _ = ( + hidden_states.shape if encoder_hidden_states is None else encoder_hidden_states.shape + ) + + if attention_mask is not None: + attention_mask = attn.prepare_attention_mask(attention_mask, sequence_length, batch_size) + # scaled_dot_product_attention expects attention_mask shape to be + # (batch, heads, source_length, target_length) + attention_mask = attention_mask.view(batch_size, attn.heads, -1, attention_mask.shape[-1]) + + if attn.group_norm is not None: + hidden_states = attn.group_norm(hidden_states.transpose(1, 2)).transpose(1, 2) + + if encoder_hidden_states is None: + qkv = attn.to_qkv(hidden_states) + split_size = qkv.shape[-1] // 3 + query, key, value = torch.split(qkv, split_size, dim=-1) + else: + if attn.norm_cross: + encoder_hidden_states = attn.norm_encoder_hidden_states(encoder_hidden_states) + query = attn.to_q(hidden_states) + + kv = attn.to_kv(encoder_hidden_states) + split_size = kv.shape[-1] // 2 + key, value = torch.split(kv, split_size, dim=-1) + + inner_dim = key.shape[-1] + head_dim = inner_dim // attn.heads + + query = query.view(batch_size, -1, attn.heads, head_dim).transpose(1, 2) + key = key.view(batch_size, -1, attn.heads, head_dim).transpose(1, 2) + value = value.view(batch_size, -1, attn.heads, head_dim).transpose(1, 2) + + if attn.norm_q is not None: + query = attn.norm_q(query) + if attn.norm_k is not None: + key = attn.norm_k(key) + + # the output of sdp = (batch, num_heads, seq_len, head_dim) + # TODO: add support for attn.scale when we move to Torch 2.1 + hidden_states = F.scaled_dot_product_attention( + query, key, value, attn_mask=attention_mask, dropout_p=0.0, is_causal=False + ) + + hidden_states = hidden_states.transpose(1, 2).reshape(batch_size, -1, attn.heads * head_dim) + hidden_states = hidden_states.to(query.dtype) + + # linear proj + hidden_states = attn.to_out[0](hidden_states) + # dropout + hidden_states = attn.to_out[1](hidden_states) + + if input_ndim == 4: + hidden_states = hidden_states.transpose(-1, -2).reshape(batch_size, channel, height, width) + + if attn.residual_connection: + hidden_states = hidden_states + residual + + hidden_states = hidden_states / attn.rescale_output_factor + + return hidden_states + + +class CustomDiffusionXFormersAttnProcessor(nn.Module): + r""" + Processor for implementing memory efficient attention using xFormers for the Custom Diffusion method. + + Args: + train_kv (`bool`, defaults to `True`): + Whether to newly train the key and value matrices corresponding to the text features. + train_q_out (`bool`, defaults to `True`): + Whether to newly train query matrices corresponding to the latent image features. + hidden_size (`int`, *optional*, defaults to `None`): + The hidden size of the attention layer. + cross_attention_dim (`int`, *optional*, defaults to `None`): + The number of channels in the `encoder_hidden_states`. + out_bias (`bool`, defaults to `True`): + Whether to include the bias parameter in `train_q_out`. + dropout (`float`, *optional*, defaults to 0.0): + The dropout probability to use. + attention_op (`Callable`, *optional*, defaults to `None`): + The base + [operator](https://facebookresearch.github.io/xformers/components/ops.html#xformers.ops.AttentionOpBase) to use + as the attention operator. It is recommended to set to `None`, and allow xFormers to choose the best operator. + """ + + def __init__( + self, + train_kv: bool = True, + train_q_out: bool = False, + hidden_size: Optional[int] = None, + cross_attention_dim: Optional[int] = None, + out_bias: bool = True, + dropout: float = 0.0, + attention_op: Optional[Callable] = None, + ): + super().__init__() + self.train_kv = train_kv + self.train_q_out = train_q_out + + self.hidden_size = hidden_size + self.cross_attention_dim = cross_attention_dim + self.attention_op = attention_op + + # `_custom_diffusion` id for easy serialization and loading. + if self.train_kv: + self.to_k_custom_diffusion = nn.Linear(cross_attention_dim or hidden_size, hidden_size, bias=False) + self.to_v_custom_diffusion = nn.Linear(cross_attention_dim or hidden_size, hidden_size, bias=False) + if self.train_q_out: + self.to_q_custom_diffusion = nn.Linear(hidden_size, hidden_size, bias=False) + self.to_out_custom_diffusion = nn.ModuleList([]) + self.to_out_custom_diffusion.append(nn.Linear(hidden_size, hidden_size, bias=out_bias)) + self.to_out_custom_diffusion.append(nn.Dropout(dropout)) + + def __call__( + self, + attn: Attention, + hidden_states: torch.Tensor, + encoder_hidden_states: Optional[torch.Tensor] = None, + attention_mask: Optional[torch.Tensor] = None, + ) -> torch.Tensor: + batch_size, sequence_length, _ = ( + hidden_states.shape if encoder_hidden_states is None else encoder_hidden_states.shape + ) + + attention_mask = attn.prepare_attention_mask(attention_mask, sequence_length, batch_size) + + if self.train_q_out: + query = self.to_q_custom_diffusion(hidden_states).to(attn.to_q.weight.dtype) + else: + query = attn.to_q(hidden_states.to(attn.to_q.weight.dtype)) + + if encoder_hidden_states is None: + crossattn = False + encoder_hidden_states = hidden_states + else: + crossattn = True + if attn.norm_cross: + encoder_hidden_states = attn.norm_encoder_hidden_states(encoder_hidden_states) + + if self.train_kv: + key = self.to_k_custom_diffusion(encoder_hidden_states.to(self.to_k_custom_diffusion.weight.dtype)) + value = self.to_v_custom_diffusion(encoder_hidden_states.to(self.to_v_custom_diffusion.weight.dtype)) + key = key.to(attn.to_q.weight.dtype) + value = value.to(attn.to_q.weight.dtype) + else: + key = attn.to_k(encoder_hidden_states) + value = attn.to_v(encoder_hidden_states) + + if crossattn: + detach = torch.ones_like(key) + detach[:, :1, :] = detach[:, :1, :] * 0.0 + key = detach * key + (1 - detach) * key.detach() + value = detach * value + (1 - detach) * value.detach() + + query = attn.head_to_batch_dim(query).contiguous() + key = attn.head_to_batch_dim(key).contiguous() + value = attn.head_to_batch_dim(value).contiguous() + + hidden_states = xformers.ops.memory_efficient_attention( + query, key, value, attn_bias=attention_mask, op=self.attention_op, scale=attn.scale + ) + hidden_states = hidden_states.to(query.dtype) + hidden_states = attn.batch_to_head_dim(hidden_states) + + if self.train_q_out: + # linear proj + hidden_states = self.to_out_custom_diffusion[0](hidden_states) + # dropout + hidden_states = self.to_out_custom_diffusion[1](hidden_states) + else: + # linear proj + hidden_states = attn.to_out[0](hidden_states) + # dropout + hidden_states = attn.to_out[1](hidden_states) + + return hidden_states + + +class CustomDiffusionAttnProcessor2_0(nn.Module): + r""" + Processor for implementing attention for the Custom Diffusion method using PyTorch 2.0’s memory-efficient scaled + dot-product attention. + + Args: + train_kv (`bool`, defaults to `True`): + Whether to newly train the key and value matrices corresponding to the text features. + train_q_out (`bool`, defaults to `True`): + Whether to newly train query matrices corresponding to the latent image features. + hidden_size (`int`, *optional*, defaults to `None`): + The hidden size of the attention layer. + cross_attention_dim (`int`, *optional*, defaults to `None`): + The number of channels in the `encoder_hidden_states`. + out_bias (`bool`, defaults to `True`): + Whether to include the bias parameter in `train_q_out`. + dropout (`float`, *optional*, defaults to 0.0): + The dropout probability to use. + """ + + def __init__( + self, + train_kv: bool = True, + train_q_out: bool = True, + hidden_size: Optional[int] = None, + cross_attention_dim: Optional[int] = None, + out_bias: bool = True, + dropout: float = 0.0, + ): + super().__init__() + self.train_kv = train_kv + self.train_q_out = train_q_out + + self.hidden_size = hidden_size + self.cross_attention_dim = cross_attention_dim + + # `_custom_diffusion` id for easy serialization and loading. + if self.train_kv: + self.to_k_custom_diffusion = nn.Linear(cross_attention_dim or hidden_size, hidden_size, bias=False) + self.to_v_custom_diffusion = nn.Linear(cross_attention_dim or hidden_size, hidden_size, bias=False) + if self.train_q_out: + self.to_q_custom_diffusion = nn.Linear(hidden_size, hidden_size, bias=False) + self.to_out_custom_diffusion = nn.ModuleList([]) + self.to_out_custom_diffusion.append(nn.Linear(hidden_size, hidden_size, bias=out_bias)) + self.to_out_custom_diffusion.append(nn.Dropout(dropout)) + + def __call__( + self, + attn: Attention, + hidden_states: torch.Tensor, + encoder_hidden_states: Optional[torch.Tensor] = None, + attention_mask: Optional[torch.Tensor] = None, + ) -> torch.Tensor: + batch_size, sequence_length, _ = hidden_states.shape + attention_mask = attn.prepare_attention_mask(attention_mask, sequence_length, batch_size) + if self.train_q_out: + query = self.to_q_custom_diffusion(hidden_states) + else: + query = attn.to_q(hidden_states) + + if encoder_hidden_states is None: + crossattn = False + encoder_hidden_states = hidden_states + else: + crossattn = True + if attn.norm_cross: + encoder_hidden_states = attn.norm_encoder_hidden_states(encoder_hidden_states) + + if self.train_kv: + key = self.to_k_custom_diffusion(encoder_hidden_states.to(self.to_k_custom_diffusion.weight.dtype)) + value = self.to_v_custom_diffusion(encoder_hidden_states.to(self.to_v_custom_diffusion.weight.dtype)) + key = key.to(attn.to_q.weight.dtype) + value = value.to(attn.to_q.weight.dtype) + + else: + key = attn.to_k(encoder_hidden_states) + value = attn.to_v(encoder_hidden_states) + + if crossattn: + detach = torch.ones_like(key) + detach[:, :1, :] = detach[:, :1, :] * 0.0 + key = detach * key + (1 - detach) * key.detach() + value = detach * value + (1 - detach) * value.detach() + + inner_dim = hidden_states.shape[-1] + + head_dim = inner_dim // attn.heads + query = query.view(batch_size, -1, attn.heads, head_dim).transpose(1, 2) + key = key.view(batch_size, -1, attn.heads, head_dim).transpose(1, 2) + value = value.view(batch_size, -1, attn.heads, head_dim).transpose(1, 2) + + # the output of sdp = (batch, num_heads, seq_len, head_dim) + # TODO: add support for attn.scale when we move to Torch 2.1 + hidden_states = F.scaled_dot_product_attention( + query, key, value, attn_mask=attention_mask, dropout_p=0.0, is_causal=False + ) + + hidden_states = hidden_states.transpose(1, 2).reshape(batch_size, -1, attn.heads * head_dim) + hidden_states = hidden_states.to(query.dtype) + + if self.train_q_out: + # linear proj + hidden_states = self.to_out_custom_diffusion[0](hidden_states) + # dropout + hidden_states = self.to_out_custom_diffusion[1](hidden_states) + else: + # linear proj + hidden_states = attn.to_out[0](hidden_states) + # dropout + hidden_states = attn.to_out[1](hidden_states) + + return hidden_states + + +class SlicedAttnProcessor: + r""" + Processor for implementing sliced attention. + + Args: + slice_size (`int`, *optional*): + The number of steps to compute attention. Uses as many slices as `attention_head_dim // slice_size`, and + `attention_head_dim` must be a multiple of the `slice_size`. + """ + + def __init__(self, slice_size: int): + self.slice_size = slice_size + + def __call__( + self, + attn: Attention, + hidden_states: torch.Tensor, + encoder_hidden_states: Optional[torch.Tensor] = None, + attention_mask: Optional[torch.Tensor] = None, + ) -> torch.Tensor: + residual = hidden_states + + input_ndim = hidden_states.ndim + + if input_ndim == 4: + batch_size, channel, height, width = hidden_states.shape + hidden_states = hidden_states.view(batch_size, channel, height * width).transpose(1, 2) + + batch_size, sequence_length, _ = ( + hidden_states.shape if encoder_hidden_states is None else encoder_hidden_states.shape + ) + attention_mask = attn.prepare_attention_mask(attention_mask, sequence_length, batch_size) + + if attn.group_norm is not None: + hidden_states = attn.group_norm(hidden_states.transpose(1, 2)).transpose(1, 2) + + query = attn.to_q(hidden_states) + dim = query.shape[-1] + query = attn.head_to_batch_dim(query) + + if encoder_hidden_states is None: + encoder_hidden_states = hidden_states + elif attn.norm_cross: + encoder_hidden_states = attn.norm_encoder_hidden_states(encoder_hidden_states) + + key = attn.to_k(encoder_hidden_states) + value = attn.to_v(encoder_hidden_states) + key = attn.head_to_batch_dim(key) + value = attn.head_to_batch_dim(value) + + batch_size_attention, query_tokens, _ = query.shape + hidden_states = torch.zeros( + (batch_size_attention, query_tokens, dim // attn.heads), device=query.device, dtype=query.dtype + ) + + for i in range((batch_size_attention - 1) // self.slice_size + 1): + start_idx = i * self.slice_size + end_idx = (i + 1) * self.slice_size + + query_slice = query[start_idx:end_idx] + key_slice = key[start_idx:end_idx] + attn_mask_slice = attention_mask[start_idx:end_idx] if attention_mask is not None else None + + attn_slice = attn.get_attention_scores(query_slice, key_slice, attn_mask_slice) + + attn_slice = torch.bmm(attn_slice, value[start_idx:end_idx]) + + hidden_states[start_idx:end_idx] = attn_slice + + hidden_states = attn.batch_to_head_dim(hidden_states) + + # linear proj + hidden_states = attn.to_out[0](hidden_states) + # dropout + hidden_states = attn.to_out[1](hidden_states) + + if input_ndim == 4: + hidden_states = hidden_states.transpose(-1, -2).reshape(batch_size, channel, height, width) + + if attn.residual_connection: + hidden_states = hidden_states + residual + + hidden_states = hidden_states / attn.rescale_output_factor + + return hidden_states + + +class SlicedAttnAddedKVProcessor: + r""" + Processor for implementing sliced attention with extra learnable key and value matrices for the text encoder. + + Args: + slice_size (`int`, *optional*): + The number of steps to compute attention. Uses as many slices as `attention_head_dim // slice_size`, and + `attention_head_dim` must be a multiple of the `slice_size`. + """ + + def __init__(self, slice_size): + self.slice_size = slice_size + + def __call__( + self, + attn: "Attention", + hidden_states: torch.Tensor, + encoder_hidden_states: Optional[torch.Tensor] = None, + attention_mask: Optional[torch.Tensor] = None, + temb: Optional[torch.Tensor] = None, + ) -> torch.Tensor: + residual = hidden_states + + if attn.spatial_norm is not None: + hidden_states = attn.spatial_norm(hidden_states, temb) + + hidden_states = hidden_states.view(hidden_states.shape[0], hidden_states.shape[1], -1).transpose(1, 2) + + batch_size, sequence_length, _ = hidden_states.shape + + attention_mask = attn.prepare_attention_mask(attention_mask, sequence_length, batch_size) + + if encoder_hidden_states is None: + encoder_hidden_states = hidden_states + elif attn.norm_cross: + encoder_hidden_states = attn.norm_encoder_hidden_states(encoder_hidden_states) + + hidden_states = attn.group_norm(hidden_states.transpose(1, 2)).transpose(1, 2) + + query = attn.to_q(hidden_states) + dim = query.shape[-1] + query = attn.head_to_batch_dim(query) + + encoder_hidden_states_key_proj = attn.add_k_proj(encoder_hidden_states) + encoder_hidden_states_value_proj = attn.add_v_proj(encoder_hidden_states) + + encoder_hidden_states_key_proj = attn.head_to_batch_dim(encoder_hidden_states_key_proj) + encoder_hidden_states_value_proj = attn.head_to_batch_dim(encoder_hidden_states_value_proj) + + if not attn.only_cross_attention: + key = attn.to_k(hidden_states) + value = attn.to_v(hidden_states) + key = attn.head_to_batch_dim(key) + value = attn.head_to_batch_dim(value) + key = torch.cat([encoder_hidden_states_key_proj, key], dim=1) + value = torch.cat([encoder_hidden_states_value_proj, value], dim=1) + else: + key = encoder_hidden_states_key_proj + value = encoder_hidden_states_value_proj + + batch_size_attention, query_tokens, _ = query.shape + hidden_states = torch.zeros( + (batch_size_attention, query_tokens, dim // attn.heads), device=query.device, dtype=query.dtype + ) + + for i in range((batch_size_attention - 1) // self.slice_size + 1): + start_idx = i * self.slice_size + end_idx = (i + 1) * self.slice_size + + query_slice = query[start_idx:end_idx] + key_slice = key[start_idx:end_idx] + attn_mask_slice = attention_mask[start_idx:end_idx] if attention_mask is not None else None + + attn_slice = attn.get_attention_scores(query_slice, key_slice, attn_mask_slice) + + attn_slice = torch.bmm(attn_slice, value[start_idx:end_idx]) + + hidden_states[start_idx:end_idx] = attn_slice + + hidden_states = attn.batch_to_head_dim(hidden_states) + + # linear proj + hidden_states = attn.to_out[0](hidden_states) + # dropout + hidden_states = attn.to_out[1](hidden_states) + + hidden_states = hidden_states.transpose(-1, -2).reshape(residual.shape) + hidden_states = hidden_states + residual + + return hidden_states + + +class SpatialNorm(nn.Module): + """ + Spatially conditioned normalization as defined in https://arxiv.org/abs/2209.09002. + + Args: + f_channels (`int`): + The number of channels for input to group normalization layer, and output of the spatial norm layer. + zq_channels (`int`): + The number of channels for the quantized vector as described in the paper. + """ + + def __init__( + self, + f_channels: int, + zq_channels: int, + ): + super().__init__() + self.norm_layer = nn.GroupNorm(num_channels=f_channels, num_groups=32, eps=1e-6, affine=True) + self.conv_y = nn.Conv2d(zq_channels, f_channels, kernel_size=1, stride=1, padding=0) + self.conv_b = nn.Conv2d(zq_channels, f_channels, kernel_size=1, stride=1, padding=0) + + def forward(self, f: torch.Tensor, zq: torch.Tensor) -> torch.Tensor: + f_size = f.shape[-2:] + zq = F.interpolate(zq, size=f_size, mode="nearest") + norm_f = self.norm_layer(f) + new_f = norm_f * self.conv_y(zq) + self.conv_b(zq) + return new_f + + +class IPAdapterAttnProcessor(nn.Module): + r""" + Attention processor for Multiple IP-Adapters. + + Args: + hidden_size (`int`): + The hidden size of the attention layer. + cross_attention_dim (`int`): + The number of channels in the `encoder_hidden_states`. + num_tokens (`int`, `Tuple[int]` or `List[int]`, defaults to `(4,)`): + The context length of the image features. + scale (`float` or List[`float`], defaults to 1.0): + the weight scale of image prompt. + """ + + def __init__(self, hidden_size, cross_attention_dim=None, num_tokens=(4,), scale=1.0): + super().__init__() + + self.hidden_size = hidden_size + self.cross_attention_dim = cross_attention_dim + + if not isinstance(num_tokens, (tuple, list)): + num_tokens = [num_tokens] + self.num_tokens = num_tokens + + if not isinstance(scale, list): + scale = [scale] * len(num_tokens) + if len(scale) != len(num_tokens): + raise ValueError("`scale` should be a list of integers with the same length as `num_tokens`.") + self.scale = scale + + self.to_k_ip = nn.ModuleList( + [nn.Linear(cross_attention_dim, hidden_size, bias=False) for _ in range(len(num_tokens))] + ) + self.to_v_ip = nn.ModuleList( + [nn.Linear(cross_attention_dim, hidden_size, bias=False) for _ in range(len(num_tokens))] + ) + + def __call__( + self, + attn: Attention, + hidden_states: torch.Tensor, + encoder_hidden_states: Optional[torch.Tensor] = None, + attention_mask: Optional[torch.Tensor] = None, + temb: Optional[torch.Tensor] = None, + scale: float = 1.0, + ip_adapter_masks: Optional[torch.Tensor] = None, + ): + residual = hidden_states + + # separate ip_hidden_states from encoder_hidden_states + if encoder_hidden_states is not None: + if isinstance(encoder_hidden_states, tuple): + encoder_hidden_states, ip_hidden_states = encoder_hidden_states + else: + deprecation_message = ( + "You have passed a tensor as `encoder_hidden_states`. This is deprecated and will be removed in a future release." + " Please make sure to update your script to pass `encoder_hidden_states` as a tuple to suppress this warning." + ) + deprecate("encoder_hidden_states not a tuple", "1.0.0", deprecation_message, standard_warn=False) + end_pos = encoder_hidden_states.shape[1] - self.num_tokens[0] + encoder_hidden_states, ip_hidden_states = ( + encoder_hidden_states[:, :end_pos, :], + [encoder_hidden_states[:, end_pos:, :]], + ) + + if attn.spatial_norm is not None: + hidden_states = attn.spatial_norm(hidden_states, temb) + + input_ndim = hidden_states.ndim + + if input_ndim == 4: + batch_size, channel, height, width = hidden_states.shape + hidden_states = hidden_states.view(batch_size, channel, height * width).transpose(1, 2) + + batch_size, sequence_length, _ = ( + hidden_states.shape if encoder_hidden_states is None else encoder_hidden_states.shape + ) + attention_mask = attn.prepare_attention_mask(attention_mask, sequence_length, batch_size) + + if attn.group_norm is not None: + hidden_states = attn.group_norm(hidden_states.transpose(1, 2)).transpose(1, 2) + + query = attn.to_q(hidden_states) + + if encoder_hidden_states is None: + encoder_hidden_states = hidden_states + elif attn.norm_cross: + encoder_hidden_states = attn.norm_encoder_hidden_states(encoder_hidden_states) + + key = attn.to_k(encoder_hidden_states) + value = attn.to_v(encoder_hidden_states) + + query = attn.head_to_batch_dim(query) + key = attn.head_to_batch_dim(key) + value = attn.head_to_batch_dim(value) + + attention_probs = attn.get_attention_scores(query, key, attention_mask) + hidden_states = torch.bmm(attention_probs, value) + hidden_states = attn.batch_to_head_dim(hidden_states) + + if ip_adapter_masks is not None: + if not isinstance(ip_adapter_masks, List): + # for backward compatibility, we accept `ip_adapter_mask` as a tensor of shape [num_ip_adapter, 1, height, width] + ip_adapter_masks = list(ip_adapter_masks.unsqueeze(1)) + if not (len(ip_adapter_masks) == len(self.scale) == len(ip_hidden_states)): + raise ValueError( + f"Length of ip_adapter_masks array ({len(ip_adapter_masks)}) must match " + f"length of self.scale array ({len(self.scale)}) and number of ip_hidden_states " + f"({len(ip_hidden_states)})" + ) + else: + for index, (mask, scale, ip_state) in enumerate(zip(ip_adapter_masks, self.scale, ip_hidden_states)): + if not isinstance(mask, torch.Tensor) or mask.ndim != 4: + raise ValueError( + "Each element of the ip_adapter_masks array should be a tensor with shape " + "[1, num_images_for_ip_adapter, height, width]." + " Please use `IPAdapterMaskProcessor` to preprocess your mask" + ) + if mask.shape[1] != ip_state.shape[1]: + raise ValueError( + f"Number of masks ({mask.shape[1]}) does not match " + f"number of ip images ({ip_state.shape[1]}) at index {index}" + ) + if isinstance(scale, list) and not len(scale) == mask.shape[1]: + raise ValueError( + f"Number of masks ({mask.shape[1]}) does not match " + f"number of scales ({len(scale)}) at index {index}" + ) + else: + ip_adapter_masks = [None] * len(self.scale) + + # for ip-adapter + for current_ip_hidden_states, scale, to_k_ip, to_v_ip, mask in zip( + ip_hidden_states, self.scale, self.to_k_ip, self.to_v_ip, ip_adapter_masks + ): + skip = False + if isinstance(scale, list): + if all(s == 0 for s in scale): + skip = True + elif scale == 0: + skip = True + if not skip: + if mask is not None: + if not isinstance(scale, list): + scale = [scale] * mask.shape[1] + + current_num_images = mask.shape[1] + for i in range(current_num_images): + ip_key = to_k_ip(current_ip_hidden_states[:, i, :, :]) + ip_value = to_v_ip(current_ip_hidden_states[:, i, :, :]) + + ip_key = attn.head_to_batch_dim(ip_key) + ip_value = attn.head_to_batch_dim(ip_value) + + ip_attention_probs = attn.get_attention_scores(query, ip_key, None) + _current_ip_hidden_states = torch.bmm(ip_attention_probs, ip_value) + _current_ip_hidden_states = attn.batch_to_head_dim(_current_ip_hidden_states) + + mask_downsample = IPAdapterMaskProcessor.downsample( + mask[:, i, :, :], + batch_size, + _current_ip_hidden_states.shape[1], + _current_ip_hidden_states.shape[2], + ) + + mask_downsample = mask_downsample.to(dtype=query.dtype, device=query.device) + + hidden_states = hidden_states + scale[i] * (_current_ip_hidden_states * mask_downsample) + else: + ip_key = to_k_ip(current_ip_hidden_states) + ip_value = to_v_ip(current_ip_hidden_states) + + ip_key = attn.head_to_batch_dim(ip_key) + ip_value = attn.head_to_batch_dim(ip_value) + + ip_attention_probs = attn.get_attention_scores(query, ip_key, None) + current_ip_hidden_states = torch.bmm(ip_attention_probs, ip_value) + current_ip_hidden_states = attn.batch_to_head_dim(current_ip_hidden_states) + + hidden_states = hidden_states + scale * current_ip_hidden_states + + # linear proj + hidden_states = attn.to_out[0](hidden_states) + # dropout + hidden_states = attn.to_out[1](hidden_states) + + if input_ndim == 4: + hidden_states = hidden_states.transpose(-1, -2).reshape(batch_size, channel, height, width) + + if attn.residual_connection: + hidden_states = hidden_states + residual + + hidden_states = hidden_states / attn.rescale_output_factor + + return hidden_states + + +class IPAdapterAttnProcessor2_0(torch.nn.Module): + r""" + Attention processor for IP-Adapter for PyTorch 2.0. + + Args: + hidden_size (`int`): + The hidden size of the attention layer. + cross_attention_dim (`int`): + The number of channels in the `encoder_hidden_states`. + num_tokens (`int`, `Tuple[int]` or `List[int]`, defaults to `(4,)`): + The context length of the image features. + scale (`float` or `List[float]`, defaults to 1.0): + the weight scale of image prompt. + """ + + def __init__(self, hidden_size, cross_attention_dim=None, num_tokens=(4,), scale=1.0): + super().__init__() + + if not hasattr(F, "scaled_dot_product_attention"): + raise ImportError( + f"{self.__class__.__name__} requires PyTorch 2.0, to use it, please upgrade PyTorch to 2.0." + ) + + self.hidden_size = hidden_size + self.cross_attention_dim = cross_attention_dim + + if not isinstance(num_tokens, (tuple, list)): + num_tokens = [num_tokens] + self.num_tokens = num_tokens + + if not isinstance(scale, list): + scale = [scale] * len(num_tokens) + if len(scale) != len(num_tokens): + raise ValueError("`scale` should be a list of integers with the same length as `num_tokens`.") + self.scale = scale + + self.to_k_ip = nn.ModuleList( + [nn.Linear(cross_attention_dim, hidden_size, bias=False) for _ in range(len(num_tokens))] + ) + self.to_v_ip = nn.ModuleList( + [nn.Linear(cross_attention_dim, hidden_size, bias=False) for _ in range(len(num_tokens))] + ) + + def __call__( + self, + attn: Attention, + hidden_states: torch.Tensor, + encoder_hidden_states: Optional[torch.Tensor] = None, + attention_mask: Optional[torch.Tensor] = None, + temb: Optional[torch.Tensor] = None, + scale: float = 1.0, + ip_adapter_masks: Optional[torch.Tensor] = None, + ): + residual = hidden_states + + # separate ip_hidden_states from encoder_hidden_states + if encoder_hidden_states is not None: + if isinstance(encoder_hidden_states, tuple): + encoder_hidden_states, ip_hidden_states = encoder_hidden_states + else: + deprecation_message = ( + "You have passed a tensor as `encoder_hidden_states`. This is deprecated and will be removed in a future release." + " Please make sure to update your script to pass `encoder_hidden_states` as a tuple to suppress this warning." + ) + deprecate("encoder_hidden_states not a tuple", "1.0.0", deprecation_message, standard_warn=False) + end_pos = encoder_hidden_states.shape[1] - self.num_tokens[0] + encoder_hidden_states, ip_hidden_states = ( + encoder_hidden_states[:, :end_pos, :], + [encoder_hidden_states[:, end_pos:, :]], + ) + + if attn.spatial_norm is not None: + hidden_states = attn.spatial_norm(hidden_states, temb) + + input_ndim = hidden_states.ndim + + if input_ndim == 4: + batch_size, channel, height, width = hidden_states.shape + hidden_states = hidden_states.view(batch_size, channel, height * width).transpose(1, 2) + + batch_size, sequence_length, _ = ( + hidden_states.shape if encoder_hidden_states is None else encoder_hidden_states.shape + ) + + if attention_mask is not None: + attention_mask = attn.prepare_attention_mask(attention_mask, sequence_length, batch_size) + # scaled_dot_product_attention expects attention_mask shape to be + # (batch, heads, source_length, target_length) + attention_mask = attention_mask.view(batch_size, attn.heads, -1, attention_mask.shape[-1]) + + if attn.group_norm is not None: + hidden_states = attn.group_norm(hidden_states.transpose(1, 2)).transpose(1, 2) + + query = attn.to_q(hidden_states) + + if encoder_hidden_states is None: + encoder_hidden_states = hidden_states + elif attn.norm_cross: + encoder_hidden_states = attn.norm_encoder_hidden_states(encoder_hidden_states) + + key = attn.to_k(encoder_hidden_states) + value = attn.to_v(encoder_hidden_states) + + inner_dim = key.shape[-1] + head_dim = inner_dim // attn.heads + + query = query.view(batch_size, -1, attn.heads, head_dim).transpose(1, 2) + + key = key.view(batch_size, -1, attn.heads, head_dim).transpose(1, 2) + value = value.view(batch_size, -1, attn.heads, head_dim).transpose(1, 2) + + # the output of sdp = (batch, num_heads, seq_len, head_dim) + # TODO: add support for attn.scale when we move to Torch 2.1 + hidden_states = F.scaled_dot_product_attention( + query, key, value, attn_mask=attention_mask, dropout_p=0.0, is_causal=False + ) + + hidden_states = hidden_states.transpose(1, 2).reshape(batch_size, -1, attn.heads * head_dim) + hidden_states = hidden_states.to(query.dtype) + + if ip_adapter_masks is not None: + if not isinstance(ip_adapter_masks, List): + # for backward compatibility, we accept `ip_adapter_mask` as a tensor of shape [num_ip_adapter, 1, height, width] + ip_adapter_masks = list(ip_adapter_masks.unsqueeze(1)) + if not (len(ip_adapter_masks) == len(self.scale) == len(ip_hidden_states)): + raise ValueError( + f"Length of ip_adapter_masks array ({len(ip_adapter_masks)}) must match " + f"length of self.scale array ({len(self.scale)}) and number of ip_hidden_states " + f"({len(ip_hidden_states)})" + ) + else: + for index, (mask, scale, ip_state) in enumerate(zip(ip_adapter_masks, self.scale, ip_hidden_states)): + if not isinstance(mask, torch.Tensor) or mask.ndim != 4: + raise ValueError( + "Each element of the ip_adapter_masks array should be a tensor with shape " + "[1, num_images_for_ip_adapter, height, width]." + " Please use `IPAdapterMaskProcessor` to preprocess your mask" + ) + if mask.shape[1] != ip_state.shape[1]: + raise ValueError( + f"Number of masks ({mask.shape[1]}) does not match " + f"number of ip images ({ip_state.shape[1]}) at index {index}" + ) + if isinstance(scale, list) and not len(scale) == mask.shape[1]: + raise ValueError( + f"Number of masks ({mask.shape[1]}) does not match " + f"number of scales ({len(scale)}) at index {index}" + ) + else: + ip_adapter_masks = [None] * len(self.scale) + + # for ip-adapter + for current_ip_hidden_states, scale, to_k_ip, to_v_ip, mask in zip( + ip_hidden_states, self.scale, self.to_k_ip, self.to_v_ip, ip_adapter_masks + ): + skip = False + if isinstance(scale, list): + if all(s == 0 for s in scale): + skip = True + elif scale == 0: + skip = True + if not skip: + if mask is not None: + if not isinstance(scale, list): + scale = [scale] * mask.shape[1] + + current_num_images = mask.shape[1] + for i in range(current_num_images): + ip_key = to_k_ip(current_ip_hidden_states[:, i, :, :]) + ip_value = to_v_ip(current_ip_hidden_states[:, i, :, :]) + + ip_key = ip_key.view(batch_size, -1, attn.heads, head_dim).transpose(1, 2) + ip_value = ip_value.view(batch_size, -1, attn.heads, head_dim).transpose(1, 2) + + # the output of sdp = (batch, num_heads, seq_len, head_dim) + # TODO: add support for attn.scale when we move to Torch 2.1 + _current_ip_hidden_states = F.scaled_dot_product_attention( + query, ip_key, ip_value, attn_mask=None, dropout_p=0.0, is_causal=False + ) + + _current_ip_hidden_states = _current_ip_hidden_states.transpose(1, 2).reshape( + batch_size, -1, attn.heads * head_dim + ) + _current_ip_hidden_states = _current_ip_hidden_states.to(query.dtype) + + mask_downsample = IPAdapterMaskProcessor.downsample( + mask[:, i, :, :], + batch_size, + _current_ip_hidden_states.shape[1], + _current_ip_hidden_states.shape[2], + ) + + mask_downsample = mask_downsample.to(dtype=query.dtype, device=query.device) + hidden_states = hidden_states + scale[i] * (_current_ip_hidden_states * mask_downsample) + else: + ip_key = to_k_ip(current_ip_hidden_states) + ip_value = to_v_ip(current_ip_hidden_states) + + ip_key = ip_key.view(batch_size, -1, attn.heads, head_dim).transpose(1, 2) + ip_value = ip_value.view(batch_size, -1, attn.heads, head_dim).transpose(1, 2) + + # the output of sdp = (batch, num_heads, seq_len, head_dim) + # TODO: add support for attn.scale when we move to Torch 2.1 + current_ip_hidden_states = F.scaled_dot_product_attention( + query, ip_key, ip_value, attn_mask=None, dropout_p=0.0, is_causal=False + ) + + current_ip_hidden_states = current_ip_hidden_states.transpose(1, 2).reshape( + batch_size, -1, attn.heads * head_dim + ) + current_ip_hidden_states = current_ip_hidden_states.to(query.dtype) + + hidden_states = hidden_states + scale * current_ip_hidden_states + + # linear proj + hidden_states = attn.to_out[0](hidden_states) + # dropout + hidden_states = attn.to_out[1](hidden_states) + + if input_ndim == 4: + hidden_states = hidden_states.transpose(-1, -2).reshape(batch_size, channel, height, width) + + if attn.residual_connection: + hidden_states = hidden_states + residual + + hidden_states = hidden_states / attn.rescale_output_factor + + return hidden_states + + +class IPAdapterXFormersAttnProcessor(torch.nn.Module): + r""" + Attention processor for IP-Adapter using xFormers. + + Args: + hidden_size (`int`): + The hidden size of the attention layer. + cross_attention_dim (`int`): + The number of channels in the `encoder_hidden_states`. + num_tokens (`int`, `Tuple[int]` or `List[int]`, defaults to `(4,)`): + The context length of the image features. + scale (`float` or `List[float]`, defaults to 1.0): + the weight scale of image prompt. + attention_op (`Callable`, *optional*, defaults to `None`): + The base + [operator](https://facebookresearch.github.io/xformers/components/ops.html#xformers.ops.AttentionOpBase) to + use as the attention operator. It is recommended to set to `None`, and allow xFormers to choose the best + operator. + """ + + def __init__( + self, + hidden_size, + cross_attention_dim=None, + num_tokens=(4,), + scale=1.0, + attention_op: Optional[Callable] = None, + ): + super().__init__() + + self.hidden_size = hidden_size + self.cross_attention_dim = cross_attention_dim + self.attention_op = attention_op + + if not isinstance(num_tokens, (tuple, list)): + num_tokens = [num_tokens] + self.num_tokens = num_tokens + + if not isinstance(scale, list): + scale = [scale] * len(num_tokens) + if len(scale) != len(num_tokens): + raise ValueError("`scale` should be a list of integers with the same length as `num_tokens`.") + self.scale = scale + + self.to_k_ip = nn.ModuleList( + [nn.Linear(cross_attention_dim or hidden_size, hidden_size, bias=False) for _ in range(len(num_tokens))] + ) + self.to_v_ip = nn.ModuleList( + [nn.Linear(cross_attention_dim or hidden_size, hidden_size, bias=False) for _ in range(len(num_tokens))] + ) + + def __call__( + self, + attn: Attention, + hidden_states: torch.FloatTensor, + encoder_hidden_states: Optional[torch.FloatTensor] = None, + attention_mask: Optional[torch.FloatTensor] = None, + temb: Optional[torch.FloatTensor] = None, + scale: float = 1.0, + ip_adapter_masks: Optional[torch.FloatTensor] = None, + ): + residual = hidden_states + + # separate ip_hidden_states from encoder_hidden_states + if encoder_hidden_states is not None: + if isinstance(encoder_hidden_states, tuple): + encoder_hidden_states, ip_hidden_states = encoder_hidden_states + else: + deprecation_message = ( + "You have passed a tensor as `encoder_hidden_states`. This is deprecated and will be removed in a future release." + " Please make sure to update your script to pass `encoder_hidden_states` as a tuple to suppress this warning." + ) + deprecate("encoder_hidden_states not a tuple", "1.0.0", deprecation_message, standard_warn=False) + end_pos = encoder_hidden_states.shape[1] - self.num_tokens[0] + encoder_hidden_states, ip_hidden_states = ( + encoder_hidden_states[:, :end_pos, :], + [encoder_hidden_states[:, end_pos:, :]], + ) + + if attn.spatial_norm is not None: + hidden_states = attn.spatial_norm(hidden_states, temb) + + input_ndim = hidden_states.ndim + + if input_ndim == 4: + batch_size, channel, height, width = hidden_states.shape + hidden_states = hidden_states.view(batch_size, channel, height * width).transpose(1, 2) + + batch_size, sequence_length, _ = ( + hidden_states.shape if encoder_hidden_states is None else encoder_hidden_states.shape + ) + + if attention_mask is not None: + attention_mask = attn.prepare_attention_mask(attention_mask, sequence_length, batch_size) + # expand our mask's singleton query_tokens dimension: + # [batch*heads, 1, key_tokens] -> + # [batch*heads, query_tokens, key_tokens] + # so that it can be added as a bias onto the attention scores that xformers computes: + # [batch*heads, query_tokens, key_tokens] + # we do this explicitly because xformers doesn't broadcast the singleton dimension for us. + _, query_tokens, _ = hidden_states.shape + attention_mask = attention_mask.expand(-1, query_tokens, -1) + + if attn.group_norm is not None: + hidden_states = attn.group_norm(hidden_states.transpose(1, 2)).transpose(1, 2) + + query = attn.to_q(hidden_states) + + if encoder_hidden_states is None: + encoder_hidden_states = hidden_states + elif attn.norm_cross: + encoder_hidden_states = attn.norm_encoder_hidden_states(encoder_hidden_states) + + key = attn.to_k(encoder_hidden_states) + value = attn.to_v(encoder_hidden_states) + + query = attn.head_to_batch_dim(query).contiguous() + key = attn.head_to_batch_dim(key).contiguous() + value = attn.head_to_batch_dim(value).contiguous() + + hidden_states = xformers.ops.memory_efficient_attention( + query, key, value, attn_bias=attention_mask, op=self.attention_op + ) + hidden_states = hidden_states.to(query.dtype) + hidden_states = attn.batch_to_head_dim(hidden_states) + + if ip_hidden_states: + if ip_adapter_masks is not None: + if not isinstance(ip_adapter_masks, List): + # for backward compatibility, we accept `ip_adapter_mask` as a tensor of shape [num_ip_adapter, 1, height, width] + ip_adapter_masks = list(ip_adapter_masks.unsqueeze(1)) + if not (len(ip_adapter_masks) == len(self.scale) == len(ip_hidden_states)): + raise ValueError( + f"Length of ip_adapter_masks array ({len(ip_adapter_masks)}) must match " + f"length of self.scale array ({len(self.scale)}) and number of ip_hidden_states " + f"({len(ip_hidden_states)})" + ) + else: + for index, (mask, scale, ip_state) in enumerate( + zip(ip_adapter_masks, self.scale, ip_hidden_states) + ): + if mask is None: + continue + if not isinstance(mask, torch.Tensor) or mask.ndim != 4: + raise ValueError( + "Each element of the ip_adapter_masks array should be a tensor with shape " + "[1, num_images_for_ip_adapter, height, width]." + " Please use `IPAdapterMaskProcessor` to preprocess your mask" + ) + if mask.shape[1] != ip_state.shape[1]: + raise ValueError( + f"Number of masks ({mask.shape[1]}) does not match " + f"number of ip images ({ip_state.shape[1]}) at index {index}" + ) + if isinstance(scale, list) and not len(scale) == mask.shape[1]: + raise ValueError( + f"Number of masks ({mask.shape[1]}) does not match " + f"number of scales ({len(scale)}) at index {index}" + ) + else: + ip_adapter_masks = [None] * len(self.scale) + + # for ip-adapter + for current_ip_hidden_states, scale, to_k_ip, to_v_ip, mask in zip( + ip_hidden_states, self.scale, self.to_k_ip, self.to_v_ip, ip_adapter_masks + ): + skip = False + if isinstance(scale, list): + if all(s == 0 for s in scale): + skip = True + elif scale == 0: + skip = True + if not skip: + if mask is not None: + mask = mask.to(torch.float16) + if not isinstance(scale, list): + scale = [scale] * mask.shape[1] + + current_num_images = mask.shape[1] + for i in range(current_num_images): + ip_key = to_k_ip(current_ip_hidden_states[:, i, :, :]) + ip_value = to_v_ip(current_ip_hidden_states[:, i, :, :]) + + ip_key = attn.head_to_batch_dim(ip_key).contiguous() + ip_value = attn.head_to_batch_dim(ip_value).contiguous() + + _current_ip_hidden_states = xformers.ops.memory_efficient_attention( + query, ip_key, ip_value, op=self.attention_op + ) + _current_ip_hidden_states = _current_ip_hidden_states.to(query.dtype) + _current_ip_hidden_states = attn.batch_to_head_dim(_current_ip_hidden_states) + + mask_downsample = IPAdapterMaskProcessor.downsample( + mask[:, i, :, :], + batch_size, + _current_ip_hidden_states.shape[1], + _current_ip_hidden_states.shape[2], + ) + + mask_downsample = mask_downsample.to(dtype=query.dtype, device=query.device) + hidden_states = hidden_states + scale[i] * (_current_ip_hidden_states * mask_downsample) + else: + ip_key = to_k_ip(current_ip_hidden_states) + ip_value = to_v_ip(current_ip_hidden_states) + + ip_key = attn.head_to_batch_dim(ip_key).contiguous() + ip_value = attn.head_to_batch_dim(ip_value).contiguous() + + current_ip_hidden_states = xformers.ops.memory_efficient_attention( + query, ip_key, ip_value, op=self.attention_op + ) + current_ip_hidden_states = current_ip_hidden_states.to(query.dtype) + current_ip_hidden_states = attn.batch_to_head_dim(current_ip_hidden_states) + + hidden_states = hidden_states + scale * current_ip_hidden_states + + # linear proj + hidden_states = attn.to_out[0](hidden_states) + # dropout + hidden_states = attn.to_out[1](hidden_states) + + if input_ndim == 4: + hidden_states = hidden_states.transpose(-1, -2).reshape(batch_size, channel, height, width) + + if attn.residual_connection: + hidden_states = hidden_states + residual + + hidden_states = hidden_states / attn.rescale_output_factor + + return hidden_states + + +class SD3IPAdapterJointAttnProcessor2_0(torch.nn.Module): + """ + Attention processor for IP-Adapter used typically in processing the SD3-like self-attention projections, with + additional image-based information and timestep embeddings. + + Args: + hidden_size (`int`): + The number of hidden channels. + ip_hidden_states_dim (`int`): + The image feature dimension. + head_dim (`int`): + The number of head channels. + timesteps_emb_dim (`int`, defaults to 1280): + The number of input channels for timestep embedding. + scale (`float`, defaults to 0.5): + IP-Adapter scale. + """ + + def __init__( + self, + hidden_size: int, + ip_hidden_states_dim: int, + head_dim: int, + timesteps_emb_dim: int = 1280, + scale: float = 0.5, + ): + super().__init__() + + # To prevent circular import + from .normalization import AdaLayerNorm, RMSNorm + + self.norm_ip = AdaLayerNorm(timesteps_emb_dim, output_dim=ip_hidden_states_dim * 2, norm_eps=1e-6, chunk_dim=1) + self.to_k_ip = nn.Linear(ip_hidden_states_dim, hidden_size, bias=False) + self.to_v_ip = nn.Linear(ip_hidden_states_dim, hidden_size, bias=False) + self.norm_q = RMSNorm(head_dim, 1e-6) + self.norm_k = RMSNorm(head_dim, 1e-6) + self.norm_ip_k = RMSNorm(head_dim, 1e-6) + self.scale = scale + + def __call__( + self, + attn: Attention, + hidden_states: torch.FloatTensor, + encoder_hidden_states: torch.FloatTensor = None, + attention_mask: Optional[torch.FloatTensor] = None, + ip_hidden_states: torch.FloatTensor = None, + temb: torch.FloatTensor = None, + ) -> torch.FloatTensor: + """ + Perform the attention computation, integrating image features (if provided) and timestep embeddings. + + If `ip_hidden_states` is `None`, this is equivalent to using JointAttnProcessor2_0. + + Args: + attn (`Attention`): + Attention instance. + hidden_states (`torch.FloatTensor`): + Input `hidden_states`. + encoder_hidden_states (`torch.FloatTensor`, *optional*): + The encoder hidden states. + attention_mask (`torch.FloatTensor`, *optional*): + Attention mask. + ip_hidden_states (`torch.FloatTensor`, *optional*): + Image embeddings. + temb (`torch.FloatTensor`, *optional*): + Timestep embeddings. + + Returns: + `torch.FloatTensor`: Output hidden states. + """ + residual = hidden_states + + batch_size = hidden_states.shape[0] + + # `sample` projections. + query = attn.to_q(hidden_states) + key = attn.to_k(hidden_states) + value = attn.to_v(hidden_states) + + inner_dim = key.shape[-1] + head_dim = inner_dim // attn.heads + + query = query.view(batch_size, -1, attn.heads, head_dim).transpose(1, 2) + key = key.view(batch_size, -1, attn.heads, head_dim).transpose(1, 2) + value = value.view(batch_size, -1, attn.heads, head_dim).transpose(1, 2) + img_query = query + img_key = key + img_value = value + + if attn.norm_q is not None: + query = attn.norm_q(query) + if attn.norm_k is not None: + key = attn.norm_k(key) + + # `context` projections. + if encoder_hidden_states is not None: + encoder_hidden_states_query_proj = attn.add_q_proj(encoder_hidden_states) + encoder_hidden_states_key_proj = attn.add_k_proj(encoder_hidden_states) + encoder_hidden_states_value_proj = attn.add_v_proj(encoder_hidden_states) + + encoder_hidden_states_query_proj = encoder_hidden_states_query_proj.view( + batch_size, -1, attn.heads, head_dim + ).transpose(1, 2) + encoder_hidden_states_key_proj = encoder_hidden_states_key_proj.view( + batch_size, -1, attn.heads, head_dim + ).transpose(1, 2) + encoder_hidden_states_value_proj = encoder_hidden_states_value_proj.view( + batch_size, -1, attn.heads, head_dim + ).transpose(1, 2) + + if attn.norm_added_q is not None: + encoder_hidden_states_query_proj = attn.norm_added_q(encoder_hidden_states_query_proj) + if attn.norm_added_k is not None: + encoder_hidden_states_key_proj = attn.norm_added_k(encoder_hidden_states_key_proj) + + query = torch.cat([query, encoder_hidden_states_query_proj], dim=2) + key = torch.cat([key, encoder_hidden_states_key_proj], dim=2) + value = torch.cat([value, encoder_hidden_states_value_proj], dim=2) + + hidden_states = F.scaled_dot_product_attention(query, key, value, dropout_p=0.0, is_causal=False) + hidden_states = hidden_states.transpose(1, 2).reshape(batch_size, -1, attn.heads * head_dim) + hidden_states = hidden_states.to(query.dtype) + + if encoder_hidden_states is not None: + # Split the attention outputs. + hidden_states, encoder_hidden_states = ( + hidden_states[:, : residual.shape[1]], + hidden_states[:, residual.shape[1] :], + ) + if not attn.context_pre_only: + encoder_hidden_states = attn.to_add_out(encoder_hidden_states) + + # IP Adapter + if self.scale != 0 and ip_hidden_states is not None: + # Norm image features + norm_ip_hidden_states = self.norm_ip(ip_hidden_states, temb=temb) + + # To k and v + ip_key = self.to_k_ip(norm_ip_hidden_states) + ip_value = self.to_v_ip(norm_ip_hidden_states) + + # Reshape + ip_key = ip_key.view(batch_size, -1, attn.heads, head_dim).transpose(1, 2) + ip_value = ip_value.view(batch_size, -1, attn.heads, head_dim).transpose(1, 2) + + # Norm + query = self.norm_q(img_query) + img_key = self.norm_k(img_key) + ip_key = self.norm_ip_k(ip_key) + + # cat img + key = torch.cat([img_key, ip_key], dim=2) + value = torch.cat([img_value, ip_value], dim=2) + + ip_hidden_states = F.scaled_dot_product_attention(query, key, value, dropout_p=0.0, is_causal=False) + ip_hidden_states = ip_hidden_states.transpose(1, 2).view(batch_size, -1, attn.heads * head_dim) + ip_hidden_states = ip_hidden_states.to(query.dtype) + + hidden_states = hidden_states + ip_hidden_states * self.scale + + # linear proj + hidden_states = attn.to_out[0](hidden_states) + # dropout + hidden_states = attn.to_out[1](hidden_states) + + if encoder_hidden_states is not None: + return hidden_states, encoder_hidden_states + else: + return hidden_states + + +class PAGIdentitySelfAttnProcessor2_0: + r""" + Processor for implementing PAG using scaled dot-product attention (enabled by default if you're using PyTorch 2.0). + PAG reference: https://arxiv.org/abs/2403.17377 + """ + + def __init__(self): + if not hasattr(F, "scaled_dot_product_attention"): + raise ImportError( + "PAGIdentitySelfAttnProcessor2_0 requires PyTorch 2.0, to use it, please upgrade PyTorch to 2.0." + ) + + def __call__( + self, + attn: Attention, + hidden_states: torch.FloatTensor, + encoder_hidden_states: Optional[torch.FloatTensor] = None, + attention_mask: Optional[torch.FloatTensor] = None, + temb: Optional[torch.FloatTensor] = None, + ) -> torch.Tensor: + residual = hidden_states + if attn.spatial_norm is not None: + hidden_states = attn.spatial_norm(hidden_states, temb) + + input_ndim = hidden_states.ndim + if input_ndim == 4: + batch_size, channel, height, width = hidden_states.shape + hidden_states = hidden_states.view(batch_size, channel, height * width).transpose(1, 2) + + # chunk + hidden_states_org, hidden_states_ptb = hidden_states.chunk(2) + + # original path + batch_size, sequence_length, _ = hidden_states_org.shape + + if attention_mask is not None: + attention_mask = attn.prepare_attention_mask(attention_mask, sequence_length, batch_size) + # scaled_dot_product_attention expects attention_mask shape to be + # (batch, heads, source_length, target_length) + attention_mask = attention_mask.view(batch_size, attn.heads, -1, attention_mask.shape[-1]) + + if attn.group_norm is not None: + hidden_states_org = attn.group_norm(hidden_states_org.transpose(1, 2)).transpose(1, 2) + + query = attn.to_q(hidden_states_org) + key = attn.to_k(hidden_states_org) + value = attn.to_v(hidden_states_org) + + inner_dim = key.shape[-1] + head_dim = inner_dim // attn.heads + + query = query.view(batch_size, -1, attn.heads, head_dim).transpose(1, 2) + key = key.view(batch_size, -1, attn.heads, head_dim).transpose(1, 2) + value = value.view(batch_size, -1, attn.heads, head_dim).transpose(1, 2) + + # the output of sdp = (batch, num_heads, seq_len, head_dim) + # TODO: add support for attn.scale when we move to Torch 2.1 + hidden_states_org = F.scaled_dot_product_attention( + query, key, value, attn_mask=attention_mask, dropout_p=0.0, is_causal=False + ) + hidden_states_org = hidden_states_org.transpose(1, 2).reshape(batch_size, -1, attn.heads * head_dim) + hidden_states_org = hidden_states_org.to(query.dtype) + + # linear proj + hidden_states_org = attn.to_out[0](hidden_states_org) + # dropout + hidden_states_org = attn.to_out[1](hidden_states_org) + + if input_ndim == 4: + hidden_states_org = hidden_states_org.transpose(-1, -2).reshape(batch_size, channel, height, width) + + # perturbed path (identity attention) + batch_size, sequence_length, _ = hidden_states_ptb.shape + + if attn.group_norm is not None: + hidden_states_ptb = attn.group_norm(hidden_states_ptb.transpose(1, 2)).transpose(1, 2) + + hidden_states_ptb = attn.to_v(hidden_states_ptb) + hidden_states_ptb = hidden_states_ptb.to(query.dtype) + + # linear proj + hidden_states_ptb = attn.to_out[0](hidden_states_ptb) + # dropout + hidden_states_ptb = attn.to_out[1](hidden_states_ptb) + + if input_ndim == 4: + hidden_states_ptb = hidden_states_ptb.transpose(-1, -2).reshape(batch_size, channel, height, width) + + # cat + hidden_states = torch.cat([hidden_states_org, hidden_states_ptb]) + + if attn.residual_connection: + hidden_states = hidden_states + residual + + hidden_states = hidden_states / attn.rescale_output_factor + + return hidden_states + + +class PAGCFGIdentitySelfAttnProcessor2_0: + r""" + Processor for implementing PAG using scaled dot-product attention (enabled by default if you're using PyTorch 2.0). + PAG reference: https://arxiv.org/abs/2403.17377 + """ + + def __init__(self): + if not hasattr(F, "scaled_dot_product_attention"): + raise ImportError( + "PAGCFGIdentitySelfAttnProcessor2_0 requires PyTorch 2.0, to use it, please upgrade PyTorch to 2.0." + ) + + def __call__( + self, + attn: Attention, + hidden_states: torch.FloatTensor, + encoder_hidden_states: Optional[torch.FloatTensor] = None, + attention_mask: Optional[torch.FloatTensor] = None, + temb: Optional[torch.FloatTensor] = None, + ) -> torch.Tensor: + residual = hidden_states + if attn.spatial_norm is not None: + hidden_states = attn.spatial_norm(hidden_states, temb) + + input_ndim = hidden_states.ndim + if input_ndim == 4: + batch_size, channel, height, width = hidden_states.shape + hidden_states = hidden_states.view(batch_size, channel, height * width).transpose(1, 2) + + # chunk + hidden_states_uncond, hidden_states_org, hidden_states_ptb = hidden_states.chunk(3) + hidden_states_org = torch.cat([hidden_states_uncond, hidden_states_org]) + + # original path + batch_size, sequence_length, _ = hidden_states_org.shape + + if attention_mask is not None: + attention_mask = attn.prepare_attention_mask(attention_mask, sequence_length, batch_size) + # scaled_dot_product_attention expects attention_mask shape to be + # (batch, heads, source_length, target_length) + attention_mask = attention_mask.view(batch_size, attn.heads, -1, attention_mask.shape[-1]) + + if attn.group_norm is not None: + hidden_states_org = attn.group_norm(hidden_states_org.transpose(1, 2)).transpose(1, 2) + + query = attn.to_q(hidden_states_org) + key = attn.to_k(hidden_states_org) + value = attn.to_v(hidden_states_org) + + inner_dim = key.shape[-1] + head_dim = inner_dim // attn.heads + + query = query.view(batch_size, -1, attn.heads, head_dim).transpose(1, 2) + + key = key.view(batch_size, -1, attn.heads, head_dim).transpose(1, 2) + value = value.view(batch_size, -1, attn.heads, head_dim).transpose(1, 2) + + # the output of sdp = (batch, num_heads, seq_len, head_dim) + # TODO: add support for attn.scale when we move to Torch 2.1 + hidden_states_org = F.scaled_dot_product_attention( + query, key, value, attn_mask=attention_mask, dropout_p=0.0, is_causal=False + ) + + hidden_states_org = hidden_states_org.transpose(1, 2).reshape(batch_size, -1, attn.heads * head_dim) + hidden_states_org = hidden_states_org.to(query.dtype) + + # linear proj + hidden_states_org = attn.to_out[0](hidden_states_org) + # dropout + hidden_states_org = attn.to_out[1](hidden_states_org) + + if input_ndim == 4: + hidden_states_org = hidden_states_org.transpose(-1, -2).reshape(batch_size, channel, height, width) + + # perturbed path (identity attention) + batch_size, sequence_length, _ = hidden_states_ptb.shape + + if attn.group_norm is not None: + hidden_states_ptb = attn.group_norm(hidden_states_ptb.transpose(1, 2)).transpose(1, 2) + + value = attn.to_v(hidden_states_ptb) + hidden_states_ptb = value + hidden_states_ptb = hidden_states_ptb.to(query.dtype) + + # linear proj + hidden_states_ptb = attn.to_out[0](hidden_states_ptb) + # dropout + hidden_states_ptb = attn.to_out[1](hidden_states_ptb) + + if input_ndim == 4: + hidden_states_ptb = hidden_states_ptb.transpose(-1, -2).reshape(batch_size, channel, height, width) + + # cat + hidden_states = torch.cat([hidden_states_org, hidden_states_ptb]) + + if attn.residual_connection: + hidden_states = hidden_states + residual + + hidden_states = hidden_states / attn.rescale_output_factor + + return hidden_states + + +class SanaMultiscaleAttnProcessor2_0: + r""" + Processor for implementing multiscale quadratic attention. + """ + + def __call__(self, attn: SanaMultiscaleLinearAttention, hidden_states: torch.Tensor) -> torch.Tensor: + height, width = hidden_states.shape[-2:] + if height * width > attn.attention_head_dim: + use_linear_attention = True + else: + use_linear_attention = False + + residual = hidden_states + + batch_size, _, height, width = list(hidden_states.size()) + original_dtype = hidden_states.dtype + + hidden_states = hidden_states.movedim(1, -1) + query = attn.to_q(hidden_states) + key = attn.to_k(hidden_states) + value = attn.to_v(hidden_states) + hidden_states = torch.cat([query, key, value], dim=3) + hidden_states = hidden_states.movedim(-1, 1) + + multi_scale_qkv = [hidden_states] + for block in attn.to_qkv_multiscale: + multi_scale_qkv.append(block(hidden_states)) + + hidden_states = torch.cat(multi_scale_qkv, dim=1) + + if use_linear_attention: + # for linear attention upcast hidden_states to float32 + hidden_states = hidden_states.to(dtype=torch.float32) + + hidden_states = hidden_states.reshape(batch_size, -1, 3 * attn.attention_head_dim, height * width) + + query, key, value = hidden_states.chunk(3, dim=2) + query = attn.nonlinearity(query) + key = attn.nonlinearity(key) + + if use_linear_attention: + hidden_states = attn.apply_linear_attention(query, key, value) + hidden_states = hidden_states.to(dtype=original_dtype) + else: + hidden_states = attn.apply_quadratic_attention(query, key, value) + + hidden_states = torch.reshape(hidden_states, (batch_size, -1, height, width)) + hidden_states = attn.to_out(hidden_states.movedim(1, -1)).movedim(-1, 1) + + if attn.norm_type == "rms_norm": + hidden_states = attn.norm_out(hidden_states.movedim(1, -1)).movedim(-1, 1) + else: + hidden_states = attn.norm_out(hidden_states) + + if attn.residual_connection: + hidden_states = hidden_states + residual + + return hidden_states + + +class LoRAAttnProcessor: + r""" + Processor for implementing attention with LoRA. + """ + + def __init__(self): + pass + + +class LoRAAttnProcessor2_0: + r""" + Processor for implementing attention with LoRA (enabled by default if you're using PyTorch 2.0). + """ + + def __init__(self): + pass + + +class LoRAXFormersAttnProcessor: + r""" + Processor for implementing attention with LoRA using xFormers. + """ + + def __init__(self): + pass + + +class LoRAAttnAddedKVProcessor: + r""" + Processor for implementing attention with LoRA with extra learnable key and value matrices for the text encoder. + """ + + def __init__(self): + pass + + +class FluxSingleAttnProcessor2_0(FluxAttnProcessor2_0): + r""" + Processor for implementing scaled dot-product attention (enabled by default if you're using PyTorch 2.0). + """ + + def __init__(self): + deprecation_message = "`FluxSingleAttnProcessor2_0` is deprecated and will be removed in a future version. Please use `FluxAttnProcessor2_0` instead." + deprecate("FluxSingleAttnProcessor2_0", "0.32.0", deprecation_message) + super().__init__() + + +class SanaLinearAttnProcessor2_0: + r""" + Processor for implementing scaled dot-product linear attention. + """ + + def __call__( + self, + attn: Attention, + hidden_states: torch.Tensor, + encoder_hidden_states: Optional[torch.Tensor] = None, + attention_mask: Optional[torch.Tensor] = None, + ) -> torch.Tensor: + original_dtype = hidden_states.dtype + + if encoder_hidden_states is None: + encoder_hidden_states = hidden_states + + query = attn.to_q(hidden_states) + key = attn.to_k(encoder_hidden_states) + value = attn.to_v(encoder_hidden_states) + + query = query.transpose(1, 2).unflatten(1, (attn.heads, -1)) + key = key.transpose(1, 2).unflatten(1, (attn.heads, -1)).transpose(2, 3) + value = value.transpose(1, 2).unflatten(1, (attn.heads, -1)) + + query = F.relu(query) + key = F.relu(key) + + query, key, value = query.float(), key.float(), value.float() + + value = F.pad(value, (0, 0, 0, 1), mode="constant", value=1.0) + scores = torch.matmul(value, key) + hidden_states = torch.matmul(scores, query) + + hidden_states = hidden_states[:, :, :-1] / (hidden_states[:, :, -1:] + 1e-15) + hidden_states = hidden_states.flatten(1, 2).transpose(1, 2) + hidden_states = hidden_states.to(original_dtype) + + hidden_states = attn.to_out[0](hidden_states) + hidden_states = attn.to_out[1](hidden_states) + + if original_dtype == torch.float16: + hidden_states = hidden_states.clip(-65504, 65504) + + return hidden_states + + +class PAGCFGSanaLinearAttnProcessor2_0: + r""" + Processor for implementing scaled dot-product linear attention. + """ + + def __call__( + self, + attn: Attention, + hidden_states: torch.Tensor, + encoder_hidden_states: Optional[torch.Tensor] = None, + attention_mask: Optional[torch.Tensor] = None, + ) -> torch.Tensor: + original_dtype = hidden_states.dtype + + hidden_states_uncond, hidden_states_org, hidden_states_ptb = hidden_states.chunk(3) + hidden_states_org = torch.cat([hidden_states_uncond, hidden_states_org]) + + query = attn.to_q(hidden_states_org) + key = attn.to_k(hidden_states_org) + value = attn.to_v(hidden_states_org) + + query = query.transpose(1, 2).unflatten(1, (attn.heads, -1)) + key = key.transpose(1, 2).unflatten(1, (attn.heads, -1)).transpose(2, 3) + value = value.transpose(1, 2).unflatten(1, (attn.heads, -1)) + + query = F.relu(query) + key = F.relu(key) + + query, key, value = query.float(), key.float(), value.float() + + value = F.pad(value, (0, 0, 0, 1), mode="constant", value=1.0) + scores = torch.matmul(value, key) + hidden_states_org = torch.matmul(scores, query) + + hidden_states_org = hidden_states_org[:, :, :-1] / (hidden_states_org[:, :, -1:] + 1e-15) + hidden_states_org = hidden_states_org.flatten(1, 2).transpose(1, 2) + hidden_states_org = hidden_states_org.to(original_dtype) + + hidden_states_org = attn.to_out[0](hidden_states_org) + hidden_states_org = attn.to_out[1](hidden_states_org) + + # perturbed path (identity attention) + hidden_states_ptb = attn.to_v(hidden_states_ptb).to(original_dtype) + + hidden_states_ptb = attn.to_out[0](hidden_states_ptb) + hidden_states_ptb = attn.to_out[1](hidden_states_ptb) + + hidden_states = torch.cat([hidden_states_org, hidden_states_ptb]) + + if original_dtype == torch.float16: + hidden_states = hidden_states.clip(-65504, 65504) + + return hidden_states + + +class PAGIdentitySanaLinearAttnProcessor2_0: + r""" + Processor for implementing scaled dot-product linear attention. + """ + + def __call__( + self, + attn: Attention, + hidden_states: torch.Tensor, + encoder_hidden_states: Optional[torch.Tensor] = None, + attention_mask: Optional[torch.Tensor] = None, + ) -> torch.Tensor: + original_dtype = hidden_states.dtype + + hidden_states_org, hidden_states_ptb = hidden_states.chunk(2) + + query = attn.to_q(hidden_states_org) + key = attn.to_k(hidden_states_org) + value = attn.to_v(hidden_states_org) + + query = query.transpose(1, 2).unflatten(1, (attn.heads, -1)) + key = key.transpose(1, 2).unflatten(1, (attn.heads, -1)).transpose(2, 3) + value = value.transpose(1, 2).unflatten(1, (attn.heads, -1)) + + query = F.relu(query) + key = F.relu(key) + + query, key, value = query.float(), key.float(), value.float() + + value = F.pad(value, (0, 0, 0, 1), mode="constant", value=1.0) + scores = torch.matmul(value, key) + hidden_states_org = torch.matmul(scores, query) + + if hidden_states_org.dtype in [torch.float16, torch.bfloat16]: + hidden_states_org = hidden_states_org.float() + + hidden_states_org = hidden_states_org[:, :, :-1] / (hidden_states_org[:, :, -1:] + 1e-15) + hidden_states_org = hidden_states_org.flatten(1, 2).transpose(1, 2) + hidden_states_org = hidden_states_org.to(original_dtype) + + hidden_states_org = attn.to_out[0](hidden_states_org) + hidden_states_org = attn.to_out[1](hidden_states_org) + + # perturbed path (identity attention) + hidden_states_ptb = attn.to_v(hidden_states_ptb).to(original_dtype) + + hidden_states_ptb = attn.to_out[0](hidden_states_ptb) + hidden_states_ptb = attn.to_out[1](hidden_states_ptb) + + hidden_states = torch.cat([hidden_states_org, hidden_states_ptb]) + + if original_dtype == torch.float16: + hidden_states = hidden_states.clip(-65504, 65504) + + return hidden_states + + +ADDED_KV_ATTENTION_PROCESSORS = ( + AttnAddedKVProcessor, + SlicedAttnAddedKVProcessor, + AttnAddedKVProcessor2_0, + XFormersAttnAddedKVProcessor, +) + +CROSS_ATTENTION_PROCESSORS = ( + AttnProcessor, + AttnProcessor2_0, + XFormersAttnProcessor, + SlicedAttnProcessor, + IPAdapterAttnProcessor, + IPAdapterAttnProcessor2_0, + FluxIPAdapterJointAttnProcessor2_0, +) + +AttentionProcessor = Union[ + AttnProcessor, + CustomDiffusionAttnProcessor, + AttnAddedKVProcessor, + AttnAddedKVProcessor2_0, + JointAttnProcessor2_0, + PAGJointAttnProcessor2_0, + PAGCFGJointAttnProcessor2_0, + FusedJointAttnProcessor2_0, + AllegroAttnProcessor2_0, + AuraFlowAttnProcessor2_0, + FusedAuraFlowAttnProcessor2_0, + FluxAttnProcessor2_0, + FluxAttnProcessor2_0_NPU, + FusedFluxAttnProcessor2_0, + FusedFluxAttnProcessor2_0_NPU, + CogVideoXAttnProcessor2_0, + FusedCogVideoXAttnProcessor2_0, + XFormersAttnAddedKVProcessor, + XFormersAttnProcessor, + XLAFlashAttnProcessor2_0, + AttnProcessorNPU, + AttnProcessor2_0, + MochiVaeAttnProcessor2_0, + MochiAttnProcessor2_0, + StableAudioAttnProcessor2_0, + HunyuanAttnProcessor2_0, + FusedHunyuanAttnProcessor2_0, + PAGHunyuanAttnProcessor2_0, + PAGCFGHunyuanAttnProcessor2_0, + LuminaAttnProcessor2_0, + FusedAttnProcessor2_0, + CustomDiffusionXFormersAttnProcessor, + CustomDiffusionAttnProcessor2_0, + SlicedAttnProcessor, + SlicedAttnAddedKVProcessor, + SanaLinearAttnProcessor2_0, + PAGCFGSanaLinearAttnProcessor2_0, + PAGIdentitySanaLinearAttnProcessor2_0, + SanaMultiscaleLinearAttention, + SanaMultiscaleAttnProcessor2_0, + SanaMultiscaleAttentionProjection, + IPAdapterAttnProcessor, + IPAdapterAttnProcessor2_0, + IPAdapterXFormersAttnProcessor, + SD3IPAdapterJointAttnProcessor2_0, + PAGIdentitySelfAttnProcessor2_0, + PAGCFGIdentitySelfAttnProcessor2_0, + LoRAAttnProcessor, + LoRAAttnProcessor2_0, + LoRAXFormersAttnProcessor, + LoRAAttnAddedKVProcessor, +] diff --git a/venv/lib/python3.11/site-packages/diffusers/models/autoencoders/__init__.py b/venv/lib/python3.11/site-packages/diffusers/models/autoencoders/__init__.py new file mode 100644 index 0000000000000000000000000000000000000000..bb750a4410f2d716a6edb3bbe5ee01b9e37d70d0 --- /dev/null +++ b/venv/lib/python3.11/site-packages/diffusers/models/autoencoders/__init__.py @@ -0,0 +1,13 @@ +from .autoencoder_asym_kl import AsymmetricAutoencoderKL +from .autoencoder_dc import AutoencoderDC +from .autoencoder_kl import AutoencoderKL +from .autoencoder_kl_allegro import AutoencoderKLAllegro +from .autoencoder_kl_cogvideox import AutoencoderKLCogVideoX +from .autoencoder_kl_hunyuan_video import AutoencoderKLHunyuanVideo +from .autoencoder_kl_ltx import AutoencoderKLLTXVideo +from .autoencoder_kl_mochi import AutoencoderKLMochi +from .autoencoder_kl_temporal_decoder import AutoencoderKLTemporalDecoder +from .autoencoder_oobleck import AutoencoderOobleck +from .autoencoder_tiny import AutoencoderTiny +from .consistency_decoder_vae import ConsistencyDecoderVAE +from .vq_model import VQModel diff --git a/venv/lib/python3.11/site-packages/diffusers/models/autoencoders/autoencoder_asym_kl.py b/venv/lib/python3.11/site-packages/diffusers/models/autoencoders/autoencoder_asym_kl.py new file mode 100644 index 0000000000000000000000000000000000000000..3f4d46557bf78a9eb686b2af0a29df62b527e15d --- /dev/null +++ b/venv/lib/python3.11/site-packages/diffusers/models/autoencoders/autoencoder_asym_kl.py @@ -0,0 +1,184 @@ +# Copyright 2024 The HuggingFace Team. All rights reserved. +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. +from typing import Optional, Tuple, Union + +import torch +import torch.nn as nn + +from ...configuration_utils import ConfigMixin, register_to_config +from ...utils.accelerate_utils import apply_forward_hook +from ..modeling_outputs import AutoencoderKLOutput +from ..modeling_utils import ModelMixin +from .vae import DecoderOutput, DiagonalGaussianDistribution, Encoder, MaskConditionDecoder + + +class AsymmetricAutoencoderKL(ModelMixin, ConfigMixin): + r""" + Designing a Better Asymmetric VQGAN for StableDiffusion https://arxiv.org/abs/2306.04632 . A VAE model with KL loss + for encoding images into latents and decoding latent representations into images. + + This model inherits from [`ModelMixin`]. Check the superclass documentation for it's generic methods implemented + for all models (such as downloading or saving). + + Parameters: + in_channels (int, *optional*, defaults to 3): Number of channels in the input image. + out_channels (int, *optional*, defaults to 3): Number of channels in the output. + down_block_types (`Tuple[str]`, *optional*, defaults to `("DownEncoderBlock2D",)`): + Tuple of downsample block types. + down_block_out_channels (`Tuple[int]`, *optional*, defaults to `(64,)`): + Tuple of down block output channels. + layers_per_down_block (`int`, *optional*, defaults to `1`): + Number layers for down block. + up_block_types (`Tuple[str]`, *optional*, defaults to `("UpDecoderBlock2D",)`): + Tuple of upsample block types. + up_block_out_channels (`Tuple[int]`, *optional*, defaults to `(64,)`): + Tuple of up block output channels. + layers_per_up_block (`int`, *optional*, defaults to `1`): + Number layers for up block. + act_fn (`str`, *optional*, defaults to `"silu"`): The activation function to use. + latent_channels (`int`, *optional*, defaults to 4): Number of channels in the latent space. + sample_size (`int`, *optional*, defaults to `32`): Sample input size. + norm_num_groups (`int`, *optional*, defaults to `32`): + Number of groups to use for the first normalization layer in ResNet blocks. + scaling_factor (`float`, *optional*, defaults to 0.18215): + The component-wise standard deviation of the trained latent space computed using the first batch of the + training set. This is used to scale the latent space to have unit variance when training the diffusion + model. The latents are scaled with the formula `z = z * scaling_factor` before being passed to the + diffusion model. When decoding, the latents are scaled back to the original scale with the formula: `z = 1 + / scaling_factor * z`. For more details, refer to sections 4.3.2 and D.1 of the [High-Resolution Image + Synthesis with Latent Diffusion Models](https://arxiv.org/abs/2112.10752) paper. + """ + + @register_to_config + def __init__( + self, + in_channels: int = 3, + out_channels: int = 3, + down_block_types: Tuple[str, ...] = ("DownEncoderBlock2D",), + down_block_out_channels: Tuple[int, ...] = (64,), + layers_per_down_block: int = 1, + up_block_types: Tuple[str, ...] = ("UpDecoderBlock2D",), + up_block_out_channels: Tuple[int, ...] = (64,), + layers_per_up_block: int = 1, + act_fn: str = "silu", + latent_channels: int = 4, + norm_num_groups: int = 32, + sample_size: int = 32, + scaling_factor: float = 0.18215, + ) -> None: + super().__init__() + + # pass init params to Encoder + self.encoder = Encoder( + in_channels=in_channels, + out_channels=latent_channels, + down_block_types=down_block_types, + block_out_channels=down_block_out_channels, + layers_per_block=layers_per_down_block, + act_fn=act_fn, + norm_num_groups=norm_num_groups, + double_z=True, + ) + + # pass init params to Decoder + self.decoder = MaskConditionDecoder( + in_channels=latent_channels, + out_channels=out_channels, + up_block_types=up_block_types, + block_out_channels=up_block_out_channels, + layers_per_block=layers_per_up_block, + act_fn=act_fn, + norm_num_groups=norm_num_groups, + ) + + self.quant_conv = nn.Conv2d(2 * latent_channels, 2 * latent_channels, 1) + self.post_quant_conv = nn.Conv2d(latent_channels, latent_channels, 1) + + self.use_slicing = False + self.use_tiling = False + + self.register_to_config(block_out_channels=up_block_out_channels) + self.register_to_config(force_upcast=False) + + @apply_forward_hook + def encode(self, x: torch.Tensor, return_dict: bool = True) -> Union[AutoencoderKLOutput, Tuple[torch.Tensor]]: + h = self.encoder(x) + moments = self.quant_conv(h) + posterior = DiagonalGaussianDistribution(moments) + + if not return_dict: + return (posterior,) + + return AutoencoderKLOutput(latent_dist=posterior) + + def _decode( + self, + z: torch.Tensor, + image: Optional[torch.Tensor] = None, + mask: Optional[torch.Tensor] = None, + return_dict: bool = True, + ) -> Union[DecoderOutput, Tuple[torch.Tensor]]: + z = self.post_quant_conv(z) + dec = self.decoder(z, image, mask) + + if not return_dict: + return (dec,) + + return DecoderOutput(sample=dec) + + @apply_forward_hook + def decode( + self, + z: torch.Tensor, + generator: Optional[torch.Generator] = None, + image: Optional[torch.Tensor] = None, + mask: Optional[torch.Tensor] = None, + return_dict: bool = True, + ) -> Union[DecoderOutput, Tuple[torch.Tensor]]: + decoded = self._decode(z, image, mask).sample + + if not return_dict: + return (decoded,) + + return DecoderOutput(sample=decoded) + + def forward( + self, + sample: torch.Tensor, + mask: Optional[torch.Tensor] = None, + sample_posterior: bool = False, + return_dict: bool = True, + generator: Optional[torch.Generator] = None, + ) -> Union[DecoderOutput, Tuple[torch.Tensor]]: + r""" + Args: + sample (`torch.Tensor`): Input sample. + mask (`torch.Tensor`, *optional*, defaults to `None`): Optional inpainting mask. + sample_posterior (`bool`, *optional*, defaults to `False`): + Whether to sample from the posterior. + return_dict (`bool`, *optional*, defaults to `True`): + Whether or not to return a [`DecoderOutput`] instead of a plain tuple. + """ + x = sample + posterior = self.encode(x).latent_dist + if sample_posterior: + z = posterior.sample(generator=generator) + else: + z = posterior.mode() + dec = self.decode(z, generator, sample, mask).sample + + if not return_dict: + return (dec,) + + return DecoderOutput(sample=dec) diff --git a/venv/lib/python3.11/site-packages/diffusers/models/autoencoders/autoencoder_dc.py b/venv/lib/python3.11/site-packages/diffusers/models/autoencoders/autoencoder_dc.py new file mode 100644 index 0000000000000000000000000000000000000000..109e37c23e1b638d79b868bcae78e4f3b4161e03 --- /dev/null +++ b/venv/lib/python3.11/site-packages/diffusers/models/autoencoders/autoencoder_dc.py @@ -0,0 +1,620 @@ +# Copyright 2024 MIT, Tsinghua University, NVIDIA CORPORATION and The HuggingFace Team. +# All rights reserved. +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. + +from typing import Optional, Tuple, Union + +import torch +import torch.nn as nn +import torch.nn.functional as F + +from ...configuration_utils import ConfigMixin, register_to_config +from ...loaders import FromOriginalModelMixin +from ...utils.accelerate_utils import apply_forward_hook +from ..activations import get_activation +from ..attention_processor import SanaMultiscaleLinearAttention +from ..modeling_utils import ModelMixin +from ..normalization import RMSNorm, get_normalization +from ..transformers.sana_transformer import GLUMBConv +from .vae import DecoderOutput, EncoderOutput + + +class ResBlock(nn.Module): + def __init__( + self, + in_channels: int, + out_channels: int, + norm_type: str = "batch_norm", + act_fn: str = "relu6", + ) -> None: + super().__init__() + + self.norm_type = norm_type + + self.nonlinearity = get_activation(act_fn) if act_fn is not None else nn.Identity() + self.conv1 = nn.Conv2d(in_channels, in_channels, 3, 1, 1) + self.conv2 = nn.Conv2d(in_channels, out_channels, 3, 1, 1, bias=False) + self.norm = get_normalization(norm_type, out_channels) + + def forward(self, hidden_states: torch.Tensor) -> torch.Tensor: + residual = hidden_states + hidden_states = self.conv1(hidden_states) + hidden_states = self.nonlinearity(hidden_states) + hidden_states = self.conv2(hidden_states) + + if self.norm_type == "rms_norm": + # move channel to the last dimension so we apply RMSnorm across channel dimension + hidden_states = self.norm(hidden_states.movedim(1, -1)).movedim(-1, 1) + else: + hidden_states = self.norm(hidden_states) + + return hidden_states + residual + + +class EfficientViTBlock(nn.Module): + def __init__( + self, + in_channels: int, + mult: float = 1.0, + attention_head_dim: int = 32, + qkv_multiscales: Tuple[int, ...] = (5,), + norm_type: str = "batch_norm", + ) -> None: + super().__init__() + + self.attn = SanaMultiscaleLinearAttention( + in_channels=in_channels, + out_channels=in_channels, + mult=mult, + attention_head_dim=attention_head_dim, + norm_type=norm_type, + kernel_sizes=qkv_multiscales, + residual_connection=True, + ) + + self.conv_out = GLUMBConv( + in_channels=in_channels, + out_channels=in_channels, + norm_type="rms_norm", + ) + + def forward(self, x: torch.Tensor) -> torch.Tensor: + x = self.attn(x) + x = self.conv_out(x) + return x + + +def get_block( + block_type: str, + in_channels: int, + out_channels: int, + attention_head_dim: int, + norm_type: str, + act_fn: str, + qkv_mutliscales: Tuple[int] = (), +): + if block_type == "ResBlock": + block = ResBlock(in_channels, out_channels, norm_type, act_fn) + + elif block_type == "EfficientViTBlock": + block = EfficientViTBlock( + in_channels, attention_head_dim=attention_head_dim, norm_type=norm_type, qkv_multiscales=qkv_mutliscales + ) + + else: + raise ValueError(f"Block with {block_type=} is not supported.") + + return block + + +class DCDownBlock2d(nn.Module): + def __init__(self, in_channels: int, out_channels: int, downsample: bool = False, shortcut: bool = True) -> None: + super().__init__() + + self.downsample = downsample + self.factor = 2 + self.stride = 1 if downsample else 2 + self.group_size = in_channels * self.factor**2 // out_channels + self.shortcut = shortcut + + out_ratio = self.factor**2 + if downsample: + assert out_channels % out_ratio == 0 + out_channels = out_channels // out_ratio + + self.conv = nn.Conv2d( + in_channels, + out_channels, + kernel_size=3, + stride=self.stride, + padding=1, + ) + + def forward(self, hidden_states: torch.Tensor) -> torch.Tensor: + x = self.conv(hidden_states) + if self.downsample: + x = F.pixel_unshuffle(x, self.factor) + + if self.shortcut: + y = F.pixel_unshuffle(hidden_states, self.factor) + y = y.unflatten(1, (-1, self.group_size)) + y = y.mean(dim=2) + hidden_states = x + y + else: + hidden_states = x + + return hidden_states + + +class DCUpBlock2d(nn.Module): + def __init__( + self, + in_channels: int, + out_channels: int, + interpolate: bool = False, + shortcut: bool = True, + interpolation_mode: str = "nearest", + ) -> None: + super().__init__() + + self.interpolate = interpolate + self.interpolation_mode = interpolation_mode + self.shortcut = shortcut + self.factor = 2 + self.repeats = out_channels * self.factor**2 // in_channels + + out_ratio = self.factor**2 + + if not interpolate: + out_channels = out_channels * out_ratio + + self.conv = nn.Conv2d(in_channels, out_channels, 3, 1, 1) + + def forward(self, hidden_states: torch.Tensor) -> torch.Tensor: + if self.interpolate: + x = F.interpolate(hidden_states, scale_factor=self.factor, mode=self.interpolation_mode) + x = self.conv(x) + else: + x = self.conv(hidden_states) + x = F.pixel_shuffle(x, self.factor) + + if self.shortcut: + y = hidden_states.repeat_interleave(self.repeats, dim=1) + y = F.pixel_shuffle(y, self.factor) + hidden_states = x + y + else: + hidden_states = x + + return hidden_states + + +class Encoder(nn.Module): + def __init__( + self, + in_channels: int, + latent_channels: int, + attention_head_dim: int = 32, + block_type: Union[str, Tuple[str]] = "ResBlock", + block_out_channels: Tuple[int] = (128, 256, 512, 512, 1024, 1024), + layers_per_block: Tuple[int] = (2, 2, 2, 2, 2, 2), + qkv_multiscales: Tuple[Tuple[int, ...], ...] = ((), (), (), (5,), (5,), (5,)), + downsample_block_type: str = "pixel_unshuffle", + out_shortcut: bool = True, + ): + super().__init__() + + num_blocks = len(block_out_channels) + + if isinstance(block_type, str): + block_type = (block_type,) * num_blocks + + if layers_per_block[0] > 0: + self.conv_in = nn.Conv2d( + in_channels, + block_out_channels[0] if layers_per_block[0] > 0 else block_out_channels[1], + kernel_size=3, + stride=1, + padding=1, + ) + else: + self.conv_in = DCDownBlock2d( + in_channels=in_channels, + out_channels=block_out_channels[0] if layers_per_block[0] > 0 else block_out_channels[1], + downsample=downsample_block_type == "pixel_unshuffle", + shortcut=False, + ) + + down_blocks = [] + for i, (out_channel, num_layers) in enumerate(zip(block_out_channels, layers_per_block)): + down_block_list = [] + + for _ in range(num_layers): + block = get_block( + block_type[i], + out_channel, + out_channel, + attention_head_dim=attention_head_dim, + norm_type="rms_norm", + act_fn="silu", + qkv_mutliscales=qkv_multiscales[i], + ) + down_block_list.append(block) + + if i < num_blocks - 1 and num_layers > 0: + downsample_block = DCDownBlock2d( + in_channels=out_channel, + out_channels=block_out_channels[i + 1], + downsample=downsample_block_type == "pixel_unshuffle", + shortcut=True, + ) + down_block_list.append(downsample_block) + + down_blocks.append(nn.Sequential(*down_block_list)) + + self.down_blocks = nn.ModuleList(down_blocks) + + self.conv_out = nn.Conv2d(block_out_channels[-1], latent_channels, 3, 1, 1) + + self.out_shortcut = out_shortcut + if out_shortcut: + self.out_shortcut_average_group_size = block_out_channels[-1] // latent_channels + + def forward(self, hidden_states: torch.Tensor) -> torch.Tensor: + hidden_states = self.conv_in(hidden_states) + for down_block in self.down_blocks: + hidden_states = down_block(hidden_states) + + if self.out_shortcut: + x = hidden_states.unflatten(1, (-1, self.out_shortcut_average_group_size)) + x = x.mean(dim=2) + hidden_states = self.conv_out(hidden_states) + x + else: + hidden_states = self.conv_out(hidden_states) + + return hidden_states + + +class Decoder(nn.Module): + def __init__( + self, + in_channels: int, + latent_channels: int, + attention_head_dim: int = 32, + block_type: Union[str, Tuple[str]] = "ResBlock", + block_out_channels: Tuple[int] = (128, 256, 512, 512, 1024, 1024), + layers_per_block: Tuple[int] = (2, 2, 2, 2, 2, 2), + qkv_multiscales: Tuple[Tuple[int, ...], ...] = ((), (), (), (5,), (5,), (5,)), + norm_type: Union[str, Tuple[str]] = "rms_norm", + act_fn: Union[str, Tuple[str]] = "silu", + upsample_block_type: str = "pixel_shuffle", + in_shortcut: bool = True, + ): + super().__init__() + + num_blocks = len(block_out_channels) + + if isinstance(block_type, str): + block_type = (block_type,) * num_blocks + if isinstance(norm_type, str): + norm_type = (norm_type,) * num_blocks + if isinstance(act_fn, str): + act_fn = (act_fn,) * num_blocks + + self.conv_in = nn.Conv2d(latent_channels, block_out_channels[-1], 3, 1, 1) + + self.in_shortcut = in_shortcut + if in_shortcut: + self.in_shortcut_repeats = block_out_channels[-1] // latent_channels + + up_blocks = [] + for i, (out_channel, num_layers) in reversed(list(enumerate(zip(block_out_channels, layers_per_block)))): + up_block_list = [] + + if i < num_blocks - 1 and num_layers > 0: + upsample_block = DCUpBlock2d( + block_out_channels[i + 1], + out_channel, + interpolate=upsample_block_type == "interpolate", + shortcut=True, + ) + up_block_list.append(upsample_block) + + for _ in range(num_layers): + block = get_block( + block_type[i], + out_channel, + out_channel, + attention_head_dim=attention_head_dim, + norm_type=norm_type[i], + act_fn=act_fn[i], + qkv_mutliscales=qkv_multiscales[i], + ) + up_block_list.append(block) + + up_blocks.insert(0, nn.Sequential(*up_block_list)) + + self.up_blocks = nn.ModuleList(up_blocks) + + channels = block_out_channels[0] if layers_per_block[0] > 0 else block_out_channels[1] + + self.norm_out = RMSNorm(channels, 1e-5, elementwise_affine=True, bias=True) + self.conv_act = nn.ReLU() + self.conv_out = None + + if layers_per_block[0] > 0: + self.conv_out = nn.Conv2d(channels, in_channels, 3, 1, 1) + else: + self.conv_out = DCUpBlock2d( + channels, in_channels, interpolate=upsample_block_type == "interpolate", shortcut=False + ) + + def forward(self, hidden_states: torch.Tensor) -> torch.Tensor: + if self.in_shortcut: + x = hidden_states.repeat_interleave(self.in_shortcut_repeats, dim=1) + hidden_states = self.conv_in(hidden_states) + x + else: + hidden_states = self.conv_in(hidden_states) + + for up_block in reversed(self.up_blocks): + hidden_states = up_block(hidden_states) + + hidden_states = self.norm_out(hidden_states.movedim(1, -1)).movedim(-1, 1) + hidden_states = self.conv_act(hidden_states) + hidden_states = self.conv_out(hidden_states) + return hidden_states + + +class AutoencoderDC(ModelMixin, ConfigMixin, FromOriginalModelMixin): + r""" + An Autoencoder model introduced in [DCAE](https://arxiv.org/abs/2410.10733) and used in + [SANA](https://arxiv.org/abs/2410.10629). + + This model inherits from [`ModelMixin`]. Check the superclass documentation for it's generic methods implemented + for all models (such as downloading or saving). + + Args: + in_channels (`int`, defaults to `3`): + The number of input channels in samples. + latent_channels (`int`, defaults to `32`): + The number of channels in the latent space representation. + encoder_block_types (`Union[str, Tuple[str]]`, defaults to `"ResBlock"`): + The type(s) of block to use in the encoder. + decoder_block_types (`Union[str, Tuple[str]]`, defaults to `"ResBlock"`): + The type(s) of block to use in the decoder. + encoder_block_out_channels (`Tuple[int, ...]`, defaults to `(128, 256, 512, 512, 1024, 1024)`): + The number of output channels for each block in the encoder. + decoder_block_out_channels (`Tuple[int, ...]`, defaults to `(128, 256, 512, 512, 1024, 1024)`): + The number of output channels for each block in the decoder. + encoder_layers_per_block (`Tuple[int]`, defaults to `(2, 2, 2, 3, 3, 3)`): + The number of layers per block in the encoder. + decoder_layers_per_block (`Tuple[int]`, defaults to `(3, 3, 3, 3, 3, 3)`): + The number of layers per block in the decoder. + encoder_qkv_multiscales (`Tuple[Tuple[int, ...], ...]`, defaults to `((), (), (), (5,), (5,), (5,))`): + Multi-scale configurations for the encoder's QKV (query-key-value) transformations. + decoder_qkv_multiscales (`Tuple[Tuple[int, ...], ...]`, defaults to `((), (), (), (5,), (5,), (5,))`): + Multi-scale configurations for the decoder's QKV (query-key-value) transformations. + upsample_block_type (`str`, defaults to `"pixel_shuffle"`): + The type of block to use for upsampling in the decoder. + downsample_block_type (`str`, defaults to `"pixel_unshuffle"`): + The type of block to use for downsampling in the encoder. + decoder_norm_types (`Union[str, Tuple[str]]`, defaults to `"rms_norm"`): + The normalization type(s) to use in the decoder. + decoder_act_fns (`Union[str, Tuple[str]]`, defaults to `"silu"`): + The activation function(s) to use in the decoder. + scaling_factor (`float`, defaults to `1.0`): + The multiplicative inverse of the root mean square of the latent features. This is used to scale the latent + space to have unit variance when training the diffusion model. The latents are scaled with the formula `z = + z * scaling_factor` before being passed to the diffusion model. When decoding, the latents are scaled back + to the original scale with the formula: `z = 1 / scaling_factor * z`. + """ + + _supports_gradient_checkpointing = False + + @register_to_config + def __init__( + self, + in_channels: int = 3, + latent_channels: int = 32, + attention_head_dim: int = 32, + encoder_block_types: Union[str, Tuple[str]] = "ResBlock", + decoder_block_types: Union[str, Tuple[str]] = "ResBlock", + encoder_block_out_channels: Tuple[int, ...] = (128, 256, 512, 512, 1024, 1024), + decoder_block_out_channels: Tuple[int, ...] = (128, 256, 512, 512, 1024, 1024), + encoder_layers_per_block: Tuple[int] = (2, 2, 2, 3, 3, 3), + decoder_layers_per_block: Tuple[int] = (3, 3, 3, 3, 3, 3), + encoder_qkv_multiscales: Tuple[Tuple[int, ...], ...] = ((), (), (), (5,), (5,), (5,)), + decoder_qkv_multiscales: Tuple[Tuple[int, ...], ...] = ((), (), (), (5,), (5,), (5,)), + upsample_block_type: str = "pixel_shuffle", + downsample_block_type: str = "pixel_unshuffle", + decoder_norm_types: Union[str, Tuple[str]] = "rms_norm", + decoder_act_fns: Union[str, Tuple[str]] = "silu", + scaling_factor: float = 1.0, + ) -> None: + super().__init__() + + self.encoder = Encoder( + in_channels=in_channels, + latent_channels=latent_channels, + attention_head_dim=attention_head_dim, + block_type=encoder_block_types, + block_out_channels=encoder_block_out_channels, + layers_per_block=encoder_layers_per_block, + qkv_multiscales=encoder_qkv_multiscales, + downsample_block_type=downsample_block_type, + ) + self.decoder = Decoder( + in_channels=in_channels, + latent_channels=latent_channels, + attention_head_dim=attention_head_dim, + block_type=decoder_block_types, + block_out_channels=decoder_block_out_channels, + layers_per_block=decoder_layers_per_block, + qkv_multiscales=decoder_qkv_multiscales, + norm_type=decoder_norm_types, + act_fn=decoder_act_fns, + upsample_block_type=upsample_block_type, + ) + + self.spatial_compression_ratio = 2 ** (len(encoder_block_out_channels) - 1) + self.temporal_compression_ratio = 1 + + # When decoding a batch of video latents at a time, one can save memory by slicing across the batch dimension + # to perform decoding of a single video latent at a time. + self.use_slicing = False + + # When decoding spatially large video latents, the memory requirement is very high. By breaking the video latent + # frames spatially into smaller tiles and performing multiple forward passes for decoding, and then blending the + # intermediate tiles together, the memory requirement can be lowered. + self.use_tiling = False + + # The minimal tile height and width for spatial tiling to be used + self.tile_sample_min_height = 512 + self.tile_sample_min_width = 512 + + # The minimal distance between two spatial tiles + self.tile_sample_stride_height = 448 + self.tile_sample_stride_width = 448 + + def enable_tiling( + self, + tile_sample_min_height: Optional[int] = None, + tile_sample_min_width: Optional[int] = None, + tile_sample_stride_height: Optional[float] = None, + tile_sample_stride_width: Optional[float] = None, + ) -> None: + r""" + Enable tiled AE decoding. When this option is enabled, the AE will split the input tensor into tiles to compute + decoding and encoding in several steps. This is useful for saving a large amount of memory and to allow + processing larger images. + + Args: + tile_sample_min_height (`int`, *optional*): + The minimum height required for a sample to be separated into tiles across the height dimension. + tile_sample_min_width (`int`, *optional*): + The minimum width required for a sample to be separated into tiles across the width dimension. + tile_sample_stride_height (`int`, *optional*): + The minimum amount of overlap between two consecutive vertical tiles. This is to ensure that there are + no tiling artifacts produced across the height dimension. + tile_sample_stride_width (`int`, *optional*): + The stride between two consecutive horizontal tiles. This is to ensure that there are no tiling + artifacts produced across the width dimension. + """ + self.use_tiling = True + self.tile_sample_min_height = tile_sample_min_height or self.tile_sample_min_height + self.tile_sample_min_width = tile_sample_min_width or self.tile_sample_min_width + self.tile_sample_stride_height = tile_sample_stride_height or self.tile_sample_stride_height + self.tile_sample_stride_width = tile_sample_stride_width or self.tile_sample_stride_width + + def disable_tiling(self) -> None: + r""" + Disable tiled AE decoding. If `enable_tiling` was previously enabled, this method will go back to computing + decoding in one step. + """ + self.use_tiling = False + + def enable_slicing(self) -> None: + r""" + Enable sliced AE decoding. When this option is enabled, the AE will split the input tensor in slices to compute + decoding in several steps. This is useful to save some memory and allow larger batch sizes. + """ + self.use_slicing = True + + def disable_slicing(self) -> None: + r""" + Disable sliced AE decoding. If `enable_slicing` was previously enabled, this method will go back to computing + decoding in one step. + """ + self.use_slicing = False + + def _encode(self, x: torch.Tensor) -> torch.Tensor: + batch_size, num_channels, height, width = x.shape + + if self.use_tiling and (width > self.tile_sample_min_width or height > self.tile_sample_min_height): + return self.tiled_encode(x, return_dict=False)[0] + + encoded = self.encoder(x) + + return encoded + + @apply_forward_hook + def encode(self, x: torch.Tensor, return_dict: bool = True) -> Union[EncoderOutput, Tuple[torch.Tensor]]: + r""" + Encode a batch of images into latents. + + Args: + x (`torch.Tensor`): Input batch of images. + return_dict (`bool`, defaults to `True`): + Whether to return a [`~models.vae.EncoderOutput`] instead of a plain tuple. + + Returns: + The latent representations of the encoded videos. If `return_dict` is True, a + [`~models.vae.EncoderOutput`] is returned, otherwise a plain `tuple` is returned. + """ + if self.use_slicing and x.shape[0] > 1: + encoded_slices = [self._encode(x_slice) for x_slice in x.split(1)] + encoded = torch.cat(encoded_slices) + else: + encoded = self._encode(x) + + if not return_dict: + return (encoded,) + return EncoderOutput(latent=encoded) + + def _decode(self, z: torch.Tensor) -> torch.Tensor: + batch_size, num_channels, height, width = z.shape + + if self.use_tiling and (width > self.tile_latent_min_width or height > self.tile_latent_min_height): + return self.tiled_decode(z, return_dict=False)[0] + + decoded = self.decoder(z) + + return decoded + + @apply_forward_hook + def decode(self, z: torch.Tensor, return_dict: bool = True) -> Union[DecoderOutput, Tuple[torch.Tensor]]: + r""" + Decode a batch of images. + + Args: + z (`torch.Tensor`): Input batch of latent vectors. + return_dict (`bool`, defaults to `True`): + Whether to return a [`~models.vae.DecoderOutput`] instead of a plain tuple. + + Returns: + [`~models.vae.DecoderOutput`] or `tuple`: + If return_dict is True, a [`~models.vae.DecoderOutput`] is returned, otherwise a plain `tuple` is + returned. + """ + if self.use_slicing and z.size(0) > 1: + decoded_slices = [self._decode(z_slice).sample for z_slice in z.split(1)] + decoded = torch.cat(decoded_slices) + else: + decoded = self._decode(z) + + if not return_dict: + return (decoded,) + return DecoderOutput(sample=decoded) + + def tiled_encode(self, x: torch.Tensor, return_dict: bool = True) -> torch.Tensor: + raise NotImplementedError("`tiled_encode` has not been implemented for AutoencoderDC.") + + def tiled_decode(self, z: torch.Tensor, return_dict: bool = True) -> Union[DecoderOutput, torch.Tensor]: + raise NotImplementedError("`tiled_decode` has not been implemented for AutoencoderDC.") + + def forward(self, sample: torch.Tensor, return_dict: bool = True) -> torch.Tensor: + encoded = self.encode(sample, return_dict=False)[0] + decoded = self.decode(encoded, return_dict=False)[0] + if not return_dict: + return (decoded,) + return DecoderOutput(sample=decoded) diff --git a/venv/lib/python3.11/site-packages/diffusers/models/autoencoders/autoencoder_kl.py b/venv/lib/python3.11/site-packages/diffusers/models/autoencoders/autoencoder_kl.py new file mode 100644 index 0000000000000000000000000000000000000000..9036c027a5354b7ee1f42cc3e54d81eb0b6e748d --- /dev/null +++ b/venv/lib/python3.11/site-packages/diffusers/models/autoencoders/autoencoder_kl.py @@ -0,0 +1,571 @@ +# Copyright 2024 The HuggingFace Team. All rights reserved. +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. +from typing import Dict, Optional, Tuple, Union + +import torch +import torch.nn as nn + +from ...configuration_utils import ConfigMixin, register_to_config +from ...loaders import PeftAdapterMixin +from ...loaders.single_file_model import FromOriginalModelMixin +from ...utils import deprecate +from ...utils.accelerate_utils import apply_forward_hook +from ..attention_processor import ( + ADDED_KV_ATTENTION_PROCESSORS, + CROSS_ATTENTION_PROCESSORS, + Attention, + AttentionProcessor, + AttnAddedKVProcessor, + AttnProcessor, + FusedAttnProcessor2_0, +) +from ..modeling_outputs import AutoencoderKLOutput +from ..modeling_utils import ModelMixin +from .vae import Decoder, DecoderOutput, DiagonalGaussianDistribution, Encoder + + +class AutoencoderKL(ModelMixin, ConfigMixin, FromOriginalModelMixin, PeftAdapterMixin): + r""" + A VAE model with KL loss for encoding images into latents and decoding latent representations into images. + + This model inherits from [`ModelMixin`]. Check the superclass documentation for it's generic methods implemented + for all models (such as downloading or saving). + + Parameters: + in_channels (int, *optional*, defaults to 3): Number of channels in the input image. + out_channels (int, *optional*, defaults to 3): Number of channels in the output. + down_block_types (`Tuple[str]`, *optional*, defaults to `("DownEncoderBlock2D",)`): + Tuple of downsample block types. + up_block_types (`Tuple[str]`, *optional*, defaults to `("UpDecoderBlock2D",)`): + Tuple of upsample block types. + block_out_channels (`Tuple[int]`, *optional*, defaults to `(64,)`): + Tuple of block output channels. + act_fn (`str`, *optional*, defaults to `"silu"`): The activation function to use. + latent_channels (`int`, *optional*, defaults to 4): Number of channels in the latent space. + sample_size (`int`, *optional*, defaults to `32`): Sample input size. + scaling_factor (`float`, *optional*, defaults to 0.18215): + The component-wise standard deviation of the trained latent space computed using the first batch of the + training set. This is used to scale the latent space to have unit variance when training the diffusion + model. The latents are scaled with the formula `z = z * scaling_factor` before being passed to the + diffusion model. When decoding, the latents are scaled back to the original scale with the formula: `z = 1 + / scaling_factor * z`. For more details, refer to sections 4.3.2 and D.1 of the [High-Resolution Image + Synthesis with Latent Diffusion Models](https://arxiv.org/abs/2112.10752) paper. + force_upcast (`bool`, *optional*, default to `True`): + If enabled it will force the VAE to run in float32 for high image resolution pipelines, such as SD-XL. VAE + can be fine-tuned / trained to a lower range without loosing too much precision in which case + `force_upcast` can be set to `False` - see: https://huggingface.co/madebyollin/sdxl-vae-fp16-fix + mid_block_add_attention (`bool`, *optional*, default to `True`): + If enabled, the mid_block of the Encoder and Decoder will have attention blocks. If set to false, the + mid_block will only have resnet blocks + """ + + _supports_gradient_checkpointing = True + _no_split_modules = ["BasicTransformerBlock", "ResnetBlock2D"] + + @register_to_config + def __init__( + self, + in_channels: int = 3, + out_channels: int = 3, + down_block_types: Tuple[str] = ("DownEncoderBlock2D",), + up_block_types: Tuple[str] = ("UpDecoderBlock2D",), + block_out_channels: Tuple[int] = (64,), + layers_per_block: int = 1, + act_fn: str = "silu", + latent_channels: int = 4, + norm_num_groups: int = 32, + sample_size: int = 32, + scaling_factor: float = 0.18215, + shift_factor: Optional[float] = None, + latents_mean: Optional[Tuple[float]] = None, + latents_std: Optional[Tuple[float]] = None, + force_upcast: float = True, + use_quant_conv: bool = True, + use_post_quant_conv: bool = True, + mid_block_add_attention: bool = True, + ): + super().__init__() + + # pass init params to Encoder + self.encoder = Encoder( + in_channels=in_channels, + out_channels=latent_channels, + down_block_types=down_block_types, + block_out_channels=block_out_channels, + layers_per_block=layers_per_block, + act_fn=act_fn, + norm_num_groups=norm_num_groups, + double_z=True, + mid_block_add_attention=mid_block_add_attention, + ) + + # pass init params to Decoder + self.decoder = Decoder( + in_channels=latent_channels, + out_channels=out_channels, + up_block_types=up_block_types, + block_out_channels=block_out_channels, + layers_per_block=layers_per_block, + norm_num_groups=norm_num_groups, + act_fn=act_fn, + mid_block_add_attention=mid_block_add_attention, + ) + + self.quant_conv = nn.Conv2d(2 * latent_channels, 2 * latent_channels, 1) if use_quant_conv else None + self.post_quant_conv = nn.Conv2d(latent_channels, latent_channels, 1) if use_post_quant_conv else None + + self.use_slicing = False + self.use_tiling = False + + # only relevant if vae tiling is enabled + self.tile_sample_min_size = self.config.sample_size + sample_size = ( + self.config.sample_size[0] + if isinstance(self.config.sample_size, (list, tuple)) + else self.config.sample_size + ) + self.tile_latent_min_size = int(sample_size / (2 ** (len(self.config.block_out_channels) - 1))) + self.tile_overlap_factor = 0.25 + + def _set_gradient_checkpointing(self, module, value=False): + if isinstance(module, (Encoder, Decoder)): + module.gradient_checkpointing = value + + def enable_tiling(self, use_tiling: bool = True): + r""" + Enable tiled VAE decoding. When this option is enabled, the VAE will split the input tensor into tiles to + compute decoding and encoding in several steps. This is useful for saving a large amount of memory and to allow + processing larger images. + """ + self.use_tiling = use_tiling + + def disable_tiling(self): + r""" + Disable tiled VAE decoding. If `enable_tiling` was previously enabled, this method will go back to computing + decoding in one step. + """ + self.enable_tiling(False) + + def enable_slicing(self): + r""" + Enable sliced VAE decoding. When this option is enabled, the VAE will split the input tensor in slices to + compute decoding in several steps. This is useful to save some memory and allow larger batch sizes. + """ + self.use_slicing = True + + def disable_slicing(self): + r""" + Disable sliced VAE decoding. If `enable_slicing` was previously enabled, this method will go back to computing + decoding in one step. + """ + self.use_slicing = False + + @property + # Copied from diffusers.models.unets.unet_2d_condition.UNet2DConditionModel.attn_processors + def attn_processors(self) -> Dict[str, AttentionProcessor]: + r""" + Returns: + `dict` of attention processors: A dictionary containing all attention processors used in the model with + indexed by its weight name. + """ + # set recursively + processors = {} + + def fn_recursive_add_processors(name: str, module: torch.nn.Module, processors: Dict[str, AttentionProcessor]): + if hasattr(module, "get_processor"): + processors[f"{name}.processor"] = module.get_processor() + + for sub_name, child in module.named_children(): + fn_recursive_add_processors(f"{name}.{sub_name}", child, processors) + + return processors + + for name, module in self.named_children(): + fn_recursive_add_processors(name, module, processors) + + return processors + + # Copied from diffusers.models.unets.unet_2d_condition.UNet2DConditionModel.set_attn_processor + def set_attn_processor(self, processor: Union[AttentionProcessor, Dict[str, AttentionProcessor]]): + r""" + Sets the attention processor to use to compute attention. + + Parameters: + processor (`dict` of `AttentionProcessor` or only `AttentionProcessor`): + The instantiated processor class or a dictionary of processor classes that will be set as the processor + for **all** `Attention` layers. + + If `processor` is a dict, the key needs to define the path to the corresponding cross attention + processor. This is strongly recommended when setting trainable attention processors. + + """ + count = len(self.attn_processors.keys()) + + if isinstance(processor, dict) and len(processor) != count: + raise ValueError( + f"A dict of processors was passed, but the number of processors {len(processor)} does not match the" + f" number of attention layers: {count}. Please make sure to pass {count} processor classes." + ) + + def fn_recursive_attn_processor(name: str, module: torch.nn.Module, processor): + if hasattr(module, "set_processor"): + if not isinstance(processor, dict): + module.set_processor(processor) + else: + module.set_processor(processor.pop(f"{name}.processor")) + + for sub_name, child in module.named_children(): + fn_recursive_attn_processor(f"{name}.{sub_name}", child, processor) + + for name, module in self.named_children(): + fn_recursive_attn_processor(name, module, processor) + + # Copied from diffusers.models.unets.unet_2d_condition.UNet2DConditionModel.set_default_attn_processor + def set_default_attn_processor(self): + """ + Disables custom attention processors and sets the default attention implementation. + """ + if all(proc.__class__ in ADDED_KV_ATTENTION_PROCESSORS for proc in self.attn_processors.values()): + processor = AttnAddedKVProcessor() + elif all(proc.__class__ in CROSS_ATTENTION_PROCESSORS for proc in self.attn_processors.values()): + processor = AttnProcessor() + else: + raise ValueError( + f"Cannot call `set_default_attn_processor` when attention processors are of type {next(iter(self.attn_processors.values()))}" + ) + + self.set_attn_processor(processor) + + def _encode(self, x: torch.Tensor) -> torch.Tensor: + batch_size, num_channels, height, width = x.shape + + if self.use_tiling and (width > self.tile_sample_min_size or height > self.tile_sample_min_size): + return self._tiled_encode(x) + + enc = self.encoder(x) + if self.quant_conv is not None: + enc = self.quant_conv(enc) + + return enc + + @apply_forward_hook + def encode( + self, x: torch.Tensor, return_dict: bool = True + ) -> Union[AutoencoderKLOutput, Tuple[DiagonalGaussianDistribution]]: + """ + Encode a batch of images into latents. + + Args: + x (`torch.Tensor`): Input batch of images. + return_dict (`bool`, *optional*, defaults to `True`): + Whether to return a [`~models.autoencoder_kl.AutoencoderKLOutput`] instead of a plain tuple. + + Returns: + The latent representations of the encoded images. If `return_dict` is True, a + [`~models.autoencoder_kl.AutoencoderKLOutput`] is returned, otherwise a plain `tuple` is returned. + """ + if self.use_slicing and x.shape[0] > 1: + encoded_slices = [self._encode(x_slice) for x_slice in x.split(1)] + h = torch.cat(encoded_slices) + else: + h = self._encode(x) + + posterior = DiagonalGaussianDistribution(h) + + if not return_dict: + return (posterior,) + + return AutoencoderKLOutput(latent_dist=posterior) + + def _decode(self, z: torch.Tensor, return_dict: bool = True) -> Union[DecoderOutput, torch.Tensor]: + if self.use_tiling and (z.shape[-1] > self.tile_latent_min_size or z.shape[-2] > self.tile_latent_min_size): + return self.tiled_decode(z, return_dict=return_dict) + + if self.post_quant_conv is not None: + z = self.post_quant_conv(z) + + dec = self.decoder(z) + + if not return_dict: + return (dec,) + + return DecoderOutput(sample=dec) + + @apply_forward_hook + def decode( + self, z: torch.FloatTensor, return_dict: bool = True, generator=None + ) -> Union[DecoderOutput, torch.FloatTensor]: + """ + Decode a batch of images. + + Args: + z (`torch.Tensor`): Input batch of latent vectors. + return_dict (`bool`, *optional*, defaults to `True`): + Whether to return a [`~models.vae.DecoderOutput`] instead of a plain tuple. + + Returns: + [`~models.vae.DecoderOutput`] or `tuple`: + If return_dict is True, a [`~models.vae.DecoderOutput`] is returned, otherwise a plain `tuple` is + returned. + + """ + if self.use_slicing and z.shape[0] > 1: + decoded_slices = [self._decode(z_slice).sample for z_slice in z.split(1)] + decoded = torch.cat(decoded_slices) + else: + decoded = self._decode(z).sample + + if not return_dict: + return (decoded,) + + return DecoderOutput(sample=decoded) + + def blend_v(self, a: torch.Tensor, b: torch.Tensor, blend_extent: int) -> torch.Tensor: + blend_extent = min(a.shape[2], b.shape[2], blend_extent) + for y in range(blend_extent): + b[:, :, y, :] = a[:, :, -blend_extent + y, :] * (1 - y / blend_extent) + b[:, :, y, :] * (y / blend_extent) + return b + + def blend_h(self, a: torch.Tensor, b: torch.Tensor, blend_extent: int) -> torch.Tensor: + blend_extent = min(a.shape[3], b.shape[3], blend_extent) + for x in range(blend_extent): + b[:, :, :, x] = a[:, :, :, -blend_extent + x] * (1 - x / blend_extent) + b[:, :, :, x] * (x / blend_extent) + return b + + def _tiled_encode(self, x: torch.Tensor) -> torch.Tensor: + r"""Encode a batch of images using a tiled encoder. + + When this option is enabled, the VAE will split the input tensor into tiles to compute encoding in several + steps. This is useful to keep memory use constant regardless of image size. The end result of tiled encoding is + different from non-tiled encoding because each tile uses a different encoder. To avoid tiling artifacts, the + tiles overlap and are blended together to form a smooth output. You may still see tile-sized changes in the + output, but they should be much less noticeable. + + Args: + x (`torch.Tensor`): Input batch of images. + + Returns: + `torch.Tensor`: + The latent representation of the encoded videos. + """ + + overlap_size = int(self.tile_sample_min_size * (1 - self.tile_overlap_factor)) + blend_extent = int(self.tile_latent_min_size * self.tile_overlap_factor) + row_limit = self.tile_latent_min_size - blend_extent + + # Split the image into 512x512 tiles and encode them separately. + rows = [] + for i in range(0, x.shape[2], overlap_size): + row = [] + for j in range(0, x.shape[3], overlap_size): + tile = x[:, :, i : i + self.tile_sample_min_size, j : j + self.tile_sample_min_size] + tile = self.encoder(tile) + if self.config.use_quant_conv: + tile = self.quant_conv(tile) + row.append(tile) + rows.append(row) + result_rows = [] + for i, row in enumerate(rows): + result_row = [] + for j, tile in enumerate(row): + # blend the above tile and the left tile + # to the current tile and add the current tile to the result row + if i > 0: + tile = self.blend_v(rows[i - 1][j], tile, blend_extent) + if j > 0: + tile = self.blend_h(row[j - 1], tile, blend_extent) + result_row.append(tile[:, :, :row_limit, :row_limit]) + result_rows.append(torch.cat(result_row, dim=3)) + + enc = torch.cat(result_rows, dim=2) + return enc + + def tiled_encode(self, x: torch.Tensor, return_dict: bool = True) -> AutoencoderKLOutput: + r"""Encode a batch of images using a tiled encoder. + + When this option is enabled, the VAE will split the input tensor into tiles to compute encoding in several + steps. This is useful to keep memory use constant regardless of image size. The end result of tiled encoding is + different from non-tiled encoding because each tile uses a different encoder. To avoid tiling artifacts, the + tiles overlap and are blended together to form a smooth output. You may still see tile-sized changes in the + output, but they should be much less noticeable. + + Args: + x (`torch.Tensor`): Input batch of images. + return_dict (`bool`, *optional*, defaults to `True`): + Whether or not to return a [`~models.autoencoder_kl.AutoencoderKLOutput`] instead of a plain tuple. + + Returns: + [`~models.autoencoder_kl.AutoencoderKLOutput`] or `tuple`: + If return_dict is True, a [`~models.autoencoder_kl.AutoencoderKLOutput`] is returned, otherwise a plain + `tuple` is returned. + """ + deprecation_message = ( + "The tiled_encode implementation supporting the `return_dict` parameter is deprecated. In the future, the " + "implementation of this method will be replaced with that of `_tiled_encode` and you will no longer be able " + "to pass `return_dict`. You will also have to create a `DiagonalGaussianDistribution()` from the returned value." + ) + deprecate("tiled_encode", "1.0.0", deprecation_message, standard_warn=False) + + overlap_size = int(self.tile_sample_min_size * (1 - self.tile_overlap_factor)) + blend_extent = int(self.tile_latent_min_size * self.tile_overlap_factor) + row_limit = self.tile_latent_min_size - blend_extent + + # Split the image into 512x512 tiles and encode them separately. + rows = [] + for i in range(0, x.shape[2], overlap_size): + row = [] + for j in range(0, x.shape[3], overlap_size): + tile = x[:, :, i : i + self.tile_sample_min_size, j : j + self.tile_sample_min_size] + tile = self.encoder(tile) + if self.config.use_quant_conv: + tile = self.quant_conv(tile) + row.append(tile) + rows.append(row) + result_rows = [] + for i, row in enumerate(rows): + result_row = [] + for j, tile in enumerate(row): + # blend the above tile and the left tile + # to the current tile and add the current tile to the result row + if i > 0: + tile = self.blend_v(rows[i - 1][j], tile, blend_extent) + if j > 0: + tile = self.blend_h(row[j - 1], tile, blend_extent) + result_row.append(tile[:, :, :row_limit, :row_limit]) + result_rows.append(torch.cat(result_row, dim=3)) + + moments = torch.cat(result_rows, dim=2) + posterior = DiagonalGaussianDistribution(moments) + + if not return_dict: + return (posterior,) + + return AutoencoderKLOutput(latent_dist=posterior) + + def tiled_decode(self, z: torch.Tensor, return_dict: bool = True) -> Union[DecoderOutput, torch.Tensor]: + r""" + Decode a batch of images using a tiled decoder. + + Args: + z (`torch.Tensor`): Input batch of latent vectors. + return_dict (`bool`, *optional*, defaults to `True`): + Whether or not to return a [`~models.vae.DecoderOutput`] instead of a plain tuple. + + Returns: + [`~models.vae.DecoderOutput`] or `tuple`: + If return_dict is True, a [`~models.vae.DecoderOutput`] is returned, otherwise a plain `tuple` is + returned. + """ + overlap_size = int(self.tile_latent_min_size * (1 - self.tile_overlap_factor)) + blend_extent = int(self.tile_sample_min_size * self.tile_overlap_factor) + row_limit = self.tile_sample_min_size - blend_extent + + # Split z into overlapping 64x64 tiles and decode them separately. + # The tiles have an overlap to avoid seams between tiles. + rows = [] + for i in range(0, z.shape[2], overlap_size): + row = [] + for j in range(0, z.shape[3], overlap_size): + tile = z[:, :, i : i + self.tile_latent_min_size, j : j + self.tile_latent_min_size] + if self.config.use_post_quant_conv: + tile = self.post_quant_conv(tile) + decoded = self.decoder(tile) + row.append(decoded) + rows.append(row) + result_rows = [] + for i, row in enumerate(rows): + result_row = [] + for j, tile in enumerate(row): + # blend the above tile and the left tile + # to the current tile and add the current tile to the result row + if i > 0: + tile = self.blend_v(rows[i - 1][j], tile, blend_extent) + if j > 0: + tile = self.blend_h(row[j - 1], tile, blend_extent) + result_row.append(tile[:, :, :row_limit, :row_limit]) + result_rows.append(torch.cat(result_row, dim=3)) + + dec = torch.cat(result_rows, dim=2) + if not return_dict: + return (dec,) + + return DecoderOutput(sample=dec) + + def forward( + self, + sample: torch.Tensor, + sample_posterior: bool = False, + return_dict: bool = True, + generator: Optional[torch.Generator] = None, + ) -> Union[DecoderOutput, torch.Tensor]: + r""" + Args: + sample (`torch.Tensor`): Input sample. + sample_posterior (`bool`, *optional*, defaults to `False`): + Whether to sample from the posterior. + return_dict (`bool`, *optional*, defaults to `True`): + Whether or not to return a [`DecoderOutput`] instead of a plain tuple. + """ + x = sample + posterior = self.encode(x).latent_dist + if sample_posterior: + z = posterior.sample(generator=generator) + else: + z = posterior.mode() + dec = self.decode(z).sample + + if not return_dict: + return (dec,) + + return DecoderOutput(sample=dec) + + # Copied from diffusers.models.unets.unet_2d_condition.UNet2DConditionModel.fuse_qkv_projections + def fuse_qkv_projections(self): + """ + Enables fused QKV projections. For self-attention modules, all projection matrices (i.e., query, key, value) + are fused. For cross-attention modules, key and value projection matrices are fused. + + + + This API is 🧪 experimental. + + + """ + self.original_attn_processors = None + + for _, attn_processor in self.attn_processors.items(): + if "Added" in str(attn_processor.__class__.__name__): + raise ValueError("`fuse_qkv_projections()` is not supported for models having added KV projections.") + + self.original_attn_processors = self.attn_processors + + for module in self.modules(): + if isinstance(module, Attention): + module.fuse_projections(fuse=True) + + self.set_attn_processor(FusedAttnProcessor2_0()) + + # Copied from diffusers.models.unets.unet_2d_condition.UNet2DConditionModel.unfuse_qkv_projections + def unfuse_qkv_projections(self): + """Disables the fused QKV projection if enabled. + + + + This API is 🧪 experimental. + + + + """ + if self.original_attn_processors is not None: + self.set_attn_processor(self.original_attn_processors) diff --git a/venv/lib/python3.11/site-packages/diffusers/models/autoencoders/autoencoder_kl_allegro.py b/venv/lib/python3.11/site-packages/diffusers/models/autoencoders/autoencoder_kl_allegro.py new file mode 100644 index 0000000000000000000000000000000000000000..b62ed67ade293f9557bba2923a90fa9571eb16c5 --- /dev/null +++ b/venv/lib/python3.11/site-packages/diffusers/models/autoencoders/autoencoder_kl_allegro.py @@ -0,0 +1,1149 @@ +# Copyright 2024 The RhymesAI and The HuggingFace Team. +# All rights reserved. +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. + +import math +from typing import Optional, Tuple, Union + +import torch +import torch.nn as nn + +from ...configuration_utils import ConfigMixin, register_to_config +from ...utils.accelerate_utils import apply_forward_hook +from ..attention_processor import Attention, SpatialNorm +from ..autoencoders.vae import DecoderOutput, DiagonalGaussianDistribution +from ..downsampling import Downsample2D +from ..modeling_outputs import AutoencoderKLOutput +from ..modeling_utils import ModelMixin +from ..resnet import ResnetBlock2D +from ..upsampling import Upsample2D + + +class AllegroTemporalConvLayer(nn.Module): + r""" + Temporal convolutional layer that can be used for video (sequence of images) input. Code adapted from: + https://github.com/modelscope/modelscope/blob/1509fdb973e5871f37148a4b5e5964cafd43e64d/modelscope/models/multi_modal/video_synthesis/unet_sd.py#L1016 + """ + + def __init__( + self, + in_dim: int, + out_dim: Optional[int] = None, + dropout: float = 0.0, + norm_num_groups: int = 32, + up_sample: bool = False, + down_sample: bool = False, + stride: int = 1, + ) -> None: + super().__init__() + + out_dim = out_dim or in_dim + pad_h = pad_w = int((stride - 1) * 0.5) + pad_t = 0 + + self.down_sample = down_sample + self.up_sample = up_sample + + if down_sample: + self.conv1 = nn.Sequential( + nn.GroupNorm(norm_num_groups, in_dim), + nn.SiLU(), + nn.Conv3d(in_dim, out_dim, (2, stride, stride), stride=(2, 1, 1), padding=(0, pad_h, pad_w)), + ) + elif up_sample: + self.conv1 = nn.Sequential( + nn.GroupNorm(norm_num_groups, in_dim), + nn.SiLU(), + nn.Conv3d(in_dim, out_dim * 2, (1, stride, stride), padding=(0, pad_h, pad_w)), + ) + else: + self.conv1 = nn.Sequential( + nn.GroupNorm(norm_num_groups, in_dim), + nn.SiLU(), + nn.Conv3d(in_dim, out_dim, (3, stride, stride), padding=(pad_t, pad_h, pad_w)), + ) + self.conv2 = nn.Sequential( + nn.GroupNorm(norm_num_groups, out_dim), + nn.SiLU(), + nn.Dropout(dropout), + nn.Conv3d(out_dim, in_dim, (3, stride, stride), padding=(pad_t, pad_h, pad_w)), + ) + self.conv3 = nn.Sequential( + nn.GroupNorm(norm_num_groups, out_dim), + nn.SiLU(), + nn.Dropout(dropout), + nn.Conv3d(out_dim, in_dim, (3, stride, stride), padding=(pad_t, pad_h, pad_h)), + ) + self.conv4 = nn.Sequential( + nn.GroupNorm(norm_num_groups, out_dim), + nn.SiLU(), + nn.Conv3d(out_dim, in_dim, (3, stride, stride), padding=(pad_t, pad_h, pad_h)), + ) + + @staticmethod + def _pad_temporal_dim(hidden_states: torch.Tensor) -> torch.Tensor: + hidden_states = torch.cat((hidden_states[:, :, 0:1], hidden_states), dim=2) + hidden_states = torch.cat((hidden_states, hidden_states[:, :, -1:]), dim=2) + return hidden_states + + def forward(self, hidden_states: torch.Tensor, batch_size: int) -> torch.Tensor: + hidden_states = hidden_states.unflatten(0, (batch_size, -1)).permute(0, 2, 1, 3, 4) + + if self.down_sample: + identity = hidden_states[:, :, ::2] + elif self.up_sample: + identity = hidden_states.repeat_interleave(2, dim=2) + else: + identity = hidden_states + + if self.down_sample or self.up_sample: + hidden_states = self.conv1(hidden_states) + else: + hidden_states = self._pad_temporal_dim(hidden_states) + hidden_states = self.conv1(hidden_states) + + if self.up_sample: + hidden_states = hidden_states.unflatten(1, (2, -1)).permute(0, 2, 3, 1, 4, 5).flatten(2, 3) + + hidden_states = self._pad_temporal_dim(hidden_states) + hidden_states = self.conv2(hidden_states) + + hidden_states = self._pad_temporal_dim(hidden_states) + hidden_states = self.conv3(hidden_states) + + hidden_states = self._pad_temporal_dim(hidden_states) + hidden_states = self.conv4(hidden_states) + + hidden_states = identity + hidden_states + hidden_states = hidden_states.permute(0, 2, 1, 3, 4).flatten(0, 1) + + return hidden_states + + +class AllegroDownBlock3D(nn.Module): + def __init__( + self, + in_channels: int, + out_channels: int, + dropout: float = 0.0, + num_layers: int = 1, + resnet_eps: float = 1e-6, + resnet_time_scale_shift: str = "default", + resnet_act_fn: str = "swish", + resnet_groups: int = 32, + resnet_pre_norm: bool = True, + output_scale_factor: float = 1.0, + spatial_downsample: bool = True, + temporal_downsample: bool = False, + downsample_padding: int = 1, + ): + super().__init__() + + resnets = [] + temp_convs = [] + + for i in range(num_layers): + in_channels = in_channels if i == 0 else out_channels + resnets.append( + ResnetBlock2D( + in_channels=in_channels, + out_channels=out_channels, + temb_channels=None, + eps=resnet_eps, + groups=resnet_groups, + dropout=dropout, + time_embedding_norm=resnet_time_scale_shift, + non_linearity=resnet_act_fn, + output_scale_factor=output_scale_factor, + pre_norm=resnet_pre_norm, + ) + ) + temp_convs.append( + AllegroTemporalConvLayer( + out_channels, + out_channels, + dropout=0.1, + norm_num_groups=resnet_groups, + ) + ) + + self.resnets = nn.ModuleList(resnets) + self.temp_convs = nn.ModuleList(temp_convs) + + if temporal_downsample: + self.temp_convs_down = AllegroTemporalConvLayer( + out_channels, out_channels, dropout=0.1, norm_num_groups=resnet_groups, down_sample=True, stride=3 + ) + self.add_temp_downsample = temporal_downsample + + if spatial_downsample: + self.downsamplers = nn.ModuleList( + [ + Downsample2D( + out_channels, use_conv=True, out_channels=out_channels, padding=downsample_padding, name="op" + ) + ] + ) + else: + self.downsamplers = None + + def forward(self, hidden_states: torch.Tensor) -> torch.Tensor: + batch_size = hidden_states.shape[0] + + hidden_states = hidden_states.permute(0, 2, 1, 3, 4).flatten(0, 1) + + for resnet, temp_conv in zip(self.resnets, self.temp_convs): + hidden_states = resnet(hidden_states, temb=None) + hidden_states = temp_conv(hidden_states, batch_size=batch_size) + + if self.add_temp_downsample: + hidden_states = self.temp_convs_down(hidden_states, batch_size=batch_size) + + if self.downsamplers is not None: + for downsampler in self.downsamplers: + hidden_states = downsampler(hidden_states) + + hidden_states = hidden_states.unflatten(0, (batch_size, -1)).permute(0, 2, 1, 3, 4) + return hidden_states + + +class AllegroUpBlock3D(nn.Module): + def __init__( + self, + in_channels: int, + out_channels: int, + dropout: float = 0.0, + num_layers: int = 1, + resnet_eps: float = 1e-6, + resnet_time_scale_shift: str = "default", # default, spatial + resnet_act_fn: str = "swish", + resnet_groups: int = 32, + resnet_pre_norm: bool = True, + output_scale_factor: float = 1.0, + spatial_upsample: bool = True, + temporal_upsample: bool = False, + temb_channels: Optional[int] = None, + ): + super().__init__() + + resnets = [] + temp_convs = [] + + for i in range(num_layers): + input_channels = in_channels if i == 0 else out_channels + + resnets.append( + ResnetBlock2D( + in_channels=input_channels, + out_channels=out_channels, + temb_channels=temb_channels, + eps=resnet_eps, + groups=resnet_groups, + dropout=dropout, + time_embedding_norm=resnet_time_scale_shift, + non_linearity=resnet_act_fn, + output_scale_factor=output_scale_factor, + pre_norm=resnet_pre_norm, + ) + ) + temp_convs.append( + AllegroTemporalConvLayer( + out_channels, + out_channels, + dropout=0.1, + norm_num_groups=resnet_groups, + ) + ) + + self.resnets = nn.ModuleList(resnets) + self.temp_convs = nn.ModuleList(temp_convs) + + self.add_temp_upsample = temporal_upsample + if temporal_upsample: + self.temp_conv_up = AllegroTemporalConvLayer( + out_channels, out_channels, dropout=0.1, norm_num_groups=resnet_groups, up_sample=True, stride=3 + ) + + if spatial_upsample: + self.upsamplers = nn.ModuleList([Upsample2D(out_channels, use_conv=True, out_channels=out_channels)]) + else: + self.upsamplers = None + + def forward(self, hidden_states: torch.Tensor) -> torch.Tensor: + batch_size = hidden_states.shape[0] + + hidden_states = hidden_states.permute(0, 2, 1, 3, 4).flatten(0, 1) + + for resnet, temp_conv in zip(self.resnets, self.temp_convs): + hidden_states = resnet(hidden_states, temb=None) + hidden_states = temp_conv(hidden_states, batch_size=batch_size) + + if self.add_temp_upsample: + hidden_states = self.temp_conv_up(hidden_states, batch_size=batch_size) + + if self.upsamplers is not None: + for upsampler in self.upsamplers: + hidden_states = upsampler(hidden_states) + + hidden_states = hidden_states.unflatten(0, (batch_size, -1)).permute(0, 2, 1, 3, 4) + return hidden_states + + +class AllegroMidBlock3DConv(nn.Module): + def __init__( + self, + in_channels: int, + temb_channels: int, + dropout: float = 0.0, + num_layers: int = 1, + resnet_eps: float = 1e-6, + resnet_time_scale_shift: str = "default", # default, spatial + resnet_act_fn: str = "swish", + resnet_groups: int = 32, + resnet_pre_norm: bool = True, + add_attention: bool = True, + attention_head_dim: int = 1, + output_scale_factor: float = 1.0, + ): + super().__init__() + + # there is always at least one resnet + resnets = [ + ResnetBlock2D( + in_channels=in_channels, + out_channels=in_channels, + temb_channels=temb_channels, + eps=resnet_eps, + groups=resnet_groups, + dropout=dropout, + time_embedding_norm=resnet_time_scale_shift, + non_linearity=resnet_act_fn, + output_scale_factor=output_scale_factor, + pre_norm=resnet_pre_norm, + ) + ] + temp_convs = [ + AllegroTemporalConvLayer( + in_channels, + in_channels, + dropout=0.1, + norm_num_groups=resnet_groups, + ) + ] + attentions = [] + + if attention_head_dim is None: + attention_head_dim = in_channels + + for _ in range(num_layers): + if add_attention: + attentions.append( + Attention( + in_channels, + heads=in_channels // attention_head_dim, + dim_head=attention_head_dim, + rescale_output_factor=output_scale_factor, + eps=resnet_eps, + norm_num_groups=resnet_groups if resnet_time_scale_shift == "default" else None, + spatial_norm_dim=temb_channels if resnet_time_scale_shift == "spatial" else None, + residual_connection=True, + bias=True, + upcast_softmax=True, + _from_deprecated_attn_block=True, + ) + ) + else: + attentions.append(None) + + resnets.append( + ResnetBlock2D( + in_channels=in_channels, + out_channels=in_channels, + temb_channels=temb_channels, + eps=resnet_eps, + groups=resnet_groups, + dropout=dropout, + time_embedding_norm=resnet_time_scale_shift, + non_linearity=resnet_act_fn, + output_scale_factor=output_scale_factor, + pre_norm=resnet_pre_norm, + ) + ) + + temp_convs.append( + AllegroTemporalConvLayer( + in_channels, + in_channels, + dropout=0.1, + norm_num_groups=resnet_groups, + ) + ) + + self.resnets = nn.ModuleList(resnets) + self.temp_convs = nn.ModuleList(temp_convs) + self.attentions = nn.ModuleList(attentions) + + def forward(self, hidden_states: torch.Tensor) -> torch.Tensor: + batch_size = hidden_states.shape[0] + + hidden_states = hidden_states.permute(0, 2, 1, 3, 4).flatten(0, 1) + hidden_states = self.resnets[0](hidden_states, temb=None) + + hidden_states = self.temp_convs[0](hidden_states, batch_size=batch_size) + + for attn, resnet, temp_conv in zip(self.attentions, self.resnets[1:], self.temp_convs[1:]): + hidden_states = attn(hidden_states) + hidden_states = resnet(hidden_states, temb=None) + hidden_states = temp_conv(hidden_states, batch_size=batch_size) + + hidden_states = hidden_states.unflatten(0, (batch_size, -1)).permute(0, 2, 1, 3, 4) + return hidden_states + + +class AllegroEncoder3D(nn.Module): + def __init__( + self, + in_channels: int = 3, + out_channels: int = 3, + down_block_types: Tuple[str, ...] = ( + "AllegroDownBlock3D", + "AllegroDownBlock3D", + "AllegroDownBlock3D", + "AllegroDownBlock3D", + ), + block_out_channels: Tuple[int, ...] = (128, 256, 512, 512), + temporal_downsample_blocks: Tuple[bool, ...] = [True, True, False, False], + layers_per_block: int = 2, + norm_num_groups: int = 32, + act_fn: str = "silu", + double_z: bool = True, + ): + super().__init__() + + self.conv_in = nn.Conv2d( + in_channels, + block_out_channels[0], + kernel_size=3, + stride=1, + padding=1, + ) + + self.temp_conv_in = nn.Conv3d( + in_channels=block_out_channels[0], + out_channels=block_out_channels[0], + kernel_size=(3, 1, 1), + padding=(1, 0, 0), + ) + + self.down_blocks = nn.ModuleList([]) + + # down + output_channel = block_out_channels[0] + for i, down_block_type in enumerate(down_block_types): + input_channel = output_channel + output_channel = block_out_channels[i] + is_final_block = i == len(block_out_channels) - 1 + + if down_block_type == "AllegroDownBlock3D": + down_block = AllegroDownBlock3D( + num_layers=layers_per_block, + in_channels=input_channel, + out_channels=output_channel, + spatial_downsample=not is_final_block, + temporal_downsample=temporal_downsample_blocks[i], + resnet_eps=1e-6, + downsample_padding=0, + resnet_act_fn=act_fn, + resnet_groups=norm_num_groups, + ) + else: + raise ValueError("Invalid `down_block_type` encountered. Must be `AllegroDownBlock3D`") + + self.down_blocks.append(down_block) + + # mid + self.mid_block = AllegroMidBlock3DConv( + in_channels=block_out_channels[-1], + resnet_eps=1e-6, + resnet_act_fn=act_fn, + output_scale_factor=1, + resnet_time_scale_shift="default", + attention_head_dim=block_out_channels[-1], + resnet_groups=norm_num_groups, + temb_channels=None, + ) + + # out + self.conv_norm_out = nn.GroupNorm(num_channels=block_out_channels[-1], num_groups=norm_num_groups, eps=1e-6) + self.conv_act = nn.SiLU() + + conv_out_channels = 2 * out_channels if double_z else out_channels + + self.temp_conv_out = nn.Conv3d(block_out_channels[-1], block_out_channels[-1], (3, 1, 1), padding=(1, 0, 0)) + self.conv_out = nn.Conv2d(block_out_channels[-1], conv_out_channels, 3, padding=1) + + self.gradient_checkpointing = False + + def forward(self, sample: torch.Tensor) -> torch.Tensor: + batch_size = sample.shape[0] + + sample = sample.permute(0, 2, 1, 3, 4).flatten(0, 1) + sample = self.conv_in(sample) + + sample = sample.unflatten(0, (batch_size, -1)).permute(0, 2, 1, 3, 4) + residual = sample + sample = self.temp_conv_in(sample) + sample = sample + residual + + if torch.is_grad_enabled() and self.gradient_checkpointing: + + def create_custom_forward(module): + def custom_forward(*inputs): + return module(*inputs) + + return custom_forward + + # Down blocks + for down_block in self.down_blocks: + sample = torch.utils.checkpoint.checkpoint(create_custom_forward(down_block), sample) + + # Mid block + sample = torch.utils.checkpoint.checkpoint(create_custom_forward(self.mid_block), sample) + else: + # Down blocks + for down_block in self.down_blocks: + sample = down_block(sample) + + # Mid block + sample = self.mid_block(sample) + + # Post process + sample = sample.permute(0, 2, 1, 3, 4).flatten(0, 1) + sample = self.conv_norm_out(sample) + sample = self.conv_act(sample) + + sample = sample.unflatten(0, (batch_size, -1)).permute(0, 2, 1, 3, 4) + residual = sample + sample = self.temp_conv_out(sample) + sample = sample + residual + + sample = sample.permute(0, 2, 1, 3, 4).flatten(0, 1) + sample = self.conv_out(sample) + + sample = sample.unflatten(0, (batch_size, -1)).permute(0, 2, 1, 3, 4) + return sample + + +class AllegroDecoder3D(nn.Module): + def __init__( + self, + in_channels: int = 4, + out_channels: int = 3, + up_block_types: Tuple[str, ...] = ( + "AllegroUpBlock3D", + "AllegroUpBlock3D", + "AllegroUpBlock3D", + "AllegroUpBlock3D", + ), + temporal_upsample_blocks: Tuple[bool, ...] = [False, True, True, False], + block_out_channels: Tuple[int, ...] = (128, 256, 512, 512), + layers_per_block: int = 2, + norm_num_groups: int = 32, + act_fn: str = "silu", + norm_type: str = "group", # group, spatial + ): + super().__init__() + + self.conv_in = nn.Conv2d( + in_channels, + block_out_channels[-1], + kernel_size=3, + stride=1, + padding=1, + ) + + self.temp_conv_in = nn.Conv3d(block_out_channels[-1], block_out_channels[-1], (3, 1, 1), padding=(1, 0, 0)) + + self.mid_block = None + self.up_blocks = nn.ModuleList([]) + + temb_channels = in_channels if norm_type == "spatial" else None + + # mid + self.mid_block = AllegroMidBlock3DConv( + in_channels=block_out_channels[-1], + resnet_eps=1e-6, + resnet_act_fn=act_fn, + output_scale_factor=1, + resnet_time_scale_shift="default" if norm_type == "group" else norm_type, + attention_head_dim=block_out_channels[-1], + resnet_groups=norm_num_groups, + temb_channels=temb_channels, + ) + + # up + reversed_block_out_channels = list(reversed(block_out_channels)) + output_channel = reversed_block_out_channels[0] + for i, up_block_type in enumerate(up_block_types): + prev_output_channel = output_channel + output_channel = reversed_block_out_channels[i] + + is_final_block = i == len(block_out_channels) - 1 + + if up_block_type == "AllegroUpBlock3D": + up_block = AllegroUpBlock3D( + num_layers=layers_per_block + 1, + in_channels=prev_output_channel, + out_channels=output_channel, + spatial_upsample=not is_final_block, + temporal_upsample=temporal_upsample_blocks[i], + resnet_eps=1e-6, + resnet_act_fn=act_fn, + resnet_groups=norm_num_groups, + temb_channels=temb_channels, + resnet_time_scale_shift=norm_type, + ) + else: + raise ValueError("Invalid `UP_block_type` encountered. Must be `AllegroUpBlock3D`") + + self.up_blocks.append(up_block) + prev_output_channel = output_channel + + # out + if norm_type == "spatial": + self.conv_norm_out = SpatialNorm(block_out_channels[0], temb_channels) + else: + self.conv_norm_out = nn.GroupNorm(num_channels=block_out_channels[0], num_groups=norm_num_groups, eps=1e-6) + + self.conv_act = nn.SiLU() + + self.temp_conv_out = nn.Conv3d(block_out_channels[0], block_out_channels[0], (3, 1, 1), padding=(1, 0, 0)) + self.conv_out = nn.Conv2d(block_out_channels[0], out_channels, 3, padding=1) + + self.gradient_checkpointing = False + + def forward(self, sample: torch.Tensor) -> torch.Tensor: + batch_size = sample.shape[0] + + sample = sample.permute(0, 2, 1, 3, 4).flatten(0, 1) + sample = self.conv_in(sample) + + sample = sample.unflatten(0, (batch_size, -1)).permute(0, 2, 1, 3, 4) + residual = sample + sample = self.temp_conv_in(sample) + sample = sample + residual + + upscale_dtype = next(iter(self.up_blocks.parameters())).dtype + + if torch.is_grad_enabled() and self.gradient_checkpointing: + + def create_custom_forward(module): + def custom_forward(*inputs): + return module(*inputs) + + return custom_forward + + # Mid block + sample = torch.utils.checkpoint.checkpoint(create_custom_forward(self.mid_block), sample) + + # Up blocks + for up_block in self.up_blocks: + sample = torch.utils.checkpoint.checkpoint(create_custom_forward(up_block), sample) + + else: + # Mid block + sample = self.mid_block(sample) + sample = sample.to(upscale_dtype) + + # Up blocks + for up_block in self.up_blocks: + sample = up_block(sample) + + # Post process + sample = sample.permute(0, 2, 1, 3, 4).flatten(0, 1) + sample = self.conv_norm_out(sample) + sample = self.conv_act(sample) + + sample = sample.unflatten(0, (batch_size, -1)).permute(0, 2, 1, 3, 4) + residual = sample + sample = self.temp_conv_out(sample) + sample = sample + residual + + sample = sample.permute(0, 2, 1, 3, 4).flatten(0, 1) + sample = self.conv_out(sample) + + sample = sample.unflatten(0, (batch_size, -1)).permute(0, 2, 1, 3, 4) + return sample + + +class AutoencoderKLAllegro(ModelMixin, ConfigMixin): + r""" + A VAE model with KL loss for encoding videos into latents and decoding latent representations into videos. Used in + [Allegro](https://github.com/rhymes-ai/Allegro). + + This model inherits from [`ModelMixin`]. Check the superclass documentation for it's generic methods implemented + for all models (such as downloading or saving). + + Parameters: + in_channels (int, defaults to `3`): + Number of channels in the input image. + out_channels (int, defaults to `3`): + Number of channels in the output. + down_block_types (`Tuple[str, ...]`, defaults to `("AllegroDownBlock3D", "AllegroDownBlock3D", "AllegroDownBlock3D", "AllegroDownBlock3D")`): + Tuple of strings denoting which types of down blocks to use. + up_block_types (`Tuple[str, ...]`, defaults to `("AllegroUpBlock3D", "AllegroUpBlock3D", "AllegroUpBlock3D", "AllegroUpBlock3D")`): + Tuple of strings denoting which types of up blocks to use. + block_out_channels (`Tuple[int, ...]`, defaults to `(128, 256, 512, 512)`): + Tuple of integers denoting number of output channels in each block. + temporal_downsample_blocks (`Tuple[bool, ...]`, defaults to `(True, True, False, False)`): + Tuple of booleans denoting which blocks to enable temporal downsampling in. + latent_channels (`int`, defaults to `4`): + Number of channels in latents. + layers_per_block (`int`, defaults to `2`): + Number of resnet or attention or temporal convolution layers per down/up block. + act_fn (`str`, defaults to `"silu"`): + The activation function to use. + norm_num_groups (`int`, defaults to `32`): + Number of groups to use in normalization layers. + temporal_compression_ratio (`int`, defaults to `4`): + Ratio by which temporal dimension of samples are compressed. + sample_size (`int`, defaults to `320`): + Default latent size. + scaling_factor (`float`, defaults to `0.13235`): + The component-wise standard deviation of the trained latent space computed using the first batch of the + training set. This is used to scale the latent space to have unit variance when training the diffusion + model. The latents are scaled with the formula `z = z * scaling_factor` before being passed to the + diffusion model. When decoding, the latents are scaled back to the original scale with the formula: `z = 1 + / scaling_factor * z`. For more details, refer to sections 4.3.2 and D.1 of the [High-Resolution Image + Synthesis with Latent Diffusion Models](https://arxiv.org/abs/2112.10752) paper. + force_upcast (`bool`, default to `True`): + If enabled it will force the VAE to run in float32 for high image resolution pipelines, such as SD-XL. VAE + can be fine-tuned / trained to a lower range without loosing too much precision in which case + `force_upcast` can be set to `False` - see: https://huggingface.co/madebyollin/sdxl-vae-fp16-fix + """ + + _supports_gradient_checkpointing = True + + @register_to_config + def __init__( + self, + in_channels: int = 3, + out_channels: int = 3, + down_block_types: Tuple[str, ...] = ( + "AllegroDownBlock3D", + "AllegroDownBlock3D", + "AllegroDownBlock3D", + "AllegroDownBlock3D", + ), + up_block_types: Tuple[str, ...] = ( + "AllegroUpBlock3D", + "AllegroUpBlock3D", + "AllegroUpBlock3D", + "AllegroUpBlock3D", + ), + block_out_channels: Tuple[int, ...] = (128, 256, 512, 512), + temporal_downsample_blocks: Tuple[bool, ...] = (True, True, False, False), + temporal_upsample_blocks: Tuple[bool, ...] = (False, True, True, False), + latent_channels: int = 4, + layers_per_block: int = 2, + act_fn: str = "silu", + norm_num_groups: int = 32, + temporal_compression_ratio: float = 4, + sample_size: int = 320, + scaling_factor: float = 0.13, + force_upcast: bool = True, + ) -> None: + super().__init__() + + self.encoder = AllegroEncoder3D( + in_channels=in_channels, + out_channels=latent_channels, + down_block_types=down_block_types, + temporal_downsample_blocks=temporal_downsample_blocks, + block_out_channels=block_out_channels, + layers_per_block=layers_per_block, + act_fn=act_fn, + norm_num_groups=norm_num_groups, + double_z=True, + ) + self.decoder = AllegroDecoder3D( + in_channels=latent_channels, + out_channels=out_channels, + up_block_types=up_block_types, + temporal_upsample_blocks=temporal_upsample_blocks, + block_out_channels=block_out_channels, + layers_per_block=layers_per_block, + norm_num_groups=norm_num_groups, + act_fn=act_fn, + ) + self.quant_conv = nn.Conv2d(2 * latent_channels, 2 * latent_channels, 1) + self.post_quant_conv = nn.Conv2d(latent_channels, latent_channels, 1) + + # TODO(aryan): For the 1.0.0 refactor, `temporal_compression_ratio` can be inferred directly and we don't need + # to use a specific parameter here or in other VAEs. + + self.use_slicing = False + self.use_tiling = False + + self.spatial_compression_ratio = 2 ** (len(block_out_channels) - 1) + self.tile_overlap_t = 8 + self.tile_overlap_h = 120 + self.tile_overlap_w = 80 + sample_frames = 24 + + self.kernel = (sample_frames, sample_size, sample_size) + self.stride = ( + sample_frames - self.tile_overlap_t, + sample_size - self.tile_overlap_h, + sample_size - self.tile_overlap_w, + ) + + def _set_gradient_checkpointing(self, module, value=False): + if isinstance(module, (AllegroEncoder3D, AllegroDecoder3D)): + module.gradient_checkpointing = value + + def enable_tiling(self) -> None: + r""" + Enable tiled VAE decoding. When this option is enabled, the VAE will split the input tensor into tiles to + compute decoding and encoding in several steps. This is useful for saving a large amount of memory and to allow + processing larger images. + """ + self.use_tiling = True + + def disable_tiling(self) -> None: + r""" + Disable tiled VAE decoding. If `enable_tiling` was previously enabled, this method will go back to computing + decoding in one step. + """ + self.use_tiling = False + + def enable_slicing(self) -> None: + r""" + Enable sliced VAE decoding. When this option is enabled, the VAE will split the input tensor in slices to + compute decoding in several steps. This is useful to save some memory and allow larger batch sizes. + """ + self.use_slicing = True + + def disable_slicing(self) -> None: + r""" + Disable sliced VAE decoding. If `enable_slicing` was previously enabled, this method will go back to computing + decoding in one step. + """ + self.use_slicing = False + + def _encode(self, x: torch.Tensor) -> torch.Tensor: + # TODO(aryan) + # if self.use_tiling and (width > self.tile_sample_min_width or height > self.tile_sample_min_height): + if self.use_tiling: + return self.tiled_encode(x) + + raise NotImplementedError("Encoding without tiling has not been implemented yet.") + + @apply_forward_hook + def encode( + self, x: torch.Tensor, return_dict: bool = True + ) -> Union[AutoencoderKLOutput, Tuple[DiagonalGaussianDistribution]]: + r""" + Encode a batch of videos into latents. + + Args: + x (`torch.Tensor`): + Input batch of videos. + return_dict (`bool`, defaults to `True`): + Whether to return a [`~models.autoencoder_kl.AutoencoderKLOutput`] instead of a plain tuple. + + Returns: + The latent representations of the encoded videos. If `return_dict` is True, a + [`~models.autoencoder_kl.AutoencoderKLOutput`] is returned, otherwise a plain `tuple` is returned. + """ + if self.use_slicing and x.shape[0] > 1: + encoded_slices = [self._encode(x_slice) for x_slice in x.split(1)] + h = torch.cat(encoded_slices) + else: + h = self._encode(x) + + posterior = DiagonalGaussianDistribution(h) + + if not return_dict: + return (posterior,) + return AutoencoderKLOutput(latent_dist=posterior) + + def _decode(self, z: torch.Tensor) -> torch.Tensor: + # TODO(aryan): refactor tiling implementation + # if self.use_tiling and (width > self.tile_latent_min_width or height > self.tile_latent_min_height): + if self.use_tiling: + return self.tiled_decode(z) + + raise NotImplementedError("Decoding without tiling has not been implemented yet.") + + @apply_forward_hook + def decode(self, z: torch.Tensor, return_dict: bool = True) -> Union[DecoderOutput, torch.Tensor]: + """ + Decode a batch of videos. + + Args: + z (`torch.Tensor`): + Input batch of latent vectors. + return_dict (`bool`, defaults to `True`): + Whether to return a [`~models.vae.DecoderOutput`] instead of a plain tuple. + + Returns: + [`~models.vae.DecoderOutput`] or `tuple`: + If return_dict is True, a [`~models.vae.DecoderOutput`] is returned, otherwise a plain `tuple` is + returned. + """ + if self.use_slicing and z.shape[0] > 1: + decoded_slices = [self._decode(z_slice) for z_slice in z.split(1)] + decoded = torch.cat(decoded_slices) + else: + decoded = self._decode(z) + + if not return_dict: + return (decoded,) + return DecoderOutput(sample=decoded) + + def tiled_encode(self, x: torch.Tensor) -> torch.Tensor: + local_batch_size = 1 + rs = self.spatial_compression_ratio + rt = self.config.temporal_compression_ratio + + batch_size, num_channels, num_frames, height, width = x.shape + + output_num_frames = math.floor((num_frames - self.kernel[0]) / self.stride[0]) + 1 + output_height = math.floor((height - self.kernel[1]) / self.stride[1]) + 1 + output_width = math.floor((width - self.kernel[2]) / self.stride[2]) + 1 + + count = 0 + output_latent = x.new_zeros( + ( + output_num_frames * output_height * output_width, + 2 * self.config.latent_channels, + self.kernel[0] // rt, + self.kernel[1] // rs, + self.kernel[2] // rs, + ) + ) + vae_batch_input = x.new_zeros((local_batch_size, num_channels, self.kernel[0], self.kernel[1], self.kernel[2])) + + for i in range(output_num_frames): + for j in range(output_height): + for k in range(output_width): + n_start, n_end = i * self.stride[0], i * self.stride[0] + self.kernel[0] + h_start, h_end = j * self.stride[1], j * self.stride[1] + self.kernel[1] + w_start, w_end = k * self.stride[2], k * self.stride[2] + self.kernel[2] + + video_cube = x[:, :, n_start:n_end, h_start:h_end, w_start:w_end] + vae_batch_input[count % local_batch_size] = video_cube + + if ( + count % local_batch_size == local_batch_size - 1 + or count == output_num_frames * output_height * output_width - 1 + ): + latent = self.encoder(vae_batch_input) + + if ( + count == output_num_frames * output_height * output_width - 1 + and count % local_batch_size != local_batch_size - 1 + ): + output_latent[count - count % local_batch_size :] = latent[: count % local_batch_size + 1] + else: + output_latent[count - local_batch_size + 1 : count + 1] = latent + + vae_batch_input = x.new_zeros( + (local_batch_size, num_channels, self.kernel[0], self.kernel[1], self.kernel[2]) + ) + + count += 1 + + latent = x.new_zeros( + (batch_size, 2 * self.config.latent_channels, num_frames // rt, height // rs, width // rs) + ) + output_kernel = self.kernel[0] // rt, self.kernel[1] // rs, self.kernel[2] // rs + output_stride = self.stride[0] // rt, self.stride[1] // rs, self.stride[2] // rs + output_overlap = ( + output_kernel[0] - output_stride[0], + output_kernel[1] - output_stride[1], + output_kernel[2] - output_stride[2], + ) + + for i in range(output_num_frames): + n_start, n_end = i * output_stride[0], i * output_stride[0] + output_kernel[0] + for j in range(output_height): + h_start, h_end = j * output_stride[1], j * output_stride[1] + output_kernel[1] + for k in range(output_width): + w_start, w_end = k * output_stride[2], k * output_stride[2] + output_kernel[2] + latent_mean = _prepare_for_blend( + (i, output_num_frames, output_overlap[0]), + (j, output_height, output_overlap[1]), + (k, output_width, output_overlap[2]), + output_latent[i * output_height * output_width + j * output_width + k].unsqueeze(0), + ) + latent[:, :, n_start:n_end, h_start:h_end, w_start:w_end] += latent_mean + + latent = latent.permute(0, 2, 1, 3, 4).flatten(0, 1) + latent = self.quant_conv(latent) + latent = latent.unflatten(0, (batch_size, -1)).permute(0, 2, 1, 3, 4) + return latent + + def tiled_decode(self, z: torch.Tensor) -> torch.Tensor: + local_batch_size = 1 + rs = self.spatial_compression_ratio + rt = self.config.temporal_compression_ratio + + latent_kernel = self.kernel[0] // rt, self.kernel[1] // rs, self.kernel[2] // rs + latent_stride = self.stride[0] // rt, self.stride[1] // rs, self.stride[2] // rs + + batch_size, num_channels, num_frames, height, width = z.shape + + ## post quant conv (a mapping) + z = z.permute(0, 2, 1, 3, 4).flatten(0, 1) + z = self.post_quant_conv(z) + z = z.unflatten(0, (batch_size, -1)).permute(0, 2, 1, 3, 4) + + output_num_frames = math.floor((num_frames - latent_kernel[0]) / latent_stride[0]) + 1 + output_height = math.floor((height - latent_kernel[1]) / latent_stride[1]) + 1 + output_width = math.floor((width - latent_kernel[2]) / latent_stride[2]) + 1 + + count = 0 + decoded_videos = z.new_zeros( + ( + output_num_frames * output_height * output_width, + self.config.out_channels, + self.kernel[0], + self.kernel[1], + self.kernel[2], + ) + ) + vae_batch_input = z.new_zeros( + (local_batch_size, num_channels, latent_kernel[0], latent_kernel[1], latent_kernel[2]) + ) + + for i in range(output_num_frames): + for j in range(output_height): + for k in range(output_width): + n_start, n_end = i * latent_stride[0], i * latent_stride[0] + latent_kernel[0] + h_start, h_end = j * latent_stride[1], j * latent_stride[1] + latent_kernel[1] + w_start, w_end = k * latent_stride[2], k * latent_stride[2] + latent_kernel[2] + + current_latent = z[:, :, n_start:n_end, h_start:h_end, w_start:w_end] + vae_batch_input[count % local_batch_size] = current_latent + + if ( + count % local_batch_size == local_batch_size - 1 + or count == output_num_frames * output_height * output_width - 1 + ): + current_video = self.decoder(vae_batch_input) + + if ( + count == output_num_frames * output_height * output_width - 1 + and count % local_batch_size != local_batch_size - 1 + ): + decoded_videos[count - count % local_batch_size :] = current_video[ + : count % local_batch_size + 1 + ] + else: + decoded_videos[count - local_batch_size + 1 : count + 1] = current_video + + vae_batch_input = z.new_zeros( + (local_batch_size, num_channels, latent_kernel[0], latent_kernel[1], latent_kernel[2]) + ) + + count += 1 + + video = z.new_zeros((batch_size, self.config.out_channels, num_frames * rt, height * rs, width * rs)) + video_overlap = ( + self.kernel[0] - self.stride[0], + self.kernel[1] - self.stride[1], + self.kernel[2] - self.stride[2], + ) + + for i in range(output_num_frames): + n_start, n_end = i * self.stride[0], i * self.stride[0] + self.kernel[0] + for j in range(output_height): + h_start, h_end = j * self.stride[1], j * self.stride[1] + self.kernel[1] + for k in range(output_width): + w_start, w_end = k * self.stride[2], k * self.stride[2] + self.kernel[2] + out_video_blend = _prepare_for_blend( + (i, output_num_frames, video_overlap[0]), + (j, output_height, video_overlap[1]), + (k, output_width, video_overlap[2]), + decoded_videos[i * output_height * output_width + j * output_width + k].unsqueeze(0), + ) + video[:, :, n_start:n_end, h_start:h_end, w_start:w_end] += out_video_blend + + video = video.permute(0, 2, 1, 3, 4).contiguous() + return video + + def forward( + self, + sample: torch.Tensor, + sample_posterior: bool = False, + return_dict: bool = True, + generator: Optional[torch.Generator] = None, + ) -> Union[DecoderOutput, torch.Tensor]: + r""" + Args: + sample (`torch.Tensor`): Input sample. + sample_posterior (`bool`, *optional*, defaults to `False`): + Whether to sample from the posterior. + return_dict (`bool`, *optional*, defaults to `True`): + Whether or not to return a [`DecoderOutput`] instead of a plain tuple. + generator (`torch.Generator`, *optional*): + PyTorch random number generator. + """ + x = sample + posterior = self.encode(x).latent_dist + if sample_posterior: + z = posterior.sample(generator=generator) + else: + z = posterior.mode() + dec = self.decode(z).sample + + if not return_dict: + return (dec,) + + return DecoderOutput(sample=dec) + + +def _prepare_for_blend(n_param, h_param, w_param, x): + # TODO(aryan): refactor + n, n_max, overlap_n = n_param + h, h_max, overlap_h = h_param + w, w_max, overlap_w = w_param + if overlap_n > 0: + if n > 0: # the head overlap part decays from 0 to 1 + x[:, :, 0:overlap_n, :, :] = x[:, :, 0:overlap_n, :, :] * ( + torch.arange(0, overlap_n).float().to(x.device) / overlap_n + ).reshape(overlap_n, 1, 1) + if n < n_max - 1: # the tail overlap part decays from 1 to 0 + x[:, :, -overlap_n:, :, :] = x[:, :, -overlap_n:, :, :] * ( + 1 - torch.arange(0, overlap_n).float().to(x.device) / overlap_n + ).reshape(overlap_n, 1, 1) + if h > 0: + x[:, :, :, 0:overlap_h, :] = x[:, :, :, 0:overlap_h, :] * ( + torch.arange(0, overlap_h).float().to(x.device) / overlap_h + ).reshape(overlap_h, 1) + if h < h_max - 1: + x[:, :, :, -overlap_h:, :] = x[:, :, :, -overlap_h:, :] * ( + 1 - torch.arange(0, overlap_h).float().to(x.device) / overlap_h + ).reshape(overlap_h, 1) + if w > 0: + x[:, :, :, :, 0:overlap_w] = x[:, :, :, :, 0:overlap_w] * ( + torch.arange(0, overlap_w).float().to(x.device) / overlap_w + ) + if w < w_max - 1: + x[:, :, :, :, -overlap_w:] = x[:, :, :, :, -overlap_w:] * ( + 1 - torch.arange(0, overlap_w).float().to(x.device) / overlap_w + ) + return x diff --git a/venv/lib/python3.11/site-packages/diffusers/models/autoencoders/autoencoder_kl_cogvideox.py b/venv/lib/python3.11/site-packages/diffusers/models/autoencoders/autoencoder_kl_cogvideox.py new file mode 100644 index 0000000000000000000000000000000000000000..941b3eb07f1049e2eb7a9ad3a67b933430e0fcc1 --- /dev/null +++ b/venv/lib/python3.11/site-packages/diffusers/models/autoencoders/autoencoder_kl_cogvideox.py @@ -0,0 +1,1482 @@ +# Copyright 2024 The CogVideoX team, Tsinghua University & ZhipuAI and The HuggingFace Team. +# All rights reserved. +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. + +from typing import Dict, Optional, Tuple, Union + +import numpy as np +import torch +import torch.nn as nn +import torch.nn.functional as F + +from ...configuration_utils import ConfigMixin, register_to_config +from ...loaders.single_file_model import FromOriginalModelMixin +from ...utils import logging +from ...utils.accelerate_utils import apply_forward_hook +from ..activations import get_activation +from ..downsampling import CogVideoXDownsample3D +from ..modeling_outputs import AutoencoderKLOutput +from ..modeling_utils import ModelMixin +from ..upsampling import CogVideoXUpsample3D +from .vae import DecoderOutput, DiagonalGaussianDistribution + + +logger = logging.get_logger(__name__) # pylint: disable=invalid-name + + +class CogVideoXSafeConv3d(nn.Conv3d): + r""" + A 3D convolution layer that splits the input tensor into smaller parts to avoid OOM in CogVideoX Model. + """ + + def forward(self, input: torch.Tensor) -> torch.Tensor: + memory_count = ( + (input.shape[0] * input.shape[1] * input.shape[2] * input.shape[3] * input.shape[4]) * 2 / 1024**3 + ) + + # Set to 2GB, suitable for CuDNN + if memory_count > 2: + kernel_size = self.kernel_size[0] + part_num = int(memory_count / 2) + 1 + input_chunks = torch.chunk(input, part_num, dim=2) + + if kernel_size > 1: + input_chunks = [input_chunks[0]] + [ + torch.cat((input_chunks[i - 1][:, :, -kernel_size + 1 :], input_chunks[i]), dim=2) + for i in range(1, len(input_chunks)) + ] + + output_chunks = [] + for input_chunk in input_chunks: + output_chunks.append(super().forward(input_chunk)) + output = torch.cat(output_chunks, dim=2) + return output + else: + return super().forward(input) + + +class CogVideoXCausalConv3d(nn.Module): + r"""A 3D causal convolution layer that pads the input tensor to ensure causality in CogVideoX Model. + + Args: + in_channels (`int`): Number of channels in the input tensor. + out_channels (`int`): Number of output channels produced by the convolution. + kernel_size (`int` or `Tuple[int, int, int]`): Kernel size of the convolutional kernel. + stride (`int`, defaults to `1`): Stride of the convolution. + dilation (`int`, defaults to `1`): Dilation rate of the convolution. + pad_mode (`str`, defaults to `"constant"`): Padding mode. + """ + + def __init__( + self, + in_channels: int, + out_channels: int, + kernel_size: Union[int, Tuple[int, int, int]], + stride: int = 1, + dilation: int = 1, + pad_mode: str = "constant", + ): + super().__init__() + + if isinstance(kernel_size, int): + kernel_size = (kernel_size,) * 3 + + time_kernel_size, height_kernel_size, width_kernel_size = kernel_size + + # TODO(aryan): configure calculation based on stride and dilation in the future. + # Since CogVideoX does not use it, it is currently tailored to "just work" with Mochi + time_pad = time_kernel_size - 1 + height_pad = (height_kernel_size - 1) // 2 + width_pad = (width_kernel_size - 1) // 2 + + self.pad_mode = pad_mode + self.height_pad = height_pad + self.width_pad = width_pad + self.time_pad = time_pad + self.time_causal_padding = (width_pad, width_pad, height_pad, height_pad, time_pad, 0) + + self.temporal_dim = 2 + self.time_kernel_size = time_kernel_size + + stride = stride if isinstance(stride, tuple) else (stride, 1, 1) + dilation = (dilation, 1, 1) + self.conv = CogVideoXSafeConv3d( + in_channels=in_channels, + out_channels=out_channels, + kernel_size=kernel_size, + stride=stride, + dilation=dilation, + ) + + def fake_context_parallel_forward( + self, inputs: torch.Tensor, conv_cache: Optional[torch.Tensor] = None + ) -> torch.Tensor: + if self.pad_mode == "replicate": + inputs = F.pad(inputs, self.time_causal_padding, mode="replicate") + else: + kernel_size = self.time_kernel_size + if kernel_size > 1: + cached_inputs = [conv_cache] if conv_cache is not None else [inputs[:, :, :1]] * (kernel_size - 1) + inputs = torch.cat(cached_inputs + [inputs], dim=2) + return inputs + + def forward(self, inputs: torch.Tensor, conv_cache: Optional[torch.Tensor] = None) -> torch.Tensor: + inputs = self.fake_context_parallel_forward(inputs, conv_cache) + + if self.pad_mode == "replicate": + conv_cache = None + else: + padding_2d = (self.width_pad, self.width_pad, self.height_pad, self.height_pad) + conv_cache = inputs[:, :, -self.time_kernel_size + 1 :].clone() + inputs = F.pad(inputs, padding_2d, mode="constant", value=0) + + output = self.conv(inputs) + return output, conv_cache + + +class CogVideoXSpatialNorm3D(nn.Module): + r""" + Spatially conditioned normalization as defined in https://arxiv.org/abs/2209.09002. This implementation is specific + to 3D-video like data. + + CogVideoXSafeConv3d is used instead of nn.Conv3d to avoid OOM in CogVideoX Model. + + Args: + f_channels (`int`): + The number of channels for input to group normalization layer, and output of the spatial norm layer. + zq_channels (`int`): + The number of channels for the quantized vector as described in the paper. + groups (`int`): + Number of groups to separate the channels into for group normalization. + """ + + def __init__( + self, + f_channels: int, + zq_channels: int, + groups: int = 32, + ): + super().__init__() + self.norm_layer = nn.GroupNorm(num_channels=f_channels, num_groups=groups, eps=1e-6, affine=True) + self.conv_y = CogVideoXCausalConv3d(zq_channels, f_channels, kernel_size=1, stride=1) + self.conv_b = CogVideoXCausalConv3d(zq_channels, f_channels, kernel_size=1, stride=1) + + def forward( + self, f: torch.Tensor, zq: torch.Tensor, conv_cache: Optional[Dict[str, torch.Tensor]] = None + ) -> torch.Tensor: + new_conv_cache = {} + conv_cache = conv_cache or {} + + if f.shape[2] > 1 and f.shape[2] % 2 == 1: + f_first, f_rest = f[:, :, :1], f[:, :, 1:] + f_first_size, f_rest_size = f_first.shape[-3:], f_rest.shape[-3:] + z_first, z_rest = zq[:, :, :1], zq[:, :, 1:] + z_first = F.interpolate(z_first, size=f_first_size) + z_rest = F.interpolate(z_rest, size=f_rest_size) + zq = torch.cat([z_first, z_rest], dim=2) + else: + zq = F.interpolate(zq, size=f.shape[-3:]) + + conv_y, new_conv_cache["conv_y"] = self.conv_y(zq, conv_cache=conv_cache.get("conv_y")) + conv_b, new_conv_cache["conv_b"] = self.conv_b(zq, conv_cache=conv_cache.get("conv_b")) + + norm_f = self.norm_layer(f) + new_f = norm_f * conv_y + conv_b + return new_f, new_conv_cache + + +class CogVideoXResnetBlock3D(nn.Module): + r""" + A 3D ResNet block used in the CogVideoX model. + + Args: + in_channels (`int`): + Number of input channels. + out_channels (`int`, *optional*): + Number of output channels. If None, defaults to `in_channels`. + dropout (`float`, defaults to `0.0`): + Dropout rate. + temb_channels (`int`, defaults to `512`): + Number of time embedding channels. + groups (`int`, defaults to `32`): + Number of groups to separate the channels into for group normalization. + eps (`float`, defaults to `1e-6`): + Epsilon value for normalization layers. + non_linearity (`str`, defaults to `"swish"`): + Activation function to use. + conv_shortcut (bool, defaults to `False`): + Whether or not to use a convolution shortcut. + spatial_norm_dim (`int`, *optional*): + The dimension to use for spatial norm if it is to be used instead of group norm. + pad_mode (str, defaults to `"first"`): + Padding mode. + """ + + def __init__( + self, + in_channels: int, + out_channels: Optional[int] = None, + dropout: float = 0.0, + temb_channels: int = 512, + groups: int = 32, + eps: float = 1e-6, + non_linearity: str = "swish", + conv_shortcut: bool = False, + spatial_norm_dim: Optional[int] = None, + pad_mode: str = "first", + ): + super().__init__() + + out_channels = out_channels or in_channels + + self.in_channels = in_channels + self.out_channels = out_channels + self.nonlinearity = get_activation(non_linearity) + self.use_conv_shortcut = conv_shortcut + self.spatial_norm_dim = spatial_norm_dim + + if spatial_norm_dim is None: + self.norm1 = nn.GroupNorm(num_channels=in_channels, num_groups=groups, eps=eps) + self.norm2 = nn.GroupNorm(num_channels=out_channels, num_groups=groups, eps=eps) + else: + self.norm1 = CogVideoXSpatialNorm3D( + f_channels=in_channels, + zq_channels=spatial_norm_dim, + groups=groups, + ) + self.norm2 = CogVideoXSpatialNorm3D( + f_channels=out_channels, + zq_channels=spatial_norm_dim, + groups=groups, + ) + + self.conv1 = CogVideoXCausalConv3d( + in_channels=in_channels, out_channels=out_channels, kernel_size=3, pad_mode=pad_mode + ) + + if temb_channels > 0: + self.temb_proj = nn.Linear(in_features=temb_channels, out_features=out_channels) + + self.dropout = nn.Dropout(dropout) + self.conv2 = CogVideoXCausalConv3d( + in_channels=out_channels, out_channels=out_channels, kernel_size=3, pad_mode=pad_mode + ) + + if self.in_channels != self.out_channels: + if self.use_conv_shortcut: + self.conv_shortcut = CogVideoXCausalConv3d( + in_channels=in_channels, out_channels=out_channels, kernel_size=3, pad_mode=pad_mode + ) + else: + self.conv_shortcut = CogVideoXSafeConv3d( + in_channels=in_channels, out_channels=out_channels, kernel_size=1, stride=1, padding=0 + ) + + def forward( + self, + inputs: torch.Tensor, + temb: Optional[torch.Tensor] = None, + zq: Optional[torch.Tensor] = None, + conv_cache: Optional[Dict[str, torch.Tensor]] = None, + ) -> torch.Tensor: + new_conv_cache = {} + conv_cache = conv_cache or {} + + hidden_states = inputs + + if zq is not None: + hidden_states, new_conv_cache["norm1"] = self.norm1(hidden_states, zq, conv_cache=conv_cache.get("norm1")) + else: + hidden_states = self.norm1(hidden_states) + + hidden_states = self.nonlinearity(hidden_states) + hidden_states, new_conv_cache["conv1"] = self.conv1(hidden_states, conv_cache=conv_cache.get("conv1")) + + if temb is not None: + hidden_states = hidden_states + self.temb_proj(self.nonlinearity(temb))[:, :, None, None, None] + + if zq is not None: + hidden_states, new_conv_cache["norm2"] = self.norm2(hidden_states, zq, conv_cache=conv_cache.get("norm2")) + else: + hidden_states = self.norm2(hidden_states) + + hidden_states = self.nonlinearity(hidden_states) + hidden_states = self.dropout(hidden_states) + hidden_states, new_conv_cache["conv2"] = self.conv2(hidden_states, conv_cache=conv_cache.get("conv2")) + + if self.in_channels != self.out_channels: + if self.use_conv_shortcut: + inputs, new_conv_cache["conv_shortcut"] = self.conv_shortcut( + inputs, conv_cache=conv_cache.get("conv_shortcut") + ) + else: + inputs = self.conv_shortcut(inputs) + + hidden_states = hidden_states + inputs + return hidden_states, new_conv_cache + + +class CogVideoXDownBlock3D(nn.Module): + r""" + A downsampling block used in the CogVideoX model. + + Args: + in_channels (`int`): + Number of input channels. + out_channels (`int`, *optional*): + Number of output channels. If None, defaults to `in_channels`. + temb_channels (`int`, defaults to `512`): + Number of time embedding channels. + num_layers (`int`, defaults to `1`): + Number of resnet layers. + dropout (`float`, defaults to `0.0`): + Dropout rate. + resnet_eps (`float`, defaults to `1e-6`): + Epsilon value for normalization layers. + resnet_act_fn (`str`, defaults to `"swish"`): + Activation function to use. + resnet_groups (`int`, defaults to `32`): + Number of groups to separate the channels into for group normalization. + add_downsample (`bool`, defaults to `True`): + Whether or not to use a downsampling layer. If not used, output dimension would be same as input dimension. + compress_time (`bool`, defaults to `False`): + Whether or not to downsample across temporal dimension. + pad_mode (str, defaults to `"first"`): + Padding mode. + """ + + _supports_gradient_checkpointing = True + + def __init__( + self, + in_channels: int, + out_channels: int, + temb_channels: int, + dropout: float = 0.0, + num_layers: int = 1, + resnet_eps: float = 1e-6, + resnet_act_fn: str = "swish", + resnet_groups: int = 32, + add_downsample: bool = True, + downsample_padding: int = 0, + compress_time: bool = False, + pad_mode: str = "first", + ): + super().__init__() + + resnets = [] + for i in range(num_layers): + in_channel = in_channels if i == 0 else out_channels + resnets.append( + CogVideoXResnetBlock3D( + in_channels=in_channel, + out_channels=out_channels, + dropout=dropout, + temb_channels=temb_channels, + groups=resnet_groups, + eps=resnet_eps, + non_linearity=resnet_act_fn, + pad_mode=pad_mode, + ) + ) + + self.resnets = nn.ModuleList(resnets) + self.downsamplers = None + + if add_downsample: + self.downsamplers = nn.ModuleList( + [ + CogVideoXDownsample3D( + out_channels, out_channels, padding=downsample_padding, compress_time=compress_time + ) + ] + ) + + self.gradient_checkpointing = False + + def forward( + self, + hidden_states: torch.Tensor, + temb: Optional[torch.Tensor] = None, + zq: Optional[torch.Tensor] = None, + conv_cache: Optional[Dict[str, torch.Tensor]] = None, + ) -> torch.Tensor: + r"""Forward method of the `CogVideoXDownBlock3D` class.""" + + new_conv_cache = {} + conv_cache = conv_cache or {} + + for i, resnet in enumerate(self.resnets): + conv_cache_key = f"resnet_{i}" + + if torch.is_grad_enabled() and self.gradient_checkpointing: + + def create_custom_forward(module): + def create_forward(*inputs): + return module(*inputs) + + return create_forward + + hidden_states, new_conv_cache[conv_cache_key] = torch.utils.checkpoint.checkpoint( + create_custom_forward(resnet), + hidden_states, + temb, + zq, + conv_cache.get(conv_cache_key), + ) + else: + hidden_states, new_conv_cache[conv_cache_key] = resnet( + hidden_states, temb, zq, conv_cache=conv_cache.get(conv_cache_key) + ) + + if self.downsamplers is not None: + for downsampler in self.downsamplers: + hidden_states = downsampler(hidden_states) + + return hidden_states, new_conv_cache + + +class CogVideoXMidBlock3D(nn.Module): + r""" + A middle block used in the CogVideoX model. + + Args: + in_channels (`int`): + Number of input channels. + temb_channels (`int`, defaults to `512`): + Number of time embedding channels. + dropout (`float`, defaults to `0.0`): + Dropout rate. + num_layers (`int`, defaults to `1`): + Number of resnet layers. + resnet_eps (`float`, defaults to `1e-6`): + Epsilon value for normalization layers. + resnet_act_fn (`str`, defaults to `"swish"`): + Activation function to use. + resnet_groups (`int`, defaults to `32`): + Number of groups to separate the channels into for group normalization. + spatial_norm_dim (`int`, *optional*): + The dimension to use for spatial norm if it is to be used instead of group norm. + pad_mode (str, defaults to `"first"`): + Padding mode. + """ + + _supports_gradient_checkpointing = True + + def __init__( + self, + in_channels: int, + temb_channels: int, + dropout: float = 0.0, + num_layers: int = 1, + resnet_eps: float = 1e-6, + resnet_act_fn: str = "swish", + resnet_groups: int = 32, + spatial_norm_dim: Optional[int] = None, + pad_mode: str = "first", + ): + super().__init__() + + resnets = [] + for _ in range(num_layers): + resnets.append( + CogVideoXResnetBlock3D( + in_channels=in_channels, + out_channels=in_channels, + dropout=dropout, + temb_channels=temb_channels, + groups=resnet_groups, + eps=resnet_eps, + spatial_norm_dim=spatial_norm_dim, + non_linearity=resnet_act_fn, + pad_mode=pad_mode, + ) + ) + self.resnets = nn.ModuleList(resnets) + + self.gradient_checkpointing = False + + def forward( + self, + hidden_states: torch.Tensor, + temb: Optional[torch.Tensor] = None, + zq: Optional[torch.Tensor] = None, + conv_cache: Optional[Dict[str, torch.Tensor]] = None, + ) -> torch.Tensor: + r"""Forward method of the `CogVideoXMidBlock3D` class.""" + + new_conv_cache = {} + conv_cache = conv_cache or {} + + for i, resnet in enumerate(self.resnets): + conv_cache_key = f"resnet_{i}" + + if torch.is_grad_enabled() and self.gradient_checkpointing: + + def create_custom_forward(module): + def create_forward(*inputs): + return module(*inputs) + + return create_forward + + hidden_states, new_conv_cache[conv_cache_key] = torch.utils.checkpoint.checkpoint( + create_custom_forward(resnet), hidden_states, temb, zq, conv_cache.get(conv_cache_key) + ) + else: + hidden_states, new_conv_cache[conv_cache_key] = resnet( + hidden_states, temb, zq, conv_cache=conv_cache.get(conv_cache_key) + ) + + return hidden_states, new_conv_cache + + +class CogVideoXUpBlock3D(nn.Module): + r""" + An upsampling block used in the CogVideoX model. + + Args: + in_channels (`int`): + Number of input channels. + out_channels (`int`, *optional*): + Number of output channels. If None, defaults to `in_channels`. + temb_channels (`int`, defaults to `512`): + Number of time embedding channels. + dropout (`float`, defaults to `0.0`): + Dropout rate. + num_layers (`int`, defaults to `1`): + Number of resnet layers. + resnet_eps (`float`, defaults to `1e-6`): + Epsilon value for normalization layers. + resnet_act_fn (`str`, defaults to `"swish"`): + Activation function to use. + resnet_groups (`int`, defaults to `32`): + Number of groups to separate the channels into for group normalization. + spatial_norm_dim (`int`, defaults to `16`): + The dimension to use for spatial norm if it is to be used instead of group norm. + add_upsample (`bool`, defaults to `True`): + Whether or not to use a upsampling layer. If not used, output dimension would be same as input dimension. + compress_time (`bool`, defaults to `False`): + Whether or not to downsample across temporal dimension. + pad_mode (str, defaults to `"first"`): + Padding mode. + """ + + def __init__( + self, + in_channels: int, + out_channels: int, + temb_channels: int, + dropout: float = 0.0, + num_layers: int = 1, + resnet_eps: float = 1e-6, + resnet_act_fn: str = "swish", + resnet_groups: int = 32, + spatial_norm_dim: int = 16, + add_upsample: bool = True, + upsample_padding: int = 1, + compress_time: bool = False, + pad_mode: str = "first", + ): + super().__init__() + + resnets = [] + for i in range(num_layers): + in_channel = in_channels if i == 0 else out_channels + resnets.append( + CogVideoXResnetBlock3D( + in_channels=in_channel, + out_channels=out_channels, + dropout=dropout, + temb_channels=temb_channels, + groups=resnet_groups, + eps=resnet_eps, + non_linearity=resnet_act_fn, + spatial_norm_dim=spatial_norm_dim, + pad_mode=pad_mode, + ) + ) + + self.resnets = nn.ModuleList(resnets) + self.upsamplers = None + + if add_upsample: + self.upsamplers = nn.ModuleList( + [ + CogVideoXUpsample3D( + out_channels, out_channels, padding=upsample_padding, compress_time=compress_time + ) + ] + ) + + self.gradient_checkpointing = False + + def forward( + self, + hidden_states: torch.Tensor, + temb: Optional[torch.Tensor] = None, + zq: Optional[torch.Tensor] = None, + conv_cache: Optional[Dict[str, torch.Tensor]] = None, + ) -> torch.Tensor: + r"""Forward method of the `CogVideoXUpBlock3D` class.""" + + new_conv_cache = {} + conv_cache = conv_cache or {} + + for i, resnet in enumerate(self.resnets): + conv_cache_key = f"resnet_{i}" + + if torch.is_grad_enabled() and self.gradient_checkpointing: + + def create_custom_forward(module): + def create_forward(*inputs): + return module(*inputs) + + return create_forward + + hidden_states, new_conv_cache[conv_cache_key] = torch.utils.checkpoint.checkpoint( + create_custom_forward(resnet), + hidden_states, + temb, + zq, + conv_cache.get(conv_cache_key), + ) + else: + hidden_states, new_conv_cache[conv_cache_key] = resnet( + hidden_states, temb, zq, conv_cache=conv_cache.get(conv_cache_key) + ) + + if self.upsamplers is not None: + for upsampler in self.upsamplers: + hidden_states = upsampler(hidden_states) + + return hidden_states, new_conv_cache + + +class CogVideoXEncoder3D(nn.Module): + r""" + The `CogVideoXEncoder3D` layer of a variational autoencoder that encodes its input into a latent representation. + + Args: + in_channels (`int`, *optional*, defaults to 3): + The number of input channels. + out_channels (`int`, *optional*, defaults to 3): + The number of output channels. + down_block_types (`Tuple[str, ...]`, *optional*, defaults to `("DownEncoderBlock2D",)`): + The types of down blocks to use. See `~diffusers.models.unet_2d_blocks.get_down_block` for available + options. + block_out_channels (`Tuple[int, ...]`, *optional*, defaults to `(64,)`): + The number of output channels for each block. + act_fn (`str`, *optional*, defaults to `"silu"`): + The activation function to use. See `~diffusers.models.activations.get_activation` for available options. + layers_per_block (`int`, *optional*, defaults to 2): + The number of layers per block. + norm_num_groups (`int`, *optional*, defaults to 32): + The number of groups for normalization. + """ + + _supports_gradient_checkpointing = True + + def __init__( + self, + in_channels: int = 3, + out_channels: int = 16, + down_block_types: Tuple[str, ...] = ( + "CogVideoXDownBlock3D", + "CogVideoXDownBlock3D", + "CogVideoXDownBlock3D", + "CogVideoXDownBlock3D", + ), + block_out_channels: Tuple[int, ...] = (128, 256, 256, 512), + layers_per_block: int = 3, + act_fn: str = "silu", + norm_eps: float = 1e-6, + norm_num_groups: int = 32, + dropout: float = 0.0, + pad_mode: str = "first", + temporal_compression_ratio: float = 4, + ): + super().__init__() + + # log2 of temporal_compress_times + temporal_compress_level = int(np.log2(temporal_compression_ratio)) + + self.conv_in = CogVideoXCausalConv3d(in_channels, block_out_channels[0], kernel_size=3, pad_mode=pad_mode) + self.down_blocks = nn.ModuleList([]) + + # down blocks + output_channel = block_out_channels[0] + for i, down_block_type in enumerate(down_block_types): + input_channel = output_channel + output_channel = block_out_channels[i] + is_final_block = i == len(block_out_channels) - 1 + compress_time = i < temporal_compress_level + + if down_block_type == "CogVideoXDownBlock3D": + down_block = CogVideoXDownBlock3D( + in_channels=input_channel, + out_channels=output_channel, + temb_channels=0, + dropout=dropout, + num_layers=layers_per_block, + resnet_eps=norm_eps, + resnet_act_fn=act_fn, + resnet_groups=norm_num_groups, + add_downsample=not is_final_block, + compress_time=compress_time, + ) + else: + raise ValueError("Invalid `down_block_type` encountered. Must be `CogVideoXDownBlock3D`") + + self.down_blocks.append(down_block) + + # mid block + self.mid_block = CogVideoXMidBlock3D( + in_channels=block_out_channels[-1], + temb_channels=0, + dropout=dropout, + num_layers=2, + resnet_eps=norm_eps, + resnet_act_fn=act_fn, + resnet_groups=norm_num_groups, + pad_mode=pad_mode, + ) + + self.norm_out = nn.GroupNorm(norm_num_groups, block_out_channels[-1], eps=1e-6) + self.conv_act = nn.SiLU() + self.conv_out = CogVideoXCausalConv3d( + block_out_channels[-1], 2 * out_channels, kernel_size=3, pad_mode=pad_mode + ) + + self.gradient_checkpointing = False + + def forward( + self, + sample: torch.Tensor, + temb: Optional[torch.Tensor] = None, + conv_cache: Optional[Dict[str, torch.Tensor]] = None, + ) -> torch.Tensor: + r"""The forward method of the `CogVideoXEncoder3D` class.""" + + new_conv_cache = {} + conv_cache = conv_cache or {} + + hidden_states, new_conv_cache["conv_in"] = self.conv_in(sample, conv_cache=conv_cache.get("conv_in")) + + if torch.is_grad_enabled() and self.gradient_checkpointing: + + def create_custom_forward(module): + def custom_forward(*inputs): + return module(*inputs) + + return custom_forward + + # 1. Down + for i, down_block in enumerate(self.down_blocks): + conv_cache_key = f"down_block_{i}" + hidden_states, new_conv_cache[conv_cache_key] = torch.utils.checkpoint.checkpoint( + create_custom_forward(down_block), + hidden_states, + temb, + None, + conv_cache.get(conv_cache_key), + ) + + # 2. Mid + hidden_states, new_conv_cache["mid_block"] = torch.utils.checkpoint.checkpoint( + create_custom_forward(self.mid_block), + hidden_states, + temb, + None, + conv_cache.get("mid_block"), + ) + else: + # 1. Down + for i, down_block in enumerate(self.down_blocks): + conv_cache_key = f"down_block_{i}" + hidden_states, new_conv_cache[conv_cache_key] = down_block( + hidden_states, temb, None, conv_cache.get(conv_cache_key) + ) + + # 2. Mid + hidden_states, new_conv_cache["mid_block"] = self.mid_block( + hidden_states, temb, None, conv_cache=conv_cache.get("mid_block") + ) + + # 3. Post-process + hidden_states = self.norm_out(hidden_states) + hidden_states = self.conv_act(hidden_states) + + hidden_states, new_conv_cache["conv_out"] = self.conv_out(hidden_states, conv_cache=conv_cache.get("conv_out")) + + return hidden_states, new_conv_cache + + +class CogVideoXDecoder3D(nn.Module): + r""" + The `CogVideoXDecoder3D` layer of a variational autoencoder that decodes its latent representation into an output + sample. + + Args: + in_channels (`int`, *optional*, defaults to 3): + The number of input channels. + out_channels (`int`, *optional*, defaults to 3): + The number of output channels. + up_block_types (`Tuple[str, ...]`, *optional*, defaults to `("UpDecoderBlock2D",)`): + The types of up blocks to use. See `~diffusers.models.unet_2d_blocks.get_up_block` for available options. + block_out_channels (`Tuple[int, ...]`, *optional*, defaults to `(64,)`): + The number of output channels for each block. + act_fn (`str`, *optional*, defaults to `"silu"`): + The activation function to use. See `~diffusers.models.activations.get_activation` for available options. + layers_per_block (`int`, *optional*, defaults to 2): + The number of layers per block. + norm_num_groups (`int`, *optional*, defaults to 32): + The number of groups for normalization. + """ + + _supports_gradient_checkpointing = True + + def __init__( + self, + in_channels: int = 16, + out_channels: int = 3, + up_block_types: Tuple[str, ...] = ( + "CogVideoXUpBlock3D", + "CogVideoXUpBlock3D", + "CogVideoXUpBlock3D", + "CogVideoXUpBlock3D", + ), + block_out_channels: Tuple[int, ...] = (128, 256, 256, 512), + layers_per_block: int = 3, + act_fn: str = "silu", + norm_eps: float = 1e-6, + norm_num_groups: int = 32, + dropout: float = 0.0, + pad_mode: str = "first", + temporal_compression_ratio: float = 4, + ): + super().__init__() + + reversed_block_out_channels = list(reversed(block_out_channels)) + + self.conv_in = CogVideoXCausalConv3d( + in_channels, reversed_block_out_channels[0], kernel_size=3, pad_mode=pad_mode + ) + + # mid block + self.mid_block = CogVideoXMidBlock3D( + in_channels=reversed_block_out_channels[0], + temb_channels=0, + num_layers=2, + resnet_eps=norm_eps, + resnet_act_fn=act_fn, + resnet_groups=norm_num_groups, + spatial_norm_dim=in_channels, + pad_mode=pad_mode, + ) + + # up blocks + self.up_blocks = nn.ModuleList([]) + + output_channel = reversed_block_out_channels[0] + temporal_compress_level = int(np.log2(temporal_compression_ratio)) + + for i, up_block_type in enumerate(up_block_types): + prev_output_channel = output_channel + output_channel = reversed_block_out_channels[i] + is_final_block = i == len(block_out_channels) - 1 + compress_time = i < temporal_compress_level + + if up_block_type == "CogVideoXUpBlock3D": + up_block = CogVideoXUpBlock3D( + in_channels=prev_output_channel, + out_channels=output_channel, + temb_channels=0, + dropout=dropout, + num_layers=layers_per_block + 1, + resnet_eps=norm_eps, + resnet_act_fn=act_fn, + resnet_groups=norm_num_groups, + spatial_norm_dim=in_channels, + add_upsample=not is_final_block, + compress_time=compress_time, + pad_mode=pad_mode, + ) + prev_output_channel = output_channel + else: + raise ValueError("Invalid `up_block_type` encountered. Must be `CogVideoXUpBlock3D`") + + self.up_blocks.append(up_block) + + self.norm_out = CogVideoXSpatialNorm3D(reversed_block_out_channels[-1], in_channels, groups=norm_num_groups) + self.conv_act = nn.SiLU() + self.conv_out = CogVideoXCausalConv3d( + reversed_block_out_channels[-1], out_channels, kernel_size=3, pad_mode=pad_mode + ) + + self.gradient_checkpointing = False + + def forward( + self, + sample: torch.Tensor, + temb: Optional[torch.Tensor] = None, + conv_cache: Optional[Dict[str, torch.Tensor]] = None, + ) -> torch.Tensor: + r"""The forward method of the `CogVideoXDecoder3D` class.""" + + new_conv_cache = {} + conv_cache = conv_cache or {} + + hidden_states, new_conv_cache["conv_in"] = self.conv_in(sample, conv_cache=conv_cache.get("conv_in")) + + if torch.is_grad_enabled() and self.gradient_checkpointing: + + def create_custom_forward(module): + def custom_forward(*inputs): + return module(*inputs) + + return custom_forward + + # 1. Mid + hidden_states, new_conv_cache["mid_block"] = torch.utils.checkpoint.checkpoint( + create_custom_forward(self.mid_block), + hidden_states, + temb, + sample, + conv_cache.get("mid_block"), + ) + + # 2. Up + for i, up_block in enumerate(self.up_blocks): + conv_cache_key = f"up_block_{i}" + hidden_states, new_conv_cache[conv_cache_key] = torch.utils.checkpoint.checkpoint( + create_custom_forward(up_block), + hidden_states, + temb, + sample, + conv_cache.get(conv_cache_key), + ) + else: + # 1. Mid + hidden_states, new_conv_cache["mid_block"] = self.mid_block( + hidden_states, temb, sample, conv_cache=conv_cache.get("mid_block") + ) + + # 2. Up + for i, up_block in enumerate(self.up_blocks): + conv_cache_key = f"up_block_{i}" + hidden_states, new_conv_cache[conv_cache_key] = up_block( + hidden_states, temb, sample, conv_cache=conv_cache.get(conv_cache_key) + ) + + # 3. Post-process + hidden_states, new_conv_cache["norm_out"] = self.norm_out( + hidden_states, sample, conv_cache=conv_cache.get("norm_out") + ) + hidden_states = self.conv_act(hidden_states) + hidden_states, new_conv_cache["conv_out"] = self.conv_out(hidden_states, conv_cache=conv_cache.get("conv_out")) + + return hidden_states, new_conv_cache + + +class AutoencoderKLCogVideoX(ModelMixin, ConfigMixin, FromOriginalModelMixin): + r""" + A VAE model with KL loss for encoding images into latents and decoding latent representations into images. Used in + [CogVideoX](https://github.com/THUDM/CogVideo). + + This model inherits from [`ModelMixin`]. Check the superclass documentation for it's generic methods implemented + for all models (such as downloading or saving). + + Parameters: + in_channels (int, *optional*, defaults to 3): Number of channels in the input image. + out_channels (int, *optional*, defaults to 3): Number of channels in the output. + down_block_types (`Tuple[str]`, *optional*, defaults to `("DownEncoderBlock2D",)`): + Tuple of downsample block types. + up_block_types (`Tuple[str]`, *optional*, defaults to `("UpDecoderBlock2D",)`): + Tuple of upsample block types. + block_out_channels (`Tuple[int]`, *optional*, defaults to `(64,)`): + Tuple of block output channels. + act_fn (`str`, *optional*, defaults to `"silu"`): The activation function to use. + sample_size (`int`, *optional*, defaults to `32`): Sample input size. + scaling_factor (`float`, *optional*, defaults to `1.15258426`): + The component-wise standard deviation of the trained latent space computed using the first batch of the + training set. This is used to scale the latent space to have unit variance when training the diffusion + model. The latents are scaled with the formula `z = z * scaling_factor` before being passed to the + diffusion model. When decoding, the latents are scaled back to the original scale with the formula: `z = 1 + / scaling_factor * z`. For more details, refer to sections 4.3.2 and D.1 of the [High-Resolution Image + Synthesis with Latent Diffusion Models](https://arxiv.org/abs/2112.10752) paper. + force_upcast (`bool`, *optional*, default to `True`): + If enabled it will force the VAE to run in float32 for high image resolution pipelines, such as SD-XL. VAE + can be fine-tuned / trained to a lower range without loosing too much precision in which case + `force_upcast` can be set to `False` - see: https://huggingface.co/madebyollin/sdxl-vae-fp16-fix + """ + + _supports_gradient_checkpointing = True + _no_split_modules = ["CogVideoXResnetBlock3D"] + + @register_to_config + def __init__( + self, + in_channels: int = 3, + out_channels: int = 3, + down_block_types: Tuple[str] = ( + "CogVideoXDownBlock3D", + "CogVideoXDownBlock3D", + "CogVideoXDownBlock3D", + "CogVideoXDownBlock3D", + ), + up_block_types: Tuple[str] = ( + "CogVideoXUpBlock3D", + "CogVideoXUpBlock3D", + "CogVideoXUpBlock3D", + "CogVideoXUpBlock3D", + ), + block_out_channels: Tuple[int] = (128, 256, 256, 512), + latent_channels: int = 16, + layers_per_block: int = 3, + act_fn: str = "silu", + norm_eps: float = 1e-6, + norm_num_groups: int = 32, + temporal_compression_ratio: float = 4, + sample_height: int = 480, + sample_width: int = 720, + scaling_factor: float = 1.15258426, + shift_factor: Optional[float] = None, + latents_mean: Optional[Tuple[float]] = None, + latents_std: Optional[Tuple[float]] = None, + force_upcast: float = True, + use_quant_conv: bool = False, + use_post_quant_conv: bool = False, + invert_scale_latents: bool = False, + ): + super().__init__() + + self.encoder = CogVideoXEncoder3D( + in_channels=in_channels, + out_channels=latent_channels, + down_block_types=down_block_types, + block_out_channels=block_out_channels, + layers_per_block=layers_per_block, + act_fn=act_fn, + norm_eps=norm_eps, + norm_num_groups=norm_num_groups, + temporal_compression_ratio=temporal_compression_ratio, + ) + self.decoder = CogVideoXDecoder3D( + in_channels=latent_channels, + out_channels=out_channels, + up_block_types=up_block_types, + block_out_channels=block_out_channels, + layers_per_block=layers_per_block, + act_fn=act_fn, + norm_eps=norm_eps, + norm_num_groups=norm_num_groups, + temporal_compression_ratio=temporal_compression_ratio, + ) + self.quant_conv = CogVideoXSafeConv3d(2 * out_channels, 2 * out_channels, 1) if use_quant_conv else None + self.post_quant_conv = CogVideoXSafeConv3d(out_channels, out_channels, 1) if use_post_quant_conv else None + + self.use_slicing = False + self.use_tiling = False + + # Can be increased to decode more latent frames at once, but comes at a reasonable memory cost and it is not + # recommended because the temporal parts of the VAE, here, are tricky to understand. + # If you decode X latent frames together, the number of output frames is: + # (X + (2 conv cache) + (2 time upscale_1) + (4 time upscale_2) - (2 causal conv downscale)) => X + 6 frames + # + # Example with num_latent_frames_batch_size = 2: + # - 12 latent frames: (0, 1), (2, 3), (4, 5), (6, 7), (8, 9), (10, 11) are processed together + # => (12 // 2 frame slices) * ((2 num_latent_frames_batch_size) + (2 conv cache) + (2 time upscale_1) + (4 time upscale_2) - (2 causal conv downscale)) + # => 6 * 8 = 48 frames + # - 13 latent frames: (0, 1, 2) (special case), (3, 4), (5, 6), (7, 8), (9, 10), (11, 12) are processed together + # => (1 frame slice) * ((3 num_latent_frames_batch_size) + (2 conv cache) + (2 time upscale_1) + (4 time upscale_2) - (2 causal conv downscale)) + + # ((13 - 3) // 2) * ((2 num_latent_frames_batch_size) + (2 conv cache) + (2 time upscale_1) + (4 time upscale_2) - (2 causal conv downscale)) + # => 1 * 9 + 5 * 8 = 49 frames + # It has been implemented this way so as to not have "magic values" in the code base that would be hard to explain. Note that + # setting it to anything other than 2 would give poor results because the VAE hasn't been trained to be adaptive with different + # number of temporal frames. + self.num_latent_frames_batch_size = 2 + self.num_sample_frames_batch_size = 8 + + # We make the minimum height and width of sample for tiling half that of the generally supported + self.tile_sample_min_height = sample_height // 2 + self.tile_sample_min_width = sample_width // 2 + self.tile_latent_min_height = int( + self.tile_sample_min_height / (2 ** (len(self.config.block_out_channels) - 1)) + ) + self.tile_latent_min_width = int(self.tile_sample_min_width / (2 ** (len(self.config.block_out_channels) - 1))) + + # These are experimental overlap factors that were chosen based on experimentation and seem to work best for + # 720x480 (WxH) resolution. The above resolution is the strongly recommended generation resolution in CogVideoX + # and so the tiling implementation has only been tested on those specific resolutions. + self.tile_overlap_factor_height = 1 / 6 + self.tile_overlap_factor_width = 1 / 5 + + def _set_gradient_checkpointing(self, module, value=False): + if isinstance(module, (CogVideoXEncoder3D, CogVideoXDecoder3D)): + module.gradient_checkpointing = value + + def enable_tiling( + self, + tile_sample_min_height: Optional[int] = None, + tile_sample_min_width: Optional[int] = None, + tile_overlap_factor_height: Optional[float] = None, + tile_overlap_factor_width: Optional[float] = None, + ) -> None: + r""" + Enable tiled VAE decoding. When this option is enabled, the VAE will split the input tensor into tiles to + compute decoding and encoding in several steps. This is useful for saving a large amount of memory and to allow + processing larger images. + + Args: + tile_sample_min_height (`int`, *optional*): + The minimum height required for a sample to be separated into tiles across the height dimension. + tile_sample_min_width (`int`, *optional*): + The minimum width required for a sample to be separated into tiles across the width dimension. + tile_overlap_factor_height (`int`, *optional*): + The minimum amount of overlap between two consecutive vertical tiles. This is to ensure that there are + no tiling artifacts produced across the height dimension. Must be between 0 and 1. Setting a higher + value might cause more tiles to be processed leading to slow down of the decoding process. + tile_overlap_factor_width (`int`, *optional*): + The minimum amount of overlap between two consecutive horizontal tiles. This is to ensure that there + are no tiling artifacts produced across the width dimension. Must be between 0 and 1. Setting a higher + value might cause more tiles to be processed leading to slow down of the decoding process. + """ + self.use_tiling = True + self.tile_sample_min_height = tile_sample_min_height or self.tile_sample_min_height + self.tile_sample_min_width = tile_sample_min_width or self.tile_sample_min_width + self.tile_latent_min_height = int( + self.tile_sample_min_height / (2 ** (len(self.config.block_out_channels) - 1)) + ) + self.tile_latent_min_width = int(self.tile_sample_min_width / (2 ** (len(self.config.block_out_channels) - 1))) + self.tile_overlap_factor_height = tile_overlap_factor_height or self.tile_overlap_factor_height + self.tile_overlap_factor_width = tile_overlap_factor_width or self.tile_overlap_factor_width + + def disable_tiling(self) -> None: + r""" + Disable tiled VAE decoding. If `enable_tiling` was previously enabled, this method will go back to computing + decoding in one step. + """ + self.use_tiling = False + + def enable_slicing(self) -> None: + r""" + Enable sliced VAE decoding. When this option is enabled, the VAE will split the input tensor in slices to + compute decoding in several steps. This is useful to save some memory and allow larger batch sizes. + """ + self.use_slicing = True + + def disable_slicing(self) -> None: + r""" + Disable sliced VAE decoding. If `enable_slicing` was previously enabled, this method will go back to computing + decoding in one step. + """ + self.use_slicing = False + + def _encode(self, x: torch.Tensor) -> torch.Tensor: + batch_size, num_channels, num_frames, height, width = x.shape + + if self.use_tiling and (width > self.tile_sample_min_width or height > self.tile_sample_min_height): + return self.tiled_encode(x) + + frame_batch_size = self.num_sample_frames_batch_size + # Note: We expect the number of frames to be either `1` or `frame_batch_size * k` or `frame_batch_size * k + 1` for some k. + # As the extra single frame is handled inside the loop, it is not required to round up here. + num_batches = max(num_frames // frame_batch_size, 1) + conv_cache = None + enc = [] + + for i in range(num_batches): + remaining_frames = num_frames % frame_batch_size + start_frame = frame_batch_size * i + (0 if i == 0 else remaining_frames) + end_frame = frame_batch_size * (i + 1) + remaining_frames + x_intermediate = x[:, :, start_frame:end_frame] + x_intermediate, conv_cache = self.encoder(x_intermediate, conv_cache=conv_cache) + if self.quant_conv is not None: + x_intermediate = self.quant_conv(x_intermediate) + enc.append(x_intermediate) + + enc = torch.cat(enc, dim=2) + return enc + + @apply_forward_hook + def encode( + self, x: torch.Tensor, return_dict: bool = True + ) -> Union[AutoencoderKLOutput, Tuple[DiagonalGaussianDistribution]]: + """ + Encode a batch of images into latents. + + Args: + x (`torch.Tensor`): Input batch of images. + return_dict (`bool`, *optional*, defaults to `True`): + Whether to return a [`~models.autoencoder_kl.AutoencoderKLOutput`] instead of a plain tuple. + + Returns: + The latent representations of the encoded videos. If `return_dict` is True, a + [`~models.autoencoder_kl.AutoencoderKLOutput`] is returned, otherwise a plain `tuple` is returned. + """ + if self.use_slicing and x.shape[0] > 1: + encoded_slices = [self._encode(x_slice) for x_slice in x.split(1)] + h = torch.cat(encoded_slices) + else: + h = self._encode(x) + + posterior = DiagonalGaussianDistribution(h) + + if not return_dict: + return (posterior,) + return AutoencoderKLOutput(latent_dist=posterior) + + def _decode(self, z: torch.Tensor, return_dict: bool = True) -> Union[DecoderOutput, torch.Tensor]: + batch_size, num_channels, num_frames, height, width = z.shape + + if self.use_tiling and (width > self.tile_latent_min_width or height > self.tile_latent_min_height): + return self.tiled_decode(z, return_dict=return_dict) + + frame_batch_size = self.num_latent_frames_batch_size + num_batches = max(num_frames // frame_batch_size, 1) + conv_cache = None + dec = [] + + for i in range(num_batches): + remaining_frames = num_frames % frame_batch_size + start_frame = frame_batch_size * i + (0 if i == 0 else remaining_frames) + end_frame = frame_batch_size * (i + 1) + remaining_frames + z_intermediate = z[:, :, start_frame:end_frame] + if self.post_quant_conv is not None: + z_intermediate = self.post_quant_conv(z_intermediate) + z_intermediate, conv_cache = self.decoder(z_intermediate, conv_cache=conv_cache) + dec.append(z_intermediate) + + dec = torch.cat(dec, dim=2) + + if not return_dict: + return (dec,) + + return DecoderOutput(sample=dec) + + @apply_forward_hook + def decode(self, z: torch.Tensor, return_dict: bool = True) -> Union[DecoderOutput, torch.Tensor]: + """ + Decode a batch of images. + + Args: + z (`torch.Tensor`): Input batch of latent vectors. + return_dict (`bool`, *optional*, defaults to `True`): + Whether to return a [`~models.vae.DecoderOutput`] instead of a plain tuple. + + Returns: + [`~models.vae.DecoderOutput`] or `tuple`: + If return_dict is True, a [`~models.vae.DecoderOutput`] is returned, otherwise a plain `tuple` is + returned. + """ + if self.use_slicing and z.shape[0] > 1: + decoded_slices = [self._decode(z_slice).sample for z_slice in z.split(1)] + decoded = torch.cat(decoded_slices) + else: + decoded = self._decode(z).sample + + if not return_dict: + return (decoded,) + return DecoderOutput(sample=decoded) + + def blend_v(self, a: torch.Tensor, b: torch.Tensor, blend_extent: int) -> torch.Tensor: + blend_extent = min(a.shape[3], b.shape[3], blend_extent) + for y in range(blend_extent): + b[:, :, :, y, :] = a[:, :, :, -blend_extent + y, :] * (1 - y / blend_extent) + b[:, :, :, y, :] * ( + y / blend_extent + ) + return b + + def blend_h(self, a: torch.Tensor, b: torch.Tensor, blend_extent: int) -> torch.Tensor: + blend_extent = min(a.shape[4], b.shape[4], blend_extent) + for x in range(blend_extent): + b[:, :, :, :, x] = a[:, :, :, :, -blend_extent + x] * (1 - x / blend_extent) + b[:, :, :, :, x] * ( + x / blend_extent + ) + return b + + def tiled_encode(self, x: torch.Tensor) -> torch.Tensor: + r"""Encode a batch of images using a tiled encoder. + + When this option is enabled, the VAE will split the input tensor into tiles to compute encoding in several + steps. This is useful to keep memory use constant regardless of image size. The end result of tiled encoding is + different from non-tiled encoding because each tile uses a different encoder. To avoid tiling artifacts, the + tiles overlap and are blended together to form a smooth output. You may still see tile-sized changes in the + output, but they should be much less noticeable. + + Args: + x (`torch.Tensor`): Input batch of videos. + + Returns: + `torch.Tensor`: + The latent representation of the encoded videos. + """ + # For a rough memory estimate, take a look at the `tiled_decode` method. + batch_size, num_channels, num_frames, height, width = x.shape + + overlap_height = int(self.tile_sample_min_height * (1 - self.tile_overlap_factor_height)) + overlap_width = int(self.tile_sample_min_width * (1 - self.tile_overlap_factor_width)) + blend_extent_height = int(self.tile_latent_min_height * self.tile_overlap_factor_height) + blend_extent_width = int(self.tile_latent_min_width * self.tile_overlap_factor_width) + row_limit_height = self.tile_latent_min_height - blend_extent_height + row_limit_width = self.tile_latent_min_width - blend_extent_width + frame_batch_size = self.num_sample_frames_batch_size + + # Split x into overlapping tiles and encode them separately. + # The tiles have an overlap to avoid seams between tiles. + rows = [] + for i in range(0, height, overlap_height): + row = [] + for j in range(0, width, overlap_width): + # Note: We expect the number of frames to be either `1` or `frame_batch_size * k` or `frame_batch_size * k + 1` for some k. + # As the extra single frame is handled inside the loop, it is not required to round up here. + num_batches = max(num_frames // frame_batch_size, 1) + conv_cache = None + time = [] + + for k in range(num_batches): + remaining_frames = num_frames % frame_batch_size + start_frame = frame_batch_size * k + (0 if k == 0 else remaining_frames) + end_frame = frame_batch_size * (k + 1) + remaining_frames + tile = x[ + :, + :, + start_frame:end_frame, + i : i + self.tile_sample_min_height, + j : j + self.tile_sample_min_width, + ] + tile, conv_cache = self.encoder(tile, conv_cache=conv_cache) + if self.quant_conv is not None: + tile = self.quant_conv(tile) + time.append(tile) + + row.append(torch.cat(time, dim=2)) + rows.append(row) + + result_rows = [] + for i, row in enumerate(rows): + result_row = [] + for j, tile in enumerate(row): + # blend the above tile and the left tile + # to the current tile and add the current tile to the result row + if i > 0: + tile = self.blend_v(rows[i - 1][j], tile, blend_extent_height) + if j > 0: + tile = self.blend_h(row[j - 1], tile, blend_extent_width) + result_row.append(tile[:, :, :, :row_limit_height, :row_limit_width]) + result_rows.append(torch.cat(result_row, dim=4)) + + enc = torch.cat(result_rows, dim=3) + return enc + + def tiled_decode(self, z: torch.Tensor, return_dict: bool = True) -> Union[DecoderOutput, torch.Tensor]: + r""" + Decode a batch of images using a tiled decoder. + + Args: + z (`torch.Tensor`): Input batch of latent vectors. + return_dict (`bool`, *optional*, defaults to `True`): + Whether or not to return a [`~models.vae.DecoderOutput`] instead of a plain tuple. + + Returns: + [`~models.vae.DecoderOutput`] or `tuple`: + If return_dict is True, a [`~models.vae.DecoderOutput`] is returned, otherwise a plain `tuple` is + returned. + """ + # Rough memory assessment: + # - In CogVideoX-2B, there are a total of 24 CausalConv3d layers. + # - The biggest intermediate dimensions are: [1, 128, 9, 480, 720]. + # - Assume fp16 (2 bytes per value). + # Memory required: 1 * 128 * 9 * 480 * 720 * 24 * 2 / 1024**3 = 17.8 GB + # + # Memory assessment when using tiling: + # - Assume everything as above but now HxW is 240x360 by tiling in half + # Memory required: 1 * 128 * 9 * 240 * 360 * 24 * 2 / 1024**3 = 4.5 GB + + batch_size, num_channels, num_frames, height, width = z.shape + + overlap_height = int(self.tile_latent_min_height * (1 - self.tile_overlap_factor_height)) + overlap_width = int(self.tile_latent_min_width * (1 - self.tile_overlap_factor_width)) + blend_extent_height = int(self.tile_sample_min_height * self.tile_overlap_factor_height) + blend_extent_width = int(self.tile_sample_min_width * self.tile_overlap_factor_width) + row_limit_height = self.tile_sample_min_height - blend_extent_height + row_limit_width = self.tile_sample_min_width - blend_extent_width + frame_batch_size = self.num_latent_frames_batch_size + + # Split z into overlapping tiles and decode them separately. + # The tiles have an overlap to avoid seams between tiles. + rows = [] + for i in range(0, height, overlap_height): + row = [] + for j in range(0, width, overlap_width): + num_batches = max(num_frames // frame_batch_size, 1) + conv_cache = None + time = [] + + for k in range(num_batches): + remaining_frames = num_frames % frame_batch_size + start_frame = frame_batch_size * k + (0 if k == 0 else remaining_frames) + end_frame = frame_batch_size * (k + 1) + remaining_frames + tile = z[ + :, + :, + start_frame:end_frame, + i : i + self.tile_latent_min_height, + j : j + self.tile_latent_min_width, + ] + if self.post_quant_conv is not None: + tile = self.post_quant_conv(tile) + tile, conv_cache = self.decoder(tile, conv_cache=conv_cache) + time.append(tile) + + row.append(torch.cat(time, dim=2)) + rows.append(row) + + result_rows = [] + for i, row in enumerate(rows): + result_row = [] + for j, tile in enumerate(row): + # blend the above tile and the left tile + # to the current tile and add the current tile to the result row + if i > 0: + tile = self.blend_v(rows[i - 1][j], tile, blend_extent_height) + if j > 0: + tile = self.blend_h(row[j - 1], tile, blend_extent_width) + result_row.append(tile[:, :, :, :row_limit_height, :row_limit_width]) + result_rows.append(torch.cat(result_row, dim=4)) + + dec = torch.cat(result_rows, dim=3) + + if not return_dict: + return (dec,) + + return DecoderOutput(sample=dec) + + def forward( + self, + sample: torch.Tensor, + sample_posterior: bool = False, + return_dict: bool = True, + generator: Optional[torch.Generator] = None, + ) -> Union[torch.Tensor, torch.Tensor]: + x = sample + posterior = self.encode(x).latent_dist + if sample_posterior: + z = posterior.sample(generator=generator) + else: + z = posterior.mode() + dec = self.decode(z).sample + if not return_dict: + return (dec,) + return DecoderOutput(sample=dec) diff --git a/venv/lib/python3.11/site-packages/diffusers/models/autoencoders/autoencoder_kl_hunyuan_video.py b/venv/lib/python3.11/site-packages/diffusers/models/autoencoders/autoencoder_kl_hunyuan_video.py new file mode 100644 index 0000000000000000000000000000000000000000..e2236a7f20ad6077e5f227698355aa7fd1f95722 --- /dev/null +++ b/venv/lib/python3.11/site-packages/diffusers/models/autoencoders/autoencoder_kl_hunyuan_video.py @@ -0,0 +1,1176 @@ +# Copyright 2024 The Hunyuan Team and The HuggingFace Team. All rights reserved. +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. + +from typing import Any, Dict, Optional, Tuple, Union + +import numpy as np +import torch +import torch.nn as nn +import torch.nn.functional as F +import torch.utils.checkpoint + +from ...configuration_utils import ConfigMixin, register_to_config +from ...utils import is_torch_version, logging +from ...utils.accelerate_utils import apply_forward_hook +from ..activations import get_activation +from ..attention_processor import Attention +from ..modeling_outputs import AutoencoderKLOutput +from ..modeling_utils import ModelMixin +from .vae import DecoderOutput, DiagonalGaussianDistribution + + +logger = logging.get_logger(__name__) # pylint: disable=invalid-name + + +def prepare_causal_attention_mask( + num_frames: int, height_width: int, dtype: torch.dtype, device: torch.device, batch_size: int = None +) -> torch.Tensor: + seq_len = num_frames * height_width + mask = torch.full((seq_len, seq_len), float("-inf"), dtype=dtype, device=device) + for i in range(seq_len): + i_frame = i // height_width + mask[i, : (i_frame + 1) * height_width] = 0 + if batch_size is not None: + mask = mask.unsqueeze(0).expand(batch_size, -1, -1) + return mask + + +class HunyuanVideoCausalConv3d(nn.Module): + def __init__( + self, + in_channels: int, + out_channels: int, + kernel_size: Union[int, Tuple[int, int, int]] = 3, + stride: Union[int, Tuple[int, int, int]] = 1, + padding: Union[int, Tuple[int, int, int]] = 0, + dilation: Union[int, Tuple[int, int, int]] = 1, + bias: bool = True, + pad_mode: str = "replicate", + ) -> None: + super().__init__() + + kernel_size = (kernel_size, kernel_size, kernel_size) if isinstance(kernel_size, int) else kernel_size + + self.pad_mode = pad_mode + self.time_causal_padding = ( + kernel_size[0] // 2, + kernel_size[0] // 2, + kernel_size[1] // 2, + kernel_size[1] // 2, + kernel_size[2] - 1, + 0, + ) + + self.conv = nn.Conv3d(in_channels, out_channels, kernel_size, stride, padding, dilation, bias=bias) + + def forward(self, hidden_states: torch.Tensor) -> torch.Tensor: + hidden_states = F.pad(hidden_states, self.time_causal_padding, mode=self.pad_mode) + return self.conv(hidden_states) + + +class HunyuanVideoUpsampleCausal3D(nn.Module): + def __init__( + self, + in_channels: int, + out_channels: Optional[int] = None, + kernel_size: int = 3, + stride: int = 1, + bias: bool = True, + upsample_factor: Tuple[float, float, float] = (2, 2, 2), + ) -> None: + super().__init__() + + out_channels = out_channels or in_channels + self.upsample_factor = upsample_factor + + self.conv = HunyuanVideoCausalConv3d(in_channels, out_channels, kernel_size, stride, bias=bias) + + def forward(self, hidden_states: torch.Tensor) -> torch.Tensor: + num_frames = hidden_states.size(2) + + first_frame, other_frames = hidden_states.split((1, num_frames - 1), dim=2) + first_frame = F.interpolate( + first_frame.squeeze(2), scale_factor=self.upsample_factor[1:], mode="nearest" + ).unsqueeze(2) + + if num_frames > 1: + # See: https://github.com/pytorch/pytorch/issues/81665 + # Unless you have a version of pytorch where non-contiguous implementation of F.interpolate + # is fixed, this will raise either a runtime error, or fail silently with bad outputs. + # If you are encountering an error here, make sure to try running encoding/decoding with + # `vae.enable_tiling()` first. If that doesn't work, open an issue at: + # https://github.com/huggingface/diffusers/issues + other_frames = other_frames.contiguous() + other_frames = F.interpolate(other_frames, scale_factor=self.upsample_factor, mode="nearest") + hidden_states = torch.cat((first_frame, other_frames), dim=2) + else: + hidden_states = first_frame + + hidden_states = self.conv(hidden_states) + return hidden_states + + +class HunyuanVideoDownsampleCausal3D(nn.Module): + def __init__( + self, + channels: int, + out_channels: Optional[int] = None, + padding: int = 1, + kernel_size: int = 3, + bias: bool = True, + stride=2, + ) -> None: + super().__init__() + out_channels = out_channels or channels + + self.conv = HunyuanVideoCausalConv3d(channels, out_channels, kernel_size, stride, padding, bias=bias) + + def forward(self, hidden_states: torch.Tensor) -> torch.Tensor: + hidden_states = self.conv(hidden_states) + return hidden_states + + +class HunyuanVideoResnetBlockCausal3D(nn.Module): + def __init__( + self, + in_channels: int, + out_channels: Optional[int] = None, + dropout: float = 0.0, + groups: int = 32, + eps: float = 1e-6, + non_linearity: str = "swish", + ) -> None: + super().__init__() + out_channels = out_channels or in_channels + + self.nonlinearity = get_activation(non_linearity) + + self.norm1 = nn.GroupNorm(groups, in_channels, eps=eps, affine=True) + self.conv1 = HunyuanVideoCausalConv3d(in_channels, out_channels, 3, 1, 0) + + self.norm2 = nn.GroupNorm(groups, out_channels, eps=eps, affine=True) + self.dropout = nn.Dropout(dropout) + self.conv2 = HunyuanVideoCausalConv3d(out_channels, out_channels, 3, 1, 0) + + self.conv_shortcut = None + if in_channels != out_channels: + self.conv_shortcut = HunyuanVideoCausalConv3d(in_channels, out_channels, 1, 1, 0) + + def forward(self, hidden_states: torch.Tensor) -> torch.Tensor: + hidden_states = hidden_states.contiguous() + residual = hidden_states + + hidden_states = self.norm1(hidden_states) + hidden_states = self.nonlinearity(hidden_states) + hidden_states = self.conv1(hidden_states) + + hidden_states = self.norm2(hidden_states) + hidden_states = self.nonlinearity(hidden_states) + hidden_states = self.dropout(hidden_states) + hidden_states = self.conv2(hidden_states) + + if self.conv_shortcut is not None: + residual = self.conv_shortcut(residual) + + hidden_states = hidden_states + residual + return hidden_states + + +class HunyuanVideoMidBlock3D(nn.Module): + def __init__( + self, + in_channels: int, + dropout: float = 0.0, + num_layers: int = 1, + resnet_eps: float = 1e-6, + resnet_act_fn: str = "swish", + resnet_groups: int = 32, + add_attention: bool = True, + attention_head_dim: int = 1, + ) -> None: + super().__init__() + resnet_groups = resnet_groups if resnet_groups is not None else min(in_channels // 4, 32) + self.add_attention = add_attention + + # There is always at least one resnet + resnets = [ + HunyuanVideoResnetBlockCausal3D( + in_channels=in_channels, + out_channels=in_channels, + eps=resnet_eps, + groups=resnet_groups, + dropout=dropout, + non_linearity=resnet_act_fn, + ) + ] + attentions = [] + + for _ in range(num_layers): + if self.add_attention: + attentions.append( + Attention( + in_channels, + heads=in_channels // attention_head_dim, + dim_head=attention_head_dim, + eps=resnet_eps, + norm_num_groups=resnet_groups, + residual_connection=True, + bias=True, + upcast_softmax=True, + _from_deprecated_attn_block=True, + ) + ) + else: + attentions.append(None) + + resnets.append( + HunyuanVideoResnetBlockCausal3D( + in_channels=in_channels, + out_channels=in_channels, + eps=resnet_eps, + groups=resnet_groups, + dropout=dropout, + non_linearity=resnet_act_fn, + ) + ) + + self.attentions = nn.ModuleList(attentions) + self.resnets = nn.ModuleList(resnets) + + self.gradient_checkpointing = False + + def forward(self, hidden_states: torch.Tensor) -> torch.Tensor: + if torch.is_grad_enabled() and self.gradient_checkpointing: + + def create_custom_forward(module, return_dict=None): + def custom_forward(*inputs): + if return_dict is not None: + return module(*inputs, return_dict=return_dict) + else: + return module(*inputs) + + return custom_forward + + ckpt_kwargs: Dict[str, Any] = {"use_reentrant": False} if is_torch_version(">=", "1.11.0") else {} + + hidden_states = torch.utils.checkpoint.checkpoint( + create_custom_forward(self.resnets[0]), hidden_states, **ckpt_kwargs + ) + + for attn, resnet in zip(self.attentions, self.resnets[1:]): + if attn is not None: + batch_size, num_channels, num_frames, height, width = hidden_states.shape + hidden_states = hidden_states.permute(0, 2, 3, 4, 1).flatten(1, 3) + attention_mask = prepare_causal_attention_mask( + num_frames, height * width, hidden_states.dtype, hidden_states.device, batch_size=batch_size + ) + hidden_states = attn(hidden_states, attention_mask=attention_mask) + hidden_states = hidden_states.unflatten(1, (num_frames, height, width)).permute(0, 4, 1, 2, 3) + + hidden_states = torch.utils.checkpoint.checkpoint( + create_custom_forward(resnet), hidden_states, **ckpt_kwargs + ) + + else: + hidden_states = self.resnets[0](hidden_states) + + for attn, resnet in zip(self.attentions, self.resnets[1:]): + if attn is not None: + batch_size, num_channels, num_frames, height, width = hidden_states.shape + hidden_states = hidden_states.permute(0, 2, 3, 4, 1).flatten(1, 3) + attention_mask = prepare_causal_attention_mask( + num_frames, height * width, hidden_states.dtype, hidden_states.device, batch_size=batch_size + ) + hidden_states = attn(hidden_states, attention_mask=attention_mask) + hidden_states = hidden_states.unflatten(1, (num_frames, height, width)).permute(0, 4, 1, 2, 3) + + hidden_states = resnet(hidden_states) + + return hidden_states + + +class HunyuanVideoDownBlock3D(nn.Module): + def __init__( + self, + in_channels: int, + out_channels: int, + dropout: float = 0.0, + num_layers: int = 1, + resnet_eps: float = 1e-6, + resnet_act_fn: str = "swish", + resnet_groups: int = 32, + add_downsample: bool = True, + downsample_stride: int = 2, + downsample_padding: int = 1, + ) -> None: + super().__init__() + resnets = [] + + for i in range(num_layers): + in_channels = in_channels if i == 0 else out_channels + resnets.append( + HunyuanVideoResnetBlockCausal3D( + in_channels=in_channels, + out_channels=out_channels, + eps=resnet_eps, + groups=resnet_groups, + dropout=dropout, + non_linearity=resnet_act_fn, + ) + ) + + self.resnets = nn.ModuleList(resnets) + + if add_downsample: + self.downsamplers = nn.ModuleList( + [ + HunyuanVideoDownsampleCausal3D( + out_channels, + out_channels=out_channels, + padding=downsample_padding, + stride=downsample_stride, + ) + ] + ) + else: + self.downsamplers = None + + self.gradient_checkpointing = False + + def forward(self, hidden_states: torch.Tensor) -> torch.Tensor: + if torch.is_grad_enabled() and self.gradient_checkpointing: + + def create_custom_forward(module, return_dict=None): + def custom_forward(*inputs): + if return_dict is not None: + return module(*inputs, return_dict=return_dict) + else: + return module(*inputs) + + return custom_forward + + ckpt_kwargs: Dict[str, Any] = {"use_reentrant": False} if is_torch_version(">=", "1.11.0") else {} + + for resnet in self.resnets: + hidden_states = torch.utils.checkpoint.checkpoint( + create_custom_forward(resnet), hidden_states, **ckpt_kwargs + ) + else: + for resnet in self.resnets: + hidden_states = resnet(hidden_states) + + if self.downsamplers is not None: + for downsampler in self.downsamplers: + hidden_states = downsampler(hidden_states) + + return hidden_states + + +class HunyuanVideoUpBlock3D(nn.Module): + def __init__( + self, + in_channels: int, + out_channels: int, + dropout: float = 0.0, + num_layers: int = 1, + resnet_eps: float = 1e-6, + resnet_act_fn: str = "swish", + resnet_groups: int = 32, + add_upsample: bool = True, + upsample_scale_factor: Tuple[int, int, int] = (2, 2, 2), + ) -> None: + super().__init__() + resnets = [] + + for i in range(num_layers): + input_channels = in_channels if i == 0 else out_channels + + resnets.append( + HunyuanVideoResnetBlockCausal3D( + in_channels=input_channels, + out_channels=out_channels, + eps=resnet_eps, + groups=resnet_groups, + dropout=dropout, + non_linearity=resnet_act_fn, + ) + ) + + self.resnets = nn.ModuleList(resnets) + + if add_upsample: + self.upsamplers = nn.ModuleList( + [ + HunyuanVideoUpsampleCausal3D( + out_channels, + out_channels=out_channels, + upsample_factor=upsample_scale_factor, + ) + ] + ) + else: + self.upsamplers = None + + self.gradient_checkpointing = False + + def forward(self, hidden_states: torch.Tensor) -> torch.Tensor: + if torch.is_grad_enabled() and self.gradient_checkpointing: + + def create_custom_forward(module, return_dict=None): + def custom_forward(*inputs): + if return_dict is not None: + return module(*inputs, return_dict=return_dict) + else: + return module(*inputs) + + return custom_forward + + ckpt_kwargs: Dict[str, Any] = {"use_reentrant": False} if is_torch_version(">=", "1.11.0") else {} + + for resnet in self.resnets: + hidden_states = torch.utils.checkpoint.checkpoint( + create_custom_forward(resnet), hidden_states, **ckpt_kwargs + ) + + else: + for resnet in self.resnets: + hidden_states = resnet(hidden_states) + + if self.upsamplers is not None: + for upsampler in self.upsamplers: + hidden_states = upsampler(hidden_states) + + return hidden_states + + +class HunyuanVideoEncoder3D(nn.Module): + r""" + Causal encoder for 3D video-like data introduced in [Hunyuan Video](https://huggingface.co/papers/2412.03603). + """ + + def __init__( + self, + in_channels: int = 3, + out_channels: int = 3, + down_block_types: Tuple[str, ...] = ( + "HunyuanVideoDownBlock3D", + "HunyuanVideoDownBlock3D", + "HunyuanVideoDownBlock3D", + "HunyuanVideoDownBlock3D", + ), + block_out_channels: Tuple[int, ...] = (128, 256, 512, 512), + layers_per_block: int = 2, + norm_num_groups: int = 32, + act_fn: str = "silu", + double_z: bool = True, + mid_block_add_attention=True, + temporal_compression_ratio: int = 4, + spatial_compression_ratio: int = 8, + ) -> None: + super().__init__() + + self.conv_in = HunyuanVideoCausalConv3d(in_channels, block_out_channels[0], kernel_size=3, stride=1) + self.mid_block = None + self.down_blocks = nn.ModuleList([]) + + output_channel = block_out_channels[0] + for i, down_block_type in enumerate(down_block_types): + if down_block_type != "HunyuanVideoDownBlock3D": + raise ValueError(f"Unsupported down_block_type: {down_block_type}") + + input_channel = output_channel + output_channel = block_out_channels[i] + is_final_block = i == len(block_out_channels) - 1 + num_spatial_downsample_layers = int(np.log2(spatial_compression_ratio)) + num_time_downsample_layers = int(np.log2(temporal_compression_ratio)) + + if temporal_compression_ratio == 4: + add_spatial_downsample = bool(i < num_spatial_downsample_layers) + add_time_downsample = bool( + i >= (len(block_out_channels) - 1 - num_time_downsample_layers) and not is_final_block + ) + elif temporal_compression_ratio == 8: + add_spatial_downsample = bool(i < num_spatial_downsample_layers) + add_time_downsample = bool(i < num_time_downsample_layers) + else: + raise ValueError(f"Unsupported time_compression_ratio: {temporal_compression_ratio}") + + downsample_stride_HW = (2, 2) if add_spatial_downsample else (1, 1) + downsample_stride_T = (2,) if add_time_downsample else (1,) + downsample_stride = tuple(downsample_stride_T + downsample_stride_HW) + + down_block = HunyuanVideoDownBlock3D( + num_layers=layers_per_block, + in_channels=input_channel, + out_channels=output_channel, + add_downsample=bool(add_spatial_downsample or add_time_downsample), + resnet_eps=1e-6, + resnet_act_fn=act_fn, + resnet_groups=norm_num_groups, + downsample_stride=downsample_stride, + downsample_padding=0, + ) + + self.down_blocks.append(down_block) + + self.mid_block = HunyuanVideoMidBlock3D( + in_channels=block_out_channels[-1], + resnet_eps=1e-6, + resnet_act_fn=act_fn, + attention_head_dim=block_out_channels[-1], + resnet_groups=norm_num_groups, + add_attention=mid_block_add_attention, + ) + + self.conv_norm_out = nn.GroupNorm(num_channels=block_out_channels[-1], num_groups=norm_num_groups, eps=1e-6) + self.conv_act = nn.SiLU() + + conv_out_channels = 2 * out_channels if double_z else out_channels + self.conv_out = HunyuanVideoCausalConv3d(block_out_channels[-1], conv_out_channels, kernel_size=3) + + self.gradient_checkpointing = False + + def forward(self, hidden_states: torch.Tensor) -> torch.Tensor: + hidden_states = self.conv_in(hidden_states) + + if torch.is_grad_enabled() and self.gradient_checkpointing: + + def create_custom_forward(module, return_dict=None): + def custom_forward(*inputs): + if return_dict is not None: + return module(*inputs, return_dict=return_dict) + else: + return module(*inputs) + + return custom_forward + + ckpt_kwargs: Dict[str, Any] = {"use_reentrant": False} if is_torch_version(">=", "1.11.0") else {} + + for down_block in self.down_blocks: + hidden_states = torch.utils.checkpoint.checkpoint( + create_custom_forward(down_block), hidden_states, **ckpt_kwargs + ) + + hidden_states = torch.utils.checkpoint.checkpoint( + create_custom_forward(self.mid_block), hidden_states, **ckpt_kwargs + ) + else: + for down_block in self.down_blocks: + hidden_states = down_block(hidden_states) + + hidden_states = self.mid_block(hidden_states) + + hidden_states = self.conv_norm_out(hidden_states) + hidden_states = self.conv_act(hidden_states) + hidden_states = self.conv_out(hidden_states) + + return hidden_states + + +class HunyuanVideoDecoder3D(nn.Module): + r""" + Causal decoder for 3D video-like data introduced in [Hunyuan Video](https://huggingface.co/papers/2412.03603). + """ + + def __init__( + self, + in_channels: int = 3, + out_channels: int = 3, + up_block_types: Tuple[str, ...] = ( + "HunyuanVideoUpBlock3D", + "HunyuanVideoUpBlock3D", + "HunyuanVideoUpBlock3D", + "HunyuanVideoUpBlock3D", + ), + block_out_channels: Tuple[int, ...] = (128, 256, 512, 512), + layers_per_block: int = 2, + norm_num_groups: int = 32, + act_fn: str = "silu", + mid_block_add_attention=True, + time_compression_ratio: int = 4, + spatial_compression_ratio: int = 8, + ): + super().__init__() + self.layers_per_block = layers_per_block + + self.conv_in = HunyuanVideoCausalConv3d(in_channels, block_out_channels[-1], kernel_size=3, stride=1) + self.up_blocks = nn.ModuleList([]) + + # mid + self.mid_block = HunyuanVideoMidBlock3D( + in_channels=block_out_channels[-1], + resnet_eps=1e-6, + resnet_act_fn=act_fn, + attention_head_dim=block_out_channels[-1], + resnet_groups=norm_num_groups, + add_attention=mid_block_add_attention, + ) + + # up + reversed_block_out_channels = list(reversed(block_out_channels)) + output_channel = reversed_block_out_channels[0] + for i, up_block_type in enumerate(up_block_types): + if up_block_type != "HunyuanVideoUpBlock3D": + raise ValueError(f"Unsupported up_block_type: {up_block_type}") + + prev_output_channel = output_channel + output_channel = reversed_block_out_channels[i] + is_final_block = i == len(block_out_channels) - 1 + num_spatial_upsample_layers = int(np.log2(spatial_compression_ratio)) + num_time_upsample_layers = int(np.log2(time_compression_ratio)) + + if time_compression_ratio == 4: + add_spatial_upsample = bool(i < num_spatial_upsample_layers) + add_time_upsample = bool( + i >= len(block_out_channels) - 1 - num_time_upsample_layers and not is_final_block + ) + else: + raise ValueError(f"Unsupported time_compression_ratio: {time_compression_ratio}") + + upsample_scale_factor_HW = (2, 2) if add_spatial_upsample else (1, 1) + upsample_scale_factor_T = (2,) if add_time_upsample else (1,) + upsample_scale_factor = tuple(upsample_scale_factor_T + upsample_scale_factor_HW) + + up_block = HunyuanVideoUpBlock3D( + num_layers=self.layers_per_block + 1, + in_channels=prev_output_channel, + out_channels=output_channel, + add_upsample=bool(add_spatial_upsample or add_time_upsample), + upsample_scale_factor=upsample_scale_factor, + resnet_eps=1e-6, + resnet_act_fn=act_fn, + resnet_groups=norm_num_groups, + ) + + self.up_blocks.append(up_block) + prev_output_channel = output_channel + + # out + self.conv_norm_out = nn.GroupNorm(num_channels=block_out_channels[0], num_groups=norm_num_groups, eps=1e-6) + self.conv_act = nn.SiLU() + self.conv_out = HunyuanVideoCausalConv3d(block_out_channels[0], out_channels, kernel_size=3) + + self.gradient_checkpointing = False + + def forward(self, hidden_states: torch.Tensor) -> torch.Tensor: + hidden_states = self.conv_in(hidden_states) + + if torch.is_grad_enabled() and self.gradient_checkpointing: + + def create_custom_forward(module, return_dict=None): + def custom_forward(*inputs): + if return_dict is not None: + return module(*inputs, return_dict=return_dict) + else: + return module(*inputs) + + return custom_forward + + ckpt_kwargs: Dict[str, Any] = {"use_reentrant": False} if is_torch_version(">=", "1.11.0") else {} + + hidden_states = torch.utils.checkpoint.checkpoint( + create_custom_forward(self.mid_block), hidden_states, **ckpt_kwargs + ) + + for up_block in self.up_blocks: + hidden_states = torch.utils.checkpoint.checkpoint( + create_custom_forward(up_block), hidden_states, **ckpt_kwargs + ) + else: + hidden_states = self.mid_block(hidden_states) + + for up_block in self.up_blocks: + hidden_states = up_block(hidden_states) + + # post-process + hidden_states = self.conv_norm_out(hidden_states) + hidden_states = self.conv_act(hidden_states) + hidden_states = self.conv_out(hidden_states) + + return hidden_states + + +class AutoencoderKLHunyuanVideo(ModelMixin, ConfigMixin): + r""" + A VAE model with KL loss for encoding videos into latents and decoding latent representations into videos. + Introduced in [HunyuanVideo](https://huggingface.co/papers/2412.03603). + + This model inherits from [`ModelMixin`]. Check the superclass documentation for it's generic methods implemented + for all models (such as downloading or saving). + """ + + _supports_gradient_checkpointing = True + + @register_to_config + def __init__( + self, + in_channels: int = 3, + out_channels: int = 3, + latent_channels: int = 16, + down_block_types: Tuple[str, ...] = ( + "HunyuanVideoDownBlock3D", + "HunyuanVideoDownBlock3D", + "HunyuanVideoDownBlock3D", + "HunyuanVideoDownBlock3D", + ), + up_block_types: Tuple[str, ...] = ( + "HunyuanVideoUpBlock3D", + "HunyuanVideoUpBlock3D", + "HunyuanVideoUpBlock3D", + "HunyuanVideoUpBlock3D", + ), + block_out_channels: Tuple[int] = (128, 256, 512, 512), + layers_per_block: int = 2, + act_fn: str = "silu", + norm_num_groups: int = 32, + scaling_factor: float = 0.476986, + spatial_compression_ratio: int = 8, + temporal_compression_ratio: int = 4, + mid_block_add_attention: bool = True, + ) -> None: + super().__init__() + + self.time_compression_ratio = temporal_compression_ratio + + self.encoder = HunyuanVideoEncoder3D( + in_channels=in_channels, + out_channels=latent_channels, + down_block_types=down_block_types, + block_out_channels=block_out_channels, + layers_per_block=layers_per_block, + norm_num_groups=norm_num_groups, + act_fn=act_fn, + double_z=True, + mid_block_add_attention=mid_block_add_attention, + temporal_compression_ratio=temporal_compression_ratio, + spatial_compression_ratio=spatial_compression_ratio, + ) + + self.decoder = HunyuanVideoDecoder3D( + in_channels=latent_channels, + out_channels=out_channels, + up_block_types=up_block_types, + block_out_channels=block_out_channels, + layers_per_block=layers_per_block, + norm_num_groups=norm_num_groups, + act_fn=act_fn, + time_compression_ratio=temporal_compression_ratio, + spatial_compression_ratio=spatial_compression_ratio, + mid_block_add_attention=mid_block_add_attention, + ) + + self.quant_conv = nn.Conv3d(2 * latent_channels, 2 * latent_channels, kernel_size=1) + self.post_quant_conv = nn.Conv3d(latent_channels, latent_channels, kernel_size=1) + + self.spatial_compression_ratio = spatial_compression_ratio + self.temporal_compression_ratio = temporal_compression_ratio + + # When decoding a batch of video latents at a time, one can save memory by slicing across the batch dimension + # to perform decoding of a single video latent at a time. + self.use_slicing = False + + # When decoding spatially large video latents, the memory requirement is very high. By breaking the video latent + # frames spatially into smaller tiles and performing multiple forward passes for decoding, and then blending the + # intermediate tiles together, the memory requirement can be lowered. + self.use_tiling = False + + # When decoding temporally long video latents, the memory requirement is very high. By decoding latent frames + # at a fixed frame batch size (based on `self.num_latent_frames_batch_sizes`), the memory requirement can be lowered. + self.use_framewise_encoding = True + self.use_framewise_decoding = True + + # The minimal tile height and width for spatial tiling to be used + self.tile_sample_min_height = 256 + self.tile_sample_min_width = 256 + self.tile_sample_min_num_frames = 16 + + # The minimal distance between two spatial tiles + self.tile_sample_stride_height = 192 + self.tile_sample_stride_width = 192 + self.tile_sample_stride_num_frames = 12 + + def _set_gradient_checkpointing(self, module, value=False): + if isinstance(module, (HunyuanVideoEncoder3D, HunyuanVideoDecoder3D)): + module.gradient_checkpointing = value + + def enable_tiling( + self, + tile_sample_min_height: Optional[int] = None, + tile_sample_min_width: Optional[int] = None, + tile_sample_min_num_frames: Optional[int] = None, + tile_sample_stride_height: Optional[float] = None, + tile_sample_stride_width: Optional[float] = None, + tile_sample_stride_num_frames: Optional[float] = None, + ) -> None: + r""" + Enable tiled VAE decoding. When this option is enabled, the VAE will split the input tensor into tiles to + compute decoding and encoding in several steps. This is useful for saving a large amount of memory and to allow + processing larger images. + + Args: + tile_sample_min_height (`int`, *optional*): + The minimum height required for a sample to be separated into tiles across the height dimension. + tile_sample_min_width (`int`, *optional*): + The minimum width required for a sample to be separated into tiles across the width dimension. + tile_sample_min_num_frames (`int`, *optional*): + The minimum number of frames required for a sample to be separated into tiles across the frame + dimension. + tile_sample_stride_height (`int`, *optional*): + The minimum amount of overlap between two consecutive vertical tiles. This is to ensure that there are + no tiling artifacts produced across the height dimension. + tile_sample_stride_width (`int`, *optional*): + The stride between two consecutive horizontal tiles. This is to ensure that there are no tiling + artifacts produced across the width dimension. + tile_sample_stride_num_frames (`int`, *optional*): + The stride between two consecutive frame tiles. This is to ensure that there are no tiling artifacts + produced across the frame dimension. + """ + self.use_tiling = True + self.tile_sample_min_height = tile_sample_min_height or self.tile_sample_min_height + self.tile_sample_min_width = tile_sample_min_width or self.tile_sample_min_width + self.tile_sample_min_num_frames = tile_sample_min_num_frames or self.tile_sample_min_num_frames + self.tile_sample_stride_height = tile_sample_stride_height or self.tile_sample_stride_height + self.tile_sample_stride_width = tile_sample_stride_width or self.tile_sample_stride_width + self.tile_sample_stride_num_frames = tile_sample_stride_num_frames or self.tile_sample_stride_num_frames + + def disable_tiling(self) -> None: + r""" + Disable tiled VAE decoding. If `enable_tiling` was previously enabled, this method will go back to computing + decoding in one step. + """ + self.use_tiling = False + + def enable_slicing(self) -> None: + r""" + Enable sliced VAE decoding. When this option is enabled, the VAE will split the input tensor in slices to + compute decoding in several steps. This is useful to save some memory and allow larger batch sizes. + """ + self.use_slicing = True + + def disable_slicing(self) -> None: + r""" + Disable sliced VAE decoding. If `enable_slicing` was previously enabled, this method will go back to computing + decoding in one step. + """ + self.use_slicing = False + + def _encode(self, x: torch.Tensor) -> torch.Tensor: + batch_size, num_channels, num_frames, height, width = x.shape + + if self.use_framewise_decoding and num_frames > self.tile_sample_min_num_frames: + return self._temporal_tiled_encode(x) + + if self.use_tiling and (width > self.tile_sample_min_width or height > self.tile_sample_min_height): + return self.tiled_encode(x) + + x = self.encoder(x) + enc = self.quant_conv(x) + return enc + + @apply_forward_hook + def encode( + self, x: torch.Tensor, return_dict: bool = True + ) -> Union[AutoencoderKLOutput, Tuple[DiagonalGaussianDistribution]]: + r""" + Encode a batch of images into latents. + + Args: + x (`torch.Tensor`): Input batch of images. + return_dict (`bool`, *optional*, defaults to `True`): + Whether to return a [`~models.autoencoder_kl.AutoencoderKLOutput`] instead of a plain tuple. + + Returns: + The latent representations of the encoded videos. If `return_dict` is True, a + [`~models.autoencoder_kl.AutoencoderKLOutput`] is returned, otherwise a plain `tuple` is returned. + """ + if self.use_slicing and x.shape[0] > 1: + encoded_slices = [self._encode(x_slice) for x_slice in x.split(1)] + h = torch.cat(encoded_slices) + else: + h = self._encode(x) + + posterior = DiagonalGaussianDistribution(h) + + if not return_dict: + return (posterior,) + return AutoencoderKLOutput(latent_dist=posterior) + + def _decode(self, z: torch.Tensor, return_dict: bool = True) -> Union[DecoderOutput, torch.Tensor]: + batch_size, num_channels, num_frames, height, width = z.shape + tile_latent_min_height = self.tile_sample_min_height // self.spatial_compression_ratio + tile_latent_min_width = self.tile_sample_stride_width // self.spatial_compression_ratio + tile_latent_min_num_frames = self.tile_sample_min_num_frames // self.temporal_compression_ratio + + if self.use_framewise_decoding and num_frames > tile_latent_min_num_frames: + return self._temporal_tiled_decode(z, return_dict=return_dict) + + if self.use_tiling and (width > tile_latent_min_width or height > tile_latent_min_height): + return self.tiled_decode(z, return_dict=return_dict) + + z = self.post_quant_conv(z) + dec = self.decoder(z) + + if not return_dict: + return (dec,) + + return DecoderOutput(sample=dec) + + @apply_forward_hook + def decode(self, z: torch.Tensor, return_dict: bool = True) -> Union[DecoderOutput, torch.Tensor]: + r""" + Decode a batch of images. + + Args: + z (`torch.Tensor`): Input batch of latent vectors. + return_dict (`bool`, *optional*, defaults to `True`): + Whether to return a [`~models.vae.DecoderOutput`] instead of a plain tuple. + + Returns: + [`~models.vae.DecoderOutput`] or `tuple`: + If return_dict is True, a [`~models.vae.DecoderOutput`] is returned, otherwise a plain `tuple` is + returned. + """ + if self.use_slicing and z.shape[0] > 1: + decoded_slices = [self._decode(z_slice).sample for z_slice in z.split(1)] + decoded = torch.cat(decoded_slices) + else: + decoded = self._decode(z).sample + + if not return_dict: + return (decoded,) + + return DecoderOutput(sample=decoded) + + def blend_v(self, a: torch.Tensor, b: torch.Tensor, blend_extent: int) -> torch.Tensor: + blend_extent = min(a.shape[-2], b.shape[-2], blend_extent) + for y in range(blend_extent): + b[:, :, :, y, :] = a[:, :, :, -blend_extent + y, :] * (1 - y / blend_extent) + b[:, :, :, y, :] * ( + y / blend_extent + ) + return b + + def blend_h(self, a: torch.Tensor, b: torch.Tensor, blend_extent: int) -> torch.Tensor: + blend_extent = min(a.shape[-1], b.shape[-1], blend_extent) + for x in range(blend_extent): + b[:, :, :, :, x] = a[:, :, :, :, -blend_extent + x] * (1 - x / blend_extent) + b[:, :, :, :, x] * ( + x / blend_extent + ) + return b + + def blend_t(self, a: torch.Tensor, b: torch.Tensor, blend_extent: int) -> torch.Tensor: + blend_extent = min(a.shape[-3], b.shape[-3], blend_extent) + for x in range(blend_extent): + b[:, :, x, :, :] = a[:, :, -blend_extent + x, :, :] * (1 - x / blend_extent) + b[:, :, x, :, :] * ( + x / blend_extent + ) + return b + + def tiled_encode(self, x: torch.Tensor) -> AutoencoderKLOutput: + r"""Encode a batch of images using a tiled encoder. + + Args: + x (`torch.Tensor`): Input batch of videos. + + Returns: + `torch.Tensor`: + The latent representation of the encoded videos. + """ + batch_size, num_channels, num_frames, height, width = x.shape + latent_height = height // self.spatial_compression_ratio + latent_width = width // self.spatial_compression_ratio + + tile_latent_min_height = self.tile_sample_min_height // self.spatial_compression_ratio + tile_latent_min_width = self.tile_sample_min_width // self.spatial_compression_ratio + tile_latent_stride_height = self.tile_sample_stride_height // self.spatial_compression_ratio + tile_latent_stride_width = self.tile_sample_stride_width // self.spatial_compression_ratio + + blend_height = tile_latent_min_height - tile_latent_stride_height + blend_width = tile_latent_min_width - tile_latent_stride_width + + # Split x into overlapping tiles and encode them separately. + # The tiles have an overlap to avoid seams between tiles. + rows = [] + for i in range(0, height, self.tile_sample_stride_height): + row = [] + for j in range(0, width, self.tile_sample_stride_width): + tile = x[:, :, :, i : i + self.tile_sample_min_height, j : j + self.tile_sample_min_width] + tile = self.encoder(tile) + tile = self.quant_conv(tile) + row.append(tile) + rows.append(row) + + result_rows = [] + for i, row in enumerate(rows): + result_row = [] + for j, tile in enumerate(row): + # blend the above tile and the left tile + # to the current tile and add the current tile to the result row + if i > 0: + tile = self.blend_v(rows[i - 1][j], tile, blend_height) + if j > 0: + tile = self.blend_h(row[j - 1], tile, blend_width) + result_row.append(tile[:, :, :, :tile_latent_stride_height, :tile_latent_stride_width]) + result_rows.append(torch.cat(result_row, dim=4)) + + enc = torch.cat(result_rows, dim=3)[:, :, :, :latent_height, :latent_width] + return enc + + def tiled_decode(self, z: torch.Tensor, return_dict: bool = True) -> Union[DecoderOutput, torch.Tensor]: + r""" + Decode a batch of images using a tiled decoder. + + Args: + z (`torch.Tensor`): Input batch of latent vectors. + return_dict (`bool`, *optional*, defaults to `True`): + Whether or not to return a [`~models.vae.DecoderOutput`] instead of a plain tuple. + + Returns: + [`~models.vae.DecoderOutput`] or `tuple`: + If return_dict is True, a [`~models.vae.DecoderOutput`] is returned, otherwise a plain `tuple` is + returned. + """ + + batch_size, num_channels, num_frames, height, width = z.shape + sample_height = height * self.spatial_compression_ratio + sample_width = width * self.spatial_compression_ratio + + tile_latent_min_height = self.tile_sample_min_height // self.spatial_compression_ratio + tile_latent_min_width = self.tile_sample_min_width // self.spatial_compression_ratio + tile_latent_stride_height = self.tile_sample_stride_height // self.spatial_compression_ratio + tile_latent_stride_width = self.tile_sample_stride_width // self.spatial_compression_ratio + + blend_height = self.tile_sample_min_height - self.tile_sample_stride_height + blend_width = self.tile_sample_min_width - self.tile_sample_stride_width + + # Split z into overlapping tiles and decode them separately. + # The tiles have an overlap to avoid seams between tiles. + rows = [] + for i in range(0, height, tile_latent_stride_height): + row = [] + for j in range(0, width, tile_latent_stride_width): + tile = z[:, :, :, i : i + tile_latent_min_height, j : j + tile_latent_min_width] + tile = self.post_quant_conv(tile) + decoded = self.decoder(tile) + row.append(decoded) + rows.append(row) + + result_rows = [] + for i, row in enumerate(rows): + result_row = [] + for j, tile in enumerate(row): + # blend the above tile and the left tile + # to the current tile and add the current tile to the result row + if i > 0: + tile = self.blend_v(rows[i - 1][j], tile, blend_height) + if j > 0: + tile = self.blend_h(row[j - 1], tile, blend_width) + result_row.append(tile[:, :, :, : self.tile_sample_stride_height, : self.tile_sample_stride_width]) + result_rows.append(torch.cat(result_row, dim=-1)) + + dec = torch.cat(result_rows, dim=3)[:, :, :, :sample_height, :sample_width] + + if not return_dict: + return (dec,) + return DecoderOutput(sample=dec) + + def _temporal_tiled_encode(self, x: torch.Tensor) -> AutoencoderKLOutput: + batch_size, num_channels, num_frames, height, width = x.shape + latent_num_frames = (num_frames - 1) // self.temporal_compression_ratio + 1 + + tile_latent_min_num_frames = self.tile_sample_min_num_frames // self.temporal_compression_ratio + tile_latent_stride_num_frames = self.tile_sample_stride_num_frames // self.temporal_compression_ratio + blend_num_frames = tile_latent_min_num_frames - tile_latent_stride_num_frames + + row = [] + for i in range(0, num_frames, self.tile_sample_stride_num_frames): + tile = x[:, :, i : i + self.tile_sample_min_num_frames + 1, :, :] + if self.use_tiling and (height > self.tile_sample_min_height or width > self.tile_sample_min_width): + tile = self.tiled_encode(tile) + else: + tile = self.encoder(tile) + tile = self.quant_conv(tile) + if i > 0: + tile = tile[:, :, 1:, :, :] + row.append(tile) + + result_row = [] + for i, tile in enumerate(row): + if i > 0: + tile = self.blend_t(row[i - 1], tile, blend_num_frames) + result_row.append(tile[:, :, :tile_latent_stride_num_frames, :, :]) + else: + result_row.append(tile[:, :, : tile_latent_stride_num_frames + 1, :, :]) + + enc = torch.cat(result_row, dim=2)[:, :, :latent_num_frames] + return enc + + def _temporal_tiled_decode(self, z: torch.Tensor, return_dict: bool = True) -> Union[DecoderOutput, torch.Tensor]: + batch_size, num_channels, num_frames, height, width = z.shape + num_sample_frames = (num_frames - 1) * self.temporal_compression_ratio + 1 + + tile_latent_min_height = self.tile_sample_min_height // self.spatial_compression_ratio + tile_latent_min_width = self.tile_sample_min_width // self.spatial_compression_ratio + tile_latent_min_num_frames = self.tile_sample_min_num_frames // self.temporal_compression_ratio + tile_latent_stride_num_frames = self.tile_sample_stride_num_frames // self.temporal_compression_ratio + blend_num_frames = self.tile_sample_min_num_frames - self.tile_sample_stride_num_frames + + row = [] + for i in range(0, num_frames, tile_latent_stride_num_frames): + tile = z[:, :, i : i + tile_latent_min_num_frames + 1, :, :] + if self.use_tiling and (tile.shape[-1] > tile_latent_min_width or tile.shape[-2] > tile_latent_min_height): + decoded = self.tiled_decode(tile, return_dict=True).sample + else: + tile = self.post_quant_conv(tile) + decoded = self.decoder(tile) + if i > 0: + decoded = decoded[:, :, 1:, :, :] + row.append(decoded) + + result_row = [] + for i, tile in enumerate(row): + if i > 0: + tile = self.blend_t(row[i - 1], tile, blend_num_frames) + result_row.append(tile[:, :, : self.tile_sample_stride_num_frames, :, :]) + else: + result_row.append(tile[:, :, : self.tile_sample_stride_num_frames + 1, :, :]) + + dec = torch.cat(result_row, dim=2)[:, :, :num_sample_frames] + + if not return_dict: + return (dec,) + return DecoderOutput(sample=dec) + + def forward( + self, + sample: torch.Tensor, + sample_posterior: bool = False, + return_dict: bool = True, + generator: Optional[torch.Generator] = None, + ) -> Union[DecoderOutput, torch.Tensor]: + r""" + Args: + sample (`torch.Tensor`): Input sample. + sample_posterior (`bool`, *optional*, defaults to `False`): + Whether to sample from the posterior. + return_dict (`bool`, *optional*, defaults to `True`): + Whether or not to return a [`DecoderOutput`] instead of a plain tuple. + """ + x = sample + posterior = self.encode(x).latent_dist + if sample_posterior: + z = posterior.sample(generator=generator) + else: + z = posterior.mode() + dec = self.decode(z, return_dict=return_dict) + return dec diff --git a/venv/lib/python3.11/site-packages/diffusers/models/autoencoders/autoencoder_kl_ltx.py b/venv/lib/python3.11/site-packages/diffusers/models/autoencoders/autoencoder_kl_ltx.py new file mode 100644 index 0000000000000000000000000000000000000000..9aa53f7af243a9451c580323ea8777f473f35591 --- /dev/null +++ b/venv/lib/python3.11/site-packages/diffusers/models/autoencoders/autoencoder_kl_ltx.py @@ -0,0 +1,1338 @@ +# Copyright 2024 The Lightricks team and The HuggingFace Team. +# All rights reserved. +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. + +from typing import Optional, Tuple, Union + +import torch +import torch.nn as nn + +from ...configuration_utils import ConfigMixin, register_to_config +from ...loaders import FromOriginalModelMixin +from ...utils.accelerate_utils import apply_forward_hook +from ..activations import get_activation +from ..embeddings import PixArtAlphaCombinedTimestepSizeEmbeddings +from ..modeling_outputs import AutoencoderKLOutput +from ..modeling_utils import ModelMixin +from ..normalization import RMSNorm +from .vae import DecoderOutput, DiagonalGaussianDistribution + + +class LTXVideoCausalConv3d(nn.Module): + def __init__( + self, + in_channels: int, + out_channels: int, + kernel_size: Union[int, Tuple[int, int, int]] = 3, + stride: Union[int, Tuple[int, int, int]] = 1, + dilation: Union[int, Tuple[int, int, int]] = 1, + groups: int = 1, + padding_mode: str = "zeros", + is_causal: bool = True, + ): + super().__init__() + + self.in_channels = in_channels + self.out_channels = out_channels + self.is_causal = is_causal + self.kernel_size = kernel_size if isinstance(kernel_size, tuple) else (kernel_size, kernel_size, kernel_size) + + dilation = dilation if isinstance(dilation, tuple) else (dilation, 1, 1) + stride = stride if isinstance(stride, tuple) else (stride, stride, stride) + height_pad = self.kernel_size[1] // 2 + width_pad = self.kernel_size[2] // 2 + padding = (0, height_pad, width_pad) + + self.conv = nn.Conv3d( + in_channels, + out_channels, + self.kernel_size, + stride=stride, + dilation=dilation, + groups=groups, + padding=padding, + padding_mode=padding_mode, + ) + + def forward(self, hidden_states: torch.Tensor) -> torch.Tensor: + time_kernel_size = self.kernel_size[0] + + if self.is_causal: + pad_left = hidden_states[:, :, :1, :, :].repeat((1, 1, time_kernel_size - 1, 1, 1)) + hidden_states = torch.concatenate([pad_left, hidden_states], dim=2) + else: + pad_left = hidden_states[:, :, :1, :, :].repeat((1, 1, (time_kernel_size - 1) // 2, 1, 1)) + pad_right = hidden_states[:, :, -1:, :, :].repeat((1, 1, (time_kernel_size - 1) // 2, 1, 1)) + hidden_states = torch.concatenate([pad_left, hidden_states, pad_right], dim=2) + + hidden_states = self.conv(hidden_states) + return hidden_states + + +class LTXVideoResnetBlock3d(nn.Module): + r""" + A 3D ResNet block used in the LTXVideo model. + + Args: + in_channels (`int`): + Number of input channels. + out_channels (`int`, *optional*): + Number of output channels. If None, defaults to `in_channels`. + dropout (`float`, defaults to `0.0`): + Dropout rate. + eps (`float`, defaults to `1e-6`): + Epsilon value for normalization layers. + elementwise_affine (`bool`, defaults to `False`): + Whether to enable elementwise affinity in the normalization layers. + non_linearity (`str`, defaults to `"swish"`): + Activation function to use. + conv_shortcut (bool, defaults to `False`): + Whether or not to use a convolution shortcut. + """ + + def __init__( + self, + in_channels: int, + out_channels: Optional[int] = None, + dropout: float = 0.0, + eps: float = 1e-6, + elementwise_affine: bool = False, + non_linearity: str = "swish", + is_causal: bool = True, + inject_noise: bool = False, + timestep_conditioning: bool = False, + ) -> None: + super().__init__() + + out_channels = out_channels or in_channels + + self.nonlinearity = get_activation(non_linearity) + + self.norm1 = RMSNorm(in_channels, eps=1e-8, elementwise_affine=elementwise_affine) + self.conv1 = LTXVideoCausalConv3d( + in_channels=in_channels, out_channels=out_channels, kernel_size=3, is_causal=is_causal + ) + + self.norm2 = RMSNorm(out_channels, eps=1e-8, elementwise_affine=elementwise_affine) + self.dropout = nn.Dropout(dropout) + self.conv2 = LTXVideoCausalConv3d( + in_channels=out_channels, out_channels=out_channels, kernel_size=3, is_causal=is_causal + ) + + self.norm3 = None + self.conv_shortcut = None + if in_channels != out_channels: + self.norm3 = nn.LayerNorm(in_channels, eps=eps, elementwise_affine=True, bias=True) + self.conv_shortcut = LTXVideoCausalConv3d( + in_channels=in_channels, out_channels=out_channels, kernel_size=1, stride=1, is_causal=is_causal + ) + + self.per_channel_scale1 = None + self.per_channel_scale2 = None + if inject_noise: + self.per_channel_scale1 = nn.Parameter(torch.zeros(in_channels, 1, 1)) + self.per_channel_scale2 = nn.Parameter(torch.zeros(in_channels, 1, 1)) + + self.scale_shift_table = None + if timestep_conditioning: + self.scale_shift_table = nn.Parameter(torch.randn(4, in_channels) / in_channels**0.5) + + def forward( + self, inputs: torch.Tensor, temb: Optional[torch.Tensor] = None, generator: Optional[torch.Generator] = None + ) -> torch.Tensor: + hidden_states = inputs + + hidden_states = self.norm1(hidden_states.movedim(1, -1)).movedim(-1, 1) + + if self.scale_shift_table is not None: + temb = temb.unflatten(1, (4, -1)) + self.scale_shift_table[None, ..., None, None, None] + shift_1, scale_1, shift_2, scale_2 = temb.unbind(dim=1) + hidden_states = hidden_states * (1 + scale_1) + shift_1 + + hidden_states = self.nonlinearity(hidden_states) + hidden_states = self.conv1(hidden_states) + + if self.per_channel_scale1 is not None: + spatial_shape = hidden_states.shape[-2:] + spatial_noise = torch.randn( + spatial_shape, generator=generator, device=hidden_states.device, dtype=hidden_states.dtype + )[None] + hidden_states = hidden_states + (spatial_noise * self.per_channel_scale1)[None, :, None, ...] + + hidden_states = self.norm2(hidden_states.movedim(1, -1)).movedim(-1, 1) + + if self.scale_shift_table is not None: + hidden_states = hidden_states * (1 + scale_2) + shift_2 + + hidden_states = self.nonlinearity(hidden_states) + hidden_states = self.dropout(hidden_states) + hidden_states = self.conv2(hidden_states) + + if self.per_channel_scale2 is not None: + spatial_shape = hidden_states.shape[-2:] + spatial_noise = torch.randn( + spatial_shape, generator=generator, device=hidden_states.device, dtype=hidden_states.dtype + )[None] + hidden_states = hidden_states + (spatial_noise * self.per_channel_scale2)[None, :, None, ...] + + if self.norm3 is not None: + inputs = self.norm3(inputs.movedim(1, -1)).movedim(-1, 1) + + if self.conv_shortcut is not None: + inputs = self.conv_shortcut(inputs) + + hidden_states = hidden_states + inputs + return hidden_states + + +class LTXVideoUpsampler3d(nn.Module): + def __init__( + self, + in_channels: int, + stride: Union[int, Tuple[int, int, int]] = 1, + is_causal: bool = True, + residual: bool = False, + upscale_factor: int = 1, + ) -> None: + super().__init__() + + self.stride = stride if isinstance(stride, tuple) else (stride, stride, stride) + self.residual = residual + self.upscale_factor = upscale_factor + + out_channels = (in_channels * stride[0] * stride[1] * stride[2]) // upscale_factor + + self.conv = LTXVideoCausalConv3d( + in_channels=in_channels, + out_channels=out_channels, + kernel_size=3, + stride=1, + is_causal=is_causal, + ) + + def forward(self, hidden_states: torch.Tensor) -> torch.Tensor: + batch_size, num_channels, num_frames, height, width = hidden_states.shape + + if self.residual: + residual = hidden_states.reshape( + batch_size, -1, self.stride[0], self.stride[1], self.stride[2], num_frames, height, width + ) + residual = residual.permute(0, 1, 5, 2, 6, 3, 7, 4).flatten(6, 7).flatten(4, 5).flatten(2, 3) + repeats = (self.stride[0] * self.stride[1] * self.stride[2]) // self.upscale_factor + residual = residual.repeat(1, repeats, 1, 1, 1) + residual = residual[:, :, self.stride[0] - 1 :] + + hidden_states = self.conv(hidden_states) + hidden_states = hidden_states.reshape( + batch_size, -1, self.stride[0], self.stride[1], self.stride[2], num_frames, height, width + ) + hidden_states = hidden_states.permute(0, 1, 5, 2, 6, 3, 7, 4).flatten(6, 7).flatten(4, 5).flatten(2, 3) + hidden_states = hidden_states[:, :, self.stride[0] - 1 :] + + if self.residual: + hidden_states = hidden_states + residual + + return hidden_states + + +class LTXVideoDownBlock3D(nn.Module): + r""" + Down block used in the LTXVideo model. + + Args: + in_channels (`int`): + Number of input channels. + out_channels (`int`, *optional*): + Number of output channels. If None, defaults to `in_channels`. + num_layers (`int`, defaults to `1`): + Number of resnet layers. + dropout (`float`, defaults to `0.0`): + Dropout rate. + resnet_eps (`float`, defaults to `1e-6`): + Epsilon value for normalization layers. + resnet_act_fn (`str`, defaults to `"swish"`): + Activation function to use. + spatio_temporal_scale (`bool`, defaults to `True`): + Whether or not to use a downsampling layer. If not used, output dimension would be same as input dimension. + Whether or not to downsample across temporal dimension. + is_causal (`bool`, defaults to `True`): + Whether this layer behaves causally (future frames depend only on past frames) or not. + """ + + _supports_gradient_checkpointing = True + + def __init__( + self, + in_channels: int, + out_channels: Optional[int] = None, + num_layers: int = 1, + dropout: float = 0.0, + resnet_eps: float = 1e-6, + resnet_act_fn: str = "swish", + spatio_temporal_scale: bool = True, + is_causal: bool = True, + ): + super().__init__() + + out_channels = out_channels or in_channels + + resnets = [] + for _ in range(num_layers): + resnets.append( + LTXVideoResnetBlock3d( + in_channels=in_channels, + out_channels=in_channels, + dropout=dropout, + eps=resnet_eps, + non_linearity=resnet_act_fn, + is_causal=is_causal, + ) + ) + self.resnets = nn.ModuleList(resnets) + + self.downsamplers = None + if spatio_temporal_scale: + self.downsamplers = nn.ModuleList( + [ + LTXVideoCausalConv3d( + in_channels=in_channels, + out_channels=in_channels, + kernel_size=3, + stride=(2, 2, 2), + is_causal=is_causal, + ) + ] + ) + + self.conv_out = None + if in_channels != out_channels: + self.conv_out = LTXVideoResnetBlock3d( + in_channels=in_channels, + out_channels=out_channels, + dropout=dropout, + eps=resnet_eps, + non_linearity=resnet_act_fn, + is_causal=is_causal, + ) + + self.gradient_checkpointing = False + + def forward( + self, + hidden_states: torch.Tensor, + temb: Optional[torch.Tensor] = None, + generator: Optional[torch.Generator] = None, + ) -> torch.Tensor: + r"""Forward method of the `LTXDownBlock3D` class.""" + + for i, resnet in enumerate(self.resnets): + if torch.is_grad_enabled() and self.gradient_checkpointing: + + def create_custom_forward(module): + def create_forward(*inputs): + return module(*inputs) + + return create_forward + + hidden_states = torch.utils.checkpoint.checkpoint( + create_custom_forward(resnet), hidden_states, temb, generator + ) + else: + hidden_states = resnet(hidden_states, temb, generator) + + if self.downsamplers is not None: + for downsampler in self.downsamplers: + hidden_states = downsampler(hidden_states) + + if self.conv_out is not None: + hidden_states = self.conv_out(hidden_states, temb, generator) + + return hidden_states + + +# Adapted from diffusers.models.autoencoders.autoencoder_kl_cogvideox.CogVideoMidBlock3d +class LTXVideoMidBlock3d(nn.Module): + r""" + A middle block used in the LTXVideo model. + + Args: + in_channels (`int`): + Number of input channels. + num_layers (`int`, defaults to `1`): + Number of resnet layers. + dropout (`float`, defaults to `0.0`): + Dropout rate. + resnet_eps (`float`, defaults to `1e-6`): + Epsilon value for normalization layers. + resnet_act_fn (`str`, defaults to `"swish"`): + Activation function to use. + is_causal (`bool`, defaults to `True`): + Whether this layer behaves causally (future frames depend only on past frames) or not. + """ + + _supports_gradient_checkpointing = True + + def __init__( + self, + in_channels: int, + num_layers: int = 1, + dropout: float = 0.0, + resnet_eps: float = 1e-6, + resnet_act_fn: str = "swish", + is_causal: bool = True, + inject_noise: bool = False, + timestep_conditioning: bool = False, + ) -> None: + super().__init__() + + self.time_embedder = None + if timestep_conditioning: + self.time_embedder = PixArtAlphaCombinedTimestepSizeEmbeddings(in_channels * 4, 0) + + resnets = [] + for _ in range(num_layers): + resnets.append( + LTXVideoResnetBlock3d( + in_channels=in_channels, + out_channels=in_channels, + dropout=dropout, + eps=resnet_eps, + non_linearity=resnet_act_fn, + is_causal=is_causal, + inject_noise=inject_noise, + timestep_conditioning=timestep_conditioning, + ) + ) + self.resnets = nn.ModuleList(resnets) + + self.gradient_checkpointing = False + + def forward( + self, + hidden_states: torch.Tensor, + temb: Optional[torch.Tensor] = None, + generator: Optional[torch.Generator] = None, + ) -> torch.Tensor: + r"""Forward method of the `LTXMidBlock3D` class.""" + + if self.time_embedder is not None: + temb = self.time_embedder( + timestep=temb.flatten(), + resolution=None, + aspect_ratio=None, + batch_size=hidden_states.size(0), + hidden_dtype=hidden_states.dtype, + ) + temb = temb.view(hidden_states.size(0), -1, 1, 1, 1) + + for i, resnet in enumerate(self.resnets): + if torch.is_grad_enabled() and self.gradient_checkpointing: + + def create_custom_forward(module): + def create_forward(*inputs): + return module(*inputs) + + return create_forward + + hidden_states = torch.utils.checkpoint.checkpoint( + create_custom_forward(resnet), hidden_states, temb, generator + ) + else: + hidden_states = resnet(hidden_states, temb, generator) + + return hidden_states + + +class LTXVideoUpBlock3d(nn.Module): + r""" + Up block used in the LTXVideo model. + + Args: + in_channels (`int`): + Number of input channels. + out_channels (`int`, *optional*): + Number of output channels. If None, defaults to `in_channels`. + num_layers (`int`, defaults to `1`): + Number of resnet layers. + dropout (`float`, defaults to `0.0`): + Dropout rate. + resnet_eps (`float`, defaults to `1e-6`): + Epsilon value for normalization layers. + resnet_act_fn (`str`, defaults to `"swish"`): + Activation function to use. + spatio_temporal_scale (`bool`, defaults to `True`): + Whether or not to use a downsampling layer. If not used, output dimension would be same as input dimension. + Whether or not to downsample across temporal dimension. + is_causal (`bool`, defaults to `True`): + Whether this layer behaves causally (future frames depend only on past frames) or not. + """ + + _supports_gradient_checkpointing = True + + def __init__( + self, + in_channels: int, + out_channels: Optional[int] = None, + num_layers: int = 1, + dropout: float = 0.0, + resnet_eps: float = 1e-6, + resnet_act_fn: str = "swish", + spatio_temporal_scale: bool = True, + is_causal: bool = True, + inject_noise: bool = False, + timestep_conditioning: bool = False, + upsample_residual: bool = False, + upscale_factor: int = 1, + ): + super().__init__() + + out_channels = out_channels or in_channels + + self.time_embedder = None + if timestep_conditioning: + self.time_embedder = PixArtAlphaCombinedTimestepSizeEmbeddings(in_channels * 4, 0) + + self.conv_in = None + if in_channels != out_channels: + self.conv_in = LTXVideoResnetBlock3d( + in_channels=in_channels, + out_channels=out_channels, + dropout=dropout, + eps=resnet_eps, + non_linearity=resnet_act_fn, + is_causal=is_causal, + inject_noise=inject_noise, + timestep_conditioning=timestep_conditioning, + ) + + self.upsamplers = None + if spatio_temporal_scale: + self.upsamplers = nn.ModuleList( + [ + LTXVideoUpsampler3d( + out_channels * upscale_factor, + stride=(2, 2, 2), + is_causal=is_causal, + residual=upsample_residual, + upscale_factor=upscale_factor, + ) + ] + ) + + resnets = [] + for _ in range(num_layers): + resnets.append( + LTXVideoResnetBlock3d( + in_channels=out_channels, + out_channels=out_channels, + dropout=dropout, + eps=resnet_eps, + non_linearity=resnet_act_fn, + is_causal=is_causal, + inject_noise=inject_noise, + timestep_conditioning=timestep_conditioning, + ) + ) + self.resnets = nn.ModuleList(resnets) + + self.gradient_checkpointing = False + + def forward( + self, + hidden_states: torch.Tensor, + temb: Optional[torch.Tensor] = None, + generator: Optional[torch.Generator] = None, + ) -> torch.Tensor: + if self.conv_in is not None: + hidden_states = self.conv_in(hidden_states, temb, generator) + + if self.time_embedder is not None: + temb = self.time_embedder( + timestep=temb.flatten(), + resolution=None, + aspect_ratio=None, + batch_size=hidden_states.size(0), + hidden_dtype=hidden_states.dtype, + ) + temb = temb.view(hidden_states.size(0), -1, 1, 1, 1) + + if self.upsamplers is not None: + for upsampler in self.upsamplers: + hidden_states = upsampler(hidden_states) + + for i, resnet in enumerate(self.resnets): + if torch.is_grad_enabled() and self.gradient_checkpointing: + + def create_custom_forward(module): + def create_forward(*inputs): + return module(*inputs) + + return create_forward + + hidden_states = torch.utils.checkpoint.checkpoint( + create_custom_forward(resnet), hidden_states, temb, generator + ) + else: + hidden_states = resnet(hidden_states, temb, generator) + + return hidden_states + + +class LTXVideoEncoder3d(nn.Module): + r""" + The `LTXVideoEncoder3d` layer of a variational autoencoder that encodes input video samples to its latent + representation. + + Args: + in_channels (`int`, defaults to 3): + Number of input channels. + out_channels (`int`, defaults to 128): + Number of latent channels. + block_out_channels (`Tuple[int, ...]`, defaults to `(128, 256, 512, 512)`): + The number of output channels for each block. + spatio_temporal_scaling (`Tuple[bool, ...], defaults to `(True, True, True, False)`: + Whether a block should contain spatio-temporal downscaling layers or not. + layers_per_block (`Tuple[int, ...]`, defaults to `(4, 3, 3, 3, 4)`): + The number of layers per block. + patch_size (`int`, defaults to `4`): + The size of spatial patches. + patch_size_t (`int`, defaults to `1`): + The size of temporal patches. + resnet_norm_eps (`float`, defaults to `1e-6`): + Epsilon value for ResNet normalization layers. + is_causal (`bool`, defaults to `True`): + Whether this layer behaves causally (future frames depend only on past frames) or not. + """ + + def __init__( + self, + in_channels: int = 3, + out_channels: int = 128, + block_out_channels: Tuple[int, ...] = (128, 256, 512, 512), + spatio_temporal_scaling: Tuple[bool, ...] = (True, True, True, False), + layers_per_block: Tuple[int, ...] = (4, 3, 3, 3, 4), + patch_size: int = 4, + patch_size_t: int = 1, + resnet_norm_eps: float = 1e-6, + is_causal: bool = True, + ): + super().__init__() + + self.patch_size = patch_size + self.patch_size_t = patch_size_t + self.in_channels = in_channels * patch_size**2 + + output_channel = block_out_channels[0] + + self.conv_in = LTXVideoCausalConv3d( + in_channels=self.in_channels, + out_channels=output_channel, + kernel_size=3, + stride=1, + is_causal=is_causal, + ) + + # down blocks + num_block_out_channels = len(block_out_channels) + self.down_blocks = nn.ModuleList([]) + for i in range(num_block_out_channels): + input_channel = output_channel + output_channel = block_out_channels[i + 1] if i + 1 < num_block_out_channels else block_out_channels[i] + + down_block = LTXVideoDownBlock3D( + in_channels=input_channel, + out_channels=output_channel, + num_layers=layers_per_block[i], + resnet_eps=resnet_norm_eps, + spatio_temporal_scale=spatio_temporal_scaling[i], + is_causal=is_causal, + ) + + self.down_blocks.append(down_block) + + # mid block + self.mid_block = LTXVideoMidBlock3d( + in_channels=output_channel, + num_layers=layers_per_block[-1], + resnet_eps=resnet_norm_eps, + is_causal=is_causal, + ) + + # out + self.norm_out = RMSNorm(out_channels, eps=1e-8, elementwise_affine=False) + self.conv_act = nn.SiLU() + self.conv_out = LTXVideoCausalConv3d( + in_channels=output_channel, out_channels=out_channels + 1, kernel_size=3, stride=1, is_causal=is_causal + ) + + self.gradient_checkpointing = False + + def forward(self, hidden_states: torch.Tensor) -> torch.Tensor: + r"""The forward method of the `LTXVideoEncoder3d` class.""" + + p = self.patch_size + p_t = self.patch_size_t + + batch_size, num_channels, num_frames, height, width = hidden_states.shape + post_patch_num_frames = num_frames // p_t + post_patch_height = height // p + post_patch_width = width // p + + hidden_states = hidden_states.reshape( + batch_size, num_channels, post_patch_num_frames, p_t, post_patch_height, p, post_patch_width, p + ) + # Thanks for driving me insane with the weird patching order :( + hidden_states = hidden_states.permute(0, 1, 3, 7, 5, 2, 4, 6).flatten(1, 4) + hidden_states = self.conv_in(hidden_states) + + if torch.is_grad_enabled() and self.gradient_checkpointing: + + def create_custom_forward(module): + def create_forward(*inputs): + return module(*inputs) + + return create_forward + + for down_block in self.down_blocks: + hidden_states = torch.utils.checkpoint.checkpoint(create_custom_forward(down_block), hidden_states) + + hidden_states = torch.utils.checkpoint.checkpoint(create_custom_forward(self.mid_block), hidden_states) + else: + for down_block in self.down_blocks: + hidden_states = down_block(hidden_states) + + hidden_states = self.mid_block(hidden_states) + + hidden_states = self.norm_out(hidden_states.movedim(1, -1)).movedim(-1, 1) + hidden_states = self.conv_act(hidden_states) + hidden_states = self.conv_out(hidden_states) + + last_channel = hidden_states[:, -1:] + last_channel = last_channel.repeat(1, hidden_states.size(1) - 2, 1, 1, 1) + hidden_states = torch.cat([hidden_states, last_channel], dim=1) + + return hidden_states + + +class LTXVideoDecoder3d(nn.Module): + r""" + The `LTXVideoDecoder3d` layer of a variational autoencoder that decodes its latent representation into an output + sample. + + Args: + in_channels (`int`, defaults to 128): + Number of latent channels. + out_channels (`int`, defaults to 3): + Number of output channels. + block_out_channels (`Tuple[int, ...]`, defaults to `(128, 256, 512, 512)`): + The number of output channels for each block. + spatio_temporal_scaling (`Tuple[bool, ...], defaults to `(True, True, True, False)`: + Whether a block should contain spatio-temporal upscaling layers or not. + layers_per_block (`Tuple[int, ...]`, defaults to `(4, 3, 3, 3, 4)`): + The number of layers per block. + patch_size (`int`, defaults to `4`): + The size of spatial patches. + patch_size_t (`int`, defaults to `1`): + The size of temporal patches. + resnet_norm_eps (`float`, defaults to `1e-6`): + Epsilon value for ResNet normalization layers. + is_causal (`bool`, defaults to `False`): + Whether this layer behaves causally (future frames depend only on past frames) or not. + timestep_conditioning (`bool`, defaults to `False`): + Whether to condition the model on timesteps. + """ + + def __init__( + self, + in_channels: int = 128, + out_channels: int = 3, + block_out_channels: Tuple[int, ...] = (128, 256, 512, 512), + spatio_temporal_scaling: Tuple[bool, ...] = (True, True, True, False), + layers_per_block: Tuple[int, ...] = (4, 3, 3, 3, 4), + patch_size: int = 4, + patch_size_t: int = 1, + resnet_norm_eps: float = 1e-6, + is_causal: bool = False, + inject_noise: Tuple[bool, ...] = (False, False, False, False), + timestep_conditioning: bool = False, + upsample_residual: Tuple[bool, ...] = (False, False, False, False), + upsample_factor: Tuple[bool, ...] = (1, 1, 1, 1), + ) -> None: + super().__init__() + + self.patch_size = patch_size + self.patch_size_t = patch_size_t + self.out_channels = out_channels * patch_size**2 + + block_out_channels = tuple(reversed(block_out_channels)) + spatio_temporal_scaling = tuple(reversed(spatio_temporal_scaling)) + layers_per_block = tuple(reversed(layers_per_block)) + inject_noise = tuple(reversed(inject_noise)) + upsample_residual = tuple(reversed(upsample_residual)) + upsample_factor = tuple(reversed(upsample_factor)) + output_channel = block_out_channels[0] + + self.conv_in = LTXVideoCausalConv3d( + in_channels=in_channels, out_channels=output_channel, kernel_size=3, stride=1, is_causal=is_causal + ) + + self.mid_block = LTXVideoMidBlock3d( + in_channels=output_channel, + num_layers=layers_per_block[0], + resnet_eps=resnet_norm_eps, + is_causal=is_causal, + inject_noise=inject_noise[0], + timestep_conditioning=timestep_conditioning, + ) + + # up blocks + num_block_out_channels = len(block_out_channels) + self.up_blocks = nn.ModuleList([]) + for i in range(num_block_out_channels): + input_channel = output_channel // upsample_factor[i] + output_channel = block_out_channels[i] // upsample_factor[i] + + up_block = LTXVideoUpBlock3d( + in_channels=input_channel, + out_channels=output_channel, + num_layers=layers_per_block[i + 1], + resnet_eps=resnet_norm_eps, + spatio_temporal_scale=spatio_temporal_scaling[i], + is_causal=is_causal, + inject_noise=inject_noise[i + 1], + timestep_conditioning=timestep_conditioning, + upsample_residual=upsample_residual[i], + upscale_factor=upsample_factor[i], + ) + + self.up_blocks.append(up_block) + + # out + self.norm_out = RMSNorm(out_channels, eps=1e-8, elementwise_affine=False) + self.conv_act = nn.SiLU() + self.conv_out = LTXVideoCausalConv3d( + in_channels=output_channel, out_channels=self.out_channels, kernel_size=3, stride=1, is_causal=is_causal + ) + + # timestep embedding + self.time_embedder = None + self.scale_shift_table = None + if timestep_conditioning: + self.time_embedder = PixArtAlphaCombinedTimestepSizeEmbeddings(output_channel * 2, 0) + self.scale_shift_table = nn.Parameter(torch.randn(2, output_channel) / output_channel**0.5) + + self.gradient_checkpointing = False + + def forward(self, hidden_states: torch.Tensor, temb: Optional[torch.Tensor] = None) -> torch.Tensor: + hidden_states = self.conv_in(hidden_states) + + if torch.is_grad_enabled() and self.gradient_checkpointing: + + def create_custom_forward(module): + def create_forward(*inputs): + return module(*inputs) + + return create_forward + + hidden_states = torch.utils.checkpoint.checkpoint( + create_custom_forward(self.mid_block), hidden_states, temb + ) + + for up_block in self.up_blocks: + hidden_states = torch.utils.checkpoint.checkpoint(create_custom_forward(up_block), hidden_states, temb) + else: + hidden_states = self.mid_block(hidden_states, temb) + + for up_block in self.up_blocks: + hidden_states = up_block(hidden_states, temb) + + hidden_states = self.norm_out(hidden_states.movedim(1, -1)).movedim(-1, 1) + + if self.time_embedder is not None: + temb = self.time_embedder( + timestep=temb.flatten(), + resolution=None, + aspect_ratio=None, + batch_size=hidden_states.size(0), + hidden_dtype=hidden_states.dtype, + ) + temb = temb.view(hidden_states.size(0), -1, 1, 1, 1).unflatten(1, (2, -1)) + temb = temb + self.scale_shift_table[None, ..., None, None, None] + shift, scale = temb.unbind(dim=1) + hidden_states = hidden_states * (1 + scale) + shift + + hidden_states = self.conv_act(hidden_states) + hidden_states = self.conv_out(hidden_states) + + p = self.patch_size + p_t = self.patch_size_t + + batch_size, num_channels, num_frames, height, width = hidden_states.shape + hidden_states = hidden_states.reshape(batch_size, -1, p_t, p, p, num_frames, height, width) + hidden_states = hidden_states.permute(0, 1, 5, 2, 6, 4, 7, 3).flatten(6, 7).flatten(4, 5).flatten(2, 3) + + return hidden_states + + +class AutoencoderKLLTXVideo(ModelMixin, ConfigMixin, FromOriginalModelMixin): + r""" + A VAE model with KL loss for encoding images into latents and decoding latent representations into images. Used in + [LTX](https://huggingface.co/Lightricks/LTX-Video). + + This model inherits from [`ModelMixin`]. Check the superclass documentation for it's generic methods implemented + for all models (such as downloading or saving). + + Args: + in_channels (`int`, defaults to `3`): + Number of input channels. + out_channels (`int`, defaults to `3`): + Number of output channels. + latent_channels (`int`, defaults to `128`): + Number of latent channels. + block_out_channels (`Tuple[int, ...]`, defaults to `(128, 256, 512, 512)`): + The number of output channels for each block. + spatio_temporal_scaling (`Tuple[bool, ...], defaults to `(True, True, True, False)`: + Whether a block should contain spatio-temporal downscaling or not. + layers_per_block (`Tuple[int, ...]`, defaults to `(4, 3, 3, 3, 4)`): + The number of layers per block. + patch_size (`int`, defaults to `4`): + The size of spatial patches. + patch_size_t (`int`, defaults to `1`): + The size of temporal patches. + resnet_norm_eps (`float`, defaults to `1e-6`): + Epsilon value for ResNet normalization layers. + scaling_factor (`float`, *optional*, defaults to `1.0`): + The component-wise standard deviation of the trained latent space computed using the first batch of the + training set. This is used to scale the latent space to have unit variance when training the diffusion + model. The latents are scaled with the formula `z = z * scaling_factor` before being passed to the + diffusion model. When decoding, the latents are scaled back to the original scale with the formula: `z = 1 + / scaling_factor * z`. For more details, refer to sections 4.3.2 and D.1 of the [High-Resolution Image + Synthesis with Latent Diffusion Models](https://arxiv.org/abs/2112.10752) paper. + encoder_causal (`bool`, defaults to `True`): + Whether the encoder should behave causally (future frames depend only on past frames) or not. + decoder_causal (`bool`, defaults to `False`): + Whether the decoder should behave causally (future frames depend only on past frames) or not. + """ + + _supports_gradient_checkpointing = True + + @register_to_config + def __init__( + self, + in_channels: int = 3, + out_channels: int = 3, + latent_channels: int = 128, + block_out_channels: Tuple[int, ...] = (128, 256, 512, 512), + decoder_block_out_channels: Tuple[int, ...] = (128, 256, 512, 512), + layers_per_block: Tuple[int, ...] = (4, 3, 3, 3, 4), + decoder_layers_per_block: Tuple[int, ...] = (4, 3, 3, 3, 4), + spatio_temporal_scaling: Tuple[bool, ...] = (True, True, True, False), + decoder_spatio_temporal_scaling: Tuple[bool, ...] = (True, True, True, False), + decoder_inject_noise: Tuple[bool, ...] = (False, False, False, False, False), + upsample_residual: Tuple[bool, ...] = (False, False, False, False), + upsample_factor: Tuple[int, ...] = (1, 1, 1, 1), + timestep_conditioning: bool = False, + patch_size: int = 4, + patch_size_t: int = 1, + resnet_norm_eps: float = 1e-6, + scaling_factor: float = 1.0, + encoder_causal: bool = True, + decoder_causal: bool = False, + ) -> None: + super().__init__() + + self.encoder = LTXVideoEncoder3d( + in_channels=in_channels, + out_channels=latent_channels, + block_out_channels=block_out_channels, + spatio_temporal_scaling=spatio_temporal_scaling, + layers_per_block=layers_per_block, + patch_size=patch_size, + patch_size_t=patch_size_t, + resnet_norm_eps=resnet_norm_eps, + is_causal=encoder_causal, + ) + self.decoder = LTXVideoDecoder3d( + in_channels=latent_channels, + out_channels=out_channels, + block_out_channels=decoder_block_out_channels, + spatio_temporal_scaling=decoder_spatio_temporal_scaling, + layers_per_block=decoder_layers_per_block, + patch_size=patch_size, + patch_size_t=patch_size_t, + resnet_norm_eps=resnet_norm_eps, + is_causal=decoder_causal, + timestep_conditioning=timestep_conditioning, + inject_noise=decoder_inject_noise, + upsample_residual=upsample_residual, + upsample_factor=upsample_factor, + ) + + latents_mean = torch.zeros((latent_channels,), requires_grad=False) + latents_std = torch.ones((latent_channels,), requires_grad=False) + self.register_buffer("latents_mean", latents_mean, persistent=True) + self.register_buffer("latents_std", latents_std, persistent=True) + + self.spatial_compression_ratio = patch_size * 2 ** sum(spatio_temporal_scaling) + self.temporal_compression_ratio = patch_size_t * 2 ** sum(spatio_temporal_scaling) + + # When decoding a batch of video latents at a time, one can save memory by slicing across the batch dimension + # to perform decoding of a single video latent at a time. + self.use_slicing = False + + # When decoding spatially large video latents, the memory requirement is very high. By breaking the video latent + # frames spatially into smaller tiles and performing multiple forward passes for decoding, and then blending the + # intermediate tiles together, the memory requirement can be lowered. + self.use_tiling = False + + # When decoding temporally long video latents, the memory requirement is very high. By decoding latent frames + # at a fixed frame batch size (based on `self.num_latent_frames_batch_sizes`), the memory requirement can be lowered. + self.use_framewise_encoding = False + self.use_framewise_decoding = False + + # This can be configured based on the amount of GPU memory available. + # `16` for sample frames and `2` for latent frames are sensible defaults for consumer GPUs. + # Setting it to higher values results in higher memory usage. + self.num_sample_frames_batch_size = 16 + self.num_latent_frames_batch_size = 2 + + # The minimal tile height and width for spatial tiling to be used + self.tile_sample_min_height = 512 + self.tile_sample_min_width = 512 + + # The minimal distance between two spatial tiles + self.tile_sample_stride_height = 448 + self.tile_sample_stride_width = 448 + + def _set_gradient_checkpointing(self, module, value=False): + if isinstance(module, (LTXVideoEncoder3d, LTXVideoDecoder3d)): + module.gradient_checkpointing = value + + def enable_tiling( + self, + tile_sample_min_height: Optional[int] = None, + tile_sample_min_width: Optional[int] = None, + tile_sample_stride_height: Optional[float] = None, + tile_sample_stride_width: Optional[float] = None, + ) -> None: + r""" + Enable tiled VAE decoding. When this option is enabled, the VAE will split the input tensor into tiles to + compute decoding and encoding in several steps. This is useful for saving a large amount of memory and to allow + processing larger images. + + Args: + tile_sample_min_height (`int`, *optional*): + The minimum height required for a sample to be separated into tiles across the height dimension. + tile_sample_min_width (`int`, *optional*): + The minimum width required for a sample to be separated into tiles across the width dimension. + tile_sample_stride_height (`int`, *optional*): + The minimum amount of overlap between two consecutive vertical tiles. This is to ensure that there are + no tiling artifacts produced across the height dimension. + tile_sample_stride_width (`int`, *optional*): + The stride between two consecutive horizontal tiles. This is to ensure that there are no tiling + artifacts produced across the width dimension. + """ + self.use_tiling = True + self.tile_sample_min_height = tile_sample_min_height or self.tile_sample_min_height + self.tile_sample_min_width = tile_sample_min_width or self.tile_sample_min_width + self.tile_sample_stride_height = tile_sample_stride_height or self.tile_sample_stride_height + self.tile_sample_stride_width = tile_sample_stride_width or self.tile_sample_stride_width + + def disable_tiling(self) -> None: + r""" + Disable tiled VAE decoding. If `enable_tiling` was previously enabled, this method will go back to computing + decoding in one step. + """ + self.use_tiling = False + + def enable_slicing(self) -> None: + r""" + Enable sliced VAE decoding. When this option is enabled, the VAE will split the input tensor in slices to + compute decoding in several steps. This is useful to save some memory and allow larger batch sizes. + """ + self.use_slicing = True + + def disable_slicing(self) -> None: + r""" + Disable sliced VAE decoding. If `enable_slicing` was previously enabled, this method will go back to computing + decoding in one step. + """ + self.use_slicing = False + + def _encode(self, x: torch.Tensor) -> torch.Tensor: + batch_size, num_channels, num_frames, height, width = x.shape + + if self.use_tiling and (width > self.tile_sample_min_width or height > self.tile_sample_min_height): + return self.tiled_encode(x) + + if self.use_framewise_encoding: + # TODO(aryan): requires investigation + raise NotImplementedError( + "Frame-wise encoding has not been implemented for AutoencoderKLLTXVideo, at the moment, due to " + "quality issues caused by splitting inference across frame dimension. If you believe this " + "should be possible, please submit a PR to https://github.com/huggingface/diffusers/pulls." + ) + else: + enc = self.encoder(x) + + return enc + + @apply_forward_hook + def encode( + self, x: torch.Tensor, return_dict: bool = True + ) -> Union[AutoencoderKLOutput, Tuple[DiagonalGaussianDistribution]]: + """ + Encode a batch of images into latents. + + Args: + x (`torch.Tensor`): Input batch of images. + return_dict (`bool`, *optional*, defaults to `True`): + Whether to return a [`~models.autoencoder_kl.AutoencoderKLOutput`] instead of a plain tuple. + + Returns: + The latent representations of the encoded videos. If `return_dict` is True, a + [`~models.autoencoder_kl.AutoencoderKLOutput`] is returned, otherwise a plain `tuple` is returned. + """ + if self.use_slicing and x.shape[0] > 1: + encoded_slices = [self._encode(x_slice) for x_slice in x.split(1)] + h = torch.cat(encoded_slices) + else: + h = self._encode(x) + posterior = DiagonalGaussianDistribution(h) + + if not return_dict: + return (posterior,) + return AutoencoderKLOutput(latent_dist=posterior) + + def _decode( + self, z: torch.Tensor, temb: Optional[torch.Tensor] = None, return_dict: bool = True + ) -> Union[DecoderOutput, torch.Tensor]: + batch_size, num_channels, num_frames, height, width = z.shape + tile_latent_min_height = self.tile_sample_min_height // self.spatial_compression_ratio + tile_latent_min_width = self.tile_sample_stride_width // self.spatial_compression_ratio + + if self.use_tiling and (width > tile_latent_min_width or height > tile_latent_min_height): + return self.tiled_decode(z, temb, return_dict=return_dict) + + if self.use_framewise_decoding: + # TODO(aryan): requires investigation + raise NotImplementedError( + "Frame-wise decoding has not been implemented for AutoencoderKLLTXVideo, at the moment, due to " + "quality issues caused by splitting inference across frame dimension. If you believe this " + "should be possible, please submit a PR to https://github.com/huggingface/diffusers/pulls." + ) + else: + dec = self.decoder(z, temb) + + if not return_dict: + return (dec,) + + return DecoderOutput(sample=dec) + + @apply_forward_hook + def decode( + self, z: torch.Tensor, temb: Optional[torch.Tensor] = None, return_dict: bool = True + ) -> Union[DecoderOutput, torch.Tensor]: + """ + Decode a batch of images. + + Args: + z (`torch.Tensor`): Input batch of latent vectors. + return_dict (`bool`, *optional*, defaults to `True`): + Whether to return a [`~models.vae.DecoderOutput`] instead of a plain tuple. + + Returns: + [`~models.vae.DecoderOutput`] or `tuple`: + If return_dict is True, a [`~models.vae.DecoderOutput`] is returned, otherwise a plain `tuple` is + returned. + """ + if self.use_slicing and z.shape[0] > 1: + if temb is not None: + decoded_slices = [ + self._decode(z_slice, t_slice).sample for z_slice, t_slice in (z.split(1), temb.split(1)) + ] + else: + decoded_slices = [self._decode(z_slice).sample for z_slice in z.split(1)] + decoded = torch.cat(decoded_slices) + else: + decoded = self._decode(z, temb).sample + + if not return_dict: + return (decoded,) + + return DecoderOutput(sample=decoded) + + def blend_v(self, a: torch.Tensor, b: torch.Tensor, blend_extent: int) -> torch.Tensor: + blend_extent = min(a.shape[3], b.shape[3], blend_extent) + for y in range(blend_extent): + b[:, :, :, y, :] = a[:, :, :, -blend_extent + y, :] * (1 - y / blend_extent) + b[:, :, :, y, :] * ( + y / blend_extent + ) + return b + + def blend_h(self, a: torch.Tensor, b: torch.Tensor, blend_extent: int) -> torch.Tensor: + blend_extent = min(a.shape[4], b.shape[4], blend_extent) + for x in range(blend_extent): + b[:, :, :, :, x] = a[:, :, :, :, -blend_extent + x] * (1 - x / blend_extent) + b[:, :, :, :, x] * ( + x / blend_extent + ) + return b + + def tiled_encode(self, x: torch.Tensor) -> torch.Tensor: + r"""Encode a batch of images using a tiled encoder. + + Args: + x (`torch.Tensor`): Input batch of videos. + + Returns: + `torch.Tensor`: + The latent representation of the encoded videos. + """ + batch_size, num_channels, num_frames, height, width = x.shape + latent_height = height // self.spatial_compression_ratio + latent_width = width // self.spatial_compression_ratio + + tile_latent_min_height = self.tile_sample_min_height // self.spatial_compression_ratio + tile_latent_min_width = self.tile_sample_min_width // self.spatial_compression_ratio + tile_latent_stride_height = self.tile_sample_stride_height // self.spatial_compression_ratio + tile_latent_stride_width = self.tile_sample_stride_width // self.spatial_compression_ratio + + blend_height = tile_latent_min_height - tile_latent_stride_height + blend_width = tile_latent_min_width - tile_latent_stride_width + + # Split x into overlapping tiles and encode them separately. + # The tiles have an overlap to avoid seams between tiles. + rows = [] + for i in range(0, height, self.tile_sample_stride_height): + row = [] + for j in range(0, width, self.tile_sample_stride_width): + if self.use_framewise_encoding: + # TODO(aryan): requires investigation + raise NotImplementedError( + "Frame-wise encoding has not been implemented for AutoencoderKLLTXVideo, at the moment, due to " + "quality issues caused by splitting inference across frame dimension. If you believe this " + "should be possible, please submit a PR to https://github.com/huggingface/diffusers/pulls." + ) + else: + time = self.encoder( + x[:, :, :, i : i + self.tile_sample_min_height, j : j + self.tile_sample_min_width] + ) + + row.append(time) + rows.append(row) + + result_rows = [] + for i, row in enumerate(rows): + result_row = [] + for j, tile in enumerate(row): + # blend the above tile and the left tile + # to the current tile and add the current tile to the result row + if i > 0: + tile = self.blend_v(rows[i - 1][j], tile, blend_height) + if j > 0: + tile = self.blend_h(row[j - 1], tile, blend_width) + result_row.append(tile[:, :, :, :tile_latent_stride_height, :tile_latent_stride_width]) + result_rows.append(torch.cat(result_row, dim=4)) + + enc = torch.cat(result_rows, dim=3)[:, :, :, :latent_height, :latent_width] + return enc + + def tiled_decode( + self, z: torch.Tensor, temb: Optional[torch.Tensor], return_dict: bool = True + ) -> Union[DecoderOutput, torch.Tensor]: + r""" + Decode a batch of images using a tiled decoder. + + Args: + z (`torch.Tensor`): Input batch of latent vectors. + return_dict (`bool`, *optional*, defaults to `True`): + Whether or not to return a [`~models.vae.DecoderOutput`] instead of a plain tuple. + + Returns: + [`~models.vae.DecoderOutput`] or `tuple`: + If return_dict is True, a [`~models.vae.DecoderOutput`] is returned, otherwise a plain `tuple` is + returned. + """ + + batch_size, num_channels, num_frames, height, width = z.shape + sample_height = height * self.spatial_compression_ratio + sample_width = width * self.spatial_compression_ratio + + tile_latent_min_height = self.tile_sample_min_height // self.spatial_compression_ratio + tile_latent_min_width = self.tile_sample_min_width // self.spatial_compression_ratio + tile_latent_stride_height = self.tile_sample_stride_height // self.spatial_compression_ratio + tile_latent_stride_width = self.tile_sample_stride_width // self.spatial_compression_ratio + + blend_height = self.tile_sample_min_height - self.tile_sample_stride_height + blend_width = self.tile_sample_min_width - self.tile_sample_stride_width + + # Split z into overlapping tiles and decode them separately. + # The tiles have an overlap to avoid seams between tiles. + rows = [] + for i in range(0, height, tile_latent_stride_height): + row = [] + for j in range(0, width, tile_latent_stride_width): + if self.use_framewise_decoding: + # TODO(aryan): requires investigation + raise NotImplementedError( + "Frame-wise decoding has not been implemented for AutoencoderKLLTXVideo, at the moment, due to " + "quality issues caused by splitting inference across frame dimension. If you believe this " + "should be possible, please submit a PR to https://github.com/huggingface/diffusers/pulls." + ) + else: + time = self.decoder( + z[:, :, :, i : i + tile_latent_min_height, j : j + tile_latent_min_width], temb + ) + + row.append(time) + rows.append(row) + + result_rows = [] + for i, row in enumerate(rows): + result_row = [] + for j, tile in enumerate(row): + # blend the above tile and the left tile + # to the current tile and add the current tile to the result row + if i > 0: + tile = self.blend_v(rows[i - 1][j], tile, blend_height) + if j > 0: + tile = self.blend_h(row[j - 1], tile, blend_width) + result_row.append(tile[:, :, :, : self.tile_sample_stride_height, : self.tile_sample_stride_width]) + result_rows.append(torch.cat(result_row, dim=4)) + + dec = torch.cat(result_rows, dim=3)[:, :, :, :sample_height, :sample_width] + + if not return_dict: + return (dec,) + + return DecoderOutput(sample=dec) + + def forward( + self, + sample: torch.Tensor, + temb: Optional[torch.Tensor] = None, + sample_posterior: bool = False, + return_dict: bool = True, + generator: Optional[torch.Generator] = None, + ) -> Union[torch.Tensor, torch.Tensor]: + x = sample + posterior = self.encode(x).latent_dist + if sample_posterior: + z = posterior.sample(generator=generator) + else: + z = posterior.mode() + dec = self.decode(z, temb) + if not return_dict: + return (dec,) + return dec diff --git a/venv/lib/python3.11/site-packages/diffusers/models/autoencoders/autoencoder_kl_mochi.py b/venv/lib/python3.11/site-packages/diffusers/models/autoencoders/autoencoder_kl_mochi.py new file mode 100644 index 0000000000000000000000000000000000000000..920b0b62fef64e31e51d2a88f4e35590e1a5400d --- /dev/null +++ b/venv/lib/python3.11/site-packages/diffusers/models/autoencoders/autoencoder_kl_mochi.py @@ -0,0 +1,1166 @@ +# Copyright 2024 The Mochi team and The HuggingFace Team. +# All rights reserved. +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. + +import functools +from typing import Dict, Optional, Tuple, Union + +import torch +import torch.nn as nn + +from ...configuration_utils import ConfigMixin, register_to_config +from ...utils import logging +from ...utils.accelerate_utils import apply_forward_hook +from ..activations import get_activation +from ..attention_processor import Attention, MochiVaeAttnProcessor2_0 +from ..modeling_outputs import AutoencoderKLOutput +from ..modeling_utils import ModelMixin +from .autoencoder_kl_cogvideox import CogVideoXCausalConv3d +from .vae import DecoderOutput, DiagonalGaussianDistribution + + +logger = logging.get_logger(__name__) # pylint: disable=invalid-name + + +class MochiChunkedGroupNorm3D(nn.Module): + r""" + Applies per-frame group normalization for 5D video inputs. It also supports memory-efficient chunked group + normalization. + + Args: + num_channels (int): Number of channels expected in input + num_groups (int, optional): Number of groups to separate the channels into. Default: 32 + affine (bool, optional): If True, this module has learnable affine parameters. Default: True + chunk_size (int, optional): Size of each chunk for processing. Default: 8 + + """ + + def __init__( + self, + num_channels: int, + num_groups: int = 32, + affine: bool = True, + chunk_size: int = 8, + ): + super().__init__() + self.norm_layer = nn.GroupNorm(num_channels=num_channels, num_groups=num_groups, affine=affine) + self.chunk_size = chunk_size + + def forward(self, x: torch.Tensor = None) -> torch.Tensor: + batch_size = x.size(0) + + x = x.permute(0, 2, 1, 3, 4).flatten(0, 1) + output = torch.cat([self.norm_layer(chunk) for chunk in x.split(self.chunk_size, dim=0)], dim=0) + output = output.unflatten(0, (batch_size, -1)).permute(0, 2, 1, 3, 4) + + return output + + +class MochiResnetBlock3D(nn.Module): + r""" + A 3D ResNet block used in the Mochi model. + + Args: + in_channels (`int`): + Number of input channels. + out_channels (`int`, *optional*): + Number of output channels. If None, defaults to `in_channels`. + non_linearity (`str`, defaults to `"swish"`): + Activation function to use. + """ + + def __init__( + self, + in_channels: int, + out_channels: Optional[int] = None, + act_fn: str = "swish", + ): + super().__init__() + + out_channels = out_channels or in_channels + + self.in_channels = in_channels + self.out_channels = out_channels + self.nonlinearity = get_activation(act_fn) + + self.norm1 = MochiChunkedGroupNorm3D(num_channels=in_channels) + self.conv1 = CogVideoXCausalConv3d( + in_channels=in_channels, out_channels=out_channels, kernel_size=3, stride=1, pad_mode="replicate" + ) + self.norm2 = MochiChunkedGroupNorm3D(num_channels=out_channels) + self.conv2 = CogVideoXCausalConv3d( + in_channels=out_channels, out_channels=out_channels, kernel_size=3, stride=1, pad_mode="replicate" + ) + + def forward( + self, + inputs: torch.Tensor, + conv_cache: Optional[Dict[str, torch.Tensor]] = None, + ) -> torch.Tensor: + new_conv_cache = {} + conv_cache = conv_cache or {} + + hidden_states = inputs + + hidden_states = self.norm1(hidden_states) + hidden_states = self.nonlinearity(hidden_states) + hidden_states, new_conv_cache["conv1"] = self.conv1(hidden_states, conv_cache=conv_cache.get("conv1")) + + hidden_states = self.norm2(hidden_states) + hidden_states = self.nonlinearity(hidden_states) + hidden_states, new_conv_cache["conv2"] = self.conv2(hidden_states, conv_cache=conv_cache.get("conv2")) + + hidden_states = hidden_states + inputs + return hidden_states, new_conv_cache + + +class MochiDownBlock3D(nn.Module): + r""" + An downsampling block used in the Mochi model. + + Args: + in_channels (`int`): + Number of input channels. + out_channels (`int`, *optional*): + Number of output channels. If None, defaults to `in_channels`. + num_layers (`int`, defaults to `1`): + Number of resnet blocks in the block. + temporal_expansion (`int`, defaults to `2`): + Temporal expansion factor. + spatial_expansion (`int`, defaults to `2`): + Spatial expansion factor. + """ + + def __init__( + self, + in_channels: int, + out_channels: int, + num_layers: int = 1, + temporal_expansion: int = 2, + spatial_expansion: int = 2, + add_attention: bool = True, + ): + super().__init__() + self.temporal_expansion = temporal_expansion + self.spatial_expansion = spatial_expansion + + self.conv_in = CogVideoXCausalConv3d( + in_channels=in_channels, + out_channels=out_channels, + kernel_size=(temporal_expansion, spatial_expansion, spatial_expansion), + stride=(temporal_expansion, spatial_expansion, spatial_expansion), + pad_mode="replicate", + ) + + resnets = [] + norms = [] + attentions = [] + for _ in range(num_layers): + resnets.append(MochiResnetBlock3D(in_channels=out_channels)) + if add_attention: + norms.append(MochiChunkedGroupNorm3D(num_channels=out_channels)) + attentions.append( + Attention( + query_dim=out_channels, + heads=out_channels // 32, + dim_head=32, + qk_norm="l2", + is_causal=True, + processor=MochiVaeAttnProcessor2_0(), + ) + ) + else: + norms.append(None) + attentions.append(None) + + self.resnets = nn.ModuleList(resnets) + self.norms = nn.ModuleList(norms) + self.attentions = nn.ModuleList(attentions) + + self.gradient_checkpointing = False + + def forward( + self, + hidden_states: torch.Tensor, + conv_cache: Optional[Dict[str, torch.Tensor]] = None, + chunk_size: int = 2**15, + ) -> torch.Tensor: + r"""Forward method of the `MochiUpBlock3D` class.""" + + new_conv_cache = {} + conv_cache = conv_cache or {} + + hidden_states, new_conv_cache["conv_in"] = self.conv_in(hidden_states) + + for i, (resnet, norm, attn) in enumerate(zip(self.resnets, self.norms, self.attentions)): + conv_cache_key = f"resnet_{i}" + + if torch.is_grad_enabled() and self.gradient_checkpointing: + + def create_custom_forward(module): + def create_forward(*inputs): + return module(*inputs) + + return create_forward + + hidden_states, new_conv_cache[conv_cache_key] = torch.utils.checkpoint.checkpoint( + create_custom_forward(resnet), + hidden_states, + conv_cache=conv_cache.get(conv_cache_key), + ) + else: + hidden_states, new_conv_cache[conv_cache_key] = resnet( + hidden_states, conv_cache=conv_cache.get(conv_cache_key) + ) + + if attn is not None: + residual = hidden_states + hidden_states = norm(hidden_states) + + batch_size, num_channels, num_frames, height, width = hidden_states.shape + hidden_states = hidden_states.permute(0, 3, 4, 2, 1).flatten(0, 2).contiguous() + + # Perform attention in chunks to avoid following error: + # RuntimeError: CUDA error: invalid configuration argument + if hidden_states.size(0) <= chunk_size: + hidden_states = attn(hidden_states) + else: + hidden_states_chunks = [] + for i in range(0, hidden_states.size(0), chunk_size): + hidden_states_chunk = hidden_states[i : i + chunk_size] + hidden_states_chunk = attn(hidden_states_chunk) + hidden_states_chunks.append(hidden_states_chunk) + hidden_states = torch.cat(hidden_states_chunks) + + hidden_states = hidden_states.unflatten(0, (batch_size, height, width)).permute(0, 4, 3, 1, 2) + + hidden_states = residual + hidden_states + + return hidden_states, new_conv_cache + + +class MochiMidBlock3D(nn.Module): + r""" + A middle block used in the Mochi model. + + Args: + in_channels (`int`): + Number of input channels. + num_layers (`int`, defaults to `3`): + Number of resnet blocks in the block. + """ + + def __init__( + self, + in_channels: int, # 768 + num_layers: int = 3, + add_attention: bool = True, + ): + super().__init__() + + resnets = [] + norms = [] + attentions = [] + + for _ in range(num_layers): + resnets.append(MochiResnetBlock3D(in_channels=in_channels)) + + if add_attention: + norms.append(MochiChunkedGroupNorm3D(num_channels=in_channels)) + attentions.append( + Attention( + query_dim=in_channels, + heads=in_channels // 32, + dim_head=32, + qk_norm="l2", + is_causal=True, + processor=MochiVaeAttnProcessor2_0(), + ) + ) + else: + norms.append(None) + attentions.append(None) + + self.resnets = nn.ModuleList(resnets) + self.norms = nn.ModuleList(norms) + self.attentions = nn.ModuleList(attentions) + + self.gradient_checkpointing = False + + def forward( + self, + hidden_states: torch.Tensor, + conv_cache: Optional[Dict[str, torch.Tensor]] = None, + ) -> torch.Tensor: + r"""Forward method of the `MochiMidBlock3D` class.""" + + new_conv_cache = {} + conv_cache = conv_cache or {} + + for i, (resnet, norm, attn) in enumerate(zip(self.resnets, self.norms, self.attentions)): + conv_cache_key = f"resnet_{i}" + + if torch.is_grad_enabled() and self.gradient_checkpointing: + + def create_custom_forward(module): + def create_forward(*inputs): + return module(*inputs) + + return create_forward + + hidden_states, new_conv_cache[conv_cache_key] = torch.utils.checkpoint.checkpoint( + create_custom_forward(resnet), hidden_states, conv_cache=conv_cache.get(conv_cache_key) + ) + else: + hidden_states, new_conv_cache[conv_cache_key] = resnet( + hidden_states, conv_cache=conv_cache.get(conv_cache_key) + ) + + if attn is not None: + residual = hidden_states + hidden_states = norm(hidden_states) + + batch_size, num_channels, num_frames, height, width = hidden_states.shape + hidden_states = hidden_states.permute(0, 3, 4, 2, 1).flatten(0, 2).contiguous() + hidden_states = attn(hidden_states) + hidden_states = hidden_states.unflatten(0, (batch_size, height, width)).permute(0, 4, 3, 1, 2) + + hidden_states = residual + hidden_states + + return hidden_states, new_conv_cache + + +class MochiUpBlock3D(nn.Module): + r""" + An upsampling block used in the Mochi model. + + Args: + in_channels (`int`): + Number of input channels. + out_channels (`int`, *optional*): + Number of output channels. If None, defaults to `in_channels`. + num_layers (`int`, defaults to `1`): + Number of resnet blocks in the block. + temporal_expansion (`int`, defaults to `2`): + Temporal expansion factor. + spatial_expansion (`int`, defaults to `2`): + Spatial expansion factor. + """ + + def __init__( + self, + in_channels: int, + out_channels: int, + num_layers: int = 1, + temporal_expansion: int = 2, + spatial_expansion: int = 2, + ): + super().__init__() + self.temporal_expansion = temporal_expansion + self.spatial_expansion = spatial_expansion + + resnets = [] + for _ in range(num_layers): + resnets.append(MochiResnetBlock3D(in_channels=in_channels)) + self.resnets = nn.ModuleList(resnets) + + self.proj = nn.Linear(in_channels, out_channels * temporal_expansion * spatial_expansion**2) + + self.gradient_checkpointing = False + + def forward( + self, + hidden_states: torch.Tensor, + conv_cache: Optional[Dict[str, torch.Tensor]] = None, + ) -> torch.Tensor: + r"""Forward method of the `MochiUpBlock3D` class.""" + + new_conv_cache = {} + conv_cache = conv_cache or {} + + for i, resnet in enumerate(self.resnets): + conv_cache_key = f"resnet_{i}" + + if torch.is_grad_enabled() and self.gradient_checkpointing: + + def create_custom_forward(module): + def create_forward(*inputs): + return module(*inputs) + + return create_forward + + hidden_states, new_conv_cache[conv_cache_key] = torch.utils.checkpoint.checkpoint( + create_custom_forward(resnet), + hidden_states, + conv_cache=conv_cache.get(conv_cache_key), + ) + else: + hidden_states, new_conv_cache[conv_cache_key] = resnet( + hidden_states, conv_cache=conv_cache.get(conv_cache_key) + ) + + hidden_states = hidden_states.permute(0, 2, 3, 4, 1) + hidden_states = self.proj(hidden_states) + hidden_states = hidden_states.permute(0, 4, 1, 2, 3) + + batch_size, num_channels, num_frames, height, width = hidden_states.shape + st = self.temporal_expansion + sh = self.spatial_expansion + sw = self.spatial_expansion + + # Reshape and unpatchify + hidden_states = hidden_states.view(batch_size, -1, st, sh, sw, num_frames, height, width) + hidden_states = hidden_states.permute(0, 1, 5, 2, 6, 3, 7, 4).contiguous() + hidden_states = hidden_states.view(batch_size, -1, num_frames * st, height * sh, width * sw) + + return hidden_states, new_conv_cache + + +class FourierFeatures(nn.Module): + def __init__(self, start: int = 6, stop: int = 8, step: int = 1): + super().__init__() + + self.start = start + self.stop = stop + self.step = step + + def forward(self, inputs: torch.Tensor) -> torch.Tensor: + r"""Forward method of the `FourierFeatures` class.""" + original_dtype = inputs.dtype + inputs = inputs.to(torch.float32) + num_channels = inputs.shape[1] + num_freqs = (self.stop - self.start) // self.step + + freqs = torch.arange(self.start, self.stop, self.step, dtype=inputs.dtype, device=inputs.device) + w = torch.pow(2.0, freqs) * (2 * torch.pi) # [num_freqs] + w = w.repeat(num_channels)[None, :, None, None, None] # [1, num_channels * num_freqs, 1, 1, 1] + + # Interleaved repeat of input channels to match w + h = inputs.repeat_interleave(num_freqs, dim=1) # [B, C * num_freqs, T, H, W] + # Scale channels by frequency. + h = w * h + + return torch.cat([inputs, torch.sin(h), torch.cos(h)], dim=1).to(original_dtype) + + +class MochiEncoder3D(nn.Module): + r""" + The `MochiEncoder3D` layer of a variational autoencoder that encodes input video samples to its latent + representation. + + Args: + in_channels (`int`, *optional*): + The number of input channels. + out_channels (`int`, *optional*): + The number of output channels. + block_out_channels (`Tuple[int, ...]`, *optional*, defaults to `(128, 256, 512, 768)`): + The number of output channels for each block. + layers_per_block (`Tuple[int, ...]`, *optional*, defaults to `(3, 3, 4, 6, 3)`): + The number of resnet blocks for each block. + temporal_expansions (`Tuple[int, ...]`, *optional*, defaults to `(1, 2, 3)`): + The temporal expansion factor for each of the up blocks. + spatial_expansions (`Tuple[int, ...]`, *optional*, defaults to `(2, 2, 2)`): + The spatial expansion factor for each of the up blocks. + non_linearity (`str`, *optional*, defaults to `"swish"`): + The non-linearity to use in the decoder. + """ + + def __init__( + self, + in_channels: int, + out_channels: int, + block_out_channels: Tuple[int, ...] = (128, 256, 512, 768), + layers_per_block: Tuple[int, ...] = (3, 3, 4, 6, 3), + temporal_expansions: Tuple[int, ...] = (1, 2, 3), + spatial_expansions: Tuple[int, ...] = (2, 2, 2), + add_attention_block: Tuple[bool, ...] = (False, True, True, True, True), + act_fn: str = "swish", + ): + super().__init__() + + self.nonlinearity = get_activation(act_fn) + + self.fourier_features = FourierFeatures() + self.proj_in = nn.Linear(in_channels, block_out_channels[0]) + self.block_in = MochiMidBlock3D( + in_channels=block_out_channels[0], num_layers=layers_per_block[0], add_attention=add_attention_block[0] + ) + + down_blocks = [] + for i in range(len(block_out_channels) - 1): + down_block = MochiDownBlock3D( + in_channels=block_out_channels[i], + out_channels=block_out_channels[i + 1], + num_layers=layers_per_block[i + 1], + temporal_expansion=temporal_expansions[i], + spatial_expansion=spatial_expansions[i], + add_attention=add_attention_block[i + 1], + ) + down_blocks.append(down_block) + self.down_blocks = nn.ModuleList(down_blocks) + + self.block_out = MochiMidBlock3D( + in_channels=block_out_channels[-1], num_layers=layers_per_block[-1], add_attention=add_attention_block[-1] + ) + self.norm_out = MochiChunkedGroupNorm3D(block_out_channels[-1]) + self.proj_out = nn.Linear(block_out_channels[-1], 2 * out_channels, bias=False) + + def forward( + self, hidden_states: torch.Tensor, conv_cache: Optional[Dict[str, torch.Tensor]] = None + ) -> torch.Tensor: + r"""Forward method of the `MochiEncoder3D` class.""" + + new_conv_cache = {} + conv_cache = conv_cache or {} + + hidden_states = self.fourier_features(hidden_states) + + hidden_states = hidden_states.permute(0, 2, 3, 4, 1) + hidden_states = self.proj_in(hidden_states) + hidden_states = hidden_states.permute(0, 4, 1, 2, 3) + + if torch.is_grad_enabled() and self.gradient_checkpointing: + + def create_custom_forward(module): + def create_forward(*inputs): + return module(*inputs) + + return create_forward + + hidden_states, new_conv_cache["block_in"] = torch.utils.checkpoint.checkpoint( + create_custom_forward(self.block_in), hidden_states, conv_cache=conv_cache.get("block_in") + ) + + for i, down_block in enumerate(self.down_blocks): + conv_cache_key = f"down_block_{i}" + hidden_states, new_conv_cache[conv_cache_key] = torch.utils.checkpoint.checkpoint( + create_custom_forward(down_block), hidden_states, conv_cache=conv_cache.get(conv_cache_key) + ) + else: + hidden_states, new_conv_cache["block_in"] = self.block_in( + hidden_states, conv_cache=conv_cache.get("block_in") + ) + + for i, down_block in enumerate(self.down_blocks): + conv_cache_key = f"down_block_{i}" + hidden_states, new_conv_cache[conv_cache_key] = down_block( + hidden_states, conv_cache=conv_cache.get(conv_cache_key) + ) + + hidden_states, new_conv_cache["block_out"] = self.block_out( + hidden_states, conv_cache=conv_cache.get("block_out") + ) + + hidden_states = self.norm_out(hidden_states) + hidden_states = self.nonlinearity(hidden_states) + + hidden_states = hidden_states.permute(0, 2, 3, 4, 1) + hidden_states = self.proj_out(hidden_states) + hidden_states = hidden_states.permute(0, 4, 1, 2, 3) + + return hidden_states, new_conv_cache + + +class MochiDecoder3D(nn.Module): + r""" + The `MochiDecoder3D` layer of a variational autoencoder that decodes its latent representation into an output + sample. + + Args: + in_channels (`int`, *optional*): + The number of input channels. + out_channels (`int`, *optional*): + The number of output channels. + block_out_channels (`Tuple[int, ...]`, *optional*, defaults to `(128, 256, 512, 768)`): + The number of output channels for each block. + layers_per_block (`Tuple[int, ...]`, *optional*, defaults to `(3, 3, 4, 6, 3)`): + The number of resnet blocks for each block. + temporal_expansions (`Tuple[int, ...]`, *optional*, defaults to `(1, 2, 3)`): + The temporal expansion factor for each of the up blocks. + spatial_expansions (`Tuple[int, ...]`, *optional*, defaults to `(2, 2, 2)`): + The spatial expansion factor for each of the up blocks. + non_linearity (`str`, *optional*, defaults to `"swish"`): + The non-linearity to use in the decoder. + """ + + def __init__( + self, + in_channels: int, # 12 + out_channels: int, # 3 + block_out_channels: Tuple[int, ...] = (128, 256, 512, 768), + layers_per_block: Tuple[int, ...] = (3, 3, 4, 6, 3), + temporal_expansions: Tuple[int, ...] = (1, 2, 3), + spatial_expansions: Tuple[int, ...] = (2, 2, 2), + act_fn: str = "swish", + ): + super().__init__() + + self.nonlinearity = get_activation(act_fn) + + self.conv_in = nn.Conv3d(in_channels, block_out_channels[-1], kernel_size=(1, 1, 1)) + self.block_in = MochiMidBlock3D( + in_channels=block_out_channels[-1], + num_layers=layers_per_block[-1], + add_attention=False, + ) + + up_blocks = [] + for i in range(len(block_out_channels) - 1): + up_block = MochiUpBlock3D( + in_channels=block_out_channels[-i - 1], + out_channels=block_out_channels[-i - 2], + num_layers=layers_per_block[-i - 2], + temporal_expansion=temporal_expansions[-i - 1], + spatial_expansion=spatial_expansions[-i - 1], + ) + up_blocks.append(up_block) + self.up_blocks = nn.ModuleList(up_blocks) + + self.block_out = MochiMidBlock3D( + in_channels=block_out_channels[0], + num_layers=layers_per_block[0], + add_attention=False, + ) + self.proj_out = nn.Linear(block_out_channels[0], out_channels) + + self.gradient_checkpointing = False + + def forward( + self, hidden_states: torch.Tensor, conv_cache: Optional[Dict[str, torch.Tensor]] = None + ) -> torch.Tensor: + r"""Forward method of the `MochiDecoder3D` class.""" + + new_conv_cache = {} + conv_cache = conv_cache or {} + + hidden_states = self.conv_in(hidden_states) + + # 1. Mid + if torch.is_grad_enabled() and self.gradient_checkpointing: + + def create_custom_forward(module): + def create_forward(*inputs): + return module(*inputs) + + return create_forward + + hidden_states, new_conv_cache["block_in"] = torch.utils.checkpoint.checkpoint( + create_custom_forward(self.block_in), hidden_states, conv_cache=conv_cache.get("block_in") + ) + + for i, up_block in enumerate(self.up_blocks): + conv_cache_key = f"up_block_{i}" + hidden_states, new_conv_cache[conv_cache_key] = torch.utils.checkpoint.checkpoint( + create_custom_forward(up_block), hidden_states, conv_cache=conv_cache.get(conv_cache_key) + ) + else: + hidden_states, new_conv_cache["block_in"] = self.block_in( + hidden_states, conv_cache=conv_cache.get("block_in") + ) + + for i, up_block in enumerate(self.up_blocks): + conv_cache_key = f"up_block_{i}" + hidden_states, new_conv_cache[conv_cache_key] = up_block( + hidden_states, conv_cache=conv_cache.get(conv_cache_key) + ) + + hidden_states, new_conv_cache["block_out"] = self.block_out( + hidden_states, conv_cache=conv_cache.get("block_out") + ) + + hidden_states = self.nonlinearity(hidden_states) + + hidden_states = hidden_states.permute(0, 2, 3, 4, 1) + hidden_states = self.proj_out(hidden_states) + hidden_states = hidden_states.permute(0, 4, 1, 2, 3) + + return hidden_states, new_conv_cache + + +class AutoencoderKLMochi(ModelMixin, ConfigMixin): + r""" + A VAE model with KL loss for encoding images into latents and decoding latent representations into images. Used in + [Mochi 1 preview](https://github.com/genmoai/models). + + This model inherits from [`ModelMixin`]. Check the superclass documentation for it's generic methods implemented + for all models (such as downloading or saving). + + Parameters: + in_channels (int, *optional*, defaults to 3): Number of channels in the input image. + out_channels (int, *optional*, defaults to 3): Number of channels in the output. + block_out_channels (`Tuple[int]`, *optional*, defaults to `(64,)`): + Tuple of block output channels. + act_fn (`str`, *optional*, defaults to `"silu"`): The activation function to use. + scaling_factor (`float`, *optional*, defaults to `1.15258426`): + The component-wise standard deviation of the trained latent space computed using the first batch of the + training set. This is used to scale the latent space to have unit variance when training the diffusion + model. The latents are scaled with the formula `z = z * scaling_factor` before being passed to the + diffusion model. When decoding, the latents are scaled back to the original scale with the formula: `z = 1 + / scaling_factor * z`. For more details, refer to sections 4.3.2 and D.1 of the [High-Resolution Image + Synthesis with Latent Diffusion Models](https://arxiv.org/abs/2112.10752) paper. + """ + + _supports_gradient_checkpointing = True + _no_split_modules = ["MochiResnetBlock3D"] + + @register_to_config + def __init__( + self, + in_channels: int = 15, + out_channels: int = 3, + encoder_block_out_channels: Tuple[int] = (64, 128, 256, 384), + decoder_block_out_channels: Tuple[int] = (128, 256, 512, 768), + latent_channels: int = 12, + layers_per_block: Tuple[int, ...] = (3, 3, 4, 6, 3), + act_fn: str = "silu", + temporal_expansions: Tuple[int, ...] = (1, 2, 3), + spatial_expansions: Tuple[int, ...] = (2, 2, 2), + add_attention_block: Tuple[bool, ...] = (False, True, True, True, True), + latents_mean: Tuple[float, ...] = ( + -0.06730895953510081, + -0.038011381506090416, + -0.07477820912866141, + -0.05565264470995561, + 0.012767231469026969, + -0.04703542746246419, + 0.043896967884726704, + -0.09346305707025976, + -0.09918314763016893, + -0.008729793427399178, + -0.011931556316503654, + -0.0321993391887285, + ), + latents_std: Tuple[float, ...] = ( + 0.9263795028493863, + 0.9248894543193766, + 0.9393059390890617, + 0.959253732819592, + 0.8244560132752793, + 0.917259975397747, + 0.9294154431013696, + 1.3720942357788521, + 0.881393668867029, + 0.9168315692124348, + 0.9185249279345552, + 0.9274757570805041, + ), + scaling_factor: float = 1.0, + ): + super().__init__() + + self.encoder = MochiEncoder3D( + in_channels=in_channels, + out_channels=latent_channels, + block_out_channels=encoder_block_out_channels, + layers_per_block=layers_per_block, + temporal_expansions=temporal_expansions, + spatial_expansions=spatial_expansions, + add_attention_block=add_attention_block, + act_fn=act_fn, + ) + self.decoder = MochiDecoder3D( + in_channels=latent_channels, + out_channels=out_channels, + block_out_channels=decoder_block_out_channels, + layers_per_block=layers_per_block, + temporal_expansions=temporal_expansions, + spatial_expansions=spatial_expansions, + act_fn=act_fn, + ) + + self.spatial_compression_ratio = functools.reduce(lambda x, y: x * y, spatial_expansions, 1) + self.temporal_compression_ratio = functools.reduce(lambda x, y: x * y, temporal_expansions, 1) + + # When decoding a batch of video latents at a time, one can save memory by slicing across the batch dimension + # to perform decoding of a single video latent at a time. + self.use_slicing = False + + # When decoding spatially large video latents, the memory requirement is very high. By breaking the video latent + # frames spatially into smaller tiles and performing multiple forward passes for decoding, and then blending the + # intermediate tiles together, the memory requirement can be lowered. + self.use_tiling = False + + # When decoding temporally long video latents, the memory requirement is very high. By decoding latent frames + # at a fixed frame batch size (based on `self.num_latent_frames_batch_sizes`), the memory requirement can be lowered. + self.use_framewise_encoding = False + self.use_framewise_decoding = False + + # This can be used to determine how the number of output frames in the final decoded video. To maintain consistency with + # the original implementation, this defaults to `True`. + # - Original implementation (drop_last_temporal_frames=True): + # Output frames = (latent_frames - 1) * temporal_compression_ratio + 1 + # - Without dropping additional temporal upscaled frames (drop_last_temporal_frames=False): + # Output frames = latent_frames * temporal_compression_ratio + # The latter case is useful for frame packing and some training/finetuning scenarios where the additional. + self.drop_last_temporal_frames = True + + # This can be configured based on the amount of GPU memory available. + # `12` for sample frames and `2` for latent frames are sensible defaults for consumer GPUs. + # Setting it to higher values results in higher memory usage. + self.num_sample_frames_batch_size = 12 + self.num_latent_frames_batch_size = 2 + + # The minimal tile height and width for spatial tiling to be used + self.tile_sample_min_height = 256 + self.tile_sample_min_width = 256 + + # The minimal distance between two spatial tiles + self.tile_sample_stride_height = 192 + self.tile_sample_stride_width = 192 + + def _set_gradient_checkpointing(self, module, value=False): + if isinstance(module, (MochiEncoder3D, MochiDecoder3D)): + module.gradient_checkpointing = value + + def enable_tiling( + self, + tile_sample_min_height: Optional[int] = None, + tile_sample_min_width: Optional[int] = None, + tile_sample_stride_height: Optional[float] = None, + tile_sample_stride_width: Optional[float] = None, + ) -> None: + r""" + Enable tiled VAE decoding. When this option is enabled, the VAE will split the input tensor into tiles to + compute decoding and encoding in several steps. This is useful for saving a large amount of memory and to allow + processing larger images. + + Args: + tile_sample_min_height (`int`, *optional*): + The minimum height required for a sample to be separated into tiles across the height dimension. + tile_sample_min_width (`int`, *optional*): + The minimum width required for a sample to be separated into tiles across the width dimension. + tile_sample_stride_height (`int`, *optional*): + The minimum amount of overlap between two consecutive vertical tiles. This is to ensure that there are + no tiling artifacts produced across the height dimension. + tile_sample_stride_width (`int`, *optional*): + The stride between two consecutive horizontal tiles. This is to ensure that there are no tiling + artifacts produced across the width dimension. + """ + self.use_tiling = True + self.tile_sample_min_height = tile_sample_min_height or self.tile_sample_min_height + self.tile_sample_min_width = tile_sample_min_width or self.tile_sample_min_width + self.tile_sample_stride_height = tile_sample_stride_height or self.tile_sample_stride_height + self.tile_sample_stride_width = tile_sample_stride_width or self.tile_sample_stride_width + + def disable_tiling(self) -> None: + r""" + Disable tiled VAE decoding. If `enable_tiling` was previously enabled, this method will go back to computing + decoding in one step. + """ + self.use_tiling = False + + def enable_slicing(self) -> None: + r""" + Enable sliced VAE decoding. When this option is enabled, the VAE will split the input tensor in slices to + compute decoding in several steps. This is useful to save some memory and allow larger batch sizes. + """ + self.use_slicing = True + + def disable_slicing(self) -> None: + r""" + Disable sliced VAE decoding. If `enable_slicing` was previously enabled, this method will go back to computing + decoding in one step. + """ + self.use_slicing = False + + def _enable_framewise_encoding(self): + r""" + Enables the framewise VAE encoding implementation with past latent padding. By default, Diffusers uses the + oneshot encoding implementation without current latent replicate padding. + + Warning: Framewise encoding may not work as expected due to the causal attention layers. If you enable + framewise encoding, encode a video, and try to decode it, there will be noticeable jittering effect. + """ + self.use_framewise_encoding = True + for name, module in self.named_modules(): + if isinstance(module, CogVideoXCausalConv3d): + module.pad_mode = "constant" + + def _enable_framewise_decoding(self): + r""" + Enables the framewise VAE decoding implementation with past latent padding. By default, Diffusers uses the + oneshot decoding implementation without current latent replicate padding. + """ + self.use_framewise_decoding = True + for name, module in self.named_modules(): + if isinstance(module, CogVideoXCausalConv3d): + module.pad_mode = "constant" + + def _encode(self, x: torch.Tensor) -> torch.Tensor: + batch_size, num_channels, num_frames, height, width = x.shape + + if self.use_tiling and (width > self.tile_sample_min_width or height > self.tile_sample_min_height): + return self.tiled_encode(x) + + if self.use_framewise_encoding: + raise NotImplementedError( + "Frame-wise encoding does not work with the Mochi VAE Encoder due to the presence of attention layers. " + "As intermediate frames are not independent from each other, they cannot be encoded frame-wise." + ) + else: + enc, _ = self.encoder(x) + + return enc + + @apply_forward_hook + def encode( + self, x: torch.Tensor, return_dict: bool = True + ) -> Union[AutoencoderKLOutput, Tuple[DiagonalGaussianDistribution]]: + """ + Encode a batch of images into latents. + + Args: + x (`torch.Tensor`): Input batch of images. + return_dict (`bool`, *optional*, defaults to `True`): + Whether to return a [`~models.autoencoder_kl.AutoencoderKLOutput`] instead of a plain tuple. + + Returns: + The latent representations of the encoded videos. If `return_dict` is True, a + [`~models.autoencoder_kl.AutoencoderKLOutput`] is returned, otherwise a plain `tuple` is returned. + """ + if self.use_slicing and x.shape[0] > 1: + encoded_slices = [self._encode(x_slice) for x_slice in x.split(1)] + h = torch.cat(encoded_slices) + else: + h = self._encode(x) + + posterior = DiagonalGaussianDistribution(h) + + if not return_dict: + return (posterior,) + return AutoencoderKLOutput(latent_dist=posterior) + + def _decode(self, z: torch.Tensor, return_dict: bool = True) -> Union[DecoderOutput, torch.Tensor]: + batch_size, num_channels, num_frames, height, width = z.shape + tile_latent_min_height = self.tile_sample_min_height // self.spatial_compression_ratio + tile_latent_min_width = self.tile_sample_stride_width // self.spatial_compression_ratio + + if self.use_tiling and (width > tile_latent_min_width or height > tile_latent_min_height): + return self.tiled_decode(z, return_dict=return_dict) + + if self.use_framewise_decoding: + conv_cache = None + dec = [] + + for i in range(0, num_frames, self.num_latent_frames_batch_size): + z_intermediate = z[:, :, i : i + self.num_latent_frames_batch_size] + z_intermediate, conv_cache = self.decoder(z_intermediate, conv_cache=conv_cache) + dec.append(z_intermediate) + + dec = torch.cat(dec, dim=2) + else: + dec, _ = self.decoder(z) + + if self.drop_last_temporal_frames and dec.size(2) >= self.temporal_compression_ratio: + dec = dec[:, :, self.temporal_compression_ratio - 1 :] + + if not return_dict: + return (dec,) + + return DecoderOutput(sample=dec) + + @apply_forward_hook + def decode(self, z: torch.Tensor, return_dict: bool = True) -> Union[DecoderOutput, torch.Tensor]: + """ + Decode a batch of images. + + Args: + z (`torch.Tensor`): Input batch of latent vectors. + return_dict (`bool`, *optional*, defaults to `True`): + Whether to return a [`~models.vae.DecoderOutput`] instead of a plain tuple. + + Returns: + [`~models.vae.DecoderOutput`] or `tuple`: + If return_dict is True, a [`~models.vae.DecoderOutput`] is returned, otherwise a plain `tuple` is + returned. + """ + if self.use_slicing and z.shape[0] > 1: + decoded_slices = [self._decode(z_slice).sample for z_slice in z.split(1)] + decoded = torch.cat(decoded_slices) + else: + decoded = self._decode(z).sample + + if not return_dict: + return (decoded,) + + return DecoderOutput(sample=decoded) + + def blend_v(self, a: torch.Tensor, b: torch.Tensor, blend_extent: int) -> torch.Tensor: + blend_extent = min(a.shape[3], b.shape[3], blend_extent) + for y in range(blend_extent): + b[:, :, :, y, :] = a[:, :, :, -blend_extent + y, :] * (1 - y / blend_extent) + b[:, :, :, y, :] * ( + y / blend_extent + ) + return b + + def blend_h(self, a: torch.Tensor, b: torch.Tensor, blend_extent: int) -> torch.Tensor: + blend_extent = min(a.shape[4], b.shape[4], blend_extent) + for x in range(blend_extent): + b[:, :, :, :, x] = a[:, :, :, :, -blend_extent + x] * (1 - x / blend_extent) + b[:, :, :, :, x] * ( + x / blend_extent + ) + return b + + def tiled_encode(self, x: torch.Tensor) -> torch.Tensor: + r"""Encode a batch of images using a tiled encoder. + + Args: + x (`torch.Tensor`): Input batch of videos. + + Returns: + `torch.Tensor`: + The latent representation of the encoded videos. + """ + batch_size, num_channels, num_frames, height, width = x.shape + latent_height = height // self.spatial_compression_ratio + latent_width = width // self.spatial_compression_ratio + + tile_latent_min_height = self.tile_sample_min_height // self.spatial_compression_ratio + tile_latent_min_width = self.tile_sample_min_width // self.spatial_compression_ratio + tile_latent_stride_height = self.tile_sample_stride_height // self.spatial_compression_ratio + tile_latent_stride_width = self.tile_sample_stride_width // self.spatial_compression_ratio + + blend_height = tile_latent_min_height - tile_latent_stride_height + blend_width = tile_latent_min_width - tile_latent_stride_width + + # Split x into overlapping tiles and encode them separately. + # The tiles have an overlap to avoid seams between tiles. + rows = [] + for i in range(0, height, self.tile_sample_stride_height): + row = [] + for j in range(0, width, self.tile_sample_stride_width): + if self.use_framewise_encoding: + raise NotImplementedError( + "Frame-wise encoding does not work with the Mochi VAE Encoder due to the presence of attention layers. " + "As intermediate frames are not independent from each other, they cannot be encoded frame-wise." + ) + else: + time, _ = self.encoder( + x[:, :, :, i : i + self.tile_sample_min_height, j : j + self.tile_sample_min_width] + ) + + row.append(time) + rows.append(row) + + result_rows = [] + for i, row in enumerate(rows): + result_row = [] + for j, tile in enumerate(row): + # blend the above tile and the left tile + # to the current tile and add the current tile to the result row + if i > 0: + tile = self.blend_v(rows[i - 1][j], tile, blend_height) + if j > 0: + tile = self.blend_h(row[j - 1], tile, blend_width) + result_row.append(tile[:, :, :, :tile_latent_stride_height, :tile_latent_stride_width]) + result_rows.append(torch.cat(result_row, dim=4)) + + enc = torch.cat(result_rows, dim=3)[:, :, :, :latent_height, :latent_width] + return enc + + def tiled_decode(self, z: torch.Tensor, return_dict: bool = True) -> Union[DecoderOutput, torch.Tensor]: + r""" + Decode a batch of images using a tiled decoder. + + Args: + z (`torch.Tensor`): Input batch of latent vectors. + return_dict (`bool`, *optional*, defaults to `True`): + Whether or not to return a [`~models.vae.DecoderOutput`] instead of a plain tuple. + + Returns: + [`~models.vae.DecoderOutput`] or `tuple`: + If return_dict is True, a [`~models.vae.DecoderOutput`] is returned, otherwise a plain `tuple` is + returned. + """ + + batch_size, num_channels, num_frames, height, width = z.shape + sample_height = height * self.spatial_compression_ratio + sample_width = width * self.spatial_compression_ratio + + tile_latent_min_height = self.tile_sample_min_height // self.spatial_compression_ratio + tile_latent_min_width = self.tile_sample_min_width // self.spatial_compression_ratio + tile_latent_stride_height = self.tile_sample_stride_height // self.spatial_compression_ratio + tile_latent_stride_width = self.tile_sample_stride_width // self.spatial_compression_ratio + + blend_height = self.tile_sample_min_height - self.tile_sample_stride_height + blend_width = self.tile_sample_min_width - self.tile_sample_stride_width + + # Split z into overlapping tiles and decode them separately. + # The tiles have an overlap to avoid seams between tiles. + rows = [] + for i in range(0, height, tile_latent_stride_height): + row = [] + for j in range(0, width, tile_latent_stride_width): + if self.use_framewise_decoding: + time = [] + conv_cache = None + + for k in range(0, num_frames, self.num_latent_frames_batch_size): + tile = z[ + :, + :, + k : k + self.num_latent_frames_batch_size, + i : i + tile_latent_min_height, + j : j + tile_latent_min_width, + ] + tile, conv_cache = self.decoder(tile, conv_cache=conv_cache) + time.append(tile) + + time = torch.cat(time, dim=2) + else: + time, _ = self.decoder(z[:, :, :, i : i + tile_latent_min_height, j : j + tile_latent_min_width]) + + if self.drop_last_temporal_frames and time.size(2) >= self.temporal_compression_ratio: + time = time[:, :, self.temporal_compression_ratio - 1 :] + + row.append(time) + rows.append(row) + + result_rows = [] + for i, row in enumerate(rows): + result_row = [] + for j, tile in enumerate(row): + # blend the above tile and the left tile + # to the current tile and add the current tile to the result row + if i > 0: + tile = self.blend_v(rows[i - 1][j], tile, blend_height) + if j > 0: + tile = self.blend_h(row[j - 1], tile, blend_width) + result_row.append(tile[:, :, :, : self.tile_sample_stride_height, : self.tile_sample_stride_width]) + result_rows.append(torch.cat(result_row, dim=4)) + + dec = torch.cat(result_rows, dim=3)[:, :, :, :sample_height, :sample_width] + + if not return_dict: + return (dec,) + + return DecoderOutput(sample=dec) + + def forward( + self, + sample: torch.Tensor, + sample_posterior: bool = False, + return_dict: bool = True, + generator: Optional[torch.Generator] = None, + ) -> Union[torch.Tensor, torch.Tensor]: + x = sample + posterior = self.encode(x).latent_dist + if sample_posterior: + z = posterior.sample(generator=generator) + else: + z = posterior.mode() + dec = self.decode(z) + if not return_dict: + return (dec,) + return dec diff --git a/venv/lib/python3.11/site-packages/diffusers/models/autoencoders/autoencoder_kl_temporal_decoder.py b/venv/lib/python3.11/site-packages/diffusers/models/autoencoders/autoencoder_kl_temporal_decoder.py new file mode 100644 index 0000000000000000000000000000000000000000..38ad78c0707b9084e4489a6310a3599d48e1eb99 --- /dev/null +++ b/venv/lib/python3.11/site-packages/diffusers/models/autoencoders/autoencoder_kl_temporal_decoder.py @@ -0,0 +1,394 @@ +# Copyright 2024 The HuggingFace Team. All rights reserved. +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. +import itertools +from typing import Dict, Optional, Tuple, Union + +import torch +import torch.nn as nn + +from ...configuration_utils import ConfigMixin, register_to_config +from ...utils import is_torch_version +from ...utils.accelerate_utils import apply_forward_hook +from ..attention_processor import CROSS_ATTENTION_PROCESSORS, AttentionProcessor, AttnProcessor +from ..modeling_outputs import AutoencoderKLOutput +from ..modeling_utils import ModelMixin +from ..unets.unet_3d_blocks import MidBlockTemporalDecoder, UpBlockTemporalDecoder +from .vae import DecoderOutput, DiagonalGaussianDistribution, Encoder + + +class TemporalDecoder(nn.Module): + def __init__( + self, + in_channels: int = 4, + out_channels: int = 3, + block_out_channels: Tuple[int] = (128, 256, 512, 512), + layers_per_block: int = 2, + ): + super().__init__() + self.layers_per_block = layers_per_block + + self.conv_in = nn.Conv2d(in_channels, block_out_channels[-1], kernel_size=3, stride=1, padding=1) + self.mid_block = MidBlockTemporalDecoder( + num_layers=self.layers_per_block, + in_channels=block_out_channels[-1], + out_channels=block_out_channels[-1], + attention_head_dim=block_out_channels[-1], + ) + + # up + self.up_blocks = nn.ModuleList([]) + reversed_block_out_channels = list(reversed(block_out_channels)) + output_channel = reversed_block_out_channels[0] + for i in range(len(block_out_channels)): + prev_output_channel = output_channel + output_channel = reversed_block_out_channels[i] + + is_final_block = i == len(block_out_channels) - 1 + up_block = UpBlockTemporalDecoder( + num_layers=self.layers_per_block + 1, + in_channels=prev_output_channel, + out_channels=output_channel, + add_upsample=not is_final_block, + ) + self.up_blocks.append(up_block) + prev_output_channel = output_channel + + self.conv_norm_out = nn.GroupNorm(num_channels=block_out_channels[0], num_groups=32, eps=1e-6) + + self.conv_act = nn.SiLU() + self.conv_out = torch.nn.Conv2d( + in_channels=block_out_channels[0], + out_channels=out_channels, + kernel_size=3, + padding=1, + ) + + conv_out_kernel_size = (3, 1, 1) + padding = [int(k // 2) for k in conv_out_kernel_size] + self.time_conv_out = torch.nn.Conv3d( + in_channels=out_channels, + out_channels=out_channels, + kernel_size=conv_out_kernel_size, + padding=padding, + ) + + self.gradient_checkpointing = False + + def forward( + self, + sample: torch.Tensor, + image_only_indicator: torch.Tensor, + num_frames: int = 1, + ) -> torch.Tensor: + r"""The forward method of the `Decoder` class.""" + + sample = self.conv_in(sample) + + upscale_dtype = next(itertools.chain(self.up_blocks.parameters(), self.up_blocks.buffers())).dtype + if torch.is_grad_enabled() and self.gradient_checkpointing: + + def create_custom_forward(module): + def custom_forward(*inputs): + return module(*inputs) + + return custom_forward + + if is_torch_version(">=", "1.11.0"): + # middle + sample = torch.utils.checkpoint.checkpoint( + create_custom_forward(self.mid_block), + sample, + image_only_indicator, + use_reentrant=False, + ) + sample = sample.to(upscale_dtype) + + # up + for up_block in self.up_blocks: + sample = torch.utils.checkpoint.checkpoint( + create_custom_forward(up_block), + sample, + image_only_indicator, + use_reentrant=False, + ) + else: + # middle + sample = torch.utils.checkpoint.checkpoint( + create_custom_forward(self.mid_block), + sample, + image_only_indicator, + ) + sample = sample.to(upscale_dtype) + + # up + for up_block in self.up_blocks: + sample = torch.utils.checkpoint.checkpoint( + create_custom_forward(up_block), + sample, + image_only_indicator, + ) + else: + # middle + sample = self.mid_block(sample, image_only_indicator=image_only_indicator) + sample = sample.to(upscale_dtype) + + # up + for up_block in self.up_blocks: + sample = up_block(sample, image_only_indicator=image_only_indicator) + + # post-process + sample = self.conv_norm_out(sample) + sample = self.conv_act(sample) + sample = self.conv_out(sample) + + batch_frames, channels, height, width = sample.shape + batch_size = batch_frames // num_frames + sample = sample[None, :].reshape(batch_size, num_frames, channels, height, width).permute(0, 2, 1, 3, 4) + sample = self.time_conv_out(sample) + + sample = sample.permute(0, 2, 1, 3, 4).reshape(batch_frames, channels, height, width) + + return sample + + +class AutoencoderKLTemporalDecoder(ModelMixin, ConfigMixin): + r""" + A VAE model with KL loss for encoding images into latents and decoding latent representations into images. + + This model inherits from [`ModelMixin`]. Check the superclass documentation for it's generic methods implemented + for all models (such as downloading or saving). + + Parameters: + in_channels (int, *optional*, defaults to 3): Number of channels in the input image. + out_channels (int, *optional*, defaults to 3): Number of channels in the output. + down_block_types (`Tuple[str]`, *optional*, defaults to `("DownEncoderBlock2D",)`): + Tuple of downsample block types. + block_out_channels (`Tuple[int]`, *optional*, defaults to `(64,)`): + Tuple of block output channels. + layers_per_block: (`int`, *optional*, defaults to 1): Number of layers per block. + latent_channels (`int`, *optional*, defaults to 4): Number of channels in the latent space. + sample_size (`int`, *optional*, defaults to `32`): Sample input size. + scaling_factor (`float`, *optional*, defaults to 0.18215): + The component-wise standard deviation of the trained latent space computed using the first batch of the + training set. This is used to scale the latent space to have unit variance when training the diffusion + model. The latents are scaled with the formula `z = z * scaling_factor` before being passed to the + diffusion model. When decoding, the latents are scaled back to the original scale with the formula: `z = 1 + / scaling_factor * z`. For more details, refer to sections 4.3.2 and D.1 of the [High-Resolution Image + Synthesis with Latent Diffusion Models](https://arxiv.org/abs/2112.10752) paper. + force_upcast (`bool`, *optional*, default to `True`): + If enabled it will force the VAE to run in float32 for high image resolution pipelines, such as SD-XL. VAE + can be fine-tuned / trained to a lower range without loosing too much precision in which case + `force_upcast` can be set to `False` - see: https://huggingface.co/madebyollin/sdxl-vae-fp16-fix + """ + + _supports_gradient_checkpointing = True + + @register_to_config + def __init__( + self, + in_channels: int = 3, + out_channels: int = 3, + down_block_types: Tuple[str] = ("DownEncoderBlock2D",), + block_out_channels: Tuple[int] = (64,), + layers_per_block: int = 1, + latent_channels: int = 4, + sample_size: int = 32, + scaling_factor: float = 0.18215, + force_upcast: float = True, + ): + super().__init__() + + # pass init params to Encoder + self.encoder = Encoder( + in_channels=in_channels, + out_channels=latent_channels, + down_block_types=down_block_types, + block_out_channels=block_out_channels, + layers_per_block=layers_per_block, + double_z=True, + ) + + # pass init params to Decoder + self.decoder = TemporalDecoder( + in_channels=latent_channels, + out_channels=out_channels, + block_out_channels=block_out_channels, + layers_per_block=layers_per_block, + ) + + self.quant_conv = nn.Conv2d(2 * latent_channels, 2 * latent_channels, 1) + + def _set_gradient_checkpointing(self, module, value=False): + if isinstance(module, (Encoder, TemporalDecoder)): + module.gradient_checkpointing = value + + @property + # Copied from diffusers.models.unets.unet_2d_condition.UNet2DConditionModel.attn_processors + def attn_processors(self) -> Dict[str, AttentionProcessor]: + r""" + Returns: + `dict` of attention processors: A dictionary containing all attention processors used in the model with + indexed by its weight name. + """ + # set recursively + processors = {} + + def fn_recursive_add_processors(name: str, module: torch.nn.Module, processors: Dict[str, AttentionProcessor]): + if hasattr(module, "get_processor"): + processors[f"{name}.processor"] = module.get_processor() + + for sub_name, child in module.named_children(): + fn_recursive_add_processors(f"{name}.{sub_name}", child, processors) + + return processors + + for name, module in self.named_children(): + fn_recursive_add_processors(name, module, processors) + + return processors + + # Copied from diffusers.models.unets.unet_2d_condition.UNet2DConditionModel.set_attn_processor + def set_attn_processor(self, processor: Union[AttentionProcessor, Dict[str, AttentionProcessor]]): + r""" + Sets the attention processor to use to compute attention. + + Parameters: + processor (`dict` of `AttentionProcessor` or only `AttentionProcessor`): + The instantiated processor class or a dictionary of processor classes that will be set as the processor + for **all** `Attention` layers. + + If `processor` is a dict, the key needs to define the path to the corresponding cross attention + processor. This is strongly recommended when setting trainable attention processors. + + """ + count = len(self.attn_processors.keys()) + + if isinstance(processor, dict) and len(processor) != count: + raise ValueError( + f"A dict of processors was passed, but the number of processors {len(processor)} does not match the" + f" number of attention layers: {count}. Please make sure to pass {count} processor classes." + ) + + def fn_recursive_attn_processor(name: str, module: torch.nn.Module, processor): + if hasattr(module, "set_processor"): + if not isinstance(processor, dict): + module.set_processor(processor) + else: + module.set_processor(processor.pop(f"{name}.processor")) + + for sub_name, child in module.named_children(): + fn_recursive_attn_processor(f"{name}.{sub_name}", child, processor) + + for name, module in self.named_children(): + fn_recursive_attn_processor(name, module, processor) + + def set_default_attn_processor(self): + """ + Disables custom attention processors and sets the default attention implementation. + """ + if all(proc.__class__ in CROSS_ATTENTION_PROCESSORS for proc in self.attn_processors.values()): + processor = AttnProcessor() + else: + raise ValueError( + f"Cannot call `set_default_attn_processor` when attention processors are of type {next(iter(self.attn_processors.values()))}" + ) + + self.set_attn_processor(processor) + + @apply_forward_hook + def encode( + self, x: torch.Tensor, return_dict: bool = True + ) -> Union[AutoencoderKLOutput, Tuple[DiagonalGaussianDistribution]]: + """ + Encode a batch of images into latents. + + Args: + x (`torch.Tensor`): Input batch of images. + return_dict (`bool`, *optional*, defaults to `True`): + Whether to return a [`~models.autoencoders.autoencoder_kl.AutoencoderKLOutput`] instead of a plain + tuple. + + Returns: + The latent representations of the encoded images. If `return_dict` is True, a + [`~models.autoencoders.autoencoder_kl.AutoencoderKLOutput`] is returned, otherwise a plain `tuple` is + returned. + """ + h = self.encoder(x) + moments = self.quant_conv(h) + posterior = DiagonalGaussianDistribution(moments) + + if not return_dict: + return (posterior,) + + return AutoencoderKLOutput(latent_dist=posterior) + + @apply_forward_hook + def decode( + self, + z: torch.Tensor, + num_frames: int, + return_dict: bool = True, + ) -> Union[DecoderOutput, torch.Tensor]: + """ + Decode a batch of images. + + Args: + z (`torch.Tensor`): Input batch of latent vectors. + return_dict (`bool`, *optional*, defaults to `True`): + Whether to return a [`~models.vae.DecoderOutput`] instead of a plain tuple. + + Returns: + [`~models.vae.DecoderOutput`] or `tuple`: + If return_dict is True, a [`~models.vae.DecoderOutput`] is returned, otherwise a plain `tuple` is + returned. + + """ + batch_size = z.shape[0] // num_frames + image_only_indicator = torch.zeros(batch_size, num_frames, dtype=z.dtype, device=z.device) + decoded = self.decoder(z, num_frames=num_frames, image_only_indicator=image_only_indicator) + + if not return_dict: + return (decoded,) + + return DecoderOutput(sample=decoded) + + def forward( + self, + sample: torch.Tensor, + sample_posterior: bool = False, + return_dict: bool = True, + generator: Optional[torch.Generator] = None, + num_frames: int = 1, + ) -> Union[DecoderOutput, torch.Tensor]: + r""" + Args: + sample (`torch.Tensor`): Input sample. + sample_posterior (`bool`, *optional*, defaults to `False`): + Whether to sample from the posterior. + return_dict (`bool`, *optional*, defaults to `True`): + Whether or not to return a [`DecoderOutput`] instead of a plain tuple. + """ + x = sample + posterior = self.encode(x).latent_dist + if sample_posterior: + z = posterior.sample(generator=generator) + else: + z = posterior.mode() + + dec = self.decode(z, num_frames=num_frames).sample + + if not return_dict: + return (dec,) + + return DecoderOutput(sample=dec) diff --git a/venv/lib/python3.11/site-packages/diffusers/models/autoencoders/autoencoder_oobleck.py b/venv/lib/python3.11/site-packages/diffusers/models/autoencoders/autoencoder_oobleck.py new file mode 100644 index 0000000000000000000000000000000000000000..e8e372a709d78b21f362f64f6a47d56cf746d3bd --- /dev/null +++ b/venv/lib/python3.11/site-packages/diffusers/models/autoencoders/autoencoder_oobleck.py @@ -0,0 +1,464 @@ +# Copyright 2024 The HuggingFace Team. All rights reserved. +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. +import math +from dataclasses import dataclass +from typing import Optional, Tuple, Union + +import numpy as np +import torch +import torch.nn as nn +from torch.nn.utils import weight_norm + +from ...configuration_utils import ConfigMixin, register_to_config +from ...utils import BaseOutput +from ...utils.accelerate_utils import apply_forward_hook +from ...utils.torch_utils import randn_tensor +from ..modeling_utils import ModelMixin + + +class Snake1d(nn.Module): + """ + A 1-dimensional Snake activation function module. + """ + + def __init__(self, hidden_dim, logscale=True): + super().__init__() + self.alpha = nn.Parameter(torch.zeros(1, hidden_dim, 1)) + self.beta = nn.Parameter(torch.zeros(1, hidden_dim, 1)) + + self.alpha.requires_grad = True + self.beta.requires_grad = True + self.logscale = logscale + + def forward(self, hidden_states): + shape = hidden_states.shape + + alpha = self.alpha if not self.logscale else torch.exp(self.alpha) + beta = self.beta if not self.logscale else torch.exp(self.beta) + + hidden_states = hidden_states.reshape(shape[0], shape[1], -1) + hidden_states = hidden_states + (beta + 1e-9).reciprocal() * torch.sin(alpha * hidden_states).pow(2) + hidden_states = hidden_states.reshape(shape) + return hidden_states + + +class OobleckResidualUnit(nn.Module): + """ + A residual unit composed of Snake1d and weight-normalized Conv1d layers with dilations. + """ + + def __init__(self, dimension: int = 16, dilation: int = 1): + super().__init__() + pad = ((7 - 1) * dilation) // 2 + + self.snake1 = Snake1d(dimension) + self.conv1 = weight_norm(nn.Conv1d(dimension, dimension, kernel_size=7, dilation=dilation, padding=pad)) + self.snake2 = Snake1d(dimension) + self.conv2 = weight_norm(nn.Conv1d(dimension, dimension, kernel_size=1)) + + def forward(self, hidden_state): + """ + Forward pass through the residual unit. + + Args: + hidden_state (`torch.Tensor` of shape `(batch_size, channels, time_steps)`): + Input tensor . + + Returns: + output_tensor (`torch.Tensor` of shape `(batch_size, channels, time_steps)`) + Input tensor after passing through the residual unit. + """ + output_tensor = hidden_state + output_tensor = self.conv1(self.snake1(output_tensor)) + output_tensor = self.conv2(self.snake2(output_tensor)) + + padding = (hidden_state.shape[-1] - output_tensor.shape[-1]) // 2 + if padding > 0: + hidden_state = hidden_state[..., padding:-padding] + output_tensor = hidden_state + output_tensor + return output_tensor + + +class OobleckEncoderBlock(nn.Module): + """Encoder block used in Oobleck encoder.""" + + def __init__(self, input_dim, output_dim, stride: int = 1): + super().__init__() + + self.res_unit1 = OobleckResidualUnit(input_dim, dilation=1) + self.res_unit2 = OobleckResidualUnit(input_dim, dilation=3) + self.res_unit3 = OobleckResidualUnit(input_dim, dilation=9) + self.snake1 = Snake1d(input_dim) + self.conv1 = weight_norm( + nn.Conv1d(input_dim, output_dim, kernel_size=2 * stride, stride=stride, padding=math.ceil(stride / 2)) + ) + + def forward(self, hidden_state): + hidden_state = self.res_unit1(hidden_state) + hidden_state = self.res_unit2(hidden_state) + hidden_state = self.snake1(self.res_unit3(hidden_state)) + hidden_state = self.conv1(hidden_state) + + return hidden_state + + +class OobleckDecoderBlock(nn.Module): + """Decoder block used in Oobleck decoder.""" + + def __init__(self, input_dim, output_dim, stride: int = 1): + super().__init__() + + self.snake1 = Snake1d(input_dim) + self.conv_t1 = weight_norm( + nn.ConvTranspose1d( + input_dim, + output_dim, + kernel_size=2 * stride, + stride=stride, + padding=math.ceil(stride / 2), + ) + ) + self.res_unit1 = OobleckResidualUnit(output_dim, dilation=1) + self.res_unit2 = OobleckResidualUnit(output_dim, dilation=3) + self.res_unit3 = OobleckResidualUnit(output_dim, dilation=9) + + def forward(self, hidden_state): + hidden_state = self.snake1(hidden_state) + hidden_state = self.conv_t1(hidden_state) + hidden_state = self.res_unit1(hidden_state) + hidden_state = self.res_unit2(hidden_state) + hidden_state = self.res_unit3(hidden_state) + + return hidden_state + + +class OobleckDiagonalGaussianDistribution(object): + def __init__(self, parameters: torch.Tensor, deterministic: bool = False): + self.parameters = parameters + self.mean, self.scale = parameters.chunk(2, dim=1) + self.std = nn.functional.softplus(self.scale) + 1e-4 + self.var = self.std * self.std + self.logvar = torch.log(self.var) + self.deterministic = deterministic + + def sample(self, generator: Optional[torch.Generator] = None) -> torch.Tensor: + # make sure sample is on the same device as the parameters and has same dtype + sample = randn_tensor( + self.mean.shape, + generator=generator, + device=self.parameters.device, + dtype=self.parameters.dtype, + ) + x = self.mean + self.std * sample + return x + + def kl(self, other: "OobleckDiagonalGaussianDistribution" = None) -> torch.Tensor: + if self.deterministic: + return torch.Tensor([0.0]) + else: + if other is None: + return (self.mean * self.mean + self.var - self.logvar - 1.0).sum(1).mean() + else: + normalized_diff = torch.pow(self.mean - other.mean, 2) / other.var + var_ratio = self.var / other.var + logvar_diff = self.logvar - other.logvar + + kl = normalized_diff + var_ratio + logvar_diff - 1 + + kl = kl.sum(1).mean() + return kl + + def mode(self) -> torch.Tensor: + return self.mean + + +@dataclass +class AutoencoderOobleckOutput(BaseOutput): + """ + Output of AutoencoderOobleck encoding method. + + Args: + latent_dist (`OobleckDiagonalGaussianDistribution`): + Encoded outputs of `Encoder` represented as the mean and standard deviation of + `OobleckDiagonalGaussianDistribution`. `OobleckDiagonalGaussianDistribution` allows for sampling latents + from the distribution. + """ + + latent_dist: "OobleckDiagonalGaussianDistribution" # noqa: F821 + + +@dataclass +class OobleckDecoderOutput(BaseOutput): + r""" + Output of decoding method. + + Args: + sample (`torch.Tensor` of shape `(batch_size, audio_channels, sequence_length)`): + The decoded output sample from the last layer of the model. + """ + + sample: torch.Tensor + + +class OobleckEncoder(nn.Module): + """Oobleck Encoder""" + + def __init__(self, encoder_hidden_size, audio_channels, downsampling_ratios, channel_multiples): + super().__init__() + + strides = downsampling_ratios + channel_multiples = [1] + channel_multiples + + # Create first convolution + self.conv1 = weight_norm(nn.Conv1d(audio_channels, encoder_hidden_size, kernel_size=7, padding=3)) + + self.block = [] + # Create EncoderBlocks that double channels as they downsample by `stride` + for stride_index, stride in enumerate(strides): + self.block += [ + OobleckEncoderBlock( + input_dim=encoder_hidden_size * channel_multiples[stride_index], + output_dim=encoder_hidden_size * channel_multiples[stride_index + 1], + stride=stride, + ) + ] + + self.block = nn.ModuleList(self.block) + d_model = encoder_hidden_size * channel_multiples[-1] + self.snake1 = Snake1d(d_model) + self.conv2 = weight_norm(nn.Conv1d(d_model, encoder_hidden_size, kernel_size=3, padding=1)) + + def forward(self, hidden_state): + hidden_state = self.conv1(hidden_state) + + for module in self.block: + hidden_state = module(hidden_state) + + hidden_state = self.snake1(hidden_state) + hidden_state = self.conv2(hidden_state) + + return hidden_state + + +class OobleckDecoder(nn.Module): + """Oobleck Decoder""" + + def __init__(self, channels, input_channels, audio_channels, upsampling_ratios, channel_multiples): + super().__init__() + + strides = upsampling_ratios + channel_multiples = [1] + channel_multiples + + # Add first conv layer + self.conv1 = weight_norm(nn.Conv1d(input_channels, channels * channel_multiples[-1], kernel_size=7, padding=3)) + + # Add upsampling + MRF blocks + block = [] + for stride_index, stride in enumerate(strides): + block += [ + OobleckDecoderBlock( + input_dim=channels * channel_multiples[len(strides) - stride_index], + output_dim=channels * channel_multiples[len(strides) - stride_index - 1], + stride=stride, + ) + ] + + self.block = nn.ModuleList(block) + output_dim = channels + self.snake1 = Snake1d(output_dim) + self.conv2 = weight_norm(nn.Conv1d(channels, audio_channels, kernel_size=7, padding=3, bias=False)) + + def forward(self, hidden_state): + hidden_state = self.conv1(hidden_state) + + for layer in self.block: + hidden_state = layer(hidden_state) + + hidden_state = self.snake1(hidden_state) + hidden_state = self.conv2(hidden_state) + + return hidden_state + + +class AutoencoderOobleck(ModelMixin, ConfigMixin): + r""" + An autoencoder for encoding waveforms into latents and decoding latent representations into waveforms. First + introduced in Stable Audio. + + This model inherits from [`ModelMixin`]. Check the superclass documentation for it's generic methods implemented + for all models (such as downloading or saving). + + Parameters: + encoder_hidden_size (`int`, *optional*, defaults to 128): + Intermediate representation dimension for the encoder. + downsampling_ratios (`List[int]`, *optional*, defaults to `[2, 4, 4, 8, 8]`): + Ratios for downsampling in the encoder. These are used in reverse order for upsampling in the decoder. + channel_multiples (`List[int]`, *optional*, defaults to `[1, 2, 4, 8, 16]`): + Multiples used to determine the hidden sizes of the hidden layers. + decoder_channels (`int`, *optional*, defaults to 128): + Intermediate representation dimension for the decoder. + decoder_input_channels (`int`, *optional*, defaults to 64): + Input dimension for the decoder. Corresponds to the latent dimension. + audio_channels (`int`, *optional*, defaults to 2): + Number of channels in the audio data. Either 1 for mono or 2 for stereo. + sampling_rate (`int`, *optional*, defaults to 44100): + The sampling rate at which the audio waveform should be digitalized expressed in hertz (Hz). + """ + + _supports_gradient_checkpointing = False + + @register_to_config + def __init__( + self, + encoder_hidden_size=128, + downsampling_ratios=[2, 4, 4, 8, 8], + channel_multiples=[1, 2, 4, 8, 16], + decoder_channels=128, + decoder_input_channels=64, + audio_channels=2, + sampling_rate=44100, + ): + super().__init__() + + self.encoder_hidden_size = encoder_hidden_size + self.downsampling_ratios = downsampling_ratios + self.decoder_channels = decoder_channels + self.upsampling_ratios = downsampling_ratios[::-1] + self.hop_length = int(np.prod(downsampling_ratios)) + self.sampling_rate = sampling_rate + + self.encoder = OobleckEncoder( + encoder_hidden_size=encoder_hidden_size, + audio_channels=audio_channels, + downsampling_ratios=downsampling_ratios, + channel_multiples=channel_multiples, + ) + + self.decoder = OobleckDecoder( + channels=decoder_channels, + input_channels=decoder_input_channels, + audio_channels=audio_channels, + upsampling_ratios=self.upsampling_ratios, + channel_multiples=channel_multiples, + ) + + self.use_slicing = False + + def enable_slicing(self): + r""" + Enable sliced VAE decoding. When this option is enabled, the VAE will split the input tensor in slices to + compute decoding in several steps. This is useful to save some memory and allow larger batch sizes. + """ + self.use_slicing = True + + def disable_slicing(self): + r""" + Disable sliced VAE decoding. If `enable_slicing` was previously enabled, this method will go back to computing + decoding in one step. + """ + self.use_slicing = False + + @apply_forward_hook + def encode( + self, x: torch.Tensor, return_dict: bool = True + ) -> Union[AutoencoderOobleckOutput, Tuple[OobleckDiagonalGaussianDistribution]]: + """ + Encode a batch of images into latents. + + Args: + x (`torch.Tensor`): Input batch of images. + return_dict (`bool`, *optional*, defaults to `True`): + Whether to return a [`~models.autoencoder_kl.AutoencoderKLOutput`] instead of a plain tuple. + + Returns: + The latent representations of the encoded images. If `return_dict` is True, a + [`~models.autoencoder_kl.AutoencoderKLOutput`] is returned, otherwise a plain `tuple` is returned. + """ + if self.use_slicing and x.shape[0] > 1: + encoded_slices = [self.encoder(x_slice) for x_slice in x.split(1)] + h = torch.cat(encoded_slices) + else: + h = self.encoder(x) + + posterior = OobleckDiagonalGaussianDistribution(h) + + if not return_dict: + return (posterior,) + + return AutoencoderOobleckOutput(latent_dist=posterior) + + def _decode(self, z: torch.Tensor, return_dict: bool = True) -> Union[OobleckDecoderOutput, torch.Tensor]: + dec = self.decoder(z) + + if not return_dict: + return (dec,) + + return OobleckDecoderOutput(sample=dec) + + @apply_forward_hook + def decode( + self, z: torch.FloatTensor, return_dict: bool = True, generator=None + ) -> Union[OobleckDecoderOutput, torch.FloatTensor]: + """ + Decode a batch of images. + + Args: + z (`torch.Tensor`): Input batch of latent vectors. + return_dict (`bool`, *optional*, defaults to `True`): + Whether to return a [`~models.vae.OobleckDecoderOutput`] instead of a plain tuple. + + Returns: + [`~models.vae.OobleckDecoderOutput`] or `tuple`: + If return_dict is True, a [`~models.vae.OobleckDecoderOutput`] is returned, otherwise a plain `tuple` + is returned. + + """ + if self.use_slicing and z.shape[0] > 1: + decoded_slices = [self._decode(z_slice).sample for z_slice in z.split(1)] + decoded = torch.cat(decoded_slices) + else: + decoded = self._decode(z).sample + + if not return_dict: + return (decoded,) + + return OobleckDecoderOutput(sample=decoded) + + def forward( + self, + sample: torch.Tensor, + sample_posterior: bool = False, + return_dict: bool = True, + generator: Optional[torch.Generator] = None, + ) -> Union[OobleckDecoderOutput, torch.Tensor]: + r""" + Args: + sample (`torch.Tensor`): Input sample. + sample_posterior (`bool`, *optional*, defaults to `False`): + Whether to sample from the posterior. + return_dict (`bool`, *optional*, defaults to `True`): + Whether or not to return a [`OobleckDecoderOutput`] instead of a plain tuple. + """ + x = sample + posterior = self.encode(x).latent_dist + if sample_posterior: + z = posterior.sample(generator=generator) + else: + z = posterior.mode() + dec = self.decode(z).sample + + if not return_dict: + return (dec,) + + return OobleckDecoderOutput(sample=dec) diff --git a/venv/lib/python3.11/site-packages/diffusers/models/autoencoders/autoencoder_tiny.py b/venv/lib/python3.11/site-packages/diffusers/models/autoencoders/autoencoder_tiny.py new file mode 100644 index 0000000000000000000000000000000000000000..35081c22dfc4b786e53681965806195af2030679 --- /dev/null +++ b/venv/lib/python3.11/site-packages/diffusers/models/autoencoders/autoencoder_tiny.py @@ -0,0 +1,350 @@ +# Copyright 2024 Ollin Boer Bohan and The HuggingFace Team. All rights reserved. +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. + + +from dataclasses import dataclass +from typing import Optional, Tuple, Union + +import torch + +from ...configuration_utils import ConfigMixin, register_to_config +from ...utils import BaseOutput +from ...utils.accelerate_utils import apply_forward_hook +from ..modeling_utils import ModelMixin +from .vae import DecoderOutput, DecoderTiny, EncoderTiny + + +@dataclass +class AutoencoderTinyOutput(BaseOutput): + """ + Output of AutoencoderTiny encoding method. + + Args: + latents (`torch.Tensor`): Encoded outputs of the `Encoder`. + + """ + + latents: torch.Tensor + + +class AutoencoderTiny(ModelMixin, ConfigMixin): + r""" + A tiny distilled VAE model for encoding images into latents and decoding latent representations into images. + + [`AutoencoderTiny`] is a wrapper around the original implementation of `TAESD`. + + This model inherits from [`ModelMixin`]. Check the superclass documentation for its generic methods implemented for + all models (such as downloading or saving). + + Parameters: + in_channels (`int`, *optional*, defaults to 3): Number of channels in the input image. + out_channels (`int`, *optional*, defaults to 3): Number of channels in the output. + encoder_block_out_channels (`Tuple[int]`, *optional*, defaults to `(64, 64, 64, 64)`): + Tuple of integers representing the number of output channels for each encoder block. The length of the + tuple should be equal to the number of encoder blocks. + decoder_block_out_channels (`Tuple[int]`, *optional*, defaults to `(64, 64, 64, 64)`): + Tuple of integers representing the number of output channels for each decoder block. The length of the + tuple should be equal to the number of decoder blocks. + act_fn (`str`, *optional*, defaults to `"relu"`): + Activation function to be used throughout the model. + latent_channels (`int`, *optional*, defaults to 4): + Number of channels in the latent representation. The latent space acts as a compressed representation of + the input image. + upsampling_scaling_factor (`int`, *optional*, defaults to 2): + Scaling factor for upsampling in the decoder. It determines the size of the output image during the + upsampling process. + num_encoder_blocks (`Tuple[int]`, *optional*, defaults to `(1, 3, 3, 3)`): + Tuple of integers representing the number of encoder blocks at each stage of the encoding process. The + length of the tuple should be equal to the number of stages in the encoder. Each stage has a different + number of encoder blocks. + num_decoder_blocks (`Tuple[int]`, *optional*, defaults to `(3, 3, 3, 1)`): + Tuple of integers representing the number of decoder blocks at each stage of the decoding process. The + length of the tuple should be equal to the number of stages in the decoder. Each stage has a different + number of decoder blocks. + latent_magnitude (`float`, *optional*, defaults to 3.0): + Magnitude of the latent representation. This parameter scales the latent representation values to control + the extent of information preservation. + latent_shift (float, *optional*, defaults to 0.5): + Shift applied to the latent representation. This parameter controls the center of the latent space. + scaling_factor (`float`, *optional*, defaults to 1.0): + The component-wise standard deviation of the trained latent space computed using the first batch of the + training set. This is used to scale the latent space to have unit variance when training the diffusion + model. The latents are scaled with the formula `z = z * scaling_factor` before being passed to the + diffusion model. When decoding, the latents are scaled back to the original scale with the formula: `z = 1 + / scaling_factor * z`. For more details, refer to sections 4.3.2 and D.1 of the [High-Resolution Image + Synthesis with Latent Diffusion Models](https://arxiv.org/abs/2112.10752) paper. For this Autoencoder, + however, no such scaling factor was used, hence the value of 1.0 as the default. + force_upcast (`bool`, *optional*, default to `False`): + If enabled it will force the VAE to run in float32 for high image resolution pipelines, such as SD-XL. VAE + can be fine-tuned / trained to a lower range without losing too much precision, in which case + `force_upcast` can be set to `False` (see this fp16-friendly + [AutoEncoder](https://huggingface.co/madebyollin/sdxl-vae-fp16-fix)). + """ + + _supports_gradient_checkpointing = True + + @register_to_config + def __init__( + self, + in_channels: int = 3, + out_channels: int = 3, + encoder_block_out_channels: Tuple[int, ...] = (64, 64, 64, 64), + decoder_block_out_channels: Tuple[int, ...] = (64, 64, 64, 64), + act_fn: str = "relu", + upsample_fn: str = "nearest", + latent_channels: int = 4, + upsampling_scaling_factor: int = 2, + num_encoder_blocks: Tuple[int, ...] = (1, 3, 3, 3), + num_decoder_blocks: Tuple[int, ...] = (3, 3, 3, 1), + latent_magnitude: int = 3, + latent_shift: float = 0.5, + force_upcast: bool = False, + scaling_factor: float = 1.0, + shift_factor: float = 0.0, + ): + super().__init__() + + if len(encoder_block_out_channels) != len(num_encoder_blocks): + raise ValueError("`encoder_block_out_channels` should have the same length as `num_encoder_blocks`.") + if len(decoder_block_out_channels) != len(num_decoder_blocks): + raise ValueError("`decoder_block_out_channels` should have the same length as `num_decoder_blocks`.") + + self.encoder = EncoderTiny( + in_channels=in_channels, + out_channels=latent_channels, + num_blocks=num_encoder_blocks, + block_out_channels=encoder_block_out_channels, + act_fn=act_fn, + ) + + self.decoder = DecoderTiny( + in_channels=latent_channels, + out_channels=out_channels, + num_blocks=num_decoder_blocks, + block_out_channels=decoder_block_out_channels, + upsampling_scaling_factor=upsampling_scaling_factor, + act_fn=act_fn, + upsample_fn=upsample_fn, + ) + + self.latent_magnitude = latent_magnitude + self.latent_shift = latent_shift + self.scaling_factor = scaling_factor + + self.use_slicing = False + self.use_tiling = False + + # only relevant if vae tiling is enabled + self.spatial_scale_factor = 2**out_channels + self.tile_overlap_factor = 0.125 + self.tile_sample_min_size = 512 + self.tile_latent_min_size = self.tile_sample_min_size // self.spatial_scale_factor + + self.register_to_config(block_out_channels=decoder_block_out_channels) + self.register_to_config(force_upcast=False) + + def _set_gradient_checkpointing(self, module, value: bool = False) -> None: + if isinstance(module, (EncoderTiny, DecoderTiny)): + module.gradient_checkpointing = value + + def scale_latents(self, x: torch.Tensor) -> torch.Tensor: + """raw latents -> [0, 1]""" + return x.div(2 * self.latent_magnitude).add(self.latent_shift).clamp(0, 1) + + def unscale_latents(self, x: torch.Tensor) -> torch.Tensor: + """[0, 1] -> raw latents""" + return x.sub(self.latent_shift).mul(2 * self.latent_magnitude) + + def enable_slicing(self) -> None: + r""" + Enable sliced VAE decoding. When this option is enabled, the VAE will split the input tensor in slices to + compute decoding in several steps. This is useful to save some memory and allow larger batch sizes. + """ + self.use_slicing = True + + def disable_slicing(self) -> None: + r""" + Disable sliced VAE decoding. If `enable_slicing` was previously enabled, this method will go back to computing + decoding in one step. + """ + self.use_slicing = False + + def enable_tiling(self, use_tiling: bool = True) -> None: + r""" + Enable tiled VAE decoding. When this option is enabled, the VAE will split the input tensor into tiles to + compute decoding and encoding in several steps. This is useful for saving a large amount of memory and to allow + processing larger images. + """ + self.use_tiling = use_tiling + + def disable_tiling(self) -> None: + r""" + Disable tiled VAE decoding. If `enable_tiling` was previously enabled, this method will go back to computing + decoding in one step. + """ + self.enable_tiling(False) + + def _tiled_encode(self, x: torch.Tensor) -> torch.Tensor: + r"""Encode a batch of images using a tiled encoder. + + When this option is enabled, the VAE will split the input tensor into tiles to compute encoding in several + steps. This is useful to keep memory use constant regardless of image size. To avoid tiling artifacts, the + tiles overlap and are blended together to form a smooth output. + + Args: + x (`torch.Tensor`): Input batch of images. + + Returns: + `torch.Tensor`: Encoded batch of images. + """ + # scale of encoder output relative to input + sf = self.spatial_scale_factor + tile_size = self.tile_sample_min_size + + # number of pixels to blend and to traverse between tile + blend_size = int(tile_size * self.tile_overlap_factor) + traverse_size = tile_size - blend_size + + # tiles index (up/left) + ti = range(0, x.shape[-2], traverse_size) + tj = range(0, x.shape[-1], traverse_size) + + # mask for blending + blend_masks = torch.stack( + torch.meshgrid([torch.arange(tile_size / sf) / (blend_size / sf - 1)] * 2, indexing="ij") + ) + blend_masks = blend_masks.clamp(0, 1).to(x.device) + + # output array + out = torch.zeros(x.shape[0], 4, x.shape[-2] // sf, x.shape[-1] // sf, device=x.device) + for i in ti: + for j in tj: + tile_in = x[..., i : i + tile_size, j : j + tile_size] + # tile result + tile_out = out[..., i // sf : (i + tile_size) // sf, j // sf : (j + tile_size) // sf] + tile = self.encoder(tile_in) + h, w = tile.shape[-2], tile.shape[-1] + # blend tile result into output + blend_mask_i = torch.ones_like(blend_masks[0]) if i == 0 else blend_masks[0] + blend_mask_j = torch.ones_like(blend_masks[1]) if j == 0 else blend_masks[1] + blend_mask = blend_mask_i * blend_mask_j + tile, blend_mask = tile[..., :h, :w], blend_mask[..., :h, :w] + tile_out.copy_(blend_mask * tile + (1 - blend_mask) * tile_out) + return out + + def _tiled_decode(self, x: torch.Tensor) -> torch.Tensor: + r"""Encode a batch of images using a tiled encoder. + + When this option is enabled, the VAE will split the input tensor into tiles to compute encoding in several + steps. This is useful to keep memory use constant regardless of image size. To avoid tiling artifacts, the + tiles overlap and are blended together to form a smooth output. + + Args: + x (`torch.Tensor`): Input batch of images. + + Returns: + `torch.Tensor`: Encoded batch of images. + """ + # scale of decoder output relative to input + sf = self.spatial_scale_factor + tile_size = self.tile_latent_min_size + + # number of pixels to blend and to traverse between tiles + blend_size = int(tile_size * self.tile_overlap_factor) + traverse_size = tile_size - blend_size + + # tiles index (up/left) + ti = range(0, x.shape[-2], traverse_size) + tj = range(0, x.shape[-1], traverse_size) + + # mask for blending + blend_masks = torch.stack( + torch.meshgrid([torch.arange(tile_size * sf) / (blend_size * sf - 1)] * 2, indexing="ij") + ) + blend_masks = blend_masks.clamp(0, 1).to(x.device) + + # output array + out = torch.zeros(x.shape[0], 3, x.shape[-2] * sf, x.shape[-1] * sf, device=x.device) + for i in ti: + for j in tj: + tile_in = x[..., i : i + tile_size, j : j + tile_size] + # tile result + tile_out = out[..., i * sf : (i + tile_size) * sf, j * sf : (j + tile_size) * sf] + tile = self.decoder(tile_in) + h, w = tile.shape[-2], tile.shape[-1] + # blend tile result into output + blend_mask_i = torch.ones_like(blend_masks[0]) if i == 0 else blend_masks[0] + blend_mask_j = torch.ones_like(blend_masks[1]) if j == 0 else blend_masks[1] + blend_mask = (blend_mask_i * blend_mask_j)[..., :h, :w] + tile_out.copy_(blend_mask * tile + (1 - blend_mask) * tile_out) + return out + + @apply_forward_hook + def encode(self, x: torch.Tensor, return_dict: bool = True) -> Union[AutoencoderTinyOutput, Tuple[torch.Tensor]]: + if self.use_slicing and x.shape[0] > 1: + output = [ + self._tiled_encode(x_slice) if self.use_tiling else self.encoder(x_slice) for x_slice in x.split(1) + ] + output = torch.cat(output) + else: + output = self._tiled_encode(x) if self.use_tiling else self.encoder(x) + + if not return_dict: + return (output,) + + return AutoencoderTinyOutput(latents=output) + + @apply_forward_hook + def decode( + self, x: torch.Tensor, generator: Optional[torch.Generator] = None, return_dict: bool = True + ) -> Union[DecoderOutput, Tuple[torch.Tensor]]: + if self.use_slicing and x.shape[0] > 1: + output = [ + self._tiled_decode(x_slice) if self.use_tiling else self.decoder(x_slice) for x_slice in x.split(1) + ] + output = torch.cat(output) + else: + output = self._tiled_decode(x) if self.use_tiling else self.decoder(x) + + if not return_dict: + return (output,) + + return DecoderOutput(sample=output) + + def forward( + self, + sample: torch.Tensor, + return_dict: bool = True, + ) -> Union[DecoderOutput, Tuple[torch.Tensor]]: + r""" + Args: + sample (`torch.Tensor`): Input sample. + return_dict (`bool`, *optional*, defaults to `True`): + Whether or not to return a [`DecoderOutput`] instead of a plain tuple. + """ + enc = self.encode(sample).latents + + # scale latents to be in [0, 1], then quantize latents to a byte tensor, + # as if we were storing the latents in an RGBA uint8 image. + scaled_enc = self.scale_latents(enc).mul_(255).round_().byte() + + # unquantize latents back into [0, 1], then unscale latents back to their original range, + # as if we were loading the latents from an RGBA uint8 image. + unscaled_enc = self.unscale_latents(scaled_enc / 255.0) + + dec = self.decode(unscaled_enc).sample + + if not return_dict: + return (dec,) + return DecoderOutput(sample=dec) diff --git a/venv/lib/python3.11/site-packages/diffusers/models/autoencoders/consistency_decoder_vae.py b/venv/lib/python3.11/site-packages/diffusers/models/autoencoders/consistency_decoder_vae.py new file mode 100644 index 0000000000000000000000000000000000000000..a97249f794737bef4369eda50a5b76893d4af3e6 --- /dev/null +++ b/venv/lib/python3.11/site-packages/diffusers/models/autoencoders/consistency_decoder_vae.py @@ -0,0 +1,460 @@ +# Copyright 2024 The HuggingFace Team. All rights reserved. +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. +from dataclasses import dataclass +from typing import Dict, Optional, Tuple, Union + +import torch +import torch.nn.functional as F +from torch import nn + +from ...configuration_utils import ConfigMixin, register_to_config +from ...schedulers import ConsistencyDecoderScheduler +from ...utils import BaseOutput +from ...utils.accelerate_utils import apply_forward_hook +from ...utils.torch_utils import randn_tensor +from ..attention_processor import ( + ADDED_KV_ATTENTION_PROCESSORS, + CROSS_ATTENTION_PROCESSORS, + AttentionProcessor, + AttnAddedKVProcessor, + AttnProcessor, +) +from ..modeling_utils import ModelMixin +from ..unets.unet_2d import UNet2DModel +from .vae import DecoderOutput, DiagonalGaussianDistribution, Encoder + + +@dataclass +class ConsistencyDecoderVAEOutput(BaseOutput): + """ + Output of encoding method. + + Args: + latent_dist (`DiagonalGaussianDistribution`): + Encoded outputs of `Encoder` represented as the mean and logvar of `DiagonalGaussianDistribution`. + `DiagonalGaussianDistribution` allows for sampling latents from the distribution. + """ + + latent_dist: "DiagonalGaussianDistribution" + + +class ConsistencyDecoderVAE(ModelMixin, ConfigMixin): + r""" + The consistency decoder used with DALL-E 3. + + Examples: + ```py + >>> import torch + >>> from diffusers import StableDiffusionPipeline, ConsistencyDecoderVAE + + >>> vae = ConsistencyDecoderVAE.from_pretrained("openai/consistency-decoder", torch_dtype=torch.float16) + >>> pipe = StableDiffusionPipeline.from_pretrained( + ... "runwayml/stable-diffusion-v1-5", vae=vae, torch_dtype=torch.float16 + ... ).to("cuda") + + >>> image = pipe("horse", generator=torch.manual_seed(0)).images[0] + >>> image + ``` + """ + + @register_to_config + def __init__( + self, + scaling_factor: float = 0.18215, + latent_channels: int = 4, + sample_size: int = 32, + encoder_act_fn: str = "silu", + encoder_block_out_channels: Tuple[int, ...] = (128, 256, 512, 512), + encoder_double_z: bool = True, + encoder_down_block_types: Tuple[str, ...] = ( + "DownEncoderBlock2D", + "DownEncoderBlock2D", + "DownEncoderBlock2D", + "DownEncoderBlock2D", + ), + encoder_in_channels: int = 3, + encoder_layers_per_block: int = 2, + encoder_norm_num_groups: int = 32, + encoder_out_channels: int = 4, + decoder_add_attention: bool = False, + decoder_block_out_channels: Tuple[int, ...] = (320, 640, 1024, 1024), + decoder_down_block_types: Tuple[str, ...] = ( + "ResnetDownsampleBlock2D", + "ResnetDownsampleBlock2D", + "ResnetDownsampleBlock2D", + "ResnetDownsampleBlock2D", + ), + decoder_downsample_padding: int = 1, + decoder_in_channels: int = 7, + decoder_layers_per_block: int = 3, + decoder_norm_eps: float = 1e-05, + decoder_norm_num_groups: int = 32, + decoder_num_train_timesteps: int = 1024, + decoder_out_channels: int = 6, + decoder_resnet_time_scale_shift: str = "scale_shift", + decoder_time_embedding_type: str = "learned", + decoder_up_block_types: Tuple[str, ...] = ( + "ResnetUpsampleBlock2D", + "ResnetUpsampleBlock2D", + "ResnetUpsampleBlock2D", + "ResnetUpsampleBlock2D", + ), + ): + super().__init__() + self.encoder = Encoder( + act_fn=encoder_act_fn, + block_out_channels=encoder_block_out_channels, + double_z=encoder_double_z, + down_block_types=encoder_down_block_types, + in_channels=encoder_in_channels, + layers_per_block=encoder_layers_per_block, + norm_num_groups=encoder_norm_num_groups, + out_channels=encoder_out_channels, + ) + + self.decoder_unet = UNet2DModel( + add_attention=decoder_add_attention, + block_out_channels=decoder_block_out_channels, + down_block_types=decoder_down_block_types, + downsample_padding=decoder_downsample_padding, + in_channels=decoder_in_channels, + layers_per_block=decoder_layers_per_block, + norm_eps=decoder_norm_eps, + norm_num_groups=decoder_norm_num_groups, + num_train_timesteps=decoder_num_train_timesteps, + out_channels=decoder_out_channels, + resnet_time_scale_shift=decoder_resnet_time_scale_shift, + time_embedding_type=decoder_time_embedding_type, + up_block_types=decoder_up_block_types, + ) + self.decoder_scheduler = ConsistencyDecoderScheduler() + self.register_to_config(block_out_channels=encoder_block_out_channels) + self.register_to_config(force_upcast=False) + self.register_buffer( + "means", + torch.tensor([0.38862467, 0.02253063, 0.07381133, -0.0171294])[None, :, None, None], + persistent=False, + ) + self.register_buffer( + "stds", torch.tensor([0.9654121, 1.0440036, 0.76147926, 0.77022034])[None, :, None, None], persistent=False + ) + + self.quant_conv = nn.Conv2d(2 * latent_channels, 2 * latent_channels, 1) + + self.use_slicing = False + self.use_tiling = False + + # only relevant if vae tiling is enabled + self.tile_sample_min_size = self.config.sample_size + sample_size = ( + self.config.sample_size[0] + if isinstance(self.config.sample_size, (list, tuple)) + else self.config.sample_size + ) + self.tile_latent_min_size = int(sample_size / (2 ** (len(self.config.block_out_channels) - 1))) + self.tile_overlap_factor = 0.25 + + # Copied from diffusers.models.autoencoders.autoencoder_kl.AutoencoderKL.enable_tiling + def enable_tiling(self, use_tiling: bool = True): + r""" + Enable tiled VAE decoding. When this option is enabled, the VAE will split the input tensor into tiles to + compute decoding and encoding in several steps. This is useful for saving a large amount of memory and to allow + processing larger images. + """ + self.use_tiling = use_tiling + + # Copied from diffusers.models.autoencoders.autoencoder_kl.AutoencoderKL.disable_tiling + def disable_tiling(self): + r""" + Disable tiled VAE decoding. If `enable_tiling` was previously enabled, this method will go back to computing + decoding in one step. + """ + self.enable_tiling(False) + + # Copied from diffusers.models.autoencoders.autoencoder_kl.AutoencoderKL.enable_slicing + def enable_slicing(self): + r""" + Enable sliced VAE decoding. When this option is enabled, the VAE will split the input tensor in slices to + compute decoding in several steps. This is useful to save some memory and allow larger batch sizes. + """ + self.use_slicing = True + + # Copied from diffusers.models.autoencoders.autoencoder_kl.AutoencoderKL.disable_slicing + def disable_slicing(self): + r""" + Disable sliced VAE decoding. If `enable_slicing` was previously enabled, this method will go back to computing + decoding in one step. + """ + self.use_slicing = False + + @property + # Copied from diffusers.models.unets.unet_2d_condition.UNet2DConditionModel.attn_processors + def attn_processors(self) -> Dict[str, AttentionProcessor]: + r""" + Returns: + `dict` of attention processors: A dictionary containing all attention processors used in the model with + indexed by its weight name. + """ + # set recursively + processors = {} + + def fn_recursive_add_processors(name: str, module: torch.nn.Module, processors: Dict[str, AttentionProcessor]): + if hasattr(module, "get_processor"): + processors[f"{name}.processor"] = module.get_processor() + + for sub_name, child in module.named_children(): + fn_recursive_add_processors(f"{name}.{sub_name}", child, processors) + + return processors + + for name, module in self.named_children(): + fn_recursive_add_processors(name, module, processors) + + return processors + + # Copied from diffusers.models.unets.unet_2d_condition.UNet2DConditionModel.set_attn_processor + def set_attn_processor(self, processor: Union[AttentionProcessor, Dict[str, AttentionProcessor]]): + r""" + Sets the attention processor to use to compute attention. + + Parameters: + processor (`dict` of `AttentionProcessor` or only `AttentionProcessor`): + The instantiated processor class or a dictionary of processor classes that will be set as the processor + for **all** `Attention` layers. + + If `processor` is a dict, the key needs to define the path to the corresponding cross attention + processor. This is strongly recommended when setting trainable attention processors. + + """ + count = len(self.attn_processors.keys()) + + if isinstance(processor, dict) and len(processor) != count: + raise ValueError( + f"A dict of processors was passed, but the number of processors {len(processor)} does not match the" + f" number of attention layers: {count}. Please make sure to pass {count} processor classes." + ) + + def fn_recursive_attn_processor(name: str, module: torch.nn.Module, processor): + if hasattr(module, "set_processor"): + if not isinstance(processor, dict): + module.set_processor(processor) + else: + module.set_processor(processor.pop(f"{name}.processor")) + + for sub_name, child in module.named_children(): + fn_recursive_attn_processor(f"{name}.{sub_name}", child, processor) + + for name, module in self.named_children(): + fn_recursive_attn_processor(name, module, processor) + + # Copied from diffusers.models.unets.unet_2d_condition.UNet2DConditionModel.set_default_attn_processor + def set_default_attn_processor(self): + """ + Disables custom attention processors and sets the default attention implementation. + """ + if all(proc.__class__ in ADDED_KV_ATTENTION_PROCESSORS for proc in self.attn_processors.values()): + processor = AttnAddedKVProcessor() + elif all(proc.__class__ in CROSS_ATTENTION_PROCESSORS for proc in self.attn_processors.values()): + processor = AttnProcessor() + else: + raise ValueError( + f"Cannot call `set_default_attn_processor` when attention processors are of type {next(iter(self.attn_processors.values()))}" + ) + + self.set_attn_processor(processor) + + @apply_forward_hook + def encode( + self, x: torch.Tensor, return_dict: bool = True + ) -> Union[ConsistencyDecoderVAEOutput, Tuple[DiagonalGaussianDistribution]]: + """ + Encode a batch of images into latents. + + Args: + x (`torch.Tensor`): Input batch of images. + return_dict (`bool`, *optional*, defaults to `True`): + Whether to return a [`~models.autoencoders.consistency_decoder_vae.ConsistencyDecoderVAEOutput`] + instead of a plain tuple. + + Returns: + The latent representations of the encoded images. If `return_dict` is True, a + [`~models.autoencoders.consistency_decoder_vae.ConsistencyDecoderVAEOutput`] is returned, otherwise a + plain `tuple` is returned. + """ + if self.use_tiling and (x.shape[-1] > self.tile_sample_min_size or x.shape[-2] > self.tile_sample_min_size): + return self.tiled_encode(x, return_dict=return_dict) + + if self.use_slicing and x.shape[0] > 1: + encoded_slices = [self.encoder(x_slice) for x_slice in x.split(1)] + h = torch.cat(encoded_slices) + else: + h = self.encoder(x) + + moments = self.quant_conv(h) + posterior = DiagonalGaussianDistribution(moments) + + if not return_dict: + return (posterior,) + + return ConsistencyDecoderVAEOutput(latent_dist=posterior) + + @apply_forward_hook + def decode( + self, + z: torch.Tensor, + generator: Optional[torch.Generator] = None, + return_dict: bool = True, + num_inference_steps: int = 2, + ) -> Union[DecoderOutput, Tuple[torch.Tensor]]: + """ + Decodes the input latent vector `z` using the consistency decoder VAE model. + + Args: + z (torch.Tensor): The input latent vector. + generator (Optional[torch.Generator]): The random number generator. Default is None. + return_dict (bool): Whether to return the output as a dictionary. Default is True. + num_inference_steps (int): The number of inference steps. Default is 2. + + Returns: + Union[DecoderOutput, Tuple[torch.Tensor]]: The decoded output. + + """ + z = (z * self.config.scaling_factor - self.means) / self.stds + + scale_factor = 2 ** (len(self.config.block_out_channels) - 1) + z = F.interpolate(z, mode="nearest", scale_factor=scale_factor) + + batch_size, _, height, width = z.shape + + self.decoder_scheduler.set_timesteps(num_inference_steps, device=self.device) + + x_t = self.decoder_scheduler.init_noise_sigma * randn_tensor( + (batch_size, 3, height, width), generator=generator, dtype=z.dtype, device=z.device + ) + + for t in self.decoder_scheduler.timesteps: + model_input = torch.concat([self.decoder_scheduler.scale_model_input(x_t, t), z], dim=1) + model_output = self.decoder_unet(model_input, t).sample[:, :3, :, :] + prev_sample = self.decoder_scheduler.step(model_output, t, x_t, generator).prev_sample + x_t = prev_sample + + x_0 = x_t + + if not return_dict: + return (x_0,) + + return DecoderOutput(sample=x_0) + + # Copied from diffusers.models.autoencoders.autoencoder_kl.AutoencoderKL.blend_v + def blend_v(self, a: torch.Tensor, b: torch.Tensor, blend_extent: int) -> torch.Tensor: + blend_extent = min(a.shape[2], b.shape[2], blend_extent) + for y in range(blend_extent): + b[:, :, y, :] = a[:, :, -blend_extent + y, :] * (1 - y / blend_extent) + b[:, :, y, :] * (y / blend_extent) + return b + + # Copied from diffusers.models.autoencoders.autoencoder_kl.AutoencoderKL.blend_h + def blend_h(self, a: torch.Tensor, b: torch.Tensor, blend_extent: int) -> torch.Tensor: + blend_extent = min(a.shape[3], b.shape[3], blend_extent) + for x in range(blend_extent): + b[:, :, :, x] = a[:, :, :, -blend_extent + x] * (1 - x / blend_extent) + b[:, :, :, x] * (x / blend_extent) + return b + + def tiled_encode(self, x: torch.Tensor, return_dict: bool = True) -> Union[ConsistencyDecoderVAEOutput, Tuple]: + r"""Encode a batch of images using a tiled encoder. + + When this option is enabled, the VAE will split the input tensor into tiles to compute encoding in several + steps. This is useful to keep memory use constant regardless of image size. The end result of tiled encoding is + different from non-tiled encoding because each tile uses a different encoder. To avoid tiling artifacts, the + tiles overlap and are blended together to form a smooth output. You may still see tile-sized changes in the + output, but they should be much less noticeable. + + Args: + x (`torch.Tensor`): Input batch of images. + return_dict (`bool`, *optional*, defaults to `True`): + Whether or not to return a [`~models.autoencoders.consistency_decoder_vae.ConsistencyDecoderVAEOutput`] + instead of a plain tuple. + + Returns: + [`~models.autoencoders.consistency_decoder_vae.ConsistencyDecoderVAEOutput`] or `tuple`: + If return_dict is True, a [`~models.autoencoders.consistency_decoder_vae.ConsistencyDecoderVAEOutput`] + is returned, otherwise a plain `tuple` is returned. + """ + overlap_size = int(self.tile_sample_min_size * (1 - self.tile_overlap_factor)) + blend_extent = int(self.tile_latent_min_size * self.tile_overlap_factor) + row_limit = self.tile_latent_min_size - blend_extent + + # Split the image into 512x512 tiles and encode them separately. + rows = [] + for i in range(0, x.shape[2], overlap_size): + row = [] + for j in range(0, x.shape[3], overlap_size): + tile = x[:, :, i : i + self.tile_sample_min_size, j : j + self.tile_sample_min_size] + tile = self.encoder(tile) + tile = self.quant_conv(tile) + row.append(tile) + rows.append(row) + result_rows = [] + for i, row in enumerate(rows): + result_row = [] + for j, tile in enumerate(row): + # blend the above tile and the left tile + # to the current tile and add the current tile to the result row + if i > 0: + tile = self.blend_v(rows[i - 1][j], tile, blend_extent) + if j > 0: + tile = self.blend_h(row[j - 1], tile, blend_extent) + result_row.append(tile[:, :, :row_limit, :row_limit]) + result_rows.append(torch.cat(result_row, dim=3)) + + moments = torch.cat(result_rows, dim=2) + posterior = DiagonalGaussianDistribution(moments) + + if not return_dict: + return (posterior,) + + return ConsistencyDecoderVAEOutput(latent_dist=posterior) + + def forward( + self, + sample: torch.Tensor, + sample_posterior: bool = False, + return_dict: bool = True, + generator: Optional[torch.Generator] = None, + ) -> Union[DecoderOutput, Tuple[torch.Tensor]]: + r""" + Args: + sample (`torch.Tensor`): Input sample. + sample_posterior (`bool`, *optional*, defaults to `False`): + Whether to sample from the posterior. + return_dict (`bool`, *optional*, defaults to `True`): + Whether or not to return a [`DecoderOutput`] instead of a plain tuple. + generator (`torch.Generator`, *optional*, defaults to `None`): + Generator to use for sampling. + + Returns: + [`DecoderOutput`] or `tuple`: + If return_dict is True, a [`DecoderOutput`] is returned, otherwise a plain `tuple` is returned. + """ + x = sample + posterior = self.encode(x).latent_dist + if sample_posterior: + z = posterior.sample(generator=generator) + else: + z = posterior.mode() + dec = self.decode(z, generator=generator).sample + + if not return_dict: + return (dec,) + + return DecoderOutput(sample=dec) diff --git a/venv/lib/python3.11/site-packages/diffusers/models/autoencoders/vae.py b/venv/lib/python3.11/site-packages/diffusers/models/autoencoders/vae.py new file mode 100644 index 0000000000000000000000000000000000000000..7fc7d5a4d7971a9919d17b3c5b6f3e4e4561e355 --- /dev/null +++ b/venv/lib/python3.11/site-packages/diffusers/models/autoencoders/vae.py @@ -0,0 +1,995 @@ +# Copyright 2024 The HuggingFace Team. All rights reserved. +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. +from dataclasses import dataclass +from typing import Optional, Tuple + +import numpy as np +import torch +import torch.nn as nn + +from ...utils import BaseOutput, is_torch_version +from ...utils.torch_utils import randn_tensor +from ..activations import get_activation +from ..attention_processor import SpatialNorm +from ..unets.unet_2d_blocks import ( + AutoencoderTinyBlock, + UNetMidBlock2D, + get_down_block, + get_up_block, +) + + +@dataclass +class EncoderOutput(BaseOutput): + r""" + Output of encoding method. + + Args: + latent (`torch.Tensor` of shape `(batch_size, num_channels, latent_height, latent_width)`): + The encoded latent. + """ + + latent: torch.Tensor + + +@dataclass +class DecoderOutput(BaseOutput): + r""" + Output of decoding method. + + Args: + sample (`torch.Tensor` of shape `(batch_size, num_channels, height, width)`): + The decoded output sample from the last layer of the model. + """ + + sample: torch.Tensor + commit_loss: Optional[torch.FloatTensor] = None + + +class Encoder(nn.Module): + r""" + The `Encoder` layer of a variational autoencoder that encodes its input into a latent representation. + + Args: + in_channels (`int`, *optional*, defaults to 3): + The number of input channels. + out_channels (`int`, *optional*, defaults to 3): + The number of output channels. + down_block_types (`Tuple[str, ...]`, *optional*, defaults to `("DownEncoderBlock2D",)`): + The types of down blocks to use. See `~diffusers.models.unet_2d_blocks.get_down_block` for available + options. + block_out_channels (`Tuple[int, ...]`, *optional*, defaults to `(64,)`): + The number of output channels for each block. + layers_per_block (`int`, *optional*, defaults to 2): + The number of layers per block. + norm_num_groups (`int`, *optional*, defaults to 32): + The number of groups for normalization. + act_fn (`str`, *optional*, defaults to `"silu"`): + The activation function to use. See `~diffusers.models.activations.get_activation` for available options. + double_z (`bool`, *optional*, defaults to `True`): + Whether to double the number of output channels for the last block. + """ + + def __init__( + self, + in_channels: int = 3, + out_channels: int = 3, + down_block_types: Tuple[str, ...] = ("DownEncoderBlock2D",), + block_out_channels: Tuple[int, ...] = (64,), + layers_per_block: int = 2, + norm_num_groups: int = 32, + act_fn: str = "silu", + double_z: bool = True, + mid_block_add_attention=True, + ): + super().__init__() + self.layers_per_block = layers_per_block + + self.conv_in = nn.Conv2d( + in_channels, + block_out_channels[0], + kernel_size=3, + stride=1, + padding=1, + ) + + self.down_blocks = nn.ModuleList([]) + + # down + output_channel = block_out_channels[0] + for i, down_block_type in enumerate(down_block_types): + input_channel = output_channel + output_channel = block_out_channels[i] + is_final_block = i == len(block_out_channels) - 1 + + down_block = get_down_block( + down_block_type, + num_layers=self.layers_per_block, + in_channels=input_channel, + out_channels=output_channel, + add_downsample=not is_final_block, + resnet_eps=1e-6, + downsample_padding=0, + resnet_act_fn=act_fn, + resnet_groups=norm_num_groups, + attention_head_dim=output_channel, + temb_channels=None, + ) + self.down_blocks.append(down_block) + + # mid + self.mid_block = UNetMidBlock2D( + in_channels=block_out_channels[-1], + resnet_eps=1e-6, + resnet_act_fn=act_fn, + output_scale_factor=1, + resnet_time_scale_shift="default", + attention_head_dim=block_out_channels[-1], + resnet_groups=norm_num_groups, + temb_channels=None, + add_attention=mid_block_add_attention, + ) + + # out + self.conv_norm_out = nn.GroupNorm(num_channels=block_out_channels[-1], num_groups=norm_num_groups, eps=1e-6) + self.conv_act = nn.SiLU() + + conv_out_channels = 2 * out_channels if double_z else out_channels + self.conv_out = nn.Conv2d(block_out_channels[-1], conv_out_channels, 3, padding=1) + + self.gradient_checkpointing = False + + def forward(self, sample: torch.Tensor) -> torch.Tensor: + r"""The forward method of the `Encoder` class.""" + + sample = self.conv_in(sample) + + if torch.is_grad_enabled() and self.gradient_checkpointing: + + def create_custom_forward(module): + def custom_forward(*inputs): + return module(*inputs) + + return custom_forward + + # down + if is_torch_version(">=", "1.11.0"): + for down_block in self.down_blocks: + sample = torch.utils.checkpoint.checkpoint( + create_custom_forward(down_block), sample, use_reentrant=False + ) + # middle + sample = torch.utils.checkpoint.checkpoint( + create_custom_forward(self.mid_block), sample, use_reentrant=False + ) + else: + for down_block in self.down_blocks: + sample = torch.utils.checkpoint.checkpoint(create_custom_forward(down_block), sample) + # middle + sample = torch.utils.checkpoint.checkpoint(create_custom_forward(self.mid_block), sample) + + else: + # down + for down_block in self.down_blocks: + sample = down_block(sample) + + # middle + sample = self.mid_block(sample) + + # post-process + sample = self.conv_norm_out(sample) + sample = self.conv_act(sample) + sample = self.conv_out(sample) + + return sample + + +class Decoder(nn.Module): + r""" + The `Decoder` layer of a variational autoencoder that decodes its latent representation into an output sample. + + Args: + in_channels (`int`, *optional*, defaults to 3): + The number of input channels. + out_channels (`int`, *optional*, defaults to 3): + The number of output channels. + up_block_types (`Tuple[str, ...]`, *optional*, defaults to `("UpDecoderBlock2D",)`): + The types of up blocks to use. See `~diffusers.models.unet_2d_blocks.get_up_block` for available options. + block_out_channels (`Tuple[int, ...]`, *optional*, defaults to `(64,)`): + The number of output channels for each block. + layers_per_block (`int`, *optional*, defaults to 2): + The number of layers per block. + norm_num_groups (`int`, *optional*, defaults to 32): + The number of groups for normalization. + act_fn (`str`, *optional*, defaults to `"silu"`): + The activation function to use. See `~diffusers.models.activations.get_activation` for available options. + norm_type (`str`, *optional*, defaults to `"group"`): + The normalization type to use. Can be either `"group"` or `"spatial"`. + """ + + def __init__( + self, + in_channels: int = 3, + out_channels: int = 3, + up_block_types: Tuple[str, ...] = ("UpDecoderBlock2D",), + block_out_channels: Tuple[int, ...] = (64,), + layers_per_block: int = 2, + norm_num_groups: int = 32, + act_fn: str = "silu", + norm_type: str = "group", # group, spatial + mid_block_add_attention=True, + ): + super().__init__() + self.layers_per_block = layers_per_block + + self.conv_in = nn.Conv2d( + in_channels, + block_out_channels[-1], + kernel_size=3, + stride=1, + padding=1, + ) + + self.up_blocks = nn.ModuleList([]) + + temb_channels = in_channels if norm_type == "spatial" else None + + # mid + self.mid_block = UNetMidBlock2D( + in_channels=block_out_channels[-1], + resnet_eps=1e-6, + resnet_act_fn=act_fn, + output_scale_factor=1, + resnet_time_scale_shift="default" if norm_type == "group" else norm_type, + attention_head_dim=block_out_channels[-1], + resnet_groups=norm_num_groups, + temb_channels=temb_channels, + add_attention=mid_block_add_attention, + ) + + # up + reversed_block_out_channels = list(reversed(block_out_channels)) + output_channel = reversed_block_out_channels[0] + for i, up_block_type in enumerate(up_block_types): + prev_output_channel = output_channel + output_channel = reversed_block_out_channels[i] + + is_final_block = i == len(block_out_channels) - 1 + + up_block = get_up_block( + up_block_type, + num_layers=self.layers_per_block + 1, + in_channels=prev_output_channel, + out_channels=output_channel, + prev_output_channel=None, + add_upsample=not is_final_block, + resnet_eps=1e-6, + resnet_act_fn=act_fn, + resnet_groups=norm_num_groups, + attention_head_dim=output_channel, + temb_channels=temb_channels, + resnet_time_scale_shift=norm_type, + ) + self.up_blocks.append(up_block) + prev_output_channel = output_channel + + # out + if norm_type == "spatial": + self.conv_norm_out = SpatialNorm(block_out_channels[0], temb_channels) + else: + self.conv_norm_out = nn.GroupNorm(num_channels=block_out_channels[0], num_groups=norm_num_groups, eps=1e-6) + self.conv_act = nn.SiLU() + self.conv_out = nn.Conv2d(block_out_channels[0], out_channels, 3, padding=1) + + self.gradient_checkpointing = False + + def forward( + self, + sample: torch.Tensor, + latent_embeds: Optional[torch.Tensor] = None, + ) -> torch.Tensor: + r"""The forward method of the `Decoder` class.""" + + sample = self.conv_in(sample) + + upscale_dtype = next(iter(self.up_blocks.parameters())).dtype + if torch.is_grad_enabled() and self.gradient_checkpointing: + + def create_custom_forward(module): + def custom_forward(*inputs): + return module(*inputs) + + return custom_forward + + if is_torch_version(">=", "1.11.0"): + # middle + sample = torch.utils.checkpoint.checkpoint( + create_custom_forward(self.mid_block), + sample, + latent_embeds, + use_reentrant=False, + ) + sample = sample.to(upscale_dtype) + + # up + for up_block in self.up_blocks: + sample = torch.utils.checkpoint.checkpoint( + create_custom_forward(up_block), + sample, + latent_embeds, + use_reentrant=False, + ) + else: + # middle + sample = torch.utils.checkpoint.checkpoint( + create_custom_forward(self.mid_block), sample, latent_embeds + ) + sample = sample.to(upscale_dtype) + + # up + for up_block in self.up_blocks: + sample = torch.utils.checkpoint.checkpoint(create_custom_forward(up_block), sample, latent_embeds) + else: + # middle + sample = self.mid_block(sample, latent_embeds) + sample = sample.to(upscale_dtype) + + # up + for up_block in self.up_blocks: + sample = up_block(sample, latent_embeds) + + # post-process + if latent_embeds is None: + sample = self.conv_norm_out(sample) + else: + sample = self.conv_norm_out(sample, latent_embeds) + sample = self.conv_act(sample) + sample = self.conv_out(sample) + + return sample + + +class UpSample(nn.Module): + r""" + The `UpSample` layer of a variational autoencoder that upsamples its input. + + Args: + in_channels (`int`, *optional*, defaults to 3): + The number of input channels. + out_channels (`int`, *optional*, defaults to 3): + The number of output channels. + """ + + def __init__( + self, + in_channels: int, + out_channels: int, + ) -> None: + super().__init__() + self.in_channels = in_channels + self.out_channels = out_channels + self.deconv = nn.ConvTranspose2d(in_channels, out_channels, kernel_size=4, stride=2, padding=1) + + def forward(self, x: torch.Tensor) -> torch.Tensor: + r"""The forward method of the `UpSample` class.""" + x = torch.relu(x) + x = self.deconv(x) + return x + + +class MaskConditionEncoder(nn.Module): + """ + used in AsymmetricAutoencoderKL + """ + + def __init__( + self, + in_ch: int, + out_ch: int = 192, + res_ch: int = 768, + stride: int = 16, + ) -> None: + super().__init__() + + channels = [] + while stride > 1: + stride = stride // 2 + in_ch_ = out_ch * 2 + if out_ch > res_ch: + out_ch = res_ch + if stride == 1: + in_ch_ = res_ch + channels.append((in_ch_, out_ch)) + out_ch *= 2 + + out_channels = [] + for _in_ch, _out_ch in channels: + out_channels.append(_out_ch) + out_channels.append(channels[-1][0]) + + layers = [] + in_ch_ = in_ch + for l in range(len(out_channels)): + out_ch_ = out_channels[l] + if l == 0 or l == 1: + layers.append(nn.Conv2d(in_ch_, out_ch_, kernel_size=3, stride=1, padding=1)) + else: + layers.append(nn.Conv2d(in_ch_, out_ch_, kernel_size=4, stride=2, padding=1)) + in_ch_ = out_ch_ + + self.layers = nn.Sequential(*layers) + + def forward(self, x: torch.Tensor, mask=None) -> torch.Tensor: + r"""The forward method of the `MaskConditionEncoder` class.""" + out = {} + for l in range(len(self.layers)): + layer = self.layers[l] + x = layer(x) + out[str(tuple(x.shape))] = x + x = torch.relu(x) + return out + + +class MaskConditionDecoder(nn.Module): + r"""The `MaskConditionDecoder` should be used in combination with [`AsymmetricAutoencoderKL`] to enhance the model's + decoder with a conditioner on the mask and masked image. + + Args: + in_channels (`int`, *optional*, defaults to 3): + The number of input channels. + out_channels (`int`, *optional*, defaults to 3): + The number of output channels. + up_block_types (`Tuple[str, ...]`, *optional*, defaults to `("UpDecoderBlock2D",)`): + The types of up blocks to use. See `~diffusers.models.unet_2d_blocks.get_up_block` for available options. + block_out_channels (`Tuple[int, ...]`, *optional*, defaults to `(64,)`): + The number of output channels for each block. + layers_per_block (`int`, *optional*, defaults to 2): + The number of layers per block. + norm_num_groups (`int`, *optional*, defaults to 32): + The number of groups for normalization. + act_fn (`str`, *optional*, defaults to `"silu"`): + The activation function to use. See `~diffusers.models.activations.get_activation` for available options. + norm_type (`str`, *optional*, defaults to `"group"`): + The normalization type to use. Can be either `"group"` or `"spatial"`. + """ + + def __init__( + self, + in_channels: int = 3, + out_channels: int = 3, + up_block_types: Tuple[str, ...] = ("UpDecoderBlock2D",), + block_out_channels: Tuple[int, ...] = (64,), + layers_per_block: int = 2, + norm_num_groups: int = 32, + act_fn: str = "silu", + norm_type: str = "group", # group, spatial + ): + super().__init__() + self.layers_per_block = layers_per_block + + self.conv_in = nn.Conv2d( + in_channels, + block_out_channels[-1], + kernel_size=3, + stride=1, + padding=1, + ) + + self.up_blocks = nn.ModuleList([]) + + temb_channels = in_channels if norm_type == "spatial" else None + + # mid + self.mid_block = UNetMidBlock2D( + in_channels=block_out_channels[-1], + resnet_eps=1e-6, + resnet_act_fn=act_fn, + output_scale_factor=1, + resnet_time_scale_shift="default" if norm_type == "group" else norm_type, + attention_head_dim=block_out_channels[-1], + resnet_groups=norm_num_groups, + temb_channels=temb_channels, + ) + + # up + reversed_block_out_channels = list(reversed(block_out_channels)) + output_channel = reversed_block_out_channels[0] + for i, up_block_type in enumerate(up_block_types): + prev_output_channel = output_channel + output_channel = reversed_block_out_channels[i] + + is_final_block = i == len(block_out_channels) - 1 + + up_block = get_up_block( + up_block_type, + num_layers=self.layers_per_block + 1, + in_channels=prev_output_channel, + out_channels=output_channel, + prev_output_channel=None, + add_upsample=not is_final_block, + resnet_eps=1e-6, + resnet_act_fn=act_fn, + resnet_groups=norm_num_groups, + attention_head_dim=output_channel, + temb_channels=temb_channels, + resnet_time_scale_shift=norm_type, + ) + self.up_blocks.append(up_block) + prev_output_channel = output_channel + + # condition encoder + self.condition_encoder = MaskConditionEncoder( + in_ch=out_channels, + out_ch=block_out_channels[0], + res_ch=block_out_channels[-1], + ) + + # out + if norm_type == "spatial": + self.conv_norm_out = SpatialNorm(block_out_channels[0], temb_channels) + else: + self.conv_norm_out = nn.GroupNorm(num_channels=block_out_channels[0], num_groups=norm_num_groups, eps=1e-6) + self.conv_act = nn.SiLU() + self.conv_out = nn.Conv2d(block_out_channels[0], out_channels, 3, padding=1) + + self.gradient_checkpointing = False + + def forward( + self, + z: torch.Tensor, + image: Optional[torch.Tensor] = None, + mask: Optional[torch.Tensor] = None, + latent_embeds: Optional[torch.Tensor] = None, + ) -> torch.Tensor: + r"""The forward method of the `MaskConditionDecoder` class.""" + sample = z + sample = self.conv_in(sample) + + upscale_dtype = next(iter(self.up_blocks.parameters())).dtype + if torch.is_grad_enabled() and self.gradient_checkpointing: + + def create_custom_forward(module): + def custom_forward(*inputs): + return module(*inputs) + + return custom_forward + + if is_torch_version(">=", "1.11.0"): + # middle + sample = torch.utils.checkpoint.checkpoint( + create_custom_forward(self.mid_block), + sample, + latent_embeds, + use_reentrant=False, + ) + sample = sample.to(upscale_dtype) + + # condition encoder + if image is not None and mask is not None: + masked_image = (1 - mask) * image + im_x = torch.utils.checkpoint.checkpoint( + create_custom_forward(self.condition_encoder), + masked_image, + mask, + use_reentrant=False, + ) + + # up + for up_block in self.up_blocks: + if image is not None and mask is not None: + sample_ = im_x[str(tuple(sample.shape))] + mask_ = nn.functional.interpolate(mask, size=sample.shape[-2:], mode="nearest") + sample = sample * mask_ + sample_ * (1 - mask_) + sample = torch.utils.checkpoint.checkpoint( + create_custom_forward(up_block), + sample, + latent_embeds, + use_reentrant=False, + ) + if image is not None and mask is not None: + sample = sample * mask + im_x[str(tuple(sample.shape))] * (1 - mask) + else: + # middle + sample = torch.utils.checkpoint.checkpoint( + create_custom_forward(self.mid_block), sample, latent_embeds + ) + sample = sample.to(upscale_dtype) + + # condition encoder + if image is not None and mask is not None: + masked_image = (1 - mask) * image + im_x = torch.utils.checkpoint.checkpoint( + create_custom_forward(self.condition_encoder), + masked_image, + mask, + ) + + # up + for up_block in self.up_blocks: + if image is not None and mask is not None: + sample_ = im_x[str(tuple(sample.shape))] + mask_ = nn.functional.interpolate(mask, size=sample.shape[-2:], mode="nearest") + sample = sample * mask_ + sample_ * (1 - mask_) + sample = torch.utils.checkpoint.checkpoint(create_custom_forward(up_block), sample, latent_embeds) + if image is not None and mask is not None: + sample = sample * mask + im_x[str(tuple(sample.shape))] * (1 - mask) + else: + # middle + sample = self.mid_block(sample, latent_embeds) + sample = sample.to(upscale_dtype) + + # condition encoder + if image is not None and mask is not None: + masked_image = (1 - mask) * image + im_x = self.condition_encoder(masked_image, mask) + + # up + for up_block in self.up_blocks: + if image is not None and mask is not None: + sample_ = im_x[str(tuple(sample.shape))] + mask_ = nn.functional.interpolate(mask, size=sample.shape[-2:], mode="nearest") + sample = sample * mask_ + sample_ * (1 - mask_) + sample = up_block(sample, latent_embeds) + if image is not None and mask is not None: + sample = sample * mask + im_x[str(tuple(sample.shape))] * (1 - mask) + + # post-process + if latent_embeds is None: + sample = self.conv_norm_out(sample) + else: + sample = self.conv_norm_out(sample, latent_embeds) + sample = self.conv_act(sample) + sample = self.conv_out(sample) + + return sample + + +class VectorQuantizer(nn.Module): + """ + Improved version over VectorQuantizer, can be used as a drop-in replacement. Mostly avoids costly matrix + multiplications and allows for post-hoc remapping of indices. + """ + + # NOTE: due to a bug the beta term was applied to the wrong term. for + # backwards compatibility we use the buggy version by default, but you can + # specify legacy=False to fix it. + def __init__( + self, + n_e: int, + vq_embed_dim: int, + beta: float, + remap=None, + unknown_index: str = "random", + sane_index_shape: bool = False, + legacy: bool = True, + ): + super().__init__() + self.n_e = n_e + self.vq_embed_dim = vq_embed_dim + self.beta = beta + self.legacy = legacy + + self.embedding = nn.Embedding(self.n_e, self.vq_embed_dim) + self.embedding.weight.data.uniform_(-1.0 / self.n_e, 1.0 / self.n_e) + + self.remap = remap + if self.remap is not None: + self.register_buffer("used", torch.tensor(np.load(self.remap))) + self.used: torch.Tensor + self.re_embed = self.used.shape[0] + self.unknown_index = unknown_index # "random" or "extra" or integer + if self.unknown_index == "extra": + self.unknown_index = self.re_embed + self.re_embed = self.re_embed + 1 + print( + f"Remapping {self.n_e} indices to {self.re_embed} indices. " + f"Using {self.unknown_index} for unknown indices." + ) + else: + self.re_embed = n_e + + self.sane_index_shape = sane_index_shape + + def remap_to_used(self, inds: torch.LongTensor) -> torch.LongTensor: + ishape = inds.shape + assert len(ishape) > 1 + inds = inds.reshape(ishape[0], -1) + used = self.used.to(inds) + match = (inds[:, :, None] == used[None, None, ...]).long() + new = match.argmax(-1) + unknown = match.sum(2) < 1 + if self.unknown_index == "random": + new[unknown] = torch.randint(0, self.re_embed, size=new[unknown].shape).to(device=new.device) + else: + new[unknown] = self.unknown_index + return new.reshape(ishape) + + def unmap_to_all(self, inds: torch.LongTensor) -> torch.LongTensor: + ishape = inds.shape + assert len(ishape) > 1 + inds = inds.reshape(ishape[0], -1) + used = self.used.to(inds) + if self.re_embed > self.used.shape[0]: # extra token + inds[inds >= self.used.shape[0]] = 0 # simply set to zero + back = torch.gather(used[None, :][inds.shape[0] * [0], :], 1, inds) + return back.reshape(ishape) + + def forward(self, z: torch.Tensor) -> Tuple[torch.Tensor, torch.Tensor, Tuple]: + # reshape z -> (batch, height, width, channel) and flatten + z = z.permute(0, 2, 3, 1).contiguous() + z_flattened = z.view(-1, self.vq_embed_dim) + + # distances from z to embeddings e_j (z - e)^2 = z^2 + e^2 - 2 e * z + min_encoding_indices = torch.argmin(torch.cdist(z_flattened, self.embedding.weight), dim=1) + + z_q = self.embedding(min_encoding_indices).view(z.shape) + perplexity = None + min_encodings = None + + # compute loss for embedding + if not self.legacy: + loss = self.beta * torch.mean((z_q.detach() - z) ** 2) + torch.mean((z_q - z.detach()) ** 2) + else: + loss = torch.mean((z_q.detach() - z) ** 2) + self.beta * torch.mean((z_q - z.detach()) ** 2) + + # preserve gradients + z_q: torch.Tensor = z + (z_q - z).detach() + + # reshape back to match original input shape + z_q = z_q.permute(0, 3, 1, 2).contiguous() + + if self.remap is not None: + min_encoding_indices = min_encoding_indices.reshape(z.shape[0], -1) # add batch axis + min_encoding_indices = self.remap_to_used(min_encoding_indices) + min_encoding_indices = min_encoding_indices.reshape(-1, 1) # flatten + + if self.sane_index_shape: + min_encoding_indices = min_encoding_indices.reshape(z_q.shape[0], z_q.shape[2], z_q.shape[3]) + + return z_q, loss, (perplexity, min_encodings, min_encoding_indices) + + def get_codebook_entry(self, indices: torch.LongTensor, shape: Tuple[int, ...]) -> torch.Tensor: + # shape specifying (batch, height, width, channel) + if self.remap is not None: + indices = indices.reshape(shape[0], -1) # add batch axis + indices = self.unmap_to_all(indices) + indices = indices.reshape(-1) # flatten again + + # get quantized latent vectors + z_q: torch.Tensor = self.embedding(indices) + + if shape is not None: + z_q = z_q.view(shape) + # reshape back to match original input shape + z_q = z_q.permute(0, 3, 1, 2).contiguous() + + return z_q + + +class DiagonalGaussianDistribution(object): + def __init__(self, parameters: torch.Tensor, deterministic: bool = False): + self.parameters = parameters + self.mean, self.logvar = torch.chunk(parameters, 2, dim=1) + self.logvar = torch.clamp(self.logvar, -30.0, 20.0) + self.deterministic = deterministic + self.std = torch.exp(0.5 * self.logvar) + self.var = torch.exp(self.logvar) + if self.deterministic: + self.var = self.std = torch.zeros_like( + self.mean, device=self.parameters.device, dtype=self.parameters.dtype + ) + + def sample(self, generator: Optional[torch.Generator] = None) -> torch.Tensor: + # make sure sample is on the same device as the parameters and has same dtype + sample = randn_tensor( + self.mean.shape, + generator=generator, + device=self.parameters.device, + dtype=self.parameters.dtype, + ) + x = self.mean + self.std * sample + return x + + def kl(self, other: "DiagonalGaussianDistribution" = None) -> torch.Tensor: + if self.deterministic: + return torch.Tensor([0.0]) + else: + if other is None: + return 0.5 * torch.sum( + torch.pow(self.mean, 2) + self.var - 1.0 - self.logvar, + dim=[1, 2, 3], + ) + else: + return 0.5 * torch.sum( + torch.pow(self.mean - other.mean, 2) / other.var + + self.var / other.var + - 1.0 + - self.logvar + + other.logvar, + dim=[1, 2, 3], + ) + + def nll(self, sample: torch.Tensor, dims: Tuple[int, ...] = [1, 2, 3]) -> torch.Tensor: + if self.deterministic: + return torch.Tensor([0.0]) + logtwopi = np.log(2.0 * np.pi) + return 0.5 * torch.sum( + logtwopi + self.logvar + torch.pow(sample - self.mean, 2) / self.var, + dim=dims, + ) + + def mode(self) -> torch.Tensor: + return self.mean + + +class EncoderTiny(nn.Module): + r""" + The `EncoderTiny` layer is a simpler version of the `Encoder` layer. + + Args: + in_channels (`int`): + The number of input channels. + out_channels (`int`): + The number of output channels. + num_blocks (`Tuple[int, ...]`): + Each value of the tuple represents a Conv2d layer followed by `value` number of `AutoencoderTinyBlock`'s to + use. + block_out_channels (`Tuple[int, ...]`): + The number of output channels for each block. + act_fn (`str`): + The activation function to use. See `~diffusers.models.activations.get_activation` for available options. + """ + + def __init__( + self, + in_channels: int, + out_channels: int, + num_blocks: Tuple[int, ...], + block_out_channels: Tuple[int, ...], + act_fn: str, + ): + super().__init__() + + layers = [] + for i, num_block in enumerate(num_blocks): + num_channels = block_out_channels[i] + + if i == 0: + layers.append(nn.Conv2d(in_channels, num_channels, kernel_size=3, padding=1)) + else: + layers.append( + nn.Conv2d( + num_channels, + num_channels, + kernel_size=3, + padding=1, + stride=2, + bias=False, + ) + ) + + for _ in range(num_block): + layers.append(AutoencoderTinyBlock(num_channels, num_channels, act_fn)) + + layers.append(nn.Conv2d(block_out_channels[-1], out_channels, kernel_size=3, padding=1)) + + self.layers = nn.Sequential(*layers) + self.gradient_checkpointing = False + + def forward(self, x: torch.Tensor) -> torch.Tensor: + r"""The forward method of the `EncoderTiny` class.""" + if torch.is_grad_enabled() and self.gradient_checkpointing: + + def create_custom_forward(module): + def custom_forward(*inputs): + return module(*inputs) + + return custom_forward + + if is_torch_version(">=", "1.11.0"): + x = torch.utils.checkpoint.checkpoint(create_custom_forward(self.layers), x, use_reentrant=False) + else: + x = torch.utils.checkpoint.checkpoint(create_custom_forward(self.layers), x) + + else: + # scale image from [-1, 1] to [0, 1] to match TAESD convention + x = self.layers(x.add(1).div(2)) + + return x + + +class DecoderTiny(nn.Module): + r""" + The `DecoderTiny` layer is a simpler version of the `Decoder` layer. + + Args: + in_channels (`int`): + The number of input channels. + out_channels (`int`): + The number of output channels. + num_blocks (`Tuple[int, ...]`): + Each value of the tuple represents a Conv2d layer followed by `value` number of `AutoencoderTinyBlock`'s to + use. + block_out_channels (`Tuple[int, ...]`): + The number of output channels for each block. + upsampling_scaling_factor (`int`): + The scaling factor to use for upsampling. + act_fn (`str`): + The activation function to use. See `~diffusers.models.activations.get_activation` for available options. + """ + + def __init__( + self, + in_channels: int, + out_channels: int, + num_blocks: Tuple[int, ...], + block_out_channels: Tuple[int, ...], + upsampling_scaling_factor: int, + act_fn: str, + upsample_fn: str, + ): + super().__init__() + + layers = [ + nn.Conv2d(in_channels, block_out_channels[0], kernel_size=3, padding=1), + get_activation(act_fn), + ] + + for i, num_block in enumerate(num_blocks): + is_final_block = i == (len(num_blocks) - 1) + num_channels = block_out_channels[i] + + for _ in range(num_block): + layers.append(AutoencoderTinyBlock(num_channels, num_channels, act_fn)) + + if not is_final_block: + layers.append(nn.Upsample(scale_factor=upsampling_scaling_factor, mode=upsample_fn)) + + conv_out_channel = num_channels if not is_final_block else out_channels + layers.append( + nn.Conv2d( + num_channels, + conv_out_channel, + kernel_size=3, + padding=1, + bias=is_final_block, + ) + ) + + self.layers = nn.Sequential(*layers) + self.gradient_checkpointing = False + + def forward(self, x: torch.Tensor) -> torch.Tensor: + r"""The forward method of the `DecoderTiny` class.""" + # Clamp. + x = torch.tanh(x / 3) * 3 + + if torch.is_grad_enabled() and self.gradient_checkpointing: + + def create_custom_forward(module): + def custom_forward(*inputs): + return module(*inputs) + + return custom_forward + + if is_torch_version(">=", "1.11.0"): + x = torch.utils.checkpoint.checkpoint(create_custom_forward(self.layers), x, use_reentrant=False) + else: + x = torch.utils.checkpoint.checkpoint(create_custom_forward(self.layers), x) + + else: + x = self.layers(x) + + # scale image from [0, 1] to [-1, 1] to match diffusers convention + return x.mul(2).sub(1) diff --git a/venv/lib/python3.11/site-packages/diffusers/models/autoencoders/vq_model.py b/venv/lib/python3.11/site-packages/diffusers/models/autoencoders/vq_model.py new file mode 100644 index 0000000000000000000000000000000000000000..ae8a118d719a5c46f19e31cc5b65fd5e215a90d0 --- /dev/null +++ b/venv/lib/python3.11/site-packages/diffusers/models/autoencoders/vq_model.py @@ -0,0 +1,182 @@ +# Copyright 2024 The HuggingFace Team. All rights reserved. +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. +from dataclasses import dataclass +from typing import Optional, Tuple, Union + +import torch +import torch.nn as nn + +from ...configuration_utils import ConfigMixin, register_to_config +from ...utils import BaseOutput +from ...utils.accelerate_utils import apply_forward_hook +from ..autoencoders.vae import Decoder, DecoderOutput, Encoder, VectorQuantizer +from ..modeling_utils import ModelMixin + + +@dataclass +class VQEncoderOutput(BaseOutput): + """ + Output of VQModel encoding method. + + Args: + latents (`torch.Tensor` of shape `(batch_size, num_channels, height, width)`): + The encoded output sample from the last layer of the model. + """ + + latents: torch.Tensor + + +class VQModel(ModelMixin, ConfigMixin): + r""" + A VQ-VAE model for decoding latent representations. + + This model inherits from [`ModelMixin`]. Check the superclass documentation for it's generic methods implemented + for all models (such as downloading or saving). + + Parameters: + in_channels (int, *optional*, defaults to 3): Number of channels in the input image. + out_channels (int, *optional*, defaults to 3): Number of channels in the output. + down_block_types (`Tuple[str]`, *optional*, defaults to `("DownEncoderBlock2D",)`): + Tuple of downsample block types. + up_block_types (`Tuple[str]`, *optional*, defaults to `("UpDecoderBlock2D",)`): + Tuple of upsample block types. + block_out_channels (`Tuple[int]`, *optional*, defaults to `(64,)`): + Tuple of block output channels. + layers_per_block (`int`, *optional*, defaults to `1`): Number of layers per block. + act_fn (`str`, *optional*, defaults to `"silu"`): The activation function to use. + latent_channels (`int`, *optional*, defaults to `3`): Number of channels in the latent space. + sample_size (`int`, *optional*, defaults to `32`): Sample input size. + num_vq_embeddings (`int`, *optional*, defaults to `256`): Number of codebook vectors in the VQ-VAE. + norm_num_groups (`int`, *optional*, defaults to `32`): Number of groups for normalization layers. + vq_embed_dim (`int`, *optional*): Hidden dim of codebook vectors in the VQ-VAE. + scaling_factor (`float`, *optional*, defaults to `0.18215`): + The component-wise standard deviation of the trained latent space computed using the first batch of the + training set. This is used to scale the latent space to have unit variance when training the diffusion + model. The latents are scaled with the formula `z = z * scaling_factor` before being passed to the + diffusion model. When decoding, the latents are scaled back to the original scale with the formula: `z = 1 + / scaling_factor * z`. For more details, refer to sections 4.3.2 and D.1 of the [High-Resolution Image + Synthesis with Latent Diffusion Models](https://arxiv.org/abs/2112.10752) paper. + norm_type (`str`, *optional*, defaults to `"group"`): + Type of normalization layer to use. Can be one of `"group"` or `"spatial"`. + """ + + @register_to_config + def __init__( + self, + in_channels: int = 3, + out_channels: int = 3, + down_block_types: Tuple[str, ...] = ("DownEncoderBlock2D",), + up_block_types: Tuple[str, ...] = ("UpDecoderBlock2D",), + block_out_channels: Tuple[int, ...] = (64,), + layers_per_block: int = 1, + act_fn: str = "silu", + latent_channels: int = 3, + sample_size: int = 32, + num_vq_embeddings: int = 256, + norm_num_groups: int = 32, + vq_embed_dim: Optional[int] = None, + scaling_factor: float = 0.18215, + norm_type: str = "group", # group, spatial + mid_block_add_attention=True, + lookup_from_codebook=False, + force_upcast=False, + ): + super().__init__() + + # pass init params to Encoder + self.encoder = Encoder( + in_channels=in_channels, + out_channels=latent_channels, + down_block_types=down_block_types, + block_out_channels=block_out_channels, + layers_per_block=layers_per_block, + act_fn=act_fn, + norm_num_groups=norm_num_groups, + double_z=False, + mid_block_add_attention=mid_block_add_attention, + ) + + vq_embed_dim = vq_embed_dim if vq_embed_dim is not None else latent_channels + + self.quant_conv = nn.Conv2d(latent_channels, vq_embed_dim, 1) + self.quantize = VectorQuantizer(num_vq_embeddings, vq_embed_dim, beta=0.25, remap=None, sane_index_shape=False) + self.post_quant_conv = nn.Conv2d(vq_embed_dim, latent_channels, 1) + + # pass init params to Decoder + self.decoder = Decoder( + in_channels=latent_channels, + out_channels=out_channels, + up_block_types=up_block_types, + block_out_channels=block_out_channels, + layers_per_block=layers_per_block, + act_fn=act_fn, + norm_num_groups=norm_num_groups, + norm_type=norm_type, + mid_block_add_attention=mid_block_add_attention, + ) + + @apply_forward_hook + def encode(self, x: torch.Tensor, return_dict: bool = True) -> VQEncoderOutput: + h = self.encoder(x) + h = self.quant_conv(h) + + if not return_dict: + return (h,) + + return VQEncoderOutput(latents=h) + + @apply_forward_hook + def decode( + self, h: torch.Tensor, force_not_quantize: bool = False, return_dict: bool = True, shape=None + ) -> Union[DecoderOutput, torch.Tensor]: + # also go through quantization layer + if not force_not_quantize: + quant, commit_loss, _ = self.quantize(h) + elif self.config.lookup_from_codebook: + quant = self.quantize.get_codebook_entry(h, shape) + commit_loss = torch.zeros((h.shape[0])).to(h.device, dtype=h.dtype) + else: + quant = h + commit_loss = torch.zeros((h.shape[0])).to(h.device, dtype=h.dtype) + quant2 = self.post_quant_conv(quant) + dec = self.decoder(quant2, quant if self.config.norm_type == "spatial" else None) + + if not return_dict: + return dec, commit_loss + + return DecoderOutput(sample=dec, commit_loss=commit_loss) + + def forward( + self, sample: torch.Tensor, return_dict: bool = True + ) -> Union[DecoderOutput, Tuple[torch.Tensor, ...]]: + r""" + The [`VQModel`] forward method. + + Args: + sample (`torch.Tensor`): Input sample. + return_dict (`bool`, *optional*, defaults to `True`): + Whether or not to return a [`models.autoencoders.vq_model.VQEncoderOutput`] instead of a plain tuple. + + Returns: + [`~models.autoencoders.vq_model.VQEncoderOutput`] or `tuple`: + If return_dict is True, a [`~models.autoencoders.vq_model.VQEncoderOutput`] is returned, otherwise a + plain `tuple` is returned. + """ + + h = self.encode(sample).latents + dec = self.decode(h) + + if not return_dict: + return dec.sample, dec.commit_loss + return dec diff --git a/venv/lib/python3.11/site-packages/diffusers/models/controlnet.py b/venv/lib/python3.11/site-packages/diffusers/models/controlnet.py new file mode 100644 index 0000000000000000000000000000000000000000..b9ebab818be7cf6671d5fe05844b1c232d23dd9a --- /dev/null +++ b/venv/lib/python3.11/site-packages/diffusers/models/controlnet.py @@ -0,0 +1,115 @@ +# Copyright 2024 The HuggingFace Team. All rights reserved. +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. +from typing import Optional, Tuple, Union + +from ..utils import deprecate +from .controlnets.controlnet import ( # noqa + ControlNetConditioningEmbedding, + ControlNetModel, + ControlNetOutput, + zero_module, +) + + +class ControlNetOutput(ControlNetOutput): + def __init__(self, *args, **kwargs): + deprecation_message = "Importing `ControlNetOutput` from `diffusers.models.controlnet` is deprecated and this will be removed in a future version. Please use `from diffusers.models.controlnets.controlnet import ControlNetOutput`, instead." + deprecate("diffusers.models.controlnet.ControlNetOutput", "0.34", deprecation_message) + super().__init__(*args, **kwargs) + + +class ControlNetModel(ControlNetModel): + def __init__( + self, + in_channels: int = 4, + conditioning_channels: int = 3, + flip_sin_to_cos: bool = True, + freq_shift: int = 0, + down_block_types: Tuple[str, ...] = ( + "CrossAttnDownBlock2D", + "CrossAttnDownBlock2D", + "CrossAttnDownBlock2D", + "DownBlock2D", + ), + mid_block_type: Optional[str] = "UNetMidBlock2DCrossAttn", + only_cross_attention: Union[bool, Tuple[bool]] = False, + block_out_channels: Tuple[int, ...] = (320, 640, 1280, 1280), + layers_per_block: int = 2, + downsample_padding: int = 1, + mid_block_scale_factor: float = 1, + act_fn: str = "silu", + norm_num_groups: Optional[int] = 32, + norm_eps: float = 1e-5, + cross_attention_dim: int = 1280, + transformer_layers_per_block: Union[int, Tuple[int, ...]] = 1, + encoder_hid_dim: Optional[int] = None, + encoder_hid_dim_type: Optional[str] = None, + attention_head_dim: Union[int, Tuple[int, ...]] = 8, + num_attention_heads: Optional[Union[int, Tuple[int, ...]]] = None, + use_linear_projection: bool = False, + class_embed_type: Optional[str] = None, + addition_embed_type: Optional[str] = None, + addition_time_embed_dim: Optional[int] = None, + num_class_embeds: Optional[int] = None, + upcast_attention: bool = False, + resnet_time_scale_shift: str = "default", + projection_class_embeddings_input_dim: Optional[int] = None, + controlnet_conditioning_channel_order: str = "rgb", + conditioning_embedding_out_channels: Optional[Tuple[int, ...]] = (16, 32, 96, 256), + global_pool_conditions: bool = False, + addition_embed_type_num_heads: int = 64, + ): + deprecation_message = "Importing `ControlNetModel` from `diffusers.models.controlnet` is deprecated and this will be removed in a future version. Please use `from diffusers.models.controlnets.controlnet import ControlNetModel`, instead." + deprecate("diffusers.models.controlnet.ControlNetModel", "0.34", deprecation_message) + super().__init__( + in_channels=in_channels, + conditioning_channels=conditioning_channels, + flip_sin_to_cos=flip_sin_to_cos, + freq_shift=freq_shift, + down_block_types=down_block_types, + mid_block_type=mid_block_type, + only_cross_attention=only_cross_attention, + block_out_channels=block_out_channels, + layers_per_block=layers_per_block, + downsample_padding=downsample_padding, + mid_block_scale_factor=mid_block_scale_factor, + act_fn=act_fn, + norm_num_groups=norm_num_groups, + norm_eps=norm_eps, + cross_attention_dim=cross_attention_dim, + transformer_layers_per_block=transformer_layers_per_block, + encoder_hid_dim=encoder_hid_dim, + encoder_hid_dim_type=encoder_hid_dim_type, + attention_head_dim=attention_head_dim, + num_attention_heads=num_attention_heads, + use_linear_projection=use_linear_projection, + class_embed_type=class_embed_type, + addition_embed_type=addition_embed_type, + addition_time_embed_dim=addition_time_embed_dim, + num_class_embeds=num_class_embeds, + upcast_attention=upcast_attention, + resnet_time_scale_shift=resnet_time_scale_shift, + projection_class_embeddings_input_dim=projection_class_embeddings_input_dim, + controlnet_conditioning_channel_order=controlnet_conditioning_channel_order, + conditioning_embedding_out_channels=conditioning_embedding_out_channels, + global_pool_conditions=global_pool_conditions, + addition_embed_type_num_heads=addition_embed_type_num_heads, + ) + + +class ControlNetConditioningEmbedding(ControlNetConditioningEmbedding): + def __init__(self, *args, **kwargs): + deprecation_message = "Importing `ControlNetConditioningEmbedding` from `diffusers.models.controlnet` is deprecated and this will be removed in a future version. Please use `from diffusers.models.controlnets.controlnet import ControlNetConditioningEmbedding`, instead." + deprecate("diffusers.models.controlnet.ControlNetConditioningEmbedding", "0.34", deprecation_message) + super().__init__(*args, **kwargs) diff --git a/venv/lib/python3.11/site-packages/diffusers/models/controlnet_flux.py b/venv/lib/python3.11/site-packages/diffusers/models/controlnet_flux.py new file mode 100644 index 0000000000000000000000000000000000000000..2035deb1062d4256dc76793146f000b71bcc63cd --- /dev/null +++ b/venv/lib/python3.11/site-packages/diffusers/models/controlnet_flux.py @@ -0,0 +1,70 @@ +# Copyright 2024 Black Forest Labs, The HuggingFace Team and The InstantX Team. All rights reserved. +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. + + +from typing import List + +from ..utils import deprecate, logging +from .controlnets.controlnet_flux import FluxControlNetModel, FluxControlNetOutput, FluxMultiControlNetModel + + +logger = logging.get_logger(__name__) # pylint: disable=invalid-name + + +class FluxControlNetOutput(FluxControlNetOutput): + def __init__(self, *args, **kwargs): + deprecation_message = "Importing `FluxControlNetOutput` from `diffusers.models.controlnet_flux` is deprecated and this will be removed in a future version. Please use `from diffusers.models.controlnets.controlnet_flux import FluxControlNetOutput`, instead." + deprecate("diffusers.models.controlnet_flux.FluxControlNetOutput", "0.34", deprecation_message) + super().__init__(*args, **kwargs) + + +class FluxControlNetModel(FluxControlNetModel): + def __init__( + self, + patch_size: int = 1, + in_channels: int = 64, + num_layers: int = 19, + num_single_layers: int = 38, + attention_head_dim: int = 128, + num_attention_heads: int = 24, + joint_attention_dim: int = 4096, + pooled_projection_dim: int = 768, + guidance_embeds: bool = False, + axes_dims_rope: List[int] = [16, 56, 56], + num_mode: int = None, + conditioning_embedding_channels: int = None, + ): + deprecation_message = "Importing `FluxControlNetModel` from `diffusers.models.controlnet_flux` is deprecated and this will be removed in a future version. Please use `from diffusers.models.controlnets.controlnet_flux import FluxControlNetModel`, instead." + deprecate("diffusers.models.controlnet_flux.FluxControlNetModel", "0.34", deprecation_message) + super().__init__( + patch_size=patch_size, + in_channels=in_channels, + num_layers=num_layers, + num_single_layers=num_single_layers, + attention_head_dim=attention_head_dim, + num_attention_heads=num_attention_heads, + joint_attention_dim=joint_attention_dim, + pooled_projection_dim=pooled_projection_dim, + guidance_embeds=guidance_embeds, + axes_dims_rope=axes_dims_rope, + num_mode=num_mode, + conditioning_embedding_channels=conditioning_embedding_channels, + ) + + +class FluxMultiControlNetModel(FluxMultiControlNetModel): + def __init__(self, *args, **kwargs): + deprecation_message = "Importing `FluxMultiControlNetModel` from `diffusers.models.controlnet_flux` is deprecated and this will be removed in a future version. Please use `from diffusers.models.controlnets.controlnet_flux import FluxMultiControlNetModel`, instead." + deprecate("diffusers.models.controlnet_flux.FluxMultiControlNetModel", "0.34", deprecation_message) + super().__init__(*args, **kwargs) diff --git a/venv/lib/python3.11/site-packages/diffusers/models/controlnet_sd3.py b/venv/lib/python3.11/site-packages/diffusers/models/controlnet_sd3.py new file mode 100644 index 0000000000000000000000000000000000000000..0f7246c6c6d4801619733078086844d751a8a708 --- /dev/null +++ b/venv/lib/python3.11/site-packages/diffusers/models/controlnet_sd3.py @@ -0,0 +1,68 @@ +# Copyright 2024 Stability AI, The HuggingFace Team and The InstantX Team. All rights reserved. +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. + + +from ..utils import deprecate, logging +from .controlnets.controlnet_sd3 import SD3ControlNetModel, SD3ControlNetOutput, SD3MultiControlNetModel + + +logger = logging.get_logger(__name__) # pylint: disable=invalid-name + + +class SD3ControlNetOutput(SD3ControlNetOutput): + def __init__(self, *args, **kwargs): + deprecation_message = "Importing `SD3ControlNetOutput` from `diffusers.models.controlnet_sd3` is deprecated and this will be removed in a future version. Please use `from diffusers.models.controlnets.controlnet_sd3 import SD3ControlNetOutput`, instead." + deprecate("diffusers.models.controlnet_sd3.SD3ControlNetOutput", "0.34", deprecation_message) + super().__init__(*args, **kwargs) + + +class SD3ControlNetModel(SD3ControlNetModel): + def __init__( + self, + sample_size: int = 128, + patch_size: int = 2, + in_channels: int = 16, + num_layers: int = 18, + attention_head_dim: int = 64, + num_attention_heads: int = 18, + joint_attention_dim: int = 4096, + caption_projection_dim: int = 1152, + pooled_projection_dim: int = 2048, + out_channels: int = 16, + pos_embed_max_size: int = 96, + extra_conditioning_channels: int = 0, + ): + deprecation_message = "Importing `SD3ControlNetModel` from `diffusers.models.controlnet_sd3` is deprecated and this will be removed in a future version. Please use `from diffusers.models.controlnets.controlnet_sd3 import SD3ControlNetModel`, instead." + deprecate("diffusers.models.controlnet_sd3.SD3ControlNetModel", "0.34", deprecation_message) + super().__init__( + sample_size=sample_size, + patch_size=patch_size, + in_channels=in_channels, + num_layers=num_layers, + attention_head_dim=attention_head_dim, + num_attention_heads=num_attention_heads, + joint_attention_dim=joint_attention_dim, + caption_projection_dim=caption_projection_dim, + pooled_projection_dim=pooled_projection_dim, + out_channels=out_channels, + pos_embed_max_size=pos_embed_max_size, + extra_conditioning_channels=extra_conditioning_channels, + ) + + +class SD3MultiControlNetModel(SD3MultiControlNetModel): + def __init__(self, *args, **kwargs): + deprecation_message = "Importing `SD3MultiControlNetModel` from `diffusers.models.controlnet_sd3` is deprecated and this will be removed in a future version. Please use `from diffusers.models.controlnets.controlnet_sd3 import SD3MultiControlNetModel`, instead." + deprecate("diffusers.models.controlnet_sd3.SD3MultiControlNetModel", "0.34", deprecation_message) + super().__init__(*args, **kwargs) diff --git a/venv/lib/python3.11/site-packages/diffusers/models/controlnet_sparsectrl.py b/venv/lib/python3.11/site-packages/diffusers/models/controlnet_sparsectrl.py new file mode 100644 index 0000000000000000000000000000000000000000..8fdaa21bef118a59e6572033931e07d37e59c5b3 --- /dev/null +++ b/venv/lib/python3.11/site-packages/diffusers/models/controlnet_sparsectrl.py @@ -0,0 +1,116 @@ +# Copyright 2024 The HuggingFace Team. All rights reserved. +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. + + +from typing import Optional, Tuple, Union + +from ..utils import deprecate, logging +from .controlnets.controlnet_sparsectrl import ( # noqa + SparseControlNetConditioningEmbedding, + SparseControlNetModel, + SparseControlNetOutput, + zero_module, +) + + +logger = logging.get_logger(__name__) # pylint: disable=invalid-name + + +class SparseControlNetOutput(SparseControlNetOutput): + def __init__(self, *args, **kwargs): + deprecation_message = "Importing `SparseControlNetOutput` from `diffusers.models.controlnet_sparsectrl` is deprecated and this will be removed in a future version. Please use `from diffusers.models.controlnets.controlnet_sparsectrl import SparseControlNetOutput`, instead." + deprecate("diffusers.models.controlnet_sparsectrl.SparseControlNetOutput", "0.34", deprecation_message) + super().__init__(*args, **kwargs) + + +class SparseControlNetConditioningEmbedding(SparseControlNetConditioningEmbedding): + def __init__(self, *args, **kwargs): + deprecation_message = "Importing `SparseControlNetConditioningEmbedding` from `diffusers.models.controlnet_sparsectrl` is deprecated and this will be removed in a future version. Please use `from diffusers.models.controlnets.controlnet_sparsectrl import SparseControlNetConditioningEmbedding`, instead." + deprecate( + "diffusers.models.controlnet_sparsectrl.SparseControlNetConditioningEmbedding", "0.34", deprecation_message + ) + super().__init__(*args, **kwargs) + + +class SparseControlNetModel(SparseControlNetModel): + def __init__( + self, + in_channels: int = 4, + conditioning_channels: int = 4, + flip_sin_to_cos: bool = True, + freq_shift: int = 0, + down_block_types: Tuple[str, ...] = ( + "CrossAttnDownBlockMotion", + "CrossAttnDownBlockMotion", + "CrossAttnDownBlockMotion", + "DownBlockMotion", + ), + only_cross_attention: Union[bool, Tuple[bool]] = False, + block_out_channels: Tuple[int, ...] = (320, 640, 1280, 1280), + layers_per_block: int = 2, + downsample_padding: int = 1, + mid_block_scale_factor: float = 1, + act_fn: str = "silu", + norm_num_groups: Optional[int] = 32, + norm_eps: float = 1e-5, + cross_attention_dim: int = 768, + transformer_layers_per_block: Union[int, Tuple[int, ...]] = 1, + transformer_layers_per_mid_block: Optional[Union[int, Tuple[int]]] = None, + temporal_transformer_layers_per_block: Union[int, Tuple[int, ...]] = 1, + attention_head_dim: Union[int, Tuple[int, ...]] = 8, + num_attention_heads: Optional[Union[int, Tuple[int, ...]]] = None, + use_linear_projection: bool = False, + upcast_attention: bool = False, + resnet_time_scale_shift: str = "default", + conditioning_embedding_out_channels: Optional[Tuple[int, ...]] = (16, 32, 96, 256), + global_pool_conditions: bool = False, + controlnet_conditioning_channel_order: str = "rgb", + motion_max_seq_length: int = 32, + motion_num_attention_heads: int = 8, + concat_conditioning_mask: bool = True, + use_simplified_condition_embedding: bool = True, + ): + deprecation_message = "Importing `SparseControlNetModel` from `diffusers.models.controlnet_sparsectrl` is deprecated and this will be removed in a future version. Please use `from diffusers.models.controlnets.controlnet_sparsectrl import SparseControlNetModel`, instead." + deprecate("diffusers.models.controlnet_sparsectrl.SparseControlNetModel", "0.34", deprecation_message) + super().__init__( + in_channels=in_channels, + conditioning_channels=conditioning_channels, + flip_sin_to_cos=flip_sin_to_cos, + freq_shift=freq_shift, + down_block_types=down_block_types, + only_cross_attention=only_cross_attention, + block_out_channels=block_out_channels, + layers_per_block=layers_per_block, + downsample_padding=downsample_padding, + mid_block_scale_factor=mid_block_scale_factor, + act_fn=act_fn, + norm_num_groups=norm_num_groups, + norm_eps=norm_eps, + cross_attention_dim=cross_attention_dim, + transformer_layers_per_block=transformer_layers_per_block, + transformer_layers_per_mid_block=transformer_layers_per_mid_block, + temporal_transformer_layers_per_block=temporal_transformer_layers_per_block, + attention_head_dim=attention_head_dim, + num_attention_heads=num_attention_heads, + use_linear_projection=use_linear_projection, + upcast_attention=upcast_attention, + resnet_time_scale_shift=resnet_time_scale_shift, + conditioning_embedding_out_channels=conditioning_embedding_out_channels, + global_pool_conditions=global_pool_conditions, + controlnet_conditioning_channel_order=controlnet_conditioning_channel_order, + motion_max_seq_length=motion_max_seq_length, + motion_num_attention_heads=motion_num_attention_heads, + concat_conditioning_mask=concat_conditioning_mask, + use_simplified_condition_embedding=use_simplified_condition_embedding, + ) diff --git a/venv/lib/python3.11/site-packages/diffusers/models/controlnets/__init__.py b/venv/lib/python3.11/site-packages/diffusers/models/controlnets/__init__.py new file mode 100644 index 0000000000000000000000000000000000000000..ea86d669f3923ceb7fc70f711ee1cf942a3fdeb7 --- /dev/null +++ b/venv/lib/python3.11/site-packages/diffusers/models/controlnets/__init__.py @@ -0,0 +1,23 @@ +from ...utils import is_flax_available, is_torch_available + + +if is_torch_available(): + from .controlnet import ControlNetModel, ControlNetOutput + from .controlnet_flux import FluxControlNetModel, FluxControlNetOutput, FluxMultiControlNetModel + from .controlnet_hunyuan import ( + HunyuanControlNetOutput, + HunyuanDiT2DControlNetModel, + HunyuanDiT2DMultiControlNetModel, + ) + from .controlnet_sd3 import SD3ControlNetModel, SD3ControlNetOutput, SD3MultiControlNetModel + from .controlnet_sparsectrl import ( + SparseControlNetConditioningEmbedding, + SparseControlNetModel, + SparseControlNetOutput, + ) + from .controlnet_union import ControlNetUnionModel + from .controlnet_xs import ControlNetXSAdapter, ControlNetXSOutput, UNetControlNetXSModel + from .multicontrolnet import MultiControlNetModel + +if is_flax_available(): + from .controlnet_flax import FlaxControlNetModel diff --git a/venv/lib/python3.11/site-packages/diffusers/models/controlnets/controlnet.py b/venv/lib/python3.11/site-packages/diffusers/models/controlnets/controlnet.py new file mode 100644 index 0000000000000000000000000000000000000000..bd00f6dd190614b0f471da4daa9cc1efb2c9ecd9 --- /dev/null +++ b/venv/lib/python3.11/site-packages/diffusers/models/controlnets/controlnet.py @@ -0,0 +1,872 @@ +# Copyright 2024 The HuggingFace Team. All rights reserved. +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. +from dataclasses import dataclass +from typing import Any, Dict, List, Optional, Tuple, Union + +import torch +from torch import nn +from torch.nn import functional as F + +from ...configuration_utils import ConfigMixin, register_to_config +from ...loaders.single_file_model import FromOriginalModelMixin +from ...utils import BaseOutput, logging +from ..attention_processor import ( + ADDED_KV_ATTENTION_PROCESSORS, + CROSS_ATTENTION_PROCESSORS, + AttentionProcessor, + AttnAddedKVProcessor, + AttnProcessor, +) +from ..embeddings import TextImageProjection, TextImageTimeEmbedding, TextTimeEmbedding, TimestepEmbedding, Timesteps +from ..modeling_utils import ModelMixin +from ..unets.unet_2d_blocks import ( + CrossAttnDownBlock2D, + DownBlock2D, + UNetMidBlock2D, + UNetMidBlock2DCrossAttn, + get_down_block, +) +from ..unets.unet_2d_condition import UNet2DConditionModel + + +logger = logging.get_logger(__name__) # pylint: disable=invalid-name + + +@dataclass +class ControlNetOutput(BaseOutput): + """ + The output of [`ControlNetModel`]. + + Args: + down_block_res_samples (`tuple[torch.Tensor]`): + A tuple of downsample activations at different resolutions for each downsampling block. Each tensor should + be of shape `(batch_size, channel * resolution, height //resolution, width // resolution)`. Output can be + used to condition the original UNet's downsampling activations. + mid_down_block_re_sample (`torch.Tensor`): + The activation of the middle block (the lowest sample resolution). Each tensor should be of shape + `(batch_size, channel * lowest_resolution, height // lowest_resolution, width // lowest_resolution)`. + Output can be used to condition the original UNet's middle block activation. + """ + + down_block_res_samples: Tuple[torch.Tensor] + mid_block_res_sample: torch.Tensor + + +class ControlNetConditioningEmbedding(nn.Module): + """ + Quoting from https://arxiv.org/abs/2302.05543: "Stable Diffusion uses a pre-processing method similar to VQ-GAN + [11] to convert the entire dataset of 512 × 512 images into smaller 64 × 64 “latent images” for stabilized + training. This requires ControlNets to convert image-based conditions to 64 × 64 feature space to match the + convolution size. We use a tiny network E(·) of four convolution layers with 4 × 4 kernels and 2 × 2 strides + (activated by ReLU, channels are 16, 32, 64, 128, initialized with Gaussian weights, trained jointly with the full + model) to encode image-space conditions ... into feature maps ..." + """ + + def __init__( + self, + conditioning_embedding_channels: int, + conditioning_channels: int = 3, + block_out_channels: Tuple[int, ...] = (16, 32, 96, 256), + ): + super().__init__() + + self.conv_in = nn.Conv2d(conditioning_channels, block_out_channels[0], kernel_size=3, padding=1) + + self.blocks = nn.ModuleList([]) + + for i in range(len(block_out_channels) - 1): + channel_in = block_out_channels[i] + channel_out = block_out_channels[i + 1] + self.blocks.append(nn.Conv2d(channel_in, channel_in, kernel_size=3, padding=1)) + self.blocks.append(nn.Conv2d(channel_in, channel_out, kernel_size=3, padding=1, stride=2)) + + self.conv_out = zero_module( + nn.Conv2d(block_out_channels[-1], conditioning_embedding_channels, kernel_size=3, padding=1) + ) + + def forward(self, conditioning): + embedding = self.conv_in(conditioning) + embedding = F.silu(embedding) + + for block in self.blocks: + embedding = block(embedding) + embedding = F.silu(embedding) + + embedding = self.conv_out(embedding) + + return embedding + + +class ControlNetModel(ModelMixin, ConfigMixin, FromOriginalModelMixin): + """ + A ControlNet model. + + Args: + in_channels (`int`, defaults to 4): + The number of channels in the input sample. + flip_sin_to_cos (`bool`, defaults to `True`): + Whether to flip the sin to cos in the time embedding. + freq_shift (`int`, defaults to 0): + The frequency shift to apply to the time embedding. + down_block_types (`tuple[str]`, defaults to `("CrossAttnDownBlock2D", "CrossAttnDownBlock2D", "CrossAttnDownBlock2D", "DownBlock2D")`): + The tuple of downsample blocks to use. + only_cross_attention (`Union[bool, Tuple[bool]]`, defaults to `False`): + block_out_channels (`tuple[int]`, defaults to `(320, 640, 1280, 1280)`): + The tuple of output channels for each block. + layers_per_block (`int`, defaults to 2): + The number of layers per block. + downsample_padding (`int`, defaults to 1): + The padding to use for the downsampling convolution. + mid_block_scale_factor (`float`, defaults to 1): + The scale factor to use for the mid block. + act_fn (`str`, defaults to "silu"): + The activation function to use. + norm_num_groups (`int`, *optional*, defaults to 32): + The number of groups to use for the normalization. If None, normalization and activation layers is skipped + in post-processing. + norm_eps (`float`, defaults to 1e-5): + The epsilon to use for the normalization. + cross_attention_dim (`int`, defaults to 1280): + The dimension of the cross attention features. + transformer_layers_per_block (`int` or `Tuple[int]`, *optional*, defaults to 1): + The number of transformer blocks of type [`~models.attention.BasicTransformerBlock`]. Only relevant for + [`~models.unet_2d_blocks.CrossAttnDownBlock2D`], [`~models.unet_2d_blocks.CrossAttnUpBlock2D`], + [`~models.unet_2d_blocks.UNetMidBlock2DCrossAttn`]. + encoder_hid_dim (`int`, *optional*, defaults to None): + If `encoder_hid_dim_type` is defined, `encoder_hidden_states` will be projected from `encoder_hid_dim` + dimension to `cross_attention_dim`. + encoder_hid_dim_type (`str`, *optional*, defaults to `None`): + If given, the `encoder_hidden_states` and potentially other embeddings are down-projected to text + embeddings of dimension `cross_attention` according to `encoder_hid_dim_type`. + attention_head_dim (`Union[int, Tuple[int]]`, defaults to 8): + The dimension of the attention heads. + use_linear_projection (`bool`, defaults to `False`): + class_embed_type (`str`, *optional*, defaults to `None`): + The type of class embedding to use which is ultimately summed with the time embeddings. Choose from None, + `"timestep"`, `"identity"`, `"projection"`, or `"simple_projection"`. + addition_embed_type (`str`, *optional*, defaults to `None`): + Configures an optional embedding which will be summed with the time embeddings. Choose from `None` or + "text". "text" will use the `TextTimeEmbedding` layer. + num_class_embeds (`int`, *optional*, defaults to 0): + Input dimension of the learnable embedding matrix to be projected to `time_embed_dim`, when performing + class conditioning with `class_embed_type` equal to `None`. + upcast_attention (`bool`, defaults to `False`): + resnet_time_scale_shift (`str`, defaults to `"default"`): + Time scale shift config for ResNet blocks (see `ResnetBlock2D`). Choose from `default` or `scale_shift`. + projection_class_embeddings_input_dim (`int`, *optional*, defaults to `None`): + The dimension of the `class_labels` input when `class_embed_type="projection"`. Required when + `class_embed_type="projection"`. + controlnet_conditioning_channel_order (`str`, defaults to `"rgb"`): + The channel order of conditional image. Will convert to `rgb` if it's `bgr`. + conditioning_embedding_out_channels (`tuple[int]`, *optional*, defaults to `(16, 32, 96, 256)`): + The tuple of output channel for each block in the `conditioning_embedding` layer. + global_pool_conditions (`bool`, defaults to `False`): + TODO(Patrick) - unused parameter. + addition_embed_type_num_heads (`int`, defaults to 64): + The number of heads to use for the `TextTimeEmbedding` layer. + """ + + _supports_gradient_checkpointing = True + + @register_to_config + def __init__( + self, + in_channels: int = 4, + conditioning_channels: int = 3, + flip_sin_to_cos: bool = True, + freq_shift: int = 0, + down_block_types: Tuple[str, ...] = ( + "CrossAttnDownBlock2D", + "CrossAttnDownBlock2D", + "CrossAttnDownBlock2D", + "DownBlock2D", + ), + mid_block_type: Optional[str] = "UNetMidBlock2DCrossAttn", + only_cross_attention: Union[bool, Tuple[bool]] = False, + block_out_channels: Tuple[int, ...] = (320, 640, 1280, 1280), + layers_per_block: int = 2, + downsample_padding: int = 1, + mid_block_scale_factor: float = 1, + act_fn: str = "silu", + norm_num_groups: Optional[int] = 32, + norm_eps: float = 1e-5, + cross_attention_dim: int = 1280, + transformer_layers_per_block: Union[int, Tuple[int, ...]] = 1, + encoder_hid_dim: Optional[int] = None, + encoder_hid_dim_type: Optional[str] = None, + attention_head_dim: Union[int, Tuple[int, ...]] = 8, + num_attention_heads: Optional[Union[int, Tuple[int, ...]]] = None, + use_linear_projection: bool = False, + class_embed_type: Optional[str] = None, + addition_embed_type: Optional[str] = None, + addition_time_embed_dim: Optional[int] = None, + num_class_embeds: Optional[int] = None, + upcast_attention: bool = False, + resnet_time_scale_shift: str = "default", + projection_class_embeddings_input_dim: Optional[int] = None, + controlnet_conditioning_channel_order: str = "rgb", + conditioning_embedding_out_channels: Optional[Tuple[int, ...]] = (16, 32, 96, 256), + global_pool_conditions: bool = False, + addition_embed_type_num_heads: int = 64, + ): + super().__init__() + + # If `num_attention_heads` is not defined (which is the case for most models) + # it will default to `attention_head_dim`. This looks weird upon first reading it and it is. + # The reason for this behavior is to correct for incorrectly named variables that were introduced + # when this library was created. The incorrect naming was only discovered much later in https://github.com/huggingface/diffusers/issues/2011#issuecomment-1547958131 + # Changing `attention_head_dim` to `num_attention_heads` for 40,000+ configurations is too backwards breaking + # which is why we correct for the naming here. + num_attention_heads = num_attention_heads or attention_head_dim + + # Check inputs + if len(block_out_channels) != len(down_block_types): + raise ValueError( + f"Must provide the same number of `block_out_channels` as `down_block_types`. `block_out_channels`: {block_out_channels}. `down_block_types`: {down_block_types}." + ) + + if not isinstance(only_cross_attention, bool) and len(only_cross_attention) != len(down_block_types): + raise ValueError( + f"Must provide the same number of `only_cross_attention` as `down_block_types`. `only_cross_attention`: {only_cross_attention}. `down_block_types`: {down_block_types}." + ) + + if not isinstance(num_attention_heads, int) and len(num_attention_heads) != len(down_block_types): + raise ValueError( + f"Must provide the same number of `num_attention_heads` as `down_block_types`. `num_attention_heads`: {num_attention_heads}. `down_block_types`: {down_block_types}." + ) + + if isinstance(transformer_layers_per_block, int): + transformer_layers_per_block = [transformer_layers_per_block] * len(down_block_types) + + # input + conv_in_kernel = 3 + conv_in_padding = (conv_in_kernel - 1) // 2 + self.conv_in = nn.Conv2d( + in_channels, block_out_channels[0], kernel_size=conv_in_kernel, padding=conv_in_padding + ) + + # time + time_embed_dim = block_out_channels[0] * 4 + self.time_proj = Timesteps(block_out_channels[0], flip_sin_to_cos, freq_shift) + timestep_input_dim = block_out_channels[0] + self.time_embedding = TimestepEmbedding( + timestep_input_dim, + time_embed_dim, + act_fn=act_fn, + ) + + if encoder_hid_dim_type is None and encoder_hid_dim is not None: + encoder_hid_dim_type = "text_proj" + self.register_to_config(encoder_hid_dim_type=encoder_hid_dim_type) + logger.info("encoder_hid_dim_type defaults to 'text_proj' as `encoder_hid_dim` is defined.") + + if encoder_hid_dim is None and encoder_hid_dim_type is not None: + raise ValueError( + f"`encoder_hid_dim` has to be defined when `encoder_hid_dim_type` is set to {encoder_hid_dim_type}." + ) + + if encoder_hid_dim_type == "text_proj": + self.encoder_hid_proj = nn.Linear(encoder_hid_dim, cross_attention_dim) + elif encoder_hid_dim_type == "text_image_proj": + # image_embed_dim DOESN'T have to be `cross_attention_dim`. To not clutter the __init__ too much + # they are set to `cross_attention_dim` here as this is exactly the required dimension for the currently only use + # case when `addition_embed_type == "text_image_proj"` (Kandinsky 2.1)` + self.encoder_hid_proj = TextImageProjection( + text_embed_dim=encoder_hid_dim, + image_embed_dim=cross_attention_dim, + cross_attention_dim=cross_attention_dim, + ) + + elif encoder_hid_dim_type is not None: + raise ValueError( + f"encoder_hid_dim_type: {encoder_hid_dim_type} must be None, 'text_proj' or 'text_image_proj'." + ) + else: + self.encoder_hid_proj = None + + # class embedding + if class_embed_type is None and num_class_embeds is not None: + self.class_embedding = nn.Embedding(num_class_embeds, time_embed_dim) + elif class_embed_type == "timestep": + self.class_embedding = TimestepEmbedding(timestep_input_dim, time_embed_dim) + elif class_embed_type == "identity": + self.class_embedding = nn.Identity(time_embed_dim, time_embed_dim) + elif class_embed_type == "projection": + if projection_class_embeddings_input_dim is None: + raise ValueError( + "`class_embed_type`: 'projection' requires `projection_class_embeddings_input_dim` be set" + ) + # The projection `class_embed_type` is the same as the timestep `class_embed_type` except + # 1. the `class_labels` inputs are not first converted to sinusoidal embeddings + # 2. it projects from an arbitrary input dimension. + # + # Note that `TimestepEmbedding` is quite general, being mainly linear layers and activations. + # When used for embedding actual timesteps, the timesteps are first converted to sinusoidal embeddings. + # As a result, `TimestepEmbedding` can be passed arbitrary vectors. + self.class_embedding = TimestepEmbedding(projection_class_embeddings_input_dim, time_embed_dim) + else: + self.class_embedding = None + + if addition_embed_type == "text": + if encoder_hid_dim is not None: + text_time_embedding_from_dim = encoder_hid_dim + else: + text_time_embedding_from_dim = cross_attention_dim + + self.add_embedding = TextTimeEmbedding( + text_time_embedding_from_dim, time_embed_dim, num_heads=addition_embed_type_num_heads + ) + elif addition_embed_type == "text_image": + # text_embed_dim and image_embed_dim DON'T have to be `cross_attention_dim`. To not clutter the __init__ too much + # they are set to `cross_attention_dim` here as this is exactly the required dimension for the currently only use + # case when `addition_embed_type == "text_image"` (Kandinsky 2.1)` + self.add_embedding = TextImageTimeEmbedding( + text_embed_dim=cross_attention_dim, image_embed_dim=cross_attention_dim, time_embed_dim=time_embed_dim + ) + elif addition_embed_type == "text_time": + self.add_time_proj = Timesteps(addition_time_embed_dim, flip_sin_to_cos, freq_shift) + self.add_embedding = TimestepEmbedding(projection_class_embeddings_input_dim, time_embed_dim) + + elif addition_embed_type is not None: + raise ValueError(f"addition_embed_type: {addition_embed_type} must be None, 'text' or 'text_image'.") + + # control net conditioning embedding + self.controlnet_cond_embedding = ControlNetConditioningEmbedding( + conditioning_embedding_channels=block_out_channels[0], + block_out_channels=conditioning_embedding_out_channels, + conditioning_channels=conditioning_channels, + ) + + self.down_blocks = nn.ModuleList([]) + self.controlnet_down_blocks = nn.ModuleList([]) + + if isinstance(only_cross_attention, bool): + only_cross_attention = [only_cross_attention] * len(down_block_types) + + if isinstance(attention_head_dim, int): + attention_head_dim = (attention_head_dim,) * len(down_block_types) + + if isinstance(num_attention_heads, int): + num_attention_heads = (num_attention_heads,) * len(down_block_types) + + # down + output_channel = block_out_channels[0] + + controlnet_block = nn.Conv2d(output_channel, output_channel, kernel_size=1) + controlnet_block = zero_module(controlnet_block) + self.controlnet_down_blocks.append(controlnet_block) + + for i, down_block_type in enumerate(down_block_types): + input_channel = output_channel + output_channel = block_out_channels[i] + is_final_block = i == len(block_out_channels) - 1 + + down_block = get_down_block( + down_block_type, + num_layers=layers_per_block, + transformer_layers_per_block=transformer_layers_per_block[i], + in_channels=input_channel, + out_channels=output_channel, + temb_channels=time_embed_dim, + add_downsample=not is_final_block, + resnet_eps=norm_eps, + resnet_act_fn=act_fn, + resnet_groups=norm_num_groups, + cross_attention_dim=cross_attention_dim, + num_attention_heads=num_attention_heads[i], + attention_head_dim=attention_head_dim[i] if attention_head_dim[i] is not None else output_channel, + downsample_padding=downsample_padding, + use_linear_projection=use_linear_projection, + only_cross_attention=only_cross_attention[i], + upcast_attention=upcast_attention, + resnet_time_scale_shift=resnet_time_scale_shift, + ) + self.down_blocks.append(down_block) + + for _ in range(layers_per_block): + controlnet_block = nn.Conv2d(output_channel, output_channel, kernel_size=1) + controlnet_block = zero_module(controlnet_block) + self.controlnet_down_blocks.append(controlnet_block) + + if not is_final_block: + controlnet_block = nn.Conv2d(output_channel, output_channel, kernel_size=1) + controlnet_block = zero_module(controlnet_block) + self.controlnet_down_blocks.append(controlnet_block) + + # mid + mid_block_channel = block_out_channels[-1] + + controlnet_block = nn.Conv2d(mid_block_channel, mid_block_channel, kernel_size=1) + controlnet_block = zero_module(controlnet_block) + self.controlnet_mid_block = controlnet_block + + if mid_block_type == "UNetMidBlock2DCrossAttn": + self.mid_block = UNetMidBlock2DCrossAttn( + transformer_layers_per_block=transformer_layers_per_block[-1], + in_channels=mid_block_channel, + temb_channels=time_embed_dim, + resnet_eps=norm_eps, + resnet_act_fn=act_fn, + output_scale_factor=mid_block_scale_factor, + resnet_time_scale_shift=resnet_time_scale_shift, + cross_attention_dim=cross_attention_dim, + num_attention_heads=num_attention_heads[-1], + resnet_groups=norm_num_groups, + use_linear_projection=use_linear_projection, + upcast_attention=upcast_attention, + ) + elif mid_block_type == "UNetMidBlock2D": + self.mid_block = UNetMidBlock2D( + in_channels=block_out_channels[-1], + temb_channels=time_embed_dim, + num_layers=0, + resnet_eps=norm_eps, + resnet_act_fn=act_fn, + output_scale_factor=mid_block_scale_factor, + resnet_groups=norm_num_groups, + resnet_time_scale_shift=resnet_time_scale_shift, + add_attention=False, + ) + else: + raise ValueError(f"unknown mid_block_type : {mid_block_type}") + + @classmethod + def from_unet( + cls, + unet: UNet2DConditionModel, + controlnet_conditioning_channel_order: str = "rgb", + conditioning_embedding_out_channels: Optional[Tuple[int, ...]] = (16, 32, 96, 256), + load_weights_from_unet: bool = True, + conditioning_channels: int = 3, + ): + r""" + Instantiate a [`ControlNetModel`] from [`UNet2DConditionModel`]. + + Parameters: + unet (`UNet2DConditionModel`): + The UNet model weights to copy to the [`ControlNetModel`]. All configuration options are also copied + where applicable. + """ + transformer_layers_per_block = ( + unet.config.transformer_layers_per_block if "transformer_layers_per_block" in unet.config else 1 + ) + encoder_hid_dim = unet.config.encoder_hid_dim if "encoder_hid_dim" in unet.config else None + encoder_hid_dim_type = unet.config.encoder_hid_dim_type if "encoder_hid_dim_type" in unet.config else None + addition_embed_type = unet.config.addition_embed_type if "addition_embed_type" in unet.config else None + addition_time_embed_dim = ( + unet.config.addition_time_embed_dim if "addition_time_embed_dim" in unet.config else None + ) + + controlnet = cls( + encoder_hid_dim=encoder_hid_dim, + encoder_hid_dim_type=encoder_hid_dim_type, + addition_embed_type=addition_embed_type, + addition_time_embed_dim=addition_time_embed_dim, + transformer_layers_per_block=transformer_layers_per_block, + in_channels=unet.config.in_channels, + flip_sin_to_cos=unet.config.flip_sin_to_cos, + freq_shift=unet.config.freq_shift, + down_block_types=unet.config.down_block_types, + only_cross_attention=unet.config.only_cross_attention, + block_out_channels=unet.config.block_out_channels, + layers_per_block=unet.config.layers_per_block, + downsample_padding=unet.config.downsample_padding, + mid_block_scale_factor=unet.config.mid_block_scale_factor, + act_fn=unet.config.act_fn, + norm_num_groups=unet.config.norm_num_groups, + norm_eps=unet.config.norm_eps, + cross_attention_dim=unet.config.cross_attention_dim, + attention_head_dim=unet.config.attention_head_dim, + num_attention_heads=unet.config.num_attention_heads, + use_linear_projection=unet.config.use_linear_projection, + class_embed_type=unet.config.class_embed_type, + num_class_embeds=unet.config.num_class_embeds, + upcast_attention=unet.config.upcast_attention, + resnet_time_scale_shift=unet.config.resnet_time_scale_shift, + projection_class_embeddings_input_dim=unet.config.projection_class_embeddings_input_dim, + mid_block_type=unet.config.mid_block_type, + controlnet_conditioning_channel_order=controlnet_conditioning_channel_order, + conditioning_embedding_out_channels=conditioning_embedding_out_channels, + conditioning_channels=conditioning_channels, + ) + + if load_weights_from_unet: + controlnet.conv_in.load_state_dict(unet.conv_in.state_dict()) + controlnet.time_proj.load_state_dict(unet.time_proj.state_dict()) + controlnet.time_embedding.load_state_dict(unet.time_embedding.state_dict()) + + if controlnet.class_embedding: + controlnet.class_embedding.load_state_dict(unet.class_embedding.state_dict()) + + if hasattr(controlnet, "add_embedding"): + controlnet.add_embedding.load_state_dict(unet.add_embedding.state_dict()) + + controlnet.down_blocks.load_state_dict(unet.down_blocks.state_dict()) + controlnet.mid_block.load_state_dict(unet.mid_block.state_dict()) + + return controlnet + + @property + # Copied from diffusers.models.unets.unet_2d_condition.UNet2DConditionModel.attn_processors + def attn_processors(self) -> Dict[str, AttentionProcessor]: + r""" + Returns: + `dict` of attention processors: A dictionary containing all attention processors used in the model with + indexed by its weight name. + """ + # set recursively + processors = {} + + def fn_recursive_add_processors(name: str, module: torch.nn.Module, processors: Dict[str, AttentionProcessor]): + if hasattr(module, "get_processor"): + processors[f"{name}.processor"] = module.get_processor() + + for sub_name, child in module.named_children(): + fn_recursive_add_processors(f"{name}.{sub_name}", child, processors) + + return processors + + for name, module in self.named_children(): + fn_recursive_add_processors(name, module, processors) + + return processors + + # Copied from diffusers.models.unets.unet_2d_condition.UNet2DConditionModel.set_attn_processor + def set_attn_processor(self, processor: Union[AttentionProcessor, Dict[str, AttentionProcessor]]): + r""" + Sets the attention processor to use to compute attention. + + Parameters: + processor (`dict` of `AttentionProcessor` or only `AttentionProcessor`): + The instantiated processor class or a dictionary of processor classes that will be set as the processor + for **all** `Attention` layers. + + If `processor` is a dict, the key needs to define the path to the corresponding cross attention + processor. This is strongly recommended when setting trainable attention processors. + + """ + count = len(self.attn_processors.keys()) + + if isinstance(processor, dict) and len(processor) != count: + raise ValueError( + f"A dict of processors was passed, but the number of processors {len(processor)} does not match the" + f" number of attention layers: {count}. Please make sure to pass {count} processor classes." + ) + + def fn_recursive_attn_processor(name: str, module: torch.nn.Module, processor): + if hasattr(module, "set_processor"): + if not isinstance(processor, dict): + module.set_processor(processor) + else: + module.set_processor(processor.pop(f"{name}.processor")) + + for sub_name, child in module.named_children(): + fn_recursive_attn_processor(f"{name}.{sub_name}", child, processor) + + for name, module in self.named_children(): + fn_recursive_attn_processor(name, module, processor) + + # Copied from diffusers.models.unets.unet_2d_condition.UNet2DConditionModel.set_default_attn_processor + def set_default_attn_processor(self): + """ + Disables custom attention processors and sets the default attention implementation. + """ + if all(proc.__class__ in ADDED_KV_ATTENTION_PROCESSORS for proc in self.attn_processors.values()): + processor = AttnAddedKVProcessor() + elif all(proc.__class__ in CROSS_ATTENTION_PROCESSORS for proc in self.attn_processors.values()): + processor = AttnProcessor() + else: + raise ValueError( + f"Cannot call `set_default_attn_processor` when attention processors are of type {next(iter(self.attn_processors.values()))}" + ) + + self.set_attn_processor(processor) + + # Copied from diffusers.models.unets.unet_2d_condition.UNet2DConditionModel.set_attention_slice + def set_attention_slice(self, slice_size: Union[str, int, List[int]]) -> None: + r""" + Enable sliced attention computation. + + When this option is enabled, the attention module splits the input tensor in slices to compute attention in + several steps. This is useful for saving some memory in exchange for a small decrease in speed. + + Args: + slice_size (`str` or `int` or `list(int)`, *optional*, defaults to `"auto"`): + When `"auto"`, input to the attention heads is halved, so attention is computed in two steps. If + `"max"`, maximum amount of memory is saved by running only one slice at a time. If a number is + provided, uses as many slices as `attention_head_dim // slice_size`. In this case, `attention_head_dim` + must be a multiple of `slice_size`. + """ + sliceable_head_dims = [] + + def fn_recursive_retrieve_sliceable_dims(module: torch.nn.Module): + if hasattr(module, "set_attention_slice"): + sliceable_head_dims.append(module.sliceable_head_dim) + + for child in module.children(): + fn_recursive_retrieve_sliceable_dims(child) + + # retrieve number of attention layers + for module in self.children(): + fn_recursive_retrieve_sliceable_dims(module) + + num_sliceable_layers = len(sliceable_head_dims) + + if slice_size == "auto": + # half the attention head size is usually a good trade-off between + # speed and memory + slice_size = [dim // 2 for dim in sliceable_head_dims] + elif slice_size == "max": + # make smallest slice possible + slice_size = num_sliceable_layers * [1] + + slice_size = num_sliceable_layers * [slice_size] if not isinstance(slice_size, list) else slice_size + + if len(slice_size) != len(sliceable_head_dims): + raise ValueError( + f"You have provided {len(slice_size)}, but {self.config} has {len(sliceable_head_dims)} different" + f" attention layers. Make sure to match `len(slice_size)` to be {len(sliceable_head_dims)}." + ) + + for i in range(len(slice_size)): + size = slice_size[i] + dim = sliceable_head_dims[i] + if size is not None and size > dim: + raise ValueError(f"size {size} has to be smaller or equal to {dim}.") + + # Recursively walk through all the children. + # Any children which exposes the set_attention_slice method + # gets the message + def fn_recursive_set_attention_slice(module: torch.nn.Module, slice_size: List[int]): + if hasattr(module, "set_attention_slice"): + module.set_attention_slice(slice_size.pop()) + + for child in module.children(): + fn_recursive_set_attention_slice(child, slice_size) + + reversed_slice_size = list(reversed(slice_size)) + for module in self.children(): + fn_recursive_set_attention_slice(module, reversed_slice_size) + + def _set_gradient_checkpointing(self, module, value: bool = False) -> None: + if isinstance(module, (CrossAttnDownBlock2D, DownBlock2D)): + module.gradient_checkpointing = value + + def forward( + self, + sample: torch.Tensor, + timestep: Union[torch.Tensor, float, int], + encoder_hidden_states: torch.Tensor, + controlnet_cond: torch.Tensor, + conditioning_scale: float = 1.0, + class_labels: Optional[torch.Tensor] = None, + timestep_cond: Optional[torch.Tensor] = None, + attention_mask: Optional[torch.Tensor] = None, + added_cond_kwargs: Optional[Dict[str, torch.Tensor]] = None, + cross_attention_kwargs: Optional[Dict[str, Any]] = None, + guess_mode: bool = False, + return_dict: bool = True, + ) -> Union[ControlNetOutput, Tuple[Tuple[torch.Tensor, ...], torch.Tensor]]: + """ + The [`ControlNetModel`] forward method. + + Args: + sample (`torch.Tensor`): + The noisy input tensor. + timestep (`Union[torch.Tensor, float, int]`): + The number of timesteps to denoise an input. + encoder_hidden_states (`torch.Tensor`): + The encoder hidden states. + controlnet_cond (`torch.Tensor`): + The conditional input tensor of shape `(batch_size, sequence_length, hidden_size)`. + conditioning_scale (`float`, defaults to `1.0`): + The scale factor for ControlNet outputs. + class_labels (`torch.Tensor`, *optional*, defaults to `None`): + Optional class labels for conditioning. Their embeddings will be summed with the timestep embeddings. + timestep_cond (`torch.Tensor`, *optional*, defaults to `None`): + Additional conditional embeddings for timestep. If provided, the embeddings will be summed with the + timestep_embedding passed through the `self.time_embedding` layer to obtain the final timestep + embeddings. + attention_mask (`torch.Tensor`, *optional*, defaults to `None`): + An attention mask of shape `(batch, key_tokens)` is applied to `encoder_hidden_states`. If `1` the mask + is kept, otherwise if `0` it is discarded. Mask will be converted into a bias, which adds large + negative values to the attention scores corresponding to "discard" tokens. + added_cond_kwargs (`dict`): + Additional conditions for the Stable Diffusion XL UNet. + cross_attention_kwargs (`dict[str]`, *optional*, defaults to `None`): + A kwargs dictionary that if specified is passed along to the `AttnProcessor`. + guess_mode (`bool`, defaults to `False`): + In this mode, the ControlNet encoder tries its best to recognize the input content of the input even if + you remove all prompts. A `guidance_scale` between 3.0 and 5.0 is recommended. + return_dict (`bool`, defaults to `True`): + Whether or not to return a [`~models.controlnets.controlnet.ControlNetOutput`] instead of a plain + tuple. + + Returns: + [`~models.controlnets.controlnet.ControlNetOutput`] **or** `tuple`: + If `return_dict` is `True`, a [`~models.controlnets.controlnet.ControlNetOutput`] is returned, + otherwise a tuple is returned where the first element is the sample tensor. + """ + # check channel order + channel_order = self.config.controlnet_conditioning_channel_order + + if channel_order == "rgb": + # in rgb order by default + ... + elif channel_order == "bgr": + controlnet_cond = torch.flip(controlnet_cond, dims=[1]) + else: + raise ValueError(f"unknown `controlnet_conditioning_channel_order`: {channel_order}") + + # prepare attention_mask + if attention_mask is not None: + attention_mask = (1 - attention_mask.to(sample.dtype)) * -10000.0 + attention_mask = attention_mask.unsqueeze(1) + + # 1. time + timesteps = timestep + if not torch.is_tensor(timesteps): + # TODO: this requires sync between CPU and GPU. So try to pass timesteps as tensors if you can + # This would be a good case for the `match` statement (Python 3.10+) + is_mps = sample.device.type == "mps" + if isinstance(timestep, float): + dtype = torch.float32 if is_mps else torch.float64 + else: + dtype = torch.int32 if is_mps else torch.int64 + timesteps = torch.tensor([timesteps], dtype=dtype, device=sample.device) + elif len(timesteps.shape) == 0: + timesteps = timesteps[None].to(sample.device) + + # broadcast to batch dimension in a way that's compatible with ONNX/Core ML + timesteps = timesteps.expand(sample.shape[0]) + + t_emb = self.time_proj(timesteps) + + # timesteps does not contain any weights and will always return f32 tensors + # but time_embedding might actually be running in fp16. so we need to cast here. + # there might be better ways to encapsulate this. + t_emb = t_emb.to(dtype=sample.dtype) + + emb = self.time_embedding(t_emb, timestep_cond) + aug_emb = None + + if self.class_embedding is not None: + if class_labels is None: + raise ValueError("class_labels should be provided when num_class_embeds > 0") + + if self.config.class_embed_type == "timestep": + class_labels = self.time_proj(class_labels) + + class_emb = self.class_embedding(class_labels).to(dtype=self.dtype) + emb = emb + class_emb + + if self.config.addition_embed_type is not None: + if self.config.addition_embed_type == "text": + aug_emb = self.add_embedding(encoder_hidden_states) + + elif self.config.addition_embed_type == "text_time": + if "text_embeds" not in added_cond_kwargs: + raise ValueError( + f"{self.__class__} has the config param `addition_embed_type` set to 'text_time' which requires the keyword argument `text_embeds` to be passed in `added_cond_kwargs`" + ) + text_embeds = added_cond_kwargs.get("text_embeds") + if "time_ids" not in added_cond_kwargs: + raise ValueError( + f"{self.__class__} has the config param `addition_embed_type` set to 'text_time' which requires the keyword argument `time_ids` to be passed in `added_cond_kwargs`" + ) + time_ids = added_cond_kwargs.get("time_ids") + time_embeds = self.add_time_proj(time_ids.flatten()) + time_embeds = time_embeds.reshape((text_embeds.shape[0], -1)) + + add_embeds = torch.concat([text_embeds, time_embeds], dim=-1) + add_embeds = add_embeds.to(emb.dtype) + aug_emb = self.add_embedding(add_embeds) + + emb = emb + aug_emb if aug_emb is not None else emb + + # 2. pre-process + sample = self.conv_in(sample) + + controlnet_cond = self.controlnet_cond_embedding(controlnet_cond) + sample = sample + controlnet_cond + + # 3. down + down_block_res_samples = (sample,) + for downsample_block in self.down_blocks: + if hasattr(downsample_block, "has_cross_attention") and downsample_block.has_cross_attention: + sample, res_samples = downsample_block( + hidden_states=sample, + temb=emb, + encoder_hidden_states=encoder_hidden_states, + attention_mask=attention_mask, + cross_attention_kwargs=cross_attention_kwargs, + ) + else: + sample, res_samples = downsample_block(hidden_states=sample, temb=emb) + + down_block_res_samples += res_samples + + # 4. mid + if self.mid_block is not None: + if hasattr(self.mid_block, "has_cross_attention") and self.mid_block.has_cross_attention: + sample = self.mid_block( + sample, + emb, + encoder_hidden_states=encoder_hidden_states, + attention_mask=attention_mask, + cross_attention_kwargs=cross_attention_kwargs, + ) + else: + sample = self.mid_block(sample, emb) + + # 5. Control net blocks + + controlnet_down_block_res_samples = () + + for down_block_res_sample, controlnet_block in zip(down_block_res_samples, self.controlnet_down_blocks): + down_block_res_sample = controlnet_block(down_block_res_sample) + controlnet_down_block_res_samples = controlnet_down_block_res_samples + (down_block_res_sample,) + + down_block_res_samples = controlnet_down_block_res_samples + + mid_block_res_sample = self.controlnet_mid_block(sample) + + # 6. scaling + if guess_mode and not self.config.global_pool_conditions: + scales = torch.logspace(-1, 0, len(down_block_res_samples) + 1, device=sample.device) # 0.1 to 1.0 + scales = scales * conditioning_scale + down_block_res_samples = [sample * scale for sample, scale in zip(down_block_res_samples, scales)] + mid_block_res_sample = mid_block_res_sample * scales[-1] # last one + else: + down_block_res_samples = [sample * conditioning_scale for sample in down_block_res_samples] + mid_block_res_sample = mid_block_res_sample * conditioning_scale + + if self.config.global_pool_conditions: + down_block_res_samples = [ + torch.mean(sample, dim=(2, 3), keepdim=True) for sample in down_block_res_samples + ] + mid_block_res_sample = torch.mean(mid_block_res_sample, dim=(2, 3), keepdim=True) + + if not return_dict: + return (down_block_res_samples, mid_block_res_sample) + + return ControlNetOutput( + down_block_res_samples=down_block_res_samples, mid_block_res_sample=mid_block_res_sample + ) + + +def zero_module(module): + for p in module.parameters(): + nn.init.zeros_(p) + return module diff --git a/venv/lib/python3.11/site-packages/diffusers/models/controlnets/controlnet_flax.py b/venv/lib/python3.11/site-packages/diffusers/models/controlnets/controlnet_flax.py new file mode 100644 index 0000000000000000000000000000000000000000..ab8d9b5f8cbb74126f8ec2dcc86a496da760e218 --- /dev/null +++ b/venv/lib/python3.11/site-packages/diffusers/models/controlnets/controlnet_flax.py @@ -0,0 +1,395 @@ +# Copyright 2024 The HuggingFace Team. All rights reserved. +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. +from typing import Optional, Tuple, Union + +import flax +import flax.linen as nn +import jax +import jax.numpy as jnp +from flax.core.frozen_dict import FrozenDict + +from ...configuration_utils import ConfigMixin, flax_register_to_config +from ...utils import BaseOutput +from ..embeddings_flax import FlaxTimestepEmbedding, FlaxTimesteps +from ..modeling_flax_utils import FlaxModelMixin +from ..unets.unet_2d_blocks_flax import ( + FlaxCrossAttnDownBlock2D, + FlaxDownBlock2D, + FlaxUNetMidBlock2DCrossAttn, +) + + +@flax.struct.dataclass +class FlaxControlNetOutput(BaseOutput): + """ + The output of [`FlaxControlNetModel`]. + + Args: + down_block_res_samples (`jnp.ndarray`): + mid_block_res_sample (`jnp.ndarray`): + """ + + down_block_res_samples: jnp.ndarray + mid_block_res_sample: jnp.ndarray + + +class FlaxControlNetConditioningEmbedding(nn.Module): + conditioning_embedding_channels: int + block_out_channels: Tuple[int, ...] = (16, 32, 96, 256) + dtype: jnp.dtype = jnp.float32 + + def setup(self) -> None: + self.conv_in = nn.Conv( + self.block_out_channels[0], + kernel_size=(3, 3), + padding=((1, 1), (1, 1)), + dtype=self.dtype, + ) + + blocks = [] + for i in range(len(self.block_out_channels) - 1): + channel_in = self.block_out_channels[i] + channel_out = self.block_out_channels[i + 1] + conv1 = nn.Conv( + channel_in, + kernel_size=(3, 3), + padding=((1, 1), (1, 1)), + dtype=self.dtype, + ) + blocks.append(conv1) + conv2 = nn.Conv( + channel_out, + kernel_size=(3, 3), + strides=(2, 2), + padding=((1, 1), (1, 1)), + dtype=self.dtype, + ) + blocks.append(conv2) + self.blocks = blocks + + self.conv_out = nn.Conv( + self.conditioning_embedding_channels, + kernel_size=(3, 3), + padding=((1, 1), (1, 1)), + kernel_init=nn.initializers.zeros_init(), + bias_init=nn.initializers.zeros_init(), + dtype=self.dtype, + ) + + def __call__(self, conditioning: jnp.ndarray) -> jnp.ndarray: + embedding = self.conv_in(conditioning) + embedding = nn.silu(embedding) + + for block in self.blocks: + embedding = block(embedding) + embedding = nn.silu(embedding) + + embedding = self.conv_out(embedding) + + return embedding + + +@flax_register_to_config +class FlaxControlNetModel(nn.Module, FlaxModelMixin, ConfigMixin): + r""" + A ControlNet model. + + This model inherits from [`FlaxModelMixin`]. Check the superclass documentation for it’s generic methods + implemented for all models (such as downloading or saving). + + This model is also a Flax Linen [`flax.linen.Module`](https://flax.readthedocs.io/en/latest/flax.linen.html#module) + subclass. Use it as a regular Flax Linen module and refer to the Flax documentation for all matters related to its + general usage and behavior. + + Inherent JAX features such as the following are supported: + + - [Just-In-Time (JIT) compilation](https://jax.readthedocs.io/en/latest/jax.html#just-in-time-compilation-jit) + - [Automatic Differentiation](https://jax.readthedocs.io/en/latest/jax.html#automatic-differentiation) + - [Vectorization](https://jax.readthedocs.io/en/latest/jax.html#vectorization-vmap) + - [Parallelization](https://jax.readthedocs.io/en/latest/jax.html#parallelization-pmap) + + Parameters: + sample_size (`int`, *optional*): + The size of the input sample. + in_channels (`int`, *optional*, defaults to 4): + The number of channels in the input sample. + down_block_types (`Tuple[str]`, *optional*, defaults to `("FlaxCrossAttnDownBlock2D", "FlaxCrossAttnDownBlock2D", "FlaxCrossAttnDownBlock2D", "FlaxDownBlock2D")`): + The tuple of downsample blocks to use. + block_out_channels (`Tuple[int]`, *optional*, defaults to `(320, 640, 1280, 1280)`): + The tuple of output channels for each block. + layers_per_block (`int`, *optional*, defaults to 2): + The number of layers per block. + attention_head_dim (`int` or `Tuple[int]`, *optional*, defaults to 8): + The dimension of the attention heads. + num_attention_heads (`int` or `Tuple[int]`, *optional*): + The number of attention heads. + cross_attention_dim (`int`, *optional*, defaults to 768): + The dimension of the cross attention features. + dropout (`float`, *optional*, defaults to 0): + Dropout probability for down, up and bottleneck blocks. + flip_sin_to_cos (`bool`, *optional*, defaults to `True`): + Whether to flip the sin to cos in the time embedding. + freq_shift (`int`, *optional*, defaults to 0): The frequency shift to apply to the time embedding. + controlnet_conditioning_channel_order (`str`, *optional*, defaults to `rgb`): + The channel order of conditional image. Will convert to `rgb` if it's `bgr`. + conditioning_embedding_out_channels (`tuple`, *optional*, defaults to `(16, 32, 96, 256)`): + The tuple of output channel for each block in the `conditioning_embedding` layer. + """ + + sample_size: int = 32 + in_channels: int = 4 + down_block_types: Tuple[str, ...] = ( + "CrossAttnDownBlock2D", + "CrossAttnDownBlock2D", + "CrossAttnDownBlock2D", + "DownBlock2D", + ) + only_cross_attention: Union[bool, Tuple[bool, ...]] = False + block_out_channels: Tuple[int, ...] = (320, 640, 1280, 1280) + layers_per_block: int = 2 + attention_head_dim: Union[int, Tuple[int, ...]] = 8 + num_attention_heads: Optional[Union[int, Tuple[int, ...]]] = None + cross_attention_dim: int = 1280 + dropout: float = 0.0 + use_linear_projection: bool = False + dtype: jnp.dtype = jnp.float32 + flip_sin_to_cos: bool = True + freq_shift: int = 0 + controlnet_conditioning_channel_order: str = "rgb" + conditioning_embedding_out_channels: Tuple[int, ...] = (16, 32, 96, 256) + + def init_weights(self, rng: jax.Array) -> FrozenDict: + # init input tensors + sample_shape = (1, self.in_channels, self.sample_size, self.sample_size) + sample = jnp.zeros(sample_shape, dtype=jnp.float32) + timesteps = jnp.ones((1,), dtype=jnp.int32) + encoder_hidden_states = jnp.zeros((1, 1, self.cross_attention_dim), dtype=jnp.float32) + controlnet_cond_shape = (1, 3, self.sample_size * 8, self.sample_size * 8) + controlnet_cond = jnp.zeros(controlnet_cond_shape, dtype=jnp.float32) + + params_rng, dropout_rng = jax.random.split(rng) + rngs = {"params": params_rng, "dropout": dropout_rng} + + return self.init(rngs, sample, timesteps, encoder_hidden_states, controlnet_cond)["params"] + + def setup(self) -> None: + block_out_channels = self.block_out_channels + time_embed_dim = block_out_channels[0] * 4 + + # If `num_attention_heads` is not defined (which is the case for most models) + # it will default to `attention_head_dim`. This looks weird upon first reading it and it is. + # The reason for this behavior is to correct for incorrectly named variables that were introduced + # when this library was created. The incorrect naming was only discovered much later in https://github.com/huggingface/diffusers/issues/2011#issuecomment-1547958131 + # Changing `attention_head_dim` to `num_attention_heads` for 40,000+ configurations is too backwards breaking + # which is why we correct for the naming here. + num_attention_heads = self.num_attention_heads or self.attention_head_dim + + # input + self.conv_in = nn.Conv( + block_out_channels[0], + kernel_size=(3, 3), + strides=(1, 1), + padding=((1, 1), (1, 1)), + dtype=self.dtype, + ) + + # time + self.time_proj = FlaxTimesteps( + block_out_channels[0], flip_sin_to_cos=self.flip_sin_to_cos, freq_shift=self.config.freq_shift + ) + self.time_embedding = FlaxTimestepEmbedding(time_embed_dim, dtype=self.dtype) + + self.controlnet_cond_embedding = FlaxControlNetConditioningEmbedding( + conditioning_embedding_channels=block_out_channels[0], + block_out_channels=self.conditioning_embedding_out_channels, + ) + + only_cross_attention = self.only_cross_attention + if isinstance(only_cross_attention, bool): + only_cross_attention = (only_cross_attention,) * len(self.down_block_types) + + if isinstance(num_attention_heads, int): + num_attention_heads = (num_attention_heads,) * len(self.down_block_types) + + # down + down_blocks = [] + controlnet_down_blocks = [] + + output_channel = block_out_channels[0] + + controlnet_block = nn.Conv( + output_channel, + kernel_size=(1, 1), + padding="VALID", + kernel_init=nn.initializers.zeros_init(), + bias_init=nn.initializers.zeros_init(), + dtype=self.dtype, + ) + controlnet_down_blocks.append(controlnet_block) + + for i, down_block_type in enumerate(self.down_block_types): + input_channel = output_channel + output_channel = block_out_channels[i] + is_final_block = i == len(block_out_channels) - 1 + + if down_block_type == "CrossAttnDownBlock2D": + down_block = FlaxCrossAttnDownBlock2D( + in_channels=input_channel, + out_channels=output_channel, + dropout=self.dropout, + num_layers=self.layers_per_block, + num_attention_heads=num_attention_heads[i], + add_downsample=not is_final_block, + use_linear_projection=self.use_linear_projection, + only_cross_attention=only_cross_attention[i], + dtype=self.dtype, + ) + else: + down_block = FlaxDownBlock2D( + in_channels=input_channel, + out_channels=output_channel, + dropout=self.dropout, + num_layers=self.layers_per_block, + add_downsample=not is_final_block, + dtype=self.dtype, + ) + + down_blocks.append(down_block) + + for _ in range(self.layers_per_block): + controlnet_block = nn.Conv( + output_channel, + kernel_size=(1, 1), + padding="VALID", + kernel_init=nn.initializers.zeros_init(), + bias_init=nn.initializers.zeros_init(), + dtype=self.dtype, + ) + controlnet_down_blocks.append(controlnet_block) + + if not is_final_block: + controlnet_block = nn.Conv( + output_channel, + kernel_size=(1, 1), + padding="VALID", + kernel_init=nn.initializers.zeros_init(), + bias_init=nn.initializers.zeros_init(), + dtype=self.dtype, + ) + controlnet_down_blocks.append(controlnet_block) + + self.down_blocks = down_blocks + self.controlnet_down_blocks = controlnet_down_blocks + + # mid + mid_block_channel = block_out_channels[-1] + self.mid_block = FlaxUNetMidBlock2DCrossAttn( + in_channels=mid_block_channel, + dropout=self.dropout, + num_attention_heads=num_attention_heads[-1], + use_linear_projection=self.use_linear_projection, + dtype=self.dtype, + ) + + self.controlnet_mid_block = nn.Conv( + mid_block_channel, + kernel_size=(1, 1), + padding="VALID", + kernel_init=nn.initializers.zeros_init(), + bias_init=nn.initializers.zeros_init(), + dtype=self.dtype, + ) + + def __call__( + self, + sample: jnp.ndarray, + timesteps: Union[jnp.ndarray, float, int], + encoder_hidden_states: jnp.ndarray, + controlnet_cond: jnp.ndarray, + conditioning_scale: float = 1.0, + return_dict: bool = True, + train: bool = False, + ) -> Union[FlaxControlNetOutput, Tuple[Tuple[jnp.ndarray, ...], jnp.ndarray]]: + r""" + Args: + sample (`jnp.ndarray`): (batch, channel, height, width) noisy inputs tensor + timestep (`jnp.ndarray` or `float` or `int`): timesteps + encoder_hidden_states (`jnp.ndarray`): (batch_size, sequence_length, hidden_size) encoder hidden states + controlnet_cond (`jnp.ndarray`): (batch, channel, height, width) the conditional input tensor + conditioning_scale (`float`, *optional*, defaults to `1.0`): the scale factor for controlnet outputs + return_dict (`bool`, *optional*, defaults to `True`): + Whether or not to return a [`models.unets.unet_2d_condition_flax.FlaxUNet2DConditionOutput`] instead of + a plain tuple. + train (`bool`, *optional*, defaults to `False`): + Use deterministic functions and disable dropout when not training. + + Returns: + [`~models.unets.unet_2d_condition_flax.FlaxUNet2DConditionOutput`] or `tuple`: + [`~models.unets.unet_2d_condition_flax.FlaxUNet2DConditionOutput`] if `return_dict` is True, otherwise + a `tuple`. When returning a tuple, the first element is the sample tensor. + """ + channel_order = self.controlnet_conditioning_channel_order + if channel_order == "bgr": + controlnet_cond = jnp.flip(controlnet_cond, axis=1) + + # 1. time + if not isinstance(timesteps, jnp.ndarray): + timesteps = jnp.array([timesteps], dtype=jnp.int32) + elif isinstance(timesteps, jnp.ndarray) and len(timesteps.shape) == 0: + timesteps = timesteps.astype(dtype=jnp.float32) + timesteps = jnp.expand_dims(timesteps, 0) + + t_emb = self.time_proj(timesteps) + t_emb = self.time_embedding(t_emb) + + # 2. pre-process + sample = jnp.transpose(sample, (0, 2, 3, 1)) + sample = self.conv_in(sample) + + controlnet_cond = jnp.transpose(controlnet_cond, (0, 2, 3, 1)) + controlnet_cond = self.controlnet_cond_embedding(controlnet_cond) + sample += controlnet_cond + + # 3. down + down_block_res_samples = (sample,) + for down_block in self.down_blocks: + if isinstance(down_block, FlaxCrossAttnDownBlock2D): + sample, res_samples = down_block(sample, t_emb, encoder_hidden_states, deterministic=not train) + else: + sample, res_samples = down_block(sample, t_emb, deterministic=not train) + down_block_res_samples += res_samples + + # 4. mid + sample = self.mid_block(sample, t_emb, encoder_hidden_states, deterministic=not train) + + # 5. contronet blocks + controlnet_down_block_res_samples = () + for down_block_res_sample, controlnet_block in zip(down_block_res_samples, self.controlnet_down_blocks): + down_block_res_sample = controlnet_block(down_block_res_sample) + controlnet_down_block_res_samples += (down_block_res_sample,) + + down_block_res_samples = controlnet_down_block_res_samples + + mid_block_res_sample = self.controlnet_mid_block(sample) + + # 6. scaling + down_block_res_samples = [sample * conditioning_scale for sample in down_block_res_samples] + mid_block_res_sample *= conditioning_scale + + if not return_dict: + return (down_block_res_samples, mid_block_res_sample) + + return FlaxControlNetOutput( + down_block_res_samples=down_block_res_samples, mid_block_res_sample=mid_block_res_sample + )