From 0599130c0d036246ff1e80d652bd8aef0e3b5465 Mon Sep 17 00:00:00 2001 From: blueloveTH Date: Fri, 23 Feb 2024 01:27:48 +0800 Subject: [PATCH] fix https://github.com/pocketpy/pocketpy/issues/211 --- amalgamate.py | 2 +- cmake_build.py | 2 ++ include/pocketpy/_generated.h | 2 +- python/cmath.py | 7 +++---- src/str.cpp | 7 +++++-- tests/10_cmath.py | 13 ++++++++++++- 6 files changed, 24 insertions(+), 9 deletions(-) diff --git a/amalgamate.py b/amalgamate.py index 0dd8dd34..bd22679f 100644 --- a/amalgamate.py +++ b/amalgamate.py @@ -1,6 +1,6 @@ import os -os.system("python3 prebuild.py") +assert os.system("python prebuild.py") == 0 with open("include/pocketpy/opcodes.h", "rt", encoding='utf-8') as f: OPCODES_TEXT = '\n' + f.read() + '\n' diff --git a/cmake_build.py b/cmake_build.py index dcb82fce..8cb2b375 100644 --- a/cmake_build.py +++ b/cmake_build.py @@ -2,6 +2,8 @@ import os import sys import shutil +assert os.system("python prebuild.py") == 0 + if not os.path.exists("build"): os.mkdir("build") diff --git a/include/pocketpy/_generated.h b/include/pocketpy/_generated.h index 08836db7..db8dbe4b 100644 --- a/include/pocketpy/_generated.h +++ b/include/pocketpy/_generated.h @@ -10,7 +10,7 @@ namespace pkpy{ {"_set", "\x63\x6c\x61\x73\x73\x20\x73\x65\x74\x3a\x0a\x20\x20\x20\x20\x64\x65\x66\x20\x5f\x5f\x69\x6e\x69\x74\x5f\x5f\x28\x73\x65\x6c\x66\x2c\x20\x69\x74\x65\x72\x61\x62\x6c\x65\x3d\x4e\x6f\x6e\x65\x29\x3a\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x69\x74\x65\x72\x61\x62\x6c\x65\x20\x3d\x20\x69\x74\x65\x72\x61\x62\x6c\x65\x20\x6f\x72\x20\x5b\x5d\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x73\x65\x6c\x66\x2e\x5f\x61\x20\x3d\x20\x7b\x7d\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x66\x6f\x72\x20\x69\x74\x65\x6d\x20\x69\x6e\x20\x69\x74\x65\x72\x61\x62\x6c\x65\x3a\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x73\x65\x6c\x66\x2e\x61\x64\x64\x28\x69\x74\x65\x6d\x29\x0a\x0a\x20\x20\x20\x20\x64\x65\x66\x20\x61\x64\x64\x28\x73\x65\x6c\x66\x2c\x20\x65\x6c\x65\x6d\x29\x3a\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x73\x65\x6c\x66\x2e\x5f\x61\x5b\x65\x6c\x65\x6d\x5d\x20\x3d\x20\x4e\x6f\x6e\x65\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x0a\x20\x20\x20\x20\x64\x65\x66\x20\x64\x69\x73\x63\x61\x72\x64\x28\x73\x65\x6c\x66\x2c\x20\x65\x6c\x65\x6d\x29\x3a\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x69\x66\x20\x65\x6c\x65\x6d\x20\x69\x6e\x20\x73\x65\x6c\x66\x2e\x5f\x61\x3a\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x64\x65\x6c\x20\x73\x65\x6c\x66\x2e\x5f\x61\x5b\x65\x6c\x65\x6d\x5d\x0a\x0a\x20\x20\x20\x20\x64\x65\x66\x20\x72\x65\x6d\x6f\x76\x65\x28\x73\x65\x6c\x66\x2c\x20\x65\x6c\x65\x6d\x29\x3a\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x64\x65\x6c\x20\x73\x65\x6c\x66\x2e\x5f\x61\x5b\x65\x6c\x65\x6d\x5d\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x0a\x20\x20\x20\x20\x64\x65\x66\x20\x63\x6c\x65\x61\x72\x28\x73\x65\x6c\x66\x29\x3a\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x73\x65\x6c\x66\x2e\x5f\x61\x2e\x63\x6c\x65\x61\x72\x28\x29\x0a\x0a\x20\x20\x20\x20\x64\x65\x66\x20\x75\x70\x64\x61\x74\x65\x28\x73\x65\x6c\x66\x2c\x6f\x74\x68\x65\x72\x29\x3a\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x66\x6f\x72\x20\x65\x6c\x65\x6d\x20\x69\x6e\x20\x6f\x74\x68\x65\x72\x3a\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x73\x65\x6c\x66\x2e\x61\x64\x64\x28\x65\x6c\x65\x6d\x29\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x72\x65\x74\x75\x72\x6e\x20\x73\x65\x6c\x66\x0a\x0a\x20\x20\x20\x20\x64\x65\x66\x20\x5f\x5f\x6c\x65\x6e\x5f\x5f\x28\x73\x65\x6c\x66\x29\x3a\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x72\x65\x74\x75\x72\x6e\x20\x6c\x65\x6e\x28\x73\x65\x6c\x66\x2e\x5f\x61\x29\x0a\x20\x20\x20\x20\x0a\x20\x20\x20\x20\x64\x65\x66\x20\x63\x6f\x70\x79\x28\x73\x65\x6c\x66\x29\x3a\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x72\x65\x74\x75\x72\x6e\x20\x73\x65\x74\x28\x73\x65\x6c\x66\x2e\x5f\x61\x2e\x6b\x65\x79\x73\x28\x29\x29\x0a\x20\x20\x20\x20\x0a\x20\x20\x20\x20\x64\x65\x66\x20\x5f\x5f\x61\x6e\x64\x5f\x5f\x28\x73\x65\x6c\x66\x2c\x20\x6f\x74\x68\x65\x72\x29\x3a\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x72\x65\x74\x20\x3d\x20\x73\x65\x74\x28\x29\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x66\x6f\x72\x20\x65\x6c\x65\x6d\x20\x69\x6e\x20\x73\x65\x6c\x66\x3a\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x69\x66\x20\x65\x6c\x65\x6d\x20\x69\x6e\x20\x6f\x74\x68\x65\x72\x3a\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x72\x65\x74\x2e\x61\x64\x64\x28\x65\x6c\x65\x6d\x29\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x72\x65\x74\x75\x72\x6e\x20\x72\x65\x74\x0a\x20\x20\x20\x20\x0a\x20\x20\x20\x20\x64\x65\x66\x20\x5f\x5f\x6f\x72\x5f\x5f\x28\x73\x65\x6c\x66\x2c\x20\x6f\x74\x68\x65\x72\x29\x3a\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x72\x65\x74\x20\x3d\x20\x73\x65\x6c\x66\x2e\x63\x6f\x70\x79\x28\x29\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x66\x6f\x72\x20\x65\x6c\x65\x6d\x20\x69\x6e\x20\x6f\x74\x68\x65\x72\x3a\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x72\x65\x74\x2e\x61\x64\x64\x28\x65\x6c\x65\x6d\x29\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x72\x65\x74\x75\x72\x6e\x20\x72\x65\x74\x0a\x0a\x20\x20\x20\x20\x64\x65\x66\x20\x5f\x5f\x73\x75\x62\x5f\x5f\x28\x73\x65\x6c\x66\x2c\x20\x6f\x74\x68\x65\x72\x29\x3a\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x72\x65\x74\x20\x3d\x20\x73\x65\x74\x28\x29\x20\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x66\x6f\x72\x20\x65\x6c\x65\x6d\x20\x69\x6e\x20\x73\x65\x6c\x66\x3a\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x69\x66\x20\x65\x6c\x65\x6d\x20\x6e\x6f\x74\x20\x69\x6e\x20\x6f\x74\x68\x65\x72\x3a\x20\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x72\x65\x74\x2e\x61\x64\x64\x28\x65\x6c\x65\x6d\x29\x20\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x72\x65\x74\x75\x72\x6e\x20\x72\x65\x74\x0a\x20\x20\x20\x20\x0a\x20\x20\x20\x20\x64\x65\x66\x20\x5f\x5f\x78\x6f\x72\x5f\x5f\x28\x73\x65\x6c\x66\x2c\x20\x6f\x74\x68\x65\x72\x29\x3a\x20\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x72\x65\x74\x20\x3d\x20\x73\x65\x74\x28\x29\x20\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x66\x6f\x72\x20\x65\x6c\x65\x6d\x20\x69\x6e\x20\x73\x65\x6c\x66\x3a\x20\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x69\x66\x20\x65\x6c\x65\x6d\x20\x6e\x6f\x74\x20\x69\x6e\x20\x6f\x74\x68\x65\x72\x3a\x20\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x72\x65\x74\x2e\x61\x64\x64\x28\x65\x6c\x65\x6d\x29\x20\x0a\x20\x20\x20\x20\x20\x20\x20\x20" "\x66\x6f\x72\x20\x65\x6c\x65\x6d\x20\x69\x6e\x20\x6f\x74\x68\x65\x72\x3a\x20\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x69\x66\x20\x65\x6c\x65\x6d\x20\x6e\x6f\x74\x20\x69\x6e\x20\x73\x65\x6c\x66\x3a\x20\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x72\x65\x74\x2e\x61\x64\x64\x28\x65\x6c\x65\x6d\x29\x20\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x72\x65\x74\x75\x72\x6e\x20\x72\x65\x74\x0a\x0a\x20\x20\x20\x20\x64\x65\x66\x20\x75\x6e\x69\x6f\x6e\x28\x73\x65\x6c\x66\x2c\x20\x6f\x74\x68\x65\x72\x29\x3a\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x72\x65\x74\x75\x72\x6e\x20\x73\x65\x6c\x66\x20\x7c\x20\x6f\x74\x68\x65\x72\x0a\x0a\x20\x20\x20\x20\x64\x65\x66\x20\x69\x6e\x74\x65\x72\x73\x65\x63\x74\x69\x6f\x6e\x28\x73\x65\x6c\x66\x2c\x20\x6f\x74\x68\x65\x72\x29\x3a\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x72\x65\x74\x75\x72\x6e\x20\x73\x65\x6c\x66\x20\x26\x20\x6f\x74\x68\x65\x72\x0a\x0a\x20\x20\x20\x20\x64\x65\x66\x20\x64\x69\x66\x66\x65\x72\x65\x6e\x63\x65\x28\x73\x65\x6c\x66\x2c\x20\x6f\x74\x68\x65\x72\x29\x3a\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x72\x65\x74\x75\x72\x6e\x20\x73\x65\x6c\x66\x20\x2d\x20\x6f\x74\x68\x65\x72\x0a\x0a\x20\x20\x20\x20\x64\x65\x66\x20\x73\x79\x6d\x6d\x65\x74\x72\x69\x63\x5f\x64\x69\x66\x66\x65\x72\x65\x6e\x63\x65\x28\x73\x65\x6c\x66\x2c\x20\x6f\x74\x68\x65\x72\x29\x3a\x20\x20\x20\x20\x20\x20\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x72\x65\x74\x75\x72\x6e\x20\x73\x65\x6c\x66\x20\x5e\x20\x6f\x74\x68\x65\x72\x0a\x20\x20\x20\x20\x0a\x20\x20\x20\x20\x64\x65\x66\x20\x5f\x5f\x65\x71\x5f\x5f\x28\x73\x65\x6c\x66\x2c\x20\x6f\x74\x68\x65\x72\x29\x3a\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x72\x65\x74\x75\x72\x6e\x20\x73\x65\x6c\x66\x2e\x5f\x5f\x78\x6f\x72\x5f\x5f\x28\x6f\x74\x68\x65\x72\x29\x2e\x5f\x5f\x6c\x65\x6e\x5f\x5f\x28\x29\x20\x3d\x3d\x20\x30\x0a\x0a\x20\x20\x20\x20\x64\x65\x66\x20\x69\x73\x64\x69\x73\x6a\x6f\x69\x6e\x74\x28\x73\x65\x6c\x66\x2c\x20\x6f\x74\x68\x65\x72\x29\x3a\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x72\x65\x74\x75\x72\x6e\x20\x73\x65\x6c\x66\x2e\x5f\x5f\x61\x6e\x64\x5f\x5f\x28\x6f\x74\x68\x65\x72\x29\x2e\x5f\x5f\x6c\x65\x6e\x5f\x5f\x28\x29\x20\x3d\x3d\x20\x30\x0a\x20\x20\x20\x20\x0a\x20\x20\x20\x20\x64\x65\x66\x20\x69\x73\x73\x75\x62\x73\x65\x74\x28\x73\x65\x6c\x66\x2c\x20\x6f\x74\x68\x65\x72\x29\x3a\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x72\x65\x74\x75\x72\x6e\x20\x73\x65\x6c\x66\x2e\x5f\x5f\x73\x75\x62\x5f\x5f\x28\x6f\x74\x68\x65\x72\x29\x2e\x5f\x5f\x6c\x65\x6e\x5f\x5f\x28\x29\x20\x3d\x3d\x20\x30\x0a\x20\x20\x20\x20\x0a\x20\x20\x20\x20\x64\x65\x66\x20\x69\x73\x73\x75\x70\x65\x72\x73\x65\x74\x28\x73\x65\x6c\x66\x2c\x20\x6f\x74\x68\x65\x72\x29\x3a\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x72\x65\x74\x75\x72\x6e\x20\x6f\x74\x68\x65\x72\x2e\x5f\x5f\x73\x75\x62\x5f\x5f\x28\x73\x65\x6c\x66\x29\x2e\x5f\x5f\x6c\x65\x6e\x5f\x5f\x28\x29\x20\x3d\x3d\x20\x30\x0a\x0a\x20\x20\x20\x20\x64\x65\x66\x20\x5f\x5f\x63\x6f\x6e\x74\x61\x69\x6e\x73\x5f\x5f\x28\x73\x65\x6c\x66\x2c\x20\x65\x6c\x65\x6d\x29\x3a\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x72\x65\x74\x75\x72\x6e\x20\x65\x6c\x65\x6d\x20\x69\x6e\x20\x73\x65\x6c\x66\x2e\x5f\x61\x0a\x20\x20\x20\x20\x0a\x20\x20\x20\x20\x64\x65\x66\x20\x5f\x5f\x72\x65\x70\x72\x5f\x5f\x28\x73\x65\x6c\x66\x29\x3a\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x69\x66\x20\x6c\x65\x6e\x28\x73\x65\x6c\x66\x29\x20\x3d\x3d\x20\x30\x3a\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x72\x65\x74\x75\x72\x6e\x20\x27\x73\x65\x74\x28\x29\x27\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x72\x65\x74\x75\x72\x6e\x20\x27\x7b\x27\x2b\x20\x27\x2c\x20\x27\x2e\x6a\x6f\x69\x6e\x28\x5b\x72\x65\x70\x72\x28\x69\x29\x20\x66\x6f\x72\x20\x69\x20\x69\x6e\x20\x73\x65\x6c\x66\x2e\x5f\x61\x2e\x6b\x65\x79\x73\x28\x29\x5d\x29\x20\x2b\x20\x27\x7d\x27\x0a\x20\x20\x20\x20\x0a\x20\x20\x20\x20\x64\x65\x66\x20\x5f\x5f\x69\x74\x65\x72\x5f\x5f\x28\x73\x65\x6c\x66\x29\x3a\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x72\x65\x74\x75\x72\x6e\x20\x69\x74\x65\x72\x28\x73\x65\x6c\x66\x2e\x5f\x61\x2e\x6b\x65\x79\x73\x28\x29\x29" }, {"bisect", "\x22\x22\x22\x42\x69\x73\x65\x63\x74\x69\x6f\x6e\x20\x61\x6c\x67\x6f\x72\x69\x74\x68\x6d\x73\x2e\x22\x22\x22\x0a\x0a\x64\x65\x66\x20\x69\x6e\x73\x6f\x72\x74\x5f\x72\x69\x67\x68\x74\x28\x61\x2c\x20\x78\x2c\x20\x6c\x6f\x3d\x30\x2c\x20\x68\x69\x3d\x4e\x6f\x6e\x65\x29\x3a\x0a\x20\x20\x20\x20\x22\x22\x22\x49\x6e\x73\x65\x72\x74\x20\x69\x74\x65\x6d\x20\x78\x20\x69\x6e\x20\x6c\x69\x73\x74\x20\x61\x2c\x20\x61\x6e\x64\x20\x6b\x65\x65\x70\x20\x69\x74\x20\x73\x6f\x72\x74\x65\x64\x20\x61\x73\x73\x75\x6d\x69\x6e\x67\x20\x61\x20\x69\x73\x20\x73\x6f\x72\x74\x65\x64\x2e\x0a\x0a\x20\x20\x20\x20\x49\x66\x20\x78\x20\x69\x73\x20\x61\x6c\x72\x65\x61\x64\x79\x20\x69\x6e\x20\x61\x2c\x20\x69\x6e\x73\x65\x72\x74\x20\x69\x74\x20\x74\x6f\x20\x74\x68\x65\x20\x72\x69\x67\x68\x74\x20\x6f\x66\x20\x74\x68\x65\x20\x72\x69\x67\x68\x74\x6d\x6f\x73\x74\x20\x78\x2e\x0a\x0a\x20\x20\x20\x20\x4f\x70\x74\x69\x6f\x6e\x61\x6c\x20\x61\x72\x67\x73\x20\x6c\x6f\x20\x28\x64\x65\x66\x61\x75\x6c\x74\x20\x30\x29\x20\x61\x6e\x64\x20\x68\x69\x20\x28\x64\x65\x66\x61\x75\x6c\x74\x20\x6c\x65\x6e\x28\x61\x29\x29\x20\x62\x6f\x75\x6e\x64\x20\x74\x68\x65\x0a\x20\x20\x20\x20\x73\x6c\x69\x63\x65\x20\x6f\x66\x20\x61\x20\x74\x6f\x20\x62\x65\x20\x73\x65\x61\x72\x63\x68\x65\x64\x2e\x0a\x20\x20\x20\x20\x22\x22\x22\x0a\x0a\x20\x20\x20\x20\x6c\x6f\x20\x3d\x20\x62\x69\x73\x65\x63\x74\x5f\x72\x69\x67\x68\x74\x28\x61\x2c\x20\x78\x2c\x20\x6c\x6f\x2c\x20\x68\x69\x29\x0a\x20\x20\x20\x20\x61\x2e\x69\x6e\x73\x65\x72\x74\x28\x6c\x6f\x2c\x20\x78\x29\x0a\x0a\x64\x65\x66\x20\x62\x69\x73\x65\x63\x74\x5f\x72\x69\x67\x68\x74\x28\x61\x2c\x20\x78\x2c\x20\x6c\x6f\x3d\x30\x2c\x20\x68\x69\x3d\x4e\x6f\x6e\x65\x29\x3a\x0a\x20\x20\x20\x20\x22\x22\x22\x52\x65\x74\x75\x72\x6e\x20\x74\x68\x65\x20\x69\x6e\x64\x65\x78\x20\x77\x68\x65\x72\x65\x20\x74\x6f\x20\x69\x6e\x73\x65\x72\x74\x20\x69\x74\x65\x6d\x20\x78\x20\x69\x6e\x20\x6c\x69\x73\x74\x20\x61\x2c\x20\x61\x73\x73\x75\x6d\x69\x6e\x67\x20\x61\x20\x69\x73\x20\x73\x6f\x72\x74\x65\x64\x2e\x0a\x0a\x20\x20\x20\x20\x54\x68\x65\x20\x72\x65\x74\x75\x72\x6e\x20\x76\x61\x6c\x75\x65\x20\x69\x20\x69\x73\x20\x73\x75\x63\x68\x20\x74\x68\x61\x74\x20\x61\x6c\x6c\x20\x65\x20\x69\x6e\x20\x61\x5b\x3a\x69\x5d\x20\x68\x61\x76\x65\x20\x65\x20\x3c\x3d\x20\x78\x2c\x20\x61\x6e\x64\x20\x61\x6c\x6c\x20\x65\x20\x69\x6e\x0a\x20\x20\x20\x20\x61\x5b\x69\x3a\x5d\x20\x68\x61\x76\x65\x20\x65\x20\x3e\x20\x78\x2e\x20\x20\x53\x6f\x20\x69\x66\x20\x78\x20\x61\x6c\x72\x65\x61\x64\x79\x20\x61\x70\x70\x65\x61\x72\x73\x20\x69\x6e\x20\x74\x68\x65\x20\x6c\x69\x73\x74\x2c\x20\x61\x2e\x69\x6e\x73\x65\x72\x74\x28\x78\x29\x20\x77\x69\x6c\x6c\x0a\x20\x20\x20\x20\x69\x6e\x73\x65\x72\x74\x20\x6a\x75\x73\x74\x20\x61\x66\x74\x65\x72\x20\x74\x68\x65\x20\x72\x69\x67\x68\x74\x6d\x6f\x73\x74\x20\x78\x20\x61\x6c\x72\x65\x61\x64\x79\x20\x74\x68\x65\x72\x65\x2e\x0a\x0a\x20\x20\x20\x20\x4f\x70\x74\x69\x6f\x6e\x61\x6c\x20\x61\x72\x67\x73\x20\x6c\x6f\x20\x28\x64\x65\x66\x61\x75\x6c\x74\x20\x30\x29\x20\x61\x6e\x64\x20\x68\x69\x20\x28\x64\x65\x66\x61\x75\x6c\x74\x20\x6c\x65\x6e\x28\x61\x29\x29\x20\x62\x6f\x75\x6e\x64\x20\x74\x68\x65\x0a\x20\x20\x20\x20\x73\x6c\x69\x63\x65\x20\x6f\x66\x20\x61\x20\x74\x6f\x20\x62\x65\x20\x73\x65\x61\x72\x63\x68\x65\x64\x2e\x0a\x20\x20\x20\x20\x22\x22\x22\x0a\x0a\x20\x20\x20\x20\x69\x66\x20\x6c\x6f\x20\x3c\x20\x30\x3a\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x72\x61\x69\x73\x65\x20\x56\x61\x6c\x75\x65\x45\x72\x72\x6f\x72\x28\x27\x6c\x6f\x20\x6d\x75\x73\x74\x20\x62\x65\x20\x6e\x6f\x6e\x2d\x6e\x65\x67\x61\x74\x69\x76\x65\x27\x29\x0a\x20\x20\x20\x20\x69\x66\x20\x68\x69\x20\x69\x73\x20\x4e\x6f\x6e\x65\x3a\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x68\x69\x20\x3d\x20\x6c\x65\x6e\x28\x61\x29\x0a\x20\x20\x20\x20\x77\x68\x69\x6c\x65\x20\x6c\x6f\x20\x3c\x20\x68\x69\x3a\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x6d\x69\x64\x20\x3d\x20\x28\x6c\x6f\x2b\x68\x69\x29\x2f\x2f\x32\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x69\x66\x20\x78\x20\x3c\x20\x61\x5b\x6d\x69\x64\x5d\x3a\x20\x68\x69\x20\x3d\x20\x6d\x69\x64\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x65\x6c\x73\x65\x3a\x20\x6c\x6f\x20\x3d\x20\x6d\x69\x64\x2b\x31\x0a\x20\x20\x20\x20\x72\x65\x74\x75\x72\x6e\x20\x6c\x6f\x0a\x0a\x64\x65\x66\x20\x69\x6e\x73\x6f\x72\x74\x5f\x6c\x65\x66\x74\x28\x61\x2c\x20\x78\x2c\x20\x6c\x6f\x3d\x30\x2c\x20\x68\x69\x3d\x4e\x6f\x6e\x65\x29\x3a\x0a\x20\x20\x20\x20\x22\x22\x22\x49\x6e\x73\x65\x72\x74\x20\x69\x74\x65\x6d\x20\x78\x20\x69\x6e\x20\x6c\x69\x73\x74\x20\x61\x2c\x20\x61\x6e\x64\x20\x6b\x65\x65\x70\x20\x69\x74\x20\x73\x6f\x72\x74\x65\x64\x20\x61\x73\x73\x75\x6d\x69\x6e\x67\x20\x61\x20\x69\x73\x20\x73\x6f\x72\x74\x65\x64\x2e\x0a\x0a\x20\x20\x20\x20\x49\x66\x20\x78\x20\x69\x73\x20\x61\x6c\x72\x65\x61\x64\x79\x20\x69\x6e\x20\x61\x2c\x20\x69\x6e\x73\x65\x72\x74\x20\x69\x74\x20\x74\x6f\x20\x74\x68\x65\x20\x6c\x65\x66\x74\x20\x6f\x66\x20\x74\x68\x65\x20\x6c\x65\x66\x74\x6d\x6f\x73\x74\x20\x78\x2e\x0a\x0a\x20\x20\x20\x20\x4f\x70\x74\x69\x6f\x6e\x61\x6c\x20\x61\x72\x67\x73\x20\x6c\x6f\x20\x28\x64\x65\x66\x61\x75\x6c\x74\x20\x30\x29\x20\x61\x6e\x64\x20" "\x68\x69\x20\x28\x64\x65\x66\x61\x75\x6c\x74\x20\x6c\x65\x6e\x28\x61\x29\x29\x20\x62\x6f\x75\x6e\x64\x20\x74\x68\x65\x0a\x20\x20\x20\x20\x73\x6c\x69\x63\x65\x20\x6f\x66\x20\x61\x20\x74\x6f\x20\x62\x65\x20\x73\x65\x61\x72\x63\x68\x65\x64\x2e\x0a\x20\x20\x20\x20\x22\x22\x22\x0a\x0a\x20\x20\x20\x20\x6c\x6f\x20\x3d\x20\x62\x69\x73\x65\x63\x74\x5f\x6c\x65\x66\x74\x28\x61\x2c\x20\x78\x2c\x20\x6c\x6f\x2c\x20\x68\x69\x29\x0a\x20\x20\x20\x20\x61\x2e\x69\x6e\x73\x65\x72\x74\x28\x6c\x6f\x2c\x20\x78\x29\x0a\x0a\x0a\x64\x65\x66\x20\x62\x69\x73\x65\x63\x74\x5f\x6c\x65\x66\x74\x28\x61\x2c\x20\x78\x2c\x20\x6c\x6f\x3d\x30\x2c\x20\x68\x69\x3d\x4e\x6f\x6e\x65\x29\x3a\x0a\x20\x20\x20\x20\x22\x22\x22\x52\x65\x74\x75\x72\x6e\x20\x74\x68\x65\x20\x69\x6e\x64\x65\x78\x20\x77\x68\x65\x72\x65\x20\x74\x6f\x20\x69\x6e\x73\x65\x72\x74\x20\x69\x74\x65\x6d\x20\x78\x20\x69\x6e\x20\x6c\x69\x73\x74\x20\x61\x2c\x20\x61\x73\x73\x75\x6d\x69\x6e\x67\x20\x61\x20\x69\x73\x20\x73\x6f\x72\x74\x65\x64\x2e\x0a\x0a\x20\x20\x20\x20\x54\x68\x65\x20\x72\x65\x74\x75\x72\x6e\x20\x76\x61\x6c\x75\x65\x20\x69\x20\x69\x73\x20\x73\x75\x63\x68\x20\x74\x68\x61\x74\x20\x61\x6c\x6c\x20\x65\x20\x69\x6e\x20\x61\x5b\x3a\x69\x5d\x20\x68\x61\x76\x65\x20\x65\x20\x3c\x20\x78\x2c\x20\x61\x6e\x64\x20\x61\x6c\x6c\x20\x65\x20\x69\x6e\x0a\x20\x20\x20\x20\x61\x5b\x69\x3a\x5d\x20\x68\x61\x76\x65\x20\x65\x20\x3e\x3d\x20\x78\x2e\x20\x20\x53\x6f\x20\x69\x66\x20\x78\x20\x61\x6c\x72\x65\x61\x64\x79\x20\x61\x70\x70\x65\x61\x72\x73\x20\x69\x6e\x20\x74\x68\x65\x20\x6c\x69\x73\x74\x2c\x20\x61\x2e\x69\x6e\x73\x65\x72\x74\x28\x78\x29\x20\x77\x69\x6c\x6c\x0a\x20\x20\x20\x20\x69\x6e\x73\x65\x72\x74\x20\x6a\x75\x73\x74\x20\x62\x65\x66\x6f\x72\x65\x20\x74\x68\x65\x20\x6c\x65\x66\x74\x6d\x6f\x73\x74\x20\x78\x20\x61\x6c\x72\x65\x61\x64\x79\x20\x74\x68\x65\x72\x65\x2e\x0a\x0a\x20\x20\x20\x20\x4f\x70\x74\x69\x6f\x6e\x61\x6c\x20\x61\x72\x67\x73\x20\x6c\x6f\x20\x28\x64\x65\x66\x61\x75\x6c\x74\x20\x30\x29\x20\x61\x6e\x64\x20\x68\x69\x20\x28\x64\x65\x66\x61\x75\x6c\x74\x20\x6c\x65\x6e\x28\x61\x29\x29\x20\x62\x6f\x75\x6e\x64\x20\x74\x68\x65\x0a\x20\x20\x20\x20\x73\x6c\x69\x63\x65\x20\x6f\x66\x20\x61\x20\x74\x6f\x20\x62\x65\x20\x73\x65\x61\x72\x63\x68\x65\x64\x2e\x0a\x20\x20\x20\x20\x22\x22\x22\x0a\x0a\x20\x20\x20\x20\x69\x66\x20\x6c\x6f\x20\x3c\x20\x30\x3a\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x72\x61\x69\x73\x65\x20\x56\x61\x6c\x75\x65\x45\x72\x72\x6f\x72\x28\x27\x6c\x6f\x20\x6d\x75\x73\x74\x20\x62\x65\x20\x6e\x6f\x6e\x2d\x6e\x65\x67\x61\x74\x69\x76\x65\x27\x29\x0a\x20\x20\x20\x20\x69\x66\x20\x68\x69\x20\x69\x73\x20\x4e\x6f\x6e\x65\x3a\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x68\x69\x20\x3d\x20\x6c\x65\x6e\x28\x61\x29\x0a\x20\x20\x20\x20\x77\x68\x69\x6c\x65\x20\x6c\x6f\x20\x3c\x20\x68\x69\x3a\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x6d\x69\x64\x20\x3d\x20\x28\x6c\x6f\x2b\x68\x69\x29\x2f\x2f\x32\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x69\x66\x20\x61\x5b\x6d\x69\x64\x5d\x20\x3c\x20\x78\x3a\x20\x6c\x6f\x20\x3d\x20\x6d\x69\x64\x2b\x31\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x65\x6c\x73\x65\x3a\x20\x68\x69\x20\x3d\x20\x6d\x69\x64\x0a\x20\x20\x20\x20\x72\x65\x74\x75\x72\x6e\x20\x6c\x6f\x0a\x0a\x23\x20\x43\x72\x65\x61\x74\x65\x20\x61\x6c\x69\x61\x73\x65\x73\x0a\x62\x69\x73\x65\x63\x74\x20\x3d\x20\x62\x69\x73\x65\x63\x74\x5f\x72\x69\x67\x68\x74\x0a\x69\x6e\x73\x6f\x72\x74\x20\x3d\x20\x69\x6e\x73\x6f\x72\x74\x5f\x72\x69\x67\x68\x74\x0a" }, {"builtins", "\x69\x6d\x70\x6f\x72\x74\x20\x73\x79\x73\x20\x61\x73\x20\x5f\x73\x79\x73\x0a\x69\x6d\x70\x6f\x72\x74\x20\x6f\x70\x65\x72\x61\x74\x6f\x72\x20\x61\x73\x20\x5f\x6f\x70\x65\x72\x61\x74\x6f\x72\x0a\x0a\x64\x65\x66\x20\x70\x72\x69\x6e\x74\x28\x2a\x61\x72\x67\x73\x2c\x20\x73\x65\x70\x3d\x27\x20\x27\x2c\x20\x65\x6e\x64\x3d\x27\x5c\x6e\x27\x29\x3a\x0a\x20\x20\x20\x20\x73\x20\x3d\x20\x73\x65\x70\x2e\x6a\x6f\x69\x6e\x28\x5b\x73\x74\x72\x28\x69\x29\x20\x66\x6f\x72\x20\x69\x20\x69\x6e\x20\x61\x72\x67\x73\x5d\x29\x0a\x20\x20\x20\x20\x5f\x73\x79\x73\x2e\x73\x74\x64\x6f\x75\x74\x2e\x77\x72\x69\x74\x65\x28\x73\x20\x2b\x20\x65\x6e\x64\x29\x0a\x0a\x64\x65\x66\x20\x5f\x6d\x69\x6e\x6d\x61\x78\x5f\x72\x65\x64\x75\x63\x65\x28\x6f\x70\x2c\x20\x61\x72\x67\x73\x2c\x20\x6b\x65\x79\x29\x3a\x0a\x20\x20\x20\x20\x69\x66\x20\x6b\x65\x79\x20\x69\x73\x20\x4e\x6f\x6e\x65\x3a\x20\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x69\x66\x20\x6c\x65\x6e\x28\x61\x72\x67\x73\x29\x20\x3d\x3d\x20\x32\x3a\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x72\x65\x74\x75\x72\x6e\x20\x61\x72\x67\x73\x5b\x30\x5d\x20\x69\x66\x20\x6f\x70\x28\x61\x72\x67\x73\x5b\x30\x5d\x2c\x20\x61\x72\x67\x73\x5b\x31\x5d\x29\x20\x65\x6c\x73\x65\x20\x61\x72\x67\x73\x5b\x31\x5d\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x6b\x65\x79\x20\x3d\x20\x6c\x61\x6d\x62\x64\x61\x20\x78\x3a\x20\x78\x0a\x20\x20\x20\x20\x69\x66\x20\x6c\x65\x6e\x28\x61\x72\x67\x73\x29\x20\x3d\x3d\x20\x30\x3a\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x72\x61\x69\x73\x65\x20\x54\x79\x70\x65\x45\x72\x72\x6f\x72\x28\x27\x65\x78\x70\x65\x63\x74\x65\x64\x20\x31\x20\x61\x72\x67\x75\x6d\x65\x6e\x74\x73\x2c\x20\x67\x6f\x74\x20\x30\x27\x29\x0a\x20\x20\x20\x20\x69\x66\x20\x6c\x65\x6e\x28\x61\x72\x67\x73\x29\x20\x3d\x3d\x20\x31\x3a\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x61\x72\x67\x73\x20\x3d\x20\x61\x72\x67\x73\x5b\x30\x5d\x0a\x20\x20\x20\x20\x61\x72\x67\x73\x20\x3d\x20\x69\x74\x65\x72\x28\x61\x72\x67\x73\x29\x0a\x20\x20\x20\x20\x72\x65\x73\x20\x3d\x20\x6e\x65\x78\x74\x28\x61\x72\x67\x73\x29\x0a\x20\x20\x20\x20\x69\x66\x20\x72\x65\x73\x20\x69\x73\x20\x53\x74\x6f\x70\x49\x74\x65\x72\x61\x74\x69\x6f\x6e\x3a\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x72\x61\x69\x73\x65\x20\x56\x61\x6c\x75\x65\x45\x72\x72\x6f\x72\x28\x27\x61\x72\x67\x73\x20\x69\x73\x20\x61\x6e\x20\x65\x6d\x70\x74\x79\x20\x73\x65\x71\x75\x65\x6e\x63\x65\x27\x29\x0a\x20\x20\x20\x20\x77\x68\x69\x6c\x65\x20\x54\x72\x75\x65\x3a\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x69\x20\x3d\x20\x6e\x65\x78\x74\x28\x61\x72\x67\x73\x29\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x69\x66\x20\x69\x20\x69\x73\x20\x53\x74\x6f\x70\x49\x74\x65\x72\x61\x74\x69\x6f\x6e\x3a\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x62\x72\x65\x61\x6b\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x69\x66\x20\x6f\x70\x28\x6b\x65\x79\x28\x69\x29\x2c\x20\x6b\x65\x79\x28\x72\x65\x73\x29\x29\x3a\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x72\x65\x73\x20\x3d\x20\x69\x0a\x20\x20\x20\x20\x72\x65\x74\x75\x72\x6e\x20\x72\x65\x73\x0a\x0a\x64\x65\x66\x20\x6d\x69\x6e\x28\x2a\x61\x72\x67\x73\x2c\x20\x6b\x65\x79\x3d\x4e\x6f\x6e\x65\x29\x3a\x0a\x20\x20\x20\x20\x72\x65\x74\x75\x72\x6e\x20\x5f\x6d\x69\x6e\x6d\x61\x78\x5f\x72\x65\x64\x75\x63\x65\x28\x5f\x6f\x70\x65\x72\x61\x74\x6f\x72\x2e\x6c\x74\x2c\x20\x61\x72\x67\x73\x2c\x20\x6b\x65\x79\x29\x0a\x0a\x64\x65\x66\x20\x6d\x61\x78\x28\x2a\x61\x72\x67\x73\x2c\x20\x6b\x65\x79\x3d\x4e\x6f\x6e\x65\x29\x3a\x0a\x20\x20\x20\x20\x72\x65\x74\x75\x72\x6e\x20\x5f\x6d\x69\x6e\x6d\x61\x78\x5f\x72\x65\x64\x75\x63\x65\x28\x5f\x6f\x70\x65\x72\x61\x74\x6f\x72\x2e\x67\x74\x2c\x20\x61\x72\x67\x73\x2c\x20\x6b\x65\x79\x29\x0a\x0a\x64\x65\x66\x20\x61\x6c\x6c\x28\x69\x74\x65\x72\x61\x62\x6c\x65\x29\x3a\x0a\x20\x20\x20\x20\x66\x6f\x72\x20\x69\x20\x69\x6e\x20\x69\x74\x65\x72\x61\x62\x6c\x65\x3a\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x69\x66\x20\x6e\x6f\x74\x20\x69\x3a\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x72\x65\x74\x75\x72\x6e\x20\x46\x61\x6c\x73\x65\x0a\x20\x20\x20\x20\x72\x65\x74\x75\x72\x6e\x20\x54\x72\x75\x65\x0a\x0a\x64\x65\x66\x20\x61\x6e\x79\x28\x69\x74\x65\x72\x61\x62\x6c\x65\x29\x3a\x0a\x20\x20\x20\x20\x66\x6f\x72\x20\x69\x20\x69\x6e\x20\x69\x74\x65\x72\x61\x62\x6c\x65\x3a\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x69\x66\x20\x69\x3a\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x72\x65\x74\x75\x72\x6e\x20\x54\x72\x75\x65\x0a\x20\x20\x20\x20\x72\x65\x74\x75\x72\x6e\x20\x46\x61\x6c\x73\x65\x0a\x0a\x64\x65\x66\x20\x65\x6e\x75\x6d\x65\x72\x61\x74\x65\x28\x69\x74\x65\x72\x61\x62\x6c\x65\x2c\x20\x73\x74\x61\x72\x74\x3d\x30\x29\x3a\x0a\x20\x20\x20\x20\x6e\x20\x3d\x20\x73\x74\x61\x72\x74\x0a\x20\x20\x20\x20\x66\x6f\x72\x20\x65\x6c\x65\x6d\x20\x69\x6e\x20\x69\x74\x65\x72\x61\x62\x6c\x65\x3a\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x79\x69\x65\x6c\x64\x20\x6e\x2c\x20\x65\x6c\x65\x6d\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x2b\x2b\x6e\x0a\x0a\x64\x65\x66\x20\x73\x75\x6d\x28\x69\x74\x65\x72\x61\x62\x6c\x65\x29\x3a\x0a\x20\x20\x20\x20\x72\x65\x73\x20\x3d\x20\x30\x0a\x20\x20\x20\x20\x66\x6f\x72\x20\x69\x20\x69\x6e\x20\x69\x74" "\x65\x72\x61\x62\x6c\x65\x3a\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x72\x65\x73\x20\x2b\x3d\x20\x69\x0a\x20\x20\x20\x20\x72\x65\x74\x75\x72\x6e\x20\x72\x65\x73\x0a\x0a\x64\x65\x66\x20\x6d\x61\x70\x28\x66\x2c\x20\x69\x74\x65\x72\x61\x62\x6c\x65\x29\x3a\x0a\x20\x20\x20\x20\x66\x6f\x72\x20\x69\x20\x69\x6e\x20\x69\x74\x65\x72\x61\x62\x6c\x65\x3a\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x79\x69\x65\x6c\x64\x20\x66\x28\x69\x29\x0a\x0a\x64\x65\x66\x20\x66\x69\x6c\x74\x65\x72\x28\x66\x2c\x20\x69\x74\x65\x72\x61\x62\x6c\x65\x29\x3a\x0a\x20\x20\x20\x20\x66\x6f\x72\x20\x69\x20\x69\x6e\x20\x69\x74\x65\x72\x61\x62\x6c\x65\x3a\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x69\x66\x20\x66\x28\x69\x29\x3a\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x79\x69\x65\x6c\x64\x20\x69\x0a\x0a\x64\x65\x66\x20\x7a\x69\x70\x28\x61\x2c\x20\x62\x29\x3a\x0a\x20\x20\x20\x20\x61\x20\x3d\x20\x69\x74\x65\x72\x28\x61\x29\x0a\x20\x20\x20\x20\x62\x20\x3d\x20\x69\x74\x65\x72\x28\x62\x29\x0a\x20\x20\x20\x20\x77\x68\x69\x6c\x65\x20\x54\x72\x75\x65\x3a\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x61\x69\x20\x3d\x20\x6e\x65\x78\x74\x28\x61\x29\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x62\x69\x20\x3d\x20\x6e\x65\x78\x74\x28\x62\x29\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x69\x66\x20\x61\x69\x20\x69\x73\x20\x53\x74\x6f\x70\x49\x74\x65\x72\x61\x74\x69\x6f\x6e\x20\x6f\x72\x20\x62\x69\x20\x69\x73\x20\x53\x74\x6f\x70\x49\x74\x65\x72\x61\x74\x69\x6f\x6e\x3a\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x62\x72\x65\x61\x6b\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x79\x69\x65\x6c\x64\x20\x61\x69\x2c\x20\x62\x69\x0a\x0a\x64\x65\x66\x20\x72\x65\x76\x65\x72\x73\x65\x64\x28\x69\x74\x65\x72\x61\x62\x6c\x65\x29\x3a\x0a\x20\x20\x20\x20\x61\x20\x3d\x20\x6c\x69\x73\x74\x28\x69\x74\x65\x72\x61\x62\x6c\x65\x29\x0a\x20\x20\x20\x20\x61\x2e\x72\x65\x76\x65\x72\x73\x65\x28\x29\x0a\x20\x20\x20\x20\x72\x65\x74\x75\x72\x6e\x20\x61\x0a\x0a\x64\x65\x66\x20\x73\x6f\x72\x74\x65\x64\x28\x69\x74\x65\x72\x61\x62\x6c\x65\x2c\x20\x6b\x65\x79\x3d\x4e\x6f\x6e\x65\x2c\x20\x72\x65\x76\x65\x72\x73\x65\x3d\x46\x61\x6c\x73\x65\x29\x3a\x0a\x20\x20\x20\x20\x61\x20\x3d\x20\x6c\x69\x73\x74\x28\x69\x74\x65\x72\x61\x62\x6c\x65\x29\x0a\x20\x20\x20\x20\x61\x2e\x73\x6f\x72\x74\x28\x6b\x65\x79\x3d\x6b\x65\x79\x2c\x20\x72\x65\x76\x65\x72\x73\x65\x3d\x72\x65\x76\x65\x72\x73\x65\x29\x0a\x20\x20\x20\x20\x72\x65\x74\x75\x72\x6e\x20\x61\x0a\x0a\x23\x23\x23\x23\x23\x20\x73\x74\x72\x20\x23\x23\x23\x23\x23\x0a\x64\x65\x66\x20\x5f\x5f\x66\x6f\x72\x6d\x61\x74\x5f\x73\x74\x72\x69\x6e\x67\x28\x73\x65\x6c\x66\x3a\x20\x73\x74\x72\x2c\x20\x2a\x61\x72\x67\x73\x2c\x20\x2a\x2a\x6b\x77\x61\x72\x67\x73\x29\x20\x2d\x3e\x20\x73\x74\x72\x3a\x0a\x20\x20\x20\x20\x64\x65\x66\x20\x74\x6f\x6b\x65\x6e\x69\x7a\x65\x53\x74\x72\x69\x6e\x67\x28\x73\x3a\x20\x73\x74\x72\x29\x3a\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x74\x6f\x6b\x65\x6e\x73\x20\x3d\x20\x5b\x5d\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x4c\x2c\x20\x52\x20\x3d\x20\x30\x2c\x30\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x6d\x6f\x64\x65\x20\x3d\x20\x4e\x6f\x6e\x65\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x63\x75\x72\x41\x72\x67\x20\x3d\x20\x30\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x23\x20\x6c\x6f\x6f\x6b\x69\x6e\x67\x46\x6f\x72\x4b\x77\x6f\x72\x64\x20\x3d\x20\x46\x61\x6c\x73\x65\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x77\x68\x69\x6c\x65\x28\x52\x3c\x6c\x65\x6e\x28\x73\x29\x29\x3a\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x63\x75\x72\x43\x68\x61\x72\x20\x3d\x20\x73\x5b\x52\x5d\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x6e\x65\x78\x74\x43\x68\x61\x72\x20\x3d\x20\x73\x5b\x52\x2b\x31\x5d\x20\x69\x66\x20\x52\x2b\x31\x3c\x6c\x65\x6e\x28\x73\x29\x20\x65\x6c\x73\x65\x20\x27\x27\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x23\x20\x49\x6e\x76\x61\x6c\x69\x64\x20\x63\x61\x73\x65\x20\x31\x3a\x20\x73\x74\x72\x61\x79\x20\x27\x7d\x27\x20\x65\x6e\x63\x6f\x75\x6e\x74\x65\x72\x65\x64\x2c\x20\x65\x78\x61\x6d\x70\x6c\x65\x3a\x20\x22\x41\x42\x43\x44\x20\x45\x46\x47\x48\x20\x7b\x6e\x61\x6d\x65\x7d\x20\x49\x4a\x4b\x4c\x7d\x22\x2c\x20\x22\x48\x65\x6c\x6c\x6f\x20\x7b\x76\x76\x7d\x7d\x22\x2c\x20\x22\x48\x45\x4c\x4c\x4f\x20\x7b\x30\x7d\x20\x57\x4f\x52\x4c\x44\x7d\x22\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x69\x66\x20\x63\x75\x72\x43\x68\x61\x72\x20\x3d\x3d\x20\x27\x7d\x27\x20\x61\x6e\x64\x20\x6e\x65\x78\x74\x43\x68\x61\x72\x20\x21\x3d\x20\x27\x7d\x27\x3a\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x72\x61\x69\x73\x65\x20\x56\x61\x6c\x75\x65\x45\x72\x72\x6f\x72\x28\x22\x53\x69\x6e\x67\x6c\x65\x20\x27\x7d\x27\x20\x65\x6e\x63\x6f\x75\x6e\x74\x65\x72\x65\x64\x20\x69\x6e\x20\x66\x6f\x72\x6d\x61\x74\x20\x73\x74\x72\x69\x6e\x67\x22\x29\x20\x20\x20\x20\x20\x20\x20\x20\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x23\x20\x56\x61\x6c\x69\x64\x20\x43\x61\x73\x65\x20\x31\x3a\x20\x45\x73\x63\x61\x70\x69\x6e\x67\x20\x63\x61" "\x73\x65\x2c\x20\x77\x65\x20\x65\x73\x63\x61\x70\x65\x20\x22\x7b\x7b\x20\x6f\x72\x20\x22\x7d\x7d\x22\x20\x74\x6f\x20\x62\x65\x20\x22\x7b\x22\x20\x6f\x72\x20\x22\x7d\x22\x2c\x20\x65\x78\x61\x6d\x70\x6c\x65\x3a\x20\x22\x7b\x7b\x7d\x7d\x22\x2c\x20\x22\x7b\x7b\x4d\x79\x20\x4e\x61\x6d\x65\x20\x69\x73\x20\x7b\x30\x7d\x7d\x7d\x22\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x69\x66\x20\x28\x63\x75\x72\x43\x68\x61\x72\x20\x3d\x3d\x20\x27\x7b\x27\x20\x61\x6e\x64\x20\x6e\x65\x78\x74\x43\x68\x61\x72\x20\x3d\x3d\x20\x27\x7b\x27\x29\x20\x6f\x72\x20\x28\x63\x75\x72\x43\x68\x61\x72\x20\x3d\x3d\x20\x27\x7d\x27\x20\x61\x6e\x64\x20\x6e\x65\x78\x74\x43\x68\x61\x72\x20\x3d\x3d\x20\x27\x7d\x27\x29\x3a\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x69\x66\x20\x28\x4c\x3c\x52\x29\x3a\x20\x23\x20\x56\x61\x6c\x69\x64\x20\x43\x61\x73\x65\x20\x31\x2e\x31\x3a\x20\x6d\x61\x6b\x65\x20\x73\x75\x72\x65\x20\x77\x65\x20\x61\x72\x65\x20\x6e\x6f\x74\x20\x61\x64\x64\x69\x6e\x67\x20\x65\x6d\x70\x74\x79\x20\x73\x74\x72\x69\x6e\x67\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x74\x6f\x6b\x65\x6e\x73\x2e\x61\x70\x70\x65\x6e\x64\x28\x73\x5b\x4c\x3a\x52\x5d\x29\x20\x23\x20\x61\x64\x64\x20\x74\x68\x65\x20\x73\x74\x72\x69\x6e\x67\x20\x62\x65\x66\x6f\x72\x65\x20\x74\x68\x65\x20\x65\x73\x63\x61\x70\x65\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x74\x6f\x6b\x65\x6e\x73\x2e\x61\x70\x70\x65\x6e\x64\x28\x63\x75\x72\x43\x68\x61\x72\x29\x20\x23\x20\x56\x61\x6c\x69\x64\x20\x43\x61\x73\x65\x20\x31\x2e\x32\x3a\x20\x61\x64\x64\x20\x74\x68\x65\x20\x65\x73\x63\x61\x70\x65\x20\x63\x68\x61\x72\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x4c\x20\x3d\x20\x52\x2b\x32\x20\x23\x20\x6d\x6f\x76\x65\x20\x74\x68\x65\x20\x6c\x65\x66\x74\x20\x70\x6f\x69\x6e\x74\x65\x72\x20\x74\x6f\x20\x74\x68\x65\x20\x6e\x65\x78\x74\x20\x63\x68\x61\x72\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x52\x20\x3d\x20\x52\x2b\x32\x20\x23\x20\x6d\x6f\x76\x65\x20\x74\x68\x65\x20\x72\x69\x67\x68\x74\x20\x70\x6f\x69\x6e\x74\x65\x72\x20\x74\x6f\x20\x74\x68\x65\x20\x6e\x65\x78\x74\x20\x63\x68\x61\x72\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x63\x6f\x6e\x74\x69\x6e\x75\x65\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x23\x20\x56\x61\x6c\x69\x64\x20\x43\x61\x73\x65\x20\x32\x3a\x20\x52\x65\x67\x75\x6c\x61\x72\x20\x63\x6f\x6d\x6d\x61\x6e\x64\x20\x6c\x69\x6e\x65\x20\x61\x72\x67\x20\x63\x61\x73\x65\x3a\x20\x65\x78\x61\x6d\x70\x6c\x65\x3a\x20\x20\x22\x41\x42\x43\x44\x20\x45\x46\x47\x48\x20\x7b\x7d\x20\x49\x4a\x4b\x4c\x22\x2c\x20\x22\x7b\x7d\x22\x2c\x20\x22\x48\x45\x4c\x4c\x4f\x20\x7b\x7d\x20\x57\x4f\x52\x4c\x44\x22\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x65\x6c\x69\x66\x20\x63\x75\x72\x43\x68\x61\x72\x20\x3d\x3d\x20\x27\x7b\x27\x20\x61\x6e\x64\x20\x6e\x65\x78\x74\x43\x68\x61\x72\x20\x3d\x3d\x20\x27\x7d\x27\x3a\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x69\x66\x20\x6d\x6f\x64\x65\x20\x69\x73\x20\x6e\x6f\x74\x20\x4e\x6f\x6e\x65\x20\x61\x6e\x64\x20\x6d\x6f\x64\x65\x20\x21\x3d\x20\x27\x61\x75\x74\x6f\x27\x3a\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x23\x20\x49\x6e\x76\x61\x6c\x69\x64\x20\x63\x61\x73\x65\x20\x32\x3a\x20\x6d\x69\x78\x69\x6e\x67\x20\x61\x75\x74\x6f\x6d\x61\x74\x69\x63\x20\x61\x6e\x64\x20\x6d\x61\x6e\x75\x61\x6c\x20\x66\x69\x65\x6c\x64\x20\x73\x70\x65\x63\x69\x66\x69\x63\x61\x74\x69\x6f\x6e\x73\x20\x2d\x2d\x20\x65\x78\x61\x6d\x70\x6c\x65\x3a\x20\x22\x41\x42\x43\x44\x20\x45\x46\x47\x48\x20\x7b\x6e\x61\x6d\x65\x7d\x20\x49\x4a\x4b\x4c\x20\x7b\x7d\x22\x2c\x20\x22\x48\x65\x6c\x6c\x6f\x20\x7b\x76\x76\x7d\x20\x7b\x7d\x22\x2c\x20\x22\x48\x45\x4c\x4c\x4f\x20\x7b\x30\x7d\x20\x57\x4f\x52\x4c\x44\x20\x7b\x7d\x22\x20\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x72\x61\x69\x73\x65\x20\x56\x61\x6c\x75\x65\x45\x72\x72\x6f\x72\x28\x22\x43\x61\x6e\x6e\x6f\x74\x20\x73\x77\x69\x74\x63\x68\x20\x66\x72\x6f\x6d\x20\x6d\x61\x6e\x75\x61\x6c\x20\x66\x69\x65\x6c\x64\x20\x6e\x75\x6d\x62\x65\x72\x69\x6e\x67\x20\x74\x6f\x20\x61\x75\x74\x6f\x6d\x61\x74\x69\x63\x20\x66\x69\x65\x6c\x64\x20\x73\x70\x65\x63\x69\x66\x69\x63\x61\x74\x69\x6f\x6e\x22\x29\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x6d\x6f\x64\x65\x20\x3d\x20\x27\x61\x75\x74\x6f\x27\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x69\x66\x28\x4c\x3c\x52\x29\x3a\x20\x23\x20\x56\x61\x6c\x69\x64\x20\x43\x61\x73\x65\x20\x32\x2e\x31\x3a\x20\x6d\x61\x6b\x65\x20\x73\x75\x72\x65\x20\x77\x65\x20\x61\x72\x65\x20\x6e\x6f\x74\x20\x61\x64" "\x64\x69\x6e\x67\x20\x65\x6d\x70\x74\x79\x20\x73\x74\x72\x69\x6e\x67\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x74\x6f\x6b\x65\x6e\x73\x2e\x61\x70\x70\x65\x6e\x64\x28\x73\x5b\x4c\x3a\x52\x5d\x29\x20\x23\x20\x61\x64\x64\x20\x74\x68\x65\x20\x73\x74\x72\x69\x6e\x67\x20\x62\x65\x66\x6f\x72\x65\x20\x74\x68\x65\x20\x73\x70\x65\x63\x69\x61\x6c\x20\x6d\x61\x72\x6b\x65\x72\x20\x66\x6f\x72\x20\x74\x68\x65\x20\x61\x72\x67\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x74\x6f\x6b\x65\x6e\x73\x2e\x61\x70\x70\x65\x6e\x64\x28\x22\x7b\x22\x2b\x73\x74\x72\x28\x63\x75\x72\x41\x72\x67\x29\x2b\x22\x7d\x22\x29\x20\x23\x20\x56\x61\x6c\x69\x64\x20\x43\x61\x73\x65\x20\x32\x2e\x32\x3a\x20\x61\x64\x64\x20\x74\x68\x65\x20\x73\x70\x65\x63\x69\x61\x6c\x20\x6d\x61\x72\x6b\x65\x72\x20\x66\x6f\x72\x20\x74\x68\x65\x20\x61\x72\x67\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x63\x75\x72\x41\x72\x67\x2b\x3d\x31\x20\x23\x20\x69\x6e\x63\x72\x65\x6d\x65\x6e\x74\x20\x74\x68\x65\x20\x61\x72\x67\x20\x70\x6f\x73\x69\x74\x69\x6f\x6e\x2c\x20\x74\x68\x69\x73\x20\x77\x69\x6c\x6c\x20\x62\x65\x20\x75\x73\x65\x64\x20\x66\x6f\x72\x20\x72\x65\x66\x65\x72\x65\x6e\x63\x69\x6e\x67\x20\x74\x68\x65\x20\x61\x72\x67\x20\x6c\x61\x74\x65\x72\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x4c\x20\x3d\x20\x52\x2b\x32\x20\x23\x20\x6d\x6f\x76\x65\x20\x74\x68\x65\x20\x6c\x65\x66\x74\x20\x70\x6f\x69\x6e\x74\x65\x72\x20\x74\x6f\x20\x74\x68\x65\x20\x6e\x65\x78\x74\x20\x63\x68\x61\x72\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x52\x20\x3d\x20\x52\x2b\x32\x20\x23\x20\x6d\x6f\x76\x65\x20\x74\x68\x65\x20\x72\x69\x67\x68\x74\x20\x70\x6f\x69\x6e\x74\x65\x72\x20\x74\x6f\x20\x74\x68\x65\x20\x6e\x65\x78\x74\x20\x63\x68\x61\x72\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x63\x6f\x6e\x74\x69\x6e\x75\x65\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x23\x20\x56\x61\x6c\x69\x64\x20\x43\x61\x73\x65\x20\x33\x3a\x20\x4b\x65\x79\x2d\x77\x6f\x72\x64\x20\x61\x72\x67\x20\x63\x61\x73\x65\x3a\x20\x65\x78\x61\x6d\x70\x6c\x65\x3a\x20\x22\x41\x42\x43\x44\x20\x45\x46\x47\x48\x20\x7b\x6e\x61\x6d\x65\x7d\x20\x49\x4a\x4b\x4c\x22\x2c\x20\x22\x48\x65\x6c\x6c\x6f\x20\x7b\x76\x76\x7d\x22\x2c\x20\x22\x48\x45\x4c\x4c\x4f\x20\x7b\x6e\x61\x6d\x65\x7d\x20\x57\x4f\x52\x4c\x44\x22\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x65\x6c\x69\x66\x20\x28\x63\x75\x72\x43\x68\x61\x72\x20\x3d\x3d\x20\x27\x7b\x27\x29\x3a\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x69\x66\x20\x6d\x6f\x64\x65\x20\x69\x73\x20\x6e\x6f\x74\x20\x4e\x6f\x6e\x65\x20\x61\x6e\x64\x20\x6d\x6f\x64\x65\x20\x21\x3d\x20\x27\x6d\x61\x6e\x75\x61\x6c\x27\x3a\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x23\x20\x23\x20\x49\x6e\x76\x61\x6c\x69\x64\x20\x63\x61\x73\x65\x20\x32\x3a\x20\x6d\x69\x78\x69\x6e\x67\x20\x61\x75\x74\x6f\x6d\x61\x74\x69\x63\x20\x61\x6e\x64\x20\x6d\x61\x6e\x75\x61\x6c\x20\x66\x69\x65\x6c\x64\x20\x73\x70\x65\x63\x69\x66\x69\x63\x61\x74\x69\x6f\x6e\x73\x20\x2d\x2d\x20\x65\x78\x61\x6d\x70\x6c\x65\x3a\x20\x22\x41\x42\x43\x44\x20\x45\x46\x47\x48\x20\x7b\x7d\x20\x49\x4a\x4b\x4c\x20\x7b\x6e\x61\x6d\x65\x7d\x22\x2c\x20\x22\x48\x65\x6c\x6c\x6f\x20\x7b\x7d\x20\x7b\x31\x7d\x22\x2c\x20\x22\x48\x45\x4c\x4c\x4f\x20\x7b\x7d\x20\x57\x4f\x52\x4c\x44\x20\x7b\x6e\x61\x6d\x65\x7d\x22\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x72\x61\x69\x73\x65\x20\x56\x61\x6c\x75\x65\x45\x72\x72\x6f\x72\x28\x22\x43\x61\x6e\x6e\x6f\x74\x20\x73\x77\x69\x74\x63\x68\x20\x66\x72\x6f\x6d\x20\x61\x75\x74\x6f\x6d\x61\x74\x69\x63\x20\x66\x69\x65\x6c\x64\x20\x73\x70\x65\x63\x69\x66\x69\x63\x61\x74\x69\x6f\x6e\x20\x74\x6f\x20\x6d\x61\x6e\x75\x61\x6c\x20\x66\x69\x65\x6c\x64\x20\x6e\x75\x6d\x62\x65\x72\x69\x6e\x67\x22\x29\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x6d\x6f\x64\x65\x20\x3d\x20\x27\x6d\x61\x6e\x75\x61\x6c\x27\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x69\x66\x28\x4c\x3c\x52\x29\x3a\x20\x23\x20\x56\x61\x6c\x69\x64\x20\x63\x61\x73\x65\x20\x33\x2e\x31\x3a\x20\x6d\x61\x6b\x65\x20\x73\x75\x72\x65\x20\x77\x65\x20\x61\x72\x65\x20\x6e\x6f\x74\x20\x61\x64\x64\x69\x6e\x67\x20\x65\x6d\x70\x74\x79\x20\x73\x74\x72\x69\x6e\x67\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x74\x6f\x6b\x65\x6e\x73\x2e\x61\x70\x70\x65\x6e\x64\x28\x73\x5b\x4c\x3a\x52\x5d\x29\x20\x23\x20\x61\x64\x64\x20\x74\x68\x65\x20\x73\x74\x72\x69\x6e\x67\x20\x62\x65\x66\x6f\x72" "\x65\x20\x74\x68\x65\x20\x73\x70\x65\x63\x69\x61\x6c\x20\x6d\x61\x72\x6b\x65\x72\x20\x66\x6f\x72\x20\x74\x68\x65\x20\x61\x72\x67\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x23\x20\x57\x65\x20\x6c\x6f\x6f\x6b\x20\x66\x6f\x72\x20\x74\x68\x65\x20\x65\x6e\x64\x20\x6f\x66\x20\x74\x68\x65\x20\x6b\x65\x79\x77\x6f\x72\x64\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x6b\x77\x4c\x20\x3d\x20\x52\x20\x23\x20\x4b\x65\x79\x77\x6f\x72\x64\x20\x6c\x65\x66\x74\x20\x70\x6f\x69\x6e\x74\x65\x72\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x6b\x77\x52\x20\x3d\x20\x52\x2b\x31\x20\x23\x20\x4b\x65\x79\x77\x6f\x72\x64\x20\x72\x69\x67\x68\x74\x20\x70\x6f\x69\x6e\x74\x65\x72\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x77\x68\x69\x6c\x65\x28\x6b\x77\x52\x3c\x6c\x65\x6e\x28\x73\x29\x20\x61\x6e\x64\x20\x73\x5b\x6b\x77\x52\x5d\x21\x3d\x27\x7d\x27\x29\x3a\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x69\x66\x20\x73\x5b\x6b\x77\x52\x5d\x20\x3d\x3d\x20\x27\x7b\x27\x3a\x20\x23\x20\x49\x6e\x76\x61\x6c\x69\x64\x20\x63\x61\x73\x65\x20\x33\x3a\x20\x73\x74\x72\x61\x79\x20\x27\x7b\x27\x20\x65\x6e\x63\x6f\x75\x6e\x74\x65\x72\x65\x64\x2c\x20\x65\x78\x61\x6d\x70\x6c\x65\x3a\x20\x22\x41\x42\x43\x44\x20\x45\x46\x47\x48\x20\x7b\x6e\x7b\x61\x6d\x65\x7d\x20\x49\x4a\x4b\x4c\x20\x7b\x22\x2c\x20\x22\x48\x65\x6c\x6c\x6f\x20\x7b\x76\x76\x7b\x7d\x7d\x22\x2c\x20\x22\x48\x45\x4c\x4c\x4f\x20\x7b\x30\x7d\x20\x57\x4f\x52\x7b\x4c\x44\x7d\x22\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x72\x61\x69\x73\x65\x20\x56\x61\x6c\x75\x65\x45\x72\x72\x6f\x72\x28\x22\x55\x6e\x65\x78\x70\x65\x63\x74\x65\x64\x20\x27\x7b\x27\x20\x69\x6e\x20\x66\x69\x65\x6c\x64\x20\x6e\x61\x6d\x65\x22\x29\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x6b\x77\x52\x20\x2b\x3d\x20\x31\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x23\x20\x56\x61\x6c\x69\x64\x20\x63\x61\x73\x65\x20\x33\x2e\x32\x3a\x20\x57\x65\x20\x68\x61\x76\x65\x20\x73\x75\x63\x63\x65\x73\x73\x66\x75\x6c\x6c\x79\x20\x66\x6f\x75\x6e\x64\x20\x74\x68\x65\x20\x65\x6e\x64\x20\x6f\x66\x20\x74\x68\x65\x20\x6b\x65\x79\x77\x6f\x72\x64\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x69\x66\x20\x6b\x77\x52\x3c\x6c\x65\x6e\x28\x73\x29\x20\x61\x6e\x64\x20\x73\x5b\x6b\x77\x52\x5d\x20\x3d\x3d\x20\x27\x7d\x27\x3a\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x74\x6f\x6b\x65\x6e\x73\x2e\x61\x70\x70\x65\x6e\x64\x28\x73\x5b\x6b\x77\x4c\x3a\x6b\x77\x52\x2b\x31\x5d\x29\x20\x23\x20\x61\x64\x64\x20\x74\x68\x65\x20\x73\x70\x65\x63\x69\x61\x6c\x20\x6d\x61\x72\x6b\x65\x72\x20\x66\x6f\x72\x20\x74\x68\x65\x20\x61\x72\x67\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x4c\x20\x3d\x20\x6b\x77\x52\x2b\x31\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x52\x20\x3d\x20\x6b\x77\x52\x2b\x31\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x23\x20\x49\x6e\x76\x61\x6c\x69\x64\x20\x63\x61\x73\x65\x20\x34\x3a\x20\x57\x65\x20\x64\x69\x64\x6e\x27\x74\x20\x66\x69\x6e\x64\x20\x74\x68\x65\x20\x65\x6e\x64\x20\x6f\x66\x20\x74\x68\x65\x20\x6b\x65\x79\x77\x6f\x72\x64\x2c\x20\x74\x68\x72\x6f\x77\x20\x65\x72\x72\x6f\x72\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x65\x6c\x73\x65\x3a\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x72\x61\x69\x73\x65\x20\x56\x61\x6c\x75\x65\x45\x72\x72\x6f\x72\x28\x22\x45\x78\x70\x65\x63\x74\x65\x64\x20\x27\x7d\x27\x20\x62\x65\x66\x6f\x72\x65\x20\x65\x6e\x64\x20\x6f\x66\x20\x73\x74\x72\x69\x6e\x67\x22\x29\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x63\x6f\x6e\x74\x69\x6e\x75\x65\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x52\x20\x3d\x20\x52\x2b\x31\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x23\x20\x56\x61\x6c\x69\x64\x20\x63\x61\x73\x65\x20\x34\x3a\x20\x57\x65\x20\x68\x61\x76\x65\x20\x72\x65\x61\x63\x68\x65\x64\x20\x74\x68\x65\x20\x65\x6e\x64\x20\x6f\x66\x20\x74\x68\x65\x20\x73\x74\x72\x69\x6e\x67\x2c\x20\x61\x64\x64\x20\x74\x68\x65\x20\x72\x65\x6d\x61\x69\x6e\x69\x6e\x67\x20\x73\x74\x72\x69\x6e\x67\x20\x74\x6f\x20\x74\x68\x65\x20\x74\x6f\x6b\x65\x6e\x73\x20\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x69\x66\x20\x4c\x3c\x52\x3a\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x74\x6f\x6b\x65\x6e\x73\x2e\x61\x70\x70\x65\x6e\x64\x28\x73\x5b\x4c\x3a\x52\x5d\x29\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20" "\x20\x20\x20\x20\x20\x20\x20\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x23\x20\x70\x72\x69\x6e\x74\x28\x74\x6f\x6b\x65\x6e\x73\x29\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x72\x65\x74\x75\x72\x6e\x20\x74\x6f\x6b\x65\x6e\x73\x0a\x0a\x20\x20\x20\x20\x74\x6f\x6b\x65\x6e\x73\x20\x3d\x20\x74\x6f\x6b\x65\x6e\x69\x7a\x65\x53\x74\x72\x69\x6e\x67\x28\x73\x65\x6c\x66\x29\x0a\x20\x20\x20\x20\x61\x72\x67\x4d\x61\x70\x20\x3d\x20\x7b\x7d\x0a\x20\x20\x20\x20\x66\x6f\x72\x20\x69\x2c\x20\x61\x20\x69\x6e\x20\x65\x6e\x75\x6d\x65\x72\x61\x74\x65\x28\x61\x72\x67\x73\x29\x3a\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x61\x72\x67\x4d\x61\x70\x5b\x73\x74\x72\x28\x69\x29\x5d\x20\x3d\x20\x61\x0a\x20\x20\x20\x20\x66\x69\x6e\x61\x6c\x5f\x74\x6f\x6b\x65\x6e\x73\x20\x3d\x20\x5b\x5d\x0a\x20\x20\x20\x20\x66\x6f\x72\x20\x74\x20\x69\x6e\x20\x74\x6f\x6b\x65\x6e\x73\x3a\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x69\x66\x20\x74\x5b\x30\x5d\x20\x3d\x3d\x20\x27\x7b\x27\x20\x61\x6e\x64\x20\x74\x5b\x2d\x31\x5d\x20\x3d\x3d\x20\x27\x7d\x27\x3a\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x6b\x65\x79\x20\x3d\x20\x74\x5b\x31\x3a\x2d\x31\x5d\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x61\x72\x67\x4d\x61\x70\x56\x61\x6c\x20\x3d\x20\x61\x72\x67\x4d\x61\x70\x2e\x67\x65\x74\x28\x6b\x65\x79\x2c\x20\x4e\x6f\x6e\x65\x29\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x6b\x77\x61\x72\x67\x73\x56\x61\x6c\x20\x3d\x20\x6b\x77\x61\x72\x67\x73\x2e\x67\x65\x74\x28\x6b\x65\x79\x2c\x20\x4e\x6f\x6e\x65\x29\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x69\x66\x20\x61\x72\x67\x4d\x61\x70\x56\x61\x6c\x20\x69\x73\x20\x4e\x6f\x6e\x65\x20\x61\x6e\x64\x20\x6b\x77\x61\x72\x67\x73\x56\x61\x6c\x20\x69\x73\x20\x4e\x6f\x6e\x65\x3a\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x72\x61\x69\x73\x65\x20\x56\x61\x6c\x75\x65\x45\x72\x72\x6f\x72\x28\x22\x4e\x6f\x20\x61\x72\x67\x20\x66\x6f\x75\x6e\x64\x20\x66\x6f\x72\x20\x74\x6f\x6b\x65\x6e\x3a\x20\x22\x2b\x74\x29\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x65\x6c\x69\x66\x20\x61\x72\x67\x4d\x61\x70\x56\x61\x6c\x20\x69\x73\x20\x6e\x6f\x74\x20\x4e\x6f\x6e\x65\x3a\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x66\x69\x6e\x61\x6c\x5f\x74\x6f\x6b\x65\x6e\x73\x2e\x61\x70\x70\x65\x6e\x64\x28\x73\x74\x72\x28\x61\x72\x67\x4d\x61\x70\x56\x61\x6c\x29\x29\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x65\x6c\x73\x65\x3a\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x66\x69\x6e\x61\x6c\x5f\x74\x6f\x6b\x65\x6e\x73\x2e\x61\x70\x70\x65\x6e\x64\x28\x73\x74\x72\x28\x6b\x77\x61\x72\x67\x73\x56\x61\x6c\x29\x29\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x65\x6c\x73\x65\x3a\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x66\x69\x6e\x61\x6c\x5f\x74\x6f\x6b\x65\x6e\x73\x2e\x61\x70\x70\x65\x6e\x64\x28\x74\x29\x0a\x20\x20\x20\x20\x0a\x20\x20\x20\x20\x72\x65\x74\x75\x72\x6e\x20\x27\x27\x2e\x6a\x6f\x69\x6e\x28\x66\x69\x6e\x61\x6c\x5f\x74\x6f\x6b\x65\x6e\x73\x29\x0a\x0a\x73\x74\x72\x2e\x66\x6f\x72\x6d\x61\x74\x20\x3d\x20\x5f\x5f\x66\x6f\x72\x6d\x61\x74\x5f\x73\x74\x72\x69\x6e\x67\x0a\x64\x65\x6c\x20\x5f\x5f\x66\x6f\x72\x6d\x61\x74\x5f\x73\x74\x72\x69\x6e\x67\x0a\x0a\x0a\x64\x65\x66\x20\x68\x65\x6c\x70\x28\x6f\x62\x6a\x29\x3a\x0a\x20\x20\x20\x20\x69\x66\x20\x68\x61\x73\x61\x74\x74\x72\x28\x6f\x62\x6a\x2c\x20\x27\x5f\x5f\x66\x75\x6e\x63\x5f\x5f\x27\x29\x3a\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x6f\x62\x6a\x20\x3d\x20\x6f\x62\x6a\x2e\x5f\x5f\x66\x75\x6e\x63\x5f\x5f\x0a\x20\x20\x20\x20\x70\x72\x69\x6e\x74\x28\x6f\x62\x6a\x2e\x5f\x5f\x73\x69\x67\x6e\x61\x74\x75\x72\x65\x5f\x5f\x29\x0a\x20\x20\x20\x20\x70\x72\x69\x6e\x74\x28\x6f\x62\x6a\x2e\x5f\x5f\x64\x6f\x63\x5f\x5f\x29\x0a\x0a\x64\x65\x66\x20\x63\x6f\x6d\x70\x6c\x65\x78\x28\x2a\x61\x72\x67\x73\x2c\x20\x2a\x2a\x6b\x77\x61\x72\x67\x73\x29\x3a\x0a\x20\x20\x20\x20\x69\x6d\x70\x6f\x72\x74\x20\x63\x6d\x61\x74\x68\x0a\x20\x20\x20\x20\x72\x65\x74\x75\x72\x6e\x20\x63\x6d\x61\x74\x68\x2e\x63\x6f\x6d\x70\x6c\x65\x78\x28\x2a\x61\x72\x67\x73\x2c\x20\x2a\x2a\x6b\x77\x61\x72\x67\x73\x29\x0a\x0a\x64\x65\x66\x20\x6c\x6f\x6e\x67\x28\x2a\x61\x72\x67\x73\x2c\x20\x2a\x2a\x6b\x77\x61\x72\x67\x73\x29\x3a\x0a\x20\x20\x20\x20\x69\x6d\x70\x6f\x72\x74\x20\x5f\x6c\x6f\x6e\x67\x0a\x20\x20\x20\x20\x72\x65\x74\x75\x72\x6e\x20\x5f\x6c\x6f\x6e\x67\x2e\x6c\x6f\x6e\x67\x28\x2a\x61\x72\x67\x73\x2c\x20\x2a\x2a\x6b\x77\x61\x72\x67\x73\x29\x0a\x0a\x0a\x23\x20\x62\x75\x69\x6c\x74\x69\x6e\x20\x65\x78\x63\x65\x70\x74\x69\x6f\x6e\x73\x0a\x63\x6c\x61\x73\x73\x20\x53\x74\x61\x63\x6b\x4f\x76\x65\x72\x66\x6c\x6f\x77\x45\x72\x72\x6f\x72\x28\x45\x78\x63\x65\x70\x74\x69\x6f\x6e\x29\x3a\x20\x70\x61\x73\x73\x0a\x63\x6c\x61\x73\x73\x20\x49\x4f\x45\x72\x72\x6f\x72\x28\x45\x78\x63\x65\x70\x74\x69\x6f\x6e\x29\x3a\x20\x70\x61\x73\x73\x0a\x63\x6c\x61\x73\x73\x20\x4e\x6f\x74\x49\x6d\x70\x6c\x65\x6d\x65\x6e\x74\x65\x64\x45\x72\x72\x6f\x72\x28\x45\x78\x63" "\x65\x70\x74\x69\x6f\x6e\x29\x3a\x20\x70\x61\x73\x73\x0a\x63\x6c\x61\x73\x73\x20\x54\x79\x70\x65\x45\x72\x72\x6f\x72\x28\x45\x78\x63\x65\x70\x74\x69\x6f\x6e\x29\x3a\x20\x70\x61\x73\x73\x0a\x63\x6c\x61\x73\x73\x20\x49\x6e\x64\x65\x78\x45\x72\x72\x6f\x72\x28\x45\x78\x63\x65\x70\x74\x69\x6f\x6e\x29\x3a\x20\x70\x61\x73\x73\x0a\x63\x6c\x61\x73\x73\x20\x56\x61\x6c\x75\x65\x45\x72\x72\x6f\x72\x28\x45\x78\x63\x65\x70\x74\x69\x6f\x6e\x29\x3a\x20\x70\x61\x73\x73\x0a\x63\x6c\x61\x73\x73\x20\x52\x75\x6e\x74\x69\x6d\x65\x45\x72\x72\x6f\x72\x28\x45\x78\x63\x65\x70\x74\x69\x6f\x6e\x29\x3a\x20\x70\x61\x73\x73\x0a\x63\x6c\x61\x73\x73\x20\x5a\x65\x72\x6f\x44\x69\x76\x69\x73\x69\x6f\x6e\x45\x72\x72\x6f\x72\x28\x45\x78\x63\x65\x70\x74\x69\x6f\x6e\x29\x3a\x20\x70\x61\x73\x73\x0a\x63\x6c\x61\x73\x73\x20\x4e\x61\x6d\x65\x45\x72\x72\x6f\x72\x28\x45\x78\x63\x65\x70\x74\x69\x6f\x6e\x29\x3a\x20\x70\x61\x73\x73\x0a\x63\x6c\x61\x73\x73\x20\x55\x6e\x62\x6f\x75\x6e\x64\x4c\x6f\x63\x61\x6c\x45\x72\x72\x6f\x72\x28\x45\x78\x63\x65\x70\x74\x69\x6f\x6e\x29\x3a\x20\x70\x61\x73\x73\x0a\x63\x6c\x61\x73\x73\x20\x41\x74\x74\x72\x69\x62\x75\x74\x65\x45\x72\x72\x6f\x72\x28\x45\x78\x63\x65\x70\x74\x69\x6f\x6e\x29\x3a\x20\x70\x61\x73\x73\x0a\x63\x6c\x61\x73\x73\x20\x49\x6d\x70\x6f\x72\x74\x45\x72\x72\x6f\x72\x28\x45\x78\x63\x65\x70\x74\x69\x6f\x6e\x29\x3a\x20\x70\x61\x73\x73\x0a\x63\x6c\x61\x73\x73\x20\x41\x73\x73\x65\x72\x74\x69\x6f\x6e\x45\x72\x72\x6f\x72\x28\x45\x78\x63\x65\x70\x74\x69\x6f\x6e\x29\x3a\x20\x70\x61\x73\x73\x0a\x0a\x63\x6c\x61\x73\x73\x20\x4b\x65\x79\x45\x72\x72\x6f\x72\x28\x45\x78\x63\x65\x70\x74\x69\x6f\x6e\x29\x3a\x0a\x20\x20\x20\x20\x64\x65\x66\x20\x5f\x5f\x69\x6e\x69\x74\x5f\x5f\x28\x73\x65\x6c\x66\x2c\x20\x6b\x65\x79\x3d\x2e\x2e\x2e\x29\x3a\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x73\x65\x6c\x66\x2e\x6b\x65\x79\x20\x3d\x20\x6b\x65\x79\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x69\x66\x20\x6b\x65\x79\x20\x69\x73\x20\x2e\x2e\x2e\x3a\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x73\x75\x70\x65\x72\x28\x29\x2e\x5f\x5f\x69\x6e\x69\x74\x5f\x5f\x28\x29\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x65\x6c\x73\x65\x3a\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x73\x75\x70\x65\x72\x28\x29\x2e\x5f\x5f\x69\x6e\x69\x74\x5f\x5f\x28\x72\x65\x70\x72\x28\x6b\x65\x79\x29\x29\x0a\x0a\x20\x20\x20\x20\x64\x65\x66\x20\x5f\x5f\x73\x74\x72\x5f\x5f\x28\x73\x65\x6c\x66\x29\x3a\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x69\x66\x20\x73\x65\x6c\x66\x2e\x6b\x65\x79\x20\x69\x73\x20\x2e\x2e\x2e\x3a\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x72\x65\x74\x75\x72\x6e\x20\x27\x27\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x72\x65\x74\x75\x72\x6e\x20\x73\x74\x72\x28\x73\x65\x6c\x66\x2e\x6b\x65\x79\x29\x0a\x20\x20\x20\x20\x0a\x20\x20\x20\x20\x64\x65\x66\x20\x5f\x5f\x72\x65\x70\x72\x5f\x5f\x28\x73\x65\x6c\x66\x29\x3a\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x69\x66\x20\x73\x65\x6c\x66\x2e\x6b\x65\x79\x20\x69\x73\x20\x2e\x2e\x2e\x3a\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x72\x65\x74\x75\x72\x6e\x20\x27\x4b\x65\x79\x45\x72\x72\x6f\x72\x28\x29\x27\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x72\x65\x74\x75\x72\x6e\x20\x66\x27\x4b\x65\x79\x45\x72\x72\x6f\x72\x28\x7b\x73\x65\x6c\x66\x2e\x6b\x65\x79\x21\x72\x7d\x29\x27\x0a" }, - {"cmath", "\x69\x6d\x70\x6f\x72\x74\x20\x6d\x61\x74\x68\x0a\x0a\x63\x6c\x61\x73\x73\x20\x63\x6f\x6d\x70\x6c\x65\x78\x3a\x0a\x20\x20\x20\x20\x64\x65\x66\x20\x5f\x5f\x69\x6e\x69\x74\x5f\x5f\x28\x73\x65\x6c\x66\x2c\x20\x72\x65\x61\x6c\x2c\x20\x69\x6d\x61\x67\x3d\x30\x29\x3a\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x73\x65\x6c\x66\x2e\x5f\x72\x65\x61\x6c\x20\x3d\x20\x66\x6c\x6f\x61\x74\x28\x72\x65\x61\x6c\x29\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x73\x65\x6c\x66\x2e\x5f\x69\x6d\x61\x67\x20\x3d\x20\x66\x6c\x6f\x61\x74\x28\x69\x6d\x61\x67\x29\x0a\x0a\x20\x20\x20\x20\x40\x70\x72\x6f\x70\x65\x72\x74\x79\x0a\x20\x20\x20\x20\x64\x65\x66\x20\x72\x65\x61\x6c\x28\x73\x65\x6c\x66\x29\x3a\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x72\x65\x74\x75\x72\x6e\x20\x73\x65\x6c\x66\x2e\x5f\x72\x65\x61\x6c\x0a\x20\x20\x20\x20\x0a\x20\x20\x20\x20\x40\x70\x72\x6f\x70\x65\x72\x74\x79\x0a\x20\x20\x20\x20\x64\x65\x66\x20\x69\x6d\x61\x67\x28\x73\x65\x6c\x66\x29\x3a\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x72\x65\x74\x75\x72\x6e\x20\x73\x65\x6c\x66\x2e\x5f\x69\x6d\x61\x67\x0a\x20\x20\x20\x20\x0a\x20\x20\x20\x20\x64\x65\x66\x20\x63\x6f\x6e\x6a\x75\x67\x61\x74\x65\x28\x73\x65\x6c\x66\x29\x3a\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x72\x65\x74\x75\x72\x6e\x20\x63\x6f\x6d\x70\x6c\x65\x78\x28\x73\x65\x6c\x66\x2e\x72\x65\x61\x6c\x2c\x20\x2d\x73\x65\x6c\x66\x2e\x69\x6d\x61\x67\x29\x0a\x20\x20\x20\x20\x0a\x20\x20\x20\x20\x64\x65\x66\x20\x5f\x5f\x72\x65\x70\x72\x5f\x5f\x28\x73\x65\x6c\x66\x29\x3a\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x73\x20\x3d\x20\x5b\x27\x28\x27\x2c\x20\x73\x74\x72\x28\x73\x65\x6c\x66\x2e\x72\x65\x61\x6c\x29\x5d\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x69\x66\x20\x73\x65\x6c\x66\x2e\x69\x6d\x61\x67\x20\x3e\x3d\x20\x30\x3a\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x73\x2e\x61\x70\x70\x65\x6e\x64\x28\x27\x2b\x27\x29\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x73\x2e\x61\x70\x70\x65\x6e\x64\x28\x73\x74\x72\x28\x73\x65\x6c\x66\x2e\x69\x6d\x61\x67\x29\x29\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x73\x2e\x61\x70\x70\x65\x6e\x64\x28\x27\x6a\x29\x27\x29\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x72\x65\x74\x75\x72\x6e\x20\x27\x27\x2e\x6a\x6f\x69\x6e\x28\x73\x29\x0a\x20\x20\x20\x20\x0a\x20\x20\x20\x20\x64\x65\x66\x20\x5f\x5f\x65\x71\x5f\x5f\x28\x73\x65\x6c\x66\x2c\x20\x6f\x74\x68\x65\x72\x29\x3a\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x69\x66\x20\x74\x79\x70\x65\x28\x6f\x74\x68\x65\x72\x29\x20\x69\x73\x20\x63\x6f\x6d\x70\x6c\x65\x78\x3a\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x72\x65\x74\x75\x72\x6e\x20\x73\x65\x6c\x66\x2e\x72\x65\x61\x6c\x20\x3d\x3d\x20\x6f\x74\x68\x65\x72\x2e\x72\x65\x61\x6c\x20\x61\x6e\x64\x20\x73\x65\x6c\x66\x2e\x69\x6d\x61\x67\x20\x3d\x3d\x20\x6f\x74\x68\x65\x72\x2e\x69\x6d\x61\x67\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x69\x66\x20\x74\x79\x70\x65\x28\x6f\x74\x68\x65\x72\x29\x20\x69\x6e\x20\x28\x69\x6e\x74\x2c\x20\x66\x6c\x6f\x61\x74\x29\x3a\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x72\x65\x74\x75\x72\x6e\x20\x73\x65\x6c\x66\x2e\x72\x65\x61\x6c\x20\x3d\x3d\x20\x6f\x74\x68\x65\x72\x20\x61\x6e\x64\x20\x73\x65\x6c\x66\x2e\x69\x6d\x61\x67\x20\x3d\x3d\x20\x30\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x72\x65\x74\x75\x72\x6e\x20\x4e\x6f\x74\x49\x6d\x70\x6c\x65\x6d\x65\x6e\x74\x65\x64\x0a\x20\x20\x20\x20\x0a\x20\x20\x20\x20\x64\x65\x66\x20\x5f\x5f\x61\x64\x64\x5f\x5f\x28\x73\x65\x6c\x66\x2c\x20\x6f\x74\x68\x65\x72\x29\x3a\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x69\x66\x20\x74\x79\x70\x65\x28\x6f\x74\x68\x65\x72\x29\x20\x69\x73\x20\x63\x6f\x6d\x70\x6c\x65\x78\x3a\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x72\x65\x74\x75\x72\x6e\x20\x63\x6f\x6d\x70\x6c\x65\x78\x28\x73\x65\x6c\x66\x2e\x72\x65\x61\x6c\x20\x2b\x20\x6f\x74\x68\x65\x72\x2e\x72\x65\x61\x6c\x2c\x20\x73\x65\x6c\x66\x2e\x69\x6d\x61\x67\x20\x2b\x20\x6f\x74\x68\x65\x72\x2e\x69\x6d\x61\x67\x29\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x69\x66\x20\x74\x79\x70\x65\x28\x6f\x74\x68\x65\x72\x29\x20\x69\x6e\x20\x28\x69\x6e\x74\x2c\x20\x66\x6c\x6f\x61\x74\x29\x3a\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x72\x65\x74\x75\x72\x6e\x20\x63\x6f\x6d\x70\x6c\x65\x78\x28\x73\x65\x6c\x66\x2e\x72\x65\x61\x6c\x20\x2b\x20\x6f\x74\x68\x65\x72\x2c\x20\x73\x65\x6c\x66\x2e\x69\x6d\x61\x67\x29\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x72\x65\x74\x75\x72\x6e\x20\x4e\x6f\x74\x49\x6d\x70\x6c\x65\x6d\x65\x6e\x74\x65\x64\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x0a\x20\x20\x20\x20\x64\x65\x66\x20\x5f\x5f\x72\x61\x64\x64\x5f\x5f\x28\x73\x65\x6c\x66\x2c\x20\x6f\x74\x68\x65\x72\x29\x3a\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x72\x65\x74\x75\x72\x6e\x20\x73\x65\x6c\x66\x2e\x5f\x5f\x61\x64\x64\x5f\x5f\x28\x6f\x74\x68\x65\x72\x29\x0a\x20\x20\x20\x20\x0a\x20\x20\x20\x20\x64\x65\x66\x20\x5f\x5f\x73\x75\x62\x5f\x5f\x28\x73\x65\x6c\x66\x2c\x20\x6f\x74\x68\x65\x72\x29\x3a\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x69\x66\x20\x74\x79\x70\x65\x28\x6f\x74\x68\x65\x72\x29\x20\x69\x73\x20\x63\x6f\x6d\x70\x6c\x65\x78\x3a\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x72\x65\x74\x75\x72\x6e\x20\x63\x6f\x6d\x70\x6c\x65\x78\x28\x73\x65\x6c\x66\x2e\x72\x65" "\x61\x6c\x20\x2d\x20\x6f\x74\x68\x65\x72\x2e\x72\x65\x61\x6c\x2c\x20\x73\x65\x6c\x66\x2e\x69\x6d\x61\x67\x20\x2d\x20\x6f\x74\x68\x65\x72\x2e\x69\x6d\x61\x67\x29\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x69\x66\x20\x74\x79\x70\x65\x28\x6f\x74\x68\x65\x72\x29\x20\x69\x6e\x20\x28\x69\x6e\x74\x2c\x20\x66\x6c\x6f\x61\x74\x29\x3a\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x72\x65\x74\x75\x72\x6e\x20\x63\x6f\x6d\x70\x6c\x65\x78\x28\x73\x65\x6c\x66\x2e\x72\x65\x61\x6c\x20\x2d\x20\x6f\x74\x68\x65\x72\x2c\x20\x73\x65\x6c\x66\x2e\x69\x6d\x61\x67\x29\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x72\x65\x74\x75\x72\x6e\x20\x4e\x6f\x74\x49\x6d\x70\x6c\x65\x6d\x65\x6e\x74\x65\x64\x0a\x20\x20\x20\x20\x0a\x20\x20\x20\x20\x64\x65\x66\x20\x5f\x5f\x72\x73\x75\x62\x5f\x5f\x28\x73\x65\x6c\x66\x2c\x20\x6f\x74\x68\x65\x72\x29\x3a\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x69\x66\x20\x74\x79\x70\x65\x28\x6f\x74\x68\x65\x72\x29\x20\x69\x73\x20\x63\x6f\x6d\x70\x6c\x65\x78\x3a\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x72\x65\x74\x75\x72\x6e\x20\x63\x6f\x6d\x70\x6c\x65\x78\x28\x6f\x74\x68\x65\x72\x2e\x72\x65\x61\x6c\x20\x2d\x20\x73\x65\x6c\x66\x2e\x72\x65\x61\x6c\x2c\x20\x6f\x74\x68\x65\x72\x2e\x69\x6d\x61\x67\x20\x2d\x20\x73\x65\x6c\x66\x2e\x69\x6d\x61\x67\x29\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x69\x66\x20\x74\x79\x70\x65\x28\x6f\x74\x68\x65\x72\x29\x20\x69\x6e\x20\x28\x69\x6e\x74\x2c\x20\x66\x6c\x6f\x61\x74\x29\x3a\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x72\x65\x74\x75\x72\x6e\x20\x63\x6f\x6d\x70\x6c\x65\x78\x28\x6f\x74\x68\x65\x72\x20\x2d\x20\x73\x65\x6c\x66\x2e\x72\x65\x61\x6c\x2c\x20\x2d\x73\x65\x6c\x66\x2e\x69\x6d\x61\x67\x29\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x72\x65\x74\x75\x72\x6e\x20\x4e\x6f\x74\x49\x6d\x70\x6c\x65\x6d\x65\x6e\x74\x65\x64\x0a\x20\x20\x20\x20\x0a\x20\x20\x20\x20\x64\x65\x66\x20\x5f\x5f\x6d\x75\x6c\x5f\x5f\x28\x73\x65\x6c\x66\x2c\x20\x6f\x74\x68\x65\x72\x29\x3a\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x69\x66\x20\x74\x79\x70\x65\x28\x6f\x74\x68\x65\x72\x29\x20\x69\x73\x20\x63\x6f\x6d\x70\x6c\x65\x78\x3a\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x72\x65\x74\x75\x72\x6e\x20\x63\x6f\x6d\x70\x6c\x65\x78\x28\x73\x65\x6c\x66\x2e\x72\x65\x61\x6c\x20\x2a\x20\x6f\x74\x68\x65\x72\x2e\x72\x65\x61\x6c\x20\x2d\x20\x73\x65\x6c\x66\x2e\x69\x6d\x61\x67\x20\x2a\x20\x6f\x74\x68\x65\x72\x2e\x69\x6d\x61\x67\x2c\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x73\x65\x6c\x66\x2e\x72\x65\x61\x6c\x20\x2a\x20\x6f\x74\x68\x65\x72\x2e\x69\x6d\x61\x67\x20\x2b\x20\x73\x65\x6c\x66\x2e\x69\x6d\x61\x67\x20\x2a\x20\x6f\x74\x68\x65\x72\x2e\x72\x65\x61\x6c\x29\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x69\x66\x20\x74\x79\x70\x65\x28\x6f\x74\x68\x65\x72\x29\x20\x69\x6e\x20\x28\x69\x6e\x74\x2c\x20\x66\x6c\x6f\x61\x74\x29\x3a\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x72\x65\x74\x75\x72\x6e\x20\x63\x6f\x6d\x70\x6c\x65\x78\x28\x73\x65\x6c\x66\x2e\x72\x65\x61\x6c\x20\x2a\x20\x6f\x74\x68\x65\x72\x2c\x20\x73\x65\x6c\x66\x2e\x69\x6d\x61\x67\x20\x2a\x20\x6f\x74\x68\x65\x72\x29\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x72\x65\x74\x75\x72\x6e\x20\x4e\x6f\x74\x49\x6d\x70\x6c\x65\x6d\x65\x6e\x74\x65\x64\x0a\x20\x20\x20\x20\x0a\x20\x20\x20\x20\x64\x65\x66\x20\x5f\x5f\x72\x6d\x75\x6c\x5f\x5f\x28\x73\x65\x6c\x66\x2c\x20\x6f\x74\x68\x65\x72\x29\x3a\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x72\x65\x74\x75\x72\x6e\x20\x73\x65\x6c\x66\x2e\x5f\x5f\x6d\x75\x6c\x5f\x5f\x28\x6f\x74\x68\x65\x72\x29\x0a\x20\x20\x20\x20\x0a\x20\x20\x20\x20\x64\x65\x66\x20\x5f\x5f\x70\x6f\x77\x5f\x5f\x28\x73\x65\x6c\x66\x2c\x20\x6f\x74\x68\x65\x72\x3a\x20\x69\x6e\x74\x20\x7c\x20\x66\x6c\x6f\x61\x74\x29\x3a\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x69\x66\x20\x74\x79\x70\x65\x28\x6f\x74\x68\x65\x72\x29\x20\x69\x6e\x20\x28\x69\x6e\x74\x2c\x20\x66\x6c\x6f\x61\x74\x29\x3a\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x72\x65\x74\x75\x72\x6e\x20\x63\x6f\x6d\x70\x6c\x65\x78\x28\x73\x65\x6c\x66\x2e\x5f\x5f\x61\x62\x73\x5f\x5f\x28\x29\x20\x2a\x2a\x20\x6f\x74\x68\x65\x72\x20\x2a\x20\x6d\x61\x74\x68\x2e\x63\x6f\x73\x28\x6f\x74\x68\x65\x72\x20\x2a\x20\x70\x68\x61\x73\x65\x28\x73\x65\x6c\x66\x29\x29\x2c\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x73\x65\x6c\x66\x2e\x5f\x5f\x61\x62\x73\x5f\x5f\x28\x29\x20\x2a\x2a\x20\x6f\x74\x68\x65\x72\x20\x2a\x20\x6d\x61\x74\x68\x2e\x73\x69\x6e\x28\x6f\x74\x68\x65\x72\x20\x2a\x20\x70\x68\x61\x73\x65\x28\x73\x65\x6c\x66\x29\x29\x29\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x72\x65\x74\x75\x72\x6e\x20\x4e\x6f\x74\x49\x6d\x70\x6c\x65\x6d\x65\x6e\x74\x65\x64\x0a\x20\x20\x20\x20\x0a\x20\x20\x20\x20\x64\x65\x66\x20\x5f\x5f\x61\x62\x73\x5f\x5f\x28\x73\x65\x6c\x66\x29\x20\x2d\x3e\x20\x66\x6c\x6f\x61\x74\x3a\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x72\x65\x74\x75\x72\x6e\x20\x6d\x61\x74\x68\x2e\x73\x71\x72\x74\x28\x73\x65\x6c\x66\x2e\x72\x65\x61\x6c\x20\x2a\x2a\x20\x32\x20\x2b\x20\x73\x65\x6c\x66\x2e\x69\x6d\x61\x67\x20\x2a\x2a\x20\x32\x29" "\x0a\x0a\x20\x20\x20\x20\x64\x65\x66\x20\x5f\x5f\x6e\x65\x67\x5f\x5f\x28\x73\x65\x6c\x66\x29\x3a\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x72\x65\x74\x75\x72\x6e\x20\x63\x6f\x6d\x70\x6c\x65\x78\x28\x2d\x73\x65\x6c\x66\x2e\x72\x65\x61\x6c\x2c\x20\x2d\x73\x65\x6c\x66\x2e\x69\x6d\x61\x67\x29\x0a\x20\x20\x20\x20\x0a\x20\x20\x20\x20\x64\x65\x66\x20\x5f\x5f\x68\x61\x73\x68\x5f\x5f\x28\x73\x65\x6c\x66\x29\x3a\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x72\x65\x74\x75\x72\x6e\x20\x68\x61\x73\x68\x28\x28\x73\x65\x6c\x66\x2e\x72\x65\x61\x6c\x2c\x20\x73\x65\x6c\x66\x2e\x69\x6d\x61\x67\x29\x29\x0a\x0a\x0a\x23\x20\x43\x6f\x6e\x76\x65\x72\x73\x69\x6f\x6e\x73\x20\x74\x6f\x20\x61\x6e\x64\x20\x66\x72\x6f\x6d\x20\x70\x6f\x6c\x61\x72\x20\x63\x6f\x6f\x72\x64\x69\x6e\x61\x74\x65\x73\x0a\x0a\x64\x65\x66\x20\x70\x68\x61\x73\x65\x28\x7a\x3a\x20\x63\x6f\x6d\x70\x6c\x65\x78\x29\x3a\x0a\x20\x20\x20\x20\x72\x65\x74\x75\x72\x6e\x20\x6d\x61\x74\x68\x2e\x61\x74\x61\x6e\x32\x28\x7a\x2e\x69\x6d\x61\x67\x2c\x20\x7a\x2e\x72\x65\x61\x6c\x29\x0a\x0a\x64\x65\x66\x20\x70\x6f\x6c\x61\x72\x28\x7a\x3a\x20\x63\x6f\x6d\x70\x6c\x65\x78\x29\x3a\x0a\x20\x20\x20\x20\x72\x65\x74\x75\x72\x6e\x20\x7a\x2e\x5f\x5f\x61\x62\x73\x5f\x5f\x28\x29\x2c\x20\x70\x68\x61\x73\x65\x28\x7a\x29\x0a\x0a\x64\x65\x66\x20\x72\x65\x63\x74\x28\x72\x3a\x20\x66\x6c\x6f\x61\x74\x2c\x20\x70\x68\x69\x3a\x20\x66\x6c\x6f\x61\x74\x29\x3a\x0a\x20\x20\x20\x20\x72\x65\x74\x75\x72\x6e\x20\x72\x20\x2a\x20\x6d\x61\x74\x68\x2e\x63\x6f\x73\x28\x70\x68\x69\x29\x20\x2b\x20\x72\x20\x2a\x20\x6d\x61\x74\x68\x2e\x73\x69\x6e\x28\x70\x68\x69\x29\x20\x2a\x20\x31\x6a\x0a\x0a\x23\x20\x50\x6f\x77\x65\x72\x20\x61\x6e\x64\x20\x6c\x6f\x67\x61\x72\x69\x74\x68\x6d\x69\x63\x20\x66\x75\x6e\x63\x74\x69\x6f\x6e\x73\x0a\x0a\x64\x65\x66\x20\x65\x78\x70\x28\x7a\x3a\x20\x63\x6f\x6d\x70\x6c\x65\x78\x29\x3a\x0a\x20\x20\x20\x20\x72\x65\x74\x75\x72\x6e\x20\x6d\x61\x74\x68\x2e\x65\x78\x70\x28\x7a\x2e\x72\x65\x61\x6c\x29\x20\x2a\x20\x72\x65\x63\x74\x28\x31\x2c\x20\x7a\x2e\x69\x6d\x61\x67\x29\x0a\x0a\x64\x65\x66\x20\x6c\x6f\x67\x28\x7a\x3a\x20\x63\x6f\x6d\x70\x6c\x65\x78\x2c\x20\x62\x61\x73\x65\x3d\x32\x2e\x37\x31\x38\x32\x38\x31\x38\x32\x38\x34\x35\x39\x30\x34\x35\x29\x3a\x0a\x20\x20\x20\x20\x72\x65\x74\x75\x72\x6e\x20\x6d\x61\x74\x68\x2e\x6c\x6f\x67\x28\x7a\x2e\x5f\x5f\x61\x62\x73\x5f\x5f\x28\x29\x2c\x20\x62\x61\x73\x65\x29\x20\x2b\x20\x70\x68\x61\x73\x65\x28\x7a\x29\x20\x2a\x20\x31\x6a\x0a\x0a\x64\x65\x66\x20\x6c\x6f\x67\x31\x30\x28\x7a\x3a\x20\x63\x6f\x6d\x70\x6c\x65\x78\x29\x3a\x0a\x20\x20\x20\x20\x72\x65\x74\x75\x72\x6e\x20\x6c\x6f\x67\x28\x7a\x2c\x20\x31\x30\x29\x0a\x0a\x64\x65\x66\x20\x73\x71\x72\x74\x28\x7a\x3a\x20\x63\x6f\x6d\x70\x6c\x65\x78\x29\x3a\x0a\x20\x20\x20\x20\x72\x65\x74\x75\x72\x6e\x20\x7a\x20\x2a\x2a\x20\x30\x2e\x35\x0a\x0a\x23\x20\x54\x72\x69\x67\x6f\x6e\x6f\x6d\x65\x74\x72\x69\x63\x20\x66\x75\x6e\x63\x74\x69\x6f\x6e\x73\x0a\x0a\x64\x65\x66\x20\x61\x63\x6f\x73\x28\x7a\x3a\x20\x63\x6f\x6d\x70\x6c\x65\x78\x29\x3a\x0a\x20\x20\x20\x20\x72\x65\x74\x75\x72\x6e\x20\x2d\x31\x6a\x20\x2a\x20\x6c\x6f\x67\x28\x7a\x20\x2b\x20\x73\x71\x72\x74\x28\x7a\x20\x2a\x20\x7a\x20\x2d\x20\x31\x29\x29\x0a\x0a\x64\x65\x66\x20\x61\x73\x69\x6e\x28\x7a\x3a\x20\x63\x6f\x6d\x70\x6c\x65\x78\x29\x3a\x0a\x20\x20\x20\x20\x72\x65\x74\x75\x72\x6e\x20\x2d\x31\x6a\x20\x2a\x20\x6c\x6f\x67\x28\x31\x6a\x20\x2a\x20\x7a\x20\x2b\x20\x73\x71\x72\x74\x28\x31\x20\x2d\x20\x7a\x20\x2a\x20\x7a\x29\x29\x0a\x0a\x64\x65\x66\x20\x61\x74\x61\x6e\x28\x7a\x3a\x20\x63\x6f\x6d\x70\x6c\x65\x78\x29\x3a\x0a\x20\x20\x20\x20\x72\x65\x74\x75\x72\x6e\x20\x31\x6a\x20\x2f\x20\x32\x20\x2a\x20\x6c\x6f\x67\x28\x28\x31\x20\x2d\x20\x31\x6a\x20\x2a\x20\x7a\x29\x20\x2f\x20\x28\x31\x20\x2b\x20\x31\x6a\x20\x2a\x20\x7a\x29\x29\x0a\x0a\x64\x65\x66\x20\x63\x6f\x73\x28\x7a\x3a\x20\x63\x6f\x6d\x70\x6c\x65\x78\x29\x3a\x0a\x20\x20\x20\x20\x72\x65\x74\x75\x72\x6e\x20\x28\x65\x78\x70\x28\x7a\x29\x20\x2b\x20\x65\x78\x70\x28\x2d\x7a\x29\x29\x20\x2f\x20\x32\x0a\x0a\x64\x65\x66\x20\x73\x69\x6e\x28\x7a\x3a\x20\x63\x6f\x6d\x70\x6c\x65\x78\x29\x3a\x0a\x20\x20\x20\x20\x72\x65\x74\x75\x72\x6e\x20\x28\x65\x78\x70\x28\x7a\x29\x20\x2d\x20\x65\x78\x70\x28\x2d\x7a\x29\x29\x20\x2f\x20\x28\x32\x20\x2a\x20\x31\x6a\x29\x0a\x0a\x64\x65\x66\x20\x74\x61\x6e\x28\x7a\x3a\x20\x63\x6f\x6d\x70\x6c\x65\x78\x29\x3a\x0a\x20\x20\x20\x20\x72\x65\x74\x75\x72\x6e\x20\x73\x69\x6e\x28\x7a\x29\x20\x2f\x20\x63\x6f\x73\x28\x7a\x29\x0a\x0a\x23\x20\x48\x79\x70\x65\x72\x62\x6f\x6c\x69\x63\x20\x66\x75\x6e\x63\x74\x69\x6f\x6e\x73\x0a\x0a\x64\x65\x66\x20\x61\x63\x6f\x73\x68\x28\x7a\x3a\x20\x63\x6f\x6d\x70\x6c\x65\x78\x29\x3a\x0a\x20\x20\x20\x20\x72\x65\x74\x75\x72\x6e\x20\x6c\x6f\x67\x28\x7a\x20\x2b\x20\x73\x71\x72\x74\x28\x7a\x20\x2a\x20\x7a\x20\x2d\x20\x31\x29\x29\x0a\x0a\x64\x65\x66\x20\x61\x73\x69\x6e\x68\x28\x7a\x3a\x20\x63\x6f\x6d\x70\x6c\x65\x78\x29\x3a\x0a\x20\x20\x20\x20\x72\x65\x74\x75\x72\x6e\x20\x6c\x6f\x67\x28\x7a\x20\x2b\x20\x73\x71\x72\x74\x28\x7a\x20\x2a\x20\x7a\x20\x2b\x20\x31\x29\x29\x0a\x0a\x64\x65\x66\x20\x61\x74\x61\x6e\x68" "\x28\x7a\x3a\x20\x63\x6f\x6d\x70\x6c\x65\x78\x29\x3a\x0a\x20\x20\x20\x20\x72\x65\x74\x75\x72\x6e\x20\x31\x20\x2f\x20\x32\x20\x2a\x20\x6c\x6f\x67\x28\x28\x31\x20\x2b\x20\x7a\x29\x20\x2f\x20\x28\x31\x20\x2d\x20\x7a\x29\x29\x0a\x0a\x64\x65\x66\x20\x63\x6f\x73\x68\x28\x7a\x3a\x20\x63\x6f\x6d\x70\x6c\x65\x78\x29\x3a\x0a\x20\x20\x20\x20\x72\x65\x74\x75\x72\x6e\x20\x28\x65\x78\x70\x28\x7a\x29\x20\x2b\x20\x65\x78\x70\x28\x2d\x7a\x29\x29\x20\x2f\x20\x32\x0a\x0a\x64\x65\x66\x20\x73\x69\x6e\x68\x28\x7a\x3a\x20\x63\x6f\x6d\x70\x6c\x65\x78\x29\x3a\x0a\x20\x20\x20\x20\x72\x65\x74\x75\x72\x6e\x20\x28\x65\x78\x70\x28\x7a\x29\x20\x2d\x20\x65\x78\x70\x28\x2d\x7a\x29\x29\x20\x2f\x20\x32\x0a\x0a\x64\x65\x66\x20\x74\x61\x6e\x68\x28\x7a\x3a\x20\x63\x6f\x6d\x70\x6c\x65\x78\x29\x3a\x0a\x20\x20\x20\x20\x72\x65\x74\x75\x72\x6e\x20\x73\x69\x6e\x68\x28\x7a\x29\x20\x2f\x20\x63\x6f\x73\x68\x28\x7a\x29\x0a\x0a\x23\x20\x43\x6c\x61\x73\x73\x69\x66\x69\x63\x61\x74\x69\x6f\x6e\x20\x66\x75\x6e\x63\x74\x69\x6f\x6e\x73\x0a\x0a\x64\x65\x66\x20\x69\x73\x66\x69\x6e\x69\x74\x65\x28\x7a\x3a\x20\x63\x6f\x6d\x70\x6c\x65\x78\x29\x3a\x0a\x20\x20\x20\x20\x72\x65\x74\x75\x72\x6e\x20\x6d\x61\x74\x68\x2e\x69\x73\x66\x69\x6e\x69\x74\x65\x28\x7a\x2e\x72\x65\x61\x6c\x29\x20\x61\x6e\x64\x20\x6d\x61\x74\x68\x2e\x69\x73\x66\x69\x6e\x69\x74\x65\x28\x7a\x2e\x69\x6d\x61\x67\x29\x0a\x0a\x64\x65\x66\x20\x69\x73\x69\x6e\x66\x28\x7a\x3a\x20\x63\x6f\x6d\x70\x6c\x65\x78\x29\x3a\x0a\x20\x20\x20\x20\x72\x65\x74\x75\x72\x6e\x20\x6d\x61\x74\x68\x2e\x69\x73\x69\x6e\x66\x28\x7a\x2e\x72\x65\x61\x6c\x29\x20\x6f\x72\x20\x6d\x61\x74\x68\x2e\x69\x73\x69\x6e\x66\x28\x7a\x2e\x69\x6d\x61\x67\x29\x0a\x0a\x64\x65\x66\x20\x69\x73\x6e\x61\x6e\x28\x7a\x3a\x20\x63\x6f\x6d\x70\x6c\x65\x78\x29\x3a\x0a\x20\x20\x20\x20\x72\x65\x74\x75\x72\x6e\x20\x6d\x61\x74\x68\x2e\x69\x73\x6e\x61\x6e\x28\x7a\x2e\x72\x65\x61\x6c\x29\x20\x6f\x72\x20\x6d\x61\x74\x68\x2e\x69\x73\x6e\x61\x6e\x28\x7a\x2e\x69\x6d\x61\x67\x29\x0a\x0a\x64\x65\x66\x20\x69\x73\x63\x6c\x6f\x73\x65\x28\x61\x3a\x20\x63\x6f\x6d\x70\x6c\x65\x78\x2c\x20\x62\x3a\x20\x63\x6f\x6d\x70\x6c\x65\x78\x29\x3a\x0a\x20\x20\x20\x20\x72\x65\x74\x75\x72\x6e\x20\x6d\x61\x74\x68\x2e\x69\x73\x63\x6c\x6f\x73\x65\x28\x61\x2e\x72\x65\x61\x6c\x2c\x20\x62\x2e\x72\x65\x61\x6c\x29\x20\x61\x6e\x64\x20\x6d\x61\x74\x68\x2e\x69\x73\x63\x6c\x6f\x73\x65\x28\x61\x2e\x69\x6d\x61\x67\x2c\x20\x62\x2e\x69\x6d\x61\x67\x29\x0a\x0a\x23\x20\x43\x6f\x6e\x73\x74\x61\x6e\x74\x73\x0a\x0a\x70\x69\x20\x3d\x20\x6d\x61\x74\x68\x2e\x70\x69\x0a\x65\x20\x3d\x20\x6d\x61\x74\x68\x2e\x65\x0a\x74\x61\x75\x20\x3d\x20\x32\x20\x2a\x20\x70\x69\x0a\x69\x6e\x66\x20\x3d\x20\x6d\x61\x74\x68\x2e\x69\x6e\x66\x0a\x69\x6e\x66\x6a\x20\x3d\x20\x63\x6f\x6d\x70\x6c\x65\x78\x28\x30\x2c\x20\x69\x6e\x66\x29\x0a\x6e\x61\x6e\x20\x3d\x20\x6d\x61\x74\x68\x2e\x6e\x61\x6e\x0a\x6e\x61\x6e\x6a\x20\x3d\x20\x63\x6f\x6d\x70\x6c\x65\x78\x28\x30\x2c\x20\x6e\x61\x6e\x29\x0a" }, + {"cmath", "\x69\x6d\x70\x6f\x72\x74\x20\x6d\x61\x74\x68\x0a\x0a\x63\x6c\x61\x73\x73\x20\x63\x6f\x6d\x70\x6c\x65\x78\x3a\x0a\x20\x20\x20\x20\x64\x65\x66\x20\x5f\x5f\x69\x6e\x69\x74\x5f\x5f\x28\x73\x65\x6c\x66\x2c\x20\x72\x65\x61\x6c\x2c\x20\x69\x6d\x61\x67\x3d\x30\x29\x3a\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x73\x65\x6c\x66\x2e\x5f\x72\x65\x61\x6c\x20\x3d\x20\x66\x6c\x6f\x61\x74\x28\x72\x65\x61\x6c\x29\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x73\x65\x6c\x66\x2e\x5f\x69\x6d\x61\x67\x20\x3d\x20\x66\x6c\x6f\x61\x74\x28\x69\x6d\x61\x67\x29\x0a\x0a\x20\x20\x20\x20\x40\x70\x72\x6f\x70\x65\x72\x74\x79\x0a\x20\x20\x20\x20\x64\x65\x66\x20\x72\x65\x61\x6c\x28\x73\x65\x6c\x66\x29\x3a\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x72\x65\x74\x75\x72\x6e\x20\x73\x65\x6c\x66\x2e\x5f\x72\x65\x61\x6c\x0a\x20\x20\x20\x20\x0a\x20\x20\x20\x20\x40\x70\x72\x6f\x70\x65\x72\x74\x79\x0a\x20\x20\x20\x20\x64\x65\x66\x20\x69\x6d\x61\x67\x28\x73\x65\x6c\x66\x29\x3a\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x72\x65\x74\x75\x72\x6e\x20\x73\x65\x6c\x66\x2e\x5f\x69\x6d\x61\x67\x0a\x0a\x20\x20\x20\x20\x64\x65\x66\x20\x63\x6f\x6e\x6a\x75\x67\x61\x74\x65\x28\x73\x65\x6c\x66\x29\x3a\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x72\x65\x74\x75\x72\x6e\x20\x63\x6f\x6d\x70\x6c\x65\x78\x28\x73\x65\x6c\x66\x2e\x72\x65\x61\x6c\x2c\x20\x2d\x73\x65\x6c\x66\x2e\x69\x6d\x61\x67\x29\x0a\x20\x20\x20\x20\x0a\x20\x20\x20\x20\x64\x65\x66\x20\x5f\x5f\x72\x65\x70\x72\x5f\x5f\x28\x73\x65\x6c\x66\x29\x3a\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x73\x20\x3d\x20\x5b\x27\x28\x27\x2c\x20\x73\x74\x72\x28\x73\x65\x6c\x66\x2e\x72\x65\x61\x6c\x29\x5d\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x73\x2e\x61\x70\x70\x65\x6e\x64\x28\x27\x2d\x27\x20\x69\x66\x20\x73\x65\x6c\x66\x2e\x69\x6d\x61\x67\x20\x3c\x20\x30\x20\x65\x6c\x73\x65\x20\x27\x2b\x27\x29\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x73\x2e\x61\x70\x70\x65\x6e\x64\x28\x73\x74\x72\x28\x61\x62\x73\x28\x73\x65\x6c\x66\x2e\x69\x6d\x61\x67\x29\x29\x29\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x73\x2e\x61\x70\x70\x65\x6e\x64\x28\x27\x6a\x29\x27\x29\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x72\x65\x74\x75\x72\x6e\x20\x27\x27\x2e\x6a\x6f\x69\x6e\x28\x73\x29\x0a\x20\x20\x20\x20\x0a\x20\x20\x20\x20\x64\x65\x66\x20\x5f\x5f\x65\x71\x5f\x5f\x28\x73\x65\x6c\x66\x2c\x20\x6f\x74\x68\x65\x72\x29\x3a\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x69\x66\x20\x74\x79\x70\x65\x28\x6f\x74\x68\x65\x72\x29\x20\x69\x73\x20\x63\x6f\x6d\x70\x6c\x65\x78\x3a\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x72\x65\x74\x75\x72\x6e\x20\x73\x65\x6c\x66\x2e\x72\x65\x61\x6c\x20\x3d\x3d\x20\x6f\x74\x68\x65\x72\x2e\x72\x65\x61\x6c\x20\x61\x6e\x64\x20\x73\x65\x6c\x66\x2e\x69\x6d\x61\x67\x20\x3d\x3d\x20\x6f\x74\x68\x65\x72\x2e\x69\x6d\x61\x67\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x69\x66\x20\x74\x79\x70\x65\x28\x6f\x74\x68\x65\x72\x29\x20\x69\x6e\x20\x28\x69\x6e\x74\x2c\x20\x66\x6c\x6f\x61\x74\x29\x3a\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x72\x65\x74\x75\x72\x6e\x20\x73\x65\x6c\x66\x2e\x72\x65\x61\x6c\x20\x3d\x3d\x20\x6f\x74\x68\x65\x72\x20\x61\x6e\x64\x20\x73\x65\x6c\x66\x2e\x69\x6d\x61\x67\x20\x3d\x3d\x20\x30\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x72\x65\x74\x75\x72\x6e\x20\x4e\x6f\x74\x49\x6d\x70\x6c\x65\x6d\x65\x6e\x74\x65\x64\x0a\x20\x20\x20\x20\x0a\x20\x20\x20\x20\x64\x65\x66\x20\x5f\x5f\x61\x64\x64\x5f\x5f\x28\x73\x65\x6c\x66\x2c\x20\x6f\x74\x68\x65\x72\x29\x3a\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x69\x66\x20\x74\x79\x70\x65\x28\x6f\x74\x68\x65\x72\x29\x20\x69\x73\x20\x63\x6f\x6d\x70\x6c\x65\x78\x3a\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x72\x65\x74\x75\x72\x6e\x20\x63\x6f\x6d\x70\x6c\x65\x78\x28\x73\x65\x6c\x66\x2e\x72\x65\x61\x6c\x20\x2b\x20\x6f\x74\x68\x65\x72\x2e\x72\x65\x61\x6c\x2c\x20\x73\x65\x6c\x66\x2e\x69\x6d\x61\x67\x20\x2b\x20\x6f\x74\x68\x65\x72\x2e\x69\x6d\x61\x67\x29\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x69\x66\x20\x74\x79\x70\x65\x28\x6f\x74\x68\x65\x72\x29\x20\x69\x6e\x20\x28\x69\x6e\x74\x2c\x20\x66\x6c\x6f\x61\x74\x29\x3a\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x72\x65\x74\x75\x72\x6e\x20\x63\x6f\x6d\x70\x6c\x65\x78\x28\x73\x65\x6c\x66\x2e\x72\x65\x61\x6c\x20\x2b\x20\x6f\x74\x68\x65\x72\x2c\x20\x73\x65\x6c\x66\x2e\x69\x6d\x61\x67\x29\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x72\x65\x74\x75\x72\x6e\x20\x4e\x6f\x74\x49\x6d\x70\x6c\x65\x6d\x65\x6e\x74\x65\x64\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x0a\x20\x20\x20\x20\x64\x65\x66\x20\x5f\x5f\x72\x61\x64\x64\x5f\x5f\x28\x73\x65\x6c\x66\x2c\x20\x6f\x74\x68\x65\x72\x29\x3a\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x72\x65\x74\x75\x72\x6e\x20\x73\x65\x6c\x66\x2e\x5f\x5f\x61\x64\x64\x5f\x5f\x28\x6f\x74\x68\x65\x72\x29\x0a\x20\x20\x20\x20\x0a\x20\x20\x20\x20\x64\x65\x66\x20\x5f\x5f\x73\x75\x62\x5f\x5f\x28\x73\x65\x6c\x66\x2c\x20\x6f\x74\x68\x65\x72\x29\x3a\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x69\x66\x20\x74\x79\x70\x65\x28\x6f\x74\x68\x65\x72\x29\x20\x69\x73\x20\x63\x6f\x6d\x70\x6c\x65\x78\x3a\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x72\x65\x74\x75\x72\x6e\x20\x63\x6f\x6d\x70\x6c\x65\x78\x28\x73\x65\x6c\x66\x2e\x72\x65\x61\x6c\x20\x2d" "\x20\x6f\x74\x68\x65\x72\x2e\x72\x65\x61\x6c\x2c\x20\x73\x65\x6c\x66\x2e\x69\x6d\x61\x67\x20\x2d\x20\x6f\x74\x68\x65\x72\x2e\x69\x6d\x61\x67\x29\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x69\x66\x20\x74\x79\x70\x65\x28\x6f\x74\x68\x65\x72\x29\x20\x69\x6e\x20\x28\x69\x6e\x74\x2c\x20\x66\x6c\x6f\x61\x74\x29\x3a\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x72\x65\x74\x75\x72\x6e\x20\x63\x6f\x6d\x70\x6c\x65\x78\x28\x73\x65\x6c\x66\x2e\x72\x65\x61\x6c\x20\x2d\x20\x6f\x74\x68\x65\x72\x2c\x20\x73\x65\x6c\x66\x2e\x69\x6d\x61\x67\x29\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x72\x65\x74\x75\x72\x6e\x20\x4e\x6f\x74\x49\x6d\x70\x6c\x65\x6d\x65\x6e\x74\x65\x64\x0a\x20\x20\x20\x20\x0a\x20\x20\x20\x20\x64\x65\x66\x20\x5f\x5f\x72\x73\x75\x62\x5f\x5f\x28\x73\x65\x6c\x66\x2c\x20\x6f\x74\x68\x65\x72\x29\x3a\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x69\x66\x20\x74\x79\x70\x65\x28\x6f\x74\x68\x65\x72\x29\x20\x69\x73\x20\x63\x6f\x6d\x70\x6c\x65\x78\x3a\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x72\x65\x74\x75\x72\x6e\x20\x63\x6f\x6d\x70\x6c\x65\x78\x28\x6f\x74\x68\x65\x72\x2e\x72\x65\x61\x6c\x20\x2d\x20\x73\x65\x6c\x66\x2e\x72\x65\x61\x6c\x2c\x20\x6f\x74\x68\x65\x72\x2e\x69\x6d\x61\x67\x20\x2d\x20\x73\x65\x6c\x66\x2e\x69\x6d\x61\x67\x29\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x69\x66\x20\x74\x79\x70\x65\x28\x6f\x74\x68\x65\x72\x29\x20\x69\x6e\x20\x28\x69\x6e\x74\x2c\x20\x66\x6c\x6f\x61\x74\x29\x3a\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x72\x65\x74\x75\x72\x6e\x20\x63\x6f\x6d\x70\x6c\x65\x78\x28\x6f\x74\x68\x65\x72\x20\x2d\x20\x73\x65\x6c\x66\x2e\x72\x65\x61\x6c\x2c\x20\x2d\x73\x65\x6c\x66\x2e\x69\x6d\x61\x67\x29\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x72\x65\x74\x75\x72\x6e\x20\x4e\x6f\x74\x49\x6d\x70\x6c\x65\x6d\x65\x6e\x74\x65\x64\x0a\x20\x20\x20\x20\x0a\x20\x20\x20\x20\x64\x65\x66\x20\x5f\x5f\x6d\x75\x6c\x5f\x5f\x28\x73\x65\x6c\x66\x2c\x20\x6f\x74\x68\x65\x72\x29\x3a\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x69\x66\x20\x74\x79\x70\x65\x28\x6f\x74\x68\x65\x72\x29\x20\x69\x73\x20\x63\x6f\x6d\x70\x6c\x65\x78\x3a\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x72\x65\x74\x75\x72\x6e\x20\x63\x6f\x6d\x70\x6c\x65\x78\x28\x73\x65\x6c\x66\x2e\x72\x65\x61\x6c\x20\x2a\x20\x6f\x74\x68\x65\x72\x2e\x72\x65\x61\x6c\x20\x2d\x20\x73\x65\x6c\x66\x2e\x69\x6d\x61\x67\x20\x2a\x20\x6f\x74\x68\x65\x72\x2e\x69\x6d\x61\x67\x2c\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x73\x65\x6c\x66\x2e\x72\x65\x61\x6c\x20\x2a\x20\x6f\x74\x68\x65\x72\x2e\x69\x6d\x61\x67\x20\x2b\x20\x73\x65\x6c\x66\x2e\x69\x6d\x61\x67\x20\x2a\x20\x6f\x74\x68\x65\x72\x2e\x72\x65\x61\x6c\x29\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x69\x66\x20\x74\x79\x70\x65\x28\x6f\x74\x68\x65\x72\x29\x20\x69\x6e\x20\x28\x69\x6e\x74\x2c\x20\x66\x6c\x6f\x61\x74\x29\x3a\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x72\x65\x74\x75\x72\x6e\x20\x63\x6f\x6d\x70\x6c\x65\x78\x28\x73\x65\x6c\x66\x2e\x72\x65\x61\x6c\x20\x2a\x20\x6f\x74\x68\x65\x72\x2c\x20\x73\x65\x6c\x66\x2e\x69\x6d\x61\x67\x20\x2a\x20\x6f\x74\x68\x65\x72\x29\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x72\x65\x74\x75\x72\x6e\x20\x4e\x6f\x74\x49\x6d\x70\x6c\x65\x6d\x65\x6e\x74\x65\x64\x0a\x20\x20\x20\x20\x0a\x20\x20\x20\x20\x64\x65\x66\x20\x5f\x5f\x72\x6d\x75\x6c\x5f\x5f\x28\x73\x65\x6c\x66\x2c\x20\x6f\x74\x68\x65\x72\x29\x3a\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x72\x65\x74\x75\x72\x6e\x20\x73\x65\x6c\x66\x2e\x5f\x5f\x6d\x75\x6c\x5f\x5f\x28\x6f\x74\x68\x65\x72\x29\x0a\x20\x20\x20\x20\x0a\x20\x20\x20\x20\x64\x65\x66\x20\x5f\x5f\x70\x6f\x77\x5f\x5f\x28\x73\x65\x6c\x66\x2c\x20\x6f\x74\x68\x65\x72\x3a\x20\x69\x6e\x74\x20\x7c\x20\x66\x6c\x6f\x61\x74\x29\x3a\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x69\x66\x20\x74\x79\x70\x65\x28\x6f\x74\x68\x65\x72\x29\x20\x69\x6e\x20\x28\x69\x6e\x74\x2c\x20\x66\x6c\x6f\x61\x74\x29\x3a\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x72\x65\x74\x75\x72\x6e\x20\x63\x6f\x6d\x70\x6c\x65\x78\x28\x73\x65\x6c\x66\x2e\x5f\x5f\x61\x62\x73\x5f\x5f\x28\x29\x20\x2a\x2a\x20\x6f\x74\x68\x65\x72\x20\x2a\x20\x6d\x61\x74\x68\x2e\x63\x6f\x73\x28\x6f\x74\x68\x65\x72\x20\x2a\x20\x70\x68\x61\x73\x65\x28\x73\x65\x6c\x66\x29\x29\x2c\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x73\x65\x6c\x66\x2e\x5f\x5f\x61\x62\x73\x5f\x5f\x28\x29\x20\x2a\x2a\x20\x6f\x74\x68\x65\x72\x20\x2a\x20\x6d\x61\x74\x68\x2e\x73\x69\x6e\x28\x6f\x74\x68\x65\x72\x20\x2a\x20\x70\x68\x61\x73\x65\x28\x73\x65\x6c\x66\x29\x29\x29\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x72\x65\x74\x75\x72\x6e\x20\x4e\x6f\x74\x49\x6d\x70\x6c\x65\x6d\x65\x6e\x74\x65\x64\x0a\x20\x20\x20\x20\x0a\x20\x20\x20\x20\x64\x65\x66\x20\x5f\x5f\x61\x62\x73\x5f\x5f\x28\x73\x65\x6c\x66\x29\x20\x2d\x3e\x20\x66\x6c\x6f\x61\x74\x3a\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x72\x65\x74\x75\x72\x6e\x20\x6d\x61\x74\x68\x2e\x73\x71\x72\x74\x28\x73\x65\x6c\x66\x2e\x72\x65\x61\x6c\x20\x2a\x2a\x20\x32\x20\x2b\x20\x73\x65\x6c\x66\x2e\x69\x6d\x61\x67\x20\x2a\x2a\x20\x32\x29\x0a\x0a\x20\x20" "\x20\x20\x64\x65\x66\x20\x5f\x5f\x6e\x65\x67\x5f\x5f\x28\x73\x65\x6c\x66\x29\x3a\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x72\x65\x74\x75\x72\x6e\x20\x63\x6f\x6d\x70\x6c\x65\x78\x28\x2d\x73\x65\x6c\x66\x2e\x72\x65\x61\x6c\x2c\x20\x2d\x73\x65\x6c\x66\x2e\x69\x6d\x61\x67\x29\x0a\x20\x20\x20\x20\x0a\x20\x20\x20\x20\x64\x65\x66\x20\x5f\x5f\x68\x61\x73\x68\x5f\x5f\x28\x73\x65\x6c\x66\x29\x3a\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x72\x65\x74\x75\x72\x6e\x20\x68\x61\x73\x68\x28\x28\x73\x65\x6c\x66\x2e\x72\x65\x61\x6c\x2c\x20\x73\x65\x6c\x66\x2e\x69\x6d\x61\x67\x29\x29\x0a\x0a\x0a\x23\x20\x43\x6f\x6e\x76\x65\x72\x73\x69\x6f\x6e\x73\x20\x74\x6f\x20\x61\x6e\x64\x20\x66\x72\x6f\x6d\x20\x70\x6f\x6c\x61\x72\x20\x63\x6f\x6f\x72\x64\x69\x6e\x61\x74\x65\x73\x0a\x0a\x64\x65\x66\x20\x70\x68\x61\x73\x65\x28\x7a\x3a\x20\x63\x6f\x6d\x70\x6c\x65\x78\x29\x3a\x0a\x20\x20\x20\x20\x72\x65\x74\x75\x72\x6e\x20\x6d\x61\x74\x68\x2e\x61\x74\x61\x6e\x32\x28\x7a\x2e\x69\x6d\x61\x67\x2c\x20\x7a\x2e\x72\x65\x61\x6c\x29\x0a\x0a\x64\x65\x66\x20\x70\x6f\x6c\x61\x72\x28\x7a\x3a\x20\x63\x6f\x6d\x70\x6c\x65\x78\x29\x3a\x0a\x20\x20\x20\x20\x72\x65\x74\x75\x72\x6e\x20\x7a\x2e\x5f\x5f\x61\x62\x73\x5f\x5f\x28\x29\x2c\x20\x70\x68\x61\x73\x65\x28\x7a\x29\x0a\x0a\x64\x65\x66\x20\x72\x65\x63\x74\x28\x72\x3a\x20\x66\x6c\x6f\x61\x74\x2c\x20\x70\x68\x69\x3a\x20\x66\x6c\x6f\x61\x74\x29\x3a\x0a\x20\x20\x20\x20\x72\x65\x74\x75\x72\x6e\x20\x72\x20\x2a\x20\x6d\x61\x74\x68\x2e\x63\x6f\x73\x28\x70\x68\x69\x29\x20\x2b\x20\x72\x20\x2a\x20\x6d\x61\x74\x68\x2e\x73\x69\x6e\x28\x70\x68\x69\x29\x20\x2a\x20\x31\x6a\x0a\x0a\x23\x20\x50\x6f\x77\x65\x72\x20\x61\x6e\x64\x20\x6c\x6f\x67\x61\x72\x69\x74\x68\x6d\x69\x63\x20\x66\x75\x6e\x63\x74\x69\x6f\x6e\x73\x0a\x0a\x64\x65\x66\x20\x65\x78\x70\x28\x7a\x3a\x20\x63\x6f\x6d\x70\x6c\x65\x78\x29\x3a\x0a\x20\x20\x20\x20\x72\x65\x74\x75\x72\x6e\x20\x6d\x61\x74\x68\x2e\x65\x78\x70\x28\x7a\x2e\x72\x65\x61\x6c\x29\x20\x2a\x20\x72\x65\x63\x74\x28\x31\x2c\x20\x7a\x2e\x69\x6d\x61\x67\x29\x0a\x0a\x64\x65\x66\x20\x6c\x6f\x67\x28\x7a\x3a\x20\x63\x6f\x6d\x70\x6c\x65\x78\x2c\x20\x62\x61\x73\x65\x3d\x32\x2e\x37\x31\x38\x32\x38\x31\x38\x32\x38\x34\x35\x39\x30\x34\x35\x29\x3a\x0a\x20\x20\x20\x20\x72\x65\x74\x75\x72\x6e\x20\x6d\x61\x74\x68\x2e\x6c\x6f\x67\x28\x7a\x2e\x5f\x5f\x61\x62\x73\x5f\x5f\x28\x29\x2c\x20\x62\x61\x73\x65\x29\x20\x2b\x20\x70\x68\x61\x73\x65\x28\x7a\x29\x20\x2a\x20\x31\x6a\x0a\x0a\x64\x65\x66\x20\x6c\x6f\x67\x31\x30\x28\x7a\x3a\x20\x63\x6f\x6d\x70\x6c\x65\x78\x29\x3a\x0a\x20\x20\x20\x20\x72\x65\x74\x75\x72\x6e\x20\x6c\x6f\x67\x28\x7a\x2c\x20\x31\x30\x29\x0a\x0a\x64\x65\x66\x20\x73\x71\x72\x74\x28\x7a\x3a\x20\x63\x6f\x6d\x70\x6c\x65\x78\x29\x3a\x0a\x20\x20\x20\x20\x72\x65\x74\x75\x72\x6e\x20\x7a\x20\x2a\x2a\x20\x30\x2e\x35\x0a\x0a\x23\x20\x54\x72\x69\x67\x6f\x6e\x6f\x6d\x65\x74\x72\x69\x63\x20\x66\x75\x6e\x63\x74\x69\x6f\x6e\x73\x0a\x0a\x64\x65\x66\x20\x61\x63\x6f\x73\x28\x7a\x3a\x20\x63\x6f\x6d\x70\x6c\x65\x78\x29\x3a\x0a\x20\x20\x20\x20\x72\x65\x74\x75\x72\x6e\x20\x2d\x31\x6a\x20\x2a\x20\x6c\x6f\x67\x28\x7a\x20\x2b\x20\x73\x71\x72\x74\x28\x7a\x20\x2a\x20\x7a\x20\x2d\x20\x31\x29\x29\x0a\x0a\x64\x65\x66\x20\x61\x73\x69\x6e\x28\x7a\x3a\x20\x63\x6f\x6d\x70\x6c\x65\x78\x29\x3a\x0a\x20\x20\x20\x20\x72\x65\x74\x75\x72\x6e\x20\x2d\x31\x6a\x20\x2a\x20\x6c\x6f\x67\x28\x31\x6a\x20\x2a\x20\x7a\x20\x2b\x20\x73\x71\x72\x74\x28\x31\x20\x2d\x20\x7a\x20\x2a\x20\x7a\x29\x29\x0a\x0a\x64\x65\x66\x20\x61\x74\x61\x6e\x28\x7a\x3a\x20\x63\x6f\x6d\x70\x6c\x65\x78\x29\x3a\x0a\x20\x20\x20\x20\x72\x65\x74\x75\x72\x6e\x20\x31\x6a\x20\x2f\x20\x32\x20\x2a\x20\x6c\x6f\x67\x28\x28\x31\x20\x2d\x20\x31\x6a\x20\x2a\x20\x7a\x29\x20\x2f\x20\x28\x31\x20\x2b\x20\x31\x6a\x20\x2a\x20\x7a\x29\x29\x0a\x0a\x64\x65\x66\x20\x63\x6f\x73\x28\x7a\x3a\x20\x63\x6f\x6d\x70\x6c\x65\x78\x29\x3a\x0a\x20\x20\x20\x20\x72\x65\x74\x75\x72\x6e\x20\x28\x65\x78\x70\x28\x7a\x29\x20\x2b\x20\x65\x78\x70\x28\x2d\x7a\x29\x29\x20\x2f\x20\x32\x0a\x0a\x64\x65\x66\x20\x73\x69\x6e\x28\x7a\x3a\x20\x63\x6f\x6d\x70\x6c\x65\x78\x29\x3a\x0a\x20\x20\x20\x20\x72\x65\x74\x75\x72\x6e\x20\x28\x65\x78\x70\x28\x7a\x29\x20\x2d\x20\x65\x78\x70\x28\x2d\x7a\x29\x29\x20\x2f\x20\x28\x32\x20\x2a\x20\x31\x6a\x29\x0a\x0a\x64\x65\x66\x20\x74\x61\x6e\x28\x7a\x3a\x20\x63\x6f\x6d\x70\x6c\x65\x78\x29\x3a\x0a\x20\x20\x20\x20\x72\x65\x74\x75\x72\x6e\x20\x73\x69\x6e\x28\x7a\x29\x20\x2f\x20\x63\x6f\x73\x28\x7a\x29\x0a\x0a\x23\x20\x48\x79\x70\x65\x72\x62\x6f\x6c\x69\x63\x20\x66\x75\x6e\x63\x74\x69\x6f\x6e\x73\x0a\x0a\x64\x65\x66\x20\x61\x63\x6f\x73\x68\x28\x7a\x3a\x20\x63\x6f\x6d\x70\x6c\x65\x78\x29\x3a\x0a\x20\x20\x20\x20\x72\x65\x74\x75\x72\x6e\x20\x6c\x6f\x67\x28\x7a\x20\x2b\x20\x73\x71\x72\x74\x28\x7a\x20\x2a\x20\x7a\x20\x2d\x20\x31\x29\x29\x0a\x0a\x64\x65\x66\x20\x61\x73\x69\x6e\x68\x28\x7a\x3a\x20\x63\x6f\x6d\x70\x6c\x65\x78\x29\x3a\x0a\x20\x20\x20\x20\x72\x65\x74\x75\x72\x6e\x20\x6c\x6f\x67\x28\x7a\x20\x2b\x20\x73\x71\x72\x74\x28\x7a\x20\x2a\x20\x7a\x20\x2b\x20\x31\x29\x29\x0a\x0a\x64\x65\x66\x20\x61\x74\x61\x6e\x68\x28\x7a\x3a\x20" "\x63\x6f\x6d\x70\x6c\x65\x78\x29\x3a\x0a\x20\x20\x20\x20\x72\x65\x74\x75\x72\x6e\x20\x31\x20\x2f\x20\x32\x20\x2a\x20\x6c\x6f\x67\x28\x28\x31\x20\x2b\x20\x7a\x29\x20\x2f\x20\x28\x31\x20\x2d\x20\x7a\x29\x29\x0a\x0a\x64\x65\x66\x20\x63\x6f\x73\x68\x28\x7a\x3a\x20\x63\x6f\x6d\x70\x6c\x65\x78\x29\x3a\x0a\x20\x20\x20\x20\x72\x65\x74\x75\x72\x6e\x20\x28\x65\x78\x70\x28\x7a\x29\x20\x2b\x20\x65\x78\x70\x28\x2d\x7a\x29\x29\x20\x2f\x20\x32\x0a\x0a\x64\x65\x66\x20\x73\x69\x6e\x68\x28\x7a\x3a\x20\x63\x6f\x6d\x70\x6c\x65\x78\x29\x3a\x0a\x20\x20\x20\x20\x72\x65\x74\x75\x72\x6e\x20\x28\x65\x78\x70\x28\x7a\x29\x20\x2d\x20\x65\x78\x70\x28\x2d\x7a\x29\x29\x20\x2f\x20\x32\x0a\x0a\x64\x65\x66\x20\x74\x61\x6e\x68\x28\x7a\x3a\x20\x63\x6f\x6d\x70\x6c\x65\x78\x29\x3a\x0a\x20\x20\x20\x20\x72\x65\x74\x75\x72\x6e\x20\x73\x69\x6e\x68\x28\x7a\x29\x20\x2f\x20\x63\x6f\x73\x68\x28\x7a\x29\x0a\x0a\x23\x20\x43\x6c\x61\x73\x73\x69\x66\x69\x63\x61\x74\x69\x6f\x6e\x20\x66\x75\x6e\x63\x74\x69\x6f\x6e\x73\x0a\x0a\x64\x65\x66\x20\x69\x73\x66\x69\x6e\x69\x74\x65\x28\x7a\x3a\x20\x63\x6f\x6d\x70\x6c\x65\x78\x29\x3a\x0a\x20\x20\x20\x20\x72\x65\x74\x75\x72\x6e\x20\x6d\x61\x74\x68\x2e\x69\x73\x66\x69\x6e\x69\x74\x65\x28\x7a\x2e\x72\x65\x61\x6c\x29\x20\x61\x6e\x64\x20\x6d\x61\x74\x68\x2e\x69\x73\x66\x69\x6e\x69\x74\x65\x28\x7a\x2e\x69\x6d\x61\x67\x29\x0a\x0a\x64\x65\x66\x20\x69\x73\x69\x6e\x66\x28\x7a\x3a\x20\x63\x6f\x6d\x70\x6c\x65\x78\x29\x3a\x0a\x20\x20\x20\x20\x72\x65\x74\x75\x72\x6e\x20\x6d\x61\x74\x68\x2e\x69\x73\x69\x6e\x66\x28\x7a\x2e\x72\x65\x61\x6c\x29\x20\x6f\x72\x20\x6d\x61\x74\x68\x2e\x69\x73\x69\x6e\x66\x28\x7a\x2e\x69\x6d\x61\x67\x29\x0a\x0a\x64\x65\x66\x20\x69\x73\x6e\x61\x6e\x28\x7a\x3a\x20\x63\x6f\x6d\x70\x6c\x65\x78\x29\x3a\x0a\x20\x20\x20\x20\x72\x65\x74\x75\x72\x6e\x20\x6d\x61\x74\x68\x2e\x69\x73\x6e\x61\x6e\x28\x7a\x2e\x72\x65\x61\x6c\x29\x20\x6f\x72\x20\x6d\x61\x74\x68\x2e\x69\x73\x6e\x61\x6e\x28\x7a\x2e\x69\x6d\x61\x67\x29\x0a\x0a\x64\x65\x66\x20\x69\x73\x63\x6c\x6f\x73\x65\x28\x61\x3a\x20\x63\x6f\x6d\x70\x6c\x65\x78\x2c\x20\x62\x3a\x20\x63\x6f\x6d\x70\x6c\x65\x78\x29\x3a\x0a\x20\x20\x20\x20\x72\x65\x74\x75\x72\x6e\x20\x6d\x61\x74\x68\x2e\x69\x73\x63\x6c\x6f\x73\x65\x28\x61\x2e\x72\x65\x61\x6c\x2c\x20\x62\x2e\x72\x65\x61\x6c\x29\x20\x61\x6e\x64\x20\x6d\x61\x74\x68\x2e\x69\x73\x63\x6c\x6f\x73\x65\x28\x61\x2e\x69\x6d\x61\x67\x2c\x20\x62\x2e\x69\x6d\x61\x67\x29\x0a\x0a\x23\x20\x43\x6f\x6e\x73\x74\x61\x6e\x74\x73\x0a\x0a\x70\x69\x20\x3d\x20\x6d\x61\x74\x68\x2e\x70\x69\x0a\x65\x20\x3d\x20\x6d\x61\x74\x68\x2e\x65\x0a\x74\x61\x75\x20\x3d\x20\x32\x20\x2a\x20\x70\x69\x0a\x69\x6e\x66\x20\x3d\x20\x6d\x61\x74\x68\x2e\x69\x6e\x66\x0a\x69\x6e\x66\x6a\x20\x3d\x20\x63\x6f\x6d\x70\x6c\x65\x78\x28\x30\x2c\x20\x69\x6e\x66\x29\x0a\x6e\x61\x6e\x20\x3d\x20\x6d\x61\x74\x68\x2e\x6e\x61\x6e\x0a\x6e\x61\x6e\x6a\x20\x3d\x20\x63\x6f\x6d\x70\x6c\x65\x78\x28\x30\x2c\x20\x6e\x61\x6e\x29\x0a" }, {"collections", "\x64\x65\x66\x20\x43\x6f\x75\x6e\x74\x65\x72\x28\x69\x74\x65\x72\x61\x62\x6c\x65\x29\x3a\x0a\x20\x20\x20\x20\x61\x20\x3d\x20\x7b\x7d\x0a\x20\x20\x20\x20\x66\x6f\x72\x20\x78\x20\x69\x6e\x20\x69\x74\x65\x72\x61\x62\x6c\x65\x3a\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x69\x66\x20\x78\x20\x69\x6e\x20\x61\x3a\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x61\x5b\x78\x5d\x20\x2b\x3d\x20\x31\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x65\x6c\x73\x65\x3a\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x61\x5b\x78\x5d\x20\x3d\x20\x31\x0a\x20\x20\x20\x20\x72\x65\x74\x75\x72\x6e\x20\x61\x0a\x0a\x63\x6c\x61\x73\x73\x20\x64\x65\x66\x61\x75\x6c\x74\x64\x69\x63\x74\x3a\x0a\x20\x20\x20\x20\x64\x65\x66\x20\x5f\x5f\x69\x6e\x69\x74\x5f\x5f\x28\x73\x65\x6c\x66\x2c\x20\x64\x65\x66\x61\x75\x6c\x74\x5f\x66\x61\x63\x74\x6f\x72\x79\x29\x20\x2d\x3e\x20\x4e\x6f\x6e\x65\x3a\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x73\x65\x6c\x66\x2e\x64\x65\x66\x61\x75\x6c\x74\x5f\x66\x61\x63\x74\x6f\x72\x79\x20\x3d\x20\x64\x65\x66\x61\x75\x6c\x74\x5f\x66\x61\x63\x74\x6f\x72\x79\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x73\x65\x6c\x66\x2e\x5f\x61\x20\x3d\x20\x7b\x7d\x0a\x0a\x20\x20\x20\x20\x64\x65\x66\x20\x5f\x5f\x67\x65\x74\x69\x74\x65\x6d\x5f\x5f\x28\x73\x65\x6c\x66\x2c\x20\x6b\x65\x79\x29\x3a\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x69\x66\x20\x6b\x65\x79\x20\x6e\x6f\x74\x20\x69\x6e\x20\x73\x65\x6c\x66\x2e\x5f\x61\x3a\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x73\x65\x6c\x66\x2e\x5f\x61\x5b\x6b\x65\x79\x5d\x20\x3d\x20\x73\x65\x6c\x66\x2e\x64\x65\x66\x61\x75\x6c\x74\x5f\x66\x61\x63\x74\x6f\x72\x79\x28\x29\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x72\x65\x74\x75\x72\x6e\x20\x73\x65\x6c\x66\x2e\x5f\x61\x5b\x6b\x65\x79\x5d\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x0a\x20\x20\x20\x20\x64\x65\x66\x20\x5f\x5f\x73\x65\x74\x69\x74\x65\x6d\x5f\x5f\x28\x73\x65\x6c\x66\x2c\x20\x6b\x65\x79\x2c\x20\x76\x61\x6c\x75\x65\x29\x3a\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x73\x65\x6c\x66\x2e\x5f\x61\x5b\x6b\x65\x79\x5d\x20\x3d\x20\x76\x61\x6c\x75\x65\x0a\x0a\x20\x20\x20\x20\x64\x65\x66\x20\x5f\x5f\x64\x65\x6c\x69\x74\x65\x6d\x5f\x5f\x28\x73\x65\x6c\x66\x2c\x20\x6b\x65\x79\x29\x3a\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x64\x65\x6c\x20\x73\x65\x6c\x66\x2e\x5f\x61\x5b\x6b\x65\x79\x5d\x0a\x0a\x20\x20\x20\x20\x64\x65\x66\x20\x5f\x5f\x72\x65\x70\x72\x5f\x5f\x28\x73\x65\x6c\x66\x29\x20\x2d\x3e\x20\x73\x74\x72\x3a\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x72\x65\x74\x75\x72\x6e\x20\x66\x22\x64\x65\x66\x61\x75\x6c\x74\x64\x69\x63\x74\x28\x7b\x73\x65\x6c\x66\x2e\x64\x65\x66\x61\x75\x6c\x74\x5f\x66\x61\x63\x74\x6f\x72\x79\x7d\x2c\x20\x7b\x73\x65\x6c\x66\x2e\x5f\x61\x7d\x29\x22\x0a\x20\x20\x20\x20\x0a\x20\x20\x20\x20\x64\x65\x66\x20\x5f\x5f\x65\x71\x5f\x5f\x28\x73\x65\x6c\x66\x2c\x20\x5f\x5f\x6f\x3a\x20\x6f\x62\x6a\x65\x63\x74\x29\x20\x2d\x3e\x20\x62\x6f\x6f\x6c\x3a\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x69\x66\x20\x6e\x6f\x74\x20\x69\x73\x69\x6e\x73\x74\x61\x6e\x63\x65\x28\x5f\x5f\x6f\x2c\x20\x64\x65\x66\x61\x75\x6c\x74\x64\x69\x63\x74\x29\x3a\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x72\x65\x74\x75\x72\x6e\x20\x46\x61\x6c\x73\x65\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x69\x66\x20\x73\x65\x6c\x66\x2e\x64\x65\x66\x61\x75\x6c\x74\x5f\x66\x61\x63\x74\x6f\x72\x79\x20\x21\x3d\x20\x5f\x5f\x6f\x2e\x64\x65\x66\x61\x75\x6c\x74\x5f\x66\x61\x63\x74\x6f\x72\x79\x3a\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x72\x65\x74\x75\x72\x6e\x20\x46\x61\x6c\x73\x65\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x72\x65\x74\x75\x72\x6e\x20\x73\x65\x6c\x66\x2e\x5f\x61\x20\x3d\x3d\x20\x5f\x5f\x6f\x2e\x5f\x61\x0a\x20\x20\x20\x20\x0a\x20\x20\x20\x20\x64\x65\x66\x20\x5f\x5f\x69\x74\x65\x72\x5f\x5f\x28\x73\x65\x6c\x66\x29\x3a\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x72\x65\x74\x75\x72\x6e\x20\x69\x74\x65\x72\x28\x73\x65\x6c\x66\x2e\x5f\x61\x29\x0a\x0a\x20\x20\x20\x20\x64\x65\x66\x20\x5f\x5f\x63\x6f\x6e\x74\x61\x69\x6e\x73\x5f\x5f\x28\x73\x65\x6c\x66\x2c\x20\x6b\x65\x79\x29\x3a\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x72\x65\x74\x75\x72\x6e\x20\x6b\x65\x79\x20\x69\x6e\x20\x73\x65\x6c\x66\x2e\x5f\x61\x0a\x20\x20\x20\x20\x0a\x20\x20\x20\x20\x64\x65\x66\x20\x5f\x5f\x6c\x65\x6e\x5f\x5f\x28\x73\x65\x6c\x66\x29\x3a\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x72\x65\x74\x75\x72\x6e\x20\x6c\x65\x6e\x28\x73\x65\x6c\x66\x2e\x5f\x61\x29\x0a\x0a\x20\x20\x20\x20\x64\x65\x66\x20\x6b\x65\x79\x73\x28\x73\x65\x6c\x66\x29\x3a\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x72\x65\x74\x75\x72\x6e\x20\x73\x65\x6c\x66\x2e\x5f\x61\x2e\x6b\x65\x79\x73\x28\x29\x0a\x20\x20\x20\x20\x0a\x20\x20\x20\x20\x64\x65\x66\x20\x76\x61\x6c\x75\x65\x73\x28\x73\x65\x6c\x66\x29\x3a\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x72\x65\x74\x75\x72\x6e\x20\x73\x65\x6c\x66\x2e\x5f\x61\x2e\x76\x61\x6c\x75\x65\x73\x28\x29\x0a\x20\x20\x20\x20\x0a\x20\x20\x20\x20\x64\x65\x66\x20\x69\x74\x65\x6d\x73\x28\x73\x65\x6c\x66\x29\x3a\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x72\x65\x74\x75\x72\x6e\x20\x73\x65\x6c\x66\x2e\x5f\x61\x2e\x69\x74\x65\x6d\x73\x28\x29\x0a\x0a\x20\x20\x20\x20\x64\x65\x66\x20\x70\x6f\x70\x28\x73\x65\x6c" "\x66\x2c\x20\x2a\x61\x72\x67\x73\x29\x3a\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x72\x65\x74\x75\x72\x6e\x20\x73\x65\x6c\x66\x2e\x5f\x61\x2e\x70\x6f\x70\x28\x2a\x61\x72\x67\x73\x29\x0a\x0a\x20\x20\x20\x20\x64\x65\x66\x20\x63\x6c\x65\x61\x72\x28\x73\x65\x6c\x66\x29\x3a\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x73\x65\x6c\x66\x2e\x5f\x61\x2e\x63\x6c\x65\x61\x72\x28\x29\x0a\x0a\x20\x20\x20\x20\x64\x65\x66\x20\x63\x6f\x70\x79\x28\x73\x65\x6c\x66\x29\x3a\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x6e\x65\x77\x5f\x64\x64\x20\x3d\x20\x64\x65\x66\x61\x75\x6c\x74\x64\x69\x63\x74\x28\x73\x65\x6c\x66\x2e\x64\x65\x66\x61\x75\x6c\x74\x5f\x66\x61\x63\x74\x6f\x72\x79\x29\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x6e\x65\x77\x5f\x64\x64\x2e\x5f\x61\x20\x3d\x20\x73\x65\x6c\x66\x2e\x5f\x61\x2e\x63\x6f\x70\x79\x28\x29\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x72\x65\x74\x75\x72\x6e\x20\x6e\x65\x77\x5f\x64\x64\x0a\x20\x20\x20\x20\x0a\x20\x20\x20\x20\x64\x65\x66\x20\x67\x65\x74\x28\x73\x65\x6c\x66\x2c\x20\x6b\x65\x79\x2c\x20\x64\x65\x66\x61\x75\x6c\x74\x29\x3a\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x72\x65\x74\x75\x72\x6e\x20\x73\x65\x6c\x66\x2e\x5f\x61\x2e\x67\x65\x74\x28\x6b\x65\x79\x2c\x20\x64\x65\x66\x61\x75\x6c\x74\x29\x0a\x20\x20\x20\x20\x0a\x20\x20\x20\x20\x64\x65\x66\x20\x75\x70\x64\x61\x74\x65\x28\x73\x65\x6c\x66\x2c\x20\x6f\x74\x68\x65\x72\x29\x3a\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x73\x65\x6c\x66\x2e\x5f\x61\x2e\x75\x70\x64\x61\x74\x65\x28\x6f\x74\x68\x65\x72\x29\x0a" }, {"colorsys", "\x22\x22\x22\x43\x6f\x6e\x76\x65\x72\x73\x69\x6f\x6e\x20\x66\x75\x6e\x63\x74\x69\x6f\x6e\x73\x20\x62\x65\x74\x77\x65\x65\x6e\x20\x52\x47\x42\x20\x61\x6e\x64\x20\x6f\x74\x68\x65\x72\x20\x63\x6f\x6c\x6f\x72\x20\x73\x79\x73\x74\x65\x6d\x73\x2e\x0a\x0a\x54\x68\x69\x73\x20\x6d\x6f\x64\x75\x6c\x65\x73\x20\x70\x72\x6f\x76\x69\x64\x65\x73\x20\x74\x77\x6f\x20\x66\x75\x6e\x63\x74\x69\x6f\x6e\x73\x20\x66\x6f\x72\x20\x65\x61\x63\x68\x20\x63\x6f\x6c\x6f\x72\x20\x73\x79\x73\x74\x65\x6d\x20\x41\x42\x43\x3a\x0a\x0a\x20\x20\x72\x67\x62\x5f\x74\x6f\x5f\x61\x62\x63\x28\x72\x2c\x20\x67\x2c\x20\x62\x29\x20\x2d\x2d\x3e\x20\x61\x2c\x20\x62\x2c\x20\x63\x0a\x20\x20\x61\x62\x63\x5f\x74\x6f\x5f\x72\x67\x62\x28\x61\x2c\x20\x62\x2c\x20\x63\x29\x20\x2d\x2d\x3e\x20\x72\x2c\x20\x67\x2c\x20\x62\x0a\x0a\x41\x6c\x6c\x20\x69\x6e\x70\x75\x74\x73\x20\x61\x6e\x64\x20\x6f\x75\x74\x70\x75\x74\x73\x20\x61\x72\x65\x20\x74\x72\x69\x70\x6c\x65\x73\x20\x6f\x66\x20\x66\x6c\x6f\x61\x74\x73\x20\x69\x6e\x20\x74\x68\x65\x20\x72\x61\x6e\x67\x65\x20\x5b\x30\x2e\x30\x2e\x2e\x2e\x31\x2e\x30\x5d\x0a\x28\x77\x69\x74\x68\x20\x74\x68\x65\x20\x65\x78\x63\x65\x70\x74\x69\x6f\x6e\x20\x6f\x66\x20\x49\x20\x61\x6e\x64\x20\x51\x2c\x20\x77\x68\x69\x63\x68\x20\x63\x6f\x76\x65\x72\x73\x20\x61\x20\x73\x6c\x69\x67\x68\x74\x6c\x79\x20\x6c\x61\x72\x67\x65\x72\x20\x72\x61\x6e\x67\x65\x29\x2e\x0a\x49\x6e\x70\x75\x74\x73\x20\x6f\x75\x74\x73\x69\x64\x65\x20\x74\x68\x65\x20\x76\x61\x6c\x69\x64\x20\x72\x61\x6e\x67\x65\x20\x6d\x61\x79\x20\x63\x61\x75\x73\x65\x20\x65\x78\x63\x65\x70\x74\x69\x6f\x6e\x73\x20\x6f\x72\x20\x69\x6e\x76\x61\x6c\x69\x64\x20\x6f\x75\x74\x70\x75\x74\x73\x2e\x0a\x0a\x53\x75\x70\x70\x6f\x72\x74\x65\x64\x20\x63\x6f\x6c\x6f\x72\x20\x73\x79\x73\x74\x65\x6d\x73\x3a\x0a\x52\x47\x42\x3a\x20\x52\x65\x64\x2c\x20\x47\x72\x65\x65\x6e\x2c\x20\x42\x6c\x75\x65\x20\x63\x6f\x6d\x70\x6f\x6e\x65\x6e\x74\x73\x0a\x59\x49\x51\x3a\x20\x4c\x75\x6d\x69\x6e\x61\x6e\x63\x65\x2c\x20\x43\x68\x72\x6f\x6d\x69\x6e\x61\x6e\x63\x65\x20\x28\x75\x73\x65\x64\x20\x62\x79\x20\x63\x6f\x6d\x70\x6f\x73\x69\x74\x65\x20\x76\x69\x64\x65\x6f\x20\x73\x69\x67\x6e\x61\x6c\x73\x29\x0a\x48\x4c\x53\x3a\x20\x48\x75\x65\x2c\x20\x4c\x75\x6d\x69\x6e\x61\x6e\x63\x65\x2c\x20\x53\x61\x74\x75\x72\x61\x74\x69\x6f\x6e\x0a\x48\x53\x56\x3a\x20\x48\x75\x65\x2c\x20\x53\x61\x74\x75\x72\x61\x74\x69\x6f\x6e\x2c\x20\x56\x61\x6c\x75\x65\x0a\x22\x22\x22\x0a\x0a\x23\x20\x52\x65\x66\x65\x72\x65\x6e\x63\x65\x73\x3a\x0a\x23\x20\x68\x74\x74\x70\x3a\x2f\x2f\x65\x6e\x2e\x77\x69\x6b\x69\x70\x65\x64\x69\x61\x2e\x6f\x72\x67\x2f\x77\x69\x6b\x69\x2f\x59\x49\x51\x0a\x23\x20\x68\x74\x74\x70\x3a\x2f\x2f\x65\x6e\x2e\x77\x69\x6b\x69\x70\x65\x64\x69\x61\x2e\x6f\x72\x67\x2f\x77\x69\x6b\x69\x2f\x48\x4c\x53\x5f\x63\x6f\x6c\x6f\x72\x5f\x73\x70\x61\x63\x65\x0a\x23\x20\x68\x74\x74\x70\x3a\x2f\x2f\x65\x6e\x2e\x77\x69\x6b\x69\x70\x65\x64\x69\x61\x2e\x6f\x72\x67\x2f\x77\x69\x6b\x69\x2f\x48\x53\x56\x5f\x63\x6f\x6c\x6f\x72\x5f\x73\x70\x61\x63\x65\x0a\x0a\x5f\x5f\x61\x6c\x6c\x5f\x5f\x20\x3d\x20\x5b\x22\x72\x67\x62\x5f\x74\x6f\x5f\x79\x69\x71\x22\x2c\x22\x79\x69\x71\x5f\x74\x6f\x5f\x72\x67\x62\x22\x2c\x22\x72\x67\x62\x5f\x74\x6f\x5f\x68\x6c\x73\x22\x2c\x22\x68\x6c\x73\x5f\x74\x6f\x5f\x72\x67\x62\x22\x2c\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x22\x72\x67\x62\x5f\x74\x6f\x5f\x68\x73\x76\x22\x2c\x22\x68\x73\x76\x5f\x74\x6f\x5f\x72\x67\x62\x22\x5d\x0a\x0a\x23\x20\x53\x6f\x6d\x65\x20\x66\x6c\x6f\x61\x74\x69\x6e\x67\x20\x70\x6f\x69\x6e\x74\x20\x63\x6f\x6e\x73\x74\x61\x6e\x74\x73\x0a\x0a\x4f\x4e\x45\x5f\x54\x48\x49\x52\x44\x20\x3d\x20\x31\x2e\x30\x2f\x33\x2e\x30\x0a\x4f\x4e\x45\x5f\x53\x49\x58\x54\x48\x20\x3d\x20\x31\x2e\x30\x2f\x36\x2e\x30\x0a\x54\x57\x4f\x5f\x54\x48\x49\x52\x44\x20\x3d\x20\x32\x2e\x30\x2f\x33\x2e\x30\x0a\x0a\x23\x20\x59\x49\x51\x3a\x20\x75\x73\x65\x64\x20\x62\x79\x20\x63\x6f\x6d\x70\x6f\x73\x69\x74\x65\x20\x76\x69\x64\x65\x6f\x20\x73\x69\x67\x6e\x61\x6c\x73\x20\x28\x6c\x69\x6e\x65\x61\x72\x20\x63\x6f\x6d\x62\x69\x6e\x61\x74\x69\x6f\x6e\x73\x20\x6f\x66\x20\x52\x47\x42\x29\x0a\x23\x20\x59\x3a\x20\x70\x65\x72\x63\x65\x69\x76\x65\x64\x20\x67\x72\x65\x79\x20\x6c\x65\x76\x65\x6c\x20\x28\x30\x2e\x30\x20\x3d\x3d\x20\x62\x6c\x61\x63\x6b\x2c\x20\x31\x2e\x30\x20\x3d\x3d\x20\x77\x68\x69\x74\x65\x29\x0a\x23\x20\x49\x2c\x20\x51\x3a\x20\x63\x6f\x6c\x6f\x72\x20\x63\x6f\x6d\x70\x6f\x6e\x65\x6e\x74\x73\x0a\x23\x0a\x23\x20\x54\x68\x65\x72\x65\x20\x61\x72\x65\x20\x61\x20\x67\x72\x65\x61\x74\x20\x6d\x61\x6e\x79\x20\x76\x65\x72\x73\x69\x6f\x6e\x73\x20\x6f\x66\x20\x74\x68\x65\x20\x63\x6f\x6e\x73\x74\x61\x6e\x74\x73\x20\x75\x73\x65\x64\x20\x69\x6e\x20\x74\x68\x65\x73\x65\x20\x66\x6f\x72\x6d\x75\x6c\x61\x65\x2e\x0a\x23\x20\x54\x68\x65\x20\x6f\x6e\x65\x73\x20\x69\x6e\x20\x74\x68\x69\x73\x20\x6c\x69\x62\x72\x61\x72\x79\x20\x75\x73\x65\x73\x20\x63\x6f\x6e\x73\x74\x61\x6e\x74\x73\x20\x66\x72\x6f\x6d\x20\x74\x68\x65\x20\x46\x43\x43\x20\x76\x65\x72\x73\x69\x6f\x6e\x20\x6f\x66\x20\x4e\x54\x53\x43\x2e\x0a\x0a\x64\x65\x66\x20\x72\x67\x62\x5f\x74\x6f\x5f\x79\x69\x71\x28\x72\x2c" "\x20\x67\x2c\x20\x62\x29\x3a\x0a\x20\x20\x20\x20\x79\x20\x3d\x20\x30\x2e\x33\x30\x2a\x72\x20\x2b\x20\x30\x2e\x35\x39\x2a\x67\x20\x2b\x20\x30\x2e\x31\x31\x2a\x62\x0a\x20\x20\x20\x20\x69\x20\x3d\x20\x30\x2e\x37\x34\x2a\x28\x72\x2d\x79\x29\x20\x2d\x20\x30\x2e\x32\x37\x2a\x28\x62\x2d\x79\x29\x0a\x20\x20\x20\x20\x71\x20\x3d\x20\x30\x2e\x34\x38\x2a\x28\x72\x2d\x79\x29\x20\x2b\x20\x30\x2e\x34\x31\x2a\x28\x62\x2d\x79\x29\x0a\x20\x20\x20\x20\x72\x65\x74\x75\x72\x6e\x20\x28\x79\x2c\x20\x69\x2c\x20\x71\x29\x0a\x0a\x64\x65\x66\x20\x79\x69\x71\x5f\x74\x6f\x5f\x72\x67\x62\x28\x79\x2c\x20\x69\x2c\x20\x71\x29\x3a\x0a\x20\x20\x20\x20\x23\x20\x72\x20\x3d\x20\x79\x20\x2b\x20\x28\x30\x2e\x32\x37\x2a\x71\x20\x2b\x20\x30\x2e\x34\x31\x2a\x69\x29\x20\x2f\x20\x28\x30\x2e\x37\x34\x2a\x30\x2e\x34\x31\x20\x2b\x20\x30\x2e\x32\x37\x2a\x30\x2e\x34\x38\x29\x0a\x20\x20\x20\x20\x23\x20\x62\x20\x3d\x20\x79\x20\x2b\x20\x28\x30\x2e\x37\x34\x2a\x71\x20\x2d\x20\x30\x2e\x34\x38\x2a\x69\x29\x20\x2f\x20\x28\x30\x2e\x37\x34\x2a\x30\x2e\x34\x31\x20\x2b\x20\x30\x2e\x32\x37\x2a\x30\x2e\x34\x38\x29\x0a\x20\x20\x20\x20\x23\x20\x67\x20\x3d\x20\x79\x20\x2d\x20\x28\x30\x2e\x33\x30\x2a\x28\x72\x2d\x79\x29\x20\x2b\x20\x30\x2e\x31\x31\x2a\x28\x62\x2d\x79\x29\x29\x20\x2f\x20\x30\x2e\x35\x39\x0a\x0a\x20\x20\x20\x20\x72\x20\x3d\x20\x79\x20\x2b\x20\x30\x2e\x39\x34\x36\x38\x38\x32\x32\x31\x37\x30\x39\x30\x30\x36\x39\x33\x2a\x69\x20\x2b\x20\x30\x2e\x36\x32\x33\x35\x35\x36\x35\x38\x31\x39\x38\x36\x31\x34\x33\x33\x2a\x71\x0a\x20\x20\x20\x20\x67\x20\x3d\x20\x79\x20\x2d\x20\x30\x2e\x32\x37\x34\x37\x38\x37\x36\x34\x36\x32\x39\x38\x39\x37\x38\x33\x34\x2a\x69\x20\x2d\x20\x30\x2e\x36\x33\x35\x36\x39\x31\x30\x37\x39\x31\x38\x37\x33\x38\x30\x31\x2a\x71\x0a\x20\x20\x20\x20\x62\x20\x3d\x20\x79\x20\x2d\x20\x31\x2e\x31\x30\x38\x35\x34\x35\x30\x33\x34\x36\x34\x32\x30\x33\x32\x32\x2a\x69\x20\x2b\x20\x31\x2e\x37\x30\x39\x30\x30\x36\x39\x32\x38\x34\x30\x36\x34\x36\x36\x36\x2a\x71\x0a\x0a\x20\x20\x20\x20\x69\x66\x20\x72\x20\x3c\x20\x30\x2e\x30\x3a\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x72\x20\x3d\x20\x30\x2e\x30\x0a\x20\x20\x20\x20\x69\x66\x20\x67\x20\x3c\x20\x30\x2e\x30\x3a\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x67\x20\x3d\x20\x30\x2e\x30\x0a\x20\x20\x20\x20\x69\x66\x20\x62\x20\x3c\x20\x30\x2e\x30\x3a\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x62\x20\x3d\x20\x30\x2e\x30\x0a\x20\x20\x20\x20\x69\x66\x20\x72\x20\x3e\x20\x31\x2e\x30\x3a\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x72\x20\x3d\x20\x31\x2e\x30\x0a\x20\x20\x20\x20\x69\x66\x20\x67\x20\x3e\x20\x31\x2e\x30\x3a\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x67\x20\x3d\x20\x31\x2e\x30\x0a\x20\x20\x20\x20\x69\x66\x20\x62\x20\x3e\x20\x31\x2e\x30\x3a\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x62\x20\x3d\x20\x31\x2e\x30\x0a\x20\x20\x20\x20\x72\x65\x74\x75\x72\x6e\x20\x28\x72\x2c\x20\x67\x2c\x20\x62\x29\x0a\x0a\x0a\x23\x20\x48\x4c\x53\x3a\x20\x48\x75\x65\x2c\x20\x4c\x75\x6d\x69\x6e\x61\x6e\x63\x65\x2c\x20\x53\x61\x74\x75\x72\x61\x74\x69\x6f\x6e\x0a\x23\x20\x48\x3a\x20\x70\x6f\x73\x69\x74\x69\x6f\x6e\x20\x69\x6e\x20\x74\x68\x65\x20\x73\x70\x65\x63\x74\x72\x75\x6d\x0a\x23\x20\x4c\x3a\x20\x63\x6f\x6c\x6f\x72\x20\x6c\x69\x67\x68\x74\x6e\x65\x73\x73\x0a\x23\x20\x53\x3a\x20\x63\x6f\x6c\x6f\x72\x20\x73\x61\x74\x75\x72\x61\x74\x69\x6f\x6e\x0a\x0a\x64\x65\x66\x20\x72\x67\x62\x5f\x74\x6f\x5f\x68\x6c\x73\x28\x72\x2c\x20\x67\x2c\x20\x62\x29\x3a\x0a\x20\x20\x20\x20\x6d\x61\x78\x63\x20\x3d\x20\x6d\x61\x78\x28\x72\x2c\x20\x67\x2c\x20\x62\x29\x0a\x20\x20\x20\x20\x6d\x69\x6e\x63\x20\x3d\x20\x6d\x69\x6e\x28\x72\x2c\x20\x67\x2c\x20\x62\x29\x0a\x20\x20\x20\x20\x73\x75\x6d\x63\x20\x3d\x20\x28\x6d\x61\x78\x63\x2b\x6d\x69\x6e\x63\x29\x0a\x20\x20\x20\x20\x72\x61\x6e\x67\x65\x63\x20\x3d\x20\x28\x6d\x61\x78\x63\x2d\x6d\x69\x6e\x63\x29\x0a\x20\x20\x20\x20\x6c\x20\x3d\x20\x73\x75\x6d\x63\x2f\x32\x2e\x30\x0a\x20\x20\x20\x20\x69\x66\x20\x6d\x69\x6e\x63\x20\x3d\x3d\x20\x6d\x61\x78\x63\x3a\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x72\x65\x74\x75\x72\x6e\x20\x30\x2e\x30\x2c\x20\x6c\x2c\x20\x30\x2e\x30\x0a\x20\x20\x20\x20\x69\x66\x20\x6c\x20\x3c\x3d\x20\x30\x2e\x35\x3a\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x73\x20\x3d\x20\x72\x61\x6e\x67\x65\x63\x20\x2f\x20\x73\x75\x6d\x63\x0a\x20\x20\x20\x20\x65\x6c\x73\x65\x3a\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x73\x20\x3d\x20\x72\x61\x6e\x67\x65\x63\x20\x2f\x20\x28\x32\x2e\x30\x2d\x6d\x61\x78\x63\x2d\x6d\x69\x6e\x63\x29\x20\x20\x23\x20\x4e\x6f\x74\x20\x61\x6c\x77\x61\x79\x73\x20\x32\x2e\x30\x2d\x73\x75\x6d\x63\x3a\x20\x67\x68\x2d\x31\x30\x36\x34\x39\x38\x2e\x0a\x20\x20\x20\x20\x72\x63\x20\x3d\x20\x28\x6d\x61\x78\x63\x2d\x72\x29\x20\x2f\x20\x72\x61\x6e\x67\x65\x63\x0a\x20\x20\x20\x20\x67\x63\x20\x3d\x20\x28\x6d\x61\x78\x63\x2d\x67\x29\x20\x2f\x20\x72\x61\x6e\x67\x65\x63\x0a\x20\x20\x20\x20\x62\x63\x20\x3d\x20\x28\x6d\x61\x78\x63\x2d\x62\x29\x20\x2f\x20\x72\x61\x6e\x67\x65\x63\x0a\x20\x20\x20\x20\x69\x66\x20\x72\x20\x3d\x3d\x20\x6d\x61\x78\x63\x3a\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x68\x20\x3d\x20\x62\x63\x2d\x67\x63\x0a\x20\x20\x20\x20\x65\x6c\x69\x66\x20\x67\x20\x3d\x3d" "\x20\x6d\x61\x78\x63\x3a\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x68\x20\x3d\x20\x32\x2e\x30\x2b\x72\x63\x2d\x62\x63\x0a\x20\x20\x20\x20\x65\x6c\x73\x65\x3a\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x68\x20\x3d\x20\x34\x2e\x30\x2b\x67\x63\x2d\x72\x63\x0a\x20\x20\x20\x20\x23\x20\x68\x20\x3d\x20\x28\x68\x2f\x36\x2e\x30\x29\x20\x25\x20\x31\x2e\x30\x0a\x20\x20\x20\x20\x68\x20\x3d\x20\x68\x20\x2f\x20\x36\x2e\x30\x0a\x20\x20\x20\x20\x68\x20\x3d\x20\x68\x20\x2d\x20\x69\x6e\x74\x28\x68\x29\x0a\x20\x20\x20\x20\x72\x65\x74\x75\x72\x6e\x20\x68\x2c\x20\x6c\x2c\x20\x73\x0a\x0a\x64\x65\x66\x20\x68\x6c\x73\x5f\x74\x6f\x5f\x72\x67\x62\x28\x68\x2c\x20\x6c\x2c\x20\x73\x29\x3a\x0a\x20\x20\x20\x20\x69\x66\x20\x73\x20\x3d\x3d\x20\x30\x2e\x30\x3a\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x72\x65\x74\x75\x72\x6e\x20\x6c\x2c\x20\x6c\x2c\x20\x6c\x0a\x20\x20\x20\x20\x69\x66\x20\x6c\x20\x3c\x3d\x20\x30\x2e\x35\x3a\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x6d\x32\x20\x3d\x20\x6c\x20\x2a\x20\x28\x31\x2e\x30\x2b\x73\x29\x0a\x20\x20\x20\x20\x65\x6c\x73\x65\x3a\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x6d\x32\x20\x3d\x20\x6c\x2b\x73\x2d\x28\x6c\x2a\x73\x29\x0a\x20\x20\x20\x20\x6d\x31\x20\x3d\x20\x32\x2e\x30\x2a\x6c\x20\x2d\x20\x6d\x32\x0a\x20\x20\x20\x20\x72\x65\x74\x75\x72\x6e\x20\x28\x5f\x76\x28\x6d\x31\x2c\x20\x6d\x32\x2c\x20\x68\x2b\x4f\x4e\x45\x5f\x54\x48\x49\x52\x44\x29\x2c\x20\x5f\x76\x28\x6d\x31\x2c\x20\x6d\x32\x2c\x20\x68\x29\x2c\x20\x5f\x76\x28\x6d\x31\x2c\x20\x6d\x32\x2c\x20\x68\x2d\x4f\x4e\x45\x5f\x54\x48\x49\x52\x44\x29\x29\x0a\x0a\x64\x65\x66\x20\x5f\x76\x28\x6d\x31\x2c\x20\x6d\x32\x2c\x20\x68\x75\x65\x29\x3a\x0a\x20\x20\x20\x20\x23\x20\x68\x75\x65\x20\x3d\x20\x68\x75\x65\x20\x25\x20\x31\x2e\x30\x0a\x20\x20\x20\x20\x68\x75\x65\x20\x3d\x20\x68\x75\x65\x20\x2d\x20\x69\x6e\x74\x28\x68\x75\x65\x29\x0a\x20\x20\x20\x20\x69\x66\x20\x68\x75\x65\x20\x3c\x20\x4f\x4e\x45\x5f\x53\x49\x58\x54\x48\x3a\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x72\x65\x74\x75\x72\x6e\x20\x6d\x31\x20\x2b\x20\x28\x6d\x32\x2d\x6d\x31\x29\x2a\x68\x75\x65\x2a\x36\x2e\x30\x0a\x20\x20\x20\x20\x69\x66\x20\x68\x75\x65\x20\x3c\x20\x30\x2e\x35\x3a\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x72\x65\x74\x75\x72\x6e\x20\x6d\x32\x0a\x20\x20\x20\x20\x69\x66\x20\x68\x75\x65\x20\x3c\x20\x54\x57\x4f\x5f\x54\x48\x49\x52\x44\x3a\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x72\x65\x74\x75\x72\x6e\x20\x6d\x31\x20\x2b\x20\x28\x6d\x32\x2d\x6d\x31\x29\x2a\x28\x54\x57\x4f\x5f\x54\x48\x49\x52\x44\x2d\x68\x75\x65\x29\x2a\x36\x2e\x30\x0a\x20\x20\x20\x20\x72\x65\x74\x75\x72\x6e\x20\x6d\x31\x0a\x0a\x0a\x23\x20\x48\x53\x56\x3a\x20\x48\x75\x65\x2c\x20\x53\x61\x74\x75\x72\x61\x74\x69\x6f\x6e\x2c\x20\x56\x61\x6c\x75\x65\x0a\x23\x20\x48\x3a\x20\x70\x6f\x73\x69\x74\x69\x6f\x6e\x20\x69\x6e\x20\x74\x68\x65\x20\x73\x70\x65\x63\x74\x72\x75\x6d\x0a\x23\x20\x53\x3a\x20\x63\x6f\x6c\x6f\x72\x20\x73\x61\x74\x75\x72\x61\x74\x69\x6f\x6e\x20\x28\x22\x70\x75\x72\x69\x74\x79\x22\x29\x0a\x23\x20\x56\x3a\x20\x63\x6f\x6c\x6f\x72\x20\x62\x72\x69\x67\x68\x74\x6e\x65\x73\x73\x0a\x0a\x64\x65\x66\x20\x72\x67\x62\x5f\x74\x6f\x5f\x68\x73\x76\x28\x72\x2c\x20\x67\x2c\x20\x62\x29\x3a\x0a\x20\x20\x20\x20\x6d\x61\x78\x63\x20\x3d\x20\x6d\x61\x78\x28\x72\x2c\x20\x67\x2c\x20\x62\x29\x0a\x20\x20\x20\x20\x6d\x69\x6e\x63\x20\x3d\x20\x6d\x69\x6e\x28\x72\x2c\x20\x67\x2c\x20\x62\x29\x0a\x20\x20\x20\x20\x72\x61\x6e\x67\x65\x63\x20\x3d\x20\x28\x6d\x61\x78\x63\x2d\x6d\x69\x6e\x63\x29\x0a\x20\x20\x20\x20\x76\x20\x3d\x20\x6d\x61\x78\x63\x0a\x20\x20\x20\x20\x69\x66\x20\x6d\x69\x6e\x63\x20\x3d\x3d\x20\x6d\x61\x78\x63\x3a\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x72\x65\x74\x75\x72\x6e\x20\x30\x2e\x30\x2c\x20\x30\x2e\x30\x2c\x20\x76\x0a\x20\x20\x20\x20\x73\x20\x3d\x20\x72\x61\x6e\x67\x65\x63\x20\x2f\x20\x6d\x61\x78\x63\x0a\x20\x20\x20\x20\x72\x63\x20\x3d\x20\x28\x6d\x61\x78\x63\x2d\x72\x29\x20\x2f\x20\x72\x61\x6e\x67\x65\x63\x0a\x20\x20\x20\x20\x67\x63\x20\x3d\x20\x28\x6d\x61\x78\x63\x2d\x67\x29\x20\x2f\x20\x72\x61\x6e\x67\x65\x63\x0a\x20\x20\x20\x20\x62\x63\x20\x3d\x20\x28\x6d\x61\x78\x63\x2d\x62\x29\x20\x2f\x20\x72\x61\x6e\x67\x65\x63\x0a\x20\x20\x20\x20\x69\x66\x20\x72\x20\x3d\x3d\x20\x6d\x61\x78\x63\x3a\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x68\x20\x3d\x20\x62\x63\x2d\x67\x63\x0a\x20\x20\x20\x20\x65\x6c\x69\x66\x20\x67\x20\x3d\x3d\x20\x6d\x61\x78\x63\x3a\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x68\x20\x3d\x20\x32\x2e\x30\x2b\x72\x63\x2d\x62\x63\x0a\x20\x20\x20\x20\x65\x6c\x73\x65\x3a\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x68\x20\x3d\x20\x34\x2e\x30\x2b\x67\x63\x2d\x72\x63\x0a\x20\x20\x20\x20\x23\x20\x68\x20\x3d\x20\x28\x68\x2f\x36\x2e\x30\x29\x20\x25\x20\x31\x2e\x30\x0a\x20\x20\x20\x20\x68\x20\x3d\x20\x68\x20\x2f\x20\x36\x2e\x30\x0a\x20\x20\x20\x20\x68\x20\x3d\x20\x68\x20\x2d\x20\x69\x6e\x74\x28\x68\x29\x0a\x20\x20\x20\x20\x72\x65\x74\x75\x72\x6e\x20\x68\x2c\x20\x73\x2c\x20\x76\x0a\x0a\x64\x65\x66\x20\x68\x73\x76\x5f\x74\x6f\x5f\x72\x67\x62\x28\x68\x2c\x20\x73\x2c\x20\x76\x29\x3a\x0a\x20\x20\x20\x20\x69\x66\x20\x73\x20\x3d\x3d\x20\x30\x2e\x30\x3a\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x72\x65\x74" "\x75\x72\x6e\x20\x76\x2c\x20\x76\x2c\x20\x76\x0a\x20\x20\x20\x20\x69\x20\x3d\x20\x69\x6e\x74\x28\x68\x2a\x36\x2e\x30\x29\x20\x23\x20\x58\x58\x58\x20\x61\x73\x73\x75\x6d\x65\x20\x69\x6e\x74\x28\x29\x20\x74\x72\x75\x6e\x63\x61\x74\x65\x73\x21\x0a\x20\x20\x20\x20\x66\x20\x3d\x20\x28\x68\x2a\x36\x2e\x30\x29\x20\x2d\x20\x69\x0a\x20\x20\x20\x20\x70\x20\x3d\x20\x76\x2a\x28\x31\x2e\x30\x20\x2d\x20\x73\x29\x0a\x20\x20\x20\x20\x71\x20\x3d\x20\x76\x2a\x28\x31\x2e\x30\x20\x2d\x20\x73\x2a\x66\x29\x0a\x20\x20\x20\x20\x74\x20\x3d\x20\x76\x2a\x28\x31\x2e\x30\x20\x2d\x20\x73\x2a\x28\x31\x2e\x30\x2d\x66\x29\x29\x0a\x20\x20\x20\x20\x69\x20\x3d\x20\x69\x25\x36\x0a\x20\x20\x20\x20\x69\x66\x20\x69\x20\x3d\x3d\x20\x30\x3a\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x72\x65\x74\x75\x72\x6e\x20\x76\x2c\x20\x74\x2c\x20\x70\x0a\x20\x20\x20\x20\x69\x66\x20\x69\x20\x3d\x3d\x20\x31\x3a\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x72\x65\x74\x75\x72\x6e\x20\x71\x2c\x20\x76\x2c\x20\x70\x0a\x20\x20\x20\x20\x69\x66\x20\x69\x20\x3d\x3d\x20\x32\x3a\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x72\x65\x74\x75\x72\x6e\x20\x70\x2c\x20\x76\x2c\x20\x74\x0a\x20\x20\x20\x20\x69\x66\x20\x69\x20\x3d\x3d\x20\x33\x3a\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x72\x65\x74\x75\x72\x6e\x20\x70\x2c\x20\x71\x2c\x20\x76\x0a\x20\x20\x20\x20\x69\x66\x20\x69\x20\x3d\x3d\x20\x34\x3a\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x72\x65\x74\x75\x72\x6e\x20\x74\x2c\x20\x70\x2c\x20\x76\x0a\x20\x20\x20\x20\x69\x66\x20\x69\x20\x3d\x3d\x20\x35\x3a\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x72\x65\x74\x75\x72\x6e\x20\x76\x2c\x20\x70\x2c\x20\x71\x0a\x20\x20\x20\x20\x23\x20\x43\x61\x6e\x6e\x6f\x74\x20\x67\x65\x74\x20\x68\x65\x72\x65" }, {"datetime", "\x66\x72\x6f\x6d\x20\x74\x69\x6d\x65\x20\x69\x6d\x70\x6f\x72\x74\x20\x6c\x6f\x63\x61\x6c\x74\x69\x6d\x65\x0a\x0a\x63\x6c\x61\x73\x73\x20\x74\x69\x6d\x65\x64\x65\x6c\x74\x61\x3a\x0a\x20\x20\x20\x20\x64\x65\x66\x20\x5f\x5f\x69\x6e\x69\x74\x5f\x5f\x28\x73\x65\x6c\x66\x2c\x20\x64\x61\x79\x73\x3d\x30\x2c\x20\x73\x65\x63\x6f\x6e\x64\x73\x3d\x30\x29\x3a\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x73\x65\x6c\x66\x2e\x64\x61\x79\x73\x20\x3d\x20\x64\x61\x79\x73\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x73\x65\x6c\x66\x2e\x73\x65\x63\x6f\x6e\x64\x73\x20\x3d\x20\x73\x65\x63\x6f\x6e\x64\x73\x0a\x0a\x20\x20\x20\x20\x64\x65\x66\x20\x5f\x5f\x72\x65\x70\x72\x5f\x5f\x28\x73\x65\x6c\x66\x29\x3a\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x72\x65\x74\x75\x72\x6e\x20\x66\x22\x64\x61\x74\x65\x74\x69\x6d\x65\x2e\x74\x69\x6d\x65\x64\x65\x6c\x74\x61\x28\x64\x61\x79\x73\x3d\x7b\x73\x65\x6c\x66\x2e\x64\x61\x79\x73\x7d\x2c\x20\x73\x65\x63\x6f\x6e\x64\x73\x3d\x7b\x73\x65\x6c\x66\x2e\x73\x65\x63\x6f\x6e\x64\x73\x7d\x29\x22\x0a\x0a\x20\x20\x20\x20\x64\x65\x66\x20\x5f\x5f\x65\x71\x5f\x5f\x28\x73\x65\x6c\x66\x2c\x20\x6f\x74\x68\x65\x72\x3a\x20\x27\x74\x69\x6d\x65\x64\x65\x6c\x74\x61\x27\x29\x20\x2d\x3e\x20\x62\x6f\x6f\x6c\x3a\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x69\x66\x20\x74\x79\x70\x65\x28\x6f\x74\x68\x65\x72\x29\x20\x69\x73\x20\x6e\x6f\x74\x20\x74\x69\x6d\x65\x64\x65\x6c\x74\x61\x3a\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x72\x65\x74\x75\x72\x6e\x20\x4e\x6f\x74\x49\x6d\x70\x6c\x65\x6d\x65\x6e\x74\x65\x64\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x72\x65\x74\x75\x72\x6e\x20\x28\x73\x65\x6c\x66\x2e\x64\x61\x79\x73\x2c\x20\x73\x65\x6c\x66\x2e\x73\x65\x63\x6f\x6e\x64\x73\x29\x20\x3d\x3d\x20\x28\x6f\x74\x68\x65\x72\x2e\x64\x61\x79\x73\x2c\x20\x6f\x74\x68\x65\x72\x2e\x73\x65\x63\x6f\x6e\x64\x73\x29\x0a\x0a\x20\x20\x20\x20\x64\x65\x66\x20\x5f\x5f\x6c\x74\x5f\x5f\x28\x73\x65\x6c\x66\x2c\x20\x6f\x74\x68\x65\x72\x3a\x20\x27\x74\x69\x6d\x65\x64\x65\x6c\x74\x61\x27\x29\x20\x2d\x3e\x20\x62\x6f\x6f\x6c\x3a\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x69\x66\x20\x74\x79\x70\x65\x28\x6f\x74\x68\x65\x72\x29\x20\x69\x73\x20\x6e\x6f\x74\x20\x74\x69\x6d\x65\x64\x65\x6c\x74\x61\x3a\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x72\x65\x74\x75\x72\x6e\x20\x4e\x6f\x74\x49\x6d\x70\x6c\x65\x6d\x65\x6e\x74\x65\x64\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x72\x65\x74\x75\x72\x6e\x20\x28\x73\x65\x6c\x66\x2e\x64\x61\x79\x73\x2c\x20\x73\x65\x6c\x66\x2e\x73\x65\x63\x6f\x6e\x64\x73\x29\x20\x3c\x20\x28\x6f\x74\x68\x65\x72\x2e\x64\x61\x79\x73\x2c\x20\x6f\x74\x68\x65\x72\x2e\x73\x65\x63\x6f\x6e\x64\x73\x29\x0a\x0a\x20\x20\x20\x20\x64\x65\x66\x20\x5f\x5f\x6c\x65\x5f\x5f\x28\x73\x65\x6c\x66\x2c\x20\x6f\x74\x68\x65\x72\x3a\x20\x27\x74\x69\x6d\x65\x64\x65\x6c\x74\x61\x27\x29\x20\x2d\x3e\x20\x62\x6f\x6f\x6c\x3a\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x69\x66\x20\x74\x79\x70\x65\x28\x6f\x74\x68\x65\x72\x29\x20\x69\x73\x20\x6e\x6f\x74\x20\x74\x69\x6d\x65\x64\x65\x6c\x74\x61\x3a\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x72\x65\x74\x75\x72\x6e\x20\x4e\x6f\x74\x49\x6d\x70\x6c\x65\x6d\x65\x6e\x74\x65\x64\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x72\x65\x74\x75\x72\x6e\x20\x28\x73\x65\x6c\x66\x2e\x64\x61\x79\x73\x2c\x20\x73\x65\x6c\x66\x2e\x73\x65\x63\x6f\x6e\x64\x73\x29\x20\x3c\x3d\x20\x28\x6f\x74\x68\x65\x72\x2e\x64\x61\x79\x73\x2c\x20\x6f\x74\x68\x65\x72\x2e\x73\x65\x63\x6f\x6e\x64\x73\x29\x0a\x0a\x20\x20\x20\x20\x64\x65\x66\x20\x5f\x5f\x67\x74\x5f\x5f\x28\x73\x65\x6c\x66\x2c\x20\x6f\x74\x68\x65\x72\x3a\x20\x27\x74\x69\x6d\x65\x64\x65\x6c\x74\x61\x27\x29\x20\x2d\x3e\x20\x62\x6f\x6f\x6c\x3a\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x69\x66\x20\x74\x79\x70\x65\x28\x6f\x74\x68\x65\x72\x29\x20\x69\x73\x20\x6e\x6f\x74\x20\x74\x69\x6d\x65\x64\x65\x6c\x74\x61\x3a\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x72\x65\x74\x75\x72\x6e\x20\x4e\x6f\x74\x49\x6d\x70\x6c\x65\x6d\x65\x6e\x74\x65\x64\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x72\x65\x74\x75\x72\x6e\x20\x28\x73\x65\x6c\x66\x2e\x64\x61\x79\x73\x2c\x20\x73\x65\x6c\x66\x2e\x73\x65\x63\x6f\x6e\x64\x73\x29\x20\x3e\x20\x28\x6f\x74\x68\x65\x72\x2e\x64\x61\x79\x73\x2c\x20\x6f\x74\x68\x65\x72\x2e\x73\x65\x63\x6f\x6e\x64\x73\x29\x0a\x0a\x20\x20\x20\x20\x64\x65\x66\x20\x5f\x5f\x67\x65\x5f\x5f\x28\x73\x65\x6c\x66\x2c\x20\x6f\x74\x68\x65\x72\x3a\x20\x27\x74\x69\x6d\x65\x64\x65\x6c\x74\x61\x27\x29\x20\x2d\x3e\x20\x62\x6f\x6f\x6c\x3a\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x69\x66\x20\x74\x79\x70\x65\x28\x6f\x74\x68\x65\x72\x29\x20\x69\x73\x20\x6e\x6f\x74\x20\x74\x69\x6d\x65\x64\x65\x6c\x74\x61\x3a\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x72\x65\x74\x75\x72\x6e\x20\x4e\x6f\x74\x49\x6d\x70\x6c\x65\x6d\x65\x6e\x74\x65\x64\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x72\x65\x74\x75\x72\x6e\x20\x28\x73\x65\x6c\x66\x2e\x64\x61\x79\x73\x2c\x20\x73\x65\x6c\x66\x2e\x73\x65\x63\x6f\x6e\x64\x73\x29\x20\x3e\x3d\x20\x28\x6f\x74\x68\x65\x72\x2e\x64\x61\x79\x73\x2c\x20\x6f\x74\x68\x65\x72\x2e\x73\x65\x63\x6f\x6e\x64\x73\x29\x0a\x0a\x0a\x63\x6c\x61\x73\x73\x20\x64\x61\x74\x65\x3a\x0a" "\x20\x20\x20\x20\x64\x65\x66\x20\x5f\x5f\x69\x6e\x69\x74\x5f\x5f\x28\x73\x65\x6c\x66\x2c\x20\x79\x65\x61\x72\x3a\x20\x69\x6e\x74\x2c\x20\x6d\x6f\x6e\x74\x68\x3a\x20\x69\x6e\x74\x2c\x20\x64\x61\x79\x3a\x20\x69\x6e\x74\x29\x3a\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x73\x65\x6c\x66\x2e\x79\x65\x61\x72\x20\x3d\x20\x79\x65\x61\x72\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x73\x65\x6c\x66\x2e\x6d\x6f\x6e\x74\x68\x20\x3d\x20\x6d\x6f\x6e\x74\x68\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x73\x65\x6c\x66\x2e\x64\x61\x79\x20\x3d\x20\x64\x61\x79\x0a\x0a\x20\x20\x20\x20\x40\x73\x74\x61\x74\x69\x63\x6d\x65\x74\x68\x6f\x64\x0a\x20\x20\x20\x20\x64\x65\x66\x20\x74\x6f\x64\x61\x79\x28\x29\x3a\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x74\x20\x3d\x20\x6c\x6f\x63\x61\x6c\x74\x69\x6d\x65\x28\x29\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x72\x65\x74\x75\x72\x6e\x20\x64\x61\x74\x65\x28\x74\x2e\x74\x6d\x5f\x79\x65\x61\x72\x2c\x20\x74\x2e\x74\x6d\x5f\x6d\x6f\x6e\x2c\x20\x74\x2e\x74\x6d\x5f\x6d\x64\x61\x79\x29\x0a\x0a\x20\x20\x20\x20\x64\x65\x66\x20\x5f\x5f\x65\x71\x5f\x5f\x28\x73\x65\x6c\x66\x2c\x20\x6f\x74\x68\x65\x72\x3a\x20\x27\x64\x61\x74\x65\x27\x29\x20\x2d\x3e\x20\x62\x6f\x6f\x6c\x3a\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x69\x66\x20\x74\x79\x70\x65\x28\x6f\x74\x68\x65\x72\x29\x20\x69\x73\x20\x6e\x6f\x74\x20\x64\x61\x74\x65\x3a\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x72\x65\x74\x75\x72\x6e\x20\x4e\x6f\x74\x49\x6d\x70\x6c\x65\x6d\x65\x6e\x74\x65\x64\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x72\x65\x74\x75\x72\x6e\x20\x28\x73\x65\x6c\x66\x2e\x79\x65\x61\x72\x2c\x20\x73\x65\x6c\x66\x2e\x6d\x6f\x6e\x74\x68\x2c\x20\x73\x65\x6c\x66\x2e\x64\x61\x79\x29\x20\x3d\x3d\x20\x28\x6f\x74\x68\x65\x72\x2e\x79\x65\x61\x72\x2c\x20\x6f\x74\x68\x65\x72\x2e\x6d\x6f\x6e\x74\x68\x2c\x20\x6f\x74\x68\x65\x72\x2e\x64\x61\x79\x29\x0a\x0a\x20\x20\x20\x20\x64\x65\x66\x20\x5f\x5f\x6c\x74\x5f\x5f\x28\x73\x65\x6c\x66\x2c\x20\x6f\x74\x68\x65\x72\x3a\x20\x27\x64\x61\x74\x65\x27\x29\x20\x2d\x3e\x20\x62\x6f\x6f\x6c\x3a\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x69\x66\x20\x74\x79\x70\x65\x28\x6f\x74\x68\x65\x72\x29\x20\x69\x73\x20\x6e\x6f\x74\x20\x64\x61\x74\x65\x3a\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x72\x65\x74\x75\x72\x6e\x20\x4e\x6f\x74\x49\x6d\x70\x6c\x65\x6d\x65\x6e\x74\x65\x64\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x72\x65\x74\x75\x72\x6e\x20\x28\x73\x65\x6c\x66\x2e\x79\x65\x61\x72\x2c\x20\x73\x65\x6c\x66\x2e\x6d\x6f\x6e\x74\x68\x2c\x20\x73\x65\x6c\x66\x2e\x64\x61\x79\x29\x20\x3c\x20\x28\x6f\x74\x68\x65\x72\x2e\x79\x65\x61\x72\x2c\x20\x6f\x74\x68\x65\x72\x2e\x6d\x6f\x6e\x74\x68\x2c\x20\x6f\x74\x68\x65\x72\x2e\x64\x61\x79\x29\x0a\x0a\x20\x20\x20\x20\x64\x65\x66\x20\x5f\x5f\x6c\x65\x5f\x5f\x28\x73\x65\x6c\x66\x2c\x20\x6f\x74\x68\x65\x72\x3a\x20\x27\x64\x61\x74\x65\x27\x29\x20\x2d\x3e\x20\x62\x6f\x6f\x6c\x3a\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x69\x66\x20\x74\x79\x70\x65\x28\x6f\x74\x68\x65\x72\x29\x20\x69\x73\x20\x6e\x6f\x74\x20\x64\x61\x74\x65\x3a\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x72\x65\x74\x75\x72\x6e\x20\x4e\x6f\x74\x49\x6d\x70\x6c\x65\x6d\x65\x6e\x74\x65\x64\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x72\x65\x74\x75\x72\x6e\x20\x28\x73\x65\x6c\x66\x2e\x79\x65\x61\x72\x2c\x20\x73\x65\x6c\x66\x2e\x6d\x6f\x6e\x74\x68\x2c\x20\x73\x65\x6c\x66\x2e\x64\x61\x79\x29\x20\x3c\x3d\x20\x28\x6f\x74\x68\x65\x72\x2e\x79\x65\x61\x72\x2c\x20\x6f\x74\x68\x65\x72\x2e\x6d\x6f\x6e\x74\x68\x2c\x20\x6f\x74\x68\x65\x72\x2e\x64\x61\x79\x29\x0a\x0a\x20\x20\x20\x20\x64\x65\x66\x20\x5f\x5f\x67\x74\x5f\x5f\x28\x73\x65\x6c\x66\x2c\x20\x6f\x74\x68\x65\x72\x3a\x20\x27\x64\x61\x74\x65\x27\x29\x20\x2d\x3e\x20\x62\x6f\x6f\x6c\x3a\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x69\x66\x20\x74\x79\x70\x65\x28\x6f\x74\x68\x65\x72\x29\x20\x69\x73\x20\x6e\x6f\x74\x20\x64\x61\x74\x65\x3a\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x72\x65\x74\x75\x72\x6e\x20\x4e\x6f\x74\x49\x6d\x70\x6c\x65\x6d\x65\x6e\x74\x65\x64\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x72\x65\x74\x75\x72\x6e\x20\x28\x73\x65\x6c\x66\x2e\x79\x65\x61\x72\x2c\x20\x73\x65\x6c\x66\x2e\x6d\x6f\x6e\x74\x68\x2c\x20\x73\x65\x6c\x66\x2e\x64\x61\x79\x29\x20\x3e\x20\x28\x6f\x74\x68\x65\x72\x2e\x79\x65\x61\x72\x2c\x20\x6f\x74\x68\x65\x72\x2e\x6d\x6f\x6e\x74\x68\x2c\x20\x6f\x74\x68\x65\x72\x2e\x64\x61\x79\x29\x0a\x0a\x20\x20\x20\x20\x64\x65\x66\x20\x5f\x5f\x67\x65\x5f\x5f\x28\x73\x65\x6c\x66\x2c\x20\x6f\x74\x68\x65\x72\x3a\x20\x27\x64\x61\x74\x65\x27\x29\x20\x2d\x3e\x20\x62\x6f\x6f\x6c\x3a\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x69\x66\x20\x74\x79\x70\x65\x28\x6f\x74\x68\x65\x72\x29\x20\x69\x73\x20\x6e\x6f\x74\x20\x64\x61\x74\x65\x3a\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x72\x65\x74\x75\x72\x6e\x20\x4e\x6f\x74\x49\x6d\x70\x6c\x65\x6d\x65\x6e\x74\x65\x64\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x72\x65\x74\x75\x72\x6e\x20\x28\x73\x65\x6c\x66\x2e\x79\x65\x61\x72\x2c\x20\x73\x65\x6c\x66\x2e\x6d\x6f\x6e\x74\x68\x2c\x20\x73\x65\x6c\x66\x2e\x64\x61\x79\x29\x20\x3e\x3d\x20\x28\x6f\x74\x68\x65\x72\x2e\x79\x65\x61\x72\x2c\x20\x6f\x74\x68\x65\x72\x2e\x6d" "\x6f\x6e\x74\x68\x2c\x20\x6f\x74\x68\x65\x72\x2e\x64\x61\x79\x29\x0a\x0a\x20\x20\x20\x20\x64\x65\x66\x20\x5f\x5f\x73\x74\x72\x5f\x5f\x28\x73\x65\x6c\x66\x29\x3a\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x72\x65\x74\x75\x72\x6e\x20\x66\x22\x7b\x73\x65\x6c\x66\x2e\x79\x65\x61\x72\x7d\x2d\x7b\x73\x65\x6c\x66\x2e\x6d\x6f\x6e\x74\x68\x3a\x30\x32\x7d\x2d\x7b\x73\x65\x6c\x66\x2e\x64\x61\x79\x3a\x30\x32\x7d\x22\x0a\x0a\x20\x20\x20\x20\x64\x65\x66\x20\x5f\x5f\x72\x65\x70\x72\x5f\x5f\x28\x73\x65\x6c\x66\x29\x3a\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x72\x65\x74\x75\x72\x6e\x20\x66\x22\x64\x61\x74\x65\x74\x69\x6d\x65\x2e\x64\x61\x74\x65\x28\x7b\x73\x65\x6c\x66\x2e\x79\x65\x61\x72\x7d\x2c\x20\x7b\x73\x65\x6c\x66\x2e\x6d\x6f\x6e\x74\x68\x7d\x2c\x20\x7b\x73\x65\x6c\x66\x2e\x64\x61\x79\x7d\x29\x22\x0a\x0a\x0a\x63\x6c\x61\x73\x73\x20\x64\x61\x74\x65\x74\x69\x6d\x65\x28\x64\x61\x74\x65\x29\x3a\x0a\x20\x20\x20\x20\x64\x65\x66\x20\x5f\x5f\x69\x6e\x69\x74\x5f\x5f\x28\x73\x65\x6c\x66\x2c\x20\x79\x65\x61\x72\x3a\x20\x69\x6e\x74\x2c\x20\x6d\x6f\x6e\x74\x68\x3a\x20\x69\x6e\x74\x2c\x20\x64\x61\x79\x3a\x20\x69\x6e\x74\x2c\x20\x68\x6f\x75\x72\x3a\x20\x69\x6e\x74\x2c\x20\x6d\x69\x6e\x75\x74\x65\x3a\x20\x69\x6e\x74\x2c\x20\x73\x65\x63\x6f\x6e\x64\x3a\x20\x69\x6e\x74\x29\x3a\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x73\x75\x70\x65\x72\x28\x29\x2e\x5f\x5f\x69\x6e\x69\x74\x5f\x5f\x28\x79\x65\x61\x72\x2c\x20\x6d\x6f\x6e\x74\x68\x2c\x20\x64\x61\x79\x29\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x23\x20\x56\x61\x6c\x69\x64\x61\x74\x65\x20\x61\x6e\x64\x20\x73\x65\x74\x20\x68\x6f\x75\x72\x2c\x20\x6d\x69\x6e\x75\x74\x65\x2c\x20\x61\x6e\x64\x20\x73\x65\x63\x6f\x6e\x64\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x69\x66\x20\x6e\x6f\x74\x20\x30\x20\x3c\x3d\x20\x68\x6f\x75\x72\x20\x3c\x3d\x20\x32\x33\x3a\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x72\x61\x69\x73\x65\x20\x56\x61\x6c\x75\x65\x45\x72\x72\x6f\x72\x28\x22\x48\x6f\x75\x72\x20\x6d\x75\x73\x74\x20\x62\x65\x20\x62\x65\x74\x77\x65\x65\x6e\x20\x30\x20\x61\x6e\x64\x20\x32\x33\x22\x29\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x73\x65\x6c\x66\x2e\x68\x6f\x75\x72\x20\x3d\x20\x68\x6f\x75\x72\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x69\x66\x20\x6e\x6f\x74\x20\x30\x20\x3c\x3d\x20\x6d\x69\x6e\x75\x74\x65\x20\x3c\x3d\x20\x35\x39\x3a\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x72\x61\x69\x73\x65\x20\x56\x61\x6c\x75\x65\x45\x72\x72\x6f\x72\x28\x22\x4d\x69\x6e\x75\x74\x65\x20\x6d\x75\x73\x74\x20\x62\x65\x20\x62\x65\x74\x77\x65\x65\x6e\x20\x30\x20\x61\x6e\x64\x20\x35\x39\x22\x29\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x73\x65\x6c\x66\x2e\x6d\x69\x6e\x75\x74\x65\x20\x3d\x20\x6d\x69\x6e\x75\x74\x65\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x69\x66\x20\x6e\x6f\x74\x20\x30\x20\x3c\x3d\x20\x73\x65\x63\x6f\x6e\x64\x20\x3c\x3d\x20\x35\x39\x3a\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x72\x61\x69\x73\x65\x20\x56\x61\x6c\x75\x65\x45\x72\x72\x6f\x72\x28\x22\x53\x65\x63\x6f\x6e\x64\x20\x6d\x75\x73\x74\x20\x62\x65\x20\x62\x65\x74\x77\x65\x65\x6e\x20\x30\x20\x61\x6e\x64\x20\x35\x39\x22\x29\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x73\x65\x6c\x66\x2e\x73\x65\x63\x6f\x6e\x64\x20\x3d\x20\x73\x65\x63\x6f\x6e\x64\x0a\x0a\x20\x20\x20\x20\x64\x65\x66\x20\x64\x61\x74\x65\x28\x73\x65\x6c\x66\x29\x20\x2d\x3e\x20\x64\x61\x74\x65\x3a\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x72\x65\x74\x75\x72\x6e\x20\x64\x61\x74\x65\x28\x73\x65\x6c\x66\x2e\x79\x65\x61\x72\x2c\x20\x73\x65\x6c\x66\x2e\x6d\x6f\x6e\x74\x68\x2c\x20\x73\x65\x6c\x66\x2e\x64\x61\x79\x29\x0a\x0a\x20\x20\x20\x20\x40\x73\x74\x61\x74\x69\x63\x6d\x65\x74\x68\x6f\x64\x0a\x20\x20\x20\x20\x64\x65\x66\x20\x6e\x6f\x77\x28\x29\x3a\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x74\x20\x3d\x20\x6c\x6f\x63\x61\x6c\x74\x69\x6d\x65\x28\x29\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x74\x6d\x5f\x73\x65\x63\x20\x3d\x20\x74\x2e\x74\x6d\x5f\x73\x65\x63\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x69\x66\x20\x74\x6d\x5f\x73\x65\x63\x20\x3d\x3d\x20\x36\x30\x3a\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x74\x6d\x5f\x73\x65\x63\x20\x3d\x20\x35\x39\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x72\x65\x74\x75\x72\x6e\x20\x64\x61\x74\x65\x74\x69\x6d\x65\x28\x74\x2e\x74\x6d\x5f\x79\x65\x61\x72\x2c\x20\x74\x2e\x74\x6d\x5f\x6d\x6f\x6e\x2c\x20\x74\x2e\x74\x6d\x5f\x6d\x64\x61\x79\x2c\x20\x74\x2e\x74\x6d\x5f\x68\x6f\x75\x72\x2c\x20\x74\x2e\x74\x6d\x5f\x6d\x69\x6e\x2c\x20\x74\x6d\x5f\x73\x65\x63\x29\x0a\x0a\x20\x20\x20\x20\x64\x65\x66\x20\x5f\x5f\x73\x74\x72\x5f\x5f\x28\x73\x65\x6c\x66\x29\x3a\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x72\x65\x74\x75\x72\x6e\x20\x66\x22\x7b\x73\x65\x6c\x66\x2e\x79\x65\x61\x72\x7d\x2d\x7b\x73\x65\x6c\x66\x2e\x6d\x6f\x6e\x74\x68\x3a\x30\x32\x7d\x2d\x7b\x73\x65\x6c\x66\x2e\x64\x61\x79\x3a\x30\x32\x7d\x20\x7b\x73\x65\x6c\x66\x2e\x68\x6f\x75\x72\x3a\x30\x32\x7d\x3a\x7b\x73\x65\x6c\x66\x2e\x6d\x69\x6e\x75\x74\x65\x3a\x30\x32\x7d\x3a\x7b\x73\x65\x6c\x66\x2e\x73\x65\x63\x6f\x6e\x64\x3a\x30\x32\x7d\x22\x0a\x0a\x20\x20\x20\x20\x64\x65\x66\x20\x5f\x5f\x72\x65\x70\x72\x5f\x5f\x28\x73\x65\x6c\x66\x29\x3a\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x72" "\x65\x74\x75\x72\x6e\x20\x66\x22\x64\x61\x74\x65\x74\x69\x6d\x65\x2e\x64\x61\x74\x65\x74\x69\x6d\x65\x28\x7b\x73\x65\x6c\x66\x2e\x79\x65\x61\x72\x7d\x2c\x20\x7b\x73\x65\x6c\x66\x2e\x6d\x6f\x6e\x74\x68\x7d\x2c\x20\x7b\x73\x65\x6c\x66\x2e\x64\x61\x79\x7d\x2c\x20\x7b\x73\x65\x6c\x66\x2e\x68\x6f\x75\x72\x7d\x2c\x20\x7b\x73\x65\x6c\x66\x2e\x6d\x69\x6e\x75\x74\x65\x7d\x2c\x20\x7b\x73\x65\x6c\x66\x2e\x73\x65\x63\x6f\x6e\x64\x7d\x29\x22\x0a\x0a\x20\x20\x20\x20\x64\x65\x66\x20\x5f\x5f\x65\x71\x5f\x5f\x28\x73\x65\x6c\x66\x2c\x20\x6f\x74\x68\x65\x72\x29\x20\x2d\x3e\x20\x62\x6f\x6f\x6c\x3a\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x69\x66\x20\x74\x79\x70\x65\x28\x6f\x74\x68\x65\x72\x29\x20\x69\x73\x20\x6e\x6f\x74\x20\x64\x61\x74\x65\x74\x69\x6d\x65\x3a\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x72\x65\x74\x75\x72\x6e\x20\x4e\x6f\x74\x49\x6d\x70\x6c\x65\x6d\x65\x6e\x74\x65\x64\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x72\x65\x74\x75\x72\x6e\x20\x28\x73\x65\x6c\x66\x2e\x79\x65\x61\x72\x2c\x20\x73\x65\x6c\x66\x2e\x6d\x6f\x6e\x74\x68\x2c\x20\x73\x65\x6c\x66\x2e\x64\x61\x79\x2c\x20\x73\x65\x6c\x66\x2e\x68\x6f\x75\x72\x2c\x20\x73\x65\x6c\x66\x2e\x6d\x69\x6e\x75\x74\x65\x2c\x20\x73\x65\x6c\x66\x2e\x73\x65\x63\x6f\x6e\x64\x29\x20\x3d\x3d\x5c\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x28\x6f\x74\x68\x65\x72\x2e\x79\x65\x61\x72\x2c\x20\x6f\x74\x68\x65\x72\x2e\x6d\x6f\x6e\x74\x68\x2c\x20\x6f\x74\x68\x65\x72\x2e\x64\x61\x79\x2c\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x6f\x74\x68\x65\x72\x2e\x68\x6f\x75\x72\x2c\x20\x6f\x74\x68\x65\x72\x2e\x6d\x69\x6e\x75\x74\x65\x2c\x20\x6f\x74\x68\x65\x72\x2e\x73\x65\x63\x6f\x6e\x64\x29\x0a\x0a\x20\x20\x20\x20\x64\x65\x66\x20\x5f\x5f\x6c\x74\x5f\x5f\x28\x73\x65\x6c\x66\x2c\x20\x6f\x74\x68\x65\x72\x29\x20\x2d\x3e\x20\x62\x6f\x6f\x6c\x3a\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x69\x66\x20\x74\x79\x70\x65\x28\x6f\x74\x68\x65\x72\x29\x20\x69\x73\x20\x6e\x6f\x74\x20\x64\x61\x74\x65\x74\x69\x6d\x65\x3a\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x72\x65\x74\x75\x72\x6e\x20\x4e\x6f\x74\x49\x6d\x70\x6c\x65\x6d\x65\x6e\x74\x65\x64\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x72\x65\x74\x75\x72\x6e\x20\x28\x73\x65\x6c\x66\x2e\x79\x65\x61\x72\x2c\x20\x73\x65\x6c\x66\x2e\x6d\x6f\x6e\x74\x68\x2c\x20\x73\x65\x6c\x66\x2e\x64\x61\x79\x2c\x20\x73\x65\x6c\x66\x2e\x68\x6f\x75\x72\x2c\x20\x73\x65\x6c\x66\x2e\x6d\x69\x6e\x75\x74\x65\x2c\x20\x73\x65\x6c\x66\x2e\x73\x65\x63\x6f\x6e\x64\x29\x20\x3c\x5c\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x28\x6f\x74\x68\x65\x72\x2e\x79\x65\x61\x72\x2c\x20\x6f\x74\x68\x65\x72\x2e\x6d\x6f\x6e\x74\x68\x2c\x20\x6f\x74\x68\x65\x72\x2e\x64\x61\x79\x2c\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x6f\x74\x68\x65\x72\x2e\x68\x6f\x75\x72\x2c\x20\x6f\x74\x68\x65\x72\x2e\x6d\x69\x6e\x75\x74\x65\x2c\x20\x6f\x74\x68\x65\x72\x2e\x73\x65\x63\x6f\x6e\x64\x29\x0a\x0a\x20\x20\x20\x20\x64\x65\x66\x20\x5f\x5f\x6c\x65\x5f\x5f\x28\x73\x65\x6c\x66\x2c\x20\x6f\x74\x68\x65\x72\x29\x20\x2d\x3e\x20\x62\x6f\x6f\x6c\x3a\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x69\x66\x20\x74\x79\x70\x65\x28\x6f\x74\x68\x65\x72\x29\x20\x69\x73\x20\x6e\x6f\x74\x20\x64\x61\x74\x65\x74\x69\x6d\x65\x3a\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x72\x65\x74\x75\x72\x6e\x20\x4e\x6f\x74\x49\x6d\x70\x6c\x65\x6d\x65\x6e\x74\x65\x64\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x72\x65\x74\x75\x72\x6e\x20\x28\x73\x65\x6c\x66\x2e\x79\x65\x61\x72\x2c\x20\x73\x65\x6c\x66\x2e\x6d\x6f\x6e\x74\x68\x2c\x20\x73\x65\x6c\x66\x2e\x64\x61\x79\x2c\x20\x73\x65\x6c\x66\x2e\x68\x6f\x75\x72\x2c\x20\x73\x65\x6c\x66\x2e\x6d\x69\x6e\x75\x74\x65\x2c\x20\x73\x65\x6c\x66\x2e\x73\x65\x63\x6f\x6e\x64\x29\x20\x3c\x3d\x5c\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x28\x6f\x74\x68\x65\x72\x2e\x79\x65\x61\x72\x2c\x20\x6f\x74\x68\x65\x72\x2e\x6d\x6f\x6e\x74\x68\x2c\x20\x6f\x74\x68\x65\x72\x2e\x64\x61\x79\x2c\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x6f\x74\x68\x65\x72\x2e\x68\x6f\x75\x72\x2c\x20\x6f\x74\x68\x65\x72\x2e\x6d\x69\x6e\x75\x74\x65\x2c\x20\x6f\x74\x68\x65\x72\x2e\x73\x65\x63\x6f\x6e\x64\x29\x0a\x0a\x20\x20\x20\x20\x64\x65\x66\x20\x5f\x5f\x67\x74\x5f\x5f\x28\x73\x65\x6c\x66\x2c\x20\x6f\x74\x68\x65\x72\x29\x20\x2d\x3e\x20\x62\x6f\x6f\x6c\x3a\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x69\x66\x20\x74\x79\x70\x65\x28\x6f\x74\x68\x65\x72\x29\x20\x69\x73\x20\x6e\x6f\x74\x20\x64\x61\x74\x65\x74\x69\x6d\x65\x3a\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x72\x65\x74\x75\x72\x6e\x20\x4e\x6f\x74\x49\x6d\x70\x6c\x65\x6d\x65\x6e\x74\x65\x64\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x72\x65\x74\x75\x72\x6e\x20\x28\x73\x65\x6c\x66\x2e\x79\x65\x61\x72\x2c\x20\x73\x65\x6c\x66\x2e\x6d\x6f\x6e\x74\x68\x2c\x20\x73\x65\x6c\x66\x2e\x64\x61\x79\x2c\x20\x73\x65\x6c\x66\x2e\x68\x6f\x75\x72\x2c\x20\x73\x65\x6c\x66\x2e\x6d\x69\x6e\x75\x74\x65\x2c\x20\x73\x65\x6c\x66\x2e\x73\x65\x63\x6f\x6e\x64\x29\x20\x3e\x5c\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x28\x6f\x74\x68\x65\x72\x2e\x79\x65\x61\x72\x2c\x20\x6f\x74\x68\x65" "\x72\x2e\x6d\x6f\x6e\x74\x68\x2c\x20\x6f\x74\x68\x65\x72\x2e\x64\x61\x79\x2c\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x6f\x74\x68\x65\x72\x2e\x68\x6f\x75\x72\x2c\x20\x6f\x74\x68\x65\x72\x2e\x6d\x69\x6e\x75\x74\x65\x2c\x20\x6f\x74\x68\x65\x72\x2e\x73\x65\x63\x6f\x6e\x64\x29\x0a\x0a\x20\x20\x20\x20\x64\x65\x66\x20\x5f\x5f\x67\x65\x5f\x5f\x28\x73\x65\x6c\x66\x2c\x20\x6f\x74\x68\x65\x72\x29\x20\x2d\x3e\x20\x62\x6f\x6f\x6c\x3a\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x69\x66\x20\x74\x79\x70\x65\x28\x6f\x74\x68\x65\x72\x29\x20\x69\x73\x20\x6e\x6f\x74\x20\x64\x61\x74\x65\x74\x69\x6d\x65\x3a\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x72\x65\x74\x75\x72\x6e\x20\x4e\x6f\x74\x49\x6d\x70\x6c\x65\x6d\x65\x6e\x74\x65\x64\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x72\x65\x74\x75\x72\x6e\x20\x28\x73\x65\x6c\x66\x2e\x79\x65\x61\x72\x2c\x20\x73\x65\x6c\x66\x2e\x6d\x6f\x6e\x74\x68\x2c\x20\x73\x65\x6c\x66\x2e\x64\x61\x79\x2c\x20\x73\x65\x6c\x66\x2e\x68\x6f\x75\x72\x2c\x20\x73\x65\x6c\x66\x2e\x6d\x69\x6e\x75\x74\x65\x2c\x20\x73\x65\x6c\x66\x2e\x73\x65\x63\x6f\x6e\x64\x29\x20\x3e\x3d\x5c\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x28\x6f\x74\x68\x65\x72\x2e\x79\x65\x61\x72\x2c\x20\x6f\x74\x68\x65\x72\x2e\x6d\x6f\x6e\x74\x68\x2c\x20\x6f\x74\x68\x65\x72\x2e\x64\x61\x79\x2c\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x6f\x74\x68\x65\x72\x2e\x68\x6f\x75\x72\x2c\x20\x6f\x74\x68\x65\x72\x2e\x6d\x69\x6e\x75\x74\x65\x2c\x20\x6f\x74\x68\x65\x72\x2e\x73\x65\x63\x6f\x6e\x64\x29\x0a\x0a\x20\x20\x20\x20\x64\x65\x66\x20\x74\x69\x6d\x65\x73\x74\x61\x6d\x70\x28\x73\x65\x6c\x66\x29\x20\x2d\x3e\x20\x66\x6c\x6f\x61\x74\x3a\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x72\x61\x69\x73\x65\x20\x4e\x6f\x74\x49\x6d\x70\x6c\x65\x6d\x65\x6e\x74\x65\x64\x45\x72\x72\x6f\x72\x0a\x0a" }, diff --git a/python/cmath.py b/python/cmath.py index 6845d94a..68e3c1e9 100644 --- a/python/cmath.py +++ b/python/cmath.py @@ -12,15 +12,14 @@ class complex: @property def imag(self): return self._imag - + def conjugate(self): return complex(self.real, -self.imag) def __repr__(self): s = ['(', str(self.real)] - if self.imag >= 0: - s.append('+') - s.append(str(self.imag)) + s.append('-' if self.imag < 0 else '+') + s.append(str(abs(self.imag))) s.append('j)') return ''.join(s) diff --git a/src/str.cpp b/src/str.cpp index 5d42cbf0..f4d379f9 100644 --- a/src/str.cpp +++ b/src/str.cpp @@ -505,8 +505,11 @@ int utf8len(unsigned char c, bool suppress){ } SStream& SStream::operator<<(f64 val){ - if(std::isinf(val) || std::isnan(val)){ - return (*this) << std::to_string(val); + if(std::isinf(val)){ + return (*this) << (val > 0 ? "inf" : "-inf"); + } + if(std::isnan(val)){ + return (*this) << "nan"; } char b[32]; if(_precision == -1){ diff --git a/tests/10_cmath.py b/tests/10_cmath.py index f7ba9af8..513002b8 100644 --- a/tests/10_cmath.py +++ b/tests/10_cmath.py @@ -1,4 +1,5 @@ -from cmath import isclose, sqrt +from cmath import isclose, sqrt, nan, inf, nanj, infj +import math assert 1+2j == complex(1, 2) == 2j+1 @@ -25,3 +26,13 @@ assert repr(1+2j) == '(1.0+2.0j)' assert repr(1+0j) == '(1.0+0.0j)' assert repr(-1-3j) == '(-1.0-3.0j)' assert repr(1-3j) == '(1.0-3.0j)' + + +assert repr(math.nan) == repr(nan) == 'nan' +assert repr(-math.nan) == repr(-nan) == 'nan' +assert repr(math.inf) == repr(inf) == 'inf' +assert repr(-math.inf) == repr(-inf) == '-inf' +assert repr(nanj) == '(0.0+nanj)', nanj +assert repr(-nanj) == '(0.0+nanj)', -nanj +assert repr(infj) == '(0.0+infj)', infj +assert repr(-infj) == '(0.0-infj)', -infj